]> code.delx.au - gnu-emacs-elpa/commitdiff
Merge remote-tracking branch 'js2-mode/master'
authorDmitry Gutov <dgutov@yandex.ru>
Wed, 6 Nov 2013 17:53:12 +0000 (19:53 +0200)
committerDmitry Gutov <dgutov@yandex.ru>
Wed, 6 Nov 2013 17:53:12 +0000 (19:53 +0200)
878 files changed:
.bzrignore [new symlink]
.gitignore
COPYING [new file with mode: 0644]
GNUmakefile [new file with mode: 0644]
README [new file with mode: 0644]
admin/archive-contents.el [new file with mode: 0644]
admin/forward-diffs.py [new file with mode: 0755]
admin/org-synch.el [new file with mode: 0644]
admin/org-synch.sh [new file with mode: 0755]
admin/overmaint.txt [new file with mode: 0644]
admin/update-archive.sh [new file with mode: 0755]
copyright_exceptions [new file with mode: 0644]
externals-list [new file with mode: 0644]
html/index.html [new file with mode: 0644]
html/layout.css [new file with mode: 0644]
packages/README [new file with mode: 0644]
packages/ack/README.rst [new file with mode: 0644]
packages/ack/ack.el [new file with mode: 0644]
packages/ack/pcmpl-ack.el [new file with mode: 0644]
packages/adaptive-wrap/adaptive-wrap.el [new file with mode: 0644]
packages/adjust-parens/Makefile [new file with mode: 0644]
packages/adjust-parens/adjust-parens-tests.el [new file with mode: 0644]
packages/adjust-parens/adjust-parens.el [new file with mode: 0644]
packages/all/all.el [new file with mode: 0644]
packages/cl-lib/cl-lib.el [new file with mode: 0644]
packages/coffee-mode/README.md [new file with mode: 0644]
packages/coffee-mode/coffee-mode.el [new file with mode: 0644]
packages/coffee-mode/examples/basic.coffee [new file with mode: 0644]
packages/coffee-mode/examples/edge.coffee [new file with mode: 0644]
packages/coffee-mode/examples/imenu.coffee [new file with mode: 0644]
packages/company/.dir-locals.el [new file with mode: 0644]
packages/company/.gitignore [new file with mode: 0644]
packages/company/.travis.yml [new file with mode: 0644]
packages/company/Makefile [new file with mode: 0644]
packages/company/NEWS.md [new file with mode: 0644]
packages/company/README.md [new file with mode: 0644]
packages/company/company-abbrev.el [new file with mode: 0644]
packages/company/company-capf.el [new file with mode: 0644]
packages/company/company-clang.el [new file with mode: 0644]
packages/company/company-cmake.el [new file with mode: 0644]
packages/company/company-css.el [new file with mode: 0644]
packages/company/company-dabbrev-code.el [new file with mode: 0644]
packages/company/company-dabbrev.el [new file with mode: 0644]
packages/company/company-eclim.el [new file with mode: 0644]
packages/company/company-elisp.el [new file with mode: 0644]
packages/company/company-etags.el [new file with mode: 0644]
packages/company/company-files.el [new file with mode: 0644]
packages/company/company-gtags.el [new file with mode: 0644]
packages/company/company-ispell.el [new file with mode: 0644]
packages/company/company-keywords.el [new file with mode: 0644]
packages/company/company-nxml.el [new file with mode: 0644]
packages/company/company-oddmuse.el [new file with mode: 0644]
packages/company/company-pysmell.el [new file with mode: 0644]
packages/company/company-ropemacs.el [new file with mode: 0644]
packages/company/company-semantic.el [new file with mode: 0644]
packages/company/company-template.el [new file with mode: 0644]
packages/company/company-tempo.el [new file with mode: 0644]
packages/company/company-tests.el [new file with mode: 0644]
packages/company/company-xcode.el [new file with mode: 0644]
packages/company/company.el [new file with mode: 0644]
packages/csv-mode/csv-mode.el [new file with mode: 0644]
packages/debbugs/Debbugs.wsdl [new file with mode: 0644]
packages/debbugs/README [new file with mode: 0644]
packages/debbugs/debbugs-gnu.el [new file with mode: 0644]
packages/debbugs/debbugs-org.el [new file with mode: 0644]
packages/debbugs/debbugs.el [new file with mode: 0644]
packages/debbugs/debbugs.texi [new file with mode: 0644]
packages/dict-tree/dict-tree.el [new file with mode: 0644]
packages/djvu/djvu.el [new file with mode: 0644]
packages/docbook/docbook.el [new file with mode: 0644]
packages/ediprolog/ediprolog.el [new file with mode: 0644]
packages/eldoc-eval/README.md [new file with mode: 0644]
packages/eldoc-eval/eldoc-eval.el [new file with mode: 0644]
packages/elpa.rss [new file with mode: 0644]
packages/enwc/COPYING [new file with mode: 0644]
packages/enwc/Makefile [new file with mode: 0644]
packages/enwc/doc/connman.txt [new file with mode: 0644]
packages/enwc/doc/enwc.texi [new file with mode: 0644]
packages/enwc/doc/fdl.texi [new file with mode: 0644]
packages/enwc/doc/nm-dbus.txt [new file with mode: 0644]
packages/enwc/doc/settings.txt [new file with mode: 0644]
packages/enwc/doc/version.texi [new file with mode: 0644]
packages/enwc/enwc-cm.el [new file with mode: 0644]
packages/enwc/enwc-nm.el [new file with mode: 0644]
packages/enwc/enwc-setup.el [new file with mode: 0644]
packages/enwc/enwc-wicd.el [new file with mode: 0644]
packages/enwc/enwc.el [new file with mode: 0644]
packages/epoch-view/epoch-view.el [new file with mode: 0644]
packages/f90-interface-browser/README.org [new file with mode: 0644]
packages/f90-interface-browser/f90-interface-browser.el [new file with mode: 0644]
packages/f90-interface-browser/f90-tests.el [new file with mode: 0644]
packages/ggtags/Makefile [new file with mode: 0644]
packages/ggtags/README.rst [new file with mode: 0644]
packages/ggtags/ggtags.el [new file with mode: 0644]
packages/heap/heap.el [new file with mode: 0644]
packages/ioccur/ioccur.el [new file with mode: 0644]
packages/jgraph-mode/jgraph-mode.el [new file with mode: 0644]
packages/js2-mode/.dir-locals.el [moved from .dir-locals.el with 100% similarity]
packages/js2-mode/.gitignore [new file with mode: 0644]
packages/js2-mode/.travis.yml [moved from .travis.yml with 100% similarity]
packages/js2-mode/Makefile [moved from Makefile with 100% similarity]
packages/js2-mode/README.md [moved from README.md with 100% similarity]
packages/js2-mode/js2-imenu-extras.el [moved from js2-imenu-extras.el with 100% similarity]
packages/js2-mode/js2-mode.el [moved from js2-mode.el with 100% similarity]
packages/js2-mode/tests/externs.el [moved from tests/externs.el with 100% similarity]
packages/js2-mode/tests/indent.el [moved from tests/indent.el with 100% similarity]
packages/js2-mode/tests/parser.el [moved from tests/parser.el with 100% similarity]
packages/jumpc/jumpc.el [new file with mode: 0644]
packages/lex/lex-parse-re.el [new file with mode: 0644]
packages/lex/lex.el [new file with mode: 0644]
packages/lmc/lmc.el [new file with mode: 0644]
packages/load-dir/load-dir.el [new file with mode: 0644]
packages/markchars/markchars.el [new file with mode: 0644]
packages/memory-usage/memory-usage.el [new file with mode: 0644]
packages/minimap/minimap.el [new file with mode: 0644]
packages/muse/README [new file with mode: 0644]
packages/muse/cgi.el [new file with mode: 0644]
packages/muse/dir [new file with mode: 0644]
packages/muse/htmlize-hack.el [new file with mode: 0644]
packages/muse/httpd.el [new file with mode: 0644]
packages/muse/muse-backlink.el [new file with mode: 0644]
packages/muse/muse-blosxom.el [new file with mode: 0644]
packages/muse/muse-book.el [new file with mode: 0644]
packages/muse/muse-colors.el [new file with mode: 0644]
packages/muse/muse-context.el [new file with mode: 0644]
packages/muse/muse-docbook.el [new file with mode: 0644]
packages/muse/muse-groff.el [new file with mode: 0644]
packages/muse/muse-html.el [new file with mode: 0644]
packages/muse/muse-http.el [new file with mode: 0644]
packages/muse/muse-ikiwiki.el [new file with mode: 0644]
packages/muse/muse-import-docbook.el [new file with mode: 0644]
packages/muse/muse-import-latex.el [new file with mode: 0644]
packages/muse/muse-import-xml.el [new file with mode: 0644]
packages/muse/muse-ipc.el [new file with mode: 0644]
packages/muse/muse-journal.el [new file with mode: 0644]
packages/muse/muse-latex.el [new file with mode: 0644]
packages/muse/muse-latex2png.el [new file with mode: 0644]
packages/muse/muse-mode.el [new file with mode: 0644]
packages/muse/muse-poem.el [new file with mode: 0644]
packages/muse/muse-project.el [new file with mode: 0644]
packages/muse/muse-protocols.el [new file with mode: 0644]
packages/muse/muse-publish.el [new file with mode: 0644]
packages/muse/muse-regexps.el [new file with mode: 0644]
packages/muse/muse-texinfo.el [new file with mode: 0644]
packages/muse/muse-wiki.el [new file with mode: 0644]
packages/muse/muse-xml-common.el [new file with mode: 0644]
packages/muse/muse-xml.el [new file with mode: 0644]
packages/muse/muse.el [new file with mode: 0644]
packages/muse/muse.info [new file with mode: 0644]
packages/muse/texi/Makefile [new file with mode: 0644]
packages/muse/texi/dir-template [new file with mode: 0644]
packages/muse/texi/doclicense.texi [new file with mode: 0644]
packages/muse/texi/muse.texi [new file with mode: 0644]
packages/nhexl-mode/nhexl-mode.el [new file with mode: 0644]
packages/nlinum/nlinum.el [new file with mode: 0644]
packages/notes-mode/COPYING [new file with mode: 0644]
packages/notes-mode/HTML/notes-mode.html [new file with mode: 0644]
packages/notes-mode/HTML/notes-mode/notes-mode.html [new file with mode: 0644]
packages/notes-mode/HTML/notes-mode/notes-mode_1.html [new file with mode: 0644]
packages/notes-mode/HTML/notes-mode/notes-mode_2.html [new file with mode: 0644]
packages/notes-mode/HTML/notes-mode/notes-mode_3.html [new file with mode: 0644]
packages/notes-mode/HTML/notes-mode/notes-mode_4.html [new file with mode: 0644]
packages/notes-mode/HTML/notes-mode/notes-mode_5.html [new file with mode: 0644]
packages/notes-mode/HTML/notes-mode/notes-mode_6.html [new file with mode: 0644]
packages/notes-mode/HTML/notes-mode/notes-mode_7.html [new file with mode: 0644]
packages/notes-mode/HTML/notes-mode/notes-mode_abt.html [new file with mode: 0644]
packages/notes-mode/HTML/notes-mode/notes-mode_fot.html [new file with mode: 0644]
packages/notes-mode/HTML/notes-mode/notes-mode_toc.html [new file with mode: 0644]
packages/notes-mode/HTML/notes-mode_1.html [new file with mode: 0644]
packages/notes-mode/HTML/notes-mode_2.html [new file with mode: 0644]
packages/notes-mode/HTML/notes-mode_3.html [new file with mode: 0644]
packages/notes-mode/HTML/notes-mode_4.html [new file with mode: 0644]
packages/notes-mode/HTML/notes-mode_5.html [new file with mode: 0644]
packages/notes-mode/HTML/notes-mode_6.html [new file with mode: 0644]
packages/notes-mode/HTML/notes-mode_7.html [new file with mode: 0644]
packages/notes-mode/HTML/notes-mode_abt.html [new file with mode: 0644]
packages/notes-mode/HTML/notes-mode_fot.html [new file with mode: 0644]
packages/notes-mode/HTML/notes-mode_toc.html [new file with mode: 0644]
packages/notes-mode/Makefile.in [new file with mode: 0644]
packages/notes-mode/Notes.pm [new file with mode: 0755]
packages/notes-mode/NotesIndex.pm [new file with mode: 0755]
packages/notes-mode/NotesVars.pm [new file with mode: 0755]
packages/notes-mode/README [new file with mode: 0644]
packages/notes-mode/catsubject [new file with mode: 0755]
packages/notes-mode/dir [new file with mode: 0644]
packages/notes-mode/mkall [new file with mode: 0755]
packages/notes-mode/mkconfig [new file with mode: 0755]
packages/notes-mode/mkindex [new file with mode: 0755]
packages/notes-mode/mkindexcache [new file with mode: 0755]
packages/notes-mode/mknew [new file with mode: 0755]
packages/notes-mode/mkprevnext [new file with mode: 0755]
packages/notes-mode/mkrawindex [new file with mode: 0755]
packages/notes-mode/notes-aux.el [new file with mode: 0644]
packages/notes-mode/notes-emacs.el [new file with mode: 0644]
packages/notes-mode/notes-first.el [new file with mode: 0644]
packages/notes-mode/notes-index-mode.el [new file with mode: 0644]
packages/notes-mode/notes-mode.el [new file with mode: 0644]
packages/notes-mode/notes-mode.info [new file with mode: 0644]
packages/notes-mode/notes-mode.texi [new file with mode: 0644]
packages/notes-mode/notes-url.el [new file with mode: 0644]
packages/notes-mode/notes-variables.el [new file with mode: 0644]
packages/notes-mode/notes-xemacs.el [new file with mode: 0644]
packages/notes-mode/notesinit [new file with mode: 0755]
packages/notes-mode/release [new file with mode: 0644]
packages/notes-mode/sample.notesrc [new file with mode: 0755]
packages/notes-mode/setcrontab [new file with mode: 0755]
packages/num3-mode/num3-mode.el [new file with mode: 0644]
packages/oauth2/oauth2.el [new file with mode: 0644]
packages/omn-mode/omn-mode.el [new file with mode: 0644]
packages/quarter-plane/quarter-plane.el [new file with mode: 0644]
packages/queue/queue.el [new file with mode: 0644]
packages/rainbow-mode/rainbow-mode.el [new file with mode: 0644]
packages/register-list/register-list.el [new file with mode: 0755]
packages/shen-mode/README [new file with mode: 0644]
packages/shen-mode/inf-shen.el [new file with mode: 0644]
packages/shen-mode/shen-mode.el [new file with mode: 0644]
packages/sisu-mode/sisu-mode.el [new file with mode: 0644]
packages/smart-operator/smart-operator.el [new file with mode: 0644]
packages/sml-mode/README [new file with mode: 0644]
packages/sml-mode/TODO [new file with mode: 0644]
packages/sml-mode/mltags [new file with mode: 0755]
packages/sml-mode/sml-mode.el [new file with mode: 0644]
packages/sml-mode/sml-mode.spec [new file with mode: 0644]
packages/sml-mode/sml-mode.texi [new file with mode: 0644]
packages/sml-mode/testcases.sml [new file with mode: 0644]
packages/sokoban/sokoban-pkg.el [new file with mode: 0644]
packages/sokoban/sokoban.el [new file with mode: 0644]
packages/sokoban/sokoban.levels [new file with mode: 0644]
packages/svg-clock/svg-clock.el [new file with mode: 0644]
packages/tNFA/tNFA.el [new file with mode: 0644]
packages/temp-buffer-browse/Makefile [new file with mode: 0644]
packages/temp-buffer-browse/README.rst [new file with mode: 0644]
packages/temp-buffer-browse/temp-buffer-browse.el [new file with mode: 0644]
packages/trie/trie.el [new file with mode: 0644]
packages/undo-tree/undo-tree.el [new file with mode: 0644]
packages/uni-confusables/confusables.txt [new file with mode: 0644]
packages/uni-confusables/gen-confusables.el [new file with mode: 0644]
packages/uni-confusables/uni-confusables-pkg.el [new file with mode: 0644]
packages/uni-confusables/uni-confusables.el [new file with mode: 0644]
packages/vlf/vlf.el [new file with mode: 0644]
packages/websocket/COPYING [new file with mode: 0644]
packages/websocket/README.org [new file with mode: 0644]
packages/websocket/testserver.py [new file with mode: 0644]
packages/websocket/websocket-functional-test.el [new file with mode: 0644]
packages/websocket/websocket-test.el [new file with mode: 0644]
packages/websocket/websocket.el [new file with mode: 0644]
packages/windresize/windresize.el [new file with mode: 0755]
packages/xclip/xclip.el [new file with mode: 0644]
packages/yasnippet/.gitignore [new file with mode: 0644]
packages/yasnippet/.gitmodules [new file with mode: 0644]
packages/yasnippet/README [new file with mode: 0644]
packages/yasnippet/README.mdown [new file with mode: 0644]
packages/yasnippet/Rakefile [new file with mode: 0644]
packages/yasnippet/doc/images/bg-content-left.png [new file with mode: 0644]
packages/yasnippet/doc/images/bg-content-right.png [new file with mode: 0644]
packages/yasnippet/doc/images/bg-content.png [new file with mode: 0644]
packages/yasnippet/doc/images/bg-navigation-item-hover.png [new file with mode: 0644]
packages/yasnippet/doc/images/bg-navigation-item.png [new file with mode: 0644]
packages/yasnippet/doc/images/bg-navigation.png [new file with mode: 0644]
packages/yasnippet/doc/images/body.png [new file with mode: 0644]
packages/yasnippet/doc/images/customization-group.png [new file with mode: 0644]
packages/yasnippet/doc/images/dropdown-menu.png [new file with mode: 0644]
packages/yasnippet/doc/images/external.png [new file with mode: 0644]
packages/yasnippet/doc/images/ido-menu.png [new file with mode: 0644]
packages/yasnippet/doc/images/menu-1.png [new file with mode: 0644]
packages/yasnippet/doc/images/menu-2.png [new file with mode: 0644]
packages/yasnippet/doc/images/menu-groups.png [new file with mode: 0644]
packages/yasnippet/doc/images/menu-parent.png [new file with mode: 0644]
packages/yasnippet/doc/images/minor-mode-indicator.png [new file with mode: 0644]
packages/yasnippet/doc/images/x-menu.png [new file with mode: 0644]
packages/yasnippet/doc/manual.mdown [new file with mode: 0644]
packages/yasnippet/doc/stylesheets/styles.css [new file with mode: 0644]
packages/yasnippet/doc/yas-doc-helper.el [new file with mode: 0755]
packages/yasnippet/extras/bundles/html-tmbundle [new submodule]
packages/yasnippet/extras/bundles/rails-tmbundle [new submodule]
packages/yasnippet/extras/bundles/ruby-tmbundle [new submodule]
packages/yasnippet/extras/imported/html-mode/.yas-setup.el [new file with mode: 0644]
packages/yasnippet/extras/imported/objc-mode/.yas-setup.el [new file with mode: 0644]
packages/yasnippet/extras/imported/objc-mode/Support/.yas-skip [new file with mode: 0644]
packages/yasnippet/extras/imported/objc-mode/Support/alldefs.txt [new file with mode: 0644]
packages/yasnippet/extras/imported/rails-mode/.yas-setup.el [new file with mode: 0644]
packages/yasnippet/extras/imported/ruby-mode/.yas-setup.el [new file with mode: 0644]
packages/yasnippet/extras/textmate_import.rb [new file with mode: 0755]
packages/yasnippet/snippets/c++-mode/.yas-parents [new file with mode: 0644]
packages/yasnippet/snippets/c++-mode/beginend [new file with mode: 0644]
packages/yasnippet/snippets/c++-mode/class [new file with mode: 0644]
packages/yasnippet/snippets/c++-mode/ns [new file with mode: 0644]
packages/yasnippet/snippets/c++-mode/template [new file with mode: 0644]
packages/yasnippet/snippets/c++-mode/using [new file with mode: 0644]
packages/yasnippet/snippets/c-mode/.yas-parents [new file with mode: 0644]
packages/yasnippet/snippets/c-mode/fopen [new file with mode: 0644]
packages/yasnippet/snippets/c-mode/printf [new file with mode: 0644]
packages/yasnippet/snippets/cc-mode/.yas-parents [new file with mode: 0644]
packages/yasnippet/snippets/cc-mode/do [new file with mode: 0644]
packages/yasnippet/snippets/cc-mode/for [new file with mode: 0644]
packages/yasnippet/snippets/cc-mode/if [new file with mode: 0644]
packages/yasnippet/snippets/cc-mode/inc [new file with mode: 0644]
packages/yasnippet/snippets/cc-mode/inc.1 [new file with mode: 0644]
packages/yasnippet/snippets/cc-mode/main [new file with mode: 0644]
packages/yasnippet/snippets/cc-mode/once [new file with mode: 0644]
packages/yasnippet/snippets/cc-mode/struct [new file with mode: 0644]
packages/yasnippet/snippets/cperl-mode/.yas-parents [new file with mode: 0644]
packages/yasnippet/snippets/csharp-mode/.yas-parents [new file with mode: 0644]
packages/yasnippet/snippets/csharp-mode/attrib [new file with mode: 0644]
packages/yasnippet/snippets/csharp-mode/attrib.1 [new file with mode: 0644]
packages/yasnippet/snippets/csharp-mode/attrib.2 [new file with mode: 0644]
packages/yasnippet/snippets/csharp-mode/class [new file with mode: 0644]
packages/yasnippet/snippets/csharp-mode/comment [new file with mode: 0644]
packages/yasnippet/snippets/csharp-mode/comment.1 [new file with mode: 0644]
packages/yasnippet/snippets/csharp-mode/comment.2 [new file with mode: 0644]
packages/yasnippet/snippets/csharp-mode/comment.3 [new file with mode: 0644]
packages/yasnippet/snippets/csharp-mode/method [new file with mode: 0644]
packages/yasnippet/snippets/csharp-mode/namespace [new file with mode: 0644]
packages/yasnippet/snippets/csharp-mode/prop [new file with mode: 0644]
packages/yasnippet/snippets/csharp-mode/region [new file with mode: 0644]
packages/yasnippet/snippets/csharp-mode/using [new file with mode: 0644]
packages/yasnippet/snippets/csharp-mode/using.1 [new file with mode: 0644]
packages/yasnippet/snippets/csharp-mode/using.2 [new file with mode: 0644]
packages/yasnippet/snippets/css-mode/.yas-parents [new file with mode: 0644]
packages/yasnippet/snippets/css-mode/bg [new file with mode: 0644]
packages/yasnippet/snippets/css-mode/bg.1 [new file with mode: 0644]
packages/yasnippet/snippets/css-mode/bor [new file with mode: 0644]
packages/yasnippet/snippets/css-mode/cl [new file with mode: 0644]
packages/yasnippet/snippets/css-mode/disp.block [new file with mode: 0644]
packages/yasnippet/snippets/css-mode/disp.inline [new file with mode: 0644]
packages/yasnippet/snippets/css-mode/disp.none [new file with mode: 0644]
packages/yasnippet/snippets/css-mode/ff [new file with mode: 0644]
packages/yasnippet/snippets/css-mode/fs [new file with mode: 0644]
packages/yasnippet/snippets/css-mode/mar.bottom [new file with mode: 0644]
packages/yasnippet/snippets/css-mode/mar.left [new file with mode: 0644]
packages/yasnippet/snippets/css-mode/mar.mar [new file with mode: 0644]
packages/yasnippet/snippets/css-mode/mar.margin [new file with mode: 0644]
packages/yasnippet/snippets/css-mode/mar.right [new file with mode: 0644]
packages/yasnippet/snippets/css-mode/mar.top [new file with mode: 0644]
packages/yasnippet/snippets/css-mode/pad.bottom [new file with mode: 0644]
packages/yasnippet/snippets/css-mode/pad.left [new file with mode: 0644]
packages/yasnippet/snippets/css-mode/pad.pad [new file with mode: 0644]
packages/yasnippet/snippets/css-mode/pad.padding [new file with mode: 0644]
packages/yasnippet/snippets/css-mode/pad.right [new file with mode: 0644]
packages/yasnippet/snippets/css-mode/pad.top [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/.read_me [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/.yas-parents [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/add-hook.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/and.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/append.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/apply.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/aref.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/aset.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/assq.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/autoload.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/backward-char.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/beginning-of-line.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/bounds-of-thing-at-point.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/buffer-file-name.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/buffer-modified-p.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/buffer-substring-no-properties.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/buffer-substring.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/car.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/cdr.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/concat.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/cond.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/condition-case.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/cons.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/consp.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/copy-directory.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/copy-file.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/current-buffer.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/custom-autoload.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/defalias.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/defcustom.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/define-key.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/defsubst.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/defun.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/defvar.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/delete-char.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/delete-directory.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/delete-file.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/delete-region.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/directory-files.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/dolist.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/end-of-line.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/eq.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/equal.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/error.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/expand-file-name.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/f.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/fboundp.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/file-name-directory.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/file-name-extension.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/file-name-nondirectory.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/file-name-sans-extension.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/file-relative-name.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/find-file.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/format.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/forward-char.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/forward-line.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/funcall.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/function.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/get.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/global-set-key.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/goto-char.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/if.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/insert-file-contents.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/insert.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/interactive.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/kbd.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/kill-buffer.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/lambda.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/length.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/let.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/line-beginning-position.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/line-end-position.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/list.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/looking-at.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/make-directory.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/make-local-variable.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/mapc.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/mapcar.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/match-beginning.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/match-end.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/match-string.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/memq.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/message.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/not.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/nth.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/null.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/number-to-string.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/or.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/point-max.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/point-min.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/point.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/princ.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/print.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/progn.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/push.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/put.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/re-search-backward.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/re-search-forward.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/region-active-p.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/region-beginning.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/region-end.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/rename-file.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/repeat.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/replace-regexp-in-string.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/replace-regexp.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/require.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/save-buffer.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/save-excursion.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/search-backward-regexp.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/search-backward.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/search-forward-regexp.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/search-forward.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/set-buffer.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/set-file-modes.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/set-mark.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/set.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/setq.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/skip-chars-backward.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/skip-chars-forward.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/split-string.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/string-match.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/string-to-number.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/string.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/string=.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/stringp.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/substring.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/thing-at-point.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/unless.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/vector.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/when.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/while.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/widget-get.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/with-current-buffer.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/x-dired.process_marked.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/x-file.process.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/x-file.read-lines.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/x-find-replace.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/x-grabstring.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/x-grabthing.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/x-traverse_dir.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/x-word-or-region.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/y-or-n-p.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/emacs-lisp-mode/yes-or-no-p.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/erlang-mode/.yas-parents [new file with mode: 0644]
packages/yasnippet/snippets/erlang-mode/after [new file with mode: 0644]
packages/yasnippet/snippets/erlang-mode/begin [new file with mode: 0644]
packages/yasnippet/snippets/erlang-mode/beh [new file with mode: 0644]
packages/yasnippet/snippets/erlang-mode/case [new file with mode: 0644]
packages/yasnippet/snippets/erlang-mode/compile [new file with mode: 0644]
packages/yasnippet/snippets/erlang-mode/def [new file with mode: 0644]
packages/yasnippet/snippets/erlang-mode/exp [new file with mode: 0644]
packages/yasnippet/snippets/erlang-mode/fun [new file with mode: 0644]
packages/yasnippet/snippets/erlang-mode/if [new file with mode: 0644]
packages/yasnippet/snippets/erlang-mode/ifdef [new file with mode: 0644]
packages/yasnippet/snippets/erlang-mode/ifndef [new file with mode: 0644]
packages/yasnippet/snippets/erlang-mode/imp [new file with mode: 0644]
packages/yasnippet/snippets/erlang-mode/inc [new file with mode: 0644]
packages/yasnippet/snippets/erlang-mode/inc.lib [new file with mode: 0644]
packages/yasnippet/snippets/erlang-mode/loop [new file with mode: 0644]
packages/yasnippet/snippets/erlang-mode/mod [new file with mode: 0644]
packages/yasnippet/snippets/erlang-mode/rcv [new file with mode: 0644]
packages/yasnippet/snippets/erlang-mode/rcv.after [new file with mode: 0644]
packages/yasnippet/snippets/erlang-mode/rec [new file with mode: 0644]
packages/yasnippet/snippets/erlang-mode/try [new file with mode: 0644]
packages/yasnippet/snippets/erlang-mode/undef [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/.yas-parents [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/au [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/bd [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/c [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/ch [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/cx [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/dc [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/do [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/dp [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/eq [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/ib [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/ic [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/ich [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/if [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/ii [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/il [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/in [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/inc [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/intr [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/ir [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/l [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/pa [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/pr [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/re [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/st [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/su [new file with mode: 0644]
packages/yasnippet/snippets/f90-mode/wr [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/.yas-make-groups [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/.yas-parents [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/b.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/body [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/br [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/code [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/code.class [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/div [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/div.class [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/div.id [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/div.id-class [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/dov [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/form [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/head [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/header/h1 [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/header/h2 [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/header/h3 [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/header/h4 [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/header/h5 [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/header/h6 [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/hr [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/href [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/html [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/html.xmlns [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/i.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/img [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/input [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/link.stylesheet [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/link.stylesheet-ie [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/list/dd [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/list/dl [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/list/dl.id [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/list/dt [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/list/li [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/list/li.class [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/list/ol [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/list/ol.class [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/list/ol.id [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/list/ul [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/list/ul.class [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/list/ul.id [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/mailto [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/meta/doctype [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/meta/doctype.xhml1 [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/meta/doctype.xhtml1_1 [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/meta/doctype.xhtml1_strict [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/meta/doctype.xhtml1_transitional [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/meta/meta [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/meta/meta.http-equiv [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/p [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/pre [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/q.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/quote [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/script.javascript [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/script.javascript-src [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/span [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/span.class [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/span.id [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/style [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/table/table [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/table/td [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/table/th [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/table/tr [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/textarea [new file with mode: 0644]
packages/yasnippet/snippets/html-mode/title [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/assert.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/cb.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/com.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/describe.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/err.snippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/error.snippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/expect.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/exports.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/fn.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/for.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/id.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/if.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/invoc.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/it.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/log.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/method.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/mod.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/prop.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/proto.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/rq.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/rt.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/slice.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/super.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/switch.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/throw.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/try.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/var.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/wh.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/js-mode/while.yasnippet [new file with mode: 0644]
packages/yasnippet/snippets/latex-mode/.yas-parents [new file with mode: 0644]
packages/yasnippet/snippets/latex-mode/begin [new file with mode: 0644]
packages/yasnippet/snippets/markdown-mode/+ [new file with mode: 0644]
packages/yasnippet/snippets/markdown-mode/- [new file with mode: 0644]
packages/yasnippet/snippets/markdown-mode/.yas-parents [new file with mode: 0644]
packages/yasnippet/snippets/markdown-mode/_ [new file with mode: 0644]
packages/yasnippet/snippets/markdown-mode/__ [new file with mode: 0644]
packages/yasnippet/snippets/markdown-mode/` [new file with mode: 0644]
packages/yasnippet/snippets/markdown-mode/h1.1 [new file with mode: 0644]
packages/yasnippet/snippets/markdown-mode/h1.2 [new file with mode: 0644]
packages/yasnippet/snippets/markdown-mode/h2.1 [new file with mode: 0644]
packages/yasnippet/snippets/markdown-mode/h2.2 [new file with mode: 0644]
packages/yasnippet/snippets/markdown-mode/h3 [new file with mode: 0644]
packages/yasnippet/snippets/markdown-mode/h4 [new file with mode: 0644]
packages/yasnippet/snippets/markdown-mode/h5 [new file with mode: 0644]
packages/yasnippet/snippets/markdown-mode/h6 [new file with mode: 0644]
packages/yasnippet/snippets/markdown-mode/hr.1 [new file with mode: 0644]
packages/yasnippet/snippets/markdown-mode/hr.2 [new file with mode: 0644]
packages/yasnippet/snippets/markdown-mode/img [new file with mode: 0644]
packages/yasnippet/snippets/markdown-mode/link [new file with mode: 0644]
packages/yasnippet/snippets/markdown-mode/ol [new file with mode: 0644]
packages/yasnippet/snippets/markdown-mode/rimg [new file with mode: 0644]
packages/yasnippet/snippets/markdown-mode/rlb [new file with mode: 0644]
packages/yasnippet/snippets/markdown-mode/rlink [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/.yas-make-groups [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/.yas-parents [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/body [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/br [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/code [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/div [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/form [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/head [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/header/h1 [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/header/h2 [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/header/h3 [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/header/h4 [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/header/h5 [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/header/h6 [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/hr [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/href [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/html [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/img [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/input [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/li [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/link [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/meta/doctype [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/meta/doctype.xhtml1_strict [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/meta/doctype.xhtml1_transitional [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/meta/meta [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/name [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/ol [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/p [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/pre [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/quote [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/span [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/style [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/table [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/tag.1l [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/tag.2l [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/td [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/th [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/title [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/tr [new file with mode: 0644]
packages/yasnippet/snippets/nxml-mode/ul [new file with mode: 0644]
packages/yasnippet/snippets/objc-mode/.yas-parents [new file with mode: 0644]
packages/yasnippet/snippets/objc-mode/prop [new file with mode: 0644]
packages/yasnippet/snippets/perl-mode/.yas-parents [new file with mode: 0644]
packages/yasnippet/snippets/perl-mode/eval [new file with mode: 0644]
packages/yasnippet/snippets/perl-mode/for [new file with mode: 0644]
packages/yasnippet/snippets/perl-mode/fore [new file with mode: 0644]
packages/yasnippet/snippets/perl-mode/if [new file with mode: 0644]
packages/yasnippet/snippets/perl-mode/ife [new file with mode: 0644]
packages/yasnippet/snippets/perl-mode/ifee [new file with mode: 0644]
packages/yasnippet/snippets/perl-mode/sub [new file with mode: 0644]
packages/yasnippet/snippets/perl-mode/unless [new file with mode: 0644]
packages/yasnippet/snippets/perl-mode/while [new file with mode: 0644]
packages/yasnippet/snippets/perl-mode/xfore [new file with mode: 0644]
packages/yasnippet/snippets/perl-mode/xif [new file with mode: 0644]
packages/yasnippet/snippets/perl-mode/xunless [new file with mode: 0644]
packages/yasnippet/snippets/perl-mode/xwhile [new file with mode: 0644]
packages/yasnippet/snippets/python-mode/.yas-parents [new file with mode: 0644]
packages/yasnippet/snippets/python-mode/__ [new file with mode: 0644]
packages/yasnippet/snippets/python-mode/class [new file with mode: 0644]
packages/yasnippet/snippets/python-mode/def [new file with mode: 0644]
packages/yasnippet/snippets/python-mode/defm [new file with mode: 0644]
packages/yasnippet/snippets/python-mode/for [new file with mode: 0644]
packages/yasnippet/snippets/python-mode/ifmain [new file with mode: 0644]
packages/yasnippet/snippets/python-mode/prop [new file with mode: 0644]
packages/yasnippet/snippets/python-mode/propg [new file with mode: 0644]
packages/yasnippet/snippets/python-mode/propsg [new file with mode: 0644]
packages/yasnippet/snippets/python-mode/while [new file with mode: 0644]
packages/yasnippet/snippets/rst-mode/.yas-parents [new file with mode: 0644]
packages/yasnippet/snippets/rst-mode/chap [new file with mode: 0644]
packages/yasnippet/snippets/rst-mode/sec [new file with mode: 0644]
packages/yasnippet/snippets/rst-mode/tit [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/.yas-make-groups [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/.yas-parents [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/collections/all [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/collections/any [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/collections/classify [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/collections/collect [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/collections/deli [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/collections/det [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/collections/ea [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/collections/eac [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/collections/eai [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/collections/eav [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/collections/eawi [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/collections/inject [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/collections/reject [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/collections/select [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/collections/zip [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/control structure/forin [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/control structure/if [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/control structure/ife [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/control structure/tim [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/control structure/until [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/control structure/upt [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/control structure/when [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/control structure/while [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/definitions/Comp [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/definitions/am [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/definitions/cla [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/definitions/cls [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/definitions/mm [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/definitions/mod [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/definitions/r [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/definitions/rw [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/definitions/w [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/general/# [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/general/=b [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/general/app [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/general/bm [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/general/case [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/general/dee [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/general/rb [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/general/req [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/general/rreq [new file with mode: 0644]
packages/yasnippet/snippets/ruby-mode/general/y [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/.yas-parents [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/act [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/act.arg [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/actor [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/ano [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/app [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/arr.new [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/arr.val-new [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/asof [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/ass [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/ass.true [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/at.author [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/at.param [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/at.return [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/at.version [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/bang [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/case [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/case.match-all [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/cast [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/cc [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/cl [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/cl.abs [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/cl.abs-arg [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/cl.arg [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/clof [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/co [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/cons [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/cons.nil [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/def.arg [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/def.arg-body [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/def.arg-ret [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/def.arg-ret-body [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/def.body [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/def.ret [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/def.ret-body [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/def.simple [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/doc.class [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/doc.def [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/doc.file [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/doc.file-scala [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/doc.file-scala-api [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/doc.scaladoc [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/expect [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/ext [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/for.extract [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/for.if [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/for.loop [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/for.multi [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/foreach [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/hmap.new [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/hmap.val-new [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/hset.new [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/hset.val-new [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/if [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/if.else [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/imp [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/intercept [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/isof [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/ls.new [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/ls.val-new [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/main [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/map [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/map.new [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/match [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/match.can [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/match.option [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/mix [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/ob [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/pac [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/pr.newline [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/pr.simple [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/pr.string [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/pr.trace [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/pri [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/pri.param [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/pro [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/pro.param [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/suite [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/test [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/throw [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/tr [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/tr.ext [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/tr.ext-with [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/tr.with [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/try [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/try.catch-finally [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/try.finally [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/tup.arrow [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/tup.paren [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/val [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/val.new [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/val.ret [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/var [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/var.new [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/var.ret [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/whi [new file with mode: 0644]
packages/yasnippet/snippets/scala-mode/with [new file with mode: 0644]
packages/yasnippet/snippets/snippet-mode/.yas-parents [new file with mode: 0644]
packages/yasnippet/snippets/snippet-mode/field [new file with mode: 0644]
packages/yasnippet/snippets/snippet-mode/mirror [new file with mode: 0644]
packages/yasnippet/snippets/snippet-mode/vars [new file with mode: 0644]
packages/yasnippet/snippets/sql-mode/.yas-parents [new file with mode: 0644]
packages/yasnippet/snippets/sql-mode/column [new file with mode: 0644]
packages/yasnippet/snippets/sql-mode/constraint [new file with mode: 0644]
packages/yasnippet/snippets/sql-mode/constraint.1 [new file with mode: 0644]
packages/yasnippet/snippets/sql-mode/create [new file with mode: 0644]
packages/yasnippet/snippets/sql-mode/create.1 [new file with mode: 0644]
packages/yasnippet/snippets/sql-mode/references [new file with mode: 0644]
packages/yasnippet/snippets/text-mode/email [new file with mode: 0644]
packages/yasnippet/snippets/text-mode/time [new file with mode: 0644]
packages/yasnippet/yasnippet-debug.el [new file with mode: 0644]
packages/yasnippet/yasnippet-tests.el [new file with mode: 0644]
packages/yasnippet/yasnippet.el [new file with mode: 0644]

diff --git a/.bzrignore b/.bzrignore
new file mode 120000 (symlink)
index 0000000..3e4e48b
--- /dev/null
@@ -0,0 +1 @@
+.gitignore
\ No newline at end of file
index c531d9867f6c223be1daf0f6da7538feb11966d8..70caf06b11534583e2ab8cdc357e9e6ab18450c3 100644 (file)
@@ -1 +1,8 @@
 *.elc
+*~
+ChangeLog
+core
+packages/*/*-autoloads.el
+packages/*/*-pkg.el
+packages/dismal
+packages/w3
diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..94a9ed0
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/GNUmakefile b/GNUmakefile
new file mode 100644 (file)
index 0000000..2b07767
--- /dev/null
@@ -0,0 +1,172 @@
+# Makefile for GNU Emacs Lisp Package Archive.
+
+EMACS=emacs --batch
+
+ARCHIVE_TMP=archive-tmp
+SITE_DIR=site
+
+.PHONY: archive-tmp changelogs process-archive archive-full org-fetch clean all do-it
+
+all: all-in-place
+
+CR_EXCEPTIONS=copyright_exceptions
+.PHONY: check_copyrights
+check_copyrights:
+       @echo "Compute exceptions >$(CR_EXCEPTIONS)~"
+       @export LANG=C;                                                 \
+       (cd packages;                                                   \
+       find . -name '*.el' -print0 |                                   \
+           xargs -0 grep -L 'Free Software Foundation, Inc' |          \
+           grep -v '\(\.dir-locals\|.-\(pkg\|autoloads\)\)\.el$$';     \
+       find . -name '*.el' -print |                                    \
+           while read f; do                                            \
+               fquoted="$$(echo $$f|tr '|' '_')";                      \
+               sed -n -e '/[Cc]opyright.*, *[1-9][-0-9]*,\?$$/N'       \
+                   -e '/Free Software Foundation/d'                    \
+                   -e "s|^\\(.*[Cc]opyright\\)|$$fquoted:\\1|p"        \
+                  "$$f";                                               \
+           done) | sort >$(CR_EXCEPTIONS)~
+       diff -u "$(CR_EXCEPTIONS)" "$(CR_EXCEPTIONS)~"
+
+## Deploy the package archive to archive/, with packages in
+## archive/packages/:
+archive: archive-tmp
+       $(MAKE) $(MFLAGS) process-archive
+
+archive-tmp: packages
+       -rm -r $(ARCHIVE_TMP)
+       mkdir -p $(ARCHIVE_TMP)
+       cp -a packages/. $(ARCHIVE_TMP)/packages
+
+process-archive:
+       # FIXME, we could probably speed this up significantly with
+       # rules like "%.tar: ../%/ChangeLog" so we only rebuild the packages
+       # that have indeed changed.
+       cd $(ARCHIVE_TMP)/packages;                             \
+         $(EMACS) -l $(CURDIR)/admin/archive-contents.el       \
+                  -f batch-make-archive
+       @cd $(ARCHIVE_TMP)/packages;                            \
+         for pt in *; do                                       \
+             if [ -f "$${pt}/.elpaignore" ]; then              \
+                 ignore="$${pt}/.elpaignore";                  \
+             else                                              \
+                 ignore="/dev/null";                           \
+             fi;                                               \
+             if [ -d $$pt ]; then                              \
+                 echo "Creating tarball $${pt}.tar" &&         \
+                 tar -cf $${pt}.tar $$pt -X "$$ignore";        \
+                 rm -r $${pt};                                 \
+             fi;                                               \
+         done
+       mkdir -p archive/packages
+       mv archive/packages archive/packages-old
+       mv $(ARCHIVE_TMP)/packages archive/packages
+       chmod -R a+rX archive/packages
+       rm -rf archive/packages-old
+       rm -rf $(ARCHIVE_TMP)
+
+## Deploy the package archive to archive/ including the Org daily:
+archive-full: archive-tmp org-fetch
+       $(MAKE) $(MFLAGS) process-archive
+       #mkdir -p archive/admin
+       #cp admin/* archive/admin/
+
+# FIXME: Turn it into an `external', which will require adding the notion of
+# "snapshot" packages.
+org-fetch: archive-tmp
+       cd $(ARCHIVE_TMP)/packages; \
+       pkgname=`curl -s http://orgmode.org/elpa/|perl -ne 'push @f, $$1 if m/(org-\d{8})\.tar/; END { @f = sort @f; print "$$f[-1]\n"}'`; \
+       wget -q http://orgmode.org/elpa/$${pkgname}.tar -O $${pkgname}.tar; \
+       if [ -f $${pkgname}.tar ]; then \
+               tar xf $${pkgname}.tar; \
+               rm -f $${pkgname}.tar; \
+               mv $${pkgname} org; \
+       fi
+
+clean:
+       rm -rf archive $(ARCHIVE_TMP) $(SITE_DIR)
+
+########## Rules for in-place installation ####################################
+pkgs := $(foreach pkg, $(wildcard packages/*), \
+          $(if $(shell [ -d "$(pkg)" ] && echo true), $(pkg)))
+
+define SET-diff
+$(shell echo "$(1)" "$(2)" "$(2)" | tr ' ' '\n' | sort | uniq -u)
+endef
+
+define FILTER-nonsrc
+$(filter-out %-autoloads.el %-pkg.el, $(1))
+endef
+
+define RULE-srcdeps
+$(1): $$(call FILTER-nonsrc, $$(wildcard $$(dir $(1))/*.el))
+endef
+
+# Compute the set of autolods files and their dependencies.
+autoloads := $(foreach pkg, $(pkgs), $(pkg)/$(notdir $(pkg))-autoloads.el)
+
+$(foreach al, $(autoloads), $(eval $(call RULE-srcdeps, $(al))))
+%-autoloads.el:
+       @echo 'EMACS -f package-generate-autoloads $@'
+       @cd $(dir $@); \
+         $(EMACS) -l $(CURDIR)/admin/archive-contents.el \
+             --eval "(archive--refresh-pkg-file)" \
+             --eval "(require 'package)" \
+             --eval "(package-generate-autoloads \"$$(basename $$(pwd))\" \
+                                                 \"$$(pwd)\")"
+
+# Put into elcs the set of elc files we need to keep up-to-date.
+# I.e. one for each .el file except for the -pkg.el, the -autoloads.el, and
+# the .el files that are marked "no-byte-compile".
+els := $(call FILTER-nonsrc, $(wildcard packages/*/*.el))
+naive_elcs := $(patsubst %.el, %.elc, $(els))
+current_elcs := $(wildcard packages/*/*.elc)
+
+extra_els := $(call SET-diff, $(els), $(patsubst %.elc, %.el, $(current_elcs)))
+nbc_els := $(foreach el, $(extra_els), \
+             $(if $(shell grep '^;.*no-byte-compile: t' "$(el)"), $(el)))
+elcs := $(call SET-diff, $(naive_elcs), $(patsubst %.el, %.elc, $(nbc_els)))
+
+# '(dolist (al (quote ($(patsubst %, "%", $(autoloads))))) (load (expand-file-name al) nil t))'
+%.elc: %.el
+       @echo 'EMACS -f batch-byte-compile $<'
+       @$(EMACS) \
+           --eval "(setq package-directory-list '(\"$(abspath packages)\"))" \
+           --eval '(package-initialize)' \
+           -L $(dir $@) -f batch-byte-compile $<
+
+.PHONY: elcs
+elcs: $(elcs)
+
+# Remove .elc files that don't have a corresponding .el file any more.
+extra_elcs := $(call SET-diff, $(current_elcs), $(naive_elcs))
+.PHONY: $(extra_elcs)
+$(extra_elcs):; rm $@
+
+# # Put into single_pkgs the set of -pkg.el files we need to keep up-to-date.
+# # I.e. all the -pkg.el files for the single-file packages.
+# single_pkgs:=$(foreach pkg, $(pkgs), \
+#                $(word $(words $(call FILTER-nonsrc, \
+#                                      $(wildcard $(pkg)/*.el))), \
+#                   $(pkg)/$(notdir $(pkg))-pkg.el))
+# #$(foreach al, $(single_pkgs), $(eval $(call RULE-srcdeps, $(al))))
+# %-pkg.el: %.el
+#      @echo 'EMACS -f package-generate-description-file $@'
+#      @$(EMACS) \
+#          --eval '(require (quote package))' \
+#          --eval '(setq b (find-file-noselect "$<"))' \
+#          --eval '(setq d (with-current-buffer b (package-buffer-info)))' \
+#          --eval '(package-generate-description-file d "$(dir $@)")'
+
+.PHONY: all-in-place
+all-in-place: $(extra_elcs) $(autoloads) # $(single_pkgs)
+       # Do them in a sub-make, so that autoloads are done first.
+       $(MAKE) elcs
+
+
+############### Rules to prepare the externals ################################
+
+.PHONY:
+externals:
+       $(EMACS) -l admin/archive-contents.el \
+           -f archive-add/remove/update-externals
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..1eafa3d
--- /dev/null
+++ b/README
@@ -0,0 +1,113 @@
+Copyright (C) 2010-2011 Free Software Foundation, Inc.
+See the end of the file for license conditions.
+
+
+This branch contains the sources, deployment scripts, and auxilliary
+files for the Emacs Lisp package archive (elpa.gnu.org).
+
+This file explains the branch layout, how to add and edit packages,
+and how to deploy the archive (either on elpa.gnu.org, or a local copy
+for testing purposes).
+
+
+* DIRECTORY LAYOUT
+
+** admin/    -- scripts for administering the package archive.
+** html/     -- HTML for the elpa.gnu.org website.
+** packages/ -- source code for the packages.
+
+
+* PACKAGES
+
+** Contents of the packages/ directory:
+This directory holds the package sources, with one subdirectory for
+each package.
+
+** To add a package:
+
+*** Add a simple (1-file) package as packages/NAME/NAME.el.
+
+*** Add a multi-file package as a directory, packages/NAME.
+
+*** Commit your changes the usual way ("git add", "git commit", etc).
+
+Changes in the Git repository do not immediately propagate to the
+user-facing archive (what users see when they do `M-x list-packages').
+That is done by deploying the archive.
+
+
+* DEPLOYMENT
+
+** To deploy the package repository locally:
+
+  make
+
+This compiles and generates autoloads for all the packages in the
+packages/ directory. The resulting archive is the same packages/
+directory.
+
+** To deploy the package repository as a remotely-accessible archive:
+
+  make archive
+
+or
+
+  make archive-full
+
+This deploys the packages to the archive/ directory.  Unlike "make
+site", this makes a full copy of the packages, and tars up multi-file
+packages.
+
+A full deployment also copies the admin scripts to archive/admin, and
+fetches externally hosted packages (currently, the Org daily builds)
+and adds them to the archive.
+
+** To access a deployed archive
+
+To access the archive via HTTP, have a symlink (say) /var/www/packages
+pointing to DEST/packages, and set up Emacs with
+
+  (setq package-archives '(("new-elpa" . "http://foo.com/packages")))
+
+You can also access the archive via normal file access.  Such "local
+archives" are useful for debugging:
+
+  (setq package-archives '(("local-elpa" . ".../elpa/packages")))
+
+** Notes specific to elpa.gnu.org
+
+The way things are set up on this machine, we refresh the archive by
+logging in (login access set up by FSF admins), and
+
+su elpa
+cd ~elpa/elpa
+bzr up
+
+Then make a full archive deployment, as discussed above.  The symlink
+/var/www/packages points to the staging package directory under
+/home/elpa/.
+
+The Org mode dailies are also fetched and added by the script
+admin/org-synch.sh, run as a cron job.
+
+\f
+This file is part of GNU Emacs.
+
+GNU Emacs is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+\f
+Local variables:
+mode: outline
+paragraph-separate: "[         \f]*$"
+end:
diff --git a/admin/archive-contents.el b/admin/archive-contents.el
new file mode 100644 (file)
index 0000000..7ee9c1c
--- /dev/null
@@ -0,0 +1,574 @@
+;;; archive-contents.el --- Auto-generate an Emacs Lisp package archive.  -*- lexical-binding:t -*-
+
+;; Copyright (C) 2011, 2012, 2013  Free Software Foundation, Inc
+
+;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(eval-when-compile (require 'cl))
+(require 'lisp-mnt)
+(require 'package)
+(require 'pcase)
+
+(defconst archive-contents-subdirectory-regexp
+  "\\([^.].*?\\)-\\([0-9]+\\(?:[.][0-9]+\\|\\(?:pre\\|beta\\|alpha\\)[0-9]+\\)*\\)")
+
+(defconst archive-re-no-dot "\\`\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*"
+  "Regular expression matching all files except \".\" and \"..\".")
+
+(defun archive--version-to-list (vers)
+  (when vers
+    (let ((l (version-to-list vers)))
+      ;; Signal an error for things like "1.02" which is parsed as "1.2".
+      (assert (equal vers (package-version-join l)) nil
+              "Unsupported version syntax %S" vers)
+      l)))
+
+(defun archive--convert-require (elt)
+  (list (car elt)
+       (archive--version-to-list (car (cdr elt)))))
+
+(defun archive--strip-rcs-id (str)
+  "Strip RCS version ID from the version string STR.
+If the result looks like a dotted numeric version, return it.
+Otherwise return nil."
+  (when str
+    (when (string-match "\\`[ \t]*[$]Revision:[ \t]+" str)
+      (setq str (substring str (match-end 0))))
+    (condition-case nil
+        (if (archive--version-to-list str)
+            str)
+      (error str))))
+
+(defun archive--delete-elc-files (dir &optional only-orphans)
+  "Recursively delete all .elc files in DIR.
+Delete backup files also."
+  (dolist (f (directory-files dir t archive-re-no-dot))
+    (cond ((file-directory-p f)
+          (archive--delete-elc-files f))
+         ((or (and (string-match "\\.elc\\'" f)
+                    (not (and only-orphans
+                              (file-readable-p (replace-match ".el" t t f)))))
+              (backup-file-name-p f))
+          (delete-file f)))))
+
+(defun batch-make-archive ()
+  "Process package content directories and generate the archive-contents file."
+  (let ((packages '(1))) ; format-version.
+    (dolist (dir (directory-files default-directory nil archive-re-no-dot))
+      (condition-case v
+         (if (not (file-directory-p dir))
+             (message "Skipping non-package file %s" dir)
+           (let* ((pkg (file-name-nondirectory dir))
+                  (autoloads-file (expand-file-name (concat pkg "-autoloads.el") dir))
+                  simple-p)
+             ;; Omit autoloads and .elc files from the package.
+             (if (file-exists-p autoloads-file)
+                 (delete-file autoloads-file))
+             (archive--delete-elc-files dir)
+             ;; Test whether this is a simple or multi-file package.
+             (setq simple-p (archive--simple-package-p dir pkg))
+             (push (if (car simple-p)
+                       (apply #'archive--process-simple-package
+                              dir pkg (cdr simple-p))
+                      (if simple-p
+                          (apply #'archive--write-pkg-file
+                                 dir pkg (cdr simple-p)))
+                     (archive--process-multi-file-package dir pkg))
+                   packages)))
+       ((debug error) (error "Error in %s: %S" dir v))))
+    (with-temp-buffer
+      (pp (nreverse packages) (current-buffer))
+      (write-region nil nil "archive-contents"))))
+
+(defconst archive--revno-re "[0-9a-f]+")
+
+(defun archive-prepare-packages (srcdir)
+  "Prepare the `packages' directory inside the Git checkout.
+Expects to be called from within the `packages' directory.
+\"Prepare\" here is for subsequent construction of the packages and archive,
+so it is meant to refresh any generated files we may need.
+Currently only refreshes the ChangeLog files."
+  (setq srcdir (file-name-as-directory (expand-file-name srcdir)))
+  (let* ((wit ".changelog-witness")
+         (prevno (with-temp-buffer
+                   (ignore-errors (insert-file-contents wit))
+                   (if (looking-at (concat archive--revno-re "$"))
+                       (match-string 0)
+                     (error "Can't find previous revision name"))))
+         (new-revno
+          (or (with-temp-buffer
+                (let ((default-directory srcdir))
+                  (call-process "git" nil '(t) nil "rev-parse" "HEAD")
+                  (goto-char (point-min))
+                  (when (looking-at (concat archive--revno-re "$"))
+                    (match-string 0))))
+              (error "Couldn't find the current revision's name")))
+         (pkgs '()))
+    (unless (equal prevno new-revno)
+      (with-temp-buffer
+        (let ((default-directory srcdir))
+          (unless (zerop (call-process "git" nil '(t) nil "diff"
+                                       "--dirstat=cumulative,0"
+                                       prevno))
+            (error "Error signaled by git diff --dirstat %d" prevno)))
+        (goto-char (point-min))
+        (while (re-search-forward "^[ \t.0-9%]* packages/\\([-[:alnum:]]+\\)/$"
+                                  nil t)
+          (push (match-string 1) pkgs))))
+    (let ((default-directory (expand-file-name "packages/")))
+      (dolist (pkg pkgs)
+        (condition-case v
+            (if (file-directory-p pkg)
+                (archive--make-changelog pkg (expand-file-name "packages/"
+                                                               srcdir)))
+          (error (message "Error: %S" v)))))
+    (write-region new-revno nil wit nil 'quiet)
+    ;; Also update the ChangeLog of external packages.
+    (let ((default-directory (expand-file-name "packages/")))
+      (dolist (dir (directory-files "."))
+        (and (not (member dir '("." "..")))
+             (file-directory-p dir)
+             (let ((index (expand-file-name
+                           (concat "packages/" dir "/.git/index")
+                           srcdir))
+                   (cl (expand-file-name "ChangeLog" dir)))
+               (and (file-exists-p index)
+                    (or (not (file-exists-p cl))
+                        (file-newer-than-file-p index cl))))
+             (archive--make-changelog
+              dir (expand-file-name "packages/" srcdir)))))
+    ))
+
+(defun archive--simple-package-p (dir pkg)
+  "Test whether DIR contains a simple package named PKG.
+Return a list (SIMPLE VERSION DESCRIPTION REQ EXTRAS), where
+SIMPLE is non-nil if the package is indeed simple;
+VERSION is the version string of the simple package;
+DESCRIPTION is the brief description of the package;
+REQ is a list of requirements;
+EXTRAS is an alist with additional metadata.
+Otherwise, return nil."
+  (let* ((pkg-file (expand-file-name (concat pkg "-pkg.el") dir))
+        (mainfile (expand-file-name (concat pkg ".el") dir))
+         (files (directory-files dir nil "\\.el\\'")))
+    (setq files (delete (concat pkg "-pkg.el") files))
+    (setq files (delete (concat pkg "-autoloads.el") files))
+    (cond
+     ((and (not (file-exists-p pkg-file))
+           (file-exists-p mainfile))
+      (with-temp-buffer
+       (insert-file-contents mainfile)
+       (goto-char (point-min))
+       (if (not (looking-at ";;;.*---[ \t]*\\(.*?\\)[ \t]*\\(-\\*-.*-\\*-[ \t]*\\)?$"))
+            (error "Can't parse first line of %s" mainfile)
+          ;; Grab the other fields, which are not mandatory.
+          (let* ((description (match-string 1))
+                 (version
+                  (or (archive--strip-rcs-id (lm-header "package-version"))
+                      (archive--strip-rcs-id (lm-header "version"))
+                      (error "Missing `version' header")))
+                 (requires-str (lm-header "package-requires"))
+                 (pt (lm-header "package-type"))
+                 (simple (if pt (equal pt "simple") (= (length files) 1)))
+                 (url (or (lm-header "url")
+                          (format "http://elpa.gnu.org/packages/%s.html" pkg)))
+                 (req
+                  (if requires-str
+                      (mapcar 'archive--convert-require
+                              (car (read-from-string requires-str))))))
+            (list simple version description req (list (cons :url url)))))))
+     ((not (file-exists-p pkg-file))
+      (error "Can find single file nor package desc file in %s" dir)))))
+
+(defun archive--process-simple-package (dir pkg vers desc req extras)
+  "Deploy the contents of DIR into the archive as a simple package.
+Rename DIR/PKG.el to PKG-VERS.el, delete DIR, and return the descriptor."
+  ;; Write DIR/foo.el to foo-VERS.el and delete DIR
+  (rename-file (expand-file-name (concat pkg ".el") dir)
+              (concat pkg "-" vers ".el"))
+  ;; Add the content of the ChangeLog.
+  (let ((cl (expand-file-name "ChangeLog" dir)))
+    (with-current-buffer (find-file-noselect (concat pkg "-" vers ".el"))
+      (goto-char (point-max))
+      (re-search-backward "^;;;.*ends here")
+      (re-search-backward "^(provide")
+      (skip-chars-backward " \t\n")
+      (insert "\n\n;;;; ChangeLog:\n\n")
+      (let* ((start (point))
+             (end (copy-marker start t)))
+        (insert-file-contents cl)
+        (goto-char end)
+        (unless (bolp) (insert "\n"))
+        (while (progn (forward-line -1) (>= (point) start))
+          (insert ";; ")))
+      (set (make-local-variable 'backup-inhibited) t)
+      (basic-save-buffer)               ;Less chatty than save-buffer.
+      (kill-buffer)))
+  (delete-directory dir t)
+  (cons (intern pkg) (vector (archive--version-to-list vers)
+                             req desc 'single extras)))
+
+(defun archive--make-changelog (dir srcdir)
+  "Export Git log info of DIR into a ChangeLog file."
+  (message "Refreshing ChangeLog in %S" dir)
+  (let ((default-directory (file-name-as-directory (expand-file-name dir))))
+    (with-temp-buffer
+      (set-buffer-multibyte nil)
+      (let ((coding-system-for-read 'binary)
+            (coding-system-for-write 'binary))
+        (if (file-readable-p "ChangeLog") (insert-file-contents "ChangeLog"))
+        (let ((old-md5 (md5 (current-buffer))))
+          (erase-buffer)
+          (let ((default-directory
+                  (file-name-as-directory (expand-file-name dir srcdir))))
+            (call-process "git" nil (current-buffer) nil
+                          "log" "--date=short"
+                          "--format=%cd  %aN  <%ae>%n%n%w(80,8,8)%B%n"
+                          "."))
+          (tabify (point-min) (point-max))
+          (goto-char (point-min))
+          (while (re-search-forward "\n\n\n+" nil t)
+            (replace-match "\n\n"))
+          (if (equal old-md5 (md5 (current-buffer)))
+              (message "ChangeLog's md5 unchanged for %S" dir)
+            (write-region (point-min) (point-max) "ChangeLog" nil 'quiet)))))))
+
+(defun archive--alist-to-plist (alist)
+  (apply #'nconc (mapcar (lambda (pair) (list (car pair) (cdr pair))) alist)))
+
+(defun archive--plist-to-alist (plist)
+  (let (alist)
+    (while plist
+      (let ((value (cadr plist)))
+        (when value
+          (push (cons (car plist) value)
+                alist)))
+      (setq plist (cddr plist)))
+    alist))
+
+(defun archive--process-multi-file-package (dir pkg)
+  "Deploy the contents of DIR into the archive as a multi-file package.
+Rename DIR/ to PKG-VERS/, and return the descriptor."
+  (let* ((exp (archive--multi-file-package-def dir pkg))
+        (vers (nth 2 exp))
+         (req-exp (nth 4 exp))
+        (req (mapcar 'archive--convert-require
+                      (if (eq 'quote (car-safe req-exp)) (nth 1 req-exp)
+                        (when req-exp
+                          (error "REQ should be a quoted constant: %S"
+                                 req-exp)))))
+         (extras (archive--plist-to-alist (nthcdr 5 exp))))
+    (unless (equal (nth 1 exp) pkg)
+      (error (format "Package name %s doesn't match file name %s"
+                    (nth 1 exp) pkg)))
+    (rename-file dir (concat pkg "-" vers))
+    (cons (intern pkg) (vector (archive--version-to-list vers)
+                               req (nth 3 exp) 'tar extras))))
+
+(defun archive--multi-file-package-def (dir pkg)
+  "Return the `define-package' form in the file DIR/PKG-pkg.el."
+  (let ((pkg-file (expand-file-name (concat pkg "-pkg.el") dir)))
+    (with-temp-buffer
+      (unless (file-exists-p pkg-file)
+       (error "File not found: %s" pkg-file))
+      (insert-file-contents pkg-file)
+      (goto-char (point-min))
+      (read (current-buffer)))))
+
+(defun archive--refresh-pkg-file ()
+  (let* ((dir (directory-file-name default-directory))
+         (pkg (file-name-nondirectory dir))
+         (simple-p (archive--simple-package-p dir pkg)))
+    (if simple-p
+        (progn
+          ;; (message "Refreshing pkg description of %s" pkg)
+          (apply 'archive--write-pkg-file dir pkg (cdr simple-p)))
+      ;; (message "Not refreshing pkg description of %s" pkg)
+      )))
+
+(defun archive--write-pkg-file (pkg-dir name version desc requires extras)
+  (let ((pkg-file (expand-file-name (concat name "-pkg.el") pkg-dir))
+       (print-level nil)
+        (print-quoted t)
+       (print-length nil))
+    (write-region
+     (concat (format ";; Generated package description from %s.el\n"
+                    name)
+            (prin1-to-string
+              (nconc
+               (list 'define-package
+                     name
+                     version
+                     desc
+                     (list 'quote
+                           ;; Turn version lists into string form.
+                           (mapcar
+                            (lambda (elt)
+                              (list (car elt)
+                                    (package-version-join (cadr elt))))
+                            requires)))
+               (archive--alist-to-plist extras)))
+            "\n")
+     nil
+     pkg-file)))
+
+;;; Make the HTML pages for online browsing.
+
+(defun archive--html-header (title)
+  (format "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">
+<html>
+<head>
+  <title>%s</title>
+  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">
+</head>
+<body>
+<h1 align=\"center\">%s</h1>\n"
+          title title))
+
+(defun archive--html-bytes-format (bytes) ;Aka memory-usage-format.
+  (setq bytes (/ bytes 1024.0))
+  (let ((units '(;; "B"
+                 "kB" "MB" "GB" "TB")))
+    (while (>= bytes 1024)
+      (setq bytes (/ bytes 1024.0))
+      (setq units (cdr units)))
+    (cond
+     ;; ((integerp bytes) (format "%4d%s" bytes (car units)))
+     ((>= bytes 100) (format "%4.0f%s" bytes (car units)))
+     ((>= bytes 10) (format "%4.1f%s" bytes (car units)))
+     (t (format "%4.2f%s" bytes (car units))))))
+
+(defun archive--get-prop (prop name srcdir mainsrcfile)
+  (let ((kprop (intern (format ":%s" (downcase prop)))))
+    (or
+     (let ((pkgdescfile (expand-file-name (format "%s-pkg.el" name)
+                                          srcdir)))
+       (when (file-readable-p pkgdescfile)
+         (with-temp-buffer
+           (insert-file-contents pkgdescfile)
+           (let ((desc (read (current-buffer))))
+             (plist-get (cdr desc) kprop)))))
+     (when (file-readable-p mainsrcfile)
+       (with-temp-buffer
+         (insert-file-contents mainsrcfile)
+         (lm-header prop))))))
+
+(defun archive--get-section (hsection fsection srcdir mainsrcfile)
+  (when (consp fsection)
+    (while (cdr-safe fsection)
+      (setq fsection
+            (if (file-readable-p (expand-file-name (car fsection) srcdir))
+                (car fsection)
+              (cdr fsection))))
+    (when (consp fsection) (setq fsection (car fsection))))
+  (cond
+   ((file-readable-p (expand-file-name fsection srcdir))
+    (with-temp-buffer
+      (insert-file-contents (expand-file-name fsection srcdir))
+      (buffer-string)))
+   ((file-readable-p mainsrcfile)
+    (with-temp-buffer
+      (insert-file-contents mainsrcfile)
+      (let ((start (lm-section-start hsection)))
+        (when start
+          (insert
+           (prog1
+               (buffer-substring start (lm-section-end hsection))
+             (erase-buffer)))
+          (emacs-lisp-mode)
+          (goto-char (point-min))
+          (delete-region (point) (line-beginning-position 2))
+          (uncomment-region (point-min) (point-max))
+          (when (looking-at "^\\([ \t]*\n\\)+")
+            (replace-match ""))
+          (goto-char (point-max))
+          (skip-chars-backward " \t\n")
+          (delete-region (point) (point-max))
+          (buffer-string)))))))
+
+(defun archive--quote (txt)
+  (replace-regexp-in-string "<" "&lt;"
+                            (replace-regexp-in-string "&" "&amp;" txt)))
+
+(defun archive--insert-repolinks (name srcdir mainsrcfile url)
+  (if url
+      (insert (format "<p>Origin: <a href=%S>%s</a></p>\n"
+                      url (archive--quote url)))
+    (let* ((externals
+            (with-temp-buffer
+              (insert-file-contents
+               (expand-file-name "../../../elpa/externals-list" srcdir))
+              (read (current-buffer))))
+           (external (eq :external (nth 1 (assoc name externals))))
+           (git-sv "http://git.savannah.gnu.org/")
+           (urls (if external
+                     '("cgit/emacs/elpa.git/?h=externals/"
+                       "gitweb/?p=emacs/elpa.git;a=shortlog;h=refs/heads/externals/")
+                   '("cgit/emacs/elpa.git/tree/packages/"
+                     "gitweb/?p=emacs/elpa.git;a=tree;f=packages/"))))
+      (insert (format
+               (concat "<p>Browse repository: <a href=%S>%s</a>"
+                       " or <a href=%S>%s</a></p>\n")
+               (concat git-sv (nth 0 urls) name)
+               'CGit
+               (concat git-sv (nth 1 urls) name)
+               'Gitweb)))))
+
+(defun archive--html-make-pkg (pkg files)
+  (let* ((name (symbol-name (car pkg)))
+         (latest (package-version-join (aref (cdr pkg) 0)))
+         (srcdir (expand-file-name name "../../build/packages"))
+         (mainsrcfile (expand-file-name (format "%s.el" name) srcdir))
+         (desc (aref (cdr pkg) 2)))
+    (with-temp-buffer
+      (insert (archive--html-header (format "GNU ELPA - %s" name)))
+      (insert (format "<p>Description: %s</p>\n" (archive--quote desc)))
+      (let* ((file (cdr (assoc latest files)))
+             (attrs (file-attributes file)))
+        (insert (format "<p>Latest: <a href=%S>%s</a>, %s, %s</p>\n"
+                        file (archive--quote file)
+                        (format-time-string "%Y-%b-%d" (nth 5 attrs))
+                        (archive--html-bytes-format (nth 7 attrs)))))
+      (let ((maint (archive--get-prop "Maintainer" name srcdir mainsrcfile)))
+        (when maint
+          (insert (format "<p>Maintainer: %s</p>\n" (archive--quote maint)))))
+      (archive--insert-repolinks name srcdir mainsrcfile
+                                 (cdr (assoc :url (aref (cdr pkg) 4))))
+      (let ((rm (archive--get-section
+                 "Commentary" '("README" "README.rst"
+                                ;; Most README.md files seem to be currently
+                                ;; worse than the Commentary: section :-(
+                                ;; "README.md"
+                                "README.org")
+                 srcdir mainsrcfile)))
+        (when rm
+          (write-region rm nil (concat name "-readme.txt"))
+          (insert "<h2>Full description</h2><pre>\n" (archive--quote rm)
+                  "\n</pre>\n")))
+      (unless (< (length files) 2)
+        (insert (format "<h2>Old versions</h2><table cellpadding=\"3\" border=\"1\">\n"))
+        (dolist (file files)
+          (unless (equal (pop file) latest)
+            (let ((attrs (file-attributes file)))
+              (insert (format "<tr><td><a href=%S>%s</a></td><td>%s</td><td>%s</td>\n"
+                              file (archive--quote file)
+                              (format-time-string "%Y-%b-%d" (nth 5 attrs))
+                              (archive--html-bytes-format (nth 7 attrs)))))))
+        (insert "</table>\n"))
+      (let ((news (archive--get-section
+                   "News" '("NEWS" "NEWS.rst" "NEWS.md" "NEWS.org")
+                   srcdir mainsrcfile)))
+        (when news
+          (insert "<h2>News</h2><pre>\n" (archive--quote news) "\n</pre>\n")))
+      (insert "</body>\n")
+      (write-region (point-min) (point-max) (concat name ".html")))))
+
+(defun archive--html-make-index (pkgs)
+  (with-temp-buffer
+    (insert (archive--html-header "GNU ELPA Packages"))
+    (insert "<table cellpadding=\"3\" border=\"1\">\n")
+    (insert "<tr><th>Package</th><th>Version</th><th>Description</th></tr>\n")
+    (dolist (pkg pkgs)
+      (insert (format "<tr><td><a href=\"%s.html\">%s</a></td><td>%s</td><td>%s</td></tr>\n"
+                      (car pkg) (car pkg)
+                      (package-version-join (aref (cdr pkg) 0))
+                      (aref (cdr pkg) 2))))
+    (insert "</table></body>\n")
+    (write-region (point-min) (point-max) "index.html")))
+
+(defun batch-html-make-index ()
+  (let ((packages (make-hash-table :test #'equal))
+        (archive-contents
+         (with-temp-buffer
+           (insert-file-contents "archive-contents")
+           (goto-char (point-min))
+           ;; Skip the first element which is a version number.
+           (cdr (read (current-buffer))))))
+    (dolist (file (directory-files default-directory nil))
+      (cond
+       ((member file '("." ".." "elpa.rss" "index.html" "archive-contents")))
+       ((string-match "\\.html\\'" file))
+       ((string-match "-readme\\.txt\\'" file)
+        (let ((name (substring file 0 (match-beginning 0))))
+          (puthash name (gethash name packages) packages)))
+       ((string-match "-\\([0-9][^-]*\\)\\.\\(tar\\|el\\)\\'" file)
+        (let ((name (substring file 0 (match-beginning 0)))
+              (version (match-string 1 file)))
+          (push (cons version file) (gethash name packages))))
+       (t (message "Unknown file %S" file))))
+    (dolist (pkg archive-contents)
+      (archive--html-make-pkg pkg (gethash (symbol-name (car pkg)) packages)))
+    ;; FIXME: Add (old?) packages that are in `packages' but not in
+    ;; archive-contents.
+    (archive--html-make-index archive-contents)))
+
+;;; Maintain external packages.
+
+(defconst archive--elpa-git-url "git://git.sv.gnu.org/emacs/elpa")
+
+(defun archive-add/remove/update-externals ()
+  (let ((exts (with-current-buffer (find-file-noselect "externals-list")
+                (goto-char (point-min))
+                (read (current-buffer)))))
+    (let ((default-directory (expand-file-name "packages/")))
+      ;; Remove "old/odd" externals.
+      (dolist (dir (directory-files "."))
+        (cond
+         ((member dir '("." "..")) nil)
+         ((assoc dir exts) nil)
+         ((file-directory-p (expand-file-name (format "%s/.git" dir)))
+          (let ((status
+                 (with-temp-buffer
+                   (let ((default-directory (file-name-as-directory
+                                             (expand-file-name dir))))
+                     (call-process "git" nil t nil "status" "--porcelain")
+                     (buffer-string)))))
+            (if (zerop (length status))
+                (progn (delete-directory dir 'recursive t)
+                       (message "Deleted all of %s" dir))
+              (message "Keeping leftover unclean %s:\n%s" dir status))))))
+      (pcase-dolist (`(,dir ,kind ,_url) exts)
+        (cond
+         ((eq kind :subtree) nil)       ;Nothing to do.
+         ((not (eq kind :external))
+          (message "Unknown external package kind `%S' for %s" kind dir))
+         ((not (file-exists-p dir))
+          (let* ((branch (concat "externals/" dir))
+                 (output
+                  (with-temp-buffer
+                    ;; FIXME: Use git-new-workdir!
+                    (call-process "git" nil t nil "clone"
+                                  "--reference" ".." "--branch" branch
+                                  archive--elpa-git-url dir)
+                    (buffer-string))))
+            (message "Cloning branch %s:\n%s" dir output)))
+         ((not (file-directory-p (concat dir "/.git")))
+          (message "%s is in the way of an external, please remove!" dir))
+         (t
+          (let ((default-directory (file-name-as-directory
+                                    (expand-file-name dir))))
+            (with-temp-buffer
+              (message "Running git pull in %S" default-directory)
+              (call-process "git" nil t nil "pull")
+              (message "Updated %s:%s" dir (buffer-string))))
+          ))))))
+
+(provide 'archive-contents)
+;;; archive-contents.el ends here
diff --git a/admin/forward-diffs.py b/admin/forward-diffs.py
new file mode 100755 (executable)
index 0000000..b4372fb
--- /dev/null
@@ -0,0 +1,431 @@
+#!/usr/bin/python
+### forward-diffs.py --- forward emacs-diffs mails to maintainers
+
+## Copyright (C) 2012, 2013 Free Software Foundation, Inc.
+
+## Author: Glenn Morris <rgm@gnu.org>
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+### Commentary:
+
+## Forward emails from an emacs-diffs style mailing list to the
+## maintainer(s) of the modified files.
+
+## Two modes of operation:
+
+## 1) Create the maintfile (really this is just an optimization):
+## forward-diffs.py --create -p packagesdir -m maintfile
+
+## You can start with an empty maintfile and normal operation in 2)
+## will append information as needed.
+
+## 2) Call from eg procmail to forward diffs.  Example usage:
+
+## :0c
+## * ^TO_emacs-elpa-diffs@gnu\.org
+## | forward-diffs.py -p packagedir -m maintfile -l logfile \
+## -o overmaint -s sender
+
+## where 
+
+## packagedir = /path/to/packages
+## sender = your email address
+## logfile = file to write log to (you might want to rotate/compress/examine it)
+## maintfile = file listing files and their maintainers, with format:
+##
+## package1/file1   email1
+## package2/file2   email2,email3
+## package3         email4
+##
+## Use "nomail" for the email field to not send a mail.
+## An entry that is a directory applies to all files in that directory
+## that do not have specific maintainers.
+##
+## overmaint = like maintfile, but takes precedence over it.
+
+### Code:
+
+import optparse
+import sys
+import re
+import email
+import smtplib
+import datetime
+import os
+
+
+## Scan FILE for Author or Maintainer (preferred) headers.
+## Return a list of all email addresses found in MAINTS.
+def scan_file(file, maints):
+
+    try:
+        fd = open( file, 'r')
+    except Exception as err:
+        lfile.write('Error opening file %s: %s\n' % (file, str(err)))
+        return 1
+
+    ## Max number of lines to scan looking for a maintainer.
+    ## (20 seems to be the highest at present).
+    max_lines = 50
+    nline = 0
+    cont = 0
+    type = ""
+
+    for line in fd:
+
+        nline += 1
+
+        if ( nline > max_lines ): break
+
+        ## Try and de-obfuscate.  Worth it?
+        line = re.sub( '(?i) AT ', '@', line )
+        line = re.sub( '(?i) DOT ', '.', line )
+
+        if cont:           # continued header?
+            reg = re.match( ('%s[ \t]+[^:]*?<?([\w.-]+@[\w.-]+)>?' % prefix), line, re.I )
+            if not reg:         # not a continued header
+                cont = 0
+                prefix = ""
+                if ( type == "maint" ): break
+                type = ""
+
+        ## Check for one header immediately after another.
+        if not cont:
+            reg = re.match( '([^ ]+)? *(Author|Maintainer)s?: .*?<?([\w.-]+@[\w.-]+)>?', line, re.I )
+            
+
+        if not reg: continue
+
+        if cont:
+            email = reg.group(1)
+            maints.append(email)
+        else:
+            cont = 1
+            prefix = reg.group(1) or ""
+            type = reg.group(2)
+            email = reg.group(3)
+            type = "maint" if re.search( 'Maintainer', type, re.I ) else "auth"
+            ## maints = [] does the wrong thing.
+            if type == "maint": del maints[:]
+            maints.append(email)
+
+    fd.close()
+
+
+## Scan all the files under dir for maintainer information.
+## Write to stdout, or optional argument outfile (which is overwritten).
+def scan_dir(dir, outfile=None):
+
+    dir = re.sub( '/+$', '', dir) + '/' # ensure trailing /
+
+    if not os.path.isdir(dir):
+        sys.stderr.write('No such directory: %s\n' % dir)
+        sys.exit(1)
+
+    fd = 0
+    if outfile:
+        try:
+            fd = open( outfile, 'w' )
+        except Exception as err:
+            sys.stderr.write("Error opening `%s': %s\n" % (outfile, str(err)))
+            sys.exit(1)
+
+
+    for dirpath, dirnames, filenames in os.walk(dir):
+        for file in filenames:
+            path = os.path.join(dirpath, file)
+            maints = []
+            scan_file(path, maints)
+            ## This would skip printing empty maints.
+            ## That would mean we would scan the file each time for no reason.
+            ## But empty maintainers are an error at present.
+            if not maints: continue
+            path = re.sub( '^%s' % dir, '', path )
+            string = "%-50s %s\n" % (path, ",".join(maints))
+            if fd:
+                fd.write(string)
+            else:
+                print string,
+
+    if fd: fd.close()
+
+
+usage="""usage: %prog <-p /path/to/packages> <-m maintfile>
+   <-l logfile -s sender|--create> [-o overmaintfile] [--prefix prefix]
+   [--sendmail] [--debug]
+Take an emacs-diffs mail on stdin, and forward it to the maintainer(s)."""
+
+parser = optparse.OptionParser()
+parser.set_usage ( usage )
+parser.add_option( "-m", dest="maintfile", default=None,
+                   help="file listing packages and maintainers")
+parser.add_option( "-l", dest="logfile", default=None,
+                   help="file to append output to")
+parser.add_option( "-o", dest="overmaintfile", default=None,
+                   help="override file listing packages and maintainers")
+parser.add_option( "-p", dest="packagedir", default=None,
+                   help="path to packages directory")
+parser.add_option( "-s", dest="sender", default=None,
+                   help="sender address for forwards")
+parser.add_option( "--create", dest="create", default=False,
+                   action="store_true", help="create maintfile")
+parser.add_option( "--no-scan", dest="noscan", default=True,
+                   action="store_true",
+                   help="don't scan for maintainers; implies --no-update")
+parser.add_option( "--no-update", dest="noupdate", default=False,
+                   action="store_true",
+                   help="do not update the maintfile")
+parser.add_option( "--prefix", dest="prefix", default="packages/",
+                   help="prefix to remove from modified file name [default: %default]")
+parser.add_option( "--sendmail", dest="sendmail", default=False,
+                   action="store_true", help="use sendmail rather than smtp")
+parser.add_option( "--debug", dest="debug", default=False,
+                   action="store_true", help="debug only, do not send mail")
+
+
+( opts, args ) = parser.parse_args()
+
+
+if not opts.maintfile:
+    parser.error('No maintfile specified')
+
+if not opts.packagedir:
+    parser.error('No packagedir specified')
+
+if not os.path.isdir(opts.packagedir):
+    sys.stderr.write('No such directory: %s\n' % opts.packagedir)
+    sys.exit(1)
+
+
+if not opts.create:
+    if not opts.logfile:
+        parser.error('No logfile specified')
+
+    if not opts.sender:
+        parser.error('No sender specified')
+
+
+try:
+    lfile = open( opts.logfile, 'a' )
+except Exception as err:
+    sys.stderr.write('Error opening logfile: %s\n' % str(err))
+    sys.exit(1)
+
+
+try:
+    mfile = open( opts.maintfile, 'r' )
+except Exception as err:
+    lfile.write('Error opening maintfile: %s\n' % str(err))
+    sys.exit(1)
+
+## Create the maintfile.
+if opts.create:
+    scan_dir( opts.packagedir, opts.maintfile )
+    sys.exit()
+
+
+## Each element is package/file: maint1, maint2, ...
+maints = {}
+
+for line in mfile:
+    if re.match( '#| *$', line ): continue
+    ## FIXME error here if empty maintainer.
+    (pfile, maint) = line.split()
+    maints[pfile] = maint.split(',')
+
+mfile.close()
+
+
+if opts.overmaintfile:
+    try:
+        ofile = open( opts.overmaintfile, 'r' )
+    except Exception as err:
+        lfile.write('Error opening overmaintfile: %s\n' % str(err))
+        sys.exit(1)
+
+    for line in ofile:
+        if re.match( '#| *$', line ): continue
+        (pfile, maint) = line.split()
+        maints[pfile] = maint.split(',')
+
+    ofile.close()
+
+
+stdin = sys.stdin
+
+text = stdin.read()
+
+
+resent_via = 'GNU Emacs diff forwarder'
+
+message = email.message_from_string( text )
+
+(msg_name, msg_from) = email.utils.parseaddr( message['from'] )
+
+lfile.write('\nDate: %s\n' % str(datetime.datetime.now()))
+lfile.write('Message-ID: %s\n' % message['message-id'])
+lfile.write('From: %s\n' % msg_from)
+
+if resent_via == message['x-resent-via']:
+    lfile.write('Mail loop; aborting\n')
+    sys.exit(1)
+
+
+start = False
+pfiles_seen = []
+maints_seen = []
+
+for line in text.splitlines():
+
+    # Look for and process things that look like (Git):
+    #
+    # Summary of changes:
+    #  packages/vlf/vlf.el |    2 +-
+    #  1 files changed, 1 insertions(+), 1 deletions(-)
+
+    #BZR: if re.match( 'modified:$', line ):
+    if re.match( 'Summary of changes:$', line ):
+        start = True
+        continue
+
+    if not start: continue
+
+    ## An empty line or a line with non-empty first character.
+    if re.match( '( *$|[^ ])', line ): break
+    # Any line that doesn't match the diffstat format (Git).
+    if not re.match( ' [^ ]+ +\| ', line ):
+        lfile.write('Stop scanning at: %s\n' % line)
+        break
+
+    if opts.prefix:
+        #BZR: reg = re.match( '%s([^ ]+)' % opts.prefix, line.strip() )
+        reg = re.match( ' %s([^ ]+)' % opts.prefix, line )
+        if not reg:
+            lfile.write('Skip: %s\n' % line)
+            continue
+        pfile = reg.group(1)
+    else:
+        pfile = line.strip()
+
+
+    lfile.write('File: %s\n' % pfile)
+
+    ## Should not be possible for files (rather than packages)...
+    if pfile in pfiles_seen:
+        lfile.write('Already seen this file\n')
+        continue
+
+    pfiles_seen.append(pfile)
+
+
+    if not pfile in maints:
+
+        lfile.write('Unknown maintainer\n')
+
+        if not opts.noscan:
+
+            lfile.write('Scanning file...\n')
+            thismaint = []
+            thisfile = os.path.join( opts.packagedir, pfile )
+            # scan_file( thisfile, thismaint )
+
+            if thismaint:
+                maints[pfile] = thismaint
+
+                ## Append maintainer to file.
+                if not opts.noupdate:
+                    try:
+                        mfile = open( opts.maintfile, 'a' )
+                        string = "%-50s %s\n" % (pfile, ",".join(thismaint))
+                        mfile.write(string)
+                        mfile.close()
+                        lfile.write('Appended to maintfile\n')
+                    except Exception as err:
+                        lfile.write('Error appending to maintfile: %s\n' % 
+                                    str(err))
+
+    ## Didn't scan, or scanning did not work.
+    ## Look for a directory maintainer.
+    if not pfile in maints:
+        lfile.write('No file maintainer, trying directories...\n')
+        while True:
+            (pfile, tail) = os.path.split(pfile)
+            if not pfile: break
+            if pfile in maints: break
+
+
+    if not pfile in maints:
+        lfile.write('No maintainer, skipping\n')
+        continue
+
+
+    for maint in maints[pfile]:
+
+        lfile.write('Maint: %s\n' % maint)
+
+
+        if maint in maints_seen:
+            lfile.write('Already seen this maintainer\n')
+            continue
+
+        maints_seen.append(maint)
+
+
+        if maint == "nomail":
+            lfile.write('Not resending, no mail is requested\n')
+            continue
+
+
+        if maint == msg_from:
+            lfile.write('Not resending, since maintainer = committer\n')
+            continue
+
+
+        forward = message
+        forward.add_header('X-Resent-Via', resent_via)
+        forward.add_header('Resent-To', maint)
+        forward.add_header('Resent-From', opts.sender)
+
+        lfile.write('Resending via %s...\n' % ('sendmail'
+                    if opts.sendmail else 'smtp') )
+
+
+        if opts.debug: continue
+
+
+        if opts.sendmail:
+             s = os.popen("/usr/sbin/sendmail -i -f %s %s" %
+                          (opts.sender, maint), "w")
+             s.write(forward.as_string())
+             status = s.close()
+             if status:
+                 lfile.write('Sendmail exit status: %s\n' % status)
+
+        else:
+
+            try:
+                s = smtplib.SMTP('localhost')
+            except Exception as err:
+                lfile.write('Error opening smtp: %s\n' % str(err))
+                sys.exit(1)
+
+            try:
+                s.sendmail(opts.sender, maint, forward.as_string())
+            except Exception as err:
+                lfile.write('Error sending smtp: %s\n' % str(err))
+
+            s.quit()
+
+### forward-diffs.py ends here
diff --git a/admin/org-synch.el b/admin/org-synch.el
new file mode 100644 (file)
index 0000000..cc7e923
--- /dev/null
@@ -0,0 +1,22 @@
+(defun org-synch (package-file)
+  (let* ((archive-file "archive-contents")
+        (package-name 'org)
+         (date (substring package-file 4 12))
+         (date-int (string-to-number date))
+        contents entry)
+    (unless (and (integerp date-int)
+                 (> date-int 20100000)
+                 (< date-int 21000000))
+      (error "Package date is bad"))
+    (unless (file-exists-p package-file)
+      (error "No package file found"))
+    (when (file-exists-p archive-file)
+      (find-file archive-file)
+      (setq contents (read (current-buffer))
+           entry (assq package-name contents))
+      (unless entry
+       (error "No entry for %s in archive-contents" package-name))
+      (aset (cdr entry) 0 (version-to-list date))
+      (erase-buffer)
+      (insert (pp-to-string contents) "\n")
+      (save-buffer 0))))
diff --git a/admin/org-synch.sh b/admin/org-synch.sh
new file mode 100755 (executable)
index 0000000..02696b2
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# this script expects $1 to be the download directory and $2 to have org-synch.el
+
+PATH="/bin:/usr/bin:/usr/local/bin:${PATH}"
+
+pkgname=`curl -s http://orgmode.org/elpa/|perl -ne 'push @f, $1 if m/(org-\d{8}\.tar)/; END { @f = sort @f; print "$f[-1]\n"}'`
+
+cd $1
+wget -q http://orgmode.org/elpa/${pkgname} -O ${pkgname}-tmp
+if [ -f ${pkgname}-tmp ]; then
+    rm -f org*.tar
+    mv ${pkgname}-tmp ${pkgname} && \
+    emacs -batch -l $2/org-synch.el --eval "(org-synch \"${pkgname}\")"
+fi
diff --git a/admin/overmaint.txt b/admin/overmaint.txt
new file mode 100644 (file)
index 0000000..328d1aa
--- /dev/null
@@ -0,0 +1,12 @@
+# This file lists files and the email addresses of their maintainers.
+# It is used by the forward-diffs.py script.
+# This file overrides the automatically generated maintfile.
+# Use nomail to suppress sending mail.
+# File names are relative to the packages/ directory.
+# Lines starting with # are ignored.
+# Examples:
+#some-package/some-file.el    nomail
+#some-package/otherfile.el    none@example.com
+
+register-alist/register-list.el  bzg@gnu.org
+windresize/windresize.el.el      bzg@gnu.org
diff --git a/admin/update-archive.sh b/admin/update-archive.sh
new file mode 100755 (executable)
index 0000000..9d8d9c7
--- /dev/null
@@ -0,0 +1,106 @@
+#!/bin/sh -x
+
+makelog=""
+buildir="$(pwd)"
+
+export LANG=C
+case "$1" in
+    "--batch")
+        makelog="$(pwd)/make.log"
+        exec >"$makelog" 2>&1
+        ;;
+esac
+
+# Send an email to warn about a problem.
+signal_error () {
+    title="$*"
+    if [ "" = "$makelog" ]; then
+        echo "Error: $title"
+    else
+        mx_gnu_org="$(host -t mx gnu.org | sed 's/.*[  ]//')"
+        (sleep 5; echo "HELO elpa.gnu.org"
+         sleep 1; echo "MAIL FROM: <elpa@elpa.gnu.org>"
+         sleep 1; echo "RCPT TO: <emacs-elpa-diffs@gnu.org>"
+         sleep 1; echo "DATA"
+         sleep 1; cat <<ENDDOC
+From: ELPA update <elpa@elpa.gnu.org>
+To: emacs-elpa-diffs@gnu.org
+Subject: $title
+
+ENDDOC
+         cat "$makelog"
+         echo "."; sleep 1) | telnet "$mx_gnu_org" smtp
+    fi
+    exit 1
+}
+
+
+cd ../elpa
+
+# Fetch changes.
+git pull || signal_error "git pull failed"
+
+# Remember we're inside the "elpa" branch which we don't want to trust,
+# So always refer to the makefile and admins files from $builddir".
+
+# Setup and update externals.
+emacs --batch -l "$buildir/admin/archive-contents.el" \
+      -f archive-add/remove/update-externals
+
+make -f "$buildir/GNUmakefile" check_copyrights ||
+    signal_error "check_copyright failed"
+
+cd "$buildir"
+
+rsync -av --delete \
+      --exclude=ChangeLog \
+      --exclude=.git \
+      --exclude='*.elc' \
+      --exclude='*~' \
+      --exclude='*-autoloads.el' \
+      ../elpa/packages ./
+
+# Refresh the ChangeLog files.  This needs to be done in
+# the source tree, because it needs the VCS data!
+emacs -batch -l admin/archive-contents.el \
+      -eval '(archive-prepare-packages "../elpa")'
+
+
+rm -rf archive                  # In case there's one left over!
+make archive-full || {
+    signal_error "make archive-full failed"
+}
+latest="emacs-packages-latest.tgz"
+(cd archive
+ tar zcf "$latest" packages)
+(cd ../
+ mkdir -p staging/packages
+ # Not sure why we have `staging-old', but let's keep it for now.
+ rm -rf staging-old
+ cp -a staging staging-old
+ # Move new files into place but don't throw out old package versions.
+ for f in build/archive/packages/*; do
+     dst="staging/packages/$(basename "$f")"
+     # Actually, let's never overwrite an existing version.  So changes can
+     # be installed without causing a new package to be built until the
+     # version field is changed.  Some files need to be excluded from the
+     # "immutable" policy, most importantly "archive-contents"
+     # and "*-readme.txt".
+     case $dst in
+         */archive-contents | *-readme.txt ) mv "$f" "$dst" ;;
+         * ) if [ -r "$dst" ]
+             then rm "$f"
+             else
+                 # FIXME: Announce the new package/version on
+                 # gnu.emacs.sources!
+                 mv "$f" "$dst"
+             fi ;;
+     esac
+ done
+ mv build/archive/"$latest" staging/
+ rm -rf build/archive)
+
+# Make the HTML and readme.txt files.
+(cd ../staging/packages
+ emacs --batch -l ../../build/admin/archive-contents.el \
+       --eval '(batch-html-make-index)')
diff --git a/copyright_exceptions b/copyright_exceptions
new file mode 100644 (file)
index 0000000..450facd
--- /dev/null
@@ -0,0 +1,55 @@
+./auctex/latex.el:   "pounds" "copyright"
+./auctex/multi-prompt.el
+./auctex/plain-tex.el:   "copyright"
+./auctex/style/amsart.el
+./auctex/style/amsbook.el
+./auctex/style/amsbsy.el
+./auctex/style/amsmath.el:;; FIXME: What about the copyright for <= 2001?
+./auctex/style/amsopn.el
+./auctex/style/amstext.el
+./auctex/style/article.el
+./auctex/style/beamer.el
+./auctex/style/book.el
+./auctex/style/czech.el
+./auctex/style/danish.el
+./auctex/style/dk.el
+./auctex/style/dutch.el
+./auctex/style/foils.el
+./auctex/style/german.el
+./auctex/style/graphics.el
+./auctex/style/j-article.el
+./auctex/style/j-book.el
+./auctex/style/j-report.el
+./auctex/style/jarticle.el
+./auctex/style/jbook.el
+./auctex/style/jreport.el
+./auctex/style/jsarticle.el
+./auctex/style/jsbook.el
+./auctex/style/jurabib.el:;; you assign the copyright to the FSF.
+./auctex/style/latexinfo.el:     '("copyright" nil)
+./auctex/style/ngerman.el
+./auctex/style/plfonts.el
+./auctex/style/plhb.el
+./auctex/style/report.el
+./auctex/style/scrartcl.el
+./auctex/style/scrbook.el
+./auctex/style/scrlttr2.el
+./auctex/style/scrpage2.el
+./auctex/style/scrreprt.el
+./auctex/style/slovak.el
+./auctex/style/swedish.el
+./auctex/style/virtex.el
+./auctex/tex-fold.el:    ("(C)" ("copyright"))
+./auctex/tex-info.el:   '("copyright" nil)
+./muse/htmlize-hack.el
+./uni-confusables/gen-confusables.el:      (insert ";; Copyright (C) 1991-2009, 2010 Unicode, Inc.
+./uni-confusables/gen-confusables.el:;; for the copyright and permission notice.\n\n")
+./uni-confusables/uni-confusables.el
+./uni-confusables/uni-confusables.el:;; Copyright (C) 1991-2009, 2010 Unicode, Inc.
+./uni-confusables/uni-confusables.el:;; for the copyright and permission notice.
+./w3/w3-cus.el:    "copyright" "bookmark" "help" "made" "contents" "top")
+./w3/w3-cus.el:  ;; Glossary, Copyright, Chapter, Section, Subsection, Appendix,
+./w3/w3-latex.el:    (copy . "\\copyright ")
+./w3/w3-toolbar.el:     "Copyright"]
+./w3/w3-toolbar.el:     (w3-fetch (w3-link-is-defined "copyright"))
+./w3/w3-toolbar.el:     (w3-link-is-defined "copyright")
diff --git a/externals-list b/externals-list
new file mode 100644 (file)
index 0000000..5a6e2df
--- /dev/null
@@ -0,0 +1,37 @@
+;; -*- emacs-lisp -*-
+
+;; List of packages that are maintained externally.
+;; The list is made of elements of the form (NAME KIND URL).
+;;
+;; Where NAME is the name of the package;
+;;
+;; KIND can be one of:
+;;  :subtree  = a "git subtree" in the `master' branch.
+;;  :external = kept in a separate `externals/<name>' branch.
+;;
+;; And URL is the URL of the remote git repository that we want to track.
+;; It can be nil, in which case we don't track anything (useless for
+;; :subtree, but not for :external).
+
+;; The FIXMEs indicate that the branch can't be merged as is because it needs
+;; some manual intervention (typically, because the two branches have
+;; diverged).
+
+(("ack"                        :subtree "https://github.com/leoliu/ack-el")
+ ("auctex"             :external "git://git.sv.gnu.org/auctex.git")
+ ("coffee-mode"                :subtree "https://github.com/defunkt/coffee-mode")
+ ("company"            :subtree "https://github.com/company-mode/company-mode.git")
+ ("dismal"             :external nil)
+ ("eldoc-eval"         :subtree "https://github.com/thierryvolpiatto/eldoc-eval.git")
+ ("enwc"               :subtree "bzr::bzr://bzr.savannah.nongnu.org/enwc/trunk")
+ ("f90-interface-browser" :subtree "https://github.com/wence-/f90-iface")
+ ("ggtags"             :subtree "https://github.com/leoliu/ggtags")
+ ("ioccur"             :subtree "https://github.com/thierryvolpiatto/ioccur.git")
+ ("js2-mode"           :subtree "https://github.com/mooz/js2-mode.git")
+ ;;FIXME:("org"                :external ??) ;; Need to introduce snapshots!!
+ ("temp-buffer-browse"  :subtree "https://github.com/leoliu/temp-buffer-browse")
+ ;;FIXME:("vlf"                :subtree ??)
+ ("w3"                 :external nil)
+ ("websocket"          :subtree "https://github.com/ahyatt/emacs-websocket.git")
+ ;;FIXME:("yasnippet"  :subtree "https://github.com/capitaomorte/yasnippet.git")
+ )
diff --git a/html/index.html b/html/index.html
new file mode 100644 (file)
index 0000000..e734c88
--- /dev/null
@@ -0,0 +1,23 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+  <title>GNU Emacs Lisp Package Archive</title>
+  <link rel="icon" type="image/png" href="gnu-head-mini.png">
+  <link rel="stylesheet" type="text/css" href="layout.css">
+</head>
+<body>
+
+<h1>GNU Emacs Lisp Package Archive</h1>
+
+<p>
+This is the default package repository for 
+<a href="http://www.gnu.org/software/emacs/">GNU Emacs</a>.
+
+<p>
+To use it, type <tt>M-x list-packages</tt> in Emacs.
+(This requires Emacs version 24.1 or higher.)
+
+<p>
+  You can grab the <a href="emacs-packages-latest.tgz">latest package snapshot</a> or look at the <a href="/packages">package list</a> directly.
+</body>
+</html>
diff --git a/html/layout.css b/html/layout.css
new file mode 100644 (file)
index 0000000..f6c1395
--- /dev/null
@@ -0,0 +1,87 @@
+/* This is heavily cut-down version of http://www.gnu.org/layout.css */
+
+
+/*
+layout.css -- css stylesheet used on www.gnu.org
+
+Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+*/
+
+html, body{
+        padding: 0;
+        color: #35382a;
+        max-width: 58em; margin: 0 auto 0; position: relative; min-width: 902px;
+        padding-left: 10px; padding-right: 10px;
+        background-color: #fff;  padding-bottom: 1.8em;  margin-top: 0.5em; 
+}
+
+body{
+    font-family: sans-serif;
+}
+
+a:hover{ color: red; }
+
+h1 {
+ background-color: #3465a4; color: white; font-size: 2em;
+ margin-bottom: 0.3em; font-weight:bold; text-align: center; line-height: 1.6em; }
+
+h2, h3, {line-height: 1.5em;}
+
+h2{ font-size: 1.6em; }
+
+h3{ font-size: 1.3em; }
+
+img{ border: 0; }
+
+.nocenter{ text-align: left; }
+
+ul { list-style: square; margin-left: 1.4em; list-style-image:url(bullet.gif);  }
+
+ol{ list-style: decimal; margin-left: 1.9em; }
+
+li, dd,  p{
+    padding-bottom: 1em; line-height: 1.5em; }
+
+dt{ font-weight: bold;  }
+
+pre {
+padding-left: 1.5em;
+padding-right: 1.5em;
+margin-top: 1em;
+margin-bottom: 1em;
+font-size: 0.9em;
+display: block;
+background-color: #eeeeee;
+color: #000000;
+font-family: monospace;
+}
+
+strong, b{ font-weight: bold; }
+
+em, i, var{ font-style: italic; }
+
+blockquote{ margin: 1em; font-style: italic; }
+
+code, kbd, samp, tt{ font-family: monospace; }
+
+.center{ text-align:center; }
+
+.big{ font-size: 130%; padding-top: 0.7em; }
+
+.inline-list li { display: inline }
+
+.highlight{background-color: #ff6;}
+
+h2 a{color: yellow !important;}
diff --git a/packages/README b/packages/README
new file mode 100644 (file)
index 0000000..5b1c430
--- /dev/null
@@ -0,0 +1,49 @@
+This directory contains most of the source code of the GNU ELPA packages.
+
+Each directory in here corresponds to a package, which can be
+either a single-file package or a multifile package.
+
+A nightly cron job refreshes the GNU ELPA archive from this repository.
+
+This cron job only creates a new package when the "version" (as specified in
+the foo-pkg.el or in the "Version:" header) of a package is modified.
+This means that you can safely work on the next version here without
+worrying about the unstable code making it to GNU ELPA, and simply update
+the "version" when you want to release the new code.
+
+* Format
+
+Each package should follow the ELPA packaging conventions, but there are
+some differences due to the way the deployment script creates the packages
+and the web-pages from this source code:
+- Multi-file packages can put the package metadata in the main <pkg>.el file
+  in the format used for single-file packages, in which case the script
+  will auto-generate the <pkg>-pkg.el file.
+- the "URL:" header (or :url property) can be used to specify the home page
+  of the package, if it's maintained externally.
+- A "News:" section (or "NEWS" file) can/should be used to list the
+  user-visible changes of each version.
+- The "Package-Type: simple" header can be used to force the creation
+  of a single-file package even when there are several Elisp files in
+  the source (the other files will simply be ignored).
+
+* External branches
+
+Some packages are maintained in external branches.  These should be
+appropriately listed in the `externals-list' file.
+There are two different cases: subtrees and externals.
+
+In both cases, a copy of the code is kept in the `elpa' repository and
+should be sync'd with the upstream every once in a while.  This copy may
+include local changes, tho ideally these should be kept to a minimum.
+
+In the `subtree' case, the copy of the code is kept here in the
+corresponding `packages/<pkg>' directory.  You should be able to "git
+merge -s subtree" from the upstream branch.
+
+In the `external' case, the copy of the code is not kept here but in the
+`externals/<pkg>' branch in the `elpa' repository.
+You can check out all the external packages into the `packages' directory
+with the command:
+
+   make externals
diff --git a/packages/ack/README.rst b/packages/ack/README.rst
new file mode 100644 (file)
index 0000000..9d4e14f
--- /dev/null
@@ -0,0 +1,74 @@
+==============================================================
+ Emacs Interface to `Ack <http://beyondgrep.com>`_-like Tools
+==============================================================
+This package brings the full power of `ack <http://beyondgrep.com>`_
+to `emacs <http://www.gnu.org/software/emacs>`_ by allowing you to run
+it seamlessly with its large set of options. Ack-like tools such as
+`the silver searcher <https://github.com/ggreer/the_silver_searcher>`_
+and ``git/hg/bzr grep`` are well supported too.
+
+It is part of `GNU ELPA <http://elpa.gnu.org>`_ - the official package
+archive for `emacs <http://www.gnu.org/software/emacs>`_. Patches,
+feature requests and bug reports are welcome.
+
+Features
+--------
+
+- Keep all features of `ack <http://beyondgrep.com>`_ and more
+- Handle colors using the standard library ``ansi-color.el``
+- Completion for ack options while reading from the minibuffer
+- Support `the silver search (ag)
+  <https://github.com/ggreer/the_silver_searcher>`_
+- Support ``git grep``, ``hg grep`` and ``bzr grep``
+
+Install
+-------
+
+``M-x package-install RET ack RET``
+
+Screenshots
+-----------
+
+* ack
+
+.. figure:: http://i.imgur.com/VwWyzAe.png
+   :target: http://i.imgur.com/VwWyzAe.png
+   :alt: ack.png
+
+* git grep
+
+.. figure:: http://i.imgur.com/rwjC4pa.png
+   :target: http://i.imgur.com/rwjC4pa.png
+   :alt: ack-git-grep.png
+
+Usage
+-----
+
+- Type ``M-x ack`` and provide a pattern to search.
+- Type ``C-u M-x ack`` to search from current project root.
+- Type ``C-u C-u M-x ack`` to interactively choose a directory to search.
+
+While reading ack command and args from the minibuffer, the following
+key bindings may be useful:
+
+- ``M-I`` => insert a template for case-insensitive file name search
+- ``M-G`` => insert a template for ``git grep``, ``hg grep`` or ``bzr grep``
+- ``M-Y`` => grab the symbol at point from the window before entering
+  the minibuffer
+- ``TAB`` => completion for ack options
+
+Emacs23
+-------
+
+Check out the `emacs23
+<https://github.com/leoliu/ack-el/tree/emacs23>`_ branch.
+
+Bugs
+----
+
+https://github.com/leoliu/ack-el/issues
+
+Contributors
+------------
+Phillip Lord
diff --git a/packages/ack/ack.el b/packages/ack/ack.el
new file mode 100644 (file)
index 0000000..c1f5328
--- /dev/null
@@ -0,0 +1,384 @@
+;;; ack.el --- Interface to ack-like source code search tools   -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2012-2013  Free Software Foundation, Inc.
+
+;; Author: Leo Liu <sdl.web@gmail.com>
+;; Version: 1.3
+;; Keywords: tools, processes, convenience
+;; Created: 2012-03-24
+;; URL: https://github.com/leoliu/ack-el
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This package provides an interface to ack http://beyondgrep.com --
+;; a tool like grep, designed for programmers with large trees of
+;; heterogeneous source code. It builds on standard packages
+;; `compile.el' and `ansi-color.el' and lets you seamlessly run `ack'
+;; with its large set of options.
+;;
+;; Ack-like tools such as the silver search (ag) and git/hg/bzr grep
+;; are well supported too.
+
+;;; Usage:
+
+;; +  Type `M-x ack' and provide a pattern to search.
+;; +  Type `C-u M-x ack' to search from current project root.
+;; +  Type `C-u C-u M-x ack' to interactively choose a directory to
+;;    search.
+;;
+;; Note: use `ack-default-directory-function' for customised
+;; behaviour.
+;;
+;; When in the minibuffer the following key bindings may be useful:
+;;
+;; +  `M-I' inserts a template for case-insensitive file name search
+;; +  `M-G' inserts a template for `git grep', `hg grep' or `bzr grep'
+;; +  `M-Y' inserts the symbol at point from the window before entering
+;;    the minibuffer
+;; +  `TAB' completes ack options
+
+;;; Bugs: https://github.com/leoliu/ack-el/issues
+
+;;; Code:
+
+(require 'compile)
+(require 'ansi-color)
+(autoload 'shell-completion-vars "shell")
+
+(eval-when-compile
+  (unless (fboundp 'setq-local)
+    (defmacro setq-local (var val)
+      (list 'set (list 'make-local-variable (list 'quote var)) val))))
+
+(defgroup ack nil
+  "Run `ack' and display the results."
+  :group 'tools
+  :group 'processes)
+
+;; Used implicitly by `define-compilation-mode'
+(defcustom ack-scroll-output nil
+  "Similar to `compilation-scroll-output' but for the *Ack* buffer."
+  :type 'boolean
+  :group 'ack)
+
+(defcustom ack-command
+  ;; Note: on GNU/Linux ack may be renamed to ack-grep
+  (concat (file-name-nondirectory (or (executable-find "ack-grep")
+                                      (executable-find "ack")
+                                      (executable-find "ag")
+                                      "ack")) " ")
+  "The default command for \\[ack].
+
+Note also options to ack can be specified in ACK_OPTIONS
+environment variable and .ackrc, which you can disable by the
+--noenv switch."
+  :type 'string
+  :safe 'stringp
+  :group 'ack)
+
+(defcustom ack-buffer-name-function nil
+  "If non-nil, a function to compute the name of an ack buffer.
+See `compilation-buffer-name-function' for details."
+  :type '(choice function (const nil))
+  :group 'ack)
+
+(defcustom ack-vc-grep-commands
+  '((".git" . "git --no-pager grep --color -n -i")
+    (".hg" . "hg grep -n -i")
+    ;; Plugin bzr-grep required for bzr < 2.6
+    (".bzr" . "bzr grep --color=always -n -i"))
+  "An alist of vc grep commands for `ack-skel-vc-grep'.
+Each element is of the form (VC_DIR . CMD)."
+  :type '(repeat (cons string string))
+  :group 'ack)
+
+(defcustom ack-default-directory-function 'ack-default-directory
+  "A function to return the default directory for `ack'.
+It is called with one arg, the prefix arg to `ack'."
+  :type 'function
+  :group 'ack)
+
+(defcustom ack-project-root-patterns
+  (list (concat "\\`" (regexp-quote dir-locals-file) "\\'")
+        "\\`Project\\.ede\\'"
+        "\\.xcodeproj\\'"               ; xcode
+        "\\`\\.ropeproject\\'"          ; python rope
+        "\\`\\.\\(?:CVS\\|bzr\\|git\\|hg\\|svn\\)\\'")
+  "A list of regexps to match files in a project root.
+Used by `ack-guess-project-root'."
+  :type '(repeat string)
+  :group 'ack)
+
+(defcustom ack-minibuffer-setup-hook nil
+  "Ack-specific hook for `minibuffer-setup-hook'."
+  :type 'hook
+  :group 'ack)
+
+;;; ======== END of USER OPTIONS ========
+
+(defvar ack-history nil "History list for ack.")
+
+(defvar ack-first-column 0
+  "Value to use for `compilation-first-column' in ack buffers.")
+
+(defvar ack-error-screen-columns nil
+  "Value to use for `compilation-error-screen-columns' in ack buffers.")
+
+(defvar ack-error "ack match"
+  "Stem of message to print when no matches are found.")
+
+(defun ack-filter ()
+  "Handle match highlighting escape sequences inserted by the ack process.
+This function is called from `compilation-filter-hook'."
+  (save-excursion
+    (let ((ansi-color-apply-face-function
+           (lambda (beg end face)
+             (when face
+               (ansi-color-apply-overlay-face beg end face)
+               (put-text-property beg end 'ack-color t)))))
+      (ansi-color-apply-on-region compilation-filter-start (point)))))
+
+(defvar ack-mode-font-lock-keywords
+  '(("^--$" 0 'shadow)
+    ;; Command output lines.
+    (": \\(.+\\): \\(?:Permission denied\\|No such \\(?:file or directory\\|device or address\\)\\)$"
+     1 'compilation-error)
+    ("^Ack \\(exited abnormally\\|interrupt\\|killed\\|terminated\\)\\(?:.*with code \\([0-9]+\\)\\)?.*"
+     (1 'compilation-error)
+     (2 'compilation-error nil t)))
+  "Additional things to highlight in ack output.
+This gets tacked on the end of the generated expressions.")
+
+(defun ack--column-start ()
+  (or (let* ((beg (match-end 0))
+             (end (save-excursion
+                    (goto-char beg)
+                    (line-end-position)))
+             (mbeg (text-property-any beg end 'ack-color t)))
+        (when mbeg (- mbeg beg)))
+      ;; Use column number from `ack' itself if available
+      (when (match-string 4)
+        (1- (string-to-number (match-string 4))))))
+
+(defun ack--column-end ()
+  (let* ((beg (match-end 0))
+         (end (save-excursion
+                (goto-char beg)
+                (line-end-position)))
+         (mbeg (text-property-any beg end 'ack-color t))
+         (mend (and mbeg (next-single-property-change
+                          mbeg 'ack-color nil end))))
+    (when mend (- mend beg))))
+
+(defun ack--file ()
+  (let (file)
+    (save-excursion
+      (while (progn
+               (forward-line -1)
+               (looking-at-p "^--$")))
+      (setq file (or (get-text-property (line-beginning-position) 'ack-file)
+                     (progn
+                       (put-text-property (line-beginning-position)
+                                          (line-end-position)
+                                          'font-lock-face compilation-info-face)
+                       (buffer-substring-no-properties
+                        (line-beginning-position) (line-end-position))))))
+    (put-text-property (line-beginning-position)
+                       (min (1+ (line-end-position)) (point-max)) 'ack-file file)
+    (list file)))
+
+;;; `compilation-mode-font-lock-keywords' ->
+;;; `compilation--ensure-parse' -> `compilation--parse-region' ->
+;;; `compilation-parse-errors' -> `compilation-error-properties'.
+;;; `compilation-error-properties' returns nil if a previous pattern
+;;; in the regexp alist has already been applied in a region.
+
+(defconst ack-error-regexp-alist
+  `(;; Grouping line (--group or --heading).
+    ("^\\([1-9][0-9]*\\)\\(:\\|-\\)\\(?:\\(?4:[1-9][0-9]*\\)\\2\\)?"
+     ack--file 1 (ack--column-start . ack--column-end)
+     nil nil (4 compilation-column-face nil t))
+    ;; None grouping line (--nogroup or --noheading). Avoid matching
+    ;; 'Ack started at Thu Jun 6 12:27:53'.
+    ("^\\(.+?\\)\\(:\\|-\\)\\([1-9][0-9]*\\)\\2\\(?:\\(?:\\(?4:[1-9][0-9]*\\)\\2\\)\\|[^0-9\n]\\|[0-9][^0-9\n]\\|...\\)"
+     1 3 (ack--column-start . ack--column-end)
+     nil 1 (4 compilation-column-face nil t))
+    ("^Binary file \\(.+\\) matches$" 1 nil nil 0 1))
+  "Ack version of `compilation-error-regexp-alist' (which see).")
+
+(defvar ack-process-setup-function 'ack-process-setup)
+
+(defun ack-process-setup ()
+  ;; Handle `hg grep' output
+  (when (string-match-p "^[ \t]*hg[ \t]" (car compilation-arguments))
+    (setq compilation-error-regexp-alist
+          '(("^\\(.+?:[0-9]+:\\)\\(?:\\([0-9]+\\):\\)?" 1 2)))
+    (setq-local compilation-parse-errors-filename-function
+                (lambda (file)
+                  (save-match-data
+                    (if (string-match "\\(.+\\):\\([0-9]+\\):" file)
+                        (match-string 1 file)
+                      file)))))
+  ;; Handle `bzr grep' output
+  (when (string-match-p "^[ \t]*bzr[ \t]" (car compilation-arguments))
+    (setq-local compilation-parse-errors-filename-function
+                (lambda (file)
+                  (save-match-data
+                    ;; 'bzr grep -r' has files like `termcolor.py~147'
+                    (if (string-match "\\(.+\\)~\\([0-9]+\\)" file)
+                        (match-string 1 file)
+                      file))))))
+
+(define-compilation-mode ack-mode "Ack"
+  "A compilation mode tailored for ack."
+  (setq-local compilation-disable-input t)
+  (setq-local compilation-error-face 'compilation-info)
+  (add-hook 'compilation-filter-hook 'ack-filter nil t))
+
+;;; `compilation-display-error' is introduced in 24.4
+(unless (fboundp 'compilation-display-error)
+  (defun ack-mode-display-match ()
+    "Display in another window the match in current line."
+    (interactive)
+    (setq compilation-current-error (point))
+    (next-error-no-select 0))
+  (define-key ack-mode-map "\C-o" #'ack-mode-display-match))
+
+(defun ack-skel-file ()
+  "Insert a template for case-insensitive file name search."
+  (interactive)
+  (delete-minibuffer-contents)
+  (let ((ack (or (car (split-string ack-command nil t)) "ack")))
+    (if (equal ack "ag")
+        (skeleton-insert `(nil ,ack " -ig '" _ "'"))
+      (skeleton-insert `(nil ,ack " -g '(?i:" _ ")'")))))
+
+;; Work around bug http://debbugs.gnu.org/13811
+(defvar ack--project-root nil)          ; dynamically bound in `ack'
+
+(defun ack-skel-vc-grep ()
+  "Insert a template for vc grep search."
+  (interactive)
+  (let* ((regexp (concat "\\`" (regexp-opt
+                                (mapcar 'car ack-vc-grep-commands))
+                         "\\'"))
+         (root (or (ack-guess-project-root default-directory regexp)
+                   (error "Cannot locate vc project root")))
+         (which (car (directory-files root nil regexp)))
+         (backend (downcase (substring which 1)))
+         (cmd (or (cdr (assoc which ack-vc-grep-commands))
+                  (error "No command provided for `%s grep'" backend))))
+    (setq ack--project-root root)
+    (delete-minibuffer-contents)
+    (skeleton-insert `(nil ,cmd " '" _ "'"))))
+
+(defun ack-yank-symbol-at-point ()
+  "Yank the symbol from the window before entering the minibuffer."
+  (interactive)
+  (let ((symbol (and (minibuffer-selected-window)
+                     (with-current-buffer
+                         (window-buffer (minibuffer-selected-window))
+                       (thing-at-point 'symbol)))))
+    (if symbol (insert symbol)
+      (minibuffer-message "No symbol found"))))
+
+(defvar ack-minibuffer-local-map
+  (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map minibuffer-local-map)
+    (define-key map "\t" 'completion-at-point)
+    (define-key map "\M-I" 'ack-skel-file)
+    (define-key map "\M-G" 'ack-skel-vc-grep)
+    (define-key map "\M-Y" 'ack-yank-symbol-at-point)
+    (define-key map "'" 'skeleton-pair-insert-maybe)
+    map)
+  "Keymap used for reading `ack' command and args in minibuffer.")
+
+(defun ack-guess-project-root (start-directory &optional regexp)
+  (let ((regexp (or regexp
+                    (mapconcat 'identity ack-project-root-patterns "\\|")))
+        (parent (file-name-directory
+                 (directory-file-name (expand-file-name start-directory)))))
+    (if (directory-files start-directory nil regexp)
+        start-directory
+      (unless (equal parent start-directory)
+        (ack-guess-project-root parent regexp)))))
+
+(defun ack-default-directory (arg)
+  "A function for `ack-default-directory-function'.
+With no \\[universal-argument], return `default-directory';
+With one \\[universal-argument], find the project root according to
+`ack-project-root-patterns';
+Otherwise, interactively choose a directory."
+  (cond
+   ((not arg) default-directory)
+   ((= (prefix-numeric-value arg) 4)
+    (or (ack-guess-project-root default-directory)
+        (ack-default-directory '(16))))
+   (t (read-directory-name "In directory: " nil nil t))))
+
+(defun ack-update-minibuffer-prompt (&optional _beg _end _len)
+  (when (minibufferp)
+    (let ((inhibit-read-only t))
+      (save-excursion
+        (goto-char (minibuffer-prompt-end))
+        (when (looking-at "\\(\\w+\\)\\s-")
+          (put-text-property
+           (point-min) (minibuffer-prompt-end)
+           'display
+           (format "Run %s in `%s': "
+                   (match-string-no-properties 1)
+                   (file-name-nondirectory
+                    (directory-file-name ack--project-root)))))))))
+
+(defun ack-minibuffer-setup-function ()
+  (shell-completion-vars)
+  (add-hook 'after-change-functions
+            #'ack-update-minibuffer-prompt nil t)
+  (ack-update-minibuffer-prompt)
+  (run-hooks 'ack-minibuffer-setup-hook))
+
+;;;###autoload
+(defun ack (command-args &optional directory)
+  "Run ack using COMMAND-ARGS and collect output in a buffer.
+When called interactively, the value of DIRECTORY is provided by
+`ack-default-directory-function'.
+
+The following keys are available while reading from the
+minibuffer:
+
+\\{ack-minibuffer-local-map}"
+  (interactive
+   (let ((ack--project-root (or (funcall ack-default-directory-function
+                                    current-prefix-arg)
+                           default-directory))
+         ;; Disable completion cycling; see http://debbugs.gnu.org/12221
+         (completion-cycle-threshold nil))
+     (list (minibuffer-with-setup-hook 'ack-minibuffer-setup-function
+             (read-from-minibuffer "Ack: "
+                                   ack-command
+                                   ack-minibuffer-local-map
+                                   nil 'ack-history))
+           ack--project-root)))
+  (let ((default-directory (expand-file-name
+                            (or directory default-directory))))
+    ;; Change to the compilation buffer so that `ack-buffer-name-function' can
+    ;; make use of `compilation-arguments'.
+    (with-current-buffer (compilation-start command-args 'ack-mode)
+      (when ack-buffer-name-function
+        (rename-buffer (funcall ack-buffer-name-function "ack"))))))
+
+(provide 'ack)
+;;; ack.el ends here
diff --git a/packages/ack/pcmpl-ack.el b/packages/ack/pcmpl-ack.el
new file mode 100644 (file)
index 0000000..3029367
--- /dev/null
@@ -0,0 +1,141 @@
+;;; pcmpl-ack.el --- completion for ack    -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2012-2013  Free Software Foundation, Inc.
+
+;; Author: Leo Liu <sdl.web@gmail.com>
+;; Keywords: tools, processes, convenience
+;; Created: 2012-09-26
+;; URL: https://github.com/leoliu/ack-el
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Provide pcompletion support for the cli tool `ack' which can be
+;; downloaded from http://beyondgrep.com.
+;;
+;; Install:
+;;   (autoload 'pcomplete/ack "pcmpl-ack")
+;;
+;; Usage:
+;;   - To complete short options type '-' first
+;;   - To complete long options type '--' first
+;;   - Color name completion is supported following
+;;       --color-filename=, --color-match= and --color-lineno=
+;;   - Type completion is supported following --type=
+
+;;; Code:
+
+(require 'pcomplete)
+
+(defcustom pcmpl-ack-program
+  (file-name-nondirectory (or (executable-find "ack-grep")
+                              (executable-find "ack")
+                              "ack"))
+  "Name of the ack program."
+  :type 'file
+  :group 'pcomplete)
+
+(defvar pcmpl-ack-color-options
+  '("clear"
+    "reset"
+    "dark"
+    "bold"
+    "underline"
+    "underscore"
+    "blink"
+    "reverse"
+    "concealed"
+    "black"
+    "red"
+    "green"
+    "yellow"
+    "blue"
+    "magenta"
+    "on_black"
+    "on_red"
+    "on_green"
+    "on_yellow"
+    "on_blue"
+    "on_magenta"
+    "on_cyan"
+    "on_white")
+  "Color names for the `ack' command.")
+
+(defun pcmpl-ack-run (buffer &rest args)
+  "Run ack with ARGS and send the output to BUFFER."
+  (condition-case nil
+      (apply 'call-process (or pcmpl-ack-program "ack") nil buffer nil args)
+    (file-error -1)))
+
+(defun pcmpl-ack-short-options ()
+  "Short options for the `ack' command."
+  (with-temp-buffer
+    (let (options)
+      (when (zerop (pcmpl-ack-run t "--help"))
+        (goto-char (point-min))
+        (while (re-search-forward "^  -\\([^-]\\)" nil t)
+          (push (match-string 1) options))
+        (mapconcat 'identity (nreverse options) "")))))
+
+(defun pcmpl-ack-long-options (&optional arg)
+  "Long options for the `ack' command."
+  (with-temp-buffer
+    (let (options)
+      (when (zerop (pcmpl-ack-run t (or arg "--help")))
+        (goto-char (point-min))
+        (while (re-search-forward
+                "\\(?:   ?\\|, \\)\\(--\\(\\[no\\]\\)?\\([[:alnum:]-]+=?\\)\\)"
+                nil t)
+          (if (not (match-string 2))
+              (push (match-string 1) options)
+            (push (concat "--" (match-string 3)) options)
+            (push (concat "--no" (match-string 3)) options)))
+        (nreverse options)))))
+
+(defun pcmpl-ack-type-options ()
+  "A list of types for the `ack' command."
+  (pcmpl-ack-long-options "--help-types"))
+
+;;;###autoload
+(defun pcomplete/ack ()
+  "Completion for the `ack' command.
+Start an argument with '-' to complete short options and '--' for
+long options."
+  ;; No space after =
+  (while t
+    (if (pcomplete-match "^-" 0)
+        (cond
+         ((pcomplete-match "^--color-\\w+=\\(\\S-*\\)" 0)
+          (pcomplete-here* pcmpl-ack-color-options
+                           (pcomplete-match-string 1 0) t))
+         ((pcomplete-match "^--\\(?:no\\)?ignore-dir=\\(\\S-*\\)" 0)
+          (pcomplete-here* (pcomplete-dirs)
+                           (pcomplete-match-string 1 0) t))
+         ((pcomplete-match "^--type=\\(\\S-*\\)" 0)
+          (pcomplete-here* (mapcar (lambda (type-option)
+                                     (substring type-option 2))
+                                   (pcmpl-ack-type-options))
+                           (pcomplete-match-string 1 0) t))
+         ((pcomplete-match "^--" 0)
+          (pcomplete-here* (append (pcmpl-ack-long-options)
+                                   (pcmpl-ack-type-options))))
+         (t (pcomplete-opt (pcmpl-ack-short-options))))
+      (pcomplete-here* (pcomplete-dirs-or-entries)))))
+
+;;;###autoload
+(defalias 'pcomplete/ack-grep 'pcomplete/ack)
+
+(provide 'pcmpl-ack)
+;;; pcmpl-ack.el ends here
diff --git a/packages/adaptive-wrap/adaptive-wrap.el b/packages/adaptive-wrap/adaptive-wrap.el
new file mode 100644 (file)
index 0000000..9455789
--- /dev/null
@@ -0,0 +1,121 @@
+;;; adaptive-wrap.el --- Smart line-wrapping with wrap-prefix
+
+;; Copyright (C) 2011-2013  Free Software Foundation, Inc.
+
+;; Author: Stephen Berman <stephen.berman@gmx.net>
+;;         Stefan Monnier <monnier@iro.umontreal.ca>
+;; Version: 0.5
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This package provides the `adaptive-wrap-prefix-mode' minor mode which sets
+;; the wrap-prefix property on the fly so that single-long-line paragraphs get
+;; word-wrapped in a way similar to what you'd get with M-q using
+;; adaptive-fill-mode, but without actually changing the buffer's text.
+
+;;; Code:
+
+(require 'easymenu)
+
+(defcustom adaptive-wrap-extra-indent 0
+  "Number of extra spaces to indent in `adaptive-wrap-prefix-mode'.
+
+`adaptive-wrap-prefix-mode' indents the visual lines to
+the level of the actual line plus `adaptive-wrap-extra-indent'.
+A negative value will do a relative de-indent.
+
+Examples:
+
+actual indent = 2
+extra indent = -1
+
+  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
+ enim ad minim veniam, quis nostrud exercitation ullamco laboris
+ nisi ut aliquip ex ea commodo consequat.
+
+actual indent = 2
+extra indent = 2
+
+  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
+    eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
+    enim ad minim veniam, quis nostrud exercitation ullamco laboris
+    nisi ut aliquip ex ea commodo consequat."
+  :type 'integer
+  :group 'visual-line)
+(make-variable-buffer-local 'adaptive-wrap-extra-indent)
+
+(defun adaptive-wrap-fill-context-prefix (beg en)
+  "Like `fill-context-prefix', but with length adjusted by `adaptive-wrap-extra-indent'."
+  ;; Note: fill-context-prefix may return nil; See:
+  ;; http://article.gmane.org/gmane.emacs.devel/156285
+  (let* ((fcp (or (fill-context-prefix beg en) ""))
+         (fcp-len (string-width fcp))
+         (fill-char (if (< 0 fcp-len)
+                        (string-to-char (substring fcp -1))
+                      ?\ )))
+    (cond
+     ((= 0 adaptive-wrap-extra-indent)
+      fcp)
+     ((< 0 adaptive-wrap-extra-indent)
+      (concat fcp
+              (make-string adaptive-wrap-extra-indent fill-char)))
+     ((< 0 (+ adaptive-wrap-extra-indent fcp-len))
+      (substring fcp
+                 0
+                 (+ adaptive-wrap-extra-indent fcp-len)))
+     (t
+      ""))))
+
+(defun adaptive-wrap-prefix-function (beg end)
+  "Indent the region between BEG and END with adaptive filling."
+  (goto-char beg)
+  (while (< (point) end)
+    (let ((lbp (line-beginning-position)))
+      (put-text-property (point)
+                         (progn (search-forward "\n" end 'move) (point))
+                         'wrap-prefix
+                         (adaptive-wrap-fill-context-prefix lbp (point))))))
+
+;;;###autoload
+(define-minor-mode adaptive-wrap-prefix-mode
+  "Wrap the buffer text with adaptive filling."
+  :lighter ""
+  :group 'visual-line
+  (if adaptive-wrap-prefix-mode
+      (progn
+        ;; HACK ATTACK!  We need to run after font-lock, but jit-lock-register
+        ;; doesn't accept an `append' argument, so we add ourselves beforehand,
+        ;; to make sure we're at the end of the hook (bug#15155).
+        (add-hook 'jit-lock-functions
+                  #'adaptive-wrap-prefix-function 'append t)
+        (jit-lock-register #'adaptive-wrap-prefix-function))
+    (jit-lock-unregister #'adaptive-wrap-prefix-function)
+    (with-silent-modifications
+      (save-restriction
+        (widen)
+        (remove-text-properties (point-min) (point-max) '(wrap-prefix nil))))))
+
+(define-key-after (lookup-key menu-bar-options-menu [line-wrapping])
+  [adaptive-wrap]
+  '(menu-item "Adaptive Wrap" adaptive-wrap-prefix-mode
+             :visible (menu-bar-menu-frame-live-and-visible-p)
+             :help "Show wrapped long lines with an adjustable prefix"
+             :button (:toggle . (bound-and-true-p adaptive-wrap-prefix-mode)))
+  word-wrap)
+
+(provide 'adaptive-wrap)
+;;; adaptive-wrap.el ends here
diff --git a/packages/adjust-parens/Makefile b/packages/adjust-parens/Makefile
new file mode 100644 (file)
index 0000000..30b1e3f
--- /dev/null
@@ -0,0 +1,16 @@
+.PHONY: all clean
+
+ELCFILES = $(addsuffix .elc, $(basename $(wildcard *.el)))
+
+all: $(ELCFILES)
+
+%.elc : %.el
+       @echo Compiling $<
+       @emacs --batch -q --no-site-file -L . -f batch-byte-compile $<
+
+clean:
+       @rm -f *.elc
+
+check: $(ELCFILES)
+       @emacs --batch -q --no-site-file -L . -l adjust-parens-tests.el -f ert-run-tests-batch-and-exit
+
diff --git a/packages/adjust-parens/adjust-parens-tests.el b/packages/adjust-parens/adjust-parens-tests.el
new file mode 100644 (file)
index 0000000..5b249c5
--- /dev/null
@@ -0,0 +1,66 @@
+;;; adjust-parens-tests.el --- Tests of adjust-parens package
+
+;; Copyright (C) 2013  Free Software Foundation, Inc.
+
+;; Author: Barry O'Reilly <gundaetiapo@gmail.com>
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'ert)
+(require 'adjust-parens)
+
+(defun apt-check-buffer (text-before-point text-after-point)
+  (should (string= text-before-point
+                   (buffer-substring-no-properties (point-min)
+                                                   (point))))
+  (should (string= text-after-point
+                   (buffer-substring-no-properties (point)
+                                                   (point-max)))))
+
+(ert-deftest apt-near-bob-test ()
+  (with-temp-buffer
+    (emacs-lisp-mode)
+    (insert "(foo)\n")
+    (lisp-indent-adjust-parens)
+    (apt-check-buffer "(foo\n " ")")))
+
+(ert-deftest apt-indent-dedent-test ()
+  (with-temp-buffer
+    (emacs-lisp-mode)
+    (setq indent-tabs-mode nil)
+    (insert ";;\n"
+            "(let ((x 10) (y (some-func 20))))\n"
+            "; Comment")
+    (beginning-of-line)
+    (lisp-indent-adjust-parens)
+    (apt-check-buffer (concat ";;\n"
+                              "(let ((x 10) (y (some-func 20)))\n"
+                              "  ")
+                      "); Comment")
+    (lisp-indent-adjust-parens 3)
+    (apt-check-buffer (concat ";;\n"
+                              "(let ((x 10) (y (some-func 20\n"
+                              "                           ")
+                      ")))); Comment")
+    (lisp-dedent-adjust-parens 2)
+    (apt-check-buffer (concat ";;\n"
+                              "(let ((x 10) (y (some-func 20))\n"
+                              "      ")
+                      ")); Comment")))
+
+;;; adjust-parens-tests.el ends here
diff --git a/packages/adjust-parens/adjust-parens.el b/packages/adjust-parens/adjust-parens.el
new file mode 100644 (file)
index 0000000..0ba2e6b
--- /dev/null
@@ -0,0 +1,305 @@
+;;; adjust-parens.el --- Indent and dedent Lisp code, automatically adjust close parens -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2013  Free Software Foundation, Inc.
+
+;; Author: Barry O'Reilly <gundaetiapo@gmail.com>
+;; Version: 1.3
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; This package provides commands for indenting and dedenting Lisp
+;; code such that close parentheses and brackets are automatically
+;; adjusted to be consistent with the new level of indentation.
+;;
+;; When reading Lisp, the programmer pays attention to open parens and
+;; the close parens on the same line. But when a sexp spans more than
+;; one line, she deduces the close paren from indentation alone. Given
+;; that's how we read Lisp, this package aims to enable editing Lisp
+;; similarly: automatically adjust the close parens programmers ignore
+;; when reading. A result of this is an editing experience somewhat
+;; like python-mode, which also offers "indent" and "dedent" commands.
+;; There are differences because lisp-mode knows more due to existing
+;; parens.
+;;
+;; To use:
+;;   (require 'adjust-parens)
+;;
+;; This binds two keys in Lisp Mode:
+;;   (local-set-key (kbd "TAB") 'lisp-indent-adjust-parens)
+;;   (local-set-key (kbd "<backtab>") 'lisp-dedent-adjust-parens)
+;;
+;; lisp-indent-adjust-parens potentially calls indent-for-tab-command
+;; (the usual binding for TAB in Lisp Mode). Thus it should not
+;; interfere with other TAB features like completion-at-point.
+;;
+;; Some examples follow. | indicates the position of point.
+;;
+;;   (let ((x 10) (y (some-func 20))))
+;;   |
+;;
+;; After one TAB:
+;;
+;;   (let ((x 10) (y (some-func 20)))
+;;     |)
+;;
+;; After three more TAB:
+;;
+;;   (let ((x 10) (y (some-func 20
+;;                              |))))
+;;
+;; After two Shift-TAB to dedent:
+;;
+;;   (let ((x 10) (y (some-func 20))
+;;         |))
+;;
+;; When dedenting, the sexp may have sibling sexps on lines below. It
+;; makes little sense for those sexps to stay at the same indentation,
+;; because they cannot keep the same parent sexp without being moved
+;; completely. Thus they are dedented too. An example of this:
+;;
+;;   (defun func ()
+;;     (save-excursion
+;;       (other-func-1)
+;;       |(other-func-2)
+;;       (other-func-3)))
+;;
+;; After Shift-TAB:
+;;
+;;   (defun func ()
+;;     (save-excursion
+;;       (other-func-1))
+;;     |(other-func-2)
+;;     (other-func-3))
+;;
+;; If you indent again with TAB, the sexps siblings aren't indented:
+;;
+;;   (defun func ()
+;;     (save-excursion
+;;       (other-func-1)
+;;       |(other-func-2))
+;;     (other-func-3))
+;;
+;; Thus TAB and Shift-TAB are not exact inverse operations of each
+;; other, though they often seem to be.
+
+;;; Code:
+
+;; Future work:
+;;   - Consider taking a region as input in order to indent a sexp and
+;;     its siblings in the region. Dedenting would not take a region.
+
+(require 'cl-lib)
+
+(defun last-sexp-with-relative-depth (from-pos to-pos rel-depth)
+  "Parsing sexps from FROM-POS (inclusive) to TO-POS (exclusive),
+return the position of the last sexp that had depth REL-DEPTH relative
+to FROM-POS. Returns nil if REL-DEPTH is not reached.
+
+May change point.
+
+Examples:
+  Region:   a (b c (d)) e (f g (h i)) j
+
+  Evaluate: (last-sexp-with-relative-depth pos-a (1+ pos-j) 0)
+  Returns:  position of j
+
+  Evaluate: (last-sexp-with-relative-depth pos-a (1+ pos-j) 1)
+  Returns:  position of (h i)
+
+This function assumes FROM-POS is not in a string or comment."
+  (goto-char from-pos)
+  (let (the-last-pos
+        (parse-state '(0 nil nil nil nil nil nil nil nil)))
+    (while (< (point) to-pos)
+      (setq parse-state
+            (parse-partial-sexp (point)
+                                to-pos
+                                nil
+                                t ; Stop before sexp
+                                parse-state))
+      (and (not (eq (point) to-pos))
+           (eq (car parse-state) rel-depth)
+           (setq the-last-pos (point)))
+      ;; The previous parse may not advance. To advance and maintain
+      ;; correctness of depth, we parse over the next char.
+      (when (< (point) to-pos)
+        (setq parse-state
+              (parse-partial-sexp (point)
+                                  (1+ (point))
+                                  nil
+                                  nil
+                                  parse-state))))
+    the-last-pos))
+
+
+(defun adjust-parens-check-prior-sexp ()
+  "Returns true if there is a full sexp before point, else false.
+
+May change point."
+  (let ((pos1 (progn (backward-sexp)
+                      (point)))
+        (pos2 (progn (forward-sexp)
+                     (backward-sexp)
+                     (point))))
+    (>= pos1 pos2)))
+
+(defun adjust-close-paren-for-indent ()
+  "Adjust a close parentheses of a sexp so as
+lisp-indent-adjust-parens can indent that many levels.
+
+If a close paren was moved, returns a two element list of positions:
+where the close paren was moved from and the position following where
+it moved to.
+
+If there's no close parens to move, either return nil or allow
+scan-error to propogate up."
+  (save-excursion
+    (let* ((deleted-paren-char nil)
+           (deleted-paren-pos
+            (save-excursion
+              (beginning-of-line)
+              ;; Account for edge case when point has no sexp before it
+              ;;
+              ;; This is primarily to avoid funny behavior when there
+              ;; is no sexp between bob and point.
+              (if (not (adjust-parens-check-prior-sexp))
+                  nil
+                ;; If the sexp at point is a list,
+                ;; delete its closing paren
+                (when (eq (scan-lists (point) 1 0)
+                          (scan-sexps (point) 1))
+                  (forward-sexp)
+                  (setq deleted-paren-char (char-before))
+                  (delete-char -1)
+                  (point))))))
+      ;; Invariant: deleted-paren-pos nil iff deleted-paren-char nil
+      (when deleted-paren-pos
+        (let ((sexp-to-close
+               (save-excursion
+                 (last-sexp-with-relative-depth (point)
+                                                (progn (end-of-line)
+                                                       (point))
+                                                0))))
+          (when sexp-to-close
+            (goto-char sexp-to-close)
+            (forward-sexp))
+          ;; Note: when no sexp-to-close found, line is empty. So put
+          ;; close paren after point.
+          (insert deleted-paren-char)
+          (list deleted-paren-pos (point)))))))
+
+(defun adjust-close-paren-for-dedent ()
+  "Adjust a close parentheses of a sexp so as
+lisp-dedent-adjust-parens can dedent that many levels.
+
+If a close paren was moved, returns a two element list of positions:
+where the close paren was moved from and the position following where
+it moved to.
+
+If there's no close parens to move, either return nil or allow
+scan-error to propogate up."
+  (save-excursion
+    (let* ((deleted-paren-char nil)
+           (deleted-paren-pos
+            (save-excursion
+              (when (< (point)
+                       (progn (up-list)
+                              (point)))
+                (setq deleted-paren-char (char-before))
+                (delete-char -1)
+                (point)))))
+      ;; Invariant: deleted-paren-pos nil iff deleted-paren-char nil
+      (when deleted-paren-pos
+        (let ((sexp-to-close
+               ;; Needs to work when dedenting in an empty list, in
+               ;; which case backward-sexp will signal scan-error and
+               ;; sexp-to-close will be nil.
+               (condition-case nil
+                   (progn (backward-sexp)
+                          (point))
+                 (scan-error nil))))
+          ;; Move point to where to insert close paren
+          (if sexp-to-close
+              (forward-sexp)
+            (backward-up-list)
+            (forward-char 1))
+          (insert deleted-paren-char)
+          ;; The insertion makes deleted-paren-pos off by 1
+          (list (1+ deleted-paren-pos)
+                (point)))))))
+
+(defun adjust-parens-p ()
+  "Whether to adjust parens."
+  (save-excursion
+    (let ((orig-pos (point)))
+      (back-to-indentation)
+      (and (not (use-region-p))
+           (<= orig-pos (point))))))
+
+(defun adjust-parens-and-indent (adjust-function parg)
+  "Adjust close parens and indent the region over which the parens
+moved."
+  (let ((region-of-change (list (point) (point))))
+    (cl-loop for i from 1 to (or parg 1)
+             with finished = nil
+             while (not finished)
+             do
+             (condition-case err
+                 (let ((close-paren-movement
+                        (funcall adjust-function)))
+                   (if close-paren-movement
+                       (setq region-of-change
+                             (list (min (car region-of-change)
+                                        (car close-paren-movement)
+                                        (cadr close-paren-movement))
+                                   (max (cadr region-of-change)
+                                        (car close-paren-movement)
+                                        (cadr close-paren-movement))))
+                     (setq finished t)))
+               (scan-error (setq finished err))))
+    (apply 'indent-region region-of-change))
+  (back-to-indentation))
+
+(defun lisp-indent-adjust-parens (&optional parg)
+  "Indent Lisp code to the next level while adjusting sexp balanced
+expressions to be consistent.
+
+This command can be bound to TAB instead of indent-for-tab-command. It
+potentially calls the latter."
+  (interactive "P")
+  (if (adjust-parens-p)
+      (adjust-parens-and-indent 'adjust-close-paren-for-indent
+                                parg)
+    (indent-for-tab-command parg)))
+
+(defun lisp-dedent-adjust-parens (&optional parg)
+  "Dedent Lisp code to the previous level while adjusting sexp
+balanced expressions to be consistent.
+
+Binding to <backtab> (ie Shift-Tab) is a sensible choice."
+  (interactive "P")
+  (when (adjust-parens-p)
+    (adjust-parens-and-indent 'adjust-close-paren-for-dedent
+                              parg)))
+
+(add-hook 'emacs-lisp-mode-hook
+          (lambda ()
+            (local-set-key (kbd "TAB") 'lisp-indent-adjust-parens)
+            (local-set-key (kbd "<backtab>") 'lisp-dedent-adjust-parens)))
+
+(provide 'adjust-parens)
+
+;;; adjust-parens.el ends here
diff --git a/packages/all/all.el b/packages/all/all.el
new file mode 100644 (file)
index 0000000..845b85a
--- /dev/null
@@ -0,0 +1,203 @@
+;;; all.el --- Edit all lines matching a given regexp
+
+;; Copyright (C) 1985-1987,1992,1994,2011-2012 Free Software Foundation, Inc.
+
+;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
+;; Version: 1.0
+;; Keywords: matching
+
+;; LCD Archive Entry:
+;; all|Per Abrahamsen|abraham@dina.kvl.dk|
+;; Edit all lines matching a given regexp|
+;; $Date: 1997/03/04 10:29:42 $|$Revision: 5.2 $|~/misc/all.Z|
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;; 
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Just like occur, except that changes in the *All* buffer are
+;; propagated to the original buffer.
+
+;; You can no longer use mouse-2 to find a match in the original file,
+;; since the default definition of mouse is too useful.
+;; However, `C-c C-c' still works.
+
+;; Line numbers are not listed in the *All* buffer.
+
+;; Ok, it is _not_ just like occur.
+
+;; Some limitations:
+
+;; - Undo in the *All* buffer is an ordinary change in the original.
+;; - Changes to the original buffer are not reflected in the *All* buffer.
+;; - A single change in the *All* buffer must be limited to a single match.
+
+;;; Code: 
+
+(defvar all-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map "\C-c\C-c" 'all-mode-goto)
+    map))
+
+(defvar all-buffer nil)
+(make-variable-buffer-local 'all-buffer)
+
+(define-derived-mode all-mode fundamental-mode "All"
+  "Major mode for output from \\[all].
+
+All changes made in this buffer will be propagated to the buffer where
+you ran \\[all].
+
+Press \\[all-mode-goto] to go to the same spot in the original buffer."
+  (add-hook 'before-change-functions 'all-before-change-function nil 'local)
+  (add-hook 'after-change-functions 'all-after-change-function nil 'local))
+
+(defun all-mode-find (pos)
+  ;; Find position in original buffer corresponding to POS.
+  (let ((overlay (all-mode-find-overlay pos)))
+    (if overlay
+       (+ (marker-position (overlay-get overlay 'all-marker))
+          (- pos (overlay-start overlay))))))
+
+(defun all-mode-find-overlay (pos)
+  ;; Find the overlay containing POS.
+  (let ((overlays (overlays-at pos)))
+    (while (and overlays (null (overlay-get (car overlays) 'all-marker)))
+      (setq overlays (cdr overlays)))
+    (car-safe overlays)))
+
+(defun all-mode-goto ()
+  "Move point to the corresponding position in the original buffer."
+  (interactive)
+  (let ((pos (all-mode-find (point))))
+    (if pos
+       (pop-to-buffer all-buffer)
+      (error "This text is not from the original buffer"))
+    (goto-char pos)))
+
+(defvar all-initialization-p nil)
+
+(defun all-before-change-function (from to)
+  ;; Check that change is legal.
+  (and all-buffer
+       (not all-initialization-p)
+       (let ((start (all-mode-find-overlay from))
+            (end (all-mode-find-overlay to)))
+        (not (and start (eq start end))))
+       (error "Changes should be limited to a single text piece")))
+
+(defun all-after-change-function (from to length)
+  ;; Propagate changes from *All* buffer.
+  (and all-buffer
+       (null all-initialization-p)
+       (let ((buffer (current-buffer))
+            (pos (all-mode-find from)))
+        (if pos
+            (with-current-buffer all-buffer
+              (save-excursion
+                (goto-char pos)
+                 (delete-region pos (+ pos length))
+                (insert-buffer-substring buffer from to)))))))
+
+;;;###autoload
+(defun all (regexp &optional nlines)
+  "Show all lines in the current buffer containing a match for REGEXP.
+
+If a match spreads across multiple lines, all those lines are shown.
+
+Each line is displayed with NLINES lines before and after, or -NLINES
+before if NLINES is negative.
+NLINES defaults to `list-matching-lines-default-context-lines'.
+Interactively it is the prefix arg.
+
+The lines are shown in a buffer named `*All*'.
+Any changes made in that buffer will be propagated to this buffer."
+  (interactive
+   (list (let* ((default (car regexp-history)))
+           (read-string
+            (if default
+                (format 
+                 "Edit lines matching regexp (default `%s'): " default)
+              "Edit lines matching regexp: ")
+            nil 'regexp-history default))
+         current-prefix-arg))
+  (setq nlines (if nlines (prefix-numeric-value nlines)
+                list-matching-lines-default-context-lines))
+  (let ((all-initialization-p t)
+        (buffer (current-buffer))
+       (prevend nil)
+       (prevstart nil)
+       (prevpos (point-min)))
+    (with-output-to-temp-buffer "*All*"
+      (with-current-buffer standard-output
+       (all-mode)
+       (setq all-buffer buffer)
+       (insert "Lines matching ")
+       (prin1 regexp)
+       (insert " in buffer " (buffer-name buffer) ?. ?\n)
+       (insert "--------\n"))
+      (if (eq buffer standard-output)
+         (goto-char (point-max)))
+      (save-excursion
+       (goto-char (point-min))
+       ;; Find next match, but give up if prev match was at end of buffer.
+       (while (and (not (= prevpos (point-max)))
+                   (re-search-forward regexp nil t))
+         (goto-char (match-beginning 0))
+         (beginning-of-line)
+         (setq prevpos (point))
+         (goto-char (match-end 0))
+         (let* ((start (save-excursion
+                         (goto-char (match-beginning 0))
+                         (forward-line (if (< nlines 0) nlines (- nlines)))
+                         (point)))
+                (end (save-excursion
+                       (goto-char (match-end 0))
+                       (if (> nlines 0)
+                           (forward-line (1+ nlines))
+                           (forward-line 1))
+                       (point))))
+           (cond ((null prevend)
+                  (setq prevstart start
+                       prevend end))
+                 ((> start prevend)
+                  (all-insert prevstart prevend regexp nlines)
+                  (setq prevstart start
+                        prevend end))
+                 (t
+                  (setq prevend end)))))
+       (if prevend
+           (all-insert prevstart prevend regexp nlines))))))
+
+(defun all-insert (start end regexp nlines)
+  ;; Insert match.
+  (let ((marker (copy-marker start))
+        (buffer (current-buffer)))
+    (with-current-buffer standard-output
+      (let ((from (point))
+            to)
+        (insert-buffer-substring buffer start end)
+        (setq to (point))
+        (overlay-put (make-overlay from to) 'all-marker marker)
+        (goto-char from)
+        (while (re-search-forward regexp to t)
+          (put-text-property (match-beginning 0) (match-end 0)
+                             'face 'match))
+        (goto-char to)
+        (if (> nlines 0)
+            (insert "--------\n"))))))
+
+(provide 'all)
+
+;;; all.el ends here
diff --git a/packages/cl-lib/cl-lib.el b/packages/cl-lib/cl-lib.el
new file mode 100644 (file)
index 0000000..0720afe
--- /dev/null
@@ -0,0 +1,322 @@
+;;; cl-lib.el --- Properly prefixed CL functions and macros  -*- coding: utf-8 -*-
+
+;; Copyright (C) 2012, 2013  Free Software Foundation, Inc.
+
+;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
+;; vcomment: Emacs-24.3's version is 1.0 so this has to stay below.
+;; Version: 0.3
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This is a forward compatibility package, which provides (a subset of) the
+;; features of the cl-lib package introduced in Emacs-24.3, for use on
+;; previous emacsen.
+
+;; Make sure this is installed *late* in your `load-path`, i.e. after Emacs's
+;; built-in .../lisp/emacs-lisp directory, so that if/when you upgrade to
+;; Emacs-24.3, the built-in version of the file will take precedence, otherwise
+;; you could get into trouble (although we try to hack our way around the
+;; problem in case it happens).
+
+;; This code is largely copied from Emacs-24.3's cl.el, with the alias bindings
+;; simply reversed.
+
+;;; Code:
+
+(when (functionp 'macroexp--compiler-macro)
+  ;; `macroexp--compiler-macro' was introduced as part of the big CL
+  ;; reorganization which moved/reimplemented some of CL into core (mostly the
+  ;; setf and compiler-macro support), so its presence indicates we're running
+  ;; in an Emacs that comes with the new cl-lib.el, where this file should
+  ;; never be loaded!
+  (message "Real cl-lib shadowed by compatibility cl-lib? (%s)" load-file-name)
+  (when load-file-name
+    ;; (message "Let's try to patch things up")
+    (let ((loaddir (file-name-directory load-file-name))
+          load-path-dir)
+      ;; Find the problematic directory from load-path.
+      (dolist (dir load-path)
+        (if (equal loaddir (expand-file-name (file-name-as-directory dir)))
+            (setq load-path-dir dir)))
+      (when load-path-dir
+        ;; (message "Let's move the offending dir to the end")
+        (setq load-path (append (remove load-path-dir load-path)
+                                (list load-path-dir)))
+        ;; Here we could manually load cl-lib and then return immediately.
+        ;; But Emacs currently doesn't provide any way for a file to "return
+        ;; immediately", so instead we make sure the rest of the file does not
+        ;; throw away any pre-existing definition.
+        ))))
+
+(require 'cl)
+
+;; Some of Emacs-24.3's cl.el definition are not just aliases, because either
+;; the feature was dropped from cl-lib.el or because the cl-lib version is
+;; not fully compatible.
+;; Let's just not include them here, since it is very important that if code
+;; works with this cl-lib.el it should also work with Emacs-24.3's cl-lib.el,
+;; whereas the reverse is much less important.
+
+(dolist (var '(
+               ;; loop-result-var
+               ;; loop-result
+               ;; loop-initially
+               ;; loop-finally
+               ;; loop-bindings
+               ;; loop-args
+               ;; bind-inits
+               ;; bind-block
+               ;; lambda-list-keywords
+               float-negative-epsilon
+               float-epsilon
+               least-negative-normalized-float
+               least-positive-normalized-float
+               least-negative-float
+               least-positive-float
+               most-negative-float
+               most-positive-float
+               ;; custom-print-functions
+               ))
+  (let ((new (intern (format "cl-%s" var))))
+    (unless (boundp new) (defvaralias new var))))
+
+(dolist (fun '(
+               (get* . cl-get)
+               (random* . cl-random)
+               (rem* . cl-rem)
+               (mod* . cl-mod)
+               (round* . cl-round)
+               (truncate* . cl-truncate)
+               (ceiling* . cl-ceiling)
+               (floor* . cl-floor)
+               (rassoc* . cl-rassoc)
+               (assoc* . cl-assoc)
+               (member* . cl-member)
+               (delete* . cl-delete)
+               (remove* . cl-remove)
+               (defsubst* . cl-defsubst)
+               (sort* . cl-sort)
+               (function* . cl-function)
+               (defmacro* . cl-defmacro)
+               (defun* . cl-defun)
+               (mapcar* . cl-mapcar)
+
+               remprop
+               getf
+               tailp
+               list-length
+               nreconc
+               revappend
+               concatenate
+               subseq
+               random-state-p
+               make-random-state
+               signum
+               isqrt
+               lcm
+               gcd
+               notevery
+               notany
+               every
+               some
+               mapcon
+               mapcan
+               mapl
+               maplist
+               map
+               equalp
+               coerce
+               tree-equal
+               nsublis
+               sublis
+               nsubst-if-not
+               nsubst-if
+               nsubst
+               subst-if-not
+               subst-if
+               subsetp
+               nset-exclusive-or
+               set-exclusive-or
+               nset-difference
+               set-difference
+               nintersection
+               intersection
+               nunion
+               union
+               rassoc-if-not
+               rassoc-if
+               assoc-if-not
+               assoc-if
+               member-if-not
+               member-if
+               merge
+               stable-sort
+               search
+               mismatch
+               count-if-not
+               count-if
+               count
+               position-if-not
+               position-if
+               position
+               find-if-not
+               find-if
+               find
+               nsubstitute-if-not
+               nsubstitute-if
+               nsubstitute
+               substitute-if-not
+               substitute-if
+               substitute
+               delete-duplicates
+               remove-duplicates
+               delete-if-not
+               delete-if
+               remove-if-not
+               remove-if
+               replace
+               fill
+               reduce
+               compiler-macroexpand
+               define-compiler-macro
+               assert
+               check-type
+               typep
+               deftype
+               defstruct
+               callf2
+               callf
+               letf*
+               letf
+               rotatef
+               shiftf
+               remf
+               psetf
+               (define-setf-method . define-setf-expander)
+               declare
+               the
+               locally
+               multiple-value-setq
+               multiple-value-bind
+               symbol-macrolet
+               macrolet
+               progv
+               psetq
+               do-all-symbols
+               do-symbols
+               dotimes
+               dolist
+               do*
+               do
+               loop
+               return-from
+               return
+               block
+               etypecase
+               typecase
+               ecase
+               case
+               load-time-value
+               eval-when
+               destructuring-bind
+               gentemp
+               gensym
+               pairlis
+               acons
+               subst
+               adjoin
+               copy-list
+               ldiff
+               list*
+               cddddr
+               cdddar
+               cddadr
+               cddaar
+               cdaddr
+               cdadar
+               cdaadr
+               cdaaar
+               cadddr
+               caddar
+               cadadr
+               cadaar
+               caaddr
+               caadar
+               caaadr
+               caaaar
+               cdddr
+               cddar
+               cdadr
+               cdaar
+               caddr
+               cadar
+               caadr
+               caaar
+               tenth
+               ninth
+               eighth
+               seventh
+               sixth
+               fifth
+               fourth
+               third
+               endp
+               rest
+               second
+               first
+               svref
+               copy-seq
+               evenp
+               oddp
+               minusp
+               plusp
+               floatp-safe
+               declaim
+               proclaim
+               nth-value
+               multiple-value-call
+               multiple-value-apply
+               multiple-value-list
+               values-list
+               values
+               pushnew
+               decf
+               incf
+
+               dolist
+               dotimes
+               ))
+  (let ((new (if (consp fun) (prog1 (cdr fun) (setq fun (car fun)))
+               (intern (format "cl-%s" fun)))))
+    (unless (fboundp new) (defalias new fun))))
+
+;; `cl-labels' is not 100% compatible with `labels' when using dynamic scoping
+;; (mostly because it does not turn lambdas that refer to those functions into
+;; closures).  OTOH it is compatible when using lexical scoping.
+
+(unless (fboundp 'cl-labels)
+  (defmacro cl-labels (&rest args)
+    (unless (and (boundp 'lexical-binding) lexical-binding)
+      ;; We used to signal an error rather than a message, but in many uses of
+      ;; cl-labels, the value of lexical-binding doesn't actually matter.
+      ;; More importantly, the value of `lexical-binding' here is unreliable
+      ;; (it does not necessarily reflect faithfully whether the output of this
+      ;; macro will be interpreted as lexically bound code or not).
+      (message "This `cl-labels' requires `lexical-binding' to be non-nil"))
+    `(labels ,@args)))
+
+(provide 'cl-lib)
+;;; cl-lib.el ends here
diff --git a/packages/coffee-mode/README.md b/packages/coffee-mode/README.md
new file mode 100644 (file)
index 0000000..51a7322
--- /dev/null
@@ -0,0 +1,284 @@
+CoffeeScript Major Mode
+=======================
+
+An Emacs major mode for [CoffeeScript][cs], unfancy JavaScript.
+
+Provides syntax highlighting, indentation support, imenu support,
+a menu bar, and a few cute commands.
+
+![Screenshot](http://img.skitch.com/20100308-fcr622c95ibey4m474d5m1m1qt.png)
+
+## Installation
+
+In your shell:
+
+    $ cd ~/.emacs.d/vendor
+    $ git clone git://github.com/defunkt/coffee-mode.git
+
+In your emacs config:
+
+    (add-to-list 'load-path "~/.emacs.d/vendor/coffee-mode")
+    (require 'coffee-mode)
+
+If `coffee-mode` is not enabled automatically for any files ending in
+".coffee" or named "Cakefile", add this to your emacs config as well:
+
+    (add-to-list 'auto-mode-alist '("\\.coffee$" . coffee-mode))
+    (add-to-list 'auto-mode-alist '("Cakefile" . coffee-mode))
+
+[coffee-mode used to offer automatic deletion of trailing whitespace.
+This is now left to whitespace-mode. See its documentation for full
+details, but as a hint, configure:
+
+    (setq whitespace-action '(auto-cleanup)) ;; automatically clean up bad whitespace
+    (setq whitespace-style '(trailing space-before-tab indentation empty space-after-tab)) ;; only show bad whitespace
+
+Then turn on whitespace-mode, or global-whitespace-mode.]
+
+## Indentation
+
+### TAB Theory
+
+It goes like this: when you press `TAB`, we indent the line unless
+doing so would make the current line more than two indentation levels
+deepers than the previous line. If that's the case, remove all
+indentation.
+
+Consider this code, with point at the position indicated by the
+caret:
+
+    line1()
+      line2()
+      line3()
+         ^
+
+Pressing `TAB` will produce the following code:
+
+    line1()
+      line2()
+        line3()
+           ^
+
+Pressing `TAB` again will produce this code:
+
+    line1()
+      line2()
+    line3()
+       ^
+
+And so on. I think this is a pretty good way of getting decent
+indentation with a whitespace-sensitive language.
+
+### Newline and Indent
+
+We all love hitting `RET` and having the next line indented
+properly. Given this code and cursor position:
+
+    line1()
+      line2()
+      line3()
+            ^
+
+Pressing `RET` would insert a newline and place our cursor at the
+following position:
+
+    line1()
+      line2()
+      line3()
+
+      ^
+
+In other words, the level of indentation is maintained. This
+applies to comments as well. Combined with the `TAB` you should be
+able to get things where you want them pretty easily.
+
+### Indenters
+
+`class`, `for`, `if`, and possibly other keywords cause the next line
+to be indented a level deeper automatically.
+
+For example, given this code and cursor position::
+
+    class Animal
+                ^
+
+Pressing enter would produce the following:
+
+    class Animal
+
+      ^
+
+That is, indented a column deeper.
+
+This also applies to lines ending in `->`, `=>`, `{`, `[`, and
+possibly more characters.
+
+So this code and cursor position:
+
+    $('#demo').click ->
+                       ^
+
+On enter would produce this:
+
+    $('#demo').click ->
+
+      ^
+
+Pretty slick.
+
+## imenu
+
+If you're using imenu, `coffee-mode` should work just fine. This
+means users of [textmate.el][tm] will find that `⇧⌘T`
+(`textmate-go-to-symbol`) mostly works as expected.
+
+If you're not using imenu check out [this page][im] or textmate.el for
+a really awesome way to jump quickly to a function's definition in a
+file.
+
+## Commands
+
+If you have `easymenu` you can get to any of these commands from the
+menu bar:
+
+![coffee-mode menu bar](http://img.skitch.com/20100308-tt5yn51h2jww2pmjqaawed6eq8.png)
+
+### coffee-compile-file
+
+Compiles the current file as a JavaScript file. Doesn't open it or
+anything special for you.
+
+Operating on "basic.coffee" and running this command will save a
+"basic.js" in the same directory. Subsequent runs will overwrite the
+file.
+
+If there are compilation errors and we the compiler have returned a
+line number to us for the first error, the point is moved to that
+line, so you can investigate.  If this annoys you, you can set
+`coffee-compile-jump-to-error` to `nil`.
+
+### coffee-compile-buffer
+
+Compiles the current buffer to JavaScript using the command specified
+by the `coffee-command` variable and opens the contents in a new
+buffer using the mode configured for ".js" files.
+
+Bind it:
+
+    (define-key coffee-mode-map [(meta r)] 'coffee-compile-buffer)
+
+### coffee-compile-region
+
+Compiles the selected region to JavaScript using the same
+configuration variables as `coffee-compile-buffer`.
+
+Bind it:
+
+    (define-key coffee-mode-map [(meta R)] 'coffee-compile-region)
+
+### Compile-on-save
+
+Hitting the key sequence `C-c C-o C-s` turns on (toggles) the
+compile-on-save minor mode in `coffee-mode`.  To enable it by default:
+
+    (add-hook 'coffee-mode-hook '(lambda () (coffee-cos-mode t)))
+
+### coffee-repl
+
+Starts a repl in a new buffer using `coffee-command`.
+
+## Hooks
+
+### coffee-mode-hook
+
+Naturally. Example:
+
+    (defun coffee-custom ()
+      "coffee-mode-hook"
+
+      ;; CoffeeScript uses two spaces.
+      (make-local-variable 'tab-width)
+      (set 'tab-width 2)
+
+      ;; If you don't want your compiled files to be wrapped
+      (setq coffee-args-compile '("-c" "--bare"))
+
+      ;; Emacs key binding
+      (define-key coffee-mode-map [(meta r)] 'coffee-compile-buffer)
+
+      ;; Riding edge.
+      (setq coffee-command "~/dev/coffee")
+
+      ;; Compile '.coffee' files on every save
+      (and (file-exists-p (buffer-file-name))
+           (file-exists-p (coffee-compiled-file-name))
+           (coffee-cos-mode t)))
+
+    (add-hook 'coffee-mode-hook 'coffee-custom)
+
+## Configuration
+
+You can customize any of the following options using `M-x
+customize-group` with "coffee" as the group.
+
+You can also customize then with `coffee-mode-hook`, as demonstrated
+above.
+
+### coffee-tab-width
+
+The tab width to use when indenting.
+
+Default: `tab-width`
+
+### coffee-command
+
+The CoffeeScript command used for evaluating code. Must be in your
+path.
+
+Default: `"coffee"`
+
+### coffee-args-repl
+
+The command line arguments to pass to `coffee-command' to start a
+REPL.
+
+Default: `'("-i")`
+
+### coffee-args-compile
+
+The command line arguments to pass to `coffee-command' when compiling a file.
+
+Default: `'("-c")`
+
+### coffee-compiled-buffer-name
+
+The name of the scratch buffer used when compiling CoffeeScript.
+
+Default: `"*coffee-compiled*"`
+
+### coffee-compile-jump-to-error
+
+Whether to jump to the first error if compilation fails.  Please note
+that the coffee compiler doesn't always give a line number for the
+issue and in that case it is not possible to jump to the error, of
+course.
+
+Default: `t`
+
+## Thanks
+
+* Jeremy Ashkenas for CoffeeScript
+* <http://xahlee.org/emacs/elisp_syntax_coloring.html> for instructions.
+* Jason Blevins for the guidance his markdown-mode.el gave.
+* Steve Yegge for js2
+
+## Bugs
+
+Prototype accessor assignments like `String::length: -> 10` don't look
+great.
+
+Please file bugs at <http://github.com/defunkt/coffee-mode/issues>
+
+[cs]: http://jashkenas.github.com/coffee-script/
+[tm]: http://github.com/defunkt/textmate.el
+[im]: http://chopmo.blogspot.com/2008/09/quickly-jumping-to-symbols.html
diff --git a/packages/coffee-mode/coffee-mode.el b/packages/coffee-mode/coffee-mode.el
new file mode 100644 (file)
index 0000000..cf8b5a8
--- /dev/null
@@ -0,0 +1,640 @@
+;;; coffee-mode.el --- Major mode for CoffeeScript files
+
+;; Copyright (C) 2010-2013 Free Software Foundation, Inc.
+
+;; Version: 0.4.1.1
+;; Keywords: CoffeeScript major mode
+;; Author: Chris Wanstrath <chris@ozmm.org>
+;; URL: http://github.com/defunkt/coffee-mode
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation, either version 3 of the License,
+;; or (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary
+
+;; CoffeeScript mode is an Emacs major mode for [CoffeeScript][cs],
+;; unfancy JavaScript.  It provides syntax highlighting, indentation
+;; support, imenu support, a menu bar, and a few cute commands.
+
+;; Installing this package enables CoffeeScript mode for file named
+;; *.coffee and Cakefile.
+
+;; Commands:
+
+;; M-x coffee-compile-file compiles the current file as a JavaScript
+;; file.  Operating on "basic.coffee" and running this command will
+;; save a "basic.js" in the same directory.  Subsequent runs will
+;; overwrite the file.
+;;
+;; If there are compilation errors and we the compiler have returned a
+;; line number to us for the first error, the point is moved to that
+;; line, so you can investigate.  If this annoys you, you can set
+;; `coffee-compile-jump-to-error` to `nil`.
+;;
+;; M-x coffee-compile-buffer compiles the current buffer to JavaScript
+;; using the command specified by the `coffee-command` variable, and
+;; opens the contents in a new buffer using the mode configured for
+;; ".js" files.
+;;
+;; M-x coffee-compile-region compiles the selected region to
+;; JavaScript using the same configuration variables as
+;; `coffee-compile-buffer`.
+;;
+;; `C-c C-o C-s' (coffee-cos-mode) toggles a minor mode implementing
+;; "compile-on-save" behavior.
+;;
+;; M-x coffee-repl starts a repl via `coffee-command` in a new buffer.
+
+;; Options:
+;;
+;; `coffee-tab-width' - Tab width to use when indenting.
+;; `coffee-command'   - CoffeeScript command for evaluating code.
+;;                      Must be in your path.
+;; `coffee-args-repl' - Command line arguments for `coffee-command'
+;;                      when starting a REPL.
+;; `coffee-args-compile'          - Arguments for `coffee-command'
+;;                                  when compiling a file.
+;; `coffee-compiled-buffer-name'  - Name of the scratch buffer used
+;;                                  when compiling CoffeeScript.
+;; `coffee-compile-jump-to-error' - Whether to jump to the first error
+;;                                  if compilation fails.
+
+;; Please file bugs at <http://github.com/defunkt/coffee-mode/issues>
+
+;; Thanks:
+
+;; Major thanks to http://xahlee.org/emacs/elisp_syntax_coloring.html
+;; the instructions.
+
+;; Also thanks to Jason Blevins's markdown-mode.el and Steve Yegge's
+;; js2-mode for guidance.
+
+;; TODO:
+;; - Execute {buffer,region,line} and show output in new buffer
+;; - Make prototype accessor assignments like `String::length: -> 10` pretty.
+;; - mirror-mode - close brackets and parens automatically
+
+;;; Code:
+
+(require 'comint)
+(require 'easymenu)
+(require 'font-lock)
+
+(eval-when-compile
+  (require 'cl))
+
+;;
+;; Customizable Variables
+;;
+
+(defconst coffee-mode-version "0.4.1"
+  "The version of `coffee-mode'.")
+
+(defgroup coffee nil
+  "A CoffeeScript major mode."
+  :group 'languages)
+
+(defcustom coffee-tab-width tab-width
+  "The tab width to use when indenting."
+  :type 'integer
+  :group 'coffee)
+
+(defcustom coffee-command "coffee"
+  "The CoffeeScript command used for evaluating code."
+  :type 'string
+  :group 'coffee)
+
+(defcustom js2coffee-command "js2coffee"
+  "The js2coffee command used for evaluating code."
+  :type 'string
+  :group 'coffee)
+
+(defcustom coffee-args-repl '("-i")
+  "The arguments to pass to `coffee-command' to start a REPL."
+  :type 'list
+  :group 'coffee)
+
+(defcustom coffee-args-compile '("-c")
+  "The arguments to pass to `coffee-command' to compile a file."
+  :type 'list
+  :group 'coffee)
+
+(defcustom coffee-compiled-buffer-name "*coffee-compiled*"
+  "The name of the scratch buffer used for compiled CoffeeScript."
+  :type 'string
+  :group 'coffee)
+
+(defcustom coffee-compile-jump-to-error t
+  "Whether to jump to the first error if compilation fails.
+Please note that the coffee compiler doesn't always give a line
+number for the issue and in that case it is not possible to jump
+to the error."
+  :type 'boolean
+  :group 'coffee)
+
+(defcustom coffee-watch-buffer-name "*coffee-watch*"
+  "The name of the scratch buffer used when using the --watch flag
+with CoffeeScript."
+  :type 'string
+  :group 'coffee)
+
+(defcustom coffee-mode-hook nil
+  "Hook called by `coffee-mode'."
+  :type 'hook
+  :group 'coffee)
+
+(defvar coffee-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map (kbd "A-r") 'coffee-compile-buffer)
+    (define-key map (kbd "A-R") 'coffee-compile-region)
+    (define-key map (kbd "A-M-r") 'coffee-repl)
+    (define-key map "\C-m" 'coffee-newline-and-indent)
+    (define-key map "\C-c\C-o\C-s" 'coffee-cos-mode)
+    map)
+  "Keymap for CoffeeScript major mode.")
+
+(defvar coffee-mode-syntax-table
+  (let ((st (make-syntax-table)))
+    (modify-syntax-entry ?# "< b" st)
+    (modify-syntax-entry ?\n "> b" st)
+    (modify-syntax-entry ?' "\"" st)
+    st))
+
+;;
+;; Commands
+;;
+
+(defun coffee-repl ()
+  "Launch a CoffeeScript REPL using `coffee-command' as an inferior mode."
+  (interactive)
+
+  (unless (comint-check-proc "*CoffeeREPL*")
+    (set-buffer
+     (apply 'make-comint "CoffeeREPL"
+            coffee-command nil coffee-args-repl)))
+
+  (pop-to-buffer "*CoffeeREPL*"))
+
+(defun coffee-compiled-file-name (&optional filename)
+  "Returns the name of the JavaScript file compiled from a CoffeeScript file.
+If FILENAME is omitted, the current buffer's file name is used."
+  (concat (file-name-sans-extension (or filename (buffer-file-name))) ".js"))
+
+(defun coffee-compile-file ()
+  "Compiles and saves the current file to disk."
+  (interactive)
+  (let ((compiler-output (shell-command-to-string (coffee-command-compile (buffer-file-name)))))
+    (if (string= compiler-output "")
+        (message "Compiled and saved %s" (coffee-compiled-file-name))
+      (let* ((msg (car (split-string compiler-output "[\n\r]+")))
+             (line (and (string-match "on line \\([0-9]+\\)" msg)
+                        (string-to-number (match-string 1 msg)))))
+        (message msg)
+        (when (and coffee-compile-jump-to-error line (> line 0))
+          (goto-char (point-min))
+          (forward-line (1- line)))))))
+
+(defun coffee-compile-buffer ()
+  "Compiles the current buffer and displays the JavaScript in a buffer
+called `coffee-compiled-buffer-name'."
+  (interactive)
+  (save-excursion
+    (coffee-compile-region (point-min) (point-max))))
+
+(defun coffee-compile-region (start end)
+  "Compiles a region and displays the JavaScript in a buffer called
+`coffee-compiled-buffer-name'."
+  (interactive "r")
+
+  (let ((buffer (get-buffer coffee-compiled-buffer-name)))
+    (when buffer
+      (kill-buffer buffer)))
+
+  (apply (apply-partially 'call-process-region start end coffee-command nil
+                          (get-buffer-create coffee-compiled-buffer-name)
+                          nil)
+         (append coffee-args-compile (list "-s" "-p")))
+  (switch-to-buffer (get-buffer coffee-compiled-buffer-name))
+  (let ((buffer-file-name "tmp.js")) (set-auto-mode))
+  (goto-char (point-min)))
+
+(defun coffee-js2coffee-replace-region (start end)
+  "Convert JavaScript in the region into CoffeeScript."
+  (interactive "r")
+
+  (let ((buffer (get-buffer coffee-compiled-buffer-name)))
+    (when buffer
+      (kill-buffer buffer)))
+
+  (call-process-region start end
+                       js2coffee-command nil
+                       (current-buffer))
+  (delete-region start end))
+
+(defun coffee-version ()
+  "Show the `coffee-mode' version in the echo area."
+  (interactive)
+  (message (concat "coffee-mode version " coffee-mode-version)))
+
+(defun coffee-watch (dir-or-file)
+  "Run `coffee-run-cmd' with the --watch flag on a directory or file."
+  (interactive "fDirectory or File: ")
+  (let ((coffee-compiled-buffer-name coffee-watch-buffer-name)
+        (args (mapconcat 'identity (append coffee-args-compile (list "--watch" (expand-file-name dir-or-file))) " ")))
+    (coffee-run-cmd args)))
+
+;;
+;; Menubar
+;;
+
+(easy-menu-define coffee-mode-menu coffee-mode-map
+  "Menu for CoffeeScript mode"
+  '("CoffeeScript"
+    ["Compile File" coffee-compile-file]
+    ["Compile Buffer" coffee-compile-buffer]
+    ["Compile Region" coffee-compile-region]
+    ["REPL" coffee-repl]
+    "---"
+    ["Version" coffee-show-version]
+    ))
+
+;;
+;; Define Language Syntax
+;;
+
+;; String literals
+(defvar coffee-string-regexp "\"\\([^\\]\\|\\\\.\\)*?\"\\|'\\([^\\]\\|\\\\.\\)*?'")
+
+;; Instance variables (implicit this)
+(defvar coffee-this-regexp "@\\(\\w\\|_\\)*\\|this")
+
+;; Prototype::access
+(defvar coffee-prototype-regexp "\\(\\(\\w\\|\\.\\|_\\| \\|$\\)+?\\)::\\(\\(\\w\\|\\.\\|_\\| \\|$\\)+?\\):")
+
+;; Assignment
+(defvar coffee-assign-regexp "\\(\\(\\w\\|\\.\\|_\\|$\\)+?\s*\\):")
+
+;; Lambda
+(defvar coffee-lambda-regexp "\\((.+)\\)?\\s *\\(->\\|=>\\)")
+
+;; Namespaces
+(defvar coffee-namespace-regexp "\\b\\(class\\s +\\(\\S +\\)\\)\\b")
+
+;; Booleans
+(defvar coffee-boolean-regexp "\\b\\(true\\|false\\|yes\\|no\\|on\\|off\\|null\\|undefined\\)\\b")
+
+;; Regular Expressions
+(defvar coffee-regexp-regexp "\\/\\(\\\\.\\|\\[\\(\\\\.\\|.\\)+?\\]\\|[^/]\\)+?\\/")
+
+;; JavaScript Keywords
+(defvar coffee-js-keywords
+      '("if" "else" "new" "return" "try" "catch"
+        "finally" "throw" "break" "continue" "for" "in" "while"
+        "delete" "instanceof" "typeof" "switch" "super" "extends"
+        "class" "until" "loop"))
+
+;; Reserved keywords either by JS or CS.
+(defvar coffee-js-reserved
+      '("case" "default" "do" "function" "var" "void" "with"
+        "const" "let" "debugger" "enum" "export" "import" "native"
+        "__extends" "__hasProp"))
+
+;; CoffeeScript keywords.
+(defvar coffee-cs-keywords
+      '("then" "unless" "and" "or" "is"
+        "isnt" "not" "of" "by" "where" "when"))
+
+;; Regular expression combining the above three lists.
+(defvar coffee-keywords-regexp (regexp-opt
+                                (append
+                                 coffee-js-reserved
+                                 coffee-js-keywords
+                                 coffee-cs-keywords) 'words))
+
+
+;; Create the list for font-lock. Each class of keyword is given a
+;; particular face.
+(defvar coffee-font-lock-keywords
+  ;; *Note*: order below matters. `coffee-keywords-regexp' goes last
+  ;; because otherwise the keyword "state" in the function
+  ;; "state_entry" would be highlighted.
+  `((,coffee-string-regexp . font-lock-string-face)
+    (,coffee-this-regexp . font-lock-variable-name-face)
+    (,coffee-prototype-regexp . font-lock-variable-name-face)
+    (,coffee-assign-regexp . font-lock-type-face)
+    (,coffee-regexp-regexp . font-lock-constant-face)
+    (,coffee-boolean-regexp . font-lock-constant-face)
+    (,coffee-keywords-regexp . font-lock-keyword-face)))
+
+;;
+;; Helper Functions
+;;
+
+(defun coffee-command-compile (file-name)
+  "Run `coffee-command' to compile FILE."
+  (let ((full-file-name (expand-file-name file-name)))
+    (mapconcat 'identity (append (list coffee-command) coffee-args-compile (list full-file-name)) " ")))
+
+(defun coffee-run-cmd (args)
+  "Run `coffee-command' with the given arguments, and display the
+output in a compilation buffer."
+  (interactive "sArguments: ")
+  (let ((compilation-buffer-name-function
+         (lambda (_this-mode)
+           (generate-new-buffer-name coffee-compiled-buffer-name))))
+    (compile (concat coffee-command " " args))))
+
+;;
+;; imenu support
+;;
+
+;; This is a pretty naive but workable way of doing it. First we look
+;; for any lines that starting with `coffee-assign-regexp' that include
+;; `coffee-lambda-regexp' then add those tokens to the list.
+;;
+;; Should cover cases like these:
+;;
+;; minus: (x, y) -> x - y
+;; String::length: -> 10
+;; block: ->
+;;   print('potion')
+;;
+;; Next we look for any line that starts with `class' or
+;; `coffee-assign-regexp' followed by `{` and drop into a
+;; namespace. This means we search one indentation level deeper for
+;; more assignments and add them to the alist prefixed with the
+;; namespace name.
+;;
+;; Should cover cases like these:
+;;
+;; class Person
+;;   print: ->
+;;     print 'My name is ' + this.name + '.'
+;;
+;; class Policeman extends Person
+;;   constructor: (rank) ->
+;;     @rank: rank
+;;   print: ->
+;;     print 'My name is ' + this.name + " and I'm a " + this.rank + '.'
+;;
+;; TODO:
+;; app = {
+;;   window:  {width: 200, height: 200}
+;;   para:    -> 'Welcome.'
+;;   button:  -> 'OK'
+;; }
+
+(defun coffee-imenu-create-index ()
+  "Create an imenu index of all methods in the buffer."
+  (interactive)
+
+  ;; This function is called within a `save-excursion' so we're safe.
+  (goto-char (point-min))
+
+  (let ((index-alist '()) assign pos indent ns-name ns-indent)
+    ;; Go through every assignment that includes -> or => on the same
+    ;; line or starts with `class'.
+    (while (re-search-forward
+            (concat "^\\(\\s *\\)"
+                    "\\("
+                      coffee-assign-regexp
+                      ".+?"
+                      coffee-lambda-regexp
+                    "\\|"
+                      coffee-namespace-regexp
+                    "\\)")
+            (point-max)
+            t)
+
+      ;; If this is the start of a new namespace, save the namespace's
+      ;; indentation level and name.
+      (when (match-string 8)
+        ;; Set the name.
+        (setq ns-name (match-string 8))
+
+        ;; If this is a class declaration, add :: to the namespace.
+        (setq ns-name (concat ns-name "::"))
+
+        ;; Save the indentation level.
+        (setq ns-indent (length (match-string 1))))
+
+      ;; If this is an assignment, save the token being
+      ;; assigned. `Please.print:` will be `Please.print`, `block:`
+      ;; will be `block`, etc.
+      (when (setq assign (match-string 3))
+          ;; The position of the match in the buffer.
+          (setq pos (match-beginning 3))
+
+          ;; The indent level of this match
+          (setq indent (length (match-string 1)))
+
+          ;; If we're within the context of a namespace, add that to the
+          ;; front of the assign, e.g.
+          ;; constructor: => Policeman::constructor
+          (when (and ns-name (> indent ns-indent))
+            (setq assign (concat ns-name assign)))
+
+          ;; Clear the namespace if we're no longer indented deeper
+          ;; than it.
+          (when (and ns-name (<= indent ns-indent))
+            (setq ns-name nil)
+            (setq ns-indent nil))
+
+          ;; Add this to the alist. Done.
+          (push (cons assign pos) index-alist)))
+
+    ;; Return the alist.
+    index-alist))
+
+;;
+;; Indentation
+;;
+
+;;; The theory is explained in the README.
+
+(defun coffee-indent-line ()
+  "Indent current line as CoffeeScript."
+  (interactive)
+
+  (if (= (point) (point-at-bol))
+      (insert-tab)
+    (save-excursion
+      (let ((prev-indent (coffee-previous-indent)))
+        ;; Shift one column to the left
+        (beginning-of-line)
+        (insert-tab)
+
+        (when (= (point-at-bol) (point))
+          (forward-char coffee-tab-width))
+
+        ;; We're too far, remove all indentation.
+        (when (> (- (current-indentation) prev-indent) coffee-tab-width)
+          (backward-to-indentation 0)
+          (delete-region (point-at-bol) (point)))))))
+
+(defun coffee-previous-indent ()
+  "Return the indentation level of the previous non-blank line."
+  (save-excursion
+    (forward-line -1)
+    (if (bobp)
+        0
+      (progn
+        (while (and (looking-at "^[ \t]*$") (not (bobp))) (forward-line -1))
+        (current-indentation)))))
+
+(defun coffee-newline-and-indent ()
+  "Insert a newline and indent it to the same level as the previous line."
+  (interactive)
+
+  ;; Remember the current line indentation level,
+  ;; insert a newline, and indent the newline to the same
+  ;; level as the previous line.
+  (let ((prev-indent (current-indentation)))
+    (delete-horizontal-space t)
+    (newline)
+    (insert-tab (/ prev-indent coffee-tab-width))
+
+    ;; We need to insert an additional tab because the last line was special.
+    (when (coffee-line-wants-indent)
+      (insert-tab)))
+
+  ;; Last line was a comment so this one should probably be,
+  ;; too. Makes it easy to write multi-line comments (like the one I'm
+  ;; writing right now).
+  (when (coffee-previous-line-is-comment)
+    (insert "# ")))
+
+;; Indenters help determine whether the current line should be
+;; indented further based on the content of the previous line. If a
+;; line starts with `class', for instance, you're probably going to
+;; want to indent the next line.
+
+(defvar coffee-indenters-bol '("class" "for" "if" "try")
+  "Keywords or syntax whose presence at the start of a line means the
+next line should probably be indented.")
+
+(defun coffee-indenters-bol-regexp ()
+  "Builds a regexp out of `coffee-indenters-bol' words."
+  (regexp-opt coffee-indenters-bol 'words))
+
+(defvar coffee-indenters-eol '(?> ?{ ?\[)
+  "Single characters at the end of a line that mean the next line
+should probably be indented.")
+
+(defun coffee-line-wants-indent ()
+  "Return t if the current line should be indented relative to the
+previous line."
+  (interactive)
+
+  (save-excursion
+    (let ((indenter-at-bol) (indenter-at-eol))
+      ;; Go back a line and to the first character.
+      (forward-line -1)
+      (backward-to-indentation 0)
+
+      ;; If the next few characters match one of our magic indenter
+      ;; keywords, we want to indent the line we were on originally.
+      (when (looking-at (coffee-indenters-bol-regexp))
+        (setq indenter-at-bol t))
+
+      ;; If that didn't match, go to the back of the line and check to
+      ;; see if the last character matches one of our indenter
+      ;; characters.
+      (when (not indenter-at-bol)
+        (end-of-line)
+
+        ;; Optimized for speed - checks only the last character.
+        (let ((indenters coffee-indenters-eol))
+          (while indenters
+            (if (/= (char-before) (car indenters))
+                (setq indenters (cdr indenters))
+              (setq indenter-at-eol t)
+              (setq indenters nil)))))
+
+      ;; If we found an indenter, return `t'.
+      (or indenter-at-bol indenter-at-eol))))
+
+(defun coffee-previous-line-is-comment ()
+  "Return t if the previous line is a CoffeeScript comment."
+  (save-excursion
+    (forward-line -1)
+    (coffee-line-is-comment)))
+
+(defun coffee-line-is-comment ()
+  "Return t if the current line is a CoffeeScript comment."
+  (save-excursion
+    (backward-to-indentation 0)
+    (= (char-after) (string-to-char "#"))))
+
+;;
+;; Define Major Mode
+;;
+
+(unless (fboundp 'prog-mode) (defalias 'prog-mode 'fundamental-mode))
+
+(defvar electric-indent-inhibit)
+
+;;;###autoload
+(define-derived-mode coffee-mode prog-mode
+  "Coffee"
+  "Major mode for editing CoffeeScript."
+
+  ;; code for syntax highlighting
+  (setq font-lock-defaults '((coffee-font-lock-keywords)))
+
+  ;; perl style comment: "# ..."
+  (set (make-local-variable 'comment-start) "#")
+
+  ;; Indentation.
+  (set (make-local-variable 'indent-line-function) 'coffee-indent-line)
+  (set (make-local-variable 'tab-width) coffee-tab-width)
+  ;; Because indentation is not redundant, we cannot safely reindent code.
+  (setq-local electric-indent-inhibit t)
+
+  ;; imenu
+  (make-local-variable 'imenu-create-index-function)
+  (setq imenu-create-index-function 'coffee-imenu-create-index)
+
+  ;; no tabs
+  (setq indent-tabs-mode nil))
+
+;;
+;; Compile-on-Save minor mode
+;;
+
+(defvar coffee-cos-mode-line " CoS")
+(make-variable-buffer-local 'coffee-cos-mode-line)
+
+(define-minor-mode coffee-cos-mode
+  "Toggle compile-on-save for coffee-mode."
+  :group 'coffee-cos :lighter coffee-cos-mode-line
+  (cond
+   (coffee-cos-mode
+    (add-hook 'after-save-hook 'coffee-compile-file nil t))
+   (t
+    (remove-hook 'after-save-hook 'coffee-compile-file t))))
+
+;;
+;; On Load
+;;
+
+;; Run coffee-mode for files ending in .coffee.
+;;;###autoload
+(add-to-list 'auto-mode-alist '("\\.coffee\\'" . coffee-mode))
+;;;###autoload
+(add-to-list 'auto-mode-alist '("Cakefile" . coffee-mode))
+
+(provide 'coffee-mode)
+;;; coffee-mode.el ends here
diff --git a/packages/coffee-mode/examples/basic.coffee b/packages/coffee-mode/examples/basic.coffee
new file mode 100644 (file)
index 0000000..d275632
--- /dev/null
@@ -0,0 +1,118 @@
+# These examples are taken from
+# http://jashkenas.github.com/coffee-script/
+
+song = ["do", "re", "mi", "fa", "so"]
+
+ages = {
+  max: 10
+  ida: 9
+  tim: 11
+}
+
+matrix = [
+  1, 0, 1
+  0, 0, 1
+  1, 1, 0
+]
+
+eldest = if 24 > 21 then "Liz" else "Ike"
+
+six = (one = 1) + (two = 2) + (three = 3)
+
+My.mood = greatly_improved if true
+
+# Unfancy JavaScript
+if happy and knows_it
+  cha_cha_cha()
+  false
+
+Account = (customer, cart) ->
+  @customer: customer
+  @cart: cart
+
+  $('.shopping_cart').bind 'click', (event) =>
+    @customer.purchase @cart
+
+class Animal
+  move: (meters) ->
+    alert @name + " moved " + meters + "m."
+
+  randomify: ->
+    @name.replace(/^[\w_-]*$/g, "-")
+
+class Snake extends Animal
+  constructor: (name) ->
+    @name: name
+
+  move: ->
+    alert "Slithering..."
+    super 5
+
+class Horse extends Animal
+  constructor: (name) ->
+    @name: name
+
+  move: ->
+    alert "Galloping..."
+    super 45
+
+sam = new Snake "Sammy the Python"
+tom = new Horse "Tommy the Palomino"
+
+sam.move()
+tom.move()
+if car.speed < speed_limit then accelerate()
+
+print "My name is " + @name
+
+gold = silver = the_field = "unknown"
+
+award_medals = (first, second, rest...) ->
+  gold:       first
+  silver:     second
+  the_field:  rest
+
+contenders = [
+  "Michael Phelps"
+  "Liu Xiang"
+]
+
+award_medals contenders...
+
+alert "Gold: " + gold
+alert "Silver: " + silver
+alert "The Field: " + the_field
+
+# Eat lunch.
+# what up
+# love it.
+lunch = eat food for food in ['toast', 'cheese', 'wine']
+
+$('#demo').click ->
+  asd
+# sup
+  # asd
+  # asdasd
+blah = true
+
+okay
+
+
+# Naive collision detection.
+for roid in asteroids
+  for roid2 in asteroids when roid isnt roid2
+    roid.explode() if roid.overlaps roid2
+
+years_old = max: 10, ida: 9, tim: 11
+
+ages = for child, age of years_old
+  child + " is " + age
+
+grade = (student) ->
+  if student.excellent_work
+    "A+"
+  else if student.okay_stuff
+    if student.tried_hard then "B" else "B-"
+  else
+    "C"
+
diff --git a/packages/coffee-mode/examples/edge.coffee b/packages/coffee-mode/examples/edge.coffee
new file mode 100644 (file)
index 0000000..7682a58
--- /dev/null
@@ -0,0 +1,16 @@
+# Edge cases
+
+if string.match /\// or string.match /\x1b/ or string.match /a\/b/
+  console.log "matched"
+
+string = "Something with a \"double quote"
+console.log string
+
+string = 'Something with a \'single quote'
+console.log string
+
+# TODO
+heredoc = """
+  Heredoc with a " double quote
+"""
+console.log heredoc
diff --git a/packages/coffee-mode/examples/imenu.coffee b/packages/coffee-mode/examples/imenu.coffee
new file mode 100644 (file)
index 0000000..fdf0025
--- /dev/null
@@ -0,0 +1,33 @@
+# Testing imenu
+regexp = /asdas/
+two = 4 / 2
+
+minus = (x, y) -> x - y
+
+String::length = -> 10
+
+class Person
+  print: ->
+    print 'My name is ' + this.name + '.'
+
+app =
+  window:  {width: 200, height: 200}
+  para:    'Welcome.'
+  button:  'OK'
+
+block = ->
+  print('potion')
+
+Please = {}
+Please.print = (word) ->
+  print(word)
+
+HomePage::get = (url) ->
+  session: url.query.session if url.query?
+
+class Policeman extends Person
+  constructor: (rank) ->
+    @rank: rank
+
+  print: ->
+    print 'My name is ' + this.name + " and I'm a " + this.rank + '.'
diff --git a/packages/company/.dir-locals.el b/packages/company/.dir-locals.el
new file mode 100644 (file)
index 0000000..79d9a12
--- /dev/null
@@ -0,0 +1,4 @@
+((nil . ((indent-tabs-mode . nil)
+         (fill-column . 80)
+         (sentence-end-double-space . t)
+         (emacs-lisp-docstring-fill-column . 75))))
diff --git a/packages/company/.gitignore b/packages/company/.gitignore
new file mode 100644 (file)
index 0000000..2ecd291
--- /dev/null
@@ -0,0 +1,2 @@
+*.elc
+ert.el
diff --git a/packages/company/.travis.yml b/packages/company/.travis.yml
new file mode 100644 (file)
index 0000000..cdf55d1
--- /dev/null
@@ -0,0 +1,32 @@
+# https://github.com/rolandwalker/emacs-travis
+
+language: emacs-lisp
+
+env:
+  matrix:
+    - EMACS=emacs23
+    - EMACS=emacs24
+    - EMACS=emacs-snapshot
+
+install:
+  - if [ "$EMACS" = "emacs23" ]; then
+        sudo apt-get update -qq &&
+        sudo apt-get install -qq emacs23-gtk emacs23-el;
+    fi
+  - if [ "$EMACS" = "emacs24" ]; then
+        sudo add-apt-repository -y ppa:cassou/emacs &&
+        sudo apt-get update -qq &&
+        sudo apt-get install -qq emacs24 emacs24-el;
+    fi
+  - if [ "$EMACS" = "emacs-snapshot" ]; then
+        sudo add-apt-repository -y ppa:cassou/emacs &&
+        sudo apt-get update -qq &&
+        sudo apt-get install -qq emacs-snapshot &&
+        sudo apt-get install -qq emacs-snapshot-el emacs-snapshot-gtk;
+    fi
+
+before_script:
+  make downloads
+
+script:
+  make test-batch EMACS=${EMACS}
diff --git a/packages/company/Makefile b/packages/company/Makefile
new file mode 100644 (file)
index 0000000..f11b04e
--- /dev/null
@@ -0,0 +1,37 @@
+EMACS=emacs
+CURL=curl --silent
+ERT_URL=http://git.savannah.gnu.org/cgit/emacs.git/plain/lisp/emacs-lisp/ert.el?h=emacs-24
+
+.PHONY: ert test test-batch
+
+package: *.el
+       @ver=`grep -o "Version: .*" company.el | cut -c 10-`; \
+       tar cjvf company-$$ver.tar.bz2 --mode 644 `git ls-files '*.el' | xargs`
+
+elpa: *.el
+       @version=`grep -o "Version: .*" company.el | cut -c 10-`; \
+       dir=company-$$version; \
+       mkdir -p "$$dir"; \
+       cp `git ls-files '*.el' | xargs` company-$$version; \
+       echo "(define-package \"company\" \"$$version\" \
+       \"Modular in-buffer completion framework\")" \
+       > "$$dir"/company-pkg.el; \
+       tar cvf company-$$version.tar --mode 644 "$$dir"
+
+clean:
+       @rm -rf company-*/ company-*.tar company-*.tar.bz2 *.elc ert.el
+
+test:
+       ${EMACS} -Q -nw -L . -l company-tests.el \
+       --eval "(let (pop-up-windows) (ert t))"
+
+test-batch:
+       ${EMACS} -Q --batch -L . -l company-tests.el \
+       --eval "(ert-run-tests-batch-and-exit '(not (tag interactive)))"
+
+downloads:
+       ${EMACS} -Q --batch -l ert || \
+       ${CURL} ${ERT_URL} > ert.el
+
+compile:
+       ${EMACS} -Q --batch -L . -f batch-byte-compile company.el company-*.el
diff --git a/packages/company/NEWS.md b/packages/company/NEWS.md
new file mode 100644 (file)
index 0000000..8c43c58
--- /dev/null
@@ -0,0 +1,192 @@
+# History of user-visible changes
+
+## 2013-09-28 (0.6.12)
+
+* Default value of `company-begin-commands` changed to `(self-insert-command)`.
+* Futher improvement in `org-indent-mode` compatibility.
+
+## 2013-08-18 (0.6.11)
+
+* `company-template-c-like-templatify` removes all text after closing paren, for
+  use in backends that display additional info there.
+* `company-cmake` is now bundled.
+* Better `linum` compatibility in Emacs <= 24.2.
+* `company-global-modes`: New option.
+
+## 2013-05-26 (0.6.10)
+
+* Plays nicer with `org-indent-mode`.
+* Works in horizontally scrolled windows.
+
+## 2013-05-10 (0.6.9)
+
+* `company-capf` respects `:exit-function` completion property.
+* `company-backends`: `prefix` command can return `t` in the cdr.
+* `company-clang-begin-after-member-access`: New option.
+* Mouse click outside the tooltip aborts completion.
+* `company-clang` uses standard input to pass the contents of current buffer to
+  Clang 2.9+, otherwise saves the buffer and passes the path to the file.
+* `company-clang-auto-save` option has been removed.
+* Better interaction with `outline-minor-mode`.
+* `company-dabbrev-code` supports all `prog-mode` derivatives.
+
+## 2013-04-16 (0.6.8)
+
+* `company-auto-complete` is disabled by default.
+* `company-auto-complete-chars` default value includes fewer syntax classes.
+* In expanded function calls, arguments skipped by the user default to "argN".
+* `company-eclim` and `company-clang` do not strip argument types from fields.
+* `company-clang` expands function calls for all three modes now.
+* `company-clang` supports `c++-mode` by default.
+
+## 2013-04-05 (0.6.7)
+
+* Two `company-elisp` tweaks.
+
+## 2013-04-01 (0.6.6)
+
+* `company-elisp` doesn't offer completions when typing the name and the
+  arguments of a new function or macro definition, allowing to fall back to
+  other back-ends like `company-dabbrev-code`.
+
+## 2013-03-30 (0.6.5)
+
+* Fixed keybindings when running in a terminal.
+* `company-elisp-show-locals-first`: new customizable variable.
+* `company-elisp` shows more accurate and comprehensive candidates list.
+
+## 2013-03-26 (0.6.4)
+
+* `company-eclim` shows valid completions after an opening paren.
+* Expanded template does not get removed until the point leaves it.  After your
+  input the last argument in a method call expanded by `company-eclim`, you can
+  press `<tab>` once more, to jump after the closing paren.  No other bundled
+  back-ends are affected.
+
+## 2013-03-25 (0.6.3)
+
+* New tooltip face colors used on themes with light background.
+* Pseudo-tooltip stays up-to-date when text is inserted after the point.
+* Fixed `company-require-match` mechanics.
+
+## 2013-03-24 (0.6.2)
+
+* `global-company-mode` is now autoloaded.
+
+## 2013-03-23 (0.6.1)
+
+* Documented `init` and `post-completion` back-end commands.
+* `company-eclim` and `company-clang` only expand the template on explicit user
+  action (such as `company-complete-{selection,number,mouse}`).
+* `company-template` has some breaking changes.  When point is at one of the
+  fields, it's displayed at the beginning, not right after it; `<tab>` jumps to
+  the next field, `forward-word` and `subword-forward` remappings are removed;
+  when you jump to the next field, if the current one hasn't been edited, the
+  overlay gets removed but the text remains.
+* `company-eclim` shows method overloads and expands templates for calls.
+* `company-clang-objc-templatify` does not insert spaces after colons anymore.
+* `company-clang` is now only initialized in supported buffers.
+  So, no error messages if you don't have Clang until you open a C file.
+* `company-clang` recognizes Clang included in recent Xcode.
+* New commands `company-select-previous-or-abort` and
+  `company-select-next-or-abort`, bound to `<up>` and `<down>`.
+
+## 2013-03-19 (0.6)
+
+* Across-the-board bugfixing.
+* `company-pysmell` is not used by default anymore.
+* Loading of `nxml`, `semantic`, `pymacs` and `ropemacs` is now deferred.
+* Candidates from grouped back-ends are merged more conservatively: only
+  back-ends that return the same prefix at point are used.
+* `company-clang` now shows meta information, too.
+* Some performance improvements.
+* Fixed two old tooltip annoyances.
+* Instead of `overrriding-terminal-local-map`, we're now using
+  `emulation-mode-map-alists` (experimental).  This largely means that when the
+  completion keymap is active, other minor modes' keymaps are still used, so,
+  for example, it's not as easy to accidentally circumvent `paredit-mode`
+  when it's enabled.
+* `company-elisp` has seen some improvements.
+* Added `company-capf`: completion adapter using
+  `completion-at-point-functions`.  (Stefan Monnier)
+* Clang completions now include macros and are case-sensitive.
+* Switching between tag files now works correctly with `company-etags`.
+
+## 2010-02-24 (0.5)
+
+* `company-ropemacs` now provides location and docs.  (Fernando H. Silva)
+* Added `company-with-candidate-inserted` macro.
+* Added `company-clang` back-end.
+* Added new mechanism for non-consecutive insertion.
+  (So far only used by clang for ObjC.)
+* The semantic back-end now shows meta information for local symbols.
+* Added compatibility for CEDET in Emacs 23.2 and from CVS.  (Oleg Andreev)
+
+## 2009-05-07 (0.4.3)
+
+* Added `company-other-backend`.
+* Idle completion no longer interrupts multi-key command input.
+* Added `company-ropemacs` and `company-pysmell` back-ends.
+
+## 2009-04-25 (0.4.2)
+
+* In C modes . and -> now count towards `company-minimum-prefix-length`.
+* Reverted default front-end back to `company-preview-if-just-one-frontend`.
+* The pseudo tooltip will no longer be clipped at the right window edge.
+* Added `company-tooltip-minimum`.
+* Windows compatibility fixes.
+
+## 2009-04-19 (0.4.1)
+
+* Added `global-company-mode`.
+* Performance enhancements.
+* Added `company-eclim` back-end.
+* Added safer workaround for Emacs `posn-col-row` bug.
+
+## 2009-04-18 (0.4)
+
+* Automatic completion is now aborted if the prefix gets too short.
+* Added option `company-dabbrev-time-limit`.
+* `company-backends` now supports merging back-ends.
+* Added back-end `company-dabbrev-code` for generic code.
+* Fixed `company-begin-with`.
+
+## 2009-04-15 (0.3.1)
+
+* Added 'stop prefix to prevent dabbrev from completing inside of symbols.
+* Fixed issues with tabbar-mode and line-spacing.
+* Performance enhancements.
+
+## 2009-04-12 (0.3)
+
+* Added `company-begin-commands` option.
+* Added abbrev, tempo and Xcode back-ends.
+* Back-ends are now interactive.  You can start them with M-x backend-name.
+* Added `company-begin-with` for starting company from elisp-code.
+* Added hooks.
+* Added `company-require-match` and `company-auto-complete` options.
+
+## 2009-04-05 (0.2.1)
+
+* Improved Emacs Lisp back-end behavior for local variables.
+* Added `company-elisp-detect-function-context` option.
+* The mouse can now be used for selection.
+
+## 2009-03-22 (0.2)
+
+* Added `company-show-location`.
+* Added etags back-end.
+* Added work-around for end-of-buffer bug.
+* Added `company-filter-candidates`.
+* More local Lisp variables are now included in the candidates.
+
+## 2009-03-21 (0.1.5)
+
+* Fixed elisp documentation buffer always showing the same doc.
+* Added `company-echo-strip-common-frontend`.
+* Added `company-show-numbers` option and M-0 ... M-9 default bindings.
+* Don't hide the echo message if it isn't shown.
+
+## 2009-03-20 (0.1)
+
+* Initial release.
diff --git a/packages/company/README.md b/packages/company/README.md
new file mode 100644 (file)
index 0000000..4f79bbc
--- /dev/null
@@ -0,0 +1,4 @@
+See the [homepage](http://company-mode.github.com/).
+[![githalytics.com alpha](https://cruel-carlota.pagodabox.com/336ef4be2595a7859d52e2c17b7da2b2 "githalytics.com")](http://githalytics.com/company-mode/company-mode)
+
+[![Build Status](https://travis-ci.org/company-mode/company-mode.png?branch=master)](https://travis-ci.org/company-mode/company-mode)
diff --git a/packages/company/company-abbrev.el b/packages/company/company-abbrev.el
new file mode 100644 (file)
index 0000000..0c4e327
--- /dev/null
@@ -0,0 +1,51 @@
+;;; company-abbrev.el --- company-mode completion back-end for abbrev
+
+;; Copyright (C) 2009-2011  Free Software Foundation, Inc.
+
+;; Author: Nikolaj Schumacher
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+
+;;; Code:
+
+(require 'company)
+(eval-when-compile (require 'cl))
+(require 'abbrev)
+
+(defun company-abbrev-insert (match)
+  "Replace MATCH with the expanded abbrev."
+  (expand-abbrev))
+
+;;;###autoload
+(defun company-abbrev (command &optional arg &rest ignored)
+  "`company-mode' completion back-end for abbrev."
+  (interactive (list 'interactive))
+  (case command
+    (interactive (company-begin-backend 'company-abbrev
+                                        'company-abbrev-insert))
+    (prefix (company-grab-symbol))
+    (candidates (nconc
+                 (delete "" (all-completions arg global-abbrev-table))
+                 (delete "" (all-completions arg local-abbrev-table))))
+    (meta (abbrev-expansion arg))
+    (require-match t)))
+
+(provide 'company-abbrev)
+;;; company-abbrev.el ends here
diff --git a/packages/company/company-capf.el b/packages/company/company-capf.el
new file mode 100644 (file)
index 0000000..2d20bee
--- /dev/null
@@ -0,0 +1,87 @@
+;;; company-capf.el --- company-mode completion-at-point-functions back-end -*- lexical-binding: t -*-
+
+;; Copyright (C) 2013  Free Software Foundation, Inc.
+
+;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+
+;;; Code:
+
+(defun company--capf-data ()
+  (let ((data (run-hook-wrapped 'completion-at-point-functions
+                                ;; Ignore misbehaving functions.
+                                #'completion--capf-wrapper 'optimist)))
+    (when (consp data) data)))
+
+(defun company-capf (command &optional arg &rest _args)
+  "`company-mode' back-end using `completion-at-point-functions'.
+Requires Emacs 24.1 or newer."
+  (interactive (list 'interactive))
+  (pcase command
+    (`interactive (company-begin-backend 'company-capf))
+    (`prefix
+     (let ((res (company--capf-data)))
+       (when res
+         (if (> (nth 2 res) (point))
+             'stop
+           (buffer-substring-no-properties (nth 1 res) (point))))))
+    (`candidates
+     (let ((res (company--capf-data)))
+       (when res
+         (let* ((table (nth 3 res))
+                (pred (plist-get (nthcdr 4 res) :predicate))
+                (meta (completion-metadata
+                      (buffer-substring (nth 1 res) (nth 2 res))
+                      table pred))
+                (sortfun (cdr (assq 'display-sort-function meta)))
+                (candidates (all-completions arg table pred)))
+           (if sortfun (funcall sortfun candidates) candidates)))))
+    (`sorted
+     (let ((res (company--capf-data)))
+       (when res
+         (let ((meta (completion-metadata
+                      (buffer-substring (nth 1 res) (nth 2 res))
+                      (nth 3 res) (plist-get (nthcdr 4 res) :predicate))))
+           (cdr (assq 'display-sort-function meta))))))
+    (`duplicates nil) ;Don't bother.
+    (`no-cache t)     ;FIXME: Improve!
+    (`meta
+     (let ((f (plist-get (nthcdr 4 (company--capf-data)) :company-docsig)))
+       (when f (funcall f arg))))
+    (`doc-buffer
+     (let ((f (plist-get (nthcdr 4 (company--capf-data)) :company-doc-buffer)))
+       (when f (funcall f arg))))
+    (`location
+     (let ((f (plist-get (nthcdr 4 (company--capf-data)) :company-location)))
+       (when f (funcall f arg))))
+    (`require-match
+     (plist-get (nthcdr 4 (company--capf-data)) :company-require-match))
+    (`init nil)      ;Don't bother: plenty of other ways to initialize the code.
+    (`post-completion
+     (let* ((res (company--capf-data))
+            (exit-function (plist-get (nthcdr 4 res) :exit-function)))
+       (if exit-function
+           (funcall exit-function arg 'finished))))
+    ))
+
+(provide 'company-capf)
+
+;;; company-capf.el ends here
diff --git a/packages/company/company-clang.el b/packages/company/company-clang.el
new file mode 100644 (file)
index 0000000..6d1737a
--- /dev/null
@@ -0,0 +1,297 @@
+;;; company-clang.el --- company-mode completion back-end for Clang
+
+;; Copyright (C) 2009, 2011, 2013  Free Software Foundation, Inc.
+
+;; Author: Nikolaj Schumacher
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+
+;;; Code:
+
+(require 'company)
+(require 'company-template)
+(eval-when-compile (require 'cl))
+
+(defgroup company-clang nil
+  "Completion back-end for Clang."
+  :group 'company)
+
+(defcustom company-clang-executable
+  (executable-find "clang")
+  "Location of clang executable."
+  :type 'file)
+
+(defcustom company-clang-begin-after-member-access t
+  "When non-nil, automatic completion will start whenever the current
+symbol is preceded by \".\", \"->\" or \"::\", ignoring
+`company-minimum-prefix-length'.
+
+If `company-begin-commands' is a list, it should include `c-electric-lt-gt'
+and `c-electric-colon', for automatic completion right after \">\" and
+\":\".")
+
+(defcustom company-clang-arguments nil
+  "Additional arguments to pass to clang when completing.
+Prefix files (-include ...) can be selected with `company-clang-set-prefix'
+or automatically through a custom `company-clang-prefix-guesser'."
+  :type '(repeat (string :tag "Argument" nil)))
+
+(defcustom company-clang-prefix-guesser 'company-clang-guess-prefix
+  "A function to determine the prefix file for the current buffer."
+  :type '(function :tag "Guesser function" nil))
+
+(defvar company-clang-modes '(c-mode c++-mode objc-mode)
+  "Major modes which clang may complete.")
+
+;; prefix ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar company-clang--prefix nil)
+
+(defsubst company-clang--guess-pch-file (file)
+  (let ((dir (directory-file-name (file-name-directory file))))
+    (when (equal (file-name-nondirectory dir) "Classes")
+      (setq dir (file-name-directory dir)))
+    (car (directory-files dir t "\\([^.]h\\|[^h]\\).pch\\'" t))))
+
+(defsubst company-clang--file-substring (file beg end)
+  (with-temp-buffer
+    (insert-file-contents-literally file nil beg end)
+    (buffer-string)))
+
+(defun company-clang-guess-prefix ()
+  "Try to guess the prefix file for the current buffer."
+  ;; Prefixes seem to be called .pch.  Pre-compiled headers do, too.
+  ;; So we look at the magic number to rule them out.
+  (let* ((file (company-clang--guess-pch-file buffer-file-name))
+         (magic-number (and file (company-clang--file-substring file 0 4))))
+    (unless (member magic-number '("CPCH" "gpch"))
+      file)))
+
+(defun company-clang-set-prefix (&optional prefix)
+  "Use PREFIX as a prefix (-include ...) file for clang completion."
+  (interactive (let ((def (funcall company-clang-prefix-guesser)))
+     (unless (stringp def)
+       (setq def default-directory))
+     (list (read-file-name "Prefix file: "
+                           (when def (file-name-directory def))
+                           def t (when def (file-name-nondirectory def))))))
+  ;; TODO: pre-compile?
+  (setq company-clang--prefix (and (stringp prefix)
+                                   (file-regular-p prefix)
+                                   prefix)))
+
+;; Clean-up on exit.
+(add-hook 'kill-emacs-hook 'company-clang-set-prefix)
+
+;; parsing ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: Handle Pattern (syntactic hints would be neat).
+;; Do we ever see OVERLOAD (or OVERRIDE)?
+(defconst company-clang--completion-pattern
+  "^COMPLETION: \\_<\\(%s[a-zA-Z0-9_:]*\\)\\(?: : \\(.*\\)$\\)?$")
+
+(defconst company-clang--error-buffer-name "*clang error*")
+
+(defvar company-clang--meta-cache nil)
+
+(defun company-clang--lang-option ()
+     (if (eq major-mode 'objc-mode)
+         (if (string= "m" (file-name-extension buffer-file-name))
+             "objective-c" "objective-c++")
+       (substring (symbol-name major-mode) 0 -5)))
+
+(defun company-clang--parse-output (prefix objc)
+  (goto-char (point-min))
+  (let ((pattern (format company-clang--completion-pattern
+                         (regexp-quote prefix)))
+        (case-fold-search nil)
+        lines match)
+    (setq company-clang--meta-cache (make-hash-table :test 'equal))
+    (while (re-search-forward pattern nil t)
+      (setq match (match-string-no-properties 1))
+      (unless (equal match "Pattern")
+        (let ((meta (match-string-no-properties 2)))
+          (when (and meta (not (string= match meta)))
+            (setq meta (company-clang--strip-formatting meta))
+            (when (and (not objc) (string-match "\\((.*)\\)" meta))
+              (setq match (concat match (match-string 1 meta))))
+            (puthash match meta company-clang--meta-cache)))
+        (push match lines)))
+    lines))
+
+(defun company-clang--strip-formatting (text)
+  (replace-regexp-in-string
+   "#]" " "
+   (replace-regexp-in-string "[<{[]#\\|#[>}]" "" text t)
+   t))
+
+(defun company-clang--handle-error (res args)
+  (goto-char (point-min))
+  (let* ((buf (get-buffer-create company-clang--error-buffer-name))
+         (cmd (concat company-clang-executable " " (mapconcat 'identity args " ")))
+         (pattern (format company-clang--completion-pattern ""))
+         (err (if (re-search-forward pattern nil t)
+                  (buffer-substring-no-properties (point-min)
+                                                  (1- (match-beginning 0)))
+                ;; Warn the user more aggressively if no match was found.
+                (message "clang failed with error %d:\n%s" res cmd)
+                (buffer-string))))
+
+    (with-current-buffer buf
+      (let ((inhibit-read-only t))
+        (erase-buffer)
+        (insert (current-time-string)
+                (format "\nclang failed with error %d:\n" res)
+                cmd "\n\n")
+        (insert err)
+        (setq buffer-read-only t)
+        (goto-char (point-min))))))
+
+(defun company-clang--call-process (prefix &rest args)
+  (let ((objc (derived-mode-p 'objc-mode))
+        (buf (get-buffer-create "*clang-output*"))
+        res)
+    (with-current-buffer buf (erase-buffer))
+    (setq res (if (company-clang--auto-save-p)
+                  (apply 'call-process company-clang-executable nil buf nil args)
+                (apply 'call-process-region (point-min) (point-max)
+                       company-clang-executable nil buf nil args)))
+    (with-current-buffer buf
+      (unless (eq 0 res)
+        (company-clang--handle-error res args))
+      ;; Still try to get any useful input.
+      (company-clang--parse-output prefix objc))))
+
+(defsubst company-clang--build-location (pos)
+  (save-excursion
+    (goto-char pos)
+    (format "%s:%d:%d"
+            (if (company-clang--auto-save-p) buffer-file-name "-")
+            (line-number-at-pos)
+            (1+ (current-column)))))
+
+(defsubst company-clang--build-complete-args (pos)
+  (append '("-cc1" "-fsyntax-only" "-code-completion-macros")
+          (unless (company-clang--auto-save-p)
+            (list "-x" (company-clang--lang-option)))
+          company-clang-arguments
+          (when (stringp company-clang--prefix)
+            (list "-include" (expand-file-name company-clang--prefix)))
+          '("-code-completion-at")
+          (list (company-clang--build-location pos))
+          (list (if (company-clang--auto-save-p) buffer-file-name "-"))))
+
+(defun company-clang--candidates (prefix)
+  (and (company-clang--auto-save-p)
+       (buffer-modified-p)
+       (basic-save-buffer))
+  (when (null company-clang--prefix)
+    (company-clang-set-prefix (or (funcall company-clang-prefix-guesser)
+                                  'none)))
+  (apply 'company-clang--call-process
+         prefix
+         (company-clang--build-complete-args (- (point) (length prefix)))))
+
+(defun company-clang--prefix ()
+  (let ((symbol (company-grab-symbol)))
+    (if symbol
+        (if (and company-clang-begin-after-member-access
+                 (save-excursion
+                   (forward-char (- (length symbol)))
+                   (looking-back "\\.\\|->\\|::" (- (point) 2))))
+            (cons symbol t)
+          symbol)
+      'stop)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst company-clang-required-version 1.1)
+
+(defvar company-clang--version nil)
+
+(defun company-clang--auto-save-p ()
+  (< company-clang--version 2.9))
+
+(defsubst company-clang-version ()
+  "Return the version of `company-clang-executable'."
+  (with-temp-buffer
+    (call-process company-clang-executable nil t nil "--version")
+    (goto-char (point-min))
+    (if (re-search-forward "clang\\(?: version \\|-\\)\\([0-9.]+\\)" nil t)
+        (let ((ver (string-to-number (match-string-no-properties 1))))
+          (if (> ver 100)
+              (/ ver 100)
+            ver))
+      0)))
+
+(defun company-clang-objc-templatify (selector)
+  (let* ((end (point-marker))
+         (beg (- (point) (length selector)))
+         (templ (company-template-declare-template beg end))
+         (cnt 0))
+    (save-excursion
+      (goto-char beg)
+      (catch 'stop
+        (while (search-forward ":" end t)
+          (company-template-add-field templ (point) (format "arg%d" cnt))
+          (if (< (point) end)
+              (insert " ")
+            (throw 'stop t))
+          (incf cnt))))
+    (company-template-move-to-first templ)))
+
+(defun company-clang (command &optional arg &rest ignored)
+  "`company-mode' completion back-end for Clang.
+Clang is a parser for C and ObjC.  Clang version 1.1 or newer is required.
+
+Additional command line arguments can be specified in
+`company-clang-arguments'.  Prefix files (-include ...) can be selected
+with `company-clang-set-prefix' or automatically through a custom
+`company-clang-prefix-guesser'.
+
+With Clang versions before 2.9, we have to save the buffer before
+performing completion.  With Clang 2.9 and later, buffer contents are
+passed via standard input."
+  (interactive (list 'interactive))
+  (case command
+    (interactive (company-begin-backend 'company-clang))
+    (init (when (memq major-mode company-clang-modes)
+            (unless company-clang-executable
+              (error "Company found no clang executable"))
+            (setq company-clang--version (company-clang-version))
+            (when (< company-clang--version company-clang-required-version)
+              (error "Company requires clang version 1.1"))))
+    (prefix (and (memq major-mode company-clang-modes)
+                 buffer-file-name
+                 company-clang-executable
+                 (not (company-in-string-or-comment))
+                 (company-clang--prefix)))
+    (candidates (company-clang--candidates arg))
+    (meta (gethash arg company-clang--meta-cache))
+    (crop (and (string-match ":\\|(" arg)
+               (substring arg 0 (match-beginning 0))))
+    (post-completion (cond
+                      ((not (derived-mode-p 'objc-mode))
+                       (company-template-c-like-templatify arg))
+                      ((string-match ":" arg)
+                       (company-clang-objc-templatify arg))))))
+
+(provide 'company-clang)
+;;; company-clang.el ends here
diff --git a/packages/company/company-cmake.el b/packages/company/company-cmake.el
new file mode 100644 (file)
index 0000000..34359dc
--- /dev/null
@@ -0,0 +1,129 @@
+;;; company-cmake.el --- company-mode completion back-end for CMake
+
+;; Copyright (C) 2013  Free Software Foundation, Inc.
+
+;; Author: Chen Bin <chenbin DOT sh AT gmail>
+;; Version: 0.1
+
+;; This program is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; company-cmake offers completions for module names, variable names and
+;; commands used by CMake.  And their descriptions.
+
+;;; Code:
+
+(eval-when-compile (require 'cl))
+(require 'company)
+
+(defgroup company-cmake nil
+  "Completion back-end for CMake."
+  :group 'company)
+
+(defcustom company-cmake-executable
+  (executable-find "cmake")
+  "Location of cmake executable."
+  :type 'file)
+
+(defvar company-cmake-executable-arguments
+  '("--help-command-list"
+    "--help-module-list"
+    "--help-variable-list")
+  "The arguments we pass to cmake, separately.
+They affect which types of symbols we get completion candidates for.")
+
+(defvar company-cmake--completion-pattern
+  "^\\(%s[a-zA-Z0-9_]%s\\)$"
+  "Regexp to match the candidates.")
+
+(defvar company-cmake-modes '(cmake-mode)
+  "Major modes in which cmake may complete.")
+
+(defvar company-cmake--meta-command-cache nil
+  "Cache for command arguments to retrieve descriptions for the candidates.")
+
+(defun company-cmake--parse-output (prefix cmd)
+  "Analyze the temp buffer and collect lines."
+  (goto-char (point-min))
+  (let ((pattern (format company-cmake--completion-pattern
+                         (regexp-quote prefix)
+                         (if (zerop (length prefix)) "+" "*")))
+        (case-fold-search nil)
+        lines match)
+    (while (re-search-forward pattern nil t)
+      (setq match (match-string-no-properties 1))
+      (puthash match cmd company-cmake--meta-command-cache)
+      (push match lines))
+    lines))
+
+(defun company-cmake--candidates (prefix)
+  (let ((res 0)
+        results
+        cmd)
+    (setq company-cmake--meta-command-cache (make-hash-table :test 'equal))
+    (dolist (arg company-cmake-executable-arguments)
+      (with-temp-buffer
+        (setq res (call-process company-cmake-executable nil t nil arg))
+        (unless (eq 0 res)
+          (message "cmake executable exited with error=%d" res))
+        (setq cmd (replace-regexp-in-string "-list$" "" arg) )
+        (setq results (nconc results (company-cmake--parse-output prefix cmd)))))
+    results))
+
+(defun company-cmake--meta (prefix)
+  (let ((cmd-opts (gethash prefix company-cmake--meta-command-cache))
+        result)
+    (with-temp-buffer
+      (call-process company-cmake-executable nil t nil cmd-opts prefix)
+      ;; Go to the third line, trim it and return the result.
+      ;; Tested with cmake 2.8.9.
+      (goto-char (point-min))
+      (forward-line 2)
+      (setq result (buffer-substring-no-properties (line-beginning-position)
+                                                   (line-end-position)))
+      (setq result (replace-regexp-in-string "^[ \t\n\r]+" "" result))
+      result)))
+
+(defun company-cmake--doc-buffer (prefix)
+  (let ((cmd-opts (gethash prefix company-cmake--meta-command-cache)))
+    (with-temp-buffer
+      (call-process company-cmake-executable nil t nil cmd-opts prefix)
+      ;; Go to the third line, trim it and return the doc buffer.
+      ;; Tested with cmake 2.8.9.
+      (goto-char (point-min))
+      (forward-line 2)
+      (company-doc-buffer
+       (buffer-substring-no-properties (line-beginning-position)
+                                       (point-max))))))
+
+(defun company-cmake (command &optional arg &rest ignored)
+  "`company-mode' completion back-end for CMake.
+CMake is a cross-platform, open-source make system."
+  (interactive (list 'interactive))
+  (case command
+    (interactive (company-begin-backend 'company-cmake))
+    (init (when (memq major-mode company-cmake-modes)
+            (unless company-cmake-executable
+              (error "Company found no cmake executable"))))
+    (prefix (and (memq major-mode company-cmake-modes)
+                 (not (company-in-string-or-comment))
+                 (company-grab-symbol)))
+    (candidates (company-cmake--candidates arg))
+    (meta (company-cmake--meta arg))
+    (doc-buffer (company-cmake--doc-buffer arg))
+    ))
+
+(provide 'company-cmake)
+;;; company-cmake.el ends here
diff --git a/packages/company/company-css.el b/packages/company/company-css.el
new file mode 100644 (file)
index 0000000..11e195a
--- /dev/null
@@ -0,0 +1,305 @@
+;;; company-css.el --- company-mode completion back-end for css-mode
+
+;; Copyright (C) 2009, 2011  Free Software Foundation, Inc.
+
+;; Author: Nikolaj Schumacher
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'company)
+(eval-when-compile (require 'cl))
+
+(defconst company-css-property-alist
+  ;; see http://www.w3.org/TR/CSS21/propidx.html
+  '(("azimuth" angle "left-side" "far-left" "left" "center-left" "center"
+     "center-right" "right" "far-right" "right-side" "behind" "leftwards"
+     "rightwards")
+    ("background" background-color background-image background-repeat
+     background-attachment background-position)
+    ("background-attachment" "scroll" "fixed")
+    ("background-color" color "transparent")
+    ("background-image" uri "none")
+    ("background-position" percentage length "left" "center" "right" percentage
+     length "top" "center" "bottom" "left" "center" "right" "top" "center"
+     "bottom")
+    ("background-repeat" "repeat" "repeat-x" "repeat-y" "no-repeat")
+    ("border" border-width border-style border-color)
+    ("border-bottom" border)
+    ("border-bottom-color" border-color)
+    ("border-bottom-style" border-style)
+    ("border-bottom-width" border-width)
+    ("border-collapse" "collapse" "separate")
+    ("border-color" color "transparent")
+    ("border-left" border)
+    ("border-left-color" border-color)
+    ("border-left-style" border-style)
+    ("border-left-width" border-width)
+    ("border-right" border)
+    ("border-right-color" border-color)
+    ("border-right-style" border-style)
+    ("border-right-width" border-width)
+    ("border-spacing" length length)
+    ("border-style" border-style)
+    ("border-top" border)
+    ("border-top-color" border-color)
+    ("border-top-style" border-style)
+    ("border-top-width" border-width)
+    ("border-width" border-width)
+    ("bottom" length percentage "auto")
+    ("caption-side" "top" "bottom")
+    ("clear" "none" "left" "right" "both")
+    ("clip" shape "auto")
+    ("color" color)
+    ("content" "normal" "none" string uri counter "attr()" "open-quote"
+     "close-quote" "no-open-quote" "no-close-quote")
+    ("counter-increment" identifier integer "none")
+    ("counter-reset" identifier integer "none")
+    ("cue" cue-before cue-after)
+    ("cue-after" uri "none")
+    ("cue-before" uri "none")
+    ("cursor" uri "*" "auto" "crosshair" "default" "pointer" "move" "e-resize"
+     "ne-resize" "nw-resize" "n-resize" "se-resize" "sw-resize" "s-resize"
+     "w-resize" "text" "wait" "help" "progress")
+    ("direction" "ltr" "rtl")
+    ("display" "inline" "block" "list-item" "run-in" "inline-block" "table"
+     "inline-table" "table-row-group" "table-header-group" "table-footer-group"
+     "table-row" "table-column-group" "table-column" "table-cell"
+     "table-caption" "none")
+    ("elevation" angle "below" "level" "above" "higher" "lower")
+    ("empty-cells" "show" "hide")
+    ("float" "left" "right" "none")
+    ("font" font-style font-variant font-weight font-size "/" line-height
+     font-family "caption" "icon" "menu" "message-box" "small-caption"
+     "status-bar")
+    ("font-family" family-name generic-family)
+    ("font-size" absolute-size relative-size length percentage)
+    ("font-style" "normal" "italic" "oblique")
+    ("font-variant" "normal" "small-caps")
+    ("font-weight" "normal" "bold" "bolder" "lighter" "100" "200" "300" "400"
+     "500" "600" "700" "800" "900")
+    ("height" length percentage "auto")
+    ("left" length percentage "auto")
+    ("letter-spacing" "normal" length)
+    ("line-height" "normal" number length percentage)
+    ("list-style" list-style-type list-style-position list-style-image)
+    ("list-style-image" uri "none")
+    ("list-style-position" "inside" "outside")
+    ("list-style-type" "disc" "circle" "square" "decimal" "decimal-leading-zero"
+     "lower-roman" "upper-roman" "lower-greek" "lower-latin" "upper-latin"
+     "armenian" "georgian" "lower-alpha" "upper-alpha" "none")
+    ("margin" margin-width)
+    ("margin-bottom" margin-width)
+    ("margin-left" margin-width)
+    ("margin-right" margin-width)
+    ("margin-top" margin-width)
+    ("max-height" length percentage "none")
+    ("max-width" length percentage "none")
+    ("min-height" length percentage)
+    ("min-width" length percentage)
+    ("orphans" integer)
+    ("outline" outline-color outline-style outline-width)
+    ("outline-color" color "invert")
+    ("outline-style" border-style)
+    ("outline-width" border-width)
+    ("overflow" "visible" "hidden" "scroll" "auto")
+    ("padding" padding-width)
+    ("padding-bottom" padding-width)
+    ("padding-left" padding-width)
+    ("padding-right" padding-width)
+    ("padding-top" padding-width)
+    ("page-break-after" "auto" "always" "avoid" "left" "right")
+    ("page-break-before" "auto" "always" "avoid" "left" "right")
+    ("page-break-inside" "avoid" "auto")
+    ("pause" time percentage)
+    ("pause-after" time percentage)
+    ("pause-before" time percentage)
+    ("pitch" frequency "x-low" "low" "medium" "high" "x-high")
+    ("pitch-range" number)
+    ("play-during" uri "mix" "repeat" "auto" "none")
+    ("position" "static" "relative" "absolute" "fixed")
+    ("quotes" string string "none")
+    ("richness" number)
+    ("right" length percentage "auto")
+    ("speak" "normal" "none" "spell-out")
+    ("speak-header" "once" "always")
+    ("speak-numeral" "digits" "continuous")
+    ("speak-punctuation" "code" "none")
+    ("speech-rate" number "x-slow" "slow" "medium" "fast" "x-fast" "faster"
+     "slower")
+    ("stress" number)
+    ("table-layout" "auto" "fixed")
+    ("text-align" "left" "right" "center" "justify")
+    ("text-decoration" "none" "underline" "overline" "line-through" "blink")
+    ("text-indent" length percentage)
+    ("text-transform" "capitalize" "uppercase" "lowercase" "none")
+    ("top" length percentage "auto")
+    ("unicode-bidi" "normal" "embed" "bidi-override")
+    ("vertical-align" "baseline" "sub" "super" "top" "text-top" "middle"
+     "bottom" "text-bottom" percentage length)
+    ("visibility" "visible" "hidden" "collapse")
+    ("voice-family" specific-voice generic-voice "*" specific-voice
+     generic-voice)
+    ("volume" number percentage "silent" "x-soft" "soft" "medium" "loud"
+     "x-loud")
+    ("white-space" "normal" "pre" "nowrap" "pre-wrap" "pre-line")
+    ("widows" integer)
+    ("width" length percentage "auto")
+    ("word-spacing" "normal" length)
+    ("z-index" "auto" integer))
+  "A list of CSS properties and their possible values.")
+
+(defconst company-css-value-classes
+  '((absolute-size "xx-small" "x-small" "small" "medium" "large" "x-large"
+                   "xx-large")
+    (border-style "none" "hidden" "dotted" "dashed" "solid" "double" "groove"
+                  "ridge" "inset" "outset")
+    (color "aqua" "black" "blue" "fuchsia" "gray" "green" "lime" "maroon" "navy"
+           "olive" "orange" "purple" "red" "silver" "teal" "white" "yellow")
+    (counter "counter(,)")
+    (family-name "Courier" "Helvetica" "Times")
+    (generic-family "serif" "sans-serif" "cursive" "fantasy" "monospace")
+    (generic-voice "male" "female" "child")
+    (margin-width "auto") ;; length percentage
+    (relative-size "larger" "smaller")
+    (shape "rect(,,,)")
+    (uri "url()"))
+  "A list of CSS property value classes and their contents.")
+;; missing, because not completable
+;; <angle><frequency><identifier><integer><length><number><padding-width>
+;; <percentage><specific-voice><string><time><uri>
+
+(defconst company-css-html-tags
+  '("a" "abbr" "acronym" "address" "applet" "area" "b" "base" "basefont" "bdo"
+    "big" "blockquote" "body" "br" "button" "caption" "center" "cite" "code"
+    "col" "colgroup" "dd" "del" "dfn" "dir" "div" "dl" "dt" "em" "fieldset"
+    "font" "form" "frame" "frameset" "h1" "h2" "h3" "h4" "h5" "h6" "head" "hr"
+    "html" "i" "iframe" "img" "input" "ins" "isindex" "kbd" "label" "legend"
+    "li" "link" "map" "menu" "meta" "noframes" "noscript" "object" "ol"
+    "optgroup" "option" "p" "param" "pre" "q" "s" "samp" "script" "select"
+    "small" "span" "strike" "strong" "style" "sub" "sup" "table" "tbody" "td"
+    "textarea" "tfoot" "th" "thead" "title" "tr" "tt" "u" "ul" "var")
+  "A list of HTML tags for use in CSS completion.")
+
+(defconst company-css-pseudo-classes
+  '("active" "after" "before" "first" "first-child" "first-letter" "first-line"
+    "focus" "hover" "lang" "left" "link" "right" "visited")
+  "Identifiers for CSS pseudo-elements and pseudo-classes.")
+
+(defconst company-css-property-cache (make-hash-table :size 115 :test 'equal))
+
+(defun company-css-property-values (attribute)
+  "Access the `company-css-property-alist' cached and flattened."
+  (or (gethash attribute company-css-property-cache)
+      (let (results)
+        (dolist (value (cdr (assoc attribute company-css-property-alist)))
+          (if (symbolp value)
+              (dolist (child (or (cdr (assoc value company-css-value-classes))
+                                 (company-css-property-values
+                                  (symbol-name value))))
+                (add-to-list 'results child))
+            (add-to-list 'results value)))
+        (setq results (sort results 'string<))
+        (puthash attribute results company-css-property-cache)
+        results)))
+
+;;; bracket detection
+
+(defconst company-css-braces-syntax-table
+  (let ((table (make-syntax-table)))
+    (setf (aref table ?{) '(4 . 125))
+    (setf (aref table ?}) '(5 . 123))
+    table)
+  "A syntax table giving { and } paren syntax.")
+
+(defun company-css-inside-braces-p ()
+  "Return non-nil, if point is within matched { and }."
+  (ignore-errors
+    (with-syntax-table company-css-braces-syntax-table
+      (let ((parse-sexp-ignore-comments t))
+        (scan-lists (point) -1 1)))))
+
+;;; tags
+(defconst company-css-tag-regexp
+  (concat "\\(?:\\`\\|}\\)[[:space:]]*"
+          ;; multiple
+          "\\(?:"
+          ;; previous tags:
+          "\\(?:#\\|\\_<[[:alpha:]]\\)[[:alnum:]-#]*\\(?:\\[[^]]*\\]\\)?"
+          ;; space or selectors
+          "\\(?:[[:space:]]+\\|[[:space:]]*[+,>][[:space:]]*\\)"
+          "\\)*"
+          "\\(\\(?:#\\|\\_<[[:alpha:]]\\)\\(?:[[:alnum:]-#]*\\_>\\)?\\_>\\|\\)"
+          "\\=")
+  "A regular expression matching CSS tags.")
+
+;;; pseudo id
+(defconst company-css-pseudo-regexp
+  (concat "\\(?:\\`\\|}\\)[[:space:]]*"
+          ;; multiple
+          "\\(?:"
+          ;; previous tags:
+          "\\(?:#\\|\\_<[[:alpha:]]\\)[[:alnum:]-#]*\\(?:\\[[^]]*\\]\\)?"
+          ;; space or delimiters
+          "\\(?:[[:space:]]+\\|[[:space:]]*[+,>][[:space:]]*\\)"
+          "\\)*"
+          "\\(?:\\(?:\\#\\|\\_<[[:alpha:]]\\)[[:alnum:]-#]*\\):"
+          "\\([[:alpha:]-]+\\_>\\|\\)\\_>\\=")
+  "A regular expression matching CSS pseudo classes.")
+
+;;; properties
+
+(defun company-css-grab-property ()
+  "Return the CSS property before point, if any.
+Returns \"\" if no property found, but feasible at this position."
+  (when (company-css-inside-braces-p)
+    (company-grab-symbol)))
+
+;;; values
+(defconst company-css-property-value-regexp
+  "\\_<\\([[:alpha:]-]+\\):\\(?:[^};]*[[:space:]]+\\)?\\([^};]*\\_>\\|\\)\\="
+  "A regular expression matching CSS tags.")
+
+;;;###autoload
+(defun company-css (command &optional arg &rest ignored)
+  "`company-mode' completion back-end for `css-mode'."
+  (interactive (list 'interactive))
+  (case command
+    (interactive (company-begin-backend 'company-css))
+    (prefix (and (derived-mode-p 'css-mode)
+                 (or (company-grab company-css-tag-regexp 1)
+                     (company-grab company-css-pseudo-regexp 1)
+                     (company-grab company-css-property-value-regexp 2)
+                     (company-css-grab-property))))
+    (candidates
+     (cond
+      ((company-grab company-css-tag-regexp 1)
+       (all-completions arg company-css-html-tags))
+      ((company-grab company-css-pseudo-regexp 1)
+       (all-completions arg company-css-pseudo-classes))
+      ((company-grab company-css-property-value-regexp 2)
+       (all-completions arg
+                        (company-css-property-values
+                         (company-grab company-css-property-value-regexp 1))))
+      ((company-css-grab-property)
+       (all-completions arg company-css-property-alist))))
+    (sorted t)))
+
+(provide 'company-css)
+;;; company-css.el ends here
diff --git a/packages/company/company-dabbrev-code.el b/packages/company/company-dabbrev-code.el
new file mode 100644 (file)
index 0000000..e4c548e
--- /dev/null
@@ -0,0 +1,89 @@
+;;; company-dabbrev-code.el --- dabbrev-like company-mode back-end for code
+
+;; Copyright (C) 2009, 2011  Free Software Foundation, Inc.
+
+;; Author: Nikolaj Schumacher
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+
+;;; Code:
+
+(require 'company)
+(require 'company-dabbrev)
+(eval-when-compile (require 'cl))
+
+(defgroup company-dabbrev-code nil
+  "dabbrev-like completion back-end for code."
+  :group 'company)
+
+(defcustom company-dabbrev-code-modes
+  '(asm-mode batch-file-mode c++-mode c-mode cperl-mode csharp-mode css-mode
+    emacs-lisp-mode erlang-mode f90-mode fortran-mode haskell-mode java-mode
+    javascript-mode jde-mode js2-mode lisp-mode lua-mode objc-mode perl-mode
+    php-mode prog-mode python-mode ruby-mode scheme-mode shell-script-mode)
+  "Modes that use `company-dabbrev-code'.
+In all these modes `company-dabbrev-code' will complete only symbols, not text
+in comments or strings.  In other modes `company-dabbrev-code' will pass control
+to other back-ends \(e.g. `company-dabbrev'\).
+Value t means complete in all modes."
+  :type '(choice (repeat (symbol :tag "Major mode"))
+                 (const tag "All modes" t)))
+
+(defcustom company-dabbrev-code-other-buffers t
+  "Determines whether `company-dabbrev-code' should search other buffers.
+If `all', search all other buffers.  If t, search buffers with the same
+major mode.
+See also `company-dabbrev-code-time-limit'."
+  :type '(choice (const :tag "Off" nil)
+                 (const :tag "Same major mode" t)
+                 (const :tag "All" all)))
+
+(defcustom company-dabbrev-code-time-limit .5
+  "Determines how long `company-dabbrev-code' should look for matches."
+  :type '(choice (const :tag "Off" nil)
+                 (number :tag "Seconds")))
+
+(defsubst company-dabbrev-code--make-regexp (prefix)
+  (concat "\\_<" (if (equal prefix "")
+                     "\\([a-zA-Z]\\|\\s_\\)"
+                   (regexp-quote prefix))
+          "\\(\\sw\\|\\s_\\)*\\_>"))
+
+;;;###autoload
+(defun company-dabbrev-code (command &optional arg &rest ignored)
+  "dabbrev-like `company-mode' back-end for code.
+The back-end looks for all symbols in the current buffer that aren't in
+comments or strings."
+  (interactive (list 'interactive))
+  (case command
+    (interactive (company-begin-backend 'company-dabbrev-code))
+    (prefix (and (or (eq t company-dabbrev-code-modes)
+                     (apply 'derived-mode-p company-dabbrev-code-modes))
+                 (not (company-in-string-or-comment))
+                 (or (company-grab-symbol) 'stop)))
+    (candidates (let ((case-fold-search nil))
+                  (company-dabbrev--search
+                   (company-dabbrev-code--make-regexp arg)
+                   company-dabbrev-code-time-limit
+                   company-dabbrev-code-other-buffers t)))
+    (duplicates t)))
+
+(provide 'company-dabbrev-code)
+;;; company-dabbrev-code.el ends here
diff --git a/packages/company/company-dabbrev.el b/packages/company/company-dabbrev.el
new file mode 100644 (file)
index 0000000..1be9792
--- /dev/null
@@ -0,0 +1,127 @@
+;;; company-dabbrev.el --- dabbrev-like company-mode completion back-end
+
+;; Copyright (C) 2009, 2011  Free Software Foundation, Inc.
+
+;; Author: Nikolaj Schumacher
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+
+;;; Code:
+
+(require 'company)
+(eval-when-compile (require 'cl))
+
+(defgroup company-dabbrev nil
+  "dabbrev-like completion back-end."
+  :group 'company)
+
+(defcustom company-dabbrev-other-buffers 'all
+  "Determines whether `company-dabbrev' should search other buffers.
+If `all', search all other buffers.  If t, search buffers with the same
+major mode.
+See also `company-dabbrev-time-limit'."
+  :type '(choice (const :tag "Off" nil)
+                 (const :tag "Same major mode" t)
+                 (const :tag "All" all)))
+
+(defcustom company-dabbrev-time-limit .5
+  "Determines how many seconds `company-dabbrev' should look for matches."
+  :type '(choice (const :tag "Off" nil)
+                 (number :tag "Seconds")))
+
+(defcustom company-dabbrev-char-regexp "\\sw"
+  "A regular expression matching the characters `company-dabbrev' looks for."
+  :type 'regexp)
+
+(defmacro company-dabrev--time-limit-while (test start limit &rest body)
+  (declare (indent 3) (debug t))
+  `(let ((company-time-limit-while-counter 0))
+     (catch 'done
+       (while ,test
+         ,@body
+         (and ,limit
+              (eq (incf company-time-limit-while-counter) 25)
+              (setq company-time-limit-while-counter 0)
+              (> (float-time (time-since ,start)) ,limit)
+              (throw 'done 'company-time-out))))))
+
+(defsubst company-dabbrev--make-regexp (prefix)
+  (concat "\\<" (if (equal prefix "")
+              company-dabbrev-char-regexp
+            (regexp-quote prefix))
+          "\\(" company-dabbrev-char-regexp "\\)*\\>"))
+
+(defun company-dabbrev--search-buffer (regexp pos symbols start limit
+                                       ignore-comments)
+  (save-excursion
+    (let (match)
+      (goto-char (if pos (1- pos) (point-min)))
+      ;; search before pos
+      (company-dabrev--time-limit-while (re-search-backward regexp nil t)
+          start limit
+        (setq match (match-string-no-properties 0))
+        (if (and ignore-comments (company-in-string-or-comment))
+            (re-search-backward "\\s<\\|\\s!\\|\\s\"\\|\\s|" nil t)
+          (push match symbols)))
+      (goto-char (or pos (point-min)))
+      ;; search after pos
+      (company-dabrev--time-limit-while (re-search-forward regexp nil t)
+          start limit
+        (setq match (match-string-no-properties 0))
+        (if (and ignore-comments (company-in-string-or-comment))
+            (re-search-forward "\\s>\\|\\s!\\|\\s\"" nil t)
+          (push match symbols)))
+      symbols)))
+
+(defun company-dabbrev--search (regexp &optional limit other-buffers
+                                ignore-comments)
+  (let* ((start (current-time))
+         (symbols (company-dabbrev--search-buffer regexp (point) nil start limit
+                                                  ignore-comments)))
+    (when other-buffers
+      (dolist (buffer (delq (current-buffer) (buffer-list)))
+        (and (or (eq other-buffers 'all)
+                 (eq (buffer-local-value 'major-mode buffer) major-mode))
+             (with-current-buffer buffer
+               (setq symbols
+                     (company-dabbrev--search-buffer regexp nil symbols start
+                                                     limit ignore-comments))))
+        (and limit
+             (> (float-time (time-since start)) limit)
+             (return))))
+    symbols))
+
+;;;###autoload
+(defun company-dabbrev (command &optional arg &rest ignored)
+  "dabbrev-like `company-mode' completion back-end."
+  (interactive (list 'interactive))
+  (case command
+    (interactive (company-begin-backend 'company-dabbrev))
+    (prefix (company-grab-word))
+    (candidates
+     (mapcar 'downcase
+             (company-dabbrev--search (company-dabbrev--make-regexp arg)
+                                      company-dabbrev-time-limit
+                                      company-dabbrev-other-buffers)))
+    (ignore-case t)
+    (duplicates t)))
+
+(provide 'company-dabbrev)
+;;; company-dabbrev.el ends here
diff --git a/packages/company/company-eclim.el b/packages/company/company-eclim.el
new file mode 100644 (file)
index 0000000..70db7c3
--- /dev/null
@@ -0,0 +1,182 @@
+;;; company-eclim.el --- company-mode completion back-end for Eclim
+
+;; Copyright (C) 2009, 2011, 2013  Free Software Foundation, Inc.
+
+;; Author: Nikolaj Schumacher
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; Using `emacs-eclim' together with (or instead of) this back-end is
+;; recommended, as it allows you to use other Eclim features.
+;;
+;; The alternative back-end provided by `emacs-eclim' uses `yasnippet'
+;; instead of `company-template' to expand function calls, and it supports
+;; some languages other than Java.
+
+;;; Code:
+
+(require 'company)
+(require 'company-template)
+(eval-when-compile (require 'cl))
+
+(defgroup company-eclim nil
+  "Completion back-end for Eclim."
+  :group 'company)
+
+(defun company-eclim-executable-find ()
+  (let (file)
+    (dolist (eclipse-root '("/Applications/eclipse" "/usr/lib/eclipse"
+                            "/usr/local/lib/eclipse"))
+      (and (file-exists-p (setq file (expand-file-name "plugins" eclipse-root)))
+           (setq file (car (last (directory-files file t "^org.eclim_"))))
+           (file-exists-p (setq file (expand-file-name "bin/eclim" file)))
+           (return file)))))
+
+(defcustom company-eclim-executable
+  (or (executable-find "eclim") (company-eclim-executable-find))
+  "Location of eclim executable."
+  :type 'file)
+
+(defcustom company-eclim-auto-save t
+  "Determines whether to save the buffer when retrieving completions.
+eclim can only complete correctly when the buffer has been saved."
+  :type '(choice (const :tag "Off" nil)
+                 (const :tag "On" t)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar company-eclim--project-dir 'unknown)
+(make-variable-buffer-local 'company-eclim--project-dir)
+
+(defvar company-eclim--project-name nil)
+(make-variable-buffer-local 'company-eclim--project-name)
+
+(defvar company-eclim--doc nil)
+(make-variable-buffer-local 'company-eclim--doc)
+
+(declare-function json-read "json")
+(defvar json-array-type)
+
+(defun company-eclim--call-process (&rest args)
+  (let ((coding-system-for-read 'utf-8)
+        res)
+    (require 'json)
+    (with-temp-buffer
+      (if (= 0 (setq res (apply 'call-process company-eclim-executable nil t nil
+                                "-command" args)))
+          (let ((json-array-type 'list))
+            (goto-char (point-min))
+            (unless (eobp)
+              (json-read)))
+        (message "Company-eclim command failed with error %d:\n%s" res
+                 (buffer-substring (point-min) (point-max)))
+        nil))))
+
+(defun company-eclim--project-list ()
+  (company-eclim--call-process "project_list"))
+
+(defun company-eclim--project-dir ()
+  (if (eq company-eclim--project-dir 'unknown)
+      (setq company-eclim--project-dir
+            (directory-file-name
+             (expand-file-name
+              (company-locate-dominating-file buffer-file-name ".project"))))
+    company-eclim--project-dir))
+
+(defun company-eclim--project-name ()
+  (or company-eclim--project-name
+      (let ((dir (company-eclim--project-dir)))
+        (when dir
+          (setq company-eclim--project-name
+                (loop for project in (company-eclim--project-list)
+                      when (equal (cdr (assoc 'path project)) dir)
+                      return (cdr (assoc 'name project))))))))
+
+(defun company-eclim--candidates (prefix)
+  (interactive "d")
+  (let ((project-file (file-relative-name buffer-file-name
+                                          (company-eclim--project-dir))))
+    (when company-eclim-auto-save
+      (when (buffer-modified-p)
+        (basic-save-buffer))
+      ;; FIXME: Sometimes this isn't finished when we complete.
+      (company-eclim--call-process "java_src_update"
+                                   "-p" (company-eclim--project-name)
+                                   "-f" project-file))
+    (setq company-eclim--doc
+          (make-hash-table :test 'equal))
+    (dolist (item (cdr (assoc 'completions
+                              (company-eclim--call-process
+                               "java_complete" "-p" (company-eclim--project-name)
+                               "-f" project-file
+                               "-o" (number-to-string
+                                     (company-eclim--search-point prefix))
+                               "-e" "utf-8"
+                               "-l" "standard"))))
+      (let* ((meta (cdr (assoc 'info item)))
+             (completion meta))
+        (when (string-match " [:-]" completion)
+          (setq completion (substring completion 0 (match-beginning 0))))
+        (puthash completion meta company-eclim--doc))))
+  (let ((completion-ignore-case nil))
+    (all-completions prefix company-eclim--doc)))
+
+(defun company-eclim--search-point (prefix)
+  (if (or (plusp (length prefix)) (eq (char-before) ?.))
+      (1- (point))
+    (point)))
+
+(defun company-eclim--meta (candidate)
+  (gethash candidate company-eclim--doc))
+
+(defun company-eclim--prefix ()
+  (let ((prefix (company-grab-symbol)))
+    (when prefix
+      ;; Completion candidates for annotations don't include '@'.
+      (when (eq ?@ (string-to-char prefix))
+        (setq prefix (substring prefix 1)))
+      prefix)))
+
+(defun company-eclim (command &optional arg &rest ignored)
+  "`company-mode' completion back-end for Eclim.
+Eclim provides access to Eclipse Java IDE features for other editors.
+
+Eclim version 1.7.13 or newer (?) is required.
+
+Completions only work correctly when the buffer has been saved.
+`company-eclim-auto-save' determines whether to do this automatically."
+  (interactive (list 'interactive))
+  (case command
+    (interactive (company-begin-backend 'company-eclim))
+    (prefix (and (derived-mode-p 'java-mode 'jde-mode)
+                 buffer-file-name
+                 company-eclim-executable
+                 (company-eclim--project-name)
+                 (not (company-in-string-or-comment))
+                 (or (company-eclim--prefix) 'stop)))
+    (candidates (company-eclim--candidates arg))
+    (meta (company-eclim--meta arg))
+    ;; because "" doesn't return everything
+    (no-cache (equal arg ""))
+    (crop (when (string-match "(" arg)
+            (substring arg 0 (match-beginning 0))))
+    (post-completion (when (string-match "([^)]" arg)
+                       (company-template-c-like-templatify arg)))))
+
+(provide 'company-eclim)
+;;; company-eclim.el ends here
diff --git a/packages/company/company-elisp.el b/packages/company/company-elisp.el
new file mode 100644 (file)
index 0000000..5bfc27e
--- /dev/null
@@ -0,0 +1,225 @@
+;;; company-elisp.el --- company-mode completion back-end for Emacs Lisp -*- lexical-binding: t -*-
+
+;; Copyright (C) 2009, 2011-2013  Free Software Foundation, Inc.
+
+;; Author: Nikolaj Schumacher
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+
+;;; Code:
+
+(require 'company)
+(eval-when-compile (require 'cl))
+(require 'help-mode)
+(require 'find-func)
+
+(defgroup company-elisp nil
+  "Completion back-end for Emacs Lisp."
+  :group 'company)
+
+(defcustom company-elisp-detect-function-context t
+  "If enabled, offer Lisp functions only in appropriate contexts.
+Functions are offered for completion only after ' and \(."
+  :type '(choice (const :tag "Off" nil)
+                 (const :tag "On" t)))
+
+(defcustom company-elisp-show-locals-first t
+  "If enabled, locally bound variables and functions are displayed
+first in the candidates list."
+  :type '(choice (const :tag "Off" nil)
+                 (const :tag "On" t)))
+
+(defun company-elisp--prefix ()
+  (let ((prefix (company-grab-symbol)))
+    (if prefix
+        (when (if (company-in-string-or-comment)
+                  (= (char-before (- (point) (length prefix))) ?`)
+                (company-elisp--should-complete))
+          prefix)
+      'stop)))
+
+(defun company-elisp--predicate (symbol)
+  (or (boundp symbol)
+      (fboundp symbol)
+      (facep symbol)
+      (featurep symbol)))
+
+(defun company-elisp--fns-regexp (&rest names)
+  (concat "\\_<\\(?:cl-\\)?" (regexp-opt names) "\\*?\\_>"))
+
+(defvar company-elisp-parse-limit 30)
+(defvar company-elisp-parse-depth 100)
+
+(defvar company-elisp-defun-names '("defun" "defmacro" "defsubst"))
+
+(defvar company-elisp-var-binding-regexp
+  (apply #'company-elisp--fns-regexp "let" "lambda" "lexical-let"
+         company-elisp-defun-names)
+  "Regular expression matching head of a multiple variable bindings form.")
+
+(defvar company-elisp-var-binding-regexp-1
+  (company-elisp--fns-regexp "dolist" "dotimes")
+  "Regular expression matching head of a form with one variable binding.")
+
+(defvar company-elisp-fun-binding-regexp
+  (company-elisp--fns-regexp "flet" "labels")
+  "Regular expression matching head of a function bindings form.")
+
+(defvar company-elisp-defuns-regexp
+  (concat "([ \t\n]*"
+          (apply #'company-elisp--fns-regexp company-elisp-defun-names)))
+
+(defun company-elisp--should-complete ()
+  (let ((start (point))
+        (depth (car (syntax-ppss))))
+    (not
+     (when (> depth 0)
+       (save-excursion
+         (up-list (- depth))
+         (when (looking-at company-elisp-defuns-regexp)
+           (forward-char)
+           (forward-sexp 1)
+           (unless (= (point) start)
+             (condition-case nil
+                 (let ((args-end (scan-sexps (point) 2)))
+                   (or (null args-end)
+                       (> args-end start)))
+               (scan-error
+                t)))))))))
+
+(defun company-elisp--locals (prefix functions-p)
+  (let ((regexp (concat "[ \t\n]*\\(\\_<" (regexp-quote prefix)
+                        "\\(?:\\sw\\|\\s_\\)*\\_>\\)"))
+        (pos (point))
+        res)
+    (condition-case nil
+        (save-excursion
+          (dotimes (_ company-elisp-parse-depth)
+            (up-list -1)
+            (save-excursion
+              (when (eq (char-after) ?\()
+                (forward-char 1)
+                (when (ignore-errors
+                        (save-excursion (forward-list)
+                                        (<= (point) pos)))
+                  (skip-chars-forward " \t\n")
+                  (cond
+                   ((looking-at (if functions-p
+                                    company-elisp-fun-binding-regexp
+                                  company-elisp-var-binding-regexp))
+                    (down-list 1)
+                    (condition-case nil
+                        (dotimes (_ company-elisp-parse-limit)
+                          (save-excursion
+                            (when (looking-at "[ \t\n]*(")
+                              (down-list 1))
+                            (when (looking-at regexp)
+                              (pushnew (match-string-no-properties 1) res)))
+                          (forward-sexp))
+                      (scan-error nil)))
+                   ((unless functions-p
+                      (looking-at company-elisp-var-binding-regexp-1))
+                    (down-list 1)
+                    (when (looking-at regexp)
+                      (pushnew (match-string-no-properties 1) res)))))))))
+      (scan-error nil))
+    res))
+
+(defun company-elisp-candidates (prefix)
+  (let* ((predicate (company-elisp--candidates-predicate prefix))
+         (locals (company-elisp--locals prefix (eq predicate 'fboundp)))
+         (globals (company-elisp--globals prefix predicate))
+         (locals (loop for local in locals
+                       when (not (member local globals))
+                       collect local)))
+    (if company-elisp-show-locals-first
+        (append (sort locals 'string<)
+                (sort globals 'string<))
+      (append locals globals))))
+
+(defun company-elisp--globals (prefix predicate)
+  (all-completions prefix obarray predicate))
+
+(defun company-elisp--candidates-predicate (prefix)
+  (let* ((completion-ignore-case nil)
+         (beg (- (point) (length prefix)))
+         (before (char-before beg)))
+    (if (and company-elisp-detect-function-context
+             (not (memq before '(?' ?`))))
+        (if (and (eq before ?\()
+                 (not
+                  (save-excursion
+                    (ignore-errors
+                      (goto-char (1- beg))
+                      (or (company-elisp--before-binding-varlist-p)
+                          (progn
+                            (up-list -1)
+                            (company-elisp--before-binding-varlist-p)))))))
+            'fboundp
+          'boundp)
+      'company-elisp--predicate)))
+
+(defun company-elisp--before-binding-varlist-p ()
+  (save-excursion
+    (and (prog1 (search-backward "(")
+           (forward-char 1))
+         (looking-at company-elisp-var-binding-regexp))))
+
+(defun company-elisp--doc (symbol)
+  (let* ((symbol (intern symbol))
+         (doc (if (fboundp symbol)
+                  (documentation symbol t)
+                (documentation-property symbol 'variable-documentation t))))
+    (and (stringp doc)
+         (string-match ".*$" doc)
+         (match-string 0 doc))))
+
+;;;###autoload
+(defun company-elisp (command &optional arg &rest ignored)
+  "`company-mode' completion back-end for Emacs Lisp."
+  (interactive (list 'interactive))
+  (case command
+    (interactive (company-begin-backend 'company-elisp))
+    (prefix (and (eq (derived-mode-p 'emacs-lisp-mode) 'emacs-lisp-mode)
+                 (company-elisp--prefix)))
+    (candidates (company-elisp-candidates arg))
+    (sorted company-elisp-show-locals-first)
+    (meta (company-elisp--doc arg))
+    (doc-buffer (let ((symbol (intern arg)))
+                  (save-window-excursion
+                    (ignore-errors
+                      (cond
+                       ((fboundp symbol) (describe-function symbol))
+                       ((boundp symbol) (describe-variable symbol))
+                       ((featurep symbol) (describe-package symbol))
+                       ((facep symbol) (describe-face symbol))
+                       (t (signal 'user-error nil)))
+                      (help-buffer)))))
+    (location (let ((sym (intern arg)))
+                (cond
+                 ((fboundp sym) (find-definition-noselect sym nil))
+                 ((boundp sym) (find-definition-noselect sym 'defvar))
+                 ((featurep sym) (cons (find-file-noselect (find-library-name
+                                                            (symbol-name sym)))
+                                       0))
+                 ((facep sym) (find-definition-noselect sym 'defface)))))))
+
+(provide 'company-elisp)
+;;; company-elisp.el ends here
diff --git a/packages/company/company-etags.el b/packages/company/company-etags.el
new file mode 100644 (file)
index 0000000..956e294
--- /dev/null
@@ -0,0 +1,88 @@
+;;; company-etags.el --- company-mode completion back-end for etags
+
+;; Copyright (C) 2009-2011  Free Software Foundation, Inc.
+
+;; Author: Nikolaj Schumacher
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+
+;;; Code:
+
+(require 'company)
+(require 'etags)
+
+(defgroup company-etags nil
+  "Completion back-end for etags."
+  :group 'company)
+
+(defcustom company-etags-use-main-table-list t
+  "Always search `tags-table-list' if set.
+If this is disabled, `company-etags' will try to find the one table for each
+buffer automatically."
+  :type '(choice (const :tag "off" nil)
+                 (const :tag "on" t)))
+
+(defvar company-etags-modes '(c-mode objc-mode c++-mode java-mode jde-mode
+                              pascal-mode perl-mode python-mode))
+
+(defvar company-etags-buffer-table 'unknown)
+(make-variable-buffer-local 'company-etags-buffer-table)
+
+(defun company-etags-find-table ()
+  (let ((file (company-locate-dominating-file (or buffer-file-name
+                                                  default-directory)
+                                              "TAGS")))
+    (when file
+      (list (expand-file-name file)))))
+
+(defun company-etags-buffer-table ()
+  (or (and company-etags-use-main-table-list tags-table-list)
+      (if (eq company-etags-buffer-table 'unknown)
+          (setq company-etags-buffer-table (company-etags-find-table))
+        company-etags-buffer-table)))
+
+(defun company-etags--candidates (prefix)
+  (let ((tags-table-list (company-etags-buffer-table))
+        (completion-ignore-case nil))
+    (and (or tags-file-name tags-table-list)
+         (fboundp 'tags-completion-table)
+         (save-excursion
+           (visit-tags-table-buffer)
+           (all-completions prefix (tags-completion-table))))))
+
+;;;###autoload
+(defun company-etags (command &optional arg &rest ignored)
+  "`company-mode' completion back-end for etags."
+  (interactive (list 'interactive))
+  (case command
+    (interactive (company-begin-backend 'company-etags))
+    (prefix (and (memq major-mode company-etags-modes)
+                 (not (company-in-string-or-comment))
+                 (company-etags-buffer-table)
+                 (or (company-grab-symbol) 'stop)))
+    (candidates (company-etags--candidates arg))
+    (location (let ((tags-table-list (company-etags-buffer-table)))
+                (when (fboundp 'find-tag-noselect)
+                  (save-excursion
+                    (let ((buffer (find-tag-noselect arg)))
+                      (cons buffer (with-current-buffer buffer (point))))))))))
+
+(provide 'company-etags)
+;;; company-etags.el ends here
diff --git a/packages/company/company-files.el b/packages/company/company-files.el
new file mode 100644 (file)
index 0000000..b897e3d
--- /dev/null
@@ -0,0 +1,91 @@
+;;; company-files.el --- company-mode completion back-end for file names
+
+;; Copyright (C) 2009-2011, 2013  Free Software Foundation, Inc.
+
+;; Author: Nikolaj Schumacher
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+
+;;; Code:
+
+(require 'company)
+(eval-when-compile (require 'cl))
+
+(defun company-files-directory-files (dir prefix)
+  (ignore-errors
+    (if (equal prefix "")
+        (directory-files dir nil "\\`[^.]\\|\\`.[^.]")
+      (file-name-all-completions prefix dir))))
+
+(defvar company-files-regexps
+  (let ((begin (if (eq system-type 'windows-nt)
+                   "[a-z][A-Z]\\"
+                 "~?/")))
+    (list (concat "\"\\(" begin "[^\"\n]*\\)")
+          (concat "\'\\(" begin "[^\'\n]*\\)")
+          (concat "\\(?:[ \t]\\|^\\)\\(" begin "[^ \t\n]*\\)"))))
+
+(defun company-files-grab-existing-name ()
+  ;; Grab file names with spaces, only when they include quotes.
+  (let (file dir)
+    (and (dolist (regexp company-files-regexps)
+           (when (setq file (company-grab-line regexp 1))
+             (return file)))
+         (setq dir (file-name-directory file))
+         (not (string-match "//" dir))
+         (file-exists-p dir)
+         (file-name-all-completions (file-name-nondirectory file) dir)
+         file)))
+
+(defvar company-files-completion-cache nil)
+
+(defun company-files-complete (prefix)
+  (let* ((dir (file-name-directory prefix))
+         (file (file-name-nondirectory prefix))
+         candidates)
+    (unless (equal dir (car company-files-completion-cache))
+      (dolist (file (company-files-directory-files dir file))
+        (setq file (concat dir file))
+        (push file candidates)
+        (when (file-directory-p file)
+          ;; Add one level of children.
+          (dolist (child (company-files-directory-files file ""))
+            (push (concat file
+                          (unless (eq (aref file (1- (length file))) ?/) "/")
+                          child) candidates))))
+      (setq company-files-completion-cache (cons dir (nreverse candidates))))
+    (all-completions prefix
+                     (cdr company-files-completion-cache))))
+
+;;;###autoload
+(defun company-files (command &optional arg &rest ignored)
+  "`company-mode' completion back-end existing file names."
+  (interactive (list 'interactive))
+  (case command
+    (interactive (company-begin-backend 'company-files))
+    (prefix (company-files-grab-existing-name))
+    (candidates (company-files-complete arg))
+    (location (cons (dired-noselect
+                     (file-name-directory (directory-file-name arg))) 1))
+    (sorted t)
+    (no-cache t)))
+
+(provide 'company-files)
+;;; company-files.el ends here
diff --git a/packages/company/company-gtags.el b/packages/company/company-gtags.el
new file mode 100644 (file)
index 0000000..6b4e399
--- /dev/null
@@ -0,0 +1,90 @@
+;;; company-gtags.el --- company-mode completion back-end for GNU Global
+
+;; Copyright (C) 2009-2011  Free Software Foundation, Inc.
+
+;; Author: Nikolaj Schumacher
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+
+;;; Code:
+
+(require 'company)
+(eval-when-compile (require 'cl))
+
+(defgroup company-gtags nil
+  "Completion back-end for GNU Global."
+  :group 'company)
+
+(defcustom company-gtags-executable
+  (executable-find "global")
+  "Location of GNU global executable."
+  :type 'string)
+
+(define-obsolete-variable-alias
+  'company-gtags-gnu-global-program-name
+  'company-gtags-executable "earlier")
+
+(defvar company-gtags--tags-available-p 'unknown)
+(make-variable-buffer-local 'company-gtags--tags-available-p)
+
+(defvar company-gtags-modes '(c-mode c++-mode jde-mode java-mode php-mode))
+
+(defun company-gtags--tags-available-p ()
+  (if (eq company-gtags--tags-available-p 'unknown)
+      (setq company-gtags--tags-available-p
+            (company-locate-dominating-file buffer-file-name "GTAGS"))
+    company-gtags--tags-available-p))
+
+(defun company-gtags-fetch-tags (prefix)
+  (with-temp-buffer
+    (let (tags)
+      (when (= 0 (call-process company-gtags-executable nil
+                               (list (current-buffer) nil) nil "-c" prefix))
+        (goto-char (point-min))
+        (split-string (buffer-string) "\n" t)))))
+
+(defun company-gtags-location (tag)
+  (with-temp-buffer
+    (when (= 0 (call-process company-gtags-executable nil
+                             (list (current-buffer) nil) nil "-x" tag))
+        (goto-char (point-min))
+        (when (looking-at (concat (regexp-quote tag)
+                                  "[ \t]+\\([[:digit:]]+\\)"
+                                  "[ \t]+\\([^ \t]+\\)"))
+          (cons (expand-file-name (match-string 2))
+                (string-to-number (match-string 1)))))))
+
+;;;###autoload
+(defun company-gtags (command &optional arg &rest ignored)
+  "`company-mode' completion back-end for GNU Global."
+  (interactive (list 'interactive))
+  (case command
+    (interactive (company-begin-backend 'company-gtags))
+    (prefix (and company-gtags-executable
+                 (memq major-mode company-gtags-modes)
+                 (not (company-in-string-or-comment))
+                 (company-gtags--tags-available-p)
+                 (or (company-grab-symbol) 'stop)))
+    (candidates (company-gtags-fetch-tags arg))
+    (sorted t)
+    (location (company-gtags-location arg))))
+
+(provide 'company-gtags)
+;;; company-gtags.el ends here
diff --git a/packages/company/company-ispell.el b/packages/company/company-ispell.el
new file mode 100644 (file)
index 0000000..9647f85
--- /dev/null
@@ -0,0 +1,69 @@
+;;; company-ispell.el --- company-mode completion back-end using Ispell
+
+;; Copyright (C) 2009-2011  Free Software Foundation, Inc.
+
+;; Author: Nikolaj Schumacher
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+
+;;; Code:
+
+(require 'company)
+(require 'ispell)
+(eval-when-compile (require 'cl))
+
+(defgroup company-ispell nil
+  "Completion back-end using Ispell."
+  :group 'company)
+
+(defcustom company-ispell-dictionary nil
+  "Dictionary to use for `company-ispell'.
+If nil, use `ispell-complete-word-dict'."
+  :type '(choice (const :tag "default (nil)" nil)
+                 (file :tag "dictionary" t)))
+
+(defvar company-ispell-available 'unknown)
+
+(defun company-ispell-available ()
+  (when (eq company-ispell-available 'unknown)
+    (condition-case err
+        (progn
+          (lookup-words "WHATEVER")
+          (setq company-ispell-available t))
+      (error
+       (message "Company: ispell-look-command not found")
+       (setq company-ispell-available nil))))
+  company-ispell-available)
+
+;;;###autoload
+(defun company-ispell (command &optional arg &rest ignored)
+  "`company-mode' completion back-end using Ispell."
+  (interactive (list 'interactive))
+  (case command
+    (interactive (company-begin-backend 'company-ispell))
+    (prefix (when (company-ispell-available)
+              (company-grab-word)))
+    (candidates (lookup-words arg (or company-ispell-dictionary
+                                      ispell-complete-word-dict)))
+    (sorted t)
+    (ignore-case t)))
+
+(provide 'company-ispell)
+;;; company-ispell.el ends here
diff --git a/packages/company/company-keywords.el b/packages/company/company-keywords.el
new file mode 100644 (file)
index 0000000..750540c
--- /dev/null
@@ -0,0 +1,235 @@
+;;; company-keywords.el --- A company back-end for programming language keywords
+
+;; Copyright (C) 2009-2011  Free Software Foundation, Inc.
+
+;; Author: Nikolaj Schumacher
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+
+;;; Code:
+
+(require 'company)
+(eval-when-compile (require 'cl))
+
+(defun company-keywords-upper-lower (&rest lst)
+  ;; Upcase order is different for _.
+  (nconc (sort (mapcar 'upcase lst) 'string<) lst))
+
+(defvar company-keywords-alist
+  ;; Please contribute corrections or additions.
+  `((c++-mode
+     "asm" "auto" "bool" "break" "case" "catch" "char" "class" "const"
+     "const_cast" "continue" "default" "delete" "do" "double" "dynamic_cast"
+     "else" "enum" "explicit" "export" "extern" "false" "float" "for" "friend"
+     "goto" "if" "inline" "int" "long" "mutable" "namespace" "new"
+     "operator" "private" "protected" "public" "register" "reinterpret_cast"
+     "return" "short" "signed" "sizeof" "static" "static_cast" "struct" "switch"
+     "template" "this" "throw" "true" "try" "typedef" "typeid" "typename"
+     "union" "unsigned" "using" "virtual" "void" "volatile" "wchar_t" "while")
+    (c-mode
+     "auto" "break" "case" "char" "const" "continue" "default" "do"
+     "double" "else" "enum" "extern" "float" "for" "goto" "if" "int" "long"
+     "register" "return" "short" "signed" "sizeof" "static" "struct"
+     "switch" "typedef" "union" "unsigned" "void" "volatile" "while")
+    (csharp-mode
+     "abstract" "add" "alias" "as" "base" "bool" "break" "byte" "case"
+     "catch" "char" "checked" "class" "const" "continue" "decimal" "default"
+     "delegate" "do" "double" "else" "enum" "event" "explicit" "extern"
+     "false" "finally" "fixed" "float" "for" "foreach" "get" "global" "goto"
+     "if" "implicit" "in" "int" "interface" "internal" "is" "lock" "long"
+     "namespace" "new" "null" "object" "operator" "out" "override" "params"
+     "partial" "private" "protected" "public" "readonly" "ref" "remove"
+     "return" "sbyte" "sealed" "set" "short" "sizeof" "stackalloc" "static"
+     "string" "struct" "switch" "this" "throw" "true" "try" "typeof" "uint"
+     "ulong" "unchecked" "unsafe" "ushort" "using" "value" "var" "virtual"
+     "void" "volatile" "where" "while" "yield")
+    (d-mode
+     ;; from http://www.digitalmars.com/d/2.0/lex.html
+     "abstract" "alias" "align" "asm"
+     "assert" "auto" "body" "bool" "break" "byte" "case" "cast" "catch"
+     "cdouble" "cent" "cfloat" "char" "class" "const" "continue" "creal"
+     "dchar" "debug" "default" "delegate" "delete" "deprecated" "do"
+     "double" "else" "enum" "export" "extern" "false" "final" "finally"
+     "float" "for" "foreach" "foreach_reverse" "function" "goto" "idouble"
+     "if" "ifloat" "import" "in" "inout" "int" "interface" "invariant"
+     "ireal" "is" "lazy" "long" "macro" "mixin" "module" "new" "nothrow"
+     "null" "out" "override" "package" "pragma" "private" "protected"
+     "public" "pure" "real" "ref" "return" "scope" "short" "static" "struct"
+     "super" "switch" "synchronized" "template" "this" "throw" "true" "try"
+     "typedef" "typeid" "typeof" "ubyte" "ucent" "uint" "ulong" "union"
+     "unittest" "ushort" "version" "void" "volatile" "wchar" "while" "with")
+    (f90-mode .
+     ;; from f90.el
+     ;; ".AND." ".GE." ".GT." ".LT." ".LE." ".NE." ".OR." ".TRUE." ".FALSE."
+     ,(company-keywords-upper-lower
+      "abs" "abstract" "achar" "acos" "adjustl" "adjustr" "aimag" "aint"
+      "align" "all" "all_prefix" "all_scatter" "all_suffix" "allocatable"
+      "allocate" "allocated" "and" "anint" "any" "any_prefix" "any_scatter"
+      "any_suffix" "asin" "assign" "assignment" "associate" "associated"
+      "asynchronous" "atan" "atan2" "backspace" "bind" "bit_size" "block"
+      "btest" "c_alert" "c_associated" "c_backspace" "c_bool"
+      "c_carriage_return" "c_char" "c_double" "c_double_complex" "c_f_pointer"
+      "c_f_procpointer" "c_float" "c_float_complex" "c_form_feed" "c_funloc"
+      "c_funptr" "c_horizontal_tab" "c_int" "c_int16_t" "c_int32_t" "c_int64_t"
+      "c_int8_t" "c_int_fast16_t" "c_int_fast32_t" "c_int_fast64_t"
+      "c_int_fast8_t" "c_int_least16_t" "c_int_least32_t" "c_int_least64_t"
+      "c_int_least8_t" "c_intmax_t" "c_intptr_t" "c_loc" "c_long"
+      "c_long_double" "c_long_double_complex" "c_long_long" "c_new_line"
+      "c_null_char" "c_null_funptr" "c_null_ptr" "c_ptr" "c_short"
+      "c_signed_char" "c_size_t" "c_vertical_tab" "call" "case" "ceiling"
+      "char" "character" "character_storage_size" "class" "close" "cmplx"
+      "command_argument_count" "common" "complex" "conjg" "contains" "continue"
+      "copy_prefix" "copy_scatter" "copy_suffix" "cos" "cosh" "count"
+      "count_prefix" "count_scatter" "count_suffix" "cpu_time" "cshift"
+      "cycle" "cyclic" "data" "date_and_time" "dble" "deallocate" "deferred"
+      "digits" "dim" "dimension" "distribute" "do" "dot_product" "double"
+      "dprod" "dynamic" "elemental" "else" "elseif" "elsewhere" "end" "enddo"
+      "endfile" "endif" "entry" "enum" "enumerator" "eoshift" "epsilon" "eq"
+      "equivalence" "eqv" "error_unit" "exit" "exp" "exponent" "extends"
+      "extends_type_of" "external" "extrinsic" "false" "file_storage_size"
+      "final" "floor" "flush" "forall" "format" "fraction" "function" "ge"
+      "generic" "get_command" "get_command_argument" "get_environment_variable"
+      "goto" "grade_down" "grade_up" "gt" "hpf_alignment" "hpf_distribution"
+      "hpf_template" "huge" "iachar" "iall" "iall_prefix" "iall_scatter"
+      "iall_suffix" "iand" "iany" "iany_prefix" "iany_scatter" "iany_suffix"
+      "ibclr" "ibits" "ibset" "ichar" "ieee_arithmetic" "ieee_exceptions"
+      "ieee_features" "ieee_get_underflow_mode" "ieee_set_underflow_mode"
+      "ieee_support_underflow_control" "ieor" "if" "ilen" "implicit"
+      "import" "include" "independent" "index" "inherit" "input_unit"
+      "inquire" "int" "integer" "intent" "interface" "intrinsic" "ior"
+      "iostat_end" "iostat_eor" "iparity" "iparity_prefix" "iparity_scatter"
+      "iparity_suffix" "ishft" "ishftc" "iso_c_binding" "iso_fortran_env"
+      "kind" "lbound" "le" "leadz" "len" "len_trim" "lge" "lgt" "lle" "llt"
+      "log" "log10" "logical" "lt" "matmul" "max" "maxexponent" "maxloc"
+      "maxval" "maxval_prefix" "maxval_scatter" "maxval_suffix" "merge"
+      "min" "minexponent" "minloc" "minval" "minval_prefix" "minval_scatter"
+      "minval_suffix" "mod" "module" "modulo" "move_alloc" "mvbits" "namelist"
+      "ne" "nearest" "neqv" "new" "new_line" "nint" "non_intrinsic"
+      "non_overridable" "none" "nopass" "not" "null" "nullify"
+      "number_of_processors" "numeric_storage_size" "only" "onto" "open"
+      "operator" "optional" "or" "output_unit" "pack" "parameter" "parity"
+      "parity_prefix" "parity_scatter" "parity_suffix" "pass" "pause"
+      "pointer" "popcnt" "poppar" "precision" "present" "print" "private"
+      "procedure" "processors" "processors_shape" "product" "product_prefix"
+      "product_scatter" "product_suffix" "program" "protected" "public"
+      "pure" "radix" "random_number" "random_seed" "range" "read" "real"
+      "realign" "recursive" "redistribute" "repeat" "reshape" "result"
+      "return" "rewind" "rrspacing" "same_type_as" "save" "scale" "scan"
+      "select" "selected_char_kind" "selected_int_kind" "selected_real_kind"
+      "sequence" "set_exponent" "shape" "sign" "sin" "sinh" "size" "spacing"
+      "spread" "sqrt" "stop" "subroutine" "sum" "sum_prefix" "sum_scatter"
+      "sum_suffix" "system_clock" "tan" "tanh" "target" "template" "then"
+      "tiny" "transfer" "transpose" "trim" "true" "type" "ubound" "unpack"
+      "use" "value" "verify" "volatile" "wait" "where" "while" "with" "write"))
+    (java-mode
+     "abstract" "assert" "boolean" "break" "byte" "case" "catch" "char" "class"
+     "continue" "default" "do" "double" "else" "enum" "extends" "final"
+     "finally" "float" "for" "if" "implements" "import" "instanceof" "int"
+     "interface" "long" "native" "new" "package" "private" "protected" "public"
+     "return" "short" "static" "strictfp" "super" "switch" "synchronized"
+     "this" "throw" "throws" "transient" "try" "void" "volatile" "while")
+    (javascript-mode
+     "break" "catch" "const" "continue" "delete" "do" "else" "export" "for"
+     "function" "if" "import" "in" "instanceOf" "label" "let" "new" "return"
+     "switch" "this" "throw" "try" "typeof" "var" "void" "while" "with" "yield")
+    (objc-mode
+     "@catch" "@class" "@encode" "@end" "@finally" "@implementation"
+     "@interface" "@private" "@protected" "@protocol" "@public"
+     "@selector" "@synchronized" "@throw" "@try" "alloc" "autorelease"
+     "bycopy" "byref" "in" "inout" "oneway" "out" "release" "retain")
+    (perl-mode
+     ;; from cperl.el
+     "AUTOLOAD" "BEGIN" "CHECK" "CORE" "DESTROY" "END" "INIT" "__END__"
+     "__FILE__" "__LINE__" "abs" "accept" "alarm" "and" "atan2" "bind"
+     "binmode" "bless" "caller" "chdir" "chmod" "chomp" "chop" "chown" "chr"
+     "chroot" "close" "closedir" "cmp" "connect" "continue" "cos"
+     "crypt" "dbmclose" "dbmopen" "defined" "delete" "die" "do" "dump" "each"
+     "else" "elsif" "endgrent" "endhostent" "endnetent" "endprotoent"
+     "endpwent" "endservent" "eof" "eq" "eval" "exec" "exists" "exit" "exp"
+     "fcntl" "fileno" "flock" "for" "foreach" "fork" "format" "formline"
+     "ge" "getc" "getgrent" "getgrgid" "getgrnam" "gethostbyaddr"
+     "gethostbyname" "gethostent" "getlogin" "getnetbyaddr" "getnetbyname"
+     "getnetent" "getpeername" "getpgrp" "getppid" "getpriority"
+     "getprotobyname" "getprotobynumber" "getprotoent" "getpwent" "getpwnam"
+     "getpwuid" "getservbyname" "getservbyport" "getservent" "getsockname"
+     "getsockopt" "glob" "gmtime" "goto" "grep" "gt" "hex" "if" "index" "int"
+     "ioctl" "join" "keys" "kill" "last" "lc" "lcfirst" "le" "length"
+     "link" "listen" "local" "localtime" "lock" "log" "lstat" "lt" "map"
+     "mkdir" "msgctl" "msgget" "msgrcv" "msgsnd" "my" "ne" "next" "no"
+     "not" "oct" "open" "opendir" "or" "ord" "our" "pack" "package" "pipe"
+     "pop" "pos" "print" "printf" "push" "q" "qq" "quotemeta" "qw" "qx"
+     "rand" "read" "readdir" "readline" "readlink" "readpipe" "recv" "redo"
+     "ref" "rename" "require" "reset" "return" "reverse" "rewinddir" "rindex"
+     "rmdir" "scalar" "seek" "seekdir" "select" "semctl" "semget" "semop"
+     "send" "setgrent" "sethostent" "setnetent" "setpgrp" "setpriority"
+     "setprotoent" "setpwent" "setservent" "setsockopt" "shift" "shmctl"
+     "shmget" "shmread" "shmwrite" "shutdown" "sin" "sleep" "socket"
+     "socketpair" "sort" "splice" "split" "sprintf" "sqrt" "srand" "stat"
+     "study" "sub" "substr" "symlink" "syscall" "sysopen" "sysread" "system"
+     "syswrite" "tell" "telldir" "tie" "time" "times" "tr" "truncate" "uc"
+     "ucfirst" "umask" "undef" "unless" "unlink" "unpack" "unshift" "untie"
+     "until" "use" "utime" "values" "vec" "wait" "waitpid"
+     "wantarray" "warn" "while" "write" "x" "xor" "y")
+    (php-mode
+     "__CLASS__" "__DIR__" "__FILE__" "__FUNCTION__" "__LINE__" "__METHOD__"
+     "__NAMESPACE__" "_once" "abstract" "and" "array" "as" "break" "case"
+     "catch" "cfunction" "class" "clone" "const" "continue" "declare"
+     "default" "die" "do" "echo" "else" "elseif" "empty" "enddeclare"
+     "endfor" "endforeach" "endif" "endswitch" "endwhile" "eval" "exception"
+     "exit" "extends" "final" "for" "foreach" "function" "global"
+     "goto" "if" "implements" "include" "instanceof" "interface"
+     "isset" "list" "namespace" "new" "old_function" "or" "php_user_filter"
+     "print" "private" "protected" "public" "require" "require_once" "return"
+     "static" "switch" "this" "throw" "try" "unset" "use" "var" "while" "xor")
+    (python-mode
+     "and" "assert" "break" "class" "continue" "def" "del" "elif" "else"
+     "except" "exec" "finally" "for" "from" "global" "if" "import" "in" "is"
+     "lambda" "not" "or" "pass" "print" "raise" "return" "try" "while" "yield")
+    (ruby-mode
+     "BEGIN" "END" "alias" "and"  "begin" "break" "case" "class" "def" "defined"
+     "do" "else" "elsif"  "end" "ensure" "false" "for" "if" "in" "module"
+     "next" "nil" "not" "or" "redo" "rescue" "retry" "return" "self" "super"
+     "then" "true" "undef" "unless" "until" "when" "while" "yield")
+    ;; aliases
+    (js2-mode . javascript-mode)
+    (espresso-mode . javascript-mode)
+    (cperl-mode . perl-mode)
+    (jde-mode . java-mode))
+  "Alist mapping major-modes to sorted keywords for `company-keywords'.")
+
+;;;###autoload
+(defun company-keywords (command &optional arg &rest ignored)
+  "`company-mode' back-end for programming language keywords."
+  (interactive (list 'interactive))
+  (case command
+    (interactive (company-begin-backend 'company-keywords))
+    (prefix (and (assq major-mode company-keywords-alist)
+                 (not (company-in-string-or-comment))
+                 (or (company-grab-symbol) 'stop)))
+    (candidates
+     (let ((completion-ignore-case nil)
+           (symbols (cdr (assq major-mode company-keywords-alist))))
+       (all-completions arg (if (consp symbols)
+                                symbols
+                              (cdr (assq symbols company-keywords-alist))))))
+    (sorted t)))
+
+(provide 'company-keywords)
+;;; company-keywords.el ends here
diff --git a/packages/company/company-nxml.el b/packages/company/company-nxml.el
new file mode 100644 (file)
index 0000000..62e6e31
--- /dev/null
@@ -0,0 +1,142 @@
+;;; company-nxml.el --- company-mode completion back-end for nxml-mode
+
+;; Copyright (C) 2009-2011, 2013  Free Software Foundation, Inc.
+
+;; Author: Nikolaj Schumacher
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+
+;;; Code:
+
+(require 'company)
+(eval-when-compile (require 'cl))
+
+(defvar rng-open-elements)
+(defvar rng-validate-mode)
+(defvar rng-in-attribute-regex)
+(defvar rng-in-attribute-value-regex)
+(declare-function rng-set-state-after "rng-nxml")
+(declare-function rng-match-possible-start-tag-names "rng-match")
+(declare-function rng-adjust-state-for-attribute "rng-nxml")
+(declare-function rng-match-possible-attribute-names "rng-match")
+(declare-function rng-adjust-state-for-attribute-value "rng-nxml")
+(declare-function rng-match-possible-value-strings "rng-match")
+
+(defconst company-nxml-token-regexp
+  "\\(?:[_[:alpha:]][-._[:alnum:]]*\\_>\\)")
+
+(defvar company-nxml-in-attribute-value-regexp
+  (replace-regexp-in-string "w" company-nxml-token-regexp
+   "<w\\(?::w\\)?\
+\\(?:[ \t\r\n]+w\\(?::w\\)?[ \t\r\n]*=\
+\[ \t\r\n]*\\(?:\"[^\"]*\"\\|'[^']*'\\)\\)*\
+\[ \t\r\n]+\\(w\\(:w\\)?\\)[ \t\r\n]*=[ \t\r\n]*\
+\\(\"\\([^\"]*\\>\\)\\|'\\([^']*\\>\\)\\)\\="
+   t t))
+
+(defvar company-nxml-in-tag-name-regexp
+  (replace-regexp-in-string "w" company-nxml-token-regexp
+                            "<\\(/?w\\(?::w?\\)?\\)?\\=" t t))
+
+(defun company-nxml-all-completions (prefix alist)
+  (let ((candidates (mapcar 'cdr alist))
+        (case-fold-search nil)
+        filtered)
+    (when (cdar rng-open-elements)
+      (push (concat "/" (cdar rng-open-elements)) candidates))
+    (setq candidates (sort (all-completions prefix candidates) 'string<))
+    (while candidates
+      (unless (equal (car candidates) (car filtered))
+        (push (car candidates) filtered))
+      (pop candidates))
+    (nreverse filtered)))
+
+(defmacro company-nxml-prepared (&rest body)
+  (declare (indent 0) (debug t))
+  `(let ((lt-pos (save-excursion (search-backward "<" nil t)))
+         xmltok-dtd)
+     (when (and lt-pos (= (rng-set-state-after lt-pos) lt-pos))
+       ,@body)))
+
+(defun company-nxml-tag (command &optional arg &rest ignored)
+  (case command
+    (prefix (and (derived-mode-p 'nxml-mode)
+                 rng-validate-mode
+                 (company-grab company-nxml-in-tag-name-regexp 1)))
+    (candidates (company-nxml-prepared
+                 (company-nxml-all-completions
+                  arg (rng-match-possible-start-tag-names))))
+    (sorted t)))
+
+(defun company-nxml-attribute (command &optional arg &rest ignored)
+  (case command
+    (prefix (and (derived-mode-p 'nxml-mode)
+                 rng-validate-mode
+                 (memq (char-after) '(?\  ?\t ?\n)) ;; outside word
+                 (company-grab rng-in-attribute-regex 1)))
+    (candidates (company-nxml-prepared
+                 (and (rng-adjust-state-for-attribute
+                       lt-pos (- (point) (length arg)))
+                      (company-nxml-all-completions
+                       arg (rng-match-possible-attribute-names)))))
+    (sorted t)))
+
+(defun company-nxml-attribute-value (command &optional arg &rest ignored)
+  (case command
+    (prefix (and (derived-mode-p 'nxml-mode)
+                 rng-validate-mode
+                 (and (memq (char-after) '(?' ?\" ?\  ?\t ?\n)) ;; outside word
+                      (looking-back company-nxml-in-attribute-value-regexp)
+                      (or (match-string-no-properties 4)
+                          (match-string-no-properties 5)
+                          ""))))
+    (candidates (company-nxml-prepared
+                 (let (attr-start attr-end colon)
+                   (and (looking-back rng-in-attribute-value-regex lt-pos)
+                        (setq colon (match-beginning 2)
+                              attr-start (match-beginning 1)
+                              attr-end (match-end 1))
+                        (rng-adjust-state-for-attribute lt-pos attr-start)
+                        (rng-adjust-state-for-attribute-value
+                         attr-start colon attr-end)
+                        (all-completions
+                         arg (rng-match-possible-value-strings))))))))
+
+;;;###autoload
+(defun company-nxml (command &optional arg &rest ignored)
+  "`company-mode' completion back-end for `nxml-mode'."
+  (interactive (list 'interactive))
+  (case command
+    (interactive (company-begin-backend 'company-nxml))
+    (prefix (or (company-nxml-tag 'prefix)
+                (company-nxml-attribute 'prefix)
+                (company-nxml-attribute-value 'prefix)))
+    (candidates (cond
+                 ((company-nxml-tag 'prefix)
+                  (company-nxml-tag 'candidates arg))
+                 ((company-nxml-attribute 'prefix)
+                  (company-nxml-attribute 'candidates arg))
+                 ((company-nxml-attribute-value 'prefix)
+                  (sort (company-nxml-attribute-value 'candidates arg)
+                        'string<))))
+    (sorted t)))
+
+(provide 'company-nxml)
+;;; company-nxml.el ends here
diff --git a/packages/company/company-oddmuse.el b/packages/company/company-oddmuse.el
new file mode 100644 (file)
index 0000000..b76c87e
--- /dev/null
@@ -0,0 +1,57 @@
+;;; company-oddmuse.el --- company-mode completion back-end for oddmuse-mode
+
+;; Copyright (C) 2009-2011  Free Software Foundation, Inc.
+
+;; Author: Nikolaj Schumacher
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+
+;;; Code:
+
+(require 'company)
+(eval-when 'compile (require 'yaooddmuse nil t))
+(eval-when 'compile (require 'oddmuse nil t))
+(eval-when-compile (require 'cl))
+
+(defvar company-oddmuse-link-regexp
+  "\\(\\<[A-Z][[:alnum:]]*\\>\\)\\|\\[\\[\\([[:alnum:]]+\\>\\|\\)")
+
+(defun company-oddmuse-get-page-table ()
+  (case major-mode
+    (yaoddmuse-mode (with-no-warnings
+                      (yaoddmuse-get-pagename-table yaoddmuse-wikiname)))
+    (oddmuse-mode (with-no-warnings
+                    (oddmuse-make-completion-table oddmuse-wiki)))))
+
+;;;###autoload
+(defun company-oddmuse (command &optional arg &rest ignored)
+  "`company-mode' completion back-end for `oddmuse-mode'."
+  (interactive (list 'interactive))
+  (case command
+    (interactive (company-begin-backend 'company-oddmuse))
+    (prefix (let ((case-fold-search nil))
+              (and (memq major-mode '(oddmuse-mode yaoddmuse-mode))
+                   (looking-back company-oddmuse-link-regexp (point-at-bol))
+                   (or (match-string 1)
+                       (match-string 2)))))
+    (candidates (all-completions arg (company-oddmuse-get-page-table)))))
+
+(provide 'company-oddmuse)
+;;; company-oddmuse.el ends here
diff --git a/packages/company/company-pysmell.el b/packages/company/company-pysmell.el
new file mode 100644 (file)
index 0000000..5c44f06
--- /dev/null
@@ -0,0 +1,69 @@
+;;; company-pysmell.el --- company-mode completion back-end for pysmell.el
+
+;; Copyright (C) 2009-2011, 2013  Free Software Foundation, Inc.
+
+;; Author: Nikolaj Schumacher
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+;; The main problem with using this backend is installing Pysmell.
+;; I couldn't manage to do that. --Dmitry
+
+;;; Code:
+
+(eval-when-compile (require 'cl))
+(if t (require 'pysmell))               ;Don't load during compilation.
+
+(defvar company-pysmell--available-p 'unknown)
+(make-variable-buffer-local 'company-pysmell--available-p)
+
+(defun company-pysmell--available-p ()
+  (if (eq company-pysmell--available-p 'unknown)
+      (setq company-pysmell--available-p
+            (company-locate-dominating-file buffer-file-name "PYSMELLTAGS"))
+    company-pysmell--available-p))
+
+(defun company-pysmell--grab-symbol ()
+  (let ((symbol (company-grab-symbol)))
+    (when symbol
+      (cons symbol
+            (save-excursion
+              (let ((pos (point)))
+                (goto-char (- (point) (length symbol)))
+                (while (eq (char-before) ?.)
+                  (goto-char (1- (point)))
+                  (skip-syntax-backward "w_"))
+                (- pos (point))))))))
+
+;;;###autoload
+(defun company-pysmell (command &optional arg &rest ignored)
+  "`company-mode' completion back-end for pysmell.
+This requires pysmell.el and pymacs.el."
+  (interactive (list 'interactive))
+  (case command
+    (interactive (company-begin-backend 'company-pysmell))
+    (prefix (and (derived-mode-p 'python-mode)
+                 buffer-file-name
+                 (not (company-in-string-or-comment))
+                 (company-pysmell--available-p)
+                 (company-pysmell--grab-symbol)))
+    (candidates (delete "" (pysmell-get-all-completions)))))
+
+(provide 'company-pysmell)
+;;; company-pysmell.el ends here
diff --git a/packages/company/company-ropemacs.el b/packages/company/company-ropemacs.el
new file mode 100644 (file)
index 0000000..0ba26e6
--- /dev/null
@@ -0,0 +1,76 @@
+;;; company-ropemacs.el --- company-mode completion back-end for ropemacs
+
+;; Copyright (C) 2009-2011, 2013  Free Software Foundation, Inc.
+
+;; Author: Nikolaj Schumacher
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+
+;;; Code:
+
+(eval-when-compile (require 'cl))
+
+(defun company-ropemacs--grab-symbol ()
+  (let ((symbol (company-grab-symbol)))
+    (when symbol
+      (cons symbol
+            (save-excursion
+              (let ((pos (point)))
+                (goto-char (- (point) (length symbol)))
+                (while (eq (char-before) ?.)
+                  (goto-char (1- (point)))
+                  (skip-syntax-backward "w_"))
+                (- pos (point))))))))
+
+(defun company-ropemacs-doc-buffer (candidate)
+  "Return buffer with docstring of CANDIDATE if it is available."
+  (let ((doc (company-with-candidate-inserted candidate (rope-get-doc))))
+    (when doc
+      (company-doc-buffer doc))))
+
+(defun company-ropemacs-location (candidate)
+  "Return location of CANDIDATE in cons form (FILE . LINE) if it is available."
+  (let ((location (company-with-candidate-inserted candidate
+                    (rope-definition-location))))
+    (when location
+      (cons (elt location 0) (elt location 1)))))
+
+(defun company-ropemacs (command &optional arg &rest ignored)
+  "`company-mode' completion back-end for ropemacs.
+
+Depends on third-party code: Pymacs (both Python and Emacs packages),
+rope, ropemacs and ropemode."
+  (interactive (list 'interactive))
+  (case command
+    (init (when (and (derived-mode-p 'python-mode)
+                     (not (fboundp 'rope-completions)))
+            (require 'pymacs)
+            (pymacs-load "ropemacs" "rope-")))
+    (interactive (company-begin-backend 'company-ropemacs))
+    (prefix (and (derived-mode-p 'python-mode)
+                 (not (company-in-string-or-comment))
+                 (company-ropemacs--grab-symbol)))
+    (candidates (mapcar (lambda (element) (concat arg element))
+                        (rope-completions)))
+    (doc-buffer (company-ropemacs-doc-buffer arg))
+    (location (company-ropemacs-location arg))))
+
+(provide 'company-ropemacs)
+;;; company-ropemacs.el ends here
diff --git a/packages/company/company-semantic.el b/packages/company/company-semantic.el
new file mode 100644 (file)
index 0000000..796cc9e
--- /dev/null
@@ -0,0 +1,141 @@
+;;; company-semantic.el --- company-mode completion back-end using Semantic
+
+;; Copyright (C) 2009-2011, 2013  Free Software Foundation, Inc.
+
+;; Author: Nikolaj Schumacher
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+
+;;; Code:
+
+(require 'company)
+(eval-when-compile (require 'cl))
+
+(defvar semantic-idle-summary-function)
+(declare-function semantic-documentation-for-tag "semantic/doc" )
+(declare-function semantic-analyze-current-context "semantic/analyze")
+(declare-function semantic-analyze-possible-completions "semantic/complete")
+(declare-function semantic-analyze-find-tags-by-prefix "semantic/analyze/fcn")
+(declare-function semantic-tag-class "semantic/tag")
+(declare-function semantic-tag-name "semantic/tag")
+(declare-function semantic-tag-start "semantic/tag")
+(declare-function semantic-tag-buffer "semantic/tag")
+(declare-function semantic-active-p "semantic")
+
+(defgroup company-semantic nil
+  "Completion back-end using Semantic."
+  :group 'company)
+
+(defcustom company-semantic-metadata-function 'company-semantic-summary-and-doc
+  "The function turning a semantic tag into doc information."
+  :type 'function)
+
+(defvar company-semantic-modes '(c-mode c++-mode jde-mode java-mode))
+
+(defvar company-semantic--current-tags nil
+  "Tags for the current context.")
+
+(defun company-semantic-doc-or-summary (tag)
+  (or (semantic-documentation-for-tag tag)
+      (and (require 'semantic-idle nil t)
+           (require 'semantic/idle nil t)
+           (funcall semantic-idle-summary-function tag nil t))))
+
+(defun company-semantic-summary-and-doc (tag)
+  (let ((doc (semantic-documentation-for-tag tag))
+        (summary (funcall semantic-idle-summary-function tag nil t)))
+    (and (stringp doc)
+         (string-match "\n*\\(.*\\)$" doc)
+         (setq doc (match-string 1 doc)))
+    (concat (funcall semantic-idle-summary-function tag nil t)
+            (when doc
+                  (if (< (+ (length doc) (length summary) 4) (window-width))
+                      " -- "
+                    "\n"))
+            doc)))
+
+(defun company-semantic-doc-buffer (tag)
+  (let ((doc (semantic-documentation-for-tag tag)))
+    (when doc
+      (company-doc-buffer
+       (concat (funcall semantic-idle-summary-function tag nil t)
+               "\n"
+               doc)))))
+
+(defsubst company-semantic-completions (prefix)
+  (ignore-errors
+    (let ((completion-ignore-case nil)
+          (context (semantic-analyze-current-context)))
+      (setq company-semantic--current-tags
+            (semantic-analyze-possible-completions context))
+      (all-completions prefix company-semantic--current-tags))))
+
+(defun company-semantic-completions-raw (prefix)
+  (setq company-semantic--current-tags nil)
+  (dolist (tag (semantic-analyze-find-tags-by-prefix prefix))
+    (unless (eq (semantic-tag-class tag) 'include)
+      (push tag company-semantic--current-tags)))
+  (delete "" (mapcar 'semantic-tag-name company-semantic--current-tags)))
+
+(defun company-semantic--pre-prefix-length (prefix-length)
+  "Sum up the length of all chained symbols before POS.
+Symbols are chained by \".\" or \"->\"."
+  (save-excursion
+    (let ((pos (point)))
+      (goto-char (- (point) prefix-length))
+      (while (looking-back "->\\|\\.")
+        (goto-char (match-beginning 0))
+        (skip-syntax-backward "w_"))
+      (- pos (point)))))
+
+(defun company-semantic--grab ()
+  "Grab the semantic prefix, but return everything before -> or . as length."
+  (let ((symbol (company-grab-symbol)))
+    (when symbol
+      (cons symbol (company-semantic--pre-prefix-length (length symbol))))))
+
+;;;###autoload
+(defun company-semantic (command &optional arg &rest ignored)
+  "`company-mode' completion back-end using CEDET Semantic."
+  (interactive (list 'interactive))
+  (case command
+    (interactive (company-begin-backend 'company-semantic))
+    (prefix (and (featurep 'semantic)
+                 (semantic-active-p)
+                 (memq major-mode company-semantic-modes)
+                 (not (company-in-string-or-comment))
+                 (or (company-semantic--grab) 'stop)))
+    (candidates (if (and (equal arg "")
+                         (not (looking-back "->\\|\\.")))
+                    (company-semantic-completions-raw arg)
+                  (company-semantic-completions arg)))
+    (meta (funcall company-semantic-metadata-function
+                   (assoc arg company-semantic--current-tags)))
+    (doc-buffer (company-semantic-doc-buffer
+                 (assoc arg company-semantic--current-tags)))
+    ;; Because "" is an empty context and doesn't return local variables.
+    (no-cache (equal arg ""))
+    (location (let ((tag (assoc arg company-semantic--current-tags)))
+                (when (buffer-live-p (semantic-tag-buffer tag))
+                  (cons (semantic-tag-buffer tag)
+                        (semantic-tag-start tag)))))))
+
+(provide 'company-semantic)
+;;; company-semantic.el ends here
diff --git a/packages/company/company-template.el b/packages/company/company-template.el
new file mode 100644 (file)
index 0000000..ea1db86
--- /dev/null
@@ -0,0 +1,170 @@
+;;; company-template.el
+
+;; Copyright (C) 2009, 2010, 2013 Free Software Foundation, Inc.
+
+;; Author: Nikolaj Schumacher
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(eval-when-compile (require 'cl))
+
+(defface company-template-field
+  '((((background dark)) (:background "yellow" :foreground "black"))
+    (((background light)) (:background "orange" :foreground "black")))
+  "Face used for editable text in template fields."
+  :group 'company)
+
+(defvar company-template-nav-map
+  (let ((keymap (make-sparse-keymap)))
+    (define-key keymap [tab] 'company-template-forward-field)
+    keymap))
+
+(defvar company-template--buffer-templates nil)
+(make-variable-buffer-local 'company-template--buffer-templates)
+
+;; interactive ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun company-template-templates-at (pos)
+  (let (os)
+    (dolist (o (overlays-at pos))
+      ;; FIXME: Always return the whole list of templates?
+      ;; We remove templates not at point after every command.
+      (when (memq o company-template--buffer-templates)
+        (push o os)))
+    os))
+
+(defun company-template-move-to-first (templ)
+  (interactive)
+  (goto-char (overlay-start templ))
+  (company-template-forward-field))
+
+(defun company-template-forward-field ()
+  (interactive)
+  (let* ((start (point))
+         (templates (company-template-templates-at (point)))
+         (minimum (apply 'max (mapcar 'overlay-end templates)))
+         (fields (loop for templ in templates
+                       append (overlay-get templ 'company-template-fields))))
+    (dolist (pos (mapcar 'overlay-start fields))
+      (and pos
+           (> pos (point))
+           (< pos minimum)
+           (setq minimum pos)))
+    (push-mark)
+    (goto-char minimum)
+    (company-template-remove-field (company-template-field-at start))))
+
+(defun company-template-field-at (&optional point)
+  (loop for ovl in (overlays-at (or point (point)))
+        when (overlay-get ovl 'company-template-parent)
+        return ovl))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun company-template-declare-template (beg end)
+  (let ((ov (make-overlay beg end)))
+    ;; (overlay-put ov 'face 'highlight)
+    (overlay-put ov 'keymap company-template-nav-map)
+    (overlay-put ov 'priority 101)
+    (overlay-put ov 'evaporate t)
+    (push ov company-template--buffer-templates)
+    (add-hook 'post-command-hook 'company-template-post-command nil t)
+    ov))
+
+(defun company-template-remove-template (templ)
+  (mapc 'company-template-remove-field
+        (overlay-get templ 'company-template-fields))
+  (setq company-template--buffer-templates
+        (delq templ company-template--buffer-templates))
+  (delete-overlay templ))
+
+(defun company-template-add-field (templ pos text &optional display)
+  "Add new field to template TEMPL at POS, inserting TEXT.
+When DISPLAY is non-nil, set the respective property on the overlay.
+Leave point at the end of the field."
+  (assert templ)
+  (goto-char pos)
+  (insert text)
+  (when (> (point) (overlay-end templ))
+    (move-overlay templ (overlay-start templ) (point)))
+  (let ((ov (make-overlay pos (+ pos (length text))))
+        (siblings (overlay-get templ 'company-template-fields)))
+    ;; (overlay-put ov 'evaporate t)
+    (overlay-put ov 'intangible t)
+    (overlay-put ov 'face 'company-template-field)
+    (when display
+      (overlay-put ov 'display display))
+    (overlay-put ov 'company-template-parent templ)
+    (overlay-put ov 'insert-in-front-hooks '(company-template-insert-hook))
+    (push ov siblings)
+    (overlay-put templ 'company-template-fields siblings)))
+
+(defun company-template-remove-field (ovl &optional clear)
+  (when (overlayp ovl)
+    (when (overlay-buffer ovl)
+      (when clear
+        (delete-region (overlay-start ovl) (overlay-end ovl)))
+      (delete-overlay ovl))
+    (let* ((templ (overlay-get ovl 'company-template-parent))
+           (siblings (overlay-get templ 'company-template-fields)))
+      (setq siblings (delq ovl siblings))
+      (overlay-put templ 'company-template-fields siblings))))
+
+(defun company-template-clean-up (&optional pos)
+  "Clean up all templates that don't contain POS."
+  (let ((local-ovs (overlays-at (or pos (point)))))
+    (dolist (templ company-template--buffer-templates)
+      (unless (memq templ local-ovs)
+        (company-template-remove-template templ)))))
+
+;; hooks ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun company-template-insert-hook (ovl after-p &rest _ignore)
+  "Called when a snippet input prompt is modified."
+  (unless after-p
+    (company-template-remove-field ovl t)))
+
+(defun company-template-post-command ()
+  (company-template-clean-up)
+  (unless company-template--buffer-templates
+    (remove-hook 'post-command-hook 'company-template-post-command t)))
+
+;; common ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun company-template-c-like-templatify (call)
+  (let* ((end (point-marker))
+         (beg (- (point) (length call)))
+         (cnt 0))
+    (when (re-search-backward ")" beg t)
+      (delete-region (match-end 0) end))
+    (goto-char beg)
+    (when (search-forward "(" end 'move)
+      (if (eq (char-after) ?\))
+          (forward-char 1)
+        (let ((templ (company-template-declare-template beg end)))
+          (while (re-search-forward (concat " *\\([^,)]*\\)[,)]") end t)
+            (let ((sig (match-string 1)))
+              (delete-region (match-beginning 1) (match-end 1))
+              (save-excursion
+                (company-template-add-field templ (match-beginning 1)
+                                            (format "arg%d" cnt) sig))
+              (incf cnt)))
+          (company-template-move-to-first templ))))))
+
+(provide 'company-template)
+;;; company-template.el ends here
diff --git a/packages/company/company-tempo.el b/packages/company/company-tempo.el
new file mode 100644 (file)
index 0000000..feea698
--- /dev/null
@@ -0,0 +1,63 @@
+;;; company-tempo.el --- company-mode completion back-end for tempo
+
+;; Copyright (C) 2009-2011  Free Software Foundation, Inc.
+
+;; Author: Nikolaj Schumacher
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+
+;;; Code:
+
+(require 'company)
+(eval-when-compile (require 'cl))
+(require 'tempo)
+
+(defsubst company-tempo-lookup (match)
+  (cdr (assoc match (tempo-build-collection))))
+
+(defun company-tempo-insert (match)
+  "Replace MATCH with the expanded tempo template."
+  (search-backward match)
+  (goto-char (match-beginning 0))
+  (replace-match "")
+  (call-interactively (company-tempo-lookup match)))
+
+(defsubst company-tempo-meta (match)
+  (let ((templ (company-tempo-lookup match))
+        doc)
+    (and templ
+         (setq doc (documentation templ t))
+         (car (split-string doc "\n" t)))))
+
+;;;###autoload
+(defun company-tempo (command &optional arg &rest ignored)
+  "`company-mode' completion back-end for tempo."
+  (interactive (list 'interactive))
+  (case command
+    (interactive (company-begin-backend 'company-tempo
+                                        'company-tempo-insert))
+    (prefix (or (car (tempo-find-match-string tempo-match-finder)) ""))
+    (candidates (all-completions arg (tempo-build-collection)))
+    (meta (company-tempo-meta arg))
+    (require-match t)
+    (sorted t)))
+
+(provide 'company-tempo)
+;;; company-tempo.el ends here
diff --git a/packages/company/company-tests.el b/packages/company/company-tests.el
new file mode 100644 (file)
index 0000000..870ad2b
--- /dev/null
@@ -0,0 +1,483 @@
+;;; company-tests.el --- company-mode tests
+
+;; Copyright (C) 2011, 2013  Free Software Foundation, Inc.
+
+;; Author: Nikolaj Schumacher
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+
+;;; Code:
+
+(eval-when-compile (require 'cl))
+(require 'ert)
+(require 'company)
+(require 'company-keywords)
+(require 'company-elisp)
+(require 'company-clang)
+
+;;; Core
+
+(ert-deftest company-sorted-keywords ()
+  "Test that keywords in `company-keywords-alist' are in alphabetical order."
+  (dolist (pair company-keywords-alist)
+    (when (consp (cdr pair))
+      (let ((prev (cadr pair)))
+        (dolist (next (cddr pair))
+          (should (not (equal prev next)))
+          (should (string< prev next))
+          (setq prev next))))))
+
+(ert-deftest company-good-prefix ()
+  (let ((company-minimum-prefix-length 5)
+        company--explicit-action)
+    (should (eq t (company--good-prefix-p "!@#$%")))
+    (should (eq nil (company--good-prefix-p "abcd")))
+    (should (eq nil (company--good-prefix-p 'stop)))
+    (should (eq t (company--good-prefix-p '("foo" . 5))))
+    (should (eq nil (company--good-prefix-p '("foo" . 4))))))
+
+(ert-deftest company-multi-backend-with-lambdas ()
+  (let ((company-backend
+         (list (lambda (command &optional arg &rest ignore)
+                 (case command
+                   (prefix "z")
+                   (candidates '("a" "b"))))
+               (lambda (command &optional arg &rest ignore)
+                 (case command
+                   (prefix "z")
+                   (candidates '("c" "d")))))))
+    (should (equal (company-call-backend 'candidates "z") '("a" "b" "c" "d")))))
+
+(ert-deftest company-begin-backend-failure-doesnt-break-company-backends ()
+  (with-temp-buffer
+    (insert "a")
+    (company-mode)
+    (should-error
+     (company-begin-backend (lambda (command &rest ignore))))
+    (let (company-frontends
+          (company-backends
+           (list (lambda (command &optional arg)
+                   (case command
+                     (prefix "a")
+                     (candidates '("a" "ab" "ac")))))))
+      (let (this-command)
+        (company-call 'complete))
+      (should (eq 3 company-candidates-length)))))
+
+(ert-deftest company-require-match-explicit ()
+  (with-temp-buffer
+    (insert "ab")
+    (company-mode)
+    (let (company-frontends
+          (company-require-match 'company-explicit-action-p)
+          (company-backends
+           (list (lambda (command &optional arg)
+                   (case command
+                     (prefix (buffer-substring (point-min) (point)))
+                     (candidates '("abc" "abd")))))))
+      (let (this-command)
+        (company-complete))
+      (let ((last-command-event ?e))
+        (company-call 'self-insert-command 1))
+      (should (eq 2 company-candidates-length))
+      (should (eq 3 (point))))))
+
+(ert-deftest company-dont-require-match-when-idle ()
+  (with-temp-buffer
+    (insert "ab")
+    (company-mode)
+    (let (company-frontends
+          (company-require-match 'company-explicit-action-p)
+          (company-backends
+           (list (lambda (command &optional arg)
+                   (case command
+                     (prefix (buffer-substring (point-min) (point)))
+                     (candidates '("abc" "abd")))))))
+      (company-idle-begin (current-buffer) (selected-window)
+                          (buffer-chars-modified-tick) (point))
+      (let ((last-command-event ?e))
+        (company-call 'self-insert-command 1))
+      (should (eq nil company-candidates-length))
+      (should (eq 4 (point))))))
+
+(ert-deftest company-auto-complete-explicit ()
+  (with-temp-buffer
+    (insert "ab")
+    (company-mode)
+    (let (company-frontends
+          (company-auto-complete 'company-explicit-action-p)
+          (company-auto-complete-chars '(? ))
+          (company-backends
+           (list (lambda (command &optional arg)
+                   (case command
+                     (prefix (buffer-substring (point-min) (point)))
+                     (candidates '("abcd" "abef")))))))
+      (let (this-command)
+        (company-complete))
+      (let ((last-command-event ? ))
+        (company-call 'self-insert-command 1))
+      (should (string= "abcd " (buffer-string))))))
+
+(ert-deftest company-no-auto-complete-when-idle ()
+  (with-temp-buffer
+    (insert "ab")
+    (company-mode)
+    (let (company-frontends
+          (company-auto-complete 'company-explicit-action-p)
+          (company-auto-complete-chars '(? ))
+          (company-backends
+           (list (lambda (command &optional arg)
+                   (case command
+                     (prefix (buffer-substring (point-min) (point)))
+                     (candidates '("abcd" "abef")))))))
+      (company-idle-begin (current-buffer) (selected-window)
+                          (buffer-chars-modified-tick) (point))
+      (let ((last-command-event ? ))
+        (company-call 'self-insert-command 1))
+      (should (string= "ab " (buffer-string))))))
+
+(ert-deftest company-clears-explicit-action-when-no-matches ()
+  (with-temp-buffer
+    (company-mode)
+    (let (company-frontends
+          company-backends)
+      (company-call 'manual-begin) ;; fails
+      (should (null company-candidates))
+      (should (null (company-explicit-action-p))))))
+
+(ert-deftest company-pseudo-tooltip-does-not-get-displaced ()
+  :tags '(interactive)
+  (with-temp-buffer
+    (save-window-excursion
+      (set-window-buffer nil (current-buffer))
+      (save-excursion (insert " ff"))
+      (company-mode)
+      (let ((company-frontends '(company-pseudo-tooltip-frontend))
+            (company-begin-commands '(self-insert-command))
+            (company-backends
+             (list (lambda (c &optional arg)
+                     (case c (prefix "") (candidates '("a" "b" "c")))))))
+        (let (this-command)
+          (company-call 'complete))
+        (company-call 'open-line 1)
+        (should (eq 2 (overlay-start company-pseudo-tooltip-overlay)))))))
+
+(ert-deftest company-pseudo-tooltip-overlay-show ()
+  :tags '(interactive)
+  (with-temp-buffer
+    (save-window-excursion
+    (set-window-buffer nil (current-buffer))
+    (insert "aaaa\n bb\nccccc\nddd")
+    (search-backward "bb")
+    (let ((col (company--column))
+          (company-candidates-length 2)
+          (company-candidates '("123" "45")))
+      (company-pseudo-tooltip-show (company--row) col 0)
+      (let ((ov company-pseudo-tooltip-overlay))
+        (should (eq (overlay-get ov 'company-width) 3))
+        ;; FIXME: Make it 2?
+        (should (eq (overlay-get ov 'company-height) company-tooltip-limit))
+        (should (eq (overlay-get ov 'company-column) col))
+        (should (string= (overlay-get ov 'company-after)
+                         " 123\nc45 c\nddd\n")))))))
+
+(ert-deftest company-column-with-composition ()
+  (with-temp-buffer
+    (insert "lambda ()")
+    (compose-region 1 (1+ (length "lambda")) "\\")
+    (should (= (company--column) 4))))
+
+(ert-deftest company-column-with-line-prefix ()
+  (with-temp-buffer
+    (insert "foo")
+    (put-text-property (point-min) (point) 'line-prefix "  ")
+    (should (= (company--column) 5))))
+
+(ert-deftest company-column-wth-line-prefix-on-empty-line ()
+  (with-temp-buffer
+    (insert "\n")
+    (forward-char -1)
+    (put-text-property (point-min) (point-max) 'line-prefix "  ")
+    (should (= (company--column) 2))))
+
+(ert-deftest company-plainify ()
+  (let ((tab-width 8))
+    (should (equal-including-properties
+             (company-plainify "\tabc\td\t")
+             (concat "        "
+                     "abc     "
+                     "d       "))))
+  (should (equal-including-properties
+           (company-plainify (propertize "foobar" 'line-prefix "-*-"))
+           "-*-foobar")))
+
+(ert-deftest company-modify-line ()
+  (let ((str "-*-foobar"))
+    (should (equal-including-properties
+             (company-modify-line str "zz" 4)
+             "-*-fzzbar"))
+    (should (equal-including-properties
+             (company-modify-line str "xx" 0)
+             "xx-foobar"))
+    (should (equal-including-properties
+             (company-modify-line str "zz" 10)
+             "-*-foobar zz"))))
+
+;;; Template
+
+(ert-deftest company-template-removed-after-the-last-jump ()
+  (with-temp-buffer
+    (insert "{ }")
+    (goto-char 2)
+    (let ((tpl (company-template-declare-template (point) (1- (point-max)))))
+      (save-excursion
+        (dotimes (i 2)
+          (insert " ")
+          (company-template-add-field tpl (point) "foo")))
+      (company-call 'template-forward-field)
+      (should (= 3 (point)))
+      (company-call 'template-forward-field)
+      (should (= 7 (point)))
+      (company-call 'template-forward-field)
+      (should (= 11 (point)))
+      (should (zerop (length (overlay-get tpl 'company-template-fields))))
+      (should (null (overlay-buffer tpl))))))
+
+(ert-deftest company-template-removed-after-input-and-jump ()
+  (with-temp-buffer
+    (insert "{ }")
+    (goto-char 2)
+    (let ((tpl (company-template-declare-template (point) (1- (point-max)))))
+      (save-excursion
+        (insert " ")
+        (company-template-add-field tpl (point) "bar"))
+      (company-call 'template-move-to-first tpl)
+      (should (= 3 (point)))
+      (dolist (c (string-to-list "tee"))
+        (let ((last-command-event c))
+          (company-call 'self-insert-command 1)))
+      (should (string= "{ tee }" (buffer-string)))
+      (should (overlay-buffer tpl))
+      (company-call 'template-forward-field)
+      (should (= 7 (point)))
+      (should (null (overlay-buffer tpl))))))
+
+(defun company-call (name &rest args)
+  (let* ((maybe (intern (format "company-%s" name)))
+         (command (if (fboundp maybe) maybe name)))
+    (apply command args)
+    (let ((this-command command))
+      (run-hooks 'post-command-hook))))
+
+(ert-deftest company-template-c-like-templatify ()
+  (with-temp-buffer
+    (let ((text "foo(int a, short b)"))
+      (insert text)
+      (company-template-c-like-templatify text)
+      (should (equal "foo(arg0, arg1)" (buffer-string)))
+      (should (looking-at "arg0"))
+      (should (equal "int a"
+                     (overlay-get (company-template-field-at) 'display))))))
+
+(ert-deftest company-template-c-like-templatify-trims-after-closing-paren ()
+  (with-temp-buffer
+    (let ((text "foo(int a, short b)!@ #1334 a"))
+      (insert text)
+      (company-template-c-like-templatify text)
+      (should (equal "foo(arg0, arg1)" (buffer-string)))
+      (should (looking-at "arg0")))))
+
+;;; Elisp
+
+(defmacro company-elisp-with-buffer (contents &rest body)
+  (declare (indent 0))
+  `(with-temp-buffer
+     (insert ,contents)
+     (setq major-mode 'emacs-lisp-mode)
+     (re-search-backward "|")
+     (replace-match "")
+     (let ((company-elisp-detect-function-context t))
+       ,@body)))
+
+(ert-deftest company-elisp-candidates-predicate ()
+  (company-elisp-with-buffer
+    "(foo ba|)"
+    (should (eq (company-elisp--candidates-predicate "ba")
+                'boundp))
+    (should (eq (let (company-elisp-detect-function-context)
+                  (company-elisp--candidates-predicate "ba"))
+                'company-elisp--predicate)))
+  (company-elisp-with-buffer
+    "(foo| )"
+    (should (eq (company-elisp--candidates-predicate "foo")
+                'fboundp))
+    (should (eq (let (company-elisp-detect-function-context)
+                  (company-elisp--candidates-predicate "foo"))
+                'company-elisp--predicate)))
+  (company-elisp-with-buffer
+    "(foo 'b|)"
+    (should (eq (company-elisp--candidates-predicate "b")
+                'company-elisp--predicate))))
+
+(ert-deftest company-elisp-candidates-predicate-in-docstring ()
+  (company-elisp-with-buffer
+   "(def foo () \"Doo be doo `ide|"
+   (should (eq 'company-elisp--predicate
+               (company-elisp--candidates-predicate "ide")))))
+
+;; This one's also an integration test.
+(ert-deftest company-elisp-candidates-recognizes-binding-form ()
+  (let ((company-elisp-detect-function-context t)
+        (obarray [when what whelp])
+        (what 1)
+        (whelp 2)
+        (wisp 3))
+    (company-elisp-with-buffer
+      "(let ((foo 7) (wh| )))"
+      (should (equal '("what" "whelp")
+                     (company-elisp-candidates "wh"))))
+    (company-elisp-with-buffer
+      "(cond ((null nil) (wh| )))"
+      (should (equal '("when")
+                     (company-elisp-candidates "wh"))))))
+
+(ert-deftest company-elisp-candidates-predicate-binding-without-value ()
+  (loop for (text prefix predicate) in '(("(let (foo|" "foo" boundp)
+                                         ("(let (foo (bar|" "bar" boundp)
+                                         ("(let (foo) (bar|" "bar" fboundp))
+        do
+        (eval `(company-elisp-with-buffer
+                 ,text
+                 (should (eq ',predicate
+                             (company-elisp--candidates-predicate ,prefix)))))))
+
+(ert-deftest company-elisp-finds-vars ()
+  (let ((obarray [boo bar baz backquote])
+        (boo t)
+        (bar t)
+        (baz t))
+    (should (equal '("bar" "baz")
+                   (company-elisp--globals "ba" 'boundp)))))
+
+(ert-deftest company-elisp-finds-functions ()
+  (let ((obarray [when what whelp])
+        (what t)
+        (whelp t))
+    (should (equal '("when")
+                   (company-elisp--globals "wh" 'fboundp)))))
+
+(ert-deftest company-elisp-finds-things ()
+  (let ((obarray [when what whelp])
+        (what t)
+        (whelp t))
+    (should (equal '("what" "whelp" "when")
+                   (sort (company-elisp--globals "wh" 'company-elisp--predicate)
+                         'string<)))))
+
+(ert-deftest company-elisp-locals-vars ()
+  (company-elisp-with-buffer
+    "(let ((foo 5) (bar 6))
+       (cl-labels ((borg ()))
+         (lambda (boo baz)
+           b|)))"
+    (should (equal '("bar" "baz" "boo")
+                   (company-elisp--locals "b" nil)))))
+
+(ert-deftest company-elisp-locals-single-var ()
+  (company-elisp-with-buffer
+    "(dotimes (itk 100)
+       (dolist (item items)
+         it|))"
+    (should (equal '("itk" "item")
+                   (company-elisp--locals "it" nil)))))
+
+(ert-deftest company-elisp-locals-funs ()
+  (company-elisp-with-buffer
+    "(cl-labels ((foo ())
+                 (fee ()))
+       (let ((fun 4))
+         (f| )))"
+    (should (equal '("fee" "foo")
+                   (sort (company-elisp--locals "f" t) 'string<)))))
+
+(ert-deftest company-elisp-locals-skips-current-varlist ()
+  (company-elisp-with-buffer
+    "(let ((foo 1)
+           (f| )))"
+    (should (null (company-elisp--locals "f" nil)))))
+
+(ert-deftest company-elisp-show-locals-first ()
+  (company-elisp-with-buffer
+    "(let ((floo 1)
+           (flop 2)
+           (flee 3))
+       fl|)"
+    (let ((obarray [float-pi]))
+      (let (company-elisp-show-locals-first)
+        (should (eq nil (company-elisp 'sorted))))
+      (let ((company-elisp-show-locals-first t))
+        (should (eq t (company-elisp 'sorted)))
+        (should (equal '("flee" "floo" "flop" "float-pi")
+                       (company-elisp-candidates "fl")))))))
+
+(ert-deftest company-elisp-candidates-no-duplicates ()
+  (company-elisp-with-buffer
+    "(let ((float-pi 4))
+       f|)"
+    (let ((obarray [float-pi])
+          (company-elisp-show-locals-first t))
+      (should (equal '("float-pi") (company-elisp-candidates "f"))))))
+
+(ert-deftest company-elisp-shouldnt-complete-defun-name ()
+  (company-elisp-with-buffer
+    "(defun foob|)"
+    (should (null (company-elisp 'prefix)))))
+
+(ert-deftest company-elisp-should-complete-def-call ()
+  (company-elisp-with-buffer
+    "(defu|"
+    (should (equal "defu" (company-elisp 'prefix)))))
+
+(ert-deftest company-elisp-should-complete-in-defvar ()
+  ;; It will also complete the var name, at least for now.
+  (company-elisp-with-buffer
+    "(defvar abc de|"
+    (should (equal "de" (company-elisp 'prefix)))))
+
+(ert-deftest company-elisp-shouldnt-complete-in-defun-arglist ()
+  (company-elisp-with-buffer
+    "(defsubst foobar (ba|"
+    (should (null (company-elisp 'prefix)))))
+
+(ert-deftest company-elisp-prefix-in-defun-body ()
+  (company-elisp-with-buffer
+    "(defun foob ()|)"
+    (should (equal "" (company-elisp 'prefix)))))
+
+;;; Clang
+
+(ert-deftest company-clang-objc-templatify ()
+  (with-temp-buffer
+    (let ((text "createBookWithTitle:andAuthor:"))
+      (insert text)
+      (company-clang-objc-templatify text)
+      (should (equal "createBookWithTitle:arg0 andAuthor:arg1" (buffer-string)))
+      (should (looking-at "arg0"))
+      (should (null (overlay-get (company-template-field-at) 'display))))))
diff --git a/packages/company/company-xcode.el b/packages/company/company-xcode.el
new file mode 100644 (file)
index 0000000..ac8d133
--- /dev/null
@@ -0,0 +1,124 @@
+;;; company-xcode.el --- company-mode completion back-end for Xcode projects
+
+;; Copyright (C) 2009-2011  Free Software Foundation, Inc.
+
+;; Author: Nikolaj Schumacher
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+
+;;; Code:
+
+(require 'company)
+(eval-when-compile (require 'cl))
+
+(defgroup company-xcode nil
+  "Completion back-end for Xcode projects."
+  :group 'company)
+
+(defcustom company-xcode-xcodeindex-executable (executable-find "xcodeindex")
+  "Location of xcodeindex executable."
+  :type 'file)
+
+(defvar company-xcode-tags nil)
+
+(defun company-xcode-reset ()
+  "Reset the cached tags."
+  (interactive)
+  (setq company-xcode-tags nil))
+
+(defcustom company-xcode-types
+  '("Class" "Constant" "Enum" "Macro" "Modeled Class" "Structure"
+    "Type" "Union" "Function")
+  "The types of symbols offered by `company-xcode'.
+No context-enabled completion is available.  Types like methods will be
+offered regardless of whether the class supports them.  The defaults should be
+valid in most contexts."
+  :set (lambda (variable value)
+         (set variable value)
+         (company-xcode-reset))
+  :type '(set (const "Category") (const "Class") (const "Class Method")
+              (const "Class Variable") (const "Constant") (const "Enum")
+              (const "Field") (const "Instance Method")
+              (const "Instance Variable") (const "Macro")
+              (const "Modeled Class") (const "Modeled Method")
+              (const "Modeled Property") (const "Property") (const "Protocol")
+              (const "Structure") (const "Type") (const "Union")
+              (const "Variable") (const "Function")))
+
+(defvar company-xcode-project 'unknown)
+(make-variable-buffer-local 'company-xcode-project)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun company-xcode-fetch (project-bundle)
+  (setq project-bundle (directory-file-name project-bundle))
+  (message "Retrieving dump from %s..." project-bundle)
+  (with-temp-buffer
+    (let ((default-directory (file-name-directory project-bundle)))
+      (call-process company-xcode-xcodeindex-executable nil (current-buffer)
+                    nil "dump" "-project"
+                    (file-name-nondirectory project-bundle) "-quiet")
+      (goto-char (point-min))
+      (let ((regexp (concat "^\\([^\t\n]*\\)\t[^\t\n]*\t"
+                            (regexp-opt company-xcode-types)
+                            "\t[^\t\n]*\t[^\t\n]*"))
+            candidates)
+        (while (re-search-forward regexp nil t)
+          (add-to-list 'candidates (match-string 1)))
+        (message "Retrieving dump from %s...done" project-bundle)
+        candidates))))
+
+(defun company-xcode-find-project ()
+  (let ((dir (if buffer-file-name
+                 (file-name-directory buffer-file-name)
+               (expand-file-name default-directory)))
+        (prev-dir nil)
+        file)
+    (while (not (or file (equal dir prev-dir)))
+      (setq file (car (directory-files dir t ".xcodeproj\\'" t))
+            prev-dir dir
+            dir (file-name-directory (directory-file-name dir))))
+    file))
+
+(defun company-xcode-tags ()
+  (when (eq company-xcode-project 'unknown)
+    (setq company-xcode-project (company-xcode-find-project)))
+  (when company-xcode-project
+    (cdr (or (assoc company-xcode-project company-xcode-tags)
+             (car (push (cons company-xcode-project
+                              (company-xcode-fetch company-xcode-project))
+                        company-xcode-tags))))))
+;;;###autoload
+(defun company-xcode (command &optional arg &rest ignored)
+  "`company-mode' completion back-end for Xcode projects."
+  (interactive (list 'interactive))
+  (case command
+    (interactive (company-begin-backend 'company-xcode))
+    (prefix (and company-xcode-xcodeindex-executable
+                 (company-xcode-tags)
+                 (not (company-in-string-or-comment))
+                 (or (company-grab-symbol) 'stop)))
+    (candidates (let ((completion-ignore-case nil))
+                  (company-xcode-tags)
+                  (all-completions arg (company-xcode-tags))))))
+
+
+(provide 'company-xcode)
+;;; company-xcode.el ends here
diff --git a/packages/company/company.el b/packages/company/company.el
new file mode 100644 (file)
index 0000000..ec0f2b3
--- /dev/null
@@ -0,0 +1,2075 @@
+;;; company.el --- Modular in-buffer completion framework  -*- lexical-binding: t -*-
+
+;; Copyright (C) 2009-2013  Free Software Foundation, Inc.
+
+;; Author: Nikolaj Schumacher
+;; Maintainer: Dmitry Gutov <dgutov@yandex.ru>
+;; Version: 0.6.12
+;; Keywords: abbrev, convenience, matching
+;; URL: http://company-mode.github.io/
+;; Compatibility: GNU Emacs 22.x, GNU Emacs 23.x, GNU Emacs 24.x
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; Company is a modular completion mechanism.  Modules for retrieving completion
+;; candidates are called back-ends, modules for displaying them are front-ends.
+;;
+;; Company comes with many back-ends, e.g. `company-elisp'.  These are
+;; distributed in separate files and can be used individually.
+;;
+;; Place company.el and the back-ends you want to use in a directory and add the
+;; following to your .emacs:
+;; (add-to-list 'load-path "/path/to/company")
+;; (autoload 'company-mode "company" nil t)
+;;
+;; Enable company-mode with M-x company-mode.  For further information look at
+;; the documentation for `company-mode' (C-h f company-mode RET)
+;;
+;; If you want to start a specific back-end, call it interactively or use
+;; `company-begin-backend'.  For example:
+;; M-x company-abbrev will prompt for and insert an abbrev.
+;;
+;; To write your own back-end, look at the documentation for `company-backends'.
+;; Here is a simple example completing "foo":
+;;
+;; (defun company-my-backend (command &optional arg &rest ignored)
+;;   (case command
+;;     (prefix (when (looking-back "foo\\>")
+;;               (match-string 0)))
+;;     (candidates (list "foobar" "foobaz" "foobarbaz"))
+;;     (meta (format "This value is named %s" arg))))
+;;
+;; Sometimes it is a good idea to mix several back-ends together, for example to
+;; enrich gtags with dabbrev-code results (to emulate local variables).
+;; To do this, add a list with both back-ends as an element in company-backends.
+;;
+;; Known Issues:
+;; When point is at the very end of the buffer, the pseudo-tooltip appears very
+;; wrong, unless company is allowed to temporarily insert a fake newline.
+;; This behavior is enabled by `company-end-of-buffer-workaround'.
+;;
+;;; Change Log:
+;;
+;; See NEWS.md in the repository.
+
+;;; Code:
+
+(eval-when-compile (require 'cl))
+
+;; FIXME: Use `user-error'.
+(add-to-list 'debug-ignored-errors "^.* frontend cannot be used twice$")
+(add-to-list 'debug-ignored-errors "^Echo area cannot be used twice$")
+(add-to-list 'debug-ignored-errors "^No \\(document\\|loc\\)ation available$")
+(add-to-list 'debug-ignored-errors "^Company not ")
+(add-to-list 'debug-ignored-errors "^No candidate number ")
+(add-to-list 'debug-ignored-errors "^Cannot complete at point$")
+(add-to-list 'debug-ignored-errors "^No other back-end$")
+
+(defgroup company nil
+  "Extensible inline text completion mechanism"
+  :group 'abbrev
+  :group 'convenience
+  :group 'matching)
+
+(defface company-tooltip
+  '((default :foreground "black")
+    (((class color) (min-colors 88) (background light))
+     (:background "cornsilk"))
+    (((class color) (min-colors 88) (background dark))
+     (:background "yellow")))
+  "Face used for the tooltip.")
+
+(defface company-tooltip-selection
+  '((default :inherit company-tooltip)
+    (((class color) (min-colors 88) (background light))
+     (:background "light blue"))
+    (((class color) (min-colors 88) (background dark))
+     (:background "orange1"))
+    (t (:background "green")))
+  "Face used for the selection in the tooltip.")
+
+(defface company-tooltip-mouse
+  '((default :inherit highlight))
+  "Face used for the tooltip item under the mouse.")
+
+(defface company-tooltip-common
+  '((default :inherit company-tooltip)
+    (((background light))
+     :foreground "darkred")
+    (((background dark))
+     :foreground "red"))
+  "Face used for the common completion in the tooltip.")
+
+(defface company-tooltip-common-selection
+  '((default :inherit company-tooltip-selection)
+    (((background light))
+     :foreground "darkred")
+    (((background dark))
+     :foreground "red"))
+  "Face used for the selected common completion in the tooltip.")
+
+(defface company-preview
+  '((t :background "blue4"
+       :foreground "wheat"))
+  "Face used for the completion preview.")
+
+(defface company-preview-common
+  '((t :inherit company-preview
+       :foreground "red"))
+  "Face used for the common part of the completion preview.")
+
+(defface company-preview-search
+  '((t :inherit company-preview
+       :background "blue1"))
+  "Face used for the search string in the completion preview.")
+
+(defface company-echo nil
+  "Face used for completions in the echo area.")
+
+(defface company-echo-common
+  '((((background dark)) (:foreground "firebrick1"))
+    (((background light)) (:background "firebrick4")))
+  "Face used for the common part of completions in the echo area.")
+
+(defun company-frontends-set (variable value)
+  ;; uniquify
+  (let ((remainder value))
+    (setcdr remainder (delq (car remainder) (cdr remainder))))
+  (and (memq 'company-pseudo-tooltip-unless-just-one-frontend value)
+       (memq 'company-pseudo-tooltip-frontend value)
+       (error "Pseudo tooltip frontend cannot be used twice"))
+  (and (memq 'company-preview-if-just-one-frontend value)
+       (memq 'company-preview-frontend value)
+       (error "Preview frontend cannot be used twice"))
+  (and (memq 'company-echo value)
+       (memq 'company-echo-metadata-frontend value)
+       (error "Echo area cannot be used twice"))
+  ;; preview must come last
+  (dolist (f '(company-preview-if-just-one-frontend company-preview-frontend))
+    (when (memq f value)
+      (setq value (append (delq f value) (list f)))))
+  (set variable value))
+
+(defcustom company-frontends '(company-pseudo-tooltip-unless-just-one-frontend
+                               company-preview-if-just-one-frontend
+                               company-echo-metadata-frontend)
+  "The list of active front-ends (visualizations).
+Each front-end is a function that takes one argument.  It is called with
+one of the following arguments:
+
+`show': When the visualization should start.
+
+`hide': When the visualization should end.
+
+`update': When the data has been updated.
+
+`pre-command': Before every command that is executed while the
+visualization is active.
+
+`post-command': After every command that is executed while the
+visualization is active.
+
+The visualized data is stored in `company-prefix', `company-candidates',
+`company-common', `company-selection', `company-point' and
+`company-search-string'."
+  :set 'company-frontends-set
+  :type '(repeat (choice (const :tag "echo" company-echo-frontend)
+                         (const :tag "echo, strip common"
+                                company-echo-strip-common-frontend)
+                         (const :tag "show echo meta-data in echo"
+                                company-echo-metadata-frontend)
+                         (const :tag "pseudo tooltip"
+                                company-pseudo-tooltip-frontend)
+                         (const :tag "pseudo tooltip, multiple only"
+                                company-pseudo-tooltip-unless-just-one-frontend)
+                         (const :tag "preview" company-preview-frontend)
+                         (const :tag "preview, unique only"
+                                company-preview-if-just-one-frontend)
+                         (function :tag "custom function" nil))))
+
+(defcustom company-tooltip-limit 10
+  "The maximum number of candidates in the tooltip"
+  :type 'integer)
+
+(defcustom company-tooltip-minimum 6
+  "The minimum height of the tooltip.
+If this many lines are not available, prefer to display the tooltip above."
+  :type 'integer)
+
+(defvar company-safe-backends
+  '((company-abbrev . "Abbrev")
+    (company-capf . "completion-at-point-functions")
+    (company-clang . "Clang")
+    (company-cmake . "CMake")
+    (company-css . "CSS")
+    (company-dabbrev . "dabbrev for plain text")
+    (company-dabbrev-code . "dabbrev for code")
+    (company-eclim . "Eclim (an Eclipse interface)")
+    (company-elisp . "Emacs Lisp")
+    (company-etags . "etags")
+    (company-files . "Files")
+    (company-gtags . "GNU Global")
+    (company-ispell . "Ispell")
+    (company-keywords . "Programming language keywords")
+    (company-nxml . "nxml")
+    (company-oddmuse . "Oddmuse")
+    (company-pysmell . "PySmell")
+    (company-ropemacs . "ropemacs")
+    (company-semantic . "Semantic")
+    (company-tempo . "Tempo templates")
+    (company-xcode . "Xcode")))
+(put 'company-safe-backends 'risky-local-variable t)
+
+(defun company-safe-backends-p (backends)
+  (and (consp backends)
+       (not (dolist (backend backends)
+              (unless (if (consp backend)
+                          (company-safe-backends-p backend)
+                        (assq backend company-safe-backends))
+                (return t))))))
+
+(defcustom company-backends '(company-elisp company-nxml company-css
+                              company-eclim company-semantic company-clang
+                              company-xcode company-ropemacs company-cmake
+                              (company-gtags company-etags company-dabbrev-code
+                               company-keywords)
+                              company-oddmuse company-files company-dabbrev)
+  "The list of active back-ends (completion engines).
+Each list elements can itself be a list of back-ends.  In that case their
+completions are merged.  Otherwise only the first matching back-end returns
+results.
+
+`company-begin-backend' can be used to start a specific back-end,
+`company-other-backend' will skip to the next matching back-end in the list.
+
+Each back-end is a function that takes a variable number of arguments.
+The first argument is the command requested from the back-end.  It is one
+of the following:
+
+`prefix': The back-end should return the text to be completed.  It must be
+text immediately before point.  Returning nil passes control to the next
+back-end.  The function should return `stop' if it should complete but
+cannot \(e.g. if it is in the middle of a string\).  Instead of a string,
+the back-end may return a cons where car is the prefix and cdr is used in
+`company-minimum-prefix-length' test. It's either number or t, in which
+case the test automatically succeeds.
+
+`candidates': The second argument is the prefix to be completed.  The
+return value should be a list of candidates that start with the prefix.
+
+Optional commands:
+
+`sorted': Return t here to indicate that the candidates are sorted and will
+not need to be sorted again.
+
+`duplicates': If non-nil, company will take care of removing duplicates
+from the list.
+
+`no-cache': Usually company doesn't ask for candidates again as completion
+progresses, unless the back-end returns t for this command.  The second
+argument is the latest prefix.
+
+`meta': The second argument is a completion candidate.  Return a (short)
+documentation string for it.
+
+`doc-buffer': The second argument is a completion candidate.  Return a
+buffer with documentation for it.  Preferably use `company-doc-buffer',
+
+`location': The second argument is a completion candidate.  Return the cons
+of buffer and buffer location, or of file and line number where the
+completion candidate was defined.
+
+`require-match': If this returns t, the user is not allowed to enter
+anything not offered as a candidate.  Use with care!  The default value nil
+gives the user that choice with `company-require-match'.  Return value
+`never' overrides that option the other way around.
+
+`init': Called once for each buffer. The back-end can check for external
+programs and files and load any required libraries.  Raising an error here
+will show up in message log once, and the back-end will not be used for
+completion.
+
+`post-completion': Called after a completion candidate has been inserted
+into the buffer.  The second argument is the candidate.  Can be used to
+modify it, e.g. to expand a snippet.
+
+The back-end should return nil for all commands it does not support or
+does not know about.  It should also be callable interactively and use
+`company-begin-backend' to start itself in that case."
+  :type `(repeat
+          (choice
+           :tag "Back-end"
+           ,@(mapcar (lambda (b) `(const :tag ,(cdr b) ,(car b)))
+                     company-safe-backends)
+           (symbol :tag "User defined")
+           (repeat :tag "Merged Back-ends"
+                   (choice :tag "Back-end"
+                           ,@(mapcar (lambda (b)
+                                       `(const :tag ,(cdr b) ,(car b)))
+                                     company-safe-backends)
+                           (symbol :tag "User defined"))))))
+
+(put 'company-backends 'safe-local-variable 'company-safe-backends-p)
+
+(defcustom company-completion-started-hook nil
+  "Hook run when company starts completing.
+The hook is called with one argument that is non-nil if the completion was
+started manually."
+  :type 'hook)
+
+(defcustom company-completion-cancelled-hook nil
+  "Hook run when company cancels completing.
+The hook is called with one argument that is non-nil if the completion was
+aborted manually."
+  :type 'hook)
+
+(defcustom company-completion-finished-hook nil
+  "Hook run when company successfully completes.
+The hook is called with the selected candidate as an argument.
+
+If you indend to use it to post-process candidates from a specific
+back-end, consider using the `post-completion' command instead."
+  :type 'hook)
+
+(defcustom company-minimum-prefix-length 3
+  "The minimum prefix length for automatic completion."
+  :type '(integer :tag "prefix length"))
+
+(defcustom company-require-match 'company-explicit-action-p
+  "If enabled, disallow non-matching input.
+This can be a function do determine if a match is required.
+
+This can be overridden by the back-end, if it returns t or `never' to
+`require-match'.  `company-auto-complete' also takes precedence over this."
+  :type '(choice (const :tag "Off" nil)
+                 (function :tag "Predicate function")
+                 (const :tag "On, if user interaction took place"
+                        'company-explicit-action-p)
+                 (const :tag "On" t)))
+
+(defcustom company-auto-complete nil
+  "Determines when to auto-complete.
+If this is enabled, all characters from `company-auto-complete-chars'
+complete the selected completion.  This can also be a function."
+  :type '(choice (const :tag "Off" nil)
+                 (function :tag "Predicate function")
+                 (const :tag "On, if user interaction took place"
+                        'company-explicit-action-p)
+                 (const :tag "On" t)))
+
+(defcustom company-auto-complete-chars '(?\  ?\) ?.)
+  "Determines which characters trigger an automatic completion.
+See `company-auto-complete'.  If this is a string, each string character
+causes completion.  If it is a list of syntax description characters (see
+`modify-syntax-entry'), all characters with that syntax auto-complete.
+
+This can also be a function, which is called with the new input and should
+return non-nil if company should auto-complete.
+
+A character that is part of a valid candidate never triggers auto-completion."
+  :type '(choice (string :tag "Characters")
+                 (set :tag "Syntax"
+                      (const :tag "Whitespace" ?\ )
+                      (const :tag "Symbol" ?_)
+                      (const :tag "Opening parentheses" ?\()
+                      (const :tag "Closing parentheses" ?\))
+                      (const :tag "Word constituent" ?w)
+                      (const :tag "Punctuation." ?.)
+                      (const :tag "String quote." ?\")
+                      (const :tag "Paired delimiter." ?$)
+                      (const :tag "Expression quote or prefix operator." ?\')
+                      (const :tag "Comment starter." ?<)
+                      (const :tag "Comment ender." ?>)
+                      (const :tag "Character-quote." ?/)
+                      (const :tag "Generic string fence." ?|)
+                      (const :tag "Generic comment fence." ?!))
+                 (function :tag "Predicate function")))
+
+(defcustom company-idle-delay .7
+  "The idle delay in seconds until automatic completions starts.
+A value of nil means never complete automatically, t means complete
+immediately when a prefix of `company-minimum-prefix-length' is reached."
+  :type '(choice (const :tag "never (nil)" nil)
+                 (const :tag "immediate (t)" t)
+                 (number :tag "seconds")))
+
+(defcustom company-begin-commands '(self-insert-command)
+  "A list of commands following which company will start completing.
+If this is t, it will complete after any command.  See `company-idle-delay'.
+
+Alternatively any command with a non-nil `company-begin' property is treated
+as if it was on this list."
+  :type '(choice (const :tag "Any command" t)
+                 (const :tag "Self insert command" '(self-insert-command))
+                 (repeat :tag "Commands" function)))
+
+(defcustom company-show-numbers nil
+  "If enabled, show quick-access numbers for the first ten candidates."
+  :type '(choice (const :tag "off" nil)
+                 (const :tag "on" t)))
+
+(defvar company-end-of-buffer-workaround t
+  "Work around a visualization bug when completing at the end of the buffer.
+The work-around consists of adding a newline.")
+
+;;; mode ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar company-mode-map (make-sparse-keymap)
+  "Keymap used by `company-mode'.")
+
+(defvar company-active-map
+  (let ((keymap (make-sparse-keymap)))
+    (define-key keymap "\e\e\e" 'company-abort)
+    (define-key keymap "\C-g" 'company-abort)
+    (define-key keymap (kbd "M-n") 'company-select-next)
+    (define-key keymap (kbd "M-p") 'company-select-previous)
+    (define-key keymap (kbd "<down>") 'company-select-next-or-abort)
+    (define-key keymap (kbd "<up>") 'company-select-previous-or-abort)
+    (define-key keymap [down-mouse-1] 'ignore)
+    (define-key keymap [down-mouse-3] 'ignore)
+    (define-key keymap [mouse-1] 'company-complete-mouse)
+    (define-key keymap [mouse-3] 'company-select-mouse)
+    (define-key keymap [up-mouse-1] 'ignore)
+    (define-key keymap [up-mouse-3] 'ignore)
+    (define-key keymap [return] 'company-complete-selection)
+    (define-key keymap (kbd "RET") 'company-complete-selection)
+    (define-key keymap [tab] 'company-complete-common)
+    (define-key keymap (kbd "TAB") 'company-complete-common)
+    (define-key keymap (kbd "<f1>") 'company-show-doc-buffer)
+    (define-key keymap "\C-w" 'company-show-location)
+    (define-key keymap "\C-s" 'company-search-candidates)
+    (define-key keymap "\C-\M-s" 'company-filter-candidates)
+    (dotimes (i 10)
+      (define-key keymap (vector (+ (aref (kbd "M-0") 0) i))
+        `(lambda () (interactive) (company-complete-number ,i))))
+
+    keymap)
+  "Keymap that is enabled during an active completion.")
+
+(defvar company--disabled-backends nil)
+
+(defun company-init-backend (backend)
+  (and (symbolp backend)
+       (not (fboundp backend))
+       (ignore-errors (require backend nil t)))
+
+  (if (or (symbolp backend)
+          (functionp backend))
+      (condition-case err
+          (progn
+            (funcall backend 'init)
+            (put backend 'company-init t))
+        (error
+         (put backend 'company-init 'failed)
+         (unless (memq backend company--disabled-backends)
+           (message "Company back-end '%s' could not be initialized:\n%s"
+                    backend (error-message-string err)))
+         (pushnew backend company--disabled-backends)
+         nil))
+    (mapc 'company-init-backend backend)))
+
+(defvar company-default-lighter " company")
+
+(defvar company-lighter company-default-lighter)
+(make-variable-buffer-local 'company-lighter)
+
+;;;###autoload
+(define-minor-mode company-mode
+  "\"complete anything\"; is an in-buffer completion framework.
+Completion starts automatically, depending on the values
+`company-idle-delay' and `company-minimum-prefix-length'.
+
+Completion can be controlled with the commands:
+`company-complete-common', `company-complete-selection', `company-complete',
+`company-select-next', `company-select-previous'.  If these commands are
+called before `company-idle-delay', completion will also start.
+
+Completions can be searched with `company-search-candidates' or
+`company-filter-candidates'.  These can be used while completion is
+inactive, as well.
+
+The completion data is retrieved using `company-backends' and displayed
+using `company-frontends'.  If you want to start a specific back-end, call
+it interactively or use `company-begin-backend'.
+
+regular keymap (`company-mode-map'):
+
+\\{company-mode-map}
+keymap during active completions (`company-active-map'):
+
+\\{company-active-map}"
+  nil company-lighter company-mode-map
+  (if company-mode
+      (progn
+        (add-hook 'pre-command-hook 'company-pre-command nil t)
+        (add-hook 'post-command-hook 'company-post-command nil t)
+        (mapc 'company-init-backend company-backends))
+    (remove-hook 'pre-command-hook 'company-pre-command t)
+    (remove-hook 'post-command-hook 'company-post-command t)
+    (company-cancel)
+    (kill-local-variable 'company-point)))
+
+(defcustom company-global-modes t
+  "Modes for which `company-mode' mode is turned on by `global-company-mode'.
+If nil, means no modes.  If t, then all major modes have it turned on.
+If a list, it should be a list of `major-mode' symbol names for which
+`company-mode' should be automatically turned on.  The sense of the list is
+negated if it begins with `not'.  For example:
+ (c-mode c++-mode)
+means that `company-mode' is turned on for buffers in C and C++ modes only.
+ (not message-mode)
+means that `company-mode' is always turned on except in `message-mode' buffers."
+  :type '(choice (const :tag "none" nil)
+                 (const :tag "all" t)
+                 (set :menu-tag "mode specific" :tag "modes"
+                      :value (not)
+                      (const :tag "Except" not)
+                      (repeat :inline t (symbol :tag "mode")))))
+
+;;;###autoload
+(define-globalized-minor-mode global-company-mode company-mode company-mode-on)
+
+(defun company-mode-on ()
+  (when (and (not (or noninteractive (eq (aref (buffer-name) 0) ?\s)))
+             (cond ((eq company-global-modes t)
+                    t)
+                   ((eq (car-safe company-global-modes) 'not)
+                    (not (memq major-mode (cdr company-global-modes))))
+                   (t (memq major-mode company-global-modes))))
+    (company-mode 1)))
+
+(defsubst company-assert-enabled ()
+  (unless company-mode
+    (company-uninstall-map)
+    (error "Company not enabled")))
+
+;;; keymaps ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar company-my-keymap nil)
+(make-variable-buffer-local 'company-my-keymap)
+
+(defvar company-emulation-alist '((t . nil)))
+
+(defsubst company-enable-overriding-keymap (keymap)
+  (company-uninstall-map)
+  (setq company-my-keymap keymap))
+
+(defun company-ensure-emulation-alist ()
+  (unless (eq 'company-emulation-alist (car emulation-mode-map-alists))
+    (setq emulation-mode-map-alists
+          (cons 'company-emulation-alist
+                (delq 'company-emulation-alist emulation-mode-map-alists)))))
+
+(defun company-install-map ()
+  (unless (or (cdar company-emulation-alist)
+              (null company-my-keymap))
+    (setf (cdar company-emulation-alist) company-my-keymap)))
+
+(defun company-uninstall-map ()
+  (setf (cdar company-emulation-alist) nil))
+
+;; Hack:
+;; Emacs calculates the active keymaps before reading the event.  That means we
+;; cannot change the keymap from a timer.  So we send a bogus command.
+(defun company-ignore ()
+  (interactive)
+  (setq this-command last-command))
+
+(global-set-key '[31415926] 'company-ignore)
+
+(defun company-input-noop ()
+  (push 31415926 unread-command-events))
+
+(defun company--column (&optional pos)
+  (save-excursion
+    (when pos (goto-char pos))
+    (save-restriction
+      (+ (save-excursion
+           (vertical-motion 0)
+           (narrow-to-region (point) (point-max))
+           (let ((prefix (get-text-property (point) 'line-prefix)))
+             (if prefix (length prefix) 0)))
+         (current-column)))))
+
+(defun company--row (&optional pos)
+  (save-excursion
+    (when pos (goto-char pos))
+    (count-screen-lines (window-start)
+                        (progn (vertical-motion 0) (point)))))
+
+;;; backends ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar company-backend nil)
+(make-variable-buffer-local 'company-backend)
+
+(defun company-grab (regexp &optional expression limit)
+  (when (looking-back regexp limit)
+    (or (match-string-no-properties (or expression 0)) "")))
+
+(defun company-grab-line (regexp &optional expression)
+  (company-grab regexp expression (point-at-bol)))
+
+(defun company-grab-symbol ()
+  (if (looking-at "\\_>")
+      (buffer-substring (point) (save-excursion (skip-syntax-backward "w_")
+                                                (point)))
+    (unless (and (char-after) (memq (char-syntax (char-after)) '(?w ?_)))
+      "")))
+
+(defun company-grab-word ()
+  (if (looking-at "\\>")
+      (buffer-substring (point) (save-excursion (skip-syntax-backward "w")
+                                                (point)))
+    (unless (and (char-after) (eq (char-syntax (char-after)) ?w))
+      "")))
+
+(defun company-in-string-or-comment ()
+  (let ((ppss (syntax-ppss)))
+    (or (car (setq ppss (nthcdr 3 ppss)))
+        (car (setq ppss (cdr ppss)))
+        (nth 3 ppss))))
+
+(if (fboundp 'locate-dominating-file)
+    (defalias 'company-locate-dominating-file 'locate-dominating-file)
+  (defun company-locate-dominating-file (file name)
+    (catch 'root
+      (let ((dir (file-name-directory file))
+            (prev-dir nil))
+        (while (not (equal dir prev-dir))
+          (when (file-exists-p (expand-file-name name dir))
+            (throw 'root dir))
+          (setq prev-dir dir
+                dir (file-name-directory (directory-file-name dir))))))))
+
+(defun company-call-backend (&rest args)
+  (if (functionp company-backend)
+      (apply company-backend args)
+    (apply 'company--multi-backend-adapter company-backend args)))
+
+(defun company--multi-backend-adapter (backends command &rest args)
+  (let ((backends (loop for b in backends
+                        when (not (and (symbolp b)
+                                       (eq 'failed (get b 'company-init))))
+                        collect b)))
+    (case command
+      (candidates
+       (loop for backend in backends
+             when (equal (funcall backend 'prefix)
+                         (car args))
+             append (apply backend 'candidates args)))
+      (sorted nil)
+      (duplicates t)
+      (otherwise
+       (let (value)
+         (dolist (backend backends)
+           (when (setq value (apply backend command args))
+             (return value))))))))
+
+;;; completion mechanism ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar company-prefix nil)
+(make-variable-buffer-local 'company-prefix)
+
+(defvar company-candidates nil)
+(make-variable-buffer-local 'company-candidates)
+
+(defvar company-candidates-length nil)
+(make-variable-buffer-local 'company-candidates-length)
+
+(defvar company-candidates-cache nil)
+(make-variable-buffer-local 'company-candidates-cache)
+
+(defvar company-candidates-predicate nil)
+(make-variable-buffer-local 'company-candidates-predicate)
+
+(defvar company-common nil)
+(make-variable-buffer-local 'company-common)
+
+(defvar company-selection 0)
+(make-variable-buffer-local 'company-selection)
+
+(defvar company-selection-changed nil)
+(make-variable-buffer-local 'company-selection-changed)
+
+(defvar company--explicit-action nil
+  "Non-nil, if explicit completion took place.")
+(make-variable-buffer-local 'company--explicit-action)
+
+(defvar company--auto-completion nil
+  "Non-nil when current candidate is being completed automatically.
+Controlled by `company-auto-complete'.")
+
+(defvar company--point-max nil)
+(make-variable-buffer-local 'company--point-max)
+
+(defvar company-point nil)
+(make-variable-buffer-local 'company-point)
+
+(defvar company-timer nil)
+
+(defvar company-added-newline nil)
+(make-variable-buffer-local 'company-added-newline)
+
+(defsubst company-strip-prefix (str)
+  (substring str (length company-prefix)))
+
+(defmacro company-with-candidate-inserted (candidate &rest body)
+  "Evaluate BODY with CANDIDATE temporarily inserted.
+This is a tool for back-ends that need candidates inserted before they
+can retrieve meta-data for them."
+  (declare (indent 1))
+  `(let ((inhibit-modification-hooks t)
+         (inhibit-point-motion-hooks t)
+         (modified-p (buffer-modified-p)))
+     (insert (company-strip-prefix ,candidate))
+     (unwind-protect
+         (progn ,@body)
+       (delete-region company-point (point)))))
+
+(defun company-explicit-action-p ()
+  "Return whether explicit completion action was taken by the user."
+  (or company--explicit-action
+      company-selection-changed))
+
+(defun company-reformat (candidate)
+  ;; company-ispell needs this, because the results are always lower-case
+  ;; It's mory efficient to fix it only when they are displayed.
+  (concat company-prefix (substring candidate (length company-prefix))))
+
+(defun company--should-complete ()
+  (and (not (or buffer-read-only overriding-terminal-local-map
+                overriding-local-map
+                (minibufferp)))
+       ;; Check if in the middle of entering a key combination.
+       (or (equal (this-command-keys-vector) [])
+           (not (keymapp (key-binding (this-command-keys-vector)))))
+       (eq company-idle-delay t)
+       (or (eq t company-begin-commands)
+           (memq this-command company-begin-commands)
+           (and (symbolp this-command) (get this-command 'company-begin)))
+       (not (and transient-mark-mode mark-active))))
+
+(defun company-call-frontends (command)
+  (dolist (frontend company-frontends)
+    (condition-case err
+        (funcall frontend command)
+      (error (error "Company: Front-end %s error \"%s\" on command %s"
+                    frontend (error-message-string err) command)))))
+
+(defun company-set-selection (selection &optional force-update)
+  (setq selection (max 0 (min (1- company-candidates-length) selection)))
+  (when (or force-update (not (equal selection company-selection)))
+    (setq company-selection selection
+          company-selection-changed t)
+    (company-call-frontends 'update)))
+
+(defun company-apply-predicate (candidates predicate)
+  (let (new)
+    (dolist (c candidates)
+      (when (funcall predicate c)
+        (push c new)))
+    (nreverse new)))
+
+(defun company-update-candidates (candidates)
+  (setq company-candidates-length (length candidates))
+  (if (> company-selection 0)
+      ;; Try to restore the selection
+      (let ((selected (nth company-selection company-candidates)))
+        (setq company-selection 0
+              company-candidates candidates)
+        (when selected
+          (while (and candidates (string< (pop candidates) selected))
+            (incf company-selection))
+          (unless candidates
+            ;; Make sure selection isn't out of bounds.
+            (setq company-selection (min (1- company-candidates-length)
+                                         company-selection)))))
+    (setq company-selection 0
+          company-candidates candidates))
+  ;; Save in cache:
+  (push (cons company-prefix company-candidates) company-candidates-cache)
+  ;; Calculate common.
+  (let ((completion-ignore-case (company-call-backend 'ignore-case)))
+    (setq company-common (company--safe-candidate
+                          (try-completion company-prefix company-candidates))))
+  (when (eq company-common t)
+    (setq company-candidates nil)))
+
+(defun company--safe-candidate (str)
+  (or (company-call-backend 'crop str)
+      str))
+
+(defun company-calculate-candidates (prefix)
+  (let ((candidates (cdr (assoc prefix company-candidates-cache)))
+        (ignore-case (company-call-backend 'ignore-case)))
+    (or candidates
+        (when company-candidates-cache
+          (let ((len (length prefix))
+                (completion-ignore-case ignore-case)
+                prev)
+            (dotimes (i (1+ len))
+              (when (setq prev (cdr (assoc (substring prefix 0 (- len i))
+                                           company-candidates-cache)))
+                (setq candidates (all-completions prefix prev))
+                (return t)))))
+        ;; no cache match, call back-end
+        (progn
+          (setq candidates (company-call-backend 'candidates prefix))
+          (when company-candidates-predicate
+            (setq candidates
+                  (company-apply-predicate candidates
+                                           company-candidates-predicate)))
+          (unless (company-call-backend 'sorted)
+            (setq candidates (sort candidates 'string<)))
+          (when (company-call-backend 'duplicates)
+            ;; strip duplicates
+            (let ((c2 candidates))
+              (while c2
+                (setcdr c2 (progn (while (equal (pop c2) (car c2)))
+                                  c2)))))))
+    (when candidates
+      (if (or (cdr candidates)
+              (not (eq t (compare-strings (car candidates) nil nil
+                                          prefix nil nil ignore-case))))
+          candidates
+        ;; Already completed and unique; don't start.
+        t))))
+
+(defun company-idle-begin (buf win tick pos)
+  (and company-mode
+       (eq buf (current-buffer))
+       (eq win (selected-window))
+       (eq tick (buffer-chars-modified-tick))
+       (eq pos (point))
+       (not company-candidates)
+       (not (equal (point) company-point))
+       (let ((company-idle-delay t)
+             (company-begin-commands t))
+         (company-begin)
+         (when company-candidates
+           (company-input-noop)
+           (company-post-command)))))
+
+(defun company-auto-begin ()
+  (company-assert-enabled)
+  (and company-mode
+       (not company-candidates)
+       (let ((company-idle-delay t)
+             (company-minimum-prefix-length 0)
+             (company-begin-commands t))
+         (company-begin)))
+  ;; Return non-nil if active.
+  company-candidates)
+
+(defun company-manual-begin ()
+  (interactive)
+  (setq company--explicit-action t)
+  (unwind-protect
+      (company-auto-begin)
+    (unless company-candidates
+      (setq company--explicit-action nil))))
+
+(defun company-other-backend (&optional backward)
+  (interactive (list current-prefix-arg))
+  (company-assert-enabled)
+  (if company-backend
+      (let* ((after (cdr (member company-backend company-backends)))
+             (before (cdr (member company-backend (reverse company-backends))))
+             (next (if backward
+                       (append before (reverse after))
+                     (append after (reverse before)))))
+        (company-cancel)
+        (dolist (backend next)
+          (when (ignore-errors (company-begin-backend backend))
+            (return t))))
+    (company-manual-begin))
+  (unless company-candidates
+    (error "No other back-end")))
+
+(defun company-require-match-p ()
+  (let ((backend-value (company-call-backend 'require-match)))
+    (or (eq backend-value t)
+        (and (not (eq backend-value 'never))
+             (if (functionp company-require-match)
+                 (funcall company-require-match)
+               (eq company-require-match t))))))
+
+(defun company-auto-complete-p (input)
+  "Return non-nil, if input starts with punctuation or parentheses."
+  (and (if (functionp company-auto-complete)
+           (funcall company-auto-complete)
+         company-auto-complete)
+       (if (functionp company-auto-complete-chars)
+           (funcall company-auto-complete-chars input)
+         (if (consp company-auto-complete-chars)
+             (memq (char-syntax (string-to-char input))
+                   company-auto-complete-chars)
+           (string-match (substring input 0 1) company-auto-complete-chars)))))
+
+(defun company--incremental-p ()
+  (and (> (point) company-point)
+       (> (point-max) company--point-max)
+       (not (eq this-command 'backward-delete-char-untabify))
+       (equal (buffer-substring (- company-point (length company-prefix))
+                                company-point)
+              company-prefix)))
+
+(defsubst company--string-incremental-p (old-prefix new-prefix)
+  (and (> (length new-prefix) (length old-prefix))
+       (equal old-prefix (substring new-prefix 0 (length old-prefix)))))
+
+(defun company--continue-failed (new-prefix)
+  (when (company--incremental-p)
+    (let ((input (buffer-substring-no-properties (point) company-point)))
+      (cond
+       ((company-auto-complete-p input)
+        ;; auto-complete
+        (save-excursion
+          (goto-char company-point)
+          (let ((company--auto-completion t))
+            (company-complete-selection))
+          nil))
+       ((and (company--string-incremental-p company-prefix new-prefix)
+             (company-require-match-p))
+        ;; wrong incremental input, but required match
+        (delete-char (- (length input)))
+        (ding)
+        (message "Matching input is required")
+        company-candidates)
+       ((equal company-prefix (car company-candidates))
+        ;; last input was actually success
+        (company-cancel company-prefix)
+        nil)))))
+
+(defun company--good-prefix-p (prefix)
+  (and (or (company-explicit-action-p)
+           (unless (eq prefix 'stop)
+             (or (eq (cdr-safe prefix) t)
+                 (>= (or (cdr-safe prefix) (length prefix))
+                     company-minimum-prefix-length))))
+       (stringp (or (car-safe prefix) prefix))))
+
+(defun company--continue ()
+  (when (company-call-backend 'no-cache company-prefix)
+    ;; Don't complete existing candidates, fetch new ones.
+    (setq company-candidates-cache nil))
+  (let* ((new-prefix (company-call-backend 'prefix))
+         (c (when (and (company--good-prefix-p new-prefix)
+                       (setq new-prefix (or (car-safe new-prefix) new-prefix))
+                       (= (- (point) (length new-prefix))
+                          (- company-point (length company-prefix))))
+              (setq new-prefix (or (car-safe new-prefix) new-prefix))
+              (company-calculate-candidates new-prefix))))
+    (or (cond
+         ((eq c t)
+          ;; t means complete/unique.
+          (company-cancel new-prefix)
+          nil)
+         ((consp c)
+          ;; incremental match
+          (setq company-prefix new-prefix)
+          (company-update-candidates c)
+          c)
+         (t (company--continue-failed new-prefix)))
+        (company-cancel))))
+
+(defun company--begin-new ()
+  (let (prefix c)
+    (dolist (backend (if company-backend
+                         ;; prefer manual override
+                         (list company-backend)
+                       company-backends))
+      (setq prefix
+            (if (or (symbolp backend)
+                    (functionp backend))
+                (when (or (not (symbolp backend))
+                          (eq t (get backend 'company-init))
+                          (unless (get backend 'company-init)
+                            (company-init-backend backend)))
+                  (funcall backend 'prefix))
+              (company--multi-backend-adapter backend 'prefix)))
+      (when prefix
+        (when (company--good-prefix-p prefix)
+          (setq prefix (or (car-safe prefix) prefix)
+                company-backend backend
+                c (company-calculate-candidates prefix))
+          ;; t means complete/unique.  We don't start, so no hooks.
+          (if (not (consp c))
+              (when company--explicit-action
+                (message "No completion found"))
+            (setq company-prefix prefix)
+            (when (symbolp backend)
+              (setq company-lighter (concat " " (symbol-name backend))))
+            (company-update-candidates c)
+            (run-hook-with-args 'company-completion-started-hook
+                                (company-explicit-action-p))
+            (company-call-frontends 'show)))
+        (return c)))))
+
+(defun company-begin ()
+  (or (and company-candidates (company--continue))
+      (and (company--should-complete) (company--begin-new)))
+  (when company-candidates
+    (when (and company-end-of-buffer-workaround (eobp))
+      (save-excursion (insert "\n"))
+      (setq company-added-newline (buffer-chars-modified-tick)))
+    (setq company-point (point)
+          company--point-max (point-max))
+    (company-ensure-emulation-alist)
+    (company-enable-overriding-keymap company-active-map)
+    (company-call-frontends 'update)))
+
+(defun company-cancel (&optional result)
+  (and company-added-newline
+       (> (point-max) (point-min))
+       (let ((tick (buffer-chars-modified-tick)))
+         (delete-region (1- (point-max)) (point-max))
+         (equal tick company-added-newline))
+       ;; Only set unmodified when tick remained the same since insert.
+       (set-buffer-modified-p nil))
+  (when company-prefix
+    (if (stringp result)
+        (progn
+          (company-call-backend 'pre-completion result)
+          (run-hook-with-args 'company-completion-finished-hook result)
+          (company-call-backend 'post-completion result))
+      (run-hook-with-args 'company-completion-cancelled-hook result)))
+  (setq company-added-newline nil
+        company-backend nil
+        company-prefix nil
+        company-candidates nil
+        company-candidates-length nil
+        company-candidates-cache nil
+        company-candidates-predicate nil
+        company-common nil
+        company-selection 0
+        company-selection-changed nil
+        company--explicit-action nil
+        company-lighter company-default-lighter
+        company--point-max nil
+        company-point nil)
+  (when company-timer
+    (cancel-timer company-timer))
+  (company-search-mode 0)
+  (company-call-frontends 'hide)
+  (company-enable-overriding-keymap nil))
+
+(defun company-abort ()
+  (interactive)
+  (company-cancel t)
+  ;; Don't start again, unless started manually.
+  (setq company-point (point)))
+
+(defun company-finish (result)
+  (insert (company-strip-prefix result))
+  (company-cancel result)
+  ;; Don't start again, unless started manually.
+  (setq company-point (point)))
+
+(defsubst company-keep (command)
+  (and (symbolp command) (get command 'company-keep)))
+
+(defun company-pre-command ()
+  (unless (company-keep this-command)
+    (condition-case err
+        (when company-candidates
+          (company-call-frontends 'pre-command))
+      (error (message "Company: An error occurred in pre-command")
+             (message "%s" (error-message-string err))
+             (company-cancel))))
+  (when company-timer
+    (cancel-timer company-timer)
+    (setq company-timer nil))
+  (company-uninstall-map))
+
+(defun company-post-command ()
+  (unless (company-keep this-command)
+    (condition-case err
+        (progn
+          (unless (equal (point) company-point)
+            (company-begin))
+          (if company-candidates
+              (company-call-frontends 'post-command)
+            (and (numberp company-idle-delay)
+                 (or (eq t company-begin-commands)
+                     (memq this-command company-begin-commands))
+                 (setq company-timer
+                       (run-with-timer company-idle-delay nil
+                                       'company-idle-begin
+                                       (current-buffer) (selected-window)
+                                       (buffer-chars-modified-tick) (point))))))
+      (error (message "Company: An error occurred in post-command")
+             (message "%s" (error-message-string err))
+             (company-cancel))))
+  (company-install-map))
+
+;;; search ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar company-search-string nil)
+(make-variable-buffer-local 'company-search-string)
+
+(defvar company-search-lighter " Search: \"\"")
+(make-variable-buffer-local 'company-search-lighter)
+
+(defvar company-search-old-map nil)
+(make-variable-buffer-local 'company-search-old-map)
+
+(defvar company-search-old-selection 0)
+(make-variable-buffer-local 'company-search-old-selection)
+
+(defun company-search (text lines)
+  (let ((quoted (regexp-quote text))
+        (i 0))
+    (dolist (line lines)
+      (when (string-match quoted line (length company-prefix))
+        (return i))
+      (incf i))))
+
+(defun company-search-printing-char ()
+  (interactive)
+  (company-search-assert-enabled)
+  (setq company-search-string
+        (concat (or company-search-string "") (string last-command-event))
+        company-search-lighter (concat " Search: \"" company-search-string
+                                        "\""))
+  (let ((pos (company-search company-search-string
+                              (nthcdr company-selection company-candidates))))
+    (if (null pos)
+        (ding)
+      (company-set-selection (+ company-selection pos) t))))
+
+(defun company-search-repeat-forward ()
+  "Repeat the incremental search in completion candidates forward."
+  (interactive)
+  (company-search-assert-enabled)
+  (let ((pos (company-search company-search-string
+                              (cdr (nthcdr company-selection
+                                           company-candidates)))))
+    (if (null pos)
+        (ding)
+      (company-set-selection (+ company-selection pos 1) t))))
+
+(defun company-search-repeat-backward ()
+  "Repeat the incremental search in completion candidates backwards."
+  (interactive)
+  (company-search-assert-enabled)
+  (let ((pos (company-search company-search-string
+                              (nthcdr (- company-candidates-length
+                                         company-selection)
+                                      (reverse company-candidates)))))
+    (if (null pos)
+        (ding)
+      (company-set-selection (- company-selection pos 1) t))))
+
+(defun company-create-match-predicate ()
+  (setq company-candidates-predicate
+        `(lambda (candidate)
+           ,(if company-candidates-predicate
+                `(and (string-match ,company-search-string candidate)
+                      (funcall ,company-candidates-predicate
+                               candidate))
+              `(string-match ,company-search-string candidate))))
+  (company-update-candidates
+   (company-apply-predicate company-candidates company-candidates-predicate))
+  ;; Invalidate cache.
+  (setq company-candidates-cache (cons company-prefix company-candidates)))
+
+(defun company-filter-printing-char ()
+  (interactive)
+  (company-search-assert-enabled)
+  (company-search-printing-char)
+  (company-create-match-predicate)
+  (company-call-frontends 'update))
+
+(defun company-search-kill-others ()
+  "Limit the completion candidates to the ones matching the search string."
+  (interactive)
+  (company-search-assert-enabled)
+  (company-create-match-predicate)
+  (company-search-mode 0)
+  (company-call-frontends 'update))
+
+(defun company-search-abort ()
+  "Abort searching the completion candidates."
+  (interactive)
+  (company-search-assert-enabled)
+  (company-set-selection company-search-old-selection t)
+  (company-search-mode 0))
+
+(defun company-search-other-char ()
+  (interactive)
+  (company-search-assert-enabled)
+  (company-search-mode 0)
+  (company--unread-last-input))
+
+(defvar company-search-map
+  (let ((i 0)
+        (keymap (make-keymap)))
+    (if (fboundp 'max-char)
+        (set-char-table-range (nth 1 keymap) (cons #x100 (max-char))
+                              'company-search-printing-char)
+      (with-no-warnings
+        ;; obsolete in Emacs 23
+        (let ((l (generic-character-list))
+              (table (nth 1 keymap)))
+          (while l
+            (set-char-table-default table (car l) 'company-search-printing-char)
+            (setq l (cdr l))))))
+    (define-key keymap [t] 'company-search-other-char)
+    (while (< i ?\s)
+      (define-key keymap (make-string 1 i) 'company-search-other-char)
+      (incf i))
+    (while (< i 256)
+      (define-key keymap (vector i) 'company-search-printing-char)
+      (incf i))
+    (let ((meta-map (make-sparse-keymap)))
+      (define-key keymap (char-to-string meta-prefix-char) meta-map)
+      (define-key keymap [escape] meta-map))
+    (define-key keymap (vector meta-prefix-char t) 'company-search-other-char)
+    (define-key keymap "\e\e\e" 'company-search-other-char)
+    (define-key keymap  [escape escape escape] 'company-search-other-char)
+
+    (define-key keymap "\C-g" 'company-search-abort)
+    (define-key keymap "\C-s" 'company-search-repeat-forward)
+    (define-key keymap "\C-r" 'company-search-repeat-backward)
+    (define-key keymap "\C-o" 'company-search-kill-others)
+    keymap)
+  "Keymap used for incrementally searching the completion candidates.")
+
+(define-minor-mode company-search-mode
+  "Search mode for completion candidates.
+Don't start this directly, use `company-search-candidates' or
+`company-filter-candidates'."
+  nil company-search-lighter nil
+  (if company-search-mode
+      (if (company-manual-begin)
+          (progn
+            (setq company-search-old-selection company-selection)
+            (company-call-frontends 'update))
+        (setq company-search-mode nil))
+    (kill-local-variable 'company-search-string)
+    (kill-local-variable 'company-search-lighter)
+    (kill-local-variable 'company-search-old-selection)
+    (company-enable-overriding-keymap company-active-map)))
+
+(defun company-search-assert-enabled ()
+  (company-assert-enabled)
+  (unless company-search-mode
+    (company-uninstall-map)
+    (error "Company not in search mode")))
+
+(defun company-search-candidates ()
+  "Start searching the completion candidates incrementally.
+
+\\<company-search-map>Search can be controlled with the commands:
+- `company-search-repeat-forward' (\\[company-search-repeat-forward])
+- `company-search-repeat-backward' (\\[company-search-repeat-backward])
+- `company-search-abort' (\\[company-search-abort])
+
+Regular characters are appended to the search string.
+
+The command `company-search-kill-others' (\\[company-search-kill-others])
+uses the search string to limit the completion candidates."
+  (interactive)
+  (company-search-mode 1)
+  (company-enable-overriding-keymap company-search-map))
+
+(defvar company-filter-map
+  (let ((keymap (make-keymap)))
+    (define-key keymap [remap company-search-printing-char]
+      'company-filter-printing-char)
+    (set-keymap-parent keymap company-search-map)
+    keymap)
+  "Keymap used for incrementally searching the completion candidates.")
+
+(defun company-filter-candidates ()
+  "Start filtering the completion candidates incrementally.
+This works the same way as `company-search-candidates' immediately
+followed by `company-search-kill-others' after each input."
+  (interactive)
+  (company-search-mode 1)
+  (company-enable-overriding-keymap company-filter-map))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun company-select-next ()
+  "Select the next candidate in the list."
+  (interactive)
+  (when (company-manual-begin)
+    (company-set-selection (1+ company-selection))))
+
+(defun company-select-previous ()
+  "Select the previous candidate in the list."
+  (interactive)
+  (when (company-manual-begin)
+    (company-set-selection (1- company-selection))))
+
+(defun company-select-next-or-abort ()
+  "Select the next candidate if more than one, else abort
+and invoke the normal binding."
+  (interactive)
+  (if (> company-candidates-length 1)
+      (company-select-next)
+    (company-abort)
+    (company--unread-last-input)))
+
+(defun company-select-previous-or-abort ()
+  "Select the previous candidate if more than one, else abort
+and invoke the normal binding."
+  (interactive)
+  (if (> company-candidates-length 1)
+      (company-select-previous)
+    (company-abort)
+    (company--unread-last-input)))
+
+(defvar company-pseudo-tooltip-overlay)
+
+(defvar company-tooltip-offset)
+
+(defun company--inside-tooltip-p (event-col-row row height)
+  (let* ((ovl company-pseudo-tooltip-overlay)
+         (column (overlay-get ovl 'company-column))
+         (width (overlay-get ovl 'company-width))
+         (evt-col (car event-col-row))
+         (evt-row (cdr event-col-row)))
+    (and (>= evt-col column)
+         (< evt-col (+ column width))
+         (if (> height 0)
+             (and (> evt-row row)
+                  (<= evt-row (+ row height) ))
+           (and (< evt-row row)
+                (>= evt-row (+ row height)))))))
+
+(defun company--event-col-row (event)
+  (let* ((col-row (posn-actual-col-row (event-start event)))
+         (col (car col-row))
+         (row (cdr col-row)))
+    (incf col (window-hscroll))
+    (and header-line-format
+         (version< "24" emacs-version)
+         (decf row))
+    (cons col row)))
+
+(defun company-select-mouse (event)
+  "Select the candidate picked by the mouse."
+  (interactive "e")
+  (let ((event-col-row (company--event-col-row event))
+        (ovl-row (company--row))
+        (ovl-height (and company-pseudo-tooltip-overlay
+                         (min (overlay-get company-pseudo-tooltip-overlay
+                                           'company-height)
+                              company-candidates-length))))
+    (if (and ovl-height
+             (company--inside-tooltip-p event-col-row ovl-row ovl-height))
+        (progn
+          (company-set-selection (+ (cdr event-col-row)
+                                    (if (zerop company-tooltip-offset)
+                                        -1
+                                      (- company-tooltip-offset 2))
+                                    (- ovl-row)
+                                    (if (< ovl-height 0)
+                                        (- 1 ovl-height)
+                                      0)))
+          t)
+      (company-abort)
+      (company--unread-last-input)
+      nil)))
+
+(defun company-complete-mouse (event)
+  "Complete the candidate picked by the mouse."
+  (interactive "e")
+  (when (company-select-mouse event)
+    (company-complete-selection)))
+
+(defun company-complete-selection ()
+  "Complete the selected candidate."
+  (interactive)
+  (when (company-manual-begin)
+    (let ((result (nth company-selection company-candidates)))
+      (when company--auto-completion
+        (setq result (company--safe-candidate result)))
+      (company-finish result))))
+
+(defun company-complete-common ()
+  "Complete the common part of all candidates."
+  (interactive)
+  (when (company-manual-begin)
+    (if (and (not (cdr company-candidates))
+             (equal company-common (car company-candidates)))
+        (company-complete-selection)
+      (insert (company-strip-prefix company-common)))))
+
+(defun company-complete ()
+  "Complete the common part of all candidates or the current selection.
+The first time this is called, the common part is completed, the second
+time, or when the selection has been changed, the selected candidate is
+completed."
+  (interactive)
+  (when (company-manual-begin)
+    (if (or company-selection-changed
+            (eq last-command 'company-complete-common))
+        (call-interactively 'company-complete-selection)
+      (call-interactively 'company-complete-common)
+      (setq this-command 'company-complete-common))))
+
+(defun company-complete-number (n)
+  "Complete the Nth candidate.
+To show the number next to the candidates in some back-ends, enable
+`company-show-numbers'."
+  (when (company-manual-begin)
+    (and (< n 1) (> n company-candidates-length)
+         (error "No candidate number %d" n))
+    (decf n)
+    (company-finish (nth n company-candidates))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst company-space-strings-limit 100)
+
+(defconst company-space-strings
+  (let (lst)
+    (dotimes (i company-space-strings-limit)
+      (push (make-string (- company-space-strings-limit 1 i) ?\  ) lst))
+    (apply 'vector lst)))
+
+(defun company-space-string (len)
+  (if (< len company-space-strings-limit)
+      (aref company-space-strings len)
+    (make-string len ?\ )))
+
+(defun company-safe-substring (str from &optional to)
+  (if (> from (string-width str))
+      ""
+    (with-temp-buffer
+      (insert str)
+      (move-to-column from)
+      (let ((beg (point)))
+        (if to
+            (progn
+              (move-to-column to)
+              (concat (buffer-substring beg (point))
+                      (let ((padding (- to (current-column))))
+                        (when (> padding 0)
+                          (company-space-string padding)))))
+          (buffer-substring beg (point-max)))))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar company-last-metadata nil)
+(make-variable-buffer-local 'company-last-metadata)
+
+(defun company-fetch-metadata ()
+  (let ((selected (nth company-selection company-candidates)))
+    (unless (equal selected (car company-last-metadata))
+      (setq company-last-metadata
+            (cons selected (company-call-backend 'meta selected))))
+    (cdr company-last-metadata)))
+
+(defun company-doc-buffer (&optional string)
+  (with-current-buffer (get-buffer-create "*company-documentation*")
+    (erase-buffer)
+    (when string
+      (save-excursion
+        (insert string)))
+    (current-buffer)))
+
+(defvar company--electric-commands
+  '(scroll-other-window scroll-other-window-down)
+  "List of Commands that won't break out of electric commands.")
+
+(defmacro company--electric-do (&rest body)
+  (declare (indent 0) (debug t))
+  `(when (company-manual-begin)
+     (save-window-excursion
+       (let ((height (window-height))
+             (row (company--row))
+             cmd)
+         ,@body
+         (and (< (window-height) height)
+              (< (- (window-height) row 2) company-tooltip-limit)
+              (recenter (- (window-height) row 2)))
+         (while (memq (setq cmd (key-binding (vector (list (read-event)))))
+                      company--electric-commands)
+           (call-interactively cmd))
+         (company--unread-last-input)))))
+
+(defun company--unread-last-input ()
+  (when last-input-event
+    (clear-this-command-keys t)
+    (setq unread-command-events (list last-input-event))))
+
+(defun company-show-doc-buffer ()
+  "Temporarily show the documentation buffer for the selection."
+  (interactive)
+  (company--electric-do
+    (let* ((selected (nth company-selection company-candidates))
+           (doc-buffer (or (company-call-backend 'doc-buffer selected)
+                           (error "No documentation available"))))
+      (with-current-buffer doc-buffer
+        (goto-char (point-min)))
+      (display-buffer doc-buffer t))))
+(put 'company-show-doc-buffer 'company-keep t)
+
+(defun company-show-location ()
+  "Temporarily display a buffer showing the selected candidate in context."
+  (interactive)
+  (company--electric-do
+    (let* ((selected (nth company-selection company-candidates))
+           (location (company-call-backend 'location selected))
+           (pos (or (cdr location) (error "No location available")))
+           (buffer (or (and (bufferp (car location)) (car location))
+                       (find-file-noselect (car location) t))))
+      (with-selected-window (display-buffer buffer t)
+        (save-restriction
+          (widen)
+          (if (bufferp (car location))
+              (goto-char pos)
+            (goto-char (point-min))
+            (forward-line (1- pos))))
+        (set-window-start nil (point))))))
+(put 'company-show-location 'company-keep t)
+
+;;; package functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar company-callback nil)
+(make-variable-buffer-local 'company-callback)
+
+(defvar company-begin-with-marker nil)
+(make-variable-buffer-local 'company-begin-with-marker)
+
+(defun company-remove-callback (&optional ignored)
+  (remove-hook 'company-completion-finished-hook company-callback t)
+  (remove-hook 'company-completion-cancelled-hook 'company-remove-callback t)
+  (remove-hook 'company-completion-finished-hook 'company-remove-callback t)
+  (when company-begin-with-marker
+    (set-marker company-begin-with-marker nil)))
+
+(defun company-begin-backend (backend &optional callback)
+  "Start a completion at point using BACKEND."
+  (interactive (let ((val (completing-read "Company back-end: "
+                                           obarray
+                                           'functionp nil "company-")))
+                 (when val
+                   (list (intern val)))))
+  (when (setq company-callback callback)
+    (add-hook 'company-completion-finished-hook company-callback nil t))
+  (add-hook 'company-completion-cancelled-hook 'company-remove-callback nil t)
+  (add-hook 'company-completion-finished-hook 'company-remove-callback nil t)
+  (setq company-backend backend)
+  ;; Return non-nil if active.
+  (or (company-manual-begin)
+      (progn
+        (setq company-backend nil)
+        (error "Cannot complete at point"))))
+
+(defun company-begin-with (candidates
+                           &optional prefix-length require-match callback)
+  "Start a completion at point.
+CANDIDATES is the list of candidates to use and PREFIX-LENGTH is the length
+of the prefix that already is in the buffer before point.
+It defaults to 0.
+
+CALLBACK is a function called with the selected result if the user
+successfully completes the input.
+
+Example: \(company-begin-with '\(\"foo\" \"foobar\" \"foobarbaz\"\)\)"
+  ;; FIXME: When Emacs 23 is no longer a concern, replace
+  ;; `company-begin-with-marker' with a lexical variable; use a lexical closure.
+  (setq company-begin-with-marker (copy-marker (point) t))
+  (company-begin-backend
+   `(lambda (command &optional arg &rest ignored)
+      (cond
+       ((eq command 'prefix)
+        (when (equal (point) (marker-position company-begin-with-marker))
+          (buffer-substring ,(- (point) (or prefix-length 0)) (point))))
+       ((eq command 'candidates)
+        (all-completions arg ',candidates))
+       ((eq command 'require-match)
+        ,require-match)))
+   callback))
+
+;;; pseudo-tooltip ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar company-pseudo-tooltip-overlay nil)
+(make-variable-buffer-local 'company-pseudo-tooltip-overlay)
+
+(defvar company-tooltip-offset 0)
+(make-variable-buffer-local 'company-tooltip-offset)
+
+(defun company-pseudo-tooltip-update-offset (selection num-lines limit)
+
+  (decf limit 2)
+  (setq company-tooltip-offset
+        (max (min selection company-tooltip-offset)
+             (- selection -1 limit)))
+
+  (when (<= company-tooltip-offset 1)
+    (incf limit)
+    (setq company-tooltip-offset 0))
+
+  (when (>= company-tooltip-offset (- num-lines limit 1))
+    (incf limit)
+    (when (= selection (1- num-lines))
+      (decf company-tooltip-offset)
+      (when (<= company-tooltip-offset 1)
+        (setq company-tooltip-offset 0)
+        (incf limit))))
+
+  limit)
+
+;;; propertize
+
+(defsubst company-round-tab (arg)
+  (* (/ (+ arg tab-width) tab-width) tab-width))
+
+(defun company-plainify (str)
+  (let ((prefix (get-text-property 0 'line-prefix str)))
+    (when prefix ; Keep the original value unmodified, for no special reason.
+      (setq str (concat prefix str))
+      (remove-text-properties 0 (length str) '(line-prefix) str)))
+  (let* ((pieces (split-string str "\t"))
+         (copy pieces))
+    (while (cdr copy)
+      (setcar copy (company-safe-substring
+                    (car copy) 0 (company-round-tab (string-width (car copy)))))
+      (pop copy))
+    (apply 'concat pieces)))
+
+(defun company-fill-propertize (line width selected)
+  (setq line (company-safe-substring line 0 width))
+  (add-text-properties 0 width '(face company-tooltip
+                                 mouse-face company-tooltip-mouse)
+                       line)
+  (add-text-properties 0 (length company-common)
+                       '(face company-tooltip-common
+                         mouse-face company-tooltip-mouse)
+                       line)
+  (when selected
+    (if (and company-search-string
+             (string-match (regexp-quote company-search-string) line
+                           (length company-prefix)))
+        (progn
+          (add-text-properties (match-beginning 0) (match-end 0)
+                               '(face company-tooltip-selection)
+                               line)
+          (when (< (match-beginning 0) (length company-common))
+            (add-text-properties (match-beginning 0) (length company-common)
+                                 '(face company-tooltip-common-selection)
+                                 line)))
+      (add-text-properties 0 width '(face company-tooltip-selection
+                                          mouse-face company-tooltip-selection)
+                           line)
+      (add-text-properties 0 (length company-common)
+                           '(face company-tooltip-common-selection
+                             mouse-face company-tooltip-selection)
+                           line)))
+  line)
+
+;;; replace
+
+(defun company-buffer-lines (beg end)
+  (goto-char beg)
+  (let (lines)
+    (while (and (= 1 (vertical-motion 1))
+                (<= (point) end))
+      (let ((bound (min end (1- (point)))))
+        ;; A visual line can contain several physical lines (e.g. with outline's
+        ;; folding overlay).  Take only the first one.
+        (push (buffer-substring beg
+                                (save-excursion
+                                  (goto-char beg)
+                                  (re-search-forward "$" bound 'move)
+                                  (point)))
+              lines))
+      (setq beg (point)))
+    (unless (eq beg end)
+      (push (buffer-substring beg end) lines))
+    (nreverse lines)))
+
+(defun company-modify-line (old new offset)
+  (concat (company-safe-substring old 0 offset)
+          new
+          (company-safe-substring old (+ offset (length new)))))
+
+(defsubst company--length-limit (lst limit)
+  (if (nthcdr limit lst)
+      limit
+    (length lst)))
+
+(defun company--replacement-string (lines old column nl &optional align-top)
+
+  (let ((width (length (car lines)))
+        (remaining-cols (- (+ (window-width) (window-hscroll))
+                           column)))
+    (when (> width remaining-cols)
+      (decf column (- width remaining-cols))))
+
+  (let (new)
+    (when align-top
+      ;; untouched lines first
+      (dotimes (_ (- (length old) (length lines)))
+        (push (pop old) new)))
+    ;; length into old lines.
+    (while old
+      (push (company-modify-line (pop old) (pop lines) column) new))
+    ;; Append whole new lines.
+    (while lines
+      (push (concat (company-space-string column) (pop lines)) new))
+
+    (let ((str (concat (when nl "\n")
+                       (mapconcat 'identity (nreverse new) "\n")
+                       "\n")))
+      (font-lock-append-text-property 0 (length str) 'face 'default str)
+      str)))
+
+(defun company--create-lines (selection limit)
+
+  (let ((len company-candidates-length)
+        (numbered 99999)
+        lines
+        width
+        lines-copy
+        previous
+        remainder
+        new)
+
+    ;; Scroll to offset.
+    (setq limit (company-pseudo-tooltip-update-offset selection len limit))
+
+    (when (> company-tooltip-offset 0)
+      (setq previous (format "...(%d)" company-tooltip-offset)))
+
+    (setq remainder (- len limit company-tooltip-offset)
+          remainder (when (> remainder 0)
+                      (setq remainder (format "...(%d)" remainder))))
+
+    (decf selection company-tooltip-offset)
+    (setq width (max (length previous) (length remainder))
+          lines (nthcdr company-tooltip-offset company-candidates)
+          len (min limit len)
+          lines-copy lines)
+
+    (dotimes (_ len)
+      (setq width (max (length (pop lines-copy)) width)))
+    (setq width (min width (window-width)))
+
+    (setq lines-copy lines)
+
+    ;; number can make tooltip too long
+    (when company-show-numbers
+      (setq numbered company-tooltip-offset))
+
+    (when previous
+      (push (propertize (company-safe-substring previous 0 width)
+                        'face 'company-tooltip)
+            new))
+
+    (dotimes (i len)
+      (push (company-fill-propertize
+             (if (>= numbered 10)
+                 (company-reformat (pop lines))
+               (incf numbered)
+               (format "%s %d"
+                       (company-safe-substring (company-reformat (pop lines))
+                                               0 (- width 2))
+                       (mod numbered 10)))
+             width (equal i selection))
+            new))
+
+    (when remainder
+      (push (propertize (company-safe-substring remainder 0 width)
+                        'face 'company-tooltip)
+            new))
+
+    (setq lines (nreverse new))))
+
+;; show
+
+(defsubst company--window-inner-height ()
+  (let ((edges (window-inside-edges)))
+    (- (nth 3 edges) (nth 1 edges))))
+
+(defun company--pseudo-tooltip-height ()
+  "Calculate the appropriate tooltip height.
+Returns a negative number if the tooltip should be displayed above point."
+  (let* ((lines (company--row))
+         (below (- (company--window-inner-height) 1 lines)))
+    (if (and (< below (min company-tooltip-minimum company-candidates-length))
+             (> lines below))
+        (- (max 3 (min company-tooltip-limit lines)))
+      (max 3 (min company-tooltip-limit below)))))
+
+(defun company-pseudo-tooltip-show (row column selection)
+  (company-pseudo-tooltip-hide)
+  (save-excursion
+
+    (let* ((height (company--pseudo-tooltip-height))
+           above)
+
+      (when (< height 0)
+        (setq row (+ row height -1)
+              above t))
+
+      (let* ((nl (< (move-to-window-line row) row))
+             (beg (point))
+             (end (save-excursion
+                    (move-to-window-line (+ row (abs height)))
+                    (point)))
+             (ov (make-overlay beg end))
+             (args (list (mapcar 'company-plainify
+                                 (company-buffer-lines beg end))
+                         column nl above)))
+
+        (setq company-pseudo-tooltip-overlay ov)
+        (overlay-put ov 'company-replacement-args args)
+
+        (let ((lines (company--create-lines selection (abs height))))
+          (overlay-put ov 'company-after
+                       (apply 'company--replacement-string lines args))
+          (overlay-put ov 'company-width (string-width (car lines))))
+
+        (overlay-put ov 'company-column column)
+        (overlay-put ov 'company-height height)))))
+
+(defun company-pseudo-tooltip-show-at-point (pos)
+  (let ((row (company--row pos))
+        (col (company--column pos)))
+    (company-pseudo-tooltip-show (1+ row) col company-selection)))
+
+(defun company-pseudo-tooltip-edit (selection)
+  (let ((height (overlay-get company-pseudo-tooltip-overlay 'company-height)))
+    (overlay-put company-pseudo-tooltip-overlay 'company-after
+                 (apply 'company--replacement-string
+                        (company--create-lines selection (abs height))
+                        (overlay-get company-pseudo-tooltip-overlay
+                                     'company-replacement-args)))))
+
+(defun company-pseudo-tooltip-hide ()
+  (when company-pseudo-tooltip-overlay
+    (delete-overlay company-pseudo-tooltip-overlay)
+    (setq company-pseudo-tooltip-overlay nil)))
+
+(defun company-pseudo-tooltip-hide-temporarily ()
+  (when (overlayp company-pseudo-tooltip-overlay)
+    (overlay-put company-pseudo-tooltip-overlay 'invisible nil)
+    (overlay-put company-pseudo-tooltip-overlay 'line-prefix nil)
+    (overlay-put company-pseudo-tooltip-overlay 'after-string nil)))
+
+(defun company-pseudo-tooltip-unhide ()
+  (when company-pseudo-tooltip-overlay
+    (overlay-put company-pseudo-tooltip-overlay 'invisible t)
+    ;; Beat outline's folding overlays, at least.
+    (overlay-put company-pseudo-tooltip-overlay 'priority 1)
+    ;; No (extra) prefix for the first line.
+    (overlay-put company-pseudo-tooltip-overlay 'line-prefix "")
+    (overlay-put company-pseudo-tooltip-overlay 'after-string
+                 (overlay-get company-pseudo-tooltip-overlay 'company-after))
+    (overlay-put company-pseudo-tooltip-overlay 'window (selected-window))))
+
+(defun company-pseudo-tooltip-guard ()
+  (buffer-substring-no-properties
+   (point) (overlay-start company-pseudo-tooltip-overlay)))
+
+(defun company-pseudo-tooltip-frontend (command)
+  "`company-mode' front-end similar to a tooltip but based on overlays."
+  (case command
+    (pre-command (company-pseudo-tooltip-hide-temporarily))
+    (post-command
+     (let ((old-height (if (overlayp company-pseudo-tooltip-overlay)
+                           (overlay-get company-pseudo-tooltip-overlay
+                                        'company-height)
+                         0))
+           (new-height (company--pseudo-tooltip-height)))
+       (unless (and (>= (* old-height new-height) 0)
+                    (>= (abs old-height) (abs new-height))
+                    (equal (company-pseudo-tooltip-guard)
+                           (overlay-get company-pseudo-tooltip-overlay
+                                        'company-guard)))
+         ;; Redraw needed.
+         (company-pseudo-tooltip-show-at-point (- (point)
+                                                  (length company-prefix)))
+         (overlay-put company-pseudo-tooltip-overlay
+                      'company-guard (company-pseudo-tooltip-guard))))
+     (company-pseudo-tooltip-unhide))
+    (hide (company-pseudo-tooltip-hide)
+          (setq company-tooltip-offset 0))
+    (update (when (overlayp company-pseudo-tooltip-overlay)
+              (company-pseudo-tooltip-edit company-selection)))))
+
+(defun company-pseudo-tooltip-unless-just-one-frontend (command)
+  "`company-pseudo-tooltip-frontend', but not shown for single candidates."
+  (unless (and (eq command 'post-command)
+               (not (cdr company-candidates)))
+    (company-pseudo-tooltip-frontend command)))
+
+;;; overlay ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar company-preview-overlay nil)
+(make-variable-buffer-local 'company-preview-overlay)
+
+(defun company-preview-show-at-point (pos)
+  (company-preview-hide)
+
+  (setq company-preview-overlay (make-overlay pos pos))
+
+  (let ((completion(nth company-selection company-candidates)))
+    (setq completion (propertize completion 'face 'company-preview))
+    (add-text-properties 0 (length company-common)
+                         '(face company-preview-common) completion)
+
+    ;; Add search string
+    (and company-search-string
+         (string-match (regexp-quote company-search-string) completion)
+         (add-text-properties (match-beginning 0)
+                              (match-end 0)
+                              '(face company-preview-search)
+                              completion))
+
+    (setq completion (company-strip-prefix completion))
+
+    (and (equal pos (point))
+         (not (equal completion ""))
+         (add-text-properties 0 1 '(cursor t) completion))
+
+    (overlay-put company-preview-overlay 'after-string completion)
+    (overlay-put company-preview-overlay 'window (selected-window))))
+
+(defun company-preview-hide ()
+  (when company-preview-overlay
+    (delete-overlay company-preview-overlay)
+    (setq company-preview-overlay nil)))
+
+(defun company-preview-frontend (command)
+  "`company-mode' front-end showing the selection as if it had been inserted."
+  (case command
+    (pre-command (company-preview-hide))
+    (post-command (company-preview-show-at-point (point)))
+    (hide (company-preview-hide))))
+
+(defun company-preview-if-just-one-frontend (command)
+  "`company-preview-frontend', but only shown for single candidates."
+  (unless (and (eq command 'post-command)
+               (cdr company-candidates))
+    (company-preview-frontend command)))
+
+;;; echo ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar company-echo-last-msg nil)
+(make-variable-buffer-local 'company-echo-last-msg)
+
+(defvar company-echo-timer nil)
+
+(defvar company-echo-delay .01)
+
+(defun company-echo-show (&optional getter)
+  (when getter
+    (setq company-echo-last-msg (funcall getter)))
+  (let ((message-log-max nil))
+    (if company-echo-last-msg
+        (message "%s" company-echo-last-msg)
+      (message ""))))
+
+(defun company-echo-show-soon (&optional getter)
+  (when company-echo-timer
+    (cancel-timer company-echo-timer))
+  (setq company-echo-timer (run-with-timer 0 nil 'company-echo-show getter)))
+
+(defsubst company-echo-show-when-idle (&optional getter)
+  (when (sit-for company-echo-delay)
+    (company-echo-show getter)))
+
+(defun company-echo-format ()
+
+  (let ((limit (window-width (minibuffer-window)))
+        (len -1)
+        ;; Roll to selection.
+        (candidates (nthcdr company-selection company-candidates))
+        (i (if company-show-numbers company-selection 99999))
+        comp msg)
+
+    (while candidates
+      (setq comp (company-reformat (pop candidates))
+            len (+ len 1 (length comp)))
+      (if (< i 10)
+          ;; Add number.
+          (progn
+            (setq comp (propertize (format "%d: %s" i comp)
+                                   'face 'company-echo))
+            (incf len 3)
+            (incf i)
+            (add-text-properties 3 (+ 3 (length company-common))
+                                 '(face company-echo-common) comp))
+        (setq comp (propertize comp 'face 'company-echo))
+        (add-text-properties 0 (length company-common)
+                             '(face company-echo-common) comp))
+      (if (>= len limit)
+          (setq candidates nil)
+        (push comp msg)))
+
+    (mapconcat 'identity (nreverse msg) " ")))
+
+(defun company-echo-strip-common-format ()
+
+  (let ((limit (window-width (minibuffer-window)))
+        (len (+ (length company-prefix) 2))
+        ;; Roll to selection.
+        (candidates (nthcdr company-selection company-candidates))
+        (i (if company-show-numbers company-selection 99999))
+        msg comp)
+
+    (while candidates
+      (setq comp (company-strip-prefix (pop candidates))
+            len (+ len 2 (length comp)))
+      (when (< i 10)
+        ;; Add number.
+        (setq comp (format "%s (%d)" comp i))
+        (incf len 4)
+        (incf i))
+      (if (>= len limit)
+          (setq candidates nil)
+        (push (propertize comp 'face 'company-echo) msg)))
+
+    (concat (propertize company-prefix 'face 'company-echo-common) "{"
+            (mapconcat 'identity (nreverse msg) ", ")
+            "}")))
+
+(defun company-echo-hide ()
+  (unless (equal company-echo-last-msg "")
+    (setq company-echo-last-msg "")
+    (company-echo-show)))
+
+(defun company-echo-frontend (command)
+  "`company-mode' front-end showing the candidates in the echo area."
+  (case command
+    (post-command (company-echo-show-soon 'company-echo-format))
+    (hide (company-echo-hide))))
+
+(defun company-echo-strip-common-frontend (command)
+  "`company-mode' front-end showing the candidates in the echo area."
+  (case command
+    (post-command (company-echo-show-soon 'company-echo-strip-common-format))
+    (hide (company-echo-hide))))
+
+(defun company-echo-metadata-frontend (command)
+  "`company-mode' front-end showing the documentation in the echo area."
+  (case command
+    (post-command (company-echo-show-when-idle 'company-fetch-metadata))
+    (hide (company-echo-hide))))
+
+(provide 'company)
+;;; company.el ends here
diff --git a/packages/csv-mode/csv-mode.el b/packages/csv-mode/csv-mode.el
new file mode 100644 (file)
index 0000000..dbc6182
--- /dev/null
@@ -0,0 +1,1286 @@
+;;; csv-mode.el --- Major mode for editing comma/char separated values  -*- lexical-binding: t -*-
+
+;; Copyright (C) 2003, 2004, 2012, 2013  Free Software Foundation, Inc
+
+;; Author: Francis J. Wright <F.J.Wright at qmul.ac.uk>
+;; Time-stamp: <23 August 2004>
+;; URL: http://centaur.maths.qmul.ac.uk/Emacs/
+;; Version: 1.2
+;; Keywords: convenience
+
+;; This package is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; This package is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This package implements CSV mode, a major mode for editing records
+;; in a generalized CSV (character-separated values) format.  It binds
+;; finds with prefix ".csv" to `csv-mode' in `auto-mode-alist'.
+
+;; In CSV mode, the following commands are available:
+
+;; - C-c C-s (`csv-sort-fields') and C-c C-n (`csv-sort-numeric-fields')
+;;   respectively sort lexicographically and numerically on a
+;;   specified field or column.
+
+;; - C-c C-r (`csv-reverse-region') reverses the order.  (These
+;;   commands are based closely on, and use, code in `sort.el'.)
+
+;; - C-c C-k (`csv-kill-fields') and C-c C-y (`csv-yank-fields') kill
+;;   and yank fields or columns, although they do not use the normal
+;;   kill ring.  C-c C-k can kill more than one field at once, but
+;;   multiple killed fields can be yanked only as a fixed group
+;;   equivalent to a single field.
+
+;; - C-c C-a (`csv-align-fields') aligns fields into columns
+
+;; - C-c C-u (`csv-unalign-fields') undoes such alignment; separators
+;;   can be hidden within aligned records.
+
+;; - C-c C-t (`csv-transpose') interchanges rows and columns.  For
+;;   details, see the documentation for the individual commands.
+
+;; CSV mode can recognize fields separated by any of several single
+;; characters, specified by the value of the customizable user option
+;; `csv-separators'.  CSV data fields can be delimited by quote
+;; characters (and must if they contain separator characters).  This
+;; implementation supports quoted fields, where the quote characters
+;; allowed are specified by the value of the customizable user option
+;; `csv-field-quotes'.  By default, the only separator is a comma and
+;; the only field quote is a double quote.  These user options can be
+;; changed ONLY by customizing them, e.g. via M-x customize-variable.
+
+;; CSV mode commands ignore blank lines and comment lines beginning
+;; with the value of the buffer local variable `csv-comment-start',
+;; which by default is #.  The user interface is similar to that of
+;; the standard commands `sort-fields' and `sort-numeric-fields', but
+;; see the major mode documentation below.
+
+;; The global minor mode `csv-field-index-mode' provides display of
+;; the current field index in the mode line, cf. `line-number-mode'
+;; and `column-number-mode'.  It is on by default.
+
+;;; Installation:
+
+;; Put this file somewhere that Emacs can find it (i.e. in one of the
+;; directories in your `load-path' such as `site-lisp'), optionally
+;; byte-compile it (recommended), and put this in your .emacs file:
+;;
+;; (add-to-list 'auto-mode-alist '("\\.[Cc][Ss][Vv]\\'" . csv-mode))
+;; (autoload 'csv-mode "csv-mode"
+;;   "Major mode for editing comma-separated value files." t)
+
+;;; History:
+
+;; Begun on 15 November 2003 to provide lexicographic sorting of
+;; simple CSV data by field and released as csv.el.  Facilities to
+;; kill multiple fields and customize separator added on 9 April 2004.
+;; Converted to a major mode and renamed csv-mode.el on 10 April 2004,
+;; partly at the suggestion of Stefan Monnier <monnier at
+;; IRO.UMontreal.CA> to avoid conflict with csv.el by Ulf Jasper.
+;; Field alignment, comment support and CSV mode customization group
+;; added on 1 May 2004.  Support for index ranges added on 6 June
+;; 2004.  Multiple field separators added on 12 June 2004.
+;; Transposition added on 22 June 2004.  Separator invisibility added
+;; on 23 June 2004.
+
+;;; See also:
+
+;; the standard GNU Emacs 21 packages align.el, which will align
+;; columns within a region, and delim-col.el, which helps to prettify
+;; columns in a text region or rectangle;
+
+;; csv.el by Ulf Jasper <ulf.jasper at web.de>, which provides
+;; functions for reading/parsing comma-separated value files and is
+;; available at http://de.geocities.com/ulf_jasper/emacs.html (and in
+;; the gnu.emacs.sources archives).
+
+;;; To do (maybe):
+
+;; Make separators and quotes buffer-local and locally settable.
+;; Support (La)TeX tables: set separator and comment; support record
+;; end string.
+;; Convert comma-separated to space- or tab-separated.
+
+;;; Code:
+
+(defgroup CSV nil
+  "Major mode for editing files of comma-separated value type."
+  :group 'convenience)
+
+(defvar csv-separator-chars nil
+  "Field separators as a list of character.
+Set by customizing `csv-separators' -- do not set directly!")
+
+(defvar csv-separator-regexp nil
+  "Regexp to match a field separator.
+Set by customizing `csv-separators' -- do not set directly!")
+
+(defvar csv--skip-regexp nil
+  "Regexp used by `skip-chars-forward' etc. to skip fields.
+Set by customizing `csv-separators' -- do not set directly!")
+
+(defvar csv-font-lock-keywords nil
+  "Font lock keywords to highlight the field separators in CSV mode.
+Set by customizing `csv-separators' -- do not set directly!")
+
+(defcustom csv-separators '("," "\t")
+  "Field separators: a list of *single-character* strings.
+For example: (\",\"), the default, or (\",\" \";\" \":\").
+Neighbouring fields may be separated by any one of these characters.
+The first is used when inserting a field separator into the buffer.
+All must be different from the field quote characters, `csv-field-quotes'."
+  ;; Suggested by Eckhard Neber <neber@mwt.e-technik.uni-ulm.de>
+  :type '(repeat string)
+  ;; FIXME: Character would be better, but in Emacs 21.3 does not display
+  ;; correctly in a customization buffer.
+  :set (lambda (variable value)
+        (mapc (lambda (x)
+                (if (/= (length x) 1)
+                    (error "Non-single-char string %S" x))
+                 (if (and (boundp 'csv-field-quotes)
+                          (member x csv-field-quotes))
+                     (error "%S is already a quote" x)))
+              value)
+        (custom-set-default variable value)
+        (setq csv-separator-chars (mapcar 'string-to-char value)
+              csv--skip-regexp (apply 'concat "^\n" csv-separators)
+              csv-separator-regexp (apply 'concat `("[" ,@value "]"))
+              csv-font-lock-keywords
+              ;; NB: csv-separator-face variable evaluates to itself.
+              `((,csv-separator-regexp (0 'csv-separator-face))))))
+
+(defcustom csv-field-quotes '("\"")
+  "Field quotes: a list of *single-character* strings.
+For example: (\"\\\"\"), the default, or (\"\\\"\" \"'\" \"`\").
+A field can be delimited by a pair of any of these characters.
+All must be different from the field separators, `csv-separators'."
+  :type '(repeat string)
+  ;; Character would be better, but in Emacs 21 does not display
+  ;; correctly in a customization buffer.
+  :set (lambda (variable value)
+        (mapc (lambda (x)
+                (if (/= (length x) 1)
+                    (error "Non-single-char string %S" x))
+                (if (member x csv-separators)
+                    (error "%S is already a separator" x)))
+              value)
+        (when (boundp 'csv-mode-syntax-table)
+          ;; FIRST remove old quote syntax:
+          (with-syntax-table text-mode-syntax-table
+            (mapc (lambda (x)
+                    (modify-syntax-entry
+                     (string-to-char x)
+                     (string (char-syntax (string-to-char x)))
+                     ;; symbol-value to avoid compiler warning:
+                     (symbol-value 'csv-mode-syntax-table)))
+                  csv-field-quotes))
+          ;; THEN set new quote syntax:
+          (csv-set-quote-syntax value))
+        ;; BEFORE setting new value of `csv-field-quotes':
+        (custom-set-default variable value)))
+
+(defun csv-set-quote-syntax (field-quotes)
+  "Set syntax for field quote characters FIELD-QUOTES to be \"string\".
+FIELD-QUOTES should be a list of single-character strings."
+  (mapc (lambda (x)
+         (modify-syntax-entry
+          (string-to-char x) "\""
+          ;; symbol-value to avoid compiler warning:
+          (symbol-value 'csv-mode-syntax-table)))
+       field-quotes))
+
+(defvar csv-comment-start nil
+  "String that starts a comment line, or nil if no comment syntax.
+Such comment lines are ignored by CSV mode commands.
+This variable is buffer local\; its default value is that of
+`csv-comment-start-default'.  It is set by the function
+`csv-set-comment-start' -- do not set it directly!")
+
+(make-variable-buffer-local 'csv-comment-start)
+
+(defcustom csv-comment-start-default "#"
+  "String that starts a comment line, or nil if no comment syntax.
+Such comment lines are ignored by CSV mode commands.
+Default value of buffer-local variable `csv-comment-start'.
+Changing this variable does not affect any existing CSV mode buffer."
+  :type '(choice (const :tag "None" nil) string)
+  :set (lambda (variable value)
+        (custom-set-default variable value)
+        (set-default 'csv-comment-start value)))
+
+(defcustom csv-align-style 'left
+  "Aligned field style: one of 'left, 'centre, 'right or 'auto.
+Alignment style used by `csv-align-fields'.
+Auto-alignment means left align text and right align numbers."
+  :type '(choice (const left) (const centre)
+                (const right) (const auto)))
+
+(defcustom csv-align-padding 1
+  "Aligned field spacing: must be a positive integer.
+Number of spaces used by `csv-align-fields' after separators."
+  :type 'integer)
+
+(defcustom csv-header-lines 0
+  "Header lines to skip when setting region automatically."
+  :type 'integer)
+
+(defcustom csv-invisibility-default t
+  "If non-nil, make separators in aligned records invisible."
+  :type 'boolean)
+
+(defface csv-separator-face
+  '((t :inherit escape-glyph))
+  "CSV mode face used to highlight separators.")
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;  Mode definition, key bindings and menu
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst csv-mode-line-help-echo
+  ;; See bindings.el for details of `mode-line-format' construction.
+  (get-text-property 0 'help-echo (car (default-value 'mode-line-format)))
+  "Primary default mode line help echo text.")
+
+(defconst csv-mode-line-format
+  ;; See bindings.el for details of `mode-line-format' construction.
+  (let* ((ml (copy-sequence (default-value 'mode-line-format)))
+         (x (or (memq 'mode-line-position ml) (last 3 ml))))
+    (when x
+      (setcdr x (cons
+                 `(csv-field-index-string
+                   ("" csv-field-index-string
+                    ;; ,(propertize "--" 'help-echo csv-mode-line-help-echo)
+                    ))
+                 (cdr x))))
+    ml)
+  "Mode line format string for CSV mode.")
+
+(defvar csv-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [(control ?c) (control ?v)] 'csv-toggle-invisibility)
+    (define-key map [(control ?c) (control ?t)] 'csv-transpose)
+    (define-key map [(control ?c) (control ?c)] 'csv-set-comment-start)
+    (define-key map [(control ?c) (control ?u)] 'csv-unalign-fields)
+    (define-key map [(control ?c) (control ?a)] 'csv-align-fields)
+    (define-key map [(control ?c) (control ?z)] 'csv-yank-as-new-table)
+    (define-key map [(control ?c) (control ?y)] 'csv-yank-fields)
+    (define-key map [(control ?c) (control ?k)] 'csv-kill-fields)
+    (define-key map [(control ?c) (control ?d)] 'csv-toggle-descending)
+    (define-key map [(control ?c) (control ?r)] 'csv-reverse-region)
+    (define-key map [(control ?c) (control ?n)] 'csv-sort-numeric-fields)
+    (define-key map [(control ?c) (control ?s)] 'csv-sort-fields)
+    map))
+
+;;;###autoload
+(define-derived-mode csv-mode text-mode "CSV"
+  "Major mode for editing files of comma-separated value type.
+
+CSV mode is derived from `text-mode', and runs `text-mode-hook' before
+running `csv-mode-hook'.  It turns `auto-fill-mode' off by default.
+CSV mode can be customized by user options in the CSV customization
+group.  The separators are specified by the value of `csv-separators'.
+
+CSV mode commands ignore blank lines and comment lines beginning with
+the value of `csv-comment-start', which delimit \"paragraphs\".
+\"Sexp\" is re-interpreted to mean \"field\", so that `forward-sexp'
+\(\\[forward-sexp]), `kill-sexp' (\\[kill-sexp]), etc. all apply to fields.
+Standard comment commands apply, such as `comment-dwim' (\\[comment-dwim]).
+
+If `font-lock-mode' is enabled then separators, quoted values and
+comment lines are highlighted using respectively `csv-separator-face',
+`font-lock-string-face' and `font-lock-comment-face'.
+
+The user interface (UI) for CSV mode commands is similar to that of
+the standard commands `sort-fields' and `sort-numeric-fields', except
+that if there is no prefix argument then the UI prompts for the field
+index or indices.  In `transient-mark-mode' only: if the region is not
+set then the UI attempts to set it to include all consecutive CSV
+records around point, and prompts for confirmation; if there is no
+prefix argument then the UI prompts for it, offering as a default the
+index of the field containing point if the region was not set
+explicitly.  The region set automatically is delimited by blank lines
+and comment lines, and the number of header lines at the beginning of
+the region given by the value of `csv-header-lines' are skipped.
+
+Sort order is controlled by `csv-descending'.
+
+CSV mode provides the following specific keyboard key bindings:
+
+\\{csv-mode-map}"
+  (turn-off-auto-fill)
+  ;; Set syntax for field quotes:
+  (csv-set-quote-syntax csv-field-quotes)
+  ;; Make sexp functions apply to fields:
+  (set (make-local-variable 'forward-sexp-function) 'csv-forward-field)
+  (csv-set-comment-start csv-comment-start)
+  (setq
+   ;; Font locking -- separator plus syntactic:
+   font-lock-defaults '(csv-font-lock-keywords)
+   buffer-invisibility-spec csv-invisibility-default
+   ;; Mode line to support `csv-field-index-mode':
+   mode-line-format csv-mode-line-format)
+  (set (make-local-variable 'truncate-lines) t)
+  ;; Enable or disable `csv-field-index-mode' (could probably do this
+  ;; a bit more efficiently):
+  (csv-field-index-mode (symbol-value 'csv-field-index-mode)))
+
+(defun csv-set-comment-start (string)
+  "Set comment start for this CSV mode buffer to STRING.
+It must be either a string or nil."
+  (interactive
+   (list (edit-and-eval-command
+         "Comment start (string or nil): " csv-comment-start)))
+  ;; Paragraph means a group of contiguous records:
+  (setq csv-comment-start string)
+  (set (make-local-variable 'paragraph-separate) "[:space:]*$") ; White space.
+  (set (make-local-variable 'paragraph-start) "\n");Must include \n explicitly!
+  (if string
+      (progn
+       (setq paragraph-separate (concat paragraph-separate "\\|" string)
+             paragraph-start (concat paragraph-start "\\|" string))
+        (set (make-local-variable 'comment-start) string)
+       (modify-syntax-entry
+        (string-to-char string) "<" csv-mode-syntax-table)
+       (modify-syntax-entry ?\n ">" csv-mode-syntax-table))
+    (with-syntax-table text-mode-syntax-table
+      (modify-syntax-entry (string-to-char string)
+                          (string (char-syntax (string-to-char string)))
+                          csv-mode-syntax-table)
+      (modify-syntax-entry ?\n
+                          (string (char-syntax ?\n))
+                          csv-mode-syntax-table))))
+
+;;;###autoload
+(add-to-list 'auto-mode-alist '("\\.[Cc][Ss][Vv]\\'" . csv-mode))
+
+(defvar csv-descending nil
+  "If non-nil, CSV mode sort functions sort in order of descending sort key.
+Usually they sort in order of ascending sort key.")
+
+(defun csv-toggle-descending ()
+  "Toggle `csv-descending'."
+  (interactive)
+  (setq csv-descending (not csv-descending))
+  (message "Sort order is %sscending" (if csv-descending "de" "a")))
+
+(defun csv-toggle-invisibility ()
+  "Toggle `buffer-invisibility-spec'."
+  (interactive)
+  (setq buffer-invisibility-spec (not buffer-invisibility-spec))
+  (message "Separators in aligned records will be %svisible \
+\(after re-aligning if soft\)"
+          (if buffer-invisibility-spec "in" ""))
+  (redraw-frame (selected-frame)))
+
+(easy-menu-define
+  csv-menu
+  csv-mode-map
+  "CSV major mode menu keymap"
+  '("CSV"
+    ["Sort By Field Lexicographically" csv-sort-fields :active t
+     :help "Sort lines in region lexicographically by the specified field"]
+    ["Sort By Field Numerically" csv-sort-numeric-fields :active t
+     :help "Sort lines in region numerically by the specified field"]
+    ["Reverse Order of Lines" csv-reverse-region :active t
+     :help "Reverse the order of the lines in the region"]
+    ["Use Descending Sort Order" csv-toggle-descending :active t
+     :style toggle :selected csv-descending
+     :help "If selected, use descending order when sorting"]
+    "--"
+    ["Kill Fields (Columns)" csv-kill-fields :active t
+     :help "Kill specified fields of each line in the region"]
+    ["Yank Fields (Columns)" csv-yank-fields :active t
+     :help "Yank killed fields as specified field of each line in region"]
+    ["Yank As New Table" csv-yank-as-new-table :active t
+     :help "Yank killed fields as a new table at point"]
+    ["Align Fields into Columns" csv-align-fields :active t
+     :help "Align the start of every field of each line in the region"]
+    ["Unalign Columns into Fields" csv-unalign-fields :active t
+     :help "Undo soft alignment and optionally remove redundant white space"]
+    ["Transpose Rows and Columns" csv-transpose :active t
+     :help "Rewrite rows (which may have different lengths) as columns"]
+    "--"
+    ["Forward Field" forward-sexp :active t
+     :help "Move forward across one field\; with ARG, do it that many times"]
+    ["Backward Field" backward-sexp :active t
+     :help "Move backward across one field\; with ARG, do it that many times"]
+    ["Kill Field Forward" kill-sexp :active t
+     :help "Kill field following cursor\; with ARG, do it that many times"]
+    ["Kill Field Backward" backward-kill-sexp :active t
+     :help "Kill field preceding cursor\; with ARG, do it that many times"]
+    "--"
+    ("Alignment Style"
+     ["Left" (setq csv-align-style 'left) :active t
+      :style radio :selected (eq csv-align-style 'left)
+      :help "If selected, `csv-align-fields' left aligns fields"]
+     ["Centre" (setq csv-align-style 'centre) :active t
+      :style radio :selected (eq csv-align-style 'centre)
+      :help "If selected, `csv-align-fields' centres fields"]
+     ["Right" (setq csv-align-style 'right) :active t
+      :style radio :selected (eq csv-align-style 'right)
+      :help "If selected, `csv-align-fields' right aligns fields"]
+     ["Auto" (setq csv-align-style 'auto) :active t
+      :style radio :selected (eq csv-align-style 'auto)
+      :help "\
+If selected, `csv-align-fields' left aligns text and right aligns numbers"]
+     )
+    ["Show Current Field Index" csv-field-index-mode :active t
+     :style toggle :selected csv-field-index-mode
+     :help "If selected, display current field index in mode line"]
+    ["Make Separators Invisible" csv-toggle-invisibility :active t
+     :style toggle :selected buffer-invisibility-spec
+     :help "If selected, separators in aligned records are invisible"]
+    ["Set Buffer's Comment Start" csv-set-comment-start :active t
+     :help "Set comment start string for this buffer"]
+    ["Customize CSV Mode" (customize-group 'CSV) :active t
+     :help "Open a customization buffer to change CSV mode options"]
+    ))
+
+(require 'sort)
+
+(defsubst csv-not-looking-at-record ()
+  "Return t if looking at blank or comment line, nil otherwise.
+Assumes point is at beginning of line."
+  (looking-at paragraph-separate))
+
+(defun csv-interactive-args (&optional type)
+  "Get arg or field(s) and region interactively, offering sensible defaults.
+Signal an error if the buffer is read-only.
+If TYPE is noarg then return a list `(beg end)'.
+Otherwise, return a list `(arg beg end)', where arg is:
+  the raw prefix argument by default\;
+  a single field index if TYPE is single\;
+  a list of field indices or index ranges if TYPE is multiple.
+Field defaults to the current prefix arg\; if not set, prompt user.
+
+A field index list consists of positive or negative integers or ranges,
+separated by any non-integer characters.  A range has the form m-n,
+where m and n are positive or negative integers, m < n, and n defaults
+to the last field index if omitted.
+
+In transient mark mode, if the mark is not active then automatically
+select and highlight CSV records around point, and query user.
+The default field when read interactively is the current field."
+  ;; Must be run interactively to activate mark!
+  (let* ((arg current-prefix-arg) (default-field 1)
+        (region
+         (if (not (use-region-p))
+             ;; Set region automatically:
+             (save-excursion
+                (if arg
+                    (beginning-of-line)
+                  (let ((lbp (line-beginning-position)))
+                    (while (re-search-backward csv-separator-regexp lbp 1)
+                      ;; Move as far as possible, i.e. to beginning of line.
+                      (setq default-field (1+ default-field)))))
+                (if (csv-not-looking-at-record)
+                    (error "Point must be within CSV records"))
+               (let ((startline (point)))
+                 ;; Set mark at beginning of region:
+                 (while (not (or (bobp) (csv-not-looking-at-record)))
+                   (forward-line -1))
+                 (if (csv-not-looking-at-record) (forward-line 1))
+                 ;; Skip header lines:
+                 (forward-line csv-header-lines)
+                 (set-mark (point))    ; OK since in save-excursion
+                 ;; Move point to end of region:
+                 (goto-char startline)
+                 (beginning-of-line)
+                 (while (not (or (eobp) (csv-not-looking-at-record)))
+                   (forward-line 1))
+                 ;; Show mark briefly if necessary:
+                 (unless (and (pos-visible-in-window-p)
+                              (pos-visible-in-window-p (mark)))
+                   (exchange-point-and-mark)
+                   (sit-for 1)
+                   (exchange-point-and-mark))
+                 (or (y-or-n-p "Region OK? ")
+                     (error "Action aborted by user"))
+                 (message nil)         ; clear y-or-n-p message
+                 (list (region-beginning) (region-end))))
+           ;; Use region set by user:
+           (list (region-beginning) (region-end)))))
+    (setq default-field (number-to-string default-field))
+    (cond
+     ((eq type 'multiple)
+      (if arg
+         ;; Ensure that field is a list:
+         (or (consp arg)
+             (setq arg (list (prefix-numeric-value arg))))
+       ;; Read field interactively, ignoring non-integers:
+       (setq arg
+             (mapcar
+              (lambda (x)
+                (if (string-match "-" x 1) ; not first character
+                    ;; Return a range as a pair - the cdr may be nil:
+                    (let ((m (substring x 0 (match-beginning 0)))
+                          (n (substring x (match-end 0))))
+                      (cons (car (read-from-string m))
+                            (and (not (string= n ""))
+                                 (car (read-from-string n)))))
+                  ;; Return a number as a number:
+                  (car (read-from-string x))))
+              (split-string
+               (read-string
+                "Fields (sequence of integers or ranges): " default-field)
+               "[^-+0-9]+")))))
+     ((eq type 'single)
+      (if arg
+         (setq arg (prefix-numeric-value arg))
+       (while (not (integerp arg))
+         (setq arg (eval-minibuffer "Field (integer): " default-field))))))
+    (if (eq type 'noarg) region (cons arg region))))
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;  Sorting by field
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun csv-nextrecfun ()
+  "Called by `csv-sort-fields-1' with point at end of previous record.
+It moves point to the start of the next record.
+It should move point to the end of the buffer if there are no more records."
+  (forward-line)
+  (while (and (not (eobp)) (csv-not-looking-at-record))
+    (forward-line)))
+
+(defun csv-sort-fields-1 (field beg end startkeyfun endkeyfun)
+  "Modified version of `sort-fields-1' that skips blank or comment lines.
+
+FIELD is a single field index, and BEG and END specify the region to
+sort.
+
+STARTKEYFUN moves from the start of the record to the start of the key.
+It may return either a non-nil value to be used as the key, or
+else the key is the substring between the values of point after
+STARTKEYFUN and ENDKEYFUN are called.  If STARTKEYFUN is nil, the key
+starts at the beginning of the record.
+
+ENDKEYFUN moves from the start of the sort key to the end of the sort key.
+ENDKEYFUN may be nil if STARTKEYFUN returns a value or if it would be the
+same as ENDRECFUN."
+  (let ((tbl (syntax-table)))
+    (if (zerop field) (setq field 1))
+    (unwind-protect
+       (save-excursion
+         (save-restriction
+           (narrow-to-region beg end)
+           (goto-char (point-min))
+           (set-syntax-table sort-fields-syntax-table)
+           (sort-subr csv-descending
+                      'csv-nextrecfun 'end-of-line
+                      startkeyfun endkeyfun)))
+      (set-syntax-table tbl))))
+
+(defun csv-sort-fields (field beg end)
+  "Sort lines in region lexicographically by the ARGth field of each line.
+If not set, the region defaults to the CSV records around point.
+Fields are separated by `csv-separators' and null fields are allowed anywhere.
+Field indices increase from 1 on the left or decrease from -1 on the right.
+A prefix argument specifies a single field, otherwise prompt for field index.
+Ignore blank and comment lines.  The variable `sort-fold-case'
+determines whether alphabetic case affects the sort order.
+When called non-interactively, FIELD is a single field index\;
+BEG and END specify the region to sort."
+  ;; (interactive "*P\nr")
+  (interactive (csv-interactive-args 'single))
+  (barf-if-buffer-read-only)
+  (csv-sort-fields-1 field beg end
+                    (lambda () (csv-sort-skip-fields field) nil)
+                    (lambda () (skip-chars-forward csv--skip-regexp))))
+
+(defun csv-sort-numeric-fields (field beg end)
+  "Sort lines in region numerically by the ARGth field of each line.
+If not set, the region defaults to the CSV records around point.
+Fields are separated by `csv-separators'.
+Null fields are allowed anywhere and sort as zeros.
+Field indices increase from 1 on the left or decrease from -1 on the right.
+A prefix argument specifies a single field, otherwise prompt for field index.
+Specified non-null field must contain a number in each line of the region,
+which may begin with \"0x\" or \"0\" for hexadecimal and octal values.
+Otherwise, the number is interpreted according to sort-numeric-base.
+Ignore blank and comment lines.
+When called non-interactively, FIELD is a single field index\;
+BEG and END specify the region to sort."
+  ;; (interactive "*P\nr")
+  (interactive (csv-interactive-args 'single))
+  (barf-if-buffer-read-only)
+  (csv-sort-fields-1 field beg end
+                (lambda ()
+                  (csv-sort-skip-fields field)
+                  (let* ((case-fold-search t)
+                         (base
+                          (if (looking-at "\\(0x\\)[0-9a-f]\\|\\(0\\)[0-7]")
+                              (cond ((match-beginning 1)
+                                     (goto-char (match-end 1))
+                                     16)
+                                    ((match-beginning 2)
+                                     (goto-char (match-end 2))
+                                     8)
+                                    (t nil)))))
+                    (string-to-number (buffer-substring (point)
+                                                        (save-excursion
+                                                          (forward-sexp 1)
+                                                          (point)))
+                                      (or base sort-numeric-base))))
+                nil))
+
+(defun csv-reverse-region (beg end)
+  "Reverse the order of the lines in the region.
+This is just a CSV-mode style interface to `reverse-region', which is
+the function that should be used non-interactively.  It takes two
+point or marker arguments, BEG and END, delimiting the region."
+  ;; (interactive "*P\nr")
+  (interactive (csv-interactive-args 'noarg))
+  (barf-if-buffer-read-only)
+  (reverse-region beg end))
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;  Moving by field
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defsubst csv-end-of-field ()
+  "Skip forward over one field."
+  (skip-chars-forward " ")
+  (if (eq (char-syntax (following-char)) ?\")
+      (goto-char (scan-sexps (point) 1)))
+  (skip-chars-forward csv--skip-regexp))
+
+(defsubst csv-beginning-of-field ()
+  "Skip backward over one field."
+  (skip-syntax-backward " ")
+  (if (eq (char-syntax (preceding-char)) ?\")
+      (goto-char (scan-sexps (point) -1)))
+  (skip-chars-backward csv--skip-regexp))
+
+(defun csv-forward-field (arg)
+  "Move forward across one field, cf. `forward-sexp'.
+With ARG, do it that many times.  Negative arg -N means
+move backward across N fields."
+  (interactive "p")
+  (if (< arg 0)
+      (csv-backward-field (- arg))
+    (while (>= (setq arg (1- arg)) 0)
+      (if (or (bolp)
+             (when (and (not (eobp)) (eolp)) (forward-char) t))
+         (while (and (not (eobp)) (csv-not-looking-at-record))
+           (forward-line 1)))
+      (if (memq (following-char) csv-separator-chars) (forward-char))
+      (csv-end-of-field))))
+
+(defun csv-backward-field (arg)
+  "Move backward across one field, cf. `backward-sexp'.
+With ARG, do it that many times.  Negative arg -N means
+move forward across N fields."
+  (interactive "p")
+  (if (< arg 0)
+      (csv-forward-field (- arg))
+    (while (>= (setq arg (1- arg)) 0)
+      (when (or (eolp)
+               (when (and (not (bobp)) (bolp)) (backward-char) t))
+       (while (progn
+                (beginning-of-line)
+                (csv-not-looking-at-record))
+         (backward-char))
+       (end-of-line))
+      (if (memq (preceding-char) csv-separator-chars) (backward-char))
+      (csv-beginning-of-field))))
+
+(defun csv-sort-skip-fields (n &optional yank)
+  "Position point at the beginning of field N on the current line.
+Fields are separated by `csv-separators'\; null terminal field allowed.
+Assumes point is initially at the beginning of the line.
+YANK non-nil allows N to be greater than the number of fields, in
+which case extend the record as necessary."
+  (if (> n 0)
+      ;; Skip across N - 1 fields.
+      (let ((i (1- n)))
+       (while (> i 0)
+         (csv-end-of-field)
+         (if (eolp)
+             (if yank
+                 (if (> i 1) (insert (car csv-separators)))
+               (error "Line has too few fields: %s"
+                      (buffer-substring
+                       (save-excursion (beginning-of-line) (point))
+                       (save-excursion (end-of-line) (point)))))
+           (forward-char))             ; skip separator
+         (setq i (1- i))))
+    (end-of-line)
+    ;; Skip back across -N - 1 fields.
+    (let ((i (1- (- n))))
+      (while (> i 0)
+       (csv-beginning-of-field)
+       (if (bolp)
+           (error "Line has too few fields: %s"
+                  (buffer-substring
+                   (save-excursion (beginning-of-line) (point))
+                   (save-excursion (end-of-line) (point)))))
+       (backward-char)                 ; skip separator
+       (setq i (1- i)))
+      ;; Position at the front of the field
+      ;; even if moving backwards.
+      (csv-beginning-of-field))))
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;  Field index mode
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; Based partly on paren.el
+
+(defcustom csv-field-index-delay 0.125
+  "Time in seconds to delay before updating field index display."
+  :type '(number :tag "seconds"))
+
+(defvar csv-field-index-idle-timer nil)
+
+(defvar csv-field-index-string nil)
+(make-variable-buffer-local 'csv-field-index-string)
+
+(defvar csv-field-index-old nil)
+(make-variable-buffer-local 'csv-field-index-old)
+
+(define-minor-mode csv-field-index-mode
+  "Toggle CSV-Field-Index mode.
+With prefix ARG, turn CSV-Field-Index mode on if and only if ARG is positive.
+Returns the new status of CSV-Field-Index mode (non-nil means on).
+When CSV-Field-Index mode is enabled, the current field index appears in
+the mode line after `csv-field-index-delay' seconds of Emacs idle time."
+  :global t
+  :init-value t                       ; for documentation, since default is t
+  ;; This macro generates a function that first sets the mode
+  ;; variable, then runs the following code, runs the mode hooks,
+  ;; displays a message if interactive, updates the mode line and
+  ;; finally returns the variable value.
+
+  ;; First, always disable the mechanism (to avoid having two timers):
+  (when csv-field-index-idle-timer
+    (cancel-timer csv-field-index-idle-timer)
+    (setq csv-field-index-idle-timer nil))
+  ;; Now, if the mode is on and any buffer is in CSV mode then
+  ;; re-initialize and enable the mechanism by setting up a new timer:
+  (if csv-field-index-mode
+      (if (memq t (mapcar (lambda (buffer)
+                           (with-current-buffer buffer
+                             (when (derived-mode-p 'csv-mode)
+                               (setq csv-field-index-string nil
+                                     csv-field-index-old nil)
+                               t)))
+                         (buffer-list)))
+         (setq csv-field-index-idle-timer
+               (run-with-idle-timer csv-field-index-delay t
+                                    'csv-field-index)))
+    ;; but if the mode is off then remove the display from the mode
+    ;; lines of all CSV buffers:
+    (mapc (lambda (buffer)
+           (with-current-buffer buffer
+             (when (derived-mode-p 'csv-mode)
+               (setq csv-field-index-string nil
+                     csv-field-index-old nil)
+               (force-mode-line-update))))
+           (buffer-list))))
+
+(defun csv-field-index ()
+  "Construct `csv-field-index-string' to display in mode line.
+Called by `csv-field-index-idle-timer'."
+  (if (derived-mode-p 'csv-mode)
+      (save-excursion
+       (let ((lbp (line-beginning-position)) (field 1))
+         (while (re-search-backward csv-separator-regexp lbp 1)
+           ;; Move as far as possible, i.e. to beginning of line.
+           (setq field (1+ field)))
+         (if (csv-not-looking-at-record) (setq field nil))
+         (when (not (eq field csv-field-index-old))
+           (setq csv-field-index-old field
+                 csv-field-index-string
+                 (and field (propertize (format "F%d" field)
+                                        'help-echo csv-mode-line-help-echo)))
+           (force-mode-line-update))))))
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;  Killing and yanking fields
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar csv-killed-fields nil
+  "A list of the fields or sub-records last killed by `csv-kill-fields'.")
+
+(defun csv-kill-fields (fields beg end)
+  "Kill specified fields of each line in the region.
+If not set, the region defaults to the CSV records around point.
+Fields are separated by `csv-separators' and null fields are allowed anywhere.
+Field indices increase from 1 on the left or decrease from -1 on the right.
+The fields are stored for use by `csv-yank-fields'.  Fields can be
+specified in any order but are saved in increasing index order.
+Ignore blank and comment lines.
+
+When called interactively, a prefix argument specifies a single field,
+otherwise prompt for a field list, which may include ranges in the form
+m-n, where m < n and n defaults to the last field index if omitted.
+
+When called non-interactively, FIELDS is a single field index or a
+list of field indices, with ranges specified as (m.n) or (m), and BEG
+and END specify the region to process."
+  ;; (interactive "*P\nr")
+  (interactive (csv-interactive-args 'multiple))
+  (barf-if-buffer-read-only)
+  ;; Kill the field(s):
+  (setq csv-killed-fields nil)
+  (save-excursion
+    (save-restriction
+      (narrow-to-region beg end)
+      (goto-char (point-min))
+      (if (or (cdr fields) (consp (car fields)))
+         (csv-kill-many-columns fields)
+       (csv-kill-one-column (car fields)))))
+  (setq csv-killed-fields (nreverse csv-killed-fields)))
+
+(defun csv-kill-one-field (field)
+  "Kill field with index FIELD in current line.
+Return killed text.  Assumes point is at beginning of line."
+  ;; Move to start of field to kill:
+  (csv-sort-skip-fields field)
+  ;; Kill to end of field (cf. `kill-region'):
+  (prog1 (delete-and-extract-region
+          (point)
+          (progn (csv-end-of-field) (point)))
+    (if (eolp)
+        (unless (bolp) (delete-char -1)) ; Delete trailing separator at eol
+      (delete-char 1))))                 ; or following separator otherwise.
+
+(defun csv-kill-one-column (field)
+  "Kill field with index FIELD in all lines in (narrowed) buffer.
+Save killed fields in `csv-killed-fields'.
+Assumes point is at `point-min'.  Called by `csv-kill-fields'.
+Ignore blank and comment lines."
+  (while (not (eobp))
+    (or (csv-not-looking-at-record)
+       (push (csv-kill-one-field field) csv-killed-fields))
+    (forward-line)))
+
+(defun csv-kill-many-columns (fields)
+  "Kill several fields in all lines in (narrowed) buffer.
+FIELDS is an unordered list of field indices.
+Save killed fields in increasing index order in `csv-killed-fields'.
+Assumes point is at `point-min'.  Called by `csv-kill-fields'.
+Ignore blank and comment lines."
+  (if (eolp) (error "First record is empty"))
+  ;; Convert non-positive to positive field numbers:
+  (let ((last 1) (f fields))
+    (csv-end-of-field)
+    (while (not (eolp))
+      (forward-char)                   ; skip separator
+      (csv-end-of-field)
+      (setq last (1+ last)))        ; last = # fields in first record
+    (while f
+      (cond ((consp (car f))
+            ;; Expand a field range: (m.n) -> m m+1 ... n-1 n.
+            ;; If n is nil then it defaults to the number of fields.
+            (let* ((range (car f)) (cdrf (cdr f))
+                   (m (car range)) (n (cdr range)))
+              (if (< m 0) (setq m (+ m last 1)))
+              (if n
+                  (if (< n 0) (setq n (+ n last 1)))
+                (setq n last))
+              (setq range (list n))
+              (while (> n m) (push (setq n (1- n)) range))
+              (setcar f (car range))
+              (setcdr f (cdr range))
+              (setcdr (setq f (last range)) cdrf)))
+           ((zerop (car f)) (setcar f 1))
+           ((< (car f) 0) (setcar f (+ f last 1))))
+      (setq f (cdr f))))
+  (goto-char (point-min))
+  ;; Kill from right to avoid miscounting:
+  (setq fields (sort fields '>))
+  (while (not (eobp))
+    (or (csv-not-looking-at-record)
+       (let ((fields fields) killed-fields field)
+         (while fields
+           (setq field (car fields)
+                 fields (cdr fields))
+           (beginning-of-line)
+           (push (csv-kill-one-field field) killed-fields))
+         (push (mapconcat 'identity killed-fields (car csv-separators))
+               csv-killed-fields)))
+    (forward-line)))
+
+(defun csv-yank-fields (field beg end)
+  "Yank fields as the ARGth field of each line in the region.
+ARG may be arbitrarily large and records are extended as necessary.
+If not set, the region defaults to the CSV records around point\;
+if point is not in a CSV record then offer to yank as a new table.
+The fields yanked are those last killed by `csv-kill-fields'.
+Fields are separated by `csv-separators' and null fields are allowed anywhere.
+Field indices increase from 1 on the left or decrease from -1 on the right.
+A prefix argument specifies a single field, otherwise prompt for field index.
+Ignore blank and comment lines.  When called non-interactively, FIELD
+is a single field index\; BEG and END specify the region to process."
+  ;; (interactive "*P\nr")
+  (interactive (condition-case err
+                  (csv-interactive-args 'single)
+                (error (list nil nil err))))
+  (barf-if-buffer-read-only)
+  (if (null beg)
+      (if (y-or-n-p (concat (error-message-string end)
+                           ".  Yank as a new table? "))
+         (csv-yank-as-new-table)
+       (error (error-message-string end)))
+    (if (<= field 0) (setq field (1+ field)))
+    (save-excursion
+      (save-restriction
+       (narrow-to-region beg end)
+       (goto-char (point-min))
+       (let ((fields csv-killed-fields))
+         (while (not (eobp))
+           (unless (csv-not-looking-at-record)
+             ;; Yank at start of specified field if possible,
+             ;; otherwise yank at end of record:
+             (if (zerop field)
+                 (end-of-line)
+               (csv-sort-skip-fields field 'yank))
+             (and (eolp) (insert (car csv-separators)))
+             (when fields
+               (insert (car fields))
+               (setq fields (cdr fields)))
+             (or (eolp) (insert (car csv-separators))))
+           (forward-line)))))))
+
+(defun csv-yank-as-new-table ()
+  "Yank fields as a new table starting at point.
+The fields yanked are those last killed by `csv-kill-fields'."
+  (interactive "*")
+  (let ((fields csv-killed-fields))
+    (while fields
+      (insert (car fields) ?\n)
+      (setq fields (cdr fields)))))
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;  Aligning fields
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun csv--column-widths ()
+  (let ((widths '()))
+    ;; Construct list of column widths:
+    (while (not (eobp))                   ; for each record...
+      (or (csv-not-looking-at-record)
+          (let ((w widths)
+                (beg (point))            ; Beginning of current field.
+                x)
+            (while (not (eolp))
+              (csv-end-of-field)
+              (setq x (- (point) beg))    ; Field width.
+              (if w
+                  (if (> x (car w)) (setcar w x))
+                (setq w (list x)
+                      widths (nconc widths w)))
+              (or (eolp) (forward-char))  ; Skip separator.
+              (setq w (cdr w)
+                    beg (point)))))
+      (forward-line))
+    widths))
+
+(defun csv-align-fields (hard beg end)
+  "Align all the fields in the region to form columns.
+The alignment style is specified by `csv-align-style'.  The number of
+spaces specified by `csv-align-fields' appears after each separator.
+Use soft alignment done by displaying virtual white space after the
+separators unless invoked with an argument, in which case insert real
+space characters into the buffer after the separators.
+Unalign first (see `csv-unalign-fields').  Ignore blank and comment lines.
+
+In hard-aligned records, separators become invisible whenever
+`buffer-invisibility-spec' is non-nil.  In soft-aligned records, make
+separators invisible if and only if `buffer-invisibility-spec' is
+non-nil when the records are aligned\; this can be changed only by
+re-aligning.  \(Unaligning always makes separators visible.)
+
+When called non-interactively, use hard alignment if HARD is non-nil\;
+BEG and END specify the region to align.
+If there is no selected region, default to the whole buffer."
+  (interactive (cons current-prefix-arg
+                     (if (use-region-p)
+                         (list (region-beginning) (region-end))
+                       (list (point-min) (point-max)))))
+  (setq end (copy-marker end))
+  (csv-unalign-fields hard beg end) ; If hard then barfs if buffer read only.
+  (save-excursion
+    (save-restriction
+      (narrow-to-region beg end)
+      (set-marker end nil)
+      (goto-char (point-min))
+      (let ((widths (csv--column-widths)))
+
+       ;; Align fields:
+       (goto-char (point-min))
+       (while (not (eobp))             ; for each record...
+         (unless (csv-not-looking-at-record)
+            (let ((w widths)
+                  (column 0))    ;Desired position of left-side of this column.
+              (while (and w (not (eolp)))
+                (let* ((beg (point))
+                       (align-padding (if (bolp) 0 csv-align-padding))
+                       (left-padding 0) (right-padding 0)
+                       (field-width
+                        ;; FIXME: Don't assume length=string-width!
+                        (progn (csv-end-of-field) (- (point) beg)))
+                       (column-width (pop w))
+                       (x (- column-width field-width))) ; Required padding.
+                  (set-marker end (point)) ; End of current field.
+                  ;; beg = beginning of current field
+                  ;; end = (point) = end of current field
+
+                  ;; Compute required padding:
+                  (cond
+                   ((eq csv-align-style 'left)
+                    ;; Left align -- pad on the right:
+                    (setq left-padding align-padding
+                          right-padding x))
+                   ((eq csv-align-style 'right)
+                    ;; Right align -- pad on the left:
+                    (setq left-padding (+ align-padding x)))
+                   ((eq csv-align-style 'auto)
+                    ;; Auto align -- left align text, right align numbers:
+                    (if (string-match "\\`[-+.[:digit:]]+\\'"
+                                      (buffer-substring beg (point)))
+                        ;; Right align -- pad on the left:
+                        (setq left-padding (+ align-padding x))
+                      ;; Left align -- pad on the right:
+                      (setq left-padding align-padding
+                            right-padding x)))
+                   ((eq csv-align-style 'centre)
+                    ;; Centre -- pad on both left and right:
+                    (let ((y (/ x 2)))  ; truncated integer quotient
+                      (setq left-padding (+ align-padding y)
+                            right-padding (- x y)))))
+
+                  (cond
+                   (hard ;; Hard alignment...
+                    (when (> left-padding 0) ; Pad on the left.
+                      ;; Insert spaces before field:
+                      (if (= beg end)   ; null field
+                          (insert (make-string left-padding ?\ ))
+                        (goto-char beg) ; beginning of current field
+                        (insert (make-string left-padding ?\ ))
+                        (goto-char end))) ; end of current field
+                    (unless (eolp)
+                      (if (> right-padding 0) ; pad on the right
+                          ;; Insert spaces after field:
+                          (insert (make-string right-padding ?\ )))
+                      ;; Make separator (potentially) invisible;
+                      ;; in Emacs 21.3, neighbouring overlays
+                      ;; conflict, so use the following only
+                      ;; with hard alignment:
+                      (let ((ol (make-overlay (point) (1+ (point)) nil t)))
+                        (overlay-put ol 'invisible t)
+                        (overlay-put ol 'evaporate t))
+                      (forward-char)))  ; skip separator
+
+                   ;; Soft alignment...
+                   (buffer-invisibility-spec ; csv-invisibility-default
+
+                    ;; Hide separators...
+                    ;; Merge right-padding from previous field
+                    ;; with left-padding from this field:
+                    (if (zerop column)
+                        (when (> left-padding 0)
+                          ;; Display spaces before first field
+                          ;; by overlaying first character:
+                          (overlay-put
+                           (make-overlay beg (1+ beg))
+                           'before-string
+                           (make-string left-padding ?\ )))
+                      ;; Display separator as spaces:
+                      (with-silent-modifications
+                        (put-text-property
+                         (1- beg) beg
+                         'display `(space :align-to
+                                          ,(+ left-padding column)))))
+                    (unless (eolp) (forward-char)) ; Skip separator.
+                    (setq column (+ column column-width align-padding)))
+
+                   (t ;; Do not hide separators...
+                    (let ((overlay (make-overlay beg (point) nil nil t)))
+                      (when (> left-padding 0) ; Pad on the left.
+                        ;; Display spaces before field:
+                        (overlay-put overlay 'before-string
+                                     (make-string left-padding ?\ )))
+                      (unless (eolp)
+                        (if (> right-padding 0) ; Pad on the right.
+                            ;; Display spaces after field:
+                            (overlay-put
+                             overlay
+                             'after-string (make-string right-padding ?\ )))
+                        (forward-char)))) ; Skip separator.
+
+                   )))))
+         (forward-line)))))
+  (set-marker end nil))
+
+(defun csv-unalign-fields (hard beg end)
+  "Undo soft alignment and optionally remove redundant white space.
+Undo soft alignment introduced by `csv-align-fields'.  If invoked with
+an argument then also remove all spaces and tabs around separators.
+Also make all invisible separators visible again.
+Ignore blank and comment lines.  When called non-interactively, remove
+spaces and tabs if HARD non-nil\; BEG and END specify region to unalign.
+If there is no selected region, default to the whole buffer."
+  (interactive (cons current-prefix-arg
+                     (if (use-region-p)
+                         (list (region-beginning) (region-end))
+                       (list (point-min) (point-max)))))
+  ;; Remove any soft alignment:
+  (mapc 'delete-overlay        (overlays-in beg end))
+  (with-silent-modifications
+    (remove-list-of-text-properties beg end '(display)))
+  (when hard
+    (barf-if-buffer-read-only)
+    ;; Remove any white-space padding around separators:
+    (save-excursion
+      (save-restriction
+       (narrow-to-region beg end)
+       (goto-char (point-min))
+       (while (not (eobp))
+         (or (csv-not-looking-at-record)
+             (while (not (eolp))
+               ;; Delete horizontal white space forward:
+               ;; (delete-horizontal-space)
+               ;; This relies on left-to-right argument evaluation;
+               ;; see info node (elisp) Function Forms.
+               (delete-region (point)
+                              (+ (point) (skip-chars-forward " \t")))
+               (csv-end-of-field)
+               ;; Delete horizontal white space backward:
+               ;; (delete-horizontal-space t)
+               (delete-region (point)
+                              (+ (point) (skip-chars-backward " \t")))
+               (or (eolp) (forward-char))))
+         (forward-line))))))
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;  Transposing rows and columns
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun csv-transpose (beg end)
+  "Rewrite rows (which may have different lengths) as columns.
+Null fields are introduced as necessary within records but are
+stripped from the ends of records.  Preserve soft alignment.
+This function is its own inverse.  Ignore blank and comment lines.
+When called non-interactively, BEG and END specify region to process."
+  ;; (interactive "*P\nr")
+  (interactive (csv-interactive-args 'noarg))
+  (barf-if-buffer-read-only)
+  (save-excursion
+    (save-restriction
+      (narrow-to-region beg end)
+      (goto-char (point-min))
+      ;; Delete rows and collect them as a reversed list of lists of
+      ;; fields, skipping comment and blank lines:
+      (let ((sep (car csv-separators))
+           (align (overlays-in beg end))
+           rows columns)
+       ;; Remove soft alignment if necessary:
+       (when align
+         (mapc 'delete-overlay align)
+         (setq align t))
+       (while (not (eobp))
+         (if (csv-not-looking-at-record)
+             ;; Skip blank and comment lines:
+             (forward-line)
+           (let ((lep (line-end-position)))
+             (push
+              (csv-split-string
+               (buffer-substring-no-properties (point) lep)
+               csv-separator-regexp nil t)
+              rows)
+             (delete-region (point) lep)
+             (or (eobp) (delete-char 1)))))
+       ;; Rows must have monotonic decreasing lengths to be
+       ;; transposable, so ensure this by padding with null fields.
+       ;; rows is currently a reversed list of field lists, which
+       ;; must therefore have monotonic increasing lengths.
+       (let ((oldlen (length (car rows))) newlen
+             (r (cdr rows)))
+         (while r
+           (setq newlen (length (car r)))
+           (if (< newlen oldlen)
+               (nconc (car r) (make-list (- oldlen newlen) nil))
+             (setq oldlen newlen))
+           (setq r (cdr r))))
+       ;; Collect columns as a reversed list of lists of fields:
+       (while rows
+         (let (column (r rows) row)
+           (while r
+             (setq row (car r))
+             ;; Provided it would not be a trailing null field, push
+             ;; field onto column:
+             (if (or column (string< "" (car row)))
+                 (push (car row) column))
+             ;; Pop field off row:
+             (setcar r (cdr row))
+             ;; If row is now empty then remove it:
+             (or (car r) (setq rows (cdr rows)))
+             (setq r (cdr r)))
+           (push column columns)))
+       ;; Insert columns into buffer as rows:
+       (setq columns (nreverse columns))
+       (while columns
+         (insert (mapconcat 'identity (car columns) sep) ?\n)
+         (setq columns (cdr columns)))
+       ;; Re-do soft alignment if necessary:
+       (if align (csv-align-fields nil (point-min) (point-max)))))))
+
+;; The following generalised version of `split-string' is taken from
+;; the development version of WoMan and should probably replace the
+;; standard version in subr.el.  However, CSV mode (currently) needs
+;; only the `allowbeg' option.
+
+(defun csv-split-string
+  (string &optional separators subexp allowbeg allowend)
+  "Splits STRING into substrings where there are matches for SEPARATORS.
+Each match for SEPARATORS is a splitting point.
+The substrings between the splitting points are made into a list
+which is returned.
+If SEPARATORS is absent, it defaults to \"[ \\f\\t\\n\\r\\v]+\".
+SUBEXP specifies a subexpression of SEPARATORS to be the splitting
+point\; it defaults to 0.
+
+If there is a match for SEPARATORS at the beginning of STRING, we do
+not include a null substring for that, unless ALLOWBEG is non-nil.
+Likewise, if there is a match at the end of STRING, we do not include
+a null substring for that, unless ALLOWEND is non-nil.
+
+Modifies the match data; use `save-match-data' if necessary."
+  (or subexp (setq subexp 0))
+  (let ((rexp (or separators "[ \f\t\n\r\v]+"))
+       (start 0)
+       notfirst
+       (list nil))
+    (while (and (string-match rexp string
+                             (if (and notfirst
+                                      (= start (match-beginning subexp))
+                                      (< start (length string)))
+                                 (1+ start) start))
+               (< (match-beginning subexp) (length string)))
+      (setq notfirst t)
+      (or (and (not allowbeg) (eq (match-beginning subexp) 0))
+         (and (eq (match-beginning subexp) (match-end subexp))
+              (eq (match-beginning subexp) start))
+         (push (substring string start (match-beginning subexp)) list))
+      (setq start (match-end subexp)))
+    (or (and (not allowend) (eq start (length string)))
+       (push (substring string start) list))
+    (nreverse list)))
+
+(provide 'csv-mode)
+
+;;; csv-mode.el ends here
diff --git a/packages/debbugs/Debbugs.wsdl b/packages/debbugs/Debbugs.wsdl
new file mode 100644 (file)
index 0000000..64b9306
--- /dev/null
@@ -0,0 +1,340 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Copyright (C) 2011-2013  Free Software Foundation, Inc.
+
+This file is not part of GNU Emacs.
+
+This file is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This file is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>. -->
+
+<!-- This file describes the bindings of the debbugs SOAP interface
+(see <http://wiki.debian.org/DebbugsSoapInterface>).  The operation
+"get_versions" is not contained (yet). -->
+
+<wsdl:definitions
+    name="Debbugs/SOAP"
+    targetNamespace="urn:Debbugs/SOAP"
+    xmlns:tns="urn:Debbugs/SOAP"
+    xmlns:types="urn:Debbugs/SOAP/TYPES"
+    xmlns:apachens="http://xml.apache.org/xml-soap"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
+    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
+    soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+
+  <wsdl:types>
+    <schema targetNamespace="urn:Debbugs/SOAP/TYPES"
+           xmlns="http://www.w3.org/2001/XMLSchema">
+      <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
+
+      <complexType name="ArrayOfBugNumber">
+        <complexContent>
+          <restriction base="soapenc:Array">
+            <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:int[]"/>
+          </restriction>
+        </complexContent>
+       </complexType>
+
+      <complexType name="ArrayOfAnyType">
+        <complexContent>
+          <restriction base="soapenc:Array">
+            <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:anyType[]"/>
+          </restriction>
+        </complexContent>
+       </complexType>
+
+      <complexType name="ArrayOfArrayOfAnyType">
+        <complexContent>
+          <restriction base="soapenc:Array">
+            <attribute ref="soapenc:arrayType"
+                      wsdl:arrayType="types:ArrayOfAnyType[]"/>
+          </restriction>
+        </complexContent>
+       </complexType>
+
+      <complexType name="ArrayOfArrayOfArrayOfAnyType">
+        <complexContent>
+          <restriction base="soapenc:Array">
+            <attribute ref="soapenc:arrayType"
+                      wsdl:arrayType="types:ArrayOfArrayOfAnyType[]"/>
+          </restriction>
+        </complexContent>
+       </complexType>
+    </schema>
+
+    <schema targetNamespace="http://xml.apache.org/xml-soap"
+           xmlns="http://www.w3.org/2001/XMLSchema">
+      <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
+
+      <complexType name="mapItem">
+        <sequence>
+          <element name="key" nillable="true" type="xsd:int"/>
+          <element name="value" nillable="true" type="xsd:anyType"/>
+        </sequence>
+      </complexType>
+
+      <complexType name="Map">
+        <sequence>
+          <element maxOccurs="unbounded" minOccurs="0"
+                  name="item" type="apachens:mapItem"/>
+        </sequence>
+      </complexType>
+    </schema>
+  </wsdl:types>
+
+  <wsdl:message name="get_statusRequest">
+    <wsdl:part name="bugs" type="types:ArrayOfBugNumber"/>
+  </wsdl:message>
+  <wsdl:message name="get_statusResponse">
+    <wsdl:part name="s-gensym3" type="apachens:Map"/>
+  </wsdl:message>
+
+  <wsdl:message name="get_bug_logRequest">
+    <wsdl:part name="bugnumber" type="xsd:int"/>
+  </wsdl:message>
+  <wsdl:message name="get_bug_logResponse">
+    <wsdl:part name="soapenc:Array" type="types:ArrayOfAnyType"/>
+  </wsdl:message>
+
+  <wsdl:message name="get_bugsRequest">
+    <wsdl:part name="query" type="types:ArrayOfAnyType"/>
+  </wsdl:message>
+  <wsdl:message name="get_bugsResponse">
+    <wsdl:part name="soapenc:Array" type="types:ArrayOfBugNumber"/>
+  </wsdl:message>
+
+  <wsdl:message name="get_usertagRequest">
+    <wsdl:part name="user" type="xsd:string"/>
+    <!-- We do not support tags -->
+  </wsdl:message>
+  <wsdl:message name="get_usertagResponse">
+    <wsdl:part name="s-gensym3" type="xsd:anyType"/>
+  </wsdl:message>
+
+  <wsdl:message name="newest_bugsRequest">
+    <wsdl:part name="amount" type="xsd:int"/>
+  </wsdl:message>
+  <wsdl:message name="newest_bugsResponse">
+    <wsdl:part name="soapenc:Array" type="types:ArrayOfBugNumber"/>
+  </wsdl:message>
+
+  <wsdl:message name="search_estRequest">
+    <wsdl:part name="query" type="types:ArrayOfArrayOfAnyType"/>
+  </wsdl:message>
+  <wsdl:message name="search_estResponse">
+    <wsdl:part name="soapenc:Array" type="types:ArrayOfArrayOfArrayOfAnyType"/>
+  </wsdl:message>
+
+  <wsdl:portType name="Debbugs/SOAP">
+    <wsdl:operation name="get_status" parameterOrder="bugs">
+      <wsdl:input message="tns:get_statusRequest">
+        <soap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:input>
+      <wsdl:output message="tns:get_statusResponse">
+        <soap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:output>
+    </wsdl:operation>
+
+    <wsdl:operation name="get_bug_log" parameterOrder="bugnumber">
+      <wsdl:input message="tns:get_bug_logRequest">
+        <soap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:input>
+      <wsdl:output message="tns:get_bug_logResponse">
+        <soap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:output>
+    </wsdl:operation>
+
+    <wsdl:operation name="get_bugs" parameterOrder="query">
+      <wsdl:input message="tns:get_bugsRequest">
+        <soap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:input>
+      <wsdl:output message="tns:get_bugsResponse">
+        <soap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:output>
+    </wsdl:operation>
+
+    <wsdl:operation name="get_usertag" parameterOrder="user">
+      <wsdl:input message="tns:get_usertagRequest">
+        <soap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:input>
+      <wsdl:output message="tns:get_usertagResponse">
+        <soap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:output>
+    </wsdl:operation>
+
+    <wsdl:operation name="newest_bugs" parameterOrder="amount">
+      <wsdl:input message="tns:newest_bugsRequest">
+        <soap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:input>
+      <wsdl:output message="tns:newest_bugsResponse">
+        <soap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:output>
+    </wsdl:operation>
+
+    <wsdl:operation name="search_est" parameterOrder="query">
+      <wsdl:input message="tns:search_estRequest">
+        <soap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:input>
+      <wsdl:output message="tns:search_estResponse">
+        <soap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:portType>
+
+  <wsdl:binding name="Debbugs/SOAP/BINDING" type="tns:Debbugs/SOAP">
+    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+    <wsdl:operation name="get_status">
+      <wsdlsoap:operation soapAction="Debbugs/SOAP"/>
+      <wsdl:input name="get_statusRequest">
+        <wsdlsoap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:input>
+      <wsdl:output name="get_statusResponse">
+        <wsdlsoap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:output>
+    </wsdl:operation>
+
+    <wsdl:operation name="get_bug_log">
+      <wsdlsoap:operation soapAction="Debbugs/SOAP"/>
+      <wsdl:input name="get_bug_logRequest">
+        <wsdlsoap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:input>
+      <wsdl:output name="get_bug_logResponse">
+        <wsdlsoap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:output>
+    </wsdl:operation>
+
+    <wsdl:operation name="get_bugs">
+      <wsdlsoap:operation soapAction="Debbugs/SOAP"/>
+      <wsdl:input name="get_bugsRequest">
+        <wsdlsoap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:input>
+      <wsdl:output name="get_bugsResponse">
+        <wsdlsoap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:output>
+    </wsdl:operation>
+
+    <wsdl:operation name="get_usertag">
+      <wsdlsoap:operation soapAction="Debbugs/SOAP"/>
+      <wsdl:input name="get_tagRequest">
+        <wsdlsoap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:input>
+      <wsdl:output name="get_tagResponse">
+        <wsdlsoap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:output>
+    </wsdl:operation>
+
+    <wsdl:operation name="newest_bugs">
+      <wsdlsoap:operation soapAction="Debbugs/SOAP"/>
+      <wsdl:input name="newest_bugsRequest">
+        <wsdlsoap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:input>
+      <wsdl:output name="newest_bugsResponse">
+        <wsdlsoap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:output>
+    </wsdl:operation>
+
+    <wsdl:operation name="search_est">
+      <wsdlsoap:operation soapAction="Debbugs/SOAP"/>
+      <wsdl:input name="search_estRequest">
+        <wsdlsoap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:input>
+      <wsdl:output name="search_estResponse">
+        <wsdlsoap:body
+           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+           namespace="urn:Debbugs/SOAP"
+           use="encoded"/>
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+
+  <wsdl:service name="Debbugs/SOAP/SERVICE">
+    <wsdl:port binding="tns:Debbugs/SOAP/BINDING" name="gnu.org">
+      <wsdlsoap:address location="http://debbugs.gnu.org/cgi/soap.cgi"/>
+    </wsdl:port>
+    <wsdl:port binding="tns:Debbugs/SOAP/BINDING" name="debian.org">
+      <wsdlsoap:address location="http://bugs.debian.org/cgi-bin/soap.cgi"/>
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
diff --git a/packages/debbugs/README b/packages/debbugs/README
new file mode 100644 (file)
index 0000000..92db5ba
--- /dev/null
@@ -0,0 +1,19 @@
+This package lets you access the GNU Bug Tracker from within Emacs.
+
+It defines the command `M-x debbugs-gnu' for listing bugs, and the
+command `M-x debbugs-gnu-search' for bug searching.  The command
+`M-x debbugs-gnu-usertags' shows existing user tags on bugs.  In order
+to show bugs with known numbers, `M-x debbugs-gnu-bugs' could be used.
+
+If you prefer the listing of bugs as TODO items of `org-mode', you
+could use the commands `debbugs-org', `debbugs-org-search' and
+`debbugs-org-bugs' instead.
+
+This package works by implementing basic functions to access a Debbugs
+SOAP server (see <http://wiki.debian.org/DebbugsSoapInterface>).  It
+implements the SOAP functions "get_bugs", "newest_bugs", "get_status",
+"get_usertag", "get_bug_log" and "search_est".  The SOAP function
+"get_versions" is not implemented (yet).
+
+You can connect to other debbugs servers by customizing the variable
+`debbugs-port'.
diff --git a/packages/debbugs/debbugs-gnu.el b/packages/debbugs/debbugs-gnu.el
new file mode 100644 (file)
index 0000000..f5d6ae8
--- /dev/null
@@ -0,0 +1,1261 @@
+;;; debbugs-gnu.el --- interface for the GNU bug tracker
+
+;; Copyright (C) 2011-2013 Free Software Foundation, Inc.
+
+;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
+;;         Michael Albinus <michael.albinus@gmx.org>
+;; Keywords: comm, hypermedia, maint
+;; Package: debbugs
+;; Version: 0.5
+
+;; This file is not part of GNU Emacs.
+
+;; This program is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This package provides an interface to bug reports which are located
+;; on the GNU bug tracker debbugs.gnu.org.  Its main purpose is to
+;; show and manipulate bug reports from Emacs, but it could be used
+;; also for other GNU projects which use the same bug tracker.
+
+;; If you have `debbugs-gnu.el' in your load-path, you could enable
+;; the bug tracker commands by the following lines in your ~/.emacs
+;;
+;;   (autoload 'debbugs-gnu "debbugs-gnu" "" 'interactive)
+;;   (autoload 'debbugs-gnu-search "debbugs-gnu" "" 'interactive)
+;;   (autoload 'debbugs-gnu-usertags "debbugs-gnu" "" 'interactive)
+;;   (autoload 'debbugs-gnu-bugs "debbugs-gnu" "" 'interactive)
+
+;; The bug tracker is called interactively by
+;;
+;;   M-x debbugs-gnu
+
+;; It asks for the severities, for which bugs shall be shown. This can
+;; be either just one severity, or a list of severities, separated by
+;; comma.  Valid severities are "serious", "important", "normal",
+;; "minor" or "wishlist".  Severities "critical" and "grave" are not
+;; used, although configured on the GNU bug tracker.  If no severity
+;; is given, all bugs are selected.
+
+;; There is also the pseudo severity "tagged".  When it is used, the
+;; function will ask for user tags (a comma separated list), and shows
+;; just the bugs which are tagged with them.  In general, user tags
+;; shall be strings denoting to subprojects of the package, like
+;; "cedet" or "tramp" of the package "emacs".  If no user tag is
+;; given, locally tagged bugs are shown.
+
+;; If a prefix is given to the command, more search parameters are
+;; asked for, like packages (also a comma separated list, "emacs" is
+;; the default), whether archived bugs shall be shown, and whether
+;; closed bugs shall be shown.
+
+;; Another command is
+;;
+;;   M-x debbugs-gnu-search
+
+;; It behaves like `debbugs-gnu', but asks at the beginning for a
+;; search phrase to be used for full text search.  Additionally, it
+;; asks for key-value pairs to filter bugs.  Keys are as described in
+;; `debbugs-get-status', the corresponding value must be a regular
+;; expression to match for.  The other parameters are as described in
+;; `debbugs-gnu'.  Usually, there is just one value except for the
+;; attribute "date", which needs two arguments specifying a period in
+;; which the bug has been submitted or modified.
+
+;; The bug reports are downloaded from the bug tracker.  In order to
+;; not generate too much load of the server, up to 500 bugs will be
+;; downloaded at once.  If there are more hits, you will be asked to
+;; change this limit, but please don't increase this number too much.
+
+;; These default values could be changed also by customer options
+;; `debbugs-gnu-default-severities', `debbugs-gnu-default-packages',
+;; `debbugs-gnu-default-hits-per-page' and `debbugs-gnu-default-suppress-bugs'.
+
+;; The commands create one or more pages of bug lists.  Every bug is
+;; shown in one line, including the bug number, the status (combining
+;; merged bug numbers, keywords and severities), the name of the
+;; submitter, and the title of the bug.  On every bug line you could
+;; apply the following actions by the following keystrokes:
+
+;;   RET: Show corresponding messages in Gnus
+;;   "C": Send a control message
+;;   "t": Mark the bug locally as tagged
+;;   "d": Show bug attributes
+
+;; Furthermore, you could apply the global actions
+
+;;   "g": Rescan bugs
+;;   "q": Quit the buffer
+;;   "s": Toggle bug sorting for age or for state
+;;   "x": Toggle suppressing of bugs
+;;   "/": Display only bugs matching a string
+;;   "w": Display all the currently selected bug reports
+
+;; When you visit the related bug messages in Gnus, you could also
+;; send control messages by keystroke "C".
+
+;; In the header line of every bug list page, you can toggle sorting
+;; per column by selecting a column with the mouse.  The sorting
+;; happens as expected for the respective column; sorting in the Title
+;; column is depending on whether you are the owner of a bug.
+
+;; Another approach for listing bugs is calling the command
+;;
+;;   M-x debbugs-gnu-usertags
+
+;; This command shows you all existing user tags for the packages
+;; defined in `debbugs-gnu-default-packages'.  A prefix for the
+;; command allows you to use other packe names, or an arbitrary string
+;; for a user who has tagged bugs.  The command returns the list of
+;; existing user tags for the given user(s) or package name(s),
+;; respectively.  Applying RET on a user tag, all bugs tagged with
+;; this user tag are shown.
+
+;; Unfortunately, it is not possible with the SOAP interface to show
+;; all users who have tagged bugs.  This list can be retrieved via
+;; <http://debbugs.gnu.org/cgi/pkgindex.cgi?indexon=users>.
+
+;; Finally, if you simply want to list some bugs with known bug
+;; numbers, call the command
+;;
+;;   M-x debbugs-gnu-bugs
+
+;; The bug numbers to be shown shall be entered as comma separated list.
+
+;;; Code:
+
+(require 'debbugs)
+(require 'widget)
+(require 'wid-edit)
+(require 'tabulated-list)
+(eval-when-compile (require 'cl))
+
+(autoload 'gnus-read-ephemeral-emacs-bug-group "gnus-group")
+(autoload 'mail-header-subject "nnheader")
+(autoload 'gnus-summary-article-header "gnus-sum")
+(autoload 'message-make-from "message")
+
+(defgroup debbugs-gnu ()
+  "UI for the debbugs.gnu.org bug tracker."
+  :group 'debbugs
+  :version "24.1")
+
+(defcustom debbugs-gnu-default-severities '("serious" "important" "normal")
+  "*The list severities bugs are searched for.
+\"tagged\" is not a severity but marks locally tagged bugs."
+  ;; <http://debbugs.gnu.org/Developer.html#severities>
+  :group 'debbugs-gnu
+  :type '(set (const "serious")
+             (const "important")
+             (const "normal")
+             (const "minor")
+             (const "wishlist")
+             (const "tagged"))
+  :version "24.1")
+
+(defconst debbugs-gnu-all-severities
+  (mapcar 'cadr (cdr (get 'debbugs-gnu-default-severities 'custom-type)))
+  "*List of all possible severities.")
+
+(defcustom debbugs-gnu-default-packages '("emacs")
+  "*The list of packages to be searched for."
+  ;; <http://debbugs.gnu.org/Packages.html>
+  ;; <http://debbugs.gnu.org/cgi/pkgindex.cgi>
+  :group 'debbugs-gnu
+  :type '(set (const "automake")
+             (const "cc-mode")
+             (const "coreutils")
+             (const "debbugs.gnu.org")
+             (const "diffutils")
+             (const "emacs")
+             (const "emacs-xwidgets")
+             (const "fm")
+             (const "gnus")
+             (const "grep")
+             (const "guile")
+             (const "guix")
+             (const "gzip")
+             (const "libtool")
+             (const "ns")
+             (const "org-mode")
+             (const "parted")
+             (const "w32")
+             (const "woodchuck"))
+  :version "24.4")
+
+(defconst debbugs-gnu-all-packages
+  (mapcar 'cadr (cdr (get 'debbugs-gnu-default-packages 'custom-type)))
+  "*List of all possible package names.")
+
+(defcustom debbugs-gnu-default-hits-per-page 500
+  "*The number of bugs shown per page."
+  :group 'debbugs-gnu
+  :type 'integer
+  :version "24.1")
+
+(defcustom debbugs-gnu-default-suppress-bugs
+  '((pending . "done"))
+  "*A list of specs for bugs to be suppressed.
+An element of this list is a cons cell \(KEY . REGEXP\), with key
+being returned by `debbugs-get-status', and VAL a regular
+expression matching the corresponding value, a string.  Showing
+suppressed bugs is toggled by `debbugs-gnu-toggle-suppress'."
+  :group 'debbugs-gnu
+  :type '(alist :key-type symbol :value-type regexp)
+  :version "24.1")
+
+(defface debbugs-gnu-new '((t (:foreground "red")))
+  "Face for new reports that nobody has answered.")
+
+(defface debbugs-gnu-handled '((t (:foreground "ForestGreen")))
+  "Face for reports that have been modified recently.")
+
+(defface debbugs-gnu-pending '((t (:foreground "MidnightBlue")))
+  "Face for reports that are pending.")
+
+(defface debbugs-gnu-stale '((t (:foreground "orange")))
+  "Face for reports that have not been touched for a week.")
+
+(defface debbugs-gnu-done '((t (:foreground "DarkGrey")))
+  "Face for closed bug reports.")
+
+(defface debbugs-gnu-tagged '((t (:foreground "red")))
+  "Face for reports that have been tagged locally.")
+
+(defvar debbugs-gnu-widgets nil)
+
+(defvar debbugs-gnu-widget-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map "\r" 'widget-button-press)
+    (define-key map [mouse-2] 'widget-button-press)
+    map))
+
+(defvar debbugs-gnu-local-tags nil
+  "List of bug numbers tagged locally, and kept persistent.")
+
+(defvar debbugs-gnu-persistency-file
+  (expand-file-name (locate-user-emacs-file "debbugs"))
+  "File name of a persistency store for debbugs variables")
+
+(defun debbugs-gnu-dump-persistency-file ()
+  "Function to store debbugs variables persistently."
+  (with-temp-file debbugs-gnu-persistency-file
+    (insert
+     ";; -*- emacs-lisp -*-\n"
+     ";; Debbugs tags connection history.  Don't change this file.\n\n"
+     (format "(setq debbugs-gnu-local-tags '%S)"
+            (sort (copy-sequence debbugs-gnu-local-tags) '<)))))
+
+(defvar debbugs-gnu-current-query nil
+  "The query object of the current search.
+It will be applied server-side, when calling `debbugs-get-bugs'.
+It has the same format as `debbugs-gnu-default-suppress-bugs'.")
+
+(defvar debbugs-gnu-current-filter nil
+  "The filter object for the current search.
+It will be applied client-side, when parsing the results of
+`debbugs-get-status'.  It has a similar format as
+`debbugs-gnu-default-suppress-bugs'.  In case of keys representing
+a date, value is the cons cell \(BEFORE . AFTER\).")
+
+(defun debbugs-gnu-calendar-read (prompt acceptable &optional initial-contents)
+  "Return a string read from the minibuffer.
+Derived from `calendar-read'."
+  (let ((value (read-string prompt initial-contents)))
+    (while (not (funcall acceptable value))
+      (setq value (read-string prompt initial-contents)))
+    value))
+
+(defconst debbugs-gnu-phrase-prompt
+  (propertize
+   "Enter search phrase: "
+   'help-echo "\
+The search phrase contains words to be searched for, combined by
+operators like AND, ANDNOT and OR.  If there is no operator
+between the words, AND is used by default.  The phrase can also
+be empty, in this case only the following attributes are used for
+search."))
+
+;;;###autoload
+(defun debbugs-gnu-search ()
+  "Search for Emacs bugs interactively.
+Search arguments are requested interactively.  The \"search
+phrase\" is used for full text search in the bugs database.
+Further key-value pairs are requested until an empty key is
+returned.  If a key cannot be queried by a SOAP request, it is
+marked as \"client-side filter\"."
+  (interactive)
+
+  (unwind-protect
+      (let ((date-format "\\([[:digit:]]\\{4\\}\\)-\\([[:digit:]]\\{1,2\\}\\)-\\([[:digit:]]\\{1,2\\}\\)")
+           key val1 val2 phrase severities packages archivedp)
+
+       ;; Check for the phrase.
+       (setq phrase (read-string debbugs-gnu-phrase-prompt))
+       (if (zerop (length phrase))
+           (setq phrase nil)
+         (add-to-list 'debbugs-gnu-current-query (cons 'phrase phrase)))
+
+       ;; The other queries.
+       (catch :finished
+         (while t
+           (setq key (completing-read
+                      "Enter attribute: "
+                      (if phrase
+                          '("severity" "package" "tags" "submitter" "date"
+                            "subject" "status")
+                        '("severity" "package" "archive" "src" "tag"
+                          "owner" "submitter" "maint" "correspondent"
+                          "date" "log_modified" "last_modified"
+                          "found_date" "fixed_date" "unarchived"
+                          "subject" "done" "forwarded" "msgid" "summary"))
+                      nil t))
+           (cond
+            ;; Server-side queries.
+            ((equal key "severity")
+             (setq
+              severities
+              (completing-read-multiple
+               "Enter severities: " debbugs-gnu-all-severities nil t
+               (mapconcat 'identity debbugs-gnu-default-severities ","))))
+
+            ((equal key "package")
+             (setq
+              packages
+              (completing-read-multiple
+               "Enter packages: " debbugs-gnu-all-packages nil t
+               (mapconcat 'identity debbugs-gnu-default-packages ","))))
+
+            ((equal key "archive")
+             ;; We simplify, by assuming just archived bugs are requested.
+             (setq archivedp t))
+
+            ((member key '("src" "tag" "tags"))
+             (setq val1 (read-string (format "Enter %s: " key)))
+             (when (not (zerop (length val1)))
+               (add-to-list
+                'debbugs-gnu-current-query (cons (intern key) val1))))
+
+            ((member key '("owner" "submitter" "maint" "correspondent"))
+             (setq val1 (read-string "Enter email address: "))
+             (when (not (zerop (length val1)))
+               (add-to-list
+                'debbugs-gnu-current-query (cons (intern key) val1))))
+
+            ((equal key "status")
+             (setq
+              val1
+              (completing-read "Enter status: " '("done" "forwarded" "open")))
+             (when (not (zerop (length val1)))
+               (add-to-list
+                'debbugs-gnu-current-query (cons (intern key) val1))))
+
+            ;; Client-side filters.
+            ((member key '("date" "log_modified" "last_modified"
+                           "found_date" "fixed_date" "unarchived"))
+             (setq val1
+                   (debbugs-gnu-calendar-read
+                    (format "Enter %s before YYYY-MM-DD%s: "
+                            key (if phrase "" " (client-side filter)"))
+                    (lambda (x)
+                      (string-match (concat "^\\(" date-format "\\|\\)$") x))))
+             (if (string-match date-format val1)
+                 (setq val1 (floor
+                             (float-time
+                              (encode-time
+                               0 0 0
+                               (string-to-number (match-string 3 val1))
+                               (string-to-number (match-string 2 val1))
+                               (string-to-number (match-string 1 val1))))))
+               (setq val1 nil))
+             (setq val2
+                   (debbugs-gnu-calendar-read
+                    (format "Enter %s after YYYY-MM-DD%s: "
+                            key (if phrase "" " (client-side filter)"))
+                    (lambda (x)
+                      (string-match (concat "^\\(" date-format "\\|\\)$") x))))
+             (if (string-match date-format val2)
+                 (setq val2 (floor
+                             (float-time
+                              (encode-time
+                               0 0 0
+                               (string-to-number (match-string 3 val2))
+                               (string-to-number (match-string 2 val2))
+                               (string-to-number (match-string 1 val2))))))
+               (setq val2 nil))
+             (when (or val1 val2)
+               (add-to-list
+                (if phrase
+                    'debbugs-gnu-current-query 'debbugs-gnu-current-filter)
+                (cons (intern key) (cons val1 val2)))))
+
+            ((not (zerop (length key)))
+             (setq val1
+                   (funcall
+                    (if phrase 'read-string 'read-regexp)
+                    (format "Enter %s%s"
+                            key (if phrase ": " " (client-side filter)"))))
+             (when (not (zerop (length val1)))
+               (add-to-list
+                (if phrase
+                    'debbugs-gnu-current-query 'debbugs-gnu-current-filter)
+                (cons (intern key) val1))))
+
+            ;; The End.
+            (t (throw :finished nil)))))
+
+       ;; Do the search.
+       (debbugs-gnu severities packages archivedp))
+
+    ;; Reset query and filter.
+    (setq debbugs-gnu-current-query nil
+         debbugs-gnu-current-filter nil)))
+
+;;;###autoload
+(defun debbugs-gnu (severities &optional packages archivedp suppress tags)
+  "List all outstanding Emacs bugs."
+  (interactive
+   (let (severities archivedp)
+     (list
+      (setq severities
+           (completing-read-multiple
+            "Severities: " debbugs-gnu-all-severities nil t
+            (mapconcat 'identity debbugs-gnu-default-severities ",")))
+      ;; The next parameters are asked only when there is a prefix.
+      (if current-prefix-arg
+         (completing-read-multiple
+          "Packages: " debbugs-gnu-all-packages nil t
+          (mapconcat 'identity debbugs-gnu-default-packages ","))
+       debbugs-gnu-default-packages)
+      (when current-prefix-arg
+       (setq archivedp (y-or-n-p "Show archived bugs?")))
+      (when (and current-prefix-arg (not archivedp))
+       (y-or-n-p "Suppress unwanted bugs?"))
+      ;; This one must be asked for severity "tagged".
+      (when (member "tagged" severities)
+       (split-string (read-string "User tag(s): ") "," t)))))
+
+  ;; Initialize variables.
+  (when (and (file-exists-p debbugs-gnu-persistency-file)
+            (not debbugs-gnu-local-tags))
+    (with-temp-buffer
+      (insert-file-contents debbugs-gnu-persistency-file)
+      (eval (read (current-buffer)))))
+  (setq debbugs-gnu-widgets nil)
+
+  ;; Add queries.
+  (dolist (severity (if (consp severities) severities (list severities)))
+    (when (not (zerop (length severity)))
+      (add-to-list 'debbugs-gnu-current-query (cons 'severity severity))))
+  (dolist (package (if (consp packages) packages (list packages)))
+    (when (not (zerop (length package)))
+      (add-to-list 'debbugs-gnu-current-query (cons 'package package))))
+  (when archivedp
+    (add-to-list 'debbugs-gnu-current-query '(archive . "1")))
+  (dolist (tag (if (consp tags) tags (list tags)))
+    (when (not (zerop (length tag)))
+      (add-to-list 'debbugs-gnu-current-query (cons 'tag tag))))
+
+  (unwind-protect
+      (let ((hits debbugs-gnu-default-hits-per-page)
+           (ids (debbugs-gnu-get-bugs debbugs-gnu-current-query)))
+
+       (if (> (length ids) hits)
+           (let ((cursor-in-echo-area nil))
+             (setq hits
+                   (string-to-number
+                    (read-string
+                     (format
+                      "How many reports (available %d, default %d): "
+                      (length ids) hits)
+                     nil
+                     nil
+                     (number-to-string hits))))))
+
+       (if (> (length ids) hits)
+           (let ((i 0)
+                 curr-ids)
+             (while ids
+               (setq i (1+ i)
+                     curr-ids (butlast ids (- (length ids) hits)))
+               (add-to-list
+                'debbugs-gnu-widgets
+                (widget-convert
+                 'push-button
+                 :follow-link 'mouse-face
+                 :notify (lambda (widget &rest ignore)
+                           (debbugs-gnu-show-reports widget))
+                 :keymap debbugs-gnu-widget-map
+                 :suppress suppress
+                 :buffer-name (format "*Emacs Bugs*<%d>" i)
+                 :bug-ids curr-ids
+                 :query debbugs-gnu-current-query
+                 :filter debbugs-gnu-current-filter
+                 :help-echo (format "%d-%d" (car ids) (car (last curr-ids)))
+                 :format " %[%v%]"
+                 (number-to-string i))
+                'append)
+               (setq ids (last ids (- (length ids) hits))))
+             (debbugs-gnu-show-reports (car debbugs-gnu-widgets)))
+
+         (debbugs-gnu-show-reports
+          (widget-convert
+           'const
+           :suppress suppress
+           :buffer-name "*Emacs Bugs*"
+           :bug-ids ids
+           :query debbugs-gnu-current-query
+           :filter debbugs-gnu-current-filter))))
+
+    ;; Reset query and filter.
+    (setq debbugs-gnu-current-query nil
+         debbugs-gnu-current-filter nil)))
+
+(defun debbugs-gnu-get-bugs (query)
+  "Retrieve bugs numbers from debbugs.gnu.org according search criteria."
+  (let* ((debbugs-port "gnu.org")
+        (bugs (assoc 'bugs query))
+        (tags (assoc 'tag query))
+        (local-tags (and (member '(severity . "tagged") query) (not tags)))
+        (phrase (assoc 'phrase query))
+        args)
+    ;; Compile query arguments.
+    (unless (or query tags)
+      (dolist (elt debbugs-gnu-default-packages)
+       (setq args (append args (list :package elt)))))
+    (dolist (elt query)
+      (unless (equal elt '(severity . "tagged"))
+       (setq args
+             (append
+              args
+              (if phrase
+                  (cond
+                   ((eq (car elt) 'phrase)
+                    (list (list :phrase (cdr elt) :max 500)))
+                   ((eq (car elt) 'date)
+                    (list (list :date (cddr elt) (cadr elt)
+                                :operator "NUMBT")))
+                   (t
+                    (list (list (intern (concat ":" (symbol-name (car elt))))
+                                (cdr elt) :operator "ISTRINC"))))
+                (list (intern (concat ":" (symbol-name (car elt))))
+                      (cdr elt)))))))
+
+    (sort
+     (cond
+      ;; If the query is just a list of bug numbers, we return them.
+      (bugs (cdr bugs))
+      ;; If the query contains the pseudo-severity "tagged", we return
+      ;; just the local tagged bugs.
+      (local-tags (copy-sequence debbugs-gnu-local-tags))
+      ;; A full text query.
+      (phrase
+       (mapcar
+       (lambda (x) (cdr (assoc "id" x)))
+       (apply 'debbugs-search-est args)))
+      ;; User tags.
+      (tags
+       (setq args (mapcar (lambda (x) (if (eq x :package) :user x)) args))
+       (apply 'debbugs-get-usertag args))
+      ;; Otherwise, we retrieve the bugs from the server.
+      (t (apply 'debbugs-get-bugs args)))
+     ;; Sort function.
+     '<)))
+
+(defvar debbugs-gnu-current-widget nil)
+(defvar debbugs-gnu-current-limit nil)
+
+(defun debbugs-gnu-show-reports (widget)
+  "Show bug reports as given in WIDGET property :bug-ids."
+  ;; The tabulated mode sets several local variables.  We must get rid
+  ;; of them.
+  (when (get-buffer (widget-get widget :buffer-name))
+    (kill-buffer (widget-get widget :buffer-name)))
+  (pop-to-buffer (get-buffer-create (widget-get widget :buffer-name)))
+  (debbugs-gnu-mode)
+  (let ((inhibit-read-only t)
+       (debbugs-port "gnu.org"))
+    (erase-buffer)
+    (set (make-local-variable 'debbugs-gnu-current-widget) widget)
+
+    (dolist (status (apply 'debbugs-get-status (widget-get widget :bug-ids)))
+      (let* ((id (cdr (assq 'id status)))
+            (words
+             (mapconcat
+              'identity
+              (cons (cdr (assq 'severity status))
+                    (cdr (assq 'keywords status)))
+              ","))
+            (address (mail-header-parse-address
+                      (decode-coding-string (cdr (assq 'originator status))
+                                            'utf-8)))
+            (owner (if (cdr (assq 'owner status))
+                       (car (mail-header-parse-address
+                             (decode-coding-string (cdr (assq 'owner status))
+                                                   'utf-8)))))
+            (subject (decode-coding-string (cdr (assq 'subject status))
+                                           'utf-8))
+            merged)
+       (unless (equal (cdr (assq 'pending status)) "pending")
+         (setq words
+               (concat words "," (cdr (assq 'pending status)))))
+       (let ((packages (delete "emacs" (cdr (assq 'package status)))))
+         (when packages
+           (setq words (concat words "," (mapconcat 'identity packages ",")))))
+       (when (setq merged (cdr (assq 'mergedwith status)))
+         (setq words (format "%s,%s"
+                             (if (numberp merged)
+                                 merged
+                               (mapconcat 'number-to-string merged ","))
+                             words)))
+       (when (or (not merged)
+                 (not (let ((found nil))
+                        (dolist (id (if (listp merged)
+                                        merged
+                                      (list merged)))
+                          (dolist (entry tabulated-list-entries)
+                            (when (equal id (cdr (assq 'id (car entry))))
+                              (setq found t))))
+                        found)))
+         (add-to-list
+          'tabulated-list-entries
+          (list
+           status
+           (vector
+            (propertize
+             (format "%5d" id)
+             'face
+             ;; Mark tagged bugs.
+             (if (memq id debbugs-gnu-local-tags)
+                 'debbugs-gnu-tagged
+               'default))
+            (propertize
+             ;; Mark status and age.
+             words
+             'face
+             (cond
+              ((equal (cdr (assq 'pending status)) "done")
+               'debbugs-gnu-done)
+              ((member "pending" (cdr (assq 'keywords status)))
+               'debbugs-gnu-pending)
+              ((= (cdr (assq 'date status))
+                  (cdr (assq 'log_modified status)))
+               'debbugs-gnu-new)
+              ((< (- (float-time)
+                     (cdr (assq 'log_modified status)))
+                  (* 60 60 24 7 2))
+               'debbugs-gnu-handled)
+              (t
+               'debbugs-gnu-stale)))
+            (propertize
+             ;; Prefer the name over the address.
+             (or (cdr address)
+                 (car address))
+             'face
+             ;; Mark own submitted bugs.
+             (if (and (stringp (car address))
+                      (string-equal (car address) user-mail-address))
+                 'debbugs-gnu-tagged
+               'default))
+            (propertize
+             subject
+             'face
+             ;; Mark owned bugs.
+             (if (and (stringp owner)
+                      (string-equal owner user-mail-address))
+                 'debbugs-gnu-tagged
+               'default))))
+          'append))))
+    (tabulated-list-init-header)
+    (tabulated-list-print)
+
+    (set-buffer-modified-p nil)
+    (goto-char (point-min))))
+
+(defun debbugs-gnu-print-entry (list-id cols)
+  "Insert a debbugs entry at point.
+Used instead of `tabulated-list-print-entry'."
+  ;; This shall be in `debbugs-gnu-show-reports'.  But
+  ;; `tabulated-list-print' erases the buffer, therefore we do it
+  ;; here.  (bug#9047)
+  (when (and debbugs-gnu-widgets (= (point) (point-min)))
+    (widget-insert "Page:")
+    (mapc
+     (lambda (obj)
+       (if (eq obj debbugs-gnu-current-widget)
+          (widget-put obj :button-face 'widget-button-pressed)
+        (widget-put obj :button-face 'widget-button-face))
+       (widget-apply obj :create))
+     debbugs-gnu-widgets)
+    (widget-insert "\n\n")
+    (save-excursion
+      (widget-insert "\nPage:")
+      (mapc (lambda (obj) (widget-apply obj :create)) debbugs-gnu-widgets)
+      (widget-setup)))
+
+  (let ((beg (point))
+       (pos 0)
+       (case-fold-search t)
+       (id               (aref cols 0))
+       (id-length        (nth 1 (aref tabulated-list-format 0)))
+       (state            (aref cols 1))
+       (state-length     (nth 1 (aref tabulated-list-format 1)))
+       (submitter        (aref cols 2))
+       (submitter-length (nth 1 (aref tabulated-list-format 2)))
+       (title            (aref cols 3))
+       (title-length     (nth 1 (aref tabulated-list-format 3))))
+    (when (and
+          ;; We may have a narrowing in effect.
+          (or (not debbugs-gnu-current-limit)
+              (memq (cdr (assq 'id list-id)) debbugs-gnu-current-limit))
+          ;; Filter suppressed bugs.
+          (or (not (widget-get debbugs-gnu-current-widget :suppress))
+              (not (catch :suppress
+                     (dolist (check debbugs-gnu-default-suppress-bugs)
+                       (when
+                           (string-match
+                            (cdr check)
+                            (or (cdr (assq (car check) list-id)) ""))
+                         (throw :suppress t))))))
+          ;; Filter search list.
+          (not (catch :suppress
+                 (dolist (check
+                          (widget-get debbugs-gnu-current-widget :filter))
+                   (let ((val (cdr (assq (car check) list-id))))
+                     (if (stringp (cdr check))
+                         ;; Regular expression.
+                         (when (not (string-match (cdr check) (or val "")))
+                           (throw :suppress t))
+                       ;; Time value.
+                       (when (or (and (numberp (cadr check))
+                                      (< (cadr check) val))
+                                 (and (numberp (cddr check))
+                                      (> (cddr check) val)))
+                         (throw :suppress t))))))))
+
+      ;; Insert id.
+      (indent-to (- id-length (length id)))
+      (insert id)
+      ;; Insert state.
+      (indent-to (setq pos (+ pos id-length 1)) 1)
+      (insert (if (> (length state) state-length)
+                 (propertize (substring state 0 state-length)
+                             'help-echo state)
+               state))
+      ;; Insert submitter.
+      (indent-to (setq pos (+ pos state-length 1)) 1)
+      (insert "[" (if (> (length submitter) (- submitter-length 2))
+                     (propertize (substring submitter 0 (- submitter-length 2))
+                                 'help-echo submitter)
+                   submitter))
+      (indent-to (+ pos (1- submitter-length)))
+      (insert "]")
+      ;; Insert title.
+      (indent-to (setq pos (+ pos submitter-length 1)) 1)
+      (insert (propertize title 'help-echo title))
+      ;; Add properties.
+      (add-text-properties
+       beg (point) `(tabulated-list-id ,list-id mouse-face ,widget-mouse-face))
+      (insert ?\n))))
+
+(defvar debbugs-gnu-mode-map
+  (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map tabulated-list-mode-map)
+    (define-key map "\r" 'debbugs-gnu-select-report)
+    (define-key map [mouse-1] 'debbugs-gnu-select-report)
+    (define-key map [mouse-2] 'debbugs-gnu-select-report)
+    (define-key map "s" 'debbugs-gnu-toggle-sort)
+    (define-key map "t" 'debbugs-gnu-toggle-tag)
+    (define-key map "d" 'debbugs-gnu-display-status)
+    (define-key map "g" 'debbugs-gnu-rescan)
+    (define-key map "x" 'debbugs-gnu-toggle-suppress)
+    (define-key map "/" 'debbugs-gnu-narrow-to-status)
+    (define-key map "w" 'debbugs-gnu-widen)
+    (define-key map "C" 'debbugs-gnu-send-control-message)
+    map))
+
+(defun debbugs-gnu-rescan ()
+  "Rescan the current set of bug reports."
+  (interactive)
+
+  ;; The last page will be provided with new bug ids.
+  ;; TODO: Do it also for the other pages.
+  (when (and debbugs-gnu-widgets
+            (eq debbugs-gnu-current-widget (car (last debbugs-gnu-widgets))))
+    (let ((first-id (car (widget-get debbugs-gnu-current-widget :bug-ids)))
+         (last-id  (car
+                    (last (widget-get debbugs-gnu-current-widget :bug-ids))))
+         (ids (debbugs-gnu-get-bugs
+               (widget-get debbugs-gnu-current-widget :query))))
+
+      (while (and (<= first-id last-id) (not (memq first-id ids)))
+       (setq first-id (1+ first-id)))
+
+      (when (<= first-id last-id)
+       (widget-put debbugs-gnu-current-widget :bug-ids (memq first-id ids)))))
+
+  ;; Refresh the buffer.  `save-excursion' does not work, so we
+  ;; remember the position.
+  (let ((pos (point)))
+    (debbugs-gnu-show-reports debbugs-gnu-current-widget)
+    (goto-char pos)))
+
+(defvar debbugs-gnu-sort-state 'number)
+
+(define-derived-mode debbugs-gnu-mode tabulated-list-mode "Debbugs"
+  "Major mode for listing bug reports.
+
+All normal editing commands are switched off.
+\\<debbugs-gnu-mode-map>
+
+The following commands are available:
+
+\\{debbugs-gnu-mode-map}"
+  (set (make-local-variable 'debbugs-gnu-sort-state) 'number)
+  (set (make-local-variable 'debbugs-gnu-current-limit) nil)
+  (setq tabulated-list-format [("Id"         5 debbugs-gnu-sort-id)
+                              ("State"     20 debbugs-gnu-sort-state)
+                              ("Submitter" 25 t)
+                              ("Title"     10 debbugs-gnu-sort-title)])
+  (setq tabulated-list-sort-key (cons "Id" nil))
+  (setq tabulated-list-printer 'debbugs-gnu-print-entry)
+  (buffer-disable-undo)
+  (setq truncate-lines t)
+  (setq buffer-read-only t))
+
+(defun debbugs-gnu-sort-id (s1 s2)
+  (< (cdr (assq 'id (car s1)))
+     (cdr (assq 'id (car s2)))))
+
+(defconst debbugs-gnu-state-preference
+  '((debbugs-gnu-new . 1)
+    (debbugs-gnu-stale . 2)
+    (debbugs-gnu-handled . 3)
+    (debbugs-gnu-done . 4)
+    (debbugs-gnu-pending . 5)))
+
+(defun debbugs-gnu-get-state-preference (face-string)
+  (or (cdr (assq (get-text-property 0 'face face-string)
+                debbugs-gnu-state-preference))
+      10))
+
+(defconst debbugs-gnu-severity-preference
+  '(("serious" . 1)
+    ("important" . 2)
+    ("normal" . 3)
+    ("minor" . 4)
+    ("wishlist" . 5)))
+
+(defun debbugs-gnu-get-severity-preference (state)
+  (or (cdr (assoc (cdr (assq 'severity state))
+                 debbugs-gnu-severity-preference))
+      10))
+
+(defun debbugs-gnu-sort-state (s1 s2)
+  (let ((id1 (cdr (assq 'id (car s1))))
+       (age1 (debbugs-gnu-get-state-preference (aref (nth 1 s1) 1)))
+       (id2 (cdr (assq 'id (car s2))))
+       (age2 (debbugs-gnu-get-state-preference (aref (nth 1 s2) 1))))
+    (cond
+     ;; Tagged bugs go to the end.
+     ((and (not (memq id1 debbugs-gnu-local-tags))
+          (memq id2 debbugs-gnu-local-tags))
+      t)
+     ((and (memq id1 debbugs-gnu-local-tags)
+          (not (memq id2 debbugs-gnu-local-tags)))
+      nil)
+     ;; Then, we check the age of the bugs.
+     ((< age1 age2)
+      t)
+     ((> age1 age2)
+      nil)
+     ;; If they have the same age, we check for severity.
+     ((< (debbugs-gnu-get-severity-preference (car s1))
+        (debbugs-gnu-get-severity-preference (car s2)))
+      t)
+     (t nil))))
+
+(defun debbugs-gnu-sort-title (s1 s2)
+  (let ((owner (if (cdr (assq 'owner (car s1)))
+                  (car (mail-header-parse-address
+                        (decode-coding-string (cdr (assq 'owner (car s1)))
+                                              'utf-8))))))
+    (and (stringp owner)
+        (string-equal owner user-mail-address))))
+
+(defun debbugs-gnu-toggle-sort ()
+  "Toggle sorting by age and by state."
+  (interactive)
+  (if (eq debbugs-gnu-sort-state 'number)
+      (progn
+       (setq debbugs-gnu-sort-state 'state)
+       (setq tabulated-list-sort-key (cons "Id" nil)))
+    (setq debbugs-gnu-sort-state 'number)
+    (setq tabulated-list-sort-key (cons "State" nil)))
+  (tabulated-list-init-header)
+  (tabulated-list-print))
+
+(defun debbugs-gnu-widen ()
+  "Display all the currently selected bug reports."
+  (interactive)
+  (let ((id (debbugs-gnu-current-id t))
+       (inhibit-read-only t))
+    (setq debbugs-gnu-current-limit nil)
+    (tabulated-list-init-header)
+    (tabulated-list-print)
+    (when id
+      (debbugs-gnu-goto id))))
+
+(defun debbugs-gnu-narrow-to-status (string &optional status-only)
+  "Only display the bugs matching STRING.
+If STATUS-ONLY (the prefix), ignore matches in the From and
+Subject fields."
+  (interactive "sNarrow to: \np")
+  (let ((id (debbugs-gnu-current-id t))
+       (inhibit-read-only t)
+       status)
+    (setq debbugs-gnu-current-limit nil)
+    (goto-char (point-min))
+    (while (not (eobp))
+      (setq status (debbugs-gnu-current-status))
+      (if (and (not (member string (assq 'keywords status)))
+              (not (member string (assq 'severity status)))
+              (or status-only
+                  (not (string-match string (cdr (assq 'originator status)))))
+              (or status-only
+                  (not (string-match string (cdr (assq 'subject status))))))
+         (delete-region (point) (progn (forward-line 1) (point)))
+       (push (cdr (assq 'id status)) debbugs-gnu-current-limit)
+       (forward-line 1)))
+    (when id
+      (debbugs-gnu-goto id))))
+
+(defun debbugs-gnu-goto (id)
+  "Go to the line displaying bug ID."
+  (goto-char (point-min))
+  (while (and (not (eobp))
+             (not (equal (debbugs-gnu-current-id t) id)))
+    (forward-line 1)))
+
+(defun debbugs-gnu-toggle-tag ()
+  "Toggle tag of the report in the current line."
+  (interactive)
+  (save-excursion
+    (beginning-of-line)
+    (let ((inhibit-read-only t)
+         (id (debbugs-gnu-current-id)))
+      (if (memq id debbugs-gnu-local-tags)
+         (progn
+           (setq debbugs-gnu-local-tags (delq id debbugs-gnu-local-tags))
+           (put-text-property (point) (+ (point) 5) 'face 'default))
+       (add-to-list 'debbugs-gnu-local-tags id)
+       (put-text-property
+        (+ (point) (- 5 (length (number-to-string id)))) (+ (point) 5)
+        'face 'debbugs-gnu-tagged))))
+  (debbugs-gnu-dump-persistency-file))
+
+(defun debbugs-gnu-toggle-suppress ()
+  "Suppress bugs marked in `debbugs-gnu-suppress-bugs'."
+  (interactive)
+  (widget-put debbugs-gnu-current-widget :suppress
+             (not (widget-get debbugs-gnu-current-widget :suppress)))
+  (tabulated-list-init-header)
+  (tabulated-list-print))
+
+(defvar debbugs-gnu-bug-number nil)
+(defvar debbugs-gnu-subject nil)
+
+(defun debbugs-gnu-current-id (&optional noerror)
+  (or (cdr (assq 'id (debbugs-gnu-current-status)))
+      (and (not noerror)
+          (error "No bug on the current line"))))
+
+(defun debbugs-gnu-current-status ()
+  (get-text-property (line-beginning-position) 'tabulated-list-id))
+
+(defun debbugs-gnu-current-query ()
+  (widget-get debbugs-gnu-current-widget :query))
+
+(defun debbugs-gnu-display-status (query status)
+  "Display the query and status of the report on the current line."
+  (interactive (list (debbugs-gnu-current-query)
+                    (debbugs-gnu-current-status)))
+  (pop-to-buffer "*Bug Status*")
+  (let ((inhibit-read-only t))
+    (erase-buffer)
+    (when query (pp query (current-buffer)))
+    (when status (pp status (current-buffer)))
+    (goto-char (point-min)))
+  (set-buffer-modified-p nil)
+  (special-mode))
+
+(defun debbugs-gnu-select-report ()
+  "Select the report on the current line."
+  (interactive)
+  ;; We open the report messages.
+  (let* ((status (debbugs-gnu-current-status))
+        (id (cdr (assq 'id status)))
+        (merged (cdr (assq 'mergedwith status))))
+    (gnus-read-ephemeral-emacs-bug-group
+     (cons id (if (listp merged)
+                 merged
+               (list merged)))
+     (cons (current-buffer)
+          (current-window-configuration)))
+    (with-current-buffer (window-buffer (selected-window))
+      (set (make-local-variable 'debbugs-gnu-bug-number) id)
+      (set (make-local-variable 'debbugs-gnu-subject)
+          (format "Re: bug#%d: %s" id (cdr (assq 'subject status))))
+      (debbugs-gnu-summary-mode 1))))
+
+(defvar debbugs-gnu-summary-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map "C" 'debbugs-gnu-send-control-message)
+    map))
+
+(defvar gnus-posting-styles)
+
+(define-minor-mode debbugs-gnu-summary-mode
+  "Minor mode for providing a debbugs interface in Gnus summary buffers.
+
+\\{debbugs-gnu-summary-mode-map}"
+  :lighter " Debbugs" :keymap debbugs-gnu-summary-mode-map
+  (set (make-local-variable 'gnus-posting-styles)
+       `((".*"
+         (eval
+          (when (buffer-live-p gnus-article-copy)
+            (with-current-buffer gnus-article-copy
+              (set (make-local-variable 'message-prune-recipient-rules)
+                   '((".*@debbugs.*" "emacs-pretest-bug")
+                     (".*@debbugs.*" "bug-gnu-emacs")
+                     ("[0-9]+@debbugs.*" "submit@debbugs.gnu.org")
+                     ("[0-9]+@debbugs.*" "quiet@debbugs.gnu.org")))
+              (set (make-local-variable 'message-alter-recipients-function)
+                   (lambda (address)
+                     (if (string-match "\\([0-9]+\\)@donarmstrong"
+                                       (car address))
+                         (let ((new (format "%s@debbugs.gnu.org"
+                                            (match-string 1 (car address)))))
+                           (cons new new))
+                       address)))
+              ;; `gnus-posting-styles' is eval'ed after
+              ;; `message-simplify-subject'.  So we cannot use m-s-s.
+              (setq subject ,debbugs-gnu-subject))))))))
+
+(defun debbugs-gnu-guess-current-id ()
+  "Guess the ID based on \"#23\"."
+  (save-excursion
+    (beginning-of-line)
+    (and
+     (or (re-search-forward "#\\([0-9]+\\)" (line-end-position) t)
+        (progn
+          (goto-char (point-min))
+          (re-search-forward "#\\([0-9]+\\)" nil t)))
+     (string-to-number (match-string 1)))))
+
+(defun debbugs-gnu-send-control-message (message &optional reverse)
+  "Send a control message for the current bug report.
+You can set the severity or add a tag, or close the report.  If
+you use the special \"done\" MESSAGE, the report will be marked as
+fixed, and then closed.
+
+If given a prefix, and given a tag to set, the tag will be
+removed instead."
+  (interactive
+   (list (completing-read
+         "Control message: "
+         '("serious" "important" "normal" "minor" "wishlist"
+           "done" "donenotabug" "donewontfix" "doneunreproducible"
+           "unarchive" "reopen" "close"
+           "merge" "forcemerge"
+           "owner" "noowner"
+           "invalid"
+           "reassign"
+           "patch" "wontfix" "moreinfo" "unreproducible" "fixed" "notabug"
+           "pending" "help" "security" "confirmed"
+           "usertag")
+         nil t)
+        current-prefix-arg))
+  (let* ((id (or debbugs-gnu-bug-number        ; Set on group entry.
+                (debbugs-gnu-guess-current-id)
+                (debbugs-gnu-current-id)))
+        (version
+         (when (member message '("close" "done"))
+           (read-string
+            "Version: "
+            (cond
+             ;; Emacs development versions.
+             ((string-match
+               "^\\([0-9]+\\)\\.\\([0-9]+\\)\\.\\([0-9]+\\)\\." emacs-version)
+              (format "%s.%d"
+                      (match-string 1 emacs-version)
+                      (1+ (string-to-number (match-string 2 emacs-version)))))
+             ;; Emacs release versions.
+             ((string-match
+               "^\\([0-9]+\\)\\.\\([0-9]+\\)\\.\\([0-9]+\\)$" emacs-version)
+              (format "%s.%s"
+                      (match-string 1 emacs-version)
+                      (match-string 2 emacs-version)))
+             (t emacs-version))))))
+    (with-temp-buffer
+      (insert "To: control@debbugs.gnu.org\n"
+             "From: " (message-make-from) "\n"
+             (format "Subject: control message for bug #%d\n" id)
+             "\n"
+             (cond
+              ((member message '("unarchive" "reopen" "noowner"))
+               (format "%s %d\n" message id))
+              ((member message '("merge" "forcemerge"))
+               (format "%s %d %s\n" message id
+                       (read-string "Merge with bug #: ")))
+              ((equal message "owner")
+               (format "owner %d !\n" id))
+              ((equal message "reassign")
+               (format "reassign %d %s\n" id (read-string "Package(s): ")))
+              ((equal message "close")
+               (format "close %d %s\n" id version))
+              ((equal message "done")
+               (format "tags %d fixed\nclose %d %s\n" id id version))
+              ((member message '("donenotabug" "donewontfix"
+                                 "doneunreproducible"))
+               (format "tags %d %s\nclose %d\n" id (substring message 4) id))
+              ((member message '("serious" "important" "normal"
+                                 "minor" "wishlist"))
+               (format "severity %d %s\n" id message))
+              ((equal message "invalid")
+               (format "tags %d notabug\ntags %d wontfix\nclose %d\n"
+                       id id id))
+              ((equal message "usertag")
+               (format "user %s\nusertag %d %s\n"
+                       (completing-read
+                        "Package name or email address: "
+                        (append
+                         debbugs-gnu-all-packages (list user-mail-address))
+                        nil nil (car debbugs-gnu-default-packages))
+                       id (read-string "User tag: ")))
+              (t
+               (format "tags %d%s %s\n"
+                       id (if reverse " -" "")
+                       message))))
+      (funcall send-mail-function))))
+
+(defvar debbugs-gnu-usertags-mode-map
+  (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map tabulated-list-mode-map)
+    (define-key map "\r" 'debbugs-gnu-select-usertag)
+    (define-key map [mouse-1] 'debbugs-gnu-select-usertag)
+    (define-key map [mouse-2] 'debbugs-gnu-select-usertag)
+    map))
+
+(define-derived-mode debbugs-gnu-usertags-mode tabulated-list-mode "Usertags"
+  "Major mode for listing user tags.
+
+All normal editing commands are switched off.
+\\<debbugs-gnu-usertags-mode-map>
+
+The following commands are available:
+
+\\{debbugs-gnu-usertags-mode-map}"
+  (buffer-disable-undo)
+  (setq truncate-lines t)
+  (setq buffer-read-only t))
+
+;;;###autoload
+(defun debbugs-gnu-usertags (&rest users)
+  "List all user tags for USERS, which is \(\"emacs\"\) by default."
+  (interactive
+   (if current-prefix-arg
+       (completing-read-multiple
+       "Package name(s) or email address: "
+       (append debbugs-gnu-all-packages (list user-mail-address)) nil nil
+       (mapconcat 'identity debbugs-gnu-default-packages ","))
+     debbugs-gnu-default-packages))
+
+  (unwind-protect
+      (let ((inhibit-read-only t)
+           (debbugs-port "gnu.org")
+           (buffer-name "*Emacs User Tags*")
+           (user-tab-length
+            (1+ (apply 'max (length "User") (mapcar 'length users)))))
+
+       ;; Initialize variables.
+       (when (and (file-exists-p debbugs-gnu-persistency-file)
+                  (not debbugs-gnu-local-tags))
+         (with-temp-buffer
+           (insert-file-contents debbugs-gnu-persistency-file)
+           (eval (read (current-buffer)))))
+
+       ;; Create buffer.
+       (when (get-buffer buffer-name)
+         (kill-buffer buffer-name))
+       (pop-to-buffer (get-buffer-create buffer-name))
+       (debbugs-gnu-usertags-mode)
+       (setq tabulated-list-format `[("User" ,user-tab-length t)
+                                     ("Tag"  10 t)])
+       (setq tabulated-list-sort-key (cons "User" nil))
+       ;(setq tabulated-list-printer 'debbugs-gnu-print-entry)
+       (erase-buffer)
+
+       ;; Retrieve user tags.
+       (dolist (user users)
+         (dolist (tag (sort (debbugs-get-usertag :user user) 'string<))
+           (add-to-list
+            'tabulated-list-entries
+            ;; `tabulated-list-id' is the parameter list for `debbugs-gnu'.
+            `((("tagged") (,user) nil nil (,tag))
+              ,(vector (propertize user 'mouse-face widget-mouse-face)
+                       (propertize tag 'mouse-face widget-mouse-face)))
+            'append)))
+
+       ;; Add local tags.
+       (when debbugs-gnu-local-tags
+         (add-to-list
+            'tabulated-list-entries
+            `((("tagged"))
+              ,(vector "" (propertize "(local tags)"
+                                      'mouse-face widget-mouse-face)))))
+
+       ;; Show them.
+       (tabulated-list-init-header)
+       (tabulated-list-print)
+
+       (set-buffer-modified-p nil)
+       (goto-char (point-min)))))
+
+(defun debbugs-gnu-select-usertag ()
+  "Select the user tag on the current line."
+  (interactive)
+  ;; We open the bug reports.
+  (let ((args (get-text-property (line-beginning-position) 'tabulated-list-id)))
+    (when args (apply 'debbugs-gnu args))))
+
+;;;###autoload
+(defun debbugs-gnu-bugs (&rest bugs)
+  "List all BUGS, a list of bug numbers."
+  (interactive
+   (mapcar 'string-to-number
+          (completing-read-multiple "Bug numbers: " nil 'natnump)))
+  (dolist (elt bugs)
+    (unless (natnump elt) (signal 'wrong-type-argument (list 'natnump elt))))
+  (add-to-list 'debbugs-gnu-current-query (cons 'bugs bugs))
+  (debbugs-gnu nil))
+
+(provide 'debbugs-gnu)
+
+;;; TODO:
+
+;; * Reorganize pages after client-side filtering.
+
+;;; debbugs-gnu.el ends here
diff --git a/packages/debbugs/debbugs-org.el b/packages/debbugs/debbugs-org.el
new file mode 100644 (file)
index 0000000..efb8dd4
--- /dev/null
@@ -0,0 +1,427 @@
+;;; debbugs-org.el --- Org-mode interface for the GNU bug tracker
+
+;; Copyright (C) 2013 Free Software Foundation, Inc.
+
+;; Author: Michael Albinus <michael.albinus@gmx.org>
+;; Keywords: comm, hypermedia, maint, outlines
+;; Package: debbugs
+;; Version: 0.5
+
+;; This file is not part of GNU Emacs.
+
+;; This program is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This package provides an interface to bug reports which are located
+;; on the GNU bug tracker debbugs.gnu.org.  Its main purpose is to
+;; show and manipulate bug reports as org-mode TODO items.
+
+;; If you have `debbugs-org.el' in your load-path, you could enable
+;; the bug tracker commands by the following lines in your ~/.emacs
+;;
+;;   (autoload 'debbugs-org "debbugs-org" "" 'interactive)
+;;   (autoload 'debbugs-org-search "debbugs-org" "" 'interactive)
+;;   (autoload 'debbugs-org-bugs "debbugs-org" "" 'interactive)
+
+;; The bug tracker is called interactively by
+;;
+;;   M-x debbugs-org
+
+;; It asks for the severities, for which bugs shall be shown. This can
+;; be either just one severity, or a list of severities, separated by
+;; comma.  Valid severities are "serious", "important", "normal",
+;; "minor" or "wishlist".  Severities "critical" and "grave" are not
+;; used, although configured on the GNU bug tracker.  If no severity
+;; is given, all bugs are selected.
+
+;; There is also the pseudo severity "tagged".  When it is used, the
+;; function will ask for user tags (a comma separated list), and shows
+;; just the bugs which are tagged with them.  In general, user tags
+;; shall be strings denoting to subprojects of the package, like
+;; "cedet" or "tramp" of the package "emacs".  If no user tag is
+;; given, locally tagged bugs are shown.
+
+;; If a prefix is given to the command, more search parameters are
+;; asked for, like packages (also a comma separated list, "org-mode" is
+;; the default), or whether archived bugs shall be shown.
+
+;; Another command is
+;;
+;;   M-x debbugs-org-search
+
+;; It behaves like `debbugs-org', but asks at the beginning for a
+;; search phrase to be used for full text search.  Additionally, it
+;; asks for key-value pairs to filter bugs.  Keys are as described in
+;; `debbugs-get-status', the corresponding value must be a regular
+;; expression to match for.  The other parameters are as described in
+;; `debbugs-org'.
+
+;; The bug reports are downloaded from the bug tracker.  In order to
+;; not generate too much load of the server, up to 500 bugs will be
+;; downloaded at once.  If there are more hits, you will be asked to
+;; change this limit, but please don't increase this number too much.
+
+;; These default values could be changed also by customer options
+;; `debbugs-gnu-default-severities', `debbugs-gnu-default-packages'
+;; and `debbugs-gnu-default-hits-per-page'.
+
+;; The commands create a TODO list.  Besides the usual handling of
+;; TODO items, you could apply the following actions by the following
+;; keystrokes:
+
+;;   "C-c # C": Send a debbugs control message
+;;   "C-c # t": Mark the bug locally as tagged
+;;   "C-c # d": Show bug attributes
+
+;; The last entry in a TODO record is the link [[Messages]].  If you
+;; follow this link, a Gnus ephemeral group is opened presenting all
+;; related messages for this bug.  Here you could also send debbugs
+;; control messages by keystroke "C".
+
+;; Finally, if you simply want to list some bugs with known bug
+;; numbers, call the command
+;;
+;;   M-x debbugs-org-bugs
+
+;; The bug numbers to be shown shall be entered as comma separated list.
+
+;;; Code:
+
+(require 'debbugs-gnu)
+(require 'org)
+(eval-when-compile (require 'cl))
+
+(defconst debbugs-org-severity-priority
+  (let ((priority ?A))
+    (mapcar
+     (lambda (x) (prog1 (cons x (char-to-string priority)) (incf priority)))
+     debbugs-gnu-all-severities))
+  "Mapping of debbugs severities to TODO priorities.")
+
+(defun debbugs-org-get-severity-priority (state)
+  "Returns the TODO priority of STATE."
+  (or (cdr (assoc (cdr (assq 'severity state))
+                 debbugs-org-severity-priority))
+      (cdr (assoc "minor" debbugs-org-severity-priority))))
+
+(defconst debbugs-org-priority-faces
+  '(("A" . org-warning)
+    ("B" . org-warning))
+  "Highlighting of prioritized TODO items.")
+
+;; We do not add the bug numbers list to the elisp:link, because this
+;; would be much too long.  Instead, this variable shall keep the bug
+;; numbers.
+(defvar debbugs-org-ids nil
+  "The list of bug ids to be shown following the elisp link.")
+
+;;;###autoload
+(defun debbugs-org-search ()
+  "Search for bugs interactively.
+Search arguments are requested interactively.  The \"search
+phrase\" is used for full text search in the bugs database.
+Further key-value pairs are requested until an empty key is
+returned."
+  (interactive)
+
+  (unwind-protect
+      (let ((date-format "\\([[:digit:]]\\{4\\}\\)-\\([[:digit:]]\\{1,2\\}\\)-\\([[:digit:]]\\{1,2\\}\\)")
+           key val1 val2 phrase severities packages archivedp)
+
+       ;; Check for the phrase.
+       (setq phrase (read-string debbugs-gnu-phrase-prompt))
+       (add-to-list 'debbugs-gnu-current-query (cons 'phrase phrase))
+
+       ;; The other queries.
+       (catch :finished
+         (while t
+           (setq key (completing-read
+                      "Enter attribute: "
+                      '("severity" "package" "tags" "submitter" "author"
+                        "subject" "status")
+                      nil t))
+           (cond
+            ;; Server-side queries.
+            ((equal key "severity")
+             (setq
+              severities
+              (completing-read-multiple
+               "Enter severities: " debbugs-gnu-all-severities nil t
+               (mapconcat 'identity debbugs-gnu-default-severities ","))))
+
+            ((equal key "package")
+             (setq
+              packages
+              (completing-read-multiple
+               "Enter packages: " debbugs-gnu-all-packages nil t
+               (mapconcat 'identity debbugs-gnu-default-packages ","))))
+
+            ((member key '("tags" "subject"))
+             (setq val1 (read-string (format "Enter %s: " key)))
+             (when (not (zerop (length val1)))
+               (add-to-list
+                'debbugs-gnu-current-query (cons (intern key) val1))))
+
+            ((member key '("submitter" "author"))
+             (when (equal key "author") (setq key "@author"))
+             (setq val1 (read-string "Enter email address: "))
+             (when (not (zerop (length val1)))
+               (add-to-list
+                'debbugs-gnu-current-query (cons (intern key) val1))))
+
+            ((equal key "status")
+             (setq
+              val1
+              (completing-read "Enter status: " '("done" "forwarded" "open")))
+             (when (not (zerop (length val1)))
+               (add-to-list
+                'debbugs-gnu-current-query (cons (intern key) val1))))
+
+            ;; The End.
+            (t (throw :finished nil)))))
+
+       ;; Do the search.
+       (debbugs-org severities packages))
+
+    ;; Reset query and filter.
+    (setq debbugs-gnu-current-query nil)))
+
+;;;###autoload
+(defun debbugs-org (severities &optional packages archivedp tags)
+  "List all outstanding bugs."
+  (interactive
+   (let (severities archivedp)
+     (list
+      (setq severities
+           (completing-read-multiple
+            "Severities: " debbugs-gnu-all-severities nil t
+            (mapconcat 'identity debbugs-gnu-default-severities ",")))
+      ;; The next parameters are asked only when there is a prefix.
+      (if current-prefix-arg
+         (completing-read-multiple
+          "Packages: " debbugs-gnu-all-packages nil t
+          (mapconcat 'identity debbugs-gnu-default-packages ","))
+       debbugs-gnu-default-packages)
+      (when current-prefix-arg
+       (setq archivedp (y-or-n-p "Show archived bugs?")))
+      ;; This one must be asked for severity "tagged".
+      (when (member "tagged" severities)
+       (split-string (read-string "User tag(s): ") "," t)))))
+
+  ;; Initialize variables.
+  (when (and (file-exists-p debbugs-gnu-persistency-file)
+            (not debbugs-gnu-local-tags))
+    (with-temp-buffer
+      (insert-file-contents debbugs-gnu-persistency-file)
+      (eval (read (current-buffer)))))
+
+  ;; Add queries.
+  (dolist (severity (if (consp severities) severities (list severities)))
+    (when (not (zerop (length severity)))
+      (add-to-list 'debbugs-gnu-current-query (cons 'severity severity))))
+  (dolist (package (if (consp packages) packages (list packages)))
+    (when (not (zerop (length package)))
+      (add-to-list 'debbugs-gnu-current-query (cons 'package package))))
+  (when archivedp
+    (add-to-list 'debbugs-gnu-current-query '(archive . "1")))
+  (dolist (tag (if (consp tags) tags (list tags)))
+    (when (not (zerop (length tag)))
+      (add-to-list 'debbugs-gnu-current-query (cons 'tag tag))))
+
+  (with-current-buffer (get-buffer-create "*Org Bugs*")
+    (erase-buffer))
+
+  (unwind-protect
+      (let ((hits debbugs-gnu-default-hits-per-page))
+       (setq debbugs-org-ids (debbugs-gnu-get-bugs debbugs-gnu-current-query))
+
+       (when (> (length debbugs-org-ids) hits)
+         (let ((cursor-in-echo-area nil))
+           (setq hits
+                 (string-to-number
+                  (read-string
+                   (format
+                    "How many reports (available %d, default %d): "
+                    (length debbugs-org-ids) hits)
+                   nil
+                   nil
+                   (number-to-string hits))))))
+
+       (debbugs-org-show-next-reports hits))
+
+    ;; Reset query.
+    (setq debbugs-gnu-current-query nil)))
+
+(defun debbugs-org-show-reports (bug-numbers)
+  "Show bug reports as given in BUG-NUMBERS."
+  (pop-to-buffer (get-buffer-create "*Org Bugs*"))
+  (org-mode)
+  (debbugs-org-mode 1)
+  ;; FIXME: Does not show any effect.
+  (set (make-local-variable 'org-priority-faces) debbugs-org-priority-faces)
+
+  (let ((inhibit-read-only t)
+       (debbugs-port "gnu.org"))
+
+    (dolist (status
+            (sort
+             (apply 'debbugs-get-status bug-numbers)
+             (lambda (x y) (< (cdr (assq 'id x)) (cdr (assq 'id y))))))
+      (let* ((beg (point))
+            (id (cdr (assq 'id status)))
+            (done (string-equal (cdr (assq 'pending status)) "done"))
+            (priority (debbugs-org-get-severity-priority status))
+            (archived (cdr (assq 'archived status)))
+            (tags (append (cdr (assq 'found_versions status))
+                          (cdr (assq 'tags status))))
+            (subject (when (cdr (assq 'subject status))
+                       (decode-coding-string
+                        (cdr (assq 'subject status)) 'utf-8)))
+            (date (cdr (assq 'date status)))
+            (last-modified (cdr (assq 'last_modified status)))
+            (originator (when (cdr (assq 'originator status))
+                          (decode-coding-string
+                           (cdr (assq 'originator status)) 'utf-8)))
+            (owner (when (cdr (assq 'owner status))
+                     (decode-coding-string (cdr (assq 'owner status)) 'utf-8)))
+            (closed-by (when (cdr (assq 'done status))
+                         (decode-coding-string
+                          (cdr (assq 'done status)) 'utf-8)))
+            (merged (cdr (assq 'mergedwith status))))
+
+       ;; Handle tags.
+       (when (string-match "^\\([0-9.]+\\); \\(.+\\)$" subject)
+         (add-to-list 'tags (match-string 1 subject))
+         (setq subject (match-string 2 subject)))
+       (when archived
+         (add-to-list 'tags "ARCHIVE"))
+       (setq tags
+             (mapcar
+              ;; Replace all invalid TAG characters by "_".
+              (lambda (x) (replace-regexp-in-string "[^A-Za-z0-9_@]" "_" x))
+              tags))
+
+       ;; Headline.
+       (insert
+        (format
+         "* %s [#%s] %s %s\n"
+         (if done "DONE" "TODO")
+         priority subject
+         (if tags (mapconcat 'identity (append '("") tags '("")) ":") "")))
+
+       ;; Submitted.
+       (when date
+         (insert
+          (format-time-string
+           "  [%Y-%m-%d %a] Submitted\n" (seconds-to-time date))))
+
+       ;; Properties.
+       (insert "  :PROPERTIES:\n")
+       (insert (format "  :DEBGUGS_ID: %s\n" id))
+       (when merged
+         (insert
+          (format
+           "  :MERGED_WITH: %s\n"
+           (if (numberp merged)
+               merged (mapconcat 'number-to-string merged " ")))))
+       (insert (format "  :CREATOR: %s\n" originator))
+       (when owner (insert (format "  :OWNER: %s\n" owner)))
+       (when closed-by (insert (format "  :CLOSED_BY: %s\n" closed-by)))
+       (insert "  :END:\n")
+
+       ;; Messages.
+       (insert
+        "  [[elisp:(debbugs-gnu-select-report)][Messages]]\n")
+
+       ;; Last modified.
+       (when last-modified
+         (insert
+          (format-time-string
+           "  [%Y-%m-%d %a] Last modified\n"
+           (seconds-to-time last-modified))))
+
+       ;; Add text properties.
+       (add-text-properties beg (point) `(tabulated-list-id ,status))))
+
+    (goto-char (point-min))
+    (org-overview)
+    (set-buffer-modified-p nil)))
+
+(defun debbugs-org-show-next-reports (hits)
+  "Show next HITS of bug reports."
+  (with-current-buffer (get-buffer-create "*Org Bugs*")
+    (save-excursion
+      (goto-char (point-max))
+      (forward-line -1)
+      (delete-region (point) (point-max))
+      (debbugs-org-show-reports
+       (butlast debbugs-org-ids (- (length debbugs-org-ids) hits)))
+      (setq debbugs-org-ids
+           (last debbugs-org-ids (- (length debbugs-org-ids) hits)))
+      (when debbugs-org-ids
+       (goto-char (point-max))
+       (insert
+        (format
+         "* [[elisp:(debbugs-org-show-next-reports %s)][Next bugs]]\n"
+         hits))))))
+
+(defconst debbugs-org-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map (kbd "C-c # t") 'debbugs-gnu-toggle-tag)
+    (define-key map (kbd "C-c # C") 'debbugs-gnu-send-control-message)
+    (define-key map (kbd "C-c # d") 'debbugs-gnu-display-status)
+    map)
+  "Keymap for the `debbugs-org-mode' minor mode.")
+
+;; Make byte-compiler quiet.
+(defvar gnus-posting-styles)
+
+(define-minor-mode debbugs-org-mode
+  "Minor mode for providing a debbugs interface in org-mode buffers.
+
+\\{debbugs-org-mode-map}"
+  :lighter " Debbugs" :keymap debbugs-org-mode-map
+  (set (make-local-variable 'gnus-posting-styles)
+       `((".*"
+         (eval
+          (when (buffer-live-p gnus-article-copy)
+            (with-current-buffer gnus-article-copy
+              (set (make-local-variable 'message-prune-recipient-rules)
+                   '((".*@debbugs.*" "emacs-pretest-bug")
+                     (".*@debbugs.*" "bug-gnu-emacs")
+                     ("[0-9]+@debbugs.*" "submit@debbugs.gnu.org")
+                     ("[0-9]+@debbugs.*" "quiet@debbugs.gnu.org")))
+              ;; `gnus-posting-styles' is eval'ed after
+              ;; `message-simplify-subject'.  So we cannot use m-s-s.
+              (setq subject ,debbugs-gnu-subject))))))))
+
+;;;###autoload
+(defun debbugs-org-bugs (&rest bugs)
+  "List all BUGS, a list of bug numbers."
+  (interactive
+   (mapcar 'string-to-number
+          (completing-read-multiple "Bug numbers: " nil 'natnump)))
+  (dolist (elt bugs)
+    (unless (natnump elt) (signal 'wrong-type-argument (list 'natnump elt))))
+  (add-to-list 'debbugs-gnu-current-query (cons 'bugs bugs))
+  (debbugs-org nil))
+
+;; TODO
+
+;; - Refactor it in order to avoid code duplication with debbugs-gnu.el.
+;; - Make headline customizable.
+;; - Sort according to different TODO properties.
+
+(provide 'debbugs-org)
diff --git a/packages/debbugs/debbugs.el b/packages/debbugs/debbugs.el
new file mode 100644 (file)
index 0000000..42cbabc
--- /dev/null
@@ -0,0 +1,749 @@
+;;; debbugs.el --- SOAP library to access debbugs servers
+
+;; Copyright (C) 2011-2013 Free Software Foundation, Inc.
+
+;; Author: Michael Albinus <michael.albinus@gmx.de>
+;; Keywords: comm, hypermedia
+;; Package: debbugs
+;; Version: 0.5
+
+;; This file is not part of GNU Emacs.
+
+;; This program is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This package provides basic functions to access a Debbugs SOAP
+;; server (see <http://wiki.debian.org/DebbugsSoapInterface>).
+
+;; The function "get_versions" is not implemented (yet).  "search_est"
+;; is an extension on <http://debbugs.gnu.org>.
+
+;;; Code:
+
+;(setq soap-debug t message-log-max t)
+(require 'soap-client)
+(eval-when-compile (require 'cl))
+
+(defgroup debbugs nil
+  "Debbugs library"
+  :group 'hypermedia)
+
+(defcustom debbugs-servers
+  '(("gnu.org"
+     :wsdl "http://debbugs.gnu.org/cgi/soap.cgi?WSDL"
+     :bugreport-url "http://debbugs.gnu.org/cgi/bugreport.cgi")
+    ("debian.org"
+     :wsdl "http://bugs.debian.org/cgi-bin/soap.cgi?WSDL"
+     :bugreport-url "http://bugs.debian.org/cgi-bin/bugreport.cgi"))
+  "*List of Debbugs server specifiers.
+Each entry is a list that contains a string identifying the port
+name and the server parameters in keyword-value form. Allowed
+keywords are:
+
+`:wsdl' -- Location of WSDL. The value is a string with URL that
+should return the WSDL specification of Debbugs/SOAP service.
+
+`:bugreport-url' -- URL of the server script that returns mboxes
+with bug logs.
+
+The list initially contains two predefined and configured Debbugs
+servers: \"gnu.org\" and \"debian.org\"."
+  :group 'debbugs
+  :link '(custom-manual "(debbugs)Debbugs server specifiers")
+  :type '(choice
+         (const nil)
+         (repeat
+          (cons :tag "Server"
+                (string :tag "Port name")
+                (checklist :tag "Options" :greedy t
+                           (group :inline t
+                                  (const :format "" :value :wsdl)
+                                  (string :tag "WSDL"))
+                           (group :inline t
+                                  (const :format "" :value :bugreport-url)
+                                  (string :tag "Bugreport URL")))))))
+
+(defcustom debbugs-port "gnu.org"
+  "The port instance to be applied from `debbugs-wsdl'.
+This corresponds to the Debbugs server to be accessed, either
+\"gnu.org\", or \"debian.org\", or user defined port name."
+  ;; Maybe we should create an own group?
+  :group 'debbugs
+  :type '(choice :tag "Debbugs server" (const "gnu.org") (const "debian.org")
+                (string :tag "user defined port name")))
+
+;; It would be nice if we could retrieve it from the debbugs server.
+;; Not supported yet.
+(defconst debbugs-wsdl
+  (soap-load-wsdl
+   (expand-file-name
+    "Debbugs.wsdl"
+    (if load-in-progress
+       (file-name-directory load-file-name)
+      default-directory)))
+  "The WSDL object to be used describing the SOAP interface.")
+
+(defun debbugs-get-bugs (&rest query)
+  "Return a list of bug numbers which match QUERY.
+
+QUERY is a sequence of keyword-value pairs where the values are
+strings, i.e. :KEYWORD \"VALUE\" [:KEYWORD \"VALUE\"]*
+
+The keyword-value pair is a subquery.  The keywords are allowed to
+have multiple occurrence within the query at any place.  The
+subqueries with the same keyword form the logical subquery, which
+returns the union of bugs of every subquery it contains.
+
+The result of the QUERY is an intersection of results of all
+subqueries.
+
+Valid keywords are:
+
+  :package -- The value is the name of the package a bug belongs
+  to, like \"emacs\", \"coreutils\", \"gnus\", or \"tramp\".
+
+  :src -- This is used to retrieve bugs that belong to source
+  with given name.
+
+  :severity -- This is the severity of the bug.  The exact set of
+  allowed values depends on the Debbugs port.  Examples are
+  \"normal\", \"minor\", \"wishlist\" etc.
+
+  :tag -- An arbitrary string the bug is annotated with.
+  Usually, this is used to mark the status of the bug, like
+  \"fixed\", \"moreinfo\", \"notabug\", \"patch\",
+  \"unreproducible\" or \"wontfix\".  The exact set of tags
+  depends on the Debbugs port.
+
+  :owner -- This is used to identify bugs by the owner's email
+  address.  The special email address \"me\" is used as pattern,
+  replaced with `user-mail-address'.
+
+  :submitter -- With this keyword it is possible to filter bugs
+  by the submitter's email address.  The special email address
+  \"me\" is used as pattern, replaced with `user-mail-address'.
+
+  :maint -- This is used to find bugs of the packages which are
+  maintained by the person with the given email address.  The
+  special email address \"me\" is used as pattern, replaced with
+  `user-mail-address'.
+
+  :correspondent -- This allows to find bug reports where the
+  person with the given email address has participated.  The
+  special email address \"me\" is used as pattern, replaced with
+  `user-mail-address'.
+
+  :affects -- With this keyword it is possible to find bugs which
+  affect the package with the given name.  The bugs are chosen by
+  the value of field `affects' in bug's status.  The returned bugs
+  do not necessary belong to this package.
+
+  :status -- Status of bug.  Valid values are \"done\",
+  \"forwarded\" and \"open\".
+
+  :archive -- A keyword to filter for bugs which are already
+  archived, or not.  Valid values are \"0\" (not archived),
+  \"1\" (archived) or \"both\".  If this keyword is not given in
+  the query, `:archive \"0\"' is assumed by default.
+
+Example.  Get all opened and forwarded release critical bugs for
+the packages which are maintained by \"me\" and which have a
+patch:
+
+  \(debbugs-get-bugs :maint \"me\" :tag \"patch\"
+                     :severity \"critical\"
+                     :status \"open\"
+                     :severity \"grave\"
+                     :status \"forwarded\"
+                     :severity \"serious\")"
+
+  (let (vec kw key val)
+    ;; Check query.
+    (while (and (consp query) (<= 2 (length query)))
+      (setq kw (pop query)
+           val (pop query))
+      (unless (and (keywordp kw) (stringp val))
+       (error "Wrong query: %s %s" kw val))
+      (setq key (substring (symbol-name kw) 1))
+      (case kw
+       ((:package :severity :tag :src :affects)
+        ;; Value shall be one word.
+        (if (string-match "\\`\\S-+\\'" val)
+            (setq vec (vconcat vec (list key val)))
+          (error "Wrong %s: %s" key val)))
+       ((:owner :submitter :maint :correspondent)
+        ;; Value is an email address.
+        (if (string-match "\\`\\S-+\\'" val)
+            (progn
+              (when (string-equal "me" val)
+                (setq val user-mail-address))
+              (when (string-match "<\\(.+\\)>" val)
+                (setq val (match-string 1 val)))
+              (setq vec (vconcat vec (list key val))))
+          (error "Wrong %s: %s" key val)))
+       (:status
+        ;; Possible values: "done", "forwarded" and "open"
+        (if (string-match "\\`\\(done\\|forwarded\\|open\\)\\'" val)
+            (setq vec (vconcat vec (list key val)))
+          (error "Wrong %s: %s" key val)))
+       (:archive
+        ;; Value is `0' or `1' or `both'.
+        (if (string-match "\\`\\(0\\|1\\|both\\)\\'" val)
+            (setq vec (vconcat vec (list key val)))
+          (error "Wrong %s: %s" key val)))
+       (t (error "Unknown key: %s" kw))))
+
+    (unless (null query)
+      (error "Unknown key: %s" (car query)))
+    (sort (car (soap-invoke debbugs-wsdl debbugs-port "get_bugs" vec)) '<)))
+
+(defun debbugs-newest-bugs (amount)
+  "Return the list of bug numbers, according to AMOUNT (a number) latest bugs."
+  (sort (car (soap-invoke debbugs-wsdl debbugs-port "newest_bugs" amount)) '<))
+
+(defun debbugs-get-status (&rest bug-numbers)
+  "Return a list of status entries for the bugs identified by BUG-NUMBERS.
+
+Every returned entry is an association list with the following attributes:
+
+  `bug_num': The bug number.
+
+  `package': A list of package names the bug belongs to.
+
+  `severity': The severity of the bug report. This can be
+  \"important\", \"grave\", \"normal\", \"minor\" or \"wishlist\".
+
+  `tags': The status of the bug report, a list of strings.  This
+  can be \"fixed\", \"notabug\", \"wontfix\", \"unreproducible\",
+  \"moreinfo\" or \"patch\".
+
+  `pending': The string \"pending\", \"forwarded\" or \"done\".
+
+  `subject': Subject/Title of the bugreport.
+
+  `originator': Submitter of the bugreport.
+
+  `mergedwith': A list of bug numbers this bug was merged with.
+  If it is a single bug, then this attribute contains just a
+  number.
+
+  `source': Source package name of the bug report.
+
+  `date': Date of bug creation.
+
+  `log_modified', `last_modified': Date of last update.
+
+  `found_date', `fixed_date': Date of bug report / bug fix
+  \(empty for now).
+
+  `done': The email address of the worker who has closed the bug (if done).
+
+  `archived': `t' if the bug is archived, `nil' otherwise.
+
+  `unarchived': The date the bug has been unarchived, if ever.
+
+  `found_versions', `fixed_versions': List of version strings.
+
+  `forwarded': A URL or an email address.
+
+  `blocks': A list of bug numbers this bug blocks.
+
+  `blockedby': A list of bug numbers this bug is blocked by.
+
+  `msgid': The message id of the initial bug report.
+
+  `owner': Who is responsible for fixing.
+
+  `location': Always the string \"db-h\" or \"archive\".
+
+  `affects': A list of package names.
+
+  `summary': Arbitrary text.
+
+Example:
+
+  \(debbugs-get-status 10)
+
+  => ;; Attributes with empty values are not shown
+     \(\(\(bug_num . 10)
+       \(source . \"unknown\")
+       \(date . 1203606305.0)
+       \(msgid . \"<87zltuz7eh.fsf@freemail.hu>\")
+       \(severity . \"wishlist\")
+       \(owner . \"Magnus Henoch <mange@freemail.hu>\")
+       \(log_modified . 1261079402.0)
+       \(location . \"db-h\")
+       \(subject . \"url-gw should support HTTP CONNECT proxies\")
+       \(originator . \"Magnus Henoch <mange@freemail.hu>\")
+       \(last_modified . 1271200046.0)
+       \(pending . \"pending\")
+       \(package \"emacs\")))"
+  (when bug-numbers
+    (let ((object
+          (car
+           (soap-invoke
+            debbugs-wsdl debbugs-port "get_status"
+            (apply 'vector bug-numbers)))))
+      (mapcar
+       (lambda (x)
+        (let (y)
+          ;; "archived" is the number 1 or 0.
+          (setq y (assoc 'archived (cdr (assoc 'value x))))
+          (setcdr y (= (cdr y) 1))
+          ;; "found_versions" and "fixed_versions" are lists,
+          ;; containing strings or numbers.
+          (dolist (attribute '(found_versions fixed_versions))
+            (setq y (assoc attribute (cdr (assoc 'value x))))
+            (setcdr y (mapcar
+                       (lambda (z) (if (numberp z) (number-to-string z) z))
+                       (cdr y))))
+          ;; "mergedwith" is a string, containing blank separated bug numbers.
+          (setq y (assoc 'mergedwith (cdr (assoc 'value x))))
+          (when (stringp (cdr y))
+            (setcdr y (mapcar 'string-to-number (split-string (cdr y) " " t))))
+          ;; "package" is a string, containing comma separated
+          ;; package names.  "keywords" and "tags" are strings,
+          ;; containing blank separated package names.
+          (dolist (attribute '(package keywords tags))
+            (setq y (assoc attribute (cdr (assoc 'value x))))
+            (when (stringp (cdr y))
+              (setcdr y (split-string (cdr y) ",\\| " t))))
+          (cdr (assoc 'value x))))
+       object))))
+
+(defun debbugs-get-usertag (&rest query)
+  "Return a list of bug numbers which match QUERY.
+
+QUERY is a sequence of keyword-value pairs where the values are
+strings, i.e. :KEYWORD \"VALUE\" [:KEYWORD \"VALUE\"]*
+
+Valid keywords are:
+
+  :user -- The value is the name of the package a bug belongs to,
+  like \"emacs\", \"coreutils\", \"gnus\", or \"tramp\".  It can
+  also be an email address of a user who has applied a user tag.
+  The special email address \"me\" is used as pattern, replaced
+  with `user-mail-address'.  There must be at least one such
+  entry; it is recommended to have exactly one.
+
+  :tag -- A string applied as user tag.  Often, it is a
+  subproduct identification, like \"cedet\" or \"tramp\" for the
+  package \"emacs\".
+
+If there is no :tag entry, no bug numbers will be returned but a list of
+existing user tags for :user.
+
+Example:
+
+  \(debbugs-get-usertag :user \"emacs\")
+
+  => (\"www\" \"solaris\" \"ls-lisp\" \"cygwin\")
+
+  \(debbugs-get-usertag :user \"emacs\" :tag \"www\" :tag \"cygwin\")
+
+  => (807 1223 5637)"
+
+  (let (user tags kw key val object result)
+    ;; Check query.
+    (while (and (consp query) (<= 2 (length query)))
+      (setq kw (pop query)
+           val (pop query))
+      (unless (and (keywordp kw) (stringp val))
+       (error "Wrong query: %s %s" kw val))
+      (setq key (substring (symbol-name kw) 1))
+      (case kw
+       ((:user)
+        ;; Value shall be one word.  Extract email address, if existing.
+        (if (string-match "\\`\\S-+\\'" val)
+            (progn
+              (when (string-equal "me" val)
+                (setq val user-mail-address))
+              (when (string-match "<\\(.+\\)>" val)
+                (setq val (match-string 1 val)))
+              (add-to-list 'user val))
+          (error "Wrong %s: %s" key val)))
+       ((:tag)
+        ;; Value shall be one word.
+        (if (string-match "\\`\\S-+\\'" val)
+            (add-to-list 'tags val)
+          (error "Wrong %s: %s" key val)))
+       (t (error "Unknown key: %s" kw))))
+
+    (unless (null query)
+      (error "Unknown key: %s" (car query)))
+    (unless (= (length user) 1)
+      (error "There must be exactly one :user entry"))
+
+    (setq
+     object
+     (car (soap-invoke debbugs-wsdl debbugs-port "get_usertag" (car user))))
+
+    (if (null tags)
+       ;; Return the list of existing tags.
+       (mapcar (lambda (x) (symbol-name (car x))) object)
+
+      ;; Return bug numbers.
+      (dolist (elt object result)
+       (when (member (symbol-name (car elt)) tags)
+         (setq result (append (cdr elt) result)))))))
+
+(defun debbugs-get-bug-log (bug-number)
+  "Return a list of messages related to BUG-NUMBER.
+
+Every message is an association list with the following attributes:
+
+  `msg_num': The number of the message inside the bug log.  The
+  numbers are ascending, newer messages have a higher number.
+
+  `header': The message header lines, as arrived at the bug tracker.
+
+  `body': The message body.
+
+  `attachments' A list of possible attachments, or `nil'.  Not
+  implemented yet server side."
+  (car (soap-invoke debbugs-wsdl debbugs-port "get_bug_log" bug-number)))
+
+(defun debbugs-search-est (&rest query)
+  "Return the result of a full text search according to QUERY.
+
+QUERY is a sequence of lists of keyword-value pairs where the
+values are strings or numbers, i.e. :KEYWORD \"VALUE\" [:KEYWORD
+VALUE]*
+
+Every sublist of the QUERY forms a hyperestraier condition.  A
+detailed description of hyperestraier conditions can be found at
+URL `http://fallabs.com/hyperestraier/uguide-en.html#searchcond'.
+
+The following conditions are possible:
+
+\[:phrase SEARCH-PHRASE :skip NUMBER :max NUMBER\]
+
+  The string SEARCH-PHRASE forms the search on the database.  It
+  contains words to be searched for, combined by operators like
+  AND, ANDNOT and OR.  If there is no operator between the words,
+  AND is used by default.  The phrase keyword and value can also
+  be omitted, this is useful in combination with other conditions.
+
+  :skip and :max are optional.  They specify, how many hits are
+  skipped, and how many maximal hits are returned.  This can be
+  used for paged results.  Per default, :skip is 0 and :max is 10.
+
+  There must be exactly one such condition.
+
+\[ATTRIBUTE VALUE+ :operation OPERATION :order ORDER\]
+
+  ATTRIBUTE is one of the following keywords:
+
+  :status --  Status of bug.  Valid values are \"done\",
+  \"forwarded\" and \"open\".
+
+  :subject, :@title -- The subject of a message or the title of
+  the bug, a string.
+
+  :date, :@cdate -- The submission or modification dates of a
+  message, a number.
+
+  :submitter, :@author -- The email address of the submitter of a
+  bug or the author of a message belonging to this bug, a string.
+  The special email address \"me\" is used as pattern, replaced
+  with `user-mail-address'.
+
+  :package -- The value is the name of the package a bug belongs
+  to, like \"emacs\", \"coreutils\", \"gnus\", or \"tramp\".
+
+  :tags -- An arbitrary string the bug is annotated with.
+
+  :severity -- This is the severity of the bug.  The exact set of
+  allowed values depends on the Debbugs port.  Examples are
+  \"normal\", \"minor\", \"wishlist\" etc.
+
+  :operator defines the comparison operator to be applied to
+  ATTRIBUTE.  For string attributes this could be \"STREQ\" \(is
+  equal to the string), \"STRNE\" \(is not equal to the string),
+  \"STRINC\" \(includes the string), \"STRBW\" \(begins with the
+  string), \"STREW\" \(ends with the string), \"STRAND\"
+  \(includes all tokens in the string), \"STROR\" \(includes at
+  least one token in the string), \"STROREQ\" \(is equal to at
+  least one token in the string) or \"STRRX\" \(matches regular
+  expressions of the string).  For operators with tokens, several
+  values for ATTRIBUTE shall be used.
+
+  Numbers can be compared by the operators \"NUMEQ\" \(is equal
+  to the number), \"NUMNE\" \(is not equal to the number),
+  \"NUMGT\" \(is greater than the number), \"NUMGE\" \(is greater
+  than or equal to the number), \"NUMLT\" \(is less than the
+  number), \"NUMLE\" \(is less than or equal to the number) or
+  \"NUMBT\" \(is between the two numbers).  In the last case,
+  there must be two values for ATTRIBUTE.
+
+  If an operator is leaded by \"!\", the meaning is inverted.  If
+  a string operator is leaded by \"I\", the case of the value is
+  ignored.
+
+  The optional :order can be specified only in one condition.  It
+  means, that ATTRIBUTE is used for sorting the results.  The
+  following order operators exist: \"STRA\" \(ascending by
+  string), \"STRD\" \(descending by string), \"NUMA\" \(ascending
+  by number) or \"NUMD\" \(descending by number).
+
+  A special case is an :order, where there is no corresponding
+  attribute value and no operator.  In this case, ATTRIBUTE is
+  not used for the search.
+
+The result of the QUERY is a list of association lists with the
+same attributes as in the conditions.  Additional attributes are
+
+  `id': The bug number.
+
+  `msg_num': The number of the message inside the bug log.
+
+  `snippet': The surrounding text found by the search.  For the
+  syntax of the snippet, consult the hyperestraier user guide.
+
+Examples:
+
+  \(debbugs-search-est
+    '\(:phrase \"armstrong AND debbugs\" :skip 10 :max 2)
+    '\(:severity \"normal\" :operator \"STRINC\")
+    '\(:date :order \"NUMA\"))
+
+  => \(\(\(msg_num . 21)
+       \(date . 1229208302)
+       \(@author . \"Glenn Morris <rgm@gnu.org>\")
+       \(@title . \"Re: bug#1567: Mailing an archived bug\")
+       \(id . 1567)
+       \(severity . \"normal\")
+       \(@cdate . \"Wed, 17 Dec 2008 14:34:50 -0500\")
+       \(snippet . \"...\")
+       \(subject . \"Mailing an archived bug\")
+       \(package . \"debbugs.gnu.org\"))
+      ...)
+
+  ;; Show all messages from me between 2011-08-01 and 2011-08-31.
+  \(debbugs-search-est
+    '\(:max 20)
+    '\(:@author \"me\" :operator \"ISTRINC\")
+    `\(:date
+      ,\(floor \(float-time \(encode-time 0 0 0  1 8 2011)))
+      ,\(floor \(float-time \(encode-time 0 0 0 31 8 2011)))
+      :operator \"NUMBT\"))"
+
+  (let (args result)
+    ;; Compile search arguments.
+    (dolist (elt query)
+      (let (vec kw key val
+           phrase-cond attr-cond)
+
+       ;; Phrase is mandatory, even if empty.
+       (when (and (or  (member :skip elt) (member :max elt))
+                  (not (member :phrase elt)))
+         (setq vec (vector "phrase" "")))
+
+       ;; Parse condition.
+       (while (consp elt)
+         (setq kw (pop elt))
+         (unless (keywordp kw)
+           (error "Wrong keyword: %s" kw))
+         (setq key (substring (symbol-name kw) 1))
+         (case kw
+           ;; Phrase condition.
+           (:phrase
+            ;; It shouldn't happen in an attribute condition.
+            (if attr-cond
+                (error "Wrong keyword: %s" kw))
+            (setq phrase-cond t val (pop elt))
+            ;; Value is a string.
+            (if (stringp val)
+                (setq vec (vconcat vec (list key val)))
+              (error "Wrong %s: %s" key val)))
+
+           ((:skip :max)
+            ;; It shouldn't happen in an attribute condition.
+            (if attr-cond
+                (error "Wrong keyword: %s" kw))
+            (setq phrase-cond t val (pop elt))
+            ;; Value is a number.
+            (if (numberp val)
+                (setq vec (vconcat vec (list key (number-to-string val))))
+              (error "Wrong %s: %s" key val)))
+
+           ;; Attribute condition.
+           ((:submitter :@author)
+            ;; It shouldn't happen in a phrase condition.
+            (if phrase-cond
+                (error "Wrong keyword: %s" kw))
+            (if (not (stringp (car elt)))
+                (setq vec (vconcat vec (list key "")))
+              ;; Value is an email address.
+              (while (and (stringp (car elt))
+                          (string-match "\\`\\S-+\\'" (car elt)))
+                (when (string-equal "me" (car elt))
+                  (setcar elt user-mail-address))
+                (when (string-match "<\\(.+\\)>" (car elt))
+                  (setcar elt (match-string 1 (car elt))))
+                (add-to-list 'val (pop elt) 'append))
+              (setq vec
+                    (vconcat vec (list key (mapconcat 'identity val " "))))))
+
+           (:status
+            ;; It shouldn't happen in a phrase condition.
+            (if phrase-cond
+                (error "Wrong keyword: %s" kw))
+            (setq attr-cond t)
+            (if (not (stringp (car elt)))
+                (setq vec (vconcat vec (list key "")))
+              ;; Possible values: "done", "forwarded" and "open"
+              (while  (and (stringp (car elt))
+                           (string-match
+                            "\\`\\(done\\|forwarded\\|open\\)\\'" (car elt)))
+                (add-to-list 'val (pop elt) 'append))
+              (setq vec
+                    (vconcat vec (list key (mapconcat 'identity val " "))))))
+
+           ((:subject :package :tags :severity :@title)
+            ;; It shouldn't happen in a phrase condition.
+            (if phrase-cond
+                (error "Wrong keyword: %s" kw))
+            (setq attr-cond t)
+            (if (not (stringp (car elt)))
+                (setq vec (vconcat vec (list key "")))
+              ;; Just a string.
+              (while (stringp (car elt))
+                (add-to-list 'val (pop elt) 'append))
+              (setq vec
+                    (vconcat vec (list key (mapconcat 'identity val " "))))))
+
+           ((:date :@cdate)
+            ;; It shouldn't happen in a phrase condition.
+            (if phrase-cond
+                (error "Wrong keyword: %s" kw))
+            (setq attr-cond t)
+            (if (not (numberp (car elt)))
+                (setq vec (vconcat vec (list key "")))
+              ;; Just a number.
+              (while (numberp (car elt))
+                (add-to-list 'val (pop elt) 'append))
+              (setq vec
+                    (vconcat
+                     vec (list key (mapconcat 'number-to-string val " "))))))
+
+           ((:operator :order)
+            ;; It shouldn't happen in a phrase condition.
+            (if phrase-cond
+                (error "Wrong keyword: %s" kw))
+            (setq attr-cond t val (pop elt))
+            ;; Value is a number.
+            (if (stringp val)
+                (setq vec (vconcat vec (list key val)))
+              (error "Wrong %s: %s" key val)))
+
+           (t (error "Unknown key: %s" kw))))
+
+       (setq args (vconcat args (list vec)))))
+
+    (setq result
+         (car (soap-invoke debbugs-wsdl debbugs-port "search_est" args)))
+    ;; The result contains lists (key value).  We transform it into
+    ;; cons cells (key . value).
+    (dolist (elt1 result result)
+      (dolist (elt2 elt1)
+       (setcdr elt2 (cadr elt2))))))
+
+(defun debbugs-get-attribute (bug-or-message attribute)
+  "Return the value of key ATTRIBUTE.
+
+BUG-OR-MESSAGE must be list element returned by either
+`debbugs-get-status' or `debbugs-get-bug-log'.
+
+Example: Return the originator of last submitted bug.
+
+\(debbugs-get-attribute
+  \(car \(apply 'debbugs-get-status \(debbugs-newest-bugs 1))) 'originator)"
+  (cdr (assoc attribute bug-or-message)))
+
+(defun debbugs-get-message-numbers (messages)
+  "Return the message numbers of MESSAGES.
+MESSAGES must be the result of a `debbugs-get-bug-log' call."
+  (mapcar (lambda (x) (debbugs-get-attribute x 'msg_num)) messages))
+
+(defun debbugs-get-message (messages message-number)
+  "Return the message MESSAGE-NUMBER of MESSAGES.
+MESSAGES must be the result of a `debbugs-get-bug-log' call.
+
+The returned message is a list of strings.  The first element are
+the header lines of the message, the second element is the body
+of the message.  Further elements of the list, if any, are
+attachments of the message.
+
+If there is no message with MESSAGE-NUMBER, the function returns `nil'.
+
+Example: Return the first message of last submitted bug.
+
+\(let \(\(messages \(apply 'debbugs-get-bug-log \(debbugs-newest-bugs 1))))
+  \(debbugs-get-message messages
+                      \(car \(debbugs-get-message-numbers messages))))"
+  (while (and messages
+             (/= (debbugs-get-attribute (car messages) 'msg_num)
+                 message-number))
+    (setq messages (cdr messages)))
+  (when messages
+    (append (list (debbugs-get-attribute (car messages) 'header)
+                 (debbugs-get-attribute (car messages) 'body))
+           (debbugs-get-attribute (car messages) 'attachments))))
+
+(defun debbugs-get-mbox (bug-number mbox-type &optional filename)
+  "Download mbox with messages of bug BUG-NUMBER from Debbugs server.
+BUG-NUMBER is a number of bug.  It must be of integer type.
+
+MBOX-TYPE specifies a type of mbox and can be one of the
+following symbols:
+
+   `mboxfolder': Download mbox folder.
+
+   `mboxmaint': Download maintainer's mbox.
+
+   `mboxstat', `mboxstatus': Download status mbox.  The use of
+   either symbol depends on actual Debbugs server configuration.
+   For gnu.org, use the former; for debian.org - the latter.
+
+FILENAME, if non-`nil', is the name of file to store mbox.  If
+FILENAME is `nil', the downloaded mbox is inserted into the
+current buffer."
+  (let (url (mt "") bn)
+    (unless (setq url (plist-get
+                      (cdr (assoc debbugs-port debbugs-servers))
+                      :bugreport-url))
+      (error "URL of bugreport script for port %s is not specified"
+            debbugs-port))
+    (setq bn (format "bug=%s;" (number-to-string bug-number)))
+    (unless (eq mbox-type 'mboxfolder)
+      (if (memq mbox-type '(mboxmaint mboxstat mboxstatus))
+         (setq mt (concat (symbol-name mbox-type) "=yes;"))
+       (error "Unknown mbox type: %s" mbox-type)))
+    (setq url (concat url (format "?%s%smbox=yes" bn mt)))
+    (if filename
+       (url-copy-file url filename t)
+      (url-insert-file-contents url))))
+
+(provide 'debbugs)
+
+;;; TODO:
+
+;; * SOAP interface extensions (wishlist).
+;;   - Server-side sorting.
+;;   - Regexp and/or wildcards search.
+;;   - Returning message attachments.
+
+;;; debbugs.el ends here
diff --git a/packages/debbugs/debbugs.texi b/packages/debbugs/debbugs.texi
new file mode 100644 (file)
index 0000000..ecebf72
--- /dev/null
@@ -0,0 +1,562 @@
+\input texinfo
+@setfilename debbugs.info
+@settitle Debbugs programmer's manual
+
+@dircategory Emacs
+@direntry
+* Debbugs: (debbugs).  A library for communication with Debbugs.
+@end direntry
+
+@copying
+Copyright @copyright{} 2011-2013 Free Software Foundation, Inc.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover, or Back-Cover Texts.  A copy of
+the license is included in the section entitled ``GNU Free Documentation
+License'' in the Emacs manual.
+
+This document is part of a collection distributed under the GNU Free
+Documentation License.  If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
+
+All Emacs Lisp code contained in this document may be used, distributed,
+and modified without restriction.
+@end quotation
+@end copying
+
+@titlepage
+@title Debbugs Programmer's Manual
+@author by Evgeny M. Zubok
+@page
+@insertcopying
+@end titlepage
+
+@contents
+
+@node Top
+@top Debbugs Programmer's Manual
+
+Debbugs is a bugtracking system (BTS) that was initially written for
+the Debian project but actually used also by the GNU project.  The
+main distinctive feature of Debbugs is that it's mostly email-based.
+All actions on bug reports: opening, closing, changing the status,
+commenting, forwarding are performed via email by sending specially
+composed letters to the particular mail addresses.  However, searching
+the bug reports, querying bug report status and viewing comments have
+been web-based for a long time.  To overcome this inconvenience the
+Debbugs/SOAP service was introduced.
+
+The Debbugs/SOAP service provides the means for developers to write
+client applications that can send the queries with certain search
+criteria to the Debbugs server and retrieve a set of bug reports that
+match them.  The developer may also ask the Debbugs server for
+additional information about every bug report (e.g. subject, date,
+originator, tags and etc.) and get all comments and attachments.
+
+@code{debbugs}, described in this document, is the Emacs library that
+exposes to developers the available functions provided by the Debbugs
+server.  @code{debbugs} uses Emacs' SOAP client library for
+communication with the Debbugs server.  In tandem with Emacs' email
+facilities, @code{debbugs} provides a solution for building
+applications that interact with the Debbugs BTS directly from Emacs
+without addressing Debbugs' web interface.
+
+@menu
+* Installation::                Getting and installing @code{debbugs}.
+* Configuration::               Configuring @code{debbugs}.
+* Requesting bug numbers::      How to request bug report numbers.
+* Requesting bugs statuses::    How to request the status of bug reports.
+* Requesting messages::         How to get messages from bug reports.
+* Requesting user tags::        How to request tags set by users.
+@end menu
+
+@node Installation
+@chapter Installation
+
+@subheading Installation on Emacs 24 or later
+
+Install @code{debbugs} from the @ref{Packaging, ELPA repository, , elisp}.
+
+@subheading Installation on Emacs 22 and Emacs 23
+
+If you want to install @code{debbugs} on Emacs 22/23, you will need to
+install the @code{soap-client} library first.  It can be downloaded from
+the @uref{http://code.google.com/p/emacs-soap-client/, Emacs SOAP client
+project page}.
+
+Compile the library and add it into your @code{load-path}:
+
+@example
+(add-to-list 'load-path "/path/to/emacs-soap-client/")
+@end example
+
+@code{debbugs} library can be downloaded from the
+@uref{http://elpa.gnu.org/packages/, ELPA repository}.  Compile it and
+set the @code{load-path}:
+
+@example
+(add-to-list 'load-path "/path/to/debbugs/")
+@end example
+
+@subheading Installation on Emacs 21
+
+We have not tried yet to install @code{debbugs} on Emacs 21.  We would
+definitely say that the installation will require even more additional
+libraries than needed for installation on Emacs 22/23.
+
+@node Configuration
+@chapter Configuration
+
+@code{debbugs} is already configured to work with two main ports of
+Debbugs BTS: @uref{http://bugs.debian.org} and
+@uref{http://debbugs.gnu.org}.  So if you intend to use one of these
+ports, you don't need to configure @code{debbugs}.  If you want to
+interact with a Debbugs port other than those listed, you have to
+configure @code{debbugs} by adding a new server specifier to the
+@code{debbugs-servers} variable.  The actual port can be selected by
+the @code{debbugs-port} variable.
+
+@defvar debbugs-servers
+List of Debbugs server specifiers.  Each entry is a list that contains a
+string identifying the port name and the server parameters in
+keyword-value form.  The list initially contains two predefined and
+configured Debbugs servers: @code{"gnu.org"} and @code{"debian.org"}.
+
+Valid keywords are:
+
+@table @code
+@item :wsdl
+Location of WSDL.  The value is a string with the URL that should
+return the WSDL specification of the Debbugs/SOAP service.  This
+keyword is intended for future use, it is ignored currently.
+
+@item :bugreport-url
+The URL of the server script (@code{bugreport.cgi} in the default
+Debbugs installation) that provides the access to mboxes with messages
+from bug reports.
+@end table
+
+Example.  Add a new Debbugs port with name "foobars.net":
+
+@example
+(add-to-list
+ 'debbugs-servers
+ '("foobars.net"
+   :wsdl "http://bugs.foobars.net/cgi/soap.cgi?WSDL"
+   :bugreport-url "http://bugs.foobars.net/cgi/bugreport.cgi"))
+@end example
+@end defvar
+
+@defvar debbugs-port
+This variable holds the name of the currently used port.  The value of
+the variable corresponds to the Debbugs server to be accessed, either
+@code{"gnu.org"} or @code{"debian.org"}, or a user defined port name.
+@end defvar
+
+@node Requesting bug numbers
+@chapter Requesting bug numbers
+
+In Debbugs BTS, the bug number is the unique identifier of a bug
+report.  The functions described in this section return from the
+Debbugs server the list of bug numbers that match a user's query.
+
+@defun debbugs-get-bugs &rest query
+This function returns a list of bug numbers that match the
+@var{query}. @var{query} is a sequence of keyword-value pairs where the
+values are strings, i.e. :KEYWORD ``VALUE'' [:KEYWORD ``VALUE'']*
+
+The keyword-value pair is a subquery.  The keywords are allowed to
+have multiple occurrence within the query at any place.  The
+subqueries with the same keyword form the logical subquery, which
+returns the union of bugs of every subquery it contains.
+
+The result of the @var{query} is an intersection of results of all
+subqueries.
+
+Valid keywords are:
+
+@table @code
+@item :package
+The value is the name of the package a bug belongs to, like @code{"emacs"},
+@code{"coreutils"}, @code{"gnus"}, or @code{"tramp"}.
+
+@item :src
+This is used to retrieve bugs that belong to source with given name.
+
+@item :severity
+This is the severity of the bug.  The exact set of available severities
+depends on the policy of a particular Debbugs port:
+
+Debian port:
+@code{"critical"}, @code{"grave"}, @code{"serious"},
+@code{"important"}, @code{"normal"}, @code{"minor"}, @code{"wishlist"},
+and @code{"fixed"}.
+
+GNU port:
+@code{"serious"}, @code{"important"}, @code{"normal"}, @code{"minor"},
+@code{"wishlist"}.
+
+@item :tag
+An arbitrary string the bug is annotated with.  Usually, this is used
+to mark the status of the bug.  The list of possible tags depends on
+the Debbugs port.
+
+Debian port: @code{"patch"}, @code{"wontfix"}, @code{"moreinfo"},
+@code{"unreproducible"}, @code{"fixed"}, @code{"potato"},
+@code{"woody"}, @code{"sid"}, @code{"help"}, @code{"security"},
+@code{"upstream"}, @code{"pending"}, @code{"sarge"},
+@code{"sarge-ignore"}, @code{"experimental"}, @code{"d-i"},
+@code{"confirmed"}, @code{"ipv6"}, @code{"lfs"},
+@code{"fixed-in-experimental"}, @code{"fixed-upstream"}, @code{"l10n"},
+@code{"etch"}, @code{"etch-ignore"}, @code{"lenny"},
+@code{"lenny-ignore"}, @code{"squeeze"}, @code{"squeeze-ignore"},
+@code{"wheezy"}, @code{"wheezy-ignore"}. The actual list of tags can be
+found on @uref{http://www.debian.org/Bugs/Developer#tags}.
+
+GNU port: @code{"fixed"}, @code{"notabug"}, @code{"wontfix"},
+@code{"unreproducible"}, @code{"moreinfo"}, @code{"patch"},
+@code{"pending"}, @code{"help"}, @code{"security"}, @code{"confirmed"}.
+See @url{http://debbugs.gnu.org/Developer.html#tags} for the actual list
+of tags.
+
+@item :owner
+This is used to identify bugs by the owner's email address.  The
+special email address @code{"me"} is used as pattern, replaced with
+the variable @code{user-mail-address} (@pxref{(elisp)User
+Identification}).
+
+@item :submitter
+With this keyword it is possible to filter bugs by the submitter's
+email address.  The special email address @code{"me"} is used as
+pattern, replaced with the variable @code{user-mail-address}.
+
+@item :maint
+This is used to find bugs of the packages which are maintained by the
+person with the given email address.  The special email address
+@code{"me"} is used as pattern, replaced with @code{user-mail-address}.
+
+@item :correspondent
+This allows to find bug reports where the person with the given email
+address has participated.  The special email address @code{"me"} is used
+as pattern, replaced with @code{user-mail-address}.
+
+@item :affects
+With this keyword it is possible to find bugs which affect the package
+with the given name.  The bugs are chosen by the value of field
+@code{affects} in bug's status.  The returned bugs do not necessary
+belong to this package.
+
+@item :status
+Status of bug.  Valid values are @code{"done"}, @code{"forwarded"} and
+@code{"open"}.
+
+@item :archive
+A keyword to filter for bugs which are already archived, or not.  Valid
+values are @code{"0"} (not archived), @code{"1"} (archived) or
+@code{"both"}.  If this keyword is not given in the query,
+@code{:archive "0"} is assumed by default.
+@end table
+
+Example.  Get all opened and forwarded release critical bugs for the
+packages which are maintained by @code{"me"} and which have a patch:
+
+@example
+(let ((debbugs-port "debian.org"))
+  (debbugs-get-bugs :maint "me" :tag "patch"
+                    :severity "critical"
+                    :status "open"
+                    :severity "grave"
+                    :status "forwarded"
+                    :severity "serious"))
+@end example
+@end defun
+
+@defun debbugs-newest-bugs amount
+This function returns a list of bug numbers, according to @var{amount}
+(a number) of latest bugs.
+
+Example.  Get the latest six bug report numbers from Debian BTS:
+
+@example
+(let ((debbugs-port "debian.org"))
+  (debbugs-newest-bugs 6))
+@result{} (633152 633153 633154 633155 633156 633157)
+@end example
+@end defun
+
+@node Requesting bugs statuses
+@chapter Requesting bugs statuses
+
+Bug status is a collection of fields that holds the information about
+the state and importance of the bug report, about originator, owner and
+various aspects of relationship with other bug reports.
+
+@defun debbugs-get-status &rest bug-numbers
+Return a list of status entries for the bug reports identified by
+@var{bug-numbers}.  Every returned entry is an association list with the
+following attributes:
+
+@table @code
+@item id
+@itemx bug_num
+The bug number.
+
+@item package
+A list of package names the bug belongs to.
+
+@item severity
+The severity of the bug report.  Possible values are the same as for
+@code{:severity} in @code{debbugs-get-bugs} (@pxref{Requesting bug
+numbers}).
+
+@item tags
+The status of the bug report, a list of strings.  Possible values are the
+same as for @code{:tags} in @code{debbugs-get-bugs} (@pxref{Requesting
+bug numbers}).
+
+@item pending
+The string @code{"pending"}, @code{"forwarded"} or @code{"done"}.
+
+@item subject
+Subject/Title of the bugreport.
+
+@item originator
+The E-mail address of the bug report submitter.
+
+@item mergedwith
+A list of bug numbers this bug was merged with.
+
+@item source
+Source package name of the bug report.
+
+@item date
+Date of bug creation.  Encoded as UNIX time.
+
+@item log_modified
+@itemx last_modified
+Date of last update.  Encoded as UNIX time.
+
+@item found_date
+@itemx fixed_date
+Date of bug report / bug fix (empty for now).  Encoded as UNIX time.
+
+@item done
+The E-mail address of the worker who has closed the bug (if done).
+
+@item archived
+@code{t} if the bug is archived, @code{nil} otherwise.
+
+@item unarchived
+The date the bug has been unarchived, if ever.  Encoded as UNIX time.
+
+@item found_versions
+@itemx fixed_versions
+List of version strings.
+
+@item forwarded
+A URL or an E-mail address.
+
+@item blocks
+A list of bug numbers this bug blocks.
+
+@item blockedby
+A list of bug numbers this bug is blocked by.
+
+@item msgid
+The message id of the initial bug report.
+
+@item owner
+Who is responsible for fixing.
+
+@item location
+Always the string @code{"db-h"} or @code{"archive"}.
+
+@item affects
+A list of package names.
+
+@item summary
+Arbitrary text.
+@end table
+
+Example.  Get the status of bug number #10 from GNU BTS:
+
+@example
+(let ((debbugs-port "gnu.org"))
+  (debbugs-get-status 10))
+@result{}
+(((source . "unknown") (found_versions) (done) (blocks)
+  (date . 1203606305.0) (fixed) (fixed_versions) (mergedwith)
+  (found) (unarchived) (blockedby) (keywords) (summary)
+  (msgid . "<87zltuz7eh.fsf@@freemail.hu>") (id . 10)
+  (forwarded) (severity . "wishlist")
+  (owner . "Magnus Henoch <*****@@freemail.hu>")
+  (log_modified . 1310061242.0) (location . "db-h")
+  (subject . "url-gw should support HTTP CONNECT proxies")
+  (originator . "Magnus Henoch <*****@@freemail.hu>")
+  (last_modified . 1310061242.0) (pending . "pending") (affects)
+  (archived) (tags) (fixed_date) (package "emacs") (found_date)
+  (bug_num . 10)))
+@end example
+@end defun
+
+@defun debbugs-get-attribute bug-or-message attribute
+General accessor that returns the value of key @var{attribute}.
+@var{bug-or-message} must be a list element returned by either
+@code{debbugs-get-status} or @code{debbugs-get-bug-log}
+(@pxref{Requesting messages}).
+
+Example.  Return the originator of the last submitted bug report:
+
+@example
+(let ((debbags-port "gnu.org"))
+  (debbugs-get-attribute
+   (car (apply 'debbugs-get-status (debbugs-newest-bugs 1)))
+   'originator))
+@result{} "Jack Daniels <jack@@daniels.com>"
+@end example
+@end defun
+
+@node Requesting messages
+@chapter Requesting messages
+
+@defun debbugs-get-bug-log bug-number
+Returns a list of messages related to @var{bug-number}.  Every message is
+an association list with the following attributes:
+
+@table @code
+@item msg_num
+The number of the message inside the bug log.  The numbers are ascending,
+newer messages have a higher number.
+@item header
+The header lines from the E-mail messages, as arrived at the bug
+tracker.
+@item body
+The message body.
+@item attachments
+A list of possible attachments, or @code{nil}.  Not implemented yet server
+side.
+@end table
+@end defun
+
+@defun debbugs-get-message-numbers messages
+Returns the message numbers of @var{messages}.  @var{messages} must be
+the result of a @code{debbugs-get-bug-log} call.
+
+Example.  Get message numbers from bug report #456789 log from Debian
+BTS:
+
+@example
+(let ((debbugs-port "debian.org"))
+   (debbugs-get-message-numbers (debbugs-get-bug-log 456789)))
+@result{} (5 10 12)
+@end example
+@end defun
+
+@defun debbugs-get-message messages message-number
+Returns the message @var{message-number} of
+@var{messages}.  @var{messages} must be the result of a
+@code{debbugs-get-bug-log} call.  The returned message is a list of
+strings.  The first element are the header lines of the message, the
+second element is the body of the message.  Further elements of the list,
+if any, are attachments of the message.  If there is no message with
+@var{message-number}, the function returns @code{nil}.
+
+Example: Return the first message of the last submitted bug report to
+GNU BTS:
+
+@example
+(let* ((debbugs-port "gnu.org")
+       (messages (apply 'debbugs-get-bug-log
+                       (debbugs-newest-bugs 1))))
+  (debbugs-get-message
+   messages
+   (car (debbugs-get-message-numbers messages))))
+@end example
+@end defun
+
+@defun debbugs-get-mbox bug-number mbox-type &optional filename
+Download mbox with all messages from bug report
+@var{bug-number}.  @var{mbox-type} specifies a type of mbox and can be
+one of the following symbols:
+
+@table @code
+@item mboxfolder
+Download mbox folder, i.e. mbox with messages as they arrived at the
+Debbugs server.
+
+@item mboxmaint
+Download maintainer's mbox, i.e. mbox with messages as they are resent
+from the Debbugs server.
+
+@item mboxstat
+@itemx mboxstatus
+Download status mbox.  The use of either symbol depends on the actual
+Debbugs server configuration.  For @code{"gnu.org"}, use the former;
+for @code{"debian.org} - the latter.
+@end table
+
+@var{filename}, if non-@code{nil}, is the name of the file to store
+mbox.  If @var{filename} is @code{nil}, the downloaded mbox is
+inserted into the current buffer.
+
+Note, that mbox downloading will work only if the
+@code{:bugreport-url} field of the @code{debbugs-servers} variable is
+specified (@pxref{Configuration}).
+@end defun
+
+@node Requesting user tags
+@chapter Requesting user tags
+
+A user tag is a string, a user has assigned to one or several bugs.
+The user is identified by an email address.  The port @code{"gnu.org"}
+uses also package names as user identification.
+
+@defun debbugs-get-usertag &rest query
+Return a list of bug numbers which match @var{query}.
+
+@var{query} is a sequence of keyword-value pairs where the values are
+strings, i.e. :KEYWORD ``VALUE'' [:KEYWORD ``VALUE'']*
+
+Valid keywords are:
+
+@table @code
+@item :user
+The value is the name of the package a bug belongs to, like
+@code{"emacs"}, @code{"coreutils"}, or @code{"tramp"}.  It can also be
+an email address of a user who has applied a user tag.  The special
+email address @code{"me"} is used as pattern, replaced with
+@code{user-mail-address}.  There must be at least one such entry; it
+is recommended to have exactly one.
+
+@item :tag
+A string applied as user tag.  Often, it is a subproduct
+identification, like @code{"cedet"} or @code{"tramp"} for the package
+@code{"emacs"}.
+@end table
+
+If there is no @code{:tag} entry, no bug numbers will be returned but
+a list of existing user tags for @code{:user}.
+
+Example.  Get all user tags for the package @code{"emacs"}:
+
+@example
+(let ((debbugs-port "gnu.org"))
+  (debbugs-get-usertag :user "emacs"))
+@result{} ("www" "solaris" "ls-lisp" "cygwin")
+@end example
+
+Get all bugs tagged by package @code{"emacs"} with @code{"www"} or
+@code{"cygwin"})):
+
+@example
+(let ((debbugs-port "gnu.org"))
+  (debbugs-get-usertag :user "emacs" :tag "www" :tag "cygwin"))
+@result{} (807 1223 5637)
+@end example
+@end defun
+
+@bye
diff --git a/packages/dict-tree/dict-tree.el b/packages/dict-tree/dict-tree.el
new file mode 100644 (file)
index 0000000..2ba3bdb
--- /dev/null
@@ -0,0 +1,3446 @@
+;;; dict-tree.el --- Dictionary data structure
+
+;; Copyright (C) 2004-2012  Free Software Foundation, Inc
+
+;; Author: Toby Cubitt <toby-predictive@dr-qubit.org>
+;; Version: 0.12.8
+;; Keywords: extensions, matching, data structures
+;;           trie, tree, dictionary, completion, regexp
+;; Package-Requires: ((trie "0.2.5") (tNFA "0.1.1") (heap "0.3"))
+;; URL: http://www.dr-qubit.org/emacs.php
+
+;; This file is part of Emacs.
+;;
+;; GNU Emacs is free software: you can redistribute it and/or modify it under
+;; the terms of the GNU General Public License as published by the Free
+;; Software Foundation, either version 3 of the License, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful, but WITHOUT
+;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+;; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+;; more details.
+;;
+;; You should have received a copy of the GNU General Public License along
+;; with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+;; A dictionary is used to store strings, along with arbitrary data associated
+;; with each string. As well as basic data insertion, manipulation and
+;; retrieval, a dictionary can perform prefix searches on those strings,
+;; retrieving all strings with a given prefix in either alphabetical or any
+;; other order (see the `dictree-complete' and `dictree-complete-ordered'
+;; functions), and is able to cache results in order to speed up those
+;; searches. The package also provides persistent storage of the data
+;; structures to files.
+;;
+;; You create a dictionary using `dictree-create', add entries to it using
+;; `dictree-insert', lookup entries using `dictree-lookup', find completions
+;; of sequences using `dictree-complete', find completions and sort them in
+;; any order you speficy using `dictree-complete-ordered', map over it using
+;; `dictree-map' and `dictree-mapcar', save it to a file using `dictree-save'
+;; or `dictree-write', and load from file it using `dictree-load'. Various
+;; other useful functions are also provided.
+;;
+;; This package uses the trie package trie.el. the tagged NFA package tNFA.el,
+;; and the heap package heap.el.
+
+
+;;; Code:
+
+(eval-when-compile (require 'cl))
+(require 'trie)
+(require 'tNFA)
+(require 'bytecomp)
+
+
+
+;;; ================================================================
+;;;            Replacements for CL and Elisp functions
+
+;; copied from cl-extra.el
+(defun dictree--subseq (seq start &optional end)
+  "Return the subsequence of SEQ from START to END.
+If END is omitted, it defaults to the length of the sequence.
+If START or END is negative, it counts from the end."
+  (if (stringp seq) (substring seq start end)
+    (let (len)
+      (and end (< end 0) (setq end (+ end (setq len (length seq)))))
+      (when (< start 0)
+       (setq start (+ start (or len (setq len (length seq))))))
+      (cond ((listp seq)
+            (if (> start 0) (setq seq (nthcdr start seq)))
+            (if end
+                (let ((res nil))
+                  (while (>= (setq end (1- end)) start)
+                    (push (pop seq) res))
+                  (nreverse res))
+              (copy-sequence seq)))
+           (t
+            (or end (setq end (or len (length seq))))
+            (let ((res (make-vector (max (- end start) 0) nil))
+                  (i 0))
+              (while (< start end)
+                (aset res i (aref seq start))
+                (setq i (1+ i) start (1+ start)))
+              res))))))
+
+
+
+;; `goto-line' without messing around with mark and messages
+;; Note: This is a bug in simple.el. There's clearly a place for
+;;       non-interactive calls to goto-line from Lisp code, and there's
+;;       no warning against doing this in the documentation. Yet
+;;       goto-line *always* calls push-mark, which usually *shouldn't*
+;;       be invoked by Lisp programs, as its docstring warns.
+(defmacro dictree--goto-line (line)
+  "Goto line LINE, counting from line 1 at beginning of buffer."
+  `(progn
+     (goto-char 1)
+     (if (eq selective-display t)
+        (re-search-forward "[\n\C-m]" nil 'end (1- ,line))
+       (forward-line (1- ,line)))))
+
+
+
+;;; ====================================================================
+;;;  Internal functions and variables for use in the dictionary package
+
+(defvar dictree-loaded-list nil
+  "Stores list of loaded dictionaries.")
+
+
+;; ----------------------------------------------------------------
+;;                   Dictionary data cell structures
+
+;; Note: It would be more elegant to use a defstruct for the data cells,
+;;       but the problem is that the resulting setf in
+;;       `dictree--wrap-insfun' won't get expanded into the cell-data
+;;       accessor function at compile-time because it's burried inside a
+;;       backquote construct. Not only is it inelegant to have to expand
+;;       macros at run-time whenever `dictree--wrap-insfun' is called,
+;;       but it also requires the 'cl-macs package to be loaded at
+;;       run-time rather than just at compile-time. We could use
+;;       `lexical-let' instead, but it doesn't seem worth it here.
+
+;; wrap data in a cons cell
+(defalias 'dictree--cell-create 'cons)  ; INTERNAL USE ONLY
+
+;; get data component from data cons cell
+(defalias 'dictree--cell-data 'car)  ; INTERNAL USE ONLY
+
+;; get property list component from data cons cell
+(defalias 'dictree--cell-plist 'cdr)  ; INTERNAL USE ONLY
+
+;; set data component of data cons cell
+(defalias 'dictree--cell-set-data 'setcar)  ; INTERNAL USE ONLY
+
+;; set property list component of data cons cell
+(defalias 'dictree--cell-set-plist 'setcdr)  ; INTERNAL USE ONLY
+
+;; define setf methods so we can use setf abstraction wherever possible
+(defsetf dictree--cell-data dictree--cell-set-data)
+(defsetf dictree--cell-plist dictree--cell-set-plist)
+
+
+;; ----------------------------------------------------------------
+;;                 Dictionary cache entry structures
+
+;; Note: We *could* us a defstruct for the cache entries, but for
+;;       something this simple it doesn't seem worth it, especially
+;;       given that we're using the defalias approach anyway for the
+;;       data cells (above).
+
+;; Construct and return a completion cache entry
+(defalias 'dictree--cache-create 'cons)  ; INTERNAL USE ONLY
+
+;; Return the completions list for cache entry CACHE
+(defalias 'dictree--cache-results 'car)  ; INTERNAL USE ONLY
+
+;; Return the max number of completions returned for cache entry CACHE
+(defalias 'dictree--cache-maxnum 'cdr)  ; INTERNAL USE ONLY
+
+;; Set the completions list for cache entry CACHE
+(defalias 'dictree--cache-set-completions 'setcar)  ; INTERNAL USE ONLY
+
+;; Set the completions list for cache entry CACHE
+(defalias 'dictree--cache-set-maxnum 'setcdr)  ; INTERNAL USE ONLY
+
+
+;; ----------------------------------------------------------------
+;;                     Wrapping functions
+
+(defun dictree--wrap-insfun (insfun)  ; INTERNAL USE ONLY
+  ;; return wrapped insfun to deal with data wrapping
+  `(lambda (new old)
+     (dictree--cell-set-data old (,insfun (dictree--cell-data new)
+                                         (dictree--cell-data old)))
+     old))
+
+(defun dictree--wrap-rankfun (rankfun)  ; INTERNAL USE ONLY
+  ;; return wrapped rankfun to deal with data wrapping
+  `(lambda (a b)
+     (,rankfun (cons (car a) (dictree--cell-data (cdr a)))
+              (cons (car b) (dictree--cell-data (cdr b))))))
+
+(defun dictree--wrap-combfun (combfun)  ; INTERNAL USE ONLY
+  ;; return wrapped combfun to deal with data wrapping
+  `(lambda (cell1 cell2)
+     (cons (,combfun (dictree--cell-data cell1)
+                    (dictree--cell-data cell2))
+          (append (dictree--cell-plist cell1)
+                  (dictree--cell-plist cell2)))))
+
+(defun dictree--wrap-filter (filter)  ; INTERNAL USE ONLY
+  ;; return wrapped filter function to deal with data wrapping
+  `(lambda (key data) (,filter key (dictree--cell-data data))))
+
+(defun dictree--wrap-resultfun (resultfun)  ; INTERNAL USE ONLY
+  ;; return wrapped result function to deal with data wrapping
+  `(lambda (res) (,resultfun (car res) (dictree--cell-data (cdr res)))))
+
+
+
+;; ----------------------------------------------------------------
+;;                 The dictionary data structures
+
+(defstruct
+  (dictree-
+   :named
+   (:constructor nil)
+   (:constructor dictree--create
+                (&optional
+                 filename
+                 (name (and filename
+                            (file-name-sans-extension
+                             (file-name-nondirectory filename))))
+                 autosave
+                 unlisted
+                 (comparison-function '<)
+                 (insert-function (lambda (a b) a))
+                 (rank-function (lambda (a b) (> (cdr a) (cdr b))))
+                 (cache-policy 'time)
+                 (cache-update-policy 'synchronize)
+                 lookup-cache-threshold
+                 complete-cache-threshold
+                 complete-ranked-cache-threshold
+                 regexp-cache-threshold
+                 regexp-ranked-cache-threshold
+                 key-savefun key-loadfun
+                 data-savefun data-loadfun
+                 plist-savefun plist-loadfun
+                 trie-type
+                 &aux
+                 (modified nil)
+                 (trie (trie-create comparison-function))
+                 (insfun (dictree--wrap-insfun insert-function))
+                 (rankfun (dictree--wrap-rankfun rank-function))
+                 (lookup-cache
+                  (if lookup-cache-threshold
+                      (make-hash-table :test 'equal)
+                    nil))
+                 (complete-cache
+                  (if complete-cache-threshold
+                      (make-hash-table :test 'equal)
+                    nil))
+                 (complete-ranked-cache
+                  (if complete-ranked-cache-threshold
+                      (make-hash-table :test 'equal)
+                    nil))
+                 (regexp-cache
+                  (if regexp-cache-threshold
+                      (make-hash-table :test 'equal)
+                    nil))
+                 (regexp-ranked-cache
+                  (if regexp-ranked-cache-threshold
+                      (make-hash-table :test 'equal)
+                    nil))
+                 (metadict-list nil)
+                 ))
+   (:constructor dictree--create-custom
+                (&optional
+                 filename
+                 (name (and filename
+                            (file-name-sans-extension
+                             (file-name-nondirectory filename))))
+                 autosave
+                 unlisted
+                 (comparison-function '<)
+                 (insert-function (lambda (a b) a))
+                 (rank-function (lambda (a b) (> (cdr a) (cdr b))))
+                 (cache-policy 'time)
+                 (cache-update-policy 'synchronize)
+                 lookup-cache-threshold
+                 complete-cache-threshold
+                 complete-ranked-cache-threshold
+                 regexp-cache-threshold
+                 regexp-ranked-cache-threshold
+                 key-savefun key-loadfun
+                 data-savefun data-loadfun
+                 plist-savefun plist-loadfun
+                 &key
+                 createfun insertfun deletefun
+                 lookupfun mapfun emptyfun
+                 stack-createfun stack-popfun stack-emptyfun
+                 transform-for-print transform-from-read
+                 &aux
+                 (modified nil)
+                 (trie (trie-create-custom
+                        comparison-function
+                        :createfun createfun
+                        :insertfun insertfun
+                        :deletefun deletefun
+                        :lookupfun lookupfun
+                        :mapfun mapfun
+                        :emptyfun emptyfun
+                        :stack-createfun stack-createfun
+                        :stack-popfun stack-popfun
+                        :stack-emptyfun stack-emptyfun
+                        :transform-for-print transform-for-print
+                        :transform-from-read transform-from-read))
+                 (insfun (dictree--wrap-insfun insert-function))
+                 (rankfun (dictree--wrap-rankfun rank-function))
+                 (lookup-cache
+                  (if lookup-cache-threshold
+                      (make-hash-table :test 'equal)
+                    nil))
+                 (complete-cache
+                  (if complete-cache-threshold
+                      (make-hash-table :test 'equal)
+                    nil))
+                 (complete-ranked-cache
+                  (if complete-ranked-cache-threshold
+                      (make-hash-table :test 'equal)
+                    nil))
+                 (regexp-cache
+                  (if regexp-cache-threshold
+                      (make-hash-table :test 'equal)
+                    nil))
+                 (regexp-ranked-cache
+                  (if regexp-ranked-cache-threshold
+                      (make-hash-table :test 'equal)
+                    nil))
+                 (metadict-list nil)
+                 ))
+   (:copier dictree--copy))
+  name filename autosave modified
+  comparison-function insert-function insfun rank-function rankfun
+  cache-policy cache-update-policy
+  lookup-cache lookup-cache-threshold
+  complete-cache complete-cache-threshold
+  complete-ranked-cache complete-ranked-cache-threshold
+  regexp-cache regexp-cache-threshold
+  regexp-ranked-cache regexp-ranked-cache-threshold
+  key-savefun key-loadfun
+  data-savefun data-loadfun
+  plist-savefun plist-loadfun
+  trie meta-dict-list)
+
+
+(defstruct
+  (dictree--meta-dict
+   :named
+   (:constructor nil)
+   (:constructor dictree--meta-dict-create
+                (dictionary-list
+                 &optional
+                 filename
+                 (name (file-name-sans-extension
+                        (file-name-nondirectory filename)))
+                 autosave
+                 unlisted
+                 (combine-function '+)
+                 (cache-policy 'time)
+                 (cache-update-policy 'synchronize)
+                 lookup-cache-threshold
+                 complete-cache-threshold
+                 complete-ranked-cache-threshold
+                 regexp-cache-threshold
+                 regexp-ranked-cache-threshold
+                 &aux
+                 (dictlist
+                  (mapcar
+                   (lambda (dic)
+                     (cond
+                      ((dictree-p dic) dic)
+                      ((symbolp dic) (eval dic))
+                      (t (error "Invalid object in DICTIONARY-LIST"))))
+                   dictionary-list))
+                 (combfun (dictree--wrap-combfun combine-function))
+                 (lookup-cache
+                  (if lookup-cache-threshold
+                      (make-hash-table :test 'equal)
+                    nil))
+                 (complete-cache
+                  (if complete-cache-threshold
+                      (make-hash-table :test 'equal)
+                    nil))
+                 (complete-ranked-cache
+                  (if complete-ranked-cache-threshold
+                      (make-hash-table :test 'equal)
+                    nil))
+                 (regexp-cache
+                  (if regexp-cache-threshold
+                      (make-hash-table :test 'equal)
+                    nil))
+                 (regexp-ranked-cache
+                  (if regexp-ranked-cache-threshold
+                      (make-hash-table :test 'equal)
+                    nil))
+                 ))
+   (:copier dictree--meta-dict-copy))
+  name filename autosave modified
+  combine-function combfun
+  cache-policy cache-update-policy
+  lookup-cache lookup-cache-threshold
+  complete-cache complete-cache-threshold
+  complete-ranked-cache complete-ranked-cache-threshold
+  regexp-cache regexp-cache-threshold
+  regexp-ranked-cache regexp-ranked-cache-threshold
+  dictlist meta-dict-list)
+
+
+
+;; ----------------------------------------------------------------
+;;           Miscelaneous internal functions and macros
+
+(defun dictree--trielist (dict)
+  ;; Return a list of all the tries on which DICT is based. If DICT is a
+  ;; meta-dict, this recursively descends the hierarchy, gathering all
+  ;; the tries from the base dictionaries.
+  (let (accumulate)
+    (dictree--do-trielist dict)
+    accumulate))
+
+(defun dictree--do-trielist (dict)
+  (declare (special accumulate))
+  (if (dictree-meta-dict-p dict)
+      (mapc 'dictree--do-trielist (dictree--meta-dict-dictlist dict))
+    (setq accumulate (cons (dictree--trie dict) accumulate))))
+
+
+(defun dictree--merge (list1 list2 cmpfun &optional combfun maxnum)
+  ;; Destructively merge together sorted lists LIST1 and LIST2, sorting
+  ;; elements according to CMPFUN. For non-null MAXNUM, only the first
+  ;; MAXNUM are kept. For non-null COMBFUN, duplicate elements will be
+  ;; merged by passing the two elements as arguments to COMBFUN, and
+  ;; using the return value as the merged element.
+  (or (listp list1) (setq list1 (append list1 nil)))
+  (or (listp list2) (setq list2 (append list2 nil)))
+  (let (res (i 0))
+
+    ;; build up result list backwards
+    (while (and list1 list2 (or (null maxnum) (< (incf i) maxnum)))
+      ;; move smaller element to result list
+      (if (funcall cmpfun (car list1) (car list2))
+         (push (pop list1) res)
+       (if (funcall cmpfun (car list2) (car list1))
+           (push (pop list2) res)
+         ;; if elements are equal, merge them for non-null COMBFUN
+         (if combfun
+             (push (funcall combfun (pop list1) (pop list2))
+                   res)
+           ;; otherwise, add both to result list, in order
+           (push (pop list1) res)
+           (push (pop list2) res)))))
+
+    ;; return result if we already have MAXNUM entries
+    (if (and maxnum (= i maxnum))
+       (nreverse res)
+      ;; otherwise, return result plus enough leftover entries to make
+      ;; up MAXNUM (only one of list1 or list2 will be non-nil)
+      (let (tmp)
+       (or (null maxnum)
+           (and (setq tmp (nthcdr (- maxnum i 1) list1))
+                (setcdr tmp nil))
+           (and (setq tmp (nthcdr (- maxnum i 1) list2))
+                (setcdr tmp nil)))
+       (nconc (nreverse res) list1 list2)))
+    ))
+
+
+;; (defun dictree--merge-sort (list sortfun &optional combfun)
+;;   ;; Destructively sort LIST according to SORTFUN, combining
+;;   ;; identical elements using COMBFUN if supplied.
+;;   (dictree--do-merge-sort list (/ (length list) 2) sortfun combfun))
+
+
+;; (defun dictree--do-merge-sort (list1 len sortfun combfun)
+;;   ;; Merge sort LIST according to SORTFUN, combining identical
+;;   ;; elements using COMBFUN.
+;;   (let* ((p (nthcdr (1- len) list1))
+;;      (list2 (cdr p)))
+;;     (setcdr p nil)
+;;     (dictree--merge
+;;      (dictree--do-merge-sort list1 (/ len 2) sortfun combfun)
+;;      (dictree--do-merge-sort list2 (/ len 2) sortfun combfun)
+;;      sortfun combfun)))
+
+
+
+
+;;; ================================================================
+;;;    The (mostly) public functions which operate on dictionaries
+
+;;;###autoload
+(defun make-dictree
+  (&optional
+   name filename autosave unlisted
+   comparison-function insert-function rank-function
+   cache-policy cache-update-policy
+   lookup-cache-threshold
+   complete-cache-threshold
+   complete-ranked-cache-threshold
+   regexp-cache-threshold
+   regexp-ranked-cache-threshold
+   key-savefun key-loadfun
+   data-savefun data-loadfun
+   plist-savefun plist-loadfun
+   trie-type)
+  "Create an empty dictionary and return it.
+
+If NAME is supplied, the dictionary is stored in the variable
+NAME. Defaults to FILENAME stripped of directory and
+extension. (Regardless of the value of NAME, the dictionary will
+be stored in the default variable name when it is reloaded from
+file.)
+
+FILENAME supplies a directory and file name to use when saving
+the dictionary. If the AUTOSAVE flag is non-nil, then the
+dictionary will automatically be saved to this file when it is
+unloaded or when exiting Emacs.
+
+If UNLISTED is non-nil, the dictionary will not be added to the
+list of loaded dictionaries. Note that this disables autosaving.
+
+COMPARE-FUNCTION sets the function used to compare elements of
+the keys. It should take two arguments, A and B, both of the type
+contained by the sequences used as keys \(e.g. if the keys will
+be strings, the function will be passed two characters\). It
+should return t if the first is \"less than\" the
+second. Defaults to `<'.
+
+INSERT-FUNCTION sets the function used to insert data into the
+dictionary. It should take two arguments: the new data, and the
+data already in the dictionary, and should return the data to
+insert. Defaults to replacing any existing data with the new
+data.
+
+RANK-FUNCTION sets the function used to rank the results of
+`dictree-complete'. It should take two arguments, each a cons
+whose car is a dictree key (a sequence) and whose cdr is the data
+associated with that key. It should return non-nil if the first
+argument is \"better\" than the second, nil otherwise. It
+defaults to \"lexical\" comparison of the keys, ignoring the data
+\(which is not very useful, since an unranked `dictree-complete'
+query already does this much more efficiently\).
+
+CACHE-POLICY should be a symbol ('time, 'length, or 'both), which
+determines which query operations are cached. The 'time setting
+caches queries that take longer (in seconds) than the
+corresponding CACHE-THRESHOLD value. The 'length setting caches
+lookups of key sequences that are longer than
+LOOKUP-CACHE-THRESHOLD value (since those are likely to be the
+slower ones), and caches completions of prefixes that are shorter
+than the corresponding CACHE-THRESHOLD (since those are likely to
+be the slower ones in that case). The setting 'both requires both
+conditions to be satisfied simultaneously. In this case,
+CACHE-THRESHOLD must be a plist with properties :time and :length
+specifying the corresponding cache thresholds.
+
+CACHE-UPDATE-POLICY should be a symbol ('synchronize or 'delete),
+which determines how the caches are updated when data is inserted
+or deleted. The former updates tainted cache entries, which makes
+queries faster but insertion and deletion slower, whereas the
+latter deletes any tainted cache entries, which makes queries
+slower but insertion and deletion faster.
+
+The CACHE-THRESHOLD settings set the threshold for caching the
+corresponding dictionary query (lookup, completion, ranked
+completion). The meaning of these values depends on the setting
+of CACHE-POLICY (see above).
+
+All CACHE-THRESHOLD's default to nil. The values nil and t are
+special. If a CACHE-THRESHOLD is set to nil, no caching is done
+for that type of query. If it is t, everything is cached for that
+type of query \(similar behaviour can be obtained by setting the
+CACHE-THRESHOLD to 0, but it is better to use t\).
+
+KEY-SAVEFUN, DATA-SAVEFUN and PLIST-SAVEFUN are functions used to
+convert keys, data and property lists into lisp objects that have
+a valid read syntax, for writing to file. DATA-SAVEFUN and
+PLIST-SAVEFUN are used when saving the dictionary (see
+`dictree-save' and `dictree-write'), and all three functions are
+used when dumping the contents of the dictionary \(see
+`dictree-dump-to-buffer' and `dictree-dump-to-file'\).
+KEY-SAVEFUN, DATA-SAVEFUN and PLIST-SAVEFUN should each accept
+one argument: a key, data or property list from DICT,
+respectively. They should return a lisp object which has a valid
+read syntax. When defining these functions, be careful not to
+accidentally modify the lisp object in the dictionary; usually,
+you will need to make a copy before converting it.
+
+KEY-LOADFUN, DATA-LOADFUN and PLIST-LOADFUN are used to convert
+keys, data and property lists back again when loading a
+dictionary (only DATA-LOADFUN and PLIST-LOADFUN, see
+`dictree-save' and `dictree-write') or populating it from a
+file (all three, see `dictree-populate-from-file'). They should
+accept one argument: a lisp object of the type produced by the
+corresponding SAVEFUN, and return a lisp object to use in the
+loaded dictionary.
+
+TRIE-TYPE sets the type of trie to use as the underlying data
+structure. See `trie-create' for details."
+
+  ;; sadly, passing null values over-rides the defaults in the defstruct
+  ;; dictree--create, so we have to explicitly set the defaults again
+  ;; here
+  (or name (setq name (and filename (file-name-sans-extension
+                                    (file-name-nondirectory filename)))))
+  (or comparison-function (setq comparison-function '<))
+  (or insert-function (setq insert-function (lambda (a b) a)))
+  (or rank-function (setq rank-function (lambda (a b) (> (cdr a) (cdr b)))))
+  (or cache-policy (setq cache-policy 'time))
+  (or cache-update-policy (setq cache-update-policy 'synchronize))
+
+  (let ((dict
+        (dictree--create
+         filename (when name (symbol-name name)) autosave unlisted
+         comparison-function insert-function rank-function
+         cache-policy cache-update-policy
+         lookup-cache-threshold
+         complete-cache-threshold
+         complete-ranked-cache-threshold
+         regexp-cache-threshold
+         regexp-ranked-cache-threshold
+         key-savefun key-loadfun
+         data-savefun data-loadfun
+         plist-savefun plist-loadfun
+         trie-type)))
+    ;; store dictionary in variable NAME
+    (when name (set name dict))
+    ;; add it to loaded dictionary list, unless it's unlisted
+    (unless (or (null name) unlisted)
+      (push dict dictree-loaded-list))
+    dict))
+
+
+;;;###autoload
+(defalias 'dictree-create 'make-dictree)
+
+
+;;;###autoload
+(defun* make-dictree-custom
+    (&optional
+     name filename autosave unlisted
+     &key
+     comparison-function insert-function rank-function
+     cache-policy cache-update-policy
+     lookup-cache-threshold
+     complete-cache-threshold
+     complete-ranked-cache-threshold
+     regexp-cache-threshold
+     regexp-ranked-cache-threshold
+     key-savefun key-loadfun
+     data-savefun data-loadfun
+     plist-savefun plist-loadfun
+     createfun insertfun deletefun lookupfun mapfun emptyfun
+     stack-createfun stack-popfun stack-emptyfun
+     transform-for-print transform-from-read)
+  "Create an empty dictionary and return it.
+
+The NAME through PLIST-LOADFUN arguments are as for
+`dictree-create' (which see).
+
+The remaining arguments control the type of trie to use as the
+underlying data structure. See `trie-create' for details."
+
+  ;; sadly, passing null values over-rides the defaults in the defstruct
+  ;; dictree--create, so we have to explicitly set the defaults again
+  ;; here
+  (or name (setq name (and filename (file-name-sans-extension
+                                    (file-name-nondirectory filename)))))
+  (or comparison-function (setq comparison-function '<))
+  (or insert-function (setq insert-function (lambda (a b) a)))
+  (or rank-function (setq rank-function (lambda (a b) (< (cdr a) (cdr b)))))
+  (or cache-policy (setq cache-policy 'time))
+  (or cache-update-policy (setq cache-update-policy 'synchronize))
+
+  (let ((dict
+        (dictree--create-custom
+         filename (when name (symbol-name name)) autosave unlisted
+         comparison-function insert-function rank-function
+         cache-policy cache-update-policy
+         lookup-cache-threshold
+         complete-cache-threshold
+         complete-ranked-cache-threshold
+         regexp-cache-threshold
+         regexp-ranked-cache-threshold
+         key-savefun key-loadfun
+         data-savefun data-loadfun
+         plist-savefun plist-loadfun
+         :createfun createfun
+         :insertfun insertfun
+         :deletefun deletefun
+         :lookupfun lookupfun
+         :mapfun mapfun
+         :emptyfun emptyfun
+         :stack-createfun stack-createfun
+         :stack-popfun stack-popfun
+         :stack-emptyfun stack-emptyfun
+         :transform-for-print transform-for-print
+         :transform-from-read transform-from-read)))
+    ;; store dictionary in variable NAME
+    (when name (set name dict))
+    ;; add it to loaded dictionary list, unless it's unlisted
+    (unless (or (null name) unlisted)
+      (push dict dictree-loaded-list))
+    dict))
+
+
+;;;###autoload
+(defalias 'dictree-create-custom 'make-dictree-custom)
+
+
+;;;###autoload
+(defun make-dictree-meta-dict
+  (dictionary-list
+   &optional
+   name filename autosave unlisted
+   combine-function
+   cache-policy cache-update-policy
+   lookup-cache-threshold
+   complete-cache-threshold
+   complete-ranked-cache-threshold
+   regexp-cache-threshold
+   regexp-ranked-cache-threshold)
+  "Create a meta-dictionary based on the list of dictionaries
+in DICTIONARY-LIST.
+
+COMBINE-FUNCTION is used to combine data from different
+dictionaries. It is passed two pieces of data, each an
+association of the same key, but in different dictionaries. It
+should return a combined datum.
+
+The other arguments are as for `dictree-create'. Note that
+caching is only possible if NAME is supplied, otherwise the
+cache-threshold arguments are ignored."
+
+  ;; sadly, passing null values over-rides the defaults in the defstruct
+  ;; `dictree--create', so we have to explicitly set the defaults again
+  ;; here
+  (or name (setq name (and filename
+                          (file-name-sans-extension
+                           (file-name-nondirectory filename)))))
+  (or combine-function (setq combine-function '+))
+  (or cache-policy (setq cache-policy 'time))
+  (or cache-update-policy (setq cache-update-policy 'synchronize))
+
+  (let ((dict
+        (dictree--meta-dict-create
+         dictionary-list filename (when name (symbol-name name))
+         autosave unlisted
+         combine-function
+         cache-policy cache-update-policy
+         (when name lookup-cache-threshold)
+         (when name complete-cache-threshold)
+         (when name complete-ranked-cache-threshold)
+         (when name regexp-cache-threshold)
+         (when name regexp-ranked-cache-threshold))
+        ))
+    ;; store dictionary in variable NAME
+    (when name (set name dict))
+    ;; add it to loaded dictionary list, unless it's unlisted
+    (unless (or (null name) unlisted)
+      (push dict dictree-loaded-list))
+    ;; update meta-dict-list cells of constituent dictionaries
+    (unless (or (null name)
+               (not (or lookup-cache-threshold
+                        complete-cache-threshold
+                        complete-ranked-cache-threshold
+                        regexp-cache-threshold
+                        regexp-ranked-cache-threshold)))
+      (mapc
+       (lambda (dic)
+        (if (symbolp dic) (setq dic (eval dic)))
+        (setf (dictree--meta-dict-list dic)
+              (cons dict (dictree--meta-dict-list dic))))
+       dictionary-list))
+    dict))
+
+(defalias 'dictree-create-meta-dict 'make-dictree-meta-dict)
+
+
+;;;###autoload
+(defun dictree-p (obj)
+  "Return t if OBJ is a dictionary tree, nil otherwise."
+  (or (dictree--p obj) (dictree--meta-dict-p obj)))
+
+
+(defalias 'dictree-meta-dict-p 'dictree--meta-dict-p
+  "Return t if argument is a meta-dictionary, nil otherwise.")
+
+(defun dictree-empty-p (dict)
+  "Return t if the dictionary DICT is empty, nil otherwise."
+  (if (dictree--meta-dict-p dict)
+      (catch 'nonempty
+       (mapc (lambda (dic)
+               (if (not (dictree-empty-p dic)) (throw 'nonempty t)))
+             (dictree--meta-dict-dictlist dict)))
+    (trie-empty (dictree--trie dict))))
+
+(defsubst dictree-autosave (dict)
+  "Return dictionary's autosave flag."
+  (if (dictree--meta-dict-p dict)
+      (dictree--meta-dict-autosave dict)
+    (dictree--autosave dict)))
+
+(defsetf dictree-autosave (dict) (val)
+  ;; setf method for dictionary autosave flag
+  `(if (dictree--meta-dict-p ,dict)
+       (setf (dictree--meta-dict-autosave ,dict) ,val)
+     (setf (dictree--autosave ,dict) ,val)))
+
+(defsubst dictree-modified (dict)
+  "Return dictionary's modified flag."
+  (if (dictree--meta-dict-p dict)
+      (dictree--meta-dict-modified dict)
+    (dictree--modified dict)))
+
+(defsetf dictree-modified (dict) (val)
+  ;; setf method for dictionary modified flag
+  `(if (dictree--meta-dict-p ,dict)
+       (setf (dictree--meta-dict-modified ,dict) ,val)
+     (setf (dictree--modified ,dict) ,val)))
+
+(defsubst dictree-name (dict)
+  "Return dictionary DICT's name."
+  (if (dictree--meta-dict-p dict)
+      (dictree--meta-dict-name dict)
+    (dictree--name dict)))
+
+(defsetf dictree-name (dict) (name)
+  ;; setf method for dictionary name
+  `(if (dictree--meta-dict-p ,dict)
+       (setf (dictree--meta-dict-name ,dict) ,name)
+    (setf (dictree--name ,dict) ,name)))
+
+(defsubst dictree-filename (dict)
+  "Return dictionary DICT's associated file name."
+  (if (dictree--meta-dict-p dict)
+      (dictree--meta-dict-filename dict)
+    (dictree--filename dict)))
+
+(defsetf dictree-filename (dict) (filename)
+  ;; setf method for dictionary filename
+  `(if (dictree--meta-dict-p ,dict)
+       (setf (dictree--meta-dict-filename ,dict) ,filename)
+     (setf (dictree--filename ,dict) ,filename)))
+
+(defun dictree-comparison-function (dict)
+  "Return dictionary DICT's comparison function."
+  (if (dictree--meta-dict-p dict)
+      (dictree-comparison-function
+       (car (dictree--meta-dict-dictlist dict)))
+    (dictree--comparison-function dict)))
+
+(defalias 'dictree-insert-function 'dictree--insert-function
+  "Return the insertion function for dictionary DICT.")
+
+(defun dictree-rank-function (dict)
+  "Return the rank function for dictionary DICT"
+  (if (dictree--meta-dict-p dict)
+      (dictree-rank-function (car (dictree--meta-dict-dictlist dict)))
+    (dictree--rank-function dict)))
+
+(defun dictree-rankfun (dict)
+  ;; Return the rank function for dictionary DICT
+  (if (dictree--meta-dict-p dict)
+      (dictree-rankfun (car (dictree--meta-dict-dictlist dict)))
+    (dictree--rankfun dict)))
+
+(defalias 'dictree-meta-dict-combine-function
+  'dictree--meta-dict-combine-function
+  "Return the combine function for meta-dictionary DICT.")
+
+(defalias 'dictree-meta-dict-dictlist
+  'dictree--meta-dict-dictlist
+  "Return the list of constituent dictionaries
+for meta-dictionary DICT.")
+
+(defsubst dictree-cache-policy (dict)
+  "Return the cache policy for dictionary DICT."
+  (if (dictree--meta-dict-p dict)
+      (dictree--meta-dict-cache-policy dict)
+    (dictree--cache-policy dict)))
+
+(defsubst dictree-cache-update-policy (dict)
+  "Return the cache update policy for dictionary DICT."
+  (if (dictree--meta-dict-p dict)
+      (dictree--meta-dict-cache-update-policy dict)
+    (dictree--cache-update-policy dict)))
+
+(defsubst dictree-lookup-cache-threshold (dict)
+  "Return the lookup cache threshold for dictionary DICT."
+  (if (dictree--meta-dict-p dict)
+      (dictree--meta-dict-lookup-cache-threshold dict)
+    (dictree--lookup-cache-threshold dict)))
+
+(defsetf dictree-lookup-cache-threshold (dict) (param)
+  ;; setf method for lookup cache threshold
+  `(if (dictree--meta-dict-p ,dict)
+       (setf (dictree--meta-dict-lookup-cache-threshold ,dict)
+            ,param)
+     (setf (dictree--lookup-cache-threshold ,dict)
+          ,param)))
+
+(defsubst dictree-lookup-cache (dict)
+  ;; Return the lookup cache for dictionary DICT.
+  (if (dictree--meta-dict-p dict)
+      (dictree--meta-dict-lookup-cache dict)
+    (dictree--lookup-cache dict)))
+
+(defsubst dictree-complete-cache-threshold (dict)
+  "Return the completion cache threshold for dictionary DICT."
+  (if (dictree--meta-dict-p dict)
+      (dictree--meta-dict-complete-cache-threshold dict)
+    (dictree--complete-cache-threshold dict)))
+
+(defsetf dictree-complete-cache-threshold (dict) (param)
+  ;; setf method for completion cache threshold
+  `(if (dictree--meta-dict-p ,dict)
+       (setf (dictree--meta-dict-complete-cache-threshold ,dict)
+            ,param)
+     (setf (dictree--complete-cache-threshold ,dict)
+          ,param)))
+
+(defun dictree-complete-cache (dict)
+  ;; Return the completion cache for dictionary DICT.
+  (if (dictree--meta-dict-p dict)
+      (dictree--meta-dict-complete-cache dict)
+    (dictree--complete-cache dict)))
+
+(defsubst dictree-complete-ranked-cache-threshold (dict)
+  "Return the ranked completion cache threshold for dictionary DICT."
+  (if (dictree--meta-dict-p dict)
+      (dictree--meta-dict-complete-ranked-cache-threshold dict)
+    (dictree--complete-ranked-cache-threshold dict)))
+
+(defsetf dictree-complete-ranked-cache-threshold (dict) (param)
+  ;; setf method for ranked completion cache threshold
+  `(if (dictree--meta-dict-p ,dict)
+       (setf (dictree--meta-dict-complete-ranked-cache-threshold ,dict)
+            ,param)
+     (setf (dictree--complete-ranked-cache-threshold ,dict)
+          ,param)))
+
+(defun dictree-complete-ranked-cache (dict)
+  ;; Return the ranked completion cache for dictionary DICT.
+  (if (dictree--meta-dict-p dict)
+      (dictree--meta-dict-complete-ranked-cache dict)
+    (dictree--complete-ranked-cache dict)))
+
+(defsubst dictree-regexp-cache-threshold (dict)
+  "Return the regexp cache threshold for dictionary DICT."
+  (if (dictree--meta-dict-p dict)
+      (dictree--meta-dict-regexp-cache-threshold dict)
+    (dictree--regexp-cache-threshold dict)))
+
+(defsetf dictree-regexp-cache-threshold (dict) (param)
+  ;; setf method for regexp cache threshold
+  `(if (dictree--meta-dict-p ,dict)
+       (setf (dictree--meta-dict-regexp-cache-threshold ,dict)
+            ,param)
+     (setf (dictree--regexp-cache-threshold ,dict)
+          ,param)))
+
+(defun dictree-regexp-cache (dict)
+  ;; Return the regexp cache for dictionary DICT.
+  (if (dictree--meta-dict-p dict)
+      (dictree--meta-dict-regexp-cache dict)
+    (dictree--regexp-cache dict)))
+
+(defsubst dictree-regexp-ranked-cache-threshold (dict)
+  "Return the ranked regexp cache threshold for dictionary DICT."
+  (if (dictree--meta-dict-p dict)
+      (dictree--meta-dict-regexp-ranked-cache-threshold dict)
+    (dictree--regexp-ranked-cache-threshold dict)))
+
+(defsetf dictree-regexp-ranked-cache-threshold (dict) (param)
+  ;; setf method for ranked regexp cache threshold
+  `(if (dictree--meta-dict-p ,dict)
+       (setf (dictree--meta-dict-regexp-ranked-cache-threshold ,dict)
+            ,param)
+     (setf (dictree--regexp-ranked-cache-threshold ,dict)
+          ,param)))
+
+(defun dictree-regexp-ranked-cache (dict)
+  ;; Return the ranked regexp cache for dictionary DICT.
+  (if (dictree--meta-dict-p dict)
+      (dictree--meta-dict-regexp-ranked-cache dict)
+    (dictree--regexp-ranked-cache dict)))
+
+
+
+;; ----------------------------------------------------------------
+;;                  Inserting and deleting data
+
+(defun dictree-insert (dict key &optional data insert-function)
+  "Insert KEY and DATA into dictionary DICT.
+If KEY does not already exist, this creates it. How the data is
+inserted depends on the dictionary's insertion function \(see
+`dictree-create'\).
+
+The optional INSERT-FUNCTION over-rides the dictionary's own
+insertion function. If KEY already exists in DICT,
+INSERT-FUNCTION is called with two arguments: the data DATA, and
+the data associated with KEY in the dictionary. Its return value
+becomes the new association for KEY."
+
+  ;; if dictionary is a meta-dictionary, insert key into all the
+  ;; dictionaries it's based on
+  (if (dictree--meta-dict-p dict)
+      (mapc (lambda (dic)
+             (dictree-insert dic key data insert-function))
+           (dictree--meta-dict-dictlist dict))
+
+    ;; otherwise...
+    (let (newdata)
+      ;; set the dictionary's modified flag
+      (setf (dictree-modified dict) t)
+      ;; insert key in dictionary's ternary search tree
+      (setq newdata
+           (trie-insert
+            (dictree--trie dict) key (dictree--cell-create data nil)
+            (or (and insert-function
+                     (dictree--wrap-insfun insert-function))
+                (dictree--insfun dict))))
+      ;; update dictionary's caches
+      (dictree--update-cache dict key newdata)
+      ;; update cache's of any meta-dictionaries based on dict
+      (mapc (lambda (dic) (dictree--update-cache dic key newdata))
+           (dictree--meta-dict-list dict))
+
+      ;; return the new data
+      (dictree--cell-data newdata))))
+
+
+
+(defun dictree-delete (dict key &optional test)
+  "Delete KEY from DICT.
+Returns non-nil if KEY was deleted, nil if KEY was not in DICT.
+
+If TEST is supplied, it should be a function that accepts three
+arguments: the key being deleted, its associated data, and its
+associated property list. The key will then only be deleted if
+TEST returns non-nil."
+
+  (let ((dictree--delete-test test)
+       deleted del)
+    (cond
+     ;; if DICT is a meta-dictionary, delete KEY from all dictionaries
+     ;; it's based on
+     ((dictree--meta-dict-p dict)
+      (dolist (dic (dictree--meta-dict-dictlist dict))
+       (when (setq del (dictree-delete dic key))
+         (setq deleted (cons del deleted))))
+      (setf (dictree-modified dict) (and deleted t))
+      (setq deleted (nreverse deleted)))
+
+     ;; otherwise...
+     (t
+      (setq deleted
+           (trie-delete (dictree--trie dict) key
+                        (when dictree--delete-test
+                          (lambda (k cell)
+                            (funcall dictree--delete-test
+                                     k (dictree--cell-data cell)
+                                     (dictree--cell-plist cell))))))
+      ;; if key was deleted, have to update the caches
+      (when deleted
+       (dictree--update-cache dict key nil t)
+       (setf (dictree-modified dict) t)
+       ;; update cache's of any meta-dictionaries based on DICT
+       (mapc (lambda (dic)
+               (dictree--update-cache dic key nil t))
+             (dictree--meta-dict-list dict)))))
+
+    ;; return deleted key/data pair
+    (when deleted
+      (cons (car deleted) (dictree--cell-data (cdr deleted))))))
+
+
+
+;; ----------------------------------------------------------------
+;;                     Cache updating
+
+(defun dictree--prefix-p (prefix str)
+  "Return t if PREFIX is a prefix of STR, nil otherwise.
+
+PREFIX and STR can be any sequence type (string, vector, or
+list), but they must both be the same type. PREFIX can also be a
+list of sequences, in which case it returns t if any element of
+PREFIX is a prefix of STR."
+  ;; wrap prefix in a list if necessary
+  ;; FIXME: the test for a list of prefixes, below, will fail if the
+  ;;        PREFIX sequence is a list, and the elements of PREFIX are
+  ;;        themselves lists (there might be no easy way to fully fix
+  ;;        this...)
+  (when (or (atom prefix)
+           (and (listp prefix) (not (sequencep (car prefix)))))
+    (setq prefix (list prefix)))
+  (let (len)
+    (catch 'is-prefix
+      (dolist (pfx prefix)
+       (setq len (length pfx))
+       (when (and (<= len (length str))
+                  (equal pfx (dictree--subseq str 0 len)))
+         (throw 'is-prefix t))))))
+
+
+(defun dictree--above-cache-threshold-p
+  (time length policy threshold &optional cache-long-keys)
+  ;; Return t if query taking TIME seconds for a key of length LENGTH
+  ;; should be cached according to the cache POLICY and
+  ;; THRESHOLD. Otherwise, return nil. Optional argument CACHE-LONG-KEYS
+  ;; means that keys of length longer than THRESHOLD are to be
+  ;; cached. Default is keys of length shorter than THRESHOLD.
+  (and threshold
+       (or (eq threshold t)
+          (and (eq policy 'time) (>= time threshold))
+          ;; note: we cache lookups of *longer* keys, because those are
+          ;;       likely to be slower ones
+          (and (eq policy 'length)
+               (if cache-long-keys
+                   (>= length threshold) (<= length threshold)))
+          (and (eq policy 'both)
+               (or (>= time (plist-get threshold :time))
+                   (if cache-long-keys
+                       (>= length (plist-get threshold :length))
+                     (<= length (plist-get threshold :length))))))))
+
+
+(defun dictree--update-cache (dict key newdata &optional deleted)
+  ;; Synchronise dictionary DICT's caches, given that the data
+  ;; associated with KEY has been changed to NEWDATA, or KEY has been
+  ;; deleted if DELETED is non-nil (NEWDATA is ignored in that case)."
+  (let (arg reverse cache cache-entry completions cmpl maxnum)
+
+    ;; synchronise the lookup cache if dict is a meta-dictionary, since
+    ;; it's not done automatically
+    (when (and (dictree--meta-dict-p dict)
+              (dictree--meta-dict-lookup-cache-threshold dict))
+      (setq cache (dictree--lookup-cache dict))
+      (cond
+       ;; if updating dirty cache entries...
+       ((eq (dictree-cache-update-policy dict) 'synchronize)
+       (when (gethash key cache)
+         (if deleted (remhash key cache) (puthash key newdata cache))))
+       ;; if deleting dirty cache entries...
+       (t (remhash key cache))))
+
+    ;; synchronize the completion cache, if it exists
+    (when (dictree-complete-cache-threshold dict)
+      (setq cache (dictree-complete-cache dict))
+      ;; check every cache entry to see if it matches
+      (maphash
+       (lambda (cache-key cache-entry)
+        (setq arg (car cache-key))
+        (when (dictree--prefix-p arg key)
+          (setq reverse (cdr cache-key))
+           (cond
+            ;; if updating dirty cache entries...
+            ((eq (dictree-cache-update-policy dict) 'synchronize)
+             (dictree--synchronize-completion-cache
+              dict cache-entry arg reverse key newdata deleted))
+            ;; if deleting dirty cache entries...
+            (t (remhash (cons arg reverse) cache)))))
+       cache))
+
+    ;; synchronize the ranked completion cache, if it exists
+    (when (dictree-complete-ranked-cache-threshold dict)
+      (setq cache (dictree-complete-ranked-cache dict))
+      ;; check every cache entry to see if it matches
+      (maphash
+       (lambda (cache-key cache-entry)
+        (setq arg (car cache-key))
+        (when (dictree--prefix-p arg key)
+          (setq reverse (cdr cache-key))
+           (cond
+            ;; if updating dirty cache entries...
+            ((eq (dictree-cache-update-policy dict) 'synchronize)
+             (dictree--synchronize-ranked-completion-cache
+              dict cache-entry arg reverse key newdata deleted))
+            ;; if deleting dirty cache entries...
+            (t (remhash (cons arg reverse) cache)))))
+       cache))
+
+    ;; synchronize the regexp cache, if it exists
+    (when (dictree-regexp-cache-threshold dict)
+      (setq cache (dictree--regexp-cache dict))
+      ;; check every cache entry to see if it matches
+      (maphash
+       (lambda (cache-key cache-entry)
+        (setq arg (car cache-key))
+        (when (tNFA-regexp-match
+               arg key :test (dictree--comparison-function dict))
+          (setq reverse (cdr cache-key))
+          (cond
+           ;; if updating dirty cache entries...
+           ((eq (dictree-cache-update-policy dict) 'synchronize)
+            (dictree--synchronize-regexp-cache
+             dict cache-entry arg reverse key newdata deleted))
+           ;; if deleting dirty cache entries...
+           (t (remhash (cons arg reverse) cache)))))
+       cache))
+
+    ;; synchronize the ranked regexp cache, if it exists
+    (when (dictree-regexp-ranked-cache-threshold dict)
+      (setq cache (dictree-regexp-ranked-cache dict))
+      ;; have to check every cache entry to see if it matches
+      (maphash
+       (lambda (cache-key cache-entry)
+        (setq arg (car cache-key))
+        (when (tNFA-regexp-match
+               arg key :test (dictree--comparison-function dict))
+          (setq reverse (cdr cache-key))
+          (cond
+           ;; if updating dirty cache entries...
+           ((eq (dictree-cache-update-policy dict) 'synchronize)
+            (dictree--synchronize-ranked-regexp-cache
+             dict cache-entry arg reverse key newdata deleted))
+           ;; if deleting dirty cache entries...
+           (t (remhash (cons arg reverse) cache)))))
+       cache))
+    ))
+
+
+
+(defun dictree--synchronize-completion-cache
+  (dict cache-entry arg reverse key newdata deleted)
+  ;; Synchronize DICT's completion CACHE-ENTRY for ARG and REVERSE, for
+  ;; a KEY whose data was either updated to NEWDATA or DELETED.
+  (let* ((completions (dictree--cache-results cache-entry))
+        (maxnum (dictree--cache-maxnum cache-entry))
+        (cmpl (assoc key completions)))
+    ;; if key was...
+    (cond
+     ;; deleted and in cached result: remove cache entry and re-run the
+     ;; same completion to update the cache
+     ((and deleted cmpl)
+      (remhash (cons arg reverse) (dictree-complete-cache dict))
+      (dictree-complete dict arg nil maxnum reverse))
+     ;; modified and not in cached result: merge it into the completion
+     ;; list, retaining only the first maxnum
+     ((and (not deleted) (not cmpl))
+      (dictree--cache-set-completions
+       cache-entry
+       (dictree--merge
+       (list (cons key newdata)) completions
+       `(lambda (a b)
+          (,(trie-construct-sortfun
+             (dictree-comparison-function dict))
+           (car a) (car b)))
+       (when (dictree--meta-dict-p dict)
+         (dictree--meta-dict-combfun dict))
+       maxnum)))
+     ;; modified and in the cached result: update the associated data if
+     ;; dict is a meta-dictionary (this is done automatically for a
+     ;; normal dict)
+     ((and (not deleted) cmpl (dictree--meta-dict-p dict))
+      (setcdr cmpl newdata))
+     ;; deleted and not in cached result: requires no action
+     )))
+
+
+
+(defun dictree--synchronize-ranked-completion-cache
+  (dict cache-entry arg reverse key newdata deleted)
+  ;; Synchronize DICT's ranked completion CACHE-ENTRY for ARG and
+  ;; REVERSE, for a KEY whose data was either updated to NEWDATA or
+  ;; DELETED.
+  (let* ((completions (dictree--cache-results cache-entry))
+        (maxnum (dictree--cache-maxnum cache-entry))
+        (cmpl (assoc key completions))
+        (cache (dictree--complete-ranked-cache dict)))
+    ;; if key was...
+    (cond
+     ;; deleted and in cached result: remove cache entry and re-run the
+     ;; same query to update the cache
+     ((and deleted cmpl)
+      (remhash (cons arg reverse) cache)
+      (dictree-complete dict arg 'ranked maxnum reverse))
+     ;; modified and not in cached result: merge it into the completion
+     ;; list, retaining only the first maxnum
+     ((and (not deleted) (not cmpl))
+      (dictree--cache-set-completions
+       cache-entry
+       (dictree--merge
+       (list (cons key newdata)) completions
+       (dictree-rankfun dict)
+       (when (dictree--meta-dict-p dict)
+         (dictree--meta-dict-combfun dict))
+       maxnum)))
+     ;; modified and in the cached result: update the associated data if
+     ;; dict is a meta-dictionary (this is done automatically for a
+     ;; normal dict), re-sort, and if key is now at end of list re-run
+     ;; the same query to update the cache
+     ((and (not deleted) cmpl)
+      (when (dictree--meta-dict-p dict) (setcdr cmpl newdata))
+      (dictree--cache-set-completions
+       cache-entry (sort completions (dictree-rankfun dict)))
+      (when (equal key (car (last completions)))
+       (remhash (cons arg reverse) cache)
+       (dictree-complete dict arg 'ranked maxnum reverse)))
+     ;; deleted and not in cached result: requires no action
+     )))
+
+
+(defun dictree--synchronize-regexp-cache
+  (dict cache-entry arg reverse key newdata deleted)
+  ;; Synchronize DICT's completion CACHE-ENTRY for ARG and REVERSE, for
+  ;; a KEY whose data was either updated to NEWDATA or DELETED.
+  (let* ((completions (dictree--cache-results cache-entry))
+        (maxnum (dictree--cache-maxnum cache-entry))
+        group-data
+        (cmpl (catch 'found
+                (dolist (c completions)
+                  (if (and (listp (car c))
+                           (or (stringp (caar c))
+                               (vectorp (caar c))
+                               (listp (caar c))))
+                      (when (equal key (caar c)) (throw 'found c))
+                    (when (equal key (car c)) (throw 'found c)))))))
+    ;; if key was...
+    (cond
+     ;; deleted and in cached result: remove cache entry and re-run the
+     ;; same completion to update the cache
+     ((and deleted cmpl)
+      (remhash (cons arg reverse) (dictree-complete-cache dict))
+      (dictree-regexp-search dict arg nil maxnum reverse))
+     ;; modified and not in cached result: merge it into the completion
+     ;; list, retaining only the first maxnum
+     ((and (not deleted) (not cmpl))
+      (save-match-data
+       (set-match-data nil)
+       (tNFA-regexp-match arg key
+                          :test (dictree--comparison-function dict))
+       (when (setq group-data (nthcdr 2 (match-data)))
+         (setq key (cons key group-data))))
+      (dictree--cache-set-completions
+       cache-entry
+       (dictree--merge
+       (list (cons key newdata)) completions
+       `(lambda (a b)
+          (,(trie-construct-sortfun (dictree-comparison-function dict))
+           ,(if group-data '(caar a) '(car a))
+           ,(if group-data '(caar b) '(car b))))
+       (when (dictree--meta-dict-p dict)
+         (dictree--meta-dict-combfun dict))
+       maxnum)))
+     ;; modified and in the cached result: update the associated data if
+     ;; dict is a meta-dictionary (this is done automatically for a
+     ;; normal dict)
+     ((and (not deleted) cmpl (dictree--meta-dict-p dict))
+      (setcdr cmpl newdata))
+     ;; deleted and not in cached result: requires no action
+     )))
+
+
+
+(defun dictree--synchronize-ranked-regexp-cache
+  (dict cache-entry arg reverse key newdata deleted)
+  ;; Synchronize DICT's ranked regexp CACHE-ENTRY for ARG and REVERSE,
+  ;; for a KEY whose data was either updated to NEWDATA or DELETED.
+  (let ((completions (dictree--cache-results cache-entry))
+       (maxnum (dictree--cache-maxnum cache-entry))
+       (cache (dictree--regexp-ranked-cache dict))
+       cmpl group-data)
+    (setq group-data (and (listp (caar completions))
+                         (or (stringp (caar (car completions)))
+                             (vectorp (caar (car completions)))
+                             (listp (caar (car completions))))))
+    (setq cmpl
+         (catch 'found
+           (dolist (c completions)
+             (if group-data
+                 (when (equal key (caar c)) (throw 'found c))
+               (when (equal key (car c)) (throw 'found c))))))
+    ;; if key was...
+    (cond
+     ;; deleted and in cached result: remove cache entry and re-run the
+     ;; same query to update the cache
+     ((and deleted cmpl)
+      (remhash (cons arg reverse) cache)
+      (dictree-regexp-search dict arg 'ranked maxnum reverse))
+     ;; modified and not in cached result: merge it into the completion
+     ;; list, retaining only the first maxnum
+     ((and (not deleted) (not cmpl))
+      (save-match-data
+       (set-match-data nil)
+       (tNFA-regexp-match arg key
+                          :test (dictree--comparison-function dict))
+       (when (setq group-data (nthcdr 2 (match-data)))
+         (setq key (cons key group-data))))
+      (dictree--cache-set-completions
+       cache-entry
+       (dictree--merge
+       (list (cons key newdata)) completions
+       (dictree-rankfun dict)
+       (when (dictree--meta-dict-p dict)
+         (dictree--meta-dict-combfun dict))
+       maxnum)))
+     ;; modified and in the cached result: update the associated data if
+     ;; dict is a meta-dictionary (this is done automatically for a
+     ;; normal dict), re-sort, and if key is now at end of list re-run
+     ;; the same query to update the cache
+     ((and (not deleted) cmpl)
+      (when (dictree--meta-dict-p dict) (setcdr cmpl newdata))
+      (dictree--cache-set-completions
+       cache-entry
+       (sort completions
+            (if group-data
+                `(lambda (a b)
+                   (,(dictree-rankfun dict)
+                    (cons (caar a) (cdr a))
+                    (cons (caar b) (cdr b))))
+              (dictree-rankfun dict))))
+      (when (equal key (car (last completions)))
+       (remhash (cons arg reverse) cache)
+       (dictree-complete dict arg 'ranked maxnum reverse)))
+     ;; deleted and not in cached result: requires no action
+     )))
+
+
+(defun dictree-clear-caches (dict)
+  "Clear all DICT's query caches."
+  (interactive (list (read-dict "Dictionary: ")))
+  (when (and (called-interactively-p 'any) (symbolp dict))
+    (setq dict (eval dict)))
+  (dolist (cachefun '(dictree-lookup-cache
+                     dictree-complete-cache
+                     dictree-complete-ranked-cache
+                     dictree-regexp-cache
+                     dictree-regexp-ranked-cache))
+    (when (funcall cachefun dict)
+      (clrhash (funcall cachefun dict))))
+  (when (called-interactively-p 'interactive)
+    (message "Cleared caches for dictionary %s" (dictree-name dict))))
+
+
+
+
+;; ----------------------------------------------------------------
+;;                        Retrieving data
+
+(defun dictree-member (dict key &optional nilflag)
+  "Return the data associated with KEY in dictionary DICT,
+or nil if KEY is not in the dictionary.
+
+Optional argument NILFLAG specifies a value to return instead of
+nil if KEY does not exist in TREE. This allows a non-existent KEY
+to be distinguished from an element with a null association. (See
+also `dictree-member-p' for testing existence alone.)"
+  (let* ((data (dictree--lookup dict key nilflag)))
+    (if (eq data nilflag)
+       nilflag
+      (dictree--cell-data data))))
+
+(defalias 'dictree-lookup 'dictree-member)
+
+(defun dictree-member-p (dict key)
+  "Return t if KEY exists in DICT, nil otherwise."
+  (let ((flag '(nil)))
+    (not (eq flag (dictree-member dict key flag)))))
+
+
+(defun dictree--lookup (dict key nilflag)
+  ;; Return association of KEY in DICT, or NILFLAG if KEY does not
+  ;; exist. Does not do any data/meta-data unwrapping
+
+  (let* ((flag '(nil))
+        (data flag)
+        time)
+    ;; if KEY is in the cache, then we're done
+    (unless (and (dictree-lookup-cache dict)
+                (setq data (gethash key (dictree--lookup-cache dict))))
+
+      ;; otherwise, we have to look in the dictionary itself...
+      (cond
+       ;; if DICT is a meta-dict, look in its constituent dictionaries
+       ((dictree--meta-dict-p dict)
+       (let (newdata (newflag '(nil)))
+         ;; time the lookup for caching
+         (setq time (float-time))
+         ;; look in each constituent dictionary in turn
+         (dolist (dic (dictree--meta-dict-dictlist dict))
+           (setq newdata (dictree--lookup dic key newflag))
+           ;; skip dictionary if it doesn't contain KEY
+           (unless (eq newdata newflag)
+             ;; if we haven't found KEY before, we have now!
+             (if (eq data flag) (setq data newdata)
+               ;; otherwise, combine the previous data with the new
+               ;; data
+               (setq data (funcall (dictree--meta-dict-combfun dict)
+                                   data newdata)))))
+         (setq time (- (float-time) time))))
+
+       ;; otherwise, DICT is a normal dictionary, so look in it's trie
+       (t
+       ;; time the lookup for caching
+       (setq time (float-time))
+       (setq data (trie-member (dictree--trie dict) key flag))
+       (setq time (- (float-time) time))))
+
+      ;; if lookup found something, and we're above the lookup
+      ;; cache-threshold, cache the result
+      (when (and (not (eq data flag))
+                (dictree--above-cache-threshold-p
+                 time (length key) (dictree-cache-policy dict)
+                 (dictree-lookup-cache-threshold dict) 'long-keys))
+       (setf (dictree-modified dict) t)
+       (puthash key data (dictree-lookup-cache dict))))
+
+    ;; return the desired data
+    (if (eq data flag) nilflag data)))
+
+
+
+;; ----------------------------------------------------------------
+;;                 Getting and setting meta-data
+
+(defun dictree-put-property (dict key property value)
+  "Set PROPERTY for KEY in dictionary DICT.
+PROPERTY should be a symbol. Returns VALUE if successful, nil if
+KEY was not found in DICT.
+
+Note that if DICT is a meta-dictionary, then this will set KEY's
+PROPERTY to VALUE in *all* its constituent dictionaries.
+
+Unlike the data associated with a key (cf. `dictree-insert'),
+properties are not included in the results of queries on the
+dictionary \(`dictree-lookup', `dictree-complete',
+`dictree-complete-ordered'\), nor do they affect the outcome of
+any of the queries. They merely serves to tag a key with some
+additional information, and can only be retrieved using
+`dictree-get-property'."
+
+  ;; sort out arguments
+  (and (symbolp dict) (setq dict (eval dict)))
+  (cond
+   ;; set PROPERTY for KEY in all constituent dicts of a meta-dict
+   ((dictree--meta-dict-p dict)
+    (warn "Setting %s property for key %s in all constituent\
+ dictionaries of meta-dicttionary %s" property key (dictree-name dict))
+    (setf (dictree-modified dict) t)
+    (let (dictree--put-property-ret)
+      (mapc (lambda (dic k p v)
+             (setq dictree--put-property-ret
+                   (or dictree--put-property-ret
+                       (dictree-put-property dic k p v))))
+           (dictree--meta-dict-dictlist dict))
+      ;; return VALUE if KEY was found in at least one constituent dict
+      dictree--put-property-ret))
+   (t  ;; set PROPERTY for KEY in normal dict
+    (let ((cell (trie-member (dictree--trie dict) key)))
+      (when cell
+       (setf (dictree-modified dict) t)
+       (setf (dictree--cell-plist cell)
+             (plist-put (dictree--cell-plist cell) property value))
+       value)))  ; return VALUE
+   ))
+
+
+
+(defun dictree-delete-property (dict key property)
+  "Delete PROPERTY from KEY in dictionary DICT.
+Returns the new property list for KEY, with PROPERTY deleted.
+
+Setting PROPERTY to nil using `dictree-put-property' is not quite
+the same thing as deleting it, since null property values can
+still be detected by supplying the optional argument to
+`dictree-get-propery' (which see).
+
+Note that if DICT is a meta-dictionary, then this will delete
+KEY's PROPERTY in *all* its constituent dictionaries."
+  ;; sort out arguments
+  (and (symbolp dict) (setq dict (eval dict)))
+  (cond
+   ;; delete PROPERTY from KEY in all constituent dicts of a meta-dict
+   ((dictree--meta-dict-p dict)
+    (warn "Deleting %s property from key %s in all constituent\
+ dictionaries of meta-dicttionary %s" property key (dictree-name dict))
+    (setf (dictree-modified dict) t)
+    (mapcar (lambda (dic k p) (dictree-delete-property dic k p))
+           (dictree--meta-dict-dictlist dict)))
+   (t  ;; delete PROPERTY from KEY in normal dict
+    (let* ((cell (trie-member (dictree--trie dict) key))
+          plist tail tail)
+      (when (and cell
+                (setq tail
+                      (plist-member
+                       (setq plist (dictree--cell-plist cell))
+                       property)))
+       (setf (dictree-modified dict) t)
+       ;; delete property and value from plist
+       (setcdr tail (cddr tail))
+       (setq plist (delq property plist))
+       (setf (dictree--cell-plist cell) plist))))
+   ))
+
+
+
+(defun dictree-get-property (dict key property &optional nilflag)
+  "Get the value of PROPERTY for KEY in dictionary DICT,
+or return nil if KEY is not in the dictionary.
+
+Optional argument NILFLAG specifies a value to return instead of
+nil if KEY does not exist in TREE. This allows a non-existent KEY
+to be distinguished from a key for which PROPERTY is not
+set. (See also `dictree-member-p' for testing existence alone.)"
+  (let ((cell (dictree--lookup dict key nilflag)))
+    (unless (eq cell nilflag)
+      (plist-get (dictree--cell-plist cell) property))))
+
+
+
+
+;; ----------------------------------------------------------------
+;;                        Mapping functions
+
+(defun dictree-mapc (function dict &optional type reverse)
+  "Apply FUNCTION to all entries in dictionary DICT,
+for side-effects only.
+
+FUNCTION will be passed two arguments: a key of type
+TYPE ('string, 'vector, or 'list, defaulting to 'vector) from the
+dictionary, and the data associated with that key. The dictionary
+entries will be traversed in \"lexical\" order, i.e. the order
+defined by the dictionary's comparison function (cf.
+`dictree-create').
+
+If TYPE is 'string, it must be possible to apply the function
+`string' to the elements of sequences stored in DICT.
+
+FUNCTION is applied in ascending order, or descending order if
+REVERSE is non-nil.
+
+Note: to avoid nasty dynamic scoping bugs, FUNCTION must *not*
+bind any variables with names commencing \"--\"."
+
+  ;; "rename" FUNCTION to something hopefully unique to lessen the
+  ;; likelihood of dynamic scoping bugs caused by a supplied function
+  ;; binding a variable with the same name as one of the arguments
+  (let ((--dictree-mapc--function function))
+    (dictree--mapc
+     (lambda (key data plist)
+       (funcall --dictree-mapc--function key data))
+     dict type reverse)))
+
+
+
+(defun dictree--mapc (function dict &optional type reverse)
+  ;; Like `dictree-mapc', but FUNCTION is passed three arguments: the
+  ;; key, the data, and the property list, instead of just key and data.
+
+  ;; try to avoid dynamic binding bugs
+  (let ((--dictree--mapc--function function))
+    (if (dictree--meta-dict-p dict)
+       ;; for a meta-dict, use a dictree-stack
+       (let ((stack (dictree-stack dict))
+             entry)
+         (while (setq entry (dictree--stack-pop stack))
+           (funcall --dictree--mapc--function
+                    (car entry)
+                    (dictree--cell-data (cdr entry))
+                    (dictree--cell-plist (cdr entry)))))
+      ;; for a normal dictionary, map the function over its trie
+      (trie-mapc
+       (lambda (key cell)
+        (funcall --dictree--mapc--function
+                 key
+                 (dictree--cell-data cell)
+                 (dictree--cell-plist cell)))
+       (dictree--trie dict)
+       type reverse)
+      )))
+
+
+
+(defun dictree-mapf (function combinator dict &optional type reverse)
+  "Apply FUNCTION to all entries in dictionary DICT,
+and combine the results using COMBINATOR.
+
+FUNCTION should take two arguments: a key sequence from the
+dictionary and its associated data.
+
+Optional argument TYPE (one of the symbols vector, lisp or
+string; defaults to vector) sets the type of sequence passed to
+FUNCTION. If TYPE is 'string, it must be possible to apply the
+function `string' to the individual elements of key sequences
+stored in DICT.
+
+The FUNCTION will be applied and the results combined in
+asscending \"lexical\" order (i.e. the order defined by the
+dictionary's comparison function; cf. `dictree-create'), or
+descending order if REVERSE is non-nil.
+
+Note: to avoid nasty dynamic scoping bugs, FUNCTION and
+COMBINATOR must *not* bind any variables with names
+commencing \"--\"."
+
+  ;; try to avoid dynamic scoping bugs
+  (let ((--dictree-mapf--function function)
+       (--dictree-mapf--combinator combinator))
+
+    ;; for a normal dictionary, map the function over its trie
+    (if (not (dictree--meta-dict-p dict))
+       (trie-mapf
+        `(lambda (key data)
+           (,--dictree-mapf--function key (dictree--cell-data data)))
+        --dictree-mapf--combinator (dictree--trie dict) type reverse)
+
+      ;; for a meta-dict, use a dictree-stack
+      (let ((--dictree-mapf--stack (dictree-stack dict))
+           --dictree-mapf--entry
+           --dictree-mapf--accumulate)
+       (while (setq --dictree-mapf--entry
+                    (dictree-stack-pop --dictree-mapf--stack))
+         (setq --dictree-mapf--accumulate
+               (funcall --dictree-mapf--combinator
+                        (funcall --dictree-mapf--function
+                                 (car --dictree-mapf--entry)
+                                 (cdr --dictree-mapf--entry))
+                        --dictree-mapf--accumulate)))
+       --dictree-mapf--accumulate))))
+
+
+
+(defun dictree-mapcar (function dict &optional type reverse)
+  "Apply FUNCTION to all entries in dictionary DICT,
+and make a list of the results.
+
+FUNCTION should take two arguments: a key sequence from the
+dictionary and its associated data.
+
+Optional argument TYPE (one of the symbols vector, lisp or
+string; defaults to vector) sets the type of sequence passed to
+FUNCTION. If TYPE is 'string, it must be possible to apply the
+function `string' to the individual elements of key sequences
+stored in DICT.
+
+The FUNCTION will be applied and the results combined in
+asscending \"lexical\" order \(i.e. the order defined by the
+dictionary's comparison function; cf. `dictree-create'\), or
+descending order if REVERSE is non-nil.
+
+Note that if you don't care about the order in which FUNCTION is
+applied, just that the resulting list is in the correct order,
+then
+
+  (trie-mapf function 'cons trie type (not reverse))
+
+is more efficient.
+
+Note: to avoid nasty dynamic scoping bugs, FUNCTION must *not*
+bind any variables with names commencing \"--\"."
+  (nreverse (dictree-mapf function 'cons dict type)))
+
+
+
+(defun dictree-size (dict)
+  "Return the number of entries in dictionary DICT.
+Interactively, DICT is read from the mini-buffer."
+  (interactive (list (read-dict "Dictionary: ")))
+  (when (and (called-interactively-p 'any) (symbolp dict))
+    (setq dict (eval dict)))
+  (let ((count 0))
+    (dictree-mapc (lambda (&rest dummy) (incf count)) dict)
+    (when (called-interactively-p 'interactive)
+      (message "Dictionary %s contains %d entries"
+              (dictree--name dict) count))
+    count))
+
+
+
+;; ----------------------------------------------------------------
+;;                        Using dictrees as stacks
+
+;; A dictree--meta-stack is the meta-dict version of a dictree-stack
+;; (the ordinary version is just a single trie-stack). It consists of a
+;; heap of trie-stacks for its constituent tries, where the heap order
+;; is the usual lexical order over the keys at the top of the
+;; trie-stacks.
+
+(defstruct
+  (dictree--meta-stack
+   (:constructor nil)
+   (:constructor dictree--meta-stack-create
+                (dict &optional (type 'vector) reverse
+                 &aux
+                 (combfun (dictree--meta-dict-combfun dict))
+                 (sortfun (trie-construct-sortfun
+                           (dictree-comparison-function dict)))
+                 (heap (heap-create
+                        (dictree--construct-meta-stack-heapfun sortfun)
+                        (length (dictree--trielist dict))))
+                 (pushed '())
+                 (dummy (mapc
+                         (lambda (dic)
+                           (heap-add
+                            heap (trie-stack dic type reverse)))
+                         (dictree--trielist dict)))))
+   (:constructor dictree--complete-meta-stack-create
+                (dict prefix &optional reverse
+                 &aux
+                 (combfun (dictree--meta-dict-combfun dict))
+                 (sortfun (trie-construct-sortfun
+                           (dictree-comparison-function dict)))
+                 (heap (heap-create
+                        (dictree--construct-meta-stack-heapfun
+                         sortfun reverse)
+                        (length (dictree--trielist dict))))
+                 (pushed '())
+                 (dummy (mapc
+                         (lambda (trie)
+                           (let ((stack (trie-complete-stack
+                                         trie prefix reverse)))
+                             (unless (trie-stack-empty-p stack)
+                               (heap-add heap stack))))
+                         (dictree--trielist dict)))))
+      (:constructor dictree--regexp-meta-stack-create
+                (dict regexp &optional reverse
+                 &aux
+                 (combfun (dictree--meta-dict-combfun dict))
+                 (sortfun (trie-construct-sortfun
+                           (dictree-comparison-function dict)))
+                 (heap (heap-create
+                        (dictree--construct-meta-stack-heapfun
+                         sortfun reverse)
+                        (length (dictree--trielist dict))))
+                 (pushed '())
+                 (dummy (mapc
+                         (lambda (trie)
+                           (let ((stack (trie-regexp-stack
+                                         trie regexp reverse)))
+                             (unless (trie-stack-empty-p stack)
+                               (heap-add heap stack))))
+                         (dictree--trielist dict)))))
+   (:copier nil))
+  combfun sortfun heap pushed)
+
+
+
+(defun dictree--construct-meta-stack-heapfun (sortfun &optional reverse)
+  ;; Wrap SORTFUN, which sorts keys, so it can act on
+  ;; dictree--meta-stack elements.
+  (if reverse
+      `(lambda (b a) (,sortfun (car (dictree-stack-first a))
+                              (car (dictree-stack-first b))))
+    `(lambda (a b) (,sortfun (car (dictree-stack-first a))
+                            (car (dictree-stack-first b))))))
+
+
+(defun dictree-stack (dict &optional type reverse)
+  "Create an object that allows DICT to be accessed as a stack.
+
+The stack is sorted in \"lexical\" order, i.e. the order defined
+by the DICT's comparison function, or in reverse order if REVERSE
+is non-nil. Calling `dictree-stack-pop' pops the top element (a
+key and its associated data) from the stack.
+
+Optional argument TYPE (one of the symbols vector, lisp or
+string) sets the type of sequence used for the keys.
+
+Note that any modification to DICT *immediately* invalidates all
+dictree-stacks created before the modification (in particular,
+calling `dictree-stack-pop' will give unpredictable results).
+
+Operations on dictree-stacks are significantly more efficient
+than constructing a real stack from the dictionary and using
+standard stack functions. As such, they can be useful in
+implementing efficient algorithms on dictionaries. However, in
+cases where mapping functions `dictree-mapc', `dictree-mapcar' or
+`dictree-mapf' would be sufficient, it is better to use one of
+those instead."
+  (if (dictree--meta-dict-p dict)
+      (dictree--meta-stack-create dict type reverse)
+    (trie-stack (dictree--trie dict) type reverse)))
+
+
+(defun dictree-complete-stack (dict prefix &optional reverse)
+  "Return an object that allows completions of PREFIX to be accessed
+as if they were a stack.
+
+The stack is sorted in \"lexical\" order, i.e. the order defined
+by DICT's comparison function, or in reverse order if REVERSE is
+non-nil. Calling `dictree-stack-pop' pops the top element (a key
+and its associated data) from the stack.
+
+PREFIX must be a sequence (vector, list or string) that forms the
+initial part of a TRIE key. (If PREFIX is a string, it must be
+possible to apply `string' to individual elements of TRIE keys.)
+The completions returned in the alist will be sequences of the
+same type as KEY. If PREFIX is a list of sequences, completions
+of all sequences in the list are included in the stack. All
+sequences in the list must be of the same type.
+
+Note that any modification to DICT *immediately* invalidates all
+trie-stacks created before the modification (in particular,
+calling `dictree-stack-pop' will give unpredictable results).
+
+Operations on dictree-stacks are significantly more efficient
+than constructing a real stack from completions of PREFIX in DICT
+and using standard stack functions. As such, they can be useful
+in implementing efficient algorithms on tries. However, in cases
+where `dictree-complete' or `dictree-complete-ordered' is
+sufficient, it is better to use one of those instead."
+  (if (dictree--meta-dict-p dict)
+      (dictree--complete-meta-stack-create dict prefix reverse)
+    (trie-complete-stack (dictree--trie dict) prefix reverse)))
+
+
+(defun dictree-regexp-stack (dict regexp &optional reverse)
+  "Return an object that allows REGEXP matches to be accessed
+as if they were a stack.
+
+The stack is sorted in \"lexical\" order, i.e. the order defined
+by DICT's comparison function, or in reverse order if REVERSE is
+non-nil. Calling `dictree-stack-pop' pops the top element (a key
+and its associated data) from the stack.
+
+REGEXP is a regular expression, but it need not necessarily be a
+string. It must be a sequence (vector, list of string) whose
+elements are either elements of the same type as elements of the
+trie keys (which behave as literals in the regexp), or any of the
+usual regexp special characters and backslash constructs. If
+REGEXP is a string, it must be possible to apply `string' to
+individual elements of the keys stored in the trie. The matches
+returned in the alist will be sequences of the same type as KEY.
+
+Back-references and non-greedy postfix operators are *not*
+supported, and the matches are always anchored, so `$' and `^'
+lose their special meanings.
+
+If the regexp contains any non-shy grouping constructs, subgroup
+match data is included in the results. In this case, the car of
+each match is no longer just a key. Instead, it is a list whose
+first element is the matching key, and whose remaining elements
+are cons cells whose cars and cdrs give the start and end indices
+of the elements that matched the corresponding groups, in order.
+
+Note that any modification to DICT *immediately* invalidates all
+trie-stacks created before the modification (in particular,
+calling `dictree-stack-pop' will give unpredictable results).
+
+Operations on dictree-stacks are significantly more efficient
+than constructing a real stack from completions of PREFIX in DICT
+and using standard stack functions. As such, they can be useful
+in implementing efficient algorithms on tries. However, in cases
+where `dictree-complete' or `dictree-complete-ordered' is
+sufficient, it is better to use one of those instead."
+  (if (dictree--meta-dict-p dict)
+      (dictree--regexp-meta-stack-create dict regexp reverse)
+    (trie-regexp-stack (dictree--trie dict) regexp reverse)))
+
+
+(defun dictree-stack-pop (dictree-stack)
+  "Pop the first element from the DICTREE-STACK.
+Returns nil if the stack is empty."
+  (cond
+   ;; if elements have been pushed onto a dict stack, pop those first
+   ;; FIXME: shouldn't be using internal trie functions!
+   ((and (trie-stack-p dictree-stack)
+        (trie--stack-pushed dictree-stack))
+    (trie-stack-pop dictree-stack))
+   ;; if elements have been pushed onto a meta-dict stack, pop those
+   ;; first
+   ((and (dictree--meta-stack-p dictree-stack)
+        (dictree--meta-stack-pushed dictree-stack))
+    (pop (dictree--meta-stack-pushed dictree-stack)))
+   ;; otherwise, pop first element from dictree-stack
+   (t (let ((popped (dictree--stack-pop dictree-stack)))
+       (when popped
+         (cons (car popped) (dictree--cell-data (cdr popped))))))
+   ))
+
+
+(defun dictree-stack-push (element dictree-stack)
+  "Push ELEMENT onto DICTREE-STACK."
+  (if (trie-stack-p dictree-stack)
+      ;; normal dict
+      (trie-stack-push element dictree-stack)
+    ;; meta-dict
+    (push element (dictree--meta-stack-pushed dictree-stack))))
+
+
+(defun dictree-stack-first (dictree-stack)
+  "Return the first element from DICTREE-STACK, without removing it.
+Returns nil if the stack is empty."
+  ;; if elements have been pushed onto the stack, return first of those
+  (if (and (dictree--meta-stack-p dictree-stack)
+          (dictree--meta-stack-pushed dictree-stack))
+      (car (dictree--meta-stack-pushed dictree-stack))
+    ;; otherwise, return first element from dictree-stack
+    (let ((first (dictree--stack-first dictree-stack)))
+      (cons (car first) (dictree--cell-data (cdr first))))))
+
+
+(defun dictree-stack-empty-p (dictree-stack)
+  "Return t if DICTREE-STACK is empty, nil otherwise."
+  (if (trie-stack-p dictree-stack)
+      ;; normal dict
+      (trie-stack-empty-p dictree-stack)
+    ;; meta-dict
+    (and (heap-empty (dictree--meta-stack-heap dictree-stack))
+        (null (dictree--meta-stack-pushed dictree-stack)))))
+
+
+(defun dictree--stack-first (dictree-stack)
+  "Return the first element from DICTREE-STACK, without removing it.
+Returns nil if the stack is empty."
+  (if (trie-stack-p dictree-stack)
+      ;; normal dict
+      (trie-stack-first dictree-stack)
+    ;; meta-dict
+    (if (dictree--meta-stack-pushed dictree-stack)
+       ;; pushed element
+       (car (dictree--meta-stack-pushed dictree-stack))
+      ;; dictree-stack element
+      (dictree--stack-first
+       (heap-root (dictree--meta-stack-heap dictree-stack))))))
+
+
+(defun dictree--stack-pop (dictree-stack)
+  ;; Pop the raw first element from DICTREE-STACK. Returns nil if the
+  ;; stack is empty.
+
+  ;; dictree-stack for normal dictionaries is a trie-stack
+  (if (trie-stack-p dictree-stack)
+      (trie-stack-pop dictree-stack)
+
+    ;; meta-dictionary dictree-stack...more work!
+    ;; if elements have been pushed onto meta-dict stack, pop those
+    ;; first
+    (if (dictree--meta-stack-pushed dictree-stack)
+       (pop (dictree--meta-stack-pushed dictree-stack))
+      ;; otherwise...
+      (let ((heap (dictree--meta-stack-heap dictree-stack))
+           (sortfun (dictree--meta-stack-sortfun dictree-stack))
+           stack curr next cell)
+       (unless (heap-empty heap)
+         ;; remove the first dictree-stack from the heap, pop it's
+         ;; first element, and add it back to the heap (note that it
+         ;; will almost certainly not end up at the root again)
+         (setq stack (heap-delete-root heap))
+         (setq curr (dictree--stack-pop stack))
+         (unless (dictree-stack-empty-p stack) (heap-add heap stack))
+         ;; peek at the first element of the stack now at the root of
+         ;; the heap
+         (unless (heap-empty heap)
+           (setq next (dictree--stack-first (heap-root heap)))
+           ;; repeat this as long as we keep finding elements with the
+           ;; same key, combining them together as we go
+           (when (dictree--meta-stack-combfun dictree-stack)
+             (while (and (null (funcall sortfun
+                                        (car curr) (car next)))
+                         (null (funcall sortfun
+                                        (car next) (car curr))))
+               (setq stack (heap-delete-root heap))
+               (setq next (dictree--stack-pop stack))
+               (setq curr
+                     (cons
+                      (car curr)
+                      (dictree--cell-create
+                       (funcall
+                        (dictree--meta-stack-combfun dictree-stack)
+                        (dictree--cell-data (cdr curr))
+                        (dictree--cell-data (cdr next)))
+                       (append (dictree--cell-plist (cdr curr))
+                               (dictree--cell-plist (cdr next))))))
+               (heap-add heap stack)
+               (setq next (dictree--stack-first (heap-root heap))))))
+         ;; return the combined dictionary element
+         curr)))))
+
+
+
+
+;; ----------------------------------------------------------------
+;;             Functions for building advanced queries
+
+(defun dictree--query
+  (dict arg cachefun cacheparamfun triefun stackfun
+   &optional rank-function maxnum reverse no-cache filter resultfun)
+  ;; Return results of querying DICT with argument ARG using TRIEFUN or
+  ;; STACKFUN. If result of calling CACHEPARAMFUN on DICT is non-nil,
+  ;; look first for cached result in cache returned by calling CACHEFUN
+  ;; on DICT, and cache result if query fulfils caching conditions. If
+  ;; RANK-FUNCTION is non-nil, return results ordered accordingly. If
+  ;; MAXNUM is an integer, only the first MAXNUM results will be
+  ;; returned. If REVERSE is non-nil, results are in reverse order. A
+  ;; non-nil NO-CACHE prevents caching of results, irrespective of
+  ;; DICT's cache settings. If supplied, only results that pass FILTER
+  ;; are included. A non-nil RESULTFUN is applied to results before
+  ;; adding them to final results list. Otherwise, an alist of key-data
+  ;; associations is returned.
+
+  ;; wrap DICT in a list if necessary
+  (when (dictree-p dict) (setq dict (list dict)))
+
+  (let (cache cacheparam completions cmpl cache-entry)
+    ;; map over all dictionaries in list
+    (dolist (dic dict)
+      (setq cache (funcall cachefun dic)
+           cacheparam (funcall cacheparamfun dic))
+      (cond
+       ;; If FILTER or custom RANK-FUNCTION was specified, look in trie
+       ;; since we don't cache custom searches. We pass a slightly
+       ;; redefined filter to `trie-complete' to deal with data
+       ;; wrapping.
+       ((or filter
+           (and rank-function
+                (not (eq rank-function (dictree-rank-function dic)))))
+       (setq cmpl
+             (dictree--do-query dic arg triefun stackfun
+                                (dictree--wrap-rankfun rank-function)
+                                maxnum reverse
+                                (when filter
+                                  (dictree--wrap-filter filter)))))
+
+
+       ;; if there's a cached result with enough completions, use it
+       ((and (setq cache-entry
+                  (if cacheparam
+                      (gethash (cons arg reverse) cache)
+                    nil))
+            (or (null (dictree--cache-maxnum cache-entry))
+                (and maxnum
+                     (<= maxnum (dictree--cache-maxnum cache-entry)))))
+       (setq cmpl (dictree--cache-results cache-entry))
+       ;; drop any excess completions
+       (when (and maxnum
+                  (or (null (dictree--cache-maxnum cache-entry))
+                      (> (dictree--cache-maxnum cache-entry) maxnum)))
+         (setcdr (nthcdr (1- maxnum) completions) nil)))
+
+
+       ;; if there was nothing useful in the cache, do query and time it
+       (t
+       (let (time)
+         (setq time (float-time))
+         (setq cmpl
+               (dictree--do-query
+                dic arg triefun stackfun
+                (when rank-function
+                  (dictree--wrap-rankfun rank-function))
+                maxnum reverse nil))
+         (setq time (- (float-time) time))
+         ;; if we're above the dictionary's completion cache threshold,
+         ;; cache the result
+         (when (and (not no-cache)
+                    (dictree--above-cache-threshold-p
+                     time (length arg) (dictree-cache-policy dic)
+                     cacheparam))
+           (setf (dictree-modified dic) t)
+           (puthash (cons arg reverse)
+                    (dictree--cache-create cmpl maxnum)
+                    cache)))))
+
+      ;; merge new completion into completions list
+      (setq completions
+           (dictree--merge
+            completions cmpl
+            (if rank-function
+                (dictree--wrap-rankfun rank-function)
+              `(lambda (a b)
+                 (,(trie-construct-sortfun
+                    (dictree-comparison-function (car dict)))
+                  (car a) (car b))))
+            nil maxnum)))
+
+    ;; return completions list, applying RESULTFUN is specified,
+    ;; otherwise just stripping meta-data
+    (mapcar
+     (if resultfun
+        (dictree--wrap-resultfun resultfun)
+       (lambda (el) (cons (car el) (dictree--cell-data (cdr el)))))
+     completions)))
+
+
+
+(defun dictree--do-query
+  (dict arg triefun stackfun &optional rank-function maxnum reverse filter)
+  ;; Return first MAXNUM results of querying DICT with ARG using TRIEFUN
+  ;; or STACKFUN that satisfy FILTER, ordered according to RANK-FUNCTION
+  ;; (defaulting to "lexical" order).
+
+  ;; for a meta-dict, use a dictree-stack
+  (if (dictree--meta-dict-p dict)
+      (let ((stack (funcall stackfun dict arg reverse))
+           (heap (when rank-function
+                   (heap-create   ; heap order is inverse of rank order
+                       (if reverse
+                           rank-function
+                         (lambda (a b)
+                           (not (funcall rank-function a b))))
+                       (1+ maxnum))))
+           (i 0) cmpl completions)
+       ;; pop MAXNUM completions from the stack
+       (while (and (or (null maxnum) (< i maxnum))
+                   (setq cmpl (dictree--stack-pop stack)))
+         ;; check completion passes FILTER
+         (when (or (null filter) (funcall filter cmpl))
+           (if rank-function
+               (heap-add heap cmpl)   ; for ranked query, add to heap
+             (push cmpl completions)) ; for lexical query, add to list
+           (incf i)))
+       (if (null rank-function)
+           ;; for lexical query, reverse and return completion list (we
+           ;; built it backwards)
+           (nreverse completions)
+         ;; for ranked query, pass rest of completions through heap
+         (while (setq cmpl (dictree--stack-pop stack))
+           (heap-add heap cmpl)
+           (heap-delete-root heap))
+         ;; extract completions from heap
+         (while (setq cmpl (heap-delete-root heap))
+           (push cmpl completions))
+         completions))  ; return completion list
+
+    ;; for a normal dict, call corresponding trie function on dict's
+    ;; trie. Note: could use a dictree-stack here too - would it be more
+    ;; efficient?
+    (funcall triefun
+            (dictree--trie dict) arg rank-function
+            maxnum reverse filter)))
+
+
+
+;; ----------------------------------------------------------------
+;;                        Completing
+
+(defun dictree-complete
+  (dict prefix
+   &optional rank-function maxnum reverse no-cache filter resultfun)
+  "Return an alist containing all completions of PREFIX in DICT
+along with their associated data, sorted according to
+RANK-FUNCTION (defaulting to \"lexical\" order, i.e. the order
+defined by the dictionary's comparison function,
+cf. `dictree-create'). Return nil if no completions are found.
+
+PREFIX can also be a list of sequences, in which case completions of
+all elements in the list are returned, merged together in a
+single sorted alist.
+
+DICT can also be a list of dictionaries, in which case
+completions are sought in all dictionaries in the list. (Note
+that if the same key appears in multiple dictionaries, the alist
+may contain the same key multiple times, each copy associated
+with the data from a different dictionary. If you want to combine
+identical keys, use a meta-dictionary; see
+`dictree-create-meta-dict'.)
+
+If optional argument RANK-FUNCTION is any non-nil value that is
+not a function, the completions are sorted according to the
+dictionary's rank-function (see `dictree-create'). Any non-nil
+value that *is* a function over-rides this. In that case,
+RANK-FUNCTION should accept two arguments, both cons cells. The
+car of each contains a sequence from the trie (of the same type
+as PREFIX), the cdr contains its associated data. The
+RANK-FUNCTION should return non-nil if first argument is ranked
+strictly higher than the second, nil otherwise.
+
+The optional integer argument MAXNUM limits the results to the
+first MAXNUM completions. The default is to return all matches.
+
+If the optional argument NO-CACHE is non-nil, it prevents caching
+of the result. Ignored for dictionaries that do not have
+completion caching enabled.
+
+The FILTER argument sets a filter function for the
+completions. For each potential completion, it is passed two
+arguments: the completion, and its associated data. If the filter
+function returns nil, the completion is not included in the
+results, and doesn't count towards MAXNUM.
+
+RESULTFUN defines a function used to process results before
+adding them to the final result list. If specified, it should
+accept two arguments: a key and its associated data. It's return
+value is what gets added to the final result list, instead of the
+default key-data cons cell."
+  ;; run completion query
+  (dictree--query
+   dict prefix
+   (if rank-function
+       'dictree-complete-ranked-cache
+     'dictree-complete-cache)
+   (if rank-function
+       'dictree-complete-ranked-cache-threshold
+     'dictree-complete-cache-threshold)
+   'trie-complete 'dictree-complete-stack
+   (when rank-function
+     (if (functionp rank-function)
+        rank-function
+       (dictree-rank-function (if (listp dict) (car dict) dict))))
+   maxnum reverse no-cache filter resultfun))
+
+
+
+(defun dictree-collection-function (dict string predicate all)
+  "Function for use in `try-completion', `all-completions',
+and `completing-read'. To complete from dictionary DICT, use the
+following as the COLLECTION argument of any of those functions:
+
+  (lambda (string predicate all)
+    (dictree-collection-function dict string predicate all))
+
+Note that PREDICATE will be called with two arguments: the
+completion, and its associated data."
+  (let ((completions
+        (dictree-complete dict string nil nil nil nil
+                          predicate (lambda (key data) key))))
+    (if all completions (try-completion "" completions))))
+
+
+
+;; ----------------------------------------------------------------
+;;                      Regexp search
+
+(defun dictree-regexp-search
+  (dict regexp
+   &optional rank-function maxnum reverse no-cache filter resultfun)
+  "Return an alist containing all matches for REGEXP in TRIE
+along with their associated data, in the order defined by
+RANKFUN, defauling to \"lexical\" order (i.e. the order defined
+by the trie's comparison function).  If REVERSE is non-nil, the
+completions are sorted in the reverse order. Returns nil if no
+completions are found.
+
+DICT can also be a list of dictionaries, in which case matches
+are sought in all dictionaries in the list. (Note that if the
+same key appears in multiple dictionaries, the alist may contain
+the same key multiple times, each copy associated with the data
+from a different dictionary. If you want to combine identical
+keys, use a meta-dictionary; see `dictree-create-meta-dict'.)
+
+REGEXP is a regular expression, but it need not necessarily be a
+string. It must be a sequence (vector, list of string) whose
+elements are either elements of the same type as elements of the
+trie keys (which behave as literals in the regexp), or any of the
+usual regexp special characters and backslash constructs. If
+REGEXP is a string, it must be possible to apply `string' to
+individual elements of the keys stored in the trie. The matches
+returned in the alist will be sequences of the same type as KEY.
+
+Only a subset of the full Emacs regular expression syntax is
+supported. There is no support for regexp constructs that are
+only meaningful for strings (character ranges and character
+classes inside character alternatives, and syntax-related
+backslash constructs). Back-references and non-greedy postfix
+operators are not supported, so `?' after a postfix operator
+loses its special meaning. Also, matches are always anchored, so
+`$' and `^' lose their special meanings (use `.*' at the
+beginning and end of the regexp to get an unanchored match).
+
+If the regexp contains any non-shy grouping constructs, subgroup
+match data is included in the results. In this case, the car of
+each match is no longer just a key. Instead, it is a list whose
+first element is the matching key, and whose remaining elements
+are cons cells whose cars and cdrs give the start and end indices
+of the elements that matched the corresponding groups, in order.
+
+If optional argument RANK-FUNCTION is any non-nil value that is
+not a function, the matches are sorted according to the
+dictionary's rank-function (see `dictree-create'). Any non-nil
+value that *is* a function over-rides this. In that case,
+RANK-FUNCTION should accept two arguments, both cons cells. The
+car of each contains a sequence from the dictionary (of the same
+type as PREFIX), the cdr contains its associated data. The
+RANK-FUNCTION should return non-nil if first argument is ranked
+strictly higher than the second, nil otherwise.
+
+The optional integer argument MAXNUM limits the results to the
+first MAXNUM matches. The default is to return all matches.
+
+If the optional argument NO-CACHE is non-nil, it prevents caching
+of the result. Ignored for dictionaries that do not have wildcard
+caching enabled.
+
+The FILTER argument sets a filter function for the matches. If
+supplied, it is called for each possible match with two
+arguments: the matching key, and its associated data. If the
+filter function returns nil, the match is not included in the
+results, and does not count towards MAXNUM.
+
+RESULTFUN defines a function used to process results before
+adding them to the final result list. If specified, it should
+accept two arguments: a key and its associated data. It's return
+value is what gets added to the final result list, instead of the
+default key-data cons cell."
+  ;; run regexp query
+  (dictree--query
+   dict regexp
+   (if rank-function
+       'dictree-regexp-ranked-cache
+     'dictree-regexp-cache)
+   (if rank-function
+       'dictree-regexp-ranked-cache-threshold
+     'dictree-regexp-cache-threshold)
+   'trie-regexp-search 'dictree-regexp-stack
+   (when rank-function
+     (if (functionp rank-function)
+        rank-function
+       (dictree-rank-function (if (listp dict) (car dict) dict))))
+   maxnum reverse no-cache filter resultfun))
+
+
+
+
+;; ----------------------------------------------------------------
+;;                    Persistent storage
+
+(defun dictree-save (dict &optional compilation)
+  "Save dictionary DICT to it's associated file.
+Use `dictree-write' to save to a different file.
+
+Optional argument COMPILATION determines whether to save the
+dictionary in compiled or uncompiled form. The default is to save
+both forms. See `dictree-write'.
+
+Interactively, DICT is read from the mini-buffer."
+  (interactive (list (read-dict "Dictionary: ")))
+  (when (and (called-interactively-p 'any) (symbolp dict))
+    (setq dict (eval dict)))
+
+  (let ((filename (dictree-filename dict)))
+    ;; if dictionary has no associated file, prompt for one
+    (unless (and filename (> (length filename) 0))
+      (setq filename
+           (read-file-name
+            (format "Save dictionary %s to file\
+ (leave blank to NOT save): "
+                    (dictree-name dict))
+            nil "")))
+
+    ;; if filename is blank, don't save
+    (if (string= filename "")
+       (message "Dictionary %s NOT saved" (dictree-name dict))
+      ;; otherwise write dictionary to file
+      (setf (dictree-filename dict) filename)
+      (dictree-write dict filename t compilation))))
+
+
+
+(defun dictree-write (dict &optional filename overwrite compilation)
+  "Write dictionary DICT to file FILENAME.
+Defaults to dictionary's current filename if FILENAME is not
+specified (like `dictree-save').
+
+If optional argument OVERWRITE is non-nil, no confirmation will
+be asked for before overwriting an existing file.
+
+The default is to create both compiled and uncompiled versions of
+the dictionary, with extensions .elc and .el respectively (if
+FILENAME has either of these extensions, they are stripped off
+before proceeding). The compiled version is always used in
+preference to the uncomplied version, as it loads
+faster. However, only the uncompiled version is portable between
+different Emacs versions.
+
+If optional argument COMPILATION is the symbol 'compiled, only
+the compiled version will be created, whereas if it is the symbol
+'uncompiled, only the uncompiled version will be created.
+
+Interactively, DICT and FILENAME are read from the mini-buffer,
+and OVERWRITE is the prefix argument."
+  (interactive (list (read-dict "Dictionary: ")
+                    (read-file-name "Write dictionary to file: "
+                                    nil "")
+                    current-prefix-arg))
+  (when (and (called-interactively-p 'any) (symbolp dict))
+    (setq dict (eval dict)))
+  ;; default to DICT's current file, if any
+  (when (or (null filename)
+           (and (called-interactively-p 'any) (string= filename "")))
+    (setq filename (dictree-filename dict)))
+  (if (null filename)
+      (progn
+       (message "Dictionary %s NOT written" (dictree-name dict))
+       nil)  ; indicate dictionary wasn't written
+
+    (let (dictname buff tmpfile)
+      ;; remove any .el(c) extension from filename
+      (cond
+       ((and (> (length filename) 3)
+            (string= (substring filename -3) ".el"))
+       (setq filename (substring filename 0 -3)))
+       ((and (> (length filename) 4)
+            (string= (substring filename -4) ".elc"))
+       (setq filename (substring filename 0 -4))))
+      ;; create saved dictionary name from filename
+      (setq dictname (file-name-nondirectory filename))
+
+      (save-excursion
+       ;; create a temporary file
+       (setq buff
+             (find-file-noselect
+              (setq tmpfile (make-temp-file dictname))))
+       (set-buffer buff)
+       ;; call the appropriate write function to write the dictionary code
+       (if (dictree--meta-dict-p dict)
+           (dictree--write-meta-dict-code dict dictname filename)
+         (dictree--write-dict-code dict dictname filename))
+       (save-buffer)
+       (kill-buffer buff))
+
+      ;; prompt to overwrite if necessary
+      (when (or overwrite
+               (and
+                (or (eq compilation 'compiled)
+                    (not (file-exists-p (concat filename ".el"))))
+                (or (eq compilation 'uncompiled)
+                    (not (file-exists-p (concat filename ".elc")))))
+               (y-or-n-p
+                (format "File %s already exists. Overwrite? "
+                        (concat filename ".el(c)"))))
+       (condition-case nil
+           (progn
+             ;; move the uncompiled version to its final destination
+             (unless (eq compilation 'compiled)
+               (copy-file tmpfile (concat filename ".el") t))
+             ;; byte-compile and move the compiled version to its final
+             ;; destination
+             (unless (eq compilation 'uncompiled)
+               (if (save-window-excursion
+                     (let ((byte-compile-disable-print-circle t)
+                           err)
+                       (setq err (byte-compile-file tmpfile))
+                       err))
+                   (rename-file (concat tmpfile ".elc")
+                                (concat filename ".elc") t)
+                 (error ""))))
+         (error "Error writing dictionary. Dictionary %s NOT saved"
+                dictname))
+
+       ;; if writing to a different name, unload dictionary under old
+       ;; name and reload it under new one
+       (setf (dictree-modified dict) nil)
+       (setf (dictree-filename dict) filename)
+       (unless (string= dictname (dictree-name dict))
+         (dictree-unload dict)
+         (dictree-load filename)))
+
+      (delete-file tmpfile)
+      (message "Dictionary %s saved to %s" dictname filename)
+      t)  ; return t to indicate dictionary was successfully saved
+    ))
+
+
+
+(defun dictree-save-modified (&optional dict ask compilation force
+                                       no-fail-query)
+  "Save all modified dictionaries that have their autosave flag set.
+Returns t if all dictionaries were successfully saved. Otherwise,
+inform the user about the dictionaries which failed to save
+properly, ask them whether they wish to continue anyway, and
+return t or nil accordingly.
+
+If optional argument DICT is a list of dictionaries or a single
+dictionary, only save those.
+
+If optional argument ASK is non-nil, ask for confirmation before
+saving.
+
+Optional argument COMPILATION determines whether to save the
+dictionaries in compiled or uncompiled form. The default is to
+save both forms. See `dictree-write'.
+
+If optional argument FORCE is non-nil, save modified dictionaries
+irrespective of their autosave flag.
+
+If optional argument NO-FAIL-QUERY is non-nil, the user will not
+be queried if a dictionary fails to save properly, and the return
+value is always nil.
+
+Interactively, FORCE is the prefix argument, and the user will not be
+asked whether they wish to continue after a failed save."
+  (interactive "P")
+
+  ;; sort out arguments
+  (when (and (called-interactively-p 'any) dict) (setq dict nil force t))
+  (when (dictree-p dict) (setq dict (list dict)))
+
+  ;; For each dictionary in list / each loaded dictionary, check if
+  ;; dictionary has been modified. If so, save it if autosave is set or
+  ;; FORCE is non-nil.
+  (let (save-failures)
+    (dolist (dic (if (null dict)
+                    dictree-loaded-list
+                  dict))
+      (when (and (dictree-modified dic)
+                (or force (dictree-autosave dic))
+                (or (not ask)
+                    (y-or-n-p (format "Save modified dictionary %s? "
+                                      (dictree-filename dic)))))
+       (condition-case nil
+           (progn
+             (dictree-save dic compilation)
+             (setf (dictree-modified dic) nil))
+         (error (push dic save-failures)))))
+
+    ;; prompt if dictionary saving failed
+    (if save-failures
+       (if (or (called-interactively-p 'any) no-fail-query)
+           (progn
+             (message
+              (concat
+               "Error: failed to save the following modified "
+               "dictionaries: "
+               (mapconcat 'dictree--name save-failures ", ")))
+             nil)
+         (yes-or-no-p
+          (concat "Error: failed to save the following modified "
+                  "dictionaries: "
+                  (mapconcat 'dictree--name save-failures ", ")
+                  "; continue anyway? ")))
+      t)))
+
+
+;; Add the dictree-save-modified function to the kill-emacs-hook to save
+;; modified dictionaries when exiting emacs
+(add-hook 'kill-emacs-query-functions 'dictree-save-modified)
+
+
+
+;;;###autoload
+(defun dictree-load (file)
+  "Load a dictionary object from file FILE.
+Returns the dictionary if successful, nil otherwise.
+
+Interactively, FILE is read from the mini-buffer."
+  (interactive (list (read-dict "Load dictionary: " nil nil t t)))
+
+  ;; sort out dictionary name and file name
+  (if (or (symbolp file) (dictree-p file))
+      (message "Dictionary %s already loaded" (dictree-name file))
+
+    ;; load the dictionary
+    (if (not (load file t))
+       ;; if loading failed, throw error interactively, return nil
+       ;; non-interactively
+       (if (called-interactively-p 'any)
+           (error "Cannot open dictionary file: %s" file)
+         nil)
+
+      (let (dictname dict)
+       (setq dictname
+             (file-name-nondirectory (file-name-sans-extension file))
+             dict (eval (intern-soft dictname)))
+       (if (not (dictree-p dict))
+           ;; if loading failed, throw error interactively, return nil
+           ;; non-interactively
+           (if (called-interactively-p 'any)
+               (error "Error loading dictionary file: %s" file)
+             nil)
+
+         ;; ensure the dictionary name and file name associated with
+         ;; the dictionary match the file it was loaded from
+         (when (and (string= (file-name-nondirectory file) file)
+                    (setq file
+                          (locate-file file load-path load-suffixes)))
+           (setf (dictree-filename dict) file))
+         (setf (dictree-name dict) dictname)
+
+         ;; make sure the dictionary is in dictree-loaded-list
+         ;; (normally the lisp code in the dictionary itself should do
+         ;; this, but just to make sure...)
+         (unless (memq dict dictree-loaded-list)
+           (push dict dictree-loaded-list))
+         (message (format "Loaded dictionary %s" dictname))
+
+         ;; return dictionary
+         dict)))))
+
+
+
+(defun dictree-unload (dict &optional dont-save)
+  "Unload dictionary DICT.
+If optional argument DONT-SAVE is non-nil, the dictionary will
+NOT be saved even if its autosave flag is set.
+
+Interactively, DICT is read from the mini-buffer, and DONT-SAVE
+is the prefix argument."
+  (interactive (list (read-dict "Dictionary: ")
+                    current-prefix-arg))
+  (when (and (called-interactively-p 'any) (symbolp dict))
+    (setq dict (eval dict)))
+
+  ;; if dictionary has been modified, autosave is set and not overidden,
+  ;; save it first
+  (when (and (dictree-modified dict)
+            (null dont-save)
+            (or (eq (dictree-autosave dict) t)
+                (and (eq (dictree-autosave dict) 'ask)
+                     (y-or-n-p
+                      (format
+                       "Dictionary %s modified.\
+ Save before unloading? "
+                       (dictree-name dict))))))
+    (dictree-save dict))
+
+  ;; if unloading a meta-dict, remove reference to it from constituent
+  ;; dictionaries' meta-dict-list cell
+  (when (dictree--meta-dict-p dict)
+    (mapc
+     (lambda (dic)
+       (setf (dictree--meta-dict-list dic)
+            (delq dict (dictree--meta-dict-list dic))))
+     (dictree--meta-dict-dictlist dict)))
+
+  ;; remove dictionary from list of loaded dictionaries and unload it
+  (setq dictree-loaded-list (delq dict dictree-loaded-list))
+  (unintern (dictree-name dict))
+  (message "Dictionary %s unloaded" (dictree-name dict)))
+
+
+
+(defun dictree--write-dict-code (dict dictname filename)
+  ;; Write code for normal dictionary DICT to current buffer, giving it
+  ;; the name DICTNAME and file FILENAME.
+  (let (hashcode tmpdict tmptrie lookup-alist
+       complete-alist complete-ranked-alist
+       regexp-alist regexp-ranked-alist)
+
+    ;; --- convert trie data ---
+    ;; if dictionary doesn't use any custom save functions, write
+    ;; dictionary's trie directly as is
+    (setq tmptrie (dictree--trie dict))
+    ;; otherwise, create a temporary trie and populate it with the
+    ;; converted contents of the dictionary's trie
+    (when (or (dictree--data-savefun dict)
+             (dictree--plist-savefun dict))
+      (setq tmptrie
+           (trie-create-custom
+            (trie-comparison-function tmptrie)
+            :createfun (trie--createfun tmptrie)
+            :insertfun (trie--insertfun tmptrie)
+            :deletefun (trie--deletefun tmptrie)
+            :lookupfun (trie--lookupfun tmptrie)
+            :mapfun (trie--mapfun tmptrie)
+            :emptyfun (trie--emptyfun tmptrie)
+            :stack-createfun (trie--stack-createfun tmptrie)
+            :stack-popfun (trie--stack-popfun tmptrie)
+            :stack-emptyfun (trie--stack-emptyfun tmptrie)))
+      (trie-mapc
+       (lambda (key cell)
+        (trie-insert tmptrie key
+                     (dictree--cell-create
+                      (funcall (or (dictree--data-savefun dict)
+                                   'identity)
+                               (dictree--cell-data cell))
+                      (funcall (or (dictree--plist-savefun dict)
+                                   'identity)
+                               (dictree--cell-plist cell)))))
+       (dictree--trie dict))
+
+      ;; generate code to convert contents of trie back to original form
+      (setq hashcode
+           (concat
+            hashcode
+            " (trie-map\n"
+            "  (lambda (key cell)\n"
+            "     (dictree--cell-create\n"
+            (if (dictree--data-loadfun dict)
+                (concat
+                 "(funcall (dictree--data-loadfun " dictname ")\n"
+                 "         (dictree--cell-data cell))\n")
+              "   (dictree--cell-data cell)\n")
+            (if (dictree--plist-loadfun dict)
+                (concat
+                 "(funcall (dictree--plist-loadfun " dictname ")\n"
+                 "         (dictree--cell-plist cell))))\n")
+              "   (dictree--cell-plist cell)))\n")
+            " (dictree--trie " dictname "))\n")))
+
+
+    ;; --- convert caches for writing to file ---
+    ;; hash tables have no read syntax in older Emacsen, so we convert
+    ;; them to alists for writing
+    (unless (featurep 'hashtable-print-readable)
+      ;; convert lookup cache hash table to alist, if it exists
+      (when (dictree--lookup-cache-threshold dict)
+       (maphash
+        (lambda (key val)
+          (push
+           (cons key
+                 (cons (mapcar 'car (dictree--cache-results val))
+                       (dictree--cache-maxnum val)))
+           lookup-alist))
+        (dictree--lookup-cache dict))
+       ;; generate code to reconstruct the lookup hash table
+       (setq hashcode
+             (concat
+              hashcode
+              "(let ((lookup-cache (make-hash-table :test 'equal))\n"
+              "      (trie (dictree--trie " dictname ")))\n"
+              "  (mapc\n"
+              "   (lambda (entry)\n"
+              "     (puthash\n"
+              "      (car entry)\n"
+              "      (dictree--cache-create\n"
+              "       (mapcar\n"
+              "        (lambda (key)\n"
+              "          (cons key (trie-member trie key)))\n"
+              "        (dictree--cache-results (cdr entry)))\n"
+              "       (dictree--cache-maxnum (cdr entry)))\n"
+              "      lookup-cache))\n"
+              "   (dictree--lookup-cache " dictname "))\n"
+              "  (setf (dictree--lookup-cache " dictname ")\n"
+              "        lookup-cache))\n")))
+
+      ;; convert query caches, if they exist
+      (dolist (cache-details
+              '((dictree--complete-cache-threshold
+                 complete-alist dictree--complete-cache)
+                (dictree--complete-ranked-cache-threshold
+                 complete-ranked-alist dictree--complete-ranked-cache)
+                (dictree--regexp-cache-threshold
+                 regexp-alist dictree--regexp-cache)
+                (dictree--regexp-ranked-cache-threshold
+                 regexp-ranked-alist dictree--regexp-ranked-cache)))
+       (when (funcall (nth 0 cache-details) dict)
+         ;; convert hash table to alist
+         (set (nth 1 cache-details)
+              (let (alist)
+                (maphash
+                 (lambda (key val)
+                   (push
+                    (cons key
+                          (cons
+                           (mapcar 'car (dictree--cache-results val))
+                           (dictree--cache-maxnum val)))
+                    alist))
+                 (funcall (nth 2 cache-details) dict))
+                alist))
+         ;; generate code to reconstruct hash table from alist
+         (setq
+          hashcode
+          (concat
+           hashcode
+           "(let ((cache (make-hash-table :test 'equal))\n"
+           "      (trie (dictree--trie " dictname ")))\n"
+           "  (mapc\n"
+           "   (lambda (entry)\n"
+           "     (puthash\n"
+           "      (car entry)\n"
+           "      (dictree--cache-create\n"
+           "       (mapcar\n"
+           "        (lambda (key)\n"
+           "          (cons key\n"
+           "                (trie-member\n"
+           "                 trie (if (stringp key) key (car key)))))\n"
+           "        (dictree--cache-results (cdr entry)))\n"
+           "       (dictree--cache-maxnum (cdr entry)))\n"
+           "      cache))\n"
+           "   (" (symbol-name (nth 2 cache-details)) " " dictname "))\n"
+           "  (setf (" (symbol-name (nth 2 cache-details)) " "
+                     dictname ")\n"
+           "        cache))\n")))))
+
+
+    ;; --- write to file ---
+    ;; generate the structure to save
+    (setq tmpdict (dictree--copy dict))
+    (setf (dictree--trie tmpdict) tmptrie
+         (dictree--name tmpdict) dictname
+         (dictree--filename tmpdict) filename
+         (dictree--modified tmpdict) nil
+         (dictree--meta-dict-list tmpdict) nil)
+    (unless (featurep 'hashtable-print-readable)
+      (setf (dictree--lookup-cache tmpdict) lookup-alist
+           (dictree--complete-cache tmpdict) complete-alist
+           (dictree--complete-ranked-cache tmpdict) complete-ranked-alist
+           (dictree--regexp-cache tmpdict) regexp-alist
+           (dictree--regexp-ranked-cache tmpdict) regexp-ranked-alist))
+
+    ;; write lisp code that generates the dictionary object
+    (let ((print-circle t) (print-level nil) (print-length nil))
+      (insert "(eval-when-compile (require 'cl))\n")
+      (insert "(require 'dict-tree)\n")
+      (insert "(defvar " dictname " nil \"Dictionary " dictname ".\")\n")
+      (unwind-protect
+         (progn
+           ;; transform trie to print form
+           (trie-transform-for-print (dictree--trie tmpdict))
+           (insert "(setq " dictname
+                   " '" (prin1-to-string tmpdict) ")\n"))
+       ;; if dictionary doesn't use any custom save functions, tmpdict's trie
+       ;; is identical to original dict, so transform it back to usable form
+       ;; on write error
+       (unless (or (dictree--data-savefun dict)
+                   (dictree--plist-savefun dict))
+         (trie-transform-from-read (dictree--trie tmpdict))))
+      (insert "(trie-transform-from-read (dictree--trie "
+             dictname "))\n")
+      (when hashcode (insert hashcode))
+      (insert "(unless (memq " dictname " dictree-loaded-list)\n"
+             "  (push " dictname " dictree-loaded-list))\n"))))
+
+
+
+(defun dictree--write-meta-dict-code (dict dictname filename)
+  ;; Write code for meta-dictionary DICT to current buffer, giving it
+  ;; the name DICTNAME and file FILENAME.
+  (let (hashcode tmpdict lookup-alist
+       complete-alist complete-ranked-alist
+       regexp-alist regexp-ranked-alist)
+
+    ;; --- convert caches for writing to file ---
+    ;; hash tables have no read syntax in older Emacsen, so we convert
+    ;; them to alists for writing
+    (unless (featurep 'hashtable-print-readable)
+      ;; convert lookup cache hash table to an alist, if it exists
+      (when (dictree--meta-dict-lookup-cache-threshold dict)
+       (maphash (lambda (key val)
+                  (push (cons key (mapcar 'car val)) lookup-alist))
+                (dictree--meta-dict-lookup-cache dict))
+       ;; generate code to reconstruct the lookup hash table
+       (setq hashcode
+             (concat
+              hashcode
+              "(let ((cache (make-hash-table :test 'equal)))\n"
+              "  (mapc (lambda (entry)\n"
+              "    (puthash (car entry) (cdr entry) cache))\n"
+              "    (dictree--meta-dict-lookup-cache " dictname "))\n"
+              "  (setf (dictree--meta-dict-lookup-cache " dictname ")\n"
+              "        cache))\n")))
+
+      ;; convert query caches, if they exist
+      (dolist (cache-details
+              '((dictree--meta-dict-complete-cache-threshold
+                 complete-alist
+                 dictree--meta-dict-complete-cache)
+                (dictree--meta-dict-complete-ranked-cache-threshold
+                 complete-ranked-alist
+                 dictree--meta-dict-complete-ranked-cache)
+                (dictree--meta-dict-regexp-cache-threshold
+                 regexp-alist
+                 dictree--meta-dict-regexp-cache)
+                (dictree--meta-dict-regexp-ranked-cache-threshold
+                 regexp-ranked-alist
+                 dictree--meta-dict-regexp-ranked-cache)))
+       (when (funcall (nth 0 cache-details) dict)
+         ;; convert hash table to alist
+         (set (nth 1 cache-details)
+              (let (alist)
+                (maphash
+                 (lambda (key val) (push (cons key val) alist))
+                 (funcall (nth 2 cache-details) dict))
+                alist))
+         ;; generate code to reconstruct hash table from alist
+         (setq
+          hashcode
+          (concat
+           hashcode
+           "(let ((cache (make-hash-table :test 'equal)))\n"
+           "  (mapc (lambda (entry)\n"
+           "    (puthash (car entry) (cdr entry) cache))\n"
+           "    (" (symbol-name (nth 2 cache-details)) " "
+                   dictname "))\n"
+           "  (setf (" (symbol-name (nth 2 cache-details)) " "
+                       dictname ")\n"
+           "        cache))\n")))))
+
+
+    ;; --- write to file ---
+    ;; generate the structure to save
+    (setq tmpdict (dictree--meta-dict-copy dict))
+    (setf (dictree--meta-dict-name tmpdict) dictname
+         (dictree--meta-dict-filename tmpdict) filename
+         (dictree--meta-dict-modified tmpdict) nil
+         (dictree--meta-dict-meta-dict-list tmpdict) nil
+         (dictree--meta-dict-dictlist tmpdict)
+           (mapcar (lambda (dic) (intern (dictree-name dic)))
+                   (dictree--meta-dict-dictlist dict)))
+    (unless (featurep 'hashtable-print-readable)
+      (setf (dictree--meta-dict-lookup-cache tmpdict) lookup-alist
+           (dictree--meta-dict-complete-cache tmpdict) complete-alist
+           (dictree--meta-dict-complete-ranked-cache tmpdict)
+             complete-ranked-alist
+           (dictree--meta-dict-regexp-cache tmpdict) regexp-alist
+           (dictree--meta-dict-regexp-ranked-cache tmpdict)
+             regexp-ranked-alist))
+
+    ;; write lisp code that generates the dictionary object
+    (let ((print-circle t) (print-level nil) (print-length nil))
+      (insert "(eval-when-compile (require 'cl))\n"
+             "(require 'dict-tree)\n")
+      (mapc
+       (lambda (dic)
+        (insert "(unless (dictree-load \"" (dictree-filename dic) "\")\n"
+                "        (error \"Failed to load dictionary \\\""
+                (dictree-name dic) "\\\" required by meta-dict \\\""
+                dictname "\\\"\"))\n"))
+       (dictree--meta-dict-dictlist dict))
+      (insert "(defvar " dictname " nil \"Dictionary " dictname ".\")\n"
+             "(setq " dictname " " (prin1-to-string tmpdict) ")\n"
+             "(setf (dictree--meta-dict-dictlist " dictname ")\n"
+             "      (mapcar 'eval (dictree--meta-dict-dictlist "
+                                   dictname ")))\n")
+      (when hashcode (insert hashcode))
+      (insert "(unless (memq " dictname " dictree-loaded-list)"
+             " (push " dictname " dictree-loaded-list))\n"))))
+
+
+
+;; ----------------------------------------------------------------
+;;                Dumping and restoring contents
+
+(defun dictree-populate-from-file
+  (dict file
+   &optional insert-function key-loadfun data-loadfun plist-loadfun
+   balance)
+  "Populate dictionary DICT from the key list in file FILE.
+
+Each line of FILE should contain a key, either a string
+\(delimited by \"\), a vector, or a list. (Use the escape
+sequence \\\" to include a \" in a string.) If a line does not
+contain a key, it is silently ignored.
+
+Each line can optionally include data and a property list (in
+that order) to be associated with the key. If present, these
+should separated from each other and the key by whitespace.
+
+INSERT-FUNCTION, KEY-LOAD-FUNCTION, DATA-LOAD-FUNCTION and
+PLIST-LOAD-FUNCTION override the corresponding default functions
+for DICT (see `dictree-create').
+
+Interactively, DICT and FILE are read from the mini-buffer.
+
+
+Technicalities:
+
+The key, data and property list are read as lisp expressions
+using `read'. The keys will be read from FILE in order, unless
+BALANCE is non-nil, in which case they are read from the median
+element outwards (which can help ensure efficient data structures
+are created when using a trie that is not self-balancing, see
+`dictree-create')."
+  (interactive (list (read-dict "Dictionary: ")
+                    (read-file-name "File to populate from: "
+                                    nil "" t)))
+  (when (and (called-interactively-p 'any) (symbolp dict))
+    (setq dict (eval dict)))
+
+  (if (and (called-interactively-p 'any) (string= file ""))
+      (message "No file specified; dictionary %s NOT populated"
+              (dictree-name dict))
+
+    (unless (dictree--meta-dict-p dict)
+      (unless key-loadfun
+       (setq key-loadfun (dictree--key-loadfun dict)))
+      (unless data-loadfun
+       (setq data-loadfun (dictree--data-loadfun dict)))
+      (unless plist-loadfun
+       (setq plist-loadfun (dictree--plist-loadfun dict))))
+
+    (save-excursion
+      (let ((buff (find-file-noselect file)))
+       (set-buffer buff)
+
+       ;; insert the keys starting from the median to ensure a
+       ;; reasonably well-balanced tree
+       (let* ((lines (count-lines (point-min) (point-max)))
+              (midpt (+ (/ lines 2) (mod lines 2)))
+              entry)
+         (message "Inserting keys in %s...(1 of %d)"
+                  (dictree-name dict) lines)
+         ;; insert the median key and set the dictionary's modified
+         ;; flag
+         (if balance
+             (dictree--goto-line midpt)
+           (goto-char (point-min)))
+         (when (setq entry
+                     (condition-case nil
+                         (dictree--read-line
+                          dict key-loadfun data-loadfun
+                          plist-loadfun)
+                       (error (error "Error reading line %d of %s"
+                                     midpt file))))
+           (dictree-insert dict (car entry) (nth 1 entry)
+                           insert-function)
+           (setf (dictree--cell-plist
+                  (dictree--lookup dict (car entry) nil))
+                 (nth 2 entry)))
+         ;; insert keys successively further away from the median in
+         ;; both directions
+         (dotimes (i (1- (if balance midpt lines)))
+           (if balance
+               (dictree--goto-line (+ midpt i 1))
+             (forward-line 1))
+           (when (setq entry
+                       (condition-case nil
+                           (dictree--read-line
+                            dict key-loadfun data-loadfun
+                            plist-loadfun)
+                         (error (error "Error reading line %d of %s"
+                                       (+ midpt i 1) file))))
+             (dictree-insert dict (car entry) (nth 1 entry)
+                             insert-function)
+             (setf (dictree--cell-plist
+                    (dictree--lookup dict (car entry) nil))
+                   (nth 2 entry)))
+           (when (= 49 (mod i 50))
+             (message "Inserting keys in %s...(%d of %d)"
+                      (dictree-name dict)
+                      (if balance (+ (* 2 i) 2) i)
+                      lines))
+           (when balance
+             (dictree--goto-line (- midpt i 1))
+             (when (setq entry
+                         (condition-case nil
+                             (dictree--read-line
+                              dict key-loadfun data-loadfun
+                              plist-loadfun)
+                           (error (error "Error reading line %d of %s"
+                                         (- midpt i 1) file))))
+               (dictree-insert dict (car entry)
+                               (nth 1 entry) insert-function)
+               (setf
+                (dictree--cell-plist
+                 (dictree--lookup dict (car entry) nil))
+                (nth 2 entry)))))
+
+         ;; if inserting from mid-point out, and file contains an even
+         ;; number of keys, we still have to add the last one
+         (when (and balance (= 0 (mod lines 2)))
+           (dictree--goto-line lines)
+           (when (setq entry
+                       (condition-case nil
+                           (dictree--read-line
+                            dict key-loadfun data-loadfun
+                            plist-loadfun)
+                         (error (error "Error reading line %d of %s"
+                                       lines file))))
+             (dictree-insert dict (car entry) (nth 1 entry)
+                             insert-function)
+             (setf (dictree--cell-plist
+                    (dictree--lookup dict (car entry) nil))
+                   (nth 2 entry))))
+
+         (message "Inserting keys in %s...done" (dictree-name dict)))
+       (kill-buffer buff)))))
+
+
+
+(defun dictree--read-line
+  (dict &optional key-loadfun data-loadfun plist-loadfun)
+  ;; Return a list containing the key, data (if any, otherwise nil) and
+  ;; property list (ditto) at the current line of the current buffer,
+  ;; for dictionary DICT.
+  (save-excursion
+    (let (key data plist)
+      ;; read key
+      (beginning-of-line)
+      (when (setq key (read (current-buffer)))
+       (when key-loadfun (setq key (funcall key-loadfun key)))
+       ;; if there's anything after the key, use it as data
+       (unless (eq (line-end-position) (point))
+         (setq data (read (current-buffer))))
+       (when data-loadfun (setq data (funcall data-loadfun data)))
+       ;; if there's anything after the data, use is as the property
+       ;; list
+       (unless (eq (line-end-position) (point))
+         (setq plist (read (current-buffer))))
+       (when plist-loadfun (funcall plist-loadfun plist))
+       ;; return the key and data
+       (list key data plist)))))
+
+
+
+(defun dictree-dump-to-buffer (dict &optional buffer type)
+  "Dump keys and their associated data
+from dictionary DICT to BUFFER, in the same format as that used
+by `dictree-populate-from-file'. If BUFFER exists, data will be
+appended to the end of it. Otherwise, a new buffer will be
+created. If BUFFER is omitted, the current buffer is used.
+
+TYPE determines the type of sequence to use to represent the
+keys, and should be one of 'string, 'vector or 'list. The default
+is 'vector.
+
+Note that if the data does not have a read syntax, the dumped
+data can not be used to recreate the dictionary using
+`dictree-populate-from-file'.
+
+Interactively, DICT and BUFFER are read from the mini-buffer,
+TYPE is always 'string."
+  (interactive (list (read-dict "Dictionary: ")
+                    (read-buffer
+                     "Buffer to dump to (defaults to current): "
+                     (buffer-name (current-buffer)))
+                    'string))
+  (when (and (called-interactively-p 'any) (symbolp dict))
+    (setq dict (eval dict)))
+
+  ;; select the buffer, creating it if necessary
+  (if buffer
+      (setq buffer (get-buffer-create buffer))
+    (setq buffer (current-buffer)))
+  (set-buffer buffer)
+
+  ;; move point to end of buffer and make sure it's at start of new line
+  (goto-char (point-max))
+  (unless (= (point) (line-beginning-position))
+    (insert "\n"))
+
+  ;; dump keys
+  (message "Dumping keys from %s to %s..."
+          (dictree-name dict) (buffer-name buffer))
+  (let ((count 0) (dictsize (dictree-size dict)))
+    (message "Dumping keys from %s to %s...(key 1 of %d)"
+            (dictree-name dict) (buffer-name buffer) dictsize)
+
+    ;; map dump function over dictionary
+    (dictree--mapc
+     (lambda (key data plist)
+       (when (= 99 (mod count 100))
+        (message "Dumping keys from %s to %s...(key %d of %d)"
+                 (dictree-name dict) (buffer-name buffer)
+                 (1+ count) dictsize))
+       (insert (prin1-to-string
+               (funcall (or (dictree--key-savefun dict) 'identity)
+                        key)))
+       (when (setq data
+                  (funcall (or (dictree--data-savefun dict) 'identity)
+                           data))
+        (insert " " (prin1-to-string data)))
+       (when (setq plist
+                  (funcall (or (dictree--plist-savefun dict) 'identity)
+                           plist))
+        (unless data (insert " nil"))
+        (insert " " (prin1-to-string plist)))
+       (insert "\n")
+       (setq count (1+ count)))
+     dict type)  ; dictree-mapc target
+
+    (message "Dumping keys from %s to %s...done"
+            (dictree-name dict) (buffer-name buffer)))
+  (switch-to-buffer buffer))
+
+
+
+(defun dictree-dump-to-file (dict filename &optional type overwrite)
+  "Dump keys and their associated data
+from dictionary DICT to a text file FILENAME, in the same format
+as that used by `dictree-populate-from-file'. Prompts to overwrite
+FILENAME if it already exists, unless OVERWRITE is non-nil.
+
+TYPE determines the type of sequence to use to represent the
+keys, and should be one of 'string, 'vector or 'list. The default
+is 'vector.
+
+Note that if the data does not have a read syntax and no , the dumped
+data can not be used to recreate the dictionary using
+`dictree-populate-from-file'.
+
+Interactively, DICT and FILE are read from the mini-buffer,
+OVERWRITE is the prefix argument, and TYPE is always 'string."
+  (interactive (list (read-dict "Dictionary: ")
+                    (read-file-name "File to dump to: " nil "")))
+  (when (and (called-interactively-p 'any) (symbolp dict))
+    (setq dict (eval dict)))
+
+  (if (and (called-interactively-p 'any) (string= filename ""))
+      (message "Dictionary %s NOT dumped" (dictree-name dict))
+
+    ;; check if file exists, and prompt to overwrite it if necessary
+    (if (and (file-exists-p filename)
+            (not overwrite)
+            (not (y-or-n-p
+                  (format "File %s already exists. Overwrite? "
+                          filename))))
+       (message "Key dump cancelled")
+
+      (let (buff)
+       ;; create temporary buffer, dump keys to it, and save to
+       ;; FILENAME
+       (setq buff (generate-new-buffer filename))
+       (save-window-excursion
+         (dictree-dump-to-buffer dict buff type)
+         (write-file filename))
+       (kill-buffer buff)))))
+
+
+
+
+;; ----------------------------------------------------------------
+;;                     Minibuffer completion
+
+(defvar dictree-history nil
+  "History list for commands that read a dictionary name.")
+
+(defvar dictree-loaded-history nil
+  "History list for commands that read a loaded dictionary name.")
+
+
+;;;###autoload
+(defun read-dict
+  (prompt &optional default dictlist allow-unloaded allow-unmatched)
+  "Read the name of a dictionary with completion, and return it.
+
+Prompt with PROMPT. By default, return DEFAULT. If DICTLIST is
+supplied, only complete on dictionaries in that list.
+
+If ALLOW-UNLOADED is non-nil, also complete on the names of
+unloaded dictionaries (actually, on any Elisp file in the current
+`load-path' restricted to subdirectories of your home directory
+whose file name starts with \"dict-\"). If an unloaded dictionary
+is read, the name of the Elisp file will be returned, without
+extension, suitable for passing to `load-library'."
+
+  (let (dictname paths)
+    ;; when allowing unloaded dictionaries...
+    (when allow-unloaded
+      ;; get paths in load-path that are subdirectories of home
+      ;; directory
+      (dolist (d load-path)
+       (when (eq (aref d 0) ?~) (push d paths)))
+      ;; gather names of all Elisp libraries in this restricted
+      ;; load-path
+      (dolist (f (all-completions
+                 "" (apply-partially 'locate-file-completion-table
+                                     paths (get-load-suffixes))))
+       (when (and (null (file-name-directory f))
+                  (and (> (length f) 5)
+                       (string= (substring f 0 5) "dict-"))
+                  (null (file-name-extension f))
+                  (not (member (file-name-sans-extension f) dictname)))
+         (push (file-name-sans-extension f) dictname))))
+    ;; gather names of loaded dictionaries
+    (mapc (lambda (dict)
+           (unless (or (null (dictree-name dict))
+                       (member (dictree-name dict) dictname))
+             (push (list (dictree-name dict)) dictname)))
+         (or dictlist dictree-loaded-list))
+    ;; do completing-read
+    (setq dictname (completing-read
+                   prompt
+                   (if allow-unmatched
+                       (completion-table-in-turn
+                        dictname 'read-file-name-internal)
+                     dictname)
+                   nil (not allow-unmatched) nil
+                   (if allow-unloaded
+                       'dictree-history
+                     'dictree-loaded-history)
+                   (and (dictree-p default) (dictree-name default))))
+    ;; return dictionary
+    (cond
+     ;; if user typed a file name, return that
+     ((and allow-unmatched (file-regular-p dictname)) dictname)
+     ;; if user selected a loaded dictionary, return dict itself
+     ((condition-case nil
+         (dictree-p (eval (intern-soft dictname)))
+       (void-variable nil))
+      (intern-soft dictname))
+     ;; if user selected an unloaded dictionary, return dict name
+     ((and allow-unloaded (stringp dictname)) dictname)
+     ;; if DEFAULT was specified, return that
+     (default default)
+     ;; should never get here!
+     (t (error "Unknown error reading dictionary")))
+    ))
+
+
+
+;; ----------------------------------------------------------------
+;;            Pretty-print dictionaries during edebug
+
+;; We advise the `edebug-prin1' and `edebug-prin1-to-string' functions
+;; (actually, aliases) so that they print "#<dict-tree NAME>" instead of
+;; the full print form for dictionaries.
+;;
+;; This is because, if left to its own devices, edebug hangs for ages
+;; whilst printing large dictionaries, and you either have to wait for a
+;; *very* long time for it to finish, or kill Emacs entirely. (Even C-g
+;; C-g fails!)
+;;
+;; We do this also for lists of dictionaries, since those occur quite
+;; often, but not for other sequence types or deeper nested structures,
+;; to keep the implementation as simple as possible.
+;;
+;; Since the print form of a dictionary is practically incomprehensible
+;; anyway, we don't lose much by doing this. If you *really* want to
+;; print dictionaries in full whilst edebugging, despite this warning,
+;; disable the advice.
+;;
+;; FIXME: Should use `cedet-edebug-prin1-extensions' instead of advice
+;;        when `cedet-edebug' is loaded, though I believe this still
+;;        works in that case.
+
+
+(eval-when-compile
+  (require 'edebug)
+  (require 'advice))
+
+
+(defun dictree--edebug-pretty-print (object)
+  (cond
+   ((dictree-p object)
+    (concat "#<dict-tree \"" (dictree-name object) "\">"))
+   ((null object) "nil")
+   ((let ((dlist object) (test t))
+      (while (or (dictree-p (car-safe dlist))
+                (and dlist (setq test nil)))
+       (setq dlist (cdr dlist)))
+      test)
+    (concat "(" (mapconcat (lambda (d)
+                            (concat "#<dict-tree \""
+                                    (dictree-name d) "\">"))
+                          object " ") ")"))
+;; ((vectorp object)
+;;  (let ((pretty "[") (len (length object)))
+;;    (dotimes (i (1- len))
+;;     (setq pretty
+;;           (concat pretty
+;;                   (if (trie-p (aref object i))
+;;                       "#<trie>" (prin1-to-string (aref object i))) " ")))
+;;    (concat pretty
+;;           (if (trie-p (aref object (1- len)))
+;;               "#<trie>" (prin1-to-string (aref object (1- len))))
+;;           "]")))
+   ))
+
+
+(when (fboundp 'ad-define-subr-args)
+  (ad-define-subr-args 'edebug-prin1 '(object &optional printcharfun)))
+
+(defadvice edebug-prin1
+  (around dictree activate compile preactivate)
+  (let ((pretty (dictree--edebug-pretty-print object)))
+    (if pretty
+       (progn
+         (prin1 pretty printcharfun)
+         (setq ad-return-value pretty))
+    ad-do-it)))
+
+
+(when (fboundp 'ad-define-subr-args)
+  (ad-define-subr-args 'edebug-prin1-to-string '(object &optional noescape)))
+
+(defadvice edebug-prin1-to-string
+  (around dictree activate compile preactivate)
+  (let ((pretty (dictree--edebug-pretty-print object)))
+    (if pretty
+       (setq ad-return-value pretty)
+      ad-do-it)))
+
+
+
+(provide 'dict-tree)
+
+;;; dict-tree.el ends here
diff --git a/packages/djvu/djvu.el b/packages/djvu/djvu.el
new file mode 100644 (file)
index 0000000..a5816ef
--- /dev/null
@@ -0,0 +1,1629 @@
+;;; djvu.el --- Edit and view Djvu files via djvused
+
+;; Copyright (C) 2011  Free Software Foundation, Inc.
+
+;; Author: Roland Winkler <winkler@gnu.org>
+;; Keywords: files, wp
+;; Version: 0.5
+
+;; This file is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; djvu.el is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with djvu.el.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This package is a front end for the command-line program djvused
+;; from DjVuLibre, see http://djvu.sourceforge.net/.  It assumes you
+;; have the programs djvused, djview, and ddjvu installed.
+;;
+;; A normal work flow is as follows:
+;;
+;; To visit a djvu file type M-x fjvu-find-file.  This command is the
+;; only entry point to this package.  You may want to bind this
+;; command to a key you like.  I use
+;;
+;;   (global-set-key "\C-cd" 'djvu-find-file)
+;;
+;; If you use this command to visit file foo.djvu, it puts you into
+;; the (read-only) buffer foo@djvu.  Normally, this buffer is all you
+;; need.
+;;
+;; The menu bar of this buffer lists most of the commands with their
+;; repsective key bindings.  For example, you can:
+;;
+;; - Use `g' to go to the page you want. (Yes, this package operates on
+;;   one page at a time. I guess that anything else would be too slow
+;;   for large documents.)
+;;
+;; - Use `v' to (re)start djview using the position in foo.djvu
+;;   matching where point is in foo@djvu.  (I find djview fast enough
+;;   for this, even for larger documents.)
+;;
+;; - To highlight a region in foo.djvu mark the corresponding region
+;;   in foo@djvu (as usual, `transient-mark-mode' comes handy for
+;;   this).  Then type `h' and add a comment in the minibuffer if you
+;;   like.  Type C-x C-s to save this editing.  Then type `v' to
+;;   (re)start djview to show what you have done.
+;;
+;; - Type i to enable `djvu-image-mode', a minor mode displaying the
+;;   current page as an image.  Then
+;;     drag-mouse-1 defines a region where to put a comment,
+;;     C-drag-mouse-1 defines a region where to put a pushpin comment,
+;;     S-drag-mouse-1 defines a region to highlight
+;;
+;; - The editing of the text, annotation and outline (bookmark) layers
+;;   really happens in the buffers foo@djvu-t.el, foo@djvu-a.el, and
+;;   foo@djvu-o.el.  (The djvused syntax used in these buffers is so
+;;   close to elisp that it was natural to give these buffers a
+;;   djvu-edit-mode that is derived from emacs-lisp-mode.)
+;;
+;;   You can check what is happening by switching to these buffers.
+;;   The respective switching commands put point in these buffers such
+;;   that it matches where you were in foo@djvu.
+;;
+;;   In these buffers, the menu bar lists a few low-level commands
+;;   available for editing these buffers directly.  If you know the
+;;   djvused syntax, sometimes it can also be helpful to do such
+;;   editing "by hand".
+;;
+;; But wait: the syntax in the annotations buffer foo@djvu-a.el is a
+;; slightly modified djvused syntax.  djvused can only highlight
+;; rectangles.  So the highlighting of larger regions of text must use
+;; multiple rectangles (i.e., multiple djvused "mapareas").  To make
+;; editing easier, these are combined in the buffer foo@djvu-a.el.
+;; (Before saving these things, they are converted using the proper
+;; djvused syntax.)
+;;
+;; When you visit a djvu file, djvu-mode recognizes mapareas belonging
+;; together by checking that "everything else in these mapareas except
+;; for the rects" is the same.  So if you entered a (unique) comment,
+;; this allows djvu-mode to combine all the mapareas when you visit
+;; such a file the second time.  Without a comment, this fails!
+;;
+;; A second difference between what is displayed in the djvu buffers
+;; and the input/output of djvused refers to nonascii characters.  I
+;; am using djvused from DjVuLibre-3.5.22 which handles utf-8 by
+;; backslash sequences.  So djvu mode converts these backslash
+;; sequences into the corresponding utf-8 characters.  (More recent
+;; versions of djvused can do this conversion, too.)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Djvu internals:
+;; (see /usr/share/doc/libdjvulibre-dev/djvu3spec.djvu)
+;;
+;; Supported area attributes             rect  oval  poly  line  text
+;; (none)/(xor)/(border c)                X     X     X     X     X
+;; (shadow_* t)                           X
+;; (border_avis)                          X     X     X
+;; (hilite color) / (opacity o)           X
+;; (arrow) / (width w) / (lineclr c)                        X
+;; (backclr c) / (textclr c) / (pushpin)                          X
+;;
+;; c = #RRGGBB   t = thickness (1..32)
+;; o = opacity = 0..100
+
+;;; Code:
+
+(defvar djvu-color-highlight "yellow"
+  "Default color for highlighting.")
+
+(defvar djvu-color-himark "red"
+  "Default color for highmarking.")
+
+(defvar djvu-color-url "blue"
+  "Default color for URLs.")
+
+(defvar djvu-color-background "white"
+  "Default background.")
+
+(defvar djvu-color-alist
+  ;; If the keys are strings, they are directly compatible with what
+  ;; we get back from something like `completing-read'.
+  '(("red"    . "#FF0070")
+    ("green"  . "#00FF00")
+    ("blue"   . "#6666FF")
+    ("yellow" . "#EEFF00")
+    ("white"  . "#FFFFFF"))
+  "Alist of colors for highlighting.")
+
+(defvar djvu-opacity 50
+  "Default opacity for Highlighting.")
+
+(defvar djvu-coords-justify 0.02
+  "Upper threshold for justifying rect coordinates.")
+
+(defvar djvu-fill-column 50
+  "Fill column for Djvu annotations.")
+
+(defvar djvu-all-buffer "*djvu*"
+  "Buffer for `all' operations.")
+
+(defvar djvu-buffer-name-extensions
+  '("@djvu" "@djvu-t.el" "@djvu-a.el" "@djvu-o.el")
+  "Extensions for Djvu buffer names.
+This is a list with four elements (READ TEXT ANNOT OUTLINE).")
+
+(defvar djvu-resolve-url nil
+  "Flag for resolving internal URLs.
+If 'long replace short page numbers by long FileIDs.
+If 'short replace long FileIDs by short page numbers.
+If nil do nothing.")
+
+(defvar djvu-image-size 1024
+  "Size of internally displayed image.")
+
+;; Internal variables
+
+(defvar djvu-test nil
+  "If non-nil do not process / delete djvused scripts.")
+;; (setq djvu-test t) (setq djvu-test nil)
+
+(defvar djvu-doc nil
+  "Internal look-up table (a vector) for each Djvu document.
+For the different buffers of one Djvu document the buffer-local
+value of this variable is the same vector holding all the
+relevant information about this document. This way, we obtain a
+\"document-local\" variable, where changes are seen in all buffers
+refering to this Djvu document.")
+(make-variable-buffer-local 'djvu-doc)
+
+;;; Helper functions
+
+;; "read" refers to the text-only display of djvu files inside emacs
+;; "view" refers to external graphical viewers (default djview)
+
+(eval-and-compile
+  (let ((count 0))
+    (dolist (elt '(file basename text-buf read-buf annot-buf outline-buf
+                        page pagemax page-id pagesize pos view-proc image))
+      (eval (list 'defsubst (intern (concat "djvu-doc-" (symbol-name elt)))
+                  '(&optional doc) `(aref (or doc djvu-doc) ,count)))
+      (eval (list 'defsubst (intern (concat "djvu-doc-set-" (symbol-name elt)))
+                  '(val &optional doc) `(aset (or doc djvu-doc) ,count val)))
+      (setq count (1+ count)))
+    (eval `(defconst djvu-doc-length ,count))))
+
+(defun djvu-switch-text ()
+  "Switch to Djvu Text buffer."
+  (interactive)
+  (let ((pos (djvu-read-pos)))
+    (switch-to-buffer (djvu-doc-text-buf))
+    (djvu-locate-pos 'word pos)))
+
+(defun djvu-switch-annot ()
+  "Switch to Djvu Annotations buffer."
+  (interactive)
+  (let ((pos (djvu-read-pos)))
+    (switch-to-buffer (djvu-doc-annot-buf))
+    (djvu-locate-pos 'rect pos)))
+
+(defun djvu-switch-outline ()
+  "Switch to Djvu Outline buffer."
+  (interactive)
+  ;; Try to locate the current page in the outline buffer.
+  ;; If this page is not defined, try to locate the nearest preceding page.
+  (let ((page (djvu-doc-page)) pnt)
+    (with-current-buffer (djvu-doc-outline-buf)
+      (goto-char (point-min))
+      (if (looking-at "(bookmarks")
+          (while (and (< 0 page)
+                      (not (setq pnt (re-search-forward
+                                      (format "\"#%d\"" page) nil t))))
+            (setq page (1- page)))))
+    (switch-to-buffer (djvu-doc-outline-buf))
+    (if pnt (goto-char pnt))))
+
+(defun djvu-switch-read ()
+  "Switch to Djvu Read buffer."
+  (interactive)
+  (switch-to-buffer (djvu-doc-read-buf)))
+
+(defun djvu-goto-page (page)
+  "Goto PAGE of Djvu document."
+  (interactive
+   (let ((str (read-string (format "Page (f, 1-%d, l): " (djvu-doc-pagemax)))))
+     (list (cond ((string-match "\\`f" str) 1)
+                 ((string-match "\\`l" str) (djvu-doc-pagemax))
+                 ((string-match "\\`[[:digit:]]+\\'" str)
+                  (string-to-number str))
+                 (t (error "Page `%s' invalid" str))))))
+  (if (or (not (integerp page))
+          (<= page 0) (< (djvu-doc-pagemax) page))
+      (error "Page `%s' out of range" page))
+  (djvu-init-page djvu-doc page))
+
+(defun djvu-next-page (n)
+  (interactive "p")
+  (djvu-goto-page (+ (djvu-doc-page) n)))
+
+(defun djvu-prev-page (n)
+  (interactive "p")
+  (djvu-goto-page (- (djvu-doc-page) n)))
+
+(defun djvu-set-color-highlight (color)
+  "Set color for highlighting based on `djvu-color-alist'."
+  (interactive (list (completing-read "Color: " djvu-color-alist nil t)))
+  (setq djvu-color-highlight color))
+
+(defun djvu-kill-view (&optional doc)
+  (when (djvu-doc-view-proc doc)
+    (unless (memq (process-status (djvu-doc-view-proc doc))
+                  '(exit signal))
+      (kill-process (djvu-doc-view-proc doc)))
+    (djvu-doc-set-view-proc nil doc)))
+
+(defun djvu-kill-doc (&optional doc)
+  (interactive)
+  (djvu-save doc t)
+  (djvu-kill-view doc)
+  (mapc 'kill-buffer (list (djvu-doc-text-buf doc) (djvu-doc-read-buf doc)
+                           (djvu-doc-annot-buf doc) (djvu-doc-outline-buf doc))))
+
+(defsubst djvu-delete-file (script)
+  (unless djvu-test (delete-file script)))
+
+(defun djvu-save (&optional doc query)
+  "Save Djvu DOC."
+  (interactive)
+  (let ((pos (djvu-read-pos))
+        (text-modified  (buffer-modified-p (djvu-doc-text-buf doc)))
+        (annot-modified (buffer-modified-p (djvu-doc-annot-buf doc)))
+        (outline-modified (buffer-modified-p (djvu-doc-outline-buf doc)))
+        script)
+    (when (and (or text-modified annot-modified outline-modified)
+               (or (not query)
+                   (yes-or-no-p (format "Save %s? " (djvu-doc-basename doc)))))
+      (unwind-protect
+          (progn
+            (setq script (make-temp-file "djvu-el-"))
+            (if text-modified (djvu-process-text script doc))
+            (if annot-modified (djvu-process-annot script doc))
+            (if outline-modified (djvu-process-outline script doc))
+            (djvu-djvused doc nil "-f" script "-s")
+            (dolist (buf (list (djvu-doc-text-buf doc) (djvu-doc-annot-buf doc)
+                               (djvu-doc-outline-buf doc) (djvu-doc-read-buf doc)))
+              (with-current-buffer buf (set-buffer-modified-p nil)))
+            (if text-modified (djvu-locate-read-pos pos)))
+        (djvu-delete-file script)))))
+
+(defun djvu-modified ()
+  "Mark Djvu Read buffer as modified if necessary.
+Used in `post-command-hook' of the Djvu Outline, Text and Read buffers."
+  (with-current-buffer (djvu-doc-read-buf)
+    (set-buffer-modified-p (or (buffer-modified-p (djvu-doc-outline-buf))
+                               (buffer-modified-p (djvu-doc-text-buf))
+                               (buffer-modified-p (djvu-doc-annot-buf))))))
+
+(defun djvu-process (&optional doc view)
+  "Process Djvu DOC."
+  (interactive (list djvu-doc t))
+  (djvu-save doc)
+  (if view (djvu-view doc)))
+
+(defun djvu-djvused (doc buffer &rest args)
+  ;; BUFFER is nil if we update the Djvu file.
+  (unless (or buffer (file-writable-p (djvu-doc-file doc)))
+    (error "File `%s' not writable"
+           (abbreviate-file-name (djvu-doc-file doc))))
+  (unless (and (not buffer) djvu-test)
+    (let ((status (apply 'call-process "djvused" nil buffer nil
+                         (djvu-doc-file doc) args)))
+      (unless (zerop status)
+        (error "Djvused error %s (args: %s)" status args)))))
+
+(defun djvu-hide-hash (&optional recover)
+  (let* ((old (concat " " (if recover "@!@" "#") "\\([[:xdigit:]]\\)"))
+         (new (concat " " (if recover "#" "@!@") "\\1")))
+    (goto-char (point-min))
+    (while (re-search-forward old nil t) (replace-match new))))
+
+(defun djvu-interactive-region ()
+  "Return active region for use in interactive calls."
+  (let (beg end)
+    (if (use-region-p)
+        (setq beg (region-beginning)
+              end (region-end))
+      (setq beg (point) end (1+ (point))))
+    (cons (if (get-text-property beg 'word)
+              (djvu-property-beg beg 'word)
+            (next-single-property-change beg 'word nil end))
+          (if (get-text-property (1- end) 'word)
+              (djvu-property-end end 'word)
+            (previous-single-property-change end 'word nil beg)))))
+
+(defun djvu-interactive-color (color)
+  "Return color specification for use in interactive calls."
+  (let ((colnum (or (and (consp current-prefix-arg)
+                         (1- (/ (car current-prefix-arg) 4)))
+                    (and (integerp current-prefix-arg)
+                         current-prefix-arg))))
+    (if (and colnum (>= colnum (length djvu-color-alist)))
+        (error "Color undefined"))
+    (if colnum (car (nth colnum djvu-color-alist)) color)))
+
+(defun djvu-interactive-url (&optional color interrupt)
+  "Return URL specification for use in interactive calls."
+  (unless color (setq color djvu-color-url))
+  (let ((fmt (format "(%s) Page URL: " (or color djvu-color-url)))
+        (page "") num ignore)
+    (while (and (not ignore)
+                (or (not (integerp (setq num (string-to-number page))))
+                    (< num 1) (< (djvu-doc-pagemax) num)))
+      (setq page (read-string fmt))
+      (if (and interrupt (string= "" page)) (setq ignore t)))
+    (unless ignore (concat "#" page))))
+
+(defsubst djvu-color-string-to-hex (color i)
+  "Convert rgb COLOR string (part I) to hex number."
+  (string-to-number (substring-no-properties
+                     (cdr (assoc color djvu-color-alist))
+                     (1+ (* i 2)) (+ 3 (* i 2))) 16))
+
+(defun djvu-color-background (color background opacity)
+  "For rgb COLOR and BACKGROUND apply OPACITY.
+Return the new rgb color string."
+  (let* ((str "#")
+         ;; Why opacity squared??
+         (a (/ (float (* opacity opacity)) 10000))
+         (b (- 1 a)))
+    (dotimes (i 3 str)
+      (setq str (concat str (format "%X"
+            (round (+ (* a (djvu-color-string-to-hex color i))
+                      (* b (djvu-color-string-to-hex background i))))))))))
+
+;;; Djvu modes
+
+(defvar djvu-read-mode-map
+  (let ((km (make-sparse-keymap)))
+    (define-key km "i"           'djvu-image-mode)
+    (define-key km "v"           'djvu-view)
+    (define-key km "\C-c\C-v"    'djvu-view)
+    (define-key km "n"           'djvu-next-page)
+    (define-key km "p"           'djvu-prev-page)
+    (define-key km "g"           'djvu-goto-page)
+    (define-key km "k"           'djvu-kill-doc)
+    (define-key km "\C-c\C-c"    'djvu-process)
+    (define-key km "\C-x\C-s"    'djvu-save)
+
+    (define-key km "h"           'djvu-highlight)
+    (define-key km "u"           'djvu-url)
+    (define-key km "a"           'djvu-switch-annot)
+    (define-key km "A"           'djvu-display-annot-all)
+
+    (define-key km "c"           'djvu-comment)
+    (define-key km "C"           'djvu-comment-pushpin)
+    (define-key km "b"           'djvu-bookmark)
+    (define-key km "m"           'djvu-himark)
+    (define-key km "o"           'djvu-switch-outline)
+
+    (define-key km "s"           'djvu-split-word)
+    (define-key km "w"           'djvu-merge-words)
+    (define-key km "l"           'djvu-merge-lines)
+
+    (define-key km "t"           'djvu-switch-text)
+    (define-key km "T"           'djvu-display-text-all)
+    km)
+  "Keymap for Djvu Read Mode.
+This is a child of `special-mode-map'.")
+
+(easy-menu-define
+  djvu-read-menu djvu-read-mode-map "Djvu Menu"
+  '("Djvu"
+    ["View File" djvu-view t]
+    ["Image File" djvu-image-mode t]
+    ["Go to Page" djvu-goto-page t]
+    ["Process Doc" djvu-process t]
+    ["Save Doc" djvu-save t]
+    "---"
+    ["Split Word" djvu-split-word t]
+    ["Merge Words" djvu-merge-words t]
+    ["Merge Lines" djvu-merge-lines t]
+    ["Switch to Text" djvu-switch-text t]
+    "---"
+    ["Highlight Region" djvu-highlight t]
+    ["URL over Region" djvu-url t]
+    ["Himark Region" djvu-himark t]
+    ["Add Comment" djvu-comment t]
+    ["Add Comment w/pushpin" djvu-comment-pushpin t]
+    ["Switch to Annotations" djvu-switch-annot t]
+    "---"
+    ["Show all Text" djvu-display-text-all t]
+    ["Show all Annotations" djvu-display-annot-all t]
+    ["Resolve all URLs" djvu-resolve-all-urls t]
+    ["Process all Annotations" djvu-process-all t]
+    ["Remove Annot / Outline" djvu-make-clean t]
+    "---"
+    ["Add Bookmark" djvu-bookmark t]
+    ["Switch to Outline" djvu-switch-outline t]
+    "---"
+    ["Quit Djvu" quit-window t]
+    ["Kill Djvu buffers" djvu-kill-doc t]))
+
+(define-derived-mode djvu-read-mode special-mode "Djview"
+  "Mode for reading Djvu files."
+  (setq mode-line-buffer-identification
+        (list 24 (buffer-name) "  "
+              '(:eval (format "p%d" (djvu-doc-page))))))
+
+(defvar djvu-edit-mode-map
+  (let ((km (make-sparse-keymap)))
+    (define-key km "\C-c\C-r"    'djvu-switch-read)
+    (define-key km "\C-c\C-g"    'djvu-goto-page)
+    (define-key km "\C-c\C-s"    'djvu-split-word-internal)
+    (define-key km "\C-c\C-m"    'djvu-merge-words-internal)
+    (define-key km "\C-c\M-m"    'djvu-merge-lines-internal)
+    (define-key km "\C-c\C-c"    'djvu-process)
+    (define-key km "\C-x\C-s"    'djvu-save)
+    (define-key km "\C-c\C-v"    'djvu-view)
+    (define-key km "\C-c\C-k"    'djvu-kill-doc)
+    km)
+  "Keymap for Djvu Annot Mode.
+This is a child of `text-mode-map'.")
+
+(easy-menu-define
+  djvu-annot-menu djvu-edit-mode-map "Djvu Menu"
+  '("Djvu"
+    ["Go to Page" djvu-goto-page t]
+    ["Switch to Read" djvu-switch-read t]
+    ["Process Doc" djvu-process t]
+    ["Save Doc" djvu-save t]
+    "---"
+    ["Switch to Text" djvu-switch-text t]
+    ["Split Word" djvu-split-word-internal t]
+    ["Merge Words" djvu-merge-words-internal t]
+    ["Merge Lines" djvu-merge-lines-internal t]
+    "---"
+    ["Switch to Annot" djvu-switch-annot t]
+    "---"
+    ["Quit Djvu" quit-window t]
+    ["Kill Djvu buffers" djvu-kill-doc t]))
+
+(define-derived-mode djvu-edit-mode emacs-lisp-mode "Djvu Edit"
+  "Mode for editing (parts of) Djvu files."
+  (setq mode-line-buffer-identification
+        (list 24 (buffer-name) "  "
+              '(:eval (format "p%d" (djvu-doc-page))))))
+
+;;; General Setup
+
+;;;###autoload
+(defun djvu-find-file (file &optional page view)
+  "Read and edit Djvu FILE on PAGE.
+If VIEW is non-nil start external viewer."
+  (interactive
+   (list (read-file-name "Find Djvu file: " nil nil nil nil
+                         (lambda (f)
+                           (or (equal "djvu" (file-name-extension f))
+                               (file-directory-p f))))
+         (prefix-numeric-value current-prefix-arg)))
+  (unless page (setq page 1))
+  (setq file (expand-file-name file))
+  (unless (file-regular-p file)
+    (error "Cannot open Djvu file `%s'." file))
+  ;; Initialize `djvu-doc' for FILE.
+  (let* ((basename (file-name-sans-extension
+                    (file-name-nondirectory file)))
+         (read-buf  (concat basename (nth 0 djvu-buffer-name-extensions)))
+         (text-buf  (concat basename (nth 1 djvu-buffer-name-extensions)))
+         (annot-buf (concat basename (nth 2 djvu-buffer-name-extensions)))
+         (outline-buf (concat basename (nth 3 djvu-buffer-name-extensions)))
+         (buffers (list text-buf read-buf annot-buf outline-buf))
+         doc)
+    ;; Do nothing if we are already visiting FILE such that all required
+    ;; buffers are properly defined.  If some buffers were killed
+    ;; do not attempt to recycle the remaining buffers.
+    (if (eval (cons 'and (mapcar 'get-buffer buffers)))
+        (with-current-buffer read-buf
+          (setq doc djvu-doc))
+      (setq doc (make-vector djvu-doc-length nil))
+      (dolist (buf buffers)
+        (if (get-buffer buf)  (kill-buffer buf)))
+      (djvu-doc-set-file file doc)
+      (djvu-doc-set-basename basename doc)
+      (djvu-doc-set-text-buf (get-buffer-create text-buf) doc)
+      (djvu-doc-set-read-buf (get-buffer-create read-buf) doc)
+      (djvu-doc-set-annot-buf (get-buffer-create annot-buf) doc)
+      (djvu-doc-set-outline-buf (get-buffer-create outline-buf) doc)
+      ;; Initialize all buffers.
+      (dolist (buf (list (djvu-doc-text-buf doc) (djvu-doc-annot-buf doc)
+                         (djvu-doc-outline-buf doc)))
+        (with-current-buffer buf
+          (djvu-edit-mode)
+          (setq djvu-doc doc)
+          (cd (file-name-directory (djvu-doc-file)))
+          (add-hook 'post-command-hook 'djvu-modified nil t)))
+      (with-current-buffer (djvu-doc-read-buf doc)
+        (djvu-read-mode)
+        (setq djvu-doc doc)
+        (cd (file-name-directory (djvu-doc-file)))
+        (add-hook 'post-command-hook 'djvu-modified nil t))
+      (djvu-init-page doc page))
+    (if view (djvu-view doc))
+    (switch-to-buffer read-buf)))
+
+(defun djvu-init-page (&optional doc page)
+  "For Djvu DOC initialize PAGE."
+  (if (djvu-doc-pagemax doc) (djvu-save doc t))
+  (djvu-doc-set-pos nil doc)
+  (if page (djvu-doc-set-page page doc))
+  (let* ((doc (or doc djvu-doc))
+         (new (not (djvu-doc-pagemax doc)))
+         object alist)
+    (with-temp-buffer
+      (djvu-djvused doc t "-e"
+                    (format "%sselect %d; size; print-txt; print-ant;"
+                            (if new "n; ls; print-outline; " "")
+                            (djvu-doc-page doc)))
+      (goto-char (point-min))
+      (when new
+        ;; page max
+        (djvu-doc-set-pagemax (read (current-buffer)) doc)
+        ;; page id
+        (let (page-id)
+          (while (progn
+                   (skip-chars-forward " \t\n")
+                   (looking-at "\\(?:\\([0-9]+\\)[ \t]+\\)?\\([PIAT]\\)[ \t]+\\([0-9]+\\)[ \t]+\\([^ \t\n]+\\)$"))
+            (if (match-string 1)
+                ;; page-id is an alist with elements (PAGE-NUM . FILE-ID)
+                (push (cons (match-string 1) (match-string 4)) page-id))
+            (goto-char (match-end 0)))
+          (unless (eq (djvu-doc-pagemax doc) (length page-id))
+            (error "Page id list broken"))
+          (djvu-doc-set-page-id (nreverse page-id) doc))
+        ;; bookmarks
+        (skip-chars-forward " \t\n")
+        (when (looking-at "(bookmarks")
+          (setq object (read (current-buffer)))
+          (djvu-decode-outline (cdr object))
+          (with-current-buffer (djvu-doc-outline-buf doc)
+            (insert "(bookmarks")
+            (let (print-escape-newlines)
+              (djvu-insert-outline (cdr object) " "))
+            (insert ")\n")
+            (goto-char (point-min))
+            (set-buffer-modified-p nil)
+            (setq buffer-undo-list nil))))
+
+      ;; page size
+      (skip-chars-forward " \t\n")
+      (if (looking-at "width=\\([[:digit:]]+\\)[ \t]+height=\\([[:digit:]]+\\)$")
+          (djvu-doc-set-pagesize (cons (string-to-number (match-string 1))
+                                       (string-to-number (match-string 2))) doc)
+        (error "No pagesize"))
+
+      ;; raw text
+      (goto-char (match-end 0))
+      (skip-chars-forward " \t\n")
+      (setq object (if (looking-at "(\\(page\\|column\\|region\\|para\\|line\\|word\\|char\\)")
+                       (read (current-buffer))))
+      (djvu-decode-text object)
+      (with-current-buffer (djvu-doc-text-buf doc)
+        (erase-buffer)
+        (djvu-insert-text object "")
+        (insert "\n")
+        (goto-char (point-min))
+        (set-buffer-modified-p nil)
+        (setq buffer-undo-list nil))
+
+      ;; Set up read buffer
+      (djvu-init-read doc object)
+
+      ;; Set up annotations buffer:
+      (save-excursion
+        (save-restriction
+          (narrow-to-region (point) (point-max))
+          (djvu-hide-hash)))
+      (setq object nil)
+      (while (progn (skip-chars-forward " \t\n") (not (eobp)))
+        (if (looking-at "(\\(background\\|zoom\\|mode\\|align\\|maparea\\|metadata\\)\\>")
+            (push (read (current-buffer)) object)
+          (error "Unknown annotation `%s'" (buffer-substring-no-properties
+                                           (point) (line-end-position)))))
+      ;; To simplify the editing of annotations, identify mapareas (rect)
+      ;; sharing the same text string.
+      (dolist (elt object)
+        (if (not (eq 'maparea (car elt)))
+            (push elt alist)
+          (setcar (cdr elt) (decode-coding-string (nth 1 elt) 'utf-8))
+          (setcar (nthcdr 2 elt) (decode-coding-string (nth 2 elt) 'utf-8))
+          (cond ((eq 'rect (car (nth 3 elt))) ; rect
+                 (let ((rect (djvu-rect (nth 3 elt)))
+                       e)
+                   (setcdr (nthcdr 2 elt) (nthcdr 4 elt)) ; remove rect destructively
+                   ;; The new elements of alist are cons cells, where the car is the
+                   ;; maparea without rect, and the cdr is the list of rect areas.
+                   ;; Even if we have just an empty string, we still want to massage
+                   ;; the rect box.
+                   (if (or (string= "" (nth 2 elt))
+                           (not (setq e (assoc elt alist))))
+                       (push (cons elt (list rect)) alist)
+                     (setcdr e (cons rect (cdr e))))))
+                ((eq 'text (car (nth 3 elt))) ; text
+                 (setcar (nthcdr 3 elt) (djvu-rect (nth 3 elt)))
+                 (push elt alist))
+                (t (push elt alist)))))
+      ;; Pretty print annotations.
+      (with-current-buffer (djvu-doc-annot-buf doc)
+        (let ((standard-output (current-buffer))
+              print-escape-newlines)
+          (erase-buffer)
+          (dolist (elt alist)
+            (cond ((consp (car elt)) ;; maparea with list of rects
+                   (let ((c (car elt)))
+                     (insert (format "(maparea %S\n %S\n ("
+                                     (djvu-resolve-url (nth 1 c) doc) (nth 2 c))
+                             (mapconcat 'prin1-to-string (cdr elt) "\n  ") ")\n " ; rect
+                             (mapconcat 'prin1-to-string (nthcdr 3 c) " ") ; rest
+                             ")")))
+                  ((not (eq 'maparea (car elt)))
+                   (prin1 elt))
+                  ((eq 'text (car (nth 3 elt))) ; text
+                   (insert (format "(maparea %S\n %S\n " (nth 1 elt) (nth 2 elt))
+                           (mapconcat 'prin1-to-string (nthcdr 3 elt) " ") ; rest
+                           ")"))
+                  (t (error "Djvu maparea %s undefined" (car (nth 3 elt)))))
+            (insert "\n\n")))
+        (djvu-hide-hash t)
+        (goto-char (point-max))
+        (set-buffer-modified-p nil)
+        (setq buffer-undo-list nil)))))
+
+(defun djvu-resolve-url (url &optional doc)
+  "Resolve internal URLs.  See variable `djvu-resolve-url'."
+  (cond ((eq 'long djvu-resolve-url)
+         ;; Replace page number by file id
+         (cond ((string-match "\\`#[0-9]+\\'" url)
+                (let ((page-id (assoc (substring-no-properties url 1)
+                                      (djvu-doc-page-id doc))))
+                  (if page-id
+                      (concat "#" (cdr page-id))
+                    (error "Page id broken: %s" url))))
+               ((string-match "\\`#" url)
+                (if (rassoc (substring-no-properties url 1)
+                            (djvu-doc-page-id doc))
+                    url
+                  (error "Page id broken: %s" url)))
+               (t url))) ; some other URL
+        ((eq 'short djvu-resolve-url)
+         ;; Replace file id by page number
+         (cond ((string-match "\\`#[0-9]+\\'" url)
+                url)
+               ((string-match "\\`#" url)
+                (let ((page-id (rassoc (substring-no-properties url 1)
+                                       (djvu-doc-page-id doc))))
+                  (if page-id
+                      (concat "#" (car page-id))
+                    (error "Page id broken: %s" url))))
+               (t url))) ; some other URL
+        (t url))) ; do nothing
+
+(defun djvu-resolve-all-urls (dir)
+  "Resolve all internal URLs in a Djvu file."
+  (interactive
+   (list (intern (completing-read "Direction: " '((long) (short)) nil t))))
+  (if (djvu-modified) (error "Djvu file should be saved"))
+  (let ((page-id (djvu-doc-page-id djvu-doc))
+        (djvu-all-buffer (generate-new-buffer " *djvu*"))
+        (djvu-resolve-url dir))
+    (djvu-display-annot-all)
+    (with-current-buffer djvu-all-buffer
+      (goto-char (point-min))
+      (cond ((eq dir 'long)
+             (while (re-search-forward "^(maparea[ \t]+\"#\\([0-9]+\\)\"" nil t)
+               (replace-match (cdr (assoc (match-string 1) page-id))
+                              nil nil nil 1)))
+            ((eq dir 'short)
+             (while (re-search-forward "^(maparea[ \t]+\"#\\([^\"]+\\)\"" nil t)
+               (replace-match (car (rassoc (match-string 1) page-id))
+                              nil nil nil 1)))))
+    (djvu-process-all)
+    (kill-buffer djvu-all-buffer)
+    (with-current-buffer (djvu-doc-outline-buf)
+      (set-buffer-modified-p t))
+    (djvu-save)))
+
+(defun djvu-rect (rect &optional back)
+  "Convert (rect xmin ymin width height) to (rect xmin ymin xmax ymax).
+If BACK is non-nil do inverse transformation."
+  (let* ((f (if back '- '+))
+         (lst (list (nth 0 rect) (nth 1 rect) (nth 2 rect)
+                    (funcall f (nth 3 rect) (nth 1 rect))
+                    (funcall f (nth 4 rect) (nth 2 rect)))))
+    ;; Only for back transforms we might get an error...
+    (if (or (> 0 (nth 3 lst)) (> 0 (nth 4 lst)))
+        (error "Annotation rect dimensions %s, %s" (nth 3 lst) (nth 4 lst)))
+    lst))
+
+(defun djvu-view (&optional doc)
+  "Start Djview for DOC."
+  (interactive (list djvu-doc))
+  (if (not (window-system))
+      (message "No window system available")
+    (djvu-kill-view doc)
+    (let* ((djvu-doc doc)
+           (pos (or (djvu-doc-pos) (djvu-read-pos)))
+           (px (/ (float (car pos))
+                  (float (car (djvu-doc-pagesize)))))
+           (py (- 1 (/ (float (cdr pos))
+                       (float (cdr (djvu-doc-pagesize))))))
+           process-connection-type)  ; Use a pipe.
+      (if (or (< px 0) (< 1 px) (< py 0) (< 1 py))
+          (error "px=%s, py=%s out of range" px py))
+      (djvu-doc-set-pos nil)
+      (djvu-doc-set-view-proc
+       (start-process "djview" nil "djview"
+                      (format "-page=%d" (djvu-doc-page))
+                      (format "-showposition=%06f,%06f" px py)
+                      (djvu-doc-file))))))
+
+;;; Djvu Text mode
+
+(defun djvu-split-word (pos)
+  "Split word at position POS.
+This command operates on the read buffer."
+  (interactive "d")
+  (let ((beg (djvu-property-beg pos 'word))
+        (rpos (djvu-read-pos pos)))
+    (with-current-buffer (djvu-doc-text-buf)
+      (djvu-split-word-internal (djvu-locate-pos 'word rpos)
+                                (- pos beg))))
+  ;; Things get rather confusing without updating the read buffer.
+  ;; So we better save everything.
+  (djvu-save))
+
+(defun djvu-split-word-internal (wpos split)
+  "Split word at position WPOS at character position SPLIT.
+This command operates on the text buffer."
+  (interactive
+   (let* ((pnt (point))
+          (pps (parse-partial-sexp (line-beginning-position) pnt)))
+     (unless (nth 3 pps) (error "Not inside string"))
+     (list pnt (1- (- pnt (nth 8 pps))))))
+  (goto-char wpos)
+  (beginning-of-line)
+  (skip-chars-forward " \t")
+  (setq wpos (point))
+  (let ((indent (buffer-substring-no-properties
+                 (line-beginning-position) wpos))
+        word)
+    (condition-case nil
+        (progn
+          (setq word (read (current-buffer)))
+          (unless (eq 'word (car word)) (error "invalid")))
+      (error (error "Syntax error in raw text")))
+    (if (or (< split 1) (<= (length (nth 5 word)) split))
+        (error "nothing to split"))
+    (delete-region wpos (point))
+    ;; To split the bounding box horizontally, we take the fraction
+    ;; of the number of characters in each fragment.  This scheme
+    ;; is only approximate, but it is better than nothing.
+    (let ((frac (round (* (/ (float split) (length (nth 5 word)))
+                          (- (nth 3 word) (nth 1 word))))))
+      (djvu-insert-text (list 'word (nth 1 word) (nth 2 word)
+                              (+ (nth 1 word) frac) (nth 4 word)
+                              (substring (nth 5 word) 0 split)) "")
+      (insert "\n" indent)
+      (djvu-insert-text (list 'word (+ (nth 1 word) frac 1) (nth 2 word)
+                              (nth 3 word) (nth 4 word)
+                              (substring (nth 5 word) split)) ""))))
+
+(defun djvu-merge-words (beg end)
+  "Merge words between positions BEG and END.
+This command operates on the read buffer."
+  (interactive "r")
+  (let ((bpos (djvu-read-pos beg))
+        (epos (djvu-read-pos (1- end))))
+    (with-current-buffer (djvu-doc-text-buf)
+      (djvu-merge-words-internal (djvu-locate-pos 'word bpos)
+                                 (djvu-locate-pos 'word epos))))
+  ;; Things get rather confusing without updating the read buffer.
+  ;; So we better save everything.
+  (djvu-save))
+
+(defun djvu-merge-words-internal (beg end)
+  "Merge words between positions BEG and END.
+This command operates on the text buffer."
+  (interactive "r")
+  (let (words)
+    (goto-char end)
+    (if (bolp) (setq end (1- end)))
+    (goto-char beg)
+    (beginning-of-line)
+    (skip-chars-forward " \t")
+    (setq beg (point))
+    (condition-case nil
+        (while (< (point) end)
+          (push (read (current-buffer)) words)
+          (unless (eq 'word (caar words)) (error "invalid")))
+      (error (error "Syntax error in raw text")))
+    (delete-region beg (point))
+    (let ((object (apply 'list 'word 0 0 0 0 (nreverse words))))
+      (djvu-process-text-bbox object 0 (make-vector 3 nil))
+      (setcdr (nthcdr 4 object) (list (mapconcat (lambda (w) (nth 5 w))
+                                                 (nthcdr 5 object) "")))
+      (djvu-insert-text object "")))
+  (undo-boundary))
+
+(defun djvu-merge-lines (beg end)
+  "Merge lines between positions BEG and END.
+This command operates on the read buffer."
+  (interactive "r")
+  (let ((bpos (djvu-read-pos beg))
+        (epos (djvu-read-pos (1- end))))
+    (with-current-buffer (djvu-doc-text-buf)
+      (djvu-merge-lines-internal (djvu-locate-pos 'word bpos)
+                                 (djvu-locate-pos 'word epos))))
+  ;; Things get rather confusing without updating the read buffer.
+  ;; So we better save everything.
+  (djvu-save))
+
+(defun djvu-merge-lines-internal (beg end)
+  "Merge lines between positions BEG and END.
+This command operates on the text buffer."
+  (interactive "r")
+  ;; Calculate proper value of END
+  (goto-char end)
+  (beginning-of-line)
+  (unless (looking-at "[ \t]*(line ")
+    (re-search-backward "^[ \t]*(line ")
+    (forward-sexp)
+    (setq end (point)))
+  ;; Calculate proper value of BEG
+  (goto-char beg)
+  (beginning-of-line)
+  (unless (looking-at "[ \t]*(line ")
+    (re-search-backward "^[ \t]*(line "))
+  (skip-chars-forward " \t")
+  (setq beg (point))
+  (unless (< beg end) (error "Nothing to merge"))
+  ;; Parsing fails if the words belong to different paragraphs,
+  ;; regions or columns. We would have to determine the lowest common
+  ;; object level of these words. Then we could possibly merge
+  ;; everything (!) within this level
+  (if (re-search-forward "^[ \t]*\\(?:para\\|region\\|column\\)" end t)
+      (error "Cannot merge paragraphs, regions or columns"))
+  (let (words)
+    ;; Collect all words
+    (condition-case nil
+        (while (<= (point) end)
+          (cond ((looking-at "[ \t]*(word ")
+                 (push (read (current-buffer)) words))
+                ((not (looking-at "[ \t]*(line "))
+                 (error "invalid")))
+          (forward-line))
+      (error (error "Syntax error in raw text")))
+    ;; Remove old words
+    (goto-char beg)
+    (while (let ((start (point)))
+             (forward-sexp)
+             (or (<= (point) end)
+                 (progn (goto-char start) nil))))
+    (delete-region beg (point))
+    ;; Re-insert words
+    (let ((indent (buffer-substring-no-properties
+                   (line-beginning-position) (point)))
+          (object (apply 'list 'line 0 0 0 0 (nreverse words))))
+      (djvu-process-text-bbox object 0 (make-vector 3 nil))
+      (delete-region (line-beginning-position) (point))
+      (djvu-insert-text object indent)))
+  (undo-boundary))
+
+(defun djvu-decode-text (object &optional encode)
+  (if (stringp (nth 5 object))
+      (setcar (nthcdr 5 object)
+              (if encode
+                  (encode-coding-string (nth 5 object) 'utf-8)
+                (decode-coding-string (nth 5 object) 'utf-8)))
+    (dolist (elt (nthcdr 5 object))
+      (djvu-decode-text elt encode))))
+
+(defun djvu-insert-text (object indent)
+  ;; This function is called recursively.
+  (insert indent "("
+          (mapconcat 'prin1-to-string
+                     (list (nth 0 object) (nth 1 object) (nth 2 object)
+                           (nth 3 object) (nth 4 object)) " "))
+  (let ((tail (nthcdr 5 object))
+        (indent (concat indent " ")))
+    (if (stringp (car tail))
+        ;; use `prin1-to-string' as we use this function both for
+        ;; utf-8 and encoded stuff.
+        (insert " " (prin1-to-string (car tail)) ")")
+      (dolist (elt tail)
+        (insert "\n")
+        (djvu-insert-text elt indent))
+      (insert ")"))))
+
+(defun djvu-process-text (script &optional doc)
+  (let ((doc (or doc djvu-doc))
+        object)
+    (with-current-buffer (djvu-doc-text-buf doc)
+      (save-excursion
+        (goto-char (point-min))
+        (condition-case nil
+            (setq object (read (current-buffer)))
+          (error (error "Syntax error in raw text")))
+        (skip-chars-forward " \t\n")
+        ;; We should have swallowed all raw text.
+        (unless (eobp)
+          (error "Syntax error in raw text (end of buffer)"))))
+    (djvu-process-text-bbox object 0 (make-vector 7 nil))
+    ;; Update read buffer
+    (djvu-init-read doc object)
+    ;; FIXME: Should we also update the text buffer?
+    ;; A transparent solution would update only the part of the buffer
+    ;; that we actually changed so that `undo' works as expected.
+    (djvu-decode-text object t)
+    (with-temp-buffer
+      (insert (format "select %d\nremove-txt\nset-txt\n" (djvu-doc-page doc)))
+      (djvu-insert-text object "")
+      (insert "\n.\n")
+      (write-region nil nil script t 0))))
+
+(defun djvu-process-text-bbox (object depth coords)
+  "Evaluate bounding box for text OBJECT recursively."
+  (if (stringp (nth 5 object))
+      (aset coords depth (vector (nth 1 object) (nth 2 object)
+                                 (nth 3 object) (nth 4 object)))
+    (let ((depth1 (1+ depth))
+          coord)
+      (aset coords depth nil)
+      (dolist (elt (nthcdr 5 object))
+        (djvu-process-text-bbox elt depth1 coords)
+        (if (setq coord (aref coords depth))
+            (let ((coord1 (aref coords depth1)))
+              (aset coord 0 (min (aref coord 0) (aref coord1 0)))
+              (aset coord 1 (min (aref coord 1) (aref coord1 1)))
+              (aset coord 2 (max (aref coord 2) (aref coord1 2)))
+              (aset coord 3 (max (aref coord 3) (aref coord1 3))))
+          (aset coords depth (copy-sequence (aref coords depth1)))))
+      (if (setq coord (aref coords depth))
+          (setcdr object (apply 'list (aref coord 0) (aref coord 1)
+                                (aref coord 2) (aref coord 3)
+                                (nthcdr 5 object)))
+        (error "No coords??")))))
+
+(defun djvu-display-text-all ()
+  "Display text for all pages."
+  (interactive)
+  (let ((doc djvu-doc)
+        (buf (get-buffer-create djvu-all-buffer)))
+    ;; Put this in a separate buffer!
+    (with-current-buffer buf
+      (let (buffer-read-only)
+        (emacs-lisp-mode)
+        (erase-buffer)
+        (djvu-djvused doc t "-e" "output-txt")
+        (goto-char (point-min)))
+      (set-buffer-modified-p nil)
+      (setq buffer-read-only t))
+    (switch-to-buffer buf)))
+
+(defun djvu-process-all ()
+  "Process all pages.  Use at your own risk.  You get what you want."
+  (interactive)
+  (let ((buf (get-buffer djvu-all-buffer))
+        script)
+    (unless buf (error "No buffer `%s'" buf))
+    (unless djvu-doc (error "No Djvu doc"))
+    (unwind-protect
+        (progn
+          (setq script (make-temp-file "djvu-el-"))
+          (with-temp-file script (insert-buffer-substring buf))
+          (djvu-djvused djvu-doc nil "-f" script "-s"))
+      (djvu-delete-file script))))
+
+;;; Djvu Read mode
+
+(defun djvu-init-read (doc object)
+  (with-current-buffer (djvu-doc-read-buf doc)
+    (let (buffer-read-only)
+      (erase-buffer)
+      (djvu-insert-read object))
+    (set-buffer-modified-p nil)
+    (setq buffer-read-only t)
+    (goto-char (point-min))
+    (djvu-image)))
+
+(defun djvu-insert-read (object)
+  "Display text OBJECT."
+  ;; This function is called recursively.
+  (let ((opoint (point))
+        (tail (nthcdr 5 object)))
+    (if (stringp (car tail))
+        (insert (decode-coding-string (car tail) 'utf-8))
+      (let* ((obj (caar tail))
+             (sep (cond ((eq 'line obj) "\n")
+                        ((eq 'word obj) "\s")
+                        ((eq 'char obj) nil)
+                        (t "\n\n")))
+             elt)
+        (while (setq elt (pop tail))
+          (djvu-insert-read elt)
+          (if (and sep tail (not (looking-back sep)))
+              (insert sep)))))
+    (put-text-property opoint (point) (car object)
+                       (vector (nth 1 object) (nth 2 object)
+                               (nth 3 object) (nth 4 object)))))
+
+(defun djvu-read-pos (&optional point)
+  "Return Djvu position (x . y) of POINT in Djvu Read buffer."
+  (with-current-buffer (djvu-doc-read-buf)
+    ;; An empty djvu page gives us something like (page 0 0 0 0 "")
+    (if (= (point-min) (point-max))
+        ;; Take the center of an empty page
+        (cons (/ (car (djvu-doc-pagesize)) 2)
+              (/ (cdr (djvu-doc-pagesize)) 2))
+      (unless point (setq point (point)))
+      (djvu-mean-pos ; Return mean coordinates
+       (or (get-text-property point 'word)
+           (get-text-property (1- point) 'word)
+           (get-text-property
+            ;; Search backward because more often point is at the end
+            ;; of region we operated on
+            (1- (previous-single-property-change point 'word)) 'word))))))
+
+(defun djvu-mean-pos (reg)
+  "For region REG return mean coordinates (x . y)."
+  ;; This works both for REG being vectors and lists.
+  (cons (/ (+ (elt reg 0) (elt reg 2)) 2)
+        (/ (+ (elt reg 1) (elt reg 3)) 2)))
+
+(defun djvu-locate-pos (object pos)
+  "Locate OBJECT at position POS in the text or annotation buffer.
+If found, return corresponding position. Otherwise, return nil."
+  (goto-char (point-min))
+  (when pos
+    (let ((re (concat "\\<" (symbol-name object) "\\> +"
+                      (mapconcat 'identity
+                                 (make-list 4 "\\([[:digit:]]+\\)") " +")
+                      "\\( +\"\\)?"))
+          done)
+      (while (and (not done)
+                  (re-search-forward re nil t))
+        (let ((x1 (string-to-number (match-string 1)))
+              (x2 (string-to-number (match-string 3)))
+              (y1 (string-to-number (match-string 2)))
+              (y2 (string-to-number (match-string 4))))
+          (setq done (and (<= x1 (car pos))
+                          (<= (car pos) x2)
+                          (<= y1 (cdr pos))
+                          (<= (cdr pos) y2)))))
+      (if done (point)
+        (goto-char (point-min)) nil))))
+
+(defsubst djvu-dist (width height)
+  (+ (* width width) (* height height)))
+
+(defun djvu-locate-read-pos (pos)
+  "Locate POS in Djvu Read buffer. Return corresponding position."
+  (with-current-buffer (djvu-doc-read-buf)
+    (if (not pos)
+        (goto-char (point-min))
+      (let ((hpos (car pos)) (vpos (cdr pos))
+            (good-dist (djvu-dist (car (djvu-doc-pagesize))
+                                  (cdr (djvu-doc-pagesize))))
+            (pnt (point-min)) (good-pnt (point-min))
+            word dist)
+        (while (progn
+                 (when (setq word (get-text-property pnt 'word))
+                   (setq dist (djvu-dist (- (/ (+ (aref word 0) (aref word 2)) 2) hpos)
+                                         (- (/ (+ (aref word 1) (aref word 3)) 2) vpos)))
+                   (if (< dist good-dist)
+                       (setq good-pnt pnt good-dist dist)))
+                 (setq pnt (next-single-property-change pnt 'word))))
+        (goto-char good-pnt)))))
+
+;;; Djvu Annotation mode
+
+(defun djvu-comment-interactive (&optional border backclr textclr pushpin)
+  "Interactive spec for `djvu-comment' and friends."
+  (let ((pos (djvu-read-pos))
+        (pagesize (djvu-doc-pagesize))
+        (color (djvu-interactive-color djvu-color-highlight)))
+    (list "" (read-string (format "(%s) Text: " color))
+          (list (car pos) (cdr pos)
+                (+ (car pos) (/ (car pagesize) 2))
+                (+ (cdr pos) (/ (cdr pagesize) 30)))
+          border
+          (or backclr
+              (djvu-color-background color djvu-color-background
+                                     djvu-opacity))
+          textclr pushpin)))
+
+(defsubst djvu-insert-color (key color)
+  (if color
+      (format " (%s %s)" key
+              (cond ((string-match "\\`#" color) color)
+                    ((cdr (assoc color djvu-color-alist)))
+                    (t (error "Color `%s' undefined" color))))
+    ""))
+
+(defun djvu-comment (url text rect &optional border backclr textclr pushpin)
+  "Using URL and TEXT, highlight RECT.
+This defines a rect area for djvused."
+  (interactive (djvu-comment-interactive))
+  (with-current-buffer (djvu-doc-annot-buf)
+    (goto-char (point-max))
+    (let (print-escape-newlines)
+      (insert (format "(maparea %S\n %S\n " url (djvu-fill text))
+              (apply 'format "(text %d %d %d %d)" rect)
+              (if border (format " (%s)" border) "")
+              (djvu-insert-color "backclr" backclr)
+              (djvu-insert-color "textclr" textclr)
+              (if pushpin " (pushpin)" "")
+              ")\n\n"))
+    (undo-boundary)))
+
+(defun djvu-comment-pushpin (url text rect
+                                 &optional border backclr textclr pushpin)
+  (interactive (djvu-comment-interactive nil nil nil t))
+  (djvu-comment url text rect border backclr textclr pushpin))
+
+(defun djvu-himark (beg end url text &optional color opacity border)
+  "Himark region between BEG and END.
+This highlights the region between BEG and END and creates a bookmark entry."
+  (interactive
+   (let ((region (djvu-interactive-region)))
+     (list (car region) (cdr region) "" ""
+           djvu-color-himark djvu-opacity 'none)))
+  (djvu-highlight beg end url text color opacity border)
+  (djvu-bookmark (buffer-substring-no-properties beg end) (djvu-doc-page)))
+
+(defun djvu-url (beg end url text &optional color opacity border)
+  (interactive
+   (let* ((region (djvu-interactive-region))
+          (color (djvu-interactive-color djvu-color-url))
+          (url (djvu-interactive-url color)))
+     (list (car region) (cdr region) url "" color djvu-opacity 'xor)))
+  (djvu-highlight beg end url text color opacity border))
+
+(defun djvu-highlight (beg end url text &optional color opacity border)
+  "Highlight region between BEG and END, add annotation TEXT."
+  (interactive
+   (let ((region (djvu-interactive-region))
+         (color (djvu-interactive-color djvu-color-highlight)))
+     (list (car region) (cdr region) ""
+           (read-string (format "(%s) Annotation: " color))
+           color djvu-opacity 'none)))
+
+  (unless (get-text-property beg 'word)
+    (error "Start position `%s' not a word" beg))
+  (unless (get-text-property (1- end) 'word)
+    (error "End position `%s' not a word" end))
+  (let ((words (djvu-region-count beg end 'word))
+        (lines (djvu-region-count beg end 'line))
+        (paras (djvu-region-count beg end 'para))
+        (regions (djvu-region-count beg end 'region))
+        (columns (djvu-region-count beg end 'column))
+        coords)
+    (unless (and (>= 1 paras) (>= 1 regions) (>= 1 columns))
+      (error "Region spans multiple paragraphs"))
+
+    (if (eq 1 lines)
+        (setq coords (list (djvu-scan-coords beg end 'word)))
+
+      (if (eq 2 lines)
+          (let ((c1 (djvu-scan-coords beg (djvu-property-end (1+ beg) 'line) 'word))
+                (c2 (djvu-scan-coords (djvu-property-beg (1- end) 'line) end 'word)))
+            ;; If BEG is beginning of first line, both lines share same left margin.
+            (if (and (= beg (djvu-property-beg beg 'line))
+                     (djvu-coords-justify t c1 c2))
+                (djvu-justify-coords 'min 0 c1 c2))
+            ;; If END is end of second line, both lines share same right margin.
+            (if (and (= end (djvu-property-end end 'line))
+                     (djvu-coords-justify nil c2 c1))
+                (djvu-justify-coords 'max 2 c1 c2))
+            (if (<= (aref c1 0) (aref c2 2))
+                ;; Lower bound of upper box and upper bound of lower box coincide.
+                (let ((tmp (/ (+ (aref c1 1) (aref c2 3)) 2)))
+                  (aset c1 1 tmp) (aset c2 3 tmp)))
+            (setq coords (list c1 c2)))
+        ;; 3 lines
+        (let* ((l1e (djvu-property-end (1+ beg) 'line))
+               (l2b (djvu-property-beg (1- end) 'line))
+               (c1  (djvu-scan-coords beg l1e 'word))
+               (ci  (djvu-scan-coords (1+ l1e) (1- l2b) 'line))
+               (c2  (djvu-scan-coords l2b end 'word)))
+          ;; If BEG is beginning of first line, all lines share same left margin.
+          (cond ((and (= beg (djvu-property-beg beg 'line))
+                      (djvu-coords-justify t c1 ci c2))
+                 (djvu-justify-coords 'min 0 c1 ci c2))
+                ((djvu-coords-justify t ci c2)
+                 (djvu-justify-coords 'min 0 ci c2)))
+          ;; If END is end of last line, all lines share same right margin.
+          (cond ((and (= end (djvu-property-end end 'line))
+                      (djvu-coords-justify nil c2 ci c1))
+                 (djvu-justify-coords 'max 2 c1 ci c2))
+                ((djvu-coords-justify nil c1 ci)
+                 (djvu-justify-coords 'max 2 c1 ci)))
+          (let ((tmp1 (/ (+ (aref c1 1) (aref ci 3)) 2))
+                (tmp2 (/ (+ (aref ci 1) (aref c2 3)) 2)))
+            ;; Lower bound of upper boxes and upper bound of lower boxes coincide.
+            (aset c1 1 tmp1) (aset ci 3 tmp1)
+            (aset ci 1 tmp2) (aset c2 3 tmp2))
+          (setq coords (list c1 ci c2)))))
+
+    (djvu-highlight-region url text coords color opacity border)))
+
+(defun djvu-highlight-region (url text coords &optional color opacity border)
+  "Using URL and TEXT, highlight COORDS.
+This defines a hilite area for djvused."
+    ;; Record position where annotation was made.
+  (let ((posl (mapcar 'djvu-mean-pos coords))
+        (n (length coords)))
+    (djvu-doc-set-pos (cons (/ (apply '+ (mapcar 'car posl)) n)
+                            (/ (apply '+ (mapcar 'cdr posl)) n))))
+  ;; Insert in Annotations buffer.
+  (with-current-buffer (djvu-doc-annot-buf)
+    (goto-char (point-max))
+    (let (print-escape-newlines)
+      (insert (format "(maparea %S\n %S\n (" url (djvu-fill text))
+              (mapconcat
+               (lambda (rect) (apply 'format "(rect %d %d %d %d)" (append rect nil)))
+               coords "\n  ") ")\n"
+               (djvu-insert-color "hilite" color)
+               (if opacity (format " (opacity %s)" opacity) "")
+               (if border (format " (%s)" border) "")
+               ")\n\n"))
+    (undo-boundary)))
+
+(defun djvu-fill (text)
+  "Fill string TEXT using `djvu-fill-column'."
+  (if djvu-fill-column
+      (with-temp-buffer
+        (insert text)
+        (let ((fill-column djvu-fill-column))
+          (fill-region (point-min) (point-max)))
+        (buffer-substring-no-properties
+         (point-min) (point-max)))
+    text))
+
+(defun djvu-property-beg (pnt prop)
+  ;; Assume that PNT has PROP.  Otherwise we would not know whether
+  ;; to search for it before or after PNT.
+  (let ((p1 (get-text-property pnt prop)))
+    (unless p1 (error "Position %s does not have property %s" pnt prop))
+    (if (> pnt (point-min))
+        (let ((p0 (get-text-property (1- pnt) prop)))
+          (if (eq p0 p1)
+              (setq pnt (previous-single-property-change
+                         pnt prop nil (point-min))))))
+    pnt))
+
+(defun djvu-property-end (pnt prop)
+  ;; Assume that (1- PNT) has PROP.  Otherwise we would not know whether
+  ;; to search for it before or after PNT.
+  (let ((p1 (get-text-property (1- pnt) prop)))
+    (unless p1 (error "Position %s does not have property %s" pnt prop))
+    (if (< pnt (point-max))
+        (let ((p0 (get-text-property pnt prop)))
+          (if (eq p0 p1)
+              (setq pnt (next-single-property-change
+                         (1- pnt) prop nil (point-max))))))
+    pnt))
+
+(defun djvu-coords-justify (left &rest ci)
+  "Return non-nil if rect coordinates CI shall be justified horizontally.
+If LEFT is nil analyze left boundaries of CI, otherwise the right boundaries."
+  (let ((xl (apply 'min (mapcar (lambda (c) (aref c 0)) ci)))
+        (xr (apply 'max (mapcar (lambda (c) (aref c 2)) ci))))
+    (> djvu-coords-justify
+       (/ (apply 'max (mapcar (lambda (cj)
+                                (abs (float (if left (- (aref cj 0) xl)
+                                              (- xr (aref cj 2))))))
+                              ci))
+          (float (- xr xl))))))
+
+(defun djvu-justify-coords (fun n &rest ci)
+ "Pass Nth elements of arrays CI to function FUN.
+Set these elements to return value of FUN.
+If FUN is `min' or `max' these elements are set to the respective minimum
+or maximum among the Nth elements of all arrays CI."
+  (let ((tmp (apply fun (mapcar (lambda (c) (aref c n)) ci))))
+    (dolist (c ci)
+      (aset c n tmp))))
+
+(defun djvu-scan-coords (beg end prop)
+  "Between BEG and END calculate total bounding box for PROP."
+  ;; Assume that BEG has PROP.
+  (let ((coords (copy-sequence (get-text-property beg prop)))
+        (pnt beg) val)
+    (while (and (/= pnt end)
+                (setq pnt (next-single-property-change pnt prop nil end)))
+      (when (setq val (get-text-property pnt prop))
+        (aset coords 0 (min (aref coords 0) (aref val 0)))
+        (aset coords 1 (min (aref coords 1) (aref val 1)))
+        (aset coords 2 (max (aref coords 2) (aref val 2)))
+        (aset coords 3 (max (aref coords 3) (aref val 3)))))
+    coords))
+
+(defun djvu-region-count (beg end prop)
+  "Count regions between BEG and END with distinct non-nil values of PROP."
+  (let ((count 0)
+        (pnt beg))
+    (while (and (/= pnt end)
+                (setq pnt (next-single-property-change pnt prop nil end)))
+      (if (get-text-property (1- pnt) prop)
+          (setq count (1+ count))))
+    count))
+
+(defun djvu-process-annot (script &optional doc)
+  (let ((doc djvu-doc) object)
+    (with-temp-buffer
+      (insert-buffer-substring (djvu-doc-annot-buf doc))
+      (djvu-hide-hash)
+      (goto-char (point-min))
+      (while (progn (skip-chars-forward " \t\n") (not (eobp)))
+        (if (looking-at "(\\(background\\|zoom\\|mode\\|align\\|maparea\\|metadata\\)\\>")
+            (condition-case nil
+                (push (read (current-buffer)) object)
+              (error (error "Syntax error in annotations")))
+          (error "Unknown annotation `%s'" (buffer-substring-no-properties
+                                            (point) (line-end-position))))))
+    (setq object (nreverse object))
+    (dolist (elt object)
+      (when (eq 'maparea (car elt))
+        ;; URL
+        (setcar (cdr elt) (encode-coding-string (djvu-resolve-url (nth 1 elt)) 'utf-8))
+        ;; Comment
+        (setcar (nthcdr 2 elt) (encode-coding-string (nth 2 elt) 'utf-8))))
+
+    (with-temp-buffer
+      (let ((standard-output (current-buffer))
+            (print-escape-newlines t)
+            str)
+        (insert (format "select %d\nremove-ant\nset-ant\n"
+                        (djvu-doc-page doc)))
+        (dolist (elt object)
+          (cond ((not (eq 'maparea (car elt)))
+                 (prin1 elt)
+                 (insert "\n"))
+                ((consp (car (nth 3 elt))) ; rect
+                 (dolist (e (nth 3 elt))
+                   (insert (prin1-to-string
+                            (apply 'list (car elt) (nth 1 elt) (nth 2 elt)
+                                   (djvu-rect e t) (nthcdr 4 elt))) "\n")))
+                ((eq 'text (car (nth 3 elt))) ; text
+                 (insert (prin1-to-string
+                          (apply 'list (car elt) (nth 1 elt) (nth 2 elt)
+                                 (djvu-rect (nth 3 elt) t)
+                                 (nthcdr 4 elt))) "\n"))
+                (t (error "Djvu maparea %s undefined" (car (nth 3 elt))))))
+        (insert ".\n")
+        (djvu-hide-hash t))
+      (write-region nil nil script t 0))))
+
+(defun djvu-display-annot-all (&optional display)
+  "Print annotations for all pages."
+  (interactive (list t))
+  (let ((doc djvu-doc)
+        (buf (get-buffer-create djvu-all-buffer)))
+    ;; Put this in a separate buffer!
+    (with-current-buffer buf
+      (let (buffer-read-only)
+        (emacs-lisp-mode)
+        (erase-buffer)
+        (djvu-djvused doc t "-e" "output-ant")
+        (goto-char (point-min))
+        (while (re-search-forward "^(maparea" nil t)
+          (forward-sexp) ; jump over URL
+          ;; replace newlines within text
+          (let ((limit (save-excursion (forward-sexp) (point))))
+            (while (search-forward "\\n" limit t)
+              (replace-match "\n"))))
+        (goto-char (point-min)))
+      (set-buffer-modified-p nil)
+      (setq buffer-undo-list nil))
+    (if display (switch-to-buffer buf))))
+
+;;; Djvu Outline mode
+
+(defun djvu-bookmark (text page)
+  "Create bookmark"
+  (interactive
+   (let ((region (djvu-interactive-region)))
+     (list (read-string "Bookmark: " (buffer-substring-no-properties
+                                      (car region) (cdr region)))
+           (djvu-doc-page))))
+  ;; Remove newlines that are ignored anyway
+  (setq text (replace-regexp-in-string "\n" " " text))
+  (let (object)
+    (with-current-buffer (djvu-doc-outline-buf)
+      (goto-char (point-min))
+      (if (equal (point) (point-max))
+          (setq object (list 'bookmarks))
+        (condition-case nil
+            (setq object (read (current-buffer)))
+          (error (error "Syntax error in outline"))))
+      (unless (eq 'bookmarks (car object))
+        (error "No bookmarks"))
+      ;; No decoding/encoding necessary if we add another bookmark.
+      (setcdr object (sort (append (cdr object)
+                                   (list (list text (format "#%d" page))))
+                           (lambda (x y)
+                             (< (string-to-number (substring (nth 1 x) 1))
+                                (string-to-number (substring (nth 1 y) 1))))))
+      (erase-buffer)
+      (insert "(bookmarks")
+      (let (print-escape-newlines)
+        (djvu-insert-outline (cdr object) " "))
+      (insert ")\n")
+      (goto-char (point-min))
+      (undo-boundary))))
+
+(defun djvu-decode-outline (object &optional encode)
+  "Decode Djvu Outline OBJECT. Encode if ENCODE is non-nil."
+  (dolist (elt object)
+    ;; Title
+    (setcar elt
+            (if encode
+                (encode-coding-string (car elt) 'utf-8)
+              (decode-coding-string (car elt) 'utf-8)))
+    ;; URL
+    (setcar (cdr elt)
+            (djvu-resolve-url
+             (if encode
+                 (encode-coding-string (cadr elt) 'utf-8)
+               (decode-coding-string (cadr elt) 'utf-8))))
+    ;; Continue with subtree.
+    (djvu-decode-outline (nthcdr 2 elt) encode)))
+
+(defun djvu-insert-outline (object indent)
+  "Insert Outline OBJECT."
+  ;; This function is called recursively.
+  (let ((indent1 (concat indent " ")))
+    (dolist (elt object)
+      (insert (format "\n%s(%S\n%s %S" indent (car elt) indent (nth 1 elt)))
+      (djvu-insert-outline (nthcdr 2 elt) indent1)
+      (insert ")"))))
+
+(defun djvu-process-outline (script &optional doc)
+  (let (object)
+    (with-current-buffer (djvu-doc-outline-buf doc)
+      (save-excursion
+        (goto-char (point-min))
+        (unless (= (point-min) (point-max))
+          (condition-case nil
+              (setq object (read (current-buffer)))
+            (error (error "Syntax error in outline"))))
+        (skip-chars-forward " \t\n")
+        ;; We should have swallowed all bookmarks.
+        (unless (eobp)
+          (error "Syntax error in outline (end of buffer)"))))
+    (unless (eq 'bookmarks (car object))
+      (error "No bookmarks"))
+    (djvu-decode-outline (cdr object) t)
+    (with-temp-buffer
+      (insert "set-outline\n")
+      (when object
+        (insert "(bookmarks")
+        (let ((print-escape-newlines t))
+          (djvu-insert-outline (cdr object) " "))
+        (insert ")\n"))
+      (insert ".\n")
+      (write-region nil nil script t 0))))
+
+;;; Image minor mode
+
+(define-minor-mode djvu-image-mode
+  "Toggle image display of current page."
+  :lighter "Image"
+  :keymap '(([drag-mouse-1]   . djvu-mouse-comment)
+            ([C-drag-mouse-1] . djvu-mouse-comment-pushpin)
+            ([S-drag-mouse-1] . djvu-mouse-highlight)
+            ;; (Global) bindings of down-mouse events would take precedence over
+            ;; drag-mouse events. So we bind the down-mouse events to `ignore'.
+            ([down-mouse-1]   . ignore)
+            ([C-down-mouse-1] . ignore)
+            ([S-down-mouse-1] . ignore)
+            ("+" . djvu-image-zoom-in)
+            ("-" . djvu-image-zoom-out))
+  (djvu-image))
+
+(defun djvu-image-zoom-in ()
+  (interactive)
+  (djvu-image (round (* (nth 1 (djvu-doc-image)) 1.2))))
+
+(defun djvu-image-zoom-out ()
+  (interactive)
+  (djvu-image (round (/ (nth 1 (djvu-doc-image)) 1.2))))
+
+(defun djvu-image (&optional isize)
+  "If `djvu-image-mode' is enabled, display image of current Djvu page.
+Otherwise remove the image."
+  (if (not djvu-image-mode)
+      (let (buffer-read-only)
+        (remove-text-properties (point-min) (point-max) '(display nil)))
+    ;; Update image if necessary.
+    (if (or (not (eq (djvu-doc-page) (car (djvu-doc-image))))
+            (and isize
+                 (not (eq isize (nth 1 (djvu-doc-image))))))
+        (let ((file (make-temp-file "djvu-"))
+              (isize (or isize
+                         (nth 1 (djvu-doc-image))
+                         djvu-image-size)))
+          (unwind-protect
+              ;; ddjvu does not send tiff files to stdout
+              (let ((doc djvu-doc)
+                    (status (call-process "ddjvu" nil t nil
+                                          (format "-size=%dx%d" isize isize)
+                                          "-format=tiff"
+                                          (format "-page=%d" (djvu-doc-page))
+                                          (djvu-doc-file)
+                                          file)))
+                (unless (zerop status)
+                  (error "Ddjvu error %s" status))
+                (with-temp-buffer
+                  (set-buffer-multibyte nil)
+                  (insert-file-contents-literally file)
+                  (djvu-doc-set-image
+                   (list (djvu-doc-page doc)
+                         isize
+                         (create-image (buffer-substring-no-properties
+                                        (point-min) (point-max))
+                                       'tiff t)) doc)))
+            (djvu-delete-file file))))
+    ;; Display image.
+    (let (buffer-read-only)
+      (put-text-property (point-min) (point-max)
+                         'display (nth 2 (djvu-doc-image))))))
+
+(defun djvu-event-to-rect (event)
+  "Convert mouse EVENT to Djvu rect coordinates."
+  (let* ((start (posn-object-x-y (event-start event)))
+         (end (posn-object-x-y (event-end event)))
+         (x1 (car start)) (y1 (cdr start)) (x2 (car end)) (y2 (cdr end))
+         (size (posn-object-width-height (event-start event)))
+         (width  (/ (float (car (djvu-doc-pagesize))) (car size)))
+         (height (/ (float (cdr (djvu-doc-pagesize))) (cdr size))))
+    (list (round (* (min x1 x2) width))
+          (round (* (- (cdr size) (max y1 y2)) height))
+          (round (* (max x1 x2) width))
+          (round (* (- (cdr size) (min y1 y2)) height)))))
+
+(defun djvu-mouse-highlight (event)
+  (interactive "e")
+  ;; Mouse events ignore prefix args?
+  (let ((color (djvu-interactive-color djvu-color-highlight)))
+    (djvu-highlight-region "" (read-string (format "(%s) H-Text: " color))
+                           (list (djvu-event-to-rect event))
+                           color djvu-opacity)))
+
+(defun djvu-mouse-comment (event &optional pushpin)
+  (interactive "e")
+  ;; Mouse events ignore prefix args?
+  (let ((color (djvu-interactive-color djvu-color-highlight)))
+    (djvu-comment "" (read-string (format "(%s) C-Text: " color))
+                  (djvu-event-to-rect event) nil
+                  (djvu-color-background color djvu-color-background
+                                         djvu-opacity)
+                  nil pushpin)))
+
+(defun djvu-mouse-comment-pushpin (event)
+  (interactive "e")
+  (djvu-mouse-comment event t))
+
+;;; clean up
+
+(defun djvu-make-clean ()
+  "Remove Outline and Annotations."
+  (interactive)
+  (when (yes-or-no-p "Remove Outline and Annotations ")
+    (djvu-djvused djvu-doc nil "-e"
+                  "select; remove-ant; set-outline;\n." "-s")
+    (djvu-init-page)))
+
+\f
+(provide 'djvu)
+;;; djvu.el ends here
diff --git a/packages/docbook/docbook.el b/packages/docbook/docbook.el
new file mode 100644 (file)
index 0000000..faaac01
--- /dev/null
@@ -0,0 +1,1218 @@
+;;; docbook.el --- Info-like viewer for DocBook  -*- lexical-binding: t -*-
+
+;; Copyright (C) 2013  Free Software Foundation, Inc.
+
+;; Author: Chong Yidong <cyd@gnu.org>
+;; Keywords: docs, help
+;; Version: 0.1
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; An Info-like viewer for DocBook manuals.
+;;
+;; Entry point: M-x docbook-find-file
+
+;;; TODO:
+
+;; table
+;; informaltable
+;; graphics
+;;
+;; funcsynopsis
+;; classsynopsis
+;; citerefentry
+;;
+;; see, primaryie, secondaryie
+
+;;; Code:
+
+(require 'xml)
+
+(defgroup docbook nil
+  "The Emacs DocBook reader."
+  :group 'help
+  :group 'docs)
+
+(defface docbook-xref
+  '((t :inherit button))
+  "Face for DocBook cross references."
+  :group 'docbook)
+
+(defface docbook-warning
+  '((t :inherit font-lock-warning-face))
+  "Face for warning text in DocBook documents."
+  :group 'docbook)
+
+(defface docbook-emphasis
+  '((t :slant italic))
+  "Face for emphasized text in DocBook documents."
+  :group 'docbook)
+
+(defface docbook-literal
+  '((t :inherit (font-lock-constant-face fixed-pitch)))
+  "Face for DocBook text marked as being literal."
+  :group 'docbook)
+
+(defface docbook-computer
+  '((t :inherit (font-lock-type-face fixed-pitch)))
+  "Face for DocBook text marked as computer output."
+  :group 'docbook)
+
+(defface docbook-computer-term
+  '((t :inherit (font-lock-keyword-face fixed-pitch)))
+  "Face for DocBook text marked as computer terminology."
+  :group 'docbook)
+
+(defface docbook-replaceable
+  '((t :inherit (font-lock-string-face bold)))
+  "Face for DocBook text marked as replaceable."
+  :group 'docbook)
+
+(defface docbook-citation
+  '((t :slant italic))
+  "Face for DocBook text marked as non-xref citations."
+  :group 'docbook)
+
+(defface docbook-label
+  '((t :weight bold :underline t))
+  "Face for DocBook text marked as labels for Q&A entries,"
+  :group 'docbook)
+
+(defface docbook-small '((t :height 0.8))
+  "Face for DocBook text marked as small."
+  :group 'docbook)
+
+(defface docbook-chapter-title
+  '((((type tty pc) (class color) (background light))
+     :foreground "green" :weight bold :underline t)
+    (((type tty pc) (class color) (background dark))
+     :foreground "yellow" :weight bold :underline t)
+    (t :height 1.5 :inherit docbook-section-title))
+  "Face for DocBook chapter titles."
+  :group 'docbook)
+
+(defface docbook-section-title
+  '((((type tty pc) (class color))
+     :foreground "lightblue" :weight bold :underline t)
+    (t :height 1.2 :inherit docbook-subsection-title))
+  "Face for DocBook section titles."
+  :group 'docbook)
+
+(defface docbook-subsection-title
+  '((t :weight bold :height 1.1 :inherit variable-pitch))
+  "Face for DocBook subsection titles."
+  :group 'docbook)
+
+(defface docbook-misc-title '((t :weight bold :underline t))
+  "Face for miscellaneous DocBook titles."
+  :group 'docbook)
+
+(defvar docbook-title-markup-alist
+  '((book    . docbook-chapter-title)
+    (chapter . docbook-chapter-title)
+    (sect1   . docbook-section-title)
+    (sect2   . docbook-subsection-title)
+    (sect3   . docbook-subsection-title)
+    (sect4   . docbook-subsection-title)
+    (sect5   . docbook-subsection-title)
+    (section . docbook-section-title)
+    (simplesect . docbook-section-title))
+  "Alist mapping DocBook section types to title faces")
+
+(defvar docbook-text-markup-alist
+  '((emphasis . docbook-emphasis)
+    (foreignphrase . docbook-emphasis)
+    (firstterm . docbook-emphasis)
+    (bridgehead . docbook-section-title)
+    (refname . docbook-section-title)
+    (refpurpose . docbook-emphasis)
+    (citetitle . docbook-citation)
+    (subscript . docbook-small)
+    (superscript . docbook-small)
+    (replaceable . docbook-replaceable)
+    ;; Computer output
+    (accel . docbook-computer)
+    (computeroutput . docbook-computer)
+    (guibutton . docbook-computer)
+    (guiicon . docbook-computer)
+    (guilabel . docbook-computer)
+    (guimenu . docbook-computer)
+    (guimenuitem . docbook-computer)
+    (guisubmenu . docbook-computer)
+    (keycap . docbook-computer)
+    (keycode . docbook-computer)
+    (keycombo . docbook-computer)
+    (keysym . docbook-computer)
+    (markup . docbook-computer)
+    (menuchoice . docbook-computer)
+    (mousebutton . docbook-computer)
+    (msgset . docbook-computer)
+    (prompt . docbook-computer)
+    (shortcut . docbook-computer)
+    (tag . docbook-computer)
+    (userinput . docbook-computer)
+    ;; Computer terminology
+    (application . docbook-computer-term)
+    (classname . docbook-computer-term)
+    (command . docbook-computer-term)
+    (constant . docbook-computer-term)
+    (database . docbook-computer-term)
+    (envar . docbook-computer-term)
+    (errorcode . docbook-computer-term)
+    (errorname . docbook-computer-term)
+    (errortype . docbook-computer-term)
+    (filename . docbook-computer-term)
+    (function . docbook-computer-term)
+    (hardware . docbook-computer-term)
+    (option . docbook-computer-term)
+    (optional . docbook-computer-term)
+    (parameter . docbook-computer-term)
+    (property . docbook-computer-term)
+    (returnvalue . docbook-computer-term)
+    (symbol . docbook-computer-term)
+    (systemitem . docbook-computer-term)
+    (token . docbook-computer-term)
+    (type . docbook-computer-term)
+    (varname . docbook-computer-term)
+    ;; docbook-literal
+    (literal . docbook-literal)
+    ;; Admonitions
+    (caution . docbook-warning)
+    (important . docbook-emphasis)
+    (tip . docbook-emphasis)
+    (warning . docbook-warning))
+  "Alist mapping DocBook element types to markup faces.")
+
+(defvar docbook-page-types
+  '(acknowledgements appendix article bibliography book chapter colophon
+    dedication glossary part preface sect1 sect2 sect3 sect4 sect5
+    section set setindex toc)
+  "List of DocBook sectioning element types.
+DocBook mode shows one section at a time, as a single page.")
+
+(defvar docbook-block-types
+  '(para simpara formalpara equation informalequation
+    informalexample figure informalfigure
+    blockquote epigraph msgset sidebar
+    bridgehead caution important note tip warning
+    cmdsynopsis)
+  "List of DocBook block types which require no additional processing.")
+
+(defvar docbook-list-types
+  '(calloutlist bibliolist glosslist itemizedlist orderedlist
+    segmentedlist simplelist variablelist qandaset
+    task procedure substeps)
+  "List of DocBook block-level list types")
+
+(defvar docbook-literal-block-types
+  '(address literallayout programlisting screen screenco
+    screenshot synopsis)
+  "List of DocBook block element types which preserve whitespace.")
+
+(defvar docbook-suppressed-types
+  '(comment info bookinfo chapterinfo sectioninfo articleinfo label
+    refmeta refclass)
+  "List of DocBook element types which are not printed.")
+
+(defvar docbook-index-separator-column 30
+  "Column number of xrefs printed by `docbook--print-index'.")
+
+(defvar docbook-entity-alist
+  ;; makeinfo emits these entities, even though the DocBook spec does
+  ;; not appear to define them.
+  '(("lsquo" . "`")
+    ("rsquo" . "'")
+    ("ldquo" . "\"")
+    ("rdquo" . "\"")
+    ("copy" . "(C)")
+    ("tex" . "TeX")
+    ("latex" . "LaTeX")
+    ("hellip" . "...")
+    ("period" . ".")
+    ("minus" . "-")
+    ("colon" . ":")
+    ("mdash" . "--")
+    ("ndash" . "-"))
+  "Alist mapping XML entities to their replacement text.
+These elements are added to `xml-entity-alist' while parsing
+DocBook documents.")
+
+;;; Buffer setup
+
+(defvar docbook--parse-tree nil
+  "Parse tree of the current DocBook document.")
+
+(defvar docbook--id-table nil
+  "Hash table mapping DocBook IDs (symbols) to node contents.
+Each key should be a Lisp symbol.  Each XML node with an XML ID
+is keyed by an interned Lisp symbol with a matching symbol name.
+Sectioning (page) nodes which lack their own XML IDs are keyed
+using uninterned Lisp symbols created when parsing the XML tree.
+
+Each hash table value has one of these two forms:
+
+ (NODE TITLE-NODE PARENT-ID PREV NEXT SUBSECTIONS)
+ (NODE TITLE-NODE PARENT-ID)
+
+The first represents a node corresponding to a DocBook section,
+which is displayed as a separate page in the DocBook reader.
+The second represents a node which does not correspond to a
+DocBook section, e.g. a position within a section for a
+cross-reference to jump to.
+
+NODE is the Lisp list tree corresponding to the XML node.
+TITLE-NODE is the node corresponding to the node's title (a
+string), or nil.
+PARENT-ID is the ID of the node's parent page, or nil.
+PREV and NEXT are the IDs of the previous and next page.
+SUBSECTIONS is a list of IDs of child pages.")
+
+(defvar docbook-id-markers-alist nil
+  "Alist mapping DocBook node IDs to markers.
+Each key should be a Lisp symbol, but it is not required to be
+one of the keys in `docbook--id-table'.  This alist is used to
+record the positions of xref'ed elements on the current page.")
+
+(defvar docbook-top-page nil
+  "ID of the topmost (root) page in the current DocBook document.
+The value should be one of the keys in `docbook--id-table'.")
+
+(defvar docbook-current-page nil
+  "ID of the current DocBook page.
+The value should be one of the keys in `docbook--id-table'.")
+
+(defvar docbook--last-page-registered)
+(defvar docbook--last-page-id-registered)
+(defvar docbook--footnotes)
+(defvar docbook--indent-level 0)
+(defvar docbook--list-context nil)
+
+(defvar docbook--index-alist nil
+  "Alist mapping index types to index data.
+Each list element has the form (TYPE . ALIST), where TYPE is a
+symbol specifying the index type (nil for the default index) and
+ALIST is an alist (TERM . ID-LIST).")
+
+(defvar docbook-history nil
+  "List of DocBook node IDs which were previously viewed.")
+
+(defvar docbook-history-forward nil
+  "List of DocBook node IDs visited with `docbook-history-back'.")
+
+;; Used in place of the interned version of the string "nil".
+(defconst docbook--nil (make-symbol "nil"))
+
+(defun docbook-setup (parse-tree)
+  "Set up a DocBook buffer using the XML parse tree PARSE-TREE.
+PARSE-TREE should be a list of the sort returned by
+`xml-parse-file' or `xml-parse-buffer'."
+  (docbook-mode)
+  (setq docbook--parse-tree parse-tree
+       docbook--id-table (make-hash-table :test 'eq)
+       docbook--index-alist nil
+       docbook-history nil
+       docbook-history-forward nil)
+  (let ((docbook--last-page-registered nil)
+       (docbook--last-page-id-registered nil))
+    (docbook-register-node parse-tree nil nil))
+  ;; Sort indices
+  (dolist (index docbook--index-alist)
+    (setcdr index (sort (cdr index) (lambda (a b)
+                                     (string< (car a) (car b)))))
+    (dolist (entry (cdr index))
+      (setcdr entry (nreverse (cdr entry))))))
+
+;;; Utility functions
+
+(defsubst docbook--node-record (&optional node-id)
+  "Return the record keyed by NODE-ID in `docbook--id-table'.
+If NODE-ID is nil, it defaults to ID of the current page."
+  (gethash (or node-id docbook-current-page) docbook--id-table))
+
+(defsubst docbook-add-fragment-link (id)
+  "If ID is non-nil, add a marker for it to `docbook-id-markers-alist'."
+  (if id (push (cons id (point-marker)) docbook-id-markers-alist)))
+
+(defun docbook--attr (attribute node)
+  "Return the value of attribute ATTRIBUTE in xml node NODE.
+The value is automatically converted to a Lisp symbol.  If the
+node lacks the specified attribute, return nil."
+  (let ((str (cdr (assq attribute (xml-node-attributes node)))))
+    (and (stringp str)
+        (not (equal str ""))
+        (if (equal str "nil") docbook--nil (intern str)))))
+
+(defun docbook--display-string (base-string fallback)
+  "Return a string which displays as BASE-STRING on graphical terminals.
+Use a display property so that on non-graphical terminals, the
+string displays as the FALLBACK string."
+  (propertize base-string
+             'display `(when (not (display-graphic-p)) . ,fallback)))
+
+(defun docbook--node-text (node)
+  "Return the contents of the DocBook node NODE, as a string."
+  (let ((str (mapconcat
+             (lambda (x)
+               (cond ((stringp x)
+                      (if (string-match "\\`\\s-+\\'" x) "" x))
+                     ((consp x)
+                      (docbook--node-text x))))
+             (xml-node-children node)
+             "")))
+    (if (string-match "\\`\\s-+" str)
+       (setq str (substring str (match-end 0))))
+    (if (string-match "\\s-+\\'" str)
+       (setq str (substring str 0 (match-beginning 0))))
+    str))
+
+(defun docbook--print-block-delimiter ()
+  "Insert newlines for the start or end of a DocBook block element."
+  (cond
+   ((bobp))
+   ((looking-back "\n\n"))
+   ((eq (char-before) ?\n) (insert ?\n))
+   (t (insert "\n\n"))))
+
+(defun docbook--print-string (str &optional literal face)
+  "Insert STR (a string) at point, unless it is useless whitespace.
+If LITERAL is non-nil, preserve whitespace.  If FACE is non-nil,
+apply it as the face for the inserted text."
+  (cond ((or literal (not (string-match "\\`\\s-+\\'" str)))
+        (insert (propertize str 'font-lock-face face)))
+       ((not (or (bolp) (memq (char-before) '(?\s ?\t))))
+        (insert " "))))
+
+(defun docbook--merge-face (base-face face)
+  "Return a face or list of faces, by merging BASE-FACE and FACE."
+  (cond
+   ((null base-face) face)
+   ((null face)      base-face)
+   ((eq face base-face) base-face)
+   (t
+    (append (if (consp face) face (list face))
+           (if (consp base-face) base-face (list base-face))))))
+
+(defun docbook--node-face (base-face type &optional parent)
+  "Return a face suitable for displaying DocBook node type TYPE.
+BASE-FACE is the face specified by the node's parent elements.
+If PARENT is non-nil, treat TYPE as the type of the parent node,
+and assume that we are looking up the face of a title node."
+  (let ((face (if parent
+                 (or (cdr (assq type docbook-title-markup-alist))
+                     'docbook-misc-title)
+               (cdr (assq type docbook-text-markup-alist)))))
+    (docbook--merge-face base-face face)))
+
+;;; Parsing the DocBook XML tree
+
+(defun docbook-register-node (node parent-page-id parent-node-id)
+  "Register NODE.
+NODE should be a cons cell---a subnode of the tree returned by
+`xml-parse-file'.  PARENT is the registered node ID of the parent
+page (a symbol).  PARENT-NODE-ID is the registered node ID of the
+node's immediate parent (which may or may not correspond to a
+page node), or nil if the parent has no ID.
+
+If NODE is a page node, return its registered node ID (a symbol).
+Otherwise, return nil."
+  (let ((type (xml-node-name node)))
+    (cond
+     ((eq type 'comment))
+     ((eq type 'indexterm)
+      (docbook--register-indexterm node parent-page-id))
+     ((memq type docbook-page-types)
+      (docbook--register-page-node node parent-page-id))
+     (t
+      (docbook--register-nonpage-node node parent-page-id
+                                     parent-node-id)))))
+
+(defun docbook--register-indexterm (node parent-id)
+  (let ((id (docbook--attr 'id node)))
+    (if id (puthash id `(,node nil ,parent-id) docbook--id-table))
+    ;; HACK: Modify the XML tree to add an indexterm id (a symbol).
+    (setq id (make-symbol "indexterm"))
+    (setcar (cdr node) (cons (cons 'docbook-indexterm-id id)
+                            (xml-node-attributes node)))
+    (puthash id `(,node nil ,parent-id) docbook--id-table)
+    (let* ((type (docbook--attr 'type node))
+          (index (assq type docbook--index-alist)))
+      ;; If there is no index of the indicated type yet, add it.
+      (unless index
+       (setq docbook--index-alist
+             (cons (setq index (cons type nil))
+                   docbook--index-alist)))
+      (dolist (subnode (xml-node-children node))
+       (cond
+        ((not (consp subnode)))
+        ((memq (xml-node-name subnode) '(primary secondary tertiary))
+         (let* ((term (docbook--node-text subnode))
+                (entry (assoc term (cdr index))))
+           (if entry
+               (setcdr entry (cons id (cdr entry)))
+             (setcdr index (cons (list term id) (cdr index))))))))
+      nil)))
+
+(defun docbook--register-page-node (node parent-id)
+  (let ((id (docbook--attr 'id node)))
+    ;; If there is no ID, generate an uninterned symbol as the ID.
+    (unless id
+      (setq id (make-symbol "Unnamed section")))
+    (unless parent-id
+      (setq docbook-top-page id))
+    ;; Make the node record and update the NEXT record of the last node
+    ;; processed.  This must be done before descending into the tree.
+    (if docbook--last-page-registered
+       (setcar (nthcdr 4 docbook--last-page-registered) id))
+    (let ((record (list node nil parent-id
+                       docbook--last-page-id-registered nil nil)))
+      (setq docbook--last-page-registered record
+           docbook--last-page-id-registered id)
+      ;; Add the entry for this page node into the hash table.
+      (if id (puthash id record docbook--id-table))
+      ;; Descend into the children, registering them.
+      (let ((subnodes
+            (mapcar (lambda (subnode)
+                      (when (consp subnode)
+                        (docbook-register-node subnode id id)))
+                    (xml-node-children node))))
+       ;; If this is a section node, update its record with the IDs of
+       ;; the subsections, then return the ID of this node.
+       (setcar (nthcdr 5 record) (delq nil subnodes))))
+    id))
+
+(defun docbook--register-nonpage-node (node parent-page-id parent-node-id)
+  (let ((id (docbook--attr 'id node)))
+    ;; If this is a title node, register it in the parent node.
+    (when (and (eq (xml-node-name node) 'title) parent-node-id)
+      (let ((parent-record (docbook--node-record parent-node-id)))
+       (if parent-record (setcar (cdr parent-record) node))))
+    ;; Construct the node record.
+    (if id (puthash id `(,node nil ,parent-page-id) docbook--id-table))
+    ;; Descend into the children, registering them.
+    (dolist (subnode (xml-node-children node))
+      (when (consp subnode)
+       (docbook-register-node subnode parent-page-id id)))
+    nil))
+
+;;; Rendering DocBook
+
+(defun docbook-print-page (node-id &optional error-msg norecord)
+  "Print the DocBook section corresponding to NODE-ID.
+If NODE-ID is not a registered DocBook section node, signal an
+error.  The optional argument ERROR-MSG, if non-nil, specifies a
+default error message.
+
+If optional argument NORECORD is non-nil, do not record this node
+in `docbook-history'."
+  (let ((node-record (when (and node-id (symbolp node-id))
+                      (docbook--node-record node-id))))
+    (unless node-record
+      (funcall (if (fboundp 'user-error) 'user-error 'error)
+              (or error-msg "Node not found")))
+    (unless norecord
+      (push node-id docbook-history)
+      (setq docbook-history-forward nil))
+    (if (= (length node-record) 3)
+       ;; If the id points to a page fragment, visit the parent page
+       ;; and jump to the relevant marker within that page.
+       (progn
+         (docbook-print-page (nth 2 node-record) nil t)
+         (docbook--visit-xref-marker node-id))
+      ;; If the id points to a page, visit it.
+      (let* ((inhibit-read-only t)
+            (node (car node-record))
+            (subsections (nth 5 node-record))
+            (docbook--footnotes nil))
+       (erase-buffer)
+       ;; Add a fragment marker to the top of this page.
+       (setq docbook-id-markers-alist nil
+             docbook-current-page node-id)
+       (docbook-add-fragment-link node-id)
+       ;; Each section contains any number of blocks followed by any
+       ;; number of subsections.  Loop over subnodes, printing
+       ;; block-level nodes.
+       (dolist (subnode (xml-node-children node))
+         (cond ((null subnode))
+               ((stringp subnode)
+                (docbook--print-string subnode))
+               ((not (memq (xml-node-name subnode) docbook-page-types))
+                (docbook--print-node subnode (xml-node-name node)))))
+       ;; If there are footnotes, print them.
+       (docbook--print-footnotes)
+       ;; If there are subsections, print a submenu.
+       (when subsections
+         (docbook--print-block-delimiter)
+         (docbook--print-string "Menu" nil 'docbook-misc-title)
+         (insert "\n")
+         (let ((bullet (docbook--display-string "• " "* "))
+               opoint)
+           (dolist (id subsections)
+             (setq opoint (point))
+             (insert bullet)
+             (docbook-insert-xref id)
+             (insert ?\n)
+             (put-text-property opoint (point) 'docbook-menu-xref id))))
+       (goto-char (point-min))))))
+
+(defun docbook--print-node (node parent-type &optional literal face)
+  "Insert the contents of NODE at point.
+NODE should be a cons cell---a subnode of the tree returned by
+`xml-parse-file'.  PARENT-TYPE should be the node type of the
+parent node (a symbol), or nil if this is the topmost node.
+
+Optional arg LITERAL, if non-nil, means to preserve whitespace
+and newlines when printing this node.
+
+Optional arg FACE, if non-nil, should be a face or list of faces
+to use, by default, for printing this node.  The node may apply
+additional markup on top to of the specified FACE."
+  (let ((type (xml-node-name node)))
+    (cond
+     ((memq type docbook-suppressed-types)
+      (docbook-add-fragment-link (docbook--attr 'id node)))
+     ((eq type 'title)
+      (docbook--print-block node literal
+                           (docbook--node-face face parent-type t)))
+     ((progn
+       ;; For the sake of all the remaining node types, set FACE to
+       ;; the markup face for this node's type.
+       (setq face (docbook--node-face face type))
+       (memq type docbook-block-types))
+      (docbook--print-block node literal face))
+     ((progn
+       ;; For the sake of all remaining node types, apply the
+       ;; fragment ID if any.
+       (docbook-add-fragment-link (docbook--attr 'id node))
+       (eq type 'xref))
+      (docbook--print-xref node literal face))
+     ;; Index handling
+     ((eq type 'indexterm)
+      (docbook-add-fragment-link
+       (cdr (assq 'docbook-indexterm-id (xml-node-attributes node)))))
+     ((eq type 'index)
+      (docbook--print-index (docbook--attr 'type node)))
+     ;; Refentry and friends
+     ((eq type 'refnamediv)
+      (docbook--print-refnamediv node literal face))
+     ((eq type 'refsynopsisdiv)
+      (docbook--print-refsynopsisdiv node literal face))
+     ;; List handling
+     ((memq type docbook-list-types)
+      (docbook--print-list node literal face))
+     ((memq type '(listitem question answer step))
+      (docbook--print-listitem node literal face))
+     ((memq type '(term glossterm))
+      (docbook--print-term node literal face))
+     ;; Cross References
+     ((memq type '(link ulink))
+      (docbook--print-link node literal face))
+     ((eq type 'email)
+      (docbook--print-email node literal face))
+     ;; Misc markup
+     ((eq type 'quote)
+      (docbook--print-string (docbook--display-string "“" "`")
+                            literal face)
+      (docbook--print-children node literal face)
+      (docbook--print-string (docbook--display-string "”" "'")
+                            literal face))
+     ((eq type 'footnote)
+      (docbook--print-footnote-tag node))
+     ((eq type 'subscript)
+      (docbook--print-with-display-prop node literal face '(raise -0.2)))
+     ((eq type 'superscript)
+      (docbook--print-with-display-prop node literal face '(raise 0.2)))
+     ((eq type 'arg)
+      (docbook--print-arg node literal face))
+     ((eq type 'anchor))
+     (t
+      (docbook--print-children node literal face)))))
+
+(defun docbook--print-block (node literal face)
+  (docbook--print-block-delimiter)
+  (let* ((type (xml-node-name node))
+        (beg (point)))
+    ;; If the block has an ID tag, apply it.
+    (docbook-add-fragment-link (docbook--attr 'id node))
+    ;; Print the contents of the block.
+    (docbook--print-children node literal
+                          (docbook--node-face face type))
+    (unless literal
+      ;; Flush the beginning of the block to column zero, and fill.
+      (let ((stop (point)))
+       (save-excursion
+         (goto-char beg)
+         (skip-chars-forward "[:space:]" stop)
+         (delete-region beg (point))
+         (setq beg (point))))
+      (let ((left-margin docbook--indent-level))
+       (fill-region-as-paragraph beg (point))))
+    (docbook--print-block-delimiter)))
+
+(defun docbook--print-list (node literal face)
+  (docbook--print-block-delimiter)
+  (let ((type (xml-node-name node))
+       (docbook--indent-level docbook--indent-level)
+       (docbook--list-context docbook--list-context))
+    (cond
+     ((memq type '(procedure substeps))
+      ;; We use a version list to denote (sub)steps.
+      (let* ((version (if (eq (car-safe docbook--list-context) 'procedure)
+                         (append (cdr docbook--list-context) '(1))
+                       '(1)))
+            (str (mapconcat 'int-to-string version ".")))
+       (setq docbook--indent-level (+ (length str) 3 docbook--indent-level)
+             docbook--list-context (cons 'procedure version))))
+     ((eq type 'orderedlist)
+      (setq docbook--indent-level (+ 4 docbook--indent-level)
+           docbook--list-context 1))
+     ((memq type '(glosslist variablelist))
+      (setq docbook--indent-level (+ 4 docbook--indent-level)
+           docbook--list-context 'variablelist))
+     ((eq type 'qandaset)
+      (let ((label (docbook--attr 'defaultlabel node)))
+       (setq docbook--indent-level (+ 4 docbook--indent-level)
+             docbook--list-context (cons 'qandaset label))))
+     (t
+      (setq docbook--indent-level (+ 2 docbook--indent-level)
+           docbook--list-context 'itemizedlist)))
+    (docbook--print-children node literal face))
+  (docbook--print-block-delimiter))
+
+(defun docbook--print-term (node literal face)
+  (when (eq docbook--list-context 'variablelist)
+    (unless (eq (char-before) ?\n)
+      (insert "\n"))
+    (let ((opoint (point)))
+      (docbook--print-children node literal face)
+      (save-excursion
+       (let ((stop (point)))
+         (goto-char opoint)
+         (skip-chars-forward "[:space:]" stop)
+         (delete-region opoint (point))
+         (indent-line-to (- docbook--indent-level 4))
+         (docbook--print-string (docbook--display-string "• " "* ")
+                                literal face))))))
+
+(defun docbook--print-listitem (node literal face)
+  (let ((opoint (point)))
+    (docbook--print-children node literal face)
+    (when (not (memq docbook--list-context '(nil variablelist)))
+      (cond
+       ;; A step in a procedure
+       ((eq (car-safe docbook--list-context) 'procedure)
+       (let* ((version (cdr docbook--list-context))
+              (str (concat (mapconcat 'int-to-string version ".") ". "))
+              (subversion (nthcdr (1- (length version)) version)))
+         (docbook--print-listitem-1 opoint str (length str)
+                                    literal face)
+         (setcar subversion (1+ (car subversion)))))
+       ;; Question or answer
+       ((eq (car-safe docbook--list-context) 'qandaset)
+       (let ((subnodes (xml-node-children node))
+             label)
+         ;; Look for a label for the question or answer.
+         (while (and (null label) subnodes)
+           (when (and (consp (car subnodes))
+                      (eq (xml-node-name (car subnodes)) 'label))
+             (setq label (docbook--node-text (car subnodes))))
+           (setq subnodes (cdr subnodes)))
+         ;; If there is none, consult the default label.
+         (and (not (stringp label))
+              (eq (cdr docbook--list-context) 'qanda)
+              (setq label (if (eq (xml-node-name node) 'question)
+                              "Q:"
+                            "A:")))
+         (if (null label)
+             ;; Use a bullet, like an itemizedlist.
+             (docbook--print-listitem-1
+              opoint (docbook--display-string "• " "* ") 2 literal face)
+           (docbook--print-listitem-1
+            opoint label 0 literal
+            (docbook--merge-face face 'docbook-label) " " face))))
+       ;; orderedlist
+       ((integerp docbook--list-context)
+       (docbook--print-listitem-1
+        opoint (format "%2d. " docbook--list-context) 4 literal face)
+       (setq docbook--list-context (1+ docbook--list-context)))
+       ;; itemizedlist
+       (t
+       (docbook--print-listitem-1
+        opoint (docbook--display-string "• " "* ") 2 literal face))))))
+
+(defun docbook--print-listitem-1 (opoint bullet bullet-len literal face
+                                 &optional after-string after-string-face)
+  (save-excursion
+    (let ((stop (point)))
+      (goto-char opoint)
+      (skip-chars-forward "[:space:]" stop)
+      (indent-line-to (- docbook--indent-level bullet-len))
+      (docbook--print-string bullet literal face)
+      (if after-string
+         (docbook--print-string after-string literal
+                                after-string-face)))))
+
+(defun docbook--print-footnote-tag (node)
+  (when (boundp 'docbook--footnotes)
+    (let ((n (1+ (length docbook--footnotes)))
+         (tag-id (make-symbol "footnote-id"))
+         (footnote-id (make-symbol "footnote")))
+      (docbook-add-fragment-link tag-id)
+      (docbook-insert-xref footnote-id (format "(%d)" n))
+      (push (list tag-id footnote-id node) docbook--footnotes))))
+
+(defun docbook--print-footnotes ()
+  (when (bound-and-true-p docbook--footnotes)
+    (docbook--print-block-delimiter)
+    (docbook--print-string "--- Footnotes ---")
+    (let ((n 1) opoint)
+      (dolist (footnote (nreverse docbook--footnotes))
+       (docbook--print-block-delimiter)
+       (setq opoint (point))
+       (docbook--print-children (nth 2 footnote))
+       (save-excursion
+         (goto-char opoint)
+         (if (eq (char-after) ?\n) (forward-char))
+         (docbook-add-fragment-link (nth 1 footnote))
+         (docbook-insert-xref (car footnote) (format "(%d)" n))
+         (insert " "))
+       (setq n (1+ n))))))
+
+(defun docbook--print-with-display-prop (node literal face prop)
+  (let ((opoint (point)))
+    (docbook--print-children node literal face)
+    (put-text-property opoint (point) 'display prop)))
+
+(defun docbook--print-children (node &optional literal face)
+  "Print the child nodes of the DocBook node NODE.
+LITERAL and FACE mean the same as in `docbook--print-node'."
+  (dolist (subnode (xml-node-children node))
+    (cond
+     ((null subnode))
+     ((stringp subnode)
+      (docbook--print-string subnode literal face))
+     (t
+      (docbook--print-node subnode (xml-node-name node)
+                          literal face)))))
+
+(defun docbook--print-refnamediv (node literal face)
+  (docbook--print-block-delimiter)
+  (let (names purpose)
+    (dolist (subnode (xml-node-children node))
+      (cond ((not (consp subnode)))
+           ((eq (xml-node-name subnode) 'refname)
+            (push subnode names))
+           ((eq (xml-node-name subnode) 'refpurpose)
+            (setq purpose subnode))))
+    (setq names (nreverse names))
+    (indent-to docbook--indent-level)
+    (while names
+      (docbook--print-node (car names) 'refnamediv literal face)
+      (setq names (cdr names))
+      (if names (docbook--print-string ", " literal face)))
+    (when purpose
+      (or (eq (char-before) ?\n) (insert ?\n))
+      (indent-to docbook--indent-level)
+      (docbook--print-node purpose literal face)))
+  (docbook--print-block-delimiter))
+
+(defun docbook--print-refsynopsisdiv (node literal face)
+  (docbook--print-block-delimiter)
+  (indent-to docbook--indent-level)
+  (docbook--print-string "Synopsis" nil 'docbook-misc-title)
+  (docbook--print-block-delimiter)
+  (docbook--print-children node literal face))
+
+(defun docbook--print-arg (node literal face)
+  (let ((choice (docbook--attr 'choice node))
+       (repeat (docbook--attr 'rep node)))
+    (if (eq choice 'opt)
+       (docbook--print-string "[ " literal face))
+    (docbook--print-children node literal face)
+    (if (eq choice 'opt)
+       (docbook--print-string " ]" literal face))
+    (if (eq repeat 'repeat)
+       (docbook--print-string "..." literal face))))
+
+;;; Cross-reference handling
+
+(defun docbook--print-xref (node literal face)
+  "Insert the contents of an xref node NODE."
+  (let ((target (docbook--attr 'linkend node)))
+    (when target
+      (let ((endterm (docbook--attr 'endterm node)))
+       ;; If an endterm attribute is present, print its contents.
+       ;; FIXME: protect against a recursion bomb.
+       (if (and endterm
+                (setq endterm (car (docbook--node-record endterm))))
+           (docbook--print-link endterm literal face target)
+         (docbook-insert-xref target))))))
+
+(defun docbook--print-link (node literal face &optional linkend)
+  "Insert the contents of a link node NODE."
+  (let ((target (or linkend (docbook--attr 'linkend node)))
+       (opoint (point))
+       (action 'docbook-xref-button-action))
+    (unless target
+      ;; If there is no linkend attribute, look for an external URL.
+      (let ((attributes (xml-node-attributes node)))
+       (setq target
+             (or (cdr (assq 'xlink:href attributes))
+                 (cdr (assq 'href attributes))
+                 ;; Used by obsolete `url' elements.
+                 (cdr (assq 'url attributes))))
+       (setq action 'docbook-link-button-action)))
+    (docbook--print-children node literal face)
+    (make-text-button opoint (point)
+                     'action action
+                     'docbook-target target)))
+
+(defun docbook--print-email (node literal face)
+  "Insert the contents of a link node NODE."
+  (let ((opoint (point)))
+    (docbook--print-children node literal face)
+    (make-text-button opoint (point)
+                     'action 'docbook-email-button-action)))
+
+(defun docbook-insert-xref (node-id &optional label)
+  "Insert a cross reference to NODE-ID at point.
+NODE-ID should be a node ID, as either a symbol or a string.
+LABEL, if non-nil, specifies the text label."
+  (unless label
+    (setq label (docbook-node-label node-id)))
+  (insert-text-button label
+                     'action 'docbook-xref-button-action
+                     'docbook-target node-id))
+
+(defun docbook-node-label (node-id)
+  "Return an appropriate label for the node with ID NODE-ID."
+  (let* ((record (docbook--node-record node-id))
+        (attributes (xml-node-attributes (car record)))
+        ;; Use the target node's xreflabel attribute.
+        (label (cdr (assq 'xreflabel attributes))))
+    (when (memq label '(nil ""))
+      ;; Otherwise, use the target node's title.
+      (setq label (and (nth 1 record)
+                      (docbook--node-text (nth 1 record))))
+      (when (memq label '(nil ""))
+       ;; Otherwise, default to the node ID's name.
+       (setq label (symbol-name node-id))))
+    label))
+
+(defun docbook--visit-xref-marker (node-id &optional noerror)
+  "Visit the position of NODE-ID on the current DocBook page.
+Return non-nil if we found the element and jumped to it.
+Otherwise, signal an error if NOERROR is nil, and return nil if
+NOERROR is non-nil."
+  (let ((marker (cdr (assq node-id docbook-id-markers-alist))))
+    (cond
+     ((markerp marker)
+      (goto-char marker))
+     ((null noerror)
+      (error "Node not found")))))
+
+(defun docbook-visit-xref (node-id)
+  (or (docbook--visit-xref-marker node-id t)
+      (docbook-print-page node-id)))
+
+(defun docbook-xref-button-action (button)
+  "Visit the DocBook node indicated by BUTTON."
+  (docbook-visit-xref (button-get button 'docbook-target)))
+
+(defun docbook-link-button-action (button)
+  "Call `browse-url' to visit the link indicated by BUTTON."
+  (let ((target (button-get button 'docbook-target)))
+    (if (string-match "\\`mailto:" target)
+       (compose-mail (substring-no-properties target (match-end 0)))
+      (browse-url (button-get button 'docbook-target)))))
+
+(defun docbook-email-button-action (button)
+  "Send mail to the address indicated by BUTTON."
+  (compose-mail (buffer-substring-no-properties
+                (button-start button) (button-end button))))
+
+;; Printing the index and history list
+
+(defun docbook--print-index (type)
+  "Insert the DocBook index of type TYPE at point."
+  (let ((index (assq type docbook--index-alist))
+       (bullet (docbook--display-string "• " "* "))
+       opoint)
+    (unless (eq (char-before) ?\n) (insert ?\n))
+    (dolist (entry (cdr index))
+      (setq opoint (point))
+      (insert bullet)
+      (insert (car entry))
+      (let* ((ids (cdr entry))
+            (id (car ids)))
+       (indent-to docbook-index-separator-column 2)
+       (docbook-insert-xref
+        id (docbook-node-label (nth 2 (docbook--node-record id))))
+       (insert ?\n)
+       (put-text-property opoint (point) 'docbook-menu-xref id)
+       (if (> (length ids) 1)
+           (dolist (id (cdr ids))
+             (setq opoint (point))
+             (indent-to docbook-index-separator-column 2)
+             (docbook-insert-xref
+              id (docbook-node-label
+                  (nth 2 (docbook--node-record id))))
+             (insert ?\n)
+             (put-text-property opoint (point) 'docbook-menu-xref id)))))
+    (insert ?\n)))
+
+(defun docbook--print-history ()
+  "Insert the DocBook navigation history menu at point."
+  (let ((bullet (docbook--display-string "◦ " "* ")))
+    (dolist (id (reverse (cdr docbook-history)))
+      (unless (eq (char-before) ?\n) (insert ?\n))
+      (insert bullet)
+      (docbook-insert-xref id))
+    ;; Indicate the current page with a more prominent bullet.
+    (unless (eq (char-before) ?\n) (insert ?\n))
+    (insert (docbook--display-string "• " "* "))
+    (docbook-insert-xref (car docbook-history))
+    (dolist (id docbook-history-forward)
+      (unless (eq (char-before) ?\n) (insert ?\n))
+      (insert bullet)
+      (docbook-insert-xref id))
+    (insert ?\n)))
+
+;;; Major mode
+
+(defvar docbook-mode-map
+  (let ((map (make-keymap)))
+    (set-keymap-parent map (make-composed-keymap button-buffer-map
+                                                 special-mode-map))
+    (define-key map "." 'beginning-of-buffer)
+    (define-key map " " 'docbook-scroll-up)
+    (define-key map "\177" 'docbook-scroll-down)
+    (define-key map "\C-m" 'docbook-follow-nearest-node)
+
+    (dotimes (n 9)
+      (define-key map (number-to-string (1+ n)) 'docbook-nth-menu-item))
+
+    (define-key map "b" 'beginning-of-buffer)
+    (define-key map "e" 'end-of-buffer)
+    (define-key map "\M-n" 'clone-buffer)
+
+    (define-key map "i" 'docbook-index)
+    (define-key map "I" 'docbook-index)
+    (define-key map "l" 'docbook-history-back)
+    (define-key map "r" 'docbook-history-forward)
+    (define-key map "L" 'docbook-history)
+
+    (define-key map "]" 'docbook-forward-page)
+    (define-key map "[" 'docbook-backward-page)
+    (define-key map "n" 'docbook-forward-page)
+    (define-key map "p" 'docbook-backward-page)
+
+    ;; (define-key map "f" 'docbook-follow-reference)
+    ;; (define-key map "g" 'docbook-goto-node)
+    ;; (define-key map "m" 'docbook-menu)
+
+    ;; (define-key map "s" 'docbook-search)
+    ;; (define-key map "S" 'docbook-search-case-sensitively)
+    ;; (define-key map "T" 'docbook-toc)
+    ;; (define-key map "," 'docbook-index-next)
+
+    (define-key map "t" 'docbook-top-page)
+    (define-key map "u" 'docbook-up)
+    (define-key map "^" 'docbook-up)
+    (define-key map [follow-link] 'mouse-face)
+    map)
+  "Keymap containing DocBook commands.")
+
+(define-derived-mode docbook-mode special-mode "DocBook"
+  "Major mode for viewing DocBook documents.
+Type \\[docbook-find-file] to visit DocBook files for viewing.
+Most of the commands in DocBook mode are similar to Info mode.
+
+DocBook documents are divided into \"section nodes\" (which
+includes chapters, sections, subsections, etc.).  DocBook mode
+displays one section node at a time, as a single page.
+Navigation commands and hyperlinks can be used to view other
+pages.
+
+Moving within a page:
+\\[docbook-scroll-up]  Normally, scroll forward a full screen.
+       If you have scrolled to the end of this page,
+       view the next page.
+\\[docbook-scroll-down]        Normally, scroll backward a full screen.
+       If you have scrolled to the beginning of this page,
+       view the preceding page.
+\\[beginning-of-buffer]        Jump to beginning of this page.
+
+Selecting other nodes:
+\\[docbook-follow-nearest-node]        Follow a node reference near point.
+\\[docbook-backward-page]      View the preceding page.
+\\[docbook-forward-page]       View the next page.
+\\[docbook-up] View the parent of the current page.
+\\[docbook-top-page]   View the topmost section of this document.
+\\[docbook-history-back]       View the last page you were at.
+\\[docbook-history-forward]    Move forward in history to the page you were at before using \\[docbook-history-back].
+\\[docbook-history]    View a menu of visited pages."
+  (make-local-variable 'docbook--parse-tree)
+  (make-local-variable 'docbook--id-table)
+  (make-local-variable 'docbook-current-page)
+  (make-local-variable 'docbook-top-page)
+  (make-local-variable 'docbook-id-markers-alist)
+  (make-local-variable 'docbook--index-alist)
+  (make-local-variable 'docbook-history)
+  (make-local-variable 'docbook-history-foward)
+  (setq-local adaptive-fill-mode nil)
+  (setq indent-tabs-mode nil)
+  (setq fill-prefix nil)
+  (setq use-hard-newlines t))
+
+;;; Navigation commands
+
+(defun docbook-up ()
+  "View the parent of the current DocBook page."
+  (interactive)
+  (docbook-print-page (nth 2 (docbook--node-record)) "No parent page"))
+
+(defun docbook-top-page ()
+  "View the topmost page in the current DocBook document."
+  (interactive)
+  (docbook-print-page docbook-top-page))
+
+(defun docbook-backward-page ()
+  "View the previous DocBook page."
+  (interactive)
+  (docbook-print-page (nth 3 (docbook--node-record)) "No previous page"))
+
+(defun docbook-forward-page ()
+  "View the next DocBook page."
+  (interactive)
+  (docbook-print-page (nth 4 (docbook--node-record)) "No following page"))
+
+(defun docbook-scroll-up ()
+  "Scroll forward, or view the next DocBook page."
+  (interactive)
+  (condition-case nil
+      (scroll-up nil)
+    (end-of-buffer (docbook-forward-page))))
+
+(defun docbook-scroll-down ()
+  "Scroll backward, or view the preceding DocBook page."
+  (interactive)
+  (condition-case nil
+      (scroll-down nil)
+    (beginning-of-buffer (docbook-backward-page))))
+
+(defun docbook-nth-menu-item ()
+  "View the Nth menu item, based on the key typed."
+  (interactive)
+  (let ((n (- (aref (this-command-keys)
+                   (1- (length (this-command-keys)))) ?0))
+       (node-record (docbook--node-record)))
+    (unless node-record
+      (funcall (if (fboundp 'user-error) 'user-error 'error)
+              "No menu in this node"))
+    (let ((id (nth (1- n) (nth 5 node-record))))
+      (unless id
+       (funcall (if (fboundp 'user-error) 'user-error 'error)
+                "Too few items in menu"))
+      (docbook-visit-xref id))))
+
+(defun docbook-follow-nearest-node ()
+  "Follow a node reference near point.
+If point is on a reference, follow that reference.  Otherwise,
+if point is in a menu item description, follow that menu item."
+  (interactive)
+  (let ((id (get-text-property (point) 'docbook-menu-xref)))
+    (if id
+       (docbook-visit-xref id)
+      (funcall (if (fboundp 'user-error) 'user-error 'error)
+              "Point neither in reference nor in menu item description"))))
+
+;; History commands
+
+(defun docbook-history-back (n)
+  "Go back in history to the previous DocBook page viewed."
+  (interactive "p")
+  (dotimes (_i n)
+    (unless (cdr docbook-history)
+      (funcall (if (fboundp 'user-error) 'user-error 'error)
+              "This is the first node you looked at"))
+    (push (pop docbook-history) docbook-history-forward)
+    (docbook-print-page (car docbook-history) nil t)))
+
+(defun docbook-history-forward (n)
+  "Go forward in history to the next DocBook page viewed."
+  (interactive "p")
+  (dotimes (_i n)
+    (if (null docbook-history-forward)
+       (funcall (if (fboundp 'user-error) 'user-error 'error)
+                "This is the last node you looked at"))
+    (let ((id (pop docbook-history-forward)))
+      (push id docbook-history)
+      (docbook-print-page id nil t))))
+
+(defun docbook-history ()
+  "Display a list of recently-visited DocBook pages."
+  (interactive)
+  (let ((inhibit-read-only t))
+    (erase-buffer)
+    (docbook--print-string "Recently visited pages"
+                          nil 'docbook-chapter-title)
+    (insert ?\n ?\n)
+    (docbook--print-history)))
+
+;; Misc commands
+
+(defun docbook-index (type)
+  "Display a list of index topics fo the current DocBook document.
+The argument TYPE is the index type; DocBook documents can define
+several indices for different topics.  If called interactively,
+prompt for TYPE."
+  (interactive (list (if (<= (length docbook--index-alist) 1)
+                        (caar docbook--index-alist)
+                      (completing-read
+                       (format "View index type%s: "
+                               (if (assq nil docbook--index-alist)
+                                   " (empty input for default index)"
+                                 ""))
+                       (cons "" (mapcar (lambda (x) (symbol-name (car x)))
+                                        docbook--index-alist))
+                       nil t))))
+  (unless (assq type docbook--index-alist)
+    (funcall (if (fboundp 'user-error) 'user-error 'error)
+            "Index is empty"))
+  (let ((inhibit-read-only t))
+    (erase-buffer)
+    (docbook--print-string (if type
+                              (format "Index: %s" (symbol-name type))
+                            "Index")
+                          nil 'docbook-chapter-title)
+    (insert ?\n ?\n)
+    (docbook--print-index type)))
+
+;;;###autoload
+(defun docbook-find-file (filename)
+  "Visit FILENAME as a DocBook document."
+  (interactive "fView DocBook file: ")
+  (docbook-setup
+   (car (let ((xml-entity-alist (append docbook-entity-alist
+                                       xml-entity-alist)))
+         (xml-parse-file filename))))
+  (docbook-print-page docbook-top-page))
+
+(provide 'docbook)
+
+;;; docbook.el ends here
diff --git a/packages/ediprolog/ediprolog.el b/packages/ediprolog/ediprolog.el
new file mode 100644 (file)
index 0000000..ef218a4
--- /dev/null
@@ -0,0 +1,613 @@
+;;; ediprolog.el --- Emacs Does Interactive Prolog
+
+;; Copyright (C) 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+
+;; Author: Markus Triska <markus.triska@gmx.at>
+;; Keywords: languages, processes
+;; Version: 1.0
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; These definitions let you interact with SWI-Prolog in all buffers.
+;; You can consult Prolog programs and evaluate embedded queries.
+
+;; Installation
+;; ============
+;;
+;; Copy ediprolog.el to your load-path and add to your .emacs:
+;;
+;;     (require 'ediprolog)
+;;     (global-set-key [f10] 'ediprolog-dwim)
+;;
+;; Restart Emacs and customize ediprolog with
+;;
+;;     M-x customize-group RET ediprolog RET
+;;
+
+;; Usage
+;; =====
+;;
+;; The central function is `ediprolog-dwim' (Do What I Mean), which is
+;; bound to F10 by the snippet above. Depending on the content at
+;; point, `ediprolog-dwim' does the "appropriate" thing: If point is
+;; on a query, F10 sends the query to a Prolog process, and you
+;; interact with the process in the current buffer as on a terminal.
+;; Queries start with "?-" or ":-", possibly preceded by "%" and
+;; whitespace. An example of a query is (without leading ";;"):
+;;
+;;   %?- member(X, [a,b,c]).
+;;
+;; If you press F10 when point is on that query, you get:
+;;
+;;   %?- member(X, [a,b,c]).
+;;   %@ X = a ;
+;;   %@ X = b ;
+;;   %@ X = c ;
+;;   %@ false.
+;;
+;; When waiting for output of the Prolog process, you can press C-g to
+;; unblock Emacs and continue with other work. To resume interaction
+;; with the Prolog process, use M-x ediprolog-toplevel RET.
+
+;; If you press F10 when point is NOT on a query, the buffer content
+;; is consulted in the Prolog process, and point is moved to the first
+;; error (if any).
+
+;; For convenience, the most recent interactions with the Prolog
+;; process are logged in the buffer "*ediprolog-history*".
+
+;; Use M-x ediprolog-localize RET to make any Prolog process started
+;; in the current buffer buffer-local. This way, you can run distinct
+;; processes simultaneously. Revert with M-x ediprolog-unlocalize RET.
+
+;; `ediprolog-dwim' with prefix arguments has special meanings:
+;;
+;;   C-0 F10       kill Prolog process
+;;   C-1 F10       always consult buffer (even when point is on a query)
+;;   C-2 F10       always consult buffer, using a new process
+;;   C-7 F10       equivalent to `ediprolog-toplevel'
+;;   C-u F10       first consult buffer, then evaluate query (if any)
+;;   C-u C-u F10   like C-u F10, with a new process
+
+;; Tested with SWI-Prolog 5.6.55 + Emacs 21.2, 22.3 and 23.0.92.2.
+
+;;; Code:
+
+(defconst ediprolog-version "0.9yb")
+
+(defgroup ediprolog nil
+  "Transparent interaction with SWI-Prolog."
+  :group 'languages
+  :group 'processes)
+
+(defcustom ediprolog-program
+  (or (executable-find "swipl") (executable-find "pl") "swipl")
+  "Program name of the Prolog executable."
+  :group 'ediprolog
+  :type 'string)
+
+(defcustom ediprolog-program-switches nil
+  "List of switches passed to the Prolog process. Example:
+'(\"-G128M\" \"-O\")"
+  :group 'ediprolog
+  :type '(repeat string))
+
+(defcustom ediprolog-prefix "%@ "
+  "String to prepend when inserting output from the Prolog
+process into the buffer."
+  :group 'ediprolog
+  :type 'string)
+
+(defcustom ediprolog-max-history 80000
+  "Maximal size of history buffers storing recent interactions, or
+nil to never truncate the history."
+  :group 'ediprolog
+  :type 'sexp)
+
+(defvar ediprolog-process               nil "A Prolog process.")
+
+(defvar ediprolog-temp-buffer           nil
+  "Buffer that temporarily saves process output ")
+
+(defvar ediprolog-seen-prompt           nil
+  "Whether a prompt was (recently) emitted by the Prolog process.")
+
+(defvar ediprolog-read-term             nil
+  "Whether the Prolog process waits for the user to enter a term.")
+
+(defvar ediprolog-indent-prefix         ""
+  "Any whitespace occurring before the most recently executed query.")
+
+(defvar ediprolog-temp-file             nil
+  "File name of a temporary file used for consulting the buffer.")
+
+(defvar ediprolog-prompt "?ediprolog- "
+  "Prompt used in the Prolog session. It must differ from the
+default Prolog prompt.")
+
+(defvar ediprolog-consult-buffer "*ediprolog-consult*"
+  "Buffer used to display consult output.")
+
+(defvar ediprolog-consult-window        nil
+  "Window used to show consult output.")
+
+(defvar ediprolog-history-buffer        nil
+  "Buffer that stores recent interactions.")
+
+(defvar ediprolog-interrupted           nil
+  "True iff waiting for the previous query was interrupted with C-g.")
+
+(defmacro ediprolog-wait-for-prompt-after (&rest forms)
+  "Evaluate FORMS and wait for prompt."
+  `(progn
+     (setq ediprolog-seen-prompt nil)
+     (ediprolog-ensure-buffer "temp")
+     (with-current-buffer ediprolog-temp-buffer
+       (let (buffer-read-only)
+         (erase-buffer)))
+     ;; execute forms with default-directory etc. from invocation buffer
+     ,@forms
+     (unless (process-filter ediprolog-process)
+       (set-process-filter ediprolog-process 'ediprolog-wait-for-prompt-filter))
+     (while (not ediprolog-seen-prompt)
+       ;; Wait for output/sentinel and update consult window, if any.
+       ;; As `accept-process-output' does not run the sentinel in
+       ;; Emacs <= 23.1, we use `sit-for' to do both. However,
+       ;; `sit-for' returns immediately if keyboard input is
+       ;; available, so we must discard input.
+       (discard-input)
+       (sit-for 0.1))))
+
+(defmacro ediprolog-remember-interruption (form)
+  "Set `ediprolog-interrupted' if evaluation of FORM was interrupted."
+  `(condition-case nil
+       ,form
+     (quit (setq ediprolog-interrupted t))))
+
+;; Only the sentinel can reliably detect if no more output follows -
+;; even if process-status is 'exit, further output can still follow.
+(defun ediprolog-sentinel (proc str)
+  (when (buffer-live-p (process-buffer proc))
+    (with-current-buffer (process-buffer proc)
+      (let ((status (with-temp-buffer
+                      (insert str)
+                      (while (search-backward "\n" nil t)
+                        (replace-match ""))
+                      (buffer-string))))
+        (ediprolog-log
+         (format "%s: %s.\n"
+                 (substring (current-time-string) 4 -5) status) "green" t))
+      (when (string-match "^\\(?:finished\n\\|exited abnormally\\|killed\n\\)"
+                          str)
+        (setq ediprolog-seen-prompt t)))))
+
+(defun ediprolog-ensure-buffer (name)
+  (let ((str (format "*ediprolog-%s*" name))
+        (var (intern (format "ediprolog-%s-buffer" name))))
+    (unless (buffer-live-p (symbol-value var))
+      (set var (generate-new-buffer str))
+      (with-current-buffer (symbol-value var)
+        (buffer-disable-undo)
+        (setq buffer-read-only t)))))
+
+(defun ediprolog-log (str &optional col nl)
+  (ediprolog-ensure-buffer "history")
+  (with-current-buffer ediprolog-history-buffer
+    (let (buffer-read-only)
+      (goto-char (point-max))
+      (let ((s (format "%s%s" (if (and nl (not (bolp))) "\n" "") str)))
+        (insert (if col (propertize s 'face `(:background ,col)) s)))
+      (let ((size (- (point-max) (point-min))))
+        (when (and ediprolog-max-history
+                   (> size ediprolog-max-history))
+          ;; delete older half of the (possibly narrowed) history
+          (delete-region (point-min) (+ (point-min) (/ size 2))))))))
+
+(defun ediprolog-run-prolog ()
+  "Start a Prolog process."
+  (let ((args (cons ediprolog-program ediprolog-program-switches)))
+    (ediprolog-log (format "%s: starting: %S\n"
+                           (substring (current-time-string) 4 -5) args)
+                   "green" t)
+    (condition-case nil
+        (ediprolog-wait-for-prompt-after
+         (setq ediprolog-process
+               (apply #'start-process "ediprolog" (current-buffer) args))
+         (set-process-sentinel ediprolog-process 'ediprolog-sentinel)
+         (ediprolog-send-string
+          (format "'$set_prompt'('%s').\n" ediprolog-prompt)))
+      ((error quit)
+       (ediprolog-log "No prompt found." "red" t)
+       (error "No prompt from: %s" ediprolog-program)))))
+
+(defun ediprolog-kill-prolog ()
+  "Kill the Prolog process and run the process sentinel."
+  (when (ediprolog-running)
+    (delete-process ediprolog-process)))
+
+(defun ediprolog-show-consult-output (str)
+  (with-current-buffer (get-buffer-create ediprolog-consult-buffer)
+    (setq buffer-read-only t)
+    (let (buffer-read-only)
+      (erase-buffer)
+      (insert str)
+      (goto-char (point-min))
+      ;; remove normal consult status lines, which start with "%" 
+      (while (re-search-forward "^[\t ]*%.*\n" nil t)
+        (delete-region (match-beginning 0) (match-end 0))))
+    (setq str (buffer-string)))
+  ;; show consult output in a separate window unless it is a prefix of
+  ;; success (i.e., consulted without errors), or still an incomplete
+  ;; line that starts with a comment character
+  (unless (or (string-match "^[\t ]*\\(?:%.*\\)?\\'" str)
+              (let ((success "true."))
+                (and (<= (length str) (length success))
+                     (string= str (substring success 0 (length str))))))
+    (setq ediprolog-consult-window (display-buffer ediprolog-consult-buffer))
+    (set-window-dedicated-p ediprolog-consult-window t)
+    (fit-window-to-buffer ediprolog-consult-window (/ (frame-height) 2))))
+
+(defun ediprolog-consult-filter (proc str)
+  "Filter used when consulting a file, showing consult output."
+  (with-current-buffer (ediprolog-temp-buffer proc)
+    (goto-char (point-max))
+    (let (buffer-read-only)
+      (insert str))
+    (with-current-buffer (process-buffer proc)
+      (ediprolog-log str))
+    (when (re-search-backward
+           (format "^%s" (regexp-quote ediprolog-prompt)) nil t)
+      (with-current-buffer (process-buffer proc)
+        (setq ediprolog-seen-prompt t)))
+    (skip-chars-backward "\n")
+    (ediprolog-show-consult-output (buffer-substring (point-min) (point)))))
+
+(defun ediprolog-wait-for-prompt-filter (proc str)
+  "Filter that only waits until prompt appears."
+  (with-current-buffer (ediprolog-temp-buffer proc)
+    (goto-char (point-max))
+    (let (buffer-read-only)
+      (insert str))
+    (with-current-buffer (process-buffer proc)
+      (ediprolog-log str))
+    (when (re-search-backward
+           (format "^%s" (regexp-quote ediprolog-prompt)) nil t)
+      (with-current-buffer (process-buffer proc)
+        (setq ediprolog-seen-prompt t)))))
+
+\f
+;;;###autoload
+(defun ediprolog-dwim (&optional arg)
+  "Load current buffer into Prolog or post query (Do What I Mean).
+If invoked on a line starting with `:-' or `?-', possibly
+preceded by `%' and whitespace, call `ediprolog-interact' with
+the query as argument. Otherwise, call `ediprolog-consult'.
+
+With prefix argument 0, kill the Prolog process. With prefix 1,
+equivalent to `ediprolog-consult'. With prefix 2, equivalent to
+`ediprolog-consult' with a new Prolog process. With prefix 7,
+equivalent to `ediprolog-toplevel'. With just C-u, first call
+`ediprolog-consult' and then, if point is on a query, call
+`ediprolog-interact' with it as argument. Analogously, C-u C-u
+for `ediprolog-consult' with a new process. With other prefix
+arguments, equivalent to `ediprolog-remove-interactions'."
+  (interactive "P")
+  (cond ((eq arg 0)
+         (unless (ediprolog-running)
+           (error "No Prolog process running"))
+         (ediprolog-kill-prolog)
+         (message "Prolog process killed."))
+        ((eq arg 1) (ediprolog-consult))
+        ((eq arg 2) (ediprolog-consult t))
+        ((eq arg 7)
+         (unless (ediprolog-more-solutions)
+           (error "No query in progress"))
+         (ediprolog-toplevel))
+        ((equal arg '(4)) (ediprolog-consult) (ediprolog-query))
+        ((equal arg '(16)) (ediprolog-consult t) (ediprolog-query))
+        ((null arg) (unless (ediprolog-query) (ediprolog-consult)))
+        (t (ediprolog-remove-interactions))))
+
+(defun ediprolog-process-ready ()
+  "Error if the previous query is still in progress."
+  (when (and ediprolog-interrupted
+             (ediprolog-running)
+             (ediprolog-more-solutions))
+    (error "Previous query still in progress, see `ediprolog-toplevel'"))
+  (setq ediprolog-interrupted nil))
+
+(defun ediprolog-query ()
+  "If point is on a query, send it to the process and start interaction."
+  (ediprolog-process-ready)
+  (when (and (not (and transient-mark-mode mark-active))
+             (save-excursion
+               (beginning-of-line)
+               (looking-at "\\([\t ]*\\)%*[\t ]*[:?]-")))
+    ;; whitespace preceding the query is the indentation level
+    (setq ediprolog-indent-prefix (match-string 1))
+    (let* ((from (goto-char (match-end 0)))
+           (to (if (re-search-forward "\\.[\t ]*\\(?:%.*\\)?$" nil t)
+                   ;; omit trailing whitespace
+                   (+ (point) (skip-chars-backward "\t "))
+                 (error "Missing `.' at the end of this query")))
+           (query (buffer-substring-no-properties from to)))
+      (end-of-line)
+      (insert "\n" ediprolog-indent-prefix ediprolog-prefix)
+      (ediprolog-interact
+       (format "%s\n" (mapconcat #'identity
+                                 ;; `%' can precede each query line
+                                 (split-string query "\n[ \t%]*") " "))))
+    t))
+
+;;;###autoload
+(defun ediprolog-interact (query)
+  "Send QUERY to Prolog process and interact as on a terminal.
+
+You can use \\[keyboard-quit] to unblock Emacs in the case of
+longer-running queries. When the query completes and the toplevel
+asks for input, use \\[ediprolog-toplevel] to resume interaction
+with the Prolog process."
+  (unless (ediprolog-running)
+    (ediprolog-run-prolog))
+  (set-marker (process-mark ediprolog-process) (point))
+  (set-process-buffer ediprolog-process (current-buffer))
+  (set-process-filter ediprolog-process 'ediprolog-interact-filter)
+  (ediprolog-ensure-buffer "temp")
+  (with-current-buffer ediprolog-temp-buffer
+    (let (buffer-read-only)
+      (erase-buffer)))
+  (setq ediprolog-seen-prompt nil
+        ediprolog-read-term nil)
+  (ediprolog-send-string query)
+  (ediprolog-toplevel))
+
+(defun ediprolog-send-string (str)
+  "Send string to Prolog process and log it."
+  (ediprolog-log str "cyan")
+  (process-send-string ediprolog-process str))
+
+(defun ediprolog-toplevel ()
+  "Start or resume Prolog toplevel interaction in the buffer.
+
+You can use this function if you have previously quit (with
+\\[keyboard-quit]) waiting for a longer-running query and now
+want to resume interaction with the toplevel."
+  (interactive)
+  (when ediprolog-process
+    (select-window (display-buffer (process-buffer ediprolog-process))))
+  (ediprolog-remember-interruption
+   (while (ediprolog-more-solutions)
+     (let (str
+           char)
+       ;; poll for user input; meanwhile, process output can arrive
+       (while (and (ediprolog-more-solutions) (null str))
+         (goto-char (process-mark ediprolog-process))
+         (if ediprolog-read-term
+             (progn
+               (setq str (concat (read-string "Input: ") "\n"))
+               (ediprolog-insert-at-marker
+                str ediprolog-indent-prefix ediprolog-prefix)
+               (setq ediprolog-read-term nil))
+           (condition-case nil
+               (when (setq char (if (>= emacs-major-version 22)
+                                    (read-char nil nil 0.1)
+                                  (with-timeout (0.1 nil)
+                                    (read-char))))
+                 ;; char-to-string might still yield an error (C-0 etc.)
+                 (setq str (char-to-string char)))
+             (error
+              (message "Non-character key")
+              ;; non-character keys must not remain in the input
+              ;; buffer, lest `read-char' return immediately
+              (discard-input)))))
+       (when (ediprolog-more-solutions)
+         (if (eq char ?\C-c)            ; char can be nil too
+             ;; sending C-c directly yields strange SWI buffering
+             (interrupt-process ediprolog-process)
+           (ediprolog-send-string str)))))))
+
+;;;###autoload
+(defun ediprolog-remove-interactions ()
+  "Remove all lines starting with `ediprolog-prefix' from buffer.
+
+In transient mark mode, the function operates on the region if it
+is active."
+  (interactive)
+  (save-excursion
+    (save-restriction
+      (when (and transient-mark-mode mark-active)
+        (narrow-to-region (region-beginning) (region-end)))
+      (goto-char (point-min))
+      (flush-lines (concat "^[\t ]*" (regexp-quote ediprolog-prefix)))))
+  (message "Interactions removed."))
+
+\f
+;;;###autoload
+(defun ediprolog-consult (&optional new-process)
+  "Buffer is loaded into a Prolog process. If NEW-PROCESS is
+non-nil, start a new process. Otherwise use the existing process,
+if any. In case of errors, point is moved to the position of the
+first error, and the mark is left at the previous position.
+
+In transient mark mode, the function operates on the region if it
+is active."
+  (interactive)
+  (when (string= (buffer-name) ediprolog-consult-buffer)
+    (error "Cannot consult the consult buffer"))
+  (when (window-live-p ediprolog-consult-window)
+    (condition-case nil
+        ;; deleting the window can still raise an error, if the window
+        ;; was the only window in the frame and the consult buffer was
+        ;; killed (and it thus displays a different buffer now)
+        (delete-window ediprolog-consult-window)
+      (error nil)))
+  (when (buffer-live-p ediprolog-consult-buffer)
+    (bury-buffer ediprolog-consult-buffer))
+  (when new-process
+    (ediprolog-kill-prolog))
+  (unless (ediprolog-running)
+    (ediprolog-run-prolog))
+  (ediprolog-process-ready)
+  (set-process-buffer ediprolog-process (current-buffer))
+  (unless ediprolog-temp-file
+    (setq ediprolog-temp-file (make-temp-file "ediprolog")))
+  (let ((start (if (and transient-mark-mode mark-active)
+                   (region-beginning) (point-min)))
+        (end (if (and transient-mark-mode mark-active)
+                 (region-end) (point-max))))
+    (write-region start end ediprolog-temp-file nil 'silent))
+  (set-process-filter ediprolog-process 'ediprolog-consult-filter)
+  (ediprolog-remember-interruption
+   (ediprolog-wait-for-prompt-after
+    (ediprolog-send-string (format "['%s'].\n" ediprolog-temp-file))))
+  (message "%s consulted." (if (and transient-mark-mode mark-active)
+                               "Region" "Buffer"))
+  ;; go to line of the first error, if any
+  (let ((line (with-current-buffer ediprolog-temp-buffer
+                (when (save-excursion
+                        (goto-char (point-min))
+                        (re-search-forward "^ERROR.*?:\\([0-9]+\\)" nil t))
+                  (string-to-number (match-string 1))))))
+    (when line
+      (if (and transient-mark-mode mark-active)
+          (when (fboundp 'line-number-at-pos)
+            (goto-line (+ (line-number-at-pos (region-beginning)) line -1)))
+        (goto-line line)))))
+
+(defun ediprolog-running ()
+  "True iff `ediprolog-process' is a running process."
+  (and (processp ediprolog-process)
+       (eq (process-status ediprolog-process) 'run)))
+
+(defun ediprolog-more-solutions ()
+  "True iff there could be more solutions from the process."
+  (not ediprolog-seen-prompt))
+
+(defun ediprolog-interact-filter (proc string)
+  "Insert output from the process and update the state."
+  (when (and (buffer-live-p (ediprolog-temp-buffer proc))
+             (buffer-live-p (process-buffer proc)))
+    (let (str)
+      (with-current-buffer (ediprolog-temp-buffer proc)
+        (goto-char (point-max))
+        (let (buffer-read-only)
+          (insert string))
+        (with-current-buffer (process-buffer proc)
+          (ediprolog-log string))
+        ;; read a term from the user?
+        (when (re-search-backward "^|: $" nil t)
+          (with-current-buffer (process-buffer proc)
+            (setq ediprolog-read-term t))
+          (setq str (buffer-string))
+          (let (buffer-read-only)
+            (erase-buffer)))
+        ;; check for prompt
+        (goto-char (point-max))
+        (when (re-search-backward
+               (format "^%s" (regexp-quote ediprolog-prompt)) nil t)
+          (with-current-buffer (process-buffer proc)
+            (setq ediprolog-seen-prompt t))
+          ;; ignore further output due to accidental user input (C-j,
+          ;; C-m, etc.) while the query was running
+          (set-process-filter proc 'ediprolog-ignore-filter)
+          (skip-chars-backward "\n")
+          (setq str (buffer-substring (point-min) (point))))
+        (unless str
+          (goto-char (point-max))
+          ;; delay final line if it can still be completed to prompt
+          (let ((l (buffer-substring (line-beginning-position) (point))))
+            (when (and (<= (length l) (length ediprolog-prompt))
+                       (string= l (substring ediprolog-prompt 0 (length l))))
+              (goto-char (line-beginning-position))))
+          ;; delay emitting newlines until we are sure no prompt
+          ;; follows; one or two newlines can precede a prompt
+          (let ((d (abs (skip-chars-backward "\n"))))
+            (when (> d 2)
+              (forward-char (- d 2))))
+          (setq str (buffer-substring (point-min) (point)))
+          (let (buffer-read-only)
+            (delete-region (point-min) (point))))
+        (when str
+          (with-temp-buffer
+            ;; precede each line with ediprolog prefices
+            (insert str)
+            (goto-char (point-min))
+            (while (search-forward "\n" nil t)
+              (replace-match
+               (format "\n%s%s" (with-current-buffer (process-buffer proc)
+                                  ediprolog-indent-prefix) ediprolog-prefix)))
+            (setq str (buffer-string)))
+          (with-current-buffer (process-buffer proc)
+            (let ((near (<= (abs (- (point) (process-mark proc))) 1)))
+              (ediprolog-insert-at-marker str)
+              (when near
+                ;; catch up with output if point was reasonably close
+                (goto-char (process-mark proc))))))))))
+
+
+(defun ediprolog-insert-at-marker (&rest args)
+  "Insert strings ARGS at marker and update the marker."
+  (save-excursion
+    (goto-char (process-mark ediprolog-process))
+    (end-of-line)
+    (apply #'insert args)
+    (set-marker (process-mark ediprolog-process) (point))))
+
+(defun ediprolog-ignore-filter (proc str)
+  "Log and then ignore all process output."
+  (with-current-buffer (process-buffer proc)
+    (ediprolog-log str "gray")))
+
+(defun ediprolog-temp-buffer (proc)
+  (with-current-buffer (process-buffer proc)
+    ;; temp buffer can be buffer local
+    ediprolog-temp-buffer))
+
+(defun ediprolog-map-variables (func)
+  "Call FUNC with all ediprolog variables that can become buffer-local."
+  (mapc func '(ediprolog-process
+               ediprolog-program
+               ediprolog-program-switches
+               ediprolog-temp-buffer
+               ediprolog-history-buffer
+               ediprolog-seen-prompt
+               ediprolog-interrupted
+               ediprolog-read-term
+               ediprolog-indent-prefix
+               ediprolog-temp-file)))
+
+;;;###autoload
+(defun ediprolog-localize ()
+  "After `ediprolog-localize', any Prolog process started from
+this buffer becomes buffer-local."
+  (interactive)
+  (unless (local-variable-p 'ediprolog-process)
+    (ediprolog-map-variables #'make-local-variable)
+    (setq ediprolog-temp-file nil
+          ediprolog-process nil
+          ediprolog-history-buffer nil
+          ediprolog-temp-buffer nil)))
+
+(defun ediprolog-unlocalize ()
+  "Revert the effect of `ediprolog-localize'."
+  (interactive)
+  (when (local-variable-p 'ediprolog-process)
+    (ediprolog-kill-prolog)
+    (ediprolog-map-variables #'kill-local-variable)))
+
+(provide 'ediprolog)
+
+;;; ediprolog.el ends here
diff --git a/packages/eldoc-eval/README.md b/packages/eldoc-eval/README.md
new file mode 100644 (file)
index 0000000..d290902
--- /dev/null
@@ -0,0 +1,42 @@
+Enable eldoc support when minibuffer is in use.
+
+# Commentary:
+
+This package enables eldoc support when minibuffer is in use.
+
+Eldoc info is shown by default in mode-line,
+but you can have eldoc info somewhere else by setting
+`eldoc-in-minibuffer-show-fn` to another function (e.g `tooltip-show`).
+
+By default with this package `M-:` will use `pp-eval-expression`
+instead of `eval-expression`; you can change that by setting
+`eval-preferred-function` to something else.
+
+It also provides a convenient macro to enable eldoc support
+in your own functions using minibuffer or in your defadvices,
+that is `with-eldoc-in-minibuffer`, e.g:
+
+```lisp
+(defadvice edebug-eval-expression (around with-eldoc activate)
+  "This advice enable eldoc support."
+  (interactive (list (with-eldoc-in-minibuffer
+                       (read-from-minibuffer
+                        "Eval: " nil read-expression-map t
+                        'read-expression-history))))
+  ad-do-it)
+```
+
+Users of own minibuffer frame will have to set
+`eldoc-in-minibuffer-own-frame-p` to non-nil.
+
+You can turn On/Off eldoc support in minibuffer at any time
+with `eldoc-in-minibuffer-mode`.
+
+# Install:
+
+Add to .emacs:
+
+```lisp
+   (autoload 'eldoc-in-minibuffer-mode "eldoc-eval")
+   (eldoc-in-minibuffer-mode 1)
+```
diff --git a/packages/eldoc-eval/eldoc-eval.el b/packages/eldoc-eval/eldoc-eval.el
new file mode 100644 (file)
index 0000000..bf208e0
--- /dev/null
@@ -0,0 +1,225 @@
+;;; eldoc-eval.el --- Enable eldoc support when minibuffer is in use.
+
+;; Copyright (C) 2011, 2012, 2013 Free Software Foundation, Inc.
+
+;; Author: Thierry Volpiatto <thierry.volpiatto@gmail.com>
+;; Version: 0.1
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; This package enables eldoc support when minibuffer is in use.
+;;
+;; Eldoc info is shown by default in mode-line,
+;; but you can have eldoc info somewhere else by setting
+;; `eldoc-in-minibuffer-show-fn' to another function (e.g `tooltip-show').
+;;
+;; By default with this package `M-:' will use `pp-eval-expression'
+;; instead of `eval-expression'; you can change that by setting
+;; `eldoc-eval-preferred-function'.
+;;
+;; It also provides a convenient macro to enable eldoc support
+;; in your own functions using minibuffer or in your defadvices,
+;; that is `with-eldoc-in-minibuffer'.
+;;
+;; Users of own minibuffer frame will have to set
+;; `eldoc-in-minibuffer-own-frame-p' to non-nil.
+;;
+;; You can turn On/Off eldoc support in minibuffer any time
+;; with `eldoc-in-minibuffer-mode'.
+;;
+;;; Install:
+;; Add to .emacs:
+;;
+;;   (autoload 'eldoc-in-minibuffer-mode "eldoc-eval")
+;;   (eldoc-in-minibuffer-mode 1)
+
+
+;;; Code:
+(require 'eldoc)
+
+;;; Minibuffer support.
+;;  Enable displaying eldoc info in something else
+;;  Than minibuffer when this one is in use.
+;;
+(defgroup eldoc-eval nil
+  "Show eldoc infos in mode line while minibuffer is in use."
+  :group 'eldoc)
+
+(defcustom eldoc-in-minibuffer-show-fn 'eldoc-show-in-mode-line
+  "A function to display eldoc info.
+Should take one arg: the string to display"
+  :type 'function)
+
+(defcustom eldoc-show-in-mode-line-delay 12
+  "The time we show eldoc when Emacs is idle."
+  :type 'number)
+
+(defcustom eldoc-eval-preferred-function 'pp-eval-expression
+  "Preferred function to use with `M-:'."
+  :type 'function)
+
+(defcustom  eldoc-in-minibuffer-own-frame-p nil
+  "Whether minibuffer has its own frame or not."
+  :type 'boolean)
+
+;;; Compatibility with Emacs-24.4
+;; New implementation of eldoc in minibuffer that come
+;; with Emacs-24.4 show the eldoc info of current-buffer while
+;; minibuffer is in use, disable this and inline old Emacs behavior.
+;;
+(defconst eldoc-eval--old-message-function
+  (and (boundp 'eldoc-message-function) eldoc-message-function))
+
+(defadvice eldoc-display-message-no-interference-p
+    (after eldoc-eval activate)
+  (when eldoc-in-minibuffer-mode
+    (setq ad-return-value
+          (and ad-return-value
+               ;; Having this mode operate in an active minibuffer/echo area
+               ;; causes interference with what's going on there.
+               (not cursor-in-echo-area)
+               (not (eq (selected-window) (minibuffer-window)))))))
+
+;; Internal.
+(defvar eldoc-active-minibuffers-list nil
+  "List of active minibuffers with eldoc enabled.")
+(defvar eldoc-mode-line-rolling-flag nil)
+
+(defun eldoc-store-minibuffer ()
+  "Store minibuffer buffer name in `eldoc-active-minibuffers-list'.
+This function is called by each minibuffer started with eldoc support.
+See `with-eldoc-in-minibuffer'."
+  (with-selected-window (minibuffer-window)
+    (push (current-buffer) eldoc-active-minibuffers-list)))
+
+(defmacro with-eldoc-in-minibuffer (&rest body)
+  "Enable eldoc support for minibuffer input that runs in BODY."
+  (declare (indent 0) (debug t))
+  `(let ((timer (and eldoc-in-minibuffer-mode
+                     (run-with-idle-timer
+                      eldoc-idle-delay
+                      'repeat #'eldoc-run-in-minibuffer))))
+     (unwind-protect
+         (minibuffer-with-setup-hook
+             ;; When minibuffer is activated in body, store it.
+             #'eldoc-store-minibuffer
+           ,@body)
+       (and timer (cancel-timer timer))
+       ;; Each time a minibuffer exits or aborts
+       ;; its buffer is removed from stack,
+       ;; assuming we can only exit the active minibuffer
+       ;; on top of stack.
+       (setq eldoc-active-minibuffers-list
+             (cdr eldoc-active-minibuffers-list)))))
+
+(defun eldoc-current-buffer ()
+  "Return the current buffer prior to activating the minibuffer."
+  (with-selected-frame (last-nonminibuffer-frame)
+    (window-buffer
+     (cond (eldoc-in-minibuffer-own-frame-p
+            (selected-window))
+           ((fboundp 'window-in-direction)
+            (window-in-direction
+             'above (minibuffer-window)))
+           (t (minibuffer-selected-window))))))
+
+(defun eldoc-show-in-mode-line (str)
+  "Display string STR in the mode-line next to minibuffer."
+  (let (mode-line-in-non-selected-windows)
+    (with-current-buffer (eldoc-current-buffer)
+      (make-local-variable 'mode-line-format)
+      (let ((mode-line-format (concat " " str)))
+        (eldoc-maybe-roll-message-in-mode-line mode-line-format))
+      (force-mode-line-update))))
+
+(defun eldoc-maybe-roll-message-in-mode-line (str)
+  (let* ((max (window-width (get-buffer-window (eldoc-current-buffer))))
+         (len (length str))
+         (tmp-str str))
+    (if (and (> len max) eldoc-mode-line-rolling-flag)
+        (while (sit-for 0.3)
+           (setq tmp-str (substring tmp-str 2)
+                 mode-line-format (concat tmp-str " [<]" str))
+           (force-mode-line-update nil)
+           (when (< (length tmp-str) 2) (setq tmp-str str)))
+        (force-mode-line-update nil)
+        (sit-for eldoc-show-in-mode-line-delay))))
+
+(defun eldoc-mode-line-toggle-rolling ()
+  (interactive)
+  (if (and eldoc-in-minibuffer-mode
+           (minibuffer-window-active-p (selected-window)))
+      (setq eldoc-mode-line-rolling-flag (not eldoc-mode-line-rolling-flag))
+      (error "No active minibuffer found")))
+
+(defvar eldoc-in-minibuffer-mode-map
+  (let ((map (make-sparse-keymap)))
+    ;; FIXME: Should we use [remap eval-expression] instead?
+    (define-key map (kbd "M-:") 'eldoc-eval-expression)
+    map))
+
+;;;###autoload
+(define-minor-mode eldoc-in-minibuffer-mode
+    "Show eldoc for current minibuffer input."
+  :global t
+  (if eldoc-in-minibuffer-mode
+      (progn
+        (add-hook 'minibuffer-exit-hook
+                  (lambda ()
+                    (setq eldoc-mode-line-rolling-flag nil)))
+        (and (boundp 'eldoc-message-function)
+             (setq eldoc-message-function 'message))
+        (define-key minibuffer-local-map (kbd "C-@")
+          'eldoc-mode-line-toggle-rolling)
+        (setq eldoc-minor-mode-string " Eldoc-eval"))
+      (setq eldoc-minor-mode-string " Eldoc")
+      (and (boundp 'eldoc-message-function)
+           (setq eldoc-message-function eldoc-eval--old-message-function))
+      (define-key minibuffer-local-map (kbd "C-@") 'set-mark-command)))
+
+(defun eldoc-run-in-minibuffer ()
+  (let ((buf (window-buffer (active-minibuffer-window))))
+    ;; If this minibuffer have been started with
+    ;;`with-eldoc-in-minibuffer' give it eldoc support
+    ;; and update mode-line, otherwise do nothing.
+    (condition-case err
+        (when (member buf eldoc-active-minibuffers-list)
+          (with-current-buffer buf
+            (let* ((sym (save-excursion
+                          (unless (looking-back ")\\|\"")
+                            (forward-char -1))
+                          (eldoc-current-symbol)))
+                   (info-fn (eldoc-fnsym-in-current-sexp))
+                   (doc     (or (eldoc-get-var-docstring sym)
+                                (eldoc-get-fnsym-args-string
+                                 (car info-fn) (cadr info-fn)))))
+              (when doc (funcall eldoc-in-minibuffer-show-fn doc)))))
+      (scan-error nil)
+      (beginning-of-buffer nil)
+      (error (message "Eldoc in minibuffer error: %S" err)))))
+
+;;;###autoload
+(defun eldoc-eval-expression ()
+  "Eval expression with eldoc support in mode-line."
+  (interactive)
+  (with-eldoc-in-minibuffer
+    (call-interactively eldoc-eval-preferred-function)))
+
+
+(provide 'eldoc-eval)
+;;; eldoc-eval.el ends here
diff --git a/packages/elpa.rss b/packages/elpa.rss
new file mode 100644 (file)
index 0000000..7c54fd7
--- /dev/null
@@ -0,0 +1,50 @@
+<rss version="2.0">
+  <channel>
+    <title>ELPA News</title>
+    <link>http://elpa.gnu.org/packages/</link>
+    <language>en</language>
+    <description>News for the Emacs Lisp Package Archive</description>
+<item>
+<title>markchars version 0.2.0</title>
+<link>http://elpa.gnu.org/packages/news.html</link>
+<description>Mark suspicious characters, e.g. mixed scripts in a word.</description>
+<pubDate>Mon, 25 April 2011 20:10:00 -0500</pubDate>
+</item>
+<item>
+<title>epoch-view version 0.0.1</title>
+<link>http://elpa.gnu.org/packages/news.html</link>
+<description>View Unix epoch timestamps as dates</description>
+<pubDate>Mon, 25 April 2011 20:10:00 -0500</pubDate>
+</item>
+<item>
+<title>load-dir version 0.0.2</title>
+<link>http://elpa.gnu.org/packages/news.html</link>
+<description>Modularize your .emacs: autoload Lisp snippets</description>
+<pubDate>Sat, 26 March 2011 06:10:00 -0500</pubDate>
+</item>
+<item>
+<title>auctex.tar version 11.86</title>
+<link>http://elpa.gnu.org/packages/news.html</link>
+<description>integrated environment for *TeX*</description>
+<pubDate>Wed, 20 October 2010 16:32:11 -0400</pubDate>
+</item>
+<item>
+<title>muse.tar version 3.20</title>
+<link>http://elpa.gnu.org/packages/news.html</link>
+<description>Authoring and publishing tool</description>
+<pubDate>Thu, 26 August 2010 14:14:46 -0400</pubDate>
+</item>
+<item>
+<title>company.tar version 0.5</title>
+<link>http://elpa.gnu.org/packages/news.html</link>
+<description>Flexible inline text and code completion</description>
+<pubDate>Wed, 25 August 2010 21:30:45 -0400</pubDate>
+</item>
+<item>
+<title>company.tar version 0.5</title>
+<link>http://elpa.gnu.org/packages/news.html</link>
+<description>Flexible inline text and code completion</description>
+<pubDate>Sat, 31 July 2010 20:57:40 -0400</pubDate>
+</item>
+  </channel>
+</rss>
diff --git a/packages/enwc/COPYING b/packages/enwc/COPYING
new file mode 100644 (file)
index 0000000..94a9ed0
--- /dev/null
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/packages/enwc/Makefile b/packages/enwc/Makefile
new file mode 100644 (file)
index 0000000..46a2c68
--- /dev/null
@@ -0,0 +1,44 @@
+# This is part of ENWC
+#
+#  Copyright (C) 2012-2013 Free Software Foundation, Inc.
+#
+#  This program is free software: you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation, either version 3 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+LISPDIR=./
+DOCDIR=doc/
+
+ALLSRC=$(wildcard $(LISPDIR)/*.el)
+ALLELC=$(wildcard $(LISPDIR)/*.elc)
+
+PREFIX=/usr/local
+INFODIR=$(PREFIX)/info
+SITELISP=$(PREFIX)/share/emacs/site-lisp/enwc
+
+.PHONY: all install lisp clean
+.PRECIOUS: %.elc
+all: lisp
+
+lisp:
+       #$(MAKE) -C $(LISPDIR)
+
+install:
+       install -m 644 $(ALLELC) $(SITELISP)
+       install -m 644 $(ALLSRC) $(SITELISP)
+
+uninstall:
+       -rm -f $(SITELISP)/*.elc
+       -rm -f $(SITELISP)/*.el
+
+clean:
+       $(MAKE) -C $(LISPDIR) clean
diff --git a/packages/enwc/doc/connman.txt b/packages/enwc/doc/connman.txt
new file mode 100644 (file)
index 0000000..dafbe38
--- /dev/null
@@ -0,0 +1,7 @@
+net.connman.Manager.GetTechnologies():
+
+(("/net/connman/technology/ethernet" (("Name" ("Wired")) ("Type" ("ethernet")) ("Powered" (t)) ("Connected" (nil)) ("Tethering" (nil)))) ("/net/connman/technology/wifi" (("Name" ("WiFi")) ("Type" ("wifi")) ("Powered" (t)) ("Connected" (nil)) ("Tethering" (nil)))))
+
+net.connman.Manager.GetServices():
+
+(("/net/connman/service/wifi_0026b6e6518e_7270695f3830322e3178_managed_wep" (("Type" ("wifi")) ("Security" (("wep"))) ("State" ("idle")) ("Strength" (79)) ("Favorite" (nil)) ("Immutable" (nil)) ("AutoConnect" (nil)) ("Name" ("rpi_802.1x")) ("Ethernet" ((("Method" ("auto")) ("Interface" ("wlan0")) ("Address" ("00:26:B6:E6:51:8E")) ("MTU" (1500))))) ("IPv4" (nil)) ("IPv4.Configuration" ((("Method" ("dhcp"))))) ("IPv6" (nil)) ("IPv6.Configuration" ((("Method" ("auto")) ("Privacy" ("disabled"))))) ("Nameservers" (nil)) ("Nameservers.Configuration" (nil)) ("Timeservers" (nil)) ("Timeservers.Configuration" (nil)) ("Domains" (nil)) ("Domains.Configuration" (nil)) ("Proxy" (nil)) ("Proxy.Configuration" (nil)) ("Provider" (nil)))) ("/net/connman/service/wifi_0026b6e6518e_hidden_managed_none" (("Type" ("wifi")) ("Security" (("none"))) ("State" ("idle")) ("Strength" (79)) ("Favorite" (nil)) ("Immutable" (nil)) ("AutoConnect" (nil)) ("Ethernet" ((("Method" ("auto")) ("Interface" ("wlan0")) ("Address" ("00:26:B6:E6:51:8E")) ("MTU" (1500))))) ("IPv4" (nil)) ("IPv4.Configuration" ((("Method" ("dhcp"))))) ("IPv6" (nil)) ("IPv6.Configuration" ((("Method" ("auto")) ("Privacy" ("disabled"))))) ("Nameservers" (nil)) ("Nameservers.Configuration" (nil)) ("Timeservers" (nil)) ("Timeservers.Configuration" (nil)) ("Domains" (nil)) ("Domains.Configuration" (nil)) ("Proxy" (nil)) ("Proxy.Configuration" (nil)) ("Provider" (nil)))) ("/net/connman/service/wifi_0026b6e6518e_7270695f77706132_managed_ieee8021x" (("Type" ("wifi")) ("Security" (("ieee8021x"))) ("State" ("idle")) ("Strength" (74)) ("Favorite" (nil)) ("Immutable" (nil)) ("AutoConnect" (nil)) ("Name" ("rpi_wpa2")) ("Ethernet" ((("Method" ("auto")) ("Interface" ("wlan0")) ("Address" ("00:26:B6:E6:51:8E")) ("MTU" (1500))))) ("IPv4" (nil)) ("IPv4.Configuration" ((("Method" ("dhcp"))))) ("IPv6" (nil)) ("IPv6.Configuration" ((("Method" ("auto")) ("Privacy" ("disabled"))))) ("Nameservers" (nil)) ("Nameservers.Configuration" (nil)) ("Timeservers" (nil)) ("Timeservers.Configuration" (nil)) ("Domains" (nil)) ("Domains.Configuration" (nil)) ("Proxy" (nil)) ("Proxy.Configuration" (nil)) ("Provider" (nil)))))
diff --git a/packages/enwc/doc/enwc.texi b/packages/enwc/doc/enwc.texi
new file mode 100644 (file)
index 0000000..cc1a40f
--- /dev/null
@@ -0,0 +1,78 @@
+\input texinfo @c -*-texinfo-*-
+@c %**start of header
+@setfilename enwc.info
+@settitle ENWC Manual
+@c %**end of header
+
+@include version.texi
+@include fdl.texi
+
+@dircategory Emacs
+@direntry
+* ENWC: (enwc).         The Emacs Network Client.
+@end direntry
+
+@copying
+This manual is for ENWC, the Emacs Network Client.
+
+Copyright (C) 2012 Ian Dunn
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts.  A copy of the license is included in the section entitled
+``GNU Free Documentation License''.
+@end quotation
+@end copying
+
+@titlepage
+@title  ENWC
+@subtitle Edition @value{EDITION}, for @code{enwc} version @value{VERSION}
+@subtitle @value{UPDATED}
+@author by Ian Dunn
+
+@page
+@vskip 0pt plus 1filll
+@insertcopying{}
+@end titlepage
+
+@contents
+
+@ifnottex
+@node Top
+@top ENWC
+
+@insertcopying
+
+This manual is for ENWC, the Emacs Network Client.
+
+This is edition @value{EDITION}, for @code{enwc} version @value{VERSION}
+@end ifnottex
+
+@menu
+* Introduction::        Overview of ENWC.
+* Setup::               Getting ready to use ENWC.
+* Configuration::       All of the configuration options.
+* Commands::            The commands that ENWC uses.
+@end menu
+
+@node Introduction
+@chapter Introduction
+
+ENWC is the Emacs Network Client.  It uses several backends to allow the user to control network connections through GNU Emacs, while still allowing control to remain with the actual network manager.  ENWC makes uses of the D-Bus interfaces provided by these network managers.
+
+@node Setup
+@chapter Setup
+
+First, the path to ENWC must be added to the @var{load-path} variable.  Then, in the @file{.emacs} file, the following must be added:
+
+@lisp
+(require 'enwc-setup)
+(enwc-setup)
+@end lisp
+
+Now, simply press @kbd{M+x}, and type @kbd{ENWC}, and press @kbd{RET}.  ENWC will begin scanning for networks on the wireless interface, and display them in its buffer.
+
+@bye
diff --git a/packages/enwc/doc/fdl.texi b/packages/enwc/doc/fdl.texi
new file mode 100644 (file)
index 0000000..cb71f05
--- /dev/null
@@ -0,0 +1,505 @@
+@c The GNU Free Documentation License.
+@center Version 1.3, 3 November 2008
+
+@c This file is intended to be included within another document,
+@c hence no sectioning command or @node.
+
+@display
+Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+@uref{http://fsf.org/}
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+@end display
+
+@enumerate 0
+@item
+PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document @dfn{free} in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of ``copyleft'', which means that derivative
+works of the document must themselves be free in the same sense.  It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does.  But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book.  We recommend this License
+principally for works whose purpose is instruction or reference.
+
+@item
+APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License.  Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein.  The ``Document'', below,
+refers to any such manual or work.  Any member of the public is a
+licensee, and is addressed as ``you''.  You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A ``Modified Version'' of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A ``Secondary Section'' is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject.  (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.)  The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The ``Invariant Sections'' are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.  If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant.  The Document may contain zero
+Invariant Sections.  If the Document does not identify any Invariant
+Sections then there are none.
+
+The ``Cover Texts'' are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.  A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A ``Transparent'' copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters.  A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text.  A copy that is not ``Transparent'' is called ``Opaque''.
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, La@TeX{} input
+format, SGML or XML using a publicly available
+DTD, and standard-conforming simple HTML,
+PostScript or PDF designed for human modification.  Examples
+of transparent image formats include PNG, XCF and
+JPG.  Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, SGML or
+XML for which the DTD and/or processing tools are
+not generally available, and the machine-generated HTML,
+PostScript or PDF produced by some word processors for
+output purposes only.
+
+The ``Title Page'' means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page.  For works in
+formats which do not have any title page as such, ``Title Page'' means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+The ``publisher'' means any person or entity that distributes copies
+of the Document to the public.
+
+A section ``Entitled XYZ'' means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language.  (Here XYZ stands for a
+specific section name mentioned below, such as ``Acknowledgements'',
+``Dedications'', ``Endorsements'', or ``History''.)  To ``Preserve the Title''
+of such a section when you modify the Document means that it remains a
+section ``Entitled XYZ'' according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document.  These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+@item
+VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License.  You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute.  However, you may accept
+compensation in exchange for copies.  If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+@item
+COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover.  Both covers must also clearly and legibly identify
+you as the publisher of these copies.  The front cover must present
+the full title with all words of the title equally prominent and
+visible.  You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+@item
+MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it.  In addition, you must do these things in the Modified Version:
+
+@enumerate A
+@item
+Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document).  You may use the same title as a previous version
+if the original publisher of that version gives permission.
+
+@item
+List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+
+@item
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+
+@item
+Preserve all the copyright notices of the Document.
+
+@item
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
+@item
+Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+
+@item
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+
+@item
+Include an unaltered copy of this License.
+
+@item
+Preserve the section Entitled ``History'', Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page.  If
+there is no section Entitled ``History'' in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+
+@item
+Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on.  These may be placed in the ``History'' section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+
+@item
+For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+
+@item
+Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles.  Section numbers
+or the equivalent are not considered part of the section titles.
+
+@item
+Delete any section Entitled ``Endorsements''.  Such a section
+may not be included in the Modified Version.
+
+@item
+Do not retitle any existing section to be Entitled ``Endorsements'' or
+to conflict in title with any Invariant Section.
+
+@item
+Preserve any Warranty Disclaimers.
+@end enumerate
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant.  To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled ``Endorsements'', provided it contains
+nothing but endorsements of your Modified Version by various
+parties---for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version.  Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity.  If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+@item
+COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy.  If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled ``History''
+in the various original documents, forming one section Entitled
+``History''; likewise combine any sections Entitled ``Acknowledgements'',
+and any sections Entitled ``Dedications''.  You must delete all
+sections Entitled ``Endorsements.''
+
+@item
+COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+@item
+AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an ``aggregate'' if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+@item
+TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections.  You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers.  In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled ``Acknowledgements'',
+``Dedications'', or ``History'', the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+@item
+TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+
+@item
+FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time.  Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.  See
+@uref{http://www.gnu.org/copyleft/}.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License ``or any later version'' applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation.  If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.  If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+
+@item
+RELICENSING
+
+``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works.  A
+public wiki that anybody can edit is an example of such a server.  A
+``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the
+site means any set of copyrightable works thus published on the MMC
+site.
+
+``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+``Incorporate'' means to publish or republish a Document, in whole or
+in part, as part of another Document.
+
+An MMC is ``eligible for relicensing'' if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole
+or in part into the MMC, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
+@end enumerate
+
+@page
+@heading ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+@smallexample
+@group
+  Copyright (C)  @var{year}  @var{your name}.
+  Permission is granted to copy, distribute and/or modify this document
+  under the terms of the GNU Free Documentation License, Version 1.3
+  or any later version published by the Free Software Foundation;
+  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+  Texts.  A copy of the license is included in the section entitled ``GNU
+  Free Documentation License''.
+@end group
+@end smallexample
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the ``with@dots{}Texts.''@: line with this:
+
+@smallexample
+@group
+    with the Invariant Sections being @var{list their titles}, with
+    the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
+    being @var{list}.
+@end group
+@end smallexample
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+
+@c Local Variables:
+@c ispell-local-pdict: "ispell-dict"
+@c End:
diff --git a/packages/enwc/doc/nm-dbus.txt b/packages/enwc/doc/nm-dbus.txt
new file mode 100644 (file)
index 0000000..89aa5a9
--- /dev/null
@@ -0,0 +1,356 @@
+NetworkManager:
+
+"<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\"
+\"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">
+<node>
+  <interface name=\"org.freedesktop.DBus.Introspectable\">
+    <method name=\"Introspect\">
+      <arg name=\"data\" direction=\"out\" type=\"s\"/>
+    </method>
+  </interface>
+  <interface name=\"org.freedesktop.DBus.Properties\">
+    <method name=\"Get\">
+      <arg name=\"interface\" direction=\"in\" type=\"s\"/>
+      <arg name=\"propname\" direction=\"in\" type=\"s\"/>
+      <arg name=\"value\" direction=\"out\" type=\"v\"/>
+    </method>
+    <method name=\"Set\">
+      <arg name=\"interface\" direction=\"in\" type=\"s\"/>
+      <arg name=\"propname\" direction=\"in\" type=\"s\"/>
+      <arg name=\"value\" direction=\"in\" type=\"v\"/>
+    </method>
+    <method name=\"GetAll\">
+      <arg name=\"interface\" direction=\"in\" type=\"s\"/>
+      <arg name=\"props\" direction=\"out\" type=\"a{sv}\"/>
+    </method>
+  </interface>
+  <interface name=\"org.freedesktop.NetworkManager\">
+    <method name=\"state\">
+      <arg name=\"state\" type=\"u\" direction=\"out\"/>
+    </method>
+    <method name=\"SetLogging\">
+      <arg name=\"level\" type=\"s\" direction=\"in\"/>
+      <arg name=\"domains\" type=\"s\" direction=\"in\"/>
+    </method>
+    <method name=\"GetPermissions\">
+      <arg name=\"permissions\" type=\"a{ss}\" direction=\"out\"/>
+    </method>
+    <method name=\"Enable\">
+      <arg name=\"enable\" type=\"b\" direction=\"in\"/>
+    </method>
+    <method name=\"Sleep\">
+      <arg name=\"sleep\" type=\"b\" direction=\"in\"/>
+    </method>
+    <method name=\"DeactivateConnection\">
+      <arg name=\"active_connection\" type=\"o\" direction=\"in\"/>
+    </method>
+    <method name=\"AddAndActivateConnection\">
+      <arg name=\"connection\" type=\"a{sa{sv}}\" direction=\"in\"/>
+      <arg name=\"device\" type=\"o\" direction=\"in\"/>
+      <arg name=\"specific_object\" type=\"o\" direction=\"in\"/>
+      <arg name=\"path\" type=\"o\" direction=\"out\"/>
+      <arg name=\"active_connection\" type=\"o\" direction=\"out\"/>
+    </method>
+    <method name=\"ActivateConnection\">
+      <arg name=\"connection\" type=\"o\" direction=\"in\"/>
+      <arg name=\"device\" type=\"o\" direction=\"in\"/>
+      <arg name=\"specific_object\" type=\"o\" direction=\"in\"/>
+      <arg name=\"active_connection\" type=\"o\" direction=\"out\"/>
+    </method>
+    <method name=\"GetDeviceByIpIface\">
+      <arg name=\"iface\" type=\"s\" direction=\"in\"/>
+      <arg name=\"device\" type=\"o\" direction=\"out\"/>
+    </method>
+    <method name=\"GetDevices\">
+      <arg name=\"devices\" type=\"ao\" direction=\"out\"/>
+    </method>
+    <signal name=\"DeviceRemoved\">
+      <arg type=\"o\"/>
+    </signal>
+    <signal name=\"DeviceAdded\">
+      <arg type=\"o\"/>
+    </signal>
+    <signal name=\"PropertiesChanged\">
+      <arg type=\"a{sv}\"/>
+    </signal>
+    <signal name=\"StateChanged\">
+      <arg type=\"u\"/>
+    </signal>
+    <signal name=\"CheckPermissions\">
+    </signal>
+    <property name=\"State\" type=\"u\" access=\"read\"/>
+    <property name=\"Version\" type=\"s\" access=\"read\"/>
+    <property name=\"ActiveConnections\" type=\"ao\" access=\"read\"/>
+    <property name=\"WimaxHardwareEnabled\" type=\"b\" access=\"read\"/>
+    <property name=\"WimaxEnabled\" type=\"b\" access=\"readwrite\"/>
+    <property name=\"WwanHardwareEnabled\" type=\"b\" access=\"read\"/>
+    <property name=\"WwanEnabled\" type=\"b\" access=\"readwrite\"/>
+    <property name=\"WirelessHardwareEnabled\" type=\"b\" access=\"read\"/>
+    <property name=\"WirelessEnabled\" type=\"b\" access=\"readwrite\"/>
+    <property name=\"NetworkingEnabled\" type=\"b\" access=\"read\"/>
+  </interface>
+  <node name=\"AccessPoint\"/>
+  <node name=\"AgentManager\"/>
+  <node name=\"Devices\"/>
+  <node name=\"Settings\"/>
+</node>
+"
+
+AccessPoint/*:
+
+"<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\"
+\"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">
+<node>
+  <interface name=\"org.freedesktop.DBus.Introspectable\">
+    <method name=\"Introspect\">
+      <arg name=\"data\" direction=\"out\" type=\"s\"/>
+    </method>
+  </interface>
+  <interface name=\"org.freedesktop.DBus.Properties\">
+    <method name=\"Get\">
+      <arg name=\"interface\" direction=\"in\" type=\"s\"/>
+      <arg name=\"propname\" direction=\"in\" type=\"s\"/>
+      <arg name=\"value\" direction=\"out\" type=\"v\"/>
+    </method>
+    <method name=\"Set\">
+      <arg name=\"interface\" direction=\"in\" type=\"s\"/>
+      <arg name=\"propname\" direction=\"in\" type=\"s\"/>
+      <arg name=\"value\" direction=\"in\" type=\"v\"/>
+    </method>
+    <method name=\"GetAll\">
+      <arg name=\"interface\" direction=\"in\" type=\"s\"/>
+      <arg name=\"props\" direction=\"out\" type=\"a{sv}\"/>
+    </method>
+  </interface>
+  <interface name=\"org.freedesktop.NetworkManager.AccessPoint\">
+    <signal name=\"PropertiesChanged\">
+      <arg type=\"a{sv}\"/>
+    </signal>
+    <property name=\"Strength\" type=\"y\" access=\"read\"/>
+    <property name=\"MaxBitrate\" type=\"u\" access=\"read\"/>
+    <property name=\"Mode\" type=\"u\" access=\"read\"/>
+    <property name=\"HwAddress\" type=\"s\" access=\"read\"/>
+    <property name=\"Frequency\" type=\"u\" access=\"read\"/>
+    <property name=\"Ssid\" type=\"ay\" access=\"read\"/>
+    <property name=\"RsnFlags\" type=\"u\" access=\"read\"/>
+    <property name=\"WpaFlags\" type=\"u\" access=\"read\"/>
+    <property name=\"Flags\" type=\"u\" access=\"read\"/>
+  </interface>
+</node>
+"
+
+Devices/*:
+
+"<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\"
+\"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">
+<node>
+  <interface name=\"org.freedesktop.DBus.Introspectable\">
+    <method name=\"Introspect\">
+      <arg name=\"data\" direction=\"out\" type=\"s\"/>
+    </method>
+  </interface>
+  <interface name=\"org.freedesktop.DBus.Properties\">
+    <method name=\"Get\">
+      <arg name=\"interface\" direction=\"in\" type=\"s\"/>
+      <arg name=\"propname\" direction=\"in\" type=\"s\"/>
+      <arg name=\"value\" direction=\"out\" type=\"v\"/>
+    </method>
+    <method name=\"Set\">
+      <arg name=\"interface\" direction=\"in\" type=\"s\"/>
+      <arg name=\"propname\" direction=\"in\" type=\"s\"/>
+      <arg name=\"value\" direction=\"in\" type=\"v\"/>
+    </method>
+    <method name=\"GetAll\">
+      <arg name=\"interface\" direction=\"in\" type=\"s\"/>
+      <arg name=\"props\" direction=\"out\" type=\"a{sv}\"/>
+    </method>
+  </interface>
+  <interface name=\"org.freedesktop.NetworkManager.Device\">
+    <method name=\"Disconnect\">
+    </method>
+    <signal name=\"StateChanged\">
+      <arg type=\"u\"/>
+      <arg type=\"u\"/>
+      <arg type=\"u\"/>
+    </signal>
+    <property name=\"DeviceType\" type=\"u\" access=\"read\"/>
+    <property name=\"FirmwareMissing\" type=\"b\" access=\"read\"/>
+    <property name=\"Autoconnect\" type=\"b\" access=\"readwrite\"/>
+    <property name=\"Managed\" type=\"b\" access=\"read\"/>
+    <property name=\"Dhcp6Config\" type=\"o\" access=\"read\"/>
+    <property name=\"Ip6Config\" type=\"o\" access=\"read\"/>
+    <property name=\"Dhcp4Config\" type=\"o\" access=\"read\"/>
+    <property name=\"Ip4Config\" type=\"o\" access=\"read\"/>
+    <property name=\"ActiveConnection\" type=\"o\" access=\"read\"/>
+    <property name=\"StateReason\" type=\"(uu)\" access=\"read\"/>
+    <property name=\"State\" type=\"u\" access=\"read\"/>
+    <property name=\"Ip4Address\" type=\"u\" access=\"read\"/>
+    <property name=\"Capabilities\" type=\"u\" access=\"read\"/>
+    <property name=\"FirmwareVersion\" type=\"s\" access=\"read\"/>
+    <property name=\"DriverVersion\" type=\"s\" access=\"read\"/>
+    <property name=\"Driver\" type=\"s\" access=\"read\"/>
+    <property name=\"IpInterface\" type=\"s\" access=\"read\"/>
+    <property name=\"Interface\" type=\"s\" access=\"read\"/>
+    <property name=\"Udi\" type=\"s\" access=\"read\"/>
+  </interface>
+  <interface name=\"org.freedesktop.NetworkManager.Device.Wireless\">
+    <method name=\"RequestScan\">
+      <arg name=\"options\" type=\"a{sv}\" direction=\"in\"/>
+    </method>
+    <method name=\"GetAccessPoints\">
+      <arg name=\"access_points\" type=\"ao\" direction=\"out\"/>
+    </method>
+    <signal name=\"AccessPointRemoved\">
+      <arg type=\"o\"/>
+    </signal>
+    <signal name=\"AccessPointAdded\">
+      <arg type=\"o\"/>
+    </signal>
+    <signal name=\"PropertiesChanged\">
+      <arg type=\"a{sv}\"/>
+    </signal>
+    <property name=\"WirelessCapabilities\" type=\"u\" access=\"read\"/>
+    <property name=\"ActiveAccessPoint\" type=\"o\" access=\"read\"/>
+    <property name=\"Bitrate\" type=\"u\" access=\"read\"/>
+    <property name=\"Mode\" type=\"u\" access=\"read\"/>
+    <property name=\"PermHwAddress\" type=\"s\" access=\"read\"/>
+    <property name=\"HwAddress\" type=\"s\" access=\"read\"/>
+  </interface>
+</node>
+"
+
+AgentManager:
+
+"<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\"
+\"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">
+<node>
+  <interface name=\"org.freedesktop.DBus.Introspectable\">
+    <method name=\"Introspect\">
+      <arg name=\"data\" direction=\"out\" type=\"s\"/>
+    </method>
+  </interface>
+  <interface name=\"org.freedesktop.DBus.Properties\">
+    <method name=\"Get\">
+      <arg name=\"interface\" direction=\"in\" type=\"s\"/>
+      <arg name=\"propname\" direction=\"in\" type=\"s\"/>
+      <arg name=\"value\" direction=\"out\" type=\"v\"/>
+    </method>
+    <method name=\"Set\">
+      <arg name=\"interface\" direction=\"in\" type=\"s\"/>
+      <arg name=\"propname\" direction=\"in\" type=\"s\"/>
+      <arg name=\"value\" direction=\"in\" type=\"v\"/>
+    </method>
+    <method name=\"GetAll\">
+      <arg name=\"interface\" direction=\"in\" type=\"s\"/>
+      <arg name=\"props\" direction=\"out\" type=\"a{sv}\"/>
+    </method>
+  </interface>
+  <interface name=\"org.freedesktop.NetworkManager.AgentManager\">
+    <method name=\"Unregister\">
+    </method>
+    <method name=\"Register\">
+      <arg name=\"identifier\" type=\"s\" direction=\"in\"/>
+    </method>
+  </interface>
+</node>
+"
+
+Settings:
+
+"<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\"
+\"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">
+<node>
+  <interface name=\"org.freedesktop.DBus.Introspectable\">
+    <method name=\"Introspect\">
+      <arg name=\"data\" direction=\"out\" type=\"s\"/>
+    </method>
+  </interface>
+  <interface name=\"org.freedesktop.DBus.Properties\">
+    <method name=\"Get\">
+      <arg name=\"interface\" direction=\"in\" type=\"s\"/>
+      <arg name=\"propname\" direction=\"in\" type=\"s\"/>
+      <arg name=\"value\" direction=\"out\" type=\"v\"/>
+    </method>
+    <method name=\"Set\">
+      <arg name=\"interface\" direction=\"in\" type=\"s\"/>
+      <arg name=\"propname\" direction=\"in\" type=\"s\"/>
+      <arg name=\"value\" direction=\"in\" type=\"v\"/>
+    </method>
+    <method name=\"GetAll\">
+      <arg name=\"interface\" direction=\"in\" type=\"s\"/>
+      <arg name=\"props\" direction=\"out\" type=\"a{sv}\"/>
+    </method>
+  </interface>
+  <interface name=\"org.freedesktop.NetworkManager.Settings\">
+    <method name=\"SaveHostname\">
+      <arg name=\"hostname\" type=\"s\" direction=\"in\"/>
+    </method>
+    <method name=\"AddConnection\">
+      <arg name=\"connection\" type=\"a{sa{sv}}\" direction=\"in\"/>
+      <arg name=\"path\" type=\"o\" direction=\"out\"/>
+    </method>
+    <method name=\"GetConnectionByUuid\">
+      <arg name=\"uuid\" type=\"s\" direction=\"in\"/>
+      <arg name=\"connection\" type=\"o\" direction=\"out\"/>
+    </method>
+    <method name=\"ListConnections\">
+      <arg name=\"connections\" type=\"ao\" direction=\"out\"/>
+    </method>
+    <signal name=\"NewConnection\">
+      <arg type=\"o\"/>
+    </signal>
+    <signal name=\"PropertiesChanged\">
+      <arg type=\"a{sv}\"/>
+    </signal>
+    <property name=\"CanModify\" type=\"b\" access=\"read\"/>
+    <property name=\"Hostname\" type=\"s\" access=\"read\"/>
+  </interface>
+  <node name=\"0\"/>
+</node>
+"
+Settings/0:
+
+"<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\"
+\"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">
+<node>
+  <interface name=\"org.freedesktop.DBus.Introspectable\">
+    <method name=\"Introspect\">
+      <arg name=\"data\" direction=\"out\" type=\"s\"/>
+    </method>
+  </interface>
+  <interface name=\"org.freedesktop.DBus.Properties\">
+    <method name=\"Get\">
+      <arg name=\"interface\" direction=\"in\" type=\"s\"/>
+      <arg name=\"propname\" direction=\"in\" type=\"s\"/>
+      <arg name=\"value\" direction=\"out\" type=\"v\"/>
+    </method>
+    <method name=\"Set\">
+      <arg name=\"interface\" direction=\"in\" type=\"s\"/>
+      <arg name=\"propname\" direction=\"in\" type=\"s\"/>
+      <arg name=\"value\" direction=\"in\" type=\"v\"/>
+    </method>
+    <method name=\"GetAll\">
+      <arg name=\"interface\" direction=\"in\" type=\"s\"/>
+      <arg name=\"props\" direction=\"out\" type=\"a{sv}\"/>
+    </method>
+  </interface>
+  <interface name=\"org.freedesktop.NetworkManager.Settings.Connection\">
+    <method name=\"GetSecrets\">
+      <arg name=\"setting_name\" type=\"s\" direction=\"in\"/>
+      <arg name=\"secrets\" type=\"a{sa{sv}}\" direction=\"out\"/>
+    </method>
+    <method name=\"GetSettings\">
+      <arg name=\"settings\" type=\"a{sa{sv}}\" direction=\"out\"/>
+    </method>
+    <method name=\"Delete\">
+    </method>
+    <method name=\"Update\">
+      <arg name=\"properties\" type=\"a{sa{sv}}\" direction=\"in\"/>
+    </method>
+    <signal name=\"Removed\">
+    </signal>
+    <signal name=\"Updated\">
+    </signal>
+  </interface>
+</node>
+"
diff --git a/packages/enwc/doc/settings.txt b/packages/enwc/doc/settings.txt
new file mode 100644 (file)
index 0000000..02a55da
--- /dev/null
@@ -0,0 +1,11 @@
+IPv4 settings:
+  Address - text input
+  Prefix - text input
+  Gateway - text input
+
+DNS Settings:
+  3 DNS Servers - text input
+
+Encryption Type
+  - Check box to use encryption
+  - Drop-down list of encryption types available.
diff --git a/packages/enwc/doc/version.texi b/packages/enwc/doc/version.texi
new file mode 100644 (file)
index 0000000..f910a9b
--- /dev/null
@@ -0,0 +1,4 @@
+@set UPDATED 15 December 2012
+@set UPDATED-MONTH December 2012
+@set EDITION 1.0
+@set VERSION 1.0
diff --git a/packages/enwc/enwc-cm.el b/packages/enwc/enwc-cm.el
new file mode 100644 (file)
index 0000000..91f002a
--- /dev/null
@@ -0,0 +1,153 @@
+;; enwc-cm.el
+
+;; Copyright (C) 2012,2013 Free Software Foundation, Inc.
+
+;; Author: Ian Dunn
+;; Keywords: enwc, network, wicd, manager, nm
+
+;; This file is part of ENWC
+
+;; ENWC is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; ENWC is distributed in the hope that it will be useful, but WITHOUT
+;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+;; License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with ENWC; see the file COPYING.  If not, write to the Free
+;; Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+;; 02110-1301, USA.
+
+;; connect
+;; disconnect
+;; scan
+;; get-prop
+;; save-profile
+;; get-networks
+;; check-connecting
+;; get-current-nw-id
+
+
+(require 'enwc)
+
+(defgroup enwc-cm nil
+  "*ConnMan variables for ENWC"
+  :prefix "ewnc-cm-"
+  :group 'enwc)
+
+(defcustom enwc-cm-dbus-service "net.connman"
+  "ConnMan D-Bus service."
+  :group 'enwc-cm
+  :type 'string)
+
+
+;; DEMAND TO SEE LIFE'S MANAGER!!
+
+(defcustom enwc-cm-dbus-manager-interface "net.connman.Manager"
+  "ConnMan D-Bus Manager interface."
+  :group 'enwc-cm
+  :type 'string)
+
+(defcustom enwc-cm-dbus-service-interface "net.connman.Service"
+  "ConnMan D-Bus Service interface."
+  :group 'enwc-cm
+  :type 'string)
+
+(defvar enwc-cm-details-list
+  '("Name" "bssid" "Strength" "Security" "mode" "channel"))
+
+(defun enwc-cm-get-services ()
+  (dbus-call-method :system
+                   enwc-cm-dbus-service
+                   "/"
+                   enwc-cm-dbus-manager-interface
+                   "GetServices"))
+
+(defun enwc-cm-get-networks ()
+  (let ((services (enwc-cm-get-services)))
+    (mapcar 'car services)))
+
+(defun enwc-cm-get-network (id)
+  (nth id (enwc-cm-get-services)))
+
+;; scan
+(defun enwc-cm-scan (wired)
+  (dbus-call-method :system
+                   enwc-cm-dbus-service
+                   "/net/connman/technology/(ethernet|wifi)"
+                   "net.connman.Technology"
+                   "Scan"))
+
+;; connect
+(defun enwc-cm-connect (wired id)
+  (dbus-call-method :system
+                   enwc-cm-dbus-service
+                   "/net/connman/service/serviceID"
+                   enwc-cm-dbus-service-interface
+                   "Connect"))
+
+
+(defun enwc-cm-disconnect (wired)
+  (dbus-call-method :system
+                   enwc-cm-dbus-service
+                   "/net/connman/service/CONNECTED-SERVICE"
+                   enwc-cm-dbus-service-interface
+                   "Disconnect"))
+
+(defun enwc-cm-get-nw-prop (id prop)
+  (let ((network (enwc-cm-get-network id)))
+    (car (cadr (assoc prop (cadr network))))))
+
+(defun enwc-cm-get-wireless-network-property (id prop)
+  (enwc-cm-get-nw-prop id prop))
+
+(defun enwc-cm-get-encryption-type (id)
+  (enwc-cm-get-nw-prop id "Security"))
+
+(defun enwc-cm-get-ip-addr (wired id)
+  (let ((ipv4-config (enwc-cm-get-nw-prop id "IPv4.Configuration")))
+    (car (cadr (assoc "Address" ipv4-config)))))
+
+(defun enwc-cm-get-netmask (wired id)
+  (let ((ipv4-config (enwc-cm-get-nw-prop id "IPv4.Configuration")))
+    (car (cadr (assoc "Netmask" ipv4-config)))))
+
+(defun enwc-cm-get-gateway (wired id)
+  (let ((ipv4-config (enwc-cm-get-nw-prop id "IPv4.Configuration")))
+    (car (cadr (assoc "Gateway" ipv4-config)))))
+
+(defun enwc-cm-get-dns (wired id)
+  (enwc-cm-get-nw-prop id "Nameservers.Configuration"))
+
+(defun enwc-cm-set-nw-prop (wired id prop val)
+  (dbus-call-method :system
+                   enwc-cm-dbus-service
+                   (car (enwc-cm-get-network id))
+                   enwc-cm-dbus-service-interface
+                   "SetProperty"
+                   prop
+                   val))
+
+(defun enwc-cm-save-nw-settings (wired id settings)
+  (let* ((ipv4 (enwc-cm-get-nw-prop id "IPv4.Configuration"))
+        (method (car (cadr (assoc "Method" ipv4))))
+        (ip-addr (cdr (assoc "addr" settings)))
+        (netmask (cdr (assoc "netmask" settings)))
+        (gateway (cdr (assoc "gateway" settings)))
+        new-ipv4-config new-dns-config)
+    (setq new-ipv4-config
+         (list (list (cons "Method" (cons (cons method nil) nil))
+                     (cons "Address" (cons (cons ip-addr nil) nil))
+                     (cons "Netmask" (cons (cons netmask nil) nil))
+                     (cons "Gateway" (cons (cons gateway nil) nil)))))
+    (setq new-dns-config
+         (list (list (cdr (assoc "dns1" settings))
+                     (cdr (assoc "dns2" settings)))))
+    (enwc-cm-set-nw-prop wired id "IPv4.Configuration"
+                        new-ipv4-config)
+    (enwc-cm-set-nw-prop wired id "Nameservers.Configuration"
+                        new-dns-config)))
diff --git a/packages/enwc/enwc-nm.el b/packages/enwc/enwc-nm.el
new file mode 100644 (file)
index 0000000..9ba8c5e
--- /dev/null
@@ -0,0 +1,911 @@
+;;; enwc-nm.el - The NetworkManager backend to ENWC
+
+;; Copyright (C) 2012,2013 Free Software Foundation, Inc.
+
+;; Author: Ian Dunn
+;; Keywords: enwc, network, wicd, manager, nm
+
+;; This file is part of ENWC
+
+;; ENWC is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; ENWC is distributed in the hope that it will be useful, but WITHOUT
+;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+;; License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with ENWC; see the file COPYING.  If not, write to the Free
+;; Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+;; 02110-1301, USA.
+
+
+;;; Commentary:
+;;
+;;   This requires NetworkManager >= 0.9.6
+;;
+
+(require 'enwc)
+
+(defgroup enwc-nm nil
+  "*NetworkManager variables for ENWC"
+  :prefix "enwc-nm-"
+  :group 'enwc)
+
+(defcustom enwc-nm-dbus-service "org.freedesktop.NetworkManager"
+  "NetworkManager D-Bus service."
+  :group 'enwc-nm
+  :type 'string)
+
+(defcustom enwc-nm-dbus-path "/org/freedesktop/NetworkManager"
+  "The default D-Bus path for NetworkManager."
+  :group 'enwc-nm
+  :type 'string)
+
+(defcustom enwc-nm-dbus-settings-path "/org/freedesktop/NetworkManager/Settings"
+  "The settings D-Bus path for NetworkManager."
+  :group 'enwc-nm
+  :type 'string)
+
+(defcustom enwc-nm-dbus-interface "org.freedesktop.NetworkManager"
+  "The default D-Bus interface for NetworkManager."
+  :group 'enwc-nm
+  :type 'string)
+
+(defcustom enwc-nm-dbus-wireless-interface "org.freedesktop.NetworkManager.Device.Wireless"
+  "The wireless D-Bus interface for NetworkManager."
+  :group 'enwc-nm
+  :type 'string)
+
+(defcustom enwc-nm-dbus-wired-interface "org.freedesktop.NetworkManager.Device.Wired"
+  "The wired D-Bus interface for NetworkManager."
+  :group 'enwc-nm
+  :type 'string)
+
+(defcustom enwc-nm-dbus-device-interface "org.freedesktop.NetworkManager.Device"
+  "The device D-Bus interface for NetworkManager."
+  :group 'enwc-nm
+  :type 'string)
+
+(defcustom enwc-nm-dbus-accesspoint-interface "org.freedesktop.NetworkManager.AccessPoint"
+  "The access point D-Bus interface for NetworkManager."
+  :group 'enwc-nm
+  :type 'string)
+
+(defcustom enwc-nm-dbus-settings-interface "org.freedesktop.NetworkManager.Settings"
+  "The settings D-Bus interface for NetworkManager."
+  :group 'enwc-nm
+  :type 'string)
+
+(defcustom enwc-nm-dbus-connections-interface "org.freedesktop.NetworkManager.Settings.Connection"
+  "The connections D-Bus interface for NetworkManager."
+  :group 'enwc-nm
+  :type 'string)
+
+(defcustom enwc-nm-dbus-active-interface "org.freedesktop.NetworkManager.Connection.Active"
+  "The active connection D-Bus interface for NetworkManager."
+  :group 'enwc-nm
+  :type 'string)
+
+(defvar enwc-nm-details-list
+  '("Ssid" "HwAddress" "Strength" "Flags" "Mode" "Frequency")
+  "The list of the desired details to be obtained from each network.")
+
+(defvar enwc-nm-sec-types
+  '(("eap-leap" . (("Name" . "eap-leap")
+                  ("reqs" . ((("identity" . "Username")
+                              ("password" . "Password"))))))
+    ("eap-peap" . (("Name" . "eap-peap")
+                  ("reqs" . ((("anonymous-identity" . "Anonymous Identity")
+                              ("ca-cert" . "CA Certificate")
+                              ("phase2-auth" . "Inner Authentication")
+                              ("phase1-peapver" . "PEAP Version")
+                              ("identity" . "Username")
+                              ("password" . "Password"))))))
+    ("eap-tls" . (("Name" . "eap-tls")
+                 ("reqs" . ((("identity" . "Identity")
+                             ("client-cert" . "User Certificate")
+                             ("ca-cert" . "CA Certificate")
+                             ("private-key" . "Private Key")
+                             ("private-key-password" . "Private Key Password"))))))
+    ("eap-ttls" . (("Name" . "eap-ttls")
+                  ("reqs" . ((("anonymous-identity" . "Anonymous Identity")
+                              ("ca-cert" . "CA Certificate")
+                              ("phase2-auth" . "Inner Authentication")
+                              ("identity" . "Username")
+                              ("password" . "Password"))))))
+    ("wpa-psk" . (("Name" . "wpa2")
+                 ("reqs" . ((("psk" . "PSK"))))))
+    ("wep" . (("Name" . "wep")
+             ("reqs" . ((("wep-key0" . "WEP Key")
+                         ("wep-key-type" . "WEP Key Type"))))))
+    ("leap" . (("Name" . "leap")
+              ("reqs" . ((("leap-username" . "Username")
+                         ("leap-password" . "Password"))))))
+    )
+  "The security types for NetworkManager.
+This is still in the process of being worked on."
+  )
+
+(defvar enwc-nm-wired-dev nil
+  "The wired device object path.")
+
+(defvar enwc-nm-wireless-dev nil
+  "The wireless device object path.")
+
+(defvar enwc-nm-active-ap nil
+  "The active access point object path.")
+
+(defvar enwc-nm-connecting-p nil
+  "Whether or not NetworkManager is connecting.")
+
+(defvar enwc-nm-wired-p nil
+  "Whether or not NetworkManager is wired.")
+
+(defvar enwc-nm-edit-info nil
+  "The information for the network connection being edited.")
+
+(defun enwc-nm-get-settings (conn)
+  "Gets the connection settings.
+CONN is an object path to the connection."
+  (dbus-call-method :system
+                   enwc-nm-dbus-service
+                   conn
+                   enwc-nm-dbus-connections-interface
+                   "GetSettings"
+                   :timeout 25000))
+  
+
+(defun enwc-nm-list-connections ()
+  "List the connections."
+  (dbus-call-method :system
+                   enwc-nm-dbus-service
+                   enwc-nm-dbus-settings-path
+                   enwc-nm-dbus-settings-interface
+                   "ListConnections"
+                   :timeout 25000))
+
+;; Default
+(defun enwc-nm-get-device-by-name (name)
+  (dbus-call-method :system
+                   enwc-nm-dbus-service
+                   enwc-nm-dbus-path
+                   enwc-nm-dbus-interface
+                   "GetDeviceByIpIface"
+                   :timeout 25000
+                   :string name))
+
+;; Settings, Connections
+(defun enwc-nm-get-uuid-by-ssid (ssid)
+  "Gets the uuid of the network with ssid SSID."
+  (let ((conns (enwc-nm-list-connections))
+       cur-conn cur-ssid uuid)
+    (while (and conns (not uuid))
+      (setq cur-conn (pop conns))
+      (let ((settings (enwc-nm-get-settings cur-conn)))
+       (if (not (assoc "802-11-wireless" settings))
+           nil
+         (setq cur-ssid
+               (dbus-byte-array-to-string (car (cadr (assoc "ssid"
+                                                            (cadr (assoc "802-11-wireless"
+                                                                         settings)))))))
+         (if (string= cur-ssid ssid)
+             (setq uuid
+                   (car (cadr (assoc "uuid"
+                                     (cadr (assoc "connection"
+                                                  settings))))))))))
+    uuid))
+
+(defun enwc-nm-get-uuid-by-id (id)
+  "Gets a network connection's uuid by the network's id.
+ID is a string that NetworkManager uses to identify this network."
+  (let ((conns (enwc-nm-list-connections))
+       cur-conn cur-id uuid)
+    (while (and conns (not uuid))
+      (setq cur-conn (pop conns))
+      (let ((settings (enwc-nm-get-settings cur-conn))
+           conn-set)
+       (if (not (assoc "connection" settings))
+           nil
+         (setq conn-set (assoc "connection" settings))
+         (setq cur-id (car (cadr (assoc "id" (cadr conn-set)))))
+         (if (string= cur-id id)
+             (setq uuid (car (cadr (assoc "uuid" (cadr conn-set)))))))))))
+
+(defun enwc-nm-get-conn-by-uuid (uuid)
+  (dbus-call-method :system
+                   enwc-nm-dbus-service
+                   enwc-nm-dbus-settings-path
+                   enwc-nm-dbus-settings-interface
+                   "GetConnectionByUuid"
+                   :timeout 25000
+                   uuid))
+
+;; Settings
+(defun enwc-nm-get-conn-by-ssid (ssid)
+  "Gets the connection path for the access point with ssid SSID."
+  (let ((uuid (enwc-nm-get-uuid-by-ssid ssid)))
+    (if uuid
+       (enwc-nm-get-conn-by-uuid uuid)
+      nil)))
+
+(defun enwc-nm-get-conn-by-id (id)
+  "Gets a connection object with the id ID.
+ID is the identifier used by Network Manager."
+  (let ((uuid (enwc-nm-get-uuid-by-id id)))
+    (enwc-nm-get-conn-by-uuid uuid)))
+
+;; Wireless
+(defun enwc-nm-scan ()
+  "The NetworkManager scan function."
+  (dbus-call-method :system
+                   enwc-nm-dbus-service
+                   enwc-nm-wireless-dev
+                   enwc-nm-dbus-wireless-interface
+                   "RequestScan"
+                   :timeout 25000
+                   '(:array :signature "{sv}")))
+
+;; Wireless
+(defun enwc-nm-get-networks ()
+  "The NetworkManager get networks function.
+This returns a list of D-Bus paths to the access points."
+  (dbus-call-method :system
+                   enwc-nm-dbus-service
+                   enwc-nm-wireless-dev
+                   enwc-nm-dbus-wireless-interface
+
+                   "GetAccessPoints"))
+
+;; Accesspoint
+(defun enwc-nm-get-wireless-network-property (id prop)
+  "The NetworkManager get wireless network property function.
+This runs like normal, using element ID of `enwc-access-points'
+ to determine the access point path, then obtains the property
+PROP from that access point.  It also sets the channel from the
+ frequency if necessary."
+  (let ((ap (nth id enwc-access-points))
+       (mod-prop prop)
+       ret)
+    (if (string= mod-prop "essid")
+       (setq mod-prop "Ssid"))
+    (setq ret (dbus-get-property :system
+                                enwc-nm-dbus-service
+                                ap
+                                enwc-nm-dbus-accesspoint-interface
+                                mod-prop))
+    (if (not ret)
+       (progn
+         (if (not enwc-nm-edit-info)
+             (setq ret ""))
+         (progn
+           (setq ret (assoc mod-prop
+                            (cadr (assoc "802-1x"
+                                         enwc-nm-edit-info))))
+           (if (not ret)
+               (setq ret (assoc mod-prop
+                                (cadr (assoc "802-11-wireless-security"
+                                             enwc-nm-edit-info)))))
+           (setq ret (car (cadr ret))))))
+    (if (string= mod-prop "Frequency")
+       (setq ret (number-to-string (1+ (/ (- ret 2412) 5)))))
+    (if (string= mod-prop "Ssid")
+       (setq ret (dbus-byte-array-to-string ret)))
+    (if (string= mod-prop "Mode")
+       (setq ret (cond ((= ret 0) "Unknown")
+                       ((= ret 1) "Ad-Hoc")
+                       ((= ret 2) "Infrastructure"))))
+    ret))
+
+(defun enwc-nm-get-wireless-nw-props (id)
+  (let ((ap (nth id enwc-access-points))
+       tmp-val
+       ret)
+    (setq ret (dbus-get-all-properties :system
+                                      enwc-nm-dbus-service
+                                      ap
+                                      enwc-nm-dbus-accesspoint-interface))
+    (setq tmp-val (cdr (assoc "Mode" ret)))
+    (setcdr (assoc "Frequency" ret)
+           (number-to-string (1+ (/ (- (cdr (assoc "Frequency" ret))
+                                       2412) 5))))
+    (setcdr (assoc "Ssid" ret)
+           (dbus-byte-array-to-string (cdr (assoc "Ssid" ret))))
+    (setcdr (assoc "Mode" ret)
+           (cond ((= tmp-val 0) "Unkown")
+                 ((= tmp-val 1) "Ad-Hoc")
+                 ((= tmp-val 2) "Infrastructure")))
+    ret))
+
+(defun enwc-nm-get-conn-by-nid (nid)
+  "Gets a connection object with the network id NID."
+  (let* ((ssid (enwc-nm-get-wireless-network-property nid
+                                                     "Ssid"))
+        (uuid (enwc-nm-get-uuid-by-ssid ssid)))
+    (if uuid
+       (enwc-nm-get-conn-by-uuid uuid)
+      nil)))
+
+(defun enwc-nm-get-encryption-type (id)
+  "The NetworkManager get encryption type function.
+This gets the WPA flags and RSN flags from access point in ID.
+If both are 0, then it returns WEP, otherwise WPA."
+  (let ((wpa-flags (enwc-nm-get-wireless-network-property id "WpaFlags"))
+       (rsn-flags (enwc-nm-get-wireless-network-property id "RsnFlags")))
+    (if (and (= wpa-flags 0) (= rsn-flags 0))
+       "WEP"
+      "WPA")))
+
+;; Default
+(defun enwc-nm-connect (id)
+  "The NetworkManager connect function.
+This gets the connection path from ID, and connects to it."
+  (let ((ssid (enwc-nm-get-wireless-network-property id "Ssid")))
+    (dbus-call-method :system
+                     enwc-nm-dbus-service
+                     enwc-nm-dbus-path
+                     enwc-nm-dbus-interface
+                     "ActivateConnection"
+                     :timeout 25000
+                     :object-path (enwc-nm-get-conn-by-ssid ssid)
+                     :object-path enwc-nm-wireless-dev
+                     :object-path (nth id enwc-access-points))))
+
+
+(defun enwc-nm-string-idx (obj list)
+  (let ((tmp-list list)
+       (cur-pos -1)
+       cur-obj)
+    (while (and (not cur-obj) tmp-list)
+      (setq cur-obj (pop tmp-list))
+      (setq cur-pos (1+ cur-pos))
+      (if (not (string= obj cur-obj))
+         (setq cur-obj nil)))
+    cur-pos))
+
+(defun enwc-nm-wireless-prop-changed (props)
+  (if (assoc "ActiveAccessPoint" props)
+      (setq enwc-nm-active-ap (car (cadr (assoc "ActiveAccessPoint"
+                                               props))))))
+
+;; Wireless
+(defun enwc-nm-get-current-nw-id (wired)
+  "The NetworkManager get current network id function.
+This simply checks for the active access point."
+  (if (or wired (string= enwc-nm-active-ap "/"))
+      -1
+    (enwc-nm-string-idx enwc-nm-active-ap enwc-access-points)))
+
+(defun enwc-nm-prop-changed (state)
+  (setq enwc-nm-connecting-p (eq state 40)))
+
+;; Default
+(defun enwc-nm-check-connecting ()
+  "The NetworkManager check connecting function."
+  enwc-nm-connecting-p)
+
+;; Device
+(defun enwc-nm-disconnect-wireless ()
+  (dbus-call-method :system
+                   enwc-nm-dbus-service
+                   enwc-nm-wireless-dev
+                   enwc-nm-dbus-device-interface
+                   "Disconnect"))
+
+;; Settings, Connections
+(defun enwc-nm-get-wired-profiles ()
+  (let ((profs-list (enwc-nm-list-connections)))
+    (mapcar (lambda (x)
+             (let ((props (enwc-nm-get-settings x)))
+               (if (string= (caar props) "connection")
+                   (car (cadr (car (cadr (car props))))))))
+           profs-list)))
+
+(defun enwc-nm-wired-connect (id)
+  (let ((nid (nth id enwc-access-points)))
+    (dbus-call-method :system
+                     enwc-nm-dbus-service
+                     enwc-nm-dbus-path
+                     enwc-nm-dbus-interface
+                     :timeout 25000
+                     :object-path (enwc-nm-get-conn-by-id nid)
+                     :object-path enwc-nm-wired-dev
+                     :objec-path "/")))
+
+;; Device
+(defun enwc-nm-wired-disconnect ()
+  (dbus-call-method :system
+                   enwc-nm-dbus-service
+                   enwc-nm-wired-dev
+                   enwc-nm-dbus-device-interface
+                   "Disconnect"))
+
+(defun enwc-nm-dev-prop-changed (new-state old-state reason)
+  (setq enwc-nm-wired-p (eq new-state 100)))
+
+;; Default
+(defun enwc-nm-is-wired ()
+  enwc-nm-wired-p)
+
+;; Each entry in sec-types should be:
+;; ("IDENT" (("Name" . "NAME") ("reqs" . (("key1" . "Entry1") ("key2" . "Entry2") ... ))))
+;; Where:
+;;  "IDENT" => String that identifies this to the backend.
+;;  "NAME" => String that ENWC displays
+;;  "reqs" => Constant string, but the association list holds entries
+;;              required by the security type, i.e. user, passphrase, etc.
+;;  "keyXX" => String that the backend uses for this security entry.
+;;  "EntryXX" => String that ENWC displays for this security entry.
+
+(defun enwc-nm-get-sec-types (wired)
+  "Get security types."
+  (if wired
+      nil
+    enwc-nm-sec-types)
+  )
+
+(defun enwc-nm-gen-uuid ()
+  (random t)
+  (let ((hex-nums
+        (mapcar (lambda (x)
+                  (random 65535))
+                (number-sequence 0 7)))
+       fin-str)
+    (setq fin-str (format "%04x%04x-%04x-%04x-%04x-%04x%04x%04x"
+                         (nth 0 hex-nums)
+                         (nth 1 hex-nums)
+                         (nth 2 hex-nums)
+                         (nth 3 hex-nums)
+                         (nth 4 hex-nums)
+                         (nth 5 hex-nums)
+                         (nth 6 hex-nums)
+                         (nth 7 hex-nums)))))
+
+(defun enwc-nm-convert-addr (addr)
+  (if addr
+      (let* ((hex-addr (format "%08x" addr))
+            (ret-addr (format "%i.%i.%i.%i"
+                              (string-to-number (substring hex-addr
+                                                           6 8)
+                                                16)
+                              (string-to-number (substring hex-addr
+                                                           4 6)
+                                                16)
+                              (string-to-number (substring hex-addr
+                                                           2 4)
+                                                16)
+                              (string-to-number (substring hex-addr
+                                                           0 2)
+                                                16))))
+       ret-addr)
+    ""))
+
+(defun enwc-nm-addr-back (addr)
+  (let ((bytes (split-string addr "."))
+        ret-val)
+    (setq ret-val (logior (lsh (string-to-number (nth 3 bytes))
+                              0)
+                         (lsh (string-to-number (nth 2 bytes))
+                              1)
+                         (lsh (string-to-number (nth 1 bytes))
+                              2)
+                         (lsh (string-to-number (nth 0 bytes))
+                              3)))))
+
+;; These next two come from libnm-util/nm-utils.c in NM's source.
+
+(defun enwc-nm-netmask-to-prefix (netmask)
+  "Converts a netmask to a prefix.
+NETMASK is an ip address in network byte order."
+  (if netmask
+      (let* ((mask netmask)
+            (cur-pos 3)
+            (cur-mark (logand (lsh mask (* -8 cur-pos)) 255))
+            (pf 0))
+       (while (and (eq cur-mark 255) (>= cur-pos 0))
+         (setq pf (+ pf 8))
+         (setq cur-pos (1- cur-pos))
+         (setq cur-mark (logand (lsh mask (* -8 cur-pos)) 255))
+         )
+
+       (if (>= cur-pos 0)
+           (let ((v (logand (lsh mask (* -8 cur-pos)) 255)))
+             (while (not (eq v 0))
+               (setq pf (1+ pf))
+               (setq v (lsh v 1)))))
+       pf)
+    0))
+
+(defun enwc-nm-prefix-to-netmask (prefix)
+  "Converts a prefix to a netmask.
+PREFIX is an integer <= 32."
+  (let ((pf prefix)
+       (netmask 0)
+       (msk #x80000000))
+  (while (> pf 0)
+    (setq netmask (logior netmask msk))
+    (setq msk (lsh msk -1))
+    (setq pf (1- pf)))
+  netmask))
+
+(defun enwc-nm-get-nw-info (wired id)
+  (let ((conn (enwc-nm-get-conn-by-nid id)))
+    (if conn
+       (setq enwc-nm-edit-info
+             (enwc-nm-get-settings conn))))
+
+  (let (ip-addr netmask gateway dns-list nw-info)
+    (if enwc-nm-edit-info
+       (progn
+         (setq ip-addr (nth 0 (caar (cadr (assoc "addresses"
+                                                 (cadr (assoc "ipv4"
+                                                              enwc-nm-edit-info))))))
+               netmask (nth 3 (caar (cadr (assoc "addresses"
+                                                 (cadr (assoc "ipv4"
+                                                              enwc-nm-edit-info))))))
+               gateway (nth 2 (caar (cadr (assoc "address"
+                                                 (cadr (assoc "ipv4"
+                                                              enwc-nm-edit-info))))))
+               dns-list (car (cadr (assoc "dns" (cadr (assoc "ipv4"
+                                                             enwc-nm-edit-info))))))
+         (setq ip-addr (enwc-nm-convert-addr ip-addr)
+               netmask (enwc-nm-convert-addr netmask)
+               gateway (enwc-nm-convert-addr gateway)
+               dns-list (mapcar 'enwc-nm-convert-addr
+                                dns-list))
+         (setq nw-info (list (cons (cons "addr"
+                                         ip-addr) nil)
+                             (cons (cons "netmask"
+                                         netmask) nil)
+                             (cons (cons "gateway"
+                                         gateway) nil)
+                             (cons (cons "dns1"
+                                         (nth 0
+                                              dns-list))
+                                   nil)
+                             (cons (cons "dns2"
+                                         (nth 1
+                                              dns-list))
+                                   nil)
+                             (cons (cons "enctype"
+                                         "None") nil)
+                             )))
+      nil)))
+
+(defun enwc-nm-get-ip-addr (wired id)
+  "Gets the IP Address of a connection profile."
+  (let ((props (enwc-nm-get-settings (enwc-nm-get-conn-by-nid id)))
+       ipaddr ret-addr)
+    (if (not props)
+       (setq ret-addr "")
+      (setq ipaddr (nth 0 (caar (cadr (assoc "addresses"
+                                            (cadr (assoc "ipv4"
+                                                         props)))))))
+      (setq ret-addr (enwc-nm-convert-addr ipaddr)))))
+
+(defun enwc-nm-get-netmask (wired id)
+  "Gets the Netmask of a connection profile."
+  (let ((props (enwc-nm-get-settings (enwc-nm-get-conn-by-nid id)))
+       ipaddr hex-addr ret-addr)
+    (if (not props)
+       (setq ret-addr "")
+      (setq ipaddr (nth 3 (caar (cadr (assoc "addresses"
+                                            (cadr (assoc "ipv4"
+                                                         props)))))))
+      (setq hex-addr (enwc-nm-prefix-to-netmask ipaddr))
+      (setq ret-addr (format "%i.%i.%i.%i"
+                            (logand hex-addr 255)
+                            (logand (lsh hex-addr -8) 255)
+                            (logand (lsh hex-addr -16) 255)
+                            (logand (lsh hex-addr -24) 255))))))
+    
+
+(defun enwc-nm-get-gateway (wired id)
+  "Gets the Gateway of a connection profile."
+  (let ((props (enwc-nm-get-settings (enwc-nm-get-conn-by-nid id)))
+       ipaddr ret-addr)
+    (if (not props)
+       (setq ret-addr "")
+      (setq ipaddr (nth 2 (caar (cadr (assoc "addresses"
+                                            (cadr (assoc "ipv4"
+                                                         props)))))))
+      (setq ret-addr (enwc-nm-convert-addr ipaddr)))))
+
+(defun enwc-nm-get-dns (wired id)
+  "Gets the DNS settings of a connection profile."
+  (let ((props (enwc-nm-get-settings (enwc-nm-get-conn-by-nid id)))
+       dns-list)
+    (setq dns-list (car (cadr (assoc "dns" (cadr (assoc "ipv4"
+                                                       props))))))
+    (mapcar 'enwc-nm-convert-addr
+           dns-list)))
+
+(defun enwc-nm-process-enctype (settings nw-settings)
+  "Process the encryption type.
+Sets up the encryption type passed in through SETTINGS."
+  (let* ((ret-list nw-settings)
+        (req-list (nthcdr 6 settings))
+        (enctype (cdr (assoc "enctype" settings)))
+        key-mgmt
+        new-list name-list
+        ;;(name-list (cdr (assoc "reqs" (cdr (assoc enctype enwc-nm-sec-types)))))
+        key-name)
+
+    ;; There is a possibility that any of these don't exist in
+    ;; nw-settings.
+
+    (setq new-list `("802-11-wireless-security" (("pairwise" (("wep40" "wep104")))
+                                                ("group" (("wep40" "wep104")))
+                                                ("auth-alg" (nil))
+                                                ("key-mgmt" (nil)))))
+
+    (if (not (assoc "802-11-wireless-security" ret-list))
+       (setq ret-list (append ret-list (list new-list))))
+
+    (if (or (string= enctype "eap-leap")
+           (string= enctype "eap-peap")
+           (string= enctype "eap-tls")
+           (string= enctype "eap-ttls"))
+       (progn
+         (setq key-name "802-1x")
+         (setq key-mgmt "ieee8021x")
+         (setq req-list (push (cons "eap" (substring enctype 4)) req-list))
+         (print req-list)
+         ;;(setcdr (assoc "eap" (cadr (assoc "802-1x" ret-list))) (list (list (list (substring enctype 4)))))
+         )
+      (setq key-name "802-11-wireless-security")
+      (setq key-mgmt
+           (cond ((string= enctype "wep") "none")
+                 ((string= enctype "wpa-psk") "wpa-psk")
+                 ((string= enctype "leap") "iee8021x"))))
+    (setcdr (assoc "key-mgmt" (cadr (assoc "802-11-wireless-security" ret-list)))
+           (list (list key-mgmt)))
+
+    (if (string= enctype "leap")
+       (setcdr (assoc "auth-alg" (cadr (assoc "802-11-wireless-security" ret-list)))
+               (list (list "leap"))))
+
+    (setq name-list (cons key-name
+                         (list (mapcar (lambda (x)
+                                         (cons (car x)
+                                               (cons (cons (cdr x) nil)
+                                                     nil)))
+                                       req-list))))
+
+    (if (not (assoc key-name ret-list))
+       (setq ret-list (append ret-list (list name-list)))
+      (setcdr (assoc key-name ret-list) (list name-list)))
+
+
+    (if (or (string= enctype "eap-leap")
+           (string= enctype "eap-peap")
+           (string= enctype "eap-tls")
+           (string= enctype "eap-ttls"))
+       (setcdr (assoc "eap" (cadr (assoc "802-1x" ret-list)))
+               (cons (cons (cons (substring enctype 4) nil) nil) nil)))
+
+    ret-list))
+
+(defun enwc-nm-finalize-settings (settings)
+  "Sets up all of the D-BUS types of a settings list.
+SETTINGS is the list of settings list to setup.
+This will place all of the necessary markers in the list,
+such as :array, :dict-entry, etc."
+  (cons :array
+       (let (first-one)
+         (mapc (lambda (x)
+                 (setq first-one (cons :dict-entry first-one))
+                 (setq first-one
+                       (cons (cons :string
+                                   (cons (car x)
+                                         (cons (cons :array
+                                                     (let (this-one)
+                                                       (mapc (lambda (y)
+                                                               (setq this-one
+                                                                     (cons :dict-entry this-one))
+                                                               (setq this-one
+                                                                     (cons (list :string (car y)
+                                                                                 :variant
+                                                                                 (if (string= (car y) "ssid")
+                                                                                     (cons (dbus-string-to-byte-array
+                                                                                            (dbus-byte-array-to-string (car (cadr y))))
+                                                                                           nil)
+                                                                                   (cadr y)))
+                                                                           this-one)))
+                                                             (cadr x))
+                                                       (nreverse this-one))) nil)))
+                             first-one)))
+               settings)
+         (nreverse first-one))))
+
+(defun enwc-nm-create-settings (wired ssid)
+  (let ((uuid (enwc-nm-gen-uuid))
+       (id (concat ssid " settings"))
+       type
+       ret-list
+       conn-list
+       ipv4-list ipv6-list
+       mod-list
+       new-ssid
+       80211-list)
+
+    (if (not wired)
+       (setq new-ssid (dbus-string-to-byte-array ssid))
+       (progn
+         (setq 80211-list `("802-11-wireless" (("security" (nil))
+                                               ("ssid" (,new-ssid))
+                                               ("mode" ("infrastructure")))))
+
+         (setq ret-list (append ret-list (list 80211-list))
+               type "802-11-wireless"))
+      (setq type "802-3-ethernet"))
+    (setq conn-list `("connection" (("id" (,id))
+                                   ("uuid" (,uuid))
+                                   ("autoconnect" (nil))
+                                   ("type" (,type)))))
+
+    (setq ipv4-list '("ipv4" (("addresses" (nil))
+                             ("dns" (nil))
+                             ("method" ("auto"))
+                             ("routes" (nil)))))
+
+    (setq ipv6-list '("ipv4" (("addresses" (nil))
+                             ("dns" (nil))
+                             ("method" ("auto"))
+                             ("routes" (nil)))))
+
+    (setq ret-list (append ret-list (list conn-list)))
+    (setq ret-list (append ret-list (list ipv4-list)))
+    (setq ret-list (append ret-list (list ipv6-list)))
+    ))
+
+(defun enwc-nm-setup-settings (wired id settings)
+  "Sets up NetworkManager settings.
+Gets the current network properties of network ID
+and uses the information in the association list SETTINGS
+to put it in the form that NetworkManager will recognize."
+  (print settings)
+  (let (ssid uuid conn props)
+
+    (if (not enwc-nm-edit-info)
+       (progn
+         (setq ssid
+               (enwc-nm-get-wireless-network-property (nth id
+                                                           enwc-access-points)
+                                                      "Ssid"))
+         (setq props (enwc-nm-create-settings wired ssid)))
+      (setq props enwc-nm-edit-info))
+
+    (print enwc-nm-edit-info)
+         ;; (setq uuid (enwc-nm-get-uuid-by-ssid ssid))
+         ;; (if uuid
+         ;;     (setq conn (enwc-nm-get-conn-by-uuid uuid)))))
+
+    ;; (setq props
+    ;;           (if conn
+    ;;               (enwc-nm-get-settings (enwc-nm-get-conn-by-nid id))
+    ;;             (enwc-nm-create-settings wired ssid)))
+
+    (setcdr (assoc "type" (cadr (assoc "connection" props)))
+           (list (list (cond (wired "802-3-ethernet")
+                             ((not wired) "802-11-wireless")))))
+
+    (if (= (length (cdr (assoc "addr" settings))) 0)
+       (setcdr (assoc "addresses" (cadr (assoc "ipv4" props)))
+               (cons (cons nil nil) nil))
+
+      (setcdr (assoc "addresses" (cadr (assoc "ipv4" props)))
+             (list (list (list (list (enwc-nm-addr-back
+                                      (cdr (assoc "addr" settings)))
+                                     (enwc-nm-netmask-to-prefix (enwc-nm-addr-back
+                                                                 (cdr (assoc "netmask"
+                                                                             settings))))
+                                     (enwc-nm-addr-back
+                                      (cdr (assoc "gateway" settings)))))))))
+
+    (if (= (length (cdr (assoc "dns1" settings))) 0)
+       (setcdr (assoc "dns" (cadr (assoc "ipv4" props)))
+               (cons (cons nil nil) nil))
+      (setcdr (assoc "dns" (cadr (assoc "ipv4" props)))
+             (list (list (list (enwc-nm-addr-back
+                                (cdr (assoc "dns1" settings)))
+                               (enwc-nm-addr-back
+                                (cdr (assoc "dns2" settings))))))))
+
+    (setq props (enwc-nm-process-enctype settings props))
+    (print props)
+
+    (enwc-nm-finalize-settings props)))
+
+(defun enwc-nm-save-nw-settings (wired id settings)
+  "Saves network settings.
+ID is the network id of the profile to save,
+WIRED denotes whether or not this is a wired profile,
+and SETTINGS is the list of settings."
+  (let ((mod-sets (enwc-nm-setup-settings wired id settings)))
+    (print mod-sets)
+    (print id)
+    (dbus-call-method :system
+                     enwc-nm-dbus-service
+                     ;;(nth id enwc-access-points)
+                     (enwc-nm-get-conn-by-nid id)
+                     enwc-nm-dbus-connections-interface
+                     (if (not enwc-nm-edit-info)
+                         "AddConnection"
+                       "Update")
+                     :timeout 25000
+                     :array mod-sets)
+    ))
+
+(defun enwc-nm-setup ()
+  (setq enwc-nm-wired-dev (enwc-nm-get-device-by-name enwc-wired-device)
+       enwc-nm-wireless-dev (enwc-nm-get-device-by-name enwc-wireless-device))
+
+  (dbus-register-signal :system
+                       enwc-nm-dbus-service
+                       enwc-nm-wireless-dev
+                       enwc-nm-dbus-wireless-interface
+                       "AccessPointAdded"
+                       'enwc-process-scan)
+
+  (dbus-register-signal :system
+                       enwc-nm-dbus-service
+                       enwc-nm-wireless-dev
+                       enwc-nm-dbus-wireless-interface
+                       "AccessPointRemoved"
+                       'enwc-process-scan)
+
+  (setq enwc-nm-active-ap
+       (let ((cur-net (dbus-get-property :system
+                                         enwc-nm-dbus-service
+                                         enwc-nm-wireless-dev
+                                         enwc-nm-dbus-wireless-interface
+                                         "ActiveAccessPoint")))
+         (if (string= cur-net "/")
+             "/"
+           cur-net)))
+
+  (dbus-register-signal :system
+                       enwc-nm-dbus-service
+                       enwc-nm-wireless-dev
+                       enwc-nm-dbus-wireless-interface
+                       "PropertiesChanged"
+                       'enwc-nm-wireless-prop-changed)
+
+  (setq enwc-nm-connecting-p
+       (let ((state (dbus-get-property :system
+                                       enwc-nm-dbus-service
+                                       enwc-nm-dbus-path
+                                       enwc-nm-dbus-interface
+                                       "State")))
+         (eq state 40)))
+
+  (dbus-register-signal :system
+                       enwc-nm-dbus-service
+                       enwc-nm-wired-dev
+                       enwc-nm-dbus-device-interface
+                       "StateChanged"
+                       'enwc-nm-dev-prop-changed)
+
+  (setq enwc-nm-wired-p
+       (let ((state (dbus-get-property :system
+                                       enwc-nm-dbus-service
+                                       enwc-nm-wired-dev
+                                       enwc-nm-dbus-device-interface
+                                       "State")))
+         (eq state 100)))
+  (dbus-register-signal :system
+                       enwc-nm-dbus-service
+                       enwc-nm-dbus-path
+                       enwc-nm-dbus-interface
+                       "StateChanged"
+                       'enwc-nm-prop-changed)
+  )
+
+
+(provide 'enwc-nm)
+
+;;; End of File.
diff --git a/packages/enwc/enwc-setup.el b/packages/enwc/enwc-setup.el
new file mode 100644 (file)
index 0000000..e88dc03
--- /dev/null
@@ -0,0 +1,119 @@
+;; enwc-setup.el - Setup routines for ENWC
+
+;; Copyright (C) 2012,2013 Free Software Foundation, Inc.
+
+;; Author: Ian Dunn
+;; Keywords: enwc, network, wicd, manager, nm
+
+;; This file is part of ENWC
+
+;; ENWC is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; ENWC is distributed in the hope that it will be useful, but WITHOUT
+;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+;; License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with ENWC; see the file COPYING.  If not, write to the Free
+;; Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+;; 02110-1301, USA.
+
+
+(require 'enwc)
+(require 'enwc-wicd)
+(require 'enwc-nm)
+
+(defun enwc-setup-backend (cur-back)
+  "Sets up ENWC to use the correct function for the backend CUR-BACK."
+  (let ((sym-name (symbol-name cur-back)))
+    (setq enwc-scan-func (intern (concat "enwc-"
+                                        sym-name
+                                        "-scan"))
+         enwc-get-nw-func (intern (concat "enwc-"
+                                          sym-name
+                                          "-get-networks"))
+         enwc-get-wireless-nw-prop-func (intern (concat "enwc-"
+                                                        sym-name
+                                                        "-get-wireless-network-property"))
+         enwc-get-wireless-nw-props-func (intern (concat "enwc-"
+                                                         sym-name
+                                                         "-get-wireless-nw-props"))
+         enwc-details-list (symbol-value (intern (concat "enwc-"
+                                                         sym-name
+                                                         "-details-list")))
+         enwc-get-encryption-type-func (intern (concat "enwc-"
+                                                       sym-name
+                                                       "-get-encryption-type"))
+         enwc-wireless-connect-func (intern (concat "enwc-"
+                                                    sym-name
+                                                    "-connect"))
+         enwc-get-current-nw-id-func (intern (concat "enwc-"
+                                                     sym-name
+                                                     "-get-current-nw-id"))
+         enwc-check-connecting-func (intern (concat "enwc-"
+                                                    sym-name
+                                                    "-check-connecting"))
+         enwc-get-wired-profiles-func (intern (concat "enwc-"
+                                                      sym-name
+                                                      "-get-wired-profiles"))
+         enwc-is-wired-func (intern (concat "enwc-"
+                                            sym-name
+                                            "-is-wired"))
+         enwc-wired-connect-func (intern (concat "enwc-"
+                                                 sym-name
+                                                 "-wired-connect"))
+         enwc-wired-disconnect-func (intern (concat "enwc-"
+                                                    sym-name
+                                                    "-wired-disconnect"))
+         enwc-get-sec-types-func (intern (concat "enwc-"
+                                                 sym-name
+                                                 "-get-sec-types"))
+         enwc-get-ip-addr-func (intern (concat "enwc-"
+                                               sym-name
+                                               "-get-ip-addr"))
+         enwc-get-netmask-func (intern (concat "enwc-"
+                                               sym-name
+                                               "-get-netmask"))
+         enwc-get-gateway-func (intern (concat "enwc-"
+                                               sym-name
+                                               "-get-gateway"))
+         enwc-get-dns-func (intern (concat "enwc-"
+                                           sym-name
+                                           "-get-dns"))
+         enwc-get-nw-info-func (intern (concat "enwc-"
+                                               sym-name
+                                               "-get-nw-info"))
+         enwc-save-nw-settings-func (intern (concat "enwc-"
+                                                    sym-name
+                                                    "-save-nw-settings"))
+         )
+    (funcall (intern (concat "enwc-" sym-name "-setup")))))
+
+(defun enwc-setup ()
+  "Sets up ENWC.
+This setups ENWC and confirms that one of the backends can be found
+on D-Bus."
+  (setq global-mode-string (append global-mode-string
+                                  '(enwc-display-string)))
+  (run-at-time t 1 'enwc-update-mode-line)
+
+  (let ((cur-back nil)
+       (back-list enwc-backends))
+    (while (and back-list (not cur-back))
+      (setq cur-back (pop back-list))
+      (if (not (dbus-ping :system
+                         (symbol-value (intern (concat "enwc-"
+                                                       (symbol-name cur-back)
+                                                       "-dbus-service")))))
+         (setq cur-back nil)))
+    (if cur-back
+       (enwc-setup-backend cur-back)
+      (error "No usable backend found."))))
+
+(provide 'enwc-setup)
+
+;;; End of File.
diff --git a/packages/enwc/enwc-wicd.el b/packages/enwc/enwc-wicd.el
new file mode 100644 (file)
index 0000000..c8eeb61
--- /dev/null
@@ -0,0 +1,355 @@
+;;; enwc-wicd.el --- The Wicd backend to ENWC
+
+;; Copyright (C) 2012,2013 Free Software Foundation, Inc.
+
+;; Author: Ian Dunn
+;; Keywords: enwc, network, wicd, manager, nm
+
+;; This file is part of ENWC
+
+;; ENWC is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; ENWC is distributed in the hope that it will be useful, but WITHOUT
+;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+;; License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with ENWC; see the file COPYING.  If not, write to the Free
+;; Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+;; 02110-1301, USA.
+
+
+;;; Commentary:
+;; TODO
+
+(require 'enwc)
+
+(defgroup enwc-wicd nil
+  "*Wicd variables for ENWC."
+  :prefix "enwc-wicd-"
+  :group 'enwc)
+
+(defcustom enwc-wicd-dbus-service "org.wicd.daemon"
+  "The wicd D-Bus service identifier."
+  :group 'enwc-wicd
+  :type 'string)
+
+(defcustom enwc-wicd-dbus-wireless-path "/org/wicd/daemon/wireless"
+  "The wicd wireless D-Bus path."
+  :group 'enwc-wicd
+  :type 'string)
+
+(defcustom enwc-wicd-dbus-wireless-interface "org.wicd.daemon.wireless"
+  "The wicd wireless D-Bus interface."
+  :group 'enwc-wicd
+  :type 'string)
+
+(defcustom enwc-wicd-dbus-wired-path "/org/wicd/daemon/wired"
+  "The wicd wired D-Bus path."
+  :group 'enwc-wicd
+  :type 'string)
+
+(defcustom enwc-wicd-dbus-wired-interface "org.wicd.daemon.wired"
+  "The wicd wired D-Bus interface."
+  :group 'enwc-wicd
+  :type 'string)
+
+(defvar enwc-wicd-details-list
+  '("essid" "bssid" "quality" "encryption" "mode" "channel")
+  "The list of the desired details to be obtained from each network.")
+
+(defvar enwc-wicd-current-ap "")
+
+(defvar enwc-wicd-current-nw-id -1)
+
+(defun enwc-wicd-dbus-wireless-call-method (method &rest args)
+  "Calls D-Bus method METHOD with arguments ARGS within
+the wicd wireless interface."
+  (apply 'dbus-call-method :system
+        enwc-wicd-dbus-service
+        enwc-wicd-dbus-wireless-path
+        enwc-wicd-dbus-wireless-interface
+        method
+        :timeout 25000
+        args))
+
+(defun enwc-wicd-dbus-wired-call-method (method &rest args)
+  "Calls D-Bus method METHOD with arguments ARGS within
+the wicd wired interface."
+  (apply 'dbus-call-method :system
+        enwc-wicd-dbus-service
+        enwc-wicd-dbus-wired-path
+        enwc-wicd-dbus-wired-interface
+        method
+        :timeout 25000
+        args))
+
+(defun enwc-wicd-scan ()
+  "Wicd scan function."
+  (enwc-wicd-dbus-wireless-call-method "Scan"))
+
+(defun enwc-wicd-get-networks ()
+  "Wicd get networks function.  Just returns a number sequence."
+  (number-sequence 0 (1- (enwc-wicd-dbus-wireless-call-method "GetNumberOfNetworks"))))
+
+(defvar enwc-wicd-prop-values nil)
+(defvar enwc-wicd-prop-num 0)
+
+(defun enwc-wicd-nw-prop-handler (&rest args)
+  (setq enwc-wicd-prop-values (cons args enwc-wicd-prop-values))
+  (setq enwc-wicd-prop-num (1+ enwc-wicd-prop-num)))
+
+(defun enwc-wicd-get-wireless-network-property (id prop)
+  "Wicd get wireless network property function.
+This calls the D-Bus method on Wicd to get the property PROP
+from wireless network with id ID."
+  (dbus-call-method-asynchronously :system
+                                  enwc-wicd-dbus-service
+                                  enwc-wicd-dbus-wireless-path
+                                  enwc-wicd-dbus-wireless-interface
+                                  "GetWirelessProperty"
+                                  'enwc-wicd-nw-prop-handler
+                                  :int32 id
+                                  :string prop)
+
+  ;;(enwc-wicd-dbus-wireless-call-method "GetWirelessProperty" id prop)
+  )
+
+(defun enwc-wicd-build-prop-list (prop-list det-list)
+  (let (ret
+       (act-det-list (reverse det-list)))
+    (while prop-list
+      (let ((cur-prop (pop prop-list))
+           (cur-det (pop act-det-list)))
+       (setq ret (append ret (cons (cons cur-det (car cur-prop)) nil)))
+       ))
+    ret))
+
+(defun enwc-wicd-get-wireless-nw-props (id)
+  (setq enwc-wicd-prop-values nil)
+  (setq enwc-wicd-prop-num 0)
+  (mapc (lambda (x)
+           (enwc-wicd-get-wireless-network-property id x))
+         enwc-wicd-details-list)
+  ;; Wait for less than a second.
+  (while (< enwc-wicd-prop-num 6)
+    (read-event nil nil 0.001))
+  (enwc-wicd-build-prop-list enwc-wicd-prop-values enwc-wicd-details-list))
+
+(defun enwc-wicd-get-encryption-type (id)
+  "Wicd get encryption type function.
+This calls the D-Bus method on Wicd to get the encryption_method
+property from wireless network with id ID."
+  (enwc-wicd-dbus-wireless-call-method "GetWirelessProperty"
+                                      id "encryption_method"))
+
+(defun enwc-wicd-connect (id)
+  "Wicd connect function.
+This calls the D-Bus method on Wicd to connect to wireless
+network with id ID."
+  (enwc-wicd-dbus-wireless-call-method "ConnectWireless" id))
+
+(defun enwc-wicd-get-current-nw-id (wired)
+  "Wicd get current network id function.
+This calls the D-Bus method on Wicd to get the current
+wireless network id."
+  ;;(enwc-wicd-dbus-wireless-call-method "GetCurrentNetworkID"))
+  (if wired
+      -1
+    enwc-wicd-current-nw-id))
+
+(defun enwc-wicd-check-connecting ()
+  "The Wicd check connecting function."
+  (enwc-wicd-dbus-wireless-call-method "CheckIfWirelessConnecting"))
+
+(defun enwc-wicd-disconnect ()
+  "Wicd disconnect function."
+  (enwc-wicd-dbus-wireless-call-method "DisconnectWireless"))
+
+(defun enwc-wicd-get-wired-profiles ()
+  "Gets the list of wired network profiles."
+  (enwc-wicd-dbus-wired-call-method "GetWiredProfileList"))
+
+(defun enwc-wicd-wired-connect (id)
+  "Connects to the wired network with profile id ID."
+  (let* ((profs (enwc-get-wired-profiles))
+        (prf (nth id profs)))
+    (enwc-wicd-dbus-wired-call-method "ReadWiredNetworkProfile" prf)
+    (enwc-wicd-dbus-wired-call-method "ConnectWired")))
+
+(defun enwc-wicd-wired-disconnect ()
+  "Disconnects from the wired connection."
+  (enwc-wicd-dbus-wired-call-method "DisconnectWired"))
+
+(defun enwc-wicd-is-wired ()
+  "Checks to see if wired is connected."
+  (not (not (enwc-wicd-dbus-wired-call-method "GetWiredIP"))))
+
+(defun enwc-wicd-get-wired-nw-prop (id det)
+  "Gets property DET from the wired network with id ID."
+  (enwc-wicd-dbus-wired-call-method "GetWiredProperty" id det))
+
+;; Each entry in sec-types should be:
+;; ("IDENT" (("Name" . "NAME") ("reqs" . (("key1" . "Entry1") ("key2" . "Entry2") ... ))))
+;; Where:
+;;  "IDENT" => String that identifies this to the backend.
+;;  "NAME" => String that ENWC displays
+;;  "reqs" => Constant string, but the association list holds entries
+;;              required by the security type, i.e. user, passphrase, etc.
+;;  "keyXX" => String that the backend uses for this security entry.
+;;  "EntryXX" => String that ENWC displays for this security entry.
+
+(defun enwc-wicd-get-sec-types (wired)
+  "Gets the list of security types.
+WIRED indicates whether this is a wired connection.
+The returned list will be in the format:
+ (name . ((\"Name\" . \"DISPLAY-NAME\")
+          (\"reqs\" . ((\"Display\" . \"id\") ...))))"
+  (let (sec-types
+       ret-list)
+    (with-temp-buffer
+      (insert-file-contents (concat "/etc/wicd/encryption/templates/active"
+                                   (if wired
+                                       "_wired")))
+      (setq sec-types (split-string (buffer-string) "\n")))
+    (setq ret-list
+         (mapcar (lambda (x)
+                   (if (not (eq (length x) 0))
+                       (let (name reqs)
+                         (with-temp-buffer
+                           (insert-file-contents (concat "/etc/wicd/encryption/templates/"
+                                                         x))
+                           (re-search-forward "name[ \t]*=[ \t]*\\([^\n]*\\)[\n]")
+                           (setq name (match-string 1))
+                           (re-search-forward "require[ \t]*\\([^\n]*\\)[\n]")
+                           (let ((str-reqs (split-string (match-string 1) " ")))
+                             (while str-reqs
+                               (setq reqs
+                                     (append reqs
+                                             (cons (cons (pop str-reqs)
+                                                         (pop str-reqs))
+                                                   nil)))))
+                           (cons x (cons (cons "Name" name) (cons (cons "reqs" (cons reqs nil)) nil)))
+                           ))))
+                 sec-types))))
+
+(defun enwc-wicd-get-profile-ent (wired id ent)
+  "Gets profile entry ENT from the network with id ID.
+WIRED is set to indicate whether this is a wired network.
+This function is a wrapper around the *-get-(wired|wireless)-nw-prop
+functions, allowing for a single function that checks for wired."
+  (if wired
+      (enwc-wicd-get-wired-nw-prop id ent)
+    (enwc-wicd-dbus-wireless-call-method "GetWirelessProperty" id ent)))
+
+(defun enwc-wicd-get-nw-info (wired id)
+  (let ((dns-list (enwc-wicd-get-dns wired id)))
+    (list (cons (cons "addr" (enwc-wicd-get-ip-addr wired id)) nil)
+         (cons (cons "netmask" (enwc-wicd-get-netmask wired id)) nil)
+         (cons (cons "gateway" (enwc-wicd-get-gateway wired id)) nil)
+         (cons (cons "dns1" (nth 0 dns-list)) nil)
+         (cons (cons "dns2" (nth 1 dns-list)) nil))))
+
+(defun enwc-wicd-get-ip-addr (wired id)
+  "Gets the IP Address from the network with id ID.
+Wired is set to indicate whether this is a wired network."
+  (or (enwc-wicd-get-profile-ent wired id "ip") ""))
+
+(defun enwc-wicd-get-netmask (wired id)
+  "Gets the Netmask from the network with id ID.
+WIRED is set to indicate whether this is a wired network."
+  (or (enwc-wicd-get-profile-ent wired id "netmask") ""))
+
+(defun enwc-wicd-get-gateway (wired id)
+    "Gets the Gateway from the network with id ID.
+WIRED is set to indicate whether this is a wired network."
+  (or (enwc-wicd-get-profile-ent wired id "gateway") ""))
+
+(defun enwc-wicd-get-dns (wired id)
+    "Gets the list of DNS servers from the network with id ID.
+WIRED is set to indicate whether this is a wired network."
+  (list (or (enwc-wicd-get-profile-ent wired id "dns1") "")
+       (or (enwc-wicd-get-profile-ent wired id "dns2") "")
+       (or (enwc-wicd-get-profile-ent wired id "dns3") "")))
+
+(defun enwc-wicd-set-nw-prop (wired id prop val)
+  "Sets the network property PROP of the network with id ID
+to VAL.
+WIRED indicates whether this is a wired network."
+  (if wired
+      (enwc-wicd-dbus-wired-call-method "SetWiredProperty"
+                                       id prop val)
+    (enwc-wicd-dbus-wireless-call-method "SetWirelessProperty"
+                                        id prop val)))
+
+(defun enwc-wicd-save-nw-profile (wired id)
+  "Save the network profile with for the network with id ID.
+WIRED indicates whether this is a wired network."
+  (if wired
+      (enwc-wicd-dbus-wired-call-method "SaveWiredNetworkProfile" id)
+    (enwc-wicd-dbus-wireless-call-method "SaveWirelessNetworkProfile" id)))
+
+(defun enwc-wicd-save-nw-settings (wired id settings)
+  "Saves the settings indicated by the association list SETTINGS for
+the network with id ID."
+  (let ((enctype (cdr (assoc "enctype" settings))))
+
+    (enwc-wicd-set-nw-prop wired id "ip"
+                          (cdr (assoc "addr" settings)))
+    (enwc-wicd-set-nw-prop wired id "netmask"
+                          (cdr (assoc "netmask" settings)))
+    (enwc-wicd-set-nw-prop wired id "gateway"
+                          (cdr (assoc "gateway" settings)))
+
+    (enwc-wicd-set-nw-prop wired id "dns1"
+                          (cdr (assoc "dns1" settings)))
+    (enwc-wicd-set-nw-prop wired id "dns2"
+                          (cdr (assoc "dns2" settings)))
+
+    (enwc-wicd-set-nw-prop wired id "enctype" enctype)
+    (if (not (string= enctype "None"))
+       (dolist (x (cadr (assoc "reqs"
+                               (cdr (assoc enctype
+                                           (enwc-wicd-get-sec-types wired))))))
+         (enwc-wicd-set-nw-prop wired id (car x)
+                                (cdr (assoc (car x) settings)))))
+    (enwc-wicd-save-nw-profile wired id))
+  )
+
+(defun enwc-wicd-wireless-prop-changed (state info)
+  (if state
+      (if (eq state 0)
+         (setq enwc-wicd-current-ap ""
+               enwc-wicd-current-nw-id -1)
+       (setq enwc-wicd-current-ap (car (cadr info))
+             enwc-wicd-current-nw-id (or (and info
+                                              (nthcdr 3 info)
+                                              (caar (nthcdr 3 info))
+                                              (string-to-number (caar (nthcdr 3 info))))
+                                         -1)))
+  ))
+
+(defun enwc-wicd-setup ()
+  ;; Thanks to Michael Albinus for pointing out this signal.
+  (dbus-register-signal :system
+                       enwc-wicd-dbus-service
+                       enwc-wicd-dbus-wireless-path
+                       enwc-wicd-dbus-wireless-interface
+                       "SendEndScanSignal"
+                       'enwc-process-scan)
+
+  (dbus-register-signal :system
+                       enwc-wicd-dbus-service
+                       "/org/wicd/daemon"
+                       enwc-wicd-dbus-service
+                       "StatusChanged"
+                       'enwc-wicd-wireless-prop-changed)
+  )
+
+(provide 'enwc-wicd)
+
+;;; End of File
diff --git a/packages/enwc/enwc.el b/packages/enwc/enwc.el
new file mode 100644 (file)
index 0000000..ab48a19
--- /dev/null
@@ -0,0 +1,1004 @@
+;;; enwc.el --- The Emacs Network Client
+
+;; Copyright (C) 2012,2013 Free Software Foundation, Inc.
+
+;; Author: Ian Dunn
+;; Keywords: enwc, network, wicd, manager, nm
+;; Version: 1.0
+
+;; This file is part of ENWC
+
+;; ENWC is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; ENWC is distributed in the hope that it will be useful, but WITHOUT
+;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+;; License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with ENWC; see the file COPYING.  If not, write to the Free
+;; Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+;; 02110-1301, USA.
+
+;; connect
+;; disconnect
+;; scan
+;; get-prop
+;; save-profile
+;; get-networks
+;; check-connecting
+;; get-current-nw-id
+
+;;; Commentary:
+;; In order to use this, add
+;;
+;; (require 'enwc-setup)
+;; (enwc-setup)
+;; 
+;; to your .emacs file.
+
+(require 'dbus)
+(require 'wid-edit)
+(require 'tabulated-list)
+
+;;; Code:
+
+(eval-when-compile
+  (require 'cl))
+
+(defgroup enwc nil
+  "*The Emacs Network Client"
+  :prefix "ewnc-"
+  :group 'applications)
+
+(defcustom enwc-wireless-device "wlan0"
+  "The wireless device to use for ENWC."
+  :group 'enwc
+  :type 'string)
+
+(defcustom enwc-wired-device "eth0"
+  "The wired device to use for ENWC."
+  :group 'enwc
+  :type 'string)
+
+(defcustom enwc-backends '(wicd nm)
+  "The list of backends to be used by ENWC.
+These will be checked in the order designated here,
+and the first active backend found will be used."
+  :group 'enwc
+  :type 'list)
+
+;;; The function variables for the abstract layer.
+
+(defvar enwc-scan-func nil
+  "The function variable for the scan function.
+This variable is set during setup.")
+
+(defvar enwc-get-nw-func nil
+  "A function variable to be used in `enwc-get-nw'.
+This is redefined during setup to be the function to get the network
+ list.")
+
+(defvar enwc-get-wireless-nw-prop-func nil
+  "A function variable to be used in `enwc-get-wireless-nw-prop'.
+This is redefined during setup to be the function to get
+a wireless network property.")
+
+(defvar enwc-get-wireless-nw-props-func nil)
+
+(defvar enwc-get-encryption-type-func nil
+  "A function variable to be used in `enwc-get-encryption-type'.
+This is redefined during setup to be the function to get the encryption
+type for the selected backend.")
+
+(defvar enwc-wireless-connect-func nil
+  "The function variable for the wireless connect function.
+This is redefined during setup to be the function to connect
+for the selected backend.")
+
+(defvar enwc-get-current-nw-id-func nil
+  "The function variable to be used in `enwc-get-current-nw-id'.
+This is redefined during setup to be the function to get
+the current network id.")
+
+(defvar enwc-check-connecting-func nil
+  "The function variable to be used in `enwc-check-connecting'.
+This is redefined during setup to be the function to
+check whether or not ENWC is connecting.")
+
+(defvar enwc-wireless-disconnect-func nil
+  "The function variable for the wireless disconnect function.
+This is redefined during setup to be the function to
+disconnect from the wireless network.")
+
+(defvar enwc-get-wired-profiles-func nil
+  "The function variable to be used in `enwc-get-wired-profiles'.
+This is redefined during setup to be the function to
+get the list of wired network profiles.")
+
+(defvar enwc-wired-connect-func nil
+  "The function variable for the wired connect function.
+This is redefined during setup to be the function
+to connect to a wired network.")
+
+(defvar enwc-wired-disconnect-func nil
+  "The function variable for the wired disconnect function.
+This is redefined during setup to be the function
+to disconnect from a wired network.")
+
+(defvar enwc-is-wired-func nil
+  "The function variable to be used in `enwc-is-wired'.
+This is redefined during setup to be the function to
+check whether or not a wired connection is active.")
+
+(defvar enwc-get-wired-nw-prop-func nil
+  "The function variable to be used in `enwc-get-wired-nw-prop'.
+This is redefined during setup to be the function to get
+a network property from a wired network.")
+
+(defvar enwc-get-sec-types-func nil
+  "The function variable to be used in `enwc-get-sec-types'.
+This is redefined during setup to be the function to get
+the security types for a given network.")
+
+(defvar enwc-get-ip-addr-func nil
+  "The function variable to be used in `enwc-get-ip-addr'.
+This is redefined during setup to be the function to get
+the IP Address of a given network.")
+
+(defvar enwc-get-netmask-func nil
+  "The function variable to be used in `enwc-get-netmask'.
+This is redefined during setup to be the function to get
+the Netmask of a given network.")
+
+(defvar enwc-get-gateway-func nil
+  "The function variable to be used in `enwc-get-gateway'.
+This is redefined during setup to be the function to get
+the Gateway of a given network.")
+
+(defvar enwc-get-dns-func nil
+  "The function variable to be used in `enwc-get-dns'.
+This is redefined during setup to be the function to get
+the DNS Server Addresses for a given network.")
+
+(defvar enwc-get-nw-info-func nil)
+
+(defvar enwc-save-nw-settings-func nil
+  "The function variable to be used in `enwc-save-nw-settings'.
+This is redefined during setup to be the function to save
+the network settings of a given network.")
+
+(defvar enwc-details-list nil
+  "The network details list.
+
+This is redefined during setup to be the details list
+for the selected backend.
+
+This usually includes signal strength, essid, encryption type,
+bssid, mode, and channel.")
+
+(defvar enwc-display-string " [0%] "
+  "The mode line display string.
+This is altered every second to display the current network strength
+in `enwc-update-mode-line'.")
+
+;; (setq tabulated-list-format (vector `("ID" ,enwc-id-width sort) ...))
+;; (setq tabulated-list-entries `((,id [id str essid encrypt ...]) ...))
+;; (tabulated-list-init-header)
+;; (tabulated-list-print)
+
+(defvar enwc-wireless-headers '("ID" "STR" "ESSID"
+                               "ENCRYPT" "BSSID" "MODE" "CHNL")
+  "The list of headers to be displayed in the ENWC buffer.
+These correspond to the details in `enwc-details-list'.")
+
+(defvar enwc-id-width 3
+  "The width of the id column.")
+(defvar enwc-str-width 5
+  "The width of the strength column.")
+(defvar enwc-essid-width 5
+  "The initial width of the essid column.
+This is reset in wicd-scan-internal.")
+(defvar enwc-encrypt-width 10
+  "The width of the encryption column.")
+(defvar enwc-bssid-width 18
+  "The width of the bssid column.")
+(defvar enwc-mode-width 16
+  "The width of the mode column.")
+(defvar enwc-chnl-width 3
+  "The width of the channel column.")
+
+(defvar enwc-last-scan nil
+  "The most recent scan results.")
+
+(defvar enwc-access-points nil
+  "The most recent access point list.")
+
+(defvar enwc-using-wired nil
+  "Whether or not wired mode is active.
+
+This is `non-NIL' if ENWC is using wired connections.
+Note that this is NOT the same as `enwc-is-wired'.  This checks
+whether or not ENWC is in wired mode.")
+
+(defvar enwc-scan-done nil
+  "Whether or not a scan is finished.")
+
+(defvar enwc-edit-id nil
+  "This is the network id of the network being edited.")
+
+(defvar enwc-scan-requested nil)
+
+(defvar enwc-scan-interactive nil)
+
+(make-local-variable 'enwc-edit-id)
+;; The Fonts
+
+(defface enwc-header-face
+  '((((class color) (background light))
+     (:foreground "Blue"))
+    (((class color) (background dark))
+     (:foreground "Blue"))
+    (t (:background "Blue")))
+  "The face for the headers."
+  :group 'enwc)
+
+(defface enwc-connected-face
+  '((((class color) (background dark))
+     (:foreground "Green"))
+    (((class color) (background light))
+     (:foreground "Green"))
+    (t (:background "Green")))
+  "The face for the connected network."
+  :group 'enwc)
+
+
+;; Small helper function.
+
+(defun enwc-detail-to-ident (detail)
+  "Converts detail DETAIL to a constant identifier."
+  (case (intern detail)
+    ((essid Ssid) "essid")
+    ((bssid HwAddress) "bssid")
+    ((quality Strength) "quality")
+    ((encryption Flags) "encryption")
+    ((mode Mode) "mode")
+    ((channel Frequency) "channel")))
+
+;;;;;;;;;;;;;;;;;;;;
+;; ENWC functions
+;;;;;;;;;;;;;;;;;;;;
+
+(defun enwc-do-scan ()
+  "Runs a backend scan."
+  (funcall enwc-scan-func))
+
+(defun enwc-get-nw ()
+  "Gets the identifiers for the access points
+from a previous scan."
+  (funcall enwc-get-nw-func))
+
+(defun enwc-get-current-nw-id ()
+  "Gets the id of the current network id,
+or `nil' if there isn't one."
+  (funcall enwc-get-current-nw-id-func enwc-using-wired))
+
+(defun enwc-check-connecting-p ()
+  "Checks to see if there is a connection
+in progress.  Returns `non-NIL' if there is one,
+`NIL' otherwise."
+  (funcall enwc-check-connecting-func))
+
+(defun enwc-get-wireless-nw-prop (id prop)
+  "Gets property PROP from wireless network with id
+ID and returns it."
+  (funcall enwc-get-wireless-nw-prop-func id prop))
+
+(defun enwc-get-wireless-nw-props (id)
+  (funcall enwc-get-wireless-nw-props-func id))
+
+(defun enwc-get-encryption-type (id)
+  "Gets the encryption type used by the wireless
+network with id ID."
+  (funcall enwc-get-encryption-type-func id))
+
+(defun enwc-get-wired-profiles ()
+  "Gets the list of wired profiles."
+  (funcall enwc-get-wired-profiles-func))
+
+(defun enwc-wireless-connect (id)
+  "Begins a connection to wireless network with
+id ID."
+  (funcall enwc-wireless-connect-func id))
+
+(defun enwc-wireless-disconnect ()
+  "Disconnects the wireless."
+  (funcall enwc-wireless-disconnect-func))
+
+(defun enwc-wired-connect (id)
+  "Connects to the wired profile with id ID."
+  (funcall enwc-wired-connect-func id))
+
+(defun enwc-wired-disconnect ()
+  "Disconnects from the current network."
+  (funcall enwc-wired-disconnect-func))
+
+(defun enwc-is-wired-p ()
+  "Checks whether or not ENWC is connected to
+a wired network.
+Note that this is NOT the same as `enwc-using-wired'.
+This checks for an active wired connection."
+  (funcall enwc-is-wired-func))
+
+(defun enwc-get-sec-types (wired)
+  "Gets the security types for network.
+WIRED is set to indicate whether or not this is
+a wired network."
+  (funcall enwc-get-sec-types-func wired))
+
+(defun enwc-get-network-ent (wired id ent)
+  "Gets network entry ENT from the network with network id ID.
+WIRED is set to indicate whether or not this is
+a wired network."
+  (if wired
+      nil
+    (enwc-get-wireless-nw-prop id ent)))
+
+(defun enwc-get-wired-nw-prop (id prop)
+  "Gets network property PROP from
+ the wired network with network id ID."
+  (funcall enwc-get-wired-nw-prop-func id prop))
+
+(defun enwc-get-ip-addr (wired id)
+  "Gets the IP Address from the network with network id ID.
+WIRED is set to indicate whether or not this is
+a wired network."
+  (funcall enwc-get-ip-addr-func wired id))
+
+(defun enwc-get-netmask (wired id)
+  "Gets the Netmask from the network with network id ID.
+WIRED is set to indicate whether or not this is
+a wired network."
+  (funcall enwc-get-netmask-func wired id))
+
+(defun enwc-get-gateway (wired id)
+  "Gets the Gateway from the network with network id ID.
+WIRED is set to indicate whether or not this is
+a wired network."
+  (funcall enwc-get-gateway-func wired id))
+
+(defun enwc-get-dns (wired id)
+  "Gets the DNS Servers from the network with network id ID.
+WIRED is set to indicate whether or not this is
+a wired network."
+  (funcall enwc-get-dns-func wired id))
+
+(defun enwc-get-nw-info (wired id)
+  (funcall enwc-get-nw-info-func wired id))
+
+(defun enwc-save-nw-settings (wired id settings)
+  "Saves network settings SETTINGS to the network profile with
+network id ID.
+SETTINGS is an association list with entries for the IP Address,
+Netmask, Gateway, DNS Servers, and Security.
+WIRED is set to indicate whether or not this is
+a wired network."
+  (funcall enwc-save-nw-settings-func wired id settings))
+
+;;;;;;;;;;;;;;;;;;;;;
+;; Actual Functions
+;;;;;;;;;;;;;;;;;;;;;
+
+(defun enwc-is-valid-nw-id (id)
+  "Confirms that ID is a valid network id."
+  (<= 0 id))
+
+(defun enwc-get-nw-prop (wired id prop)
+  "Small function to get network property PROP from the network
+with network id ID.
+WIRED indicates whether or not this is a wired connection."
+  (if wired
+      (enwc-get-wired-nw-prop id prop)
+    (enwc-get-wireless-nw-prop id prop)))
+
+(defun enwc-update-mode-line ()
+  "Updates the mode line with the current network strength.
+If no network is connected, then prints 0%.
+If wired is active, then prints 100%.
+If ENWC is in the process of connecting, then prints *%.
+This is initiated during setup, and runs once every second."
+ (let ((cur-id (enwc-get-current-nw-id))
+       (conn (enwc-check-connecting-p))
+       str)
+    (setq str
+         (if (enwc-is-wired-p)
+             100
+           (if (and
+                (enwc-is-valid-nw-id cur-id)
+                enwc-last-scan)
+               (cdr (assoc "quality" (nth cur-id enwc-last-scan)))
+             0)))
+    (setq enwc-display-string (concat " ["
+                                     (if conn
+                                         "*"
+                                       (number-to-string str))
+                                     "%] "))))
+
+;;;;;;;;;;;;;;;;;;
+;; Scan internal
+;;;;;;;;;;;;;;;;;;
+
+(defun enwc-scan-internal-wireless ()
+  "The initial scan routine.
+This initiates a scan using D-Bus, then exits,
+waiting for the callback."
+  (message "Scanning...")
+  (setq enwc-scan-requested t)
+  (setq enwc-scan-done nil)
+  (enwc-do-scan))
+
+(defun enwc-process-scan (&rest args)
+  "The scanning callback.
+After a scan has been performed, this processes and displays
+the scan results."
+  (if (or enwc-using-wired (not enwc-scan-requested))
+      nil
+    (setq enwc-scan-requested nil)
+    (let ((cur-id 0))
+      (message "Scanning... Done")
+      (setq enwc-access-points (enwc-get-nw)
+           enwc-essid-width 5)
+      (setq enwc-last-scan
+           (mapcar (lambda (x)
+                     (let ((ret-itm (cons (cons "id" cur-id) nil))
+                           (prop-list (enwc-get-wireless-nw-props x)))
+                       (setq cur-id (1+ cur-id))
+                       (dolist (det enwc-details-list)
+                         (let ((cur-item (cdr (assoc det prop-list)))
+                               (ident (enwc-detail-to-ident det))
+                               pos-len)
+                           (if (string= ident "essid")
+                               (progn
+                                 (setq pos-len (length cur-item))
+                                 (setq enwc-essid-width
+                                       (max enwc-essid-width
+                                            pos-len))))
+                           (if (string= ident "encryption")
+                               (setq cur-item
+                                     (if cur-item
+                                         (enwc-get-encryption-type x)
+                                       "Unsecured")))
+                           (setq ret-itm (append ret-itm
+                                                 (cons (cons ident
+                                                             cur-item)
+                                                       nil)))))
+                       ret-itm))
+                   (number-sequence 0 (1- (length enwc-access-points))))))
+    (setq enwc-essid-width (1+ enwc-essid-width))
+    (setq enwc-scan-done t)
+    (if enwc-scan-interactive
+       (progn
+         (enwc-display-wireless-networks enwc-last-scan)
+         ;;(goto-char 0)
+         ;;(forward-line)
+         ))))
+
+(defun enwc-scan-internal-wired ()
+  "The scanning routine for a wired connection.
+This gets the list of wired network profiles."
+  (message "Updating Profiles...")
+  (let ((profs (enwc-get-wired-profiles))
+       cur-prof fin-profs)
+    (while profs
+      (setq cur-prof (pop profs))
+      (if cur-prof
+         (setq fin-profs (cons cur-prof
+                               fin-profs))))
+    (message "Updating Profiles... Done")
+    (setq enwc-access-points fin-profs)
+    (setq enwc-last-scan fin-profs)
+    fin-profs))
+
+(defun enwc-scan-internal ()
+  "The entry point for the internal scan routines.
+This checks whether or not wired is being used,
+ and runs the appropriate function."
+  (if enwc-using-wired
+      (enwc-scan-internal-wired)
+    (enwc-scan-internal-wireless)))
+
+;;;;;;;;;;;;;;;;;;;;;
+;; Display Networks
+;;;;;;;;;;;;;;;;;;;;;
+
+(defun enwc-display-wired-networks (networks)
+  "Displays the wired networks specified in the list NETWORKS.
+NETWORKS must be in the form returned from
+`enwc-scan-internal-wired'."
+  (if (not (listp networks))
+      (error "NETWORKS must be a list of networks."))
+  (let ((inhibit-read-only t))
+    (erase-buffer)
+    (insert (propertize "Profile" 'face 'enwc-header-face))
+    (insert "\n")
+    (dolist (pr networks)
+      (insert pr)
+      (insert "\n"))))
+
+(defun enwc-insert-ent (ent width)
+  "Small function to insert a network property entry.
+ENT is the entry, and WIDTH is the column width."
+  (insert ent)
+  (insert-char 32 (- width (length ent))))
+
+(defun enwc-display-wireless-networks (networks)
+  "Displays the networks in the list NETWORKS in the current buffer.
+NETWORKS must be in the format returned by
+`enwc-scan-internal-wireless'."
+  (if (not (eq major-mode 'enwc-mode))
+          (enwc-setup-buffer))
+  (if (not (listp networks))
+      (error "NETWORKS must be a list of association lists."))
+  (let (;;(inhibit-read-only t)
+       (cur-id (enwc-get-current-nw-id))
+       entries)
+    ;;(erase-buffer)
+    (let ((header enwc-wireless-headers)
+         (pos 0))
+
+      (setq tabulated-list-format
+           (vector '("ID" 2)
+                   '("STR" 4)
+                   `("ESSID" ,enwc-essid-width)
+                   '("ENCRYPT" 9)
+                   '("BSSID" 17)
+                   '("MODE" 15)
+                   '("CHNL" 2)))
+
+      ;; (dolist (hd header)
+      ;;       (insert (propertize hd 'face 'enwc-header-face))
+      ;;       (setq pos (length hd))
+      ;;       (insert-char 32 (- (symbol-value (intern (concat "enwc-"
+      ;;                                                        (downcase hd)
+      ;;                                                        "-width")))
+      ;;                          pos)))
+      )
+    ;;(insert "\n")
+
+    ;;TODO: Setup faces.
+    (dolist (nw networks)
+      (let ((id (cdr (assoc "id" nw)))
+           entry)
+       (setq entry (list nil
+                         (vector
+                          (number-to-string (cdr (assoc "id" nw)))
+                          (concat (number-to-string (cdr (assoc "quality" nw)))
+                                  "%")
+                          (cdr (assoc "essid" nw))
+                          (cdr (assoc "encryption" nw))
+                          (cdr (assoc "bssid" nw))
+                          (cdr (assoc "mode" nw))
+                          (cdr (assoc "channel" nw)))))
+       (setq entries (cons entry entries))))
+
+    (setq tabulated-list-entries (nreverse entries))
+    (tabulated-list-init-header)
+
+    ;; (dolist (nw networks)
+    ;;   (let* ((id (propertize (number-to-string (cdr (assoc "id" nw)))
+    ;;                              'width enwc-id-width))
+    ;;              (str (propertize (concat (number-to-string (cdr (assoc "quality"
+    ;;                                                                     nw)))
+    ;;                                       "%")
+    ;;                               'width enwc-str-width))
+    ;;              (essid (propertize (cdr (assoc "essid" nw))
+    ;;                                 'width enwc-essid-width))
+    ;;              (encrypt (propertize (cdr (assoc "encryption" nw))
+    ;;                                   'width enwc-encrypt-width))
+    ;;              (bssid (propertize (cdr (assoc "bssid" nw))
+    ;;                                 'width enwc-bssid-width))
+    ;;              (mode (propertize (cdr (assoc "mode" nw))
+    ;;                                'width enwc-mode-width))
+    ;;              (chnl (propertize (cdr (assoc "channel" nw))
+    ;;                                'width enwc-chnl-width))
+    ;;              props)
+
+    ;;         (setq props (list id str essid encrypt bssid mode chnl))
+
+    ;;         (dolist (ent props)
+    ;;           (if (eq (string-to-number id) cur-id)
+    ;;               (setq ent (propertize ent 'face 'enwc-connected-face)))
+    ;;           (enwc-insert-ent ent (get-text-property 0 'width ent)))
+    ;;         (insert "\n")))
+    (tabulated-list-print)
+    ))
+
+(defun enwc-display-networks (networks)
+  "Displays the network in NETWORKS.  This is an entry to the display
+functions, and checks whether or not ENWC is using wired."
+  (if (not (eq major-mode 'enwc-mode))
+      (enwc-setup-buffer))
+  (if (not (listp networks))
+      (error "NETWORKS must be a list."))
+  (if enwc-using-wired
+      (enwc-display-wired-networks networks)
+    (enwc-display-wireless-networks networks)))
+
+(defun enwc-scan ()
+  "The frontend of the scanning routine.  Sets up and moves to
+the ENWC buffer if necessary, and scans and displays the networks."
+  (interactive)
+  (setq enwc-scan-interactive t)
+  (if (not (eq major-mode 'enwc-mode))
+      (switch-to-buffer "*ENWC*"))
+  (if enwc-using-wired
+      (progn
+       (enwc-scan-internal)
+       ;;(enwc-display-networks enwc-last-scan)
+       (goto-char 0)
+       (forward-line))
+    (enwc-scan-internal)))
+  
+(defun enwc-find-network (essid &optional networks)
+  "Checks through NETWORKS for the network with essid ESSID,
+and returns the network identifier.  Uses `enwc-last-scan' if
+NETWORKS is nil.  If the network is not found, then it returns nil.
+
+   When called interactively, this only prints out what it finds.
+Otherwise, it actually returns it."
+  (interactive "sNetwork ESSID: ")
+  (if (not (or networks enwc-last-scan))
+      (progn
+       (setq enwc-scan-interactive nil)
+       (enwc-scan-internal)))
+  (let ((nets (or networks enwc-last-scan))
+       need-break cur-net)
+    (if (not nets)
+       (setq nets enwc-last-scan))
+    (while (and nets (not need-break))
+      (let (cur-essid)
+       (setq cur-net (pop nets))
+       (setq cur-essid (cdr (assoc "essid" cur-net)))
+       (if (string= cur-essid essid)
+           (setq need-break t))))
+    (if need-break
+       (if (called-interactively-p 'any)
+           (message (number-to-string (cdr (assoc "id" cur-net))))
+         (cdr (assoc "id" cur-net)))
+      (if (called-interactively-p 'any)
+         (message "Network not found.")
+       nil))))
+
+;;;;;;;;;;;;;;;;;;;;
+;; Connect Network
+;;;;;;;;;;;;;;;;;;;;
+
+(defun enwc-connect-network (id)
+  "Connect to network with id ID.
+This is an entry point for the internal connection functions,
+and checks whether or not ENWC is using wired."
+  (let (cur-net)
+    (if enwc-using-wired
+       (progn
+         (enwc-wired-connect id)
+         (setq cur-net (nth id (enwc-get-wired-profiles))))
+      (enwc-wireless-connect id)
+      (if enwc-last-scan
+         (setq cur-net (cdr (assoc "essid" (nth id enwc-last-scan)))))
+    cur-net)))
+
+(defun enwc-connect-to-network (net-id)
+  "Connects the the network with network id NET-ID.
+Confirms that NET-ID is a valid network id.
+This calls `enwc-connect-network' as a subroutine."
+  (interactive "nNetwork ID: ")
+  (if (not (numberp net-id))
+      (error "NET-ID must be a number"))
+  (let ((num-ids (length enwc-last-scan))
+       cur-net)
+    (if (or (< net-id 0) (>= net-id num-ids))
+       (error "Invalid network id."))
+    (setq cur-net (enwc-connect-network net-id))
+    (message (concat "Connecting to " cur-net))))
+
+(defun enwc-connect-to-network-essid (essid)
+  "Connects to the network with essid ESSID."
+  (interactive "sNetwork ESSID: ")
+  (let ((net-id (enwc-find-network essid)))
+    (if net-id
+       (enwc-connect-to-network net-id)
+      (message "Network not found."))))
+
+(defun enwc-connect-to-network-at-point ()
+  "Connects to the network at the current line number.
+Moves to the enwc buffer if necessary."
+  (interactive)
+  (if (not (eq major-mode 'enwc-mode))
+      (enwc-setup-buffer))
+  (let ((id (- (line-number-at-pos) 1)))
+    (enwc-connect-to-network id)))
+
+(defun enwc-disconnect ()
+  "Disconnects from the network, if any."
+  (interactive)
+  (if (not (eq major-mode 'enwc-mode))
+      (enwc-setup-buffer))
+  (if enwc-using-wired
+      (enwc-wired-disconnect)
+    (enwc-wireless-disconnect)))
+
+(defun enwc-toggle-wired ()
+  "Toggle the display and mode between wireless and wired.
+This function also sets the variable `enwc-using-wired'."
+  (interactive)
+  (if (not (eq major-mode 'enwc-mode))
+      (enwc-setup-buffer))
+  (let ((inhibit-read-only t))
+    (erase-buffer)
+    (setq enwc-using-wired (not enwc-using-wired))
+    (enwc-scan)))
+
+(defun enwc ()
+  "The main front-end to ENWC.
+This sets up the buffer and scans for networks.
+In order to use this, one must have already run
+`enwc-setup'.
+
+\\{enwc-mode-map}"
+  (interactive)
+  (enwc-setup-buffer)
+  (enwc-scan))
+
+;; Settings for access point AP
+;;
+;; IPv4 Settings:
+;;   Address =
+;;   Netmask =
+;;   Gateway =
+;;
+;;   DNS 1   =
+;;   DNS 2   =
+;;
+;; Security:
+;;   Type    =
+;;
+
+(defun enwc-edit-view-entry ()
+  "View the text of the entry at point.
+This is mostly useful to view the text of the hidden entries."
+  (interactive)
+  (if (not (get-buffer "*ENWC Edit*"))
+      (error "Not editing a network entry."))
+  (if (not (eq (current-buffer) (get-buffer "*ENWC Edit*")))
+      (switch-to-buffer "*ENWC Edit*"))
+  (if (not (widget-at))
+      (error "No widget at point"))
+  (message (widget-field-value-get (widget-at))))
+
+(defun enwc-display-sec-reqs (widget &rest stuff)
+  "Display the security requirements.
+This is a callback to the security selection widget.
+WIDGET is always the menu drop-down of security types."
+  (let (reqs
+       (inhibit-read-only t)
+       type-wid-list)
+    ;; First, erase any of the old ones.
+    (goto-char (1+ (widget-get widget :to)))
+    (widget-forward 1)
+    (while (>= (point) (widget-get widget :to))
+      (widget-delete (widget-at))
+      (widget-forward 1))
+    (goto-char (point-max))
+    ;; Then check to see if widget-value is None
+    (if (string= (widget-value widget) "None")
+       nil
+      (setq type-wid-list
+           (cadr (assoc "reqs"
+                        (cdr (assoc (widget-value widget)
+                                    (enwc-get-sec-types enwc-using-wired))))))
+      (setq reqs
+           (mapcar (lambda (x)
+                     (if (not (eq (length (cdr x)) 0))
+                         (widget-create 'editable-field
+                                        :format (concat "  "
+                                                        (cdr x)
+                                                        ": %v")
+                                        :secret ?*
+                                        :keymap 'enwc-edit-field-map
+                                        :value (or (enwc-get-nw-prop enwc-using-wired
+                                                                     enwc-edit-id
+                                                                     (car x))
+                                                   ""))))
+                   type-wid-list))
+      (widget-setup)
+      reqs)))
+
+(defun enwc-setup-edit-buffer ()
+  "Setup the edit buffer.  This removes the old one if neccessary,
+and redisplays the settings from the network profile
+ with id `enwc-edit-id', which is set in `enwc-edit-entry-at-point'."
+  (if (get-buffer "*ENWC Edit*")
+      (kill-buffer "*ENWC Edit*"))
+  (with-current-buffer (get-buffer-create "*ENWC Edit*")
+    (let ((sec-types (enwc-get-sec-types enwc-using-wired))
+         (nw-info (enwc-get-nw-info enwc-using-wired enwc-edit-id))
+         ip-addr netmask gateway dns-1 dns-2
+         addr-wid net-wid gate-wid
+         dns-1-wid dns-2-wid dns-list
+         type-wid type-wid-list)
+
+      (widget-insert (concat "Settings for access point "
+                            (cdr (assoc "essid"
+                                        (nth enwc-edit-id
+                                             enwc-last-scan)))
+                            "\n"))
+      (widget-insert "\n")
+      ;; ip
+      (widget-insert "IPv4 Settings:\n")
+      (setq addr-wid (widget-create 'editable-field
+                                   :format "  Address: %v"
+                                   :value (or (assoc "addr" nw-info) "")))
+      ;; netmask
+      (setq net-wid (widget-create 'editable-field
+                                  :format "  Netmask: %v"
+                                  :value (or (assoc "netmask" nw-info) "")))
+
+      ;; gateway
+      (setq gate-wid (widget-create 'editable-field
+                                   :format "  Gateway: %v"
+                                   :value (or (assoc "gateway" nw-info) "")))
+      ;; dns1
+      (widget-insert "\n")
+      ;;(setq dns-list (enwc-get-dns enwc-using-wired enwc-edit-id))
+      (setq dns-1-wid (widget-create 'editable-field
+                                    :format "    DNS 1: %v"
+                                    :value (or (assoc "dns1" nw-info) "")))
+
+      ;; dns2
+      (setq dns-2-wid (widget-create 'editable-field
+                                    :format "    DNS 2: %v"
+                                    :value (or (assoc "dns2" nw-info) "")))
+
+      (widget-insert "\n")
+      (widget-insert "Security:\n")
+      (setq type-wid (apply 'widget-create
+                           'menu-choice
+                                   :tag "Type "
+                           :value (or (assoc "enctype" nw-info) "None")
+                           :notify 'enwc-display-sec-reqs
+                                   '(item :tag "No Encryption"
+                                  :value "None")
+                           (mapcar (lambda (x)
+                                     `(item :format "%t\n"
+                                            :value ,(car x)
+                                            :tag ,(cdr (assoc "Name" (cdr x)))))
+                                           sec-types)))
+      (enwc-display-sec-reqs type-wid)
+      (use-local-map enwc-edit-map)
+      (widget-setup)))
+
+  (switch-to-buffer "*ENWC Edit*"))
+
+(defun enwc-edit-save ()
+  "Save the network settings."
+  ;; Basically, just iterate through the widgets,
+  ;; retrieving values from each.
+  (interactive)
+  (if (not (get-buffer "*ENWC Edit*"))
+      (error "Not editing a network entry."))
+  (if (not (eq (current-buffer) (get-buffer "*ENWC Edit*")))
+      (switch-to-buffer "*ENWC Edit*"))
+  (goto-char 0)
+  (let (settings start-pos type-wid-list)
+
+    (widget-forward 1)
+    (setq settings
+         (append settings
+                 (cons (cons "addr"
+                             (widget-field-value-get (widget-at)))
+                       nil)))
+    (widget-forward 1)
+    (setq settings
+         (append settings
+                 (cons (cons "netmask"
+                             (widget-field-value-get (widget-at)))
+                       nil)))
+    (widget-forward 1)
+    (setq settings
+         (append settings
+                 (cons (cons "gateway"
+                             (widget-field-value-get (widget-at)))
+                       nil)))
+    (widget-forward 1)
+    (setq settings
+         (append settings
+                 (cons (cons "dns1"
+                             (widget-field-value-get (widget-at)))
+                       nil)))
+    (widget-forward 1)
+    (setq settings
+         (append settings
+                 (cons (cons "dns2"
+                             (widget-field-value-get (widget-at)))
+                       nil)))
+    (widget-forward 1)
+    (setq settings
+         (append settings
+                 (cons (cons "enctype"
+                             (widget-value (widget-at)))
+                       nil)))
+    (setq start-pos (widget-get (widget-at) :to))
+    (if (not (string= (widget-value (widget-at)) "None"))
+       (setq type-wid-list
+             (cadr (assoc "reqs"
+                          (cdr (assoc (widget-value (widget-at))
+                                      (enwc-get-sec-types enwc-using-wired)))))))
+    (dolist (x type-wid-list)
+      (widget-forward 1)
+      (if (not (string= (widget-field-value-get (widget-at)) ""))
+         (setq settings
+               (append settings
+                       (cons (cons (car x)
+                                   (widget-field-value-get (widget-at)))
+                             nil)))))
+    (print settings)
+
+    (enwc-save-nw-settings enwc-using-wired enwc-edit-id settings)))
+
+(defun enwc-edit-entry-at-point ()
+  "Edit the current network entry."
+  (interactive)
+  (setq enwc-edit-id (- (line-number-at-pos) 1))
+  (select-window (split-window))
+  (enwc-setup-edit-buffer))
+
+(defvar enwc-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map (kbd "R") 'enwc-scan)
+    (define-key map (kbd "C") 'enwc-connect-to-network-essid)
+    (define-key map (kbd "D") 'enwc-disconnect)
+    (define-key map (kbd "W") 'enwc-toggle-wired)
+    (define-key map (kbd "E") 'enwc-edit-entry-at-point)
+    (define-key map (kbd "RET") 'enwc-connect-to-network-at-point)
+    map)
+  "The keymap for network display in ENWC.")
+
+(defvar enwc-edit-map
+  (let ((map (copy-keymap widget-keymap)))
+    (define-key map (kbd "C-x C-s") 'enwc-edit-save)
+    map)
+  "The keymap for editing network profiles with ENWC.")
+
+(defvar enwc-edit-field-map
+  (let ((map (copy-keymap widget-field-keymap)))
+    (define-key map (kbd "C-x C-a") 'enwc-edit-view-entry)
+    map)
+  "The keymap for editable fields within the ENWC edit buffer.")
+
+(define-derived-mode enwc-mode tabulated-list-mode "enwc"
+  "Mode for working with network connections.
+\\{enwc-mode-map}"
+  ;;(setq buffer-read-only t)
+  (add-hook 'tabulated-list-revert-hook 'enwc-scan nil t)
+  )
+
+(defun enwc-setup-buffer ()
+  "Sets up the ENWC buffer.
+This first checks to see that it exists,
+and if it doesn't, then create it."
+  (if (not (get-buffer "*ENWC*"))
+      (with-current-buffer (get-buffer-create "*ENWC*")
+       ;;(use-local-map enwc-mode-map)
+       ;;(setq major-mode 'enwc-mode
+       ;;      mode-name "enwc")
+       (enwc-mode)
+       ;;(setq buffer-read-only t)
+       ))
+  (switch-to-buffer "*ENWC*"))
+
+(provide 'enwc)
+
+;;; enwc.el ends here
diff --git a/packages/epoch-view/epoch-view.el b/packages/epoch-view/epoch-view.el
new file mode 100644 (file)
index 0000000..8093637
--- /dev/null
@@ -0,0 +1,99 @@
+;;; epoch-view.el --- Minor mode to visualize epoch timestamps
+
+;; Copyright (C) 2010, 2012  Free Software Foundation, Inc.
+
+;; Author: Ted Zlatanov <tzz@lifelogs.com>
+;; Keywords: data, timestamp, epoch, unix
+;; Version: 0.0.1
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Use like any other minor mode.  You'll see tooltips with dates
+;; instead of Unix epoch times.  This mode turns on font-lock and
+;; leaves it on forever.  You may or may not like that.
+
+;;; TODO:
+
+;; Instead of letting font-lock-mode manage the `display' property,
+;; manage it ourselves so when multiple modes specify `display' it
+;; won't get wiped out when this mode doesn't need it anymore.
+
+;;; Code:
+
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; User Variables:
+
+(defcustom epoch-view-time-format "%F %T"
+  "Format for time view.  Same as `format-time-string'."
+  :type '(choice :tag "Time format"
+                 (string :tag "Choose your own `format-time-string' format")
+                 (const :tag "YYYY-MM-DD HH:MM:SS" "%F %T"))
+  :group 'epoch-view)
+
+(defvar epoch-view-font-lock-keywords
+  '(("\\<[0-9]\\{8,11\\}\\>"
+     (0 (epoch-view-render))))
+  "Font-lock keywords of epoch timestamps.")
+
+(defun epoch-view-render ()
+  "Render a epoch match."
+  (let ((text (match-string-no-properties 0)))
+    `(face font-lock-warning-face
+           display ,(epoch-view--render text))))
+
+(defun epoch-view--render-time (text)
+  "Render the time portion of an epoch match from TEXT."
+  (format-time-string
+   epoch-view-time-format
+   (seconds-to-time (car (read-from-string (concat text ".0"))))))
+
+(defun epoch-view--render (text)
+  "Render a epoch match from a number in TEXT, ending with TEXT."
+  (format "[%s] %s" (epoch-view--render-time text) text))
+
+(defun epoch-view-turn-on ()
+  "Turn on epoch-view-mode."
+  (let ((props (make-local-variable 'font-lock-extra-managed-props)))
+    (add-to-list props 'display))
+
+  (font-lock-add-keywords nil epoch-view-font-lock-keywords))
+
+(defun epoch-view-turn-off ()
+  "Turn off epoch-view-mode."
+  (font-lock-remove-keywords
+   nil
+   `(,@epoch-view-font-lock-keywords)))
+
+;;;###autoload
+(define-minor-mode
+  epoch-view-mode
+  "Visualize epoch (Unix) timestamps."
+  :lighter " EpochVw"
+  (progn
+    (if epoch-view-mode
+        (epoch-view-turn-on)
+      (epoch-view-turn-off))
+    ;; Turn on font lock
+    (font-lock-mode 1)))
+
+(provide 'epoch-view)
+
+(run-hooks 'epoch-view-load-hook)
+
+;;; epoch-view.el ends here
diff --git a/packages/f90-interface-browser/README.org b/packages/f90-interface-browser/README.org
new file mode 100644 (file)
index 0000000..e620b49
--- /dev/null
@@ -0,0 +1,82 @@
+* Fortran editing helpers for Emacs
+
+** Overview
+
+You write (or work on) large, modern fortran code bases.  These make
+heavy use of function overloading and generic interfaces.  Your brain
+is too small to remember what all the specialisers are called.
+Therefore, your editor should help you.  This is an attempt to do
+this for Emacs.
+
+f90-interface-browser.el is a (simple-minded) parser of fortran that
+understands a little about generic interfaces and derived types.
+
+** External functions
+
+- =f90-parse-interfaces-in-dir= :: Parse all the fortran files in a
+     directory
+- =f90-parse-all-interfaces= :: Parse all the fortran files in a
+     directory and recursively in its subdirectories
+- =f90-browse-interface-specialisers= :: Pop up a buffer showing all
+     the specialisers for a particular generic interface (prompted
+     for with completion)
+- =f90-find-tag-interface= :: On a procedure call, show a list of the
+     interfaces that match the (possibly typed) argument list.  If no
+     interface is found, this falls back to =find-tag=.
+- =f90-list-in-scope-vars= :: List all variables in local scope.  This
+     just goes to the top of the current procedure and collects named
+     variables, so it doesn't work with module or global scope
+     variables or local procedures.
+- =f90-show-type-definition= :: Pop up a buffer showing a derived type
+     definition.
+
+** Customisable variables
+
+- =f90-file-extensions= :: A list of extensions that the parser will
+     use to decide if a file is a fortran file.
+
+** Details and caveats
+
+The parser assumes you write fortran in the style espoused in Metcalf,
+Reid and Cohen.  Particularly, variable declarations use a double
+colon to separate the type from the name list.
+
+Here's an example of a derived type definition:
+#+BEGIN_SRC f90
+type foo
+   real, allocatable, dimension(:) :: a
+   integer, pointer :: b, c(:)
+   type(bar) :: d
+end type foo
+#+END_SRC
+
+Here's a subroutine declaration:
+#+BEGIN_SRC f90
+subroutine foo(a, b)
+   integer, intent(in) :: a
+   real, intent(inout), dimension(:,:) :: b
+   ...
+end subroutine foo
+#+END_SRC
+
+Local procedures whose names conflict with global ones will likely
+confuse the parser.  For example:
+#+BEGIN_SRC f90
+subroutine foo(a, b)
+   ...
+end subroutine foo
+
+subroutine bar(a, b)
+   ...
+   call subroutine foo
+   ...
+ contains
+   subroutine foo
+      ...
+   end subroutine foo
+end subroutine bar
+#+END_SRC
+
+Also not handled are overloaded operators, scalar precision modifiers,
+like =integer(kind=c_int)=, for which the precision is just ignored, and
+many other of the hairier aspects of the fortran language.
diff --git a/packages/f90-interface-browser/f90-interface-browser.el b/packages/f90-interface-browser/f90-interface-browser.el
new file mode 100644 (file)
index 0000000..8956400
--- /dev/null
@@ -0,0 +1,1058 @@
+;;; f90-interface-browser.el --- Parse and browse f90 interfaces
+
+;; Copyright (C) 2011, 2012, 2013  Free Software Foundation, Inc
+
+;; Author: Lawrence Mitchell <wence@gmx.li>
+;; Created: 2011-07-06
+;; URL: http://github.com/wence-/f90-iface/
+;; Version: 1.1
+;; Package-Type: simple
+
+;; COPYRIGHT NOTICE
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; You write (or work on) large, modern fortran code bases.  These
+;; make heavy use of function overloading and generic interfaces.  Your
+;; brain is too small to remember what all the specialisers are
+;; called.  Therefore, your editor should help you.
+
+;; Load this file and tell it to parse all the fortran files in your
+;; code base.  You can do this one directory at a time by calling
+;; `f90-parse-interfaces-in-dir' (M-x f90-parse-interfaces-in-dir
+;; RET).  Or you can parse all the fortran files in a directory and
+;; recursively in its subdirectories by calling
+;; `f90-parse-all-interfaces'.
+
+;; Now you are able to browse (with completion) all defined interfaces
+;; in your code by calling `f90-browse-interface-specialisers'.
+;; Alternatively, if `point' is on a procedure call, you can call
+;; `f90-find-tag-interface' and you'll be shown a list of the
+;; interfaces that match the (possibly typed) argument list of the
+;; current procedure.  This latter hooks into the `find-tag' machinery
+;; so that you can use it on the M-.  keybinding and it will fall back
+;; to completing tag names if you don't want to look for an interface
+;; definition.
+;; In addition, if you're in a large procedure and want the list of
+;; the variables in scope (perhaps you want to define a new loop
+;; variable), you can use `f90-list-in-scope-vars' to pop up a buffer
+;; giving a reasonable guess.  Note this doesn't give you module
+;; variables, or the variables of parent procedures if the current
+;; subroutine is contained within another.
+
+;; Derived types are also parsed, so that slot types of derived types
+;; are given the correct type (rather than a UNION-TYPE) when arglist
+;; matching.  You can show the definition of a known derived type by
+;; calling `f90-show-type-definition' which prompts (with completion)
+;; for a typename to show.
+
+;; The parser assumes you write Fortran in the style espoused in
+;; Metcalf, Reid and Cohen.  Particularly, variable declarations use a
+;; double colon to separate the type from the name list.
+
+;; Here's an example of a derived type definition
+;;     type foo
+;;        real, allocatable, dimension(:) :: a
+;;        integer, pointer :: b, c(:)
+;;        type(bar) :: d
+;;     end type
+
+;; Here's a subroutine declaration
+;;     subroutine foo(a, b)
+;;        integer, intent(in) :: a
+;;        real, intent(inout), dimension(:,:) :: b
+;;        ...
+;;     end subroutine foo
+
+;; Local procedures whose names conflict with global ones will likely
+;; confuse the parser.  For example
+
+;;    subroutine foo(a, b)
+;;       ...
+;;    end subroutine foo
+;;
+;;    subroutine bar(a, b)
+;;       ...
+;;       call subroutine foo
+;;       ...
+;;     contains
+;;       subroutine foo
+;;          ...
+;;       end subroutine foo
+;;    end subroutine bar
+
+;; Also not handled are overloaded operators, scalar precision
+;; modifiers, like integer(kind=c_int), for which the precision is
+;; just ignored, and many other aspects.
+
+;; Some tests of the parser are available in f90-tests.el (in the same
+;; repository as this file).
+
+;;; Code:
+
+;;; Preamble
+(eval-when-compile (require 'cl))
+(require 'thingatpt)
+(require 'f90)
+(require 'etags)
+
+(defgroup f90-iface nil
+  "Static parser for Fortran 90 code"
+  :prefix "f90-"
+  :group 'f90)
+
+(defcustom f90-file-extensions (list "f90" "F90" "fpp")
+  "Extensions to consider when looking for Fortran 90 files."
+  :type '(repeat string)
+  :group 'f90-iface)
+
+(defcustom f90-file-name-check-functions '(f90-check-fluidity-refcount)
+  "List of functions to call to check if a file should be parsed.
+
+In addition to checking if a file exists and is readable, you can
+add extra checks before deciding to parse a file.  Each function
+will be called with one argument, the fully qualified name of the
+file to test, it should return non-nil if the file should be
+parsed.  For an example test function see
+`f90-check-fluidity-refcount'."
+  :type '(repeat function)
+  :group 'f90-iface)
+
+(defcustom f90-extra-file-functions '(f90-insert-fluidity-refcount)
+  "List of functions to call to insert extra files to parse.
+
+Each function should be a function of two arguments, the first is the
+fully qualified filename (with directory) the second is the
+unqualified filename."
+  :type '(repeat function)
+  :group 'f90-iface)
+
+;;; Internal variables
+(defvar f90-interface-type nil)
+(make-variable-buffer-local 'f90-interface-type)
+
+(defvar f90-buffer-to-switch-to nil)
+(make-variable-buffer-local 'f90-buffer-to-switch-to)
+
+(defvar f90-invocation-marker nil)
+(make-variable-buffer-local 'f90-invocation-marker)
+
+;; Data types for storing interface and specialiser definitions
+(defstruct f90-interface
+  (name "" :read-only t)
+  (publicp nil)
+  specialisers)
+
+(defstruct f90-specialiser
+  (name "" :read-only t)
+  (type "")
+  (arglist "")
+  location)
+
+(defvar f90-all-interfaces (make-hash-table :test 'equal)
+  "Hash table populated with all known f90 interfaces.")
+
+(defvar f90-types (make-hash-table :test 'equal)
+  "Hash table populated with all known f90 derived types.")
+
+;;; Inlineable utility functions
+(defsubst f90-specialisers (name interfaces)
+  "Return all specialisers for NAME in INTERFACES."
+  (f90-interface-specialisers (f90-get-interface name interfaces)))
+
+(defsubst f90-valid-interface-name (name)
+  "Return non-nil if NAME is an interface name."
+  (gethash name f90-all-interfaces))
+
+(defsubst f90-count-commas (str &optional level)
+  "Count commas in STR.
+
+If LEVEL is non-nil, only count commas up to the specified nesting
+level.  For example, a LEVEL of 0 counts top-level commas."
+  (1- (length (f90-split-arglist str level))))
+
+(defsubst f90-get-parsed-type-varname (type)
+  "Return the variable name of TYPE."
+  (car type))
+
+(defsubst f90-get-parsed-type-typename (type)
+  "Return the type name of TYPE."
+  (cadr type))
+
+(defsubst f90-get-parsed-type-modifiers (type)
+  "Return the modifiers of TYPE."
+  (cddr type))
+
+(defsubst f90-get-type (type)
+  "Return the struct definition corresponding to TYPE."
+  (gethash (f90-get-parsed-type-typename type) f90-types))
+
+(defsubst f90-get-slot-type (slot type)
+  "Get the type of SLOT in TYPE."
+  (let ((fn (intern-soft (format "f90-type.%s.%s"
+                                 (f90-get-parsed-type-typename type) slot))))
+    (when fn
+      (funcall fn (f90-get-type type)))))
+
+(defsubst f90-merge-into-tags-completion-table (ctable)
+  "Merge completions in CTABLE into the tags completion table."
+  (if (or tags-file-name tags-table-list)
+      (let ((table (tags-completion-table)))
+        (maphash (lambda (k v)
+                   (ignore v)
+                   (intern k table))
+                 ctable)
+        table)
+    ctable))
+
+(defun f90-lazy-completion-table ()
+  "Lazily produce a completion table of all interfaces and tag names."
+  (lexical-let ((buf (current-buffer)))
+    (lambda (string pred action)
+      (with-current-buffer buf
+        (save-excursion
+          ;; If we need to ask for the tag table, allow that.
+          (let ((enable-recursive-minibuffers t))
+            (visit-tags-table-buffer))
+          (complete-with-action action (f90-merge-into-tags-completion-table f90-all-interfaces) string pred))))))
+
+(defsubst f90-extract-type-name (name)
+  "Return the typename from NAME.
+
+If NAME is like type(TYPENAME) return TYPENAME, otherwise just NAME."
+  (if (and name (string-match "\\`type(\\([^)]+\\))\\'" name))
+      (match-string 1 name)
+    name))
+
+;;; User-visible routines
+
+(defun f90-parse-all-interfaces (dir)
+  "Parse all interfaces found in DIR and its subdirectories.
+
+Recurse over all (non-hidden) directories below DIR and parse
+interfaces found within them using `f90-parse-interfaces-in-dir',
+a directory is considered hidden if it's name doesn't start with
+an alphanumeric character."
+  (interactive "DParse files in tree: ")
+  (let (dirs
+       attrs
+        seen
+       (pending (list (expand-file-name dir))))
+    (while pending
+      (push (pop pending) dirs)
+      (let* ((this-dir (car dirs))
+            (contents (directory-files this-dir))
+            (default-directory this-dir))
+       (setq attrs (nthcdr 10 (file-attributes this-dir)))
+       (unless (member attrs seen)
+         (push attrs seen)
+         (dolist (file contents)
+            ;; Ignore hidden directories
+           (and (string-match "\\`[[:alnum:]]" file)
+                (file-directory-p file)
+                 (setq pending (nconc pending
+                                      (list (expand-file-name file)))))))))
+    (mapc 'f90-parse-interfaces-in-dir dirs)))
+
+(defun f90-parse-interfaces-in-dir (dir)
+  "Parse all Fortran 90 files in DIR to populate `f90-all-interfaces'."
+  (interactive "DParse files in directory: ")
+  (loop for file in (directory-files dir t
+                                     (rx-to-string
+                                      `(and "." (or ,@f90-file-extensions)
+                                            eos) t))
+        do (f90-parse-interfaces file f90-all-interfaces)))
+
+(defun f90-find-tag-interface (name &optional match-sublist)
+  "List all interfaces matching NAME.
+
+Restricts list to those matching the (possibly typed) arglist of
+the word at point.  If MATCH-SUBLIST is non-nil, only check if
+the arglist is a sublist of the specialiser's arglist.  For more
+details see `f90-approx-arglist-match' and
+`f90-browse-interface-specialisers'."
+  (interactive (let ((def (word-at-point)))
+                 (list (completing-read
+                        (format "Find interface/tag (default %s): " def)
+                        (f90-lazy-completion-table)
+                        nil t nil nil def)
+                       current-prefix-arg)))
+  (if (f90-valid-interface-name name)
+      (f90-browse-interface-specialisers name (f90-arglist-types)
+                                         match-sublist
+                                         (point-marker))
+    (find-tag name match-sublist)))
+
+(defun f90-browse-interface-specialisers (name &optional arglist-to-match
+                                               match-sublist
+                                               invocation-point)
+  "Browse all interfaces matching NAME.
+
+If ARGLIST-TO-MATCH is non-nil restrict to those interfaces that match
+it.
+If MATCH-SUBLIST is non-nil only restrict to those interfaces for
+which ARGLIST-TO-MATCH is a sublist of the specialiser's arglist.
+
+If INVOCATION-POINT is non-nil it should be a `point-marker'
+indicating where we were called from, for jumping back to with
+`pop-tag-mark'."
+  (interactive (let ((def (word-at-point)))
+                 (list (completing-read
+                        (format "Interface%s: "
+                                (if def
+                                    (format " (default %s)" def)
+                                  ""))
+                        f90-all-interfaces
+                        nil t nil nil def))))
+  (let ((buf (current-buffer)))
+    (or invocation-point (setq invocation-point (point-marker)))
+    (with-current-buffer (get-buffer-create "*Interface Browser*")
+      (let ((interface (f90-get-interface name f90-all-interfaces))
+            (type nil)
+            (n-specs 0))
+        (setq buffer-read-only nil)
+        (erase-buffer)
+        (setq n-specs
+              (loop for s being the hash-values of
+                    (f90-interface-specialisers interface)
+                    do (setq type (f90-specialiser-type s))
+                    when (or (null arglist-to-match)
+                             (f90-approx-arglist-match
+                              arglist-to-match s match-sublist))
+                    do (insert
+                        (propertize
+                         (concat
+                          (propertize
+                           (format "%s [defined in %s]\n    (%s)\n"
+                                   (propertize (f90-specialiser-name s)
+                                               'face 'bold)
+                                   (let ((f (car
+                                             (f90-specialiser-location s))))
+                                     (format "%s/%s"
+                                             (file-name-nondirectory
+                                              (directory-file-name
+                                               (file-name-directory f)))
+                                             (file-name-nondirectory f)))
+                                   (f90-fontify-arglist
+                                    (f90-specialiser-arglist s)))
+                           'f90-specialiser-location
+                           (f90-specialiser-location s)
+                           'f90-specialiser-name (f90-specialiser-name s)
+                           'mouse-face 'highlight
+                           'help-echo
+                           "mouse-1: find definition in other window")
+                          "\n")
+                         'f90-specialiser-extent (f90-specialiser-name s)))
+                    and count 1))
+        (goto-char (point-min))
+        (insert (format "Interfaces for %s:\n\n"
+                        (f90-interface-name interface)))
+        (when arglist-to-match
+          (insert (format "%s\n%s\n\n"
+                          (if (zerop n-specs)
+                              "No interfaces matching arglist (intrinsic?):"
+                            "Only showing interfaces matching arglist:")
+                          (f90-fontify-arglist arglist-to-match))))
+        (f90-interface-browser-mode)
+        (setq f90-buffer-to-switch-to buf)
+        (setq f90-interface-type type)
+        (setq f90-invocation-marker invocation-point)
+        (pop-to-buffer (current-buffer))))))
+
+(defun f90-next-definition (&optional arg)
+  "Go to the next ARG'th specialiser definition."
+  (interactive "p")
+  (unless arg
+    (setq arg 1))
+  (while (> arg 0)
+    (goto-char (next-single-property-change
+                (point)
+                'f90-specialiser-extent
+                nil (point-max)))
+    (decf arg)))
+
+(defun f90-previous-definition (&optional arg)
+  "Go to the previous ARG'th specialiser definition."
+  (interactive "p")
+  (unless arg
+    (setq arg 1))
+  (while (> arg 0)
+    (loop repeat 2
+          do (goto-char (previous-single-property-change
+                         (point)
+                         'f90-specialiser-extent
+                         nil (point-min))))
+    (f90-next-definition 1)
+    (decf arg)))
+
+(defun f90-mouse-find-definition (e)
+  "Visit the definition at the position of the event E."
+  (interactive "e")
+  (let ((win (posn-window (event-end e)))
+        (point (posn-point (event-end e))))
+    (when (not (windowp win))
+      (error "No definition here"))
+    (with-current-buffer (window-buffer win)
+      (goto-char point)
+      (f90-find-definition))))
+
+(defun f90-quit-browser ()
+  "Quit the interface browser."
+  (interactive)
+  (let ((buf f90-buffer-to-switch-to))
+    (kill-buffer (current-buffer))
+    (pop-to-buffer buf)))
+
+(defun f90-find-definition ()
+  "Visit the definition at `point'."
+  (interactive)
+  (let ((location (get-text-property (point) 'f90-specialiser-location))
+        (name (get-text-property (point) 'f90-specialiser-name))
+        (type f90-interface-type)
+        (buf (current-buffer))
+        buf-to)
+    (if location
+        (progn (ring-insert find-tag-marker-ring f90-invocation-marker)
+               (find-file-other-window (car location))
+               (setq buf-to (current-buffer))
+               (goto-char (cadr location))
+               ;; Try forwards then backwards near the recorded
+               ;; location
+               (or (re-search-forward (format "%s[ \t]+%s[ \t]*("
+                                              type name) nil t)
+                   (re-search-backward (format "%s[ \t]+%s[ \t]*("
+                                               type name) nil t))
+               (beginning-of-line)
+               (recenter 0)
+               (pop-to-buffer buf)
+               (setq f90-buffer-to-switch-to buf-to))
+      (error "No definition at point"))))
+
+(defvar f90-interface-browser-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map (kbd "RET") 'f90-find-definition)
+    (define-key map (kbd "<down>") 'f90-next-definition)
+    (define-key map (kbd "TAB") 'f90-next-definition)
+    (define-key map (kbd "<up>") 'f90-previous-definition)
+    (define-key map (kbd "<backtab>") 'f90-previous-definition)
+    (define-key map (kbd "q") 'f90-quit-browser)
+    (define-key map (kbd "<mouse-1>") 'f90-mouse-find-definition)
+    map)
+  "Keymap for `f90-interface-browser-mode'.")
+
+(define-derived-mode f90-interface-browser-mode fundamental-mode "IBrowse"
+  "Major mode for browsing f90 interfaces."
+  (setq buffer-read-only t)
+  (set-buffer-modified-p nil))
+
+;;; Type definitions
+
+(defun f90-type-at-point ()
+  "Return a guess for the type of the thing at `point'.
+
+If `point' is currently on a line containing a variable declaration,
+return the typename of the declaration.  Otherwise try and figure out
+the typename of the variable at point (possibly including slot
+references)."
+  (let ((name (or
+               ;; Are we on a line with type(TYPENAME)?
+               (save-excursion
+                 (forward-line 0)
+                 (f90-parse-single-type-declaration))
+               ;; No, try and derive the type of the variable at point
+               (save-excursion
+                 (let ((syntax (copy-syntax-table f90-mode-syntax-table)))
+                   (modify-syntax-entry ?% "w" syntax)
+                   (with-syntax-table syntax
+                     (skip-syntax-backward "w")
+                     (f90-arg-types
+                      (list
+                       (buffer-substring-no-properties
+                        (point)
+                        (progn (skip-syntax-forward "w") (point)))))))))))
+    (f90-extract-type-name (f90-get-parsed-type-typename (car name)))))
+
+(defun f90-show-type-definition (type)
+  "Show the definition of TYPE.
+
+This formats the parsed definition of TYPE, rather than jumping to the
+existing definition.
+
+When called interactively, default to the type of the thing at `point'.
+If `point' is on a type declaration line, the default is the
+declaration type.
+If `point' is on a variable name (possibly with slot references) the
+default is the type of the variable."
+  (interactive (list (let ((def (f90-type-at-point)))
+                       (completing-read
+                        (if def (format "Type (default %s): " def) "Type: ")
+                        (loop for type being the hash-keys of f90-types
+                              collect (f90-extract-type-name type))
+                        nil t nil nil def))))
+  (with-current-buffer (get-buffer-create "*Type definition*")
+    (setq buffer-read-only nil)
+    (fundamental-mode)
+    (erase-buffer)
+    (let* ((tname (format "type(%s)" type))
+           (type-struct (f90-get-type (list nil tname)))
+           fns)
+      (when type-struct
+        (setq fns (loop for name in (funcall (intern-soft
+                                              (format "f90-type.%s.-varnames"
+                                                      tname))
+                                             type-struct)
+                        collect (intern-soft (format "f90-type.%s.%s"
+                                                     tname name)))))
+      (if (null type-struct)
+          (insert (format "The type %s is not a known derived type."
+                          type))
+        (insert (format "type %s\n" type))
+        (loop for fn in fns
+              for parsed = (funcall fn type-struct)
+              then (funcall fn type-struct)
+              do
+              (insert (format "  %s :: %s\n"
+                              (f90-format-parsed-slot-type parsed)
+                              (f90-get-parsed-type-varname parsed))))
+        (insert (format "end type %s\n" type))
+        (f90-mode))
+      (goto-char (point-min))
+      (view-mode)
+      (pop-to-buffer (current-buffer)))))
+
+;;; Arglist matching/formatting
+
+(defun f90-format-parsed-slot-type (type)
+  "Turn a parsed TYPE into a valid f90 type declaration."
+  (if (null type)
+      "UNION-TYPE"
+    ;; Ignore name
+    (setq type (cdr type))
+    (mapconcat 'identity (loop for a in type
+                               if (and (consp a)
+                                       (string= (car a) "dimension"))
+                               collect (format "dimension(%s)"
+                                               (mapconcat 'identity
+                                                          (make-list (cdr a)
+                                                                     ":")
+                                                          ","))
+                               else if (not
+                                        (string-match
+                                         "\\`intent(\\(?:in\\|out\\|inout\\))"
+                                         a))
+                               collect a)
+               ", ")))
+
+(defun f90-fontify-arglist (arglist)
+  "Fontify ARGLIST using `f90-mode'."
+  (with-temp-buffer
+    (if (stringp arglist)
+        (insert (format "%s :: foo\n" arglist))
+      (insert (mapconcat (lambda (x)
+                           (format "%s :: foo" (f90-format-parsed-slot-type x)))
+                         arglist "\n")))
+    (f90-mode)
+    (font-lock-fontify-buffer)
+    (goto-char (point-min))
+    (mapconcat 'identity
+               (loop while (not (eobp))
+                     collect (buffer-substring (line-beginning-position)
+                                               (- (line-end-position)
+                                                  (length " :: foo")))
+                     do (forward-line 1))
+               "; ")))
+
+(defun f90-count-non-optional-args (arglist)
+  "Count non-optional args in ARGLIST."
+  (loop for arg in arglist
+        count (not (member "optional" (f90-get-parsed-type-modifiers arg)))))
+
+(defun f90-approx-arglist-match (arglist specialiser &optional match-sub-list)
+  "Return non-nil if ARGLIST matches the arglist of SPECIALISER.
+
+If MATCH-SUB-LIST is non-nil just require that ARGLIST matches the
+first (length ARGLIST) args of SPECIALISER."
+  (let* ((n-passed-args (length arglist))
+         (spec-arglist (f90-specialiser-arglist specialiser))
+         (n-spec-args (length spec-arglist))
+         (n-required-args (f90-count-non-optional-args spec-arglist)))
+    (when (or match-sub-list
+              (and (<= n-required-args n-passed-args)
+                   (<= n-passed-args n-spec-args)))
+      (loop for arg in arglist
+            for spec-arg in spec-arglist
+            unless (or (null arg)
+                       (string= (f90-get-parsed-type-typename arg)
+                                (f90-get-parsed-type-typename spec-arg)))
+            do (return nil)
+            finally (return t)))))
+
+;;; Internal functions
+
+(defun f90-clean-comments ()
+  "Clean Fortran 90 comments from the current buffer."
+  (save-excursion
+    (goto-char (point-min))
+    (set-syntax-table f90-mode-syntax-table)
+    (while (search-forward "!" nil t)
+      (when (nth 4 (parse-partial-sexp (line-beginning-position) (point)))
+       (delete-region (max (1- (point)) (line-beginning-position))
+                      (line-end-position))))))
+
+(defun f90-clean-continuation-lines ()
+  "Splat Fortran continuation lines in the current buffer onto one line."
+  (save-excursion
+    (goto-char (point-min))
+    (while (re-search-forward "&[ \t]*\n[ \t]*&?" nil t)
+      (replace-match "" nil t))))
+
+(defun f90-normalise-string (string)
+  "Return a suitably normalised version of STRING."
+  ;; Trim whitespace
+  (save-match-data
+    (when (string-match "\\`[ \t]+" string)
+      (setq string (replace-match "" t t string)))
+    (when (string-match "[ \t]+\\'" string)
+      (setq string (replace-match "" t t string)))
+    (downcase string)))
+
+(defun f90-get-interface (name &optional interfaces)
+  "Get the interface with NAME from INTERFACES.
+
+If INTERFACES is nil use `f90-all-interfaces' instead."
+  (gethash name (or interfaces f90-all-interfaces)))
+
+(defsetf f90-get-interface (name &optional interfaces) (val)
+  `(setf (gethash ,name (or ,interfaces f90-all-interfaces)) ,val))
+
+;;; Entry point to parsing routines
+
+(defun f90-parse-file-p (file)
+  "Return non-nil if FILE should be parsed.
+
+This checks that FILE exists and is readable, and then calls
+additional test functions from `f90-file-name-check-functions'."
+  (and (file-exists-p file)
+       (file-readable-p file)
+       (loop for test in f90-file-name-check-functions
+             unless (funcall test file)
+             do (return nil)
+             finally (return t))))
+
+(defun f90-check-fluidity-refcount (file)
+  "Return nil if FILE is that of a Fluidity refcount template."
+  (let ((fname (file-name-nondirectory file)))
+    (and (not (string-match "\\`Reference_count_interface" fname))
+         (not (string-equal "Refcount_interface_templates.F90" fname))
+         (not (string-equal "Refcount_templates.F90" fname)))))
+
+(defun f90-maybe-insert-extra-files (file)
+  "Maybe insert extra files corresponding to FILE when parsing.
+
+To actually insert extra files, customize the variable
+`f90-extra-file-functions'.  For an example insertion function
+see `f90-insert-fluidity-refcount'."
+  (let ((fname (file-name-nondirectory file)))
+    (loop for fn in f90-extra-file-functions
+          do (funcall fn file fname))))
+
+(defun f90-insert-fluidity-refcount (file fname)
+  "Insert a Fluidity reference count template for FILE.
+
+If FNAME matches \\\\`Reference_count_.*\\\\.F90 then this file
+needs a reference count interface, so insert one."
+  (when (string-match "\\`Reference_count_\\([^\\.]+\\)\\.F90" fname)
+    (insert-file-contents-literally
+     (expand-file-name
+      (format "Reference_count_interface_%s.F90"
+              (match-string 1 fname))
+      (file-name-directory file)))))
+
+(defun f90-parse-interfaces (file existing)
+  "Parse interfaces in FILE and merge into EXISTING interface data."
+  (with-temp-buffer
+    (let ((interfaces (make-hash-table :test 'equal)))
+      ;; Is this file valid for parsing
+      (when (f90-parse-file-p file)
+        (insert-file-contents-literally file)
+        ;; Does this file have other parts elsewhere?
+        (f90-maybe-insert-extra-files file)
+        ;; Easier if we don't have to worry about line wrap
+        (f90-clean-comments)
+        (f90-clean-continuation-lines)
+        (goto-char (point-min))
+        ;; Search forward for a named interface block
+        (while (re-search-forward
+                "^[ \t]*interface[ \t]+\\([^ \t\n]+\\)[ \t]*$" nil t)
+          (let* ((name (f90-normalise-string (match-string 1)))
+                 interface)
+            (unless (string= name "")
+              (setq interface (make-f90-interface :name name))
+              (save-restriction
+                ;; Figure out all the specialisers for this generic name
+                (narrow-to-region
+                 (point)
+                 (re-search-forward
+                  (format "[ \t]*end interface\\(?:[ \t]+%s\\)?[ \t]*$" name)
+                  nil t))
+                (f90-populate-specialisers interface))
+              ;; Multiple interface blocks with same name (this seems to
+              ;; be allowed).  In which case merge rather than overwrite.
+              (if (f90-get-interface name interfaces)
+                  (f90-merge-interface interface interfaces)
+                (setf (f90-get-interface name interfaces) interface)))))
+        (goto-char (point-min))
+        ;; Parse type definitions
+        (save-excursion
+          (while (re-search-forward
+                  "^[ \t]*type[ \t]+\\(?:[^ \t\n]+\\)[ \t]*$" nil t)
+            (let ((beg (match-beginning 0)))
+              (unless (re-search-forward "^[ \t]*end[ \t]+type.*$" nil t)
+                (error "Unable to find end of type definition"))
+              (save-restriction
+                (narrow-to-region beg (match-beginning 0))
+                (f90-parse-type-definition)))))
+
+        ;; Now find out if an interface is public or private to the module
+        (f90-set-public-attribute interfaces)
+
+        ;; Now find the arglists corresponding to the interface (so we
+        ;; can disambiguate) and record their location in the file.
+        (loop for interface being the hash-values of interfaces
+              do (when (f90-interface-specialisers interface)
+                   (maphash (lambda (specialiser val)
+                              (save-excursion
+                                (goto-char (point-min))
+                                (let ((thing (f90-argument-list specialiser)))
+                                  (setf (f90-specialiser-arglist
+                                         val)
+                                        (cadr thing))
+                                  (setf (f90-specialiser-location
+                                         val)
+                                        (list file (caddr thing)))
+                                  (setf (f90-specialiser-type
+                                         val)
+                                        (car thing)))))
+                            (f90-interface-specialisers interface))))
+        ;; Finally merge these new interfaces into the existing data.
+        (f90-merge-interfaces interfaces existing)))))
+
+(defun f90-merge-interface (interface interfaces)
+  "Merge INTERFACE into the existing set of INTERFACES."
+  (let ((name (f90-interface-name interface))
+        spec-name)
+    (when (f90-interface-specialisers interface)
+      (loop for val being the hash-values of
+            (f90-interface-specialisers interface)
+            do (setq spec-name (f90-specialiser-name val))
+            (setf (gethash spec-name (f90-specialisers name interfaces))
+                  val)))))
+
+(defun f90-merge-interfaces (new existing)
+  "Merge NEW interfaces into EXISTING ones."
+  (maphash (lambda (name val)
+             (if (gethash name existing)
+                 (f90-merge-interface val existing)
+               (setf (gethash name existing)
+                     val)))
+           new))
+
+(defun f90-populate-specialisers (interface)
+  "Find all specialisers for INTERFACE."
+  (save-excursion
+    (goto-char (point-min))
+    (setf (f90-interface-specialisers interface)
+          (make-hash-table :test 'equal))
+    (while (search-forward "module procedure" nil t)
+      (let ((names (buffer-substring-no-properties
+                    (point)
+                    (line-end-position))))
+        (mapc (lambda (x)
+                (setq x (f90-normalise-string x))
+                (setf (gethash x (f90-interface-specialisers interface))
+                      (make-f90-specialiser :name x)))
+              (split-string names "[, \n]+" t))))))
+
+(defun f90-set-public-attribute (interfaces)
+  "Set public/private flag on all INTERFACES."
+  (save-excursion
+    ;; Default public unless private is specified.
+    (let ((public (not (save-excursion
+                         (re-search-forward "^[ \t]*private[ \t]*$" nil t)))))
+      (while (re-search-forward (format "^[ \t]*%s[ \t]+"
+                                        (if public "private" "public"))
+                                nil t)
+        (let ((names (buffer-substring-no-properties
+                      (match-end 0)
+                      (line-end-position))))
+          ;; Set default
+          (maphash (lambda (k v)
+                     (ignore k)
+                     (setf (f90-interface-publicp v) public))
+                   interfaces)
+          ;; Override for those specified
+          (mapc (lambda (name)
+                  (let ((interface (f90-get-interface name interfaces)))
+                    (when interface
+                      (setf (f90-interface-publicp interface) (not public)))))
+                (split-string names "[, \t]" t)))))))
+
+;;; Type/arglist parsing
+(defun f90-argument-list (name)
+  "Return typed argument list of function or subroutine NAME."
+  (save-excursion
+    (when (re-search-forward
+           (format "\\(function\\|subroutine\\)[ \t]+%s[ \t]*("
+                   name)
+           nil t)
+      (let* ((point (match-beginning 0))
+             (type (match-string 1))
+             (args (f90-split-arglist (buffer-substring-no-properties
+                                       (point)
+                                       (f90-end-of-arglist)))))
+        (list type (f90-arg-types args) point)))))
+
+(defun f90-parse-type-definition ()
+  "Parse a type definition at (or in front of) `point'."
+  (let (type slots slot fn)
+    (goto-char (point-min))
+    (unless (re-search-forward "^[ \t]*type[ \t]+\\(.+?\\)[ \t]*$" nil t)
+      (error "Trying parse a type but no type found"))
+    (setq type (format "type(%s)" (f90-normalise-string (match-string 1))))
+    (while (not (eobp))
+      (setq slot (f90-parse-single-type-declaration))
+      (when slot
+        (setf slots (nconc slot slots)))
+      (forward-line 1))
+    (eval (f90-make-type-struct type slots))
+    (setq fn (intern-soft (format "make-f90-type.%s" type)))
+    (unless fn
+      (error "Something bad went wrong parsing type definition %s" type))
+    (setf (gethash type f90-types) (funcall fn))))
+
+(defun f90-make-type-struct (type slots)
+  "Create a struct describing TYPE with SLOTS."
+  (let ((struct-name (make-symbol (format "f90-type.%s" type)))
+        (varnames (reverse (mapcar (lambda (x)
+                                     (setq x (car x))
+                                     (if (string-match "\\([^(]+\\)(" x)
+                                         (match-string 1 x)
+                                       x)) slots))))
+    `(defstruct (,struct-name
+                 (:conc-name ,(make-symbol (format "f90-type.%s." type))))
+       (-varnames ',varnames :read-only t)
+       ,@(loop for (name . rest) in slots
+               collect `(,(make-symbol name) (cons ',name ',rest)
+                         :read-only t)))))
+
+(defun f90-arglist-types ()
+  "Return the types of the arguments to the function at `point'."
+  (save-excursion
+    (let* ((e (save-excursion (f90-end-of-subprogram) (point)))
+           (b (save-excursion (f90-beginning-of-subprogram) (point)))
+           (str (buffer-substring-no-properties b e))
+           (p (point))
+           names)
+      (with-temp-buffer
+        (with-syntax-table f90-mode-syntax-table
+          (insert str)
+          (goto-char (- p b))
+          (setq p (point-marker))
+          (f90-clean-continuation-lines)
+          (goto-char p)
+          (search-forward "(")
+          (setq names (f90-split-arglist (buffer-substring
+                                          (point)
+                                          (f90-end-of-arglist))))
+          (goto-char (point-min))
+          (f90-arg-types names))))))
+
+(defun f90-list-in-scope-vars ()
+  "Pop up a buffer showing all variables in scope in the procedure at `point'"
+  (interactive)
+  (let* ((e (save-excursion (f90-end-of-subprogram) (point)))
+         (b (save-excursion (f90-beginning-of-subprogram) (point)))
+         (str (buffer-substring-no-properties b e))
+         types)
+    (with-temp-buffer
+      (with-syntax-table f90-mode-syntax-table
+        (insert str)
+        (goto-char (point-min))
+        (f90-clean-comments)
+        (f90-clean-continuation-lines)
+        (forward-line 1)                ; skip procedure name
+        (let ((not-done t)
+              type)
+          (while (and not-done (not (eobp)))
+            ;; skip "implicit none" which may appear at top of procedure
+            (when (looking-at "\\s-*implicit\\s-+none")
+              (forward-line 1))
+            (when (not (looking-at "^\\s-*$"))
+              (setq type (ignore-errors (f90-parse-single-type-declaration)))
+              ;; If we were on a line with text and failed to parse a
+              ;; type, we must have reached the end of the type
+              ;; definitions, so don't push it on and finish.
+              (if type
+                  (push type types)
+                (setq not-done nil)))
+            (forward-line 1)))))
+    (with-current-buffer (get-buffer-create "*Variables in scope*")
+      (setq buffer-read-only nil)
+      (erase-buffer)
+      (f90-mode)
+      ;; Show types of the same type together
+      (setq types (sort types (lambda (x y)
+                                (string< (cadar x) (cadar y)))))
+      (loop for (type name) in types
+            do
+            (insert (format "%s :: %s\n"
+                            (f90-format-parsed-slot-type type)
+                            (f90-get-parsed-type-varname type))))
+      (pop-to-buffer (current-buffer))
+      (goto-char (point-min))
+      (setq buffer-read-only t))))
+
+(defun f90-arg-types (names)
+  "Given NAMES of arguments return their types.
+
+This works even with derived type subtypes (e.g. if A is a type(foo)
+with slot B of type REAL, then A%B is returned being a REAL)."
+  (loop for arg in names
+        for subspec = nil then nil
+        do (setq arg (f90-normalise-string arg))
+        if (string-match "\\`\\([^%]+?\\)[ \t]*%\\(.+\\)\\'" arg)
+        do (setq subspec (match-string 2 arg)
+                 arg (match-string 1 arg))
+        collect (save-excursion
+                  (save-restriction
+                    (when (re-search-forward
+                           (format "^[ \t]*\\([^!\n].+?\\)[ \t]*::.*\\<%s\\>"
+                                   arg) nil t)
+                      (goto-char (match-beginning 0))
+                      (let ((type (assoc arg
+                                         (f90-parse-single-type-declaration))))
+                        (f90-get-type-subtype type subspec)))))))
+
+(defun f90-get-type-subtype (type subspec)
+  "Return the type of TYPE possibly including slot references in SUBSPEC."
+  (cond ((null subspec)
+         type)
+        ((string-match "\\`\\([^%]+?\\)[ \t]*%\\(.+\\)\\'" subspec)
+         (f90-get-type-subtype (f90-get-slot-type (match-string 1 subspec)
+                                                  type)
+                               (match-string 2 subspec)))
+        (t
+         (f90-get-slot-type subspec type))))
+
+(defun f90-split-arglist (arglist &optional level)
+  "Split ARGLIST into words.
+
+Split based on top-level commas.  For example
+
+  (f90-split-arglist \"foo, bar, baz(quux, zot)\")
+    => (\"foo\" \"bar\" \"baz(quux, zot)\").
+
+If LEVEL is non-nil split on commas up to and including LEVEL.
+For example:
+
+  (f90-split-arglist \"foo, bar, baz(quux, zot)\" 1)
+    => (\"foo\" \"bar\" \"baz(quux\" \"zot)\")."
+  (setq level (or level 0))
+  (loop for c across arglist
+        for i = 0 then (1+ i)
+        with cur-level = 0
+        with b = 0
+        with len = (length arglist)
+        if (eq c ?\()
+        do (incf cur-level)
+        else if (eq c ?\))
+        do (decf cur-level)
+        if (and (<= cur-level level)
+                (eq c ?,))
+        collect (f90-normalise-string (substring arglist b i))
+        and do (setq b (1+ i))
+        if (and (<= cur-level level)
+                (= (1+ i) len))
+        collect (f90-normalise-string (substring arglist b))))
+
+(defun f90-end-of-arglist ()
+  "Find the end of the arglist at `point'."
+  (save-excursion
+    (let ((level 0))
+      (while (> level -1)
+        (cond ((eq (char-after) ?\()
+               (incf level))
+              ((eq (char-after) ?\))
+               (decf level))
+              (t nil))
+        (forward-char)))
+    (1- (point))))
+
+(defun f90-parse-names-list (names)
+  "Return a list of NAMES from the RHS of a :: type declaration."
+  (let ((names-list (f90-split-arglist names)))
+    (loop for name in names-list
+          if (string-match "\\`\\([^=]+\\)[ \t]*=.*\\'" name)
+          collect (f90-normalise-string (match-string 1 name))
+          else
+          collect (f90-normalise-string name))))
+
+(defun f90-parse-single-type-declaration ()
+  "Parse a single f90 type declaration at `point'.
+
+Assumes that this has the form
+  TYPENAME[, MODIFIERS]* :: NAME[, NAMES]*
+
+NAMES can optionally have initialisation attached to them which is
+dealt with correctly."
+  (when (looking-at "^[ \t]*\\(.*?\\)[ \t]*::[ \t]*\\(.*\\)$")
+    (let ((dec-orig (match-string 1))
+          (names (f90-parse-names-list (match-string 2))))
+      (loop for name in names
+            for dec = (f90-split-declaration dec-orig)
+            then (f90-split-declaration dec-orig)
+            if (string-match "\\([^(]+\\)(\\([^)]+\\))" name)
+            do (progn (if (assoc "dimension" dec)
+                          (setcdr (assoc "dimension" dec)
+                                  (1+ (f90-count-commas
+                                       (match-string 2 name))))
+                        (push (cons "dimension"
+                                    (1+ (f90-count-commas
+                                         (match-string 2 name))))
+                              dec))
+                      (setq name (match-string 1 name)))
+            collect (cons name (nreverse dec))))))
+
+(defun f90-split-declaration (dec)
+  "Split and parse a type declaration DEC.
+
+This takes the bit before the :: and returns a list of the typename
+and any modifiers."
+  (let ((things (f90-split-arglist dec)))
+    (cons (if (string-match
+               "\\([^(]+?\\)[ \t]*([ \t]*\\(:?len\\|kind\\)[ \t]*=[^)]+)"
+               (car things))
+              (match-string 1 (car things))
+            (car things))
+          (loop for thing in (cdr things)
+                if (string-match "dimension[ \t]*(\\(.+\\))" thing)
+                collect (cons "dimension"
+                              (1+ (f90-count-commas (match-string 1 thing))))
+                else
+                collect thing))))
+
+(provide 'f90-interface-browser)
+
+;;; f90-interface-browser.el ends here
diff --git a/packages/f90-interface-browser/f90-tests.el b/packages/f90-interface-browser/f90-tests.el
new file mode 100644 (file)
index 0000000..74c0dee
--- /dev/null
@@ -0,0 +1,120 @@
+;;; f90-tests.el --- Tests for f90-interface-browser
+
+;; Copyright (C) 2013  Free Software Foundation, Inc.
+
+;; This program is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(require 'cl-lib)
+
+;; FIXME: Convert to use ERT.
+
+(defvar *test-name* nil)
+
+(defvar *test-tests* (make-hash-table :test 'eq))
+
+(defvar *test-running-tests* nil)
+(defmacro deftest (name parameters &rest body)
+  "Define a test function. Within a test function we can call
+   other test functions or use 'check' to run individual test
+   cases."
+  `(prog1 ',name
+     (setf (gethash ',name *test-tests*)
+           (lambda ,parameters
+             (let ((*test-name* (append *test-name* (list ',name))))
+               ,@body)))))
+
+(defmacro test-check (&rest forms)
+  "Run each expression in 'forms' as a test case."
+  `(test-combine-results
+    ,@(cl-loop for (expr res) in forms
+               collect `(test-report-result (equal (condition-case _
+                                                       ,expr
+                                                     (error (cl-gensym)))
+                                                   ',res)
+                                            ',expr ',res))))
+
+(defmacro test-combine-results (&rest forms)
+  "Combine the results (as booleans) of evaluating 'forms' in order."
+  (let ((result (make-symbol "result")))
+    `(let ((,result t))
+       ,@(cl-loop for f in forms collect `(unless ,f (setf ,result nil)))
+       ,result)))
+
+(defun test-report-result (result res req)
+  "Report the results of a single test case. Called by 'check'."
+  (if result
+      (insert (format "%s ... %S: %S\n"
+                     (propertize "pass"
+                                 'face '(:weight bold :foreground "green"))
+                     *test-name* res))
+    (insert (format "%s ... %S: %S is not %S\n"
+                   (propertize "FAIL"
+                               'face '(:weight bold :foreground "red"))
+                   *test-name*
+                   res req)))
+  result)
+
+(defun test-run-test (name)
+  (with-current-buffer (get-buffer-create "*test-results*")
+    (unless *test-running-tests*
+      (erase-buffer))
+    (let ((*test-running-tests* t))
+      (funcall (gethash name *test-tests*)))
+    (pop-to-buffer (current-buffer))))
+
+(deftest type-modifiers ()
+  (test-check
+   ((f90-split-declaration "integer") ("integer"))
+   ((f90-split-declaration "integer, pointer") ("integer" "pointer"))
+   ((f90-split-declaration "integer (kind = c_int(8)   )") ("integer"))
+   ((f90-split-declaration "character(len=*)") ("character"))
+   ((f90-split-declaration "integer, dimension(:)")
+    ("integer" ("dimension" . 1)))))
+
+(deftest parse-declaration ()
+  (cl-flet ((fun (str) (with-temp-buffer
+                         (insert str)
+                         (goto-char (point-min))
+                         (f90-parse-single-type-declaration))))
+    (test-check
+     ((fun "integer :: name") (("name" "integer")))
+     ((fun "integer :: name1, name2") (("name1" "integer")
+                                       ("name2" "integer")))
+     ((fun "integer, dimension(:) :: name1, name2(:, :)") (("name1" "integer"
+                                                            ("dimension" . 1))
+                                                           ("name2" "integer"
+                                                            ("dimension" . 2))))
+     ((fun "integer, pointer :: name(:, :)") (("name" "integer" "pointer"
+                                               ("dimension" . 2))))
+     ((fun "integer, pointer :: NAmE => null()") (("name" "integer" "pointer"))))))
+
+
+(deftest splits ()
+  (test-check
+   ((f90-count-commas ",") 1)
+   ((f90-count-commas "(,)") 0)
+   ((f90-count-commas "a, b, size(c, d)") 2)
+   ((f90-count-commas "a, b, size(c, d)" 1) 3)
+   ((f90-split-arglist "a,B") ("a" "b"))
+   ((f90-split-arglist "foo, dimension(1, size(a, b))")
+    ("foo" "dimension(1, size(a, b))"))
+   ((f90-parse-names-list "a=1, B=>null()") ("a" "b"))))
+   
+(deftest all ()
+  (test-combine-results
+   (test-run-test 'type-modifiers)
+   (test-run-test 'parse-declaration)
+   (test-run-test 'splits)))
diff --git a/packages/ggtags/Makefile b/packages/ggtags/Makefile
new file mode 100644 (file)
index 0000000..02fbd33
--- /dev/null
@@ -0,0 +1,12 @@
+.PHONY: all clean
+
+ELCFILES = $(addsuffix .elc, $(basename $(wildcard *.el)))
+
+all: $(ELCFILES)
+
+%.elc : %.el
+       @echo Compiling $<
+       @emacs -batch -q -no-site-file -f batch-byte-compile $<
+
+clean:
+       @rm -f *.elc
diff --git a/packages/ggtags/README.rst b/packages/ggtags/README.rst
new file mode 100644 (file)
index 0000000..4b0f84b
--- /dev/null
@@ -0,0 +1,111 @@
+=========================
+ Use GNU Global in Emacs
+=========================
+
+A package for working with `GNU Global
+<http://www.gnu.org/software/global>`_ source tagging system in Emacs.
+
+This package is part of `GNU ELPA <http://elpa.gnu.org>`_
+(``M-x list-packages``).
+
+Patches, feature requests and bug reports are welcome. Thanks.
+
+Features
+~~~~~~~~
+
+#. Automatically update Global's tag files when needed with tuning for
+   large source trees.
+#. Build on ``compile.el`` for asynchronicity and its large
+   feature-set.
+#. Intuitive navigation among multiple matches with mode-line display
+   of current match, total matches and exit status.
+#. Manage Global's environment variables on a per-project basis.
+#. Support all Global search backends: ``grep``, ``idutils`` etc.
+#. Query replace.
+#. Highlight (definition) tag at point.
+#. Abbreviated display of file names.
+#. Support `exuberant ctags <http://ctags.sourceforge.net/>`_ backend.
+#. Support all Global's output formats: ``grep``, ``ctags-x``,
+   ``cscope`` etc.
+
+Why GNU Global
+~~~~~~~~~~~~~~
+
+The opengrok project composed a feature comparison `table
+<https://github.com/OpenGrok/OpenGrok/wiki/Comparison-with-Similar-Tools>`_
+between a few tools.
+
+Screenshot
+~~~~~~~~~~
+
+.. figure:: http://i.imgur.com/lwED3aD.png
+   :width: 500px
+   :target: http://i.imgur.com/lwED3aD.png
+   :alt: ggtags.png
+
+Config
+~~~~~~
+
+Enable ``ggtags-mode`` for C/C++/Java modes::
+
+    (add-hook 'c-mode-common-hook
+              (lambda ()
+                (when (derived-mode-p 'c-mode 'c++-mode 'java-mode)
+                  (ggtags-mode 1))))
+
+More languages/modes are supported if `GNU Global
+<http://www.gnu.org/software/global>`_ is compiled with
+``--with-exuberant-ctags`` to support `exuberant ctags
+<http://ctags.sourceforge.net/>`_. Also set the environment variable
+``GTAGSCONF`` to the correct location of ``gtags.conf``. For example::
+
+  export GTAGSCONF=/usr/local/share/gtags/gtags.conf
+
+See ``plugin-factory/README`` in GNU Global source for further
+information.
+
+Also see https://github.com/leoliu/ggtags/wiki for more examples.
+
+Tutorial
+~~~~~~~~
+
+Type ``M-x ggtags-mode`` to enable the minor mode, or as usual enable
+it in your desired major mode hooks. When the mode is on the symbol at
+point is underlined if it is a valid (definition) tag.
+
+``M-.`` finds definitions or references according to the tag at point,
+i.e. if point is at a definition tag find references and vice versa.
+``M-]`` finds references.
+
+If multiple matches are found, navigation mode is entered, the
+mode-line lighter changed, and a navigation menu-bar entry presented.
+In this mode, ``M-n`` and ``M-p`` moves to next and previous match,
+``M-}`` and ``M-{`` to next and previous file respectively. ``M-o``
+toggles between full and abbreviated displays of file names in the
+auxiliary popup window. When you locate the right match, press RET to
+finish which hides the auxiliary window and exits navigation mode. You
+can continue the search using ``M-,``. To abort the search press
+``M-*``.
+
+Normally after a few searches a dozen buffers are created visiting
+files tracked by GNU Global. ``C-c M-k`` helps clean them up.
+
+Check the menu-bar entry ``Ggtags`` for other useful commands.
+
+Development
+~~~~~~~~~~~
+
+The goal is to make working with GNU Global in Emacs as effortlessly
+and intuitively as possible.
+
+Bugs
+~~~~
+
+https://github.com/leoliu/ggtags/issues
+
+known problems
+++++++++++++++
+
+When there is only one match a window is still popped up to be closed
+immediately due to a `bug <http://debbugs.gnu.org/13594>`_ in
+``compile.el``.
diff --git a/packages/ggtags/ggtags.el b/packages/ggtags/ggtags.el
new file mode 100644 (file)
index 0000000..f189165
--- /dev/null
@@ -0,0 +1,1142 @@
+;;; ggtags.el --- GNU Global source code tagging system  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2013  Free Software Foundation, Inc.
+
+;; Author: Leo Liu <sdl.web@gmail.com>
+;; Version: 0.7.2
+;; Keywords: tools, convenience
+;; Created: 2013-01-29
+;; URL: https://github.com/leoliu/ggtags
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; A package to integrate GNU Global source code tagging system
+;; (http://www.gnu.org/software/global) with Emacs.
+;;
+;; Usage:
+;;
+;; Type `M-x ggtags-mode' to enable the minor mode, or as usual enable
+;; it in your desired major mode hooks. When the mode is on the symbol
+;; at point is underlined if it is a valid (definition) tag.
+;;
+;; `M-.' finds definition or references according to the context at
+;; point, i.e. if point is at a definition tag find references and
+;; vice versa. `M-]' finds references.
+;;
+;; If multiple matches are found, navigation mode is entered, the
+;; mode-line lighter changed, and a navigation menu-bar entry
+;; presented. In this mode, `M-n' and `M-p' moves to next and previous
+;; match, `M-}' and `M-{' to next and previous file respectively.
+;; `M-o' toggles between full and abbreviated displays of file names
+;; in the auxiliary popup window. When you locate the right match,
+;; press RET to finish which hides the auxiliary window and exits
+;; navigation mode. You can continue the search using `M-,'. To abort
+;; the search press `M-*'.
+;;
+;; Normally after a few searches a dozen buffers are created visiting
+;; files tracked by GNU Global. `C-c M-k' helps clean them up.
+;;
+;; Check the menu-bar entry `Ggtags' for other useful commands.
+
+;;; Code:
+
+(eval-when-compile
+  (require 'cl)
+  (require 'url-parse))
+
+(require 'compile)
+
+(eval-when-compile
+  (unless (fboundp 'setq-local)
+    (defmacro setq-local (var val)
+      (list 'set (list 'make-local-variable (list 'quote var)) val)))
+
+  (unless (fboundp 'defvar-local)
+    (defmacro defvar-local (var val &optional docstring)
+      (declare (debug defvar) (doc-string 3))
+      (list 'progn (list 'defvar var val docstring)
+            (list 'make-variable-buffer-local (list 'quote var))))))
+
+(eval-and-compile
+  (or (fboundp 'user-error)
+      (defalias 'user-error 'error)))
+
+(defgroup ggtags nil
+  "GNU Global source code tagging system."
+  :group 'tools)
+
+(defface ggtags-highlight '((t (:underline t)))
+  "Face used to highlight a valid tag at point."
+  :group 'ggtags)
+
+(defface ggtags-global-line '((t (:inherit secondary-selection)))
+  "Face used to highlight matched line in Global buffer."
+  :group 'ggtags)
+
+(defcustom ggtags-oversize-limit (* 50 1024 1024)
+  "The over size limit for the  GTAGS file.
+For large source trees, running 'global -u' can be expensive.
+Thus when GTAGS file is larger than this limit, ggtags
+automatically switches to 'global --single-update'."
+  :safe 'numberp
+  :type '(choice (const :tag "None" nil)
+                 (const :tag "Always" t)
+                 number)
+  :group 'ggtags)
+
+(defcustom ggtags-process-environment nil
+  "Similar to `process-environment' with higher precedence.
+Elements are run through `substitute-env-vars' before use.
+This is intended for project-wise ggtags-specific process
+environment settings."
+  :safe 'ggtags-list-of-string-p
+  :type '(repeat string)
+  :group 'ggtags)
+
+(defcustom ggtags-auto-jump-to-first-match t
+  "Non-nil to automatically jump to the first match."
+  :type 'boolean
+  :group 'ggtags)
+
+(defcustom ggtags-global-window-height 8 ; ggtags-global-mode
+  "Number of lines for the 'global' popup window.
+If nil, use Emacs default."
+  :type '(choice (const :tag "Default" nil) integer)
+  :group 'ggtags)
+
+(defcustom ggtags-global-abbreviate-filename 35
+  "Non-nil to display file names abbreviated e.g. \"/u/b/env\".
+If an integer abbreviate only names longer than that number."
+  :type '(choice (const :tag "No" nil)
+                 (const :tag "Always" t)
+                 integer)
+  :group 'ggtags)
+
+(defcustom ggtags-split-window-function split-window-preferred-function
+  "A function to control how ggtags pops up the auxiliary window."
+  :type 'function
+  :group 'ggtags)
+
+(defcustom ggtags-use-idutils (and (executable-find "mkid") t)
+  "Non-nil to also generate the idutils DB."
+  :type 'boolean
+  :group 'ggtags)
+
+(defcustom ggtags-global-output-format 'grep
+  "The output format for the 'global' command."
+  :type '(choice (const path)
+                 (const ctags)
+                 (const ctags-x)
+                 (const grep)
+                 (const cscope))
+  :group 'ggtags)
+
+(defcustom ggtags-global-ignore-case nil
+  "Non-nil if Global should ignore case."
+  :safe 'booleanp
+  :type 'boolean
+  :group 'ggtags)
+
+(defcustom ggtags-global-treat-text nil
+  "Non-nil if Global should include matches from text files."
+  :safe 'booleanp
+  :type 'boolean
+  :group 'ggtags)
+
+(defcustom ggtags-mode-prefix-key "\C-c"
+  "Key binding used for `ggtags-mode-prefix-map'.
+Users should change the value using `customize-variable' to
+properly update `ggtags-mode-map'."
+  :set (lambda (sym value)
+         (when (bound-and-true-p ggtags-mode-map)
+           (let ((old (and (boundp sym) (symbol-value sym))))
+             (and old (define-key ggtags-mode-map old nil)))
+           (and value
+                (bound-and-true-p ggtags-mode-prefix-map)
+                (define-key ggtags-mode-map value ggtags-mode-prefix-map)))
+         (set-default sym value))
+  :type 'key-sequence
+  :group 'ggtags)
+
+(defcustom ggtags-completing-read-function completing-read-function
+  "Ggtags specific `completing-read-function' (which see)."
+  :type 'function
+  :group 'ggtags)
+
+(defcustom ggtags-highlight-tag-delay 0.25
+  "Time in seconds before highlighting tag at point."
+  :set (lambda (sym value)
+         (when (bound-and-true-p ggtags-highlight-tag-timer)
+           (timer-set-idle-time ggtags-highlight-tag-timer value t))
+         (set-default sym value))
+  :type 'number
+  :group 'ggtags)
+
+(defcustom ggtags-bounds-of-tag-function (lambda ()
+                                           (bounds-of-thing-at-point 'symbol))
+  "Function to get the start and end locations of the tag at point."
+  :type 'function
+  :group 'ggtags)
+
+(defvar ggtags-bug-url "https://github.com/leoliu/ggtags/issues")
+
+(defvar ggtags-global-last-buffer nil)
+
+(defvar ggtags-current-tag-name nil)
+
+;; Used by ggtags-global-mode
+(defvar ggtags-global-error "match"
+  "Stem of message to print when no matches are found.")
+
+;; http://thread.gmane.org/gmane.comp.gnu.global.bugs/1518
+(defvar ggtags-global-has-path-style    ; introduced in global 6.2.8
+  (with-demoted-errors                  ; in case `global' not found
+    (zerop (process-file "global" nil nil nil
+                         "--path-style" "shorter" "--help")))
+  "Non-nil if `global' supports --path-style switch.")
+
+;; http://thread.gmane.org/gmane.comp.gnu.global.bugs/1542
+(defvar ggtags-global-has-color
+  (with-demoted-errors
+    (zerop (process-file "global" nil nil nil "--color" "--help"))))
+
+(defmacro ggtags-ensure-global-buffer (&rest body)
+  (declare (indent 0))
+  `(progn
+     (or (and (buffer-live-p ggtags-global-last-buffer)
+              (with-current-buffer ggtags-global-last-buffer
+                (derived-mode-p 'ggtags-global-mode)))
+         (error "No global buffer found"))
+     (with-current-buffer ggtags-global-last-buffer ,@body)))
+
+(defmacro ggtags-with-process-environment (&rest body)
+  (declare (debug t))
+  `(let ((process-environment
+          (append (mapcar #'substitute-env-vars ggtags-process-environment)
+                  process-environment
+                  (and (ggtags-find-project)
+                       (not (ggtags-project-has-rtags (ggtags-find-project)))
+                       (list "GTAGSLABEL=ctags")))))
+     ,@body))
+
+(defun ggtags-list-of-string-p (xs)
+  "Return non-nil if XS is a list of strings."
+  (if (null xs)
+      t
+    (and (stringp (car xs))
+         (ggtags-list-of-string-p (cdr xs)))))
+
+(defun ggtags-get-libpath ()
+  (let ((path (ggtags-with-process-environment (getenv "GTAGSLIBPATH"))))
+    (and path (split-string path (regexp-quote path-separator) t))))
+
+(defun ggtags-process-string (program &rest args)
+  (with-temp-buffer
+    (let ((exit (apply #'process-file program nil t nil args))
+          (output (progn
+                    (goto-char (point-max))
+                    (skip-chars-backward " \t\n")
+                    (buffer-substring (point-min) (point)))))
+      (or (zerop exit)
+          (error "`%s' non-zero exit: %s" program output))
+      output)))
+
+(defun ggtags-tag-at-point ()
+  (let ((bounds (funcall ggtags-bounds-of-tag-function)))
+    (and bounds (buffer-substring (car bounds) (cdr bounds)))))
+
+;;; Store for project settings
+
+(defvar ggtags-projects (make-hash-table :size 7 :test #'equal))
+
+(defstruct (ggtags-project (:constructor ggtags-project--make)
+                           (:copier nil)
+                           (:type vector)
+                           :named)
+  root dirty-p has-rtags oversize-p)
+
+(defun ggtags-make-project (root)
+  (check-type root string)
+  (let* ((default-directory (file-truename (file-name-as-directory root)))
+         (rtags-size (nth 7 (file-attributes "GRTAGS")))
+         (has-rtags (when rtags-size
+                      (or (> rtags-size (* 32 1024))
+                          (with-demoted-errors
+                            (> (length
+                                (split-string
+                                 (ggtags-process-string "gtags" "-d" "GRTAGS")
+                                 "\n" t))
+                               4)))))
+         (oversize-p (pcase ggtags-oversize-limit
+                       (`nil nil)
+                       (`t t)
+                       (t (> (or (nth 7 (file-attributes "GTAGS")) 0)
+                             ggtags-oversize-limit)))))
+    (puthash default-directory (ggtags-project--make
+                                :root default-directory :has-rtags has-rtags
+                                :oversize-p oversize-p)
+             ggtags-projects)))
+
+(defvar-local ggtags-project 'unset)
+
+;;;###autoload
+(defun ggtags-find-project ()
+  (if (ggtags-project-p ggtags-project)
+      ggtags-project
+    (let ((root (ignore-errors (file-name-as-directory
+                                (ggtags-process-string "global" "-pr")))))
+      (setq ggtags-project
+            (and root (or (gethash (file-truename root) ggtags-projects)
+                          (ggtags-make-project root)))))))
+
+(defun ggtags-current-project-root ()
+  (and (ggtags-find-project)
+       (ggtags-project-root (ggtags-find-project))))
+
+(defun ggtags-check-project ()
+  (or (ggtags-find-project) (error "File GTAGS not found")))
+
+(defun ggtags-save-project-settings (&optional confirm)
+  "Save Gnu Global's specific environment variables."
+  (interactive "P")
+  (ggtags-check-project)
+  (let* ((default-directory (ggtags-current-project-root))
+         ;; Not using `ggtags-with-process-environment' to preserve
+         ;; environment variables that may be present in
+         ;; `ggtags-process-environment'.
+         (process-environment
+          (append ggtags-process-environment
+                  process-environment
+                  (and (not (ggtags-project-has-rtags (ggtags-find-project)))
+                       (list "GTAGSLABEL=ctags"))))
+         (envlist (loop for x in '("GTAGSROOT"
+                                   "GTAGSDBPATH"
+                                   "GTAGSLIBPATH"
+                                   "GTAGSCONF"
+                                   "GTAGSLABEL"
+                                   "MAKEOBJDIRPREFIX"
+                                   "GTAGSTHROUGH"
+                                   "GTAGSBLANKENCODE")
+                        when (getenv x)
+                        collect (concat x "=" (getenv x)))))
+    (add-dir-local-variable nil 'ggtags-process-environment envlist)
+    (unless confirm (save-buffer) (kill-buffer))))
+
+(defun ggtags-ensure-project ()
+  (interactive)
+  (or (ggtags-find-project)
+      (when (or (yes-or-no-p "File GTAGS not found; run gtags? ")
+                (user-error "Aborted"))
+        (let ((root (read-directory-name "Directory: " nil nil t)))
+          (and (zerop (length root)) (user-error "No directory chosen"))
+          (when (ggtags-with-process-environment
+                 (let ((process-environment
+                        (if (and (not (getenv "GTAGSLABEL"))
+                                 (yes-or-no-p "Use `ctags' backend? "))
+                            (cons "GTAGSLABEL=ctags" process-environment)
+                          process-environment))
+                       (default-directory (file-name-as-directory root)))
+                   (and (apply #'ggtags-process-string
+                               "gtags" (and ggtags-use-idutils '("--idutils")))
+                        (ggtags-make-project root)
+                        t)))
+            (message "GTAGS generated in `%s'" root))))))
+
+(defun ggtags-update-tags (&optional force)
+  "Update GNU Global tag database."
+  (interactive "P")
+  (when (or force (and (ggtags-find-project)
+                       (ggtags-project-dirty-p (ggtags-find-project))))
+    (ggtags-with-process-environment
+     (with-temp-message "Running `global -u'"
+       (ggtags-process-string "global" "-u")
+       (setf (ggtags-project-dirty-p (ggtags-find-project)) nil)))))
+
+(defvar ggtags-completion-table
+  (let (cache)
+    (completion-table-dynamic
+     (lambda (prefix)
+       (when (and (ggtags-find-project)
+                  (not (ggtags-project-oversize-p (ggtags-find-project))))
+         (ggtags-update-tags))
+       (unless (equal prefix (car cache))
+         (setq cache
+               (cons prefix
+                     (ggtags-with-process-environment
+                      (split-string
+                       (apply #'ggtags-process-string
+                              "global"
+                              ;; Note -c alone returns only definitions
+                              (if completion-ignore-case
+                                  (list "--ignore-case" "-Tc" prefix)
+                                (list "-Tc" prefix)))
+                       "\n" t)))))
+       (cdr cache)))))
+
+(defun ggtags-read-tag ()
+  (ggtags-ensure-project)
+  (let ((default (ggtags-tag-at-point))
+        (completing-read-function ggtags-completing-read-function))
+    (setq ggtags-current-tag-name
+          (cond (current-prefix-arg
+                 (completing-read
+                  (format (if default "Tag (default %s): " "Tag: ") default)
+                  ggtags-completion-table nil t nil nil default))
+                ((not default)
+                 (user-error "No tag at point"))
+                (t (substring-no-properties default))))))
+
+(defun ggtags-global-build-command (cmd &rest args)
+  ;; CMD can be definition, reference, symbol, grep, idutils
+  (let ((xs (append (list "global" "-v"
+                          (format "--result=%s" ggtags-global-output-format)
+                          (and ggtags-global-ignore-case "--ignore-case")
+                          (and ggtags-global-has-color "--color")
+                          (and ggtags-global-has-path-style
+                               "--path-style=shorter")
+                          (and ggtags-global-treat-text "--other")
+                          (pcase cmd
+                            ((pred stringp) cmd)
+                            (`definition "-d")
+                            (`reference "-r")
+                            (`symbol "-s")
+                            (`grep "--grep")
+                            (`idutils "--idutils")))
+                    args)))
+    (mapconcat 'identity (delq nil xs) " ")))
+
+;; takes three values: nil, t and a marker
+(defvar ggtags-global-start-marker nil)
+
+(defvar ggtags-global-exit-status 0)
+(defvar ggtags-global-match-count 0)
+
+(defun ggtags-global-save-start-marker ()
+  (when (markerp ggtags-global-start-marker)
+    (eval-and-compile (require 'etags))
+    (ring-insert find-tag-marker-ring ggtags-global-start-marker)
+    (setq ggtags-global-start-marker t)))
+
+(defun ggtags-global-start (command &optional root)
+  (let* ((default-directory (or root (ggtags-current-project-root)))
+         (split-window-preferred-function ggtags-split-window-function))
+    (setq ggtags-global-start-marker (point-marker))
+    (ggtags-navigation-mode +1)
+    (setq ggtags-global-exit-status 0
+          ggtags-global-match-count 0)
+    (ggtags-with-process-environment
+     (setq ggtags-global-last-buffer
+           (compilation-start command 'ggtags-global-mode)))))
+
+(defun ggtags-find-tag-continue ()
+  (interactive)
+  (ggtags-navigation-mode +1)
+  (ggtags-ensure-global-buffer
+    (let ((split-window-preferred-function ggtags-split-window-function))
+      (ignore-errors (compilation-next-error 1))
+      (compile-goto-error))))
+
+(defun ggtags-find-tag (cmd name)
+  (ggtags-check-project)
+  (ggtags-global-start (ggtags-global-build-command cmd name)))
+
+;;;###autoload
+(defun ggtags-find-tag-dwim (name &optional definition)
+  "Find definitions or references of tag NAME by context.
+If point is at a definition tag, find references, and vice versa.
+With a prefix arg (non-nil DEFINITION) always find defintions."
+  (interactive (list (ggtags-read-tag) current-prefix-arg))
+  (if (or definition
+          (not buffer-file-name)
+          (and (ggtags-find-project)
+               (not (ggtags-project-has-rtags (ggtags-find-project)))))
+      (ggtags-find-tag 'definition name)
+    (ggtags-find-tag (format "--from-here=%d:%s"
+                             (line-number-at-pos)
+                             (shell-quote-argument
+                              (file-truename buffer-file-name)))
+                     name)))
+
+(defun ggtags-find-reference (name)
+  (interactive (list (ggtags-read-tag)))
+  (ggtags-find-tag 'reference name))
+
+(defun ggtags-find-other-symbol (name)
+  "Find tag NAME wchi is a reference without a definition."
+  (interactive (list (ggtags-read-tag)))
+  (ggtags-find-tag 'symbol name))
+
+(defun ggtags-read-string (prompt)
+  "Like `read-string' but handle default automatically."
+  (ggtags-ensure-project)
+  (let ((prompt (if (string-match ": *\\'" prompt)
+                    (substring prompt 0 (match-beginning 0))
+                  prompt))
+        (default (ggtags-tag-at-point)))
+    (read-string (format (if default "%s (default `%s'): "
+                           "%s: ")
+                         prompt default)
+                 nil nil (and default (substring-no-properties default)))))
+
+(defun ggtags-grep (pattern &optional invert-match)
+  "Use `global --grep' to search for lines matching PATTERN.
+Invert the match when called with a prefix arg \\[universal-argument]."
+  (interactive (list (ggtags-read-string (if current-prefix-arg
+                                             "Grep inverted pattern"
+                                           "Grep pattern"))
+                     current-prefix-arg))
+  (ggtags-find-tag 'grep (format "%s--regexp %S"
+                                 (if invert-match "--invert-match " "")
+                                 pattern)))
+
+(defun ggtags-idutils-query (pattern)
+  (interactive (list (ggtags-read-string "ID query pattern")))
+  (ggtags-find-tag 'idutils (format "--regexp %S" pattern)))
+
+;; NOTE: Coloured output in grep requested: http://goo.gl/Y9IcX
+(defun ggtags-find-tag-regexp (regexp directory)
+  "List tags matching REGEXP in DIRECTORY (default to project root)."
+  (interactive
+   (list (ggtags-read-string "POSIX regexp")
+         (if current-prefix-arg
+             (read-directory-name "Directory: " nil nil t)
+           (ggtags-current-project-root))))
+  (ggtags-check-project)
+  (let ((root (file-name-as-directory directory))
+        (cmd (ggtags-global-build-command
+              nil nil "-l" "--regexp" (prin1-to-string regexp))))
+    (ggtags-global-start cmd root)))
+
+(defun ggtags-query-replace (from to &optional delimited)
+  "Query replace FROM with TO on files in the Global buffer.
+If not in navigation mode, do a grep on FROM first.
+
+Note: the regular expression FROM must be supported by both
+Global and Emacs."
+  (interactive (query-replace-read-args "Query replace (regexp)" t t))
+  (unless (bound-and-true-p ggtags-navigation-mode)
+    (let ((ggtags-auto-jump-to-first-match nil))
+      (ggtags-grep from)))
+  (let ((file-form
+         '(let ((files))
+            (ggtags-ensure-global-buffer
+              (with-temp-message "Waiting for Grep to finish..."
+                (while (get-buffer-process (current-buffer))
+                  (sit-for 0.2)))
+              (goto-char (point-min))
+              (while (ignore-errors (compilation-next-file 1) t)
+                (let ((m (get-text-property (point) 'compilation-message)))
+                  (push (expand-file-name
+                         (caar (compilation--loc->file-struct
+                                (compilation--message->loc m))))
+                        files))))
+            (ggtags-navigation-mode -1)
+            (nreverse files))))
+    (tags-query-replace from to delimited file-form)))
+
+(defun ggtags-delete-tag-files ()
+  "Delete the tag files generated by gtags."
+  (interactive)
+  (when (ggtags-current-project-root)
+    (let ((files (directory-files (ggtags-current-project-root) t
+                                  (regexp-opt '("GPATH" "GRTAGS" "GTAGS" "ID"))))
+          (buffer "*GTags File List*"))
+      (or files (user-error "No tag files found"))
+      (with-output-to-temp-buffer buffer
+        (dolist (file files)
+          (princ file)
+          (princ "\n")))
+      (let ((win (get-buffer-window buffer)))
+        (unwind-protect
+            (progn
+              (fit-window-to-buffer win)
+              (when (yes-or-no-p "Remove GNU Global tag files? ")
+                (mapc 'delete-file files)
+                (remhash (ggtags-current-project-root) ggtags-projects)
+                (kill-local-variable 'ggtags-project)))
+          (when (window-live-p win)
+            (quit-window t win)))))))
+
+(defun ggtags-browse-file-as-hypertext (file)
+  "Browse FILE in hypertext (HTML) form."
+  (interactive (list (if (or current-prefix-arg (not buffer-file-name))
+                         (read-file-name "Browse file: " nil nil t)
+                       buffer-file-name)))
+  (or (and file (file-exists-p file)) (error "File `%s' doesn't exist" file))
+  (ggtags-check-project)
+  (or (file-exists-p (expand-file-name "HTML" (ggtags-current-project-root)))
+      (if (yes-or-no-p "No hypertext form exists; run htags? ")
+          (let ((default-directory (ggtags-current-project-root)))
+            (ggtags-with-process-environment (ggtags-process-string "htags")))
+        (user-error "Aborted")))
+  (let ((url (ggtags-process-string
+              "gozilla" "-p" (format "+%d" (line-number-at-pos)) file)))
+    (or (equal (file-name-extension
+                (url-filename (url-generic-parse-url url))) "html")
+        (user-error "No hypertext form for `%s'" file))
+    (when (called-interactively-p 'interactive)
+      (message "Browsing %s" url))
+    (browse-url url)))
+
+(defvar ggtags-current-mark nil)
+
+(defun ggtags-next-mark (&optional arg)
+  "Move to the next (newer) mark in the tag marker ring."
+  (interactive)
+  (and (zerop (ring-length find-tag-marker-ring))
+       (user-error "No %s mark" (if arg "previous" "next")))
+  (let ((mark (or (and ggtags-current-mark
+                       ;; Note `ring-previous' gets newer item.
+                       (funcall (if arg #'ring-next #'ring-previous)
+                                find-tag-marker-ring ggtags-current-mark))
+                  (prog1
+                      (ring-ref find-tag-marker-ring (if arg 0 -1))
+                    (ring-insert find-tag-marker-ring (point-marker))))))
+    (setq ggtags-current-mark mark)
+    (let ((i (- (ring-length find-tag-marker-ring)
+                (ring-member find-tag-marker-ring ggtags-current-mark)))
+          (message-log-max nil))
+      (message "%d%s marker" i (pcase i
+                                 (1 "st")
+                                 (2 "nd")
+                                 (3 "rd")
+                                 (_ "th"))))
+    (switch-to-buffer (marker-buffer mark))
+    (goto-char mark)))
+
+(defun ggtags-prev-mark ()
+  "Move to the previous (older) mark in the tag marker ring."
+  (interactive)
+  (ggtags-next-mark 'previous))
+
+(defun ggtags-global-exit-message-function (_process-status exit-status msg)
+  (setq ggtags-global-exit-status exit-status)
+  (let ((count (save-excursion
+                 (goto-char (point-max))
+                 (if (re-search-backward "^\\([0-9]+\\) \\w+ located" nil t)
+                     (string-to-number (match-string 1))
+                   0))))
+    (setq ggtags-global-match-count count)
+    ;; Clear the start marker in case of zero matches.
+    (and (zerop count) (setq ggtags-global-start-marker nil))
+    (cons (if (> exit-status 0)
+              msg
+            (format "found %d %s" count (if (= count 1) "match" "matches")))
+          exit-status)))
+
+;;; NOTE: Must not match the 'Global started at Mon Jun 3 10:24:13'
+;;; line or `compilation-auto-jump' will jump there and fail. See
+;;; comments before the 'gnu' entry in
+;;; `compilation-error-regexp-alist-alist'.
+(defvar ggtags-global-error-regexp-alist-alist
+  (append
+   '((path "^\\(?:[^/\n]*/\\)?[^ )\t\n]+$" 0)
+     ;; ACTIVE_ESCAPE  src/dialog.cc   172
+     (ctags "^\\([^ \t\n]+\\)[ \t]+\\(.*?\\)[ \t]+\\([0-9]+\\)$"
+            2 3 nil nil 2 (1 font-lock-function-name-face))
+     ;; ACTIVE_ESCAPE     172 src/dialog.cc    #undef ACTIVE_ESCAPE
+     (ctags-x "^\\([^ \t\n]+\\)[ \t]+\\([0-9]+\\)[ \t]+\\(\\(?:[^/\n]*/\\)?[^ \t\n]+\\)"
+              3 2 nil nil 3 (1 font-lock-function-name-face))
+     ;; src/dialog.cc:172:#undef ACTIVE_ESCAPE
+     (grep "^\\(.+?\\):\\([0-9]+\\):\\(?:$\\|[^0-9\n]\\|[0-9][^0-9\n]\\|[0-9][0-9].\\)"
+           1 2 nil nil 1)
+     ;; src/dialog.cc ACTIVE_ESCAPE 172 #undef ACTIVE_ESCAPE
+     (cscope "^\\(.+?\\)[ \t]+\\([^ \t\n]+\\)[ \t]+\\([0-9]+\\).*\\(?:[^0-9\n]\\|[^0-9\n][0-9]\\|[^:\n][0-9][0-9]\\)$"
+             1 3 nil nil 1 (2 font-lock-function-name-face)))
+   compilation-error-regexp-alist-alist))
+
+(defun ggtags-abbreviate-file (start end)
+  (let ((inhibit-read-only t)
+        (amount (if (numberp ggtags-global-abbreviate-filename)
+                    (- (- end start) ggtags-global-abbreviate-filename)
+                  999))
+        (advance-word (lambda ()
+                        "Return the length of the text made invisible."
+                        (let ((wend (min end (progn (forward-word 1) (point))))
+                              (wbeg (max start (progn (backward-word 1) (point)))))
+                          (goto-char wend)
+                          (if (<= (- wend wbeg) 1)
+                              0
+                            (put-text-property (1+ wbeg) wend 'invisible t)
+                            (1- (- wend wbeg)))))))
+    (goto-char start)
+    (while (and (> amount 0) (> end (point)))
+      (decf amount (funcall advance-word)))))
+
+(defun ggtags-abbreviate-files (start end)
+  (goto-char start)
+  (let* ((error-re (cdr (assq ggtags-global-output-format
+                              ggtags-global-error-regexp-alist-alist)))
+         (sub (cadr error-re)))
+    (when (and ggtags-global-abbreviate-filename error-re)
+      (while (re-search-forward (car error-re) end t)
+        (when (and (or (not (numberp ggtags-global-abbreviate-filename))
+                       (> (length (match-string sub))
+                          ggtags-global-abbreviate-filename))
+                   ;; Ignore bogus file lines such as:
+                   ;;     Global found 2 matches at Thu Jan 31 13:45:19
+                   (get-text-property (match-beginning sub) 'compilation-message))
+          (ggtags-abbreviate-file (match-beginning sub) (match-end sub)))))))
+
+(defun ggtags-global-filter ()
+  "Called from `compilation-filter-hook' (which see)."
+  (ansi-color-apply-on-region compilation-filter-start (point)))
+
+(defun ggtags-handle-single-match (buf _how)
+  (when (and ggtags-auto-jump-to-first-match
+             ;; If exit abnormally keep the window for inspection.
+             (zerop ggtags-global-exit-status)
+             (save-excursion
+               (goto-char (point-min))
+               (not (ignore-errors
+                      (goto-char (compilation-next-single-property-change
+                                  (point) 'compilation-message))
+                      (end-of-line)
+                      (compilation-next-single-property-change
+                       (point) 'compilation-message)))))
+    (ggtags-navigation-mode -1)
+    ;; 0.5s delay for `ggtags-auto-jump-to-first-match'
+    (sit-for 0)                    ; See: http://debbugs.gnu.org/13829
+    (ggtags-navigation-mode-cleanup buf 0.5)))
+
+(defvar ggtags-global-mode-font-lock-keywords
+  '(("^Global \\(exited abnormally\\|interrupt\\|killed\\|terminated\\)\\(?:.*with code \\([0-9]+\\)\\)?.*"
+     (1 'compilation-error)
+     (2 'compilation-error nil t))
+    ("^Global found \\([0-9]+\\)" (1 compilation-info-face))))
+
+(define-compilation-mode ggtags-global-mode "Global"
+  "A mode for showing outputs from gnu global."
+  (setq-local compilation-error-regexp-alist
+              (list ggtags-global-output-format))
+  (setq-local compilation-auto-jump-to-first-error
+              ggtags-auto-jump-to-first-match)
+  (setq-local compilation-scroll-output 'first-error)
+  (setq-local compilation-disable-input t)
+  (setq-local compilation-always-kill t)
+  (setq-local compilation-error-face 'compilation-info)
+  (setq-local compilation-exit-message-function
+              'ggtags-global-exit-message-function)
+  (setq-local truncate-lines t)
+  (jit-lock-register #'ggtags-abbreviate-files)
+  (add-hook 'compilation-filter-hook 'ggtags-global-filter nil 'local)
+  (add-hook 'compilation-finish-functions 'ggtags-handle-single-match nil t)
+  (define-key ggtags-global-mode-map "\M-o" 'visible-mode))
+
+;; NOTE: Need this to avoid putting menu items in
+;; `emulation-mode-map-alists', which creates double entries. See
+;; http://i.imgur.com/VJJTzVc.png
+(defvar ggtags-navigation-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map "\M-n" 'next-error)
+    (define-key map "\M-p" 'previous-error)
+    (define-key map "\M-}" 'ggtags-navigation-next-file)
+    (define-key map "\M-{" 'ggtags-navigation-previous-file)
+    (define-key map "\M->" 'ggtags-navigation-last-error)
+    (define-key map "\M-<" 'ggtags-navigation-first-error)
+    (define-key map "\M-o" 'ggtags-navigation-visible-mode)
+    (define-key map [return] 'ggtags-navigation-mode-done)
+    (define-key map "\r" 'ggtags-navigation-mode-done)
+    ;; Intercept M-. and M-* keys
+    (define-key map [remap pop-tag-mark] 'ggtags-navigation-mode-abort)
+    (define-key map [remap ggtags-find-tag-dwim] 'undefined)
+    map))
+
+(defvar ggtags-mode-map-alist
+  `((ggtags-navigation-mode . ,ggtags-navigation-map)))
+
+;; Higher priority for `ggtags-navigation-mode' to avoid being
+;; hijacked by modes such as `view-mode'.
+(add-to-list 'emulation-mode-map-alists 'ggtags-mode-map-alist)
+
+(defvar ggtags-navigation-mode-map
+  (let ((map (make-sparse-keymap))
+        (menu (make-sparse-keymap "GG-Navigation")))
+    ;; Menu items: (info "(elisp)Extended Menu Items")
+    (define-key map [menu-bar ggtags-navigation] (cons "GG-Navigation" menu))
+    ;; Ordered backwards
+    (define-key menu [visible-mode]
+      '(menu-item "Visible mode" ggtags-navigation-visible-mode
+                  :button (:toggle . (ignore-errors
+                                       (ggtags-ensure-global-buffer
+                                         visible-mode)))))
+    (define-key menu [done]
+      '(menu-item "Finish navigation" ggtags-navigation-mode-done))
+    (define-key menu [abort]
+      '(menu-item "Abort" ggtags-navigation-mode-abort))
+    (define-key menu [last-error]
+      '(menu-item "Last error" ggtags-navigation-last-error))
+    (define-key menu [fist-error]
+      '(menu-item "Fist error" ggtags-navigation-first-error))
+    (define-key menu [previous-file]
+      '(menu-item "Previous file" ggtags-navigation-previous-file))
+    (define-key menu [next-file]
+      '(menu-item "Next file" ggtags-navigation-next-file))
+    (define-key menu [previous]
+      '(menu-item "Previous match" previous-error))
+    (define-key menu [next]
+      '(menu-item "Next match" next-error))
+    map))
+
+(defun ggtags-move-to-tag (&optional name)
+  "Move to NAME tag in current line."
+  (let ((orig (point))
+        (tag (or name ggtags-current-tag-name)))
+    (beginning-of-line)
+    (if (and tag (re-search-forward
+                  (concat "\\_<" (regexp-quote tag) "\\_>")
+                  (line-end-position)
+                  t))
+        (goto-char (match-beginning 0))
+      (goto-char orig))))
+
+(defun ggtags-navigation-mode-cleanup (&optional buf time)
+  (let ((buf (or buf ggtags-global-last-buffer)))
+    (and (buffer-live-p buf)
+         (with-current-buffer buf
+           (when (get-buffer-process (current-buffer))
+             (kill-compilation))
+           (when (and (derived-mode-p 'ggtags-global-mode)
+                      (get-buffer-window))
+             (quit-window nil (get-buffer-window)))
+           (and time (run-with-idle-timer time nil 'kill-buffer buf))))))
+
+(defun ggtags-navigation-mode-done ()
+  (interactive)
+  (ggtags-navigation-mode -1)
+  (setq ggtags-current-mark nil)
+  (setq tags-loop-scan t
+        tags-loop-operate '(ggtags-find-tag-continue))
+  (ggtags-navigation-mode-cleanup))
+
+(defun ggtags-navigation-mode-abort ()
+  (interactive)
+  (ggtags-navigation-mode -1)
+  ;; Run after (ggtags-navigation-mode -1) or
+  ;; ggtags-global-start-marker might not have been saved.
+  (when (and (not (markerp ggtags-global-start-marker))
+             ggtags-global-start-marker)
+    (setq ggtags-global-start-marker nil)
+    (pop-tag-mark))
+  (ggtags-navigation-mode-cleanup nil 0))
+
+(defun ggtags-navigation-next-file (n)
+  (interactive "p")
+  (ggtags-ensure-global-buffer
+    (compilation-next-file n)
+    (compile-goto-error)))
+
+(defun ggtags-navigation-previous-file (n)
+  (interactive "p")
+  (ggtags-navigation-next-file (- n)))
+
+(defun ggtags-navigation-first-error ()
+  (interactive)
+  (ggtags-ensure-global-buffer
+    (goto-char (point-min))
+    (compilation-next-error 1)
+    (compile-goto-error)))
+
+(defun ggtags-navigation-last-error ()
+  (interactive)
+  (ggtags-ensure-global-buffer
+    (goto-char (point-max))
+    (compilation-previous-error 1)
+    (compile-goto-error)))
+
+(defun ggtags-navigation-visible-mode (&optional arg)
+  (interactive (list (or current-prefix-arg 'toggle)))
+  (ggtags-ensure-global-buffer
+    (visible-mode arg)))
+
+(defvar ggtags-global-line-overlay nil)
+
+(defun ggtags-global-next-error-hook ()
+  (ggtags-move-to-tag)
+  (ggtags-global-save-start-marker)
+  (ignore-errors
+    (ggtags-ensure-global-buffer
+      (unless (overlayp ggtags-global-line-overlay)
+        (setq ggtags-global-line-overlay (make-overlay (point) (point)))
+        (overlay-put ggtags-global-line-overlay 'face 'ggtags-global-line))
+      (move-overlay ggtags-global-line-overlay
+                    (line-beginning-position) (line-end-position)
+                    (current-buffer)))))
+
+(define-minor-mode ggtags-navigation-mode nil
+  :lighter
+  (" GG[" (:eval (ggtags-ensure-global-buffer
+                   (let ((index (when (get-text-property (line-beginning-position)
+                                                         'compilation-message)
+                                  ;; Assume the first match appears at line 5
+                                  (- (line-number-at-pos) 4))))
+                     `((:propertize ,(if index
+                                         (number-to-string (max index 0))
+                                       "?") face success) "/"))))
+   (:propertize (:eval (number-to-string ggtags-global-match-count))
+                face success)
+   (:eval
+    (unless (zerop ggtags-global-exit-status)
+      `(":" (:propertize ,(number-to-string ggtags-global-exit-status)
+                         face error))))
+   "]")
+  :global t
+  (if ggtags-navigation-mode
+      (progn
+        (add-hook 'next-error-hook 'ggtags-global-next-error-hook)
+        (add-hook 'minibuffer-setup-hook 'ggtags-minibuffer-setup-function))
+    ;; Call `ggtags-global-save-start-marker' in case of exiting from
+    ;; `ggtags-handle-single-match' for single match.
+    (ggtags-global-save-start-marker)
+    (remove-hook 'next-error-hook 'ggtags-global-next-error-hook)
+    (remove-hook 'minibuffer-setup-hook 'ggtags-minibuffer-setup-function)))
+
+(defun ggtags-minibuffer-setup-function ()
+  ;; Disable ggtags-navigation-mode in minibuffer.
+  (setq-local ggtags-navigation-mode nil))
+
+(defun ggtags-kill-file-buffers (&optional interactive)
+  "Kill all buffers visiting files in current project."
+  (interactive "p")
+  (ggtags-check-project)
+  (let ((directories (cons (ggtags-current-project-root) (ggtags-get-libpath)))
+        (count 0)
+        (some (lambda (pred list)
+                (loop for x in list when (funcall pred x) return it))))
+    (dolist (buf (buffer-list))
+      (let ((file (and (buffer-live-p buf)
+                       (not (eq buf (current-buffer)))
+                       (buffer-file-name buf))))
+        (when (and file (funcall some
+                                 (apply-partially #'file-in-directory-p file)
+                                 directories))
+          (and (kill-buffer buf) (incf count)))))
+    (and interactive
+         (message "%d %s killed" count (if (= count 1) "buffer" "buffers")))))
+
+(defun ggtags-after-save-function ()
+  (when (ggtags-find-project)
+    (setf (ggtags-project-dirty-p (ggtags-find-project)) t)
+    ;; When oversize update on a per-save basis.
+    (when (and buffer-file-name
+               (ggtags-project-oversize-p (ggtags-find-project)))
+      (ggtags-with-process-environment
+       (process-file "global" nil 0 nil "--single-update"
+                     (file-truename buffer-file-name))))))
+
+(defvar ggtags-mode-prefix-map
+  (let ((m (make-sparse-keymap)))
+    (define-key m (kbd "M-DEL") 'ggtags-delete-tag-files)
+    (define-key m "\M-p" 'ggtags-prev-mark)
+    (define-key m "\M-n" 'ggtags-next-mark)
+    (define-key m "\M-s" 'ggtags-find-other-symbol)
+    (define-key m "\M-g" 'ggtags-grep)
+    (define-key m "\M-i" 'ggtags-idutils-query)
+    (define-key m "\M-b" 'ggtags-browse-file-as-hypertext)
+    (define-key m "\M-k" 'ggtags-kill-file-buffers)
+    (define-key m (kbd "M-%") 'ggtags-query-replace)
+    m))
+
+(defvar ggtags-mode-map
+  (let ((map (make-sparse-keymap))
+        (menu (make-sparse-keymap "Ggtags")))
+    (define-key map "\M-." 'ggtags-find-tag-dwim)
+    (define-key map (kbd "M-]") 'ggtags-find-reference)
+    (define-key map (kbd "C-M-.") 'ggtags-find-tag-regexp)
+    (define-key map ggtags-mode-prefix-key ggtags-mode-prefix-map)
+    ;; Menu items
+    (define-key map [menu-bar ggtags] (cons "Ggtags" menu))
+    ;; Ordered backwards
+    (define-key menu [report-bugs]
+      `(menu-item "Report bugs"
+                  (lambda () (interactive)
+                    (browse-url ggtags-bug-url)
+                    (message "Please visit %s" ggtags-bug-url))
+                  :help ,(format "Visit %s" ggtags-bug-url)))
+    (define-key menu [custom-ggtags]
+      '(menu-item "Customize Ggtags"
+                  (lambda () (interactive) (customize-group 'ggtags))))
+    (define-key menu [save-project]
+      '(menu-item "Save project settings" ggtags-save-project-settings))
+    (define-key menu [sep2] menu-bar-separator)
+    (define-key menu [browse-hypertext]
+      '(menu-item "Browse as hypertext" ggtags-browse-file-as-hypertext
+                  :enable (ggtags-find-project)))
+    (define-key menu [delete-tags]
+      '(menu-item "Delete tag files" ggtags-delete-tag-files
+                  :enable (ggtags-find-project)))
+    (define-key menu [kill-buffers]
+      '(menu-item "Kill buffers visiting project files" ggtags-kill-file-buffers
+                  :enable (ggtags-find-project)))
+    (define-key menu [pop-mark]
+      '(menu-item "Pop mark" pop-tag-mark
+                  :help "Pop to previous mark and destroy it"))
+    (define-key menu [next-mark]
+      '(menu-item "Next mark" ggtags-next-mark))
+    (define-key menu [prev-mark]
+      '(menu-item "Previous mark" ggtags-prev-mark))
+    (define-key menu [sep1] menu-bar-separator)
+    (define-key menu [query-replace]
+      '(menu-item "Query replace" ggtags-query-replace))
+    (define-key menu [idutils]
+      '(menu-item "Query idutils DB" ggtags-idutils-query))
+    (define-key menu [grep]
+      '(menu-item "Use grep" ggtags-grep))
+    (define-key menu [find-symbol]
+      '(menu-item "Find other symbol" ggtags-find-other-symbol))
+    (define-key menu [find-reference]
+      '(menu-item "Find reference" ggtags-find-reference))
+    (define-key menu [find-tag-continue]
+      '(menu-item "Continue find tag" tags-loop-continue))
+    (define-key menu [find-tag-regexp]
+      '(menu-item "Find tag matching regexp" ggtags-find-tag-regexp))
+    (define-key menu [find-tag]
+      '(menu-item "Find tag" ggtags-find-tag-dwim))
+    (define-key menu [update-tags]
+      '(menu-item "Update tag files" ggtags-update-tags
+                  :visible (ggtags-find-project)))
+    (define-key menu [run-gtags]
+      '(menu-item "Run gtags" ggtags-ensure-project
+                  :visible (not (ggtags-find-project))))
+    map))
+
+(defvar ggtags-highlight-tag-overlay nil)
+
+(defvar ggtags-highlight-tag-timer nil)
+
+;;;###autoload
+(define-minor-mode ggtags-mode nil
+  :lighter (:eval (if ggtags-navigation-mode "" " GG"))
+  (unless (timerp ggtags-highlight-tag-timer)
+    (setq ggtags-highlight-tag-timer
+          (run-with-idle-timer
+           ggtags-highlight-tag-delay t 'ggtags-highlight-tag-at-point)))
+  (if ggtags-mode
+      (progn
+        (add-hook 'after-save-hook 'ggtags-after-save-function nil t)
+        (or (executable-find "global")
+            (message "Failed to find GNU Global")))
+    (remove-hook 'after-save-hook 'ggtags-after-save-function t)
+    (and (overlayp ggtags-highlight-tag-overlay)
+         (delete-overlay ggtags-highlight-tag-overlay))
+    (setq ggtags-highlight-tag-overlay nil)))
+
+(defvar ggtags-highlight-tag-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [S-down-mouse-1] 'ggtags-find-tag-dwim)
+    (define-key map [S-down-mouse-3] 'ggtags-find-reference)
+    map)
+  "Keymap used for valid tag at point.")
+
+(put 'ggtags-active-tag 'face 'ggtags-highlight)
+(put 'ggtags-active-tag 'keymap ggtags-highlight-tag-map)
+;; (put 'ggtags-active-tag 'mouse-face 'match)
+(put 'ggtags-active-tag 'modification-hooks
+     (list (lambda (o after &rest _args)
+             (and (not after) (delete-overlay o)))))
+(put 'ggtags-active-tag 'help-echo
+     "S-down-mouse-1 for defintions\nS-down-mouse-3 for references")
+
+(defun ggtags-highlight-tag-at-point ()
+  (when (and ggtags-mode (eq ggtags-project 'unset))
+    (ggtags-find-project))
+  (when (and ggtags-mode ggtags-project)
+    (unless (overlayp ggtags-highlight-tag-overlay)
+      (let ((o (make-overlay (point) (point) nil t)))
+        (setq ggtags-highlight-tag-overlay o)))
+    (let ((bounds (funcall ggtags-bounds-of-tag-function))
+          (o ggtags-highlight-tag-overlay))
+      (cond
+       ((and bounds
+             (overlay-get o 'category)
+             (eq (overlay-buffer o) (current-buffer))
+             (= (overlay-start o) (car bounds))
+             (= (overlay-end o) (cdr bounds)))
+        ;; Tag is already highlighted so do nothing.
+        nil)
+       ((and bounds (test-completion
+                     (buffer-substring (car bounds) (cdr bounds))
+                     ggtags-completion-table))
+        (move-overlay o (car bounds) (cdr bounds) (current-buffer))
+        (overlay-put o 'category 'ggtags-active-tag))
+       (t (move-overlay o
+                        (or (car bounds) (point))
+                        (or (cdr bounds) (point))
+                        (current-buffer))
+          (overlay-put o 'category nil))))))
+
+;;; imenu
+
+(defun ggtags-goto-imenu-index (name line &rest _args)
+  (save-restriction
+    (widen)
+    (goto-char (point-min))
+    (forward-line (1- line))
+    (ggtags-move-to-tag name)))
+
+;;;###autoload
+(defun ggtags-build-imenu-index ()
+  "A function suitable for `imenu-create-index-function'."
+  (when buffer-file-name
+    (let ((file (file-truename buffer-file-name)))
+      (with-temp-buffer
+        (when (with-demoted-errors
+                (zerop (ggtags-with-process-environment
+                        (process-file "global" nil t nil "-x" "-f" file))))
+          (goto-char (point-min))
+          (loop while (re-search-forward
+                       "^\\([^ \t]+\\)[ \t]+\\([0-9]+\\)" nil t)
+                collect (list (match-string 1)
+                              (string-to-number (match-string 2))
+                              'ggtags-goto-imenu-index)))))))
+
+;;; hippie-expand
+
+;;;###autoload
+(defun try-complete-ggtags-tag (old)
+  "A function suitable for `hippie-expand-try-functions-list'."
+  (with-no-warnings                     ; to avoid loading hippie-exp
+    (unless old
+      (he-init-string (if (looking-back "\\_<.*" (line-beginning-position))
+                          (match-beginning 0)
+                        (point))
+                      (point))
+      (setq he-expand-list
+            (and (not (equal he-search-string ""))
+                 (ggtags-find-project)
+                 (sort (all-completions he-search-string
+                                        ggtags-completion-table)
+                       'string-lessp))))
+    (if (null he-expand-list)
+        (progn
+          (if old (he-reset-string))
+          nil)
+      (he-substitute-string (car he-expand-list))
+      (setq he-expand-list (cdr he-expand-list))
+      t)))
+
+(defun ggtags-reload (&optional force)
+  (interactive "P")
+  (unload-feature 'ggtags force)
+  (require 'ggtags))
+
+(defun ggtags-unload-function ()
+  (setq emulation-mode-map-alists
+        (delq 'ggtags-mode-map-alist emulation-mode-map-alists))
+  nil)
+
+(provide 'ggtags)
+;;; ggtags.el ends here
diff --git a/packages/heap/heap.el b/packages/heap/heap.el
new file mode 100644 (file)
index 0000000..4904a2e
--- /dev/null
@@ -0,0 +1,344 @@
+;;; heap.el --- Heap (a.k.a. priority queue) data structure
+
+;; Copyright (C) 2004-2006, 2008, 2012  Free Software Foundation, Inc
+
+;; Author: Toby Cubitt <toby-predictive@dr-qubit.org>
+;; Version: 0.3
+;; Keywords: extensions, data structures, heap, priority queue
+;; URL: http://www.dr-qubit.org/emacs.php
+;; Repository: http://www.dr-qubit.org/git/predictive.git
+
+;; This file is part of Emacs.
+;;
+;; GNU Emacs is free software: you can redistribute it and/or modify it under
+;; the terms of the GNU General Public License as published by the Free
+;; Software Foundation, either version 3 of the License, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful, but WITHOUT
+;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+;; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+;; more details.
+;;
+;; You should have received a copy of the GNU General Public License along
+;; with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+;; A heap is a form of efficient self-sorting tree. In particular, the root
+;; node is guaranteed to be the highest-ranked entry in the tree. (The
+;; comparison function used for ranking the data can, of course, be freely
+;; defined). Therefore repeatedly removing the root node will return the data
+;; in order of increasing rank. They are often used as priority queues, for
+;; scheduling tasks in order of importance.
+;;
+;; This package implements ternary heaps, since they are about 12% more
+;; efficient than binary heaps for heaps containing more than about 10
+;; elements, and for very small heaps the difference is negligible. The
+;; asymptotic complexity of ternary heap operations is the same as for a
+;; binary heap: 'add', 'delete-root' and 'modify' operations are all O(log n)
+;; on a heap containing n elements.
+;;
+;; Note that this package implements a heap as an implicit data structure on a
+;; vector. Therefore, the maximum size of the heap has to be specified in
+;; advance. Although the heap will grow dynamically if it becomes full, this
+;; requires copying the entire heap, so insertion has worst-case complexity
+;; O(n) instead of O(log n), though the amortized complexity is still
+;; O(n). (For applications where the maximum size of the heap is not known in
+;; advance, an implementation based on binary trees might be more suitable,
+;; but is not currently implemented in this package.)
+;;
+;; You create a heap using `make-heap', add elements to it using `heap-add',
+;; delete and return the root of the heap using `heap-delete-root', and modify
+;; an element of the heap using `heap-modify'. A number of other heap
+;; convenience functions are also provided, all with the prefix
+;; `heap-'. Functions with prefix `heap--' are for internal use only, and
+;; should never be used outside this package.
+
+
+;;; Change Log:
+;;
+;; Version 0.3
+;; * converted heap data structures into defstructs
+;; * increased default resize-factor to 2
+;; * added `heap-build' function for efficiently building a heap out of a
+;;   vector
+;; * added `heap-merge' function for merging heaps (not very efficient for
+;;   binary -- or ternary -- heaps, only O(n))
+;;
+;; Version 0.2.2
+;; * fixed bug in `heap-copy'
+;;
+;; Version 0.2.1
+;; * modified Commentary
+;;
+;; Version 0.2
+;; * fixed efficiency issue: vectors are no longer copied all the time (thanks
+;;   to Stefan Monnier for pointing this out)
+;;
+;; Version 0.1.5
+;; * renamed `vswap' to `heap--vswap'
+;; * removed cl dependency
+;;
+;; Version 0.1.4
+;; * fixed internal function and macro names
+;;
+;; Version 0.1.3
+;; * added more commentary
+;;
+;; Version 0.1.2
+;; * moved defmacros before their first use so byte-compilation works
+;;
+;; Version 0.1.1
+;; * added cl dependency
+;;
+;; version 0.1
+;; * initial release
+
+
+
+;;; Code:
+
+(eval-when-compile (require 'cl))
+
+
+;;; ================================================================
+;;;        Internal functions for use in the heap package
+
+(defstruct (heap-
+           :named
+           (:constructor nil)
+           (:constructor heap--create
+                         (cmpfun &optional (size 10) (resize 2)
+                          &aux
+                          (vect (make-vector size nil))
+                          (count 0)))
+           (:copier nil))
+  vect cmpfun count size resize)
+
+
+(defun heap--child (heap i)    ; INTERNAL USE ONLY
+  ;; Compare the 3 children of element I, and return element reference
+  ;; of the smallest/largest (depending on whethen it's a min- or
+  ;; max-heap).
+  (let* ((vect (heap--vect heap))
+        (cmpfun (heap--cmpfun heap))
+        (count (heap--count heap))
+        (j nil) (k (* 3 i)))
+    ;; Lots of if's in case I has less than three children.
+    (if (>= (1+ k) count) nil
+      (if (>= (+ 2 k) count) (1+ k)
+       (setq j (if (funcall cmpfun (aref vect (1+ k))
+                            (aref vect (+ 2 k)))
+                   (1+ k) (+ 2 k)))
+       (if (>= (+ 3 k) count) j
+         (if (funcall cmpfun (aref vect j) (aref vect (+ 3 k)))
+             j (+ 3 k)))))))
+
+
+(defmacro heap--vswap (vect i j)   ; INTERNAL USE ONLY
+  ;; Swap elements I and J of vector VECT.
+  `(let ((tmp (aref ,vect ,i)))
+     (aset ,vect ,i (aref ,vect ,j))
+     (aset ,vect ,j tmp) ,vect))
+
+
+(defun heap--sift-up (heap n)   ; INTERNAL USE ONLY
+  ;; Sift-up starting from element N of vector belonging to HEAP.
+  (let* ((i n) (j nil) (vect (heap--vect heap)) (v (aref vect n)))
+    ;; Keep moving element up until it reaches top or is smaller/bigger
+    ;; than its parent.
+    (while (and (> i 0)
+               (funcall (heap--cmpfun heap) v
+                        (aref vect (setq j (/ (1- i) 3)))))
+      (heap--vswap vect i j)
+      (setq i j))))
+
+
+(defun heap--sift-down (heap n)   ; INTERNAL USE ONLY
+  ;; Sift-down from element N of the heap vector belonging HEAP.
+  (let* ((vect (heap--vect heap))
+       (cmpfun (heap--cmpfun heap))
+       (i n) (j (heap--child heap i))
+       (v (aref vect n)))
+    ;; Keep moving the element down until it reaches the bottom of the
+    ;; tree or reaches a position where it is bigger/smaller than all
+    ;; its children.
+    (while (and j (funcall cmpfun (aref vect j) v))
+      (heap--vswap vect i j)
+      (setq i j)
+      (setq j (heap--child heap i)))))
+
+
+
+;;; ================================================================
+;;;          The public functions which operate on heaps.
+
+;;;###autoload
+(defun make-heap
+  (compare-function &optional initial-size resize-factor)
+  "Create an empty heap with comparison function COMPARE-FUNCTION.
+
+COMPARE-FUNCTION takes two arguments, A and B, and returns
+non-nil or nil. To implement a max-heap, it should return non-nil
+if A is greater than B. To implemenet a min-heap, it should
+return non-nil if A is less than B.
+
+Optional argument INITIAL-SIZE sets the initial size of the heap,
+defaulting to 10. Optional argument RESIZE-FACTOR sets the factor
+by which the heap's size is increased if it runs out of space,
+defaulting to 2."
+  ;; sadly, passing null values over-rides the defaults in the defstruct
+  ;; `heap--create', so we have to explicitly set the defaults again
+  ;; here
+  (or initial-size (setq initial-size 10))
+  (or resize-factor (setq resize-factor 2))
+  (heap--create compare-function initial-size resize-factor))
+
+
+;;;###autoload
+(defalias 'heap-create 'make-heap)
+
+
+(defun heap-copy (heap)
+ "Return a copy of heap HEAP."
+ (let ((newheap (heap--create (heap--cmpfun heap) (heap--size heap)
+                             (heap--resize heap))))
+   (setf (heap--vect newheap) (vconcat (heap--vect heap) [])
+        (heap--count newheap) (heap--count heap))
+   newheap))
+
+
+(defun heap-empty (heap)
+  "Return t if the heap is empty, nil otherwise."
+  (= 0 (heap--count heap)))
+
+
+(defun heap-size (heap)
+  "Return the number of entries in the heap."
+  (heap--count heap))
+
+
+(defun heap-compare-function (heap)
+  "Return the comparison function for the heap HEAP."
+  (heap--cmpfun heap))
+
+
+(defun heap-add (heap data)
+  "Add DATA to the heap, and return DATA."
+  ;; Add data to bottom of heap and sift-up from bottom.
+  (let ((count (heap--count heap))
+       (size (heap--size heap))
+       (vect (heap--vect heap)))
+    ;; if there's no space left, grow the heap
+    (if (< count size)
+       (aset vect count data)
+      (setf (heap--vect heap)
+           (vconcat (heap--vect heap) (vector data)
+                    (make-vector
+                     (1- (ceiling (* size (1- (heap--resize heap)))))
+                     nil))
+           (heap--size heap)
+           (ceiling (* size (heap--resize heap)))))
+    (setq count (setf (heap--count heap) (1+ (heap--count heap))))
+    (heap--sift-up heap (1- count)))
+  ;; return inserted data
+  data)
+
+
+(defun heap-root (heap)
+  "Return the root of the heap, without removing it"
+  (if (= (heap--count heap) 0) nil (aref (heap--vect heap) 0)))
+
+
+(defun heap-delete-root (heap)
+  "Return the root of the heap and delete it from the heap."
+  (let ((vect (heap--vect heap))
+       root count)
+    ;; deal with empty heaps and heaps with just one element
+    (if (= 0 (heap--count heap)) nil
+      (setq root (aref vect 0)
+           count (decf (heap--count heap)))
+      (if (= 0 count)
+         (setf (heap--vect heap) (make-vector 10 nil))
+       ;; delete root, swap last element to top, and sift-down from top
+       (aset vect 0 (aref vect count))
+       (aset vect count nil)
+       (heap--sift-down heap 0))
+      root)))
+
+
+(defun heap-modify (heap match-function data)
+  "Replace the first heap entry identified by MATCH-FUNCTION
+with DATA, if a match exists. Return t if there was a match, nil
+otherwise.
+
+The function MATCH-FUNCTION should take one argument of the type
+stored in the heap, and return non-nil if it should be modified,
+nil otherwise.
+
+Note that only the match highest up the heap is modified."
+  (let ((vect (heap--vect heap))
+       (count (heap--count heap))
+       (i 0))
+    ;; search vector for the first match
+    (while (and (< i count)
+               (not (funcall match-function (aref vect i))))
+      (setq i (1+ i)))
+    ;; if a match was found, modify it
+    (if (< i count)
+       (let ((olddata (aref vect i)))
+         (aset vect i data)
+         ;; if the new data is greater than old data, sift-up,
+         ;; otherwise sift-down
+         (if (funcall (heap--cmpfun heap) data olddata)
+             (heap--sift-up heap i)
+           (heap--sift-down heap i))
+         t)  ; return t if the match was successfully modified
+      nil)))  ; return nil if no match was found
+
+
+(defun heap-build (compare-function vec &optional resize-factor)
+  "Build a heap from vector VEC with COMPARE-FUNCTION
+as the comparison function.
+
+Note that VEC is modified, and becomes part of the heap data
+structure. If you don't want this, copy the vector first and pass
+the copy in VEC.
+
+COMPARE-FUNCTION takes two arguments, A and B, and returns
+non-nil or nil. To implement a max-heap, it should return non-nil
+if A is greater than B. To implemenet a min-heap, it should
+return non-nil if A is less than B.
+
+RESIZE-FACTOR sets the factor by which the heap's size is
+increased if it runs out of space, defaulting to 2."
+  (or resize-factor (setq resize-factor 2))
+  (let ((heap (heap--create compare-function (length vec) resize-factor))
+       (i (ceiling (1- (expt 3
+            (ceiling (1- (log (1+ (* 2 (length vec))) 3))))) 2)))
+    (setf (heap--vect heap) vec
+         (heap--count heap) (length vec))
+    (while (>= (decf i) 0) (heap--sift-down heap i))
+    heap))
+
+
+(defun heap-merge (heap &rest heaps)
+  "Merge HEAP with remaining HEAPS.
+
+The merged heap takes the comparison function and resize-fector
+of the first HEAP argument.
+
+\(Note that in this heap implementation, the merge operation is
+not very efficient, taking O(n) time for combined heap size n\)."
+  (setq heaps (mapcar 'heap--vect heaps))
+  (heap-build (heap--cmpfun heap)
+             (apply 'vconcat (heap--vect heap) heaps)
+             (heap--resize heap)))
+
+
+
+(provide 'heap)
+
+;;; heap.el ends here
diff --git a/packages/ioccur/ioccur.el b/packages/ioccur/ioccur.el
new file mode 100644 (file)
index 0000000..521d3de
--- /dev/null
@@ -0,0 +1,1114 @@
+;;; ioccur.el --- Incremental occur
+
+;; Copyright (C) 2010-2013  Free Software Foundation, Inc.
+
+;; Author: Thierry Volpiatto <thierry dot volpiatto at gmail dot com>
+;; X-URL: https://github.com/thierryvolpiatto/ioccur
+;; Version: 2.4
+;; Compatibility: GNU Emacs >=22.3
+
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as
+;; published by the Free Software Foundation; either version 3, or
+;; (at your option) any later version.
+;; 
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+;; 
+;; You should have received a copy of the GNU General Public License
+;; along with this program; if not, see <http://www.gnu.org/licenses/>.
+
+;;; Install:
+;;
+;; Add this file to your `load-path', BYTE-COMPILE it and
+;; add (require 'ioccur) in your .emacs.
+;;
+;; Start with (C-u) M-x ioccur
+;;            or
+;;            (C-u) M-x ioccur-find-buffer-matching
+;;
+;; Do C-h f ioccur or ioccur-find-buffer-matching for more info.
+
+;;; Commentary:
+;;
+;; This package provides the command M-x ioccur, which is similar to
+;; M-x occur, except that it is incremental.
+;;
+;; You can jump and quit to an occurrence, or jump and save the search
+;; buffer (ioccur-buffer) for further use.  You can toggle literal and
+;; regexp searching while running.  It is auto documented both in
+;; mode-line and tooltip.  It has its own history, `ioccur-history',
+;; which is a real ring.
+;;
+;; To save `ioccur-history' via the Desktop package, add this to your
+;; init file (see (info "(emacs) Saving Emacs Sessions") for details):
+;;
+;; (add-to-list 'desktop-globals-to-save 'ioccur-history)
+
+;;; Code:
+(require 'derived)
+(eval-when-compile (require 'cl))
+(require 'outline)
+(eval-when-compile (require 'wdired))
+
+(defvar ioccur-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map (kbd "q")        'ioccur-quit)
+    (define-key map (kbd "RET")      'ioccur-jump-and-quit)
+    (define-key map (kbd "<left>")   'ioccur-jump-and-quit)
+    (define-key map (kbd "<right>")  'ioccur-jump-without-quit)
+    (define-key map (kbd "C-z")      'ioccur-jump-without-quit)
+    (define-key map (kbd "<C-down>") 'ioccur-scroll-down)
+    (define-key map (kbd "<C-up>")   'ioccur-scroll-up)
+    (define-key map (kbd "C-v")      'ioccur-scroll-other-window-up)
+    (define-key map (kbd "M-v")      'ioccur-scroll-other-window-down)
+    (define-key map (kbd "<down>")   'ioccur-next-line)
+    (define-key map (kbd "<up>")     'ioccur-precedent-line)
+    (define-key map (kbd "C-n")      'ioccur-next-line)
+    (define-key map (kbd "C-p")      'ioccur-precedent-line)
+    (define-key map (kbd "R")        'ioccur-restart)
+    (define-key map (kbd "C-|")      'ioccur-split-window)
+    (define-key map (kbd "M-<")      'ioccur-beginning-of-buffer)
+    (define-key map (kbd "M->")      'ioccur-end-of-buffer)
+    map)
+  "Keymap used for ioccur commands.")
+
+
+(defgroup ioccur nil
+  "Mode that provide incremental searching in buffer."
+  :prefix "ioccur-"
+  :group 'text)
+
+;;; User variables.
+(defcustom ioccur-search-delay 0.5
+  "During incremental searching, display is updated all these seconds."
+  :group 'ioccur
+  :type  'integer)
+
+(defcustom ioccur-search-prompt "Pattern: "
+  "Prompt used for `ioccur-occur'."
+  :group 'ioccur
+  :type  'string)
+
+(defcustom ioccur-mode-line-string
+  (if (window-system)
+      " RET:Exit,C-g:Quit,C-j/left:Jump&quit,C-z/right:Jump,\
+C-k/x:Kill(as sexp),M-p/n:Hist,C/M-v:Scroll,C-down/up:Follow,C-w:Yank tap"
+
+      " RET:Exit,C-g:Quit,C-j:Jump&quit,C-z:Jump,C-k/x:Kill(as sexp),\
+S-/Tab:Hist,C-v/t:Scroll,C-d/u:Follow,C-w:Yank tap")
+
+  "Minimal documentation of `ioccur' commands displayed in mode-line.
+Set it to nil to remove doc in mode-line."
+  :group 'ioccur
+  :type  'string)
+
+(defcustom ioccur-length-line 80
+  "Length of the line displayed in ioccur buffer.
+When set to nil lines displayed in `ioccur-buffer' will not be modified.
+See `ioccur-truncate-line'."
+  :group 'ioccur
+  :type 'integer)
+
+(defcustom ioccur-max-length-history 100
+  "Maximum number of element stored in `ioccur-history'."
+  :group 'ioccur
+  :type 'integer)
+
+(defcustom ioccur-buffer-completion-use-ido nil
+  "Use ido to choose buffers in `ioccur-find-buffer-matching'."
+  :group 'ioccur
+  :type 'symbol)
+
+(defcustom ioccur-default-search-function 're-search-forward
+  "Default search function.
+Use here one of `re-search-forward' or `search-forward'."
+  :group 'ioccur
+  :type 'symbol)
+
+(defcustom ioccur-highlight-match-p t
+  "Highlight matchs in `ioccur-buffer' when non--nil."
+  :group 'ioccur
+  :type 'boolean)
+
+(defcustom ioccur-fontify-buffer-p nil
+  "Fontify `ioccur-current-buffer' when non--nil.
+This allow to have syntactic coloration in `ioccur-buffer' but
+it slow down the start of ioccur at first time on large buffers."
+  :group 'ioccur
+  :type 'boolean)
+
+(defcustom ioccur-case-fold-search 'smart
+  "Add 'smart' option to `case-fold-search'.
+When smart is enabled, Ignore case in the search strings
+if pattern contains no uppercase characters.
+Otherwise, with a nil or t value, the behavior is same as
+`case-fold-search'.
+Default value is smart, other possible values are nil and t."
+  :group 'ioccur
+  :type 'symbol)
+
+(defvar ioccur-read-char-or-event-skip-read-key nil
+  "Force not using `read-key' to read input in minibuffer even if bounded.
+Set it to non--nil if menu disapear or if keys are echoing in minibuffer.
+Deprecated, should be used only in old Emacs versions.")
+
+(defvar ioccur-save-pos-before-jump-hook nil
+  "A hook that run before jumping and quitting `ioccur'.")
+
+;;; Faces.
+(defface ioccur-overlay-face
+    '((t (:background "Green4" :underline t)))
+  "Face for highlight line in ioccur buffer."
+  :group 'ioccur-faces)
+
+(defface ioccur-match-overlay-face
+    '((t (:background "Indianred4" :underline t)))
+  "Face for highlight line in matched buffer."
+  :group 'ioccur-faces)
+
+(defface ioccur-title-face
+    '((t (:background "Dodgerblue4")))
+  "Face for highlight incremental buffer title."
+  :group 'ioccur-faces)
+
+(defface ioccur-regexp-face
+    '((t (:background "DeepSkyBlue" :underline t)))
+  "Face for highlight found regexp in `ioccur-buffer'."
+  :group 'ioccur-faces)
+
+(defface ioccur-match-face
+    '((t (:background "DeepSkyBlue")))
+  "Face for highlight matches in `ioccur-buffer'."
+  :group 'ioccur-faces)
+
+(defface ioccur-num-line-face
+    '((t (:foreground "OrangeRed")))
+  "Face for highlight number line in ioccur buffer."
+  :group 'ioccur-faces)
+
+(defface ioccur-invalid-regexp
+    '((t (:foreground "Goldenrod")))
+  "Face for highlight wrong regexp message in ioccur buffer."
+  :group 'ioccur-faces)
+
+(defface ioccur-cursor
+    '((t (:foreground "green")))
+  "Face for cursor color in minibuffer."
+  :group 'ioccur-faces)
+
+;;; Internal variables.
+;; String entered in prompt.
+(defvar ioccur-pattern "")
+;; The ioccur timer.
+(defvar ioccur-search-timer nil)
+;; Signal C-g hit.
+(defvar ioccur-quit-flag nil)
+;; The buffer we search in.
+(defvar ioccur-current-buffer nil)
+;; The overlay in `ioccur-buffer'.
+(defvar ioccur-occur-overlay nil)
+(make-variable-buffer-local 'ioccur-occur-overlay)
+;; Signal we quit and kill `ioccur-buffer'.
+(defvar ioccur-exit-and-quit-p nil)
+;; A list to store history.
+(defvar ioccur-history nil)
+;; The overlay in `ioccur-current-buffer'.
+(defvar ioccur-match-overlay nil)
+;; Number of occurences found.
+(defvar ioccur-count-occurences 0)
+;;The buffer where we send results.
+(defvar ioccur-buffer nil)
+(make-variable-buffer-local 'ioccur-buffer)
+;; True when jumping to a founded occurence.
+(defvar ioccur-success nil)
+;; Search function actually in use.
+(defvar ioccur-search-function ioccur-default-search-function)
+;; Message to send when ioccur exit
+(defvar ioccur-message nil)
+;; Store last window-configuration
+(defvar ioccur-last-window-configuration nil)
+;; Save point in current buffer here.
+(defvar ioccur-current-pos nil)
+
+(define-derived-mode ioccur-mode
+    text-mode "ioccur"
+    "Major mode to search occurences of regexp in current buffer.
+
+Special commands:
+\\{ioccur-mode-map}"
+    (if ioccur-mode-line-string
+        (setq mode-line-format
+              '(" " mode-line-buffer-identification " "
+                (line-number-mode "%l") " "
+                ioccur-mode-line-string "-%-"))
+        (kill-local-variable 'mode-line-format)))
+
+(defsubst* ioccur-position (item seq &key (test 'eq))
+  "A simple replacement of CL `position'."
+  (loop for i in seq for index from 0
+     when (funcall test i item) return index))
+
+;; Compatibility
+(unless (fboundp 'window-system)
+  (defun window-system (&optional _arg)
+    window-system))
+
+;;; Iterators.
+(defmacro ioccur-iter-list (list-obj)
+  "Return an iterator from list LIST-OBJ."
+  `(lexical-let ((lis ,list-obj))
+     (lambda ()
+       (let ((elm (car lis)))
+         (setq lis (cdr lis))
+         elm))))
+
+(defun ioccur-iter-next (iterator)
+  "Return next elm of ITERATOR."
+  (funcall iterator))
+
+(defun ioccur-iter-circular (seq)
+  "Infinite iteration on SEQ."
+  (lexical-let ((it  (ioccur-iter-list seq))
+                (lis seq))
+    (lambda ()
+      (let ((elm (ioccur-iter-next it)))
+        (or elm
+            (progn (setq it (ioccur-iter-list lis))
+                   (ioccur-iter-next it)))))))
+
+(defun ioccur-butlast (seq pos)
+  "Return SEQ from index 0 to POS."
+  (butlast seq (- (length seq) pos)))
+
+(defun* ioccur-sub-prec-circular (seq elm &key (test 'eq))
+  "Infinite reverse iteration of SEQ starting at ELM."
+  (lexical-let* ((rev-seq  (reverse seq))
+                 (pos      (ioccur-position elm rev-seq :test test))
+                 (sub      (append (nthcdr (1+ pos) rev-seq)
+                                   (ioccur-butlast rev-seq pos)))
+                 (iterator (ioccur-iter-list sub)))
+     (lambda ()
+       (let ((elm (ioccur-iter-next iterator)))
+         (or elm
+             (progn (setq iterator (ioccur-iter-list sub))
+                    (ioccur-iter-next iterator)))))))
+
+(defun* ioccur-sub-next-circular (seq elm &key (test 'eq))
+  "Infinite iteration of SEQ starting at ELM."
+  (lexical-let* ((pos      (ioccur-position elm seq :test test))
+                 (sub      (append (nthcdr (1+ pos) seq)
+                                   (ioccur-butlast seq pos)))
+                 (iterator (ioccur-iter-list sub)))
+     (lambda ()
+       (let ((elm (ioccur-iter-next iterator)))
+         (or elm (progn
+                   (setq iterator (ioccur-iter-list sub))
+                   (ioccur-iter-next iterator)))))))
+
+(defun ioccur-print-results (regexp)
+  "Print in `ioccur-buffer' lines matching REGEXP in `ioccur-current-buffer'."
+  (setq ioccur-count-occurences 0)
+  (with-current-buffer ioccur-current-buffer
+    (let ((case-fold-search (case ioccur-case-fold-search
+                              (smart (let ((case-fold-search nil))
+                                       (if (string-match "[A-Z]" regexp) nil t)))
+                              (t ioccur-case-fold-search))))
+      (save-excursion
+        (goto-char (point-min))
+        (loop
+              while (not (eobp))
+              ;; We need to read also C-g from here
+              ;; Because when loop is started `ioccur-read-search-input'
+              ;; will read key only when loop is finished
+              ;; and we have no chance to exit loop.
+              when quit-flag do (setq ioccur-quit-flag t) and return nil
+              for count from 0
+              when (funcall ioccur-search-function regexp (point-at-eol) t)
+              do (ioccur-print-line
+                  (buffer-substring (point-at-bol) (point-at-eol))
+                  count (match-string 0))
+              do (forward-line 1))))))
+
+
+(defun ioccur-print-match (str &optional all)
+  "Highlight in string STR all occurences matching `ioccur-pattern'.
+If ALL is non--nil highlight the whole string STR."
+  (condition-case nil
+      (with-temp-buffer
+        (insert str)
+        (goto-char (point-min))
+        (if all
+            (add-text-properties
+             (point) (point-at-eol)
+             '(face ioccur-match-face))  
+            (while (and (funcall ioccur-search-function ioccur-pattern nil t)
+                        ;; Don't try to highlight line with a length <= 0.
+                        (> (- (match-end 0) (match-beginning 0)) 0))
+              (add-text-properties
+               (match-beginning 0) (match-end 0)
+               '(face ioccur-match-face))))
+        (buffer-string))
+    (error nil)))
+
+(defun ioccur-print-line (line nline match)
+  "Prepare and insert a matched LINE at line number NLINE in `ioccur-buffer'."
+  (with-current-buffer ioccur-buffer
+    (let* ((lineno             (int-to-string (1+ nline)))
+           (whole-line-matched (string= match line))
+           (hightline          (if ioccur-highlight-match-p
+                                   (ioccur-print-match
+                                    line
+                                    whole-line-matched)
+                                   line))
+           (trunc-line          (ioccur-truncate-line hightline)))
+      (incf ioccur-count-occurences)
+      (insert " " (propertize lineno 'face 'ioccur-num-line-face
+                              'help-echo line)
+              ":" trunc-line "\n"))))
+
+(defun* ioccur-truncate-line (line &optional (columns ioccur-length-line))
+  "Remove indentation in LINE and truncate modified LINE of num COLUMNS.
+COLUMNS default value is `ioccur-length-line'.
+If COLUMNS is nil return original indented LINE.
+If COLUMNS is 0 only remove indentation in LINE.
+So just set `ioccur-length-line' to nil if you don't want lines truncated."
+  (let ((old-line line))
+    (when (string-match "^[[:blank:]]*" line)
+      ;; Remove tab and spaces at beginning of LINE.
+      (setq line (replace-match "" nil nil line)))
+    (if (and columns (> columns 0) (> (length line) columns))
+        (substring line 0 columns)
+        (if columns line old-line))))
+
+(defun ioccur-buffer-contain (buffer regexp)
+  "Return BUFFER if it contain an occurence of REGEXP."
+  (with-current-buffer buffer
+    (save-excursion
+      (goto-char (point-min))
+      (when (re-search-forward regexp nil t) buffer))))
+
+(defun ioccur-list-buffers-matching (buffer-match regexp buffer-list)
+  "Collect all buffers in BUFFER-LIST whose names match BUFFER-MATCH and \
+contain lines matching REGEXP."
+  (loop
+     with ini-buf-list = (loop for buf in buffer-list
+                            unless (rassq buf dired-buffers)
+                            collect buf)
+     for buf in ini-buf-list
+     for bname = (buffer-name buf)
+     when (and (string-match buffer-match bname)
+               (ioccur-buffer-contain buf regexp))
+     collect bname))
+
+(defun ioccur-list-buffers-containing (regexp buffer-list)
+  "Collect all buffers in BUFFER-LIST containing lines matching REGEXP."
+  (loop with buf-list = (loop for i in buffer-list
+                           when (buffer-file-name (get-buffer i))
+                           collect i)
+     for buf in buf-list
+     when (ioccur-buffer-contain buf regexp)
+     collect (buffer-name buf)))
+
+(defun* ioccur-find-buffer-matching1 (regexp
+                                      &optional
+                                      match-buf-name
+                                      (buffer-list (buffer-list)))
+  "Find all buffers containing a text matching REGEXP \
+and connect `ioccur' to the selected one.
+
+If MATCH-BUF-NAME is non--nil search is performed only in buffers
+with name matching specified expression (prompt).
+
+Hitting C-g in a `ioccur' session will return to completion list.
+Hitting C-g in the completion list will jump back to initial buffer.
+
+The buffer completion list is provided by one of:
+`ido-completing-read', `completing-read'
+depending on which `ioccur-buffer-completion-use-ido' you have choosen."
+  ;; Remove doublons maybe added by minibuffer in `ioccur-history'.
+  (setq ioccur-history
+        (loop for i in ioccur-history
+           when (not (member i hist)) collect i into hist
+           finally return hist))
+
+  (let ((prompt   (format "Search (%s) in Buffer: " regexp))
+        (win-conf (current-window-configuration))
+        (buf-list (if match-buf-name
+                      (ioccur-list-buffers-matching
+                       (read-string "In Buffer names matching: ")
+                       regexp buffer-list)
+                      (ioccur-list-buffers-containing regexp buffer-list))))
+
+    (labels
+        ((find-buffer ()
+           (let ((buf (if (and ido-mode
+                               (eq ioccur-buffer-completion-use-ido 'ido))
+                          (ido-completing-read prompt buf-list nil t)
+                          (completing-read prompt buf-list nil t))))
+             (unwind-protect
+                  (progn
+                    (switch-to-buffer buf)
+                    (ioccur regexp)
+                    ;; Exit if we jump to this `ioccur-current-buffer',
+                    ;; otherwise, if C-g is hitten,
+                    ;; go back to buffer completion list.
+                    (unless ioccur-success
+                      (find-buffer)))
+               ;; C-g hit in buffer completion restore window config.
+               (unless ioccur-success
+                 (set-window-configuration win-conf))))))
+
+      (find-buffer))))
+
+(defvar savehist-save-minibuffer-history)
+
+;;;###autoload
+(defun ioccur-find-buffer-matching (regexp)
+  "Find all buffers containing a text matching REGEXP.
+See `ioccur-find-buffer-matching1'."
+  (interactive (list (let ((savehist-save-minibuffer-history nil))
+                       (read-from-minibuffer "Search for Pattern: "
+                                             nil nil nil '(ioccur-history . 0)
+                                             (thing-at-point 'symbol)))))
+  (ioccur-find-buffer-matching1 regexp current-prefix-arg))
+
+;;; Ioccur dired
+;;;###autoload
+(defun ioccur-dired (regexp)
+  (interactive (list (let ((savehist-save-minibuffer-history nil))
+                       (read-from-minibuffer "Search for Pattern: "
+                                             nil nil nil '(ioccur-history . 0)
+                                             (thing-at-point 'symbol)))))
+  (let ((buf-list (loop for f in (dired-get-marked-files)
+                     do (find-file-noselect f)
+                     unless (file-directory-p f)
+                     collect (get-buffer (file-name-nondirectory f)))))
+    (ioccur-find-buffer-matching1 regexp nil buf-list)))
+
+;;;###autoload
+(defun ioccur-restart ()
+  "Restart `ioccur' from `ioccur-buffer'.
+`ioccur-buffer' is erased and a new search is started."
+  (interactive)
+  (when (eq major-mode 'ioccur-mode)
+    (pop-to-buffer ioccur-current-buffer)
+    (kill-buffer ioccur-buffer)
+    (set-window-configuration ioccur-last-window-configuration)
+    (ioccur)))
+
+;;;###autoload
+(defun ioccur-quit ()
+  "Quit `ioccur-buffer'."
+  (interactive)
+  (let ((pos (with-current-buffer ioccur-current-buffer (point))))
+    (when ioccur-match-overlay
+      (delete-overlay ioccur-match-overlay))
+    (quit-window)
+    (set-window-configuration ioccur-last-window-configuration)
+    (pop-to-buffer ioccur-current-buffer)
+    (goto-char pos)))
+
+(defun ioccur-goto-line (lineno)
+  "Goto LINENO without modifying outline visibility if needed."
+  (goto-char (point-min))
+  (forward-line (1- lineno))
+  (if (and (fboundp 'org-reveal)
+           (or (derived-mode-p 'org-mode)
+               outline-minor-mode))
+      (org-reveal)))
+
+(defun ioccur-forward-line (n)
+  "Forward N lines but empty one's."
+  (let (pos)
+    (save-excursion
+      (forward-line n) (forward-line 0)
+      (when (looking-at "^\\s-[0-9]+:")
+        (forward-line 0) (setq pos (point))))
+  (when pos (goto-char pos) (ioccur-color-current-line))))
+
+;;;###autoload
+(defun ioccur-next-line ()
+  "Goto next line if it is not an empty line."
+  (interactive)
+  (ioccur-forward-line 1))
+
+;;;###autoload
+(defun ioccur-precedent-line ()
+  "Goto precedent line if it is not an empty line."
+  (interactive)
+  (ioccur-forward-line -1))
+
+;;;###autoload
+(defun ioccur-beginning-of-buffer ()
+  "Goto beginning of `ioccur-buffer'."
+  (interactive)
+  (when (looking-at "^\\s-[0-9]+:")
+    (goto-char (point-min))
+    (re-search-forward "^\\s-[0-9]+:" nil t)
+    (forward-line 0)
+    (ioccur-color-current-line)))
+
+;;;###autoload
+(defun ioccur-end-of-buffer ()
+  "Go to end of `ioccur-buffer'."
+  (interactive)
+  (when (looking-at "^\\s-[0-9]+:")
+    (goto-char (point-max))
+    (forward-line -1)
+    (ioccur-color-current-line)))
+
+(defun ioccur-jump (&optional win-conf)
+  "Jump to line in other buffer and put an overlay on it.
+Move point to first occurence of `ioccur-pattern'."
+  (let* ((line           (buffer-substring (point-at-bol) (point-at-eol)))
+         (pos            (string-to-number line)))
+    (unless (string= line "")
+      (if win-conf
+          (set-window-configuration win-conf)
+          (pop-to-buffer ioccur-current-buffer))
+      (ioccur-goto-line pos)
+      (recenter)
+      ;; Go to beginning of first occurence in this line
+      ;; of what match `ioccur-pattern'.
+      (when (funcall ioccur-search-function
+                     ioccur-pattern (point-at-eol) t)
+        (goto-char (match-beginning 0)))
+      (ioccur-color-matched-line))))
+
+;;;###autoload
+(defun ioccur-jump-and-quit ()
+  "Jump to line in other buffer and quit search buffer."
+  (interactive)
+  (run-hooks 'ioccur-save-pos-before-jump-hook)
+  (when (ioccur-jump ioccur-last-window-configuration)
+    (sit-for 0.3)
+    (when ioccur-match-overlay
+      (delete-overlay ioccur-match-overlay))))
+
+(defun ioccur-save-current-pos-to-mark-ring ()
+  "Save current buffer position to mark ring.
+To use this add it to `ioccur-save-pos-before-jump-hook'."
+  (with-current-buffer ioccur-current-buffer
+    (set-marker (mark-marker) ioccur-current-pos)
+    (push-mark ioccur-current-pos 'nomsg)))
+
+;;;###autoload
+(defun ioccur-jump-without-quit (&optional mark)
+  "Jump to line in `ioccur-current-buffer' without quitting."
+  (interactive)
+  (when (ioccur-jump ioccur-last-window-configuration)
+    (and mark (set-marker (mark-marker) (point))
+         (push-mark (point) 'nomsg))
+    (switch-to-buffer-other-window ioccur-buffer t)))
+
+;;;###autoload
+(defun ioccur-scroll-other-window-down ()
+  "Scroll other window down."
+  (interactive)
+  (let ((other-window-scroll-buffer ioccur-current-buffer))
+    (scroll-other-window 1)))
+
+;;;###autoload
+(defun ioccur-scroll-other-window-up ()
+  "Scroll other window up."
+  (interactive)
+  (let ((other-window-scroll-buffer ioccur-current-buffer))
+    (scroll-other-window -1)))
+
+(defun ioccur-scroll (n)
+  "Scroll `ioccur-buffer' and `ioccur-current-buffer' simultaneously."
+  (ioccur-forward-line n)
+  (ioccur-color-current-line)
+  (and (ioccur-jump ioccur-last-window-configuration)
+       (switch-to-buffer-other-window ioccur-buffer t)))
+
+;;;###autoload
+(defun ioccur-scroll-down ()
+  "Scroll down `ioccur-buffer' and `ioccur-current-buffer' simultaneously."
+  (interactive)
+  (ioccur-scroll 1))
+
+;;;###autoload
+(defun ioccur-scroll-up ()
+  "Scroll up `ioccur-buffer' and `ioccur-current-buffer' simultaneously."
+  (interactive)
+  (ioccur-scroll -1))
+
+;;;###autoload
+(defun ioccur-split-window ()
+  "Toggle split window, vertically or horizontally."
+  (interactive)
+  (with-current-buffer ioccur-current-buffer
+    (let ((old-size (window-height)))
+      (delete-window)
+      (set-window-buffer
+       (select-window (if (= (window-height) old-size)
+                          (split-window-vertically)
+                          (split-window-horizontally)))
+       (get-buffer ioccur-buffer)))))
+
+(defun ioccur-read-char-or-event (prompt)
+  "Replace `read-key' when not available using PROMPT."
+  (if (and (fboundp 'read-key)
+           (not ioccur-read-char-or-event-skip-read-key))
+      (read-key prompt)
+      (let* ((chr (condition-case nil (read-char prompt) (error nil)))
+             (evt (unless chr (read-event prompt))))
+        (or chr evt))))
+
+(defun ioccur-read-search-input (initial-input start-point)
+  "Read each keyboard input and add it to `ioccur-pattern'.
+INITIAL-INPUT is a string given as default input, generally thing at point.
+START-POINT is the point where we start searching in buffer."
+  (let* ((prompt         (propertize ioccur-search-prompt
+                                     'face 'minibuffer-prompt))
+         (inhibit-quit   (or (eq system-type 'windows-nt)
+                             (not (fboundp 'read-key))
+                             ioccur-read-char-or-event-skip-read-key))
+         (tmp-list       ())
+         (it-prec        nil)
+         (it-next        nil)
+         (cur-hist-elm   (car ioccur-history))
+         (start-hist     nil) ; Flag to notify if cycling history started.
+         yank-point
+         (index 0))
+    (unless (string= initial-input "")
+      (loop for char across initial-input do (push char tmp-list)))
+    (setq ioccur-pattern initial-input)
+    ;; Cycle history function.
+    ;;
+    (flet ((cycle-hist (arg)
+             ;; ARG can be positive or negative depending we call M-p or M-n.
+             (if ioccur-history
+                 (progn
+                   ;; Cycle history will start at second call,
+                   ;; at first call just use the car of hist ring.
+                   ;; We build a new iterator based on a sublist
+                   ;; starting at the current element of history.
+                   ;; This is a circular iterator. (no end)
+                   (if start-hist ; At first call, start-hist is nil.
+                       (progn
+                         (if (< arg 0)
+                             ;; M-p (move from left to right in hist ring).
+                             (unless it-prec ; Don't rebuild iterator if exists.
+                               (setq it-prec (ioccur-sub-next-circular
+                                              ioccur-history
+                                              cur-hist-elm :test 'equal))
+                               (setq it-next nil)) ; Kill forward iterator.
+                             ;; M-n (move from right to left in hist ring).
+                             (unless it-next ; Don't rebuild iterator if exists.
+                               (setq it-next (ioccur-sub-prec-circular
+                                              ioccur-history
+                                              cur-hist-elm :test 'equal))
+                               (setq it-prec nil))) ; kill backward iterator.
+                         (let ((it (or it-prec it-next)))
+                           (setq cur-hist-elm (ioccur-iter-next it))
+                           (setq tmp-list nil)
+                           (loop for char across cur-hist-elm
+                                 do (push char tmp-list))
+                           (setq ioccur-pattern cur-hist-elm)))
+                       ;; First call use car of history ring.
+                       (setq tmp-list nil)
+                       (loop for char across cur-hist-elm
+                             do (push char tmp-list))
+                       (setq ioccur-pattern cur-hist-elm)
+                       (setq start-hist t)))
+                 (message "No history available.") (sit-for 2) t))
+           ;; Insert INITIAL-INPUT.
+           ;;
+           (insert-initial-input ()
+             (unless (string= initial-input "")
+               (loop for char across initial-input
+                     do (push char (nthcdr index tmp-list)))))
+           ;; Maybe start timer.
+           ;;
+           (start-timer ()
+             (unless ioccur-search-timer
+               (ioccur-start-timer)))
+           ;; Maybe stop timer.
+           ;;
+           (stop-timer ()
+             (when ioccur-search-timer
+               (ioccur-cancel-search)))
+           ;; Kill pattern
+           ;;
+           (kill (str)
+             (with-current-buffer ioccur-current-buffer
+               (goto-char start-point)
+               (setq yank-point start-point))
+             (kill-new (substring str (- (length tmp-list) index)))
+             (setq tmp-list (nthcdr index tmp-list)))
+           ;; Add cursor in minibuffer
+           ;;
+           (set-cursor (str pos)
+             (setq pos (min index (1- (length tmp-list))))
+             (when (not (string= str ""))
+               (let* ((real-index (- (1- (length tmp-list)) pos))
+                      (cur-str (substring str real-index (1+ real-index))))
+                 (concat (substring str 0 real-index)
+                         (propertize cur-str 'display
+                                     (if (= index (length tmp-list))
+                                         (concat
+                                          (propertize "|" 'face 'ioccur-cursor)
+                                          cur-str)
+                                         (concat
+                                          cur-str
+                                          (propertize "|" 'face 'ioccur-cursor))))
+                         (substring str (1+ real-index)))))))
+      
+      ;; Start incremental loop.
+      (while (let ((char (ioccur-read-char-or-event
+                          (concat prompt (set-cursor ioccur-pattern index)))))
+               (message nil)
+               (case char
+                 ((not (?\M-p ?\M-n ?\t C-tab)) ; Reset history
+                  (setq start-hist nil)
+                  (setq cur-hist-elm (car ioccur-history)) t)
+                 ((down ?\C-n)                  ; Next line.
+                  (stop-timer) (ioccur-next-line)
+                  (ioccur-color-current-line) t)
+                 ((up ?\C-p)                    ; Precedent line.
+                  (stop-timer) (ioccur-precedent-line)
+                  (ioccur-color-current-line) t)
+                 (?\M-<                         ; Beginning of buffer.
+                  (when (ioccur-beginning-of-buffer)
+                    (stop-timer)) t)
+                 (?\M->                         ; End of buffer.
+                  (when (ioccur-end-of-buffer)
+                    (stop-timer)) t)
+                 ((?\C-d C-down)                ; Scroll both windows down.
+                  (stop-timer) (ioccur-scroll-down) t)
+                 ((?\C-u C-up)                  ; Scroll both windows up.
+                  (stop-timer) (ioccur-scroll-up) t)
+                 (?\r                           ; RET break and exit code.
+                  nil)
+                 (?\d                           ; Delete backward with DEL.
+                  (start-timer)
+                  (with-current-buffer ioccur-current-buffer
+                    (goto-char start-point)
+                    (setq yank-point start-point))
+                  (with-no-warnings (pop (nthcdr index tmp-list)))
+                  t)
+                 (?\C-g                         ; Quit and restore buffers.
+                  (setq ioccur-quit-flag t) nil)
+                 ((right ?\C-z)                 ; Persistent action.
+                  (ioccur-jump-without-quit) t)
+                 ((?\C- )                       ; Persistent action save mark.
+                  (ioccur-jump-without-quit t) t)                 
+                 ((left ?\C-j)                  ; Jump and kill search buffer.
+                  (setq ioccur-exit-and-quit-p t) nil)
+                 ((next ?\C-v)                  ; Scroll down.
+                  (ioccur-scroll-other-window-down) t)
+                 ((?\C-t ?\M-v prior)           ; Scroll up.
+                  (ioccur-scroll-other-window-up) t)
+                 (?\C-s                         ; Toggle split window.
+                  (ioccur-split-window) t)
+                 ((?\C-: ?\C-l)                 ; Toggle regexp/litteral search.
+                  (start-timer)
+                  (if (eq ioccur-search-function 're-search-forward)
+                      (setq ioccur-search-function 'search-forward)
+                      (setq ioccur-search-function 're-search-forward)) t)
+                 (?\C-k                         ; Kill input.
+                  (start-timer)
+                  (kill ioccur-pattern) (setq index 0) t)
+                 ((?\M-k ?\C-x)                 ; Kill input as sexp.
+                  (start-timer)
+                  (let ((sexp (prin1-to-string ioccur-pattern)))
+                    (kill sexp)
+                    (setq ioccur-quit-flag t)
+                    (setq ioccur-message (format "Killed: %s" sexp)))
+                  nil)
+                 (?\C-y                         ; Yank from `kill-ring'.
+                  (setq initial-input (car kill-ring))
+                  (insert-initial-input) t)
+                 (?\C-w                         ; Yank stuff at point.
+                  (start-timer)
+                  (with-current-buffer ioccur-current-buffer
+                    ;; Start to initial point if C-w have never been hit.
+                    (unless yank-point (setq yank-point start-point))
+                    ;; After a search `ioccur-print-results' have put point
+                    ;; to point-max, so reset position.
+                    (when yank-point (goto-char yank-point))
+                    (let ((pmax (point-at-eol))
+                          (eoword (save-excursion (forward-word 1) (point))))
+                      ;; Don't yank further than eol.
+                      (unless (> eoword pmax)
+                        (goto-char eoword)
+                        (setq initial-input (buffer-substring-no-properties
+                                             yank-point (point)))
+                        (setq yank-point (point)) ; End of last forward-word
+                        (insert-initial-input)))) t)
+                 ((?\t ?\M-p)                   ; Precedent history elm.
+                  (start-timer)
+                  (setq index 0)
+                  (cycle-hist -1))
+                 ((backtab ?\M-n)               ; Next history elm.
+                  (start-timer)
+                  (setq index 0)
+                  (cycle-hist 1))
+                 (?\C-q                         ; quoted-insert.
+                  (stop-timer)
+                  (let ((char (with-temp-buffer
+                                (call-interactively 'quoted-insert)
+                                (buffer-string))))
+                    (push (string-to-char char) tmp-list))
+                  (start-timer)
+                  t)
+                 ;; Movements in minibuffer
+                 (?\C-b                         ; backward-char.
+                  (setq index (min (1+ index) (length tmp-list))) t)
+                 (?\C-f                         ; forward-char.
+                  (setq index (max (1- index) 0)) t)
+                 (?\C-a                         ; move bol.
+                  (setq index (length tmp-list)) t)
+                 (?\C-e                         ; move eol.
+                  (setq index 0) t)
+                 (t                             ; Store character.
+                  (start-timer)
+                  (if (characterp char)
+                      (push char (nthcdr index tmp-list))
+                      (setq unread-command-events
+                            (nconc (mapcar 'identity
+                                           (this-single-command-raw-keys))
+                                   unread-command-events))
+                      nil))))
+        (setq ioccur-pattern (apply 'string (reverse tmp-list)))))))
+
+(defun ioccur-print-buffer (regexp)
+  "Pretty Print results matching REGEXP in `ioccur-buffer'."
+  ;; FIXME: Why force tooltip-mode?  What about sessions with both GUI and
+  ;; tty frames?
+  (unless (window-system) (setq tooltip-use-echo-area t) (tooltip-mode 1))
+  (let* ((cur-method (if (eq ioccur-search-function 're-search-forward)
+                         "Regexp" "Literal"))
+         (title      (propertize
+                      (format
+                       "* Ioccur %s searching %s"
+                       cur-method
+                       (if (window-system)
+                           "* (`C-:' to Toggle Method, Mouse over for help.)"
+                           "* (`C-l' to Toggle Method.)"))
+                      'face 'ioccur-title-face
+                      'help-echo
+                      "                  Ioccur map:\n
+C-n or <down>      Next line.\n
+C-p or <up>        Precedent line.\n
+C-v and M-v/C-t    Scroll up and down.\n
+C-z or <right>     Jump without quitting loop.\n
+C-TAB              Jump without quitting and save to mark-ring.\n
+C-j or <left>      Jump and kill `ioccur-buffer'.\n
+RET                Exit keeping `ioccur-buffer'.\n
+DEL                Remove last character entered.\n
+C-k                Kill current input.\n
+C-a/e/b/f          Movements in minibuffer.\n
+M-k/C-x            Kill current input as sexp.\n
+C-w                Yank stuff at point.\n
+C-g                Quit and restore buffer.\n
+C-s                Toggle split window.\n
+C-:/l              Toggle regexp/litteral search.\n
+C-down or C-u      Follow in other buffer.\n
+C-up/d or C-d      Follow in other buffer.\n
+M-<, M->           Beginning and end of buffer.\n
+M-p/n or tab/S-tab History."))
+           wrong-regexp)
+    (if (string= regexp "")
+        (progn (erase-buffer) (insert title "\n\n"))
+        (erase-buffer)
+        (condition-case _
+            (ioccur-print-results regexp)
+          (error (setq wrong-regexp t)))
+        (goto-char (point-min))
+        (if wrong-regexp
+            (insert
+             title "\n\n"
+             (propertize "Invalid Regexp: "
+                         'face 'ioccur-invalid-regexp)
+             (format "No match for `%s'" regexp) "\n\n")
+            (insert title "\n\n"
+                    (propertize (format "Found %s occurences matching "
+                                        ioccur-count-occurences)
+                                'face 'underline)
+                    (propertize regexp 'face 'ioccur-regexp-face)
+                    (propertize
+                     (format " in %s" ioccur-current-buffer)
+                     'face 'underline) "\n\n")
+            (ioccur-color-current-line)))))
+
+(defun ioccur-start-timer ()
+  "Start ioccur incremental timer."
+  (setq ioccur-search-timer
+        (run-with-idle-timer
+         ioccur-search-delay 'repeat
+         #'(lambda ()
+             (ioccur-print-buffer
+              ioccur-pattern)))))
+
+(defun ioccur-send-message ()
+  "Send message defined in `ioccur-message'."
+  (message ioccur-message))
+
+;;;###autoload
+(defun ioccur (&optional initial-input)
+  "Incremental search of lines in current buffer matching input.
+With a prefix arg search symbol at point (INITIAL-INPUT).
+
+While you are incremental searching, commands provided are:
+
+C-n or <down>  next line.
+C-p or <up>    precedent line.
+C-v and M-v    scroll up and down.
+C-z or <right> jump without quitting loop.
+C-j or <left>  jump and kill `ioccur-buffer'.
+RET            exit keeping `ioccur-buffer'.
+DEL            remove last character entered.
+C-k            Kill current input from cursor to eol.
+C-a/e/b/f      Movements in minibuffer.
+M-k            Kill current input as sexp.
+C-w            Yank stuff at point.
+C-g            quit and restore buffer.
+C-s            Toggle split window.
+C-:            Toggle regexp/litteral search.
+C-down         Follow in other buffer.
+C-up           Follow in other buffer.
+M-p/n          Precedent and next `ioccur-history' element.
+M-<, M->       Beginning and end of buffer.
+
+Unlike minibuffer history, cycling in ioccur history have no end:
+
+M-p ,-->A B C D E F G H I---,
+    |                       |
+    `---I H G F E D C B A<--'
+
+M-n ,-->I H G F E D C B A---,
+    |                       |
+    `---A B C D E F G H I<--'
+
+
+Special NOTE for terms:
+=======================
+  tab/S-tab are bound to history.
+  C-d/u are for following in other buffer.
+  Use C-t to Scroll up.
+When you quit incremental search with RET, see `ioccur-mode'
+for commands provided in the `ioccur-buffer'."
+  (interactive "P")
+  (let (pop-up-frames)
+    (setq ioccur-exit-and-quit-p nil)
+    (setq ioccur-success nil)
+    (setq ioccur-current-buffer (buffer-name (current-buffer)))
+    (when ioccur-fontify-buffer-p
+      (message "Fontifying buffer...Please wait it could be long.")
+      (jit-lock-fontify-now) (message nil))
+    (setq ioccur-buffer (concat "*ioccur-" ioccur-current-buffer "*"))
+    (setq ioccur-last-window-configuration (current-window-configuration))
+    (setq ioccur-current-pos (point))
+    (if (and (not initial-input)
+             (get-buffer ioccur-buffer)
+             (not (get-buffer-window ioccur-buffer)))
+        ;; An hidden `ioccur-buffer' exists jump to it and reuse it.
+        (switch-to-buffer-other-window ioccur-buffer t)
+        ;; `ioccur-buffer' doesn't exists or is visible, start searching
+        ;; Creating a new `ioccur-buffer' or reusing the visible one after
+        ;; erasing it.
+        (let* ((init-str (if initial-input
+                             (if (stringp initial-input)
+                                 initial-input (thing-at-point 'symbol))
+                             ""))
+               (len      (length init-str))
+               (curpos   (point))
+               (inhibit-read-only t)
+               (cur-mode (with-current-buffer ioccur-current-buffer
+                           (prog1
+                               major-mode
+                             ;; If current `major-mode' is wdired
+                             ;; Turn it off.
+                             (when (eq major-mode 'wdired-mode)
+                               (wdired-change-to-dired-mode)))))
+               str-no-prop)
+          (set-text-properties 0 len nil init-str)
+          (setq str-no-prop init-str)
+          (pop-to-buffer (get-buffer-create ioccur-buffer))
+          (ioccur-mode)
+          (unwind-protect
+               ;; Start incremental search.
+               (progn
+                 (ioccur-start-timer)
+                 (ioccur-read-search-input str-no-prop curpos))
+            ;; At this point incremental search loop is exited.
+            (progn
+              (ioccur-cancel-search)
+              (kill-local-variable 'mode-line-format)
+              (when (equal (buffer-substring (point-at-bol) (point-at-eol)) "")
+                (setq ioccur-quit-flag t))
+              (cond (ioccur-quit-flag ; C-g hit or empty `ioccur-buffer'.
+                     (kill-buffer ioccur-buffer)
+                     (pop-to-buffer ioccur-current-buffer)
+                     (when ioccur-match-overlay
+                       (delete-overlay ioccur-match-overlay))
+                     (set-window-configuration ioccur-last-window-configuration)
+                     (goto-char curpos)
+                     (ioccur-send-message)
+                     ;; If `ioccur-message' is non--nil, thats mean we exit
+                     ;; with a specific action other than `C-g',
+                     ;; e.g kill-as-sexp, so we save history.
+                     (when ioccur-message (ioccur-save-history)))
+                    (ioccur-exit-and-quit-p ; Jump and kill `ioccur-buffer'.
+                     (ioccur-jump-and-quit)
+                     (kill-buffer ioccur-buffer)
+                     (ioccur-send-message) (ioccur-save-history))
+                    (t                 ; Jump keeping `ioccur-buffer'.
+                     (ioccur-jump)
+                     (pop-to-buffer ioccur-buffer)
+                     (setq buffer-read-only t)
+                     (ioccur-save-history)))
+              ;; Maybe reenable `wdired-mode'.
+              (when (eq cur-mode 'wdired-mode) (wdired-change-to-wdired-mode))
+              (setq ioccur-count-occurences 0)
+              (setq ioccur-quit-flag nil)
+              (setq ioccur-message nil)
+              (setq ioccur-search-function ioccur-default-search-function)
+              (setq ioccur-current-pos nil)))))))
+
+(defun ioccur-save-history ()
+  "Save last ioccur element found in `ioccur-history'."
+  (unless (string= ioccur-pattern "")
+    (setq ioccur-history
+          (cons ioccur-pattern (delete ioccur-pattern ioccur-history)))
+    (when (> (length ioccur-history) ioccur-max-length-history)
+      (setq ioccur-history (delete (car (last ioccur-history))
+                                         ioccur-history)))
+    (setq ioccur-success t)))
+
+(defun ioccur-cancel-search ()
+  "Cancel timer used for ioccur searching."
+  (when ioccur-search-timer
+    (cancel-timer ioccur-search-timer)
+    (setq ioccur-search-timer nil)))
+
+(defun ioccur-color-current-line ()
+  "Highlight and underline current line in `ioccur-buffer'."
+  (if ioccur-occur-overlay
+      (move-overlay ioccur-occur-overlay
+                    (point-at-bol) (1+ (point-at-eol)) ioccur-buffer)
+      (setq ioccur-occur-overlay
+            (make-overlay (point-at-bol) (1+ (point-at-eol)) ioccur-buffer)))
+  (overlay-put ioccur-occur-overlay 'face 'ioccur-overlay-face))
+
+(defun ioccur-color-matched-line ()
+  "Highlight and underline current position \
+of matched line in `ioccur-current-buffer'."
+  (if ioccur-match-overlay
+      (move-overlay ioccur-match-overlay
+                    (point-at-bol) (1+ (point-at-eol)))
+      (setq ioccur-match-overlay
+            (make-overlay (point-at-bol) (1+ (point-at-eol)))))
+  (overlay-put ioccur-match-overlay 'face 'ioccur-match-overlay-face))
+
+            
+(provide 'ioccur)
+
+;;; ioccur.el ends here
diff --git a/packages/jgraph-mode/jgraph-mode.el b/packages/jgraph-mode/jgraph-mode.el
new file mode 100644 (file)
index 0000000..8f211aa
--- /dev/null
@@ -0,0 +1,228 @@
+;;; jgraph-mode.el --- Major mode for Jgraph files
+
+;; Copyright (C) 2006, 2011-2012  Free Software Foundation, Inc
+
+;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
+;; Version: 1.0
+;; Keywords: tex, wp
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Simple editing mode for the Jgraph graph plotting tool.
+;; You can find more info at http://web.eecs.utk.edu/~plank/plank/jgraph/jgraph.html
+
+;;; Code:
+
+(defgroup jgraph-mode ()
+  "Major mode for Jgraph files."
+  :group 'tools)
+
+(defvar jgraph-mode-map
+  (let ((map (make-sparse-keymap)))
+    map)
+  "Keymap for `jgraph-mode'.")
+
+;; (easy-menu-define jgraph-mode-menu jgraph-mode-map
+;;   "Menu for `jgraph-mode'."
+;;   '("Jgraph"
+;;     ["Do some stuff" jgraph-do-bar :active mark-active]
+;;     "..."
+;;     ["Do some other" jgraph-do-foo]
+;;     ("Sub-jgraph"
+;;      ["Haha" jgraph-crash])
+;;     ...))
+
+(defvar jgraph-mode-syntax-table
+  (let ((st (make-syntax-table)))
+    ;; tokens are made of any non-whitespace chars.
+    (map-char-table (lambda (c v) (if (not (memq (car v) '(0 2 3)))
+                                 (modify-syntax-entry c "_" st)))
+                    st)
+    (modify-syntax-entry ?\( "_ 1n" st)
+    (modify-syntax-entry ?\) "_ 4n" st)
+    (modify-syntax-entry ?\* "_ 23" st)
+    st)
+  "Syntax table for `jgraph-mode'.")
+
+(defun jgraph-extract-commands ()
+  (let ((sections nil)
+        (tok-cmds nil))
+    (goto-char (point-min))
+    (while (and (re-search-forward "^\\.RE" nil t)
+                (re-search-forward "^\\.B \\(.*\\)" nil t))
+      (let ((section (downcase (match-string 1)))
+            (commands nil)
+            (end (save-excursion
+                   (and (re-search-forward "^\\.RE" nil t)
+                        (match-beginning 0)))))
+        (setq section (replace-regexp-in-string "simple" "" section))
+        (setq section (replace-regexp-in-string "advanced" "" section))
+        (setq section (replace-regexp-in-string "editing" "" section))
+        (setq section (replace-regexp-in-string "commands" "" section))
+        (setq section (replace-regexp-in-string "\\\\" "" section))
+        (setq section (replace-regexp-in-string "\\` *" "" section))
+        (setq section (replace-regexp-in-string " *\\'" "" section))
+        (setq section (replace-regexp-in-string " " "-" section))
+        (setq section (intern section))
+        (while (re-search-forward "^\\.TP\n\\(?:\\.B \\|\\\\fB\\)\\([^ :\t\n\\]+\\)\\([ {\\fI]*token\\)?" end 'move)
+          (let ((cmd (match-string-no-properties 1)))
+            (if (match-end 2) (add-to-list 'tok-cmds cmd))
+            (add-to-list 'commands cmd)))
+        (setq commands (nreverse commands))
+        (let ((sec (assoc section sections)))
+          (if sec (nconc sec commands)
+            (push (cons section commands) sections)))))
+    (nreverse (cons (cons 'token tok-cmds) sections))))
+
+(defconst jgraph-commands
+  ;; Obtained by running (jgraph-extract-commands) in the jgraph.1 nroff doc.
+  '((top-level-description "newgraph" "graph" "copygraph" "newpage" "X" "Y"
+                           "bbox" "preamble" "epilogue")
+    (graph "xaxis" "yaxis" "newcurve" "curve" "newline" "copycurve" "title"
+           "legend" "newstring" "string" "copystring" "border" "noborder"
+           "clip" "noclip" "inherit_axes" "x_translate" "y_translate" "X" "Y")
+    (axis "linear" "log" "min" "max" "size" "log_base" "hash" "shash" "mhash"
+          "precision" "hash_format" "label" "draw_at" "nodraw" "draw"
+          "grid_lines" "no_grid_lines" "mgrid_lines" "no_mgrid_lines" "gray"
+          "color" "grid_gray" "grid_color" "mgrid_gray" "mgrid_color" "hash_at"
+          "mhash_at" "hash_label" "hash_labels" "hash_scale"
+          "draw_hash_marks_at" "draw_hash_labels_at" "auto_hash_marks"
+          "no_auto_hash_marks" "auto_hash_labels" "no_auto_hash_labels"
+          "draw_axis" "no_draw_axis" "draw_axis_label" "no_draw_axis_label"
+          "draw_hash_marks" "no_draw_hash_marks" "draw_hash_labels"
+          "no_draw_hash_labels")
+    (curve "pts" "x_epts" "y_epts" "marktype" "marksize" "mrotate" "gray"
+           "color" "fill" "cfill" "pattern" "poly" "nopoly" "pfill" "pcfill"
+           "ppattern" "gmarks" "postscript" "eps" "larrows" "rarrows"
+           "nolarrows" "norarrows" "larrow" "rarrow" "nolarrow" "norarrow"
+           "asize" "afill" "apattern" "linetype" "glines" "linethickness"
+           "bezier" "nobezier" "clip" "noclip" "label")
+    (label "x" "y" "font" "fontsize" "linesep" "hjl" "hjc" "hjr" "vjt" "vjc"
+           "vjb" "rotate" "lgray" "lcolor")
+    (legend "on" "off" "linelength" "linebreak" "midspace" "defaults" "left"
+            "top" "bottom" "x" "y" "custom")
+    (hash-label "at")
+    ;; Commands that can be followed by a token.
+    (token "apattern" "eps" "postscript" "ppattern" "pattern" "hash_format"
+           "epilogue" "preamble")))
+
+(defconst jgraph-file-include-commands
+  '("include" "preamble" "epilogue" "postscript" "eps"))
+
+(defvar jgraph-font-lock-keywords
+  `((,(concat "\\_<" (regexp-opt jgraph-file-include-commands)
+              "[ \t]+\\(\\sw+\\)")
+     (1 font-lock-constant-face))
+    (,(concat "^" (regexp-opt
+                   (cdr (assoc 'top-level-description jgraph-commands)))
+              "\\_>")
+     . font-lock-function-name-face)
+    (,(concat "\\_<"
+              (regexp-opt (cons "include"
+                                (apply 'append (mapcar 'cdr jgraph-commands))))
+              "\\_>") . font-lock-keyword-face)
+    )
+  "Keyword highlighting specification for `jgraph-mode'.")
+
+;; (defvar jgraph-imenu-generic-expression
+;;   '(("Vars" "^defvar[ \t]+\\(\\(\\sw\\|\\s_\\)+\\)" 1)
+;;     (nil "^function[ \t]+\\(\\(\\sw\\|\\s_\\)+\\)" 1)
+;;     ...)
+;;   "Regex patterns for the index menu of `jgraph-mode'.")
+
+;; (defvar jgraph-outline-regexp "(\\|;;;+"
+;;   "Regexp for `outline-minor-mode' in `jgraph-mode'.")
+
+;; Abbreviations and Skeletons
+
+;; (define-skeleton jgraph-insert-if
+;;   "Jgraph mode skeleton for if..then expressions."
+;;   nil
+;;   "if " _ \n "then " _ \n "else " _ \n "fi" \n)
+
+;; (define-skeleton jgraph-insert-begend
+;;   "Jgraph mode skeleton for begin<x>...end<x> expressions."
+;;   "Block name: "
+;;   "begin<" str ">" \n _ \n "end<" str ">" \n)
+
+;; (define-abbrev-table 'jgraph-mode-abbrev-table
+;;   '(("if" "" jgraph-insert-if nil t)
+;;     ("cwcc" "call-with-current-continuation" nil nil t)
+;;     ("begin" "" jgraph-insert-begend nil t)
+;;     ))
+
+;;;###autoload
+(add-to-list 'auto-mode-alist '("\\.jgr\\'" . jgraph-mode))
+
+;;;###autoload
+(define-derived-mode jgraph-mode prog-mode "Jgraph"
+  "A major mode for editing Jgraph files."
+  (set (make-local-variable 'comment-start) "(* ")
+  (set (make-local-variable 'comment-start-skip) "\\_<(\\*\\_>[ \t]*")
+  (set (make-local-variable 'comment-end) " *)")
+  (set (make-local-variable 'comment-start-skip) "[ \t]*\\_<\\*)\\_>")
+  (set (make-local-variable 'font-lock-defaults)
+       '(jgraph-font-lock-keywords))
+  (set (make-local-variable 'syntax-propertize-function)
+       (syntax-propertize-rules
+        ;; FIXME: naive(broken) multiline pattern.
+        ("\\s-\\(:\\)\\s-\\(?:.*\\\\\n\\)*.*\\(\n\\)" (1 "|") (2 "|"))))
+  (set (make-local-variable 'indent-line-function) 'jgraph-indent-line)
+  ;; (set (make-local-variable 'imenu-generic-expression)
+  ;;      jgraph-imenu-generic-expression)
+  ;; (set (make-local-variable 'outline-regexp) jgraph-outline-regexp)
+  )
+
+;;; Indentation
+
+(defcustom jgraph-indent-offset 4
+  "Basic indentation step size in `jgraph-mode'."
+  :group 'jgraph-mode
+  :type 'integer)
+
+(defun jgraph-indent-line ()
+  "Indent current line of Jgraph code."
+  (interactive)
+  (let* ((savep (point))
+        (indent (or (with-demoted-errors
+                       (save-excursion
+                         (forward-line 0)
+                         (skip-chars-forward " \t")
+                         (if (>= (point) savep) (setq savep nil))
+                         (jgraph-indent-calculate)))
+                     'noindent)))
+    (if (not (numberp indent))
+        indent
+      (setq indent (max indent 0))
+      (if savep
+          (save-excursion (indent-line-to indent))
+        (indent-line-to indent)))))
+
+(defun jgraph-indent-calculate ()
+  "Return the column to which the current line should be indented."
+  (save-excursion
+    (skip-chars-forward " \t")
+    (or (when (looking-at (concat (regexp-opt
+                                   (cdr (assoc 'top-level-description
+                                               jgraph-commands)))
+                                  "\\_>"))
+          0)
+        'noindent)))
+
+(provide 'jgraph-mode)
+;;; jgraph-mode.el ends here
diff --git a/packages/js2-mode/.gitignore b/packages/js2-mode/.gitignore
new file mode 100644 (file)
index 0000000..c531d98
--- /dev/null
@@ -0,0 +1 @@
+*.elc
similarity index 100%
rename from .travis.yml
rename to packages/js2-mode/.travis.yml
similarity index 100%
rename from Makefile
rename to packages/js2-mode/Makefile
similarity index 100%
rename from README.md
rename to packages/js2-mode/README.md
similarity index 100%
rename from js2-mode.el
rename to packages/js2-mode/js2-mode.el
diff --git a/packages/jumpc/jumpc.el b/packages/jumpc/jumpc.el
new file mode 100644 (file)
index 0000000..bf28d0c
--- /dev/null
@@ -0,0 +1,235 @@
+;;; jumpc.el --- jump to previous insertion points  -*- coding: utf-8; lexical-binding: t -*-
+
+;; Copyright (C) 2013  Free Software Foundation, Inc.
+
+;; Author: Ivan Kanis <ivan@kanis.fr>
+;; Version: 3.0
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This implements the jump cursor feature found in vim.
+
+;; A jump is added every time you insert a character on a different
+;; line.
+
+;; Jumps are remembered in a jump list.  With the C-o and C-i
+;; command you can go to cursor positions before older jumps, and back
+;; again.  Thus you can move up and down the list.
+
+;; Jumps are read and saved in the same configuration file as vim so
+;; you can switch back and forth between the two editors
+
+;;;; THANKS:
+
+;; Bram Moolenaar for writing a fine editor and helping needy children
+;; in Uganda
+
+;; Stefan Monnier for telling me how to add C-i binding
+
+;; Ted Zlatanov for suggesting to use less agressive key bindings
+
+;;;; BUGS:
+
+;;;; INSTALLATION:
+
+;; put this file somewhere in your load path then put the put the
+;; following in your .emacs:
+;;
+;; (require 'jumpc)
+;; (jumpc)
+;;
+;; Then either:
+;;
+;; (jumpc-bind-vim-key)
+;;
+;; Or:
+;;
+;; (global-set-key (kbd "<f8>") 'jumpc-jump-backward)
+;; (global-set-key (kbd "<f9>") 'jumpc-jump-forward)
+;;
+;; The first will bind C-i and C-o just like vim.  The second bind
+;; function keys 8 and 9. Of course you can pick any keys you like.  If
+;; you use Emacs on a console you will have to pick the second form as
+;; C-i and TAB are the same thing.
+;;
+;; If you use autoload you don't need to require the file
+
+;;;; TODO
+
+;; search for TODO within the file
+
+;; Add rotate jump list feature in vim
+;;   defined as JUMPLIST_ROTATE in mark.c
+;;     "If last used entry is not at the top, put it at the top by
+;;     rotating the stack until it is (the newer entries will be at
+;;     the bottom). Keep one entry (the last used one) at the top."
+
+;; Add a bit of looseness.  For example do not add jump points within
+;; three lines of the last one.
+
+;; Add jump list displaying each jump with the file and line in the
+;; file.  Clicking on a line takes you to the jump location.
+
+;; Add more commands that will insert jump.  Vim does: "'", "`", "G",
+;; "/", "?", "n", "N", "%", "(", ")", "[[", "]]", "{", "}", ":s",
+;; ":tag", "L", "M", "H"
+
+;; Remove files that do not exist when reading and writing from
+;; configuration file
+
+;;;; VERSION
+
+;; version 1
+
+;; version 2
+;;  - don't force vim key bindings
+;;  - remove debugging message
+;;  - insert a jump moves the index back to top of list
+;;  - insert jumps goes back to top of list
+
+;; version 3
+;;  - remove deleted files
+
+;;; Code:
+
+(defvar jumpc-file "~/.viminfo"
+  "File where jump information is written.")
+
+(defvar jumpc-list nil
+  "List of filenames and position to jump to.")
+
+(defvar jumpc-index 0
+  "Index of jump, 0 is the newest entry.")
+
+(defun jumpc-read-list ()
+  "Read jump list from file."
+  (when (file-exists-p jumpc-file)
+    (with-temp-buffer
+      (insert-file-contents jumpc-file)
+      (goto-char (point-min))
+      (when (re-search-forward "# Jumplist (newest first):" nil t)
+        (while (re-search-forward
+                "-'  \\([0-9]*\\)  \\([0-9]*\\)  \\(.*\\)" nil t)
+          (add-to-list 'jumpc-list
+                       (list (string-to-number (match-string 1))
+                             (string-to-number (match-string 2))
+                             (expand-file-name (match-string 3)))
+                       jumpc-list)))))
+  jumpc-list)
+
+(defun jumpc-write-list ()
+  "Write jump list to file."
+  (let (bgn end)
+    (jumpc-remove-deleted-file)
+    (find-file jumpc-file)
+    (goto-char (point-min))
+    (setq bgn (re-search-forward "# Jumplist (newest first):" nil t))
+    (if bgn
+        (progn
+          (setq end (re-search-forward "^$"))
+          (delete-region bgn end))
+      ;; looks like the entry doesn't exist, tack it at the end
+      (goto-char (point-max))
+      (insert "# Jumplist (newest first):"))
+    (insert "\n")
+    (dolist (line jumpc-list)
+      (insert (format "-'  %d  %d  %s\n"
+                      (nth 0 line) (nth 1 line)
+                      (abbreviate-file-name (nth 2 line)))))
+    (save-buffer)))
+
+(defun jumpc-jump-backward ()
+  "Jump backward in list of jumps."
+  (interactive)
+  (jumpc-jump 1))
+
+(defun jumpc-jump-forward ()
+  "Jump forward in list of jumps."
+  (interactive)
+  (jumpc-jump -1))
+
+;; TODO make it interactive with COUNT as argument
+(defun jumpc-jump (count)
+  "Jump COUNT from current index."
+  (jumpc-remove-deleted-file)
+  (let ((length (length jumpc-list)) file-name)
+    ;; first backward motion adds current point in the list
+    (when (and (> count 0) (= jumpc-index 0))
+      (jumpc-insert))
+    (setq jumpc-index (+ jumpc-index count))
+    ;; fix index if it's out of boundary
+    (cond
+     ((< jumpc-index 0)
+      (setq jumpc-index 0))
+     ((> jumpc-index length)
+      (setq jumpc-index length))
+     (t
+      (setq file-name (nth 2 (nth jumpc-index jumpc-list)))
+      (find-file file-name)
+      (goto-char (point-min))
+      (forward-line (1- (nth 0 (nth jumpc-index jumpc-list))))
+      (move-to-column (nth 0 (nth jumpc-index jumpc-list)))))))
+
+(defun jumpc-insert ()
+  "Insert jump location."
+  ;; It means we are going back to the top of the list
+  (setq jumpc-index 0)
+  (when buffer-file-name
+    (when (not (= (line-number-at-pos) (nth 0 (car jumpc-list))))
+      (setq jumpc-list
+            (cons (list (line-number-at-pos) (current-column) buffer-file-name)
+                  jumpc-list)))))
+
+(defun jumpc-remove-deleted-file ()
+  "Remove deleted file in the list.
+Returns list minus deleted files."
+  (let ((length (length jumpc-list))
+        (index 0)
+        reduced-list element)
+    (while (< index length)
+      (setq element (nth index jumpc-list))
+      (when (file-exists-p (nth 2 element))
+        (setq reduced-list (cons element reduced-list)))
+      (setq index (1+ index)))
+    (setq jumpc-list reduced-list)))
+
+(defun jumpc-bind-vim-key ()
+  "Bind keys just like vim."
+  (global-set-key (kbd "C-o") 'jumpc-jump-backward)
+  (define-key input-decode-map [?\C-i] [control-i])
+  (global-set-key [control-i] 'jumpc-jump-forward))
+
+;;;###autoload
+(defun jumpc ()
+  "Initialize jump cursor."
+  (interactive)
+  (setq jumpc-list (jumpc-read-list))
+  (defadvice self-insert-command
+    (after jumpc-insert activate)
+    "Insert jump position after insertion."
+    (jumpc-insert))
+  (add-hook 'kill-emacs-hook 'jumpc-write-list))
+
+
+;; vi:et:sw=4:ts=4:
+;; Local Variables:
+;; compile-command: "make"
+;; End:
+
+(provide 'jumpc)
+;;; jumpc.el ends here
diff --git a/packages/lex/lex-parse-re.el b/packages/lex/lex-parse-re.el
new file mode 100644 (file)
index 0000000..e5e954a
--- /dev/null
@@ -0,0 +1,258 @@
+;;; lex-parse-re.el --- Parse Emacs regexps using Lex
+
+;; Copyright (C) 2008,2013  Free Software Foundation, Inc.
+
+;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
+;; Keywords:
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This exports lex-parse-re, but it also defines lex--parse-charset which is
+;; used internally by lex-compile to handle charsets specified as a string.
+
+;;; Code:
+
+(require 'lex)
+
+;;; Regexp parsers.
+
+(defun lex--tokenizer (lex string)
+  (let ((tokens ())
+        (i 0)
+        tmp)
+    (while (and (< i (length string))
+                (setq tmp (lex-match-string lex string i)))
+      (push (cons (car tmp) (substring string i (setq i (cadr tmp)))) tokens))
+    (nreverse tokens)))
+
+(defun lex--parse-charset (string)
+  (let ((i 0)
+        (ranges ()))
+    (when (eq (aref string i) ?^)
+      (push 'not ranges)
+      (setq i (1+ i)))
+    (let ((op nil)
+          (case-fold-search nil))
+      (while (not (eq op 'stop))
+        (lex-case string i
+          ((seq "[:" (0+ (char (?a . ?z) (?A . ?Z))) ":]")
+           (push (intern (substring string (+ 2 (match-beginning 0))
+                                    (- (match-end 0) 2)))
+                 ranges))
+          ((seq anything "-" anything)
+           (push (cons (aref string (match-beginning 0))
+                       (aref string (1- (match-end 0))))
+                 ranges))
+          (anything (push (aref string (1- (match-end 0))) ranges))
+          (eob (setq op 'stop))))
+
+      `(char ,@(nreverse ranges)))))
+
+(defconst lex--parse-re-lexspec
+  '(((or "*" "+" "?" "*?" "+?" "??") . suffix)
+    ((seq "[" (opt "^") (opt "]")
+          (0+ (or (seq (char not ?\]) "-" (char not ?\]))
+                  (seq "[:" (1+ (char (?a . ?z) (?A . ?Z))) ":]")
+                  (char not ?\]))) "]") . charset)
+    ((seq "\\c" anything) . category)
+    ((seq "\\C" anything) . not-category)
+    ((seq "\\s" anything) . syntax)
+    ((seq "\\S" anything) . not-syntax)
+    ((seq "\\" (char (?1 . ?9))) . backref)
+    ("\\'" . eob)
+    ("\\`" . bob)
+    ("." . dot)
+    ("^" . bol)
+    ("$" . eol)
+    ("." . dot)
+    ("\\<" . bow)
+    ("\\>" . eow)
+    ("\\_<" . symbol-start)
+    ("\\_>" . symbol-end)
+    ("\\w" . wordchar)
+    ("\\W" . not-wordchar)
+    ("\\b" . word-boundary)
+    ("\\B" . not-word-boundary)
+    ("\\=" . point)
+    ((or (seq ?\\ anything) anything) . char)))
+
+
+(defconst lex--parse-ere-lexer
+  (let ((case-fold-search nil))
+    (lex-compile
+     (append '(("(?:" . shy-group)
+               ("|"  . or)
+               ((seq "{" (0+ (char (?0 . ?9)))
+                     (opt (seq "," (0+ (char (?0 . ?9))))) "}") . repeat)
+               ((or ")" eob) . stop)
+               ("(" . group))
+             lex--parse-re-lexspec))))
+
+(defconst lex--parse-bre-lexer
+  (let ((case-fold-search nil))
+    (lex-compile
+     (append '(("\\(?:" . shy-group)
+               ("\\|"  . or)
+               ((seq "\\{" (0+ (char (?0 . ?9)))
+                     (opt (seq "," (0+ (char (?0 . ?9))))) "\\}") . repeat)
+               ((or "\\)" eob) . stop)
+               ("\\(" . group))
+             lex--parse-re-lexspec))))
+
+(defun lex--parse-re (string i lexer)
+  (let ((stack ())
+        (op nil)
+        (res nil)
+        tmp)
+    (while (and (not (eq op 'stop))
+                (setq tmp (lex-match-string lexer string i)))
+      (pcase (car tmp)
+        (`shy-group
+         (setq tmp (lex--parse-re string (cadr tmp) lexer))
+         (unless (eq (aref string (1- (cadr tmp))) ?\))
+           (error "Unclosed shy-group"))
+         (push (car tmp) res))
+        (`group
+         (setq tmp (lex--parse-re string (cadr tmp) lexer))
+         (unless (eq (aref string (1- (cadr tmp))) ?\))
+           (error "Unclosed group"))
+         (push (list 'group (car tmp)) res))
+        (`suffix
+         (if (null res) (error "Non-prefixed suffix operator")
+           (setq res (cons (list (cdr (assoc (substring string i (cadr tmp))
+                                             '(("*" . 0+)
+                                               ("+" . 1+)
+                                               ("?" . opt)
+                                               ("*?" . *\?)
+                                               ("+?" . +\?)
+                                               ("??" . \?\?))))
+                                 (car res))
+                           (cdr res)))))
+        (`or (push `(or (seq ,@(nreverse res))) stack)
+             (setq res nil))
+        (`charset
+         (push (lex--parse-charset (substring string (1+ i) (1- (cadr tmp))))
+               res))
+        (`repeat
+         ;; Here we would like to have sub-matches :-(
+         (let* ((min (string-to-number
+                      (substring string (+ i (if (eq (aref string i) ?\\) 2 1))
+                                 (cadr tmp))))
+                (max (let ((comma (string-match "," string i)))
+                       (if (not (and comma (< comma (cadr tmp))))
+                           min
+                         (if (= comma (- (cadr tmp) 2))
+                             nil
+                           (string-to-number (substring string (1+ comma))))))))
+           (if (null res) (error "Non-prefixed repeat operator")
+             (setq res (cons `(repeat ,min ,max ,(car res)) (cdr res))))))
+        (`stop (setq op 'stop))
+        ((or `syntax `category `not-syntax `not-category)
+         (push (list (car tmp) (aref string (1- (cadr tmp)))) res))
+        (`backref
+         (push (list (car tmp) (- (aref string (1- (cadr tmp))) ?0)) res))
+        (`char
+         (push (aref string (1- (cadr tmp))) res))
+        (_ (push (car tmp) res)))
+      (setq i (cadr tmp)))
+    (let ((re `(seq ,@(nreverse res))))
+      (while stack (setq re (nconc (pop stack) (list re))))
+      (list re i))))
+
+;;;###autoload
+(defun lex-parse-re (string &optional lexer)
+  "Parse STRING as a regular expression.
+LEXER specifies the regexp syntax to use.  It can be `ere', or `bre'
+and it defaults to `bre'."
+  (setq lexer (cond ((eq lexer 'ere) lex--parse-ere-lexer)
+                    ((memq lexer '(bre re nil)) lex--parse-bre-lexer)
+                    (t lexer)))
+  (let ((res (lex--parse-re string 0 lexer)))
+    (if (< (cadr res) (length string))
+        (error "Regexp parsing failed around %d: ...%s..."
+               (cadr res) (substring string (1- (cadr res)) (1+ (cadr res))))
+      (car res))))
+
+
+;; (defun lex--parse-re (string i)
+;;   (let ((stack ())
+;;         (op nil)
+;;         (res nil))
+;;     (while (and (not (eq op 'stop)))
+;;       (lex-case string i
+;;         ("(?:"                          ;shy-group.
+;;          (let ((tmp (lex--parse-re string i)))
+;;            (setq i (car tmp))
+;;            (unless (eq (aref string (1- i)) ?\)) (error "Unclosed shy-group"))
+;;            (push (cdr tmp) res)))
+;;         ((or "*?" "+?" "??")
+;;          (error "Greediness control unsupported `%s'" (match-string 0 string)))
+;;         ((or "*" "+" "?")
+;;          (if (null res) (error "Non-prefixed suffix operator")
+;;            (setq res (cons (list (cdr (assq (aref string (1- i))
+;;                                             '((?* . 0+)
+;;                                               (?+ . 1+)
+;;                                               (?? . opt))))
+;;                                  (car res))
+;;                            (cdr res)))))
+;;         ("|" (push `(or (seq ,@(nreverse res))) stack)
+;;          (setq res nil))
+;;         ((seq "[" (opt "^") (opt "]")
+;;                    (0+ (or (seq (char not ?\]) "-" (char not ?\]))
+;;                            (seq "[:" (1+ (char (?a . ?z) (?A . ?Z))) ":]")
+;;                            (char not ?\]))) "]")
+;;          (push (lex--parse-charset
+;;                 (substring string (1+ (match-beginning 0))
+;;                            (1- (match-end 0))))
+;;                res))
+;;         ((seq "{" (0+ (char (?0 . ?9)))
+;;                    (opt (seq "," (0+ (char (?0 . ?9))))) "}")
+;;          ;; Here we would like to have sub-matches :-(
+;;          (let* ((min (string-to-number (substring string
+;;                                                   (1+ (match-beginning 0))
+;;                                                   (match-end 0))))
+;;                 (max (let ((comma (string-match "," string (match-beginning 0))))
+;;                        (if (not (and comma (< comma (match-end 0))))
+;;                            min
+;;                          (if (= comma (- (match-end 0) 2))
+;;                              nil
+;;                            (string-to-number (substring string (1+ comma))))))))
+;;            (if (null res) (error "Non-prefixed repeat operator")
+;;              (setq res (cons `(repeat ,min ,max ,(car res)) (cdr res))))))
+;;         ((or ")" eob) (setq op 'stop))
+;;         ("\\'" (push 'eob res))
+;;         ("\\`" (push 'bob res))
+;;         ("^" (push 'bol res))
+;;         ("$" (push 'eol res))
+;;         ("." (push 'dot res))
+
+;;         ((or "(" "\\<" "\\>" "\\_<" "\\_>" "\\c" "\\s" "\\C" "\\S" "\\w" "\\W"
+;;              "\\b" "\\B" "\\=" (seq "\\" (char (?1 . ?9))))
+;;          (error "Unsupported construct `%s'" (match-string 0 string)))
+
+;;         ((or (seq ?\\ anything) anything)
+;;          (push (aref string (1- (match-end 0))) res))
+;;         ("" (error "This should not be reachable"))))
+;;     (let ((re `(seq ,@(nreverse res))))
+;;       (while stack (setq re (nconc (pop stack) (list re))))
+;;       (cons i re))))
+
+
+
+
+
+(provide 'lex-parse-re)
+;;; lex-parse-re.el ends here
diff --git a/packages/lex/lex.el b/packages/lex/lex.el
new file mode 100644 (file)
index 0000000..b1c2693
--- /dev/null
@@ -0,0 +1,1261 @@
+;;; lex.el --- Lexical analyser construction
+
+;; Copyright (C) 2008,2013  Free Software Foundation, Inc.
+
+;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
+;; Keywords:
+;; Version: 1.1
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Format of regexps is the same as used for `rx' and `sregex'.
+;; Additions:
+;; - (ere RE) specify regexps using the ERE syntax.
+;; - (inter REs...) (aka `&') make a regexp that only matches
+;;   if all its branches match.  E.g. (inter (ere ".*a.*") (ere ".*b.*"))
+;;   match any string that contain both an "a" and a "b", in any order.
+;; - (case-fold REs...) and (case-sensitive REs...) make a regexp that
+;;   is case sensitive or not, regardless of case-fold-search.
+
+;; Input format of lexers:
+;;
+;; ALIST of the form ((RE . VAL) ...)
+
+;; Format of compiled DFA lexers:
+;;
+;; nil                     ; The trivial lexer that fails
+;; (CHAR . LEXER)
+;; (table . CHAR-TABLE)
+;; (stop VAL . LEXER)      ; Match the empty string at point or LEXER.
+;; (check (PREDICATE . ARG) SUCCESS-LEXER . FAILURE-LEXER)
+
+;; Intermediate NFA nodes may additionally look like:
+;; (or LEXERs...)
+;; (orelse LEXERs...)
+;; (and LEXERs...)
+;; (join CONT . EXIT)
+;; Note: we call those things "NFA"s but they're not really NFAs.
+
+;;; Bugs:
+
+;; - `inter' doesn't work right.  Matching `join' to the corresponding `and'
+;;   is done incorrectly in some cases.
+;; - since `negate' uses intersections, it doesn't work right either.
+;; - "(\<)*" leads to a DFA that gets stuck in a cycle.
+
+;;; Todo:
+
+;; - dfa "no-fail" simplifier
+;; - dfa minimization
+;; - dfa compaction (different representation)
+;; - submatches
+;; - backrefs?
+;; - search rather than just match
+;; - extensions:
+;;   - repeated submatches
+;;   - negation
+;;   - lookbehind and lookahead
+;;   - match(&search?) backward
+;;   - agrep
+
+;;; Notes
+
+
+
+;; Search
+;; ------
+
+;; To turn a match into a search, the basic idea is to use ".*RE" to get
+;; a search-DFA as opposed to the match-DFA generated from "RE".
+
+;; Search in Plan9's regexp library is done as follows: match ".*RE" until
+;; reaching the first match and then continue with only "RE".  The first
+;; ".*RE" match corresponds to a search success for the leftmost shortest
+;; match.  If we want the longest match, we need to continue.  But if we
+;; continue with ".*RE" then we have no idea when to stop, so we should only
+;; continue with "RE".
+;; Downside: we may still match things after the "leftmost longest" match,
+;; but hopefully will stop soon after.  I.e. we may look at chars past the
+;; end of the leftmost longest match, but hopefully not too many.
+
+;; Alternatives:
+;; - Like emacs/src/regexp.c, we can just start a match at every buffer
+;;   position.  Advantage: no need for submatch info in order to find
+;;   (match-beginning 0), no need for a separate search-DFA.
+;;   Downsize: O(N^2) rather than O(N).  But it's no worse than what we live
+;;   with for decades in src/regexp.c.
+;;
+;; - After the shortest-search, stop the search and do a longest-match
+;;   starting at position (match-beginning 0).  The good thing is that we
+;;   will not look at any char further than needed.  Also we don't need to
+;;   figure out how to switch from ".*RE" to "RE" in the middle of the search.
+;;   The downside is that we end up looking twice at the chars common to the
+;;   shortest and longest matches.  Also this doesn't work: the shortest
+;;   match may not be the leftmost match, so we can't just start the match
+;;   at (match-beginning 0).
+;;
+;; - Generate a specialized search&match-DFA which encodes the job done by
+;;   Plan9's regexp library.  I.e. do a specialized merge on
+;;   (or LEXER (anything . LEXER)) where whenever we get a `stop' we don't
+;;   merge any more.  After matching such a lexer, we still have to figure
+;;   which of the matches we had is the leftmost longest match, of course.
+;;   Actually, it's not that easy: the tail of a `stop' in the match-DFA can
+;;   only match things whose (match-beginning 0) may be the same as the one
+;;   of the `stop', whereas we also want to accept longer matches that start
+;;   before (match-beginning 0).  So we want to keep merging on the tail of
+;;   `stop' nodes, but only "partially" (whatever that means).
+
+;; - Better yet, do what TRE does: after the shortest-search, use the
+;;   submatch data to figure out the NFA states (corresponding to the
+;;   current search-DFA state) which are only reachable from later starting
+;;   positions than (match-beginning 0), remove them and figure out from
+;;   that the match-DFA state to which to switch.  Problem is: there might
+;;   not be any such state in the match-DFA.
+;;
+;; - In the end I do a mix of the last 2: .*?RE
+;;   This uses the `orelse' merge operator, which contrary to `or' only
+;;   matches the righthand side when the lefthand side fails to match.
+;;   It turns out to be fairly simple to implement, and is optimal.
+;;
+;; Lookahead
+;; ---------
+
+;; I suspect that the (?=<RE>) lookahead can be encoded using something like
+;; `andalso'.  Of course, it can also trivially be encoded as a predicate,
+;; but then we get an O(N^2) complexity.
+
+;; Merging operators.
+;; ------------------
+
+;; The NFA merging operators (or, and, orelse) seem to work fine on their own,
+;; but I'm not convinced they always DTRT when combined.  It's not even
+;; clear that the NFA->DFA conversion terminates in all such cases.
+
+;; Intersection
+;; ------------
+
+;; Implementing the `inter' regexp operator turns out to be more difficult
+;; than it seemed.  The problem is basically in the `join'.  Each `and' has
+;; to have its own matching `join', but preserving this invariant is
+;; tricky.  Among other things, we cannot flatten nested `and's like we do
+;; for `or's and `orelse's.
+
+;; Submatch info
+;; -------------
+
+;; Keeping track of submatch info with a DFA is tricky business and can slow
+;; down the matcher or make it use algorithmically more memory
+;; (e.g. O(textsize)).  Here are some approaches:
+
+;; - Reproduce what an NFA matcher would do: when compiling the DFA, keep
+;;   track of the NFA nodes corresponding to each DFA node, and for every
+;;   transition, check the mapping between "incoming NFA nodes" and
+;;   "outgoing NFA nodes" to maintain the list of submatch-info (one element
+;;   per NFA node).
+
+;; - Keep a log of the states traversed during matching, so at the end it
+;;   can be used to reproduce the parse tree or submatch info, based on
+;;   auxiliary tables constructed during the DFA construction.
+
+;; - Some submatch info can be maintained cheaply: basically a submatch
+;;   position can be represented by a single global variable in the case
+;;   where we have the following property: every ε transition in the NFA
+;;   which corresponds to this submatch point has the following property:
+;;   no other ε transition for this same submatch can be traversed between
+;;   the text position where this transition is traversed and the position
+;;   where the target NFA subgraph fails to match.
+
+;;
+
+;;; Code:
+
+(eval-when-compile (require 'cl-lib))
+
+(eval-and-compile
+  (unless (fboundp 'case-table-get-table)
+    ;; Copied from 24.4
+    (defun case-table-get-table (case-table table)
+      "Return the TABLE of CASE-TABLE.
+TABLE can be `down', `up', `eqv' or `canon'."
+      (let ((slot-nb (cdr (assq table '((up . 0) (canon . 1) (eqv . 2))))))
+        (or (if (eq table 'down) case-table)
+            (char-table-extra-slot case-table slot-nb)
+            (let ((old (standard-case-table)))
+              (unwind-protect
+                  (progn
+                    (set-standard-case-table case-table)
+                    (char-table-extra-slot case-table slot-nb))
+                (or (eq case-table old)
+                    (set-standard-case-table old)))))))))
+
+(defun copy-char-table (ct1)
+  (let* ((subtype (char-table-subtype ct1))
+         (ct2 (make-char-table subtype)))
+    (map-char-table (lambda (c v) (set-char-table-range ct2 c v)) ct1)
+    (dotimes (i (or (get subtype 'char-table-extra-slots) 0))
+      (set-char-table-extra-slot ct2 i (char-table-extra-slot ct1 i)))
+    ct2))
+
+(defun lex--char-table->alist (ct)
+  (let ((res ()))
+    (map-char-table (lambda (k v)
+                      (push (cons (if (consp k)
+                                      ;; If k is a cons cell, we have to
+                                      ;; copy it because map-char-table
+                                      ;; reuses it.
+                                      (cons (car k) (cdr k))
+                                    ;; Otherwise, create a trivial cons-cell
+                                    ;; so we have fewer cases to handle.
+                                    (cons k k))
+                                  v)
+                            res))
+                    ct)
+    res))
+
+(defun lex--merge-into (op al1 al2 ct)
+  (cl-assert (memq op '(and or orelse)))
+  ;; We assume that map-char-table calls its function with increasing
+  ;; `key' arguments.
+  (while (and al1 al2)
+    (let ((k1 (caar al1)) (k2 (caar al2)))
+      (cond
+       ;; Perfect overlap.
+       ((equal k1 k2)
+        (set-char-table-range ct k1
+                              (lex--merge op (cdr (pop al1)) (cdr (pop al2)))))
+       ;; k1 strictly greater than k2.
+       ((and (consp k1) (consp k2) (> (car k1) (cdr k2)))
+        (let ((v (cdr (pop al1))))
+          (if (not (eq op 'and)) (set-char-table-range ct k1 v))))
+       ;; k2 strictly greater than k1.
+       ((and (consp k1) (consp k2) (> (car k2) (cdr k1)))
+        (let ((v (cdr (pop al2))))
+          (if (not (eq op 'and)) (set-char-table-range ct k2 v))))
+       ;; There's partial overlap.
+       ((and (consp k1) (consp k2) (> (cdr k1) (cdr k2)))
+        (if (not (eq op 'and))
+            (set-char-table-range ct (cons (1+ (cdr k2)) (cdr k1)) (cdar al1)))
+        (setcdr k1 (cdr k2)))
+       ((and (consp k1) (consp k2) (< (cdr k1) (cdr k2)))
+        (if (not (eq op 'and))
+            (set-char-table-range ct (cons (1+ (cdr k1)) (cdr k2)) (cdar al2)))
+        (setcdr k2 (cdr k1)))
+       ;; Now the tails are equal.
+       ((and (consp k1) (consp k2) (> (car k1) (car k2)))
+        (set-char-table-range ct k1 (lex--merge op (cdr (pop al1)) (cdar al2)))
+        (setcdr k2 (1- (car k1))))
+       ((and (consp k1) (consp k2) (< (car k1) (car k2)))
+        (set-char-table-range ct k2 (lex--merge op (cdar al1) (cdr (pop al2))))
+        (setcdr k1 (1- (car k2))))
+       (t (cl-assert nil)))))
+  (if (not (eq op 'and))
+      (dolist (x (or al1 al2))
+        (set-char-table-range ct (car x) (cdr x))))
+  ct)
+
+(defvar lex--states)
+(defvar lex--memoize)
+
+(defun lex--set-eq (l1 l2)
+  (let ((len (length l2)))
+    (setq l2 (copy-sequence l2))
+    (while (consp l1)
+      (cl-assert (= len (length l2)))
+      (unless (> len
+                 (setq len (length (setq l2 (delq (pop l1) l2)))))
+        (setq l1 t)))
+    (not l1)))
+
+(define-hash-table-test 'lex--set-eq 'lex--set-eq
+  (lambda (l)
+    (let ((hash 0))
+      (while l
+        (let ((x (pop l)))
+          (if (memq x l) (progn (debug) nil)
+            (setq hash (+ hash (sxhash x))))))
+      hash)))
+
+
+(defun lex--flatten-state (state)
+  (cl-assert (memq (car state) '(and or orelse)))
+  (let ((op (car state))
+        (todo (cdr state))
+        (done (list state))
+        (res nil))
+    (while todo
+      (setq state (pop todo))
+      (cond
+       ((null state) (if (eq op 'and) (setq res nil todo nil)))
+       ((memq state done) nil)
+       ((eq (car-safe state) op)
+        (push state done)
+        (setq todo (append (cdr state) todo)))
+       (t (unless (memq state res) (push state res)))))
+    (cons op (nreverse res))))
+
+(defun lex--merge-2 (op lex1 lex2)
+  (cl-assert (memq op '(and or orelse)))
+  ;; The order between lex1 and lex2 matters: preference is given to lex1.
+  (cond
+   ;; `lex1' and `lex2' might actually be the same when we use this code to
+   ;; cancel out the `and' and the `join' from lex--merge-and-join.
+   ;; ((eq lex1 lex2) (debug) lex1)  ;CHECK: ruled out by `lex--flatten-state'?
+   ;; ((equal lex1 lex2) lex1)             ;Stack overflow :-(
+
+   ;; Handle the 2 possible nil cases.
+   ;; CHECK: ruled out by `lex--flatten-state'?
+   ((null lex1) (debug) (if (eq op 'and) nil lex2))
+   ((null lex2) (debug) (if (eq op 'and) nil lex1))
+
+   ;; Do the predicate cases before the `stop' because the stop should
+   ;; always come after the checks.
+   ;; TODO: add optimizations for pairs of `checks' which are redundant,
+   ;; or mutually exclusive, ... although we can also do it in lex-optimize.
+   ((and (eq (car lex1) 'check) (eq (car lex2) 'check)
+         (equal (nth 1 lex1) (nth 1 lex2))) ; Same predicate.
+    (cl-list* 'check (nth 1 lex1)
+              (lex--merge op (nth 2 lex1) (nth 2 lex2))
+              (lex--merge op (nthcdr 3 lex1) (nthcdr 3 lex2))))
+   ((eq (car lex1) 'check)
+    (cl-list* 'check (nth 1 lex1)
+              (lex--merge op (nth 2 lex1) lex2)
+              (lex--merge op (nthcdr 3 lex1) lex2)))
+   ((eq (car lex2) 'check)
+    (cl-list* 'check (nth 1 lex2)
+              (lex--merge op lex1 (nth 2 lex2))
+              (lex--merge op lex1 (nthcdr 3 lex2))))
+
+   ;; Joins have the form (join CONT . EXIT) where EXIT is a lexer
+   ;; corresponding to the rest of the regexp after the `and' sub-regexp.
+   ;; All the joins corresponding to the same `and' have the same EXIT.
+   ;; CONT is a lexer that contains another join inside, it corresponds to
+   ;; the decision to not yet leave the `and'.
+   ((and (eq (car lex1) 'join) (eq (car lex2) 'join))
+    (cl-assert (eq (cddr lex1) (cddr lex2))) ;Check they're the same join.
+    (let ((in (lex--merge op (cadr lex1) (cadr lex2))))
+      (if (eq op 'and)
+          ;; Eliminate the join once it was all merged.
+          ;; FIXME: This arbitrarily chooses `or' instead of `orelse',
+          ;; and it arbitrarily gives CONT precedence over EXIT.
+          (lex--merge 'or in (cddr lex1))
+        `(join ,in ,@(cddr lex1)))))
+   ;; If one the two lex's is a join but the other not, the other must
+   ;; contain a corresponding join somewhere inside.
+   ((eq (car lex1) 'join)
+    (let ((next (lex--merge op (nth 1 lex1) lex2)))
+      ;; lex1 is a valid exit point but lex2 isn't.
+      (if (eq op 'and)
+          next
+        ;; FIXME: lex1 is implicitly an `or(else)' between (cadr lex1) and
+        ;; (cddr lex1).  Here we construct an `or(else)' between `next' and
+        ;; (cddr lex1).  I.e. we lose the `op' and we do not preserve the
+        ;; ordering between lex2 and (cddr lex1).
+        `(join ,next ,@(cddr lex1)))))
+   ((eq (car lex2) 'join)
+    (let ((next (lex--merge op lex1 (nth 1 lex2))))
+      (if (eq op 'and) next `(join ,next ,@(cddr lex2)))))
+
+   ;; The three `stop' cases.
+   ((and (eq (car lex1) 'stop) (eq (car lex2) 'stop))
+    ;; Here is where we give precedence to `lex1'.
+    (if (eq op 'orelse) lex1
+      (cl-list* 'stop (cadr lex1) (lex--merge op (cddr lex1) (cddr lex2)))))
+   ((eq (car lex1) 'stop)
+    (let ((next (lex--merge op (cddr lex1) lex2)))
+      (pcase op
+        (`or     (cl-list* 'stop (cadr lex1) next))
+        (`orelse lex1)
+        ;; CHECK: We should have hit a `join' before reaching a `stop'.
+        (`and    (debug) next)
+        (_       (error "lex.el: got %S but expected one of or/and/orelse"
+                        op)))))
+   ((eq (car lex2) 'stop)
+    (let ((next (lex--merge op lex1 (cddr lex2))))
+      ;; For `orelse', we want here to delay the `stop' until the point
+      ;; where we know that lex1 doesn't match.  Sadly, I don't know how to
+      ;; do it.
+      (pcase op
+        ;; FIXME: One thing we can do is to mark the value attached to the
+        ;; `stop' so as to indicate that an earlier match may finish later.
+        ;; This way, if the match is not `earlystop', we know it's one of
+        ;; the leftmost ones, and maybe the search loop can avoid some work
+        ;; when determining which is the leftmost longest match.
+        (`orelse (cl-list* 'stop `(earlystop ,(cadr lex2)) next))
+        ((or `or `orelse) (cl-list* 'stop (cadr lex2) next))
+        ;; CHECK: We should have hit a `join' before reaching a `stop'.
+        (`and    (debug) next)
+        (_       (error "lex.el: got %S but expected one of or/and/orelse"
+                        op)))))
+
+   ;; The most general case.
+   ((and (eq (car lex1) 'table) (eq (car lex2) 'table))
+    (let ((al1 (lex--char-table->alist (cdr lex1)))
+          (al2 (lex--char-table->alist (cdr lex2)))
+          (ct (make-char-table 'lexer)))
+      (lex--merge-into op al1 al2 ct)
+      (cons 'table ct)))
+
+   ((and (characterp (car lex1)) (characterp (car lex2))
+         (eq (car lex1) (car lex2)))
+    (cons (car lex1) (lex--merge op (cdr lex1) (cdr lex2))))
+   ((and (characterp (car lex1)) (characterp (car lex2)))
+    (unless (eq op 'and)
+      (let ((ct (make-char-table 'lexer)))
+        (aset ct (car lex1) (cdr lex1))
+        (aset ct (car lex2) (cdr lex2))
+        (cons 'table ct))))
+   ((and (characterp (car lex1)) (eq (car lex2) 'table))
+    (let ((next (lex--merge op (cdr lex1) (aref (cdr lex2) (car lex1)))))
+      (if (eq op 'and)
+          (if next (cons (car lex1) next))
+        (let ((ct (copy-sequence (cdr lex2))))
+          (aset ct (car lex1) next)
+          (cons 'table ct)))))
+   ((and (eq (car lex1) 'table) (characterp (car lex2)))
+    (let ((next (lex--merge op (aref (cdr lex1) (car lex2)) (cdr lex2))))
+      (if (eq op 'and)
+          (if next (cons (car lex2) next))
+        (let ((ct (copy-sequence (cdr lex1))))
+          (aset ct (car lex2) next)
+          (cons 'table ct)))))
+
+   ((or (memq (car lex1) '(or orelse and))  ;state
+        (memq (car lex2) '(or orelse and))) ;state
+    ;; `state' nodes are nodes whose content is not known yet, so we
+    ;; have to delay the merge via the memoization table.
+    ;; `or' and `and' nodes should only happen when the other `op' is being
+    ;; performed, in which case we can't do the merge either before lex1
+    ;; and lex2 have both been merged.
+    (lex--merge op lex1 lex2))
+   (t (cl-assert nil))))
+
+(defun lex--merge-now (&rest state)
+  (cl-assert (memq (car state) '(and or orelse)))
+  ;; Re-flatten, in case one of the sub-states was changed.
+  (setq state (lex--flatten-state state))
+  (if (<= (length state) 2)
+      (if (eq (car state) 'and)
+          ;; Need to strip out the `join's.
+          (lex--merge-and-join (cadr state))
+        (cadr state))
+    (let ((op (pop state))
+          (res (pop state)))
+      (dolist (lex state)
+        ;; CHECK: we fold the lexers  using left-associativity.
+        ;; For `orelse', that means that `earlystop' never accumulates,
+        ;; whereas if we folded in a right-associative way, we could get
+        ;; some (earlystop (earlystop (earlystop V))).  Not sure which one's
+        ;; preferable, so let's stick with what we have for now.
+        (setq res (lex--merge-2 op res lex)))
+      res)))
+
+(defun lex--merge-and-join (lex)
+  (lex--merge-2 'and lex lex))
+
+
+(defun lex--merge (&rest state)
+  (cl-assert (memq (car state) '(and or orelse)))
+  (setq state (lex--flatten-state state))
+  (if (and (<= (length state) 2)
+           (not (eq (car state) 'and)))
+      (cadr state)
+    (or (gethash state lex--memoize)
+        (progn
+          ;; (debug)
+          (cl-assert (memq (car state) '(and or orelse)))
+          (push state lex--states)
+          ;; The `state' node will be later on modified via setcar/setcdr,
+          ;; se be careful to use a copy of it for the key.
+          (puthash (cons (car state) (cdr state)) state lex--memoize)
+          state))))
+
+(defun lex--compile-category (category)
+  (if (and (integerp category) (< category 128))
+      category
+    (if (symbolp category)
+        (if (= 1 (length (symbol-name category)))
+            (aref (symbol-name category) 0)
+          (require 'rx)
+          (defvar rx-categories)
+          (cdr (assq category rx-categories))))))
+
+(defun lex--compile-syntax (&rest syntaxes)
+  (mapcar (lambda (x)
+            (if (and (integerp x) (< x 32)) x
+              (if (symbolp x)
+                  (setq x (if (= 1 (length (symbol-name x)))
+                              (symbol-name x)
+                            (require 'rx)
+                            (defvar rx-syntax)
+                            (cdr (assq x rx-syntax)))))
+              (if (characterp x) (setq x (string x)))
+              (car (string-to-syntax x))))
+          syntaxes))
+
+(defconst lex--char-classes
+  `((alnum alpha digit)
+    (alpha word (?a . ?z) (?A . ?Z))
+    (blank ?\s ?\t)
+    (cntrl (?\0 . ?\C-_))
+    (digit (?0 . ?9))
+    ;; Include all multibyte chars, plus all the bytes except 128-159.
+    (graph (?! . ?~) multibyte (#x3fffa0 . #x3fffff))
+    ;; src/regexp.c handles case-folding inconsistently: lower and upper
+    ;; match both lower- and uppercase ascii chars, but lower also matches
+    ;; uppercase non-ascii chars whereas upper does not match lowercase
+    ;; nonascii chars.  Here I simply ignore case-fold for [:lower:] and
+    ;; [:upper:] because it's simpler and doesn't seem worse.
+    (lower (check (lex--match-lower)))
+    (upper (check (lex--match-upper)))
+    (print graph ?\s)
+    (punct (check (not (lex--match-syntax . ,(lex--compile-syntax "w"))))
+           (?! . ?/) (?: . ?@) (?\[ . ?`) (?\{ . ?~))
+    (space (check (lex--match-syntax . ,(lex--compile-syntax " "))))
+    (xdigit digit (?a . ?f) (?A . ?F))
+    (ascii (?\0 . ?\177))
+    (nonascii (?\200 . #x3fffff))
+    (unibyte ascii (#x3fff00 . #x3fffff))
+    (multibyte (#x100 . #x3ffeff))
+    (word (check (lex--match-syntax . ,(lex--compile-syntax "w"))))
+    ;; `rx' alternative names.
+    (numeric digit)
+    (num digit)
+    (control cntrl)
+    (hex-digit xdigit)
+    (hex xdigit)
+    (graphic graph)
+    (printing print)
+    (alphanumeric alnum)
+    (letter alpha)
+    (alphabetic alpha)
+    (lower-case lower)
+    (upper-case upper)
+    (punctuation punct)
+    (whitespace space)
+    (white space))
+  "Definition of char classes.
+Each element has the form (CLASS . DEFINITION) where definition
+is a list of elements that can be either CHAR or (CHAR . CHAR),
+or CLASS (another char class) or (check (PREDICATE . ARG))
+or (check (not (PREDICATE . ARG))).")
+
+(defvar lex--char-equiv-table nil
+  "Equiv-case table to use to compile case-insensitive regexps.")
+
+(defun lex--char-equiv (char)
+  (when lex--char-equiv-table
+    (let ((chars ())
+          (tmp char))
+      (while (and (setq tmp (aref lex--char-equiv-table tmp))
+                  (not (eq tmp char)))
+        (push tmp chars))
+      (if chars (cons char chars)))))
+
+;; For convenience we use lex itself to tokenize charset strings, so we
+;; define it in another file.
+(autoload 'lex--parse-charset "lex-parse-re")
+
+(defun lex--nfa (re state)
+  (cl-assert state)                   ;If `state' is nil we can't match anyway.
+  (cond
+   ((characterp re)
+    (let ((chars (lex--char-equiv re)))
+      (if (null chars)
+          (cons re state)
+        (let ((ct (make-char-table 'lexer)))
+          (dolist (char chars) (aset ct char state))
+          (cons 'table ct)))))
+   ((stringp re)
+    (if (null lex--char-equiv-table)
+        ;; (Very) minor optimization.
+        (nconc (mapcar 'identity re) state)
+      (lex--nfa `(seq ,@(mapcar 'identity re)) state)))
+   (t
+    (pcase (or (car-safe re) re)
+      ((or `: `seq `sequence
+           ;; Hack!
+           `group)
+       (dolist (elem (reverse (cdr re)))
+         (setq state (lex--nfa elem state)))
+       state)
+      ((or `char `in `not-char)
+       (let ((chars (cdr re))
+             (checks nil)
+             (fail nil)
+             (char nil)  ;The char seen, or nil if none, or t if more than one.
+             (ct (make-char-table 'lexer)))
+         (when (or (eq 'not (car chars)) (eq 'not-char (car re)))
+           (setq chars (cdr chars))
+           (set-char-table-range ct t state)
+           (setq fail state)
+           (setq state nil))
+         (while chars
+           (let ((range (pop chars)))
+             (cond
+              ((stringp range)
+               (setq chars (append (cdr (lex--parse-charset range)) chars)))
+              ((symbolp range)
+               (setq range (or (cdr (assq range lex--char-classes))
+                               (error "Uknown char class `%s'" range)))
+               (setq chars (append range chars)))
+              ((and (consp range) (eq 'check (car range)))
+               (push (cadr range) checks))
+              (t
+               (setq char (if (or char (not (characterp range))
+                                  (and lex--char-equiv-table
+                                       (lex--char-equiv range)))
+                              t range))
+               ;; Set the range, first, regardless of case-folding.  This is
+               ;; important because case-tables like to be set with few
+               ;; large ranges rather than many small ones, as is done in
+               ;; the case-fold loop.
+               (set-char-table-range ct range state)
+               (when (and lex--char-equiv-table
+                          ;; Avoid looping over all characters.
+                          (not (equal range '(#x100 . #x3ffeff))))
+                 ;; Add all the case-equiv chars.
+                 (let ((i (if (consp range) (car range) range))
+                       (max (if (consp range) (cdr range) range))
+                       char)
+                   (while (<= i max)
+                     (setq char i)
+                     (while (and (setq char (aref lex--char-equiv-table char))
+                                 (not (eq char i)))
+                       (aset ct char state))
+                     (setq i (1+ i)))))))))
+
+         (let ((res (if (or (eq char t) fail)
+                        (cons 'table ct)
+                      (if char (cons char state)))))
+           (if (and (not fail) checks)
+               (setq state (lex--nfa 'anything state)))
+           (dolist (check checks)
+             (setq res
+                   (if fail
+                       ;; We do an `and' of the negation of the check and res.
+                       (if (eq (car-safe check) 'not)
+                           (list 'check (cadr check) res)
+                         (cl-list* 'check check nil res))
+                     ;; An `or' of the check and res.
+                     (if (eq (car-safe check) 'not)
+                         (list 'check (cadr check) res state)
+                       (cl-list* 'check check state res)))))
+           res)))
+
+      ((or `union `or `| `orelse)
+       (let ((newstate
+              (cons (if (eq (car re) 'orelse) 'orelse 'or)
+                    (mapcar (lambda (re) (lex--nfa re state)) (cdr re)))))
+         (push newstate lex--states)
+         newstate))
+
+      ((or `inter `intersection `&)
+       (if (<= (length re) 2)
+           ;; Avoid constructing degenerate `and' nodes.
+           (lex--nfa (cadr re) state)
+         ;; Just using `and' is not enough because we have to enforce that the
+         ;; sub-regexps (rather than the whole regexp) match the same string.
+         ;; So we need to mark the juncture point.
+         (let* ((join `(join nil ,@state))
+                (newstate
+                 `(and ,@(mapcar (lambda (re) (lex--nfa re join)) (cdr re)))))
+           (push newstate lex--states)
+           newstate)))
+
+      ((or `0+ `zero-or-more `* `*\?)
+       (let ((newstate (list 'state)))
+         (let ((lexer (lex--nfa (cons 'seq (cdr re)) newstate)))
+           (setcdr newstate (if (memq (car re) '(*\?))
+                                (list state lexer)
+                              (list lexer state))))
+         (setcar newstate (if (memq (car re) '(*\?)) 'orelse 'or))
+         (push newstate lex--states)
+         newstate))
+
+      ((or `string-end `eos `eot `buffer-end `eob)
+       `(check (lex--match-eobp) ,state))
+      ((or `string-start `bos `bot `buffer-start `bob)
+       `(check (lex--match-bobp) ,state))
+      ((or `line-end `eol) `(check (lex--match-eolp) ,state))
+      ((or `line-start `bol) `(check (lex--match-bolp) ,state))
+      ((or `word-start `bow) `(check (lex--match-bowp) ,state))
+      ((or `word-end `eow) `(check (lex--match-eowp) ,state))
+      (`symbol-start `(check (lex--match-bosp) ,state))
+      (`symbol-end `(check (lex--match-eosp) ,state))
+      (`not-word-boundary `(check (lex--match-not-word-boundary) ,state))
+      (`word-boundary `(check (lex--match-not-word-boundary) nil . ,state))
+      (`syntax `(check (lex--match-syntax
+                        . ,(apply 'lex--compile-syntax (cdr re)))
+                       ,(lex--nfa 'anything state)))
+      (`not-syntax `(check (lex--match-syntax
+                            . ,(apply 'lex--compile-syntax (cdr re)))
+                           nil . ,(lex--nfa 'anything state)))
+      (`category `(check (lex--match-category
+                          . ,(lex--compile-category (cadr re)))
+                         ,(lex--nfa 'anything state)))
+      (`not-category `(check (lex--match-category
+                              . ,(lex--compile-category (cadr re)))
+                             nil . ,(lex--nfa 'anything state)))
+
+      ;; `rx' accepts char-classes directly as regexps.  Let's reluctantly
+      ;; do the same.
+      ((or `digit `numeric `num `control `cntrl `hex-digit `hex `xdigit `blank
+           `graphic `graph `printing `print `alphanumeric `alnum `letter
+           `alphabetic `alpha `ascii `nonascii `lower `lower-case `upper
+           `upper-case `punctuation `punct `space `whitespace `white)
+       (lex--nfa `(char ,re) state))
+
+      (`case-sensitive
+       (let ((lex--char-equiv-table nil))
+         (lex--nfa `(seq ,@(cdr re)) state)))
+
+      (`case-fold
+       (let ((lex--char-equiv-table
+              (case-table-get-table (current-case-table) 'eqv)))
+         (lex--nfa `(seq ,@(cdr re)) state)))
+
+      ((or `point
+           ;; Sub groups!
+           `submatch `group `backref
+           ;; Greediness control
+           `minimal-match `maximal-match)
+       (error "`%s' Not implemented" (or (car-safe re) re)))
+
+      ((or `not-newline `nonl `dot) (lex--nfa '(char not ?\n) state))
+      (`anything (lex--nfa '(char not) state))
+      ((or `word `wordchar) (lex--nfa '(syntax w) state))
+      (`not-wordchar (lex--nfa '(not-syntax w) state))
+
+      (`any
+       ;; `rx' uses it for (char ...) sets, and sregex uses it for `dot'.
+       (lex--nfa (if (consp re) (cons 'char (cdr re)) '(char not ?\n)) state))
+
+      (`negate
+       ;; We could define negation directly on regexps, but it's easier to
+       ;; do it on NFAs since those have fewer cases to deal with.
+       (let ((posnfa
+              ;; Trow away the mergable states generated while computing the
+              ;; posnfa, since it's only an intermediate datastructure.
+              (let (lex--states)
+                (lex--nfa `(seq ,@(cdr re)) '(stop negate)))))
+         (lex-negate posnfa state)))
+
+      (`not
+       ;; The `not' as used in `rx' should be deprecated so we can make it
+       ;; an alias for `negate', whose semantics is different.  E.g.
+       ;; (negate (char ...)) matches the empty string and 2-char strings.
+       (setq re (cadr re))
+       (pcase (or (car-safe re) re)
+         (`word-boundary
+          (message "`not' deprecated: use not-word-boundary")
+          (lex--nfa 'not-word-boundary state))
+         ((or `any `in `char)
+          (message "`not' deprecated: use (%s not ...)" (or (car-safe re) re))
+          (lex--nfa (cl-list* (car re) 'not (cdr re)) state))
+         ((or `category `syntax)
+          (message "`not' deprecated: use not-%s" (car re))
+          (lex--nfa (cons (intern (format "not-%s" (car re))) (cdr re)) state))
+         (elem (error "lex.el: unexpected argument `%S' to `not'." elem))))
+
+      (`and
+       ;; `rx' defined `and' as `sequence', but we may want to define it
+       ;; as intersection instead.
+       (error "`and' is deprecated, use `seq', `:', or `sequence' instead"))
+
+      ((or `1+ `one-or-more `+ `+\?)
+       (lex--nfa `(seq (seq ,@(cdr re))
+                       (,(if (memq (car re) '(+\?)) '*\? '0+) ,@(cdr re)))
+                 state))
+      ((or `opt `zero-or-one `optional `\?)
+       (lex--nfa `(or (seq ,@(cdr re)) "") state))
+      (`\?\?
+       (lex--nfa `(orelse "" (seq ,@(cdr re))) state))
+      ((or `repeat `** `=)
+       (let ((min (nth 1 re))
+             (max (nth 2 re))
+             (res (nthcdr 3 re)))
+         (unless res
+           (setq res (list max)) (setq max min))
+         (lex--nfa `(seq ,@(append (make-list (or min 0)
+                                              (if (eq (length res) 1)
+                                                  (car res)
+                                                (cons 'seq res)))
+                                   (if (null max)
+                                       `((0+ ,@res))
+                                     (make-list (- max (or min 0))
+                                                `(opt ,@res)))))
+                   state)))
+      (`>= (lex--nfa `(repeat ,(nth 1 re) nil ,@(nthcdr 2 re)) state))
+
+      ((or `bre `re `ere)
+       (lex--nfa (lex-parse-re (nth 1 re) (car re)) state))
+      (elem (error "lex.el: unknown RE element %S" elem))))))
+
+(defun lex--negate-inftail (state howmany)
+  ;; We hashcons the infinite tails and store them in the memoize table.
+  ;; This is an abuse, but saves us from passing it around as an
+  ;; extra argument.
+  (let ((inftail-1+ (gethash state lex--memoize)))
+    (unless inftail-1+
+      ;; Precompute the final infinitely repeating tail.
+      (setq inftail-1+ `(table . ,(make-char-table 'lexer)))
+      (set-char-table-range (cdr inftail-1+) t `(or ,state ,inftail-1+))
+      (push (aref (cdr inftail-1+) 0) lex--states)
+      (puthash state inftail-1+ lex--memoize))
+    (pcase howmany
+      (`1+ inftail-1+)
+      (`0+ (aref (cdr inftail-1+) 0))
+      (_ (error "lex.el: howmany is `%S' instead of one of 1+/0+" howmany)))))
+
+(defun lex--negate-now (nfa state)
+  (pcase (car nfa)
+    (`nil (lex--negate-inftail state '0+))
+    (`check
+     `(check ,(nth 1 nfa) ,(lex--negate-memo (nth 2 nfa) state)
+             ,@(lex--negate-memo (nthcdr 3 nfa) state)))
+    (`stop
+     (if (cddr nfa)
+         ;; This is valid but should normally not happen.
+         (lex--negate-now `(or (stop ,(cadr nfa)) ,(cddr nfa)) state)
+       (lex--negate-inftail state '1+)))
+
+    ((or `or `orelse)
+     (let ((join `(join nil . ,state)))
+       `(and ,@(mapcar (lambda (nfa) (lex--negate-memo nfa join)) (cdr nfa)))))
+
+    (`and
+     `(or ,@(mapcar (lambda (nfa) (lex--negate-memo nfa state)) (cdr nfa))))
+
+    (`join
+     ;; The join says: either exit the `and' because we matched all branches,
+     ;; or keep matching further.  Negation makes the synchrony between
+     ;; `and' branches irrelevant, so we can consider it as an `or(else)'.
+     (if (cadr nfa)
+         ;; This is valid but should normally not happen.
+         (lex--negate-now `(or ,(cadr nfa) ,(cddr nfa)) state)
+       (lex-negate (cddr nfa) state)))
+    (_
+     (let ((ct (make-char-table 'lexer)))
+       ;; Get inftail-0+ from the hashtable.
+       (set-char-table-range ct t (lex--negate-inftail state '0+))
+       (if (characterp (car nfa))
+           (aset ct (car nfa) (lex--negate-memo (cdr nfa) state))
+         (cl-assert (eq 'table (car nfa)))
+         (map-char-table (lambda (range nfa)
+                           (set-char-table-range ct range
+                                                 (lex--negate-memo nfa state)))
+                         (cdr nfa)))
+       `(or ,state (table ,@ct))))))
+
+(defun lex--negate-memo (nfa state)
+  ;; Make sure our `inftail' abuse of the hastable doesn't break anything.
+  (cl-assert (not (eq nfa state)))
+  (or (gethash nfa lex--memoize)
+      (let ((newstate (cons 'state nil)))
+        (puthash nfa newstate lex--memoize)
+        (let ((res (lex--negate-now nfa state)))
+          (when (memq (car res) '(or and orelse))
+            (push newstate lex--states))
+          (if (null res)
+              (setq res '(?a))
+            (setcar newstate (car res))
+            (setcdr newstate (cdr res))
+            newstate)))))
+
+(defun lex-negate (nfa state)
+  "Concatenate the negation of NFA with STATE.
+Returns a new NFA."
+  (let ((lex--memoize (make-hash-table :test 'eq)))
+    (lex--negate-memo nfa state)))
+
+(defun lex--dfa-wrapper (f)
+  (let* ((lex--states ())
+         (res (funcall f))
+         (postponed ())
+         (lex--memoize (make-hash-table :test 'lex--set-eq))
+         (states-dfa (make-hash-table :test 'eq)))
+
+    (while lex--states
+      (dolist (state (prog1 lex--states (setq lex--states nil)))
+        (let ((merged (apply 'lex--merge-now state)))
+          (if (memq (car merged) '(and or orelse))
+              ;; The merge could not be performed for some reason:
+              ;; let's re-schedule it.
+              (push state postponed)
+            (puthash state merged states-dfa))))
+
+      (unless lex--states
+        ;; If states-dfa is empty it means we haven't made any progress,
+        ;; so we're stuck in an infinite loop.  Hopefully this cannot happen?
+        (cl-assert (not (zerop (hash-table-count states-dfa))))
+        (maphash (lambda (k v)
+                   (unless v
+                     ;; With `intersection', lex--merge may end up returning
+                     ;; nil if the intersection is empty, so `v' can be
+                     ;; nil here.  In since `k' is necessarily a cons cell,
+                     ;; we can't turn it into nil, so we turn it into
+                     ;; a more costly lexer that also fails for all inputs.
+                     (setq v '(?a)))
+                   (setcar k (car v))
+                   (setcdr k (cdr v)))
+                 states-dfa)
+        (clrhash states-dfa)
+        (setq lex--states postponed)
+        (setq postponed nil)))
+
+    res))
+
+(defun lex-compile (alist)
+  (lex--dfa-wrapper
+   (lambda ()
+     (let* ((lex--char-equiv-table
+             (if case-fold-search
+                 (case-table-get-table (current-case-table) 'eqv)))
+            (newstate
+             `(or
+               ,@(mapcar (lambda (x) (lex--nfa (car x) (list 'stop (cdr x))))
+                         alist))))
+       (push newstate lex--states)
+       newstate))))
+
+(defun lex-search-dfa (match-dfa)
+  ;; This constructs a search-DFA whose last match should be the leftmost
+  ;; longest match.
+  (lex--dfa-wrapper
+   (lambda ()
+     (lex--nfa '(*\? (char not)) match-dfa))))
+
+
+(defun lex--terminate-if (new old)
+  (cond
+   ((eq new t) t)
+   ((eq old t) t)
+   (t (while new (let ((x (pop new))) (if (not (memq x old)) (push x old))))
+      old)))
+
+(defun lex--optimize-1 (lexer)
+  (let ((terminate nil))
+    (cons
+     (pcase (car lexer)
+       (`table
+        (let ((ct (cdr lexer))
+              (char nil))
+          ;; Optimize each entry.
+          (map-char-table
+           (lambda (range v)
+             (let ((cell (lex--optimize v)))
+               (setq terminate (lex--terminate-if (cdr cell) terminate))
+               (set-char-table-range ct range (car cell))))
+           ct)
+          ;; Optimize the internal representation of the table.
+          (optimize-char-table (cdr lexer) 'eq)
+          ;; Eliminate the table if possible.
+          (map-char-table
+           (lambda (range v)
+             (setq char
+                   (if (and (characterp range) (null char))
+                       range t)))
+           ct)
+          (pcase char
+            (`nil nil)
+            (`t lexer)
+            (_ (setcar lexer 'char) (setcdr lexer (aref ct char)) lexer))))
+       (`stop
+        (let ((cell (lex--optimize (cddr lexer))))
+          (setq terminate t)
+          (setf (cddr lexer) (car cell)))
+        lexer)
+       (`check
+        (let* ((test (nth 1 lexer))
+               (cellf (lex--optimize (nthcdr 3 lexer)))
+               (fail (setf (nthcdr 3 lexer) (car cellf)))
+               (cells (lex--optimize (nth 2 lexer)))
+               (succ (setf (nth 2 lexer) (car cells))))
+          (setq terminate (lex--terminate-if (cdr cellf) terminate))
+          (setq terminate (lex--terminate-if (cdr cells) terminate))
+          ;; TODO: the check-optimizations below only work on consecutive
+          ;; pairs of checks.  We need to be more agressive and make sure
+          ;; the optimized DFA never does twice the same test at the same
+          ;; position.  Most importantly: don't do the same test in
+          ;; a tight loop as in "(^\<)*".
+          (when (eq 'check (car succ))
+            (cond
+             ((equal test (nth 1 succ)) ;Same successful test.
+              (setf (nth 2 lexer) (setq succ (nth 2 succ))))
+             ;; TODO: we can add rules such as bobp -> eolp,
+             ;; bosp -> bowp, (syntax X) -> (syntax Y X), ...
+             ))
+          (when (eq 'check (car fail))
+            (cond
+             ((equal test (nth 1 fail)) ;Same failing test.
+              (setf (nthcdr 3 lexer) (setq fail (nthcdr 3 succ))))
+             ;; TODO: we can add rules such as !eolp -> !bobp,
+             ;; !bowp -> !bosp, !(syntax Y X) -> !(syntax X), ...
+             ))
+          (if (or succ fail) lexer)))
+       (_
+        (cl-assert (characterp (car lexer)))
+        (let ((cell (lex--optimize (cdr lexer))))
+          (setq terminate (lex--terminate-if (cdr cell) terminate))
+          (if (setf (cdr lexer) (car cell))
+              lexer))))
+     (if (consp terminate)
+         (delq lexer terminate)
+       terminate))))
+
+(defun lex--optimize (lexer)
+  (when lexer
+    ;; The lex--memoize cache maps lexer states to (LEXER . TERMINATE) where
+    ;; TERMINATE is either t to say that LEXER can terminate or a list of
+    ;; lexers which means that LEXER terminates only if one of the lexers in
+    ;; the list terminates.
+    (let ((cache (gethash lexer lex--memoize)))
+      (if cache
+          ;; Optimize (char C) to nil.
+          (if (and (characterp (caar cache)) (null (cdar cache))) nil cache)
+        ;; Store a value indicating that we're in the process of computing it,
+        ;; so when we encounter a loop, we don't recurse indefinitely.
+        ;; Not knowing any better, we start by stating the tautology that
+        ;; `lexer' terminates if and only if `lexer' terminates.
+        (let ((cell (cons lexer (list lexer))))
+          (puthash lexer cell lex--memoize)
+          (let ((res (lex--optimize-1 lexer)))
+            (if (and (car res) (cdr res))
+                res
+              (setcar lexer ?a)
+              (setcdr lexer nil)
+              (puthash lexer '(nil) lex--memoize)
+              nil)))))))
+
+(defun lex-optimize (lexer)
+  (let ((lex--memoize (make-hash-table :test 'eq)))
+    (prog1 (car (lex--optimize lexer))
+      (message "Visited %d states" (hash-table-count lex--memoize)))))
+
+(defmacro lex-case (object posvar &rest cases)
+  (declare (indent 2))
+  (let* ((i -1)
+         (alist (mapcar (lambda (case) (cons (car case) (cl-incf i))) cases))
+         (lex (lex-compile alist))
+         (tmpsym (make-symbol "tmp")))
+    (setq i -1)
+    `(let ((,tmpsym (lex-match-string ',lex ,object ,posvar)))
+       (pcase (car ,tmpsym)
+         ,@(mapcar (lambda (case)
+                     `(,(cl-incf i)
+                       (set-match-data
+                        (list ,posvar (setq ,posvar (cadr ,tmpsym))))
+                       ,@(cdr case)))
+                   cases)))))
+
+;;; Matching engine
+
+(defun lex--match-bobp (arg pos &optional string)
+  (= pos (if string 0 (point-min))))
+
+(defun lex--match-eobp (arg pos &optional string)
+  (= pos (if string (length string) (point-max))))
+
+(defun lex--match-bolp (arg pos &optional string)
+  (if string (or (= pos 0) (eq ?\n (aref string (1- pos))))
+    (memq (char-before pos) '(nil ?\n))))
+
+(defun lex--match-eolp (arg pos &optional string)
+  (if string (or (= pos (length string)) (eq ?\n (aref string pos)))
+    (memq (char-after pos) '(nil ?\n))))
+
+(defun lex--match-bowp (arg pos &optional string)
+  (and (not (if string (and (> pos 0)
+                            (eq ?w (char-syntax (aref string (1- pos)))))
+              (and (> pos (point-min)) (eq 2 (car (syntax-after (1- pos)))))))
+       (if string (and (< pos (length string))
+                       (eq ?w (char-syntax (aref string pos))))
+         (eq 2 (car (syntax-after pos))))))
+
+(defun lex--match-eowp (arg pos &optional string)
+  (and (if string (and (> pos 0)
+                       (eq ?w (char-syntax (aref string (1- pos)))))
+         (and (> pos (point-min)) (eq 2 (car (syntax-after (1- pos))))))
+       (not (if string (and (< pos (length string))
+                            (eq ?w (char-syntax (aref string pos))))
+              (eq 2 (car (syntax-after pos)))))))
+
+(defun lex--match-bosp (arg pos &optional string)
+  (and (not (if string
+                (and (> pos 0)
+                     (memq (char-syntax (aref string (1- pos))) '(?w ?_)))
+              (and (> pos (point-min))
+                   (memq (car (syntax-after (1- pos))) '(2 3)))))
+       (if string (and (< pos (length string))
+                       (memq (char-syntax (aref string pos)) '(?w ?_)))
+         (memq (car (syntax-after pos)) '(2 3)))))
+
+(defun lex--match-eosp (arg pos &optional string)
+  (and (if string (and (> pos 0)
+                       (memq (char-syntax (aref string (1- pos))) '(?w ?_)))
+         (and (> pos (point-min)) (memq (car (syntax-after (1- pos))) '(2 3))))
+       (not (if string (and (< pos (length string))
+                            (memq (char-syntax (aref string pos)) '(?w ?_)))
+              (memq (car (syntax-after pos)) '(2 3))))))
+
+(defun lex--match-not-word-boundary (arg pos &optional string)
+  (eq (if string (and (> pos 0)
+                      (eq ?w (char-syntax (aref string (1- pos)))))
+        (and (> pos (point-min)) (eq 2 (car (syntax-after (1- pos))))))
+      (if string (and (< pos (length string))
+                      (eq ?w (char-syntax (aref string pos))))
+        (eq 2 (car (syntax-after pos))))))
+
+(defun lex--match-upper (arg pos &optional string)
+  (when (< pos (if string (length string) (point-max)))
+    (let ((char (if string (aref string pos) (char-after pos))))
+      (not (eq (downcase char) char)))))
+
+(defun lex--match-lower (arg pos &optional string)
+  (when (< pos (if string (length string) (point-max)))
+    (let ((char (if string (aref string pos) (char-after pos))))
+      (not (eq (upcase char) char)))))
+
+
+(defun lex--match-category (category pos &optional string)
+  (when (< pos (if string (length string) (point-max)))
+    (aref (char-category-set (if string (aref string pos)
+                               (char-after pos)))
+          category)))
+
+(defun lex--match-syntax (syntaxes pos &optional string)
+  (when (< pos (if string (length string) (point-max)))
+    (memq (car (if string (aref (syntax-table) (aref string pos))
+                 (syntax-after pos)))
+          syntaxes)))
+
+
+(defun lex-match-string (lex string &optional start stop)
+  "Match LEX against STRING between START and STOP.
+Return a triplet (VALUE ENDPOS . LEXER) where VALUE is the
+value of returned by the lexer for the match found (or nil), ENDPOS
+is the end position of the match found (or nil), and LEXER is the
+state of the engine at STOP, which can be passed back to
+`lex-match-string' to continue the match elsewhere."
+  ;; FIXME: Move this to C.
+  (unless start (setq start 0))
+  (unless stop  (setq stop (length string)))
+  (let ((match (list nil nil))
+        (lastlex lex))
+    (while
+        (progn
+          (while (eq (car lex) 'check)
+            (setq lex (if (funcall (car (nth 1 lex)) (cdr (nth 1 lex))
+                                   start string)
+                          (nth 2 lex) (nthcdr 3 lex))))
+          (when (eq (car lex) 'stop)
+            ;; Don't stop yet, we're looking for the longest match.
+            (setq match (list (cadr lex) start))
+            (message "Found match: %s" match)
+            (setq lex (cddr lex)))
+          (cl-assert (not (eq (car lex) 'stop)))
+          (and lex (< start stop)))
+      (let ((c (aref string start)))
+        (setq start (1+ start))
+        (setq lex (cond
+                   ((eq (car lex) 'table) (aref (cdr lex) c))
+                   ((integerp (car lex)) (if (eq c (car lex)) (cdr lex)))))
+        (setq lastlex lex)))
+    (message "Final search pos considered: %s" start)
+    ;; The difference between `lex' and `lastlex' is basically that `lex'
+    ;; may depend on data after `stop' (if there was an `end-of-file' or
+    ;; `word-boundary' or basically any `check').  So let's return `lastlex'
+    ;; so it can be correctly used to continue the match with a different
+    ;; content than what's after `stop'.
+    (nconc match lastlex)))
+
+(defun lex-match-string-first (lex string &optional start stop)
+  "Match LEX against STRING between START and STOP.
+Return a triplet (VALUE ENDPOS . LEXER) where VALUE is the
+value of returned by the lexer for the match found (or nil), ENDPOS
+is the end position of the match found (or nil), and LEXER is the
+state of the engine at STOP, which can be passed back to
+`lex-match-string' to continue the match elsewhere."
+  ;; FIXME: Move this to C.
+  (unless start (setq start 0))
+  (unless stop  (setq stop (length string)))
+  (let ((match (list nil nil))
+        (lastlex lex))
+    (catch 'found
+      (while
+          (progn
+            (while (eq (car lex) 'check)
+              (setq lex (if (funcall (car (nth 1 lex)) (cdr (nth 1 lex))
+                                     start string)
+                            (nth 2 lex) (nthcdr 3 lex))))
+            (when (eq (car lex) 'stop)
+              (throw 'found (cl-list* (cadr lex) start (cddr lex))))
+            (cl-assert (not (eq (car lex) 'stop)))
+            (and (not match) lex (< start stop)))
+        (let ((c (aref string start)))
+          (setq start (1+ start))
+          (setq lex (cond
+                     ((eq (car lex) 'table) (aref (cdr lex) c))
+                     ((integerp (car lex)) (if (eq c (car lex)) (cdr lex)))))
+          (setq lastlex lex)))
+      ;; The difference between `lex' and `lastlex' is basically that `lex'
+      ;; may depend on data after `stop' (if there was an `end-of-file' or
+      ;; `word-boundary' or basically any `check').  So let's return `lastlex'
+      ;; so it can be correctly used to continue the match with a different
+      ;; content than what's after `stop'.
+      (cl-list* nil start lastlex))))
+
+(defun lex-match-buffer (lex &optional stop)
+  "Match LEX against buffer between point and STOP.
+Return a triplet (VALUE ENDPOS . LEXER) where VALUE is the
+value of returned by the lexer for the match found (or nil), ENDPOS
+is the end position of the match found (or nil), and LEXER is the
+state of the engine at STOP, which can be passed back to
+continue the match elsewhere."
+  ;; FIXME: Move this to C.
+  (unless stop  (setq stop (point-max)))
+  (let ((start (point))
+        (match (list nil nil))
+        (lastlex lex))
+    (while
+        (progn
+          (while (eq (car lex) 'check)
+            (setq lex (if (funcall (car (nth 1 lex)) (cdr (nth 1 lex))
+                                   start)
+                          (nth 2 lex) (nthcdr 3 lex))))
+          (when (eq (car lex) 'stop)
+            ;; Don't stop yet, we're looking for the longest match.
+            (setq match (list (cadr lex) start))
+            (message "Found match: %s" match)
+            (setq lex (cddr lex)))
+          (cl-assert (not (eq (car lex) 'stop)))
+          (and lex (< start stop)))
+      (let ((c (char-after start)))
+        (setq start (1+ start))
+        (setq lex (cond
+                   ((eq (car lex) 'table) (aref (cdr lex) c))
+                   ((integerp (car lex)) (if (eq c (car lex)) (cdr lex)))))
+        (setq lastlex lex)))
+    (message "Final search pos considered: %s" start)
+    ;; The difference between `lex' and `lastlex' is basically that `lex'
+    ;; may depend on data after `stop' (if there was an `end-of-file' or
+    ;; `word-boundary' or basically any `check').  So let's return `lastlex'
+    ;; so it can be correctly used to continue the match with a different
+    ;; content than what's after `stop'.
+    (nconc match lastlex)))
+
+(provide 'lex)
+;;; lex.el ends here
diff --git a/packages/lmc/lmc.el b/packages/lmc/lmc.el
new file mode 100644 (file)
index 0000000..6eae564
--- /dev/null
@@ -0,0 +1,804 @@
+;;; lmc.el --- Little Man Computer in Elisp
+
+;; Copyright (C) 2011, 2013  Free Software Foundation, Inc.
+
+;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
+;; Version: 1.2
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; A simulator for the Little Man Computer.
+;; http://en.wikipedia.org/wiki/Little_man_computer
+
+;; The simulator uses a plain editable buffer, so you can edit the machine
+;; words just like any other text, and every word can be given a name (label)
+;; which can also be edited in the normal way.  Additionally to the labels it
+;; shows the disassembled meaning of instruction words.  Of course, it can't
+;; always know which words are meant to be code rather than data, so it relies
+;; on information from the assembler to do that, and otherwise just marks every
+;; word it executes as being "code".
+
+;; The assembly uses a slightly different (Lispish) syntax where comments start
+;; with ";", and each instruction needs to be wrapped in parentheses.
+;; Other than that it's the same assembly as documented elsewhere
+;; (accepts a few mnemonic variants, such as IN/INP, STA/STO, BR/BRA).
+;; Another difference is that the DAT mnemonic accepts any number of words
+;; rather than just one.
+;;
+;; So the assembly (stored in files with extension ".elmc") looks like:
+;;
+;;   label1
+;;          (BR label2) ;Useless extra jump.
+;;   label2
+;;          (LDA data1) ;Cleverest part of the algorithm.
+;;          (ADD data2)
+;;          (STO data1)
+;;          (BR label1)
+;;          
+;;   data1  (DAT 0)
+;;   data2  (DAT 050 060 070)
+;;
+;; And actually, since the assembler re-uses the Emacs Lisp reader to parse the
+;; code, you can use binary, octal, and hexadecimal constants as well, using
+;; the notations #b101010, #o277, and #x5F respectively.
+;; 
+;; The lmc-asm-mode supports the usual editing features such as label
+;; completion, mnemonic completion, jumping to a label, automatic indentation,
+;; and code folding.
+
+;;; Code:
+
+(eval-when-compile (require 'cl))
+(require 'hexl)
+
+(defgroup lmc ()
+  "Customization group for the Little Man Computer simulator."
+  :group 'languages)
+
+;;; The LMC-Simulator
+
+(defvar lmc--pc 0 "Program counter for LMC.")
+(make-variable-buffer-local 'lmc--pc)
+
+(defvar lmc-acc 0 "Accumulator for LMC.")
+(make-variable-buffer-local 'lmc--acc)
+
+(defvar lmc-turbo nil
+  "When non-nil, evaluate the code without extra delays.
+When nil, evaluation flashes the cursor at to help you see what's going on,
+which slows it down significantly.
+Also, when nil, evaluation is interrupted when the user hits a key.")
+
+;; Emacs-22 backward compatibility.
+(defmacro lmc--with-silent-modifications (&rest body)
+  (declare (debug t) (indent 0))
+  (if (fboundp 'with-silent-modifications)
+      `(with-silent-modifications ,@body)
+    (let ((modified (make-symbol "modified")))
+      `(let* ((,modified (buffer-modified-p))
+             (buffer-undo-list t)
+             (inhibit-read-only t)
+             (inhibit-modification-hooks t)
+             deactivate-mark
+             ;; Avoid setting and removing file locks and checking
+             ;; buffer's uptodate-ness w.r.t the underlying file.
+             buffer-file-name
+             buffer-file-truename)
+        (unwind-protect
+            (progn
+              ,@body)
+          (unless ,modified
+            (restore-buffer-modified-p nil)))))))
+
+;; (defun lmc-check (cmds)
+;;   (dolist (cmd cmds)
+;;     (pcase cmd
+;;       ((pred symbolp))                                ;A label.
+;;       (`(,(or `IN `OUT `HLT `COB)))                   ;Arity-0 opcode.
+;;       (`(,(or `LDA `STO `ADD `SUB `BR `BRZ `BRP `DAT) ;Arity-1 opcode.
+;;          ,(or (pred lmc--numberp) (pred symbolp))))
+;;       (_ (error "Unknown instruction %S" cmd)))))
+
+(defun lmc--numberp (n max)
+  (when (numberp n)
+    (or (and (or (natnump n) (error "%S is not a positive integer" n))
+             (or (< n max) (error "%S is too large" n))))))
+
+(defun lmc--resolve (arg labels max)
+  (if (lmc--numberp arg max) arg
+    (or (cdr (assq arg labels))
+        (error (if (symbolp arg)
+                   "Unknown label %S"
+                 "Arg %S is neither a label nor a number")
+               arg))))
+
+(defconst lmc-mnemonic-1-table '((LDA . 5)
+                                 (STO . 3) (STA . 3)
+                                 (ADD . 1)
+                                 (SUB . 2)
+                                 (BR . 6) (BRA . 6)
+                                 (BRZ . 7)
+                                 (BRP . 8))
+  "Mnemonic table for arity-1 instructions.")
+
+(defconst lmc-mnemonic-0-table '((HLT . 000) (COB . 000)
+                                 (IN . 901) (INP . 901)
+                                 (OUT . 902))
+  "Mnemonic table for arity-0 instructions.")
+
+(defun lmc--assemble (cmds)
+  ;; FIXME: Move to error position upon error.
+  (let ((pos 0)
+        (labels ()))
+    ;; First pass, resolve labels to their positions.
+    (dolist (cmd cmds)
+      (setq cmd (cdr cmd))              ;Ignore position info at this stage.
+      (cond
+       ((or (consp cmd)
+            (assq cmd lmc-mnemonic-0-table))
+        (setq pos (+ pos (if (eq (car cmd) 'DAT)
+                             (1- (length cmd)) 1))))
+       ((numberp cmd)
+        (cond
+         ((not (and (natnump cmd) (< cmd 100)))
+          (error "%S is not a valid address" cmd))
+         ((< cmd pos)
+          (error "Address %S already used" cmd))
+         ((rassq pos labels)
+          (error "Label %S needs to come after address %S"
+                 (car (rassq pos labels)) cmd))
+         (t (setq pos cmd))))
+       ((and cmd (symbolp cmd))
+        ;; (assert (symbolp cmd))
+        (if (assq cmd labels)
+            (error "Duplicate label %S" cmd)
+          (push (cons cmd pos) labels)))))
+    ;; Second pass, do the actual assembly.
+    (let* ((words ())
+           (ll nil)
+           (newword
+            (lambda (w &optional code)
+              (push (list w ll code) words) (setq ll nil))))
+      (dolist (cmd cmds)
+        (goto-char (pop cmd))          ;Move to start of CMD, in case of error.
+        (cond
+         ((assq cmd lmc-mnemonic-0-table)
+          (funcall newword (cdr (assq cmd lmc-mnemonic-0-table)) 'code))
+         ((and (null (cdr-safe cmd))
+               (assq (car-safe cmd) lmc-mnemonic-0-table))
+          (funcall newword (cdr (assq (car cmd) lmc-mnemonic-0-table)) 'code))
+         ((eq (car-safe cmd) 'DAT)
+          (dolist (arg (cdr cmd))
+            (funcall newword (lmc--resolve arg labels 1000))))
+         ((assq (car-safe cmd) lmc-mnemonic-1-table)
+          (funcall newword
+                   (+ (* 100 (cdr (assq (car cmd) lmc-mnemonic-1-table)))
+                      (lmc--resolve (nth 1 cmd) labels 100))
+                   'code))
+         ((numberp cmd)
+          (dotimes (_ (- cmd (length words)))
+            (funcall newword 0)))
+         ((and cmd (symbolp cmd))
+          (assert (eq (cdr (assq cmd labels)) (length words)))
+          (setq ll cmd))
+         (t (error "Invalid instruction %S" cmd))))
+      (nreverse words))))
+
+;; (defvar lmc-label-width 8)
+
+(defun lmc--load-word (word addr)
+  (assert (bolp))
+  (insert (propertize (format " %02d:\t" addr)
+                      'read-only t
+                      'front-sticky t
+                      'rear-nonsticky t))
+  (let ((word (car word))
+        (label (nth 1 word))
+        (code (nth 2 word)))
+    (let ((basepos (point))
+          (base (current-column)))
+      (if (and label (symbolp label))
+          (insert (symbol-name label)))
+      ;; (when (>= (current-column) (+ base tab-width))
+      ;;   (while (>= (current-column) (+ base tab-width -1))
+      ;;     (delete-char -1))
+      ;;   (insert "…")
+      ;;   (put-text-property basepos (point)
+      ;;                      'help-echo (symbol-name label)))
+      ;; (insert (propertize
+      ;;      (make-string (1+ (- lmc-label-width (current-column))) ?\s)
+      ;;      'display '(space :align-to (1+ lmc-label-width))))
+      (insert (eval-when-compile (propertize "\t"
+                                             'read-only t
+                                             'rear-nonsticky t))))
+    (insert (format "  %03d" word))
+    (insert (if code
+                (eval-when-compile (propertize "\n"
+                                               'lmc-code t
+                                               'read-only t
+                                               'rear-nonsticky t))
+              (eval-when-compile (propertize "\n"
+                                             'read-only t
+                                             'rear-nonsticky t))))))
+
+(defun lmc-disassemble-word (word)
+  (let ((code (car (rassq (/ word 100) lmc-mnemonic-1-table))))
+    (cond
+     (code (list code (mod word 100)))
+     ((rassq word lmc-mnemonic-0-table)
+      (list (car (rassq word lmc-mnemonic-0-table)))))))
+
+(defun lmc-addr->point (addr)
+  (goto-char (point-min))
+  (forward-line addr))
+
+(defun lmc-point->addr ()
+  (- (count-lines (point-min) (point)) (if (bolp) 0 1)))
+
+(defun lmc-get-word (&optional addr fix)
+  (save-excursion
+    (if (null addr)
+        (forward-line 0)
+      (lmc-addr->point addr))
+    (cond
+     ((re-search-forward "\t.*\t  \\([0-9][0-9][0-9]\\)$"
+                         (line-end-position) t)
+      (string-to-number (match-string 1)))
+     ((re-search-forward "\t.*\t\\(.*\\)$" (line-end-position) t)
+      (let ((n (string-to-number (match-string 1))))
+        (unless (integerp n) (setq n (truncate n)))
+        (setq n (mod n 1000))
+        (when fix
+          (replace-match (format "  %03d" n) t t nil 1))
+        n))
+     (t 0))))
+
+(defconst lmc-label-re "^\\([^\t\n]*\\)\t\\(.*\\)\t *[0-9]")
+
+(defvar lmc-label-table nil)
+
+(defun lmc-record-label (addr label)
+  (let ((old (aref lmc-label-table addr)))
+    (unless (and old (equal (car old) label))
+      ;; (message "recordlabel %S = %S" addr label)
+      (aset lmc-label-table addr (list label))
+      (when (cdr old)
+        (run-with-timer
+         0 nil
+         (lambda (buf refaddrs)
+           (with-current-buffer buf
+             (save-excursion
+               ;; (message "refreshlabel in %S" refaddrs)
+               (dolist (refaddr refaddrs)
+                 (lmc-addr->point (1+ refaddr))
+                 (unless (bobp)
+                   (let ((inhibit-read-only t))
+                     (put-text-property (1- (point)) (point)
+                                        'fontified nil)))))))
+         (current-buffer) (cdr old))))))
+
+(defun lmc-get-label (addr)
+  (save-excursion
+    ;; (if (null addr)
+    ;;     (forward-line 0)
+    (lmc-addr->point addr) ;; )
+    (let ((label (when (re-search-forward lmc-label-re nil t)
+                   (if (> (match-end 2) (match-beginning 2))
+                       (match-string 2)))))
+      (lmc-record-label addr label)
+      label)))
+
+
+(defun lmc-font-lock-opcode ()
+  (save-match-data
+    (when (get-text-property (line-end-position) 'lmc-code)
+      (let* ((word (lmc-get-word))
+             (code (lmc-disassemble-word word)))
+        ;; Resolve labels.
+        (when (integerp (nth 1 code))
+          (let* ((addr (nth 1 code))
+                 (label (lmc-get-label addr)))
+            (pushnew (lmc-point->addr)
+                     (cdr (aref lmc-label-table addr)))
+            (when label
+              (setf (nth 1 code) label))))
+        (put-text-property
+         (line-end-position) (1+ (line-end-position))
+         'display
+         (format (eval-when-compile
+                   (concat (propertize "\t" 'cursor t)
+                           (propertize "%s" 'face font-lock-comment-face)
+                           "\n"))
+                 (or code '(Invalid opcode)))))
+      nil)))
+
+(defun lmc-font-lock-label ()
+  (lmc-record-label (lmc-point->addr)
+                    (if (> (match-end 2) (match-beginning 2))
+                       (match-string 2)))
+  (save-excursion
+    ;; ;; Replace any TAB found in label.
+    ;; (goto-char (match-beginning 2))
+    ;; (while (progn (skip-chars-forward "^\t" (match-end 2))
+    ;;               (< (point) (match-end 2)))
+    ;;   (insert " ") (delete-char 1))
+    ;; Truncate label's display if needed.
+    (move-to-column (1- (* 2 tab-width)))
+    (when (> (match-end 2) (point))
+      (forward-char -1)
+      (put-text-property (match-beginning 2) (match-end 2)
+                         'help-echo (match-string 2))
+      (put-text-property (point) (match-end 2) 'display "…")))
+  font-lock-constant-face)
+
+(defconst lmc-font-lock-keywords
+  `((,lmc-label-re
+     (1 'hexl-address-region)
+     (2 (lmc-font-lock-label)))
+    (".$" (0 (lmc-font-lock-opcode)))))
+
+(defun lmc-after-change (beg end len)
+  (unless inhibit-read-only
+    (save-excursion
+      ;; Replace any TAB or NL inserted, which could interfere with parsing.
+      (goto-char beg)
+      (while (progn (skip-chars-forward "^\t\n" end)
+                    (< (point) end))
+        (insert " ") (delete-char 1)))))
+
+(defvar lmc-pc 0 "LMC program counter.")
+(make-variable-buffer-local 'lmc-pc)
+(defvar lmc-acc nil "LMC accumulator.")
+(make-variable-buffer-local 'lmc-acc)
+(defvar lmc-output nil "Past LMC output,")
+(make-variable-buffer-local 'lmc-output)
+
+(defvar lmc--stopped nil "State where we stopped.")
+(make-variable-buffer-local 'lmc--stopped)
+
+(defun lmc-update-pc ()
+  (setq lmc-pc (mod lmc-pc 100))
+  (lmc-addr->point lmc-pc)
+  (move-marker overlay-arrow-position (point))
+  (re-search-forward "\t.*\t *" nil t)
+  (unless (get-text-property (line-end-position) 'lmc-code)
+    (let ((inhibit-read-only t))
+      (put-text-property (line-end-position)
+                         (min (1+ (line-end-position)) (point-max))
+                         'lmc-code t))))
+
+(defun lmc--state ()
+  (list (buffer-chars-modified-tick) lmc-acc lmc-pc))
+(defun lmc-stopped-p ()
+  (equal (lmc--state) lmc--stopped))
+
+;; FIXME: Add tool-bar to LMC-Sim.
+
+(defvar lmc-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map "\C-c\C-s" 'lmc-step)
+    (define-key map "\C-c\C-r" 'lmc-run)
+    (define-key map "\C-c\C-l" 'lmc-load-file)
+    (define-key map "\C-c\C-a" 'lmc-set-acc)
+    (define-key map "\C-c\C-p" 'lmc-set-pc)
+    map))
+
+(easy-menu-define lmc-menu lmc-mode-map "Menu for LMC-Sim."
+  '("LMC-Sim"
+    ["Step" lmc-step (not (lmc-stopped-p))]
+    ["Run" lmc-run (not (lmc-stopped-p))]
+    ["Load file" lmc-load-file]
+    "--"
+    ["Set Program Counter" lmc-set-pc]
+    ["Set Accumulator" lmc-set-acc]))
+
+(defvar lmc-tool-bar-map
+  (let ((map (make-sparse-keymap)))
+    (tool-bar-local-item "gud/next" 'lmc-step 'step map
+                         :label "Step" ;; :vert-only t
+                         :enable '(not (lmc-stopped-p))
+                         )
+    (tool-bar-local-item "gud/run" 'lmc-run 'run map
+                         :label "Run" ;; :vert-only t
+                         :enable '(not (lmc-stopped-p))
+                         )
+    map))
+
+(defun lmc-tool-bar-to-string (&optional map)
+  (let ((res ""))
+    (map-keymap
+     (lambda (k v)
+       (when (eq (car v) 'menu-item)
+         (let* ((label (nth 1 v))
+                (cmd (nth 2 v))
+                (plist (nthcdr (if (consp (nth 3 v)) 4 3) v))
+                (help-echo (plist-get plist :help))
+                (image     (plist-get plist :image))
+                (enable-exp (if (plist-member plist :enable)
+                                (plist-get plist :enable)
+                              t))
+                (enable (eval enable-exp))
+                (map (let ((map (make-sparse-keymap)))
+                       (define-key map [header-line mouse-1] cmd)
+                       (define-key map [header-line mouse-2] cmd)
+                       map))
+                (button
+                 (propertize " " 'help-echo (or help-echo label)
+                             'keymap map
+                             'face 'header-line
+                             'mouse-face (if enable 'mode-line-highlight)
+                             'rear-nonsticky '(display keymap help-echo)
+                             'display (if (and (eq 'image (car image))
+                                               (not enable))
+                                          `(image :conversion disabled
+                                                  ,@(cdr image))
+                                        image))))
+           (setq res (concat res (propertize " " 'display '(space :width 0.5)
+                                             'face 'header-line
+                                             )
+                             button)))))
+     (or (let ((tool-bar-map map)) (tool-bar-make-keymap))
+         (key-binding [tool-bar])))
+    res))
+
+(define-derived-mode lmc-mode fundamental-mode "LMC-Sim"
+  "The simulator of the Little Man Computer."
+  (set (make-local-variable 'truncate-lines) t)
+  (set (make-local-variable 'truncate-partial-width-windows) t)
+  (set (make-local-variable 'tab-width) 10)
+  (set (make-local-variable 'font-lock-defaults)
+       '(lmc-font-lock-keywords t))
+  (set (make-local-variable 'font-lock-extra-managed-props)
+       '(display help-echo))
+  ;; (set (make-local-variable 'tool-bar-map) lmc-tool-bar-map)
+  (add-hook 'after-change-functions #'lmc-after-change nil t)
+  (set (make-local-variable 'lmc-label-table) (make-vector 100 nil))
+  (set (make-local-variable 'overlay-arrow-position) (point-min-marker))
+  (lmc-update-pc)
+  ;; (overwrite-mode 1)
+  (set (make-local-variable 'header-line-format)
+       `(""
+         (:eval (lmc-tool-bar-to-string lmc-tool-bar-map))
+         "  " ,(propertize "LMC-Sim" 'face '(bold italic)) "  "
+         ,(propertize "PC=" 'face 'font-lock-function-name-face)
+         (:eval (format ,(propertize "%02d"
+                                     'mouse-face 'mode-line-highlight
+                                     'help-echo
+                                     "mouse-2: set the Program Counter"
+                                     'follow-link t
+                                     ;; I'm having problems with mouse-2 to
+                                     ;; mouse-1 remapping in the mode-line and
+                                     ;; header-line, so I over-do it a bit.
+                                     'keymap
+                                     '(keymap
+                                       (header-line keymap
+                                                    (down-mouse-1 . ignore)
+                                                    (mouse-2 . lmc-set-pc)
+                                                    (mouse-1 . lmc-set-pc))))
+                        lmc-pc))
+         "  " ,(propertize "ACC=" 'face 'font-lock-function-name-face)
+         (:eval (format ,(propertize "%03d"
+                                     'mouse-face 'mode-line-highlight
+                                     'help-echo "mouse-2: set the Accumulator"
+                                     'follow-link t
+                                     'keymap
+                                     ;; I'm having problems with mouse-2 to
+                                     ;; mouse-1 remapping in the mode-line and
+                                     ;; header-line, so I over-do it a bit.
+                                     '(keymap
+                                       (header-line keymap
+                                                    (down-mouse-1 . ignore)
+                                                    (mouse-2 . lmc-set-acc)
+                                                    (mouse-1 . lmc-set-acc))))
+                        lmc-acc))
+         "      " ,(propertize "Recent output="
+                               'face 'font-lock-function-name-face)
+         (:eval (if lmc-output (format "%s" lmc-output) "()"))))
+  )
+
+(defun lmc-set-pc (pc)
+  "Set the Program Counter."
+  (interactive (list (read-number "New PC: " lmc-pc)))
+  (setq lmc-pc pc)
+  (lmc-update-pc))
+
+(defun lmc-set-acc (acc)
+  "Set the Accumulator."
+  (interactive (list (read-number "New Accumulator: " lmc-acc)))
+  (setq lmc-acc (mod acc 1000)))
+
+(defun lmc-load (words)
+  (pop-to-buffer "*LMC-Sim*")
+  (lmc-mode)
+  (let ((inhibit-read-only t)
+        (addr 0))
+    (setq lmc-pc 0)
+    (setq lmc-acc 0)
+    (setq lmc-output nil)
+    (erase-buffer)
+    (dolist (word words)
+      (lmc--load-word word addr)
+      (setq addr (1+ addr)))
+    (while (< addr 100)
+      (lmc--load-word '(0) addr)
+      (setq addr (1+ addr))))
+  (lmc-update-pc))
+
+(defcustom lmc-store-flash t
+  "If non-nil, memory words blink when modified."
+  :type 'boolean)
+
+(defun lmc--sit-for (secs)
+  (unless lmc-turbo (sit-for secs)))
+
+(defun lmc-store-word (addr word)
+  (save-excursion
+    (lmc-addr->point addr)
+    (if (not (re-search-forward "\t.*\t\\(.*\\)$" (line-end-position) t))
+        (error "Missing memory cell %S" addr)
+      (let ((mb1 (match-beginning 1)))
+        (when lmc-store-flash
+          (lmc--with-silent-modifications
+           (put-text-property mb1 (point) 'face 'region))
+          (lmc--sit-for 0.2))
+        (let ((me1 (point)))
+          (insert (format "  %03d" word)) (delete-region mb1 me1))
+        (when lmc-store-flash
+          (lmc--sit-for 0.1)
+          (lmc--with-silent-modifications
+           (put-text-property mb1 (point) 'face 'region))
+          (lmc--sit-for 0.1)
+          (lmc--with-silent-modifications
+           (put-text-property mb1 (point) 'face nil))
+          (lmc--sit-for 0.1))))))
+
+(defun lmc-step ()
+  "Execute one LMC instruction."
+  (interactive)
+  (let* ((inst (lmc-get-word lmc-pc 'fix))
+         (code (lmc-disassemble-word inst)))
+    (case (car code)
+      (HLT (if (lmc-stopped-p)
+               (error "Already halted")
+             (setq lmc--stopped (lmc--state))
+             (force-mode-line-update)
+             (message "Done.")))
+      (IN (setq lmc-acc (mod (read-number "Enter a number") 1000))
+          (incf lmc-pc))
+      (OUT (message "Output: %03d" lmc-acc)
+           (push (format "%03d" lmc-acc) lmc-output)
+           (incf lmc-pc))
+      (LDA (setq lmc-acc (lmc-get-word (nth 1 code)))
+           (incf lmc-pc))
+      (STO (lmc-store-word (nth 1 code) lmc-acc)
+           (incf lmc-pc))
+      (ADD (setq lmc-acc (mod (+ lmc-acc (lmc-get-word (nth 1 code)))
+                              1000))
+           (incf lmc-pc))
+      (SUB (setq lmc-acc (mod (- lmc-acc (lmc-get-word (nth 1 code)))
+                              1000))
+           (incf lmc-pc))
+      (BR (setq lmc-pc (nth 1 code)))
+      (BRZ (setq lmc-pc (if (zerop lmc-acc)
+                            (nth 1 code)
+                          (1+ lmc-pc))))
+      (BRP (setq lmc-pc (if (< lmc-acc 500)
+                            (nth 1 code)
+                          (1+ lmc-pc))))
+      ((nil) (error "Invalid instruction %S" inst))
+      (t (error "%S not implemented" code))))
+  (lmc-update-pc))
+
+(defun lmc-run ()
+  "Run the code until hitting a HLT.
+The machine will also stop if the user presses a key."
+  (interactive)
+  (while (not (or (unless lmc-turbo (input-pending-p)) (lmc-stopped-p)))
+    (lmc-step)
+    (lmc--sit-for 0.05)))
+
+;;; The LMC assembly language editor.
+
+(defvar lmc-asm-mode-map
+  (let ((map (make-sparse-keymap)))
+    ;; FIXME: Add "load" and "assemble" buttons.
+    (define-key map "\C-c\C-l" 'lmc-asm-load)
+    (define-key map "\C-c\C-a" 'lmc-asm-assemble)
+    map))
+
+(easy-menu-define lmc-asm-menu lmc-asm-mode-map
+  "Menu for the LMC-Asm mode."
+  '("LMC-Asm"
+    ["Assemble" lmc-asm-assemble]
+    ["Load into Simulator" lmc-asm-load]))
+
+
+(defconst lmc-asm-mnemonic-names
+  (mapcar #'symbol-name
+          (append (mapcar #'car lmc-mnemonic-1-table)
+                  (mapcar #'car lmc-mnemonic-0-table)
+                  '(DAT))))
+
+(defconst lmc-asm-mnemonic-names-re (regexp-opt lmc-asm-mnemonic-names))
+
+(defvar lmc-asm-font-lock-keywords
+  `(("^[ \t]*\\(?:\\sw\\|\\s_\\)+"
+     (0 (if (zerop (nth 0 (syntax-ppss))) font-lock-constant-face)))
+    (,(concat "(\\(" lmc-asm-mnemonic-names-re "\\_>\\)")
+     (1 font-lock-keyword-face))))
+
+(defvar lmc-asm-imenu-generic-expression
+  '((nil "^\\(\\(?:\\sw\\|\\s_\\)+\\)" 1)))
+
+(defvar lmc-asm-outline-regexp "^\\(?:\\sw\\|\\s_\\)")
+
+;; We use the ".elmc" extension since the syntax is not identical to
+;; the usual ".lmc" syntax.
+;;;###autoload
+(add-to-list 'auto-mode-alist '("\\.elmc\\'" . lmc-asm-mode))
+
+;;;###autoload
+(define-derived-mode lmc-asm-mode fundamental-mode "LMC-Asm"
+  "Major mode to edit LMC assembly code."
+  :syntax-table emacs-lisp-mode-syntax-table
+  (set (make-local-variable 'font-lock-defaults)
+       '(lmc-asm-font-lock-keywords))
+  (set (make-local-variable 'indent-line-function)
+       #'lmc-asm-indent-line)
+  (set (make-local-variable 'indent-tabs-mode) t)
+  (set (make-local-variable 'imenu-generic-expression)
+       lmc-asm-imenu-generic-expression)
+  (set (make-local-variable 'outline-regexp) lmc-asm-outline-regexp)
+  (add-hook 'completion-at-point-functions #'lmc-asm-completion nil t)
+  (set (make-local-variable 'comment-start) ";")
+  (set (make-local-variable 'comment-start-skip)
+       "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\);+ *")
+  )
+
+(defun lmc-asm-labels (string)
+  (save-excursion
+    ;; We don't want to count the label being completed as a completion
+    ;; candidate, so let's keep track of the original position of point and
+    ;; skip any label nearby.
+    (let ((point (point)))
+      (goto-char (point-min))
+      (let ((ls ())
+            (re (concat "\\(^\\|(" lmc-asm-mnemonic-names-re "[ \t]+" "\\)"
+                        (regexp-quote string) "\\(?:\\sw\\|\\s_\\)"
+                        (if (> (length string) 0) "*" "+"))))
+        (while (re-search-forward re nil t)
+          (when (or (< point (match-end 1))
+                    (> (match-beginning 1) point))
+            (push (buffer-substring-no-properties
+                   (match-end 1) (match-end 0)) ls)))
+        ls))))
+
+(defun lmc-asm-completion ()
+  (save-excursion
+    (let ((ppss (syntax-ppss)))
+      (cond
+       ((nth 8 ppss) nil)               ;Inside string or comment.
+       ((zerop (nth 0 ppss))
+        (skip-syntax-backward "w_")
+        (when (save-excursion (skip-chars-backward " \t") (bolp))
+          (list (point)
+                (save-excursion (skip-syntax-forward "w_") (point))
+                (completion-table-dynamic #'lmc-asm-labels))))
+       ((= 1 (nth 0 ppss))              ;Inside paren.
+        (skip-syntax-backward "w_")
+        (list (point)
+              (save-excursion (skip-syntax-forward "w_") (point))
+              (if (eq (char-before) ?\()
+                  lmc-asm-mnemonic-names
+                (completion-table-dynamic #'lmc-asm-labels))))))))
+
+(defun lmc-asm-indentation ()
+  (save-excursion
+    (back-to-indentation)
+    (cond
+     ((> (nth 0 (syntax-ppss)) 0) nil)
+     ((looking-at "(") tab-width)
+     ((not (looking-at comment-start-skip)) 0)
+     ((not (looking-at "\\s<\\s<")) nil)
+     ((save-excursion (forward-comment (- (point))) (bobp)) 0)
+     (t (forward-comment (point-max)) (lmc-asm-indentation)))))
+
+(defun lmc-asm-indent-line (&optional arg)
+  (save-excursion
+    (back-to-indentation)
+    (when (and (zerop (nth 0 (syntax-ppss)))
+               (looking-at (concat lmc-asm-mnemonic-names-re "\\_>")))
+      ;; Apparently the user forgot to parenthesize the instruction.
+      (insert "(")
+      (if (assq (read (current-buffer)) lmc-mnemonic-0-table)
+          (insert ")")
+        (let ((eol (line-end-position)))
+          (ignore-errors
+            (read (current-buffer))
+            (when (<= (point) eol)
+              (insert ")")))))))
+  (let ((indent (lmc-asm-indentation)))
+    (cond
+     ((null indent) (lisp-indent-line arg))
+     (t
+      (let ((left-margin indent)) (indent-to-left-margin))
+      (when (zerop indent)
+        ;; Indent code (if any) after a label.
+        (save-excursion
+          (beginning-of-line)
+          (when (looking-at "\\(?:\\sw\\|\\s_\\)+\\([ \t]*\\)(")
+            (goto-char (match-beginning 1))
+            (if (< (current-column) tab-width)
+                (unless (save-excursion
+                          (goto-char (match-end 1))
+                          (= (current-column) tab-width))
+                  (delete-region (match-beginning 1) (match-end 1))
+                  (indent-to tab-width))
+              (unless (equal (match-string 1) " ")
+                (delete-region (match-beginning 1) (match-end 1))
+                (insert " "))))))))))
+
+(defun lmc-asm-read ()
+  (let ((prog ())
+        (initialpos (point)))
+    (goto-char (point-min))
+    (while (progn (forward-comment (point-max))
+                  (not (eobp)))
+      (let ((start (point)))
+        (condition-case nil
+            (push (cons (point) (read (current-buffer))) prog)
+          (end-of-file (goto-char start) (signal 'end-of-file nil)))))
+    (goto-char initialpos)
+    (nreverse prog)))
+
+(defun lmc-asm-load ()
+  "Load current buffer into the LMC simulator."
+  (interactive)
+  (let ((initialpos (point))
+        (window (if (eq (current-buffer) (window-buffer)) (selected-window))))
+    (save-current-buffer
+      (lmc-load (lmc--assemble (lmc-asm-read))))
+    (goto-char initialpos)
+    (if (and window (eq (current-buffer) (window-buffer window)))
+        (set-window-point window (point)))))
+
+(defun lmc-asm-assemble ()
+  "Assemble current buffer to check syntax."
+  (interactive)
+  (let ((initialpos (point)))
+    (lmc--assemble (lmc-asm-read))
+    (goto-char initialpos)
+    (message "No errors found")))
+
+(defun lmc-load-file (file)
+  "Load FILE into the LMC simulator."
+  (interactive
+   (list (read-file-name "Load LMC file: " nil nil t nil
+                         (lambda (file)
+                           (or (file-directory-p file)
+                               (string-match-p "\\.elmc\\'" file))))))
+  (let ((exists (find-buffer-visiting file))
+        (buf (find-file-noselect file)))
+    (unwind-protect
+        (with-current-buffer buf
+          (condition-case err
+              (lmc-asm-load)
+            (error (error "Error at line %d: %s" (line-number-at-pos)
+                          (error-message-string err)))))
+      (unless exists (kill-buffer buf)))))
+
+(provide 'lmc)
+;;; lmc.el ends here
diff --git a/packages/load-dir/load-dir.el b/packages/load-dir/load-dir.el
new file mode 100644 (file)
index 0000000..71b7dff
--- /dev/null
@@ -0,0 +1,137 @@
+;;; load-dir.el --- Load all Emacs Lisp files in a given directory
+
+;; Copyright (C) 2011 Free Software Foundation, Inc
+
+;; Authors: Teodor Zlatanov <tzz@lifelogs.com>,
+;;          Ben Key <bkey76@gmail.com>
+;; With-Help-From: Evans Winner <ego111@gmail.com>, PJ Weisberg <pj@irregularexpressions.net>
+;; Version: 0.0.3
+;; Keywords: lisp, files, convenience
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This package provides a way to load all Emacs Lisp snippets (they
+;; don't have to be libraries) in a directory on startup or when Emacs is
+;; already running.  It won't reload snippets unless the user requests
+;; it, so for instance adding a lambda to a hook is usually safe.
+;;
+;; You can specify ~/.emacs.d/load.d, a single directory, or a list of
+;; directories.  The file search can be recursive.  See the
+;; customizable variable `load-dirs' for details.
+;;
+;; The intent of ~/.emacs.d/load.d is to give package installers like
+;; el-get.el (see https://github.com/dimitri/el-get) and other tools a
+;; way to easily bootstrap themselves without necessarily modifying
+;; your .emacs or custom files directly.
+
+;;; Code:
+
+(eval-when-compile (require 'cl))
+
+(defgroup load-dir nil
+  "Automatically load all Emacs Lisp files in given directories."
+  :group 'initialization)
+
+(defcustom load-dir-debug t
+  "Debugging messages toggle, default to t."
+  :group 'load-dir
+  :type 'boolean)
+
+(defcustom load-dir-recursive nil
+  "Whether subdirectories should be loaded too."
+  :group 'load-dir
+  :type 'boolean)
+
+(defcustom load-dir-ignore-errors nil
+  "Whether errors in the loaded files should be ignored."
+  :group 'load-dir
+  :type 'boolean)
+
+(defcustom load-dirs nil
+  "This variable allows you to define which directories should be loaded.
+
+If nil, no directories are loaded.  This is the default behavior.
+If t, only files in ~/.emacs.d/load.d will be loaded.
+If a single directory name, only files in that directory will be loaded.
+If a list of directory names, all files found in all the
+directories will be loaded."
+  :group 'load-dir
+  :tag "What directories to load"
+  :type '(choice (const :tag "Load all from ~/.emacs.d/load.d" t)
+                 (const :tag "Don't load anything" nil)
+                 directory
+                 (repeat :tag "Directories" directory)))
+
+;;;###autoload
+(defun load-dirs ()
+  "Load all Emacs Lisp files in `load-dirs'.
+Will not load a file twice (use `load-dir-reload' for that).
+Recurses into subdirectories if `load-dir-recursive' is t."
+  (interactive)
+  ;; avoid the case where users inadvertently set `load-dirs' to a string
+  (mapc 'load-dir-one (cond
+                       ((eq load-dirs t)
+                        (list (expand-file-name "~/.emacs.d/load.d")))
+                       ((stringp load-dirs)
+                        (list load-dirs))
+                       (t load-dirs))))
+
+(defvar load-dir-loaded nil
+  "List of already loaded files.")
+
+;;;###autoload
+(defun load-dirs-reload ()
+  "Load all Emacs Lisp files in `load-dirs'.
+Clears the list of loaded files and just calls `load-dir-load'."
+  (interactive)
+  (setq load-dir-loaded nil)
+  (load-dirs))
+
+(defun load-dir-one (dir)
+  "Load all Emacs Lisp files in DIR.
+Recurses into subdirectories if `load-dir-recursive' is t."
+  (load-dir-debug "Loading Emacs Lisp code from %s" dir)
+  (let ((suffixes (get-load-suffixes)))
+    (dolist (f (and (file-exists-p dir)
+                    (file-directory-p dir)
+                    (directory-files dir t)))
+      (when (and (not (file-directory-p f))
+                 (member (file-name-extension f t) suffixes))
+        (setq f (file-name-sans-extension f))
+        (if (member f load-dir-loaded)
+            (load-dir-debug "Skipping %s, it's already loaded." f)
+          (if load-dir-ignore-errors
+              (with-demoted-errors (load f))
+            (load f))
+          (add-to-list 'load-dir-loaded f))))
+
+    (when load-dir-recursive
+      (dolist (f (directory-files dir t directory-files-no-dot-files-regexp))
+        (when (file-directory-p f)
+          (load-dir-one f))))))
+
+(defun load-dir-debug (&rest args)
+  "Print a debug message like `message' if `load-dir-debug' is set."
+  (when load-dir-debug
+    (apply 'message args)))
+
+;;;###autoload
+(add-hook 'after-init-hook 'load-dirs)
+
+(provide 'load-dir)
+;;; load-dir.el ends here
diff --git a/packages/markchars/markchars.el b/packages/markchars/markchars.el
new file mode 100644 (file)
index 0000000..2f0e7b7
--- /dev/null
@@ -0,0 +1,202 @@
+;;; markchars.el --- Mark chars fitting certain characteristics
+;;
+;; Author: Lennart Borgman (lennart O borgman A gmail O com)
+;; Contributhor: Ted Zlatanov <tzz@lifelogs.com>
+;; Created: 2010-03-22 Mon
+;; Version: 0.2.0
+;; Last-Updated: 2011-04-15
+;; URL:
+;; Keywords:
+;; Compatibility:
+;;
+;; Features that can be used by this library:
+;;
+;;   `idn'.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Commentary:
+;;
+;; Mark special chars, by default nonascii, non-IDN chars, in modes
+;; where they may be confused with regular chars. See `markchars-mode'
+;; and `markchars-what'.  There are two modes: confusable detection
+;; (where we look for mixed scripts within a word, without using the
+;; http://www.unicode.org/reports/tr39/ confusable tables) and pattern
+;; detection (where any regular expressions can be matched).
+;;
+;; The marked text will have the 'markchars property set to either
+;; 'confusable or 'pattern and the face set to either
+;; `markchars-face-confusable' or `markchars-face-pattern'
+;; respectively.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Change log:
+;;
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as
+;; published by the Free Software Foundation; either version 3, or
+;; (at your option) any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
+;; Floor, Boston, MA 02110-1301, USA.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Code:
+
+(require 'idn nil t)
+
+;;;###autoload
+(defgroup markchars nil
+  "Customization group for `markchars-mode'."
+  :group 'convenience)
+
+(defface markchars-light
+  '((t (:underline "light blue")))
+  "Light face for `markchars-mode' char marking."
+  :group 'markchars)
+
+(defface markchars-heavy
+  '((t (:underline "magenta")))
+  "Heavy face for `markchars-mode' char marking."
+  :group 'markchars)
+
+(defface markchars-white
+  '((t (:underline "white")))
+  "White face for `markchars-mode' char marking."
+  :group 'markchars)
+
+(defcustom markchars-face-pattern 'markchars-heavy
+  "Pointer to face used for marking matched patterns."
+  :type 'face
+  :group 'markchars)
+
+(defcustom markchars-face-confusable 'markchars-light
+  "Pointer to face used for marking confusables."
+  :type 'face
+  :group 'markchars)
+
+(defcustom markchars-face-nonidn 'markchars-white
+  "Pointer to face used for marking non-IDN characters."
+  :type 'face
+  :group 'markchars)
+
+(defcustom markchars-simple-pattern "[[:nonascii:]]+"
+  "Regexp for characters to mark, a simple pattern.
+
+By default it matches nonascii-chars."
+  :type 'regexp
+  :group 'markchars)
+
+(defcustom markchars-what
+  `(markchars-simple-pattern
+    markchars-confusables
+    ,@(when (fboundp 'idn-is-recommended) '(markchars-nonidn-fun)))
+  "Things to mark, a list of regular expressions or symbols."
+  :type `(repeat (choice :tag "Marking choices"
+                         (const
+                          :tag "Non IDN chars (Unicode.org tr39 suggestions)"
+                          markchars-nonidn-fun)
+                         (const :tag "Confusables" markchars-confusables)
+                         (const :tag "`markchars-simple-pattern'"
+                                markchars-simple-pattern)
+                         (regexp :tag "Arbitrary pattern")))
+  :group 'markchars)
+
+(make-obsolete-variable 'markchars-keywords 'markchars-what "markchars.el 0.2")
+
+(defvar markchars-used-keywords nil
+  "Keywords for font lock.")
+(put 'markchars-used-keywords 'permanent-local t)
+
+(defun markchars-set-keywords ()
+  "Set `markchars-used-keywords' from options."
+  (set (make-local-variable 'markchars-used-keywords)
+       (delq nil (mapcar (lambda (what)
+                           (when (eq what 'markchars-simple-pattern)
+                             (setq what markchars-simple-pattern))
+                           (cond
+                            ((eq what 'markchars-nonidn-fun)
+                             (list
+                              "\\<\\w+\\>"
+                              (list 0 '(markchars--render-nonidn
+                                        (match-beginning 0)
+                                        (match-end 0)))))
+                            ((eq what 'confusables)
+                             (list
+                              "\\<\\w+\\>"
+                              (list 0 '(markchars--render-confusables
+                                        (match-beginning 0)
+                                        (match-end 0)))))
+                            ((stringp what)
+                             (list
+                              what
+                              (list 0 '(markchars--render-pattern
+                                        (match-beginning 0)
+                                        (match-end 0)))))))
+                         markchars-what))))
+
+(defun markchars--render-pattern (beg end)
+  "Assign markchars pattern properties between BEG and END."
+  (put-text-property beg end 'face markchars-face-pattern)
+  (put-text-property beg end 'markchars 'pattern))
+
+(defun markchars--render-confusables (beg end)
+  "Assign markchars confusable properties between BEG and END."
+  (let* ((text (buffer-substring-no-properties beg end))
+         (scripts (mapcar
+                   (lambda (c) (aref char-script-table c))
+                   (string-to-list text)))
+         ;; `scripts-extra' is not nil is there was more than one script
+         (scripts-extra (delq (car scripts) scripts)))
+    (when scripts-extra
+      (put-text-property beg end 'markchars 'confusable)
+      (put-text-property beg end 'face markchars-face-confusable))))
+
+(defun markchars--render-nonidn (beg end)
+  "Assign markchars confusable properties between BEG and END."
+  (save-excursion
+    (goto-char beg)
+    (while (<= (point) end)
+      (let ((c (char-after)))
+        (when (and (> c 256)
+                   (not (idn-is-recommended c)))
+          (put-text-property (point) (1+ (point)) 'markchars 'nonidn)
+          (put-text-property (point) (1+ (point)) 'face markchars-face-nonidn)))
+      (forward-char))))
+
+;;;###autoload
+(define-minor-mode markchars-mode
+  "Mark special characters.
+Which characters to mark are defined by `markchars-pattern'.
+
+The default is to mark nonascii chars with a magenta underline."
+  :group 'markchars
+  :lighter " Mchar"
+  (if markchars-mode
+      (progn
+        (markchars-set-keywords)
+        (let ((props (make-local-variable 'font-lock-extra-managed-props)))
+          (add-to-list props 'markchars))
+        (font-lock-add-keywords nil markchars-used-keywords))
+    (font-lock-remove-keywords nil markchars-used-keywords))
+  (font-lock-fontify-buffer))
+
+;;;###autoload
+(define-globalized-minor-mode markchars-global-mode markchars-mode
+  (lambda () (markchars-mode 1))
+  :group 'markchars)
+
+(provide 'markchars)
+;;; markchars.el ends here
diff --git a/packages/memory-usage/memory-usage.el b/packages/memory-usage/memory-usage.el
new file mode 100644 (file)
index 0000000..dd7571e
--- /dev/null
@@ -0,0 +1,179 @@
+;;; memory-usage.el --- Analyze the memory usage of Emacs in various ways
+
+;; Copyright (C) 2002, 2004, 2012  Free Software Foundation, Inc.
+
+;; Author: Stefan Monnier <monnier@cs.yale.edu>
+;; Keywords: maint
+;; Version: 0.2
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; This package provides the command `memory-usage', which lists all
+;; buffers and how much memory they use.
+
+;;; Code:
+
+(defvar memory-usage-word-size (ceiling (/ (log most-positive-fixnum 2) 8))
+  "Size of a Lisp word box in bytes.")
+
+(defun memory-usage-buffer-size-bytes (b)
+  "Return total number of bytes in the buffer contents."
+  (with-current-buffer b
+    (save-restriction
+      (widen)
+      (- (position-bytes (point-max)) (position-bytes (point-min))))))
+
+(defun memory-usage-buffer-gap-bytes (b)
+  "Return total number of bytes in the buffer gap."
+  (with-current-buffer b
+    (gap-size)))
+
+(defun memory-usage-buffer-total-bytes (b)
+  "Return total number of ralloc bytes used by buffer."
+  (with-current-buffer b
+    (save-restriction
+      (widen)
+      (+ (position-bytes (point-max))
+        (- (position-bytes (point-min)))
+        (gap-size)))))
+
+(defun memory-usage-mult-cons (n c)
+  (setq n (* n memory-usage-word-size))
+  (cons (* n (car c)) (* n (cdr c))))
+
+(defun memory-usage-format (bytes)
+  (setq bytes (/ bytes 1024.0))
+  (let ((units '(;; "B"
+                 "kB" "MB" "GB" "TB")))
+    (while (>= bytes 1024)
+      (setq bytes (/ bytes 1024.0))
+      (setq units (cdr units)))
+    (cond
+     ;; ((integerp bytes) (format "%4d%s" bytes (car units)))
+     ((>= bytes 100) (format "%4.0f%s" bytes (car units)))
+     ((>= bytes 10) (format "%4.1f%s" bytes (car units)))
+     (t (format "%4.2f%s" bytes (car units))))))
+
+;;;###autoload
+(defun memory-usage ()
+  "List all buffers and their memory usage."
+  (interactive)
+  (pop-to-buffer (get-buffer-create "*Buffer Details*"))
+  (erase-buffer)
+  (let* ((bufs (buffer-list))
+        (num (length bufs))
+        (gc-stats (garbage-collect))
+         (gc-stats (if (numberp (caar gc-stats))
+                       (mapcar (lambda (x)
+                                 `(,(car x)
+                                   ,(max (* memory-usage-word-size (cadr x))
+                                         1)
+                                   ,@(let ((stat (nth (cddr x) gc-stats)))
+                                       (if (consp stat)
+                                           (list (car stat) (cdr stat))
+                                         (list stat)))))
+                               '((cons 2 . 0)
+                                 (symbol 6 . 1)
+                                 (marker 5 . 2)
+                                 (string 4 . 7)
+                                 (string-byte 0 . 3)
+                                 (vector-slot 1 . 4)
+                                 (float 2 . 5)
+                                 (interval 7 . 6)))
+                     gc-stats)))
+    (insert (format "Garbage collection stats:\n%s\n\n =>" gc-stats))
+    (let ((live 0)
+          (dead 0))
+      (dolist (x gc-stats)
+        (let* ((size (nth 1 x))
+               (xlive (* size (nth 2 x)))
+               (xdead (if (nth 3 x) (* size (nth 3 x)))))
+          (insert (if xdead
+                      (format "\t%s (+ %s dead) in %s\n"
+                              (memory-usage-format xlive)
+                              (memory-usage-format xdead)
+                              (car x))
+                    (format "\t%s in %s\n"
+                            (memory-usage-format xlive)
+                            (car x))))
+          (setq live (+ live xlive))
+          (if xdead (setq dead (+ dead xdead)))))
+
+      (insert (format "\nTotal in lisp objects: %s (live %s, dead %s)\n\n"
+                      (memory-usage-format (+ dead live))
+                      (memory-usage-format live)
+                      (memory-usage-format dead))))
+
+    (insert
+     (format "Buffer ralloc memory usage:\n%d buffers\n%s total (%s in gaps)\n"
+             num
+             (memory-usage-format
+              (apply #'+ (mapcar #'memory-usage-buffer-total-bytes bufs)))
+             (memory-usage-format
+              (apply #'+ (mapcar #'memory-usage-buffer-gap-bytes bufs)))))
+    (insert (format "%10s\t%s\t%s\n\n" "Size" "Gap" "Name"))
+    (insert (mapconcat
+            (lambda (b)
+              (format "%10d\t%s\t%s"
+                      (memory-usage-buffer-size-bytes b)
+                      (memory-usage-buffer-gap-bytes b)
+                      (buffer-name b)))
+            (sort bufs (lambda (b1 b2)
+                         (> (memory-usage-buffer-size-bytes b1)
+                             (memory-usage-buffer-size-bytes b2))))
+            "\n"))
+    (insert "\n"))
+  (goto-char (point-min)))
+
+(defun memory-usage-find-large-variables ()
+  "Find variables whose printed representation takes over 100KB."
+  (interactive)
+  (let ((min-size (* 100 1024)))
+    (pop-to-buffer "*Memory Explorer*")
+    (delete-region (point-min) (point-max))
+    ;; First find large global variables.
+    (mapatoms
+     (lambda (sym)
+       (let ((size (or (and (boundp sym)
+                            (length (prin1-to-string (symbol-value sym))))
+                       0)))
+         (when (> size min-size)
+           (insert (format "%d\tGlobal\t%s\n"
+                           size
+                           (symbol-name sym)))))))
+    ;; Second find large buffer-local variables.
+    (mapc
+     (lambda (buffer)
+       (let ((holder ""))
+         (with-current-buffer buffer
+           (mapc
+            (lambda (var-cons)
+              (let ((size (or (and (consp var-cons)
+                                   (length (prin1-to-string (cdr var-cons))))
+                              0)))
+                (if (> size min-size)
+                    (setq holder (format "%d\t%s\t%s\n"
+                                         size (buffer-name buffer)
+                                         (symbol-name (car var-cons)))))))
+            (buffer-local-variables)))
+         (insert holder)))
+     (buffer-list))
+    (sort-numeric-fields 1 (point-min) (point-max))))
+
+(provide 'memory-usage)
+;;; memory-usage.el ends here
diff --git a/packages/minimap/minimap.el b/packages/minimap/minimap.el
new file mode 100644 (file)
index 0000000..7c519c0
--- /dev/null
@@ -0,0 +1,627 @@
+;;; minimap.el --- Sidebar showing a "mini-map" of a buffer
+
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
+
+;; Author: David Engster <dengste@eml.cc>
+;; Keywords:
+;; Version: 1.0
+
+;; This file is part of GNU Emacs.
+
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License
+;; as published by the Free Software Foundation; either version 2
+;; of the License, or (at your option) any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file is an implementation of a minimap sidebar, i.e., a
+;; smaller display of the current buffer on the left side.  It
+;; highlights the currently shown region and updates its position
+;; automatically.  You can navigate in the minibar by dragging the
+;; active region with the mouse, which will scroll the corresponding
+;; edit buffer.
+
+;; To create the minimap sidebar, type M-x minimap-create.
+;; To dismiss it, type M-x minimap-kill.
+
+;; Usage:
+;;  * Use 'M-x minimap-create' in a buffer you're currently editing.
+;;  * Use 'M-x minimap-kill' to kill the minimap.
+;;  * Use 'M-x customize-group RET minimap RET' to adapt minimap to your needs.
+
+;;; KNOWN BUGS:
+
+;; * Currently cannot deal with images.
+;; * Display/movement can be a bit erratic at times.
+
+;;; TODO:
+
+;; * Fix known bugs.
+;; * Make sidebar permanently visible. This requires something like a
+;;   'window group' feature in Emacs, which is currently being worked on.
+;; * Moving the active region with the keyboard / mouse-wheel ?
+
+
+;;; Customizable variables:
+
+(defgroup minimap nil
+  "A minimap sidebar for Emacs."
+  :group 'convenience)
+
+(defface minimap-font-face
+  '((default :family "DejaVu Sans Mono" :height 30))
+  "Face used for text in minimap buffer, notably the font family and height.
+This height should be really small.  You probably want to use a
+TrueType font for this.  After changing this, you should
+recreate the minimap to avoid problems with recentering."
+  :group 'minimap)
+
+(defface minimap-active-region-background
+  '((((background dark)) (:background "#4517305D0000"))
+    (t (:background "#C847D8FEFFFF")))
+  "Face for the active region in the minimap.
+By default, this is only a different background color."
+  :group 'minimap)
+
+(defface minimap-semantic-function-face
+  '((((background dark))
+     (:box (:line-width 1 :color "white")
+          :inherit (font-lock-function-name-face minimap-font-face)
+          :height 2.5 :background "gray10"))
+    (t (:box (:line-width 1 :color "black")
+            :inherit (font-lock-function-name-face minimap-font-face)
+            :height 2.5 :background "gray90")))
+  "Face used for functions in the semantic overlay.")
+
+(defface minimap-semantic-variable-face
+  '((((background dark))
+     (:box (:line-width 1 :color "white")
+          :inherit (font-lock-variable-name-face minimap-font-face)
+           :height 2.5 :background "gray10"))
+    (t (:box (:line-width 1 :color "black")
+            :inherit (font-lock-function-name-face minimap-font-face)
+            :height 2.5 :background "gray90")))
+  "Face used for variables in the semantic overlay.")
+
+(defface minimap-semantic-type-face
+  '((((background dark))
+     (:box (:line-width 1 :color "white")
+          :inherit (font-lock-type-face minimap-font-face)
+          :height 2.5 :background "gray10"))
+    (t (:box (:line-width 1 :color "black")
+            :inherit (font-lock-function-name-face minimap-font-face)
+            :height 2.5 :background "gray90")))
+  "Face used for types in the semantic overlay.")
+
+(defcustom minimap-width-fraction 0.2
+  "Fraction of width which should be used for minimap sidebar."
+  :type 'number
+  :group 'minimap)
+
+(defcustom minimap-window-location 'left
+  "Location of the minimap window.
+Can be either the symbol `left' or `right'."
+  :type '(choice (const :tag "Left" left)
+                (const :tag "Right" right))
+  :group 'minimap)
+
+(defcustom minimap-buffer-name-prefix "*MINIMAP* "
+  "Prefix for buffer names of minimap sidebar."
+  :type 'string
+  :group 'minimap)
+
+(defcustom minimap-update-delay 0.2
+  "Delay in seconds after which sidebar gets updated.
+Setting this to 0 will let the minimap react immediately, but
+this will slow down scrolling."
+  :type 'number
+  :set (lambda (sym value)
+        (set sym value)
+        (when (and (boundp 'minimap-timer-object)
+                   minimap-timer-object)
+          (cancel-timer minimap-timer-object)
+          (setq minimap-timer-object
+                (run-with-idle-timer
+                 minimap-update-delay t 'minimap-update))))
+  :group 'minimap)
+
+(defcustom minimap-always-recenter nil
+  "Whether minimap sidebar should be recentered after every point movement."
+  :type 'boolean
+  :group 'minimap)
+
+(defcustom minimap-recenter-type 'relative
+  "Specifies the type of recentering the minimap should use.
+The minimap can use different types of recentering, i.e., how the
+minimap should behave when you scroll in the main window or when
+you drag the active region with the mouse.  The following
+explanations will probably not help much, so simply try them and
+choose the one which suits you best.
+
+`relative' -- The position of the active region in the minimap
+corresponds with the relative position of this region in the
+buffer.  This the default.
+
+`middle' -- The active region will stay fixed in the middle of
+the minimap.
+
+`free' -- The position will be more or less free.  When dragging
+the active region, the minimap will scroll when you reach the
+bottom or top."
+  :type '(choice (const :tag "Relative" relative)
+                (const :tag "Middle" middle)
+                (const :tag "Free" free))
+  :group 'minimap)
+
+(defcustom minimap-hide-scroll-bar t
+  "Whether the minimap should hide the vertical scrollbar."
+  :type 'boolean
+  :group 'minimap)
+
+(defcustom minimap-hide-fringes t
+  "Whether the minimap should hide the fringes."
+  :type 'boolean
+  :group 'minimap)
+
+(defcustom minimap-dedicated-window nil
+  "Whether the minimap should create a dedicated window."
+  :type 'boolean
+  :group 'minimap)
+
+(defcustom minimap-display-semantic-overlays t
+  "Display overlays from CEDET's semantic analyzer.
+If you use CEDET and the buffer's major-mode is supported, the
+minimap can display overlays generated by the semantic analyzer.
+By default, it will apply the faces `minimap-semantic-<X>-face',
+with <X> being \"function\", \"variable\" and \"type\".  Also, it
+will display the name of the tag in the middle of the overlay in
+the corresponding font-lock face.
+
+See also `minimap-enlarge-certain-faces', which can be used as
+fallback."
+  :type 'boolean
+  :group 'minimap)
+
+(defcustom minimap-enlarge-certain-faces 'as-fallback
+  "Whether certain faces should be enlarged in the minimap.
+All faces listed in `minimap-normal-height-faces' will be
+displayed using the default font height, allowing you to still
+read text using those faces.  By default, this should enlarge all
+function names in the minimap, given you have font locking
+enabled.  This variable can have the following values:
+
+'as-fallback (the default) -- The feature will only be activated
+  if information from CEDET's semantic analyzer isn't available
+  (see: `minimap-display-semantic-overlays').
+'always -- Always active.
+nil -- Inactive."
+  :type '(choice (const :tag "Fallback if CEDET unavailable." 'as-fallback)
+                (const :tag "Always active." 'always)
+                (const :tag "Inactive." nil))
+  :group 'minimap)
+
+(defcustom minimap-normal-height-faces '(font-lock-function-name-face)
+  "List of faces which should be displayed with normal height.
+When `minimap-enlarge-certain-faces' is non-nil, all faces in
+this list will be displayed using the default font height.  By
+default, this list contains `font-lock-function-name-face', so
+you can still read function names in the minimap."
+  :type '(repeat face)
+  :group 'minimap)
+
+(defcustom minimap-sync-overlay-properties '(face invisible)
+  "Specifies which overlay properties should be synced.
+Unlike text properties, overlays are not applied automatically to
+the minimap and must be explicitly synced.  This variable
+specifies which overlay properties should be synced by
+`minimap-sync-overlays'.  Most importantly, this variable should
+include 'invisible', so that hidden text does not appear in the
+minimap buffer."
+  :type '(repeat symbol)
+  :group 'minimap)
+
+;;; Internal variables
+
+(defvar minimap-start nil)
+(defvar minimap-end nil)
+(defvar minimap-active-overlay nil)
+(defvar minimap-bufname nil)
+(defvar minimap-timer-object nil)
+(defvar minimap-active-minimaps 0)
+(defvar minimap-base-overlay nil)
+(defvar minimap-numlines nil)
+(defvar minimap-pointmin-overlay nil)
+
+(make-variable-buffer-local 'minimap-start)
+(make-variable-buffer-local 'minimap-end)
+(make-variable-buffer-local 'minimap-active-overlay)
+(make-variable-buffer-local 'minimap-bufname)
+(make-variable-buffer-local 'minimap-base-overlay)
+(make-variable-buffer-local 'minimap-numlines)
+(make-variable-buffer-local 'minimap-pointmin-overlay)
+
+;;; Minimap creation / killing
+
+;;;###autoload
+(defun minimap-create ()
+  "Create a minimap sidebar for the current window."
+  (interactive)
+  ;; If minimap is visible, do nothing.
+  (unless (and minimap-bufname
+              (get-buffer minimap-bufname)
+              (get-buffer-window (get-buffer minimap-bufname)))
+    (let ((bufname (concat minimap-buffer-name-prefix
+                          (buffer-name (current-buffer))))
+         (new-win (if (eq minimap-window-location 'left)
+                      (split-window-horizontally
+                       (round (* (window-width)
+                                 minimap-width-fraction)))
+                    (split-window-horizontally
+                     (round (* (window-width)
+                               (- 1 minimap-width-fraction))))
+                    (other-window 1))))
+      ;; If minimap exists but isn't visible, reuse it.
+      (if (and minimap-bufname
+              (get-buffer minimap-bufname))
+         (switch-to-buffer minimap-bufname t)
+       ;; Otherwise create new minimap
+       (minimap-new-minimap bufname)
+       ;; If this is the first minimap, create the idle timer.
+       (when (zerop minimap-active-minimaps)
+         (setq minimap-timer-object
+               (run-with-idle-timer minimap-update-delay t 'minimap-update)))
+       (setq minimap-active-minimaps
+             (1+ minimap-active-minimaps))))
+    (other-window 1)
+    (minimap-sync-overlays)))
+
+(defun minimap-new-minimap (bufname)
+  "Create new minimap BUFNAME for current buffer and window."
+  (let ((indbuf (make-indirect-buffer (current-buffer) bufname t))
+       (edges (window-pixel-edges)))
+    (setq minimap-bufname bufname)
+    (set-buffer indbuf)
+    (when minimap-hide-scroll-bar
+      (setq vertical-scroll-bar nil))
+    (switch-to-buffer indbuf)
+    (setq minimap-base-overlay (make-overlay (point-min) (point-max) nil t t))
+    (overlay-put minimap-base-overlay 'face 'minimap-font-face)
+    (overlay-put minimap-base-overlay 'priority 1)
+    (setq minimap-pointmin-overlay (make-overlay (point-min) (1+ (point-min))))
+    (setq minimap-start (window-start)
+         minimap-end (window-end)
+         minimap-active-overlay (make-overlay minimap-start minimap-end)
+         line-spacing 0)
+    (overlay-put minimap-active-overlay 'face
+                'minimap-active-region-background)
+    (overlay-put minimap-active-overlay 'priority 5)
+    (minimap-mode 1)
+    (when (and (boundp 'linum-mode)
+              linum-mode)
+      (linum-mode 0))
+    (when minimap-hide-fringes
+      (set-window-fringes nil 0 0))
+    (when minimap-dedicated-window
+      (set-window-dedicated-p nil t))
+    (setq buffer-read-only t)
+    ;; Calculate the actual number of lines displayable with the minimap face.
+    (setq minimap-numlines
+         (floor
+          (/
+           (- (nth 3 edges) (nth 1 edges))
+           (car (progn (redisplay) (window-line-height))))))))
+
+;;;###autoload
+(defun minimap-kill ()
+  "Kill minimap for current buffer.
+Cancel the idle timer if no more minimaps are active."
+  (interactive)
+  (if (null minimap-bufname)
+      (message "No minimap associated with %s." (buffer-name (current-buffer)))
+    (let ((curname (buffer-name (current-buffer)))
+         (buf (get-buffer minimap-bufname))
+         (win (get-buffer-window minimap-bufname)))
+      (setq minimap-bufname nil)
+      (if (null buf)
+         (message "No minimap associated with %s." curname)
+       (when win
+         (delete-window win))
+       (kill-buffer buf)
+       (when (zerop
+              (setq minimap-active-minimaps
+                    (1- minimap-active-minimaps)))
+         (cancel-timer minimap-timer-object)
+         (setq minimap-timer-object nil))
+       (message "Minimap for %s killed." curname)))))
+
+;;; Minimap update
+
+(defun minimap-update (&optional force)
+  "Update minimap sidebar if necessary.
+This is meant to be called from the idle-timer or the post command hook.
+When FORCE, enforce update of the active region."
+  (when minimap-bufname
+    (let ((win (get-buffer-window minimap-bufname))
+         start end pt ov)
+      (when win
+       (setq start (window-start)
+             end (window-end)
+             pt (point)
+             ov)
+       (with-selected-window win
+         (unless (and (not force)
+                      (= minimap-start start)
+                      (= minimap-end end))
+           (move-overlay minimap-active-overlay start end)
+           (setq minimap-start start
+                 minimap-end end)
+           (minimap-recenter (line-number-at-pos (/ (+ end start) 2))
+                             (/ (- (line-number-at-pos end)
+                                   (line-number-at-pos start))
+                                2)))
+         (goto-char pt)
+         (when minimap-always-recenter
+           (recenter (round (/ (window-height) 2)))))))))
+
+;;; Overlay movement
+
+(defun minimap-move-overlay-mouse (start-event)
+  "Move overlay by tracking mouse movement."
+  (interactive "e")
+  (mouse-set-point start-event)
+  (when (get-buffer-window (buffer-base-buffer (current-buffer)))
+    (let* ((echo-keystrokes 0)
+          (end-posn (event-end start-event))
+          (start-point (posn-point end-posn))
+          (make-cursor-line-fully-visible nil)
+          (cursor-type nil)
+          (pcselmode (when (boundp 'pc-selection-mode)
+                       pc-selection-mode))
+           pt ev)
+      (when (and pcselmode (fboundp 'pc-selection-mode))
+       (pc-selection-mode -1))
+      (move-overlay minimap-active-overlay start-point minimap-end)
+      (track-mouse
+       (minimap-set-overlay start-point)
+       (while (and
+               (consp (setq ev (read-event)))
+               (eq (car ev) 'mouse-movement))
+         (setq pt (posn-point (event-start ev)))
+         (when (numberp pt)
+           (minimap-set-overlay pt))))
+      (select-window (get-buffer-window (buffer-base-buffer)))
+      (minimap-update)
+      (when (and pcselmode (fboundp 'pc-selection-mode))
+       (pc-selection-mode 1)))))
+
+(defun minimap-set-overlay (pt)
+  "Set overlay position, with PT being the middle."
+  (goto-char pt)
+  (let* ((ovstartline (line-number-at-pos minimap-start))
+        (ovendline (line-number-at-pos minimap-end))
+        (ovheight (round (/ (- ovendline ovstartline) 2)))
+        (line (line-number-at-pos))
+        (winstart (window-start))
+        (winend (window-end))
+        newstart newend)
+    (setq pt (point-at-bol))
+    (setq newstart (minimap-line-to-pos (- line ovheight)))
+    ;; Perform recentering
+    (minimap-recenter line ovheight)
+    ;; Set new position in main buffer and redisplay
+    (with-selected-window (get-buffer-window (buffer-base-buffer))
+      (goto-char pt)
+      (set-window-start nil newstart)
+      (redisplay t)
+      (setq newend (window-end)))
+    (when (eq minimap-recenter-type 'free)
+      (while (> newend winend)
+       (scroll-up 5)
+       (redisplay t)
+       (setq winend (window-end))))
+    (move-overlay minimap-active-overlay newstart newend)))
+
+(defun minimap-line-to-pos (line)
+  "Return point position of line number LINE."
+  (save-excursion
+    (goto-char 1)
+    (if (eq selective-display t)
+       (re-search-forward "[\n\C-m]" nil 'end (1- line))
+      (forward-line (1- line)))
+    (point)))
+
+(defun minimap-recenter (middle height)
+  "Recenter the minimap according to `minimap-recenter-type'.
+MIDDLE is the line number in the middle of the active region.
+HEIGHT is the number of lines from MIDDLE to begin/end of the
+active region."
+  (cond
+   ;; Relative recentering
+   ((eq minimap-recenter-type 'relative)
+    (let* ((maxlines (line-number-at-pos (point-max)))
+          percentage relpos newline start numlines)
+      (setq numlines (count-lines (window-start) (window-end)))
+      (setq percentage (/ (float middle) (float maxlines)))
+      (setq newline (ceiling (* percentage numlines)))
+      (setq start (minimap-line-to-pos
+                  (- middle height
+                     (floor (* percentage
+                               (- numlines height height))))))
+      (or (> start (point-min))
+         (setq start (point-min)))
+      ;; If (point-max) already visible, don't go further
+      (if (and (> start (window-start))
+              (with-selected-window (get-buffer-window (buffer-base-buffer))
+                (= (point-max) (window-end))))
+         (save-excursion
+           (goto-char (point-max))
+           (recenter -1))
+       (unless (and (> start (window-start))
+                    (= (point-max) (window-end)))
+         (set-window-start nil start)))))
+   ;; Middle recentering
+    ((eq minimap-recenter-type 'middle)
+     (let ((start (- middle height
+                    (floor (* 0.5
+                              (- minimap-numlines height height))))))
+       (if (< start 1)
+          (progn
+            ;; Hack: Emacs cannot scroll down any further, so we fake
+            ;; it using an overlay.  Otherwise, the active region
+            ;; would move to the top.
+            (overlay-put minimap-pointmin-overlay
+                         'display (concat
+                                   (make-string (abs start) 10)
+                                   (buffer-substring (point-min) (1+ (point-min)))))
+            (overlay-put minimap-pointmin-overlay
+                         'face `(:background ,(face-background 'default)))
+            (overlay-put minimap-pointmin-overlay
+                         'priority 10)
+            (setq start 1))
+        (overlay-put minimap-pointmin-overlay 'display "")
+        (overlay-put minimap-pointmin-overlay 'face nil))
+       (set-window-start nil (minimap-line-to-pos start))))
+    ;; Free recentering
+    ((eq minimap-recenter-type 'free)
+     (let ((newstart (minimap-line-to-pos (- middle height)))
+          (winstart (window-start)))
+       (while (< newstart winstart)
+        (scroll-down 5)
+        (redisplay t)
+        (setq winstart (window-start)))))))
+
+;;; Minimap minor mode
+
+(defvar minimap-mode-map (make-sparse-keymap)
+  "Keymap used by `minimap-mode'.")
+
+(define-key minimap-mode-map [down-mouse-1] 'minimap-move-overlay-mouse)
+(define-key minimap-mode-map [down-mouse-2] 'minimap-move-overlay-mouse)
+(define-key minimap-mode-map [down-mouse-3] 'minimap-move-overlay-mouse)
+
+(define-minor-mode minimap-mode
+  "Minor mode for minimap sidebar."
+  nil "minimap" minimap-mode-map)
+
+;;; Sync minimap with modes which create/delete overlays.
+
+(defun minimap-sync-overlays ()
+  "Synchronize overlays between base and minimap buffer.
+Apply semantic overlays or face enlargement if necessary."
+  (interactive)
+  (when minimap-bufname
+    (let ((baseov (overlays-in (point-min) (point-max)))
+         (semantic (and (boundp 'semantic-version)
+                        (semantic-active-p)))
+         ov props p)
+      (with-current-buffer minimap-bufname
+       (remove-overlays)
+       (while baseov
+         (when (setq props (minimap-get-sync-properties (car baseov)))
+           (setq ov (make-overlay (overlay-start (car baseov))
+                                  (overlay-end (car baseov))))
+           (while (setq p (car props))
+             (overlay-put ov (car p) (cadr p))
+             (setq props (cdr props))))
+         (setq baseov (cdr baseov)))
+       (move-overlay minimap-pointmin-overlay (point-min) (1+ (point-min)))
+       ;; Re-apply font overlay
+       (move-overlay minimap-base-overlay (point-min) (point-max)))
+      ;; Face enlargement
+      (when (and font-lock-mode
+                (or (eq minimap-enlarge-certain-faces 'always)
+                    (and (eq minimap-enlarge-certain-faces 'as-fallback)
+                         (or (not minimap-display-semantic-overlays)
+                             (not semantic)))))
+       (when (eq font-lock-support-mode 'jit-lock-mode)
+         (jit-lock-fontify-now))
+       (with-current-buffer minimap-bufname
+         (minimap-enlarge-faces)))
+      ;; Semantic overlays
+      (when (and semantic
+                minimap-display-semantic-overlays)
+         (minimap-apply-semantic-overlays)))
+    (minimap-update t)))
+
+(defun minimap-get-sync-properties (ov)
+  "Get properties from overlay OV which should be synced.
+You can specify those properties with
+`minimap-sync-overlay-properties'."
+  (delq nil
+       (mapcar
+        (lambda (p)
+          (let ((val (overlay-get ov p)))
+            (if val
+                (list p val)
+              nil)))
+        minimap-sync-overlay-properties)))
+
+(defun minimap-enlarge-faces ()
+  "Apply default font to all faces in `minimap-normal-height-faces'.
+This has to be called in the minimap buffer."
+  (let ((pos (next-single-property-change (point-min) 'face))
+       next ov face)
+    (while pos
+      (setq face (get-text-property pos 'face))
+      (when (delq nil (mapcar (lambda (x) (equal x face))
+                             minimap-normal-height-faces))
+       (setq ov
+             (make-overlay pos
+                           (setq pos (next-single-property-change pos 'face))))
+       (overlay-put ov 'face `(:family ,(face-font 'default)))
+       (overlay-put ov 'priority 5))
+      (setq pos (next-single-property-change pos 'face)))))
+
+(defun minimap-apply-semantic-overlays ()
+  "Apply semantic overlays to the minimap.
+This has to be called from the base buffer."
+    (let ((tags (semantic-fetch-tags))
+         tag class ov ovnew)
+      (while tags
+       (setq tag (car tags))
+       (setq class (semantic-tag-class tag))
+       (setq ov (semantic-tag-overlay tag))
+       (when (and (overlayp ov)
+                  (or (eq class 'function)
+                      (eq class 'type)
+                      (eq class 'variable)))
+         (with-current-buffer minimap-bufname
+           (let ((start (overlay-start ov))
+                 (end (overlay-end ov))
+                 (name (semantic-tag-name tag)))
+             (overlay-put
+              (setq ovnew (make-overlay start end))
+              'face `(:background ,(face-background
+                                    (intern (format "minimap-semantic-%s-face"
+                                                    (symbol-name class))))))
+             (overlay-put ovnew 'priority 1)
+             (setq start
+                   (minimap-line-to-pos (/ (+ (line-number-at-pos start)
+                                              (line-number-at-pos end)) 2)))
+             (setq end (progn (goto-char start) (point-at-eol)))
+             (setq ovnew (make-overlay start end))
+             (overlay-put ovnew 'face (format "minimap-semantic-%s-face"
+                                              (symbol-name class)))
+             (overlay-put ovnew 'display (concat "  " name "  "))
+             (overlay-put ovnew 'priority 6))))
+       (setq tags (cdr tags)))))
+
+;; outline-(minor-)mode
+(add-hook 'outline-view-change-hook 'minimap-sync-overlays)
+
+;; hideshow
+(add-hook 'hs-hide-hook 'minimap-sync-overlays)
+(add-hook 'hs-show-hook 'minimap-sync-overlays)
+
+(provide 'minimap)
+
+;;; minimap.el ends here
diff --git a/packages/muse/README b/packages/muse/README
new file mode 100644 (file)
index 0000000..5f6e20e
--- /dev/null
@@ -0,0 +1,7 @@
+Muse is a tool for easily authoring and publishing documents.  It
+allows for rapid prototyping of hyperlinked text, which may then be
+exported to multiple output formats, such as HTML, LaTeX, and Texinfo.
+
+The markup rules used by Muse are intended to be very friendly to
+people familiar with Emacs.  See the included manual for more
+information.
diff --git a/packages/muse/cgi.el b/packages/muse/cgi.el
new file mode 100644 (file)
index 0000000..936b33f
--- /dev/null
@@ -0,0 +1,217 @@
+;;; cgi.el -- Using Emacs for CGI scripting
+
+;; Copyright (C) 2000, 2006, 2012 Free Software Foundation, Inc.
+
+;; Author: Eric Marsden  <emarsden@laas.fr>
+;;         Michael Olson <mwolson@gnu.org> (slight modifications)
+;; Keywords: CGI web scripting slow
+;; Version: 0.3
+;; Time-stamp: <2001-08-24 emarsden>
+
+;;     This program is free software; you can redistribute it and/or
+;;     modify it under the terms of the GNU General Public License as
+;;     published by the Free Software Foundation; either version 3 of
+;;     the License, or (at your option) any later version.
+;;
+;;     This program is distributed in the hope that it will be useful,
+;;     but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;     GNU General Public License for more details.
+;;
+;;     You should have received a copy of the GNU General Public
+;;     License along with this program; if not, write to the Free
+;;     Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+;;     MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; People who like this sort of thing will find this the sort of
+;; thing they like.                           -- Abraham Lincoln
+;;
+;;
+;; Overview ==========================================================
+;;
+;; A simple library for the Common Gateway Interface for Emacs,
+;; allowing you to service requests for non static web pages in elisp.
+;; Provides routines for decoding arguments to GET- and POST-type CGI
+;; requests.
+;;
+;; Usage: place a shell script such as the following in your web
+;; server's CGI directory (typically called something like
+;; /var/www/cgi-bin/):
+;;
+;; ,-------------------------------------------------------------------
+;; | #!/bin/sh
+;; |
+;; | emacs -batch -l cgi.el -f cgi-calendar
+;; `-------------------------------------------------------------------
+;;
+;; (`cgi-calendar' is a sample elisp CGI script provided at the end of
+;; this file).
+;;
+;; Alternatively, if you're running version 2.x of the linux kernel
+;; you could make .elc files directly executable via the binfmt_misc
+;; mechanism and run them straight from the cgi-bin directory.
+;;
+;; Efficiency would be improved by having Emacs bind to the http
+;; service port and spawn a thread per connection.  Extending Emacs to
+;; support server sockets and multithreading is left as an exercise
+;; for the reader.
+;;
+;; References:
+;;   * rfc1738 "Uniform Resource Locators"
+;;   * rfc1630 "Universal Resource Identifiers in WWW"
+;;
+;; Thanks to Christoph Conrad <christoph.conrad@gmx.de> for pointing
+;; out a bug in the URI-decoding.
+
+;;; Code:
+
+(eval-when-compile
+  (require 'cl)
+  (require 'calendar))
+
+(defconst cgi-url-unreserved-chars '(
+    ?a ?b ?c ?d ?e ?f ?g ?h ?i ?j ?k ?l ?m
+    ?n ?o ?p ?q ?r ?s ?t ?u ?v ?w ?x ?y ?z
+    ?A ?B ?C ?D ?E ?F ?G ?H ?I ?J ?K ?L ?M
+    ?N ?O ?P ?Q ?R ?S ?T ?U ?V ?W ?X ?Y ?Z
+    ?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9
+    ?\$ ?\- ?\_ ?\. ?\! ?\~ ?\* ?\' ?\( ?\) ?\,))
+
+(defun cgi-int-char (i)
+  (if (fboundp 'int-char) (int-char i) i))
+
+(defun cgi-hex-char-p (ch)
+  (declare (character ch))
+  (let ((hexchars '(?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9
+                   ?A ?B ?C ?D ?E ?F)))
+    (member (upcase ch) hexchars)))
+
+;; decode %xx to the corresponding character and + to ' '
+(defun cgi-decode-string (str)
+  (do ((i 0)
+       (len (length str))
+       (decoded '()))
+      ((>= i len) (concat (nreverse decoded)))
+    (let ((ch (aref str i)))
+      (cond ((eq ?+ ch)
+            (push ?\  decoded)
+            (incf i))
+           ((and (eq ?% ch)
+                 (< (+ i 2) len)
+                 (cgi-hex-char-p (aref str (+ i 1)))
+                 (cgi-hex-char-p (aref str (+ i 2))))
+            (let ((hex (string-to-number (substring str (+ i 1) (+ i 3)) 16)))
+              (push (cgi-int-char hex) decoded)
+              (incf i 3)))
+           (t (push ch decoded)
+              (incf i))))))
+
+(defun cgi-position (item seq &optional start end)
+  (or start (setq start 0))
+  (or end (setq end (length seq)))
+  (while (and (< start end)
+             (not (equal item (aref seq start))))
+    (setq start (1+ start)))
+  (and (< start end) start))
+
+;; Parse "foo=x&bar=y+re" into (("foo" . "x") ("bar" . "y re"))
+;; Substrings are plus-decoded and then URI-decoded.
+(defun cgi-decode (q)
+  (when q
+    (flet ((split-= (str)
+           (let ((pos (or (cgi-position ?= str) 0)))
+             (cons (cgi-decode-string (substring str 0 pos))
+                   (cgi-decode-string (substring str (+ pos 1)))))))
+      (mapcar #'split-= (split-string q "&")))))
+
+(defun cgi-lose (fmt &rest args)
+  (let ((why (apply #'format fmt args)))
+    (message "Script error: %s" why)    ; to error_log
+    (princ "Content-type: text/html\n\n") ; to browser
+    (princ "<html><head><title>Script error</title></head>\r\n")
+    (princ "<body><h1>Script error</h1>\r\n<p>\r\n")
+    (princ why)
+    (princ "\r\n</body></html>\r\n")
+    (kill-emacs 0)))
+
+(defmacro cgi-evaluate (&rest forms)
+  `(condition-case why
+       (princ (with-output-to-string ,@forms))
+     (error (cgi-lose "Emacs Lisp error: %s" why))))
+
+(defun cgi-arguments ()
+  (let ((method (getenv "REQUEST_METHOD"))
+       req buf)
+    (cond ((null method)
+          (cgi-lose "No request method specified"))
+         ((string= "GET" method)
+          (unless (getenv "QUERY_STRING")
+            (cgi-lose "No query string for GET request"))
+          (cgi-decode (getenv "QUERY_STRING")))
+         ((string= "POST" method)
+          (setq req (getenv "CONTENT_LENGTH"))
+          (unless req
+            (cgi-lose "No content-length for POST request"))
+          (setq buf (get-buffer-create " *cgi*"))
+          (set-buffer buf)
+          (erase-buffer)
+          (loop for i from 1 to (string-to-number req)
+                do (insert (read-event)))
+          (cgi-decode (buffer-string)))
+         (t
+          (cgi-lose "Can't handle request method %s" method)))))
+
+;; ====================================================================
+;; a sample application: calendar via the web. If invoked without
+;; arguments, presents a calendar for the three months around the
+;; current date. You can request a calendar for a specific period by
+;; specifying the year and the month in the query string:
+;;
+;;   ~$ lynx -dump 'http://localhost/cgi-bin/cal?year=1975&month=6'
+;;
+;; When run in batch mode, text normally displayed in the echo area
+;; (via `princ' for example) goes to stdout, and thus to the browser.
+;; Text output using `message' goes to stderr, and thus normally to
+;; your web server's error_log.
+;; ====================================================================
+
+(eval-and-compile
+  (if (fboundp 'calendar-extract-month)
+      (defalias 'cgi-calendar-extract-month 'calendar-extract-month)
+    (defalias 'cgi-calendar-extract-month 'extract-calendar-month))
+
+  (if (fboundp 'calendar-extract-year)
+      (defalias 'cgi-calendar-extract-year 'calendar-extract-year)
+    (defalias 'cgi-calendar-extract-year 'extract-calendar-year))
+
+  (if (fboundp 'calendar-generate)
+      (defalias 'cgi-calendar-generate 'calendar-generate)
+    (defalias 'cgi-calendar-generate 'generate-calendar)))
+
+(defun cgi-calendar-string ()
+  (require 'calendar)
+  (let* ((args (cgi-arguments))
+        (now (calendar-current-date))
+        (mnth (cdr (assoc "month" args)))
+        (month (if mnth (string-to-number mnth)
+                 (cgi-calendar-extract-month now)))
+        (yr (cdr (assoc "year" args)))
+        (year (if yr (string-to-number yr)
+                (cgi-calendar-extract-year now))))
+    (with-temp-buffer
+      (cgi-calendar-generate month year)
+      (buffer-string))))
+
+(defun cgi-calendar ()
+  (cgi-evaluate
+   (princ "Content-type: text/html\n\n")
+   (princ "<html><head><title>Emacs calendar</title></head>\r\n")
+   (princ "<body> <h1>Emacs calendar</h1>\r\n")
+   (princ "<pre>\r\n")
+   (princ (cgi-calendar-string))
+   (princ "\r\n</pre></body></html>\r\n")))
+
+(provide 'cgi)
+;;; cgi.el ends here
diff --git a/packages/muse/dir b/packages/muse/dir
new file mode 100644 (file)
index 0000000..22af354
--- /dev/null
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+\1f
+File: dir,     Node: Top       This is the top of the INFO tree
+
+  This (the Directory node) gives a menu of major topics.
+  Typing "q" exits, "?" lists all Info commands, "d" returns here,
+  "h" gives a primer for first-timers,
+  "mEmacs<Return>" visits the Emacs manual, etc.
+
+  In Emacs, you can click mouse button 2 on a menu item or cross reference
+  to select it.
+
+* Menu:
+
+Emacs
+* Muse: (muse).                 Authoring and publishing environment for Emacs.
diff --git a/packages/muse/htmlize-hack.el b/packages/muse/htmlize-hack.el
new file mode 100644 (file)
index 0000000..e623946
--- /dev/null
@@ -0,0 +1,20 @@
+;; This file provides a fix for htmlize.el and Emacs 23.
+;; To use it, add the path to this directory to your load path and
+;; add (require 'htmlize-hack) to your Emacs init file.
+
+(eval-when-compile (require 'cl))
+(if t (require 'htmlize))               ; Don't load during compilation.
+
+(when (equal htmlize-version "1.34")
+  (defun htmlize-face-size (face)
+    ;; The size (height) of FACE, taking inheritance into account.
+    ;; Only works in Emacs 21 and later.
+    (let ((size-list
+           (loop
+            for f = face then (face-attribute f :inherit)
+            until (or (null f) (eq f 'unspecified))
+            for h = (face-attribute f :height)
+            collect (if (eq h 'unspecified) nil h))))
+      (reduce 'htmlize-merge-size (cons nil size-list)))))
+
+(provide 'htmlize-hack)
diff --git a/packages/muse/httpd.el b/packages/muse/httpd.el
new file mode 100644 (file)
index 0000000..1fb64a4
--- /dev/null
@@ -0,0 +1,288 @@
+;;; httpd.el -- A web server in Emacs Lisp
+
+;; Copyright (C) 2001, 2003, 2006, 2012 Free Software Foundation, Inc.
+
+;; Author: Eric Marsden <emarsden@laas.fr>
+;;         John Wiegley <johnw@gnu.org>
+;;         Michael Olson <mwolson@gnu.org> (slight modifications)
+;; Version: 1.1
+;; Keywords: games
+
+;;     This program is free software; you can redistribute it and/or
+;;     modify it under the terms of the GNU General Public License as
+;;     published by the Free Software Foundation; either version 3 of
+;;     the License, or (at your option) any later version.
+;;
+;;     This program is distributed in the hope that it will be useful,
+;;     but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;     GNU General Public License for more details.
+;;
+;;     You should have received a copy of the GNU General Public
+;;     License along with this program; if not, write to the Free
+;;     Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+;;     MA 02111-1307, USA.
+;;
+;; The latest version of this package should be available from
+;;
+;;     <URL:http://purl.org/net/emarsden/home/downloads/>
+
+;;; Commentary:
+
+;; httpd.el is an HTTP server embedded in the Emacs.  It can handle GET
+;; and HEAD requests; adding support for POST should not be too
+;; difficult.  By default, httpd.el will listen on server side Emacs
+;; sockets for HTTP requests.
+;;
+;; I have only tested this code with Emacs; it may need modifications
+;; to work with XEmacs.
+;;
+;; This version has been modified to work with GNU Emacs 21 and 22.
+;;
+;;; Acknowledgements:
+;;
+;; httpd.el was inspired by pshttpd, an HTTP server written in
+;; Postscript by Anders Karlsson <URL:http://www.pugo.org:8080/>.
+;;
+;; Thanks to John Wiegley and Cyprian Adam Laskowski.
+
+;;; Code:
+
+(defvar httpd-document-root "/var/www")
+
+(defvar httpd-path-handlers '()
+  "Alist of (path-regexp . handler) forms.
+If a GET request is made for an URL whose path component matches
+a PATH-REGEXP, the corresponding handler is called to generate
+content.")
+
+(defvar httpd-mime-types-alist
+  '(("html" . "text/html; charset=iso-8859-1")
+    ("txt"  . "text/plain; charset=iso-8859-1")
+    ("jpg"  . "image/jpeg")
+    ("jpeg" . "image/jpeg")
+    ("gif"  . "image/gif")
+    ("png"  . "image/png")
+    ("tif"  . "image/tiff")
+    ("tiff" . "image/tiff")
+    ("css"  . "text/css")
+    ("gz"   . "application/octet-stream")
+    ("ps"   . "application/postscript")
+    ("pdf"  . "application/pdf")
+    ("eps"  . "application/postscript")
+    ("tar"  . "application/x-tar")
+    ("rpm"  . "application/x-rpm")
+    ("zip"  . "application/zip")
+    ("mp3"  . "audio/mpeg")
+    ("mp2"  . "audio/mpeg")
+    ("mid"  . "audio/midi")
+    ("midi" . "audio/midi")
+    ("wav"  . "audio/x-wav")
+    ("au"   . "audio/basic")
+    ("ram"  . "audio/pn-realaudio")
+    ("ra"   . "audio/x-realaudio")
+    ("mpg"  . "video/mpeg")
+    ("mpeg" . "video/mpeg")
+    ("qt"   . "video/quicktime")
+    ("mov"  . "video/quicktime")
+    ("avi"  . "video/x-msvideo")))
+
+(defun httpd-mime-type (filename)
+  (or (cdr (assoc (file-name-extension filename) httpd-mime-types-alist))
+      "text/plain"))
+
+(put 'httpd-exception 'error-conditions '(httpd-exception error))
+
+(defun defhttpd-exception (name code msg)
+  (put name 'error-conditions (list name 'httpd-exception 'error))
+  (put name 'httpd-code code)
+  (put name 'httpd-msg msg))
+
+(defhttpd-exception 'httpd-moved/perm       301 "Moved permanently")
+(defhttpd-exception 'httpd-moved/temp       302 "Moved temporarily")
+(defhttpd-exception 'httpd-bad-request      400 "Bad request")
+(defhttpd-exception 'httpd-forbidden        403 "Forbidden")
+(defhttpd-exception 'httpd-file-not-found   404 "Not found")
+(defhttpd-exception 'httpd-method-forbidden 405 "Method not allowed")
+(defhttpd-exception 'httpd-unimplemented    500 "Internal server error")
+(defhttpd-exception 'httpd-unimplemented    501 "Not implemented")
+(defhttpd-exception 'httpd-unimplemented    503 "Service unavailable")
+
+(defvar httpd-endl "\r\n")
+
+(defvar httpd-process nil)
+(defvar httpd-bytes-sent nil)          ; only used with `httpd-process'
+(defvar httpd-log-accesses t)
+
+(defun httpd-add-handler (path-regexp handler)
+  (push (cons path-regexp handler) httpd-path-handlers))
+
+(defun httpd-try-internal-handler (path &optional cont)
+  (catch 'result
+    (dolist (elem httpd-path-handlers)
+      (let ((regexp (car elem))
+           (handler (cdr elem)))
+       (if (string-match regexp path)
+           (throw 'result (funcall handler path cont)))))))
+
+(defun httpd-date-stamp ()
+  (format-time-string "[%d/%b/%Y %H:%M:%S %z]"))
+
+(defun httpd-log (&rest strings)
+  (if httpd-log-accesses
+      (save-excursion
+       (goto-char (point-max))
+       (with-current-buffer (get-buffer-create "*httpd access_log*")
+         (mapc 'insert strings)))))
+
+(defun httpd-send-data (&rest strings)
+  (dolist (s strings)
+    (send-string httpd-process s)
+    (if httpd-bytes-sent
+       (setq httpd-bytes-sent (+ httpd-bytes-sent (length s))))))
+
+(defun httpd-send (code msg &rest strings)
+  (httpd-log (number-to-string code) " ")
+  (apply 'httpd-send-data
+        "HTTP/1.0 " (number-to-string code) " " msg httpd-endl
+        strings))
+
+(defun httpd-send-eof ()
+  (httpd-log (number-to-string httpd-bytes-sent) "\n")
+  (process-send-eof httpd-process))
+
+(defun httpd-send-file (filename)
+  (with-temp-buffer
+    (insert-file-contents filename)
+    (httpd-send-data (buffer-string))))
+
+(defun httpd-lose (code msg)
+  (httpd-send code msg
+             "Content-Type: text/html" httpd-endl
+             "Connection: close" httpd-endl
+             httpd-endl
+             "<html><head><title>Error</title></head>" httpd-endl
+             "<body><h1>" msg "</h1>" httpd-endl
+             "<p>" msg httpd-endl
+             "</body></html>" httpd-endl)
+  (httpd-send-eof))
+
+(defun httpd-handle-redirect (req where)
+  "Redirect the client to new location WHERE."
+  (httpd-send 301 "Moved permanently"
+             "Location: " where httpd-endl
+             "URI: " where httpd-endl
+             "Connection: close" httpd-endl
+             httpd-endl)
+  (httpd-send-eof))
+
+(defun httpd-handle-GET+HEAD (path &optional want-data req)
+  (if (zerop (length path))
+      (setq path "index.html"))
+
+  ;; could use `expand-file-name' here instead of `concat', but we
+  ;; don't want tilde expansion, etc.
+  (let ((filename (concat httpd-document-root "/" path))
+       modified-since)
+    (cond ((httpd-try-internal-handler path) t)
+         ((file-directory-p filename)
+          (httpd-handle-redirect path (concat "http://" (system-name) "/"
+                                              path "/")))
+         ((file-readable-p filename)
+          (let ((attrs (file-attributes filename)))
+            (if (and (string-match "^If-Modified-Since:\\s-+\\(.+\\)" req)
+                     (setq modified-since
+                           (apply 'encode-time
+                                  (parse-time-string (match-string 1 req))))
+                     (time-less-p (nth 5 attrs) modified-since))
+                  (httpd-send 304 "Not modified"
+                              "Server: Emacs/httpd.el" httpd-endl
+                              "Connection: close" httpd-endl
+                              httpd-endl)
+              (httpd-send 200 "OK"
+                          "Server: Emacs/httpd.el" httpd-endl
+                          "Connection: close" httpd-endl
+                          "MIME-Version: 1.0" httpd-endl
+                          "Content-Type: "
+                          (httpd-mime-type filename) httpd-endl
+                          "Content-Length: "
+                          (number-to-string (nth 7 attrs)) httpd-endl
+                          httpd-endl)
+              (if want-data
+                  (httpd-send-file filename)))
+            (httpd-send-eof)))
+
+         (t (signal 'httpd-file-not-found path)))))
+
+(defun httpd-handle-request (req &optional cont)
+  (httpd-log (car (process-contact httpd-process)) " - - "
+            (httpd-date-stamp) " \"")
+  (if (not (string-match ".+" req))
+      (progn
+       (httpd-log "\"")
+       (error "HTTP request was empty"))
+    (let ((request (match-string 0 req)))
+      (httpd-log request "\" ")
+      (cond
+       ((string-match "\\.\\." request)
+       ;; reject requests containing ".." in the path. Should really
+       ;; URI-decode first.
+       (signal 'httpd-forbidden request))
+
+       ((string-match "\\`\\(GET\\|HEAD\\|POST\\)\\s-/\\(\\S-*\\)" request)
+       (let ((kind (match-string 1 request))
+             (arg  (match-string 2 request)))
+         (if (string= kind "POST")
+             (unless (httpd-try-internal-handler arg cont)
+               (signal 'httpd-unimplemented arg))
+           (httpd-handle-GET+HEAD arg (string= kind "GET") req))))
+
+       (t (signal 'httpd-bad-request request))))))
+
+(defun httpd-serve (proc string)
+  (let ((httpd-process proc)
+       (httpd-bytes-sent 0))
+    (condition-case why
+       (httpd-handle-request string)
+      (httpd-exception
+       (httpd-lose (get (car why) 'httpd-code)
+                  (get (car why) 'httpd-msg)))
+      ;; Comment out these two lines if you want to catch errors
+      ;; inside Emacs itself.
+      (error
+       (httpd-lose 500 (format "Emacs Lisp error: %s" why)))
+      )))
+
+(defun httpd-start (&optional port)
+  (interactive (list (read-string "Serve Web requests on port: " "8080")))
+  (if (null port)
+      (setq port 8080)
+    (if (stringp port)
+       (setq port (string-to-number port))))
+  (if httpd-process
+      (delete-process httpd-process))
+  (setq httpd-process
+       (if (fboundp 'make-network-process)
+           (make-network-process :name "httpd"
+                                 :buffer (generate-new-buffer "httpd")
+                                 :host 'local :service port
+                                 :server t :noquery t
+                                 :filter 'httpd-serve)
+         (and (fboundp 'open-network-stream-server)
+              (open-network-stream-server "httpd"
+                                          (generate-new-buffer "httpd")
+                                          port nil 'httpd-serve))))
+  (if (and (processp httpd-process)
+          (eq (process-status httpd-process) 'listen))
+      (message "httpd.el is listening on port %d" port)))
+
+(defun httpd-stop ()
+  (interactive)
+  (when httpd-process
+    (message "httpd.el server on port %d has stopped"
+            (cadr (process-contact httpd-process)))
+    (delete-process httpd-process)
+    (setq httpd-process nil)))
+
+(provide 'httpd)
+;;; httpd.el ends here
diff --git a/packages/muse/muse-backlink.el b/packages/muse/muse-backlink.el
new file mode 100644 (file)
index 0000000..bc21ddd
--- /dev/null
@@ -0,0 +1,327 @@
+;;; muse-backlink.el --- backlinks for Muse
+
+;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; Author: Jim Ottaway <j.ottaway@lse.ac.uk>
+;; Keywords:
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; Hierarchical backlink insertion into new muse pages.
+;;
+;; To add:
+;;
+;; (require 'muse-backlink)
+;; (muse-backlink-install)
+;;
+;; To control what gets backlinked, modify
+;; `muse-backlink-exclude-backlink-regexp' and
+;; `muse-backlink-exclude-backlink-parent-regexp'.
+;;
+;; To stop backlinking temporarily:
+;; (setq muse-backlink-create-backlinks nil)
+;;
+;; To remove the backlink functionality completely:
+;;
+;; (muse-backlink-remove)
+
+;;; Contributors:
+
+;;; Code:
+
+(require 'muse)
+(require 'muse-project)
+
+(eval-when-compile (require 'muse-mode))
+
+(eval-and-compile
+  (if (< emacs-major-version 22)
+      (progn
+        ;; Swiped from Emacs 22.0.50.4
+        (defvar muse-backlink-split-string-default-separators "[ \f\t\n\r\v]+"
+        "The default value of separators for `split-string'.
+
+A regexp matching strings of whitespace.  May be locale-dependent
+\(as yet unimplemented).  Should not match non-breaking spaces.
+
+Warning: binding this to a different value and using it as default is
+likely to have undesired semantics.")
+
+        (defun muse-backlink-split-string (string &optional separators omit-nulls)
+        "Split STRING into substrings bounded by matches for SEPARATORS.
+
+The beginning and end of STRING, and each match for SEPARATORS, are
+splitting points.  The substrings matching SEPARATORS are removed, and
+the substrings between the splitting points are collected as a list,
+which is returned.
+
+If SEPARATORS is non-nil, it should be a regular expression matching text
+which separates, but is not part of, the substrings.  If nil it defaults to
+`split-string-default-separators', normally \"[ \\f\\t\\n\\r\\v]+\", and
+OMIT-NULLS is forced to t.
+
+If OMIT-NULLS is t, zero-length substrings are omitted from the list \(so
+that for the default value of SEPARATORS leading and trailing whitespace
+are effectively trimmed).  If nil, all zero-length substrings are retained,
+which correctly parses CSV format, for example.
+
+Note that the effect of `(split-string STRING)' is the same as
+`(split-string STRING split-string-default-separators t)').  In the rare
+case that you wish to retain zero-length substrings when splitting on
+whitespace, use `(split-string STRING split-string-default-separators)'.
+
+Modifies the match data; use `save-match-data' if necessary."
+        (let ((keep-nulls (not (if separators omit-nulls t)))
+              (rexp (or separators muse-backlink-split-string-default-separators))
+              (start 0)
+              notfirst
+              (list nil))
+          (while (and (string-match rexp string
+                                    (if (and notfirst
+                                             (= start (match-beginning 0))
+                                             (< start (length string)))
+                                        (1+ start) start))
+                      (< start (length string)))
+            (setq notfirst t)
+            (if (or keep-nulls (< start (match-beginning 0)))
+                (setq list
+                      (cons (substring string start (match-beginning 0))
+                            list)))
+            (setq start (match-end 0)))
+          (if (or keep-nulls (< start (length string)))
+              (setq list
+                    (cons (substring string start)
+                          list)))
+          (nreverse list))))
+    (defalias 'muse-backlink-split-string 'split-string)))
+
+(defgroup muse-backlink nil
+  "Hierarchical backlinking for Muse."
+  :group 'muse)
+
+(defcustom muse-backlink-create-backlinks t
+  "When non-nil, create hierarchical backlinks in new Muse pages.
+For control over which pages will receive backlinks, see
+`muse-backlink-exclude-backlink-parent-regexp' and
+`muse-backlink-exclude-backlink-regexp'."
+  :type 'boolean
+  :group 'muse-backlink)
+
+(defcustom muse-backlink-avoid-bad-links t
+  "When non-nil, avoid bad links when backlinking."
+  :type 'boolean
+  :group 'muse-backlink)
+
+;; The default for exclusion stops backlinks from being added to and
+;; from planner day pages.
+(defcustom muse-backlink-exclude-backlink-parent-regexp
+  "^[0-9][0-9][0-9][0-9]\\.[0-9][0-9]\\.[0-9][0-9]$"
+  "Regular expression matching pages whose children should not have backlinks."
+  :type 'regexp
+  :group 'muse-backlink)
+
+(defcustom muse-backlink-exclude-backlink-regexp
+  "^[0-9][0-9][0-9][0-9]\\.[0-9][0-9]\\.[0-9][0-9]$"
+  "Regular expression matching pages that should not have backlinks."
+  :type 'regexp
+  :group 'muse-backlink)
+
+(defcustom muse-backlink-separator "/"
+  "String that separates backlinks.
+Should be something that will not appear as a substring in an explicit
+link that has no description."
+  :type 'string
+  :group 'muse-backlink)
+
+(defcustom muse-backlink-before-string "backlinks: "
+  "String to come before the backlink list."
+  :type 'string
+  :group 'muse-backlink)
+
+(defcustom muse-backlink-after-string ""
+  "String to come after the backlink list."
+  :type 'string
+  :group 'muse-backlink)
+
+(defcustom muse-backlink-separator "/"
+  "String that separates backlinks.
+Should be something that will not appear as a substring in an explicit
+link that has no description."
+  :type 'string
+  :group 'muse-backlink)
+
+(defcustom muse-backlink-regexp
+  (concat "^"
+          (regexp-quote muse-backlink-before-string)
+          "\\("
+          (regexp-quote muse-backlink-separator)
+          ".+\\)"
+          (regexp-quote muse-backlink-after-string))
+  ;; Really, I want something like this, but I can't make it work:
+  ;;   (concat "^\\("
+  ;;           (regexp-quote muse-backlink-separator)
+  ;;           "\\(?:"
+  ;;           muse-explicit-link-regexp
+  ;;           "\\)\\)+")
+  "Regular expression to match backlinks in a buffer.
+Match 1 is the list of backlinks without `muse-backlink-before-string'
+and `muse-backlink-after-string'."
+  :type 'regexp
+  :group 'muse-backlink)
+
+(defun muse-backlink-goto-insertion-point ()
+  "Find the right place to add backlinks."
+  (goto-char (point-min))
+  (when (looking-at "\\(?:^#.+[ \t]*\n\\)+")
+    (goto-char (match-end 0))))
+
+(defun muse-backlink-get-current ()
+  "Return a list of backlinks in the current buffer."
+  (save-excursion
+    (goto-char (point-min))
+    (when (re-search-forward muse-backlink-regexp nil t)
+      (muse-backlink-split-string
+       (match-string 1)
+       (regexp-quote muse-backlink-separator) t))))
+
+(defun muse-backlink-format-link-list (links)
+  "Format the list of LINKS as backlinks."
+  (concat muse-backlink-separator
+          (mapconcat #'identity links muse-backlink-separator)))
+
+(defun muse-backlink-insert-links (links)
+  "Insert backlinks to LINKS into the current page.
+LINKS is a list of links ordered by ancestry, with the parent as the
+last element."
+  (muse-backlink-goto-insertion-point)
+  (insert muse-backlink-before-string
+          (muse-backlink-format-link-list links)
+          muse-backlink-after-string
+          ;; Could have this in the after string, but they might get
+          ;; deleted.
+          "\n\n"))
+
+(defun muse-backlink-unsaved-page-p (page project)
+  "Return non-nil if PAGE is in PROJECT but has not been saved."
+  (member
+   page
+   (mapcar
+    #'(lambda (b)
+        (with-current-buffer b
+          (and (derived-mode-p 'muse-mode)
+               (equal muse-current-project project)
+               (not (muse-project-page-file
+                     (muse-page-name)
+                     muse-current-project))
+               (muse-page-name))))
+    (buffer-list))))
+
+(defvar muse-backlink-links nil
+  "Internal variable.
+The links to insert in the forthcomingly visited muse page.")
+
+(defvar muse-backlink-pending nil
+  "Internal variable.")
+
+(defvar muse-backlink-parent-buffer nil
+  "Internal variable.
+The parent buffer of the forthcomingly visited muse page.")
+
+
+;;; Attach hook to the derived mode hook, to avoid problems such as
+;;; planner-prepare-file thinking that the buffer needs no template.
+(defun muse-backlink-get-mode-hook ()
+  (derived-mode-hook-name major-mode))
+
+(defun muse-backlink-insert-hook-func ()
+  "Insert backlinks into the current buffer and clean up."
+  (when (and muse-backlink-links
+             muse-backlink-pending
+             (string= (car muse-backlink-links) (muse-page-name)))
+    (muse-backlink-insert-links (cdr muse-backlink-links))
+    (when muse-backlink-avoid-bad-links
+      (save-buffer)
+      (when muse-backlink-parent-buffer
+        (with-current-buffer muse-backlink-parent-buffer
+          (font-lock-fontify-buffer))))
+    (setq muse-backlink-links nil
+          muse-backlink-parent-buffer nil
+          muse-backlink-pending nil)
+    (remove-hook (muse-backlink-get-mode-hook) #'muse-backlink-insert-hook-func)))
+
+(defun muse-backlink-handle-link (link)
+  "When appropriate, arrange for backlinks on visiting LINK."
+  (when (and muse-backlink-create-backlinks
+             (not muse-backlink-pending)
+             (memq this-command
+                   '(muse-follow-name-at-point muse-follow-name-at-mouse))
+             (not muse-publishing-p)
+             (not (and (boundp 'muse-colors-fontifying-p)
+                       muse-colors-fontifying-p)))
+    (require 'muse-mode)
+    (setq
+     muse-backlink-links
+     (save-match-data
+       (let* ((orig-link (or link (match-string 1)))
+              (link (if (string-match "#" orig-link)
+                        (substring orig-link 0 (match-beginning 0))
+                      orig-link)))
+         (unless
+             (or (not muse-current-project)
+                 (string-match muse-url-regexp orig-link)
+                 (string-match muse-image-regexp orig-link)
+                 (and (boundp 'muse-wiki-interwiki-regexp)
+                      (string-match muse-wiki-interwiki-regexp
+                                    orig-link))
+                 ;; Don't add a backlink if the page already
+                 ;; exists, whether it has been saved or not.
+                 (or (muse-project-page-file link muse-current-project)
+                     (muse-backlink-unsaved-page-p link muse-current-project))
+                 (string-match muse-backlink-exclude-backlink-parent-regexp
+                               (muse-page-name))
+                 (string-match muse-backlink-exclude-backlink-regexp link))
+           ;; todo: Hmm. This will only work if the child page is the
+           ;; same mode as the parent page.
+           (add-hook (muse-backlink-get-mode-hook) #'muse-backlink-insert-hook-func)
+           (setq muse-backlink-pending t)
+           (when muse-backlink-avoid-bad-links
+             (setq muse-backlink-parent-buffer (current-buffer))
+             (unless (muse-project-page-file
+                      (muse-page-name) muse-current-project)
+               ;; It must be modified...
+               (save-buffer)))
+           (cons link
+                 (append (muse-backlink-get-current)
+                         (list (muse-make-link (muse-page-name))))))))))
+  ;; Make sure we always return nil
+  nil)
+
+(defun muse-backlink-install ()
+  "Add backlinking functionality to muse-mode."
+  (add-to-list 'muse-explicit-link-functions #'muse-backlink-handle-link))
+
+(defun muse-backlink-remove ()
+  "Remove backlinking functionality from muse-mode."
+  (setq muse-explicit-link-functions
+        (delq #'muse-backlink-handle-link muse-explicit-link-functions)))
+
+(provide 'muse-backlink)
+;;; muse-backlink.el ends here
diff --git a/packages/muse/muse-blosxom.el b/packages/muse/muse-blosxom.el
new file mode 100644 (file)
index 0000000..78038d7
--- /dev/null
@@ -0,0 +1,306 @@
+;;; muse-blosxom.el --- publish a document tree for serving by (py)Blosxom
+
+;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; Author: Michael Olson <mwolson@gnu.org>
+;; Date: Wed, 23 March 2005
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; The Blosxom publishing style publishes a tree of categorised files
+;; to a mirrored tree of stories to be served by blosxom.cgi or
+;; pyblosxom.cgi.
+;;
+;; Serving entries with (py)blosxom
+;; --------------------------------
+;;
+;; Each Blosxom file must include `#date yyyy-mm-dd', or optionally
+;; the longer `#date yyyy-mm-dd-hh-mm', a title (using the `#title'
+;; directive) plus whatever normal content is desired.
+;;
+;; The date directive is not used directly by (py)blosxom or this
+;; program.  You need to find two additional items to make use of this
+;; feature.
+;;
+;;  1. A script to gather date directives from the entire blog tree
+;;     into a single file.  The file must associate a blog entry with
+;;     a date.
+;;
+;;  2. A plugin for (py)blosxom that reads this file.
+;;
+;; These 2 things are provided for pyblosxom in the contrib/pyblosxom
+;; subdirectory.  `getstamps.py' provides the 1st service, while
+;; `hardcodedates.py' provides the second service.  Eventually it is
+;; hoped that a blosxom plugin and script will be found/written.
+;;
+;; Alternately, the pyblosxom metadate plugin may be used.  On the
+;; plus side, there is no need to run a script to gather the date.  On
+;; the downside, each entry is read twice rather than once when the
+;; page is rendered.  Set the value of muse-blosxom-use-metadate to
+;; non-nil to enable adding a #postdate directive to all published
+;; files.  You can do this by:
+;;
+;; M-x customize-variable RET muse-blosxom-use-metadate RET
+;;
+;; With the metadate plugin installed in pyblosxom, the date set in
+;; this directive will be used instead of the file's modification
+;; time.  The plugin is included with Muse at
+;; contrib/pyblosxom/metadate.py.
+;;
+;; Generating a Muse project entry
+;; -------------------------------
+;;
+;; Muse-blosxom has some helper functions to make specifying
+;; muse-blosxom projects a lot easier.  An example follows.
+;;
+;; (setq muse-project-alist
+;;       `(("blog"
+;;          (,@(muse-project-alist-dirs "~/path/to/blog-entries")
+;;           :default "index")
+;;          ,@(muse-project-alist-styles "~/path/to/blog-entries"
+;;                                       "~/public_html/blog"
+;;                                       "blosxom-xhtml")
+;;         )))
+;;
+;; Note that we need a backtick instead of a single quote on the
+;; second line of this example.
+;;
+;; Creating new blog entries
+;; -------------------------
+;;
+;; There is a function called `muse-blosxom-new-entry' that will
+;; automate the process of making a new blog entry.  To make use of
+;; it, do the following.
+;;
+;;  - Customize `muse-blosxom-base-directory' to the location that
+;;    your blog entries are stored.
+;;
+;;  - Assign the `muse-blosxom-new-entry' function to a key sequence.
+;;    I use the following code to assign this function to `C-c p l'.
+;;
+;;    (global-set-key "\C-cpl" 'muse-blosxom-new-entry)
+;;
+;;  - You should create your directory structure ahead of time under
+;;    your base directory.  These directories, which correspond with
+;;    category names, may be nested.
+;;
+;;  - When you enter this key sequence, you will be prompted for the
+;;    category of your entry and its title.  Upon entering this
+;;    information, a new file will be created that corresponds with
+;;    the title, but in lowercase letters and having special
+;;    characters converted to underscores.  The title and date
+;;    directives will be inserted automatically.
+;;
+;; Using tags
+;; ----------
+;;
+;; If you wish to keep all of your blog entries in one directory and
+;; use tags to classify your entries, set `muse-blosxom-use-tags' to
+;; non-nil.
+;;
+;; For this to work, you will need to be using the PyBlosxom plugin at
+;; http://pyblosxom.sourceforge.net/blog/registry/meta/Tags.
+
+;;; Contributors:
+
+;; Gary Vaughan (gary AT gnu DOT org) is the original author of
+;; `emacs-wiki-blosxom.el', which is the ancestor of this file.
+
+;; Brad Collins (brad AT chenla DOT org) ported this file to Muse.
+
+;; Björn Lindström (bkhl AT elektrubadur DOT se) made many valuable
+;; suggestions.
+
+;; Sasha Kovar (sasha AT arcocene DOT org) fixed
+;; muse-blosxom-new-entry when using tags and also implemented support
+;; for the #postdate directive.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Muse Blosxom Publishing
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'muse-project)
+(require 'muse-publish)
+(require 'muse-html)
+
+(defgroup muse-blosxom nil
+  "Options controlling the behavior of Muse Blosxom publishing.
+See `muse-blosxom' for more information."
+  :group 'muse-publish)
+
+(defcustom muse-blosxom-extension ".txt"
+  "Default file extension for publishing Blosxom files."
+  :type 'string
+  :group 'muse-blosxom)
+
+(defcustom muse-blosxom-header
+  "<lisp>(concat (muse-publishing-directive \"title\") \"\\n\"
+  (when muse-blosxom-use-metadate
+    (let ((date (muse-publishing-directive \"date\")))
+      (when date (concat \"#postdate \"
+                         (muse-blosxom-format-date date) \"\\n\"))))
+  (when muse-blosxom-use-tags
+    (let ((tags (muse-publishing-directive \"tags\")))
+      (when tags (concat \"#tags \" tags \"\\n\")))))</lisp>"
+  "Header used for publishing Blosxom files.  This may be text or a filename."
+  :type 'string
+  :group 'muse-blosxom)
+
+(defcustom muse-blosxom-footer ""
+  "Footer used for publishing Blosxom files.  This may be text or a filename."
+  :type 'string
+  :group 'muse-blosxom)
+
+(defcustom muse-blosxom-base-directory "~/Blog"
+  "Base directory of blog entries.
+This is the top-level directory where your Muse blog entries may be found."
+  :type 'directory
+  :group 'muse-blosxom)
+
+(defcustom muse-blosxom-use-tags nil
+  "Determine whether or not to enable use of the #tags directive.
+
+If you wish to keep all of your blog entries in one directory and
+use tags to classify your entries, set `muse-blosxom-use-tags' to
+non-nil.
+
+For this to work, you will need to be using the PyBlosxom plugin
+at http://pyblosxom.sourceforge.net/blog/registry/meta/Tags."
+  :type 'boolean
+  :group 'muse-blosxom)
+
+(defcustom muse-blosxom-use-metadate nil
+  "Determine whether or not to use the #postdate directive.
+
+If non-nil, published entries include the original date (as specified
+in the muse #date line) which can be read by the metadate PyBlosxom
+plugin.
+
+For this to work, you will need to be using the PyBlosxom plugin
+at http://pyblosxom.sourceforge.net/blog/registry/date/metadate."
+  :type 'boolean
+  :group 'muse-blosxom)
+
+;; Maintain (published-file . date) alist, which will later be written
+;; to a timestamps file; not implemented yet.
+
+(defvar muse-blosxom-page-date-alist nil)
+
+(defun muse-blosxom-update-page-date-alist ()
+  "Add a date entry to `muse-blosxom-page-date-alist' for this page."
+  (when muse-publishing-current-file
+    ;; Make current file be relative to base directory
+    (let ((rel-file
+           (concat
+            (file-name-as-directory
+             (or (muse-publishing-directive "category")
+                 (file-relative-name
+                  (file-name-directory
+                   (expand-file-name muse-publishing-current-file))
+                  (file-truename muse-blosxom-base-directory))))
+            (file-name-nondirectory muse-publishing-current-file))))
+      ;; Strip the file extension
+      (when muse-ignored-extensions-regexp
+        (setq rel-file (save-match-data
+                         (and (string-match muse-ignored-extensions-regexp
+                                            rel-file)
+                              (replace-match "" t t rel-file)))))
+      ;; Add to page-date alist
+      (add-to-list
+       'muse-blosxom-page-date-alist
+       `(,rel-file . ,(muse-publishing-directive "date"))))))
+
+;; Enter a new blog entry
+
+(defun muse-blosxom-title-to-file (title)
+  "Derive a file name from the given TITLE.
+
+Feel free to overwrite this if you have a different concept of what
+should be allowed in a filename."
+  (muse-replace-regexp-in-string (concat "[^-." muse-regexp-alnum "]")
+                                 "_" (downcase title)))
+
+(defun muse-blosxom-format-date (date)
+  "Convert a date string to PyBlosxom metadate plugin format."
+  (apply #'format "%s-%s-%s %s:%s" (split-string date "-")))
+
+;;;###autoload
+(defun muse-blosxom-new-entry (category title)
+  "Start a new blog entry with given CATEGORY.
+The filename of the blog entry is derived from TITLE.
+The page will be initialized with the current date and TITLE."
+  (interactive
+   (list
+    (if muse-blosxom-use-tags
+        (let ((tag "foo")
+              (tags nil))
+          (while (progn (setq tag (read-string "Tag (RET to continue): "))
+                        (not (string= tag "")))
+            (add-to-list 'tags tag t))
+          tags)
+      (funcall muse-completing-read-function
+               "Category: "
+               (mapcar 'list (muse-project-recurse-directory
+                              muse-blosxom-base-directory))))
+    (read-string "Title: ")))
+  (let ((file (muse-blosxom-title-to-file title)))
+    (muse-project-find-file
+     file "blosxom" nil
+     (if muse-blosxom-use-tags
+         (directory-file-name muse-blosxom-base-directory)
+       (concat (directory-file-name muse-blosxom-base-directory)
+               "/" category))))
+  (goto-char (point-min))
+  (insert "#date " (format-time-string "%Y-%m-%d-%H-%M")
+          "\n#title " title)
+  (if muse-blosxom-use-tags
+      (if (> (length category) 0)
+          (insert (concat "\n#tags " (mapconcat #'identity category ","))))
+    (unless (string= category "")
+      (insert (concat "\n#category " category))))
+  (insert "\n\n")
+  (forward-line 2))
+
+;;; Register the Muse Blosxom Publisher
+
+(muse-derive-style "blosxom-html" "html"
+                   :suffix    'muse-blosxom-extension
+                   :link-suffix 'muse-html-extension
+                   :header    'muse-blosxom-header
+                   :footer    'muse-blosxom-footer
+                   :after     'muse-blosxom-update-page-date-alist
+                   :browser   'find-file)
+
+(muse-derive-style "blosxom-xhtml" "xhtml"
+                   :suffix    'muse-blosxom-extension
+                   :link-suffix 'muse-xhtml-extension
+                   :header    'muse-blosxom-header
+                   :footer    'muse-blosxom-footer
+                   :after     'muse-blosxom-update-page-date-alist
+                   :browser   'find-file)
+
+(provide 'muse-blosxom)
+
+;;; muse-blosxom.el ends here
diff --git a/packages/muse/muse-book.el b/packages/muse/muse-book.el
new file mode 100644 (file)
index 0000000..213a64e
--- /dev/null
@@ -0,0 +1,284 @@
+;;; muse-book.el --- publish entries into a compilation
+
+;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;;; Contributors:
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Muse Book Publishing
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'muse-publish)
+(require 'muse-project)
+(require 'muse-latex)
+(require 'muse-regexps)
+
+(defgroup muse-book nil
+  "Module for publishing a series of Muse pages as a complete book.
+Each page will become a separate chapter in the book, unless the
+style keyword :nochapters is used, in which case they are all run
+together as if one giant chapter."
+  :group 'muse-publish)
+
+(defcustom muse-book-before-publish-hook nil
+  "A hook run in the book buffer before it is marked up."
+  :type 'hook
+  :group 'muse-book)
+
+(defcustom muse-book-after-publish-hook nil
+  "A hook run in the book buffer after it is marked up."
+  :type 'hook
+  :group 'muse-book)
+
+(defcustom muse-book-latex-header
+  "\\documentclass{book}
+
+\\usepackage[english]{babel}
+\\usepackage[latin1]{inputenc}
+\\usepackage[T1]{fontenc}
+
+\\begin{document}
+
+\\title{<lisp>(muse-publishing-directive \"title\")</lisp>}
+\\author{<lisp>(muse-publishing-directive \"author\")</lisp>}
+\\date{<lisp>(muse-publishing-directive \"date\")</lisp>}
+
+\\maketitle
+
+\\tableofcontents\n"
+  "Header used for publishing books to LaTeX.  This may be text or a filename."
+  :type 'string
+  :group 'muse-book)
+
+(defcustom muse-book-latex-footer
+  "<lisp>(muse-latex-bibliography)</lisp>
+\\end{document}"
+  "Footer used for publishing books to LaTeX.  This may be text or a filename."
+  :type 'string
+  :group 'muse-book)
+
+(defun muse-book-publish-chapter (title entry style &optional nochapters)
+  "Publish the chapter TITLE for the file ENTRY using STYLE.
+TITLE is a string, ENTRY is a cons of the form (PAGE-NAME .
+FILE), and STYLE is a Muse style list.
+
+This routine does the same basic work as `muse-publish-markup-buffer',
+but treating the page as if it were a single chapter within a book."
+  (let ((muse-publishing-directives (list (cons "title" title)))
+        (muse-publishing-current-file (cdr entry))
+        (beg (point)) end)
+    (muse-insert-file-contents (cdr entry))
+    (setq end (copy-marker (point-max) t))
+    (muse-publish-markup-region beg end (car entry) style)
+    (goto-char beg)
+    (unless (or nochapters
+                (muse-style-element :nochapters style))
+      (insert "\n")
+      (muse-insert-markup (muse-markup-text 'chapter))
+      (insert (let ((chap (muse-publishing-directive "title")))
+                (if (string= chap title)
+                    (car entry)
+                  chap)))
+      (muse-insert-markup (muse-markup-text 'chapter-end))
+      (insert "\n\n"))
+    (save-restriction
+      (narrow-to-region beg end)
+      (muse-publish-markup (or title "")
+                           '((100 "<\\(lisp\\)>" 0
+                              muse-publish-markup-tag)))
+      (muse-style-run-hooks :after style))
+    (goto-char end)))
+
+(defun muse-book-publish-p (project target)
+  "Determine whether the book in PROJECT is out-of-date."
+  (let ((pats (cadr project)))
+    (catch 'publish
+      (while pats
+        (if (symbolp (car pats))
+            (if (eq :book-end (car pats))
+                (throw 'publish nil)
+              ;; skip past symbol-value pair
+              (setq pats (cddr pats)))
+          (dolist (entry (muse-project-file-entries (car pats)))
+            (when (and (not (muse-project-private-p (cdr entry)))
+                       (file-newer-than-file-p (cdr entry) target))
+              (throw 'publish t)))
+          (setq pats (cdr pats)))))))
+
+(defun muse-book-get-directives (file)
+  "Interpret any publishing directives contained in FILE.
+This is meant to be called in a temp buffer that will later be
+used for publishing."
+  (save-restriction
+    (narrow-to-region (point) (point))
+    (unwind-protect
+        (progn
+          (muse-insert-file-contents file)
+          (muse-publish-markup
+           "attributes"
+           `(;; Remove leading and trailing whitespace from the file
+             (100 "\\(\\`\n+\\|\n+\\'\\)" 0 "")
+             ;; Remove trailing whitespace from all lines
+             (200 ,(concat "[" muse-regexp-blank "]+$") 0 "")
+             ;; Handle any leading #directives
+             (300 "\\`#\\([a-zA-Z-]+\\)\\s-+\\(.+\\)\n+"
+                  0 muse-publish-markup-directive))))
+      (delete-region (point-min) (point-max)))))
+
+(defun muse-book-publish-project
+  (project book title style &optional output-dir force)
+  "Publish PROJECT under the name BOOK with the given TITLE and STYLE.
+BOOK should be a page name, i.e., letting the style determine the
+prefix and/or suffix.  The book is published to OUTPUT-DIR.  If FORCE
+is nil, the book is only published if at least one of its component
+pages has changed since it was last published."
+  (interactive
+   (let ((project (muse-read-project "Publish project as book: " nil t)))
+     (append (list project
+                   (read-string "Basename of book (without extension): ")
+                   (read-string "Title of book: "))
+             (muse-publish-get-info))))
+  (setq project (muse-project project))
+  (let ((muse-current-project project))
+    ;; See if any of the project's files need saving first
+    (muse-project-save-buffers project)
+    ;; Publish the book
+    (muse-book-publish book style output-dir force title)))
+
+(defun muse-book-publish (file style &optional output-dir force title)
+  "Publish FILE as a book with the given TITLE and STYLE.
+The book is published to OUTPUT-DIR.  If FORCE is nil, the book
+is only published if at least one of its component pages has
+changed since it was last published."
+  ;; Cleanup some of the arguments
+  (let ((style-name style))
+    (setq style (muse-style style))
+    (unless style
+      (error "There is no style '%s' defined" style-name)))
+  ;; Publish each page in the project as a chapter in one large book
+  (let* ((output-path (muse-publish-output-file file output-dir style))
+         (output-suffix (muse-style-element :osuffix style))
+         (target output-path)
+         (project muse-current-project)
+         (published nil))
+    (when output-suffix
+      (setq target (concat (muse-path-sans-extension target)
+                           output-suffix)))
+    ;; Unless force is non-nil, determine if the book needs publishing
+    (if (and (not force)
+             (not (muse-book-publish-p project target)))
+        (message "The book \"%s\" is up-to-date." file)
+      ;; Create the book from all its component parts
+      (muse-with-temp-buffer
+        (let ((style-final  (muse-style-element :final  style t))
+              (style-header (muse-style-element :header style))
+              (style-footer (muse-style-element :footer style))
+              (muse-publishing-current-style style)
+              (muse-publishing-directives
+               (list (cons "title" (or title (muse-page-name file)))
+                     (cons "date" (format-time-string "%B %e, %Y"))))
+              (muse-publishing-p t)
+              (muse-current-project project)
+              (pats (cadr project))
+              (nochapters nil))
+          (run-hooks 'muse-before-book-publish-hook)
+          (let ((style-final style-final)
+                (style-header style-header)
+                (style-footer style-footer))
+            (unless title
+              (muse-book-get-directives file)
+              (setq title (muse-publishing-directive "title")))
+            (while pats
+              (if (symbolp (car pats))
+                  (cond
+                   ((eq :book-part (car pats))
+                    (insert "\n")
+                    (muse-insert-markup (muse-markup-text 'part))
+                    (insert (cadr pats))
+                    (muse-insert-markup (muse-markup-text 'part-end))
+                    (insert "\n")
+                    (setq pats (cddr pats)))
+                   ((eq :book-chapter (car pats))
+                    (insert "\n")
+                    (muse-insert-markup (muse-markup-text 'chapter))
+                    (insert (cadr pats))
+                    (muse-insert-markup (muse-markup-text 'chapter-end))
+                    (insert "\n")
+                    (setq pats (cddr pats)))
+                   ((eq :nochapters (car pats))
+                    (setq nochapters t
+                          pats (cddr pats)))
+                   ((eq :book-style (car pats))
+                    (setq style (muse-style (cadr pats)))
+                    (setq style-final  (muse-style-element :final  style t)
+                          style-header (muse-style-element :header style)
+                          style-footer (muse-style-element :footer style)
+                          muse-publishing-current-style style)
+                    (setq pats (cddr pats)))
+                   ((eq :book-funcall (car pats))
+                    (funcall (cadr pats))
+                    (setq pats (cddr pats)))
+                   ((eq :book-end (car pats))
+                    (setq pats nil))
+                   (t
+                    (setq pats (cddr pats))))
+                (let ((entries (muse-project-file-entries (car pats))))
+                  (while (and entries (car entries) (caar entries))
+                    (unless (muse-project-private-p (cdar entries))
+                      (muse-book-publish-chapter title (car entries)
+                                                 style nochapters)
+                      (setq published t))
+                    (setq entries (cdr entries))))
+                (setq pats (cdr pats)))))
+          (goto-char (point-min))
+          (if style-header (muse-insert-file-or-string style-header file))
+          (goto-char (point-max))
+          (if style-footer (muse-insert-file-or-string style-footer file))
+          (run-hooks 'muse-after-book-publish-hook)
+          (if (muse-write-file output-path)
+              (if style-final
+                  (funcall style-final file output-path target))
+            (setq published nil)))))
+    (if published
+        (message "The book \"%s\" has been published." file))
+    published))
+
+;;; Register the Muse BOOK Publishers
+
+(muse-derive-style "book-latex" "latex"
+                   :header 'muse-book-latex-header
+                   :footer 'muse-book-latex-footer
+                   :publish 'muse-book-publish)
+
+(muse-derive-style "book-pdf" "pdf"
+                   :header 'muse-book-latex-header
+                   :footer 'muse-book-latex-footer
+                   :publish 'muse-book-publish)
+
+(provide 'muse-book)
+
+;;; muse-book.el ends here
diff --git a/packages/muse/muse-colors.el b/packages/muse/muse-colors.el
new file mode 100644 (file)
index 0000000..132310d
--- /dev/null
@@ -0,0 +1,1019 @@
+;;; muse-colors.el --- coloring and highlighting used by Muse
+
+;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; Author: John Wiegley (johnw AT gnu DOT org)
+;; Keywords: hypermedia
+;; Date: Thu 11-Mar-2004
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;;; Contributors:
+
+;; Lan Yufeng (nlany DOT web AT gmail DOT com) found an error where
+;; headings were being given the wrong face, contributing a patch to
+;; fix this.
+
+;; Sergey Vlasov (vsu AT altlinux DOT ru) fixed an issue with coloring
+;; links that are in consecutive lines.
+
+;; Jim Ottaway ported the <lisp> tag from emacs-wiki.
+
+;; Per B. Sederberg (per AT med DOT upenn DOT edu) contributed the
+;; viewing of inline images.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Emacs Muse Highlighting
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'muse-mode)
+(require 'muse-regexps)
+(require 'font-lock)
+
+(defgroup muse-colors nil
+  "Options controlling the behavior of Emacs Muse highlighting.
+See `muse-colors-buffer' for more information."
+  :group 'muse-mode)
+
+(defcustom muse-colors-autogen-headings t
+  "Specify whether the heading faces should be auto-generated.
+The default is to scale them.
+
+Choosing 'outline will copy the colors from the outline-mode
+headings.
+
+If you want to customize each of the headings individually, set
+this to nil."
+  :type '(choice (const :tag "Default (scaled) headings" t)
+                 (const :tag "Use outline-mode headings" outline)
+                 (const :tag "Don't touch the headings" nil))
+  :group 'muse-colors)
+
+(defcustom muse-colors-evaluate-lisp-tags t
+  "Specify whether to evaluate the contents of <lisp> tags at
+display time.  If nil, don't evaluate them.  If non-nil, evaluate
+them.
+
+The actual contents of the buffer are not changed, only the
+displayed text."
+  :type 'boolean
+  :group 'muse-colors)
+
+(defcustom muse-colors-inline-images t
+  "Specify whether to inline images inside the Emacs buffer.  If
+nil, don't inline them.  If non-nil, an image link will be
+replaced by the image.
+
+The actual contents of the buffer are not changed, only whether
+an image is displayed."
+  :type 'boolean
+  :group 'muse-colors)
+
+(defcustom muse-colors-inline-image-method 'default-directory
+  "Determine how to locate inline images.
+Setting this to 'default-directory uses the current directory of
+the current Muse buffer.
+
+Setting this to a function calls that function with the filename
+of the image to be inlined.  The value that is returned will be
+used as the filename of the image."
+  :type '(choice (const :tag "Current directory" default-directory)
+                 (const :tag "Publishing directory"
+                        muse-colors-use-publishing-directory)
+                 (function :tag "Custom function"))
+  :group 'muse-colors)
+
+(defvar muse-colors-region-end nil
+  "Indicate the end of the region that is currently being font-locked.")
+(make-variable-buffer-local 'muse-colors-region-end)
+
+;;;###autoload
+(defun muse-colors-toggle-inline-images ()
+  "Toggle display of inlined images on/off."
+  (interactive)
+  ;; toggle the custom setting
+  (if (not muse-colors-inline-images)
+      (setq muse-colors-inline-images t)
+    (setq muse-colors-inline-images nil))
+  ;; reprocess the buffer
+  (muse-colors-buffer)
+  ;; display informative message
+  (if muse-colors-inline-images
+      (message "Images are now displayed inline")
+    (message "Images are now displayed as links")))
+
+(defvar muse-colors-outline-faces-list
+  (if (facep 'outline-1)
+      '(outline-1 outline-2 outline-3 outline-4 outline-5)
+    ;; these are equivalent in coloring to the outline faces
+    '(font-lock-function-name-face
+      font-lock-variable-name-face
+      font-lock-keyword-face
+      font-lock-builtin-face
+      font-lock-comment-face))
+  "Outline faces to use when assigning Muse header faces.")
+
+(defun muse-make-faces-default (&optional later)
+  "Generate the default face definitions for headers."
+  (dolist (num '(1 2 3 4 5))
+    (let ((newsym (intern (concat "muse-header-" (int-to-string num))))
+          (docstring (concat
+                      "Muse header face.  See "
+                      "`muse-colors-autogen-headings' before changing it.")))
+      ;; put in the proper group and give documentation
+      (if later
+          (unless (featurep 'xemacs)
+            (muse-copy-face 'variable-pitch newsym)
+            (set-face-attribute newsym nil :height (1+ (* 0.1 (- 5 num)))
+                                :weight 'bold))
+        (if (featurep 'xemacs)
+            (eval `(defface ,newsym
+                     '((t (:size
+                           ,(nth (1- num)
+                                 '("24pt" "18pt" "14pt" "12pt" "11pt"))
+                           :bold t)))
+                     ,docstring
+                     :group 'muse-colors))
+          (eval `(defface ,newsym
+                   '((t (:height ,(1+ (* 0.1 (- 5 num)))
+                                 :inherit variable-pitch
+                                 :weight bold)))
+                   ,docstring
+                   :group 'muse-colors)))))))
+
+(progn (muse-make-faces-default))
+
+(defun muse-make-faces (&optional frame)
+  "Generate face definitions for headers based the user's preferences."
+  (cond
+   ((not muse-colors-autogen-headings)
+    nil)
+   ((eq muse-colors-autogen-headings t)
+    (muse-make-faces-default t))
+   (t
+    (dolist (num '(1 2 3 4 5))
+      (let ((newsym (intern (concat "muse-header-" (int-to-string num)))))
+        ;; copy the desired face definition
+        (muse-copy-face (nth (1- num) muse-colors-outline-faces-list)
+                        newsym))))))
+
+;; after displaying the Emacs splash screen, the faces are wiped out,
+;; so recover from that
+(add-hook 'window-setup-hook #'muse-make-faces)
+;; ditto for when a new frame is created
+(when (boundp 'after-make-frame-functions)
+  (add-hook 'after-make-frame-functions #'muse-make-faces))
+
+(defface muse-link
+  '((t :inherit link))
+  "Face for Muse cross-references."
+  :group 'muse-colors)
+
+(defface muse-bad-link
+  '((default :inherit link)
+    (((class color) (background light))
+     (:foreground "red" :underline "red" :bold t))
+    (((class color) (background dark))
+     (:foreground "coral" :underline "coral" :bold t))
+    (t (:bold t)))
+  "Face for bad Muse cross-references."
+  :group 'muse-colors)
+
+(defface muse-verbatim
+  '((((class color) (background light))
+     (:foreground "slate gray"))
+    (((class color) (background dark))
+     (:foreground "gray")))
+  "Face for verbatim text."
+  :group 'muse-colors)
+
+(defface muse-emphasis-1
+  '((t (:italic t)))
+  "Face for italic emphasized text."
+  :group 'muse-colors)
+
+(defface muse-emphasis-2
+  '((t (:bold t)))
+  "Face for bold emphasized text."
+  :group 'muse-colors)
+
+(defface muse-emphasis-3
+  '((t (:bold t :italic t)))
+  "Face for bold italic emphasized text."
+  :group 'muse-colors)
+
+(muse-copy-face 'italic 'muse-emphasis-1)
+(muse-copy-face 'bold 'muse-emphasis-2)
+(muse-copy-face 'bold-italic 'muse-emphasis-3)
+
+(defcustom muse-colors-buffer-hook nil
+  "A hook run after a region is highlighted.
+Each function receives three arguments: BEG END VERBOSE.
+BEG and END mark the range being highlighted, and VERBOSE specifies
+whether progress messages should be displayed to the user."
+  :type 'hook
+  :group 'muse-colors)
+
+(defvar muse-colors-highlighting-registry nil
+  "The rules for highlighting Muse and Muse-derived buffers.
+This is automatically generated when using font-lock in Muse buffers.
+
+This an alist of major-mode symbols to `muse-colors-rule' objects.")
+
+(defun muse-colors-make-highlighting-struct ()
+  (list nil nil nil))
+(defconst muse-colors-highlighting.regexp 0
+  "Regexp matching each car of the markup of the current rule.")
+(defconst muse-colors-highlighting.vector 1
+  "Vector of all characters that are part of the markup of the current rule.
+This is composed of the 2nd element of each markup entry.")
+(defconst muse-colors-highlighting.remaining 2
+  "Expressions for highlighting a buffer which have no corresponding
+entry in the vector.")
+
+(defsubst muse-colors-highlighting-entry (mode)
+  "Return the highlighting rules for MODE."
+  (assq mode muse-colors-highlighting-registry))
+
+(defun muse-colors-find-highlighting (mode)
+  "Return the highlighting rules to be used for MODE.
+If MODE does not have highlighting rules, check its parent modes."
+  (let ((seen nil))
+    (catch 'rules
+      (while (and mode (not (memq mode seen)))
+        (let ((entry (muse-colors-highlighting-entry mode)))
+          (when entry (throw 'rules (cdr entry))))
+        (setq seen (cons mode seen))
+        (setq mode (get mode 'derived-mode-parent)))
+      nil)))
+
+(defun muse-colors-define-highlighting (mode markup)
+  "Create or update the markup rules for MODE, using MARKUP.
+
+See `muse-colors-markup' for an explanation of the format that MARKUP
+should take."
+  (unless (and (symbolp mode) mode (consp markup))
+    (error "Invalid arguments"))
+  (let* ((highlighting-entry (muse-colors-highlighting-entry mode))
+         (struct (cdr highlighting-entry))
+         (regexp nil)
+         (vector nil)
+         (remaining nil))
+    ;; Initialize struct
+    (if struct
+        (setq vector (nth muse-colors-highlighting.vector struct))
+      (setq struct (muse-colors-make-highlighting-struct)))
+    ;; Initialize vector
+    (if vector
+        (let ((i 0))
+          (while (< i 128)
+            (aset vector i nil)
+            (setq i (1+ i))))
+      (setq vector (make-vector 128 nil)))
+    ;; Determine vector, regexp, remaining
+    (let ((regexps nil)
+          (rules nil))
+      (dolist (rule markup)
+        (let ((value (cond ((symbolp (car rule))
+                            (symbol-value (car rule)))
+                           ((stringp (car rule))
+                            (car rule))
+                           (t nil))))
+          (when value
+            (setq rules (cons rule rules))
+            (setq regexps (cons value regexps)))))
+      (setq regexps (nreverse regexps))
+      (setq regexp (concat "\\(" (mapconcat #'identity regexps "\\|") "\\)"))
+      (dolist (rule rules)
+        (if (eq (nth 1 rule) t)
+            (setq remaining (cons (cons (nth 0 rule) (nth 2 rule))
+                                  remaining))
+          (aset vector (nth 1 rule)
+                (cons (cons (nth 0 rule) (nth 2 rule))
+                      (aref vector (nth 1 rule)))))))
+    ;; Update the struct
+    (setcar (nthcdr muse-colors-highlighting.regexp struct) regexp)
+    (setcar (nthcdr muse-colors-highlighting.vector struct) vector)
+    (setcar (nthcdr muse-colors-highlighting.remaining struct) remaining)
+    ;; Update entry for mode in muse-colors-highlighting-registry
+    (if highlighting-entry
+        (setcdr highlighting-entry struct)
+      (setq muse-colors-highlighting-registry
+            (cons (cons mode struct)
+                  muse-colors-highlighting-registry)))))
+
+(defun muse-configure-highlighting (sym val)
+  "Extract color markup information from VAL and set to SYM.
+This is usually called with `muse-colors-markup' as both arguments."
+  (muse-colors-define-highlighting 'muse-mode val)
+  (set sym val))
+
+(defun muse-colors-emphasized ()
+  "Color emphasized text and headings."
+  ;; Here we need to check four different points - the start and end
+  ;; of the leading *s, and the start and end of the trailing *s.  We
+  ;; allow the outsides to be surrounded by whitespace or punctuation,
+  ;; but no word characters, and the insides must not be surrounded by
+  ;; whitespace or punctuation.  Thus the following are valid:
+  ;;
+  ;; " *foo bar* "
+  ;; "**foo**,"
+  ;; and the following is invalid:
+  ;; "** testing **"
+  (let* ((beg (match-beginning 0))
+         (e1 (match-end 0))
+         (leader (- e1 beg))
+         b2 e2 multiline)
+    (unless (or (eq (get-text-property beg 'invisible) 'muse)
+                (get-text-property beg 'muse-comment)
+                (get-text-property beg 'muse-directive))
+      ;; check if it's a header
+      (if (eq (char-after e1) ?\ )
+          (when (or (= beg (point-min))
+                    (eq (char-before beg) ?\n))
+            (add-text-properties
+             (muse-line-beginning-position) (muse-line-end-position)
+             (list 'face (intern (concat "muse-header-"
+                                         (int-to-string leader))))))
+        ;; beginning of line or space or symbol
+        (when (or (= beg (point-min))
+                  (eq (char-syntax (char-before beg)) ?\ )
+                  (memq (char-before beg)
+                        '(?\- ?\[ ?\< ?\( ?\' ?\` ?\" ?\n)))
+          (save-excursion
+            (skip-chars-forward "^*<>\n" muse-colors-region-end)
+            (when (eq (char-after) ?\n)
+              (setq multiline t)
+              (skip-chars-forward "^*<>" muse-colors-region-end))
+            (setq b2 (point))
+            (skip-chars-forward "*" muse-colors-region-end)
+            (setq e2 (point))
+            ;; Abort if space exists just before end
+            ;; or bad leader
+            ;; or no '*' at end
+            ;; or word constituent follows
+            (unless (or (> leader 5)
+                        (not (eq leader (- e2 b2)))
+                        (eq (char-syntax (char-before b2)) ?\ )
+                        (not (eq (char-after b2) ?*))
+                        (and (not (eobp))
+                             (eq (char-syntax (char-after (1+ b2))) ?w)))
+              (add-text-properties beg e1 '(invisible muse))
+              (add-text-properties
+               e1 b2 (list 'face (cond ((= leader 1) 'muse-emphasis-1)
+                                       ((= leader 2) 'muse-emphasis-2)
+                                       ((= leader 3) 'muse-emphasis-3))))
+              (add-text-properties b2 e2 '(invisible muse))
+              (when multiline
+                (add-text-properties
+                 beg e2 '(font-lock-multiline t))))))))))
+
+(defun muse-colors-underlined ()
+  "Color underlined text."
+  (let ((start (match-beginning 0))
+        multiline)
+    (unless (or (eq (get-text-property start 'invisible) 'muse)
+                (get-text-property start 'muse-comment)
+                (get-text-property start 'muse-directive))
+      ;; beginning of line or space or symbol
+      (when (or (= start (point-min))
+                (eq (char-syntax (char-before start)) ?\ )
+                (memq (char-before start)
+                      '(?\- ?\[ ?\< ?\( ?\' ?\` ?\" ?\n)))
+        (save-excursion
+          (skip-chars-forward "^_<>\n" muse-colors-region-end)
+          (when (eq (char-after) ?\n)
+            (setq multiline t)
+            (skip-chars-forward "^_<>" muse-colors-region-end))
+          ;; Abort if space exists just before end
+          ;; or no '_' at end
+          ;; or word constituent follows
+          (unless (or (eq (char-syntax (char-before (point))) ?\ )
+                      (not (eq (char-after (point)) ?_))
+                      (and (not (eobp))
+                           (eq (char-syntax (char-after (1+ (point)))) ?w)))
+            (add-text-properties start (1+ start) '(invisible muse))
+            (add-text-properties (1+ start) (point) '(face underline))
+            (add-text-properties (point)
+                                 (min (1+ (point)) (point-max))
+                                 '(invisible muse))
+            (when multiline
+              (add-text-properties
+               start (min (1+ (point)) (point-max))
+               '(font-lock-multiline t)))))))))
+
+(defun muse-colors-verbatim ()
+  "Render in teletype and suppress further parsing."
+  (let ((start (match-beginning 0))
+        multiline)
+    (unless (or (eq (get-text-property start 'invisible) 'muse)
+                (get-text-property start 'muse-comment)
+                (get-text-property start 'muse-directive))
+      ;; beginning of line or space or symbol
+      (when (or (= start (point-min))
+                (eq (char-syntax (char-before start)) ?\ )
+                (memq (char-before start)
+                      '(?\- ?\[ ?\< ?\( ?\' ?\` ?\" ?\n)))
+        (let ((pos (point)))
+          (skip-chars-forward "^=\n" muse-colors-region-end)
+          (when (eq (char-after) ?\n)
+            (setq multiline t)
+            (skip-chars-forward "^=" muse-colors-region-end))
+          ;; Abort if space exists just before end
+          ;; or no '=' at end
+          ;; or word constituent follows
+          (unless (or (eq (char-syntax (char-before (point))) ?\ )
+                      (not (eq (char-after (point)) ?=))
+                      (and (not (eobp))
+                           (eq (char-syntax (char-after (1+ (point)))) ?w)))
+            (setq pos (min (1+ (point)) (point-max)))
+            (add-text-properties start (1+ start) '(invisible muse))
+            (add-text-properties (1+ start) (point) '(face muse-verbatim))
+            (add-text-properties (point)
+                                 (min (1+ (point)) (point-max))
+                                 '(invisible muse))
+            (when multiline
+              (add-text-properties
+               start (min (1+ (point)) (point-max))
+               '(font-lock-multiline t))))
+          (goto-char pos))))))
+
+(defcustom muse-colors-markup
+  `(;; make emphasized text appear emphasized
+    ("\\*\\{1,5\\}" ?* muse-colors-emphasized)
+
+    ;; make underlined text appear underlined
+    (,(concat "_[^" muse-regexp-blank "_\n]")
+     ?_ muse-colors-underlined)
+
+    ("^#title " ?\# muse-colors-title)
+
+    (muse-explicit-link-regexp ?\[ muse-colors-explicit-link)
+
+    ;; render in teletype and suppress further parsing
+    (,(concat "=[^" muse-regexp-blank "=\n]") ?= muse-colors-verbatim)
+
+    ;; highlight any markup tags encountered
+    (muse-tag-regexp ?\< muse-colors-custom-tags)
+
+    ;; display comments
+    (,(concat "^;[" muse-regexp-blank "]") ?\; muse-colors-comment)
+
+    ;; this has to come later since it doesn't have a special
+    ;; character in the second cell
+    (muse-url-regexp t muse-colors-implicit-link)
+    )
+  "Expressions to highlight an Emacs Muse buffer.
+These are arranged in a rather special fashion, so as to be as quick as
+possible.
+
+Each element of the list is itself a list, of the form:
+
+  (LOCATE-REGEXP TEST-CHAR MATCH-FUNCTION)
+
+LOCATE-REGEXP is a partial regexp, and should be the smallest possible
+regexp to differentiate this rule from other rules.  It may also be a
+symbol containing such a regexp.  The buffer region is scanned only
+once, and LOCATE-REGEXP indicates where the scanner should stop to
+look for highlighting possibilities.
+
+TEST-CHAR is a char or t.  The character should match the beginning
+text matched by LOCATE-REGEXP.  These chars are used to build a vector
+for fast MATCH-FUNCTION calling.
+
+MATCH-FUNCTION is the function called when a region has been
+identified.  It is responsible for adding the appropriate text
+properties to change the appearance of the buffer.
+
+This markup is used to modify the appearance of the original text to
+make it look more like the published HTML would look (like making some
+markup text invisible, inlining images, etc).
+
+font-lock is used to apply the markup rules, so that they can happen
+on a deferred basis.  They are not always accurate, but you can use
+\\[font-lock-fontifty-block] near the point of error to force
+fontification in that area."
+  :type '(repeat
+          (list :tag "Highlight rule"
+                (choice (regexp :tag "Locate regexp")
+                        (symbol :tag "Regexp symbol"))
+                (choice (character :tag "Confirm character")
+                        (const :tag "Default rule" t))
+                function))
+  :set 'muse-configure-highlighting
+  :group 'muse-colors)
+
+;; XEmacs users don't have `font-lock-multiline'.
+(unless (boundp 'font-lock-multiline)
+  (defvar font-lock-multiline nil))
+
+(defun muse-use-font-lock ()
+  "Set up font-locking for Muse."
+  (muse-add-to-invisibility-spec 'muse)
+  (set (make-local-variable 'font-lock-multiline) 'undecided)
+  (set (make-local-variable 'font-lock-defaults)
+       `(nil t nil nil beginning-of-line
+         (font-lock-fontify-region-function . muse-colors-region)
+         (font-lock-unfontify-region-function
+          . muse-unhighlight-region)))
+  (set (make-local-variable 'font-lock-fontify-region-function)
+       'muse-colors-region)
+  (set (make-local-variable 'font-lock-unfontify-region-function)
+       'muse-unhighlight-region)
+  (muse-make-faces)
+  (muse-colors-define-highlighting 'muse-mode muse-colors-markup)
+  (font-lock-mode t))
+
+(defun muse-colors-buffer ()
+  "Re-highlight the entire Muse buffer."
+  (interactive)
+  (muse-colors-region (point-min) (point-max) t))
+
+(defvar muse-colors-fontifying-p nil
+  "Indicate whether Muse is fontifying the current buffer.")
+(make-variable-buffer-local 'muse-colors-fontifying-p)
+
+(defvar muse-colors-delayed-commands nil
+  "Commands to be run immediately after highlighting a region.
+
+This is meant to accommodate highlighting <lisp> in #title
+directives after everything else.
+
+It may be modified by Muse functions during highlighting, but not
+the user.")
+(make-variable-buffer-local 'muse-colors-delayed-commands)
+
+(defun muse-colors-region (beg end &optional verbose)
+  "Apply highlighting according to `muse-colors-markup'.
+Note that this function should NOT change the buffer, nor should any
+of the functions listed in `muse-colors-markup'."
+  (let ((buffer-undo-list t)
+        (inhibit-read-only t)
+        (inhibit-point-motion-hooks t)
+        (inhibit-modification-hooks t)
+        (modified-p (buffer-modified-p))
+        (muse-colors-fontifying-p t)
+        (muse-colors-region-end (muse-line-end-position end))
+        (muse-colors-delayed-commands nil)
+        (highlighting (muse-colors-find-highlighting major-mode))
+        regexp vector remaining
+        deactivate-mark)
+    (unless highlighting
+      (error "No highlighting found for this mode"))
+    (setq regexp (nth muse-colors-highlighting.regexp highlighting)
+          vector (nth muse-colors-highlighting.vector highlighting)
+          remaining (nth muse-colors-highlighting.remaining highlighting))
+    (unwind-protect
+        (save-excursion
+          (save-restriction
+            (widen)
+            ;; check to see if we should expand the beg/end area for
+            ;; proper multiline matches
+            (when (and font-lock-multiline
+                       (> beg (point-min))
+                       (get-text-property (1- beg) 'font-lock-multiline))
+              ;; We are just after or in a multiline match.
+              (setq beg (or (previous-single-property-change
+                             beg 'font-lock-multiline)
+                            (point-min)))
+              (goto-char beg)
+              (setq beg (muse-line-beginning-position)))
+            (when font-lock-multiline
+              (setq end (or (text-property-any end (point-max)
+                                               'font-lock-multiline nil)
+                            (point-max))))
+            (goto-char end)
+            (setq end (muse-line-beginning-position 2))
+            ;; Undo any fontification in the area.
+            (font-lock-unfontify-region beg end)
+            ;; And apply fontification based on `muse-colors-markup'
+            (let ((len (float (- end beg)))
+                  (case-fold-search nil)
+                  markup-list)
+              (goto-char beg)
+              (while (and (< (point) end)
+                          (re-search-forward regexp end t))
+                (if verbose
+                    (message "Highlighting buffer...%d%%"
+                             (* (/ (float (- (point) beg)) len) 100)))
+                (let ((ch (char-after (match-beginning 0))))
+                  (when (< ch 128)
+                    (setq markup-list (aref vector ch))))
+                (unless markup-list
+                  (setq markup-list remaining))
+                (let ((prev (point)))
+                  ;; backtrack and figure out which rule matched
+                  (goto-char (match-beginning 0))
+                  (catch 'done
+                    (dolist (entry markup-list)
+                      (let ((value (cond ((symbolp (car entry))
+                                          (symbol-value (car entry)))
+                                         ((stringp (car entry))
+                                          (car entry))
+                                         (t nil))))
+                        (when (and (stringp value) (looking-at value))
+                          (goto-char (match-end 0))
+                          (when (cdr entry)
+                            (funcall (cdr entry)))
+                          (throw 'done t))))
+                    ;; if no rule matched, which should never happen,
+                    ;; return to previous position so that forward
+                    ;; progress is ensured
+                    (goto-char prev))))
+              (dolist (command muse-colors-delayed-commands)
+                (apply (car command) (cdr command)))
+              (run-hook-with-args 'muse-colors-buffer-hook
+                                  beg end verbose)
+              (if verbose (message "Highlighting buffer...done")))))
+      (set-buffer-modified-p modified-p))))
+
+(defcustom muse-colors-tags
+  '(("example"  t nil nil muse-colors-example-tag)
+    ("code"     t nil nil muse-colors-example-tag)
+    ("verbatim" t nil nil muse-colors-literal-tag)
+    ("lisp"     t t   nil muse-colors-lisp-tag)
+    ("literal"  t nil nil muse-colors-literal-tag))
+  "A list of tag specifications for specially highlighting text.
+XML-style tags are the best way to add custom highlighting to Muse.
+This is easily accomplished by customizing this list of markup tags.
+
+For each entry, the name of the tag is given, whether it expects
+a closing tag and/or an optional set of attributes, whether it is
+nestable, and a function that performs whatever action is desired
+within the delimited region.
+
+The function is called with three arguments, the beginning and
+end of the region surrounded by the tags. If properties are
+allowed, they are passed as a third argument in the form of an
+alist. The `end' argument to the function is the last character
+of the enclosed tag or region.
+
+Functions should not modify the contents of the buffer."
+  :type '(repeat (list (string :tag "Markup tag")
+                       (boolean :tag "Expect closing tag" :value t)
+                       (boolean :tag "Parse attributes" :value nil)
+                       (boolean :tag "Nestable" :value nil)
+                       function))
+  :group 'muse-colors)
+
+(defvar muse-colors-inhibit-tags-in-directives t
+  "If non-nil, don't allow tags to be interpreted in directives.
+This is used to delay highlighting of <lisp> tags in #title until later.")
+(make-variable-buffer-local 'muse-colors-inhibit-tags-in-directives)
+
+(defsubst muse-colors-tag-info (tagname &rest args)
+  "Get tag info associated with TAGNAME, ignoring ARGS."
+  (assoc tagname muse-colors-tags))
+
+(defun muse-colors-custom-tags ()
+  "Highlight `muse-colors-tags'."
+  (let ((tag-info (muse-colors-tag-info (match-string 1))))
+    (unless (or (not tag-info)
+                (get-text-property (match-beginning 0) 'muse-comment)
+                (and muse-colors-inhibit-tags-in-directives
+                     (get-text-property (match-beginning 0) 'muse-directive)))
+      (let ((closed-tag (match-string 3))
+            (start (match-beginning 0))
+            end attrs)
+        (when (nth 2 tag-info)
+          (let ((attrstr (match-string 2)))
+            (while (and attrstr
+                        (string-match (concat "\\([^"
+                                              muse-regexp-blank
+                                              "=\n]+\\)\\(=\""
+                                              "\\([^\"]+\\)\"\\)?")
+                                      attrstr))
+              (let ((attr (cons (downcase
+                                 (muse-match-string-no-properties 1 attrstr))
+                                (muse-match-string-no-properties 3 attrstr))))
+                (setq attrstr (replace-match "" t t attrstr))
+                (if attrs
+                    (nconc attrs (list attr))
+                  (setq attrs (list attr)))))))
+        (if (and (cadr tag-info) (not closed-tag))
+            (if (muse-goto-tag-end (car tag-info) (nth 3 tag-info))
+                (setq end (match-end 0))
+              (setq tag-info nil)))
+        (when tag-info
+          (let ((args (list start end)))
+            (if (nth 2 tag-info)
+                (nconc args (list attrs)))
+            (apply (nth 4 tag-info) args)))))))
+
+(defun muse-unhighlight-region (begin end &optional verbose)
+  "Remove all visual highlights in the buffer (except font-lock)."
+  (let ((buffer-undo-list t)
+        (inhibit-read-only t)
+        (inhibit-point-motion-hooks t)
+        (inhibit-modification-hooks t)
+        (modified-p (buffer-modified-p))
+        deactivate-mark)
+    (unwind-protect
+        (remove-text-properties
+         begin end '(face nil font-lock-multiline nil end-glyph nil
+                          invisible nil intangible nil display nil
+                          mouse-face nil keymap nil help-echo nil
+                          muse-link nil muse-directive nil muse-comment nil
+                          muse-no-implicit-link nil muse-no-flyspell nil))
+      (set-buffer-modified-p modified-p))))
+
+(defun muse-colors-example-tag (beg end)
+  "Strip properties and colorize with `muse-verbatim'."
+  (muse-unhighlight-region beg end)
+  (let ((multi (save-excursion
+                 (goto-char beg)
+                 (forward-line 1)
+                 (> end (point)))))
+    (add-text-properties beg end `(face muse-verbatim
+                                   font-lock-multiline ,multi))))
+
+(defun muse-colors-literal-tag (beg end)
+  "Strip properties and mark as literal."
+  (muse-unhighlight-region beg end)
+  (let ((multi (save-excursion
+                 (goto-char beg)
+                 (forward-line 1)
+                 (> end (point)))))
+    (add-text-properties beg end `(font-lock-multiline ,multi))))
+
+(defun muse-colors-lisp-tag (beg end attrs)
+  "Color the region enclosed by a <lisp> tag."
+  (if (not muse-colors-evaluate-lisp-tags)
+      (muse-colors-literal-tag beg end)
+    (muse-unhighlight-region beg end)
+    (let (beg-lisp end-lisp)
+      (save-match-data
+        (goto-char beg)
+        (setq beg-lisp (and (looking-at "<[^>]+>")
+                            (match-end 0)))
+        (goto-char end)
+        (setq end-lisp (and (muse-looking-back "</[^>]+>")
+                            (match-beginning 0))))
+      (add-text-properties
+       beg end
+       (list 'font-lock-multiline t
+             'display (muse-eval-lisp
+                       (concat
+                        "(progn "
+                        (buffer-substring-no-properties beg-lisp end-lisp)
+                        ")"))
+             'intangible t)))))
+
+(defvar muse-mode-local-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [return] 'muse-follow-name-at-point)
+    (define-key map [(control ?m)] 'muse-follow-name-at-point)
+    (define-key map [(shift return)] 'muse-follow-name-at-point-other-window)
+    (if (featurep 'xemacs)
+        (progn
+          (define-key map [(button2)] 'muse-follow-name-at-mouse)
+          (define-key map [(shift button2)]
+            'muse-follow-name-at-mouse-other-window))
+      (define-key map [(shift control ?m)]
+        'muse-follow-name-at-point-other-window)
+      (define-key map [mouse-2] 'muse-follow-name-at-mouse)
+      (define-key map [(shift mouse-2)]
+        'muse-follow-name-at-mouse-other-window)
+      (unless (eq emacs-major-version 21)
+        (set-keymap-parent map muse-mode-map)))
+    map)
+  "Local keymap used by Muse while on a link.")
+
+(defvar muse-keymap-property
+  (if (or (featurep 'xemacs)
+          (>= emacs-major-version 21))
+      'keymap
+    'local-map)
+  "The name of the keymap or local-map property.")
+
+(defsubst muse-link-properties (help-str &optional face)
+  "Determine text properties to use for a link."
+  (append (if face
+              (list 'face face 'mouse-face 'highlight 'muse-link t)
+            (list 'invisible 'muse 'intangible t))
+          (list 'help-echo help-str 'rear-nonsticky t
+                muse-keymap-property muse-mode-local-map)))
+
+(defun muse-link-face (link-name &optional explicit)
+  "Return the type of LINK-NAME as a face symbol.
+For EXPLICIT links, this is either a normal link or a bad-link
+face.  For implicit links, it is either colored normally or
+ignored."
+  (save-match-data
+    (let ((link (if explicit
+                    (muse-handle-explicit-link link-name)
+                  (muse-handle-implicit-link link-name))))
+      (when link
+        (cond ((string-match muse-url-regexp link)
+               'muse-link)
+              ((muse-file-remote-p link)
+               'muse-link)
+              ((string-match muse-file-regexp link)
+               (when (string-match "/[^/]+#[^#./]+\\'" link)
+                 ;; strip anchor from the end of a path
+                 (setq link (substring link 0 (match-beginning 0))))
+               (if (file-exists-p link)
+                   'muse-link
+                 'muse-bad-link))
+              ((not (featurep 'muse-project))
+               'muse-link)
+              (t
+               (if (string-match "#" link)
+                   (setq link (substring link 0 (match-beginning 0))))
+               (if (or (and (muse-project-of-file)
+                            (muse-project-page-file
+                             link muse-current-project t))
+                       (file-exists-p link))
+                   'muse-link
+                 'muse-bad-link)))))))
+
+(defun muse-colors-use-publishing-directory (link)
+  "Make LINK relative to the directory where we will publish the
+current file."
+  (let ((style (car (muse-project-applicable-styles
+                     link (cddr (muse-project)))))
+        path)
+    (when (and style
+               (setq path (muse-style-element :path style)))
+      (expand-file-name link path))))
+
+(defun muse-colors-resolve-image-file (link)
+  "Determine if we can create images and see if the link is an image
+file."
+  (save-match-data
+    (and (or (fboundp 'create-image)
+             (fboundp 'make-glyph))
+         (not (string-match "\\`[uU][rR][lL]:" link))
+         (string-match muse-image-regexp link))))
+
+(defun muse-make-file-glyph (filename)
+  "Given a file name, return a newly-created image glyph.
+This is a hack for supporting inline images in XEmacs."
+  (let ((case-fold-search nil))
+    ;; Scan filename to determine image type
+    (when (fboundp 'make-glyph)
+      (save-match-data
+        (cond ((string-match "jpe?g" filename)
+               (make-glyph (vector 'jpeg :file filename) 'buffer))
+              ((string-match "gif" filename)
+               (make-glyph (vector 'gif :file filename) 'buffer))
+              ((string-match "png" filename)
+               (make-glyph (vector 'png :file filename) 'buffer)))))))
+
+(defun muse-colors-insert-image (link beg end invis-props)
+  "Create an image using create-image or make-glyph and insert it
+in place of an image link defined by BEG and END."
+  (setq link (expand-file-name link))
+  (let ((image-file (cond
+                     ((eq muse-colors-inline-image-method 'default-directory)
+                      link)
+                     ((functionp muse-colors-inline-image-method)
+                      (funcall muse-colors-inline-image-method link))))
+        glyph)
+    (when (stringp image-file)
+      (if (fboundp 'create-image)
+          ;; use create-image and display property
+          (let ((display-stuff (condition-case nil
+                                   (create-image image-file)
+                                 (error nil))))
+            (when display-stuff
+              (add-text-properties beg end (list 'display display-stuff))))
+        ;; use make-glyph and invisible property
+        (and (setq glyph (muse-make-file-glyph image-file))
+             (progn
+               (add-text-properties beg end invis-props)
+               (add-text-properties beg end (list
+                                             'end-glyph glyph
+                                             'help-echo link))))))))
+
+(defun muse-colors-explicit-link ()
+  "Color explicit links."
+  (when (and (eq ?\[ (char-after (match-beginning 0)))
+             (not (get-text-property (match-beginning 0) 'muse-comment))
+             (not (get-text-property (match-beginning 0) 'muse-directive)))
+    ;; remove flyspell overlays
+    (when (fboundp 'flyspell-unhighlight-at)
+      (let ((cur (match-beginning 0)))
+        (while (> (match-end 0) cur)
+          (flyspell-unhighlight-at cur)
+          (setq cur (1+ cur)))))
+    (let* ((unesc-link (muse-get-link))
+           (unesc-desc (muse-get-link-desc))
+           (link (muse-link-unescape unesc-link))
+           (desc (muse-link-unescape unesc-desc))
+           (props (muse-link-properties desc (muse-link-face link t)))
+           (invis-props (append props (muse-link-properties desc))))
+      ;; see if we should try and inline an image
+      (if (and muse-colors-inline-images
+               (or (muse-colors-resolve-image-file link)
+                   (and desc
+                        (muse-colors-resolve-image-file desc)
+                        (setq link desc))))
+          ;; we found an image, so inline it
+          (muse-colors-insert-image
+           link
+           (match-beginning 0) (match-end 0) invis-props)
+        (if desc
+            (progn
+              ;; we put the normal face properties on the invisible
+              ;; portion too, since emacs sometimes will position
+              ;; the cursor on an intangible character
+              (add-text-properties (match-beginning 0)
+                                   (match-beginning 2) invis-props)
+              (add-text-properties (match-beginning 2) (match-end 2) props)
+              (add-text-properties (match-end 2) (match-end 0) invis-props)
+              ;; in case specials were escaped, cause the unescaped
+              ;; text to be displayed
+              (unless (string= desc unesc-desc)
+                (add-text-properties (match-beginning 2) (match-end 2)
+                                     (list 'display desc))))
+          (add-text-properties (match-beginning 0)
+                               (match-beginning 1) invis-props)
+          (add-text-properties (match-beginning 1) (match-end 0) props)
+          (add-text-properties (match-end 1) (match-end 0) invis-props)
+          (unless (string= link unesc-link)
+            (add-text-properties (match-beginning 1) (match-end 1)
+                                 (list 'display link))))
+        (goto-char (match-end 0))
+        (add-text-properties
+         (match-beginning 0) (match-end 0)
+         (muse-link-properties (muse-match-string-no-properties 0)
+                               (muse-link-face link t)))))))
+
+(defun muse-colors-implicit-link ()
+  "Color implicit links."
+  (unless (or (eq (get-text-property (match-beginning 0) 'invisible) 'muse)
+              (get-text-property (match-beginning 0) 'muse-comment)
+              (get-text-property (match-beginning 0) 'muse-directive)
+              (get-text-property (match-beginning 0) 'muse-no-implicit-link)
+              (eq (char-before (match-beginning 0)) ?\")
+              (eq (char-after (match-end 0)) ?\"))
+    ;; remove flyspell overlays
+    (when (fboundp 'flyspell-unhighlight-at)
+      (let ((cur (match-beginning 0)))
+        (while (> (match-end 0) cur)
+          (flyspell-unhighlight-at cur)
+          (setq cur (1+ cur)))))
+    ;; colorize link
+    (let ((link (muse-match-string-no-properties 0))
+          (face (muse-link-face (match-string 0))))
+      (when face
+        (add-text-properties (match-beginning 0) (match-end 0)
+                             (muse-link-properties
+                              (muse-match-string-no-properties 0) face))))))
+
+(defun muse-colors-title ()
+  "Color #title directives."
+  (let ((beg (+ 7 (match-beginning 0))))
+    (add-text-properties beg (muse-line-end-position) '(muse-directive t))
+    ;; colorize <lisp> tags in #title after other <lisp> tags have had a
+    ;; chance to run, so that we can have behavior that is consistent
+    ;; with how the document is published
+    (setq muse-colors-delayed-commands
+          (cons (list 'muse-colors-title-lisp beg (muse-line-end-position))
+                muse-colors-delayed-commands))))
+
+(defun muse-colors-title-lisp (beg end)
+  "Called after other highlighting is done for a region in order to handle
+<lisp> tags that exist in #title directives."
+  (save-restriction
+    (narrow-to-region beg end)
+    (goto-char (point-min))
+    (let ((muse-colors-inhibit-tags-in-directives nil)
+          (muse-colors-tags '(("lisp" t t nil muse-colors-lisp-tag))))
+      (while (re-search-forward muse-tag-regexp nil t)
+        (muse-colors-custom-tags))))
+  (add-text-properties beg end '(face muse-header-1)))
+
+(defun muse-colors-comment ()
+  "Color comments."
+  (add-text-properties (match-beginning 0) (muse-line-end-position)
+                       (list 'face 'font-lock-comment-face
+                             'muse-comment t)))
+
+
+(provide 'muse-colors)
+
+;;; muse-colors.el ends here
diff --git a/packages/muse/muse-context.el b/packages/muse/muse-context.el
new file mode 100644 (file)
index 0000000..45968b0
--- /dev/null
@@ -0,0 +1,458 @@
+;;; muse-context.el --- publish entries in ConTeXt or PDF format
+
+;; Copyright (C) 2007, 2008, 2009, 2010  Free Software Foundation, Inc.
+
+;; Author: Jean Magnan de Bornier (jean@bornier.net)
+;; Created: 16-Apr-2007
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; This file when loaded allows you to publish .muse files as ConTeXt
+;; files or as pdf files, using respectively the "context" and
+;; "context-pdf" styles. It is far from being perfect, so any feedback
+;; will be welcome and any mistake hopefully fixed.
+
+;;; Author:
+
+;; Jean Magnan de Bornier, who based this file on muse-latex.el and
+;; made the context, context-pdf, context-slides, and
+;; context-slides-pdf Muse publishing styles.
+
+;; 16 Avril 2007
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Muse ConTeXt Publishing
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'muse-publish)
+
+(defgroup muse-context nil
+  "Rules for marking up a Muse file as a ConTeXt article."
+  :group 'muse-publish)
+
+(defcustom muse-context-extension ".tex"
+  "Default file extension for publishing ConTeXt files."
+  :type 'string
+  :group 'muse-context)
+
+(defcustom muse-context-pdf-extension ".pdf"
+  "Default file extension for publishing ConTeXt files to PDF."
+  :type 'string
+  :group 'muse-context)
+
+(defcustom muse-context-pdf-program "texexec --pdf"
+  "The program that is called to generate PDF content from ConTeXt content."
+  :type 'string
+  :group 'muse-context)
+
+(defcustom muse-context-pdf-cruft '(".pgf" ".tmp" ".tui" ".tuo" ".toc"  ".log")
+  "Extensions of files to remove after generating PDF output successfully."
+  :type 'string
+  :group 'muse-context)
+
+(defcustom muse-context-header
+  "\\setupinteraction [state=start]
+\\usemodule[tikz]
+\\usemodule[bib]\n
+<lisp>(muse-context-setup-bibliography)</lisp>
+ \\setuppublications[]\n
+\\setuppublicationlist[]\n\\setupcite[]\n
+\\starttext
+\\startalignment[center]
+  \\blank[2*big]
+    {\\tfd <lisp>(muse-publishing-directive \"title\")</lisp>}
+  \\blank[3*medium]
+    {\\tfa <lisp>(muse-publishing-directive \"author\")</lisp>}
+  \\blank[2*medium]
+    {\\tfa <lisp>(muse-publishing-directive \"date\")</lisp>}
+  \\blank[3*medium]
+\\stopalignment
+
+<lisp>(and muse-publish-generate-contents
+           (not muse-context-permit-contents-tag)
+           \"\\\\placecontent\n\\\\page[yes]\")</lisp>\n\n"
+  "Header used for publishing ConTeXt files.  This may be text or a filename."
+  :type 'string
+  :group 'muse-context)
+
+(defcustom muse-context-footer "<lisp>(muse-context-bibliography)</lisp>
+\\stoptext\n"
+  "Footer used for publishing ConTeXt files.  This may be text or a filename."
+  :type 'string
+  :group 'muse-context)
+
+(defcustom muse-context-markup-regexps
+  `(;; numeric ranges
+    (10000 "\\([0-9]+\\)-\\([0-9]+\\)" 0 "\\1--\\2")
+
+    ;; be careful of closing quote pairs
+    (10100 "\"'" 0 "\"\\\\-'"))
+  "List of markup regexps for identifying regions in a Muse page.
+For more on the structure of this list, see `muse-publish-markup-regexps'."
+  :type '(repeat (choice
+                  (list :tag "Markup rule"
+                        integer
+                        (choice regexp symbol)
+                        integer
+                        (choice string function symbol))
+                  function))
+  :group 'muse-context)
+
+(defcustom muse-context-markup-functions
+  '((table . muse-context-markup-table))
+  "An alist of style types to custom functions for that kind of text.
+For more on the structure of this list, see
+`muse-publish-markup-functions'."
+  :type '(alist :key-type symbol :value-type function)
+  :group 'muse-context)
+
+(defcustom muse-context-markup-strings
+  '((image-with-desc . "\\placefigure[][]{%3%}{\\externalfigure[%1%.%2%]}")
+    (image           . "\\placefigure[][]{}{\\externalfigure[%s.%s]}")
+    (image-link      . "\\useURL[aa][%s][][%1%] \\from[aa]")
+    (anchor-ref      . "\\goto{%2%}{}[%1%]")
+    (url             . "\\useURL[aa][%s][][%s] \\from[aa]")
+    (url-and-desc    . "\\useURL[bb][%s][][%s]\\from[bb]\\footnote{%1%}")
+    (link            . "\\goto{%2%}[program(%1%)]\\footnote{%1%}")
+    (link-and-anchor . "\\useexternaldocument[%4%][%4%][] \\at{%3%, page}{}[%4%::%2%]\\footnote{%1%}")
+    (email-addr      . "\\useURL[mail][mailto:%s][][%s]\\from[mail]")
+    (anchor          . "\\reference[%s] ")
+    (emdash          . "---")
+    (comment-begin   . "\\doifmode{comment}{")
+    (comment-end     . "}")
+    (rule            . "\\blank[medium]\\hrule\\blank[medium]")
+    (no-break-space  . "~")
+    (enddots         . "\\ldots ")
+    (dots            . "\\dots ")
+    (part            . "\\part{")
+    (part-end        . "}")
+    (chapter         . "\\chapter{")
+    (chapter-end     . "}")
+    (section         . "\\section{")
+    (section-end     . "}")
+    (subsection      . "\\subsection{")
+    (subsection-end  . "}")
+    (subsubsection   . "\\subsubsection{")
+    (subsubsection-end . "}")
+    (section-other   . "\\subsubsubject{")
+    (section-other-end . "}")
+    (footnote        . "\\footnote{")
+    (footnote-end    . "}")
+    (footnotetext    . "\\footnotetext[%d]{")
+    (begin-underline . "\\underbar{")
+    (end-underline   . "}")
+    (begin-literal   . "\\type{")
+    (end-literal     . "}")
+    (begin-emph      . "{\\em ")
+    (end-emph        . "}")
+    (begin-more-emph . "{\\bf ")
+    (end-more-emph   . "}")
+    (begin-most-emph . "{\\bf {\\em ")
+    (end-most-emph   . "}}")
+    (begin-example   . "\\starttyping")
+    (end-example     . "\\stoptyping")
+    (begin-center    . "\\startalignment[center]\n")
+    (end-center      . "\n\\stopalignment")
+    (begin-quote     . "\\startquotation\n")
+    (end-quote       . "\n\\stopquotation")
+    (begin-cite     . "\\cite[authoryear][")
+    (begin-cite-author . "\\cite[author][")
+    (begin-cite-year . "\\cite[year][")
+    (end-cite        . "]")
+    (begin-uli       . "\\startitemize\n")
+    (end-uli         . "\n\\stopitemize")
+    (begin-uli-item  . "\\item ")
+    (begin-oli       . "\\startitemize[n]\n")
+    (end-oli         . "\n\\stopitemize")
+    (begin-oli-item  . "\\item ")
+    (begin-dl        . "\\startitemize\n")
+    (end-dl          . "\n\\stopitemize")
+    (begin-ddt       . "\\head ")
+    (end-ddt         . "\n")
+    (begin-verse     . "\\blank[big]")
+    (end-verse-line  . "\\par")
+    (verse-space     . "\\fixedspaces ~~")
+    (end-verse       . "\\blank[big]"))
+  "Strings used for marking up text.
+These cover the most basic kinds of markup, the handling of which
+differs little between the various styles."
+  :type '(alist :key-type symbol :value-type string)
+  :group 'muse-context)
+
+(defcustom muse-context-slides-header
+  "\\usemodule[<lisp>(if (string-equal (muse-publishing-directive \"module\") nil) \"pre-01\" (muse-publishing-directive \"module\"))</lisp>]
+\\usemodule[tikz]
+\\usemodule[newmat]
+\\setupinteraction [state=start]
+\\starttext
+\\TitlePage { <lisp>(muse-publishing-directive \"title\")</lisp>
+\\blank[3*medium]
+\\tfa <lisp>(muse-publishing-directive \"author\")</lisp>
+ \\blank[2*medium]
+  \\tfa <lisp>(muse-publishing-directive \"date\")</lisp>}"
+  "Header for publishing a presentation (slides) using ConTeXt.
+Any of the predefined modules, which are available in the
+tex/context/base directory, can be used by writing a \"module\"
+directive at the top of the muse file; if no such directive is
+provided, module pre-01 is used.  Alternatively, you can use your
+own style (\"mystyle\", in this example) by replacing
+\"\\usemodule[]\" with \"\\input mystyle\".
+
+This may be text or a filename."
+  :type 'string
+  :group 'muse-context)
+
+(defcustom muse-context-slides-markup-strings
+   '((section      . "\\Topic {")
+     (subsection   . "\\page \n{\\bf ")
+     (subsubsection . "{\\em "))
+  "Strings used for marking up text in ConTeXt slides."
+  :type '(alist :key-type symbol :value-type string)
+  :group 'muse-context)
+
+(defcustom muse-context-markup-specials-document
+  '((?\\ . "\\textbackslash{}")
+    (?\_ . "\\textunderscore{}")
+    (?\< . "\\switchtobodyfont[small]")
+    (?\> . "\\switchtobodyfont[big]")
+    (?^  . "\\^")
+    (?\~ . "\\~")
+    (?\@ . "\\@")
+    (?\$ . "\\$")
+    (?\% . "\\%")
+    (?\{ . "\\{")
+    (?\} . "\\}")
+    (?\& . "\\&")
+    (?\# . "\\#"))
+  "A table of characters which must be represented specially.
+These are applied to the entire document, sans already-escaped
+regions."
+  :type '(alist :key-type character :value-type string)
+  :group 'muse-context)
+
+(defcustom muse-context-markup-specials-example
+  '()
+  "A table of characters which must be represented specially.
+These are applied to <example> regions.
+
+With the default interpretation of <example> regions, no specials
+need to be escaped."
+  :type '(alist :key-type character :value-type string)
+  :group 'muse-context)
+
+(defcustom muse-context-markup-specials-literal
+  '()
+  "A table of characters which must be represented specially.
+This applies to =monospaced text= and <code> regions."
+  :type '(alist :key-type character :value-type string)
+  :group 'muse-context)
+
+(defcustom muse-context-markup-specials-url
+  '((?\\ . "\\textbackslash")
+    (?\_ . "\\_")
+    (?\< . "\\<")
+    (?\> . "\\>")
+    (?\$ . "\\$")
+    (?\% . "\\%")
+    (?\{ . "\\{")
+    (?\} . "\\}")
+    (?\& . "\\&")
+    (?\# . "\\#"))
+  "A table of characters which must be represented specially.
+These are applied to URLs."
+  :type '(alist :key-type character :value-type string)
+  :group 'muse-context)
+
+(defcustom muse-context-markup-specials-image
+  '((?\\ . "\\textbackslash")       ; cannot find suitable replacement
+    (?\< . "\\<")
+    (?\> . "\\>")
+    (?\$ . "\\$")
+    (?\% . "\\%")
+    (?\{ . "\\{")
+    (?\} . "\\}")
+    (?\& . "\\&")
+    (?\# . "\\#")                     ; cannot find suitable replacement
+    )
+  "A table of characters which must be represented specially.
+These are applied to image filenames."
+  :type '(alist :key-type character :value-type string)
+  :group 'muse-context)
+
+(defun muse-context-decide-specials (context)
+  "Determine the specials to escape, depending on the CONTEXT argument."
+  (cond ((memq context '(underline emphasis document url-desc verbatim
+                                   footnote))
+         muse-context-markup-specials-document)
+        ((eq context 'image)
+         muse-context-markup-specials-image)
+        ((memq context '(email url))
+         muse-context-markup-specials-url)
+        ((eq context 'literal)
+         muse-context-markup-specials-literal)
+        ((eq context 'example)
+         muse-context-markup-specials-example)
+        (t (error "Invalid context argument '%s' in muse-context" context))))
+
+(defun muse-context-markup-table ()
+  (let* ((table-info (muse-publish-table-fields (match-beginning 0)
+                                                (match-end 0)))
+         (row-len (car table-info))
+         (field-list (cdr table-info)))
+    (when table-info
+      (muse-insert-markup "\\starttable[|"
+                          (mapconcat 'symbol-name (make-vector row-len 'l)
+                                     "|") "|]\n \\HL\n \\VL ")
+      (dolist (fields field-list)
+        (let ((type (car fields)))
+          (setq fields (cdr fields))
+          (when (= type 3)
+            (muse-insert-markup ""))
+          (insert (car fields))
+          (setq fields (cdr fields))
+          (dolist (field fields)
+            (muse-insert-markup " \\VL ")
+            (insert field))
+          (muse-insert-markup "\\VL\\NR\n \\HL\n \\VL ")
+          (when (= type 2)
+            (muse-insert-markup " "))))
+      (muse-insert-markup "\\stoptable\n")
+      (while (search-backward "VL \\stoptable" nil t)
+        (replace-match "stoptable" nil t)))))
+
+(defun muse-context-fixup-dquotes ()
+  "Fixup double quotes."
+  (goto-char (point-min))
+  (let ((open t))
+    (while (search-forward "\"" nil t)
+      (unless (get-text-property (match-beginning 0) 'read-only)
+        (when (or (bobp)
+                  (eq (char-before) ?\n))
+          (setq open t))
+        (if open
+            (progn
+              (replace-match "``")
+              (setq open nil))
+          (replace-match "''")
+          (setq open t))))))
+
+(defcustom muse-context-permit-contents-tag nil
+  "If nil, ignore <contents> tags.  Otherwise, insert table of contents.
+
+Most of the time, it is best to have a table of contents on the
+first page, with a new page immediately following.  To make this
+work with documents published in both HTML and ConTeXt, we need to
+ignore the <contents> tag.
+
+If you don't agree with this, then set this option to non-nil,
+and it will do what you expect."
+  :type 'boolean
+  :group 'muse-context)
+
+(defun muse-context-fixup-citations ()
+  "Replace semicolons in multi-head citations with colons."
+  (goto-char (point-min))
+  (while (re-search-forward "\\\\cite.?\\[" nil t)
+    (let ((start (point))
+          (end (re-search-forward "]")))
+      (save-restriction
+        (narrow-to-region start end)
+        (goto-char (point-min))
+        (while (re-search-forward ";" nil t)
+          (replace-match ","))))))
+
+(defun muse-context-munge-buffer ()
+  (muse-context-fixup-dquotes)
+  (muse-context-fixup-citations)
+  (when (and muse-context-permit-contents-tag
+             muse-publish-generate-contents)
+    (goto-char (car muse-publish-generate-contents))
+    (muse-insert-markup "\\placecontent")))
+
+(defun muse-context-bibliography ()
+  (save-excursion
+    (goto-char (point-min))
+    (if (re-search-forward "\\\\cite.?\\[" nil t)
+        "\\completepublications[criterium=all]"
+      "")))
+
+(defun muse-context-setup-bibliography ()
+  (save-excursion
+    (goto-char (point-min))
+    (if (re-search-forward "\\\\cite.?\\[" nil t)
+        (concat
+         "\\usemodule[bibltx]\n\\setupbibtex [database="
+         (muse-publishing-directive "bibsource") "]")
+      "")))
+
+(defun muse-context-pdf-browse-file (file)
+  (shell-command (concat "open " file)))
+
+(defun muse-context-pdf-generate (file output-path final-target)
+  (apply
+   #'muse-publish-transform-output
+   file output-path final-target "PDF"
+   (function
+    (lambda (file output-path)
+      (let* ((fnd (file-name-directory output-path))
+             (command (format "%s \"%s\""
+                              muse-context-pdf-program
+                              (file-relative-name file fnd)))
+             (times 0)
+             (default-directory fnd)
+             result)
+        ;; XEmacs can sometimes return a non-number result.  We'll err
+        ;; on the side of caution by continuing to attempt to generate
+        ;; the PDF if this happens and treat the final result as
+        ;; successful.
+        (while (and (< times 2)
+                    (or (not (numberp result))
+                        (not (eq result 0))
+                        ;; table of contents takes 2 passes
+;;                         (file-readable-p
+;;                          (muse-replace-regexp-in-string
+;;                           "\\.tex\\'" ".toc" file t t))
+                        ))
+          (setq result (shell-command command)
+                times (1+ times)))
+        (if (or (not (numberp result))
+                (eq result 0))
+            t
+          nil))))
+   muse-context-pdf-cruft))
+
+(muse-define-style "context"
+                   :suffix    'muse-context-extension
+                   :regexps   'muse-context-markup-regexps
+                   :functions 'muse-context-markup-functions
+                   :strings   'muse-context-markup-strings
+                   :specials  'muse-context-decide-specials
+                   :after     'muse-context-munge-buffer
+                   :header    'muse-context-header
+                   :footer    'muse-context-footer
+                   :browser   'find-file)
+
+(muse-derive-style "context-pdf" "context"
+                   :final   'muse-context-pdf-generate
+                   :browser 'muse-context-pdf-browse-file
+                   :link-suffix 'muse-context-pdf-extension
+                   :osuffix 'muse-context-pdf-extension)
+
+(muse-derive-style "context-slides" "context"
+                   :header  'muse-context-slides-header
+                   :strings 'muse-context-slides-markup-strings)
+
+(muse-derive-style "context-slides-pdf" "context-pdf"
+                   :header  'muse-context-slides-header
+                   :strings 'muse-context-slides-markup-strings)
+
+(provide 'muse-context)
+
+;;; muse-context.el ends here
diff --git a/packages/muse/muse-docbook.el b/packages/muse/muse-docbook.el
new file mode 100644 (file)
index 0000000..a54089f
--- /dev/null
@@ -0,0 +1,352 @@
+;;; muse-docbook.el --- publish DocBook files
+
+;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;;; Contributors:
+
+;; Dale P. Smith (dpsm AT en DOT com) improved the markup
+;; significantly and made many valuable suggestions.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Muse DocBook XML Publishing
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'muse-publish)
+(require 'muse-regexps)
+(require 'muse-xml-common)
+
+(defgroup muse-docbook nil
+  "Options controlling the behavior of Muse DocBook XML publishing.
+See `muse-docbook' for more information."
+  :group 'muse-publish)
+
+(defcustom muse-docbook-extension ".xml"
+  "Default file extension for publishing DocBook XML files."
+  :type 'string
+  :group 'muse-docbook)
+
+(defcustom muse-docbook-header
+  "<?xml version=\"1.0\" encoding=\"<lisp>
+  (muse-docbook-encoding)</lisp>\"?>
+<!DOCTYPE article PUBLIC \"-//OASIS//DTD DocBook V4.2//EN\"
+                  \"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd\"<lisp>(muse-docbook-entities)</lisp>>
+<article>
+  <articleinfo>
+    <title><lisp>(muse-publishing-directive \"title\")</lisp></title>
+    <author><lisp>(muse-docbook-get-author
+                    (muse-publishing-directive \"author\"))</lisp></author>
+    <pubdate><lisp>(muse-publishing-directive \"date\")</lisp></pubdate>
+  </articleinfo>
+  <!-- Page published by Emacs Muse begins here -->\n"
+  "Header used for publishing DocBook XML files.
+This may be text or a filename."
+  :type 'string
+  :group 'muse-docbook)
+
+(defcustom muse-docbook-footer "
+  <!-- Page published by Emacs Muse ends here -->
+<lisp>(muse-docbook-bibliography)</lisp></article>\n"
+  "Footer used for publishing DocBook XML files.
+This may be text or a filename."
+  :type 'string
+  :group 'muse-docbook)
+
+(defcustom muse-docbook-markup-regexps
+  `(;; Beginning of doc, end of doc, or plain paragraph separator
+    (10000 ,(concat "\\(\\(\n\\(?:[" muse-regexp-blank "]*\n\\)*"
+                    "\\([" muse-regexp-blank "]*\n\\)\\)"
+                    "\\|\\`\\s-*\\|\\s-*\\'\\)")
+           3 muse-docbook-markup-paragraph))
+  "List of markup rules for publishing a Muse page to DocBook XML.
+For more on the structure of this list, see `muse-publish-markup-regexps'."
+  :type '(repeat (choice
+                  (list :tag "Markup rule"
+                        integer
+                        (choice regexp symbol)
+                        integer
+                        (choice string function symbol))
+                  function))
+  :group 'muse-docbook)
+
+(defcustom muse-docbook-markup-functions
+  '((anchor . muse-xml-markup-anchor)
+    (table . muse-xml-markup-table))
+  "An alist of style types to custom functions for that kind of text.
+For more on the structure of this list, see
+`muse-publish-markup-functions'."
+  :type '(alist :key-type symbol :value-type function)
+  :group 'muse-docbook)
+
+(defcustom muse-docbook-markup-strings
+  '((image-with-desc . "<mediaobject>
+<imageobject>
+<imagedata fileref=\"%1%.%2%\" format=\"%2%\" />
+</imageobject>
+<caption><para>%3%</para></caption>
+</mediaobject>")
+    (image           . "<inlinemediaobject><imageobject>
+<imagedata fileref=\"%1%.%2%\" format=\"%2%\" />
+</imageobject></inlinemediaobject>")
+    (image-link      . "<ulink url=\"%1%\"><inlinemediaobject><imageobject>
+<imagedata fileref=\"%2%.%3%\" format=\"%3%\" />
+</imageobject></inlinemediaobject></ulink>")
+    (anchor-ref      . "<link linkend=\"%s\">%s</link>")
+    (url             . "<ulink url=\"%s\">%s</ulink>")
+    (link            . "<ulink url=\"%s\">%s</ulink>")
+    (link-and-anchor . "<ulink url=\"%s#%s\">%s</ulink>")
+    (email-addr      . "<email>%s</email>")
+    (anchor          . "<anchor id=\"%s\" />\n")
+    (emdash          . "%s&mdash;%s")
+    (comment-begin   . "<!-- ")
+    (comment-end     . " -->")
+    (rule            . "")
+    (no-break-space  . "&nbsp;")
+    (enddots         . "....")
+    (dots            . "...")
+    (section         . "<section><title>")
+    (section-end     . "</title>")
+    (subsection      . "<section><title>")
+    (subsection-end  . "</title>")
+    (subsubsection   . "<section><title>")
+    (subsubsection-end . "</title>")
+    (section-other   . "<section><title>")
+    (section-other-end . "</title>")
+    (section-close   . "</section>")
+    (footnote        . "<footnote><para>")
+    (footnote-end    . "</para></footnote>")
+    (begin-underline . "")
+    (end-underline   . "")
+    (begin-literal   . "<systemitem>")
+    (end-literal     . "</systemitem>")
+    (begin-emph      . "<emphasis>")
+    (end-emph        . "</emphasis>")
+    (begin-more-emph . "<emphasis role=\"strong\">")
+    (end-more-emph   . "</emphasis>")
+    (begin-most-emph . "<emphasis role=\"strong\"><emphasis>")
+    (end-most-emph   . "</emphasis></emphasis>")
+    (begin-verse     . "<literallayout>\n")
+    (verse-space     . "  ")
+    (end-verse       . "</literallayout>")
+    (begin-example   . "<programlisting>")
+    (end-example     . "</programlisting>")
+    (begin-center    . "<para role=\"centered\">\n")
+    (end-center      . "\n</para>")
+    (begin-quote     . "<blockquote>\n")
+    (end-quote       . "\n</blockquote>")
+    (begin-cite      . "<citation role=\"%s\">")
+    (begin-cite-author . "<citation role=\"%s\">A:")
+    (begin-cite-year . "<citation role=\"%s\">Y:")
+    (end-cite        . "</citation>")
+    (begin-quote-item . "<para>")
+    (end-quote-item  . "</para>")
+    (begin-uli       . "<itemizedlist mark=\"bullet\">\n")
+    (end-uli         . "\n</itemizedlist>")
+    (begin-uli-item  . "<listitem><para>")
+    (end-uli-item    . "</para></listitem>")
+    (begin-oli       . "<orderedlist>\n")
+    (end-oli         . "\n</orderedlist>")
+    (begin-oli-item  . "<listitem><para>")
+    (end-oli-item    . "</para></listitem>")
+    (begin-dl        . "<variablelist>\n")
+    (end-dl          . "\n</variablelist>")
+    (begin-dl-item   . "<varlistentry>\n")
+    (end-dl-item     . "\n</varlistentry>")
+    (begin-ddt       . "<term>")
+    (end-ddt         . "</term>")
+    (begin-dde       . "<listitem><para>")
+    (end-dde         . "</para></listitem>")
+    (begin-table     . "<informaltable>\n")
+    (end-table       . "</informaltable>")
+    (begin-table-group . "  <tgroup cols='%s'>\n")
+    (end-table-group . "  </tgroup>\n")
+    (begin-table-row . "    <row>\n")
+    (end-table-row   . "    </row>\n")
+    (begin-table-entry . "      <entry>")
+    (end-table-entry . "</entry>\n"))
+  "Strings used for marking up text.
+These cover the most basic kinds of markup, the handling of which
+differs little between the various styles."
+  :type '(alist :key-type symbol :value-type string)
+  :group 'muse-docbook)
+
+(defcustom muse-docbook-encoding-default 'utf-8
+  "The default Emacs buffer encoding to use in published files.
+This will be used if no special characters are found."
+  :type 'symbol
+  :group 'muse-docbook)
+
+(defcustom muse-docbook-charset-default "utf-8"
+  "The default DocBook XML charset to use if no translation is
+found in `muse-docbook-encoding-map'."
+  :type 'string
+  :group 'muse-docbook)
+
+(defun muse-docbook-encoding ()
+  (muse-xml-transform-content-type
+   (or (and (boundp 'buffer-file-coding-system)
+            buffer-file-coding-system)
+       muse-docbook-encoding-default)
+   muse-docbook-charset-default))
+
+(defun muse-docbook-markup-paragraph ()
+  (catch 'bail-out
+    (let ((end (copy-marker (match-end 0) t)))
+      (goto-char (match-beginning 0))
+      (when (save-excursion
+              (save-match-data
+                (and (not (get-text-property (max (point-min) (1- (point)))
+                                             'muse-no-paragraph))
+                     (re-search-backward
+                      "<\\(/?\\)\\(para\\|footnote\\|literallayout\\)[ >]"
+                      nil t)
+                     (cond ((string= (match-string 2) "literallayout")
+                            (and (not (string= (match-string 1) "/"))
+                                 (throw 'bail-out t)))
+                           ((string= (match-string 2) "para")
+                            (and
+                             (not (string= (match-string 1) "/"))
+                             ;; don't mess up nested lists
+                             (not (and (muse-looking-back "<listitem>")
+                                       (throw 'bail-out t)))))
+                           ((string= (match-string 2) "footnote")
+                            (string= (match-string 1) "/"))
+                           (t nil)))))
+        (when (get-text-property (1- (point)) 'muse-end-list)
+          (goto-char (previous-single-property-change (1- (point))
+                                                      'muse-end-list)))
+        (muse-insert-markup "</para>"))
+      (goto-char end))
+    (cond
+     ((eobp)
+      (unless (bolp)
+        (insert "\n")))
+     ((get-text-property (point) 'muse-no-paragraph)
+      (forward-char 1)
+      nil)
+     ((eq (char-after) ?\<)
+      (when (looking-at (concat "<\\(emphasis\\|systemitem\\|inlinemediaobject"
+                                "\\|u?link\\|anchor\\|email\\)[ >]"))
+        (muse-insert-markup "<para>")))
+     (t
+      (muse-insert-markup "<para>")))))
+
+(defun muse-docbook-get-author (&optional author)
+  "Split the AUTHOR directive into separate fields.
+AUTHOR should be of the form: \"Firstname Other Names Lastname\",
+and anything after `Firstname' is optional."
+  (setq author (save-match-data (split-string author)))
+  (let ((num-el (length author)))
+    (cond ((eq num-el 1)
+           (concat "<firstname>" (car author) "</firstname>"))
+          ((eq num-el 2)
+           (concat "<firstname>" (nth 0 author) "</firstname>"
+                   "<surname>" (nth 1 author) "</surname>"))
+          ((eq num-el 3)
+           (concat "<firstname>" (nth 0 author) "</firstname>"
+                   "<othername>" (nth 1 author) "</othername>"
+                   "<surname>" (nth 2 author) "</surname>"))
+          (t
+           (let (first last)
+             (setq first (car author))
+             (setq author (nreverse (cdr author)))
+             (setq last (car author))
+             (setq author (nreverse (cdr author)))
+             (concat "<firstname>" first "</firstname>"
+                     "<othername>"
+                     (mapconcat 'identity author " ")
+                     "</othername>"
+                     "<surname>" last "</surname>"))))))
+
+(defun muse-docbook-fixup-images ()
+  (goto-char (point-min))
+  (while (re-search-forward (concat "<imagedata fileref=\"[^\"]+\""
+                                    " format=\"\\([^\"]+\\)\" />$")
+                            nil t)
+    (replace-match (upcase (match-string 1)) t t nil 1)))
+
+(defun muse-docbook-fixup-citations ()
+  ;; remove the role attribute if there is no role
+  (goto-char (point-min))
+  (while (re-search-forward "<\\(citation role=\"nil\"\\)>" nil t)
+    (replace-match "citation" t t nil 1))
+  ;; replace colons in multi-head citations with semicolons
+  (goto-char (point-min))
+  (while (re-search-forward "<citation.*>" nil t)
+    (let ((start (point))
+          (end (re-search-forward "</citation>")))
+      (save-restriction
+        (narrow-to-region start end)
+        (goto-char (point-min))
+        (while (re-search-forward "," nil t)
+          (replace-match ";"))))))
+
+(defun muse-docbook-munge-buffer ()
+  (muse-docbook-fixup-images)
+  (muse-docbook-fixup-citations))
+
+(defun muse-docbook-entities ()
+  (save-excursion
+    (goto-char (point-min))
+    (if (re-search-forward "<citation" nil t)
+        (concat
+         " [\n<!ENTITY bibliography SYSTEM \""
+         (if (string-match ".short$" (muse-page-name))
+             (substring (muse-page-name) 0 -6)
+           (muse-page-name))
+         ".bib.xml\">\n]")
+      "")))
+
+(defun muse-docbook-bibliography ()
+  (save-excursion
+    (goto-char (point-min))
+    (if (re-search-forward "<citation" nil t)
+        "&bibliography;\n"
+      "")))
+
+(defun muse-docbook-finalize-buffer ()
+  (when (boundp 'buffer-file-coding-system)
+    (when (memq buffer-file-coding-system '(no-conversion undecided-unix))
+      ;; make it agree with the default charset
+      (setq buffer-file-coding-system muse-docbook-encoding-default))))
+
+;;; Register the Muse DocBook XML Publisher
+
+(muse-define-style "docbook"
+                   :suffix     'muse-docbook-extension
+                   :regexps    'muse-docbook-markup-regexps
+                   :functions  'muse-docbook-markup-functions
+                   :strings    'muse-docbook-markup-strings
+                   :specials   'muse-xml-decide-specials
+                   :before-end 'muse-docbook-munge-buffer
+                   :after      'muse-docbook-finalize-buffer
+                   :header     'muse-docbook-header
+                   :footer     'muse-docbook-footer
+                   :browser    'find-file)
+
+(provide 'muse-docbook)
+
+;;; muse-docbook.el ends here
diff --git a/packages/muse/muse-groff.el b/packages/muse/muse-groff.el
new file mode 100644 (file)
index 0000000..7218652
--- /dev/null
@@ -0,0 +1,274 @@
+;;; muse-groff.el --- publish groff -mom -mwww files
+
+;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; Author: Andrew J. Korty (ajk AT iu DOT edu)
+;; Date: Tue 5-Jul-2005
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;;; Contributors:
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Muse Publishing Using groff -mom -mwww
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'muse-publish)
+
+(defgroup muse-groff nil
+  "Rules for marking up a Muse file with groff -mom -mwww macros."
+  :group 'muse-publish)
+
+(defcustom muse-groff-extension ".groff"
+  "Default file extension for publishing groff -mom -mwww files."
+  :type 'string
+  :group 'muse-groff)
+
+(defcustom muse-groff-pdf-extension ".pdf"
+  "Default file extension for publishing groff -mom -mwww files to PDF."
+  :type 'string
+  :group 'muse-groff)
+
+(defcustom muse-groff-header
+  ".TITLE \"<lisp>(muse-publishing-directive \"title\")</lisp>\"
+.SUBTITLE \"<lisp>(muse-publishing-directive \"date\")</lisp>\"
+.AUTHOR \"<lisp>(muse-publishing-directive \"author\")</lisp>\"
+.PRINTSTYLE TYPESET
+.de list
+.    LIST \\$1
+.    SHIFT_LIST \\$2
+..
+.PARA_INDENT 0
+.START
+<lisp>(and muse-publish-generate-contents \".TOC\n\")</lisp>\n"
+  "Header used for publishing groff -mom -mwww files."
+  :type '(choice string file)
+  :group 'muse-groff)
+
+(defcustom muse-groff-footer " "
+  "Footer used for publishing groff -mom -mwww files."
+  :type '(choice string file)
+  :group 'muse-groff)
+
+(defcustom muse-groff-markup-regexps
+  `((10400 ,(concat "\\(\n</\\(blockquote\\|center\\)>\\)?\n"
+                    "\\(["
+                    muse-regexp-blank
+                    "]*\n\\)+\\(<\\(blockquote\\|center\\)>\n\\)?")
+           0 muse-groff-markup-paragraph))
+"List of markup regexps for identifying regions in a Muse page.
+For more on the structure of this list, see `muse-publish-markup-regexps'."
+  :type '(repeat (choice
+                  (list :tag "Markup rule"
+                        integer
+                        (choice regexp symbol)
+                        integer
+                        (choice string function symbol))
+                  function))
+  :group 'muse-groff)
+
+(defcustom muse-groff-markup-functions
+  '((table . muse-groff-markup-table))
+  "An alist of style types to custom functions for that kind of text.
+For more on the structure of this list, see
+`muse-publish-markup-functions'."
+  :type '(alist :key-type symbol :value-type function)
+  :group 'muse-groff)
+
+(defcustom muse-groff-markup-tags
+  '()
+  "A list of tag specifications, for specially marking up GROFF."
+  :type '(repeat (list (string :tag "Markup tag")
+                       (boolean :tag "Expect closing tag" :value t)
+                       (boolean :tag "Parse attributes" :value nil)
+                       (boolean :tag "Nestable" :value nil)
+                       function))
+  :group 'muse-groff)
+
+(defcustom muse-groff-markup-strings
+  `((image-with-desc . "\n.MPIMG -R %s.%s\n")
+    (image           . "\n.MPIMG -R %s.%s\n")
+    (image-link      . "\n.\\\" %s\n.MPIMG -R %s.%s")
+    (url             . "\n.URL %s %s\n\\z")
+    (link            . "\n.URL %s %s\n\\z")
+    (email-addr      . "\f[C]%s\f[]")
+    (emdash          . "\\(em")
+    (rule            . "\n.RULE\n")
+    (no-break-space  . "\\h")
+    (line-break      . "\\p")
+    (enddots         . "....")
+    (dots            . "...")
+;;     (part            . "\\part{")
+;;     (part-end        . "}")
+;;     (chapter         . "\\chapter{")
+;;     (chapter-end     . "}")
+    (section         . ".HEAD \"")
+    (section-end     . "\"")
+    (subsection      . ".SUBHEAD \"")
+    (subsection-end  . "\"")
+    (subsubsection   . ".PARAHEAD \"")
+    (subsubsection-end . "\"")
+;;     (footnote        . "\\c\n.FOOTNOTE\n")
+;;     (footnote-end    . "\n.FOOTNOTE OFF\n")
+;;     (footnotemark    . "\\footnotemark[%d]")
+;;     (footnotetext    . "\\footnotetext[%d]{")
+;;     (footnotetext-end . "}")
+    (begin-underline . "\n.UNDERSCORE \"")
+    (end-underline   . "\"\n")
+    (begin-literal   . "\\fC")
+    (end-literal     . "\\fP")
+    (begin-emph      . "\\fI")
+    (end-emph        . "\\fP")
+    (begin-more-emph . "\\fB")
+    (end-more-emph   . "\\fP")
+    (begin-most-emph . "\\f(BI")
+    (end-most-emph   . "\\fP")
+    (begin-verse     . ".QUOTE")
+    (end-verse       . ".QUOTE OFF")
+    (begin-center    . "\n.CENTER\n")
+    (end-center      . "\n.QUAD L\n")
+    (begin-example   . ,(concat
+                         ".QUOTE_FONT CR\n.QUOTE_INDENT 1\n"".QUOTE_SIZE -2\n"
+                         ".UNDERLINE_QUOTES OFF\n.QUOTE"))
+    (end-example     . ".QUOTE OFF")
+    (begin-quote     . ".BLOCKQUOTE")
+    (end-quote       . ".BLOCKQUOTE OFF")
+    (begin-cite     . "")
+    (begin-cite-author . "")
+    (begin-cite-year . "")
+    (end-cite        . "")
+    (begin-uli       . ".list BULLET\n.SHIFT_LIST 2m\n.ITEM\n")
+    (end-uli         . "\n.LIST OFF")
+    (begin-oli       . ".list DIGIT\n.SHIFT_LIST 2m\n.ITEM\n")
+    (end-oli         . "\n.LIST OFF")
+    (begin-ddt       . "\\fB")
+    (begin-dde       . "\\fP\n.IR 4P\n")
+    (end-ddt         . ".IRX CLEAR"))
+  "Strings used for marking up text.
+These cover the most basic kinds of markup, the handling of which
+differs little between the various styles."
+  :type '(alist :key-type symbol :value-type string)
+  :group 'muse-groff)
+
+(defcustom muse-groff-markup-specials
+  '((?\\ . "\\e"))
+  "A table of characters which must be represented specially."
+  :type '(alist :key-type character :value-type string)
+  :group 'muse-groff)
+
+(defun muse-groff-markup-paragraph ()
+  (let ((end (copy-marker (match-end 0) t)))
+    (goto-char (1+ (match-beginning 0)))
+    (delete-region (point) end)
+    (unless (looking-at "\.\\(\\(\\(SUB\\|PARA\\)?HEAD \\)\\|RULE$\\)")
+      (muse-insert-markup ".ALD .5v\n.PP\n.ne 2\n"))))
+
+(defun muse-groff-protect-leading-chars ()
+  "Protect leading periods and apostrophes from being interpreted as
+command characters."
+  (while (re-search-forward "^[.']" nil t)
+    (replace-match "\\\\&\\&" t)))
+
+(defun muse-groff-concat-lists ()
+  "Join like lists."
+  (let ((type "")
+        arg begin)
+    (while (re-search-forward "^\.LIST[ \t]+\\(.*\\)\n" nil t)
+      (setq arg (match-string 1))
+      (if (string= arg "OFF")
+          (setq begin (match-beginning 0))
+        (if (and begin (string= type arg))
+            (delete-region begin (match-end 0))
+          (setq type arg
+                begin 0))))))
+
+(defun muse-groff-fixup-dquotes ()
+  "Fixup double quotes."
+  (let ((open t))
+    (while (search-forward "\"" nil t)
+      (unless (get-text-property (match-beginning 0) 'read-only)
+        (if (and (bolp) (eq (char-before) ?\n))
+            (setq open t))
+        (if open
+            (progn
+              (replace-match "``")
+              (setq open nil))
+          (replace-match "''")
+          (setq open t))))))
+
+(defun muse-groff-prepare-buffer ()
+  (goto-char (point-min))
+  (muse-groff-protect-leading-chars))
+
+(defun muse-groff-munge-buffer ()
+  (goto-char (point-min))
+  (muse-groff-concat-lists))
+
+(defun muse-groff-pdf-browse-file (file)
+  (shell-command (concat "open " file)))
+
+(defun muse-groff-pdf-generate (file output-path final-target)
+  (muse-publish-transform-output
+   file output-path final-target "PDF"
+   (function
+    (lambda (file output-path)
+      (let ((command
+             (format
+              (concat "file=%s; ext=%s; cd %s && cp $file$ext $file.ref && "
+                      "groff -mom -mwww -t $file$ext > $file.ps && "
+                      "pstopdf $file.ps")
+              (file-name-sans-extension file)
+              muse-groff-extension
+              (file-name-directory output-path))))
+        (shell-command command))))
+   ".ps"))
+
+;;; Register the Muse GROFF Publisher
+
+(muse-define-style "groff"
+                   :suffix    'muse-groff-extension
+                   :regexps   'muse-groff-markup-regexps
+;;;               :functions 'muse-groff-markup-functions
+                   :strings   'muse-groff-markup-strings
+                   :tags      'muse-groff-markup-tags
+                   :specials  'muse-groff-markup-specials
+                   :before    'muse-groff-prepare-buffer
+                   :before-end 'muse-groff-munge-buffer
+                   :header    'muse-groff-header
+                   :footer    'muse-groff-footer
+                   :browser   'find-file)
+
+(muse-derive-style "groff-pdf" "groff"
+                   :final   'muse-groff-pdf-generate
+                   :browser 'muse-groff-pdf-browse-file
+                   :osuffix 'muse-groff-pdf-extension)
+
+(provide 'muse-groff)
+
+;;; muse-groff.el ends here
+;;
+;; Local Variables:
+;; indent-tabs-mode: nil
+;; End:
diff --git a/packages/muse/muse-html.el b/packages/muse/muse-html.el
new file mode 100644 (file)
index 0000000..6a9356b
--- /dev/null
@@ -0,0 +1,754 @@
+;;; muse-html.el --- publish to HTML and XHTML
+
+;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;;; Contributors:
+
+;; Zhiqiang Ye (yezq AT mail DOT cbi DOT pku DOT edu DOT cn) suggested
+;; appending an 'encoding="..."' fragment to the first line of the
+;; sample publishing header so that when editing the resulting XHTML
+;; file, Emacs would use the proper encoding.
+
+;; Sun Jiyang (sunyijiang AT gmail DOT com) came up with the idea for
+;; the <src> tag and provided an implementation for emacs-wiki.
+
+;; Charles Wang (wcy123 AT gmail DOT com) provided an initial
+;; implementation of the <src> tag for Muse.
+
+;; Clinton Ebadi (clinton AT unknownlamer DOT org) provided further
+;; ideas for the implementation of the <src> tag.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Muse HTML Publishing
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'muse-publish)
+(require 'muse-regexps)
+(require 'muse-xml-common)
+
+(defgroup muse-html nil
+  "Options controlling the behavior of Muse HTML publishing."
+  :group 'muse-publish)
+
+(defcustom muse-html-extension ".html"
+  "Default file extension for publishing HTML files."
+  :type 'string
+  :group 'muse-html)
+
+(defcustom muse-xhtml-extension ".html"
+  "Default file extension for publishing XHTML files."
+  :type 'string
+  :group 'muse-html)
+
+(defcustom muse-html-style-sheet
+  "<style type=\"text/css\">
+body {
+  background: white; color: black;
+  margin-left: 3%; margin-right: 7%;
+}
+
+p { margin-top: 1% }
+p.verse { margin-left: 3% }
+
+.example { margin-left: 3% }
+
+h2 {
+  margin-top: 25px;
+  margin-bottom: 0px;
+}
+h3 { margin-bottom: 0px; }
+    </style>"
+  "Store your stylesheet definitions here.
+This is used in `muse-html-header'.
+You can put raw CSS in here or a <link> tag to an external stylesheet.
+This text may contain <lisp> markup tags.
+
+An example of using <link> is as follows.
+
+<link rel=\"stylesheet\" type=\"text/css\" charset=\"utf-8\" media=\"all\" href=\"/default.css\">"
+  :type 'string
+  :group 'muse-html)
+
+(defcustom muse-xhtml-style-sheet
+  "<style type=\"text/css\">
+body {
+  background: white; color: black;
+  margin-left: 3%; margin-right: 7%;
+}
+
+p { margin-top: 1% }
+p.verse { margin-left: 3% }
+
+.example { margin-left: 3% }
+
+h2 {
+  margin-top: 25px;
+  margin-bottom: 0px;
+}
+h3 { margin-bottom: 0px; }
+    </style>"
+  "Store your stylesheet definitions here.
+This is used in `muse-xhtml-header'.
+You can put raw CSS in here or a <link> tag to an external stylesheet.
+This text may contain <lisp> markup tags.
+
+An example of using <link> is as follows.
+
+<link rel=\"stylesheet\" type=\"text/css\" charset=\"utf-8\" media=\"all\" href=\"/default.css\" />"
+  :type 'string
+  :group 'muse-html)
+
+(defcustom muse-html-header
+  "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
+<html>
+  <head>
+    <title><lisp>
+  (concat (muse-publishing-directive \"title\")
+          (let ((author (muse-publishing-directive \"author\")))
+            (if (not (string= author (user-full-name)))
+                (concat \" (by \" author \")\"))))</lisp></title>
+    <meta name=\"generator\" content=\"muse.el\">
+    <meta http-equiv=\"<lisp>muse-html-meta-http-equiv</lisp>\"
+          content=\"<lisp>muse-html-meta-content-type</lisp>\">
+    <lisp>
+      (let ((maintainer (muse-style-element :maintainer)))
+        (when maintainer
+          (concat \"<link rev=\\\"made\\\" href=\\\"\" maintainer \"\\\">\")))
+    </lisp><lisp>
+      (muse-style-element :style-sheet muse-publishing-current-style)
+    </lisp>
+  </head>
+  <body>
+    <h1><lisp>
+  (concat (muse-publishing-directive \"title\")
+          (let ((author (muse-publishing-directive \"author\")))
+            (if (not (string= author (user-full-name)))
+                (concat \" (by \" author \")\"))))</lisp></h1>
+    <!-- Page published by Emacs Muse begins here -->\n"
+  "Header used for publishing HTML files.  This may be text or a filename."
+  :type 'string
+  :group 'muse-html)
+
+(defcustom muse-html-footer "
+<!-- Page published by Emacs Muse ends here -->
+  </body>
+</html>\n"
+  "Footer used for publishing HTML files.  This may be text or a filename."
+  :type 'string
+  :group 'muse-html)
+
+(defcustom muse-xhtml-header
+  "<?xml version=\"1.0\" encoding=\"<lisp>
+  (muse-html-encoding)</lisp>\"?>
+<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"
+    \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
+<html xmlns=\"http://www.w3.org/1999/xhtml\">
+  <head>
+    <title><lisp>
+  (concat (muse-publishing-directive \"title\")
+          (let ((author (muse-publishing-directive \"author\")))
+            (if (not (string= author (user-full-name)))
+                (concat \" (by \" author \")\"))))</lisp></title>
+    <meta name=\"generator\" content=\"muse.el\" />
+    <meta http-equiv=\"<lisp>muse-html-meta-http-equiv</lisp>\"
+          content=\"<lisp>muse-html-meta-content-type</lisp>\" />
+    <lisp>
+      (let ((maintainer (muse-style-element :maintainer)))
+        (when maintainer
+          (concat \"<link rev=\\\"made\\\" href=\\\"\" maintainer \"\\\" />\")))
+    </lisp><lisp>
+      (muse-style-element :style-sheet muse-publishing-current-style)
+    </lisp>
+  </head>
+  <body>
+    <h1><lisp>
+  (concat (muse-publishing-directive \"title\")
+          (let ((author (muse-publishing-directive \"author\")))
+            (if (not (string= author (user-full-name)))
+                (concat \" (by \" author \")\"))))</lisp></h1>
+    <!-- Page published by Emacs Muse begins here -->\n"
+  "Header used for publishing XHTML files.  This may be text or a filename."
+  :type 'string
+  :group 'muse-html)
+
+(defcustom muse-xhtml-footer "
+<!-- Page published by Emacs Muse ends here -->
+  </body>
+</html>\n"
+  "Footer used for publishing XHTML files.  This may be text or a filename."
+  :type 'string
+  :group 'muse-html)
+
+(defcustom muse-html-anchor-on-word nil
+  "When true, anchors surround the closest word. This allows you
+to select them in a browser (i.e. for pasting), but has the
+side-effect of marking up headers in multiple colors if your
+header style is different from your link style."
+  :type 'boolean
+  :group 'muse-html)
+
+(defcustom muse-html-table-attributes
+  " class=\"muse-table\" border=\"2\" cellpadding=\"5\""
+  "The attribute to be used with HTML <table> tags.
+Note that Muse supports insertion of raw HTML tags, as long
+as you wrap the region in <literal></literal>."
+  :type 'string
+  :group 'muse-html)
+
+(defcustom muse-html-markup-regexps
+  `(;; Beginning of doc, end of doc, or plain paragraph separator
+    (10000 ,(concat "\\(\\(\n\\(?:[" muse-regexp-blank "]*\n\\)*"
+                    "\\([" muse-regexp-blank "]*\n\\)\\)"
+                    "\\|\\`\\s-*\\|\\s-*\\'\\)")
+           ;; this is somewhat repetitive because we only require the
+           ;; line just before the paragraph beginning to be not
+           ;; read-only
+           3 muse-html-markup-paragraph))
+  "List of markup rules for publishing a Muse page to HTML.
+For more on the structure of this list, see `muse-publish-markup-regexps'."
+  :type '(repeat (choice
+                  (list :tag "Markup rule"
+                        integer
+                        (choice regexp symbol)
+                        integer
+                        (choice string function symbol))
+                  function))
+  :group 'muse-html)
+
+(defcustom muse-html-markup-functions
+  '((anchor   . muse-html-markup-anchor)
+    (table    . muse-html-markup-table)
+    (footnote . muse-html-markup-footnote))
+  "An alist of style types to custom functions for that kind of text.
+For more on the structure of this list, see
+`muse-publish-markup-functions'."
+  :type '(alist :key-type symbol :value-type function)
+  :group 'muse-html)
+
+(defcustom muse-html-markup-strings
+  '((image-with-desc . "<table class=\"image\" width=\"100%%\">
+  <tr><td align=\"center\"><img src=\"%1%.%2%\" alt=\"%3%\"></td></tr>
+  <tr><td align=\"center\" class=\"image-caption\">%3%</td></tr>
+</table>")
+    (image           . "<img src=\"%s.%s\" alt=\"\">")
+    (image-link      . "<a class=\"image-link\" href=\"%s\">
+<img src=\"%s.%s\"></a>")
+    (anchor-ref      . "<a href=\"#%s\">%s</a>")
+    (url             . "<a href=\"%s\">%s</a>")
+    (link            . "<a href=\"%s\">%s</a>")
+    (link-and-anchor . "<a href=\"%s#%s\">%s</a>")
+    (email-addr      . "<a href=\"mailto:%s\">%s</a>")
+    (anchor          . "<a name=\"%1%\" id=\"%1%\">")
+    (emdash          . "%s&mdash;%s")
+    (comment-begin   . "<!-- ")
+    (comment-end     . " -->")
+    (rule            . "<hr>")
+    (fn-sep          . "<hr>\n")
+    (no-break-space  . "&nbsp;")
+    (line-break      . "<br>")
+    (enddots         . "....")
+    (dots            . "...")
+    (section         . "<h2>")
+    (section-end     . "</h2>")
+    (subsection      . "<h3>")
+    (subsection-end  . "</h3>")
+    (subsubsection   . "<h4>")
+    (subsubsection-end . "</h4>")
+    (section-other   . "<h5>")
+    (section-other-end . "</h5>")
+    (begin-underline . "<u>")
+    (end-underline   . "</u>")
+    (begin-literal   . "<code>")
+    (end-literal     . "</code>")
+    (begin-cite      . "<span class=\"citation\">")
+    (begin-cite-author . "<span class=\"citation-author\">")
+    (begin-cite-year . "<span class=\"citation-year\">")
+    (end-cite        . "</span>")
+    (begin-emph      . "<em>")
+    (end-emph        . "</em>")
+    (begin-more-emph . "<strong>")
+    (end-more-emph   . "</strong>")
+    (begin-most-emph . "<strong><em>")
+    (end-most-emph   . "</em></strong>")
+    (begin-verse     . "<p class=\"verse\">\n")
+    (verse-space     . "&nbsp;&nbsp;")
+    (end-verse-line  . "<br>")
+    (end-last-stanza-line . "<br>")
+    (empty-verse-line . "<br>")
+    (end-verse       . "</p>")
+    (begin-example   . "<pre class=\"example\">")
+    (end-example     . "</pre>")
+    (begin-center    . "<center>\n<p>")
+    (end-center      . "</p>\n</center>")
+    (begin-quote     . "<blockquote>\n")
+    (end-quote       . "\n</blockquote>")
+    (begin-quote-item . "<p class=\"quoted\">")
+    (end-quote-item  . "</p>")
+    (begin-uli       . "<ul>\n")
+    (end-uli         . "\n</ul>")
+    (begin-uli-item  . "<li>")
+    (end-uli-item    . "</li>")
+    (begin-oli       . "<ol>\n")
+    (end-oli         . "\n</ol>")
+    (begin-oli-item  . "<li>")
+    (end-oli-item    . "</li>")
+    (begin-dl        . "<dl>\n")
+    (end-dl          . "\n</dl>")
+    (begin-ddt       . "<dt><strong>")
+    (end-ddt         . "</strong></dt>")
+    (begin-dde       . "<dd>")
+    (end-dde         . "</dd>")
+    (begin-table     . "<table%s>\n")
+    (end-table       . "</table>")
+    (begin-table-row . "    <tr>\n")
+    (end-table-row   . "    </tr>\n")
+    (begin-table-entry . "      <%s>")
+    (end-table-entry . "</%s>\n"))
+  "Strings used for marking up text as HTML.
+These cover the most basic kinds of markup, the handling of which
+differs little between the various styles."
+  :type '(alist :key-type symbol :value-type string)
+  :group 'muse-html)
+
+(defcustom muse-xhtml-markup-strings
+  '((image-with-desc . "<table class=\"image\" width=\"100%%\">
+  <tr><td align=\"center\"><img src=\"%1%.%2%\" alt=\"%3%\" /></td></tr>
+  <tr><td align=\"center\" class=\"image-caption\">%3%</td></tr>
+</table>")
+    (image           . "<img src=\"%s.%s\" alt=\"\" />")
+    (image-link      . "<a class=\"image-link\" href=\"%s\">
+<img src=\"%s.%s\" alt=\"\" /></a>")
+    (rule            . "<hr />")
+    (fn-sep          . "<hr />\n")
+    (line-break      . "<br />")
+    (begin-underline . "<span style=\"text-decoration: underline;\">")
+    (end-underline   . "</span>")
+    (begin-center    . "<p style=\"text-align: center;\">\n")
+    (end-center      . "\n</p>")
+    (end-verse-line  . "<br />")
+    (end-last-stanza-line . "<br />")
+    (empty-verse-line . "<br />"))
+  "Strings used for marking up text as XHTML.
+These cover the most basic kinds of markup, the handling of which
+differs little between the various styles.
+
+If a markup rule is not found here, `muse-html-markup-strings' is
+searched."
+  :type '(alist :key-type symbol :value-type string)
+  :group 'muse-html)
+
+(defcustom muse-xhtml1.1-markup-strings
+  '((anchor          . "<a id=\"%s\">"))
+  "Strings used for marking up text as XHTML 1.1.
+These cover the most basic kinds of markup, the handling of which
+differs little between the various styles.
+
+If a markup rule is not found here, `muse-xhtml-markup-strings'
+and `muse-html-markup-strings' are searched."
+  :type '(alist :key-type symbol :value-type string)
+  :group 'muse-html)
+
+(defcustom muse-html-markup-tags
+  '(("class" t t   t muse-html-class-tag)
+    ("div"   t t   t muse-html-div-tag)
+    ("src"   t t nil muse-html-src-tag))
+ "A list of tag specifications, for specially marking up HTML."
+  :type '(repeat (list (string :tag "Markup tag")
+                       (boolean :tag "Expect closing tag" :value t)
+                       (boolean :tag "Parse attributes" :value nil)
+                       (boolean :tag "Nestable" :value nil)
+                       function))
+  :group 'muse-html)
+
+(defcustom muse-html-meta-http-equiv "Content-Type"
+  "The http-equiv attribute used for the HTML <meta> tag."
+  :type 'string
+  :group 'muse-html)
+
+(defcustom muse-html-meta-content-type "text/html"
+  "The content type used for the HTML <meta> tag.
+If you are striving for XHTML 1.1 compliance, you may want to
+change this to \"application/xhtml+xml\"."
+  :type 'string
+  :group 'muse-html)
+
+(defcustom muse-html-meta-content-encoding (if (featurep 'mule)
+                                              'detect
+                                            "iso-8859-1")
+  "The charset to append to the HTML <meta> tag.
+If set to the symbol 'detect, use `muse-html-encoding-map' to try
+and determine the HTML charset from emacs's coding.  If set to a
+string, this string will be used to force a particular charset"
+  :type '(choice string symbol)
+  :group 'muse-html)
+
+(defcustom muse-html-encoding-default 'iso-8859-1
+  "The default Emacs buffer encoding to use in published files.
+This will be used if no special characters are found."
+  :type 'symbol
+  :group 'muse-html)
+
+(defcustom muse-html-charset-default "iso-8859-1"
+  "The default HTML meta charset to use if no translation is found in
+`muse-html-encoding-map'."
+  :type 'string
+  :group 'muse-html)
+
+(defcustom muse-html-src-allowed-modes t
+  "Modes that we allow the <src> tag to colorize.
+If t, permit the <src> tag to colorize any mode.
+
+If a list of mode names, such as '(\"html\" \"latex\"), and the
+lang argument to <src> is not in the list, then use fundamental
+mode instead."
+  :type '(choice (const :tag "Any" t)
+                 (repeat (string :tag "Mode")))
+  :group 'muse-html)
+
+(defun muse-html-insert-anchor (anchor)
+  "Insert an anchor, either around the word at point, or within a tag."
+  (skip-chars-forward (concat muse-regexp-blank "\n"))
+  (if (looking-at (concat "<\\([^" muse-regexp-blank "/>\n]+\\)>"))
+      (let ((tag (match-string 1)))
+        (goto-char (match-end 0))
+        (muse-insert-markup (muse-markup-text 'anchor anchor))
+        (when muse-html-anchor-on-word
+          (or (and (search-forward (format "</%s>" tag)
+                                   (muse-line-end-position) t)
+                   (goto-char (match-beginning 0)))
+              (forward-word 1)))
+        (muse-insert-markup "</a>"))
+    (muse-insert-markup (muse-markup-text 'anchor anchor))
+    (when muse-html-anchor-on-word
+      (forward-word 1))
+    (muse-insert-markup "</a>\n")))
+
+(defun muse-html-markup-anchor ()
+  (unless (get-text-property (match-end 1) 'muse-link)
+    (save-match-data
+      (muse-html-insert-anchor (match-string 2)))
+    (match-string 1)))
+
+(defun muse-html-markup-paragraph ()
+  (let ((end (copy-marker (match-end 0) t)))
+    (goto-char (match-beginning 0))
+    (when (save-excursion
+            (save-match-data
+              (and (not (get-text-property (max (point-min) (1- (point)))
+                                           'muse-no-paragraph))
+                   (re-search-backward "<\\(/?\\)p[ >]" nil t)
+                   (not (string-equal (match-string 1) "/")))))
+      (when (get-text-property (1- (point)) 'muse-end-list)
+        (goto-char (previous-single-property-change (1- (point))
+                                                    'muse-end-list)))
+      (muse-insert-markup "</p>"))
+    (goto-char end))
+  (cond
+   ((eobp)
+    (unless (bolp)
+      (insert "\n")))
+   ((get-text-property (point) 'muse-no-paragraph)
+    (forward-char 1)
+    nil)
+   ((eq (char-after) ?\<)
+    (cond
+     ((looking-at "<\\(em\\|strong\\|code\\|span\\)[ >]")
+      (muse-insert-markup "<p>"))
+     ((looking-at "<a ")
+      (if (looking-at "<a[^>\n]+><img")
+          (muse-insert-markup "<p class=\"image-link\">")
+        (muse-insert-markup "<p>")))
+     ((looking-at "<img[ >]")
+      (muse-insert-markup "<p class=\"image\">"))
+     (t
+      (forward-char 1)
+      nil)))
+   ((muse-looking-back "\\(</h[1-4]>\\|<hr>\\)\n\n")
+    (muse-insert-markup "<p class=\"first\">"))
+   (t
+    (muse-insert-markup "<p>"))))
+
+(defun muse-html-markup-footnote ()
+  (cond
+   ((get-text-property (match-beginning 0) 'muse-link)
+    nil)
+   ((= (muse-line-beginning-position) (match-beginning 0))
+    (prog1
+        (let ((text (match-string 1)))
+          (muse-insert-markup
+           (concat "<p class=\"footnote\">"
+                   "<a class=\"footnum\" name=\"fn." text
+                   "\" href=\"#fnr." text "\">"
+                   text ".</a>")))
+      (save-excursion
+        (save-match-data
+          (let* ((beg (goto-char (match-end 0)))
+                 (end (and (search-forward "\n\n" nil t)
+                           (prog1
+                               (copy-marker (match-beginning 0))
+                             (goto-char beg)))))
+            (while (re-search-forward (concat "^["
+                                              muse-regexp-blank
+                                              "]+\\([^\n]\\)")
+                                      end t)
+              (replace-match "\\1" t)))))
+      (replace-match "")))
+   (t (let ((text (match-string 1)))
+        (muse-insert-markup
+         (concat "<sup><a class=\"footref\" name=\"fnr." text
+                 "\" href=\"#fn." text "\">"
+                 text "</a></sup>")))
+      (replace-match ""))))
+
+(defun muse-html-markup-table ()
+  (muse-xml-markup-table muse-html-table-attributes))
+
+;; Handling of tags for HTML
+
+(defun muse-html-strip-links (string)
+  "Remove all HTML links from STRING."
+  (muse-replace-regexp-in-string "\\(<a .*?>\\|</a>\\)" "" string nil t))
+
+(defun muse-html-insert-contents (depth)
+  "Scan the current document and generate a table of contents at point.
+DEPTH indicates how many levels of headings to include.  The default is 2."
+  (let ((max-depth (or depth 2))
+        (index 1)
+        base contents l end)
+    (save-excursion
+      (goto-char (point-min))
+      (search-forward "Page published by Emacs Muse begins here" nil t)
+      (catch 'done
+        (while (re-search-forward "<h\\([0-9]+\\)>\\(.+?\\)</h\\1>$" nil t)
+          (unless (and (get-text-property (point) 'read-only)
+                       (not (get-text-property (match-beginning 0)
+                                               'muse-contents)))
+            (remove-text-properties (match-beginning 0) (match-end 0)
+                                    '(muse-contents nil))
+            (setq l (1- (string-to-number (match-string 1))))
+            (if (null base)
+                (setq base l)
+              (if (< l base)
+                  (throw 'done t)))
+            (when (<= l max-depth)
+              ;; escape specials now before copying the text, so that we
+              ;; can deal sanely with both emphasis in titles and
+              ;; special characters
+              (goto-char (match-end 2))
+              (setq end (point-marker))
+              (muse-publish-escape-specials (match-beginning 2) end
+                                            nil 'document)
+              (muse-publish-mark-read-only (match-beginning 2) end)
+              (setq contents (cons (cons l (buffer-substring-no-properties
+                                            (match-beginning 2) end))
+                                   contents))
+              (set-marker end nil)
+              (goto-char (match-beginning 2))
+              (muse-html-insert-anchor (concat "sec" (int-to-string index)))
+              (setq index (1+ index)))))))
+    (setq index 1 contents (nreverse contents))
+    (let ((depth 1) (sub-open 0) (p (point)))
+      (muse-insert-markup "<div class=\"contents\">\n<dl>\n")
+      (while contents
+        (muse-insert-markup "<dt>\n"
+                            "<a href=\"#sec" (int-to-string index) "\">"
+                            (muse-html-strip-links (cdar contents))
+                            "</a>\n"
+                            "</dt>\n")
+        (setq index (1+ index)
+              depth (caar contents)
+              contents (cdr contents))
+        (when contents
+          (cond
+           ((< (caar contents) depth)
+            (let ((idx (caar contents)))
+              (while (< idx depth)
+                (muse-insert-markup "</dl>\n</dd>\n")
+                (setq sub-open (1- sub-open)
+                      idx (1+ idx)))))
+           ((> (caar contents) depth) ; can't jump more than one ahead
+            (muse-insert-markup "<dd>\n<dl>\n")
+            (setq sub-open (1+ sub-open))))))
+      (while (> sub-open 0)
+        (muse-insert-markup "</dl>\n</dd>\n")
+        (setq sub-open (1- sub-open)))
+      (muse-insert-markup "</dl>\n</div>\n")
+      (muse-publish-mark-read-only p (point)))))
+
+(defun muse-html-denote-headings ()
+  "Place a text property on any headings in the current buffer.
+This allows the headings to be picked up later on if publishing a
+table of contents."
+  (save-excursion
+    (goto-char (point-min))
+    (search-forward "Page published by Emacs Muse begins here" nil t)
+    (while (re-search-forward "<h\\([0-9]+\\)>\\(.+?\\)</h\\1>$" nil t)
+      (unless (get-text-property (point) 'read-only)
+        (add-text-properties (match-beginning 0) (match-end 0)
+                             '(muse-contents t))))))
+
+(defun muse-html-class-tag (beg end attrs)
+  (let ((name (cdr (assoc "name" attrs))))
+    (when name
+      (goto-char beg)
+      (muse-insert-markup "<span class=\"" name "\">")
+      (save-excursion
+        (goto-char end)
+        (muse-insert-markup "</span>")))))
+
+(defun muse-html-div-tag (beg end attrs)
+  "Publish a <div> tag for HTML."
+  (let ((id (cdr (assoc "id" attrs)))
+        (style (cdr (assoc "style" attrs))))
+    (when (or id style)
+      (goto-char beg)
+      (if (null id)
+          (muse-insert-markup "<div style=\"" style "\">")
+        (muse-insert-markup "<div id=\"" id "\">"))
+      (save-excursion
+        (goto-char end)
+        (muse-insert-markup "</div>")))))
+
+(defun muse-html-src-tag (beg end attrs)
+  "Publish the region using htmlize.
+The language to use may be specified by the \"lang\" attribute.
+
+Muse will look for a function named LANG-mode, where LANG is the
+value of the \"lang\" attribute.
+
+This tag requires htmlize 1.34 or later in order to work."
+  (if (condition-case nil
+          (progn
+            (require 'htmlize)
+            (if (fboundp 'htmlize-region-for-paste)
+                nil
+              (muse-display-warning
+               (concat "The `htmlize-region-for-paste' function was not"
+                       " found.\nThis is available in htmlize.el 1.34"
+                       " or later."))
+              t))
+        (error nil t))
+      ;; if htmlize.el was not found, treat this like an example tag
+      (muse-publish-example-tag beg end)
+    (muse-publish-ensure-block beg end)
+    (let* ((lang (cdr (assoc "lang" attrs)))
+           (mode (or (and (not (eq muse-html-src-allowed-modes t))
+                          (not (member lang muse-html-src-allowed-modes))
+                          'fundamental-mode)
+                     (intern-soft (concat lang "-mode"))))
+           (text (muse-delete-and-extract-region beg end))
+           (htmltext
+            (with-temp-buffer
+              (insert text)
+              (if (functionp mode)
+                  (funcall mode)
+                (fundamental-mode))
+              (font-lock-fontify-buffer)
+              ;; silence the byte-compiler
+              (when (fboundp 'htmlize-region-for-paste)
+                ;; transform the region to HTML
+                (htmlize-region-for-paste (point-min) (point-max))))))
+      (save-restriction
+        (narrow-to-region (point) (point))
+        (insert htmltext)
+        (goto-char (point-min))
+        (re-search-forward "<pre\\([^>]*\\)>\n?" nil t)
+        (replace-match "<pre class=\"src\">")
+        (goto-char (point-max))
+        (muse-publish-mark-read-only (point-min) (point-max))))))
+
+;; Register the Muse HTML Publisher
+
+(defun muse-html-browse-file (file)
+  (browse-url (concat "file:" file)))
+
+(defun muse-html-encoding ()
+  (if (stringp muse-html-meta-content-encoding)
+      muse-html-meta-content-encoding
+    (muse-xml-transform-content-type
+     (or (and (boundp 'buffer-file-coding-system)
+              buffer-file-coding-system)
+         muse-html-encoding-default)
+     muse-html-charset-default)))
+
+(defun muse-html-prepare-buffer ()
+  (make-local-variable 'muse-html-meta-http-equiv)
+  (set (make-local-variable 'muse-html-meta-content-type)
+       (if (save-match-data
+             (string-match "charset=" muse-html-meta-content-type))
+           muse-html-meta-content-type
+         (concat muse-html-meta-content-type "; charset="
+                 (muse-html-encoding)))))
+
+(defun muse-html-munge-buffer ()
+  (if muse-publish-generate-contents
+      (progn
+        (goto-char (car muse-publish-generate-contents))
+        (muse-html-insert-contents (cdr muse-publish-generate-contents))
+        (setq muse-publish-generate-contents nil))
+    (muse-html-denote-headings)))
+
+(defun muse-html-finalize-buffer ()
+  (when (and (boundp 'buffer-file-coding-system)
+             (memq buffer-file-coding-system '(no-conversion undecided-unix)))
+    ;; make it agree with the default charset
+    (setq buffer-file-coding-system muse-html-encoding-default)))
+
+;;; Register the Muse HTML and XHTML Publishers
+
+(muse-define-style "html"
+                   :suffix    'muse-html-extension
+                   :regexps   'muse-html-markup-regexps
+                   :functions 'muse-html-markup-functions
+                   :strings   'muse-html-markup-strings
+                   :tags      'muse-html-markup-tags
+                   :specials  'muse-xml-decide-specials
+                   :before    'muse-html-prepare-buffer
+                   :before-end 'muse-html-munge-buffer
+                   :after     'muse-html-finalize-buffer
+                   :header    'muse-html-header
+                   :footer    'muse-html-footer
+                   :style-sheet 'muse-html-style-sheet
+                   :browser   'muse-html-browse-file)
+
+(muse-derive-style "xhtml" "html"
+                   :suffix    'muse-xhtml-extension
+                   :strings   'muse-xhtml-markup-strings
+                   :header    'muse-xhtml-header
+                   :footer    'muse-xhtml-footer
+                   :style-sheet 'muse-xhtml-style-sheet)
+
+;; xhtml1.0 is an alias for xhtml
+(muse-derive-style "xhtml1.0" "xhtml")
+
+;; xhtml1.1 has some quirks that need attention from us
+(muse-derive-style "xhtml1.1" "xhtml"
+                   :strings   'muse-xhtml1.1-markup-strings)
+
+(provide 'muse-html)
+
+;;; muse-html.el ends here
diff --git a/packages/muse/muse-http.el b/packages/muse/muse-http.el
new file mode 100644 (file)
index 0000000..40bd1cb
--- /dev/null
@@ -0,0 +1,239 @@
+;;; muse-http.el --- publish HTML files over HTTP
+
+;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;;; Contributors:
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Publishing HTML over HTTP (using httpd.el)
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'muse-html)
+(require 'muse-project)
+(require 'httpd)
+(require 'cgi)
+
+(defgroup muse-http nil
+  "Options controlling the behavior of Emacs Muse over HTTP."
+  :group 'press)
+
+(defcustom muse-http-maintainer (concat "webmaster@" (system-name))
+  "The maintainer address to use for the HTTP 'From' field."
+  :type 'string
+  :group 'muse-http)
+
+(defcustom muse-http-publishing-style "html"
+  "The style to use when publishing projects over http."
+  :type 'string
+  :group 'muse-http)
+
+(defcustom muse-http-max-cache-size 64
+  "The number of pages to cache when serving over HTTP.
+This only applies if set while running the persisted invocation
+server.  See main documentation for the `muse-http'
+customization group."
+  :type 'integer
+  :group 'muse-http)
+
+(defvar muse-buffer-mtime nil)
+(make-variable-buffer-local 'muse-buffer-mtime)
+
+(defun muse-sort-buffers (l r)
+  (let ((l-mtime (with-current-buffer l muse-buffer-mtime))
+        (r-mtime (with-current-buffer r muse-buffer-mtime)))
+    (cond
+     ((and (null l-mtime) (null r-mtime)) l)
+     ((null l-mtime) r)
+     ((null r-mtime) l)
+     (t (muse-time-less-p r-mtime l-mtime)))))
+
+(defun muse-winnow-list (entries &optional predicate)
+  "Return only those ENTRIES for which PREDICATE returns non-nil."
+  (let ((flist (list t)))
+    (let ((entry entries))
+      (while entry
+        (if (funcall predicate (car entry))
+            (nconc flist (list (car entry))))
+        (setq entry (cdr entry))))
+    (cdr flist)))
+
+(defun muse-http-prune-cache ()
+  "If the page cache has become too large, prune it."
+  (let* ((buflist
+          (sort (muse-winnow-list (buffer-list)
+                                  (function
+                                   (lambda (buf)
+                                     (with-current-buffer buf
+                                       muse-buffer-mtime))))
+                'muse-sort-buffers))
+         (len (length buflist)))
+    (while (> len muse-http-max-cache-size)
+      (kill-buffer (car buflist))
+      (setq len (1- len)))))
+
+(defvar muse-http-serving-p nil)
+
+(defun muse-http-send-buffer (&optional modified code msg)
+  "Markup and send the contents of the current buffer via HTTP."
+  (httpd-send (or code 200) (or msg "OK")
+              "Server: muse.el/" muse-version httpd-endl
+              "Connection: close" httpd-endl
+              "MIME-Version: 1.0" httpd-endl
+              "Date: " (format-time-string "%a, %e %b %Y %T %Z")
+              httpd-endl
+              "From: " muse-http-maintainer httpd-endl)
+  (when modified
+    (httpd-send-data "Last-Modified: "
+                     (format-time-string "%a, %e %b %Y %T %Z" modified)
+                     httpd-endl))
+  (httpd-send-data "Content-Type: text/html; charset=iso-8859-1" httpd-endl
+                   "Content-Length: " (number-to-string (1- (point-max)))
+                   httpd-endl httpd-endl
+                   (buffer-string))
+  (httpd-send-eof))
+
+(defun muse-http-reject (title msg &optional annotation)
+  (muse-with-temp-buffer
+    (insert msg ".\n")
+    (if annotation
+        (insert annotation "\n"))
+    (muse-publish-markup-buffer title muse-http-publishing-style)
+    (muse-http-send-buffer nil 404 msg)))
+
+(defun muse-http-prepare-url (target explicit)
+  (save-match-data
+    (unless (or (not explicit)
+                (string-match muse-url-regexp target)
+                (string-match muse-image-regexp target)
+                (string-match muse-file-regexp target))
+      (setq target (concat "page?" target
+                           "&project=" muse-http-serving-p))))
+  (muse-publish-read-only target))
+
+(defun muse-http-render-page (name)
+  "Render the Muse page identified by NAME.
+When serving from a dedicated Emacs process (see the httpd-serve
+script), a maximum of `muse-http-max-cache-size' pages will be
+cached in memory to speed up serving time."
+  (let ((file (muse-project-page-file name muse-http-serving-p))
+        (muse-publish-url-transforms
+         (cons 'muse-http-prepare-url muse-publish-url-transforms))
+        (inhibit-read-only t))
+    (when file
+      (with-current-buffer (get-buffer-create file)
+        (let ((modified-time (nth 5 (file-attributes file)))
+              (muse-publishing-current-file file)
+              muse-publishing-current-style)
+          (when (or (null muse-buffer-mtime)
+                    (muse-time-less-p muse-buffer-mtime modified-time))
+            (erase-buffer)
+            (setq muse-buffer-mtime modified-time))
+          (goto-char (point-max))
+          (when (bobp)
+            (muse-insert-file-contents file t)
+            (let ((styles (cddr (muse-project muse-http-serving-p)))
+                  style)
+              (while (and styles (null style))
+                (let ((include-regexp
+                       (muse-style-element :include (car styles)))
+                      (exclude-regexp
+                       (muse-style-element :exclude (car styles))))
+                  (when (and (or (and (null include-regexp)
+                                      (null exclude-regexp))
+                                 (if include-regexp
+                                     (string-match include-regexp file)
+                                   (not (string-match exclude-regexp file))))
+                             (not (muse-project-private-p file)))
+                    (setq style (car styles))
+                    (while (muse-style-element :base style)
+                      (setq style
+                            (muse-style (muse-style-element :base style))))
+                    (if (string= (car style) muse-http-publishing-style)
+                        (setq style (car styles))
+                      (setq style nil))))
+                (setq styles (cdr styles)))
+              (muse-publish-markup-buffer
+               name (or style muse-http-publishing-style))))
+          (set-buffer-modified-p nil)
+          (muse-http-prune-cache)
+          (current-buffer))))))
+
+(defun muse-http-transmit-page (name)
+  "Render the Muse page identified by NAME.
+When serving from a dedicated Emacs process (see the httpd-serve
+script), a maximum of `muse-http-max-cache-size' pages will be
+cached in memory to speed up serving time."
+  (let ((inhibit-read-only t)
+        (buffer (muse-http-render-page name)))
+    (if buffer
+        (with-current-buffer buffer
+          (muse-http-send-buffer muse-buffer-mtime)))))
+
+(defvar httpd-vars nil)
+
+(defsubst httpd-var (var)
+  "Return value of VAR as a URL variable.  If VAR doesn't exist, nil."
+  (cdr (assoc var httpd-vars)))
+
+(defsubst httpd-var-p (var)
+  "Return non-nil if VAR was passed as a URL variable."
+  (not (null (assoc var httpd-vars))))
+
+(defun muse-http-serve (page &optional content)
+  "Serve the given PAGE from this press server."
+  ;; index.html is really a reference to the project home page
+  (if (and muse-project-alist
+           (string-match "\\`index.html?\\'" page))
+      (setq page (concat "page?"
+                         (muse-get-keyword :default
+                                           (cadr (car muse-project-alist))))))
+  ;; handle the actual request
+  (let ((vc-follow-symlinks t)
+        (muse-publish-report-threshhold nil)
+        muse-http-serving-p
+        httpd-vars)
+    (save-excursion
+      ;; process any CGI variables, if cgi.el is available
+      (if (string-match "\\`\\([^&]+\\)&" page)
+          (setq httpd-vars (cgi-decode (substring page (match-end 0)))
+                page (match-string 1 page)))
+      (unless (setq muse-http-serving-p (httpd-var "project"))
+        (let ((project (car muse-project-alist)))
+          (setq muse-http-serving-p (car project))
+          (setq httpd-vars (cons (cons "project" (car project))
+                                 httpd-vars))))
+      (if (and muse-http-serving-p
+               (string-match "\\`page\\?\\(.+\\)" page))
+          (muse-http-transmit-page (match-string 1 page))))))
+
+(if (featurep 'httpd)
+    (httpd-add-handler "\\`\\(index\\.html?\\|page\\(\\?\\|\\'\\)\\)"
+                       'muse-http-serve))
+
+(provide 'muse-http)
+
+;;; muse-http.el ends here
diff --git a/packages/muse/muse-ikiwiki.el b/packages/muse/muse-ikiwiki.el
new file mode 100644 (file)
index 0000000..a664880
--- /dev/null
@@ -0,0 +1,219 @@
+;;; muse-ikiwiki.el --- integrate with Ikiwiki
+
+;; Copyright (C) 2008, 2009, 2010  Free Software Foundation, Inc.
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;;; Contributors:
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Muse Ikiwiki Integration
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'muse)
+(require 'muse-html)
+(require 'muse-ipc)
+(require 'muse-publish)
+
+(eval-when-compile
+  (require 'muse-colors))
+
+(defgroup muse-ikiwiki nil
+  "Options controlling the behavior of Muse integration with Ikiwiki."
+  :group 'muse-publish)
+
+(defcustom muse-ikiwiki-header ""
+  "Header used for publishing Ikiwiki output files.
+This may be text or a filename."
+  :type 'string
+  :group 'muse-ikiwiki)
+
+(defcustom muse-ikiwiki-footer ""
+  "Footer used for publishing Ikiwiki output files.
+This may be text or a filename."
+  :type 'string
+  :group 'muse-ikiwiki)
+
+(defcustom muse-ikiwiki-markup-regexps
+  `(;; Ikiwiki directives
+    (1350 ,(concat "\\(\\\\?\\)\\[\\[!""\\(?:-\\|\\w\\)+"
+                   "\\([" muse-regexp-blank "\n]+"
+                   "\\(?:\\(?:\\(?:-\\|\\w\\)+=\\)?"
+                   "\\(?:\"\"\".*?\"\"\"\\|\"[^\"]+\""
+                   "\\|[^]" muse-regexp-blank "\n]+\\)"
+                   "[" muse-regexp-blank "\n]*\\)*\\)?\\]\\]")
+          0 muse-ikiwiki-markup-directive))
+  "List of markup rules for publishing Ikiwiki markup on Muse pages.
+For more on the structure of this list, see `muse-publish-markup-regexps'."
+  :type '(repeat (choice
+                  (list :tag "Markup rule"
+                        integer
+                        (choice regexp symbol)
+                        integer
+                        (choice string function symbol))
+                  function))
+  :group 'muse-ikiwiki)
+
+;;; Publishing
+
+(defun muse-ikiwiki-markup-directive ()
+  "Handle publishing of an Ikiwiki directive."
+  (unless (get-text-property (match-beginning 0) 'read-only)
+    (add-text-properties (match-beginning 0) (match-end 0)
+                         '(muse-no-paragraph t))
+    (muse-publish-mark-read-only (match-beginning 0) (match-end 0))))
+
+(defun muse-ikiwiki-publish-buffer (name title &optional style)
+  "Publish a buffer for Ikiwki.
+The name of the corresponding file is NAME.
+The name of the style is given by STYLE.  It defaults to \"ikiwiki\"."
+  (unless style (setq style "ikiwiki"))
+  (unless title (setq title (muse-page-name name)))
+  (let ((muse-batch-publishing-p t)
+        (muse-publishing-current-file name)
+        (muse-publishing-current-output-path name)
+        (muse-publishing-current-style style)
+        (font-lock-verbose nil)
+        (vc-handled-backends nil)) ; don't activate VC when publishing files
+    (run-hooks 'muse-before-publish-hook)
+    (let ((muse-inhibit-before-publish-hook t))
+      (muse-publish-markup-buffer title style))))
+
+(defun muse-ikiwiki-publish-file (file name &optional style)
+  "Publish a single file for Ikiwiki.
+The name of the real file is NAME, and the name of the temporary
+file containing the content is FILE.
+The name of the style is given by STYLE.  It defaults to \"ikiwiki\"."
+  (if (not (stringp file))
+      (message "Error: No file given to publish")
+    (unless style
+      (setq style "ikiwiki"))
+    (let ((output-path file)
+          (target file)
+          (vc-handled-backends nil) ; don't activate VC when publishing files
+          auto-mode-alist
+          muse-current-output-style)
+      (setq auto-mode-alist
+            (delete (cons (concat "\\." muse-file-extension "\\'")
+                          'muse-mode-choose-mode)
+                    auto-mode-alist))
+      (setq muse-current-output-style (list :base style :path file))
+      (muse-with-temp-buffer
+        (muse-insert-file-contents file)
+        (muse-ikiwiki-publish-buffer name nil style)
+        (when (muse-write-file output-path t)
+          (muse-style-run-hooks :final style file output-path target))))))
+
+(defun muse-ikiwiki-start-server (port)
+  "Start Muse IPC server, initializing with the client on PORT."
+  (muse-ipc-start "foo" #'muse-ikiwiki-publish-buffer port))
+
+;;; Colors
+
+(defface muse-ikiwiki-directive
+  '((((class color) (background light))
+     (:foreground "dark green"))
+    (((class color) (background dark))
+     (:foreground "green")))
+  "Face for Ikiwiki directives."
+  :group 'muse-ikiwiki)
+
+(defun muse-colors-ikiwiki-directive ()
+  "Color ikiwiki directives."
+  (let ((start (match-beginning 0)))
+    (unless (or (eq (get-text-property start 'invisible) 'muse)
+                (get-text-property start 'muse-comment)
+                (get-text-property start 'muse-directive))
+      ;; beginning of line or space or symbol
+      (save-excursion
+        (and
+         (catch 'valid
+           (while t
+             (skip-chars-forward "^\"]" muse-colors-region-end)
+             (cond ((eq (point) (point-max))
+                    (throw 'valid nil))
+                   ((> (point) muse-colors-region-end)
+                    (throw 'valid nil))
+                   ((eq (char-after) ?\")
+                    (if (and (< (1+ (point)) muse-colors-region-end)
+                             (eq (char-after (1+ (point))) ?\"))
+                        (if (and (< (+ 2 (point)) muse-colors-region-end)
+                                 (eq (char-after (+ 2 (point))) ?\"))
+                            ;; triple-quote
+                            (progn
+                              (forward-char 3)
+                              (or (and (looking-at "\"\"\"")
+                                       (goto-char (match-end 0)))
+                                  (re-search-forward
+                                   "\"\"\"" muse-colors-region-end t)
+                                  (throw 'valid nil)))
+                          ;; empty quotes (""), which are invalid
+                          (throw 'valid nil))
+                      ;; quote with content
+                      (forward-char 1)
+                      (skip-chars-forward "^\"" muse-colors-region-end)
+                      (when (eq (char-after) ?\")
+                        (forward-char 1))))
+                   ((eq (char-after) ?\])
+                    (forward-char 1)
+                    (when (and (< (point) muse-colors-region-end)
+                               (eq (char-after (point)) ?\]))
+                      (forward-char 1)
+                      (throw 'valid t)))
+                   (t (throw 'valid nil)))))
+         ;; found a valid directive
+         (let ((end (point)))
+           ;; remove flyspell overlays
+           (when (fboundp 'flyspell-unhighlight-at)
+             (let ((cur start))
+               (while (> end cur)
+                 (flyspell-unhighlight-at cur)
+                 (setq cur (1+ cur)))))
+           (add-text-properties start end
+                                '(face muse-ikiwiki-directive
+                                  muse-directive t muse-no-flyspell t))
+           (when (progn
+                   (goto-char start)
+                   (skip-chars-forward "^\n" end)
+                   (and (eq (char-after) ?\n)
+                        (not (= (point) end))))
+             (add-text-properties start end
+                                  '(font-lock-multiline t)))))))))
+
+(defun muse-ikiwiki-insinuate-colors ()
+  (add-to-list 'muse-colors-markup
+               '("\\[\\[!" ?\[ muse-colors-ikiwiki-directive)
+               nil))
+
+(eval-after-load "muse-colors" '(muse-ikiwiki-insinuate-colors))
+
+;; Styles
+(muse-derive-style "ikiwiki" "xhtml"
+                   :header  'muse-ikiwiki-header
+                   :footer  'muse-ikiwiki-footer
+                   :regexps 'muse-ikiwiki-markup-regexps)
+
+(provide 'muse-ikiwiki)
+
+;;; muse-ikiwiki.el ends here
diff --git a/packages/muse/muse-import-docbook.el b/packages/muse/muse-import-docbook.el
new file mode 100644 (file)
index 0000000..ed1b22b
--- /dev/null
@@ -0,0 +1,137 @@
+;;; muse-import-docbook.el --- convert Docbook XML into Muse format
+
+;; Copyright (C) 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; Author: Elena Pomohaci <e.pomohaci@gmail.com>
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; It works only for article type docbook docs and recognize
+;; followings elements: article, sect1, sect2, sect3, title,
+
+;;; Contributors:
+
+;;; Code:
+
+(require 'muse-import-xml)
+
+(defvar muse-import-docbook-prefix "muse-import-docbook-"
+  "The name prefix for tag functions")
+
+(defvar muse-import-docbook-para-indent "\n\n"
+  "Para elements indentation (0, less than 6 spaces, more than 6 spaces)")
+
+(defun muse-import-docbook-reset-para-indent ()
+  (setq muse-import-docbook-para-indent "\n\n"))
+
+
+;;;###autoload
+(defun muse-import-docbook (src dest)
+  "Convert the Docbook buffer SRC to Muse, writing output in the DEST buffer."
+  (interactive "bDocbook buffer:\nBMuse buffer:")
+  (setq muse-import-xml-prefix muse-import-docbook-prefix)
+  (setq muse-import-xml-generic-function-name "muse-import-xml-node")
+  (muse-import-xml src dest))
+
+;;;###autoload
+(defun muse-import-docbook-files (src dest)
+  "Convert the Docbook file SRC to Muse, writing output to the DEST file."
+  (interactive "fDocbook file:\nFMuse file:")
+  (with-temp-file dest
+    (muse-import-docbook (find-file-noselect src) (current-buffer))))
+
+
+;;; element specific functions
+
+(defun muse-import-docbook-get-title (node)
+  (let ((tit (car (xml-get-children node 'title))))
+    (insert (car (cddr tit)) ?\n ?\n)
+    (muse-import-xml-parse-tree (xml-node-children (remove tit node)))))
+
+
+(defun muse-import-docbook-article (node)
+  "Article conversion function"
+  (muse-import-xml-node node))
+
+(defun muse-import-docbook-articleinfo (node)
+  "Article conversion function"
+  (insert "#title ")
+  (muse-import-docbook-get-title node)
+  (insert ?\n))
+
+
+(defalias 'muse-import-docbook-appendix 'muse-import-docbook-article)
+
+(defalias 'muse-import-docbook-appendixinfo 'muse-import-docbook-articleinfo)
+
+
+(defun muse-import-docbook-sect1 (node)
+  "Section 1 conversion function"
+  (insert ?\n "* ")
+  (muse-import-docbook-get-title node))
+
+(defun muse-import-docbook-sect2 (node)
+  "Section 2 conversion function"
+  (insert ?\n "** ")
+  (muse-import-docbook-get-title node))
+
+(defun muse-import-docbook-sect3 (node)
+  "Section 3 conversion function"
+  (insert ?\n "*** ")
+  (muse-import-docbook-get-title node))
+
+
+(defun muse-import-docbook-graphic (node)
+  "Graphic conversion function. Image format is forced to PNG"
+  (let ((name (xml-get-attribute node 'fileref)))
+  (insert "\n[[img/" name ".png][" name "]]")))
+
+(defun muse-import-docbook-para (node)
+  (insert muse-import-docbook-para-indent)
+  (muse-import-xml-node node))
+
+
+(defun muse-import-docbook-emphasis (node)
+  (insert "*")
+  (muse-import-xml-node node)
+  (insert "*"))
+
+(defun muse-import-docbook-quote (node)
+  (insert "\"")
+  (muse-import-xml-node node)
+  (insert "\""))
+
+(defun muse-import-docbook-blockquote (node)
+  (setq muse-import-docbook-para-indent "\n\n  ")
+  (muse-import-xml-node node)
+  (muse-import-docbook-reset-para-indent))
+
+(defun muse-import-docbook-member (node)
+  (insert "\n> ")
+  (muse-import-xml-node node))
+
+(defun muse-import-docbook-bridgehead (node)
+  (insert "\n* ")
+  (muse-import-xml-node node))
+
+(provide 'muse-import-docbook)
+
+;;; muse-import-docbook.el ends here
diff --git a/packages/muse/muse-import-latex.el b/packages/muse/muse-import-latex.el
new file mode 100644 (file)
index 0000000..5297131
--- /dev/null
@@ -0,0 +1,149 @@
+;;; muse-import-latex.el --- convert a LaTex file into a Muse file
+
+;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; Helper commands for converting a LaTeX file into a Muse file.
+
+;;; Contributors:
+
+;;; Code:
+
+(require 'muse)
+(require 'muse-regexps)
+
+(defun muse-i-l-write-citation (note author citation pages)
+  (save-excursion
+    (goto-char (point-max))
+    (if (= note 1)
+        (insert "\nFootnotes:\n\n"))
+    (let ((beg (point)))
+      (insert "\n[" (number-to-string note) "]  " author)
+      (if (and citation pages)
+          (insert ", " citation ", " pages))
+      (insert "\n")
+      (goto-char beg)
+      (while (re-search-forward (concat "p.\\\\[" muse-regexp-blank "\n]+")
+                                nil t)
+        (replace-match "p."))
+      (goto-char beg)
+      (while (re-search-forward "--" nil t)
+        (replace-match "-")))))
+
+(defun muse-i-l-write-footnote (note text)
+  (save-excursion
+    (goto-char (point-max))
+    (if (= note 1)
+        (insert "\nFootnotes:\n\n"))
+    (insert "\n[" (number-to-string note) "]  " text ?\n)))
+
+;;;###autoload
+(defun muse-import-latex ()
+  (interactive)
+  (goto-char (point-min))
+  (while (not (eobp))
+    (cond
+     ((or (looking-at "^\\\\documentclass")
+          (looking-at "^\\\\input")
+          (looking-at "^\\\\begin{document}")
+          (looking-at "^\\\\end{document}")
+          (looking-at "^\\\\author")
+          (looking-at "^\\\\\\(med\\|big\\|small\\)skip")
+          (looking-at "^\\\\maketitle"))
+      (delete-region (point) (muse-line-end-position)))
+     ((looking-at "^\\\\title{\\(.+\\)}")
+      (delete-region (match-end 1) (muse-line-end-position))
+      (delete-region (point) (match-beginning 1))
+      (insert "#title ")))
+    (forward-line))
+  (goto-char (point-min))
+  (while (re-search-forward "\\\\\\(l\\)?dots{}" nil t)
+    (replace-match (concat (and (string= (match-string 1) "l") ".")
+                           "...")))
+  (goto-char (point-min))
+  (while (re-search-forward "\\(``\\|''\\)" nil t)
+    (replace-match "\""))
+  (goto-char (point-min))
+  (while (re-search-forward "---" nil t)
+    (replace-match " -- "))
+  (goto-char (point-min))
+  (while (re-search-forward "\\\\tableofcontents" nil t)
+    (replace-match "<contents>"))
+  (goto-char (point-min))
+  (while (re-search-forward "\\\\\\\\" nil t)
+    (replace-match ""))
+  (goto-char (point-min))
+  (while (re-search-forward "\\\\\\(sub\\)?section{\\([^}]+\\)}" nil t)
+    (replace-match (concat (if (string= (match-string 1) "sub")
+                               "**" "*")
+                           " " (match-string 2))))
+  (goto-char (point-min))
+  (while (re-search-forward "\\\\\\(begin\\|end\\){verse}" nil t)
+    (replace-match (concat "<" (if (string= (match-string 1) "end") "/")
+                           "verse>")))
+  (goto-char (point-min))
+  (while (re-search-forward "\\\\\\(begin\\|end\\){quote}\n" nil t)
+    (replace-match ""))
+  (goto-char (point-min))
+  (while (re-search-forward
+          "\\\\\\(emph\\|textbf\\){\\([^}]+?\\)\\(\\\\/\\)?}" nil t)
+    (replace-match
+     (if (string= (match-string 1) "emph") "*\\2*" "**\\2**")))
+  (let ((footnote-index 1))
+    (goto-char (point-min))
+    (while (re-search-forward
+            (concat "\\\\\\(q\\)?\\(footnote\\|excerpt\\)\\(np\\)?"
+                    "\\({\\([^}]+\\)}\\)?"
+                    "\\({\\([^}]+\\)}{\\([^}]+\\)}\\)?{\\([^}]+\\)}") nil t)
+      (let ((beg (match-beginning 0))
+            (end (match-end 0)))
+        (unless (string= (match-string 2) "footnote")
+          (if (null (match-string 1))
+              (insert "  " (match-string 9))
+            (let ((b (point)) e)
+              (insert "\"" (match-string 9) "\"")
+              (setq e (point-marker))
+              (save-match-data
+                (save-excursion
+                  (goto-char b)
+                  (while (< (point) e)
+                    (if (looking-at "\\s-+")
+                        (delete-region (match-beginning 0)
+                                       (match-end 0)))
+                    (forward-line))))
+              (set-marker e nil))))
+        (insert "[" (number-to-string footnote-index) "]")
+        (if (string= (match-string 2) "footnote")
+            (muse-i-l-write-footnote footnote-index (match-string 9))
+          (muse-i-l-write-citation footnote-index (match-string 5)
+                                   (match-string 7) (match-string 8)))
+        (setq footnote-index (1+ footnote-index))
+        (delete-region beg end))))
+  (goto-char (point-min))
+  (while (looking-at "\n") (delete-char 1))
+  (goto-char (point-min))
+  (while (re-search-forward "\n\n+" nil t)
+    (replace-match "\n\n")))
+
+(provide 'muse-import-latex)
+
+;;; muse-import-latex.el ends here
diff --git a/packages/muse/muse-import-xml.el b/packages/muse/muse-import-xml.el
new file mode 100644 (file)
index 0000000..2579ce8
--- /dev/null
@@ -0,0 +1,88 @@
+;;; muse-import-xml.el --- common to all from-xml converters
+
+;; Copyright (C) 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; Author: Elena Pomohaci <e.pomohaci@gmail.com>
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;;; Contributors:
+
+;;; Code:
+
+(provide 'muse-import-xml)
+
+(require 'xml)
+(require 'muse)
+
+(defvar muse-import-xml-prefix ""
+  "The name prefix for tag functions")
+
+(defvar muse-import-xml-generic-function-name "muse-import-xml-generic"
+  "The generic function name")
+
+(defun muse-import-xml-convert-to-list (buf)
+  "Convert xml BUF in a xml-list"
+  (with-temp-buffer
+    (insert-buffer-substring buf)
+    (goto-char (point-min))
+    (while (re-search-forward ">[ \n\t]*<" nil t)
+      (replace-match "><" nil nil)) ; clean all superfluous blank characters
+    (xml-parse-region (point-min)
+                      (point-max)
+                      (current-buffer))))
+
+
+(defun muse-import-xml-generic (node)
+  "The generic function called when there is no node specific function."
+  (let ((name (xml-node-name node)))
+    (insert "<" (symbol-name name)  ">")
+    (muse-import-xml-node node)
+    (insert "</" (symbol-name name) ">")))
+
+(defun muse-import-xml-parse-tree (lst)
+  "Parse an xml tree list"
+  (mapc #'muse-import-xml-parse-node lst))
+
+(defun muse-import-xml-parse-node (node)
+  "Parse a xml tree node"
+  (if (stringp node)
+      (insert (muse-replace-regexp-in-string "^[ \t]+" "" node))
+    (let ((fname (intern-soft (concat muse-import-xml-prefix
+                                      (symbol-name (xml-node-name node))))))
+      (if (functionp fname)
+          (funcall fname node)
+        (funcall (intern muse-import-xml-generic-function-name) node)))))
+
+
+(defun muse-import-xml-node (node)
+  "Default node function"
+  (muse-import-xml-parse-tree (xml-node-children node)))
+
+
+(defun muse-import-xml (src dest)
+  "Convert the xml SRC buffer in a muse DEST buffer"
+  (set-buffer (get-buffer-create dest))
+  (when (fboundp 'muse-mode)
+    (muse-mode))
+  (muse-import-xml-parse-tree (muse-import-xml-convert-to-list src)))
+
+;;; muse-import-xml.el ends here
diff --git a/packages/muse/muse-ipc.el b/packages/muse/muse-ipc.el
new file mode 100644 (file)
index 0000000..9ce8eb1
--- /dev/null
@@ -0,0 +1,194 @@
+;;; muse-ipc.el --- publish Muse documents from other processes
+
+;; Copyright (C) 2009, 2010  Free Software Foundation, Inc.
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; This file is still in alpha state.  Not for production use!
+
+;;; Contributors:
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Muse Inter-Process Communication
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(eval-when-compile (require 'cl))
+
+(require 'muse)
+(require 'muse-publish)
+
+(defgroup muse-ipc nil
+  "Options controlling the behavior of Muse's IPC module."
+  :group 'muse-publish)
+
+(defcustom muse-ipc-timeout 60
+  "Maximum time to wait for a client to respond."
+  :group 'muse-ipc
+  :type 'number)
+
+(defcustom muse-ipc-ignore-done nil
+  "If non-nil, ignore any 'done' messages that we get from clients."
+  :group 'muse-ipc
+  :type 'boolean)
+
+(defvar muse-ipc-server-port nil
+  "Port of the Emacs server.")
+
+(defvar muse-ipc-server-process nil
+  "Process of the Emacs server.")
+
+(defvar muse-ipc-server-registered nil
+  "Whether we have successfully registered our port with the client.")
+
+(defun muse-ipc-init-filter (proc string)
+  "Handle data from client while initiating a connection."
+  (unless muse-ipc-server-registered
+    (when (string-match "\\`ok$" string)
+      (setq muse-ipc-server-registered t))))
+
+(defun muse-ipc-delete-client (proc)
+  "Delete a client."
+  (let ((buffer (process-get proc :buffer)))
+    (when (and buffer (buffer-live-p buffer))
+      (with-current-buffer buffer
+        (set-buffer-modified-p nil))
+      (kill-buffer buffer)))
+  (when (eq (process-status proc) 'open)
+    (delete-process proc)))
+
+(defun* muse-ipc-server-filter (proc string)
+  "Handle data from a client after it connects."
+  ;; Authenticate
+  (unless (process-get proc :authenticated)
+    (if (and (string-match "\\`begin \\(.+\\)$" string)
+             (equal (match-string 1 string)
+                    (process-get proc :shared-secret)))
+        (progn
+          (setq string (substring string (match-end 0)))
+          (process-put proc :authenticated t)
+          (process-send-string proc "ok\n"))
+      (process-send-string proc "nok\n")
+      (delete-process proc))
+    (return-from muse-ipc-server-filter))
+
+  ;; Handle case where the client is sending data to be published
+  (when (process-get proc :sending-data)
+    (with-current-buffer (process-get proc :buffer)
+      (insert string)
+      (let ((buf-len (1- (point)))
+            (expected-len (process-get proc :data-bytes)))
+        (cond ((= buf-len expected-len)
+               (process-put proc :sending-data nil))
+              ((> buf-len expected-len)
+               (process-send-string proc "nok\n")
+               (muse-ipc-delete-client proc)))))
+    (return-from muse-ipc-server-filter))
+
+  ;; Dispatch commands
+  (cond
+   ((string-match "\\`done$" string)
+    ;; done, close the server
+    (unless muse-ipc-ignore-done
+      (muse-ipc-stop-server)))
+
+   ((string-match "\\`name \\(.+\\)$" string)
+    ;; set name
+    (process-put proc :file-name (match-string 1 string))
+    (process-send-string proc "ok\n"))
+
+   ((string-match "\\`title \\(.+\\)$" string)
+    ;; set title
+    (process-put proc :title (match-string 1 string))
+    (process-send-string proc "ok\n"))
+
+   (t
+    ;; unrecognized command
+    (process-send-string proc "nok\n"))))
+
+(defun muse-ipc-stop-server ()
+  "Stop Muse IPC server and reset connection data."
+  (stop-process muse-ipc-server-process)
+  (delete-process muse-ipc-server-process)
+  (setq muse-ipc-server-port nil)
+  (setq muse-ipc-server-process nil))
+
+(defun muse-ipc-start (shared-secret publish-fn client-port &optional server-port)
+  "Start an IPC connection and send a response to CLIENT-PORT.
+If SERVER-PORT is provided, start the IPC server on that port, otherwise
+choose a random port.
+
+SHARED-SECRET is used as a very minimal security measure to
+authenticate the Muse IPC server during initialization, and also
+any incoming clients once the server is started.
+
+PUBLISH-FN is the function which should be called in buffer of
+the received contents.  It should transform the buffer into a
+published state.  It must take at least two arguments.  The first
+argument is the full path of the file that the contents
+correspond with.  The second argument is the title to use when
+publishing the file."
+  (when (stringp client-port)
+    (setq client-port (string-to-number client-port)))
+  (when (stringp server-port)
+    (setq server-port (string-to-number server-port)))
+  (setq muse-ipc-server-process
+        (make-network-process
+         :name "muse-ipc"
+         :buffer nil
+         :host 'local :service (or server-port t)
+         :server t :noquery t :nowait t
+         :plist (list :authenticated nil :shared-secret shared-secret
+                      :publish-fn publish-fn)
+         :filter 'muse-ipc-server-filter))
+  (unless muse-ipc-server-process
+    (error "Error: Could not start Muse IPC Server process"))
+  (set-process-coding-system muse-ipc-server-process
+                             'raw-text-unix 'raw-text-unix)
+  (setq muse-ipc-server-port
+        (number-to-string
+         (cadr (process-contact muse-ipc-server-process))))
+  (let ((client-proc
+         (make-network-process
+          :name "muse-ipc-client"
+          :buffer nil
+          :host 'local :service client-port
+          :noquery t
+          :filter 'muse-ipc-init-filter)))
+    (setq muse-ipc-server-registered nil)
+    (process-send-string client-proc
+                         (concat "begin " shared-secret "\n"))
+    (accept-process-output client-proc muse-ipc-timeout nil t)
+    (unless muse-ipc-server-registered
+      (error "Error: Did not register listener"))
+    (process-send-string client-proc
+                         (concat "port " muse-ipc-server-port "\n"))
+    (stop-process client-proc)
+    (delete-process client-proc))
+
+  ;; Accept process output until the server dies
+  (while muse-ipc-server-process (accept-process-output nil 1)))
+
+(provide 'muse-ipc)
+
+;;; muse-ipc.el ends here
diff --git a/packages/muse/muse-journal.el b/packages/muse/muse-journal.el
new file mode 100644 (file)
index 0000000..e523b4c
--- /dev/null
@@ -0,0 +1,774 @@
+;;; muse-journal.el --- keep and publish a journal
+
+;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; The module facilitates the keeping and publication of a journal.
+;; When publishing to HTML, it assumes the form of a web log, or blog.
+;;
+;; The input format for each entry is as follows:
+;;
+;;   * 20040317: Title of entry
+;;
+;;   Text for the entry.
+;;
+;;   <qotd>
+;;   "You know who you are. It comes down to a simple gut check: You
+;;   either love what you do or you don't. Period." -- P. Bronson
+;;   </qotd>
+;;
+;; The "qotd", or Quote of the Day, is entirely optional.  When
+;; generated to HTML, this entry is rendered as:
+;;
+;;   <div class="entry">
+;;     <div class="entry-qotd">
+;;       <h3>Quote of the Day:</h3>
+;;       <p>"You know who you are. It comes down to a simple gut
+;;         check: You either love what you do or you don't. Period."
+;;         -- P. Bronson</p>
+;;     </div>
+;;     <div class="entry-body">
+;;       <div class="entry-head">
+;;         <div class="entry-date">
+;;           <span class="date">March 17, 2004</span>
+;;         </div>
+;;         <div class="entry-title">
+;;           <h2>Title of entry</h2>
+;;         </div>
+;;       </div>
+;;       <div class="entry-text">
+;;         <p>Text for the entry.</p>
+;;       </div>
+;;     </div>
+;;   </div>
+;;
+;; The plurality of "div" tags makes it possible to display the
+;; entries in any form you wish, using a CSS style.
+;;
+;; Also, an .RDF file can be generated from your journal by publishing
+;; it with the "rdf" style.  It uses the first two sentences of the
+;; first paragraph of each entry as its "description", and
+;; autogenerates tags for linking to the various entries.
+
+;;; Contributors:
+
+;; René Stadler (mail AT renestadler DOT de) provided a patch that
+;; causes dates in RSS feeds to be generated in a format that RSS
+;; readers can parse.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Muse Journal Publishing
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'muse-publish)
+(require 'muse-html)
+(require 'muse-latex)
+(require 'muse-book)
+
+(defgroup muse-journal nil
+  "Rules for transforming a journal into its final form."
+  :group 'muse-publish)
+
+(defcustom muse-journal-heading-regexp
+  "\\(?:\\([0-9]+\\)\\(?:: \\)?\\)?\\(.+?\\)?"
+  "A regexp that matches a journal heading.
+Paren group 1 is the ISO date, group 2 is the optional category,
+and group 3 is the optional heading for the entry."
+  :type 'regexp
+  :group 'muse-journal)
+
+(defcustom muse-journal-date-format "%a, %e %b %Y"
+  "Date format to use for journal entries."
+  :type 'string
+  :group 'muse-journal)
+
+(defcustom muse-journal-html-heading-regexp
+  (concat "^<h2[^>\n]*>" muse-journal-heading-regexp "</h2>$")
+  "A regexp that matches a journal heading from an HTML document.
+Paren group 1 is the ISO date, group 2 is the optional category,
+and group 3 is the optional heading for the entry."
+  :type 'regexp
+  :group 'muse-journal)
+
+(defcustom muse-journal-rss-heading-regexp
+  (concat "^\\* " muse-journal-heading-regexp "$")
+  "A regexp that matches a journal heading from an HTML document.
+Paren group 1 is the ISO date, group 2 is the optional category,
+and group 3 is the optional heading for the entry."
+  :type 'regexp
+  :group 'muse-journal)
+
+(defcustom muse-journal-html-entry-template
+  "<div class=\"entry\">
+  <a name=\"%anchor%\" style=\"text-decoration: none\">&nbsp;</a>
+  <div class=\"entry-body\">
+    <div class=\"entry-head\">
+      <div class=\"entry-date\">
+        <span class=\"date\">%date%</span>
+      </div>
+      <div class=\"entry-title\">
+        <h2>%title%</h2>
+      </div>
+    </div>
+    <div class=\"entry-text\">
+      <div class=\"entry-qotd\">
+        <p>%qotd%</p>
+      </div>
+%text%
+    </div>
+  </div>
+</div>\n\n"
+  "Template used to publish individual journal entries as HTML.
+This may be text or a filename."
+  :type 'string
+  :group 'muse-journal)
+
+(defcustom muse-journal-latex-section
+  "\\section*{%title% \\hfill {\\normalsize %date%}}
+\\addcontentsline{toc}{chapter}{%title%}"
+  "Template used to publish a LaTeX section."
+  :type 'string
+  :group 'muse-journal)
+
+(defcustom muse-journal-latex-subsection
+  "\\subsection*{%title%}
+\\addcontentsline{toc}{section}{%title%}"
+  "Template used to publish a LaTeX subsection."
+  :type 'string
+  :group 'muse-journal)
+
+(defcustom muse-journal-markup-tags
+  '(("qotd" t nil nil muse-journal-qotd-tag))
+  "A list of tag specifications, for specially marking up Journal entries.
+See `muse-publish-markup-tags' for more info.
+
+This is used by journal-latex and its related styles, as well as
+the journal-rss-entry style, which both journal-rdf and
+journal-rss use."
+  :type '(repeat (list (string :tag "Markup tag")
+                       (boolean :tag "Expect closing tag" :value t)
+                       (boolean :tag "Parse attributes" :value nil)
+                       (boolean :tag "Nestable" :value nil)
+                       function))
+  :group 'muse-journal)
+
+;; FIXME: This doesn't appear to be used.
+(defun muse-journal-generate-pages ()
+  (let ((output-dir (muse-style-element :path)))
+    (goto-char (point-min))
+    (while (re-search-forward muse-journal-heading-regexp nil t)
+      (let* ((date (match-string 1))
+             (category (match-string 1))
+             (category-file (concat output-dir category "/index.html"))
+             (heading (match-string 1)))
+        t))))
+
+(defcustom muse-journal-rdf-extension ".rdf"
+  "Default file extension for publishing RDF (RSS 1.0) files."
+  :type 'string
+  :group 'muse-journal)
+
+(defcustom muse-journal-rdf-base-url ""
+  "The base URL of the website referenced by the RDF file."
+  :type 'string
+  :group 'muse-journal)
+
+(defcustom muse-journal-rdf-header
+  "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"
+         xmlns=\"http://purl.org/rss/1.0/\"
+         xmlns:dc=\"http://purl.org/dc/elements/1.1/\">
+  <channel rdf:about=\"<lisp>(concat (muse-style-element :base-url)
+                                     (muse-publish-link-name))</lisp>\">
+    <title><lisp>(muse-publishing-directive \"title\")</lisp></title>
+    <link><lisp>(concat (muse-style-element :base-url)
+                       (concat (muse-page-name)
+                               muse-html-extension))</lisp></link>
+    <description><lisp>(muse-publishing-directive \"desc\")</lisp></description>
+    <items>
+      <rdf:Seq>
+        <rdf:li resource=\"<lisp>
+          (concat (muse-style-element :base-url)
+                  (concat (muse-page-name)
+                          muse-html-extension))</lisp>\"/>
+      </rdf:Seq>
+    </items>
+  </channel>\n"
+  "Header used for publishing RDF (RSS 1.0) files.
+This may be text or a filename."
+  :type 'string
+  :group 'muse-journal)
+
+(defcustom muse-journal-rdf-footer
+  "</rdf:RDF>\n"
+  "Footer used for publishing RDF (RSS 1.0) files.
+This may be text or a filename."
+  :type 'string
+  :group 'muse-journal)
+
+(defcustom muse-journal-rdf-date-format
+  "%Y-%m-%dT%H:%M:%S"
+  "Date format to use for RDF entries."
+  :type 'string
+  :group 'muse-journal)
+
+(defcustom muse-journal-rdf-entry-template
+  "\n  <item rdf:about=\"%link%#%anchor%\">
+    <title>%title%</title>
+    <description>
+      %desc%
+    </description>
+    <link>%link%#%anchor%</link>
+    <dc:date>%date%</dc:date>
+    <dc:creator>%maintainer%</dc:creator>
+  </item>\n"
+  "Template used to publish individual journal entries as RDF.
+This may be text or a filename."
+  :type 'string
+  :group 'muse-journal)
+
+(defcustom muse-journal-rdf-summarize-entries nil
+  "If non-nil, include only summaries in the RDF file, not the full data.
+
+The default is nil, because this annoys some subscribers."
+  :type 'boolean
+  :group 'muse-journal)
+
+(defcustom muse-journal-rss-extension ".xml"
+  "Default file extension for publishing RSS 2.0 files."
+  :type 'string
+  :group 'muse-journal)
+
+(defcustom muse-journal-rss-base-url ""
+  "The base URL of the website referenced by the RSS file."
+  :type 'string
+  :group 'muse-journal)
+
+(defcustom muse-journal-rss-header
+  "<\?xml version=\"1.0\" encoding=\"<lisp>
+  (muse-html-encoding)</lisp>\"?>
+<rss version=\"2.0\">
+  <channel>
+    <title><lisp>(muse-publishing-directive \"title\")</lisp></title>
+    <link><lisp>(concat (muse-style-element :base-url)
+                        (concat (muse-page-name)
+                                muse-html-extension))</lisp></link>
+    <description><lisp>(muse-publishing-directive \"desc\")</lisp></description>
+    <language>en-us</language>
+    <generator>Emacs Muse</generator>\n\n"
+  "Header used for publishing RSS 2.0 files.  This may be text or a filename."
+  :type 'string
+  :group 'muse-journal)
+
+(defcustom muse-journal-rss-footer
+  "\n\n  </channel>
+</rss>\n"
+  "Footer used for publishing RSS 2.0 files.  This may be text or a filename."
+  :type 'string
+  :group 'muse-journal)
+
+(defcustom muse-journal-rss-date-format
+  "%a, %d %b %Y %H:%M:%S %Z"
+  "Date format to use for RSS 2.0 entries."
+  :type 'string
+  :group 'muse-journal)
+
+(defcustom muse-journal-rss-entry-template
+  "\n    <item>
+      <title>%title%</title>
+      <link>%link%#%anchor%</link>
+      <description>%desc%</description>
+      <author><lisp>(muse-publishing-directive \"author\")</lisp></author>
+      <pubDate>%date%</pubDate>
+      <guid>%link%#%anchor%</guid>
+      %enclosure%
+    </item>\n"
+  "Template used to publish individual journal entries as RSS 2.0.
+This may be text or a filename."
+  :type 'string
+  :group 'muse-journal)
+
+(defcustom muse-journal-rss-enclosure-types-alist
+  '(("mp3" . "audio/mpeg"))
+  "File types that are accepted as RSS enclosures.
+This is an alist that maps file extension to content type.
+Useful for podcasting."
+  :type '(alist :key-type string :value-type string)
+  :group 'muse-journal)
+
+(defcustom muse-journal-rss-summarize-entries nil
+  "If non-nil, include only summaries in the RSS file, not the full data.
+
+The default is nil, because this annoys some subscribers."
+  :type 'boolean
+  :group 'muse-journal)
+
+(defcustom muse-journal-rss-markup-regexps
+  '((10000 muse-explicit-link-regexp 0 "\\2"))
+  "List of markup rules for publishing a Muse journal page to RSS 2.0.
+For more information on the structure of this list, see
+`muse-publish-markup-regexps'."
+  :type '(repeat (choice
+                  (list :tag "Markup rule"
+                        integer
+                        (choice regexp symbol)
+                        integer
+                        (choice string function symbol))
+                  function))
+  :group 'muse-journal)
+
+(defcustom muse-journal-rss-markup-functions
+  '((email . ignore)
+    (link  . ignore)
+    (url   . ignore))
+  "An alist of style types to custom functions for that kind of text.
+For more on the structure of this list, see
+`muse-publish-markup-functions'."
+  :type '(alist :key-type symbol :value-type function)
+  :group 'muse-journal)
+
+(defun muse-journal-anchorize-title (title)
+  "This strips tags from TITLE, truncates TITLE at begin parenthesis,
+and escapes any remaining non-alphanumeric characters."
+  (save-match-data
+    (if (string-match "(" title)
+        (setq title (substring title 0 (match-beginning 0))))
+    (if (string-match "<[^>]+>" title)
+        (setq title (replace-match "" nil nil title)))
+    (let (pos code len ch)
+      (while (setq pos (string-match (concat "[^" muse-regexp-alnum "_]")
+                                     title pos))
+          (setq ch (aref title pos)
+                code (format "%%%02X" (cond ((fboundp 'char-to-ucs)
+                                             (char-to-ucs ch))
+                                            ((fboundp 'char-to-int)
+                                             (char-to-int ch))
+                                            (t ch)))
+                len (length code)
+                title (concat (substring title 0 pos)
+                              code
+                              (when (< pos (length title))
+                                (substring title (1+ pos) nil)))
+                pos (+ len pos)))
+        title)))
+
+(defun muse-journal-sort-entries (&optional direction)
+  (interactive "P")
+  (sort-subr
+   direction
+   (function
+    (lambda ()
+      (if (re-search-forward "^\\* [0-9]+" nil t)
+          (goto-char (match-beginning 0))
+        (goto-char (point-max)))))
+   (function
+    (lambda ()
+      (if (re-search-forward "^\\* [0-9]+" nil t)
+          (goto-char (1- (match-beginning 0)))
+        (goto-char (point-max)))))
+   (function
+    (lambda ()
+      (forward-char 2)))
+   (function
+    (lambda ()
+      (end-of-line)))))
+
+(defun muse-journal-qotd-tag (beg end)
+  (muse-publish-ensure-block beg end)
+  (muse-insert-markup (muse-markup-text 'begin-quote))
+  (muse-insert-markup (muse-markup-text 'begin-quote-item))
+  (goto-char end)
+  (muse-insert-markup (muse-markup-text 'end-quote-item))
+  (muse-insert-markup (muse-markup-text 'end-quote)))
+
+(defun muse-journal-html-munge-buffer ()
+  (goto-char (point-min))
+  (let ((heading-regexp muse-journal-html-heading-regexp)
+        (inhibit-read-only t))
+    (while (re-search-forward heading-regexp nil t)
+      (let* ((date (match-string 1))
+             (orig-date date)
+             (title (match-string 2))
+             (clean-title title)
+             datestamp qotd text)
+        (delete-region (match-beginning 0) (match-end 0))
+        (if clean-title
+            (save-match-data
+              (while (string-match "\\(^<[^>]+>\\|<[^>]+>$\\)" clean-title)
+                (setq clean-title (replace-match "" nil nil clean-title)))))
+        (save-match-data
+          (when (and date
+                     (string-match
+                      (concat "\\`\\([1-9][0-9][0-9][0-9]\\)[./]?"
+                              "\\([0-1][0-9]\\)[./]?\\([0-3][0-9]\\)") date))
+            (setq datestamp
+                  (encode-time
+                   0 0 0
+                   (string-to-number (match-string 3 date))
+                   (string-to-number (match-string 2 date))
+                   (string-to-number (match-string 1 date))
+                   nil)
+                  date (concat (format-time-string
+                                muse-journal-date-format datestamp)
+                               (substring date (match-end 0))))))
+        (save-restriction
+          (narrow-to-region
+           (point) (if (re-search-forward
+                        (concat "\\(^<hr>$\\|"
+                                heading-regexp "\\)") nil t)
+                       (match-beginning 0)
+                     (point-max)))
+          (goto-char (point-max))
+          (while (and (not (bobp))
+                      (eq ?\  (char-syntax (char-before))))
+            (delete-char -1))
+          (goto-char (point-min))
+          (while (and (not (eobp))
+                      (eq ?\  (char-syntax (char-after))))
+            (delete-char 1))
+          (save-excursion
+            (when (search-forward "<qotd>" nil t)
+              (let ((tag-beg (match-beginning 0))
+                    (beg (match-end 0))
+                    end)
+                (re-search-forward "</qotd>\n*")
+                (setq end (point-marker))
+                (save-restriction
+                  (narrow-to-region beg (match-beginning 0))
+                  (muse-publish-escape-specials (point-min) (point-max)
+                                                nil 'document)
+                  (setq qotd (buffer-substring-no-properties
+                              (point-min) (point-max))))
+                (delete-region tag-beg end)
+                (set-marker end nil))))
+          (setq text (buffer-string))
+          (delete-region (point-min) (point-max))
+          (let ((entry muse-journal-html-entry-template))
+            (muse-insert-file-or-string entry)
+            (muse-publish-mark-read-only (point-min) (point-max))
+            (goto-char (point-min))
+            (while (search-forward "%date%" nil t)
+              (remove-text-properties (match-beginning 0) (match-end 0)
+                                      '(read-only nil rear-nonsticky nil))
+              (replace-match (or date "") nil t))
+            (goto-char (point-min))
+            (while (search-forward "%title%" nil t)
+              (remove-text-properties (match-beginning 0) (match-end 0)
+                                      '(read-only nil rear-nonsticky nil))
+              (replace-match (or title "&nbsp;") nil t))
+            (goto-char (point-min))
+            (while (search-forward "%anchor%" nil t)
+              (replace-match (muse-journal-anchorize-title
+                              (or clean-title orig-date))
+                             nil t))
+            (goto-char (point-min))
+            (while (search-forward "%qotd%" nil t)
+              (save-restriction
+                (narrow-to-region (match-beginning 0) (match-end 0))
+                (delete-region (point-min) (point-max))
+                (when qotd (muse-insert-markup qotd))))
+            (goto-char (point-min))
+            (while (search-forward "%text%" nil t)
+              (remove-text-properties (match-beginning 0) (match-end 0)
+                                      '(read-only nil rear-nonsticky nil))
+              (replace-match text nil t))
+            (when (null qotd)
+              (goto-char (point-min))
+              (when (search-forward "<div class=\"entry-qotd\">" nil t)
+                (let ((beg (match-beginning 0)))
+                  (re-search-forward "</div>\n*" nil t)
+                  (delete-region beg (point))))))))))
+  ;; indicate that we are to continue the :before-end processing
+  nil)
+
+(defun muse-journal-latex-munge-buffer ()
+  (goto-char (point-min))
+  (let ((heading-regexp
+         (concat "^" (regexp-quote (muse-markup-text 'section))
+                 muse-journal-heading-regexp
+                 (regexp-quote (muse-markup-text 'section-end)) "$"))
+        (inhibit-read-only t))
+    (when (re-search-forward heading-regexp nil t)
+      (goto-char (match-beginning 0))
+      (sort-subr nil
+                 (function
+                  (lambda ()
+                    (if (re-search-forward heading-regexp nil t)
+                        (goto-char (match-beginning 0))
+                      (goto-char (point-max)))))
+                 (function
+                  (lambda ()
+                    (if (re-search-forward heading-regexp nil t)
+                        (goto-char (1- (match-beginning 0)))
+                      (goto-char (point-max)))))
+                 (function
+                  (lambda ()
+                    (forward-char 2)))
+                 (function
+                  (lambda ()
+                    (end-of-line)))))
+    (while (re-search-forward heading-regexp nil t)
+      (let ((date (match-string 1))
+            (title (match-string 2))
+            ;; FIXME: Nothing is done with qotd
+            qotd section)
+        (save-match-data
+          (when (and date
+                     (string-match
+                      (concat "\\([1-9][0-9][0-9][0-9]\\)[./]?"
+                              "\\([0-1][0-9]\\)[./]?\\([0-3][0-9]\\)") date))
+            (setq date (encode-time
+                        0 0 0
+                        (string-to-number (match-string 3 date))
+                        (string-to-number (match-string 2 date))
+                        (string-to-number (match-string 1 date))
+                        nil)
+                  date (format-time-string
+                        muse-journal-date-format date))))
+        (save-restriction
+          (narrow-to-region (match-beginning 0) (match-end 0))
+          (delete-region (point-min) (point-max))
+          (muse-insert-markup muse-journal-latex-section)
+          (goto-char (point-min))
+          (while (search-forward "%title%" nil t)
+            (replace-match (or title "Untitled") nil t))
+          (goto-char (point-min))
+          (while (search-forward "%date%" nil t)
+            (replace-match (or date "") nil t))))))
+  (goto-char (point-min))
+  (let ((subheading-regexp
+         (concat "^" (regexp-quote (muse-markup-text 'subsection))
+                 "\\([^\n}]+\\)"
+                 (regexp-quote (muse-markup-text 'subsection-end)) "$"))
+        (inhibit-read-only t))
+    (while (re-search-forward subheading-regexp nil t)
+      (let ((title (match-string 1)))
+        (save-restriction
+          (narrow-to-region (match-beginning 0) (match-end 0))
+          (delete-region (point-min) (point-max))
+          (muse-insert-markup muse-journal-latex-subsection)
+          (goto-char (point-min))
+          (while (search-forward "%title%" nil t)
+            (replace-match title nil t))))))
+  ;; indicate that we are to continue the :before-end processing
+  nil)
+
+(defun muse-journal-rss-munge-buffer ()
+  (goto-char (point-min))
+  (let ((heading-regexp muse-journal-rss-heading-regexp)
+        (inhibit-read-only t))
+    (while (re-search-forward heading-regexp nil t)
+      (let* ((date (match-string 1))
+             (orig-date date)
+             (title (match-string 2))
+             ;; FIXME: Nothing is done with qotd
+             enclosure qotd desc)
+        (if title
+            (save-match-data
+              (if (string-match muse-explicit-link-regexp title)
+                  (setq enclosure (muse-get-link title)
+                        title (muse-get-link-desc title)))))
+        (save-match-data
+          (when (and date
+                     (string-match
+                      (concat "\\([1-9][0-9][0-9][0-9]\\)[./]?"
+                              "\\([0-1][0-9]\\)[./]?\\([0-3][0-9]\\)") date))
+            (setq date (encode-time 0 0 0
+                                    (string-to-number (match-string 3 date))
+                                    (string-to-number (match-string 2 date))
+                                    (string-to-number (match-string 1 date))
+                                    nil)
+                  ;; make sure that date is in a format that RSS
+                  ;; readers can handle
+                  date (let ((system-time-locale "C"))
+                         (format-time-string
+                          (muse-style-element :date-format) date)))))
+        (save-restriction
+          (narrow-to-region
+           (match-beginning 0)
+           (if (re-search-forward heading-regexp nil t)
+               (match-beginning 0)
+             (if (re-search-forward "^Footnotes:" nil t)
+                 (match-beginning 0)
+               (point-max))))
+          (goto-char (point-min))
+          (delete-region (point) (muse-line-end-position))
+          (re-search-forward "</qotd>\n+" nil t)
+          (while (and (char-after)
+                      (eq ?\  (char-syntax (char-after))))
+            (delete-char 1))
+          (let ((beg (point)))
+            (if (muse-style-element :summarize)
+                (progn
+                  (forward-sentence 2)
+                  (setq desc (concat (buffer-substring beg (point)) "...")))
+              (save-restriction
+                (muse-publish-markup-buffer "rss-entry" "journal-rss-entry")
+                (goto-char (point-min))
+                (if (re-search-forward "Page published by Emacs Muse" nil t)
+                    (goto-char (muse-line-end-position))
+                  (muse-display-warning
+                   (concat
+                    "Cannot find 'Page published by Emacs Muse begins here'.\n"
+                    "You will probably need this text in your header."))
+                  (goto-char (point-min)))
+                (setq beg (point))
+                (if (re-search-forward "Page published by Emacs Muse" nil t)
+                    (goto-char (muse-line-beginning-position))
+                  (muse-display-warning
+                   (concat
+                    "Cannot find 'Page published by Emacs Muse ends here'.\n"
+                    "You will probably need this text in your footer."))
+                  (goto-char (point-max)))
+                (setq desc (buffer-substring beg (point))))))
+          (unless (string= desc "")
+            (setq desc (concat "<![CDATA[" desc "]]>")))
+          (delete-region (point-min) (point-max))
+          (let ((entry (muse-style-element :entry-template)))
+            (muse-insert-file-or-string entry)
+            (goto-char (point-min))
+            (while (search-forward "%date%" nil t)
+              (replace-match (or date "") nil t))
+            (goto-char (point-min))
+            (while (search-forward "%title%" nil t)
+              (replace-match "")
+              (save-restriction
+                (narrow-to-region (point) (point))
+                (insert (or title "Untitled"))
+                (remove-text-properties (match-beginning 0) (match-end 0)
+                                        '(read-only nil rear-nonsticky nil))
+                (let ((muse-publishing-current-style (muse-style "html")))
+                  (muse-publish-escape-specials (point-min) (point-max)
+                                                nil 'document))))
+            (goto-char (point-min))
+            (while (search-forward "%desc%" nil t)
+              (replace-match desc nil t))
+            (goto-char (point-min))
+            (while (search-forward "%enclosure%" nil t)
+              (replace-match
+               (if (null enclosure)
+                   ""
+                 (save-match-data
+                   (format
+                    "<enclosure url=\"%s\" %stype=\"%s\"/>"
+                    (if (string-match "//" enclosure)
+                        enclosure
+                      (concat (muse-style-element :base-url)
+                              enclosure))
+                    (let ((file
+                           (expand-file-name enclosure
+                                             (muse-style-element :path))))
+                      (if (file-readable-p file)
+                          (format "length=\"%d\" "
+                                  (nth 7 (file-attributes file)))
+                        ""))
+                    (if (string-match "\\.\\([^.]+\\)$" enclosure)
+                        (let* ((ext (match-string 1 enclosure))
+                               (type
+                                (assoc
+                                 ext muse-journal-rss-enclosure-types-alist)))
+                          (if type
+                              (cdr type)
+                            "application/octet-stream"))))))
+               nil t))
+            (goto-char (point-min))
+            (while (search-forward "%link%" nil t)
+              (replace-match
+               (concat (muse-style-element :base-url)
+                       (concat (muse-page-name)
+                               muse-html-extension))
+               nil t))
+            (goto-char (point-min))
+            (while (search-forward "%anchor%" nil t)
+              (replace-match
+               (muse-journal-anchorize-title (or title orig-date))
+               nil t))
+            (goto-char (point-min))
+            (while (search-forward "%maintainer%" nil t)
+              (replace-match
+               (or (muse-style-element :maintainer)
+                   (concat "webmaster@" (system-name)))
+               nil t)))))))
+  ;; indicate that we are to continue the :before-end processing
+  nil)
+
+
+;;; Register the Muse Journal Publishers
+
+(muse-derive-style "journal-html" "html"
+                   :before-end 'muse-journal-html-munge-buffer)
+
+(muse-derive-style "journal-xhtml" "xhtml"
+                   :before-end 'muse-journal-html-munge-buffer)
+
+(muse-derive-style "journal-latex" "latex"
+                   :tags 'muse-journal-markup-tags
+                   :before-end 'muse-journal-latex-munge-buffer)
+
+(muse-derive-style "journal-pdf" "pdf"
+                   :tags 'muse-journal-markup-tags
+                   :before-end 'muse-journal-latex-munge-buffer)
+
+(muse-derive-style "journal-book-latex" "book-latex"
+                   ;;:nochapters
+                   :tags 'muse-journal-markup-tags
+                   :before-end 'muse-journal-latex-munge-buffer)
+
+(muse-derive-style "journal-book-pdf" "book-pdf"
+                   ;;:nochapters
+                   :tags 'muse-journal-markup-tags
+                   :before-end 'muse-journal-latex-munge-buffer)
+
+(muse-define-style "journal-rdf"
+                   :suffix         'muse-journal-rdf-extension
+                   :regexps        'muse-journal-rss-markup-regexps
+                   :functions      'muse-journal-rss-markup-functions
+                   :before         'muse-journal-rss-munge-buffer
+                   :header         'muse-journal-rdf-header
+                   :footer         'muse-journal-rdf-footer
+                   :date-format    'muse-journal-rdf-date-format
+                   :entry-template 'muse-journal-rdf-entry-template
+                   :base-url       'muse-journal-rdf-base-url
+                   :summarize      'muse-journal-rdf-summarize-entries)
+
+(muse-define-style "journal-rss"
+                   :suffix         'muse-journal-rss-extension
+                   :regexps        'muse-journal-rss-markup-regexps
+                   :functions      'muse-journal-rss-markup-functions
+                   :before         'muse-journal-rss-munge-buffer
+                   :header         'muse-journal-rss-header
+                   :footer         'muse-journal-rss-footer
+                   :date-format    'muse-journal-rss-date-format
+                   :entry-template 'muse-journal-rss-entry-template
+                   :base-url       'muse-journal-rss-base-url
+                   :summarize      'muse-journal-rss-summarize-entries)
+
+;; Used by `muse-journal-rss-munge-buffer' to mark up individual entries
+(muse-derive-style "journal-rss-entry" "html"
+                   :tags 'muse-journal-markup-tags)
+
+(provide 'muse-journal)
+
+;;; muse-journal.el ends here
diff --git a/packages/muse/muse-latex.el b/packages/muse/muse-latex.el
new file mode 100644 (file)
index 0000000..e416367
--- /dev/null
@@ -0,0 +1,669 @@
+;;; muse-latex.el --- publish entries in LaTex or PDF format
+
+;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;;; Contributors:
+
+;; Li Daobing (lidaobing AT gmail DOT com) provided CJK support.
+
+;; Trent Buck (trentbuck AT gmail DOT com) gave valuable advice for
+;; how to treat LaTeX specials and the like.
+
+;; Matthias Kegelmann (mathias DOT kegelmann AT sdm DOT de) provided a
+;; scenario where we would need to respect the <contents> tag.
+
+;; Jean Magnan de Bornier (jean AT bornier DOT net) provided the
+;; markup string for link-and-anchor.
+
+;; Jim Ottaway (j DOT ottaway AT lse DOT ac DOT uk) implemented slides
+;; and lecture notes.
+
+;; Karl Berry (karl AT freefriends DOT org) suggested how to escape
+;; additional special characters in image filenames.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Muse LaTeX Publishing
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'muse-publish)
+
+(defgroup muse-latex nil
+  "Rules for marking up a Muse file as a LaTeX article."
+  :group 'muse-publish)
+
+(defcustom muse-latex-extension ".tex"
+  "Default file extension for publishing LaTeX files."
+  :type 'string
+  :group 'muse-latex)
+
+(defcustom muse-latex-pdf-extension ".pdf"
+  "Default file extension for publishing LaTeX files to PDF."
+  :type 'string
+  :group 'muse-latex)
+
+(defcustom muse-latex-pdf-browser "open %s"
+  "The program to use when browsing a published PDF file.
+This should be a format string."
+  :type 'string
+  :group 'muse-latex)
+
+(defcustom muse-latex-pdf-program "pdflatex"
+  "The program that is called to generate PDF content from LaTeX content."
+  :type 'string
+  :group 'muse-latex)
+
+(defcustom muse-latex-pdf-cruft
+  '(".aux" ".log" ".nav" ".out" ".snm" ".toc" ".vrb")
+  "Extensions of files to remove after generating PDF output successfully."
+  :type 'string
+  :group 'muse-latex)
+
+(defcustom muse-latex-header
+  "\\documentclass{article}
+
+\\usepackage[english]{babel}
+\\usepackage{ucs}
+\\usepackage[utf8x]{inputenc}
+\\usepackage[T1]{fontenc}
+\\usepackage{hyperref}
+\\usepackage[pdftex]{graphicx}
+
+\\def\\museincludegraphics{%
+  \\begingroup
+  \\catcode`\\|=0
+  \\catcode`\\\\=12
+  \\catcode`\\#=12
+  \\includegraphics[width=0.75\\textwidth]
+}
+
+\\begin{document}
+
+\\title{<lisp>(muse-publish-escape-specials-in-string
+  (muse-publishing-directive \"title\") 'document)</lisp>}
+\\author{<lisp>(muse-publishing-directive \"author\")</lisp>}
+\\date{<lisp>(muse-publishing-directive \"date\")</lisp>}
+
+\\maketitle
+
+<lisp>(and muse-publish-generate-contents
+           (not muse-latex-permit-contents-tag)
+           \"\\\\tableofcontents\n\\\\newpage\")</lisp>\n\n"
+  "Header used for publishing LaTeX files.  This may be text or a filename."
+  :type 'string
+  :group 'muse-latex)
+
+(defcustom muse-latex-footer "<lisp>(muse-latex-bibliography)</lisp>
+\\end{document}\n"
+  "Footer used for publishing LaTeX files.  This may be text or a filename."
+  :type 'string
+  :group 'muse-latex)
+
+(defcustom muse-latexcjk-header
+  "\\documentclass{article}
+
+\\usepackage{CJK}
+\\usepackage{indentfirst}
+\\usepackage[CJKbookmarks=true]{hyperref}
+\\usepackage[pdftex]{graphicx}
+
+\\begin{document}
+\\begin{CJK*}<lisp>(muse-latexcjk-encoding)</lisp>
+
+\\title{<lisp>(muse-publish-escape-specials-in-string
+  (muse-publishing-directive \"title\") 'document)</lisp>}
+\\author{<lisp>(muse-publishing-directive \"author\")</lisp>}
+\\date{<lisp>(muse-publishing-directive \"date\")</lisp>}
+
+\\maketitle
+
+<lisp>(and muse-publish-generate-contents
+           (not muse-latex-permit-contents-tag)
+           \"\\\\tableofcontents\n\\\\newpage\")</lisp>\n\n"
+  "Header used for publishing LaTeX files (CJK).  This may be text or a
+filename."
+  :type 'string
+  :group 'muse-latex)
+
+(defcustom muse-latexcjk-footer
+  "\n\\end{CJK*}
+\\end{document}\n"
+  "Footer used for publishing LaTeX files (CJK).  This may be text or a
+filename."
+  :type 'string
+  :group 'muse-latex)
+
+(defcustom muse-latex-slides-header
+  "\\documentclass[ignorenonframetext]{beamer}
+
+\\usepackage[english]{babel}
+\\usepackage{ucs}
+\\usepackage[utf8x]{inputenc}
+\\usepackage[T1]{fontenc}
+\\usepackage{hyperref}
+
+\\def\\museincludegraphics{%
+  \\begingroup
+  \\catcode`\\|=0
+  \\catcode`\\\\=12
+  \\catcode`\\#=12
+  \\includegraphics[width=0.50\\textwidth]
+}
+
+\\title{<lisp>(muse-publish-escape-specials-in-string
+  (muse-publishing-directive \"title\") 'document)</lisp>}
+\\author{<lisp>(muse-publishing-directive \"author\")</lisp>}
+\\date{<lisp>(muse-publishing-directive \"date\")</lisp>}
+
+\\begin{document}
+
+\\frame{\\titlepage}
+
+<lisp>(and muse-publish-generate-contents
+           \"\\\\frame{\\\\tableofcontents}\")</lisp>\n\n"
+  "Header for publishing of slides using LaTeX.
+This may be text or a filename.
+
+You must have the Beamer extension for LaTeX installed for this to work."
+  :type 'string
+  :group 'muse-latex)
+
+(defcustom muse-latex-lecture-notes-header
+  "\\documentclass{article}
+\\usepackage{beamerarticle}
+
+\\usepackage[english]{babel}
+\\usepackage{ucs}
+\\usepackage[utf8x]{inputenc}
+\\usepackage[T1]{fontenc}
+\\usepackage{hyperref}
+\\usepackage[pdftex]{graphicx}
+
+\\def\\museincludegraphics{%
+  \\begingroup
+  \\catcode`\\|=0
+  \\catcode`\\\\=12
+  \\catcode`\\#=12
+  \\includegraphics[width=0.50\\textwidth]
+}
+
+\\title{<lisp>(muse-publish-escape-specials-in-string
+  (muse-publishing-directive \"title\") 'document)</lisp>}
+\\author{<lisp>(muse-publishing-directive \"author\")</lisp>}
+\\date{<lisp>(muse-publishing-directive \"date\")</lisp>}
+
+\\begin{document}
+
+\\frame{\\titlepage}
+
+<lisp>(and muse-publish-generate-contents
+           \"\\\\frame{\\\\tableofcontents}\")</lisp>\n\n"
+  "Header for publishing of lecture notes using LaTeX.
+This may be text or a filename.
+
+You must have the Beamer extension for LaTeX installed for this to work."
+  :type 'string
+  :group 'muse-latex)
+
+(defcustom muse-latex-markup-regexps
+  `(;; numeric ranges
+    (10000 "\\([0-9]+\\)-\\([0-9]+\\)" 0 "\\1--\\2")
+
+    ;; be careful of closing quote pairs
+    (10100 "\"'" 0 "\"\\\\-'"))
+  "List of markup regexps for identifying regions in a Muse page.
+For more on the structure of this list, see `muse-publish-markup-regexps'."
+  :type '(repeat (choice
+                  (list :tag "Markup rule"
+                        integer
+                        (choice regexp symbol)
+                        integer
+                        (choice string function symbol))
+                  function))
+  :group 'muse-latex)
+
+(defcustom muse-latex-markup-functions
+  '((table . muse-latex-markup-table))
+  "An alist of style types to custom functions for that kind of text.
+For more on the structure of this list, see
+`muse-publish-markup-functions'."
+  :type '(alist :key-type symbol :value-type function)
+  :group 'muse-latex)
+
+(defcustom muse-latex-markup-strings
+  '((image-with-desc . "\\begin{figure}[h]
+\\centering\\museincludegraphics{%s.%s}|endgroup
+\\caption{%s}
+\\end{figure}")
+    (image           . "\\begin{figure}[h]
+\\centering\\museincludegraphics{%s.%s}|endgroup
+\\end{figure}")
+    (image-link      . "%% %s
+\\museincludegraphics{%s.%s}|endgroup")
+    (anchor-ref      . "\\ref{%s}")
+    (url             . "\\url{%s}")
+    (url-and-desc    . "\\href{%s}{%s}\\footnote{%1%}")
+    (link            . "\\href{%s}{%s}\\footnote{%1%}")
+    (link-and-anchor . "\\href{%1%}{%3%}\\footnote{%1%}")
+    (email-addr      . "\\verb|%s|")
+    (anchor          . "\\label{%s}")
+    (emdash          . "---")
+    (comment-begin   . "% ")
+    (rule            . "\\vspace{.5cm}\\hrule\\vspace{.5cm}")
+    (no-break-space  . "~")
+    (line-break      . "\\\\")
+    (enddots         . "\\ldots{}")
+    (dots            . "\\dots{}")
+    (part            . "\\part{")
+    (part-end        . "}")
+    (chapter         . "\\chapter{")
+    (chapter-end     . "}")
+    (section         . "\\section{")
+    (section-end     . "}")
+    (subsection      . "\\subsection{")
+    (subsection-end  . "}")
+    (subsubsection   . "\\subsubsection{")
+    (subsubsection-end . "}")
+    (section-other   . "\\paragraph{")
+    (section-other-end . "}")
+    (footnote        . "\\footnote{")
+    (footnote-end    . "}")
+    (footnotetext    . "\\footnotetext[%d]{")
+    (begin-underline . "\\underline{")
+    (end-underline   . "}")
+    (begin-literal   . "\\texttt{")
+    (end-literal     . "}")
+    (begin-emph      . "\\emph{")
+    (end-emph        . "}")
+    (begin-more-emph . "\\textbf{")
+    (end-more-emph   . "}")
+    (begin-most-emph . "\\textbf{\\emph{")
+    (end-most-emph   . "}}")
+    (begin-verse     . "\\begin{verse}\n")
+    (end-verse-line  . " \\\\")
+    (verse-space     . "~~~~")
+    (end-verse       . "\n\\end{verse}")
+    (begin-example   . "\\begin{quote}\n\\begin{verbatim}")
+    (end-example     . "\\end{verbatim}\n\\end{quote}")
+    (begin-center    . "\\begin{center}\n")
+    (end-center      . "\n\\end{center}")
+    (begin-quote     . "\\begin{quote}\n")
+    (end-quote       . "\n\\end{quote}")
+    (begin-cite     . "\\cite{")
+    (begin-cite-author . "\\citet{")
+    (begin-cite-year . "\\citet{")
+    (end-cite        . "}")
+    (begin-uli       . "\\begin{itemize}\n")
+    (end-uli         . "\n\\end{itemize}")
+    (begin-uli-item  . "\\item ")
+    (begin-oli       . "\\begin{enumerate}\n")
+    (end-oli         . "\n\\end{enumerate}")
+    (begin-oli-item  . "\\item ")
+    (begin-dl        . "\\begin{description}\n")
+    (end-dl          . "\n\\end{description}")
+    (begin-ddt       . "\\item[")
+    (end-ddt         . "] \\mbox{}\n"))
+  "Strings used for marking up text.
+These cover the most basic kinds of markup, the handling of which
+differs little between the various styles."
+  :type '(alist :key-type symbol :value-type string)
+  :group 'muse-latex)
+
+(defcustom muse-latex-slides-markup-tags
+  '(("slide" t t nil muse-latex-slide-tag))
+ "A list of tag specifications, for specially marking up LaTeX slides."
+  :type '(repeat (list (string :tag "Markup tag")
+                       (boolean :tag "Expect closing tag" :value t)
+                       (boolean :tag "Parse attributes" :value nil)
+                       (boolean :tag "Nestable" :value nil)
+                       function))
+  :group 'muse-latex)
+
+(defcustom muse-latexcjk-encoding-map
+  '((utf-8              . "{UTF8}{song}")
+    (japanese-iso-8bit  . "[dnp]{JIS}{min}")
+    (chinese-big5       . "{Bg5}{bsmi}")
+    (mule-utf-8         . "{UTF8}{song}")
+    (chinese-iso-8bit   . "{GB}{song}")
+    (chinese-gbk        . "{GBK}{song}"))
+  "An alist mapping emacs coding systems to appropriate CJK codings.
+Use the base name of the coding system (ie, without the -unix)."
+  :type '(alist :key-type coding-system :value-type string)
+  :group 'muse-latex)
+
+(defcustom muse-latexcjk-encoding-default "{GB}{song}"
+  "The default Emacs buffer encoding to use in published files.
+This will be used if no special characters are found."
+  :type 'string
+  :group 'muse-latex)
+
+(defun muse-latexcjk-encoding ()
+  (when (boundp 'buffer-file-coding-system)
+    (muse-latexcjk-transform-content-type buffer-file-coding-system)))
+
+(defun muse-latexcjk-transform-content-type (content-type)
+  "Using `muse-cjklatex-encoding-map', try and resolve an emacs coding
+system to an associated CJK coding system."
+  (let ((match (and (fboundp 'coding-system-base)
+                    (assoc (coding-system-base content-type)
+                           muse-latexcjk-encoding-map))))
+    (if match
+        (cdr match)
+      muse-latexcjk-encoding-default)))
+
+(defcustom muse-latex-markup-specials-document
+  '((?\\ . "\\textbackslash{}")
+    (?\_ . "\\textunderscore{}")
+    (?\< . "\\textless{}")
+    (?\> . "\\textgreater{}")
+    (?^  . "\\^{}")
+    (?\~ . "\\~{}")
+    (?\@ . "\\@")
+    (?\$ . "\\$")
+    (?\% . "\\%")
+    (?\{ . "\\{")
+    (?\} . "\\}")
+    (?\& . "\\&")
+    (?\# . "\\#"))
+  "A table of characters which must be represented specially.
+These are applied to the entire document, sans already-escaped
+regions."
+  :type '(alist :key-type character :value-type string)
+  :group 'muse-latex)
+
+(defcustom muse-latex-markup-specials-example
+  '()
+  "A table of characters which must be represented specially.
+These are applied to <example> regions.
+
+With the default interpretation of <example> regions, no specials
+need to be escaped."
+  :type '(alist :key-type character :value-type string)
+  :group 'muse-latex)
+
+(defcustom muse-latex-markup-specials-literal
+  '((?\n . "\\\n")
+    (?\\ . "\\textbackslash{}")
+    (?_  . "\\textunderscore{}")
+    (?\< . "\\textless{}")
+    (?\> . "\\textgreater{}")
+    (?^  . "\\^{}")
+    (?\~ . "\\~{}")
+    (?\$ . "\\$")
+    (?\% . "\\%")
+    (?\{ . "\\{")
+    (?\} . "\\}")
+    (?\& . "\\&")
+    (?\# . "\\#"))
+  "A table of characters which must be represented specially.
+This applies to =monospaced text= and <code> regions."
+  :type '(alist :key-type character :value-type string)
+  :group 'muse-latex)
+
+(defcustom muse-latex-markup-specials-url
+  '((?\\ . "\\textbackslash{}")
+    (?\_ . "\\_")
+    (?\< . "\\<")
+    (?\> . "\\>")
+    (?\$ . "\\$")
+    (?\% . "\\%")
+    (?\{ . "\\{")
+    (?\} . "\\}")
+    (?\& . "\\&")
+    (?\# . "\\#"))
+  "A table of characters which must be represented specially.
+These are applied to URLs."
+  :type '(alist :key-type character :value-type string)
+  :group 'muse-latex)
+
+(defcustom muse-latex-markup-specials-image
+  '((?\\ . "\\\\")
+    (?\< . "\\<")
+    (?\> . "\\>")
+    (?\$ . "\\$")
+    (?\% . "\\%")
+    (?\{ . "\\{")
+    (?\} . "\\}")
+    (?\& . "\\&")
+    (?\# . "\\#")
+    (?\| . "\\|"))
+  "A table of characters which must be represented specially.
+These are applied to image filenames."
+  :type '(alist :key-type character :value-type string)
+  :group 'muse-latex)
+
+(defun muse-latex-decide-specials (context)
+  "Determine the specials to escape, depending on CONTEXT."
+  (cond ((memq context '(underline emphasis document url-desc verbatim
+                                   footnote))
+         muse-latex-markup-specials-document)
+        ((eq context 'image)
+         muse-latex-markup-specials-image)
+        ((memq context '(email url))
+         muse-latex-markup-specials-url)
+        ((eq context 'literal)
+         muse-latex-markup-specials-literal)
+        ((eq context 'example)
+         muse-latex-markup-specials-example)
+        (t (error "Invalid context '%s' in muse-latex" context))))
+
+(defcustom muse-latex-permit-contents-tag nil
+  "If nil, ignore <contents> tags.  Otherwise, insert table of contents.
+
+Most of the time, it is best to have a table of contents on the
+first page, with a new page immediately following.  To make this
+work with documents published in both HTML and LaTeX, we need to
+ignore the <contents> tag.
+
+If you don't agree with this, then set this option to non-nil,
+and it will do what you expect."
+  :type 'boolean
+  :group 'muse-latex)
+
+(defun muse-latex-markup-table ()
+  (let* ((table-info (muse-publish-table-fields (match-beginning 0)
+                                                (match-end 0)))
+         (row-len (car table-info))
+         (field-list (cdr table-info)))
+    (when table-info
+      (muse-insert-markup "\\begin{tabular}{" (make-string row-len ?l) "}\n")
+      (dolist (fields field-list)
+        (let ((type (car fields)))
+          (setq fields (cdr fields))
+          (if (eq type 'hline)
+              (muse-insert-markup "\\hline\n")
+            (when (= type 3)
+              (muse-insert-markup "\\hline\n"))
+            (insert (car fields))
+            (setq fields (cdr fields))
+            (dolist (field fields)
+              (muse-insert-markup " & ")
+              (insert field))
+            (muse-insert-markup " \\\\\n")
+            (when (= type 2)
+              (muse-insert-markup "\\hline\n")))))
+      (muse-insert-markup "\\end{tabular}"))))
+
+;;; Tags for LaTeX
+
+(defun muse-latex-slide-tag (beg end attrs)
+  "Publish the <slide> tag in LaTeX.
+This is used by the slides and lecture-notes publishing styles."
+  (let ((title (cdr (assoc "title" attrs))))
+    (goto-char beg)
+    (muse-insert-markup "\\begin{frame}[fragile]\n")
+    (when title
+      (muse-insert-markup "\\frametitle{")
+      (insert title)
+      (muse-insert-markup "}\n"))
+    (save-excursion
+      (goto-char end)
+      (muse-insert-markup "\n\\end{frame}"))))
+
+;;; Post-publishing functions
+
+(defun muse-latex-fixup-dquotes ()
+  "Fixup double quotes."
+  (goto-char (point-min))
+  (let ((open t))
+    (while (search-forward "\"" nil t)
+      (unless (get-text-property (match-beginning 0) 'read-only)
+        (when (or (bobp)
+                  (eq (char-before) ?\n))
+          (setq open t))
+        (if open
+            (progn
+              (replace-match "``")
+              (setq open nil))
+          (replace-match "''")
+          (setq open t))))))
+
+(defun muse-latex-fixup-citations ()
+  "Replace semicolons in multi-head citations with colons."
+  (goto-char (point-min))
+  (while (re-search-forward "\\\\cite.?{" nil t)
+    (let ((start (point))
+          (end (re-search-forward "}")))
+      (save-restriction
+        (narrow-to-region start end)
+        (goto-char (point-min))
+        (while (re-search-forward ";" nil t)
+          (replace-match ","))))))
+
+(defun muse-latex-fixup-headings ()
+  "Remove footnotes in headings, since LaTeX does not permit them to exist.
+
+This can happen if there is a link in a heading, because by
+default Muse will add a footnote for each link."
+  (goto-char (point-min))
+  (while (re-search-forward "^\\\\section.?{" nil t)
+    (save-restriction
+      (narrow-to-region (match-beginning 0) (muse-line-end-position))
+      (goto-char (point-min))
+      (while (re-search-forward "\\\\footnote{[^}\n]+}" nil t)
+        (replace-match ""))
+      (forward-line 1))))
+
+(defun muse-latex-munge-buffer ()
+  (muse-latex-fixup-dquotes)
+  (muse-latex-fixup-citations)
+  (muse-latex-fixup-headings)
+  (when (and muse-latex-permit-contents-tag
+             muse-publish-generate-contents)
+    (goto-char (car muse-publish-generate-contents))
+    (muse-insert-markup "\\tableofcontents")))
+
+(defun muse-latex-bibliography ()
+  (save-excursion
+    (goto-char (point-min))
+    (if (re-search-forward "\\\\cite.?{" nil t)
+        (concat
+         "\\bibliography{"
+         (muse-publishing-directive "bibsource")
+         "}\n")
+      "")))
+
+(defun muse-latex-pdf-browse-file (file)
+  (shell-command (format muse-latex-pdf-browser file)))
+
+(defun muse-latex-pdf-generate (file output-path final-target)
+  (apply
+   #'muse-publish-transform-output
+   file output-path final-target "PDF"
+   (function
+    (lambda (file output-path)
+      (let* ((fnd (file-name-directory output-path))
+             (command (format "%s \"%s\""
+                              muse-latex-pdf-program
+                              (file-relative-name file fnd)))
+             (times 0)
+             (default-directory fnd)
+             result)
+        ;; XEmacs can sometimes return a non-number result.  We'll err
+        ;; on the side of caution by continuing to attempt to generate
+        ;; the PDF if this happens and treat the final result as
+        ;; successful.
+        (while (and (< times 2)
+                    (or (not (numberp result))
+                        (not (eq result 0))
+                        ;; table of contents takes 2 passes
+                        (file-readable-p
+                         (muse-replace-regexp-in-string
+                          "\\.tex\\'" ".toc" file t t))))
+          (setq result (shell-command command)
+                times (1+ times)))
+        (if (or (not (numberp result))
+                (eq result 0))
+            t
+          nil))))
+   muse-latex-pdf-cruft))
+
+;;; Register the Muse LATEX Publishers
+
+(muse-define-style "latex"
+                   :suffix    'muse-latex-extension
+                   :regexps   'muse-latex-markup-regexps
+                   :functions 'muse-latex-markup-functions
+                   :strings   'muse-latex-markup-strings
+                   :specials  'muse-latex-decide-specials
+                   :before-end 'muse-latex-munge-buffer
+                   :header    'muse-latex-header
+                   :footer    'muse-latex-footer
+                   :browser   'find-file)
+
+(muse-derive-style "pdf" "latex"
+                   :final   'muse-latex-pdf-generate
+                   :browser 'muse-latex-pdf-browse-file
+                   :link-suffix 'muse-latex-pdf-extension
+                   :osuffix 'muse-latex-pdf-extension)
+
+(muse-derive-style "latexcjk" "latex"
+                   :header    'muse-latexcjk-header
+                   :footer    'muse-latexcjk-footer)
+
+(muse-derive-style "pdfcjk" "latexcjk"
+                   :final   'muse-latex-pdf-generate
+                   :browser 'muse-latex-pdf-browse-file
+                   :link-suffix 'muse-latex-pdf-extension
+                   :osuffix 'muse-latex-pdf-extension)
+
+(muse-derive-style "slides" "latex"
+                   :header 'muse-latex-slides-header
+                   :tags   'muse-latex-slides-markup-tags)
+
+(muse-derive-style "slides-pdf" "pdf"
+                   :header 'muse-latex-slides-header
+                   :tags   'muse-latex-slides-markup-tags)
+
+(muse-derive-style "lecture-notes" "slides"
+                   :header 'muse-latex-lecture-notes-header)
+
+(muse-derive-style "lecture-notes-pdf" "slides-pdf"
+                   :header 'muse-latex-lecture-notes-header)
+
+(provide 'muse-latex)
+
+;;; muse-latex.el ends here
diff --git a/packages/muse/muse-latex2png.el b/packages/muse/muse-latex2png.el
new file mode 100644 (file)
index 0000000..2b4373d
--- /dev/null
@@ -0,0 +1,277 @@
+;; muse-latex2png.el --- generate PNG images from inline LaTeX code
+
+;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; Author: Michael Olson <mwolson@gnu.org>
+;; Created: 12-Oct-2005
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; This was taken from latex2png.el, by Ganesh Swami <ganesh AT
+;; iamganesh DOT com>, which was made for emacs-wiki.  It has since
+;; been extensively rewritten for Muse.
+
+;;; To do
+
+;; Remove stale image files.  This could be done by making a function
+;; for `muse-before-publish-hook' that deletes according to
+;; (muse-page-name).
+
+;;; Code
+
+(require 'muse-publish)
+
+(defgroup muse-latex2png nil
+  "Publishing LaTeX formulas as PNG files."
+  :group 'muse-publish)
+
+(defcustom muse-latex2png-img-dest "./latex"
+  "The folder where the generated images will be placed.
+This is relative to the current publishing directory."
+  :type 'string
+  :group 'muse-latex2png)
+
+(defcustom muse-latex2png-scale-factor 2.5
+  "The scale factor to be used for sizing the resulting LaTeX output."
+  :type 'number
+  :group 'muse-latex2png)
+
+(defcustom muse-latex2png-fg "Black"
+  "The foreground color."
+  :type 'string
+  :group 'muse-latex2png)
+
+(defcustom muse-latex2png-bg "Transparent"
+  "The background color."
+  :type 'string
+  :group 'muse-latex2png)
+
+(defcustom muse-latex2png-template
+  "\\documentclass{article}
+\\usepackage{fullpage}
+\\usepackage{amssymb}
+\\usepackage[usenames]{color}
+\\usepackage{amsmath}
+\\usepackage{latexsym}
+\\usepackage[mathscr]{eucal}
+%preamble%
+\\pagestyle{empty}
+\\begin{document}
+{%code%}
+\\end{document}\n"
+  "The LaTeX template to use."
+  :type 'string
+  :group 'muse-latex2png)
+
+(defun muse-latex2png-move2pubdir (file prefix pubdir)
+  "Move FILE to the PUBDIR folder.
+
+This is done so that the resulting images do not clutter your
+main publishing directory.
+
+Old files with PREFIX in the name are deleted."
+  (when file
+    (if (file-exists-p file)
+        (progn
+          (unless (file-directory-p pubdir)
+            (message "Creating latex directory %s" pubdir)
+            (make-directory pubdir))
+          (copy-file file (expand-file-name (file-name-nondirectory file)
+                                            pubdir)
+                     t)
+          (delete-file file)
+          (concat muse-latex2png-img-dest "/" (file-name-nondirectory file)))
+      (message "Cannot find %s!" file))))
+
+(defun muse-latex2png (code prefix preamble)
+  "Convert the LaTeX CODE into a png file beginning with PREFIX.
+PREAMBLE indicates extra packages and definitions to include."
+  (unless preamble
+    (setq preamble ""))
+  (unless prefix
+    (setq prefix "muse-latex2png"))
+  (let* ((tmpdir (cond ((boundp 'temporary-file-directory)
+                        temporary-file-directory)
+                       ((fboundp 'temp-directory)
+                        (temp-directory))
+                       (t "/tmp")))
+         (texfile (expand-file-name
+                   (concat prefix "__"  (format "%d" (abs (sxhash code))))
+                   tmpdir))
+         (defalt-directory default-directory))
+    (with-temp-file (concat texfile ".tex")
+      (insert muse-latex2png-template)
+      (goto-char (point-min))
+      (while (search-forward "%preamble%" nil t)
+        (replace-match preamble nil t))
+      (goto-char (point-min))
+      (while (search-forward "%code%" nil t)
+        (replace-match code nil t)))
+    (setq default-directory tmpdir)
+    (call-process "latex" nil nil nil texfile)
+    (if (file-exists-p (concat texfile ".dvi"))
+        (progn
+          (call-process
+           "dvipng" nil nil nil
+           "-E"
+           "-fg" muse-latex2png-fg
+           "-bg" muse-latex2png-bg
+           "-T" "tight"
+           "-x" (format  "%s" (* muse-latex2png-scale-factor 1000))
+           "-y" (format  "%s" (* muse-latex2png-scale-factor 1000))
+           "-o" (concat texfile ".png")
+           (concat texfile ".dvi"))
+          (if (file-exists-p (concat texfile ".png"))
+              (progn
+                (delete-file (concat texfile ".dvi"))
+                (delete-file (concat texfile ".tex"))
+                (delete-file (concat texfile ".aux"))
+                (delete-file (concat texfile ".log"))
+                (concat texfile ".png"))
+            (message "Failed to create png file")
+            nil))
+      (message (concat "Failed to create dvi file " texfile))
+      nil)))
+
+(defun muse-latex2png-region (beg end attrs)
+  "Generate an image for the Latex code between BEG and END.
+If a Muse page is currently being published, replace the given
+region with the appropriate markup that displays the image.
+Otherwise, just return the path of the generated image.
+
+Valid keys for the ATTRS alist are as follows.
+
+prefix: The prefix given to the image file.
+preamble: Extra text to add to the Latex preamble.
+inline: Display image as inline, instead of a block."
+  (let ((end-marker (set-marker (make-marker) (1+ end)))
+        (pubdir (expand-file-name
+                 muse-latex2png-img-dest
+                 (file-name-directory muse-publishing-current-output-path))))
+    (save-restriction
+      (narrow-to-region beg end)
+      (let* ((text (buffer-substring-no-properties beg end))
+             ;; the prefix given to the image file.
+             (prefix (cdr (assoc "prefix" attrs)))
+             ;; preamble (for extra options)
+             (preamble (cdr (assoc "preamble" attrs)))
+             ;; display inline or as a block
+             (display (car (assoc "inline" attrs))))
+        (when muse-publishing-p
+          (delete-region beg end)
+          (goto-char (point-min)))
+        (unless (file-directory-p pubdir)
+          (make-directory pubdir))
+        (let ((path (muse-latex2png-move2pubdir
+                     (muse-latex2png text prefix preamble)
+                     prefix pubdir)))
+          (when path
+            (when muse-publishing-p
+              (muse-insert-markup
+               (if (muse-style-derived-p "html")
+                   (concat "<img src=\"" path
+                           "\" alt=\"latex2png equation\" "
+                           (if display (concat "class=\"latex-inline\"")
+                             (concat "class=\"latex-display\""))
+                           (if (muse-style-derived-p "xhtml")
+                               " />"
+                             ">")
+                           (muse-insert-markup "<!-- " text "-->"))
+                 (let ((ext (or (file-name-extension path) ""))
+                       (path (muse-path-sans-extension path)))
+                   (muse-markup-text 'image path ext))))
+              (goto-char (point-max)))
+            path))))))
+
+(defun muse-publish-latex-tag (beg end attrs)
+  "If the current style is not Latex-based, generate an image for the
+given Latex code.  Otherwise, don't do anything to the region.
+See `muse-latex2png-region' for valid keys for ATTRS."
+  (unless (assoc "prefix" attrs)
+    (setq attrs (cons (cons "prefix"
+                            (concat "latex2png-" (muse-page-name)))
+                      attrs)))
+  (if (or (muse-style-derived-p "latex") (muse-style-derived-p "context"))
+      (muse-publish-mark-read-only beg end)
+    (muse-latex2png-region beg end attrs)))
+
+(put 'muse-publish-latex-tag 'muse-dangerous-tag t)
+
+(defun muse-publish-math-tag (beg end)
+  "Surround the given region with \"$\" characters.  Then, if the
+current style is not Latex-based, generate an image for the given
+Latex math code.
+
+If 6 or more spaces come before the tag, and the end of the tag
+is at the end of a line, then surround the region with the
+equivalent of \"$$\" instead.  This causes the region to be
+centered in the published output, among other things."
+  (let* ((centered (and (re-search-backward
+                         (concat "^[" muse-regexp-blank "]\\{6,\\}\\=")
+                         nil t)
+                        (save-excursion
+                          (save-match-data
+                            (goto-char end)
+                            (looking-at (concat "[" muse-regexp-blank "]*$"))))
+                        (prog1 t
+                          (replace-match "")
+                          (when (and (or (muse-style-derived-p "latex")
+                                         (muse-style-derived-p "context"))
+                                     (not (bobp)))
+                            (backward-char 1)
+                            (if (bolp)
+                                (delete-char 1)
+                              (forward-char 1)))
+                          (setq beg (point)))))
+         (tag-beg (if centered
+                      (if (muse-style-derived-p "context")
+                          "\\startformula " "\\[ ")
+                    "$"))
+         (tag-end (if centered
+                      (if (muse-style-derived-p "context")
+                          " \\stopformula" " \\]")
+                    "$"))
+         (attrs (nconc (list (cons "prefix"
+                                   (concat "latex2png-" (muse-page-name))))
+                       (if centered nil
+                         '(("inline" . t))))))
+    (goto-char beg)
+    (muse-insert-markup tag-beg)
+    (goto-char end)
+    (muse-insert-markup tag-end)
+    (if (or (muse-style-derived-p "latex") (muse-style-derived-p "context"))
+        (muse-publish-mark-read-only beg (point))
+      (muse-latex2png-region beg (point) attrs))))
+
+(put 'muse-publish-math-tag 'muse-dangerous-tag t)
+
+;;; Insinuate with muse-publish
+
+(add-to-list 'muse-publish-markup-tags
+             '("latex" t t nil muse-publish-latex-tag)
+             t)
+
+(add-to-list 'muse-publish-markup-tags
+             '("math" t nil nil muse-publish-math-tag)
+             t)
+
+(provide 'muse-latex2png)
+;;; muse-latex2png.el ends here
diff --git a/packages/muse/muse-mode.el b/packages/muse/muse-mode.el
new file mode 100644 (file)
index 0000000..9659843
--- /dev/null
@@ -0,0 +1,1013 @@
+;;; muse-mode.el --- mode for editing Muse files; has font-lock support
+
+;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; The Emacs Muse major mode is basically a hyped-up text-mode which
+;; knows a lot more about the apparent structure of the document.
+
+;;; Contributors:
+
+;; Andrea Riciputi (ariciputi AT pito DOT com) gave an initial
+;; implementation for tag completion by means of the `muse-insert-tag'
+;; function.
+
+;; Per B. Sederberg (per AT med DOT upenn DOT edu) contributed the
+;; insertion of relative links and list items, backlink searching, and
+;; other things as well.
+
+;; Stefan Schlee (stefan_schlee AT yahoo DOT com) fixed a bug in
+;; muse-next-reference and muse-previous-reference involving links
+;; that begin at point 1.
+
+;; Gregory Collins (greg AT gregorycollins DOT net) fixed a bug with
+;; paragraph separation and headings when filling.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Emacs Muse Major Mode
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(provide 'muse-mode)
+
+(require 'muse)
+(require 'muse-regexps)
+(require 'muse-project)
+
+(autoload 'muse-use-font-lock "muse-colors")
+(autoload 'muse-publish-this-file "muse-publish")
+(autoload 'muse-publish-get-style "muse-publish")
+(autoload 'muse-publish-output-file "muse-publish")
+
+(require 'derived)
+(eval-when-compile
+  (condition-case nil
+      (require 'pcomplete)              ; load if available
+    (error nil)))
+
+;;; Options:
+
+(defgroup muse-mode nil
+  "Options controlling the behavior of the Muse editing Mode."
+  :group 'muse)
+
+(defcustom muse-mode-highlight-p t
+  "If non-nil, highlight the content of Muse buffers."
+  :type 'boolean
+  :require 'muse-colors
+  :group 'muse-mode)
+
+(defcustom muse-mode-auto-p nil
+  "If non-nil, automagically determine when Muse mode should be activated."
+  :type 'boolean
+  :set (function
+        (lambda (sym value)
+          (if value
+              (add-hook 'find-file-hooks 'muse-mode-maybe)
+            (remove-hook 'find-file-hooks 'muse-mode-maybe))
+          (set sym value)))
+  :group 'muse-mode)
+
+(defun muse-mode-maybe-after-init ()
+  (when muse-mode-auto-p
+    (add-hook 'find-file-hooks 'muse-mode-maybe)))
+
+;; If the user sets this value in their init file, make sure that
+;; it takes effect
+(add-hook 'after-init-hook 'muse-mode-maybe-after-init)
+
+(defcustom muse-mode-intangible-links nil
+  "If non-nil, use the intangible property on links.
+This can cause problems with flyspell (and potentially fill-mode),
+so only enable this if you don't use either of these."
+  :type 'boolean
+  :group 'muse-mode)
+
+(defcustom muse-mode-hook nil
+  "A hook that is run when Muse mode is entered."
+  :type 'hook
+  :options '(flyspell-mode footnote-mode turn-on-auto-fill
+             highlight-changes-mode)
+  :group 'muse-mode)
+
+(defcustom muse-grep-command
+  "find %D -type f ! -name '*~' | xargs -I {} echo \\\"{}\\\" | xargs egrep -n -e \"%W\""
+  "The command to use when grepping for backlinks and other
+searches through the muse projects.  The string %D is replaced by
+the directories from muse-project-alist, space-separated.  The
+string %W is replaced with the name of the muse page or whatever
+else you are searching for.  This command has been modified to
+handle spaces in filenames, which were giving egrep a problem.
+
+Note: We highly recommend using glimpse to search large projects.
+To use glimpse, install and edit a file called .glimpse_exclude
+in your home directory.  Put a list of glob patterns in that file
+to exclude Emacs backup files, etc.  Then, run the indexer using:
+
+  glimpseindex -o <list of Wiki directories>
+
+Once that's completed, customize this variable to have the
+following value:
+
+  glimpse -nyi \"%W\"
+
+Your searches will go much, much faster, especially for very
+large projects.  Don't forget to add a user cronjob to update the
+index at intervals."
+  :type 'string
+  :group 'muse-mode)
+
+(defvar muse-insert-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map "l" 'muse-insert-relative-link-to-file)
+    (define-key map "t" 'muse-insert-tag)
+    (define-key map "u" 'muse-insert-url)
+
+    map))
+
+;;; Muse mode
+
+(defvar muse-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [(control ?c) (control ?a)] 'muse-index)
+    (define-key map [(control ?c) (control ?e)] 'muse-edit-link-at-point)
+    (define-key map [(control ?c) (control ?l)] 'font-lock-mode)
+    (define-key map [(control ?c) (control ?t)]
+      'muse-project-publish-this-file)
+    (define-key map [(control ?c) (control ?T)] 'muse-publish-this-file)
+    (define-key map [(control ?c) (meta control ?t)] 'muse-publish-this-file)
+    (define-key map [(control ?c) (control ?v)] 'muse-browse-result)
+
+    (define-key map [(control ?c) ?=]           'muse-what-changed)
+
+    (define-key map [tab] 'muse-next-reference)
+    (define-key map [(control ?i)] 'muse-next-reference)
+
+    (if (featurep 'xemacs)
+        (progn
+          (define-key map [(button2)] 'muse-follow-name-at-mouse)
+          (define-key map [(shift button2)]
+            'muse-follow-name-at-mouse-other-window))
+      (define-key map [(shift control ?m)]
+        'muse-follow-name-at-point-other-window)
+      (define-key map [mouse-2] 'muse-follow-name-at-mouse)
+      (define-key map [(shift mouse-2)]
+        'muse-follow-name-at-mouse-other-window))
+
+    (define-key map [(shift tab)] 'muse-previous-reference)
+    (unless (featurep 'xemacs)
+      (define-key map [(shift iso-lefttab)] 'muse-previous-reference)
+      (define-key map [(shift control ?i)] 'muse-previous-reference))
+
+    (define-key map [(control ?c) (control ?f)] 'muse-project-find-file)
+    (define-key map [(control ?c) (control ?p)] 'muse-project-publish)
+
+    (define-key map [(control ?c) (control ?i)] 'muse-insert-thing)
+    (define-key map [(control ?c) tab] 'muse-insert-thing)
+
+    ;; Searching functions
+    (define-key map [(control ?c) (control ?b)] 'muse-find-backlinks)
+    (define-key map [(control ?c) (control ?s)] 'muse-search)
+
+    ;; Enhanced list functions
+    (define-key map [(meta return)] 'muse-insert-list-item)
+    (define-key map [(control ?>)] 'muse-increase-list-item-indentation)
+    (define-key map [(control ?<)] 'muse-decrease-list-item-indentation)
+
+    (when (featurep 'pcomplete)
+      (define-key map [(meta tab)] 'pcomplete)
+      (define-key map [(meta control ?i)] 'pcomplete))
+
+    map)
+  "Keymap used by Emacs Muse mode.")
+
+;;;###autoload
+(define-derived-mode muse-mode text-mode "Muse"
+  "Muse is an Emacs mode for authoring and publishing documents.
+\\{muse-mode-map}"
+  ;; Since we're not inheriting from normal-mode, we need to
+  ;; explicitly run file variables.
+  (condition-case err
+      (hack-local-variables)
+    (error (message "File local-variables error: %s"
+                    (prin1-to-string err))))
+  ;; Avoid lock-up caused by use of the 'intangible' text property
+  ;; with flyspell.
+  (unless muse-mode-intangible-links
+    (set (make-local-variable 'inhibit-point-motion-hooks) t))
+  (setq muse-current-project (muse-project-of-file))
+  (muse-project-set-variables)
+  ;; Make fill not split up links
+  (when (boundp 'fill-nobreak-predicate)
+    (make-local-variable 'fill-nobreak-predicate)
+    ;; Work around annoying inconsistency in fill handling between
+    ;; Emacs 21 and 22.
+    (if (< emacs-major-version 22)
+        (setq fill-nobreak-predicate 'muse-mode-fill-nobreak-p)
+      (add-to-list 'fill-nobreak-predicate
+                   'muse-mode-fill-nobreak-p)))
+  ;; Make fill work nicely with item lists
+  (let ((regexp (concat "\\s-+\\(-\\|[0-9]+\\.\\)\\s-+"
+                        "\\|\\[[0-9]+\\]\\s-*"
+                        "\\|.*\\s-*::\\s-+"
+                        "\\|\\*+\\s-+")))
+    (set (make-local-variable 'adaptive-fill-regexp)
+         (concat regexp "\\|\\s-*"))
+    (set (make-local-variable 'paragraph-start)
+         (concat paragraph-start "\\|" regexp))
+    (set (make-local-variable 'paragraph-separate)
+         (concat paragraph-separate "\\|\\*+\\s-+")))
+  (set (make-local-variable 'fill-paragraph-function)
+       'muse-mode-fill-paragraph)
+
+  ;; Comment syntax is `; comment'
+  (set (make-local-variable 'comment-start)
+       "; ")
+  (set (make-local-variable 'comment-start-skip)
+       "^;\\s-+")
+  (set (make-local-variable 'indent-line-function)
+       #'ignore)
+  ;; If we're using Emacs21, this makes flyspell work like it should
+  (when (boundp 'flyspell-generic-check-word-p)
+    (set (make-local-variable 'flyspell-generic-check-word-p)
+         'muse-mode-flyspell-p))
+  ;; If pcomplete is available, set it up
+  (when (featurep 'pcomplete)
+    (set (make-local-variable 'pcomplete-default-completion-function)
+         'muse-mode-completions)
+    (set (make-local-variable 'pcomplete-command-completion-function)
+         'muse-mode-completions)
+    (set (make-local-variable 'pcomplete-parse-arguments-function)
+         'muse-mode-current-word))
+  ;; Initialize any auto-generated variables
+  (run-hooks 'muse-update-values-hook)
+  (when muse-mode-highlight-p
+    (muse-use-font-lock)))
+
+(put 'muse-mode
+     'flyspell-mode-predicate
+     'muse-mode-flyspell-p)
+
+(defun muse-mode-fill-nobreak-p ()
+  "Return nil if we should allow a fill to occur at point.
+Otherwise return non-nil.
+
+This is used to keep long explicit links from being mangled by
+fill mode."
+  (save-excursion
+    (save-match-data
+      (and (re-search-backward "\\[\\[\\|\\]\\]"
+                               (line-beginning-position) t)
+           (string= (or (match-string 0) "")
+                    "[[")))))
+
+(defun muse-mode-fill-paragraph (arg)
+  "If a definition list is at point, use special filling rules for it.
+Otherwise return nil to let the normal filling function take care
+of things.
+
+ARG is passed to `fill-paragraph'."
+  (let ((count 2))
+    (and (not (muse-mode-fill-nobreak-p))
+         (save-excursion
+           (beginning-of-line)
+           (and (looking-at muse-dl-term-regexp)
+                (prog1 t
+                  ;; Take initial whitespace into account
+                  (when (looking-at (concat "[" muse-regexp-blank "]+"))
+                    (setq count (+ count (length (match-string 0))))))))
+         (let ((fill-prefix (make-string count ?\ ))
+               (fill-paragraph-function nil))
+           (prog1 t
+             (fill-paragraph arg))))))
+
+(defun muse-mode-flyspell-p ()
+  "Return non-nil if we should allow spell-checking to occur at point.
+Otherwise return nil.
+
+This is used to keep links from being improperly colorized by flyspell."
+  (let ((pos (if (bobp) (point) (1- (point)))))
+    (and (not (get-text-property pos 'muse-no-flyspell))
+         (not (get-text-property pos 'muse-link))
+         (save-match-data
+           (null (muse-link-at-point))))))
+
+;;;###autoload
+(defun muse-mode-choose-mode ()
+  "Turn the proper Emacs Muse related mode on for this file."
+  (let ((project (muse-project-of-file)))
+    (funcall (or (and project (muse-get-keyword :major-mode (cadr project) t))
+                 'muse-mode))))
+
+(defun muse-mode-maybe ()
+  "Maybe turn Emacs Muse mode on for this file."
+  (let ((project (muse-project-of-file)))
+    (and project
+         (funcall (or (muse-get-keyword :major-mode (cadr project) t)
+                      'muse-mode)))))
+
+;;; Enhanced list editing
+
+(defun muse-on-blank-line ()
+  "See if point is on a blank line"
+  (save-excursion
+    (beginning-of-line)
+    (looking-at (concat "[" muse-regexp-blank "]*$"))))
+
+(defun muse-get-paragraph-start ()
+  "Return the start of the current paragraph. This function will
+return nil if there are no prior paragraphs and the beginning of
+the line if point is on a blank line."
+  (let ((para-start (concat "^[" muse-regexp-blank "]*$")))
+    ;; search back to start of paragraph
+    (save-excursion
+      (save-match-data
+        (if (not (muse-on-blank-line))
+            (re-search-backward para-start nil t)
+          (line-beginning-position))))))
+
+(defun muse-insert-thing ()
+  "Prompt for something to insert into the current buffer."
+  (interactive)
+  (message "Insert:\nl  link\nt  Muse tag\nu  URL")
+  (let (key cmd)
+    (let ((overriding-local-map muse-insert-map))
+      (setq key (read-key-sequence nil)))
+    (if (commandp (setq cmd (lookup-key muse-insert-map key)))
+        (progn (message "")
+               (call-interactively cmd))
+      (message "Not inserting anything"))))
+
+;;;###autoload
+(defun muse-insert-list-item ()
+  "Insert a list item at the current point, taking into account
+your current list type and indentation level."
+  (interactive)
+  (let ((newitem " - ")
+        (itemno nil)
+        (pstart (muse-get-paragraph-start))
+        (list-item (format muse-list-item-regexp
+                           (concat "[" muse-regexp-blank "]*"))))
+    ;; search backwards for start of current item
+    (save-excursion
+      (when (re-search-backward list-item pstart t)
+        ;; save the matching item
+        (setq newitem (match-string 0))
+        ;; see what type it is
+        (if (string-match "::" (match-string 0))
+            ;; is a definition, replace the term
+            (setq newitem (concat " "
+                                  (read-string "Term: ")
+                                  " :: "))
+          ;; see if it's a numbered list
+          (when (string-match "[0-9]+" newitem)
+            ;; is numbered, so increment
+            (setq itemno (1+
+                          (string-to-number
+                           (match-string 0 newitem))))
+            (setq newitem (replace-match
+                           (number-to-string itemno)
+                           nil nil newitem))))))
+    ;; insert the new item
+    (insert (concat "\n" newitem))))
+
+(defun muse-alter-list-item-indentation (operation)
+  "Alter the indentation of the current list item.
+Valid values of OPERATION are 'increase and 'decrease."
+  (let ((pstart (muse-get-paragraph-start))
+        (list-item (format muse-list-item-regexp
+                           (concat "[" muse-regexp-blank "]*")))
+        beg move-func indent)
+    ;; search backwards until start of paragraph to see if we are on a
+    ;; current item
+    (save-excursion
+      (if (or (progn (goto-char (muse-line-beginning-position))
+                     ;; we are on an item
+                     (looking-at list-item))
+              ;; not on item, so search backwards
+              (re-search-backward list-item pstart t))
+          (let ((beg (point)))
+            ;; we are on an item
+            (setq indent (buffer-substring (match-beginning 0)
+                                           (match-beginning 1)))
+            (muse-forward-list-item (muse-list-item-type (match-string 1))
+                                    (concat "[" muse-regexp-blank "]*")
+                                    t)
+            (save-restriction
+              (narrow-to-region beg (point))
+              (goto-char (point-min))
+              (let ((halt nil))
+                (while (< (point) (point-max))
+                  ;; increase or decrease the indentation
+                  (unless halt
+                    (cond ((eq operation 'increase)
+                           (insert "  "))
+                          ((eq operation 'decrease)
+                           (if (looking-at "  ")
+                               ;; we have enough space, so delete it
+                               (delete-region (match-beginning 0)
+                                              (match-end 0))
+                             (setq halt t)))))
+                  (forward-line 1)))))
+        ;; we are not on an item, so warn
+        (message "You are not on a list item.")))))
+
+;;;###autoload
+(defun muse-increase-list-item-indentation ()
+  "Increase the indentation of the current list item."
+  (interactive)
+  (muse-alter-list-item-indentation 'increase))
+
+;;;###autoload
+(defun muse-decrease-list-item-indentation ()
+  "Decrease the indentation of the current list item."
+  (interactive)
+  (muse-alter-list-item-indentation 'decrease))
+
+;;; Support page name completion using pcomplete
+
+(defun muse-mode-completions ()
+  "Return a list of possible completions names for this buffer."
+  (let ((project (muse-project-of-file)))
+    (if project
+        (while (pcomplete-here
+                (mapcar 'car (muse-project-file-alist project)))))))
+
+(defun muse-mode-current-word ()
+  (let ((end (point)))
+    (save-excursion
+      (save-restriction
+        (skip-chars-backward (concat "^\\[\n" muse-regexp-blank))
+        (narrow-to-region (point) end))
+      (pcomplete-parse-buffer-arguments))))
+
+;;; Navigate/visit links or URLs.  Use TAB, S-TAB and RET (or mouse-2).
+
+(defun muse-link-at-point (&optional pos)
+  "Return link text if a URL or link is at point."
+  (let ((case-fold-search nil)
+        (inhibit-point-motion-hooks t)
+        (here (or pos (point))))
+    ;; if we are using muse-colors, we can just use link properties to
+    ;; determine whether we are on a link
+    (if (featurep 'muse-colors)
+        (when (get-text-property here 'muse-link)
+          (save-excursion
+            (when (and (not (bobp))
+                       (get-text-property (1- here) 'muse-link))
+              (goto-char (or (previous-single-property-change here 'muse-link)
+                             (point-min))))
+            (if (looking-at muse-explicit-link-regexp)
+                (progn
+                  (goto-char (match-beginning 1))
+                  (muse-handle-explicit-link))
+              (muse-handle-implicit-link))))
+      ;; use fallback method to find a link
+      (when (or (null pos)
+                (and (char-after pos)
+                     (not (eq (char-syntax (char-after pos)) ?\ ))))
+        (save-excursion
+          (goto-char here)
+          ;; check for explicit link here or before point
+          (if (or (looking-at muse-explicit-link-regexp)
+                  (and
+                   (re-search-backward "\\[\\[\\|\\]\\]"
+                                       (muse-line-beginning-position)
+                                       t)
+                   (string= (or (match-string 0) "") "[[")
+                   (looking-at muse-explicit-link-regexp)))
+              (progn
+                (goto-char (match-beginning 1))
+                (muse-handle-explicit-link))
+            (goto-char here)
+            ;; check for bare URL or other link type
+            (skip-chars-backward (concat "^'\"<>{}(\n" muse-regexp-blank))
+            (and (looking-at muse-implicit-link-regexp)
+                 (muse-handle-implicit-link))))))))
+
+(defun muse-make-link (link &optional desc)
+  "Return a link to LINK with DESC as the description."
+  (when (string-match muse-explicit-link-regexp link)
+    (unless desc (setq desc (muse-get-link-desc link)))
+    (setq link (muse-get-link link)))
+  (if (and desc
+           link
+           (not (string= desc ""))
+           (not (string= link desc)))
+      (concat "[[" (muse-link-escape link) "][" (muse-link-escape desc) "]]")
+    (concat "[[" (or (muse-link-escape link) "") "]]")))
+
+;;;###autoload
+(defun muse-insert-relative-link-to-file ()
+  "Insert a relative link to a file, with optional description, at point."
+  ;; Perhaps the relative location should be configurable, so that the
+  ;; file search would start in the publishing directory and then
+  ;; insert the link relative to the publishing directory
+  (interactive)
+  (insert
+   (muse-make-link (file-relative-name (read-file-name "Link: "))
+                   (read-string "Text: "))))
+
+(defcustom muse-insert-url-initial-input "http://"
+  "The string to insert before reading a URL interactively.
+This is used by the `muse-insert-url' command."
+  :type 'string
+  :group 'muse-mode)
+
+(defun muse-insert-url ()
+  "Insert a URL, with optional description, at point."
+  (interactive)
+  (insert
+   (muse-make-link (read-string "URL: " muse-insert-url-initial-input)
+                   (read-string "Text: "))))
+
+;;;###autoload
+(defun muse-edit-link-at-point ()
+  "Edit the current link.
+Do not rename the page originally referred to."
+  (interactive)
+  (if (muse-link-at-point)
+      (let ((link (muse-link-unescape (muse-get-link)))
+            (desc (muse-link-unescape (muse-get-link-desc))))
+        (replace-match
+         (save-match-data
+           (muse-make-link
+            (read-string "Link: " link)
+            (read-string "Text: " desc)))
+         t t))
+    (error "There is no valid link at point")))
+
+(defun muse-visit-link-default (link &optional other-window)
+  "Visit the URL or link named by LINK.
+If ANCHOR is specified, search for it after opening LINK.
+
+This is the default function to call when visiting links; it is
+used by `muse-visit-link' if you have not specified :visit-link
+in `muse-project-alist'."
+  (if (string-match muse-url-regexp link)
+      (muse-browse-url link)
+    (let (anchor
+          base-buffer)
+      (when (string-match "#" link)
+        (setq anchor (substring link (match-beginning 0))
+              link (if (= (match-beginning 0) 0)
+                       ;; If there is an anchor but no link, default
+                       ;; to the current page.
+                       nil
+                     (substring link 0 (match-beginning 0)))))
+      (when link
+        (setq base-buffer (get-buffer link))
+        (if (and base-buffer (not (buffer-file-name base-buffer)))
+            ;; If file is temporary (no associated file), just switch to
+            ;; the buffer
+            (if other-window
+                (switch-to-buffer-other-window base-buffer)
+              (switch-to-buffer base-buffer))
+          (let ((project (muse-project-of-file)))
+            (if project
+                (muse-project-find-file link project
+                                        (and other-window
+                                             'find-file-other-window))
+              (if other-window
+                  (find-file-other-window link)
+                (find-file link))))))
+      (when anchor
+        (let ((pos (point))
+              (regexp (concat "^\\W*" (regexp-quote anchor) "\\b"))
+              last)
+          (goto-char (point-min))
+          (while (and (setq last (re-search-forward regexp nil t))
+                      (muse-link-at-point)))
+          (unless last
+            (goto-char pos)
+            (message "Could not find anchor `%s'" anchor)))))))
+
+(defun muse-visit-link (link &optional other-window)
+  "Visit the URL or link named by LINK."
+  (let ((visit-link-function
+         (muse-get-keyword :visit-link (cadr (muse-project-of-file)) t)))
+    (if visit-link-function
+        (funcall visit-link-function link other-window)
+      (muse-visit-link-default link other-window))))
+
+;;;###autoload
+(defun muse-browse-result (style &optional other-window)
+  "Visit the current page's published result."
+  (interactive
+   (list (muse-project-get-applicable-style buffer-file-name
+                                            (cddr muse-current-project))
+         current-prefix-arg))
+  (setq style (muse-style style))
+  (muse-project-publish-this-file nil style)
+  (let* ((output-dir (muse-style-element :path style))
+         (output-suffix (muse-style-element :osuffix style))
+         (output-path (muse-publish-output-file buffer-file-name output-dir
+                                                style))
+         (target (if output-suffix
+                     (concat (muse-path-sans-extension output-path)
+                             output-suffix)
+                   output-path))
+         (muse-current-output-style (list :base (car style)
+                                          :path output-dir)))
+    (if (not (file-readable-p target))
+        (error "Cannot open output file '%s'" target)
+      (if other-window
+          (find-file-other-window target)
+        (let ((func (muse-style-element :browser style t)))
+          (if func
+              (funcall func target)
+            (message "The %s publishing style does not support browsing."
+                     style)))))))
+
+;;;###autoload
+(defun muse-follow-name-at-point (&optional other-window)
+  "Visit the link at point."
+  (interactive "P")
+  (let ((link (muse-link-at-point)))
+    (if link
+        (muse-visit-link link other-window)
+      (error "There is no valid link at point"))))
+
+;;;###autoload
+(defun muse-follow-name-at-point-other-window ()
+  "Visit the link at point in other window."
+  (interactive)
+  (muse-follow-name-at-point t))
+
+(defun muse-follow-name-at-mouse (event &optional other-window)
+  "Visit the link at point, or yank text if none is found."
+  (interactive "eN")
+  (unless
+      (save-excursion
+        (cond ((fboundp 'event-window)      ; XEmacs
+               (set-buffer (window-buffer (event-window event)))
+               (and (funcall (symbol-function 'event-point) event)
+                    (goto-char (funcall (symbol-function 'event-point)
+                                        event))))
+              ((fboundp 'posn-window)       ; Emacs
+               (set-buffer (window-buffer (posn-window (event-start event))))
+               (goto-char (posn-point (event-start event)))))
+        (let ((link (muse-link-at-point)))
+          (when link
+            (muse-visit-link link other-window)
+            t)))
+    ;; Fall back to normal binding for this event
+    (call-interactively
+     (lookup-key (current-global-map) (this-command-keys)))))
+
+(defun muse-follow-name-at-mouse-other-window (event)
+  "Visit the link at point"
+  (interactive "e")
+  ;; throw away the old window position, since other-window will
+  ;; change it anyway
+  (select-window (car (cadr event)))
+  (muse-follow-name-at-mouse event t))
+
+;;;###autoload
+(defun muse-next-reference ()
+  "Move forward to next Muse link or URL, cycling if necessary."
+  (interactive)
+  (let ((pos))
+    (save-excursion
+      (when (get-text-property (point) 'muse-link)
+        (goto-char (or (next-single-property-change (point) 'muse-link)
+                       (point-max))))
+
+      (setq pos (next-single-property-change (point) 'muse-link))
+
+      (when (not pos)
+        (if (get-text-property (point-min) 'muse-link)
+            (setq pos (point-min))
+          (setq pos (next-single-property-change (point-min) 'muse-link)))))
+
+    (when pos
+      (goto-char pos))))
+
+;;;###autoload
+(defun muse-previous-reference ()
+  "Move backward to the next Muse link or URL, cycling if necessary.
+In case of Emacs x <= 21 and ignoring of intangible properties (see
+`muse-mode-intangible-links').
+
+This function is not entirely accurate, but it's close enough."
+  (interactive)
+  (let ((pos))
+    (save-excursion
+
+      ;; Hack: The user perceives the two cases of point ("|")
+      ;; position (1) "|[[" and (2) "[[|" or "][|" as "point is at
+      ;; start of link".  But in the sense of the function
+      ;; "previous-single-property-change" these two cases are
+      ;; different.  The following code aligns these two cases.  Emacs
+      ;; 21: If the intangible property is ignored case (2) is more
+      ;; complicate and this hack only solves the problem partially.
+      ;;
+      (when (and (get-text-property (point) 'muse-link)
+                 (muse-looking-back "\\[\\|\\]"))
+        (goto-char (or (previous-single-property-change (point) 'muse-link)
+                       (point-min))))
+
+      (when (eq (point) (point-min))
+        (goto-char (point-max)))
+
+      (setq pos (previous-single-property-change (point) 'muse-link))
+
+      (when (not pos)
+        (if (get-text-property (point-min) 'muse-link)
+            (setq pos (point-min))
+          (setq pos (previous-single-property-change (point-max)
+                                                     'muse-link)))))
+
+    (when pos
+      (if (get-text-property pos 'muse-link)
+          (goto-char pos)
+        (goto-char (or (previous-single-property-change pos 'muse-link)
+                       (point-min)))))))
+
+;;;###autoload
+(defun muse-what-changed ()
+  "Show the unsaved changes that have been made to the current file."
+  (interactive)
+  (diff-backup buffer-file-name))
+
+
+;;; Find text in project pages, or pages referring to the current page
+
+(defvar muse-search-history nil)
+
+(defun muse-grep (string &optional grep-command-no-shadow)
+  "Grep for STRING in the project directories.
+GREP-COMMAND if passed will supplant `muse-grep-command'."
+  ;; careful - grep-command leaks into compile, so we call it
+  ;; -no-shadow instead
+  (require 'compile)
+  (let* ((str (or grep-command-no-shadow muse-grep-command))
+         (muse-directories (mapcar
+                            (lambda (thing)
+                              (car (cadr thing)))
+                            muse-project-alist))
+         (dirs (mapconcat (lambda (dir)
+                            (shell-quote-argument
+                             (expand-file-name dir)))
+                          muse-directories " ")))
+    (if (string= dirs "")
+        (muse-display-warning
+         "No directories were found in the current project; aborting search")
+      (while (string-match "%W" str)
+        (setq str (replace-match string t t str)))
+      (while (string-match "%D" str)
+        (setq str (replace-match dirs t t str)))
+      (if (fboundp 'compilation-start)
+          (compilation-start str nil (lambda (&rest args) "*search*")
+                             grep-regexp-alist)
+        (and (fboundp 'compile-internal)
+             (compile-internal str "No more search hits" "search"
+                               nil grep-regexp-alist))))))
+
+;;;###autoload
+(defun muse-search-with-command (text)
+  "Search for the given TEXT string in the project directories
+using the specified command."
+  (interactive
+   (list (let ((str (concat muse-grep-command)) pos)
+           (when (string-match "%W" str)
+             (setq pos (match-beginning 0))
+             (unless (featurep 'xemacs)
+               (setq pos (1+ pos)))
+             (setq str (replace-match "" t t str)))
+           (read-from-minibuffer "Search command: "
+                                 (cons str pos) nil nil
+                                 'muse-search-history))))
+  (muse-grep nil text))
+
+;;;###autoload
+(defun muse-search ()
+  "Search for the given TEXT using the default grep command."
+  (interactive)
+  (muse-grep (read-string "Search: ")))
+
+;;;###autoload
+(defun muse-find-backlinks ()
+  "Grep for the current pagename in all the project directories."
+  (interactive)
+  (muse-grep (muse-page-name)))
+
+
+;;; Generate an index of all known Muse pages
+
+(defun muse-generate-index (&optional as-list exclude-private)
+  "Generate an index of all Muse pages."
+  (let ((index (muse-index-as-string as-list exclude-private)))
+    (with-current-buffer (get-buffer-create "*Muse Index*")
+      (erase-buffer)
+      (insert index)
+      (current-buffer))))
+
+;;;###autoload
+(defun muse-index ()
+  "Display an index of all known Muse pages."
+  (interactive)
+  (message "Generating Muse index...")
+  (let ((project (muse-project)))
+    (with-current-buffer (muse-generate-index)
+      (goto-char (point-min))
+      (muse-mode)
+      (setq muse-current-project project)
+      (pop-to-buffer (current-buffer))))
+  (message "Generating Muse index...done"))
+
+(defun muse-index-as-string (&optional as-list exclude-private exclude-current)
+  "Generate an index of all Muse pages.
+If AS-LIST is non-nil, insert a dash and spaces before each item.
+If EXCLUDE-PRIVATE is non-nil, exclude files that have private permissions.
+If EXCLUDE-CURRENT is non-nil, exclude the current file from the output."
+  (let ((files (sort (copy-alist (muse-project-file-alist))
+                     (function
+                      (lambda (l r)
+                        (string-lessp (car l) (car r)))))))
+    (when (and exclude-current (muse-page-name))
+      (setq files (delete (assoc (muse-page-name) files) files)))
+    (with-temp-buffer
+      (while files
+        (unless (and exclude-private
+                     (muse-project-private-p (cdar files)))
+          (insert (if as-list " - " "") "[[" (caar files) "]]\n"))
+        (setq files (cdr files)))
+      (buffer-string))))
+
+;;; Insert tags interactively on C-c TAB t
+
+(defvar muse-tag-history nil
+  "List of recently-entered tags; used by `muse-insert-tag'.
+If you want a tag to start as the default, you may manually set
+this variable to a list.")
+
+(defvar muse-custom-tags nil
+  "Keep track of any new tags entered in `muse-insert-tag'.
+If there are (X)HTML tags that you use frequently with that
+function, you might want to set this manually.")
+
+;;;###autoload
+(defun muse-insert-tag (tag)
+  "Insert a tag interactively with a blank line after it."
+  (interactive
+   (list
+    (funcall
+     muse-completing-read-function
+     (concat "Tag: "
+             (when muse-tag-history
+               (concat "(default: " (car muse-tag-history) ") ")))
+     (progn
+       (require 'muse-publish)
+       (mapcar 'list (nconc (mapcar 'car muse-publish-markup-tags)
+                            muse-custom-tags)))
+     nil nil nil 'muse-tag-history
+     (car muse-tag-history))))
+  (when (equal tag "")
+    (setq tag (car muse-tag-history)))
+  (unless (interactive-p)
+    (require 'muse-publish))
+  (let ((tag-entry (assoc tag muse-publish-markup-tags))
+        (options ""))
+    ;; Add to custom list if no entry exists
+    (unless tag-entry
+      (add-to-list 'muse-custom-tags tag))
+    ;; Get option
+    (when (nth 2 tag-entry)
+      (setq options (read-string "Option: ")))
+    (unless (equal options "")
+      (setq options (concat " " options)))
+    ;; Insert the tag, closing if necessary
+    (when tag (insert (concat "<" tag options ">")))
+    (when (nth 1 tag-entry)
+      (insert (concat "\n\n</" tag ">\n"))
+      (forward-line -2))))
+
+;;; Muse list edit minor mode
+
+(defvar muse-list-edit-minor-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [(meta return)] 'muse-l-e-m-m-insert-list-item)
+    (define-key map [(control ?>)] 'muse-l-e-m-m-increase-list-item-indent)
+    (define-key map [(control ?<)] 'muse-l-e-m-m-decrease-list-item-indent)
+
+    map)
+  "Keymap used by Muse list edit minor mode.")
+
+(defvar muse-l-e-m-m-list-item-regexp
+  (concat "^%s\\(\\([^\n" muse-regexp-blank "].*?\\)?::"
+          "\\(?:[" muse-regexp-blank "]+\\|$\\)"
+          "\\|[" muse-regexp-blank "]?[-*+][" muse-regexp-blank "]*"
+          "\\|[" muse-regexp-blank "][0-9]+\\.[" muse-regexp-blank "]*\\)")
+  "Regexp used to match the beginning of a list item.
+This is used by `muse-list-edit-minor-mode'.
+The '%s' will be replaced with a whitespace regexp when publishing.")
+
+(defun muse-l-e-m-m-insert-list-item ()
+  "Insert a list item at the current point, taking into account
+your current list type and indentation level."
+  (interactive)
+  (let ((muse-list-item-regexp muse-l-e-m-m-list-item-regexp))
+    (call-interactively 'muse-insert-list-item)))
+
+(defun muse-l-e-m-m-increase-list-item-indent ()
+  "Increase the indentation of the current list item."
+  (interactive)
+  (let ((muse-list-item-regexp muse-l-e-m-m-list-item-regexp))
+    (call-interactively 'muse-increase-list-item-indentation)))
+
+(defun muse-l-e-m-m-decrease-list-item-indent ()
+  "Decrease the indentation of the current list item."
+  (interactive)
+  (let ((muse-list-item-regexp muse-l-e-m-m-list-item-regexp))
+    (call-interactively 'muse-decrease-list-item-indentation)))
+
+(defvar muse-l-e-m-m-data nil
+  "A list of data that was changed by Muse list edit minor mode.")
+(make-variable-buffer-local 'muse-l-e-m-m-data)
+
+;;;###autoload
+(define-minor-mode muse-list-edit-minor-mode
+  "This is a global minor mode for editing files with lists.
+It is meant to be used with other major modes, and not with Muse mode.
+
+Interactively, with no prefix argument, toggle the mode.
+With universal prefix ARG turn mode on.
+With zero or negative ARG turn mode off.
+
+This minor mode provides the Muse keybindings for editing lists,
+and support for filling lists properly.
+
+It recognizes not only Muse-style lists, which use the \"-\"
+character or numbers, but also lists that use asterisks or plus
+signs.  This should make the minor mode generally useful.
+
+Definition lists and footnotes are also recognized.
+
+Note that list items may omit leading spaces, for compatibility
+with modes that set `left-margin', such as
+`debian-changelog-mode'.
+
+\\{muse-list-edit-minor-mode-map}"
+  :init-value nil
+  :lighter ""
+  :keymap muse-list-edit-minor-mode-map
+  :global nil
+  :group 'muse-mode
+  (if (not muse-list-edit-minor-mode)
+      ;; deactivate
+      (when muse-l-e-m-m-data
+        (setq adaptive-fill-regexp (cdr (assoc "a-f-r" muse-l-e-m-m-data))
+              paragraph-start (cdr (assoc "p-s" muse-l-e-m-m-data))
+              fill-prefix (cdr (assoc "f-p" muse-l-e-m-m-data)))
+        (setq muse-l-e-m-m-data nil))
+    ;; activate
+    (unless muse-l-e-m-m-data
+      ;; save previous fill-related data so we can restore it later
+      (setq muse-l-e-m-m-data
+            (list (cons "a-f-r" adaptive-fill-regexp)
+                  (cons "p-s" paragraph-start)
+                  (cons "f-p" fill-prefix))))
+    ;; make fill work nicely with item lists
+    (let ((regexp (concat "\\s-*\\([-*+]\\|[0-9]+\\.\\)\\s-+"
+                          "\\|\\[[0-9]+\\]\\s-*"
+                          "\\|.*\\s-*::\\s-+")))
+      (set (make-local-variable 'adaptive-fill-regexp)
+           (concat regexp "\\|\\s-*"))
+      (set (make-local-variable 'paragraph-start)
+           (concat paragraph-start "\\|" regexp)))
+    ;; force fill-prefix to be nil, because if it is a string that has
+    ;; initial spaces, it messes up fill-paragraph's algorithm
+    (set (make-local-variable 'fill-prefix) nil)))
+
+(defun turn-on-muse-list-edit-minor-mode ()
+  "Unconditionally turn on Muse list edit minor mode."
+  (muse-list-edit-minor-mode 1))
+
+(defun turn-off-muse-list-edit-minor-mode ()
+  "Unconditionally turn off Muse list edit minor mode."
+  (muse-list-edit-minor-mode -1))
+
+;;; muse-mode.el ends here
diff --git a/packages/muse/muse-poem.el b/packages/muse/muse-poem.el
new file mode 100644 (file)
index 0000000..bd08b7e
--- /dev/null
@@ -0,0 +1,263 @@
+;;; muse-poem.el --- publish a poem to LaTex or PDF
+
+;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; This file specifies a form for recording poetry.  It is as follows.
+;;
+;;   Title
+;;
+;;
+;;   Body of poem
+;;
+;;
+;;   Annotations, history, notes, etc.
+;;
+;; The `muse-poem' module makes it easy to attractively publish and
+;; reference poems in this format, using the "memoir" module for LaTeX
+;; publishing.  It will also markup poems for every other output
+;; style, though none are nearly as pretty.
+;;
+;; Once a poem is written in this format, just publish it to PDF using
+;; the "poem-pdf" style.  To make an inlined reference to a poem that
+;; you've written -- for example, from a blog page -- there is a
+;; "poem" tag defined by this module:
+;;
+;;   <poem title="name.of.poem.page">
+;;
+;; Let's assume the template above was called "name.of.poem.page";
+;; then the above tag would result in this inclusion:
+;;
+;;   ** Title
+;;
+;;   > Body of poem
+;;
+;; I use this module for publishing all of the poems on my website,
+;; which are at: http://www.newartisans.com/johnw/poems.html.
+
+;;; Contributors:
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Muse Poem Publishing
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'muse-latex)
+(require 'muse-project)
+
+(defgroup muse-poem nil
+  "Rules for marking up a Muse file as a LaTeX article."
+  :group 'muse-latex)
+
+(defcustom muse-poem-latex-header
+  "\\documentclass[14pt,oneside]{memoir}
+
+\\usepackage[english]{babel}
+\\usepackage[latin1]{inputenc}
+\\usepackage[T1]{fontenc}
+
+\\setlength{\\beforepoemtitleskip}{-5.0ex}
+
+\\begin{document}
+
+\\pagestyle{empty}
+
+\\renewcommand{\\poemtoc}{section}
+\\settocdepth{section}
+
+\\mbox{}
+\\vfill
+
+\\poemtitle{<lisp>(muse-publishing-directive \"title\")</lisp>}
+
+\\settowidth{\\versewidth}{<lisp>muse-poem-longest-line</lisp>}\n\n"
+  "Header used for publishing LaTeX poems.  This may be text or a filename."
+  :type 'string
+  :group 'muse-poem)
+
+(defcustom muse-poem-latex-footer "\n\\vfill
+\\mbox{}
+
+\\end{document}"
+  "Footer used for publishing LaTeX files.  This may be text or a filename."
+  :type 'string
+  :group 'muse-poem)
+
+(defcustom muse-poem-markup-strings
+  '((begin-verse . "\\begin{verse}[\\versewidth]\n")
+    (verse-space . "\\vin "))
+  "Strings used for marking up poems.
+These cover the most basic kinds of markup, the handling of which
+differs little between the various styles."
+  :type '(alist :key-type symbol :value-type string)
+  :group 'muse-poem)
+
+(defcustom muse-chapbook-latex-header
+  "\\documentclass{book}
+
+\\usepackage[english]{babel}
+\\usepackage[latin1]{inputenc}
+\\usepackage[T1]{fontenc}
+
+\\setlength{\\beforepoemtitleskip}{-5.0ex}
+
+\\begin{document}
+
+\\title{<lisp>(muse-publishing-directive \"title\")</lisp>}
+\\author{<lisp>(muse-publishing-directive \"author\")</lisp>}
+\\date{<lisp>(muse-publishing-directive \"date\")</lisp>}
+
+\\maketitle
+
+\\tableofcontents
+
+\\renewcommand{\\poemtoc}{section}
+\\settocdepth{section}\n"
+  "Header used for publishing a book of poems in LaTeX form.
+This may be text or a filename."
+  :type 'string
+  :group 'muse-poem)
+
+(defcustom muse-chapbook-latex-footer "\n\\end{document}"
+  "Footer used for publishing a book of poems in LaTeX form.
+This may be text or a filename."
+  :type 'string
+  :group 'muse-poem)
+
+(defvar muse-poem-longest-line "")
+
+(defcustom muse-poem-chapbook-strings
+  '((begin-verse . "\\newpage
+\\mbox{}
+\\vfill
+
+\\poemtitle{<lisp>(muse-publishing-directive \"title\")</lisp>}
+
+\\settowidth{\\versewidth}{<lisp>muse-poem-longest-line</lisp>}
+
+\\begin{verse}[\\versewidth]\n")
+    (end-verse   . "\n\\end{verse}\n\\vfill\n\\mbox{}")
+    (verse-space . "\\vin "))
+  "Strings used for marking up books of poems.
+These cover the most basic kinds of markup, the handling of which
+differs little between the various styles."
+  :type '(alist :key-type symbol :value-type string)
+  :group 'muse-poem)
+
+(defun muse-poem-prepare-buffer ()
+  (goto-char (point-min))
+  (insert "#title ")
+  (forward-line 1)
+  (delete-region (point) (1+ (muse-line-end-position)))
+  (insert "\n<verse>")
+  (let ((beg (point)) end line)
+    (if (search-forward "\n\n\n" nil t)
+        (progn
+          (setq end (copy-marker (match-beginning 0) t))
+          (replace-match "\n</verse>\n")
+          (delete-region (point) (point-max)))
+      (goto-char (point-max))
+      (setq end (point))
+      (insert "</verse>\n"))
+    (goto-char (1+ beg))
+    (set (make-local-variable 'muse-poem-longest-line) "")
+    (while (< (point) end)
+      (setq line (buffer-substring-no-properties (point)
+                                                 (muse-line-end-position)))
+      (if (> (length line) (length muse-poem-longest-line))
+          (setq muse-poem-longest-line line))
+      (forward-line 1))
+    nil))
+
+(defvar muse-poem-tag '("poem" nil t nil muse-poem-markup-tag))
+
+(defun muse-poem-markup-tag (beg end attrs)
+  "This markup tag allows a poem to be included from another project page.
+The form of usage is:
+  <poem title=\"page.name\">"
+  (let ((page (cdr (assoc (cdr (assoc "title" attrs))
+                          (muse-project-file-alist))))
+        beg end)
+    (if (null page)
+        (insert "  *Reference to\n  unknown poem \""
+                (cdr (assoc "title" attrs)) "\".*\n")
+      (setq beg (point))
+      (insert
+       (muse-with-temp-buffer
+         (muse-insert-file-contents page)
+         (goto-char (point-min))
+         (if (assoc "nohead" attrs)
+             (progn
+               (forward-line 3)
+               (delete-region (point-min) (point)))
+           (insert "** ")
+           (search-forward "\n\n\n")
+           (replace-match "\n\n"))
+         (if (search-forward "\n\n\n" nil t)
+             (setq end (match-beginning 0))
+           (setq end (point-max)))
+         (buffer-substring-no-properties (point-min) end)))
+      (setq end (point-marker))
+      (goto-char beg)
+      (unless (assoc "nohead" attrs)
+        (forward-line 2))
+      (while (< (point) end)
+        (insert "> ")
+        (forward-line 1))
+      (set-marker end nil))))
+
+(put 'muse-poem-markup-tag 'muse-dangerous-tag t)
+
+(add-to-list 'muse-publish-markup-tags muse-poem-tag)
+
+;;; Register the Muse POEM Publishers
+
+(muse-derive-style "poem-latex" "latex"
+                   :before  'muse-poem-prepare-buffer
+                   :strings 'muse-poem-markup-strings
+                   :header  'muse-poem-latex-header
+                   :footer  'muse-poem-latex-footer)
+
+(muse-derive-style "poem-pdf" "pdf"
+                   :before  'muse-poem-prepare-buffer
+                   :strings 'muse-poem-markup-strings
+                   :header  'muse-poem-latex-header
+                   :footer  'muse-poem-latex-footer)
+
+(muse-derive-style "chapbook-latex" "latex"
+                   :before  'muse-poem-prepare-buffer
+                   :strings 'muse-poem-chapbook-strings
+                   :header  'muse-chapbook-latex-header
+                   :footer  'muse-chapbook-latex-footer)
+
+(muse-derive-style "chapbook-pdf" "pdf"
+                   :before  'muse-poem-prepare-buffer
+                   :strings 'muse-poem-chapbook-strings
+                   :header  'muse-chapbook-latex-header
+                   :footer  'muse-chapbook-latex-footer)
+
+(provide 'muse-poem)
+
+;;; muse-poem.el ends here
diff --git a/packages/muse/muse-project.el b/packages/muse/muse-project.el
new file mode 100644 (file)
index 0000000..7489706
--- /dev/null
@@ -0,0 +1,973 @@
+;;; muse-project.el --- handle Muse projects
+
+;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;;; Contributors:
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Muse Project Maintainance
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(provide 'muse-project)
+
+(require 'muse)
+(require 'muse-publish)
+(require 'cus-edit)
+
+(defgroup muse-project nil
+  "Options controlling the behavior of Muse project handling."
+  :group 'muse)
+
+(defcustom muse-before-project-publish-hook nil
+  "A hook run before a project is published.
+Each function is passed the project object, a cons with the format
+  (PROJNAME . SETTINGS)"
+  :type 'hook
+  :group 'muse-project)
+
+(defcustom muse-after-project-publish-hook nil
+  "A hook run after a project is published.
+Each function is passed the project object, a cons with the format
+  (PROJNAME . SETTINGS)"
+  :type 'hook
+  :group 'muse-project)
+
+(defvar muse-project-alist-using-customize nil
+  "Used internally by Muse to indicate whether `muse-project-alist'
+has been modified via the customize interface.")
+(make-variable-buffer-local 'muse-project-alist-using-customize)
+
+(defmacro with-muse-project (project &rest body)
+  `(progn
+     (unless (muse-project ,project)
+       (error "Can't find project %s" ,project))
+     (with-temp-buffer
+       (muse-mode)
+       (setq muse-current-project (muse-project ,project))
+       (muse-project-set-variables)
+       ,@body)))
+
+(put 'with-muse-project 'lisp-indent-function 0)
+(put 'with-muse-project 'edebug-form-spec '(sexp body))
+
+(defun muse-project-alist-get (sym)
+  "Turn `muse-project-alist' into something we can customize easily."
+  (when (boundp sym)
+    (setq muse-project-alist-using-customize t)
+    (let* ((val (copy-alist (symbol-value sym)))
+           (head val))
+      (while val
+        (let ((head (car (cdar val)))
+              res)
+          ;; Turn settings of first part into cons cells, symbol->string
+          (while head
+            (cond ((stringp (car head))
+                   (add-to-list 'res (car head) t)
+                   (setq head (cdr head)))
+                  ((symbolp (car head))
+                   (add-to-list 'res (list (symbol-name (car head))
+                                           (cadr head)) t)
+                   (setq head (cddr head)))
+                  (t
+                   (setq head (cdr head)))))
+          (setcdr (car val) (cons res (cdr (cdar val)))))
+        (let ((styles (cdar val)))
+          ;; Symbol->string in every style
+          (while (cdr styles)
+            (let ((head (cadr styles))
+                  res)
+              (while (consp head)
+                (setq res (plist-put res (symbol-name (car head))
+                                     (cadr head)))
+                (setq head (cddr head)))
+              (setcdr styles (cons res (cddr styles))))
+            (setq styles (cdr styles))))
+        (setq val (cdr val)))
+      head)))
+
+(defun muse-project-alist-set (sym val)
+  "Turn customized version of `muse-project-alist' into something
+Muse can make use of."
+  (set sym val)
+  (when muse-project-alist-using-customize
+    ;; Make sure the unescaped version is written to .emacs
+    (put sym 'saved-value (list (custom-quote val)))
+    ;; Perform unescaping
+    (while val
+      (let ((head (car (cdar val)))
+            res)
+        ;; Turn cons cells into flat list, string->symbol
+        (while head
+          (cond ((stringp (car head))
+                 (add-to-list 'res (car head) t))
+                ((consp (car head))
+                 (add-to-list 'res (intern (caar head)) t)
+                 (add-to-list 'res (car (cdar head)) t)))
+          (setq head (cdr head)))
+        (setcdr (car val) (cons res (cdr (cdar val)))))
+      (let ((styles (cdar val)))
+        ;; String->symbol in every style
+        (while (cdr styles)
+          (let ((head (cadr styles))
+                res)
+            (while (consp head)
+              (setq res (plist-put res (intern (car head))
+                                   (cadr head)))
+              (setq head (cddr head)))
+            (setcdr styles (cons res (cddr styles))))
+          (setq styles (cdr styles))))
+      (setq val (cdr val)))))
+
+(define-widget 'muse-project 'default
+  "A widget that defines a Muse project."
+  :format "\n%v"
+  :value-create 'muse-widget-type-value-create
+  :value-get 'muse-widget-child-value-get
+  :value-delete 'ignore
+  :match 'muse-widget-type-match
+  :type '(cons :format "    %v"
+               (repeat :tag "Settings" :format "%{%t%}:\n%v%i\n\n"
+                       (choice
+                        (string :tag "Directory")
+                        (list :tag "Book function"
+                              (const :tag ":book-funcall" ":book-funcall")
+                              (choice (function)
+                                      (sexp :tag "Unknown")))
+                        (list :tag "Book part"
+                              (const :tag ":book-part" ":book-part")
+                              (string :tag "Name"))
+                        (list :tag "Book style"
+                              (const :tag ":book-style" ":book-style")
+                              (string :tag "Style"))
+                        (list :tag "Default file"
+                              (const :tag ":default" ":default")
+                              (string :tag "File"))
+                        (list :tag "End of book"
+                              (const :tag ":book-end" ":book-end")
+                              (const t))
+                        (list :tag "Force publishing"
+                              (const :tag ":force-publish" ":force-publish")
+                              (repeat (string :tag "File")))
+                        (list :tag "Major mode"
+                              (const :tag ":major-mode" ":major-mode")
+                              (choice (function :tag "Mode")
+                                      (sexp :tag "Unknown")))
+                        (list :tag "New chapter"
+                              (const :tag ":book-chapter" ":book-chapter")
+                              (string :tag "Name"))
+                        (list :tag "No chapters"
+                              (const :tag ":nochapters" ":nochapters")
+                              (const t))
+                        (list :tag "Project-level publishing function"
+                              (const :tag ":publish-project"
+                                     ":publish-project")
+                              (choice (function :tag "Function")
+                                      (sexp :tag "Unknown")))
+                        (list :tag "Set variables"
+                              (const :tag ":set" ":set")
+                              (repeat (list :inline t
+                                            (symbol :tag "Variable")
+                                            (sexp :tag "Setting"))))
+                        (list :tag "Visit links using"
+                              (const :tag ":visit-link" ":visit-link")
+                              (choice (function)
+                                      (sexp :tag "Unknown")))))
+               (repeat :tag "Output styles" :format "%{%t%}:\n%v%i\n\n"
+                       (set :tag "Style"
+                            (list :inline t
+                                  :tag "Publishing style"
+                                  (const :tag ":base" ":base")
+                                  (string :tag "Style"))
+                            (list :inline t
+                                  :tag "Base URL"
+                                  (const :tag ":base-url" ":base-url")
+                                  (string :tag "URL"))
+                            (list :inline t
+                                  :tag "Exclude matching"
+                                  (const :tag ":exclude" ":exclude")
+                                  (regexp))
+                            (list :inline t
+                                  :tag "Include matching"
+                                  (const :tag ":include" ":include")
+                                  (regexp))
+                            (list :inline t
+                                  :tag "Timestamps file"
+                                  (const :tag ":timestamps" ":timestamps")
+                                  (file))
+                            (list :inline t
+                                  :tag "Path"
+                                  (const :tag ":path" ":path")
+                                  (string :tag "Path"))))))
+
+(defcustom muse-project-alist nil
+  "An alist of Muse projects.
+A project defines a fileset, and a list of custom attributes for use
+when publishing files in that project."
+  :type '(choice (const :tag "No projects defined." nil)
+                 (repeat (cons :format "%{%t%}:\n\n%v"
+                               :tag "Project" :indent 4
+                               (string :tag "Project name")
+                               muse-project))
+                 (sexp :tag "Cannot parse expression"))
+  :get 'muse-project-alist-get
+  :set 'muse-project-alist-set
+  :group 'muse-project)
+
+;; Make it easier to specify a muse-project-alist entry
+
+(defcustom muse-project-ignore-regexp
+  (concat "\\`\\(#.*#\\|.*,v\\|.*~\\|\\.\\.?\\|\\.#.*\\|,.*\\)\\'\\|"
+          "/\\(CVS\\|RCS\\|\\.arch-ids\\|{arch}\\|,.*\\|\\.svn\\|"
+          "\\.hg\\|\\.git\\|\\.bzr\\|_darcs\\)\\(/\\|\\'\\)")
+  "A regexp matching files to be ignored in Muse directories.
+
+You should set `case-fold-search' to nil before using this regexp
+in code."
+  :type 'regexp
+  :group 'muse-regexp)
+
+(defcustom muse-project-publish-private-files t
+  "If this is non-nil, files will be published even if their permissions
+are set so that no one else on the filesystem can read them.
+
+Set this to nil if you would like to indicate that some files
+should not be published by manually doing \"chmod o-rwx\" on
+them.
+
+This setting has no effect under Windows (that is, all files are
+published regardless of permissions) because Windows lacks the
+needed filesystem attributes."
+  :type 'boolean
+  :group 'muse-project)
+
+(defun muse-project-recurse-directory (base)
+  "Recusively retrieve all of the directories underneath BASE.
+A list of these directories is returned.
+
+Directories starting with \".\" will be ignored, as well as those
+which match `muse-project-ignore-regexp'."
+  (let ((case-fold-search nil)
+        list dir)
+    (when (and (file-directory-p base)
+               (not (string-match muse-project-ignore-regexp base)))
+      (dolist (file (directory-files base t "^[^.]"))
+        (when (and (file-directory-p file)
+                   (not (string-match muse-project-ignore-regexp file)))
+          (setq dir (file-name-nondirectory file))
+          (push dir list)
+          (nconc list (mapcar #'(lambda (item)
+                                  (concat dir "/" item))
+                              (muse-project-recurse-directory file)))))
+      list)))
+
+(defun muse-project-alist-styles (entry-dir output-dir style &rest other)
+  "Return a list of styles to use in a `muse-project-alist' entry.
+ENTRY-DIR is the top-level directory of the project.
+OUTPUT-DIR is where Muse files are published, keeping directory structure.
+STYLE is the publishing style to use.
+
+OTHER contains other definitions to add to each style.  It is optional.
+
+For an example of the use of this function, see
+`examples/mwolson/muse-init.el' from the Muse distribution."
+  (let ((fnd (file-name-nondirectory entry-dir)))
+    (when (string= fnd "")
+      ;; deal with cases like "foo/" that have a trailing slash
+      (setq fnd (file-name-nondirectory (substring entry-dir 0 -1))))
+    (cons `(:base ,style :path ,(if (muse-file-remote-p output-dir)
+                                    output-dir
+                                  (expand-file-name output-dir))
+                  :include ,(concat "/" fnd "/[^/]+$")
+                  ,@other)
+          (mapcar (lambda (dir)
+                    `(:base ,style
+                            :path ,(expand-file-name dir output-dir)
+                            :include ,(concat "/" dir "/[^/]+$")
+                            ,@other))
+                  (muse-project-recurse-directory entry-dir)))))
+
+(defun muse-project-alist-dirs (entry-dir)
+  "Return a list of directories to use in a `muse-project-alist' entry.
+ENTRY-DIR is the top-level directory of the project.
+
+For an example of the use of this function, see
+`examples/mwolson/muse-init.el' from the Muse distribution."
+  (cons (expand-file-name entry-dir)
+        (mapcar (lambda (dir) (expand-file-name dir entry-dir))
+                (muse-project-recurse-directory entry-dir))))
+
+;; Constructing the file-alist
+
+(defvar muse-project-file-alist nil
+  "This variable is automagically constructed as needed.")
+
+(defvar muse-project-file-alist-hook nil
+  "Functions that are to be exectuted immediately after updating
+`muse-project-file-alist'.")
+
+(defvar muse-current-project nil
+  "Project we are currently visiting.")
+(make-variable-buffer-local 'muse-current-project)
+(defvar muse-current-project-global nil
+  "Project we are currently visiting.  This is used to propagate the value
+of `muse-current-project' into a new buffer during publishing.")
+
+(defvar muse-current-output-style nil
+  "The output style that we are currently using for publishing files.")
+
+(defsubst muse-project (&optional project)
+  "Resolve the given PROJECT into a full Muse project, if it is a string."
+  (if (null project)
+      (or muse-current-project
+          (muse-project-of-file))
+    (if (stringp project)
+        (assoc project muse-project-alist)
+      (muse-assert (consp project))
+      project)))
+
+(defun muse-project-page-file (page project &optional no-check-p)
+  "Return a filename if PAGE exists within the given Muse PROJECT."
+  (setq project (muse-project project))
+  (if (null page)
+      ;; if not given a page, return the first directory instead
+      (let ((pats (cadr project)))
+        (catch 'done
+          (while pats
+            (if (symbolp (car pats))
+                (setq pats (cddr pats))
+              (throw 'done (file-name-as-directory (car pats)))))))
+    (let ((dir (file-name-directory page))
+          (expanded-path nil))
+      (when dir
+        (setq expanded-path (concat (expand-file-name
+                                     page
+                                     (file-name-directory (muse-current-file)))
+                                    (when muse-file-extension
+                                      (concat "." muse-file-extension))))
+        (setq page (file-name-nondirectory page)))
+      (let ((files (muse-collect-alist
+                    (muse-project-file-alist project no-check-p)
+                    page))
+            (matches nil))
+        (if dir
+            (catch 'done
+              (save-match-data
+                (dolist (file files)
+                  (if (and expanded-path
+                           (string= expanded-path (cdr file)))
+                      (throw 'done (cdr file))
+                    (let ((pos (string-match (concat (regexp-quote dir) "\\'")
+                                             (file-name-directory
+                                              (cdr file)))))
+                      (when pos
+                        (setq matches (cons (cons pos (cdr file))
+                                            matches)))))))
+              ;; if we haven't found an exact match, pick a candidate
+              (car (muse-sort-by-rating matches)))
+          (dolist (file files)
+            (setq matches (cons (cons (length (cdr file)) (cdr file))
+                                matches)))
+          (car (muse-sort-by-rating matches '<)))))))
+
+(defun muse-project-private-p (file)
+  "Return non-nil if NAME is a private page with PROJECT."
+  (unless (or muse-under-windows-p
+              muse-project-publish-private-files)
+    (setq file (file-truename file))
+    (if (file-attributes file)  ; don't publish if no attributes exist
+        (or (when (eq ?- (aref (nth 8 (file-attributes
+                                       (file-name-directory file))) 7))
+              (message (concat
+                        "The " (file-name-directory file)
+                        " directory must be readable by others"
+                        " in order for its contents to be published.")))
+            (eq ?- (aref (nth 8 (file-attributes file)) 7)))
+      t)))
+
+(defun muse-project-file-entries (path)
+  (let* ((names (list t))
+         (lnames names)
+         (case-fold-search nil))
+    (cond
+     ((file-directory-p path)
+      (dolist (file (directory-files
+                     path t (when (and muse-file-extension
+                                       (not (string= muse-file-extension "")))
+                              (concat "." muse-file-extension "\\'"))))
+        (unless (or (string-match muse-project-ignore-regexp file)
+                    (string-match muse-project-ignore-regexp
+                                  (file-name-nondirectory file))
+                    (file-directory-p file))
+          (setcdr lnames
+                  (cons (cons (muse-page-name file) file) nil))
+          (setq lnames (cdr lnames)))))
+     ((file-readable-p path)
+      (setcdr lnames
+              (cons (cons (muse-page-name path) path) nil))
+      (setq lnames (cdr lnames)))
+     (t                                 ; regexp
+      (muse-assert (file-name-directory path))
+      (dolist (file (directory-files
+                     (file-name-directory path) t
+                     (file-name-nondirectory path)))
+        (unless (or (string-match muse-project-ignore-regexp file)
+                    (string-match muse-project-ignore-regexp
+                                  (file-name-nondirectory file)))
+          (setcdr lnames
+                  (cons (cons (muse-page-name file) file) nil))
+          (setq lnames (cdr lnames))))))
+    (cdr names)))
+
+(defvar muse-updating-file-alist-p nil
+  "Make sure that recursive calls to `muse-project-file-alist' are bounded.")
+
+(defun muse-project-determine-last-mod (project &optional no-check-p)
+  "Return the most recent last-modified timestamp of dirs in PROJECT."
+  (let ((last-mod nil))
+    (unless (or muse-under-windows-p no-check-p)
+      (let ((pats (cadr project)))
+        (while pats
+          (if (symbolp (car pats))
+              (setq pats (cddr pats))
+            (let* ((fnd (file-name-directory (car pats)))
+                   (dir (cond ((file-directory-p (car pats))
+                               (car pats))
+                              ((and (not (file-readable-p (car pats)))
+                                    fnd
+                                    (file-directory-p fnd))
+                               fnd))))
+              (when dir
+                (let ((mod-time (nth 5 (file-attributes dir))))
+                  (when (or (null last-mod)
+                            (and mod-time
+                                 (muse-time-less-p last-mod mod-time)))
+                    (setq last-mod mod-time)))))
+            (setq pats (cdr pats))))))
+    last-mod))
+
+(defun muse-project-file-alist (&optional project no-check-p)
+  "Return member filenames for the given Muse PROJECT.
+Also, update the `muse-project-file-alist' variable.
+
+On UNIX, this alist is only updated if one of the directories'
+contents have changed.  On Windows, it is always reread from
+disk.
+
+If NO-CHECK-P is non-nil, do not update the alist, just return
+the current one."
+  (setq project (muse-project project))
+  (when (and project muse-project-alist)
+    (let* ((file-alist (assoc (car project) muse-project-file-alist))
+           (last-mod (muse-project-determine-last-mod project no-check-p)))
+      ;; Either return the currently known list, or read it again from
+      ;; disk
+      (if (or (and no-check-p (cadr file-alist))
+              muse-updating-file-alist-p
+              (not (or muse-under-windows-p
+                       (null (cddr file-alist))
+                       (null last-mod)
+                       (muse-time-less-p (cddr file-alist) last-mod))))
+          (cadr file-alist)
+        (if file-alist
+            (setcdr (cdr file-alist) last-mod)
+          (setq file-alist (cons (car project) (cons nil last-mod))
+                muse-project-file-alist
+                (cons file-alist muse-project-file-alist)))
+        ;; Read in all of the file entries
+        (let ((muse-updating-file-alist-p t))
+          (prog1
+              (save-match-data
+                (setcar
+                 (cdr file-alist)
+                 (let* ((names (list t))
+                        (pats (cadr project)))
+                   (while pats
+                     (if (symbolp (car pats))
+                         (setq pats (cddr pats))
+                       (nconc names (muse-project-file-entries (car pats)))
+                       (setq pats (cdr pats))))
+                   (cdr names))))
+            (run-hooks 'muse-project-file-alist-hook)))))))
+
+(defun muse-project-add-to-alist (file &optional project)
+  "Make sure FILE is added to `muse-project-file-alist'.
+
+It works by either calling the `muse-project-file-alist' function
+if a directory has been modified since we last checked, or
+manually forcing the file entry to exist in the alist.  This
+works around an issue where if several files being saved at the
+same time, only the first one will make it into the alist.  It is
+meant to be called by `muse-project-after-save-hook'.
+
+The project of the file is determined by either the PROJECT
+argument, or `muse-project-of-file' if PROJECT is not specified."
+  (setq project (or (muse-project project) (muse-project-of-file file)))
+  (when (and project muse-project-alist)
+    (let* ((file-alist (assoc (car project) muse-project-file-alist))
+           (last-mod (muse-project-determine-last-mod project)))
+      ;; Determine whether we need to call this
+      (if (or (null (cddr file-alist))
+              (null last-mod)
+              (muse-time-less-p (cddr file-alist) last-mod))
+          ;; The directory will show up as modified, so go ahead and
+          ;; call `muse-project-file-alist'
+          (muse-project-file-alist project)
+        ;; It is not showing as modified, so forcefully add the
+        ;; current file to the project file-alist
+        (let ((muse-updating-file-alist-p t))
+          (prog1
+              (save-match-data
+                (setcar (cdr file-alist)
+                        (nconc (muse-project-file-entries file)
+                               (cadr file-alist))))
+            (run-hooks 'muse-project-file-alist-hook)))))))
+
+(defun muse-project-of-file (&optional pathname)
+  "Determine which project the given PATHNAME relates to.
+If PATHNAME is nil, the current buffer's filename is used."
+  (if (and (null pathname) muse-current-project)
+      muse-current-project
+    (unless pathname (setq pathname (muse-current-file)))
+    (save-match-data
+      (when (and (stringp pathname)
+                 muse-project-alist
+                 (not (string= pathname ""))
+                 (not (let ((case-fold-search nil))
+                        (or (string-match muse-project-ignore-regexp
+                                          pathname)
+                            (string-match muse-project-ignore-regexp
+                                          (file-name-nondirectory
+                                           pathname))))))
+        (let* ((file (file-truename pathname))
+               (dir  (file-name-directory file))
+               found rating matches)
+          (catch 'found
+            (dolist (project-entry muse-project-alist)
+              (let ((pats (cadr project-entry)))
+                (while pats
+                  (if (symbolp (car pats))
+                      (setq pats (cddr pats))
+                    (let ((tname (file-truename (car pats))))
+                      (cond ((or (string= tname file)
+                                 (string= (file-name-as-directory tname) dir))
+                             (throw 'found project-entry))
+                            ((string-match (concat "\\`" (regexp-quote tname))
+                                           file)
+                             (setq matches (cons (cons (match-end 0)
+                                                       project-entry)
+                                                 matches)))))
+                    (setq pats (cdr pats))))))
+            ;; if we haven't found an exact match, pick a candidate
+            (car (muse-sort-by-rating matches))))))))
+
+(defun muse-project-after-save-hook ()
+  "Update Muse's file-alist if we are saving a Muse file."
+  (let ((project (muse-project-of-file)))
+    (when project
+      (muse-project-add-to-alist (buffer-file-name) project))))
+
+(add-hook 'after-save-hook 'muse-project-after-save-hook)
+
+(defun muse-read-project (prompt &optional no-check-p no-assume)
+  "Read a project name from the minibuffer, if it can't be figured
+  out."
+  (if (null muse-project-alist)
+      (error "There are no Muse projects defined; see `muse-project-alist'")
+    (or (unless no-check-p
+          (muse-project-of-file))
+        (if (and (not no-assume)
+                 (= 1 (length muse-project-alist)))
+            (car muse-project-alist)
+          (assoc (funcall muse-completing-read-function
+                          prompt muse-project-alist)
+                 muse-project-alist)))))
+
+(defvar muse-project-page-history nil)
+
+(defun muse-read-project-file (project prompt &optional default)
+  (let* ((file-list (muse-delete-dups
+                     (mapcar #'(lambda (a) (list (car a)))
+                             (muse-project-file-alist project))))
+         (name (funcall muse-completing-read-function
+                       prompt file-list nil nil nil
+                       'muse-project-page-history default)))
+    (cons name (muse-project-page-file name project))))
+
+;;;###autoload
+(defun muse-project-find-file (name project &optional command directory)
+  "Open the Muse page given by NAME in PROJECT.
+If COMMAND is non-nil, it is the function used to visit the file.
+If DIRECTORY is non-nil, it is the directory in which the page
+will be created if it does not already exist.  Otherwise, the
+first directory within the project's fileset is used."
+  (interactive
+   (let* ((project (muse-read-project "Find in project: "
+                                      current-prefix-arg))
+          (default (muse-get-keyword :default (cadr project)))
+          (entry (muse-read-project-file
+                  project (if default
+                              (format "Find page: (default: %s) "
+                                      default)
+                            "Find page: ")
+                  default)))
+     (list entry project)))
+  (setq project (muse-project project))
+  (let ((project-name (car project)))
+    (unless (interactive-p)
+      (setq project (muse-project project)
+            name (cons name (muse-project-page-file name project))))
+    ;; If we're given a relative or absolute filename, open it as-is
+    (if (and (car name)
+             (save-match-data
+               (or (string-match "\\`\\.+/" (car name))
+                   (string-match muse-file-regexp (car name))
+                   (string-match muse-image-regexp (car name)))))
+        (setcdr name (car name))
+      ;; At this point, name is (PAGE . FILE).
+      (unless (cdr name)
+        (let ((pats (cadr project)))
+          (while (and pats (null directory))
+            (if (symbolp (car pats))
+                (setq pats (cddr pats))
+              (if (file-directory-p (car pats))
+                  (setq directory (car pats) pats nil)
+                (setq pats (cdr pats))))))
+        (when directory
+          (let ((filename (expand-file-name (car name) directory)))
+            (when (and muse-file-extension
+                       (not (string= muse-file-extension ""))
+                       (not (file-exists-p (car name))))
+              (setq filename (concat filename "." muse-file-extension)))
+            (unless (file-exists-p directory)
+              (make-directory directory t))
+            (setcdr name filename)))))
+    ;; Open the file
+    (if (cdr name)
+        (funcall (or command 'find-file) (cdr name))
+      (error "There is no page %s in project %s"
+             (car name) project-name))))
+
+(defun muse-project-choose-style (closure test styles)
+  "Run TEST on STYLES and return first style where TEST yields non-nil.
+TEST should take two arguments.  The first is CLOSURE, which is
+passed verbatim.  The second if the current style to consider.
+
+If no style passes TEST, return the first style."
+  (or (catch 'winner
+        (dolist (style styles)
+          (when (funcall test closure style)
+            (throw 'winner style))))
+      (car styles)))
+
+(defun muse-project-choose-style-by-link-suffix (given-suffix style)
+  "If the given STYLE has a link-suffix that equals GIVEN-SUFFIX,
+return non-nil."
+  (let ((link-suffix (or (muse-style-element :link-suffix style)
+                         (muse-style-element :suffix style))))
+    (and (stringp link-suffix)
+         (string= given-suffix link-suffix))))
+
+(defun muse-project-applicable-styles (file styles)
+  "Given STYLES, return a list of the ones that are considered for FILE.
+The name of a project may be used for STYLES."
+  (when (stringp styles)
+    (setq styles (cddr (muse-project styles))))
+  (when (and file styles)
+    (let ((used-styles nil))
+      (dolist (style styles)
+        (let ((include-regexp (muse-style-element :include style))
+              (exclude-regexp (muse-style-element :exclude style))
+              (rating nil))
+          (when (and (or (and (null include-regexp)
+                              (null exclude-regexp))
+                         (if include-regexp
+                             (setq rating (string-match include-regexp file))
+                           (not (string-match exclude-regexp file))))
+                     (file-exists-p file)
+                     (not (muse-project-private-p file)))
+            (setq used-styles (cons (cons rating style) used-styles)))))
+      (muse-sort-by-rating (nreverse used-styles)))))
+
+(defun muse-project-get-applicable-style (file styles)
+  "Choose a style from the STYLES that FILE can publish to.
+The user is prompted if several styles are found."
+  (muse-publish-get-style
+   (mapcar (lambda (style)
+             (cons (muse-get-keyword :base style) style))
+           (muse-project-applicable-styles file styles))))
+
+(defun muse-project-resolve-directory (page local-style remote-style)
+  "Figure out the directory part of the path that provides a link to PAGE.
+LOCAL-STYLE is the style of the current Muse file, and
+REMOTE-STYLE is the style associated with PAGE.
+
+If REMOTE-STYLE has a :base-url element, concatenate it and PAGE.
+Otherwise, return a relative link."
+  (let ((prefix (muse-style-element :base-url remote-style)))
+    (if prefix
+        (concat prefix page)
+      (file-relative-name (expand-file-name
+                           (file-name-nondirectory page)
+                           (muse-style-element :path remote-style))
+                          (expand-file-name
+                           (muse-style-element :path local-style))))))
+
+(defun muse-project-resolve-link (page local-style remote-styles)
+  "Return a published link from the output path of one file to another file.
+
+The best match for PAGE is determined by comparing the link
+suffix of the given local style and that of the remote styles.
+
+The remote styles are usually populated by
+`muse-project-applicable-styles'.
+
+If no remote style is found, return PAGE verbatim
+
+If PAGE has a :base-url associated with it, return the
+concatenation of the :base-url value and PAGE.
+
+Otherwise, return a relative path from the directory of
+LOCAL-STYLE to the best directory among REMOTE-STYLES."
+  (let ((link-suffix (or (muse-style-element :link-suffix local-style)
+                         (muse-style-element :suffix local-style)))
+        remote-style)
+    (if (not (stringp link-suffix))
+        (setq remote-style (car remote-styles))
+      (setq remote-style (muse-project-choose-style
+                          link-suffix
+                          #'muse-project-choose-style-by-link-suffix
+                          remote-styles)))
+    (if (null remote-style)
+        page
+      (setq page (muse-project-resolve-directory
+                  page local-style remote-style))
+      (concat (file-name-directory page)
+              (muse-publish-link-name page remote-style)))))
+
+(defun muse-project-current-output-style (&optional file project)
+  (or muse-current-output-style
+      (progn
+        (unless file (setq file (muse-current-file)))
+        (unless project (setq project (muse-project-of-file file)))
+        (car (muse-project-applicable-styles file (cddr project))))))
+
+(defun muse-project-link-page (page)
+  (let ((project (muse-project-of-file)))
+    (muse-project-resolve-link page
+                               (muse-project-current-output-style)
+                               (muse-project-applicable-styles
+                                (muse-project-page-file page project)
+                                (cddr project)))))
+
+(defun muse-project-publish-file-default (file style output-dir force)
+  ;; ensure the publishing location is available
+  (unless (file-exists-p output-dir)
+    (message "Creating publishing directory %s" output-dir)
+    (make-directory output-dir t))
+  ;; publish the member file!
+  (muse-publish-file file style output-dir force))
+
+(defun muse-project-publish-file (file styles &optional force)
+  (setq styles (muse-project-applicable-styles file styles))
+  (let (published)
+    (dolist (style styles)
+      (if (or (not (listp style))
+              (not (cdr style)))
+          (muse-display-warning
+           (concat "Skipping malformed muse-project-alist style."
+                   "\nPlease double-check your configuration,"))
+        (let ((output-dir (muse-style-element :path style))
+              (muse-current-output-style style)
+              (fun (or (muse-style-element :publish style t)
+                       'muse-project-publish-file-default)))
+          (when (funcall fun file style output-dir force)
+            (setq published t)))))
+    published))
+
+;;;###autoload
+(defun muse-project-publish-this-file (&optional force style)
+  "Publish the currently-visited file according to `muse-project-alist',
+prompting if more than one style applies.
+
+If FORCE is given, publish the file even if it is up-to-date.
+
+If STYLE is given, use that publishing style rather than
+prompting for one."
+  (interactive (list current-prefix-arg))
+  (let ((muse-current-project (muse-project-of-file)))
+    (if (not muse-current-project)
+        ;; file is not part of a project, so fall back to muse-publish
+        (if (interactive-p) (call-interactively 'muse-publish-this-file)
+          (muse-publish-this-file style nil force))
+      (unless style
+        (setq style (muse-project-get-applicable-style
+                     buffer-file-name (cddr muse-current-project))))
+      (let* ((output-dir (muse-style-element :path style))
+             (muse-current-project-global muse-current-project)
+             (muse-current-output-style (list :base (car style)
+                                              :path output-dir))
+             (fun (or (muse-style-element :publish style t)
+                      'muse-project-publish-file-default)))
+        (unless (funcall fun buffer-file-name style output-dir force)
+          (message (concat "The published version is up-to-date; use"
+                           " C-u C-c C-t to force an update.")))))))
+
+(defun muse-project-save-buffers (&optional project)
+  (setq project (muse-project project))
+  (when project
+    (save-excursion
+      (map-y-or-n-p
+       (function
+        (lambda (buffer)
+          (and (buffer-modified-p buffer)
+               (not (buffer-base-buffer buffer))
+               (or (buffer-file-name buffer)
+                   (progn
+                     (set-buffer buffer)
+                     (and buffer-offer-save
+                          (> (buffer-size) 0))))
+               (with-current-buffer buffer
+                 (let ((proj (muse-project-of-file)))
+                   (and proj (string= (car proj)
+                                      (car project)))))
+               (if (buffer-file-name buffer)
+                   (format "Save file %s? "
+                           (buffer-file-name buffer))
+                 (format "Save buffer %s? "
+                         (buffer-name buffer))))))
+       (function
+        (lambda (buffer)
+          (set-buffer buffer)
+          (save-buffer)))
+       (buffer-list)
+       '("buffer" "buffers" "save")
+       (if (boundp 'save-some-buffers-action-alist)
+           save-some-buffers-action-alist)))))
+
+(defun muse-project-publish-default (project styles &optional force)
+  "Publish the pages of PROJECT that need publishing."
+  (setq project (muse-project project))
+  (let ((published nil))
+    ;; publish all files in the project, for each style; the actual
+    ;; publishing will only happen if the files are newer than the
+    ;; last published output, or if the file is listed in
+    ;; :force-publish.  Files in :force-publish will not trigger the
+    ;; "All pages need to be published" message.
+    (let ((forced-files (muse-get-keyword :force-publish (cadr project)))
+          (file-alist (muse-project-file-alist project)))
+      (dolist (pair file-alist)
+        (when (muse-project-publish-file (cdr pair) styles force)
+          (setq forced-files (delete (car pair) forced-files))
+          (setq published t)))
+      (dolist (file forced-files)
+        (muse-project-publish-file (cdr (assoc file file-alist)) styles t)))
+    ;; run hook after publishing ends
+    (run-hook-with-args 'muse-after-project-publish-hook project)
+    ;; notify the user that everything is now done
+    (if published
+        (message "All pages in %s have been published." (car project))
+      (message "No pages in %s need publishing at this time."
+               (car project)))))
+
+;;;###autoload
+(defun muse-project-publish (project &optional force)
+  "Publish the pages of PROJECT that need publishing."
+  (interactive (list (muse-read-project "Publish project: " nil t)
+                     current-prefix-arg))
+  (setq project (muse-project project))
+  (let ((styles (cddr project))
+        (muse-current-project project)
+        (muse-current-project-global project))
+    ;; determine the style from the project, or else ask
+    (unless styles
+      (setq styles (list (muse-publish-get-style))))
+    (unless project
+      (error "Cannot find a project to publish"))
+    ;; prompt to save any buffers related to this project
+    (muse-project-save-buffers project)
+    ;; run hook before publishing begins
+    (run-hook-with-args 'muse-before-project-publish-hook project)
+    ;; run the project-level publisher
+    (let ((fun (or (muse-get-keyword :publish-project (cadr project) t)
+                   'muse-project-publish-default)))
+      (funcall fun project styles force))))
+
+(defun muse-project-batch-publish ()
+  "Publish Muse files in batch mode."
+  (let ((muse-batch-publishing-p t)
+        force)
+    (if (string= "--force" (or (car command-line-args-left) ""))
+        (setq force t
+              command-line-args-left (cdr command-line-args-left)))
+    (if command-line-args-left
+        (dolist (project command-line-args-left)
+          (message "Publishing project %s ..." project)
+          (muse-project-publish project force))
+      (message "No projects specified."))))
+
+(eval-when-compile
+  (put 'make-local-hook 'byte-compile nil))
+
+(defun muse-project-set-variables ()
+  "Load project-specific variables."
+  (when (and muse-current-project-global (null muse-current-project))
+    (setq muse-current-project muse-current-project-global))
+  (let ((vars (muse-get-keyword :set (cadr muse-current-project)))
+        sym custom-set var)
+    (while vars
+      (setq sym (car vars))
+      (setq custom-set (or (get sym 'custom-set) 'set))
+      (setq var (if (eq (get sym 'custom-type) 'hook)
+                    (make-local-hook sym)
+                  (make-local-variable sym)))
+      (funcall custom-set var (car (cdr vars)))
+      (setq vars (cdr (cdr vars))))))
+
+(custom-add-option 'muse-before-publish-hook 'muse-project-set-variables)
+(add-to-list 'muse-before-publish-hook 'muse-project-set-variables)
+
+(defun muse-project-delete-output-files (project)
+  (interactive
+   (list (muse-read-project "Remove all output files for project: " nil t)))
+  (setq project (muse-project project))
+  (let ((file-alist (muse-project-file-alist project))
+        (styles (cddr project))
+        output-file path)
+    (dolist (entry file-alist)
+      (dolist (style styles)
+        (setq output-file
+              (and (setq path (muse-style-element :path style))
+                   (expand-file-name
+                    (concat (muse-style-element :prefix style)
+                            (car entry)
+                            (or (muse-style-element :osuffix style)
+                                (muse-style-element :suffix style)))
+                    path)))
+        (if output-file
+            (muse-delete-file-if-exists output-file))))))
+
+;;; muse-project.el ends here
diff --git a/packages/muse/muse-protocols.el b/packages/muse/muse-protocols.el
new file mode 100644 (file)
index 0000000..5e1061c
--- /dev/null
@@ -0,0 +1,251 @@
+;;; muse-protocols.el --- URL protocols that Muse recognizes
+
+;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; Author: Brad Collins (brad AT chenla DOT org)
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; Here's an example for adding a protocol for the site yubnub, a Web
+;; Command line service.
+;;
+;; (add-to-list 'muse-url-protocols '("yubnub://" muse-browse-url-yubnub
+;;                                                muse-resolve-url-yubnub))
+;;
+;; (defun muse-resolve-url-yubnub (url)
+;;   "Resolve a yubnub URL."
+;;   ;; Remove the yubnub://
+;;   (when (string-match "\\`yubnub://\\(.+\\)" url)
+;;     (match-string 1)))
+;;
+;; (defun muse-browse-url-yubnub (url)
+;;   "If this is a yubnub URL-command, jump to it."
+;;   (setq url (muse-resolve-url-yubnub url))
+;;   (browse-url (concat "http://yubnub.org/parser/parse?command="
+;;                       url)))
+
+;;; Contributors:
+
+;; Phillip Lord (Phillip.Lord AT newcastle DOT ac DOT uk) provided a
+;; handler for DOI URLs.
+
+;; Stefan Schlee fixed a bug with handling of colons at the end of
+;; URLs.
+
+;; Valery V. Vorotyntsev contribued the woman:// protocol handler and
+;; simplified `muse-browse-url-man'.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Muse URL Protocols
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'info)
+(require 'muse-regexps)
+
+(defvar muse-url-regexp nil
+  "A regexp used to match URLs within a Muse page.
+This is autogenerated from `muse-url-protocols'.")
+
+(defun muse-update-url-regexp (sym value)
+  (setq muse-url-regexp
+        (concat "\\<\\(" (mapconcat 'car value "\\|") "\\)"
+                "[^][" muse-regexp-blank "\"'()<>^`{}\n]*"
+                "[^][" muse-regexp-blank "\"'()<>^`{}.,;:\n]+"))
+  (set sym value))
+
+(defcustom muse-url-protocols
+  '(("[uU][rR][lL]:" muse-browse-url-url identity)
+    ("info://" muse-browse-url-info nil)
+    ("man://" muse-browse-url-man nil)
+    ("woman://" muse-browse-url-woman nil)
+    ("google://" muse-browse-url-google muse-resolve-url-google)
+    ("http:/?/?" browse-url identity)
+    ("https:/?/?" browse-url identity)
+    ("ftp:/?/?" browse-url identity)
+    ("gopher://" browse-url identity)
+    ("telnet://" browse-url identity)
+    ("wais://" browse-url identity)
+    ("file://?" browse-url identity)
+    ("dict:" muse-browse-url-dict muse-resolve-url-dict)
+    ("doi:" muse-browse-url-doi muse-resolve-url-doi)
+    ("news:" browse-url identity)
+    ("snews:" browse-url identity)
+    ("mailto:" browse-url identity))
+  "A list of (PROTOCOL BROWSE-FUN RESOLVE-FUN) used to match URL protocols.
+PROTOCOL describes the first part of the URL, including the
+\"://\" part.  This may be a regexp.
+
+BROWSE-FUN should accept URL as an argument and open the URL in
+the current window.
+
+RESOLVE-FUN should accept URL as an argument and return the final
+URL, or nil if no URL should be included."
+  :type '(repeat (list :tag "Protocol"
+                       (string :tag "Regexp")
+                       (function :tag "Browse")
+                       (choice (function :tag "Resolve")
+                               (const :tag "Don't resolve" nil))))
+  :set 'muse-update-url-regexp
+  :group 'muse)
+
+(add-hook 'muse-update-values-hook
+          (lambda ()
+            (muse-update-url-regexp 'muse-url-protocols muse-url-protocols)))
+
+(defcustom muse-wikipedia-country "en"
+  "Indicate the 2-digit country code that we use for Wikipedia
+queries."
+  :type 'string
+  :options '("de" "en" "es" "fr" "it" "pl" "pt" "ja" "nl" "sv")
+  :group 'muse)
+
+(defun muse-protocol-find (proto list)
+  "Return the first element of LIST whose car matches the regexp PROTO."
+  (catch 'found
+    (dolist (item list)
+      (when (string-match (concat "\\`" (car item)) proto)
+        (throw 'found item)))))
+
+;;;###autoload
+(defun muse-browse-url (url &optional other-window)
+  "Handle URL with the function specified in `muse-url-protocols'.
+If OTHER-WINDOW is non-nil, open in a different window."
+  (interactive (list (read-string "URL: ")
+                     current-prefix-arg))
+  ;; Strip text properties
+  (when (fboundp 'set-text-properties)
+    (set-text-properties 0 (length url) nil url))
+  (when other-window
+    (switch-to-buffer-other-window (current-buffer)))
+  (when (string-match muse-url-regexp url)
+    (let* ((proto (match-string 1 url))
+           (entry (muse-protocol-find proto muse-url-protocols)))
+      (when entry
+        (funcall (cadr entry) url)))))
+
+(defun muse-resolve-url (url &rest ignored)
+  "Resolve URL with the function specified in `muse-url-protocols'."
+  (when (string-match muse-url-regexp url)
+    (let* ((proto (match-string 1 url))
+           (entry (muse-protocol-find proto muse-url-protocols)))
+      (when entry
+        (let ((func (car (cddr entry))))
+          (if func
+              (setq url (funcall func url))
+            (setq url nil))))))
+  url)
+
+(defun muse-protocol-add (protocol browse-function resolve-function)
+  "Add PROTOCOL to `muse-url-protocols'.  PROTOCOL may be a regexp.
+
+BROWSE-FUNCTION should be a function that visits a URL in the
+current buffer.
+
+RESOLVE-FUNCTION should be a function that transforms a URL for
+publishing or returns nil if not linked."
+  (add-to-list 'muse-url-protocols
+               (list protocol browse-function resolve-function))
+  (muse-update-url-regexp 'muse-url-protocols
+                          muse-url-protocols))
+
+(defun muse-browse-url-url (url)
+  "Call `muse-protocol-browse-url' to browse URL.
+This is used when we are given something like
+\"URL:http://example.org/\".
+
+If you're looking for a good example for how to make a custom URL
+handler, look at `muse-browse-url-dict' instead."
+  (when (string-match "\\`[uU][rR][lL]:\\(.+\\)" url)
+    (muse-browse-url (match-string 1 url))))
+
+(defun muse-resolve-url-dict (url)
+  "Return the Wikipedia link corresponding with the given URL."
+  (when (string-match "\\`dict:\\(.+\\)" url)
+    (concat "http://" muse-wikipedia-country ".wikipedia.org/"
+            "wiki/Special:Search?search=" (match-string 1 url))))
+
+(defun muse-browse-url-dict (url)
+  "If this is a Wikipedia URL, browse it."
+  (let ((dict-url (muse-resolve-url-dict url)))
+    (when dict-url
+      (browse-url dict-url))))
+
+(defun muse-resolve-url-doi (url)
+  "Return the URL through DOI proxy server."
+  (when (string-match "\\`doi:\\(.+\\)" url)
+    (concat "http://dx.doi.org/"
+            (match-string 1 url))))
+
+(defun muse-browse-url-doi (url)
+  "If this is a DOI URL, browse it.
+
+DOI's (digitial object identifiers) are a standard identifier
+used in the publishing industry."
+  (let ((doi-url (muse-resolve-url-doi url)))
+    (when doi-url
+      (browse-url doi-url))))
+
+(defun muse-resolve-url-google (url)
+  "Return the correct Google search string."
+  (when (string-match "\\`google:/?/?\\(.+\\)" url)
+    (concat "http://www.google.com/search?q="
+            (match-string 1 url))))
+
+(defun muse-browse-url-google (url)
+  "If this is a Google URL, jump to it."
+  (let ((google-url (muse-resolve-url-google url)))
+    (when google-url
+      (browse-url google-url))))
+
+(defun muse-browse-url-info (url)
+  "If this in an Info URL, jump to it."
+  (require 'info)
+  (cond
+   ((string-match "\\`info://\\([^#\n]+\\)#\\(.+\\)" url)
+    (Info-find-node (match-string 1 url)
+                    (match-string 2 url)))
+   ((string-match "\\`info://\\([^#\n]+\\)" url)
+    (Info-find-node (match-string 1 url)
+                    "Top"))
+   ((string-match "\\`info://(\\([^)\n]+\\))\\(.+\\)" url)
+    (Info-find-node (match-string 1 url) (match-string 2 url)))
+   ((string-match "\\`info://\\(.+\\)" url)
+    (Info-find-node (match-string 1 url) "Top"))))
+
+(defun muse-browse-url-man (url)
+  "If this in a manpage URL, jump to it."
+  (require 'man)
+  (when (string-match "\\`man://\\([^(]+\\(([^)]+)\\)?\\)" url)
+    (man (match-string 1 url))))
+
+(defun muse-browse-url-woman (url)
+  "If this is a WoMan URL, jump to it."
+  (require 'woman)
+  (when (string-match "\\`woman://\\(.+\\)" url)
+    (woman (match-string 1 url))))
+
+(provide 'muse-protocols)
+
+;;; muse-protocols.el ends here
diff --git a/packages/muse/muse-publish.el b/packages/muse/muse-publish.el
new file mode 100644 (file)
index 0000000..ec6e176
--- /dev/null
@@ -0,0 +1,2193 @@
+;;; muse-publish.el --- base publishing implementation
+
+;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;;; Contributors:
+
+;; Yann Hodique (yann DOT hodique AT gmail DOT com) fixed an
+;; unnecessary URL description transform in `muse-publish-url'.
+
+;; Peter K. Lee (saint AT corenova DOT com) provided the
+;; `muse-style-elements-list' function.
+
+;; Jim Ottaway (j DOT ottaway AT lse DOT ac DOT uk) provided a
+;; reference implementation for nested lists, as well as some code for
+;; the "style" element of the <literal> tag.
+
+;; Deus Max (deusmax AT gmail DOT com) provided the <php> tag.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Muse Publishing
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(provide 'muse-publish)
+
+(require 'muse)
+(require 'muse-regexps)
+
+(defgroup muse-publish nil
+  "Options controlling the general behavior of Muse publishing."
+  :group 'muse)
+
+(defcustom muse-before-publish-hook nil
+  "A hook run in the buffer to be published, before it is done."
+  :type 'hook
+  :group 'muse-publish)
+
+(defcustom muse-after-publish-hook nil
+  "A hook run in the buffer to be published, after it is done."
+  :type 'hook
+  :group 'muse-publish)
+
+(defcustom muse-publish-url-transforms
+  '(muse-resolve-url)
+  "A list of functions used to prepare URLs for publication.
+Each is passed the URL.  The transformed URL should be returned."
+  :type 'hook
+  :options '(muse-resolve-url)
+  :group 'muse-publish)
+
+(defcustom muse-publish-desc-transforms
+  '(muse-publish-strip-URL)
+  "A list of functions used to prepare URL desciptions for publication.
+Each is passed the description.  The modified description should
+be returned."
+  :type 'hook
+  :options '(muse-publish-strip-URL)
+  :group 'muse-publish)
+
+(defcustom muse-publish-date-format "%B %e, %Y"
+  "Format string for the date, used by `muse-publish-markup-buffer'.
+See `format-time-string' for details on the format options."
+  :type 'string
+  :group 'muse-publish)
+
+(defcustom muse-publish-comments-p nil
+  "If nil, remove comments before publishing.
+If non-nil, publish comments using the markup of the current style."
+  :type 'boolean
+  :group 'muse-publish)
+
+(defcustom muse-publish-report-threshhold 100000
+  "If a file is this size or larger, report publishing progress."
+  :type 'integer
+  :group 'muse-publish)
+
+(defcustom muse-publish-markup-regexps
+  `(;; Remove leading and trailing whitespace from the file
+    (1000 "\\(\\`\n+\\|\n+\\'\\)" 0 "")
+
+    ;; Remove trailing whitespace from all lines
+    (1100 ,(concat "[" muse-regexp-blank "]+$") 0 "")
+
+    ;; Handle any leading #directives
+    (1200 "\\`#\\([a-zA-Z-]+\\)\\s-+\\(.+\\)\n+" 0 directive)
+
+    ;; commented lines
+    (1250 ,(concat "^;\\(?:[" muse-regexp-blank "]+\\(.+\\)\\|$\\|'\\)")
+          0 comment)
+
+    ;; markup tags
+    (1300 muse-tag-regexp 0 tag)
+
+    ;; prevent emphasis characters in explicit links from being marked
+    (1400 muse-explicit-link-regexp 0 muse-publish-mark-link)
+
+    ;; emphasized or literal text
+    (1600 ,(concat "\\(^\\|[-[" muse-regexp-blank
+                   "<('`\"\n]\\)\\(=[^=" muse-regexp-blank
+                   "\n]\\|_[^_" muse-regexp-blank
+                   "\n]\\|\\*+[^*" muse-regexp-blank
+                   "\n]\\)")
+          2 word)
+
+    ;; headings, outline-mode style
+    (1700 "^\\(\\*+\\)\\s-+" 0 heading)
+
+    ;; ellipses
+    (1800 "\\.\\.\\.\\." 0 enddots)
+    (1850 "\\.\\.\\." 0 dots)
+
+    ;; horizontal rule, or section separator
+    (1900 "^----+" 0 rule)
+
+    ;; non-breaking space
+    (1950 "~~" 0 no-break-space)
+
+    ;; beginning of footnotes section
+    (2000 "^Footnotes:?\\s-*" 0 fn-sep)
+    ;; footnote definition/reference (def if at beginning of line)
+    (2100 "\\[\\([1-9][0-9]*\\)\\]" 0 footnote)
+
+    ;; unnumbered List items begin with a -.  numbered list items
+    ;; begin with number and a period.  definition lists have a
+    ;; leading term separated from the body with ::.  centered
+    ;; paragraphs begin with at least six columns of whitespace; any
+    ;; other whitespace at the beginning indicates a blockquote.  The
+    ;; reason all of these rules are handled here, is so that
+    ;; blockquote detection doesn't interfere with indented list
+    ;; members.
+    (2200 ,(format muse-list-item-regexp (concat "[" muse-regexp-blank "]*"))
+          0 list)
+
+    ;; support table.el style tables
+    (2300 ,(concat "^" muse-table-el-border-regexp "\n"
+                   "\\(\\(" muse-table-el-line-regexp "\n\\)+"
+                   "\\(" muse-table-el-border-regexp "\\)"
+                   "\\(\n\\|\\'\\)\\)+")
+          0 table-el)
+
+    ;; simple table markup is supported, nothing fancy.  use | to
+    ;; separate cells, || to separate header cells, and ||| for footer
+    ;; cells
+    (2350 ,(concat "\\(\\([" muse-regexp-blank "]*\n\\)?"
+                   "\\(\\(?:" muse-table-line-regexp "\\|"
+                   muse-table-hline-regexp "\\)\\(?:\n\\|\\'\\)\\)\\)+")
+          0 table)
+
+    ;; blockquote and centered text
+    (2400 ,(concat "^\\([" muse-regexp-blank "]+\\).+") 0 quote)
+
+    ;; the emdash ("--" or "---")
+    (2500 ,(concat "\\(^\\|[" muse-regexp-blank "]*\\)---?\\($\\|["
+                   muse-regexp-blank "]*\\)")
+          0 emdash)
+
+    ;; "verse" text is indicated the same way as a quoted e-mail
+    ;; response: "> text", where text may contain initial whitespace
+    ;; (see below).
+    (2600 ,(concat "^[" muse-regexp-blank "]*> ") 0 verse)
+
+    ;; define anchor points
+    (2700 "^\\(\\W*\\)#\\(\\S-+\\)\\s-*" 0 anchor)
+
+    ;; replace links in the buffer (links to other pages)
+    (2900 muse-explicit-link-regexp 0 link)
+
+    ;; bare URLs
+    (3000 muse-url-regexp 0 url)
+
+    ;; bare email addresses
+    (3500
+     "\\([^[]\\)[-a-zA-Z0-9._]+@\\([-a-zA-z0-9_]+\\.\\)+[a-zA-Z0-9]+" 0 email)
+    )
+  "List of markup rules for publishing a page with Muse.
+The rules given in this variable are invoked first, followed by
+whatever rules are specified by the current style.
+
+Each member of the list is either a function, or a list of the form:
+
+  (REGEXP/SYMBOL TEXT-BEGIN-GROUP REPLACEMENT-TEXT/FUNCTION/SYMBOL)
+
+REGEXP is a regular expression, or symbol whose value is a regular
+expression, which is searched for using `re-search-forward'.
+TEXT-BEGIN-GROUP is the matching group within that regexp which
+denotes the beginning of the actual text to be marked up.
+REPLACEMENT-TEXT is a string that will be passed to `replace-match'.
+If it is not a string, but a function, it will be called to determine
+what the replacement text should be (it must return a string).  If it
+is a symbol, the value of that symbol should be a string.
+
+The replacements are done in order, one rule at a time.  Writing
+the regular expressions can be a tricky business.  Note that case
+is never ignored.  `case-fold-search' is always bound to nil
+while processing the markup rules."
+  :type '(repeat (choice
+                  (list :tag "Markup rule"
+                        integer
+                        (choice regexp symbol)
+                        integer
+                        (choice string function symbol))
+                  function))
+  :group 'muse-publish)
+
+(defcustom muse-publish-markup-functions
+  '((directive . muse-publish-markup-directive)
+    (comment   . muse-publish-markup-comment)
+    (anchor    . muse-publish-markup-anchor)
+    (tag       . muse-publish-markup-tag)
+    (word      . muse-publish-markup-word)
+    (emdash    . muse-publish-markup-emdash)
+    (enddots   . muse-publish-markup-enddots)
+    (dots      . muse-publish-markup-dots)
+    (rule      . muse-publish-markup-rule)
+    (no-break-space . muse-publish-markup-no-break-space)
+    (heading   . muse-publish-markup-heading)
+    (footnote  . muse-publish-markup-footnote)
+    (fn-sep    . muse-publish-markup-fn-sep)
+    (list      . muse-publish-markup-list)
+    (quote     . muse-publish-markup-quote)
+    (verse     . muse-publish-markup-verse)
+    (table     . muse-publish-markup-table)
+    (table-el  . muse-publish-markup-table-el)
+    (email     . muse-publish-markup-email)
+    (link      . muse-publish-markup-link)
+    (url       . muse-publish-markup-url))
+  "An alist of style types to custom functions for that kind of text.
+
+Each member of the list is of the form:
+
+  (SYMBOL FUNCTION)
+
+SYMBOL describes the type of text to associate with this rule.
+`muse-publish-markup-regexps' maps regexps to these symbols.
+
+FUNCTION is the function to use to mark up this kind of rule if
+no suitable function is found through the :functions tag of the
+current style."
+  :type '(alist :key-type symbol :value-type function)
+  :group 'muse-publish)
+
+(defcustom muse-publish-markup-tags
+  '(("contents" nil t   nil muse-publish-contents-tag)
+    ("verse"    t   nil nil muse-publish-verse-tag)
+    ("example"  t   nil nil muse-publish-example-tag)
+    ("src"      t   t   nil muse-publish-src-tag)
+    ("code"     t   nil nil muse-publish-code-tag)
+    ("quote"    t   nil t   muse-publish-quote-tag)
+    ("literal"  t   t   nil muse-publish-literal-tag)
+    ("verbatim" t   nil nil muse-publish-verbatim-tag)
+    ("br"       nil nil nil muse-publish-br-tag)
+    ("lisp"     t   t   nil muse-publish-lisp-tag)
+    ("class"    t   t   nil muse-publish-class-tag)
+    ("div"      t   t   nil muse-publish-div-tag)
+    ("command"  t   t   nil muse-publish-command-tag)
+    ("perl"     t   t   nil muse-publish-perl-tag)
+    ("php"      t   t   nil muse-publish-php-tag)
+    ("python"   t   t   nil muse-publish-python-tag)
+    ("ruby"     t   t   nil muse-publish-ruby-tag)
+    ("comment"  t   nil nil muse-publish-comment-tag)
+    ("include"  nil t   nil muse-publish-include-tag)
+    ("markup"   t   t   nil muse-publish-mark-up-tag)
+    ("cite"     t   t   nil muse-publish-cite-tag))
+  "A list of tag specifications, for specially marking up text.
+XML-style tags are the best way to add custom markup to Muse.
+This is easily accomplished by customizing this list of markup tags.
+
+For each entry, the name of the tag is given, whether it expects
+a closing tag, whether it takes an optional set of attributes,
+whether it is nestable, and a function that performs whatever
+action is desired within the delimited region.
+
+The tags themselves are deleted during publishing, before the
+function is called.  The function is called with three arguments,
+the beginning and end of the region surrounded by the tags.  If
+properties are allowed, they are passed as a third argument in
+the form of an alist.  The `end' argument to the function is
+always a marker.
+
+Point is always at the beginning of the region within the tags, when
+the function is called.  Wherever point is when the function finishes
+is where tag markup will resume.
+
+These tag rules are processed once at the beginning of markup, and
+once at the end, to catch any tags which may have been inserted
+in-between."
+  :type '(repeat (list (string :tag "Markup tag")
+                       (boolean :tag "Expect closing tag" :value t)
+                       (boolean :tag "Parse attributes" :value nil)
+                       (boolean :tag "Nestable" :value nil)
+                       function))
+  :group 'muse-publish)
+
+(defcustom muse-publish-markup-header-footer-tags
+  '(("lisp"     t   t   nil muse-publish-lisp-tag)
+    ("markup"   t   t   nil muse-publish-mark-up-tag))
+  "Tags used when publishing headers and footers.
+See `muse-publish-markup-tags' for details."
+  :type '(repeat (list (string :tag "Markup tag")
+                       (boolean :tag "Expect closing tag" :value t)
+                       (boolean :tag "Parse attributes" :value nil)
+                       (boolean :tag "Nestable" :value nil)
+                       function))
+  :group 'muse-publish)
+
+(defcustom muse-publish-markup-specials nil
+  "A table of characters which must be represented specially."
+  :type '(alist :key-type character :value-type string)
+  :group 'muse-publish)
+
+(defcustom muse-publish-enable-local-variables nil
+  "If non-nil, interpret local variables in a file when publishing."
+  :type 'boolean
+  :group 'muse-publish)
+
+(defcustom muse-publish-enable-dangerous-tags t
+  "If non-nil, publish tags like <lisp> and <command> that can
+call external programs or expose sensitive information.
+Otherwise, ignore tags like this.
+
+This is useful to set to nil when the file to publish is coming
+from an untrusted source."
+  :type 'boolean
+  :group 'muse-publish)
+
+(defvar muse-publishing-p nil
+  "This is set to t while a page is being published.")
+(defvar muse-batch-publishing-p nil
+  "This is set to t while a page is being batch published.")
+(defvar muse-inhibit-before-publish-hook nil
+  "This is set to t when publishing a file rather than just a buffer.
+It is used by `muse-publish-markup-buffer'.")
+(defvar muse-publishing-styles nil
+  "The publishing styles that Muse recognizes.
+This is automatically generated when loading publishing styles.")
+(defvar muse-publishing-current-file nil
+  "The file that is currently being published.")
+(defvar muse-publishing-current-output-path nil
+  "The path where the current file will be published to.")
+(defvar muse-publishing-current-style nil
+  "The style of the file that is currently being published.")
+(defvar muse-publishing-directives nil
+  "An alist of publishing directives from the top of a file.")
+(defvar muse-publish-generate-contents nil
+  "Non-nil if a table of contents should be generated.
+If non-nil, it is a cons cell specifying (MARKER . DEPTH), to
+tell where the <contents> was seen, and to what depth the
+contents were requested.")
+(defvar muse-publishing-last-position nil
+  "Last position of the point when publishing.
+This is used to make sure that publishing doesn't get stalled.")
+
+(defvar muse-publish-inhibit-style-hooks nil
+  "If non-nil, do not call the :before or :before-end hooks when publishing.")
+
+(defvar muse-publish-use-header-footer-tags nil
+  "If non-nil, use `muse-publish-markup-header-footer-tags' for looking up
+tags.  Otherwise, use `muse-publish-markup-tags'.")
+
+(defvar muse-inhibit-style-tags nil
+  "If non-nil, do not search for style-specific tags.
+This is used when publishing headers and footers.")
+
+;; Functions for handling style information
+
+(defsubst muse-style (&optional style)
+  "Resolve the given STYLE into a Muse style, if it is a string."
+  (if (null style)
+      muse-publishing-current-style
+    (if (stringp style)
+        (assoc style muse-publishing-styles)
+      (muse-assert (consp style))
+      style)))
+
+(defun muse-define-style (name &rest elements)
+  (let ((entry (assoc name muse-publishing-styles)))
+    (if entry
+        (setcdr entry elements)
+      (setq muse-publishing-styles
+            (cons (append (list name) elements)
+                  muse-publishing-styles)))))
+
+(defun muse-derive-style (new-name base-name &rest elements)
+  (apply 'muse-define-style new-name
+         (append elements (list :base base-name))))
+
+(defsubst muse-get-keyword (keyword list &optional direct)
+  (let ((value (cadr (memq keyword list))))
+    (if (and (not direct) (symbolp value))
+        (symbol-value value)
+      value)))
+
+(defun muse-style-elements-list (elem &optional style)
+  "Return a list all references to ELEM in STYLE, including base styles.
+If STYLE is not specified, use current style."
+  (let (base elements)
+    (while style
+      (setq style (muse-style style))
+      (setq elements (append elements
+                             (muse-get-keyword elem style)))
+      (setq style (muse-get-keyword :base style)))
+    elements))
+
+(defun muse-style-element (elem &optional style direct)
+  "Search for ELEM in STYLE, including base styles.
+If STYLE is not specified, use current style."
+  (setq style (muse-style style))
+  (let ((value (muse-get-keyword elem style direct)))
+    (if value
+        value
+      (let ((base (muse-get-keyword :base style)))
+        (if base
+            (muse-style-element elem base direct))))))
+
+(defun muse-style-derived-p-1 (base style)
+  "Internal function used by `muse-style-derived-p'."
+  (if (and (stringp style)
+           (string= style base))
+      t
+    (setq style (muse-style style))
+    (let ((value (muse-get-keyword :base style)))
+      (when value
+        (muse-style-derived-p base value)))))
+
+(defun muse-style-derived-p (base &optional style)
+  "Return non-nil if STYLE is equal to or derived from BASE,
+non-nil otherwise.
+
+BASE should be a string."
+  (unless style
+    (setq style (muse-style)))
+  (when (and (consp style)
+             (stringp (car style)))
+    (setq style (car style)))
+  (muse-style-derived-p-1 base style))
+
+(defun muse-find-markup-element (keyword ident style)
+  (let ((def (assq ident (muse-style-element keyword style))))
+    (if def
+        (cdr def)
+      (let ((base (muse-style-element :base style)))
+        (if base
+            (muse-find-markup-element keyword ident base))))))
+
+(defun muse-markup-text (ident &rest args)
+  "Insert ARGS into the text markup associated with IDENT.
+If the markup text has sections like %N%, this will be replaced
+with the N-1th argument in ARGS.  After that, `format' is applied
+to the text with ARGS as parameters."
+  (let ((text (muse-find-markup-element :strings ident (muse-style))))
+    (if (and text args)
+        (progn
+          (let (start repl-text)
+            (while (setq start (string-match "%\\([1-9][0-9]*\\)%" text start))
+              ;; escape '%' in the argument text, since we will be
+              ;; using format on it
+              (setq repl-text (muse-replace-regexp-in-string
+                               "%" "%%"
+                               (nth (1- (string-to-number
+                                         (match-string 1 text))) args)
+                               t t)
+                    start (+ start (length repl-text))
+                    text (replace-match repl-text t t text))))
+          (apply 'format text args))
+      (or text ""))))
+
+(defun muse-insert-markup (&rest args)
+  (let ((beg (point)))
+    (apply 'insert args)
+    (muse-publish-mark-read-only beg (point))))
+
+(defun muse-find-markup-tag (keyword tagname style)
+  (let ((def (assoc tagname (muse-style-element keyword style))))
+    (or def
+        (let ((base (muse-style-element :base style)))
+          (if base
+              (muse-find-markup-tag keyword tagname base))))))
+
+(defun muse-markup-tag-info (tagname &rest args)
+  (let ((tag-info (and (not muse-inhibit-style-tags)
+                       (muse-find-markup-tag :tags tagname (muse-style)))))
+    (or tag-info
+        (assoc tagname
+               (if muse-publish-use-header-footer-tags
+                   muse-publish-markup-header-footer-tags
+                 muse-publish-markup-tags)))))
+
+(defsubst muse-markup-function (category)
+  (let ((func (muse-find-markup-element :functions category (muse-style))))
+    (or func
+        (cdr (assq category muse-publish-markup-functions)))))
+
+;; Publishing routines
+
+(defun muse-publish-markup (name rules)
+  (let* ((case-fold-search nil)
+         (inhibit-read-only t)
+         (limit (* (length rules) (point-max)))
+         (verbose (and muse-publish-report-threshhold
+                       (> (point-max) muse-publish-report-threshhold)))
+         (base 0))
+    (while rules
+      (goto-char (point-min))
+      (let ((regexp (nth 1 (car rules)))
+            (group (nth 2 (car rules)))
+            (repl (nth 3 (car rules)))
+            pos)
+        (setq muse-publishing-last-position nil)
+        (if (symbolp regexp)
+            (setq regexp (symbol-value regexp)))
+        (if (and verbose (not muse-batch-publishing-p))
+            (message "Publishing %s...%d%%" name
+                     (* (/ (float (+ (point) base)) limit) 100)))
+        (while (and regexp (progn
+                             (when (and (get-text-property (point) 'read-only)
+                                        (> (point) (point-min)))
+                               (goto-char (or (next-single-property-change
+                                               (point) 'read-only)
+                                              (point-max))))
+                             (setq pos (re-search-forward regexp nil t))))
+          (if (and verbose (not muse-batch-publishing-p))
+              (message "Publishing %s...%d%%" name
+                       (* (/ (float (+ (point) base)) limit) 100)))
+          (unless (and (> (- (match-end 0) (match-beginning 0)) 0)
+                       (match-beginning group)
+                       (get-text-property (match-beginning group) 'read-only))
+            (let* (func
+                   (text (cond
+                          ((and (symbolp repl)
+                                (setq func (muse-markup-function repl)))
+                           (funcall func))
+                          ((functionp repl)
+                           (funcall repl))
+                          ((symbolp repl)
+                           (symbol-value repl))
+                          (t repl))))
+              (if (stringp text)
+                  (replace-match text t))))
+          (if (and muse-publishing-last-position
+                   (= pos muse-publishing-last-position))
+              (if (eobp)
+                  (setq regexp nil)
+                (forward-char 1)))
+          (setq muse-publishing-last-position pos)))
+      (setq rules (cdr rules)
+            base (+ base (point-max))))
+    (if (and verbose (not muse-batch-publishing-p))
+        (message "Publishing %s...done" name))))
+
+(defun muse-insert-file-or-string (file-or-string &optional title)
+  (let ((beg (point)) end)
+    (if (and (not (string-equal file-or-string ""))
+             (not (string-match "\n" file-or-string))
+             (file-readable-p file-or-string))
+        (setq end (+ beg
+                     (cadr (muse-insert-file-contents file-or-string))))
+      (insert file-or-string)
+      (setq end (point)))
+    (save-restriction
+      (narrow-to-region beg end)
+      (remove-text-properties (point-min) (point-max)
+                              '(read-only nil rear-nonsticky nil))
+      (goto-char (point-min))
+      (let ((muse-inhibit-style-tags t)
+            (muse-publish-use-header-footer-tags t))
+        (muse-publish-markup (or title "")
+                             '((100 muse-tag-regexp 0
+                                    muse-publish-markup-tag)))))))
+
+(defun muse-style-run-hooks (keyword style &rest args)
+  (catch 'handled
+    (let ((cache nil))
+      (while (and style
+                  (setq style (muse-style style)))
+        (let ((func (muse-style-element keyword style t)))
+          (when (and func
+                     (not (member func cache)))
+            (setq cache (cons func cache))
+            (when (apply func args)
+              (throw 'handled t))))
+        (setq style (muse-style-element :base style))))))
+
+(defun muse-publish-markup-region (beg end &optional title style)
+  "Apply the given STYLE's markup rules to the given region.
+TITLE is used when indicating the publishing progress; it may be nil.
+
+The point is guaranteed to be at END if the routine terminates
+normally."
+  (unless title (setq title ""))
+  (unless style
+    (or (setq style muse-publishing-current-style)
+        (error "Cannot find any publishing styles to use")))
+  (save-restriction
+    (narrow-to-region beg end)
+    (let ((muse-publish-generate-contents nil))
+      (unless muse-publish-inhibit-style-hooks
+        (muse-style-run-hooks :before style))
+      (muse-publish-markup
+       title
+       (sort (copy-alist (append muse-publish-markup-regexps
+                                 (muse-style-elements-list :regexps style)))
+             (function
+              (lambda (l r)
+                (< (car l) (car r))))))
+      (unless muse-publish-inhibit-style-hooks
+        (muse-style-run-hooks :before-end style))
+      (muse-publish-escape-specials (point-min) (point-max) nil 'document))
+    (goto-char (point-max))))
+
+(defun muse-publish-markup-buffer (title style)
+  "Apply the given STYLE's markup rules to the current buffer."
+  (setq style (muse-style style))
+  (let ((style-header (muse-style-element :header style))
+        (style-footer (muse-style-element :footer style))
+        (muse-publishing-current-style style)
+        (muse-publishing-directives
+         (list (cons "title" title)
+               (cons "author" (user-full-name))
+               (cons "date" (format-time-string
+                             muse-publish-date-format
+                             (if muse-publishing-current-file
+                                 (nth 5 (file-attributes
+                                         muse-publishing-current-file))
+                               (current-time))))))
+        (muse-publishing-p t)
+        (inhibit-read-only t))
+    (run-hooks 'muse-update-values-hook)
+    (unless muse-inhibit-before-publish-hook
+      (run-hooks 'muse-before-publish-hook))
+    (muse-publish-markup-region (point-min) (point-max) title style)
+    (goto-char (point-min))
+    (when style-header
+      (muse-insert-file-or-string style-header title))
+    (goto-char (point-max))
+    (when style-footer
+      (muse-insert-file-or-string style-footer title))
+    (muse-style-run-hooks :after style)
+    (run-hooks 'muse-after-publish-hook)))
+
+(defun muse-publish-markup-string (string &optional style)
+  "Markup STRING using the given STYLE's markup rules."
+  (setq style (muse-style style))
+  (muse-with-temp-buffer
+    (insert string)
+    (let ((muse-publishing-current-style style)
+          (muse-publishing-p t))
+      (muse-publish-markup "*string*" (muse-style-element :rules style)))
+    (buffer-string)))
+
+;; Commands for publishing files
+
+(defun muse-publish-get-style (&optional styles)
+  (unless styles (setq styles muse-publishing-styles))
+  (if (= 1 (length styles))
+      (car styles)
+    (when (catch 'different
+            (let ((first (car (car styles))))
+              (dolist (style (cdr styles))
+                (unless (equal first (car style))
+                  (throw 'different t)))))
+      (setq styles (muse-collect-alist
+                    styles
+                    (funcall muse-completing-read-function
+                             "Publish with style: " styles nil t))))
+    (if (or (= 1 (length styles))
+            (not (muse-get-keyword :path (car styles))))
+        (car styles)
+      (setq styles (mapcar (lambda (style)
+                             (cons (muse-get-keyword :path style)
+                                   style))
+                           styles))
+      (cdr (assoc (funcall muse-completing-read-function
+                           "Publish to directory: " styles nil t)
+                  styles)))))
+
+(defsubst muse-publish-get-output-dir (style)
+  (let ((default-directory (or (muse-style-element :path style)
+                               default-directory)))
+    (muse-read-directory-name "Publish to directory: " nil default-directory)))
+
+(defsubst muse-publish-get-info ()
+  (let ((style (muse-publish-get-style)))
+    (list style (muse-publish-get-output-dir style)
+          current-prefix-arg)))
+
+(defsubst muse-publish-output-name (&optional file style)
+  (setq style (muse-style style))
+  (concat (muse-style-element :prefix style)
+          (muse-page-name file)
+          (muse-style-element :suffix style)))
+
+(defsubst muse-publish-output-file (file &optional output-dir style)
+  (setq style (muse-style style))
+  (if output-dir
+      (expand-file-name (muse-publish-output-name file style) output-dir)
+    (concat (file-name-directory file)
+            (muse-publish-output-name file style))))
+
+(defsubst muse-publish-link-name (&optional file style)
+  "Take FILE and add :prefix and either :link-suffix or :suffix from STYLE.
+We assume that FILE is a Muse file.
+
+We call `muse-page-name' on FILE to remove the directory part of
+FILE and any extensions that are in `muse-ignored-extensions'."
+  (setq style (muse-style style))
+  (concat (muse-style-element :prefix style)
+          (muse-page-name file)
+          (or (muse-style-element :link-suffix style)
+              (muse-style-element :suffix style))))
+
+(defsubst muse-publish-link-file (file &optional style)
+  "Turn FILE into a URL.
+
+If FILE exists on the system as-is, return it without
+modification.  In the case of wanting to link to Muse files when
+`muse-file-extension' is nil, you should load muse-project.el.
+
+Otherwise, assume that it is a Muse file and call
+`muse-publish-link-name' to add :prefix, :link-suffix, :suffix,
+and removing ignored file extensions, but preserving the
+directory part of FILE."
+  (setq style (muse-style style))
+  (if (file-exists-p file)
+      file
+    (concat (file-name-directory file)
+            (muse-publish-link-name file style))))
+
+(defsubst muse-publish-link-page (page)
+  "Turn PAGE into a URL.
+
+This is called by `muse-publish-classify-url' to figure out what
+a link to another file or Muse page should look like.
+
+If muse-project.el is loaded, call `muse-project-link-page' for this.
+Otherwise, call `muse-publish-link-file'."
+  (if (fboundp 'muse-project-link-page)
+      (muse-project-link-page page)
+    (muse-publish-link-file page)))
+
+(defmacro muse-publish-ensure-block (beg &optional end)
+  "Ensure that block-level markup at BEG is published with at least one
+preceding blank line.  BEG must be an unquoted symbol that contains a
+position or marker.  BEG is modified to be the new position.
+The point is left at the new value of BEG.
+
+Additionally, make sure that BEG is placed on a blank line.
+
+If END is given, make sure that it is placed on a blank line.  In
+order to achieve this, END must be an unquoted symbol that
+contains a marker.  This is the case with Muse tag functions."
+  `(progn
+     (goto-char ,beg)
+     (cond ((not (bolp)) (insert "\n\n"))
+           ((eq (point) (point-min)) nil)
+           ((prog2 (backward-char) (bolp) (forward-char)) nil)
+           (t (insert "\n")))
+     (unless (and (bolp) (eolp))
+       (insert "\n")
+       (backward-char))
+     (setq ,beg (point))
+     (when (markerp ,end)
+       (goto-char ,end)
+       (unless (and (bolp) (eolp))
+         (insert-before-markers "\n")))
+     (goto-char ,beg)))
+
+;;;###autoload
+(defun muse-publish-region (beg end &optional title style)
+  "Apply the given STYLE's markup rules to the given region.
+The result is placed in a new buffer that includes TITLE in its name."
+  (interactive "r")
+  (when (interactive-p)
+    (unless title (setq title (read-string "Title: ")))
+    (unless style (setq style (muse-publish-get-style))))
+  (let ((text (buffer-substring beg end))
+        (buf (generate-new-buffer (concat "*Muse: " title "*"))))
+    (with-current-buffer buf
+      (insert text)
+      (muse-publish-markup-buffer title style)
+      (goto-char (point-min))
+      (let ((inhibit-read-only t))
+        (remove-text-properties (point-min) (point-max)
+                                '(rear-nonsticky nil read-only nil))))
+    (pop-to-buffer buf)))
+
+;;;###autoload
+(defun muse-publish-file (file style &optional output-dir force)
+  "Publish the given FILE in a particular STYLE to OUTPUT-DIR.
+If the argument FORCE is nil, each file is only published if it is
+newer than the published version.  If the argument FORCE is non-nil,
+the file is published no matter what."
+  (interactive (cons (read-file-name "Publish file: ")
+                     (muse-publish-get-info)))
+  (let ((style-name style))
+    (setq style (muse-style style))
+    (unless style
+      (error "There is no style '%s' defined" style-name)))
+  (let* ((output-path (muse-publish-output-file file output-dir style))
+         (output-suffix (muse-style-element :osuffix style))
+         (muse-publishing-current-file file)
+         (muse-publishing-current-output-path output-path)
+         (target (if output-suffix
+                     (concat (muse-path-sans-extension output-path)
+                             output-suffix)
+                   output-path))
+         (threshhold (nth 7 (file-attributes file))))
+    (if (not threshhold)
+        (message "Please save %s before publishing" file)
+      (when (or force (file-newer-than-file-p file target))
+        (if (and muse-publish-report-threshhold
+                 (> threshhold
+                    muse-publish-report-threshhold))
+            (message "Publishing %s ..." file))
+        (muse-with-temp-buffer
+          (muse-insert-file-contents file)
+          (run-hooks 'muse-before-publish-hook)
+          (when muse-publish-enable-local-variables
+            (hack-local-variables))
+          (let ((muse-inhibit-before-publish-hook t))
+            (muse-publish-markup-buffer (muse-page-name file) style))
+          (when (muse-write-file output-path)
+            (muse-style-run-hooks :final style file output-path target)))
+        t))))
+
+;;;###autoload
+(defun muse-publish-this-file (style output-dir &optional force)
+  "Publish the currently-visited file.
+Prompt for both the STYLE and OUTPUT-DIR if they are not
+supplied."
+  (interactive (muse-publish-get-info))
+  (setq style (muse-style style))
+  (if buffer-file-name
+      (let ((muse-current-output-style (list :base (car style)
+                                             :path output-dir)))
+        (unless (muse-publish-file buffer-file-name style output-dir force)
+          (message (concat "The published version is up-to-date; use"
+                           " C-u C-c C-T to force an update."))))
+    (message "This buffer is not associated with any file")))
+
+(defun muse-batch-publish-files ()
+  "Publish Muse files in batch mode."
+  (let ((muse-batch-publishing-p t)
+        (font-lock-verbose nil)
+        muse-current-output-style
+        style output-dir)
+    ;; don't activate VC when publishing files
+    (setq vc-handled-backends nil)
+    (setq style (car command-line-args-left)
+          command-line-args-left (cdr command-line-args-left)
+          output-dir (car command-line-args-left)
+          output-dir
+          (if (string-match "\\`--output-dir=" output-dir)
+              (prog1
+                  (substring output-dir (match-end 0))
+                (setq command-line-args-left (cdr command-line-args-left))))
+          muse-current-output-style (list :base style :path output-dir))
+    (setq auto-mode-alist
+          (delete (cons (concat "\\." muse-file-extension "\\'")
+                        'muse-mode-choose-mode)
+                  auto-mode-alist))
+    (dolist (file command-line-args-left)
+      (muse-publish-file file style output-dir t))))
+
+;; Default publishing rules
+
+(defun muse-publish-section-close (depth)
+  "Seach forward for the closing tag of given DEPTH."
+  (let (not-end)
+    (save-excursion
+      (while (and (setq not-end (re-search-forward
+                                 (concat "^\\*\\{1," (number-to-string depth)
+                                         "\\}\\s-+")
+                                 nil t))
+                  (get-text-property (match-beginning 0) 'read-only)))
+      (if not-end
+          (forward-line 0)
+        (goto-char (point-max)))
+      (cond ((not (eq (char-before) ?\n))
+             (insert "\n\n"))
+            ((not (eq (char-before (1- (point))) ?\n))
+             (insert "\n")))
+      (muse-insert-markup (muse-markup-text 'section-close depth))
+      (insert "\n"))))
+
+(defun muse-publish-markup-directive (&optional name value)
+  (unless name (setq name (match-string 1)))
+  (unless value (setq value (match-string 2)))
+  (let ((elem (assoc name muse-publishing-directives)))
+    (if elem
+        (setcdr elem value)
+      (setq muse-publishing-directives
+            (cons (cons name value)
+                  muse-publishing-directives))))
+  ;; Make sure we don't ever try to move the point forward (past the
+  ;; beginning of buffer) while we're still searching for directives.
+  (setq muse-publishing-last-position nil)
+  (delete-region (match-beginning 0) (match-end 0)))
+
+(defsubst muse-publishing-directive (name)
+  (cdr (assoc name muse-publishing-directives)))
+
+(defmacro muse-publish-get-and-delete-attr (attr attrs)
+  "Delete attribute ATTR from ATTRS only once, destructively.
+
+This function returns the matching attribute value, if found."
+  (let ((last (make-symbol "last"))
+        (found (make-symbol "found"))
+        (vals (make-symbol "vals")))
+    `(let ((,vals ,attrs))
+       (if (string= (caar ,vals) ,attr)
+           (prog1 (cdar ,vals)
+             (setq ,attrs (cdr ,vals)))
+         (let ((,last ,vals)
+               (,found nil))
+           (while ,vals
+             (setq ,vals (cdr ,vals))
+             (when (string= (caar ,vals) ,attr)
+               (setq ,found (cdar ,vals))
+               (setcdr ,last (cdr ,vals))
+               (setq ,vals nil))
+             (setq ,last ,vals))
+           ,found)))))
+
+(defun muse-publish-markup-anchor ()
+  (unless (get-text-property (match-end 1) 'muse-link)
+    (let ((text (muse-markup-text 'anchor (match-string 2))))
+      (unless (string= text "")
+        (save-match-data
+          (skip-chars-forward (concat muse-regexp-blank "\n"))
+          (muse-insert-markup text)))
+      (match-string 1))))
+
+(defun muse-publish-markup-comment ()
+  (if (null muse-publish-comments-p)
+      ""
+    (goto-char (match-end 0))
+    (muse-insert-markup (muse-markup-text 'comment-end))
+    (if (match-beginning 1)
+        (progn
+          (muse-publish-mark-read-only (match-beginning 1) (match-end 1))
+          (delete-region (match-beginning 0) (match-beginning 1)))
+      (delete-region (match-beginning 0) (match-end 0)))
+    (goto-char (match-beginning 0))
+    (muse-insert-markup (muse-markup-text 'comment-begin))))
+
+(defun muse-publish-markup-tag ()
+  (let ((tag-info (muse-markup-tag-info (match-string 1))))
+    (when (and tag-info
+               (not (get-text-property (match-beginning 0) 'read-only))
+               (nth 4 tag-info)
+               (or muse-publish-enable-dangerous-tags
+                   (not (get (nth 4 tag-info) 'muse-dangerous-tag))))
+      (let ((closed-tag (match-string 3))
+            (start (match-beginning 0))
+            (beg (point))
+            end attrs)
+        (when (nth 2 tag-info)
+          (let ((attrstr (match-string 2)))
+            (while (and attrstr
+                        (string-match (concat "\\([^"
+                                              muse-regexp-blank
+                                              "=\n]+\\)\\(=\"\\"
+                                              "([^\"]+\\)\"\\)?")
+                                      attrstr))
+              (let ((attr (cons (downcase
+                                 (muse-match-string-no-properties 1 attrstr))
+                                (muse-match-string-no-properties 3 attrstr))))
+                (setq attrstr (replace-match "" t t attrstr))
+                (if attrs
+                    (nconc attrs (list attr))
+                  (setq attrs (list attr)))))))
+        (if (and (cadr tag-info) (not closed-tag))
+            (if (muse-goto-tag-end (car tag-info) (nth 3 tag-info))
+                (delete-region (match-beginning 0) (point))
+              (setq tag-info nil)))
+        (when tag-info
+          (setq end (point-marker))
+          (delete-region start beg)
+          (goto-char start)
+          (let ((args (list start end)))
+            (if (nth 2 tag-info)
+                (nconc args (list attrs)))
+            (let ((muse-inhibit-style-tags nil))
+              ;; remove the inhibition
+              (apply (nth 4 tag-info) args)))
+          (set-marker end nil)))))
+  nil)
+
+(defun muse-publish-escape-specials (beg end &optional ignore-read-only context)
+  "Escape specials from BEG to END using style-specific :specials.
+If IGNORE-READ-ONLY is non-nil, ignore the read-only property.
+CONTEXT is used to figure out what kind of specials to escape.
+
+The following contexts exist in Muse.
+'underline  _underlined text_
+'literal    =monospaced text= or <code> region (monospaced, escaped)
+'emphasis   *emphasized text*
+'email      email@example.com
+'url        http://example.com
+'url-desc   [[...][description of an explicit link]]
+'image      [[image.png]]
+'example    <example> region (monospaced, block context, escaped)
+'verbatim   <verbatim> region (escaped)
+'footnote   footnote text
+'document   normal text"
+  (let ((specials (muse-style-element :specials nil t)))
+    (cond ((functionp specials)
+           (setq specials (funcall specials context)))
+          ((symbolp specials)
+           (setq specials (symbol-value specials))))
+    (if (functionp specials)
+        (funcall specials beg end ignore-read-only)
+      (save-excursion
+        (save-restriction
+        (narrow-to-region beg end)
+        (goto-char (point-min))
+        (while (< (point) (point-max))
+          (if (and (not ignore-read-only)
+                   (get-text-property (point) 'read-only))
+              (goto-char (or (next-single-property-change (point) 'read-only)
+                             (point-max)))
+            (let ((repl (or (assoc (char-after) specials)
+                            (assoc (char-after)
+                                   muse-publish-markup-specials))))
+              (if (null repl)
+                  (forward-char 1)
+                (delete-char 1)
+                (insert-before-markers (cdr repl)))))))))))
+
+(defun muse-publish-markup-word ()
+  (let* ((beg (match-beginning 2))
+         (end (1- (match-end 2)))
+         (leader (buffer-substring-no-properties beg end))
+         open-tag close-tag mark-read-only loc context)
+    (cond
+     ((string= leader "_")
+      (setq context 'underline
+            open-tag (muse-markup-text 'begin-underline)
+            close-tag (muse-markup-text 'end-underline)))
+     ((string= leader "=")
+      (setq context 'literal
+            open-tag (muse-markup-text 'begin-literal)
+            close-tag (muse-markup-text 'end-literal))
+      (setq mark-read-only t))
+     (t
+      (let ((l (length leader)))
+        (setq context 'emphasis)
+        (cond
+         ((= l 1) (setq open-tag (muse-markup-text 'begin-emph)
+                        close-tag (muse-markup-text 'end-emph)))
+         ((= l 2) (setq open-tag (muse-markup-text 'begin-more-emph)
+                        close-tag (muse-markup-text 'end-more-emph)))
+         ((= l 3) (setq open-tag (muse-markup-text 'begin-most-emph)
+                        close-tag (muse-markup-text 'end-most-emph)))
+         (t (setq context nil))))))
+    (if (and context
+             (not (get-text-property beg 'muse-link))
+             (setq loc (search-forward leader nil t))
+             (or (eobp) (not (eq (char-syntax (char-after loc)) ?w)))
+             (not (eq (char-syntax (char-before (point))) ?\ ))
+             (not (get-text-property (point) 'muse-link)))
+        (progn
+          (replace-match "")
+          (delete-region beg end)
+          (setq end (point-marker))
+          (muse-insert-markup close-tag)
+          (goto-char beg)
+          (muse-insert-markup open-tag)
+          (setq beg (point))
+          (when mark-read-only
+            (muse-publish-escape-specials beg end t context)
+            (muse-publish-mark-read-only beg end))
+          (set-marker end nil))
+      (backward-char))
+    nil))
+
+(defun muse-publish-markup-emdash ()
+  (unless (get-text-property (match-beginning 0) 'muse-link)
+    (let ((prespace (match-string 1))
+          (postspace (match-string 2)))
+      (delete-region (match-beginning 0) (match-end 0))
+      (muse-insert-markup (muse-markup-text 'emdash prespace postspace))
+      (when (eq (char-after) ?\<)
+        (insert ?\n)))))
+
+(defun muse-publish-markup-enddots ()
+  (unless (get-text-property (match-beginning 0) 'muse-link)
+    (delete-region (match-beginning 0) (match-end 0))
+    (muse-insert-markup (muse-markup-text 'enddots))))
+
+(defun muse-publish-markup-dots ()
+  (unless (get-text-property (match-beginning 0) 'muse-link)
+    (delete-region (match-beginning 0) (match-end 0))
+    (muse-insert-markup (muse-markup-text 'dots))))
+
+(defun muse-publish-markup-rule ()
+  (unless (get-text-property (match-beginning 0) 'muse-link)
+    (delete-region (match-beginning 0) (match-end 0))
+    (muse-insert-markup (muse-markup-text 'rule))))
+
+(defun muse-publish-markup-no-break-space ()
+  (unless (get-text-property (match-beginning 0) 'muse-link)
+    (delete-region (match-beginning 0) (match-end 0))
+    (muse-insert-markup (muse-markup-text 'no-break-space))))
+
+(defun muse-publish-markup-heading ()
+  (let* ((len (length (match-string 1)))
+         (start (muse-markup-text
+                 (cond ((= len 1) 'section)
+                       ((= len 2) 'subsection)
+                       ((= len 3) 'subsubsection)
+                       (t 'section-other))
+                 len))
+         (end   (muse-markup-text
+                 (cond ((= len 1) 'section-end)
+                       ((= len 2) 'subsection-end)
+                       ((= len 3) 'subsubsection-end)
+                       (t 'section-other-end))
+                 len)))
+    (delete-region (match-beginning 0) (match-end 0))
+    (muse-insert-markup start)
+    (end-of-line)
+    (when end
+      (muse-insert-markup end))
+    (forward-line 1)
+    (unless (eq (char-after) ?\n)
+      (insert "\n"))
+    (muse-publish-section-close len)))
+
+(defvar muse-publish-footnotes nil)
+
+(defun muse-publish-markup-footnote ()
+  "Scan ahead and snarf up the footnote body."
+  (cond
+   ((get-text-property (match-beginning 0) 'muse-link)
+    nil)
+   ((= (muse-line-beginning-position) (match-beginning 0))
+    "")
+   (t
+    (let ((footnote (save-match-data
+                      (string-to-number (match-string 1))))
+          (oldtext (match-string 0))
+          footnotemark)
+      (delete-region (match-beginning 0) (match-end 0))
+      (save-excursion
+        (when (re-search-forward (format "^\\[%d\\]\\s-+" footnote) nil t)
+          (let* ((start (match-beginning 0))
+                 (beg (goto-char (match-end 0)))
+                 (end (save-excursion
+                        (if (search-forward "\n\n" nil t)
+                            (copy-marker (match-beginning 0))
+                          (goto-char (point-max))
+                          (skip-chars-backward "\n")
+                          (point-marker)))))
+            (while (re-search-forward
+                    (concat "^[" muse-regexp-blank "]+\\([^\n]\\)")
+                    end t)
+              (replace-match "\\1" t))
+            (let ((footnotemark-cmd (muse-markup-text 'footnotemark))
+                  (footnotemark-end-cmd (muse-markup-text 'footnotemark-end)))
+              (if (string= "" footnotemark-cmd)
+                  (setq footnotemark
+                        (concat (muse-markup-text 'footnote)
+                                (muse-publish-escape-specials-in-string
+                                 (buffer-substring-no-properties beg end)
+                                 'footnote)
+                                (muse-markup-text 'footnote-end)))
+                (setq footnotemark (format footnotemark-cmd footnote
+                                           footnotemark-end-cmd))
+                (unless muse-publish-footnotes
+                  (set (make-local-variable 'muse-publish-footnotes)
+                       (make-vector 256 nil)))
+                (unless (aref muse-publish-footnotes footnote)
+                  (setq footnotemark
+                        (concat
+                         footnotemark
+                         (concat (format (muse-markup-text 'footnotetext)
+                                         footnote)
+                                 (buffer-substring-no-properties beg end)
+                                 (muse-markup-text 'footnotetext-end))))
+                  (aset muse-publish-footnotes footnote footnotemark))))
+            (goto-char end)
+            (skip-chars-forward "\n")
+            (delete-region start (point))
+            (set-marker end nil))))
+      (if footnotemark
+          (muse-insert-markup footnotemark)
+        (insert oldtext))))))
+
+(defun muse-publish-markup-fn-sep ()
+  (delete-region (match-beginning 0) (match-end 0))
+  (muse-insert-markup (muse-markup-text 'fn-sep)))
+
+(defun muse-insert-markup-end-list (&rest args)
+  (let ((beg (point)))
+    (apply 'insert args)
+    (add-text-properties beg (point) '(muse-end-list t))
+    (muse-publish-mark-read-only beg (point))))
+
+(defun muse-publish-determine-dl-indent (continue indent-sym determine-sym)
+  ;; If the caller doesn't know how much indentation to use, figure it
+  ;; out ourselves.  It is assumed that `muse-forward-list-item' has
+  ;; been called just before this to set the match data.
+  (when (and continue
+             (symbol-value determine-sym))
+    (save-match-data
+      ;; snarf all leading whitespace
+      (let ((indent (and (match-beginning 2)
+                         (buffer-substring (match-beginning 1)
+                                           (match-beginning 2)))))
+        (when (and indent
+                   (not (string= indent "")))
+          (set indent-sym indent)
+          (set determine-sym nil))))))
+
+(defun muse-publish-surround-dl (indent post-indent)
+  (let* ((beg-item (muse-markup-text 'begin-dl-item))
+         (end-item (muse-markup-text 'end-dl-item))
+         (beg-ddt (muse-markup-text 'begin-ddt)) ;; term
+         (end-ddt (muse-markup-text 'end-ddt))
+         (beg-dde (muse-markup-text 'begin-dde)) ;; definition
+         (end-dde (muse-markup-text 'end-dde))
+         (continue t)
+         (no-terms t)
+         beg)
+    (while continue
+      ;; envelope this as one term+definitions unit -- HTML does not
+      ;; need this, but DocBook and Muse's custom XML format do
+      (muse-insert-markup beg-item)
+      (when (looking-at muse-dl-term-regexp)
+        ;; find the term and wrap it with published markup
+        (setq beg (point)
+              no-terms nil)
+        (goto-char (match-end 1))
+        (delete-region (point) (match-end 0))
+        (muse-insert-markup-end-list end-ddt)
+        ;; if definition is immediately after term, move to next line
+        (unless (eq (char-after) ?\n)
+          (insert ?\n))
+        (save-excursion
+          (goto-char beg)
+          (delete-region (point) (match-beginning 1))
+          (muse-insert-markup beg-ddt)))
+      ;; handle pathological edge case where there is no term -- I
+      ;; would prefer to just disallow this, but people seem to want
+      ;; this behavior
+      (when (and no-terms
+                 (looking-at (concat "[" muse-regexp-blank "]*::"
+                                     "[" muse-regexp-blank "]*")))
+        (delete-region (point) (match-end 0))
+        ;; but only do this once
+        (setq no-terms nil))
+      (setq beg (point)
+            ;; move past current item
+            continue (muse-forward-list-item 'dl-term indent))
+      (save-restriction
+        (narrow-to-region beg (point))
+        (goto-char (point-min))
+        ;; publish each definition that we find, defaulting to an
+        ;; empty definition if none are found
+        (muse-publish-surround-text beg-dde end-dde
+         (lambda (indent)
+           (muse-forward-list-item 'dl-entry indent))
+         indent post-indent
+         #'muse-publish-determine-dl-indent)
+        (goto-char (point-max))
+        (skip-chars-backward (concat muse-regexp-blank "\n"))
+        (muse-insert-markup-end-list end-item)
+        (when continue
+          (goto-char (point-max)))))))
+
+(defun muse-publish-strip-list-indentation (list-item empty-line indent post-indent)
+  (let ((list-nested nil)
+        (indent-found nil))
+    (while (< (point) (point-max))
+      (when (and (looking-at list-item)
+                 (not (or (get-text-property
+                           (muse-list-item-critical-point) 'read-only)
+                          (get-text-property
+                           (muse-list-item-critical-point) 'muse-link))))
+        ;; if we encounter a list item, allow no post-indent space
+        (setq list-nested t))
+      (when (and (not (looking-at empty-line))
+                 (looking-at (concat indent "\\("
+                                     (or (and list-nested "")
+                                         post-indent)
+                                     "\\)")))
+        ;; if list is not nested, remove indentation
+        (unless indent-found
+          (setq post-indent (match-string 1)
+                indent-found t))
+        (replace-match ""))
+      (forward-line 1))))
+
+(defun muse-publish-surround-text (beg-tag end-tag move-func &optional indent post-indent determine-indent-func list-item)
+  (unless list-item
+    (setq list-item (format muse-list-item-regexp
+                            (concat "[" muse-regexp-blank "]*"))))
+  (let ((continue t)
+        (empty-line (concat "^[" muse-regexp-blank "]*\n"))
+        (determine-indent (if determine-indent-func t nil))
+        (new-indent indent)
+        (first t)
+        beg)
+    (unless indent
+      (setq indent (concat "[" muse-regexp-blank "]+")))
+    (if post-indent
+        (setq post-indent (concat " \\{0," (number-to-string post-indent)
+                                  "\\}"))
+      (setq post-indent ""))
+    (while continue
+      (if (or (not end-tag) (string= end-tag ""))
+          ;; if no end of list item markup exists, treat the beginning
+          ;; of list item markup as it if it were the end -- this
+          ;; prevents multiple-level lists from being confused
+          (muse-insert-markup-end-list beg-tag)
+        (muse-insert-markup beg-tag))
+      (setq beg (point)
+            ;; move past current item; continue is non-nil if there
+            ;; are more like items to be processed
+            continue (if (and determine-indent-func first)
+                         (funcall move-func (concat indent post-indent))
+                       (funcall move-func indent)))
+      (when determine-indent-func
+        (funcall determine-indent-func continue 'new-indent 'determine-indent))
+      (when continue
+          ;; remove list markup if we encountered another item of the
+          ;; same type
+          (replace-match "" t t nil 1))
+      (save-restriction
+        ;; narrow to current item
+        (narrow-to-region beg (point))
+        (goto-char (point-min))
+        (if (looking-at empty-line)
+            ;; if initial line is blank, move to first non-blank line
+            (while (progn (forward-line 1)
+                          (and (< (point) (point-max))
+                               (looking-at empty-line))))
+          ;; otherwise, move to second line of text
+          (forward-line 1))
+        ;; strip list indentation
+        (muse-publish-strip-list-indentation list-item empty-line
+                                             indent post-indent)
+        (skip-chars-backward (concat muse-regexp-blank "\n"))
+        (muse-insert-markup-end-list end-tag)
+        (when determine-indent-func
+          (setq indent new-indent))
+        (when first
+          (setq first nil))
+        (when continue
+          (goto-char (point-max)))))))
+
+(defun muse-publish-ensure-blank-line ()
+  "Make sure that a blank line exists on the line before point."
+  (let ((pt (point-marker)))
+    (beginning-of-line)
+    (cond ((eq (point) (point-min)) nil)
+          ((prog2 (backward-char) (bolp) (forward-char)) nil)
+          (t (insert-before-markers "\n")))
+    (goto-char pt)
+    (set-marker pt nil)))
+
+(defun muse-publish-markup-list ()
+  "Markup a list entry.
+This function works by marking up items of the same list level
+and type, respecting the end-of-list property."
+  (let* ((str (match-string 1))
+         (type (muse-list-item-type str))
+         (indent (buffer-substring (muse-line-beginning-position)
+                                   (match-beginning 1)))
+         (post-indent (length str)))
+    (cond
+     ((or (get-text-property (muse-list-item-critical-point) 'read-only)
+          (get-text-property (muse-list-item-critical-point) 'muse-link))
+      nil)
+     ((eq type 'ul)
+      (unless (eq (char-after (match-end 1)) ?-)
+        (delete-region (match-beginning 0) (match-end 0))
+        (muse-publish-ensure-blank-line)
+        (muse-insert-markup (muse-markup-text 'begin-uli))
+        (save-excursion
+          (muse-publish-surround-text
+           (muse-markup-text 'begin-uli-item)
+           (muse-markup-text 'end-uli-item)
+           (lambda (indent)
+             (muse-forward-list-item 'ul indent))
+           indent post-indent)
+          (muse-insert-markup-end-list (muse-markup-text 'end-uli)))
+        (forward-line 1)))
+     ((eq type 'ol)
+      (delete-region (match-beginning 0) (match-end 0))
+      (muse-publish-ensure-blank-line)
+      (muse-insert-markup (muse-markup-text 'begin-oli))
+      (save-excursion
+        (muse-publish-surround-text
+         (muse-markup-text 'begin-oli-item)
+         (muse-markup-text 'end-oli-item)
+         (lambda (indent)
+           (muse-forward-list-item 'ol indent))
+         indent post-indent)
+        (muse-insert-markup-end-list (muse-markup-text 'end-oli)))
+      (forward-line 1))
+     (t
+      (goto-char (match-beginning 0))
+      (muse-publish-ensure-blank-line)
+      (muse-insert-markup (muse-markup-text 'begin-dl))
+      (save-excursion
+        (muse-publish-surround-dl indent post-indent)
+        (muse-insert-markup-end-list (muse-markup-text 'end-dl)))
+      (forward-line 1))))
+  nil)
+
+(defun muse-publish-markup-quote ()
+  "Markup a quoted paragraph.
+The reason this function is so funky, is to prevent text properties
+like read-only from being inadvertently deleted."
+  (let* ((ws (match-string 1))
+         (centered (>= (string-width ws) 6))
+         (begin-elem (if centered 'begin-center 'begin-quote-item))
+         (end-elem (if centered 'end-center 'end-quote-item)))
+    (replace-match "" t t nil 1)
+    (unless centered
+      (muse-insert-markup (muse-markup-text 'begin-quote)))
+    (muse-publish-surround-text (muse-markup-text begin-elem)
+                                (muse-markup-text end-elem)
+                                (function (lambda (indent)
+                                            (muse-forward-paragraph)
+                                            nil)))
+    (unless centered
+      (muse-insert-markup (muse-markup-text 'end-quote)))))
+
+(defun muse-publish-markup-leading-space (markup-space multiple)
+  (let (count)
+    (when (and markup-space
+               (>= (setq count (skip-chars-forward " ")) 0))
+      (delete-region (muse-line-beginning-position) (point))
+      (while (> count 0)
+        (muse-insert-markup markup-space)
+        (setq count (- count multiple))))))
+
+(defun muse-publish-markup-verse ()
+  (let ((leader (match-string 0)))
+    (goto-char (match-beginning 0))
+    (muse-insert-markup (muse-markup-text 'begin-verse))
+    (while (looking-at leader)
+      (replace-match "")
+      (muse-publish-markup-leading-space (muse-markup-text 'verse-space) 2)
+      (let ((beg (point)))
+        (end-of-line)
+        (cond
+         ((bolp)
+          (let ((text (muse-markup-text 'empty-verse-line)))
+            (when text (muse-insert-markup text))))
+         ((save-excursion
+            (save-match-data
+              (forward-line 1)
+              (or (looking-at (concat leader "["
+                                      muse-regexp-blank
+                                      "]*$"))
+                  (not (looking-at leader)))))
+          (let ((begin-text (muse-markup-text 'begin-last-stanza-line))
+                (end-text (muse-markup-text 'end-last-stanza-line)))
+            (when end-text (muse-insert-markup end-text))
+            (goto-char beg)
+            (when begin-text (muse-insert-markup begin-text))
+            (end-of-line)))
+         (t
+          (let ((begin-text (muse-markup-text 'begin-verse-line))
+                (end-text (muse-markup-text 'end-verse-line)))
+            (when end-text (muse-insert-markup end-text))
+            (goto-char beg)
+            (when begin-text (muse-insert-markup begin-text))
+            (end-of-line))))
+        (forward-line 1))))
+  (muse-insert-markup (muse-markup-text 'end-verse))
+  (insert ?\n))
+
+(defun muse-publish-trim-table (table)
+  "Remove completely blank columns from table, if at start or end of row."
+  ;; remove first
+  (catch 'found
+    (dolist (row (cdr table))
+      (let ((el (cadr row)))
+        (when (and (stringp el) (not (string= el "")))
+          (throw 'found t))))
+    (dolist (row (cdr table))
+      (setcdr row (cddr row)))
+    (setcar table (1- (car table))))
+  ;; remove last
+  (catch 'found
+    (dolist (row (cdr table))
+      (let ((el (car (last row))))
+        (when (and (stringp el) (not (string= el "")))
+          (throw 'found t))))
+    (dolist (row (cdr table))
+      (setcdr (last row 2) nil))
+    (setcar table (1- (car table))))
+  table)
+
+(defun muse-publish-table-fields (beg end)
+  "Parse given region as a table, returning a cons cell.
+The car is the length of the longest row.
+
+The cdr is a list of the fields of the table, with the first
+element indicating the type of the row:
+  1: body, 2: header, 3: footer, hline: separator.
+
+The existing region will be removed, except for initial blank lines."
+  (unless (muse-publishing-directive "disable-tables")
+    (let ((longest 0)
+          (left 0)
+          (seen-hline nil)
+          fields field-list)
+      (save-restriction
+        (narrow-to-region beg end)
+        (goto-char (point-min))
+        (while (looking-at (concat "^[" muse-regexp-blank "]*$"))
+          (forward-line 1))
+        (setq beg (point))
+        (while (= left 0)
+          (cond
+           ((looking-at muse-table-hline-regexp)
+            (when field-list  ; skip if at the beginning of table
+              (if seen-hline
+                  (setq field-list (cons (cons 'hline nil) field-list))
+                (dolist (field field-list)
+                  ;; the preceding fields are header lines
+                  (setcar field 2))
+                (setq seen-hline t))))
+           ((looking-at muse-table-line-regexp)
+            (setq fields (cons (length (match-string 1))
+                               (mapcar #'muse-trim-whitespace
+                                       (split-string (match-string 0)
+                                                     muse-table-field-regexp)))
+                  field-list (cons fields field-list)
+                  longest (max (length fields) longest))
+            ;; strip initial bars, if they exist
+            (let ((first (cadr fields)))
+              (when (and first (string-match "\\`|+\\s-*" first))
+                (setcar (cdr fields) (replace-match "" t t first))))))
+          (setq left (forward-line 1))))
+      (delete-region beg end)
+      (if (= longest 0)
+          (cons 0 nil)
+        ;; if the last line was an hline, remove it
+        (when (eq (caar field-list) 'hline)
+          (setq field-list (cdr field-list)))
+        (muse-publish-trim-table (cons (1- longest) (nreverse field-list)))))))
+
+(defun muse-publish-markup-table ()
+  "Style does not support tables.\n")
+
+(defun muse-publish-table-el-table (variant)
+  "Publish table.el-style tables in the format given by VARIANT."
+  (when (condition-case nil
+            (progn (require 'table)
+                   t)
+          (error nil))
+    (let ((muse-buf (current-buffer)))
+      (save-restriction
+        (narrow-to-region (match-beginning 0) (match-end 0))
+        (goto-char (point-min))
+        (forward-line 1)
+        (when (search-forward "|" nil t)
+          (with-temp-buffer
+            (let ((temp-buf (current-buffer)))
+              (with-current-buffer muse-buf
+                (table-generate-source variant temp-buf))
+              (with-current-buffer muse-buf
+                (delete-region (point-min) (point-max))
+                (insert-buffer-substring temp-buf)
+                (muse-publish-mark-read-only (point-min) (point-max))))))))))
+
+(defun muse-publish-markup-table-el ()
+  "Mark up table.el-style tables."
+  (cond ((muse-style-derived-p 'html)
+         (muse-publish-table-el-table 'html))
+        ((muse-style-derived-p 'latex)
+         (muse-publish-table-el-table 'latex))
+        ((muse-style-derived-p 'docbook)
+         (muse-publish-table-el-table 'cals))
+        (t "Style does not support table.el tables.\n")))
+
+(defun muse-publish-escape-specials-in-string (string &optional context)
+  "Escape specials in STRING using style-specific :specials.
+CONTEXT is used to figure out what kind of specials to escape.
+
+See the documentation of the `muse-publish-escape-specials'
+function for the list of available contexts."
+  (unless string
+    (setq string ""))
+  (let ((specials (muse-style-element :specials nil t)))
+    (cond ((functionp specials)
+           (setq specials (funcall specials context)))
+          ((symbolp specials)
+           (setq specials (symbol-value specials))))
+    (if (functionp specials)
+        (funcall specials string)
+      (apply (function concat)
+             (mapcar
+              (lambda (ch)
+                (let ((repl (or (assoc ch specials)
+                                (assoc ch muse-publish-markup-specials))))
+                  (if (null repl)
+                      (char-to-string ch)
+                    (cdr repl))))
+              (append string nil))))))
+
+(defun muse-publish-markup-email ()
+  (let* ((beg (match-end 1))
+         (addr (buffer-substring-no-properties beg (match-end 0))))
+    (setq addr (muse-publish-escape-specials-in-string addr 'email))
+    (goto-char beg)
+    (delete-region beg (match-end 0))
+    (if (or (eq (char-before (match-beginning 0)) ?\")
+            (eq (char-after (match-end 0)) ?\"))
+        (insert addr)
+      (insert (format (muse-markup-text 'email-addr) addr addr)))
+    (muse-publish-mark-read-only beg (point))))
+
+(defun muse-publish-classify-url (target)
+  "Transform anchors and get published name, if TARGET is a page.
+The return value is two linked cons cells.  The car is the type
+of link, the cadr is the page name, and the cddr is the anchor."
+  (save-match-data
+    (cond ((or (null target) (string= target ""))
+           nil)
+          ((string-match "\\`[uU][rR][lL]:\\(.+\\)\\'" target)
+           (cons 'url (cons (match-string 1 target) nil)))
+          ((string-match muse-image-regexp target)
+           (cons 'image (cons target nil)))
+          ((string-match muse-url-regexp target)
+           (cons 'url (cons target nil)))
+          ((string-match muse-file-regexp target)
+           (cons 'file (cons target nil)))
+          ((string-match "#" target)
+           (if (eq (aref target 0) ?\#)
+              (cons 'anchor-ref (cons nil (substring target 1)))
+             (cons 'link-and-anchor
+                   ;; match-data is changed by
+                   ;; `muse-publish-link-page' or descendants.
+                   (cons (save-match-data
+                           (muse-publish-link-page
+                            (substring target 0 (match-beginning 0))))
+                         (substring target (match-end 0))))))
+          (t
+           (cons 'link (cons (muse-publish-link-page target) nil))))))
+
+(defun muse-publish-url-desc (desc explicit)
+  (when desc
+    (dolist (transform muse-publish-desc-transforms)
+      (setq desc (save-match-data
+                   (when desc (funcall transform desc explicit)))))
+    (setq desc (muse-link-unescape desc))
+    (muse-publish-escape-specials-in-string desc 'url-desc)))
+
+(defun muse-publish-url (url &optional desc orig-url explicit)
+  "Resolve a URL into its final <a href> form."
+  (let ((unesc-url url)
+        (unesc-orig-url orig-url)
+        (unesc-desc desc)
+        type anchor)
+    ;; Transform URL
+    (dolist (transform muse-publish-url-transforms)
+      (setq url (save-match-data (when url (funcall transform url explicit)))))
+    ;; Classify URL
+    (let ((target (muse-publish-classify-url url)))
+      (setq type (car target)
+            url (if (eq type 'image)
+                    (muse-publish-escape-specials-in-string (cadr target)
+                                                            'image)
+                  (muse-publish-escape-specials-in-string (cadr target) 'url))
+            anchor (muse-publish-escape-specials-in-string
+                    (cddr target) 'url)))
+    ;; Transform description
+    (if desc
+        (setq desc (muse-publish-url-desc desc explicit))
+      (when orig-url
+        (setq orig-url (muse-publish-url-desc orig-url explicit))))
+    ;; Act on URL classification
+    (cond ((eq type 'anchor-ref)
+           (muse-markup-text 'anchor-ref anchor (or desc orig-url)))
+          ((and unesc-desc (string-match muse-image-regexp unesc-desc))
+           (let ((ext (or (file-name-extension desc) "")))
+             (setq desc (muse-publish-escape-specials-in-string unesc-desc
+                                                                'image))
+             (setq desc (muse-path-sans-extension desc))
+             (muse-markup-text 'image-link url desc ext)))
+          ((string= url "")
+           desc)
+          ((eq type 'image)
+           (let ((ext (or (file-name-extension url) "")))
+             (setq url (muse-path-sans-extension url))
+             (if desc
+                 (muse-markup-text 'image-with-desc url ext desc)
+               (muse-markup-text 'image url ext))))
+          ((eq type 'link-and-anchor)
+           (muse-markup-text 'link-and-anchor url anchor
+                             (or desc orig-url)
+                             (muse-path-sans-extension url)))
+          ((eq type 'link)
+           (muse-markup-text 'link url (or desc orig-url)))
+          (t
+           (or (and (or desc
+                        ;; compare the not-escaped versions of url and
+                        ;; orig-url
+                        (not (string= unesc-url unesc-orig-url)))
+                    (let ((text (muse-markup-text 'url-and-desc url
+                                                  (or desc orig-url))))
+                      (and (not (string= text ""))
+                           text)))
+               (muse-markup-text 'url url (or desc orig-url)))))))
+
+(defun muse-publish-insert-url (url &optional desc orig-url explicit)
+  "Resolve a URL into its final <a href> form."
+  (delete-region (match-beginning 0) (match-end 0))
+  (let ((text (muse-publish-url url desc orig-url explicit)))
+    (when text
+      (muse-insert-markup text))))
+
+(defun muse-publish-markup-link ()
+  (let (desc explicit orig-link link)
+    (setq explicit (save-match-data
+                     (if (string-match muse-explicit-link-regexp
+                                       (match-string 0))
+                         t nil)))
+    (setq orig-link (if explicit (match-string 1) (match-string 0)))
+    (setq desc (when explicit (match-string 2)))
+    (setq link (if explicit
+                   (muse-handle-explicit-link orig-link)
+                 (muse-handle-implicit-link orig-link)))
+    (when (and link
+               (or explicit
+                   (not (or (eq (char-before (match-beginning 0)) ?\")
+                            (eq (char-after (match-end 0)) ?\")))))
+      ;; if explicit link has no user-provided description, treat it
+      ;; as if it were an implicit link
+      (when (and explicit (not desc))
+        (setq explicit nil))
+      (muse-publish-insert-url link desc orig-link explicit))))
+
+(defun muse-publish-markup-url ()
+  (unless (or (eq (char-before (match-beginning 0)) ?\")
+              (eq (char-after (match-end 0)) ?\"))
+    (let ((url (match-string 0)))
+      (muse-publish-insert-url url nil url))))
+
+;; Default publishing tags
+
+(defcustom muse-publish-contents-depth 2
+  "The number of heading levels to include with <contents> tags."
+  :type 'integer
+  :group 'muse-publish)
+
+(defun muse-publish-contents-tag (beg end attrs)
+  (set (make-local-variable 'muse-publish-generate-contents)
+       (cons (copy-marker (point) t)
+             (let ((depth (cdr (assoc "depth" attrs))))
+               (or (and depth (string-to-number depth))
+                   muse-publish-contents-depth)))))
+
+(defun muse-publish-verse-tag (beg end)
+  (muse-publish-ensure-block beg end)
+  (save-excursion
+    (save-restriction
+      (narrow-to-region beg end)
+      (goto-char (point-min))
+      (delete-char 1)
+      (while (< (point) (point-max))
+        (insert "> ")
+        (forward-line))
+      (if (eq ?\  (char-syntax (char-before)))
+          (delete-char -1)))))
+
+(defun muse-publish-mark-read-only (beg end)
+  "Add read-only properties to the given region."
+  (add-text-properties beg end '(rear-nonsticky (read-only) read-only t))
+  nil)
+
+(defun muse-publish-mark-link (&optional beg end)
+  "Indicate that the given region is a Muse link, so that other
+markup elements respect it.  If a region is not specified, use
+the 0th match data to determine it.
+
+This is usually applied to explicit links."
+  (unless beg (setq beg (match-beginning 0)))
+  (unless end (setq end (match-end 0)))
+  (add-text-properties beg end '(muse-link t))
+  nil)
+
+(defun muse-publish-quote-tag (beg end)
+  (muse-publish-ensure-block beg)
+  (save-excursion
+    (save-restriction
+      (narrow-to-region beg end)
+      (let ((quote-regexp "^\\(<\\(/?\\)quote>\\)"))
+        (muse-insert-markup (muse-markup-text 'begin-quote))
+        (while (progn
+                 (unless (looking-at (concat "[" muse-regexp-blank "\n]*"
+                                             "<quote>"))
+                   (muse-publish-surround-text
+                    (muse-markup-text 'begin-quote-item)
+                    (muse-markup-text 'end-quote-item)
+                    (function
+                     (lambda (indent)
+                       (muse-forward-paragraph)
+                       (goto-char (match-end 0))
+                       (and (< (point) (point-max))
+                            (not (looking-at quote-regexp)))))
+                    nil nil nil
+                    quote-regexp))
+                 (if (>= (point) (point-max))
+                     t
+                   (and (search-forward "<quote>" nil t)
+                        (muse-goto-tag-end "quote" t)
+                        (progn (forward-line 1) t)
+                        (< (point) (point-max))))))
+        (goto-char (point-max))
+        (muse-insert-markup (muse-markup-text 'end-quote))))))
+
+(defun muse-publish-code-tag (beg end)
+  (muse-publish-escape-specials beg end nil 'literal)
+  (goto-char beg)
+  (insert (muse-markup-text 'begin-literal))
+  (goto-char end)
+  (insert (muse-markup-text 'end-literal))
+  (muse-publish-mark-read-only beg (point)))
+
+(defun muse-publish-cite-tag (beg end attrs)
+  (let* ((type (muse-publish-get-and-delete-attr "type" attrs))
+         (citetag (cond ((string-equal type "author")
+                         'begin-cite-author)
+                        ((string-equal type "year")
+                         'begin-cite-year)
+                        (t
+                         'begin-cite))))
+    (goto-char beg)
+    (insert (muse-markup-text citetag (muse-publishing-directive "bibsource")))
+    (goto-char end)
+    (insert (muse-markup-text 'end-cite))
+    (muse-publish-mark-read-only beg (point))))
+
+(defun muse-publish-src-tag (beg end attrs)
+  (muse-publish-example-tag beg end))
+
+(defun muse-publish-example-tag (beg end)
+  (muse-publish-ensure-block beg end)
+  (muse-publish-escape-specials beg end nil 'example)
+  (goto-char beg)
+  (insert (muse-markup-text 'begin-example))
+  (goto-char end)
+  (insert (muse-markup-text 'end-example))
+  (muse-publish-mark-read-only beg (point)))
+
+(defun muse-publish-literal-tag (beg end attrs)
+  "Ensure that the text between BEG and END is not interpreted later on.
+
+ATTRS is an alist of attributes.
+
+If it contains a \"style\" element, delete the region if the
+current style is neither derived from nor equal to this style.
+
+If it contains both a \"style\" element and an \"exact\" element
+with the value \"t\", delete the region only if the current style
+is exactly this style."
+  (let* ((style (cdr (assoc "style" attrs)))
+         (exact (cdr (assoc "exact" attrs)))
+         (exactp (and (stringp exact) (string= exact "t"))))
+    (if (or (not style)
+            (and exactp (equal (muse-style style)
+                               muse-publishing-current-style))
+            (and (not exactp) (muse-style-derived-p style)))
+        (muse-publish-mark-read-only beg end)
+      (delete-region beg end)
+      (when (and (bolp) (eolp) (not (eobp)))
+        (delete-char 1)))))
+
+(put 'muse-publish-literal-tag 'muse-dangerous-tag t)
+
+(defun muse-publish-verbatim-tag (beg end)
+  (muse-publish-escape-specials beg end nil 'verbatim)
+  (muse-publish-mark-read-only beg end))
+
+(defun muse-publish-br-tag (beg end)
+  "Insert a line break."
+  (delete-region beg end)
+  (muse-insert-markup (muse-markup-text 'line-break)))
+
+(defalias 'muse-publish-class-tag 'ignore)
+(defalias 'muse-publish-div-tag 'ignore)
+
+(defun muse-publish-call-tag-on-buffer (tag &optional attrs)
+  "Transform the current buffer as if it were surrounded by the tag TAG.
+If attributes ATTRS are given, pass them to the tag function."
+  (let ((tag-info (muse-markup-tag-info tag)))
+    (when tag-info
+      (let* ((end (progn (goto-char (point-max)) (point-marker)))
+             (args (list (point-min) end))
+             (muse-inhibit-style-tags nil))
+        (when (nth 2 tag-info)
+          (nconc args (list attrs)))
+        (apply (nth 4 tag-info) args)
+        (set-marker end nil)))))
+
+(defun muse-publish-examplify-buffer (&optional attrs)
+  "Transform the current buffer as if it were an <example> region."
+  (muse-publish-call-tag-on-buffer "example" attrs))
+
+(defun muse-publish-srcify-buffer (&optional attrs)
+  "Transform the current buffer as if it were a <src> region."
+  (muse-publish-call-tag-on-buffer "src" attrs))
+
+(defun muse-publish-versify-buffer (&optional attrs)
+  "Transform the current buffer as if it were a <verse> region."
+  (muse-publish-call-tag-on-buffer "verse" attrs)
+  (muse-publish-markup ""
+                       `((100 ,(concat "^[" muse-regexp-blank "]*> ") 0
+                              muse-publish-markup-verse)))
+  (goto-char (point-min)))
+
+(defmacro muse-publish-markup-attribute (beg end attrs reinterp &rest body)
+  "Evaluate BODY within the bounds of BEG and END.
+ATTRS is an alist.  Only the \"markup\" element of ATTRS is acted
+on.
+
+If it is omitted, publish the region with the normal Muse rules.
+If RE-INTERP is specified, this is done immediately in a new
+publishing process.  Currently, RE-INTERP is specified only by
+the <include> tag.
+
+If \"nil\", do not mark up the region at all, but prevent it from
+being further interpreted by Muse.
+
+If \"example\", treat the region as if it was surrounded by the
+<example> tag.
+
+If \"src\", treat the region as if it was surrounded by the
+<src> tag.
+
+If \"verse\", treat the region as if it was surrounded by the
+<verse> tag, to preserve newlines.
+
+Otherwise, it should be the name of a function to call in the
+narrowed region after evaluating BODY.  The function should
+take the ATTRS parameter.
+
+BEG is modified to be the start of the published markup."
+  (let ((attrs-sym (make-symbol "attrs"))
+        (markup (make-symbol "markup"))
+        (markup-function (make-symbol "markup-function")))
+    `(let* ((,attrs-sym ,attrs)
+            (,markup (muse-publish-get-and-delete-attr "markup" ,attrs-sym)))
+       (save-restriction
+         (narrow-to-region ,beg ,end)
+         (goto-char (point-min))
+         ,@body
+         (if (not ,markup)
+             (when ,reinterp
+               (muse-publish-markup-region (point-min) (point-max))
+               (muse-publish-mark-read-only (point-min) (point-max))
+               (goto-char (point-max)))
+           (let ((,markup-function (read ,markup)))
+             (cond ((eq ,markup-function 'example)
+                    (setq ,markup-function #'muse-publish-examplify-buffer))
+                   ((eq ,markup-function 'src)
+                    (setq ,markup-function #'muse-publish-srcify-buffer))
+                   ((eq ,markup-function 'verse)
+                    (setq ,markup-function #'muse-publish-versify-buffer))
+                   ((and ,markup-function (not (functionp ,markup-function)))
+                    (error "Invalid markup function `%s'" ,markup))
+                   (t nil))
+             (if ,markup-function
+                 (funcall ,markup-function ,attrs-sym)
+               (muse-publish-mark-read-only (point-min) (point-max))
+               (goto-char (point-max)))))))))
+
+(put 'muse-publish-markup-attribute 'lisp-indent-function 4)
+(put 'muse-publish-markup-attribute 'edebug-form-spec
+     '(sexp sexp sexp sexp body))
+
+(defun muse-publish-lisp-tag (beg end attrs)
+  (muse-publish-markup-attribute beg end attrs nil
+    (save-excursion
+      (save-restriction
+        (let ((str (muse-eval-lisp
+                    (prog1
+                        (concat "(progn "
+                                (buffer-substring-no-properties (point-min)
+                                                                (point-max))
+                                ")")
+                      (delete-region (point-min) (point-max))
+                      (widen)))))
+          (set-text-properties 0 (length str) nil str)
+          (insert str))))))
+
+(put 'muse-publish-lisp-tag 'muse-dangerous-tag t)
+
+(defun muse-publish-command-tag (beg end attrs)
+  (muse-publish-markup-attribute beg end attrs nil
+    (while (looking-at "\\s-*$")
+      (forward-line))
+    (let ((interp (muse-publish-get-and-delete-attr "interp" attrs)))
+      (if interp
+          (shell-command-on-region (point) (point-max) interp t t)
+        (shell-command
+         (prog1
+             (buffer-substring-no-properties (point) (point-max))
+           (delete-region (point-min) (point-max)))
+         t)))
+    ;; make sure there is a newline at end
+    (goto-char (point-max))
+    (forward-line 0)
+    (unless (looking-at "\\s-*$")
+      (goto-char (point-max))
+      (insert ?\n))
+    (goto-char (point-min))))
+
+(put 'muse-publish-command-tag 'muse-dangerous-tag t)
+
+(defun muse-publish-perl-tag (beg end attrs)
+  (muse-publish-command-tag beg end
+                            (cons (cons "interp" (executable-find "perl"))
+                                  attrs)))
+
+(put 'muse-publish-perl-tag 'muse-dangerous-tag t)
+
+(defun muse-publish-php-tag (beg end attrs)
+  (muse-publish-command-tag beg end
+                            (cons (cons "interp" (executable-find "php"))
+                                  attrs)))
+
+(put 'muse-publish-php-tag 'muse-dangerous-tag t)
+
+(defun muse-publish-python-tag (beg end attrs)
+  (muse-publish-command-tag beg end
+                            (cons (cons "interp" (executable-find "python"))
+                                  attrs)))
+
+(put 'muse-publish-python-tag 'muse-dangerous-tag t)
+
+(defun muse-publish-ruby-tag (beg end attrs)
+  (muse-publish-command-tag beg end
+                            (cons (cons "interp" (executable-find "ruby"))
+                                  attrs)))
+
+(put 'muse-publish-ruby-tag 'muse-dangerous-tag t)
+
+(defun muse-publish-comment-tag (beg end)
+  (if (null muse-publish-comments-p)
+      (delete-region beg end)
+    (goto-char end)
+    (muse-insert-markup (muse-markup-text 'comment-end))
+    (muse-publish-mark-read-only beg end)
+    (goto-char beg)
+    (muse-insert-markup (muse-markup-text 'comment-begin))))
+
+(defun muse-publish-include-tag (beg end attrs)
+  "Include the named file at the current location during publishing.
+
+<include file=\"...\" markup=\"...\">
+
+The `markup' attribute controls how this file is marked up after
+being inserted.  See `muse-publish-markup-attribute' for an
+explanation of how it works."
+  (let ((filename (muse-publish-get-and-delete-attr "file" attrs))
+        (muse-publishing-directives (copy-alist muse-publishing-directives)))
+    (if filename
+        (setq filename (expand-file-name
+                        filename
+                        (file-name-directory muse-publishing-current-file)))
+      (error "No file attribute specified in <include> tag"))
+    (muse-publish-markup-attribute beg end attrs t
+      (muse-insert-file-contents filename))))
+
+(put 'muse-publish-include-tag 'muse-dangerous-tag t)
+
+(defun muse-publish-mark-up-tag (beg end attrs)
+  "Run an Emacs Lisp function on the region delimted by this tag.
+
+<markup function=\"...\" style=\"...\" exact=\"...\">
+
+The optional \"function\" attribute controls how this section is
+marked up.  If used, it should be the name of a function to call
+with the buffer narrowed to the delimited region.  Note that no
+further marking-up will be performed on this region.
+
+If \"function\" is omitted, use the standard Muse markup function.
+This is useful for marking up content in headers and footers.
+
+The optional \"style\" attribute causes the region to be deleted
+if the current style is neither derived from nor equal to this
+style.
+
+If both a \"style\" attribute and an \"exact\" attribute are
+provided, and \"exact\" is \"t\", delete the region only if the
+current style is exactly this style."
+  (let* ((style (cdr (assoc "style" attrs)))
+         (exact (cdr (assoc "exact" attrs)))
+         (exactp (and (stringp exact) (string= exact "t"))))
+    (if (or (not style)
+            (and exactp (equal (muse-style style)
+                               muse-publishing-current-style))
+            (and (not exactp) (muse-style-derived-p style)))
+        (let* ((function (cdr (assoc "function" attrs)))
+               (muse-publish-use-header-footer-tags nil)
+               (markup-function (and function (intern-soft function))))
+          (if (and markup-function (functionp markup-function))
+              (save-restriction
+                (narrow-to-region beg end)
+                (funcall markup-function)
+                (goto-char (point-max)))
+            (let ((muse-publish-inhibit-style-hooks t))
+              (muse-publish-markup-region beg end)))
+          (muse-publish-mark-read-only beg (point)))
+      (delete-region beg end))))
+
+(put 'muse-publish-mark-up-tag 'muse-dangerous-tag t)
+
+;; Miscellaneous helper functions
+
+(defun muse-publish-strip-URL (string &rest ignored)
+  "If the text \"URL:\" exists at the beginning of STRING, remove it.
+The text is removed regardless of whether and part of it is uppercase."
+  (save-match-data
+    (if (string-match "\\`[uU][rR][lL]:\\(.+\\)\\'" string)
+        (match-string 1 string)
+      string)))
+
+(defun muse-publish-markup-type (category default-func)
+  (let ((rule (muse-find-markup-element :overrides category (muse-style))))
+    (funcall (or rule default-func))))
+
+(defun muse-published-buffer-contents (buffer)
+  (with-current-buffer buffer
+    (goto-char (point-min))
+    (let ((beg (and (search-forward "Emacs Muse begins here")
+                    (muse-line-end-position)))
+          (end (and (search-forward "Emacs Muse ends here")
+                    (muse-line-beginning-position))))
+      (buffer-substring-no-properties beg end))))
+
+(defun muse-published-contents (file)
+  (when (file-readable-p file)
+    (muse-with-temp-buffer
+      (muse-insert-file-contents file)
+      (muse-published-buffer-contents (current-buffer)))))
+
+(defun muse-publish-transform-output
+  (file temp-file output-path name gen-func &rest cleanup-exts)
+  "Transform the given TEMP-FILE into the OUTPUT-PATH, using GEN-FUNC."
+  (setq file (muse-page-name file))
+  (message "Generating %s output for %s..." name file)
+  (if (not (funcall gen-func temp-file output-path))
+      (message "Generating %s from %s...failed" name file)
+    (message "Generating %s output for %s...done" name file)
+    (muse-delete-file-if-exists temp-file)
+    (dolist (ext cleanup-exts)
+      (muse-delete-file-if-exists
+       (expand-file-name (concat file ext)
+                         (file-name-directory output-path))))
+    (message "Wrote %s" output-path)))
+
+(defun muse-publish-read-only (string)
+  (let ((end (1- (length string))))
+    (add-text-properties 0 end
+                         '(rear-nonsticky (read-only) read-only t)
+                         string)
+    string))
+
+;;; muse-publish.el ends here
diff --git a/packages/muse/muse-regexps.el b/packages/muse/muse-regexps.el
new file mode 100644 (file)
index 0000000..ad3ce3f
--- /dev/null
@@ -0,0 +1,270 @@
+;;; muse-regexps.el --- define regexps used by Muse
+
+;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; This file is the part of the Muse project that describes regexps
+;; that are used throughout the project.
+
+;;; Contributors:
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Muse Regular Expressions
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defgroup muse-regexp nil
+  "Regular expressions used in publishing and syntax highlighting."
+  :group 'muse)
+
+;;; Deal with the lack of character classes for regexps in Emacs21 and
+;;; XEmacs
+
+(defcustom muse-regexp-use-character-classes 'undecided
+  "Indicate whether to use extended character classes like [:space:].
+If 'undecided, Muse will use them if your emacs is known to support them.
+
+Emacs 22 and Emacs 21.3.50 are known to support them.  XEmacs
+does not support them.
+
+Emacs 21.2 or higher support them, but with enough annoying edge
+cases that the sanest default is to leave them disabled."
+  :type '(choice (const :tag "Yes" t)
+                 (const :tag "No" nil)
+                 (const :tag "Let Muse decide" undecided))
+  :group 'muse-regexp)
+
+(defvar muse-regexp-emacs-revision
+  (save-match-data
+    (and (string-match "^[0-9]+\\.[0-9]+\\.\\([0-9]+\\)"
+                       emacs-version)
+         (match-string 1 emacs-version)
+         (string-to-number (match-string 1 emacs-version))))
+  "The revision number of this version of Emacs.")
+
+(defun muse-extreg-usable-p ()
+  "Return non-nil if extended character classes can be used,
+nil otherwise.
+
+This is used when deciding the initial values of the muse-regexp
+options."
+  (cond
+   ((eq muse-regexp-use-character-classes t)
+    t)
+   ((eq muse-regexp-use-character-classes nil)
+    nil)
+   ((featurep 'xemacs) nil)             ; unusable on XEmacs
+   ((> emacs-major-version 21) t)       ; usable if > 21
+   ((< emacs-major-version 21) nil)
+   ((< emacs-minor-version 3) nil)
+   ;; don't use if version is of format 21.x
+   ((null muse-regexp-emacs-revision) nil)
+   ;; only trust 21.3.50 or higher
+   ((>= muse-regexp-emacs-revision 50) t)
+   (t nil)))
+
+(defcustom muse-regexp-blank
+  (if (muse-extreg-usable-p)
+      "[:blank:]"
+    " \t")
+  "Regexp to use in place of \"[:blank:]\".
+This should be something that matches spaces and tabs.
+
+It is like a regexp, but should be embeddable inside brackets.
+Muse will detect the appropriate value correctly most of
+the time."
+  :type 'string
+  :options '("[:blank:]" " \t")
+  :group 'muse-regexp)
+
+(defcustom muse-regexp-alnum
+  (if (muse-extreg-usable-p)
+      "[:alnum:]"
+    "A-Za-z0-9")
+  "Regexp to use in place of \"[:alnum:]\".
+This should be something that matches all letters and numbers.
+
+It is like a regexp, but should be embeddable inside brackets.
+muse will detect the appropriate value correctly most of
+the time."
+  :type 'string
+  :options '("[:alnum:]" "A-Za-z0-9")
+  :group 'muse-regexp)
+
+(defcustom muse-regexp-lower
+  (if (muse-extreg-usable-p)
+      "[:lower:]"
+    "a-z")
+  "Regexp to use in place of \"[:lower:]\".
+This should match all lowercase characters.
+
+It is like a regexp, but should be embeddable inside brackets.
+muse will detect the appropriate value correctly most of
+the time."
+  :type 'string
+  :options '("[:lower:]" "a-z")
+  :group 'muse-regexp)
+
+(defcustom muse-regexp-upper
+  (if (muse-extreg-usable-p)
+      "[:upper:]"
+    "A-Z")
+  "Regexp to use in place of \"[:upper:]\".
+This should match all uppercase characters.
+
+It is like a regexp, but should be embeddable inside brackets.
+muse will detect the appropriate value correctly most of
+the time."
+  :type 'string
+  :options '("[:upper:]" "A-Z")
+  :group 'muse-regexp)
+
+;;; Regexps used to define Muse publishing syntax
+
+(defcustom muse-list-item-regexp
+  (concat "^%s\\(\\([^\n" muse-regexp-blank "].*?\\)?::"
+          "\\(?:[" muse-regexp-blank "]+\\|$\\)"
+          "\\|[" muse-regexp-blank "]-[" muse-regexp-blank "]*"
+          "\\|[" muse-regexp-blank "][0-9]+\\.[" muse-regexp-blank "]*\\)")
+  "Regexp used to match the beginning of a list item.
+The '%s' will be replaced with a whitespace regexp when publishing."
+  :type 'regexp
+  :group 'muse-regexp)
+
+(defcustom muse-ol-item-regexp (concat "\\`[" muse-regexp-blank "]+[0-9]+\\.")
+  "Regexp used to match an ordered list item."
+  :type 'regexp
+  :group 'muse-regexp)
+
+(defcustom muse-ul-item-regexp (concat "\\`[" muse-regexp-blank "]+-")
+  "Regexp used to match an unordered list item."
+  :type 'regexp
+  :group 'muse-regexp)
+
+(defcustom muse-dl-term-regexp
+  (concat "[" muse-regexp-blank "]*\\(.+?\\)["
+          muse-regexp-blank "]+::\\(?:[" muse-regexp-blank "]+\\|$\\)")
+  "Regexp used to match a definition list term.
+The first match string must contain the term."
+  :type 'regexp
+  :group 'muse-regexp)
+
+(defcustom muse-dl-entry-regexp (concat "\\`[" muse-regexp-blank "]*::")
+  "Regexp used to match a definition list entry."
+  :type 'regexp
+  :group 'muse-regexp)
+
+(defcustom muse-table-field-regexp
+  (concat "[" muse-regexp-blank "]+\\(|+\\)\\(?:["
+          muse-regexp-blank "]\\|$\\)")
+  "Regexp used to match table separators when publishing."
+  :type 'regexp
+  :group 'muse-regexp)
+
+(defcustom muse-table-line-regexp (concat ".*" muse-table-field-regexp ".*")
+  "Regexp used to match a table line when publishing."
+  :type 'regexp
+  :group 'muse-regexp)
+
+(defcustom muse-table-hline-regexp (concat "[" muse-regexp-blank
+                                           "]*|[-+]+|[" muse-regexp-blank
+                                           "]*")
+  "Regexp used to match a horizontal separator line in a table."
+  :type 'regexp
+  :group 'muse-regexp)
+
+(defcustom muse-table-el-border-regexp (concat "[" muse-regexp-blank "]*"
+                                               "\\+\\(-*\\+\\)+"
+                                               "[" muse-regexp-blank "]*")
+  "Regexp used to match the beginning and end of a table.el-style table."
+  :type 'regexp
+  :group 'muse-regexp)
+
+(defcustom muse-table-el-line-regexp (concat "[" muse-regexp-blank "]*"
+                                             "|\\(.*|\\)*"
+                                           "[" muse-regexp-blank "]*")
+  "Regexp used to match a table line of a table.el-style table."
+  :type 'regexp
+  :group 'muse-regexp)
+
+(defcustom muse-tag-regexp
+  (concat "<\\([^/" muse-regexp-blank "\n][^" muse-regexp-blank
+          "</>\n]*\\)\\(\\s-+[^<>]+[^</>\n]\\)?\\(/\\)?>")
+  "A regexp used to find XML-style tags within a buffer when publishing.
+Group 1 should be the tag name, group 2 the properties, and group
+3 the optional immediate ending slash."
+  :type 'regexp
+  :group 'muse-regexp)
+
+(defcustom muse-explicit-link-regexp
+  "\\[\\[\\([^][\n]+\\)\\]\\(?:\\[\\([^][\n]+\\)\\]\\)?\\]"
+  "Regexp used to match [[target][description]] links.
+Paren group 1 must match the URL, and paren group 2 the description."
+  :type 'regexp
+  :group 'muse-regexp)
+
+(defcustom muse-implicit-link-regexp
+  (concat "\\([^" muse-regexp-blank "\n]+\\)")
+  "Regexp used to match an implicit link.
+An implicit link is the largest block of text to be checked for
+URLs and bare WikiNames by the `muse-link-at-point' function.
+Paren group 1 is the text to be checked.
+
+URLs are checked by default.  To get WikiNames, load
+muse-wiki.el.
+
+This is only used when you are using muse-mode.el, but not
+muse-colors.el.
+
+If the above applies, and you want to match things with spaces in
+them, you will have to modify this."
+  :type 'regexp
+  :group 'muse-regexp)
+
+;;; Regexps used to determine file types
+
+(defcustom muse-file-regexp
+  (concat "\\`[~/]\\|\\?\\|/\\'\\|\\."
+          "\\(html?\\|pdf\\|mp3\\|el\\|zip\\|txt\\|tar\\)"
+          "\\(\\.\\(gz\\|bz2\\)\\)?\\'")
+  "A link matching this regexp will be regarded as a link to a file."
+  :type 'regexp
+  :group 'muse-regexp)
+
+(defcustom muse-image-regexp
+  "\\.\\(eps\\|gif\\|jp\\(e?g\\)\\|p\\(bm\\|ng\\)\\|tiff\\|x\\([bp]m\\)\\)\\'"
+  "A link matching this regexp will be published inline as an image.
+For example:
+
+  [[./wife.jpg][A picture of my wife]]
+
+If you omit the description, the alt tag of the resulting HTML
+buffer will be the name of the file."
+  :type 'regexp
+  :group 'muse-regexp)
+
+(provide 'muse-regexps)
+
+;;; muse-regexps.el ends here
diff --git a/packages/muse/muse-texinfo.el b/packages/muse/muse-texinfo.el
new file mode 100644 (file)
index 0000000..4ad0092
--- /dev/null
@@ -0,0 +1,346 @@
+;;; muse-texinfo.el --- publish entries to Texinfo format or PDF
+
+;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;;; Contributors:
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Muse Texinfo Publishing
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'muse-publish)
+(require 'muse-latex)
+(require 'texnfo-upd)
+
+(defgroup muse-texinfo nil
+  "Rules for marking up a Muse file as a Texinfo article."
+  :group 'muse-publish)
+
+(defcustom muse-texinfo-process-natively nil
+  "If non-nil, use the Emacs `texinfmt' module to make Info files."
+  :type 'boolean
+  :require 'texinfmt
+  :group 'muse-texinfo)
+
+(defcustom muse-texinfo-extension ".texi"
+  "Default file extension for publishing Texinfo files."
+  :type 'string
+  :group 'muse-texinfo)
+
+(defcustom muse-texinfo-info-extension ".info"
+  "Default file extension for publishing Info files."
+  :type 'string
+  :group 'muse-texinfo)
+
+(defcustom muse-texinfo-pdf-extension ".pdf"
+  "Default file extension for publishing PDF files."
+  :type 'string
+  :group 'muse-texinfo)
+
+(defcustom muse-texinfo-header
+  "\\input texinfo  @c -*-texinfo-*-
+
+@setfilename <lisp>(concat (muse-page-name) \".info\")</lisp>
+@settitle <lisp>(muse-publishing-directive \"title\")</lisp>
+
+@documentencoding iso-8859-1
+
+@iftex
+@finalout
+@end iftex
+
+@titlepage
+@title <lisp>(muse-publishing-directive \"title\")</lisp>
+@author <lisp>(muse-publishing-directive \"author\")</lisp>
+@end titlepage
+
+<lisp>(and muse-publish-generate-contents \"@contents\")</lisp>
+
+@node Top, Overview, , (dir)
+@top Overview
+@c Page published by Emacs Muse begins here\n\n"
+  "Text to prepend to a Muse page being published as Texinfo.
+This may be text or a filename.
+It may contain <lisp> markup tags."
+  :type 'string
+  :group 'muse-texinfo)
+
+(defcustom muse-texinfo-footer
+  "\n@c Page published by Emacs Muse ends here
+@bye\n"
+  "Text to append to a Muse page being published as Texinfo.
+This may be text or a filename.
+It may contain <lisp> markup tags."
+  :type 'string
+  :group 'muse-texinfo)
+
+(defcustom muse-texinfo-markup-regexps nil
+  "List of markup rules for publishing a Muse page to Texinfo.
+For more on the structure of this list, see `muse-publish-markup-regexps'."
+  :type '(repeat (choice
+                  (list :tag "Markup rule"
+                        integer
+                        (choice regexp symbol)
+                        integer
+                        (choice string function symbol))
+                  function))
+  :group 'muse-texinfo)
+
+(defcustom muse-texinfo-markup-functions
+  '((table . muse-texinfo-markup-table)
+    (heading . muse-texinfo-markup-heading))
+  "An alist of style types to custom functions for that kind of text.
+For more on the structure of this list, see
+`muse-publish-markup-functions'."
+  :type '(alist :key-type symbol :value-type function)
+  :group 'muse-texinfo)
+
+(defcustom muse-texinfo-markup-strings
+  '((image-with-desc . "@center @image{%1%, , , %3%, %2%}@*\n@center %3%")
+    (image           . "@noindent @image{%s, , , , %s}")
+    (image-link      . "@uref{%s, %s.%s}")
+    (anchor-ref      . "@ref{%s, %s}")
+    (url             . "@uref{%s, %s}")
+    (link            . "@ref{Top, %2%, , %1%, }")
+    (link-and-anchor . "@ref{%3%, %2%, , %1%, %3%}")
+    (email-addr      . "@email{%s}")
+    (anchor          . "@anchor{%s} ")
+    (emdash          . "---")
+    (comment-begin   . "@ignore\n")
+    (comment-end     . "\n@end ignore\n")
+    (rule            . "@sp 1")
+    (no-break-space  . "@w{ }")
+    (line-break      . "@*")
+    (enddots         . "@enddots{}")
+    (dots            . "@dots{}")
+    (section         . "@chapter ")
+    (subsection      . "@section ")
+    (subsubsection   . "@subsection ")
+    (section-other   . "@subsubheading ")
+    (footnote        . "@footnote{")
+    (footnote-end    . "}")
+    (begin-underline . "_")
+    (end-underline   . "_")
+    (begin-literal   . "@samp{")
+    (end-literal     . "}")
+    (begin-emph      . "@emph{")
+    (end-emph        . "}")
+    (begin-more-emph . "@strong{")
+    (end-more-emph   . "}")
+    (begin-most-emph . "@strong{@emph{")
+    (end-most-emph   . "}}")
+    (begin-verse     . "@display\n")
+    (end-verse-line  . "")
+    (verse-space     . "@ @ ")
+    (end-verse       . "\n@end display")
+    (begin-example   . "@example\n")
+    (end-example     . "\n@end example")
+    (begin-center    . "@quotation\n")
+    (end-center      . "\n@end quotation")
+    (begin-quote     . "@quotation\n")
+    (end-quote       . "\n@end quotation")
+    (begin-cite     . "")
+    (begin-cite-author . "")
+    (begin-cite-year . "")
+    (end-cite        . "")
+    (begin-uli       . "@itemize @bullet\n")
+    (end-uli         . "\n@end itemize")
+    (begin-uli-item  . "@item\n")
+    (begin-oli       . "@enumerate\n")
+    (end-oli         . "\n@end enumerate")
+    (begin-oli-item  . "@item\n")
+    (begin-dl        . "@table @strong\n")
+    (end-dl          . "\n@end table")
+    (begin-ddt       . "@item "))
+  "Strings used for marking up text.
+These cover the most basic kinds of markup, the handling of which
+differs little between the various styles."
+  :type '(alist :key-type symbol :value-type string)
+  :group 'muse-texinfo)
+
+(defcustom muse-texinfo-markup-specials
+  '((?@ . "@@")
+    (?{ . "@{")
+    (?} . "@}"))
+  "A table of characters which must be represented specially."
+  :type '(alist :key-type character :value-type string)
+  :group 'muse-texinfo)
+
+(defcustom muse-texinfo-markup-specials-url
+  '((?@ . "@@")
+    (?{ . "@{")
+    (?} . "@}")
+    (?, . "@comma{}"))
+  "A table of characters which must be represented specially.
+These are applied to URLs."
+  :type '(alist :key-type character :value-type string)
+  :group 'muse-texinfo)
+
+(defun muse-texinfo-decide-specials (context)
+  "Determine the specials to escape, depending on CONTEXT."
+  (cond ((memq context '(underline literal emphasis email url url-desc image
+                                   footnote))
+         muse-texinfo-markup-specials-url)
+        (t muse-texinfo-markup-specials)))
+
+(defun muse-texinfo-markup-table ()
+  (let* ((table-info (muse-publish-table-fields (match-beginning 0)
+                                                (match-end 0)))
+         (row-len (car table-info))
+         (field-list (cdr table-info)))
+    (when table-info
+      (muse-insert-markup "@multitable @columnfractions")
+      (dotimes (field row-len)
+        (muse-insert-markup " " (number-to-string (/ 1.0 row-len))))
+      (dolist (fields field-list)
+        (let ((type (car fields)))
+          (unless (eq type 'hline)
+            (setq fields (cdr fields))
+            (if (= type 2)
+                (muse-insert-markup "\n@headitem ")
+              (muse-insert-markup "\n@item "))
+            (insert (car fields))
+            (setq fields (cdr fields))
+            (dolist (field fields)
+              (muse-insert-markup " @tab ")
+              (insert field)))))
+      (muse-insert-markup "\n@end multitable")
+      (insert ?\n))))
+
+(defun muse-texinfo-remove-links (string)
+  "Remove explicit links from STRING, replacing them with the link
+description.
+
+If no description exists for the link, use the link itself."
+  (let ((start nil))
+    (while (setq start (string-match muse-explicit-link-regexp string
+                                     start))
+      (setq string
+            (replace-match (or (match-string 2 string)
+                               (match-string 1 string))
+                           t t string)))
+    string))
+
+(defun muse-texinfo-protect-wikiwords (start end)
+  "Protect all wikiwords from START to END from further processing."
+  (and (boundp 'muse-wiki-wikiword-regexp)
+       (featurep 'muse-wiki)
+       (save-excursion
+         (goto-char start)
+         (while (re-search-forward muse-wiki-wikiword-regexp end t)
+           (muse-publish-mark-read-only (match-beginning 0)
+                                        (match-end 0))))))
+
+(defun muse-texinfo-markup-heading ()
+  (save-excursion
+    (muse-publish-markup-heading))
+  (let* ((eol (muse-line-end-position))
+         (orig-heading (buffer-substring (point) eol))
+         (beg (point)))
+    (delete-region (point) eol)
+    ;; don't allow links to be published in headings
+    (insert (muse-texinfo-remove-links orig-heading))
+    (muse-texinfo-protect-wikiwords beg (point))))
+
+(defun muse-texinfo-munge-buffer ()
+  (muse-latex-fixup-dquotes)
+  (texinfo-insert-node-lines (point-min) (point-max) t)
+  (texinfo-all-menus-update t))
+
+(defun muse-texinfo-pdf-browse-file (file)
+  (shell-command (concat "open " file)))
+
+(defun muse-texinfo-info-generate (file output-path final-target)
+  ;; The version of `texinfmt.el' that comes with Emacs 21 doesn't
+  ;; support @documentencoding, so hack it in.
+  (when (and (not (featurep 'xemacs))
+             (eq emacs-major-version 21))
+    (put 'documentencoding 'texinfo-format
+         'texinfo-discard-line-with-args))
+  ;; Most versions of `texinfmt.el' do not support @headitem, so hack
+  ;; it in.
+  (unless (get 'headitem 'texinfo-format)
+    (put 'headitem 'texinfo-format 'texinfo-multitable-item))
+  (muse-publish-transform-output
+   file output-path final-target "Info"
+   (function
+    (lambda (file output-path)
+      (if muse-texinfo-process-natively
+          (save-window-excursion
+            (save-excursion
+              (find-file file)
+              (let ((inhibit-read-only t))
+                (texinfo-format-buffer))
+              (save-buffer)
+              (kill-buffer (current-buffer))
+              (let ((buf (get-file-buffer file)))
+                (with-current-buffer buf
+                  (set-buffer-modified-p nil)
+                  (kill-buffer (current-buffer))))
+              t))
+        (let ((result (shell-command
+                       (concat "makeinfo --enable-encoding --output="
+                               output-path " " file))))
+          (if (or (not (numberp result))
+                  (eq result 0))
+              t
+            nil)))))))
+
+(defun muse-texinfo-pdf-generate (file output-path final-target)
+  (let ((muse-latex-pdf-program "pdftex")
+        (muse-latex-pdf-cruft '(".aux" ".cp" ".fn" ".ky" ".log" ".pg" ".toc"
+                                ".tp" ".vr")))
+    (muse-latex-pdf-generate file output-path final-target)))
+
+;;; Register the Muse TEXINFO Publishers
+
+(muse-define-style "texi"
+                   :suffix    'muse-texinfo-extension
+                   :regexps   'muse-texinfo-markup-regexps
+                   :functions 'muse-texinfo-markup-functions
+                   :strings   'muse-texinfo-markup-strings
+                   :specials  'muse-texinfo-decide-specials
+                   :after     'muse-texinfo-munge-buffer
+                   :header    'muse-texinfo-header
+                   :footer    'muse-texinfo-footer
+                   :browser   'find-file)
+
+(muse-derive-style "info" "texi"
+                   :final   'muse-texinfo-info-generate
+                   :link-suffix 'muse-texinfo-info-extension
+                   :osuffix 'muse-texinfo-info-extension
+                   :browser 'info)
+
+(muse-derive-style "info-pdf" "texi"
+                   :final   'muse-texinfo-pdf-generate
+                   :link-suffix 'muse-texinfo-pdf-extension
+                   :osuffix 'muse-texinfo-pdf-extension
+                   :browser 'muse-texinfo-pdf-browse-file)
+
+(provide 'muse-texinfo)
+
+;;; muse-texinfo.el ends here
diff --git a/packages/muse/muse-wiki.el b/packages/muse/muse-wiki.el
new file mode 100644 (file)
index 0000000..e2cd3a2
--- /dev/null
@@ -0,0 +1,498 @@
+;;; muse-wiki.el --- wiki features for Muse
+
+;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; Author: Yann Hodique <Yann.Hodique@lifl.fr>
+;; Keywords:
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;;; Contributors:
+
+;; Per B. Sederberg (per AT med DOT upenn DOT edu) made it so that all
+;; files in a Muse project can become implicit links.
+
+;;; Code:
+
+(require 'muse-regexps)
+(require 'muse-mode)
+
+(eval-when-compile
+  (require 'muse-colors))
+
+(defgroup muse-wiki nil
+  "Options controlling the behavior of Emacs Muse Wiki features."
+  :group 'muse-mode)
+
+(defcustom muse-wiki-use-wikiword t
+  "Whether to use color and publish bare WikiNames."
+  :type 'boolean
+  :group 'muse-wiki)
+
+(defcustom muse-wiki-allow-nonexistent-wikiword nil
+  "Whether to color bare WikiNames that don't have an existing file."
+  :type 'boolean
+  :group 'muse-wiki)
+
+(defcustom muse-wiki-match-all-project-files nil
+  "If non-nil, Muse will color and publish implicit links to any
+file in your project, regardless of whether its name is a WikiWord."
+  :type 'boolean
+  :group 'muse-wiki)
+
+(defcustom muse-wiki-ignore-implicit-links-to-current-page nil
+  "If non-nil, Muse will not recognize implicit links to the current
+page, both when formatting and publishing."
+  :type 'boolean
+  :group 'muse-wiki)
+
+(defvar muse-wiki-project-file-regexp nil
+  "Regexp used to match the files in the current project.
+
+This is set by `muse-wiki-update-project-file-regexp' automatically
+when `muse-wiki-match-all-project-files' is non-nil.")
+(make-variable-buffer-local 'muse-wiki-project-file-regexp)
+
+(defun muse-wiki-update-project-file-regexp ()
+  "Update a local copy of `muse-wiki-project-file-regexp' to include
+all the files in the project."
+  ;; see if the user wants to match project files
+  (when muse-wiki-match-all-project-files
+    (let ((files (mapcar #'car (muse-project-file-alist (muse-project)))))
+      (setq muse-wiki-project-file-regexp
+            (when files
+              (concat "\\("
+                      ;; include all files from the project
+                      (regexp-opt files 'words)
+                      "\\)"))))
+    ;; update coloring setup
+    (when (featurep 'muse-colors)
+      (muse-colors-define-highlighting 'muse-mode muse-colors-markup))))
+
+(add-hook 'muse-update-values-hook
+          'muse-wiki-update-project-file-regexp)
+(add-hook 'muse-project-file-alist-hook
+          'muse-wiki-update-project-file-regexp)
+
+(defcustom muse-wiki-wikiword-regexp
+  (concat "\\<\\(\\(?:[" muse-regexp-upper
+          "]+[" muse-regexp-lower "]+\\)\\(?:["
+          muse-regexp-upper "]+[" muse-regexp-lower "]+\\)+\\)")
+  "Regexp used to match WikiWords."
+  :set (function
+        (lambda (sym value)
+          (set sym value)
+          (when (featurep 'muse-colors)
+            (muse-colors-define-highlighting 'muse-mode muse-colors-markup))))
+  :type 'regexp
+  :group 'muse-wiki)
+
+(defcustom muse-wiki-ignore-bare-project-names nil
+  "Determine whether project names without a page specifer are links.
+
+If non-nil, project names without a page specifier will not be
+considered links.
+
+When nil, project names without a specifier are highlighted and
+they link to the default page of the project that they name."
+  :type 'boolean
+  :group 'muse-wiki)
+
+(defvar muse-wiki-interwiki-regexp nil
+  "Regexp that matches all interwiki links.
+
+This is automatically generated by setting `muse-wiki-interwiki-alist'.
+It can also be set by calling `muse-wiki-update-interwiki-regexp'.")
+
+(defcustom muse-wiki-interwiki-delimiter "#\\|::"
+  "Delimiter regexp used for InterWiki links.
+
+If you use groups, use only shy groups."
+  :type 'regexp
+  :group 'muse-wiki)
+
+(defcustom muse-wiki-interwiki-replacement ": "
+  "Regexp used for replacing `muse-wiki-interwiki-delimiter' in
+InterWiki link descriptions.
+
+If you want this replacement to happen, you must add
+`muse-wiki-publish-pretty-interwiki' to
+`muse-publish-desc-transforms'."
+  :type 'regexp
+  :group 'muse-wiki)
+
+(eval-when-compile
+  (defvar muse-wiki-interwiki-alist))
+
+(defun muse-wiki-project-files-with-spaces (&optional project)
+  "Return a list of files in PROJECT that have spaces."
+  (setq project (muse-project project))
+  (let ((flist nil))
+    (save-match-data
+      (dolist (entry (muse-project-file-alist project))
+        (when (string-match " " (car entry))
+          (setq flist (cons (car entry) flist)))))
+    flist))
+
+(defun muse-wiki-update-interwiki-regexp ()
+  "Update the value of `muse-wiki-interwiki-regexp' based on
+`muse-wiki-interwiki-alist' and `muse-project-alist'."
+  (if (null muse-project-alist)
+      (setq muse-wiki-interwiki-regexp nil)
+    (let ((old-value muse-wiki-interwiki-regexp))
+      (setq muse-wiki-interwiki-regexp
+            (concat "\\<\\(" (regexp-opt (mapcar #'car muse-project-alist))
+                    (when muse-wiki-interwiki-alist
+                      (let ((interwiki-rules
+                             (mapcar #'car muse-wiki-interwiki-alist)))
+                        (when interwiki-rules
+                          (concat "\\|" (regexp-opt interwiki-rules)))))
+                    "\\)\\(?:\\(" muse-wiki-interwiki-delimiter
+                    "\\)\\("
+                    (when muse-wiki-match-all-project-files
+                      ;; append the files from the project
+                      (let ((files nil))
+                        (dolist (proj muse-project-alist)
+                          (setq files
+                                (nconc (muse-wiki-project-files-with-spaces
+                                        (car proj))
+                                       files)))
+                        (when files
+                          (concat (regexp-opt files) "\\|"))))
+                    "\\sw+\\)\\(#\\S-+\\)?\\)?\\>"))
+      (when (and (featurep 'muse-colors)
+                 (not (string= old-value muse-wiki-interwiki-regexp)))
+        (muse-colors-define-highlighting 'muse-mode muse-colors-markup)))))
+
+(defcustom muse-wiki-interwiki-alist
+  '(("EmacsWiki" . "http://www.emacswiki.org/cgi-bin/wiki/"))
+  "A table of WikiNames that refer to external entities.
+
+The format of this table is an alist, or series of cons cells.
+Each cons cell must be of the form:
+
+  (WIKINAME . STRING-OR-FUNCTION)
+
+The second part of the cons cell may either be a STRING, which in most
+cases should be a URL, or a FUNCTION.  If a function, it will be
+called with one argument: the tag applied to the Interwiki name, or
+nil if no tag was used.  If the cdr was a STRING and a tag is used,
+the tag is simply appended.
+
+Here are some examples:
+
+  (\"JohnWiki\" . \"http://alice.dynodns.net/wiki?\")
+
+Referring to [[JohnWiki::EmacsModules]] then really means:
+
+  http://alice.dynodns.net/wiki?EmacsModules
+
+If a function is used for the replacement text, you can get creative
+depending on what the tag is.  Tags may contain any alphabetic
+character, any number, % or _.  If you need other special characters,
+use % to specify the hex code, as in %2E.  All browsers should support
+this."
+  :type '(repeat (cons (string :tag "WikiName")
+                       (choice (string :tag "URL") function)))
+  :set (function
+        (lambda (sym value)
+          (set sym value)
+          (muse-wiki-update-interwiki-regexp)))
+  :group 'muse-wiki)
+
+(add-hook 'muse-update-values-hook
+          'muse-wiki-update-interwiki-regexp)
+
+(defun muse-wiki-resolve-project-page (&optional project page)
+  "Return the published path from the current page to PAGE of PROJECT.
+
+If PAGE is not specified, use the value of :default in PROJECT.
+
+If PROJECT is not specified, default to the current project.  If
+no project is current, use the first project of
+`muse-projects-alist'.
+
+Note that PAGE can have several output directories.  If this is
+the case, we will use the first one that matches our current
+style and has the same link suffix, ignoring the others.  If no
+style has the same link suffix as the current publishing style,
+use the first style we find."
+  (setq project (or (and project
+                         (muse-project project))
+                    (muse-project)
+                    (car muse-project-alist))
+        page (or page (muse-get-keyword :default (cadr project))))
+  (let* ((page-path (and muse-project-alist
+                         (muse-project-page-file page project)))
+         (remote-styles (and page-path (muse-project-applicable-styles
+                                        page-path (cddr project))))
+         (local-style (muse-project-current-output-style)))
+    (cond ((and remote-styles local-style muse-publishing-p)
+           (muse-project-resolve-link page local-style remote-styles))
+          ((not muse-publishing-p)
+           (if page-path
+               page-path
+             (when muse-wiki-allow-nonexistent-wikiword
+               ;; make a path to a nonexistent file in project
+               (setq page-path (expand-file-name
+                                page (car (cadr project))))
+               (if (and muse-file-extension
+                        (not (string= muse-file-extension "")))
+                   (concat page-path "." muse-file-extension)
+                 page-path)))))))
+
+(defun muse-wiki-handle-implicit-interwiki (&optional string)
+  "If STRING or point has an interwiki link, resolve it to a filename.
+
+Match string 0 is set to the link."
+  (when (and muse-wiki-interwiki-regexp
+             (if string (string-match muse-wiki-interwiki-regexp string)
+               (looking-at muse-wiki-interwiki-regexp)))
+    (let* ((project (match-string 1 string))
+           (subst (cdr (assoc project muse-wiki-interwiki-alist)))
+           (word (match-string 3 string))
+           (anchor (if (match-beginning 4)
+                       (match-string 4 string)
+                     "")))
+      (if subst
+          (if (functionp subst)
+              (and (setq word (funcall subst word))
+                   (concat word anchor))
+            (concat subst word anchor))
+        (and (assoc project muse-project-alist)
+             (or word (not muse-wiki-ignore-bare-project-names))
+             (setq word (muse-wiki-resolve-project-page project word))
+             (concat word anchor))))))
+
+(defun muse-wiki-handle-explicit-interwiki (&optional string)
+  "If STRING or point has an interwiki link, resolve it to a filename."
+  (let ((right-pos (if string (length string) (match-end 1))))
+    (when (and muse-wiki-interwiki-regexp
+               (if string (string-match muse-wiki-interwiki-regexp string)
+                 (save-restriction
+                   (narrow-to-region (point) right-pos)
+                   (looking-at muse-wiki-interwiki-regexp))))
+      (let* ((project (match-string 1 string))
+             (subst (cdr (assoc project muse-wiki-interwiki-alist)))
+             (anchor (and (match-beginning 4)
+                          (match-string 4 string)))
+             (word (when (match-end 2)
+                     (cond (anchor (match-string 3 string))
+                           (string (substring string (match-end 2)))
+                           (right-pos (buffer-substring (match-end 2)
+                                                        right-pos))
+                           (t nil)))))
+        (if (and (null word)
+                 right-pos
+                 (not (= right-pos (match-end 1))))
+            ;; if only a project name was found, it must take up the
+            ;; entire string or link
+            nil
+          (unless anchor
+            (if (or (null word)
+                    (not (string-match "#[^#]+\\'" word)))
+                (setq anchor "")
+              (setq anchor (match-string 0 word))
+              (setq word (substring word 0 (match-beginning 0)))))
+          (if subst
+              (if (functionp subst)
+                  (and (setq word (funcall subst word))
+                       (concat word anchor))
+                (concat subst word anchor))
+            (and (assoc project muse-project-alist)
+                 (or word (not muse-wiki-ignore-bare-project-names))
+                 (setq word (muse-wiki-resolve-project-page project word))
+                 (concat word anchor))))))))
+
+(defun muse-wiki-handle-wikiword (&optional string)
+  "If STRING or point has a WikiWord, return it.
+
+Match 1 is set to the WikiWord."
+  (when (and (or (and muse-wiki-match-all-project-files
+                      muse-wiki-project-file-regexp
+                      (if string
+                          (string-match muse-wiki-project-file-regexp string)
+                        (looking-at muse-wiki-project-file-regexp)))
+                 (and muse-wiki-use-wikiword
+                      (if string
+                          (string-match muse-wiki-wikiword-regexp string)
+                        (looking-at muse-wiki-wikiword-regexp))))
+             (cond
+              (muse-wiki-allow-nonexistent-wikiword
+               t)
+              ((and muse-wiki-ignore-implicit-links-to-current-page
+                    (string= (match-string 1 string) (muse-page-name)))
+               nil)
+              ((and (muse-project-of-file)
+                    (muse-project-page-file
+                     (match-string 1 string) muse-current-project t))
+               t)
+              ((file-exists-p (match-string 1 string))
+               t)
+              (t nil)))
+    (match-string 1 string)))
+
+;;; Prettifications
+
+(defcustom muse-wiki-publish-small-title-words
+  '("the" "and" "at" "on" "of" "for" "in" "an" "a")
+  "Strings that should be downcased in a page title.
+
+This is used by `muse-wiki-publish-pretty-title', which must be
+called manually."
+  :type '(repeat string)
+  :group 'muse-wiki)
+
+(defcustom muse-wiki-hide-nop-tag t
+  "If non-nil, hide <nop> tags when coloring a Muse buffer."
+  :type 'boolean
+  :group 'muse-wiki)
+
+(defun muse-wiki-publish-pretty-title (&optional title explicit)
+  "Return a pretty version of the given TITLE.
+
+If EXPLICIT is non-nil, TITLE will be returned unmodified."
+  (unless title (setq title (or (muse-publishing-directive "title") "")))
+  (if (or explicit
+          (save-match-data (string-match muse-url-regexp title)))
+      title
+    (save-match-data
+      (let ((case-fold-search nil))
+        (while (string-match (concat "\\([" muse-regexp-lower
+                                     "]\\)\\([" muse-regexp-upper
+                                     "0-9]\\)")
+                             title)
+          (setq title (replace-match "\\1 \\2" t nil title)))
+        (let* ((words (split-string title))
+               (w (cdr words)))
+          (while w
+            (if (member (downcase (car w))
+                        muse-wiki-publish-small-title-words)
+                (setcar w (downcase (car w))))
+            (setq w (cdr w)))
+          (mapconcat 'identity words " "))))))
+
+(defun muse-wiki-publish-pretty-interwiki (desc &optional explicit)
+  "Replace instances of `muse-wiki-interwiki-delimiter' with
+`muse-wiki-interwiki-replacement'."
+  (if (or explicit
+          (save-match-data (string-match muse-url-regexp desc)))
+      desc
+    (muse-replace-regexp-in-string muse-wiki-interwiki-delimiter
+                                   muse-wiki-interwiki-replacement
+                                   desc)))
+
+;;; Coloring setup
+
+(defun muse-wiki-colors-nop-tag (beg end)
+  "Inhibit the colorization of inhibit links just after the tag.
+
+Example: <nop>WikiWord"
+  (when muse-wiki-hide-nop-tag
+    (add-text-properties beg (+ beg 5)
+                         '(invisible muse intangible t)))
+  (unless (> (+ beg 6) (point-max))
+    (add-text-properties (+ beg 5) (+ beg 6)
+                         '(muse-no-implicit-link t))))
+
+(defun muse-colors-wikiword-separate ()
+  (add-text-properties (match-beginning 0) (match-end 0)
+                       '(invisible muse intangible t)))
+
+(defun muse-wiki-insinuate-colors ()
+  (add-to-list 'muse-colors-tags
+               '("nop" nil nil nil muse-wiki-colors-nop-tag)
+               t)
+  (add-to-list 'muse-colors-markup
+               '(muse-wiki-interwiki-regexp t muse-colors-implicit-link)
+               t)
+  (add-to-list 'muse-colors-markup
+               '(muse-wiki-wikiword-regexp t muse-colors-implicit-link)
+               t)
+  (add-to-list 'muse-colors-markup
+               '(muse-wiki-project-file-regexp t muse-colors-implicit-link)
+               t)
+  (add-to-list 'muse-colors-markup
+               '("''''" ?\' muse-colors-wikiword-separate)
+               nil)
+  (muse-colors-define-highlighting 'muse-mode muse-colors-markup))
+
+(eval-after-load "muse-colors" '(muse-wiki-insinuate-colors))
+
+;;; Publishing setup
+
+(defun muse-wiki-publish-nop-tag (beg end)
+  "Inhibit the colorization of inhibit links just after the tag.
+
+Example: <nop>WikiWord"
+  (unless (= (point) (point-max))
+    (muse-publish-mark-read-only (point) (+ (point) 1))))
+
+(defun muse-wiki-insinuate-publish ()
+  (add-to-list 'muse-publish-markup-tags
+               '("nop" nil nil nil muse-wiki-publish-nop-tag)
+               t)
+  (add-to-list 'muse-publish-markup-regexps
+               '(3100 muse-wiki-interwiki-regexp 0 link)
+               t)
+  (add-to-list 'muse-publish-markup-regexps
+               '(3200 muse-wiki-wikiword-regexp 0 link)
+               t)
+  (add-to-list 'muse-publish-markup-regexps
+               '(3250 muse-wiki-project-file-regexp 0 link)
+               t)
+  (add-to-list 'muse-publish-markup-regexps
+               '(3300 "''''" 0 "")
+               t)
+  (custom-add-option 'muse-publish-desc-transforms
+                     'muse-wiki-publish-pretty-interwiki)
+  (custom-add-option 'muse-publish-desc-transforms
+                     'muse-wiki-publish-pretty-title))
+
+(eval-after-load "muse-publish" '(muse-wiki-insinuate-publish))
+
+;;; Insinuate link handling
+
+(custom-add-option 'muse-implicit-link-functions
+                   'muse-wiki-handle-implicit-interwiki)
+(custom-add-option 'muse-implicit-link-functions
+                   'muse-wiki-handle-wikiword)
+
+(custom-add-option 'muse-explicit-link-functions
+                   'muse-wiki-handle-explicit-interwiki)
+
+(add-to-list 'muse-implicit-link-functions
+             'muse-wiki-handle-implicit-interwiki t)
+(add-to-list 'muse-implicit-link-functions
+             'muse-wiki-handle-wikiword t)
+
+(add-to-list 'muse-explicit-link-functions
+             'muse-wiki-handle-explicit-interwiki t)
+
+;;; Obsolete functions
+
+(defun muse-wiki-update-custom-values ()
+  (muse-display-warning
+   (concat "Please remove `muse-wiki-update-custom-values' from"
+           " `muse-mode-hook'.  Its use is now deprecated.")))
+
+(provide 'muse-wiki)
+;;; muse-wiki.el ends here
diff --git a/packages/muse/muse-xml-common.el b/packages/muse/muse-xml-common.el
new file mode 100644 (file)
index 0000000..75869ca
--- /dev/null
@@ -0,0 +1,201 @@
+;;; muse-xml-common.el --- common routines for XML-like publishing styles
+
+;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;;; Contributors:
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Muse XML Publishing - Common Elements
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'muse-publish)
+(require 'muse-regexps)
+
+(defcustom muse-xml-encoding-map
+  '((iso-8859-1         . "iso-8859-1")
+    (iso-2022-jp        . "iso-2022-jp")
+    (utf-8              . "utf-8")
+    (japanese-iso-8bit  . "euc-jp")
+    (chinese-big5       . "big5")
+    (mule-utf-8         . "utf-8")
+    (chinese-iso-8bit   . "gb2312")
+    (chinese-gbk        . "gbk"))
+  "An alist mapping Emacs coding systems to appropriate XML charsets.
+Use the base name of the coding system (i.e. without the -unix)."
+  :type '(alist :key-type coding-system :value-type string)
+  :group 'muse-xml)
+
+(defun muse-xml-transform-content-type (content-type default)
+  "Using `muse-xml-encoding-map', try and resolve an Emacs coding
+system to an associated XML coding system.
+If no match is found, the DEFAULT charset is used instead."
+  (let ((match (and (fboundp 'coding-system-base)
+                    (assoc (coding-system-base content-type)
+                           muse-xml-encoding-map))))
+    (if match
+        (cdr match)
+      default)))
+
+(defcustom muse-xml-markup-specials
+  '((?\" . "&quot;")
+    (?\< . "&lt;")
+    (?\> . "&gt;")
+    (?\& . "&amp;"))
+  "A table of characters which must be represented specially."
+  :type '(alist :key-type character :value-type string)
+  :group 'muse-xml)
+
+(defcustom muse-xml-markup-specials-url-extra
+  '((?\" . "&quot;")
+    (?\< . "&lt;")
+    (?\> . "&gt;")
+    (?\& . "&amp;")
+    (?\  . "%20")
+    (?\n . "%0D%0A"))
+  "A table of characters which must be represented specially.
+These are extra characters that are escaped within URLs."
+  :type '(alist :key-type character :value-type string)
+  :group 'muse-xml)
+
+(defun muse-xml-decide-specials (context)
+  "Determine the specials to escape, depending on CONTEXT."
+  (cond ((memq context '(email url image))
+         'muse-xml-escape-url)
+        ((eq context 'url-extra)
+         muse-xml-markup-specials-url-extra)
+        (t muse-xml-markup-specials)))
+
+(defun muse-xml-escape-url (str)
+  "Convert to character entities any non-alphanumeric characters
+outside a few punctuation symbols, that risk being misinterpreted
+if not escaped."
+  (when str
+    (setq str (muse-publish-escape-specials-in-string str 'url-extra))
+    (let (pos code len ch)
+      (save-match-data
+        (while (setq pos (string-match (concat "[^-"
+                                               muse-regexp-alnum
+                                               "/:._=@\\?~#%\"\\+<>()&;]")
+                                       str pos))
+          (setq ch (aref str pos)
+                code (concat "&#" (int-to-string
+                                   (cond ((fboundp 'char-to-ucs)
+                                          (char-to-ucs ch))
+                                         ((fboundp 'char-to-int)
+                                          (char-to-int ch))
+                                         (t ch)))
+                             ";")
+                len (length code)
+                str (concat (substring str 0 pos)
+                            code
+                            (when (< pos (length str))
+                              (substring str (1+ pos) nil)))
+                pos (+ len pos)))
+        str))))
+
+(defun muse-xml-markup-anchor ()
+  (unless (get-text-property (match-end 1) 'muse-link)
+    (let ((text (muse-markup-text 'anchor (match-string 2))))
+      (save-match-data
+        (skip-chars-forward (concat muse-regexp-blank "\n"))
+        (when (looking-at (concat "<\\([^" muse-regexp-blank "/>\n]+\\)>"))
+          (goto-char (match-end 0)))
+        (muse-insert-markup text)))
+    (match-string 1)))
+
+(defun muse-xml-sort-table (table)
+  "Sort the given table structure so that it validates properly."
+  ;; Note that the decision matrix must have a nil diagonal, or else
+  ;; elements with the same type will be reversed with respect to each
+  ;; other.
+  (let ((decisions '((nil nil nil)      ; body < header, body < footer
+                     (t   nil t)        ; header stays where it is
+                     (t   nil nil))))   ; footer < header
+    (sort table #'(lambda (l r)
+                    (and (integerp (car l)) (integerp (car r))
+                         (nth (1- (car r))
+                              (nth (1- (car l)) decisions)))))))
+
+(defun muse-xml-markup-table (&optional attributes)
+  "Publish the matched region into a table.
+If a string ATTRIBUTES is given, pass it to the markup string begin-table."
+  (let* ((table-info (muse-publish-table-fields (match-beginning 0)
+                                                (match-end 0)))
+         (row-len (car table-info))
+         (supports-group (not (string= (muse-markup-text 'begin-table-group
+                                                         row-len)
+                                       "")))
+         (field-list (muse-xml-sort-table (cdr table-info)))
+         last-part)
+    (when table-info
+      (let ((beg (point)))
+        (muse-publish-ensure-block beg))
+      (muse-insert-markup (muse-markup-text 'begin-table (or attributes "")))
+      (muse-insert-markup (muse-markup-text 'begin-table-group row-len))
+      (dolist (fields field-list)
+        (let* ((type (car fields))
+               (part (cond ((eq type 'hline) nil)
+                           ((= type 1) "tbody")
+                           ((= type 2) "thead")
+                           ((= type 3) "tfoot")))
+               (col (cond ((eq type 'hline) nil)
+                          ((= type 1) "td")
+                          ((= type 2) "th")
+                          ((= type 3) "td"))))
+          (setq fields (cdr fields))
+          (unless (and part last-part (string= part last-part))
+            (when last-part
+              (muse-insert-markup "  </" last-part ">\n")
+              (when (eq type 'hline)
+                ;; horizontal separators are represented by closing
+                ;; the current table group and opening a new one
+                (muse-insert-markup (muse-markup-text 'end-table-group))
+                (muse-insert-markup (muse-markup-text 'begin-table-group
+                                                      row-len))))
+            (when part
+              (muse-insert-markup "  <" part ">\n"))
+            (setq last-part part))
+          (unless (eq type 'hline)
+            (muse-insert-markup (muse-markup-text 'begin-table-row))
+            (dolist (field fields)
+              (muse-insert-markup (muse-markup-text 'begin-table-entry  col))
+              (insert field)
+              (muse-insert-markup (muse-markup-text 'end-table-entry  col)))
+            (muse-insert-markup (muse-markup-text 'end-table-row)))))
+      (when last-part
+        (muse-insert-markup "  </" last-part ">\n"))
+      (muse-insert-markup (muse-markup-text 'end-table-group))
+      (muse-insert-markup (muse-markup-text 'end-table))
+      (insert ?\n))))
+
+(defun muse-xml-prepare-buffer ()
+  (set (make-local-variable 'muse-publish-url-transforms)
+       (cons 'muse-xml-escape-string muse-publish-url-transforms)))
+
+(provide 'muse-xml-common)
+
+;;; muse-xml-common.el ends here
diff --git a/packages/muse/muse-xml.el b/packages/muse/muse-xml.el
new file mode 100644 (file)
index 0000000..9f26ade
--- /dev/null
@@ -0,0 +1,274 @@
+;;; muse-xml.el --- publish XML files
+
+;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; Author: Michael Olson <mwolson@gnu.org>
+;; Date: Sat 23-Jul-2005
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; James Clarke's nxml-mode can be used for editing and validating
+;; Muse-generated XML files.  If you are in nxml-mode use the command
+;; C-c C-s C-f to point to the schema in `contrib/muse.rnc', which
+;; comes with Muse.  Say yes if you are asked if you want to copy the
+;; file to your location.  C-c C-s C-a can then be used to reload the
+;; schema if you make changes to the file.
+
+;;; Contributors:
+
+;; Peter K. Lee (saint AT corenova DOT com) made the initial
+;; implementation of planner-publish.el, which was heavily borrowed
+;; from.
+
+;; Brad Collins (brad AT chenla DOT org) provided a Compact RelaxNG
+;; schema.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Muse XML Publishing
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'muse-publish)
+(require 'muse-regexps)
+(require 'muse-xml-common)
+
+(defgroup muse-xml nil
+  "Options controlling the behavior of Muse XML publishing.
+See `muse-xml' for more information."
+  :group 'muse-publish)
+
+(defcustom muse-xml-extension ".xml"
+  "Default file extension for publishing XML files."
+  :type 'string
+  :group 'muse-xml)
+
+(defcustom muse-xml-header
+  "<?xml version=\"1.0\" encoding=\"<lisp>
+  (muse-xml-encoding)</lisp>\"?>
+<MUSE>
+  <pageinfo>
+    <title><lisp>(muse-publishing-directive \"title\")</lisp></title>
+    <author><lisp>(muse-publishing-directive \"author\")</lisp></author>
+    <maintainer><lisp>(muse-style-element :maintainer)</lisp></maintainer>
+    <pubdate><lisp>(muse-publishing-directive \"date\")</lisp></pubdate>
+  </pageinfo>
+  <!-- Page published by Emacs Muse begins here -->\n"
+  "Header used for publishing XML files.
+This may be text or a filename."
+  :type 'string
+  :group 'muse-xml)
+
+(defcustom muse-xml-footer "
+  <!-- Page published by Emacs Muse ends here -->
+</MUSE>\n"
+  "Footer used for publishing XML files.
+This may be text or a filename."
+  :type 'string
+  :group 'muse-xml)
+
+(defcustom muse-xml-markup-regexps
+  `(;; Beginning of doc, end of doc, or plain paragraph separator
+    (10000 ,(concat "\\(\\(\n\\(?:[" muse-regexp-blank "]*\n\\)*"
+                    "\\([" muse-regexp-blank "]*\n\\)\\)"
+                    "\\|\\`\\s-*\\|\\s-*\\'\\)")
+           ;; this is somewhat repetitive because we only require the
+           ;; line just before the paragraph beginning to be not
+           ;; read-only
+           3 muse-xml-markup-paragraph))
+  "List of markup rules for publishing a Muse page to XML.
+For more on the structure of this list, see `muse-publish-markup-regexps'."
+  :type '(repeat (choice
+                  (list :tag "Markup rule"
+                        integer
+                        (choice regexp symbol)
+                        integer
+                        (choice string function symbol))
+                  function))
+  :group 'muse-xml)
+
+(defcustom muse-xml-markup-functions
+  '((anchor . muse-xml-markup-anchor)
+    (table . muse-xml-markup-table))
+  "An alist of style types to custom functions for that kind of text.
+For more on the structure of this list, see
+`muse-publish-markup-functions'."
+  :type '(alist :key-type symbol :value-type function)
+  :group 'muse-xml)
+
+(defcustom muse-xml-markup-strings
+  '((image-with-desc . "<image href=\"%s.%s\">%s</image>")
+    (image           . "<image href=\"%s.%s\"></image>")
+    (image-link      . "<link type=\"image\" href=\"%s\">%s.%s</link>")
+    (anchor-ref      . "<link type=\"url\" href=\"#%s\">%s</link>")
+    (url             . "<link type=\"url\" href=\"%s\">%s</link>")
+    (link            . "<link type=\"url\" href=\"%s\">%s</link>")
+    (link-and-anchor . "<link type=\"url\" href=\"%s#%s\">%s</link>")
+    (email-addr      . "<link type=\"email\" href=\"%s\">%s</link>")
+    (anchor          . "<anchor id=\"%s\" />\n")
+    (emdash          . "%s--%s")
+    (comment-begin   . "<!-- ")
+    (comment-end     . " -->")
+    (rule            . "<hr />")
+    (fn-sep          . "<hr />\n")
+    (no-break-space  . "&nbsp;")
+    (line-break      . "<br>")
+    (enddots         . "....")
+    (dots            . "...")
+    (section         . "<section level=\"1\"><title>")
+    (section-end     . "</title>")
+    (subsection      . "<section level=\"2\"><title>")
+    (subsection-end  . "</title>")
+    (subsubsection   . "<section level=\"3\"><title>")
+    (subsubsection-end . "</title>")
+    (section-other   . "<section level=\"%s\"><title>")
+    (section-other-end . "</title>")
+    (section-close   . "</section>")
+    (footnote        . "<footnote>")
+    (footnote-end    . "</footnote>")
+    (begin-underline . "<format type=\"underline\">")
+    (end-underline   . "</format>")
+    (begin-literal   . "<code>")
+    (end-literal     . "</code>")
+    (begin-emph      . "<format type=\"emphasis\" level=\"1\">")
+    (end-emph        . "</format>")
+    (begin-more-emph . "<format type=\"emphasis\" level=\"2\">")
+    (end-more-emph   . "</format>")
+    (begin-most-emph . "<format type=\"emphasis\" level=\"3\">")
+    (end-most-emph   . "</format>")
+    (begin-verse     . "<verse>\n")
+    (begin-verse-line . "<line>")
+    (end-verse-line  . "</line>")
+    (empty-verse-line . "<line />")
+    (begin-last-stanza-line . "<line>")
+    (end-last-stanza-line . "</line>")
+    (end-verse       . "</verse>")
+    (begin-example   . "<example>")
+    (end-example     . "</example>")
+    (begin-center    . "<p><format type=\"center\">\n")
+    (end-center      . "\n</format></p>")
+    (begin-quote     . "<blockquote>\n")
+    (end-quote       . "\n</blockquote>")
+    (begin-cite      . "<cite>")
+    (begin-cite-author . "<cite type=\"author\">")
+    (begin-cite-year . "<cite type=\"year\">")
+    (end-cite        . "</cite>")
+    (begin-quote-item . "<p>")
+    (end-quote-item  . "</p>")
+    (begin-uli       . "<list type=\"unordered\">\n")
+    (end-uli         . "\n</list>")
+    (begin-uli-item  . "<item>")
+    (end-uli-item    . "</item>")
+    (begin-oli       . "<list type=\"ordered\">\n")
+    (end-oli         . "\n</list>")
+    (begin-oli-item  . "<item>")
+    (end-oli-item    . "</item>")
+    (begin-dl        . "<list type=\"definition\">\n")
+    (end-dl          . "\n</list>")
+    (begin-dl-item   . "<item>\n")
+    (end-dl-item     . "\n</item>")
+    (begin-ddt       . "<term>")
+    (end-ddt         . "</term>")
+    (begin-dde       . "<definition>")
+    (end-dde         . "</definition>")
+    (begin-table     . "<table%s>\n")
+    (end-table       . "</table>")
+    (begin-table-row . "    <tr>\n")
+    (end-table-row   . "    </tr>\n")
+    (begin-table-entry . "      <%s>")
+    (end-table-entry . "</%s>\n"))
+  "Strings used for marking up text.
+These cover the most basic kinds of markup, the handling of which
+differs little between the various styles."
+  :type '(alist :key-type symbol :value-type string)
+  :group 'muse-xml)
+
+(defcustom muse-xml-encoding-default 'utf-8
+  "The default Emacs buffer encoding to use in published files.
+This will be used if no special characters are found."
+  :type 'symbol
+  :group 'muse-xml)
+
+(defcustom muse-xml-charset-default "utf-8"
+  "The default XML charset to use if no translation is
+found in `muse-xml-encoding-map'."
+  :type 'string
+  :group 'muse-xml)
+
+(defun muse-xml-encoding ()
+  (muse-xml-transform-content-type
+   (or (and (boundp 'buffer-file-coding-system)
+            buffer-file-coding-system)
+       muse-xml-encoding-default)
+   muse-xml-charset-default))
+
+(defun muse-xml-markup-paragraph ()
+  (let ((end (copy-marker (match-end 0) t)))
+    (goto-char (match-beginning 0))
+    (when (save-excursion
+            (save-match-data
+              (and (not (get-text-property (max (point-min) (1- (point)))
+                                           'muse-no-paragraph))
+                   (re-search-backward "<\\(/?\\)p[ >]" nil t)
+                   (not (string-equal (match-string 1) "/")))))
+      (when (get-text-property (1- (point)) 'muse-end-list)
+        (goto-char (previous-single-property-change (1- (point))
+                                                    'muse-end-list)))
+      (muse-insert-markup "</p>"))
+    (goto-char end))
+  (cond
+   ((eobp)
+    (unless (bolp)
+      (insert "\n")))
+   ((get-text-property (point) 'muse-no-paragraph)
+    (forward-char 1)
+    nil)
+   ((eq (char-after) ?\<)
+    (when (looking-at (concat "<\\(format\\|code\\|link\\|image"
+                              "\\|anchor\\|footnote\\)[ >]"))
+      (muse-insert-markup "<p>")))
+   (t
+    (muse-insert-markup "<p>"))))
+
+(defun muse-xml-finalize-buffer ()
+  (when (boundp 'buffer-file-coding-system)
+    (when (memq buffer-file-coding-system '(no-conversion undecided-unix))
+      ;; make it agree with the default charset
+      (setq buffer-file-coding-system muse-xml-encoding-default))))
+
+;;; Register the Muse XML Publisher
+
+(muse-define-style "xml"
+                   :suffix     'muse-xml-extension
+                   :regexps    'muse-xml-markup-regexps
+                   :functions  'muse-xml-markup-functions
+                   :strings    'muse-xml-markup-strings
+                   :specials   'muse-xml-decide-specials
+                   :after      'muse-xml-finalize-buffer
+                   :header     'muse-xml-header
+                   :footer     'muse-xml-footer
+                   :browser    'find-file)
+
+(provide 'muse-xml)
+
+;;; muse-xml.el ends here
diff --git a/packages/muse/muse.el b/packages/muse/muse.el
new file mode 100644 (file)
index 0000000..7982b46
--- /dev/null
@@ -0,0 +1,881 @@
+;;; muse.el --- Authoring and publishing tool for Emacs
+
+;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
+
+;; Emacs Lisp Archive Entry
+;; Filename: muse.el
+;; Version: 3.20
+;; Date: Sun 31 Jan-2010
+;; Keywords: hypermedia
+;; Author: John Wiegley <johnw@gnu.org>
+;; Maintainer: Michael Olson <mwolson@gnu.org>
+;; Description: An authoring and publishing tool for Emacs
+;; URL: http://mwolson.org/projects/EmacsMuse.html
+;; Compatibility: Emacs21 XEmacs21 Emacs22
+
+;; This file is part of Emacs Muse.  It is not part of GNU Emacs.
+
+;; Emacs Muse is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+
+;; Emacs Muse is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with Emacs Muse; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; Muse is a tool for easily authoring and publishing documents.  It
+;; allows for rapid prototyping of hyperlinked text, which may then be
+;; exported to multiple output formats -- such as HTML, LaTeX,
+;; Texinfo, etc.
+
+;; The markup rules used by Muse are intended to be very friendly to
+;; people familiar with Emacs.  See the included manual for more
+;; information.
+
+;;; Contributors:
+
+;;; Code:
+
+;; Indicate that this version of Muse supports nested tags
+(provide 'muse-nested-tags)
+
+(defvar muse-version "3.20"
+  "The version of Muse currently loaded")
+
+(defun muse-version (&optional insert)
+  "Display the version of Muse that is currently loaded.
+If INSERT is non-nil, insert the text instead of displaying it."
+  (interactive "P")
+  (if insert
+      (insert muse-version)
+    (message muse-version)))
+
+(defgroup muse nil
+  "Options controlling the behavior of Muse.
+The markup used by Muse is intended to be very friendly to people
+familiar with Emacs."
+  :group 'hypermedia)
+
+(defvar muse-under-windows-p (memq system-type '(ms-dos windows-nt)))
+
+(provide 'muse)
+
+(condition-case nil
+    (require 'derived)
+  (error nil))
+(require 'wid-edit)
+(require 'muse-regexps)
+
+(defvar muse-update-values-hook nil
+  "Hook for values that are automatically generated.
+This is to be used by add-on modules for Muse.
+It is run just before colorizing or publishing a buffer.")
+
+(defun muse-update-values ()
+  "Update various values that are automatically generated.
+
+Call this after changing `muse-project-alist'."
+  (interactive)
+  (run-hooks 'muse-update-values-hook)
+  (dolist (buffer (buffer-list))
+    (when (buffer-live-p buffer)
+      (with-current-buffer buffer
+        (when (derived-mode-p 'muse-mode)
+          (and (boundp 'muse-current-project)
+               (fboundp 'muse-project-of-file)
+               (setq muse-current-project nil)
+               (setq muse-current-project (muse-project-of-file))))))))
+
+;; Default file extension
+
+;; By default, use the .muse file extension.
+;;;###autoload (add-to-list 'auto-mode-alist '("\\.muse\\'" . muse-mode-choose-mode))
+
+;; We need to have this at top-level, as well, so that any Muse or
+;; Planner documents opened during init will just work.
+(add-to-list 'auto-mode-alist '("\\.muse\\'" . muse-mode-choose-mode))
+
+(eval-when-compile
+  (defvar muse-ignored-extensions))
+
+(defvar muse-ignored-extensions-regexp nil
+  "A regexp of extensions to omit from the ending of a Muse page name.
+This is autogenerated from `muse-ignored-extensions'.")
+
+(defun muse-update-file-extension (sym val)
+  "Update the value of `muse-file-extension'."
+  (let ((old (and (boundp sym) (symbol-value sym))))
+    (set sym val)
+    (when (and (featurep 'muse-mode)
+               (or (not (stringp val))
+                   (not (stringp old))
+                   (not (string= old val))))
+      ;; remove old auto-mode-alist association
+      (when (and (boundp sym) (stringp old))
+        (setq auto-mode-alist
+              (delete (cons (concat "\\." old "\\'")
+                            'muse-mode-choose-mode)
+                      auto-mode-alist)))
+      ;; associate the new file extension with muse-mode
+      (when (stringp val)
+        (add-to-list 'auto-mode-alist
+                     (cons (concat "\\." val "\\'")
+                           'muse-mode-choose-mode)))
+      ;; update the ignored extensions regexp
+      (when (fboundp 'muse-update-ignored-extensions-regexp)
+        (muse-update-ignored-extensions-regexp
+         'muse-ignored-extensions muse-ignored-extensions)))))
+
+(defcustom muse-file-extension "muse"
+  "File extension of Muse files.  Omit the period at the beginning.
+If you don't want Muse files to have an extension, set this to nil."
+  :type '(choice
+          (const :tag "None" nil)
+          (string))
+  :set 'muse-update-file-extension
+  :group 'muse)
+
+(defcustom muse-completing-read-function 'completing-read
+  "Function to call when prompting user to choose between a list of options.
+This should take the same arguments as `completing-read'."
+  :type 'function
+  :group 'muse)
+
+(defun muse-update-ignored-extensions-regexp (sym val)
+  "Update the value of `muse-ignored-extensions-regexp'."
+  (set sym val)
+  (if val
+      (setq muse-ignored-extensions-regexp
+            (concat "\\.\\("
+                    (regexp-quote (or muse-file-extension "")) "\\|"
+                    (mapconcat 'identity val "\\|")
+                    "\\)\\'"))
+    (setq muse-ignored-extensions-regexp
+          (if muse-file-extension
+              (concat "\\.\\(" muse-file-extension "\\)\\'")
+            nil))))
+
+(add-hook 'muse-update-values-hook
+          (lambda ()
+            (muse-update-ignored-extensions-regexp
+             'muse-ignored-extensions muse-ignored-extensions)))
+
+(defcustom muse-ignored-extensions '("bz2" "gz" "[Zz]")
+  "A list of extensions to omit from the ending of a Muse page name.
+These are regexps.
+
+Don't put a period at the beginning of each extension unless you
+understand that it is part of a regexp."
+  :type '(repeat (regexp :tag "Extension"))
+  :set 'muse-update-ignored-extensions-regexp
+  :group 'muse)
+
+(defun muse-update-file-extension-after-init ()
+  ;; This is short, but it has to be a function, otherwise Emacs21
+  ;; does not load it properly when running after-init-hook
+  (unless (string= muse-file-extension "muse")
+    (let ((val muse-file-extension)
+          (muse-file-extension "muse"))
+      (muse-update-file-extension 'muse-file-extension val))))
+
+;; Once the user's init file has been processed, determine whether
+;; they want a file extension
+(add-hook 'after-init-hook 'muse-update-file-extension-after-init)
+
+;; URL protocols
+
+(require 'muse-protocols)
+
+;; Helper functions
+
+(defsubst muse-delete-file-if-exists (file)
+  (when (file-exists-p file)
+    (delete-file file)
+    (message "Removed %s" file)))
+
+(defsubst muse-time-less-p (t1 t2)
+  "Say whether time T1 is less than time T2."
+  (or (< (car t1) (car t2))
+      (and (= (car t1) (car t2))
+           (< (nth 1 t1) (nth 1 t2)))))
+
+(eval-when-compile
+  (defvar muse-publishing-current-file nil))
+
+(defun muse-current-file ()
+  "Return the name of the currently visited or published file."
+  (or (and (boundp 'muse-publishing-current-file)
+           muse-publishing-current-file)
+      (buffer-file-name)
+      (concat default-directory (buffer-name))))
+
+(defun muse-page-name (&optional name)
+  "Return the canonical form of a Muse page name.
+
+What this means is that the directory part of NAME is removed,
+and the file extensions in `muse-ignored-extensions' are also
+removed from NAME."
+  (save-match-data
+    (unless (and name (not (string= name "")))
+      (setq name (muse-current-file)))
+    (if name
+        (let ((page (file-name-nondirectory name)))
+          (if (and muse-ignored-extensions-regexp
+                   (string-match muse-ignored-extensions-regexp page))
+              (replace-match "" t t page)
+            page)))))
+
+(defun muse-display-warning (message)
+  "Display the given MESSAGE as a warning."
+  (if (fboundp 'display-warning)
+      (display-warning 'muse message
+                       (if (featurep 'xemacs)
+                           'warning
+                         :warning))
+    (let ((buf (get-buffer-create "*Muse warnings*")))
+      (with-current-buffer buf
+        (goto-char (point-max))
+        (insert "Warning (muse): " message)
+        (unless (bolp)
+          (newline)))
+      (display-buffer buf)
+      (sit-for 0))))
+
+(defun muse-eval-lisp (form)
+  "Evaluate the given form and return the result as a string."
+  (require 'pp)
+  (save-match-data
+    (condition-case err
+        (let ((object (eval (read form))))
+          (cond
+           ((stringp object) object)
+           ((and (listp object)
+                 (not (eq object nil)))
+            (let ((string (pp-to-string object)))
+              (substring string 0 (1- (length string)))))
+           ((numberp object)
+            (number-to-string object))
+           ((eq object nil) "")
+           (t
+            (pp-to-string object))))
+      (error
+       (muse-display-warning (format "%s: Error evaluating %s: %s"
+                                     (muse-page-name) form err))
+       "; INVALID LISP CODE"))))
+
+(defmacro muse-with-temp-buffer (&rest body)
+  "Create a temporary buffer, and evaluate BODY there like `progn'.
+See also `with-temp-file' and `with-output-to-string'.
+
+Unlike `with-temp-buffer', this will never attempt to save the
+temp buffer.  It is meant to be used along with
+`insert-file-contents' or `muse-insert-file-contents'.
+
+The undo feature will be disabled in the new buffer.
+
+If `debug-on-error' is set to t, keep the buffer around for
+debugging purposes rather than removing it."
+  (let ((temp-buffer (make-symbol "temp-buffer")))
+    `(let ((,temp-buffer (generate-new-buffer " *muse-temp*")))
+       (buffer-disable-undo ,temp-buffer)
+       (unwind-protect
+           (if debug-on-error
+               (with-current-buffer ,temp-buffer
+                 ,@body)
+             (condition-case err
+                 (with-current-buffer ,temp-buffer
+                   ,@body)
+               (error
+                (if (and (boundp 'muse-batch-publishing-p)
+                         muse-batch-publishing-p)
+                    (progn
+                      (message "%s: Error occured: %s"
+                               (muse-page-name) err)
+                      (backtrace))
+                  (muse-display-warning
+                   (format (concat "An error occurred while publishing"
+                                   " %s:\n  %s\n\nSet debug-on-error to"
+                                   " `t' if you would like a backtrace.")
+                                 (muse-page-name) err))))))
+         (when (buffer-live-p ,temp-buffer)
+           (with-current-buffer ,temp-buffer
+             (set-buffer-modified-p nil))
+           (unless debug-on-error (kill-buffer ,temp-buffer)))))))
+
+(put 'muse-with-temp-buffer 'lisp-indent-function 0)
+(put 'muse-with-temp-buffer 'edebug-form-spec '(body))
+
+(defun muse-insert-file-contents (filename &optional visit)
+  "Insert the contents of file FILENAME after point.
+Do character code conversion and end-of-line conversion, but none
+of the other unnecessary things like format decoding or
+`find-file-hook'.
+
+If VISIT is non-nil, the buffer's visited filename
+and last save file modtime are set, and it is marked unmodified.
+If visiting and the file does not exist, visiting is completed
+before the error is signaled."
+  (let ((format-alist nil)
+        (after-insert-file-functions nil)
+        (inhibit-file-name-handlers
+         (append '(jka-compr-handler image-file-handler epa-file-handler)
+                 inhibit-file-name-handlers))
+        (inhibit-file-name-operation 'insert-file-contents))
+    (insert-file-contents filename visit)))
+
+(defun muse-write-file (filename &optional nomessage)
+  "Write current buffer into file FILENAME.
+Unlike `write-file', this does not visit the file, try to back it
+up, or interact with vc.el in any way.
+
+If the file was not written successfully, return nil.  Otherwise,
+return non-nil.
+
+If the NOMESSAGE argument is non-nil, suppress the \"Wrote file\"
+message."
+  (when nomessage (setq nomessage 'nomessage))
+  (let ((backup-inhibited t)
+        (buffer-file-name filename)
+        (buffer-file-truename (file-truename filename)))
+    (save-current-buffer
+      (save-restriction
+        (widen)
+        (if (not (file-writable-p buffer-file-name))
+            (prog1 nil
+              (muse-display-warning
+               (format "Cannot write file %s:\n  %s" buffer-file-name
+                       (let ((dir (file-name-directory buffer-file-name)))
+                         (if (not (file-directory-p dir))
+                             (if (file-exists-p dir)
+                                 (format "%s is not a directory" dir)
+                               (format "No directory named %s exists" dir))
+                           (if (not (file-exists-p buffer-file-name))
+                               (format "Directory %s write-protected" dir)
+                             "File is write-protected"))))))
+          (let ((coding-system-for-write
+                 (or (and (boundp 'save-buffer-coding-system)
+                          save-buffer-coding-system)
+                     coding-system-for-write)))
+            (write-region (point-min) (point-max) buffer-file-name
+                          nil nomessage))
+          (when (boundp 'last-file-coding-system-used)
+            (when (boundp 'buffer-file-coding-system-explicit)
+              (setq buffer-file-coding-system-explicit
+                    last-coding-system-used))
+            (if save-buffer-coding-system
+                (setq save-buffer-coding-system last-coding-system-used)
+              (setq buffer-file-coding-system last-coding-system-used)))
+          t)))))
+
+(defun muse-collect-alist (list element &optional test)
+  "Collect items from LIST whose car is equal to ELEMENT.
+If TEST is specified, use it to compare ELEMENT."
+  (unless test (setq test 'equal))
+  (let ((items nil))
+    (dolist (item list)
+      (when (funcall test element (car item))
+        (setq items (cons item items))))
+    items))
+
+(defmacro muse-sort-with-closure (list predicate closure)
+  "Sort LIST, stably, comparing elements using PREDICATE.
+Returns the sorted list.  LIST is modified by side effects.
+PREDICATE is called with two elements of list and CLOSURE.
+PREDICATE should return non-nil if the first element should sort
+before the second."
+  `(sort ,list (lambda (a b) (funcall ,predicate a b ,closure))))
+
+(put 'muse-sort-with-closure 'lisp-indent-function 0)
+(put 'muse-sort-with-closure 'edebug-form-spec '(form function-form form))
+
+(defun muse-sort-by-rating (rated-list &optional test)
+  "Sort RATED-LIST according to the rating of each element.
+The rating is stripped out in the returned list.
+Default sorting is highest-first.
+
+If TEST if specified, use it to sort the list.  The default test is '>."
+  (unless test (setq test '>))
+  (mapcar (function cdr)
+          (muse-sort-with-closure
+            rated-list
+            (lambda (a b closure)
+              (let ((na (numberp (car a)))
+                    (nb (numberp (car b))))
+                (cond ((and na nb) (funcall closure (car a) (car b)))
+                      (na (not nb))
+                      (t nil))))
+            test)))
+
+(defun muse-escape-specials-in-string (specials string &optional reverse)
+  "Apply the transformations in SPECIALS to STRING.
+
+The transforms should form a fully reversible and non-ambiguous
+syntax when STRING is parsed from left to right.
+
+If REVERSE is specified, reverse an already-escaped string."
+  (let ((rules (mapcar (lambda (rule)
+                         (cons (regexp-quote (if reverse
+                                                 (cdr rule)
+                                               (car rule)))
+                               (if reverse (car rule) (cdr rule))))
+                       specials)))
+    (save-match-data
+      (with-temp-buffer
+        (insert string)
+        (goto-char (point-min))
+        (while (not (eobp))
+          (unless (catch 'found
+                    (dolist (rule rules)
+                      (when (looking-at (car rule))
+                        (replace-match (cdr rule) t t)
+                        (throw 'found t))))
+            (forward-char)))
+        (buffer-string)))))
+
+(defun muse-trim-whitespace (string)
+  "Return a version of STRING with no initial nor trailing whitespace."
+  (muse-replace-regexp-in-string
+   (concat "\\`[" muse-regexp-blank "]+\\|[" muse-regexp-blank "]+\\'")
+   "" string))
+
+(defun muse-path-sans-extension (path)
+  "Return PATH sans final \"extension\".
+
+The extension, in a file name, is the part that follows the last `.',
+except that a leading `.', if any, doesn't count.
+
+This differs from `file-name-sans-extension' in that it will
+never modify the directory part of the path."
+  (concat (file-name-directory path)
+          (file-name-nondirectory (file-name-sans-extension path))))
+
+;; The following code was extracted from cl
+
+(defun muse-const-expr-p (x)
+  (cond ((consp x)
+         (or (eq (car x) 'quote)
+             (and (memq (car x) '(function function*))
+                  (or (symbolp (nth 1 x))
+                      (and (eq (and (consp (nth 1 x))
+                                    (car (nth 1 x))) 'lambda) 'func)))))
+        ((symbolp x) (and (memq x '(nil t)) t))
+        (t t)))
+
+(put 'muse-assertion-failed 'error-conditions '(error))
+(put 'muse-assertion-failed 'error-message "Assertion failed")
+
+(defun muse-list* (arg &rest rest)
+  "Return a new list with specified args as elements, cons'd to last arg.
+Thus, `(list* A B C D)' is equivalent to `(nconc (list A B C) D)', or to
+`(cons A (cons B (cons C D)))'."
+  (cond ((not rest) arg)
+        ((not (cdr rest)) (cons arg (car rest)))
+        (t (let* ((n (length rest))
+                  (copy (copy-sequence rest))
+                  (last (nthcdr (- n 2) copy)))
+             (setcdr last (car (cdr last)))
+             (cons arg copy)))))
+
+(defmacro muse-assert (form &optional show-args string &rest args)
+  "Verify that FORM returns non-nil; signal an error if not.
+Second arg SHOW-ARGS means to include arguments of FORM in message.
+Other args STRING and ARGS... are arguments to be passed to `error'.
+They are not evaluated unless the assertion fails.  If STRING is
+omitted, a default message listing FORM itself is used."
+  (let ((sargs
+         (and show-args
+              (delq nil (mapcar
+                         (function
+                          (lambda (x)
+                            (and (not (muse-const-expr-p x)) x)))
+                         (cdr form))))))
+    (list 'progn
+          (list 'or form
+                (if string
+                    (muse-list* 'error string (append sargs args))
+                  (list 'signal '(quote muse-assertion-failed)
+                        (muse-list* 'list (list 'quote form) sargs))))
+          nil)))
+
+;; Compatibility functions
+
+(if (fboundp 'looking-back)
+    (defalias 'muse-looking-back 'looking-back)
+  (defun muse-looking-back (regexp &optional limit &rest ignored)
+    (save-excursion
+      (re-search-backward (concat "\\(?:" regexp "\\)\\=") limit t))))
+
+(eval-and-compile
+  (if (fboundp 'line-end-position)
+      (defalias 'muse-line-end-position 'line-end-position)
+    (defun muse-line-end-position (&optional n)
+      (save-excursion (end-of-line n) (point))))
+
+  (if (fboundp 'line-beginning-position)
+      (defalias 'muse-line-beginning-position 'line-beginning-position)
+    (defun muse-line-beginning-position (&optional n)
+      (save-excursion (beginning-of-line n) (point))))
+
+  (if (fboundp 'match-string-no-properties)
+      (defalias 'muse-match-string-no-properties 'match-string-no-properties)
+    (defun muse-match-string-no-properties (num &optional string)
+      (match-string num string))))
+
+(defun muse-replace-regexp-in-string (regexp replacement text &optional fixedcase literal)
+  "Replace REGEXP with REPLACEMENT in TEXT.
+
+Return a new string containing the replacements.
+
+If fourth arg FIXEDCASE is non-nil, do not alter case of replacement text.
+If fifth arg LITERAL is non-nil, insert REPLACEMENT literally."
+  (cond
+   ((and (featurep 'xemacs) (fboundp 'replace-in-string))
+    (and (fboundp 'replace-in-string)   ; stupid byte-compiler warning
+         (replace-in-string text regexp replacement literal)))
+   ((fboundp 'replace-regexp-in-string)
+    (replace-regexp-in-string regexp replacement text fixedcase literal))
+   (t (error (concat "Neither `replace-in-string' nor "
+                     "`replace-regexp-in-string' was found")))))
+
+(if (fboundp 'add-to-invisibility-spec)
+    (defalias 'muse-add-to-invisibility-spec 'add-to-invisibility-spec)
+  (defun muse-add-to-invisibility-spec (element)
+    "Add ELEMENT to `buffer-invisibility-spec'.
+See documentation for `buffer-invisibility-spec' for the kind of elements
+that can be added."
+    (if (eq buffer-invisibility-spec t)
+        (setq buffer-invisibility-spec (list t)))
+    (setq buffer-invisibility-spec
+          (cons element buffer-invisibility-spec))))
+
+(if (fboundp 'read-directory-name)
+    (defalias 'muse-read-directory-name  'read-directory-name)
+  (defun muse-read-directory-name (prompt &optional dir default-dirname mustmatch initial)
+    "Read directory name - see `read-file-name' for details."
+    (unless dir
+      (setq dir default-directory))
+    (read-file-name prompt dir (or default-dirname
+                                   (if initial (expand-file-name initial dir)
+                                     dir))
+                    mustmatch initial)))
+
+(defun muse-file-remote-p (file)
+  "Test whether FILE specifies a location on a remote system.
+Return non-nil if the location is indeed remote.
+
+For example, the filename \"/user@host:/foo\" specifies a location
+on the system \"/user@host:\"."
+  (cond ((fboundp 'file-remote-p)
+         (file-remote-p file))
+        ((fboundp 'tramp-handle-file-remote-p)
+         (tramp-handle-file-remote-p file))
+        ((and (boundp 'ange-ftp-name-format)
+              (string-match (car ange-ftp-name-format) file))
+         t)
+        (t nil)))
+
+(if (fboundp 'delete-and-extract-region)
+    (defalias 'muse-delete-and-extract-region 'delete-and-extract-region)
+  (defun muse-delete-and-extract-region (start end)
+    "Delete the text between START and END and return it."
+    (prog1 (buffer-substring start end)
+      (delete-region start end))))
+
+(if (fboundp 'delete-dups)
+    (defalias 'muse-delete-dups 'delete-dups)
+  (defun muse-delete-dups (list)
+    "Destructively remove `equal' duplicates from LIST.
+Store the result in LIST and return it.  LIST must be a proper list.
+Of several `equal' occurrences of an element in LIST, the first
+one is kept."
+    (let ((tail list))
+      (while tail
+        (setcdr tail (delete (car tail) (cdr tail)))
+        (setq tail (cdr tail))))
+    list))
+
+;; Set face globally in a predictable fashion
+(defun muse-copy-face (old new)
+  "Copy face OLD to NEW."
+  (if (featurep 'xemacs)
+      (copy-face old new 'all)
+    (copy-face old new)))
+
+;; Widget compatibility functions
+
+(defun muse-widget-type-value-create (widget)
+  "Convert and instantiate the value of the :type attribute of WIDGET.
+Store the newly created widget in the :children attribute.
+
+The value of the :type attribute should be an unconverted widget type."
+  (let ((value (widget-get widget :value))
+        (type (widget-get widget :type)))
+    (widget-put widget :children
+                (list (widget-create-child-value widget
+                                                 (widget-convert type)
+                                                 value)))))
+
+(defun muse-widget-child-value-get (widget)
+  "Get the value of the first member of :children in WIDGET."
+  (widget-value (car (widget-get widget :children))))
+
+(defun muse-widget-type-match (widget value)
+  "Non-nil if the :type value of WIDGET matches VALUE.
+
+The value of the :type attribute should be an unconverted widget type."
+  (widget-apply (widget-convert (widget-get widget :type)) :match value))
+
+;; Link-handling functions and variables
+
+(defun muse-get-link (&optional target)
+  "Based on the match data, retrieve the link.
+Use TARGET to get the string, if it is specified."
+  (muse-match-string-no-properties 1 target))
+
+(defun muse-get-link-desc (&optional target)
+  "Based on the match data, retrieve the link description.
+Use TARGET to get the string, if it is specified."
+  (muse-match-string-no-properties 2 target))
+
+(defvar muse-link-specials
+  '(("[" . "%5B")
+    ("]" . "%5D")
+    ("%" . "%%"))
+  "Syntax used for escaping and unescaping links.
+This allows brackets to occur in explicit links as long as you
+use the standard Muse functions to create them.")
+
+(defun muse-link-escape (text)
+  "Escape characters in TEXT that conflict with the explicit link
+regexp."
+  (when (stringp text)
+    (muse-escape-specials-in-string muse-link-specials text)))
+
+(defun muse-link-unescape (text)
+  "Un-escape characters in TEXT that conflict with the explicit
+link regexp."
+  (when (stringp text)
+    (muse-escape-specials-in-string muse-link-specials text t)))
+
+(defun muse-handle-url (&optional string)
+  "If STRING or point has a URL, match and return it."
+  (if (if string (string-match muse-url-regexp string)
+        (looking-at muse-url-regexp))
+      (match-string 0 string)))
+
+(defcustom muse-implicit-link-functions '(muse-handle-url)
+  "A list of functions to handle an implicit link.
+An implicit link is one that is not surrounded by brackets.
+
+By default, Muse handles URLs only.
+If you want to handle WikiWords, load muse-wiki.el."
+  :type 'hook
+  :options '(muse-handle-url)
+  :group 'muse)
+
+(defun muse-handle-implicit-link (&optional link)
+  "Handle implicit links.  If LINK is not specified, look at point.
+An implicit link is one that is not surrounded by brackets.
+By default, Muse handles URLs only.
+If you want to handle WikiWords, load muse-wiki.el.
+
+This function modifies the match data so that match 0 is the
+link.
+
+The match data is restored after each unsuccessful handler
+function call.  If LINK is specified, only restore at very end.
+
+This behavior is needed because the part of the buffer that
+`muse-implicit-link-regexp' matches must be narrowed to the part
+that is an accepted link."
+  (let ((funcs muse-implicit-link-functions)
+        (res nil)
+        (data (match-data t)))
+    (while funcs
+      (setq res (funcall (car funcs) link))
+      (if res
+          (setq funcs nil)
+        (unless link (set-match-data data))
+        (setq funcs (cdr funcs))))
+    (when link (set-match-data data))
+    res))
+
+(defcustom muse-explicit-link-functions nil
+  "A list of functions to handle an explicit link.
+An explicit link is one [[like][this]] or [[this]]."
+  :type 'hook
+  :group 'muse)
+
+(defun muse-handle-explicit-link (&optional link)
+  "Handle explicit links.  If LINK is not specified, look at point.
+An explicit link is one that looks [[like][this]] or [[this]].
+
+The match data is preserved.  If no handlers are able to process
+LINK, return LINK (if specified) or the 1st match string.  If
+LINK is not specified, it is assumed that Muse has matched
+against `muse-explicit-link-regexp' before calling this
+function."
+  (let ((funcs muse-explicit-link-functions)
+        (res nil))
+    (save-match-data
+      (while funcs
+        (setq res (funcall (car funcs) link))
+        (if res
+            (setq funcs nil)
+          (setq funcs (cdr funcs)))))
+    (muse-link-unescape
+     (if res
+         res
+       (or link (muse-get-link))))))
+
+;; Movement functions
+
+(defun muse-list-item-type (str)
+  "Determine the type of list given STR.
+Returns either 'ul, 'ol, 'dl-term, 'dl-entry, or nil."
+  (save-match-data
+    (cond ((or (string= str "")
+               (< (length str) 2))
+           nil)
+          ((string-match muse-dl-entry-regexp str)
+           'dl-entry)
+          ((string-match muse-dl-term-regexp str)
+           'dl-term)
+          ((string-match muse-ol-item-regexp str)
+           'ol)
+          ((string-match muse-ul-item-regexp str)
+           'ul)
+          (t nil))))
+
+(defun muse-list-item-critical-point (&optional offset)
+  "Figure out where the important markup character for the
+currently-matched list item is.
+
+If OFFSET is specified, it is the number of groupings outside of
+the contents of `muse-list-item-regexp'."
+  (unless offset (setq offset 0))
+  (if (match-end (+ offset 2))
+      ;; at a definition list
+      (match-end (+ offset 2))
+    ;; at a different kind of list
+    (match-beginning (+ offset 1))))
+
+(defun muse-forward-paragraph (&optional pattern)
+  "Move forward safely by one paragraph, or according to PATTERN."
+  (when (get-text-property (point) 'muse-end-list)
+    (goto-char (next-single-property-change (point) 'muse-end-list)))
+  (setq pattern (if pattern
+                    (concat "^\\(?:" pattern "\\|\n\\|\\'\\)")
+                  "^\\s-*\\(\n\\|\\'\\)"))
+  (let ((next-list-end (or (next-single-property-change (point) 'muse-end-list)
+                           (point-max))))
+    (forward-line 1)
+    (if (re-search-forward pattern nil t)
+        (goto-char (match-beginning 0))
+      (goto-char (point-max)))
+    (when (> (point) next-list-end)
+      (goto-char next-list-end))))
+
+(defun muse-forward-list-item-1 (type empty-line indented-line)
+  "Determine whether a nested list item is after point."
+  (if (match-beginning 1)
+      ;; if we are given a dl entry, skip past everything on the same
+      ;; level, except for other dl entries
+      (and (eq type 'dl-entry)
+           (not (eq (char-after (match-beginning 2)) ?\:)))
+    ;; blank line encountered with no list item on the same
+    ;; level after it
+    (let ((beg (point)))
+      (forward-line 1)
+      (if (save-match-data
+            (and (looking-at indented-line)
+                 (not (looking-at empty-line))))
+          ;; found that this blank line is followed by some
+          ;; indentation, plus other text, so we'll keep
+          ;; going
+          t
+        (goto-char beg)
+        nil))))
+
+(defun muse-forward-list-item (type indent &optional no-skip-nested)
+  "Move forward to the next item of TYPE.
+Return non-nil if successful, nil otherwise.
+The beginning indentation is given by INDENT.
+
+If NO-SKIP-NESTED is non-nil, do not skip past nested items.
+Note that if you desire this behavior, you will also need to
+provide a very liberal INDENT value, such as
+\(concat \"[\" muse-regexp-blank \"]*\")."
+  (let* ((list-item (format muse-list-item-regexp indent))
+         (empty-line (concat "^[" muse-regexp-blank "]*\n"))
+         (indented-line (concat "^" indent "[" muse-regexp-blank "]"))
+         (list-pattern (concat "\\(?:" empty-line "\\)?"
+                               "\\(" list-item "\\)")))
+    (while (progn
+             (muse-forward-paragraph list-pattern)
+             ;; make sure we don't go past boundary
+             (and (not (or (get-text-property (point) 'muse-end-list)
+                           (>= (point) (point-max))))
+                  ;; move past markup that is part of another construct
+                  (or (and (match-beginning 1)
+                           (or (get-text-property
+                                (muse-list-item-critical-point 1) 'muse-link)
+                               (and (derived-mode-p 'muse-mode)
+                                    (get-text-property
+                                     (muse-list-item-critical-point 1)
+                                     'face))))
+                      ;; skip nested items
+                      (and (not no-skip-nested)
+                           (muse-forward-list-item-1 type empty-line
+                                                     indented-line))))))
+    (cond ((or (get-text-property (point) 'muse-end-list)
+               (>= (point) (point-max)))
+           ;; at a list boundary, so stop
+           nil)
+          ((let ((str (when (match-beginning 2)
+                        ;; get the entire line
+                        (save-excursion
+                          (goto-char (match-beginning 2))
+                          (buffer-substring (muse-line-beginning-position)
+                                            (muse-line-end-position))))))
+             (and str (eq type (muse-list-item-type str))))
+           ;; same type, so indicate that there are more items to be
+           ;; parsed
+           (goto-char (match-beginning 1)))
+          (t
+           (when (match-beginning 1)
+             (goto-char (match-beginning 1)))
+           ;; move to just before foreign list item markup
+           nil))))
+
+(defun muse-goto-tag-end (tag nested)
+  "Move forward past the end of TAG.
+
+If NESTED is non-nil, look for other instances of this tag that
+may be nested inside of this tag, and skip past them."
+  (if (not nested)
+      (search-forward (concat "</" tag ">") nil t)
+    (let ((nesting 1)
+          (tag-regexp (concat "\\(<\\(/?\\)" tag "\\([ >]\\)\\)"))
+          (match-found nil))
+      (while (and (> nesting 0)
+                  (setq match-found (re-search-forward tag-regexp nil t)))
+        ;; for the sake of font-locking code, skip matches in comments
+        (unless (get-text-property (match-beginning 0) 'muse-comment)
+          (if (string-equal (match-string 2) "/")
+              (and (string-equal (match-string 3) ">")
+                   (setq nesting (1- nesting)))
+            (setq nesting (1+ nesting)))))
+      match-found)))
+
+;;; muse.el ends here
diff --git a/packages/muse/muse.info b/packages/muse/muse.info
new file mode 100644 (file)
index 0000000..28bd20d
--- /dev/null
@@ -0,0 +1,4656 @@
+This is muse.info, produced by makeinfo version 4.13 from muse.texi.
+
+INFO-DIR-SECTION Emacs
+START-INFO-DIR-ENTRY
+* Muse: (muse). Authoring and publishing environment for Emacs.
+END-INFO-DIR-ENTRY
+
+   This manual is for Emacs Muse version 3.20.
+
+   Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010  Free
+Software Foundation, Inc.
+
+     Permission is granted to copy, distribute and/or modify this
+     document under the terms of the GNU Free Documentation License,
+     Version 1.2 or any later version published by the Free Software
+     Foundation; with no Invariant Sections, with the Front-Cover texts
+     being "A GNU Manual", and with the Back-Cover Texts as in (a)
+     below.  A copy of the license is included in the section entitled
+     "GNU Free Documentation License" in this manual.
+
+     (a) The FSF's Back-Cover Text is: "You have freedom to copy and
+     modify this GNU Manual, like GNU software.  Copies published by
+     the Free Software Foundation raise funds for GNU development."
+
+     This document is part of a collection distributed under the GNU
+     Free Documentation License.  If you want to distribute this
+     document separately from the collection, you can do so by adding a
+     copy of the license to the document, as described in section 6 of
+     the license.
+
+     All Emacs Lisp code contained in this document may be used,
+     distributed, and modified without restriction.
+
+\1f
+File: muse.info,  Node: Top,  Next: Preface,  Prev: (dir),  Up: (dir)
+
+Muse
+****
+
+This manual is for Emacs Muse version 3.20.
+
+   Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010  Free
+Software Foundation, Inc.
+
+     Permission is granted to copy, distribute and/or modify this
+     document under the terms of the GNU Free Documentation License,
+     Version 1.2 or any later version published by the Free Software
+     Foundation; with no Invariant Sections, with the Front-Cover texts
+     being "A GNU Manual", and with the Back-Cover Texts as in (a)
+     below.  A copy of the license is included in the section entitled
+     "GNU Free Documentation License" in this manual.
+
+     (a) The FSF's Back-Cover Text is: "You have freedom to copy and
+     modify this GNU Manual, like GNU software.  Copies published by
+     the Free Software Foundation raise funds for GNU development."
+
+     This document is part of a collection distributed under the GNU
+     Free Documentation License.  If you want to distribute this
+     document separately from the collection, you can do so by adding a
+     copy of the license to the document, as described in section 6 of
+     the license.
+
+     All Emacs Lisp code contained in this document may be used,
+     distributed, and modified without restriction.
+
+* Menu:
+
+* Preface::                     About the documentation.
+* Introduction::                What is Muse?
+* Obtaining Muse::              How to get Muse releases and development
+                                  changes.
+* Installation::                Compiling and installing Muse.
+* Getting Started::             Setting up Muse and editing files.
+* Projects::                    Creating and managing Muse projects.
+* Keystroke Summary::           Keys used in Muse mode.
+* Markup Rules::                Rules for using markup.
+* Publishing Styles::           Publishing various types of documents.
+* Extending Muse::              Making your own publishing styles.
+* Miscellaneous::               Miscellaneous add-ons, like a minor mode.
+* Getting Help and Reporting Bugs::
+* History::                     History of this document.
+* Contributors::                Contributors to this documentation.
+* GNU Free Documentation License::  The license for this documentation.
+* Concept Index::               Search for terms.
+
+ --- The Detailed Node Listing ---
+
+How to Get Muse Releases and Development Changes
+
+* Releases::                    Released versions of Muse.
+* Development::                 Latest unreleased development changes.
+
+Getting Started
+
+* Loading Muse::                How to load Muse.
+* Using Muse Mode::             How to edit files in Muse.
+* Publishing Files Overview::   Publishing a single file or project.
+* File Extensions::             Using a different file extension.
+
+Creating and Managing Muse Projects
+
+* Single Project::              A single-project example.
+* Multiple Projects::           A multiple-project example.
+* Projects and Subdirectories::  Publishing subdirectories in projects.
+* Options for Projects::        Listing of available options for projects.
+
+Rules for Using Markup
+
+* Paragraphs::                  Paragraphs: centering and quoting.
+* Headings::                    Levels of headings.
+* Directives::                  Directives at the beginning of a
+                                  document.
+* Emphasizing Text::            Bold, italicized, and underlined text.
+* Footnotes::                   Making notes to be shown at the end.
+* Verse::                       Indicating poetic stanzas.
+* Lists::                       Lists of items.
+* Tables::                      Generation of data tables.
+* Explicit Links::              Hyperlinks and email addresses with
+                                  descriptions.
+* Implicit Links::              Bare URLs, WikiNames, and InterWiki
+                                  links.
+* Images::                      Publishing and displaying images.
+* Horizontal Rules and Anchors::  Inserting a horizontal line or anchor.
+* Embedded Lisp::               Evaluating Emacs Lisp code in documents
+                                  for extensibility.
+* Citations::                   Support for citing other resources.
+* Comments::                    Lines to omit from published output.
+* Tag Summary::                 Tags that Muse recognizes.
+
+Publishing Various Types of Documents
+
+* Blosxom::                     Integrating Muse and pyblosxom.cgi.
+* Book::                        Publishing entries into a compilation.
+* ConTeXt::                     Publishing ConTeXt documents.
+* DocBook::                     Publishing in DocBook XML form.
+* HTML::                        Publishing in HTML or XHTML form.
+* Ikiwiki::                     Integrating with ikiwiki.
+* Journal::                     Keeping a journal or blog.
+* LaTeX::                       Publishing LaTeX documents.
+* Poem::                        Publish a poem to LaTeX or PDF.
+* Texinfo::                     Publish entries to Texinfo format or PDF.
+* XML::                         Publish entries to XML.
+
+Integrating Muse and pyblosxom.cgi
+
+* Blosxom Requirements::        Other tools needed for the Blosxom style.
+* Blosxom Entries::             Format of a Blosxom entry and automation.
+* Blosxom Options::             Blosxom styles and options provided.
+
+Making your own publishing styles
+
+* Markup Functions::            Specifying functions to mark up text.
+* Markup Regexps::              Markup rules for publishing.
+* Markup Strings::              Strings specific to a publishing style.
+* Markup Tags::                 Tag specifications for special markup.
+* Style Elements::              Parameters used for defining styles.
+* Deriving Styles::             Deriving a new style from an existing
+                                  one.
+
+Miscellaneous add-ons, like a minor mode
+
+* Muse List Edit Minor Mode::   Edit lists easily in other major modes.
+
+\1f
+File: muse.info,  Node: Preface,  Next: Introduction,  Prev: Top,  Up: Top
+
+1 About the documentation
+*************************
+
+This document describes Muse, which was written by John Wiegley and is
+now maintained by Michael Olson.  Several versions of this manual are
+available on-line.
+
+   * PDF: http://mwolson.org/static/doc/muse.pdf
+
+   * HTML (single file): http://mwolson.org/static/doc/muse.html
+
+   * HTML (multiple files): http://mwolson.org/static/doc/muse/
+
+\1f
+File: muse.info,  Node: Introduction,  Next: Obtaining Muse,  Prev: Preface,  Up: Top
+
+2 What is Muse?
+***************
+
+Emacs Muse (also known as "Muse" or "Emacs-Muse") is an authoring and
+publishing environment for Emacs.  It simplifies the process of writing
+documents and publishing them to various output formats.
+
+   Muse consists of two main parts: an enhanced text-mode for authoring
+documents and navigating within Muse projects, and a set of publishing
+styles for generating different kinds of output.
+
+   What makes Muse distinct from other text-publishing systems is a
+modular environment, with a rather simple core, in which "styles" are
+derived from to create new styles.  Much of Muse's overall
+functionality is optional.  For example, you can use the publisher
+without the major-mode, or the mode without doing any publishing; or if
+you don't load the Texinfo or LaTeX modules, those styles won't be
+available.
+
+   The Muse codebase is a departure from emacs-wiki.el version 2.44. The
+code has been restructured and rewritten, especially its publishing
+functions.  The focus in this revision is on the authoring and
+publishing aspects, and the "wikiness" has been removed as a default
+behavior (available in the optional `muse-wiki' module).  CamelCase
+words are no longer special by default.
+
+   One of the principal aims in the development of Muse is to make it
+very easy to produce good-looking, standards-compliant documents.
+
+\1f
+File: muse.info,  Node: Obtaining Muse,  Next: Installation,  Prev: Introduction,  Up: Top
+
+3 How to Get Muse Releases and Development Changes
+**************************************************
+
+* Menu:
+
+* Releases::                    Released versions of Muse.
+* Development::                 Latest unreleased development changes.
+
+\1f
+File: muse.info,  Node: Releases,  Next: Development,  Prev: Obtaining Muse,  Up: Obtaining Muse
+
+3.1 Released versions of Muse
+=============================
+
+Choose to install a release if you want to minimize risk.
+
+   Errors are corrected in development first.  User-visible changes
+will be announced on the <muse-el-discuss@gna.org> mailing list.  *Note
+Getting Help and Reporting Bugs::.
+
+   Debian users can get Muse via apt-get.  The `muse-el' package is
+available both at Michael Olson's APT repository and the official Debian
+repository.  To make use of the former, add the following line to your
+`/etc/apt/sources.list' file and run `apt-get install muse'.
+
+     deb http://mwolson.org/debian/ ./
+
+   Ubuntu users can also get Muse via apt-get.  The `muse-el' package
+is available both at Michael Olson's APT repository and the official
+Ubuntu repository.  To make use of the former, add the following line to
+your `/etc/apt/sources.list' file and run `apt-get install muse'.
+
+     deb http://mwolson.org/ubuntu/ ./
+
+   The reason for making separate Debian and Ubuntu packages is that
+this manual is under the GFDL, and Debian will not allow it to be
+distributed in its main repository.  Ubuntu, on the other hand, permits
+this manual to be included with the `muse-el' package.
+
+   Alternatively, you can download the latest release from
+`http://download.gna.org/muse-el/' .
+
+\1f
+File: muse.info,  Node: Development,  Prev: Releases,  Up: Obtaining Muse
+
+3.2 Latest unreleased development changes
+=========================================
+
+Choose the development version if you want to live on the bleeding edge
+of Muse development or try out new features before release.
+
+   The git version control system allows you to keep up-to-date with the
+latest changes to the development version of Muse.  It also allows you
+to contribute changes (via commits, if you are have developer access to
+the repository, or via patches, otherwise).  If you would like to
+contribute to Muse development, it is highly recommended that you use
+git.
+
+   If you are new to git, you might find this tutorial helpful:
+`http://www.kernel.org/pub/software/scm/git/docs/tutorial.html'.
+
+   Downloading the Muse module with git and staying up-to-date involves
+the following steps.
+
+  1. Install git.
+
+        * Debian and Ubuntu: `apt-get install git-core'.
+
+        * Windows: `http://git.or.cz/gitwiki/WindowsInstall'.
+
+        * Other operating systems: download, compile, and install the
+          source from `http://www.kernel.org/pub/software/scm/git/', or
+          find a git package for your operating system.
+
+  2. Download the Muse development branch.
+
+     If you have developer access to Muse, do:
+
+          git clone ssh://repo.or.cz/srv/git/muse-el.git muse
+
+     otherwise, do:
+
+          git clone git://repo.or.cz/muse-el.git muse
+
+     If you are behind a restrictive firewall, and do not have developer
+     access, then do the following instead:
+
+          git clone http://repo.or.cz/r/muse-el.git muse
+
+  3. List upstream changes that are missing from your local copy.  Do
+     this whenever you want to see whether new changes have been
+     committed to Muse.  If you wish, you may skip this step and
+     proceed directly to the "update" step.
+
+          # Change to the source directory you are interested in.
+          cd muse
+
+          # Fetch new changes from the repository, but don't apply them yet
+          git fetch origin
+
+          # Display log messages for the new changes
+          git log HEAD..origin
+
+     "origin" is git's name for the location where you originally got
+     Muse from.  You can change this location at any time by editing the
+     `.git/config' file in the directory where the Muse source was
+     placed.
+
+  4. Update to the latest version by pulling in any missing changes.
+
+          cd muse
+          git pull origin
+
+     git will show how many files changed, and will provide a visual
+     display for how many lines were changed in each file.
+
+
+   There are other ways to interact with the Muse repository.
+
+   * Browse git repo: `http://repo.or.cz/w/muse-el.git'
+
+   * Latest development snapshot:
+     `http://mwolson.org/static/dist/muse-latest.tar.gz'
+
+   * Latest development snapshot (zip file):
+     `http://mwolson.org/static/dist/muse-latest.zip'
+
+   The latest development snapshot can lag behind the git repo by as
+much as 20 minutes, but never more than that.
+
+Becoming a Muse developer
+-------------------------
+
+If you want commit access to the shared Muse repository, then register
+an account at `http://repo.or.cz' (be sure to add an SSH key), and
+contact the current maintainer at <mwolson@gnu.org>.  It would be best
+to send some patches to the <muse-el-discuss@gna.org> mailing list
+first, so that he knows that you know what you are doing.  *Note
+Getting Help and Reporting Bugs::, for instructions on subscribing to
+the mailing list.
+
+   You must also be willing to sign a copyright assignment for your
+changes to Muse, since Muse is a GNU project.  The current maintainer
+will assist you in this process if you contact him.
+
+   For information on committing changes to Muse and performing
+development, please consult
+`http://emacswiki.org/cgi-bin/wiki/MuseDevelopment'.
+
+\1f
+File: muse.info,  Node: Installation,  Next: Getting Started,  Prev: Obtaining Muse,  Up: Top
+
+4 Compiling and Installing Muse
+*******************************
+
+Muse may be compiled and installed on your machine.
+
+Compilation
+-----------
+
+This is an optional step, since Emacs Lisp source code does not
+necessarily have to be byte-compiled.  Byte-compilation may yield a very
+slight speed increase.
+
+   A working copy of Emacs or XEmacs is needed in order to compile Emacs
+Muse.  By default, the program that is installed with the name `emacs'
+will be used.
+
+   If you want to use the `xemacs' binary to perform the compilation,
+you must copy `Makefile.defs.default' to `Makefile.defs' in the
+top-level directory, and then edit `Makefile.defs' as follows.  You can
+put either a full path to an Emacs or XEmacs binary or just the command
+name, as long as it is in the `PATH'.
+
+     EMACS    = xemacs
+     SITEFLAG = -no-site-file
+     # Edit the section as necessary
+     install_info = install-info --section "XEmacs 21.4" $(1).info \
+             $(INFODIR)/dir || :
+
+   Running `make' in the top-level directory should compile the Muse
+source files in the `lisp' directory, and generate an autoloads file in
+`lisp/muse-autoloads.el'.
+
+Installation
+------------
+
+Muse may be installed into your file hierarchy by doing the following.
+
+   Copy `Makefile.defs.default' to `Makefile.defs' in the top-level
+directory, if you haven't done so already.  Then edit the
+`Makefile.defs' file so that `ELISPDIR' points to where you want the
+source and compiled Muse files to be installed and `INFODIR' indicates
+where to put the Muse manual.  You may use a combination of `DESTDIR'
+and `PREFIX' to further determine where the installed files should be
+placed.  As mentioned earlier, you will want to edit `EMACS' and
+`SITEFLAG' as shown in the Compilation section if you are using XEmacs.
+
+   If you are installing Muse on a Debian or Ubuntu system, you might
+want to change the value of `INSTALLINFO' as specified in
+`Makefile.defs'.
+
+   If you wish to install Muse to different locations than the defaults
+specify, edit `Makefile.defs' accordingly.
+
+   Run `make' as a normal user, if you haven't done so already.
+
+   Run `make install' as the root user if you have chosen installation
+locations that require root permissions.
+
+ELPA
+----
+
+For those used to installing software packages, there will be a `muse'
+package available in the Emacs Lisp Package Archive (abbreviated
+"ELPA") as of the 3.10 release of Muse.  This package will be compiled
+and installed automatically in a user-specific location.  For more
+information on ELPA, see `http://tromey.com/elpa/'.
+
+\1f
+File: muse.info,  Node: Getting Started,  Next: Projects,  Prev: Installation,  Up: Top
+
+5 Getting Started
+*****************
+
+* Menu:
+
+* Loading Muse::                How to load Muse.
+* Using Muse Mode::             How to edit files in Muse.
+* Publishing Files Overview::   Publishing a single file or project.
+* File Extensions::             Using a different file extension.
+
+\1f
+File: muse.info,  Node: Loading Muse,  Next: Using Muse Mode,  Prev: Getting Started,  Up: Getting Started
+
+5.1 How to Load Muse
+====================
+
+To use Muse, add the directory containing its files to your `load-path'
+variable, in your `.emacs' file.  Then, load in the authoring mode, and
+the styles you wish to publish to.  An example follows.
+
+     (add-to-list 'load-path "<path to Muse>")
+
+     (require 'muse-mode)     ; load authoring mode
+
+     (require 'muse-html)     ; load publishing styles I use
+     (require 'muse-latex)
+     (require 'muse-texinfo)
+     (require 'muse-docbook)
+
+     (require 'muse-project)  ; publish files in projects
+
+   An easy way of seeing which settings are available and changing
+settings is to use the Muse customization interface.  To do this, type
+`M-x customize-group muse RET'.  Each of the options has its own
+documentation.  Options are grouped logically according to what effect
+they have.
+
+\1f
+File: muse.info,  Node: Using Muse Mode,  Next: Publishing Files Overview,  Prev: Loading Muse,  Up: Getting Started
+
+5.2 How to Edit Files in Muse
+=============================
+
+Muse Mode should automatically be activated when you visit a file with a
+".muse" extension.  One such file is `QuickStart.muse', which is
+available in the `examples' directory of the Muse distribution.  You
+can tell that Muse Mode has been activated by checking for the text
+"Muse" in your mode line.  If Muse Mode has not been activated, you may
+activate it by type `M-x muse-mode RET'.
+
+   You will notice that Muse files are highlighted very simply.  Links
+are colored blue, headings are large and bold text, and <example> tags
+are colored in grey.
+
+   There are several different ways to edit things like links, which
+hide the underlying Muse markup.  One way is to toggle font-locking off
+by hitting `C-c C-l', which is also `M-x font-lock-mode', make changes,
+and then hit `C-c C-l' again to toggle font-locking back on.  Another
+way is just to move into the text and edit it.  Markup can also be
+removed by normal deletion methods, though some side effects might
+require a second deletion.
+
+   For the particular case of editing links, it is easiest to move to
+the link and do `C-c C-e', which is also `M-x muse-edit-link-at-point'.
+This prompts you for the link and its description, using the previous
+contents of the link as initial values.  A link to another Muse file
+may be created by hitting `C-c TAB l'.  A link to a URL may be created
+by hitting `C-c TAB u'.  Links may be followed by hitting `RET' on them.
+
+   If you want to add a new list item, this may by accomplished by
+hitting `M-RET'.  This will put a dash and some spaces on the screen.
+The dash is the Muse markup that indicates a list item.  It is also
+possible to created "nested" lists with this command, by adjusting the
+number of spaces in front of the dashes.  If you have lists with long
+lines, you can move to a list item and hit `M-q' to wrap it onto
+multiple lines.
+
+\1f
+File: muse.info,  Node: Publishing Files Overview,  Next: File Extensions,  Prev: Using Muse Mode,  Up: Getting Started
+
+5.3 Publishing a Single File or Project
+=======================================
+
+The command `M-x muse-project-publish-this-file' will publish the
+current document to any available publishing style (a publishing style
+is an output format, like HTML or Docbook), placing the output in the
+current directory.  If you are in Muse Mode, this command will be bound
+to `C-c C-t'.  If the file has been published recently, and its
+contents have not changed, running `C-c C-t' again will not publish the
+file.  To force publishing in this case, do `C-u C-c C-t'.
+
+   If you have set up projects and are visiting a file that is part of a
+project, then `C-c C-t' will restrict the output formats to those which
+are used by the project, and will automatically publish to the output
+directory defined by the project.  If you want to publish to a
+different directory or use a different format, then use `C-c M-C-t',
+which is also `M-x muse-publish-this-file'.
+
+   If the currently opened file is part of a defined project in
+`muse-project-alist', it (and the rest of the changed files in a
+project) may be published using `C-c C-p'.
+
+\1f
+File: muse.info,  Node: File Extensions,  Prev: Publishing Files Overview,  Up: Getting Started
+
+5.4 Using a Different File Extension
+====================================
+
+By default, Muse expects all project files to have the file extension
+`.muse'. Files without this extension will not be associated with Muse
+mode and will not be considered part of any project, even if they are
+within a project directory.
+
+   If you don't want to use `.muse', you can customize the extension by
+setting the value of `muse-file-extension'.
+
+   If you don't want to use any extension at all, and want Muse to
+autodetect project files based on their location, then add the following
+to your Muse settings file.
+
+     (setq muse-file-extension nil
+           muse-mode-auto-p t)
+
+   Note that if you chose to have `muse-file-extension' set to `nil',
+you may have trouble if your `.emacs' file or other init scripts
+attempt to visit a Muse file.  (A very common example of this is if you
+use Planner with Muse and run `(plan)' from your `.emacs'.)  If you
+wish to visit Muse files from your `.emacs', be sure to also add the
+following additional code before any such visits happen:
+
+     (add-hook 'find-file-hooks 'muse-mode-maybe)
+
+\1f
+File: muse.info,  Node: Projects,  Next: Keystroke Summary,  Prev: Getting Started,  Up: Top
+
+6 Creating and Managing Muse Projects
+*************************************
+
+Often you will want to publish all the files within a directory to a
+particular set of output styles automatically.  To support, Muse allows
+for the creation of "projects".
+
+* Menu:
+
+* Single Project::              A single-project example.
+* Multiple Projects::           A multiple-project example.
+* Projects and Subdirectories::  Publishing subdirectories in projects.
+* Options for Projects::        Listing of available options for projects.
+
+\1f
+File: muse.info,  Node: Single Project,  Next: Multiple Projects,  Prev: Projects,  Up: Projects
+
+6.1 A Single-Project Example
+============================
+
+Here is a sample project, which may be defined in your `.emacs' file.
+
+     (setq muse-project-alist
+           '(("Website" ("~/Pages" :default "index")
+              (:base "html" :path "~/public_html")
+              (:base "pdf" :path "~/public_html/pdf"))))
+
+   The above defines a project named "website", whose files are located
+in the directory `~/Pages'.  The default page to visit is `index'.
+When this project is published, each page will be output as HTML to the
+directory `~/public_html', and as PDF to the directory
+`~/public_html/pdf'.  Within any project page, you may create a link to
+other pages using the syntax `[[pagename]]'.
+
+   If you would like to include only some files from a directory in a
+Muse project, you may use a regexp in place of `~/Pages' in the example.
+
+\1f
+File: muse.info,  Node: Multiple Projects,  Next: Projects and Subdirectories,  Prev: Single Project,  Up: Projects
+
+6.2 A Multiple-Project Example
+==============================
+
+It is possible to specify multiple projects.  Here is an example of
+three projects: a generic website, a projects area, and a day-planner
+(the day-planner part requires Planner Mode--see
+`http://wjsullivan.net/PlannerMode.html' to get it).
+
+     (setq muse-project-alist
+           '(("Website" ("~/Pages" :default "index")
+              (:base "html" :path "~/public_html"))
+             (("Projects" ("~/Projects" :default "index")
+              (:base "xhtml"
+                     :path "~/public_html/projects"
+                     :exclude "/TopSecret")
+              (:base "pdf"
+                     :path "~/public_html/projects/pdf"
+                     :exclude "/TopSecret")))
+             ("Plans" ("~/Plans"
+                       :default "TaskPool"
+                       :major-mode planner-mode
+                       :visit-link planner-visit-link)
+              (:base "planner-xhtml"
+                     :path "~/public_html/plans"))))
+
+   The `:major-mode' attribute specifies which major to use when
+visiting files in this directory.
+
+   The `:visit-link' attribute specifies the function to call when
+visiting links.
+
+   The `:exclude' attribute has a regexp that matches files to never
+publish.
+
+\1f
+File: muse.info,  Node: Projects and Subdirectories,  Next: Options for Projects,  Prev: Multiple Projects,  Up: Projects
+
+6.3 Publishing Subdirectories in Projects
+=========================================
+
+If you want to publish a directory and all of its subdirectories, Muse
+provides two convenience functions that together generate the proper
+rules for you.  Note that we use the backtick to begin this
+muse-project-alist definition, rather than a single quote.
+
+     (setq muse-project-alist
+           `(("Website" ("~/Pages" :default "index")
+              (:base "html" :path "~/public_html"))
+             ("Blog" (,@(muse-project-alist-dirs "~/Blog")
+                      :default "index")
+              ;; Publish this directory and its subdirectories.  Arguments
+              ;; are as follows.  The above `muse-project-alist-dirs' part
+              ;; is also needed.
+              ;;   1. Source directory
+              ;;   2. Output directory
+              ;;   3. Publishing style
+              ;;   remainder: Other things to put in every generated style
+              ,@(muse-project-alist-styles "~/Blog"
+                                           "~/public_html/blog"
+                                           "blosxom"))))
+
+   The `muse-project-alist-dirs' function takes a directory and returns
+it and all of its subdirectories in a list.
+
+   The `muse-project-alist-styles' function is explained by the
+comments above.
+
+   The "blosxom" text is the name of another publishing style, much like
+"html".  *Note Blosxom::, for further information about it.  You can
+use any publishing style you like for the third argument to
+`muse-project-alist-styles'.
+
+\1f
+File: muse.info,  Node: Options for Projects,  Prev: Projects and Subdirectories,  Up: Projects
+
+6.4 Listing of Available Options for Projects
+=============================================
+
+This is a listing of all of the various options (or, more accurately:
+attributes) that may be specified in `muse-project-alist'.
+
+   Each muse-project-alist entry looks like this:
+
+       (PROJECT-NAME (SOURCES)
+         OUTPUTS)
+
+   We refer to these names below.
+
+   "Attributes", which compose SOURCES and OUTPUTS, are a pair of
+values.  The first value is a keyword, like `:default'.  The second part
+is the value associated with that keyword, such as the text "index".
+If you are familiar with Emacs Lisp property lists, the concept is
+similar to that, except that in the SOURCES section, single directories
+can be interspersed with two-value attributes.
+
+Project Name
+------------
+
+This is a string that indicates the name of the project.  It is
+primarily used for publishing interwiki links with the `muse-wiki.el'
+module.
+
+Sources
+-------
+
+This part of a muse-project-alist entry consists of two-value
+attributes, and also directory names.  If you are publishing a book, the
+order of directories and attributes is significant.
+
+   The minimal content for the sources section is a list of directories.
+
+`:book-chapter'
+     Indicates a new chapter of a book.  The text of the title of the
+     chapter comes immediately after this keyword.
+
+`:book-end'
+     Indicates the end of a book.  Directories listed after this one are
+     ignored when publishing a book.  The value "t" (without quotes)
+     should come immediately after this keyword.
+
+`:book-funcall'
+     A function to call while publishing a book.  This is useful for
+     doing something just after a particular chapter.
+
+`:book-part'
+     Indicates the beginning of a new part of the book.  The text of the
+     title should come immediately after this keyword.
+
+`:book-style'
+     Indicate a particular publishing style to use for this part of the
+     book.  If this is specified, it should come just after a `:part'
+     attribute.
+
+`:default'
+     The default page to visit when browsing a project.  Also, if you
+     are using the `muse-wiki.el' module, publishing a link to just a
+     project's name will cause it to link to this default file.
+
+`:force-publish'
+     This specifies a list of pages which should be published every
+     time a project is published (by using `C-c C-p', for example),
+     regardless of whether their contents have changed.  This is useful
+     for updating Index pages, pages that use the <include> tag, and
+     other pages that have dynamically-generated content.
+
+`:major-mode'
+     This specifies the major mode to use when visiting files in this
+     project.  The default is `muse-mode'.
+
+`:nochapters'
+     This indicates that while publishing a book, do not automatically
+     create chapters.  Values which may follow this are nil (the
+     default, which means that we automatically create chapters), or
+     non-nil, which means that we manually specify chapters with the
+     `:book-chapter' attribute,
+
+`:publish-project'
+     Indicates which function we should call when publishing a project.
+
+`:set'
+     This specifies a list of variables and values to set when
+     publishing a project.  The list should be a property list, which
+     is in the form:
+
+          (VAR1 VALUE1 VAR2 VALUE2 ...)
+
+`:visit-link'
+     Specifies the function to call when visiting a link.  The default
+     is `muse-visit-link-default'.  The arguments for that function
+     should be (1) the link and (2) whether to visit the link in a new
+     window.
+
+
+Outputs
+-------
+
+This part of a muse-project-alist entry is composed of lists of
+attributes.  Each list is called an "output style".
+
+   The minimal content for an output style is a `:base' attribute and a
+`:path' attribute.
+
+`:base'
+     Publishing style to use, such as "html", "docbook", or "pdf".
+
+`:base-url'
+     An external URL which can be used to access published files.  This
+     is mainly used by the `muse-wiki' module when publishing links
+     between two separate projects, if the projects are served on
+     different domains.
+
+     It is also used by the `muse-journal' module to create the RSS or
+     RDF output.
+
+`:exclude'
+     Exclude items matching a regexp from being published.  The regexp
+     should usually begin with "/".
+
+`:include'
+     Only include items matching a regexp when publishing.  The regexp
+     should usually begin with "/".
+
+`:path'
+     The directory in which to store published files.
+
+`:timestamps'
+     A file containing the timestamps (that is, time of creation) for
+     files in this project.  It might eventually used by the
+     `muse-blosxom' module, but this option is not currently in use by
+     any Muse code.
+
+
+\1f
+File: muse.info,  Node: Keystroke Summary,  Next: Markup Rules,  Prev: Projects,  Up: Top
+
+7 Keys Used in Muse Mode
+************************
+
+This is a summary of keystrokes available in every Muse buffer.
+
+`C-c C-a (`muse-index')'
+     Display an index of all known Muse pages.
+
+`C-c C-b (`muse-find-backlinks')'
+     Find all pages that link to this page.
+
+`C-c C-e (`muse-edit-link-at-point')'
+     Edit link at point.
+
+`C-c C-f (`muse-project-find-file')'
+     Open another Muse page.  Prompt for the name.
+
+`C-c C-i l, C-c TAB l (`muse-insert-relative-link-to-file')'
+     Insert a link to a file interactively.
+
+`C-c C-i t, C-c TAB t (`muse-insert-tag')'
+     Insert a tag interactively.
+
+`C-c C-i u, C-c TAB u (`muse-insert-url')'
+     Insert a URL interactively.
+
+`C-c C-l (`font-lock-mode')'
+     Toggle font lock / highlighting for the current buffer.
+
+`C-c C-p (`muse-project-publish')'
+     Publish any Muse pages that have changed.
+
+`C-c C-s (`muse-search')'
+     Find text in all files of the current project.
+
+`C-c C-t (`muse-project-publish-this-file')'
+     Publish the currently-visited file.  Prompt for the style if the
+     current file can be published using more than one style.
+
+`C-c C-S-t, or C-c C-M-t (`muse-publish-this-file')'
+     Publish the currently-visited file.  Prompt for both the style and
+     output directory.
+
+`C-c C-v (`muse-browse-result')'
+     Show the published result of this page.
+
+`C-c = (`muse-what-changed')'
+     Diff this page against the last backup version.
+
+`TAB'
+     Move to the next Wiki reference.
+
+`S-TAB'
+     Move to the previous Wiki reference.
+
+`M-TAB'
+     Complete the name of a page from the current project at point.
+
+`M-RET'
+     Insert a new list item at point, indenting properly.
+
+`C-<'
+     Decrease the indentation of the list item at point.
+
+`C->'
+     Increase the indentation of the list item at point.
+
+`M-x muse-colors-toggle-inline-images RET'
+     Toggle display of inlined images on/off.
+
+`M-x muse-update-values RET'
+     Update various values that are automatically generated.
+
+     Call this after changing `muse-project-alist'.
+
+\1f
+File: muse.info,  Node: Markup Rules,  Next: Publishing Styles,  Prev: Keystroke Summary,  Up: Top
+
+8 Rules for Using Markup
+************************
+
+A Muse document uses special, contextual markup rules to determine how
+to format the output result.  For example, if a paragraph is indented,
+Muse assumes it should be quoted.
+
+   There are not too many markup rules, and all of them strive to be as
+simple as possible so that you can focus on document creation, rather
+than formatting.
+
+* Menu:
+
+* Paragraphs::                  Paragraphs: centering and quoting.
+* Headings::                    Levels of headings.
+* Directives::                  Directives at the beginning of a
+                                  document.
+* Emphasizing Text::            Bold, italicized, and underlined text.
+* Footnotes::                   Making notes to be shown at the end.
+* Verse::                       Indicating poetic stanzas.
+* Lists::                       Lists of items.
+* Tables::                      Generation of data tables.
+* Explicit Links::              Hyperlinks and email addresses with
+                                  descriptions.
+* Implicit Links::              Bare URLs, WikiNames, and InterWiki
+                                  links.
+* Images::                      Publishing and displaying images.
+* Horizontal Rules and Anchors::  Inserting a horizontal line or anchor.
+* Embedded Lisp::               Evaluating Emacs Lisp code in documents
+                                  for extensibility.
+* Citations::                   Support for citing other resources.
+* Comments::                    Lines to omit from published output.
+* Tag Summary::                 Tags that Muse recognizes.
+
+\1f
+File: muse.info,  Node: Paragraphs,  Next: Headings,  Prev: Markup Rules,  Up: Markup Rules
+
+8.1 Paragraphs: centering and quoting
+=====================================
+
+Paragraphs in Muse must be separated by a blank line.
+
+Centered paragraphs and quotations
+----------------------------------
+
+A line that begins with six or more columns of whitespace (either tabs
+or spaces) indicates a centered paragraph.  Alternatively, you can use
+the <center> tag to surround regions that are to be published as
+centered paragraphs.
+
+   But if a line begins with whitespace, though less than six columns,
+it indicates a quoted paragraph.  Alternatively, you can use the
+<quote> tag to surround regions that are to be published as quoted
+paragraphs.
+
+Literal paragraphs
+------------------
+
+The <example> tag is used for examples, where whitespace should be
+preserved, the text rendered in monospace, and any characters special
+to the output style escaped.
+
+   There is also the <literal> tag, which causes a marked block to be
+entirely left alone.  This can be used for inserting a hand-coded HTML
+blocks into HTML output, for example.
+
+   If you want some text to only be inserted when publishing to a
+particular publishing style, use the `style' attribute for the
+<literal> tag.  An example follows.
+
+     <literal style="latex">
+     A LaTeX-based style was used in the publishing of this document.
+     </literal>
+
+   This will leave the region alone if the current publishing style is
+"latex" or based on "latex", such as "pdf", and delete the region
+otherwise.  It is also possible to leave the text alone only for one
+particular style, rather than its derivations, by adding `exact="t"' to
+the tag.
+
+Line breaks
+-----------
+
+If you need a line break, then use the `<br>' tag.  Most of the time
+this tag is unnecessary, because Muse will automatically detect
+paragraphs by means of blank lines.  If you want to preserve newlines in
+several lines of text, then use verse markup instead (*note Verse::).
+
+\1f
+File: muse.info,  Node: Headings,  Next: Directives,  Prev: Paragraphs,  Up: Markup Rules
+
+8.2 Levels of headings
+======================
+
+A heading becomes a chapter or section in printed output - depending on
+the style.  To indicate a heading, start a new paragraph with one or
+more asterices, followed by a space and the heading title.  Then begin
+another paragraph to enter the text for that section.
+
+   All levels of headings will be published.  Most publishing styles
+only distinguish the between the first 4 levels, however.
+
+     * First level
+
+     ** Second level
+
+     *** Third level
+
+     **** Fourth level
+
+\1f
+File: muse.info,  Node: Directives,  Next: Emphasizing Text,  Prev: Headings,  Up: Markup Rules
+
+8.3 Directives at the beginning of a document
+=============================================
+
+Directives are lines beginning with the `#' character that come before
+any paragraphs or sections in the document.  Directives are of the form
+"#directive content of directive".  You can use any combination of
+uppercase and lowercase letters for directives, even if the directive
+is not in the list below.
+
+   The `muse-publishing-directive' function may be used in header and
+footer text to access directives.  For example, to access the `#title'
+directive, use `(muse-publishing-directive "title")'.
+
+   The following is a list of directives that Muse uses.
+
+`#author'
+     The author of this document.
+
+     If this is not specified, Muse will attempt to figure it out from
+     the `user-full-name' variable.
+
+`#date'
+     The date that the document was last modified.
+
+     This is used by publishing styles that are able to embed the date
+     information.
+
+`#desc'
+     A short description of this document.
+
+     This is used by the `journal' publishing style to embed information
+     inside of an RSS/RDF feed.
+
+`#title'
+     The title of this document.
+
+     If this is not specified, the name of the file is used.
+
+
+\1f
+File: muse.info,  Node: Emphasizing Text,  Next: Footnotes,  Prev: Directives,  Up: Markup Rules
+
+8.4 Bold, italicized, and underlined text
+=========================================
+
+To emphasize text, surround it with certain specially recognized
+characters.
+
+     *emphasis*
+     **strong emphasis**
+     ***very strong emphasis***
+     _underlined_
+     =verbatim and monospace=
+
+   While editing a Muse document in Muse mode, these forms of emphasis
+will be highlighted in a WYSIWYG manner.  Each of these forms may span
+multiple lines.
+
+   Verbatim text will be colored as gray by default.  To change this,
+customize `muse-verbatim-face'.
+
+   You can also use the <code> tag to indicate verbatim and monospace
+text.  This is handy for regions that have an "=" in them.
+
+\1f
+File: muse.info,  Node: Footnotes,  Next: Verse,  Prev: Emphasizing Text,  Up: Markup Rules
+
+8.5 Making notes to be shown at the end
+=======================================
+
+A footnote reference is simply a number in square brackets.  To define
+the footnote, place this definition at the bottom of your file.
+`footnote-mode' can be used to greatly facilitate the creation of these
+kinds of footnotes.
+
+   Footnotes are defined by the same number in brackets occurring at the
+beginning of a line.  Use footnote-mode's `C-c ! a' command, to very
+easily insert footnotes while typing.  Use `C-x C-x' to return to the
+point of insertion.
+
+\1f
+File: muse.info,  Node: Verse,  Next: Lists,  Prev: Footnotes,  Up: Markup Rules
+
+8.6 Indicating poetic stanzas
+=============================
+
+Poetry requires that whitespace be preserved, but without resorting to
+monospace.  To indicate this, use the following markup, reminiscent of
+email quotations.
+
+     > A line of Emacs verse;
+     >   forgive its being so terse.
+
+   You can also use the <verse> tag, if you prefer.
+
+     <verse>
+     A line of Emacs verse;
+       forgive its being so terse.
+     </verse>
+
+   Multiple stanzas may be included in one set of <verse> tags, as
+follows.
+
+     <verse>
+     A line of Emacs verse;
+       forgive its being so terse.
+
+     In terms of terse verse,
+       you could do worse.
+     </verse>
+
+\1f
+File: muse.info,  Node: Lists,  Next: Tables,  Prev: Verse,  Up: Markup Rules
+
+8.7 Lists of items
+==================
+
+Lists are given using special characters at the beginning of a line.
+Whitespace must occur before bullets or numbered items, to distinguish
+from the possibility of those characters occurring in a real sentence.
+
+   These are rendered as a bullet list.
+
+     Normal text.
+
+      - bullet item one
+      - bullet item two
+
+   An enumerated list follows.
+
+     Normal text.
+
+      1. Enum item one
+      2. Enum item two
+
+   Here is a definition list.
+
+     Term1 ::
+       This is a first definition
+       And it has two lines;
+       no, make that three.
+
+     Term2 :: This is a second definition
+
+Nested lists
+------------
+
+It is possible to nest lists of the same or different kinds.  The
+"level" of the list is determined by the amount of initial whitespace.
+
+     Normal text.
+
+      - Level 1, bullet item one
+        1. Level 2, enum item one
+        2. Level 2, enum item two
+      - Level 1, bullet item two
+        1. Level 2, enum item three
+        2. Level 2, enum item four
+           term :: definition
+
+Breaking list items
+-------------------
+
+If you want to break up a line within any list type, just put one blank
+line between the end of the previous line and the beginning of the next
+line, using the same amount of initial indentation.
+
+      - bullet item 1, line 1
+
+        bullet item 1, line 2
+
+        1. Enum line 1
+
+           Enum line 2
+
+      - bullet item 2, line 1
+
+        bullet item 2, line 2
+
+\1f
+File: muse.info,  Node: Tables,  Next: Explicit Links,  Prev: Lists,  Up: Markup Rules
+
+8.8 Generation of data tables
+=============================
+
+Only very simple tables are supported.  The syntax is as follows.
+
+     Double bars  || Separate header fields
+
+     Single bars   | Separate body fields
+     Here are more | body fields
+
+     Triple bars ||| Separate footer fields
+
+   Some publishing styles require header fields to come first, then
+footer fields, and then the body fields.  You can use any order for
+these sections that you like, and Muse will re-order them for you at
+publish-time.
+
+   If you wish to disable table generation for one Muse file, add the
+directive `#disable-tables t' to the top of the file.
+
+Other table formats
+-------------------
+
+It is possible to publish very basic Orgtbl-mode style tables.
+
+     | org  | style | table |
+     |------+-------+-------|
+     | one  |       | one   |
+     | two  | two   |       |
+     |      | three | three |
+     |------+-------+-------|
+     | more | stuff |       |
+
+   If you are used to the way that Org Mode publishes these tables, then
+customize `muse-html-table-attributes' to the following, in order to get
+a similar kind of output.
+
+     border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"
+
+   `table.el' style tables are also supported, as long as `table.el'
+itself supports outputting tables for a particular publishing style.
+At the time of this writing, the "html", "latex", and "docbook" styles
+are supported by `table.el'.  Styles derived from these styles will
+also work.
+
+     +---+-----+---+
+     |   | one | 1 |
+     +---+-----+---+
+     | b | two |   |
+     +---+-----+---+
+     | c |     | 3 |
+     +---+-----+---+
+
+\1f
+File: muse.info,  Node: Explicit Links,  Next: Implicit Links,  Prev: Tables,  Up: Markup Rules
+
+8.9 Hyperlinks and email addresses with descriptions
+====================================================
+
+A hyperlink can reference a URL, or another page within a Muse project.
+In addition, descriptive text can be specified, which should be
+displayed rather than the link text in output styles that supports link
+descriptions.  The syntax is as follows.
+
+     [[link target][link description]]
+     [[link target without description]]
+
+   Thus, the current maintainer's homepage for Muse can be found
+`[[http://mwolson.org/projects/EmacsMuse.html][here]]', or at
+`[[http://mwolson.org/projects/EmacsMuse.html]]'.
+
+\1f
+File: muse.info,  Node: Implicit Links,  Next: Images,  Prev: Explicit Links,  Up: Markup Rules
+
+8.10 Bare URLs, WikiNames, and InterWiki links
+==============================================
+
+A URL or email address encountered in the input text is published as a
+hyperlink.  These kind of links are called "implicit links" because
+they are not separated from the rest of the Muse document in any way.
+
+   Some characters in URLs will prevent Muse from recognizing them as
+implicit links. If you want to link to a URL containing spaces or any of
+the characters "][,"'`()<>^", you will have to make the link explicit.
+The punctuation characters ".,;:" are also not recognized as part of a
+URL when they appear at its end. For information on how to make an
+explicit link, see *note Hyperlinks and email addresses with
+descriptions: Explicit Links.
+
+   If the `muse-wiki' module is loaded, another form of implicit link
+will be made available.  WikiNames, which are typed in CamelCase, are
+highlighted and published as links, provided that the file they refer
+to exists.
+
+   Customization of WikiName recognition may be accomplished by editing
+the `muse-wiki-wikiword-regexp' option and subsequently running
+`(muse-configure-highlighting 'muse-colors-markupmuse-colors-markup)'.
+If you use the Customize interface, the latter will be done
+automatically.
+
+   The `muse-wiki' module also allows for InterWiki links.  These are
+similar to WikiWords, but they specify both the project and page of a
+file.  The names of your project entries in `muse-project-alist' will
+be used as InterWiki names by default.  Several examples follow.
+
+     Blog::DocumentingMuse
+     Projects#EmacsMuse
+     Website
+
+   In the first case, the interwiki delimiter is `::', `Blog' is the
+project name, and `DocumentingMuse' is the page name.  In the second
+example, `#' is the interwiki delimiter.  If the name of a project
+occurs by itself in text, like the third case, it will be colorized and
+published as a link to the default page of the given project.
+
+   Customization of interwiki links may be accomplished by editing the
+`muse-wiki-interwiki-alist' option.
+
+   It is also possible to link to an anchor in an interwiki document.
+This is called a "three-part link".  Examples of this follow.
+
+     Blog::DocumentingMuse#anchor1
+     Projects#EmacsMuse#anchor2
+
+\1f
+File: muse.info,  Node: Images,  Next: Horizontal Rules and Anchors,  Prev: Implicit Links,  Up: Markup Rules
+
+8.11 Publishing and displaying images
+=====================================
+
+Image links
+-----------
+
+Links to images may be used in either the target or the description, or
+both.  Thus, the following code will publish as a clickable image that
+points to `http://mwolson.org/'.
+
+     [[http://mwolson.org/][/static/logos/site-logo.png]]
+
+   Normally, images in the link part will be inlined.
+
+   If you want these images to be published as links instead, place the
+text "URL:" immediately in front of the link text.  An example follows.
+
+     [[URL:http://mwolson.org/static/logos/site-logo.png]]
+
+Displaying images in Muse mode
+------------------------------
+
+If a link to a locally-available image is encountered in the link
+description, Muse mode will attempt to display it if your version of
+Emacs permits this.
+
+   This behavior may be toggled with `C-c C-i', or disabled permanently
+by setting the `muse-colors-inline-images' option to `nil'.
+
+   The method for finding images may be altered by customizing the
+`muse-colors-inline-image-method' option.  One useful value for this
+option is `muse-colors-use-publishing-directory', which tells Muse mode
+to look in the directory where the current file will be published.  The
+default is to look in the current directory.  Relative paths like
+`../pics/' should work for either setting.
+
+   Eventually, it is hoped that Muse will be able to copy images from
+the a "source" directory to a publishing directory by customizing
+`muse-project-alist', but this has not been implemented yet.
+
+Publishing simple images
+------------------------
+
+The following example will display correctly and publish correctly if a
+PNG file called `TestLogo.png' exists in the `../pics/' directory.  If
+text is on the same line as the picture, it will remain so in the
+output.
+
+     [[../myimage.png]]
+
+Publishing images with captions
+-------------------------------
+
+If you want to add a caption to an image, use the following syntax.
+This will center the image (if the output format supports it) and add a
+centered caption below the picture.  Formats that do not support
+centering the image will instead leave it against the left margin.
+
+     [[../pics/mycat.png][My cat Dexter]]
+
+   Images with captions may only occur in their own paragraphs, with no
+text on the same line.  Otherwise, the published output will not be
+syntactically correct.
+
+\1f
+File: muse.info,  Node: Horizontal Rules and Anchors,  Next: Embedded Lisp,  Prev: Images,  Up: Markup Rules
+
+8.12 Inserting a horizontal line or anchor
+==========================================
+
+Horizontal Rules
+----------------
+
+Four or more dashes indicate a horizontal rule.  Be sure to put blank
+lines around it, or it will be considered part of the proceeding or
+following paragraph!
+
+Anchors
+-------
+
+If you begin a line with "#anchor" - where "anchor" can be any word
+that doesn't contain whitespace - it defines an anchor at that point
+into the document.  This point can be referenced using "page#anchor" as
+the target in a Muse link.
+
+\1f
+File: muse.info,  Node: Embedded Lisp,  Next: Citations,  Prev: Horizontal Rules and Anchors,  Up: Markup Rules
+
+8.13 Evaluating Emacs Lisp code in documents for extensibility
+==============================================================
+
+Arbitrary kinds of markup can be achieved using the <lisp> tag.  With
+the <lisp> tag, you may generate whatever output text you wish.  The
+inserted output will get marked up if the <lisp> tag appears within the
+main text of the document.
+
+     <lisp>(concat "This form gets " "inserted")</lisp>
+
+   Note that you should not use the `insert' command within a set of
+<lisp> tags, since the return value from the <lisp> tags will be
+automatically inserted into the document.
+
+   It is also possible to treat the output as if it were surrounded by
+the <example>, <src>, or <verse> tags, by specifying "example", "src",
+or "verse" as the `markup' attribute of the <lisp> tag.
+
+     <lisp markup="example">
+     (concat "Insert" " me")
+     </lisp>
+
+   Other languages also have tags that cause source code to be
+evaluated.  *Note Tag Summary::, for details.
+
+\1f
+File: muse.info,  Node: Citations,  Next: Comments,  Prev: Embedded Lisp,  Up: Markup Rules
+
+8.14 Support for citing other resources
+=======================================
+
+Example
+-------
+
+Here is an example of what citations look like in a Muse document.
+
+     #bibsource REFDB
+
+     * Title
+     ** Subtitle
+
+     Some text before <cite>Miller1999</cite> and after the citation.
+
+     This is an author-only citation <cite type="author">Miller1999</cite>.
+
+     And this is a year-only citation <cite type="year">Miller1999</cite>.
+
+     Finally, this is a multi-head citation
+     <cite>Miller1999,Andrews2005</cite>.
+
+Overview
+--------
+
+The `#bibsource' directive defines the source of the bibliographies.
+The following sources are possible.
+
+   * DocBook + RefDB: the string "REFDB"
+
+   * LaTeX + bibtex: the name of an appropriate bibtex file
+
+   * LaTeX + RefDB: if the input file is called "foo.muse", then set
+     this to "foo.bib"
+
+   Citations are encoded as <cite> elements which enclose the citation
+keys as they are defined in the bibliography file or database.  In
+multi-head citations, the citation keys have to be separated by colons
+or semicolons.  The `latex' and `docbook' styles translate these to the
+proper separator automatically.
+
+   The <cite> elements take an optional "type" attribute that defines
+how the citation is rendered.  If the attribute is missing, you'll get
+a regular citation according to the bibliography style, e.g." (Miller
+et al., 1999)".  If the attribute is set to "author", only the name of
+the author(s) will be rendered.  Accordingly, "year" will cause the
+year to be printed.  This is useful to create citations like this:
+
+     Miller et al. had already shown in a previous publication (1999) that
+     this is not going to work.
+
+   Remember that refdb-mode (the Emacs interface to RefDB) can retrieve
+references by simply marking the citation key and running the
+`refdb-getref-by-field-on-region' command.  Later versions of
+`refdb-mode' will also allow to insert references as Muse citations
+(which is already implemented for DocBook, TEI, and LaTeX documents).
+
+   You may have noticed that there is no element to indicate the
+position of the bibliography.  The latter is always created at a valid
+position close to the end of the document.  The functions
+`muse-docbook-bibliography' and `muse-latex-bibliography' are called in
+the header or footer to generate this content, so it is possible to
+change the exact position.
+
+\1f
+File: muse.info,  Node: Comments,  Next: Tag Summary,  Prev: Citations,  Up: Markup Rules
+
+8.15 Lines to omit from published output
+========================================
+
+Use the following syntax to indicate a comment.  Comments will not be
+published.
+
+     ; Comment text goes here.
+
+   That is, only a semi-colon at the beginning of a line, followed by a
+literal space, will cause that line to be treated as a comment.
+
+   You can alternatively surround the region with the <comment> tag.
+
+   If you wish the comment to be published, but just commented out using
+the comment syntax of the output format, then set
+`muse-publish-comments-p' to non-nil.
+
+\1f
+File: muse.info,  Node: Tag Summary,  Prev: Comments,  Up: Markup Rules
+
+8.16 Tags that Muse recognizes
+==============================
+
+Muse has several built-in tags that may prove useful during publishing.
+*Note muse-publish-markup-tags::, to see how to customize the tags that
+Muse uses, as well as make your own tags.
+
+   Only a small subset of these tags are available in header and footer
+text.  The `muse-publish-markup-header-footer-tags' option lists the
+tags that are allowed in headers and footers.
+
+Syntax
+------
+
+If a tag takes arguments, it will look like this, where "tagname" is
+the name of the tag.
+
+     <tagname arg1="string1" arg2="string2">
+
+   If you want the tag to look like it came straight from an XHTML
+document, you can alternatively do the following.
+
+     <tagname arg1="string1" arg2="string2" />
+
+   If a tag surrounds some text, it will look like this.
+
+     <tagname>Some text</tagname>
+
+   If a tag surrounds a large region, it will look like this.
+
+     <tagname>
+     Some text.
+     Some more text.
+     </tagname>
+
+Tag listing
+-----------
+
+This is the complete list of tags that Muse accepts, including those
+that were mentioned in previous sections.
+
+`<br>'
+     Insert a line break.
+
+     Muse will automatically detect paragraphs when publishing by means
+     of blank lines, so this tag is usually unnecessary.
+
+`<cite>'
+     Insert a citation to another source.
+
+     This takes the argument `type', which indicates the type of
+     citation.  The valid types are "author" and "year".  If this
+     argument is omitted, include both author and year in the citation.
+
+     The bibliography to use for the citation may be specified by the
+     `#bibsource' directive.
+
+     *Note Citations::, for additional information.
+
+`<class>'
+     If publishing to HTML, surround the given text with a <span> tag.
+     It takes one argument called "name" that specifies the "class"
+     attribute of the <span> tag.
+
+     If publishing to a different format, do nothing extra to the text.
+
+`<code>'
+     Treat the text surrounded by the tag as if they were enclosed in
+     equal signs, that is, make it monospace.
+
+`<command>'
+     Run a command on the region, replacing the region with the result
+     of the command.  The command is specified with the "interp"
+     argument.  If no value for "interp" is given, pass the entire
+     region to the shell.
+
+     The "markup" argument controls how this section is marked up.
+
+     If it is omitted, publish the region with the normal Muse rules.
+
+     If "nil", do not mark up the region at all, but prevent Muse from
+     further interpreting it.
+
+     If "example", treat the region as if it was surrounded by the
+     <example> tag.
+
+     If "src", treat the included text as if it was surrounded by the
+     <src> tag.  You should also specify the "lang" attribute if doing
+     this.
+
+     If "verse", treat the region as if it was surrounded by the
+     <verse> tag, to preserve newlines.
+
+     Otherwise, it should be the name of a function to call, with the
+     buffer narrowed to the region.
+
+`<comment>'
+     Treat the entire region as a comment.  If the option
+     MUSE-PUBLISH-COMMENTS-P is nil, delete the region, otherwise
+     publish it using the comment syntax of the current publishing
+     style.
+
+`<contents>'
+     Publish a Table of Contents.  This will either be inserted
+     in-place or at the beginning of the document, depending on your
+     publishing style.  It does not have a delimiting tag.
+
+     By default, only 2 levels of headings will be included in the
+     generated Table of Contents.  To change this globally, customize
+     the MUSE-PUBLISH-CONTENTS-DEPTH option.  To change this only for
+     the current tag, use the "depth" argument.
+
+`<div>'
+     Insert a <div> tag into HTML documents, and do not insert anything
+     special for other non-HTML publishing formats.
+
+     If the "style" argument is provided, include it with the published
+     <div> tag.  Likewise for the "id" argument.
+
+`<example>'
+     Publish the region in monospace, preserving the newlines in the
+     region.  This is useful for snippets of code.
+
+`<include>'
+     Insert the given file at the current location during publishing.
+     The basic use of this tag is as follows, replacing "included_file"
+     with the name of the file that you want to include.
+
+          <include file="included_file">
+
+     The "markup" argument controls how this section is marked up.
+
+     If it is omitted, publish the included text with the normal Muse
+     rules.
+
+     If "nil", do not mark up the included text at all.
+
+     If "example", treat the included text as if it was surrounded by
+     the <example> tag.
+
+     If "src", treat the included text as if it was surrounded by the
+     <src> tag.  You should also specify the "lang" attribute if doing
+     this.
+
+     If "verse", treat the included text as if it was surrounded by the
+     <verse> tag, to preserve newlines.
+
+     Otherwise, it should be the name of a function to call after
+     inserting the file with the buffer narrowed to the section
+     inserted.
+
+`<lisp>'
+     Evaluate the Emacs Lisp expressions between the initial and ending
+     tags.  The result is then inserted into the document, so you do
+     not need to explicitly call `insert'.  All text properties are
+     removed from the resulting text.
+
+     This tag takes the "markup" argument.  See the description of
+     <command> for details.
+
+`<literal>'
+     Make sure that the text enclosed by this tag is published without
+     escaping it in any way.  This is useful for inserting markup
+     directly into the published document, when Muse does not provide
+     the desired functionality.
+
+`<markup>'
+     Mark up the text between the initial and ending tags.  The markup
+     command to use may be specified by the "function" argument.  The
+     standard Muse markup routines are used by default if no "function"
+     argument is provided.
+
+     This is useful for marking up regions in headers and footers.  One
+     example that comes to mind is generating a published index of all
+     of the files in the current project by doing the following.
+
+          <markup><lisp>(muse-index-as-string t t)</lisp></markup>
+
+`<perl>'
+     Run the `perl' language interpreter on the region, replacing the
+     region with the result of the command.
+
+     This tag takes the "markup" argument.  See the description of
+     <command> for details.
+
+`<python>'
+     Run the `python' language interpreter on the region, replacing the
+     region with the result of the command.
+
+     This tag takes the "markup" argument.  See the description of
+     <command> for details.
+
+`<quote>'
+     Publish the region as a blockquote.  This will either be inserted
+     in-place or at the beginning of the document, depending on your
+     publishing style.  It does not have a delimiting tag.
+
+`<ruby>'
+     Run the `ruby' language interpreter on the region, replacing the
+     region with the result of the command.
+
+     This tag takes the "markup" argument.  See the description of
+     <command> for details.
+
+`<src>'
+     Publish the region using htmlize.  The language to use may be
+     specified by the "lang" attribute.
+
+     Muse will look for a function named LANG-mode, where LANG is the
+     value of the "lang" attribute.
+
+     This tag requires htmlize 1.34 or later in order to work.  If this
+     is not satisfied, or the current publishing style is not
+     HTML-based, Muse will publish the region like an <example> tag.
+
+`<verbatim>'
+     This is used when you want to prevent Muse from trying to
+     interpret some markup.  Surround the markup in <verbatim> and
+     </verbatim>, and it will not be interpreted.
+
+     This tag was used often in previous versions of Muse because they
+     did not support whole-document escaping of specials.  Now, it will
+     only be needed for other tags, and perhaps footnotes as well.
+
+`<verse>'
+     Preserve the newlines in the region.  In formats like HTML,
+     newlines are removed by default, hence the need for this tag.  In
+     other publishing styles, this tag may cause the text to be
+     indented slightly in a way that looks nice for poetry and prose.
+
+
+\1f
+File: muse.info,  Node: Publishing Styles,  Next: Extending Muse,  Prev: Markup Rules,  Up: Top
+
+9 Publishing Various Types of Documents
+***************************************
+
+One of the principle features of Muse is the ability to publish a simple
+input text to a variety of different output styles.  Muse also makes it
+easy to create new styles, or derive from an existing style.
+
+* Menu:
+
+* Blosxom::                     Integrating Muse and pyblosxom.cgi.
+* Book::                        Publishing entries into a compilation.
+* ConTeXt::                     Publishing ConTeXt documents.
+* DocBook::                     Publishing in DocBook XML form.
+* HTML::                        Publishing in HTML or XHTML form.
+* Ikiwiki::                     Integrating with ikiwiki.
+* Journal::                     Keeping a journal or blog.
+* LaTeX::                       Publishing LaTeX documents.
+* Poem::                        Publish a poem to LaTeX or PDF.
+* Texinfo::                     Publish entries to Texinfo format or PDF.
+* XML::                         Publish entries to XML.
+
+\1f
+File: muse.info,  Node: Blosxom,  Next: Book,  Prev: Publishing Styles,  Up: Publishing Styles
+
+9.1 Integrating Muse and pyblosxom.cgi
+======================================
+
+The Blosxom publishing style publishes a tree of categorised files to a
+mirrored tree of stories to be served by blosxom.cgi or pyblosxom.cgi.
+In other words, each blog entry corresponds with one file.
+
+* Menu:
+
+* Blosxom Requirements::        Other tools needed for the Blosxom style.
+* Blosxom Entries::             Format of a Blosxom entry and automation.
+* Blosxom Options::             Blosxom styles and options provided.
+
+\1f
+File: muse.info,  Node: Blosxom Requirements,  Next: Blosxom Entries,  Prev: Blosxom,  Up: Blosxom
+
+9.1.1 Other tools needed for the Blosxom style
+----------------------------------------------
+
+You will need to have `pyblosxom.cgi' or `blosxom.cgi' installed on a
+machine that you have upload access to.
+
+   The major difficulty in both of these programs is specifying the
+date of the entries.  Both programs rely on the file modification time
+rather than any data contained in the entries themselves.  A plugin is
+needed in order for these programs to be able to get the correct date.
+
+PyBlosxom
+---------
+
+There are two different ways of accomplishing this in pyblosxom.  The
+first way involves gathering the timestamps (as specified by the
+`#date' directive) into one file and then sending that file along with
+published entries to the webserver.
+
+   The second will read each file at render time and parse the
+`#postdate' directive.  Muse will translate the `#date' directive into
+`#postdate' at publish time, so you don't have to do any extra work.
+
+Placing timestamps in one file
+..............................
+
+The following additional components are required in order to make the
+date of blog entries display as something sensible.
+
+  1. A script to gather date directives from the entire blog tree into a
+     single file.  The file must associate a blog entry with a date.
+
+  2. A plugin for (py)blosxom that reads this file.
+
+   These 2 things are provided for `pyblosxom.cgi' in the
+`contrib/pyblosxom' subdirectory.  `getstamps.py' provides the former
+service, while `hardcodedates.py' provides the latter service.
+
+   Here is a sample listing from my `timestamps' file, which maps each
+file to a date.  This can really be in any format, as long as your
+date-gathering script and your plugin can both understand it.
+
+     2005-04-01-14-16 personal/paper_cranes
+     2005-03-21 personal/spring_break_over
+     2004-10-24 personal/finished_free_culture
+
+   The script `contrib/pyblosxom/make-blog' demonstrates how to call
+`getstamps.py'.  Note that you will need to set the current directory
+to where your Muse files are, execute `getstamps.py', and then move the
+generated timestamps file to your publishing directory.
+
+Getting timestamp from entry while rendering
+............................................
+
+Alternately, the pyblosxom metadate plugin may be used.  On the plus
+side, there is no need to run a script to gather the date.  On the
+downside, each entry is read twice rather than once when the page is
+rendered.  Set the value of `muse-blosxom-use-metadate' to non-nil to
+enable adding a `#postdate' directive to all published files.  You can
+do this by:
+
+     M-x customize-variable RET muse-blosxom-use-metadate RET
+
+   With the metadate plugin installed in pyblosxom, the date set in this
+directive will be used instead of the file's modification time.  The
+plugin is included with Muse at `contrib/pyblosxom/metadate.py'.
+
+Blosxom
+-------
+
+It is also possible to use Blosxom, which is written in Perl, to serve
+blog entries that were published with Muse.  The steps are as follows.
+
+  1. Download and install blosxom from
+     `http://blosxom.sourceforge.net/'.
+
+  2. Install the metadate plugin.  It is available in
+     `contrib/blosxom/metadate_0_0_3'.
+
+  3. Every time you make a new blog entry, change to the blosxom data
+     directory and execute the `contrib/blosxom/getstamps.pl' script.
+     This script has only recently been made, and may still have some
+     bugs, so use with caution.
+
+
+\1f
+File: muse.info,  Node: Blosxom Entries,  Next: Blosxom Options,  Prev: Blosxom Requirements,  Up: Blosxom
+
+9.1.2 Format of a Blosxom entry and automation
+----------------------------------------------
+
+Each Blosxom file must include `#date yyyy-mm-dd', or optionally the
+longer `#date yyyy-mm-dd-hh-mm', a title (using the `#title'
+directive), plus whatever normal content is desired.
+
+   The date directive is not used directly by `pyblosxom.cgi' or this
+program.  You need to have the two additional items from the former
+section to make use of this feature.
+
+   There is a function called `muse-blosxom-new-entry' that will
+automate the process of making a new blog entry.  To make use of it, do
+the following.
+
+   * Customize `muse-blosxom-base-directory' to the location that your
+     blog entries are stored.
+
+   * Assign the `muse-blosxom-new-entry' function to a key sequence.  I
+     use the following code to assign this function to `C-c p l''.
+
+          (global-set-key "\C-cpl" 'muse-blosxom-new-entry)
+
+   * You should create your directory structure ahead of time under
+     your base directory.  These directories, which correspond with
+     category names, may be nested.
+
+   * When you enter this key sequence, you will be prompted for the
+     category of your entry and its title.  Upon entering this
+     information, a new file will be created that corresponds with the
+     title, but in lowercase letters and having special characters
+     converted to underscores.  The title and date directives will be
+     inserted automatically.
+
+\1f
+File: muse.info,  Node: Blosxom Options,  Prev: Blosxom Entries,  Up: Blosxom
+
+9.1.3 Blosxom styles and options provided
+-----------------------------------------
+
+The following styles and options are available in the Blosxom publishing
+style.
+
+Styles provided
+---------------
+
+`blosxom-html'
+     Publish Blosxom entries in HTML form.
+
+`blosxom-xhtml'
+     Publish Blosxom entries in XHTML form.
+
+
+Options provided
+----------------
+
+`muse-blosxom-extension'
+     Default file extension for publishing Blosxom files.
+
+`muse-blosxom-header'
+     Header used for publishing Blosxom files.
+
+     This may be text or a filename.
+
+`muse-blosxom-footer'
+     Footer used for publishing Blosxom files.
+
+     This may be text or a filename.
+
+`muse-blosxom-base-directory'
+     Base directory of blog entries, used by `muse-blosxom-new-entry'.
+
+     This is the top-level directory where your blog entries may be
+     found locally.
+
+
+\1f
+File: muse.info,  Node: Book,  Next: ConTeXt,  Prev: Blosxom,  Up: Publishing Styles
+
+9.2 Publishing entries into a compilation
+=========================================
+
+This publishing style is used to output "books" in LaTeX or PDF format.
+
+   Each page will become a separate chapter in the book, unless the
+style keyword `:nochapters' is used, in which case they are all run
+together as if one giant chapter.
+
+   One way of publishing a book is to make a project for it, add the
+project to `muse-project-alist', and use the `book-pdf' style with a
+very specific `:include' value to specify some page whose contents will
+be checked for the values of `#title' and `#date', and whose name will
+be used in the output file.  Then to publish the book, visit the
+aforementioned page and use `C-c C-t' or `C-c C-p' to trigger the
+publishing process.  An example `muse-project-alist' for this method
+follows.
+
+     (setq muse-project-alist
+           '(("MyNotes" (:nochapters t  ; do automatically add chapters
+                         :book-chapter "Computer Science"
+                         "~/Notes/cs"
+                         :book-chapter "Mathematics"
+                         "~/Notes/math"
+                         :book-chapter "Emacs"
+                         "~/Notes/emacs"
+                         :book-end t ; the rest will not be placed in the book
+                         "~/Notes"   ; so we can find the notes-anthology page
+                         "~/Notes/private"
+                         :force-publish ("index")
+                         :default "index")
+              (:base "book-pdf"
+                     :include "/notes-anthology[^/]*$"
+                     :path "~/public_html/notes")
+              ;; other publishing styles for each directory go here,
+              ;; if desired
+              )))
+
+   In this example, there would be a file called
+`~/Notes/notes-anthology.muse', which would contain just the following.
+The resulting book would be published to
+`~/public_html/notes/notes-anthology.pdf'.
+
+     #title My Technology Ramblings
+
+   Another way is to call the `muse-book-publish-project' function
+manually, with a custom project entry.  An example of this may be found
+in John Wiegley's configuration file at `examples/johnw/muse-init.el',
+in the `muse-publish-my-books' function.
+
+Styles provided
+---------------
+
+`book-latex'
+     Publish a book in LaTeX form.  The header and footer are different
+     than the normal LaTeX publishing mode.
+
+`book-pdf'
+     Publish a book in PDF form.  The header and footer are different
+     than the normal PDF publishing mode.
+
+
+Options provided
+----------------
+
+`muse-book-before-publish-hook'
+     A hook run in the book buffer before it is marked up.
+
+`muse-book-after-publish-hook'
+     A hook run in the book buffer after it is marked up.
+
+`muse-book-latex-header'
+     Header used for publishing books to LaTeX.
+
+     This may be text or a filename.
+
+`muse-book-latex-footer'
+     Footer used for publishing books to LaTeX.
+
+     This may be text or a filename.
+
+
+\1f
+File: muse.info,  Node: ConTeXt,  Next: DocBook,  Prev: Book,  Up: Publishing Styles
+
+9.3 Publishing ConTeXt documents
+================================
+
+This publishing style is capable of producing ConTeXt or PDF documents.
+
+   If you wish to publish PDF documents based on ConTeXt, you will need
+to have it installed.  For Debian and Ubuntu, this can be accomplished
+by installing the "texlive" package.
+
+Styles provided
+---------------
+
+`context'
+     Publish a ConTeXt document.
+
+`context-pdf'
+     Publish a PDF document, using an external ConTeXt document
+     conversion tool.
+
+`context-slides'
+     Produce slides from a ConTeXt document.
+
+     Here is an example of a slide.
+
+          * First Slide
+
+          [[Some-sort-of-cute-image.png]]
+
+          ** A subheading
+
+           - A bullet point.
+           - Another bullet point.
+
+          * Second Slide
+
+          ... and so on
+
+`context-slides-pdf'
+     Publish a PDF document of ConTeXt slides.
+
+
+Options provided
+----------------
+
+`muse-context-extension'
+     Default file extension for publishing ConTeXt files.
+
+`muse-context-pdf-extension'
+     Default file extension for publishing ConTeXt files to PDF.
+
+`muse-context-pdf-program'
+     The program that is called to generate PDF content from ConTeXt
+     content.
+
+`muse-context-pdf-cruft'
+     Extensions of files to remove after generating PDF output
+     successfully.
+
+`muse-context-header'
+     Header used for publishing ConTeXt files.
+
+     This may be text or a filename.
+
+`muse-context-footer'
+     Footer used for publishing ConTeXt files.
+
+     This may be text or a filename.
+
+`muse-context-markup-regexps'
+     List of markup regexps for identifying regions in a Muse page.
+
+     For more on the structure of this list, *Note
+     muse-publish-markup-regexps::.
+
+`muse-context-markup-functions'
+     An alist of style types to custom functions for that kind of text.
+
+     For more on the structure of this list, *Note
+     muse-publish-markup-functions::.
+
+`muse-context-markup-strings'
+     Strings used for marking up text.
+
+     These cover the most basic kinds of markup, the handling of which
+     differs little between the various styles.
+
+`muse-context-slides-header'
+     Header for publishing a presentation (slides) using ConTeXt.
+
+     Any of the predefined modules, which are available in the
+     tex/context/base directory, can be used by writing a "module"
+     directive at the top of the Muse file; if no such directive is
+     provided, module pre-01 is used.  Alternatively, you can use your
+     own style ("mystyle", in this example) by replacing "\usemodule[]"
+     with "\input mystyle".
+
+     This may be text or a filename.
+
+`muse-context-slides-markup-strings'
+     Strings used for marking up text in ConTeXt slides.
+
+`muse-context-markup-specials-document'
+     A table of characters which must be represented specially.  These
+     are applied to the entire document, sans already-escaped regions.
+
+`muse-context-markup-specials-example'
+     A table of characters which must be represented specially.  These
+     are applied to example> regions.
+
+     With the default interpretation of <example> regions, no specials
+     need to be escaped.
+
+`muse-context-markup-specials-literal'
+     A table of characters which must be represented specially.  This
+     applies to =monospaced text= and <code> regions.
+
+`muse-context-markup-specials-url'
+     A table of characters which must be represented specially.  These
+     are applied to URLs.
+
+`muse-context-markup-specials-image'
+     A table of characters which must be represented specially.  These
+     are applied to image filenames.
+
+`muse-context-permit-contents-tag'
+     If nil, ignore <contents> tags.  Otherwise, insert table of
+     contents.
+
+     Most of the time, it is best to have a table of contents on the
+     first page, with a new page immediately following.  To make this
+     work with documents published in both HTML and ConTeXt, we need to
+     ignore the <contents> tag.
+
+     If you don't agree with this, then set this option to non-nil, and
+     it will do what you expect.
+
+
+\1f
+File: muse.info,  Node: DocBook,  Next: HTML,  Prev: ConTeXt,  Up: Publishing Styles
+
+9.4 Publishing in DocBook XML form
+==================================
+
+This publishing style is used to generate DocBook XML files.
+
+Styles provided
+---------------
+
+`docbook'
+     Publish a file in Docbook form.
+
+
+Options provided
+----------------
+
+This publishing style uses the same options for markup up special
+characters as the "xml" publishing style.  *Note XML::, for details.
+
+`muse-docbook-extension'
+     Default file extension for publishing DocBook XML files.
+
+`muse-docbook-header'
+     Header used for publishing DocBook XML files.
+
+     This may be text or a filename.
+
+`muse-docbook-footer'
+     Footer used for publishing DocBook XML files.
+
+     This may be text or a filename.
+
+`muse-docbook-markup-regexps'
+     List of markup rules for publishing a Muse page to DocBook XML.
+
+`muse-docbook-markup-functions'
+     An alist of style types to custom functions for that kind of text.
+
+`muse-docbook-markup-strings'
+     Strings used for marking up text.
+
+     These cover the most basic kinds of markup, the handling of which
+     differs little between the various styles.
+
+`muse-docbook-encoding-default'
+     The default Emacs buffer encoding to use in published files.  This
+     will be used if no special characters are found.
+
+`muse-docbook-charset-default'
+     The default DocBook XML charset to use if no translation is found
+     in `muse-xml-encoding-map'.
+
+
+\1f
+File: muse.info,  Node: HTML,  Next: Ikiwiki,  Prev: DocBook,  Up: Publishing Styles
+
+9.5 Publishing in HTML or XHTML form
+====================================
+
+This publishing style is capable of producing HTML or XHTML documents.
+
+Styles provided
+---------------
+
+`html'
+     Supports publishing to HTML 4.0 and HTML 4.01, Strict or
+     Transitional.
+
+`xhtml'
+     Supports publishing to XHTML 1.0 and XHTML 1.1, Strict or
+     Transitional.
+
+
+Options provided
+----------------
+
+If an HTML option does not have a corresponding XHTML option, it will
+be used for both of these publishing styles.
+
+   These publishing styles use the same options for markup up special
+characters as the "xml" publishing style.  *Note XML::, for details.
+
+`muse-html-extension'
+     Default file extension for publishing HTML files.
+
+`muse-xhtml-extension'
+     Default file extension for publishing XHTML files.
+
+`muse-html-style-sheet'
+     Store your stylesheet definitions here.
+
+     This is used in `muse-html-header'.  You can put raw CSS in here or
+     a <link> tag to an external stylesheet.  This text may contain
+     <lisp> markup tags.
+
+     If you are publishing to XHTML, then customize the
+     `muse-xhtml-style-sheet' option instead.
+
+`muse-xhtml-style-sheet'
+     Store your stylesheet definitions here.
+
+     This is used in `muse-xhtml-header'.  You can put raw CSS in here
+     or a <link> tag to an external stylesheet.  This text may contain
+     <lisp> markup tags.
+
+`muse-html-header'
+     Header used for publishing HTML files.
+
+     This may be text or a filename.
+
+`muse-html-footer'
+     Footer used for publishing HTML files.
+
+     This may be text or a filename.
+
+`muse-xhtml-header'
+     Header used for publishing XHTML files.
+
+     This may be text or a filename.
+
+`muse-xhtml-footer'
+     Footer used for publishing XHTML files.
+
+     This may be text or a filename.
+
+`muse-html-anchor-on-word'
+     When true, anchors surround the closest word.
+
+     This allows you to select them in a browser (i.e. for pasting),
+     but has the side-effect of marking up headers in multiple colors
+     if your header style is different from your link style.
+
+`muse-html-table-attributes'
+     The attribute to be used with HTML <table> tags.
+
+     If you want to make more-complicated tables in HTML, surround the
+     HTML with the literal tag, so that it does not get escaped.
+
+`muse-html-markup-regexps'
+     List of markup rules for publishing a Muse page to HTML.
+
+`muse-html-markup-functions'
+     An alist of style types to custom functions for that kind of text.
+
+`muse-html-markup-strings'
+     Strings used for marking up text as HTML.
+
+     These cover the most basic kinds of markup, the handling of which
+     differs little between the various styles.
+
+`muse-xhtml-markup-strings'
+     Strings used for marking up text as XHTML.
+
+     These cover the most basic kinds of markup, the handling of which
+     differs little between the various styles.
+
+`muse-html-markup-tags'
+     A list of tag specifications, for specially marking up HTML.
+     *Note muse-publish-markup-tags::, for more information.
+
+`muse-html-meta-http-equiv'
+     The http-equiv attribute used for the HTML <meta> tag.
+
+`muse-html-meta-content-type'
+     The content type used for the HTML <meta> tag.
+
+     If you are striving for XHTML 1.1 compliance, you may want to
+     change this to "application/xhtml+xml".
+
+`muse-html-meta-content-encoding'
+     The charset to append to the HTML <meta> tag.
+
+     If set to the symbol 'detect, use `muse-xml-encoding-map' to try
+     and determine the HTML charset from emacs's coding.  If set to a
+     string, this string will be used to force a particular charset.
+
+`muse-html-charset-default'
+     The default HTML meta charset to use if no translation is found in
+     `muse-xml-encoding-map'.
+
+`muse-html-encoding-default'
+     The default Emacs buffer encoding to use in published files.  This
+     will be used if no special characters are found.
+
+
+\1f
+File: muse.info,  Node: Ikiwiki,  Next: Journal,  Prev: HTML,  Up: Publishing Styles
+
+9.6 Integrating with ikiwiki
+============================
+
+Note: Support for Ikiwiki is not yet complete.  Use at your own risk.
+
+   Ikiwiki is a wiki compiler (`http://ikiwiki.info/').  Emacs Muse can
+(not yet) be used as a source format for Ikiwiki pages with the plugin
+`IkiWiki::Plugin::muse'.
+
+   The `lisp/muse-ikiwiki.el' file provides publishing functions and
+styles for Ikiwiki.  The plugin for Ikiwiki to recognize Muse files is
+provided by the `contrib/ikiwiki/IkiWiki/Plugin/muse.pm' file.  Two
+sample init files are available in the `examples/ikiwiki' directory.
+Configure your `ikiwiki.setup' file so that the `muse_init' variable
+has the location of your Muse init file.
+
+   If you are using CGI, The directory `contrib/ikiwiki/IkiWiki' must
+be copied to the same directory as the CGI script that Ikiwiki
+generates.  When publishing your wiki, the PERL5LIB environment
+variable must contain the path to the `contrib/ikiwiki/IkiWiki'
+directory.
+
+Styles provided
+---------------
+
+`ikiwiki'
+     Supports publishing XHTML output that Ikiwiki can understand.
+
+
+Options provided
+----------------
+
+`muse-ikiwiki-header'
+     Header used for publishing Ikiwiki output files.
+
+     This may be text or a filename.
+
+`muse-ikiwiki-footer'
+     Footer used for publishing Ikiwiki output files.
+
+     This may be text or a filename.
+
+
+Other relevant options
+----------------------
+
+`muse-colors-evaluate-lisp-tags'
+     Specify whether to evaluate the contents of <lisp> tags at display
+     time.  If nil, don't evaluate them.  If non-nil, evaluate them.
+
+     The actual contents of the buffer are not changed, only the
+     displayed text.
+
+`muse-html-src-allowed-modes'
+     Modes that we allow the <src> tag to colorize.  If `t', permit the
+     <src> tag to colorize any mode.
+
+     If a list of mode names, such as `'("html" "latex")', and the lang
+     argument to <src> is not in the list, then use fundamental mode
+     instead.
+
+`muse-publish-enable-dangerous-tags'
+     If non-nil, publish tags like <lisp> and <command> that can call
+     external programs or expose sensitive information.  Otherwise,
+     ignore tags like this.
+
+     This is useful to set to `nil' when the file to publish is coming
+     from an untrusted source.
+
+
+\1f
+File: muse.info,  Node: Journal,  Next: LaTeX,  Prev: Ikiwiki,  Up: Publishing Styles
+
+9.7 Keeping a journal or blog
+=============================
+
+The module facilitates the keeping and publication of a journal.  When
+publishing to HTML, it assumes the form of a web log, or blog.
+
+   The input format for each entry is as follows.
+
+     * 20040317: Title of entry
+
+     text for the entry.
+
+     <qotd>
+     "You know who you are. It comes down to a simple gut check: You
+     either love what you do or you don't. Period." -- P. Bronson
+     </qotd>
+
+   The "qotd", or Quote of the Day, is entirely optional.  When
+generated to HTML, this entry is rendered as the following.
+
+     <div class="entry">
+       <div class="entry-qotd">
+         <h3>Quote of the Day:</h3>
+         <p>"You know who you are. It comes down to a simple gut
+           check: You either love what you do or you don't. Period."
+           -- P. Bronson</p>
+       </div>
+       <div class="entry-body">
+         <div class="entry-head">
+           <div class="entry-date">
+             <span class="date">March 17, 2004</span>
+           </div>
+           <div class="entry-title">
+             <h2>Title of entry</h2>
+           </div>
+         </div>
+         <div class="entry-text">
+           <p>Text for the entry.</p>
+         </div>
+       </div>
+     </div>
+
+   The plurality of "div" tags makes it possible to display the entries
+in any form you wish, using a CSS style.
+
+   Also, an .RDF file can be generated from your journal by publishing
+it with the "rdf" style.  It uses the first two sentences of the first
+paragraph of each entry as its "description", and auto-generates tags
+for linking to the various entries.
+
+muse-project-alist considerations
+---------------------------------
+
+If you wish to publish an RDF or RSS feed, it is important to include
+the `:base-url' attribute in your `muse-project-alist' entry for your
+Journal projects.  An example follows.
+
+     (setq muse-project-alist
+           '(("Journal" ("~/Journal/"
+                         :default "journal")
+             (:base "journal-rss"
+                    :base-url "http://example.org/journal/"
+                    :path "~/public_html/journal"))))
+
+Styles provided
+---------------
+
+`journal-html'
+     Publish journal entries as an HTML document.
+
+`journal-xhtml'
+     Publish journal entries as an XHTML document.
+
+`journal-latex'
+     Publish journal entries as a LaTeX document.
+
+`journal-pdf'
+     Publish journal entries as a PDF document.
+
+`journal-book-latex'
+     Publish journal entries as a LaTeX book.
+
+`journal-book-pdf'
+     Publish journal entries as a PDF book.
+
+`journal-rdf'
+     Publish journal entries as an RDF file (RSS 1.0).
+
+`journal-rss'
+     Publish journal entries as an RSS file (RSS 2.0).
+
+`journal-rss-entry'
+     Used internally by `journal-rss' and `journal-rdf' for publishing
+     individual entries.
+
+
+Options provided
+----------------
+
+`muse-journal-heading-regexp'
+     A regexp that matches a journal heading.
+
+     Paren group 1 is the ISO date, group 2 is the optional category,
+     and group 3 is the optional heading for the entry.
+
+`muse-journal-date-format'
+     Date format to use for journal entries.
+
+`muse-journal-html-heading-regexp'
+     A regexp that matches a journal heading from an HTML document.
+
+     Paren group 1 is the ISO date, group 2 is the optional category,
+     and group 3 is the optional heading for the entry.
+
+`muse-journal-html-entry-template'
+     Template used to publish individual journal entries as HTML.
+
+     This may be text or a filename.
+
+`muse-journal-latex-section'
+     Template used to publish a LaTeX section.
+
+`muse-journal-latex-subsection'
+     Template used to publish a LaTeX subsection.
+
+`muse-journal-markup-tags'
+     A list of tag specifications, for specially marking up Journal
+     entries.
+
+     *Note muse-publish-markup-tags::, for more information.
+
+     This is used by `journal-latex' and its related styles, as well as
+     the `journal-rss-entry' style, which both `journal-rdf' and
+     `journal-rss' use.
+
+`muse-journal-rdf-extension'
+     Default file extension for publishing RDF (RSS 1.0) files.
+
+`muse-journal-rdf-base-url'
+     The base URL of the website referenced by the RDF file.
+
+`muse-journal-rdf-header'
+     Header used for publishing RDF (RSS 1.0) files.
+
+     This may be text or a filename.
+
+`muse-journal-rdf-footer'
+     Footer used for publishing RDF (RSS 1.0) files.
+
+     This may be text or a filename.
+
+`muse-journal-rdf-date-format'
+     Date format to use for RDF entries.
+
+`muse-journal-rdf-entry-template'
+     Template used to publish individual journal entries as RDF.
+
+     This may be text or a filename.
+
+`muse-journal-rdf-summarize-entries'
+     If non-nil, include only summaries in the RDF file, not the full
+     data.
+
+     The default is nil, because this annoys some subscribers.
+
+`muse-journal-rss-heading-regexp'
+     A regexp that matches a journal heading from an HTML document.
+
+     Paren group 1 is the ISO date, group 2 is the optional category,
+     and group 3 is the optional heading for the entry.
+
+`muse-journal-rss-extension'
+     Default file extension for publishing RSS 2.0 files.
+
+`muse-journal-rss-base-url'
+     The base URL of the website referenced by the RSS file.
+
+`muse-journal-rss-header'
+     Header used for publishing RSS 2.0 files.
+
+     This may be text or a filename.
+
+`muse-journal-rss-footer'
+     Footer used for publishing RSS 2.0 files.
+
+     This may be text or a filename.
+
+`muse-journal-rss-date-format'
+     Date format to use for RSS 2.0 entries.
+
+`muse-journal-rss-entry-template'
+     Template used to publish individual journal entries as RSS 2.0.
+
+     This may be text or a filename.
+
+`muse-journal-rss-enclosure-types-alist'
+     File types that are accepted as RSS enclosures.
+
+     This is an alist that maps file extension to content type.
+
+     Useful for podcasting.
+
+`muse-journal-rss-summarize-entries'
+     If non-nil, include only summaries in the RSS file, not the full
+     data.
+
+     The default is nil, because this annoys some subscribers.
+
+`muse-journal-rss-markup-regexps'
+     List of markup rules for publishing a Muse journal page to RSS.
+
+     For more information on the structure of this list, *Note
+     muse-publish-markup-regexps::.
+
+`muse-journal-rss-markup-functions'
+     An alist of style types to custom functions for that kind of text.
+
+     For more on the structure of this list, *Note
+     muse-publish-markup-functions::.
+
+
+\1f
+File: muse.info,  Node: LaTeX,  Next: Poem,  Prev: Journal,  Up: Publishing Styles
+
+9.8 Publishing LaTeX documents
+==============================
+
+This publishing style is capable of producing LaTeX or PDF documents.
+
+   If you wish to publish PDF documents, you will need to have a good
+LaTeX installation.  For Debian and Ubuntu, this can be accomplished by
+installing the "tetex-bin" and "tetex-extra" packages.  TeX fonts are
+also a must.
+
+   If your LaTeX installation has the file `grffile.sty', which may be
+found in the `texlive-latex-recommended' package for Debian and Ubuntu,
+then consider using it by adding the following to your header file.
+This allows spaces in filenames to work.
+
+     \usepackage{grffile}
+
+Styles provided
+---------------
+
+`latex'
+     Publish a LaTeX document.
+
+`pdf'
+     Publish a PDF document, using an external LaTeX document conversion
+     tool.
+
+`latexcjk'
+     Publish a LaTeX document with CJK (Chinese) encodings.
+
+`pdfcjk'
+     Publish a PDF document with CJK (Chinese) encodings, using an
+     external LaTeX document conversion tool.
+
+`slides'
+     Publish a LaTeX document that uses the Beamer extension.  This is
+     suitable for producing slides.
+
+     Here is an example of a slide.
+
+          <slide title="First Slide">
+          Everything between the slide tags composes this slide.
+
+          [[Some-sort-of-cute-image.png]]
+
+           - A bullet point.
+           - Another bullet point.
+          </slide>
+
+`slides-pdf'
+     Publish a PDF document of slides, using the Beamer extension.
+
+`lecture-notes'
+     Publish a LaTeX document that uses the Beamer extension.  This is
+     suitable for producing lecture notes.
+
+     This can also use the <slide> tag.
+
+`lecture-notes-pdf'
+     Publish a PDF document of lecture notes, using the Beamer
+     extension.
+
+
+Options provided
+----------------
+
+`muse-latex-extension'
+     Default file extension for publishing LaTeX files.
+
+`muse-latex-pdf-extension'
+     Default file extension for publishing LaTeX files to PDF.
+
+`muse-latex-pdf-browser'
+     The program to use when browsing a published PDF file.
+
+     This should be a format string.
+
+`muse-latex-pdf-program'
+     The program that is called to generate PDF content from LaTeX
+     content.
+
+`muse-latex-pdf-cruft'
+     Extensions of files to remove after generating PDF output
+     successfully.
+
+`muse-latex-header'
+     Header used for publishing LaTeX files.
+
+     This may be text or a filename.
+
+`muse-latex-footer'
+     Footer used for publishing LaTeX files.
+
+     This may be text or a filename.
+
+`muse-latexcjk-header'
+     Header used for publishing LaTeX files (CJK).
+
+     This may be text or a filename.
+
+`muse-latexcjk-footer'
+     Footer used for publishing LaTeX files (CJK).
+
+     This may be text or a filename.
+
+`muse-latex-slides-header'
+     Header for publishing of slides using LaTeX.
+
+     This may be text or a filename.
+
+     You must have the Beamer extension for LaTeX installed for this to
+     work.
+
+`muse-latex-lecture-notes-header'
+     Header publishing of lecture notes using LaTeX.
+
+     This may be text or a filename.
+
+     You must have the Beamer extension for LaTeX installed for this to
+     work.
+
+`muse-latex-markup-regexps'
+     List of markup regexps for identifying regions in a Muse page.
+
+     For more on the structure of this list, *Note
+     muse-publish-markup-regexps::.
+
+`muse-latex-markup-functions'
+     An alist of style types to custom functions for that kind of text.
+
+     For more on the structure of this list, *Note
+     muse-publish-markup-functions::.
+
+`muse-latex-markup-strings'
+     Strings used for marking up text.
+
+     These cover the most basic kinds of markup, the handling of which
+     differs little between the various styles.
+
+`muse-latex-slides-markup-tags'
+     A list of tag specifications, for specially marking up LaTeX
+     slides.
+
+`muse-latexcjk-encoding-map'
+     An alist mapping emacs coding systems to appropriate CJK codings.
+     Use the base name of the coding system (ie, without the -unix).
+
+`muse-latexcjk-encoding-default'
+     The default Emacs buffer encoding to use in published files.
+
+     This will be used if no special characters are found.
+
+`muse-latex-markup-specials-document'
+     A table of characters which must be represented specially.  These
+     are applied to the entire document, sans already-escaped regions.
+
+`muse-latex-markup-specials-example'
+     A table of characters which must be represented specially.  These
+     are applied to example> regions.
+
+     With the default interpretation of <example> regions, no specials
+     need to be escaped.
+
+`muse-latex-markup-specials-literal'
+     A table of characters which must be represented specially.  This
+     applies to =monospaced text= and <code> regions.
+
+`muse-latex-markup-specials-url'
+     A table of characters which must be represented specially.  These
+     are applied to URLs.
+
+`muse-latex-markup-specials-image'
+     A table of characters which must be represented specially.  These
+     are applied to image filenames.
+
+`muse-latex-permit-contents-tag'
+     If nil, ignore <contents> tags.  Otherwise, insert table of
+     contents.
+
+     Most of the time, it is best to have a table of contents on the
+     first page, with a new page immediately following.  To make this
+     work with documents published in both HTML and LaTeX, we need to
+     ignore the <contents> tag.
+
+     If you don't agree with this, then set this option to non-nil, and
+     it will do what you expect.
+
+
+\1f
+File: muse.info,  Node: Poem,  Next: Texinfo,  Prev: LaTeX,  Up: Publishing Styles
+
+9.9 Publish a poem to LaTeX or PDF
+==================================
+
+The `muse-poem' module makes it easy to attractively publish and
+reference poems in the following format, using the "memoir" module for
+LaTeX publishing.  It will also markup poems for every other output
+style, though none are nearly as pretty.
+
+     Title
+
+
+     Body of poem
+
+
+     Annotations, history, notes, etc.
+
+   Once a poem is written in this format, just publish it to PDF using
+the `poem-pdf' style.  To make an inlined reference to a poem that
+you've written - for example, from a blog page - there is a "poem" tag
+defined by this module.
+
+     <poem title="name.of.poem.page">
+
+   Let's assume the template above was called `name.of.poem.page'; then
+the above tag would result in this inclusion.
+
+     ** Title
+
+     > Body of poem
+
+   John Wiegley uses this module for publishing all of the poems on his
+website, which are at `http://www.newartisans.com/johnw/poems.html'.
+
+Styles provided
+---------------
+
+`poem-latex'
+     Publish a poem in LaTeX form.
+
+`poem-pdf'
+     Publish a poem to a PDF document.
+
+`chapbook-latex'
+     Publish a book of poems in LaTeX form.
+
+`chapbook-pdf'
+     Publish a book of poems to a PDF document.
+
+
+Options provided
+----------------
+
+`muse-poem-latex-header'
+     Header used for publishing LaTeX poems.
+
+     This may be text or a filename.
+
+`muse-poem-latex-footer'
+     Footer used for publishing LaTeX files.
+
+     This may be text or a filename.
+
+`muse-poem-markup-strings'
+     Strings used for marking up poems.
+
+     These cover the most basic kinds of markup, the handling of which
+     differs little between the various styles.
+
+`muse-chapbook-latex-header'
+     Header used for publishing a book of poems in LaTeX form.
+
+     This may be text or a filename.
+
+`muse-chapbook-latex-footer'
+     Footer used for publishing a book of poems in LaTeX form.
+
+     This may be text or a filename.
+
+`muse-poem-chapbook-strings'
+     Strings used for marking up books of poems.
+
+     These cover the most basic kinds of markup, the handling of which
+     differs little between the various styles.
+
+
+\1f
+File: muse.info,  Node: Texinfo,  Next: XML,  Prev: Poem,  Up: Publishing Styles
+
+9.10 Publish entries to Texinfo format or PDF
+=============================================
+
+Rules for publishing a Muse file as a Texinfo article.
+
+Styles provided
+---------------
+
+`texi'
+     Publish a file in Texinfo form.
+
+`info'
+     Generate an Info file from a Muse file.
+
+`info-pdf'
+     Publish a file in PDF form.
+
+
+Options provided
+----------------
+
+`muse-texinfo-process-natively'
+     If non-nil, use the Emacs `texinfmt' module to make Info files.
+
+`muse-texinfo-extension'
+     Default file extension for publishing Texinfo files.
+
+`muse-texinfo-info-extension'
+     Default file extension for publishing Info files.
+
+`muse-texinfo-pdf-extension'
+     Default file extension for publishing PDF files.
+
+`muse-texinfo-header'
+     Text to prepend to a Muse page being published as Texinfo.
+
+     This may be text or a filename.  It may contain <lisp> markup tags.
+
+`muse-texinfo-footer'
+     Text to append to a Muse page being published as Texinfo.
+
+     This may be text or a filename.  It may contain <lisp> markup tags.
+
+`muse-texinfo-markup-regexps'
+     List of markup rules for publishing a Muse page to Texinfo.
+
+     For more on the structure of this list, *Note
+     muse-publish-markup-regexps::.
+
+`muse-texinfo-markup-functions'
+     An alist of style types to custom functions for that kind of text.
+
+     For more on the structure of this list, *Note
+     muse-publish-markup-functions::.
+
+`muse-texinfo-markup-strings'
+     Strings used for marking up text.
+
+     These cover the most basic kinds of markup, the handling of which
+     differs little between the various styles.
+
+`muse-texinfo-markup-specials'
+     A table of characters which must be represented specially.
+
+`muse-texinfo-markup-specials'
+     A table of characters which must be represented specially.  These
+     are applied to URLs.
+
+
+\1f
+File: muse.info,  Node: XML,  Prev: Texinfo,  Up: Publishing Styles
+
+9.11 Publish entries to XML
+===========================
+
+Muse is capable of publishing XML documents, with the help of the
+`muse-xml.el' module.
+
+   A RelaxNG schema is available as part of the Muse distribution in the
+`etc/muse.rnc' file.
+
+Styles provided
+---------------
+
+`xml'
+     Publish a file in XML form.
+
+
+Options provided
+----------------
+
+`muse-xml-encoding-map'
+     An alist mapping Emacs coding systems to appropriate XML charsets.
+     Use the base name of the coding system (i.e. without the -unix).
+
+`muse-xml-markup-specials'
+     A table of characters which must be represented specially in all
+     XML-like markup formats.
+
+`muse-xml-markup-specials-url-extra'
+     A table of characters which must be represented specially in all
+     XML-like markup formats.
+
+     These are extra characters that are escaped within URLs.
+
+`muse-xml-extension'
+     Default file extension used for publishing XML files.
+
+`muse-xml-header'
+     Header used for publishing XML files.
+
+     This may be text or a filename.
+
+`muse-xml-footer'
+     Footer used for publishing XML files.
+
+     This may be text or a filename.
+
+`muse-xml-markup-regexps'
+     List of markup rules for publishing a Muse page to XML.
+
+     For more on the structure of this list, *Note
+     muse-publish-markup-regexps::.
+
+`muse-xml-markup-functions'
+     An alist of style types to custom functions for that kind of text.
+
+     For more on the structure of this list, *Note
+     muse-publish-markup-functions::.
+
+`muse-xml-markup-strings'
+     Strings used for marking up text.
+
+     These cover the most basic kinds of markup, the handling of which
+     differs little between the various styles.
+
+`muse-xml-encoding-default'
+     The default Emacs buffer encoding to use in published files.
+
+     This will be used if no special characters are found.
+
+`muse-xml-charset-default'
+     The default XML charset to use if no translation is found in
+     `muse-xml-encoding-map'.
+
+
+\1f
+File: muse.info,  Node: Extending Muse,  Next: Miscellaneous,  Prev: Publishing Styles,  Up: Top
+
+10 Making your own publishing styles
+************************************
+
+* Menu:
+
+* Markup Functions::            Specifying functions to mark up text.
+* Markup Regexps::              Markup rules for publishing.
+* Markup Strings::              Strings specific to a publishing style.
+* Markup Tags::                 Tag specifications for special markup.
+* Style Elements::              Parameters used for defining styles.
+* Deriving Styles::             Deriving a new style from an existing
+                                  one.
+
+\1f
+File: muse.info,  Node: Markup Functions,  Next: Markup Regexps,  Up: Extending Muse
+
+10.1 Specifying functions to mark up text
+=========================================
+
+`muse-publish-markup-functions'
+
+   An alist of style types to custom functions for that kind of text.
+
+   This is used by publishing styles to attempt to minimize the amount
+of custom regexps that each has to define.  `muse-publish' provides
+rules for the most common types of markup.
+
+   Each member of the list is of the following form.
+
+     (SYMBOL FUNCTION)
+
+   * SYMBOL Describes the type of text to associate with this rule.
+     `muse-publish-markup-regexps' maps regexps to these symbols.
+
+   * FUNCTION Function to use to mark up this kind of rule if no
+     suitable function is found through the `:functions' tag of the
+     current style.
+
+\1f
+File: muse.info,  Node: Markup Regexps,  Next: Markup Strings,  Prev: Markup Functions,  Up: Extending Muse
+
+10.2 Markup rules for publishing
+================================
+
+`muse-publish-markup-regexps'
+
+   List of markup rules for publishing a page with Muse.
+
+   The rules given in this variable are invoked first, followed by
+whatever rules are specified by the current style.
+
+   Each member of the list is either a function, or a list of the
+following form.
+
+     (REGEXP/SYMBOL TEXT-BEGIN-GROUP REPLACEMENT-TEXT/FUNCTION/SYMBOL)
+
+   * REGEXP A regular expression, or symbol whose value is a regular
+     expression, which is searched for using `re-search-forward'.
+
+   * TEXT-BEGIN-GROUP The matching group within that regexp which
+     denotes the beginning of the actual text to be marked up.
+
+   * REPLACEMENT-TEXT A string that will be passed to `replace-match'.
+
+     If it is not a string, but a function, it will be called to
+     determine what the replacement text should be (it must return a
+     string).  If it is a symbol, the value of that symbol should be a
+     string.
+
+   The replacements are done in order, one rule at a time.  Writing the
+regular expressions can be a tricky business.  Note that case is never
+ignored.  `case-fold-search' is always bound to nil while processing
+the markup rules.
+
+Publishing order
+----------------
+
+This is the order that the publishing rules are consulted, by default.
+This may be changed by customizing `muse-publish-markup-regexps'.
+
+`trailing and leading whitespace'
+     Remove trailing and leading whitespace from a file.
+
+`directive'
+     `#directive'
+
+     This is only recognized at the beginning of a file.
+
+`comment'
+     `; a commented line'
+
+`tag'
+     `<tag>'
+
+`comment'
+     `; comment'
+
+`explicit links'
+     Prevent emphasis characters in explicit links from being marked up.
+
+     Don't actually publish them here, just add a special no-emphasis
+     text property.
+
+`word'
+     Whitespace-delimited word, possibly with emphasis characters
+
+     This function is responsible for marking up emphasis and escaping
+     some specials.
+
+`heading'
+     `** Heading'
+
+     Outline-mode style headings.
+
+`enddots'
+     `....'
+
+     These are ellipses with a dot at end.
+
+`dots'
+     `...'
+
+     Ellipses.
+
+`rule'
+     `----'
+
+     Horizontal rule or section separator.
+
+`no-break-space'
+     `~~'
+
+     Prevent lines from being split before or after these characters.
+
+`line-break'
+     `<br>'
+
+     Break a line at point.
+
+`fn-sep'
+     `Footnotes:'
+
+     Beginning of footnotes section.
+
+`footnote'
+     `[1]'
+
+     Footnote definition or reference.  If at beginning of line, it is a
+     definition.
+
+`list'
+        * ` 1. '
+
+        * ` - '
+
+        * `term :: '
+
+     Numbered list, item list, or term definition list.
+
+`table-el'
+     `table.el' style tables
+
+`table'
+     `table | cells'
+
+     Muse tables or orgtbl-mode style tables.
+
+`quote'
+     spaces before beginning of text
+
+     Blockquotes.
+
+`emdash'
+     `--'
+
+     2-wide dash
+
+`verse'
+     `> verse text'
+
+`anchor'
+     `#anchor'
+
+`link'
+     `[[explicit][links]]'
+
+`url'
+     `http://example.com/'
+
+`email'
+     `bare-email@example.com'
+
+
+\1f
+File: muse.info,  Node: Markup Strings,  Next: Markup Tags,  Prev: Markup Regexps,  Up: Extending Muse
+
+10.3 Strings specific to a publishing style
+===========================================
+
+"Markup strings" are strings used for marking up text for a particular
+style.
+
+   These cover the most basic kinds of markup, the handling of which
+differs little between the various styles.
+
+Available markup strings
+------------------------
+
+`image-with-desc'
+     An image and a description.
+
+     Argument 1: image without extension.  Argument 2: image extension.
+     Argument 3: description.
+
+`image'
+     An inlined image.
+
+     Argument 1: image without extension.  Argument 2: image extension.
+
+`image-link'
+     An image with a link around it.
+
+     Argument 1: link.  Argument 2: image without extension.  Argument
+     3: image extension.
+
+`anchor-ref'
+     A reference to an anchor on the current page.
+
+     Argument 1: anchor name.  Argument 2: description if one exists,
+     or the original link otherwise.
+
+`url'
+     A URL without a description.
+
+     Argument 1: URL.
+
+`link'
+     A link to a Muse page with a description.
+
+     Argument 1: link.  Argument 2: description if one exists, or the
+     original link otherwise.
+
+`link-and-anchor'
+     A link to a Muse page with an anchor, and a description.
+
+     Argument 1: link.  Argument 2: anchor name.  Argument 3:
+     description if one exists, or the original link otherwise.
+     Argument 4: link without an extension.
+
+`email-addr'
+     A link to an email address.
+
+     Argument 1: email address.  Argument 2: email address.
+
+`anchor'
+     An anchor.
+
+     Argument 1: name of anchor.
+
+`emdash'
+     A 2-length dash.
+
+     Argument 1: Initial whitespace.  Argument 2: Terminating
+     whitespace.
+
+`comment-begin'
+     Beginning of a comment.
+
+`comment-end'
+     End of a comment.
+
+`rule'
+     A horizontal line or space.
+
+`no-break-space'
+     A space that separates two words which are not to be separated.
+
+`footnote'
+     Beginning of footnote.
+
+`footnote-end'
+     End of footnote.
+
+`footnotemark'
+     Mark a reference for the current footnote.
+
+     Argument 1: number of this footnote.
+
+`footnotemark-end'
+     End of a reference for the current footnote.
+
+`footnotetext'
+     Indicate the text of the current footnote.
+
+     Argument 1: number of this footnote.
+
+`footnotetext-end'
+     End of a footnote text line.
+
+`fn-sep'
+     Text used to replace "Footnotes:" line.
+
+`dots'
+     3 dots.
+
+`enddots'
+     4 dots.
+
+`part'
+     Beginning of a part indicator line.  This is used by book
+     publishing.
+
+`part-end'
+     End of a part indicator line.  This is used by book publishing.
+
+`chapter'
+     Beginning of a chapter indicator line.  This is used by book
+     publishing.
+
+`chapter-end'
+     End of a chapter indicator line.  This is used by book publishing.
+
+`section'
+     Beginning of level 1 section indicator line.
+
+     Argument 1: level of section; always 1.
+
+`section-end'
+     End of level 1 section indicator line.
+
+     Argument 1: level of section; always 1.
+
+`subsection'
+     Beginning of level 2 section indicator line.
+
+     Argument 1: level of section; always 2.
+
+`subsection-end'
+     End of level 2 section indicator line.
+
+     Argument 1: level of section; always 2.
+
+`subsubsection'
+     Beginning of level 3 section indicator line.
+
+     Argument 1: level of section; always 3.
+
+`subsubsection-end'
+     End of level 3 section indicator line.
+
+     Argument 1: level of section; always 3.
+
+`section-other'
+     Beginning of section indicator line, where level is greater than 3.
+
+     Argument 1: level of section.
+
+`section-other-end'
+     End of section indicator line, where level is greater than 3.
+
+     Argument 1: level of section.
+
+`begin-underline'
+     Beginning of underlined text.
+
+`end-underline'
+     End of underlined text.
+
+`begin-literal'
+     Beginning of verbatim text.  This includes <code> tags and
+     =teletype text=.
+
+`end-literal'
+     End of verbatim text.  This includes <code> tags and =teletype
+     text=.
+
+`begin-emph'
+     Beginning of the first level of emphasized text.
+
+`end-emph'
+     End of the first level of emphasized text.
+
+`begin-more-emph'
+     Beginning of the second level of emphasized text.
+
+`end-more-emph'
+     End of the second level of emphasized text.
+
+`begin-most-emph'
+     Beginning of the third (and final) level of emphasized text.
+
+`end-most-emph'
+     End of the third (and final) level of emphasized text.
+
+`begin-verse'
+     Beginning of verse text.
+
+`verse-space'
+     String used to each space that is further indented than the
+     beginning of the verse.
+
+`begin-verse-line'
+     Beginning of a line of verse.
+
+`empty-verse-line'
+     End of a line of verse.
+
+`begin-last-stanza-line'
+     Beginning of the last line of a verse stanza.
+
+`end-last-stanza-line'
+     End of the last line of a verse stanza.
+
+`end-verse'
+     End of verse text.
+
+`begin-example'
+     Beginning of an example region.  To make use of this, an
+     `<example>' tag is needed.
+
+`end-example'
+     End of an example region.  To make use of this, an `</example>' tag
+     is needed.
+
+`begin-center'
+     Begin a centered line.
+
+`end-center'
+     End a centered line.
+
+`begin-quote'
+     Begin a quoted region.
+
+`end-quote'
+     End a quoted region.
+
+`begin-quote-item'
+     Begin a quote paragraph.
+
+`end-quote-item'
+     End a quote paragraph.
+
+`begin-uli'
+     Begin an unordered list.
+
+`end-uli'
+     End an unordered list.
+
+`begin-uli-item'
+     Begin an unordered list item.
+
+`end-uli-item'
+     End an unordered list item.
+
+`begin-oli'
+     Begin an ordered list.
+
+`end-oli'
+     End an ordered list.
+
+`begin-oli-item'
+     Begin an ordered list item.
+
+`end-oli-item'
+     End an ordered list item.
+
+`begin-dl'
+     Begin a definition list.
+
+`end-dl'
+     End a definition list.
+
+`begin-dl-item'
+     Begin a definition list item.
+
+`end-dl-item'
+     End a definition list item.
+
+`begin-ddt'
+     Begin a definition list term.
+
+`end-ddt'
+     End a definition list term.
+
+`begin-dde'
+     Begin a definition list entry.
+
+`end-dde'
+     End a definition list entry.
+
+`begin-table'
+     Begin a table.
+
+`end-table'
+     End a table.
+
+`begin-table-group'
+     Begin a table grouping.
+
+`end-table-group'
+     End a table grouping.
+
+`begin-table-row'
+     Begin a table row.
+
+`end-table-row'
+     End a table row.
+
+`begin-table-entry'
+     Begin a table entry.
+
+`end-table-entry'
+     End a table entry.
+
+
+\1f
+File: muse.info,  Node: Markup Tags,  Next: Style Elements,  Prev: Markup Strings,  Up: Extending Muse
+
+10.4 Tag specifications for special markup
+==========================================
+
+`muse-publish-markup-tags'
+
+   A list of tag specifications, for specially marking up text.
+
+   XML-style tags are the best way to add custom markup to Muse.  This
+is easily accomplished by customizing this list of markup tags.
+
+   For each entry, the name of the tag is given, whether it expects a
+closing tag and/or an optional set of attributes, whether it is
+nestable, and a function that performs whatever action is desired within
+the delimited region.
+
+   The tags themselves are deleted during publishing, before the
+function is called.  The function is called with three arguments, the
+beginning and end of the region surrounded by the tags.  If properties
+are allowed, they are passed as a third argument in the form of an
+alist.  The `end' argument to the function is always a marker.
+
+   Point is always at the beginning of the region within the tags, when
+the function is called.  Wherever point is when the function finishes is
+where tag markup will resume.
+
+   These tag rules are processed once at the beginning of markup, and
+once at the end, to catch any tags which may have been inserted
+in-between.
+
+\1f
+File: muse.info,  Node: Style Elements,  Next: Deriving Styles,  Prev: Markup Tags,  Up: Extending Muse
+
+10.5 Parameters used for defining styles
+========================================
+
+Style elements are tags that define a style.  Use either
+`muse-define-style' or `muse-derive-style' (*note Deriving Styles::) to
+create a new style.
+
+ -- Function: muse-define-style name &rest elements
+
+Usable elements
+---------------
+
+`:suffix'
+     File extension to use for publishing files with this style.
+
+`:link-suffix'
+     File extension to use for publishing links to Muse files with this
+     style.
+
+`:osuffix'
+     File extension to use for publishing second-stage files with this
+     style.
+
+     For example, PDF publishing generates a LaTeX file first, then a
+     PDF from that LaTeX file.
+
+`:regexps'
+     List of markup rules for publishing a page with Muse.  *Note
+     muse-publish-markup-regexps::.
+
+`:functions'
+     An alist of style types to custom functions for that kind of text.
+     *Note muse-publish-markup-functions::.
+
+`:strings'
+     Strings used for marking up text with this style.
+
+     These cover the most basic kinds of markup, the handling of which
+     differs little between the various styles.
+
+`:tags'
+     A list of tag specifications, used for handling extra tags.  *Note
+     muse-publish-markup-tags::.
+
+`:specials'
+     A table of characters which must be represented specially.
+
+`:before'
+     A function that is to be executed on the newly-created publishing
+     buffer (or the current region) before any publishing occurs.
+
+     This is used to set extra parameters that direct the publishing
+     process.
+
+`:before-end'
+     A function that is to be executed on the publishing buffer (or the
+     current region) immediately after applying all of the markup
+     regexps.
+
+     This is used to fix the order of table elements (header, footer,
+     body) in XML-ish styles.
+
+`:after'
+     A function that is to be executed on the publishing buffer after
+     :before-end, and immediately after inserting the header and footer.
+
+     This is used for generating the table of contents as well as
+     setting the file coding system.
+
+`:final'
+     A function that is to be executed after saving the published file,
+     but while still in its buffer.
+
+     This is used for generating second-stage documents like PDF files
+     from just-published LaTeX files.
+
+     The function must accept three arguments: the name of the muse
+     source file, the name of the just-published file, and the name of
+     the second-stage target file.  The name of the second-stage target
+     file is the same as that of the just-published file if no
+     second-stage publishing is required.
+
+`:header'
+     Header used for publishing files of this style.
+
+     This may be a variable, text, or a filename.  It is inserted at the
+     beginning of a file, after evaluating the publishing markup.
+
+`:footer'
+     Footer used for publishing files of this style.
+
+     This may be a variable, text, or a filename.  It is inserted at
+     the end of a file, after evaluating the publishing markup.
+
+`:style-sheet'
+     Style sheet used for publishing files of this style.
+
+     This may be a variable or text.  It is used in the header of HTML
+     and XHTML based publishing styles.
+
+`:browser'
+     The function used to browse the published result of files of this
+     style.
+
+
+\1f
+File: muse.info,  Node: Deriving Styles,  Prev: Style Elements,  Up: Extending Muse
+
+10.6 Deriving a new style from an existing one
+==============================================
+
+To create a new style from an existing one, use `muse-derive-style' as
+follows.  This is a good way to fix something you don't like about a
+particular publishing style, or to personalize it.
+
+ -- Function: muse-derive-style new-name base-name &rest elements
+
+   The derived name is a string defining the new style, such as
+"my-html".  The base name must identify an existing style, such as
+"html" - if you have loaded `muse-html'.  The style parameters are the
+same as those used to create a style, except that they override whatever
+definitions exist in the base style.  However, some definitions only
+partially override.  The following parameters support partial
+overriding.
+
+   *Note Style Elements::, for a complete list of all parameters.
+
+`:functions'
+     If a markup function is not found in the derived style's function
+     list, the base style's function list will be queried.
+
+`:regexps'
+     All regexps in the current style and the base style(s) will be
+     used.
+
+`:strings'
+     If a markup string is not found in the derived style's string
+     list, the base style's string list will be queried.
+
+
+\1f
+File: muse.info,  Node: Miscellaneous,  Next: Getting Help and Reporting Bugs,  Prev: Extending Muse,  Up: Top
+
+11 Miscellaneous add-ons, like a minor mode
+*******************************************
+
+* Menu:
+
+* Muse List Edit Minor Mode::   Edit lists easily in other major modes.
+
+\1f
+File: muse.info,  Node: Muse List Edit Minor Mode,  Up: Miscellaneous
+
+11.1 Edit lists easily in other major modes
+===========================================
+
+`muse-list-edit-minor-mode' is meant to be used with other major modes,
+such as Message (for composing email) and debian-changelog-mode (for
+editing debian/changelog files).
+
+   It implements practically perfect support for editing and filling
+lists.  It can even handle nested lists.  In addition to Muse-specific
+list items ("-", numbers, definition lists, footnotes), it can also
+handle items that begin with "*" or "+".  Filling list items behaves in
+the same way that it does in Muse, regardless of whether filladapt is
+also enabled, which is the primary reason to use this tool.
+
+Installation
+------------
+
+To use it, add "(require 'muse-mode)" to your Emacs customization file
+and add the function `turn-on-muse-list-edit-minor-mode' to any mode
+hooks where you wish to enable this minor mode.
+
+Keybindings
+-----------
+
+`muse-list-edit-minor-mode' uses the following keybindings.
+
+`M-RET (`muse-l-e-m-m-insert-list-item')'
+     Insert a new list item at point, using the indentation level of the
+     current list item.
+
+`C-< (`muse-l-e-m-m-decrease-list-item-indent')'
+     Decrease indentation of the current list item.
+
+`C-> (`muse-l-e-m-m-increase-list-item-indent')'
+     Increase indentation of the current list item.
+
+
+Functions
+---------
+
+ -- Function: muse-list-edit-minor-mode
+     This is a global minor mode for editing files with lists.  It is
+     meant to be used with other major modes, and not with Muse mode.
+
+     Interactively, with no prefix argument, toggle the mode.  With
+     universal prefix ARG turn mode on.  With zero or negative ARG turn
+     mode off.
+
+     This minor mode provides the Muse keybindings for editing lists,
+     and support for filling lists properly.
+
+     It recognizes not only Muse-style lists, which use the "-"
+     character or numbers, but also lists that use asterisks or plus
+     signs.  This should make the minor mode generally useful.
+
+     Definition lists and footnotes are also recognized.
+
+     Note that list items may omit leading spaces, for compatibility
+     with modes that set `left-margin', such as `debian-changelog-mode'.
+
+ -- Function: turn-on-muse-list-edit-minor-mode
+     Unconditionally turn on Muse list edit minor mode.
+
+ -- Function: turn-off-muse-list-edit-minor-mode
+     Unconditionally turn off Muse list edit minor mode.
+
+\1f
+File: muse.info,  Node: Getting Help and Reporting Bugs,  Next: History,  Prev: Miscellaneous,  Up: Top
+
+12 Getting Help and Reporting Bugs
+**********************************
+
+After you have read this guide, if you still have questions about Muse,
+or if you have bugs to report, there are several places you can go.
+
+   * `http://www.emacswiki.org/cgi-bin/wiki/EmacsMuse' is the
+     emacswiki.org page, and anyone may add tips, hints, or bug
+     descriptions to it.
+
+   * `http://mwolson.org/projects/EmacsMuse.html' is the web page that
+     Michael Olson (the current maintainer) made for Muse.
+
+   * Muse has several different mailing lists.
+
+    `muse-el-announce'
+          Low-traffic list for Muse-related announcements.
+
+          You can join this mailing list (<muse-el-announce@gna.org>)
+          using the subscription form at
+          `http://mail.gna.org/listinfo/muse-el-announce/'.  This
+          mailing list is also available via Gmane
+          (`http://gmane.org/'). The group is called
+          `gmane.emacs.muse.announce'.
+
+    `muse-el-discuss'
+          Discussion, bugfixes, suggestions, tips, and the like for
+          Muse.  This mailing list also includes the content of
+          muse-el-announce.
+
+          You can join this mailing list (<muse-el-discuss@gna.org>)
+          using the subscription form at
+          `http://mail.gna.org/listinfo/muse-el-discuss/'.  This mailing
+          list is also available via Gmane with the identifier
+          `gmane.emacs.muse.general'.
+
+    `muse-el-logs'
+          Log messages for commits made to Muse.
+
+          You can join this mailing list (<muse-el-logs@gna.org>) using
+          the subscription form at
+          `http://mail.gna.org/listinfo/muse-el-logs/'.  This mailing
+          list is also available via Gmane with the identifier
+          `gmane.emacs.muse.scm'.
+
+    `muse-el-commits'
+          Generated bug reports for Emacs Muse.  If you use our
+          bug-tracker at `https://gna.org/bugs/?group=muse-el', the bug
+          reports will be sent to this list automatically.
+
+          You can join this mailing list (<muse-el-commits@gna.org>)
+          using the subscription form at
+          `http://mail.gna.org/listinfo/muse-el-commits/'.  This
+          mailing list is also available via Gmane with the identifier
+          `gmane.emacs.muse.cvs'.
+
+    `muse-el-internationalization'
+          Discussion of translation of the Muse website and
+          documentation into many languages.
+
+          You can join this mailing list
+          (<muse-el-internationalization@gna.org>) using the
+          subscription form at
+          `http://mail.gna.org/listinfo/internationalization/'.  This
+          mailing list is also available via Gmane with the identifier
+          `gmane.emacs.muse.internationalization'.
+
+
+   * You can visit the IRC Freenode channel `#emacs'. Many of the
+     contributors are frequently around and willing to answer your
+     questions.  The `#muse' channel is also available for
+     Muse-specific help, and its current maintainer hangs out there.
+
+   * The maintainer of Emacs Muse, Michael Olson, may be contacted at
+     <mwolson@gnu.org>.  He can be rather slow at answering email, so
+     it is often better to use the muse-el-discuss mailing list.
+
+
+\1f
+File: muse.info,  Node: History,  Next: Contributors,  Prev: Getting Help and Reporting Bugs,  Up: Top
+
+13 History of This Document
+***************************
+
+   * 2004 John Wiegley started Muse upon realizing that EmacsWiki had
+     some serious limitations. Around February 2004, he started making
+     "emacs-wiki version 3.00 APLHA", which eventually became known as
+     Muse.
+
+     Most of those who frequent the emacs-wiki mailing list continued
+     to use emacs-wiki, mainly because Planner hasn't been ported over
+     to it.
+
+     As of 2004-12-01, Michael Olson became the maintainer of Muse, as
+     per John Wiegley's request.
+
+   * 2005 Michael Olson overhauled this document and added many new
+     sections in preparation for the first release of Muse (3.01).
+
+
+\1f
+File: muse.info,  Node: Contributors,  Next: GNU Free Documentation License,  Prev: History,  Up: Top
+
+14 Contributors to This Documentation
+*************************************
+
+The first draft of this document was taken from the emacs-wiki texinfo
+manual.  Michael Olson adapted it for Muse and added most of its
+content.
+
+   John Sullivan did a majority of the work on the emacs-wiki texinfo
+manual.
+
+   While Sacha Chua maintained emacs-wiki, she worked quite a bit on the
+emacs-wiki texinfo manual.
+
+\1f
+File: muse.info,  Node: GNU Free Documentation License,  Next: Concept Index,  Prev: Contributors,  Up: Top
+
+Appendix A GNU Free Documentation License
+*****************************************
+
+                      Version 1.2, November 2002
+
+     Copyright (C) 2000,2001,2002  Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+
+  0. PREAMBLE
+
+     The purpose of this License is to make a manual, textbook, or other
+     functional and useful document "free" in the sense of freedom: to
+     assure everyone the effective freedom to copy and redistribute it,
+     with or without modifying it, either commercially or
+     noncommercially.  Secondarily, this License preserves for the
+     author and publisher a way to get credit for their work, while not
+     being considered responsible for modifications made by others.
+
+     This License is a kind of "copyleft," which means that derivative
+     works of the document must themselves be free in the same sense.
+     It complements the GNU General Public License, which is a copyleft
+     license designed for free software.
+
+     We have designed this License in order to use it for manuals for
+     free software, because free software needs free documentation: a
+     free program should come with manuals providing the same freedoms
+     that the software does.  But this License is not limited to
+     software manuals; it can be used for any textual work, regardless
+     of subject matter or whether it is published as a printed book.
+     We recommend this License principally for works whose purpose is
+     instruction or reference.
+
+
+  1. APPLICABILITY AND DEFINITIONS
+
+     This License applies to any manual or other work, in any medium,
+     that contains a notice placed by the copyright holder saying it
+     can be distributed under the terms of this License.  Such a notice
+     grants a world-wide, royalty-free license, unlimited in duration,
+     to use that work under the conditions stated herein.  The
+     "Document," below, refers to any such manual or work.  Any member
+     of the public is a licensee, and is addressed as "you."  You
+     accept the license if you copy, modify or distribute the work in a
+     way requiring permission under copyright law.
+
+     A "Modified Version" of the Document means any work containing the
+     Document or a portion of it, either copied verbatim, or with
+     modifications and/or translated into another language.
+
+     A "Secondary Section" is a named appendix or a front-matter
+     section of the Document that deals exclusively with the
+     relationship of the publishers or authors of the Document to the
+     Document's overall subject (or to related matters) and contains
+     nothing that could fall directly within that overall subject.
+     (Thus, if the Document is in part a textbook of mathematics, a
+     Secondary Section may not explain any mathematics.)  The
+     relationship could be a matter of historical connection with the
+     subject or with related matters, or of legal, commercial,
+     philosophical, ethical or political position regarding them.
+
+     The "Invariant Sections" are certain Secondary Sections whose
+     titles are designated, as being those of Invariant Sections, in
+     the notice that says that the Document is released under this
+     License.  If a section does not fit the above definition of
+     Secondary then it is not allowed to be designated as Invariant.
+     The Document may contain zero Invariant Sections.  If the Document
+     does not identify any Invariant Sections then there are none.
+
+     The "Cover Texts" are certain short passages of text that are
+     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+     that says that the Document is released under this License.  A
+     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+     be at most 25 words.
+
+     A "Transparent" copy of the Document means a machine-readable copy,
+     represented in a format whose specification is available to the
+     general public, that is suitable for revising the document
+     straightforwardly with generic text editors or (for images
+     composed of pixels) generic paint programs or (for drawings) some
+     widely available drawing editor, and that is suitable for input to
+     text formatters or for automatic translation to a variety of
+     formats suitable for input to text formatters.  A copy made in an
+     otherwise Transparent file format whose markup, or absence of
+     markup, has been arranged to thwart or discourage subsequent
+     modification by readers is not Transparent.  An image format is
+     not Transparent if used for any substantial amount of text.  A
+     copy that is not "Transparent" is called "Opaque."
+
+     Examples of suitable formats for Transparent copies include plain
+     ASCII without markup, Texinfo input format, LaTeX input format,
+     SGML or XML using a publicly available DTD, and
+     standard-conforming simple HTML, PostScript or PDF designed for
+     human modification.  Examples of transparent image formats include
+     PNG, XCF and JPG.  Opaque formats include proprietary formats that
+     can be read and edited only by proprietary word processors, SGML
+     or XML for which the DTD and/or processing tools are not generally
+     available, and the machine-generated HTML, PostScript or PDF
+     produced by some word processors for output purposes only.
+
+     The "Title Page" means, for a printed book, the title page itself,
+     plus such following pages as are needed to hold, legibly, the
+     material this License requires to appear in the title page.  For
+     works in formats which do not have any title page as such, "Title
+     Page" means the text near the most prominent appearance of the
+     work's title, preceding the beginning of the body of the text.
+
+     A section "Entitled XYZ" means a named subunit of the Document
+     whose title either is precisely XYZ or contains XYZ in parentheses
+     following text that translates XYZ in another language.  (Here XYZ
+     stands for a specific section name mentioned below, such as
+     "Acknowledgements," "Dedications," "Endorsements," or "History.")
+     To "Preserve the Title" of such a section when you modify the
+     Document means that it remains a section "Entitled XYZ" according
+     to this definition.
+
+     The Document may include Warranty Disclaimers next to the notice
+     which states that this License applies to the Document.  These
+     Warranty Disclaimers are considered to be included by reference in
+     this License, but only as regards disclaiming warranties: any other
+     implication that these Warranty Disclaimers may have is void and
+     has no effect on the meaning of this License.
+
+  2. VERBATIM COPYING
+
+     You may copy and distribute the Document in any medium, either
+     commercially or noncommercially, provided that this License, the
+     copyright notices, and the license notice saying this License
+     applies to the Document are reproduced in all copies, and that you
+     add no other conditions whatsoever to those of this License.  You
+     may not use technical measures to obstruct or control the reading
+     or further copying of the copies you make or distribute.  However,
+     you may accept compensation in exchange for copies.  If you
+     distribute a large enough number of copies you must also follow
+     the conditions in section 3.
+
+     You may also lend copies, under the same conditions stated above,
+     and you may publicly display copies.
+
+  3. COPYING IN QUANTITY
+
+     If you publish printed copies (or copies in media that commonly
+     have printed covers) of the Document, numbering more than 100, and
+     the Document's license notice requires Cover Texts, you must
+     enclose the copies in covers that carry, clearly and legibly, all
+     these Cover Texts: Front-Cover Texts on the front cover, and
+     Back-Cover Texts on the back cover.  Both covers must also clearly
+     and legibly identify you as the publisher of these copies.  The
+     front cover must present the full title with all words of the
+     title equally prominent and visible.  You may add other material
+     on the covers in addition.  Copying with changes limited to the
+     covers, as long as they preserve the title of the Document and
+     satisfy these conditions, can be treated as verbatim copying in
+     other respects.
+
+     If the required texts for either cover are too voluminous to fit
+     legibly, you should put the first ones listed (as many as fit
+     reasonably) on the actual cover, and continue the rest onto
+     adjacent pages.
+
+     If you publish or distribute Opaque copies of the Document
+     numbering more than 100, you must either include a
+     machine-readable Transparent copy along with each Opaque copy, or
+     state in or with each Opaque copy a computer-network location from
+     which the general network-using public has access to download
+     using public-standard network protocols a complete Transparent
+     copy of the Document, free of added material.  If you use the
+     latter option, you must take reasonably prudent steps, when you
+     begin distribution of Opaque copies in quantity, to ensure that
+     this Transparent copy will remain thus accessible at the stated
+     location until at least one year after the last time you
+     distribute an Opaque copy (directly or through your agents or
+     retailers) of that edition to the public.
+
+     It is requested, but not required, that you contact the authors of
+     the Document well before redistributing any large number of
+     copies, to give them a chance to provide you with an updated
+     version of the Document.
+
+  4. MODIFICATIONS
+
+     You may copy and distribute a Modified Version of the Document
+     under the conditions of sections 2 and 3 above, provided that you
+     release the Modified Version under precisely this License, with
+     the Modified Version filling the role of the Document, thus
+     licensing distribution and modification of the Modified Version to
+     whoever possesses a copy of it.  In addition, you must do these
+     things in the Modified Version:
+
+     A. Use in the Title Page (and on the covers, if any) a title
+     distinct    from that of the Document, and from those of previous
+     versions    (which should, if there were any, be listed in the
+     History section    of the Document).  You may use the same title
+     as a previous version    if the original publisher of that version
+     gives permission.
+     B. List on the Title Page, as authors, one or more persons or
+     entities    responsible for authorship of the modifications in the
+     Modified    Version, together with at least five of the principal
+     authors of the    Document (all of its principal authors, if it
+     has fewer than five),    unless they release you from this
+     requirement.
+     C. State on the Title page the name of the publisher of the
+     Modified Version, as the publisher.
+     D. Preserve all the copyright notices of the Document.
+     E. Add an appropriate copyright notice for your modifications
+     adjacent to the other copyright notices.
+     F. Include, immediately after the copyright notices, a license
+     notice    giving the public permission to use the Modified Version
+     under the    terms of this License, in the form shown in the
+     Addendum below.
+     G. Preserve in that license notice the full lists of Invariant
+     Sections    and required Cover Texts given in the Document's
+     license notice.
+     H. Include an unaltered copy of this License.
+     I. Preserve the section Entitled "History," Preserve its Title,
+     and add    to it an item stating at least the title, year, new
+     authors, and    publisher of the Modified Version as given on the
+     Title Page.  If    there is no section Entitled "History" in the
+     Document, create one    stating the title, year, authors, and
+     publisher of the Document as    given on its Title Page, then add
+     an item describing the Modified    Version as stated in the
+     previous sentence.
+     J. Preserve the network location, if any, given in the Document for
+       public access to a Transparent copy of the Document, and likewise
+       the network locations given in the Document for previous versions
+       it was based on.  These may be placed in the "History" section.
+       You may omit a network location for a work that was published at
+       least four years before the Document itself, or if the original
+      publisher of the version it refers to gives permission.
+     K. For any section Entitled "Acknowledgements" or "Dedications,"
+     Preserve the Title of the section, and preserve in the section all
+       the substance and tone of each of the contributor
+     acknowledgements    and/or dedications given therein.
+     L. Preserve all the Invariant Sections of the Document,
+     unaltered in their text and in their titles.  Section numbers
+     or the equivalent are not considered part of the section titles.
+     M. Delete any section Entitled "Endorsements."  Such a section
+     may not be included in the Modified Version.
+     N. Do not retitle any existing section to be Entitled
+     "Endorsements"    or to conflict in title with any Invariant
+     Section.
+     O. Preserve any Warranty Disclaimers.
+
+     If the Modified Version includes new front-matter sections or
+     appendices that qualify as Secondary Sections and contain no
+     material copied from the Document, you may at your option
+     designate some or all of these sections as invariant.  To do this,
+     add their titles to the list of Invariant Sections in the Modified
+     Version's license notice.  These titles must be distinct from any
+     other section titles.
+
+     You may add a section Entitled "Endorsements," provided it contains
+     nothing but endorsements of your Modified Version by various
+     parties-for example, statements of peer review or that the text has
+     been approved by an organization as the authoritative definition
+     of a standard.
+
+     You may add a passage of up to five words as a Front-Cover Text,
+     and a passage of up to 25 words as a Back-Cover Text, to the end
+     of the list of Cover Texts in the Modified Version.  Only one
+     passage of Front-Cover Text and one of Back-Cover Text may be
+     added by (or through arrangements made by) any one entity.  If the
+     Document already includes a cover text for the same cover,
+     previously added by you or by arrangement made by the same entity
+     you are acting on behalf of, you may not add another; but you may
+     replace the old one, on explicit permission from the previous
+     publisher that added the old one.
+
+     The author(s) and publisher(s) of the Document do not by this
+     License give permission to use their names for publicity for or to
+     assert or imply endorsement of any Modified Version.
+
+  5. COMBINING DOCUMENTS
+
+     You may combine the Document with other documents released under
+     this License, under the terms defined in section 4 above for
+     modified versions, provided that you include in the combination
+     all of the Invariant Sections of all of the original documents,
+     unmodified, and list them all as Invariant Sections of your
+     combined work in its license notice, and that you preserve all
+     their Warranty Disclaimers.
+
+     The combined work need only contain one copy of this License, and
+     multiple identical Invariant Sections may be replaced with a single
+     copy.  If there are multiple Invariant Sections with the same name
+     but different contents, make the title of each such section unique
+     by adding at the end of it, in parentheses, the name of the
+     original author or publisher of that section if known, or else a
+     unique number.  Make the same adjustment to the section titles in
+     the list of Invariant Sections in the license notice of the
+     combined work.
+
+     In the combination, you must combine any sections Entitled
+     "History" in the various original documents, forming one section
+     Entitled "History"; likewise combine any sections Entitled
+     "Acknowledgements," and any sections Entitled "Dedications."  You
+     must delete all sections Entitled "Endorsements."
+
+  6. COLLECTIONS OF DOCUMENTS
+
+     You may make a collection consisting of the Document and other
+     documents released under this License, and replace the individual
+     copies of this License in the various documents with a single copy
+     that is included in the collection, provided that you follow the
+     rules of this License for verbatim copying of each of the
+     documents in all other respects.
+
+     You may extract a single document from such a collection, and
+     distribute it individually under this License, provided you insert
+     a copy of this License into the extracted document, and follow
+     this License in all other respects regarding verbatim copying of
+     that document.
+
+  7. AGGREGATION WITH INDEPENDENT WORKS
+
+     A compilation of the Document or its derivatives with other
+     separate and independent documents or works, in or on a volume of
+     a storage or distribution medium, is called an "aggregate" if the
+     copyright resulting from the compilation is not used to limit the
+     legal rights of the compilation's users beyond what the individual
+     works permit.  When the Document is included in an aggregate, this
+     License does not apply to the other works in the aggregate which
+     are not themselves derivative works of the Document.
+
+     If the Cover Text requirement of section 3 is applicable to these
+     copies of the Document, then if the Document is less than one half
+     of the entire aggregate, the Document's Cover Texts may be placed
+     on covers that bracket the Document within the aggregate, or the
+     electronic equivalent of covers if the Document is in electronic
+     form.  Otherwise they must appear on printed covers that bracket
+     the whole aggregate.
+
+  8. TRANSLATION
+
+     Translation is considered a kind of modification, so you may
+     distribute translations of the Document under the terms of section
+     4.  Replacing Invariant Sections with translations requires special
+     permission from their copyright holders, but you may include
+     translations of some or all Invariant Sections in addition to the
+     original versions of these Invariant Sections.  You may include a
+     translation of this License, and all the license notices in the
+     Document, and any Warranty Disclaimers, provided that you also
+     include the original English version of this License and the
+     original versions of those notices and disclaimers.  In case of a
+     disagreement between the translation and the original version of
+     this License or a notice or disclaimer, the original version will
+     prevail.
+
+     If a section in the Document is Entitled "Acknowledgements,"
+     "Dedications," or "History," the requirement (section 4) to
+     Preserve its Title (section 1) will typically require changing the
+     actual title.
+
+  9. TERMINATION
+
+     You may not copy, modify, sublicense, or distribute the Document
+     except as expressly provided for under this License.  Any other
+     attempt to copy, modify, sublicense or distribute the Document is
+     void, and will automatically terminate your rights under this
+     License.  However, parties who have received copies, or rights,
+     from you under this License will not have their licenses
+     terminated so long as such parties remain in full compliance.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+     The Free Software Foundation may publish new, revised versions of
+     the GNU Free Documentation License from time to time.  Such new
+     versions will be similar in spirit to the present version, but may
+     differ in detail to address new problems or concerns.  See
+     http://www.gnu.org/copyleft/.
+
+     Each version of the License is given a distinguishing version
+     number.  If the Document specifies that a particular numbered
+     version of this License "or any later version" applies to it, you
+     have the option of following the terms and conditions either of
+     that specified version or of any later version that has been
+     published (not as a draft) by the Free Software Foundation.  If
+     the Document does not specify a version number of this License,
+     you may choose any version ever published (not as a draft) by the
+     Free Software Foundation.
+
+
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+     Copyright (C)  YEAR  YOUR NAME.
+     Permission is granted to copy, distribute and/or modify this document
+     under the terms of the GNU Free Documentation License, Version 1.2
+     or any later version published by the Free Software Foundation;
+     with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+     A copy of the license is included in the section entitled ``GNU
+     Free Documentation License.''
+
+   If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+     with the Invariant Sections being LIST THEIR TITLES, with the
+     Front-Cover Texts being LIST, and with the Back-Cover Texts being
+     LIST.
+
+   If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+   If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License, to
+permit their use in free software.
+
+\1f
+File: muse.info,  Node: Concept Index,  Prev: GNU Free Documentation License,  Up: Top
+
+Index
+*****
+
+\0\b[index\0\b]
+* Menu:
+
+* #author:                               Directives.           (line 18)
+* #date:                                 Directives.           (line 24)
+* #desc:                                 Directives.           (line 30)
+* #title:                                Directives.           (line 36)
+* anchors:                               Horizontal Rules and Anchors.
+                                                               (line 13)
+* blog, journal style:                   Journal.              (line  6)
+* blog, one-file-per-entry style:        Blosxom.              (line  6)
+* bugs, reporting:                       Getting Help and Reporting Bugs.
+                                                               (line  6)
+* citations:                             Citations.            (line  6)
+* comments:                              Comments.             (line  6)
+* compiling Muse:                        Installation.         (line 11)
+* contributors:                          Contributors.         (line  6)
+* dashes:                                Horizontal Rules and Anchors.
+                                                               (line  6)
+* Debian package for Muse:               Releases.             (line 12)
+* developer, becoming:                   Development.          (line 91)
+* development:                           Development.          (line  6)
+* directives:                            Directives.           (line  6)
+* editing Muse files <1>:                Publishing Files Overview.
+                                                               (line  6)
+* editing Muse files:                    Using Muse Mode.      (line  6)
+* ELPA package for Muse:                 Installation.         (line 64)
+* Email addresses:                       Implicit Links.       (line  6)
+* emphasizing text:                      Emphasizing Text.     (line  6)
+* examples:                              Paragraphs.           (line 21)
+* file extension, specifying:            File Extensions.      (line  6)
+* footnotes:                             Footnotes.            (line  6)
+* git version control system, using:     Development.          (line  9)
+* headings:                              Headings.             (line  6)
+* help, getting:                         Getting Help and Reporting Bugs.
+                                                               (line  6)
+* history, of Muse:                      History.              (line  6)
+* horizontal rules:                      Horizontal Rules and Anchors.
+                                                               (line  6)
+* HTML, inserting a raw block:           Paragraphs.           (line 28)
+* HTML, rendering blocks in monospace:   Paragraphs.           (line 21)
+* images:                                Images.               (line  6)
+* images, captions:                      Images.               (line 53)
+* images, displaying:                    Images.               (line 22)
+* images, inlined:                       Images.               (line 43)
+* images, local:                         Images.               (line 22)
+* images, without descriptions:          Images.               (line 43)
+* inserting files at publish time:       Tag Summary.          (line  6)
+* installing Muse:                       Installation.         (line 38)
+* inter-project links:                   Implicit Links.       (line 29)
+* InterWiki links:                       Implicit Links.       (line 29)
+* italicizing text:                      Emphasizing Text.     (line  6)
+* journal:                               Journal.              (line  6)
+* keystrokes:                            Keystroke Summary.    (line  6)
+* line breaks:                           Paragraphs.           (line 46)
+* links, explicit:                       Explicit Links.       (line  6)
+* links, implicit:                       Implicit Links.       (line  6)
+* links, raw:                            Implicit Links.       (line  6)
+* links, with images:                    Images.               (line  6)
+* links, with target on same page:       Horizontal Rules and Anchors.
+                                                               (line 13)
+* lisp, and insert command:              Embedded Lisp.        (line 13)
+* lisp, embedded:                        Embedded Lisp.        (line  6)
+* lists:                                 Lists.                (line  6)
+* lists, breaking lines:                 Lists.                (line 52)
+* lists, bullets:                        Lists.                (line 10)
+* lists, definitions:                    Lists.                (line 24)
+* lists, enumerated:                     Lists.                (line 17)
+* lists, nested:                         Lists.                (line 36)
+* literal text:                          Paragraphs.           (line 28)
+* markup:                                Markup Rules.         (line  6)
+* monospace, rendering blocks:           Paragraphs.           (line 21)
+* monospace, rendering words:            Emphasizing Text.     (line  6)
+* muse-define-style:                     Style Elements.       (line 11)
+* muse-derive-style:                     Deriving Styles.      (line 11)
+* muse-list-edit-minor-mode:             Muse List Edit Minor Mode.
+                                                               (line 44)
+* muse-project-alist, reference:         Options for Projects. (line  6)
+* muse-xml-encoding-map:                 XML.                  (line 22)
+* paragraphs:                            Paragraphs.           (line  6)
+* paragraphs, centered:                  Paragraphs.           (line  8)
+* paragraphs, quoted:                    Paragraphs.           (line 16)
+* poetry:                                Verse.                (line  6)
+* projects:                              Projects.             (line  6)
+* projects, multiple:                    Multiple Projects.    (line  6)
+* projects, options:                     Options for Projects. (line  6)
+* projects, single:                      Single Project.       (line  6)
+* projects, subdirectories:              Projects and Subdirectories.
+                                                               (line  6)
+* publishing styles:                     Publishing Styles.    (line  6)
+* publishing styles, blosxom-html:       Blosxom Options.      (line 12)
+* publishing styles, blosxom-xhtml:      Blosxom Options.      (line 15)
+* publishing styles, book-latex:         Book.                 (line 56)
+* publishing styles, book-pdf:           Book.                 (line 60)
+* publishing styles, chapbook-latex:     Poem.                 (line 45)
+* publishing styles, chapbook-pdf:       Poem.                 (line 48)
+* publishing styles, context:            ConTeXt.              (line 15)
+* publishing styles, context-pdf:        ConTeXt.              (line 18)
+* publishing styles, context-slides:     ConTeXt.              (line 22)
+* publishing styles, context-slides-pdf: ConTeXt.              (line 40)
+* publishing styles, deriving:           Deriving Styles.      (line  6)
+* publishing styles, docbook:            DocBook.              (line 11)
+* publishing styles, html:               HTML.                 (line 11)
+* publishing styles, ikiwiki:            Ikiwiki.              (line 28)
+* publishing styles, info-pdf:           Texinfo.              (line 17)
+* publishing styles, journal-book-latex: Journal.              (line 82)
+* publishing styles, journal-book-pdf:   Journal.              (line 85)
+* publishing styles, journal-html:       Journal.              (line 70)
+* publishing styles, journal-latex:      Journal.              (line 76)
+* publishing styles, journal-pdf:        Journal.              (line 79)
+* publishing styles, journal-rdf:        Journal.              (line 88)
+* publishing styles, journal-rss:        Journal.              (line 91)
+* publishing styles, journal-rss-entry:  Journal.              (line 94)
+* publishing styles, journal-xhtml:      Journal.              (line 73)
+* publishing styles, latex:              LaTeX.                (line 23)
+* publishing styles, latexcjk:           LaTeX.                (line 30)
+* publishing styles, lecture-notes:      LaTeX.                (line 55)
+* publishing styles, lecture-notes-pdf:  LaTeX.                (line 61)
+* publishing styles, pdf:                LaTeX.                (line 26)
+* publishing styles, pdfcjk:             LaTeX.                (line 33)
+* publishing styles, poem-latex:         Poem.                 (line 39)
+* publishing styles, poem-pdf:           Poem.                 (line 42)
+* publishing styles, RSS 1.0:            Journal.              (line 88)
+* publishing styles, RSS 2.0:            Journal.              (line 91)
+* publishing styles, slides:             LaTeX.                (line 37)
+* publishing styles, slides-pdf:         LaTeX.                (line 52)
+* publishing styles, texi:               Texinfo.              (line 14)
+* publishing styles, xml:                XML.                  (line 15)
+* publishing, including markup in headers and footers: Tag Summary.
+                                                               (line  6)
+* publishing, inserting files:           Tag Summary.          (line  6)
+* publishing, markup functions:          Markup Functions.     (line  6)
+* publishing, markup regexps:            Markup Regexps.       (line  6)
+* publishing, markup strings:            Markup Strings.       (line  6)
+* publishing, markup tags:               Markup Tags.          (line  6)
+* publishing, omitting lines:            Comments.             (line  6)
+* publishing, rules:                     Markup Regexps.       (line  6)
+* publishing, style elements:            Style Elements.       (line  6)
+* quotations:                            Paragraphs.           (line 16)
+* releases, Debian package:              Releases.             (line 12)
+* releases, from source:                 Releases.             (line 31)
+* releases, Ubuntu package:              Releases.             (line 19)
+* settings:                              Getting Started.      (line  6)
+* settings, init file:                   Loading Muse.         (line  6)
+* tables:                                Tables.               (line  6)
+* tables, orgtbl-mode style:             Tables.               (line 26)
+* tables, simple:                        Tables.               (line  6)
+* tables, table.el style:                Tables.               (line 42)
+* tags:                                  Tag Summary.          (line  6)
+* tags, <cite>:                          Citations.            (line  6)
+* turn-off-muse-list-edit-minor-mode:    Muse List Edit Minor Mode.
+                                                               (line 67)
+* turn-on-muse-list-edit-minor-mode:     Muse List Edit Minor Mode.
+                                                               (line 64)
+* Ubuntu package for Muse:               Releases.             (line 19)
+* underlining text:                      Emphasizing Text.     (line  6)
+* updating Muse with git:                Development.          (line 66)
+* URLs:                                  Implicit Links.       (line  6)
+* verbatim text:                         Emphasizing Text.     (line  6)
+* verses:                                Verse.                (line  6)
+* verses, multiple stanzas:              Verse.                (line 20)
+* WikiNames:                             Implicit Links.       (line 18)
+* WYSIWYG:                               Emphasizing Text.     (line 15)
+
+
+\1f
+Tag Table:
+Node: Top\7f1427
+Node: Preface\7f7398
+Node: Introduction\7f7871
+Node: Obtaining Muse\7f9320
+Node: Releases\7f9657
+Node: Development\7f11046
+Node: Installation\7f14905
+Node: Getting Started\7f17564
+Node: Loading Muse\7f17946
+Node: Using Muse Mode\7f18893
+Node: Publishing Files Overview\7f20926
+Node: File Extensions\7f22170
+Node: Projects\7f23390
+Node: Single Project\7f24012
+Node: Multiple Projects\7f24962
+Node: Projects and Subdirectories\7f26365
+Node: Options for Projects\7f28048
+Node: Keystroke Summary\7f32872
+Node: Markup Rules\7f34991
+Node: Paragraphs\7f36710
+Node: Headings\7f38711
+Node: Directives\7f39334
+Node: Emphasizing Text\7f40654
+Node: Footnotes\7f41431
+Node: Verse\7f42068
+Node: Lists\7f42812
+Node: Tables\7f44361
+Node: Explicit Links\7f46095
+Node: Implicit Links\7f46810
+Node: Images\7f49153
+Node: Horizontal Rules and Anchors\7f51643
+Node: Embedded Lisp\7f52291
+Node: Citations\7f53387
+Node: Comments\7f55871
+Node: Tag Summary\7f56530
+Node: Publishing Styles\7f64773
+Node: Blosxom\7f65872
+Node: Blosxom Requirements\7f66479
+Node: Blosxom Entries\7f70014
+Node: Blosxom Options\7f71577
+Node: Book\7f72505
+Node: ConTeXt\7f75564
+Node: DocBook\7f79691
+Node: HTML\7f81168
+Node: Ikiwiki\7f85163
+Node: Journal\7f87502
+Node: LaTeX\7f94029
+Node: Poem\7f99573
+Node: Texinfo\7f101782
+Node: XML\7f103699
+Node: Extending Muse\7f105730
+Node: Markup Functions\7f106367
+Ref: muse-publish-markup-functions\7f106540
+Node: Markup Regexps\7f107194
+Ref: muse-publish-markup-regexps\7f107372
+Node: Markup Strings\7f110379
+Node: Markup Tags\7f116839
+Ref: muse-publish-markup-tags\7f117032
+Node: Style Elements\7f118151
+Node: Deriving Styles\7f121558
+Node: Miscellaneous\7f122857
+Node: Muse List Edit Minor Mode\7f123142
+Node: Getting Help and Reporting Bugs\7f125621
+Node: History\7f128923
+Node: Contributors\7f129706
+Node: GNU Free Documentation License\7f130214
+Node: Concept Index\7f152443
+\1f
+End Tag Table
diff --git a/packages/muse/texi/Makefile b/packages/muse/texi/Makefile
new file mode 100644 (file)
index 0000000..8f9f341
--- /dev/null
@@ -0,0 +1,29 @@
+.PHONY: all info-only doc clean realclean distclean fullclean install
+.PRECIOUS: %.info %.html
+
+DEFS = $(shell test -f ../Makefile.defs && echo ../Makefile.defs \
+       || echo ../Makefile.defs.default)
+
+include $(DEFS)
+
+all: doc
+
+%.info: %.texi
+       makeinfo $<
+
+%.html: %.texi
+       makeinfo --html --no-split $<
+
+info-only: $(MANUAL).info
+
+doc: $(MANUAL).info $(MANUAL).html
+
+clean: ;
+
+distclean realclean fullclean: clean
+       -rm -f $(MANUAL).info $(MANUAL).html
+
+install: $(MANUAL).info
+       [ -d $(INFODIR) ] || install -d $(INFODIR)
+       install -m 0644 $(MANUAL).info $(INFODIR)/$(MANUAL)
+       $(call install_info,$(MANUAL))
diff --git a/packages/muse/texi/dir-template b/packages/muse/texi/dir-template
new file mode 100644 (file)
index 0000000..08346cd
--- /dev/null
@@ -0,0 +1,15 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+\1f
+File: dir,     Node: Top       This is the top of the INFO tree
+
+  This (the Directory node) gives a menu of major topics.
+  Typing "q" exits, "?" lists all Info commands, "d" returns here,
+  "h" gives a primer for first-timers,
+  "mEmacs<Return>" visits the Emacs manual, etc.
+
+  In Emacs, you can click mouse button 2 on a menu item or cross reference
+  to select it.
+
+* Menu:
diff --git a/packages/muse/texi/doclicense.texi b/packages/muse/texi/doclicense.texi
new file mode 100644 (file)
index 0000000..83e9d6b
--- /dev/null
@@ -0,0 +1,416 @@
+@c -*-texinfo-*-
+@center Version 1.2, November 2002
+
+@display
+Copyright (C) 2000,2001,2002  Free Software Foundation, Inc.
+51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+@end display
+@sp 1
+@enumerate 0
+@item
+PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document ``free'' in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of ``copyleft,'' which means that derivative
+works of the document must themselves be free in the same sense.  It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does.  But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book.  We recommend this License
+principally for works whose purpose is instruction or reference.
+
+@sp 1
+@item
+APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License.  Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein.  The ``Document,'' below,
+refers to any such manual or work.  Any member of the public is a
+licensee, and is addressed as ``you.''  You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A ``Modified Version'' of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A ``Secondary Section'' is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject.  (Thus, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.)  The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The ``Invariant Sections'' are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.  If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant.  The Document may contain zero
+Invariant Sections.  If the Document does not identify any Invariant
+Sections then there are none.
+
+The ``Cover Texts'' are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.  A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A ``Transparent'' copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters.  A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text.  A copy that is not ``Transparent'' is called ``Opaque.''
+
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification.  Examples of
+transparent image formats include PNG, XCF and JPG.  Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The ``Title Page'' means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page.  For works in
+formats which do not have any title page as such, ``Title Page'' means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+A section ``Entitled XYZ'' means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language.  (Here XYZ stands for a
+specific section name mentioned below, such as ``Acknowledgements,''
+``Dedications,'' ``Endorsements,'' or ``History.'')  To ``Preserve the Title''
+of such a section when you modify the Document means that it remains a
+section ``Entitled XYZ'' according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document.  These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+@sp 1
+@item
+VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License.  You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute.  However, you may accept
+compensation in exchange for copies.  If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+@sp 1
+@item
+COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover.  Both covers must also clearly and legibly identify
+you as the publisher of these copies.  The front cover must present
+the full title with all words of the title equally prominent and
+visible.  You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+@sp 1
+@item
+MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it.  In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+   from that of the Document, and from those of previous versions
+   (which should, if there were any, be listed in the History section
+   of the Document).  You may use the same title as a previous version
+   if the original publisher of that version gives permission.@*
+B. List on the Title Page, as authors, one or more persons or entities
+   responsible for authorship of the modifications in the Modified
+   Version, together with at least five of the principal authors of the
+   Document (all of its principal authors, if it has fewer than five),
+   unless they release you from this requirement.@*
+C. State on the Title page the name of the publisher of the
+   Modified Version, as the publisher.@*
+D. Preserve all the copyright notices of the Document.@*
+E. Add an appropriate copyright notice for your modifications
+   adjacent to the other copyright notices.@*
+F. Include, immediately after the copyright notices, a license notice
+   giving the public permission to use the Modified Version under the
+   terms of this License, in the form shown in the Addendum below.@*
+G. Preserve in that license notice the full lists of Invariant Sections
+   and required Cover Texts given in the Document's license notice.@*
+H. Include an unaltered copy of this License.@*
+I. Preserve the section Entitled ``History,'' Preserve its Title, and add
+   to it an item stating at least the title, year, new authors, and
+   publisher of the Modified Version as given on the Title Page.  If
+   there is no section Entitled ``History'' in the Document, create one
+   stating the title, year, authors, and publisher of the Document as
+   given on its Title Page, then add an item describing the Modified
+   Version as stated in the previous sentence.@*
+J. Preserve the network location, if any, given in the Document for
+   public access to a Transparent copy of the Document, and likewise
+   the network locations given in the Document for previous versions
+   it was based on.  These may be placed in the ``History'' section.
+   You may omit a network location for a work that was published at
+   least four years before the Document itself, or if the original
+   publisher of the version it refers to gives permission.@*
+K. For any section Entitled ``Acknowledgements'' or ``Dedications,''
+   Preserve the Title of the section, and preserve in the section all
+   the substance and tone of each of the contributor acknowledgements
+   and/or dedications given therein.@*
+L. Preserve all the Invariant Sections of the Document,
+   unaltered in their text and in their titles.  Section numbers
+   or the equivalent are not considered part of the section titles.@*
+M. Delete any section Entitled ``Endorsements.''  Such a section
+   may not be included in the Modified Version.@*
+N. Do not retitle any existing section to be Entitled ``Endorsements''
+   or to conflict in title with any Invariant Section.@*
+O. Preserve any Warranty Disclaimers.@*
+@sp 1
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant.  To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled ``Endorsements,'' provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version.  Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity.  If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+@sp 1
+@item
+COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy.  If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled ``History''
+in the various original documents, forming one section Entitled
+``History''; likewise combine any sections Entitled ``Acknowledgements,''
+and any sections Entitled ``Dedications.''  You must delete all sections
+Entitled ``Endorsements.''
+@sp 1
+@item
+COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+@sp 1
+@item
+AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an ``aggregate'' if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+@sp 1
+@item
+TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections.  You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers.  In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled ``Acknowledgements,''
+``Dedications,'' or ``History,'' the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+@sp 1
+@item
+TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License.  Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License.  However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+@sp 1
+@item
+FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time.  Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.  See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License ``or any later version'' applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation.  If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+@end enumerate
+
+@unnumberedsec ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+@smallexample
+@group
+Copyright (C)  @var{year}  @var{your name}.
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled ``GNU
+Free Documentation License.''
+@end group
+@end smallexample
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the ``with...Texts.'' line with this:
+
+@smallexample
+@group
+with the Invariant Sections being @var{list their titles}, with the
+Front-Cover Texts being @var{list}, and with the Back-Cover Texts being
+@var{list}.
+@end group
+@end smallexample
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+
+@ignore
+   arch-tag: c1679162-1d8a-4f02-bc52-2e71765f0165
+@end ignore
diff --git a/packages/muse/texi/muse.texi b/packages/muse/texi/muse.texi
new file mode 100644 (file)
index 0000000..f62c030
--- /dev/null
@@ -0,0 +1,4247 @@
+\input texinfo @c -*-texinfo-*-
+@c %**start of header
+@setfilename muse.info
+@settitle Muse
+@c %**end of header
+
+@dircategory Emacs
+@direntry
+* Muse: (muse). Authoring and publishing environment for Emacs.
+@end direntry
+
+@syncodeindex fn cp
+
+@copying
+This manual is for Emacs Muse version 3.20.
+
+Copyright @copyright{} 2004, 2005, 2006, 2007,
+2008, 2009, 2010  Free Software Foundation, Inc.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover texts being ``A GNU
+Manual'', and with the Back-Cover Texts as in (a) below.  A copy of the
+license is included in the section entitled ``GNU Free Documentation
+License'' in this manual.
+
+(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
+this GNU Manual, like GNU software.  Copies published by the Free
+Software Foundation raise funds for GNU development.''
+
+This document is part of a collection distributed under the GNU Free
+Documentation License.  If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
+
+All Emacs Lisp code contained in this document may be used, distributed,
+and modified without restriction.
+@end quotation
+@end copying
+
+@titlepage
+@title Muse manual
+@subtitle an authoring and publishing environment
+@subtitle for GNU Emacs and XEmacs
+
+@c The following two commands
+@c start the copyright page.
+@page
+@vskip 0pt plus 1filll
+@insertcopying
+@end titlepage
+
+@c So the toc is printed at the start
+@contents
+
+@ifnottex
+@node Top, Preface, (dir), (dir)
+@comment  node-name,  next,  previous,  up
+@top Muse
+
+@insertcopying
+@end ifnottex
+
+@menu
+* Preface::                     About the documentation.
+* Introduction::                What is Muse?
+* Obtaining Muse::              How to get Muse releases and development
+                                  changes.
+* Installation::                Compiling and installing Muse.
+* Getting Started::             Setting up Muse and editing files.
+* Projects::                    Creating and managing Muse projects.
+* Keystroke Summary::           Keys used in Muse mode.
+* Markup Rules::                Rules for using markup.
+* Publishing Styles::           Publishing various types of documents.
+* Extending Muse::              Making your own publishing styles.
+* Miscellaneous::               Miscellaneous add-ons, like a minor mode.
+* Getting Help and Reporting Bugs::  
+* History::                     History of this document.
+* Contributors::                Contributors to this documentation.
+* GNU Free Documentation License::  The license for this documentation.
+* Concept Index::               Search for terms.
+
+@detailmenu
+ --- The Detailed Node Listing ---
+
+How to Get Muse Releases and Development Changes
+
+* Releases::                    Released versions of Muse.
+* Development::                 Latest unreleased development changes.
+
+Getting Started
+
+* Loading Muse::                How to load Muse.
+* Using Muse Mode::             How to edit files in Muse.
+* Publishing Files Overview::   Publishing a single file or project.
+* File Extensions::             Using a different file extension.
+
+Creating and Managing Muse Projects
+
+* Single Project::              A single-project example.
+* Multiple Projects::           A multiple-project example.
+* Projects and Subdirectories::  Publishing subdirectories in projects.
+* Options for Projects::        Listing of available options for projects.
+
+Rules for Using Markup
+
+* Paragraphs::                  Paragraphs: centering and quoting.
+* Headings::                    Levels of headings.
+* Directives::                  Directives at the beginning of a
+                                  document.
+* Emphasizing Text::            Bold, italicized, and underlined text.
+* Footnotes::                   Making notes to be shown at the end.
+* Verse::                       Indicating poetic stanzas.
+* Lists::                       Lists of items.
+* Tables::                      Generation of data tables.
+* Explicit Links::              Hyperlinks and email addresses with
+                                  descriptions.
+* Implicit Links::              Bare URLs, WikiNames, and InterWiki
+                                  links.
+* Images::                      Publishing and displaying images.
+* Horizontal Rules and Anchors::  Inserting a horizontal line or anchor.
+* Embedded Lisp::               Evaluating Emacs Lisp code in documents
+                                  for extensibility.
+* Citations::                   Support for citing other resources.
+* Comments::                    Lines to omit from published output.
+* Tag Summary::                 Tags that Muse recognizes.
+
+Publishing Various Types of Documents
+
+* Blosxom::                     Integrating Muse and pyblosxom.cgi.
+* Book::                        Publishing entries into a compilation.
+* ConTeXt::                     Publishing ConTeXt documents.
+* DocBook::                     Publishing in DocBook XML form.
+* HTML::                        Publishing in HTML or XHTML form.
+* Ikiwiki::                     Integrating with ikiwiki.
+* Journal::                     Keeping a journal or blog.
+* LaTeX::                       Publishing LaTeX documents.
+* Poem::                        Publish a poem to LaTeX or PDF.
+* Texinfo::                     Publish entries to Texinfo format or PDF.
+* XML::                         Publish entries to XML.
+
+Integrating Muse and pyblosxom.cgi
+
+* Blosxom Requirements::        Other tools needed for the Blosxom style.
+* Blosxom Entries::             Format of a Blosxom entry and automation.
+* Blosxom Options::             Blosxom styles and options provided.
+
+Making your own publishing styles
+
+* Markup Functions::            Specifying functions to mark up text.
+* Markup Regexps::              Markup rules for publishing.
+* Markup Strings::              Strings specific to a publishing style.
+* Markup Tags::                 Tag specifications for special markup.
+* Style Elements::              Parameters used for defining styles.
+* Deriving Styles::             Deriving a new style from an existing
+                                  one.
+
+Miscellaneous add-ons, like a minor mode
+
+* Muse List Edit Minor Mode::   Edit lists easily in other major modes.
+
+@end detailmenu
+@end menu
+
+@node Preface, Introduction, Top, Top
+@comment  node-name,  next,  previous,  up
+@chapter About the documentation
+
+This document describes Muse, which was written by John Wiegley and is
+now maintained by Michael Olson.  Several versions of this manual are
+available on-line.
+
+@itemize @bullet
+@item PDF: http://mwolson.org/static/doc/muse.pdf
+@item HTML (single file): http://mwolson.org/static/doc/muse.html
+@item HTML (multiple files): http://mwolson.org/static/doc/muse/
+@end itemize
+
+@node Introduction, Obtaining Muse, Preface, Top
+@comment  node-name,  next,  previous,  up
+@chapter What is Muse?
+
+Emacs Muse (also known as ``Muse'' or ``Emacs-Muse'') is an authoring
+and publishing environment for Emacs.  It simplifies the process of
+writing documents and publishing them to various output formats.
+
+Muse consists of two main parts: an enhanced text-mode for authoring
+documents and navigating within Muse projects, and a set of publishing
+styles for generating different kinds of output.
+
+What makes Muse distinct from other text-publishing systems is a modular
+environment, with a rather simple core, in which "styles" are derived
+from to create new styles.  Much of Muse's overall functionality is
+optional.  For example, you can use the publisher without the
+major-mode, or the mode without doing any publishing; or if you don't
+load the Texinfo or LaTeX modules, those styles won't be available.
+
+The Muse codebase is a departure from emacs-wiki.el version 2.44. The
+code has been restructured and rewritten, especially its publishing
+functions.  The focus in this revision is on the authoring and
+publishing aspects, and the "wikiness" has been removed as a default
+behavior (available in the optional @file{muse-wiki} module).  CamelCase
+words are no longer special by default.
+
+One of the principal aims in the development of Muse is to make it very
+easy to produce good-looking, standards-compliant documents.
+
+@node Obtaining Muse, Installation, Introduction, Top
+@comment  node-name,  next,  previous,  up
+@chapter How to Get Muse Releases and Development Changes
+
+@menu
+* Releases::                    Released versions of Muse.
+* Development::                 Latest unreleased development changes.
+@end menu
+
+@node Releases, Development, Obtaining Muse, Obtaining Muse
+@comment  node-name,  next,  previous,  up
+@section Released versions of Muse
+
+Choose to install a release if you want to minimize risk.
+
+Errors are corrected in development first.  User-visible changes will be
+announced on the @email{muse-el-discuss@@gna.org} mailing list.
+@xref{Getting Help and Reporting Bugs}.
+
+@cindex releases, Debian package
+@cindex Debian package for Muse
+Debian users can get Muse via apt-get.  The @file{muse-el} package is
+available both at Michael Olson's APT repository and the official Debian
+repository.  To make use of the former, add the following line to your
+@file{/etc/apt/sources.list} file and run @code{apt-get install muse}.
+
+@example
+deb http://mwolson.org/debian/ ./
+@end example
+
+@cindex releases, Ubuntu package
+@cindex Ubuntu package for Muse
+Ubuntu users can also get Muse via apt-get.  The @file{muse-el} package
+is available both at Michael Olson's APT repository and the official
+Ubuntu repository.  To make use of the former, add the following line to
+your @file{/etc/apt/sources.list} file and run @code{apt-get install
+muse}.
+
+@example
+deb http://mwolson.org/ubuntu/ ./
+@end example
+
+The reason for making separate Debian and Ubuntu packages is that this
+manual is under the GFDL, and Debian will not allow it to be distributed
+in its main repository.  Ubuntu, on the other hand, permits this manual
+to be included with the @file{muse-el} package.
+
+@cindex releases, from source
+Alternatively, you can download the latest release from
+@uref{http://download.gna.org/muse-el/} .
+
+@node Development,  , Releases, Obtaining Muse
+@comment  node-name,  next,  previous,  up
+@section Latest unreleased development changes
+@cindex development
+
+Choose the development version if you want to live on the bleeding edge
+of Muse development or try out new features before release.
+
+@cindex git version control system, using
+The git version control system allows you to keep up-to-date with the
+latest changes to the development version of Muse.  It also allows you
+to contribute changes (via commits, if you are have developer access to
+the repository, or via patches, otherwise).  If you would like to
+contribute to Muse development, it is highly recommended that you use
+git.
+
+If you are new to git, you might find this tutorial helpful:
+@uref{http://www.kernel.org/pub/software/scm/git/docs/tutorial.html}.
+
+Downloading the Muse module with git and staying up-to-date involves
+the following steps.
+
+@enumerate
+@item Install git.
+
+@itemize @bullet
+@item Debian and Ubuntu: @kbd{apt-get install git-core}.
+@item Windows: @uref{http://git.or.cz/gitwiki/WindowsInstall}.
+@item Other operating systems: download, compile, and install the source
+from @uref{http://www.kernel.org/pub/software/scm/git/}, or find a git
+package for your operating system.
+@end itemize
+
+@item Download the Muse development branch.
+
+If you have developer access to Muse, do:
+
+@example
+git clone ssh://repo.or.cz/srv/git/muse-el.git muse
+@end example
+
+otherwise, do:
+
+@example
+git clone git://repo.or.cz/muse-el.git muse
+@end example
+
+If you are behind a restrictive firewall, and do not have developer
+access, then do the following instead:
+
+@example
+git clone http://repo.or.cz/r/muse-el.git muse
+@end example
+
+@item List upstream changes that are missing from your local copy.
+Do this whenever you want to see whether new changes have been committed
+to Muse.  If you wish, you may skip this step and proceed directly to
+the ``update'' step.
+
+@example
+# Change to the source directory you are interested in.
+cd muse
+
+# Fetch new changes from the repository, but don't apply them yet
+git fetch origin
+
+# Display log messages for the new changes
+git log HEAD..origin
+@end example
+
+``origin'' is git's name for the location where you originally got Muse
+from.  You can change this location at any time by editing the
+@file{.git/config} file in the directory where the Muse source was
+placed.
+
+@cindex updating Muse with git
+@item Update to the latest version by pulling in any missing changes.
+
+@example
+cd muse
+git pull origin
+@end example
+
+git will show how many files changed, and will provide a visual display
+for how many lines were changed in each file.
+
+@end enumerate
+
+There are other ways to interact with the Muse repository.
+
+@itemize
+@item Browse git repo: @uref{http://repo.or.cz/w/muse-el.git}
+@item Latest development snapshot: @uref{http://mwolson.org/static/dist/muse-latest.tar.gz}
+@item Latest development snapshot (zip file): @uref{http://mwolson.org/static/dist/muse-latest.zip}
+@end itemize
+
+The latest development snapshot can lag behind the git repo by as much
+as 20 minutes, but never more than that.
+
+@subheading Becoming a Muse developer
+@cindex developer, becoming
+
+If you want commit access to the shared Muse repository, then register
+an account at @uref{http://repo.or.cz} (be sure to add an SSH key), and
+contact the current maintainer at @email{mwolson@@gnu.org}.  It would be
+best to send some patches to the @email{muse-el-discuss@@gna.org}
+mailing list first, so that he knows that you know what you are doing.
+@xref{Getting Help and Reporting Bugs}, for instructions on subscribing
+to the mailing list.
+
+You must also be willing to sign a copyright assignment for your changes
+to Muse, since Muse is a GNU project.  The current maintainer will
+assist you in this process if you contact him.
+
+For information on committing changes to Muse and performing
+development, please consult
+@uref{http://emacswiki.org/cgi-bin/wiki/MuseDevelopment}.
+
+@node Installation, Getting Started, Obtaining Muse, Top
+@comment  node-name,  next,  previous,  up
+@chapter Compiling and Installing Muse
+
+Muse may be compiled and installed on your machine.
+
+@subheading Compilation
+@cindex compiling Muse
+
+This is an optional step, since Emacs Lisp source code does not
+necessarily have to be byte-compiled.  Byte-compilation may yield a very
+slight speed increase.
+
+A working copy of Emacs or XEmacs is needed in order to compile Emacs
+Muse.  By default, the program that is installed with the name
+@command{emacs} will be used.
+
+If you want to use the @command{xemacs} binary to perform the
+compilation, you must copy @file{Makefile.defs.default} to
+@file{Makefile.defs} in the top-level directory, and then edit
+@file{Makefile.defs} as follows.  You can put either a full path to an
+Emacs or XEmacs binary or just the command name, as long as it is in the
+@env{PATH}.
+
+@example
+EMACS    = xemacs
+SITEFLAG = -no-site-file
+# Edit the section as necessary
+install_info = install-info --section "XEmacs 21.4" $(1).info \
+        $(INFODIR)/dir || :
+@end example
+
+Running @code{make} in the top-level directory should compile the Muse
+source files in the @file{lisp} directory, and generate an autoloads
+file in @file{lisp/muse-autoloads.el}.
+
+@subheading Installation
+@cindex installing Muse
+
+Muse may be installed into your file hierarchy by doing the following.
+
+Copy @file{Makefile.defs.default} to @file{Makefile.defs} in the
+top-level directory, if you haven't done so already.  Then edit the
+@file{Makefile.defs} file so that @env{ELISPDIR} points to where you
+want the source and compiled Muse files to be installed and
+@env{INFODIR} indicates where to put the Muse manual.  You may use a
+combination of @env{DESTDIR} and @env{PREFIX} to further determine where
+the installed files should be placed.  As mentioned earlier, you will
+want to edit @env{EMACS} and @env{SITEFLAG} as shown in the Compilation
+section if you are using XEmacs.
+
+If you are installing Muse on a Debian or Ubuntu system, you might want
+to change the value of @env{INSTALLINFO} as specified in
+@file{Makefile.defs}.
+
+If you wish to install Muse to different locations than the defaults
+specify, edit @file{Makefile.defs} accordingly.
+
+Run @code{make} as a normal user, if you haven't done so already.
+
+Run @code{make install} as the root user if you have chosen installation
+locations that require root permissions.
+
+@subheading ELPA
+@cindex ELPA package for Muse
+
+For those used to installing software packages, there will be a
+@code{muse} package available in the Emacs Lisp Package Archive
+(abbreviated ``ELPA'') as of the 3.10 release of Muse.  This package
+will be compiled and installed automatically in a user-specific
+location.  For more information on ELPA, see
+@uref{http://tromey.com/elpa/}.
+
+@node Getting Started, Projects, Installation, Top
+@comment  node-name,  next,  previous,  up
+@chapter Getting Started
+@cindex settings
+
+@menu
+* Loading Muse::                How to load Muse.
+* Using Muse Mode::             How to edit files in Muse.
+* Publishing Files Overview::   Publishing a single file or project.
+* File Extensions::             Using a different file extension.
+@end menu
+
+@node Loading Muse, Using Muse Mode, Getting Started, Getting Started
+@comment  node-name,  next,  previous,  up
+@section How to Load Muse
+@cindex settings, init file
+
+To use Muse, add the directory containing its files to your
+@code{load-path} variable, in your @file{.emacs} file.  Then, load in
+the authoring mode, and the styles you wish to publish to.  An example
+follows.
+
+@lisp
+(add-to-list 'load-path "<path to Muse>")
+
+(require 'muse-mode)     ; load authoring mode
+
+(require 'muse-html)     ; load publishing styles I use
+(require 'muse-latex)
+(require 'muse-texinfo)
+(require 'muse-docbook)
+
+(require 'muse-project)  ; publish files in projects
+@end lisp
+
+An easy way of seeing which settings are available and changing settings
+is to use the Muse customization interface.  To do this, type
+@kbd{M-x customize-group muse RET}.  Each of the options has its own
+documentation.  Options are grouped logically according to what effect
+they have.
+
+@node Using Muse Mode, Publishing Files Overview, Loading Muse, Getting Started
+@comment  node-name,  next,  previous,  up
+@section How to Edit Files in Muse
+@cindex editing Muse files
+
+Muse Mode should automatically be activated when you visit a file with a
+``.muse'' extension.  One such file is @file{QuickStart.muse}, which is
+available in the @file{examples} directory of the Muse distribution.
+You can tell that Muse Mode has been activated by checking for the text
+``Muse'' in your mode line.  If Muse Mode has not been activated, you
+may activate it by type @kbd{M-x muse-mode RET}.
+
+You will notice that Muse files are highlighted very simply.  Links are
+colored blue, headings are large and bold text, and @verb{|<example>|}
+tags are colored in grey.
+
+There are several different ways to edit things like links, which hide
+the underlying Muse markup.  One way is to toggle font-locking off by
+hitting @kbd{C-c C-l}, which is also @kbd{M-x font-lock-mode}, make
+changes, and then hit @kbd{C-c C-l} again to toggle font-locking back
+on.  Another way is just to move into the text and edit it.  Markup can
+also be removed by normal deletion methods, though some side effects
+might require a second deletion.
+
+For the particular case of editing links, it is easiest to move to the
+link and do @kbd{C-c C-e}, which is also @kbd{M-x
+muse-edit-link-at-point}.  This prompts you for the link and its
+description, using the previous contents of the link as initial values.
+A link to another Muse file may be created by hitting @kbd{C-c TAB l}.
+A link to a URL may be created by hitting @kbd{C-c TAB u}.  Links may be
+followed by hitting @kbd{RET} on them.
+
+If you want to add a new list item, this may by accomplished by hitting
+@kbd{M-RET}.  This will put a dash and some spaces on the screen.  The
+dash is the Muse markup that indicates a list item.  It is also possible
+to created ``nested'' lists with this command, by adjusting the number
+of spaces in front of the dashes.  If you have lists with long lines,
+you can move to a list item and hit @kbd{M-q} to wrap it onto multiple
+lines.
+
+@node Publishing Files Overview, File Extensions, Using Muse Mode, Getting Started
+@comment  node-name,  next,  previous,  up
+@section Publishing a Single File or Project
+@cindex editing Muse files
+
+The command @kbd{M-x muse-project-publish-this-file} will publish the
+current document to any available publishing style (a publishing style
+is an output format, like HTML or Docbook), placing the output in the
+current directory.  If you are in Muse Mode, this command will be bound
+to @kbd{C-c C-t}.  If the file has been published recently, and its
+contents have not changed, running @kbd{C-c C-t} again will not publish
+the file.  To force publishing in this case, do @kbd{C-u C-c C-t}.
+
+If you have set up projects and are visiting a file that is part of a
+project, then @kbd{C-c C-t} will restrict the output formats to those
+which are used by the project, and will automatically publish to the
+output directory defined by the project.  If you want to publish to a
+different directory or use a different format, then use @kbd{C-c M-C-t},
+which is also @kbd{M-x muse-publish-this-file}.
+
+If the currently opened file is part of a defined project in
+@code{muse-project-alist}, it (and the rest of the changed files in a
+project) may be published using @kbd{C-c C-p}.
+
+@node File Extensions, , Publishing Files Overview, Getting Started
+@comment  node-name,  next,  previous,  up
+@section Using a Different File Extension
+@cindex file extension, specifying
+
+By default, Muse expects all project files to have the file extension
+@file{.muse}. Files without this extension will not be associated with
+Muse mode and will not be considered part of any project, even if they
+are within a project directory.
+
+If you don't want to use @file{.muse}, you can customize the extension
+by setting the value of @code{muse-file-extension}.
+
+If you don't want to use any extension at all, and want Muse to
+autodetect project files based on their location, then add the following
+to your Muse settings file.
+
+@lisp
+(setq muse-file-extension nil
+      muse-mode-auto-p t)
+@end lisp
+
+Note that if you chose to have @code{muse-file-extension} set to
+@code{nil}, you may have trouble if your @file{.emacs} file or other
+init scripts attempt to visit a Muse file.  (A very common example of
+this is if you use Planner with Muse and run @code{(plan)} from your
+@file{.emacs}.)  If you wish to visit Muse files from your
+@file{.emacs}, be sure to also add the following additional code before
+any such visits happen:
+
+@lisp
+(add-hook 'find-file-hooks 'muse-mode-maybe)
+@end lisp
+
+
+@node Projects, Keystroke Summary, Getting Started, Top
+@comment  node-name,  next,  previous,  up
+@chapter Creating and Managing Muse Projects
+@cindex projects
+
+Often you will want to publish all the files within a directory to a
+particular set of output styles automatically.  To support, Muse
+allows for the creation of "projects".
+
+@menu
+* Single Project::              A single-project example.
+* Multiple Projects::           A multiple-project example.
+* Projects and Subdirectories::  Publishing subdirectories in projects.
+* Options for Projects::        Listing of available options for projects.
+@end menu
+
+@node Single Project, Multiple Projects, Projects, Projects
+@comment  node-name,  next,  previous,  up
+@section A Single-Project Example
+@cindex projects, single
+
+Here is a sample project, which may be defined in your @file{.emacs}
+file.
+
+@lisp
+(setq muse-project-alist
+      '(("Website" ("~/Pages" :default "index")
+         (:base "html" :path "~/public_html")
+         (:base "pdf" :path "~/public_html/pdf"))))
+@end lisp
+
+The above defines a project named "website", whose files are located
+in the directory @file{~/Pages}.  The default page to visit is
+@file{index}.  When this project is published, each page will be
+output as HTML to the directory @file{~/public_html}, and as PDF to
+the directory @file{~/public_html/pdf}.  Within any project page, you
+may create a link to other pages using the syntax @samp{[[pagename]]}.
+
+If you would like to include only some files from a directory in a Muse
+project, you may use a regexp in place of @file{~/Pages} in the example.
+
+@node Multiple Projects, Projects and Subdirectories, Single Project, Projects
+@comment  node-name,  next,  previous,  up
+@section A Multiple-Project Example
+@cindex projects, multiple
+
+It is possible to specify multiple projects.  Here is an example of
+three projects: a generic website, a projects area, and a day-planner
+(the day-planner part requires Planner Mode---see
+@uref{http://wjsullivan.net/PlannerMode.html} to get it).
+
+@lisp
+(setq muse-project-alist
+      '(("Website" ("~/Pages" :default "index")
+         (:base "html" :path "~/public_html"))
+        (("Projects" ("~/Projects" :default "index")
+         (:base "xhtml"
+                :path "~/public_html/projects"
+                :exclude "/TopSecret")
+         (:base "pdf"
+                :path "~/public_html/projects/pdf"
+                :exclude "/TopSecret")))
+        ("Plans" ("~/Plans"
+                  :default "TaskPool"
+                  :major-mode planner-mode
+                  :visit-link planner-visit-link)
+         (:base "planner-xhtml"
+                :path "~/public_html/plans"))))
+@end lisp
+
+The @option{:major-mode} attribute specifies which major to use when
+visiting files in this directory.
+
+The @option{:visit-link} attribute specifies the function to call when
+visiting links.
+
+The @option{:exclude} attribute has a regexp that matches files to never
+publish.
+
+@node Projects and Subdirectories, Options for Projects, Multiple Projects, Projects
+@comment  node-name,  next,  previous,  up
+@section Publishing Subdirectories in Projects
+@cindex projects, subdirectories
+
+If you want to publish a directory and all of its subdirectories, Muse
+provides two convenience functions that together generate the proper
+rules for you.  Note that we use the backtick to begin this
+muse-project-alist definition, rather than a single quote.
+
+@lisp
+(setq muse-project-alist
+      `(("Website" ("~/Pages" :default "index")
+         (:base "html" :path "~/public_html"))
+        ("Blog" (,@@(muse-project-alist-dirs "~/Blog")
+                 :default "index")
+         ;; Publish this directory and its subdirectories.  Arguments
+         ;; are as follows.  The above `muse-project-alist-dirs' part
+         ;; is also needed.
+         ;;   1. Source directory
+         ;;   2. Output directory
+         ;;   3. Publishing style
+         ;;   remainder: Other things to put in every generated style
+         ,@@(muse-project-alist-styles "~/Blog"
+                                      "~/public_html/blog"
+                                      "blosxom"))))
+@end lisp
+
+The @code{muse-project-alist-dirs} function takes a directory and
+returns it and all of its subdirectories in a list.
+
+The @code{muse-project-alist-styles} function is explained by the
+comments above.
+
+The ``blosxom'' text is the name of another publishing style, much like
+``html''.  @xref{Blosxom}, for further information about it.  You can
+use any publishing style you like for the third argument to
+@code{muse-project-alist-styles}.
+
+@node Options for Projects, , Projects and Subdirectories, Projects
+@comment  node-name,  next,  previous,  up
+@section Listing of Available Options for Projects
+@cindex projects, options
+@cindex muse-project-alist, reference
+
+This is a listing of all of the various options (or, more accurately:
+attributes) that may be specified in @code{muse-project-alist}.
+
+Each muse-project-alist entry looks like this:
+
+@example
+  (PROJECT-NAME (SOURCES)
+    OUTPUTS)
+@end example
+
+We refer to these names below.
+
+``Attributes'', which compose SOURCES and OUTPUTS, are a pair of values.
+The first value is a keyword, like @option{:default}.  The second part
+is the value associated with that keyword, such as the text ``index''.
+If you are familiar with Emacs Lisp property lists, the concept is
+similar to that, except that in the SOURCES section, single directories
+can be interspersed with two-value attributes.
+
+@subheading Project Name
+
+This is a string that indicates the name of the project.  It is
+primarily used for publishing interwiki links with the
+@file{muse-wiki.el} module.
+
+@subheading Sources
+
+This part of a muse-project-alist entry consists of two-value
+attributes, and also directory names.  If you are publishing a book, the
+order of directories and attributes is significant.
+
+The minimal content for the sources section is a list of directories.
+
+@table @option
+
+@item :book-chapter
+Indicates a new chapter of a book.  The text of the title of the chapter
+comes immediately after this keyword.
+
+@item :book-end
+Indicates the end of a book.  Directories listed after this one are
+ignored when publishing a book.  The value ``t'' (without quotes) should
+come immediately after this keyword.
+
+@item :book-funcall
+A function to call while publishing a book.  This is useful for doing
+something just after a particular chapter.
+
+@item :book-part
+Indicates the beginning of a new part of the book.  The text of the
+title should come immediately after this keyword.
+
+@item :book-style
+Indicate a particular publishing style to use for this part of the book.
+If this is specified, it should come just after a @option{:part}
+attribute.
+
+@item :default
+The default page to visit when browsing a project.  Also, if you are
+using the @file{muse-wiki.el} module, publishing a link to just a
+project's name will cause it to link to this default file.
+
+@item :force-publish
+This specifies a list of pages which should be published every time a
+project is published (by using @kbd{C-c C-p}, for example), regardless
+of whether their contents have changed.  This is useful for updating
+Index pages, pages that use the @verb{|<include>|} tag, and other pages
+that have dynamically-generated content.
+
+@item :major-mode
+This specifies the major mode to use when visiting files in this
+project.  The default is @code{muse-mode}.
+
+@item :nochapters
+This indicates that while publishing a book, do not automatically create
+chapters.  Values which may follow this are nil (the default, which
+means that we automatically create chapters), or non-nil, which means
+that we manually specify chapters with the @option{:book-chapter}
+attribute,
+
+@item :publish-project
+Indicates which function we should call when publishing a project.
+
+@item :set
+This specifies a list of variables and values to set when publishing a
+project.  The list should be a property list, which is in the form:
+
+@example
+(VAR1 VALUE1 VAR2 VALUE2 ...)
+@end example
+
+@item :visit-link
+Specifies the function to call when visiting a link.  The default is
+@code{muse-visit-link-default}.  The arguments for that function should
+be (1) the link and (2) whether to visit the link in a new window.
+
+@end table
+
+@subheading Outputs
+
+This part of a muse-project-alist entry is composed of lists of
+attributes.  Each list is called an ``output style''.
+
+The minimal content for an output style is a @option{:base} attribute
+and a @option{:path} attribute.
+
+@table @option
+
+@item :base
+Publishing style to use, such as ``html'', ``docbook'', or ``pdf''.
+
+@item :base-url
+An external URL which can be used to access published files.  This is
+mainly used by the @file{muse-wiki} module when publishing links between
+two separate projects, if the projects are served on different domains.
+
+It is also used by the @file{muse-journal} module to create the RSS or
+RDF output.
+
+@item :exclude
+Exclude items matching a regexp from being published.  The regexp should
+usually begin with "/".
+
+@item :include
+Only include items matching a regexp when publishing.  The regexp should
+usually begin with "/".
+
+@item :path
+The directory in which to store published files.
+
+@item :timestamps
+A file containing the timestamps (that is, time of creation) for files
+in this project.  It might eventually used by the @file{muse-blosxom}
+module, but this option is not currently in use by any Muse code.
+
+@end table
+
+
+@node Keystroke Summary, Markup Rules, Projects, Top
+@comment  node-name,  next,  previous,  up
+@chapter Keys Used in Muse Mode
+@cindex keystrokes
+
+This is a summary of keystrokes available in every Muse buffer.
+
+@table @kbd
+
+@item C-c C-a (`muse-index')
+Display an index of all known Muse pages.
+
+@item C-c C-b (`muse-find-backlinks')
+Find all pages that link to this page.
+
+@item C-c C-e (`muse-edit-link-at-point')
+Edit link at point.
+
+@item C-c C-f (`muse-project-find-file')
+Open another Muse page.  Prompt for the name.
+
+@item C-c C-i l, C-c TAB l (`muse-insert-relative-link-to-file')
+Insert a link to a file interactively.
+
+@item C-c C-i t, C-c TAB t (`muse-insert-tag')
+Insert a tag interactively.
+
+@item C-c C-i u, C-c TAB u (`muse-insert-url')
+Insert a URL interactively.
+
+@item C-c C-l (`font-lock-mode')
+Toggle font lock / highlighting for the current buffer.
+
+@item C-c C-p (`muse-project-publish')
+Publish any Muse pages that have changed.
+
+@item C-c C-s (`muse-search')
+Find text in all files of the current project.
+
+@item C-c C-t (`muse-project-publish-this-file')
+Publish the currently-visited file.  Prompt for the style if the current
+file can be published using more than one style.
+
+@item C-c C-S-t, or C-c C-M-t (`muse-publish-this-file')
+Publish the currently-visited file.  Prompt for both the style and
+output directory.
+
+@item C-c C-v (`muse-browse-result')
+Show the published result of this page.
+
+@item C-c = (`muse-what-changed')
+Diff this page against the last backup version.
+
+@item TAB
+Move to the next Wiki reference.
+
+@item S-TAB
+Move to the previous Wiki reference.
+
+@item M-TAB
+Complete the name of a page from the current project at point.
+
+@item M-RET
+Insert a new list item at point, indenting properly.
+
+@item C-<
+Decrease the indentation of the list item at point.
+
+@item C->
+Increase the indentation of the list item at point.
+
+@item M-x muse-colors-toggle-inline-images RET
+Toggle display of inlined images on/off.
+
+@item M-x muse-update-values RET
+Update various values that are automatically generated.
+
+Call this after changing @code{muse-project-alist}.
+@end table
+
+
+@node Markup Rules, Publishing Styles, Keystroke Summary, Top
+@comment  node-name,  next,  previous,  up
+@chapter Rules for Using Markup
+@cindex markup
+
+A Muse document uses special, contextual markup rules to determine how
+to format the output result.  For example, if a paragraph is indented,
+Muse assumes it should be quoted.
+
+There are not too many markup rules, and all of them strive to be as
+simple as possible so that you can focus on document creation, rather
+than formatting.
+
+@menu
+* Paragraphs::                  Paragraphs: centering and quoting.
+* Headings::                    Levels of headings.
+* Directives::                  Directives at the beginning of a
+                                  document.
+* Emphasizing Text::            Bold, italicized, and underlined text.
+* Footnotes::                   Making notes to be shown at the end.
+* Verse::                       Indicating poetic stanzas.
+* Lists::                       Lists of items.
+* Tables::                      Generation of data tables.
+* Explicit Links::              Hyperlinks and email addresses with
+                                  descriptions.
+* Implicit Links::              Bare URLs, WikiNames, and InterWiki
+                                  links.
+* Images::                      Publishing and displaying images.
+* Horizontal Rules and Anchors::  Inserting a horizontal line or anchor.
+* Embedded Lisp::               Evaluating Emacs Lisp code in documents
+                                  for extensibility.
+* Citations::                   Support for citing other resources.
+* Comments::                    Lines to omit from published output.
+* Tag Summary::                 Tags that Muse recognizes.
+@end menu
+
+@node Paragraphs, Headings, Markup Rules, Markup Rules
+@comment  node-name,  next,  previous,  up
+@section Paragraphs: centering and quoting
+@cindex paragraphs
+
+Paragraphs in Muse must be separated by a blank line.
+
+@cindex paragraphs, centered
+@subheading Centered paragraphs and quotations
+
+A line that begins with six or more columns of whitespace (either tabs
+or spaces) indicates a centered paragraph.  Alternatively, you can use
+the @verb{|<center>|} tag to surround regions that are to be published
+as centered paragraphs.
+
+@cindex paragraphs, quoted
+@cindex quotations
+But if a line begins with whitespace, though less than six columns, it
+indicates a quoted paragraph.  Alternatively, you can use the
+@verb{|<quote>|} tag to surround regions that are to be published as
+quoted paragraphs.
+
+@cindex examples
+@cindex monospace, rendering blocks
+@cindex HTML, rendering blocks in monospace
+@subheading Literal paragraphs
+
+The @verb{|<example>|} tag is used for examples, where whitespace should
+be preserved, the text rendered in monospace, and any characters special
+to the output style escaped.
+
+@cindex literal text
+@cindex HTML, inserting a raw block
+There is also the @verb{|<literal>|} tag, which causes a marked block to
+be entirely left alone.  This can be used for inserting a hand-coded
+HTML blocks into HTML output, for example.
+
+If you want some text to only be inserted when publishing to a
+particular publishing style, use the @option{style} attribute for the
+@verb{|<literal>|} tag.  An example follows.
+
+@example
+<literal style="latex">
+A LaTeX-based style was used in the publishing of this document.
+</literal>
+@end example
+
+This will leave the region alone if the current publishing style is
+``latex'' or based on ``latex'', such as ``pdf'', and delete the region
+otherwise.  It is also possible to leave the text alone only for one
+particular style, rather than its derivations, by adding
+@code{exact="t"} to the tag.
+
+@cindex line breaks
+@subheading Line breaks
+
+If you need a line break, then use the @samp{<br>} tag.  Most of the
+time this tag is unnecessary, because Muse will automatically detect
+paragraphs by means of blank lines.  If you want to preserve newlines in
+several lines of text, then use verse markup instead (@pxref{Verse}).
+
+@node Headings, Directives, Paragraphs, Markup Rules
+@comment  node-name,  next,  previous,  up
+@section Levels of headings
+@cindex headings
+
+A heading becomes a chapter or section in printed output -- depending on
+the style.  To indicate a heading, start a new paragraph with one or
+more asterices, followed by a space and the heading title.  Then begin
+another paragraph to enter the text for that section.
+
+All levels of headings will be published.  Most publishing styles only
+distinguish the between the first 4 levels, however.
+
+@example
+* First level
+
+** Second level
+
+*** Third level
+
+**** Fourth level
+@end example
+
+@node Directives, Emphasizing Text, Headings, Markup Rules
+@comment  node-name,  next,  previous,  up
+@section Directives at the beginning of a document
+@cindex directives
+
+Directives are lines beginning with the @samp{#} character that come
+before any paragraphs or sections in the document.  Directives are of
+the form ``#directive content of directive''.  You can use any
+combination of uppercase and lowercase letters for directives, even if
+the directive is not in the list below.
+
+The @code{muse-publishing-directive} function may be used in header and
+footer text to access directives.  For example, to access the
+@code{#title} directive, use @code{(muse-publishing-directive "title")}.
+
+The following is a list of directives that Muse uses.
+
+@table @code
+@cindex #author
+@item #author
+The author of this document.
+
+If this is not specified, Muse will attempt to figure it out from the
+@code{user-full-name} variable.
+
+@cindex #date
+@item #date
+The date that the document was last modified.
+
+This is used by publishing styles that are able to embed the date
+information.
+
+@cindex #desc
+@item #desc
+A short description of this document.
+
+This is used by the @code{journal} publishing style to embed information
+inside of an RSS/RDF feed.
+
+@cindex #title
+@item #title
+The title of this document.
+
+If this is not specified, the name of the file is used.
+
+@end table
+
+@node Emphasizing Text, Footnotes, Directives, Markup Rules
+@comment  node-name,  next,  previous,  up
+@section Bold, italicized, and underlined text
+@cindex emphasizing text
+@cindex underlining text
+@cindex italicizing text
+@cindex verbatim text
+@cindex monospace, rendering words
+
+To emphasize text, surround it with certain specially recognized
+characters.
+
+@example
+*emphasis*
+**strong emphasis**
+***very strong emphasis***
+_underlined_
+=verbatim and monospace=
+@end example
+
+@cindex WYSIWYG
+While editing a Muse document in Muse mode, these forms of emphasis will
+be highlighted in a WYSIWYG manner.  Each of these forms may span
+multiple lines.
+
+Verbatim text will be colored as gray by default.  To change this,
+customize @code{muse-verbatim-face}.
+
+You can also use the @verb{|<code>|} tag to indicate verbatim and
+monospace text.  This is handy for regions that have an ``='' in them.
+
+@node Footnotes, Verse, Emphasizing Text, Markup Rules
+@comment  node-name,  next,  previous,  up
+@section Making notes to be shown at the end
+@cindex footnotes
+
+A footnote reference is simply a number in square brackets.  To define
+the footnote, place this definition at the bottom of your file.
+@samp{footnote-mode} can be used to greatly facilitate the creation of
+these kinds of footnotes.
+
+Footnotes are defined by the same number in brackets occurring at the
+beginning of a line.  Use footnote-mode's @kbd{C-c ! a} command, to very
+easily insert footnotes while typing.  Use @kbd{C-x C-x} to return to
+the point of insertion.
+
+@node Verse, Lists, Footnotes, Markup Rules
+@comment  node-name,  next,  previous,  up
+@section Indicating poetic stanzas
+@cindex verses
+@cindex poetry
+
+Poetry requires that whitespace be preserved, but without resorting to
+monospace.  To indicate this, use the following markup, reminiscent of
+email quotations.
+
+@example
+> A line of Emacs verse;
+>   forgive its being so terse.
+@end example
+
+You can also use the @verb{|<verse>|} tag, if you prefer.
+
+@example
+<verse>
+A line of Emacs verse;
+  forgive its being so terse.
+</verse>
+@end example
+
+@cindex verses, multiple stanzas
+Multiple stanzas may be included in one set of @verb{|<verse>|} tags, as
+follows.
+
+@example
+<verse>
+A line of Emacs verse;
+  forgive its being so terse.
+
+In terms of terse verse,
+  you could do worse.
+</verse>
+@end example
+
+@node Lists, Tables, Verse, Markup Rules
+@comment  node-name,  next,  previous,  up
+@section Lists of items
+@cindex lists
+
+Lists are given using special characters at the beginning of a line.
+Whitespace must occur before bullets or numbered items, to distinguish
+from the possibility of those characters occurring in a real sentence.
+
+@cindex lists, bullets
+These are rendered as a bullet list.
+
+@example
+Normal text.
+
+ - bullet item one
+ - bullet item two
+@end example
+
+@cindex lists, enumerated
+An enumerated list follows.
+
+@example
+Normal text.
+
+ 1. Enum item one
+ 2. Enum item two
+@end example
+
+@cindex lists, definitions
+Here is a definition list.
+
+@example
+Term1 ::
+  This is a first definition
+  And it has two lines;
+  no, make that three.
+
+Term2 :: This is a second definition
+@end example
+
+@subheading Nested lists
+
+@cindex lists, nested
+It is possible to nest lists of the same or different kinds.  The
+``level'' of the list is determined by the amount of initial whitespace.
+
+@example
+Normal text.
+
+ - Level 1, bullet item one
+   1. Level 2, enum item one
+   2. Level 2, enum item two
+ - Level 1, bullet item two
+   1. Level 2, enum item three
+   2. Level 2, enum item four
+      term :: definition
+@end example
+
+@subheading Breaking list items
+
+@cindex lists, breaking lines
+If you want to break up a line within any list type, just put one blank
+line between the end of the previous line and the beginning of the next
+line, using the same amount of initial indentation.
+
+@example
+ - bullet item 1, line 1
+
+   bullet item 1, line 2
+
+   1. Enum line 1
+
+      Enum line 2
+
+ - bullet item 2, line 1
+
+   bullet item 2, line 2
+@end example
+
+@node Tables, Explicit Links, Lists, Markup Rules
+@comment  node-name,  next,  previous,  up
+@section Generation of data tables
+@cindex tables
+
+@cindex tables, simple
+Only very simple tables are supported.  The syntax is as follows.
+
+@example
+Double bars  || Separate header fields
+
+Single bars   | Separate body fields
+Here are more | body fields
+
+Triple bars ||| Separate footer fields
+@end example
+
+Some publishing styles require header fields to come first, then footer
+fields, and then the body fields.  You can use any order for these
+sections that you like, and Muse will re-order them for you at
+publish-time.
+
+If you wish to disable table generation for one Muse file, add the
+directive @samp{#disable-tables t} to the top of the file.
+
+@subheading Other table formats
+
+@cindex tables, orgtbl-mode style
+It is possible to publish very basic Orgtbl-mode style tables.
+
+@example
+| org  | style | table |
+|------+-------+-------|
+| one  |       | one   |
+| two  | two   |       |
+|      | three | three |
+|------+-------+-------|
+| more | stuff |       |
+@end example
+
+If you are used to the way that Org Mode publishes these tables, then
+customize `muse-html-table-attributes' to the following, in order to get
+a similar kind of output.
+
+@example
+border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"
+@end example
+
+@cindex tables, table.el style
+@file{table.el} style tables are also supported, as long as
+@file{table.el} itself supports outputting tables for a particular
+publishing style.  At the time of this writing, the ``html'', ``latex'',
+and ``docbook'' styles are supported by @file{table.el}.  Styles derived
+from these styles will also work.
+
+@example
++---+-----+---+
+|   | one | 1 |
++---+-----+---+
+| b | two |   |
++---+-----+---+
+| c |     | 3 |
++---+-----+---+
+@end example
+
+@node Explicit Links, Implicit Links, Tables, Markup Rules
+@comment  node-name,  next,  previous,  up
+@section Hyperlinks and email addresses with descriptions
+@cindex links, explicit
+
+A hyperlink can reference a URL, or another page within a Muse
+project.  In addition, descriptive text can be specified, which should
+be displayed rather than the link text in output styles that supports
+link descriptions.  The syntax is as follows.
+
+@example
+[[link target][link description]]
+[[link target without description]]
+@end example
+
+Thus, the current maintainer's homepage for Muse can be found
+@samp{[[http://mwolson.org/projects/EmacsMuse.html][here]]},
+or at @samp{[[http://mwolson.org/projects/EmacsMuse.html]]}.
+
+@node Implicit Links, Images, Explicit Links, Markup Rules
+@comment  node-name,  next,  previous,  up
+@section Bare URLs, WikiNames, and InterWiki links
+@cindex links, implicit
+@cindex links, raw
+
+@cindex URLs
+@cindex Email addresses
+
+A URL or email address encountered in the input text is published as a
+hyperlink.  These kind of links are called @dfn{implicit links} because
+they are not separated from the rest of the Muse document in any way.
+
+Some characters in URLs will prevent Muse from recognizing them as
+implicit links. If you want to link to a URL containing spaces or any of
+the characters ``][,"'`()<>^'', you will have to make the link
+explicit. The punctuation characters ``.,;:'' are also not recognized as
+part of a URL when they appear at its end. For information on how to
+make an explicit link, see @ref{Explicit Links,,Hyperlinks and email
+addresses with descriptions}.
+
+@cindex WikiNames
+If the @command{muse-wiki} module is loaded, another form of implicit
+link will be made available.  WikiNames, which are typed in CamelCase,
+are highlighted and published as links, provided that the file they
+refer to exists.
+
+Customization of WikiName recognition may be accomplished by editing the
+@code{muse-wiki-wikiword-regexp} option and subsequently running
+@code{(muse-configure-highlighting 'muse-colors-markupmuse-colors-markup)}.
+If you use the Customize interface, the latter will be done
+automatically.
+
+@cindex InterWiki links
+@cindex inter-project links
+The @command{muse-wiki} module also allows for InterWiki links.  These
+are similar to WikiWords, but they specify both the project and page of
+a file.  The names of your project entries in @code{muse-project-alist}
+will be used as InterWiki names by default.  Several examples follow.
+
+@example
+Blog::DocumentingMuse
+Projects#EmacsMuse
+Website
+@end example
+
+In the first case, the interwiki delimiter is @samp{::}, @samp{Blog} is
+the project name, and @samp{DocumentingMuse} is the page name.  In the
+second example, @samp{#} is the interwiki delimiter.  If the name of a
+project occurs by itself in text, like the third case, it will be
+colorized and published as a link to the default page of the given
+project.
+
+Customization of interwiki links may be accomplished by editing the
+@code{muse-wiki-interwiki-alist} option.
+
+It is also possible to link to an anchor in an interwiki document.  This
+is called a ``three-part link''.  Examples of this follow.
+
+@example
+Blog::DocumentingMuse#anchor1
+Projects#EmacsMuse#anchor2
+@end example
+
+@node Images, Horizontal Rules and Anchors, Implicit Links, Markup Rules
+@comment  node-name,  next,  previous,  up
+@section Publishing and displaying images
+@cindex images
+@cindex links, with images
+@subheading Image links
+
+Links to images may be used in either the target or the description, or
+both.  Thus, the following code will publish as a clickable image that
+points to @url{http://mwolson.org/}.
+
+@example
+[[http://mwolson.org/][/static/logos/site-logo.png]]
+@end example
+
+Normally, images in the link part will be inlined.
+
+If you want these images to be published as links instead, place the
+text ``URL:'' immediately in front of the link text.  An example
+follows.
+
+@example
+[[URL:http://mwolson.org/static/logos/site-logo.png]]
+@end example
+
+@cindex images, displaying
+@cindex images, local
+@subheading Displaying images in Muse mode
+If a link to a locally-available image is encountered in the link
+description, Muse mode will attempt to display it if your version of
+Emacs permits this.
+
+This behavior may be toggled with @kbd{C-c C-i}, or disabled permanently
+by setting the @code{muse-colors-inline-images} option to @code{nil}.
+
+The method for finding images may be altered by customizing the
+@code{muse-colors-inline-image-method} option.  One useful value for
+this option is @code{muse-colors-use-publishing-directory}, which tells
+Muse mode to look in the directory where the current file will be
+published.  The default is to look in the current directory.  Relative
+paths like @samp{../pics/} should work for either setting.
+
+Eventually, it is hoped that Muse will be able to copy images from the a
+``source'' directory to a publishing directory by customizing
+@code{muse-project-alist}, but this has not been implemented yet.
+
+@cindex images, without descriptions
+@cindex images, inlined
+@subheading Publishing simple images
+The following example will display correctly and publish correctly if a
+@acronym{PNG} file called @file{TestLogo.png} exists in the
+@file{../pics/} directory.  If text is on the same line as the picture,
+it will remain so in the output.
+
+@example
+[[../myimage.png]]
+@end example
+
+@cindex images, captions
+@subheading Publishing images with captions
+If you want to add a caption to an image, use the following syntax.
+This will center the image (if the output format supports it) and add a
+centered caption below the picture.  Formats that do not support
+centering the image will instead leave it against the left margin.
+
+@example
+[[../pics/mycat.png][My cat Dexter]]
+@end example
+
+Images with captions may only occur in their own paragraphs, with no
+text on the same line.  Otherwise, the published output will not be
+syntactically correct.
+
+@node Horizontal Rules and Anchors, Embedded Lisp, Images, Markup Rules
+@comment  node-name,  next,  previous,  up
+@section Inserting a horizontal line or anchor
+
+@cindex horizontal rules
+@cindex dashes
+@subheading Horizontal Rules
+
+Four or more dashes indicate a horizontal rule.  Be sure to put blank
+lines around it, or it will be considered part of the proceeding or
+following paragraph!
+
+@cindex anchors
+@cindex links, with target on same page
+@subheading Anchors
+
+If you begin a line with "#anchor" -- where "anchor" can be any word
+that doesn't contain whitespace -- it defines an anchor at that point
+into the document.  This point can be referenced using "page#anchor" as
+the target in a Muse link.
+
+@node Embedded Lisp, Citations, Horizontal Rules and Anchors, Markup Rules
+@comment  node-name,  next,  previous,  up
+@section Evaluating Emacs Lisp code in documents for extensibility
+@cindex lisp, embedded
+
+Arbitrary kinds of markup can be achieved using the @verb{|<lisp>|} tag.
+With the @verb{|<lisp>|} tag, you may generate whatever output text you
+wish.  The inserted output will get marked up if the @verb{|<lisp>|}
+tag appears within the main text of the document.
+
+@example
+<lisp>(concat "This form gets " "inserted")</lisp>
+@end example
+
+@cindex lisp, and insert command
+Note that you should not use the @code{insert} command within a set of
+@verb{|<lisp>|} tags, since the return value from the @verb{|<lisp>|}
+tags will be automatically inserted into the document.
+
+It is also possible to treat the output as if it were surrounded by the
+@verb{|<example>|}, @verb{|<src>|}, or @verb{|<verse>|} tags, by
+specifying ``example'', ``src'', or ``verse'' as the @option{markup}
+attribute of the @verb{|<lisp>|} tag.
+
+@example
+<lisp markup="example">
+(concat "Insert" " me")
+</lisp>
+@end example
+
+Other languages also have tags that cause source code to be evaluated.
+@xref{Tag Summary}, for details.
+
+@node Citations, Comments, Embedded Lisp, Markup Rules
+@comment  node-name,  next,  previous,  up
+@section Support for citing other resources
+@cindex citations
+@cindex tags, <cite>
+
+@subheading Example
+
+Here is an example of what citations look like in a Muse document.
+
+@example
+#bibsource REFDB
+
+* Title
+** Subtitle
+
+Some text before <cite>Miller1999</cite> and after the citation.
+
+This is an author-only citation <cite type="author">Miller1999</cite>.
+
+And this is a year-only citation <cite type="year">Miller1999</cite>.
+
+Finally, this is a multi-head citation
+<cite>Miller1999,Andrews2005</cite>.
+@end example
+
+@subheading Overview
+
+The @code{#bibsource} directive defines the source of the
+bibliographies.  The following sources are possible.
+
+@itemize @bullet
+@item DocBook + RefDB:
+the string "REFDB"
+
+@item LaTeX + bibtex:
+the name of an appropriate bibtex file
+
+@item LaTeX + RefDB:
+if the input file is called "foo.muse", then set this to "foo.bib"
+@end itemize
+
+Citations are encoded as @verb{|<cite>|} elements which enclose the
+citation keys as they are defined in the bibliography file or database.
+In multi-head citations, the citation keys have to be separated by
+colons or semicolons.  The @code{latex} and @code{docbook} styles
+translate these to the proper separator automatically.
+
+The @verb{|<cite>|} elements take an optional ``type'' attribute that
+defines how the citation is rendered.  If the attribute is missing,
+you'll get a regular citation according to the bibliography style,
+e.g.'' (Miller et al., 1999)''.  If the attribute is set to "author",
+only the name of the author(s) will be rendered.  Accordingly, "year"
+will cause the year to be printed.  This is useful to create citations
+like this:
+
+@example
+Miller et al. had already shown in a previous publication (1999) that
+this is not going to work.
+@end example
+
+Remember that refdb-mode (the Emacs interface to RefDB) can retrieve
+references by simply marking the citation key and running the
+@code{refdb-getref-by-field-on-region} command.  Later versions of
+@code{refdb-mode} will also allow to insert references as Muse citations
+(which is already implemented for DocBook, TEI, and LaTeX documents).
+
+You may have noticed that there is no element to indicate the position
+of the bibliography.  The latter is always created at a valid position
+close to the end of the document.  The functions
+@code{muse-docbook-bibliography} and @code{muse-latex-bibliography} are
+called in the header or footer to generate this content, so it is
+possible to change the exact position.
+
+@node Comments, Tag Summary, Citations, Markup Rules
+@comment  node-name,  next,  previous,  up
+@section Lines to omit from published output
+@cindex comments
+@cindex publishing, omitting lines
+
+Use the following syntax to indicate a comment.  Comments will not be
+published.
+
+@example
+; Comment text goes here.
+@end example
+
+That is, only a semi-colon at the beginning of a line, followed by a
+literal space, will cause that line to be treated as a comment.
+
+You can alternatively surround the region with the @verb{|<comment>|}
+tag.
+
+If you wish the comment to be published, but just commented out using
+the comment syntax of the output format, then set
+@option{muse-publish-comments-p} to non-nil.
+
+@node Tag Summary, , Comments, Markup Rules
+@comment  node-name,  next,  previous,  up
+@section Tags that Muse recognizes
+@cindex tags
+@cindex inserting files at publish time
+@cindex publishing, including markup in headers and footers
+@cindex publishing, inserting files
+
+Muse has several built-in tags that may prove useful during publishing.
+@xref{muse-publish-markup-tags}, to see how to customize the tags that
+Muse uses, as well as make your own tags.
+
+Only a small subset of these tags are available in header and footer
+text.  The @code{muse-publish-markup-header-footer-tags} option lists
+the tags that are allowed in headers and footers.
+
+@subheading Syntax
+
+If a tag takes arguments, it will look like this, where ``tagname'' is
+the name of the tag.
+
+@example
+<tagname arg1="string1" arg2="string2">
+@end example
+
+If you want the tag to look like it came straight from an XHTML
+document, you can alternatively do the following.
+
+@example
+<tagname arg1="string1" arg2="string2" />
+@end example
+
+If a tag surrounds some text, it will look like this.
+
+@example
+<tagname>Some text</tagname>
+@end example
+
+If a tag surrounds a large region, it will look like this.
+
+@example
+<tagname>
+Some text.
+Some more text.
+</tagname>
+@end example
+
+@subheading Tag listing
+
+This is the complete list of tags that Muse accepts, including those
+that were mentioned in previous sections.
+
+@table @samp
+
+@item <br>
+Insert a line break.
+
+Muse will automatically detect paragraphs when publishing by means of
+blank lines, so this tag is usually unnecessary.
+
+@item <cite>
+Insert a citation to another source.
+
+This takes the argument @option{type}, which indicates the type of
+citation.  The valid types are "author" and "year".  If this argument is
+omitted, include both author and year in the citation.
+
+The bibliography to use for the citation may be specified by the
+@option{#bibsource} directive.
+
+@xref{Citations}, for additional information.
+
+@item <class>
+If publishing to HTML, surround the given text with a @verb{|<span>|}
+tag.  It takes one argument called ``name'' that specifies the ``class''
+attribute of the @verb{|<span>|} tag.
+
+If publishing to a different format, do nothing extra to the text.
+
+@item <code>
+Treat the text surrounded by the tag as if they were enclosed in equal
+signs, that is, make it monospace.
+
+@item <command>
+Run a command on the region, replacing the region with the result of the
+command.  The command is specified with the ``interp'' argument.  If no
+value for ``interp'' is given, pass the entire region to the shell.
+
+The ``markup'' argument controls how this section is marked up.
+
+If it is omitted, publish the region with the normal Muse rules.
+
+If "nil", do not mark up the region at all, but prevent Muse from
+further interpreting it.
+
+If "example", treat the region as if it was surrounded by the
+@verb{|<example>|} tag.
+
+If "src", treat the included text as if it was surrounded by the
+@verb{|<src>|} tag.  You should also specify the ``lang'' attribute if
+doing this.
+
+If "verse", treat the region as if it was surrounded by the
+@verb{|<verse>|} tag, to preserve newlines.
+
+Otherwise, it should be the name of a function to call, with the buffer
+narrowed to the region.
+
+@item <comment>
+Treat the entire region as a comment.  If the option
+@var{muse-publish-comments-p} is nil, delete the region, otherwise
+publish it using the comment syntax of the current publishing style.
+
+@item <contents>
+Publish a Table of Contents.  This will either be inserted in-place or
+at the beginning of the document, depending on your publishing style.
+It does not have a delimiting tag.
+
+By default, only 2 levels of headings will be included in the generated
+Table of Contents.  To change this globally, customize the
+@var{muse-publish-contents-depth} option.  To change this only for the
+current tag, use the ``depth'' argument.
+
+@item <div>
+Insert a <div> tag into HTML documents, and do not insert anything
+special for other non-HTML publishing formats.
+
+If the ``style'' argument is provided, include it with the published
+@verb{|<div>|} tag.  Likewise for the ``id'' argument.
+
+@item <example>
+Publish the region in monospace, preserving the newlines in the region.
+This is useful for snippets of code.
+
+@item <include>
+Insert the given file at the current location during publishing.  The
+basic use of this tag is as follows, replacing ``included_file'' with
+the name of the file that you want to include.
+
+@example
+<include file="included_file">
+@end example
+
+The ``markup'' argument controls how this section is marked up.
+
+If it is omitted, publish the included text with the normal Muse
+rules.
+
+If "nil", do not mark up the included text at all.
+
+If "example", treat the included text as if it was surrounded by the
+@verb{|<example>|} tag.
+
+If "src", treat the included text as if it was surrounded by the
+@verb{|<src>|} tag.  You should also specify the ``lang'' attribute if
+doing this.
+
+If "verse", treat the included text as if it was surrounded by the
+@verb{|<verse>|} tag, to preserve newlines.
+
+Otherwise, it should be the name of a function to call after inserting
+the file with the buffer narrowed to the section inserted.
+
+@item <lisp>
+Evaluate the Emacs Lisp expressions between the initial and ending tags.
+The result is then inserted into the document, so you do not need to
+explicitly call @code{insert}.  All text properties are removed from the
+resulting text.
+
+This tag takes the ``markup'' argument.  See the description of
+@verb{|<command>|} for details.
+
+@item <literal>
+Make sure that the text enclosed by this tag is published without
+escaping it in any way.  This is useful for inserting markup directly
+into the published document, when Muse does not provide the desired
+functionality.
+
+@item <markup>
+Mark up the text between the initial and ending tags.  The markup
+command to use may be specified by the ``function'' argument.  The
+standard Muse markup routines are used by default if no ``function''
+argument is provided.
+
+This is useful for marking up regions in headers and footers.  One
+example that comes to mind is generating a published index of all of the
+files in the current project by doing the following.
+
+@example
+<markup><lisp>(muse-index-as-string t t)</lisp></markup>
+@end example
+
+@item <perl>
+Run the @command{perl} language interpreter on the region, replacing the
+region with the result of the command.
+
+This tag takes the ``markup'' argument.  See the description of
+@verb{|<command>|} for details.
+
+@item <python>
+Run the @command{python} language interpreter on the region, replacing
+the region with the result of the command.
+
+This tag takes the ``markup'' argument.  See the description of
+@verb{|<command>|} for details.
+
+@item <quote>
+Publish the region as a blockquote.  This will either be inserted
+in-place or at the beginning of the document, depending on your
+publishing style.  It does not have a delimiting tag.
+
+@item <ruby>
+Run the @command{ruby} language interpreter on the region, replacing the
+region with the result of the command.
+
+This tag takes the ``markup'' argument.  See the description of
+@verb{|<command>|} for details.
+
+@item <src>
+Publish the region using htmlize.
+The language to use may be specified by the ``lang'' attribute.
+
+Muse will look for a function named @var{lang}-mode, where @var{lang} is
+the value of the ``lang'' attribute.
+
+This tag requires htmlize 1.34 or later in order to work.  If this is
+not satisfied, or the current publishing style is not HTML-based, Muse
+will publish the region like an @verb{|<example>|} tag.
+
+@item <verbatim>
+This is used when you want to prevent Muse from trying to interpret some
+markup.  Surround the markup in @verb{|<verbatim>|} and
+@verb{|</verbatim>|}, and it will not be interpreted.
+
+This tag was used often in previous versions of Muse because they did
+not support whole-document escaping of specials.  Now, it will only be
+needed for other tags, and perhaps footnotes as well.
+
+@item <verse>
+Preserve the newlines in the region.  In formats like HTML, newlines are
+removed by default, hence the need for this tag.  In other publishing
+styles, this tag may cause the text to be indented slightly in a way
+that looks nice for poetry and prose.
+
+@end table
+
+@node Publishing Styles, Extending Muse, Markup Rules, Top
+@comment  node-name,  next,  previous,  up
+@chapter Publishing Various Types of Documents
+@cindex publishing styles
+
+One of the principle features of Muse is the ability to publish a simple
+input text to a variety of different output styles.  Muse also makes it
+easy to create new styles, or derive from an existing style.
+
+@menu
+* Blosxom::                     Integrating Muse and pyblosxom.cgi.
+* Book::                        Publishing entries into a compilation.
+* ConTeXt::                     Publishing ConTeXt documents.
+* DocBook::                     Publishing in DocBook XML form.
+* HTML::                        Publishing in HTML or XHTML form.
+* Ikiwiki::                     Integrating with ikiwiki.
+* Journal::                     Keeping a journal or blog.
+* LaTeX::                       Publishing LaTeX documents.
+* Poem::                        Publish a poem to LaTeX or PDF.
+* Texinfo::                     Publish entries to Texinfo format or PDF.
+* XML::                         Publish entries to XML.
+@end menu
+
+@node Blosxom, Book, Publishing Styles, Publishing Styles
+@comment  node-name,  next,  previous,  up
+@section Integrating Muse and pyblosxom.cgi
+@cindex blog, one-file-per-entry style
+
+The Blosxom publishing style publishes a tree of categorised files to a
+mirrored tree of stories to be served by blosxom.cgi or pyblosxom.cgi.
+In other words, each blog entry corresponds with one file.
+
+@menu
+* Blosxom Requirements::        Other tools needed for the Blosxom style.
+* Blosxom Entries::             Format of a Blosxom entry and automation.
+* Blosxom Options::             Blosxom styles and options provided.
+@end menu
+
+@node Blosxom Requirements, Blosxom Entries, Blosxom, Blosxom
+@comment  node-name,  next,  previous,  up
+@subsection Other tools needed for the Blosxom style
+
+You will need to have @command{pyblosxom.cgi} or @command{blosxom.cgi}
+installed on a machine that you have upload access to.
+
+The major difficulty in both of these programs is specifying the date of
+the entries.  Both programs rely on the file modification time rather
+than any data contained in the entries themselves.  A plugin is needed
+in order for these programs to be able to get the correct date.
+
+@subheading PyBlosxom
+
+There are two different ways of accomplishing this in pyblosxom.  The
+first way involves gathering the timestamps (as specified by the
+@code{#date} directive) into one file and then sending that file along
+with published entries to the webserver.
+
+The second will read each file at render time and parse the
+@code{#postdate} directive.  Muse will translate the @code{#date}
+directive into @code{#postdate} at publish time, so you don't have to do
+any extra work.
+
+@subsubheading Placing timestamps in one file
+
+The following additional components are required in order to make the
+date of blog entries display as something sensible.
+
+@enumerate
+@item
+A script to gather date directives from the entire blog tree into a
+single file.  The file must associate a blog entry with a date.
+
+@item
+A plugin for (py)blosxom that reads this file.
+@end enumerate
+
+These 2 things are provided for @command{pyblosxom.cgi} in the
+@file{contrib/pyblosxom} subdirectory.  @file{getstamps.py} provides the
+former service, while @file{hardcodedates.py} provides the latter
+service.
+
+Here is a sample listing from my @file{timestamps} file, which maps
+each file to a date.  This can really be in any format, as long as your
+date-gathering script and your plugin can both understand it.
+
+@example
+2005-04-01-14-16 personal/paper_cranes
+2005-03-21 personal/spring_break_over
+2004-10-24 personal/finished_free_culture
+@end example
+
+The script @file{contrib/pyblosxom/make-blog} demonstrates how to call
+@file{getstamps.py}.  Note that you will need to set the current
+directory to where your Muse files are, execute @file{getstamps.py}, and
+then move the generated timestamps file to your publishing directory.
+
+@subsubheading Getting timestamp from entry while rendering
+
+Alternately, the pyblosxom metadate plugin may be used.  On the plus
+side, there is no need to run a script to gather the date.  On the
+downside, each entry is read twice rather than once when the page is
+rendered.  Set the value of @code{muse-blosxom-use-metadate} to non-nil
+to enable adding a @code{#postdate} directive to all published files.
+You can do this by:
+
+@example
+M-x customize-variable RET muse-blosxom-use-metadate RET
+@end example
+
+With the metadate plugin installed in pyblosxom, the date set in this
+directive will be used instead of the file's modification time.  The
+plugin is included with Muse at @file{contrib/pyblosxom/metadate.py}.
+
+@subheading Blosxom
+
+It is also possible to use Blosxom, which is written in Perl, to serve
+blog entries that were published with Muse.  The steps are as follows.
+
+@enumerate
+@item
+Download and install blosxom from @url{http://blosxom.sourceforge.net/}.
+
+@item
+Install the metadate plugin.  It is available in
+@file{contrib/blosxom/metadate_0_0_3}.
+
+@item
+Every time you make a new blog entry, change to the blosxom data
+directory and execute the @file{contrib/blosxom/getstamps.pl} script.
+This script has only recently been made, and may still have some bugs,
+so use with caution.
+
+@end enumerate
+
+@node Blosxom Entries, Blosxom Options, Blosxom Requirements, Blosxom
+@comment  node-name,  next,  previous,  up
+@subsection Format of a Blosxom entry and automation
+
+Each Blosxom file must include `#date yyyy-mm-dd', or optionally the
+longer `#date yyyy-mm-dd-hh-mm', a title (using the @code{#title}
+directive), plus whatever normal content is desired.
+
+The date directive is not used directly by @command{pyblosxom.cgi} or
+this program.  You need to have the two additional items from the former
+section to make use of this feature.
+
+There is a function called @code{muse-blosxom-new-entry} that will
+automate the process of making a new blog entry.  To make use of it, do
+the following.
+
+@itemize @bullet
+@item
+Customize @code{muse-blosxom-base-directory} to the location that your
+blog entries are stored.
+
+@item
+Assign the @code{muse-blosxom-new-entry} function to a key sequence.  I
+use the following code to assign this function to @kbd{C-c p l'}.
+
+@example
+(global-set-key "\C-cpl" 'muse-blosxom-new-entry)
+@end example
+
+@item
+You should create your directory structure ahead of time under your base
+directory.  These directories, which correspond with category names, may
+be nested.
+
+@item
+When you enter this key sequence, you will be prompted for the category
+of your entry and its title.  Upon entering this information, a new file
+will be created that corresponds with the title, but in lowercase
+letters and having special characters converted to underscores.  The
+title and date directives will be inserted automatically.
+@end itemize
+
+@node Blosxom Options, , Blosxom Entries, Blosxom
+@comment  node-name,  next,  previous,  up
+@subsection Blosxom styles and options provided
+
+The following styles and options are available in the Blosxom publishing
+style.
+
+@subheading Styles provided
+
+@table @code
+
+@cindex publishing styles, blosxom-html
+@item blosxom-html
+Publish Blosxom entries in HTML form.
+
+@cindex publishing styles, blosxom-xhtml
+@item blosxom-xhtml
+Publish Blosxom entries in XHTML form.
+
+@end table
+
+@subheading Options provided
+
+@table @code
+
+@item muse-blosxom-extension
+Default file extension for publishing Blosxom files.
+
+@item muse-blosxom-header
+Header used for publishing Blosxom files.
+
+This may be text or a filename.
+
+@item muse-blosxom-footer
+Footer used for publishing Blosxom files.
+
+This may be text or a filename.
+
+@item muse-blosxom-base-directory
+Base directory of blog entries, used by @code{muse-blosxom-new-entry}.
+
+This is the top-level directory where your blog entries may be found
+locally.
+
+@end table
+
+@node Book, ConTeXt, Blosxom, Publishing Styles
+@comment  node-name,  next,  previous,  up
+@section Publishing entries into a compilation
+
+This publishing style is used to output ``books'' in LaTeX or PDF
+format.
+
+Each page will become a separate chapter in the book, unless the style
+keyword @option{:nochapters} is used, in which case they are all run
+together as if one giant chapter.
+
+One way of publishing a book is to make a project for it, add the
+project to @code{muse-project-alist}, and use the @code{book-pdf} style
+with a very specific @option{:include} value to specify some page whose
+contents will be checked for the values of @code{#title} and
+@code{#date}, and whose name will be used in the output file.  Then to
+publish the book, visit the aforementioned page and use @kbd{C-c C-t} or
+@kbd{C-c C-p} to trigger the publishing process.  An example
+@code{muse-project-alist} for this method follows.
+
+@example
+(setq muse-project-alist
+      '(("MyNotes" (:nochapters t  ; do automatically add chapters
+                    :book-chapter "Computer Science"
+                    "~/Notes/cs"
+                    :book-chapter "Mathematics"
+                    "~/Notes/math"
+                    :book-chapter "Emacs"
+                    "~/Notes/emacs"
+                    :book-end t ; the rest will not be placed in the book
+                    "~/Notes"   ; so we can find the notes-anthology page
+                    "~/Notes/private"
+                    :force-publish ("index")
+                    :default "index")
+         (:base "book-pdf"
+                :include "/notes-anthology[^/]*$"
+                :path "~/public_html/notes")
+         ;; other publishing styles for each directory go here,
+         ;; if desired
+         )))
+@end example
+
+In this example, there would be a file called
+@file{~/Notes/notes-anthology.muse}, which would contain just the
+following.  The resulting book would be published to
+@file{~/public_html/notes/notes-anthology.pdf}.
+
+@example
+#title My Technology Ramblings
+@end example
+
+Another way is to call the @code{muse-book-publish-project} function
+manually, with a custom project entry.  An example of this may be found
+in John Wiegley's configuration file at
+@file{examples/johnw/muse-init.el}, in the @code{muse-publish-my-books}
+function.
+
+@subheading Styles provided
+
+@table @code
+
+@cindex publishing styles, book-latex
+@item book-latex
+Publish a book in LaTeX form.  The header and footer are different than
+the normal LaTeX publishing mode.
+
+@cindex publishing styles, book-pdf
+@item book-pdf
+Publish a book in PDF form.  The header and footer are different than
+the normal PDF publishing mode.
+
+@end table
+
+@subheading Options provided
+
+@table @code
+
+@item muse-book-before-publish-hook
+A hook run in the book buffer before it is marked up.
+
+@item muse-book-after-publish-hook
+A hook run in the book buffer after it is marked up.
+
+@item muse-book-latex-header
+Header used for publishing books to LaTeX.
+
+This may be text or a filename.
+
+@item muse-book-latex-footer
+Footer used for publishing books to LaTeX.
+
+This may be text or a filename.
+
+@end table
+@node ConTeXt, DocBook, Book, Publishing Styles
+@comment  node-name,  next,  previous,  up
+@section Publishing ConTeXt documents
+
+This publishing style is capable of producing ConTeXt or PDF documents.
+
+If you wish to publish PDF documents based on ConTeXt, you will need to
+have it installed.  For Debian and Ubuntu, this can be accomplished by
+installing the ``texlive'' package.
+
+@subheading Styles provided
+
+@table @code
+
+@cindex publishing styles, context
+@item context
+Publish a ConTeXt document.
+
+@cindex publishing styles, context-pdf
+@item context-pdf
+Publish a PDF document, using an external ConTeXt document conversion
+tool.
+
+@cindex publishing styles, context-slides
+@item context-slides
+Produce slides from a ConTeXt document.
+
+Here is an example of a slide.
+
+@example
+* First Slide
+
+[[Some-sort-of-cute-image.png]]
+
+** A subheading
+
+ - A bullet point.
+ - Another bullet point.
+
+* Second Slide
+
+... and so on
+@end example
+
+@cindex publishing styles, context-slides-pdf
+@item context-slides-pdf
+Publish a PDF document of ConTeXt slides.
+
+@end table
+
+@subheading Options provided
+
+@table @code
+
+@item muse-context-extension
+Default file extension for publishing ConTeXt files.
+
+@item muse-context-pdf-extension
+Default file extension for publishing ConTeXt files to PDF.
+
+@item muse-context-pdf-program
+The program that is called to generate PDF content from ConTeXt content.
+
+@item muse-context-pdf-cruft
+Extensions of files to remove after generating PDF output successfully.
+
+@item muse-context-header
+Header used for publishing ConTeXt files.
+
+This may be text or a filename.
+
+@item muse-context-footer
+Footer used for publishing ConTeXt files.
+
+This may be text or a filename.
+
+@item muse-context-markup-regexps
+List of markup regexps for identifying regions in a Muse page.
+
+For more on the structure of this list,
+@xref{muse-publish-markup-regexps}.
+
+@item muse-context-markup-functions
+An alist of style types to custom functions for that kind of text.
+
+For more on the structure of this list,
+@xref{muse-publish-markup-functions}.
+
+@item muse-context-markup-strings
+Strings used for marking up text.
+
+These cover the most basic kinds of markup, the handling of which
+differs little between the various styles.
+
+@item muse-context-slides-header
+Header for publishing a presentation (slides) using ConTeXt.
+
+Any of the predefined modules, which are available in the
+tex/context/base directory, can be used by writing a "module" directive
+at the top of the Muse file; if no such directive is provided, module
+pre-01 is used.  Alternatively, you can use your own style ("mystyle",
+in this example) by replacing "\usemodule[]" with "\input mystyle".
+
+This may be text or a filename.
+
+@item muse-context-slides-markup-strings
+Strings used for marking up text in ConTeXt slides.
+
+@item muse-context-markup-specials-document
+A table of characters which must be represented specially.
+These are applied to the entire document, sans already-escaped
+regions.
+
+@item muse-context-markup-specials-example
+A table of characters which must be represented specially.
+These are applied to @verb{|example>|} regions.
+
+With the default interpretation of @verb{|<example>|} regions, no
+specials need to be escaped.
+
+@item muse-context-markup-specials-literal
+A table of characters which must be represented specially.
+This applies to =monospaced text= and @verb{|<code>|} regions.
+
+@item muse-context-markup-specials-url
+A table of characters which must be represented specially.
+These are applied to URLs.
+
+@item muse-context-markup-specials-image
+A table of characters which must be represented specially.
+These are applied to image filenames.
+
+@item muse-context-permit-contents-tag
+If nil, ignore @verb{|<contents>|} tags.  Otherwise, insert table of
+contents.
+
+Most of the time, it is best to have a table of contents on the
+first page, with a new page immediately following.  To make this
+work with documents published in both HTML and ConTeXt, we need to
+ignore the @verb{|<contents>|} tag.
+
+If you don't agree with this, then set this option to non-nil,
+and it will do what you expect.
+
+@end table
+
+@node DocBook, HTML, ConTeXt, Publishing Styles
+@comment  node-name,  next,  previous,  up
+@section Publishing in DocBook XML form
+
+This publishing style is used to generate DocBook XML files.
+
+@subheading Styles provided
+
+@table @code
+
+@cindex publishing styles, docbook
+@item docbook
+Publish a file in Docbook form.
+
+@end table
+
+@subheading Options provided
+
+This publishing style uses the same options for markup up special
+characters as the ``xml'' publishing style.  @xref{XML}, for details.
+
+@table @code
+
+@item muse-docbook-extension
+Default file extension for publishing DocBook XML files.
+
+@item muse-docbook-header
+Header used for publishing DocBook XML files.
+
+This may be text or a filename.
+
+@item muse-docbook-footer
+Footer used for publishing DocBook XML files.
+
+This may be text or a filename.
+
+@item muse-docbook-markup-regexps
+List of markup rules for publishing a Muse page to DocBook XML.
+
+@item muse-docbook-markup-functions
+An alist of style types to custom functions for that kind of text.
+
+@item muse-docbook-markup-strings
+Strings used for marking up text.
+
+These cover the most basic kinds of markup, the handling of which
+differs little between the various styles.
+
+@item muse-docbook-encoding-default
+The default Emacs buffer encoding to use in published files.
+This will be used if no special characters are found.
+
+@item muse-docbook-charset-default
+The default DocBook XML charset to use if no translation is
+found in @code{muse-xml-encoding-map}.
+
+@end table
+
+@node HTML, Ikiwiki, DocBook, Publishing Styles
+@comment  node-name,  next,  previous,  up
+@section Publishing in HTML or XHTML form
+
+This publishing style is capable of producing HTML or XHTML documents.
+
+@subheading Styles provided
+
+@table @code
+
+@cindex publishing styles, html
+@item html
+Supports publishing to HTML 4.0 and HTML 4.01, Strict or Transitional.
+
+@item xhtml
+Supports publishing to XHTML 1.0 and XHTML 1.1, Strict or Transitional.
+
+@end table
+
+@subheading Options provided
+
+If an HTML option does not have a corresponding XHTML option, it will
+be used for both of these publishing styles.
+
+These publishing styles use the same options for markup up special
+characters as the ``xml'' publishing style.  @xref{XML}, for details.
+
+@table @code
+
+@item muse-html-extension
+Default file extension for publishing HTML files.
+
+@item muse-xhtml-extension
+Default file extension for publishing XHTML files.
+
+@item muse-html-style-sheet
+Store your stylesheet definitions here.
+
+This is used in @code{muse-html-header}.  You can put raw CSS in here or
+a @verb{|<link>|} tag to an external stylesheet.  This text may contain
+@verb{|<lisp>|} markup tags.
+
+If you are publishing to XHTML, then customize the
+@code{muse-xhtml-style-sheet} option instead.
+
+@item muse-xhtml-style-sheet
+Store your stylesheet definitions here.
+
+This is used in @code{muse-xhtml-header}.  You can put raw CSS in here
+or a @verb{|<link>|} tag to an external stylesheet.  This text may
+contain @verb{|<lisp>|} markup tags.
+
+@item muse-html-header
+Header used for publishing HTML files.
+
+This may be text or a filename.
+
+@item muse-html-footer
+Footer used for publishing HTML files.
+
+This may be text or a filename.
+
+@item muse-xhtml-header
+Header used for publishing XHTML files.
+
+This may be text or a filename.
+
+@item muse-xhtml-footer
+Footer used for publishing XHTML files.
+
+This may be text or a filename.
+
+@item muse-html-anchor-on-word
+When true, anchors surround the closest word.
+
+This allows you to select them in a browser (i.e. for pasting), but has
+the side-effect of marking up headers in multiple colors if your header
+style is different from your link style.
+
+@item muse-html-table-attributes
+The attribute to be used with HTML @verb{|<table>|} tags.
+
+If you want to make more-complicated tables in HTML, surround the HTML
+with the @verb{|literal|} tag, so that it does not get escaped.
+
+@item muse-html-markup-regexps
+List of markup rules for publishing a Muse page to HTML.
+
+@item muse-html-markup-functions
+An alist of style types to custom functions for that kind of text.
+
+@item muse-html-markup-strings
+Strings used for marking up text as HTML.
+
+These cover the most basic kinds of markup, the handling of which
+differs little between the various styles.
+
+@item muse-xhtml-markup-strings
+Strings used for marking up text as XHTML.
+
+These cover the most basic kinds of markup, the handling of which
+differs little between the various styles.
+
+@item muse-html-markup-tags
+A list of tag specifications, for specially marking up HTML.
+@xref{muse-publish-markup-tags}, for more information.
+
+@item muse-html-meta-http-equiv
+The http-equiv attribute used for the HTML @verb{|<meta>|} tag.
+
+@item muse-html-meta-content-type
+The content type used for the HTML @verb{|<meta>|} tag.
+
+If you are striving for XHTML 1.1 compliance, you may want to change
+this to ``application/xhtml+xml''.
+
+@item muse-html-meta-content-encoding
+The charset to append to the HTML @verb{|<meta>|} tag.
+
+If set to the symbol 'detect, use @code{muse-xml-encoding-map} to try
+and determine the HTML charset from emacs's coding.  If set to a string,
+this string will be used to force a particular charset.
+
+@item muse-html-charset-default
+The default HTML meta charset to use if no translation is found in
+@code{muse-xml-encoding-map}.
+
+@item muse-html-encoding-default
+The default Emacs buffer encoding to use in published files.
+This will be used if no special characters are found.
+
+@end table
+
+@node Ikiwiki, Journal, HTML, Publishing Styles
+@comment  node-name,  next,  previous,  up
+@section Integrating with ikiwiki
+
+Note: Support for Ikiwiki is not yet complete.  Use at your own risk.
+
+Ikiwiki is a wiki compiler (@url{http://ikiwiki.info/}).  Emacs Muse can
+(not yet) be used as a source format for Ikiwiki pages with the plugin
+@file{IkiWiki::Plugin::muse}.
+
+The @file{lisp/muse-ikiwiki.el} file provides publishing functions and
+styles for Ikiwiki.  The plugin for Ikiwiki to recognize Muse files is
+provided by the @file{contrib/ikiwiki/IkiWiki/Plugin/muse.pm} file.  Two
+sample init files are available in the @file{examples/ikiwiki}
+directory.  Configure your @file{ikiwiki.setup} file so that the
+@code{muse_init} variable has the location of your Muse init file.
+
+If you are using CGI, The directory @file{contrib/ikiwiki/IkiWiki} must
+be copied to the same directory as the CGI script that Ikiwiki
+generates.  When publishing your wiki, the @var{PERL5LIB} environment
+variable must contain the path to the @file{contrib/ikiwiki/IkiWiki}
+directory.
+
+@subheading Styles provided
+
+@table @code
+
+@cindex publishing styles, ikiwiki
+@item ikiwiki
+Supports publishing XHTML output that Ikiwiki can understand.
+
+@end table
+
+@subheading Options provided
+
+@table @code
+
+@item muse-ikiwiki-header
+Header used for publishing Ikiwiki output files.
+
+This may be text or a filename.
+
+@item muse-ikiwiki-footer
+Footer used for publishing Ikiwiki output files.
+
+This may be text or a filename.
+
+@end table
+
+@subheading Other relevant options
+
+@table @code
+
+@item muse-colors-evaluate-lisp-tags
+Specify whether to evaluate the contents of @verb{|<lisp>|} tags at
+display time.  If nil, don't evaluate them.  If non-nil, evaluate
+them.
+
+The actual contents of the buffer are not changed, only the
+displayed text.
+
+@item muse-html-src-allowed-modes
+Modes that we allow the @verb{|<src>|} tag to colorize.  If @code{t},
+permit the @verb{|<src>|} tag to colorize any mode.
+
+If a list of mode names, such as @code{'("html" "latex")}, and the lang
+argument to @verb{|<src>|} is not in the list, then use fundamental mode
+instead.
+
+@item muse-publish-enable-dangerous-tags
+If non-nil, publish tags like @verb{|<lisp>|} and @verb{|<command>|}
+that can call external programs or expose sensitive information.
+Otherwise, ignore tags like this.
+
+This is useful to set to @code{nil} when the file to publish is coming
+from an untrusted source.
+
+@end table
+
+@node Journal, LaTeX, Ikiwiki, Publishing Styles
+@comment  node-name,  next,  previous,  up
+@section Keeping a journal or blog
+@cindex journal
+@cindex blog, journal style
+
+The module facilitates the keeping and publication of a journal.  When
+publishing to HTML, it assumes the form of a web log, or blog.
+
+The input format for each entry is as follows.
+
+@example
+* 20040317: Title of entry
+
+text for the entry.
+
+<qotd>
+"You know who you are. It comes down to a simple gut check: You
+either love what you do or you don't. Period." -- P. Bronson
+</qotd>
+@end example
+
+The "qotd", or Quote of the Day, is entirely optional.  When generated
+to HTML, this entry is rendered as the following.
+
+@example
+<div class="entry">
+  <div class="entry-qotd">
+    <h3>Quote of the Day:</h3>
+    <p>"You know who you are. It comes down to a simple gut
+      check: You either love what you do or you don't. Period."
+      -- P. Bronson</p>
+  </div>
+  <div class="entry-body">
+    <div class="entry-head">
+      <div class="entry-date">
+        <span class="date">March 17, 2004</span>
+      </div>
+      <div class="entry-title">
+        <h2>Title of entry</h2>
+      </div>
+    </div>
+    <div class="entry-text">
+      <p>Text for the entry.</p>
+    </div>
+  </div>
+</div>
+@end example
+
+The plurality of "div" tags makes it possible to display the entries in
+any form you wish, using a CSS style.
+
+Also, an .RDF file can be generated from your journal by publishing it
+with the "rdf" style.  It uses the first two sentences of the first
+paragraph of each entry as its "description", and auto-generates tags
+for linking to the various entries.
+
+@subheading muse-project-alist considerations
+
+If you wish to publish an RDF or RSS feed, it is important to include
+the @option{:base-url} attribute in your @code{muse-project-alist} entry
+for your Journal projects.  An example follows.
+
+@example
+(setq muse-project-alist
+      '(("Journal" ("~/Journal/"
+                    :default "journal")
+        (:base "journal-rss"
+               :base-url "http://example.org/journal/"
+               :path "~/public_html/journal"))))
+@end example
+
+@subheading Styles provided
+
+@table @code
+
+@cindex publishing styles, journal-html
+@item journal-html
+Publish journal entries as an HTML document.
+
+@cindex publishing styles, journal-xhtml
+@item journal-xhtml
+Publish journal entries as an XHTML document.
+
+@cindex publishing styles, journal-latex
+@item journal-latex
+Publish journal entries as a LaTeX document.
+
+@cindex publishing styles, journal-pdf
+@item journal-pdf
+Publish journal entries as a PDF document.
+
+@cindex publishing styles, journal-book-latex
+@item journal-book-latex
+Publish journal entries as a LaTeX book.
+
+@cindex publishing styles, journal-book-pdf
+@item journal-book-pdf
+Publish journal entries as a PDF book.
+
+@cindex publishing styles, journal-rdf
+@cindex publishing styles, RSS 1.0
+@item journal-rdf
+Publish journal entries as an RDF file (RSS 1.0).
+
+@cindex publishing styles, journal-rss
+@cindex publishing styles, RSS 2.0
+@item journal-rss
+Publish journal entries as an RSS file (RSS 2.0).
+
+@cindex publishing styles, journal-rss-entry
+@item journal-rss-entry
+Used internally by @code{journal-rss} and @code{journal-rdf} for
+publishing individual entries.
+
+@end table
+
+@subheading Options provided
+
+@table @code
+
+@item muse-journal-heading-regexp
+A regexp that matches a journal heading.
+
+Paren group 1 is the ISO date, group 2 is the optional category, and
+group 3 is the optional heading for the entry.
+
+@item muse-journal-date-format
+Date format to use for journal entries.
+
+@item muse-journal-html-heading-regexp
+A regexp that matches a journal heading from an HTML document.
+
+Paren group 1 is the ISO date, group 2 is the optional category, and
+group 3 is the optional heading for the entry.
+
+@item muse-journal-html-entry-template
+Template used to publish individual journal entries as HTML.
+
+This may be text or a filename.
+
+@item muse-journal-latex-section
+Template used to publish a LaTeX section.
+
+@item muse-journal-latex-subsection
+Template used to publish a LaTeX subsection.
+
+@item muse-journal-markup-tags
+A list of tag specifications, for specially marking up Journal entries.
+
+@xref{muse-publish-markup-tags}, for more information.
+
+This is used by @code{journal-latex} and its related styles, as well as
+the @code{journal-rss-entry} style, which both @code{journal-rdf} and
+@code{journal-rss} use.
+
+@item muse-journal-rdf-extension
+Default file extension for publishing RDF (RSS 1.0) files.
+
+@item muse-journal-rdf-base-url
+The base URL of the website referenced by the RDF file.
+
+@item muse-journal-rdf-header
+Header used for publishing RDF (RSS 1.0) files.
+
+This may be text or a filename.
+
+@item muse-journal-rdf-footer
+Footer used for publishing RDF (RSS 1.0) files.
+
+This may be text or a filename.
+
+@item muse-journal-rdf-date-format
+Date format to use for RDF entries.
+
+@item muse-journal-rdf-entry-template
+Template used to publish individual journal entries as RDF.
+
+This may be text or a filename.
+
+@item muse-journal-rdf-summarize-entries
+If non-nil, include only summaries in the RDF file, not the full data.
+
+The default is nil, because this annoys some subscribers.
+
+@item muse-journal-rss-heading-regexp
+A regexp that matches a journal heading from an HTML document.
+
+Paren group 1 is the ISO date, group 2 is the optional category,
+and group 3 is the optional heading for the entry.
+
+@item muse-journal-rss-extension
+Default file extension for publishing RSS 2.0 files.
+
+@item muse-journal-rss-base-url
+The base URL of the website referenced by the RSS file.
+
+@item muse-journal-rss-header
+Header used for publishing RSS 2.0 files.
+
+This may be text or a filename.
+
+@item muse-journal-rss-footer
+Footer used for publishing RSS 2.0 files.
+
+This may be text or a filename.
+
+@item muse-journal-rss-date-format
+Date format to use for RSS 2.0 entries.
+
+@item muse-journal-rss-entry-template
+Template used to publish individual journal entries as RSS 2.0.
+
+This may be text or a filename.
+
+@item muse-journal-rss-enclosure-types-alist
+File types that are accepted as RSS enclosures.
+
+This is an alist that maps file extension to content type.
+
+Useful for podcasting.
+
+@item muse-journal-rss-summarize-entries
+If non-nil, include only summaries in the RSS file, not the full data.
+
+The default is nil, because this annoys some subscribers.
+
+@item muse-journal-rss-markup-regexps
+List of markup rules for publishing a Muse journal page to RSS.
+
+For more information on the structure of this list,
+@xref{muse-publish-markup-regexps}.
+
+@item muse-journal-rss-markup-functions
+An alist of style types to custom functions for that kind of text.
+
+For more on the structure of this list,
+@xref{muse-publish-markup-functions}.
+
+@end table
+
+@node LaTeX, Poem, Journal, Publishing Styles
+@comment  node-name,  next,  previous,  up
+@section Publishing LaTeX documents
+
+This publishing style is capable of producing LaTeX or PDF documents.
+
+If you wish to publish PDF documents, you will need to have a good LaTeX
+installation.  For Debian and Ubuntu, this can be accomplished by
+installing the ``tetex-bin'' and ``tetex-extra'' packages.  TeX fonts
+are also a must.
+
+If your LaTeX installation has the file @file{grffile.sty}, which may be
+found in the @file{texlive-latex-recommended} package for Debian and
+Ubuntu, then consider using it by adding the following to your header
+file.  This allows spaces in filenames to work.
+
+@example
+\usepackage@{grffile@}
+@end example
+
+@subheading Styles provided
+
+@table @code
+
+@cindex publishing styles, latex
+@item latex
+Publish a LaTeX document.
+
+@cindex publishing styles, pdf
+@item pdf
+Publish a PDF document, using an external LaTeX document conversion
+tool.
+
+@cindex publishing styles, latexcjk
+@item latexcjk
+Publish a LaTeX document with CJK (Chinese) encodings.
+
+@cindex publishing styles, pdfcjk
+@item pdfcjk
+Publish a PDF document with CJK (Chinese) encodings, using an external
+LaTeX document conversion tool.
+
+@cindex publishing styles, slides
+@item slides
+Publish a LaTeX document that uses the Beamer extension.  This is
+suitable for producing slides.
+
+Here is an example of a slide.
+
+@example
+<slide title="First Slide">
+Everything between the slide tags composes this slide.
+
+[[Some-sort-of-cute-image.png]]
+
+ - A bullet point.
+ - Another bullet point.
+</slide>
+@end example
+
+@cindex publishing styles, slides-pdf
+@item slides-pdf
+Publish a PDF document of slides, using the Beamer extension.
+
+@cindex publishing styles, lecture-notes
+@item lecture-notes
+Publish a LaTeX document that uses the Beamer extension.  This is
+suitable for producing lecture notes.
+
+This can also use the @verb{|<slide>|} tag.
+
+@cindex publishing styles, lecture-notes-pdf
+@item lecture-notes-pdf
+Publish a PDF document of lecture notes, using the Beamer extension.
+
+@end table
+
+@subheading Options provided
+
+@table @code
+
+@item muse-latex-extension
+Default file extension for publishing LaTeX files.
+
+@item muse-latex-pdf-extension
+Default file extension for publishing LaTeX files to PDF.
+
+@item muse-latex-pdf-browser
+The program to use when browsing a published PDF file.
+
+This should be a format string.
+
+@item muse-latex-pdf-program
+The program that is called to generate PDF content from LaTeX content.
+
+@item muse-latex-pdf-cruft
+Extensions of files to remove after generating PDF output successfully.
+
+@item muse-latex-header
+Header used for publishing LaTeX files.
+
+This may be text or a filename.
+
+@item muse-latex-footer
+Footer used for publishing LaTeX files.
+
+This may be text or a filename.
+
+@item muse-latexcjk-header
+Header used for publishing LaTeX files (CJK).
+
+This may be text or a filename.
+
+@item muse-latexcjk-footer
+Footer used for publishing LaTeX files (CJK).
+
+This may be text or a filename.
+
+@item muse-latex-slides-header
+Header for publishing of slides using LaTeX.
+
+This may be text or a filename.
+
+You must have the Beamer extension for LaTeX installed for this to work.
+
+@item muse-latex-lecture-notes-header
+Header publishing of lecture notes using LaTeX.
+
+This may be text or a filename.
+
+You must have the Beamer extension for LaTeX installed for this to work.
+
+@item muse-latex-markup-regexps
+List of markup regexps for identifying regions in a Muse page.
+
+For more on the structure of this list,
+@xref{muse-publish-markup-regexps}.
+
+@item muse-latex-markup-functions
+An alist of style types to custom functions for that kind of text.
+
+For more on the structure of this list,
+@xref{muse-publish-markup-functions}.
+
+@item muse-latex-markup-strings
+Strings used for marking up text.
+
+These cover the most basic kinds of markup, the handling of which
+differs little between the various styles.
+
+@item muse-latex-slides-markup-tags
+A list of tag specifications, for specially marking up LaTeX slides.
+
+@item muse-latexcjk-encoding-map
+An alist mapping emacs coding systems to appropriate CJK codings.
+Use the base name of the coding system (ie, without the -unix).
+
+@item muse-latexcjk-encoding-default
+The default Emacs buffer encoding to use in published files.
+
+This will be used if no special characters are found.
+
+@item muse-latex-markup-specials-document
+A table of characters which must be represented specially.
+These are applied to the entire document, sans already-escaped
+regions.
+
+@item muse-latex-markup-specials-example
+A table of characters which must be represented specially.
+These are applied to @verb{|example>|} regions.
+
+With the default interpretation of @verb{|<example>|} regions, no
+specials need to be escaped.
+
+@item muse-latex-markup-specials-literal
+A table of characters which must be represented specially.
+This applies to =monospaced text= and @verb{|<code>|} regions.
+
+@item muse-latex-markup-specials-url
+A table of characters which must be represented specially.
+These are applied to URLs.
+
+@item muse-latex-markup-specials-image
+A table of characters which must be represented specially.
+These are applied to image filenames.
+
+@item muse-latex-permit-contents-tag
+If nil, ignore @verb{|<contents>|} tags.  Otherwise, insert table of
+contents.
+
+Most of the time, it is best to have a table of contents on the
+first page, with a new page immediately following.  To make this
+work with documents published in both HTML and LaTeX, we need to
+ignore the @verb{|<contents>|} tag.
+
+If you don't agree with this, then set this option to non-nil,
+and it will do what you expect.
+
+@end table
+
+@node Poem, Texinfo, LaTeX, Publishing Styles
+@comment  node-name,  next,  previous,  up
+@section Publish a poem to LaTeX or PDF
+
+The @code{muse-poem} module makes it easy to attractively publish and
+reference poems in the following format, using the "memoir" module for
+LaTeX publishing.  It will also markup poems for every other output
+style, though none are nearly as pretty.
+
+@example
+Title
+
+
+Body of poem
+
+
+Annotations, history, notes, etc.
+@end example
+
+Once a poem is written in this format, just publish it to PDF using the
+@code{poem-pdf} style.  To make an inlined reference to a poem that
+you've written -- for example, from a blog page -- there is a "poem" tag
+defined by this module.
+
+@example
+<poem title="name.of.poem.page">
+@end example
+
+Let's assume the template above was called @file{name.of.poem.page};
+then the above tag would result in this inclusion.
+
+@example
+** Title
+
+> Body of poem
+@end example
+
+John Wiegley uses this module for publishing all of the poems on his
+website, which are at
+@uref{http://www.newartisans.com/johnw/poems.html}.
+
+@subheading Styles provided
+
+@table @code
+
+@cindex publishing styles, poem-latex
+@item poem-latex
+Publish a poem in LaTeX form.
+
+@cindex publishing styles, poem-pdf
+@item poem-pdf
+Publish a poem to a PDF document.
+
+@cindex publishing styles, chapbook-latex
+@item chapbook-latex
+Publish a book of poems in LaTeX form.
+
+@cindex publishing styles, chapbook-pdf
+@item chapbook-pdf
+Publish a book of poems to a PDF document.
+
+@end table
+
+@subheading Options provided
+
+@table @code
+
+@item muse-poem-latex-header
+Header used for publishing LaTeX poems.
+
+This may be text or a filename.
+
+@item muse-poem-latex-footer
+Footer used for publishing LaTeX files.
+
+This may be text or a filename.
+
+@item muse-poem-markup-strings
+Strings used for marking up poems.
+
+These cover the most basic kinds of markup, the handling of which
+differs little between the various styles.
+
+@item muse-chapbook-latex-header
+Header used for publishing a book of poems in LaTeX form.
+
+This may be text or a filename.
+
+@item muse-chapbook-latex-footer
+Footer used for publishing a book of poems in LaTeX form.
+
+This may be text or a filename.
+
+@item muse-poem-chapbook-strings
+Strings used for marking up books of poems.
+
+These cover the most basic kinds of markup, the handling of which
+differs little between the various styles.
+
+@end table
+
+@node Texinfo, XML, Poem, Publishing Styles
+@comment  node-name,  next,  previous,  up
+@section Publish entries to Texinfo format or PDF
+
+Rules for publishing a Muse file as a Texinfo article.
+
+@subheading Styles provided
+
+@table @code
+
+@cindex publishing styles, texi
+@item texi
+Publish a file in Texinfo form.
+
+@cindex publishing styles, texi
+@item info
+Generate an Info file from a Muse file.
+
+@cindex publishing styles, info-pdf
+@item info-pdf
+Publish a file in PDF form.
+
+@end table
+
+@subheading Options provided
+
+@table @code
+
+@item muse-texinfo-process-natively
+If non-nil, use the Emacs `texinfmt' module to make Info files.
+
+@item muse-texinfo-extension
+Default file extension for publishing Texinfo files.
+
+@item muse-texinfo-info-extension
+Default file extension for publishing Info files.
+
+@item muse-texinfo-pdf-extension
+Default file extension for publishing PDF files.
+
+@item muse-texinfo-header
+Text to prepend to a Muse page being published as Texinfo.
+
+This may be text or a filename.
+It may contain @verb{|<lisp>|} markup tags.
+
+@item muse-texinfo-footer
+Text to append to a Muse page being published as Texinfo.
+
+This may be text or a filename.
+It may contain @verb{|<lisp>|} markup tags.
+
+@item muse-texinfo-markup-regexps
+List of markup rules for publishing a Muse page to Texinfo.
+
+For more on the structure of this list,
+@xref{muse-publish-markup-regexps}.
+
+@item muse-texinfo-markup-functions
+An alist of style types to custom functions for that kind of text.
+
+For more on the structure of this list,
+@xref{muse-publish-markup-functions}.
+
+@item muse-texinfo-markup-strings
+Strings used for marking up text.
+
+These cover the most basic kinds of markup, the handling of which
+differs little between the various styles.
+
+@item muse-texinfo-markup-specials
+A table of characters which must be represented specially.
+
+@item muse-texinfo-markup-specials
+A table of characters which must be represented specially.
+These are applied to URLs.
+
+@end table
+
+@node XML, , Texinfo, Publishing Styles
+@comment  node-name,  next,  previous,  up
+@section Publish entries to XML
+
+Muse is capable of publishing XML documents, with the help of the
+@file{muse-xml.el} module.
+
+A RelaxNG schema is available as part of the Muse distribution in the
+@file{etc/muse.rnc} file.
+
+@subheading Styles provided
+
+@table @code
+
+@cindex publishing styles, xml
+@item xml
+Publish a file in XML form.
+
+@end table
+
+@subheading Options provided
+
+@table @code
+
+@cindex muse-xml-encoding-map
+@item muse-xml-encoding-map
+An alist mapping Emacs coding systems to appropriate XML charsets.
+Use the base name of the coding system (i.e. without the -unix).
+
+@item muse-xml-markup-specials
+A table of characters which must be represented specially in all
+XML-like markup formats.
+
+@item muse-xml-markup-specials-url-extra
+A table of characters which must be represented specially in all
+XML-like markup formats.
+
+These are extra characters that are escaped within URLs.
+
+@item muse-xml-extension
+Default file extension used for publishing XML files.
+
+@item muse-xml-header
+Header used for publishing XML files.
+
+This may be text or a filename.
+
+@item muse-xml-footer
+Footer used for publishing XML files.
+
+This may be text or a filename.
+
+@item muse-xml-markup-regexps
+List of markup rules for publishing a Muse page to XML.
+
+For more on the structure of this list,
+@xref{muse-publish-markup-regexps}.
+
+@item muse-xml-markup-functions
+An alist of style types to custom functions for that kind of text.
+
+For more on the structure of this list,
+@xref{muse-publish-markup-functions}.
+
+@item muse-xml-markup-strings
+Strings used for marking up text.
+
+These cover the most basic kinds of markup, the handling of which
+differs little between the various styles.
+
+@item muse-xml-encoding-default
+The default Emacs buffer encoding to use in published files.
+
+This will be used if no special characters are found.
+
+@item muse-xml-charset-default
+The default XML charset to use if no translation is found in
+@code{muse-xml-encoding-map}.
+
+@end table
+
+
+@node Extending Muse, Miscellaneous, Publishing Styles, Top
+@comment  node-name,  next,  previous,  up
+@chapter Making your own publishing styles
+
+@menu
+* Markup Functions::            Specifying functions to mark up text.
+* Markup Regexps::              Markup rules for publishing.
+* Markup Strings::              Strings specific to a publishing style.
+* Markup Tags::                 Tag specifications for special markup.
+* Style Elements::              Parameters used for defining styles.
+* Deriving Styles::             Deriving a new style from an existing
+                                  one.
+@end menu
+
+@node Markup Functions, Markup Regexps, , Extending Muse
+@comment  node-name,  next,  previous,  up
+@section Specifying functions to mark up text
+@cindex publishing, markup functions
+
+@anchor{muse-publish-markup-functions}
+@code{muse-publish-markup-functions}
+
+An alist of style types to custom functions for that kind of text.
+
+This is used by publishing styles to attempt to minimize the amount of
+custom regexps that each has to define.  @file{muse-publish} provides
+rules for the most common types of markup.
+
+Each member of the list is of the following form.
+
+@example
+(SYMBOL FUNCTION)
+@end example
+
+@itemize @bullet
+@item SYMBOL
+Describes the type of text to associate with this rule.
+@code{muse-publish-markup-regexps} maps regexps to these symbols.
+
+@item FUNCTION
+Function to use to mark up this kind of rule if no suitable function is
+found through the @option{:functions} tag of the current style.
+@end itemize
+
+@node Markup Regexps, Markup Strings, Markup Functions, Extending Muse
+@comment  node-name,  next,  previous,  up
+@section Markup rules for publishing
+@cindex publishing, markup regexps
+@cindex publishing, rules
+
+@anchor{muse-publish-markup-regexps}
+@code{muse-publish-markup-regexps}
+
+List of markup rules for publishing a page with Muse.
+
+The rules given in this variable are invoked first, followed by whatever
+rules are specified by the current style.
+
+Each member of the list is either a function, or a list of the following
+form.
+
+@example
+(REGEXP/SYMBOL TEXT-BEGIN-GROUP REPLACEMENT-TEXT/FUNCTION/SYMBOL)
+@end example
+
+@itemize @bullet
+@item REGEXP
+A regular expression, or symbol whose value is a regular expression,
+which is searched for using `re-search-forward'.
+
+@item TEXT-BEGIN-GROUP
+The matching group within that regexp which denotes the beginning of the
+actual text to be marked up.
+
+@item REPLACEMENT-TEXT
+A string that will be passed to `replace-match'.
+
+If it is not a string, but a function, it will be called to determine
+what the replacement text should be (it must return a string).  If it is
+a symbol, the value of that symbol should be a string.
+@end itemize
+
+The replacements are done in order, one rule at a time.  Writing
+the regular expressions can be a tricky business.  Note that case
+is never ignored.  `case-fold-search' is always bound to nil
+while processing the markup rules.
+
+@subheading Publishing order
+
+This is the order that the publishing rules are consulted, by default.
+This may be changed by customizing @code{muse-publish-markup-regexps}.
+
+@table @code
+
+@item trailing and leading whitespace
+Remove trailing and leading whitespace from a file.
+
+@item directive
+@samp{#directive}
+
+This is only recognized at the beginning of a file.
+
+@item comment
+@samp{; a commented line}
+
+@item tag
+@samp{<tag>}
+
+@item comment
+@samp{; comment}
+
+@item explicit links
+Prevent emphasis characters in explicit links from being marked up.
+
+Don't actually publish them here, just add a special no-emphasis text
+property.
+
+@item word
+Whitespace-delimited word, possibly with emphasis characters
+
+This function is responsible for marking up emphasis and escaping some
+specials.
+
+@item heading
+@samp{** Heading}
+
+Outline-mode style headings.
+
+@item enddots
+@samp{....}
+
+These are ellipses with a dot at end.
+
+@item dots
+@samp{...}
+
+Ellipses.
+
+@item rule
+@samp{----}
+
+Horizontal rule or section separator.
+
+@item no-break-space
+@samp{~~}
+
+Prevent lines from being split before or after these characters.
+
+@item line-break
+@samp{<br>}
+
+Break a line at point.
+
+@item fn-sep
+@samp{Footnotes:}
+
+Beginning of footnotes section.
+
+@item footnote
+@samp{[1]}
+
+Footnote definition or reference.  If at beginning of line, it is a
+definition.
+
+@item list
+@itemize @bullet
+@item
+@samp{ 1. }
+
+@item
+@samp{ - }
+
+@item
+@samp{term :: }
+@end itemize
+
+Numbered list, item list, or term definition list.
+
+@item table-el
+
+@file{table.el} style tables
+
+@item table
+@samp{table | cells}
+
+Muse tables or orgtbl-mode style tables.
+
+@item quote
+spaces before beginning of text
+
+Blockquotes.
+
+@item emdash
+@samp{--}
+
+2-wide dash
+
+@item verse
+@samp{> verse text}
+
+@item anchor
+@samp{#anchor}
+
+@item link
+@samp{[[explicit][links]]}
+
+@item url
+@samp{http://example.com/}
+
+@item email
+@samp{bare-email@@example.com}
+
+@end table
+
+@node Markup Strings, Markup Tags, Markup Regexps, Extending Muse
+@comment  node-name,  next,  previous,  up
+@section Strings specific to a publishing style
+@cindex publishing, markup strings
+
+@dfn{Markup strings} are strings used for marking up text for a
+particular style.
+
+These cover the most basic kinds of markup, the handling of which
+differs little between the various styles.
+
+@subheading Available markup strings
+
+@table @code
+
+@item image-with-desc
+An image and a description.
+
+Argument 1: image without extension.  Argument 2: image extension.
+Argument 3: description.
+
+@item image
+An inlined image.
+
+Argument 1: image without extension.  Argument 2: image extension.
+
+@item image-link
+An image with a link around it.
+
+Argument 1: link.  Argument 2: image without extension.
+Argument 3: image extension.
+
+@item anchor-ref
+A reference to an anchor on the current page.
+
+Argument 1: anchor name.  Argument 2: description if one exists, or the
+original link otherwise.
+
+@item url
+A URL without a description.
+
+Argument 1: URL.
+
+@item link
+A link to a Muse page with a description.
+
+Argument 1: link.  Argument 2: description if one exists, or the
+original link otherwise.
+
+@item link-and-anchor
+A link to a Muse page with an anchor, and a description.
+
+Argument 1: link.  Argument 2: anchor name.
+Argument 3: description if one exists, or the original link otherwise.
+Argument 4: link without an extension.
+
+@item email-addr
+A link to an email address.
+
+Argument 1: email address.  Argument 2: email address.
+
+@item anchor
+An anchor.
+
+Argument 1: name of anchor.
+
+@item emdash
+A 2-length dash.
+
+Argument 1: Initial whitespace.  Argument 2: Terminating whitespace.
+
+@item comment-begin
+Beginning of a comment.
+
+@item comment-end
+End of a comment.
+
+@item rule
+A horizontal line or space.
+
+@item no-break-space
+A space that separates two words which are not to be separated.
+
+@item footnote
+Beginning of footnote.
+
+@item footnote-end
+End of footnote.
+
+@item footnotemark
+Mark a reference for the current footnote.
+
+Argument 1: number of this footnote.
+
+@item footnotemark-end
+End of a reference for the current footnote.
+
+@item footnotetext
+Indicate the text of the current footnote.
+
+Argument 1: number of this footnote.
+
+@item footnotetext-end
+End of a footnote text line.
+
+@item fn-sep
+Text used to replace ``Footnotes:'' line.
+
+@item dots
+3 dots.
+
+@item enddots
+4 dots.
+
+@item part
+Beginning of a part indicator line.  This is used by book publishing.
+
+@item part-end
+End of a part indicator line.  This is used by book publishing.
+
+@item chapter
+Beginning of a chapter indicator line.  This is used by book publishing.
+
+@item chapter-end
+End of a chapter indicator line.  This is used by book publishing.
+
+@item section
+Beginning of level 1 section indicator line.
+
+Argument 1: level of section; always 1.
+
+@item section-end
+End of level 1 section indicator line.
+
+Argument 1: level of section; always 1.
+
+@item subsection
+Beginning of level 2 section indicator line.
+
+Argument 1: level of section; always 2.
+
+@item subsection-end
+End of level 2 section indicator line.
+
+Argument 1: level of section; always 2.
+
+@item subsubsection
+Beginning of level 3 section indicator line.
+
+Argument 1: level of section; always 3.
+
+@item subsubsection-end
+End of level 3 section indicator line.
+
+Argument 1: level of section; always 3.
+
+@item section-other
+Beginning of section indicator line, where level is greater than 3.
+
+Argument 1: level of section.
+
+@item section-other-end
+End of section indicator line, where level is greater than 3.
+
+Argument 1: level of section.
+
+@item begin-underline
+Beginning of underlined text.
+
+@item end-underline
+End of underlined text.
+
+@item begin-literal
+Beginning of verbatim text.  This includes @verb{|<code>|} tags and
+=teletype text=.
+
+@item end-literal
+End of verbatim text.  This includes @verb{|<code>|} tags and =teletype
+text=.
+
+@item begin-emph
+Beginning of the first level of emphasized text.
+
+@item end-emph
+End of the first level of emphasized text.
+
+@item begin-more-emph
+Beginning of the second level of emphasized text.
+
+@item end-more-emph
+End of the second level of emphasized text.
+
+@item begin-most-emph
+Beginning of the third (and final) level of emphasized text.
+
+@item end-most-emph
+End of the third (and final) level of emphasized text.
+
+@item begin-verse
+Beginning of verse text.
+
+@item verse-space
+String used to each space that is further indented than the beginning of
+the verse.
+
+@item begin-verse-line
+Beginning of a line of verse.
+
+@item empty-verse-line
+End of a line of verse.
+
+@item begin-last-stanza-line
+Beginning of the last line of a verse stanza.
+
+@item end-last-stanza-line
+End of the last line of a verse stanza.
+
+@item end-verse
+End of verse text.
+
+@item begin-example
+Beginning of an example region.  To make use of this, an
+@samp{<example>} tag is needed.
+
+@item end-example
+End of an example region.  To make use of this, an @samp{</example>} tag
+is needed.
+
+@item begin-center
+Begin a centered line.
+
+@item end-center
+End a centered line.
+
+@item begin-quote
+Begin a quoted region.
+
+@item end-quote
+End a quoted region.
+
+@item begin-quote-item
+Begin a quote paragraph.
+
+@item end-quote-item
+End a quote paragraph.
+
+@item begin-uli
+Begin an unordered list.
+
+@item end-uli
+End an unordered list.
+
+@item begin-uli-item
+Begin an unordered list item.
+
+@item end-uli-item
+End an unordered list item.
+
+@item begin-oli
+Begin an ordered list.
+
+@item end-oli
+End an ordered list.
+
+@item begin-oli-item
+Begin an ordered list item.
+
+@item end-oli-item
+End an ordered list item.
+
+@item begin-dl
+Begin a definition list.
+
+@item end-dl
+End a definition list.
+
+@item begin-dl-item
+Begin a definition list item.
+
+@item end-dl-item
+End a definition list item.
+
+@item begin-ddt
+Begin a definition list term.
+
+@item end-ddt
+End a definition list term.
+
+@item begin-dde
+Begin a definition list entry.
+
+@item end-dde
+End a definition list entry.
+
+@item begin-table
+Begin a table.
+
+@item end-table
+End a table.
+
+@item begin-table-group
+Begin a table grouping.
+
+@item end-table-group
+End a table grouping.
+
+@item begin-table-row
+Begin a table row.
+
+@item end-table-row
+End a table row.
+
+@item begin-table-entry
+Begin a table entry.
+
+@item end-table-entry
+End a table entry.
+
+@end table
+
+@node Markup Tags, Style Elements, Markup Strings, Extending Muse
+@comment  node-name,  next,  previous,  up
+@section Tag specifications for special markup
+@cindex publishing, markup tags
+
+@anchor{muse-publish-markup-tags}
+@code{muse-publish-markup-tags}
+
+A list of tag specifications, for specially marking up text.
+
+XML-style tags are the best way to add custom markup to Muse.  This is
+easily accomplished by customizing this list of markup tags.
+
+For each entry, the name of the tag is given, whether it expects a
+closing tag and/or an optional set of attributes, whether it is
+nestable, and a function that performs whatever action is desired within
+the delimited region.
+
+The tags themselves are deleted during publishing, before the function
+is called.  The function is called with three arguments, the beginning
+and end of the region surrounded by the tags.  If properties are
+allowed, they are passed as a third argument in the form of an alist.
+The `end' argument to the function is always a marker.
+
+Point is always at the beginning of the region within the tags, when the
+function is called.  Wherever point is when the function finishes is
+where tag markup will resume.
+
+These tag rules are processed once at the beginning of markup, and once
+at the end, to catch any tags which may have been inserted in-between.
+
+@node Style Elements, Deriving Styles, Markup Tags, Extending Muse
+@comment  node-name,  next,  previous,  up
+@section Parameters used for defining styles
+@cindex publishing, style elements
+
+Style elements are tags that define a style.  Use either
+@code{muse-define-style} or @code{muse-derive-style}
+(@pxref{Deriving Styles}) to create a new style.
+
+@defun muse-define-style name &rest elements
+@end defun
+
+@subheading Usable elements
+
+@table @option
+
+@item :suffix
+File extension to use for publishing files with this style.
+
+@item :link-suffix
+File extension to use for publishing links to Muse files with this
+style.
+
+@item :osuffix
+File extension to use for publishing second-stage files with this style.
+
+For example, PDF publishing generates a LaTeX file first, then a PDF
+from that LaTeX file.
+
+@item :regexps
+List of markup rules for publishing a page with Muse.
+@xref{muse-publish-markup-regexps}.
+
+@item :functions
+An alist of style types to custom functions for that kind of text.
+@xref{muse-publish-markup-functions}.
+
+@item :strings
+Strings used for marking up text with this style.
+
+These cover the most basic kinds of markup, the handling of which
+differs little between the various styles.
+
+@item :tags
+A list of tag specifications, used for handling extra tags.
+@xref{muse-publish-markup-tags}.
+
+@item :specials
+A table of characters which must be represented specially.
+
+@item :before
+A function that is to be executed on the newly-created publishing buffer
+(or the current region) before any publishing occurs.
+
+This is used to set extra parameters that direct the publishing process.
+
+@item :before-end
+A function that is to be executed on the publishing buffer (or the
+current region) immediately after applying all of the markup regexps.
+
+This is used to fix the order of table elements (header, footer, body)
+in XML-ish styles.
+
+@item :after
+A function that is to be executed on the publishing buffer after
+:before-end, and immediately after inserting the header and footer.
+
+This is used for generating the table of contents as well as setting the
+file coding system.
+
+@item :final
+A function that is to be executed after saving the published file, but
+while still in its buffer.
+
+This is used for generating second-stage documents like PDF files from
+just-published LaTeX files.
+
+The function must accept three arguments: the name of the muse source
+file, the name of the just-published file, and the name of the
+second-stage target file.  The name of the second-stage target file is
+the same as that of the just-published file if no second-stage
+publishing is required.
+
+@item :header
+Header used for publishing files of this style.
+
+This may be a variable, text, or a filename.  It is inserted at the
+beginning of a file, after evaluating the publishing markup.
+
+@item :footer
+Footer used for publishing files of this style.
+
+This may be a variable, text, or a filename.  It is inserted at the end
+of a file, after evaluating the publishing markup.
+
+@item :style-sheet
+Style sheet used for publishing files of this style.
+
+This may be a variable or text.  It is used in the header of HTML and
+XHTML based publishing styles.
+
+@item :browser
+The function used to browse the published result of files of this style.
+
+@end table
+
+@node Deriving Styles, , Style Elements, Extending Muse
+@comment  node-name,  next,  previous,  up
+@section Deriving a new style from an existing one
+@cindex publishing styles, deriving
+
+To create a new style from an existing one, use @code{muse-derive-style}
+as follows.  This is a good way to fix something you don't like about a
+particular publishing style, or to personalize it.
+
+@defun muse-derive-style new-name base-name &rest elements
+@end defun
+
+The derived name is a string defining the new style, such as "my-html".
+The base name must identify an existing style, such as "html" -- if you
+have loaded @file{muse-html}.  The style parameters are the same as
+those used to create a style, except that they override whatever
+definitions exist in the base style.  However, some definitions only
+partially override.  The following parameters support partial
+overriding.
+
+@xref{Style Elements}, for a complete list of all parameters.
+
+@table @option
+
+@item :functions
+If a markup function is not found in the derived style's function list,
+the base style's function list will be queried.
+
+@item :regexps
+All regexps in the current style and the base style(s) will be used.
+
+@item :strings
+If a markup string is not found in the derived style's string list, the
+base style's string list will be queried.
+
+@end table
+
+@node Miscellaneous, Getting Help and Reporting Bugs, Extending Muse, Top
+@comment  node-name,  next,  previous,  up
+@chapter Miscellaneous add-ons, like a minor mode
+
+@menu
+* Muse List Edit Minor Mode::   Edit lists easily in other major modes.
+@end menu
+
+@node Muse List Edit Minor Mode, , , Miscellaneous
+@comment  node-name,  next,  previous,  up
+@section Edit lists easily in other major modes
+@cindex muse-list-edit-minor-mode
+
+@code{muse-list-edit-minor-mode} is meant to be used with other major
+modes, such as Message (for composing email) and debian-changelog-mode
+(for editing debian/changelog files).
+
+It implements practically perfect support for editing and filling lists.
+It can even handle nested lists.  In addition to Muse-specific list
+items ("-", numbers, definition lists, footnotes), it can also handle
+items that begin with "*" or "+".  Filling list items behaves in the
+same way that it does in Muse, regardless of whether filladapt is also
+enabled, which is the primary reason to use this tool.
+
+@subheading Installation
+
+To use it, add ``(require 'muse-mode)'' to your Emacs customization file
+and add the function @code{turn-on-muse-list-edit-minor-mode} to any
+mode hooks where you wish to enable this minor mode.
+
+@subheading Keybindings
+
+@code{muse-list-edit-minor-mode} uses the following keybindings.
+
+@table @kbd
+
+@item M-RET (`muse-l-e-m-m-insert-list-item')
+Insert a new list item at point, using the indentation level of the
+current list item.
+
+@item C-< (`muse-l-e-m-m-decrease-list-item-indent')
+Decrease indentation of the current list item.
+
+@item C-> (`muse-l-e-m-m-increase-list-item-indent')
+Increase indentation of the current list item.
+
+@end table
+
+@subheading Functions
+
+@defun muse-list-edit-minor-mode
+This is a global minor mode for editing files with lists.
+It is meant to be used with other major modes, and not with Muse mode.
+
+Interactively, with no prefix argument, toggle the mode.
+With universal prefix @var{arg} turn mode on.
+With zero or negative @var{arg} turn mode off.
+
+This minor mode provides the Muse keybindings for editing lists,
+and support for filling lists properly.
+
+It recognizes not only Muse-style lists, which use the "-"
+character or numbers, but also lists that use asterisks or plus
+signs.  This should make the minor mode generally useful.
+
+Definition lists and footnotes are also recognized.
+
+Note that list items may omit leading spaces, for compatibility
+with modes that set @code{left-margin}, such as
+@code{debian-changelog-mode}.
+@end defun
+
+@defun turn-on-muse-list-edit-minor-mode
+Unconditionally turn on Muse list edit minor mode.
+@end defun
+
+@defun turn-off-muse-list-edit-minor-mode
+Unconditionally turn off Muse list edit minor mode.
+@end defun
+
+@node Getting Help and Reporting Bugs, History, Miscellaneous, Top
+@comment  node-name,  next,  previous,  up
+@chapter Getting Help and Reporting Bugs
+@cindex help, getting
+@cindex bugs, reporting
+
+After you have read this guide, if you still have questions about
+Muse, or if you have bugs to report, there are several places you can
+go.
+
+@itemize @bullet
+
+@item
+@uref{http://www.emacswiki.org/cgi-bin/wiki/EmacsMuse} is the
+emacswiki.org page, and anyone may add tips, hints, or bug descriptions
+to it.
+
+@item
+@uref{http://mwolson.org/projects/EmacsMuse.html} is the web page
+that Michael Olson (the current maintainer) made for Muse.
+
+@item
+Muse has several different mailing lists.
+
+@table @samp
+
+@item muse-el-announce
+Low-traffic list for Muse-related announcements.
+
+You can join this mailing list (@email{muse-el-announce@@gna.org})
+using the subscription form at
+@url{http://mail.gna.org/listinfo/muse-el-announce/}.  This
+mailing list is also available via Gmane (@url{http://gmane.org/}). The
+group is called @samp{gmane.emacs.muse.announce}.
+
+@item muse-el-discuss
+Discussion, bugfixes, suggestions, tips, and the like for Muse.
+This mailing list also includes the content of muse-el-announce.
+
+You can join this mailing list (@email{muse-el-discuss@@gna.org})
+using the subscription form at
+@url{http://mail.gna.org/listinfo/muse-el-discuss/}.  This mailing
+list is also available via Gmane with the identifier
+@samp{gmane.emacs.muse.general}.
+
+@item muse-el-logs
+Log messages for commits made to Muse.
+
+You can join this mailing list (@email{muse-el-logs@@gna.org}) using
+the subscription form at
+@url{http://mail.gna.org/listinfo/muse-el-logs/}.  This mailing list
+is also available via Gmane with the identifier
+@samp{gmane.emacs.muse.scm}.
+
+@item muse-el-commits
+Generated bug reports for Emacs Muse.  If you use our bug-tracker at
+@url{https://gna.org/bugs/?group=muse-el}, the bug reports will be
+sent to this list automatically.
+
+You can join this mailing list (@email{muse-el-commits@@gna.org}) using
+the subscription form at
+@url{http://mail.gna.org/listinfo/muse-el-commits/}.  This mailing list
+is also available via Gmane with the identifier
+@samp{gmane.emacs.muse.cvs}.
+
+@item muse-el-internationalization
+Discussion of translation of the Muse website and documentation into
+many languages.
+
+You can join this mailing list
+(@email{muse-el-internationalization@@gna.org}) using the subscription
+form at @url{http://mail.gna.org/listinfo/internationalization/}.  This
+mailing list is also available via Gmane with the identifier
+@samp{gmane.emacs.muse.internationalization}.
+
+@end table
+
+@item
+You can visit the IRC Freenode channel @samp{#emacs}. Many of the
+contributors are frequently around and willing to answer your
+questions.  The @samp{#muse} channel is also available for
+Muse-specific help, and its current maintainer hangs out there.
+
+@item
+The maintainer of Emacs Muse, Michael Olson, may be contacted at
+@email{mwolson@@gnu.org}.  He can be rather slow at answering email, so
+it is often better to use the muse-el-discuss mailing list.
+
+@end itemize
+
+@node History, Contributors, Getting Help and Reporting Bugs, Top
+@comment  node-name,  next,  previous,  up
+@chapter History of This Document
+@cindex history, of Muse
+
+@itemize
+@item 2004
+John Wiegley started Muse upon realizing that EmacsWiki had some serious
+limitations. Around February 2004, he started making "emacs-wiki version
+3.00 APLHA", which eventually became known as Muse.
+
+Most of those who frequent the emacs-wiki mailing list continued to use
+emacs-wiki, mainly because Planner hasn't been ported over to it.
+
+As of 2004-12-01, Michael Olson became the maintainer of Muse, as per
+John Wiegley's request.
+
+@item 2005
+Michael Olson overhauled this document and added many new sections in
+preparation for the first release of Muse (3.01).
+
+@end itemize
+
+@node Contributors, GNU Free Documentation License, History, Top
+@comment  node-name,  next,  previous,  up
+@chapter Contributors to This Documentation
+@cindex contributors
+
+The first draft of this document was taken from the emacs-wiki texinfo
+manual.  Michael Olson adapted it for Muse and added most of its
+content.
+
+John Sullivan did a majority of the work on the emacs-wiki texinfo
+manual.
+
+While Sacha Chua maintained emacs-wiki, she worked quite a bit on the
+emacs-wiki texinfo manual.
+
+
+@node GNU Free Documentation License, Concept Index, Contributors, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+
+@node Concept Index,  , GNU Free Documentation License, Top
+@comment  node-name,  next,  previous,  up
+@unnumbered Index
+
+@printindex cp
+
+@bye
diff --git a/packages/nhexl-mode/nhexl-mode.el b/packages/nhexl-mode/nhexl-mode.el
new file mode 100644 (file)
index 0000000..d4a3d26
--- /dev/null
@@ -0,0 +1,262 @@
+;;; nhexl-mode.el --- Minor mode to edit files via hex-dump format  -*- lexical-binding: t -*-
+
+;; Copyright (C) 2010, 2012  Free Software Foundation, Inc.
+
+;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
+;; Keywords: data
+;; Version: 0.1
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This package implements NHexl mode, a minor mode for editing files
+;; in hex dump format.  The mode command is called `nhexl-mode'.
+;;
+;; This minor mode implements similar functionality to `hexl-mode',
+;; but using a different implementation technique, which makes it
+;; usable as a "plain" minor mode.  It works on any buffer, and does
+;; not mess with the undo boundary or with the major mode.
+;;
+;; In theory it could also work just fine even on very large buffers,
+;; although in practice it seems to make the display engine suffer.
+
+;;; Todo:
+;; - Clicks on the hex side should put point at the right place.
+
+;;; Code:
+
+(eval-when-compile (require 'cl))
+(require 'hexl)                         ;For faces.
+
+(defgroup nhexl nil
+  "Edit a file in a hex dump format."
+  :group 'data)
+
+(defvar nhexl-line-width 16
+  "Number of bytes per line.")
+
+(defvar nhexl--display-table
+  (let ((dt (make-display-table)))
+    ;; (aset dt ?\n [?␊])
+    (aset dt ?\t [?␉])
+    dt))
+
+(defvar nhexl--saved-vars nil)
+(make-variable-buffer-local 'nhexl--saved-vars)
+(defvar nhexl--point nil)
+(make-variable-buffer-local 'nhexl--point)
+
+;;;###autoload
+(define-minor-mode nhexl-mode
+  "Minor mode to edit files via hex-dump format"
+  :lighter " NHexl"
+  (if (not nhexl-mode)
+      (progn
+        (dolist (varl nhexl--saved-vars)
+          (set (make-local-variable (car varl)) (cdr varl)))
+        (kill-local-variable 'nhexl--saved-vars)
+        (jit-lock-unregister #'nhexl--jit)
+        (remove-hook 'after-change-functions #'nhexl--change-function 'local)
+        (remove-hook 'post-command-hook #'nhexl--post-command 'local)
+        ;; FIXME: This will conflict with any other use of `display'.
+        (with-silent-modifications
+          (put-text-property (point-min) (point-max) 'display nil))
+        (remove-overlays (point-min) (point-max) 'nhexl t))
+    (unless (local-variable-p 'nhexl--saved-vars)
+      (dolist (var '(buffer-display-table buffer-invisibility-spec
+                     overwrite-mode header-line-format))
+        (push (cons var (symbol-value var)) nhexl--saved-vars)))
+    (setq nhexl--point (point))
+    (setq header-line-format '(:eval (nhexl--header-line)))
+    (binary-overwrite-mode 1)
+    (setq buffer-invisibility-spec ())
+    (set (make-local-variable 'buffer-display-table) nhexl--display-table)
+    (jit-lock-register #'nhexl--jit)
+    (add-hook 'change-major-mode-hook (lambda () (nhexl-mode -1)) nil 'local)
+    (add-hook 'post-command-hook #'nhexl--post-command nil 'local)
+    (add-hook 'after-change-functions #'nhexl--change-function nil 'local)))
+
+(defun nhexl--change-function (beg end len)
+  ;; Jit-lock already takes care of refreshing the changed area, so we
+  ;; only have to make sure the tail's addresses are refreshed when
+  ;; text is inserted/removed.
+  (when (/= len (- end beg))
+    (put-text-property beg (point-max) 'fontified nil)))
+
+(defvar nhexl--overlay-counter 100)
+(make-variable-buffer-local 'nhexl--overlay-counter)
+
+(defun nhexl--debug-count-ols ()
+  (let ((i 0))
+    (dolist (ol (overlays-in (point-min) (point-max)))
+      (when (overlay-get ol 'nhexl) (incf i)))
+    i))
+
+(defun nhexl--flush-overlays (buffer)
+  (with-current-buffer buffer
+    (kill-local-variable 'nhexl--overlay-counter)
+    ;; We've created many overlays in this buffer, which can slow
+    ;; down operations significantly.  Let's flush them.
+    ;; An easy way to flush them is
+    ;;   (remove-overlays min max 'nhexl t)
+    ;;   (put-text-property min max 'fontified nil)
+    ;; but if the visible part of the buffer requires more than
+    ;; nhexl--overlay-counter overlays, then we'll inf-loop.
+    ;; So let's be more careful about removing overlays.
+    (let ((windows (get-buffer-window-list nil nil t))
+          (start (point-min))
+          (zero (save-restriction (widen) (point-min)))
+          (debug-count (nhexl--debug-count-ols)))
+      (with-silent-modifications
+        (while (< start (point-max))
+          (let ((end (point-max)))
+            (dolist (window windows)
+              (cond
+               ((< start (1- (window-start window)))
+                (setq end (min (1- (window-start window)) end)))
+               ((< start (1+ (window-end window)))
+                (setq start (1+ (window-end window))))))
+            ;; Round to multiple of nhexl-line-width.
+            (setq start (+ zero (* (ceiling (- start zero) nhexl-line-width)
+                                   nhexl-line-width)))
+            (setq end (+ zero (* (truncate (- end zero) nhexl-line-width)
+                                 nhexl-line-width)))
+            (when (< start end)
+              (remove-overlays start end 'nhexl t)
+              (put-text-property start end 'fontified nil)
+              (setq start (+ end nhexl-line-width))))))
+      (let ((debug-new-count (nhexl--debug-count-ols)))
+        (message "Flushed %d overlays, %d remaining"
+                 (- debug-count debug-new-count) debug-new-count)))))
+
+(defun nhexl--make-line (from next zero)
+  (let* ((nextpos (min next (point-max)))
+         (bufstr (buffer-substring from nextpos))
+         (i -1)
+         (s (concat
+             (unless (eq zero from) "\n")
+             (format (propertize "%08x:" 'face
+                                 (if (or (< nhexl--point from)
+                                         (>= nhexl--point next))
+                                     'hexl-address-region
+                                   '(highlight hexl-address-region)))
+                     (- from zero))
+             (propertize " " 'display '(space :align-to 12))
+             (mapconcat (lambda (c)
+                          (setq i (1+ i))
+                          ;; FIXME: In multibyte buffers,
+                          ;; do something clever about
+                          ;; non-ascii chars.
+                          (let ((s (format "%02x" c)))
+                            (when (eq nhexl--point (+ from i))
+                              (put-text-property 0 (length s)
+                                                 'face 'highlight
+                                                 s))
+                            (if (zerop (mod i 2))
+                                s (concat s " "))))
+                        bufstr
+                        "")
+             (if (> next nextpos)
+                 (make-string (+ (/ (1+ (- next nextpos)) 2)
+                                 (* (- next nextpos) 2))
+                              ?\s))
+             (propertize "  " 'display
+                         `(space :align-to
+                                 ,(+ (/ (* nhexl-line-width 5) 2)
+                                     12 3))))))
+    (font-lock-append-text-property 0 (length s) 'face 'default s)
+    s))
+
+(defun nhexl--jit (from to)
+  (let ((zero (save-restriction (widen) (point-min))))
+    (setq from (+ zero (* (truncate (- from zero) nhexl-line-width)
+                          nhexl-line-width)))
+    (setq to (+ zero (* (ceiling (- to zero) nhexl-line-width)
+                        nhexl-line-width)))
+    (remove-overlays from (min to (point-max)) 'nhexl t)
+    (save-excursion
+      (goto-char from)
+      (while (search-forward "\n" to t)
+        (put-text-property (match-beginning 0) (match-end 0)
+                           'display (copy-sequence "␊"))))
+    (while (< from to)
+
+      (decf nhexl--overlay-counter)
+      (when (and (= nhexl--overlay-counter 0)
+                 ;; If the user enabled jit-lock-stealth fontification, then
+                 ;; removing overlays is just a waste since
+                 ;; jit-lock-stealth will restore them anyway.
+                 (not jit-lock-stealth-time))
+        ;; (run-with-idle-timer 0 nil 'nhexl--flush-overlays (current-buffer))
+        )
+      
+      (let* ((next (+ from nhexl-line-width))
+             (ol (make-overlay from next))
+             (s (nhexl--make-line from next zero)))
+        (overlay-put ol 'nhexl t)
+        (overlay-put ol 'face 'hexl-ascii-region)
+        (overlay-put ol 'before-string s)
+        (setq from next)))))
+
+(defun nhexl--header-line ()
+  ;; FIXME: merge with nhexl--make-line.
+  (let* ((zero (save-restriction (widen) (point-min)))
+         (text
+          (let ((tmp ()))
+            (dotimes (i nhexl-line-width)
+              (push (if (< i 10) (+ i ?0) (+ i -10 ?a)) tmp))
+            (apply 'string (nreverse tmp))))
+         (pos (mod (- nhexl--point zero) nhexl-line-width))
+         (i -1))
+    (put-text-property pos (1+ pos) 'face 'highlight text)
+    (concat
+     (propertize " " 'display '(space :align-to 0))
+     "Address:"
+     (propertize " " 'display '(space :align-to 12))
+     (mapconcat (lambda (c)
+                  (setq i (1+ i))
+                  (let ((s (string c c)))
+                    (when (eq i pos)
+                      (put-text-property 0 (length s)
+                                         'face 'highlight
+                                         s))
+                    (if (zerop (mod i 2)) s
+                      (concat
+                       s (propertize " " 'display
+                                     `(space :align-to
+                                             ,(+ (/ (* i 5) 2) 12 3)))))))
+                text
+                "")
+     (propertize "  " 'display
+                 `(space :align-to
+                         ,(+ (/ (* nhexl-line-width 5) 2)
+                             12 3)))
+     text)))
+  
+
+(defun nhexl--post-command ()
+  (when (/= (point) nhexl--point)
+    (let ((zero (save-restriction (widen) (point-min)))
+          (oldpoint nhexl--point))
+      (setq nhexl--point (point))
+      (with-silent-modifications
+        (nhexl--jit (point) (1+ (point)))
+        (if (/= (truncate (- (point) zero) nhexl-line-width)
+                (truncate (- oldpoint zero) nhexl-line-width))
+            (nhexl--jit oldpoint (1+ oldpoint)))))))
+  
+
+(provide 'nhexl-mode)
+;;; nhexl-mode.el ends here
diff --git a/packages/nlinum/nlinum.el b/packages/nlinum/nlinum.el
new file mode 100644 (file)
index 0000000..1c9e4e8
--- /dev/null
@@ -0,0 +1,182 @@
+;;; nlinum.el --- Show line numbers in the margin  -*- lexical-binding: t -*-
+
+;; Copyright (C) 2012  Free Software Foundation, Inc.
+
+;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
+;; Keywords: convenience
+;; Version: 1.1
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This is like linum-mode, but uses jit-lock to be (hopefully)
+;; more efficient.
+
+;;; Code:
+
+(require 'linum)                        ;For its face.
+
+(defvar nlinum--width 2)
+(make-variable-buffer-local 'nlinum--width)
+
+;; (defvar nlinum--desc "")
+
+;;;###autoload
+(define-minor-mode nlinum-mode
+  "Toggle display of line numbers in the left margin (Linum mode).
+With a prefix argument ARG, enable Linum mode if ARG is positive,
+and disable it otherwise.  If called from Lisp, enable the mode
+if ARG is omitted or nil.
+
+Linum mode is a buffer-local minor mode."
+  :lighter nil ;; (" NLinum" nlinum--desc)
+  (jit-lock-unregister #'nlinum--region)
+  (remove-hook 'window-configuration-change-hook #'nlinum--setup-window t)
+  (remove-hook 'after-change-functions #'nlinum--after-change)
+  (kill-local-variable 'nlinum--line-number-cache)
+  (remove-overlays (point-min) (point-max) 'nlinum t)
+  ;; (kill-local-variable 'nlinum--ol-counter)
+  (kill-local-variable 'nlinum--width)
+  (when nlinum-mode
+    (add-hook 'window-configuration-change-hook #'nlinum--setup-window nil t)
+    (add-hook 'after-change-functions #'nlinum--after-change nil t)
+    (jit-lock-register #'nlinum--region t))
+  (nlinum--setup-windows))
+
+(defun nlinum--setup-window ()
+  (set-window-margins nil (if nlinum-mode nlinum--width)
+                      (cdr (window-margins))))
+
+(defun nlinum--setup-windows ()
+  (dolist (win (get-buffer-window-list nil nil t))
+    (with-selected-window win (nlinum--setup-window))))
+
+(defun nlinum--new-width ()
+  (nlinum--setup-windows)
+  ;; (kill-local-variable 'nlinum--ol-counter)
+  (remove-overlays (point-min) (point-max) 'nlinum t)
+  (run-with-timer 0 nil
+                  (lambda (buf)
+                    (with-current-buffer buf
+                      (with-silent-modifications
+                        (remove-text-properties
+                         (point-min) (point-max) '(fontified)))))
+                  (current-buffer)))
+
+;; (defun nlinum--ol-count ()
+;;   (let ((i 0))
+;;     (dolist (ol (overlays-in (point-min) (point-max)))
+;;       (when (overlay-get ol 'nlinum) (incf i)))
+;;     i))
+
+;; (defvar nlinum--ol-counter 100)
+;; (make-variable-buffer-local 'nlinum--ol-counter)
+
+;; (defun nlinum--flush-overlays (buffer)
+;;   (with-current-buffer buffer
+;;     (kill-local-variable 'nlinum--ol-counter)
+;;     ;; We've created many overlays in this buffer, which can slow
+;;     ;; down operations significantly.  Let's flush them.
+;;     ;; An easy way to flush them is
+;;     ;;   (remove-overlays min max 'nlinum t)
+;;     ;;   (put-text-property min max 'fontified nil)
+;;     ;; but if the visible part of the buffer requires more than
+;;     ;; nlinum-overlay-threshold overlays, then we'll inf-loop.
+;;     ;; So let's be more careful about removing overlays.
+;;     (let ((windows (get-buffer-window-list nil nil t))
+;;           (start (point-min))
+;;           (debug-count (nlinum--ol-count)))
+;;       (with-silent-modifications
+;;         (while (< start (point-max))
+;;           (let ((end (point-max)))
+;;             (dolist (window windows)
+;;               (cond
+;;                ((< start (1- (window-start window)))
+;;                 (setq end (min (1- (window-start window)) end)))
+;;                ((< start (1+ (window-end window)))
+;;                 (setq start (1+ (window-end window))))))
+;;             (when (< start end)
+;;               (remove-overlays start end 'nlinum t)
+;;               ;; Warn jit-lock that this part of the buffer is not done any
+;;               ;; more.  This has the downside that font-lock will be re-applied
+;;               ;; as well.  But jit-lock doesn't know how to (and doesn't want
+;;               ;; to) keep track of the status of its various
+;;               ;; clients independently.
+;;               (put-text-property start end 'fontified nil)
+;;               (setq start (+ end 1))))))
+;;       (let ((debug-new-count (nlinum--ol-count)))
+;;         (message "Flushed %d overlays, %d remaining"
+;;                  (- debug-count debug-new-count) debug-new-count)))))
+
+
+(defvar nlinum--line-number-cache nil)
+(make-variable-buffer-local 'nlinum--line-number-cache)
+
+(defun nlinum--after-change (&rest _args)
+  (setq nlinum--line-number-cache nil))
+
+(defun nlinum--line-number-at-pos ()
+  "Like `line-number-at-pos' but sped up with a cache."
+  ;; (assert (bolp))
+  (let ((pos
+         (if (and nlinum--line-number-cache
+                  (> (- (point) (point-min))
+                     (abs (- (point) (car nlinum--line-number-cache)))))
+             (funcall (if (> (point) (car nlinum--line-number-cache))
+                          #'+ #'-)
+                      (cdr nlinum--line-number-cache)
+                      (count-lines (point) (car nlinum--line-number-cache)))
+           (line-number-at-pos))))
+    ;;(assert (= pos (line-number-at-pos)))
+    (setq nlinum--line-number-cache (cons (point) pos))
+    pos))
+
+(defun nlinum--region (start limit)
+  (save-excursion
+    ;; Text may contain those nasty intangible properties, but
+    ;; that shouldn't prevent us from counting those lines.
+    (let ((inhibit-point-motion-hooks t))
+      (goto-char start)
+      (unless (bolp) (forward-line 1))
+      (remove-overlays (point) limit 'nlinum t)
+      (let ((line (nlinum--line-number-at-pos))
+            (fmt (format "%%%dd" nlinum--width)))
+        (while
+            (and (not (eobp)) (< (point) limit)
+                 (let* ((ol (make-overlay (point) (1+ (point))))
+                        (str (format fmt line))
+                        (width (string-width str)))
+                   (when (< nlinum--width width)
+                     (setq nlinum--width width)
+                     (nlinum--new-width))
+                   (overlay-put ol 'nlinum t)
+                   (overlay-put ol 'evaporate t)
+                   (overlay-put ol 'before-string
+                                (propertize " " 'display
+                                            `((margin left-margin)
+                                              ,(propertize str
+                                                           'face 'linum))))
+                   ;; (setq nlinum--ol-counter (1- nlinum--ol-counter))
+                   ;; (when (= nlinum--ol-counter 0)
+                   ;;   (run-with-idle-timer 0.5 nil #'nlinum--flush-overlays
+                   ;;                        (current-buffer)))
+                   (setq line (1+ line))
+                   (zerop (forward-line 1))))))))
+  ;; (setq nlinum--desc (format "-%d" (nlinum--ol-count)))
+  nil)
+                 
+        
+(provide 'nlinum)
+;;; nlinum.el ends here
diff --git a/packages/notes-mode/COPYING b/packages/notes-mode/COPYING
new file mode 100644 (file)
index 0000000..94a9ed0
--- /dev/null
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/packages/notes-mode/HTML/notes-mode.html b/packages/notes-mode/HTML/notes-mode.html
new file mode 100644 (file)
index 0000000..737a88e
--- /dev/null
@@ -0,0 +1,2364 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on April 4, 2012 by texi2html 1.82
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+-->
+<head>
+<title>Notes-mode</title>
+
+<meta name="description" content="Notes-mode">
+<meta name="keywords" content="Notes-mode">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="Top"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1 class="settitle">Notes-mode</h1>
+
+
+
+
+
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top"><a href="#Introduction">1. Introduction</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Basics">2. Basics</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                      
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Advanced-Features">3. Advanced Features</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           
+</td></tr>
+<tr><td align="left" valign="top"><a href="#History">4. History</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                     
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Installation">5. Installation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Keystroke-index">Keystroke index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Concept-index">Concept index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment"> &mdash; The Detailed Node Listing &mdash;
+
+Introduction
+
+</pre></th></tr><tr><td align="left" valign="top"><a href="#What-is-it_003f">1.1 What is it?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                 
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Why-keep-notes-at-all_003f">1.2 Why keep notes at all?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Why-keep-notes-on_002dline_003f">1.3 Why keep notes on-line?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Why-use-notes_002dmode_003f">1.4 Why use notes-mode?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Y2K-Statement">1.5 Y2K Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Related-work">1.6 Related work</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Staying-on-top">1.7 Staying on top</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+Basics
+
+</pre></th></tr><tr><td align="left" valign="top"><a href="#Getting-started">2.1 Getting started</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             
+</td></tr>
+<tr><td align="left" valign="top"><a href="#A-notes-file">2.2 A notes file</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                
+</td></tr>
+<tr><td align="left" valign="top"><a href="#The-notes-index">2.3 The notes index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             
+</td></tr>
+<tr><td align="left" valign="top"><a href="#The-notes-directories">2.4 The notes directories</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+Advanced Features
+
+</pre></th></tr><tr><td align="left" valign="top"><a href="#Notes-files">3.1 Notes files</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                 
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Notes-indices">3.2 Notes indices</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Notes_002dmode-configuration">3.3 Notes-mode configuration</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+Notes files
+
+</pre></th></tr><tr><td align="left" valign="top"><a href="#Getting-around">3.1.1 Getting around</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Subject-summary">3.1.2 Subject summary</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Encryption">3.1.3 Encryption</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                  
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Useful-conventions">3.1.4 Useful conventions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+History
+
+</pre></th></tr><tr><td align="left" valign="top"><a href="#Notes_002dmode-history">4.1 Notes-mode history</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Credits">4.2 Credits</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                     
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Changes">4.3 Changes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                     
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+</pre></th></tr></table>
+
+
+<hr size="1">
+<a name="Introduction"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Top" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#What-is-it_003f" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[ &lt;&lt; ]</td>
+<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#Basics" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Introduction-1"></a>
+<h1 class="chapter">1. Introduction</h1>
+
+<p>What is notes-mode and why should you (perhaps) use it?
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top"><a href="#What-is-it_003f">1.1 What is it?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                 
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Why-keep-notes-at-all_003f">1.2 Why keep notes at all?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Why-keep-notes-on_002dline_003f">1.3 Why keep notes on-line?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Why-use-notes_002dmode_003f">1.4 Why use notes-mode?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Y2K-Statement">1.5 Y2K Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Related-work">1.6 Related work</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Staying-on-top">1.7 Staying on top</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              
+</td></tr>
+</table>
+
+<hr size="6">
+<a name="What-is-it_003f"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Introduction" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Why-keep-notes-at-all_003f" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#Basics" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="What-is-it_003f-1"></a>
+<h2 class="section">1.1 What is it?</h2>
+
+<p>Notes-mode is an indexing system for on-line note-taking.
+Notes-mode is composed of two parts, the visible part,
+a major-mode for emacs to aid note-taking;
+and the invisible part,
+scripts which periodically index your notes for you.
+</p>
+<p>Note that notes-mode provides tools to <em>index</em> your notes,
+not to <em>search</em> them.
+(Other existing tools such as &lsquo;<tt>grep</tt>&rsquo;, &lsquo;<tt>agrep</tt>&rsquo;, and &lsquo;<tt>glimpse</tt>&rsquo;
+already allow file search.)
+</p>
+<p>A digression about indexing vs. searching:
+Indexing in this sense means
+organize them according to categories you give,
+while searching looks through all text for arbitrary strings.
+Drawing on the World Wide Web for examples,
+Yahoo (&lsquo;<tt>http://www.yahoo.com/</tt>&rsquo;) is an index,
+while Alta Vista (&lsquo;<tt>http://www.altavista.digital.com/</tt>&rsquo;)
+is a search-engine.
+In (potentially) more familiar terms,
+the yellow pages
+<a name="DOCF1" href="#FOOT1">(1)</a>
+are an index,
+while directory information (411 in the USA)
+is sort of a search-engine.
+</p>
+
+<hr size="6">
+<a name="Why-keep-notes-at-all_003f"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#What-is-it_003f" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Why-keep-notes-on_002dline_003f" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#Basics" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Why-keep-notes-at-all_003f-1"></a>
+<h2 class="section">1.2 Why keep notes at all?</h2>
+
+<p>So why should you use notes-mode?
+Well, first, consider why you should (perhaps)
+keep your notes on line.
+First,
+I assume that you take notes as part of your work or school.
+If you don&rsquo;t,
+you can stop reading now and go back to watching TV.
+</p>
+<p>If you keep notes, ask yourself why you keep them.
+Reasons vary for different people, but some include:
+</p>
+<ul>
+<li>
+To remember what is said or done.
+
+</li><li>
+To focus on what is important about what is said.
+
+</li><li>
+To provide proof of having done something
+at a particular time or date.
+
+</li><li>
+I know there were other reasons here,
+but they slipped my mind.
+</li></ul>
+
+
+<hr size="6">
+<a name="Why-keep-notes-on_002dline_003f"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Why-keep-notes-at-all_003f" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Why-use-notes_002dmode_003f" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#Basics" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Why-keep-notes-on_002dline_003f-1"></a>
+<h2 class="section">1.3 Why keep notes on-line?</h2>
+
+<p>OK, I&rsquo;ve talked you into keeping notes.
+Why do it on-line?
+Again, there are different reasons for different people.
+If you don&rsquo;t want to consider keeping your notes on-line,
+you&rsquo;re welcome to go back to your (clay tablets)
+paper notes.
+</p>
+<p>However, if you do much of your work on-line,
+or if you have portable computer,
+then you might want to consider keeping your notes on-line.
+</p>
+<ul>
+<li>
+It&rsquo;s faster to type than write,
+and possibly more legible at high speed.
+
+</li><li>
+Often information is already on-line.
+For example, in software development, bug reports,
+measurement results, and everything else that&rsquo;s useful
+is on-line.
+
+</li><li>
+You can take down more detail than you otherwise would
+(especially if the data is already on-line).
+Taking more copious notes can be helpful when you go back
+to figure out why that strange thing was happening.
+
+</li><li>
+On-line notes are easy to search.
+Full-text search with 
+grep, agrep, and glimpse are all much faster
+and are often more accurate than paging through paper notes
+looking for a particular keyword.
+
+</li><li>
+On-line notes are easy to index.
+(At least with notes-mode!)
+In addition to full-text search,
+it&rsquo;s helpful to organize notes by category.
+If you keep a table-of-contents of your paper notes,
+you are either extremely fastidious
+or a librarian (Nadia?).
+
+</li><li>
+You can keep all of your notes with you at all times
+(if you have a portable computer).
+Even at a page a day,
+paper notes quickly become bulky and awkward to carry around.
+On-line notes fit on your computer&rsquo;s hard disk,
+an extraordinarily compact medium
+by comparison.
+
+</li><li>
+Your notes can be automatically backed up.
+Paper notes can become damaged with time,
+and as a graduate student
+one of my fears was fire in Boelter Hall
+consuming all my research experiments
+and and therefore hopes of a degree.
+Electronic notes are extremely easy to duplicate
+and can be automatically backed up with the rest of your computer.
+(You <em>do</em> back up your computer, don&rsquo;t you?)
+
+</li></ul>
+
+<p>While these advantages are undoubtedly clear to any
+right-thinking computer user,
+it should be said that there are a few disadvantages 
+for on-line note-taking.
+</p>
+<ul>
+<li>
+If you don&rsquo;t have a computer with you most of the time,
+it&rsquo;s difficult take notes on-line (because you&rsquo;re off-line, of course).
+<a name="DOCF2" href="#FOOT2">(2)</a>
+
+</li><li>
+Computers require power.
+If your portable computer runs out of juice,
+you&rsquo;re on your own.
+Corollary:  watch your power, or bring paper.
+Better corollary:  watch your power, <em>and</em> bring paper.
+
+</li><li>
+Social limitations.
+It&rsquo;s not always socially acceptable to take notes-on-line.
+For example,
+at a party,
+few people would use a computer
+to take down the phone number of a person
+to whom they&rsquo;re attracted
+(at least, if they wanted the attraction to be mutual).
+<a name="DOCF3" href="#FOOT3">(3)</a>
+Sometimes other people find the sound of typing distracting.
+
+</li><li>
+Health issues.
+Repetitive stress injuries do occur
+writing (slower) by hand is at least 
+an alternate motion than typing.
+
+</li><li>
+Legal limitations.
+If you want to use your electronic notes
+to justify a patent or invention,
+you may be breaking legal ground.
+Being on the legal cutting-edge is rarely an easy thing
+for the person involved.<a name="DOCF4" href="#FOOT4">(4)</a>
+
+</li></ul>
+
+
+<hr size="6">
+<a name="Why-use-notes_002dmode_003f"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Why-keep-notes-on_002dline_003f" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Y2K-Statement" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#Basics" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Why-use-notes_002dmode_003f-1"></a>
+<h2 class="section">1.4 Why use notes-mode?</h2>
+
+<p>OK, I&rsquo;ve sold you on note-taking and even on on-line note-taking.
+What about notes-mode?
+Naturally,
+it slices, dices, and makes julienne fries.
+But wait, there&rsquo;s more:
+</p>
+<ul>
+<li>
+It automates indexing your notes,
+linking notes with the same subject together.
+
+</li><li>
+It supports embedded links,
+allowing you to manually link together different topics 
+and external files.
+
+</li><li>
+It includes a number of convenience-features in emacs.
+Subjects can be completed based on existing subjects.
+The usual emacs customization mechanisms are available.
+
+</li><li>
+Notes containing sensitive information can be encrypted.
+
+</li><li>
+Notes-mode seems better than the other, currently available alternatives.
+</li></ul>
+
+<p>What are the alternatives?  I&rsquo;m glad you asked.
+<a name="DOCF5" href="#FOOT5">(5)</a>
+</p>
+<ul>
+<li>
+<strong>HTML</strong>.
+HTML has better formatting capabilities than notes-mode,
+and it has excellent linking capabilities.
+Unfortunately,
+HTML&rsquo;s tags are fairly intrusive
+ (each is at least four characters long and most come with a pair),
+ tags can get confused with normal text,
+ errors in HTML can be bad (obscuring data),
+ and there&rsquo;s no automatic indexing feature
+ (at least with plain HTML).
+Besides,
+ all data should be kept as close to the ASCII from whence it came,
+ as God Intended (hi, Steve).
+
+</li><li>
+<strong>Word Processors</strong>.
+Word processors are strong in the formatting department,
+ but most don&rsquo;t really have linking capabilities,
+ and have poor or restricted indexing.
+
+</li></ul>
+
+<hr size="6">
+<a name="Y2K-Statement"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Why-use-notes_002dmode_003f" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Related-work" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#Basics" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Y2K-Statement-1"></a>
+<h2 class="section">1.5 Y2K Statement</h2>
+
+<p>Notes mode uses dates extensively,
+ both two-digit years and seconds-since-1970.
+However, notes-mode has been coded to function correctly through
+ the year 2038.
+</p>
+<p>To avoid problems with the year 2000, notes-mode assumes
+ that any two-digit years before &ldquo;70&rdquo; are 20xx, not 19xx.
+Notes-mode should therefore work correctly in both the year 1999 and 2000.
+</p>
+<p>(Notes-mode 1.17 released February 1999 fixes a lingering Y2K problem.)
+</p>
+<p>Because notes-mode uses seconds-since-1970 for some date calculations
+ it will fail beyond the year 2038 on computers with 32-bit integers.
+</p>
+<p>If I&rsquo;m still using notes-mode then on a 32-bit machine I&rsquo;ll see what I can do.
+</p>
+
+<hr size="6">
+<a name="Related-work"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Y2K-Statement" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Staying-on-top" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#Basics" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Related-work-1"></a>
+<h2 class="section">1.6 Related work</h2>
+
+<p>What would a document be without related work?
+</p>
+<p>Notes-mode is not related in any way to Lotus Notes.
+</p>
+<p>I am told (by David Weisman)
+ that it&rsquo;s something like the now defunct Lotus Agenda.
+</p>
+<p>Ashvin Goel, one of the contributors to notes-mode,
+ has gone off and done a from-scratch reimplementation
+ called records-mode.
+It&rsquo;s very similar to notes mode,
+ and emphasizes on-the-fly updates to entry links
+ but lacks a manual.
+You may want to check it out at
+ &lsquo;<tt>http://www.cse.ogi.edu/~ashvin/software.html</tt>&rsquo;.
+</p>
+<p>Hyperbole (by Bob Weiner) offers better linking facilities
+than notes-mode, but it has a bunch of stuff notes-mode doesn&rsquo;t need
+and it&rsquo;s missing notes-specific indexing provided by notes-mode.
+For people already using Hyperbole
+ it would be interesting to replace notes-mode&rsquo;s linking
+ with Hyperbole&rsquo;s.
+Contributions in this area are welcome, provided they make Hyperbole
+ optional.
+</p>
+<hr size="6">
+<a name="Staying-on-top"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Related-work" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Basics" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#Basics" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Staying-on-top-1"></a>
+<h2 class="section">1.7 Staying on top</h2>
+
+<p>The most recent distribution of notes-mode 
+ is always available via
+ &lsquo;<tt>http://www.isi.edu/~johnh/SOFTWARE/NOTES_MODE/</tt>&rsquo;.
+</p>
+<p>After you&rsquo;ve installed notes mode you&rsquo;re encouraged to subscribe
+to the mailing lists.
+To subscribe, go to the web page
+Send the message &quot;subscribe&quot; to
+&lsquo;<tt>http://www.heidemann.la.ca.us/mailman/listinfo/notes-mode-announce</tt>&rsquo; or
+&lsquo;<tt>http://www.heidemann.la.ca.us/mailman/listinfo/notes-mode-talk</tt>&rsquo;.
+</p>
+<p>The announce list will contain only release announcements
+and so is guaranteed to be very low bandwidth.
+</p>
+
+
+<hr size="6">
+<a name="Basics"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Staying-on-top" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Getting-started" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Basics-1"></a>
+<h1 class="chapter">2. Basics</h1>
+
+<p>All you need to use notes-mode
+ in a chapter.
+(Except for installation, See section <a href="#Installation">Installation</a>.)
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top"><a href="#Getting-started">2.1 Getting started</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             
+</td></tr>
+<tr><td align="left" valign="top"><a href="#A-notes-file">2.2 A notes file</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                
+</td></tr>
+<tr><td align="left" valign="top"><a href="#The-notes-index">2.3 The notes index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             
+</td></tr>
+<tr><td align="left" valign="top"><a href="#The-notes-directories">2.4 The notes directories</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       
+</td></tr>
+</table>
+
+<hr size="6">
+<a name="Getting-started"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Basics" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#A-notes-file" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Basics" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Getting-started-1"></a>
+<h2 class="section">2.1 Getting started</h2>
+<a name="index-notesinit"></a>
+<a name="index-setup"></a>
+
+<p>To get started with notes-mode,
+ read the introduction this chapter,
+ then either:
+</p>
+<ul>
+<li>
+Start emacs, do 
+ <kbd>M-x</kbd> <code>load-library</code> <kbd>RET</kbd> <code>notes-mode</code> <kbd>RET</kbd>
+This approach will set up notes-mode with the default parameters.
+
+</li><li>
+OR, from the shell, 
+ run the program &lsquo;<tt>notesinit</tt>&rsquo;.
+This approach will ask you some questions about how you want to configure
+ notes mode.
+
+</li></ul>
+
+<p>Either way these should set up everything notes-mode needs.
+This program will modify your environment (as described in this section),
+ or it will give you the exact commands you should run yourself.
+</p>
+<p>After you&rsquo;ve done one of these,
+ start up emacs and note-away.
+I usually begin a
+ day of note-taking by running the command
+ <kbd>M-x</kbd> <code>notes-index-todays-link</code>
+ to jump directly to today&rsquo;s note.
+You may even wish to bind this to something,
+ perhaps with
+ <code>(define-key global-map &quot;\C-cn&quot; 'notes-index-todays-link)</code>
+ in your &lsquo;<tt>.emacs</tt>&rsquo;. 
+</p>
+<p>If you want to browse your existing notes,
+ you might instead want to edit the
+ &lsquo;<tt>~/NOTES/index</tt>&rsquo;.
+(What is a notes file and the index? Hurry up and finish
+ reading this chapter.) 
+</p>
+
+<hr size="6">
+<a name="A-notes-file"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Getting-started" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#The-notes-index" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Basics" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="A-notes-file-1"></a>
+<h2 class="section">2.2 A notes file</h2>
+
+<a name="index-Notes-files"></a>
+
+<p>The notes file is the focus of most of the activity in notes-mode,
+ it&rsquo;s where you take your notes.
+Notes files are mostly free-form text
+ broken up into <em>entries</em>.
+Here&rsquo;s an example:
+</p>
+<a name="index-Notes-entries"></a>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">8-Jun-95 Thursday
+-----------------
+
+* Today
+-------
+prev: &lt;none&gt;
+next: &lt;file:///~/NOTES/199506/950609#* Today&gt;
+
+next week - release notes-mode
+
+
+* Environment/notes
+-------------------
+
+I explained notes mode to Ashvin and Geoff.
+...
+</pre></td></tr></table>
+
+<p>Each entry has a subject-block, (maybe) some links, and then (maybe) some text.
+</p>
+<p>The subject-block must begin with an asterisk-space (<kbd>* </kbd>)
+ at the beginning of a line, followed by the subject itself.
+Subjects must be underlined with a row of dashes
+ (if they&rsquo;re not exact, that&rsquo;s OK;
+ notes-mode will fix them periodically).
+For convenience,
+ notes-mode will automatically add the underlines when you
+ hit <kbd>&lt;RTN&gt;</kbd> (<code>notes-electric-return</code>),
+ and <kbd>&lt;TAB&gt;</kbd> on a partially completed subject will
+ invoke completion based on indexed subjects (<code>notes-complete-subject</code>).
+<a name="index-Notes-subjects"></a>
+<a name="index-RTN"></a>
+<a name="index-TAB"></a>
+</p>
+<p>Following the subject may be links.
+(In the example, the &ldquo;Today&rdquo; entry has links,
+ the &ldquo;Environment/notes&rdquo; entry doesn&rsquo;t.)
+These links will be automatically updated by notes-mode
+ when your notes are re-indexed;
+ just leave a blank line when writing the note.
+<a name="index-Notes-links"></a>
+</p>
+<p>Links are made with pseudo-URLs,
+ sort of like those in the World Wide Web. 
+Any of these URLs can be followed in notes-mode files
+ by clicking <kbd>S-mouse-2</kbd> on the pseudo-URL
+ (<code>notes-w3-follow-link-mouse</code>).
+<a name="index-Pseudo_002dURLs"></a>
+<a name="index-URLs"></a>
+<a name="index-S_002dmouse_002d2"></a>
+</p>
+<p>Finally comes the text.
+Go wild, but just don&rsquo;t include text that looks like a subject.
+You can embed pseudo-URLs to link notes together manually.
+</p>
+<p>The more anal of you may have noticed
+ that the lines before the first subject
+ are not part of any entry.
+These lines are
+ <em>front matter</em>.
+They&rsquo;re not usually used for much,
+ but they can be a good place to label the file.
+<a name="index-Notes-files_002c-font-matter"></a>
+<a name="index-Font-matter"></a>
+</p>
+<p>There are a number of useful conventions
+ that can be adopted to organize your notes.
+The most common is the &ldquo;Today&rdquo; entry.
+If you keep an entry with the same subject
+ at the beginning of each file,
+ you link all of your notes together.
+Notes-mode will help you out with some of these convetions
+ by automatically creating or copying some fields for you;
+ see see section <a href="#Useful-conventions">Useful conventions</a> for details.
+</p>
+<p>Finally, notes-mode can also work with outline-minor-mode
+ (thanks to Tim Carroll for pointing this out).
+Outline-mode supports hiding and revealing text and other helpful
+ features beyond the scope of this document.
+See <a href="emacs.html#Outline-Mode">Outline Mode: (emacs)Outline Mode</a> section &lsquo;Outline Mode&rsquo; in <cite>The Emacs Editor</cite>, for details.
+</p>
+<hr size="6">
+<a name="The-notes-index"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#A-notes-file" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#The-notes-directories" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Basics" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="The-notes-index-1"></a>
+<h2 class="section">2.3 The notes index</h2>
+
+<a name="index-Notes-index"></a>
+
+<p>The notes index lists all subjects you&rsquo;ve kept notes about,
+ and each date of each note.
+Impress your friends,
+ show your advisor why you&rsquo;re worth the <em>big</em> peanuts,
+ you&rsquo;ll soon have the biggest index of all.
+</p>
+<p>The index has one line per subject, listing the subject
+ and each day a note was made about that subject.
+For example:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">Bicycle: 950314, 950316
+Bicycle/maintenance/books: 951028
+Bridge/hands: 951113, 951114, 951116, 951117
+Bridge/UCLA: 960222, 960409
+</pre></td></tr></table>
+
+<p>Clicking on any of the dates with <kbd>mouse-2</kbd>
+ will take you to that note
+ (<code>notes-index-mouse-follow-link</code>).
+(You can also move the point over the date and hit <kbd>&lt;RTN&gt;</kbd>
+ if you&rsquo;re musaphobic [<code>notes-index-follow-link</code>].)
+<a name="index-mouse_002d2"></a>
+<a name="index-RTN-1"></a>
+</p>
+<p>The notes index is automatically updated by the program &lsquo;<tt>mkall</tt>&rsquo;.
+Typically &lsquo;<tt>mkall</tt>&rsquo; is run nightly by &lsquo;<tt>cron</tt>&rsquo;.
+On most modern versions of Unix, you can add this command to cron by
+ running &lsquo;<tt>crontab -e</tt>&rsquo; and adding the line:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">0 4 * * * /usr/local/lib/notes-mode/mkall
+</pre></td></tr></table>
+<a name="index-Crontab"></a>
+<a name="index-mkall"></a>
+<a name="index-re_002dindexing"></a>
+
+<p>(Assuming that your notes programs are installed
+ in /usr/local/lib/notes-mode, the default location.)
+</p>
+
+<hr size="6">
+<a name="The-notes-directories"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#The-notes-index" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Basics" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="The-notes-directories-1"></a>
+<h2 class="section">2.4 The notes directories</h2>
+
+<a name="index-Notes-directories"></a>
+<a name="index-Directory-hierarchy"></a>
+
+<p>The final thing needed to tie basic notes-mode together his how
+the pieces fit together.
+Since my graduate work is in file systems,
+you can bet that directories are involved.
+</p>
+<p>Notes-mode keeps its files in a two-level hierarchy:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">~/NOTES
+~/NOTES/index
+~/NOTES/rawindex
+~/NOTES/199603
+~/NOTES/199603/960329
+~/NOTES/199603/960330
+~/NOTES/199604
+~/NOTES/199604/960401
+</pre></td></tr></table>
+
+<p>The top level, &lsquo;<tt>~/NOTES</tt>&rsquo;, is the notes directory.
+It keeps all notes in one place.
+(The name of this directory is configurable, See section <a href="#Notes_002dmode-configuration">Notes-mode configuration</a>.)
+</p>
+<p>Inside the notes directory are two files and a number of directories.
+The files are &lsquo;<tt>index</tt>&rsquo;,
+ the index of all entries (see section <a href="#The-notes-index">The notes index</a>),
+ and &lsquo;<tt>rawindex</tt>&rsquo;,
+ used internally.
+<a name="index-Root-directory"></a>
+</p>
+<p>The notes directory also contains a number of subdirectories,
+ sometimes called <em>intermediate directories</em>.
+These directories group the actual notes files into manageable chunks,
+ keeping any directory from getting too large.
+Intermediate directories are named
+ by the four-digit year and the two-digit month
+ of the entries they contain.
+(The format of intermediate directories
+ is configurable, See section <a href="#Notes_002dmode-configuration">Notes-mode configuration</a>.)
+<a name="index-Intermediate-directories"></a>
+</p>
+<p>Finally,
+ each intermediate directory are the notes files themselves,
+ named according to the two-digit year, month, and day-of-month.
+<a name="index-Notes-files-1"></a>
+</p>
+<p>For the most part,
+ notes-mode will automatically maintain this organization of files,
+ once you create the top-level directory.
+Notes-mode will also automatically insure
+ that all files in the notes directory are unreadable by
+ anyone other than their owner.
+Notes are personal things.
+(This behavior is not currently configurable,
+ but it probably should be.)
+<a name="index-Notes-file-permissions"></a>
+</p>
+
+
+<hr size="6">
+<a name="Advanced-Features"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#The-notes-directories" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Notes-files" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#History" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Advanced-Features-1"></a>
+<h1 class="chapter">3. Advanced Features</h1>
+
+<p>Notes-mode, the minutiae, and some other good stuff.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top"><a href="#Notes-files">3.1 Notes files</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                 
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Notes-indices">3.2 Notes indices</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Notes_002dmode-configuration">3.3 Notes-mode configuration</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    
+</td></tr>
+</table>
+
+<hr size="6">
+<a name="Notes-files"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Advanced-Features" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Getting-around" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#History" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Notes-files-1"></a>
+<h2 class="section">3.1 Notes files</h2>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top"><a href="#Getting-around">3.1.1 Getting around</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Subject-summary">3.1.2 Subject summary</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Encryption">3.1.3 Encryption</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                  
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Useful-conventions">3.1.4 Useful conventions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          
+</td></tr>
+</table>
+
+<hr size="6">
+<a name="Getting-around"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Notes-files" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Subject-summary" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Notes-files" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#History" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Getting-around-1"></a>
+<h3 class="subsection">3.1.1 Getting around</h3>
+
+<p>Moving between notes entries and around the hierarchy is fairly common,
+ so there are some accelerators.
+</p>
+<dl compact="compact">
+<dt> <kbd>C-c C-i</kbd></dt>
+<dd><p>Jump to the index entry for the current entry&rsquo;s subject
+(<code>notes-goto-index-entry</code>).
+<a name="index-C_002dc-C_002di"></a>
+</p>
+</dd>
+<dt> <kbd>C-c C-n</kbd></dt>
+<dt> <kbd>C-c C-p</kbd></dt>
+<dd><p>Move to the next or prior note with the same subject
+(<code>notes-follow-next-link</code> and <code>notes-follow-prev-link</code>).
+These functions follow the links in the note,
+ if they&rsquo;re defined.
+If not,
+ they look through the index file.
+This approach usually works,
+ but will fail if there are multiple new entries created
+ with the given subject
+ between when the index is recomputed.
+<a name="index-C_002dc-C_002dn"></a>
+<a name="index-C_002dc-C_002dp"></a>
+</p>
+</dd>
+<dt> <kbd>C-c&lt;RTN&gt;</kbd></dt>
+<dd><p>Follow the link under the point
+(<code>notes-w3-follow-link</code>),
+ a keyboard equivalent of &lt;S-mouse-2&gt;.
+<a name="index-C_002dcRTN"></a>
+</p>
+</dd>
+<dt> <kbd>M-C-a</kbd></dt>
+<dt> <kbd>M-C-e</kbd></dt>
+<dd><p>Jump to the beginning or end of the current note entry
+(<code>notes-beginning-of-defun</code> and <code>notes-end-of-defun</code>).
+<a name="index-M_002dC_002da"></a>
+<a name="index-M_002dC_002de"></a>
+</p>
+</dd>
+<dt> <kbd>C-c C-k</kbd></dt>
+<dd><p>Copies the pseudo-URL for the current note into the kill-ring
+(<code>current-url-as-kill</code>).
+To link two entries, go to the target,
+ grab its URL with <kbd>C-c C-k</kbd>,
+ go to where you want to make the link,
+ and yank the URL with <kbd>C-y</kbd>.
+<a name="index-C_002dc-C_002dk"></a>
+</p>
+</dd>
+</dl>
+
+
+<p>Notes mode supports imenu,
+ if you have it bound to something
+ (I use <code>(global-set-key [down-mouse-3] 'imenu)</code>).
+<a name="index-imenu"></a>
+</p>
+
+<hr size="6">
+<a name="Subject-summary"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Getting-around" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Encryption" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Notes-files" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#History" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Subject-summary-1"></a>
+<h3 class="subsection">3.1.2 Subject summary</h3>
+
+<p>It&rsquo;s often helpful to look at all
+ entries for a given subject
+<kbd>C-c C-s</kbd>
+ collects all entries with the subject of the current
+ entry in a new buffer
+ (<code>notes-summarize-subject</code>).
+<a name="index-C_002dc-C_002ds"></a>
+<a name="index-Subject-summary"></a>
+</p>
+
+<hr size="6">
+<a name="Encryption"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Subject-summary" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Useful-conventions" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Notes-files" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#History" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Encryption-1"></a>
+<h3 class="subsection">3.1.3 Encryption</h3>
+
+<a name="index-Encryption"></a>
+<a name="index-Decryption"></a>
+
+<p>Notes occasionally contain private material.
+While Unix has strong services for file protection
+ (compared to other, say, more wide-selling operating systems),
+ in many systems root passwords are shared,
+ while other systems are vulnerable to physical compromise.
+In such systems,
+ properly used encryption is the best approach to security.
+</p>
+<p>Notes-mode encryption is based
+ Phill Zimmerman&rsquo;s PGP (Pretty Good Privacy)
+(see &lsquo;<tt>http://www.mantis.co.uk/pgp/pgp.html</tt>&rsquo;)
+ and either
+ with Rick Campbell&rsquo;s
+ emacs interface, PAM (PGP Augmented Messaging)
+(from &lsquo;<tt>ftp://h.gp.cs.cmu.edu/usr/rfb/pam/</tt>&rsquo;)
+ (note that as of January 1997, PAM is no longer at this ftp site
+ and appears to not be publicly available),
+ or LoPresti and Choi&rsquo;s mailcrypt
+(from &lsquo;<tt>http://cag-www.lcs.mit.edu/mailcrypt/</tt>&rsquo;).
+<a name="index-PGP"></a>
+<a name="index-Pretty-good-privacy"></a>
+<a name="index-PAM"></a>
+<a name="index-PGP-Augmented-Messaging"></a>
+<a name="index-mailcrypt"></a>
+</p>
+<dl compact="compact">
+<dt> <kbd>C-c C-e</kbd></dt>
+<dd><p>Encrypt the current note
+(<code>notes-encrypt-note</code>).
+By default this function encrypts the whole entry.
+With a prefix argument,
+ only the part from the point to the end of the entry is encrypted.
+<a name="index-C_002dc-C_002de"></a>
+</p>
+</dd>
+<dt> <kbd>C-c C-d</kbd></dt>
+<dd><p>Decrypt the current note
+(<code>notes-decrypt-note</code>).
+</p></dd>
+</dl>
+<a name="index-C_002dc-C_002dd"></a>
+
+<p>By default notes-mode determines your public key by looking 
+ up your <code>user-full-name</code> in your PGP keyring.
+You can override this default by setting
+ <code>notes-encryption-key-id</code>
+ to the desired key-id.
+<a name="index-key_002did"></a>
+</p>
+
+<hr size="6">
+<a name="Useful-conventions"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Encryption" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Notes-indices" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Notes-files" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#History" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Useful-conventions-1"></a>
+<h3 class="subsection">3.1.4 Useful conventions</h3>
+
+
+<a name="index-conventions"></a>
+<a name="index-mknew"></a>
+
+<p>There are a number of conventions which can make notes-mode
+ easier to use.
+These conventions are a matter of personal taste,
+ of course.
+Do what works for you.
+</p>
+<p>First,
+ I find it helpful to keep the date of each notes-file at the top
+ of the file.
+This makes the file self-identifying
+ if the filename is lost.
+</p>
+<p>Second,
+ I find it useful to have the first entry of each file
+ have the same subject (perhaps &ldquo;Today&rdquo;).
+This entry then links all notes together,
+ making it easy to go to yesterday and tomorrow.
+I keep a to-do list on this entry,
+ bringing the list forward each day.
+<a name="index-Today"></a>
+</p>
+<p>A third useful convention is to keep an
+ entry with the name based on the day of the week
+ in each file.
+Analogous to &ldquo;Today&rdquo;, this entry links together
+ weeks.
+</p>
+<p>Notes-mode supports these conventions.
+When you make a new notes-file in emacs,
+ notes-mode searches for the preceding file.
+If it follows any of these conventions,
+ the new file is initialized appropriately.
+Currently
+ the approach to do this process
+ (in the program &lsquo;<tt>mknew</tt>&rsquo;)
+ is fairly sensitive,
+ so it may not work in all cases.
+In particular,
+ the date convention works only on
+ for English-language dates.
+(If you use notes-mode with a non-English language,
+ let me know and I&rsquo;ll work with you to fix this limitation.)
+</p>
+<p>If you find other helpful conventions,
+ please let me know.
+Modifications to &lsquo;<tt>mknew</tt>&rsquo; to implement
+ new conventions are also invited.
+</p>
+<p>If you don&rsquo;t want to use these conventions,
+ or if you want to use different ones,
+ set the emacs variable notes-mode-initialization-program
+ to nil or the name of your initialization program.
+<a name="index-notes_002dmode_002dinitialization_002dprogram"></a>
+</p>
+
+<hr size="6">
+<a name="Notes-indices"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Useful-conventions" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Notes_002dmode-configuration" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#History" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Notes-indices-1"></a>
+<h2 class="section">3.2 Notes indices</h2>
+
+
+<p>Only two features of notes index mode haven&rsquo;t yet been described.
+First,
+ you can open any notes-file based on date
+ with <code>notes-index-link</code>,
+ normally bound to &lt;o&gt;.
+<a name="index-o"></a>
+</p>
+<p>Second,
+ you can get a subject-summary
+ with &lt;C-c C-s&gt;
+ (see section <a href="#Subject-summary">Subject summary</a>).
+The subject defaults to that of the current index line.
+<a name="index-C_002dc-C_002ds-1"></a>
+</p>
+
+<hr size="6">
+<a name="Notes_002dmode-configuration"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Notes-indices" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#History" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#History" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Notes_002dmode-configuration-1"></a>
+<h2 class="section">3.3 Notes-mode configuration</h2>
+
+<a name="index-configuration"></a>
+<a name="index-_002enotesrc"></a>
+
+<p>Several aspects of notes mode are particularly visible
+ to the user.
+Because I&rsquo;m not a fascist,
+ a user can change most of these.
+</p>
+<p>Preferences are specified in &lsquo;<tt>~/.notesrc</tt>&rsquo;.
+This file lists things to change:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example"># lines beginning with a hash are comments
+dir: ~/NOTES
+int_form: %Y%m
+</pre></td></tr></table>
+
+<p>Currently, two things can be changed:
+</p>
+<dl compact="compact">
+<dt> <code>dir</code></dt>
+<dd><p>Specifies the root of the notes directory hierarchy
+ (see section <a href="#The-notes-directories">The notes directories</a>).
+</p>
+</dd>
+<dt> <code>int_form</code></dt>
+<dd><p>Specifies the form of the intermediate directory.
+A limited subset of <code>strftime(3)</code>
+ formatting is allowed.
+</p></dd>
+</dl>
+
+<p>The subset of <code>strftime(3)</code> supported in <code>int_form</code> is:
+</p><dl compact="compact">
+<dt> <code>%Y</code></dt>
+<dd><p>The four-digit year.
+</p>
+</dd>
+<dt> <code>%y</code></dt>
+<dd><p>The two-digit year.
+</p>
+</dd>
+<dt> <code>%m</code></dt>
+<dd><p>A two-digit numeric month.
+</p>
+</dd>
+<dt> <code>%d</code></dt>
+<dd><p>A two-digit day.
+</p></dd>
+</dl>
+
+<p>In addition to &lsquo;<tt>.notesrc</tt>&rsquo;,
+ there are a number of emacs-specific variables.
+These variables are documented in the file
+ &lsquo;<tt>notes-variables.el</tt>&rsquo;.
+</p>
+
+
+
+<hr size="6">
+<a name="History"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Notes_002dmode-configuration" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Notes_002dmode-history" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="History-1"></a>
+<h1 class="chapter">4. History</h1>
+
+<p>More about notes-mode than you wanted to know,
+and some thanks.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top"><a href="#Notes_002dmode-history">4.1 Notes-mode history</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Credits">4.2 Credits</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                     
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Changes">4.3 Changes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                     
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Suggested-features">4.4 Suggested features</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                     
+</td></tr>
+</table>
+
+
+
+<hr size="6">
+<a name="Notes_002dmode-history"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#History" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Credits" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#History" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#History" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Notes_002dmode-history-1"></a>
+<h2 class="section">4.1 Notes-mode history</h2>
+
+<p>Briefly,
+ I started keeping notes on-line shortly after I got a portable computer
+ in January, 1994.
+After a month-and-a-half of notes, I realized that
+ one does not live by grep alone,
+ so I started adding indexing facilities.
+</p>
+<p>In June of 1995
+ some other Ficus-project members started
+ keeping and indexing on-line notes
+ using other home-grown systems.
+After some discussion,
+ we generalized my notes-mode work and
+ they started using it.
+</p>
+<p>Over the next 18 months notes-mode grew.
+Finally, in April, 1996 I wrote documentation,
+ guaranteeing that innovation on notes-mode will now cease
+ or the documentation will become out of date.
+</p>
+
+<hr size="6">
+<a name="Credits"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Notes_002dmode-history" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Changes" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#History" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#History" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Credits-1"></a>
+<h2 class="section">4.2 Credits</h2>
+
+<p>I (John Heidemann, &lt;johnh@isi.edu&gt;)
+ started, documented, and currently maintain notes-mode.
+I take ultimate responsibility for the code,
+ especially for the ugly parts that I won&rsquo;t let others change.
+</p>
+<p>Ashvin Goel
+ &lt;ashvin@ficus.cs.ucla.edu&gt;
+ has been a very enthusiastic notes-mode user and contributor.
+He is responsible for at least
+ the ideas behind <code>notes-summarize-subject</code>
+and the ideas and initial implementations of
+ some of the original generalization and modularity improvements,
+ <code>notes-follow-next-link</code> and <code>notes-follow-prev-link</code>,
+ <code>notes-goto-index-entry</code>,
+ programmed subject completion,
+ and
+ context-sensitive mouse-2 handling.
+In addition,
+ he is an invaluable second opinion about
+ what and how things should be done
+ (even if I don&rsquo;t always agree with him).
+</p>
+<p>Geoff Kuenning
+ &lt;geoff@ficus.cs.ucla.edu&gt;
+ has been another enthusiastic notes-mode user and victim.
+He is responsible for
+ finding several bugs,
+ motivation for mouse-less operation,
+ comments about the documentation,
+ the day-of-week convention,
+ and an initial implementation and the idea of
+ multiple entries with the same subjects in a single notes-file.
+</p>
+<p>Ramesh Govindan &lt;govindan@isi.edu&gt; did the xemacs port.
+</p>
+<p>Since it&rsquo;s release on Usenet in April 1996 several
+ other folks have contributed.
+Thanks to
+ David Weisman &lt;weisman@app1.osf.org&gt;,
+ Martin L. Smith &lt;martin@ner.com&gt;,
+ Jason Bastek &lt;jason@aai.com&gt;,
+ Ulrich Herbst &lt;Ulrich.Herbst@t-systems.com&gt;.
+See the next section (See section <a href="#Changes">Changes</a>.) for details of their exploits.
+</p>
+<p>Thanks to Larry Ayers &lt;layers@marktwain.net&gt;
+ for popularizing notes-mode with reviews in
+ the Linux Gazette
+ (at &lt;http://www.linuxgazette.com/issue22/notes-mode.html&gt; and
+ &lt;http://www.linuxgazette.com/issue35/ayers.html&gt;).
+</p>
+<hr size="6">
+<a name="Changes"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Credits" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Suggested-features" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#History" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#History" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Changes-1"></a>
+<h2 class="section">4.3 Changes</h2>
+
+<p>For the bored:
+</p>
+<p>First semi-public release. 12-Jul-95: version 0.1
+ Shared a version with Ashvin and Geoff.
+</p>
+<p>Changed  6-Dec-95: version 0.3
+ Ashvin&rsquo;s changes for note traversal added (C-c C-p and C-c C-n now
+move to the prev/next note in note-mode).
+ URL parsing changed so that &quot;localhost&quot; is optional.
+</p>
+<p>Changed 19-Dec-95:  version 0.4
+ More robust prev/next code added, both to handle going back and
+forward in the middle of chains through the index file, and to handle
+back/forward in a single file.
+ URL parsing changed so that notes-goto-index-entry correctly handles
+lookups on notes names such as &quot;252A&quot;.
+</p>
+<p>Changed 20-Dec-95: version 0.5.
+ Fixed a missing variable in notes-url.el.
+ Added a work-around to a bug in emacs-19.30&rsquo;s define-derived-mode.
+</p>
+<p>Changed 24-Dec-95: version 0.6.
+ Prev/next code re-re-written to be more robust.
+</p>
+<p>Changed 26-Dec-96:  version 0.7.
+ Bug fix release.
+</p>
+<p>Changed 23-Jan-96: version 0.8.
+ Initialization code added to set up a new note.
+New variable:  notes-bin-dir.
+</p>
+<p> I&rsquo;m skipping version 0.9 because I erroneously release version 0.1
+as version 0.9 (only on the web, not on Usenet).
+</p>
+<p> I&rsquo;m bumping from version &quot;0&quot; to version &quot;1&quot; since the code is has been
+in production use for more than a year by several people.  Minor
+numbers are the same.
+</p>
+<p>Changed 26-Mar-96: version 1.10.
+ Setup code completely re-written.
+ Several incompatible changes have been made:
+ - the lisp and Perl code must be installed via make install,
+not by copying.
+ - some data is specified in a .notesrc file; copy and modify sample.notesrc.
+ - several internal elisp changes.
+ - catsubject added (bound to C-cC-s):  collect all notes about the
+current subject.
+ - new notes-files are initialized with fields based on the prior
+day&rsquo;s notes; see mknew for details.
+ - daily_work is gone; mkall is rewritten to use .notesrc.
+</p>
+<p>Changed 29-Apr-96: version 1.11.
+ Real documentation.
+ Mknew caching added.
+</p>
+<p>Changed  9-Aug-96: version 1.12.
+ Added notesinit to do all setup for new users.
+</p>
+<p>Changed 24-Aug-96: version 1.13.
+ Minor documentation fixes.
+</p>
+<p>Changed 20-Dec-97: version 1.14.
+Autoconf support.
+</p>
+<p>Fontification of the index buffer is now pre-computed in perl
+other than done when the file is needed (in elisp with slow regular
+expressions).  2000-line index files are now 1-2 seconds rather than
+15-30 on a 100MHz Pentium.  If necessary (the
+pre-computed version isn&rsquo;t up-to-date) we fall back on the slower
+code.
+</p>
+<p>Related work improved (suggestion by David Weisman &lt;weisman@app1.osf.org&gt;).
+</p>
+<p>Documentation improvement (problem found by Martin L. Smith
+&lt;martin@ner.com&gt;).
+</p>
+<p>Installation improved (code by Jason Bastek &lt;jason@aai.com&gt;).
+</p>
+<p>Bug in notes-index mode with subjects containing colons fixed (johnh).
+</p>
+<p>Encryption now supports mailcrypt.el.
+</p>
+<p>Support for emacs 20 (a small font-lock change).
+</p>
+<p>Changed  5-Jan-98: version 1.15.
+Bug in decryption for non-PAM users fixed
+ (suggestion by Kevin Davidson &lt;tkld@quadstone.com&gt;).
+</p>
+<p>Y2K statement added
+ (suggestion by Kevin Davidson &lt;tkld@quadstone.com&gt;).
+</p>
+<p>Pointer to mailcrypt added (as a supported encryption package).
+Problem pointed out by K. Ueda &lt;kueda@jupiter.qse.tohoku.ac.jp&gt;.
+</p>
+<p>Changed  4-Nov-98: version 1.16.
+Bug in kill-ring handling of notes-old-underline-line
+ fixed by Tim Potter &lt;timp@jna.com.au&gt;.
+Bug in whitespace handling after PGP encryption fixed by Tim Potter.
+Bugs in handling of entries with hash signs in their name fixed
+ (found by Tim Potter).
+Fontification of index buffer further improved
+ (mapcar is your friend).
+Xemacs support added based on code contributed by Ramesh Govindan.
+</p>
+<p>Changed 28-Feb-99: version 1.17:
+Improvement:  notes-electric-return now fixes up the prev/next links
+ of new entries (only).  Code contributed by
+ Takashi Nishimoto.
+</p>
+<p>Bug fix:  reversed options -batch and -q in configure.in to placate
+ XEmacs 20.0; changed notesinit to not downcase the pathname
+ (bugs found by Thierry Bezecourt).
+</p>
+<p>Clarification: Autofilling of new notes more clear in the manual (hopefully,
+ suggested by Solofo Ramangalahy).
+</p>
+<p>Bug fix:  a y2k bug in was found and fixed in mkindex.  Sigh.
+</p>
+<p>New:  Two mailing lists for notes-mode have been created:
+&lsquo;<tt>notes-mode-announce@heidemann.la.ca.us</tt>&rsquo; and 
+&lsquo;<tt>notes-mode-talk@heidemann.la.ca.us</tt>&rsquo;.
+Send the line &ldquo;subscribe notes-mode-announce&rdquo;
+(or &ldquo;subscribe notes-mode-talk&rdquo;)
+to &lsquo;<tt>majordomo@heidemann.la.ca.us</tt>&rsquo;
+to join them.
+[<em>These instructions are now superceeded; to subscribe, go to
+&lsquo;<tt>http://www.heidemann.la.ca.us/mailman/listinfo/notes-mode-talk</tt>&rsquo;
+and
+&lsquo;<tt>http://www.heidemann.la.ca.us/mailman/listinfo/notes-mode-announce</tt>&rsquo;.</em>]
+</p>
+<p>Changed  6-Oct-99: version 1.18:
+Bug fix:  handling of electric-prevnext is better when there are
+ existing prev/next links.
+</p> 
+<p>Clarification: I added some pointers in the code to the installation
+ instructions.  (Apparently people can&rsquo;t RTF README.)
+</p>
+<p>Extension: mailcrypt-3.5.x suported including pgp, pgp5 and gpg.
+</p>
+<p>Changed (date 23-Dec-00): version 1.19:
+Bug fix (cosmetic): suppress comments in encrypted nodes.
+</p>
+<p>Install fixes from Kannan Varadhan: elisp directories changed on install.
+</p>
+<p>Added C-j as a synonym for RET in notes-mode to parallel C++ or perl mode.
+(Suggested by Fred Jaggi &lsquo;<tt>jaggi@rsn.hp.com</tt>&rsquo;.)
+</p>
+<p>Outline-minor-mode support added and documented.
+(Suggested by Tim Carroll &lsquo;<tt>tim@boomboom.com</tt>&rsquo;.)
+</p>
+<p>Bug/typo fixes in gpg support
+(Contributed by William A. Perkins &lsquo;<tt>wa_perkins@pnl.gov</tt>&rsquo;,
+with separate patches from Knut Anders Hatlen &lsquo;<tt>kahatlen@online.no</tt>&rsquo;.)
+</p>
+<p>Installation improvements suggested by Christophe Troestler
+&lsquo;<tt>Ch.Troestler@linkline.be</tt>&rsquo;:
+use install-info to update the info dir,
+warn users of &ndash;prefix that lisp files go elsewhere.
+</p>
+<p>Changed (date  1-Feb-01): version 1.20:
+Bug fix: missing file notes-first.el added to the distribution.
+(Bug found by Michael Totschnig &lsquo;<tt>michaelt@supernet.ca</tt>&rsquo;.)
+</p>
+<p>Changed ( 5-Dec-01): version 1.21:
+(backed-out&mdash;didn&rsquo;t work with spaced URLs) 
+URL lookup now uses thing-at-point.
+</p>
+<p>Fix to make notes-mode work with emacs-21.1
+(Fix from Klaus Zeitler  &lsquo;<tt>kzeitler@lucent.com</tt>&rsquo;.)
+</p>
+<p>Changed ( 3-Jan-02): version 1.22:
+Several bugs in &lsquo;<tt>notesinit</tt>&rsquo; for stricter Perl implementations
+(bug found by Paul Craven&quot; &lsquo;<tt>pcraven@yorku.ca</tt>&rsquo;,
+and Kasper van Wijk &lsquo;<tt>kasper@acoustics.mines.edu</tt>&rsquo;)
+and to make it run cleanly more often.
+</p>
+<p>Notes-first now autoinitializes notes mode from emacs.
+(As instisted by rms, unfortunately about two years later than requested.)
+</p>
+
+<p>Changed (20-Feb-05): version 1.23:
+Outline mode is now forcebly turned on to avoid interactions
+with user&rsquo;s text-mode hooks
+(bug and fix from Nils Ackermann &lsquo;<tt>nils@nieback.de</tt>&rsquo;).
+</p>
+<p>Install bug involving ordering of scripts and byte-compilation
+fixed (bug and fix from Mark Allman &lsquo;<tt>mallman@grc.nasa.gov</tt>&rsquo;).
+</p>
+<p>Fix obscure bug in configure, reported by Klaus Zeitler &lsquo;<tt>kzeitler@lucent.com</tt>&rsquo;.
+</p>
+<p>Fix for notes-summarize-subject when no subject is specified (bug and fix
+from Geoff Kuenning).
+</p>
+<p>Changed (14-Jan-06): version 1.24:
+</p>
+<p>install-info bug documented with the Debian install-info
+(bug reported by Aaron Falk &lsquo;<tt>falk@isi.edu</tt>&rsquo;).
+</p>
+<p>Automatic date completion in new days is now done in the current
+locale, so it should now work for non-English languages.  Bug reported
+by Torsten Bronger &lsquo;<tt>bronger@physik.rwth-aachen.de</tt>&rsquo;.
+</p>
+<p>Fixed a bug in mkindexcache, triggered by subjects with percent signs
+in them.  Bug reported by Philip Austin &lsquo;<tt>paustin@eos.ubc.ca</tt>&rsquo;.
+</p>
+<p>We&rsquo;re a bit more robust about subjects, I hope.  Warnings should
+appear about embedded number signs, and leading spaces should be
+filtered.  Bug reported by Philip Austin &lsquo;<tt>paustin@eos.ubc.ca</tt>&rsquo;.
+</p>
+<p>Notes-mode now dervies from indented-text-mode rather than
+paragraph-indent-text mode.  Unfortunatley this is not customizable
+because of limitations of define-derived-mode.  Change suggested by
+Aaron Falk &lsquo;<tt>falk@isi.edu</tt>&rsquo;.
+</p>
+<p>Provide better hints about how to get started after installation or
+running notes-mode in emacs for the first time.
+</p>
+<p>In notes init, the default path for dir was the full path, not the tilde
+version of the path.  Now it defaults to using tidle for home
+directory.  Bug reported by Mark Allman &lsquo;<tt>allman@icir.org</tt>&rsquo;.
+</p>
+<p>Changed (26-May-06): version 1.25:
+</p>
+<p>fixed a bug in the release tar.gz file that had a additional copies
+copy nested.
+</p>
+<p>Changed (30-Jun-08): version 1.26:
+</p>
+<p>Force unicode I/O in &lsquo;<tt>mkindexcache</tt>&rsquo; to fix highlighting mis-alignment
+when using emacs-21 with unicode subject lines.
+</p>
+<p>Changed mkprevnext and mkrawindex to optionally take the list of notes files
+to index from stdin rather than from the command line.  Yes, I finally
+have 4093 notes files, overflowing the Unix command line buffer.
+</p>
+<p>Changes notes-mode.el to put path in quotes, allowing spaces to appear in home directory names (bug fix from Ulrich Herbst).
+</p>
+<p>Added a suggested features section.
+</p>
+<p>Changed ( 8-Aug-08): version 1.27:
+</p>
+<p>Change I/O in &lsquo;<tt>mkindexcache</tt>&rsquo; to use locale (the sadly correct thing)
+rather than forcing utf-8 (the Righteous Path).
+Bug report from Geoff Kuenning, a man with an older Unix environment than I.
+</p>
+<p>Changed (20-Jun-10): version 1.28:
+</p>
+<p>Changed a regular expression in &lsquo;<tt>notes-index-mode.el</tt>&rsquo; that was 
+causing emacs-v23 (a pre-release version)
+to regular expression infinite recursion.
+</p>
+<p>Changed (2012-04-04): version 1.29
+</p>
+<p>(2011-08-23) Changed <code>run-hooks</code> to <code>run-mode-hooks</code>.
+Bug report from Geoff Kuenning.
+</p>
+<p>Changed some handling of PGP encryption to account for 
+some apparent API changes.
+</p>
+<p>(2012-04-04) Fixed encyrption to handle encrypting empty notes at the end 
+of buffers without going into an infinite loop.
+Clearly wrong code, but you have to ask this guy for why he tried:
+Bug report from Geoff Kuenning.
+</p>
+
+
+<hr size="6">
+<a name="Suggested-features"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Changes" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Installation" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#History" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#History" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Suggested-features-1"></a>
+<h2 class="section">4.4 Suggested features</h2>
+
+<p>Features suggested by users but not yet implemented:
+</p>
+<p>21-Feb-08: (from Xavier Maillard): should support &ldquo;disconnected&rdquo; notes that
+are indexed but not date-based.
+</p>
+<p>21-Feb-08: (from John Heidemann): should switch all notes files to have an extension (maybe &lsquo;<tt>.notes</tt>&rsquo;).
+</p>
+<hr size="6">
+<a name="Installation"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Suggested-features" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#History" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Installation-1"></a>
+<h1 class="chapter">5. Installation</h1>
+
+<p>To install notes-mode,
+</p>
+<ol>
+<li>
+Unpack and extract the distribution
+(gunzip notes-mode-xxx.tar.gz; tar xvf notes-mode-xxx.tar; cd notes-mode-xxx).
+
+</li><li>
+Run configure (./configure).
+
+</li><li>
+Type &ldquo;make install&rdquo;.
+</li></ol>
+
+<p>(To control what&rsquo;s installed where, use &ndash;prefix=/where, or
+&ndash;with-lisp-dir=/where, &ndash;datadir=/where (for scripts),
+and &ndash;infodir=/where.)
+</p>
+<p>For each user:
+</p><ol>
+<li>
+Run notesinit
+</li></ol>
+
+<p>If you have problems with paths being incorrect, please be aware that
+you <em>cannot</em> run notes directly out of where you untar it.  The
+installation process customizes the programs for where things are on
+your system.
+Make sure you move out of the directory where you untarred it
+before running it.
+</p>
+
+<p>The most recent distribution of notes-mode 
+ is always available via
+ &lsquo;<tt>http://www.isi.edu/~johnh/SOFTWARE/NOTES_MODE/</tt>&rsquo;.
+</p>
+
+
+<hr size="6">
+<a name="Keystroke-index"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Installation" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Concept-index" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Installation" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="#Concept-index" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Keystroke-index-1"></a>
+<h1 class="unnumbered">Keystroke index</h1>
+
+<p>This index lists notes-mode keystrokes.
+</p>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#Keystroke-index-1_ky_letter-C" class="summary-letter"><b>C</b></a>
+ &nbsp; 
+<a href="#Keystroke-index-1_ky_letter-M" class="summary-letter"><b>M</b></a>
+ &nbsp; 
+<a href="#Keystroke-index-1_ky_letter-O" class="summary-letter"><b>O</b></a>
+ &nbsp; 
+<a href="#Keystroke-index-1_ky_letter-R" class="summary-letter"><b>R</b></a>
+ &nbsp; 
+<a href="#Keystroke-index-1_ky_letter-S" class="summary-letter"><b>S</b></a>
+ &nbsp; 
+<a href="#Keystroke-index-1_ky_letter-T" class="summary-letter"><b>T</b></a>
+ &nbsp; 
+</td></tr></table>
+<table border="0" class="index-ky">
+<tr><td></td><th align="left">Index Entry</th><th align="left"> Section</th></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Keystroke-index-1_ky_letter-C">C</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dc-C_002dd"><code>C-c C-d</code></a></td><td valign="top"><a href="#Encryption">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dc-C_002de"><code>C-c C-e</code></a></td><td valign="top"><a href="#Encryption">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dc-C_002di"><code>C-c C-i</code></a></td><td valign="top"><a href="#Getting-around">3.1.1 Getting around</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dc-C_002dk"><code>C-c C-k</code></a></td><td valign="top"><a href="#Getting-around">3.1.1 Getting around</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dc-C_002dn"><code>C-c C-n</code></a></td><td valign="top"><a href="#Getting-around">3.1.1 Getting around</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dc-C_002dp"><code>C-c C-p</code></a></td><td valign="top"><a href="#Getting-around">3.1.1 Getting around</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dc-C_002ds"><code>C-c C-s</code></a></td><td valign="top"><a href="#Subject-summary">3.1.2 Subject summary</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dc-C_002ds-1"><code>C-c C-s</code></a></td><td valign="top"><a href="#Notes-indices">3.2 Notes indices</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-C_002dcRTN"><code>C-c&lt;RTN&gt;</code></a></td><td valign="top"><a href="#Getting-around">3.1.1 Getting around</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Keystroke-index-1_ky_letter-M">M</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-M_002dC_002da"><code>M-C-a</code></a></td><td valign="top"><a href="#Getting-around">3.1.1 Getting around</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-M_002dC_002de"><code>M-C-e</code></a></td><td valign="top"><a href="#Getting-around">3.1.1 Getting around</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-mouse_002d2"><code>mouse-2</code></a></td><td valign="top"><a href="#The-notes-index">2.3 The notes index</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Keystroke-index-1_ky_letter-O">O</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-o"><code>o</code></a></td><td valign="top"><a href="#Notes-indices">3.2 Notes indices</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Keystroke-index-1_ky_letter-R">R</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-RTN"><code>RTN</code></a></td><td valign="top"><a href="#A-notes-file">2.2 A notes file</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-RTN-1"><code>RTN</code></a></td><td valign="top"><a href="#The-notes-index">2.3 The notes index</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Keystroke-index-1_ky_letter-S">S</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-S_002dmouse_002d2"><code>S-mouse-2</code></a></td><td valign="top"><a href="#A-notes-file">2.2 A notes file</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Keystroke-index-1_ky_letter-T">T</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-TAB"><code>TAB</code></a></td><td valign="top"><a href="#A-notes-file">2.2 A notes file</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+</table>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#Keystroke-index-1_ky_letter-C" class="summary-letter"><b>C</b></a>
+ &nbsp; 
+<a href="#Keystroke-index-1_ky_letter-M" class="summary-letter"><b>M</b></a>
+ &nbsp; 
+<a href="#Keystroke-index-1_ky_letter-O" class="summary-letter"><b>O</b></a>
+ &nbsp; 
+<a href="#Keystroke-index-1_ky_letter-R" class="summary-letter"><b>R</b></a>
+ &nbsp; 
+<a href="#Keystroke-index-1_ky_letter-S" class="summary-letter"><b>S</b></a>
+ &nbsp; 
+<a href="#Keystroke-index-1_ky_letter-T" class="summary-letter"><b>T</b></a>
+ &nbsp; 
+</td></tr></table>
+
+
+<hr size="6">
+<a name="Concept-index"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Keystroke-index" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[ &gt; ]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[ &gt;&gt; ]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Concept-index-1"></a>
+<h1 class="unnumbered">Concept index</h1>
+
+<p>This index lists notes-mode concepts.
+</p>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#Concept-index-1_cp_symbol-1" class="summary-letter"><b>.</b></a>
+ &nbsp; 
+<br>
+<a href="#Concept-index-1_cp_letter-C" class="summary-letter"><b>C</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-D" class="summary-letter"><b>D</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-E" class="summary-letter"><b>E</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-F" class="summary-letter"><b>F</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-I" class="summary-letter"><b>I</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-K" class="summary-letter"><b>K</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-M" class="summary-letter"><b>M</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-N" class="summary-letter"><b>N</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-P" class="summary-letter"><b>P</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-R" class="summary-letter"><b>R</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-S" class="summary-letter"><b>S</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-T" class="summary-letter"><b>T</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-U" class="summary-letter"><b>U</b></a>
+ &nbsp; 
+</td></tr></table>
+<table border="0" class="index-cp">
+<tr><td></td><th align="left">Index Entry</th><th align="left"> Section</th></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_symbol-1">.</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-_002enotesrc">.notesrc</a></td><td valign="top"><a href="#Notes_002dmode-configuration">3.3 Notes-mode configuration</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-C">C</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-configuration">configuration</a></td><td valign="top"><a href="#Notes_002dmode-configuration">3.3 Notes-mode configuration</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-conventions">conventions</a></td><td valign="top"><a href="#Useful-conventions">3.1.4 Useful conventions</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Crontab">Crontab</a></td><td valign="top"><a href="#The-notes-index">2.3 The notes index</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-D">D</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Decryption">Decryption</a></td><td valign="top"><a href="#Encryption">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Directory-hierarchy">Directory hierarchy</a></td><td valign="top"><a href="#The-notes-directories">2.4 The notes directories</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-E">E</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Encryption">Encryption</a></td><td valign="top"><a href="#Encryption">3.1.3 Encryption</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-F">F</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Font-matter">Font matter</a></td><td valign="top"><a href="#A-notes-file">2.2 A notes file</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-I">I</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-imenu">imenu</a></td><td valign="top"><a href="#Getting-around">3.1.1 Getting around</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Intermediate-directories">Intermediate directories</a></td><td valign="top"><a href="#The-notes-directories">2.4 The notes directories</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-K">K</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-key_002did">key-id</a></td><td valign="top"><a href="#Encryption">3.1.3 Encryption</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-M">M</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-mailcrypt">mailcrypt</a></td><td valign="top"><a href="#Encryption">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-mkall">mkall</a></td><td valign="top"><a href="#The-notes-index">2.3 The notes index</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-mknew">mknew</a></td><td valign="top"><a href="#Useful-conventions">3.1.4 Useful conventions</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-N">N</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Notes-directories">Notes directories</a></td><td valign="top"><a href="#The-notes-directories">2.4 The notes directories</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Notes-entries">Notes entries</a></td><td valign="top"><a href="#A-notes-file">2.2 A notes file</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Notes-file-permissions">Notes file permissions</a></td><td valign="top"><a href="#The-notes-directories">2.4 The notes directories</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Notes-files">Notes files</a></td><td valign="top"><a href="#A-notes-file">2.2 A notes file</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Notes-files-1">Notes files</a></td><td valign="top"><a href="#The-notes-directories">2.4 The notes directories</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Notes-files_002c-font-matter">Notes files, font matter</a></td><td valign="top"><a href="#A-notes-file">2.2 A notes file</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Notes-index">Notes index</a></td><td valign="top"><a href="#The-notes-index">2.3 The notes index</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Notes-links">Notes links</a></td><td valign="top"><a href="#A-notes-file">2.2 A notes file</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Notes-subjects">Notes subjects</a></td><td valign="top"><a href="#A-notes-file">2.2 A notes file</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-notes_002dmode_002dinitialization_002dprogram">notes-mode-initialization-program</a></td><td valign="top"><a href="#Useful-conventions">3.1.4 Useful conventions</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-notesinit">notesinit</a></td><td valign="top"><a href="#Getting-started">2.1 Getting started</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-P">P</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-PAM">PAM</a></td><td valign="top"><a href="#Encryption">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-PGP">PGP</a></td><td valign="top"><a href="#Encryption">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-PGP-Augmented-Messaging">PGP Augmented Messaging</a></td><td valign="top"><a href="#Encryption">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Pretty-good-privacy">Pretty good privacy</a></td><td valign="top"><a href="#Encryption">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Pseudo_002dURLs">Pseudo-URLs</a></td><td valign="top"><a href="#A-notes-file">2.2 A notes file</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-R">R</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-re_002dindexing">re-indexing</a></td><td valign="top"><a href="#The-notes-index">2.3 The notes index</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Root-directory">Root directory</a></td><td valign="top"><a href="#The-notes-directories">2.4 The notes directories</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-S">S</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-setup">setup</a></td><td valign="top"><a href="#Getting-started">2.1 Getting started</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Subject-summary">Subject summary</a></td><td valign="top"><a href="#Subject-summary">3.1.2 Subject summary</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-T">T</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Today">Today</a></td><td valign="top"><a href="#Useful-conventions">3.1.4 Useful conventions</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-U">U</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-URLs">URLs</a></td><td valign="top"><a href="#A-notes-file">2.2 A notes file</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+</table>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#Concept-index-1_cp_symbol-1" class="summary-letter"><b>.</b></a>
+ &nbsp; 
+<br>
+<a href="#Concept-index-1_cp_letter-C" class="summary-letter"><b>C</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-D" class="summary-letter"><b>D</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-E" class="summary-letter"><b>E</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-F" class="summary-letter"><b>F</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-I" class="summary-letter"><b>I</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-K" class="summary-letter"><b>K</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-M" class="summary-letter"><b>M</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-N" class="summary-letter"><b>N</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-P" class="summary-letter"><b>P</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-R" class="summary-letter"><b>R</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-S" class="summary-letter"><b>S</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-T" class="summary-letter"><b>T</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-U" class="summary-letter"><b>U</b></a>
+ &nbsp; 
+</td></tr></table>
+
+
+
+
+<hr size="6">
+<a name="SEC_Foot"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1>Footnotes</h1>
+<h3><a name="FOOT1" href="#DOCF1">(1)</a></h3>
+<p>Trademarked, in Great Britain, Sunone tells me.
+</p><h3><a name="FOOT2" href="#DOCF2">(2)</a></h3>
+<p>I consider myself pretty anal about this subject,
+often typing notes in from paper after-the-fact,
+and <em>I</em> certainly don&rsquo;t manage to back-enter
+my notes all time time.
+</p><h3><a name="FOOT3" href="#DOCF3">(3)</a></h3>
+
+<p>On the other hand, some folks at MIT are working
+on this problem from both the hardware and the social side of
+things (&lsquo;<tt>http://wearables.www.media.mit.edu/projects/wearables/</tt>&rsquo;)
+(Perhaps they have wild parties with computers, too.)
+</p><h3><a name="FOOT4" href="#DOCF4">(4)</a></h3>
+<p>My hat is off to Rosa Parks
+and the many other normal people who triggered landmark cases.
+</p><h3><a name="FOOT5" href="#DOCF5">(5)</a></h3>
+<p>If you think I&rsquo;m missing an alternative, please let me know.
+</p><hr size="1">
+<a name="SEC_Contents"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Introduction-1" href="#Introduction">1. Introduction</a>
+  <ul class="toc">
+    <li><a name="toc-What-is-it_003f-1" href="#What-is-it_003f">1.1 What is it?</a></li>
+    <li><a name="toc-Why-keep-notes-at-all_003f-1" href="#Why-keep-notes-at-all_003f">1.2 Why keep notes at all?</a></li>
+    <li><a name="toc-Why-keep-notes-on_002dline_003f-1" href="#Why-keep-notes-on_002dline_003f">1.3 Why keep notes on-line?</a></li>
+    <li><a name="toc-Why-use-notes_002dmode_003f-1" href="#Why-use-notes_002dmode_003f">1.4 Why use notes-mode?</a></li>
+    <li><a name="toc-Y2K-Statement-1" href="#Y2K-Statement">1.5 Y2K Statement</a></li>
+    <li><a name="toc-Related-work-1" href="#Related-work">1.6 Related work</a></li>
+    <li><a name="toc-Staying-on-top-1" href="#Staying-on-top">1.7 Staying on top</a></li>
+  </ul></li>
+  <li><a name="toc-Basics-1" href="#Basics">2. Basics</a>
+  <ul class="toc">
+    <li><a name="toc-Getting-started-1" href="#Getting-started">2.1 Getting started</a></li>
+    <li><a name="toc-A-notes-file-1" href="#A-notes-file">2.2 A notes file</a></li>
+    <li><a name="toc-The-notes-index-1" href="#The-notes-index">2.3 The notes index</a></li>
+    <li><a name="toc-The-notes-directories-1" href="#The-notes-directories">2.4 The notes directories</a></li>
+  </ul></li>
+  <li><a name="toc-Advanced-Features-1" href="#Advanced-Features">3. Advanced Features</a>
+  <ul class="toc">
+    <li><a name="toc-Notes-files-1" href="#Notes-files">3.1 Notes files</a>
+    <ul class="toc">
+      <li><a name="toc-Getting-around-1" href="#Getting-around">3.1.1 Getting around</a></li>
+      <li><a name="toc-Subject-summary-1" href="#Subject-summary">3.1.2 Subject summary</a></li>
+      <li><a name="toc-Encryption-1" href="#Encryption">3.1.3 Encryption</a></li>
+      <li><a name="toc-Useful-conventions-1" href="#Useful-conventions">3.1.4 Useful conventions</a></li>
+    </ul></li>
+    <li><a name="toc-Notes-indices-1" href="#Notes-indices">3.2 Notes indices</a></li>
+    <li><a name="toc-Notes_002dmode-configuration-1" href="#Notes_002dmode-configuration">3.3 Notes-mode configuration</a></li>
+  </ul></li>
+  <li><a name="toc-History-1" href="#History">4. History</a>
+  <ul class="toc">
+    <li><a name="toc-Notes_002dmode-history-1" href="#Notes_002dmode-history">4.1 Notes-mode history</a></li>
+    <li><a name="toc-Credits-1" href="#Credits">4.2 Credits</a></li>
+    <li><a name="toc-Changes-1" href="#Changes">4.3 Changes</a></li>
+    <li><a name="toc-Suggested-features-1" href="#Suggested-features">4.4 Suggested features</a></li>
+  </ul></li>
+  <li><a name="toc-Installation-1" href="#Installation">5. Installation</a></li>
+  <li><a name="toc-Keystroke-index-1" href="#Keystroke-index">Keystroke index</a></li>
+  <li><a name="toc-Concept-index-1" href="#Concept-index">Concept index</a></li>
+</ul>
+</div>
+<hr size="1">
+<a name="SEC_About"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1>About This Document</h1>
+<p>
+  This document was generated by <em>John Heidemann</em> on <em>April 4, 2012</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
+</p>
+<p>
+  The buttons in the navigation panels have the following meaning:
+</p>
+<table border="1">
+  <tr>
+    <th> Button </th>
+    <th> Name </th>
+    <th> Go to </th>
+    <th> From 1.2.3 go to</th>
+  </tr>
+  <tr>
+    <td align="center"> [ &lt; ] </td>
+    <td align="center">Back</td>
+    <td>Previous section in reading order</td>
+    <td>1.2.2</td>
+  </tr>
+  <tr>
+    <td align="center"> [ &gt; ] </td>
+    <td align="center">Forward</td>
+    <td>Next section in reading order</td>
+    <td>1.2.4</td>
+  </tr>
+  <tr>
+    <td align="center"> [ &lt;&lt; ] </td>
+    <td align="center">FastBack</td>
+    <td>Beginning of this chapter or previous chapter</td>
+    <td>1</td>
+  </tr>
+  <tr>
+    <td align="center"> [ Up ] </td>
+    <td align="center">Up</td>
+    <td>Up section</td>
+    <td>1.2</td>
+  </tr>
+  <tr>
+    <td align="center"> [ &gt;&gt; ] </td>
+    <td align="center">FastForward</td>
+    <td>Next chapter</td>
+    <td>2</td>
+  </tr>
+  <tr>
+    <td align="center"> [Top] </td>
+    <td align="center">Top</td>
+    <td>Cover (top) of document</td>
+    <td> &nbsp; </td>
+  </tr>
+  <tr>
+    <td align="center"> [Contents] </td>
+    <td align="center">Contents</td>
+    <td>Table of contents</td>
+    <td> &nbsp; </td>
+  </tr>
+  <tr>
+    <td align="center"> [Index] </td>
+    <td align="center">Index</td>
+    <td>Index</td>
+    <td> &nbsp; </td>
+  </tr>
+  <tr>
+    <td align="center"> [ ? ] </td>
+    <td align="center">About</td>
+    <td>About (help)</td>
+    <td> &nbsp; </td>
+  </tr>
+</table>
+
+<p>
+  where the <strong> Example </strong> assumes that the current position is at <strong> Subsubsection One-Two-Three </strong> of a document of the following structure:
+</p>
+
+<ul>
+  <li> 1. Section One
+    <ul>
+      <li>1.1 Subsection One-One
+        <ul>
+          <li>...</li>
+        </ul>
+      </li>
+      <li>1.2 Subsection One-Two
+        <ul>
+          <li>1.2.1 Subsubsection One-Two-One</li>
+          <li>1.2.2 Subsubsection One-Two-Two</li>
+          <li>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp;
+            <strong>&lt;== Current Position </strong></li>
+          <li>1.2.4 Subsubsection One-Two-Four</li>
+        </ul>
+      </li>
+      <li>1.3 Subsection One-Three
+        <ul>
+          <li>...</li>
+        </ul>
+      </li>
+      <li>1.4 Subsection One-Four</li>
+    </ul>
+  </li>
+</ul>
+
+<hr size="1">
+<p>
+ <font size="-1">
+  This document was generated by <em>John Heidemann</em> on <em>April 4, 2012</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/packages/notes-mode/HTML/notes-mode/notes-mode.html b/packages/notes-mode/HTML/notes-mode/notes-mode.html
new file mode 100644 (file)
index 0000000..09b626b
--- /dev/null
@@ -0,0 +1,152 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on August, 8 2008 by texi2html 1.78 -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>Notes-mode: Top</title>
+
+<meta name="description" content="Notes-mode: Top">
+<meta name="keywords" content="Notes-mode: Top">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="Top"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1 class="settitle">Notes-mode
+</h1>
+
+
+
+
+
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top"><a href="notes-mode_1.html#SEC1">1. Introduction</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                
+</td></tr>
+<tr><td align="left" valign="top"><a href="notes-mode_2.html#SEC9">2. Basics</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                      
+</td></tr>
+<tr><td align="left" valign="top"><a href="notes-mode_3.html#SEC14">3. Advanced Features</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">           
+</td></tr>
+<tr><td align="left" valign="top"><a href="notes-mode_4.html#SEC22">4. History</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                     
+</td></tr>
+<tr><td align="left" valign="top"><a href="notes-mode_5.html#SEC27">5. Installation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                
+</td></tr>
+<tr><td align="left" valign="top"><a href="notes-mode_6.html#SEC28">Keystroke index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             
+</td></tr>
+<tr><td align="left" valign="top"><a href="notes-mode_7.html#SEC29">Concept index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+ --- The Detailed Node Listing ---
+
+Introduction
+
+</pre></th></tr><tr><td align="left" valign="top"><a href="notes-mode_1.html#SEC2">1.1 What is it?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                 
+</td></tr>
+<tr><td align="left" valign="top"><a href="notes-mode_1.html#SEC3">1.2 Why keep notes at all?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      
+</td></tr>
+<tr><td align="left" valign="top"><a href="notes-mode_1.html#SEC4">1.3 Why keep notes on-line?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     
+</td></tr>
+<tr><td align="left" valign="top"><a href="notes-mode_1.html#SEC5">1.4 Why use notes-mode?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         
+</td></tr>
+<tr><td align="left" valign="top"><a href="notes-mode_1.html#SEC6">1.5 Y2K Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               
+</td></tr>
+<tr><td align="left" valign="top"><a href="notes-mode_1.html#SEC7">1.6 Related work</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                
+</td></tr>
+<tr><td align="left" valign="top"><a href="notes-mode_1.html#SEC8">1.7 Staying on top</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+Basics
+
+</pre></th></tr><tr><td align="left" valign="top"><a href="notes-mode_2.html#SEC10">2.1 Getting started</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             
+</td></tr>
+<tr><td align="left" valign="top"><a href="notes-mode_2.html#SEC11">2.2 A notes file</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                
+</td></tr>
+<tr><td align="left" valign="top"><a href="notes-mode_2.html#SEC12">2.3 The notes index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             
+</td></tr>
+<tr><td align="left" valign="top"><a href="notes-mode_2.html#SEC13">2.4 The notes directories</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+Advanced Features
+
+</pre></th></tr><tr><td align="left" valign="top"><a href="notes-mode_3.html#SEC15">3.1 Notes files</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                 
+</td></tr>
+<tr><td align="left" valign="top"><a href="notes-mode_3.html#SEC20">3.2 Notes indices</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               
+</td></tr>
+<tr><td align="left" valign="top"><a href="notes-mode_3.html#SEC21">3.3 Notes-mode configuration</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+Notes files
+
+</pre></th></tr><tr><td align="left" valign="top"><a href="notes-mode_3.html#SEC16">3.1.1 Getting around</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              
+</td></tr>
+<tr><td align="left" valign="top"><a href="notes-mode_3.html#SEC17">3.1.2 Subject summary</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             
+</td></tr>
+<tr><td align="left" valign="top"><a href="notes-mode_3.html#SEC18">3.1.3 Encryption</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                  
+</td></tr>
+<tr><td align="left" valign="top"><a href="notes-mode_3.html#SEC19">3.1.4 Useful conventions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+History
+
+</pre></th></tr><tr><td align="left" valign="top"><a href="notes-mode_4.html#SEC23">4.1 Notes-mode history</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          
+</td></tr>
+<tr><td align="left" valign="top"><a href="notes-mode_4.html#SEC24">4.2 Credits</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                     
+</td></tr>
+<tr><td align="left" valign="top"><a href="notes-mode_4.html#SEC25">4.3 Changes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                     
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+</pre></th></tr></table>
+
+
+<hr size="1">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+  This document was generated by <em>John Heidemann</em> on <em>August, 8 2008</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/packages/notes-mode/HTML/notes-mode/notes-mode_1.html b/packages/notes-mode/HTML/notes-mode/notes-mode_1.html
new file mode 100644 (file)
index 0000000..dc5a59a
--- /dev/null
@@ -0,0 +1,533 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on August, 8 2008 by texi2html 1.78 -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>Notes-mode: 1. Introduction</title>
+
+<meta name="description" content="Notes-mode: 1. Introduction">
+<meta name="keywords" content="Notes-mode: 1. Introduction">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="Introduction"></a>
+<a name="SEC1"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC2" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[ &lt;&lt; ]</td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_2.html#SEC9" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1 class="chapter"> 1. Introduction </h1>
+
+<p>What is notes-mode and why should you (perhaps) use it?
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top"><a href="#SEC2">1.1 What is it?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                 
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC3">1.2 Why keep notes at all?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC4">1.3 Why keep notes on-line?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC5">1.4 Why use notes-mode?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC6">1.5 Y2K Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC7">1.6 Related work</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC8">1.7 Staying on top</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              
+</td></tr>
+</table>
+
+<hr size="6">
+<a name="What-is-it_003f"></a>
+<a name="SEC2"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC1" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC3" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC1" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC1" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_2.html#SEC9" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 1.1 What is it? </h2>
+
+<p>Notes-mode is an indexing system for on-line note-taking.
+Notes-mode is composed of two parts, the visible part,
+a major-mode for emacs to aid note-taking;
+and the invisible part,
+scripts which periodically index your notes for you.
+</p>
+<p>Note that notes-mode provides tools to <em>index</em> your notes,
+not to <em>search</em> them.
+(Other existing tools such as &lsquo;<tt>grep</tt>&rsquo;, &lsquo;<tt>agrep</tt>&rsquo;, and &lsquo;<tt>glimpse</tt>&rsquo;
+already allow file search.)
+</p>
+<p>A digression about indexing vs. searching:
+Indexing in this sense means
+organize them according to categories you give,
+while searching looks through all text for arbitrary strings.
+Drawing on the World Wide Web for examples,
+Yahoo (&lsquo;<tt>http://www.yahoo.com/</tt>&rsquo;) is an index,
+while Alta Vista (&lsquo;<tt>http://www.altavista.digital.com/</tt>&rsquo;)
+is a search-engine.
+In (potentially) more familiar terms,
+the yellow pages
+<a name="DOCF1" href="notes-mode_fot.html#FOOT1">(1)</a>
+are an index,
+while directory information (411 in the USA)
+is sort of a search-engine.
+</p>
+
+<hr size="6">
+<a name="Why-keep-notes-at-all_003f"></a>
+<a name="SEC3"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC2" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC4" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC1" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC1" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_2.html#SEC9" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 1.2 Why keep notes at all? </h2>
+
+<p>So why should you use notes-mode?
+Well, first, consider why you should (perhaps)
+keep your notes on line.
+First,
+I assume that you take notes as part of your work or school.
+If you don't,
+you can stop reading now and go back to watching TV.
+</p>
+<p>If you keep notes, ask yourself why you keep them.
+Reasons vary for different people, but some include:
+</p>
+<ul>
+<li>
+To remember what is said or done.
+
+</li><li>
+To focus on what is important about what is said.
+
+</li><li>
+To provide proof of having done something
+at a particular time or date.
+
+</li><li>
+I know there were other reasons here,
+but they slipped my mind.
+</li></ul>
+
+
+<hr size="6">
+<a name="Why-keep-notes-on_002dline_003f"></a>
+<a name="SEC4"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC3" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC5" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC1" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC1" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_2.html#SEC9" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 1.3 Why keep notes on-line? </h2>
+
+<p>OK, I've talked you into keeping notes.
+Why do it on-line?
+Again, there are different reasons for different people.
+If you don't want to consider keeping your notes on-line,
+you're welcome to go back to your (clay tablets)
+paper notes.
+</p>
+<p>However, if you do much of your work on-line,
+or if you have portable computer,
+then you might want to consider keeping your notes on-line.
+</p>
+<ul>
+<li>
+It's faster to type than write,
+and possibly more legible at high speed.
+
+</li><li>
+Often information is already on-line.
+For example, in software development, bug reports,
+measurement results, and everything else that's useful
+is on-line.
+
+</li><li>
+You can take down more detail than you otherwise would
+(especially if the data is already on-line).
+Taking more copious notes can be helpful when you go back
+to figure out why that strange thing was happening.
+
+</li><li>
+On-line notes are easy to search.
+Full-text search with 
+grep, agrep, and glimpse are all much faster
+and are often more accurate than paging through paper notes
+looking for a particular keyword.
+
+</li><li>
+On-line notes are easy to index.
+(At least with notes-mode!)
+In addition to full-text search,
+it's helpful to organize notes by category.
+If you keep a table-of-contents of your paper notes,
+you are either extremely fastidious
+or a librarian (Nadia?).
+
+</li><li>
+You can keep all of your notes with you at all times
+(if you have a portable computer).
+Even at a page a day,
+paper notes quickly become bulky and awkward to carry around.
+On-line notes fit on your computer's hard disk,
+an extraordinarily compact medium
+by comparison.
+
+</li><li>
+Your notes can be automatically backed up.
+Paper notes can become damaged with time,
+and as a graduate student
+one of my fears was fire in Boelter Hall
+consuming all my research experiments
+and and therefore hopes of a degree.
+Electronic notes are extremely easy to duplicate
+and can be automatically backed up with the rest of your computer.
+(You <em>do</em> back up your computer, don't you?)
+
+</li></ul>
+
+<p>While these advantages are undoubtedly clear to any
+right-thinking computer user,
+it should be said that there are a few disadvantages 
+for on-line note-taking.
+</p>
+<ul>
+<li>
+If you don't have a computer with you most of the time,
+it's difficult take notes on-line (because you're off-line, of course).
+<a name="DOCF2" href="notes-mode_fot.html#FOOT2">(2)</a>
+
+</li><li>
+Computers require power.
+If your portable computer runs out of juice,
+you're on your own.
+Corollary:  watch your power, or bring paper.
+Better corollary:  watch your power, <em>and</em> bring paper.
+
+</li><li>
+Social limitations.
+It's not always socially acceptable to take notes-on-line.
+For example,
+at a party,
+few people would use a computer
+to take down the phone number of a person
+to whom they're attracted
+(at least, if they wanted the attraction to be mutual).
+<a name="DOCF3" href="notes-mode_fot.html#FOOT3">(3)</a>
+Sometimes other people find the sound of typing distracting.
+
+</li><li>
+Health issues.
+Repetitive stress injuries do occur
+writing (slower) by hand is at least 
+an alternate motion than typing.
+
+</li><li>
+Legal limitations.
+If you want to use your electronic notes
+to justify a patent or invention,
+you may be breaking legal ground.
+Being on the legal cutting-edge is rarely an easy thing
+for the person involved.<a name="DOCF4" href="notes-mode_fot.html#FOOT4">(4)</a>
+
+</li></ul>
+
+
+<hr size="6">
+<a name="Why-use-notes_002dmode_003f"></a>
+<a name="SEC5"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC4" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC6" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC1" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC1" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_2.html#SEC9" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 1.4 Why use notes-mode? </h2>
+
+<p>OK, I've sold you on note-taking and even on on-line note-taking.
+What about notes-mode?
+Naturally,
+it slices, dices, and makes julienne fries.
+But wait, there's more:
+</p>
+<ul>
+<li>
+It automates indexing your notes,
+linking notes with the same subject together.
+
+</li><li>
+It supports embedded links,
+allowing you to manually link together different topics 
+and external files.
+
+</li><li>
+It includes a number of convenience-features in emacs.
+Subjects can be completed based on existing subjects.
+The usual emacs customization mechanisms are available.
+
+</li><li>
+Notes containing sensitive information can be encrypted.
+
+</li><li>
+Notes-mode seems better than the other, currently available alternatives.
+</li></ul>
+
+<p>What are the alternatives?  I'm glad you asked.
+<a name="DOCF5" href="notes-mode_fot.html#FOOT5">(5)</a>
+</p>
+<ul>
+<li>
+<strong>HTML</strong>.
+HTML has better formatting capabilities than notes-mode,
+and it has excellent linking capabilities.
+Unfortunately,
+HTML's tags are fairly intrusive
+ (each is at least four characters long and most come with a pair),
+ tags can get confused with normal text,
+ errors in HTML can be bad (obscuring data),
+ and there's no automatic indexing feature
+ (at least with plain HTML).
+Besides,
+ all data should be kept as close to the ASCII from whence it came,
+ as God Intended (hi, Steve).
+
+</li><li>
+<strong>Word Processors</strong>.
+Word processors are strong in the formatting department,
+ but most don't really have linking capabilities,
+ and have poor or restricted indexing.
+
+</li></ul>
+
+<hr size="6">
+<a name="Y2K-Statement"></a>
+<a name="SEC6"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC5" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC7" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC1" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC1" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_2.html#SEC9" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 1.5 Y2K Statement </h2>
+
+<p>Notes mode uses dates extensively,
+ both two-digit years and seconds-since-1970.
+However, notes-mode has been coded to function correctly through
+ the year 2038.
+</p>
+<p>To avoid problems with the year 2000, notes-mode assumes
+ that any two-digit years before &ldquo;70&rdquo; are 20xx, not 19xx.
+Notes-mode should therefore work correctly in both the year 1999 and 2000.
+</p>
+<p>(Notes-mode 1.17 released February 1999 fixes a lingering Y2K problem.)
+</p>
+<p>Because notes-mode uses seconds-since-1970 for some date calculations
+ it will fail beyond the year 2038 on computers with 32-bit integers.
+</p>
+<p>If I'm still using notes-mode then on a 32-bit machine I'll see what I can do.
+</p>
+
+<hr size="6">
+<a name="Related-work"></a>
+<a name="SEC7"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC6" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC8" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC1" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC1" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_2.html#SEC9" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 1.6 Related work </h2>
+
+<p>What would a document be without related work?
+</p>
+<p>Notes-mode is not related in any way to Lotus Notes.
+</p>
+<p>I am told (by David Weisman)
+ that it's something like the now defunct Lotus Agenda.
+</p>
+<p>Ashvin Goel, one of the contributors to notes-mode,
+ has gone off and done a from-scratch reimplementation
+ called records-mode.
+It's very similar to notes mode,
+ and emphasizes on-the-fly updates to entry links
+ but lacks a manual.
+You may want to check it out at
+ &lsquo;<tt>http://www.cse.ogi.edu/~ashvin/software.html</tt>&rsquo;.
+</p>
+<p>Hyperbole (by Bob Weiner) offers better linking facilities
+than notes-mode, but it has a bunch of stuff notes-mode doesn't need
+and it's missing notes-specific indexing provided by notes-mode.
+For people already using Hyperbole
+ it would be interesting to replace notes-mode's linking
+ with Hyperbole's.
+Contributions in this area are welcome, provided they make Hyperbole
+ optional.
+</p>
+<hr size="6">
+<a name="Staying-on-top"></a>
+<a name="SEC8"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC7" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_2.html#SEC9" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC1" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC1" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_2.html#SEC9" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 1.7 Staying on top </h2>
+
+<p>The most recent distribution of notes-mode 
+ is always available via
+ &lsquo;<tt>http://www.isi.edu/~johnh/SOFTWARE/NOTES_MODE/</tt>&rsquo;.
+</p>
+<p>After you've installed notes mode you're encouraged to subscribe
+to the mailing lists.
+To subscribe, go to the web page
+Send the message &quot;subscribe&quot; to
+&lsquo;<tt>http://www.heidemann.la.ca.us/mailman/listinfo/notes-mode-announce</tt>&rsquo; or
+&lsquo;<tt>http://www.heidemann.la.ca.us/mailman/listinfo/notes-mode-talk</tt>&rsquo;.
+</p>
+<p>The announce list will contain only release announcements
+and so is guaranteed to be very low bandwidth.
+</p>
+
+
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC1" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_2.html#SEC9" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+  This document was generated by <em>John Heidemann</em> on <em>August, 8 2008</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/packages/notes-mode/HTML/notes-mode/notes-mode_2.html b/packages/notes-mode/HTML/notes-mode/notes-mode_2.html
new file mode 100644 (file)
index 0000000..61a3bf9
--- /dev/null
@@ -0,0 +1,413 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on August, 8 2008 by texi2html 1.78 -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>Notes-mode: 2. Basics</title>
+
+<meta name="description" content="Notes-mode: 2. Basics">
+<meta name="keywords" content="Notes-mode: 2. Basics">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="Basics"></a>
+<a name="SEC9"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode_1.html#SEC8" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC10" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode_1.html#SEC1" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_3.html#SEC14" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1 class="chapter"> 2. Basics </h1>
+
+<p>All you need to use notes-mode
+ in a chapter.
+(Except for installation, See section <a href="notes-mode_5.html#SEC27">Installation</a>.)
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top"><a href="#SEC10">2.1 Getting started</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC11">2.2 A notes file</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC12">2.3 The notes index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC13">2.4 The notes directories</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       
+</td></tr>
+</table>
+
+<hr size="6">
+<a name="Getting-started"></a>
+<a name="SEC10"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC9" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC11" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_3.html#SEC14" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 2.1 Getting started </h2>
+
+<p>To get started with notes-mode,
+ read the introduction this chapter,
+ then either:
+</p>
+<ul>
+<li>
+Start emacs, do 
+ <kbd>M-x</kbd> <code>load-library</code> <kbd>RET</kbd> <code>notes-mode</code> <kbd>RET</kbd>
+This approach will set up notes-mode with the default parameters.
+
+</li><li>
+OR, from the shell, 
+ run the program &lsquo;<tt>notesinit</tt>&rsquo;.
+This approach will ask you some questions about how you want to configure
+ notes mode.
+
+</li></ul>
+
+<p>Either way these should set up everything notes-mode needs.
+This program will modify your environment (as described in this section),
+ or it will give you the exact commands you should run yourself.
+</p>
+<p>After you've done one of these,
+ start up emacs and note-away.
+I usually begin a
+ day of note-taking by running the command
+ <kbd>M-x</kbd> <code>notes-index-todays-link</code>
+ to jump directly to today's note.
+You may even wish to bind this to something,
+ perhaps with
+ <code>(define-key global-map &quot;\C-cn&quot; 'notes-index-todays-link)</code>
+ in your &lsquo;<tt>.emacs</tt>&rsquo;. 
+</p>
+<p>If you want to browse your existing notes,
+ you might instead want to edit the
+ &lsquo;<tt>~/NOTES/index</tt>&rsquo;.
+(What is a notes file and the index? Hurry up and finish
+ reading this chapter.) 
+</p>
+
+<hr size="6">
+<a name="A-notes-file"></a>
+<a name="SEC11"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC10" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC12" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_3.html#SEC14" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 2.2 A notes file </h2>
+
+
+<p>The notes file is the focus of most of the activity in notes-mode,
+ it's where you take your notes.
+Notes files are mostly free-form text
+ broken up into <em>entries</em>.
+Here's an example:
+</p>
+<a name="IDX1"></a>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">8-Jun-95 Thursday
+-----------------
+
+* Today
+-------
+prev: &lt;none&gt;
+next: &lt;file:///~/NOTES/199506/950609#* Today&gt;
+
+next week - release notes-mode
+
+
+* Environment/notes
+-------------------
+
+I explained notes mode to Ashvin and Geoff.
+...
+</pre></td></tr></table>
+
+<p>Each entry has a subject-block, (maybe) some links, and then (maybe) some text.
+</p>
+<p>The subject-block must begin with an asterisk-space (<kbd>* </kbd>)
+ at the beginning of a line, followed by the subject itself.
+Subjects must be underlined with a row of dashes
+ (if they're not exact, that's OK;
+ notes-mode will fix them periodically).
+For convenience,
+ notes-mode will automatically add the underlines when you
+ hit <kbd>&lt;RTN&gt;</kbd> (<code>notes-electric-return</code>),
+ and <kbd>&lt;TAB&gt;</kbd> on a partially completed subject will
+ invoke completion based on indexed subjects (<code>notes-complete-subject</code>).
+<a name="IDX2"></a>
+<a name="IDX3"></a>
+<a name="IDX4"></a>
+</p>
+<p>Following the subject may be links.
+(In the example, the &ldquo;Today&rdquo; entry has links,
+ the &ldquo;Environment/notes&rdquo; entry doesn't.)
+These links will be automatically updated by notes-mode
+ when your notes are re-indexed;
+ just leave a blank line when writing the note.
+<a name="IDX5"></a>
+</p>
+<p>Links are made with pseudo-URLs,
+ sort of like those in the World Wide Web. 
+Any of these URLs can be followed in notes-mode files
+ by clicking <kbd>S-mouse-2</kbd> on the pseudo-URL
+ (<code>notes-w3-follow-link-mouse</code>).
+<a name="IDX6"></a>
+<a name="IDX7"></a>
+<a name="IDX8"></a>
+</p>
+<p>Finally comes the text.
+Go wild, but just don't include text that looks like a subject.
+You can embed pseudo-URLs to link notes together manually.
+</p>
+<p>The more anal of you may have noticed
+ that the lines before the first subject
+ are not part of any entry.
+These lines are
+ <em>front matter</em>.
+They're not usually used for much,
+ but they can be a good place to label the file.
+<a name="IDX9"></a>
+<a name="IDX10"></a>
+</p>
+<p>There are a number of useful conventions
+ that can be adopted to organize your notes.
+The most common is the &ldquo;Today&rdquo; entry.
+If you keep an entry with the same subject
+ at the beginning of each file,
+ you link all of your notes together.
+Notes-mode will help you out with some of these convetions
+ by automatically creating or copying some fields for you;
+ see see section <a href="notes-mode_3.html#SEC19">Useful conventions</a> for details.
+</p>
+<p>Finally, notes-mode can also work with outline-minor-mode
+ (thanks to Tim Carroll for pointing this out).
+Outline-mode supports hiding and revealing text and other helpful
+ features beyond the scope of this document.
+See <a href="../emacs/Outline-Mode.html#Outline-Mode">Outline Mode: (emacs)Outline Mode</a> section `Outline Mode' in <cite>The Emacs Editor</cite>, for details.
+</p>
+<hr size="6">
+<a name="The-notes-index"></a>
+<a name="SEC12"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC11" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC13" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_3.html#SEC14" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 2.3 The notes index </h2>
+
+
+<p>The notes index lists all subjects you've kept notes about,
+ and each date of each note.
+Impress your friends,
+ show your advisor why you're worth the <em>big</em> peanuts,
+ you'll soon have the biggest index of all.
+</p>
+<p>The index has one line per subject, listing the subject
+ and each day a note was made about that subject.
+For example:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">Bicycle: 950314, 950316
+Bicycle/maintenance/books: 951028
+Bridge/hands: 951113, 951114, 951116, 951117
+Bridge/UCLA: 960222, 960409
+</pre></td></tr></table>
+
+<p>Clicking on any of the dates with <kbd>mouse-2</kbd>
+ will take you to that note
+ (<code>notes-index-mouse-follow-link</code>).
+(You can also move the point over the date and hit <kbd>&lt;RTN&gt;</kbd>
+ if you're musaphobic [<code>notes-index-follow-link</code>].)
+<a name="IDX11"></a>
+<a name="IDX12"></a>
+</p>
+<p>The notes index is automatically updated by the program &lsquo;<tt>mkall</tt>&rsquo;.
+Typically &lsquo;<tt>mkall</tt>&rsquo; is run nightly by &lsquo;<tt>cron</tt>&rsquo;.
+On most modern versions of Unix, you can add this command to cron by
+ running &lsquo;<tt>crontab -e</tt>&rsquo; and adding the line:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">0 4 * * * /usr/local/lib/notes-mode/mkall
+</pre></td></tr></table>
+<a name="IDX13"></a>
+<a name="IDX14"></a>
+<a name="IDX15"></a>
+
+<p>(Assuming that your notes programs are installed
+ in /usr/local/lib/notes-mode, the default location.)
+</p>
+
+<hr size="6">
+<a name="The-notes-directories"></a>
+<a name="SEC13"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC12" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_3.html#SEC14" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC9" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_3.html#SEC14" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 2.4 The notes directories </h2>
+
+
+<p>The final thing needed to tie basic notes-mode together his how
+the pieces fit together.
+Since my graduate work is in file systems,
+you can bet that directories are involved.
+</p>
+<p>Notes-mode keeps its files in a two-level hierarchy:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">~/NOTES
+~/NOTES/index
+~/NOTES/rawindex
+~/NOTES/199603
+~/NOTES/199603/960329
+~/NOTES/199603/960330
+~/NOTES/199604
+~/NOTES/199604/960401
+</pre></td></tr></table>
+
+<p>The top level, &lsquo;<tt>~/NOTES</tt>&rsquo;, is the notes directory.
+It keeps all notes in one place.
+(The name of this directory is configurable, See section <a href="notes-mode_3.html#SEC21">Notes-mode configuration</a>.)
+</p>
+<p>Inside the notes directory are two files and a number of directories.
+The files are &lsquo;<tt>index</tt>&rsquo;,
+ the index of all entries (see section <a href="#SEC12">The notes index</a>),
+ and &lsquo;<tt>rawindex</tt>&rsquo;,
+ used internally.
+<a name="IDX16"></a>
+</p>
+<p>The notes directory also contains a number of subdirectories,
+ sometimes called <em>intermediate directories</em>.
+These directories group the actual notes files into manageable chunks,
+ keeping any directory from getting too large.
+Intermediate directories are named
+ by the four-digit year and the two-digit month
+ of the entries they contain.
+(The format of intermediate directories
+ is configurable, See section <a href="notes-mode_3.html#SEC21">Notes-mode configuration</a>.)
+<a name="IDX17"></a>
+</p>
+<p>Finally,
+ each intermediate directory are the notes files themselves,
+ named according to the two-digit year, month, and day-of-month.
+<a name="IDX18"></a>
+</p>
+<p>For the most part,
+ notes-mode will automatically maintain this organization of files,
+ once you create the top-level directory.
+Notes-mode will also automatically insure
+ that all files in the notes directory are unreadable by
+ anyone other than their owner.
+Notes are personal things.
+(This behavior is not currently configurable,
+ but it probably should be.)
+<a name="IDX19"></a>
+</p>
+
+
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC9" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_3.html#SEC14" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+  This document was generated by <em>John Heidemann</em> on <em>August, 8 2008</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/packages/notes-mode/HTML/notes-mode/notes-mode_3.html b/packages/notes-mode/HTML/notes-mode/notes-mode_3.html
new file mode 100644 (file)
index 0000000..fef21b8
--- /dev/null
@@ -0,0 +1,505 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on August, 8 2008 by texi2html 1.78 -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>Notes-mode: 3. Advanced Features</title>
+
+<meta name="description" content="Notes-mode: 3. Advanced Features">
+<meta name="keywords" content="Notes-mode: 3. Advanced Features">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="Advanced-Features"></a>
+<a name="SEC14"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode_2.html#SEC13" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC15" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode_2.html#SEC9" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_4.html#SEC22" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1 class="chapter"> 3. Advanced Features </h1>
+
+<p>Notes-mode, the minutiae, and some other good stuff.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top"><a href="#SEC15">3.1 Notes files</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                 
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC20">3.2 Notes indices</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC21">3.3 Notes-mode configuration</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    
+</td></tr>
+</table>
+
+<hr size="6">
+<a name="Notes-files"></a>
+<a name="SEC15"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC14" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC16" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC14" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC14" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_4.html#SEC22" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 3.1 Notes files </h2>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top"><a href="#SEC16">3.1.1 Getting around</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC17">3.1.2 Subject summary</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC18">3.1.3 Encryption</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                  
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC19">3.1.4 Useful conventions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          
+</td></tr>
+</table>
+
+<hr size="6">
+<a name="Getting-around"></a>
+<a name="SEC16"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC15" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC17" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC14" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC15" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_4.html#SEC22" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h3 class="subsection"> 3.1.1 Getting around </h3>
+
+<p>Moving between notes entries and around the hierarchy is fairly common,
+ so there are some accelerators.
+</p>
+<dl compact="compact">
+<dt> <kbd>C-c C-i</kbd></dt>
+<dd><p>Jump to the index entry for the current entry's subject
+(<code>notes-goto-index-entry</code>).
+<a name="IDX20"></a>
+</p>
+</dd>
+<dt> <kbd>C-c C-n</kbd></dt>
+<dt> <kbd>C-c C-p</kbd></dt>
+<dd><p>Move to the next or prior note with the same subject
+(<code>notes-follow-next-link</code> and <code>notes-follow-prev-link</code>).
+These functions follow the links in the note,
+ if they're defined.
+If not,
+ they look through the index file.
+This approach usually works,
+ but will fail if there are multiple new entries created
+ with the given subject
+ between when the index is recomputed.
+<a name="IDX21"></a>
+<a name="IDX22"></a>
+</p>
+</dd>
+<dt> <kbd>C-c&lt;RTN&gt;</kbd></dt>
+<dd><p>Follow the link under the point
+(<code>notes-w3-follow-link</code>),
+ a keyboard equivalent of &lt;S-mouse-2&gt;.
+<a name="IDX23"></a>
+</p>
+</dd>
+<dt> <kbd>M-C-a</kbd></dt>
+<dt> <kbd>M-C-e</kbd></dt>
+<dd><p>Jump to the beginning or end of the current note entry
+(<code>notes-beginning-of-defun</code> and <code>notes-end-of-defun</code>).
+<a name="IDX24"></a>
+<a name="IDX25"></a>
+</p>
+</dd>
+<dt> <kbd>C-c C-k</kbd></dt>
+<dd><p>Copies the pseudo-URL for the current note into the kill-ring
+(<code>current-url-as-kill</code>).
+To link two entries, go to the target,
+ grab its URL with <kbd>C-c C-k</kbd>,
+ go to where you want to make the link,
+ and yank the URL with <kbd>C-y</kbd>.
+<a name="IDX26"></a>
+</p>
+</dd>
+</dl>
+
+
+<p>Notes mode supports imenu,
+ if you have it bound to something
+ (I use <code>(global-set-key [down-mouse-3] 'imenu)</code>).
+<a name="IDX27"></a>
+</p>
+
+<hr size="6">
+<a name="Subject-summary"></a>
+<a name="SEC17"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC16" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC18" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC14" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC15" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_4.html#SEC22" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h3 class="subsection"> 3.1.2 Subject summary </h3>
+
+<p>It's often helpful to look at all
+ entries for a given subject
+<kbd>C-c C-s</kbd>
+ collects all entries with the subject of the current
+ entry in a new buffer
+ (<code>notes-summarize-subject</code>).
+<a name="IDX28"></a>
+<a name="IDX29"></a>
+</p>
+
+<hr size="6">
+<a name="Encryption"></a>
+<a name="SEC18"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC17" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC19" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC14" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC15" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_4.html#SEC22" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h3 class="subsection"> 3.1.3 Encryption </h3>
+
+
+<p>Notes occasionally contain private material.
+While Unix has strong services for file protection
+ (compared to other, say, more wide-selling operating systems),
+ in many systems root passwords are shared,
+ while other systems are vulnerable to physical compromise.
+In such systems,
+ properly used encryption is the best approach to security.
+</p>
+<p>Notes-mode encryption is based
+ Phill Zimmerman's PGP (Pretty Good Privacy)
+(see &lsquo;<tt>http://www.mantis.co.uk/pgp/pgp.html</tt>&rsquo;)
+ and either
+ with Rick Campbell's
+ emacs interface, PAM (PGP Augmented Messaging)
+(from &lsquo;<tt>ftp://h.gp.cs.cmu.edu/usr/rfb/pam/</tt>&rsquo;)
+ (note that as of January 1997, PAM is no longer at this ftp site
+ and appears to not be publicly available),
+ or LoPresti and Choi's mailcrypt
+(from &lsquo;<tt>http://cag-www.lcs.mit.edu/mailcrypt/</tt>&rsquo;).
+<a name="IDX30"></a>
+<a name="IDX31"></a>
+<a name="IDX32"></a>
+<a name="IDX33"></a>
+<a name="IDX34"></a>
+</p>
+<dl compact="compact">
+<dt> <kbd>C-c C-e</kbd></dt>
+<dd><p>Encrypt the current note
+(<code>notes-encrypt-note</code>).
+By default this function encrypts the whole entry.
+With a prefix argument,
+ only the part from the point to the end of the entry is encrypted.
+<a name="IDX35"></a>
+</p>
+</dd>
+<dt> <kbd>C-c C-d</kbd></dt>
+<dd><p>Decrypt the current note
+(<code>notes-decrypt-note</code>).
+</p></dd>
+</dl>
+<a name="IDX36"></a>
+
+<p>By default notes-mode determines your public key by looking 
+ up your <code>user-full-name</code> in your PGP keyring.
+You can override this default by setting
+ <code>notes-encryption-key-id</code>
+ to the desired key-id.
+<a name="IDX37"></a>
+</p>
+
+<hr size="6">
+<a name="Useful-conventions"></a>
+<a name="SEC19"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC18" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC20" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC14" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC15" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_4.html#SEC22" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h3 class="subsection"> 3.1.4 Useful conventions </h3>
+
+
+
+<p>There are a number of conventions which can make notes-mode
+ easier to use.
+These conventions are a matter of personal taste,
+ of course.
+Do what works for you.
+</p>
+<p>First,
+ I find it helpful to keep the date of each notes-file at the top
+ of the file.
+This makes the file self-identifying
+ if the filename is lost.
+</p>
+<p>Second,
+ I find it useful to have the first entry of each file
+ have the same subject (perhaps &ldquo;Today&rdquo;).
+This entry then links all notes together,
+ making it easy to go to yesterday and tomorrow.
+I keep a to-do list on this entry,
+ bringing the list forward each day.
+<a name="IDX38"></a>
+</p>
+<p>A third useful convention is to keep an
+ entry with the name based on the day of the week
+ in each file.
+Analogous to &ldquo;Today&rdquo;, this entry links together
+ weeks.
+</p>
+<p>Notes-mode supports these conventions.
+When you make a new notes-file in emacs,
+ notes-mode searches for the preceding file.
+If it follows any of these conventions,
+ the new file is initialized appropriately.
+Currently
+ the approach to do this process
+ (in the program &lsquo;<tt>mknew</tt>&rsquo;)
+ is fairly sensitive,
+ so it may not work in all cases.
+In particular,
+ the date convention works only on
+ for English-language dates.
+(If you use notes-mode with a non-English language,
+ let me know and I'll work with you to fix this limitation.)
+</p>
+<p>If you find other helpful conventions,
+ please let me know.
+Modifications to &lsquo;<tt>mknew</tt>&rsquo; to implement
+ new conventions are also invited.
+</p>
+<p>If you don't want to use these conventions,
+ or if you want to use different ones,
+ set the emacs variable notes-mode-initialization-program
+ to nil or the name of your initialization program.
+<a name="IDX39"></a>
+</p>
+
+<hr size="6">
+<a name="Notes-indices"></a>
+<a name="SEC20"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC19" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC21" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC14" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC14" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_4.html#SEC22" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 3.2 Notes indices </h2>
+
+
+<p>Only two features of notes index mode haven't yet been described.
+First,
+ you can open any notes-file based on date
+ with <code>notes-index-link</code>,
+ normally bound to &lt;o&gt;.
+<a name="IDX40"></a>
+</p>
+<p>Second,
+ you can get a subject-summary
+ with &lt;C-c C-s&gt;
+ (see section <a href="#SEC17">Subject summary</a>).
+The subject defaults to that of the current index line.
+<a name="IDX41"></a>
+</p>
+
+<hr size="6">
+<a name="Notes_002dmode-configuration"></a>
+<a name="SEC21"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC20" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_4.html#SEC22" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC14" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC14" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_4.html#SEC22" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 3.3 Notes-mode configuration </h2>
+
+
+<p>Several aspects of notes mode are particularly visible
+ to the user.
+Because I'm not a fascist,
+ a user can change most of these.
+</p>
+<p>Preferences are specified in &lsquo;<tt>~/.notesrc</tt>&rsquo;.
+This file lists things to change:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example"># lines beginning with a hash are comments
+dir: ~/NOTES
+int_form: %Y%m
+</pre></td></tr></table>
+
+<p>Currently, two things can be changed:
+</p>
+<dl compact="compact">
+<dt> <code>dir</code></dt>
+<dd><p>Specifies the root of the notes directory hierarchy
+ (see section <a href="notes-mode_2.html#SEC13">The notes directories</a>).
+</p>
+</dd>
+<dt> <code>int_form</code></dt>
+<dd><p>Specifies the form of the intermediate directory.
+A limited subset of <code>strftime(3)</code>
+ formatting is allowed.
+</p></dd>
+</dl>
+
+<p>The subset of <code>strftime(3)</code> supported in <code>int_form</code> is:
+</p><dl compact="compact">
+<dt> <code>%Y</code></dt>
+<dd><p>The four-digit year.
+</p>
+</dd>
+<dt> <code>%y</code></dt>
+<dd><p>The two-digit year.
+</p>
+</dd>
+<dt> <code>%m</code></dt>
+<dd><p>A two-digit numeric month.
+</p>
+</dd>
+<dt> <code>%d</code></dt>
+<dd><p>A two-digit day.
+</p></dd>
+</dl>
+
+<p>In addition to &lsquo;<tt>.notesrc</tt>&rsquo;,
+ there are a number of emacs-specific variables.
+These variables are documented in the file
+ &lsquo;<tt>notes-variables.el</tt>&rsquo;.
+</p>
+
+
+
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC14" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_4.html#SEC22" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+  This document was generated by <em>John Heidemann</em> on <em>August, 8 2008</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/packages/notes-mode/HTML/notes-mode/notes-mode_4.html b/packages/notes-mode/HTML/notes-mode/notes-mode_4.html
new file mode 100644 (file)
index 0000000..65b3686
--- /dev/null
@@ -0,0 +1,511 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on August, 8 2008 by texi2html 1.78 -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>Notes-mode: 4. History</title>
+
+<meta name="description" content="Notes-mode: 4. History">
+<meta name="keywords" content="Notes-mode: 4. History">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="History"></a>
+<a name="SEC22"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode_3.html#SEC21" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC23" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode_3.html#SEC14" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_5.html#SEC27" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1 class="chapter"> 4. History </h1>
+
+<p>More about notes-mode than you wanted to know,
+and some thanks.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top"><a href="#SEC23">4.1 Notes-mode history</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC24">4.2 Credits</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                     
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC25">4.3 Changes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                     
+</td></tr>
+<tr><td align="left" valign="top"><a href="#SEC26">4.4 Suggested features</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                     
+</td></tr>
+</table>
+
+
+
+<hr size="6">
+<a name="Notes_002dmode-history"></a>
+<a name="SEC23"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC22" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC24" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_5.html#SEC27" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 4.1 Notes-mode history </h2>
+
+<p>Briefly,
+ I started keeping notes on-line shortly after I got a portable computer
+ in January, 1994.
+After a month-and-a-half of notes, I realized that
+ one does not live by grep alone,
+ so I started adding indexing facilities.
+</p>
+<p>In June of 1995
+ some other Ficus-project members started
+ keeping and indexing on-line notes
+ using other home-grown systems.
+After some discussion,
+ we generalized my notes-mode work and
+ they started using it.
+</p>
+<p>Over the next 18 months notes-mode grew.
+Finally, in April, 1996 I wrote documentation,
+ guaranteeing that innovation on notes-mode will now cease
+ or the documentation will become out of date.
+</p>
+
+<hr size="6">
+<a name="Credits"></a>
+<a name="SEC24"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC23" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC25" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_5.html#SEC27" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 4.2 Credits </h2>
+
+<p>I (John Heidemann, &lt;johnh@isi.edu&gt;)
+ started, documented, and currently maintain notes-mode.
+I take ultimate responsibility for the code,
+ especially for the ugly parts that I won't let others change.
+</p>
+<p>Ashvin Goel
+ &lt;ashvin@ficus.cs.ucla.edu&gt;
+ has been a very enthusiastic notes-mode user and contributor.
+He is responsible for at least
+ the ideas behind <code>notes-summarize-subject</code>
+and the ideas and initial implementations of
+ some of the original generalization and modularity improvements,
+ <code>notes-follow-next-link</code> and <code>notes-follow-prev-link</code>,
+ <code>notes-goto-index-entry</code>,
+ programmed subject completion,
+ and
+ context-sensitive mouse-2 handling.
+In addition,
+ he is an invaluable second opinion about
+ what and how things should be done
+ (even if I don't always agree with him).
+</p>
+<p>Geoff Kuenning
+ &lt;geoff@ficus.cs.ucla.edu&gt;
+ has been another enthusiastic notes-mode user and victim.
+He is responsible for
+ finding several bugs,
+ motivation for mouse-less operation,
+ comments about the documentation,
+ the day-of-week convention,
+ and an initial implementation and the idea of
+ multiple entries with the same subjects in a single notes-file.
+</p>
+<p>Ramesh Govindan &lt;govindan@isi.edu&gt; did the xemacs port.
+</p>
+<p>Since it's release on Usenet in April 1996 several
+ other folks have contributed.
+Thanks to
+ David Weisman &lt;weisman@app1.osf.org&gt;,
+ Martin L. Smith &lt;martin@ner.com&gt;,
+ Jason Bastek &lt;jason@aai.com&gt;,
+ Ulrich Herbst &lt;Ulrich.Herbst@t-systems.com&gt;.
+See the next section (See section <a href="#SEC25">Changes</a>.) for details of their exploits.
+</p>
+<p>Thanks to Larry Ayers &lt;layers@marktwain.net&gt;
+ for popularizing notes-mode with reviews in
+ the Linux Gazette
+ (at &lt;http://www.linuxgazette.com/issue22/notes-mode.html&gt; and
+ &lt;http://www.linuxgazette.com/issue35/ayers.html&gt;).
+</p>
+<hr size="6">
+<a name="Changes"></a>
+<a name="SEC25"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC24" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC26" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_5.html#SEC27" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 4.3 Changes </h2>
+
+<p>For the bored:
+</p>
+<p>First semi-public release. 12-Jul-95: version 0.1
+ Shared a version with Ashvin and Geoff.
+</p>
+<p>Changed  6-Dec-95: version 0.3
+ Ashvin's changes for note traversal added (C-c C-p and C-c C-n now
+move to the prev/next note in note-mode).
+ URL parsing changed so that &quot;localhost&quot; is optional.
+</p>
+<p>Changed 19-Dec-95:  version 0.4
+ More robust prev/next code added, both to handle going back and
+forward in the middle of chains through the index file, and to handle
+back/forward in a single file.
+ URL parsing changed so that notes-goto-index-entry correctly handles
+lookups on notes names such as &quot;252A&quot;.
+</p>
+<p>Changed 20-Dec-95: version 0.5.
+ Fixed a missing variable in notes-url.el.
+ Added a work-around to a bug in emacs-19.30's define-derived-mode.
+</p>
+<p>Changed 24-Dec-95: version 0.6.
+ Prev/next code re-re-written to be more robust.
+</p>
+<p>Changed 26-Dec-96:  version 0.7.
+ Bug fix release.
+</p>
+<p>Changed 23-Jan-96: version 0.8.
+ Initialization code added to set up a new note.
+New variable:  notes-bin-dir.
+</p>
+<p> I'm skipping version 0.9 because I erroneously release version 0.1
+as version 0.9 (only on the web, not on Usenet).
+</p>
+<p> I'm bumping from version &quot;0&quot; to version &quot;1&quot; since the code is has been
+in production use for more than a year by several people.  Minor
+numbers are the same.
+</p>
+<p>Changed 26-Mar-96: version 1.10.
+ Setup code completely re-written.
+ Several incompatible changes have been made:
+ - the lisp and Perl code must be installed via make install,
+not by copying.
+ - some data is specified in a .notesrc file; copy and modify sample.notesrc.
+ - several internal elisp changes.
+ - catsubject added (bound to C-cC-s):  collect all notes about the
+current subject.
+ - new notes-files are initialized with fields based on the prior
+day's notes; see mknew for details.
+ - daily_work is gone; mkall is rewritten to use .notesrc.
+</p>
+<p>Changed 29-Apr-96: version 1.11.
+ Real documentation.
+ Mknew caching added.
+</p>
+<p>Changed  9-Aug-96: version 1.12.
+ Added notesinit to do all setup for new users.
+</p>
+<p>Changed 24-Aug-96: version 1.13.
+ Minor documentation fixes.
+</p>
+<p>Changed 20-Dec-97: version 1.14.
+Autoconf support.
+</p>
+<p>Fontification of the index buffer is now pre-computed in perl
+other than done when the file is needed (in elisp with slow regular
+expressions).  2000-line index files are now 1-2 seconds rather than
+15-30 on a 100MHz Pentium.  If necessary (the
+pre-computed version isn't up-to-date) we fall back on the slower
+code.
+</p>
+<p>Related work improved (suggestion by David Weisman &lt;weisman@app1.osf.org&gt;).
+</p>
+<p>Documentation improvement (problem found by Martin L. Smith
+&lt;martin@ner.com&gt;).
+</p>
+<p>Installation improved (code by Jason Bastek &lt;jason@aai.com&gt;).
+</p>
+<p>Bug in notes-index mode with subjects containing colons fixed (johnh).
+</p>
+<p>Encryption now supports mailcrypt.el.
+</p>
+<p>Support for emacs 20 (a small font-lock change).
+</p>
+<p>Changed  5-Jan-98: version 1.15.
+Bug in decryption for non-PAM users fixed
+ (suggestion by Kevin Davidson &lt;tkld@quadstone.com&gt;).
+</p>
+<p>Y2K statement added
+ (suggestion by Kevin Davidson &lt;tkld@quadstone.com&gt;).
+</p>
+<p>Pointer to mailcrypt added (as a supported encryption package).
+Problem pointed out by K. Ueda &lt;kueda@jupiter.qse.tohoku.ac.jp&gt;.
+</p>
+<p>Changed  4-Nov-98: version 1.16.
+Bug in kill-ring handling of notes-old-underline-line
+ fixed by Tim Potter &lt;timp@jna.com.au&gt;.
+Bug in whitespace handling after PGP encryption fixed by Tim Potter.
+Bugs in handling of entries with hash signs in their name fixed
+ (found by Tim Potter).
+Fontification of index buffer further improved
+ (mapcar is your friend).
+Xemacs support added based on code contributed by Ramesh Govindan.
+</p>
+<p>Changed 28-Feb-99: version 1.17:
+Improvement:  notes-electric-return now fixes up the prev/next links
+ of new entries (only).  Code contributed by
+ Takashi Nishimoto.
+</p>
+<p>Bug fix:  reversed options -batch and -q in configure.in to placate
+ XEmacs 20.0; changed notesinit to not downcase the pathname
+ (bugs found by Thierry Bezecourt).
+</p>
+<p>Clarification: Autofilling of new notes more clear in the manual (hopefully,
+ suggested by Solofo Ramangalahy).
+</p>
+<p>Bug fix:  a y2k bug in was found and fixed in mkindex.  Sigh.
+</p>
+<p>New:  Two mailing lists for notes-mode have been created:
+&lsquo;<tt>notes-mode-announce@heidemann.la.ca.us</tt>&rsquo; and 
+&lsquo;<tt>notes-mode-talk@heidemann.la.ca.us</tt>&rsquo;.
+Send the line &ldquo;subscribe notes-mode-announce&rdquo;
+(or &ldquo;subscribe notes-mode-talk&rdquo;)
+to &lsquo;<tt>majordomo@heidemann.la.ca.us</tt>&rsquo;
+to join them.
+[<em>These instructions are now superceeded; to subscribe, go to
+&lsquo;<tt>http://www.heidemann.la.ca.us/mailman/listinfo/notes-mode-talk</tt>&rsquo;
+and
+&lsquo;<tt>http://www.heidemann.la.ca.us/mailman/listinfo/notes-mode-announce</tt>&rsquo;.</em>]
+</p>
+<p>Changed  6-Oct-99: version 1.18:
+Bug fix:  handling of electric-prevnext is better when there are
+ existing prev/next links.
+</p> 
+<p>Clarification: I added some pointers in the code to the installation
+ instructions.  (Apparently people can't RTF README.)
+</p>
+<p>Extension: mailcrypt-3.5.x suported including pgp, pgp5 and gpg.
+</p>
+<p>Changed (date 23-Dec-00): version 1.19:
+Bug fix (cosmetic): suppress comments in encrypted nodes.
+</p>
+<p>Install fixes from Kannan Varadhan: elisp directories changed on install.
+</p>
+<p>Added C-j as a synonym for RET in notes-mode to parallel C++ or perl mode.
+(Suggested by Fred Jaggi &lsquo;<tt>jaggi@rsn.hp.com</tt>&rsquo;.)
+</p>
+<p>Outline-minor-mode support added and documented.
+(Suggested by Tim Carroll &lsquo;<tt>tim@boomboom.com</tt>&rsquo;.)
+</p>
+<p>Bug/typo fixes in gpg support
+(Contributed by William A. Perkins &lsquo;<tt>wa_perkins@pnl.gov</tt>&rsquo;,
+with separate patches from Knut Anders Hatlen &lsquo;<tt>kahatlen@online.no</tt>&rsquo;.)
+</p>
+<p>Installation improvements suggested by Christophe Troestler
+&lsquo;<tt>Ch.Troestler@linkline.be</tt>&rsquo;:
+use install-info to update the info dir,
+warn users of &ndash;prefix that lisp files go elsewhere.
+</p>
+<p>Changed (date  1-Feb-01): version 1.20:
+Bug fix: missing file notes-first.el added to the distribution.
+(Bug found by Michael Totschnig &lsquo;<tt>michaelt@supernet.ca</tt>&rsquo;.)
+</p>
+<p>Changed ( 5-Dec-01): version 1.21:
+(backed-out&mdash;didn't work with spaced URLs) 
+URL lookup now uses thing-at-point.
+</p>
+<p>Fix to make notes-mode work with emacs-21.1
+(Fix from Klaus Zeitler  &lsquo;<tt>kzeitler@lucent.com</tt>&rsquo;.)
+</p>
+<p>Changed ( 3-Jan-02): version 1.22:
+Several bugs in &lsquo;<tt>notesinit</tt>&rsquo; for stricter Perl implementations
+(bug found by Paul Craven&quot; &lsquo;<tt>pcraven@yorku.ca</tt>&rsquo;,
+and Kasper van Wijk &lsquo;<tt>kasper@acoustics.mines.edu</tt>&rsquo;)
+and to make it run cleanly more often.
+</p>
+<p>Notes-first now autoinitializes notes mode from emacs.
+(As instisted by rms, unfortunately about two years later than requested.)
+</p>
+
+<p>Changed (20-Feb-05): version 1.23:
+Outline mode is now forcebly turned on to avoid interactions
+with user's text-mode hooks
+(bug and fix from Nils Ackermann &lsquo;<tt>nils@nieback.de</tt>&rsquo;).
+</p>
+<p>Install bug involving ordering of scripts and byte-compilation
+fixed (bug and fix from Mark Allman &lsquo;<tt>mallman@grc.nasa.gov</tt>&rsquo;).
+</p>
+<p>Fix obscure bug in configure, reported by Klaus Zeitler &lsquo;<tt>kzeitler@lucent.com</tt>&rsquo;.
+</p>
+<p>Fix for notes-summarize-subject when no subject is specified (bug and fix
+from Geoff Kuenning).
+</p>
+<p>Changed (14-Jan-06): version 1.24:
+</p>
+<p>install-info bug documented with the Debian install-info
+(bug reported by Aaron Falk &lsquo;<tt>falk@isi.edu</tt>&rsquo;).
+</p>
+<p>Automatic date completion in new days is now done in the current
+locale, so it should now work for non-English languages.  Bug reported
+by Torsten Bronger &lsquo;<tt>bronger@physik.rwth-aachen.de</tt>&rsquo;.
+</p>
+<p>Fixed a bug in mkindexcache, triggered by subjects with percent signs
+in them.  Bug reported by Philip Austin &lsquo;<tt>paustin@eos.ubc.ca</tt>&rsquo;.
+</p>
+<p>We're a bit more robust about subjects, I hope.  Warnings should
+appear about embedded number signs, and leading spaces should be
+filtered.  Bug reported by Philip Austin &lsquo;<tt>paustin@eos.ubc.ca</tt>&rsquo;.
+</p>
+<p>Notes-mode now dervies from indented-text-mode rather than
+paragraph-indent-text mode.  Unfortunatley this is not customizable
+because of limitations of define-derived-mode.  Change suggested by
+Aaron Falk &lsquo;<tt>falk@isi.edu</tt>&rsquo;.
+</p>
+<p>Provide better hints about how to get started after installation or
+running notes-mode in emacs for the first time.
+</p>
+<p>In notes init, the default path for dir was the full path, not the tilde
+version of the path.  Now it defaults to using tidle for home
+directory.  Bug reported by Mark Allman &lsquo;<tt>allman@icir.org</tt>&rsquo;.
+</p>
+<p>Changed (26-May-06): version 1.25:
+</p>
+<p>fixed a bug in the release tar.gz file that had a additional copies
+copy nested.
+</p>
+<p>Changed (30-Jun-08): version 1.26:
+</p>
+<p>Force unicode I/O in &lsquo;<tt>mkindexcache</tt>&rsquo; to fix highlighting mis-alignment
+when using emacs-21 with unicode subject lines.
+</p>
+<p>Changed mkprevnext and mkrawindex to optionally take the list of notes files
+to index from stdin rather than from the command line.  Yes, I finally
+have 4093 notes files, overflowing the Unix command line buffer.
+</p>
+<p>Changes notes-mode.el to put path in quotes, allowing spaces to appear in home directory names (bug fix from Ulrich Herbst).
+</p>
+<p>Added a suggested features section.
+</p>
+<p>Changed ( 8-Aug-08): version 1.27:
+</p>
+<p>Change I/O in &lsquo;<tt>mkindexcache</tt>&rsquo; to use locale (the sadly correct thing)
+rather than forcing utf-8 (the Righteous Path).
+Bug report from Geoff Kuenning, a man with an older Unix environment than I.
+</p>
+
+<hr size="6">
+<a name="Suggested-features"></a>
+<a name="SEC26"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC25" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_5.html#SEC27" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#SEC22" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_5.html#SEC27" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section"> 4.4 Suggested features </h2>
+
+<p>Features suggested by users but not yet implemented:
+</p>
+<p>21-Feb-08: (from Xavier Maillard): should support &ldquo;disconnected&rdquo; notes that
+are indexed but not date-based.
+</p>
+<p>21-Feb-08: (from John Heidemann): should switch all notes files to have an extension (maybe &lsquo;<tt>.notes</tt>&rsquo;).
+</p>
+
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_5.html#SEC27" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+  This document was generated by <em>John Heidemann</em> on <em>August, 8 2008</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/packages/notes-mode/HTML/notes-mode/notes-mode_5.html b/packages/notes-mode/HTML/notes-mode/notes-mode_5.html
new file mode 100644 (file)
index 0000000..7bb3c6b
--- /dev/null
@@ -0,0 +1,124 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on August, 8 2008 by texi2html 1.78 -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>Notes-mode: 5. Installation</title>
+
+<meta name="description" content="Notes-mode: 5. Installation">
+<meta name="keywords" content="Notes-mode: 5. Installation">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="Installation"></a>
+<a name="SEC27"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode_4.html#SEC26" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode_4.html#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1 class="chapter"> 5. Installation </h1>
+
+<p>To install notes-mode,
+</p>
+<ol>
+<li>
+Unpack and extract the distribution
+(gunzip notes-mode-xxx.tar.gz; tar xvf notes-mode-xxx.tar; cd notes-mode-xxx).
+
+</li><li>
+Run configure (./configure).
+
+</li><li>
+Type &ldquo;make install&rdquo;.
+</li></ol>
+
+<p>(To control what's installed where, use &ndash;prefix=/where, or
+&ndash;with-lisp-dir=/where, &ndash;datadir=/where (for scripts),
+and &ndash;infodir=/where.)
+</p>
+<p>For each user:
+</p><ol>
+<li>
+Run notesinit
+</li></ol>
+
+<p>If you have problems with paths being incorrect, please be aware that
+you <em>cannot</em> run notes directly out of where you untar it.  The
+installation process customizes the programs for where things are on
+your system.
+Make sure you move out of the directory where you untarred it
+before running it.
+</p>
+
+<p>The most recent distribution of notes-mode 
+ is always available via
+ &lsquo;<tt>http://www.isi.edu/~johnh/SOFTWARE/NOTES_MODE/</tt>&rsquo;.
+</p>
+
+
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode_4.html#SEC22" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+  This document was generated by <em>John Heidemann</em> on <em>August, 8 2008</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/packages/notes-mode/HTML/notes-mode/notes-mode_6.html b/packages/notes-mode/HTML/notes-mode/notes-mode_6.html
new file mode 100644 (file)
index 0000000..34ee2aa
--- /dev/null
@@ -0,0 +1,149 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on August, 8 2008 by texi2html 1.78 -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>Notes-mode: Keystroke index</title>
+
+<meta name="description" content="Notes-mode: Keystroke index">
+<meta name="keywords" content="Notes-mode: Keystroke index">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="Keystroke-index"></a>
+<a name="SEC28"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode_5.html#SEC27" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_7.html#SEC29" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode_5.html#SEC27" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_7.html#SEC29" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1 class="unnumbered"> Keystroke index </h1>
+
+<p>This index lists notes-mode keystrokes.
+</p>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#SEC28_0" class="summary-letter"><b>C</b></a>
+ &nbsp; 
+<a href="#SEC28_1" class="summary-letter"><b>M</b></a>
+ &nbsp; 
+<a href="#SEC28_2" class="summary-letter"><b>O</b></a>
+ &nbsp; 
+<a href="#SEC28_3" class="summary-letter"><b>R</b></a>
+ &nbsp; 
+<a href="#SEC28_4" class="summary-letter"><b>S</b></a>
+ &nbsp; 
+<a href="#SEC28_5" class="summary-letter"><b>T</b></a>
+ &nbsp; 
+</td></tr></table>
+<table border="0" class="index-ky">
+<tr><td></td><th align="left">Index Entry</th><th align="left"> Section</th></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC28_0">C</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#IDX36"><code>C-c C-d</code></a></td><td valign="top"><a href="notes-mode_3.html#SEC18">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#IDX35"><code>C-c C-e</code></a></td><td valign="top"><a href="notes-mode_3.html#SEC18">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#IDX20"><code>C-c C-i</code></a></td><td valign="top"><a href="notes-mode_3.html#SEC16">3.1.1 Getting around</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#IDX26"><code>C-c C-k</code></a></td><td valign="top"><a href="notes-mode_3.html#SEC16">3.1.1 Getting around</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#IDX21"><code>C-c C-n</code></a></td><td valign="top"><a href="notes-mode_3.html#SEC16">3.1.1 Getting around</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#IDX22"><code>C-c C-p</code></a></td><td valign="top"><a href="notes-mode_3.html#SEC16">3.1.1 Getting around</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#IDX28"><code>C-c C-s</code></a></td><td valign="top"><a href="notes-mode_3.html#SEC17">3.1.2 Subject summary</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#IDX41"><code>C-c C-s</code></a></td><td valign="top"><a href="notes-mode_3.html#SEC20">3.2 Notes indices</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#IDX23"><code>C-c&lt;RTN&gt;</code></a></td><td valign="top"><a href="notes-mode_3.html#SEC16">3.1.1 Getting around</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC28_1">M</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#IDX24"><code>M-C-a</code></a></td><td valign="top"><a href="notes-mode_3.html#SEC16">3.1.1 Getting around</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#IDX25"><code>M-C-e</code></a></td><td valign="top"><a href="notes-mode_3.html#SEC16">3.1.1 Getting around</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#IDX11"><code>mouse-2</code></a></td><td valign="top"><a href="notes-mode_2.html#SEC12">2.3 The notes index</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC28_2">O</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#IDX40"><code>o</code></a></td><td valign="top"><a href="notes-mode_3.html#SEC20">3.2 Notes indices</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC28_3">R</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#IDX3"><code>RTN</code></a></td><td valign="top"><a href="notes-mode_2.html#SEC11">2.2 A notes file</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#IDX12"><code>RTN</code></a></td><td valign="top"><a href="notes-mode_2.html#SEC12">2.3 The notes index</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC28_4">S</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#IDX8"><code>S-mouse-2</code></a></td><td valign="top"><a href="notes-mode_2.html#SEC11">2.2 A notes file</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC28_5">T</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#IDX4"><code>TAB</code></a></td><td valign="top"><a href="notes-mode_2.html#SEC11">2.2 A notes file</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+</table>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#SEC28_0" class="summary-letter"><b>C</b></a>
+ &nbsp; 
+<a href="#SEC28_1" class="summary-letter"><b>M</b></a>
+ &nbsp; 
+<a href="#SEC28_2" class="summary-letter"><b>O</b></a>
+ &nbsp; 
+<a href="#SEC28_3" class="summary-letter"><b>R</b></a>
+ &nbsp; 
+<a href="#SEC28_4" class="summary-letter"><b>S</b></a>
+ &nbsp; 
+<a href="#SEC28_5" class="summary-letter"><b>T</b></a>
+ &nbsp; 
+</td></tr></table>
+
+
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode_5.html#SEC27" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_7.html#SEC29" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+  This document was generated by <em>John Heidemann</em> on <em>August, 8 2008</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/packages/notes-mode/HTML/notes-mode/notes-mode_7.html b/packages/notes-mode/HTML/notes-mode/notes-mode_7.html
new file mode 100644 (file)
index 0000000..eb20b12
--- /dev/null
@@ -0,0 +1,220 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on August, 8 2008 by texi2html 1.78 -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>Notes-mode: Concept index</title>
+
+<meta name="description" content="Notes-mode: Concept index">
+<meta name="keywords" content="Notes-mode: Concept index">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="Concept-index"></a>
+<a name="SEC29"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[ &gt; ]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[ &gt;&gt; ]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1 class="unnumbered"> Concept index </h1>
+
+<p>This index lists notes-mode concepts.
+</p>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#SEC29_0" class="summary-letter"><b>.</b></a>
+ &nbsp; 
+<br>
+<a href="#SEC29_1" class="summary-letter"><b>C</b></a>
+ &nbsp; 
+<a href="#SEC29_2" class="summary-letter"><b>D</b></a>
+ &nbsp; 
+<a href="#SEC29_3" class="summary-letter"><b>E</b></a>
+ &nbsp; 
+<a href="#SEC29_4" class="summary-letter"><b>F</b></a>
+ &nbsp; 
+<a href="#SEC29_5" class="summary-letter"><b>I</b></a>
+ &nbsp; 
+<a href="#SEC29_6" class="summary-letter"><b>K</b></a>
+ &nbsp; 
+<a href="#SEC29_7" class="summary-letter"><b>M</b></a>
+ &nbsp; 
+<a href="#SEC29_8" class="summary-letter"><b>N</b></a>
+ &nbsp; 
+<a href="#SEC29_9" class="summary-letter"><b>P</b></a>
+ &nbsp; 
+<a href="#SEC29_10" class="summary-letter"><b>R</b></a>
+ &nbsp; 
+<a href="#SEC29_11" class="summary-letter"><b>S</b></a>
+ &nbsp; 
+<a href="#SEC29_12" class="summary-letter"><b>T</b></a>
+ &nbsp; 
+<a href="#SEC29_13" class="summary-letter"><b>U</b></a>
+ &nbsp; 
+</td></tr></table>
+<table border="0" class="index-cp">
+<tr><td></td><th align="left">Index Entry</th><th align="left"> Section</th></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC29_0">.</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#SEC21">.notesrc</a></td><td valign="top"><a href="notes-mode_3.html#SEC21">3.3 Notes-mode configuration</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC29_1">C</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#SEC21">configuration</a></td><td valign="top"><a href="notes-mode_3.html#SEC21">3.3 Notes-mode configuration</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#SEC19">conventions</a></td><td valign="top"><a href="notes-mode_3.html#SEC19">3.1.4 Useful conventions</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#IDX13">Crontab</a></td><td valign="top"><a href="notes-mode_2.html#SEC12">2.3 The notes index</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC29_2">D</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#SEC18">Decryption</a></td><td valign="top"><a href="notes-mode_3.html#SEC18">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#SEC13">Directory hierarchy</a></td><td valign="top"><a href="notes-mode_2.html#SEC13">2.4 The notes directories</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC29_3">E</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#SEC18">Encryption</a></td><td valign="top"><a href="notes-mode_3.html#SEC18">3.1.3 Encryption</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC29_4">F</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#IDX10">Font matter</a></td><td valign="top"><a href="notes-mode_2.html#SEC11">2.2 A notes file</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC29_5">I</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#IDX27">imenu</a></td><td valign="top"><a href="notes-mode_3.html#SEC16">3.1.1 Getting around</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#IDX17">Intermediate directories</a></td><td valign="top"><a href="notes-mode_2.html#SEC13">2.4 The notes directories</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC29_6">K</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#IDX37">key-id</a></td><td valign="top"><a href="notes-mode_3.html#SEC18">3.1.3 Encryption</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC29_7">M</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#IDX34">mailcrypt</a></td><td valign="top"><a href="notes-mode_3.html#SEC18">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#IDX14">mkall</a></td><td valign="top"><a href="notes-mode_2.html#SEC12">2.3 The notes index</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#SEC19">mknew</a></td><td valign="top"><a href="notes-mode_3.html#SEC19">3.1.4 Useful conventions</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC29_8">N</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#SEC13">Notes directories</a></td><td valign="top"><a href="notes-mode_2.html#SEC13">2.4 The notes directories</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#IDX1">Notes entries</a></td><td valign="top"><a href="notes-mode_2.html#SEC11">2.2 A notes file</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#IDX19">Notes file permissions</a></td><td valign="top"><a href="notes-mode_2.html#SEC13">2.4 The notes directories</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#SEC11">Notes files</a></td><td valign="top"><a href="notes-mode_2.html#SEC11">2.2 A notes file</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#IDX18">Notes files</a></td><td valign="top"><a href="notes-mode_2.html#SEC13">2.4 The notes directories</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#IDX9">Notes files, font matter</a></td><td valign="top"><a href="notes-mode_2.html#SEC11">2.2 A notes file</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#SEC12">Notes index</a></td><td valign="top"><a href="notes-mode_2.html#SEC12">2.3 The notes index</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#IDX5">Notes links</a></td><td valign="top"><a href="notes-mode_2.html#SEC11">2.2 A notes file</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#IDX2">Notes subjects</a></td><td valign="top"><a href="notes-mode_2.html#SEC11">2.2 A notes file</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#IDX39">notes-mode-initialization-program</a></td><td valign="top"><a href="notes-mode_3.html#SEC19">3.1.4 Useful conventions</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#SEC10">notesinit</a></td><td valign="top"><a href="notes-mode_2.html#SEC10">2.1 Getting started</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC29_9">P</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#IDX32">PAM</a></td><td valign="top"><a href="notes-mode_3.html#SEC18">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#IDX30">PGP</a></td><td valign="top"><a href="notes-mode_3.html#SEC18">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#IDX33">PGP Augmented Messaging</a></td><td valign="top"><a href="notes-mode_3.html#SEC18">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#IDX31">Pretty good privacy</a></td><td valign="top"><a href="notes-mode_3.html#SEC18">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#IDX6">Pseudo-URLs</a></td><td valign="top"><a href="notes-mode_2.html#SEC11">2.2 A notes file</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC29_10">R</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#IDX15">re-indexing</a></td><td valign="top"><a href="notes-mode_2.html#SEC12">2.3 The notes index</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#IDX16">Root directory</a></td><td valign="top"><a href="notes-mode_2.html#SEC13">2.4 The notes directories</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC29_11">S</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#SEC10">setup</a></td><td valign="top"><a href="notes-mode_2.html#SEC10">2.1 Getting started</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#IDX29">Subject summary</a></td><td valign="top"><a href="notes-mode_3.html#SEC17">3.1.2 Subject summary</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC29_12">T</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#IDX38">Today</a></td><td valign="top"><a href="notes-mode_3.html#SEC19">3.1.4 Useful conventions</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="SEC29_13">U</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#IDX7">URLs</a></td><td valign="top"><a href="notes-mode_2.html#SEC11">2.2 A notes file</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+</table>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#SEC29_0" class="summary-letter"><b>.</b></a>
+ &nbsp; 
+<br>
+<a href="#SEC29_1" class="summary-letter"><b>C</b></a>
+ &nbsp; 
+<a href="#SEC29_2" class="summary-letter"><b>D</b></a>
+ &nbsp; 
+<a href="#SEC29_3" class="summary-letter"><b>E</b></a>
+ &nbsp; 
+<a href="#SEC29_4" class="summary-letter"><b>F</b></a>
+ &nbsp; 
+<a href="#SEC29_5" class="summary-letter"><b>I</b></a>
+ &nbsp; 
+<a href="#SEC29_6" class="summary-letter"><b>K</b></a>
+ &nbsp; 
+<a href="#SEC29_7" class="summary-letter"><b>M</b></a>
+ &nbsp; 
+<a href="#SEC29_8" class="summary-letter"><b>N</b></a>
+ &nbsp; 
+<a href="#SEC29_9" class="summary-letter"><b>P</b></a>
+ &nbsp; 
+<a href="#SEC29_10" class="summary-letter"><b>R</b></a>
+ &nbsp; 
+<a href="#SEC29_11" class="summary-letter"><b>S</b></a>
+ &nbsp; 
+<a href="#SEC29_12" class="summary-letter"><b>T</b></a>
+ &nbsp; 
+<a href="#SEC29_13" class="summary-letter"><b>U</b></a>
+ &nbsp; 
+</td></tr></table>
+
+
+
+
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[ &gt;&gt; ]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+  This document was generated by <em>John Heidemann</em> on <em>August, 8 2008</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/packages/notes-mode/HTML/notes-mode/notes-mode_abt.html b/packages/notes-mode/HTML/notes-mode/notes-mode_abt.html
new file mode 100644 (file)
index 0000000..c44cb63
--- /dev/null
@@ -0,0 +1,167 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on August, 8 2008 by texi2html 1.78 -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>Notes-mode: About This Document</title>
+
+<meta name="description" content="Notes-mode: About This Document">
+<meta name="keywords" content="Notes-mode: About This Document">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="SEC_About"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1>About This Document</h1>
+<p>
+  This document was generated by <em>John Heidemann</em> on <em>August, 8 2008</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78</em></a>.
+</p>
+<p>
+  The buttons in the navigation panels have the following meaning:
+</p>
+<table border="1">
+  <tr>
+    <th> Button </th>
+    <th> Name </th>
+    <th> Go to </th>
+    <th> From 1.2.3 go to</th>
+  </tr>
+  <tr>
+    <td align="center"> [ &lt; ] </td>
+    <td align="center">Back</td>
+    <td>Previous section in reading order</td>
+    <td>1.2.2</td>
+  </tr>
+  <tr>
+    <td align="center"> [ &gt; ] </td>
+    <td align="center">Forward</td>
+    <td>Next section in reading order</td>
+    <td>1.2.4</td>
+  </tr>
+  <tr>
+    <td align="center"> [ &lt;&lt; ] </td>
+    <td align="center">FastBack</td>
+    <td>Beginning of this chapter or previous chapter</td>
+    <td>1</td>
+  </tr>
+  <tr>
+    <td align="center"> [ Up ] </td>
+    <td align="center">Up</td>
+    <td>Up section</td>
+    <td>1.2</td>
+  </tr>
+  <tr>
+    <td align="center"> [ &gt;&gt; ] </td>
+    <td align="center">FastForward</td>
+    <td>Next chapter</td>
+    <td>2</td>
+  </tr>
+  <tr>
+    <td align="center"> [Top] </td>
+    <td align="center">Top</td>
+    <td>Cover (top) of document</td>
+    <td> &nbsp; </td>
+  </tr>
+  <tr>
+    <td align="center"> [Contents] </td>
+    <td align="center">Contents</td>
+    <td>Table of contents</td>
+    <td> &nbsp; </td>
+  </tr>
+  <tr>
+    <td align="center"> [Index] </td>
+    <td align="center">Index</td>
+    <td>Index</td>
+    <td> &nbsp; </td>
+  </tr>
+  <tr>
+    <td align="center"> [ ? ] </td>
+    <td align="center">About</td>
+    <td>About (help)</td>
+    <td> &nbsp; </td>
+  </tr>
+</table>
+
+<p>
+  where the <strong> Example </strong> assumes that the current position is at <strong> Subsubsection One-Two-Three </strong> of a document of the following structure:
+</p>
+
+<ul>
+  <li> 1. Section One
+    <ul>
+      <li>1.1 Subsection One-One
+        <ul>
+          <li>...</li>
+        </ul>
+      </li>
+      <li>1.2 Subsection One-Two
+        <ul>
+          <li>1.2.1 Subsubsection One-Two-One</li>
+          <li>1.2.2 Subsubsection One-Two-Two</li>
+          <li>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp;
+            <strong>&lt;== Current Position </strong></li>
+          <li>1.2.4 Subsubsection One-Two-Four</li>
+        </ul>
+      </li>
+      <li>1.3 Subsection One-Three
+        <ul>
+          <li>...</li>
+        </ul>
+      </li>
+      <li>1.4 Subsection One-Four</li>
+    </ul>
+  </li>
+</ul>
+
+<hr size="1">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+  This document was generated by <em>John Heidemann</em> on <em>August, 8 2008</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/packages/notes-mode/HTML/notes-mode/notes-mode_fot.html b/packages/notes-mode/HTML/notes-mode/notes-mode_fot.html
new file mode 100644 (file)
index 0000000..ab85b1c
--- /dev/null
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on August, 8 2008 by texi2html 1.78 -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>Notes-mode: Footnotes</title>
+
+<meta name="description" content="Notes-mode: Footnotes">
+<meta name="keywords" content="Notes-mode: Footnotes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="SEC_Foot"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1>Footnotes</h1>
+<h3><a name="FOOT1" href="notes-mode_1.html#DOCF1">(1)</a></h3>
+<p>Trademarked, in Great Britain, Sunone tells me.
+</p><h3><a name="FOOT2" href="notes-mode_1.html#DOCF2">(2)</a></h3>
+<p>I consider myself pretty anal about this subject,
+often typing notes in from paper after-the-fact,
+and <em>I</em> certainly don't manage to back-enter
+my notes all time time.
+</p><h3><a name="FOOT3" href="notes-mode_1.html#DOCF3">(3)</a></h3>
+
+<p>On the other hand, some folks at MIT are working
+on this problem from both the hardware and the social side of
+things (&lsquo;<tt>http://wearables.www.media.mit.edu/projects/wearables/</tt>&rsquo;)
+(Perhaps they have wild parties with computers, too.)
+</p><h3><a name="FOOT4" href="notes-mode_1.html#DOCF4">(4)</a></h3>
+<p>My hat is off to Rosa Parks
+and the many other normal people who triggered landmark cases.
+</p><h3><a name="FOOT5" href="notes-mode_1.html#DOCF5">(5)</a></h3>
+<p>If you think I'm missing an alternative, please let me know.
+</p><hr size="1">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+  This document was generated by <em>John Heidemann</em> on <em>August, 8 2008</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/packages/notes-mode/HTML/notes-mode/notes-mode_toc.html b/packages/notes-mode/HTML/notes-mode/notes-mode_toc.html
new file mode 100644 (file)
index 0000000..4b4cfc9
--- /dev/null
@@ -0,0 +1,111 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on August, 8 2008 by texi2html 1.78 -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>Notes-mode: Table of Contents</title>
+
+<meta name="description" content="Notes-mode: Table of Contents">
+<meta name="keywords" content="Notes-mode: Table of Contents">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.78">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="SEC_Contents"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="TOC1" href="notes-mode_1.html#SEC1">1. Introduction</a>
+  <ul class="toc">
+    <li><a name="TOC2" href="notes-mode_1.html#SEC2">1.1 What is it?</a></li>
+    <li><a name="TOC3" href="notes-mode_1.html#SEC3">1.2 Why keep notes at all?</a></li>
+    <li><a name="TOC4" href="notes-mode_1.html#SEC4">1.3 Why keep notes on-line?</a></li>
+    <li><a name="TOC5" href="notes-mode_1.html#SEC5">1.4 Why use notes-mode?</a></li>
+    <li><a name="TOC6" href="notes-mode_1.html#SEC6">1.5 Y2K Statement</a></li>
+    <li><a name="TOC7" href="notes-mode_1.html#SEC7">1.6 Related work</a></li>
+    <li><a name="TOC8" href="notes-mode_1.html#SEC8">1.7 Staying on top</a></li>
+  </ul></li>
+  <li><a name="TOC9" href="notes-mode_2.html#SEC9">2. Basics</a>
+  <ul class="toc">
+    <li><a name="TOC10" href="notes-mode_2.html#SEC10">2.1 Getting started</a></li>
+    <li><a name="TOC11" href="notes-mode_2.html#SEC11">2.2 A notes file</a></li>
+    <li><a name="TOC12" href="notes-mode_2.html#SEC12">2.3 The notes index</a></li>
+    <li><a name="TOC13" href="notes-mode_2.html#SEC13">2.4 The notes directories</a></li>
+  </ul></li>
+  <li><a name="TOC14" href="notes-mode_3.html#SEC14">3. Advanced Features</a>
+  <ul class="toc">
+    <li><a name="TOC15" href="notes-mode_3.html#SEC15">3.1 Notes files</a>
+    <ul class="toc">
+      <li><a name="TOC16" href="notes-mode_3.html#SEC16">3.1.1 Getting around</a></li>
+      <li><a name="TOC17" href="notes-mode_3.html#SEC17">3.1.2 Subject summary</a></li>
+      <li><a name="TOC18" href="notes-mode_3.html#SEC18">3.1.3 Encryption</a></li>
+      <li><a name="TOC19" href="notes-mode_3.html#SEC19">3.1.4 Useful conventions</a></li>
+    </ul></li>
+    <li><a name="TOC20" href="notes-mode_3.html#SEC20">3.2 Notes indices</a></li>
+    <li><a name="TOC21" href="notes-mode_3.html#SEC21">3.3 Notes-mode configuration</a></li>
+  </ul></li>
+  <li><a name="TOC22" href="notes-mode_4.html#SEC22">4. History</a>
+  <ul class="toc">
+    <li><a name="TOC23" href="notes-mode_4.html#SEC23">4.1 Notes-mode history</a></li>
+    <li><a name="TOC24" href="notes-mode_4.html#SEC24">4.2 Credits</a></li>
+    <li><a name="TOC25" href="notes-mode_4.html#SEC25">4.3 Changes</a></li>
+    <li><a name="TOC26" href="notes-mode_4.html#SEC26">4.4 Suggested features</a></li>
+  </ul></li>
+  <li><a name="TOC27" href="notes-mode_5.html#SEC27">5. Installation</a></li>
+  <li><a name="TOC28" href="notes-mode_6.html#SEC28">Keystroke index</a></li>
+  <li><a name="TOC29" href="notes-mode_7.html#SEC29">Concept index</a></li>
+</ul>
+</div>
+<hr size="1">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#SEC28" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+  This document was generated by <em>John Heidemann</em> on <em>August, 8 2008</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/packages/notes-mode/HTML/notes-mode_1.html b/packages/notes-mode/HTML/notes-mode_1.html
new file mode 100644 (file)
index 0000000..45f7ec2
--- /dev/null
@@ -0,0 +1,533 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on April 4, 2012 by texi2html 1.82
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+-->
+<head>
+<title>Notes-mode: 1. Introduction</title>
+
+<meta name="description" content="Notes-mode: 1. Introduction">
+<meta name="keywords" content="Notes-mode: 1. Introduction">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="Introduction"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#What-is-it_003f" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[ &lt;&lt; ]</td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_2.html#Basics" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Introduction-1"></a>
+<h1 class="chapter">1. Introduction</h1>
+
+<p>What is notes-mode and why should you (perhaps) use it?
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top"><a href="#What-is-it_003f">1.1 What is it?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                 
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Why-keep-notes-at-all_003f">1.2 Why keep notes at all?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">      
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Why-keep-notes-on_002dline_003f">1.3 Why keep notes on-line?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">     
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Why-use-notes_002dmode_003f">1.4 Why use notes-mode?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">         
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Y2K-Statement">1.5 Y2K Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Related-work">1.6 Related work</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Staying-on-top">1.7 Staying on top</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              
+</td></tr>
+</table>
+
+<hr size="6">
+<a name="What-is-it_003f"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Introduction" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Why-keep-notes-at-all_003f" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_2.html#Basics" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="What-is-it_003f-1"></a>
+<h2 class="section">1.1 What is it?</h2>
+
+<p>Notes-mode is an indexing system for on-line note-taking.
+Notes-mode is composed of two parts, the visible part,
+a major-mode for emacs to aid note-taking;
+and the invisible part,
+scripts which periodically index your notes for you.
+</p>
+<p>Note that notes-mode provides tools to <em>index</em> your notes,
+not to <em>search</em> them.
+(Other existing tools such as &lsquo;<tt>grep</tt>&rsquo;, &lsquo;<tt>agrep</tt>&rsquo;, and &lsquo;<tt>glimpse</tt>&rsquo;
+already allow file search.)
+</p>
+<p>A digression about indexing vs. searching:
+Indexing in this sense means
+organize them according to categories you give,
+while searching looks through all text for arbitrary strings.
+Drawing on the World Wide Web for examples,
+Yahoo (&lsquo;<tt>http://www.yahoo.com/</tt>&rsquo;) is an index,
+while Alta Vista (&lsquo;<tt>http://www.altavista.digital.com/</tt>&rsquo;)
+is a search-engine.
+In (potentially) more familiar terms,
+the yellow pages
+<a name="DOCF1" href="notes-mode_fot.html#FOOT1">(1)</a>
+are an index,
+while directory information (411 in the USA)
+is sort of a search-engine.
+</p>
+
+<hr size="6">
+<a name="Why-keep-notes-at-all_003f"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#What-is-it_003f" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Why-keep-notes-on_002dline_003f" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_2.html#Basics" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Why-keep-notes-at-all_003f-1"></a>
+<h2 class="section">1.2 Why keep notes at all?</h2>
+
+<p>So why should you use notes-mode?
+Well, first, consider why you should (perhaps)
+keep your notes on line.
+First,
+I assume that you take notes as part of your work or school.
+If you don&rsquo;t,
+you can stop reading now and go back to watching TV.
+</p>
+<p>If you keep notes, ask yourself why you keep them.
+Reasons vary for different people, but some include:
+</p>
+<ul>
+<li>
+To remember what is said or done.
+
+</li><li>
+To focus on what is important about what is said.
+
+</li><li>
+To provide proof of having done something
+at a particular time or date.
+
+</li><li>
+I know there were other reasons here,
+but they slipped my mind.
+</li></ul>
+
+
+<hr size="6">
+<a name="Why-keep-notes-on_002dline_003f"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Why-keep-notes-at-all_003f" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Why-use-notes_002dmode_003f" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_2.html#Basics" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Why-keep-notes-on_002dline_003f-1"></a>
+<h2 class="section">1.3 Why keep notes on-line?</h2>
+
+<p>OK, I&rsquo;ve talked you into keeping notes.
+Why do it on-line?
+Again, there are different reasons for different people.
+If you don&rsquo;t want to consider keeping your notes on-line,
+you&rsquo;re welcome to go back to your (clay tablets)
+paper notes.
+</p>
+<p>However, if you do much of your work on-line,
+or if you have portable computer,
+then you might want to consider keeping your notes on-line.
+</p>
+<ul>
+<li>
+It&rsquo;s faster to type than write,
+and possibly more legible at high speed.
+
+</li><li>
+Often information is already on-line.
+For example, in software development, bug reports,
+measurement results, and everything else that&rsquo;s useful
+is on-line.
+
+</li><li>
+You can take down more detail than you otherwise would
+(especially if the data is already on-line).
+Taking more copious notes can be helpful when you go back
+to figure out why that strange thing was happening.
+
+</li><li>
+On-line notes are easy to search.
+Full-text search with 
+grep, agrep, and glimpse are all much faster
+and are often more accurate than paging through paper notes
+looking for a particular keyword.
+
+</li><li>
+On-line notes are easy to index.
+(At least with notes-mode!)
+In addition to full-text search,
+it&rsquo;s helpful to organize notes by category.
+If you keep a table-of-contents of your paper notes,
+you are either extremely fastidious
+or a librarian (Nadia?).
+
+</li><li>
+You can keep all of your notes with you at all times
+(if you have a portable computer).
+Even at a page a day,
+paper notes quickly become bulky and awkward to carry around.
+On-line notes fit on your computer&rsquo;s hard disk,
+an extraordinarily compact medium
+by comparison.
+
+</li><li>
+Your notes can be automatically backed up.
+Paper notes can become damaged with time,
+and as a graduate student
+one of my fears was fire in Boelter Hall
+consuming all my research experiments
+and and therefore hopes of a degree.
+Electronic notes are extremely easy to duplicate
+and can be automatically backed up with the rest of your computer.
+(You <em>do</em> back up your computer, don&rsquo;t you?)
+
+</li></ul>
+
+<p>While these advantages are undoubtedly clear to any
+right-thinking computer user,
+it should be said that there are a few disadvantages 
+for on-line note-taking.
+</p>
+<ul>
+<li>
+If you don&rsquo;t have a computer with you most of the time,
+it&rsquo;s difficult take notes on-line (because you&rsquo;re off-line, of course).
+<a name="DOCF2" href="notes-mode_fot.html#FOOT2">(2)</a>
+
+</li><li>
+Computers require power.
+If your portable computer runs out of juice,
+you&rsquo;re on your own.
+Corollary:  watch your power, or bring paper.
+Better corollary:  watch your power, <em>and</em> bring paper.
+
+</li><li>
+Social limitations.
+It&rsquo;s not always socially acceptable to take notes-on-line.
+For example,
+at a party,
+few people would use a computer
+to take down the phone number of a person
+to whom they&rsquo;re attracted
+(at least, if they wanted the attraction to be mutual).
+<a name="DOCF3" href="notes-mode_fot.html#FOOT3">(3)</a>
+Sometimes other people find the sound of typing distracting.
+
+</li><li>
+Health issues.
+Repetitive stress injuries do occur
+writing (slower) by hand is at least 
+an alternate motion than typing.
+
+</li><li>
+Legal limitations.
+If you want to use your electronic notes
+to justify a patent or invention,
+you may be breaking legal ground.
+Being on the legal cutting-edge is rarely an easy thing
+for the person involved.<a name="DOCF4" href="notes-mode_fot.html#FOOT4">(4)</a>
+
+</li></ul>
+
+
+<hr size="6">
+<a name="Why-use-notes_002dmode_003f"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Why-keep-notes-on_002dline_003f" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Y2K-Statement" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_2.html#Basics" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Why-use-notes_002dmode_003f-1"></a>
+<h2 class="section">1.4 Why use notes-mode?</h2>
+
+<p>OK, I&rsquo;ve sold you on note-taking and even on on-line note-taking.
+What about notes-mode?
+Naturally,
+it slices, dices, and makes julienne fries.
+But wait, there&rsquo;s more:
+</p>
+<ul>
+<li>
+It automates indexing your notes,
+linking notes with the same subject together.
+
+</li><li>
+It supports embedded links,
+allowing you to manually link together different topics 
+and external files.
+
+</li><li>
+It includes a number of convenience-features in emacs.
+Subjects can be completed based on existing subjects.
+The usual emacs customization mechanisms are available.
+
+</li><li>
+Notes containing sensitive information can be encrypted.
+
+</li><li>
+Notes-mode seems better than the other, currently available alternatives.
+</li></ul>
+
+<p>What are the alternatives?  I&rsquo;m glad you asked.
+<a name="DOCF5" href="notes-mode_fot.html#FOOT5">(5)</a>
+</p>
+<ul>
+<li>
+<strong>HTML</strong>.
+HTML has better formatting capabilities than notes-mode,
+and it has excellent linking capabilities.
+Unfortunately,
+HTML&rsquo;s tags are fairly intrusive
+ (each is at least four characters long and most come with a pair),
+ tags can get confused with normal text,
+ errors in HTML can be bad (obscuring data),
+ and there&rsquo;s no automatic indexing feature
+ (at least with plain HTML).
+Besides,
+ all data should be kept as close to the ASCII from whence it came,
+ as God Intended (hi, Steve).
+
+</li><li>
+<strong>Word Processors</strong>.
+Word processors are strong in the formatting department,
+ but most don&rsquo;t really have linking capabilities,
+ and have poor or restricted indexing.
+
+</li></ul>
+
+<hr size="6">
+<a name="Y2K-Statement"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Why-use-notes_002dmode_003f" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Related-work" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_2.html#Basics" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Y2K-Statement-1"></a>
+<h2 class="section">1.5 Y2K Statement</h2>
+
+<p>Notes mode uses dates extensively,
+ both two-digit years and seconds-since-1970.
+However, notes-mode has been coded to function correctly through
+ the year 2038.
+</p>
+<p>To avoid problems with the year 2000, notes-mode assumes
+ that any two-digit years before &ldquo;70&rdquo; are 20xx, not 19xx.
+Notes-mode should therefore work correctly in both the year 1999 and 2000.
+</p>
+<p>(Notes-mode 1.17 released February 1999 fixes a lingering Y2K problem.)
+</p>
+<p>Because notes-mode uses seconds-since-1970 for some date calculations
+ it will fail beyond the year 2038 on computers with 32-bit integers.
+</p>
+<p>If I&rsquo;m still using notes-mode then on a 32-bit machine I&rsquo;ll see what I can do.
+</p>
+
+<hr size="6">
+<a name="Related-work"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Y2K-Statement" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Staying-on-top" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_2.html#Basics" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Related-work-1"></a>
+<h2 class="section">1.6 Related work</h2>
+
+<p>What would a document be without related work?
+</p>
+<p>Notes-mode is not related in any way to Lotus Notes.
+</p>
+<p>I am told (by David Weisman)
+ that it&rsquo;s something like the now defunct Lotus Agenda.
+</p>
+<p>Ashvin Goel, one of the contributors to notes-mode,
+ has gone off and done a from-scratch reimplementation
+ called records-mode.
+It&rsquo;s very similar to notes mode,
+ and emphasizes on-the-fly updates to entry links
+ but lacks a manual.
+You may want to check it out at
+ &lsquo;<tt>http://www.cse.ogi.edu/~ashvin/software.html</tt>&rsquo;.
+</p>
+<p>Hyperbole (by Bob Weiner) offers better linking facilities
+than notes-mode, but it has a bunch of stuff notes-mode doesn&rsquo;t need
+and it&rsquo;s missing notes-specific indexing provided by notes-mode.
+For people already using Hyperbole
+ it would be interesting to replace notes-mode&rsquo;s linking
+ with Hyperbole&rsquo;s.
+Contributions in this area are welcome, provided they make Hyperbole
+ optional.
+</p>
+<hr size="6">
+<a name="Staying-on-top"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Related-work" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_2.html#Basics" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Introduction" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_2.html#Basics" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Staying-on-top-1"></a>
+<h2 class="section">1.7 Staying on top</h2>
+
+<p>The most recent distribution of notes-mode 
+ is always available via
+ &lsquo;<tt>http://www.isi.edu/~johnh/SOFTWARE/NOTES_MODE/</tt>&rsquo;.
+</p>
+<p>After you&rsquo;ve installed notes mode you&rsquo;re encouraged to subscribe
+to the mailing lists.
+To subscribe, go to the web page
+Send the message &quot;subscribe&quot; to
+&lsquo;<tt>http://www.heidemann.la.ca.us/mailman/listinfo/notes-mode-announce</tt>&rsquo; or
+&lsquo;<tt>http://www.heidemann.la.ca.us/mailman/listinfo/notes-mode-talk</tt>&rsquo;.
+</p>
+<p>The announce list will contain only release announcements
+and so is guaranteed to be very low bandwidth.
+</p>
+
+
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_2.html#Basics" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+  This document was generated by <em>John Heidemann</em> on <em>April 4, 2012</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/packages/notes-mode/HTML/notes-mode_2.html b/packages/notes-mode/HTML/notes-mode_2.html
new file mode 100644 (file)
index 0000000..0f5af2d
--- /dev/null
@@ -0,0 +1,419 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on April 4, 2012 by texi2html 1.82
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+-->
+<head>
+<title>Notes-mode: 2. Basics</title>
+
+<meta name="description" content="Notes-mode: 2. Basics">
+<meta name="keywords" content="Notes-mode: 2. Basics">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="Basics"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode_1.html#Staying-on-top" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Getting-started" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode_1.html#Introduction" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_3.html#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Basics-1"></a>
+<h1 class="chapter">2. Basics</h1>
+
+<p>All you need to use notes-mode
+ in a chapter.
+(Except for installation, See section <a href="notes-mode_5.html#Installation">Installation</a>.)
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top"><a href="#Getting-started">2.1 Getting started</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             
+</td></tr>
+<tr><td align="left" valign="top"><a href="#A-notes-file">2.2 A notes file</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                
+</td></tr>
+<tr><td align="left" valign="top"><a href="#The-notes-index">2.3 The notes index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             
+</td></tr>
+<tr><td align="left" valign="top"><a href="#The-notes-directories">2.4 The notes directories</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">       
+</td></tr>
+</table>
+
+<hr size="6">
+<a name="Getting-started"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Basics" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#A-notes-file" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Basics" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_3.html#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Getting-started-1"></a>
+<h2 class="section">2.1 Getting started</h2>
+<a name="index-notesinit"></a>
+<a name="index-setup"></a>
+
+<p>To get started with notes-mode,
+ read the introduction this chapter,
+ then either:
+</p>
+<ul>
+<li>
+Start emacs, do 
+ <kbd>M-x</kbd> <code>load-library</code> <kbd>RET</kbd> <code>notes-mode</code> <kbd>RET</kbd>
+This approach will set up notes-mode with the default parameters.
+
+</li><li>
+OR, from the shell, 
+ run the program &lsquo;<tt>notesinit</tt>&rsquo;.
+This approach will ask you some questions about how you want to configure
+ notes mode.
+
+</li></ul>
+
+<p>Either way these should set up everything notes-mode needs.
+This program will modify your environment (as described in this section),
+ or it will give you the exact commands you should run yourself.
+</p>
+<p>After you&rsquo;ve done one of these,
+ start up emacs and note-away.
+I usually begin a
+ day of note-taking by running the command
+ <kbd>M-x</kbd> <code>notes-index-todays-link</code>
+ to jump directly to today&rsquo;s note.
+You may even wish to bind this to something,
+ perhaps with
+ <code>(define-key global-map &quot;\C-cn&quot; 'notes-index-todays-link)</code>
+ in your &lsquo;<tt>.emacs</tt>&rsquo;. 
+</p>
+<p>If you want to browse your existing notes,
+ you might instead want to edit the
+ &lsquo;<tt>~/NOTES/index</tt>&rsquo;.
+(What is a notes file and the index? Hurry up and finish
+ reading this chapter.) 
+</p>
+
+<hr size="6">
+<a name="A-notes-file"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Getting-started" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#The-notes-index" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Basics" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_3.html#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="A-notes-file-1"></a>
+<h2 class="section">2.2 A notes file</h2>
+
+<a name="index-Notes-files"></a>
+
+<p>The notes file is the focus of most of the activity in notes-mode,
+ it&rsquo;s where you take your notes.
+Notes files are mostly free-form text
+ broken up into <em>entries</em>.
+Here&rsquo;s an example:
+</p>
+<a name="index-Notes-entries"></a>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">8-Jun-95 Thursday
+-----------------
+
+* Today
+-------
+prev: &lt;none&gt;
+next: &lt;file:///~/NOTES/199506/950609#* Today&gt;
+
+next week - release notes-mode
+
+
+* Environment/notes
+-------------------
+
+I explained notes mode to Ashvin and Geoff.
+...
+</pre></td></tr></table>
+
+<p>Each entry has a subject-block, (maybe) some links, and then (maybe) some text.
+</p>
+<p>The subject-block must begin with an asterisk-space (<kbd>* </kbd>)
+ at the beginning of a line, followed by the subject itself.
+Subjects must be underlined with a row of dashes
+ (if they&rsquo;re not exact, that&rsquo;s OK;
+ notes-mode will fix them periodically).
+For convenience,
+ notes-mode will automatically add the underlines when you
+ hit <kbd>&lt;RTN&gt;</kbd> (<code>notes-electric-return</code>),
+ and <kbd>&lt;TAB&gt;</kbd> on a partially completed subject will
+ invoke completion based on indexed subjects (<code>notes-complete-subject</code>).
+<a name="index-Notes-subjects"></a>
+<a name="index-RTN"></a>
+<a name="index-TAB"></a>
+</p>
+<p>Following the subject may be links.
+(In the example, the &ldquo;Today&rdquo; entry has links,
+ the &ldquo;Environment/notes&rdquo; entry doesn&rsquo;t.)
+These links will be automatically updated by notes-mode
+ when your notes are re-indexed;
+ just leave a blank line when writing the note.
+<a name="index-Notes-links"></a>
+</p>
+<p>Links are made with pseudo-URLs,
+ sort of like those in the World Wide Web. 
+Any of these URLs can be followed in notes-mode files
+ by clicking <kbd>S-mouse-2</kbd> on the pseudo-URL
+ (<code>notes-w3-follow-link-mouse</code>).
+<a name="index-Pseudo_002dURLs"></a>
+<a name="index-URLs"></a>
+<a name="index-S_002dmouse_002d2"></a>
+</p>
+<p>Finally comes the text.
+Go wild, but just don&rsquo;t include text that looks like a subject.
+You can embed pseudo-URLs to link notes together manually.
+</p>
+<p>The more anal of you may have noticed
+ that the lines before the first subject
+ are not part of any entry.
+These lines are
+ <em>front matter</em>.
+They&rsquo;re not usually used for much,
+ but they can be a good place to label the file.
+<a name="index-Notes-files_002c-font-matter"></a>
+<a name="index-Font-matter"></a>
+</p>
+<p>There are a number of useful conventions
+ that can be adopted to organize your notes.
+The most common is the &ldquo;Today&rdquo; entry.
+If you keep an entry with the same subject
+ at the beginning of each file,
+ you link all of your notes together.
+Notes-mode will help you out with some of these convetions
+ by automatically creating or copying some fields for you;
+ see see section <a href="notes-mode_3.html#Useful-conventions">Useful conventions</a> for details.
+</p>
+<p>Finally, notes-mode can also work with outline-minor-mode
+ (thanks to Tim Carroll for pointing this out).
+Outline-mode supports hiding and revealing text and other helpful
+ features beyond the scope of this document.
+See <a href="../emacs/Outline-Mode.html#Outline-Mode">Outline Mode: (emacs)Outline Mode</a> section &lsquo;Outline Mode&rsquo; in <cite>The Emacs Editor</cite>, for details.
+</p>
+<hr size="6">
+<a name="The-notes-index"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#A-notes-file" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#The-notes-directories" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Basics" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_3.html#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="The-notes-index-1"></a>
+<h2 class="section">2.3 The notes index</h2>
+
+<a name="index-Notes-index"></a>
+
+<p>The notes index lists all subjects you&rsquo;ve kept notes about,
+ and each date of each note.
+Impress your friends,
+ show your advisor why you&rsquo;re worth the <em>big</em> peanuts,
+ you&rsquo;ll soon have the biggest index of all.
+</p>
+<p>The index has one line per subject, listing the subject
+ and each day a note was made about that subject.
+For example:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">Bicycle: 950314, 950316
+Bicycle/maintenance/books: 951028
+Bridge/hands: 951113, 951114, 951116, 951117
+Bridge/UCLA: 960222, 960409
+</pre></td></tr></table>
+
+<p>Clicking on any of the dates with <kbd>mouse-2</kbd>
+ will take you to that note
+ (<code>notes-index-mouse-follow-link</code>).
+(You can also move the point over the date and hit <kbd>&lt;RTN&gt;</kbd>
+ if you&rsquo;re musaphobic [<code>notes-index-follow-link</code>].)
+<a name="index-mouse_002d2"></a>
+<a name="index-RTN-1"></a>
+</p>
+<p>The notes index is automatically updated by the program &lsquo;<tt>mkall</tt>&rsquo;.
+Typically &lsquo;<tt>mkall</tt>&rsquo; is run nightly by &lsquo;<tt>cron</tt>&rsquo;.
+On most modern versions of Unix, you can add this command to cron by
+ running &lsquo;<tt>crontab -e</tt>&rsquo; and adding the line:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">0 4 * * * /usr/local/lib/notes-mode/mkall
+</pre></td></tr></table>
+<a name="index-Crontab"></a>
+<a name="index-mkall"></a>
+<a name="index-re_002dindexing"></a>
+
+<p>(Assuming that your notes programs are installed
+ in /usr/local/lib/notes-mode, the default location.)
+</p>
+
+<hr size="6">
+<a name="The-notes-directories"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#The-notes-index" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_3.html#Advanced-Features" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Basics" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_3.html#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="The-notes-directories-1"></a>
+<h2 class="section">2.4 The notes directories</h2>
+
+<a name="index-Notes-directories"></a>
+<a name="index-Directory-hierarchy"></a>
+
+<p>The final thing needed to tie basic notes-mode together his how
+the pieces fit together.
+Since my graduate work is in file systems,
+you can bet that directories are involved.
+</p>
+<p>Notes-mode keeps its files in a two-level hierarchy:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">~/NOTES
+~/NOTES/index
+~/NOTES/rawindex
+~/NOTES/199603
+~/NOTES/199603/960329
+~/NOTES/199603/960330
+~/NOTES/199604
+~/NOTES/199604/960401
+</pre></td></tr></table>
+
+<p>The top level, &lsquo;<tt>~/NOTES</tt>&rsquo;, is the notes directory.
+It keeps all notes in one place.
+(The name of this directory is configurable, See section <a href="notes-mode_3.html#Notes_002dmode-configuration">Notes-mode configuration</a>.)
+</p>
+<p>Inside the notes directory are two files and a number of directories.
+The files are &lsquo;<tt>index</tt>&rsquo;,
+ the index of all entries (see section <a href="#The-notes-index">The notes index</a>),
+ and &lsquo;<tt>rawindex</tt>&rsquo;,
+ used internally.
+<a name="index-Root-directory"></a>
+</p>
+<p>The notes directory also contains a number of subdirectories,
+ sometimes called <em>intermediate directories</em>.
+These directories group the actual notes files into manageable chunks,
+ keeping any directory from getting too large.
+Intermediate directories are named
+ by the four-digit year and the two-digit month
+ of the entries they contain.
+(The format of intermediate directories
+ is configurable, See section <a href="notes-mode_3.html#Notes_002dmode-configuration">Notes-mode configuration</a>.)
+<a name="index-Intermediate-directories"></a>
+</p>
+<p>Finally,
+ each intermediate directory are the notes files themselves,
+ named according to the two-digit year, month, and day-of-month.
+<a name="index-Notes-files-1"></a>
+</p>
+<p>For the most part,
+ notes-mode will automatically maintain this organization of files,
+ once you create the top-level directory.
+Notes-mode will also automatically insure
+ that all files in the notes directory are unreadable by
+ anyone other than their owner.
+Notes are personal things.
+(This behavior is not currently configurable,
+ but it probably should be.)
+<a name="index-Notes-file-permissions"></a>
+</p>
+
+
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_3.html#Advanced-Features" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+  This document was generated by <em>John Heidemann</em> on <em>April 4, 2012</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/packages/notes-mode/HTML/notes-mode_3.html b/packages/notes-mode/HTML/notes-mode_3.html
new file mode 100644 (file)
index 0000000..cdfd7e6
--- /dev/null
@@ -0,0 +1,511 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on April 4, 2012 by texi2html 1.82
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+-->
+<head>
+<title>Notes-mode: 3. Advanced Features</title>
+
+<meta name="description" content="Notes-mode: 3. Advanced Features">
+<meta name="keywords" content="Notes-mode: 3. Advanced Features">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="Advanced-Features"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode_2.html#The-notes-directories" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Notes-files" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode_2.html#Basics" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_4.html#History" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Advanced-Features-1"></a>
+<h1 class="chapter">3. Advanced Features</h1>
+
+<p>Notes-mode, the minutiae, and some other good stuff.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top"><a href="#Notes-files">3.1 Notes files</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                 
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Notes-indices">3.2 Notes indices</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">               
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Notes_002dmode-configuration">3.3 Notes-mode configuration</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">    
+</td></tr>
+</table>
+
+<hr size="6">
+<a name="Notes-files"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Advanced-Features" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Getting-around" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_4.html#History" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Notes-files-1"></a>
+<h2 class="section">3.1 Notes files</h2>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top"><a href="#Getting-around">3.1.1 Getting around</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">              
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Subject-summary">3.1.2 Subject summary</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">             
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Encryption">3.1.3 Encryption</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                  
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Useful-conventions">3.1.4 Useful conventions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          
+</td></tr>
+</table>
+
+<hr size="6">
+<a name="Getting-around"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Notes-files" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Subject-summary" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Notes-files" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_4.html#History" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Getting-around-1"></a>
+<h3 class="subsection">3.1.1 Getting around</h3>
+
+<p>Moving between notes entries and around the hierarchy is fairly common,
+ so there are some accelerators.
+</p>
+<dl compact="compact">
+<dt> <kbd>C-c C-i</kbd></dt>
+<dd><p>Jump to the index entry for the current entry&rsquo;s subject
+(<code>notes-goto-index-entry</code>).
+<a name="index-C_002dc-C_002di"></a>
+</p>
+</dd>
+<dt> <kbd>C-c C-n</kbd></dt>
+<dt> <kbd>C-c C-p</kbd></dt>
+<dd><p>Move to the next or prior note with the same subject
+(<code>notes-follow-next-link</code> and <code>notes-follow-prev-link</code>).
+These functions follow the links in the note,
+ if they&rsquo;re defined.
+If not,
+ they look through the index file.
+This approach usually works,
+ but will fail if there are multiple new entries created
+ with the given subject
+ between when the index is recomputed.
+<a name="index-C_002dc-C_002dn"></a>
+<a name="index-C_002dc-C_002dp"></a>
+</p>
+</dd>
+<dt> <kbd>C-c&lt;RTN&gt;</kbd></dt>
+<dd><p>Follow the link under the point
+(<code>notes-w3-follow-link</code>),
+ a keyboard equivalent of &lt;S-mouse-2&gt;.
+<a name="index-C_002dcRTN"></a>
+</p>
+</dd>
+<dt> <kbd>M-C-a</kbd></dt>
+<dt> <kbd>M-C-e</kbd></dt>
+<dd><p>Jump to the beginning or end of the current note entry
+(<code>notes-beginning-of-defun</code> and <code>notes-end-of-defun</code>).
+<a name="index-M_002dC_002da"></a>
+<a name="index-M_002dC_002de"></a>
+</p>
+</dd>
+<dt> <kbd>C-c C-k</kbd></dt>
+<dd><p>Copies the pseudo-URL for the current note into the kill-ring
+(<code>current-url-as-kill</code>).
+To link two entries, go to the target,
+ grab its URL with <kbd>C-c C-k</kbd>,
+ go to where you want to make the link,
+ and yank the URL with <kbd>C-y</kbd>.
+<a name="index-C_002dc-C_002dk"></a>
+</p>
+</dd>
+</dl>
+
+
+<p>Notes mode supports imenu,
+ if you have it bound to something
+ (I use <code>(global-set-key [down-mouse-3] 'imenu)</code>).
+<a name="index-imenu"></a>
+</p>
+
+<hr size="6">
+<a name="Subject-summary"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Getting-around" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Encryption" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Notes-files" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_4.html#History" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Subject-summary-1"></a>
+<h3 class="subsection">3.1.2 Subject summary</h3>
+
+<p>It&rsquo;s often helpful to look at all
+ entries for a given subject
+<kbd>C-c C-s</kbd>
+ collects all entries with the subject of the current
+ entry in a new buffer
+ (<code>notes-summarize-subject</code>).
+<a name="index-C_002dc-C_002ds"></a>
+<a name="index-Subject-summary"></a>
+</p>
+
+<hr size="6">
+<a name="Encryption"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Subject-summary" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Useful-conventions" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Notes-files" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_4.html#History" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Encryption-1"></a>
+<h3 class="subsection">3.1.3 Encryption</h3>
+
+<a name="index-Encryption"></a>
+<a name="index-Decryption"></a>
+
+<p>Notes occasionally contain private material.
+While Unix has strong services for file protection
+ (compared to other, say, more wide-selling operating systems),
+ in many systems root passwords are shared,
+ while other systems are vulnerable to physical compromise.
+In such systems,
+ properly used encryption is the best approach to security.
+</p>
+<p>Notes-mode encryption is based
+ Phill Zimmerman&rsquo;s PGP (Pretty Good Privacy)
+(see &lsquo;<tt>http://www.mantis.co.uk/pgp/pgp.html</tt>&rsquo;)
+ and either
+ with Rick Campbell&rsquo;s
+ emacs interface, PAM (PGP Augmented Messaging)
+(from &lsquo;<tt>ftp://h.gp.cs.cmu.edu/usr/rfb/pam/</tt>&rsquo;)
+ (note that as of January 1997, PAM is no longer at this ftp site
+ and appears to not be publicly available),
+ or LoPresti and Choi&rsquo;s mailcrypt
+(from &lsquo;<tt>http://cag-www.lcs.mit.edu/mailcrypt/</tt>&rsquo;).
+<a name="index-PGP"></a>
+<a name="index-Pretty-good-privacy"></a>
+<a name="index-PAM"></a>
+<a name="index-PGP-Augmented-Messaging"></a>
+<a name="index-mailcrypt"></a>
+</p>
+<dl compact="compact">
+<dt> <kbd>C-c C-e</kbd></dt>
+<dd><p>Encrypt the current note
+(<code>notes-encrypt-note</code>).
+By default this function encrypts the whole entry.
+With a prefix argument,
+ only the part from the point to the end of the entry is encrypted.
+<a name="index-C_002dc-C_002de"></a>
+</p>
+</dd>
+<dt> <kbd>C-c C-d</kbd></dt>
+<dd><p>Decrypt the current note
+(<code>notes-decrypt-note</code>).
+</p></dd>
+</dl>
+<a name="index-C_002dc-C_002dd"></a>
+
+<p>By default notes-mode determines your public key by looking 
+ up your <code>user-full-name</code> in your PGP keyring.
+You can override this default by setting
+ <code>notes-encryption-key-id</code>
+ to the desired key-id.
+<a name="index-key_002did"></a>
+</p>
+
+<hr size="6">
+<a name="Useful-conventions"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Encryption" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Notes-indices" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Notes-files" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_4.html#History" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Useful-conventions-1"></a>
+<h3 class="subsection">3.1.4 Useful conventions</h3>
+
+
+<a name="index-conventions"></a>
+<a name="index-mknew"></a>
+
+<p>There are a number of conventions which can make notes-mode
+ easier to use.
+These conventions are a matter of personal taste,
+ of course.
+Do what works for you.
+</p>
+<p>First,
+ I find it helpful to keep the date of each notes-file at the top
+ of the file.
+This makes the file self-identifying
+ if the filename is lost.
+</p>
+<p>Second,
+ I find it useful to have the first entry of each file
+ have the same subject (perhaps &ldquo;Today&rdquo;).
+This entry then links all notes together,
+ making it easy to go to yesterday and tomorrow.
+I keep a to-do list on this entry,
+ bringing the list forward each day.
+<a name="index-Today"></a>
+</p>
+<p>A third useful convention is to keep an
+ entry with the name based on the day of the week
+ in each file.
+Analogous to &ldquo;Today&rdquo;, this entry links together
+ weeks.
+</p>
+<p>Notes-mode supports these conventions.
+When you make a new notes-file in emacs,
+ notes-mode searches for the preceding file.
+If it follows any of these conventions,
+ the new file is initialized appropriately.
+Currently
+ the approach to do this process
+ (in the program &lsquo;<tt>mknew</tt>&rsquo;)
+ is fairly sensitive,
+ so it may not work in all cases.
+In particular,
+ the date convention works only on
+ for English-language dates.
+(If you use notes-mode with a non-English language,
+ let me know and I&rsquo;ll work with you to fix this limitation.)
+</p>
+<p>If you find other helpful conventions,
+ please let me know.
+Modifications to &lsquo;<tt>mknew</tt>&rsquo; to implement
+ new conventions are also invited.
+</p>
+<p>If you don&rsquo;t want to use these conventions,
+ or if you want to use different ones,
+ set the emacs variable notes-mode-initialization-program
+ to nil or the name of your initialization program.
+<a name="index-notes_002dmode_002dinitialization_002dprogram"></a>
+</p>
+
+<hr size="6">
+<a name="Notes-indices"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Useful-conventions" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Notes_002dmode-configuration" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_4.html#History" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Notes-indices-1"></a>
+<h2 class="section">3.2 Notes indices</h2>
+
+
+<p>Only two features of notes index mode haven&rsquo;t yet been described.
+First,
+ you can open any notes-file based on date
+ with <code>notes-index-link</code>,
+ normally bound to &lt;o&gt;.
+<a name="index-o"></a>
+</p>
+<p>Second,
+ you can get a subject-summary
+ with &lt;C-c C-s&gt;
+ (see section <a href="#Subject-summary">Subject summary</a>).
+The subject defaults to that of the current index line.
+<a name="index-C_002dc-C_002ds-1"></a>
+</p>
+
+<hr size="6">
+<a name="Notes_002dmode-configuration"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Notes-indices" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_4.html#History" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Advanced-Features" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_4.html#History" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Notes_002dmode-configuration-1"></a>
+<h2 class="section">3.3 Notes-mode configuration</h2>
+
+<a name="index-configuration"></a>
+<a name="index-_002enotesrc"></a>
+
+<p>Several aspects of notes mode are particularly visible
+ to the user.
+Because I&rsquo;m not a fascist,
+ a user can change most of these.
+</p>
+<p>Preferences are specified in &lsquo;<tt>~/.notesrc</tt>&rsquo;.
+This file lists things to change:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example"># lines beginning with a hash are comments
+dir: ~/NOTES
+int_form: %Y%m
+</pre></td></tr></table>
+
+<p>Currently, two things can be changed:
+</p>
+<dl compact="compact">
+<dt> <code>dir</code></dt>
+<dd><p>Specifies the root of the notes directory hierarchy
+ (see section <a href="notes-mode_2.html#The-notes-directories">The notes directories</a>).
+</p>
+</dd>
+<dt> <code>int_form</code></dt>
+<dd><p>Specifies the form of the intermediate directory.
+A limited subset of <code>strftime(3)</code>
+ formatting is allowed.
+</p></dd>
+</dl>
+
+<p>The subset of <code>strftime(3)</code> supported in <code>int_form</code> is:
+</p><dl compact="compact">
+<dt> <code>%Y</code></dt>
+<dd><p>The four-digit year.
+</p>
+</dd>
+<dt> <code>%y</code></dt>
+<dd><p>The two-digit year.
+</p>
+</dd>
+<dt> <code>%m</code></dt>
+<dd><p>A two-digit numeric month.
+</p>
+</dd>
+<dt> <code>%d</code></dt>
+<dd><p>A two-digit day.
+</p></dd>
+</dl>
+
+<p>In addition to &lsquo;<tt>.notesrc</tt>&rsquo;,
+ there are a number of emacs-specific variables.
+These variables are documented in the file
+ &lsquo;<tt>notes-variables.el</tt>&rsquo;.
+</p>
+
+
+
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_4.html#History" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+  This document was generated by <em>John Heidemann</em> on <em>April 4, 2012</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/packages/notes-mode/HTML/notes-mode_4.html b/packages/notes-mode/HTML/notes-mode_4.html
new file mode 100644 (file)
index 0000000..eb785a3
--- /dev/null
@@ -0,0 +1,530 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on April 4, 2012 by texi2html 1.82
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+-->
+<head>
+<title>Notes-mode: 4. History</title>
+
+<meta name="description" content="Notes-mode: 4. History">
+<meta name="keywords" content="Notes-mode: 4. History">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="History"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode_3.html#Notes_002dmode-configuration" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Notes_002dmode-history" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode_3.html#Advanced-Features" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_5.html#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="History-1"></a>
+<h1 class="chapter">4. History</h1>
+
+<p>More about notes-mode than you wanted to know,
+and some thanks.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top"><a href="#Notes_002dmode-history">4.1 Notes-mode history</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">          
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Credits">4.2 Credits</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                     
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Changes">4.3 Changes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                     
+</td></tr>
+<tr><td align="left" valign="top"><a href="#Suggested-features">4.4 Suggested features</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                     
+</td></tr>
+</table>
+
+
+
+<hr size="6">
+<a name="Notes_002dmode-history"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#History" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Credits" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#History" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#History" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_5.html#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Notes_002dmode-history-1"></a>
+<h2 class="section">4.1 Notes-mode history</h2>
+
+<p>Briefly,
+ I started keeping notes on-line shortly after I got a portable computer
+ in January, 1994.
+After a month-and-a-half of notes, I realized that
+ one does not live by grep alone,
+ so I started adding indexing facilities.
+</p>
+<p>In June of 1995
+ some other Ficus-project members started
+ keeping and indexing on-line notes
+ using other home-grown systems.
+After some discussion,
+ we generalized my notes-mode work and
+ they started using it.
+</p>
+<p>Over the next 18 months notes-mode grew.
+Finally, in April, 1996 I wrote documentation,
+ guaranteeing that innovation on notes-mode will now cease
+ or the documentation will become out of date.
+</p>
+
+<hr size="6">
+<a name="Credits"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Notes_002dmode-history" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Changes" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#History" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#History" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_5.html#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Credits-1"></a>
+<h2 class="section">4.2 Credits</h2>
+
+<p>I (John Heidemann, &lt;johnh@isi.edu&gt;)
+ started, documented, and currently maintain notes-mode.
+I take ultimate responsibility for the code,
+ especially for the ugly parts that I won&rsquo;t let others change.
+</p>
+<p>Ashvin Goel
+ &lt;ashvin@ficus.cs.ucla.edu&gt;
+ has been a very enthusiastic notes-mode user and contributor.
+He is responsible for at least
+ the ideas behind <code>notes-summarize-subject</code>
+and the ideas and initial implementations of
+ some of the original generalization and modularity improvements,
+ <code>notes-follow-next-link</code> and <code>notes-follow-prev-link</code>,
+ <code>notes-goto-index-entry</code>,
+ programmed subject completion,
+ and
+ context-sensitive mouse-2 handling.
+In addition,
+ he is an invaluable second opinion about
+ what and how things should be done
+ (even if I don&rsquo;t always agree with him).
+</p>
+<p>Geoff Kuenning
+ &lt;geoff@ficus.cs.ucla.edu&gt;
+ has been another enthusiastic notes-mode user and victim.
+He is responsible for
+ finding several bugs,
+ motivation for mouse-less operation,
+ comments about the documentation,
+ the day-of-week convention,
+ and an initial implementation and the idea of
+ multiple entries with the same subjects in a single notes-file.
+</p>
+<p>Ramesh Govindan &lt;govindan@isi.edu&gt; did the xemacs port.
+</p>
+<p>Since it&rsquo;s release on Usenet in April 1996 several
+ other folks have contributed.
+Thanks to
+ David Weisman &lt;weisman@app1.osf.org&gt;,
+ Martin L. Smith &lt;martin@ner.com&gt;,
+ Jason Bastek &lt;jason@aai.com&gt;,
+ Ulrich Herbst &lt;Ulrich.Herbst@t-systems.com&gt;.
+See the next section (See section <a href="#Changes">Changes</a>.) for details of their exploits.
+</p>
+<p>Thanks to Larry Ayers &lt;layers@marktwain.net&gt;
+ for popularizing notes-mode with reviews in
+ the Linux Gazette
+ (at &lt;http://www.linuxgazette.com/issue22/notes-mode.html&gt; and
+ &lt;http://www.linuxgazette.com/issue35/ayers.html&gt;).
+</p>
+<hr size="6">
+<a name="Changes"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Credits" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#Suggested-features" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#History" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#History" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_5.html#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Changes-1"></a>
+<h2 class="section">4.3 Changes</h2>
+
+<p>For the bored:
+</p>
+<p>First semi-public release. 12-Jul-95: version 0.1
+ Shared a version with Ashvin and Geoff.
+</p>
+<p>Changed  6-Dec-95: version 0.3
+ Ashvin&rsquo;s changes for note traversal added (C-c C-p and C-c C-n now
+move to the prev/next note in note-mode).
+ URL parsing changed so that &quot;localhost&quot; is optional.
+</p>
+<p>Changed 19-Dec-95:  version 0.4
+ More robust prev/next code added, both to handle going back and
+forward in the middle of chains through the index file, and to handle
+back/forward in a single file.
+ URL parsing changed so that notes-goto-index-entry correctly handles
+lookups on notes names such as &quot;252A&quot;.
+</p>
+<p>Changed 20-Dec-95: version 0.5.
+ Fixed a missing variable in notes-url.el.
+ Added a work-around to a bug in emacs-19.30&rsquo;s define-derived-mode.
+</p>
+<p>Changed 24-Dec-95: version 0.6.
+ Prev/next code re-re-written to be more robust.
+</p>
+<p>Changed 26-Dec-96:  version 0.7.
+ Bug fix release.
+</p>
+<p>Changed 23-Jan-96: version 0.8.
+ Initialization code added to set up a new note.
+New variable:  notes-bin-dir.
+</p>
+<p> I&rsquo;m skipping version 0.9 because I erroneously release version 0.1
+as version 0.9 (only on the web, not on Usenet).
+</p>
+<p> I&rsquo;m bumping from version &quot;0&quot; to version &quot;1&quot; since the code is has been
+in production use for more than a year by several people.  Minor
+numbers are the same.
+</p>
+<p>Changed 26-Mar-96: version 1.10.
+ Setup code completely re-written.
+ Several incompatible changes have been made:
+ - the lisp and Perl code must be installed via make install,
+not by copying.
+ - some data is specified in a .notesrc file; copy and modify sample.notesrc.
+ - several internal elisp changes.
+ - catsubject added (bound to C-cC-s):  collect all notes about the
+current subject.
+ - new notes-files are initialized with fields based on the prior
+day&rsquo;s notes; see mknew for details.
+ - daily_work is gone; mkall is rewritten to use .notesrc.
+</p>
+<p>Changed 29-Apr-96: version 1.11.
+ Real documentation.
+ Mknew caching added.
+</p>
+<p>Changed  9-Aug-96: version 1.12.
+ Added notesinit to do all setup for new users.
+</p>
+<p>Changed 24-Aug-96: version 1.13.
+ Minor documentation fixes.
+</p>
+<p>Changed 20-Dec-97: version 1.14.
+Autoconf support.
+</p>
+<p>Fontification of the index buffer is now pre-computed in perl
+other than done when the file is needed (in elisp with slow regular
+expressions).  2000-line index files are now 1-2 seconds rather than
+15-30 on a 100MHz Pentium.  If necessary (the
+pre-computed version isn&rsquo;t up-to-date) we fall back on the slower
+code.
+</p>
+<p>Related work improved (suggestion by David Weisman &lt;weisman@app1.osf.org&gt;).
+</p>
+<p>Documentation improvement (problem found by Martin L. Smith
+&lt;martin@ner.com&gt;).
+</p>
+<p>Installation improved (code by Jason Bastek &lt;jason@aai.com&gt;).
+</p>
+<p>Bug in notes-index mode with subjects containing colons fixed (johnh).
+</p>
+<p>Encryption now supports mailcrypt.el.
+</p>
+<p>Support for emacs 20 (a small font-lock change).
+</p>
+<p>Changed  5-Jan-98: version 1.15.
+Bug in decryption for non-PAM users fixed
+ (suggestion by Kevin Davidson &lt;tkld@quadstone.com&gt;).
+</p>
+<p>Y2K statement added
+ (suggestion by Kevin Davidson &lt;tkld@quadstone.com&gt;).
+</p>
+<p>Pointer to mailcrypt added (as a supported encryption package).
+Problem pointed out by K. Ueda &lt;kueda@jupiter.qse.tohoku.ac.jp&gt;.
+</p>
+<p>Changed  4-Nov-98: version 1.16.
+Bug in kill-ring handling of notes-old-underline-line
+ fixed by Tim Potter &lt;timp@jna.com.au&gt;.
+Bug in whitespace handling after PGP encryption fixed by Tim Potter.
+Bugs in handling of entries with hash signs in their name fixed
+ (found by Tim Potter).
+Fontification of index buffer further improved
+ (mapcar is your friend).
+Xemacs support added based on code contributed by Ramesh Govindan.
+</p>
+<p>Changed 28-Feb-99: version 1.17:
+Improvement:  notes-electric-return now fixes up the prev/next links
+ of new entries (only).  Code contributed by
+ Takashi Nishimoto.
+</p>
+<p>Bug fix:  reversed options -batch and -q in configure.in to placate
+ XEmacs 20.0; changed notesinit to not downcase the pathname
+ (bugs found by Thierry Bezecourt).
+</p>
+<p>Clarification: Autofilling of new notes more clear in the manual (hopefully,
+ suggested by Solofo Ramangalahy).
+</p>
+<p>Bug fix:  a y2k bug in was found and fixed in mkindex.  Sigh.
+</p>
+<p>New:  Two mailing lists for notes-mode have been created:
+&lsquo;<tt>notes-mode-announce@heidemann.la.ca.us</tt>&rsquo; and 
+&lsquo;<tt>notes-mode-talk@heidemann.la.ca.us</tt>&rsquo;.
+Send the line &ldquo;subscribe notes-mode-announce&rdquo;
+(or &ldquo;subscribe notes-mode-talk&rdquo;)
+to &lsquo;<tt>majordomo@heidemann.la.ca.us</tt>&rsquo;
+to join them.
+[<em>These instructions are now superceeded; to subscribe, go to
+&lsquo;<tt>http://www.heidemann.la.ca.us/mailman/listinfo/notes-mode-talk</tt>&rsquo;
+and
+&lsquo;<tt>http://www.heidemann.la.ca.us/mailman/listinfo/notes-mode-announce</tt>&rsquo;.</em>]
+</p>
+<p>Changed  6-Oct-99: version 1.18:
+Bug fix:  handling of electric-prevnext is better when there are
+ existing prev/next links.
+</p> 
+<p>Clarification: I added some pointers in the code to the installation
+ instructions.  (Apparently people can&rsquo;t RTF README.)
+</p>
+<p>Extension: mailcrypt-3.5.x suported including pgp, pgp5 and gpg.
+</p>
+<p>Changed (date 23-Dec-00): version 1.19:
+Bug fix (cosmetic): suppress comments in encrypted nodes.
+</p>
+<p>Install fixes from Kannan Varadhan: elisp directories changed on install.
+</p>
+<p>Added C-j as a synonym for RET in notes-mode to parallel C++ or perl mode.
+(Suggested by Fred Jaggi &lsquo;<tt>jaggi@rsn.hp.com</tt>&rsquo;.)
+</p>
+<p>Outline-minor-mode support added and documented.
+(Suggested by Tim Carroll &lsquo;<tt>tim@boomboom.com</tt>&rsquo;.)
+</p>
+<p>Bug/typo fixes in gpg support
+(Contributed by William A. Perkins &lsquo;<tt>wa_perkins@pnl.gov</tt>&rsquo;,
+with separate patches from Knut Anders Hatlen &lsquo;<tt>kahatlen@online.no</tt>&rsquo;.)
+</p>
+<p>Installation improvements suggested by Christophe Troestler
+&lsquo;<tt>Ch.Troestler@linkline.be</tt>&rsquo;:
+use install-info to update the info dir,
+warn users of &ndash;prefix that lisp files go elsewhere.
+</p>
+<p>Changed (date  1-Feb-01): version 1.20:
+Bug fix: missing file notes-first.el added to the distribution.
+(Bug found by Michael Totschnig &lsquo;<tt>michaelt@supernet.ca</tt>&rsquo;.)
+</p>
+<p>Changed ( 5-Dec-01): version 1.21:
+(backed-out&mdash;didn&rsquo;t work with spaced URLs) 
+URL lookup now uses thing-at-point.
+</p>
+<p>Fix to make notes-mode work with emacs-21.1
+(Fix from Klaus Zeitler  &lsquo;<tt>kzeitler@lucent.com</tt>&rsquo;.)
+</p>
+<p>Changed ( 3-Jan-02): version 1.22:
+Several bugs in &lsquo;<tt>notesinit</tt>&rsquo; for stricter Perl implementations
+(bug found by Paul Craven&quot; &lsquo;<tt>pcraven@yorku.ca</tt>&rsquo;,
+and Kasper van Wijk &lsquo;<tt>kasper@acoustics.mines.edu</tt>&rsquo;)
+and to make it run cleanly more often.
+</p>
+<p>Notes-first now autoinitializes notes mode from emacs.
+(As instisted by rms, unfortunately about two years later than requested.)
+</p>
+
+<p>Changed (20-Feb-05): version 1.23:
+Outline mode is now forcebly turned on to avoid interactions
+with user&rsquo;s text-mode hooks
+(bug and fix from Nils Ackermann &lsquo;<tt>nils@nieback.de</tt>&rsquo;).
+</p>
+<p>Install bug involving ordering of scripts and byte-compilation
+fixed (bug and fix from Mark Allman &lsquo;<tt>mallman@grc.nasa.gov</tt>&rsquo;).
+</p>
+<p>Fix obscure bug in configure, reported by Klaus Zeitler &lsquo;<tt>kzeitler@lucent.com</tt>&rsquo;.
+</p>
+<p>Fix for notes-summarize-subject when no subject is specified (bug and fix
+from Geoff Kuenning).
+</p>
+<p>Changed (14-Jan-06): version 1.24:
+</p>
+<p>install-info bug documented with the Debian install-info
+(bug reported by Aaron Falk &lsquo;<tt>falk@isi.edu</tt>&rsquo;).
+</p>
+<p>Automatic date completion in new days is now done in the current
+locale, so it should now work for non-English languages.  Bug reported
+by Torsten Bronger &lsquo;<tt>bronger@physik.rwth-aachen.de</tt>&rsquo;.
+</p>
+<p>Fixed a bug in mkindexcache, triggered by subjects with percent signs
+in them.  Bug reported by Philip Austin &lsquo;<tt>paustin@eos.ubc.ca</tt>&rsquo;.
+</p>
+<p>We&rsquo;re a bit more robust about subjects, I hope.  Warnings should
+appear about embedded number signs, and leading spaces should be
+filtered.  Bug reported by Philip Austin &lsquo;<tt>paustin@eos.ubc.ca</tt>&rsquo;.
+</p>
+<p>Notes-mode now dervies from indented-text-mode rather than
+paragraph-indent-text mode.  Unfortunatley this is not customizable
+because of limitations of define-derived-mode.  Change suggested by
+Aaron Falk &lsquo;<tt>falk@isi.edu</tt>&rsquo;.
+</p>
+<p>Provide better hints about how to get started after installation or
+running notes-mode in emacs for the first time.
+</p>
+<p>In notes init, the default path for dir was the full path, not the tilde
+version of the path.  Now it defaults to using tidle for home
+directory.  Bug reported by Mark Allman &lsquo;<tt>allman@icir.org</tt>&rsquo;.
+</p>
+<p>Changed (26-May-06): version 1.25:
+</p>
+<p>fixed a bug in the release tar.gz file that had a additional copies
+copy nested.
+</p>
+<p>Changed (30-Jun-08): version 1.26:
+</p>
+<p>Force unicode I/O in &lsquo;<tt>mkindexcache</tt>&rsquo; to fix highlighting mis-alignment
+when using emacs-21 with unicode subject lines.
+</p>
+<p>Changed mkprevnext and mkrawindex to optionally take the list of notes files
+to index from stdin rather than from the command line.  Yes, I finally
+have 4093 notes files, overflowing the Unix command line buffer.
+</p>
+<p>Changes notes-mode.el to put path in quotes, allowing spaces to appear in home directory names (bug fix from Ulrich Herbst).
+</p>
+<p>Added a suggested features section.
+</p>
+<p>Changed ( 8-Aug-08): version 1.27:
+</p>
+<p>Change I/O in &lsquo;<tt>mkindexcache</tt>&rsquo; to use locale (the sadly correct thing)
+rather than forcing utf-8 (the Righteous Path).
+Bug report from Geoff Kuenning, a man with an older Unix environment than I.
+</p>
+<p>Changed (20-Jun-10): version 1.28:
+</p>
+<p>Changed a regular expression in &lsquo;<tt>notes-index-mode.el</tt>&rsquo; that was 
+causing emacs-v23 (a pre-release version)
+to regular expression infinite recursion.
+</p>
+<p>Changed (2012-04-04): version 1.29
+</p>
+<p>(2011-08-23) Changed <code>run-hooks</code> to <code>run-mode-hooks</code>.
+Bug report from Geoff Kuenning.
+</p>
+<p>Changed some handling of PGP encryption to account for 
+some apparent API changes.
+</p>
+<p>(2012-04-04) Fixed encyrption to handle encrypting empty notes at the end 
+of buffers without going into an infinite loop.
+Clearly wrong code, but you have to ask this guy for why he tried:
+Bug report from Geoff Kuenning.
+</p>
+
+
+<hr size="6">
+<a name="Suggested-features"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#Changes" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_5.html#Installation" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="#History" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="#History" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_5.html#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Suggested-features-1"></a>
+<h2 class="section">4.4 Suggested features</h2>
+
+<p>Features suggested by users but not yet implemented:
+</p>
+<p>21-Feb-08: (from Xavier Maillard): should support &ldquo;disconnected&rdquo; notes that
+are indexed but not date-based.
+</p>
+<p>21-Feb-08: (from John Heidemann): should switch all notes files to have an extension (maybe &lsquo;<tt>.notes</tt>&rsquo;).
+</p>
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="#History" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_5.html#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+  This document was generated by <em>John Heidemann</em> on <em>April 4, 2012</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/packages/notes-mode/HTML/notes-mode_5.html b/packages/notes-mode/HTML/notes-mode_5.html
new file mode 100644 (file)
index 0000000..7e28399
--- /dev/null
@@ -0,0 +1,124 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on April 4, 2012 by texi2html 1.82
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+-->
+<head>
+<title>Notes-mode: 5. Installation</title>
+
+<meta name="description" content="Notes-mode: 5. Installation">
+<meta name="keywords" content="Notes-mode: 5. Installation">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="Installation"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode_4.html#Suggested-features" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode_4.html#History" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Installation-1"></a>
+<h1 class="chapter">5. Installation</h1>
+
+<p>To install notes-mode,
+</p>
+<ol>
+<li>
+Unpack and extract the distribution
+(gunzip notes-mode-xxx.tar.gz; tar xvf notes-mode-xxx.tar; cd notes-mode-xxx).
+
+</li><li>
+Run configure (./configure).
+
+</li><li>
+Type &ldquo;make install&rdquo;.
+</li></ol>
+
+<p>(To control what&rsquo;s installed where, use &ndash;prefix=/where, or
+&ndash;with-lisp-dir=/where, &ndash;datadir=/where (for scripts),
+and &ndash;infodir=/where.)
+</p>
+<p>For each user:
+</p><ol>
+<li>
+Run notesinit
+</li></ol>
+
+<p>If you have problems with paths being incorrect, please be aware that
+you <em>cannot</em> run notes directly out of where you untar it.  The
+installation process customizes the programs for where things are on
+your system.
+Make sure you move out of the directory where you untarred it
+before running it.
+</p>
+
+<p>The most recent distribution of notes-mode 
+ is always available via
+ &lsquo;<tt>http://www.isi.edu/~johnh/SOFTWARE/NOTES_MODE/</tt>&rsquo;.
+</p>
+
+
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode_4.html#History" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+  This document was generated by <em>John Heidemann</em> on <em>April 4, 2012</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/packages/notes-mode/HTML/notes-mode_6.html b/packages/notes-mode/HTML/notes-mode_6.html
new file mode 100644 (file)
index 0000000..9cbb6d9
--- /dev/null
@@ -0,0 +1,149 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on April 4, 2012 by texi2html 1.82
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+-->
+<head>
+<title>Notes-mode: Keystroke index</title>
+
+<meta name="description" content="Notes-mode: Keystroke index">
+<meta name="keywords" content="Notes-mode: Keystroke index">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="Keystroke-index"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode_5.html#Installation" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_7.html#Concept-index" title="Next section in reading order"> &gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode_5.html#Installation" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_7.html#Concept-index" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Keystroke-index-1"></a>
+<h1 class="unnumbered">Keystroke index</h1>
+
+<p>This index lists notes-mode keystrokes.
+</p>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#Keystroke-index-1_ky_letter-C" class="summary-letter"><b>C</b></a>
+ &nbsp; 
+<a href="#Keystroke-index-1_ky_letter-M" class="summary-letter"><b>M</b></a>
+ &nbsp; 
+<a href="#Keystroke-index-1_ky_letter-O" class="summary-letter"><b>O</b></a>
+ &nbsp; 
+<a href="#Keystroke-index-1_ky_letter-R" class="summary-letter"><b>R</b></a>
+ &nbsp; 
+<a href="#Keystroke-index-1_ky_letter-S" class="summary-letter"><b>S</b></a>
+ &nbsp; 
+<a href="#Keystroke-index-1_ky_letter-T" class="summary-letter"><b>T</b></a>
+ &nbsp; 
+</td></tr></table>
+<table border="0" class="index-ky">
+<tr><td></td><th align="left">Index Entry</th><th align="left"> Section</th></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Keystroke-index-1_ky_letter-C">C</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-C_002dc-C_002dd"><code>C-c C-d</code></a></td><td valign="top"><a href="notes-mode_3.html#Encryption">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-C_002dc-C_002de"><code>C-c C-e</code></a></td><td valign="top"><a href="notes-mode_3.html#Encryption">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-C_002dc-C_002di"><code>C-c C-i</code></a></td><td valign="top"><a href="notes-mode_3.html#Getting-around">3.1.1 Getting around</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-C_002dc-C_002dk"><code>C-c C-k</code></a></td><td valign="top"><a href="notes-mode_3.html#Getting-around">3.1.1 Getting around</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-C_002dc-C_002dn"><code>C-c C-n</code></a></td><td valign="top"><a href="notes-mode_3.html#Getting-around">3.1.1 Getting around</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-C_002dc-C_002dp"><code>C-c C-p</code></a></td><td valign="top"><a href="notes-mode_3.html#Getting-around">3.1.1 Getting around</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-C_002dc-C_002ds"><code>C-c C-s</code></a></td><td valign="top"><a href="notes-mode_3.html#Subject-summary">3.1.2 Subject summary</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-C_002dc-C_002ds-1"><code>C-c C-s</code></a></td><td valign="top"><a href="notes-mode_3.html#Notes-indices">3.2 Notes indices</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-C_002dcRTN"><code>C-c&lt;RTN&gt;</code></a></td><td valign="top"><a href="notes-mode_3.html#Getting-around">3.1.1 Getting around</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Keystroke-index-1_ky_letter-M">M</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-M_002dC_002da"><code>M-C-a</code></a></td><td valign="top"><a href="notes-mode_3.html#Getting-around">3.1.1 Getting around</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-M_002dC_002de"><code>M-C-e</code></a></td><td valign="top"><a href="notes-mode_3.html#Getting-around">3.1.1 Getting around</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-mouse_002d2"><code>mouse-2</code></a></td><td valign="top"><a href="notes-mode_2.html#The-notes-index">2.3 The notes index</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Keystroke-index-1_ky_letter-O">O</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-o"><code>o</code></a></td><td valign="top"><a href="notes-mode_3.html#Notes-indices">3.2 Notes indices</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Keystroke-index-1_ky_letter-R">R</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-RTN"><code>RTN</code></a></td><td valign="top"><a href="notes-mode_2.html#A-notes-file">2.2 A notes file</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-RTN-1"><code>RTN</code></a></td><td valign="top"><a href="notes-mode_2.html#The-notes-index">2.3 The notes index</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Keystroke-index-1_ky_letter-S">S</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-S_002dmouse_002d2"><code>S-mouse-2</code></a></td><td valign="top"><a href="notes-mode_2.html#A-notes-file">2.2 A notes file</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Keystroke-index-1_ky_letter-T">T</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-TAB"><code>TAB</code></a></td><td valign="top"><a href="notes-mode_2.html#A-notes-file">2.2 A notes file</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+</table>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#Keystroke-index-1_ky_letter-C" class="summary-letter"><b>C</b></a>
+ &nbsp; 
+<a href="#Keystroke-index-1_ky_letter-M" class="summary-letter"><b>M</b></a>
+ &nbsp; 
+<a href="#Keystroke-index-1_ky_letter-O" class="summary-letter"><b>O</b></a>
+ &nbsp; 
+<a href="#Keystroke-index-1_ky_letter-R" class="summary-letter"><b>R</b></a>
+ &nbsp; 
+<a href="#Keystroke-index-1_ky_letter-S" class="summary-letter"><b>S</b></a>
+ &nbsp; 
+<a href="#Keystroke-index-1_ky_letter-T" class="summary-letter"><b>T</b></a>
+ &nbsp; 
+</td></tr></table>
+
+
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode_5.html#Installation" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_7.html#Concept-index" title="Next chapter"> &gt;&gt; </a>]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+  This document was generated by <em>John Heidemann</em> on <em>April 4, 2012</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/packages/notes-mode/HTML/notes-mode_7.html b/packages/notes-mode/HTML/notes-mode_7.html
new file mode 100644 (file)
index 0000000..3ad23bd
--- /dev/null
@@ -0,0 +1,220 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on April 4, 2012 by texi2html 1.82
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+-->
+<head>
+<title>Notes-mode: Concept index</title>
+
+<meta name="description" content="Notes-mode: Concept index">
+<meta name="keywords" content="Notes-mode: Concept index">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="Concept-index"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Previous section in reading order"> &lt; </a>]</td>
+<td valign="middle" align="left">[ &gt; ]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Up section"> Up </a>]</td>
+<td valign="middle" align="left">[ &gt;&gt; ]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<a name="Concept-index-1"></a>
+<h1 class="unnumbered">Concept index</h1>
+
+<p>This index lists notes-mode concepts.
+</p>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#Concept-index-1_cp_symbol-1" class="summary-letter"><b>.</b></a>
+ &nbsp; 
+<br>
+<a href="#Concept-index-1_cp_letter-C" class="summary-letter"><b>C</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-D" class="summary-letter"><b>D</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-E" class="summary-letter"><b>E</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-F" class="summary-letter"><b>F</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-I" class="summary-letter"><b>I</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-K" class="summary-letter"><b>K</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-M" class="summary-letter"><b>M</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-N" class="summary-letter"><b>N</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-P" class="summary-letter"><b>P</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-R" class="summary-letter"><b>R</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-S" class="summary-letter"><b>S</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-T" class="summary-letter"><b>T</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-U" class="summary-letter"><b>U</b></a>
+ &nbsp; 
+</td></tr></table>
+<table border="0" class="index-cp">
+<tr><td></td><th align="left">Index Entry</th><th align="left"> Section</th></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_symbol-1">.</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-_002enotesrc">.notesrc</a></td><td valign="top"><a href="notes-mode_3.html#Notes_002dmode-configuration">3.3 Notes-mode configuration</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-C">C</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-configuration">configuration</a></td><td valign="top"><a href="notes-mode_3.html#Notes_002dmode-configuration">3.3 Notes-mode configuration</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-conventions">conventions</a></td><td valign="top"><a href="notes-mode_3.html#Useful-conventions">3.1.4 Useful conventions</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-Crontab">Crontab</a></td><td valign="top"><a href="notes-mode_2.html#The-notes-index">2.3 The notes index</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-D">D</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-Decryption">Decryption</a></td><td valign="top"><a href="notes-mode_3.html#Encryption">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-Directory-hierarchy">Directory hierarchy</a></td><td valign="top"><a href="notes-mode_2.html#The-notes-directories">2.4 The notes directories</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-E">E</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-Encryption">Encryption</a></td><td valign="top"><a href="notes-mode_3.html#Encryption">3.1.3 Encryption</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-F">F</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-Font-matter">Font matter</a></td><td valign="top"><a href="notes-mode_2.html#A-notes-file">2.2 A notes file</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-I">I</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-imenu">imenu</a></td><td valign="top"><a href="notes-mode_3.html#Getting-around">3.1.1 Getting around</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-Intermediate-directories">Intermediate directories</a></td><td valign="top"><a href="notes-mode_2.html#The-notes-directories">2.4 The notes directories</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-K">K</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-key_002did">key-id</a></td><td valign="top"><a href="notes-mode_3.html#Encryption">3.1.3 Encryption</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-M">M</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-mailcrypt">mailcrypt</a></td><td valign="top"><a href="notes-mode_3.html#Encryption">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-mkall">mkall</a></td><td valign="top"><a href="notes-mode_2.html#The-notes-index">2.3 The notes index</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-mknew">mknew</a></td><td valign="top"><a href="notes-mode_3.html#Useful-conventions">3.1.4 Useful conventions</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-N">N</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-Notes-directories">Notes directories</a></td><td valign="top"><a href="notes-mode_2.html#The-notes-directories">2.4 The notes directories</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-Notes-entries">Notes entries</a></td><td valign="top"><a href="notes-mode_2.html#A-notes-file">2.2 A notes file</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-Notes-file-permissions">Notes file permissions</a></td><td valign="top"><a href="notes-mode_2.html#The-notes-directories">2.4 The notes directories</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-Notes-files">Notes files</a></td><td valign="top"><a href="notes-mode_2.html#A-notes-file">2.2 A notes file</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-Notes-files-1">Notes files</a></td><td valign="top"><a href="notes-mode_2.html#The-notes-directories">2.4 The notes directories</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-Notes-files_002c-font-matter">Notes files, font matter</a></td><td valign="top"><a href="notes-mode_2.html#A-notes-file">2.2 A notes file</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-Notes-index">Notes index</a></td><td valign="top"><a href="notes-mode_2.html#The-notes-index">2.3 The notes index</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-Notes-links">Notes links</a></td><td valign="top"><a href="notes-mode_2.html#A-notes-file">2.2 A notes file</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-Notes-subjects">Notes subjects</a></td><td valign="top"><a href="notes-mode_2.html#A-notes-file">2.2 A notes file</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-notes_002dmode_002dinitialization_002dprogram">notes-mode-initialization-program</a></td><td valign="top"><a href="notes-mode_3.html#Useful-conventions">3.1.4 Useful conventions</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-notesinit">notesinit</a></td><td valign="top"><a href="notes-mode_2.html#Getting-started">2.1 Getting started</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-P">P</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-PAM">PAM</a></td><td valign="top"><a href="notes-mode_3.html#Encryption">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-PGP">PGP</a></td><td valign="top"><a href="notes-mode_3.html#Encryption">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-PGP-Augmented-Messaging">PGP Augmented Messaging</a></td><td valign="top"><a href="notes-mode_3.html#Encryption">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-Pretty-good-privacy">Pretty good privacy</a></td><td valign="top"><a href="notes-mode_3.html#Encryption">3.1.3 Encryption</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-Pseudo_002dURLs">Pseudo-URLs</a></td><td valign="top"><a href="notes-mode_2.html#A-notes-file">2.2 A notes file</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-R">R</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-re_002dindexing">re-indexing</a></td><td valign="top"><a href="notes-mode_2.html#The-notes-index">2.3 The notes index</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-Root-directory">Root directory</a></td><td valign="top"><a href="notes-mode_2.html#The-notes-directories">2.4 The notes directories</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-S">S</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-setup">setup</a></td><td valign="top"><a href="notes-mode_2.html#Getting-started">2.1 Getting started</a></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-Subject-summary">Subject summary</a></td><td valign="top"><a href="notes-mode_3.html#Subject-summary">3.1.2 Subject summary</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-T">T</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_3.html#index-Today">Today</a></td><td valign="top"><a href="notes-mode_3.html#Useful-conventions">3.1.4 Useful conventions</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+<tr><th><a name="Concept-index-1_cp_letter-U">U</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="notes-mode_2.html#index-URLs">URLs</a></td><td valign="top"><a href="notes-mode_2.html#A-notes-file">2.2 A notes file</a></td></tr>
+<tr><td colspan="3"> <hr></td></tr>
+</table>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#Concept-index-1_cp_symbol-1" class="summary-letter"><b>.</b></a>
+ &nbsp; 
+<br>
+<a href="#Concept-index-1_cp_letter-C" class="summary-letter"><b>C</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-D" class="summary-letter"><b>D</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-E" class="summary-letter"><b>E</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-F" class="summary-letter"><b>F</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-I" class="summary-letter"><b>I</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-K" class="summary-letter"><b>K</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-M" class="summary-letter"><b>M</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-N" class="summary-letter"><b>N</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-P" class="summary-letter"><b>P</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-R" class="summary-letter"><b>R</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-S" class="summary-letter"><b>S</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-T" class="summary-letter"><b>T</b></a>
+ &nbsp; 
+<a href="#Concept-index-1_cp_letter-U" class="summary-letter"><b>U</b></a>
+ &nbsp; 
+</td></tr></table>
+
+
+
+
+<hr size="6">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
+<td valign="middle" align="left">[ &gt;&gt; ]</td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left"> &nbsp; </td>
+<td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+  This document was generated by <em>John Heidemann</em> on <em>April 4, 2012</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/packages/notes-mode/HTML/notes-mode_abt.html b/packages/notes-mode/HTML/notes-mode_abt.html
new file mode 100644 (file)
index 0000000..0671729
--- /dev/null
@@ -0,0 +1,167 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on April 4, 2012 by texi2html 1.82
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+-->
+<head>
+<title>Notes-mode: About This Document</title>
+
+<meta name="description" content="Notes-mode: About This Document">
+<meta name="keywords" content="Notes-mode: About This Document">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="SEC_About"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1>About This Document</h1>
+<p>
+  This document was generated by <em>John Heidemann</em> on <em>April 4, 2012</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
+</p>
+<p>
+  The buttons in the navigation panels have the following meaning:
+</p>
+<table border="1">
+  <tr>
+    <th> Button </th>
+    <th> Name </th>
+    <th> Go to </th>
+    <th> From 1.2.3 go to</th>
+  </tr>
+  <tr>
+    <td align="center"> [ &lt; ] </td>
+    <td align="center">Back</td>
+    <td>Previous section in reading order</td>
+    <td>1.2.2</td>
+  </tr>
+  <tr>
+    <td align="center"> [ &gt; ] </td>
+    <td align="center">Forward</td>
+    <td>Next section in reading order</td>
+    <td>1.2.4</td>
+  </tr>
+  <tr>
+    <td align="center"> [ &lt;&lt; ] </td>
+    <td align="center">FastBack</td>
+    <td>Beginning of this chapter or previous chapter</td>
+    <td>1</td>
+  </tr>
+  <tr>
+    <td align="center"> [ Up ] </td>
+    <td align="center">Up</td>
+    <td>Up section</td>
+    <td>1.2</td>
+  </tr>
+  <tr>
+    <td align="center"> [ &gt;&gt; ] </td>
+    <td align="center">FastForward</td>
+    <td>Next chapter</td>
+    <td>2</td>
+  </tr>
+  <tr>
+    <td align="center"> [Top] </td>
+    <td align="center">Top</td>
+    <td>Cover (top) of document</td>
+    <td> &nbsp; </td>
+  </tr>
+  <tr>
+    <td align="center"> [Contents] </td>
+    <td align="center">Contents</td>
+    <td>Table of contents</td>
+    <td> &nbsp; </td>
+  </tr>
+  <tr>
+    <td align="center"> [Index] </td>
+    <td align="center">Index</td>
+    <td>Index</td>
+    <td> &nbsp; </td>
+  </tr>
+  <tr>
+    <td align="center"> [ ? ] </td>
+    <td align="center">About</td>
+    <td>About (help)</td>
+    <td> &nbsp; </td>
+  </tr>
+</table>
+
+<p>
+  where the <strong> Example </strong> assumes that the current position is at <strong> Subsubsection One-Two-Three </strong> of a document of the following structure:
+</p>
+
+<ul>
+  <li> 1. Section One
+    <ul>
+      <li>1.1 Subsection One-One
+        <ul>
+          <li>...</li>
+        </ul>
+      </li>
+      <li>1.2 Subsection One-Two
+        <ul>
+          <li>1.2.1 Subsubsection One-Two-One</li>
+          <li>1.2.2 Subsubsection One-Two-Two</li>
+          <li>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp;
+            <strong>&lt;== Current Position </strong></li>
+          <li>1.2.4 Subsubsection One-Two-Four</li>
+        </ul>
+      </li>
+      <li>1.3 Subsection One-Three
+        <ul>
+          <li>...</li>
+        </ul>
+      </li>
+      <li>1.4 Subsection One-Four</li>
+    </ul>
+  </li>
+</ul>
+
+<hr size="1">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+  This document was generated by <em>John Heidemann</em> on <em>April 4, 2012</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/packages/notes-mode/HTML/notes-mode_fot.html b/packages/notes-mode/HTML/notes-mode_fot.html
new file mode 100644 (file)
index 0000000..088f9d6
--- /dev/null
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on April 4, 2012 by texi2html 1.82
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+-->
+<head>
+<title>Notes-mode: Footnotes</title>
+
+<meta name="description" content="Notes-mode: Footnotes">
+<meta name="keywords" content="Notes-mode: Footnotes">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="SEC_Foot"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1>Footnotes</h1>
+<h3><a name="FOOT1" href="notes-mode_1.html#DOCF1">(1)</a></h3>
+<p>Trademarked, in Great Britain, Sunone tells me.
+</p><h3><a name="FOOT2" href="notes-mode_1.html#DOCF2">(2)</a></h3>
+<p>I consider myself pretty anal about this subject,
+often typing notes in from paper after-the-fact,
+and <em>I</em> certainly don&rsquo;t manage to back-enter
+my notes all time time.
+</p><h3><a name="FOOT3" href="notes-mode_1.html#DOCF3">(3)</a></h3>
+
+<p>On the other hand, some folks at MIT are working
+on this problem from both the hardware and the social side of
+things (&lsquo;<tt>http://wearables.www.media.mit.edu/projects/wearables/</tt>&rsquo;)
+(Perhaps they have wild parties with computers, too.)
+</p><h3><a name="FOOT4" href="notes-mode_1.html#DOCF4">(4)</a></h3>
+<p>My hat is off to Rosa Parks
+and the many other normal people who triggered landmark cases.
+</p><h3><a name="FOOT5" href="notes-mode_1.html#DOCF5">(5)</a></h3>
+<p>If you think I&rsquo;m missing an alternative, please let me know.
+</p><hr size="1">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+  This document was generated by <em>John Heidemann</em> on <em>April 4, 2012</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/packages/notes-mode/HTML/notes-mode_toc.html b/packages/notes-mode/HTML/notes-mode_toc.html
new file mode 100644 (file)
index 0000000..f03a834
--- /dev/null
@@ -0,0 +1,111 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Created on April 4, 2012 by texi2html 1.82
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+-->
+<head>
+<title>Notes-mode: Table of Contents</title>
+
+<meta name="description" content="Notes-mode: Table of Contents">
+<meta name="keywords" content="Notes-mode: Table of Contents">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.roman {font-family:serif; font-weight:normal;}
+span.sansserif {font-family:sans-serif; font-weight:normal;}
+ul.toc {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+
+<a name="SEC_Contents"></a>
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Introduction-1" href="notes-mode_1.html#Introduction">1. Introduction</a>
+  <ul class="toc">
+    <li><a name="toc-What-is-it_003f-1" href="notes-mode_1.html#What-is-it_003f">1.1 What is it?</a></li>
+    <li><a name="toc-Why-keep-notes-at-all_003f-1" href="notes-mode_1.html#Why-keep-notes-at-all_003f">1.2 Why keep notes at all?</a></li>
+    <li><a name="toc-Why-keep-notes-on_002dline_003f-1" href="notes-mode_1.html#Why-keep-notes-on_002dline_003f">1.3 Why keep notes on-line?</a></li>
+    <li><a name="toc-Why-use-notes_002dmode_003f-1" href="notes-mode_1.html#Why-use-notes_002dmode_003f">1.4 Why use notes-mode?</a></li>
+    <li><a name="toc-Y2K-Statement-1" href="notes-mode_1.html#Y2K-Statement">1.5 Y2K Statement</a></li>
+    <li><a name="toc-Related-work-1" href="notes-mode_1.html#Related-work">1.6 Related work</a></li>
+    <li><a name="toc-Staying-on-top-1" href="notes-mode_1.html#Staying-on-top">1.7 Staying on top</a></li>
+  </ul></li>
+  <li><a name="toc-Basics-1" href="notes-mode_2.html#Basics">2. Basics</a>
+  <ul class="toc">
+    <li><a name="toc-Getting-started-1" href="notes-mode_2.html#Getting-started">2.1 Getting started</a></li>
+    <li><a name="toc-A-notes-file-1" href="notes-mode_2.html#A-notes-file">2.2 A notes file</a></li>
+    <li><a name="toc-The-notes-index-1" href="notes-mode_2.html#The-notes-index">2.3 The notes index</a></li>
+    <li><a name="toc-The-notes-directories-1" href="notes-mode_2.html#The-notes-directories">2.4 The notes directories</a></li>
+  </ul></li>
+  <li><a name="toc-Advanced-Features-1" href="notes-mode_3.html#Advanced-Features">3. Advanced Features</a>
+  <ul class="toc">
+    <li><a name="toc-Notes-files-1" href="notes-mode_3.html#Notes-files">3.1 Notes files</a>
+    <ul class="toc">
+      <li><a name="toc-Getting-around-1" href="notes-mode_3.html#Getting-around">3.1.1 Getting around</a></li>
+      <li><a name="toc-Subject-summary-1" href="notes-mode_3.html#Subject-summary">3.1.2 Subject summary</a></li>
+      <li><a name="toc-Encryption-1" href="notes-mode_3.html#Encryption">3.1.3 Encryption</a></li>
+      <li><a name="toc-Useful-conventions-1" href="notes-mode_3.html#Useful-conventions">3.1.4 Useful conventions</a></li>
+    </ul></li>
+    <li><a name="toc-Notes-indices-1" href="notes-mode_3.html#Notes-indices">3.2 Notes indices</a></li>
+    <li><a name="toc-Notes_002dmode-configuration-1" href="notes-mode_3.html#Notes_002dmode-configuration">3.3 Notes-mode configuration</a></li>
+  </ul></li>
+  <li><a name="toc-History-1" href="notes-mode_4.html#History">4. History</a>
+  <ul class="toc">
+    <li><a name="toc-Notes_002dmode-history-1" href="notes-mode_4.html#Notes_002dmode-history">4.1 Notes-mode history</a></li>
+    <li><a name="toc-Credits-1" href="notes-mode_4.html#Credits">4.2 Credits</a></li>
+    <li><a name="toc-Changes-1" href="notes-mode_4.html#Changes">4.3 Changes</a></li>
+    <li><a name="toc-Suggested-features-1" href="notes-mode_4.html#Suggested-features">4.4 Suggested features</a></li>
+  </ul></li>
+  <li><a name="toc-Installation-1" href="notes-mode_5.html#Installation">5. Installation</a></li>
+  <li><a name="toc-Keystroke-index-1" href="notes-mode_6.html#Keystroke-index">Keystroke index</a></li>
+  <li><a name="toc-Concept-index-1" href="notes-mode_7.html#Concept-index">Concept index</a></li>
+</ul>
+</div>
+<hr size="1">
+<table cellpadding="1" cellspacing="1" border="0">
+<tr><td valign="middle" align="left">[<a href="notes-mode.html#Top" title="Cover (top) of document">Top</a>]</td>
+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_6.html#Keystroke-index" title="Index">Index</a>]</td>
+<td valign="middle" align="left">[<a href="notes-mode_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<p>
+ <font size="-1">
+  This document was generated by <em>John Heidemann</em> on <em>April 4, 2012</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
+ </font>
+ <br>
+
+</p>
+</body>
+</html>
diff --git a/packages/notes-mode/Makefile.in b/packages/notes-mode/Makefile.in
new file mode 100644 (file)
index 0000000..286bf63
--- /dev/null
@@ -0,0 +1,192 @@
+
+#
+# Makefile.in
+# (if you're reading Makefile, it's autogenerated from Makefile.in)
+# $Id: Makefile.in,v 1.31 2006/01/14 23:26:41 johnh Exp $
+#
+
+######################################################################
+#
+# user configurable parameters
+#
+
+prefix=@prefix@
+# LIB_DIR should be a private place for notes-mode stuff.
+LIB_DIR=@datadir@/notes-mode
+# EL_DIR should be where your site-specific emacs .el{,c}'s go.
+EL_DIR=@lisp_dir@
+# INFO_DIR is for emacs info files.
+INFO_DIR=@infodir@
+INSTALL_INFO=@install_info@
+INSTALL_INFO_SECTION=@install_info_section@
+
+# must be perl 5.000 or better.
+PERL=@perlbin@
+# must be 19 or greater
+EMACS=@emacsbin@
+
+MKDIR_P=@mkdir_p@
+
+#
+# end of user configurable parameters
+#
+######################################################################
+
+
+INSTALLABLE_OTHERS = \
+       README \
+       sample.notesrc \
+       release
+
+OTHERS = \
+       COPYING \
+       Makefile.in \
+       configure \
+       configure.in \
+       install-sh \
+       notes-mode.texi \
+       notes-mode.info \
+       notes-mode.ps.gz
+
+SCRIPTS = \
+       mkall mkindex mkprevnext mkrawindex mkindexcache \
+       mkconfig mknew catsubject notesinit setcrontab \
+       Notes.pm NotesIndex.pm NotesVars.pm
+
+ELS = \
+       notes-variables.el \
+       notes-mode.el notes-index-mode.el \
+       notes-url.el notes-aux.el \
+       notes-emacs.el notes-xemacs.el \
+       notes-first.el
+
+ITMP = /tmp/notes-mode
+
+MY_PERL=/usr/bin/perl
+MY_LIB_DIR=/home/johnh/NOTES/BIN
+MY_EL_DIR=/home/johnh/LIB/EMACS
+
+######################################################################
+#
+# Compliation stuff.
+#
+
+all:
+       @echo "nothing required for make; just run \"make install\""
+
+
+######################################################################
+#
+# Installation stuff.
+#
+
+# install_bins: $(BINS)
+
+install_els: 
+       $(MKDIR_P) $(EL_DIR)
+       $(MKDIR_P) $(LIB_DIR)
+       echo '(setq load-path (cons "$(EL_DIR)" load-path))' >.notes-recompile.el
+       echo '(cd "$(EL_DIR)")' >>.notes-recompile.el
+       for i in $(ELS); \
+       do \
+               sed -e 's@$(MY_LIB_DIR)@$(LIB_DIR)@' \
+                       -e 's@$(MY_EL_DIR)@$(EL_DIR)@' \
+                       -e 's@$(MY_LIB_DIR)@$(LIB_DIR)@' < $$i >$(EL_DIR)/$$i; \
+               echo '(byte-compile-file "'$$i'")' >>.notes-recompile.el; \
+       done
+       @echo Warnings in the elisp compilation can be ignored.
+       $(EMACS) -q -batch -l .notes-recompile.el
+
+install_scripts:
+       for i in $(SCRIPTS); \
+       do \
+               sed -e 's@$(MY_PERL)@$(PERL)@' \
+                       -e 's@$(MY_EL_DIR)@$(EL_DIR)@' \
+                       -e 's@$(MY_LIB_DIR)@$(LIB_DIR)@' < $$i >$(LIB_DIR)/$$i; \
+               chmod +x $(LIB_DIR)/$$i; \
+       done
+
+install_others:
+       cp $(INSTALLABLE_OTHERS) $(LIB_DIR)
+
+install_info:
+       $(MKDIR_P) $(INFO_DIR)
+       cp notes-mode.info $(INFO_DIR)/notes-mode
+       if test x$(INSTALL_INFO) = xno; \
+       then \
+                echo 'You must manually add notes mode to your info "dir" file.'; \
+       else \
+               $(INSTALL_INFO) $(INSTALL_INFO_SECTION) --info-file=notes-mode.info --dir-file=$(INFO_DIR)/dir; \
+       fi
+
+
+install_whatnext:
+       @echo "Once notes-mode is installed, start it by running emacs,"
+       @echo "and then do M-x load-library RET notes-mode RET."
+       @echo "Or run   info notes-mode   to read the manual."
+
+
+install: install_els install_scripts install_others install_info install_whatnext
+       @echo Notes-mode is installed.
+
+
+######################################################################
+#
+# Documentation stuff.
+#
+
+notes-mode.info: notes-mode.texi
+       makeinfo notes-mode.texi
+
+notes-mode.dvi: notes-mode.texi
+       texi2dvi notes-mode.texi
+
+notes-mode.ps.gz: notes-mode.dvi notes-mode.texi
+       dvips -f notes-mode.dvi |gzip >notes-mode.ps.gz
+
+html:
+       test -d HTML || mkdir HTML
+       ( cd HTML; texi2html -split_chapter ../notes-mode.texi )
+       ( cd HTML; texi2html -monolithic ../notes-mode.texi )
+
+texi: notes-mode.info notes-mode.dvi notes-mode.ps.gz html
+
+# Install_www is only for me.
+WWW_DIR=$$HOME/LIB/WWW/SOFTWARE/NOTES_MODE
+install_www: texi
+       cp HTML/*.html $(WWW_DIR)
+       cp notes-mode.ps.gz $(WWW_DIR)
+       cp notes-mode-`cat release`.tar.gz $(WWW_DIR)
+
+######################################################################
+#
+# Release stuff.
+#
+
+tar.gz: texi
+       $(MKDIR_P) $(ITMP)-`cat release`
+       cp $(INSTALLABLE_OTHERS) $(OTHERS)  $(ITMP)-`cat release`
+       mkdir $(ITMP)-`cat release`/HTML
+       cp -R HTML/.  $(ITMP)-`cat release`/HTML
+       cp $(SCRIPTS)  $(ITMP)-`cat release`
+#      cp $(SRCS)  $(ITMP)-`cat release`
+       for i in $(ELS); do cp $$i $(ITMP)-`cat release`; done
+#      cp -r SAMPLE  $(ITMP)-`cat release`
+#      echo "dir: $(ITMP)-`cat release`/SAMPLE" >$(ITMP)/notesrc
+#      ( NOTESRC=$(ITMP)-`cat release`/notesrc; export NOTESRC;  $(ITMP)-`cat release`/mkall )
+       ( cd /tmp; tar cvf - ./notes-mode-* ) | gzip >notes-mode-`cat release`.tar.gz
+       rm -rf $(ITMP)-`cat release`/HTML
+       rm -f $(ITMP)-`cat release`/*
+       rmdir $(ITMP)-`cat release`
+
+tar.gz.uu: tar.gz
+       uuencode notes-mode-`cat release`.tar.gz <notes-mode-`cat release`.tar.gz >notes-mode-`cat release`.tar.gz.uu
+
+RELEASE_DIR=$$HOME/WORKING/JOHNH_WWW/SOFTWARE/NOTES_MODE
+
+copy_release:
+       cp notes-mode-`cat release`.tar.gz $(RELEASE_DIR)
+       mv notes-mode-`cat release`.tar.gz RELEASES
+       cp HTML/notes-mode/* $(RELEASE_DIR)
+       cp HTML/notes-mode.html $(RELEASE_DIR)
+
diff --git a/packages/notes-mode/Notes.pm b/packages/notes-mode/Notes.pm
new file mode 100755 (executable)
index 0000000..129299b
--- /dev/null
@@ -0,0 +1,116 @@
+#!/usr/bin/perl
+
+#
+# Notes.pm
+# $Id: Notes.pm,v 1.9 2010/06/20 18:31:22 johnh Exp $
+#
+# Copyright (C) 1996-2006,2012  Free Software Foundation, Inc.
+# Comments to <johnh@isi.edu>.
+#
+# This file is under the Gnu Public License, version 2.
+# For details see the COPYING which accompanies this distribution.
+#
+
+#
+# A Perl module implement a notes class. 
+#
+
+require 5.000;
+package Notes;
+use Carp;
+use strict;
+
+#----------------------------------------------------------------------
+
+# my($Notes::revsion) = '$Id: Notes.pm,v 1.9 2010/06/20 18:31:22 johnh Exp $'; #' font-lock hack
+# my($Notes::VERSION) = 1.00;
+
+# public method
+# optional argument: pathname to read
+sub new {
+    my ($class, $file) = @_;
+    my $self = bless {};
+    if (defined($file)) {
+       $self->read_from_file($file);
+    } else {
+        $self->init();
+    };
+    return $self;
+}
+
+
+# public method
+sub read_from_file {
+    my ($self, $filename) = @_;
+
+    $self->init();
+
+    open(FILE, "<$filename") || croak "Cannot open $filename";
+    my(@lines) = <FILE>;
+    close FILE;
+    my($i);
+    my($start, $Subject) = (0, undef);
+    my(%entries);
+
+    for ($i = 0; $i < $#lines; $i++) {
+       if ($lines[$i] =~ /^\* / &&
+               $lines[$i+1] =~ /^-+\r?$/) {
+           $self->push_entry($Subject, join("", @lines[$start .. $i-1]));
+           $start = $i;
+           ($Subject) = ($lines[$i] =~ /^\*\s+(.*)\r?$/);
+       };
+    };
+    $i = $#lines + 1;
+    $self->push_entry($Subject, join("", @lines[$start .. $i-1]));
+    return 1;
+}
+
+# public_method
+sub subjects {
+    my($self) = @_;
+    return $self->{'subjects'};
+}
+
+# public method
+sub by_subject {
+    my($self, $Subject) = @_;
+    my($subject) = lc($Subject);
+    return wantarray ? () : undef
+       if (!defined($self->{'entryis_by_subject'}{$subject}));
+    my(@ret) = ();
+    foreach (@{$self->{'entryis_by_subject'}{$subject}}) {
+       push (@ret, $self->{'entries'}[$_]);
+    };
+    return @ret;
+}
+
+# public method
+sub prelude {
+    my($self) = @_;
+    return $self->{'pre'};
+}
+
+
+# private method
+sub push_entry {
+    my($self, $Subject, $entry) = @_;
+    if (!defined($Subject)) {
+       $self->{'pre'} = $entry;
+       return;
+    };
+    my($subject) = lc($Subject);
+    push (@{ $self->{'subjects'} }, $Subject);
+    push (@{ $self->{'entries'} }, $entry);
+    push (@{ $self->{'entryis_by_subject'}{$subject} }, $#{$self->{'entries'}});
+}
+
+
+# private method
+sub init {
+    my($self) = @_;
+# These inits break things.  Go figure.
+#    @{ $self->{'subjects'} } =  @{$self->{'entries'}} = ();
+#    %{ $self->{'entryis_by_subject'} } = ();
+    $self->{'pre'} = '';
+}
+
diff --git a/packages/notes-mode/NotesIndex.pm b/packages/notes-mode/NotesIndex.pm
new file mode 100755 (executable)
index 0000000..f547435
--- /dev/null
@@ -0,0 +1,100 @@
+#!/usr/bin/perl
+
+#
+# NotesIndex.pm
+# $Id: NotesIndex.pm,v 1.3 2003/05/23 16:26:19 johnh Exp $
+#
+# Copyright (C) 1996,2012  Free Software Foundation, Inc.
+# Comments to <johnh@isi.edu>.
+#
+# This file is under the Gnu Public License, version 2.
+# For details see the COPYING which accompanies this distribution.
+#
+
+#
+# A Perl module implement a notes-index class. 
+#
+
+package NotesIndex;
+use Carp;
+use strict;
+
+require 5.000;
+$Notes::revsion = '$Id: NotesIndex.pm,v 1.3 2003/05/23 16:26:19 johnh Exp $';
+$Notes::VERSION = 1.00;
+
+=head1 NAME
+
+NotesIndex - a simple class for notes-index files
+
+=head1 Public Methods
+
+new, read_from_file, subjects, by_subject, prelude
+
+=cut
+#' # font-lock hack
+
+#----------------------------------------------------------------------
+
+
+# public method
+sub new {
+    my ($class, $file) = @_;
+    my $self = bless {};
+    if (!defined($file)) {
+        $self->init();
+    } else {
+       $self->read_from_file($file);
+    };
+    return $self;
+}
+
+
+# public method
+sub read_from_file {
+    my ($self, $filename) = @_;
+
+    $self->init();
+
+    open(FILE, "<$filename") || croak "Cannot open $filename";
+
+    while (<FILE>) {
+       chomp;
+       $self->push_link($_);
+    }; 
+
+    close FILE;
+    return 1;
+}
+
+# public_method
+sub subjects {
+    my($self) = @_;
+    return keys %{$self->{'links_by_subject'}};
+}
+
+# public method
+sub by_subject {
+    my($self, $subject) = @_;
+    $subject = lc($subject);
+    my($resref) = $self->{'links_by_subject'}{$subject};
+    return wantarray ? () : undef
+       if (!defined($resref));
+    return wantarray ? @$resref : 1;
+}
+
+
+# private method
+sub push_link {
+    my($self, $link) = @_;
+    my($subject) = ($link =~ m/\d{2}\#\* (.*)$/);
+    $subject = lc($subject);
+    push (@{ $self->{'links_by_subject'}{$subject} }, $link);
+}
+
+
+# private method
+sub init {
+    my($self) = @_;
+}
+
diff --git a/packages/notes-mode/NotesVars.pm b/packages/notes-mode/NotesVars.pm
new file mode 100755 (executable)
index 0000000..da35dab
--- /dev/null
@@ -0,0 +1,122 @@
+#!/usr/bin/perl -w
+
+#
+# NotesVars.pm
+# $Id: NotesVars.pm,v 1.8 2003/05/23 16:26:22 johnh Exp $
+#
+# Copyright (C) 1996,2012  Free Software Foundation, Inc.
+# Comments to <johnh@isi.edu>.
+#
+# This file is under the Gnu Public License, version 2.
+# For details see the COPYING which accompanies this distribution.
+#
+
+require 5.000;
+
+#
+# basic initialization
+#
+BEGIN {
+    no strict 'vars';   # avoid %::notes
+    $notes{'home'} = ((getpwuid($<))[7]);
+    my(@config) = `"$ENV{'NOTES_BIN_DIR'}/mkconfig" perl`;
+    die "$0: mkconfig failed\n" if ($#config == -1);
+    eval join("", @config);
+    unshift(@INC, $notes{'bin_dir'});
+}
+
+package NotesVars;
+require Exporter;
+
+@ISA = Exporter;
+#my(%notes);
+@EXPORT = qw(pathname_to_Ymd Ymd_to_epoch
+           pathname_to_epoch epoch_to_pathname
+           url_to_pathname
+           strftime_epoch
+           );
+use Time::Local;
+use POSIX qw(strftime);
+use strict;
+
+
+##
+## Strftime
+##
+## Because "use POSIX" is so slow, I wrote a standalone strftime program.
+## I'm not distributing it because mknew caching seems to solve this problem.
+##
+#
+#my($strftime_inited) = 0;
+#sub init_strftime {
+#    my($x);
+#    # We currently don't support an external strftime.
+#    if (-x "$::notes{'bin_dir'}/strftime" ) {
+#      # run the program
+#      $x = q<
+#              sub strftime_backend {
+#                  my($output) = `> .$::notes{'bin_dir'} .
+#                              q</strftime '$_[0]' $_[1]`;
+#                  chomp $output;
+#                  return $output;
+#              }
+#              >;
+#    } else {
+#      # use POSIX
+#      # This option is about 10 times slower to load.
+#      # Unfortunately eval'ing this code causes perl5.002
+#      # to crash on exit.
+#      $x = q<
+#              use POSIX;
+#              sub strftime_backend {
+#                  return POSIX::strftime($_[0],localtime($_[1])) ;
+#              }
+#              >;
+#    };
+#    eval $x;
+#    $strftime_inited = 1;
+#}
+#
+#sub strftime_epoch {
+#    &init_strftime() unless ($strftime_inited);
+#    return &strftime_backend(@_);
+#}
+
+sub strftime_epoch {
+    return POSIX::strftime($_[0], localtime($_[1]));
+}
+
+sub pathname_to_Ymd {
+    my($pathname) = @_;
+    # NEEDSWORK:  not general (assumes file_form is %y%m%d)
+    my($Y, $m, $d) = ($pathname =~ /(..)(..)(..)$/);
+    $Y += 1900 if ($Y >= 90 && $Y < 100);
+    $Y += 2000 if ($Y < 90 && $Y < 100);
+    return ($Y, $m, $d);
+}
+
+sub Ymd_to_epoch {
+    my($y, $m, $d) = @_;
+    $y -= 1900 if ($y > 1000);   # convert possible $Y to $y
+    return timelocal(0, 0, 12, $d, ($m-1), $y);
+}
+
+sub pathname_to_epoch {
+    my($pathname) = @_;
+    my($Y, $m, $d) = &pathname_to_Ymd($pathname);
+    return &Ymd_to_epoch($Y, $m, $d);
+}
+
+sub epoch_to_pathname {
+    my($epoch) = @_;
+    return strftime_epoch("$::notes{dir}/$::notes{int_form}/$::notes{file_form}", $epoch);
+}
+
+sub url_to_pathname {
+    my($url) = @_;
+    $url =~ s@^file:///@@;
+    my($home) = $::notes{home};
+    $url =~ s@^\~@${home}@;
+    $url =~ s@\#\* .*$@@;
+    return $url;
+}
diff --git a/packages/notes-mode/README b/packages/notes-mode/README
new file mode 100644 (file)
index 0000000..d26c446
--- /dev/null
@@ -0,0 +1,72 @@
+Notes-mode
+----------
+by John Heidemann, <johnh@isi.edu>
+
+For documentation, see
+       notes-mode.info
+       HTML/notes-mode.html
+or     <http://www.isi.edu/~johnh/SOFTWARE/NOTES_MODE/>
+
+
+WHAT IS NOTES-MODE?
+-------------------
+
+(From the info documentation)
+
+Notes-mode is an indexing system for on-line note-taking.
+Notes-mode is composed of two parts, the visible part, a major-mode for
+emacs to aid note-taking; and the invisible part, scripts which
+periodically index your notes for you.
+
+For more sales, including
+       Why keep notes?
+       Why keep notes on-line?
+       Why keep notes with notes-mode?
+see <http://www.isi.edu/~johnh/SOFTWARE/NOTES_MODE/notes-mode_1.html>
+
+
+REQUIREMENTS
+------------
+
+Notes-mode requires Perl-5.  For information: http://www.perl.com
+
+
+INSTALLATION
+------------
+
+For each user:
+       1. Run notesinit
+               (from where it's installed, /usr/local/bin/notesinit
+               by default)
+
+After you've installed notes mode you're encouraged to subscribe
+to the mailing lists:
+Send the message "subscribe" to
+       notes-mode-announce-request@heidemann.la.ca.us and 
+       notes-mode-talk-request@heidemann.la.ca.us.
+(Or use majordomo@heidemann.la.ca.us.)
+
+
+COPYRIGHT
+---------
+
+Notes-mode is Copyright (C) 1994-2002,2012  Free Software Foundation, Inc.
+Notes-mode comes with ABSOLUTELY NO WARRANTY.
+This is Free Software, and you are welcome to redistribute it under certain
+conditions.  See the file ``COPYING'' for details about both of
+these conditions.
+
+
+TODO
+----
+
+- figure out how to pass the configured file names to the Perl scripts.
+- Use `completion-at-point-functions'.
+- Use epa/epg for encryption.
+- Figure out what to do about mkall.
+- Use defcustom and get rid of "* in docstrings.
+- Remove notes-use-font-lock.
+- Don't run notes-first just because we load the .el files.
+- Unify notes-utility-dir and notes-bin-dir.
+- Add support for mouse-1-click-follows-link.
+
diff --git a/packages/notes-mode/catsubject b/packages/notes-mode/catsubject
new file mode 100755 (executable)
index 0000000..38ba8f5
--- /dev/null
@@ -0,0 +1,112 @@
+#!/usr/bin/perl -w
+
+#
+# catsubject
+# $Id: catsubject,v 1.7 2003/05/23 16:26:24 johnh Exp $
+#
+# Copyright (C) 1996,2012  Free Software Foundation, Inc.
+# Comments to <johnh@isi.edu>.
+#
+# This file is under the Gnu Public License, version 2.
+# For details see the COPYING which accompanies this distribution.
+#
+
+
+sub usage {
+    print STDOUT <<END;
+usage: $0 [-m] subject
+
+Outputs (to stdout) the contents of all entries with the given subject.
+
+Assumes that rawindex is up-to-date.
+
+Options:
+    -m match subjects with a perl regexp
+
+END
+    exit 1
+}
+
+require 5.000;
+
+use Getopt::Long;
+
+&usage if ($#ARGV >= 0 && $ARGV[0] eq '-?');
+my(%opts);
+&GetOptions(\%opts, qw(m));
+&usage if ($#ARGV < 0);
+
+#BEGIN {
+#    $home_dir = ((getpwuid($<))[7]);
+#    @config = `$home_dir/.notesrc perl`;
+#    die "$0: missing .notesrc\n" if ($#config == -1);
+#    eval join("", @config);
+#    unshift(@INC, $notes{'bin_dir'});
+#}
+
+use POSIX;
+BEGIN { unshift(@INC, $ENV{'NOTES_BIN_DIR'}); };
+use NotesVars;
+use Notes;
+use NotesIndex;
+use strict;
+
+
+
+# NEEDSWORK: replace with real argument parsing
+my($Subject) = @ARGV;
+my($subject) = lc($Subject);
+my($match_subject) = ($opts{'m'});
+
+my($subject_description) = ($match_subject ? "match on " : "") . $Subject;
+
+
+#
+# Say what we're doing.
+#
+print "\n* What\n------\n\nOutput of:\n\t$0 " . $subject_description . "\n" .
+    "as of " . localtime(time) . "\n\n\n";
+
+my($notes_index) = new NotesIndex($::notes{dir} . "/rawindex");
+
+
+#
+# Match?
+#
+my(@subjects);
+if ($match_subject) {
+    my($subjects) = ();
+    my($code) = '$s =~ m{' . $subject . '}';
+    my($s);
+    foreach $s ($notes_index->subjects()) {
+       if (eval $code) {
+           push(@subjects, $s);
+       };
+    };
+    print "Subjects:\n", join("\n", @subjects), "\n\n";
+} else {
+    @subjects = ($subject);
+};
+
+#
+#  Do it.
+#
+my($url);
+my($s);
+foreach $s (@subjects) {
+    foreach $url ($notes_index->by_subject($s)) {
+        my($notes) = new Notes(url_to_pathname($url));
+        my($entry);
+        foreach $entry ($notes->by_subject($s)) {
+            my($this) = "this: <$url>";
+           my(@lines) = split(/\n/, $entry);
+           if ($lines[2] =~ /^prev: /) {
+               print join("\n", @lines[0..2], $this, @lines[3..$#lines], "\n\n");
+           } else {
+               print join("\n", @lines[0..1], $this, @lines[2..$#lines], "\n\n");
+           };
+        };
+    };
+};
+
+exit 0;
diff --git a/packages/notes-mode/dir b/packages/notes-mode/dir
new file mode 100644 (file)
index 0000000..8f1258f
--- /dev/null
@@ -0,0 +1,20 @@
+Ceci est le fichier .../info/dir, lequel contient le noeud 
+le plus haut dans la hiérarchie Info, noeud appelé (dir)Top.
+La première fois que Info est invoqué, vous démarrez la recherche 
+à partir de ce noeud.
+\1f
+File: dir,     Node: Top       Ceci est le haut de l'arborescence INFO
+
+  Ceci (le noeud Répertoire) fournit un menu des sujets majeurs.
+  Taper « q » pour quitter, « ? » pour lister toutes les commandes Info,
+  « d » pour revenir à cet endroit,
+  « h » fournit un guide d'initiation pour les nouveaux venus,
+  « mEmacs<Return> » démarre une consultation du manuel Emacs, etc.
+
+  En Emacs, vous pouvez cliquer avec le bouton-2 de la souris sur un item menu 
+  ou sur une référence croisée pour le sélectionner.
+
+* Menu:
+
+Emacs
+* Notes-mode: (notes-mode).     Organizing on-line note-taking.
diff --git a/packages/notes-mode/mkall b/packages/notes-mode/mkall
new file mode 100755 (executable)
index 0000000..f2ec8b6
--- /dev/null
@@ -0,0 +1,216 @@
+#!/usr/bin/perl -w
+# If the above path is incorrect for your system,
+# FOLLOW THE INSTALLATION INSTRUCTIONS in README.
+
+#
+# mkall
+# $Id: mkall,v 1.18 2007/02/23 05:14:59 johnh Exp $
+#
+# Copyright (C) 1996,2012  Free Software Foundation, Inc.
+# Comments to <johnh@isi.edu>.
+#
+# This file is under the Gnu Public License, version 2.
+# For details see the COPYING which accompanies this distribution.
+#
+
+sub usage {
+    print STDOUT <<END;
+usage: $0
+
+Does all reindexing needed for notes-mode.
+END
+    exit 1;
+}
+
+
+require 5.000;
+BEGIN { unshift(@INC, $ENV{'NOTES_BIN_DIR'}); };
+use NotesVars;
+use strict;
+use Config;
+
+&usage if (($#ARGV >= 0 && $ARGV[0] eq '-?'));
+
+my($perl) = &find_perl_binary;
+
+# xxx: currently rawindex generates @subjects that index uses.
+# Should remove this dependency.
+my(@subjects) = ();
+
+&make_rawindex;
+&make_index;
+&make_index_cache;
+&make_prevnext;
+&make_mknew_cache;
+&fix_perms;
+
+exit 0;
+
+
+sub find_perl_binary {
+    my($perl) = $^X;
+    return $perl if (-x $perl);
+    $perl = $Config{'installbin'} . "/perl";
+    return $perl if (-x $perl);
+    # If we can't find perl, then we assume the user's set the #! lines correctly.
+    return '';
+}
+
+
+sub run_over_all_notes {
+    my($cmd, $user_cmd_name) = @_;
+    open(CMD, "| $cmd") || die ("$0: cannot run $user_cmd_name.\n");
+    foreach (glob "$::notes{'int_glob'}/$::notes{'file_glob'}") {
+       print CMD "$_\n";
+    };    
+    close CMD;
+    if ($? >> 8) {
+        die "$0: $user_cmd_name failed.";
+    };
+}
+
+
+#
+# rawindex 
+#
+#
+# The main thing that happens here is we find and sort the notes entries.
+# We do the sorting in perl because the system sort is less portable
+# (wrt stability, for example).
+#
+sub make_rawindex {
+    chdir ($::notes{'dir'}) || die "$0: cannot cd to $::notes{'dir'}.\n";
+    # if (-f "rawindex") {
+    #     rename('rawindex', 'rawindex~') || die "$0: cannot rename rawindex.\n";
+    # };
+    # my($sed_arg) = '"s@' . $::notes{home} . '@/~@"';
+    # system(<<END);
+    #     $::notes{'bin_dir'}/mkrawindex $::notes{'dir'}/$::notes{'int_glob'}/$::notes{'file_glob'} |
+    #     sort -f -t# +1 +0 |
+    #     sed $sed_arg > rawindex
+    # END
+    # if ($? >> 8) {
+    #     rename('rawindex', 'rawindex.bad');
+    #     rename('rawindex~', 'rawindex');
+    #     die "$0: rawindex pipeline failed.";
+    # };
+    #
+    # xxx: eventually this will overflow the buffer and we'll need to
+    # do something like xargs.  However, in 10 years of use this hasn't happened
+    # for me yet.
+    run_over_all_notes("$perl $::notes{'bin_dir'}/mkrawindex -X >prerawindex", "mkrawindex");
+#    open (IF, "$perl $::notes{'bin_dir'}/mkrawindex $::notes{'dir'}/$::notes{'int_glob'}/$::notes{'file_glob'} |") || die "$0: cannot run mkrawindex\n";
+#    binmode IF;
+    open(IF, "<prerawindex") || die  "$0: cannot open prerawindex.\n";
+    binmode IF;
+    open (OF, ">rawindex+") || die "$0: cannot write to rawindex+\n";
+    binmode OF;
+    my($internal_marker) = chr(1);
+    foreach (<IF>) {
+        chomp;
+       s@$::notes{'home'}@/~@;
+       my($left, $right) = /^([^#]+)\#(.*)$/;
+       push(@subjects, "${right}${internal_marker}${left}");
+    };
+    close IF;
+    @subjects = sort { uc($a) cmp uc($b) } @subjects;
+    foreach (0..$#subjects) {
+        my($left, $right) = ($subjects[$_] =~ /^(.+)${internal_marker}(.*)$/);
+       $subjects[$_] = "$right#$left";
+       print OF "$subjects[$_]\n";
+    };
+    close OF;
+    if (-f 'rawindex') {
+        rename('rawindex', 'rawindex~') || die "$0: rename rawindex{,~} failed.\n";
+    };
+    rename('rawindex+', 'rawindex') || die "$0: rename rawindex{+,} failed.\n";
+}
+
+#
+# index
+#
+sub make_index {
+    if (-f 'index') {
+        rename('index', 'index~') || die "$0: rename index{,~} failed.\n";
+    };
+    open (OF, "| $perl $::notes{'bin_dir'}/mkindex > index") || die "$0: cannot run mkindex.\n";
+    binmode OF;
+    my($last);
+    foreach (@subjects) {
+        if (!defined($last) || $last ne uc($_)) {
+           print OF "$_\n";
+           $last = uc($_);
+         };
+    };
+    close OF;
+    if ($? >> 8) {
+        rename('index', 'index.bad') || warn "$0: recovery rename index{,.bad} failed.\n";
+       rename('index~', 'index') || warn "$0: recovery rename index{~,} failed.\n";
+       die "$0: index pipeline failed.";
+    };
+}
+
+#
+# index_cache.el
+#
+# Yes, the code should probably be compiled,
+# but compilation time doesn't seem to be the problem.
+#
+sub make_index_cache {
+    if (-f 'index_cache.el') {
+        rename('index_cache.el', 'index_cache.el~') || die "$0: rename index_cache.el{,~} failed.\n";
+    };
+    system(<<END);
+    $perl $::notes{'bin_dir'}/mkindexcache < index > index_cache.el
+END
+    #    emacs -batch --eval '(byte-compile-file "index_cache.el")' 2>&1 | grep -v 'free variable'
+    if ($? >> 8) {
+        rename('index_cache.el', 'index_cache.el.bad') || warn "$0: reanme index_cache.el{,.bad} failed.\n";
+       rename('index_cache.el~', 'index_cache.el') || warn "$0: rename index_cache.el{~,} failed.\n";
+       unlink('index_cache.elc') if (-f 'index_cache.elc');
+       die "$0: index pipeline failed.";
+    };
+    #
+    # Bug found by Klaus Zeitler <kzeitler@lucent.com>:
+    # if we generate index_cache.el in less than a second,
+    # it won't be considered up-to-date.
+    #
+    if (-M 'index' == -M 'index_cache.el') {
+       # We're too fast---stall and update the file
+       sleep(1);   # stall
+       system('touch index_cache.el');   # "update"
+    };
+}
+
+
+#
+# prevnext
+#
+sub make_prevnext {
+    run_over_all_notes("$perl $::notes{'bin_dir'}/mkprevnext -X ./rawindex", "mkprevnext");
+}
+
+#
+# mknew cache
+#
+sub make_mknew_cache {
+    my($todays_file) = &epoch_to_pathname(time);
+    system(<<END);
+    $perl $::notes{'bin_dir'}/mknew -c $todays_file >./mknew.cache
+END
+}
+
+#
+# fix permissions
+#
+sub fix_perms {
+    my($perm);
+    foreach (glob("*"), glob("*/*")) {
+       my($mode) = (stat($_))[2];
+       if ($mode & 0077) {
+           chmod (($mode & 0700), $_) || warn "$0: could not chmod $_.\n";
+        };
+    };
+}
+
+
diff --git a/packages/notes-mode/mkconfig b/packages/notes-mode/mkconfig
new file mode 100755 (executable)
index 0000000..eeb8180
--- /dev/null
@@ -0,0 +1,118 @@
+#!/usr/bin/perl -w
+
+#
+# mkconfig
+# $Id: mkconfig,v 1.10 2003/05/23 16:26:30 johnh Exp $
+#
+# Copyright (C) 1996,2012  Free Software Foundation, Inc.
+# Comments to <johnh@isi.edu>.
+#
+# This file is under the Gnu Public License, version 2.
+# For details see the COPYING which accompanies this distribution.
+#
+
+sub usage {
+    print STDOUT <<END;
+usage: $0 [elisp|perl]
+END
+    exit 1;
+}
+
+require 5.000;
+use strict;
+
+&usage if ($#ARGV != 0 || $ARGV[0] eq '-?');
+
+
+my($type) = $ARGV[0];
+&usage if ($type ne 'elisp' && $type ne 'perl');
+
+
+my($home_dir) = ((getpwuid($<))[7]);
+
+my(%defaults) = (
+    'dir'      => ['path', '~/NOTES'],
+    'int_form' => ['form', '%Y%m'],
+    'file_form'        => ['form', '%y%m%d'],
+    );
+$defaults{'bin_dir'} = ['path', "$ENV{'NOTES_BIN_DIR'}"]
+    if defined($ENV{'NOTES_BIN_DIR'});
+
+my($key, $value, %notes);
+while (($key, $value) = each %defaults) {
+    $notes{$key} = $value->[1];
+}
+
+#
+# open the file
+#
+my($notesrc) = "$home_dir/.notesrc";
+$notesrc = $ENV{'NOTESRC'} if (defined($ENV{'NOTESRC'}));
+
+if (open (CONFIG, "<$notesrc")) {
+    while (<CONFIG>) {
+        next if (/^\s*#/);
+        next if (/^\s*$/);
+        next if (/^\s*exec/);
+        ($key, $value) = /^\s*([^:]+):\s*(.*)$/;
+        $notes{$key} = $value;
+        die("$0: file_form cannot be changed from %y%m%d.\n")
+       if ($key eq 'file_form' && $value ne '%y%m%d');
+    };
+    close CONFIG;
+};
+
+#
+# generate extra forms
+#
+my(%old_notes) = %notes;
+while (($key, $value) = each %old_notes) {
+    next if ($key eq '');
+
+    # fix forms
+    if ($defaults{$key}->[0] eq 'form') {
+       my($oldkey, $oldvalue) = ($key, $value);
+       $key =~ s/_form/_glob/;
+       $value =~ s/%Y/[12][90][0-9][0-9]/g;
+       $value =~ s/%(y|m|d)/[0-9][0-9]/g;
+       $notes{$key} = $value;
+
+       my($key, $value) = ($oldkey, $oldvalue);
+       $key =~ s/_form/_regexp/;
+       $value =~ s/%Y/[12][90]([0-9][0-9])/g;
+       $value =~ s/%(y|m|d)/([0-9][0-9])/g;
+       $notes{$key} = $value;
+    };
+};
+$notes{'url_prefix'} = "file:///$notes{'dir'}/";
+
+#
+# output
+#
+#if ($type eq 'perl') {
+#} else {
+#};
+my($comment) = ($type eq 'perl' ? '# ' : '; ');
+print "$comment automatically generated by $0\n";
+while (($key, $value) = each %notes) {
+    next if ($key eq '');
+
+    # normalize stuff
+    if (defined($defaults{$key}) && $defaults{$key}->[0] eq 'path') {
+       # not absolute or ~, then it's in notes_dir.
+       $value = "$notes{'dir'}/$value" if ($value !~ m@^[~/]@);
+       # fix ~
+        $value =~ s@^~/@$home_dir/@;
+    };
+
+    if ($type eq 'perl') {
+       print "\$notes{'$key'} = '$value';\n";
+    } else {
+       $key =~ s/_/-/g;
+       $value =~ s/([()])/\\\\$1/g if ($key =~ /-regexp$/);
+       print "(defvar notes-$key \"$value\")\n";
+    };
+};
+
+exit 0;
+
diff --git a/packages/notes-mode/mkindex b/packages/notes-mode/mkindex
new file mode 100755 (executable)
index 0000000..e184875
--- /dev/null
@@ -0,0 +1,41 @@
+#!/usr/bin/perl -w
+
+#
+# mkindex
+# $Id: mkindex,v 1.9 2003/05/23 16:26:33 johnh Exp $
+#
+# Copyright (C) 1994-1996,2012  Free Software Foundation, Inc.
+# Comments to <johnh@isi.edu>.
+#
+# This file is under the Gnu Public License.
+#
+
+sub usage {
+    print STDERR <<END;
+usage: $0 <rawindex >index
+
+Converts a raw index from a notes database into an index
+suitable for notes-index-mode in emacs.
+END
+    exit 1;
+}
+
+require 5.000;
+
+while (<>) {
+    chomp;
+    ($date, $subject) = m@/(\d{6})#\* (.*)$@;
+    warn("could not find date in rawindex line ``$_''.\n"), next if (!defined($date));
+    warn("could not find subject in rawindex line ``$_''.\n"), next if (!defined($subject));
+    $lcsubject = lc($subject);
+    $subject{$lcsubject} = $subject;
+    $list{$lcsubject} = "" if (!defined($list{$lcsubject}));   # for -w
+    $list{$lcsubject} .= "$date, ";
+};
+
+print "# -*- mode: notes-index -*-\n";
+foreach (sort keys %list) {
+    # Trim the trailing ", ".
+    $list{$_} =~ s/, $//;
+    print "$subject{$_}: $list{$_}\n";
+};
diff --git a/packages/notes-mode/mkindexcache b/packages/notes-mode/mkindexcache
new file mode 100755 (executable)
index 0000000..6d8f391
--- /dev/null
@@ -0,0 +1,82 @@
+#!/usr/bin/perl -w
+
+#
+# mkindexcache
+# $Id: mkindexcache,v 1.12 2008/08/08 17:41:14 johnh Exp $
+#
+# Copyright (C) 1994-2006,2012  Free Software Foundation, Inc.
+# Comments to <johnh@isi.edu>.
+#
+# This file is under the Gnu Public License.
+#
+
+sub usage {
+    print STDERR <<END;
+usage: $0 <index >index.el
+
+Converts a processed index into elisp code to intern
+the symbols and font-lock the buffer.
+END
+    exit 1;
+}
+
+require 5.006;  # for IO handling of :locale
+
+# Force unicode for input and output.
+# Without this requirement, unicode on the input results in incorrect
+# (byte-level, not character-level) values of $seek,
+# and since emacs' put-text-property is char-level,
+# it gets off.
+use open ':locale';   # Now let $ENV{LANG} and $ENV{LC_CTYPE} determine input encoding; previously we forced utf8, but not all are pure.
+
+my(@subjects) = ();
+my(@sstart, @send) = ();
+my($seek) = 1;
+
+while (<>) {
+    if (m@^(.*): \d@) {
+        push(@subjects, $1);
+       push(@sstart, $seek);
+       push(@send, $seek + length($1));
+    };
+    $seek += length($_);
+#    my $l1 = length($_);
+#    my $l2;
+#    do { use bytes; $l2 = length($_); };
+#    print "; $l1 $l2\n";
+};
+
+sub round_to_power_of_8 {
+    my($n) = @_;
+    return 8 ** (length(sprintf("%o", $n)));
+}
+
+print ";; auto-generated by mkindexcache\n";
+print "(defun notes-index-parse-buffer-cached ()\n";
+my($asize) = round_to_power_of_8($#subjects) - 1;
+print "  (setq notes-subject-table (make-vector $asize 0))\n";
+
+# output intern'ing code
+print "  (mapcar (function (lambda (a) (intern a notes-subject-table))) '(\n";
+foreach (@subjects) {
+    my($qsubject) = $_;
+    $qsubject =~ s/(["\\])/\\$1/g; #"
+    print "\t\"$qsubject\"\n";
+};
+print "    ))\n";
+
+# output font-lock code
+print "  (if notes-use-font-lock\n" .
+      "    (progn\n" .
+      "      (remove-text-properties (point-min) (point-max) '(face nil))\n" .
+      "        (mapcar (function (lambda (a)\n" .
+      "                            (put-text-property (car a) (cdr a) 'face notes-bold-face)))\n" .
+      "                '(\n";
+for (0..$#subjects) {
+    print "\t\t($sstart[$_] . $send[$_])\n";
+};
+print "      )))))\n";
+
+exit 0;
+
+
diff --git a/packages/notes-mode/mknew b/packages/notes-mode/mknew
new file mode 100755 (executable)
index 0000000..3df1ae8
--- /dev/null
@@ -0,0 +1,254 @@
+#!/usr/bin/perl -w
+
+#
+# mknew
+# $Id: mknew,v 1.19 2006/01/14 18:28:41 johnh Exp $
+#
+# Copyright (C) 1996,2012  Free Software Foundation, Inc.
+# Comments to <johnh@isi.edu>.
+#
+# This file is under the Gnu Public License, version 2.
+# For details see the COPYING which accompanies this distribution.
+#
+
+
+sub usage {
+    print STDOUT <<END;
+usage: $0 new-date
+
+Create a new notes file by cloning the most recent date.
+Output goes to stdout.
+
+This program makes several assumptions about the notes-file format.
+Current hurestics:
+
+1.  Before the first real entry, lines of the form
+"12-Jan-96 Friday" and "12 Jan 1996" are updated.
+
+2.  A "today" entry is brought forward each day.
+(Some people use this as a to-do list.)
+
+3.  If an entry named according to the day of the week exists, a new
+one is made.
+
+
+Known Bugs:
+We assume that notes are created on the day that they correspond to.
+The date is not inferred from the filename.
+
+Known non-bug:  this program is Y2K OK.
+END
+    exit 1
+}
+
+
+&usage if ($#ARGV == -1 || ($#ARGV >= 0 && $ARGV[0] eq '-?'));
+
+require 5.000;
+use File::Basename;
+BEGIN { unshift(@INC, $ENV{'NOTES_BIN_DIR'}); };
+use NotesVars;
+use Notes;
+use POSIX qw(strftime);
+use strict;
+
+
+# xxx: dumb arg parsing
+my($cache) = 0;
+if ($ARGV[0] eq '-c') {
+    $cache = 1;
+    shift;
+};
+&usage if ($#ARGV != 0);
+my($date) = @ARGV;
+my($date_epoch) = pathname_to_epoch($date);
+my($name, $path) = fileparse($date);
+
+
+#
+# Constants.
+#
+my(@days, @months, @short_days, @short_months, $all_days_regexp_switch, $all_months_regexp_switch);
+&generate_constants;
+
+sub generate_constants {
+    # this stuff is based on the suggestion in perllocale(1)
+    # The junk at the end is an list that is struct tm;
+    # things are hardcoded to year 106 == 2006 since Jan 1 is nicely on a Sunday.
+    foreach (0..6) {
+       push(@days, strftime("%A",  1,0,0,$_+1,0, 106,$_));
+       push(@short_days, strftime("%a", 1,0,0,$_+1,0, 106,$_));
+    };
+    foreach (0..11) {
+       push(@months, strftime("%B", 1,0,0,1,$_, 106));
+       push(@short_months, strftime("%b", 1,0,0,1,$_, 106));
+    };
+    $all_days_regexp_switch = join("|", @days, @short_days);
+    $all_months_regexp_switch = join("|", @months, @short_months);
+};
+
+my($prev) = &figure_prev($name, $path);
+
+if ($cache) {
+    print "mknew.cache 830494922\n$prev\n$date\n";
+};
+my($prev_notes) = new Notes($prev);
+&mknew($prev_notes);
+
+
+exit 0;
+
+
+sub figure_prev {
+    my($name, $path) = @_;
+
+    # Given ${name,path}form, back-compute noon of the current date.
+    my($epoch) = &pathname_to_epoch("$path/$name");
+
+    my($tries);
+    # search back up to a year
+    for ($tries = 0; $tries < 365; $tries++) {
+       my($newpathname) = &epoch_to_pathname($epoch);
+       # print "$newpathname\n";
+       return $newpathname if (-f $newpathname);
+       $epoch -= 24 * 60 * 60;
+    };
+    exit 0;
+    # die("$0: could not find prior note.\n");
+}
+
+sub sanitize_note {
+    my($note, $title) = @_;
+    $note =~ s/\nprev: <.*>\nnext: <.*>\n/\n/m;
+    $note =~ s/\* .*\n-+\n//m if ($title);
+    return $note;
+}
+
+sub infer_day_form {
+    my($sample) = @_;
+    return '' if ($sample eq '');
+    return '%a' if (length($sample) == 3);
+    return '%A';
+}
+
+sub infer_month_form {
+    my($sample) = @_;
+    return '' if ($sample eq '');
+    return '%b' if (length($sample) == 3);
+    return '%B';
+}
+
+sub infer_year_form {
+    my($sample) = @_;
+    return '' if ($sample eq '');
+    return '%y' if (length($sample) == 2);
+    return '%Y';
+}
+
+sub mknew {
+    my($prev_notes) = @_;
+    my($pre) = $prev_notes->prelude();
+    my(@F);
+
+    #
+    # Case 1:  dates at the beginning
+    # This convetion in the format ``30-Apr-96 Tuesday'' is in use by johnh,
+    # and in the format ``30 Apr 1996'' by geoff.
+    #
+    # Case 1a:  DayName? DayNum Month Year DayName?
+    @F = ($pre =~ /[\s\n]?
+           ($all_days_regexp_switch)?(\W+)?
+           (\d+)(\W+)
+           ($all_months_regexp_switch)(\W+)
+           (\d+)
+           (\W+)?($all_days_regexp_switch)?[\n]
+           [ ]?(\-+)?
+           (\n+)/xm);
+    if ($#F != -1) {
+       # date heading
+       # Sigh.  Back-infer date format.
+       foreach (0..$#F) {
+           $F[$_] = '' if (!defined($F[$_]));
+       };
+       my($form);
+       $form = &infer_day_form($F[0]) . $F[1] .
+               "%d" . $F[3] .
+               &infer_month_form($F[4]) . $F[5] .
+               &infer_year_form($F[6]) .
+               $F[7] . &infer_day_form($F[8]);
+       # This next (bogus) line works around
+       # a bug in redhat 5.0's perl-5.004-2.
+       my($x) = sprintf("%x", 10);
+# print STDERR "mknew: 1a1b\n";
+       my($new_date) = strftime_epoch($form, $date_epoch);
+       # Hack to fix leading zeros.
+       # strftime should support something like %!0d.
+       if ($form =~ /^%d/m && $new_date =~ /^0\d/m) {
+           $new_date =~ s/^0//m;
+       };
+       print "\n$new_date\n";
+       print "" . ("-" x length($new_date))
+           if ($F[9] =~ /\-/);
+       print $F[10];
+    };
+    # Sigh, reverse month and DayNum
+    # Case 1b:  DayName? Month DayNum Year DayName?
+    @F = ($pre =~ /[\s\n]?
+           ($all_days_regexp_switch)?(\W+)?
+           ($all_months_regexp_switch)(\W+)
+           (\d+)(\W+)
+           (\d+)
+           (\W+)?($all_days_regexp_switch)?[\n]
+           [ ]?(\-+)?
+           (\n+)/xm);
+    if ($#F != -1) {
+       # date heading
+       # Sigh.  Back-infer date format.
+       foreach (0..$#F) {
+           $F[$_] = '' if (!defined($F[$_]));
+       };
+       my($form);
+       $form = &infer_day_form($F[0]) . $F[1] .
+               &infer_month_form($F[2]) . $F[3] .
+               "%d" . $F[5] .
+               &infer_year_form($F[6]) .
+               $F[7] . &infer_day_form($F[8]);
+       my($new_date) = strftime_epoch($form, $date_epoch);
+       print "\n$new_date\n";
+       print "" . ("-" x length($new_date)) . "\n\n"
+           if ($F[9] =~ /\-/);
+       print $F[10];
+    };
+
+    #
+    # Case 2:  the "today" entry.
+    # This convention is in use by johnh.
+    #
+    my(@todays) = $prev_notes->by_subject('Today');
+    if ($#todays >= 0) {
+        die ("Too many today entries.\n")
+           if ($#todays != 0);
+       print sanitize_note($todays[0], 0);
+    };
+
+    #
+    # Case 3:  a day-of-the-week entry.
+    # This convention is in use by geoff.
+    #
+    my($i);
+    foreach $i (@days) {
+       my(@entries) = $prev_notes->by_subject($i);
+       if ($#entries != -1) {
+           # Generate a raw entry; don't bother to move forward contents.
+           my($t) = "* " . strftime_epoch("%A", $date_epoch);
+           print "\n" .
+               $t .
+               "\n" .
+               ("-" x length($t)) .
+               "\n" .
+               sanitize_note($entries[0], 1);
+       };
+    };
+}
+
+
diff --git a/packages/notes-mode/mkprevnext b/packages/notes-mode/mkprevnext
new file mode 100755 (executable)
index 0000000..5e65149
--- /dev/null
@@ -0,0 +1,275 @@
+#!/usr/bin/perl -w
+
+#
+# mkprevnext
+# $Id: mkprevnext,v 1.22 2007/02/23 05:15:17 johnh Exp $
+#
+# Copyright (C) 1994-1996,2012  Free Software Foundation, Inc.
+# Comments to <johnh@isi.edu>.
+#
+# This file is under the Gnu Public License.
+#
+
+sub usage {
+    print STDOUT <<END;
+usage: $0 [-X] indexfile [FILE...]
+       Update the prev and next pointers in [file...]
+       based on indexfile.
+
+       We assume that indexfile is sorted.
+
+Option: -X means read the filesname from stdin rather than the command line.
+
+To update prev/next pointers do:
+       ./mkprevnext ./index 9?????
+END
+    exit 1
+}
+
+require 5.000;
+
+
+my($files_from_stdin) = undef;
+if ($ARGV[0] eq '-X') {
+    $files_from_stdin = 1;
+    shift @ARGV;
+}
+&usage if ($#ARGV < 0);
+
+%direction_delta = split(/ +/, 'prev -1   next 1');
+
+
+#
+# read the index
+#
+&read_index(shift);
+
+foreach (@ARGV) {
+    &reindex_file($_);
+};
+if ($files_from_stdin) {
+    while (<STDIN>) {
+       chomp;
+       &reindex_file($_);
+    }
+};
+
+exit 0;
+
+#
+# Read the index file.
+# Build links of in $index{"$file#$subject","$prevnext"}.
+# Assumes that the index is sorted.
+#
+sub read_index {
+    local($indexfile) = @_;
+    local ($file, $subject);
+    local (@old_sort_order, @sort_order);
+    local($filesubject, $prevfilesubject) = ('', '');
+
+    if (-z $indexfile) {
+       warn("$0: aborted.  $indexfile is zero length.\n");
+       exit 0;
+    };
+    open(INDEX,"<$indexfile") || die("Cannot open $indexfile");
+    binmode INDEX;
+    ($prevurl, $prevfile, $prevsubject) = ("", "", "");
+    @sort_order = ("") x 3;
+    while (<INDEX>) {
+        chop if (/\n$/);
+       $url = $_;
+       ($filehead, $file, $subject) = /^(.*)\/([^#]*)\#(.*)$/;
+       # Sigh, have to fold things to upper case since sort only
+       # does that, not to lower case.
+       $filehead = uc($filehead);
+       $file = uc($file);
+       $subject = uc($subject);
+       $filesubject = "$file#$subject";
+       
+       # verification
+       die ("Bad index entry: $_") if (!defined($file) || !defined($subject));
+       @old_sort_order = @sort_order;
+       @sort_order = ($subject, $filehead, $file);
+       foreach $i (0..$#sort_order) {
+           last if ($sort_order[$i] gt $old_sort_order[$i]);
+           die ("Index is not in sorted order (entries $i).\n\t$sort_order[$i]\n\t$old_sort_order[$i]\n")
+               if ($sort_order[$i] lt $old_sort_order[$i])
+       };
+
+       # Skip repeated entries.
+       if ($filesubject eq $prevfilesubject) {
+           $count_i{$filesubject}++;
+           next;
+       };
+
+       # Record the links.
+       $url_i{$filesubject} = $url;
+       if ($prevsubject eq $subject) {
+           $link_i{$filesubject,'prev'} = $prevfilesubject;
+           $link_i{$prevfilesubject,'next'} = $filesubject;
+       } else {
+           $link_i{$filesubject,'prev'} = 'none';
+           $link_i{$prevfilesubject,'next'} = 'none';
+       };
+       # Count entries per-file.
+       $count_i{$filesubject} = 1;
+       ($prevurl, $prevfile, $prevsubject, $prevfilesubject) =
+           ($url, $file, $subject, $filesubject);
+    };
+    # Close the last pointer and hacks for null pointers.
+    $link_i{$prevfilesubject,'next'} = 'none';
+    $url_i{'none'} = 'none';
+    $count_i{'none'} = 1;
+    close (INDEX);
+}
+
+
+#
+# Go through a particular file
+# and update its prev/next pointers.
+#
+sub reindex_file {
+    local ($fullfile) = @_;
+    local (@data, $change, $mode, $subject);
+    local ($mode_lookheader, $mode_expectdash, $mode_expectprev, $mode_expectnext) = (0..99);
+    local(@olddata);
+    local (@data, $data, $error);
+    local ($subject_length, $found_expected_label);
+    local (%subject_count) = ();
+
+    local($file) = ($fullfile);
+    $file =~ s@.*/([^/]+)@$1@;   # basename
+
+    open(FILE,"<$fullfile") || die("Cannot open $file");
+    @olddata = <FILE>;
+    close(FILE);
+    # $file = uc($file);
+    $change = 0;
+    $mode = $mode_lookheader;
+    #
+    # Scan through the file, looking for headers.
+    # There is some context senstivity using $mode.
+    #
+    foreach (@olddata) {
+       if ($mode == $mode_lookheader) {
+           if (!/^(\* .*)$/) {
+               # skip simple data
+               push (@data, $_);
+               next;
+           } else {
+               # header
+               $subject = uc($1);
+               $filesubject = "$file#$subject";
+               push (@data, $_);
+               $subject_length = length($_) - 1;
+               $subject_count{$subject}++;
+               $mode = $mode_expectdash;
+               next;
+           };
+       } elsif ($mode == $mode_expectdash) {
+           if (/^\-+$/) {
+               # Check and fix dash length.
+               if (length($_)-1 != $subject_length) {
+                   $_ = ("-" x $subject_length) . "\n";
+                   $change++;
+               };
+               push (@data, $_);
+               $mode = $mode_expectprev;
+               next;
+           } else {
+               # warn("warning: subject <$subject> missing dashes in $file.\n") if (!/^\*/);
+               push (@data, $_);
+               $mode = $mode_lookheader;
+               next;
+           };
+       } elsif ($mode == $mode_expectprev) {
+           $found_expected_label = (/^prev: \<(.*)\>$/) ? 1 : 0;
+           push (@data, &new_link('prev', $file, $subject, $subject_count{$subject}));
+           $change++ if (!$found_expected_label ||
+                       ($found_expected_label && $data[$#data] ne $_));
+           $mode = $mode_expectnext;
+           if ($found_expected_label) { next; } else { redo; };
+       } elsif ($mode == $mode_expectnext) {
+           $found_expected_label = (/^next: \<(.*)\>$/) ? 1 : 0;
+           push (@data, &new_link('next', $file, $subject, $subject_count{$subject}));
+           $change++ if (!$found_expected_label ||
+                       ($found_expected_label && $data[$#data] ne $_));
+           $mode = $mode_lookheader;
+           if ($found_expected_label) { next; } else { redo; };
+       } else {
+           die ("bad mode: $mode");
+       };
+       die("end of loop reached unexpectedly.");               
+    };
+    close (FILE);
+
+    return if (!$change);
+
+    warn("Updating file $file.\n") if ($verbose);
+    warn("   writing backup file ${fullfile}~.\n") if ($verbose);
+    open(BFILE, ">$fullfile~") || die("Cannot write backup file $fullfile~.\n");
+    $data = join("", @olddata);
+    $error = syswrite(BFILE, $data, length($data));
+    die("Backup file failed.\n") unless ($error = length($data));
+
+    open (FILE, ">$fullfile") || goto abort;
+    $data = join("", @data);
+    $error = syswrite(FILE, $data, length($data));
+    goto abort unless ($error == length($data));
+    close (FILE) || goto abort;
+    return;
+
+abort:
+    close (FILE);   # ignore error
+    warn ("Aborting changes to file $file.\n");
+    rename("$fullfile~", "$fullfile") ||
+       die("Could not back-out changes to $file.  Old data saved in $file~.");
+    return;
+}
+
+
+sub new_link {
+    local ($direction, $file, $subject, $srcposition) = @_;
+    local($filesubject) = "$file#$subject";
+    local($other_count);
+
+    # First handle ignorance.
+    return &format_url($direction,'none')
+        if (!defined($link_i{$filesubject,$direction}));
+
+    # See if we're in the same file.
+    if (($direction eq 'prev' && $srcposition > 1) ||
+       ($direction eq 'next' && $srcposition < $count_i{$filesubject})) {
+
+       return &format_url($direction, $url_i{$filesubject},
+           $srcposition + $direction_delta{$direction});
+
+    } else {
+       # In a different file.  Does the other file have multple entries?
+       $other_count = $count_i{ $link_i{$filesubject,$direction} };
+       if ($other_count != 1) {
+           
+           return &format_url($direction,
+               $url_i{ $link_i{$filesubject,$direction} },
+               ( $direction eq 'prev' ? $other_count : 1));
+
+       } else {
+           # Different file with only one entry.
+           return &format_url($direction,
+               $url_i{ $link_i{$filesubject,$direction} } );
+       };
+    };
+}
+
+sub format_url {
+    local($direction, $url, $count) = @_;
+    $url =~ s/\#\*/#$count*/ if (defined($count));
+    return "$direction: <$url>\n";
+}
+
+## substutite for "uc", if you want to back-port to perl4.
+# sub tolower {
+#     local ($s) = @_;
+#     $s =~ tr/a-z/A-Z/;
+#     return $s;
+# }
diff --git a/packages/notes-mode/mkrawindex b/packages/notes-mode/mkrawindex
new file mode 100755 (executable)
index 0000000..09c2eb6
--- /dev/null
@@ -0,0 +1,92 @@
+#!/usr/bin/perl -w
+
+#
+# mkrawindex -- index notes files
+# $Id: mkrawindex,v 1.17 2007/02/24 01:25:08 johnh Exp $
+#
+# Copyright (C) 1994-2006,2012  Free Software Foundation, Inc.
+# Comments to <johnh@isi.edu>.
+#
+# This file is under the Gnu Public License, version 2.
+# For details see the COPYING which accompanies this distribution.
+#
+
+sub usage {
+    print STDOUT <<END;
+usage: $0 [-X] [file...]
+       Writes a raw index to stdout.
+
+       If no files are specified as arguments,
+       they are read from stdin.
+
+Option: -X means read the filesname from stdin rather than the command line.
+
+END
+    exit 1
+}
+
+# old implementation:
+# To make an index do:
+#    ./mkrawindex /h/local/users/johnh/STUFF/NOTES/9????? |
+#      sort -f -t# +1 +0 |
+#      sed 's:/h/local/users/johnh:~:' >index
+
+require 5.000;
+BEGIN { unshift(@INC, $ENV{'NOTES_BIN_DIR'}); };
+use Notes;
+use NotesVars;
+
+my($files_from_stdin) = undef;
+if ($ARGV[0] eq '-X') {
+    $files_from_stdin = 1;
+    shift @ARGV;
+}
+
+&usage if ($#ARGV == 0 && $ARGV[0] eq '-?');
+
+my($opthost) = "";
+# could be localhost to have urls be file://localhost/foo instead of
+# file:///foo.
+
+#
+#
+#
+foreach (@ARGV) {
+    &add_file_to_index($_);
+}
+if ($files_from_stdin) {
+    while (<STDIN>) {
+       chomp;
+        &add_file_to_index($_);
+    };
+};
+
+exit 0;
+
+
+sub add_file_to_index {
+    my($fn) = @_;
+
+    # "cannonicalize" the filename
+    my($cannon_fn) = $fn;
+    if ($cannon_fn !~ m@^/@) {
+       $cannon_fn = $::notes{dir} . "/" . $cannon_fn;
+       $cannon_fn =~ s@^$::notes{home}@/~@;
+    };
+
+    my($n) = new Notes($fn);
+    my($subs_ref) = $n->subjects();
+    if (!defined($subs_ref)) {
+       warn "$0: no subjects for file $fn.\n";
+       return;
+    };
+    foreach (@$subs_ref) {
+       warn("$0: subject $_ in $fn has leading spaces.\n")
+           if (/^\s$/);
+       warn("$0: subject $_ in $fn has trailing spaces.\n")
+           if (/\s$/);
+       warn("$0: subject $_ in $fn has an embedded number sign---this will cause problems with prev/next entries.\n")
+           if (/\#/);
+        print "file://$opthost$cannon_fn#* $_\n";
+    };
+}
diff --git a/packages/notes-mode/notes-aux.el b/packages/notes-mode/notes-aux.el
new file mode 100644 (file)
index 0000000..a7575e2
--- /dev/null
@@ -0,0 +1,72 @@
+;;; notes-aux.el --- Auxiliary functions for notes-mode and friends
+
+;; Copyright (C) 1994,1995,1998,2012  Free Software Foundation, Inc.
+
+;; Author: <johnh@isi.edu>.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+;;;###autoload
+;;(defun notes-format-date (&optional calendar-date)
+;;  "Format the calendar-date-style DATE up to be a notes-format date.
+;;If no DATE is specified, use today's date."
+;;  (require 'calendar)
+;;  (let* ((date (if calendar-date
+;;                calendar-date
+;;              (calendar-current-date)))
+;;      (month (car date))
+;;      (day (nth 1 date))
+;;      (year (nth 2 date)))
+;;    (format "%02d%02d%02d" (- year 1900) month day)))
+(defun notes-format-date (&optional time)
+  "Format the TIME up to be a notes-format date.
+If no TIME is specified, use today's date."
+  (require 'notes-variables)
+  (if (null time)
+      (setq time (current-time)))
+  (format-time-string notes-file-form time))
+
+(defun notes-file-to-epoch (file)
+  "Convert a notes FILE to an epoch time."
+  (string-match notes-file-regexp file)
+  (let
+      ((y (string-to-number (match-string 1 file)))
+       (m (string-to-number (match-string 2 file)))
+       (d (string-to-number (match-string 3 file))))
+    (if (< y 1900)
+       (setq y (+ y 1900)))
+    (if (< y 1970)
+       (setq y (+ y 100)))
+    (encode-time 0 0 12 d m y)))
+
+(defun notes-file-to-url (file &optional tag)
+  "Convert a notes FILE to a URL with an optional TAG."
+  (let
+      ((epoch (notes-file-to-epoch file)))
+    (concat
+     notes-url-prefix
+     (format-time-string notes-int-form epoch)
+     "/"
+     (format-time-string notes-file-form epoch)
+     (if tag "#* " "")
+     tag)))
+
+(provide 'notes-aux)
+;;; notes-aux.el ends here
diff --git a/packages/notes-mode/notes-emacs.el b/packages/notes-mode/notes-emacs.el
new file mode 100644 (file)
index 0000000..6fd4874
--- /dev/null
@@ -0,0 +1,39 @@
+;;; notes-emacs.el --- Emacs compatibility functions
+
+;; Copyright (C) 1998,2012  Free Software Foundation, Inc.
+
+;; Author: <johnh@isi.edu>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(defun notes-platform-bind-mouse (map generic-key fn)
+  "Map Emacs symbols (a no-op)."
+  (define-key map (vector generic-key) fn))
+
+(defun notes-platform-init ()
+  "Init platform-specific stuff for notes-mode."
+  (if notes-platform-inited
+      t
+    (setq notes-platform-inited t)
+    (if (eq notes-bold-face 'notes-bold-face)
+       (copy-face 'bold notes-bold-face))))
+
+(provide 'notes-emacs)
+;;; notes-emacs.el ends here
diff --git a/packages/notes-mode/notes-first.el b/packages/notes-mode/notes-first.el
new file mode 100644 (file)
index 0000000..92c9c59
--- /dev/null
@@ -0,0 +1,54 @@
+;;; notes-first.el --- Setup notes-mode before first use
+
+;; Copyright (C) 2000-2006,2012  Free Software Foundation, Inc.
+
+;; Author: <johnh@isi.edu>.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; 
+
+;;; Code:
+
+(defvar notes-first-perl5-binary "perl"
+  "Location of the perl binary to invoke notesinit (must be perl v5).")
+
+(defun notes-first-use-init ()
+  "Set up notes mode for the first time for a new user."
+  ;; note that we CAN'T assume the contents of notes-variables is loaded.
+  (if (y-or-n-p "Setup notes-mode with defaults? ")
+      (notes-first-run-notes-init)
+    (error (concat "Please run " notes-utility-dir "/notesinit by hand in a shell to customize defaults."))))
+
+;; xxx: eventually we might do something more sophisticated here
+;; (like asking the user questions directly).
+(defun notes-first-run-notes-init ()
+  "Run notesinit with defaults."
+  (let*
+      ((notes-init-cmd (expand-file-name "notesinit" notes-utility-dir))
+       (process-environment
+        (cons (concat "NOTES_BIN_DIR=" (directory-file-name notes-utility-dir))
+              process-environment)))
+    (message (concat "Running \"" notes-first-perl5-binary notes-init-cmd "\" to set up notes-mode."))
+    (call-process notes-first-perl5-binary nil nil nil notes-init-cmd "-D"))
+  ;; ok, things are setup, but we want to lead the user to what to do next
+  ;; => start up on today's note
+  (message "Notes are now set up.  Run M-x notes-index-todays-link to start."))
+
+(provide 'notes-first)
+;;; notes-first.el ends here
diff --git a/packages/notes-mode/notes-index-mode.el b/packages/notes-mode/notes-index-mode.el
new file mode 100644 (file)
index 0000000..5d959ec
--- /dev/null
@@ -0,0 +1,269 @@
+;;; notes-index-mode.el --- Index manipulation for notes-mode
+
+;; Copyright (C) 1994-1998,2012  Free Software Foundation, Inc.
+
+;; Author: <johnh@isi.edu>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'notes-variables)
+(require 'notes-aux)
+
+
+(defvar notes-index-mode-map
+  (let ((map (make-sparse-keymap)))
+    ;; There were bindings to make mouse-1 do pointer following,
+    ;; but I removed it because all the rest of emacs uses mouse-2.
+    ;; If you want them, add them with notes-index-mode-hook.
+    (notes-platform-bind-mouse map 'mouse-2 'notes-index-mouse-follow-link)
+    (notes-platform-bind-mouse map 'S-mouse-2 'notes-index-mouse-follow-link-other-window)
+    (define-key map "\r" 'notes-index-follow-link)
+    (define-key map "\C-c\C-s" 'notes-summarize-subject)
+    (define-key map "o" 'notes-index-link)
+    map))
+
+
+(defvar notes-index-lazy-message-old-time 0)
+
+(defun notes-index-lazy-percent-message (text fraction whole)
+  "Put up a message occasionally.
+Displays TEXT (a format string), with FRACTION of WHOLE
+shown as a percentage.  (Read the code to see what this
+cryptic statement means.)"
+  (if (= notes-index-lazy-message-old-time
+        (setq notes-index-lazy-message-old-time (+ 1 (nth 1 (current-time)))))
+      nil
+    (message text (/ (* fraction 100) whole))))
+
+(defun notes-index-parse-buffer ()
+  "Parse a notes-index buffer, fontifying and building subject completion.
+
+If fontification is enabled, subjects will be emboldened
+and dates will be mouse-highlighted.
+
+In any event a subject completion table will be built.
+
+This routine works by calling either \[notes-index-parse-buffer-uncached]
+or \[notes-index-parse-buffer-cached] (if possible)."
+  (interactive)
+  (let
+      ((inhibit-read-only t))
+    (if (and (file-exists-p (expand-file-name "index_cache.el" notes-dir))
+            (file-newer-than-file-p
+              (expand-file-name "index_cache.el" notes-dir)
+              (expand-file-name "index" notes-dir)))
+       (progn
+         (load (expand-file-name "index_cache" notes-dir))
+         (notes-index-parse-buffer-cached))
+      ;; cache miss
+      (message "notes-index-parse-buffer: cache is not present or is not up-to-date")
+      (notes-index-parse-buffer-uncached))
+    ;; clean some things up
+    (message "")
+    (set-buffer-modified-p nil)))
+
+(defun notes-index-parse-buffer-uncached ()
+  "Parse a notes-index buffer, fontifying and building subject completion.
+
+If fontification is enabled, subjects will be emboldened
+and dates will be mouse-highlighted.
+
+In any event a subject completion table will be built.
+
+Tenses passive will be."
+  (interactive)
+  (save-excursion
+    (let ((start (point-min))
+         end subject)
+      ;; prepare the way
+      (if notes-use-font-lock
+          ;; FIXME: That's quite drastic!  What is this trying to do?
+         (set-text-properties (point-min) (point-max) nil))
+      ;; There used to be problem that we used a fixed obarray length,
+      ;; creating a lot of hash collisions.  Now we dynamically compute it
+      ;; by rounding up the number of lines to the next power of 8.
+      (if (and notes-mode-complete-subjects (not notes-subject-table))
+         (setq notes-subject-table (make-vector
+                                    (- (expt
+                                     8 
+                                     (length
+                                      (format
+                                       "%o"
+                                       (count-lines
+                                        (point-min)
+                                        (point-max)))))
+                                       1)
+                                    0)))
+      ;; do it
+      (goto-char start)
+      (while (< start (point-max))
+       ;; find the end-of-line
+       (end-of-line)
+       (setq end (point))
+       (goto-char start)
+
+       ;; find the subject
+       (while (not (eq (following-char) ?\ ))
+         (skip-chars-forward "^:" end)
+         (forward-char))
+       (backward-char)
+       (if notes-subject-table
+           (intern (buffer-substring start (point)) notes-subject-table))
+       (notes-index-lazy-percent-message "Notes-index'ing (%d%%)..." start (point-max))
+
+       (if notes-use-font-lock
+           (progn
+             ;; highlight the title
+             (put-text-property start (point) 'face notes-bold-face)
+             (if notes-index-fontify-dates
+                 (progn
+                   ;; now highlight each date
+                   (skip-chars-forward "^0-9" end)
+                   (while (looking-at "[0-9]")
+                     (setq start (point))
+                     (skip-chars-forward "0-9")
+                     (put-text-property start (point) 'mouse-face 'highlight)
+                     (skip-chars-forward "^0-9" end))))))
+       ;; set up for next line
+       (forward-line 1)
+       (setq start (point))))))
+
+
+(defun notes-index-date-search (start end iter-proc done-proc done-arg)
+  "Iterate over a notes-index entry bounded by START to END.
+Iteration is done by (ITER-PROC END), which leaves match 0
+set to what we're looking for.
+A match terminates iteration if (DONE-PROC match DONE-ARG) is non-nil.
+Returns the buffer position of a successful hit, or nil."
+  (goto-char start)
+  (let (stop)
+    (while (and (not stop)
+               (funcall iter-proc end))
+      (if (funcall done-proc (match-string 0) done-arg)
+         (setq stop (goto-char (match-beginning 0)))))
+    stop))
+
+
+(defun notes-index-goto-date (date &optional direction)
+  "Goto the DATE in the current line of the index file, modified by DIRECTION.
+If DIRECTION is 'this, go there.
+If DIRECTION is 'next or 'prev, go to the corresponding entry.
+If the entry doesn't exist, then go to the nearest entry according
+to DIRECTION (and the next one if DIRECTION is 'this)."
+  (cond
+   ((eq direction 'prev)
+    (notes-index-date-search
+     (line-end-position) (line-beginning-position)
+     (function (lambda (end) (re-search-backward notes-file-regexp end t)))
+     (function (lambda (trial target) (string-lessp trial target)))
+     date))
+   ((eq direction 'next)
+    (notes-index-date-search
+     (line-beginning-position) (line-end-position)
+     (function (lambda (end) (re-search-forward notes-file-regexp end t)))
+     (function (lambda (trial target) (string-lessp target trial)))
+     date))
+   (t
+    (notes-index-date-search
+     (line-beginning-position) (line-end-position)
+     (function (lambda (end) (re-search-forward notes-file-regexp end t)))
+     (function (lambda (trial target) (string-equal trial target)))
+     date))))
+
+(defun notes-index-link (link &optional tag where)
+  "* Follow a notes-index LINK.
+Optionally takes a subject TAG and
+WHERE ('otherwindow or nil) to open the new file."
+  (interactive "sNotes-index link: ")
+  (notes-w3-url (notes-file-to-url link tag) where t))
+
+;;;###autoload
+(defun notes-index-todays-link ()
+  "* Open the notes file for today."
+  (interactive)
+  (notes-index-link (format-time-string notes-file-form (current-time))))
+
+(defun notes-index-follow-link (pt &optional where)
+  "Follow a link at PT in notes-index-mode.
+The link is taken from the location PT,
+and the new information is shown WHERE (either 'otherwindow or not)."
+  (interactive "d")
+  (save-excursion
+    (let (start date tag)
+      ;; determine the date
+      (skip-chars-backward "0-9")
+      (setq start (point))
+      (if (not (re-search-forward notes-file-regexp (+ (point) 6) t))
+         (error "Not on notes-index-mode link."))
+      (setq date (match-string 0))
+      ;; pick out the tag
+      (beginning-of-line)
+      (if (not (re-search-forward "^\\([^:]*\\):" start t))
+         (error "Not on notes-index-mode link line."))
+      (setq tag (match-string 1))
+      ;; make and process the url
+      (notes-index-link date tag where))))
+
+(defun notes-index-mouse-follow-link (e)
+  "Handle a mouse click in notes-index-mode."
+  (interactive "e")
+  (mouse-set-point e)
+  (notes-index-follow-link (point) nil))
+
+(defun notes-index-mouse-follow-link-other-window (e)
+  "Handle a mouse click in notes-index-mode (other-window)."
+  (interactive "e")
+  (mouse-set-point e)
+  (notes-index-follow-link (point) 'otherwindow))
+
+(defun notes-index-extract-subject ()
+  "Extract the notes-index subject for the current line."
+  (save-excursion
+    (beginning-of-line)
+    (if (re-search-forward "^\\(.*\\): " (line-end-position) t)
+       (match-string 1)
+      nil)))
+
+;;;###autoload
+(define-derived-mode notes-index-mode special-mode "Notes-index"
+  "Notes-index-mode with mouse support.
+
+You may wish to change notes-bold-face and notes-use-font-lock.
+
+There should be no need to add notes-index-mode to auto-mode-alist
+since the index generation functions add code to the index file
+which invokes notes-index-mode.
+
+Key bindings are:
+\\{notes-index-mode-map}"
+  (notes-platform-init)
+
+  (notes-index-parse-buffer)
+
+  (set (make-local-variable 'font-lock-defaults)
+       '(notes-index-font-lock-keywords
+         t nil nil beginning-of-line))
+
+  ;; No editing is allowed.
+  (setq buffer-read-only t)
+)
+
+(provide 'notes-index-mode)
+;;; notes-index-mode.el ends here
diff --git a/packages/notes-mode/notes-mode.el b/packages/notes-mode/notes-mode.el
new file mode 100644 (file)
index 0000000..f113bb6
--- /dev/null
@@ -0,0 +1,724 @@
+;;; notes-mode.el --- Indexing system for on-line note-taking
+
+;; Copyright (C) 1994-2007,2012  Free Software Foundation, Inc.
+
+;; Author: <johnh@isi.edu>.
+;; Version: 1.30
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;; 
+
+;;; Code:
+
+(require 'notes-variables)
+(require 'notes-aux)
+
+(defvar notes-mode-hooks nil
+  "Hooks to run when entering notes-mode.")
+(defvar notes-load-mode-hooks nil
+  "Hooks to run when entering notes-mode is loaded.")
+
+(defconst notes-beginning-of-defun-regexp "^\\* .*\n\\-"
+  "Regexp matching the beginning of notes section.")
+
+(defvar notes-default-tab-binding (global-key-binding "\t")
+  "Saved tab binding for notes-complete-subject.")
+(defvar notes-default-return-binding (global-key-binding "\r")
+  "Saved return binding for notes-electric-return.")
+
+
+(defun notes-beginning-of-defun ()
+  "Go to the beginning of a notes ``section''."
+  (interactive)
+  (let
+      ((old-point (point)))
+    (beginning-of-line)
+    ;; handle starting on a title
+    (if (and (looking-at notes-beginning-of-defun-regexp)
+            (/= (point) old-point))
+       nil
+      (goto-char old-point)
+      (if (looking-at "^-")  ;; handle starting on the underline under a title
+         (forward-char 1))
+      (re-search-backward notes-beginning-of-defun-regexp nil 'to-limit))))
+
+(defun notes-end-of-defun ()
+  "Go to the end of a notes ``section''."
+  (interactive)
+  (let ((regexp notes-beginning-of-defun-regexp))
+    (if (looking-at regexp)
+        (goto-char (match-end 0)))
+    ;; Find next section and leave cursor at section beginning
+    (if (re-search-forward regexp nil 'to-limit)
+        (re-search-backward regexp 0 t)
+      ;;(goto-char restore-point)
+      )))
+
+(defun notes-follow-link (which)
+  "Go to the WHICH link for this topic.
+WHICH is either \"next\" or \"prev\".
+If there are no links for the current note,
+we go to the last note based upon the index file."
+  (let
+      (beginning-of-note
+       end-of-note
+       (start-buffer (current-buffer))
+       ;; We have to handle links in the same buffer,
+       ;; so the following code figure out where we go
+       ;; and returns it out of the save-excursion.
+       ;; If we end up in another buffer, we let the save-excursion
+       ;; leave the original buffer unchanged.  If we end up in
+       ;; the same buffer, we need to go wherever we end up.
+       ;; Can anyone suggest a better way?
+       (end-buffer-and-point
+       (save-excursion
+         (notes-end-of-defun)
+         (setq end-of-note (point))
+         (notes-beginning-of-defun)
+         (setq beginning-of-note (point))
+         (if (and (= beginning-of-note 1) (not (looking-at notes-beginning-of-defun-regexp)))
+             (progn
+               ;; When "above" the first note, search to end of first
+               ;; real note (otherwise end-of-note is just the start
+               ;; of the first real note and there are no links).
+               (notes-end-of-defun)
+               (notes-end-of-defun)
+               (setq end-of-note (point))
+               (goto-char beginning-of-note)))
+         (if (re-search-forward (concat "^"
+                                        (if (eq which 'next) "next" "prev")
+                                        ":[ ]+<") end-of-note t)
+             (progn ; link exists, just take it
+               (beginning-of-line)
+               (notes-w3-follow-link (point))
+               (cons (current-buffer) (point)))
+           ;; No link; go through the index file.
+           (if (notes-goto-index-entry which)
+               (let ((index-buffer (current-buffer)))
+                 (notes-index-follow-link (point))
+                 (bury-buffer index-buffer))
+             (error "No known notes in that direction.")
+             (bury-buffer (current-buffer)))
+           (cons (current-buffer) (point))))))
+    ;; Check for going to the same buffer (and the save-excursion
+    ;; undoing our work).
+    (if (eq start-buffer (car end-buffer-and-point))
+       (goto-char (cdr end-buffer-and-point)))))
+       
+
+(defun notes-follow-next-link ()
+  "Go to the next link for this topic."
+  (interactive)
+  (notes-follow-link 'next))
+
+(defun notes-follow-prev-link ()
+  "Go to the previous link for this topic."
+  (interactive)
+  (notes-follow-link 'prev))
+
+(defvar notes-complete-subject-abbrevs-alist
+  '(("SP2010" "USC/Classes/CS551/SP2010")
+    ("FA2011" "USC/Classes/CS551/FA2011"))
+  "Alist of simple substitution of subjects.
+If subject completion is requested, then subject that matches
+the left-side of an alist value is replaced by the right-side value.")
+
+(defun notes-complete-subject-abbrevs (key)
+  "Handle abbreviations on notes SUBJECTS.
+Currently this is just a hack."
+  (let ((value (assoc key notes-complete-subject-abbrevs-alist)))
+    (if value
+       (car (cdr value))
+      key)))
+  
+
+(defun notes-complete-subject ()
+  "Complete the notes subject under point."
+  (interactive)
+  (let
+      ((subject (save-excursion 
+                 (beginning-of-line) 
+                 (notes-extract-subject t)))
+       old-completion-ignore-case
+       full-subject)
+    (if (not (and notes-mode-complete-subjects subject))
+       (call-interactively notes-default-tab-binding)
+      ;; Complete the title.
+      (if (null notes-subject-table)
+         (save-excursion ;; FIXME: Why??
+           (find-file-noselect (expand-file-name "index" notes-dir))))
+      ;; Do completion.
+      ;; Run completer if it's loaded,
+      ;; otherwise do our own thing.
+      (setq completion-ignore-case t)
+      (cond
+       ((fboundp 'completer-complete-goto)
+       (completer-complete-goto "^ \t\n\"" " " notes-subject-table nil))
+       ;; NEEDSWORK:  should try other completers, too.
+       (t   ;; Do our own completion.
+       (setq full-subject (try-completion subject notes-subject-table)
+             subject (completing-read "Subject: "
+                                      notes-subject-table nil nil 
+                                      (if (stringp full-subject)
+                                          full-subject
+                                        subject)))
+       (delete-region (line-beginning-position) (line-end-position))
+       (insert "* " (notes-complete-subject-abbrevs subject))))
+       (setq completion-ignore-case old-completion-ignore-case))))
+
+(defun notes-fix-prevnext-this-entry ()
+  "Fix up the prev link for the current entry, if necessary.
+Currently this code only handles brand new entries."
+  ;; Contributed from Takashi Nishimoto <g96p0935@mse.waseda.ac.jp>.
+  ;; Thanks!
+  (interactive)
+  (let ((subject (notes-extract-subject nil t))
+        (this-url (notes-current-url))
+        last-url)
+    (with-current-buffer (find-file-noselect
+                          (expand-file-name "index" notes-dir))
+      (goto-char (point-min))
+      (if (re-search-forward
+           (concat "^" (regexp-quote subject) ":.* \\([0-9]+\\)$")
+           (point-max) t) 
+          (save-window-excursion
+            (cond ((and (notes-w3-url
+                         (notes-file-to-url (match-string 1) subject))
+                        (re-search-forward "^next: " nil t)
+                        (looking-at "<none>"))
+                  (let
+                      (pre-modified (buffer-modified-p))
+                    (delete-char 6)
+                    (insert this-url)
+                    (setq last-url (notes-current-url))
+                    (if (and (null pre-modified) 
+                             (>= notes-electric-prevnext 2))
+                        (save-buffer))))))))
+    (if last-url
+       (progn
+         (notes-beginning-of-defun)
+         (forward-line 2)
+         (if (not (looking-at "prev: "))
+             (insert "prev: " last-url "\n" "next: <none>\n\n")
+           (forward-line 3))))))
+
+(defun notes-electric-return (arg)
+  "* Return, underlining if we're on a subject."
+  (interactive "*P")
+  (if (let ((cur-point (point)))
+       (save-excursion
+         (beginning-of-line)
+         (and (not (eq cur-point (point)))  ;; normal return if at b-o-ln
+              (notes-extract-subject t)))) 
+      (progn (notes-underline-line)
+            (if notes-electric-prevnext
+                (notes-fix-prevnext-this-entry)))
+    (call-interactively notes-default-return-binding)))
+
+(defun notes-current-url ()
+  "Return the notes-URL of the current entry around the current point."
+  (let ((subject (notes-extract-subject nil t))
+       (date (file-name-nondirectory buffer-file-name)))
+    (concat "<file:///"
+           (abbreviate-file-name buffer-file-name)
+           (if subject (concat "#* " subject) "")
+           ">")))
+
+(defun notes-current-url-as-kill ()
+  "* Put the notes-URL of the current entry into the kill ring."
+  (interactive)
+  (kill-new (notes-current-url)))
+
+(defun notes-goto-index-entry (&optional direction)
+  "* Jump to the index entry corresponding to our current note entry.
+If we're not in an entry, we leave you in the index file.
+If the current date doesn't exist, error in DIRECTION.
+Returns nil if on errors (no index; no date in DIRECTION),
+otherwise the point of the hit."
+  (interactive) 
+  (let ((start-buffer (current-buffer))
+       (subject (notes-extract-subject))  ; get subject if on it
+       (date (if (null (buffer-file-name)) nil 
+               (file-name-nondirectory (buffer-file-name)))))
+    ;; Try and get the subject, either forward...
+    (if (not subject)
+       (save-excursion 
+         (notes-beginning-of-defun)
+         (setq subject (notes-extract-subject))))
+    ;;    ...or backwards.
+    (if (not subject)
+       (save-excursion 
+         (notes-end-of-defun)
+         (setq subject (notes-extract-subject))))
+    ;; Form and jump to the url for the index-entry.
+    (if (and (notes-w3-url (concat notes-url-prefix
+                                  "index"
+                                  (if subject (concat "#" subject) ""))
+                          nil t)
+            ;; Go to the current date, if any.
+            (notes-index-goto-date date direction))
+       t
+      nil)))
+
+(defun notes-extract-subject (&optional relaxed search)
+  "Extract the subject under the point in the current buffer.
+If RELAXED, then accept non-underlined subjects.
+If SEARCH we'll search back in the buffer for the nearest
+subject title.
+
+Returns nil if we're not on as subject."
+  (save-match-data
+    (cond
+     ;; directly on a note
+     ((or (looking-at notes-beginning-of-defun-regexp)
+         (and relaxed
+              (looking-at "^\\* ")))
+      (save-excursion
+       (let
+           ((start (+ (point) 2))
+            (end (progn (end-of-line) (point))))
+         (buffer-substring start end))))
+     (search
+      (save-excursion
+       (notes-beginning-of-defun)
+       (notes-extract-subject relaxed nil)))
+     (t
+      nil))))
+
+
+;;;###autoload
+(defun notes-underline-line ()
+  "* Create a row of dashes as long as this line, or adjust the current underline."
+  (interactive)
+  ;; check to see if it's already underlined
+  (if (save-excursion
+       (forward-line 1)
+       (looking-at "^[ \t]*--*$"))
+      (notes-old-underline-line)
+    (progn
+      (notes-new-underline-line)
+      (insert "\n\n"))))
+
+(defun notes-new-underline-line ()
+  "Underline a line with a row of dashes.  Move point after the dashes.
+\\[notes-new-underline-line] reproduces leading spaces."
+  (interactive)
+  (let*
+      ((bol (progn (beginning-of-line)
+                  (point)))
+       (bospaces (progn (skip-chars-forward " \t")
+                       (point)))
+       (nospaces (- bospaces bol))
+       (eol (progn (end-of-line)
+                  (untabify bol (point))
+                  (point))))
+    (insert "\n" (buffer-substring bol bospaces))
+    (insert-char ?- (- eol bospaces))))
+
+(defun notes-old-underline-line ()
+  "Replace the following line with a row of dashes.  Leave the point unchanged."
+  (save-excursion
+    (save-excursion
+      (forward-line 1)
+      (delete-region (line-beginning-position) (1+ (line-end-position))))
+    (notes-new-underline-line)))
+
+(defun notes-mode-initialize-note-from-cache ()
+  "Build a new note from the cache.  Return valid cache contents or nil."
+  (save-excursion
+    (let*
+       ((new-buffer (current-buffer))
+        (cache-file (expand-file-name "mknew.cache" notes-dir))
+        (buf (find-file cache-file))
+        magic-line
+        prev-file
+        this-file
+        cache-contents
+        m
+        (result
+         (if (and buf
+                  (>= (count-lines (point-min) (point-max)) 3))
+             (progn
+               ;; If you know a more elegant way to extact the first
+               ;; three lines of a file, please let me know.
+               (goto-char (point-min))
+               (setq m (point))
+               (forward-line 1)
+               (setq magic-line (buffer-substring m (- (point) 1)))
+               (setq m (point))
+               (forward-line 1)
+               (setq prev-file (buffer-substring m (- (point) 1)))
+               (setq m (point))
+               (forward-line 1)
+               (setq this-file (buffer-substring m (- (point) 1)))
+               (setq cache-contents (buffer-substring (point) (point-max)))
+               (bury-buffer buf)
+               ;; is cache valid?
+               (if
+                   (and
+                    (string-equal magic-line "mknew.cache 830494922")
+                    (file-newer-than-file-p cache-file prev-file)
+                    (string-equal (file-name-nondirectory this-file)
+                                  (file-name-nondirectory (buffer-file-name
+                                                           new-buffer))))
+                   cache-contents
+                 nil))
+           nil)))
+      ;; Kill the buffer to avoid "buf changed, reload?" warnings.
+      (if buf
+         (kill-buffer buf))
+      result)))
+
+(defun notes-mode-initialize-note ()
+  "Fill in an empty new note.
+Create any directories as necessary.
+Use the mknew cache if possible."
+  (interactive)
+  (let
+      ((dir (directory-file-name (file-name-directory (buffer-file-name)))))
+    (if (file-exists-p dir)
+       t
+      (make-directory dir t)
+      (message "New intermediate directory created.")))
+  (if notes-mode-initialization-program
+      (let
+         ((cache-contents (notes-mode-initialize-note-from-cache)))
+       (if cache-contents
+           (insert cache-contents)
+         (shell-command-on-region
+          (point-min)
+          (point-max)
+          (concat (expand-file-name notes-mode-initialization-program
+                                     notes-bin-dir)
+                   " '"
+                   ;; FIXME: Use shell-quote-argument.
+                  (buffer-file-name) "'") 't)))))
+  
+\f
+;;;
+;;; encryption
+;; requires "PEM - PGP Enhanced Messaging for GNU Emacs"
+;; from Roy Frederick Busdiecker, III (Rick)
+;; or mailcrypt 3.4.x or >=3.5.x
+;;
+
+(defvar notes-encryption-library 
+  'mailcrypt
+;  (cond
+;   ((fboundp 'mc-encrypt-region) 'mailcrypt)
+;   ((fboundp 'npgp:encrypt-region) 'npgp)
+;   (t nil))
+  "PGP library to use.")
+
+(defvar notes-encryption-sub-library
+  'gpg
+  "Variant of mailcrypt to use (`pgp', `pgp50', or `gpg').")
+
+(defvar notes-encryption-npgp-userid nil
+  "PGP key for the current user.")
+
+(defvar notes-encryption-npgp-key-id nil
+  "Keyid of PGP key for the current user.
+Useful if your \\[user-full-name] doesn't match a unique key.
+Should have a leading 0x.")
+
+(defun notes-encryption-npgp-userid ()
+  "Return notes-encryption-userid, initializing it if necessary."
+  (require 'pam)
+  (if (and notes-encryption-userid
+          npgp:*pass-phrases*)
+      notes-encryption-userid
+    (setq notes-encryption-userid
+         (list
+          (if notes-encryption-key-id
+              (npgp:get-key-by-key-id notes-encryption-key-id)
+            (pam:read-name-key (user-full-name)))))))
+
+(defun notes-encryption-mailcrypt-keyid ()
+  "Do the right thing."
+  (require 'mailcrypt)
+  (cond
+   ((eq notes-encryption-sub-library 'pgp)
+    (cdr (mc-pgp-lookup-key mc-pgp-user-id)))
+   ((eq notes-encryption-sub-library 'pgp50)
+    (cdr (mc-pgp50-lookup-key mc-pgp50-user-id)))
+   ((eq notes-encryption-sub-library 'gpg)
+    (cdr (mc-gpg-lookup-key mc-gpg-user-id)))
+   (t (error "notes-encryption-decrypt-region: no pgp sub-library."))))
+
+(defun notes-encryption-load-mailcrypt ()
+  (require 'mailcrypt)
+  ;; ick ick ick this code needs to be cleaned up
+  (cond
+   ((null (eq notes-encryption-library 'mailcrypt))
+    t)
+   ((eq notes-encryption-sub-library 'pgp)
+    (load-library "mc-pgp"))
+   ((eq notes-encryption-sub-library 'pgp50)
+    (load-library "mc-pgp5"))
+   ((eq notes-encryption-sub-library 'gpg)
+    (load-library "mc-gpg"))
+   (t (error "notes-encryption-load-mailcrypt: no pgp sub-library."))))
+
+(defun notes-encryption-decrypt-region (start end)
+  (cond
+   ((eq notes-encryption-library 'npgp)
+    (require 'pam)
+    (require 'npgp)
+    (npgp:decrypt-region start end))
+   ((eq notes-encryption-library 'mailcrypt)
+    (notes-encryption-load-mailcrypt)
+    (cond
+     ((eq notes-encryption-sub-library 'pgp)
+      (mc-pgp-decrypt-region start end))
+     ((eq notes-encryption-sub-library 'pgp50)
+      (mc-pgp50-decrypt-region start end))
+     ((eq notes-encryption-sub-library 'gpg)
+      (mc-gpg-decrypt-region start end))
+     (t (error "notes-encryption-decrypt-region: no pgp sub-library."))))
+   (t (error "notes-encryption-decrypt-region: no pgp library."))))
+
+(defun notes-encryption-encrypt-region (start end)
+  (cond
+   ((eq notes-encryption-library 'npgp)
+    (npgp:encrypt-region (notes-encryption-npgp-userid) start end))
+   ((eq notes-encryption-library 'mailcrypt)
+    (notes-encryption-load-mailcrypt)
+    (let ((old-sign mc-pgp-always-sign)
+         old-comment recipients)
+      (setq mc-pgp-always-sign 'never
+           recipients (list (notes-encryption-mailcrypt-keyid)))
+      (cond
+       ((eq notes-encryption-sub-library 'pgp)
+       (setq old-comment mc-pgp-comment
+             mc-pgp-comment "")
+       (mc-pgp-encrypt-region recipients start end
+                              (notes-encryption-mailcrypt-keyid) nil)
+       (setq mc-pgp-comment old-comment))
+       ((eq notes-encryption-sub-library 'pgp50)
+       (setq old-comment mc-pgp50-comment
+             mc-pgp50-comment "")
+       (mc-pgp50-encrypt-region recipients start end
+                              (notes-encryption-mailcrypt-keyid) nil)
+       (setq mc-pgp50-comment old-comment))
+       ((eq notes-encryption-sub-library 'gpg)
+       (setq old-comment mc-gpg-comment
+             mc-gpg-comment "")
+       (mc-gpg-encrypt-region recipients start end
+                              (notes-encryption-mailcrypt-keyid) nil)
+       (setq mc-gpg-comment old-comment))
+       (t (error "notes-encryption-decrypt-region: no gpg sub-library.")))
+      (setq mc-pgp-always-sign old-sign)))
+   (t (error "notes-encryption-decrypt-region: no pgp library."))))
+
+(defun notes-encrypt-note (prefix)
+  "Encrypt the current note for the current user.  With PREFIX, start from point."
+  (interactive "P")
+  (save-excursion
+    (let (start end)
+      ;; Unless a prefix arg, start at beginning-of-note.
+      (if prefix
+         nil
+       (if (not (looking-at notes-beginning-of-defun-regexp))
+           (notes-beginning-of-defun))
+       ;; skip over the header
+       (while (and (or (looking-at notes-beginning-of-defun-regexp)
+                       (looking-at "^-+$")
+                       (looking-at "^\\(prev\\|next\\): ")
+                       (looking-at "^[ \t]*$"))
+                   (< (point) (point-max)))
+         (forward-line 1)))
+      (setq start (point))
+      ;; sanity check
+      (if (re-search-forward "^-----BEGIN PGP MESSAGE" 
+                            (progn 
+                              (save-excursion 
+                                (notes-end-of-defun) 
+                                (point))) t)
+         (error "Note is already encrypted."))
+      ;; find the end
+      (notes-end-of-defun)
+      (while (or (looking-at notes-beginning-of-defun-regexp)
+                (looking-at "^[ \t]*$"))
+       (forward-line -1))
+      (forward-line 1)
+      (setq end (point))
+      (notes-encryption-encrypt-region start end))))
+
+(defun notes-decrypt-note ()
+  "Decrypt the current note for the current user."
+  (interactive)
+  (save-excursion
+    (if (not (looking-at notes-beginning-of-defun-regexp))
+       (notes-beginning-of-defun))
+    (if (null (re-search-forward "^-----BEGIN PGP" 
+                                (progn 
+                                  (save-excursion 
+                                    (notes-end-of-defun) 
+                                    (point))) t))
+       (error "Note is not encrypted."))
+    (beginning-of-line)
+    (let ((start (point)))
+      (if (null (re-search-forward "^-----END PGP"
+                                  (progn
+                                    (save-excursion
+                                      (notes-end-of-defun)
+                                      (point))) t))
+         (error "Could not find end of encrypted note."))
+      (forward-line)
+      (beginning-of-line)
+      (notes-encryption-decrypt-region start (point)))))
+
+\f
+;;;
+;;; notes or notes-index?
+;;;
+(defun notes-summarize-subject (regexp-subject &optional subject)
+  "* Collect all of a subject."
+  (interactive "P")
+  (require 'notes-index-mode)
+  (if (null subject)
+      (cond
+       ((eq major-mode 'notes-mode)
+       (setq subject (notes-extract-subject nil t)))
+       ((eq major-mode 'notes-index-mode)
+       (setq subject (notes-index-extract-subject)))))
+  (if (null subject)
+   (error "notes-summarize-subject:  no subject specified or inferable."))
+  (let
+      ((buf (get-buffer-create (concat "*notes on " subject "*"))))
+    (pop-to-buffer buf)
+    (erase-buffer)
+    (apply 'call-process (expand-file-name "catsubject" notes-bin-dir)
+           nil buf t
+          (if regexp-subject
+              (list "-m" subject)
+            (list subject)))
+    (notes-mode)))
+
+\f
+;;;
+;;; notes-rename-subject
+;;;
+(defun notes-rename-subject ()
+  "* Rename the current subject.
+Assumes working next/prev linkage between the entries."
+  (interactive)
+  (let ((subject (notes-extract-subject)))
+    (condition-case nil
+       (progn
+         (end-of-line)
+         (beginning-of-defun)
+         (if (not (looking-at "* "))
+             (error "confused"))
+         (forward-char 2)
+         (error "not yet done")
+         )
+      (error nil))))
+
+\f
+;;;
+;;; notes-mode
+;;;
+
+(defvar notes-mode-map
+  (let ((map (make-sparse-keymap)))
+    ;; Random key-bindings.
+    (define-key map "\M-\C-a" 'notes-beginning-of-defun)
+    (define-key map "\M-\C-e" 'notes-end-of-defun)
+    (define-key map "\C-c\C-d" 'notes-decrypt-note)
+    (define-key map "\C-c\C-e" 'notes-encrypt-note)
+    (define-key map "\C-c\r" 'notes-w3-follow-link)
+    (define-key map "\C-c\C-p" 'notes-follow-prev-link)
+    (define-key map "\C-c\C-n" 'notes-follow-next-link)
+    (define-key map "\C-c\C-i" 'notes-goto-index-entry)
+    (define-key map "\C-c\C-k" 'notes-current-url-as-kill)
+    (define-key map "\C-c\C-s" 'notes-summarize-subject)
+    (define-key map "\C-c-" 'notes-underline-line)
+    ;; FIXME: Use completion-at-point-functions instead.
+    (define-key map "\t" 'notes-complete-subject)
+    ;; FIXME: Use post-self-insert-hook instead.
+    (define-key map "\r" 'notes-electric-return)
+    (define-key map "\n" 'notes-electric-return) ; a more common synonym
+    (notes-platform-bind-mouse map 'S-mouse-2 'notes-w3-follow-link-mouse)
+    map))
+
+;;;###autoload
+(define-derived-mode notes-mode indented-text-mode "Notes"
+  "Enable notes-mode for a buffer.
+
+Inside a notes buffer one can click on URLs and follow them to
+other notes files.
+
+See the file notes-variables.el for all customization options.
+To change options, (require 'notes-variables) in your .emacs
+and then change things.
+
+Subjects in notes mode are lines beginning with an asterisk
+and underlined with dashes.  Subjects can be completed 
+with \\[notes-complete-subject] and are automatically underlined.
+
+You may wish to add this code to your .emacs file:
+    (add-to-list 'auto-mode-alist
+       (cons \"/9[0-9][0-9][0-9][0-9][0-9].?\\\\'\" 'notes-mode))
+    (define-key global-map [?\\C-c ?n] 'notes-index-todays-link)
+to automatically enter notes mode.
+
+I have two suggestions for how to organize your notes files.
+First, I collect my notes into a separate file per day.  (If you have
+fewer notes, you may find once-per-week or month more suitable.)
+Second, at the beginning of each file I have a subject \"* Today\".
+Since every file has this subject, I can use its prev and next links
+to easily move around the collection of files.
+
+The key-bindings of this mode are:
+\\{notes-mode-map}"
+  (notes-platform-init)
+
+  ;; Now set up the mode.
+  (auto-fill-mode 1)
+
+  ;; Imenu stuff.
+  (set (make-local-variable 'imenu-prev-index-position-function)
+       'notes-beginning-of-defun)
+  (set (make-local-variable 'imenu-extract-index-name-function)
+       'notes-extract-subject)
+
+  (set (make-local-variable 'font-lock-defaults)
+       `(notes-font-lock-keywords
+         t nil nil beginning-of-line))
+
+  ;; Finally, try to fill in an empty note.
+  (if (zerop (buffer-size))
+      (notes-mode-initialize-note))
+
+  ;; Enable outline-minor-mode (forcebly, in case someone already
+  ;; has it in their text-mode hook).  Bug found by
+  ;; Nils Ackermann <nils@nieback.de>.
+  (if notes-use-outline-mode
+      (outline-minor-mode 1)))
+
+
+
+\f
+;;;
+
+(run-hooks 'notes-mode-load-hooks)
+(provide 'notes-mode)
+;;; notes-mode.el ends here
diff --git a/packages/notes-mode/notes-mode.info b/packages/notes-mode/notes-mode.info
new file mode 100644 (file)
index 0000000..6e9118e
--- /dev/null
@@ -0,0 +1,1257 @@
+This is notes-mode.info, produced by makeinfo version 4.13 from
+notes-mode.texi.
+
+INFO-DIR-SECTION Emacs
+START-INFO-DIR-ENTRY
+* Notes-mode: (notes-mode).         Organizing on-line note-taking.
+END-INFO-DIR-ENTRY
+
+   Notes-mode:  Organizing on-line note-taking.
+
+   This file documents notes-mode, a package for organizing on-line
+note-taking.
+
+   Copyright (C) 1994-1996,2012  Free Software Foundation, Inc.
+
+     Permission is granted to copy, distribute and/or modify this
+     document under the terms of the GNU Free Documentation License,
+     Version 1.3 or any later version published by the Free Software
+     Foundation; with no Invariant Sections, with the Front-Cover texts
+     being "A GNU Manual", and with the Back-Cover Texts as in (a)
+     below.  A copy of the license is included in the section entitled
+     "GNU Free Documentation License".
+
+     (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+     modify this GNU manual.  Buying copies from the FSF supports it in
+     developing GNU and promoting software freedom."
+
+\1f
+File: notes-mode.info,  Node: Top,  Next: Introduction,  Prev: (dir),  Up: (dir)
+
+   This file documents notes-mode, a package for organizing on-line
+note-taking.  This is edition $Revision: 1.40 $, for notes-mode version
+1.16,  last updated $Date: 2010/06/20 18:30:34 $.
+
+* Menu:
+
+* Introduction::
+* Basics::
+* Advanced Features::
+* History::
+* Installation::
+* Keystroke index::
+* Concept index::
+
+ --- The Detailed Node Listing ---
+
+Introduction
+
+* What is it?::
+* Why keep notes at all?::
+* Why keep notes on-line?::
+* Why use notes-mode?::
+* Y2K Statement::
+* Related work::
+* Staying on top::
+
+Basics
+
+* Getting started::
+* A notes file::
+* The notes index::
+* The notes directories::
+
+Advanced Features
+
+* Notes files::
+* Notes indices::
+* Notes-mode configuration::
+
+Notes files
+
+* Getting around::
+* Subject summary::
+* Encryption::
+* Useful conventions::
+
+History
+
+* Notes-mode history::
+* Credits::
+* Changes::
+
+\1f
+File: notes-mode.info,  Node: Introduction,  Next: Basics,  Prev: Top,  Up: Top
+
+1 Introduction
+**************
+
+What is notes-mode and why should you (perhaps) use it?
+
+* Menu:
+
+* What is it?::
+* Why keep notes at all?::
+* Why keep notes on-line?::
+* Why use notes-mode?::
+* Y2K Statement::
+* Related work::
+* Staying on top::
+
+\1f
+File: notes-mode.info,  Node: What is it?,  Next: Why keep notes at all?,  Prev: Introduction,  Up: Introduction
+
+1.1 What is it?
+===============
+
+Notes-mode is an indexing system for on-line note-taking.  Notes-mode
+is composed of two parts, the visible part, a major-mode for emacs to
+aid note-taking; and the invisible part, scripts which periodically
+index your notes for you.
+
+   Note that notes-mode provides tools to "index" your notes, not to
+"search" them.  (Other existing tools such as `grep', `agrep', and
+`glimpse' already allow file search.)
+
+   A digression about indexing vs. searching: Indexing in this sense
+means organize them according to categories you give, while searching
+looks through all text for arbitrary strings.  Drawing on the World
+Wide Web for examples, Yahoo (`http://www.yahoo.com/') is an index,
+while Alta Vista (`http://www.altavista.digital.com/') is a
+search-engine.  In (potentially) more familiar terms, the yellow pages
+(1) are an index, while directory information (411 in the USA) is sort
+of a search-engine.
+
+   ---------- Footnotes ----------
+
+   (1) Trademarked, in Great Britain, Sunone tells me.
+
+\1f
+File: notes-mode.info,  Node: Why keep notes at all?,  Next: Why keep notes on-line?,  Prev: What is it?,  Up: Introduction
+
+1.2 Why keep notes at all?
+==========================
+
+So why should you use notes-mode?  Well, first, consider why you should
+(perhaps) keep your notes on line.  First, I assume that you take notes
+as part of your work or school.  If you don't, you can stop reading now
+and go back to watching TV.
+
+   If you keep notes, ask yourself why you keep them.  Reasons vary for
+different people, but some include:
+
+   * To remember what is said or done.
+
+   * To focus on what is important about what is said.
+
+   * To provide proof of having done something at a particular time or
+     date.
+
+   * I know there were other reasons here, but they slipped my mind.
+
+\1f
+File: notes-mode.info,  Node: Why keep notes on-line?,  Next: Why use notes-mode?,  Prev: Why keep notes at all?,  Up: Introduction
+
+1.3 Why keep notes on-line?
+===========================
+
+OK, I've talked you into keeping notes.  Why do it on-line?  Again,
+there are different reasons for different people.  If you don't want to
+consider keeping your notes on-line, you're welcome to go back to your
+(clay tablets) paper notes.
+
+   However, if you do much of your work on-line, or if you have
+portable computer, then you might want to consider keeping your notes
+on-line.
+
+   * It's faster to type than write, and possibly more legible at high
+     speed.
+
+   * Often information is already on-line.  For example, in software
+     development, bug reports, measurement results, and everything else
+     that's useful is on-line.
+
+   * You can take down more detail than you otherwise would (especially
+     if the data is already on-line).  Taking more copious notes can be
+     helpful when you go back to figure out why that strange thing was
+     happening.
+
+   * On-line notes are easy to search.  Full-text search with grep,
+     agrep, and glimpse are all much faster and are often more accurate
+     than paging through paper notes looking for a particular keyword.
+
+   * On-line notes are easy to index.  (At least with notes-mode!)  In
+     addition to full-text search, it's helpful to organize notes by
+     category.  If you keep a table-of-contents of your paper notes,
+     you are either extremely fastidious or a librarian (Nadia?).
+
+   * You can keep all of your notes with you at all times (if you have
+     a portable computer).  Even at a page a day, paper notes quickly
+     become bulky and awkward to carry around.  On-line notes fit on
+     your computer's hard disk, an extraordinarily compact medium by
+     comparison.
+
+   * Your notes can be automatically backed up.  Paper notes can become
+     damaged with time, and as a graduate student one of my fears was
+     fire in Boelter Hall consuming all my research experiments and and
+     therefore hopes of a degree.  Electronic notes are extremely easy
+     to duplicate and can be automatically backed up with the rest of
+     your computer.  (You _do_ back up your computer, don't you?)
+
+
+   While these advantages are undoubtedly clear to any right-thinking
+computer user, it should be said that there are a few disadvantages for
+on-line note-taking.
+
+   * If you don't have a computer with you most of the time, it's
+     difficult take notes on-line (because you're off-line, of course).
+     (1)
+
+   * Computers require power.  If your portable computer runs out of
+     juice, you're on your own.  Corollary:  watch your power, or bring
+     paper.  Better corollary:  watch your power, _and_ bring paper.
+
+   * Social limitations.  It's not always socially acceptable to take
+     notes-on-line.  For example, at a party, few people would use a
+     computer to take down the phone number of a person to whom they're
+     attracted (at least, if they wanted the attraction to be mutual).
+     (2) Sometimes other people find the sound of typing distracting.
+
+   * Health issues.  Repetitive stress injuries do occur writing
+     (slower) by hand is at least an alternate motion than typing.
+
+   * Legal limitations.  If you want to use your electronic notes to
+     justify a patent or invention, you may be breaking legal ground.
+     Being on the legal cutting-edge is rarely an easy thing for the
+     person involved.(3)
+
+
+   ---------- Footnotes ----------
+
+   (1) I consider myself pretty anal about this subject, often typing
+notes in from paper after-the-fact, and _I_ certainly don't manage to
+back-enter my notes all time time.
+
+   (2) On the other hand, some folks at MIT are working on this problem
+from both the hardware and the social side of things
+(`http://wearables.www.media.mit.edu/projects/wearables/') (Perhaps
+they have wild parties with computers, too.)
+
+   (3) My hat is off to Rosa Parks and the many other normal people who
+triggered landmark cases.
+
+\1f
+File: notes-mode.info,  Node: Why use notes-mode?,  Next: Y2K Statement,  Prev: Why keep notes on-line?,  Up: Introduction
+
+1.4 Why use notes-mode?
+=======================
+
+OK, I've sold you on note-taking and even on on-line note-taking.  What
+about notes-mode?  Naturally, it slices, dices, and makes julienne
+fries.  But wait, there's more:
+
+   * It automates indexing your notes, linking notes with the same
+     subject together.
+
+   * It supports embedded links, allowing you to manually link together
+     different topics and external files.
+
+   * It includes a number of convenience-features in emacs.  Subjects
+     can be completed based on existing subjects.  The usual emacs
+     customization mechanisms are available.
+
+   * Notes containing sensitive information can be encrypted.
+
+   * Notes-mode seems better than the other, currently available
+     alternatives.
+
+   What are the alternatives?  I'm glad you asked.  (1)
+
+   * *HTML*.  HTML has better formatting capabilities than notes-mode,
+     and it has excellent linking capabilities.  Unfortunately, HTML's
+     tags are fairly intrusive  (each is at least four characters long
+     and most come with a pair),  tags can get confused with normal
+     text,  errors in HTML can be bad (obscuring data),  and there's no
+     automatic indexing feature  (at least with plain HTML).  Besides,
+     all data should be kept as close to the ASCII from whence it came,
+     as God Intended (hi, Steve).
+
+   * *Word Processors*.  Word processors are strong in the formatting
+     department,  but most don't really have linking capabilities,  and
+     have poor or restricted indexing.
+
+
+   ---------- Footnotes ----------
+
+   (1) If you think I'm missing an alternative, please let me know.
+
+\1f
+File: notes-mode.info,  Node: Y2K Statement,  Next: Related work,  Prev: Why use notes-mode?,  Up: Introduction
+
+1.5 Y2K Statement
+=================
+
+Notes mode uses dates extensively,  both two-digit years and
+seconds-since-1970.  However, notes-mode has been coded to function
+correctly through  the year 2038.
+
+   To avoid problems with the year 2000, notes-mode assumes  that any
+two-digit years before "70" are 20xx, not 19xx.  Notes-mode should
+therefore work correctly in both the year 1999 and 2000.
+
+   (Notes-mode 1.17 released February 1999 fixes a lingering Y2K
+problem.)
+
+   Because notes-mode uses seconds-since-1970 for some date calculations
+it will fail beyond the year 2038 on computers with 32-bit integers.
+
+   If I'm still using notes-mode then on a 32-bit machine I'll see what
+I can do.
+
+\1f
+File: notes-mode.info,  Node: Related work,  Next: Staying on top,  Prev: Y2K Statement,  Up: Introduction
+
+1.6 Related work
+================
+
+What would a document be without related work?
+
+   Notes-mode is not related in any way to Lotus Notes.
+
+   I am told (by David Weisman)  that it's something like the now
+defunct Lotus Agenda.
+
+   Ashvin Goel, one of the contributors to notes-mode,  has gone off
+and done a from-scratch reimplementation  called records-mode.  It's
+very similar to notes mode,  and emphasizes on-the-fly updates to entry
+links  but lacks a manual.  You may want to check it out at
+`http://www.cse.ogi.edu/~ashvin/software.html'.
+
+   Hyperbole (by Bob Weiner) offers better linking facilities than
+notes-mode, but it has a bunch of stuff notes-mode doesn't need and
+it's missing notes-specific indexing provided by notes-mode.  For
+people already using Hyperbole  it would be interesting to replace
+notes-mode's linking  with Hyperbole's.  Contributions in this area are
+welcome, provided they make Hyperbole  optional.
+
+\1f
+File: notes-mode.info,  Node: Staying on top,  Prev: Related work,  Up: Introduction
+
+1.7 Staying on top
+==================
+
+The most recent distribution of notes-mode  is always available via
+`http://www.isi.edu/~johnh/SOFTWARE/NOTES_MODE/'.
+
+   After you've installed notes mode you're encouraged to subscribe to
+the mailing lists.  To subscribe, go to the web page Send the message
+"subscribe" to
+`http://www.heidemann.la.ca.us/mailman/listinfo/notes-mode-announce' or
+`http://www.heidemann.la.ca.us/mailman/listinfo/notes-mode-talk'.
+
+   The announce list will contain only release announcements and so is
+guaranteed to be very low bandwidth.
+
+\1f
+File: notes-mode.info,  Node: Basics,  Next: Advanced Features,  Prev: Introduction,  Up: Top
+
+2 Basics
+********
+
+All you need to use notes-mode  in a chapter.  (Except for
+installation, *Note Installation::.)
+
+* Menu:
+
+* Getting started::
+* A notes file::
+* The notes index::
+* The notes directories::
+
+\1f
+File: notes-mode.info,  Node: Getting started,  Next: A notes file,  Prev: Basics,  Up: Basics
+
+2.1 Getting started
+===================
+
+To get started with notes-mode,  read the introduction this chapter,
+then either:
+
+   * Start emacs, do  `M-x' `load-library' `RET' `notes-mode' `RET'
+     This approach will set up notes-mode with the default parameters.
+
+   * OR, from the shell,  run the program `notesinit'.  This approach
+     will ask you some questions about how you want to configure  notes
+     mode.
+
+
+   Either way these should set up everything notes-mode needs.  This
+program will modify your environment (as described in this section),
+or it will give you the exact commands you should run yourself.
+
+   After you've done one of these,  start up emacs and note-away.  I
+usually begin a  day of note-taking by running the command  `M-x'
+`notes-index-todays-link'  to jump directly to today's note.  You may
+even wish to bind this to something,  perhaps with  `(define-key
+global-map "\C-cn" 'notes-index-todays-link)'  in your `.emacs'.
+
+   If you want to browse your existing notes,  you might instead want
+to edit the  `~/NOTES/index'.  (What is a notes file and the index?
+Hurry up and finish  reading this chapter.)
+
+\1f
+File: notes-mode.info,  Node: A notes file,  Next: The notes index,  Prev: Getting started,  Up: Basics
+
+2.2 A notes file
+================
+
+The notes file is the focus of most of the activity in notes-mode,
+it's where you take your notes.  Notes files are mostly free-form text
+broken up into "entries".  Here's an example:
+
+     8-Jun-95 Thursday
+     -----------------
+
+     * Today
+     -------
+     prev: <none>
+     next: <file:///~/NOTES/199506/950609#* Today>
+
+     next week - release notes-mode
+
+
+     * Environment/notes
+     -------------------
+
+     I explained notes mode to Ashvin and Geoff.
+     ...
+
+   Each entry has a subject-block, (maybe) some links, and then (maybe)
+some text.
+
+   The subject-block must begin with an asterisk-space (`* ')  at the
+beginning of a line, followed by the subject itself.  Subjects must be
+underlined with a row of dashes  (if they're not exact, that's OK;
+notes-mode will fix them periodically).  For convenience,  notes-mode
+will automatically add the underlines when you  hit `<RTN>'
+(`notes-electric-return'),  and `<TAB>' on a partially completed
+subject will  invoke completion based on indexed subjects
+(`notes-complete-subject').  
+
+   Following the subject may be links.  (In the example, the "Today"
+entry has links,  the "Environment/notes" entry doesn't.)  These links
+will be automatically updated by notes-mode  when your notes are
+re-indexed;  just leave a blank line when writing the note.  
+
+   Links are made with pseudo-URLs,  sort of like those in the World
+Wide Web.  Any of these URLs can be followed in notes-mode files  by
+clicking `S-mouse-2' on the pseudo-URL  (`notes-w3-follow-link-mouse').  
+
+   Finally comes the text.  Go wild, but just don't include text that
+looks like a subject.  You can embed pseudo-URLs to link notes together
+manually.
+
+   The more anal of you may have noticed  that the lines before the
+first subject  are not part of any entry.  These lines are  "front
+matter".  They're not usually used for much,  but they can be a good
+place to label the file.  
+
+   There are a number of useful conventions  that can be adopted to
+organize your notes.  The most common is the "Today" entry.  If you
+keep an entry with the same subject  at the beginning of each file,
+you link all of your notes together.  Notes-mode will help you out with
+some of these convetions  by automatically creating or copying some
+fields for you;  see *note Useful conventions:: for details.
+
+   Finally, notes-mode can also work with outline-minor-mode  (thanks
+to Tim Carroll for pointing this out).  Outline-mode supports hiding
+and revealing text and other helpful  features beyond the scope of this
+document.  *Note Outline Mode: (emacs)Outline Mode, for details.
+
+\1f
+File: notes-mode.info,  Node: The notes index,  Next: The notes directories,  Prev: A notes file,  Up: Basics
+
+2.3 The notes index
+===================
+
+The notes index lists all subjects you've kept notes about,  and each
+date of each note.  Impress your friends,  show your advisor why you're
+worth the _big_ peanuts,  you'll soon have the biggest index of all.
+
+   The index has one line per subject, listing the subject  and each
+day a note was made about that subject.  For example:
+
+     Bicycle: 950314, 950316
+     Bicycle/maintenance/books: 951028
+     Bridge/hands: 951113, 951114, 951116, 951117
+     Bridge/UCLA: 960222, 960409
+
+   Clicking on any of the dates with `mouse-2'  will take you to that
+note  (`notes-index-mouse-follow-link').  (You can also move the point
+over the date and hit `<RTN>'  if you're musaphobic
+[`notes-index-follow-link'].)  
+
+   The notes index is automatically updated by the program `mkall'.
+Typically `mkall' is run nightly by `cron'.  On most modern versions of
+Unix, you can add this command to cron by  running `crontab -e' and
+adding the line:
+
+     0 4 * * * /usr/local/lib/notes-mode/mkall
+   
+   (Assuming that your notes programs are installed  in
+/usr/local/lib/notes-mode, the default location.)
+
+\1f
+File: notes-mode.info,  Node: The notes directories,  Prev: The notes index,  Up: Basics
+
+2.4 The notes directories
+=========================
+
+The final thing needed to tie basic notes-mode together his how the
+pieces fit together.  Since my graduate work is in file systems, you
+can bet that directories are involved.
+
+   Notes-mode keeps its files in a two-level hierarchy:
+
+     ~/NOTES
+     ~/NOTES/index
+     ~/NOTES/rawindex
+     ~/NOTES/199603
+     ~/NOTES/199603/960329
+     ~/NOTES/199603/960330
+     ~/NOTES/199604
+     ~/NOTES/199604/960401
+
+   The top level, `~/NOTES', is the notes directory.  It keeps all
+notes in one place.  (The name of this directory is configurable, *Note
+Notes-mode configuration::.)
+
+   Inside the notes directory are two files and a number of directories.
+The files are `index',  the index of all entries (*note The notes
+index::),  and `rawindex',  used internally.  
+
+   The notes directory also contains a number of subdirectories,
+sometimes called "intermediate directories".  These directories group
+the actual notes files into manageable chunks,  keeping any directory
+from getting too large.  Intermediate directories are named  by the
+four-digit year and the two-digit month  of the entries they contain.
+(The format of intermediate directories  is configurable, *Note
+Notes-mode configuration::.)  
+
+   Finally,  in each intermediate directory are the notes files
+themselves,  named according to the two-digit year, month, and
+day-of-month.  
+
+   For the most part,  notes-mode will automatically maintain this
+organization of files,  once you create the top-level directory.
+Notes-mode will also automatically ensure  that all files in the notes
+directory are unreadable by  anyone other than their owner.  Notes are
+personal things.  (This behavior is not currently configurable,  but it
+probably should be.)  
+
+\1f
+File: notes-mode.info,  Node: Advanced Features,  Next: History,  Prev: Basics,  Up: Top
+
+3 Advanced Features
+*******************
+
+Notes-mode, the minutiae, and some other good stuff.
+
+* Menu:
+
+* Notes files::
+* Notes indices::
+* Notes-mode configuration::
+
+\1f
+File: notes-mode.info,  Node: Notes files,  Next: Notes indices,  Prev: Advanced Features,  Up: Advanced Features
+
+3.1 Notes files
+===============
+
+* Menu:
+
+* Getting around::
+* Subject summary::
+* Encryption::
+* Useful conventions::
+
+\1f
+File: notes-mode.info,  Node: Getting around,  Next: Subject summary,  Prev: Notes files,  Up: Notes files
+
+3.1.1 Getting around
+--------------------
+
+Moving between notes entries and around the hierarchy is fairly common,
+so there are some accelerators.
+
+`C-c C-i'
+     Jump to the index entry for the current entry's subject
+     (`notes-goto-index-entry').  
+
+`C-c C-n'
+
+`C-c C-p'
+     Move to the next or prior note with the same subject
+     (`notes-follow-next-link' and `notes-follow-prev-link').  These
+     functions follow the links in the note,  if they're defined.  If
+     not,  they look through the index file.  This approach usually
+     works,  but will fail if there are multiple new entries created
+     with the given subject  between when the index is recomputed.  
+
+`C-c<RTN>'
+     Follow the link under the point (`notes-w3-follow-link'),  a
+     keyboard equivalent of <S-mouse-2>.  
+
+`M-C-a'
+
+`M-C-e'
+     Jump to the beginning or end of the current note entry
+     (`notes-beginning-of-defun' and `notes-end-of-defun').  
+
+`C-c C-k'
+     Copies the pseudo-URL for the current note into the kill-ring
+     (`current-url-as-kill').  To link two entries, go to the target,
+     grab its URL with `C-c C-k',  go to where you want to make the
+     link,  and yank the URL with `C-y'.  
+
+
+   Notes mode supports imenu,  if you have it bound to something  (I
+use `(global-set-key [down-mouse-3] 'imenu)').  
+
+\1f
+File: notes-mode.info,  Node: Subject summary,  Next: Encryption,  Prev: Getting around,  Up: Notes files
+
+3.1.2 Subject summary
+---------------------
+
+It's often helpful to look at all  entries for a given subject `C-c C-s'
+collects all entries with the subject of the current  entry in a new
+buffer  (`notes-summarize-subject').  
+
+\1f
+File: notes-mode.info,  Node: Encryption,  Next: Useful conventions,  Prev: Subject summary,  Up: Notes files
+
+3.1.3 Encryption
+----------------
+
+Notes occasionally contain private material.  While Unix has strong
+services for file protection  (compared to other, say, more
+wide-selling operating systems),  in many systems root passwords are
+shared,  while other systems are vulnerable to physical compromise.  In
+such systems,  properly used encryption is the best approach to
+security.
+
+   Notes-mode encryption is based  Phill Zimmerman's PGP (Pretty Good
+Privacy) (see `http://www.mantis.co.uk/pgp/pgp.html')  and either  with
+Rick Campbell's  emacs interface, PAM (PGP Augmented Messaging) (from
+`ftp://h.gp.cs.cmu.edu/usr/rfb/pam/')  (note that as of January 1997,
+PAM is no longer at this ftp site  and appears to not be publicly
+available),  or LoPresti and Choi's mailcrypt (from
+`http://cag-www.lcs.mit.edu/mailcrypt/').  
+
+`C-c C-e'
+     Encrypt the current note (`notes-encrypt-note').  By default this
+     function encrypts the whole entry.  With a prefix argument,  only
+     the part from the point to the end of the entry is encrypted.  
+
+`C-c C-d'
+     Decrypt the current note (`notes-decrypt-note').
+   
+   By default notes-mode determines your public key by looking  up your
+`user-full-name' in your PGP keyring.  You can override this default by
+setting  `notes-encryption-key-id'  to the desired key-id.  
+
+\1f
+File: notes-mode.info,  Node: Useful conventions,  Prev: Encryption,  Up: Notes files
+
+3.1.4 Useful conventions
+------------------------
+
+There are a number of conventions which can make notes-mode  easier to
+use.  These conventions are a matter of personal taste,  of course.  Do
+what works for you.
+
+   First,  I find it helpful to keep the date of each notes-file at the
+top  of the file.  This makes the file self-identifying  if the
+filename is lost.
+
+   Second,  I find it useful to have the first entry of each file  have
+the same subject (perhaps "Today").  This entry then links all notes
+together,  making it easy to go to yesterday and tomorrow.  I keep a
+to-do list on this entry,  bringing the list forward each day.  
+
+   A third useful convention is to keep an  entry with the name based
+on the day of the week  in each file.  Analogous to "Today", this entry
+links together  weeks.
+
+   Notes-mode supports these conventions.  When you make a new
+notes-file in emacs,  notes-mode searches for the preceding file.  If
+it follows any of these conventions,  the new file is initialized
+appropriately.  Currently  the approach to do this process  (in the
+program `mknew')  is fairly sensitive,  so it may not work in all cases.
+In particular,  the date convention works only on  for English-language
+dates.  (If you use notes-mode with a non-English language,  let me
+know and I'll work with you to fix this limitation.)
+
+   If you find other helpful conventions,  please let me know.
+Modifications to `mknew' to implement  new conventions are also invited.
+
+   If you don't want to use these conventions,  or if you want to use
+different ones,  set the emacs variable
+notes-mode-initialization-program  to nil or the name of your
+initialization program.  
+
+\1f
+File: notes-mode.info,  Node: Notes indices,  Next: Notes-mode configuration,  Prev: Notes files,  Up: Advanced Features
+
+3.2 Notes indices
+=================
+
+Only two features of notes index mode haven't yet been described.
+First,  you can open any notes-file based on date  with
+`notes-index-link',  normally bound to <o>.  
+
+   Second,  you can get a subject-summary  with <C-c C-s>  (*note
+Subject summary::).  The subject defaults to that of the current index
+line.  
+
+\1f
+File: notes-mode.info,  Node: Notes-mode configuration,  Prev: Notes indices,  Up: Advanced Features
+
+3.3 Notes-mode configuration
+============================
+
+Several aspects of notes mode are particularly visible  to the user.
+Because I'm not a fascist,  a user can change most of these.
+
+   Preferences are specified in `~/.notesrc'.  This file lists things
+to change:
+
+     # lines beginning with a hash are comments
+     dir: ~/NOTES
+     int_form: %Y%m
+
+   Currently, two things can be changed:
+
+`dir'
+     Specifies the root of the notes directory hierarchy  (*note The
+     notes directories::).
+
+`int_form'
+     Specifies the form of the intermediate directory.  A limited
+     subset of `strftime(3)'  formatting is allowed.
+
+   The subset of `strftime(3)' supported in `int_form' is:
+`%Y'
+     The four-digit year.
+
+`%y'
+     The two-digit year.
+
+`%m'
+     A two-digit numeric month.
+
+`%d'
+     A two-digit day.
+
+   In addition to `.notesrc',  there are a number of emacs-specific
+variables.  These variables are documented in the file
+`notes-variables.el'.
+
+\1f
+File: notes-mode.info,  Node: History,  Next: Installation,  Prev: Advanced Features,  Up: Top
+
+4 History
+*********
+
+More about notes-mode than you wanted to know, and some thanks.
+
+* Menu:
+
+* Notes-mode history::
+* Credits::
+* Changes::
+* Suggested features::
+
+\1f
+File: notes-mode.info,  Node: Notes-mode history,  Next: Credits,  Prev: History,  Up: History
+
+4.1 Notes-mode history
+======================
+
+Briefly,  I started keeping notes on-line shortly after I got a
+portable computer  in January, 1994.  After a month-and-a-half of
+notes, I realized that  one does not live by grep alone,  so I started
+adding indexing facilities.
+
+   In June of 1995  some other Ficus-project members started  keeping
+and indexing on-line notes  using other home-grown systems.  After some
+discussion,  we generalized my notes-mode work and  they started using
+it.
+
+   Over the next 18 months notes-mode grew.  Finally, in April, 1996 I
+wrote documentation,  guaranteeing that innovation on notes-mode will
+now cease  or the documentation will become out of date.
+
+\1f
+File: notes-mode.info,  Node: Credits,  Next: Changes,  Prev: Notes-mode history,  Up: History
+
+4.2 Credits
+===========
+
+I (John Heidemann, <johnh@isi.edu>)  started, documented, and currently
+maintain notes-mode.  I take ultimate responsibility for the code,
+especially for the ugly parts that I won't let others change.
+
+   Ashvin Goel  <ashvin@ficus.cs.ucla.edu>  has been a very
+enthusiastic notes-mode user and contributor.  He is responsible for at
+least  the ideas behind `notes-summarize-subject' and the ideas and
+initial implementations of  some of the original generalization and
+modularity improvements,  `notes-follow-next-link' and
+`notes-follow-prev-link',  `notes-goto-index-entry',  programmed
+subject completion,  and  context-sensitive mouse-2 handling.  In
+addition,  he is an invaluable second opinion about  what and how
+things should be done  (even if I don't always agree with him).
+
+   Geoff Kuenning  <geoff@ficus.cs.ucla.edu>  has been another
+enthusiastic notes-mode user and victim.  He is responsible for
+finding several bugs,  motivation for mouse-less operation,  comments
+about the documentation,  the day-of-week convention,  and an initial
+implementation and the idea of  multiple entries with the same subjects
+in a single notes-file.
+
+   Ramesh Govindan <govindan@isi.edu> did the xemacs port.
+
+   Since it's release on Usenet in April 1996 several  other folks have
+contributed.  Thanks to  David Weisman <weisman@app1.osf.org>,  Martin
+L. Smith <martin@ner.com>,  Jason Bastek <jason@aai.com>,  Ulrich
+Herbst <Ulrich.Herbst@t-systems.com>.  See the next section (*Note
+Changes::.) for details of their exploits.
+
+   Thanks to Larry Ayers <layers@marktwain.net>  for popularizing
+notes-mode with reviews in  the Linux Gazette  (at
+<http://www.linuxgazette.com/issue22/notes-mode.html> and
+<http://www.linuxgazette.com/issue35/ayers.html>).
+
+\1f
+File: notes-mode.info,  Node: Changes,  Next: Suggested features,  Prev: Credits,  Up: History
+
+4.3 Changes
+===========
+
+For the bored:
+
+   First semi-public release. 12-Jul-95: version 0.1  Shared a version
+with Ashvin and Geoff.
+
+   Changed  6-Dec-95: version 0.3  Ashvin's changes for note traversal
+added (C-c C-p and C-c C-n now move to the prev/next note in note-mode).
+URL parsing changed so that "localhost" is optional.
+
+   Changed 19-Dec-95:  version 0.4  More robust prev/next code added,
+both to handle going back and forward in the middle of chains through
+the index file, and to handle back/forward in a single file.   URL
+parsing changed so that notes-goto-index-entry correctly handles
+lookups on notes names such as "252A".
+
+   Changed 20-Dec-95: version 0.5.   Fixed a missing variable in
+notes-url.el.   Added a work-around to a bug in emacs-19.30's
+define-derived-mode.
+
+   Changed 24-Dec-95: version 0.6.   Prev/next code re-re-written to be
+more robust.
+
+   Changed 26-Dec-96:  version 0.7.   Bug fix release.
+
+   Changed 23-Jan-96: version 0.8.   Initialization code added to set
+up a new note.  New variable:  notes-bin-dir.
+
+   I'm skipping version 0.9 because I erroneously release version 0.1
+as version 0.9 (only on the web, not on Usenet).
+
+   I'm bumping from version "0" to version "1" since the code is has
+been in production use for more than a year by several people.  Minor
+numbers are the same.
+
+   Changed 26-Mar-96: version 1.10.   Setup code completely re-written.
+Several incompatible changes have been made:  - the lisp and Perl code
+must be installed via make install, not by copying.   - some data is
+specified in a .notesrc file; copy and modify sample.notesrc.   -
+several internal elisp changes.   - catsubject added (bound to C-cC-s):
+collect all notes about the current subject.   - new notes-files are
+initialized with fields based on the prior day's notes; see mknew for
+details.   - daily_work is gone; mkall is rewritten to use .notesrc.
+
+   Changed 29-Apr-96: version 1.11.   Real documentation.   Mknew
+caching added.
+
+   Changed  9-Aug-96: version 1.12.   Added notesinit to do all setup
+for new users.
+
+   Changed 24-Aug-96: version 1.13.   Minor documentation fixes.
+
+   Changed 20-Dec-97: version 1.14.  Autoconf support.
+
+   Fontification of the index buffer is now pre-computed in perl other
+than done when the file is needed (in elisp with slow regular
+expressions).  2000-line index files are now 1-2 seconds rather than
+15-30 on a 100MHz Pentium.  If necessary (the pre-computed version
+isn't up-to-date) we fall back on the slower code.
+
+   Related work improved (suggestion by David Weisman
+<weisman@app1.osf.org>).
+
+   Documentation improvement (problem found by Martin L. Smith
+<martin@ner.com>).
+
+   Installation improved (code by Jason Bastek <jason@aai.com>).
+
+   Bug in notes-index mode with subjects containing colons fixed
+(johnh).
+
+   Encryption now supports mailcrypt.el.
+
+   Support for emacs 20 (a small font-lock change).
+
+   Changed  5-Jan-98: version 1.15.  Bug in decryption for non-PAM
+users fixed  (suggestion by Kevin Davidson <tkld@quadstone.com>).
+
+   Y2K statement added  (suggestion by Kevin Davidson
+<tkld@quadstone.com>).
+
+   Pointer to mailcrypt added (as a supported encryption package).
+Problem pointed out by K. Ueda <kueda@jupiter.qse.tohoku.ac.jp>.
+
+   Changed  4-Nov-98: version 1.16.  Bug in kill-ring handling of
+notes-old-underline-line  fixed by Tim Potter <timp@jna.com.au>.  Bug
+in whitespace handling after PGP encryption fixed by Tim Potter.  Bugs
+in handling of entries with hash signs in their name fixed  (found by
+Tim Potter).  Fontification of index buffer further improved  (mapcar
+is your friend).  Xemacs support added based on code contributed by
+Ramesh Govindan.
+
+   Changed 28-Feb-99: version 1.17: Improvement:  notes-electric-return
+now fixes up the prev/next links  of new entries (only).  Code
+contributed by  Takashi Nishimoto.
+
+   Bug fix:  reversed options -batch and -q in configure.in to placate
+XEmacs 20.0; changed notesinit to not downcase the pathname  (bugs
+found by Thierry Bezecourt).
+
+   Clarification: Autofilling of new notes more clear in the manual
+(hopefully,  suggested by Solofo Ramangalahy).
+
+   Bug fix:  a y2k bug in was found and fixed in mkindex.  Sigh.
+
+   New:  Two mailing lists for notes-mode have been created:
+`notes-mode-announce@heidemann.la.ca.us' and
+`notes-mode-talk@heidemann.la.ca.us'.  Send the line "subscribe
+notes-mode-announce" (or "subscribe notes-mode-talk") to
+`majordomo@heidemann.la.ca.us' to join them.  [_These instructions are
+now superceeded; to subscribe, go to
+`http://www.heidemann.la.ca.us/mailman/listinfo/notes-mode-talk' and
+`http://www.heidemann.la.ca.us/mailman/listinfo/notes-mode-announce'._]
+
+   Changed  6-Oct-99: version 1.18: Bug fix:  handling of
+electric-prevnext is better when there are  existing prev/next links.
+
+   Clarification: I added some pointers in the code to the installation
+instructions.  (Apparently people can't RTF README.)
+
+   Extension: mailcrypt-3.5.x suported including pgp, pgp5 and gpg.
+
+   Changed (date 23-Dec-00): version 1.19: Bug fix (cosmetic): suppress
+comments in encrypted nodes.
+
+   Install fixes from Kannan Varadhan: elisp directories changed on
+install.
+
+   Added C-j as a synonym for RET in notes-mode to parallel C++ or perl
+mode.  (Suggested by Fred Jaggi `jaggi@rsn.hp.com'.)
+
+   Outline-minor-mode support added and documented.  (Suggested by Tim
+Carroll `tim@boomboom.com'.)
+
+   Bug/typo fixes in gpg support (Contributed by William A. Perkins
+`wa_perkins@pnl.gov', with separate patches from Knut Anders Hatlen
+`kahatlen@online.no'.)
+
+   Installation improvements suggested by Christophe Troestler
+`Ch.Troestler@linkline.be': use install-info to update the info dir,
+warn users of -prefix that lisp files go elsewhere.
+
+   Changed (date  1-Feb-01): version 1.20: Bug fix: missing file
+notes-first.el added to the distribution.  (Bug found by Michael
+Totschnig `michaelt@supernet.ca'.)
+
+   Changed ( 5-Dec-01): version 1.21: (backed-out--didn't work with
+spaced URLs) URL lookup now uses thing-at-point.
+
+   Fix to make notes-mode work with emacs-21.1 (Fix from Klaus Zeitler
+`kzeitler@lucent.com'.)
+
+   Changed ( 3-Jan-02): version 1.22: Several bugs in `notesinit' for
+stricter Perl implementations (bug found by Paul Craven"
+`pcraven@yorku.ca', and Kasper van Wijk `kasper@acoustics.mines.edu')
+and to make it run cleanly more often.
+
+   Notes-first now autoinitializes notes mode from emacs.  (As
+instisted by rms, unfortunately about two years later than requested.)
+
+   Changed (20-Feb-05): version 1.23: Outline mode is now forcebly
+turned on to avoid interactions with user's text-mode hooks (bug and
+fix from Nils Ackermann `nils@nieback.de').
+
+   Install bug involving ordering of scripts and byte-compilation fixed
+(bug and fix from Mark Allman `mallman@grc.nasa.gov').
+
+   Fix obscure bug in configure, reported by Klaus Zeitler
+`kzeitler@lucent.com'.
+
+   Fix for notes-summarize-subject when no subject is specified (bug
+and fix from Geoff Kuenning).
+
+   Changed (14-Jan-06): version 1.24:
+
+   install-info bug documented with the Debian install-info (bug
+reported by Aaron Falk `falk@isi.edu').
+
+   Automatic date completion in new days is now done in the current
+locale, so it should now work for non-English languages.  Bug reported
+by Torsten Bronger `bronger@physik.rwth-aachen.de'.
+
+   Fixed a bug in mkindexcache, triggered by subjects with percent signs
+in them.  Bug reported by Philip Austin `paustin@eos.ubc.ca'.
+
+   We're a bit more robust about subjects, I hope.  Warnings should
+appear about embedded number signs, and leading spaces should be
+filtered.  Bug reported by Philip Austin `paustin@eos.ubc.ca'.
+
+   Notes-mode now dervies from indented-text-mode rather than
+paragraph-indent-text mode.  Unfortunatley this is not customizable
+because of limitations of define-derived-mode.  Change suggested by
+Aaron Falk `falk@isi.edu'.
+
+   Provide better hints about how to get started after installation or
+running notes-mode in emacs for the first time.
+
+   In notes init, the default path for dir was the full path, not the
+tilde version of the path.  Now it defaults to using tidle for home
+directory.  Bug reported by Mark Allman `allman@icir.org'.
+
+   Changed (26-May-06): version 1.25:
+
+   fixed a bug in the release tar.gz file that had a additional copies
+copy nested.
+
+   Changed (30-Jun-08): version 1.26:
+
+   Force unicode I/O in `mkindexcache' to fix highlighting mis-alignment
+when using emacs-21 with unicode subject lines.
+
+   Changed mkprevnext and mkrawindex to optionally take the list of
+notes files to index from stdin rather than from the command line.
+Yes, I finally have 4093 notes files, overflowing the Unix command line
+buffer.
+
+   Changes notes-mode.el to put path in quotes, allowing spaces to
+appear in home directory names (bug fix from Ulrich Herbst).
+
+   Added a suggested features section.
+
+   Changed ( 8-Aug-08): version 1.27:
+
+   Change I/O in `mkindexcache' to use locale (the sadly correct thing)
+rather than forcing utf-8 (the Righteous Path).  Bug report from Geoff
+Kuenning, a man with an older Unix environment than I.
+
+   Changed (20-Jun-10): version 1.28:
+
+   Changed a regular expression in `notes-index-mode.el' that was
+causing emacs-v23 (a pre-release version) to regular expression
+infinite recursion.
+
+   Changed (2012-04-04): version 1.29
+
+   (2011-08-23) Changed `run-hooks' to `run-mode-hooks'.  Bug report
+from Geoff Kuenning.
+
+   Changed some handling of PGP encryption to account for some apparent
+API changes.
+
+   (2012-04-04) Fixed encyrption to handle encrypting empty notes at
+the end of buffers without going into an infinite loop.  Clearly wrong
+code, but you have to ask this guy for why he tried: Bug report from
+Geoff Kuenning.
+
+\1f
+File: notes-mode.info,  Node: Suggested features,  Prev: Changes,  Up: History
+
+4.4 Suggested features
+======================
+
+Features suggested by users but not yet implemented:
+
+   21-Feb-08: (from Xavier Maillard): should support "disconnected"
+notes that are indexed but not date-based.
+
+   21-Feb-08: (from John Heidemann): should switch all notes files to
+have an extension (maybe `.notes').
+
+\1f
+File: notes-mode.info,  Node: Installation,  Next: Keystroke index,  Prev: History,  Up: Top
+
+5 Installation
+**************
+
+To install notes-mode,
+
+  1. Unpack and extract the distribution (gunzip notes-mode-xxx.tar.gz;
+     tar xvf notes-mode-xxx.tar; cd notes-mode-xxx).
+
+  2. Run configure (./configure).
+
+  3. Type "make install".
+
+   (To control what's installed where, use -prefix=/where, or
+-with-lisp-dir=/where, -datadir=/where (for scripts), and
+-infodir=/where.)
+
+   For each user:
+  1. Run notesinit
+
+   If you have problems with paths being incorrect, please be aware that
+you _cannot_ run notes directly out of where you untar it.  The
+installation process customizes the programs for where things are on
+your system.  Make sure you move out of the directory where you
+untarred it before running it.
+
+   The most recent distribution of notes-mode  is always available via
+`http://www.isi.edu/~johnh/SOFTWARE/NOTES_MODE/'.
+
+\1f
+File: notes-mode.info,  Node: Keystroke index,  Next: Concept index,  Prev: Installation,  Up: Top
+
+Keystroke index
+***************
+
+This index lists notes-mode keystrokes.
+
+\0\b[index\0\b]
+* Menu:
+
+* C-c C-d:                               Encryption.           (line 28)
+* C-c C-e:                               Encryption.           (line 24)
+* C-c C-i:                               Getting around.       (line 11)
+* C-c C-k:                               Getting around.       (line 37)
+* C-c C-n:                               Getting around.       (line 21)
+* C-c C-p:                               Getting around.       (line 21)
+* C-c C-s <1>:                           Notes indices.        (line 12)
+* C-c C-s:                               Subject summary.      (line  8)
+* C-c<RTN>:                              Getting around.       (line 25)
+* M-C-a:                                 Getting around.       (line 31)
+* M-C-e:                                 Getting around.       (line 31)
+* mouse-2:                               The notes index.      (line 21)
+* o:                                     Notes indices.        (line  8)
+* RTN <1>:                               The notes index.      (line 21)
+* RTN:                                   A notes file.         (line 37)
+* S-mouse-2:                             A notes file.         (line 46)
+* TAB:                                   A notes file.         (line 37)
+
+\1f
+File: notes-mode.info,  Node: Concept index,  Prev: Keystroke index,  Up: Top
+
+Concept index
+*************
+
+This index lists notes-mode concepts.
+
+\0\b[index\0\b]
+* Menu:
+
+* .notesrc:                              Notes-mode configuration.
+                                                               (line  6)
+* configuration:                         Notes-mode configuration.
+                                                               (line  6)
+* conventions:                           Useful conventions.   (line  6)
+* Crontab:                               The notes index.      (line 29)
+* Decryption:                            Encryption.           (line  6)
+* Directory hierarchy:                   The notes directories.
+                                                               (line  6)
+* Encryption:                            Encryption.           (line  6)
+* Font matter:                           A notes file.         (line 55)
+* imenu:                                 Getting around.       (line 41)
+* Intermediate directories:              The notes directories.
+                                                               (line 35)
+* key-id:                                Encryption.           (line 31)
+* mailcrypt:                             Encryption.           (line 19)
+* mkall:                                 The notes index.      (line 29)
+* mknew:                                 Useful conventions.   (line  6)
+* Notes directories:                     The notes directories.
+                                                               (line  6)
+* Notes entries:                         A notes file.         (line 10)
+* Notes file permissions:                The notes directories.
+                                                               (line 46)
+* Notes files <1>:                       The notes directories.
+                                                               (line 39)
+* Notes files:                           A notes file.         (line  6)
+* Notes files, font matter:              A notes file.         (line 55)
+* Notes index:                           The notes index.      (line  6)
+* Notes links:                           A notes file.         (line 42)
+* Notes subjects:                        A notes file.         (line 37)
+* notes-mode-initialization-program:     Useful conventions.   (line 38)
+* notesinit:                             Getting started.      (line  6)
+* PAM:                                   Encryption.           (line 19)
+* PGP:                                   Encryption.           (line 19)
+* PGP Augmented Messaging:               Encryption.           (line 19)
+* Pretty good privacy:                   Encryption.           (line 19)
+* Pseudo-URLs:                           A notes file.         (line 46)
+* re-indexing:                           The notes index.      (line 29)
+* Root directory:                        The notes directories.
+                                                               (line 27)
+* setup:                                 Getting started.      (line  6)
+* Subject summary:                       Subject summary.      (line  8)
+* Today:                                 Useful conventions.   (line 17)
+* URLs:                                  A notes file.         (line 46)
+
+
+\1f
+Tag Table:
+Node: Top\7f1063
+Node: Introduction\7f1988
+Node: What is it?\7f2318
+Ref: What is it?-Footnote-1\7f3411
+Node: Why keep notes at all?\7f3467
+Node: Why keep notes on-line?\7f4252
+Ref: Why keep notes on-line?-Footnote-1\7f7805
+Ref: Why keep notes on-line?-Footnote-2\7f7981
+Ref: Why keep notes on-line?-Footnote-3\7f8220
+Node: Why use notes-mode?\7f8319
+Ref: Why use notes-mode?-Footnote-1\7f10010
+Node: Y2K Statement\7f10079
+Node: Related work\7f10892
+Node: Staying on top\7f11940
+Node: Basics\7f12590
+Node: Getting started\7f12896
+Node: A notes file\7f14135
+Node: The notes index\7f16878
+Node: The notes directories\7f18130
+Node: Advanced Features\7f19994
+Node: Notes files\7f20254
+Node: Getting around\7f20491
+Node: Subject summary\7f21921
+Node: Encryption\7f22257
+Node: Useful conventions\7f23690
+Node: Notes indices\7f25461
+Node: Notes-mode configuration\7f25937
+Node: History\7f27010
+Node: Notes-mode history\7f27274
+Node: Credits\7f28066
+Node: Changes\7f29947
+Node: Suggested features\7f39800
+Node: Installation\7f40202
+Node: Keystroke index\7f41142
+Node: Concept index\7f42581
+\1f
+End Tag Table
diff --git a/packages/notes-mode/notes-mode.texi b/packages/notes-mode/notes-mode.texi
new file mode 100644 (file)
index 0000000..60382c2
--- /dev/null
@@ -0,0 +1,1585 @@
+\input texinfo @c -*-texinfo-*-
+@c %**start of header
+@setfilename notes-mode.info
+@settitle Notes-mode:  Organizing on-line note-taking.
+@c For double-sided printing, uncomment:
+@c @setchapternewpage odd
+@c %**end of header
+
+@c FIXME: Figure out a way to keep these things up-to-date w/o RCS/CVS!
+@set EDITION $Revision: 1.40 $
+@c XXX: the next line should track the release file.
+@set VERSION 1.16
+@set UPDATED $Date: 2010/06/20 18:30:34 $
+
+@iftex
+@finalout
+@end iftex
+
+@dircategory Emacs
+@direntry
+* Notes-mode: (notes-mode).         Organizing on-line note-taking.
+@end direntry
+
+@c FIXME: The leading spaces lead to double spaces inside the
+@c generated .info file!
+
+@ifinfo
+Notes-mode:  Organizing on-line note-taking.
+
+This file documents notes-mode, a package
+for organizing on-line note-taking.
+@end ifinfo
+
+@copying
+Copyright (C) 1994-1996,2012  Free Software Foundation, Inc.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
+and with the Back-Cover Texts as in (a) below.  A copy of the license
+is included in the section entitled ``GNU Free Documentation License''.
+
+(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom.''
+@end quotation
+@end copying
+
+@titlepage
+@title Notes-mode
+@subtitle Organizing on-line note-taking
+@subtitle Edition @value{EDITION}, for notes-mode version @value{VERSION}
+@subtitle @value{UPDATED}
+@author by John Heidemann
+
+@end titlepage
+
+@node Top, Introduction, (dir), (dir)
+@comment  node-name,  next,  previous,  up
+
+@ifinfo
+This file documents notes-mode, a package
+for organizing on-line note-taking.
+This is edition @value{EDITION}, for notes-mode version @value{VERSION},
+ last updated @value{UPDATED}.
+
+@end ifinfo
+
+@c
+@c Outline as of 16-Apr-96:
+@c
+@c introduction
+@c - what is notes mode
+@c - why keep notes on-line
+@c   - easier to type than write
+@c   - information already on-line (program errors, measurement data, etc.)
+@c   - easy to search (grep, glimpse)
+@c   - easy to index (notes-mode)
+@c - why use notes-mode
+@c   - automates indexing
+@c   - supports links
+@c   - emacs helpers (subject completion, elisp customization)
+@c   - alternatives:
+@c     HTML (+formatting, +links, -tags are intrusive, -errors are bad, -index by hand)
+@c     word processor (+formatting, -links, -indexing)
+@c - related work
+@c   - notes-mode is not related to Lotus Notes
+@c basics
+@c - notes-file
+@c   (text mode)
+@c   - front-matter
+@c   - entries
+@c     - subject
+@c     - links
+@c     like urls, but not quite
+@c     mouse-2 follows a link (and also pastes)
+@c     - text
+@c     can contain other, embedded links
+@c - notes-index
+@c   - subjects
+@c    mouse-2 follows links
+@c   - re-indexing
+@c - file layout
+@c   - root ~/NOTES, changing
+@c   - intermediate directories @cY@cm
+@c   - notes-files @cy@cm@cd
+@c intermediate features
+@c - notes-files
+@c     - conventions
+@c      today
+@c      Monday
+@c      date in front-matter
+@c      hierarchical subjects
+@c     - C-c C-s subject summary
+@c     - C-c C-k current-url-as-kill
+@c     - getting around
+@c       - C-c C-i notes-goto-index-entry
+@c     - C-c C-n notes-follow-next-link, C-c C-p notes-follow-prev-link
+@c     - C-c C-f notes-w3-follow-link
+@c     - M-C-a notes-beginning-of-defun, M-C-e notes-end-of-defun
+@c     - C-c C-e, C-c C-s encryption
+@c - notes-index
+@c   - RET notes-index-follow-link
+@c   - o notes-index-link
+@c   - C-c C-s summarize subject
+@c advanced features:
+@c - .notesrc
+@c history
+@c - genesis: minimal functionality: subject collection
+@c - Leviticus: indexing, urls
+@c - exodus: share with others
+@c - Deuteronomy: features are added
+@c
+
+
+
+@c The master menu, created with texinfo-master-menu, goes here.
+
+@menu
+* Introduction::                
+* Basics::                      
+* Advanced Features::           
+* History::                     
+* Installation::                
+* Keystroke index::             
+* Concept index::               
+
+@detailmenu
+ --- The Detailed Node Listing ---
+
+Introduction
+
+* What is it?::                 
+* Why keep notes at all?::      
+* Why keep notes on-line?::     
+* Why use notes-mode?::         
+* Y2K Statement::               
+* Related work::                
+* Staying on top::              
+
+Basics
+
+* Getting started::             
+* A notes file::                
+* The notes index::             
+* The notes directories::       
+
+Advanced Features
+
+* Notes files::                 
+* Notes indices::               
+* Notes-mode configuration::    
+
+Notes files
+
+* Getting around::              
+* Subject summary::             
+* Encryption::                  
+* Useful conventions::          
+
+History
+
+* Notes-mode history::          
+* Credits::                     
+* Changes::                     
+
+@end detailmenu
+@end menu
+
+@c ----------------------------------------------------------------------
+
+@node Introduction, Basics, Top, Top
+@chapter Introduction
+
+What is notes-mode and why should you (perhaps) use it?
+
+@menu
+* What is it?::                 
+* Why keep notes at all?::      
+* Why keep notes on-line?::     
+* Why use notes-mode?::         
+* Y2K Statement::               
+* Related work::                
+* Staying on top::              
+@end menu
+
+@node What is it?, Why keep notes at all?, Introduction, Introduction
+@comment  node-name,  next,  previous,  up
+@section What is it?
+
+Notes-mode is an indexing system for on-line note-taking.
+Notes-mode is composed of two parts, the visible part,
+a major-mode for emacs to aid note-taking;
+and the invisible part,
+scripts which periodically index your notes for you.
+
+Note that notes-mode provides tools to @dfn{index} your notes,
+not to @dfn{search} them.
+(Other existing tools such as @file{grep}, @file{agrep}, and @file{glimpse}
+already allow file search.)
+
+A digression about indexing vs. searching:
+Indexing in this sense means
+organize them according to categories you give,
+while searching looks through all text for arbitrary strings.
+Drawing on the World Wide Web for examples,
+Yahoo (@file{http://www.yahoo.com/}) is an index,
+while Alta Vista (@file{http://www.altavista.digital.com/})
+is a search-engine.
+In (potentially) more familiar terms,
+the yellow pages
+@footnote{Trademarked, in Great Britain, Sunone tells me.}
+are an index,
+while directory information (411 in the USA)
+is sort of a search-engine.
+
+
+@node  Why keep notes at all?, Why keep notes on-line?, What is it?, Introduction
+@comment  node-name,  next,  previous,  up
+@section Why keep notes at all?
+
+So why should you use notes-mode?
+Well, first, consider why you should (perhaps)
+keep your notes on line.
+First,
+I assume that you take notes as part of your work or school.
+If you don't,
+you can stop reading now and go back to watching TV.
+
+If you keep notes, ask yourself why you keep them.
+Reasons vary for different people, but some include:
+
+@itemize @bullet
+
+@item
+To remember what is said or done.
+
+@item
+To focus on what is important about what is said.
+
+@item
+To provide proof of having done something
+at a particular time or date.
+
+@item
+I know there were other reasons here,
+but they slipped my mind.
+@end itemize
+
+
+@node  Why keep notes on-line?, Why use notes-mode?, Why keep notes at all?, Introduction
+@comment  node-name,  next,  previous,  up
+@section Why keep notes on-line?
+
+OK, I've talked you into keeping notes.
+Why do it on-line?
+Again, there are different reasons for different people.
+If you don't want to consider keeping your notes on-line,
+you're welcome to go back to your (clay tablets)
+paper notes.
+
+However, if you do much of your work on-line,
+or if you have portable computer,
+then you might want to consider keeping your notes on-line.
+
+@itemize @bullet
+
+@item
+It's faster to type than write,
+and possibly more legible at high speed.
+
+@item
+Often information is already on-line.
+For example, in software development, bug reports,
+measurement results, and everything else that's useful
+is on-line.
+
+@item
+You can take down more detail than you otherwise would
+(especially if the data is already on-line).
+Taking more copious notes can be helpful when you go back
+to figure out why that strange thing was happening.
+
+@item
+On-line notes are easy to search.
+Full-text search with 
+grep, agrep, and glimpse are all much faster
+and are often more accurate than paging through paper notes
+looking for a particular keyword.
+
+@item
+On-line notes are easy to index.
+(At least with notes-mode!)
+In addition to full-text search,
+it's helpful to organize notes by category.
+If you keep a table-of-contents of your paper notes,
+you are either extremely fastidious
+or a librarian (Nadia?).
+
+@item
+You can keep all of your notes with you at all times
+(if you have a portable computer).
+Even at a page a day,
+paper notes quickly become bulky and awkward to carry around.
+On-line notes fit on your computer's hard disk,
+an extraordinarily compact medium
+by comparison.
+
+@item
+Your notes can be automatically backed up.
+Paper notes can become damaged with time,
+and as a graduate student
+one of my fears was fire in Boelter Hall
+consuming all my research experiments
+and and therefore hopes of a degree.
+Electronic notes are extremely easy to duplicate
+and can be automatically backed up with the rest of your computer.
+(You @emph{do} back up your computer, don't you?)
+
+@end itemize
+
+While these advantages are undoubtedly clear to any
+right-thinking computer user,
+it should be said that there are a few disadvantages 
+for on-line note-taking.
+
+@itemize @bullet
+
+@item
+If you don't have a computer with you most of the time,
+it's difficult take notes on-line (because you're off-line, of course).
+@footnote{I consider myself pretty anal about this subject,
+often typing notes in from paper after-the-fact,
+and @emph{I} certainly don't manage to back-enter
+my notes all time time.}
+
+@item
+Computers require power.
+If your portable computer runs out of juice,
+you're on your own.
+Corollary:  watch your power, or bring paper.
+Better corollary:  watch your power, @emph{and} bring paper.
+
+@item
+Social limitations.
+It's not always socially acceptable to take notes-on-line.
+For example,
+at a party,
+few people would use a computer
+to take down the phone number of a person
+to whom they're attracted
+(at least, if they wanted the attraction to be mutual).
+@footnote{
+On the other hand, some folks at MIT are working
+on this problem from both the hardware and the social side of
+things (@file{http://wearables.www.media.mit.edu/projects/wearables/})
+(Perhaps they have wild parties with computers, too.)
+}
+Sometimes other people find the sound of typing distracting.
+
+@item
+Health issues.
+Repetitive stress injuries do occur
+writing (slower) by hand is at least 
+an alternate motion than typing.
+
+@item
+Legal limitations.
+If you want to use your electronic notes
+to justify a patent or invention,
+you may be breaking legal ground.
+Being on the legal cutting-edge is rarely an easy thing
+for the person involved.@footnote{My hat is off to Rosa Parks
+and the many other normal people who triggered landmark cases.}
+
+@end itemize
+
+
+@node  Why use notes-mode?, Y2K Statement, Why keep notes on-line?, Introduction
+@comment  node-name,  next,  previous,  up
+@section Why use notes-mode?
+
+OK, I've sold you on note-taking and even on on-line note-taking.
+What about notes-mode?
+Naturally,
+it slices, dices, and makes julienne fries.
+But wait, there's more:
+
+@itemize @bullet
+
+@item
+It automates indexing your notes,
+linking notes with the same subject together.
+
+@item
+It supports embedded links,
+allowing you to manually link together different topics 
+and external files.
+
+@item
+It includes a number of convenience-features in emacs.
+Subjects can be completed based on existing subjects.
+The usual emacs customization mechanisms are available.
+
+@item
+Notes containing sensitive information can be encrypted.
+
+@item
+Notes-mode seems better than the other, currently available alternatives.
+@end itemize
+
+What are the alternatives?  I'm glad you asked.
+@footnote{If you think I'm missing an alternative, please let me know.}
+
+@itemize @bullet
+
+@item
+@strong{HTML}.
+HTML has better formatting capabilities than notes-mode,
+and it has excellent linking capabilities.
+Unfortunately,
+HTML's tags are fairly intrusive
+ (each is at least four characters long and most come with a pair),
+ tags can get confused with normal text,
+ errors in HTML can be bad (obscuring data),
+ and there's no automatic indexing feature
+ (at least with plain HTML).
+Besides,
+ all data should be kept as close to the ASCII from whence it came,
+ as God Intended (hi, Steve).
+
+@item
+@strong{Word Processors}.
+Word processors are strong in the formatting department,
+ but most don't really have linking capabilities,
+ and have poor or restricted indexing.
+
+@end itemize
+
+@node  Y2K Statement, Related work, Why use notes-mode?, Introduction
+@comment  node-name,  next,  previous,  up
+@section Y2K Statement
+
+Notes mode uses dates extensively,
+ both two-digit years and seconds-since-1970.
+However, notes-mode has been coded to function correctly through
+ the year 2038.
+
+To avoid problems with the year 2000, notes-mode assumes
+ that any two-digit years before ``70'' are 20xx, not 19xx.
+Notes-mode should therefore work correctly in both the year 1999 and 2000.
+
+(Notes-mode 1.17 released February 1999 fixes a lingering Y2K problem.)
+
+Because notes-mode uses seconds-since-1970 for some date calculations
+ it will fail beyond the year 2038 on computers with 32-bit integers.
+
+If I'm still using notes-mode then on a 32-bit machine I'll see what I can do.
+
+
+@node  Related work, Staying on top, Y2K Statement, Introduction
+@comment  node-name,  next,  previous,  up
+@section Related work
+
+What would a document be without related work?
+
+Notes-mode is not related in any way to Lotus Notes.
+
+I am told (by David Weisman)
+ that it's something like the now defunct Lotus Agenda.
+
+Ashvin Goel, one of the contributors to notes-mode,
+ has gone off and done a from-scratch reimplementation
+ called records-mode.
+It's very similar to notes mode,
+ and emphasizes on-the-fly updates to entry links
+ but lacks a manual.
+You may want to check it out at
+ @file{http://www.cse.ogi.edu/~ashvin/software.html}.
+
+Hyperbole (by Bob Weiner) offers better linking facilities
+than notes-mode, but it has a bunch of stuff notes-mode doesn't need
+and it's missing notes-specific indexing provided by notes-mode.
+For people already using Hyperbole
+ it would be interesting to replace notes-mode's linking
+ with Hyperbole's.
+Contributions in this area are welcome, provided they make Hyperbole
+ optional.
+
+@node  Staying on top,  , Related work, Introduction
+@comment  node-name,  next,  previous,  up
+@section Staying on top
+
+The most recent distribution of notes-mode 
+ is always available via
+ @file{http://www.isi.edu/~johnh/SOFTWARE/NOTES_MODE/}.
+
+After you've installed notes mode you're encouraged to subscribe
+to the mailing lists.
+To subscribe, go to the web page
+Send the message "subscribe" to
+@file{http://www.heidemann.la.ca.us/mailman/listinfo/notes-mode-announce} or
+@file{http://www.heidemann.la.ca.us/mailman/listinfo/notes-mode-talk}.
+
+The announce list will contain only release announcements
+and so is guaranteed to be very low bandwidth.
+
+
+@c ----------------------------------------------------------------------
+
+@node  Basics, Advanced Features, Introduction, Top
+@comment  node-name,  next,  previous,  up
+@chapter Basics
+
+All you need to use notes-mode
+ in a chapter.
+(Except for installation, @xref{Installation}.)
+
+@menu
+* Getting started::             
+* A notes file::                
+* The notes index::             
+* The notes directories::       
+@end menu
+
+@node  Getting started, A notes file, Basics, Basics
+@comment  node-name,  next,  previous,  up
+@section Getting started
+@cindex notesinit
+@cindex setup
+
+To get started with notes-mode,
+ read the introduction this chapter,
+ then either:
+
+@itemize @bullet
+
+@item
+Start emacs, do 
+ @kbd{M-x} @code{load-library} @kbd{RET} @code{notes-mode} @kbd{RET}
+This approach will set up notes-mode with the default parameters.
+
+@item
+OR, from the shell, 
+ run the program @file{notesinit}.
+This approach will ask you some questions about how you want to configure
+ notes mode.
+
+@end itemize
+
+Either way these should set up everything notes-mode needs.
+This program will modify your environment (as described in this section),
+ or it will give you the exact commands you should run yourself.
+
+After you've done one of these,
+ start up emacs and note-away.
+I usually begin a
+ day of note-taking by running the command
+ @kbd{M-x} @code{notes-index-todays-link}
+ to jump directly to today's note.
+You may even wish to bind this to something,
+ perhaps with
+ @code{(define-key global-map "\C-cn" 'notes-index-todays-link)}
+ in your @file{.emacs}. 
+
+If you want to browse your existing notes,
+ you might instead want to edit the
+ @file{~/NOTES/index}.
+(What is a notes file and the index? Hurry up and finish
+ reading this chapter.) 
+
+
+@node  A notes file, The notes index, Getting started, Basics
+@comment  node-name,  next,  previous,  up
+@section A notes file
+@c - notes-file
+@c   (text mode)
+@c   - front-matter
+@c   - entries
+@c     - subject
+@c     - links
+@c     like urls, but not quite
+@c     mouse-2 follows a link (and also pastes)
+@c     - text
+@c     can contain other, embedded links
+
+@cindex Notes files
+
+The notes file is the focus of most of the activity in notes-mode,
+ it's where you take your notes.
+Notes files are mostly free-form text
+ broken up into @dfn{entries}.
+Here's an example:
+
+@cindex Notes entries
+
+@example
+8-Jun-95 Thursday
+-----------------
+
+* Today
+-------
+prev: <none>
+next: <file:///~/NOTES/199506/950609#* Today>
+
+next week - release notes-mode
+
+
+* Environment/notes
+-------------------
+
+I explained notes mode to Ashvin and Geoff.
+...
+@end example
+
+Each entry has a subject-block, (maybe) some links, and then (maybe) some text.
+
+The subject-block must begin with an asterisk-space (@kbd{* })
+ at the beginning of a line, followed by the subject itself.
+Subjects must be underlined with a row of dashes
+ (if they're not exact, that's OK;
+ notes-mode will fix them periodically).
+For convenience,
+ notes-mode will automatically add the underlines when you
+ hit @kbd{@key{RTN}} (@code{notes-electric-return}),
+ and @kbd{@key{TAB}} on a partially completed subject will
+ invoke completion based on indexed subjects (@code{notes-complete-subject}).
+@cindex Notes subjects
+@kindex RTN
+@kindex TAB
+
+Following the subject may be links.
+(In the example, the ``Today'' entry has links,
+ the ``Environment/notes'' entry doesn't.)
+These links will be automatically updated by notes-mode
+ when your notes are re-indexed;
+ just leave a blank line when writing the note.
+@cindex Notes links
+
+Links are made with pseudo-URLs,
+ sort of like those in the World Wide Web. 
+Any of these URLs can be followed in notes-mode files
+ by clicking @kbd{S-mouse-2} on the pseudo-URL
+ (@code{notes-w3-follow-link-mouse}).
+@cindex Pseudo-URLs
+@cindex URLs
+@kindex S-mouse-2
+
+Finally comes the text.
+Go wild, but just don't include text that looks like a subject.
+You can embed pseudo-URLs to link notes together manually.
+
+The more anal of you may have noticed
+ that the lines before the first subject
+ are not part of any entry.
+These lines are
+ @dfn{front matter}.
+They're not usually used for much,
+ but they can be a good place to label the file.
+@cindex Notes files, font matter
+@cindex Font matter
+
+There are a number of useful conventions
+ that can be adopted to organize your notes.
+The most common is the ``Today'' entry.
+If you keep an entry with the same subject
+ at the beginning of each file,
+ you link all of your notes together.
+Notes-mode will help you out with some of these convetions
+ by automatically creating or copying some fields for you;
+ see @pxref{Useful conventions} for details.
+
+Finally, notes-mode can also work with outline-minor-mode
+ (thanks to Tim Carroll for pointing this out).
+Outline-mode supports hiding and revealing text and other helpful
+ features beyond the scope of this document.
+@xref{Outline Mode, Outline Mode, , emacs, The Emacs Editor}, for details.
+
+@node  The notes index, The notes directories, A notes file, Basics
+@comment  node-name,  next,  previous,  up
+@section The notes index
+@c - notes-index
+@c   - subjects
+@c    mouse-2 follows links
+@c   - re-indexing
+
+@cindex Notes index
+
+The notes index lists all subjects you've kept notes about,
+ and each date of each note.
+Impress your friends,
+ show your advisor why you're worth the @emph{big} peanuts,
+ you'll soon have the biggest index of all.
+
+The index has one line per subject, listing the subject
+ and each day a note was made about that subject.
+For example:
+
+@example
+Bicycle: 950314, 950316
+Bicycle/maintenance/books: 951028
+Bridge/hands: 951113, 951114, 951116, 951117
+Bridge/UCLA: 960222, 960409
+@end example
+
+Clicking on any of the dates with @kbd{mouse-2}
+ will take you to that note
+ (@code{notes-index-mouse-follow-link}).
+(You can also move the point over the date and hit @kbd{@key{RTN}}
+ if you're musaphobic [@code{notes-index-follow-link}].)
+@kindex mouse-2
+@kindex RTN
+
+The notes index is automatically updated by the program @file{mkall}.
+Typically @file{mkall} is run nightly by @file{cron}.
+On most modern versions of Unix, you can add this command to cron by
+ running @file{crontab -e} and adding the line:
+
+@example
+0 4 * * * /usr/local/lib/notes-mode/mkall
+@end example
+@cindex Crontab
+@cindex mkall
+@cindex re-indexing
+
+(Assuming that your notes programs are installed
+ in /usr/local/lib/notes-mode, the default location.)
+
+
+@node  The notes directories,  , The notes index, Basics
+@comment  node-name,  next,  previous,  up
+@section The notes directories
+
+@cindex Notes directories
+@cindex Directory hierarchy
+
+The final thing needed to tie basic notes-mode together his how
+the pieces fit together.
+Since my graduate work is in file systems,
+you can bet that directories are involved.
+
+Notes-mode keeps its files in a two-level hierarchy:
+
+@example
+~/NOTES
+~/NOTES/index
+~/NOTES/rawindex
+~/NOTES/199603
+~/NOTES/199603/960329
+~/NOTES/199603/960330
+~/NOTES/199604
+~/NOTES/199604/960401
+@end example
+
+The top level, @file{~/NOTES}, is the notes directory.
+It keeps all notes in one place.
+(The name of this directory is configurable, @xref{Notes-mode configuration}.)
+
+Inside the notes directory are two files and a number of directories.
+The files are @file{index},
+ the index of all entries (@pxref{The notes index}),
+ and @file{rawindex},
+ used internally.
+@cindex Root directory
+
+The notes directory also contains a number of subdirectories,
+ sometimes called @dfn{intermediate directories}.
+These directories group the actual notes files into manageable chunks,
+ keeping any directory from getting too large.
+Intermediate directories are named
+ by the four-digit year and the two-digit month
+ of the entries they contain.
+(The format of intermediate directories
+ is configurable, @xref{Notes-mode configuration}.)
+@cindex Intermediate directories
+
+Finally,
+ in each intermediate directory are the notes files themselves,
+ named according to the two-digit year, month, and day-of-month.
+@cindex Notes files
+
+For the most part,
+ notes-mode will automatically maintain this organization of files,
+ once you create the top-level directory.
+Notes-mode will also automatically ensure
+ that all files in the notes directory are unreadable by
+ anyone other than their owner.
+Notes are personal things.
+(This behavior is not currently configurable,
+ but it probably should be.)
+@cindex Notes file permissions
+
+
+@c ----------------------------------------------------------------------
+
+@node  Advanced Features, History, Basics, Top
+@comment  node-name,  next,  previous,  up
+@chapter Advanced Features
+
+Notes-mode, the minutiae, and some other good stuff.
+
+@menu
+* Notes files::                 
+* Notes indices::               
+* Notes-mode configuration::    
+@end menu
+
+@node  Notes files, Notes indices, Advanced Features, Advanced Features
+@comment  node-name,  next,  previous,  up
+@section Notes files
+
+@menu
+* Getting around::              
+* Subject summary::             
+* Encryption::                  
+* Useful conventions::          
+@end menu
+
+@node  Getting around, Subject summary, Notes files, Notes files
+@comment  node-name,  next,  previous,  up
+@subsection Getting around
+
+Moving between notes entries and around the hierarchy is fairly common,
+ so there are some accelerators.
+
+@table @kbd
+@item C-c C-i
+Jump to the index entry for the current entry's subject
+(@code{notes-goto-index-entry}).
+@kindex C-c C-i
+
+@item C-c C-n
+@item C-c C-p
+Move to the next or prior note with the same subject
+(@code{notes-follow-next-link} and @code{notes-follow-prev-link}).
+These functions follow the links in the note,
+ if they're defined.
+If not,
+ they look through the index file.
+This approach usually works,
+ but will fail if there are multiple new entries created
+ with the given subject
+ between when the index is recomputed.
+@kindex C-c C-n
+@kindex C-c C-p
+
+@item C-c@key{RTN}
+Follow the link under the point
+(@code{notes-w3-follow-link}),
+ a keyboard equivalent of @key{S-mouse-2}.
+@kindex C-c@key{RTN}
+
+@item M-C-a
+@item M-C-e
+Jump to the beginning or end of the current note entry
+(@code{notes-beginning-of-defun} and @code{notes-end-of-defun}).
+@kindex M-C-a
+@kindex M-C-e
+
+@item C-c C-k
+Copies the pseudo-URL for the current note into the kill-ring
+(@code{current-url-as-kill}).
+To link two entries, go to the target,
+ grab its URL with @kbd{C-c C-k},
+ go to where you want to make the link,
+ and yank the URL with @kbd{C-y}.
+@kindex C-c C-k
+
+@end table 
+
+Notes mode supports imenu,
+ if you have it bound to something
+ (I use @code{(global-set-key [down-mouse-3] 'imenu)}).
+@cindex imenu
+
+
+@node  Subject summary, Encryption, Getting around, Notes files
+@comment  node-name,  next,  previous,  up
+@subsection Subject summary
+
+It's often helpful to look at all
+ entries for a given subject
+@kbd{C-c C-s}
+ collects all entries with the subject of the current
+ entry in a new buffer
+ (@code{notes-summarize-subject}).
+@kindex C-c C-s
+@cindex Subject summary
+
+
+@node  Encryption, Useful conventions, Subject summary, Notes files
+@comment  node-name,  next,  previous,  up
+@subsection Encryption
+
+@cindex Encryption
+@cindex Decryption
+
+@c     - C-c C-e, C-c C-d encryption
+Notes occasionally contain private material.
+While Unix has strong services for file protection
+ (compared to other, say, more wide-selling operating systems),
+ in many systems root passwords are shared,
+ while other systems are vulnerable to physical compromise.
+In such systems,
+ properly used encryption is the best approach to security.
+
+Notes-mode encryption is based
+ Phill Zimmerman's PGP (Pretty Good Privacy)
+(see @file{http://www.mantis.co.uk/pgp/pgp.html})
+ and either
+ with Rick Campbell's
+ emacs interface, PAM (PGP Augmented Messaging)
+(from @file{ftp://h.gp.cs.cmu.edu/usr/rfb/pam/})
+ (note that as of January 1997, PAM is no longer at this ftp site
+ and appears to not be publicly available),
+ or LoPresti and Choi's mailcrypt
+(from @file{http://cag-www.lcs.mit.edu/mailcrypt/}).
+@cindex PGP
+@cindex Pretty good privacy
+@cindex PAM
+@cindex PGP Augmented Messaging
+@cindex mailcrypt
+
+@table @kbd
+@item C-c C-e
+Encrypt the current note
+(@code{notes-encrypt-note}).
+By default this function encrypts the whole entry.
+With a prefix argument,
+ only the part from the point to the end of the entry is encrypted.
+@kindex C-c C-e
+
+@item C-c C-d
+Decrypt the current note
+(@code{notes-decrypt-note}).
+@end table
+@kindex C-c C-d
+
+By default notes-mode determines your public key by looking 
+ up your @code{user-full-name} in your PGP keyring.
+You can override this default by setting
+ @code{notes-encryption-key-id}
+ to the desired key-id.
+@cindex key-id
+
+
+@node  Useful conventions,  , Encryption, Notes files
+@comment  node-name,  next,  previous,  up
+@subsection Useful conventions
+
+@c     - conventions
+@c date, 12-Jan-96 Friday
+@c Today
+@c Monday
+@c hierarchical subjects
+
+@cindex conventions
+@cindex mknew
+
+There are a number of conventions which can make notes-mode
+ easier to use.
+These conventions are a matter of personal taste,
+ of course.
+Do what works for you.
+
+First,
+ I find it helpful to keep the date of each notes-file at the top
+ of the file.
+This makes the file self-identifying
+ if the filename is lost.
+
+Second,
+ I find it useful to have the first entry of each file
+ have the same subject (perhaps ``Today'').
+This entry then links all notes together,
+ making it easy to go to yesterday and tomorrow.
+I keep a to-do list on this entry,
+ bringing the list forward each day.
+@cindex Today
+
+A third useful convention is to keep an
+ entry with the name based on the day of the week
+ in each file.
+Analogous to ``Today'', this entry links together
+ weeks.
+
+Notes-mode supports these conventions.
+When you make a new notes-file in emacs,
+ notes-mode searches for the preceding file.
+If it follows any of these conventions,
+ the new file is initialized appropriately.
+Currently
+ the approach to do this process
+ (in the program @file{mknew})
+ is fairly sensitive,
+ so it may not work in all cases.
+In particular,
+ the date convention works only on
+ for English-language dates.
+(If you use notes-mode with a non-English language,
+ let me know and I'll work with you to fix this limitation.)
+
+If you find other helpful conventions,
+ please let me know.
+Modifications to @file{mknew} to implement
+ new conventions are also invited.
+
+If you don't want to use these conventions,
+ or if you want to use different ones,
+ set the emacs variable notes-mode-initialization-program
+ to nil or the name of your initialization program.
+@cindex notes-mode-initialization-program
+
+
+@node  Notes indices, Notes-mode configuration, Notes files, Advanced Features
+@comment  node-name,  next,  previous,  up
+@section Notes indices
+
+@c - notes-index
+@c   - RET notes-index-follow-link
+@c   - o notes-index-link
+@c   - C-c C-s summarize subject
+
+Only two features of notes index mode haven't yet been described.
+First,
+ you can open any notes-file based on date
+ with @code{notes-index-link},
+ normally bound to @key{o}.
+@kindex o
+
+Second,
+ you can get a subject-summary
+ with @key{C-c C-s}
+ (@pxref{Subject summary}).
+The subject defaults to that of the current index line.
+@kindex C-c C-s
+
+
+@node  Notes-mode configuration,  , Notes indices, Advanced Features
+@comment  node-name,  next,  previous,  up
+@section Notes-mode configuration
+
+@cindex configuration
+@cindex .notesrc
+
+Several aspects of notes mode are particularly visible
+ to the user.
+Because I'm not a fascist,
+ a user can change most of these.
+
+Preferences are specified in @file{~/.notesrc}.
+This file lists things to change:
+
+@example
+# lines beginning with a hash are comments
+dir: ~/NOTES
+int_form: %Y%m
+@end example
+
+Currently, two things can be changed:
+
+@table @code
+@item dir
+Specifies the root of the notes directory hierarchy
+ (@pxref{The notes directories}).
+
+@item int_form
+Specifies the form of the intermediate directory.
+A limited subset of @code{strftime(3)}
+ formatting is allowed.
+@end table
+
+The subset of @code{strftime(3)} supported in @code{int_form} is:
+@table @code
+@item %Y
+The four-digit year.
+
+@item %y
+The two-digit year.
+
+@item %m
+A two-digit numeric month.
+
+@item %d
+A two-digit day.
+@end table
+
+In addition to @file{.notesrc},
+ there are a number of emacs-specific variables.
+These variables are documented in the file
+ @file{notes-variables.el}.
+
+
+
+@c ----------------------------------------------------------------------
+
+@node  History, Installation, Advanced Features, Top
+@comment  node-name,  next,  previous,  up
+@chapter History
+
+More about notes-mode than you wanted to know,
+and some thanks.
+
+@menu
+* Notes-mode history::          
+* Credits::                     
+* Changes::                     
+* Suggested features::                     
+@end menu
+
+@c history
+@c - genesis: minimal functionality: subject collection
+@c - Leviticus: indexing, urls
+@c - exodus: share with others
+@c - Deuteronomy: features are added
+
+
+@node  Notes-mode history, Credits, History, History
+@comment  node-name,  next,  previous,  up
+@section Notes-mode history
+
+Briefly,
+ I started keeping notes on-line shortly after I got a portable computer
+ in January, 1994.
+After a month-and-a-half of notes, I realized that
+ one does not live by grep alone,
+ so I started adding indexing facilities.
+
+In June of 1995
+ some other Ficus-project members started
+ keeping and indexing on-line notes
+ using other home-grown systems.
+After some discussion,
+ we generalized my notes-mode work and
+ they started using it.
+
+Over the next 18 months notes-mode grew.
+Finally, in April, 1996 I wrote documentation,
+ guaranteeing that innovation on notes-mode will now cease
+ or the documentation will become out of date.
+
+
+@node  Credits, Changes, Notes-mode history, History
+@comment  node-name,  next,  previous,  up
+@section Credits
+
+I (John Heidemann, <johnh@@isi.edu>)
+ started, documented, and currently maintain notes-mode.
+I take ultimate responsibility for the code,
+ especially for the ugly parts that I won't let others change.
+
+Ashvin Goel
+ <ashvin@@ficus.cs.ucla.edu>
+ has been a very enthusiastic notes-mode user and contributor.
+He is responsible for at least
+ the ideas behind @code{notes-summarize-subject}
+and the ideas and initial implementations of
+ some of the original generalization and modularity improvements,
+ @code{notes-follow-next-link} and @code{notes-follow-prev-link},
+ @code{notes-goto-index-entry},
+ programmed subject completion,
+ and
+ context-sensitive mouse-2 handling.
+In addition,
+ he is an invaluable second opinion about
+ what and how things should be done
+ (even if I don't always agree with him).
+
+Geoff Kuenning
+ <geoff@@ficus.cs.ucla.edu>
+ has been another enthusiastic notes-mode user and victim.
+He is responsible for
+ finding several bugs,
+ motivation for mouse-less operation,
+ comments about the documentation,
+ the day-of-week convention,
+ and an initial implementation and the idea of
+ multiple entries with the same subjects in a single notes-file.
+
+Ramesh Govindan <govindan@@isi.edu> did the xemacs port.
+
+Since it's release on Usenet in April 1996 several
+ other folks have contributed.
+Thanks to
+ David Weisman <weisman@@app1.osf.org>,
+ Martin L. Smith <martin@@ner.com>,
+ Jason Bastek <jason@@aai.com>,
+ Ulrich Herbst <Ulrich.Herbst@@t-systems.com>.
+See the next section (@xref{Changes}.) for details of their exploits.
+
+Thanks to Larry Ayers <layers@@marktwain.net>
+ for popularizing notes-mode with reviews in
+ the Linux Gazette
+ (at <http://www.linuxgazette.com/issue22/notes-mode.html> and
+ <http://www.linuxgazette.com/issue35/ayers.html>).
+
+@node  Changes, Suggested features, Credits, History
+@comment  node-name,  next,  previous,  up
+@section Changes
+
+For the bored:
+
+First semi-public release. 12-Jul-95: version 0.1
+ Shared a version with Ashvin and Geoff.
+
+Changed  6-Dec-95: version 0.3
+ Ashvin's changes for note traversal added (C-c C-p and C-c C-n now
+move to the prev/next note in note-mode).
+ URL parsing changed so that "localhost" is optional.
+
+Changed 19-Dec-95:  version 0.4
+ More robust prev/next code added, both to handle going back and
+forward in the middle of chains through the index file, and to handle
+back/forward in a single file.
+ URL parsing changed so that notes-goto-index-entry correctly handles
+lookups on notes names such as "252A".
+
+Changed 20-Dec-95: version 0.5.
+ Fixed a missing variable in notes-url.el.
+ Added a work-around to a bug in emacs-19.30's define-derived-mode.
+
+Changed 24-Dec-95: version 0.6.
+ Prev/next code re-re-written to be more robust.
+
+Changed 26-Dec-96:  version 0.7.
+ Bug fix release.
+
+Changed 23-Jan-96: version 0.8.
+ Initialization code added to set up a new note.
+New variable:  notes-bin-dir.
+
+ I'm skipping version 0.9 because I erroneously release version 0.1
+as version 0.9 (only on the web, not on Usenet).
+
+ I'm bumping from version "0" to version "1" since the code is has been
+in production use for more than a year by several people.  Minor
+numbers are the same.
+
+Changed 26-Mar-96: version 1.10.
+ Setup code completely re-written.
+ Several incompatible changes have been made:
+ - the lisp and Perl code must be installed via make install,
+not by copying.
+ - some data is specified in a .notesrc file; copy and modify sample.notesrc.
+ - several internal elisp changes.
+ - catsubject added (bound to C-cC-s):  collect all notes about the
+current subject.
+ - new notes-files are initialized with fields based on the prior
+day's notes; see mknew for details.
+ - daily_work is gone; mkall is rewritten to use .notesrc.
+
+Changed 29-Apr-96: version 1.11.
+ Real documentation.
+ Mknew caching added.
+
+Changed  9-Aug-96: version 1.12.
+ Added notesinit to do all setup for new users.
+
+Changed 24-Aug-96: version 1.13.
+ Minor documentation fixes.
+
+Changed 20-Dec-97: version 1.14.
+Autoconf support.
+
+Fontification of the index buffer is now pre-computed in perl
+other than done when the file is needed (in elisp with slow regular
+expressions).  2000-line index files are now 1-2 seconds rather than
+15-30 on a 100MHz Pentium.  If necessary (the
+pre-computed version isn't up-to-date) we fall back on the slower
+code.
+
+Related work improved (suggestion by David Weisman <weisman@@app1.osf.org>).
+
+Documentation improvement (problem found by Martin L. Smith
+<martin@@ner.com>).
+
+Installation improved (code by Jason Bastek <jason@@aai.com>).
+
+Bug in notes-index mode with subjects containing colons fixed (johnh).
+
+Encryption now supports mailcrypt.el.
+
+Support for emacs 20 (a small font-lock change).
+
+Changed  5-Jan-98: version 1.15.
+Bug in decryption for non-PAM users fixed
+ (suggestion by Kevin Davidson <tkld@@quadstone.com>).
+
+Y2K statement added
+ (suggestion by Kevin Davidson <tkld@@quadstone.com>).
+
+Pointer to mailcrypt added (as a supported encryption package).
+Problem pointed out by K. Ueda <kueda@@jupiter.qse.tohoku.ac.jp>.
+
+Changed  4-Nov-98: version 1.16.
+Bug in kill-ring handling of notes-old-underline-line
+ fixed by Tim Potter <timp@@jna.com.au>.
+Bug in whitespace handling after PGP encryption fixed by Tim Potter.
+Bugs in handling of entries with hash signs in their name fixed
+ (found by Tim Potter).
+Fontification of index buffer further improved
+ (mapcar is your friend).
+Xemacs support added based on code contributed by Ramesh Govindan.
+
+Changed 28-Feb-99: version 1.17:
+Improvement:  notes-electric-return now fixes up the prev/next links
+ of new entries (only).  Code contributed by
+ Takashi Nishimoto.
+
+Bug fix:  reversed options -batch and -q in configure.in to placate
+ XEmacs 20.0; changed notesinit to not downcase the pathname
+ (bugs found by Thierry Bezecourt).
+
+Clarification: Autofilling of new notes more clear in the manual (hopefully,
+ suggested by Solofo Ramangalahy).
+
+Bug fix:  a y2k bug in was found and fixed in mkindex.  Sigh.
+
+New:  Two mailing lists for notes-mode have been created:
+@file{notes-mode-announce@@heidemann.la.ca.us} and 
+@file{notes-mode-talk@@heidemann.la.ca.us}.
+Send the line ``subscribe notes-mode-announce''
+(or ``subscribe notes-mode-talk'')
+to @file{majordomo@@heidemann.la.ca.us}
+to join them.
+[@emph{These instructions are now superceeded; to subscribe, go to
+@file{http://www.heidemann.la.ca.us/mailman/listinfo/notes-mode-talk}
+and
+@file{http://www.heidemann.la.ca.us/mailman/listinfo/notes-mode-announce}.}]
+
+Changed  6-Oct-99: version 1.18:
+Bug fix:  handling of electric-prevnext is better when there are
+ existing prev/next links.
+Clarification: I added some pointers in the code to the installation
+ instructions.  (Apparently people can't RTF README.)
+
+Extension: mailcrypt-3.5.x suported including pgp, pgp5 and gpg.
+
+Changed (date 23-Dec-00): version 1.19:
+Bug fix (cosmetic): suppress comments in encrypted nodes.
+
+Install fixes from Kannan Varadhan: elisp directories changed on install.
+
+Added C-j as a synonym for RET in notes-mode to parallel C++ or perl mode.
+(Suggested by Fred Jaggi @file{jaggi@@rsn.hp.com}.)
+
+Outline-minor-mode support added and documented.
+(Suggested by Tim Carroll @file{tim@@boomboom.com}.)
+
+Bug/typo fixes in gpg support
+(Contributed by William A. Perkins @file{wa_perkins@@pnl.gov},
+with separate patches from Knut Anders Hatlen @file{kahatlen@@online.no}.)
+
+Installation improvements suggested by Christophe Troestler
+@file{Ch.Troestler@@linkline.be}:
+use install-info to update the info dir,
+warn users of --prefix that lisp files go elsewhere.
+
+Changed (date  1-Feb-01): version 1.20:
+Bug fix: missing file notes-first.el added to the distribution.
+(Bug found by Michael Totschnig @file{michaelt@@supernet.ca}.)
+
+Changed ( 5-Dec-01): version 1.21:
+(backed-out---didn't work with spaced URLs) 
+URL lookup now uses thing-at-point.
+
+Fix to make notes-mode work with emacs-21.1
+(Fix from Klaus Zeitler  @file{kzeitler@@lucent.com}.)
+
+Changed ( 3-Jan-02): version 1.22:
+Several bugs in @file{notesinit} for stricter Perl implementations
+(bug found by Paul Craven" @file{pcraven@@yorku.ca},
+and Kasper van Wijk @file{kasper@@acoustics.mines.edu})
+and to make it run cleanly more often.
+
+Notes-first now autoinitializes notes mode from emacs.
+(As instisted by rms, unfortunately about two years later than requested.)
+
+
+Changed (20-Feb-05): version 1.23:
+Outline mode is now forcebly turned on to avoid interactions
+with user's text-mode hooks
+(bug and fix from Nils Ackermann @file{nils@@nieback.de}).
+
+Install bug involving ordering of scripts and byte-compilation
+fixed (bug and fix from Mark Allman @file{mallman@@grc.nasa.gov}).
+
+Fix obscure bug in configure, reported by Klaus Zeitler @file{kzeitler@@lucent.com}.
+
+Fix for notes-summarize-subject when no subject is specified (bug and fix
+from Geoff Kuenning).
+
+Changed (14-Jan-06): version 1.24:
+
+install-info bug documented with the Debian install-info
+(bug reported by Aaron Falk @file{falk@@isi.edu}).
+
+Automatic date completion in new days is now done in the current
+locale, so it should now work for non-English languages.  Bug reported
+by Torsten Bronger @file{bronger@@physik.rwth-aachen.de}.
+
+Fixed a bug in mkindexcache, triggered by subjects with percent signs
+in them.  Bug reported by Philip Austin @file{paustin@@eos.ubc.ca}.
+
+We're a bit more robust about subjects, I hope.  Warnings should
+appear about embedded number signs, and leading spaces should be
+filtered.  Bug reported by Philip Austin @file{paustin@@eos.ubc.ca}.
+
+Notes-mode now dervies from indented-text-mode rather than
+paragraph-indent-text mode.  Unfortunatley this is not customizable
+because of limitations of define-derived-mode.  Change suggested by
+Aaron Falk @file{falk@@isi.edu}.
+
+Provide better hints about how to get started after installation or
+running notes-mode in emacs for the first time.
+
+In notes init, the default path for dir was the full path, not the tilde
+version of the path.  Now it defaults to using tidle for home
+directory.  Bug reported by Mark Allman @file{allman@@icir.org}.
+
+Changed (26-May-06): version 1.25:
+
+fixed a bug in the release tar.gz file that had a additional copies
+copy nested.
+
+Changed (30-Jun-08): version 1.26:
+
+Force unicode I/O in @file{mkindexcache} to fix highlighting mis-alignment
+when using emacs-21 with unicode subject lines.
+
+Changed mkprevnext and mkrawindex to optionally take the list of notes files
+to index from stdin rather than from the command line.  Yes, I finally
+have 4093 notes files, overflowing the Unix command line buffer.
+
+Changes notes-mode.el to put path in quotes, allowing spaces to appear in home directory names (bug fix from Ulrich Herbst).
+
+Added a suggested features section.
+
+Changed ( 8-Aug-08): version 1.27:
+
+Change I/O in @file{mkindexcache} to use locale (the sadly correct thing)
+rather than forcing utf-8 (the Righteous Path).
+Bug report from Geoff Kuenning, a man with an older Unix environment than I.
+
+Changed (20-Jun-10): version 1.28:
+
+Changed a regular expression in @file{notes-index-mode.el} that was 
+causing emacs-v23 (a pre-release version)
+to regular expression infinite recursion.
+
+Changed (2012-04-04): version 1.29
+
+(2011-08-23) Changed @code{run-hooks} to @code{run-mode-hooks}.
+Bug report from Geoff Kuenning.
+
+Changed some handling of PGP encryption to account for 
+some apparent API changes.
+
+(2012-04-04) Fixed encyrption to handle encrypting empty notes at the end 
+of buffers without going into an infinite loop.
+Clearly wrong code, but you have to ask this guy for why he tried:
+Bug report from Geoff Kuenning.
+
+
+@c ----------------------------------------------------------------------
+
+@node  Suggested features,  , Changes, History
+@comment  node-name,  next,  previous,  up
+@section Suggested features
+
+Features suggested by users but not yet implemented:
+
+21-Feb-08: (from Xavier Maillard): should support ``disconnected'' notes that
+are indexed but not date-based.
+
+21-Feb-08: (from John Heidemann): should switch all notes files to have an extension (maybe @file{.notes}).
+@c ----------------------------------------------------------------------
+
+@node  Installation, Keystroke index, History, Top
+@comment  node-name,  next,  previous,  up
+@chapter Installation
+
+@c FIXME: Out-of-date now that we install via package.el.
+
+To install notes-mode,
+
+@enumerate
+@item
+Unpack and extract the distribution
+(gunzip notes-mode-xxx.tar.gz; tar xvf notes-mode-xxx.tar; cd notes-mode-xxx).
+
+@item
+Run configure (./configure).
+
+@item
+Type ``make install''.
+@end enumerate
+
+(To control what's installed where, use --prefix=/where, or
+--with-lisp-dir=/where, --datadir=/where (for scripts),
+and --infodir=/where.)
+
+For each user:
+@enumerate
+@item
+Run notesinit
+@end enumerate
+
+If you have problems with paths being incorrect, please be aware that
+you @emph{cannot} run notes directly out of where you untar it.  The
+installation process customizes the programs for where things are on
+your system.
+Make sure you move out of the directory where you untarred it
+before running it.
+
+
+The most recent distribution of notes-mode 
+ is always available via
+ @file{http://www.isi.edu/~johnh/SOFTWARE/NOTES_MODE/}.
+
+
+@c ----------------------------------------------------------------------
+
+@node  Keystroke index, Concept index, Installation, Top
+@comment  node-name,  next,  previous,  up
+@unnumbered Keystroke index
+
+This index lists notes-mode keystrokes.
+
+@printindex ky
+
+
+@node  Concept index,  , Keystroke index, Top
+@comment  node-name,  next,  previous,  up
+@unnumbered Concept index
+
+This index lists notes-mode concepts.
+
+@printindex cp
+
+
+
+
+@contents
+@bye
+
+@c Geoff, make ispell support texinfo mode!
+@c
+@c  LocalWords:  texinfo setfilename settitle iftex finalout ifinfo DIR vskip
+@c  LocalWords:  titlepage pt filll dir urls prev defun dfn Yahoo yahoo com Jun
+@c  LocalWords:  alta Trademarked Sunone Grep agrep Nadia emph HTML's notesrc
+@c  LocalWords:  altavista julienne kbd RTN pxref musaphobic mkall cron crontab
+@c  LocalWords:  usr lib rawindex xref cC url imenu Phill PGP Campbell's ftp gp
+@c  LocalWords:  cmu rfb pam keyring mknew Apr int strftime cindex kindex grep
+@c  LocalWords:  isi ashvin geoff printindex ky cp wearables mit mantis co uk
+@c  LocalWords:  pgp html setchapternewpage XXX elisp cY cy cd RET Weisman cn
+@c  LocalWords:  reimplementation mode's Hyperbole's notesinit weisman app osf
+@c  LocalWords:  org ner Bastek jason aai Jul Ashvin's localhost catsubject Aug
+@c  LocalWords:  Autoconf Fontification perl mailcrypt LoPresti Choi's cag lcs
+@c  LocalWords:  Ramesh govindan xemacs tkld quadstone Ueda kueda jupiter qse
+@c  LocalWords:  tohoku ac jp Nov timp jna au mapcar gunzip xxx gz xvf xxx xxx
+@c  LocalWords:  datadir infodir untar
diff --git a/packages/notes-mode/notes-url.el b/packages/notes-mode/notes-url.el
new file mode 100644 (file)
index 0000000..407f644
--- /dev/null
@@ -0,0 +1,210 @@
+;;; notes-url.el --- Simplified url management routines for notes-mode
+
+;;; Copyright (C) 1994-1998,2012  Free Software Foundation, Inc.
+
+;; Author: <johnh@isi.edu>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This code was originallly cribbed from w3.el
+;; by William M. Perry <wmperry@indiana.edu>,
+;; but has since been completely rewritten.
+;;
+;; Why don't I just call his code?  Because to use
+;; w3-follow-link I need to pull in at least 150k of w3.el
+;; and 150k of url.el, all just to open a file on the local
+;; computer.  Instead I've hacked his code down to the 3k
+;; needed for opening local files.
+
+;;; Code:
+
+(require 'notes-variables)
+(require 'notes-aux)
+
+(defvar notes-last-url nil
+  "Last URL interpreted.
+This record is useful for debugging.")
+
+;;;###autoload
+(defun notes-w3-url (url &optional where best-effort)
+  "Open a notes-url.  Handle simple URLs here, or call notes-w3-alternate-url.
+Takes the URL as an argument.  Optionally you specify
+WHERE the information should appear (either 'otherwindow or not,
+defaults to not).
+BEST-EFFORT causes notes-w3-url allows the tag portion of the URL to not
+match.  If there's no tag match, it looks for the nearest matching prefix.
+
+URLs optionally can begin with an URL: tag, which will be ignored.
+
+notes-w3-url handles only <file://localhost/...> (or <file:///...>) URLs.
+Other URLs it hands off to the routine in notes-w3-alternate-url
+for processing.  If you use w3-mode, then
+    (setq notes-w3-alternate-url 'w3-follow-link)
+will have w3 handle tough URLs."
+  (if (string-match "\\`[Uu][Rr][Ll]:" url)
+      (setq url (substring url 4)))
+  (if (not (string-match "\\`file://\\(localhost\\)?/\\(.*\\)\\'" url))
+      (if (string-match "none" url)
+         (error "Notes-mode can't follow URL <none>.")
+       (funcall notes-w3-alternate-url url where)) ;; now, with where! (emacs-20.4)
+    (let ((filetag (match-string 2 url))
+         fname tag count count-string)
+      ;; pick out the tag, if any
+      (if (string-match "\\`\\([^#]*\\)#\\([0-9]+\\)?\\(.*\\)\\'" filetag)
+         (setq fname (match-string 1 filetag)
+               count-string (match-string 2 filetag)
+               count (if count-string (string-to-number count-string) 1)
+               tag (match-string 3 filetag))
+       (setq fname filetag
+             count 1
+             tag nil))
+      ;; Hack---url's refering to notes-index files have different tags.
+      ;; Otherwise notes-goto-index-entry fails on subjects like "* 252A".
+      (if (and count-string tag (string-match "/index\\'" fname))
+         (setq tag (concat count-string tag)
+               count-string "1"
+               count 1))
+      (if (not (string-match "\\`~" fname))   ; non-~ fnames start at fs root
+         (setq fname (concat "/" fname)))
+      ;; open the file
+      (cond
+       ((equal where 'otherwindow) (find-file-other-window fname))
+       (t (find-file (expand-file-name fname))))
+      ;; handle the tag
+      (if tag
+         (notes-w3-url-tag tag best-effort)
+       t))))
+
+(defun notes-w3-url-tag-backup (tag)
+  "Strip the last ``part'' off of TAG."
+  (let ((result)
+       (separators " /\t.:")
+       (buf (get-buffer-create " *notes-w3-url-tag-backup")))
+    (with-current-buffer buf
+      (erase-buffer)
+      (insert tag)
+      (goto-char (point-max))
+      (skip-chars-backward (concat "^" separators))
+      (skip-chars-backward separators)
+      (delete-region (point) (point-max))
+      (setq result (buffer-string)))
+    (kill-buffer buf)
+    result))
+
+(defun notes-w3-url-tag (tag best-effort)
+  "Find the TAG in the current buffer according to MODE.
+BEST-EFFORT is either t (do prefix matching),
+nil find the tag exactly,
+or 'searching (used internally)."
+  (cond
+   ((not tag) nil)
+   ((and (string= tag "") (eq best-effort 'searching)) nil)
+   (t
+    (goto-char (point-min))
+    (if (re-search-forward
+        (concat "^" (regexp-quote tag)
+                (if (not (eq best-effort 'searching))
+                    (if (eq major-mode 'notes-index-mode)
+                        ": "
+                      "$")))
+        (point-max) t count)
+       t  ;; hit
+      (if (not best-effort)
+         (error "Cannot find tag ``%s'' in %s." tag fname))
+      (notes-w3-url-tag (notes-w3-url-tag-backup tag) 'searching)))))
+  
+
+(defun notes-w3-pass-through-alternate-url (url &optional where)
+  "Pass a click event through to the old binding for notes-w3-url.
+Try this combination:
+  (add-hook 'notes-mode-load-hooks
+            (function (lambda ()
+                        (define-key notes-mode-map [mouse-2]
+                          'notes-w3-follow-link-mouse)
+                        (setq notes-w3-alternate-url
+                          'notes-w3-my-alternate-url))))"
+  (let ((event last-input-event))
+    (funcall (lookup-key
+             (current-global-map)
+             (vector (car event)))
+            event nil)))
+
+;;;###autoload
+(defun notes-w3-follow-link (pt &optional where)
+  "* Follow the URL at the point.
+Takes a PT to look at and a WHERE to open the URL ('otherwindow or nil).
+This code works hard to recognize URLs based on context information.
+URLs can be quoted by whitespace, beginning and end of lines,
+or the official < and >.
+
+As a special case we also recognize (and skip) the text \"prev:\"
+and \"next:\" before the URL.  Notes-mode uses these fields to link
+entries."
+  (interactive "d")
+  (let*
+      ((whitespace-regexp  "[ \t\n]")
+       (quote-regexp whitespace-regexp)
+       start end direction)
+    (save-excursion
+      ;; If we're on the URL header, skip over it so the next search works.
+      (if (looking-at "[<A-Za-z]*:")
+         (skip-chars-forward "<A-Za-z:"))
+      ;; First look backwards to whitespace or beginning of line
+      ;; followed by a url header "asdf:".
+      (if (re-search-backward "[ \t\n][^ \t\n]+:" (line-beginning-position) 1)
+         (forward-char 1)          ; whitespace bound
+       (setq quote-regexp "\n"))   ; eoln bound
+      ;; Handle the common case of next/prev pointers.
+      ;; If we're on one, skip to the <> quoted URL which presumably
+      ;; follows.  (This hack is to support a guy who doesn't use
+      ;; the mouse and so looks up urls at the beginning of the line.)
+      (if (looking-at "\\(prev\\|next\\):")
+         (skip-chars-forward "^<" (line-end-position)))
+      ;; Check for a quoting character.
+      (cond
+       ((equal (char-after (point)) ?<)
+       (progn
+         (setq quote-regexp ">")
+         (forward-char 1)))
+       ((equal (char-after (point)) ?\")
+       (progn
+         (setq quote-regexp "\"")
+         (forward-char 1))))
+      ;; Remember start of url.
+      (setq start (point))
+      ;; Search for end of url.
+      (if (re-search-forward quote-regexp (line-end-position) 1)
+         (forward-char -1))
+      (setq end (point))
+      ;; Interpret it (outside the save-excursion so we can go
+      ;; to places in the same buffer).
+      (setq notes-last-url (buffer-substring start end)))
+    (notes-w3-url notes-last-url where)))
+
+;;;###autoload
+(defun notes-w3-follow-link-mouse (e)
+  "* Follow the URL where the mouse is."
+  (interactive "e")
+  (mouse-set-point e)
+  (notes-w3-follow-link (point)
+                       (if notes-w3-follow-link-mouse-other-window
+                           'otherwindow
+                         nil)))
+
+(provide 'notes-url)
+;;; notes-url.el ends here
diff --git a/packages/notes-mode/notes-variables.el b/packages/notes-mode/notes-variables.el
new file mode 100644 (file)
index 0000000..de141c5
--- /dev/null
@@ -0,0 +1,154 @@
+;;; notes-variables.el --- Configuration variables for notes-mode
+
+;; Copyright (C) 1994-2000,2012  Free Software Foundation, Inc.
+
+;; Author: <johnh@isi.edu>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;
+;; This file lists all parameters you might wish to change in
+;; notes{-index,}-mode.  The best way to handle this in your
+;; .emacs file is to do
+;;     (require 'notes-variables)
+;;     (setq your-variable-to-change 'your-new value)
+;;
+
+;;; Code:
+
+;; xxx: if part of emacs, this should be probably be set to exec-directory (?)
+(defconst notes-utility-dir (file-name-directory load-file-name)
+  "Location of notes utility programs.")
+
+;;
+;; Notice:  several notes parameters are defined in your
+;; ~/.notesrc file.  These are not specified here.
+;; See mkconfig for details.
+;; We fetch them here.
+;;
+;; To make this fast, we cache the configuration in a .notesrc.el
+;; file.  We only have to invoke mkconfig when that file is out-of-date.
+;; This optimization is very important because notes-variables is
+;; required every time emacs is started.
+;;
+(save-current-buffer
+  (if (null (file-exists-p (expand-file-name "mkconfig" notes-utility-dir)))
+      (error "Notes-mode is incorrectly installed."))
+  (let*
+      ((source-file (expand-file-name "~/.notesrc"))
+       (cache-file (expand-file-name "~/.notesrc.el")))
+    (if (and
+        (not (file-exists-p source-file))
+        (not noninteractive))
+       (progn
+         (require 'notes-first)
+         (notes-first-use-init)))
+    (with-temp-buffer
+      (if (and ;; Requirements for a valid cache-file.
+           (file-exists-p cache-file)
+           (if (file-exists-p source-file)
+               (file-newer-than-file-p cache-file source-file)
+             t)
+           (file-newer-than-file-p
+            cache-file (expand-file-name "mkconfig" notes-utility-dir)))
+          (insert-file-contents cache-file) ;; Cache is up-to-date.
+        ;; Otherwise, refresh the cache.
+        (call-process (expand-file-name "mkconfig" notes-utility-dir)
+                      nil t nil "elisp")
+        (write-region (point-min) (point-max) cache-file)
+        (set-file-modes cache-file #o644)) ;; Protect it => mode 0644.
+      (eval-buffer))))
+
+;; notes-int-glob and notes-file-glob should have been set in ~/.notesrc.el.
+(add-to-list 'auto-mode-alist
+             (cons
+              ;; FIXME: auto-mode-alist actually takes a regexp, not a glob.
+              ;; The default globs happen to fall within the intersection of
+              ;; regexps and globs, but we shouldn't rely on it!
+              (concat notes-int-glob "/" notes-file-glob ".?\\'")
+              'notes-mode))
+
+;;; xxx: most of these should use defcustom or something similar, I presume.
+(defvar notes-w3-alternate-url 'browse-url
+  "* A function to call when notes-w3-url cannot handle a complex URL.
+It now goes through the Emacs `browse-url' package,
+but you could also set it manually (say, to w3-fetch).")
+
+(defvar notes-use-font-lock t
+  "* Enable notes fontification.")
+
+(defvar notes-use-outline-mode t
+  "* Enable `outline-minor-mode' in all notes buffers?")
+
+(defvar notes-index-fontify-dates nil
+  "* Fontify dates in notes-index-mode.
+Turning this off for large notes-index's can improve performance.")
+
+(defvar notes-bold-face 'notes-bold-face
+  "* Face to use for notes-index-mode and notes-mode subjects.
+The default face is copied from 'bold.")
+
+(defvar notes-font-lock-keywords
+  '(("^\\* .*$" . notes-bold-face)
+    ("^\\-+$" . notes-bold-face)
+    ;; ("^[0-9]+\\-[A-Za-z]+\\-[0-9]+ [A-Za-z]+$" . font-lock-bold-face)
+    ;; NEEDSWORK:  should also highlight URLs, maybe?
+   )
+  "* Font-lock keywords for notes mode.")
+
+(defvar notes-index-font-lock-keywords
+  '(("^[^:]*:" . notes-bold-face)
+    ("\\<[0-9]*\\>" . mouse-face)
+   )
+  "* Font-lock keywords for notes-index mode.")
+
+(defvar notes-mode-complete-subjects t
+  "* Enable subject completion in notes mode?")
+
+(defvar notes-w3-follow-link-mouse-other-window t
+  "* Should notes-w3-follow-link-mouse open another window?")
+
+(defvar notes-subject-table nil
+  "List of notes-subjects needed for subject completion.
+Reloaded by loading the notes-index file.")
+
+(defvar notes-mode-initialization-program "mknew"
+  "Program to run to initialize a new notes file.  Must be in notes-bin-dir.
+If nil, no initialization is done.")
+
+(defvar notes-encryption-key-id nil
+  "Keyid of PGP key for the current user.
+Useful if your \\[user-full-name] doesn't match a unique key.
+Should have a leading 0x.")
+
+(defvar notes-electric-prevnext 2
+  "Amount of electricity in prevnext for notes-mode.
+nil: don't auto-update anything.
+1: update prevnext, but don't autosave the old buffer
+2: update prevnext and autosave the old buffer.")
+
+(if (featurep 'xemacs)
+    (require 'notes-xemacs)
+  (require 'notes-emacs))
+
+(defvar notes-platform-inited nil
+  "Have we inited our platform (XEmacs/Emacs)?")
+
+(run-hooks 'notes-variables-load-hooks)
+(provide 'notes-variables)
+;;; notes-variables.el ends here
diff --git a/packages/notes-mode/notes-xemacs.el b/packages/notes-mode/notes-xemacs.el
new file mode 100644 (file)
index 0000000..a3cdfa3
--- /dev/null
@@ -0,0 +1,47 @@
+;;; notes-xemacs.el --- XEmacs compatibility functions
+
+;;; Copyright (C) 1998,2012  Free Software Foundation, Inc.
+
+;; Author: <johnh@isi.edu>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(defun notes-platform-bind-mouse (map generic-key fn)
+  "Map from Emacs symbols to XEmacs for notes-mode (sigh)."
+  (let
+      ((xemacs-key
+       (cond
+        ((eq generic-key 'mouse-2) [(button2)])
+        ((eq generic-key 'S-mouse-2) [(shift button2)]))))
+    (define-key map xemacs-key fn)))
+
+(defun notes-platform-init ()
+  "Init platform-specific stuff for notes-mode."
+  (if notes-platform-inited
+      t
+    (setq notes-platform-inited t)
+    (make-face notes-bold-face)
+    (if (not (face-differs-from-default-p notes-bold-face))
+           (copy-face 'bold notes-bold-face))
+
+    ))
+
+(provide 'notes-xemacs)
+;;; notes-xemacs.el ends here
diff --git a/packages/notes-mode/notesinit b/packages/notes-mode/notesinit
new file mode 100755 (executable)
index 0000000..ab8eb47
--- /dev/null
@@ -0,0 +1,200 @@
+#!/usr/bin/perl -w
+
+#
+# notesinit
+# Copyright (C) 1996-2002,2012  Free Software Foundation, Inc.
+# $Id: notesinit,v 1.12 2006/01/14 22:52:56 johnh Exp $
+#
+
+sub usage {
+    print STDERR <<END;
+usage: $0 [-D]
+
+This program sets up notes mode for the first time.
+It typically runs interactively.
+
+Options:
+    -D     use all defaults (also turns off prompting)
+END
+    exit 1;
+}
+
+require 5.000;
+use strict;
+use Getopt::Long;
+
+my(%opts);
+&GetOptions(\%opts, qw(D));
+&usage if ($#ARGV >= 0 && $ARGV[0] eq '-?');
+my($use_defaults) = defined($opts{'D'});
+
+my($PERL) = $^X;  # location of perl executable
+
+
+use POSIX;
+BEGIN { unshift(@INC, $ENV{'NOTES_BIN_DIR'}); };
+use NotesVars;
+use strict;
+
+
+sub query {
+    my($lc) = 1;
+    if ($_[0] eq '-nolc') {
+       $lc = undef;
+       shift @_;
+    };
+    my($expl, $query, $valid_regexp, $default) = @_;
+    return $default if ($use_defaults);
+    print $expl;
+    my($a);
+    for (;;) {
+        print $query;
+        $a = <>;
+       chomp $a;
+       $a = lc($a) if ($lc);
+        return $default if ($a eq '');
+        return $a if ($a =~ /$valid_regexp/);
+       print "I didn't understand your answer `$a'.\n";
+    };
+}
+
+my($expl);
+$expl =  <<END;
+notesinit will set up notes-mode for the first time.
+
+What is notes mode?  Texinfo documentation should be installed on your
+system.  Documentation is also available on the web at
+<http://www.isi.edu/~johnh/SOFTWARE/NOTES_MODE/>.  Everything you will
+be asked here is discussed in greater detail in the documentation.
+
+END
+
+my($home_dir) = ((getpwuid($<))[7]);
+my($def_choices, $def) = ('(Y/n)', 'y');
+if (-f "$home_dir/.notesrc") {
+    die "$0: will not override existing .notesrc with -D option.\n"
+       if ($use_defaults);
+    ($def_choices, $def) = ('(y/N)', 'n');
+    print "WARNING:  you already appear to have notes configured.\n\n"
+};
+
+my($a) = query($expl, "Do you want to set up notes mode now $def_choices? ", '(y|n)', $def);
+if ($a ne 'y') {
+    print "\nnotesinit exited.\n\n";
+    exit 1;
+};
+
+$expl = <<END;
+
+Notes are stored in two-level hierarchy of directories.
+For example:
+~/NOTES/199603/960329
+               ^^^^^^-- a notes file (the date, in YYMMDD)
+        ^^^^^^--------- one subdirectory per month (form: YYYYMM)
+  ^^^^^---------------- the parent directory of everything
+
+END
+$::notes{dir} = query("-nolc", $expl, "What should the parent directory be (default: ~/NOTES)? ", '.', '~/NOTES');
+# fix ~  (in honor of Cliffette's "yes, I have no tilde")
+$::notes{dir_notilde} = $::notes{dir};
+$::notes{dir_notilde} =~ s@^~/@$home_dir/@;
+$::notes{dir} =~ s@^$home_dir/@~/@;
+
+
+my($now) = time;
+my($today_pathname) = epoch_to_pathname($now);
+
+$expl = <<END;
+
+notesinit can now set-up your environment for notes.
+It will take the following steps:
+
+0. set up your .notesrc
+1. create $::notes{dir}
+2. create a sample note for today ($today_pathname)
+3. index the default note
+4. set up a crontab entry to re-index notes at 4am every morning
+    (by running mkall)
+
+END
+($def_choices, $def) = ('(M/d/s)', 'm');
+($def_choices, $def) = ('(m/D/s)', 'd') if (-f "$home_dir/.notesrc");
+my($go) = query($expl, "Make these changes, describe the changes, or stop $def_choices? ", '[mds]', $def);
+exit 1 if ($go eq 's');
+
+sub commands {
+    my($expl, $cmd) = @_;
+    print $expl if (!$use_defaults);
+    if ($go eq 'm') {
+       system($cmd);
+    } else {
+       print "$cmd\n";
+    };
+}
+
+#
+# Ok, the code below is less-than-ideal.
+# It's somewhat silly to have Perl output the shell commands
+# rather than just "do it".
+# The reason is that we to allow the user to look at what's being done.
+#
+
+$expl = "\n### changes begin here\n" . 
+    "\n### 0. set up your .notesrc\n";
+commands($expl, "cat >$home_dir/.notesrc <<END
+dir: $::notes{dir}
+END
+");
+
+$expl = "\n### 1. creating $::notes{dir}\n";
+commands($expl, "mkdir -p $::notes{dir_notilde};\nchmod 0700  $::notes{dir_notilde}\n");
+
+my($heading) = strftime_epoch("%d-%b-%y %A", $now);
+my($underline) = "-" x length($heading);
+$expl = "\n### 2. create a sample note for today ($today_pathname)\n";
+commands($expl, "mkdir -p `dirname $today_pathname`;\n cat >$today_pathname <<END
+
+$heading
+$underline
+
+* Today
+-------
+
+to do list goes here?
+
+
+* Environment/notes
+-------------------
+
+Set up notes with notesinit.
+
+(To read the manual, run   info notes-mode .)
+
+END
+");
+
+my($mkall) = $PERL . " " . $::notes{bin_dir} . "/mkall";
+my($crontab_entry) = "0 4 * * * $mkall";
+
+$expl = "\n### 3. index the default note\n";
+commands($expl, $mkall);
+
+$expl = "\n### 4. set up a crontab entry to re-index notes at 4am every morning\n";
+my($tmpfile) = "$home_dir/notesinit.$$~";
+# this whole touch thing is to avoid leaving a globally writable crontab
+commands($expl, "touch $tmpfile;
+chmod 0600 $tmpfile;
+echo 'If you do not have a crontab, errors about not being able to open a cron table can be ignored.';
+crontab -l | sed 's/^\\(.*\\/mkall\\)\$/# \\1/' >>$tmpfile;
+echo '$crontab_entry' >>$tmpfile;
+" . $::notes{bin_dir} . "/setcrontab $tmpfile
+rm -f $tmpfile");
+
+print "\n### changes end here\n" if (!$use_defaults);
+
+print "\nYou have elected to have the changes DESCRIBED but not made.\n" .
+       "To make the changes yourself, run the commands between\n" .
+       "\"changes begin here\" and \"changes end here\".\n"
+       if ($go eq 'd');
+
+exit 0;
diff --git a/packages/notes-mode/release b/packages/notes-mode/release
new file mode 100644 (file)
index 0000000..57432cb
--- /dev/null
@@ -0,0 +1 @@
+1.30
diff --git a/packages/notes-mode/sample.notesrc b/packages/notes-mode/sample.notesrc
new file mode 100755 (executable)
index 0000000..68556b9
--- /dev/null
@@ -0,0 +1,16 @@
+
+dir: ~/NOTES
+# the root of the document tree
+
+int_form: %Y%m
+# strftime(3) format for intermediate directories
+# Only a subset of strftime is supported:
+#      %Y  four-digit year
+#      %y  two digit year w/leading zeros
+#      %m  two digit numeric month w/leading zeros
+#      %d  two digit day w/leading zeros
+
+# XXX: Currently, file_form cannot be changed.
+# file_form: %y%m%d
+# strftime(3) format for notes files directories
+
diff --git a/packages/notes-mode/setcrontab b/packages/notes-mode/setcrontab
new file mode 100755 (executable)
index 0000000..c811307
--- /dev/null
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+#
+# setcrontab
+# Copyright (C) 1996,2012  Free Software Foundation, Inc.
+# $Id: setcrontab,v 1.2 2002/01/03 04:35:18 johnh Exp $
+#
+
+usage () {
+       cat <<END
+usage: $0 newcrontabfile
+
+Sets the users crontab to whatever's given in stdin.
+Works around the dumb (only interactive) crontab -e interface.
+END
+       #' 
+}
+
+TMP=/tmp
+FE=$TMP/$$.fakeeditor
+NCT=$1
+
+trap 'rm -f $FE $NCT; exit 1' 1 2 15
+
+# stdin to the crontab
+
+cat >$FE <<END
+#!/bin/sh
+cat $NCT >\$1
+exit 0
+END
+
+chmod 0700 $FE
+EDITOR=$FE
+VISUAL=$FE
+export EDITOR VISUAL
+
+crontab -e
+
+rm -f $FE $NCT
+exit 0
+
diff --git a/packages/num3-mode/num3-mode.el b/packages/num3-mode/num3-mode.el
new file mode 100644 (file)
index 0000000..b890c89
--- /dev/null
@@ -0,0 +1,149 @@
+;;; num3-mode.el --- highlight groups of digits in long numbers  -*- lexical-binding: t -*-
+
+;; Copyright (C) 2012 Free Software Foundation, Inc.
+
+;; Author: Felix Lee <felix8a@gmail.com>, Michal Nazarewicz <mina86@mina86.com>
+;; Maintainer: Michal Nazarewicz <mina86@mina86.com>
+;; Keywoards: faces, minor-mode
+;; Version: 1.1
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Num3 is a minor mode that makes long numbers more readable by
+;; highlighting groups of 3 (customisable) decimal digits or 4 hex
+;; digits when font-lock is on.  Highlighting alternates between two
+;; faces that can be customised.
+
+;;; Usage:
+
+;;     M-x num3-mode           toggle for current buffer.
+;;     M-x global-num3-mode    toggle for all buffers.
+;;
+;; Or add the following to your ~/.emacs file:
+;;     (load "path/to/num3")
+;;     (global-num3-mode)
+
+;;; Code:
+
+(defgroup num3 nil
+  "Num3 is a minor mode that makes long numbers more readable by
+highlighting groups of decimal digits or 4 hex digits when
+font-lock is on."
+  :group 'text)
+
+(defcustom num3-group-size 3
+  "Number of digits to group in decimal numbers.")
+
+(defcustom num3-threshold 5
+  "Number must be at least that long to start highlighting.")
+
+(defface num3-face-odd
+  '((t))
+  "Face to add for odd groups of digits."
+  :group 'num3)
+
+(defface num3-face-even
+  '((t :underline t :weight bold :background "#eeeeee"))
+  "Face to add for even groups of digits.
+The default face uses redundant signaling, because this is in
+addition to any other font-lock highlighting."
+  :group 'num3)
+
+;;; Implementation:
+
+;;;###autoload
+(define-minor-mode num3-mode
+  "Toggle num3 minor mode in the current buffer.
+Num3 minor mode makes long numbers more readable by highlighting
+groups of digits when font-lock mode is on.
+
+If a number is longer than `num3-threshold', the mode will split
+it into a group of `num3-group-size' (if number is decimal) or
+4 (if number is hexadecimal) digits.  Hexadecimal number is
+detected as one starting with 0x, 0X or #.
+
+With decimal numbers, fractions are recognised as well and
+grouped from the beginning rathar then from end.  For instance,
+with group size of 3, a number \"12345.12345\" will be split into
+groups as follows: \"12|345.123|45\".  Fractions without integer
+part are also recognised, eg. \".12345\".
+
+The groups are highlighted alternately using `num3-face-odd' and
+`num3-face-even' faces.  `num3-face-odd' face (which is empty by
+default) is the one used for the group closest to the decimal point,
+ie. groups are counted starting with one outwards from the (place
+where) decimal point (would be) is."
+  nil " num3" nil
+  (if num3-mode
+      (unless (assoc 'num3--matcher font-lock-keywords)
+        (font-lock-add-keywords nil '(num3--matcher) 'append))
+    (font-lock-remove-keywords nil '(num3--matcher)))
+  (when font-lock-mode
+    (font-lock-fontify-buffer)))
+
+;;;###autoload
+(define-globalized-minor-mode global-num3-mode num3-mode num3-mode)
+
+(defconst num3--number-re
+  (concat    "\\(?:0[xX]\\|#\\)\\([0-9a-fA-F]+\\)"  ; 1 = hexadecimal
+          "\\|\\([0-9]+\\)"                         ; 2 = decimal
+          "\\|\\.\\([0-9]+\\)"))                    ; 3 = fraction
+
+(defun num3--matcher (lim)
+  "Function used as a font-lock-keywoard handler used in `num3-mode'.
+Performs fontification of numbers from point to LIM."
+  (save-excursion
+    (while (re-search-forward num3--number-re lim t)
+      (num3--int  (match-beginning 1) (match-end 1) 4)
+      (num3--int  (match-beginning 2) (match-end 2) num3-group-size)
+      (num3--frac (match-beginning 3) (match-end 3) num3-group-size)))
+  nil)
+
+(defun num3--int (lo hi n)
+  "Highlight groups of digits in a long number.
+LO and HI arguments specify the range where the number is
+located.  If the length of that region exceeds `num3-threshold',
+the function will split it into groups of N digits and fontify
+tham alternately using `num3-face-odd' and `num3-face-even'
+faces.  Grouping is done from the end, eg. (12)(345)."
+  (when (and lo (>= (- hi lo) num3-threshold))
+    (let (even)
+      (while (< lo hi)
+        (num3--put even (max lo (- hi n)) hi)
+        (setq hi (- hi n) even (not even))))))
+
+(defun num3--frac (lo hi n)
+  "Highlight groups of digits in a long number.
+LO and HI arguments specify the range where the number is
+located.  If the length of that region exceeds `num3-threshold',
+the function will split it into groups of N digits and fontify
+tham alternately using `num3-face-odd' and `num3-face-even'
+faces.  Grouping is done from the beginning, eg. (123)(45)."
+  (when (and lo (>= (- hi lo) num3-threshold))
+    (let (even)
+      (while (< lo hi)
+        (num3--put even lo (min hi (+ lo n)))
+        (setq lo (+ lo n) even (not even))))))
+
+(defun num3--put (even lo hi)
+  "Add font lock text property to highlight a single group of digit.
+Use `num3-face-odd' if EVEN is nil and `num3-face-even' if EVEN is
+non-nil.  The region the face is set to is from LO to HI."
+  (font-lock-append-text-property lo hi 'face
+                                  (if even 'num3-face-even 'num3-face-odd)))
+
+(provide 'num3-mode)
+;;; num3-mode.el ends here
diff --git a/packages/oauth2/oauth2.el b/packages/oauth2/oauth2.el
new file mode 100644 (file)
index 0000000..64962bf
--- /dev/null
@@ -0,0 +1,219 @@
+;;; oauth2.el --- OAuth 2.0 Authorization Protocol
+
+;; Copyright (C) 2011-2013 Free Software Foundation, Inc
+
+;; Author: Julien Danjou <julien@danjou.info>
+;; Version: 0.9
+;; Keywords: comm
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Implementation of the OAuth 2.0 draft.
+;;
+;; The main entry point is `oauth2-auth-and-store' which will return a token
+;; structure. This token structure can be then used with
+;; `oauth2-url-retrieve-synchronously' to retrieve any data that need OAuth
+;; authentication to be accessed.
+;;
+;; If the token needs to be refreshed, the code handles it automatically and
+;; store the new value of the access token.
+
+;;; Code:
+
+(eval-when-compile (require 'cl))
+(require 'plstore)
+(require 'json)
+(require 'url-http)
+
+(defun oauth2-request-authorization (auth-url client-id &optional scope state redirect-uri)
+  "Request OAuth authorization at AUTH-URL by launching `browse-url'.
+CLIENT-ID is the client id provided by the provider.
+It returns the code provided by the service."
+  (browse-url (concat auth-url
+                      (if (string-match-p "\?" auth-url) "&" "?")
+                      "client_id=" (url-hexify-string client-id)
+                      "&response_type=code"
+                      "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob"))
+                      (if scope (concat "&scope=" (url-hexify-string scope)) "")
+                      (if state (concat "&state=" (url-hexify-string state)) "")))
+  (read-string "Enter the code your browser displayed: "))
+
+(defun oauth2-request-access-parse ()
+  "Parse the result of an OAuth request."
+  (goto-char (point-min))
+  (when (search-forward-regexp "^$" nil t)
+    (json-read)))
+
+(defun oauth2-make-access-request (url data)
+  "Make an access request to URL using DATA in POST."
+  (let ((url-request-method "POST")
+        (url-request-data data)
+        (url-request-extra-headers
+         '(("Content-Type" . "application/x-www-form-urlencoded"))))
+    (with-current-buffer (url-retrieve-synchronously url)
+      (let ((data (oauth2-request-access-parse)))
+        (kill-buffer (current-buffer))
+        data))))
+
+(defstruct oauth2-token
+  plstore
+  plstore-id
+  client-id
+  client-secret
+  access-token
+  refresh-token
+  token-url
+  access-response)
+
+(defun oauth2-request-access (token-url client-id client-secret code &optional redirect-uri)
+  "Request OAuth access at TOKEN-URL.
+The CODE should be obtained with `oauth2-request-authorization'.
+Return an `oauth2-token' structure."
+  (when code
+    (let ((result
+           (oauth2-make-access-request
+            token-url
+            (concat
+             "client_id=" client-id
+             "&client_secret=" client-secret
+             "&code=" code
+             "&redirect_uri=" (url-hexify-string (or redirect-uri "urn:ietf:wg:oauth:2.0:oob"))
+             "&grant_type=authorization_code"))))
+      (make-oauth2-token :client-id client-id
+                         :client-secret client-secret
+                         :access-token (cdr (assoc 'access_token result))
+                         :refresh-token (cdr (assoc 'refresh_token result))
+                         :token-url token-url
+                         :access-response result))))
+
+;;;###autoload
+(defun oauth2-refresh-access (token)
+  "Refresh OAuth access TOKEN.
+TOKEN should be obtained with `oauth2-request-access'."
+  (setf (oauth2-token-access-token token)
+        (cdr (assoc 'access_token
+                    (oauth2-make-access-request
+                     (oauth2-token-token-url token)
+                     (concat "client_id=" (oauth2-token-client-id token)
+                             "&client_secret=" (oauth2-token-client-secret token)
+                             "&refresh_token=" (oauth2-token-refresh-token token)
+                             "&grant_type=refresh_token")))))
+  ;; If the token has a plstore, update it
+  (let ((plstore (oauth2-token-plstore token)))
+    (when plstore
+      (plstore-put plstore (oauth2-token-plstore-id token)
+                   nil `(:access-token
+                         ,(oauth2-token-access-token token)
+                         :refresh-token
+                         ,(oauth2-token-refresh-token token)
+                         :access-response
+                         ,(oauth2-token-access-response token)
+                         ))
+      (plstore-save plstore)))
+  token)
+
+;;;###autoload
+(defun oauth2-auth (auth-url token-url client-id client-secret &optional scope state redirect-uri)
+  "Authenticate application via OAuth2."
+  (oauth2-request-access
+   token-url
+   client-id
+   client-secret
+   (oauth2-request-authorization
+    auth-url client-id scope state redirect-uri)
+   redirect-uri))
+
+(defcustom oauth2-token-file (concat user-emacs-directory "oauth2.plstore")
+  "File path where store OAuth tokens."
+  :group 'oauth2
+  :type 'file)
+
+(defun oauth2-compute-id (auth-url token-url resource-url)
+  "Compute an unique id based on URLs.
+This allows to store the token in an unique way."
+  (secure-hash 'md5 (concat auth-url token-url resource-url)))
+
+;;;###autoload
+(defun oauth2-auth-and-store (auth-url token-url resource-url client-id client-secret &optional redirect-uri)
+  "Request access to a resource and store it using `plstore'."
+  ;; We store a MD5 sum of all URL
+  (let* ((plstore (plstore-open oauth2-token-file))
+         (id (oauth2-compute-id auth-url token-url resource-url))
+         (plist (cdr (plstore-get plstore id))))
+    ;; Check if we found something matching this access
+    (if plist
+        ;; We did, return the token object
+        (make-oauth2-token :plstore plstore
+                           :plstore-id id
+                           :client-id client-id
+                           :client-secret client-secret
+                           :access-token (plist-get plist :access-token)
+                           :refresh-token (plist-get plist :refresh-token)
+                           :token-url token-url
+                           :access-response (plist-get plist :access-response))
+      (let ((token (oauth2-auth auth-url token-url
+                                client-id client-secret resource-url nil redirect-uri)))
+        ;; Set the plstore
+        (setf (oauth2-token-plstore token) plstore)
+        (setf (oauth2-token-plstore-id token) id)
+        (plstore-put plstore id nil `(:access-token
+                                      ,(oauth2-token-access-token token)
+                                      :refresh-token
+                                      ,(oauth2-token-refresh-token token)
+                                      :access-response
+                                      ,(oauth2-token-access-response token)))
+        (plstore-save plstore)
+        token))))
+
+(defun oauth2-url-append-access-token (token url)
+  "Append access token to URL."
+  (concat url
+          (if (string-match-p "\?" url) "&" "?")
+          "access_token=" (oauth2-token-access-token token)))
+
+(defvar oauth--url-advice nil)
+(defvar oauth--tokens-need-renew)
+
+;; FIXME: We should change URL so that this can be done without an advice.
+(defadvice url-http-handle-authentication (around oauth-hack activate)
+  (if (not oauth--url-advice)
+      ad-do-it
+    (setq oauth--tokens-need-renew t)
+    ;; This is to make `url' think it's done.
+    (if (boundp 'success) (setq success t)) ;For URL library in Emacs<24.4.
+    (setq ad-return-value t)))              ;For URL library in Emacs≥24.4.
+
+;;;###autoload
+(defun oauth2-url-retrieve-synchronously (token url &optional request-method request-data request-extra-headers)
+  "Retrieve an URL synchronously using TOKENS to access it.
+TOKENS can be obtained with `oauth2-auth'."
+  (let* ((oauth--tokens-need-renew nil)
+         (url-buffer
+          (let ((oauth--url-advice t) ;Activate our advice.
+                (url-request-method request-method)
+                (url-request-data request-data)
+                (url-request-extra-headers request-extra-headers))
+            (url-retrieve-synchronously
+             (oauth2-url-append-access-token token url)))))
+    (if oauth--tokens-need-renew
+        (oauth2-url-retrieve-synchronously (oauth2-refresh-access token) url request-method request-data request-extra-headers)
+      url-buffer)))
+
+(provide 'oauth2)
+
+;;; oauth2.el ends here
diff --git a/packages/omn-mode/omn-mode.el b/packages/omn-mode/omn-mode.el
new file mode 100644 (file)
index 0000000..ef663bf
--- /dev/null
@@ -0,0 +1,237 @@
+;;; omn-mode.el --- Support for OWL Manchester Notation
+
+;; Copyright (C) 2013  Free Software Foundation, Inc.
+
+;; Author: Phillip Lord <phillip.lord@newcastle.ac.uk>
+;; Maintainer: Phillip Lord <phillip.lord@newcastle.ac.uk>
+;; Website: http://www.russet.org.uk/blog
+;; Version: 1.0
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; Defines a major mode for editing the Manchester OWL syntax.
+;; Basically, this is just a bit of font locking.
+
+;;; Code:
+
+;; (defgroup omn-mode nil
+;;   "Major mode to edit OWL Manchester Notation."
+;;   :group 'languages)
+
+(defvar omn-obsolete-electric-indent nil
+  "Set to t to use the old electric indent.  Better use `electric-indent-mode'.")
+
+(defvar omn-imenu-generic-expression
+  '(
+    ("Class"  "Class: \\([a-zA-Z:_]+\\)" 1)
+    ("ObjectProperty" "ObjectProperty: \\([a-zA-Z:_]+\\)" 1)
+    ("Individual" "Individual: \\([a-zA-Z:_]+\\)" 1)
+    )
+
+  "Imenu support for OMN.
+See `imenu-generic-expression' for details")
+
+
+(defvar omn-mode-entity-keywords
+  '(
+    "Ontology:"
+    "Namespace:"
+    "Class:"
+    "Individual:"
+    "ObjectProperty:"
+    "Import:"
+    "Datatype:"
+    "AnnotationProperty:"
+    "DisjointClasses:"
+    "Prefix:"
+    "Alias:"
+    "owl:Thing"))
+
+(defvar omn-mode-property-keywords
+  '(
+    "EquivalentTo:"
+    "SubClassOf:"
+    "Annotations:"
+    "Characteristics:"
+    "DisjointUnion:"
+    "DisjointWith:"
+    "Domain:"
+    "Range:"
+    "InverseOf:"
+    "SubPropertyOf:"
+    "Types:"
+    "Facts:"
+    ))
+
+
+;; indentation engine
+(defun omn-indent-line()
+  (indent-line-to
+   (omn-determine-line-indent)))
+
+(defun omn-determine-line-indent()
+  (save-excursion
+    (beginning-of-line)
+    ;; check the first word
+
+    (let* ((match (re-search-forward "\\w+" (line-end-position) t))
+           (word (if match
+                     (match-string 0)
+                   "")))
+
+      (cond
+       ;; ((not match)
+       ;;  (progn
+       ;;    (if (not (forward-line -1))
+       ;;        (omn-determine-line-indent)
+       ;;      0)))
+
+       ;; if it is string, ident should be 0.
+       ((nth 3 (syntax-ppss (point)))
+        0)
+
+       ;; if it is a comment
+       ((nth 4 (syntax-ppss (point)))
+        ;; if there is a next line, indent the same as that
+        (cond
+         ((eq 0 (forward-line 1))
+          (omn-determine-line-indent))
+         ;; if there isn't return the same as the line before
+         ((eq 0 (forward-line -1))
+          (omn-determine-line-indent))
+         ;; who knows?
+         (t 0)))
+
+       ;; if it is one of Class:, Prefix: or so on, then indent should be 0
+       ((member word omn-mode-entity-keywords)
+        0)
+       ;; if it is Annotations:, SubClassOf: or so on, then indent should be 4
+       ((member word omn-mode-property-keywords)
+        4)
+
+       ;; if it is something else, then 8
+       (t 8)))))
+
+(add-to-list 'auto-mode-alist '("\\.pomn\\'" . omn-mode))
+
+(add-to-list 'auto-mode-alist '("\\.omn\\'" . omn-mode))
+
+(defvar omn-font-lock-defaults
+  `(,(concat "\\_<"
+             (regexp-opt omn-mode-entity-keywords t)
+             "\\_>")
+    (,(mapconcat
+       (lambda(x) x)
+       '("\\<some\\>"
+         "\\<only\\>"
+         "\\<and\\>"
+         "\\<or\\>"
+         "\\<exactly\\>"
+         "Transitive"
+         )
+       "\\|")
+     . font-lock-type-face)
+    (,(regexp-opt omn-mode-property-keywords)
+     . font-lock-builtin-face)
+    ("\\w+:\\w+" . font-lock-function-name-face)))
+
+
+(defvar omn-mode-syntax-table
+  (let ((st (make-syntax-table)))
+    ;; string quotes
+    (modify-syntax-entry ?\" "\"" st)
+    ;; This is a bit underhand, but we define the < and > characters to be
+    ;; "generic-string" delimiters. This results in fontification for URLs
+    ;; which is no bad thing. Additionally, it makes the comment character
+    ;; work, as "#" is a valid in a URL. The semantics of this isn't quite
+    ;; right, because the two characters are not paired. So <url> is
+    ;; recognised, but so is <url< or >url>.
+    ;; We could use a syntax-propertize-function to do more carefully.
+    (modify-syntax-entry ?\< "|" st)
+    (modify-syntax-entry ?\> "|" st)
+    ;; define comment characters for syntax
+    (modify-syntax-entry ?\# "<" st)
+    (modify-syntax-entry ?\n ">" st)
+    ;; Let's not confuse "words" and "symbols": "_" should not be part of the
+    ;; definition of a "word".
+    ;;(modify-syntax-entry ?\_ "w" st)
+    ;; For name space prefixes.
+    (modify-syntax-entry ?\: "w" st)
+    st))
+
+(defvar omn-mode-map
+  (let ((map (make-sparse-keymap)))
+    (when omn-obsolete-electric-indent
+      (dolist (x `(" " "," ":"))
+        (define-key map x 'omn-mode-electric-indent))
+      ;; need to bind to return as well
+      (define-key map (kbd "RET") 'omn-mode-electric-newline))
+    map))
+
+(defun omn-mode-electric-indent()
+  (interactive)
+  (self-insert-command 1)
+  (omn-mode-indent-here))
+
+(defun omn-mode-indent-here()
+  (let ((m (point-marker)))
+    (omn-indent-line)
+    (goto-char (marker-position m))))
+
+(defun omn-mode-electric-newline()
+  (interactive)
+  (newline)
+  (save-excursion
+    (forward-line -1)
+    (omn-indent-line)))
+
+(define-derived-mode omn-mode fundamental-mode "Omn"
+  "Doc string to add"
+
+  ;; font-lock stuff
+  (setq font-lock-defaults
+        '(omn-font-lock-defaults))
+
+  (set (make-local-variable 'comment-start) "#")
+  (set (make-local-variable 'comment-end) "")
+  ;; no idea what this is about -- stolen from generic
+  (set (make-local-variable 'comment-start-skip) "#+\\s-*")
+
+  (set (make-local-variable 'imenu-generic-expression)
+       omn-imenu-generic-expression)
+
+  (set (make-local-variable 'electric-indent-chars)
+       (append `(?\  ?\, ?\:)
+               (if (boundp 'electric-indent-chars)
+                   (default-value 'electric-indent-chars)
+                 '(?\n))))
+  
+  (set (make-local-variable 'indent-line-function) 'omn-indent-line))
+
+
+;; interaction with a reasoner.....
+;; Define a struct using CL, which defines a command. Then send this to the command line
+;; program as a single key-value pair line.
+;;
+;; Write a parser for this in Java.
+;; Write a "command" interface, use annotation to mark each of the command setMethods.
+;;
+;; Have the command interface return results between tags as lisp. We can eval
+;; this, and get the result in that way.
+
+(provide 'omn-mode)
+
+;;; omn-mode.el ends here
diff --git a/packages/quarter-plane/quarter-plane.el b/packages/quarter-plane/quarter-plane.el
new file mode 100644 (file)
index 0000000..f73fd4e
--- /dev/null
@@ -0,0 +1,113 @@
+;;; quarter-plane.el --- Minor mode for quarter-plane style editing
+
+;; Copyright (C) 2011  Free Software Foundation, Inc.
+
+;; Author: Peter J. Weisberg
+;; Version: 0.1
+;; Keywords: convenience wp
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This package provides Quarter Plane mode, a minor mode which
+;; provides Picture mode style editing (treating the screen as a
+;; semi-infinite quarter-plane).  Unlike Picture mode, it is a minor
+;; modes (see the Emacs manual for the documentation of Picture mode).
+;; Type M-x quarter-plane-mode to enable Quarter Plane mode in the
+;; current buffer, and M-x global-quarter-plane-mode to enable it
+;; globally.
+
+;; In Quarter Plane mode, the commands `right-char', `forward-char',
+;; `previous-line', `next-line', and `mouse-set-point' are rebound to
+;; Quarter Plane commands.
+
+;; Known issues:
+
+;; Quarter-Plane mode doesn't work in read-only buffers, where it
+;; can't insert spaces.
+
+;; The user doesn't really care about the "modifications" of adding
+;; whitespace that's going to be trimmed when he exits quarter-plane
+;; mode or saves, but it's still part of the undo history.
+
+;; Both of these are due to the disconnect between what the user
+;; really wants--movement of the cursor within the window, regardless
+;; of where the text is--and what the mode can actually do--add dummy
+;; text to give the cursor a place to move to.
+
+;;; Code:
+
+(require 'picture)
+
+(defvar quarter-plane-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [remap right-char] 'picture-forward-column)
+    (define-key map [remap forward-char] 'picture-forward-column)
+    (define-key map [remap previous-line] 'picture-move-up)
+    (define-key map [remap next-line] 'picture-move-down)
+    (define-key map [remap mouse-set-point] 'picture-mouse-set-point)
+    map))
+
+(defvar quarter-plane-saved-values nil)
+(make-variable-buffer-local 'quarter-plane-saved-values)
+
+;;;###autoload
+(define-minor-mode quarter-plane-mode
+  "Toggle Quarter-Plane mode on or off.
+Interactively, with no prefix argument, toggle the mode.
+With universal prefix ARG turn mode on.
+With zero or negative ARG turn mode off.
+
+Use point movement commands that act as if the text extended
+infinitely down and to the right, inserting spaces as necessary.
+Excess whitespace is trimmed when saving or exiting Quarter-Plane mode.
+
+Because it works by inserting spaces, Quarter-Plane mode won't work in
+read-only buffers.
+
+\\{quarter-plane-mode-map}"
+  :lighter " Plane"
+  :group 'picture
+  :keymap quarter-plane-mode-map
+  (remove-hook 'before-save-hook 'quarter-plane-delete-whitespace t)
+  (dolist (symval (prog1 quarter-plane-saved-values
+                    (setq quarter-plane-saved-values nil)))
+    (set (car symval) (cdr symval)))
+  (when quarter-plane-mode
+    (add-hook 'before-save-hook 'quarter-plane-delete-whitespace nil t)
+    ;; Since quarter-plane-mode is not permanent-local, it should turn itself
+    ;; off cleanly.
+    (add-hook 'change-major-mode-hook (lambda () (quarter-plane-mode -1)) nil t)
+    (dolist (symval '((truncate-lines . t)
+                      (show-trailing-whitespace . nil)))
+      (push (cons (car symval) (symbol-value (car symval)))
+            quarter-plane-saved-values)
+      (set (car symval) (cdr symval)))))
+
+;;;###autoload
+(define-global-minor-mode global-quarter-plane-mode quarter-plane-mode
+  quarter-plane-mode
+  :group 'picture)
+
+(defun quarter-plane-delete-whitespace ()
+  "Call `delete-trailing-whitespace' if the buffer is not read-only."
+  (if (not buffer-read-only)
+      (delete-trailing-whitespace)))
+
+(add-hook 'quarter-plane-mode-off-hook 'quarter-plane-delete-whitespace)
+
+(provide 'quarter-plane)
+
+;;; quarter-plane.el ends here
diff --git a/packages/queue/queue.el b/packages/queue/queue.el
new file mode 100644 (file)
index 0000000..f065089
--- /dev/null
@@ -0,0 +1,157 @@
+;;; queue.el --- Queue data structure
+
+;; Copyright (C) 1991-1995, 2008-2009, 2012  Free Software Foundation, Inc
+
+;; Author: Inge Wallin <inge@lysator.liu.se>
+;;         Toby Cubitt <toby-predictive@dr-qubit.org>
+;; Maintainer: Toby Cubitt <toby-predictive@dr-qubit.org>
+;; Version: 0.1
+;; Keywords: extensions, data structures, queue
+;; URL: http://www.dr-qubit.org/emacs.php
+;; Repository: http://www.dr-qubit.org/git/predictive.git
+
+;; This file is part of Emacs.
+;;
+;; GNU Emacs is free software: you can redistribute it and/or modify it under
+;; the terms of the GNU General Public License as published by the Free
+;; Software Foundation, either version 3 of the License, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful, but WITHOUT
+;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+;; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+;; more details.
+;;
+;; You should have received a copy of the GNU General Public License along
+;; with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+;; These queues can be used both as a first-in last-out (FILO) and as a
+;; first-in first-out (FIFO) stack, i.e. elements can be added to the front or
+;; back of the queue, and can be removed from the front. (This type of data
+;; structure is sometimes called an "output-restricted deque".)
+;;
+;; You create a queue using `make-queue', add an element to the end of the
+;; queue using `queue-enqueue', and push an element onto the front of the
+;; queue using `queue-prepend'. To remove the first element from a queue, use
+;; `queue-dequeue'. A number of other queue convenience functions are also
+;; provided, all starting with the prefix `queue-'.  Functions with prefix
+;; `queue--' are for internal use only, and should never be used outside this
+;; package.
+
+
+;;; Change Log:
+;;
+;; Version 0.1
+;; * the old Elib library of the same name, updated to use defstructs
+
+
+
+;;; Code:
+
+(eval-when-compile (require 'cl))
+
+
+(defstruct (queue
+            ;; A tagged list is the pre-defstruct representation.
+            ;; (:type list)
+           :named
+           (:constructor nil)
+           (:constructor queue-create ())
+           (:copier nil))
+  head tail)
+
+
+;;;###autoload
+(defalias 'make-queue 'queue-create
+  "Create an empty queue data structure.")
+
+
+(defun queue-enqueue (queue element)
+  "Append an ELEMENT to the end of the QUEUE."
+  (if (queue-head queue)
+      (setcdr (queue-tail queue)
+             (setf (queue-tail queue) (cons element nil)))
+    (setf (queue-head queue)
+         (setf (queue-tail queue) (cons element nil)))))
+
+(defalias 'queue-append 'queue-enqueue)
+
+
+(defun queue-prepend (queue element)
+  "Prepend an ELEMENT to the front of the QUEUE."
+  (if (queue-head queue)
+      (push element (queue-head queue))
+    (setf (queue-head queue)
+         (setf (queue-tail queue) (cons element nil)))))
+
+
+(defun queue-dequeue (queue)
+  "Remove the first element of QUEUE and return it.
+Returns nil if the queue is empty."
+  (unless (cdr (queue-head queue)) (setf (queue-tail queue) nil))
+  (pop (queue-head queue)))
+
+
+(defmacro queue-empty (queue)
+  "Return t if QUEUE is empty, otherwise return nil."
+  (null (queue-head queue)))
+
+
+(defmacro queue-first (queue)
+  "Return the first element of QUEUE or nil if it is empty,
+without removing it from the QUEUE."
+  (car (queue-head queue)))
+
+
+(defun queue-nth (queue n)
+  "Return the nth element of a queue, without removing it.
+If the length of the queue is less than N, return nil. The first
+element in the queue has index 0."
+  (nth n (queue-head queue)))
+
+
+(defun queue-last (queue)
+  "Return the last element of QUEUE, without removing it.
+Returns nil if the QUEUE is empty."
+  (car (queue-tail queue)))
+
+
+(defun queue-all (queue)
+  "Return a list of all elements of QUEUE or nil if it is empty.
+The oldest element in the queue is the first in the list."
+  (queue-head queue))
+
+
+(defun queue-copy (queue)
+  "Return a copy of QUEUE.
+The new queue contains the elements of QUEUE in the same
+order. The elements themselves are *not* copied."
+  (let ((q (queue-create))
+       (list (queue-head queue)))
+    (when (queue-head queue)
+      (setf (queue-head q) (cons (car (queue-head queue)) nil)
+           (queue-tail q) (queue-head q))
+      (while (setq list (cdr list))
+       (setf (queue-tail q)
+             (setcdr (queue-tail q) (cons (car list) nil)))))
+    q))
+
+
+(defun queue-length (queue)
+  "Return the number of elements in QUEUE."
+  (length (queue-head queue)))
+
+
+(defun queue-clear (queue)
+  "Remove all elements from QUEUE."
+  (setf (queue-head queue) nil
+       (queue-tail queue) nil))
+
+
+(provide 'queue)
+
+
+;;; queue.el ends here
diff --git a/packages/rainbow-mode/rainbow-mode.el b/packages/rainbow-mode/rainbow-mode.el
new file mode 100644 (file)
index 0000000..e6bb602
--- /dev/null
@@ -0,0 +1,1166 @@
+;;; rainbow-mode.el --- Colorize color names in buffers
+
+;; Copyright (C) 2010-2012 Free Software Foundation, Inc
+
+;; Author: Julien Danjou <julien@danjou.info>
+;; Keywords: faces
+;; Version: 0.9
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; This minor mode sets background color to strings that match color
+;; names, e.g. #0000ff is displayed in white with a blue background.
+;;
+
+;;; Code:
+
+(eval-when-compile
+  (require 'cl))
+
+(require 'regexp-opt)
+(require 'faces)
+(require 'color)
+
+(unless (require 'xterm-color nil t)
+  (require 'ansi-color))
+
+(defgroup rainbow nil
+  "Show color strings with a background color."
+  :tag "Rainbow"
+  :group 'help)
+
+;; Hexadecimal colors
+(defvar rainbow-hexadecimal-colors-font-lock-keywords
+  '(("[^&]\\(#\\(?:[0-9a-fA-F]\\{3\\}\\)+\\{1,4\\}\\)"
+     (1 (rainbow-colorize-itself 1)))
+    ("^\\(#\\(?:[0-9a-fA-F]\\{3\\}\\)+\\{1,4\\}\\)"
+     (0 (rainbow-colorize-itself)))
+    ("[Rr][Gg][Bb]:[0-9a-fA-F]\\{1,4\\}/[0-9a-fA-F]\\{1,4\\}/[0-9a-fA-F]\\{1,4\\}"
+     (0 (rainbow-colorize-itself)))
+    ("[Rr][Gg][Bb][Ii]:[0-9.]+/[0-9.]+/[0-9.]+"
+     (0 (rainbow-colorize-itself)))
+    ("\\(?:[Cc][Ii][Ee]\\(?:[Xx][Yy][Zz]\\|[Uu][Vv][Yy]\\|[Xx][Yy][Yy]\\|[Ll][Aa][Bb]\\|[Ll][Uu][Vv]\\)\\|[Tt][Ee][Kk][Hh][Vv][Cc]\\):[+-]?[0-9.]+\\(?:[Ee][+-]?[0-9]+\\)?/[+-]?[0-9.]+\\(?:[Ee][+-]?[0-9]+\\)?/[+-]?[0-9.]+\\(?:[Ee][+-]?[0-9]+\\)?"
+     (0 (rainbow-colorize-itself))))
+  "Font-lock keywords to add for hexadecimal colors.")
+
+;; rgb() colors
+(defvar rainbow-html-rgb-colors-font-lock-keywords
+  '(("rgb(\s*\\([0-9]\\{1,3\\}\\(?:\s*%\\)?\\)\s*,\s*\\([0-9]\\{1,3\\}\\(?:\s*%\\)?\\)\s*,\s*\\([0-9]\\{1,3\\}\\(?:\s*%\\)?\\)\s*)"
+     (0 (rainbow-colorize-rgb)))
+    ("rgba(\s*\\([0-9]\\{1,3\\}\\(?:\s*%\\)?\\)\s*,\s*\\([0-9]\\{1,3\\}\\(?:\s*%\\)?\\)\s*,\s*\\([0-9]\\{1,3\\}\\(?:\s*%\\)?\\)\s*,\s*[0-9]*\.?[0-9]+\s*%?\s*)"
+     (0 (rainbow-colorize-rgb)))
+    ("hsl(\s*\\([0-9]\\{1,3\\}\\)\s*,\s*\\([0-9]\\{1,3\\}\\)\s*%\s*,\s*\\([0-9]\\{1,3\\}\\)\s*%\s*)"
+     (0 (rainbow-colorize-hsl)))
+    ("hsla(\s*\\([0-9]\\{1,3\\}\\)\s*,\s*\\([0-9]\\{1,3\\}\\)\s*%\s*,\s*\\([0-9]\\{1,3\\}\\)\s*%\s*,\s*[0-9]*\.?[0-9]+\s*%?\s*)"
+     (0 (rainbow-colorize-hsl))))
+  "Font-lock keywords to add for RGB colors.")
+
+;; HTML colors name
+(defvar rainbow-html-colors-font-lock-keywords nil
+  "Font-lock keywords to add for HTML colors.")
+(make-variable-buffer-local 'rainbow-html-colors-font-lock-keywords)
+
+(defcustom rainbow-html-colors-alist
+  '(("AliceBlue" . "#F0F8FF")
+    ("AntiqueWhite" . "#FAEBD7")
+    ("Aqua" . "#00FFFF")
+    ("Aquamarine" . "#7FFFD4")
+    ("Azure" . "#F0FFFF")
+    ("Beige" . "#F5F5DC")
+    ("Bisque" . "#FFE4C4")
+    ("Black" . "#000000")
+    ("BlanchedAlmond" . "#FFEBCD")
+    ("Blue" . "#0000FF")
+    ("BlueViolet" . "#8A2BE2")
+    ("Brown" . "#A52A2A")
+    ("BurlyWood" . "#DEB887")
+    ("CadetBlue" . "#5F9EA0")
+    ("Chartreuse" . "#7FFF00")
+    ("Chocolate" . "#D2691E")
+    ("Coral" . "#FF7F50")
+    ("CornflowerBlue" . "#6495ED")
+    ("Cornsilk" . "#FFF8DC")
+    ("Crimson" . "#DC143C")
+    ("Cyan" . "#00FFFF")
+    ("DarkBlue" . "#00008B")
+    ("DarkCyan" . "#008B8B")
+    ("DarkGoldenRod" . "#B8860B")
+    ("DarkGray" . "#A9A9A9")
+    ("DarkGrey" . "#A9A9A9")
+    ("DarkGreen" . "#006400")
+    ("DarkKhaki" . "#BDB76B")
+    ("DarkMagenta" . "#8B008B")
+    ("DarkOliveGreen" . "#556B2F")
+    ("Darkorange" . "#FF8C00")
+    ("DarkOrchid" . "#9932CC")
+    ("DarkRed" . "#8B0000")
+    ("DarkSalmon" . "#E9967A")
+    ("DarkSeaGreen" . "#8FBC8F")
+    ("DarkSlateBlue" . "#483D8B")
+    ("DarkSlateGray" . "#2F4F4F")
+    ("DarkSlateGrey" . "#2F4F4F")
+    ("DarkTurquoise" . "#00CED1")
+    ("DarkViolet" . "#9400D3")
+    ("DeepPink" . "#FF1493")
+    ("DeepSkyBlue" . "#00BFFF")
+    ("DimGray" . "#696969")
+    ("DimGrey" . "#696969")
+    ("DodgerBlue" . "#1E90FF")
+    ("FireBrick" . "#B22222")
+    ("FloralWhite" . "#FFFAF0")
+    ("ForestGreen" . "#228B22")
+    ("Fuchsia" . "#FF00FF")
+    ("Gainsboro" . "#DCDCDC")
+    ("GhostWhite" . "#F8F8FF")
+    ("Gold" . "#FFD700")
+    ("GoldenRod" . "#DAA520")
+    ("Gray" . "#808080")
+    ("Grey" . "#808080")
+    ("Green" . "#008000")
+    ("GreenYellow" . "#ADFF2F")
+    ("HoneyDew" . "#F0FFF0")
+    ("HotPink" . "#FF69B4")
+    ("IndianRed" . "#CD5C5C")
+    ("Indigo" . "#4B0082")
+    ("Ivory" . "#FFFFF0")
+    ("Khaki" . "#F0E68C")
+    ("Lavender" . "#E6E6FA")
+    ("LavenderBlush" . "#FFF0F5")
+    ("LawnGreen" . "#7CFC00")
+    ("LemonChiffon" . "#FFFACD")
+    ("LightBlue" . "#ADD8E6")
+    ("LightCoral" . "#F08080")
+    ("LightCyan" . "#E0FFFF")
+    ("LightGoldenRodYellow" . "#FAFAD2")
+    ("LightGray" . "#D3D3D3")
+    ("LightGrey" . "#D3D3D3")
+    ("LightGreen" . "#90EE90")
+    ("LightPink" . "#FFB6C1")
+    ("LightSalmon" . "#FFA07A")
+    ("LightSeaGreen" . "#20B2AA")
+    ("LightSkyBlue" . "#87CEFA")
+    ("LightSlateGray" . "#778899")
+    ("LightSlateGrey" . "#778899")
+    ("LightSteelBlue" . "#B0C4DE")
+    ("LightYellow" . "#FFFFE0")
+    ("Lime" . "#00FF00")
+    ("LimeGreen" . "#32CD32")
+    ("Linen" . "#FAF0E6")
+    ("Magenta" . "#FF00FF")
+    ("Maroon" . "#800000")
+    ("MediumAquaMarine" . "#66CDAA")
+    ("MediumBlue" . "#0000CD")
+    ("MediumOrchid" . "#BA55D3")
+    ("MediumPurple" . "#9370D8")
+    ("MediumSeaGreen" . "#3CB371")
+    ("MediumSlateBlue" . "#7B68EE")
+    ("MediumSpringGreen" . "#00FA9A")
+    ("MediumTurquoise" . "#48D1CC")
+    ("MediumVioletRed" . "#C71585")
+    ("MidnightBlue" . "#191970")
+    ("MintCream" . "#F5FFFA")
+    ("MistyRose" . "#FFE4E1")
+    ("Moccasin" . "#FFE4B5")
+    ("NavajoWhite" . "#FFDEAD")
+    ("Navy" . "#000080")
+    ("OldLace" . "#FDF5E6")
+    ("Olive" . "#808000")
+    ("OliveDrab" . "#6B8E23")
+    ("Orange" . "#FFA500")
+    ("OrangeRed" . "#FF4500")
+    ("Orchid" . "#DA70D6")
+    ("PaleGoldenRod" . "#EEE8AA")
+    ("PaleGreen" . "#98FB98")
+    ("PaleTurquoise" . "#AFEEEE")
+    ("PaleVioletRed" . "#D87093")
+    ("PapayaWhip" . "#FFEFD5")
+    ("PeachPuff" . "#FFDAB9")
+    ("Peru" . "#CD853F")
+    ("Pink" . "#FFC0CB")
+    ("Plum" . "#DDA0DD")
+    ("PowderBlue" . "#B0E0E6")
+    ("Purple" . "#800080")
+    ("Red" . "#FF0000")
+    ("RosyBrown" . "#BC8F8F")
+    ("RoyalBlue" . "#4169E1")
+    ("SaddleBrown" . "#8B4513")
+    ("Salmon" . "#FA8072")
+    ("SandyBrown" . "#F4A460")
+    ("SeaGreen" . "#2E8B57")
+    ("SeaShell" . "#FFF5EE")
+    ("Sienna" . "#A0522D")
+    ("Silver" . "#C0C0C0")
+    ("SkyBlue" . "#87CEEB")
+    ("SlateBlue" . "#6A5ACD")
+    ("SlateGray" . "#708090")
+    ("SlateGrey" . "#708090")
+    ("Snow" . "#FFFAFA")
+    ("SpringGreen" . "#00FF7F")
+    ("SteelBlue" . "#4682B4")
+    ("Tan" . "#D2B48C")
+    ("Teal" . "#008080")
+    ("Thistle" . "#D8BFD8")
+    ("Tomato" . "#FF6347")
+    ("Turquoise" . "#40E0D0")
+    ("Violet" . "#EE82EE")
+    ("Wheat" . "#F5DEB3")
+    ("White" . "#FFFFFF")
+    ("WhiteSmoke" . "#F5F5F5")
+    ("Yellow" . "#FFFF00")
+    ("YellowGreen" . "#9ACD32"))
+  "Alist of HTML colors.
+Each entry should have the form (COLOR-NAME . HEXADECIMAL-COLOR)."
+  :group 'rainbow)
+
+(defcustom rainbow-html-colors-major-mode-list
+  '(html-mode css-mode php-mode nxml-mode xml-mode)
+  "List of major mode where HTML colors are enabled when
+`rainbow-html-colors' is set to auto."
+  :group 'rainbow)
+
+(defcustom rainbow-html-colors 'auto
+  "When to enable HTML colors.
+If set to t, the HTML colors will be enabled.  If set to nil, the
+HTML colors will not be enabled.  If set to auto, the HTML colors
+will be enabled if a major mode has been detected from the
+`rainbow-html-colors-major-mode-list'."
+  :group 'rainbow)
+
+;; X colors
+(defvar rainbow-x-colors-font-lock-keywords
+  `((,(regexp-opt (x-defined-colors) 'words)
+     (0 (rainbow-colorize-itself))))
+  "Font-lock keywords to add for X colors.")
+
+(defcustom rainbow-x-colors-major-mode-list
+  '(emacs-lisp-mode lisp-interaction-mode c-mode c++-mode java-mode)
+  "List of major mode where X colors are enabled when
+`rainbow-x-colors' is set to auto."
+  :group 'rainbow)
+
+(defcustom rainbow-x-colors 'auto
+  "When to enable X colors.
+If set to t, the X colors will be enabled.  If set to nil, the
+X colors will not be enabled.  If set to auto, the X colors
+will be enabled if a major mode has been detected from the
+`rainbow-x-colors-major-mode-list'."
+  :group 'rainbow)
+
+;; LaTeX colors
+(defvar rainbow-latex-rgb-colors-font-lock-keywords
+  '(("{rgb}{\\([0-9.]+\\),\s*\\([0-9.]+\\),\s*\\([0-9.]+\\)}"
+     (0 (rainbow-colorize-rgb-float)))
+    ("{RGB}{\\([0-9]\\{1,3\\}\\),\s*\\([0-9]\\{1,3\\}\\),\s*\\([0-9]\\{1,3\\}\\)}"
+     (0 (rainbow-colorize-rgb)))
+    ("{HTML}{\\([0-9A-Fa-f]\\{6\\}\\)}"
+     (0 (rainbow-colorize-hexadecimal-without-sharp))))
+  "Font-lock keywords to add for LaTeX colors.")
+
+(defcustom rainbow-latex-colors-major-mode-list
+  '(latex-mode)
+  "List of major mode where LaTeX colors are enabled when
+`rainbow-x-colors' is set to auto."
+  :group 'rainbow)
+
+(defcustom rainbow-latex-colors 'auto
+  "When to enable LaTeX colors.
+If set to t, the LaTeX colors will be enabled. If set to nil, the
+LaTeX colors will not be enabled.  If set to auto, the LaTeX colors
+will be enabled if a major mode has been detected from the
+`rainbow-latex-colors-major-mode-list'."
+  :group 'rainbow)
+
+;; Shell colors
+(defvar rainbow-ansi-colors-font-lock-keywords
+  '(("\\(\\\\[eE]\\|\\\\033\\|\\\\x1[bB]\\|\033\\)\\[\\([0-9;]*m\\)"
+     (0 (rainbow-colorize-ansi))))
+  "Font-lock keywords to add for ANSI colors.")
+
+(defcustom rainbow-ansi-colors-major-mode-list
+  '(sh-mode c-mode c++-mode)
+  "List of major mode where ANSI colors are enabled when
+`rainbow-ansi-colors' is set to auto."
+  :group 'rainbow)
+
+(defcustom rainbow-ansi-colors 'auto
+  "When to enable ANSI colors.
+If set to t, the ANSI colors will be enabled. If set to nil, the
+ANSI colors will not be enabled.  If set to auto, the ANSI colors
+will be enabled if a major mode has been detected from the
+`rainbow-ansi-colors-major-mode-list'."
+  :group 'rainbow)
+
+;; R colors
+
+;; R colors name
+(defvar rainbow-r-colors-font-lock-keywords nil
+  "Font-lock keywords to add for R colors.")
+(make-variable-buffer-local 'rainbow-r-colors-font-lock-keywords)
+
+;; use the following code to generate the list in R
+;; output_colors <- function(colors) {for(color in colors) {col <- col2rgb(color); cat(sprintf("(\"%s\" . \"#%02X%02X%02X\")\n",color,col[1],col[2],col[3]));}}
+;; output_colors(colors())
+(defcustom rainbow-r-colors-alist
+  '(("white" . "#FFFFFF")
+    ("aliceblue" . "#F0F8FF")
+    ("antiquewhite" . "#FAEBD7")
+    ("antiquewhite1" . "#FFEFDB")
+    ("antiquewhite2" . "#EEDFCC")
+    ("antiquewhite3" . "#CDC0B0")
+    ("antiquewhite4" . "#8B8378")
+    ("aquamarine" . "#7FFFD4")
+    ("aquamarine1" . "#7FFFD4")
+    ("aquamarine2" . "#76EEC6")
+    ("aquamarine3" . "#66CDAA")
+    ("aquamarine4" . "#458B74")
+    ("azure" . "#F0FFFF")
+    ("azure1" . "#F0FFFF")
+    ("azure2" . "#E0EEEE")
+    ("azure3" . "#C1CDCD")
+    ("azure4" . "#838B8B")
+    ("beige" . "#F5F5DC")
+    ("bisque" . "#FFE4C4")
+    ("bisque1" . "#FFE4C4")
+    ("bisque2" . "#EED5B7")
+    ("bisque3" . "#CDB79E")
+    ("bisque4" . "#8B7D6B")
+    ("black" . "#000000")
+    ("blanchedalmond" . "#FFEBCD")
+    ("blue" . "#0000FF")
+    ("blue1" . "#0000FF")
+    ("blue2" . "#0000EE")
+    ("blue3" . "#0000CD")
+    ("blue4" . "#00008B")
+    ("blueviolet" . "#8A2BE2")
+    ("brown" . "#A52A2A")
+    ("brown1" . "#FF4040")
+    ("brown2" . "#EE3B3B")
+    ("brown3" . "#CD3333")
+    ("brown4" . "#8B2323")
+    ("burlywood" . "#DEB887")
+    ("burlywood1" . "#FFD39B")
+    ("burlywood2" . "#EEC591")
+    ("burlywood3" . "#CDAA7D")
+    ("burlywood4" . "#8B7355")
+    ("cadetblue" . "#5F9EA0")
+    ("cadetblue1" . "#98F5FF")
+    ("cadetblue2" . "#8EE5EE")
+    ("cadetblue3" . "#7AC5CD")
+    ("cadetblue4" . "#53868B")
+    ("chartreuse" . "#7FFF00")
+    ("chartreuse1" . "#7FFF00")
+    ("chartreuse2" . "#76EE00")
+    ("chartreuse3" . "#66CD00")
+    ("chartreuse4" . "#458B00")
+    ("chocolate" . "#D2691E")
+    ("chocolate1" . "#FF7F24")
+    ("chocolate2" . "#EE7621")
+    ("chocolate3" . "#CD661D")
+    ("chocolate4" . "#8B4513")
+    ("coral" . "#FF7F50")
+    ("coral1" . "#FF7256")
+    ("coral2" . "#EE6A50")
+    ("coral3" . "#CD5B45")
+    ("coral4" . "#8B3E2F")
+    ("cornflowerblue" . "#6495ED")
+    ("cornsilk" . "#FFF8DC")
+    ("cornsilk1" . "#FFF8DC")
+    ("cornsilk2" . "#EEE8CD")
+    ("cornsilk3" . "#CDC8B1")
+    ("cornsilk4" . "#8B8878")
+    ("cyan" . "#00FFFF")
+    ("cyan1" . "#00FFFF")
+    ("cyan2" . "#00EEEE")
+    ("cyan3" . "#00CDCD")
+    ("cyan4" . "#008B8B")
+    ("darkblue" . "#00008B")
+    ("darkcyan" . "#008B8B")
+    ("darkgoldenrod" . "#B8860B")
+    ("darkgoldenrod1" . "#FFB90F")
+    ("darkgoldenrod2" . "#EEAD0E")
+    ("darkgoldenrod3" . "#CD950C")
+    ("darkgoldenrod4" . "#8B6508")
+    ("darkgray" . "#A9A9A9")
+    ("darkgreen" . "#006400")
+    ("darkgrey" . "#A9A9A9")
+    ("darkkhaki" . "#BDB76B")
+    ("darkmagenta" . "#8B008B")
+    ("darkolivegreen" . "#556B2F")
+    ("darkolivegreen1" . "#CAFF70")
+    ("darkolivegreen2" . "#BCEE68")
+    ("darkolivegreen3" . "#A2CD5A")
+    ("darkolivegreen4" . "#6E8B3D")
+    ("darkorange" . "#FF8C00")
+    ("darkorange1" . "#FF7F00")
+    ("darkorange2" . "#EE7600")
+    ("darkorange3" . "#CD6600")
+    ("darkorange4" . "#8B4500")
+    ("darkorchid" . "#9932CC")
+    ("darkorchid1" . "#BF3EFF")
+    ("darkorchid2" . "#B23AEE")
+    ("darkorchid3" . "#9A32CD")
+    ("darkorchid4" . "#68228B")
+    ("darkred" . "#8B0000")
+    ("darksalmon" . "#E9967A")
+    ("darkseagreen" . "#8FBC8F")
+    ("darkseagreen1" . "#C1FFC1")
+    ("darkseagreen2" . "#B4EEB4")
+    ("darkseagreen3" . "#9BCD9B")
+    ("darkseagreen4" . "#698B69")
+    ("darkslateblue" . "#483D8B")
+    ("darkslategray" . "#2F4F4F")
+    ("darkslategray1" . "#97FFFF")
+    ("darkslategray2" . "#8DEEEE")
+    ("darkslategray3" . "#79CDCD")
+    ("darkslategray4" . "#528B8B")
+    ("darkslategrey" . "#2F4F4F")
+    ("darkturquoise" . "#00CED1")
+    ("darkviolet" . "#9400D3")
+    ("deeppink" . "#FF1493")
+    ("deeppink1" . "#FF1493")
+    ("deeppink2" . "#EE1289")
+    ("deeppink3" . "#CD1076")
+    ("deeppink4" . "#8B0A50")
+    ("deepskyblue" . "#00BFFF")
+    ("deepskyblue1" . "#00BFFF")
+    ("deepskyblue2" . "#00B2EE")
+    ("deepskyblue3" . "#009ACD")
+    ("deepskyblue4" . "#00688B")
+    ("dimgray" . "#696969")
+    ("dimgrey" . "#696969")
+    ("dodgerblue" . "#1E90FF")
+    ("dodgerblue1" . "#1E90FF")
+    ("dodgerblue2" . "#1C86EE")
+    ("dodgerblue3" . "#1874CD")
+    ("dodgerblue4" . "#104E8B")
+    ("firebrick" . "#B22222")
+    ("firebrick1" . "#FF3030")
+    ("firebrick2" . "#EE2C2C")
+    ("firebrick3" . "#CD2626")
+    ("firebrick4" . "#8B1A1A")
+    ("floralwhite" . "#FFFAF0")
+    ("forestgreen" . "#228B22")
+    ("gainsboro" . "#DCDCDC")
+    ("ghostwhite" . "#F8F8FF")
+    ("gold" . "#FFD700")
+    ("gold1" . "#FFD700")
+    ("gold2" . "#EEC900")
+    ("gold3" . "#CDAD00")
+    ("gold4" . "#8B7500")
+    ("goldenrod" . "#DAA520")
+    ("goldenrod1" . "#FFC125")
+    ("goldenrod2" . "#EEB422")
+    ("goldenrod3" . "#CD9B1D")
+    ("goldenrod4" . "#8B6914")
+    ("gray" . "#BEBEBE")
+    ("gray0" . "#000000")
+    ("gray1" . "#030303")
+    ("gray2" . "#050505")
+    ("gray3" . "#080808")
+    ("gray4" . "#0A0A0A")
+    ("gray5" . "#0D0D0D")
+    ("gray6" . "#0F0F0F")
+    ("gray7" . "#121212")
+    ("gray8" . "#141414")
+    ("gray9" . "#171717")
+    ("gray10" . "#1A1A1A")
+    ("gray11" . "#1C1C1C")
+    ("gray12" . "#1F1F1F")
+    ("gray13" . "#212121")
+    ("gray14" . "#242424")
+    ("gray15" . "#262626")
+    ("gray16" . "#292929")
+    ("gray17" . "#2B2B2B")
+    ("gray18" . "#2E2E2E")
+    ("gray19" . "#303030")
+    ("gray20" . "#333333")
+    ("gray21" . "#363636")
+    ("gray22" . "#383838")
+    ("gray23" . "#3B3B3B")
+    ("gray24" . "#3D3D3D")
+    ("gray25" . "#404040")
+    ("gray26" . "#424242")
+    ("gray27" . "#454545")
+    ("gray28" . "#474747")
+    ("gray29" . "#4A4A4A")
+    ("gray30" . "#4D4D4D")
+    ("gray31" . "#4F4F4F")
+    ("gray32" . "#525252")
+    ("gray33" . "#545454")
+    ("gray34" . "#575757")
+    ("gray35" . "#595959")
+    ("gray36" . "#5C5C5C")
+    ("gray37" . "#5E5E5E")
+    ("gray38" . "#616161")
+    ("gray39" . "#636363")
+    ("gray40" . "#666666")
+    ("gray41" . "#696969")
+    ("gray42" . "#6B6B6B")
+    ("gray43" . "#6E6E6E")
+    ("gray44" . "#707070")
+    ("gray45" . "#737373")
+    ("gray46" . "#757575")
+    ("gray47" . "#787878")
+    ("gray48" . "#7A7A7A")
+    ("gray49" . "#7D7D7D")
+    ("gray50" . "#7F7F7F")
+    ("gray51" . "#828282")
+    ("gray52" . "#858585")
+    ("gray53" . "#878787")
+    ("gray54" . "#8A8A8A")
+    ("gray55" . "#8C8C8C")
+    ("gray56" . "#8F8F8F")
+    ("gray57" . "#919191")
+    ("gray58" . "#949494")
+    ("gray59" . "#969696")
+    ("gray60" . "#999999")
+    ("gray61" . "#9C9C9C")
+    ("gray62" . "#9E9E9E")
+    ("gray63" . "#A1A1A1")
+    ("gray64" . "#A3A3A3")
+    ("gray65" . "#A6A6A6")
+    ("gray66" . "#A8A8A8")
+    ("gray67" . "#ABABAB")
+    ("gray68" . "#ADADAD")
+    ("gray69" . "#B0B0B0")
+    ("gray70" . "#B3B3B3")
+    ("gray71" . "#B5B5B5")
+    ("gray72" . "#B8B8B8")
+    ("gray73" . "#BABABA")
+    ("gray74" . "#BDBDBD")
+    ("gray75" . "#BFBFBF")
+    ("gray76" . "#C2C2C2")
+    ("gray77" . "#C4C4C4")
+    ("gray78" . "#C7C7C7")
+    ("gray79" . "#C9C9C9")
+    ("gray80" . "#CCCCCC")
+    ("gray81" . "#CFCFCF")
+    ("gray82" . "#D1D1D1")
+    ("gray83" . "#D4D4D4")
+    ("gray84" . "#D6D6D6")
+    ("gray85" . "#D9D9D9")
+    ("gray86" . "#DBDBDB")
+    ("gray87" . "#DEDEDE")
+    ("gray88" . "#E0E0E0")
+    ("gray89" . "#E3E3E3")
+    ("gray90" . "#E5E5E5")
+    ("gray91" . "#E8E8E8")
+    ("gray92" . "#EBEBEB")
+    ("gray93" . "#EDEDED")
+    ("gray94" . "#F0F0F0")
+    ("gray95" . "#F2F2F2")
+    ("gray96" . "#F5F5F5")
+    ("gray97" . "#F7F7F7")
+    ("gray98" . "#FAFAFA")
+    ("gray99" . "#FCFCFC")
+    ("gray100" . "#FFFFFF")
+    ("green" . "#00FF00")
+    ("green1" . "#00FF00")
+    ("green2" . "#00EE00")
+    ("green3" . "#00CD00")
+    ("green4" . "#008B00")
+    ("greenyellow" . "#ADFF2F")
+    ("grey" . "#BEBEBE")
+    ("grey0" . "#000000")
+    ("grey1" . "#030303")
+    ("grey2" . "#050505")
+    ("grey3" . "#080808")
+    ("grey4" . "#0A0A0A")
+    ("grey5" . "#0D0D0D")
+    ("grey6" . "#0F0F0F")
+    ("grey7" . "#121212")
+    ("grey8" . "#141414")
+    ("grey9" . "#171717")
+    ("grey10" . "#1A1A1A")
+    ("grey11" . "#1C1C1C")
+    ("grey12" . "#1F1F1F")
+    ("grey13" . "#212121")
+    ("grey14" . "#242424")
+    ("grey15" . "#262626")
+    ("grey16" . "#292929")
+    ("grey17" . "#2B2B2B")
+    ("grey18" . "#2E2E2E")
+    ("grey19" . "#303030")
+    ("grey20" . "#333333")
+    ("grey21" . "#363636")
+    ("grey22" . "#383838")
+    ("grey23" . "#3B3B3B")
+    ("grey24" . "#3D3D3D")
+    ("grey25" . "#404040")
+    ("grey26" . "#424242")
+    ("grey27" . "#454545")
+    ("grey28" . "#474747")
+    ("grey29" . "#4A4A4A")
+    ("grey30" . "#4D4D4D")
+    ("grey31" . "#4F4F4F")
+    ("grey32" . "#525252")
+    ("grey33" . "#545454")
+    ("grey34" . "#575757")
+    ("grey35" . "#595959")
+    ("grey36" . "#5C5C5C")
+    ("grey37" . "#5E5E5E")
+    ("grey38" . "#616161")
+    ("grey39" . "#636363")
+    ("grey40" . "#666666")
+    ("grey41" . "#696969")
+    ("grey42" . "#6B6B6B")
+    ("grey43" . "#6E6E6E")
+    ("grey44" . "#707070")
+    ("grey45" . "#737373")
+    ("grey46" . "#757575")
+    ("grey47" . "#787878")
+    ("grey48" . "#7A7A7A")
+    ("grey49" . "#7D7D7D")
+    ("grey50" . "#7F7F7F")
+    ("grey51" . "#828282")
+    ("grey52" . "#858585")
+    ("grey53" . "#878787")
+    ("grey54" . "#8A8A8A")
+    ("grey55" . "#8C8C8C")
+    ("grey56" . "#8F8F8F")
+    ("grey57" . "#919191")
+    ("grey58" . "#949494")
+    ("grey59" . "#969696")
+    ("grey60" . "#999999")
+    ("grey61" . "#9C9C9C")
+    ("grey62" . "#9E9E9E")
+    ("grey63" . "#A1A1A1")
+    ("grey64" . "#A3A3A3")
+    ("grey65" . "#A6A6A6")
+    ("grey66" . "#A8A8A8")
+    ("grey67" . "#ABABAB")
+    ("grey68" . "#ADADAD")
+    ("grey69" . "#B0B0B0")
+    ("grey70" . "#B3B3B3")
+    ("grey71" . "#B5B5B5")
+    ("grey72" . "#B8B8B8")
+    ("grey73" . "#BABABA")
+    ("grey74" . "#BDBDBD")
+    ("grey75" . "#BFBFBF")
+    ("grey76" . "#C2C2C2")
+    ("grey77" . "#C4C4C4")
+    ("grey78" . "#C7C7C7")
+    ("grey79" . "#C9C9C9")
+    ("grey80" . "#CCCCCC")
+    ("grey81" . "#CFCFCF")
+    ("grey82" . "#D1D1D1")
+    ("grey83" . "#D4D4D4")
+    ("grey84" . "#D6D6D6")
+    ("grey85" . "#D9D9D9")
+    ("grey86" . "#DBDBDB")
+    ("grey87" . "#DEDEDE")
+    ("grey88" . "#E0E0E0")
+    ("grey89" . "#E3E3E3")
+    ("grey90" . "#E5E5E5")
+    ("grey91" . "#E8E8E8")
+    ("grey92" . "#EBEBEB")
+    ("grey93" . "#EDEDED")
+    ("grey94" . "#F0F0F0")
+    ("grey95" . "#F2F2F2")
+    ("grey96" . "#F5F5F5")
+    ("grey97" . "#F7F7F7")
+    ("grey98" . "#FAFAFA")
+    ("grey99" . "#FCFCFC")
+    ("grey100" . "#FFFFFF")
+    ("honeydew" . "#F0FFF0")
+    ("honeydew1" . "#F0FFF0")
+    ("honeydew2" . "#E0EEE0")
+    ("honeydew3" . "#C1CDC1")
+    ("honeydew4" . "#838B83")
+    ("hotpink" . "#FF69B4")
+    ("hotpink1" . "#FF6EB4")
+    ("hotpink2" . "#EE6AA7")
+    ("hotpink3" . "#CD6090")
+    ("hotpink4" . "#8B3A62")
+    ("indianred" . "#CD5C5C")
+    ("indianred1" . "#FF6A6A")
+    ("indianred2" . "#EE6363")
+    ("indianred3" . "#CD5555")
+    ("indianred4" . "#8B3A3A")
+    ("ivory" . "#FFFFF0")
+    ("ivory1" . "#FFFFF0")
+    ("ivory2" . "#EEEEE0")
+    ("ivory3" . "#CDCDC1")
+    ("ivory4" . "#8B8B83")
+    ("khaki" . "#F0E68C")
+    ("khaki1" . "#FFF68F")
+    ("khaki2" . "#EEE685")
+    ("khaki3" . "#CDC673")
+    ("khaki4" . "#8B864E")
+    ("lavender" . "#E6E6FA")
+    ("lavenderblush" . "#FFF0F5")
+    ("lavenderblush1" . "#FFF0F5")
+    ("lavenderblush2" . "#EEE0E5")
+    ("lavenderblush3" . "#CDC1C5")
+    ("lavenderblush4" . "#8B8386")
+    ("lawngreen" . "#7CFC00")
+    ("lemonchiffon" . "#FFFACD")
+    ("lemonchiffon1" . "#FFFACD")
+    ("lemonchiffon2" . "#EEE9BF")
+    ("lemonchiffon3" . "#CDC9A5")
+    ("lemonchiffon4" . "#8B8970")
+    ("lightblue" . "#ADD8E6")
+    ("lightblue1" . "#BFEFFF")
+    ("lightblue2" . "#B2DFEE")
+    ("lightblue3" . "#9AC0CD")
+    ("lightblue4" . "#68838B")
+    ("lightcoral" . "#F08080")
+    ("lightcyan" . "#E0FFFF")
+    ("lightcyan1" . "#E0FFFF")
+    ("lightcyan2" . "#D1EEEE")
+    ("lightcyan3" . "#B4CDCD")
+    ("lightcyan4" . "#7A8B8B")
+    ("lightgoldenrod" . "#EEDD82")
+    ("lightgoldenrod1" . "#FFEC8B")
+    ("lightgoldenrod2" . "#EEDC82")
+    ("lightgoldenrod3" . "#CDBE70")
+    ("lightgoldenrod4" . "#8B814C")
+    ("lightgoldenrodyellow" . "#FAFAD2")
+    ("lightgray" . "#D3D3D3")
+    ("lightgreen" . "#90EE90")
+    ("lightgrey" . "#D3D3D3")
+    ("lightpink" . "#FFB6C1")
+    ("lightpink1" . "#FFAEB9")
+    ("lightpink2" . "#EEA2AD")
+    ("lightpink3" . "#CD8C95")
+    ("lightpink4" . "#8B5F65")
+    ("lightsalmon" . "#FFA07A")
+    ("lightsalmon1" . "#FFA07A")
+    ("lightsalmon2" . "#EE9572")
+    ("lightsalmon3" . "#CD8162")
+    ("lightsalmon4" . "#8B5742")
+    ("lightseagreen" . "#20B2AA")
+    ("lightskyblue" . "#87CEFA")
+    ("lightskyblue1" . "#B0E2FF")
+    ("lightskyblue2" . "#A4D3EE")
+    ("lightskyblue3" . "#8DB6CD")
+    ("lightskyblue4" . "#607B8B")
+    ("lightslateblue" . "#8470FF")
+    ("lightslategray" . "#778899")
+    ("lightslategrey" . "#778899")
+    ("lightsteelblue" . "#B0C4DE")
+    ("lightsteelblue1" . "#CAE1FF")
+    ("lightsteelblue2" . "#BCD2EE")
+    ("lightsteelblue3" . "#A2B5CD")
+    ("lightsteelblue4" . "#6E7B8B")
+    ("lightyellow" . "#FFFFE0")
+    ("lightyellow1" . "#FFFFE0")
+    ("lightyellow2" . "#EEEED1")
+    ("lightyellow3" . "#CDCDB4")
+    ("lightyellow4" . "#8B8B7A")
+    ("limegreen" . "#32CD32")
+    ("linen" . "#FAF0E6")
+    ("magenta" . "#FF00FF")
+    ("magenta1" . "#FF00FF")
+    ("magenta2" . "#EE00EE")
+    ("magenta3" . "#CD00CD")
+    ("magenta4" . "#8B008B")
+    ("maroon" . "#B03060")
+    ("maroon1" . "#FF34B3")
+    ("maroon2" . "#EE30A7")
+    ("maroon3" . "#CD2990")
+    ("maroon4" . "#8B1C62")
+    ("mediumaquamarine" . "#66CDAA")
+    ("mediumblue" . "#0000CD")
+    ("mediumorchid" . "#BA55D3")
+    ("mediumorchid1" . "#E066FF")
+    ("mediumorchid2" . "#D15FEE")
+    ("mediumorchid3" . "#B452CD")
+    ("mediumorchid4" . "#7A378B")
+    ("mediumpurple" . "#9370DB")
+    ("mediumpurple1" . "#AB82FF")
+    ("mediumpurple2" . "#9F79EE")
+    ("mediumpurple3" . "#8968CD")
+    ("mediumpurple4" . "#5D478B")
+    ("mediumseagreen" . "#3CB371")
+    ("mediumslateblue" . "#7B68EE")
+    ("mediumspringgreen" . "#00FA9A")
+    ("mediumturquoise" . "#48D1CC")
+    ("mediumvioletred" . "#C71585")
+    ("midnightblue" . "#191970")
+    ("mintcream" . "#F5FFFA")
+    ("mistyrose" . "#FFE4E1")
+    ("mistyrose1" . "#FFE4E1")
+    ("mistyrose2" . "#EED5D2")
+    ("mistyrose3" . "#CDB7B5")
+    ("mistyrose4" . "#8B7D7B")
+    ("moccasin" . "#FFE4B5")
+    ("navajowhite" . "#FFDEAD")
+    ("navajowhite1" . "#FFDEAD")
+    ("navajowhite2" . "#EECFA1")
+    ("navajowhite3" . "#CDB38B")
+    ("navajowhite4" . "#8B795E")
+    ("navy" . "#000080")
+    ("navyblue" . "#000080")
+    ("oldlace" . "#FDF5E6")
+    ("olivedrab" . "#6B8E23")
+    ("olivedrab1" . "#C0FF3E")
+    ("olivedrab2" . "#B3EE3A")
+    ("olivedrab3" . "#9ACD32")
+    ("olivedrab4" . "#698B22")
+    ("orange" . "#FFA500")
+    ("orange1" . "#FFA500")
+    ("orange2" . "#EE9A00")
+    ("orange3" . "#CD8500")
+    ("orange4" . "#8B5A00")
+    ("orangered" . "#FF4500")
+    ("orangered1" . "#FF4500")
+    ("orangered2" . "#EE4000")
+    ("orangered3" . "#CD3700")
+    ("orangered4" . "#8B2500")
+    ("orchid" . "#DA70D6")
+    ("orchid1" . "#FF83FA")
+    ("orchid2" . "#EE7AE9")
+    ("orchid3" . "#CD69C9")
+    ("orchid4" . "#8B4789")
+    ("palegoldenrod" . "#EEE8AA")
+    ("palegreen" . "#98FB98")
+    ("palegreen1" . "#9AFF9A")
+    ("palegreen2" . "#90EE90")
+    ("palegreen3" . "#7CCD7C")
+    ("palegreen4" . "#548B54")
+    ("paleturquoise" . "#AFEEEE")
+    ("paleturquoise1" . "#BBFFFF")
+    ("paleturquoise2" . "#AEEEEE")
+    ("paleturquoise3" . "#96CDCD")
+    ("paleturquoise4" . "#668B8B")
+    ("palevioletred" . "#DB7093")
+    ("palevioletred1" . "#FF82AB")
+    ("palevioletred2" . "#EE799F")
+    ("palevioletred3" . "#CD6889")
+    ("palevioletred4" . "#8B475D")
+    ("papayawhip" . "#FFEFD5")
+    ("peachpuff" . "#FFDAB9")
+    ("peachpuff1" . "#FFDAB9")
+    ("peachpuff2" . "#EECBAD")
+    ("peachpuff3" . "#CDAF95")
+    ("peachpuff4" . "#8B7765")
+    ("peru" . "#CD853F")
+    ("pink" . "#FFC0CB")
+    ("pink1" . "#FFB5C5")
+    ("pink2" . "#EEA9B8")
+    ("pink3" . "#CD919E")
+    ("pink4" . "#8B636C")
+    ("plum" . "#DDA0DD")
+    ("plum1" . "#FFBBFF")
+    ("plum2" . "#EEAEEE")
+    ("plum3" . "#CD96CD")
+    ("plum4" . "#8B668B")
+    ("powderblue" . "#B0E0E6")
+    ("purple" . "#A020F0")
+    ("purple1" . "#9B30FF")
+    ("purple2" . "#912CEE")
+    ("purple3" . "#7D26CD")
+    ("purple4" . "#551A8B")
+    ("red" . "#FF0000")
+    ("red1" . "#FF0000")
+    ("red2" . "#EE0000")
+    ("red3" . "#CD0000")
+    ("red4" . "#8B0000")
+    ("rosybrown" . "#BC8F8F")
+    ("rosybrown1" . "#FFC1C1")
+    ("rosybrown2" . "#EEB4B4")
+    ("rosybrown3" . "#CD9B9B")
+    ("rosybrown4" . "#8B6969")
+    ("royalblue" . "#4169E1")
+    ("royalblue1" . "#4876FF")
+    ("royalblue2" . "#436EEE")
+    ("royalblue3" . "#3A5FCD")
+    ("royalblue4" . "#27408B")
+    ("saddlebrown" . "#8B4513")
+    ("salmon" . "#FA8072")
+    ("salmon1" . "#FF8C69")
+    ("salmon2" . "#EE8262")
+    ("salmon3" . "#CD7054")
+    ("salmon4" . "#8B4C39")
+    ("sandybrown" . "#F4A460")
+    ("seagreen" . "#2E8B57")
+    ("seagreen1" . "#54FF9F")
+    ("seagreen2" . "#4EEE94")
+    ("seagreen3" . "#43CD80")
+    ("seagreen4" . "#2E8B57")
+    ("seashell" . "#FFF5EE")
+    ("seashell1" . "#FFF5EE")
+    ("seashell2" . "#EEE5DE")
+    ("seashell3" . "#CDC5BF")
+    ("seashell4" . "#8B8682")
+    ("sienna" . "#A0522D")
+    ("sienna1" . "#FF8247")
+    ("sienna2" . "#EE7942")
+    ("sienna3" . "#CD6839")
+    ("sienna4" . "#8B4726")
+    ("skyblue" . "#87CEEB")
+    ("skyblue1" . "#87CEFF")
+    ("skyblue2" . "#7EC0EE")
+    ("skyblue3" . "#6CA6CD")
+    ("skyblue4" . "#4A708B")
+    ("slateblue" . "#6A5ACD")
+    ("slateblue1" . "#836FFF")
+    ("slateblue2" . "#7A67EE")
+    ("slateblue3" . "#6959CD")
+    ("slateblue4" . "#473C8B")
+    ("slategray" . "#708090")
+    ("slategray1" . "#C6E2FF")
+    ("slategray2" . "#B9D3EE")
+    ("slategray3" . "#9FB6CD")
+    ("slategray4" . "#6C7B8B")
+    ("slategrey" . "#708090")
+    ("snow" . "#FFFAFA")
+    ("snow1" . "#FFFAFA")
+    ("snow2" . "#EEE9E9")
+    ("snow3" . "#CDC9C9")
+    ("snow4" . "#8B8989")
+    ("springgreen" . "#00FF7F")
+    ("springgreen1" . "#00FF7F")
+    ("springgreen2" . "#00EE76")
+    ("springgreen3" . "#00CD66")
+    ("springgreen4" . "#008B45")
+    ("steelblue" . "#4682B4")
+    ("steelblue1" . "#63B8FF")
+    ("steelblue2" . "#5CACEE")
+    ("steelblue3" . "#4F94CD")
+    ("steelblue4" . "#36648B")
+    ("tan" . "#D2B48C")
+    ("tan1" . "#FFA54F")
+    ("tan2" . "#EE9A49")
+    ("tan3" . "#CD853F")
+    ("tan4" . "#8B5A2B")
+    ("thistle" . "#D8BFD8")
+    ("thistle1" . "#FFE1FF")
+    ("thistle2" . "#EED2EE")
+    ("thistle3" . "#CDB5CD")
+    ("thistle4" . "#8B7B8B")
+    ("tomato" . "#FF6347")
+    ("tomato1" . "#FF6347")
+    ("tomato2" . "#EE5C42")
+    ("tomato3" . "#CD4F39")
+    ("tomato4" . "#8B3626")
+    ("turquoise" . "#40E0D0")
+    ("turquoise1" . "#00F5FF")
+    ("turquoise2" . "#00E5EE")
+    ("turquoise3" . "#00C5CD")
+    ("turquoise4" . "#00868B")
+    ("violet" . "#EE82EE")
+    ("violetred" . "#D02090")
+    ("violetred1" . "#FF3E96")
+    ("violetred2" . "#EE3A8C")
+    ("violetred3" . "#CD3278")
+    ("violetred4" . "#8B2252")
+    ("wheat" . "#F5DEB3")
+    ("wheat1" . "#FFE7BA")
+    ("wheat2" . "#EED8AE")
+    ("wheat3" . "#CDBA96")
+    ("wheat4" . "#8B7E66")
+    ("whitesmoke" . "#F5F5F5")
+    ("yellow" . "#FFFF00")
+    ("yellow1" . "#FFFF00")
+    ("yellow2" . "#EEEE00")
+    ("yellow3" . "#CDCD00")
+    ("yellow4" . "#8B8B00")
+    ("yellowgreen" . "#9ACD32"))
+  "Alist of R colors.
+Each entry should have the form (COLOR-NAME . HEXADECIMAL-COLOR)."
+  :group 'rainbow)
+(defcustom rainbow-r-colors-major-mode-list
+  '(ess-mode)
+  "List of major mode where R colors are enabled when
+`rainbow-r-colors' is set to auto."
+  :group 'rainbow)
+
+(defcustom rainbow-r-colors 'auto
+  "When to enable R colors.
+If set to t, the R colors will be enabled.  If set to nil, the
+R colors will not be enabled.  If set to auto, the R colors
+will be enabled if a major mode has been detected from the
+`rainbow-r-colors-major-mode-list'."
+  :group 'rainbow)
+
+
+;; Functions
+(defun rainbow-colorize-match (color &optional match)
+  "Return a matched string propertized with a face whose
+background is COLOR. The foreground is computed using
+`rainbow-color-luminance', and is either white or black."
+  (let ((match (or match 0)))
+    (put-text-property
+     (match-beginning match) (match-end match)
+     'face `((:foreground ,(if (> 0.5 (rainbow-x-color-luminance color))
+                               "white" "black"))
+             (:background ,color)))))
+
+(defun rainbow-colorize-itself (&optional match)
+  "Colorize a match with itself."
+  (rainbow-colorize-match (match-string-no-properties (or match 0)) match))
+
+(defun rainbow-colorize-hexadecimal-without-sharp ()
+  "Colorize an hexadecimal colors and prepend # to it."
+  (rainbow-colorize-match (concat "#" (match-string-no-properties 1))))
+
+(defun rainbow-colorize-by-assoc (assoc-list)
+  "Colorize a match with its association from ASSOC-LIST."
+  (rainbow-colorize-match (cdr (assoc-string (match-string-no-properties 0)
+                                             assoc-list t))))
+
+(defun rainbow-rgb-relative-to-absolute (number)
+  "Convert a relative NUMBER to absolute. If NUMBER is absolute, return NUMBER.
+This will convert \"80 %\" to 204, \"100 %\" to 255 but \"123\" to \"123\"."
+  (let ((string-length (- (length number) 1)))
+    ;; Is this a number with %?
+    (if (eq (elt number string-length) ?%)
+        (/ (* (string-to-number (substring number 0 string-length)) 255) 100)
+      (string-to-number number))))
+
+(defun rainbow-colorize-hsl ()
+  "Colorize a match with itself."
+  (let ((h (/ (string-to-number (match-string-no-properties 1)) 360.0))
+        (s (/ (string-to-number (match-string-no-properties 2)) 100.0))
+        (l (/ (string-to-number (match-string-no-properties 3)) 100.0)))
+    (rainbow-colorize-match
+     (multiple-value-bind (r g b)
+        (color-hsl-to-rgb h s l)
+       (format "#%02X%02X%02X" (* r 255) (* g 255) (* b 255))))))
+
+(defun rainbow-colorize-rgb ()
+  "Colorize a match with itself."
+  (let ((r (rainbow-rgb-relative-to-absolute (match-string-no-properties 1)))
+        (g (rainbow-rgb-relative-to-absolute (match-string-no-properties 2)))
+        (b (rainbow-rgb-relative-to-absolute (match-string-no-properties 3))))
+    (rainbow-colorize-match (format "#%02X%02X%02X" r g b))))
+
+(defun rainbow-colorize-rgb-float ()
+  "Colorize a match with itself, with relative value."
+  (let ((r (* (string-to-number (match-string-no-properties 1)) 255.0))
+        (g (* (string-to-number (match-string-no-properties 2)) 255.0))
+        (b (* (string-to-number (match-string-no-properties 3)) 255.0)))
+    (rainbow-colorize-match (format "#%02X%02X%02X" r g b))))
+
+(defun rainbow-colorize-ansi ()
+  "Return a matched string propertized with ansi color face."
+  (let ((xterm-color? (featurep 'xterm-color))
+        (string (match-string-no-properties 0))
+        color)
+    (save-match-data
+      (let* ((replaced (concat
+                        (replace-regexp-in-string
+                         "^\\(\\\\[eE]\\|\\\\033\\|\\\\x1[bB]\\)"
+                         "\033" string) "x"))
+             xterm-color-current
+             ansi-color-context
+             (applied (funcall (if xterm-color?
+                                   'xterm-color-filter
+                                 'ansi-color-apply)
+                               replaced))
+             (face-property (get-text-property
+                             0
+                             (if xterm-color? 'face 'font-lock-face)
+                             applied)))
+        (unless (listp (car face-property))
+          (setq face-property (list face-property)))
+        (setq color (funcall (if xterm-color? 'cadr 'cdr)
+                             (or (assq (if xterm-color?
+                                           :foreground
+                                         'foreground-color)
+                                       face-property)
+                                 (assq (if xterm-color?
+                                           :background
+                                         'background-color)
+                                       face-property))))))
+    (when color
+      (rainbow-colorize-match color))))
+
+(defun rainbow-color-luminance (red green blue)
+  "Calculate the luminance of color composed of RED, BLUE and GREEN.
+Return a value between 0 and 1."
+  (/ (+ (* .2126 red) (* .7152 green) (* .0722 blue)) 256))
+
+(defun rainbow-x-color-luminance (color)
+  "Calculate the luminance of a color string (e.g. \"#ffaa00\", \"blue\").
+Return a value between 0 and 1."
+  (let* ((values (x-color-values color))
+        (r (/ (car values) 256.0))
+         (g (/ (cadr values) 256.0))
+        (b (/ (caddr values) 256.0)))
+    (rainbow-color-luminance r g b)))
+
+(defun rainbow-turn-on ()
+  "Turn on raibow-mode."
+  (font-lock-add-keywords nil
+                          rainbow-hexadecimal-colors-font-lock-keywords)
+  ;; Activate X colors?
+  (when (or (eq rainbow-x-colors t)
+            (and (eq rainbow-x-colors 'auto)
+                 (memq major-mode rainbow-x-colors-major-mode-list)))
+    (font-lock-add-keywords nil
+                            rainbow-x-colors-font-lock-keywords))
+  ;; Activate LaTeX colors?
+  (when (or (eq rainbow-latex-colors t)
+            (and (eq rainbow-latex-colors 'auto)
+                 (memq major-mode rainbow-latex-colors-major-mode-list)))
+    (font-lock-add-keywords nil
+                            rainbow-latex-rgb-colors-font-lock-keywords))
+  ;; Activate ANSI colors?
+  (when (or (eq rainbow-ansi-colors t)
+            (and (eq rainbow-ansi-colors 'auto)
+                 (memq major-mode rainbow-ansi-colors-major-mode-list)))
+    (font-lock-add-keywords nil
+                            rainbow-ansi-colors-font-lock-keywords))
+  ;; Activate HTML colors?
+  (when (or (eq rainbow-html-colors t)
+            (and (eq rainbow-html-colors 'auto)
+                 (memq major-mode rainbow-html-colors-major-mode-list)))
+    (setq rainbow-html-colors-font-lock-keywords
+          `((,(regexp-opt (mapcar 'car rainbow-html-colors-alist) 'words)
+             (0 (rainbow-colorize-by-assoc rainbow-html-colors-alist)))))
+    (font-lock-add-keywords nil
+                            `(,@rainbow-html-colors-font-lock-keywords
+                              ,@rainbow-html-rgb-colors-font-lock-keywords)))
+  ;; Activate R colors?
+  (when (or (eq rainbow-r-colors t)
+            (and (eq rainbow-r-colors 'auto)
+                 (memq major-mode rainbow-r-colors-major-mode-list)))
+    (setq rainbow-r-colors-font-lock-keywords
+          `((,(regexp-opt (mapcar 'car rainbow-r-colors-alist) 'words)
+             (0 (rainbow-colorize-by-assoc rainbow-r-colors-alist)))))
+    (font-lock-add-keywords nil
+                            rainbow-r-colors-font-lock-keywords
+                            )))
+
+(defun rainbow-turn-off ()
+  "Turn off rainbow-mode."
+  (font-lock-remove-keywords
+   nil
+   `(,@rainbow-hexadecimal-colors-font-lock-keywords
+     ,@rainbow-x-colors-font-lock-keywords
+     ,@rainbow-latex-rgb-colors-font-lock-keywords
+     ,@rainbow-r-colors-font-lock-keywords
+     ,@rainbow-html-colors-font-lock-keywords
+     ,@rainbow-html-rgb-colors-font-lock-keywords)))
+
+;;;###autoload
+(define-minor-mode rainbow-mode
+  "Colorize strings that represent colors.
+This will fontify with colors the string like \"#aabbcc\" or \"blue\"."
+  :lighter " Rbow"
+  (progn
+    (if rainbow-mode
+        (rainbow-turn-on)
+      (rainbow-turn-off))))
+
+(provide 'rainbow-mode)
+
+;;; rainbow-mode.el ends here
diff --git a/packages/register-list/register-list.el b/packages/register-list/register-list.el
new file mode 100755 (executable)
index 0000000..d192cc7
--- /dev/null
@@ -0,0 +1,656 @@
+;;; register-list.el ---  Interactively list/edit registers  -*- lexical-binding:t -*-
+;;
+;; Copyright (C) 2011-2013  Free Software Foundation, Inc.
+;;
+;; Filename: register-list.el
+;; Author: Bastien Guerry <bzg AT altern DOT org>
+;; Maintainer: Bastien Guerry <bzg AT altern DOT org>
+;; Keywords: register
+;; Description: List and edit the register
+;; Version: 0.1
+;;
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program; if not, write to the Free Software
+;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+;;
+;; This is not part of GNU Emacs.
+;;
+;;; Commentary:
+;;
+;; This library lets you list and edit registers.  M-x `register-list'
+;; displays a list of currently set registers.
+
+;; This list is similar to that of `bookmark-bmenu-list': you can set
+;; registers to delete with `d' and delete them with `x'.  If you want
+;; to concatenate the content of registers, mark them with `c' and
+;; process with `x'.
+
+;; You can also edit the register's key with `k' and its value with `v'
+;; Hitting RET on a value string will jump to the register's location or
+;; add the text to the kill ring.  Hitting RET on a register's type will
+;; restrict the list to registers of this type.
+;;
+;; Put this file into your load-path and the following into your ~/.emacs:
+;;   (require 'register-list)
+;; 
+;;; Todo:
+;; 
+;; - better sorting (interactive)
+;; - overlay register when deleting duplicates
+;; - more useful message when selecting a type
+;; - concatenation -> merge
+;; - support merging rectangles
+;; - add numbers when "merging" them
+;; - C-k to kill a register
+;; 
+;;; History: 
+;; 
+;; - [2008-03-09] Released v0.1
+;;   http://article.gmane.org/gmane.emacs.sources/2832
+;; 
+;;; Code:
+
+(eval-when-compile
+  (require 'cl))
+
+(defgroup register-list nil
+  "Interactively list/edit registers."
+  :tag "Register List"
+  :group 'register)
+
+(defcustom register-list-string-width nil
+  "Maximum width for the register value string."
+  :type 'integer)
+
+(defcustom register-list-preserve-fontification nil
+  "Non-nil means keep the value strings fontified."
+  :type 'integer)
+
+(defcustom register-list-default-types "[FNMRSW]"
+  "A regexp matching the default register types to list.
+
+The available types are: [F]rame [N]umber [M]arkers [R]ectangle
+\[S]string and [W]window.  [FW] will list markers, frame and
+window configuration, [SM] will list strings and markers, etc."
+  :type 'regexp)
+
+(defface register-list-off-rectangle
+  '((t (:inverse-video t)))
+  "Face used to show what falls out of a rectangle.")
+
+;;; Variables, map, mode
+
+(defvar register-list-mode-map
+  (let ((map (make-keymap)))
+    (suppress-keymap map t)
+    (define-key map "q" 'quit-window)
+    (define-key map "Q" 'register-list-quit)
+    (define-key map [(tab)] 'register-list-tab)
+    (define-key map "d" 'register-list-mark-delete)
+    (define-key map "D" 'register-list-delete-duplicates)
+    (define-key map "c" 'register-list-mark-concat)
+    (define-key map "x" 'register-list-execute)
+    (define-key map "+" 'register-list-increment-key)
+    (define-key map "-" 'register-list-decrement-key)
+    (define-key map "e" 'register-list-edit-key)
+    (define-key map "E" 'register-list-edit-value)
+    (define-key map "f" 'register-list-toggle-fontification)
+    (define-key map " " 'next-line)
+    (define-key map "n" 'next-line)
+    (define-key map "p" 'previous-line)
+    (define-key map "u" 'register-list-unmark)
+    (define-key map "U" 'register-list-unmark-all)
+    (define-key map "g" 'register-list-refresh)
+    (define-key map "F"
+      (lambda () (interactive) (register-list-refresh "F")))
+    (define-key map "N"
+      (lambda () (interactive) (register-list-refresh "N")))
+    (define-key map "M"
+      (lambda () (interactive) (register-list-refresh "M")))
+    (define-key map "R"
+      (lambda () (interactive) (register-list-refresh "R")))
+    (define-key map "S"
+      (lambda () (interactive) (register-list-refresh "S")))
+    (define-key map "W"
+      (lambda () (interactive) (register-list-refresh "W")))
+    (define-key map "G"
+      (lambda() (interactive) (register-list-refresh "[FNMRSW]")))
+    (define-key map "?" 'describe-mode)
+
+    (define-key map [follow-link] 'mouse-face)
+    (define-key map [mouse-2] 'register-list-call-handler-at-mouse)
+    (define-key map [(return)] 'register-list-call-handler-at-point)
+    map)
+  "Keymap for `register-list-mode'.")
+(defvar register-list-edit-value-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map (kbd "C-c C-c") 'register-list-send-value)
+    map)
+  "Keymap for editing the value of a register.")
+(defvar register-list-current-type nil
+  "The current type for the register menu.")
+(defvar register-list-current-fontification nil
+  "Whether the value strings are currently fontified.")
+(defvar register-list-temp-pos nil
+  "Temporary store the line the cursor is on.")
+(defvar register-list-temp-window-cfg nil
+  "Temporary window configuration.
+Saved before editing the value of a register.")
+(defvar register-list-temp-register nil
+  "Temporary value of the edited register.")
+(defvar register-list-edit-value-type nil
+  "The type of the edited value.")
+(defvar register-list-rectangle-column nil
+  "End of a rectangle line.")
+
+;;; Marks
+
+(defmacro register-list-preserve-pos (force-line &rest body)
+  "Preserve the position and execute BODY.
+If FORCE-LINE is non-nil, force moving to this line."
+  (declare (debug t) (indent 1))
+  `(let (,@(unless force-line '((line (line-number-at-pos (point)))))
+        (col (current-column)))
+     ,@body
+     (goto-char (point-min))
+     (forward-line ,(or force-line '(1- line)))
+     (line-move-to-column col)))
+
+(defmacro register-list-map-lines (let-vals &rest body)
+  "Execute BODY inside a let form with LET-VALS on all lines."
+  `(save-excursion
+     (goto-char (point-min))
+     (while (not (eobp))
+       (let* ,let-vals
+        ,@body
+        (forward-line 1)))))
+
+(defvar register-list-concat-separator "\n"
+  "Default separator when merging.")
+
+(defvar register-list-concat-key-select 'last)
+
+;; FIXME skip rectangle (or handle them separatly
+(defun register-list-execute nil
+  "Delete/concatenate registers marker for deletion/concatenation."
+  (interactive)
+  (let ((line (line-number-at-pos (point))) newreg concat)
+    (goto-char (point-min))
+    (while (re-search-forward "^[DC]" nil t)
+      (let* ((reg-point (next-single-property-change (point) 'register))
+            (reg (get-text-property reg-point 'register)))
+       (if (string= (match-string 0) "D")
+           (setq register-alist (delete reg register-alist))
+         (push reg concat))))
+    (when concat
+      ;; set the new register 
+      (setq newreg 
+           (cons (cond ((eq register-list-concat-key-select 'first)
+                        (caar concat))
+                       ((eq register-list-concat-key-select 'last)
+                        (caar (reverse concat)))
+                       (t (read-char 
+                           (format "Key [%s]: " 
+                                   (mapconcat (lambda(x) (char-to-string (car x)))
+                                              concat "")))))
+                 (mapconcat (lambda (i) (cdr i)) (reverse concat)
+                            (cond ((eq register-list-concat-separator 'ask)
+                                   (read-from-minibuffer "Separator: "))
+                                  ((stringp register-list-concat-separator) 
+                                   register-list-concat-separator)
+                                  (t "")))))
+      ;; delete old registers
+      (dolist (r concat)
+       (setq register-alist (delete r register-alist)))
+      ;; push the new register
+      (push newreg register-alist))
+    (register-list register-list-current-type
+                  register-list-current-fontification)
+    ;; move the cursor back
+    (goto-char (point-min))
+    (line-move (- line 2) t)))
+
+(defun register-list-set-mark (mark)
+  "Set mark at the beginning of the line."
+  (let ((inhibit-read-only t))
+    (beginning-of-line)
+    (unless (get-text-property (point) 'intangible)
+      (delete-char 1)
+      (save-excursion (insert mark))
+      (unless (save-excursion (forward-line 1) (eobp))
+       (forward-line 1)))))
+
+(defun register-list-mark-delete nil
+  "Mark the register at point for deletion."
+  (interactive)
+  (register-list-set-mark "D"))
+
+(defun register-list-mark-concat nil
+  "Mark the register at point for further concatenation."
+  (interactive)
+  (register-list-set-mark "C"))
+
+(defun register-list-unmark nil
+  "Unmark the register at point."
+  (interactive)
+  (register-list-set-mark " "))
+
+(defun register-list-unmark-all nil
+  "Unmark all registers."
+  (interactive)
+  (let ((inhibit-read-only t))
+    (save-excursion
+      (goto-char (point-min))
+      (forward-line 1)
+      (while (and (forward-line 1) (not (eobp)))
+       (delete-char 1)
+       (insert " ")))))
+
+(defun register-list-refresh (&optional type)
+  "Refresh the list of registers.
+An optional TYPE argument restrict the list these types."
+  (interactive "P")
+  (register-list-preserve-pos nil
+    (register-list (or type register-list-current-type)
+                   register-list-current-fontification)))
+
+(defun register-list-quit nil
+  "Quit the register list and kill its buffer."
+  (interactive)
+  (kill-buffer (current-buffer)))
+
+(defun register-list-toggle-fontification nil
+  "Toggle fontification of the value strings."
+  (interactive)
+  (register-list-preserve-pos nil
+    (setq register-list-current-fontification
+          (not register-list-current-fontification))
+    (register-list register-list-current-type
+                   register-list-current-fontification)))
+
+(define-derived-mode register-list-mode special-mode "Register List"
+  "Major mode for editing a list of register keys.
+
+Each line is of the form:
+
+\[Delete-flag] Key Type Value
+
+The leftmost column displays a `D' character if the register key
+is flagged for further deletion.  You can add such flag by hitting
+\\[register-list-delete].
+
+The Key column displays the character used for this register.
+Hitting \\[register-list-call-handler-at-point] on the key will
+prompt for a replacement.
+
+The Type column displays the type of the register, either [F]rame
+\[N]umber [M]arkers [R]ectangle [S]string or [W]window.  Hitting
+\\[register-list-call-handler-at-point] on this column will
+restrict the register list to this type of registers.  To quickly
+list a specific type, hit the type character among [FNMRSW].
+
+The Value column displays information about the value of the
+register: either a string if the register's value is a string, a
+number or a rectangle, or the location of the marker or some
+information about window and frame configuration.  Hitting
+\\[register-list-call-handler-at-point] on this column will
+copy the string to the kill ring or jump to the location.
+
+\\[register-list-edit-key] -- edit the key for this register.
+\\[register-list-edit-value] -- edit the value for this register.
+\\[register-list-increment-key] -- increment key at point.
+\\[register-list-decrement-key] -- decrement key at point.
+\\[register-list-mark-delete] -- mark the register at point for deletion.
+\\[register-list-mark-concat] -- mark the register at point for concatenation.
+\\[register-list-unmark] -- unmark the register at point.
+\\[register-list-unmark-all] -- unmark all registers.
+\\[register-list-execute] -- execute deletions or concatenations.
+\\[register-list-toggle-fontification] -- toggle fontification of value strings.
+\\[register-list-refresh] -- refresh the register menu display.
+\\[register-list-tab] -- cycle between the key, the type and the value.
+\\[register-list-quit] -- quit the register menu."
+  (setq truncate-lines t)
+  (setq buffer-read-only t))
+
+;;\\[register-list-edit-key-or-value] -- edit the key for this register.
+
+(defun register-list-tab nil
+  "Cycle between the register key, the type and the value."
+  (interactive)
+  (let* ((eol (save-excursion (end-of-line) (point)))
+        (m-f-chg (next-single-property-change (point) 'mouse-face nil eol))
+        (m-f-pos (text-property-any m-f-chg eol 'mouse-face 'highlight))
+        (r-f-chg (next-single-property-change (point) 'register nil eol))
+        (r-f-prop (get-text-property r-f-chg 'register)) point)
+    (cond (r-f-prop (goto-char r-f-chg))
+         (m-f-pos (goto-char m-f-pos))
+         (t  (beginning-of-line 2)
+             (if (setq point (next-single-property-change
+                              (point) 'register))
+                 (goto-char point))))))
+
+;;;###autoload
+(defun register-list (&optional type fontify)
+  "Display a list of registers.
+An optional argument TYPE defines a regexp to restrict the
+register menu to.  A second optional argument FONTIFICATION
+decides if the display preserves original fontification for
+values.
+
+The default types are defined in `register-list-default-types',
+which see.
+
+The list is displayed in a buffer named `*Register List*' in
+`register-list-mode', which see."
+  (interactive)
+  (switch-to-buffer (get-buffer-create "*Register List*"))
+  (let ((inhibit-read-only t))
+    (setq type (or type register-list-default-types))
+    (setq register-list-current-fontification
+         (or fontify register-list-preserve-fontification))
+    (setq register-list-current-type type)
+
+    (setq register-alist ;; TODO better sorting.
+         (sort register-alist (lambda (a b) (< (car a) (car b)))))
+    (erase-buffer)
+    ;; FIXME: Why `intangible'?
+    (insert (concat (propertize "% Key  Type  Value\n"
+                               'face 'font-lock-type-face
+                               'intangible t) ;; 'front-sticky t)
+                   (propertize "- ---  ----  -----\n"
+                               'intangible t
+                               'face 'font-lock-comment-delimiter-face)))
+    (dolist (register register-alist)
+      (let* ((key (char-to-string (car register)))
+             (val (cdr register))
+             (typ (register-list-get-type val))
+             (hdl (register-list-get-handler register typ)))
+        (when (string-match typ type)
+          (insert
+           (format "  %s    %s   %s\n"
+                   (propertize key 'face 'bold 'register register
+                               'register-handler hdl)
+                   (propertize (concat "[" typ "]")
+                               'mouse-face 'highlight
+                               'help-echo "mouse-2: restrict to this type"
+                               'register-handler
+                               (lambda ()
+                                 (register-list-preserve-pos nil
+                                   (register-list
+                                    typ register-list-current-fontification))))
+                   (propertize (register-list-prepare-string
+                                (register-list-value-to-string val typ) fontify)
+                               'mouse-face 'highlight
+                               'register-handler hdl
+                               'help-echo "mouse-2: use this register")))))))
+  (register-list-mode)
+  (goto-char (point-min))
+  (line-move 2 t)
+  (if (called-interactively-p)
+      (message "[d]elete  [e/E]dit key/value  RET:jump/copy  [FNRSW]:select type  ?:help")
+    (message "Register type: %s" register-list-current-type)))
+
+(defun register-list-call-handler-at-mouse (ev)
+  "Call the register handler at point.
+See `register-list-call-handler-at-point' for details."
+  (interactive "e")
+  (mouse-set-point ev)
+  (register-list-call-handler-at-point))
+
+(defun register-list-call-handler-at-point nil
+  "Call the register handler at point.
+If the point is on a register key, edit the key.  If the point is
+on a register type, rebuild the list restricting to registers of
+this type.  If the point is on a register value, either jump to
+the register or copy its value into the kill ring."
+  (interactive)
+  (let ((handler (get-text-property (point) 'register-handler)))
+    (if handler
+       (condition-case nil
+           (funcall (get-text-property (point) 'register-handler))
+         (error (message "Can't jump to register location"))))))
+
+(defun register-list-get-handler (register type)
+  "Return a handler function for a REGISTER with TYPE."
+  (cond ((string= "?" type)
+        `(lambda() (message "No action with this type")))
+       ((string= "S" type)
+        `(lambda()
+           (kill-new ,(cdr register))
+           (message "String copied to the kill ring")))
+       ((string= "N" type)
+        `(lambda()
+           (kill-new ,(number-to-string (cdr register)))
+           (message "Number copied to the kill ring as a string")))
+       ((string= "R" type)
+        `(lambda()
+           (kill-new ,(mapconcat 'identity (cdr register) "\n"))
+           (message "Rectangle copied to the kill ring")))
+       ((string-match "[FMW]" type)
+        `(lambda()
+           (jump-to-register ,(car register))
+           (message (format "Jumped to register %s"
+                            ,(char-to-string (car register))))))))
+
+(defun register-list-value-to-string (value type)
+  "Convert a register VALUE into a string according to its TYPE."
+  (cond ((string= "M" type)
+        (cond ((marker-position value)
+               (format "[Marker at point %d in buffer %s]"
+                       (marker-position value)
+                       (buffer-name (marker-buffer value))))
+              ((marker-buffer value)
+               (format "[Marker in buffer %s]"
+                       (buffer-name (marker-buffer value))))
+              (t (format "[Marker gone?]"))))
+       ((string= "N" type)
+        (format "Number: %s" (number-to-string value)))
+       ((string= "S" type)
+        (replace-regexp-in-string "[\n\r\t]" " " value))
+       ((string= "R" type)
+        (mapconcat 'identity value "\\ "))
+       ((string= "W" type)
+        (format "[Window configuration in frame \"%s\"]"
+                 (frame-parameter
+                  (window-configuration-frame (car value)) 'name)))
+       ((string= "F" type)
+        (format "[Frame configuration]"))
+       (t "[Error: unknow type]")))
+
+(defun register-list-get-type (key)
+  "Get the type for register's KEY."
+  (if (atom key)
+      (cond ((stringp key) "S")
+           ((markerp key) "M")
+           ((numberp key) "N")
+           (t "error"))
+    (cond ((window-configuration-p (car key)) "W")
+         ((frame-configuration-p (car key)) "F")
+         ((stringp (car key)) "R")
+         ((string= "Unprintable entity" (car key)) "?")
+         (t "error"))))
+
+;;; Edit key/value of the register
+
+;; FIXME delete?
+;; (defun register-list-edit-key-or-value nil
+;;   "Edit the register key or value depending on the point."
+;;   (interactive)
+;;   (if (get-text-property (point) 'register)
+;;       (register-list-edit-key)
+;;     (register-list-edit-value)))
+
+(defun register-list-edit-key nil
+  "Edit the key of the register at point."
+  (interactive)
+  (register-list-set-key 
+   (lambda (v) (read-char (format "New key (%s): " 
+                                 (char-to-string v))))))
+
+(defun register-list-increment-key nil
+  "Increment the key of the register at point."
+  (interactive)
+  (register-list-set-key '1+))
+
+(defun register-list-delete-duplicates nil
+  "Interactively delete duplicates."
+  (interactive)
+  (mapc (lambda (r)
+         (mapc (lambda(rr)
+                 (if (and (eq (car r) (car rr))
+                          (y-or-n-p 
+                           (format "Delete register with key `%s'? "
+                                   (char-to-string (car rr)))))
+                     (setq register-alist (delete rr register-alist))))
+               (cdr (member r register-alist))))
+       register-alist))
+
+;; (defun register-list- (register)
+;;   "Overline the register with KEY."
+;;   (save-excursion
+;;     (goto-char (point-min))
+;;     (while (re-search-forward (concat "^[ DC]" (char-to-string key)) nil t)
+;;       (goto-char
+;;     (while (next-single-property-change (point) 'register)
+
+(defun register-list-decrement-key nil
+  "Decrement the key of the register at point."
+  (interactive)
+  (register-list-set-key '1-))
+
+(defun register-list-set-key (function)
+  "Update the regsiter key by applying FUNCTION."
+  (register-list-preserve-pos
+      2 ;; go back to top of the sorted list
+    (beginning-of-line)
+    (let* ((reg-point (next-single-property-change (point) 'register))
+           (reg (get-text-property reg-point 'register))
+           (val (car reg)))
+      (setq register-alist (delete reg register-alist))
+      (add-to-list 'register-alist
+                   (cons (setcar reg (funcall function val)) (cdr reg)))
+      (register-list register-list-current-type
+                     register-list-current-fontification))))
+
+(defun register-list-edit-value nil
+  "Edit the value of the register at point."
+  (interactive)
+  (let* ((reg-at-point
+         (save-excursion
+           (beginning-of-line)
+           (next-single-property-change (point) 'register)))
+        (reg (get-text-property reg-at-point 'register))
+        (val (cdr reg)))
+    (if (not (or (stringp val) (numberp val)
+                (and (listp val) (stringp (car val)))))
+       (message "Can't edit this type of register")
+      (setq register-list-temp-window-cfg (current-window-configuration))
+      (setq register-list-temp-register reg)
+      (setq register-list-temp-pos
+           (cons (line-number-at-pos (point)) (current-column)))
+      (setq register-list-edit-value-type
+           (cond ((numberp val) 'number)
+                 ((listp val) 'rectangle)
+                 (t 'string)))
+      (pop-to-buffer (get-buffer-create "*Register Edit*"))
+      (erase-buffer)
+      (insert (cond ((numberp val) (number-to-string val))
+                   ((listp val) (mapconcat 'identity val "\n"))
+                   (t val)))
+      (setq register-list-rectangle-column
+           (if (eq register-list-edit-value-type 'rectangle)
+               (length (car val)) nil))
+      (register-list-edit-value-mode)
+      (message "Press C-c C-c when you're done"))))
+
+(define-derived-mode register-list-edit-value-mode text-mode
+  "Edit Register Value"
+  "Mode for editing the value of a register.
+When you are done editing the value, store it with \\[register-list-send-string].
+
+\\{register-list-edit-value-mode-map}")
+
+(defun register-list-add-rectangle-overlays (column)
+  "Add overlays to display strings beyond COLUMN.
+Do this on all lines in the current buffer."
+  (register-list-map-lines
+   ((beg (progn (forward-char column) (point)))
+    (end (progn (end-of-line) (point))))
+   (unless (eq beg end)
+     (overlay-put (make-overlay beg end)
+                 'face 'register-list-off-rectangle))))
+
+(defun register-list-add-trailing-whitespace (column)
+  "Add trailing whitespaces to fill to COLUMN.
+Do this on all lines in the current buffer."
+  (register-list-map-lines
+   ((eol (save-excursion (end-of-line) (point)))
+    (rem (% eol (1+ column))))
+   (if (and (not (eq rem 0))
+           (< eol (* (1+ column) (line-number-at-pos (point)))))
+       (save-excursion
+        (end-of-line)
+        (insert (make-string (- (1+ column) rem) 32))))))
+
+(defun register-list-send-value nil
+  "Use the buffer to store the new value of a register.
+Convert the buffer to a number or a rectangle if required."
+  (interactive)
+  (catch 'cancel
+    (when register-list-rectangle-column
+      ;; fix whitespace before sending a rectangle
+      (register-list-add-trailing-whitespace
+       register-list-rectangle-column)
+      ;; cut off trailing string before sending a rectangle
+      (register-list-add-rectangle-overlays
+       register-list-rectangle-column)
+      (if (and (delq nil (overlay-lists))
+              (not (y-or-n-p "Cut off the fontified part of the rectangle? ")))
+         (throw 'cancel (message "Back to editing"))))
+    ;; now send the value
+    (set-register (car register-list-temp-register)
+                 (cond ((eq register-list-edit-value-type 'number)
+                        (string-to-number (buffer-string)))
+                       ((eq register-list-edit-value-type 'rectangle)
+                        (mapcar (lambda (l) (truncate-string-to-width
+                                             l register-list-rectangle-column
+                                             0 32))
+                                (split-string (buffer-string) "\n")))
+                       (t (buffer-string))))
+    (kill-buffer (current-buffer))
+    (register-list register-list-current-type
+                  register-list-current-fontification)
+    (set-window-configuration register-list-temp-window-cfg)
+    (line-move (1- (car register-list-temp-pos)) t)
+    (line-move-to-column (cdr register-list-temp-pos)))
+  ;; remove overlays if sending was cancelled
+  (mapc (lambda(ovs) (mapc (lambda(o) (delete-overlay o)) ovs))
+       (overlay-lists))
+  (message "New value stored"))
+
+(defun register-list-prepare-string (string &optional fontify)
+  "Prepare STRING for the register list.
+An optional argument FONTIFY takes precedence over
+`register-list-preserve-fontification' to decide whether the
+string should keep its original fontification.  Also shorten the
+output string to `register-list-string-width'."
+  (if (and register-list-string-width
+          (> (length string) register-list-string-width))
+      (setq string (substring string 0 register-list-string-width)))
+  (when (or fontify register-list-preserve-fontification)
+    (remove-text-properties 0 (length string) '(face nil) string))
+  string)
+
+(provide 'register-list)
+
+;;; register-list.el ends here
diff --git a/packages/shen-mode/README b/packages/shen-mode/README
new file mode 100644 (file)
index 0000000..22ddde1
--- /dev/null
@@ -0,0 +1,6 @@
+Shen-mode provides functionality for working with the shen programming
+language.  This includes both a major mode `shen-mode' and an inferior
+Shen mode (`run-shen') for evaluating shen code in a comint buffer or
+from a buffer of Shen source code.
+
+For information on shen see http://www.shenlanguage.org/.
\ No newline at end of file
diff --git a/packages/shen-mode/inf-shen.el b/packages/shen-mode/inf-shen.el
new file mode 100644 (file)
index 0000000..a27d082
--- /dev/null
@@ -0,0 +1,591 @@
+;;; inferior-shen-mode --- an inferior-shen mode
+
+;; Copyright (C) 2011-2013 Free Software Foundation, Inc.
+
+;; Authors: Michael Ilseman, Eric Schulte <schulte.eric@gmail.com>
+;; Version: 0.1
+;; Keywords: languages, shen, comint
+;; Description: A major mode for editing shen source code
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file defines an inferior Shen mode.
+
+;;; Code:
+(eval-when-compile (require 'cl))
+(require 'comint)
+(require 'shen-mode)
+
+;;;###autoload
+(defvar inferior-shen-filter-regexp "\\`\\s *\\(:\\(\\w\\|\\s_\\)\\)?\\s *\\'"
+  "*What not to save on inferior Shen's input history.
+Input matching this regexp is not saved on the input history in Inferior Shen
+mode.  Default is whitespace followed by 0 or 1 single-letter colon-keyword
+\(as in :a, :c, etc.)")
+
+(defvar inferior-shen-mode-map
+  (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map comint-mode-map)
+    ;; (set-keymap-parent inferior-shen-mode-map shen-mode-shared-map)
+    (define-key map "\C-x\C-e" 'shen-eval-last-sexp)
+    (define-key map "\C-c\C-l" 'shen-load-file)
+    (define-key map "\C-c\C-k" 'shen-compile-file)
+    (define-key map "\C-c\C-a" 'shen-show-arglist)
+    (define-key map "\C-c\C-d" 'shen-describe-sym)
+    (define-key map "\C-c\C-f" 'shen-show-function-documentation)
+    (define-key map "\C-c\C-v" 'shen-show-variable-documentation)
+    map))
+
+;; These commands augment Shen mode, so you can process Shen code in
+;; the source files.
+(define-key shen-mode-map "\M-\C-x"  'shen-eval-defun)     ; Gnu convention
+(define-key shen-mode-map "\C-x\C-e" 'shen-eval-last-sexp) ; Gnu convention
+(define-key shen-mode-map "\C-c\C-e" 'shen-eval-defun)
+(define-key shen-mode-map "\C-c\C-r" 'shen-eval-region)
+(define-key shen-mode-map "\C-c\C-c" 'shen-compile-defun)
+(define-key shen-mode-map "\C-c\C-z" 'switch-to-shen)
+(define-key shen-mode-map "\C-c\C-l" 'shen-load-file)
+(define-key shen-mode-map "\C-c\C-k" 'shen-compile-file)  ; "kompile" file
+(define-key shen-mode-map "\C-c\C-a" 'shen-show-arglist)
+(define-key shen-mode-map "\C-c\C-d" 'shen-describe-sym)
+(define-key shen-mode-map "\C-c\C-f" 'shen-show-function-documentation)
+(define-key shen-mode-map "\C-c\C-v" 'shen-show-variable-documentation)
+
+
+;; This function exists for backwards compatibility.
+;; Previous versions of this package bound commands to C-c <letter>
+;; bindings, which is not allowed by the gnumacs standard.
+
+;;  "This function binds many inferior-shen commands to C-c <letter> bindings,
+;;where they are more accessible. C-c <letter> bindings are reserved for the
+;;user, so these bindings are non-standard. If you want them, you should
+;;have this function called by the inferior-shen-load-hook:
+;;    (setq inferior-shen-load-hook '(inferior-shen-install-letter-bindings))
+;;You can modify this function to install just the bindings you want."
+(defun inferior-shen-install-letter-bindings ()
+  (define-key shen-mode-map "\C-ce" 'shen-eval-defun-and-go)
+  (define-key shen-mode-map "\C-cr" 'shen-eval-region-and-go)
+  (define-key shen-mode-map "\C-cc" 'shen-compile-defun-and-go)
+  (define-key shen-mode-map "\C-cz" 'switch-to-shen)
+  (define-key shen-mode-map "\C-cl" 'shen-load-file)
+  (define-key shen-mode-map "\C-ck" 'shen-compile-file)
+  (define-key shen-mode-map "\C-ca" 'shen-show-arglist)
+  (define-key shen-mode-map "\C-cd" 'shen-describe-sym)
+  (define-key shen-mode-map "\C-cf" 'shen-show-function-documentation)
+  (define-key shen-mode-map "\C-cv" 'shen-show-variable-documentation)
+
+  (define-key inferior-shen-mode-map "\C-cl" 'shen-load-file)
+  (define-key inferior-shen-mode-map "\C-ck" 'shen-compile-file)
+  (define-key inferior-shen-mode-map "\C-ca" 'shen-show-arglist)
+  (define-key inferior-shen-mode-map "\C-cd" 'shen-describe-sym)
+  (define-key inferior-shen-mode-map "\C-cf" 'shen-show-function-documentation)
+  (define-key inferior-shen-mode-map "\C-cv"
+    'shen-show-variable-documentation))
+
+
+(defvar inferior-shen-program "shen"
+  "*Program name for invoking an inferior Shen with for Inferior Shen mode.")
+
+(defvar inferior-shen-load-command "(load \"%s\")\n"
+  "*Format-string for building a Shen expression to load a file.
+This format string should use `%s' to substitute a file name
+and should result in a Shen expression that will command the inferior Shen
+to load that file.  The default works acceptably on most Shens.
+The string \"(progn (load \\\"%s\\\" :verbose nil :print t) (values))\\n\"
+produces cosmetically superior output for this application,
+but it works only in Common Shen.")
+
+(defvar inferior-shen-prompt "^[^> \n]*>+:? *"
+  "Regexp to recognise prompts in the Inferior Shen mode.
+Defaults to \"^[^> \\n]*>+:? *\", which works pretty good for Lucid, kcl,
+and franz.  This variable is used to initialize `comint-prompt-regexp' in the
+Inferior Shen buffer.
+
+This variable is only used if the variable
+`comint-use-prompt-regexp-instead-of-fields' is non-nil.
+
+More precise choices:
+Lucid Common Shen: \"^\\\\(>\\\\|\\\\(->\\\\)+\\\\) *\"
+franz: \"^\\\\(->\\\\|<[0-9]*>:\\\\) *\"
+kcl: \"^>+ *\"
+
+This is a fine thing to set in your .emacs file.")
+
+(defvar inferior-shen-buffer nil "*The current inferior-shen process buffer.
+
+MULTIPLE PROCESS SUPPORT
+===========================================================================
+To run multiple Shen processes, you start the first up
+with \\[inferior-shen].  It will be in a buffer named `*inferior-shen*'.
+Rename this buffer with \\[rename-buffer].  You may now start up a new
+process with another \\[inferior-shen].  It will be in a new buffer,
+named `*inferior-shen*'.  You can switch between the different process
+buffers with \\[switch-to-buffer].
+
+Commands that send text from source buffers to Shen processes --
+like `shen-eval-defun' or `shen-show-arglist' -- have to choose a process
+to send to, when you have more than one Shen process around.  This
+is determined by the global variable `inferior-shen-buffer'.  Suppose you
+have three inferior Shens running:
+    Buffer              Process
+    foo                 inferior-shen
+    bar                 inferior-shen<2>
+    *inferior-shen*     inferior-shen<3>
+If you do a \\[shen-eval-defun] command on some Shen source code,
+what process do you send it to?
+
+- If you're in a process buffer (foo, bar, or *inferior-shen*),
+  you send it to that process.
+- If you're in some other buffer (e.g., a source file), you
+  send it to the process attached to buffer `inferior-shen-buffer'.
+This process selection is performed by function `inferior-shen-proc'.
+
+Whenever \\[inferior-shen] fires up a new process, it resets
+`inferior-shen-buffer' to be the new process's buffer.  If you only run
+one process, this does the right thing.  If you run multiple
+processes, you can change `inferior-shen-buffer' to another process
+buffer with \\[set-variable].")
+
+(defvar inferior-shen-mode-hook '()
+  "*Hook for customising Inferior Shen mode.")
+
+(put 'inferior-shen-mode 'mode-class 'special)
+
+(define-derived-mode inferior-shen-mode comint-mode "Inferior Shen"
+  "Major mode for interacting with an inferior Shen process.
+Runs a Shen interpreter as a subprocess of Emacs, with Shen I/O through an
+Emacs buffer.  Variable `inferior-shen-program' controls which Shen interpreter
+is run.  Variables `inferior-shen-prompt', `inferior-shen-filter-regexp' and
+`inferior-shen-load-command' can customize this mode for different Shen
+interpreters.
+
+For information on running multiple processes in multiple buffers, see
+documentation for variable `inferior-shen-buffer'.
+
+\\{inferior-shen-mode-map}
+
+Customisation: Entry to this mode runs the hooks on `comint-mode-hook' and
+`inferior-shen-mode-hook' (in that order).
+
+You can send text to the inferior Shen process from other buffers containing
+Shen source.
+    switch-to-shen switches the current buffer to the Shen process buffer.
+    shen-eval-defun sends the current defun to the Shen process.
+    shen-compile-defun compiles the current defun.
+    shen-eval-region sends the current region to the Shen process.
+    shen-compile-region compiles the current region.
+
+    Prefixing the shen-eval/compile-defun/region commands with
+    a \\[universal-argument] causes a switch to the Shen process buffer after sending
+    the text.
+
+Commands:
+Return after the end of the process' output sends the text from the
+    end of process to point.
+Return before the end of the process' output copies the sexp ending at point
+    to the end of the process' output, and sends it.
+Delete converts tabs to spaces as it moves back.
+Tab indents for Shen; with argument, shifts rest
+    of expression rigidly with the current line.
+C-M-q does Tab on each line starting within following expression.
+Paragraphs are separated only by blank lines.  Semicolons start comments.
+If you accidentally suspend your process, use \\[comint-continue-subjob]
+to continue it."
+  (set (make-local-variable 'font-lock-defaults) '(shen-font-lock-keywords))
+  (setq comint-prompt-regexp inferior-shen-prompt)
+  (setq mode-line-process '(":%s"))
+
+  (setq comint-get-old-input (function shen-get-old-input))
+  (setq comint-input-filter (function shen-input-filter)))
+
+(defun shen-get-old-input ()
+  "Return a string containing the sexp ending at point."
+  (save-excursion
+    (let ((end (point)))
+      (backward-sexp)
+      (buffer-substring (point) end))))
+
+(defun shen-input-filter (str)
+  "t if STR does not match `inferior-shen-filter-regexp'."
+  (not (string-match inferior-shen-filter-regexp str)))
+
+;;;###autoload
+(defun inferior-shen (cmd)
+  "Run an inferior Shen process, input and output via buffer `*inferior-shen*'.
+If there is a process already running in `*inferior-shen*', just switch
+to that buffer.
+With argument, allows you to edit the command line (default is value
+of `inferior-shen-program').  Runs the hooks from
+`inferior-shen-mode-hook' (after the `comint-mode-hook' is run).
+\(Type \\[describe-mode] in the process buffer for a list of commands.)"
+  (interactive (list (if current-prefix-arg
+                        (read-string "Run shen: " inferior-shen-program)
+                      inferior-shen-program)))
+  (if (not (comint-check-proc "*inferior-shen*"))
+      (let ((cmdlist (split-string cmd)))
+       (set-buffer (apply (function make-comint)
+                          "inferior-shen" (car cmdlist) nil (cdr cmdlist)))
+       (inferior-shen-mode)))
+  (setq inferior-shen-buffer "*inferior-shen*")
+  (pop-to-buffer "*inferior-shen*"))
+;;;###autoload (add-hook 'same-window-buffer-names "*inferior-shen*")
+
+;;;###autoload
+(defalias 'run-shen 'inferior-shen)
+
+(defcustom shen-pre-eval-hook '()
+  "Hook to run on code before sending it to the inferior-shen-process.
+Functions on this hook will be called with an active region
+containing the shen source code about to be evaluated.")
+
+(defun shen-remember-functions (start end)
+  "Add functions defined between START and END to `shen-functions'."
+  (interactive "r")
+  (flet ((clean (text)
+                (when text
+                  (set-text-properties 0 (length text) nil text) text)))
+    (save-excursion
+      (goto-char start)
+      (let ((re (concat
+                 "^(define[ \t]+\\(.+\\)[\n\r]" ; function name
+                 "\\([ \t]*\\\\\\*[ \t]*\\([^\000]+?\\)[ \t]*\\*\\\\\\)?" ; doc
+                 "[\n\r]?[ \t]*\\({\\(.+\\)}\\)?"))) ; type
+        (while (re-search-forward re end t)
+          (let ((name (intern (match-string 1)))
+                (doc (clean (match-string 3)))
+                (type (clean (match-string 5))))
+            (add-to-list 'shen-functions (list name type doc))))))))
+
+(add-hook 'shen-pre-eval-hook #'shen-remember-functions)
+
+(defun check-balanced-parens (start end)
+  "Check if parentheses in the region are balanced."
+  (save-restriction (save-excursion
+    (let ((deactivate-mark nil))
+      (condition-case _
+          (progn (narrow-to-region start end) (goto-char (point-min))
+                 (while (/= 0 (- (point) (forward-list)))) t)
+          (scan-error (signal 'scan-error '("Parentheses not balanced."))))))))
+
+(add-hook 'shen-pre-eval-hook
+          (lambda (start end)
+            (condition-case err (check-balanced-parens start end)
+              (error (unless (y-or-n-p (format "%s Eval anyway ?"
+                                               (error-message-string err)))
+                       (signal 'scan-error err))))))
+
+(defun shen-eval-region (start end &optional and-go)
+  "Send the current region to the inferior Shen process.
+Prefix argument means switch to the Shen buffer afterwards."
+  (interactive "r\nP")
+  (let ((before-input (marker-position (process-mark (inferior-shen-proc))))
+        result)
+    
+    (run-hook-with-args 'shen-pre-eval-hook start end)
+    (comint-send-region (inferior-shen-proc) start end)
+    (comint-send-string (inferior-shen-proc) "\n")
+    (accept-process-output (inferior-shen-proc))
+    (sit-for 0)
+    (with-current-buffer inferior-shen-buffer
+      (goto-char before-input)
+      (setq result (buffer-substring (point) (point-at-eol)))
+      (message "%s" result)
+      (goto-char (process-mark (inferior-shen-proc))))
+    (if and-go (switch-to-shen t))
+    result))
+
+(defun shen-eval-defun (&optional and-go)
+  "Send the current defun to the inferior Shen process.
+Prefix argument means switch to the Shen buffer afterwards."
+  (interactive "P")
+  (let (result)
+    (save-excursion
+      (end-of-defun)
+      (skip-chars-backward " \t\n\r\f") ;  Makes allegro happy
+      (let ((end (point)))
+        (beginning-of-defun)
+        (setq result (shen-eval-region (point) end))))
+    (if and-go (switch-to-shen t))
+    result))
+
+(defun shen-eval-last-sexp (&optional and-go)
+  "Send the previous sexp to the inferior Shen process.
+Prefix argument means switch to the Shen buffer afterwards."
+  (interactive "P")
+  (shen-eval-region (save-excursion (backward-sexp) (point)) (point) and-go))
+
+;;; Common Shen COMPILE sux.
+(defun shen-compile-region (start end &optional and-go)
+  "Compile the current region in the inferior Shen process.
+Prefix argument means switch to the Shen buffer afterwards."
+  (interactive "r\nP")
+  (comint-send-string
+   (inferior-shen-proc)
+   (format "(funcall (compile nil `(lambda () (progn 'compile %s))))\n"
+          (buffer-substring start end)))
+  (if and-go (switch-to-shen t)))
+
+(defun shen-compile-defun (&optional and-go)
+  "Compile the current defun in the inferior Shen process.
+Prefix argument means switch to the Shen buffer afterwards."
+  (interactive "P")
+  (save-excursion
+    (end-of-defun)
+    (skip-chars-backward " \t\n\r\f") ;  Makes allegro happy
+    (let ((e (point)))
+      (beginning-of-defun)
+      (shen-compile-region (point) e)))
+  (if and-go (switch-to-shen t)))
+
+(defun switch-to-shen (eob-p)
+  "Switch to the inferior Shen process buffer.
+With argument, positions cursor at end of buffer."
+  (interactive "P")
+  (if (get-buffer-process inferior-shen-buffer)
+      (let ((pop-up-frames
+            ;; Be willing to use another frame
+            ;; that already has the window in it.
+            (or pop-up-frames
+                (get-buffer-window inferior-shen-buffer t))))
+       (pop-to-buffer inferior-shen-buffer))
+      (run-shen inferior-shen-program))
+  (when eob-p
+        (push-mark)
+    (goto-char (point-max))))
+
+
+;; Now that shen-compile/eval-defun/region takes an optional prefix arg,
+;; these commands are redundant. But they are kept around for the user
+;; to bind if he wishes, for backwards functionality, and because it's
+;; easier to type C-c e than C-u C-c C-e.
+(defun shen-eval-region-and-go (start end)
+  "Send the current region to the inferior Shen, and switch to its buffer."
+  (interactive "r")
+  (shen-eval-region start end t))
+
+(defun shen-eval-defun-and-go ()
+  "Send the current defun to the inferior Shen, and switch to its buffer."
+  (interactive)
+  (shen-eval-defun t))
+
+(defun shen-compile-region-and-go (start end)
+  "Compile the current region in the inferior Shen, and switch to its buffer."
+  (interactive "r")
+  (shen-compile-region start end t))
+
+(defun shen-compile-defun-and-go ()
+  "Compile the current defun in the inferior Shen, and switch to its buffer."
+  (interactive)
+  (shen-compile-defun t))
+
+;; A version of the form in H. Shevis' soar-mode.el package. Less robust.
+;; (defun shen-compile-sexp (start end)
+;;   "Compile the s-expression bounded by START and END in the inferior shen.
+;; If the sexp isn't a DEFUN form, it is evaluated instead."
+;;   (cond ((looking-at "(defun\\s +")
+;;      (goto-char (match-end 0))
+;;      (let ((name-start (point)))
+;;        (forward-sexp 1)
+;;        (process-send-string "inferior-shen"
+;;                             (format "(compile '%s #'(lambda "
+;;                                     (buffer-substring name-start
+;;                                                       (point)))))
+;;      (let ((body-start (point)))
+;;        (goto-char start) (forward-sexp 1) ; Can't use end-of-defun.
+;;        (process-send-region "inferior-shen"
+;;                             (buffer-substring body-start (point))))
+;;      (process-send-string "inferior-shen" ")\n"))
+;;     (t (shen-eval-region start end)))))
+;;
+;; (defun shen-compile-region (start end)
+;;   "Each s-expression in the current region is compiled (if a DEFUN)
+;; or evaluated (if not) in the inferior shen."
+;;   (interactive "r")
+;;   (save-excursion
+;;     (goto-char start) (end-of-defun) (beginning-of-defun) ; error check
+;;     (if (< (point) start) (error "region begins in middle of defun"))
+;;     (goto-char start)
+;;     (let ((s start))
+;;       (end-of-defun)
+;;       (while (<= (point) end) ; Zip through
+;;     (shen-compile-sexp s (point)) ; compiling up defun-sized chunks.
+;;     (setq s (point))
+;;     (end-of-defun))
+;;       (if (< s end) (shen-compile-sexp s end)))))
+;;
+;; End of HS-style code
+
+
+(defvar shen-prev-l/c-dir/file nil
+  "Record last directory and file used in loading or compiling.
+This holds a cons cell of the form `(DIRECTORY . FILE)'
+describing the last `shen-load-file' or `shen-compile-file' command.")
+
+(defvar shen-source-modes '(shen-mode)
+  "*Used to determine if a buffer contains Shen source code.
+If it's loaded into a buffer that is in one of these major modes, it's
+considered a Shen source file by `shen-load-file' and `shen-compile-file'.
+Used by these commands to determine defaults.")
+
+(defun shen-load-file (file-name)
+  "Load a Shen file into the inferior Shen process."
+  (interactive (comint-get-source "Load Shen file: " shen-prev-l/c-dir/file
+                                 shen-source-modes nil)) ; NIL because LOAD
+                                       ; doesn't need an exact name
+  (comint-check-source file-name) ; Check to see if buffer needs saved.
+  (setq shen-prev-l/c-dir/file (cons (file-name-directory    file-name)
+                                    (file-name-nondirectory file-name)))
+  (comint-send-string (inferior-shen-proc)
+                     (format inferior-shen-load-command file-name))
+  (switch-to-shen t))
+
+
+(defun shen-compile-file (file-name)
+  "Compile a Shen file in the inferior Shen process."
+  (interactive (comint-get-source "Compile Shen file: " shen-prev-l/c-dir/file
+                                 shen-source-modes nil)) ; NIL = don't need
+                                       ; suffix .shen
+  (comint-check-source file-name) ; Check to see if buffer needs saved.
+  (setq shen-prev-l/c-dir/file (cons (file-name-directory    file-name)
+                                    (file-name-nondirectory file-name)))
+  (comint-send-string (inferior-shen-proc) (concat "(compile-file \""
+                                                  file-name
+                                                  "\"\)\n"))
+  (switch-to-shen t))
+
+
+
+;;; Documentation functions: function doc, var doc, arglist, and
+;;; describe symbol.
+;;; ===========================================================================
+
+;;; Command strings
+;;; ===============
+
+(defvar shen-function-doc-command
+  "(let ((fn '%s))
+     (format t \"Documentation for ~a:~&~a\"
+            fn (documentation fn 'function))
+     (values))\n"
+  "Command to query inferior Shen for a function's documentation.")
+
+(defvar shen-var-doc-command
+  "(let ((v '%s))
+     (format t \"Documentation for ~a:~&~a\"
+            v (documentation v 'variable))
+     (values))\n"
+  "Command to query inferior Shen for a variable's documentation.")
+
+(defvar shen-arglist-command
+  "(let ((fn '%s))
+     (format t \"Arglist for ~a: ~a\" fn (arglist fn))
+     (values))\n"
+  "Command to query inferior Shen for a function's arglist.")
+
+(defvar shen-describe-sym-command
+  "(describe '%s)\n"
+  "Command to query inferior Shen for a variable's documentation.")
+
+
+;;; Ancillary functions
+;;; ===================
+
+(defun shen-symprompt (prompt default)
+  "Read a string from the user."
+  (list (let* ((prompt (if default
+                          (format "%s (default %s): " prompt default)
+                        (concat prompt ": ")))
+              (ans (read-string prompt)))
+         (if (zerop (length ans)) default ans))))
+
+
+;; Adapted from function-called-at-point in help.el.
+(defun shen-fn-called-at-pt ()
+  "Return the name of the function called in the current call.
+The value is nil if it can't find one."
+  (condition-case nil
+      (save-excursion
+       (save-restriction
+         (narrow-to-region (max (point-min) (- (point) 1000)) (point-max))
+         (backward-up-list 1)
+         (forward-char 1)
+         (let ((obj (read (current-buffer))))
+           (and (symbolp obj) obj))))
+    (error nil)))
+
+
+;; Adapted from variable-at-point in help.el.
+(defun shen-var-at-pt ()
+  (condition-case ()
+      (save-excursion
+       (forward-sexp -1)
+       (skip-chars-forward "'")
+       (let ((obj (read (current-buffer))))
+         (and (symbolp obj) obj)))
+    (error nil)))
+
+
+;;; Documentation functions: fn and var doc, arglist, and symbol describe.
+;;; ======================================================================
+(defun shen-show-function-documentation (fn)
+  "Send a command to the inferior Shen to give documentation for function FN.
+See variable `shen-function-doc-command'."
+  (interactive (shen-symprompt "Function doc" (shen-fn-called-at-pt)))
+  (comint-proc-query (inferior-shen-proc)
+                    (format shen-function-doc-command fn)))
+
+(defun shen-show-variable-documentation (var)
+  "Send a command to the inferior Shen to give documentation for function FN.
+See variable `shen-var-doc-command'."
+  (interactive (shen-symprompt "Variable doc" (shen-var-at-pt)))
+  (comint-proc-query (inferior-shen-proc) (format shen-var-doc-command var)))
+
+(defun shen-show-arglist (fn)
+  "Send a query to the inferior Shen for the arglist for function FN.
+See variable `shen-arglist-command'."
+  (interactive (shen-symprompt "Arglist" (shen-fn-called-at-pt)))
+  (comint-proc-query (inferior-shen-proc) (format shen-arglist-command fn)))
+
+(defun shen-describe-sym (sym)
+  "Send a command to the inferior Shen to describe symbol SYM.
+See variable `shen-describe-sym-command'."
+  (interactive (shen-symprompt "Describe" (shen-var-at-pt)))
+  (comint-proc-query (inferior-shen-proc)
+                    (format shen-describe-sym-command sym)))
+
+\f
+;;  "Returns the current inferior Shen process.
+;; See variable `inferior-shen-buffer'."
+(defun inferior-shen-proc ()
+  (let ((proc (get-buffer-process (if (eq major-mode 'inferior-shen-mode)
+                                     (current-buffer)
+                                   inferior-shen-buffer))))
+    (or proc
+       (error "No Shen subprocess; see variable `inferior-shen-buffer'"))))
+
+
+;;; Do the user's customisation...
+;;;===============================
+(defvar inferior-shen-load-hook nil
+  "This hook is run when the library `inf-shen' is loaded.
+This is a good place to put keybindings.")
+
+(run-hooks 'inferior-shen-load-hook)
+
+(provide 'inf-shen)
+;;; inf-shen.el ends here
diff --git a/packages/shen-mode/shen-mode.el b/packages/shen-mode/shen-mode.el
new file mode 100644 (file)
index 0000000..81c2829
--- /dev/null
@@ -0,0 +1,430 @@
+;;; shen-mode.el --- A major mode for editing shen source code
+
+;; Copyright (C) 2011, 2013 Free Software Foundation, Inc.
+
+;; Author: Eric Schulte <schulte.eric@gmail.com>
+;; Version: 0.1
+;; Keywords: languages, shen
+;; Description: A major mode for editing shen source code
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; A major mode for editing Shen source code.  Shen is a modern Lisp
+;; dialect with support for functional and declarative programming,
+;; pattern matching and a very powerful type system.  See the
+;; following for more information on Shen.  http://www.shenlanguage.org
+
+;;; Code:
+(eval-when-compile (require 'cl))
+(require 'lisp-mode)
+(require 'imenu)
+
+(defcustom shen-mode-hook '(turn-on-eldoc-mode)
+  "Normal hook run when entering `shen-mode'."
+  :type 'hook
+  :group 'shen)
+
+(defvar shen-mode-map
+  (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map lisp-mode-shared-map)
+    map)
+  "Currently just inherits from `lisp-mode-shared-map'.")
+
+(eval-and-compile
+(defconst shen-functions
+  '((* "number --> number --> number" "Number multiplication.")
+    (+ "number --> number --> number" "Number addition.")
+    (- "number --> number --> number" "Number subtraction.")
+    (/ "number --> number --> number" "Number division.")
+    (/. "_" "Abstraction builder, receives a variable and an expression; does the job of --> in the lambda calculus.")
+    (< "number --> number --> boolean" "Less than.")
+    (<-vector nil nil)
+    (<= "number --> number --> boolean" "Less than or equal to.")
+    (<e> nil nil)
+    (= "A --> A --> boolean" "Equal to.")
+    (== "A --> B --> boolean" "Equal to.")
+    (> "number --> number --> boolean" "Greater than.")
+    (>= "number --> number --> boolean" "Greater than or equal to.")
+    (@p "_" "Takes two inputs and forms an ordered pair.")
+    (@s "_" "Takes two or more inputs and forms a string.")
+    (@v "_" "Takes two or more inputs and forms a vector.")
+    (abort nil "throw a simple error")
+    (adjoin nil "add arg1 to list arg2 if not already a member")
+    (and "boolean --> boolean --> boolean" "Boolean and.")
+    (append "(list A) --> (list A) --> (list A)" "Appends two lists into one list.")
+    (apply "(A --> B) --> (A --> B)" "Applies a function to an input.")
+    (arity nil nil)
+    (assoc nil nil)
+    (assoc-type "symbol --> variable --> symbol" "Associates a Qi type (first input) with  Lisp type (second input)..")
+    (average nil "return the average of two numbers")
+    (bind nil nil)
+    (boolean\? "A --> boolean" "Recognisor for booleans.")
+    (bound\? nil "check is a symbol is bound")
+    (byte->string nil "return the string represented by bytes")
+    (call nil nil)
+    (cd "string --> string" "Changes the home directory. (cd \"My Programs\") will cause (load \"hello_world.txt\") to load MyPrograms/hello_world.txt.   (cd \"\")  is the default.")
+    (character\? "A --> boolean" "Recognisor for characters.")
+    (compile nil nil)
+    (complex\? "A --> boolean" "Recognisor for complex numbers.")
+    (concat "symbol --> symbol --> symbol" "Concatenates two symbols.")
+    (congruent\? "A --> A --> boolean" "Retrns true if objects are identical or else if they are strings or characters which are identical differing at most in case or numbers of equal value (e.g. 1 and 1.0) or tuples composed of congruent elements.")
+    (cons "_" "A special form that takes an object e of type A and a list l of type (list A) and produces a list of type (list A) by adding e to the front of  l.")
+    (cons\? "--> boolean" "Returns true iff the input is a non-empty list.")
+    (core nil nil)
+    (cut nil nil)
+    (debug "A --> string" "The input is ignored and debugging is returned; but all terminal output is echoed to the file debug.txt until the undebug function is executed.")
+    (declare "_" "Takes a function name f and a type t expressed as a list and gives f the type t.")
+    (define "_" "Define a function, takes a name, an optional type and a pattern matching body.")
+    (delete-file "string --> string" "The file named in the string is deleted and the string returned.")
+    (destroy "_" "Receives the name of a function and removes it and its type from the environment.")
+    (difference "(list A) --> (list A) --> (list A)" "Subtracts the elements of the second list from the first")
+    (do "_" "A special form: receives n well-typed expressions and evaluates each one, returning the normal form of the last one.")
+    (dump "string --> string" "Dumps all user-generated Lisp from the file f denoted by the argument into a file f.lsp.")
+    (echo "string --> string" "Echoes all terminal input/output to a file named by string (which is either appended to if it exists or created if not) until the command (echo \"\") is received which switches echo off.")
+    (element\? "A -> (list A) --> boolean" "Returns true iff the first input is an element in the second.")
+    (empty\? "--> boolean" "Returns true iff the input is [].")
+    (error "_" "A special form: takes a string followed by n (n --> 0) expressions. Prints error string.")
+    (eval "_" "Evaluates the input.")
+    (explode "A --> (list character)" "Explodes an object to a list of characters.")
+    (fail nil nil)
+    (fix "(A --> A) --> (A --> A)" "Applies a function to generate a fixpoint.")
+    (float\? "A --> boolean" "Recognisor for floating point numbers.")
+    (floor nil nil)
+    (format nil "takes a stream, a format string and args, formats and prints to the stream")
+    (freeze "A --> (lazy A)" "Returns a frozen version of its input.")
+    (fst "(A * B) --> A" "Returns the first element of a tuple.")
+    (fwhen nil nil)
+    (gensym "_" "Generates a fresh symbol or variable from a string..")
+    (get nil "gets property arg2 from object arg1")
+    (get-array "(array A) --> (list number) --> A --> A" "3-place function that takes an array of elements of type A, an index to that array as a list of natural numbers and an expression E of type A.  If an object is stored at the index, then it is returned, otherwise the normal form of E is returned.")
+    (get-prop "_" "3-place function that takes a symbol S, a pointer P (which can be a string, symbol or number), and an expression E of any kind and returns the value pointed by P from S  (if one exists) or the normal form of E otherwise.")
+    (hash nil "hash an object")
+    (hdv nil nil)
+    (head "(list A) --> A" "Returns the first element of a list.")
+    (identical nil nil)
+    (if "boolean --> A --> A" "takes a boolean b and two expressions x and y and evaluates x if b evaluates to true and evaluates y if b evaluates to false.")
+    (if-with-checking "string --> (list A)" "If type checking is enabled, raises the string as an error otherwise returns the empty list..")
+    (if-without-checking "string --> (list A)" "If type checking is disabled, raises the string as an error otherwise returns the empty list.")
+    (include "(list symbol) --> (list symbol)" "Includes the datatype theories or synonyms for use in type checking.")
+    (include-all-but "(list symbol) --> (list symbol)" "Includes all loaded datatype theories and synonyms for use in type checking apart from those entered.")
+    (inferences "A --> number" "The input is ignored. Returns the number of logical inferences executed since the last call to the top level.")
+    (input "_" "0-place function. Takes a user input i and returns the normal form of i.")
+    (input+ "_" "Special form. Takes inputs of the form : <expr>. Where d(<expr>) is the type denoted by the choice of expression (e.g. \"number\" denotes the type number). Takes a user input i and returns the normal form of i given i is of the type d(<expr>).")
+    (integer\? "A --> boolean" "Recognisor for integers.")
+    (interror nil nil)
+    (intersection "(list A) --> (list A) --> (list A)" "Computes the intersection of two lists.")
+    (intmake-string nil nil)
+    (intoutput nil nil)
+    (lambda "_" "Lambda operator from lambda calculus.")
+    (length "(list A) --> integer" "Returns the number of elements in a list.")
+    (let nil nil)
+    (limit nil nil)
+    (lineread "_" "Top level reader of read-evaluate-print loop. Reads elements into a list.  lineread terminates with carriage return when brackets are balanced.  ^ aborts lineread.")
+    (list "A .. A --> (list A)" "A special form. Assembles n (n  --> 0) inputs into a list.")
+    (load "string --> symbol" "Takes a file name and loads the file, returning loaded as a symbol.")
+    (macroexpand nil nil)
+    (make-string "string A1 - An --> string" "A special form: takes a string followed by n (n --> 0) well-typed expressions; assembles and returns a string.")
+    (map "(A --> B) --> (list A) --> (list B)" "The first input is applied to each member of the second input and the results consed into one list..")
+    (mapcan "(A --> (list B)) --> (list A) --> (list B)" "The first input is applied to each member of the second input and the results appended into one list.")
+    (maxinferences "number --> number" "Returns the input and as a side-effect, sets a global variable to a number that limits the maximum number of inferences that can be expended on attempting to typecheck a program.  The default is 1,000,000.")
+    (mod nil "arg1 mod arg2")
+    (newsym "symbol --> symbol" "Generates a fresh symbol from a symbol.")
+    (newvar "variable --> variable" "Generates a fresh variable from a variable")
+    (nl nil nil)
+    (not "boolean --> boolean" "Boolean not.")
+    (nth "number --> (list A) --> A" "Gets the nth element of a list numbered from 1.")
+    (number\? "A --> boolean" "Recognisor for numbers.")
+    (occurences "A --> B --> number" "Returns the number of times the first argument occurs in the second.")
+    (occurrences nil "returns the number of occurrences of arg1 in arg2")
+    (occurs-check "symbol --> boolean" "Receives either + or - and enables/disables occur checking in Prolog,    datatype definitions and rule closures.   The default is +.")
+    (opaque "symbol --> symbol" "Applied to a Lisp macro makes it opaque to Qi.")
+    (or "boolean -->  (boolean --> boolean)" "Boolean or.")
+    (output "string A1 - An --> string" "A special form: takes a string followed by n (n --> 0) well-typed expressions; prints a message to the screen and returns an object of type string (the string \"done\").")
+    (preclude "(list symbol) --> (list symbol)" "Removes the mentioned datatype theories and synonyms from use in type checking.")
+    (preclude-all-but "(list symbol) --> (list symbol)" "Removes all the datatype theories and synonyms from use in type checking apart from the ones given.")
+    (print "A --> A" "Takes an object and prints it, returning it as a result.")
+    (profile "(A --> B) --> (A --> B)" "Takes a function represented by a function name and inserts profiling code returning the function as an output.")
+    (profile-results "A --> symbol" "The input is ignored.  Returns a list of profiled functions and their     timings since  profile-results was last used.")
+    (ps "_" "Receives a symbol  denoting a Qi function and prints the Lisp source    code associated with the function.")
+    (put nil "puts value of arg3 as property arg2 in object arg1")
+    (put-array "(array A) --> (list number) --> A --> A" "3-place function that takes an array of elements of type A, an index to that array as a list of natural numbers and an expression E of type A.  The normal form of E is stored at that index and then returned.")
+    (put-prop "_" "3-place function that takes a symbol S, a pointer P (a string symbol or number), and an expression E. The pointer P is set to point from S to the normal form of E which is then returned.")
+    (quit "_" "0-place function that exits Qi.")
+    (random "number --> number" "Given a positive number n, generates a random number between 0 and    n-1.")
+    (rational\? "A --> boolean" "Recognisor for rational numbers.")
+    (read nil nil)
+    (read-char "A --> character" "The input is discarded and the character typed by the user is returned.")
+    (read-chars-as-stringlist "(list character) --> (character -->  boolean) -->  (list string)" "Returns a list of strings whose components are taken from the character list. The second input acts as a tokeniser.  Thus (read-chars-as-stringlist [#\\H #\\i #\\Space #\\P #\\a #\\t]  (/. X (= X #\\Space))) will produce [\"Hi\" \"Pat\"].")
+    (read-file "string --> (list unit)" "Returns the contents of an ASCII file designated by a string.  Returns a list of units,  where unit is an unspecified type.")
+    (read-file-as-charlist "string --> (list character)" "Returns the list of characters from the contents of an ASCII file designated by a string.")
+    (read-file-as-string nil nil)
+    (real\? "A --> boolean" "Recognisor for real numbers.")
+    (remove "A --> (list A) --> (list A)" "Removes all occurrences of an element from a list.")
+    (return nil nil)
+    (reverse "(list A)--> ?(list A)" "Reverses a list.")
+    (round "number--> ?number" "Rounds a number.")
+    (save "_" "0 place function. Saves a Qi image.")
+    (snd "(A * B) --> B" "Returns the second element of a tuple.")
+    (specialise "symbol --> symbol" "Receives the name of a function and turns it into a special form. Special forms are not curried during evaluation or compilation.")
+    (speed "number --> number" "Receives a value 0 to 3 and sets the performance of the generated Lisp code, returning its input.  0 is the lowest setting.")
+    (spy "symbol --> boolean" "Receives either + or - and respectively enables/disables tracing the    operation of T*.")
+    (sqrt "number --> number" "Returns the square root of a number.")
+    (step "symbol --> boolean" "Receives either + or - and enables/disables stepping in the trace.")
+    (stinput nil nil)
+    (string\? "A --> boolean" "Recognisor for strings.")
+    (strong-warning "symbol --> boolean" "Takes + or -; if + then warnings are treated as error messages.")
+    (subst nil nil)
+    (sugar "symbol --> (A --> B) --> number --> (A --> B)" "Receives either in or out as first argument, a function f and an integer    greater than 0 and returns f as a result.  The function f is placed on the    sugaring list at a position determined by the number.")
+    (sugar-list "symbol --> (list symbol)" "Receives either in or out as first argument, and returns the list of sugar    functions.")
+    (sum nil "sum a list of numbers")
+    (symbol\? "A --> boolean" "Recognisor for symbols.")
+    (systemf nil nil)
+    (tail "(list A) --> (list A)" "Returns all but the first element of a non-empty list.")
+    (tc "symbol --> boolean" "Receives either + or - and respectively enables/disables static typing.")
+    (tc\? nil "return true if type checking")
+    (thaw "(lazy A) --> A" "Receives a frozen input and evaluates it to get the unthawed result..")
+    (time "A --> A" "Prints the run time for the evaluation of its input and returns its normal form.")
+    (tlv nil nil)
+    (track "symbol --> symbol" "Tracks the I/O behaviour of a function.")
+    (transparent "symbol --> symbol" "Applied to a Lisp macro makes it transparent to Qi.")
+    (tuple\? "A --> boolean" "Recognisor for tuples.")
+    (type "_" "Returns a type for its input (if any) or false if the input has no type.")
+    (unassoc-type "symbol --> symbol" "Removes any associations with the Qi type in the type association table.")
+    (undebug "A --> string" "The input is ignored, undebugging is returned and all terminal output is closed to the file debug.txt.")
+    (unify nil nil)
+    (unify! nil nil)
+    (union "(list A) --> (list A) --> (list A)" "Forms the union of two lists.")
+    (unprofile "(A --> B) --> (A --> B)" "Unprofiles a function.")
+    (unspecialise "symbol --> symbol" "Receives the name of a function and deletes its special form status.")
+    (unsugar "symbol --> (A --> B) --> (A --> B)" "Receives either out or in and the name of a function and removes its status as a sugar function.")
+    (untrack "symbol --> symbol" "Untracks a function.")
+    (value "_" "Applied to a symbol, returns the global value assigned to it.")
+    (variable\? "A --> boolean" "Applied to a variable, returns true.")
+    (vector nil nil)
+    (vector-> nil nil)
+    (vector\? nil nil)
+    (version "string --> string" "Changes the version string displayed on startup.")
+    (warn "string --> string" "Prints the string as a warning and returns \"done\".  See strong-warning")
+    (write-to-file "string --> A --> string" "Writes the second input into a file named in the first input. If the file does not exist, it is created, else it is overwritten. If the second input is a string then it is written to the file without the enclosing quotes.  The first input is returned.")
+    (y-or-n\? "string --> boolean" "Prints the string as a question and returns true for y and false for n."))
+  "Shen functions taken largely from the Qi documentation by Dr. Mark Tarver."))
+
+\f
+;;; Fontification
+(defconst shen-font-lock-keywords
+  (eval-when-compile
+    `(;; definitions
+      (,(concat "(\\("
+                (regexp-opt
+                 '("define" "defmacro" "defprolog" "/." "synonyms" "defcc"))
+                "\\)\\>"
+                "[ \t]*(?"
+                "\\(\\sw+\\)?")
+       (1 font-lock-keyword-face)
+       (2 font-lock-function-name-face nil t))
+      ("(\\(lambda\\)\\>[ \t]*(?\\(\\sw+\\)?"
+       (1 font-lock-keyword-face)
+       (2 font-lock-variable-name-face nil t))
+      ;; data types
+      ("(\\(datatype\\)\\>[ \t]*(?\\(\\sw+\\)?"
+       (1 font-lock-keyword-face)
+       (2 font-lock-type-face nil t))
+      ;; variables
+      ("\\<\\([A-Z]\\w*\\)\\>" . font-lock-variable-name-face)
+      ;; control structures
+      (,(concat
+         "("
+         (regexp-opt
+          (append
+           '("let" "=" "eval-without-reader-macros" "freeze" "type") ; generic
+           '("if" "and" "or" "cond")) t) ; boolean
+         "\\>") . 1)
+      ;; errors
+      ("(\\(error\\)\\>" 1 font-lock-warning-face)
+      ;; built-in
+      (,(concat
+         "("
+         (regexp-opt
+          (mapcar
+           (lambda (it) (format "%s" it))
+           (append
+            '(intern function)                          ; symbols
+            '(pos tlstr cn str string?)                 ; strings
+            '(set value)                                ; assignment
+            '(cons hd tl cons?)                         ; lists
+            '(absvector address-> <-address absvector?) ; vector
+            '(pr read-byte open close)                  ; stream
+            '(get-time)                                 ; time
+            '(+ - * / > < >= <= number?)                ; arithmetic
+            '(fst snd tupple?)                          ; tuple
+            '(@s @v @p)
+            '(put get)                  ; property lists
+            '(simple-error trap-error error-to-string) ; error
+            ;; predicates
+            (mapcar
+             (lambda (it) (format "%s?" it))
+             '(boolean character complex congruent cons element empty float
+                       integer number provable rational solved string symbol
+                       tuple variable))
+            ;; misc functions
+            (mapcar #'car shen-functions)))
+          t)
+         "\\>")
+       1 font-lock-builtin-face)
+      ;; external global variables
+      (,(concat
+         (regexp-opt
+          (mapcar
+           (lambda (cnst) (format "*%s*" cnst))
+           '("language" "implementation" "port" "porters"
+             "stinput" "home-directory" "version"
+             "maximum-print-sequence-size" "printer" "macros")) t)
+         "\\>")
+       1 font-lock-builtin-face)))
+  "Default expressions to highlight in Shen mode.")
+
+(defvar shen-mode-syntax-table
+  (let ((table (make-syntax-table)))
+    (dolist (pair '((?@  . "w")
+                    (?_  . "w")
+                    (?-  . "w")
+                    (?+  . "w")
+                    (??  . "w")
+                    (?!  . "w")
+                    (?<  . "w")
+                    (?>  . "w")
+                    (?/  . "w")
+                    ;; comment delimiters
+                    (?\\ . ". 14")
+                    (?*  . ". 23")))
+      (modify-syntax-entry (car pair) (cdr pair) table))
+    table)
+  "Syntax table to use in shen-mode.")
+
+\f
+;;; Indentation
+;; Copied from qi-mode, which in turn is from scheme-mode and from lisp-mode
+(defun shen-indent-function (indent-point state)
+  (let ((normal-indent (current-column)))
+    (goto-char (1+ (elt state 1)))
+    (parse-partial-sexp (point) calculate-lisp-indent-last-sexp 0 t)
+    (if (and (elt state 2)
+             (not (looking-at "\\sw\\|\\s_")))
+      ;; car of form doesn't seem to be a symbol
+      (progn
+        (if (not (> (save-excursion (forward-line 1) (point))
+                    calculate-lisp-indent-last-sexp))
+          (progn (goto-char calculate-lisp-indent-last-sexp)
+                 (beginning-of-line)
+                 (parse-partial-sexp (point)
+                                     calculate-lisp-indent-last-sexp 0 t)))
+        ;; Indent under the list or under the first sexp on the same
+        ;; line as calculate-lisp-indent-last-sexp.  Note that first
+        ;; thing on that line has to be complete sexp since we are
+        ;; inside the innermost containing sexp.
+        (backward-prefix-chars)
+        (current-column))
+      (let ((function (buffer-substring (point)
+                                       (progn (forward-sexp 1) (point))))
+           method)
+       (setq method (or (get (intern-soft function) 'shen-indent-function)
+                        (get (intern-soft function) 'shen-indent-hook)))
+       (cond ((or (eq method 'defun)
+                  (and (null method)
+                       (> (length function) 3)
+                       (string-match "\\`def" function)))
+              (lisp-indent-defform state indent-point))
+             ((integerp method)
+              (lisp-indent-specform method state
+                                    indent-point normal-indent))
+             (method
+               (funcall method state indent-point normal-indent)))))))
+
+(defun shen-let-indent (state indent-point normal-indent)
+  (let ((edge (- (current-column) 2)))
+    (goto-char indent-point) (skip-chars-forward " \t")
+    (if (looking-at "[-a-zA-Z0-9+*/?!@$%^&_:~]")
+        ;; deeper indent because we're still defining local variables
+        (lisp-indent-specform 5 state indent-point normal-indent)
+      ;; shallow indent because we're in the body
+      edge)))
+
+(defun shen-package-indent (_state _indent-point _normal-indent)
+  (- (current-column) 8))
+
+(put 'let 'shen-indent-function 'shen-let-indent)
+(put 'lambda 'shen-indent-function 1)
+(put 'package 'shen-indent-function 'shen-package-indent)
+(put 'datatype 'shen-indent-function 1)
+
+\f
+;;; Function documentation
+(defun shen-current-function ()
+  (ignore-errors
+    (save-excursion
+      (backward-up-list)
+      (forward-char 1)
+      (thing-at-point 'word))))
+
+(defun shen-mode-eldoc ()
+  (let ((func (assoc (intern (or (shen-current-function) "")) shen-functions)))
+    (when func
+      (format "%s%s:%s"
+              (propertize (symbol-name (car func))
+                          'face 'font-lock-function-name-face)
+              (if (cadr func)  (concat "[" (cadr func) "]") "")
+              (if (caddr func) (concat " " (caddr func)) "")))))
+
+(defvar shen-imenu-generic-expression
+  '(("Functions" "^\\s-*(\\(define\\)" 1)))
+
+\f
+;;; Major mode definition
+;; apparently some versions of Emacs don't have `prog-mode' defined
+(unless (fboundp 'prog-mode)
+  (defalias 'prog-mode 'fundamental-mode))
+
+;;;###autoload
+(define-derived-mode shen-mode prog-mode "shen"
+  "Major mode for editing Shen code."
+  :syntax-table shen-mode-syntax-table
+  ;; Set a variety of local variables.
+  (dolist (pair `((adaptive-fill-mode . nil)
+                  (fill-paragraph-function . lisp-fill-paragraph)
+                  (indent-line-function . lisp-indent-line)
+                  (lisp-indent-function . shen-indent-function)
+                  (parse-sexp-ignore-comments . t)
+                  (comment-start . "\\* ")
+                  (comment-end . " *\\")
+                  (comment-add . 0)
+                  (comment-column . 32)
+                  (parse-sexp-ignore-comments . t)
+                  (comment-use-global-state . nil)
+                  (comment-multi-line . t)
+                  (eldoc-documentation-function . shen-mode-eldoc)
+                  (imenu-case-fold-search . t)
+                  (imenu-generic-expression . ,shen-imenu-generic-expression)
+                  (mode-name . "Shen")
+                  (font-lock-defaults . (shen-font-lock-keywords))))
+    (set (make-local-variable (car pair)) (cdr pair))))
+
+;;;###autoload
+(add-to-list 'auto-mode-alist '("\\.shen\\'" . shen-mode))
+
+(provide 'shen-mode)
+;;; shen-mode.el ends here
diff --git a/packages/sisu-mode/sisu-mode.el b/packages/sisu-mode/sisu-mode.el
new file mode 100644 (file)
index 0000000..9d287f1
--- /dev/null
@@ -0,0 +1,371 @@
+;;; sisu-mode.el --- Major mode for SiSU markup text
+
+;; Copyright (C) 2011  Free Software Foundation, Inc.
+
+;; Author: Ambrose Kofi Laing (& Ralph Amissah)
+;; Keywords: text, processes, tools
+;; Version: 3.0.3
+;; License: GPLv3
+;; Home URL: SiSU:   http://www.jus.uio.no/sisu
+;; originally looked at (based on) doc-mode, with kind permission of the author
+;;   Author: SUN, Tong <suntong001@users.sf.net>, (c)2001-6, all right reserved
+;;   Version: $Date: 2006/01/19 03:13:41 $ $Revision: 1.14 $
+;;   Home URL: http://xpt.sourceforge.net/
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;; Viva Software Libre!
+;; Support the free software movement!
+;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;; Commentary:
+
+;; SiSU (http://www.sisudoc.org/) is a document structuring and
+;; publishing framework.  This package provides an Emacs major mode
+;; for SiSU markup.
+
+;; When this package is installed, files ending in ".sisu" are
+;; automatically associated with sisu-mode.  If a file doesn't have a
+;; .sisu extension, add a first line:
+;; # -*- Sisu -*-
+
+;; The documentation for the "Structure Of The Hierarchy Text" can be
+;; found in the sisustring for the sisu-mode function.
+
+;;; Code:
+
+;;{{{ Variables:
+
+(defgroup sisu-faces nil
+  "AsciiSisu highlighting"
+  :group 'sisus)
+
+;; == Colors
+; color n is more prominent than color n+1
+
+(defface sisu-title-1-face
+  `((((class color)
+      (background dark))
+     (:foreground "brown3" :bold t :height 1.2 :inherit variable-pitch))
+    (((class color)
+      (background light))
+     (:foreground "brown3" :bold t :height 1.2 :inherit variable-pitch))
+    (t (:weight bold :inherit variable-pitch)))
+  "Face for AsciiSisu titles at level 1."
+  :group 'sisu-faces)
+
+(defface sisu-title-2-face
+  `((((class color)
+      (background dark))
+     (:foreground "yellow4" :bold t :height 1.1 :inherit variable-pitch))
+    (((class color)
+      (background light))
+     (:foreground "yellow4" :bold t :height 1.1 :inherit variable-pitch))
+    (t (:weight bold :inherit variable-pitch)))
+  "Face for AsciiSisu titles at level 2."
+  :group 'sisu-faces)
+
+(defface sisu-title-3-face
+  `((((class color)
+      (background dark))
+     (:foreground "sienna3" :bold t))
+    (((class color)
+      (background light))
+     (:foreground "sienna3" :bold t))
+    (t (:weight bold)))
+  "Face for AsciiSisu titles at level 3."
+  :group 'sisu-faces)
+
+(defface sisu-title-4-face
+  `((((class color)
+      (background dark))
+     (:foreground "burlywood3"))
+    (((class color)
+      (background light))
+     (:foreground "burlywood3"))
+    (t ()))
+  "Face for AsciiSisu titles at level 4."
+  :group 'sisu-faces)
+
+(defface info-node
+  '((((class color) (background light)) (:foreground "brown" :bold t :italic t))
+    (((class color) (background dark)) (:foreground "white" :bold t :italic t))
+    (t (:bold t :italic t)))
+  "Face for Info node names."
+  :group 'sisu-faces)
+
+(defvar sisu-title-1 'sisu-title-1-face)
+(defvar sisu-title-2 'sisu-title-2-face)
+(defvar sisu-title-3 'sisu-title-3-face)
+(defvar sisu-title-4 'sisu-title-4-face)
+
+(defvar general-font-lock-red1 font-lock-warning-face)
+(defvar general-font-lock-red2 font-lock-comment-face)
+(defvar general-font-lock-red3 font-lock-string-face)
+
+(defvar general-font-lock-green1 font-lock-type-face)
+(defvar general-font-lock-green2 font-lock-constant-face)
+
+(defvar general-font-lock-blue1 font-lock-keyword-face)
+(defvar general-font-lock-blue2 font-lock-function-name-face)
+(defvar general-font-lock-blue3 font-lock-builtin-face)
+
+(defvar general-font-lock-yellow1 font-lock-variable-name-face)
+(defvar general-font-lock-yellow2 font-lock-comment-face)
+
+;; == sisu-mode settings
+
+(defvar sisu-mode-hook nil
+  "Normal hook run when entering Sisu Text mode.")
+
+(defvar sisu-mode-abbrev-table nil
+  "Abbrev table in use in Sisu-mode buffers.")
+(define-abbrev-table 'sisu-mode-abbrev-table ())
+
+(defconst sisu-font-lock-keywords
+  (eval-when-compile
+    (list
+
+     ;;grouped text
+     (cons "^group\{\\|^\}group"       'general-font-lock-red2)
+     (cons "^block\{\\|^\}block"       'general-font-lock-red2)
+     (cons "^code\{\\|^\}code"         'general-font-lock-red2)
+     (cons "^poem\{\\|^\}poem"         'general-font-lock-red2)
+     (cons "^alt\{\\|^\}alt"           'general-font-lock-red2)
+     (cons "^table\{.+\\|^\}table"     'general-font-lock-red2)
+     (cons "^\{table[^}]+\}"           'general-font-lock-red2)
+
+     ;; footnote/endnote
+       ;(cons "\~\{.+?\}\~"  'general-font-lock-green1)
+     (cons "\~\{\\*\\*\\|\~\{\\*\\|\~\{\\|\}\~"   'general-font-lock-red2)
+     (cons "\~\\[\\+\\|\~\\[\\*\\|\~\\[\\|\\]\~"  'general-font-lock-red2)
+
+     (cons "\~\\^ \\|^\\^\~ " 'general-font-lock-red2)
+
+     (list (concat
+      "\\(\*\~\\)"
+      "\\([^ \r\t\n]+\\)")
+     '(1 general-font-lock-red1 t)
+     '(2 general-font-lock-blue2 t))
+
+     ;; emphasis (can be program configured to be bold italics or underscore)
+     (list (concat
+      "\\([*]\{\\)"
+      "\\([^\}]+\\)"
+      "\\(\}[*]\\)")
+     '(1 general-font-lock-red1 t)
+     '(2 general-font-lock-red1 t)
+     '(3 general-font-lock-red1 t))
+
+     ;; bold
+     (list (concat
+      "\\([!]\{\\)"
+      "\\([^\}]+\\)"
+      "\\(\}[!]\\)")
+     '(1 general-font-lock-red1 t)
+     '(2 general-font-lock-red1 t)
+     '(3 general-font-lock-red1 t))
+     (cons "\\*[^ ]+\\*"               'general-font-lock-red1)
+     (cons "^!_ .+"                    'general-font-lock-red1)
+
+     ;;; italics
+     (list (concat
+      "\\([/]\{\\)"
+      "\\([^\}]+\\)"
+      "\\(\}[/]\\)")
+     '(1 general-font-lock-red1 t)
+     '(2 general-font-lock-blue1 t)
+           '(3 general-font-lock-red1 t))
+
+     ;; underscore
+     (list (concat
+      "\\([_]\{\\)"
+      "\\([^\}]+\\)"
+      "\\(\}[_]\\)")
+     '(1 general-font-lock-red1 t)
+     '(2 general-font-lock-red1 t)
+           '(3 general-font-lock-red1 t))
+
+     ;; monospace
+     (list (concat
+      "\\([#]\{\\)"
+      "\\([^\}]+\\)"
+      "\\(\}[#]\\)")
+     '(1 general-font-lock-red1 t)
+     '(2 general-font-lock-red1 t)
+           '(3 general-font-lock-red1 t))
+
+     ;; citation
+     (list (concat
+      "\\([\"]\{\\)"
+      "\\([^\}]+\\)"
+      "\\(\}[\"]\\)")
+     '(1 general-font-lock-red1 t)
+     '(2 general-font-lock-red1 t)
+           '(3 general-font-lock-red1 t))
+
+     ;; inserted text
+     (list (concat
+      "\\([\+]\{\\)"
+      "\\([^\}]+\\)"
+      "\\(\}[\+]\\)")
+     '(1 general-font-lock-red1 t)
+     '(2 general-font-lock-red1 t)
+           '(3 general-font-lock-red1 t))
+
+     ;; strike through
+     (list (concat
+      "\\(\\-\{\\)"
+      "\\([^\}]+\\)"
+      "\\(\}\\-\\)")
+     '(1 general-font-lock-red1 t)
+     '(2 general-font-lock-red1 t)
+           '(3 general-font-lock-red1 t))
+
+     ;; superscript
+     (list (concat
+      "\\(\\^\{\\)"
+      "\\([^\}]+\\)"
+      "\\(\}\\^\\)")
+     '(1 general-font-lock-red1 t)
+     '(2 general-font-lock-red1 t)
+           '(3 general-font-lock-red1 t))
+
+     ;; subscript
+     (list (concat
+      "\\([,]\{\\)"
+      "\\([^\}]+\\)"
+      "\\(\}[,]\\)")
+     '(1 general-font-lock-red1 t)
+     '(2 general-font-lock-red1 t)
+           '(3 general-font-lock-red1 t))
+
+     ;;numbered list
+     (cons "^# \\|^_# "                'general-font-lock-red1)
+
+     ;;bullet text
+     (cons "^_\\*[1-9] \\|^_\\* "      'general-font-lock-red1)
+
+     ;;indented text
+     (cons "^_[1-9] "                  'general-font-lock-red1)
+
+     ;;url
+     (cons "\\(^\\|[ ]\\)http:[/][/][^ \t\n\r<]+" 'general-font-lock-blue2)
+
+;; \\|\$
+
+     ;; Comment Lines
+     (cons "^% .*"                     'general-font-lock-blue1)
+     ;; line break
+     (cons "<br>"                      'general-font-lock-red1)
+
+     ;; Section titles
+     (list "^\\(\\([1-8]\\|:?[A-C]\\)\\~\\)\\(.*\\)"
+     '(1 sisu-title-1 t)
+     '(3 sisu-title-2 t))
+
+     ;; hyper-links
+     (list (concat
+      "\\(\{~^\\|\{\\)"
+      "\\([^\}\{]+\\)"
+      "\\(\}http:[/][/][^ \r\n\t<]+\\)")
+     '(1 general-font-lock-blue2 t)
+     '(2 general-font-lock-red1 t)
+     '(3 general-font-lock-blue2 t))
+
+     ;; book index
+     (cons "^\=\{.+\}"                 'general-font-lock-green1)
+
+     ;; numbers
+     (cons "\\<[.0-9]+\\>"             'general-font-lock-green2)
+
+     ;; bullets sisu_normal (nearly copied regexp)
+     (cons "^_\\([1-9*]\\|[1-9]\\*\\) " 'general-font-lock-blue2)
+
+     ;; image links
+     (list (concat
+      "\\(\{\\)"
+      "\\([^\}\{]+\\)"
+      "\\(\}image\\)")
+     '(1 general-font-lock-blue2 t)
+     '(2 general-font-lock-red1 t)
+           '(3 general-font-lock-blue2 t))
+
+     ;; insert file links
+     (list (concat
+      "\\(<< \\)"
+      "\\([^ \r\t\n]+\\.ss\\)"
+      "\\(i\\|t\\)")
+     '(1 general-font-lock-blue2 t)
+     '(2 general-font-lock-blue2 t)
+           '(3 general-font-lock-blue2 t))
+
+     ;; raw keywords
+     (list (concat
+      "^\\(\\@\\("
+      "title\\|"
+      "creator\\|"
+      "date\\|"
+      "publisher\\|"
+      "rights\\|"
+      "classify\\|"
+      "original\\|"
+      "notes\\|"
+      "links\\|"
+      "make\\|"
+      "\\):\\)\\(.*\\)")
+     '(1 sisu-title-2 keep)
+     '(3 sisu-title-3 keep))
+
+     ))
+ "Default expressions to highlight in AsciiSisu mode.")
+
+;;}}}
+
+;;{{{ Sisu & Autoload:
+
+;;;###autoload
+(define-derived-mode sisu-mode text-mode "SiSU"
+  "Major mode for editing SiSU files.
+SiSU (http://www.sisudoc.org/) is a document structuring and
+publishing framework.  This major mode handles SiSU markup."
+  (modify-syntax-entry ?\'  ".")
+  ;(flyspell-mode nil)
+
+  (make-local-variable 'paragraph-start)
+  (setq paragraph-start (concat "$\\|>" page-delimiter))
+  (make-local-variable 'paragraph-separate)
+  (setq paragraph-separate paragraph-start)
+  (make-local-variable 'paragraph-ignore-fill-prefix)
+  (setq paragraph-ignore-fill-prefix t)
+
+  (make-local-variable 'require-final-newline)
+  (setq require-final-newline t)
+
+  (make-local-variable 'font-lock-defaults)
+  (setq font-lock-defaults
+  '(sisu-font-lock-keywords
+    nil        ; KEYWORDS-ONLY: no
+    nil        ; CASE-FOLD: no
+    ((?_ . "w"))      ; SYNTAX-ALIST
+    ))
+  (run-hooks 'sisu-mode-hook))
+
+;;;###autoload (add-to-list 'auto-mode-alist '("\\.sisu\\'" . sisu-mode))
+
+(provide 'sisu-mode)
+
+;;}}}
+
+;;; sisu-mode.el ends here
diff --git a/packages/smart-operator/smart-operator.el b/packages/smart-operator/smart-operator.el
new file mode 100644 (file)
index 0000000..68332dd
--- /dev/null
@@ -0,0 +1,355 @@
+;;; smart-operator.el --- Insert operators with surrounding spaces smartly
+
+;; Copyright (C) 2004, 2005, 2007-2013 Free Software Foundation, Inc.
+
+;; Author: William Xu <william.xwl@gmail.com>
+;; Version: 4.0
+;; Url: http://xwl.appspot.com/ref/smart-operator.el
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; This program is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with EMMS; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; Smart Operator mode is a minor mode which automatically inserts
+;; surrounding spaces around operator symbols.  For example, `='
+;; becomes ` = ', `+=' becomes ` += '.  This is most handy for writing
+;; C-style source code.
+;;
+;; Type `M-x smart-operator-mode' to toggle this minor mode.
+
+;;; Acknowledgements
+
+;; Nikolaj Schumacher <n_schumacher@web.de>, for suggesting
+;; reimplementing as a minor mode and providing an initial patch for
+;; that.
+
+;;; Code:
+
+(require 'cc-mode)
+
+;;; smart-operator minor mode
+
+(defvar smart-operator-mode-map
+  (let ((keymap (make-sparse-keymap)))
+    (define-key keymap "=" 'smart-operator-self-insert-command)
+    (define-key keymap "<" 'smart-operator-<)
+    (define-key keymap ">" 'smart-operator->)
+    (define-key keymap "%" 'smart-operator-%)
+    (define-key keymap "+" 'smart-operator-+)
+    (define-key keymap "-" 'smart-operator--)
+    (define-key keymap "*" 'smart-operator-*)
+    (define-key keymap "/" 'smart-operator-/)
+    (define-key keymap "&" 'smart-operator-&)
+    (define-key keymap "|" 'smart-operator-self-insert-command)
+    ;; (define-key keymap "!" 'smart-operator-self-insert-command)
+    (define-key keymap ":" 'smart-operator-:)
+    (define-key keymap "?" 'smart-operator-?)
+    (define-key keymap "," 'smart-operator-\,)
+    (define-key keymap "~" 'smart-operator-~)
+    (define-key keymap "." 'smart-operator-.)
+    keymap)
+  "Keymap used my `smart-operator-mode'.")
+
+(defvar smart-operator-double-space-docs t
+  "Enable double spacing of . in document lines - e,g, type '.' => get '.  '")
+
+(defvar smart-operator-docs t
+  "Enable smart-operator in strings and comments")
+
+;;;###autoload
+(define-minor-mode smart-operator-mode
+  "Insert operators with surrounding spaces smartly."
+  nil " _+_" smart-operator-mode-map)
+
+;;;###autoload
+(defun smart-operator-mode-on ()
+  "Turn on `smart-operator-mode'.  "
+  (smart-operator-mode 1))
+
+;;;###autoload
+(defun smart-operator-self-insert-command (arg)
+  "Insert the entered operator plus surrounding spaces."
+  (interactive "p")
+  (smart-operator-insert (string last-command-event)))
+
+(defvar smart-operator-list
+  '("=" "<" ">" "%" "+" "-" "*" "/" "&" "|" "!" ":" "?" "," "."))
+
+(defun smart-operator-insert (op &optional only-where)
+  "See `smart-operator-insert-1'."
+  (delete-horizontal-space)
+  (cond ((and (smart-operator-lispy-mode?)
+           (not (smart-operator-document-line?)))
+         (smart-operator-lispy op))
+        ((not smart-operator-docs)
+         (smart-operator-insert-1 op 'middle))
+        (t
+         (smart-operator-insert-1 op only-where))))
+
+(defun smart-operator-insert-1 (op &optional only-where)
+  "Insert operator OP with surrounding spaces.
+e.g., `=' becomes ` = ', `+=' becomes ` += '.
+
+When `only-where' is 'after, we will insert space at back only;
+when `only-where' is 'before, we will insert space at front only;
+when `only-where' is 'middle, we will not insert space."
+  (pcase only-where
+    (`before (insert " " op))
+    (`middle (insert op))
+    (`after (insert op " "))
+    (_
+     (let ((begin? (bolp)))
+       (unless (or (looking-back (regexp-opt smart-operator-list)
+                                 (line-beginning-position))
+                   begin?)
+         (insert " "))
+       (insert op " ")
+       (when begin?
+         (indent-according-to-mode))))))
+
+(defun smart-operator-c-types ()
+  (concat c-primitive-type-key "?"))
+
+(defun smart-operator-document-line? ()
+  (memq (syntax-ppss-context (syntax-ppss)) '(comment string)))
+
+(defun smart-operator-lispy-mode? ()
+  (memq major-mode '(emacs-lisp-mode
+                     lisp-mode
+                     lisp-interaction-mode
+                     scheme-mode)))
+
+(defun smart-operator-lispy (op)
+  "We're in a Lisp-ish mode, so let's look for parenthesis.
+Meanwhile, if not found after ( operators are more likely to be function names,
+so let's not get too insert-happy."
+  (cond
+   ((save-excursion
+      (backward-char 1)
+      (looking-at "("))
+    (if (equal op ",")
+        (smart-operator-insert-1 op 'middle)
+      (smart-operator-insert-1 op 'after)))
+   ((equal op ",")
+    (smart-operator-insert-1 op 'before))
+   (t
+    (smart-operator-insert-1 op 'middle))))
+
+\f
+;;; Fine Tunings
+
+(defun smart-operator-< ()
+  "See `smart-operator-insert'."
+  (interactive)
+  (cond
+   ((or (and c-buffer-is-cc-mode
+             (looking-back
+              (concat "\\("
+                      (regexp-opt
+                       '("#include" "vector" "deque" "list" "map" "stack"
+                          "multimap" "set" "hash_map" "iterator" "template"
+                          "pair" "auto_ptr" "static_cast"
+                          "dynmaic_cast" "const_cast" "reintepret_cast"
+
+                          "#import"))
+                      "\\)\\ *")
+              (line-beginning-position)))
+        (eq major-mode 'sgml-mode))
+    (insert "<>")
+    (backward-char))
+   (t
+    (smart-operator-insert "<"))))
+
+(defun smart-operator-: ()
+  "See `smart-operator-insert'."
+  (interactive)
+  (cond (c-buffer-is-cc-mode
+         (if (looking-back "\\?.+")
+             (smart-operator-insert ":")
+           (smart-operator-insert ":" 'middle)))
+        ((memq major-mode '(haskell-mode))
+         (smart-operator-insert ":"))
+        (t
+         (smart-operator-insert ":" 'after))))
+
+(defun smart-operator-\, ()
+  "See `smart-operator-insert'."
+  (interactive)
+  (smart-operator-insert "," 'after))
+
+(defun smart-operator-. ()
+  "See `smart-operator-insert'."
+  (interactive)
+  (cond ((and smart-operator-double-space-docs
+          (smart-operator-document-line?))
+         (smart-operator-insert "." 'after)
+         (insert " "))
+        ((or (looking-back "[0-9]")
+             (or (and c-buffer-is-cc-mode
+                      (looking-back "[a-z]"))
+                 (and
+                  (memq major-mode '(python-mode ruby-mode))
+                  (looking-back "[a-z\)]"))
+                 (and
+                  (memq major-mode '(js-mode js2-mode))
+                  (looking-back "[a-z\)$]"))))
+             (insert "."))
+        ((memq major-mode '(cperl-mode perl-mode ruby-mode))
+         ;; Check for the .. range operator
+         (if (looking-back ".")
+               (insert ".")
+           (insert " . ")))
+        (t
+         (smart-operator-insert "." 'after)
+         (insert " "))))
+
+(defun smart-operator-& ()
+  "See `smart-operator-insert'."
+  (interactive)
+  (cond (c-buffer-is-cc-mode
+         ;; ,----[ cases ]
+         ;; | char &a = b; // FIXME
+         ;; | void foo(const int& a);
+         ;; | char *a = &b;
+         ;; | int c = a & b;
+         ;; | a && b;
+         ;; `----
+         (cond ((looking-back (concat (smart-operator-c-types) " *" ))
+                (smart-operator-insert "&" 'after))
+               ((looking-back "= *")
+                (smart-operator-insert "&" 'before))
+               (t
+                (smart-operator-insert "&"))))
+        (t
+         (smart-operator-insert "&"))))
+
+(defun smart-operator-* ()
+  "See `smart-operator-insert'."
+  (interactive)
+  (cond (c-buffer-is-cc-mode
+         ;; ,----
+         ;; | a * b;
+         ;; | char *a;
+         ;; | char **b;
+         ;; | (*a)->func();
+         ;; | *p++;
+         ;; | *a = *b;
+         ;; `----
+         (cond ((looking-back (concat (smart-operator-c-types) " *" ))
+                (smart-operator-insert "*" 'before))
+               ((looking-back "\\* *")
+                (smart-operator-insert "*" 'middle))
+               ((looking-back "^[ (]*")
+                (smart-operator-insert "*" 'middle)
+                (indent-according-to-mode))
+               ((looking-back "= *")
+                (smart-operator-insert "*" 'before))
+               (t
+                (smart-operator-insert "*"))))
+        (t
+         (smart-operator-insert "*"))))
+
+(defun smart-operator-> ()
+  "See `smart-operator-insert'."
+  (interactive)
+  (cond ((and c-buffer-is-cc-mode (looking-back " - "))
+         (delete-char -3)
+         (insert "->"))
+        (t
+         (smart-operator-insert ">"))))
+
+(defun smart-operator-+ ()
+  "See `smart-operator-insert'."
+  (interactive)
+  (cond ((and c-buffer-is-cc-mode (looking-back "\\+ *"))
+         (when (looking-back "[a-zA-Z0-9_] +\\+ *")
+           (save-excursion
+             (backward-char 2)
+             (delete-horizontal-space)))
+         (smart-operator-insert "+" 'middle)
+         (indent-according-to-mode))
+        (t
+         (smart-operator-insert "+"))))
+
+(defun smart-operator-- ()
+  "See `smart-operator-insert'."
+  (interactive)
+  (cond ((and c-buffer-is-cc-mode (looking-back "\\- *"))
+         (when (looking-back "[a-zA-Z0-9_] +\\- *")
+           (save-excursion
+             (backward-char 2)
+             (delete-horizontal-space)))
+         (smart-operator-insert "-" 'middle)
+         (indent-according-to-mode))
+        (t
+         (smart-operator-insert "-"))))
+
+(defun smart-operator-? ()
+  "See `smart-operator-insert'."
+  (interactive)
+  (cond (c-buffer-is-cc-mode
+         (smart-operator-insert "?"))
+        (t
+         (smart-operator-insert "?" 'after))))
+
+(defun smart-operator-% ()
+  "See `smart-operator-insert'."
+  (interactive)
+  (cond (c-buffer-is-cc-mode
+         ;; ,----
+         ;; | a % b;
+         ;; | printf("%d %d\n", a % b);
+         ;; `----
+         (if (and (looking-back "\".*")
+                  (not (looking-back "\",.*")))
+             (insert "%")
+           (smart-operator-insert "%")))
+        ;; If this is a comment or string, we most likely
+        ;; want no spaces - probably string formatting
+        ((and (memq major-mode '(python-mode))
+                    (smart-operator-document-line?))
+               (insert "%"))
+        (t
+         (smart-operator-insert "%"))))
+
+(defun smart-operator-~ ()
+  "See `smart-operator-insert'."
+  (interactive)
+  ;; First class regex operator =~ langs
+  (cond ((memq major-mode '(ruby-mode perl-mode cperl-mode))
+         (if (looking-back "= ")
+             (progn
+               (delete-char -2)
+               (insert "=~ "))
+           (insert "~")))
+        (t
+         (insert "~"))))
+
+(defun smart-operator-/ ()
+  "See `smart-operator-insert'."
+  (interactive)
+  ;; *nix shebangs #!
+  (cond ((and (eq 1 (line-number-at-pos))
+              (save-excursion
+                (move-beginning-of-line nil)
+                (looking-at "#!")))
+         (insert "/"))
+        (t
+         (smart-operator-insert "/"))))
+
+(provide 'smart-operator)
+
+;;; smart-operator.el ends here
diff --git a/packages/sml-mode/README b/packages/sml-mode/README
new file mode 100644 (file)
index 0000000..9632487
--- /dev/null
@@ -0,0 +1,19 @@
+SML-MODE is a major Emacs mode for editing Standard ML.
+It provides syntax highlighting and automatic indentation and
+comes with sml-proc which allows interaction with an inferior SML
+interactive loop.
+
+This release should work on any recent version of Emacs or XEmacs.
+If it doesn't: complain.
+
+Some more or less out of date documentation can be found in TeXinfo format.
+
+Check the INSTALL file for installation instructions.
+Check the NEWS file for a list of changes in this version.
+Check the BUGS and TODO file before sending me bug reports and requests for
+enhancements.
+
+Send any complaint/question/praise/ice-cream to me,
+
+
+       Stefan Monnier <monnier@iro.umontreal.ca>
diff --git a/packages/sml-mode/TODO b/packages/sml-mode/TODO
new file mode 100644 (file)
index 0000000..b9c7d34
--- /dev/null
@@ -0,0 +1,46 @@
+* file-name completion in sml-cm-mode.
+
+* Don't always jump to the *sml* buffer when you send a snippet of code.
+
+* Fix inferior-sml-mode's TAB completion of filenames so it doesn't append
+  a space.
+
+* Improve support for MLton's def-use info (see http://mlton.org/Emacs)
+
+* Add an sml-mlb-mode for ML Basis files (see http://mlton.org/Emacs)
+
+* make `M-x sml-compile' more generic.
+
+* allow specifying indentation of dependent keywords (how to indent `in'
+  relative to `let', for example).
+
+* recognize irrefutable patterns (with "Capital"-heuristics, for example:
+  a regexp like "\\([(),]\\|[_a-z][_a-z0-9]*\\)+").
+  This can then be used to allow indenting like
+
+               (fn x =>
+                some expressions)
+
+* take advantage of text after-the-line (when available) for indentation.
+
+* obey fixity directives.
+
+* dangling `case e' in stuff like
+
+  fun myfunction x = case x
+   of bla =>
+    | bli =>
+
+* deal with CPS kind of code ???
+
+  function1 (arg1, arg2, fn v1 =>
+  function2 (arg2, fn v2 =>
+  function3 (arg5, arg3, arg8, fn v3 =>
+  function4 (v1, v2, v3))))
+
+  or even just
+
+  F.LET (v1, foo,
+  F.LET (v2, bar,
+  F.LET (v3, baz,
+  F.RET [v1, v2, v3])))
diff --git a/packages/sml-mode/mltags b/packages/sml-mode/mltags
new file mode 100755 (executable)
index 0000000..606fc4c
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh
+exec etags \
+  --language=none \
+  --regex='/[ \t]*\(exception\|datatype\|type\|val\|and\|fun\|structure\|signature\|functor\) \([A-Za-z_0-9]+\)/\2/' \
+  --regex='/[ \t]*[=|] \([A-Z_]+\)/\1/' \
+  $*
+
+#  --regex='/[ \t]*val [^:]+:[ \t]*\(.*\)/\1/' \
diff --git a/packages/sml-mode/sml-mode.el b/packages/sml-mode/sml-mode.el
new file mode 100644 (file)
index 0000000..aee66ba
--- /dev/null
@@ -0,0 +1,1802 @@
+;;; sml-mode.el --- Major mode for editing (Standard) ML  -*- lexical-binding: t; coding: utf-8 -*-
+
+;; Copyright (C) 1989,1999,2000,2004,2007,2010-2013  Free Software Foundation, Inc.
+
+;; Maintainer: (Stefan Monnier) <monnier@iro.umontreal.ca>
+;; Version: 6.4
+;; Keywords: SML
+;; Author:     Lars Bo Nielsen
+;;             Olin Shivers
+;;             Fritz Knabe (?)
+;;             Steven Gilmore (?)
+;;             Matthew Morley <mjm@scs.leeds.ac.uk>
+;;             Matthias Blume <blume@cs.princeton.edu>
+;;             (Stefan Monnier) <monnier@iro.umontreal.ca>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; A major mode to edit Standard ML (SML) code.
+;; Provides the following features, among others:
+;; - Indentation.
+;; - Syntax highlighting.
+;; - Prettified display of ->, =>, fn, ...
+;; - Imenu.
+;; - which-function-mode.
+;; - Skeletons/templates.
+;; - Electric pipe key.
+;; - outline-minor-mode (with some known problems).
+;; - Interaction with a read-eval-print loop.
+
+;;;; Known bugs:
+
+;; - Indentation after "functor toto() where type foo = bar ="
+;;   Because the last is treated as an equality comparison.
+;; - indentation of a declaration after a long `datatype' can be slow.
+
+;;;; News:
+
+;;;;; Changes since 5.0:
+
+;; - sml-electric-pipe-mode to make the | key electric.
+;; - Removal of a lot of compatibility code.  Requires Emacs-24.
+;; - Integrate in GNU ELPA.
+
+;;;;; Changes since 4.1:
+
+;; - New indentation code using SMIE when available.
+;; - `sml-back-to-outer-indent' is now on S-tab (aka `backtab') rather
+;;   than M-tab.
+;; - Support for electric-layout-mode and electric-indent-mode.
+;; - `sml-mark-defun' tries to be more clever.
+;; - A single file (sml-mode.el) is needed unless you want to use an
+;;   interactive process like SML/NJ, or if your Emacs does not provide SMIE.
+
+;;;;; Changes since 4.0:
+
+;; - Switch to GPLv3+.
+;; - When possible (i.e. running under Emacs>=23), be case-sensitive when
+;;   expanding abbreviations, and don't expand them in comments and strings.
+;; - When you `next-error' to a type error, highlight the actual parts of the
+;;   types that differ.
+;; - Flush the recorded errors not only upon sml-compile and friends, but also
+;;   when typing commands directly at the prompt.
+;; - New command sml-mlton-typecheck.
+;; - Simple support to parse errors and warnings in MLton's output.
+;; - Simple support for MLton's def-use files.
+
+;;;;; Changes since 3.9.5:
+
+;; - No need to add the dir to your load-path any more.
+;;   The sml-mode-startup.el file does it for you.
+;; - Symbols like -> can be displayed as real arrows.
+;;   See sml-font-lock-symbols.
+;; - Fix some incompatibilities with the upcoming Emacs-21.4.
+;; - Indentation rules improved.  New customizable variable
+;;   `sml-rightalign-and'.  Also `sml-symbol-indent' is now customizable.
+
+;;;;; Changes since 3.9.3:
+
+;; - New add-log support (try C-x 4 a from within an SML function).
+;; - Imenu support
+;; - sml-bindings has disappeared.
+;; - The code skeletons are now abbrevs as well.
+;; - A new *sml* process is sent the content of sml-config-file
+;;   (~/.sml-proc.sml) if it exists.
+;; - `sml-compile' works yet a bit differently.  The command can begin
+;;   with `cd "path";' and it will be replaced by OS.FileSys.chDir.
+;; - run-sml now pops up the new buffer.  It can also run the command on
+;;   another machine.  And it always prompts for the command name.
+;;   Use a prefix argument if you want to give args or to specify a host on
+;;   which to run the command.
+;; - mouse-2 to yank in *sml* should work again (but won't work for next-error
+;;   any more).
+;; - New major-modes sml-cm-mode, sml-lex-mode and sml-yacc-mode.
+;; - sml-load-hook has disappeared as has inferior-sml-load-hook.
+;; - sml-mode-startup.el is now automatically generated and you're supposed to
+;;   `load' it from .emacs or site-start.el.
+;; - Minor bug fixes.
+
+;;; Code:
+
+(eval-when-compile (require 'cl))
+(require 'smie nil 'noerror)
+(require 'electric)
+
+(defgroup sml ()
+  "Editing SML code."
+  :group 'languages)
+
+(defcustom sml-indent-level 4
+  "Basic indentation step for SML code."
+  :type 'integer)
+
+(defcustom sml-indent-args sml-indent-level
+  "Indentation of args placed on a separate line."
+  :type 'integer)
+
+(defcustom sml-rightalign-and t
+  "If non-nil, right-align `and' with its leader.
+If nil:                                        If t:
+       datatype a = A                          datatype a = A
+       and b = B                                    and b = B"
+  :type 'boolean)
+
+(defcustom sml-electric-pipe-mode t
+  "If non-nil, automatically insert appropriate template when hitting |."
+  :type 'boolean)
+
+(defvar sml-mode-hook nil
+  "Run upon entering `sml-mode'.
+This is a good place to put your preferred key bindings.")
+
+;; font-lock setup
+
+(defvar sml-outline-regexp
+  ;; `st' and `si' are to match structure and signature.
+  "\f\\|s[ti]\\|[ \t]*\\(let[ \t]+\\)?\\(fun\\|and\\)\\_>"
+  "Regexp matching a major heading.
+This actually can't work without extending `outline-minor-mode' with the
+notion of \"the end of an outline\".")
+
+;;
+;; Internal defines
+;;
+
+(defvar sml-mode-map
+  (let ((map (make-sparse-keymap)))
+    ;; Text-formatting commands:
+    (define-key map "\C-c\C-m" 'sml-insert-form)
+    (define-key map "\M-|" 'sml-electric-pipe)
+    (define-key map "\M-\ " 'sml-electric-space)
+    (define-key map [backtab] 'sml-back-to-outer-indent)
+    ;; The standard binding is C-c C-z, but we add this one for compatibility.
+    (define-key map "\C-c\C-s" 'sml-prog-proc-switch-to)
+    map)
+  "The keymap used in `sml-mode'.")
+
+(defvar sml-mode-syntax-table
+  (let ((st (make-syntax-table)))
+    (modify-syntax-entry ?\* ". 23n" st)
+    (modify-syntax-entry ?\( "()1" st)
+    (modify-syntax-entry ?\) ")(4" st)
+    (mapc (lambda (c) (modify-syntax-entry c "_" st)) "._'")
+    (mapc (lambda (c) (modify-syntax-entry c "." st)) ",;")
+    ;; `!' is not really a prefix-char, oh well!
+    (mapc (lambda (c) (modify-syntax-entry c "'"  st)) "~#!")
+    (mapc (lambda (c) (modify-syntax-entry c "."  st)) "%&$+-/:<=>?@`^|")
+    st)
+  "The syntax table used in `sml-mode'.")
+
+
+(easy-menu-define sml-mode-menu sml-mode-map "Menu used in `sml-mode'."
+  '("SML"
+    ("Process"
+     ["Start SML repl"         sml-run         t]
+     ["-" nil nil]
+     ["Compile the project"    sml-prog-proc-compile   t]
+     ["Send file"              sml-prog-proc-load-file t]
+     ["Switch to SML repl"     sml-prog-proc-switch-to t]
+     ["--" nil nil]
+     ["Send buffer"            sml-prog-proc-send-buffer       t]
+     ["Send region"            sml-prog-proc-send-region       t]
+     ["Send function"          sml-send-function t]
+     ["Goto next error"                next-error      t])
+    ["Insert SML form"         sml-insert-form t]
+    ("Forms" :filter sml-forms-menu)
+    ["Indent region"           indent-region t]
+    ["Outdent line"            sml-back-to-outer-indent t]
+    ["-----" nil nil]
+    ["Customize SML-mode"  (customize-group 'sml)      t]
+    ["SML mode help"       describe-mode t]))
+
+;;
+;; Regexps
+;;
+
+(defun sml-syms-re (syms)
+  (concat "\\_<" (regexp-opt syms t) "\\_>"))
+
+;;
+
+(defconst sml-module-head-syms
+  '("signature" "structure" "functor" "abstraction"))
+
+
+(defconst sml-=-starter-syms
+  (list* "|" "val" "fun" "and" "datatype" "type" "abstype" "eqtype"
+        sml-module-head-syms)
+  "Symbols that can be followed by a `='.")
+(defconst sml-=-starter-re
+  (concat "\\S.|\\S.\\|" (sml-syms-re (cdr sml-=-starter-syms)))
+  "Symbols that can be followed by a `='.")
+
+(defconst sml-non-nested-of-starter-re
+  (sml-syms-re '("datatype" "abstype" "exception"))
+  "Symbols that can introduce an `of' that shouldn't behave like a paren.")
+
+(defconst sml-starters-syms
+  (append sml-module-head-syms
+         '("abstype" "datatype" "exception" "fun"
+           "local" "infix" "infixr" "sharing" "nonfix"
+           "open" "type" "val" "and"
+           "withtype" "with"))
+  "The starters of new expressions.")
+
+(defconst sml-pipeheads
+  '("|" "of" "fun" "fn" "and" "handle" "datatype" "abstype"
+    "(" "{" "[")
+   "A `|' corresponds to one of these.")
+
+(defconst sml-keywords-regexp
+  (sml-syms-re '("abstraction" "abstype" "and" "andalso" "as" "before" "case"
+                 "datatype" "else" "end" "eqtype" "exception" "do" "fn"
+                 "fun" "functor" "handle" "if" "in" "include" "infix"
+                 "infixr" "let" "local" "nonfix" "o" "of" "op" "open" "orelse"
+                 "overload" "raise" "rec" "sharing" "sig" "signature"
+                 "struct" "structure" "then" "type" "val" "where" "while"
+                 "with" "withtype"))
+  "A regexp that matches any and all keywords of SML.")
+
+(eval-and-compile
+  (defconst sml-id-re "\\sw\\(?:\\sw\\|\\s_\\)*"))
+
+(defconst sml-tyvarseq-re
+  (concat "\\(?:\\(?:'+" sml-id-re "\\|(\\(?:[,']\\|" sml-id-re
+          "\\|\\s-\\)+)\\)\\s-+\\)?"))
+
+;;; Font-lock settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defcustom sml-font-lock-symbols nil
+  "Display \\ and -> and such using symbols in fonts.
+This may sound like a neat trick, but be extra careful: it changes the
+alignment and can thus lead to nasty surprises w.r.t layout."
+  :type 'boolean)
+
+(defconst sml-font-lock-symbols-alist
+  '(("fn" . ?λ)
+    ("andalso" . ?∧) ;; ?⋀
+    ("orelse"  . ?∨) ;; ?⋁
+    ;; ("as" . ?≡)
+    ("not" . ?¬)
+    ("div" . ?÷)
+    ("*"   . ?×)
+    ("o"   . ?○)
+    ("->"  . ?→)
+    ("=>"  . ?⇒)
+    ("<-"  . ?←)
+    ("<>"  . ?≠)
+    (">="  . ?≥)
+    ("<="  . ?≤)
+    ("..." . ?⋯)
+    ;; ("::" . ?∷)
+    ;; Some greek letters for type parameters.
+    ("'a" . ?α)
+    ("'b" . ?β)
+    ("'c" . ?γ)
+    ("'d" . ?δ)
+    ))
+
+(defun sml-font-lock-compose-symbol ()
+  "Compose a sequence of ascii chars into a symbol.
+Regexp match data 0 points to the chars."
+  ;; Check that the chars should really be composed into a symbol.
+  (let* ((start (match-beginning 0))
+        (end (match-end 0))
+        (syntaxes (if (eq (char-syntax (char-after start)) ?w)
+                      '(?w) '(?. ?\\))))
+    (if (or (memq (char-syntax (or (char-before start) ?\ )) syntaxes)
+           (memq (char-syntax (or (char-after end) ?\ )) syntaxes)
+           (memq (get-text-property start 'face)
+                 '(font-lock-doc-face font-lock-string-face
+                   font-lock-comment-face)))
+       ;; No composition for you.  Let's actually remove any composition
+       ;; we may have added earlier and which is now incorrect.
+       (remove-text-properties start end '(composition))
+      ;; That's a symbol alright, so add the composition.
+      (compose-region start end (cdr (assoc (match-string 0)
+                                            sml-font-lock-symbols-alist)))))
+  ;; Return nil because we're not adding any face property.
+  nil)
+
+(defun sml-font-lock-symbols-keywords ()
+  (when sml-font-lock-symbols
+    `((,(regexp-opt (mapcar 'car sml-font-lock-symbols-alist) t)
+       (0 (sml-font-lock-compose-symbol))))))
+
+;; The font lock regular expressions.
+
+(defconst sml-font-lock-keywords
+  `(;;(sml-font-comments-and-strings)
+    (,(concat "\\_<\\(fun\\|and\\)\\s-+" sml-tyvarseq-re
+              "\\(" sml-id-re "\\)\\s-+[^ \t\n=]")
+     (1 font-lock-keyword-face)
+     (2 font-lock-function-name-face))
+    (,(concat "\\_<\\(\\(?:data\\|abs\\|with\\|eq\\)?type\\)\\s-+"
+              sml-tyvarseq-re "\\(" sml-id-re "\\)")
+     (1 font-lock-keyword-face)
+     (2 font-lock-type-def-face))
+    (,(concat "\\_<\\(val\\)\\s-+\\(?:" sml-id-re "\\_>\\s-*\\)?\\("
+              sml-id-re "\\)\\s-*[=:]")
+     (1 font-lock-keyword-face)
+     (2 font-lock-variable-name-face))
+    (,(concat "\\_<\\(structure\\|functor\\|abstraction\\)\\s-+\\("
+              sml-id-re "\\)")
+     (1 font-lock-keyword-face)
+     (2 font-lock-module-def-face))
+    (,(concat "\\_<\\(signature\\)\\s-+\\(" sml-id-re "\\)")
+     (1 font-lock-keyword-face)
+     (2 font-lock-interface-def-face))
+    
+    (,sml-keywords-regexp . font-lock-keyword-face)
+    ,@(sml-font-lock-symbols-keywords))
+  "Regexps matching standard SML keywords.")
+
+(defface font-lock-type-def-face
+  '((t (:bold t)))
+  "Font Lock mode face used to highlight type definitions."
+  :group 'font-lock-highlighting-faces)
+(defvar font-lock-type-def-face 'font-lock-type-def-face
+  "Face name to use for type definitions.")
+
+(defface font-lock-module-def-face
+  '((t (:bold t)))
+  "Font Lock mode face used to highlight module definitions."
+  :group 'font-lock-highlighting-faces)
+(defvar font-lock-module-def-face 'font-lock-module-def-face
+  "Face name to use for module definitions.")
+
+(defface font-lock-interface-def-face
+  '((t (:bold t)))
+  "Font Lock mode face used to highlight interface definitions."
+  :group 'font-lock-highlighting-faces)
+(defvar font-lock-interface-def-face 'font-lock-interface-def-face
+  "Face name to use for interface definitions.")
+
+;;
+;; Code to handle nested comments and unusual string escape sequences
+;;
+
+(defvar sml-syntax-prop-table
+  (let ((st (make-syntax-table)))
+    (modify-syntax-entry ?\\ "." st)
+    (modify-syntax-entry ?* "." st)
+    st)
+  "Syntax table for text-properties.")
+
+(defconst sml-font-lock-syntactic-keywords
+  `(("^\\s-*\\(\\\\\\)" (1 ',sml-syntax-prop-table))))
+
+(defconst sml-font-lock-defaults
+  '(sml-font-lock-keywords nil nil nil nil
+    (font-lock-syntactic-keywords . sml-font-lock-syntactic-keywords)))
+
+
+;;; Indentation with SMIE
+
+(defconst sml-smie-grammar
+  ;; We have several problem areas where SML's syntax can't be handled by an
+  ;; operator precedence grammar:
+  ;;
+  ;; "= A before B" is "= A) before B" if this is the
+  ;;   `boolean-=' but it is "= (A before B)" if it's the `definitional-='.
+  ;;   We can work around the problem by tweaking the lexer to return two
+  ;;   different tokens for the two different kinds of `='.
+  ;; "of A | B" in a "case" we want "of (A | B, but in a `datatype'
+  ;;   we want "of A) | B".
+  ;; "= A | B" can be "= A ) | B" if the = is from a "fun" definition,
+  ;;   but it is "= (A | B" if it is a `datatype' definition (of course, if
+  ;;   the previous token introducing the = is `and', deciding whether
+  ;;   it's a datatype or a function requires looking even further back).
+  ;; "functor foo (...) where type a = b = ..." the first `=' looks very much
+  ;;   like a `definitional-=' even tho it's just an equality constraint.
+  ;;   Currently I don't even try to handle `where' at all.
+  (smie-prec2->grammar
+   (smie-merge-prec2s
+    (smie-bnf->prec2
+     '((exp ("if" exp "then" exp "else" exp)
+            ("case" exp "of" branches)
+            ("let" decls "in" cmds "end")
+            ("struct" decls "end")
+            ("sig" decls "end")
+            (sexp)
+            (sexp "handle" branches)
+            ("fn" sexp "=>" exp))
+       ;; "simple exp"s are the ones that can appear to the left of `handle'.
+       (sexp (sexp ":" type) ("(" exps ")")
+             (sexp "orelse" sexp)
+             (marg ":>" type)
+             (sexp "andalso" sexp))
+       (cmds (cmds ";" cmds) (exp))
+       (exps (exps "," exps) (exp))     ; (exps ";" exps)
+       (branches (sexp "=>" exp) (branches "|" branches))
+       ;; Operator precedence grammars handle separators much better then
+       ;; starters/terminators, so let's pretend that let/fun are separators.
+       (decls (sexp "d=" exp)
+              (sexp "d=" databranches)
+              (funbranches "|" funbranches)
+              (sexp "=of" type)         ;After "exception".
+              ;; FIXME: Just like PROCEDURE in Pascal and Modula-2, this
+              ;; interacts poorly with the other constructs since I
+              ;; can't make "local" a separator like fun/val/type/...
+              ("local" decls "in" decls "end")
+              ;; (decls "local" decls "in" decls "end")
+              (decls "functor" decls)
+              (decls "signature" decls)
+              (decls "structure" decls)
+              (decls "type" decls)
+              (decls "open" decls)
+              (decls "and" decls)
+              (decls "infix" decls)
+              (decls "infixr" decls)
+              (decls "nonfix" decls)
+              (decls "abstype" decls)
+              (decls "datatype" decls)
+              (decls "exception" decls)
+              (decls "fun" decls)
+              (decls "val" decls))
+       (type (type "->" type)
+             (type "*" type))
+       (funbranches (sexp "d=" exp))
+       (databranches (sexp "=of" type) (databranches "d|" databranches))
+       ;; Module language.
+       ;; (mexp ("functor" marg "d=" mexp)
+       ;;       ("structure" marg "d=" mexp)
+       ;;       ("signature" marg "d=" mexp))
+       (marg (marg ":" type) (marg ":>" type))
+       (toplevel (decls) (exp) (toplevel ";" toplevel)))
+     ;; '(("local" . opener))
+     ;; '((nonassoc "else") (right "handle"))
+     '((nonassoc "of") (assoc "|"))     ; "case a of b => case c of d => e | f"
+     '((nonassoc "handle") (assoc "|")) ; Idem for "handle".
+     '((assoc "->") (assoc "*"))
+     '((assoc "val" "fun" "type" "datatype" "abstype" "open" "infix" "infixr"
+              "nonfix" "functor" "signature" "structure" "exception"
+              ;; "local"
+              )
+       (assoc "and"))
+     '((assoc "orelse") (assoc "andalso") (nonassoc ":"))
+     '((assoc ";")) '((assoc ",")) '((assoc "d|")))
+
+    (smie-precs->prec2
+     '((nonassoc "andalso")                       ;To anchor the prec-table.
+       (assoc "before")                           ;0
+       (assoc ":=" "o")                           ;3
+       (nonassoc ">" ">=" "<>" "<" "<=" "=")      ;4
+       (assoc "::" "@")                           ;5
+       (assoc "+" "-" "^")                        ;6
+       (assoc "/" "*" "quot" "rem" "div" "mod")   ;7
+       (nonassoc " -dummy- ")))                   ;Bogus anchor at the end.
+    )))
+
+(defvar sml-indent-separator-outdent 2)
+
+(defun sml-smie-rules (kind token)
+  ;; I much preferred the pcase version of the code, especially while
+  ;; edebugging the code.  But that will have to wait until we get rid of
+  ;; support for Emacs-23.
+  (case kind
+    (:elem (case token
+             (basic sml-indent-level)
+             (args  sml-indent-args)))
+    (:list-intro (member token '("fn")))
+    (:after
+     (cond
+      ((equal token "struct") 0)
+      ((equal token "=>") (if (smie-rule-hanging-p) 0 2))
+      ((equal token "in") (if (smie-rule-parent-p "local") 0))
+      ((equal token "of") 3)
+      ((member token '("(" "{" "[")) (if (not (smie-rule-hanging-p)) 2))
+      ((equal token "else") (if (smie-rule-hanging-p) 0)) ;; (:next "if" 0)
+      ((member token '("|" "d|" ";" ",")) (smie-rule-separator kind))
+      ((equal token "d=")
+       (if (and (smie-rule-parent-p "val") (smie-rule-next-p "fn")) -3))))
+    (:before
+     (cond
+      ((equal token "=>") (if (smie-rule-parent-p "fn") 3))
+      ((equal token "of") 1)
+      ;; In case the language is extended to allow a | directly after of.
+      ((and (equal token "|") (smie-rule-prev-p "of")) 1)
+      ((member token '("|" "d|" ";" ",")) (smie-rule-separator kind))
+      ;; Treat purely syntactic block-constructs as being part of their parent,
+      ;; when the opening statement is hanging.
+      ((member token '("let" "(" "[" "{"))
+       (if (smie-rule-hanging-p) (smie-rule-parent)))
+      ;; Treat if ... else if ... as a single long syntactic construct.
+      ;; Similarly, treat fn a => fn b => ... as a single construct.
+      ((member token '("if" "fn"))
+       (and (not (smie-rule-bolp))
+            (smie-rule-prev-p (if (equal token "if") "else" "=>"))
+            (smie-rule-parent)))
+      ((equal token "and")
+       ;; FIXME: maybe "and" (c|sh)ould be handled as an smie-separator.
+       (cond
+        ((smie-rule-parent-p "datatype") (if sml-rightalign-and 5 0))
+        ((smie-rule-parent-p "fun" "val") 0)))
+      ((equal token "d=")
+       (cond
+        ((smie-rule-parent-p "datatype") (if (smie-rule-bolp) 2))
+        ((smie-rule-parent-p "structure" "signature") 0)))
+      ;; Indent an expression starting with "local" as if it were starting
+      ;; with "fun".
+      ((equal token "local") (smie-indent-keyword "fun"))
+      ;; FIXME: type/val/fun/... are separators but "local" is not, even though
+      ;; it appears in the same list.  Try to fix up the problem by hand.
+      ;; ((or (equal token "local")
+      ;;      (equal (cdr (assoc token smie-grammar))
+      ;;             (cdr (assoc "fun" smie-grammar))))
+      ;;  (let ((parent (save-excursion (smie-backward-sexp))))
+      ;;    (when (or (and (equal (nth 2 parent) "local")
+      ;;                   (null (car parent)))
+      ;;              (progn
+      ;;                (setq parent (save-excursion (smie-backward-sexp "fun")))
+      ;;                (eq (car parent) (nth 1 (assoc "fun" smie-grammar)))))
+      ;;      (goto-char (nth 1 parent))
+      ;;      (cons 'column (smie-indent-virtual)))))
+      ))))
+
+(defun sml-smie-definitional-equal-p ()
+  "Figure out which kind of \"=\" this is.
+Assumes point is right before the = sign."
+  ;; The idea is to look backward for the first occurrence of a token that
+  ;; requires a definitional "=" and then see if there's such a definitional
+  ;; equal between that token and ourselves (in which case we're not
+  ;; a definitional = ourselves).
+  ;; The "search for =" is naive and will match "=>" and "<=", but it turns
+  ;; out to be OK in practice because such tokens very rarely (if ever) appear
+  ;; between the =-starter and the corresponding definitional equal.
+  ;; One known problem case is code like:
+  ;; "functor foo (structure s : S) where type t = s.t ="
+  ;; where the "type t = s.t" is mistaken for a type definition.
+  (let ((re (concat "\\(" sml-=-starter-re "\\)\\|=")))
+    (save-excursion
+      (and (re-search-backward re nil t)
+           (or (match-beginning 1)
+               ;; If we first hit a "=", then that = is probably definitional
+               ;; and  we're an equality, but not necessarily.  One known
+               ;; problem case is code like:
+               ;; "functor foo (structure s : S) where type t = s.t ="
+               ;; where the first = is more like an equality (tho it doesn't
+               ;; matter much) and the second is definitional.
+               ;;
+               ;; FIXME: The test below could be used to recognize that the
+               ;; second = is not a mere equality, but that's not enough to
+               ;; parse the construct properly: we'd need something
+               ;; like a third kind of = token for structure definitions, in
+               ;; order for the parser to be able to skip the "type t = s.t"
+               ;; as a sub-expression.
+               ;;
+               ;; (and (not (looking-at "=>"))
+               ;;      (not (eq ?< (char-before))) ;Not a <=
+               ;;      (re-search-backward re nil t)
+               ;;      (match-beginning 1)
+               ;;      (equal "type" (buffer-substring (- (match-end 1) 4)
+               ;;                                      (match-end 1))))
+               )))))
+
+(defun sml-smie-non-nested-of-p ()
+  ;; FIXME: Maybe datatype-|-p makes this nested-of business unnecessary.
+  "Figure out which kind of \"of\" this is.
+Assumes point is right before the \"of\" symbol."
+  (save-excursion
+    (and (re-search-backward (concat "\\(" sml-non-nested-of-starter-re
+                                     "\\)\\|\\_<case\\_>") nil t)
+         (match-beginning 1))))
+
+(defun sml-smie-datatype-|-p ()
+  "Figure out which kind of \"|\" this is.
+Assumes point is right before the | symbol."
+  (save-excursion
+    (forward-char 1)                    ;Skip the |.
+    (let ((after-type-def
+           '("|" "of" "in" "datatype" "and" "exception" "abstype" "infix"
+             "infixr" "nonfix" "local" "val" "fun" "structure" "functor"
+             "signature")))
+      (or (member (sml-smie-forward-token-1) after-type-def) ;Skip the tag.
+          (member (sml-smie-forward-token-1) after-type-def)))))
+
+(defun sml-smie-forward-token-1 ()
+  (forward-comment (point-max))
+  (buffer-substring-no-properties
+   (point)
+   (progn
+     (or (/= 0 (skip-syntax-forward "'w_"))
+         (skip-syntax-forward ".'"))
+     (point))))
+
+(defun sml-smie-forward-token ()
+  (let ((sym (sml-smie-forward-token-1)))
+    (cond
+     ((equal "op" sym)
+      (concat "op " (sml-smie-forward-token-1)))
+     ((member sym '("|" "of" "="))
+      ;; The important lexer for indentation's performance is the backward
+      ;; lexer, so for the forward lexer we delegate to the backward one.
+      (save-excursion (sml-smie-backward-token)))
+     (t sym))))
+
+(defun sml-smie-backward-token-1 ()
+  (forward-comment (- (point)))
+  (buffer-substring-no-properties
+   (point)
+   (progn
+     (or (/= 0 (skip-syntax-backward ".'"))
+         (skip-syntax-backward "'w_"))
+     (point))))
+
+(defun sml-smie-backward-token ()
+  (let ((sym (sml-smie-backward-token-1)))
+    (unless (zerop (length sym))
+      ;; FIXME: what should we do if `sym' = "op" ?
+      (let ((point (point)))
+       (if (equal "op" (sml-smie-backward-token-1))
+           (concat "op " sym)
+         (goto-char point)
+         (cond
+          ((string= sym "=") (if (sml-smie-definitional-equal-p) "d=" "="))
+          ((string= sym "of") (if (sml-smie-non-nested-of-p) "=of" "of"))
+           ((string= sym "|") (if (sml-smie-datatype-|-p) "d|" "|"))
+          (t sym)))))))
+
+;;;;
+;;;; Imenu support
+;;;;
+
+(defconst sml-imenu-regexp
+  (concat "^[ \t]*\\(let[ \t]+\\)?"
+         (regexp-opt (append sml-module-head-syms
+                             '("and" "fun" "datatype" "abstype" "type")) t)
+         "\\_>"))
+
+(defun sml-imenu-create-index ()
+  (let (alist)
+    (goto-char (point-max))
+    (while (re-search-backward sml-imenu-regexp nil t)
+      (save-excursion
+       (let ((kind (match-string 2))
+             (column (progn (goto-char (match-beginning 2)) (current-column)))
+             (location
+              (progn (goto-char (match-end 0))
+                     (forward-comment (point-max))
+                     (when (looking-at sml-tyvarseq-re)
+                       (goto-char (match-end 0)))
+                     (point)))
+             (name (sml-smie-forward-token)))
+         ;; Eliminate trivial renamings.
+         (when (or (not (member kind '("structure" "signature")))
+                   (when (search-forward "=" nil t)
+                      (forward-comment (point-max))
+                      (looking-at "sig\\|struct")))
+           (push (cons (concat (make-string (/ column 2) ?\ ) name) location)
+                 alist)))))
+    alist))
+
+;;; Generic prog-proc interaction.
+
+(require 'comint)
+(require 'compile)
+
+(defvar sml-prog-proc-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [?\C-c ?\C-l] 'sml-prog-proc-load-file)
+    (define-key map [?\C-c ?\C-c] 'sml-prog-proc-compile)
+    (define-key map [?\C-c ?\C-z] 'sml-prog-proc-switch-to)
+    (define-key map [?\C-c ?\C-r] 'sml-prog-proc-send-region)
+    (define-key map [?\C-c ?\C-b] 'sml-prog-proc-send-buffer)
+    ;; FIXME: Add
+    ;; (define-key map [?\M-C-x] 'sml-prog-proc-send-defun)
+    ;; (define-key map [?\C-x ?\C-e] 'sml-prog-proc-send-last-sexp)
+    ;; FIXME: Add menu.  Now, that's trickier because keymap inheritance
+    ;; doesn't play nicely with menus!
+    map)
+  "Keymap for `sml-prog-proc-mode'.")
+
+(defvar sml-prog-proc--buffer nil
+  "The inferior-process buffer to which to send code.")
+(make-variable-buffer-local 'sml-prog-proc--buffer)
+
+(defstruct (sml-prog-proc-descriptor
+            (:constructor sml-prog-proc-make)
+            (:predicate nil)
+            (:copier nil))
+  (name nil :read-only t)
+  (run nil :read-only t)
+  (load-cmd nil :read-only t)
+  (chdir-cmd nil :read-only t)
+  (command-eol "\n" :read-only t)
+  (compile-commands-alist nil :read-only t))
+
+(defvar sml-prog-proc-descriptor nil
+  "Struct containing the various functions to create a new process, ...")
+
+(defmacro sml-prog-proc--prop (prop)
+  `(,(intern (format "sml-prog-proc-descriptor-%s" prop))
+    (or sml-prog-proc-descriptor
+        ;; FIXME: Look for available ones and pick one.
+        (error "Not a `sml-prog-proc' buffer"))))
+(defmacro sml-prog-proc--call (method &rest args)
+  `(funcall (sml-prog-proc--prop ,method) ,@args))
+
+;; The inferior process and his buffer are basically interchangeable.
+;; Currently the code takes sml-prog-proc--buffer as the main reference,
+;; but all users should either use sml-prog-proc-proc or sml-prog-proc-buffer
+;; to find the info.
+
+(defun sml-prog-proc-proc ()
+  "Return the inferior process for the code in current buffer."
+  (or (and (buffer-live-p sml-prog-proc--buffer)
+           (get-buffer-process sml-prog-proc--buffer))
+      (when (derived-mode-p 'sml-prog-proc-mode 'sml-prog-proc-comint-mode)
+        (setq sml-prog-proc--buffer (current-buffer))
+        (get-buffer-process sml-prog-proc--buffer))
+      (let ((ppd sml-prog-proc-descriptor)
+            (buf (sml-prog-proc--call run)))
+        (with-current-buffer buf
+          (if (and ppd (null sml-prog-proc-descriptor))
+              (set (make-local-variable 'sml-prog-proc-descriptor) ppd)))
+        (setq sml-prog-proc--buffer buf)
+        (get-buffer-process sml-prog-proc--buffer))))
+
+(defun sml-prog-proc-buffer ()
+  "Return the buffer of the inferior process."
+  (process-buffer (sml-prog-proc-proc)))
+
+(defun sml-prog-proc-switch-to ()
+  "Switch to the buffer running the read-eval-print process."
+  (interactive)
+  (pop-to-buffer (sml-prog-proc-buffer)))
+
+(defun sml-prog-proc-send-string (proc str)
+  "Send command STR to PROC, with an EOL terminator appended."
+  (with-current-buffer (process-buffer proc)
+    ;; FIXME: comint-send-string does not pass the string through
+    ;; comint-input-filter-function, so we have to do it by hand.
+    ;; Maybe we should insert the command into the buffer and then call
+    ;; comint-send-input?
+    (sml-prog-proc-comint-input-filter-function nil)
+    (comint-send-string proc (concat str (sml-prog-proc--prop command-eol)))))
+
+(defun sml-prog-proc-load-file (file &optional and-go)
+  "Load FILE into the read-eval-print process.
+FILE is the file visited by the current buffer.
+If prefix argument AND-GO is used, then we additionally switch
+to the buffer where the process is running."
+  (interactive
+   (list (or buffer-file-name
+             (read-file-name "File to load: " nil nil t))
+         current-prefix-arg))
+  (comint-check-source file)
+  (let ((proc (sml-prog-proc-proc)))
+    (sml-prog-proc-send-string proc (sml-prog-proc--call load-cmd file))
+    (when and-go (pop-to-buffer (process-buffer proc)))))
+
+(defvar sml-prog-proc--tmp-file nil)
+
+(defun sml-prog-proc-send-region (start end &optional and-go)
+  "Send the content of the region to the read-eval-print process.
+START..END delimit the region; AND-GO if non-nil indicate to additionally
+switch to the process's buffer."
+  (interactive "r\nP")
+  (if (> start end) (let ((tmp end)) (setq end start) (setq start tmp))
+    (if (= start end) (error "Nothing to send: the region is empty")))
+  (let ((proc (sml-prog-proc-proc))
+        (tmp (make-temp-file "emacs-region")))
+    (write-region start end tmp nil 'silently)
+    (when sml-prog-proc--tmp-file
+      (ignore-errors (delete-file (car sml-prog-proc--tmp-file)))
+      (set-marker (cdr sml-prog-proc--tmp-file) nil))
+    (setq sml-prog-proc--tmp-file (cons tmp (copy-marker start)))
+    (sml-prog-proc-send-string proc (sml-prog-proc--call load-cmd tmp))
+    (when and-go (pop-to-buffer (process-buffer proc)))))
+
+(defun sml-prog-proc-send-buffer (&optional and-go)
+  "Send the content of the current buffer to the read-eval-print process.
+AND-GO if non-nil indicate to additionally switch to the process's buffer."
+  (interactive "P")
+  (sml-prog-proc-send-region (point-min) (point-max) and-go))
+
+(define-derived-mode sml-prog-proc-mode prog-mode "Sml-Prog-Proc"
+  "Major mode for editing source code and interact with an interactive loop."
+  )
+
+;;; Extended comint-mode for Sml-Prog-Proc.
+
+(defun sml-prog-proc-chdir (dir)
+  "Change the working directory of the inferior process to DIR."
+  (interactive "DChange to directory: ")
+  (let ((dir (expand-file-name dir))
+        (proc (sml-prog-proc-proc)))
+    (with-current-buffer (process-buffer proc)
+      (sml-prog-proc-send-string proc (sml-prog-proc--call chdir-cmd dir))
+      (setq default-directory (file-name-as-directory dir)))))
+
+(defun sml-prog-proc-comint-input-filter-function (str)
+  ;; `compile.el' doesn't know that file location info from errors should be
+  ;; recomputed afresh (without using stale info from earlier compilations).
+  (compilation-forget-errors)       ;Has to run before compilation-fake-loc.
+  (if (and sml-prog-proc--tmp-file (marker-buffer (cdr sml-prog-proc--tmp-file)))
+      (compilation-fake-loc (cdr sml-prog-proc--tmp-file)
+                            (car sml-prog-proc--tmp-file)))
+  str)
+
+(defvar sml-prog-proc-comint-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map "\C-c\C-l" 'sml-prog-proc-load-file)
+    map))
+
+(define-derived-mode sml-prog-proc-comint-mode comint-mode "Sml-Prog-Proc-Comint"
+  "Major mode for an inferior process used to run&compile source code."
+  ;; Enable compilation-minor-mode, but only after the child mode is setup
+  ;; since the child-mode might want to add rules to
+  ;; compilation-error-regexp-alist.
+  (add-hook 'after-change-major-mode-hook #'compilation-minor-mode nil t)
+  ;; The keymap of compilation-minor-mode is too unbearable, so we
+  ;; need to hide most of the bindings.
+  (let ((map (make-sparse-keymap)))
+    (dolist (keys '([menu-bar] [follow-link]))
+      ;; Preserve some of the bindings.
+      (define-key map keys (lookup-key compilation-minor-mode-map keys)))
+    (add-to-list 'minor-mode-overriding-map-alist
+                 (cons 'compilation-minor-mode map)))
+
+  (add-hook 'comint-input-filter-functions
+            #'sml-prog-proc-comint-input-filter-function nil t))
+
+(defvar sml-prog-proc--compile-command nil
+  "The command used by default by `sml-prog-proc-compile'.")
+
+(defun sml-prog-proc-compile (command &optional and-go)
+  "Pass COMMAND to the read-eval-loop process to compile the current file.
+
+You can then use the command \\[next-error] to find the next error message
+and move to the source code that caused it.
+
+Interactively, prompts for the command if `compilation-read-command' is
+non-nil.  With prefix arg, always prompts.
+
+Prefix arg AND-GO also means to switch to the read-eval-loop buffer afterwards."
+  (interactive
+   (let* ((dir default-directory)
+         (cmd "cd \"."))
+     ;; Look for files to determine the default command.
+     (while (and (stringp dir)
+                 (progn
+                   (dolist (cf (sml-prog-proc--prop compile-commands-alist))
+                     (when (file-exists-p (expand-file-name (cdr cf) dir))
+                       (setq cmd (concat cmd "\"; " (car cf)))
+                       (return nil)))
+                   (not cmd)))
+       (let ((newdir (file-name-directory (directory-file-name dir))))
+        (setq dir (unless (equal newdir dir) newdir))
+        (setq cmd (concat cmd "/.."))))
+     (setq cmd
+          (cond
+           ((local-variable-p 'sml-prog-proc--compile-command)
+             sml-prog-proc--compile-command)
+           ((string-match "^\\s-*cd\\s-+\"\\.\"\\s-*;\\s-*" cmd)
+            (substring cmd (match-end 0)))
+           ((string-match "^\\s-*cd\\s-+\"\\(\\./\\)" cmd)
+            (replace-match "" t t cmd 1))
+           ((string-match ";" cmd) cmd)
+           (t sml-prog-proc--compile-command)))
+     ;; code taken from compile.el
+     (list (if (or compilation-read-command current-prefix-arg)
+               (read-from-minibuffer "Compile command: "
+                                    cmd nil nil '(compile-history . 1))
+             cmd))))
+     ;; ;; now look for command's file to determine the directory
+     ;; (setq dir default-directory)
+     ;; (while (and (stringp dir)
+     ;;            (dolist (cf (sml-prog-proc--prop compile-commands-alist) t)
+     ;;              (when (and (equal cmd (car cf))
+     ;;                         (file-exists-p (expand-file-name (cdr cf) dir)))
+     ;;                (return nil))))
+     ;;   (let ((newdir (file-name-directory (directory-file-name dir))))
+     ;;     (setq dir (unless (equal newdir dir) newdir))))
+     ;; (setq dir (or dir default-directory))
+     ;; (list cmd dir)))
+  (set (make-local-variable 'sml-prog-proc--compile-command) command)
+  (save-some-buffers (not compilation-ask-about-save) nil)
+  (let ((dir default-directory))
+    (when (string-match "^\\s-*cd\\s-+\"\\([^\"]+\\)\"\\s-*;" command)
+      (setq dir (match-string 1 command))
+      (setq command (replace-match "" t t command)))
+    (setq dir (expand-file-name dir))
+    (let ((proc (sml-prog-proc-proc))
+          (eol (sml-prog-proc--prop command-eol)))
+      (with-current-buffer (process-buffer proc)
+        (setq default-directory dir)
+        (sml-prog-proc-send-string
+         proc (concat (sml-prog-proc--call chdir-cmd dir)
+                      ;; Strip the newline, to avoid adding a prompt.
+                      (if (string-match "\n\\'" eol)
+                          (replace-match " " t t eol) eol)
+                      command))
+        (when and-go (pop-to-buffer (process-buffer proc)))))))
+
+
+;;; SML Sml-Prog-Proc support.
+
+(defcustom sml-program-name "sml"
+  "Program to run as Standard SML read-eval-print loop."
+  :type 'string)
+
+(defcustom sml-default-arg ""
+  "Default command line option to pass to `sml-program-name', if any."
+  :type 'string)
+
+(defcustom sml-host-name ""
+  "Host on which to run `sml-program-name'."
+  :type 'string)
+
+(defcustom sml-config-file "~/.smlproc.sml"
+  "File that should be fed to the SML process when started."
+  :type 'string)
+
+
+(defcustom sml-prompt-regexp "^[-=>#] *"
+  "Regexp used to recognise prompts in the inferior SML process."
+  :type 'regexp)
+
+(defcustom sml-compile-commands-alist
+  '(("CMB.make()" . "all-files.cm")
+    ("CMB.make()" . "pathconfig")
+    ("CM.make()" . "sources.cm")
+    ("use \"load-all\"" . "load-all"))
+  "Commands used by default by `sml-sml-prog-proc-compile'.
+Each command is associated with its \"main\" file.
+It is perfectly OK to associate several files with a command or several
+commands with the same file.")
+
+;; FIXME: Try to auto-detect the process and set those vars accordingly.
+
+(defvar sml-use-command "use \"%s\""
+  "Template for loading a file into the inferior SML process.
+Set to \"use \\\"%s\\\"\" for SML/NJ or Edinburgh ML; 
+set to \"PolyML.use \\\"%s\\\"\" for Poly/ML, etc.")
+
+(defvar sml-cd-command "OS.FileSys.chDir \"%s\""
+  "Command template for changing working directories under SML.
+Set this to nil if your compiler can't change directories.
+
+The format specifier \"%s\" will be converted into the directory name
+specified when running the command \\[sml-cd].")
+
+(defvar sml-error-regexp-alist
+  `( ;; Poly/ML messages
+    ("^\\(Error\\|Warning:\\) in '\\(.+\\)', line \\([0-9]+\\)" 2 3)
+    ;; Moscow ML
+    ("^File \"\\([^\"]+\\)\", line \\([0-9]+\\)\\(-\\([0-9]+\\)\\)?, characters \\([0-9]+\\)-\\([0-9]+\\):" 1 2 5)
+    ;; SML/NJ:  the file-pattern is anchored to avoid
+    ;; pathological behavior with very long lines.
+    ("^[-= ]*\\(.*[^\n)]\\)\\( (.*)\\)?:\\([0-9]+\\)\\.\\([0-9]+\\)\\(-\\([0-9]+\\)\\.\\([0-9]+\\)\\)? \\(Error\\|Warnin\\(g\\)\\): .*" 1
+     (3 . 6) (4 . 7) (9))
+    ;; SML/NJ's exceptions:  see above.
+    ("^ +\\(raised at: \\)?\\(.+\\):\\([0-9]+\\)\\.\\([0-9]+\\)\\(-\\([0-9]+\\)\\.\\([0-9]+\\)\\)" 2
+     (3 . 6) (4 . 7)))
+  "Alist that specifies how to match errors in compiler output.
+See `compilation-error-regexp-alist' for a description of the format.")
+
+(defconst sml-pp-functions
+  (sml-prog-proc-make :name "SML"
+                  :run (lambda () (call-interactively #'sml-run))
+                  :load-cmd (lambda (file) (format sml-use-command file))
+                  :chdir-cmd (lambda (dir) (format sml-cd-command dir))
+                  :compile-commands-alist sml-compile-commands-alist
+                  :command-eol ";\n"
+                  ))
+
+;; font-lock support
+(defconst inferior-sml-font-lock-keywords
+  `(;; prompt and following interactive command
+    ;; FIXME: Actually, this should already be taken care of by comint.
+    (,(concat "\\(" sml-prompt-regexp "\\)\\(.*\\)")
+     (1 font-lock-prompt-face)
+     (2 font-lock-command-face keep))
+    ;; CM's messages
+    ("^\\[\\(.*GC #.*\n\\)*.*\\]" . font-lock-comment-face)
+    ;; SML/NJ's irritating GC messages
+    ("^GC #.*" . font-lock-comment-face))
+  "Font-locking specification for inferior SML mode.")
+
+(defface font-lock-prompt-face
+  '((t (:bold t)))
+  "Font Lock mode face used to highlight prompts."
+  :group 'font-lock-highlighting-faces)
+(defvar font-lock-prompt-face 'font-lock-prompt-face
+  "Face name to use for prompts.")
+
+(defface font-lock-command-face
+  '((t (:bold t)))
+  "Font Lock mode face used to highlight interactive commands."
+  :group 'font-lock-highlighting-faces)
+(defvar font-lock-command-face 'font-lock-command-face
+  "Face name to use for interactive commands.")
+
+(defconst inferior-sml-font-lock-defaults
+  '(inferior-sml-font-lock-keywords nil nil nil nil))
+
+(defun sml--read-run-cmd ()
+  (list
+   (read-string "SML command: " sml-program-name)
+   (if (or current-prefix-arg (> (length sml-default-arg) 0))
+       (read-string "Any args: " sml-default-arg)
+     sml-default-arg)
+   (if (or current-prefix-arg (> (length sml-host-name) 0))
+       (read-string "On host: " sml-host-name)
+     sml-host-name)))
+
+;;;###autoload
+(defalias 'run-sml 'sml-run)
+
+;;;###autoload
+(defun sml-run (cmd arg &optional host)
+  "Run the program CMD with given arguments ARG.
+The command is run in buffer *CMD* using mode `inferior-sml-mode'.
+If the buffer already exists and has a running process, then
+just go to this buffer.
+
+If a prefix argument is used, the user is also prompted for a HOST
+on which to run CMD using `remote-shell-program'.
+
+\(Type \\[describe-mode] in the process's buffer for a list of commands.)"
+  (interactive (sml--read-run-cmd))
+  (let* ((pname (file-name-nondirectory cmd))
+         (args (split-string arg))
+        (file (when (and sml-config-file (file-exists-p sml-config-file))
+                sml-config-file)))
+    ;; And this -- to keep these as defaults even if
+    ;; they're set in the mode hooks.
+    (setq sml-program-name cmd)
+    (setq sml-default-arg arg)
+    (setq sml-host-name host)
+    ;; For remote execution, use `remote-shell-program'
+    (when (> (length host) 0)
+      (setq args (list* host "cd" default-directory ";" cmd args))
+      (setq cmd remote-shell-program))
+    ;; Go for it.
+    (save-current-buffer
+      (let ((exec-path (if (and (file-name-directory cmd)
+                                (not (file-name-absolute-p cmd)))
+                           ;; If the command has slashes, make sure we
+                           ;; first look relative to the current directory.
+                           ;; Emacs-21 does it for us, but not Emacs-20.
+                           (cons default-directory exec-path) exec-path)))
+        (pop-to-buffer (apply 'make-comint pname cmd file args)))
+
+      (inferior-sml-mode)
+      (goto-char (point-max))
+      (current-buffer))))
+
+(defun sml-send-function (&optional and-go)
+  "Send current paragraph to the inferior SML process. 
+With a prefix argument AND-GO switch to the repl buffer as well."
+  (interactive "P")
+  (save-excursion
+    (sml-mark-function)
+    (sml-prog-proc-send-region (point) (mark)))
+  (if and-go (sml-prog-proc-switch-to)))
+
+(defvar inferior-sml-mode-map
+  (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map comint-mode-map)
+    (define-key map "\C-c\C-s" 'sml-run)
+    (define-key map "\t" 'completion-at-point)
+    map)
+  "Keymap for inferior-sml mode.")
+
+
+(declare-function smerge-refine-subst "smerge-mode"
+                  (beg1 end1 beg2 end2 props-c))
+
+(defun inferior-sml-next-error-hook ()
+  ;; Try to recognize SML/NJ type error message and to highlight finely the
+  ;; difference between the two types (in case they're large, it's not
+  ;; always obvious to spot it).
+  ;;
+  ;; Sample messages:
+  ;; 
+  ;; Data.sml:31.9-33.33 Error: right-hand-side of clause doesn't agree with function result type [tycon mismatch]
+  ;;   expression:  Hstring
+  ;;   result type:  Hstring * int
+  ;;   in declaration:
+  ;;     des2hs = (fn SYM_ID hs => hs
+  ;;                | SYM_OP hs => hs
+  ;;                | SYM_CHR hs => hs)
+  ;; Data.sml:35.44-35.63 Error: operator and operand don't agree [tycon mismatch]
+  ;;   operator domain: Hstring * Hstring
+  ;;   operand:         (Hstring * int) * (Hstring * int)
+  ;;   in expression:
+  ;;     HSTRING.ieq (h1,h2)
+  ;; vparse.sml:1861.6-1922.14 Error: case object and rules don't agree [tycon mismatch]
+  ;;   rule domain: STConstraints list list option
+  ;;   object: STConstraints list option
+  ;;   in expression:
+  (save-current-buffer
+    (when (and (derived-mode-p 'sml-mode 'inferior-sml-mode)
+               (boundp 'next-error-last-buffer)
+               (bufferp next-error-last-buffer)
+               (set-buffer next-error-last-buffer)
+               (derived-mode-p 'inferior-sml-mode)
+               ;; The position of `point' is not guaranteed :-(
+               (looking-at (concat ".*\\[tycon mismatch\\]\n"
+                                   "  \\(operator domain\\|expression\\|rule domain\\): +")))
+      (require 'smerge-mode)
+      (save-excursion
+        (let ((b1 (match-end 0))
+              e1 b2 e2)
+          (when (re-search-forward "\n  in \\(expression\\|declaration\\):\n"
+                                   nil t)
+            (setq e2 (match-beginning 0))
+            (when (re-search-backward
+                   "\n  \\(operand\\|result type\\|object\\): +"
+                   b1 t)
+              (setq e1 (match-beginning 0))
+              (setq b2 (match-end 0))
+              (smerge-refine-subst b1 e1 b2 e2
+                                   '((face . smerge-refined-change))))))))))
+
+(define-derived-mode inferior-sml-mode sml-prog-proc-comint-mode "Inferior-SML"
+  "Major mode for interacting with an inferior SML process.
+
+The following commands are available:
+\\{inferior-sml-mode-map}
+
+An SML process can be fired up (again) with \\[sml].
+
+Customisation: Entry to this mode runs the hooks on `comint-mode-hook'
+and `inferior-sml-mode-hook' (in that order).
+
+Variables controlling behaviour of this mode are
+
+`sml-program-name' (default \"sml\")
+    Program to run as SML.
+
+`sml-use-command' (default \"use \\\"%s\\\"\")
+    Template for loading a file into the inferior SML process.
+
+`sml-cd-command' (default \"System.Directory.cd \\\"%s\\\"\")
+    SML command for changing directories in SML process (if possible).
+
+`sml-prompt-regexp' (default \"^[\\-=] *\")
+    Regexp used to recognise prompts in the inferior SML process.
+
+You can send text to the inferior SML process from other buffers containing
+SML source.
+    `switch-to-sml' switches the current buffer to the SML process buffer.
+    `sml-send-function' sends the current *paragraph* to the SML process.
+    `sml-send-region' sends the current region to the SML process.
+
+    Prefixing the sml-send-<whatever> commands with \\[universal-argument]
+    causes a switch to the SML process buffer after sending the text.
+
+For information on running multiple processes in multiple buffers, see
+documentation for variable `sml-buffer'.
+
+Commands:
+RET after the end of the process' output sends the text from the
+    end of process to point.
+RET before the end of the process' output copies the current line
+    to the end of the process' output, and sends it.
+DEL converts tabs to spaces as it moves back.
+TAB file name completion, as in shell-mode, etc.."
+  (setq comint-prompt-regexp sml-prompt-regexp)
+  (sml-mode-variables)
+
+  ;; We have to install it globally, 'cause it's run in the *source* buffer :-(
+  (add-hook 'next-error-hook 'inferior-sml-next-error-hook)
+
+  ;; Make TAB add a " rather than a space at the end of a file name.
+  (set (make-local-variable 'comint-completion-addsuffix) '("/" . "\""))
+
+  (set (make-local-variable 'font-lock-defaults)
+       inferior-sml-font-lock-defaults)
+
+  ;; Compilation support (used for `next-error').
+  (set (make-local-variable 'compilation-error-regexp-alist)
+       sml-error-regexp-alist)
+  ;; FIXME: move it to sml-mode?
+  (set (make-local-variable 'compilation-error-screen-columns) nil)
+
+  (setq mode-line-process '(": %s")))
+
+;;; MORE CODE FOR SML-MODE
+
+;;;###autoload
+(add-to-list 'auto-mode-alist '("\\.s\\(ml\\|ig\\)\\'" . sml-mode))
+
+(defvar comment-quote-nested)
+
+;;;###autoload
+(define-derived-mode sml-mode sml-prog-proc-mode "SML"
+  "\\<sml-mode-map>Major mode for editing Standard ML code.
+This mode runs `sml-mode-hook' just before exiting.
+See also (info \"(sml-mode)Top\").
+\\{sml-mode-map}"
+  (set (make-local-variable 'font-lock-defaults) sml-font-lock-defaults)
+  (set (make-local-variable 'outline-regexp) sml-outline-regexp)
+  (set (make-local-variable 'imenu-create-index-function)
+       'sml-imenu-create-index)
+  (set (make-local-variable 'add-log-current-defun-function)
+       'sml-current-fun-name)
+  ;; Treat paragraph-separators in comments as paragraph-separators.
+  (set (make-local-variable 'paragraph-separate)
+       (concat "\\([ \t]*\\*)?\\)?\\(" paragraph-separate "\\)"))
+  (set (make-local-variable 'require-final-newline) t)
+  (set (make-local-variable 'electric-indent-chars)
+       (cons ?\; (if (boundp 'electric-indent-chars)
+                     electric-indent-chars '(?\n))))
+  (set (make-local-variable 'electric-layout-rules)
+       `((?\; . ,(lambda ()
+                   (save-excursion
+                     (skip-chars-backward " \t;")
+                     (unless (or (bolp)
+                                 (progn (skip-chars-forward " \t;")
+                                        (eolp)))
+                       'after))))))
+  (when sml-electric-pipe-mode
+    (add-hook 'post-self-insert-hook #'sml-post-self-insert-pipe nil t))
+  (sml-mode-variables))
+
+(defun sml-mode-variables ()
+  (set (make-local-variable 'sml-prog-proc-descriptor) sml-pp-functions)
+  (set-syntax-table sml-mode-syntax-table)
+  (setq local-abbrev-table sml-mode-abbrev-table)
+  ;; Setup indentation and sexp-navigation.
+  (smie-setup sml-smie-grammar #'sml-smie-rules
+              :backward-token #'sml-smie-backward-token
+              :forward-token #'sml-smie-forward-token)
+  (set (make-local-variable 'parse-sexp-ignore-comments) t)
+  (set (make-local-variable 'comment-start) "(* ")
+  (set (make-local-variable 'comment-end) " *)")
+  (set (make-local-variable 'comment-start-skip) "(\\*+\\s-*")
+  (set (make-local-variable 'comment-end-skip) "\\s-*\\*+)")
+  ;; No need to quote nested comments markers.
+  (set (make-local-variable 'comment-quote-nested) nil))
+
+(defun sml-funname-of-and ()
+  "Name of the function this `and' defines, or nil if not a function.
+Point has to be right after the `and' symbol and is not preserved."
+  (forward-comment (point-max))
+  (if (looking-at sml-tyvarseq-re) (goto-char (match-end 0)))
+  (let ((sym (sml-smie-forward-token)))
+    (forward-comment (point-max))
+    (unless (or (member sym '(nil "d="))
+               (member (sml-smie-forward-token) '("d=")))
+      sym)))
+
+(defun sml-find-forward (re)
+  (while (progn (forward-comment (point-max))
+                (not (looking-at re)))
+    (or (ignore-errors (forward-sexp 1) t) (forward-char 1))))
+
+(defun sml-electric-pipe ()
+  "Insert a \"|\".
+Depending on the context insert the name of function, a \"=>\" etc."
+  (interactive)
+  (unless (save-excursion (skip-chars-backward "\t ") (bolp)) (insert "\n"))
+  (insert "| ")
+  (unless (sml-post-self-insert-pipe (1- (point)))
+    (indent-according-to-mode)))
+
+(defun sml-post-self-insert-pipe (&optional acp)
+  (when (or acp (and (eq ?| last-command-event)
+                     (setq acp (electric--after-char-pos))))
+    (let ((text
+           (save-excursion
+             (goto-char (1- acp))       ;Jump before the "|" we just inserted.
+             (let ((sym (sml-find-matching-starter sml-pipeheads
+                                                   ;; (sml-op-prec "|" 'back)
+                                                   )))
+               (sml-smie-forward-token)
+               (forward-comment (point-max))
+               (cond
+                ((string= sym "|")
+                 (let ((f (sml-smie-forward-token)))
+                   (sml-find-forward "\\(=>\\|=\\||\\)\\S.")
+                   (cond
+                    ((looking-at "|") nil)     ; A datatype or an OR pattern?
+                    ((looking-at "=>") " => ") ;`case', or `fn' or `handle'.
+                    ((looking-at "=")          ;A function.
+                     (cons (concat f " ")" = ")))))
+                ((string= sym "and")
+                 ;; Could be a datatype or a function.
+                 (let ((funname (sml-funname-of-and)))
+                   (if funname (cons (concat funname " ") " = ") nil)))
+                ((string= sym "fun")
+                 (while (and (setq sym (sml-smie-forward-token))
+                             (string-match "^'" sym))
+                   (forward-comment (point-max)))
+                 (cons (concat sym " ") " = "))
+                ((member sym '("case" "handle" "of")) " => ") ;; "fn"?
+                ;;((member sym '("abstype" "datatype")) "")
+                (t nil))))))
+      (when text
+        (save-excursion
+          (goto-char (1- acp))
+          (unless (save-excursion (skip-chars-backward "\t ") (bolp))
+            (insert "\n")))
+        (unless (memq (char-before) '(?\s ?\t)) (insert " "))
+        (let ((use-region (and (use-region-p) (< (point) (mark)))))
+          ;; (skeleton-proxy-new `(nil ,(if (consp text) (pop text)) _ ,text))
+          (when (consp text) (insert (pop text)))
+          (if (not use-region)
+              (save-excursion (insert text))
+            (goto-char (mark))
+            (insert text)))
+        (indent-according-to-mode)
+        t))))
+
+
+;;; Misc
+
+(defun sml-mark-function ()
+  "Mark the surrounding function.  Or try to at least."
+  (interactive)
+  ;; FIXME: Provide beginning-of-defun-function so mark-defun "just works".
+  (let ((start (point)))
+    (sml-beginning-of-defun)
+    (let ((beg (point)))
+      (smie-forward-sexp 'halfsexp)
+      (if (or (< start beg) (> start (point)))
+          (progn
+            (goto-char start)
+            (mark-paragraph))
+        (push-mark nil t t)
+        (goto-char beg)))))
+
+(defun sml-back-to-outer-indent ()
+  "Unindents to the next outer level of indentation."
+  (interactive)
+  (save-excursion
+    (forward-line 0)
+    (let ((start-column (current-indentation))
+          indent)
+      (when (> start-column 0)
+        (save-excursion
+          (while (>= (setq indent
+                           (if (re-search-backward "^[ \t]*[^\n\t]" nil t)
+                               (current-indentation)
+                             0))
+                     start-column))
+          (skip-chars-forward " \t")
+          (let ((pos (point)))
+            (move-to-column start-column)
+            (when (re-search-backward " \\([^ \t\n]\\)" pos t)
+              (goto-char (match-beginning 1))
+              (setq indent (current-column)))))
+        (indent-line-to indent)))))
+
+(defun sml-find-matching-starter (syms)
+  (let ((halfsexp nil)
+        tok)
+    ;;(sml-smie-forward-token)
+    (while (not (or (bobp)
+                    (member (nth 2 (setq tok (smie-backward-sexp halfsexp)))
+                            syms)))
+      (cond
+       ((null (car tok)) nil)
+       ((numberp (car tok)) (setq halfsexp 'half))
+       (t (goto-char (cadr tok)))))
+    (if (nth 2 tok) (goto-char (cadr tok)))
+    (nth 2 tok)))
+
+(defun sml-skip-siblings ()
+  (let (tok)
+    (while (and (not (bobp))
+                (progn (setq tok (smie-backward-sexp 'half))
+                       (cond
+                        ((null (car tok)) t)
+                        ((numberp (car tok)) t)
+                        (t nil)))))
+    (if (nth 2 tok) (goto-char (cadr tok)))
+    (nth 2 tok)))
+
+(defun sml-beginning-of-defun ()
+  (let ((sym (sml-find-matching-starter sml-starters-syms)))
+    (if (member sym '("fun" "and" "functor" "signature" "structure"
+                     "abstraction" "datatype" "abstype"))
+       (save-excursion (sml-smie-forward-token) (forward-comment (point-max))
+                       (sml-smie-forward-token))
+      ;; We're inside a "non function declaration": let's skip all other
+      ;; declarations that we find at the same level and try again.
+      (sml-skip-siblings)
+      ;; Obviously, let's not try again if we're at bobp.
+      (unless (bobp) (sml-beginning-of-defun)))))
+
+(defcustom sml-max-name-components 3
+  "Maximum number of components to use for the current function name."
+  :type 'integer)
+
+(defun sml-current-fun-name ()
+  (save-excursion
+    (let ((count sml-max-name-components)
+         fullname name)
+      (end-of-line)
+      (while (and (> count 0)
+                 (setq name (sml-beginning-of-defun)))
+       (decf count)
+       (setq fullname (if fullname (concat name "." fullname) name))
+       ;; Skip all other declarations that we find at the same level.
+       (sml-skip-siblings))
+      fullname)))
+
+
+;;; INSERTING PROFORMAS (COMMON SML-FORMS)
+
+(defvar sml-forms-alist nil
+  "Alist of code templates.
+You can extend this alist to your heart's content.  For each additional
+template NAME in the list, declare a keyboard macro or function (or
+interactive command) called 'sml-form-NAME'.
+If 'sml-form-NAME' is a function it takes no arguments and should
+insert the template at point\; if this is a command it may accept any
+sensible interactive call arguments\; keyboard macros can't take
+arguments at all.
+`sml-forms-alist' understands let, local, case, abstype, datatype,
+signature, structure, and functor by default.")
+
+(defmacro sml-def-skeleton (name interactor &rest elements)
+  (let ((fsym (intern (concat "sml-form-" name))))
+    `(progn
+       (add-to-list 'sml-forms-alist ',(cons name fsym))
+       (define-abbrev sml-mode-abbrev-table ,name "" ',fsym nil 'system)
+       (let ((abbrev (abbrev-symbol ,name sml-mode-abbrev-table)))
+         (abbrev-put abbrev :case-fixed t)
+         (abbrev-put abbrev :enable-function
+                     (lambda () (not (nth 8 (syntax-ppss))))))
+       (define-skeleton ,fsym
+         ,(format "SML-mode skeleton for `%s..' expressions" name)
+         ,interactor
+         ,(concat name " ") >
+         ,@elements))))
+(put 'sml-def-skeleton 'lisp-indent-function 2)
+
+(sml-def-skeleton "let" nil
+  @ "\nin " > _ "\nend" >)
+
+(sml-def-skeleton "if" nil
+  @ " then " > _ "\nelse " > _)
+
+(sml-def-skeleton "local" nil
+  @ "\nin" > _ "\nend" >)
+
+(sml-def-skeleton "case" "Case expr: "
+  str "\nof " > _ " => ")
+
+(sml-def-skeleton "signature" "Signature name: "
+  str " =\nsig" > "\n" > _ "\nend" >)
+
+(sml-def-skeleton "structure" "Structure name: "
+  str " =\nstruct" > "\n" > _ "\nend" >)
+
+(sml-def-skeleton "functor" "Functor name: "
+  str " () : =\nstruct" > "\n" > _ "\nend" >)
+
+(sml-def-skeleton "datatype" "Datatype name and type params: "
+  str " =" \n)
+
+(sml-def-skeleton "abstype" "Abstype name and type params: "
+  str " =" \n _ "\nwith" > "\nend" >)
+
+;;
+
+(sml-def-skeleton "struct" nil
+  _ "\nend" >)
+
+(sml-def-skeleton "sig" nil
+  _ "\nend" >)
+
+(sml-def-skeleton "val" nil
+  @ " = " > _)
+
+(sml-def-skeleton "fn" nil
+  @ " =>" > _)
+
+(sml-def-skeleton "fun" nil
+  @ " =" > _)
+
+;;
+
+(defun sml-forms-menu (_menu)
+  (mapcar (lambda (x) (vector (car x) (cdr x) t))
+         sml-forms-alist))
+
+(defvar sml-last-form "let")
+
+(defun sml-electric-space ()
+  "Expand a symbol into an SML form, or just insert a space.
+If the point directly precedes a symbol for which an SML form exists,
+the corresponding form is inserted."
+  (interactive)
+  (let ((abbrev-mode (not abbrev-mode))
+       (last-command-event ?\s)
+       ;; Bind `this-command' to fool skeleton's special abbrev handling.
+       (this-command 'self-insert-command))
+    (call-interactively 'self-insert-command)))
+
+(defun sml-insert-form (name newline)
+  "Interactive short-cut to insert the NAME common SML form.
+If a prefix argument is given insert a NEWLINE and indent first, or
+just move to the proper indentation if the line is blank\; otherwise
+insert at point (which forces indentation to current column).
+
+The default form to insert is 'whatever you inserted last time'
+\(just hit return when prompted\)\; otherwise the command reads with
+completion from `sml-forms-alist'."
+  (interactive
+   (list (completing-read
+         (format "Form to insert (default %s): " sml-last-form)
+         sml-forms-alist nil t nil nil sml-forms-alist)
+        current-prefix-arg))
+  (setq sml-last-form name)
+  (unless (or (not newline)
+             (save-excursion (beginning-of-line) (looking-at "\\s-*$")))
+    (insert "\n"))
+  (when (memq (char-syntax (preceding-char)) '(?_ ?w)) (insert " "))
+  (let ((f (cdr (assoc name sml-forms-alist))))
+    (cond
+     ((commandp f) (command-execute f))
+     (f (funcall f))
+     (t (error "Undefined SML form: %s" name)))))
+
+;;;
+;;; MLton support
+;;;
+
+(defvar sml-mlton-command "mlton"
+  "Command to run MLton.   Can include arguments.")
+
+(defvar sml-mlton-mainfile nil)
+
+(defconst sml-mlton-error-regexp-alist
+  ;; I wish they just changed MLton to use one of the standard
+  ;; error formats.
+  `(("^\\(?:Error\\|\\(Warning\\)\\): \\(.+\\) \\([0-9]+\\)\\.\\([0-9]+\\)\\.$"
+     2 3 4
+     ;; If subgroup 1 matched, then it's a warning, otherwise it's an error.
+     (1))))
+
+(defvar compilation-error-regexp-alist)
+(eval-after-load "compile"
+  '(dolist (x sml-mlton-error-regexp-alist)
+     (add-to-list 'compilation-error-regexp-alist x)))
+
+(defun sml-mlton-typecheck (mainfile)
+  "Typecheck using MLton.
+MAINFILE is the top level file of the project."
+  (interactive
+   (list (if (and sml-mlton-mainfile (not current-prefix-arg))
+             sml-mlton-mainfile
+           (read-file-name "Main file: "))))
+  (setq sml-mlton-mainfile mainfile)
+  (save-some-buffers)
+  (require 'compile)
+  (dolist (x sml-mlton-error-regexp-alist)
+    (add-to-list 'compilation-error-regexp-alist x))
+  (with-current-buffer (find-file-noselect mainfile)
+    (compile (concat sml-mlton-command
+                     " -stop tc "       ;Stop right after type checking.
+                     (shell-quote-argument
+                      (file-relative-name buffer-file-name))))))
+
+;;;
+;;; MLton's def-use info.
+;;;
+
+(defvar sml-defuse-file nil)
+
+(defun sml-defuse-file ()
+  (or sml-defuse-file (sml-defuse-set-file)))
+
+(defun sml-defuse-set-file ()
+  "Specify the def-use file to use."
+  (interactive)
+  (setq sml-defuse-file (read-file-name "Def-use file: ")))
+
+(defun sml-defuse-symdata-at-point ()
+  (save-excursion
+    (sml-smie-forward-token)
+    (let ((symname (sml-smie-backward-token)))
+      (if (equal symname "op")
+          (save-excursion (setq symname (sml-smie-forward-token))))
+      (when (string-match "op " symname)
+        (setq symname (substring symname (match-end 0)))
+        (forward-word)
+        (forward-comment (point-max)))
+      (list symname
+            ;; Def-use files seem to count chars, not columns.
+            ;; We hope here that they don't actually count bytes.
+            ;; Also they seem to start counting at 1.
+            (1+ (- (point) (progn (beginning-of-line) (point))))
+            (save-restriction
+              (widen) (1+ (count-lines (point-min) (point))))
+            buffer-file-name))))
+
+(defconst sml-defuse-def-regexp
+  "^[[:alpha:]]+ \\([^ \n]+\\) \\(.+\\) \\([0-9]+\\)\\.\\([0-9]+\\)$")
+(defconst sml-defuse-use-regexp-format "^    %s %d\\.%d $")
+
+(defun sml-defuse-jump-to-def ()
+  "Jump to the definition corresponding to the symbol at point."
+  (interactive)
+  (let ((symdata (sml-defuse-symdata-at-point)))
+    (if (null (car symdata))
+        (error "Not on a symbol")
+      (with-current-buffer (find-file-noselect (sml-defuse-file))
+        (goto-char (point-min))
+        (unless (re-search-forward
+                 (format sml-defuse-use-regexp-format
+                         (concat "\\(?:"
+                                 ;; May be an absolute file name.
+                                 (regexp-quote (nth 3 symdata))
+                                 "\\|"
+                                 ;; Or a relative file name.
+                                 (regexp-quote (file-relative-name
+                                                (nth 3 symdata)))
+                                 "\\)")
+                         (nth 2 symdata)
+                         (nth 1 symdata))
+                 nil t)
+          ;; FIXME: This is typically due to editing: any minor editing will
+          ;; mess everything up.  We should try to fail more gracefully.
+          (error "Def-use info not found"))
+        (unless (re-search-backward sml-defuse-def-regexp nil t)
+          ;; This indicates a bug in this code.
+          (error "Internal failure while looking up def-use"))
+        (unless (equal (match-string 1) (nth 0 symdata))
+          ;; FIXME: This again is most likely due to editing.
+          (error "Incoherence in the def-use info found"))
+        (let ((line (string-to-number (match-string 3)))
+              (char (string-to-number (match-string 4))))
+          (pop-to-buffer (find-file-noselect (match-string 2)))
+          (goto-char (point-min))
+          (forward-line (1- line))
+          (forward-char (1- char)))))))
+
+;;;
+;;; SML/NJ's Compilation Manager support
+;;;
+
+(defvar sml-cm-mode-syntax-table sml-mode-syntax-table)
+(defvar sml-cm-font-lock-keywords
+ `(,(concat "\\_<" (regexp-opt '("library" "group" "is" "structure"
+                               "functor" "signature" "funsig") t)
+           "\\_>")))
+;;;###autoload
+(add-to-list 'completion-ignored-extensions ".cm/")
+;; This was used with the old compilation manager.
+(add-to-list 'completion-ignored-extensions "CM/")
+;;;###autoload
+(add-to-list 'auto-mode-alist '("\\.cm\\'" . sml-cm-mode))
+;;;###autoload
+(define-derived-mode sml-cm-mode fundamental-mode "SML-CM"
+  "Major mode for SML/NJ's Compilation Manager configuration files."
+  (set (make-local-variable 'sml-prog-proc-descriptor) sml-pp-functions)
+  (set (make-local-variable 'font-lock-defaults)
+       '(sml-cm-font-lock-keywords nil t nil nil)))
+
+;;;
+;;; ML-Lex support
+;;;
+
+(defvar sml-lex-font-lock-keywords
+  (append
+   `((,(concat "^%" sml-id-re) . font-lock-builtin-face)
+     ("^%%" . font-lock-module-def-face))
+   sml-font-lock-keywords))
+(defconst sml-lex-font-lock-defaults
+  (cons 'sml-lex-font-lock-keywords (cdr sml-font-lock-defaults)))
+
+;;;###autoload
+(define-derived-mode sml-lex-mode sml-mode "SML-Lex"
+  "Major Mode for editing ML-Lex files."
+  (set (make-local-variable 'font-lock-defaults) sml-lex-font-lock-defaults))
+
+;;;
+;;; ML-Yacc support
+;;;
+
+(defface sml-yacc-bnf-face
+  '((t (:foreground "darkgreen")))
+  "Face used to highlight (non)terminals in `sml-yacc-mode'.")
+(defvar sml-yacc-bnf-face 'sml-yacc-bnf-face)
+
+(defcustom sml-yacc-indent-action 16
+  "Indentation column of the opening paren of actions."
+  :type 'integer)
+
+(defcustom sml-yacc-indent-pipe nil
+  "Indentation column of the pipe char in the BNF.
+If nil, align it with `:' or with previous cases."
+  :type 'integer)
+
+(defcustom sml-yacc-indent-term nil
+  "Indentation column of the (non)term part.
+If nil, align it with previous cases."
+  :type 'integer)
+
+(defvar sml-yacc-font-lock-keywords
+  (cons `((concat "^\\(" sml-id-re "\\s-*:\\|\\s-*|\\)\\(\\s-*" sml-id-re
+                  "\\)*\\s-*\\(\\(%" sml-id-re "\\)\\s-+" sml-id-re "\\|\\)")
+          (0 (save-excursion
+               (save-match-data
+                 (goto-char (match-beginning 0))
+                 (unless (or (re-search-forward "\\_<of\\_>"
+                                                (match-end 0) 'move)
+                             (progn (forward-comment (point-max))
+                                    (not (looking-at "("))))
+                   sml-yacc-bnf-face))))
+          (4 font-lock-builtin-face t t))
+        sml-lex-font-lock-keywords))
+(defconst sml-yacc-font-lock-defaults
+  (cons 'sml-yacc-font-lock-keywords (cdr sml-font-lock-defaults)))
+
+(defun sml-yacc-indent-line ()
+  "Indent current line of ML-Yacc code."
+  (let ((savep (> (current-column) (current-indentation)))
+       (indent (max (or (ignore-errors (sml-yacc-indentation)) 0) 0)))
+    (if savep
+       (save-excursion (indent-line-to indent))
+      (indent-line-to indent))))
+
+(defun sml-yacc-indentation ()
+  (save-excursion
+    (back-to-indentation)
+    (or (and (looking-at (eval-when-compile
+                           (concat "%\\|" sml-id-re "\\s-*:")))
+             0)
+       (when (save-excursion
+               (condition-case nil (progn (up-list -1) nil) (scan-error t)))
+         ;; We're outside an action.
+         (cond
+          ;; Special handling of indentation inside %term and %nonterm
+          ((save-excursion
+             (and (re-search-backward "^%\\(\\sw+\\)" nil t)
+                  (member (match-string 1) '("term" "nonterm"))))
+           (if (numberp sml-yacc-indent-term) sml-yacc-indent-term
+             (let ((offset (if (looking-at "|") -2 0)))
+               (forward-line -1)
+               (looking-at "\\s-*\\(%\\sw*\\||\\)?\\s-*")
+               (goto-char (match-end 0))
+               (+ offset (current-column)))))
+          ((looking-at "(") sml-yacc-indent-action)
+          ((looking-at "|")
+           (if (numberp sml-yacc-indent-pipe) sml-yacc-indent-pipe
+             (backward-sexp 1)
+             (while (progn (forward-comment (- (point)))
+                           (/= 0 (skip-syntax-backward "w_"))))
+             (forward-comment (- (point)))
+             (if (not (looking-at "\\s-$"))
+                 (1- (current-column))
+               (skip-syntax-forward " ")
+               (- (current-column) 2))))))
+       ;; default to SML rules
+        (smie-indent-calculate))))
+
+;;;###autoload
+(add-to-list 'auto-mode-alist '("\\.grm\\'" . sml-yacc-mode))
+;;;###autoload
+(define-derived-mode sml-yacc-mode sml-mode "SML-Yacc"
+  "Major Mode for editing ML-Yacc files."
+  (set (make-local-variable 'indent-line-function) 'sml-yacc-indent-line)
+  (set (make-local-variable 'font-lock-defaults) sml-yacc-font-lock-defaults))
+
+\f
+(provide 'sml-mode)
+
+;;; sml-mode.el ends here
diff --git a/packages/sml-mode/sml-mode.spec b/packages/sml-mode/sml-mode.spec
new file mode 100644 (file)
index 0000000..f0d8437
--- /dev/null
@@ -0,0 +1,67 @@
+%define lispdir                %{_datadir}/emacs/site-lisp
+%define startupfile    %{lispdir}/site-start.el
+
+Summary:       Emacs mode for editing Standard ML source code
+Name:          sml-mode
+Version:       $Name$
+Release:       0.1
+Group:         Applications/Editors
+Copyright:     GPL
+Packager:      Stefan Monnier
+Source:                http://iro.umontreal.ca/~monnier/elisp/%{name}.tar.gz
+Buildroot:     %{_tmppath}/%{name}-buildroot
+BuildPreReq:   emacs >= 20 xemacs >= 21
+BuildArch:     noarch
+
+%description
+SML-MODE is a major Emacs mode for editing Standard ML. It provides
+syntax highlighting and automatic indentation and comes with sml-proc
+which allows interaction with an inferior SML interactive loop.
+
+%prep
+%setup -q -n %{name}
+
+%install
+make install \
+  prefix=%{buildroot}%{_prefix} \
+  infodir=%{buildroot}%{_infodir} \
+  lispdir=%{buildroot}%{lispdir}
+gzip -9f %{buildroot}%{lispdir}/sml-mode/*.el
+
+texi2pdf sml-mode.texi
+
+%post
+cat >> %{lispdir}/site-start.el <<EOF
+;; sml-mode-start
+;; This section was automatically generated by rpm
+(load "sml-mode-startup")
+;; End of automatically generated section
+;; sml-mode-end
+EOF
+
+/sbin/install-info %{_infodir}/sml-mode.info.gz %{_infodir}/dir
+
+%postun
+ed -s %{lispdir}/site-start.el <<EOF
+/^;; sml-mode-start$/,/^;; sml-mode-end$/d
+wq
+EOF
+
+/sbin/install-info --delete %{_infodir}/sml-mode.info.gz %{_infodir}/dir \
+    --section=Emacs \
+    --entry="* SML: (sml-mode).    Editing & Running Standard ML from Emacs"
+
+%clean
+rm -rf %{buildroot}
+
+%files
+%defattr(-,root,root)
+%doc BUGS ChangeLog INSTALL NEWS README TODO
+%doc sml-mode.texi sml-mode.pdf
+%doc %{_infodir}/*.info*
+%dir %{lispdir}/%{name}
+%{lispdir}/%{name}/*.elc
+%{lispdir}/%{name}/*.el
+%{lispdir}/%{name}/*.el.*
+
+%changelog
diff --git a/packages/sml-mode/sml-mode.texi b/packages/sml-mode/sml-mode.texi
new file mode 100644 (file)
index 0000000..d9980f7
--- /dev/null
@@ -0,0 +1,1143 @@
+\input texinfo @c -*-texinfo-*-
+
+@comment "@(#)$Name$:$Id$"
+
+@comment Documentation for the GNU Emacs SML mode.
+@comment Copyright (C) 1997-1999 Matthew J.@: Morley
+
+@comment This file is part of the sml-mode distribution.
+
+@comment sml-mode is free software; you can redistribute it and/or modify
+@comment it under the terms of the GNU General Public License as published by
+@comment the Free Software Foundation; either version 3 of the License,
+@comment or (at your option) any later version.
+
+@comment sml-mode is distributed in the hope that it will be useful,
+@comment but WITHOUT ANY WARRANTY; without even the implied warranty of
+@comment MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+@comment GNU General Public License for more details.
+
+@comment You should have received a copy of the GNU General Public License
+@comment along with sml-mode; see the file COPYING.  If not, write to
+@comment the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+@setfilename sml-mode.info
+@settitle SML mode - The Emacs SML editing mode
+@dircategory Emacs
+@direntry
+* sml:(sml-mode).      Emacs mode for editing SML
+@end direntry
+@setchapternewpage on
+
+@titlepage
+@sp 5
+@center @titlefont{Editing and Running Standard ML}
+@center @titlefont{under GNU Emacs}
+@sp 5
+@center {SML mode, Version $Name$}
+@center {August 1999}
+@sp 2
+@author Authors: Matthew J.@: Morley and Stefan Monnier
+
+@page
+@vskip 0pt plus 1filll
+Copyright @copyright{} (Anon) 
+
+@sp 1
+@noindent
+GNU General Public License as published by the Free Software Foundation;
+either version 3, or (at your option) any later version.
+
+@sp 1
+@noindent
+SML mode is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+Public License for more details.
+
+@sp 1
+@noindent
+You should have received a copy of the GNU General Public License along
+with GNU Emacs; see the file COPYING. If not, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+@end titlepage
+
+@setchapternewpage off
+@headings double
+
+@c ============================================================ TOP NODE
+
+@node Top, Copying, (dir), (dir)
+
+@ifinfo
+@chapter SML Mode Info
+
+@c == Top, Copying, (dir), (dir) =======================================
+
+@noindent
+You are looking at the top node of the Info tree documenting
+@sc{sml-mode} (Version $Name$). Not all functions are documented here, but
+those that aren't you probably won't miss. All commands and settable
+variables have built-in documentation, as per usual Emacs conventions.
+@end ifinfo
+
+@menu
+* Copying::             You can copy SML mode
+* Introduction::        Setting things up
+* SML Mode::            Editing SML source
+* Interaction Mode::    Running ML processes
+* Configuration::       Menus, highlighting, setting defaults
+
+Indexes
+* Command Index::       Commands you can invoke
+* Variable Index::      Variables you can set
+* Key Index::           Default keybindings
+
+Introduction
+* Contributors::        Who did what
+* Getting Started::     What to tell Emacs
+* Getting Help::        How Emacs can help
+
+SML Mode
+* Basics::              On entering SML mode
+* Indentation::         Prettying SML text
+* Magic Insertion::     Templates and electric keys
+* SML Mode Defaults::   Variables controlling indentation
+
+Interaction Mode
+* Running ML::          Commands to run the ML compiler in a buffer
+* ML Interaction::      Sending program fragments to the compiler
+* Tracking Errors::     Finding reported syntax errors
+* Process Defaults::    Setting defaults for process interaction
+
+Configuration
+* Hooks::               Creating hooks
+* Key Bindings::        Binding commands to keys
+* Highlighting::        Syntax colouring
+* Advanced Topics::     You may need to speak Emacs Lisp
+@end menu
+
+
+@c ============================================================= COPYING
+
+@node Copying, Introduction, Top, Top
+
+@ifinfo
+@chapter Copying
+
+@c == Copying, Introduction, Top, Top ==================================
+
+@noindent
+You can freely copy, modify and redistribute SML mode because it's
+made available under the liberal terms of the GNU General Public
+License.
+
+GNU General Public License as published by the Free Software Foundation;
+either version 3, or (at your option) any later version.
+
+SML mode is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+Public License for more details.
+
+You should have received a copy of the GNU General Public License along
+with GNU Emacs; see the file COPYING. If not, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+@end ifinfo
+
+
+
+
+@c ======================================================== INTRODUCTION
+
+@node Introduction, SML Mode, Copying, Top
+
+@chapter Introduction
+
+@c == Introduction, SML Mode, Copying, Top =============================
+
+
+@noindent
+SML mode is a major mode for Emacs for editing Standard ML. It has
+some novel bugs, and some nice features:
+
+@itemize @bullet
+@item
+Automatic indentation of sml code---a number of variables to customise
+the indentation.
+@item
+Easy insertion for commonly used templates like let, local, signature,
+and structure declarations, with minibuffer prompting for types and
+expressions.
+@item
+Magic pipe insertion: @code{|} automatically determines if it is used
+in a case or fun construct, and indents the next line as appropriate, 
+inserting @code{=>} or the name of the function.
+@item
+Inferior shell for running ML. There's no need to leave Emacs, just keep
+on editing while the compiler runs in another window.
+@item
+Automatic ``use file'' in the inferior shell---you can send files,
+buffers, or regions of code to the ML subprocess.
+@item
+Menus, and syntax and keyword highlighting supported for Emacs 19 and
+derivatives.
+@item
+Parsing errors from the inferior shell, and repositioning the
+source with next-error---just like in c-mode.
+@item
+SML mode can be easily configured to work with a number of Standard
+ML compilers, and other SML based tools.
+@end itemize
+
+@menu
+* Contributors::        Who did what
+* Getting Started::     What to tell Emacs
+* Getting Help::        How Emacs can help
+@end menu
+
+
+
+@c ======================================================== CONTRIBUTORS
+
+@node Contributors, Getting Started, Introduction, Introduction
+
+@section Contributors to the SML mode
+@cindex Contributors
+@cindex Authors
+
+Contributions to the package are welcome.  I have limited time to work
+on this project, but I will gladly add any code that you contribute to
+me to this package.
+
+Although the history of sml-mode is obscure, it seems that
+the following persons have made contributions to sml-mode:
+
+@itemize @bullet
+@item
+Lars Bo Nielsen wrote the original version of the code, providing the
+sml editing mode and the inferior-sml support.
+
+@item
+Olin Shivers (@samp{shivers@@ai.mit.edu}) hacked the inferior-sml support
+to use comint and call the whole thing ml-mode.
+
+@item
+Steven Gilmore supposedly provided some early attempt at menubar support.
+
+@item
+Matthew J. Morley (@samp{matthew@@verisity.com}) was maintainer for
+a long time (until version 3.4) and provided many additions and fixes in
+all areas.
+
+@item
+Frederick Knabe (@samp{knabe@@ecrc.de}) provided the original code for
+font-lock and hilite support as well as for proper handling of nested
+comments and of all the string escape sequences.
+
+@item
+Matthias Blume (@samp{blume@@kurims.kyoto-u.ac.jp}) provided a sml-make
+which was replaced by sml-compile.
+
+@item
+Monnier Stefan (@samp{monnier@@iro.umontreal.ca}) completely reworked the
+indentation engine as well as most of the rest of the code and is
+the current maintainer since after version 3.4.
+
+@end itemize
+
+
+@c ===================================================== GETTING STARTED
+
+@node Getting Started, Getting Help, Contributors, Introduction
+
+@section Getting started
+
+@c == Getting Started, Getting Help, Contributors, Introduction ========
+
+
+@noindent
+With luck your system administrator will have installed SML mode
+somewhere convenient, so it will just magically all work---you can
+skip the rest of this getting started section. Otherwise you will need
+to tell Emacs where to find all the SML mode @file{.el} files, and
+when to use them. The where is addressed by locating the Lisp code on
+your Emacs Lisp load path---you may have to create a directory for this,
+say @file{/home/mjm/elisp}, and then insert the following lines in your
+@file{/home/mjm/.emacs} file:
+
+@lisp
+(add-to-list 'load-path "/home/mjm/elisp")
+(autoload 'sml-mode "sml-mode" "Major mode for editing SML." t)
+(autoload 'run-sml "sml-proc" "Run an inferior SML process." t)
+@end lisp
+
+@noindent
+The first line adjusts Emacs' internal search path so it can locate the
+Lisp source you have copied to that directory; the second and third
+lines tell Emacs to load the code automatically when it is needed. You
+can then switch any Emacs buffer into SML mode by entering the command
+
+@example
+M-x sml-mode
+@end example
+
+@noindent
+It is usually more convenient to have Emacs automatically place the
+buffer in SML mode whenever you visit a file containing ML
+programs. The simplest way of achieving this is to put something like
+
+@lisp
+(add-to-list 'auto-mode-alist '("\\.\\(sml\\|sig\\)\\'" . sml-mode))
+@end lisp
+
+@noindent
+also in your @file{.emacs} file. Subsequently (after a restart), any
+files with these extensions will be placed in SML mode buffers when
+you visit them.
+
+
+You may want to pre-compile the @file{sml-*.el} files (@kbd{M-x
+byte-compile-file}) for greater speed---byte compiled code loads and
+runs somewhat faster.
+
+
+@c ======================================================== GETTING HELP
+
+@node Getting Help, , Getting Started, Introduction
+
+@section Help!
+
+@c == Getting Help, , Getting Started, Introduction ====================
+
+
+@noindent
+You're reading it. Apart from the on-line info tree (@kbd{C-h i} is the
+Emacs key to enter the @code{info} system---you should follow the brief
+tutorial if this is unfamiliar), there are further details on specific
+commands in their documentation strings. Only the most useful
+SML mode commands are documented in the info tree: to find out more
+use Emacs' help facilities.
+
+Briefly, to get help on a specific function use @kbd{C-h f} and enter
+the command name. All (almost all, then) SML mode commands begin
+with @code{sml-}, so if you type this and press @key{TAB} (for
+completion) you will get a list of all commands. Another way is to use
+@kbd{C-h a} and enter the string @code{sml}. This is command apropos; it
+will list all commands with that sub-string in their names, and any key
+binding they may have in the current buffer. Command apropos gives a
+one-line synopsis of what each command does.
+
+Some commands are also variables---such things are allowed in Lisp, if
+not in ML! @xref{Command Index}, for a list of (info) documented
+functions. @xref{Variable Index}, for a list of user settable variables
+to control the behaviour of SML mode.
+
+Before accessing this information on-line from within Emacs you may have
+to set the variable @code{sml-mode-info}. Put in your @file{.emacs} file
+something like:
+
+@vindex sml-mode-info
+@findex sml-mode-info
+@kindex @kbd{C-c C-i}
+@lisp
+(setq sml-mode-info "/home/mjm/info/sml-mode.info")
+@end lisp
+
+@noindent
+When different from the default this variable should be a string giving
+the absolute name of the @file{.info} file. Then @kbd{C-c C-i} in
+SML mode (i.e., the command @kbd{M-x sml-mode-info}) will bring up
+the manual. This help is also accessible from the menu. (Resetting this
+variable will not be necessary if your site administrator has been kind
+enough to install SML mode and its attendant documentation in the
+Emacs hierarchy.)
+
+
+@c ============================================================ SML MODE
+
+@node SML Mode, Interaction Mode, Introduction, Top
+
+@chapter Editing with SML Mode
+
+@c == SML Mode, Interaction Mode, Introduction, Top ====================
+
+
+@noindent
+Now SML mode provides just a few additional editing commands. Most of
+the work has gone into implementing the indentation algorithm which, if
+you think about it, has to be complicated for a language like
+ML. @xref{SML Mode Defaults,,Indentation Defaults}, for details on how
+to control some of the behaviour of the indentation algorithm. Principal
+goodies are the `electric pipe' feature, and the ability to insert
+common SML forms (macros or templates).
+
+@menu
+* Basics::              On entering SML mode
+* Indentation::         Prettying SML text
+* Magic Insertion::     Templates and electric keys
+* SML Mode Defaults::   Variables controlling indentation
+@end menu
+
+
+@c ============================================================== BASICS
+
+@node Basics, Indentation, SML Mode, SML Mode
+
+@section On entering SML mode
+
+@c == Basics, Indentation, SML Mode, SML Mode ==========================
+
+@noindent
+
+
+@deffn Command sml-mode
+This switches a buffer into SML mode. This is a @emph{major mode} in
+Emacs. To get out of SML mode the buffer's major mode must be set to
+something else, like @t{text-mode}. @xref{Getting Started}, for details
+on how to set this up automatically when visiting an SML file.
+@end deffn
+
+Emacs is all hooks of course. A hook is a variable: if the variable is
+non-nil it binds a list of Emacs Lisp functions to be run in some order
+(usually left to right). You can customise SML mode with these
+hooks:
+
+
+@defvr Hook sml-mode-hook
+Default: @code{nil}
+
+This is run every time a new SML mode buffer is created (or if you
+type @kbd{M-x sml-mode}). This is one place to put your preferred key
+bindings. @xref{Configuration}, for some examples.
+@end defvr
+
+
+@c ========================================================= INDENTATION
+
+@node Indentation, Magic Insertion, Basics, SML Mode
+
+@section Automatic indentation
+
+@c == Indentation, Magic Insertion, Basics, SML Mode ===================
+
+
+@noindent
+ML is a complicated language to parse, let alone compile. The
+indentation algorithm is a little wooden (for some tastes), and the best
+advice is not to fight it! There are several variables that can be
+adjusted to control the indentation algorithm (@pxref{SML Mode
+Defaults,,Customising SML Mode}, below).
+
+
+@deffn Command indent-for-tab-command
+Key: @key{TAB}
+@kindex @key{TAB}
+
+This command indents the current line. If you set the indentation of the
+previous line by hand, @code{indent-for-tab-command} will indent relative to
+this setting.
+@end deffn
+
+
+@deffn Command indent-region
+Key: @kbd{C-M-\}
+@kindex @kbd{C-M-\}
+
+Indent the current region. Be patient if the region is large (like the
+whole buffer).
+@end deffn
+
+
+@deffn Command sml-back-to-outer-indent
+Key: @kbd{M-@key{TAB}}
+@kindex @kbd{M-@key{TAB}}
+
+Unindents the line to the next outer level of indentation.
+@end deffn
+
+
+
+Further indentation commands that Emacs provides (generically, for all
+modes) that you may like to recall:
+
+@itemize @minus
+@item
+@kbd{M-x newline-and-indent}
+
+On @key{LFD} by default.
+@kindex @key{LFD}
+Insert a newline, then indent according to the major mode. @xref{Program
+Indent,,Indentation for Programs,emacs,The Emacs Editor Manual}, for
+details.
+
+@item
+@kbd{M-x indent-rigidly}
+
+On @kbd{C-x @key{TAB}} by default.
+@kindex @kbd{C-x @key{TAB}}
+Moves all lines in the region right by its argument (left, for negative
+arguments). @xref{Indentation,,,emacs,The Emacs Editor Manual}.
+
+@item
+@kbd{M-x indent-for-comment} 
+
+On @kbd{M-;} by default.
+@kindex @kbd{M-;}
+Indent this line's comment to comment column, or insert an empty
+comment. @xref{Comment Commands,,,emacs,The Emacs Editor
+Manual}.
+
+@item
+@kbd{M-x indent-new-comment-line}
+
+On @kbd{M-@key{LFD}} by default.
+@kindex @kbd{M-@key{LFD}}
+Break line at point and indent, continuing comment if within one.
+@xref{Multi-Line Comments,,,emacs,The Emacs Editor Manual}.
+@end itemize
+
+@kindex @kbd{C-x ;}
+As with other language modes, @kbd{M-;} gives you a comment at the end
+of the current line. The column where the comment starts is determined
+by the variable @code{comment-column}---default is 40, but it can be
+changed with @code{set-comment-column} (on @kbd{C-x ;} by default).
+
+
+@c ===================================================== MAGIC INSERTION
+
+@node Magic Insertion, SML Mode Defaults, Indentation, SML Mode
+
+@section Electric features
+
+@c == Magic Insertion, SML Mode Defaults, Indentation, SML Mode ========
+
+
+@noindent
+Electric keys are generally pretty irritating, so those provided by
+SML mode are fairly muted. The only truly electric key is @kbd{;},
+and this has to be enabled to take effect.
+
+
+@deffn Command sml-electric-pipe
+Key: @kbd{M-|}
+@kindex @kbd{M-|}
+
+When the point is in a `case' statement this opens a new line, indents
+and inserts @code{| =>} leaving point just before the double arrow; if
+the enclosing construct is a `fun' declaration, the newline is indented
+and the function name copied at the appropriate column. Generally, try
+it whenever a @code{|} is wanted---you'll like it!
+@end deffn
+
+@deffn Command sml-electric-space
+Key: @kbd{M-SPC}
+@kindex @kbd{M-SPC}
+
+When the point is after a keyword like `let', this inserts the
+corresponding predefined skeleton if one exists.  Else it just inserts a
+space.  Another way to insert those skeletons is to use
+@code{sml-insert-form}, described below.
+@end deffn
+
+@deffn Command sml-insert-form
+Key: @kbd{C-c @key{RET}}
+@kindex @kbd{C-c @key{RET}}
+
+Interactive short-cut to insert common ML forms (a.k.a.@: macros, or
+templates). Recognised forms are `let', `local', `case', `abstype',
+`datatype', `signature', `structure', and `functor'. Except for `let'
+and `local', these will prompt for appropriate parameters like functor
+name and signature, etc.. This command prompts in the mini-buffer, with
+completion.
+
+By default @kbd{C-c @key{RET}} will insert at point, with the
+indentation of the current column; if you give a prefix argument (i.e.,
+@kbd{C-u C-c @key{RET}}) the command will insert a newline first,
+indent, and then insert the template.
+@end deffn
+
+@code{sml-insert-form} is also extensible: see @ref{Configuration} for
+further details.
+
+
+
+@c ======================================================= MODE DEFAULTS
+
+@node SML Mode Defaults, , Magic Insertion, SML Mode
+
+@section Indentation defaults
+
+@c == SML Mode Defaults, , Magic Insertion, SML Mode ===================
+
+
+@noindent
+Several variables try to control the indentation algorithm and other
+features of SML mode.  Most of them are still in flux so they are not
+described here yet.
+If the default values are not acceptable you can set these variables
+permanently in your @file{.emacs} file. @xref{Configuration}, for
+details and examples.
+
+
+@defvr Variable sml-indent-level
+@findex sml-indent-level
+Default: @code{4}
+
+This variable controls the block indentation level.
+@end defvr
+
+@c end vtable
+
+
+@c ========================================================= INTERACTION
+
+@node Interaction Mode, Configuration, SML Mode, Top
+
+@chapter Running ML under Emacs
+
+@c == Interaction Mode, Configuration, SML Mode, Top ===================
+
+
+@noindent
+The most useful feature of SML mode is that it provides a convenient
+interface to the compiler. How serious users of ML put up with a
+teletype interface to the compiler is beyond me@.@.@. but perhaps there
+are other interfaces to compilers that require one to part with serious
+money. Such remarks can quickly become dated---in this case, let's hope
+so!
+
+Anyway, SML mode provides an interaction mode,
+@code{inferior-sml-mode}, where the compiler runs in a separate buffer
+in a window or frame of its own. You can use this buffer just like a
+terminal, but it's usually more convenient to mark some text in the
+SML mode buffer and have Emacs communicate with the sub-process. The
+features discussed below are syntax-independent, so they should work
+with a wide range of ML-like tools and compilers. @xref{Process
+Defaults}, for some hints.
+
+@findex inferior-sml-mode
+@code{inferior-sml-mode} is a specialisation of the @file{comint}
+package that comes with Emacs and XEmacs.
+
+
+@menu
+* Running ML::          Commands to run the ML compiler in a buffer
+* ML Interaction::      Sending program fragments to the compiler
+* Tracking Errors::     Finding reported syntax errors
+* Process Defaults::    Setting defaults for process interaction
+@end menu
+
+
+
+@c ========================================================== RUNNING ML
+
+@node Running ML, ML Interaction, Interaction Mode, Interaction Mode
+
+@section Starting the compiler
+
+@c == Running ML, ML Interaction, Interaction Mode, Interaction Mode ==
+
+@noindent
+Start your favourite ML compiler with the command
+
+@example
+@kbd{M-x run-sml}
+@end example
+
+@noindent
+This creates a process interaction buffer that inherits some key
+bindings from SML mode and from @file{comint} (@pxref{Shell Mode, ,
+, emacs, The Emacs Editor Manual}). Starting the ML compiler adds some
+functions to SML mode buffers so that program text can be
+communicated between editor and compiler (@pxref{ML Interaction}).
+
+The name of the ML compiler is the first thing you should know how to
+specify:
+
+
+@defvar sml-program-name
+Default: @code{"sml"}
+
+The program to run as ML. You might need to specify the full path name
+of the program.
+@end defvar
+
+
+@defvar sml-default-arg
+Default: @code{""}
+
+Useful for Poly/ML users who may supply a database file, or others who
+have wrappers for setting various options around the command to run the
+compiler. Moscow ML people might set this to @code{"-P full"}, etc..
+@end defvar
+
+The variable @code{sml-program-name} is a string holding the name
+of the program @emph{as you would type it at the shell}. You 
+can always choose a program different to the default by invoking
+
+@example
+@kbd{C-u M-x run-sml}
+@end example
+
+@noindent
+With the prefix argument Emacs will prompt for the command name and any
+command line arguments to pass to the compiler. Thereafter Emacs will
+use this new name as the default, but for a permanent change you should
+set this in your @file{.emacs} with, e.g.:
+
+@lisp
+(setq sml-program-name "nj-sml")
+@end lisp
+
+
+@deffn Command run-sml
+Launches ML as an inferior process in another buffer; if an ML process
+already exists, just switch to the process buffer. A prefix argument
+allows you to edit the command line to specify the program, and any
+command line options.
+@end deffn
+
+
+@defvr Hook inferior-sml-mode-hook
+Default: @code{nil}
+
+@kbd{M-x run-sml} runs @code{comint-mode-hook} and
+@code{inferior-sml-mode-hook} hooks in that order, but @emph{after} the
+compiler is started. Use @code{inferior-sml-mode-hook} to set any
+@code{comint} buffer-local configurations for SML mode you like.
+@end defvr
+
+
+@deffn Command switch-to-sml
+Key: @kbd{C-c C-s}
+@kindex @kbd{C-c C-s}
+
+Switch from the SML buffer to the interaction buffer. By default point
+will be placed at the end of the process buffer, but a prefix argument
+will leave point wherever it was before. If you try @kbd{C-c C-s} before
+an ML process has been started, you'll just get an error message to the
+effect that there's no current process buffer.
+@end deffn
+
+
+@deffn Command sml-cd
+When started, the ML compiler's default working directory is the
+current buffer's default directory. This command allows the working
+directory to be changed, if the compiler can do this. The variable
+@code{sml-cd-command} specifies the compiler command to invoke
+(@pxref{Process Defaults}).
+@end deffn
+
+
+@c ======================================================== SENDING TEXT
+
+@node ML Interaction, Tracking Errors, Running ML, Interaction Mode
+
+@section Speaking to the compiler
+
+@c == ML Interaction, Tracking Errors, Running ML, Interaction Mode ====
+
+
+@noindent
+Several commands are defined for sending program fragments to the
+running compiler. Each of the following commands takes a prefix argument
+that will switch the input focus to the process buffer afterwards
+(leaving point at the end of the buffer):
+
+
+@deffn Command sml-load-file
+Key: @kbd{C-c C-l}
+@kindex @kbd{C-c C-l}
+
+Send a `use file' command to the current ML process. The variable
+@code{sml-use-command} is used to define the correct template for the
+command to invoke (@pxref{Process Defaults}). The default file is the
+file associated with the current buffer, or the last file loaded if you
+are in the interaction buffer.
+@end deffn
+
+
+
+@deffn Command sml-send-region
+@findex sml-send-region-and-go
+Key: @kbd{C-c C-r}
+@kindex @kbd{C-c C-r}
+
+Send the current region of text in the SML buffer.
+@code{sml-send-region-and-go} is a similar command for you to bind in
+SML mode if you wish: it'll send the region and then switch-to-sml.
+@end deffn
+
+@c @deffn Command sml-send-function
+@c @findex sml-send-function-and-go
+
+@c Send the enclosing `function' definition. Contrary to the suggestive
+@c name, this command @emph{does not} try to determine the extent of the
+@c function definition because that is too difficult with ML. Instead
+@c this just sends the enclosing @emph{paragraph} (delimited by blank
+@c lines or form-feed characters).
+@c @end deffn
+
+@deffn Command sml-send-buffer
+Key: @kbd{C-c C-b}
+@kindex @kbd{C-c C-b}
+
+Send the contents of the current buffer to ML.
+@end deffn
+
+@c ===================================================== TRACKING ERRORS
+
+@node Tracking Errors, Process Defaults, ML Interaction, Interaction Mode
+
+@section Finding errors
+
+@c == Tracking Errors, Process Defaults, ML Interaction, Interaction Mode
+
+
+@noindent
+SML mode provides one customisable function for locating the source
+position of errors reported by the compiler. This should work whether
+you type @code{use "puzzle.sml";} into the interaction buffer, or use
+one of the mechanisms provided for sending programs directly to the
+compiler---@pxref{ML Interaction}.
+
+
+@deffn Command next-error
+@findex next-error
+Key: @kbd{C-x`}
+@kindex @kbd{C-x`}
+
+Jump to the source location of the next error reported by the compiler.
+All the usual error-navigation commands are available, see
+@pxref{Compilation Mode, , , emacs, The Emacs Editor Manual}.
+@end deffn
+
+
+@c ==================================================== PROCESS DEFAULTS
+
+@node Process Defaults, , Tracking Errors, Interaction Mode
+
+@section Process defaults
+
+@c == Process Defaults, , Tracking Errors, Interaction Mode ============
+
+@noindent
+The process interaction code is independent of the compiler used,
+deliberately, so SML mode will work with a variety of ML compilers
+and ML-based tools. There are therefore a number of variables that may
+need to be set correctly before SML mode can speak to the compiler.
+Things are by default set up for Standard ML of New Jersey, but
+switching to a new system is quite easy.
+
+
+
+@defvar sml-use-command
+Default: @code{"use \"%s\""}
+
+Use file command template. Emacs will replace the @code{%s} with a file
+name. Note that Emacs requires double quote characters inside strings
+to be quoted with a backslash.
+@end defvar
+
+
+@defvar sml-cd-command
+Default: @code{"OS.FileSys.chDir \"%s\""}
+
+Compiler command to change the working directory. Not all ML systems
+support this feature (well, Edinburgh (core) ML didn't), but they
+should.
+@end defvar
+
+
+@defvar sml-prompt-regexp
+Default: @code{"^[-=>#] *"}
+
+Matches the ML compiler's prompt: @file{comint} uses this for various
+purposes.
+@end defvar
+
+
+To customise error reportage for different ML compilers you need to set
+two further variables before @code{next-error} can be useful:
+
+
+@defvar sml-error-regexp-alist
+
+Alist that specifies how to match errors in compiler output.
+Each elt has the form (REGEXP FILE-IDX LINE-IDX [COLUMN-IDX FILE-FORMAT...])
+If REGEXP matches, the FILE-IDX'th subexpression gives the file name, and
+the LINE-IDX'th subexpression gives the line number.  If COLUMN-IDX is
+given, the COLUMN-IDX'th subexpression gives the column number on that line.
+If any FILE-FORMAT is given, each is a format string to produce a file name to
+try; %s in the string is replaced by the text matching the FILE-IDX'th
+subexpression.
+@end defvar
+
+
+@c A typical way of (re)setting these variables correctly is to put
+@c something in your @file{.emacs} file that resembles
+
+@c @example
+@c (setq sml-use-command "PolyML.use \"%s\"")
+@c (setq sml-prompt-regexp "^[>#] *")
+@c @end example
+
+@c ======================================================= CONFIGURATION
+
+@node Configuration, , Interaction Mode, Top
+
+@chapter Configuration Summary
+
+@c @footnote{@url{http://www.ahl.co.uk/}}
+@c @footnote{@url{http://www.dina.kvl.dk/~sestoft/mosml.html}}
+
+@noindent
+This (sort of pedagogic) section gives more information on how to
+configure SML mode: menus, key bindings, hooks and highlighting are
+discussed, along with a few other random topics.
+
+@menu
+* Hooks::               Creating them
+* Key Bindings::        Binding commands to keys
+* Highlighting::        Syntax colouring
+* Advanced Topics::     You may need to speak Emacs Lisp
+@end menu
+
+
+@c =============================================================== HOOKS
+
+@node Hooks, Key Bindings, Configuration, Configuration
+
+@section Hooks
+
+@c == Hooks, Key Bindings, Configuration, Configuration ================
+
+
+@noindent
+One way to set SML mode variables (@pxref{SML Mode
+Defaults,,Indentation Defaults}), and other defaults, is through the
+@code{sml-mode-hook} in your @file{.emacs}. A simple example:
+
+@lisp
+(defun my-sml-mode-hook () "Local defaults for SML mode"
+  (setq sml-indent-level 2)        ; conserve on horizontal space
+  (setq words-include-escape t)    ; \ loses word break status
+  (setq indent-tabs-mode nil))     ; never ever indent with tabs
+(add-hook 'sml-mode-hook #'my-sml-mode-hook)
+@end lisp
+@noindent
+The body of @code{my-sml-mode-hook} is a sequence of assignments. In this
+case it is not really necessary to set @code{sml-indent-level} in a hook
+because this variable is global (most SML mode variables are). With
+similar effect:
+
+@lisp
+(setq sml-indent-level 2)
+@end lisp
+@noindent
+anywhere in your @file{.emacs} file. The variable @code{indent-tabs-mode} is
+automatically made local to the current buffer whenever it is set
+explicitly, so it @emph{must} be set in a hook if you always want
+SML mode to behave like this.
+
+Another hook is @code{inferior-sml-mode-hook}. This can be used to
+control the behaviour of the interaction buffer through various
+variables meaningful to @file{comint}-based packages:
+
+@lisp
+(defun my-inf-sml-mode-hook () "Local defaults for inferior SML mode"
+  (add-hook 'comint-output-filter-functions 'comint-truncate-buffer)
+  (setq      comint-scroll-show-maximum-output t)
+  (setq      comint-input-autoexpand nil))
+(add-hook 'inferior-sml-mode-hook 'my-inf-sml-mode-hook)
+@end lisp
+@noindent
+Again, the body is a sequence of assignments. Unless you run several ML
+compilers simultaneously under one Emacs, this hook will normally only
+get run once. You might want to look up the documentation (@kbd{C-h v}
+and @kbd{C-h f}) for these buffer-local @code{comint} things.
+
+
+@c ======================================================== Key Bindings
+
+@node Key Bindings, Highlighting, Hooks, Configuration
+
+@section Key bindings
+
+@noindent
+Customisation (in Emacs) usually entails putting favourite commands on
+easily remembered keys. Two `keymaps' are defined in SML mode: one
+is effective in program text buffers (@code{sml-mode-map}) and the other
+is effective in interaction buffers (@code{inferior-sml-mode-map}).
+The initial design ensures that (many of) the default key bindings from
+the former keymap will also be available in the latter (e.g.,
+@kbd{C-c`}).
+
+Type @kbd{C-h m} in an SML mode buffer to find the default key
+bindings (and similarly in an ML interaction buffer), and use the hooks
+provided to install your preferred key bindings. Given that the keymaps
+are global (variables):
+
+@lisp
+(defun my-sml-mode-hook () "Global defaults for SML mode"
+  (define-key sml-mode-map "\C-cd" 'sml-cd))
+(add-hook 'sml-mode-hook 'my-sml-mode-hook)
+@end lisp
+@noindent
+This has the effect of binding @code{sml-cd} to the key @kbd{C-c d}.
+If you want the same behaviour from @kbd{C-c d} in the ML buffer:
+
+@lisp
+(defun my-inf-sml-mode-hook () "Global defaults for inferior SML mode"
+  (define-key inferior-sml-mode-map "\C-cd" 'sml-cd)
+  ;; NB. for SML/NJ '96
+  (setq sml-cd-command "OS.FileSys.chDir \"%s\""))
+(add-hook 'inferior-sml-mode-hook 'my-inf-sml-mode-hook)
+@end lisp
+
+There is nothing to stop you rebuilding the entire keymap for
+SML mode and the ML interaction buffer in your @file{.emacs} of
+course: SML mode won't define @code{sml-mode-map} or
+@code{inferior-sml-mode-map} if you have already done so. 
+
+
+@c ======================================================== Highlighting
+
+@node Highlighting, Advanced Topics, Key Bindings, Configuration
+
+@section Syntax colouring
+
+
+@noindent
+Highlighting is very handy for picking out keywords in the program text,
+spotting misspelled kewyords, and, if you have Emacs' @file{ps-print}
+package installed (you usually do these days), obtaining pretty, even
+colourful code listings---quite properly for your colourful ML programs.
+
+The indentation scheme (strangely enough) also relies on the
+highlighting code to properly handle nested comments, which is yet
+another reason to turn on highlighting.  To turn on highlighting,
+use either of:
+
+@lisp
+M-x font-lock-mode
+(add-hook 'sml-mode-hook 'turn-on-font-lock)
+(global-font-lock-mode 1)
+@end lisp
+
+The first will turn it on in the current buffer.
+The second will turn it on in all sml-mode buffers.
+The last will turn it on everywhere.
+This is valid for Emacs but maybe not for XEmacs.  Check font-lock
+documentation if you encounter problems.
+
+@c ===================================================== ADVANCED TOPICS
+
+@node Advanced Topics, , Highlighting, Configuration
+
+@section Advanced Topics
+
+@flushright
+@emph{These forms are bloody useless; can't we have better ones?}
+@end flushright
+
+@sp 1
+@noindent
+You can indeed. @code{sml-insert-form} is extensible so all you need to
+do is create the macros yourself. Define a @emph{keybord macro}
+(@kbd{C-x (} <something> @kbd{C-x )}) and give it a suitable name:
+@code{sml-addto-forms-alist} prompts for a name, say @code{NAME}, and
+binds the macro @code{sml-form-NAME}. Thereafter @kbd{C-c @key{RET}
+NAME} will insert the macro at point, and @kbd{C-u C-c @key{RET} NAME}
+will insert the macro after a @code{newline-and-indent}. If you want to
+keep your macros from one editing session to the next, go to your
+@file{.emacs} file and call @code{insert-kbd-macro}; you'll need
+to add @code{NAME} to @code{sml-forms-alist} permanently yourself:
+
+@lisp
+(defun my-sml-mode-hook () "Global defaults for SML mode"
+  ;; whatever else you do
+  (add-to-list 'sml-forms-alist '("NAME" . FUNCTION)))
+@end lisp
+
+If you want to create templates like `case' that prompt for parameters
+you'll have to do some Lisp programming. The @code{skeleton} package is
+a good stating point.  Better yet, you can reuse the wrappers used by
+sml-mode itself in your sml-mode-hook:
+
+@lisp
+(add-hook 'sml-mode-hook
+  (lambda ()
+    (sml-def-skeleton "case" "Case expr: "
+      str " of" \n _ " => ")))
+@end lisp
+
+This will redefine `case' in order to leave the `of' on the first line.
+See the documentation of @code{skeleton-insert} to get a better
+understanding of how this works.
+
+@sp 1
+@flushright
+@emph{I hate that indentation algorithm; can't I tweak it?}
+@end flushright
+
+@sp 1
+@noindent
+Ah, yes, of course, but this manual will not tell you how.
+
+
+@sp 1
+@flushright
+@emph{Can SML mode handle more than one compiler running at once?}
+@end flushright
+
+Sure, just rename the @samp{*sml*} buffer and then use @code{run-sml}
+as usual.
+
+@sp 1
+@flushright
+@emph{What needs to be done to support other ML compilers?}
+@end flushright
+
+@sp 1
+@noindent
+Not much really.  Just add the right regular expressions to
+@code{sml-error-regexp-alist} and that should be all.
+
+
+@c ======================================================= COMMAND INDEX
+
+@headings singleafter
+
+@node Command Index, Variable Index, , Top
+
+@unnumbered Command Index
+
+@printindex fn
+
+@c ====================================================== VARIABLE INDEX
+
+@c node Variable Index, , Command Index, Top
+@node Variable Index, Key Index, Command Index, Top
+
+@unnumbered Variable Index
+
+@c == Variable Index, Key Index, Command Index, Top ====================
+
+@printindex vr
+
+@c =========================================================== KEY INDEX
+
+@node Key Index, , Variable Index, Top
+
+@unnumbered Key Index
+
+@c == Key Index, , Variable Index, Top =================================
+
+@printindex ky
+
+@contents
+@bye
diff --git a/packages/sml-mode/testcases.sml b/packages/sml-mode/testcases.sml
new file mode 100644 (file)
index 0000000..adab3e2
--- /dev/null
@@ -0,0 +1,563 @@
+(* Copyright 1999,2004,2007,2010-2012 Stefan Monnier <monnier@gnu.org> *)
+
+(* sml-mode here treats the second `=' as an equal op because it
+ * thinks it's seeing something like "... type t = (s.t = ...)".  FIXME!  *)
+functor foo (structure s : S) where type t = s.t =
+struct                          (* fixindent *)
+val bar = fn a1 a2 a3
+            a5 a6
+            a4 => 1
+val rec bar =
+ fn a1 a2 a3
+    a5 a6 a4 => 1
+val bar =
+ fn a1 a2 a3
+    a5 a6
+    a4 => (1
+          ;(
+              w
+            ,
+              s
+            ,
+              s
+            , s , a ,
+              a
+            , s , a ,
+              a
+          )
+          ;(
+              w
+             ,s
+             ,a
+          )
+          ;(
+              w
+          ,   s
+          ,   a
+          )
+          ;(   w
+           ,   s
+           ,   a
+           )
+          ;( w
+            ,s
+            ,a
+           )
+          ;3
+           + a
+             * 4
+           + let val x = 3
+             in toto
+             end
+           + if a then
+                 b
+             else
+                 c
+          ;4)
+
+val ber = 1;
+val sdfg = 1
+val tut = fn (x,y) z y e r =>
+             body
+val tut = fn (x,y) => fn z y => fn e r =>
+             body
+val tut = fn (x,y)
+             z
+             y e
+             r =>
+             body
+val tut =
+    (let
+        local
+            val x = 1 in val x = x end
+        val a = 1 val b = 2
+        local val x = 1 in val x = x end
+        local val x = 1 in val x = x end
+            local val x = 1 in val x = x end (* fixindent *)
+            local val x = 1 in val x = x end
+            val c = 3
+    in
+       let
+            val x = 3
+       in
+            x +   a * b
+                  * c
+       end
+    end)
+
+val x =
+    (* From "Christopher Dutchyn" <cdutchyn@cs.ubc.ca> *)
+    (case foo of
+       (* This is actually not valid SML anyway.  *)
+       | BAR => baz
+       | BAR => baz)
+
+
+val x =
+    (x := 1;
+     x := 2;
+       (* Testing obedience to user overrides: *)
+       x := 3;                  (* fixindent *)
+       case x of
+           FOO => 1
+         | BAR =>
+           2;
+       case x of
+           FOO => 1
+         | BAR =>
+           case y of
+              FAR => 2
+            | FRA => 3;
+       hello);
+
+datatype foobar
+  = FooB of int
+  | FooA of bool * int
+datatype foo = FOO | BAR of baz
+     and baz = BAZ | QUUX of foo
+
+fun toto = if a
+           then
+               b
+           else c
+
+datatype foo = FOO
+             | BAR of baz
+  and baz = BAZ                        (* fixindent *)
+         | QUUX of foo
+  and b = g
+
+datatype foo = datatype M.foo
+val _ = 42 val x = 5
+
+signature S = S' where type foo = int
+val _ = 42
+
+val foo = [
+    "blah"
+  , let val x = f 42 in g (x,x,44) end
+]
+
+val foo = [
+    "blah",
+    let val x = f 42 in g (x,x,44) end
+]
+
+val foo =
+    [
+      "blah",
+      let val x = f 42 in g (x,x,44) end
+    ]
+
+val foo = [ "blah"
+         , let val x = f 42 in g (x,x,44) end
+         , foldl (fn ((p,q),s) => g (p,q,Vector.length q) ^ ":" ^ s)
+                  "" (Beeblebrox.masterCountList mlist2)
+          , if null mlist2 then ";" else ""
+         ]
+
+fun foo (true::rest) = 1 + 2 * foo rest
+  | foo (false::rest)
+    = let val _ = 1 in 2 end
+      + 2
+        * foo rest
+
+val x = if foo then
+           1
+       else if bar then
+           2
+       else
+           3
+val y = if foo
+       then 1
+       else if foo
+       then 2              (* Could also be indented by a basic offset.  *)
+       else 3
+
+val yt = 4
+
+val x =
+    (if a then b else c;
+     case M.find(m,f)
+      of SOME(fl, filt) =>
+         F.APP(F.VAR fl, OU.filter filt vs)
+       | NONE
+         => le
+       | NONE =>
+         le
+       | NONE => le;
+     x := x + 1;
+     (case foo
+       of a => f
+    ))
+
+val y = (
+    let fun f1 =
+            let fun g1 x = 2
+                fun g2 y = 4
+                local fun toto y = 1
+                (* val x = 5 *)
+                in
+                fun g3 z = z
+                end
+            in toto
+            end
+    in a;( ( let
+               val f =1
+           in
+               toto
+           end
+           )
+         )
+             foo("(*")
+         * 2;
+    end;
+
+    let
+    in a
+     ; b
+    end;
+
+    let
+    in
+        a +
+        b +
+        c
+      ; b
+    end;
+
+    let
+    in if a then
+           b
+       else
+           c
+    end;
+
+    let
+    in case a of
+           F => 1
+         | D => 2
+    end;
+
+    let
+    in case a
+        of F => 1
+         | D => 2
+    end;
+
+    let
+    in if a then b else
+       c
+    end;
+
+    let
+    in if a then b
+       else
+           c
+    end)
+end;
+
+structure Foo = struct
+val x = 1
+end
+
+structure Foo = struct val x = 1
+                end
+
+signature FSPLIT =
+sig
+    type flint = FLINT.prog
+    val split: flint -> flint * flint option
+end
+
+structure FSplit :> FSPLIT =
+struct
+
+local
+    structure F  = FLINT
+    structure S  = IntRedBlackSet
+    structure M  = FLINTIntMap
+    structure O  = Option
+    structure OU = OptUtils
+    structure FU = FlintUtil
+    structure LT = LtyExtern
+    structure PO = PrimOp
+    structure PP = PPFlint
+    structure CTRL = FLINT_Control
+in
+
+val say = Control_Print.say
+fun bug msg = ErrorMsg.impossible ("FSplit: "^msg)
+fun buglexp (msg,le) = (say "\n"; PP.printLexp le; say " "; bug msg)
+fun bugval (msg,v) = (say "\n"; PP.printSval v; say " "; bug msg)
+fun assert p = if p then () else bug ("assertion failed")
+
+type flint = F.prog
+val mklv = LambdaVar.mkLvar
+val cplv = LambdaVar.dupLvar
+
+fun S_rmv(x, s) = S.delete(s, x) handle NotFound => s
+
+fun addv (s,F.VAR lv) = S.add(s, lv)
+  | addv (s,_) = s
+fun addvs (s,vs) = foldl (fn (v,s) => addv(s, v)) s vs
+fun rmvs (s,lvs) = foldl (fn (l,s) => S_rmv(l, s)) s lvs
+
+exception Unknown
+
+fun split (fdec as (fk,f,args,body)) = let
+    val {getLty,addLty,...} = Recover.recover (fdec, false)
+
+    val m = Intmap.new(64, Unknown)
+    fun addpurefun f = Intmap.add m (f, false)
+    fun funeffect f = (Intmap.map m f) handle Uknown => true
+
+(* sexp: env -> lexp -> (leE, leI, fvI, leRet)
+ * - env: IntSetF.set  current environment
+ * - lexp: lexp                expression to split
+ * - leRet: lexp       the core return expression of lexp
+ * - leE: lexp -> lexp recursively split lexp:  leE leRet == lexp
+ * - leI: lexp option  inlinable part of lexp (if any)
+ * - fvI: IntSetF.set  free variables of leI:   FU.freevars leI == fvI
+ *
+ * sexp splits the lexp into an expansive part and an inlinable part.
+ * The inlinable part is guaranteed to be side-effect free.
+ * The expansive part doesn't bother to eliminate unused copies of
+ *   elements copied to the inlinable part.
+ * If the inlinable part cannot be constructed, leI is set to F.RET[].
+ *   This implies that fvI == S.empty, which in turn prevents us from
+ *   mistakenly adding anything to leI.
+ *)
+fun sexp env lexp =                    (* fixindent *)
+    let
+       (* non-side effecting binds are copied to leI if exported *)
+       fun let1 (le,lewrap,lv,vs,effect) =
+           let  val (leE,leI,fvI,leRet) = sexp (S.add(env, lv)) le
+                val leE = lewrap o leE
+           in if effect orelse not (S.member(fvI, lv))
+              then (leE, leI, fvI, leRet)
+              else (leE, lewrap leI, addvs(S_rmv(lv, fvI), vs), leRet)
+           end
+
+    in case lexp
+       (* we can completely move both RET and TAPP to the I part *)
+       of F.RECORD (rk,vs,lv,le as F.RET [F.VAR lv']) =>
+          if lv' = lv
+          then (fn e => e, lexp, addvs(S.empty, vs), lexp)
+          else (fn e => e, le, S.singleton lv', le)
+        | F.RET vs =>
+          (fn e => e, lexp, addvs(S.empty, vs), lexp)
+        | F.TAPP (F.VAR tf,tycs) =>
+          (fn e => e, lexp, S.singleton tf, lexp)
+
+        (* recursive splittable lexps *)
+        | F.FIX (fdecs,le) => sfix env (fdecs, le)
+        | F.TFN (tfdec,le) => stfn env (tfdec, le)
+
+        (* binding-lexps *)
+        | F.CON (dc,tycs,v,lv,le) =>
+          let1(le, fn e => F.CON(dc, tycs, v, lv, e), lv, [v], false)
+        | F.RECORD (rk,vs,lv,le) =>
+          let1(le, fn e => F.RECORD(rk, vs, lv, e), lv, vs, false)
+        | F.SELECT (v,i,lv,le) =>
+          let1(le, fn e => F.SELECT(v, i, lv, e), lv, [v], false)
+        | F.PRIMOP (po,vs,lv,le) =>
+          let1(le, fn e => F.PRIMOP(po, vs, lv, e), lv, vs, PO.effect(#2 po))
+
+        (* IMPROVEME: lvs should not be restricted to [lv] *)
+        | F.LET(lvs as [lv],body as F.TAPP (v,tycs),le) =>
+          let1(le, fn e => F.LET(lvs, body, e), lv, [v], false)
+        | F.LET (lvs as [lv],body as F.APP (v as F.VAR f,vs),le) =>
+          let1(le, fn e => F.LET(lvs, body, e), lv, v::vs, funeffect f)
+
+        | F.SWITCH (v,ac,[(dc as F.DATAcon(_,_,lv),le)],NONE) =>
+          let1(le, fn e => F.SWITCH(v, ac, [(dc, e)], NONE), lv, [v], false)
+
+        | F.LET (lvs,body,le) =>
+          let val (leE,leI,fvI,leRet) = sexp (S.union(S.addList(S.empty, lvs), env)) le
+          in (fn e => F.LET(lvs, body, leE e), leI, fvI, leRet)
+          end
+
+        (* useless sophistication *)
+        | F.APP (F.VAR f,args) =>
+          if funeffect f
+          then (fn e => e, F.RET[], S.empty, lexp)
+          else (fn e => e, lexp, addvs(S.singleton f, args), lexp)
+
+        (* other non-binding lexps result in unsplittable functions *)
+        | (F.APP _ | F.TAPP _) => bug "strange (T)APP"
+        | (F.SWITCH _ | F.RAISE _ | F.BRANCH _ | F.HANDLE _) =>
+          (fn e => e, F.RET[], S.empty, lexp)
+    end
+
+(* Functions definitions fall into the following categories:
+ * - inlinable:  if exported, copy to leI
+ * - (mutually) recursive:  don't bother
+ * - non-inlinable non-recursive:  split recursively *)
+and sfix env (fdecs,le) =
+    let val nenv = S.union(S.addList(S.empty, map #2 fdecs), env)
+       val (leE,leI,fvI,leRet) = sexp nenv le
+       val nleE = fn e => F.FIX(fdecs, leE e)
+    in case fdecs
+       of [({inline=inl as (F.IH_ALWAYS | F.IH_MAYBE _),...},f,args,body)] =>
+          let val min = case inl of F.IH_MAYBE(n,_) => n | _ => 0
+          in if not(S.member(fvI, f)) orelse min > !CTRL.splitThreshold
+             then (nleE, leI, fvI, leRet)
+             else (nleE, F.FIX(fdecs, leI),
+                   rmvs(S.union(fvI, FU.freevars body),
+                        f::(map #1 args)),
+                   leRet)
+          end
+        | [fdec as (fk as {cconv=F.CC_FCT,...},_,_,_)] =>
+          sfdec env (leE,leI,fvI,leRet) fdec
+
+        | _ => (nleE, leI, fvI, leRet)
+    end
+
+and sfdec env (leE,leI,fvI,leRet) (fk,f,args,body) =
+    let val benv = S.union(S.addList(S.empty, map #1 args), env)
+       val (bodyE,bodyI,fvbI,bodyRet) = sexp benv body
+    in case bodyI
+       of F.RET[] =>
+          (fn e => F.FIX([(fk, f, args, bodyE bodyRet)], e),
+           leI, fvI, leRet)
+        | _ =>
+          let val fvbIs = S.listItems(S.difference(fvbI, benv))
+              val (nfk,fkE) = OU.fk_wrap(fk, NONE)
+
+              (* fdecE *)
+              val fE = cplv f
+              val fErets = (map F.VAR fvbIs)
+              val bodyE = bodyE(F.RET fErets)
+              (* val tmp = mklv()
+               val bodyE = bodyE(F.RECORD(F.RK_STRUCT, map F.VAR fvbIs,
+                                          tmp, F.RET[F.VAR tmp])) *)
+              val fdecE = (fkE, fE, args, bodyE)
+              val fElty = LT.ltc_fct(map #2 args, map getLty fErets)
+              val _ = addLty(fE, fElty)
+
+              (* fdecI *)
+              val fkI = {inline=F.IH_ALWAYS, cconv=F.CC_FCT,
+                         known=true, isrec=NONE}
+              val argsI =
+                  (map (fn lv => (lv, getLty(F.VAR lv))) fvbIs) @ args
+              val fdecI as (_,fI,_,_) = FU.copyfdec(fkI,f,argsI,bodyI)
+              val _ = addpurefun fI
+
+              (* nfdec *)
+              val nargs = map (fn (v,t) => (cplv v, t)) args
+              val argsv = map (fn (v,t) => F.VAR v) nargs
+              val nbody =
+                  let val lvs = map cplv fvbIs
+                  in F.LET(lvs, F.APP(F.VAR fE, argsv),
+                           F.APP(F.VAR fI, (map F.VAR lvs)@argsv))
+                  end
+              (* let val lv = mklv()
+                 in F.LET([lv], F.APP(F.VAR fE, argsv),
+                          F.APP(F.VAR fI, (F.VAR lv)::argsv))
+                 end *)
+              val nfdec = (nfk, f, nargs, nbody)
+
+              (* and now, for the whole F.FIX *)
+              fun nleE e =
+                  F.FIX([fdecE], F.FIX([fdecI], F.FIX([nfdec], leE e)))
+
+          in if not(S.member(fvI, f)) then (nleE, leI, fvI, leRet)
+             else (nleE,
+                   F.FIX([fdecI], F.FIX([nfdec], leI)),
+                   S.add(S.union(S_rmv(f, fvI), S.intersection(env, fvbI)), fE),
+                   leRet)
+          end
+    end
+
+(* TFNs are kinda like FIX except there's no recursion *)
+and stfn env (tfdec as (tfk,tf,args,body),le) =
+    let val (bodyE,bodyI,fvbI,bodyRet) =
+           if #inline tfk = F.IH_ALWAYS
+           then (fn e => body, body, FU.freevars body, body)
+           else sexp env body
+       val nenv = S.add(env, tf)
+       val (leE,leI,fvI,leRet) = sexp nenv le
+    in case (bodyI, S.listItems(S.difference(fvbI, env)))
+       of ((F.RET _ | F.RECORD(_,_,_,F.RET _)),_) =>
+          (* split failed *)
+          (fn e => F.TFN((tfk, tf, args, bodyE bodyRet), leE e),
+           leI, fvI, leRet)
+        | (_,[]) =>
+          (* everything was split out *)
+          let val ntfdec = ({inline=F.IH_ALWAYS}, tf, args, bodyE bodyRet)
+              val nlE = fn e => F.TFN(ntfdec, leE e)
+          in if not(S.member(fvI, tf)) then (nlE, leI, fvI, leRet)
+             else (nlE, F.TFN(ntfdec, leI),
+                   S_rmv(tf, S.union(fvI, fvbI)), leRet)
+          end
+        | (_,fvbIs) =>
+          let (* tfdecE *)
+              val tfE = cplv tf
+              val tfEvs = map F.VAR fvbIs
+              val bodyE = bodyE(F.RET tfEvs)
+              val tfElty = LT.lt_nvpoly(args, map getLty tfEvs)
+              val _ = addLty(tfE, tfElty)
+
+              (* tfdecI *)
+              val tfkI = {inline=F.IH_ALWAYS}
+              val argsI = map (fn (v,k) => (cplv v, k)) args
+              (* val tmap = ListPair.map (fn (a1,a2) =>
+               *                               (#1 a1, LT.tcc_nvar(#1 a2)))
+               *                              (args, argsI) *)
+              val bodyI = FU.copy tmap M.empty
+                                  (F.LET(fvbIs, F.TAPP(F.VAR tfE, map #2 tmap),
+                                         bodyI))
+              (* F.TFN *)
+              fun nleE e =
+                  F.TFN((tfk, tfE, args, bodyE),
+                        F.TFN((tfkI, tf, argsI, bodyI), leE e))
+
+          in if not(S.member(fvI, tf)) then (nleE, leI, fvI, leRet)
+             else (nleE,
+                   F.TFN((tfkI, tf, argsI, bodyI), leI),
+                   S.add(S.union(S_rmv(tf, fvI), S.intersection(env, fvbI)), tfE),
+                   leRet)
+          end
+    end
+
+(* here, we use B-decomposition, so the args should not be
+ * considered as being in scope *)
+val (bodyE,bodyI,fvbI,bodyRet) = sexp S.empty body
+in case (bodyI, bodyRet)
+    of (F.RET _,_) => ((fk, f, args, bodyE bodyRet), NONE)
+     | (_,F.RECORD (rk,vs,lv,F.RET[lv'])) =>
+       let val fvbIs = S.listItems fvbI
+
+          (* fdecE *)
+          val bodyE = bodyE(F.RECORD(rk, vs@(map F.VAR fvbIs), lv, F.RET[lv']))
+          val fdecE as (_,fE,_,_) = (fk, cplv f, args, bodyE)
+
+          (* fdecI *)
+          val argI = mklv()
+          val argLtys = (map getLty vs) @ (map (getLty o F.VAR) fvbIs)
+          val argsI = [(argI, LT.ltc_str argLtys)]
+          val (_,bodyI) = foldl (fn (lv,(n,le)) =>
+                                    (n+1, F.SELECT(F.VAR argI, n, lv, le)))
+                                (length vs, bodyI) fvbIs
+          val fdecI as (_,fI,_,_) = FU.copyfdec (fk, f, argsI, bodyI)
+
+          val nargs = map (fn (v,t) => (cplv v, t)) args
+       in
+          (fdecE, SOME fdecI)
+       (* ((fk, f, nargs,
+           F.FIX([fdecE],
+                 F.FIX([fdecI],
+                       F.LET([argI],
+                             F.APP(F.VAR fE, map (F.VAR o #1) nargs),
+                             F.APP(F.VAR fI, [F.VAR argI]))))),
+          NONE) *)
+       end
+
+     | _ => (fdec, NONE)               (* sorry, can't do that *)
+(* (PPFlint.printLexp bodyRet; bug "couldn't find the returned record") *)
+
+end
+
+end
+end
diff --git a/packages/sokoban/sokoban-pkg.el b/packages/sokoban/sokoban-pkg.el
new file mode 100644 (file)
index 0000000..195179c
--- /dev/null
@@ -0,0 +1 @@
+(define-package "sokoban" "1.0.4" "Sokoban game for emacs")
diff --git a/packages/sokoban/sokoban.el b/packages/sokoban/sokoban.el
new file mode 100644 (file)
index 0000000..73d00ba
--- /dev/null
@@ -0,0 +1,788 @@
+;;; sokoban.el --- Implementation of Sokoban for Emacs.
+
+;; Copyright (C) 1998, 2013 Free Software Foundation, Inc.
+
+;; Author: Glynn Clements <glynn.clements@virgin.net>
+;; Version: 1.04
+;; Created: 1997-09-11
+;; Keywords: games
+;; Package-Type: multi
+
+;; This file is part of XEmacs.
+
+;; XEmacs is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3 of the License, or
+;; (at your option) any later version.
+
+;; XEmacs is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with XEmacs; see the file COPYING.  If not, write to the Free
+;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+;; 02111-1307, USA.
+
+;;; Synched up with: Not synched.
+
+;;; Commentary:
+
+;; Modified: 1998-01-09, conditionalised use of locate-data-directory
+;; Modified: 1998-01-27, added mouse interface code
+;;   (provided by Sean MacLennan <bn932@freenet.carleton.ca>
+;; Modified: 1998-02-06, fixed bug, where sokoban-done wasn't reset to
+;;   zero in sokoban-restart-level
+;; Modified: 1998-02-27, patches from Hrvoje Niksic
+;;   added bounds check to sokoban-goto-level
+;;   added popup menu
+;;   display level and score in modeline
+;; Modified: 1998-06-04, added `undo' feature
+;;   added number of blocks done/total to score and modeline
+;; Modified: 2003-06-14, update email address, remove URL
+
+;; Tested with XEmacs 20.3/4/5 and Emacs 19.34
+
+;; The game is based upon XSokoban, by
+;; Michael Bischoff <mbi@mo.math.nat.tu-bs.de>
+
+;; The levels and some of the pixmaps were
+;; taken directly from XSokoban
+
+;;; Code:
+
+(eval-when-compile
+  (require 'cl))
+
+(require 'gamegrid)
+
+;; ;;;;;;;;;;;;; customization variables ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar sokoban-use-glyphs t
+  "Non-nil means use glyphs when available.")
+
+(defvar sokoban-use-color t
+  "Non-nil means use color when available.")
+
+(defvar sokoban-font "-*-courier-medium-r-*-*-*-200-100-75-*-*-iso8859-*"
+  "Name of the font used in X mode.")
+
+(defvar sokoban-buffer-name "*Sokoban*")
+
+(defvar sokoban-temp-buffer-name " Sokoban-tmp")
+
+(defvar sokoban-level-file
+  (if (fboundp 'locate-data-file)
+      (locate-data-file "sokoban.levels")
+    (or (locate-library "sokoban.levels")
+            (let ((file (expand-file-name
+                         "sokoban.levels"
+                         (if load-file-name
+                             (file-name-directory load-file-name)))))
+              (and (file-exists-p file) file))
+       (expand-file-name "sokoban.levels" data-directory))))
+
+(defvar sokoban-width 20)
+(defvar sokoban-height 16)
+
+(defvar sokoban-buffer-width 20)
+(defvar sokoban-buffer-height 20)
+
+(defvar sokoban-score-x 0)
+(defvar sokoban-score-y 17)
+
+(defvar sokoban-level-data nil)
+
+;; ;;;;;;;;;;;;; constants ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst sokoban-floor-xpm "\
+/* XPM */
+static char * floor_xpm[] = {
+\"32 32 1 1\",
+\"  c None\",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+};
+")
+
+(defconst sokoban-target-xpm "\
+/* XPM */
+static char * target_xpm[] = {
+\"32 32 3 1\",
+\"  c None\",
+\". c black\",
+\"X c yellow\",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"          ............          \",
+\"          .XXXXXXXXXX.          \",
+\"           .XXXXXXXX.           \",
+\"            .XXXXXX.            \",
+\"      ..     .XXXX.     ..      \",
+\"      .X.     .XX.     .X.      \",
+\"      .XX.     ..     .XX.      \",
+\"      .XXX.          .XXX.      \",
+\"      .XXXX.        .XXXX.      \",
+\"      .XXXXX.      .XXXXX.      \",
+\"      .XXXXX.      .XXXXX.      \",
+\"      .XXXX.        .XXXX.      \",
+\"      .XXX.          .XXX.      \",
+\"      .XX.     ..     .XX.      \",
+\"      .X.     .XX.     .X.      \",
+\"      ..     .XXXX.     ..      \",
+\"            .XXXXXX.            \",
+\"           .XXXXXXXX.           \",
+\"          .XXXXXXXXXX.          \",
+\"          ............          \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+\"                                \",
+};
+")
+
+(defconst sokoban-wall-xpm "\
+/* XPM */
+static char * wall_xpm[] = {
+\"32 32 2 1\",
+\"  c white\",
+\". c SteelBlue\",
+\" .............................. \",
+\". ............................ .\",
+\".. .......................... . \",
+\"... ........................ . .\",
+\"....                        . . \",
+\".... ......................  . .\",
+\".... ...................... . . \",
+\".... ......................  . .\",
+\".... ...................... . . \",
+\".... ......................  . .\",
+\".... ...................... . . \",
+\".... ......................  . .\",
+\".... ...................... . . \",
+\".... ......................  . .\",
+\".... ...................... . . \",
+\".... ......................  . .\",
+\".... ...................... . . \",
+\".... ......................  . .\",
+\".... ...................... . . \",
+\".... ......................  . .\",
+\".... ...................... . . \",
+\".... ......................  . .\",
+\".... ...................... . . \",
+\".... ......................  . .\",
+\".... ...................... . . \",
+\".... ......................  . .\",
+\".... ...................... . . \",
+\"....                         . .\",
+\"... . . . . . . . . . . . .   . \",
+\".. . . . . . . . . . . . . .   .\",
+\". . . . . . . . . . . . . . .   \",
+\" . . . . . . . . . . . . . . .  \",
+};
+")
+
+(defconst sokoban-block-xpm "\
+/* XPM */
+static char * block_xpm[] = {
+\"32 32 3 1\",
+\"  c None\",
+\". c black\",
+\"X c yellow\",
+\".............................   \",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX.   \",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX..  \",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX..  \",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX.X. \",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX.X. \",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX.XX.\",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX.XX.\",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX.XX.\",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX.XX.\",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX.XX.\",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX.XX.\",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX.XX.\",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX.XX.\",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX.XX.\",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX.XX.\",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX.XX.\",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX.XX.\",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX.XX.\",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX.XX.\",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX.XX.\",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX.XX.\",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX.XX.\",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX.XX.\",
+\".............................XX.\",
+\".XXXXXXXXXXXXXXXXXXXXXXXXXXX.XX.\",
+\" .XXXXXXXXXXXXXXXXXXXXXXXXXXX.X.\",
+\" .XXXXXXXXXXXXXXXXXXXXXXXXXXX.X.\",
+\"  .XXXXXXXXXXXXXXXXXXXXXXXXXXX..\",
+\"  .XXXXXXXXXXXXXXXXXXXXXXXXXXX..\",
+\"   .XXXXXXXXXXXXXXXXXXXXXXXXXXX.\",
+\"   .............................\",
+};
+")
+
+(defconst sokoban-player-xpm "\
+/* XPM */
+static char * player_xpm[] = {
+\"32 32 3 1\",
+\"  c None\",
+\"o c white\",
+\". c black\",
+\"                                \",
+\"                                \",
+\"                                \",
+\"            oooooooo            \",
+\"            o......o            \",
+\"           o.oooooo.o           \",
+\"           o.oooooo.o           \",
+\"          o.oooooooo.o          \",
+\"          o.o..oo..o.o          \",
+\"          o.oooooooo.o          \",
+\"          oo.o....o.oo          \",
+\"         oo..oo..oo..oo         \",
+\"         o....o..o....o         \",
+\"         o.o..o..o..o.o         \",
+\"         o.o...oo...o.o         \",
+\"        o.oo........oo.o        \",
+\"        o.oo........oo.o        \",
+\"       o.ooo........ooo.o       \",
+\"       o.ooo........ooo.o       \",
+\"       o.ooo........ooo.o       \",
+\"        o.oo........oo.o        \",
+\"        o.oo........oo.o        \",
+\"        o.o..........o.o        \",
+\"         o............o         \",
+\"          o..........o          \",
+\"           o........o           \",
+\"          o.o.oooo.o.o          \",
+\"         o.....oo.....o         \",
+\"        o......oo......o        \",
+\"       o.......oo.......o       \",
+\"      o..o..o..oo.oo..o..o      \",
+\"      oooooooooooooooooooo      \",
+};
+")
+
+(defconst sokoban-floor ?\+)
+;; note - space character in level file is also allowed to indicate floor
+(defconst sokoban-target ?\.)
+(defconst sokoban-wall ?\#)
+(defconst sokoban-block ?\$)
+(defconst sokoban-player ?\@)
+(defconst sokoban-block-on-target ?\*)
+
+;; ;;;;;;;;;;;;; display options ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar sokoban-floor-options
+  `(((glyph
+      [xpm :data ,sokoban-floor-xpm])
+     (t ?\040))
+    ((color-x color-x)
+     (mono-x grid-x)
+     (color-tty color-tty))
+    (((glyph color-x) [0 0 0])
+     (color-tty "black"))))
+
+(defvar sokoban-target-options
+  `(((glyph
+      [xpm :data ,sokoban-target-xpm])
+     ((mono-x mono-tty emacs-tty) ?\.)
+     (t ?\040))
+    ((color-x color-x)
+     (mono-x grid-x)
+     (color-tty color-tty))
+    (((glyph color-x) [1 1 0.5])
+     (color-tty "yellow"))))
+
+(defvar sokoban-wall-options
+  `(((glyph
+      [xpm :data ,sokoban-wall-xpm])
+     (emacs-tty ?\X)
+     (t ?\040))
+    ((color-x color-x)
+     (mono-x mono-x)
+     (color-tty color-tty)
+     (mono-tty mono-tty))
+    (((glyph color-x) [0 0 1])
+     (color-tty "blue"))))
+
+(defvar sokoban-block-options
+  `(((glyph
+      [xpm :data ,sokoban-block-xpm])
+     ((mono-x mono-tty emacs-tty) ?\O)
+     (t ?\040))
+    ((color-x color-x)
+     (mono-x grid-x)
+     (color-tty color-tty))
+    (((glyph color-x) [1 0 0])
+     (color-tty "red"))))
+
+(defvar sokoban-player-options
+  `(((glyph
+      [xpm :data ,sokoban-player-xpm])
+     (t ?\*))
+    ((color-x color-x)
+     (mono-x grid-x)
+     (color-tty color-tty))
+    (((glyph color-x) [0 1 0])
+     (color-tty "green"))))
+
+;; ;;;;;;;;;;;;; variables ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar sokoban-level 0)
+(make-variable-buffer-local 'sokoban-level)
+(defvar sokoban-level-map nil)
+(make-variable-buffer-local 'sokoban-level-map)
+(defvar sokoban-targets 0)
+(make-variable-buffer-local 'sokoban-targets)
+(defvar sokoban-x 0)
+(make-variable-buffer-local 'sokoban-x)
+(defvar sokoban-y 0)
+(make-variable-buffer-local 'sokoban-y)
+(defvar sokoban-moves 0)
+(make-variable-buffer-local 'sokoban-moves)
+(defvar sokoban-pushes 0)
+(make-variable-buffer-local 'sokoban-pushes)
+(defvar sokoban-done 0)
+(make-variable-buffer-local 'sokoban-done)
+(defvar sokoban-mouse-x 0)
+(make-variable-buffer-local 'sokoban-mouse-x)
+(defvar sokoban-mouse-y 0)
+(make-variable-buffer-local 'sokoban-mouse-y)
+(defvar sokoban-undo-list nil)
+(make-variable-buffer-local 'sokoban-undo-list)
+
+;; ;;;;;;;;;;;;; keymaps ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar sokoban-mode-map
+  (let ((map (make-sparse-keymap
+             (when (featurep 'xemacs) 'sokoban-mode-map))))
+    (define-key map "n"        'sokoban-start-game)
+    (define-key map "r"        'sokoban-restart-level)
+    (define-key map "g"        'sokoban-goto-level)
+
+    (define-key map [left]     'sokoban-move-left)
+    (define-key map [right]    'sokoban-move-right)
+    (define-key map [up]       'sokoban-move-up)
+    (define-key map [down]     'sokoban-move-down)
+
+    (when (featurep 'xemacs)
+      (define-key map [button2]          'sokoban-mouse-event-start)
+      (define-key map [button2up] 'sokoban-mouse-event-end))
+
+    (define-key map [down-mouse-2] 'sokoban-mouse-event-start)
+    (define-key map [mouse-2]      'sokoban-mouse-event-end)
+    ;; On some systems (OS X) middle mouse is difficult.
+    ;; FIXME: Use follow-link?
+    (define-key map [down-mouse-1] 'sokoban-mouse-event-start)
+    (define-key map [mouse-1]      'sokoban-mouse-event-end)
+
+    (define-key map [(control ?/)]     'sokoban-undo)
+    map))
+
+;; ;;;;;;;;;;;;;;;; level file parsing functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst sokoban-level-regexp "^;LEVEL [0-9]+$")
+
+(defconst sokoban-comment-regexp "^;")
+
+(defun sokoban-init-level-data ()
+  (setq sokoban-level-data nil)
+  (with-current-buffer (find-file-noselect sokoban-level-file)
+    (if (fboundp 'read-only-mode)
+        (read-only-mode 1)
+      (setq buffer-read-only t))
+    (goto-char (point-min))
+    (re-search-forward sokoban-level-regexp nil t)
+    (forward-char)
+    (while (not (eobp))
+      (while (looking-at sokoban-comment-regexp)
+       (forward-line))
+      (let ((data (make-vector sokoban-height nil))
+           (fmt (format "%%-%ds" sokoban-width)))
+       (dotimes (y sokoban-height)
+         (cond ((or (eobp)
+                    (looking-at sokoban-comment-regexp))
+                (aset data y (format fmt "")))
+               (t
+                (let ((start (point))
+                       (end (line-end-position)))
+                   (aset data
+                         y
+                         (format fmt (buffer-substring start end)))
+                   (goto-char (1+ end))))))
+       (push data sokoban-level-data)))
+    (kill-buffer (current-buffer))
+    (setq sokoban-level-data (nreverse sokoban-level-data))))
+
+;; ;;;;;;;;;;;;;;;; game functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun sokoban-display-options ()
+  (let ((options (make-vector 256 nil)))
+    (dotimes (c 256)
+      (aset options c
+           (cond ((= c sokoban-floor)
+                  sokoban-floor-options)
+                  ((= c sokoban-target)
+                  sokoban-target-options)
+                  ((= c sokoban-wall)
+                  sokoban-wall-options)
+                  ((= c sokoban-block)
+                  sokoban-block-options)
+                  ((= c sokoban-player)
+                  sokoban-player-options)
+                  (t
+                  '(nil nil nil)))))
+    options))
+
+(defun sokoban-get-level-data ()
+  (setq sokoban-level-map (nth (1- sokoban-level) sokoban-level-data)
+       sokoban-targets 0)
+  (dotimes (y sokoban-height)
+    (dotimes (x sokoban-width)
+      (let ((c (aref (aref sokoban-level-map y) x)))
+       (cond
+        ((= c sokoban-target)
+         (incf sokoban-targets))
+        ((= c sokoban-block-on-target)
+         (incf sokoban-targets)
+         (incf sokoban-done))
+        ((= c ?\040) ;; treat space characters in level file as floor
+         (aset (aref sokoban-level-map y) x sokoban-floor)))))))
+
+(defun sokoban-get-floor (x y)
+  (let ((c (aref (aref sokoban-level-map y) x)))
+    (if (or (= c sokoban-target)
+           (= c sokoban-block-on-target))
+       sokoban-target
+      sokoban-floor)))
+
+(defun sokoban-init-buffer ()
+  (gamegrid-init-buffer sokoban-buffer-width
+                       sokoban-buffer-height
+                       ?\040)
+  (dotimes (y sokoban-height)
+    (dotimes (x sokoban-width)
+      (let ((c (aref (aref sokoban-level-map y) x)))
+       (if (= c sokoban-player)
+           (setq sokoban-x x
+                 sokoban-y y))
+       (if (= c sokoban-block-on-target)
+           (setq c sokoban-block))
+       (gamegrid-set-cell x y c)))))
+
+(defun sokoban-draw-score ()
+  (let ((strings (vector (format "Moves:  %05d" sokoban-moves)
+                        (format "Pushes: %05d" sokoban-pushes)
+                        (format "Done:   %d/%d"
+                                sokoban-done
+                                sokoban-targets))))
+    (dotimes (y 2)
+      (let* ((string (aref strings y))
+            (len (length string)))
+       (dotimes (x len)
+         (gamegrid-set-cell (+ sokoban-score-x x)
+                            (+ sokoban-score-y y)
+                            (aref string x))))))
+  (setq mode-line-format
+       (format "Sokoban:   Level: %3d   Moves: %05d   Pushes: %05d   Done: %d/%d"
+               sokoban-level sokoban-moves sokoban-pushes
+               sokoban-done sokoban-targets))
+  (force-mode-line-update))
+
+(defun sokoban-add-move (dx dy)
+  (push (list 'move dx dy) sokoban-undo-list)
+  (incf sokoban-moves)
+  (sokoban-draw-score))
+
+(defun sokoban-add-push (dx dy)
+  (push (list 'push dx dy) sokoban-undo-list)
+  (incf sokoban-moves)
+  (incf sokoban-pushes)
+  (sokoban-draw-score))
+
+(defun sokoban-undo ()
+  "Undo previous Sokoban change."
+  (interactive)
+  ;; FIXME: Use the normal undo (via `apply' undo entries).
+  (if (null sokoban-undo-list)
+      (message "Nothing to undo")
+    (let* ((entry (pop sokoban-undo-list))
+          (type (car entry))
+          (dx (nth 1 entry))
+          (dy (nth 2 entry)))
+      (cond ((eq type 'push)
+            (let* ((x (+ sokoban-x dx))
+                   (y (+ sokoban-y dy))
+                   (c (sokoban-get-floor x y)))
+              (gamegrid-set-cell x y c)
+              (if (eq c sokoban-target)
+                  (decf sokoban-done))
+              (gamegrid-set-cell sokoban-x sokoban-y sokoban-block)
+              (setq c (sokoban-get-floor sokoban-x sokoban-y))
+              (if (eq c sokoban-target)
+                  (incf sokoban-done)))
+            (setq sokoban-x (- sokoban-x dx))
+            (setq sokoban-y (- sokoban-y dy))
+            (gamegrid-set-cell sokoban-x sokoban-y sokoban-player)
+            (decf sokoban-pushes)
+            (decf sokoban-moves))
+           ((eq type 'move)
+            (let ((c (sokoban-get-floor sokoban-x sokoban-y)))
+              (gamegrid-set-cell sokoban-x sokoban-y c))
+            (setq sokoban-x (- sokoban-x dx))
+            (setq sokoban-y (- sokoban-y dy))
+            (gamegrid-set-cell sokoban-x sokoban-y sokoban-player)
+            (decf sokoban-moves))
+           (t
+            (message "Invalid entry in sokoban-undo-list")))
+      (sokoban-draw-score))))
+
+(defun sokoban-move (dx dy)
+  (let* ((x (+ sokoban-x dx))
+        (y (+ sokoban-y dy))
+        (c (gamegrid-get-cell x y)))
+    (cond ((or (eq c sokoban-floor)
+              (eq c sokoban-target))
+          (gamegrid-set-cell sokoban-x
+                             sokoban-y
+                             (sokoban-get-floor sokoban-x
+                                                sokoban-y))
+          (setq sokoban-x x
+                sokoban-y y)
+          (gamegrid-set-cell sokoban-x
+                             sokoban-y
+                             sokoban-player)
+          (sokoban-add-move dx dy))
+         ((eq c sokoban-block)
+          (let* ((xx (+ x dx))
+                 (yy (+ y dy))
+                 (cc (gamegrid-get-cell xx yy)))
+            (cond ((or (eq cc sokoban-floor)
+                       (eq cc sokoban-target))
+                   (if (eq (sokoban-get-floor x y) sokoban-target)
+                       (decf sokoban-done))
+                   (gamegrid-set-cell xx yy sokoban-block)
+                   (gamegrid-set-cell x y sokoban-player)
+                   (gamegrid-set-cell sokoban-x
+                                      sokoban-y
+                                      (sokoban-get-floor sokoban-x
+                                                         sokoban-y))
+                   (setq sokoban-x x
+                         sokoban-y y)
+                   (if (eq (sokoban-get-floor xx yy) sokoban-target)
+                       (incf sokoban-done))
+                   (sokoban-add-push dx dy)
+                   (cond ((= sokoban-done sokoban-targets)
+                          (sit-for 3)
+                          (sokoban-next-level))))))))))
+
+(defun sokoban-event-x (event)
+  (let ((x (gamegrid-event-x event)))
+    (if (featurep 'xemacs)
+        x
+      ;; 32.0 is the pixel width of the xpm image
+      (floor x (/ 32.0 (frame-char-width))))))
+
+(defun sokoban-event-y (event)
+  (let ((y (gamegrid-event-y event)))
+    (if (featurep 'xemacs)
+        y
+      (floor y (/ 32.0 (frame-char-height))))))
+
+(defun sokoban-mouse-event-start (event)
+  "Record the beginning of a mouse click."
+  (interactive "e")
+  (setq sokoban-mouse-x (sokoban-event-x event))
+  (setq sokoban-mouse-y (sokoban-event-y event)))
+
+(defun sokoban-mouse-event-end (event)
+  "Move according to the clicked position."
+  (interactive "e")
+  (let* ((x (sokoban-event-x event))
+        (y (sokoban-event-y event))
+        (dx (- x sokoban-x))
+        (dy (- y sokoban-y)))
+    (cond
+     ;; Ensure that press and release are in the same square
+     ;; (which allows you to abort a move)
+     ((not (and (eq sokoban-mouse-x x) (eq sokoban-mouse-y y)))
+      nil)
+     ;; Check that the move isn't diagonal
+     ((not (or (eq dx 0) (eq dy 0)))
+      nil)
+     ((< dx 0) ;; Left
+      (while (< dx 0)
+       (sokoban-move -1 0)
+       (setq dx (1+ dx))))
+     ((> dx 0) ;; Right
+      (while (> dx 0)
+       (sokoban-move 1 0)
+       (setq dx (1- dx))))
+     ((> dy 0) ;; Up
+      (while (> dy 0)
+       (sokoban-move 0 1)
+       (setq dy (1- dy))))
+     ((< dy 0) ;; Down
+      (while (< dy 0)
+       (sokoban-move 0 -1)
+       (setq dy (1+ dy)))))))
+
+(defun sokoban-move-left ()
+  "Move one square left."
+  (interactive)
+  (sokoban-move -1 0))
+
+(defun sokoban-move-right ()
+  "Move one square right."
+  (interactive)
+  (sokoban-move 1 0))
+
+(defun sokoban-move-up ()
+  "Move one square up."
+  (interactive)
+  (sokoban-move 0 -1))
+
+(defun sokoban-move-down ()
+  "Move one square down."
+  (interactive)
+  (sokoban-move 0 1))
+
+(defun sokoban-restart-level ()
+  "Restart the current level."
+  (interactive)
+  (setq sokoban-moves 0
+       sokoban-pushes 0
+       sokoban-done 0
+       sokoban-undo-list nil)
+  (sokoban-get-level-data)
+  (sokoban-init-buffer)
+  (sokoban-draw-score))
+
+(defun sokoban-next-level ()
+  (incf sokoban-level)
+  (sokoban-restart-level))
+
+(defun sokoban-goto-level (level)
+  "Jump to a specified LEVEL."
+  (interactive "nLevel: ")
+  (when (or (< level 1)
+            (> level (length sokoban-level-data)))
+    (signal 'args-out-of-range
+            (list "No such level number"
+                  level 1 (> level (length sokoban-level-data)))))
+  (setq sokoban-level level)
+  (sokoban-restart-level))
+
+(defun sokoban-start-game ()
+  "Start a new game of Sokoban."
+  (interactive)
+  (setq sokoban-level 0)
+  (sokoban-next-level))
+
+(put 'sokoban-mode 'mode-class 'special)
+
+(unless (featurep 'xemacs)
+  (easy-menu-define sokoban-popup-menu nil "Popup menu for Sokoban mode."
+    '("Sokoban Commands"
+      ["Restart this level" sokoban-restart-level]
+      ["Start new game" sokoban-start-game]
+      ["Go to specific level" sokoban-goto-level]))
+  (define-key sokoban-mode-map [down-mouse-3] sokoban-popup-menu))
+
+(define-derived-mode sokoban-mode special-mode "Sokoban"
+  "A mode for playing Sokoban.
+
+sokoban-mode keybindings:
+   \\{sokoban-mode-map}"
+
+  (when (featurep 'xemacs)
+    (setq mode-popup-menu
+          '("Sokoban Commands"
+            ["Restart this level" sokoban-restart-level]
+            ["Start new game" sokoban-start-game]
+            ["Go to specific level" sokoban-goto-level])))
+
+  (set (make-local-variable 'gamegrid-use-glyphs) sokoban-use-glyphs)
+  (set (make-local-variable 'gamegrid-use-color) sokoban-use-color)
+  (set (make-local-variable 'gamegrid-font) sokoban-font)
+
+  (gamegrid-init (sokoban-display-options))
+
+  (if (null sokoban-level-data)
+      (sokoban-init-level-data)))
+
+;;;###autoload
+(defun sokoban ()
+  "Sokoban.
+
+Push the blocks onto the target squares.
+
+sokoban-mode keybindings:
+   \\<sokoban-mode-map>
+\\[sokoban-start-game] Starts a new game of Sokoban
+\\[sokoban-restart-level]      Restarts the current level
+\\[sokoban-goto-level] Jumps to a specified level
+\\[sokoban-move-left]  Move one square to the left
+\\[sokoban-move-right] Move one square to the right
+\\[sokoban-move-up]    Move one square up
+\\[sokoban-move-down]  Move one square down"
+  (interactive)
+
+  (switch-to-buffer sokoban-buffer-name)
+  (gamegrid-kill-timer)
+  (sokoban-mode)
+  (sokoban-start-game))
+
+;;;###autoload
+(unless (featurep 'xemacs)
+  (define-key-after                    ; install a menu entry
+    (lookup-key global-map [menu-bar tools games])
+    [sokoban]
+    '(menu-item "Sokoban" sokoban)
+    'snake))
+
+(provide 'sokoban)
+
+;;; sokoban.el ends here
+
diff --git a/packages/sokoban/sokoban.levels b/packages/sokoban/sokoban.levels
new file mode 100644 (file)
index 0000000..383146a
--- /dev/null
@@ -0,0 +1,1290 @@
+;WALLS
+            12     f     f   ff      0   standard floor
+.           13     f     f   ff      4   target field
+#            0     0     0    0      0   walls
+
+;OBJECTS
+@            0       f       0    101   201    1     0 player
+$            1       f       0    100     0    2  1000 heavy box
+
+;MAXLEVEL 88
+;ATOP *$.
+;LEVEL 1
+    #####
+    #   #
+    #$  #
+  ###  $##
+  #  $ $ #
+### # ## #   ######
+#   # ## #####  ..#
+# $  $          ..#
+##### ### #@##  ..#
+    #     #########
+    #######
+;LEVEL 2
+############
+#..  #     ###
+#..  # $  $  #
+#..  #$####  #
+#..    @ ##  #
+#..  # #  $ ##
+###### ##$ $ #
+  # $  $ $ $ #
+  #    #     #
+  ############
+;LEVEL 3
+        ########
+        #     @#
+        # $#$ ##
+        # $  $#
+        ##$ $ #
+######### $ # ###
+#....  ## $  $  #
+##...    $  $   #
+#....  ##########
+########
+;LEVEL 4
+           ########
+           #  ....#
+############  ....#
+#    #  $ $   ....#
+# $$$#$  $ #  ....#
+#  $     $ #  ....#
+# $$ #$ $ $########
+#  $ #     #
+## #########
+#    #    ##
+#     $   ##
+#  $$#$$  @#
+#    #    ##
+###########
+;LEVEL 5
+        #####
+        #   #####
+        # #$##  #
+        #     $ #
+######### ###   #
+#....  ## $  $###
+#....    $ $$ ##
+#....  ##$  $ @#
+#########  $  ##
+        # $ $  #
+        ### ## #
+          #    #
+          ######
+;LEVEL 6
+######  ###
+#..  # ##@##
+#..  ###   #
+#..     $$ #
+#..  # # $ #
+#..### # $ #
+#### $ #$  #
+   #  $# $ #
+   # $  $  #
+   #  ##   #
+   #########
+;LEVEL 7
+       #####
+ #######   ##
+## # @## $$ #
+#    $      #
+#  $  ###   #
+### #####$###
+# $  ### ..#
+# $ $ $ ...#
+#    ###...#
+# $$ # #...#
+#  ### #####
+####
+;LEVEL 8
+  ####
+  #  ###########
+  #    $   $ $ #
+  # $# $ #  $  #
+  #  $ $  #    #
+### $# #  #### #
+#@#$ $ $  ##   #
+#    $ #$#   # #
+#   $    $ $ $ #
+#####  #########
+  #      #
+  #      #
+  #......#
+  #......#
+  #......#
+  ########
+;LEVEL 9
+          #######
+          #  ...#
+      #####  ...#
+      #      . .#
+      #  ##  ...#
+      ## ##  ...#
+     ### ########
+     # $$$ ##
+ #####  $ $ #####
+##   #$ $   #   #
+#@ $  $    $  $ #
+###### $$ $ #####
+     #      #
+     ########
+;LEVEL 10
+ ###  #############
+##@####       #   #
+# $$   $$  $ $ ...#
+#  $$$#    $  #...#
+# $   # $$ $$ #...#
+###   #  $    #...#
+#     # $ $ $ #...#
+#    ###### ###...#
+## #  #  $ $  #...#
+#  ## # $$ $ $##..#
+# ..# #  $      #.#
+# ..# # $$$ $$$ #.#
+##### #       # #.#
+    # ######### #.#
+    #           #.#
+    ###############
+;LEVEL 11
+          ####
+     #### #  #
+   ### @###$ #
+  ##      $  #
+ ##  $ $$## ##
+ #  #$##     #
+ # # $ $$ # ###
+ #   $ #  # $ #####
+####    #  $$ #   #
+#### ## $         #
+#.    ###  ########
+#.. ..# ####
+#...#.#
+#.....#
+#######
+;LEVEL 12
+################
+#              #
+# # ######     #
+# #  $ $ $ $#  #
+# #   $@$   ## ##
+# #  $ $ $###...#
+# #   $ $  ##...#
+# ###$$$ $ ##...#
+#     # ## ##...#
+#####   ## ##...#
+    #####     ###
+        #     #
+        #######
+;LEVEL 13
+   #########
+  ##   ##  #####
+###     #  #    ###
+#  $ #$ #  #  ... #
+# # $#@$## # #.#. #
+#  # #$  #    . . #
+# $    $ # # #.#. #
+#   ##  ##$ $ . . #
+# $ #   #  #$#.#. #
+## $  $   $  $... #
+ #$ ######    ##  #
+ #  #    ##########
+ ####
+;LEVEL 14
+       #######
+ #######     #
+ #     # $@$ #
+ #$$ #   #########
+ # ###......##   #
+ #   $......## # #
+ # ###......     #
+##   #### ### #$##
+#  #$   #  $  # #
+#  $ $$$  # $## #
+#   $ $ ###$$ # #
+#####     $   # #
+    ### ###   # #
+      #     #   #
+      ########  #
+             ####
+;LEVEL 15
+   ########
+   #   #  #
+   #  $   #
+ ### #$   ####
+ #  $  ##$   #
+ #  # @ $ # $#
+ #  #      $ ####
+ ## ####$##     #
+ # $#.....# #   #
+ #  $..**. $# ###
+##  #.....#   #
+#   ### #######
+# $$  #  #
+#  #     #
+######   #
+     #####
+;LEVEL 16
+#####
+#   ##
+#    #  ####
+# $  ####  #
+#  $$ $   $#
+###@ #$    ##
+ #  ##  $ $ ##
+ # $  ## ## .#
+ #  #$##$  #.#
+ ###   $..##.#
+  #    #.*...#
+  # $$ #.....#
+  #  #########
+  #  #
+  ####
+;LEVEL 17
+   ##########
+   #..  #   #
+   #..      #
+   #..  #  ####
+  #######  #  ##
+  #            #
+  #  #  ##  #  #
+#### ##  #### ##
+#  $  ##### #  #
+# # $  $  # $  #
+# @$  $   #   ##
+#### ## #######
+   #    #
+   ######
+;LEVEL 18
+     ###########
+     #  .  #   #
+     # #.    @ #
+ ##### ##..# ####
+##  # ..###     ###
+# $ #...   $ #  $ #
+#    .. ##  ## ## #
+####$##$# $ #   # #
+  ## #    #$ $$ # #
+  #  $ # #  # $## #
+  #               #
+  #  ###########  #
+  ####         ####
+;LEVEL 19
+  ######
+  #   @####
+##### $   #
+#   ##    ####
+# $ #  ##    #
+# $ #  ##### #
+## $  $    # #
+## $ $ ### # #
+## #  $  # # #
+## # #$#   # #
+## ###   # # ######
+#  $  #### # #....#
+#    $    $   ..#.#
+####$  $# $   ....#
+#       #  ## ....#
+###################
+;LEVEL 20
+    ##########
+#####        ####
+#     #   $  #@ #
+# #######$####  ###
+# #    ## #  #$ ..#
+# # $     #  #  #.#
+# # $  #     #$ ..#
+# #  ### ##     #.#
+# ###  #  #  #$ ..#
+# #    #  ####  #.#
+# #$   $  $  #$ ..#
+#    $ # $ $ #  #.#
+#### $###    #$ ..#
+   #    $$ ###....#
+   #      ## ######
+   ########
+;LEVEL 21
+#########
+#       #
+#       ####
+## #### #  #
+## #@##    #
+# $$$ $  $$#
+#  # ## $  #
+#  # ##  $ ####
+####  $$$ $#  #
+ #   ##   ....#
+ # #   # #.. .#
+ #   # # ##...#
+ ##### $  #...#
+     ##   #####
+      #####
+;LEVEL 22
+######     ####
+#    #######  #####
+#   $#  #  $  #   #
+#  $  $  $ # $ $  #
+##$ $   # @# $    #
+#  $ ########### ##
+# #   #.......# $#
+# ##  # ......#  #
+# #   $........$ #
+# # $ #.... ..#  #
+#  $ $####$#### $#
+# $   ### $   $  ##
+# $     $ $  $    #
+## ###### $ ##### #
+#         #       #
+###################
+;LEVEL 23
+    #######
+    #  #  ####
+##### $#$ #  ##
+#.. #  #  #   #
+#.. # $#$ #  $####
+#.  #     #$  #  #
+#..   $#  # $    #
+#..@#  #$ #$  #  #
+#.. # $#     $#  #
+#.. #  #$$#$  #  ##
+#.. # $#  #  $#$  #
+#.. #  #  #   #   #
+##. ####  #####   #
+ ####  ####   #####
+;LEVEL 24
+###############
+#..........  .####
+#..........$$.#  #
+###########$ #   ##
+#      $  $     $ #
+## ####   #  $ #  #
+#      #   ##  # ##
+#  $#  # ##  ### ##
+# $ #$###    ### ##
+###  $ #  #  ### ##
+###    $ ## #  # ##
+ # $  #  $  $ $   #
+ #  $  $#$$$  #   #
+ #  #  $      #####
+ # @##  #  #  #
+ ##############
+;LEVEL 25
+####
+#  ##############
+#  #   ..#......#
+#  # # ##### ...#
+##$#    ........#
+#   ##$######  ####
+# $ #     ######@ #
+##$ # $   ######  #
+#  $ #$$$##       #
+#      #    #$#$###
+# #### #$$$$$    #
+# #    $     #   #
+# #   ##        ###
+# ######$###### $ #
+#        #    #   #
+##########    #####
+;LEVEL 26
+ #######
+ #  #  #####
+##  #  #...###
+#  $#  #...  #
+# $ #$$ ...  #
+#  $#  #... .#
+#   # $########
+##$       $ $ #
+##  #  $$ #   #
+ ######  ##$$@#
+      #      ##
+      ########
+;LEVEL 27
+ #################
+ #...   #    #   ##
+##.....  $## # #$ #
+#......#  $  #    #
+#......#  #  # #  #
+######### $  $ $  #
+  #     #$##$ ##$##
+ ##   $    # $    #
+ #  ## ### #  ##$ #
+ # $ $$     $  $  #
+ # $    $##$ ######
+ #######  @ ##
+       ######
+;LEVEL 28
+         #####
+     #####   #
+    ## $  $  ####
+##### $  $ $ ##.#
+#       $$  ##..#
+#  ###### ###.. #
+## #  #    #... #
+# $   #    #... #
+#@ #$ ## ####...#
+####  $ $$  ##..#
+   ##  $ $  $...#
+    # $$  $ #  .#
+    #   $ $  ####
+    ######   #
+         #####
+;LEVEL 29
+#####
+#   ##
+# $  #########
+## # #       ######
+## #   $#$#@  #   #
+#  #      $ #   $ #
+#  ### ######### ##
+#  ## ..*..... # ##
+## ## *.*..*.* # ##
+# $########## ##$ #
+#  $   $  $    $  #
+#  #   #   #   #  #
+###################
+;LEVEL 30
+       ###########
+       #   #     #
+#####  #     $ $ #
+#   ##### $## # ##
+# $ ##   # ## $  #
+# $  @$$ # ##$$$ #
+## ###   # ##    #
+## #   ### #####$#
+## #     $  #....#
+#  ### ## $ #....##
+# $   $ #   #..$. #
+#  ## $ #  ##.... #
+#####   ######...##
+    #####    #####
+;LEVEL 31
+  ####
+  #  #########
+ ##  ##  #   #
+ #  $# $@$   ####
+ #$  $  # $ $#  ##
+##  $## #$ $     #
+#  #  # #   $$$  #
+# $    $  $## ####
+# $ $ #$#  #  #
+##  ###  ###$ #
+ #  #....     #
+ ####......####
+   #....####
+   #...##
+   #...#
+   #####
+;LEVEL 32
+      ####
+  #####  #
+ ##     $#
+## $  ## ###
+#@$ $ # $  #
+#### ##   $#
+ #....#$ $ #
+ #....#   $#
+ #....  $$ ##
+ #... # $   #
+ ######$ $  #
+      #   ###
+      #$ ###
+      #  #
+      ####
+;LEVEL 33
+############
+##     ##  #
+##   $   $ #
+#### ## $$ #
+#   $ #    #
+# $$$ # ####
+#   # # $ ##
+#  #  #  $ #
+# $# $#    #
+#   ..# ####
+####.. $ #@#
+#.....# $# #
+##....#  $ #
+###..##    #
+############
+;LEVEL 34
+ #########
+ #....   ##
+ #.#.#  $ ##
+##....# # @##
+# ....#  #  ##
+#     #$ ##$ #
+## ###  $    #
+ #$  $ $ $#  #
+ # #  $ $ ## #
+ #  ###  ##  #
+ #    ## ## ##
+ #  $ #  $  #
+ ###$ $   ###
+   #  #####
+   ####
+;LEVEL 35
+############ ######
+#   #    # ###....#
+#   $$#   @  .....#
+#   # ###   # ....#
+## ## ###  #  ....#
+ # $ $     # # ####
+ #  $ $##  #      #
+#### #  #### # ## #
+#  # #$   ## #    #
+# $  $  # ## #   ##
+# # $ $    # #   #
+#  $ ## ## # #####
+# $$     $$  #
+## ## ### $  #
+ #    # #    #
+ ###### ######
+;LEVEL 36
+            #####
+#####  ######   #
+#   ####  $ $ $ #
+# $   ## ## ##  ##
+#   $ $     $  $ #
+### $  ## ##     ##
+  # ##### #####$$ #
+ ##$##### @##     #
+ # $  ###$### $  ##
+ # $  #   ###  ###
+ # $$ $ #   $$ #
+ #     #   ##  #
+ #######.. .###
+    #.........#
+    #.........#
+    ###########
+;LEVEL 37
+###########
+#......   #########
+#......   #  ##   #
+#..### $    $     #
+#... $ $ #   ##   #
+#...#$#####    #  #
+###    #   #$  #$ #
+  #  $$ $ $  $##  #
+  #  $   #$#$ ##$ #
+  ### ## #    ##  #
+   #  $ $ ## ######
+   #    $  $  #
+   ##   # #   #
+    #####@#####
+        ###
+;LEVEL 38
+      ####
+####### @#
+#     $  #
+#   $## $#
+##$#...# #
+ # $...  #
+ # #. .# ##
+ #   # #$ #
+ #$  $    #
+ #  #######
+ ####
+;LEVEL 39
+             ######
+ #############....#
+##   ##     ##....#
+#  $$##  $ @##....#
+#      $$ $#  ....#
+#  $ ## $$ # # ...#
+#  $ ## $  #  ....#
+## ##### ### ##.###
+##   $  $ ##   .  #
+# $###  # ##### ###
+#   $   #       #
+#  $ #$ $ $###  #
+# $$$# $   # ####
+#    #  $$ #
+######   ###
+     #####
+;LEVEL 40
+    ############
+    #          ##
+    #  # #$$ $  #
+    #$ #$#  ## @#
+   ## ## # $ # ##
+   #   $ #$  # #
+   #   # $   # #
+   ## $ $   ## #
+   #  #  ##  $ #
+   #    ## $$# #
+######$$   #   #
+#....#  ########
+#.#... ##
+#....   #
+#....   #
+#########
+;LEVEL 41
+           #####
+          ##   ##
+         ##     #
+        ##  $$  #
+       ## $$  $ #
+       # $    $ #
+####   #   $$ #####
+#  ######## ##    #
+#.            $$$@#
+#.# ####### ##   ##
+#.# #######. #$ $##
+#........... #    #
+##############  $ #
+             ##  ##
+              ####
+;LEVEL 42
+     ########
+  ####      ######
+  #    ## $ $   @#
+  # ## ##$#$ $ $##
+### ......#  $$ ##
+#   ......#  #   #
+# # ......#$  $  #
+# #$...... $$# $ #
+#   ### ###$  $ ##
+###  $  $  $  $ #
+  #  $  $  $  $ #
+  ######   ######
+       #####
+;LEVEL 43
+        #######
+    #####  #  ####
+    #   #   $    #
+ #### #$$ ## ##  #
+##      # #  ## ###
+#  ### $#$  $  $  #
+#...    # ##  #   #
+#...#    @ # ### ##
+#...#  ###  $  $  #
+######## ##   #   #
+          #########
+;LEVEL 44
+ #####
+ #   #
+ # # #######
+ #      $@######
+ # $ ##$ ###   #
+ # #### $    $ #
+ # ##### #  #$ ####
+##  #### ##$      #
+#  $#  $  # ## ## #
+#         # #...# #
+######  ###  ...  #
+     #### # #...# #
+          # ### # #
+          #       #
+          #########
+;LEVEL 45
+##### ####
+#...# #  ####
+#...###  $  #
+#....## $  $###
+##....##   $  #
+###... ## $ $ #
+# ##    #  $  #
+#  ## # ### ####
+# $ # #$  $    #
+#  $ @ $    $  #
+#   # $ $$ $ ###
+#  ######  ###
+# ##    ####
+###
+;LEVEL 46
+##########
+#        ####
+# ###### #  ##
+# # $ $ $  $ #
+#       #$   #
+###$  $$#  ###
+  #  ## # $##
+  ##$#   $ @#
+   #  $ $ ###
+   # #   $  #
+   # ##   # #
+  ##  ##### #
+  #         #
+  #.......###
+  #.......#
+  #########
+;LEVEL 47
+         ####
+ #########  ##
+##  $      $ #####
+#   ## ##   ##...#
+# #$$ $ $$#$##...#
+# #   @   #   ...#
+#  $# ###$$   ...#
+# $  $$  $ ##....#
+###$       #######
+  #  #######
+  ####
+;LEVEL 48
+  #########
+  #*.*#*.*#
+  #.*.*.*.#
+  #*.*.*.*#
+  #.*.*.*.#
+  #*.*.*.*#
+  ###   ###
+    #   #
+###### ######
+#           #
+# $ $ $ $ $ #
+## $ $ $ $ ##
+ #$ $ $ $ $#
+ #   $@$   #
+ #  #####  #
+ ####   ####
+;LEVEL 49
+       ####
+       #  ##
+       #   ##
+       # $$ ##
+     ###$  $ ##
+  ####    $   #
+###  # #####  #
+#    # #....$ #
+# #   $ ....# #
+#  $ # #.*..# #
+###  #### ### #
+  #### @$  ##$##
+     ### $     #
+       #  ##   #
+       #########
+;LEVEL 50
+      ############
+     ##..    #   #
+    ##..* $    $ #
+   ##..*.# # # $##
+   #..*.# # # $  #
+####...#  #    # #
+#  ## #          #
+# @$ $ ###  #   ##
+# $   $   # #   #
+###$$   # # # # #
+  #   $   # # #####
+  # $# #####      #
+  #$   #   #    # #
+  #  ###   ##     #
+  #  #      #    ##
+  ####      ######
+;LEVEL 51
+#########
+#       #
+#  $   $#
+####    #
+   # $  ##
+####   $ #
+#.. $ ## ####
+#..  $##    #
+#..    $    #
+#.###$### #@#
+#.# #     ###
+### #######
+;LEVEL 52
+####################
+#  ##########     @#
+# $#    #     ######
+#      ####   #  ###
+#####         #  ###
+#   $         #  ###
+#  $####  #   #    #
+# # #  #..#$###  # #
+# # #$ #..#  $  $$ #
+#      #..#  #   # #
+#   #  #..#  #   # #
+####################
+;LEVEL 53
+####################
+#                ###
+# $#   $ ##  $    ##
+#    $###    # $$ ##
+#.###     $ $ ##  ##
+#...#  #  #    #$  #
+#..##$$#### $  #   #
+#...#      $ ##  ###
+#...$  ###  #    # #
+##..  $#  ##   ##@ #
+###.#              #
+####################
+;LEVEL 54
+####################
+#   #    #   #   #@#
+# $      $   $   # #
+## ###..## ###     #
+#   #....#$#  $### #
+# $ #....#  $  $ $ #
+#   #....# # # $ $ #
+#   ##..##   #$#   #
+##$##    ##  #  #$##
+#   $  $     #  #  #
+#   #    #   #     #
+####################
+;LEVEL 55
+####################
+#    @##      #   ##
+#    ##    $    $ ##
+#  ###....# # #  ###
+#   #....# # # $   #
+### #...#  #       #
+##  ##.#     $   $ #
+##  $ $ ###  # # ###
+## $       # # $   #
+#### $  $# # # # $ #
+####         # #  ##
+####################
+;LEVEL 56
+####################
+#  #  ##    #   @###
+##    $    # $###  #
+##$# $ ##$# $ $    #
+#   $#    $      ###
+# ##   $ ###  #....#
+# # $# # # # #....##
+#    $ $ #  #....###
+##$ ###  $ #....####
+#  # $        ######
+#      # #    ######
+####################
+;LEVEL 57
+####################
+#@     ###   #  #  #
+# # #  #  $  $     #
+#####     # $ $#$# #
+#.#..#    ##$ $    #
+#.....    $   #   ##
+#.....    ###$##$###
+#.#..#    $    #   #
+#####     #  #$  $ #
+#####  #  $    $ $ #
+#####  #  #  #  #  #
+####################
+;LEVEL 58
+####################
+##...   ## #    #  #
+#....         $ ## #
+#....# # #$###$    #
+#...#    #       # #
+##.#  #$ #     $## #
+#  #  # $ $ ###  $ #
+#     $  $ #  # ## #
+## # ## #$$# $#  # #
+#  #   $ $ #      ##
+#    #     #  #   @#
+####################
+;LEVEL 59
+####################
+#   #  #@# ##  #####
+# # #  $    $  #####
+# #    ###### $  ###
+#   #  #....#  $$  #
+##$##$##....#      #
+#      #....##$##$##
+#  $$  #....#      #
+# $  $  #  #  ###  #
+#####  $   $    $  #
+##### #    #  #   ##
+####################
+;LEVEL 60
+####################
+# #     #          #
+#       $  ## ### ##
+#####  ##   $  $   #
+##..##  # # $ # #  #
+#....  $     ##$# ##
+#....  $#####   #$##
+##..# #  #   #  $  #
+###.# #  $   $  # @#
+##  $  $ #   #  ####
+##       ###########
+####################
+;LEVEL 61
+####################
+#     ###..###     #
+# $$  ###..###  $@ #
+#  # ##......#  $  #
+#     #......#  $  #
+####  ###..######$ #
+#   $$$ #..#    #  #
+# $#   $  $  $$ #$ #
+#  #  ## $  ##  #  #
+# $    $ ## $    $ #
+#  #  ##    ##  #  #
+####################
+;LEVEL 62
+####################
+#    #  # #  #  #  #
+# @# # ## $   $   ##
+#### #    #  # $   #
+#    # ## #$ ## ## #
+#      $   $   $   #
+#..###$$## $##$ ## #
+#..#.#  # $   $ #  #
+#....# $$   ##$ ####
+#....#  #####      #
+#...###        ##  #
+####################
+;LEVEL 63
+####################
+#....#       #  #  #
+#....# # $  $      #
+#.... ##  $# # $#$ #
+#...#   $   $#  $  #
+#..####  # $   $$  #
+#      #### #### ###
+#        #   #     #
+# ##   #   $ # $ $ #
+# ##    $ ## $  $  #
+#     @#     #   # #
+####################
+;LEVEL 64
+####################
+#....###           #
+#....##### #  #$# ##
+#....###   #$  $   #
+#....###    $  #$$##
+##  #### $#  #$ $  #
+##  ####  $  $  #  #
+#@  ####$###$## $  #
+##        #  #  $  #
+##   ###  #  $  ####
+########  #  #     #
+####################
+;LEVEL 65
+####################
+#     #     @#...###
+#     #      ##...##
+# # # ##$## ## ....#
+#   $ #   $$$  ....#
+###$### $$  ### ##.#
+#     $  #    # ####
+#  $  #  ###  # #  #
+## #$##    $  $$   #
+#   $ ##   #  # #  #
+#     #    #  #    #
+####################
+;LEVEL 66
+####################
+#     #  #...#@    #
+# #       ....#    #
+#  $  #   #....#   #
+# ##$#### ##....#  #
+# $   $  #  #...#  #
+# $$ #   #   # $$  #
+###  $$$#   $$  $  #
+# $  #  #    # $#  #
+#   $#  #       $  #
+#  #    #    #  #  #
+####################
+;LEVEL 67
+####################
+#####@###.##...##  #
+#####$  ..#...#    #
+####    ......#  $ #
+###  $ #.....## # ##
+##  $$# #####  $ $ #
+## $# $    ##  $$  #
+##  #  #    # $  $ #
+##   $$ ### #$##   #
+## $#      $ $  $ ##
+###    #    #    ###
+####################
+;LEVEL 68
+####################
+#@     #   #       #
+## ### ##  #### # ##
+#    # #  $$       #
+#  # # # $ # $ ## ##
+#     $ #  #$$ #   #
+#  ###  #      ## ##
+#..#.# $ #  $ #    #
+#..#.#  $ # ## $$  #
+#....##   $$  $  # #
+#.....##        #  #
+####################
+;LEVEL 69
+####################
+#  #      #   #   ##
+# $# $ $ ##...$  $ #
+#  $  # ##....# $  #
+# ## $ ##....#   $ #
+# $    #....## $   #
+# $##  #...#       #
+#   $$$##$##  ### ##
+# # #  #   #  #    #
+# $ #  $  ##       #
+#    #    #@       #
+####################
+;LEVEL 70
+####################
+#  #  # #    #  #  #
+#   $      $ $     #
+## #  #$###$##  ## #
+#   $     $  #  $  #
+# ###$##$#   # $   #
+# #   $ $  ###### $#
+# $  $$ $  #@#.#...#
+# #     #  # #.#...#
+# ########## #.....#
+#            #.....#
+####################
+;LEVEL 71
+####################
+#  #     #  ##    ##
+# $#   $ #     ##  #
+# $  $  #..#     $ #
+# $ $  #....#   # ##
+# $#  #......### $ #
+#   #  #....#  #$  #
+# $  ####..#   #   #
+## $   ## # # $  $##
+### $    $#@$ $#   #
+####   #       #   #
+####################
+;LEVEL 72
+####################
+#      ....#    ####
+#      ....        #
+# # ##########     #
+# #$   #      ###..#
+#  $   #$$###   #..#
+# $ ### $   $   #..#
+# $ #   $ $ #  ##..#
+#  #  $$ # $ ##   ##
+#@## $#  $  $     ##
+##       ##   #  ###
+####################
+;LEVEL 73
+####################
+#        #   #@ #  #
+# $$  #$$# # #  ## #
+#  # $ $ #$$ #     #
+## #  #  # # #  #  #
+#   ##       #     #
+#   # $ #   #   #  #
+# $ #$ #   #  $ #..#
+##$ #  ####    #...#
+#  $          #....#
+#   #  #     #.....#
+####################
+;LEVEL 74
+####################
+#     #   #####    #
+## $  #   ####  $  #
+#### $$   #..#  #  #
+#  $  $  ##..#### ##
+# $   ###....   $$ #
+#  #$#   ....# # $ #
+# #  # $ ..###$#   #
+# #   $ #..#   ##  #
+#   $#  ####   # $##
+# #  #    @#      ##
+####################
+;LEVEL 75
+####################
+#   #   #    #   #@#
+#   $  $     # $ # #
+##$# $### #    $$# #
+#  #  #.###  #$ $  #
+#  #$#....#  # ### #
+# $  #.....##    # #
+##$  #.#....#$$ $  #
+#  ######..## #  # #
+#  $         $ ### #
+#   #   #        # #
+####################
+;LEVEL 76
+####################
+# # # #   #@##   # #
+#             $    #
+#  ##$# ##### $ # ##
+##    ##.....#  #  #
+##$##$#.....###$#$ #
+#   # ##.....#  # ##
+#  $    ##..##  #  #
+# $ #   $   $  $$$ #
+## $  $# #  #  $   #
+#   ##   #  #      #
+####################
+;LEVEL 77
+######  #####
+#    #  #   #
+# $  #### $ #
+# $      $  #
+#  ###@###$ #
+########## ###
+#..   ##     #
+#..   ##$    #
+#..   ## $   #
+#..   ## $   #
+#..     $ $  #
+###  #########
+  ####
+;LEVEL 78
+       ###########
+       #         #
+       #    $ $  #
+###### # $ ##### #
+#    ##### $  ##$#
+#       $ $      #
+#          ## ## #
+#    ##@##### ## #
+#    ####   # ## ##
+#....#      # $   #
+#....#      #     #
+######      #######
+;LEVEL 79
+#############
+#           #
+# ### $$    #
+#   # $  $  #
+#  $####$######
+# $ ##        #####
+#  $$ $        ...#
+### ## $$#     ...#
+  # ##   #     ...#
+  #      #     ...#
+  ###@#############
+    ###
+;LEVEL 80
+  #################
+###@##         ...#
+#    #         ...#
+# $  #         ...#
+# $$ #         ...#
+## $ ###$##########
+ # ###  $ #
+##   $  $ #
+#  $ #  $ #
+# $  #    #
+#  $ #    #
+#    #    #
+###########
+;LEVEL 81
+              #####
+     ##########   #
+     #        #   #
+     #  $ $    $$ #
+     # ##### ## $ #
+     #$$   #$## $ #
+     # ### # ##$  #
+###### ### $ $    #
+#....        ##   #
+#....        ######
+#....        #
+###########@##
+          ###
+;LEVEL 82
+    ######
+ ####    #
+ #    ## #
+ # $     #
+### #### ########
+#  $   $ ##  ...#
+#   $$ $$    ...#
+#    $  $##  ...#
+##@## ## ##  ...#
+ ###  $  ########
+ #   $$  #
+ #    #  #
+ #########
+;LEVEL 83
+####### #########
+#     # #   ##  #
+# ### # #   $   #
+# # $ ###   $   #
+#   $$      ##$ #
+#    ####   ##  #
+#@############ ##
+###..    #####$ #
+  #..    ####   #
+  #..       $$  #
+  #..    #### $ #
+  #..    #  #   #
+  ########  #####
+;LEVEL 84
+#######
+#     ##########
+#     #    #  ##
+# $   #   $ $  #
+#  $  #  $ ##  #
+# $$  ##$ $    #
+## #  ## #######
+## #  ##    ...#
+#  #$       ...#
+#   $$      ...#
+#     ##@#  ...#
+################
+;LEVEL 85
+############
+#      #   ##
+# $  $   #  ######
+####  #####      #
+ #..  #     #### #
+ #.####  ####    #
+ #....    #  $ ####
+ # ...#   # $$$#  ##
+###.#### ##  $@$   #
+#     ##### $ #    #
+# #.# $      $###$ #
+# #.########  #  $ #
+# #..        ##  $ #
+# # ####### $ # #  #
+#   #     #       ##
+#####     ##########
+;LEVEL 86
+;COMMENT Level 18, with one more box.
+;AUTHOR Michael Bischoff (mbi@flawless.ts.rz.tu-bs.de)
+     ###########
+     #  .  #   #
+     # #.    @ #
+ ##### ##..# ####
+##  #...###     ###
+# $ #...   $ #  $ #
+#    .. ##  ## ## #
+####$##$# $ #   # #
+  ## #    #$ $$ # #
+  #  $ #$#  # $## #
+  #               #
+  #  ###########  #
+  ####         ####
+;LEVEL 87
+;COMMENT ... and two more for level 22.
+;AUTHOR Michael Bischoff (mbi@flawless.ts.rz.tu-bs.de)
+######     ####
+#    #######  #####
+#   $#  #  $  #   #
+#  $  $  $ # $ $  #
+##$ $   # @# $    #
+#  $ ########### ##
+# #   #.......# $#
+# ##  #.......#  #
+# #   *........$ #
+# # $ #.... ..#  #
+#  $ $####$#### $#
+# $ $ ### $   $  ##
+# $     $ $  $  $ #
+## ###### $ ##### #
+#         #       #
+###################
+;LEVEL 88
+;COMMENT One more for 35.
+;AUTHOR Michael Bischoff (mbi@flawless.ts.rz.tu-bs.de)
+############ ######
+#   #    # ###....#
+#   $$#   @  .....#
+#   # ###   # ....#
+## ## ###  #  ....#
+ # $ $     # #.####
+ #  $ $##  #      #
+#### #  #### # ## #
+#  # #$   ## #    #
+# $  $  # ## #   ##
+# # $ $    # #   #
+#  $ ## ## # #####
+# $$     $$  #   #
+## ## ### $  $   #
+ #    # #    #####
+ ###### ######
diff --git a/packages/svg-clock/svg-clock.el b/packages/svg-clock/svg-clock.el
new file mode 100644 (file)
index 0000000..3897243
--- /dev/null
@@ -0,0 +1,273 @@
+;;; svg-clock.el --- Analog clock using Scalable Vector Graphics
+
+;; Copyright (C) 2011  Free Software Foundation, Inc.
+
+;; Author:      Ulf Jasper <ulf.jasper@web.de>
+;; Created:     22. Sep. 2011
+;; Keywords:    demo, svg, clock
+;; Version:     0.5
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; svg-clock provides a scalable analog clock.  Rendering is done by
+;; means of svg (Scalable Vector Graphics).  Works only with Emacsen
+;; which were built with svg support -- (image-type-available-p 'svg)
+;; must return t.  Call `svg-clock' to start/stop the clock.
+;; Set `svg-clock-size' to change its size.
+
+;; Installation
+;; ------------
+
+;; Add the following lines to your Emacs startup file (`~/.emacs').
+;; (add-to-list 'load-path "/path/to/svg-clock.el")
+;; (autoload 'svg-clock "svg-clock" "Start/stop svg-clock" t)
+
+;; ======================================================================
+
+;;; Code:
+(defconst svg-clock-version "0.5" "Version number of `svg-clock'.")
+
+(require 'image-mode)
+
+(defgroup svg-clock nil
+  "svg-clock"
+  :group 'applications)
+
+(defcustom svg-clock-size t
+  "Size (width and height) of the clock.
+Either an integer which gives the clock size in pixels, or t
+which makes the clock fit to its window automatically."
+  :type '(choice (integer :tag "Fixed Size" :value 250)
+                 (const :tag "Fit to window" t))
+  :group 'svg-clock)
+
+(defvar svg-clock-timer nil)
+
+(defconst svg-clock-template
+  "<?xml version=\"1.0\"?>
+<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"
+\"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">
+<svg xmlns=\"http://www.w3.org/2000/svg\"
+     width=\"%SIZE%\" height=\"%SIZE%\" >
+    <defs>
+        <symbol id=\"tick\">
+            <line x1=\"50\" y1=\"2\" x2=\"50\" y2=\"4\"
+                  style=\"stroke:%FG%;stroke-width:1\"/>
+        </symbol>
+        <symbol id=\"ticklong\">
+            <line x1=\"50\" y1=\"2\" x2=\"50\" y2=\"9\"
+                  style=\"stroke:%FG%;stroke-width:2\"/>
+        </symbol>
+        <symbol id=\"hand-hour\">
+            <line x1=\"50\" y1=\"22\" x2=\"50\" y2=\"54\"
+                  style=\"stroke:%FG%;stroke-width:3\"/>
+        </symbol>
+        <symbol id=\"hand-minute\">
+            <line x1=\"50\" y1=\"12\" x2=\"50\" y2=\"55\"
+                  style=\"stroke:%FG%;stroke-width:3\"/>
+        </symbol>
+        <symbol id=\"hand-second\">
+            <line x1=\"50\" y1=\"10\" x2=\"50\" y2=\"59\"
+                  style=\"stroke:%FG%;stroke-width:0.5\"/>
+        </symbol>
+        <g id=\"minute-ticks-a\">
+           <use xlink:href=\"#tick\"
+                transform=\"rotate(6, 50, 50)\" />
+           <use xlink:href=\"#tick\"
+                transform=\"rotate(12, 50, 50)\" />
+           <use xlink:href=\"#tick\"
+                transform=\"rotate(18, 50, 50)\" />
+           <use xlink:href=\"#tick\"
+                transform=\"rotate(24, 50, 50)\" />
+        </g>
+        <g id=\"minute-ticks-b\">
+            <use xlink:href=\"#minute-ticks-a\"
+                 transform=\"rotate(0, 50, 50)\" />
+            <use xlink:href=\"#minute-ticks-a\"
+                 transform=\"rotate(30, 50, 50)\" />
+            <use xlink:href=\"#minute-ticks-a\"
+                 transform=\"rotate(60, 50, 50)\" />
+            <use xlink:href=\"#minute-ticks-a\"
+                 transform=\"rotate(90, 50, 50)\" />
+            <use xlink:href=\"#minute-ticks-a\"
+                 transform=\"rotate(120, 50, 50)\" />
+            <use xlink:href=\"#minute-ticks-a\"
+                 transform=\"rotate(150, 50, 50)\" />
+        </g>
+
+        <g id=\"5-minute-ticks\">
+           <use xlink:href=\"#ticklong\" />
+           <use xlink:href=\"#ticklong\" transform=\"rotate(30, 50, 50)\" />
+           <use xlink:href=\"#ticklong\" transform=\"rotate(60, 50, 50)\" />
+        </g>
+
+        <g id=\"clock\">
+          <use xlink:href=\"#5-minute-ticks\"
+               transform=\"rotate(0, 50, 50)\" />
+          <use xlink:href=\"#5-minute-ticks\"
+               transform=\"rotate(90, 50, 50)\" />
+          <use xlink:href=\"#5-minute-ticks\"
+               transform=\"rotate(180, 50, 50)\" />
+          <use xlink:href=\"#5-minute-ticks\"
+               transform=\"rotate(270, 50, 50)\" />
+
+          <use xlink:href=\"#minute-ticks-b\"
+               transform=\"rotate(0, 50, 50)\" />
+          <use xlink:href=\"#minute-ticks-b\"
+               transform=\"rotate(180, 50, 50)\" />
+
+          <use xlink:href=\"#hand-second\"
+               transform=\"rotate(%SECOND%, 50, 50)\">
+          </use>
+          <use xlink:href=\"#hand-minute\"
+               transform=\"rotate(%MINUTE%, 50, 50)\">
+          </use>
+          <use xlink:href=\"#hand-hour\"
+               transform=\"rotate(%HOUR%, 50, 50)\">
+          </use>
+
+          <circle cx=\"50\" cy=\"50\" r=\"3\" fill=\"%FG%\"/>
+        </g>
+    </defs>
+    <use xlink:href=\"#clock\"
+         transform=\"scale(%SCALE%, %SCALE%)\"/>
+</svg>"
+  "The template for drawing the `svg-clock'.")
+
+(defvar svg-clock--actual-size 100
+  "Actual size of the svg clock.")
+
+(defun svg-clock-color-to-hex (colour)
+  "Return hex representation of COLOUR."
+  (let ((values (color-values colour)))
+    (format "#%02x%02x%02x" (nth 0 values) (nth 1 values) (nth 2 values))))
+
+(defun svg-clock-replace (from to)
+  "Replace all occurrences of FROM with TO."
+  (goto-char (point-min))
+  (while (re-search-forward from nil t)
+    (replace-match to)))
+
+(defun svg-clock-do-update (time)
+  "Make the clock display TIME.
+TIME must have the form (SECOND MINUTE HOUR ...), as returned by `decode-time'."
+  (with-current-buffer (get-buffer-create "*clock*")
+    (let* ((inhibit-read-only t)
+           (seconds (nth 0 time))
+           (minutes (nth 1 time))
+           (hours (nth 2 time))
+           (bg-colour (svg-clock-color-to-hex (face-background 'default)))
+           (fg-colour (svg-clock-color-to-hex (face-foreground 'default))))
+      (erase-buffer)
+      (insert svg-clock-template)
+
+      (svg-clock-replace "%BG%" bg-colour)
+      (svg-clock-replace "%FG%" fg-colour)
+      (svg-clock-replace "%HOUR%"
+                         (format "%f" (+ (* hours 30) (/ minutes 2.0))))
+      (svg-clock-replace "%MINUTE%"
+                         (format "%f" (+ (* minutes 6) (/ seconds 10.0))))
+      (svg-clock-replace "%SECOND%" (format "%f" (* seconds 6)))
+      (svg-clock-replace "%SIZE%" (format "%d" svg-clock--actual-size))
+      (svg-clock-replace "%SCALE%"
+                         (format "%f" (/ svg-clock--actual-size 100.0)))
+      (image-mode)
+      (image-toggle-display-image))))
+
+(defun svg-clock-update ()
+  "Update the clock."
+  (if (integerp svg-clock-size)
+      (setq svg-clock--actual-size svg-clock-size)
+    (svg-clock-fit-window))
+  (svg-clock-do-update (decode-time (current-time))))
+
+(defun svg-clock-set-size (size &optional perform-update)
+  "Set the SIZE of the clock and optionally PERFORM-UPDATE."
+  (setq svg-clock--actual-size size)
+  (if perform-update
+      (svg-clock-update)))
+
+(defun svg-clock-grow ()
+  "Enlarge the size of the svg clock by 10 pixesl.
+If `svg-clock-size' is t this command has no effect."
+  (interactive)
+  (svg-clock-set-size (+ 10 svg-clock--actual-size) t))
+
+(defun svg-clock-shrink ()
+  "Reduce the size of the svg clock by 10 pixesl.
+If `svg-clock-size' is t this command has no effect."
+  (interactive)
+  (svg-clock-set-size (max 10 (- svg-clock--actual-size 10)) t))
+
+(defun svg-clock-fit-window (&optional perform-update)
+  "Make the svg clock fill the whole window it is displayed in.
+Optionally PERFORM-UPDATE immediately."
+  (interactive)
+  (let  ((clock-win (get-buffer-window "*clock*")))
+    (if clock-win
+        (let* ((coords (window-inside-pixel-edges clock-win))
+               (width (- (nth 2 coords) (nth 0 coords)))
+               (height (- (nth 3 coords) (nth 1 coords))))
+          (svg-clock-set-size (min width height) perform-update)))))
+
+(defun svg-clock-stop ()
+  "Stop the svg clock and hide it."
+  (interactive)
+  (if (not svg-clock-timer)
+      (message "svg-clock is not running.")
+    (cancel-timer svg-clock-timer)
+    (setq svg-clock-timer nil)
+    (replace-buffer-in-windows "*clock*")
+    (message "Clock stopped")))
+
+(defun svg-clock-start ()
+  "Start the svg clock."
+  (if svg-clock-timer
+      (message "svg-clock is running already")
+    (switch-to-buffer (get-buffer-create "*clock*"))
+    (unless (integerp svg-clock-size)
+      (svg-clock-fit-window))
+    (setq svg-clock-timer
+          (run-with-timer 0 1 'svg-clock-update))
+    (svg-clock-mode)
+    (message "Clock started")))
+
+(defvar svg-clock-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [?+] 'svg-clock-grow)
+    (define-key map [?-] 'svg-clock-shrink)
+    (define-key map [?q] 'svg-clock-stop)
+    (define-key map [?f] 'svg-clock-fit-window)
+    map))
+
+(define-derived-mode svg-clock-mode fundamental-mode "svg clock"
+  "Major mode for the svg-clock buffer.
+\\{svg-clock-mode-map}"
+  (buffer-disable-undo))
+
+;;;###autoload
+(defun svg-clock ()
+  "Start/stop the svg clock."
+  (interactive)
+  (if svg-clock-timer
+      (svg-clock-stop)
+    (svg-clock-start)))
+
+(provide 'svg-clock)
+
+;;; svg-clock.el ends here
diff --git a/packages/tNFA/tNFA.el b/packages/tNFA/tNFA.el
new file mode 100644 (file)
index 0000000..8ef3682
--- /dev/null
@@ -0,0 +1,1113 @@
+;;; tNFA.el --- Tagged non-deterministic finite-state automata
+
+;; Copyright (C) 2008-2010, 2012   Free Software Foundation, Inc
+
+;; Author: Toby Cubitt <toby-predictive@dr-qubit.org>
+;; Version: 0.1.1
+;; Keywords: extensions, matching, data structures
+;;           tNFA, NFA, DFA, finite state automata, automata, regexp
+;; Package-Requires: ((queue "0.1"))
+;; URL: http://www.dr-qubit.org/emacs.php
+;; Repository: http://www.dr-qubit.org/git/predictive.git
+
+;; This file is part of Emacs.
+;;
+;; GNU Emacs is free software: you can redistribute it and/or modify it under
+;; the terms of the GNU General Public License as published by the Free
+;; Software Foundation, either version 3 of the License, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful, but WITHOUT
+;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+;; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+;; more details.
+;;
+;; You should have received a copy of the GNU General Public License along
+;; with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+;; A tagged, non-deterministic finite state automata (NFA) is an abstract
+;; computing machine that recognises regular languages. In layman's terms,
+;; they are used to decide whether a string matches a regular expression. The
+;; "tagged" part allows the NFA to do group-capture: it returns information
+;; about which parts of a string matched which subgroup of the regular
+;; expression.
+;;
+;; Why re-implement regular expression matching when Emacs comes with
+;; extensive built-in support for regexps? Primarily, because some algorithms
+;; require access to the NFA states produced part way through the regular
+;; expression matching process (see the trie.el package for an
+;; example). Secondarily, because Emacs regexps only work on strings, whereas
+;; regular expressions can usefully be used in Elisp code to match other
+;; sequence types, not just strings.
+;;
+;; A tagged NFA can be created from a regular expression using
+;; `tNFA-from-regexp', and its state can be updated using
+;; `tNFA-next-state'. You can discover whether a state is a matching state
+;; using `tNFA-match-p', extract subgroup capture data from it using
+;; `tNFA-group-data', check whether a state has any wildcard transitions using
+;; `tNFA-wildcard-p', and get a list of non-wildcard transitions using
+;; `tNFA-transitions'. Finally, `tNFA-regexp-match' uses tagged NFAs to decide
+;; whether a regexp matches a given string.
+;;
+;; Note that Emacs' regexps are not regular expressions in the original
+;; meaning of that phrase. Emacs regexps implement additional features (in
+;; particular, back-references) that allow them to match far more than just
+;; regular languages. This comes at a cost: regexp matching can potentially be
+;; very slow (NP-hard in fact, though the hard cases rarely crop up in
+;; practise), whereas there are efficient (polynomial-time) algorithms for
+;; matching regular expressions (in the original sense). Therefore, this
+;; package only supports a subset of the full Emacs regular expression
+;; syntax. See the function docstrings for more information.
+;;
+;; This package essentially implements Laurikari's algorithm, as described in
+;; his master's thesis, but it builds the corresponding tagged deterministic
+;; finite state automaton (DFA) on-the-fly as needed.
+;;
+;; This package uses the queue package queue.el.
+
+
+;;; Change Log:
+;;
+;; Version 0.1.1
+;; * work-around mysterious byte-compiler bug by defining
+;;   `tNFA--NFA-state-create' and `tNFA--NFA-state-create-tag' via `defun'
+;;   instead of directly in `defstruct'
+;;
+;; Version 0.1
+;; * initial version
+
+
+
+;;; Code:
+
+(eval-when-compile (require 'cl))
+(require 'queue)
+
+
+
+;;; ================================================================
+;;;                  Replcements for CL functions
+
+(defun* tNFA--assoc (item alist &key (test 'eq))
+  ;; Return first cons cell in ALIST whose CAR matches ITEM according to
+  ;; :test function (defaulting to `eq')
+  (while (and alist
+             (or (not (consp (car alist)))
+                 (not (funcall test item (caar alist)))))
+    (setq alist (cdr alist)))
+  (car alist))
+
+
+
+;;; ================================================================
+;;;                    Data structures
+
+;;; ----------------------------------------------------------------
+;;;                    tagged NFA states
+
+(defstruct
+  (tNFA--state
+   (:constructor nil)
+   (:constructor tNFA--state-create-initial
+                (NFA-state num-tags min-tags max-tags
+                 &aux
+                 (tags (tNFA--tags-create num-tags min-tags max-tags))))
+   (:constructor tNFA--state-create (NFA-state tags))
+   (:copier nil))
+  NFA-state tags)
+
+(defmacro tNFA--state-id (state)
+  `(tNFA--NFA-state-id (tNFA--state-NFA-state ,state)))
+
+(defmacro tNFA--state-type (state)
+  `(tNFA--NFA-state-type (tNFA--state-NFA-state ,state)))
+
+(defmacro tNFA--state-label (state)
+  `(tNFA--NFA-state-label (tNFA--state-NFA-state ,state)))
+
+(defmacro tNFA--state-in-degree (state)
+  `(tNFA--NFA-state-in-degree (tNFA--state-NFA-state ,state)))
+
+(defmacro tNFA--state-next (state)
+  `(tNFA--NFA-state-next (tNFA--state-NFA-state ,state)))
+
+(defmacro tNFA--state-count (state)
+  `(tNFA--NFA-state-count (tNFA--state-NFA-state ,state)))
+
+
+
+;;; ----------------------------------------------------------------
+;;;                         NFA states
+
+(declare (special NFA--state-id))
+
+(defstruct
+  (tNFA--NFA-state
+   (:type vector)
+   (:constructor nil)
+   (:constructor tNFA---NFA-state-create
+                (&optional type label next
+                 &aux
+                 (in-degree 0)
+                 (count 0)
+                 (id (incf NFA--state-id))
+                 ;; (dummy
+                 ;;  (when next
+                 ;;    (setf (tNFA--NFA-state-count next)
+                 ;;       (incf (tNFA--NFA-state-in-degree next)))))
+                 ))
+   (:constructor tNFA--NFA-state-create-branch
+                (&rest next
+                 &aux
+                 (type 'branch)
+                 (in-degree 0)
+                 (count 0)
+                 (id (incf NFA--state-id))))
+   (:constructor tNFA---NFA-state-create-tag
+                (tag &optional next
+                 &aux
+                 (type 'tag)
+                 (label tag)
+                 (in-degree 0)
+                 (count 0)
+                 (id (incf NFA--state-id))
+                 ;; (dummy
+                 ;;  (when next
+                 ;;    (setf (tNFA--NFA-state-count next)
+                 ;;       (incf (tNFA--NFA-state-in-degree next)))))
+                 ))
+   (:copier nil))
+  id type label in-degree
+  count tNFA-state  ; used internally in NFA evolution algorithms
+  next)
+
+
+;; Define these via defun instead of using the dummy argument in the
+;; above defstruct to work around a mysterious byte-compiler bug.
+
+(defun tNFA--NFA-state-create (&optional type label next)
+  (when next
+    (setf (tNFA--NFA-state-count next)
+         (incf (tNFA--NFA-state-in-degree next))))
+    (tNFA---NFA-state-create type label next))
+
+(defun tNFA--NFA-state-create-tag (tag &optional next)
+  (when next
+    (setf (tNFA--NFA-state-count next)
+         (incf (tNFA--NFA-state-in-degree next))))
+    (tNFA---NFA-state-create-tag tag next))
+
+
+;; tag number for a tagged epsilon transition is stored in label slot
+(defalias 'tNFA--NFA-state-tag 'tNFA--NFA-state-label)
+
+(defmacro tNFA--NFA-state-tags (state)
+  `(tNFA--state-tags (tNFA--NFA-state-tNFA-state ,state)))
+
+
+(defun tNFA--NFA-state-patch (attach state)
+  ;; patch STATE onto ATTACH. Return value is meaningless
+  (setf
+   (tNFA--NFA-state-type attach)
+     (tNFA--NFA-state-type state)
+   (tNFA--NFA-state-label attach)
+     (tNFA--NFA-state-label state)
+   (tNFA--NFA-state-next attach)
+     (tNFA--NFA-state-next state)
+   (tNFA--NFA-state-count state)
+     (incf (tNFA--NFA-state-in-degree state))))
+
+
+(defun tNFA--NFA-state-make-epsilon (state next)
+  ;; create an epsilon transition from STATE to NEXT
+  (setf
+   (tNFA--NFA-state-type state)  'epsilon
+   (tNFA--NFA-state-label state) nil
+   (tNFA--NFA-state-next state)  next
+   (tNFA--NFA-state-count next)
+     (incf (tNFA--NFA-state-in-degree next))))
+
+
+(defun tNFA--NFA-state-make-branch (state next)
+  ;; create a branch from STATE to all states in NEXT list
+  (setf (tNFA--NFA-state-type state)  'branch
+       (tNFA--NFA-state-label state) nil
+       (tNFA--NFA-state-next state)  next)
+  (dolist (n next)
+    (setf (tNFA--NFA-state-count n)
+         (incf (tNFA--NFA-state-in-degree n)))))
+
+
+(defun tNFA--NFA-state-copy (state)
+  ;; Return a copy of STATE. The next link is *not* copied, it is `eq'
+  ;; to the original next link. Use `tNFA--fragment-copy' if you want to
+  ;; recursively copy a chain of states. Note: NFA--state-id must be
+  ;; bound to something appropriate when this function is called.
+  (let ((copy (copy-sequence state)))
+    (setf (tNFA--NFA-state-id copy) (incf NFA--state-id))
+    copy))
+
+
+
+;;; ----------------------------------------------------------------
+;;;                        NFA fragments
+
+(defstruct
+  (tNFA--fragment
+   (:type vector)
+   (:constructor nil)
+   (:constructor tNFA--fragment-create (initial final))
+   (:copier nil))
+  initial final)
+
+
+(defun tNFA--fragment-patch (frag1 frag2)
+  ;; patch FRAG2 onto end of FRAG1; return value is meaningless
+  (tNFA--NFA-state-patch (tNFA--fragment-final frag1)
+                       (tNFA--fragment-initial frag2))
+  (setf (tNFA--fragment-final frag1) (tNFA--fragment-final frag2)))
+
+
+(defun tNFA--fragment-copy (fragment)
+  ;; return a copy of FRAGMENT.
+  (declare (special copied-states))
+  (let (copied-states)
+    (tNFA--fragment-create
+     (tNFA--do-fragment-copy (tNFA--fragment-initial fragment))
+     (cdr (assq (tNFA--fragment-final fragment) copied-states)))))
+
+
+(defun tNFA--do-fragment-copy (state)
+  ;; return a copy of STATE, recursively following and copying links
+  ;; (note: NFA--state-id must be bound to something appropriate when
+  ;; this is called)
+  (declare (special copied-states))
+  (let ((copy (tNFA--NFA-state-copy state)))
+    (push (cons state copy) copied-states)
+
+    ;; if STATE is a branch, copy all links
+    (cond
+     ((eq (tNFA--NFA-state-type copy) 'branch)
+      (setf (tNFA--NFA-state-next copy)
+           (mapcar (lambda (next)
+                     (or (cdr (assq next copied-states))
+                         (tNFA--do-fragment-copy next)))
+                   (tNFA--NFA-state-next copy))))
+
+     ;; if state doesn't have a next link, return
+     ((or (eq (tNFA--NFA-state-type copy) 'match)
+         (null (tNFA--NFA-state-type copy))))
+
+     ;; otherwise, copy next link
+     ((tNFA--NFA-state-type copy)
+      ;; for a non-branch STATE, copy next link
+      (setf (tNFA--NFA-state-next copy)
+           ;; if we've already copied next state, set next link to that
+           (or (cdr (assq (tNFA--NFA-state-next copy) copied-states))
+               ;; otherwise, recursively copy next state
+               (tNFA--do-fragment-copy (tNFA--NFA-state-next copy))))))
+    copy))
+
+
+
+;;; ----------------------------------------------------------------
+;;;                      DFA states
+
+(defstruct
+  (tNFA--DFA-state
+   :named
+   (:constructor nil)
+   (:constructor tNFA--DFA-state--create
+                (list pool
+                 &key
+                 (test 'eq)
+                 &aux
+                 (transitions ())))
+   (:copier nil))
+  list transitions test wildcard match pool)
+
+
+(defun* tNFA--DFA-state-create (state-list state-pool &key (test 'eq))
+  ;; create DFA state and add it to the state pool
+  (let ((DFA-state (tNFA--DFA-state--create
+                   state-list state-pool :test test))
+       tmp-list)
+    (puthash state-list DFA-state (tNFA--DFA-state-pool DFA-state))
+
+    (dolist (state state-list)
+      ;; if state in state list is...
+      (cond
+       ;; literal state: add literal transition
+       ((eq (tNFA--state-type state) 'literal)
+       (setq tmp-list (tNFA--DFA-state-transitions DFA-state))
+       (add-to-list 'tmp-list (cons (tNFA--state-label state) t))
+       (setf (tNFA--DFA-state-transitions DFA-state) tmp-list))
+
+       ;; character alternative: add transitions for all alternatives
+       ((eq (tNFA--state-type state) 'char-alt)
+       (dolist (c (tNFA--state-label state))
+         (setq tmp-list (tNFA--DFA-state-transitions DFA-state))
+         (add-to-list 'tmp-list (cons c t))
+         (setf (tNFA--DFA-state-transitions DFA-state) tmp-list)))
+
+       ;; wildcard or negated character alternative: add wildcard
+       ;; transistion
+       ((or (eq (tNFA--state-type state) 'wildcard)
+           (eq (tNFA--state-type state) 'neg-char-alt))
+       (setf (tNFA--DFA-state-wildcard DFA-state) t))
+
+       ;; match state: set match tags
+       ((eq (tNFA--state-type state) 'match)
+       (setf (tNFA--DFA-state-match DFA-state)
+             (tNFA--state-tags state)))))
+
+    ;; return constructed state
+    DFA-state))
+
+
+(defun* tNFA--DFA-state-create-initial (state-list &key (test 'eq))
+  ;; create initial DFA state from initial tNFA state INITIAL-STATE
+  (tNFA--DFA-state-create state-list
+                         (make-hash-table :test 'equal)
+                         :test test))
+
+
+(defalias 'tNFA-match-p 'tNFA--DFA-state-match
+  "Return non-nil if STATE is a matching state, otherwise return nil.")
+
+
+(defalias 'tNFA-wildcard-p 'tNFA--DFA-state-wildcard
+  "Return non-nil if STATE has a wildcard transition,
+ otherwise return nil.")
+
+
+(defun tNFA-transitions (state)
+  "Return list of literal transitions from tNFA state STATE."
+  (mapcar 'car (tNFA--DFA-state-transitions state)))
+
+
+
+;;; ----------------------------------------------------------------
+;;;                      tag tables
+
+(defun tNFA--tags-create (num-tags min-tags max-tags)
+  ;; construct a new tags table
+  (let ((vec (make-vector num-tags nil)))
+    (dolist (tag min-tags)
+      (aset vec tag (cons -1 'min)))
+    (dolist (tag max-tags)
+      (aset vec tag (cons -1 'max)))
+    vec))
+
+
+(defun tNFA--tags-copy (tags)
+  ;; return a copy of TAGS table
+  (let* ((len (length tags))
+        (vec (make-vector len nil)))
+    (dotimes (i len)
+      (aset vec i (cons (car (aref tags i))
+                       (cdr (aref tags i)))))
+    vec))
+
+
+(defmacro tNFA--tags-set (tags tag val)
+  ;; set value of TAG in TAGS table to VAL
+  `(setcar (aref ,tags ,tag) ,val))
+
+
+(defmacro tNFA--tags-get (tags tag)
+  ;; get value of TAG in TAGS table
+  `(car (aref ,tags ,tag)))
+
+
+(defmacro tNFA--tags-type (tags tag)
+  ;; return tag type ('min or 'max)
+  `(cdr (aref ,tags ,tag)))
+
+
+(defun tNFA--tags< (val tag tags)
+  ;; return non-nil if VAL takes precedence over the value of TAG in
+  ;; TAGS table, nil otherwise
+  (setq tag (aref tags tag))
+  (or (and (eq (cdr tag) 'min)
+          (< val (car tag)))
+    ;;(and (eq (cdr tag) 'max)
+          (> val (car tag));)
+          ))
+
+
+(defun tNFA--tags-to-groups (tags)
+  ;; Convert TAGS table to a list of indices of group matches. The n'th
+  ;; element of the list is a cons cell, whose car is the starting index
+  ;; of the nth group and whose cdr is its end index. If a group didn't
+  ;; match, the corresponding list element will be null."
+  (let ((groups (make-list (/ (length tags) 2) nil))
+       group-stack
+       (grp 0))
+    (dotimes (i (length tags))
+      (if (eq (tNFA--tags-type tags i) 'max)
+         (unless (= (tNFA--tags-get tags i) -1)
+           (setf (nth (caar group-stack) groups)
+                 (cons (cdr (pop group-stack))
+                       (tNFA--tags-get tags i))))
+       (unless (= (tNFA--tags-get tags i) -1)
+         (push (cons grp (tNFA--tags-get tags i)) group-stack))
+       (incf grp)))
+    groups))
+
+
+
+
+;;; ================================================================
+;;;                        Regexp -> tNFA
+
+;;;###autoload
+(defun* tNFA-from-regexp (regexp &key (test 'eq))
+  "Create a tagged NFA that recognizes the regular expression REGEXP.
+The return value is the initial state of the tagged NFA.
+
+REGEXP can be any sequence type (vector, list, or string); it
+need not be an actual string. Special characters in REGEXP are
+still just that: elements of the sequence that are characters
+which have a special meaning in regexps.
+
+The :test keyword argument specifies how to test whether two
+individual elements of STRING are identical. The default is `eq'.
+
+Only a subset of the full Emacs regular expression syntax is
+supported. There is no support for regexp constructs that are
+only meaningful for strings (character ranges and character
+classes inside character alternatives, and syntax-related
+backslash constructs). Back-references and non-greedy postfix
+operators are not supported, so `?' after a postfix operator
+loses its special meaning. Also, matches are always anchored, so
+`$' and `^' lose their special meanings (use `.*' at the
+beginning and end of the regexp to get an unanchored match)."
+
+  ;; convert regexp to list, build NFA, and return initial state
+  (declare (special NFA--state-id))
+  (destructuring-bind (fragment num-tags min-tags max-tags regexp)
+      (let ((NFA--state-id -1))
+       (tNFA--from-regexp (append regexp nil) 0 '() '() 'top-level))
+    (if regexp
+       (error "Syntax error in regexp: missing \"(\"")
+      (setf (tNFA--NFA-state-type (tNFA--fragment-final fragment))
+           'match)
+      (tNFA--DFA-state-create-initial
+       (tNFA--epsilon-boundary
+       (list
+        (tNFA--state-create-initial
+         (tNFA--fragment-initial fragment) num-tags min-tags max-tags))
+       0)
+       :test test)
+      )))
+
+
+(defmacro tNFA--regexp-postfix-p (regexp)
+  ;; return t if next token in REGEXP is a postfix operator, nil
+  ;; otherwise
+  `(or (eq (car ,regexp) ?*)
+       (eq (car ,regexp) ?+)
+       (eq (car ,regexp) ??)
+       (and (eq (car ,regexp) ?\\)
+           (cdr ,regexp)
+           (eq (cadr ,regexp) ?{))))
+
+
+(defun tNFA--from-regexp (regexp num-tags min-tags max-tags
+                                &optional top-level shy-group)
+  ;; Construct a tagged NFA fragment from REGEXP, up to first end-group
+  ;; character or end of REGEXP. The TAGS arguments are used to pass the
+  ;; tags created so far. A non-nil TOP-LEVEL indicates that REGEXP is
+  ;; the complete regexp, so we're constructing the entire tNFA. A
+  ;; non-nil SHY-GROUP indicates that we're constructing a shy subgroup
+  ;; fragment. (Both optional arguments are only used for spotting
+  ;; syntax errors in REGEXP.)
+  ;;
+  ;; Returns a list: (FRAGMENT NUM-TAGS MIN-TAGS MAX-TAGS
+  ;; REGEXP). FRAGMENT is the constructed tNFA fragment, REGEXP is the
+  ;; remaining, unused portion of the regexp, and the TAGS return values
+  ;; give the tags created so far.
+
+  (let* ((new (tNFA--NFA-state-create))
+        (fragment-stack (list (tNFA--fragment-create new new)))
+        fragment copy attach token type group-end-tag)
+
+    (catch 'constructed
+      (while t
+       (setq regexp (tNFA--regexp-next-token regexp)
+             type   (nth 0 regexp)
+             token  (nth 1 regexp)
+             regexp (nth 2 regexp))
+       (setq fragment nil
+             group-end-tag nil)
+
+       ;; ----- construct new fragment -----
+       (cond
+        ;; syntax error: missing )
+        ((and (null type) (not top-level))
+         (error "Syntax error in regexp:\
+ extra \"(\" or missing \")\""))
+
+        ;; syntax error: extra )
+        ((and (eq type 'shy-group-end) top-level)
+         (error "Syntax error in regexp:\
+ extra \")\" or missing \"(\""))
+
+        ;; syntax error: ) ending a shy group
+        ((and (eq type 'shy-group-end) (not shy-group))
+         (error "Syntax error in regexp: \"(\" matched with \")?\""))
+
+        ;; syntax error: )? ending a group
+        ((and (eq type 'group-end) shy-group)
+         (error "Syntax error in regexp: \"(?\" matched with \")\""))
+
+        ;; syntax error: postfix operator not after atom
+        ((eq type 'postfix)
+         (error "Syntax error in regexp: unexpected \"%s\""
+                (char-to-string token)))
+
+
+        ;; regexp atom: construct new literal fragment
+        ((or (eq type 'literal) (eq type 'wildcard)
+             (eq type 'char-alt) (eq type 'neg-char-alt))
+         (setq new (tNFA--NFA-state-create
+                    type token (tNFA--NFA-state-create))
+               fragment (tNFA--fragment-create
+                         new (tNFA--NFA-state-next new))))
+
+        ;; shy subgroup start: recursively construct subgroup fragment
+        ((eq type 'shy-group-start)
+         (setq new (tNFA--from-regexp
+                    regexp num-tags min-tags max-tags nil t)
+               num-tags (nth 1 new)
+               min-tags (nth 2 new)
+               max-tags (nth 3 new)
+               regexp   (nth 4 new)
+               fragment (nth 0 new)))
+
+        ;; subgroup start: add minimize tag to current fragment, and
+        ;;                 recursively construct subgroup fragment
+        ((eq type 'group-start)
+         (setq new (tNFA--NFA-state-create))
+         (setq fragment
+               (tNFA--fragment-create
+                (tNFA--NFA-state-create-tag
+                 (car (push (1- (incf num-tags)) min-tags))
+                 new)
+                new))
+         (tNFA--fragment-patch (car fragment-stack) fragment)
+         ;; reserve next tag number for subgroup end tag
+         (setq group-end-tag num-tags)
+         (incf num-tags)
+         ;; recursively construct subgroup fragment
+         (setq new (tNFA--from-regexp
+                    regexp num-tags min-tags max-tags)
+               num-tags (nth 1 new)
+               min-tags (nth 2 new)
+               max-tags (nth 3 new)
+               regexp   (nth 4 new)
+               fragment (nth 0 new)))
+
+
+        ;; end of regexp or subgroup: ...
+        ((or (null type) (eq type 'shy-group-end) (eq type 'group-end))
+
+         ;; if fragment-stack contains only one fragment, throw
+         ;; fragment up to recursion level above
+         (cond
+          ((null (nth 1 fragment-stack))
+           (throw 'constructed
+                  (list (car fragment-stack)
+                        num-tags min-tags max-tags regexp)))
+
+          ;; if fragment-stack contains multiple alternation fragments,
+          ;; attach them all together
+          ;;
+          ;;          .--fragment--.
+          ;;         /              \
+          ;;        /----fragment----\
+          ;;       /                  \
+          ;;   ---o------fragment------o--->
+          ;;       \        .         /
+          ;;        \       .        /
+          ;;                .
+          (t
+           ;; create a new fragment containing start and end of
+           ;; alternation
+           (setq fragment
+                 (tNFA--fragment-create
+                  (tNFA--NFA-state-create-branch)
+                  (tNFA--NFA-state-create)))
+           ;; patch alternation fragments into new fragment
+           (dolist (frag fragment-stack)
+             (push (tNFA--fragment-initial frag)
+                   (tNFA--NFA-state-next
+                    (tNFA--fragment-initial fragment)))
+             (setf (tNFA--NFA-state-count
+                    (tNFA--fragment-initial frag))
+                   (incf (tNFA--NFA-state-in-degree
+                          (tNFA--fragment-initial frag))))
+             (tNFA--NFA-state-make-epsilon (tNFA--fragment-final frag)
+                                     (tNFA--fragment-final fragment)))
+           ;; throw constructed fragment up to recursion level above
+           (throw 'constructed
+                  (list fragment num-tags min-tags max-tags regexp)))
+          ))
+
+        ;; | alternation: start new fragment
+        ((eq type 'alternation)
+         (setq new (tNFA--NFA-state-create))
+         (push (tNFA--fragment-create new new) fragment-stack)))
+
+
+       ;; ----- attach new fragment -----
+       (when fragment
+         ;; if next token is not a postfix operator, attach new
+         ;; fragment onto end of current NFA fragment
+         (if (not (tNFA--regexp-postfix-p regexp))
+             (tNFA--fragment-patch (car fragment-stack) fragment)
+
+           ;; if next token is a postfix operator, splice new fragment
+           ;; into NFA as appropriate
+           (when (eq type 'alternation)
+             (error "Syntax error in regexp: unexpected \"%s\""
+                    (char-to-string token)))
+           (setq regexp (tNFA--regexp-next-token regexp)
+                 type   (nth 0 regexp)
+                 token  (nth 1 regexp)
+                 regexp (nth 2 regexp))
+
+           (while fragment
+             (setq attach (tNFA--fragment-final (car fragment-stack)))
+             (setq new (tNFA--NFA-state-create))
+             (cond
+
+              ;; * postfix = \{0,\}:
+              ;;
+              ;;    .--fragment--.
+              ;;   /              \
+              ;;   \        ______/
+              ;;    \      /
+              ;;  ---attach-----new---
+              ;;
+              ((and (eq (car token) 0) (null (cdr token)))
+               (tNFA--NFA-state-make-branch
+                attach (list (tNFA--fragment-initial fragment) new))
+               (tNFA--NFA-state-make-epsilon
+                (tNFA--fragment-final fragment) attach)
+               (setf (tNFA--fragment-final (car fragment-stack)) new)
+               (setq fragment nil))
+
+              ;; + postfix = \{1,\}:
+              ;;
+              ;;      .----.
+              ;;     /      \
+              ;;    /        \
+              ;;    \        /
+              ;;  ---fragment-----new---
+              ;;
+              ((and (eq (car token) 1) (null (cdr token)))
+               (tNFA--NFA-state-patch
+                attach (tNFA--fragment-initial fragment))
+               (tNFA--NFA-state-make-branch
+                (tNFA--fragment-final fragment) (list attach new))
+               (setf (tNFA--fragment-final (car fragment-stack)) new)
+               (setq fragment nil))
+
+              ;; \{0,n\} (note: ? postfix = \{0,1\}):
+              ;;
+              ;;            .--fragment--.
+              ;;           /              \
+              ;;  ---attach                new---
+              ;;           \______________/
+              ;;
+              ((eq (car token) 0)
+               ;; ? postfix = \{0,1\}: after this we're done
+               (if (eq (cdr token) 1)
+                   (setq copy nil)
+                 (setq copy (tNFA--fragment-copy fragment)))
+               ;; attach fragment
+               (tNFA--NFA-state-make-branch
+                attach (list (tNFA--fragment-initial fragment) new))
+               (tNFA--NFA-state-make-epsilon
+                (tNFA--fragment-final fragment) new)
+               (setf (tNFA--fragment-final (car fragment-stack)) new)
+               ;; prepare for next iteration
+               (decf (cdr token))
+               (setq fragment copy))
+
+              ;; \{n,\} or \{n,m\}:
+              ;;
+              ;;  ---attach----fragment----new---
+              ;;
+              (t
+               (setq copy (tNFA--fragment-copy fragment))
+               (tNFA--fragment-patch (car fragment-stack) fragment)
+               ;; prepare for next iteration
+               (decf (car token))
+               (when (cdr token) (decf (cdr token)))
+               (if (eq (cdr token) 0)
+                   (setq fragment nil)
+                 (setq fragment copy)))
+              )))
+
+
+         ;; if ending a group, add a maximize tag to end
+         (when group-end-tag
+           (setq new (tNFA--NFA-state-create)
+                 fragment (tNFA--fragment-create
+                           (tNFA--NFA-state-create-tag
+                            group-end-tag new)
+                           new))
+           (push group-end-tag max-tags)
+           (tNFA--fragment-patch (car fragment-stack) fragment)))
+       ))  ; end of infinite loop and catch
+    ))
+
+
+
+;; Note: hard-coding the parsing like this is ugly, though sufficient
+;;       for our purposes. Perhaps it would be more elegant to implement
+;;       this in terms of a proper parser...
+
+(defun tNFA--regexp-next-token (regexp)
+  ;; if regexp is empty, return null values for next token type, token
+  ;; and remaining regexp
+  (if (null regexp)
+      (list nil nil nil)
+
+    (let ((token (pop regexp))
+         (type 'literal))  ; assume token is literal initially
+      (cond
+
+       ;; [: gobble up to closing ]
+       ((eq token ?\[)
+       ;; character alternatives are stored in lists
+       (setq token '())
+       (cond
+        ;; gobble ] appearing straight after [
+        ((eq (car regexp) ?\]) (push (pop regexp) token))
+        ;; gobble ] appearing straight after [^
+        ((and (eq (car regexp) ?^) (eq (nth 1 regexp) ?\]))
+         (push (pop regexp) token)
+         (push (pop regexp) token)))
+       ;; gobble everything up to closing ]
+       (while (not (eq (car regexp) ?\]))
+         (push (pop regexp) token)
+         (unless regexp
+           (error "Syntax error in regexp: missing \"]\"")))
+       (pop regexp)  ; dump closing ]
+       (if (not (eq (car (last token)) ?^))
+           (setq type 'char-alt)
+         (setq type 'neg-char-alt)
+         (setq token (butlast token))))
+
+       ;; ]: syntax error (always gobbled when parsing [)
+       ((eq token ?\])
+       (error "Syntax error in regexp: missing \"[\""))
+
+       ;; . * + ?: set appropriate type
+       ((eq token ?*) (setq type 'postfix token (cons 0 nil)))
+       ((eq token ?+) (setq type 'postfix token (cons 1 nil)))
+       ((eq token ??) (setq type 'postfix token (cons 0 1)))
+       ((eq token ?.) (setq type 'wildcard))
+
+       ;; \: look at next character
+       ((eq token ?\\)
+       (unless (setq token (pop regexp))
+         (error "Syntax error in regexp:\
+ missing character after \"\\\""))
+       (cond
+        ;; |: alternation
+        ((eq token ?|) (setq type 'alternation))
+        ;; \(?: shy group start
+        ((and (eq token ?\() (eq (car regexp) ??))
+         (setq type 'shy-group-start)
+         (pop regexp))
+        ;; \)?: shy group end
+        ((and (eq token ?\)) (eq (car regexp) ??))
+         (setq type 'shy-group-end)
+         (pop regexp))
+        ;; \(: group start
+        ((eq token ?\() (setq type 'group-start))
+        ;; \): group end
+        ((eq token ?\)) (setq type 'group-end))
+
+        ;; \{: postfix repetition operator
+        ((eq token ?{)
+         (setq type 'postfix token (cons nil nil))
+         ;; extract first number from repetition operator
+         (while (if (null regexp)
+                    (error "Syntax error in regexp:\
+ malformed \\{...\\}")
+                  (not (or (eq (car regexp) ?,)
+                           (eq (car regexp) ?\\))))
+           (setcar token
+                   (concat (car token) (char-to-string (pop regexp)))))
+         (if (null (car token))
+             (setcar token 0)
+           (unless (string-match "[0-9]+" (car token))
+             (error "Syntax error in regexp: malformed \\{...\\}"))
+           (setcar token (string-to-number (car token))))
+         (cond
+          ;; if next character is "\", we expect "}" to follow
+          ((eq (car regexp) ?\\)
+           (pop regexp)
+           (unless (eq (car regexp) ?})
+             (error "Syntax error in regexp: expected \"}\""))
+           (pop regexp)
+           (unless (car token)
+             (error "Syntax error in regexp: malformed \\{...\\}"))
+           (setcdr token (car token)))
+          ;; if next character is ",", we expect a second number to
+          ;; follow
+          ((eq (car regexp) ?,)
+           (pop regexp)
+           (while (if (null regexp)
+                      (error "Syntax error in regexp:\
+ malformed \\{...\\}")
+                    (not (eq (car regexp) ?\\)))
+             (setcdr token
+                     (concat (cdr token)
+                             (char-to-string (pop regexp)))))
+           (unless (null (cdr token))
+             (unless (string-match "[0-9]+" (cdr token))
+               (error "Syntax error in regexp: malformed \\{...\\}"))
+             (setcdr token (string-to-number (cdr token))))
+           (pop regexp)
+           (unless (eq (car regexp) ?})
+             (error "Syntax error in regexp: expected \"}\""))
+           (pop regexp))))
+        ))
+       )
+
+      ;; return first token type, token, and remaining regexp
+      (list type token regexp))))
+
+
+
+;;; ================================================================
+;;;                     tNFA evolution
+
+(defun tNFA-next-state (tNFA chr pos)
+  "Evolve tNFA according to CHR, which corresponds to position
+POS in a string."
+  (let (elem state)
+    ;; if there is a transition for character CHR...
+    (cond
+     ((setq elem (tNFA--assoc chr (tNFA--DFA-state-transitions tNFA)
+                              :test (tNFA--DFA-state-test tNFA)))
+      ;; if next state has not already been computed, do so
+      (unless (tNFA--DFA-state-p (setq state (cdr elem)))
+       (setq state (tNFA--DFA-next-state tNFA chr pos nil))
+       (setcdr elem state)))
+
+     ;; if there's a wildcard transition...
+     ((setq state (tNFA--DFA-state-wildcard tNFA))
+      ;; if next state has not already been computed, do so
+      (unless (tNFA--DFA-state-p state)
+       (setq state (tNFA--DFA-next-state tNFA chr pos t))
+       (setf (tNFA--DFA-state-wildcard tNFA) state))))
+    state))
+
+
+
+(defun tNFA--DFA-next-state (DFA-state chr pos wildcard)
+  (let (state-list state)
+    ;; add all states reached by a CHR transition from DFA-STATE to
+    ;; state list
+    (if wildcard
+       (dolist (state (tNFA--DFA-state-list DFA-state))
+         (when (or (eq (tNFA--state-type state) 'wildcard)
+                   (and (eq (tNFA--state-type state) 'neg-char-alt)
+                        (not (memq chr (tNFA--state-label state)))))
+           (push (tNFA--state-create
+                  (tNFA--state-next state)
+                  (tNFA--tags-copy (tNFA--state-tags state)))
+                 state-list)))
+      (dolist (state (tNFA--DFA-state-list DFA-state))
+       (when (or (and (eq (tNFA--state-type state) 'literal)
+                      (eq chr (tNFA--state-label state)))
+                 (and (eq (tNFA--state-type state) 'char-alt)
+                      (memq chr (tNFA--state-label state)))
+                 (and (eq (tNFA--state-type state) 'neg-char-alt)
+                      (not (memq chr (tNFA--state-label state))))
+                 (eq (tNFA--state-type state) 'wildcard))
+         (push (tNFA--state-create
+                (tNFA--state-next state)
+                (tNFA--tags-copy (tNFA--state-tags state)))
+               state-list))))
+
+    ;; if state list is empty, return empty, failure DFA state
+    (when state-list
+      ;; otherwise, construct new DFA state and add it to the pool if
+      ;; it's not already there
+      (setq state-list (tNFA--epsilon-boundary state-list (1+ pos)))
+      (setq state
+           (or (gethash state-list (tNFA--DFA-state-pool DFA-state))
+               (tNFA--DFA-state-create
+                state-list
+                (tNFA--DFA-state-pool DFA-state)
+                :test (tNFA--DFA-state-test DFA-state))))
+      ;; return next state
+      state)))
+
+
+
+(defun tNFA--epsilon-boundary (state-set pos)
+  ;; Return the tagged epsilon-boundary of the NFA states listed in
+  ;; STATE-SET, that is the set of all states that can be reached via
+  ;; epsilon transitions from some state in STATE-SET (not including
+  ;; states in STATE-SET itself).
+  (let ((queue (queue-create))
+       (result '())
+       (reset '())
+       state next tags)
+    ;; temporarily link the NFA states to their corresponding tNFA
+    ;; states, and add them to the queue
+    (dolist (t-state state-set)
+      (setf state (tNFA--state-NFA-state t-state)
+           (tNFA--NFA-state-tNFA-state state) t-state)
+      (push state reset)
+      (queue-enqueue queue state))
+
+    (while (setq state (queue-dequeue queue))
+      (cond
+       ;; branch or epsilon: add next states as necessary, copying tags
+       ;; across
+       ((or (eq (tNFA--NFA-state-type state) 'branch)
+           (eq (tNFA--NFA-state-type state) 'epsilon))
+       (dolist (next (if (eq (tNFA--NFA-state-type state) 'epsilon)
+                         (list (tNFA--NFA-state-next state))
+                       (tNFA--NFA-state-next state)))
+         (unless (tNFA--NFA-state-tNFA-state next)
+           (setf (tNFA--NFA-state-tNFA-state next)
+                 (tNFA--state-create
+                  next (tNFA--tags-copy (tNFA--NFA-state-tags state))))
+           (push next reset)
+           ;; if next state hasn't already been seen in-degree times,
+           ;; add it to the end of the queue
+           (if (/= (decf (tNFA--NFA-state-count next)) 0)
+               (queue-enqueue queue next)
+             ;; if it has now been seen in-degree times, reset count
+             ;; and add it back to the front of the queue
+             (setf (tNFA--NFA-state-count next)
+                   (tNFA--NFA-state-in-degree next))
+             (queue-prepend queue next)))))
+
+       ;; tag: add next state if necessary, updating tags if necessary
+       ((eq (tNFA--NFA-state-type state) 'tag)
+       (setq next (tNFA--NFA-state-next state))
+       ;; if next state is not already in results list, or it is
+       ;; already in results but new tag value takes precedence...
+       (when (or (not (tNFA--NFA-state-tNFA-state next))
+                 (tNFA--tags< pos (tNFA--NFA-state-tag state)
+                             (tNFA--NFA-state-tags next)))
+         ;; if next state is already in results, update tag value
+         (if (tNFA--NFA-state-tNFA-state next)
+             (tNFA--tags-set (tNFA--NFA-state-tags next)
+                            (tNFA--NFA-state-tag state) pos)
+           ;; if state is not already in results, copy tags, updating
+           ;; tag value, and add next state to results list
+           (setq tags (tNFA--tags-copy (tNFA--NFA-state-tags state)))
+           (tNFA--tags-set tags (tNFA--NFA-state-tag state) pos)
+           (setf (tNFA--NFA-state-tNFA-state next)
+                 (tNFA--state-create next tags))
+           (push next reset))
+         ;; if next state hasn't already been seen in-degree times, add
+         ;; it to the end of the queue
+         (if (/= (decf (tNFA--NFA-state-count next)) 0)
+             (queue-enqueue queue next)
+           ;; if it has now been seen in-degree times, reset count and
+           ;; add it back to the front of the queue
+           (setf (tNFA--NFA-state-count next)
+                 (tNFA--NFA-state-in-degree next))
+           (queue-prepend queue next))))
+
+       ;; anything else is a non-epsilon-transition state, so add it to
+       ;; result
+       (t (push (tNFA--NFA-state-tNFA-state state) result))
+       ))
+
+    ;; reset temporary NFA state link and count
+    (dolist (state reset)
+      (setf (tNFA--NFA-state-tNFA-state state) nil
+           (tNFA--NFA-state-count state)
+             (tNFA--NFA-state-in-degree state)))
+    ;; sort result states
+    (sort result
+         (lambda (a b) (< (tNFA--state-id a) (tNFA--state-id b))))
+    ))
+
+
+
+;;; ================================================================
+;;;                       tNFA matching
+
+;;;###autoload
+(defun* tNFA-regexp-match (regexp string &key (test 'eq))
+  "Return non-nil if STRING matches REGEXP, nil otherwise.
+Sets the match data if there was a match; see `match-beginning',
+`match-end' and `match-string'.
+
+REGEXP and STRING can be any sequence type (vector, list, or
+string); they need not be actual strings. Special characters in
+REGEXP are still just that: elements of the sequence that are
+characters which have a special meaning in regexps.
+
+The :test keyword argument specifies how to test whether two
+individual elements of STRING are identical. The default is `eq'.
+
+Only a subset of the full Emacs regular expression syntax is
+supported. There is no support for regexp constructs that are
+only meaningful for strings (character ranges and character
+classes inside character alternatives, and syntax-related
+backslash constructs). Back-references and non-greedy postfix
+operators are not supported, so `?' after a postfix operator
+loses its special meaning. Also, matches are always anchored, so
+`$' and `^' lose their special meanings (use `.*' at the
+beginning and end of the regexp to get an unanchored match)."
+
+  (let ((tNFA (tNFA-from-regexp regexp :test test))
+       (i -1) tags match-data group-stack (grp 0))
+
+    ;; evolve tNFA according to characters of STRING
+    (catch 'fail
+      (dolist (chr (append string nil))
+       (unless (setq tNFA (tNFA-next-state tNFA chr (incf i)))
+         (throw 'fail nil)))
+
+      ;; if REGEXP matched...
+      (when (setq tags (tNFA--DFA-state-match tNFA))
+       (setq match-data (make-list (+ (length tags) 2) nil))
+       ;; set match data
+       (setf (nth 0 match-data) 0
+             (nth 1 match-data) (length string))
+       ;; set group match data if there were any groups
+       (dotimes (i (length tags))
+         (if (eq (tNFA--tags-type tags i) 'max)
+             (unless (= (tNFA--tags-get tags i) -1)
+               (setf (nth (1+ (* 2 (pop group-stack))) match-data)
+                     (tNFA--tags-get tags i)))
+           (incf grp)
+           (unless (= (tNFA--tags-get tags i) -1)
+             (push grp group-stack)
+             (setf (nth (* 2 grp) match-data)
+                   (tNFA--tags-get tags i)))))
+       (set-match-data match-data)
+       tags))))
+
+
+(defun tNFA-group-data (tNFA)
+  "Return the group match data associated with a tNFA state."
+  (tNFA--tags-to-groups (tNFA--DFA-state-match tNFA)))
+
+
+
+(provide 'tNFA)
+
+;;; tNFA.el ends here
diff --git a/packages/temp-buffer-browse/Makefile b/packages/temp-buffer-browse/Makefile
new file mode 100644 (file)
index 0000000..02fbd33
--- /dev/null
@@ -0,0 +1,12 @@
+.PHONY: all clean
+
+ELCFILES = $(addsuffix .elc, $(basename $(wildcard *.el)))
+
+all: $(ELCFILES)
+
+%.elc : %.el
+       @echo Compiling $<
+       @emacs -batch -q -no-site-file -f batch-byte-compile $<
+
+clean:
+       @rm -f *.elc
diff --git a/packages/temp-buffer-browse/README.rst b/packages/temp-buffer-browse/README.rst
new file mode 100644 (file)
index 0000000..2b96bcd
--- /dev/null
@@ -0,0 +1,20 @@
+=========================
+ Temp Buffer Browse Mode
+=========================
+Allow keys ``SPC``, ``DEL`` and ``RET`` immediately following a temp
+buffer popup to scroll up, scroll down and close the temp buffer
+window, respectively.
+
+This package is part of `GNU ELPA <http://elpa.gnu.org>`_
+(``M-x list-packages``).
+
+Patches, feature requests and bug reports are welcome. Thanks.
+
+To use
+~~~~~~
+
+::
+
+   (require 'temp-buffer-browse)
+   (temp-buffer-browse-mode 1)
diff --git a/packages/temp-buffer-browse/temp-buffer-browse.el b/packages/temp-buffer-browse/temp-buffer-browse.el
new file mode 100644 (file)
index 0000000..da2fb73
--- /dev/null
@@ -0,0 +1,160 @@
+;;; temp-buffer-browse.el --- temp buffer browse mode  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2013  Free Software Foundation, Inc.
+
+;; Author: Leo Liu <sdl.web@gmail.com>
+;; Version: 1.1
+;; Keywords: convenience
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Allow keys `SPC', `DEL' and `RET' following a temp buffer popup to
+;; scroll up, scroll down and close the temp buffer window,
+;; respectively.
+
+;;; Code:
+
+(eval-and-compile
+  (or (fboundp 'set-temporary-overlay-map) ; new in 24.3
+      (defun set-temporary-overlay-map (map &optional keep-pred)
+        "Set MAP as a temporary keymap taking precedence over most other keymaps.
+Note that this does NOT take precedence over the \"overriding\" maps
+`overriding-terminal-local-map' and `overriding-local-map' (or the
+`keymap' text property).  Unlike those maps, if no match for a key is
+found in MAP, the normal key lookup sequence then continues.
+
+Normally, MAP is used only once.  If the optional argument
+KEEP-PRED is t, MAP stays active if a key from MAP is used.
+KEEP-PRED can also be a function of no arguments: if it returns
+non-nil then MAP stays active."
+        (let* ((clearfunsym (make-symbol "clear-temporary-overlay-map"))
+               (overlaysym (make-symbol "t"))
+               (alist (list (cons overlaysym map)))
+               (clearfun
+                `(lambda ()
+                   (unless ,(cond ((null keep-pred) nil)
+                                  ((eq t keep-pred)
+                                   `(eq this-command
+                                        (lookup-key ',map
+                                                    (this-command-keys-vector))))
+                                  (t `(funcall ',keep-pred)))
+                     (set ',overlaysym nil) ;Just in case.
+                     (remove-hook 'pre-command-hook ',clearfunsym)
+                     (setq emulation-mode-map-alists
+                           (delq ',alist emulation-mode-map-alists))))))
+          (set overlaysym overlaysym)
+          (fset clearfunsym clearfun)
+          (add-hook 'pre-command-hook clearfunsym)
+          (push alist emulation-mode-map-alists)))))
+
+(defcustom temp-buffer-browse-fringe-bitmap 'centered-vertical-bar
+  "Fringe bitmap to use in the temp buffer window."
+  :type '(restricted-sexp :match-alternatives
+                          ((lambda (s)
+                             (and (symbolp s) (fringe-bitmap-p s)))))
+  :group 'help)
+
+(defvar temp-buffer-browse--window nil)
+
+;; See http://debbugs.gnu.org/15497
+(unless (fringe-bitmap-p 'centered-vertical-bar)
+  (define-fringe-bitmap 'centered-vertical-bar [24] nil nil '(top t)))
+
+(defvar temp-buffer-browse-map
+  (let ((map (make-sparse-keymap))
+        (quit (lambda ()
+                (interactive)
+                (when (window-live-p temp-buffer-browse--window)
+                  (quit-window nil temp-buffer-browse--window))))
+        (up (lambda ()
+              (interactive)
+              (when (window-live-p temp-buffer-browse--window)
+                (with-selected-window temp-buffer-browse--window
+                  (condition-case nil
+                      (scroll-up)
+                    (end-of-buffer (quit-window)))))))
+        (down (lambda ()
+                (interactive)
+                (when (window-live-p temp-buffer-browse--window)
+                  (with-selected-window temp-buffer-browse--window
+                    (scroll-up '-))))))
+    (define-key map "\C-m" quit)
+    (define-key map [return] quit)
+    (define-key map " " up)
+    (define-key map (kbd "DEL") down)
+    (define-key map [delete] down)
+    (define-key map [backspace] down)
+    map))
+
+;;;###autoload
+(defun temp-buffer-browse-activate ()
+  "Activate temporary key bindings for current window.
+Specifically set up keys `SPC', `DEL' and `RET' to scroll up,
+scroll down and close the temp buffer window, respectively."
+  (unless (derived-mode-p 'completion-list-mode)
+    (setq temp-buffer-browse--window (selected-window))
+    ;; When re-using existing window don't call
+    ;; `fit-window-to-buffer'. See also (info "(elisp)Window
+    ;; Parameters").
+    (when (and (window-full-width-p)
+               (memq (cadr (window-parameter nil 'quit-restore))
+                     '(window frame)))
+      (fit-window-to-buffer nil (floor (frame-height) 2))
+      ;; In case buffer contents are inserted asynchronously such as
+      ;; in `slime-inspector-mode'.
+      (add-hook 'after-change-functions
+                (let ((time (float-time)))
+                  (lambda (&rest _)
+                    (when (> (float-time) (+ 0.05 time))
+                      (fit-window-to-buffer nil (floor (frame-height) 2))
+                      (setq time (float-time)))))
+                nil 'local))
+    (let ((o (make-overlay (point-min) (point-max))))
+      (overlay-put o 'evaporate t)
+      (overlay-put o 'window t)
+      (overlay-put o 'line-prefix
+                   (propertize
+                    "|" 'display
+                    (unless (zerop (or (frame-parameter nil 'left-fringe) 0))
+                      `(left-fringe ,temp-buffer-browse-fringe-bitmap warning))
+                    'face 'warning))
+      ;; NOTE: breaks `adaptive-wrap-prefix-mode' because overlay's
+      ;; wrap-prefix overrides text property's. Overlay's cannot have
+      ;; negative priority.
+      (unless (bound-and-true-p adaptive-wrap-prefix-mode)
+        (overlay-put o 'wrap-prefix (overlay-get o 'line-prefix)))
+      (set-temporary-overlay-map
+       temp-buffer-browse-map
+       (lambda ()
+         ;; When any error happens the keymap is active forever.
+         (with-demoted-errors
+           (or (and (window-live-p temp-buffer-browse--window)
+                    (not (member (this-command-keys) '("\C-m" [return])))
+                    (eq this-command (lookup-key temp-buffer-browse-map
+                                                 (this-command-keys))))
+               (ignore (overlay-put o 'line-prefix nil)
+                       (overlay-put o 'wrap-prefix nil)))))))))
+
+;;;###autoload
+(define-minor-mode temp-buffer-browse-mode nil
+  :lighter ""
+  :global t
+  (if temp-buffer-browse-mode
+      (add-hook 'temp-buffer-show-hook 'temp-buffer-browse-activate t)
+    (remove-hook 'temp-buffer-show-hook 'temp-buffer-browse-activate)))
+
+(provide 'temp-buffer-browse)
+;;; temp-buffer-browse.el ends here
diff --git a/packages/trie/trie.el b/packages/trie/trie.el
new file mode 100644 (file)
index 0000000..894aa60
--- /dev/null
@@ -0,0 +1,1902 @@
+;;; trie.el --- Trie data structure
+
+;; Copyright (C) 2008-2010, 2012  Free Software Foundation, Inc
+
+;; Author: Toby Cubitt <toby-predictive@dr-qubit.org>
+;; Version: 0.2.6
+;; Keywords: extensions, matching, data structures
+;;           trie, ternary search tree, tree, completion, regexp
+;; Package-Requires: ((tNFA "0.1.1") (heap "0.3"))
+;; URL: http://www.dr-qubit.org/emacs.php
+;; Repository: http://www.dr-qubit.org/git/predictive.git
+
+;; This file is part of Emacs.
+;;
+;; GNU Emacs is free software: you can redistribute it and/or modify it under
+;; the terms of the GNU General Public License as published by the Free
+;; Software Foundation, either version 3 of the License, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful, but WITHOUT
+;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+;; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+;; more details.
+;;
+;; You should have received a copy of the GNU General Public License along
+;; with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+;; Quick Overview
+;; --------------
+;; A trie is a data structure used to store keys that are ordered sequences of
+;; elements (vectors, lists or strings in Elisp; strings are by far the most
+;; common), in such a way that both storage and retrieval are space- and
+;; time-efficient. But, more importantly, a variety of more advanced queries
+;; can also be performed efficiently: for example, returning all strings with
+;; a given prefix, searching for keys matching a given wildcard pattern or
+;; regular expression, or searching for all keys that match any of the above
+;; to within a given Lewenstein distance (though this last is not yet
+;; implemented in this package - code contributions welcome!).
+;;
+;; You create a trie using `make-trie', create an association using
+;; `trie-insert', retrieve an association using `trie-lookup', and map over a
+;; trie using `trie-map', `trie-mapc', `trie-mapcar', or `trie-mapf'. You can
+;; find completions of a prefix sequence using `trie-complete', or search for
+;; keys matching a regular expression using `trie-regexp-search'. Using
+;; `trie-stack', you can create an object that allows the contents of the trie
+;; to be used like a stack, useful for building other algorithms on top of
+;; tries; `trie-stack-pop' pops elements off the stack one-by-one, in
+;; "lexical" order, whilst `trie-stack-push' pushes things onto the
+;; stack. Similarly, `trie-complete-stack', and `trie-regexp-stack' create
+;; "lexically-ordered" stacks of query results.
+;;
+;; Note that there are two uses for a trie: as a lookup table, in which case
+;; only the presence or absence of a key in the trie is significant, or as an
+;; associative array, in which case each key carries some associated
+;; data. Libraries for other data structure often only implement lookup
+;; tables, leaving it up to you to implement an associative array on top of
+;; this (by storing key+data pairs in the data structure's keys, then defining
+;; a comparison function that only compares the key part). For a trie,
+;; however, the underlying data structures naturally support associative
+;; arrays at no extra cost, so this package does the opposite: it implements
+;; associative arrays, and leaves it up to you to use them as lookup tables if
+;; you so desire.
+;;
+;;
+;; Different Types of Trie
+;; -----------------------
+;; There are numerous ways to implement trie data structures internally, each
+;; with its own time- and space-efficiency trade-offs. By viewing a trie as a
+;; tree whose nodes are themselves lookup tables for key elements, this
+;; package is able to support all types of trie in a uniform manner. This
+;; relies on there existing (or you writing!) an Elisp implementation of the
+;; corresponding type of lookup table. The best type of trie to use will
+;; depend on what trade-offs are appropriate for your particular
+;; application. The following gives an overview of the advantages and
+;; disadvantages of various types of trie. (Not all of the underlying lookup
+;; tables have been implemented in Elisp yet, so using some of the trie types
+;; described below would require writing the missing Elisp package!)
+;;
+;;
+;; One of the most effective all-round implementations of a trie is a ternary
+;; search tree, which can be viewed as a tree of binary trees. If basic binary
+;; search trees are used for the nodes of the trie, we get a standard ternary
+;; search tree. If self-balancing binary trees are used (e.g. AVL or red-black
+;; trees), we get a self-balancing ternary search tree. If splay trees are
+;; used, we get yet another self-organising variant of a ternary search
+;; tree. All ternary search trees have, in common, good space-efficiency. The
+;; time-efficiency of the various trie operations is also good, assuming the
+;; underlying binary trees are balanced. Under that assumption, all variants
+;; of ternary search trees described below have the same asymptotic
+;; time-complexity for all trie operations.
+;;
+;; Self-balancing trees ensure the underlying binary trees are always close to
+;; perfectly balanced, with the usual trade-offs between the different the
+;; types of self-balancing binary tree: AVL trees are slightly more efficient
+;; for lookup operations than red-black trees, at a cost of slightly less
+;; efficienct insertion operations, and less efficient deletion
+;; operations. Splay trees give good average-case complexity and are simpler
+;; to implement than AVL or red-black trees (which can mean they're faster in
+;; practice!), at the expense of poor worst-case complexity.
+;;
+;; If your tries are going to be static (i.e. created once and rarely
+;; modified), then using perfectly balanced binary search trees might be
+;; appropriate. Perfectly balancing the binary trees is very inefficient, but
+;; it only has to be when the trie is first created or modified. Lookup
+;; operations will then be as efficient as possible for ternary search trees,
+;; and the implementation will also be simpler (so probably faster) than a
+;; self-balancing tree, without the space and time overhead required to keep
+;; track of rebalancing.
+;;
+;; On the other hand, adding data to a binary search tree in a random order
+;; usually results in a reasonably balanced tree. If this is the likely
+;; scenario, using a basic binary tree without bothering to balance it at all
+;; might be quite efficient, and, being even simpler to implement, could be
+;; quite fast overall.
+;;
+;;
+;; A digital trie is a different implementation of a trie, which can be viewed
+;; as a tree of arrays, and has different space- and time-complexities than a
+;; ternary search tree. Roughly speaking, a digital trie has worse
+;; space-complexity, but better time-complexity. Using hash tables instead of
+;; arrays for the nodes gives something similar to a digital trie, potentially
+;; with better space-complexity and the same amortised time-complexity, but at
+;; the expense of occasional significant inefficiency when inserting and
+;; deleting (whenever a hash table has to be resized). Indeed, an array can be
+;; viewed as a perfect hash table, but as such it requires the number of
+;; possible values to be known in advance.
+;;
+;; Finally, if you really need optimal efficiency from your trie, you could
+;; even write a custom type of underlying lookup table, optimised for your
+;; specific needs.
+;;
+;; This package uses the AVL tree package avl-tree.el, the tagged NFA package
+;; tNFA.el, and the heap package heap.el.
+
+
+;;; Code:
+
+(eval-when-compile (require 'cl))
+(require 'avl-tree)
+(require 'heap)
+(require 'tNFA)
+
+
+
+;;; ================================================================
+;;;                   Pre-defined trie types
+
+(defconst trie--types '(avl))
+
+
+;; --- avl-tree ---
+(put 'avl :trie-createfun
+     (lambda (cmpfun seq) (avl-tree-create cmpfun)))
+(put 'avl :trie-insertfun 'avl-tree-enter)
+(put 'avl :trie-deletefun 'avl-tree-delete)
+(put 'avl :trie-lookupfun 'avl-tree-member)
+(put 'avl :trie-mapfun 'avl-tree-mapc)
+(put 'avl :trie-emptyfun 'avl-tree-empty)
+(put 'avl :trie-stack-createfun 'avl-tree-stack)
+(put 'avl :trie-stack-popfun 'avl-tree-stack-pop)
+(put 'avl :trie-stack-emptyfun 'avl-tree-stack-empty-p)
+(put 'avl :trie-transform-for-print 'trie--avl-transform-for-print)
+(put 'avl :trie-transform-from-read 'trie--avl-transform-from-read)
+
+
+
+;;; ================================================================
+;;;           Internal utility functions and macros
+
+;;; ----------------------------------------------------------------
+;;;           Functions and macros for handling a trie.
+
+;; symbol used to denote a trie leaf node
+(defconst trie--terminator '--trie--terminator)
+
+(defstruct
+  (trie-
+   :named
+   (:constructor nil)
+   (:constructor trie--create
+                (comparison-function &optional (type 'avl)
+                 &aux
+                 (dummy
+                  (or (memq type trie--types)
+                      (error "trie--create: unknown trie TYPE, %s" type)))
+                 (createfun (get type :trie-createfun))
+                 (insertfun (get type :trie-insertfun))
+                 (deletefun (get type :trie-deletefun))
+                 (lookupfun (get type :trie-lookupfun))
+                 (mapfun (get type :trie-mapfun))
+                 (emptyfun (get type :trie-emptyfun))
+                 (stack-createfun (get type :trie-stack-createfun))
+                 (stack-popfun (get type :trie-stack-popfun))
+                 (stack-emptyfun (get type :trie-stack-emptyfun))
+                 (transform-for-print (get type :trie-transform-for-print))
+                 (transform-from-read (get type :trie-transform-from-read))
+                 (cmpfun (trie--wrap-cmpfun comparison-function))
+                 (root (trie--node-create-root createfun cmpfun))
+                 ))
+   (:constructor trie--create-custom
+                (comparison-function
+                 &key
+                 (createfun 'avl-tree-create-bare)
+                 (insertfun 'avl-tree-enter)
+                 (deletefun 'avl-tree-delete)
+                 (lookupfun 'avl-tree-member)
+                 (mapfun 'avl-tree-mapc)
+                 (emptyfun 'avl-tree-empty)
+                 (stack-createfun 'avl-tree-stack)
+                 (stack-popfun 'avl-tree-stack-pop)
+                 (stack-emptyfun 'avl-tree-stack-empty-p)
+                 (transform-for-print 'trie--avl-transform-for-print)
+                 (transform-from-read 'trie--avl-transform-from-read)
+                 &aux
+                 (cmpfun (trie--wrap-cmpfun comparison-function))
+                 (root (trie--node-create-root createfun cmpfun))
+                 ))
+   (:copier nil))
+  root comparison-function cmpfun
+  createfun insertfun deletefun lookupfun mapfun emptyfun
+  stack-createfun stack-popfun stack-emptyfun
+  transform-for-print transform-from-read print-form)
+
+
+(defun trie--wrap-cmpfun (cmpfun)
+  ;; wrap CMPFUN for use in a subtree
+  `(lambda (a b)
+     (setq a (trie--node-split a)
+          b (trie--node-split b))
+     (cond ((eq a trie--terminator)
+           (if (eq b trie--terminator) nil t))
+          ((eq b trie--terminator) nil)
+          (t (,cmpfun a b)))))
+
+
+(defun trie--construct-equality-function (comparison-function)
+  ;; create equality function from trie comparison function
+  `(lambda (a b)
+     (and (not (,comparison-function a b))
+         (not (,comparison-function b a)))))
+
+
+
+;;; ----------------------------------------------------------------
+;;;          Functions and macros for handling a trie node.
+
+(defstruct
+  (trie--node
+   (:type vector)
+   (:constructor nil)
+   (:constructor trie--node-create
+                (split seq trie
+                 &aux (subtree (funcall (trie--createfun trie)
+                                        (trie--cmpfun trie) seq))))
+   (:constructor trie--node-create-data
+                (data &aux (split trie--terminator) (subtree data)))
+   (:constructor trie--node-create-dummy
+                (split &aux (subtree nil)))
+   (:constructor trie--node-create-root
+                (createfun cmpfun
+                 &aux
+                 (split nil)
+                 (subtree (funcall createfun cmpfun []))))
+   (:copier nil))
+   split subtree)
+
+;; data is stored in the subtree cell of a terminal node
+(defalias 'trie--node-data 'trie--node-subtree)
+
+(defsetf trie--node-data (node) (data)
+  `(setf (trie--node-subtree ,node) ,data))
+
+(defmacro trie--node-data-p (node)
+  ;; Return t if NODE is a data node, nil otherwise.
+  `(eq (trie--node-split ,node) trie--terminator))
+
+(defmacro trie--node-p (node)
+  ;; Return t if NODE is a TRIE trie--node, nil otherwise.  Have to
+  ;; define this ourselves, because we created a defstruct without any
+  ;; identifying tags (i.e. (:type vector)) for efficiency, but this
+  ;; means we can only perform a rudimentary and very unreliable test.
+  `(and (vectorp ,node) (= (length ,node) 2)))
+
+
+(defun trie--node-find (node seq lookupfun)
+  ;; Returns the node below NODE corresponding to SEQ, or nil if none
+  ;; found.
+  (let ((len (length seq))
+       (i -1))
+    ;; descend trie until we find SEQ or run out of trie
+    (while (and node (< (incf i) len))
+      (setq node
+           (funcall lookupfun
+                    (trie--node-subtree node)
+                    (trie--node-create-dummy (elt seq i))
+                    nil)))
+    node))
+
+
+(defmacro trie--find-data-node (node lookupfun)
+  ;; Return data node from NODE's subtree, or nil if NODE has no data
+  ;; node in its subtree.
+  `(funcall ,lookupfun
+           (trie--node-subtree ,node)
+           (trie--node-create-dummy trie--terminator)
+           nil))
+
+
+(defmacro trie--find-data (node lookupfun)
+  ;; Return data associated with sequence corresponding to NODE, or nil
+  ;; if sequence has no associated data.
+  `(let ((node (trie--find-data-node ,node ,lookupfun)))
+     (when node (trie--node-data node))))
+
+
+
+;;; ----------------------------------------------------------------
+;;;              print/read transformation functions
+
+(defun trie-transform-for-print (trie)
+  "Transform TRIE to print form."
+  (when (trie--transform-for-print trie)
+    (if (trie--print-form trie)
+       (warn "Trie has already been transformed to print-form")
+      (funcall (trie--transform-for-print trie) trie)
+      (setf (trie--print-form trie) t))))
+
+
+(defun trie-transform-from-read (trie)
+  "Transform TRIE from print form."
+  (when (trie--transform-from-read trie)
+    (if (not (trie--print-form trie))
+       (warn "Trie is not in print-form")
+      (funcall (trie--transform-from-read trie) trie)
+      (setf (trie--print-form trie) nil))))
+
+
+(defmacro trie-transform-from-read-warn (trie)
+  "Transform TRIE from print form, with warning."
+  `(when (trie--print-form ,trie)
+     (warn (concat "Attempt to operate on trie in print-form;\
+ converting to normal form"))
+     (trie-transform-from-read ,trie)))
+
+
+(defun trie--avl-transform-for-print (trie)
+  ;; transform avl-tree based TRIE to print form.
+  (trie-mapc-internal
+   (lambda (avl seq) (setf (avl-tree--cmpfun avl) nil))
+   trie))
+
+
+(defun trie--avl-transform-from-read (trie)
+  ;; transform avl-tree based TRIE from print form."
+  (let ((--trie-avl-transform--cmpfun (trie--cmpfun trie)))
+    (trie-mapc-internal
+     (lambda (avl seq)
+       (setf (avl-tree--cmpfun avl) --trie-avl-transform--cmpfun))
+     trie)))
+
+
+
+;;; ----------------------------------------------------------------
+;;;                Replacements for CL functions
+
+;; copied from cl-extra.el
+(defun trie--subseq (seq start &optional end)
+  "Return the subsequence of SEQ from START to END.
+If END is omitted, it defaults to the length of the sequence.
+If START or END is negative, it counts from the end."
+  (if (stringp seq) (substring seq start end)
+    (let (len)
+      (and end (< end 0) (setq end (+ end (setq len (length seq)))))
+      (when (< start 0)
+       (setq start (+ start (or len (setq len (length seq))))))
+      (cond ((listp seq)
+            (if (> start 0) (setq seq (nthcdr start seq)))
+            (if end
+                (let ((res nil))
+                  (while (>= (setq end (1- end)) start)
+                    (push (pop seq) res))
+                  (nreverse res))
+              (copy-sequence seq)))
+           (t
+            (or end (setq end (or len (length seq))))
+            (let ((res (make-vector (max (- end start) 0) nil))
+                  (i 0))
+              (while (< start end)
+                (aset res i (aref seq start))
+                (setq i (1+ i) start (1+ start)))
+              res))))))
+
+
+(defun trie--position (item list)
+  "Find the first occurrence of ITEM in LIST.
+Return the index of the matching item, or nil of not found.
+Comparison is done with 'equal."
+  (let ((i 0))
+    (catch 'found
+      (while (progn
+              (when (equal item (car list)) (throw 'found i))
+              (setq i (1+ i))
+              (setq list (cdr list))))
+      nil)))
+
+
+(defsubst trie--seq-append (seq el)
+  "Append EL to the end of sequence SEQ."
+  (cond
+   ((stringp seq) (concat seq (string el)))
+   ((vectorp seq) (vconcat seq (vector el)))
+   ((listp seq)          (append seq (list el)))))
+
+
+(defsubst trie--seq-concat (seq &rest sequences)
+  "Concatenate SEQ and SEQUENCES, and make the result the same
+type of sequence as SEQ."
+  (cond
+   ((stringp seq) (apply 'concat  seq sequences))
+   ((vectorp seq) (apply 'vconcat seq sequences))
+   ((listp seq)          (apply 'append  seq sequences))))
+
+
+
+
+;;; ================================================================
+;;;                     Basic trie operations
+
+;;;###autoload
+(defalias 'make-trie 'trie--create
+  "Return a new trie that uses comparison function COMPARISON-FUNCTION.
+
+A trie stores sequences (strings, vectors or lists) along with
+associated data. COMPARISON-FUNCTEION should accept two
+arguments, each being an element of such a sequence, and return t
+if the first is strictly smaller than the second.
+
+The optional argument TYPE specifies the type of trie to
+create. However, the only one that is currently implemented is
+the default, so this argument is useless for now.
+
+(See also `make-trie-custom'.)")
+
+
+;;;###autoload
+(defalias 'trie-create 'make-trie)
+
+
+;;;###autoload
+(defalias 'make-trie-custom 'trie--create-custom
+  "Return a new trie that uses comparison function COMPARISON-FUNCTION.
+
+A trie stores sequences (strings, vectors or lists) along with
+associated data. COMPARISON-FUNCTION should accept two arguments,
+each being an element of such a sequence, and return t if the
+first is strictly smaller than the second.
+
+The remaining keyword arguments: :CREATEFUN, :INSERTFUN, :DELETEFUN,
+:LOOKUPFUN, :MAPFUN, :EMPTYFUN, :STACK-CREATEFUN, :STACK-POPFUN,
+:STACK-EMPTYFUN, :TRANSFORM-FOR-PRINT and :TRANSFORM-FROM-READ
+determine the type of trie that is created.
+
+CREATEFUN is called as follows:
+
+  (CREATEFUN COMPARISON-FUNCTION SEQ)
+
+and should return a data structure (\"ARRAY\") that can be used
+as an associative array, where two elements A and B are equal if
+the following is non-nil:
+
+  (and (COMPARISON-FUNCTION b a)
+       (COMPARISON-FUNCTION b a))
+
+The SEQ argument is a vector containing the sequence that will
+correspond to the newly created array in the trie. For most types
+of trie, this value is ignored. It is passed to CREATEFUN only in
+order to allow the creation of \"hybrid\" trie structures, in
+which different types of associative array are used in different
+parts of the trie. For example, the type of associative array
+could be chosen based on the depth in the trie, given by \(length
+SEQ\). (Note that all the other functions described below must be
+able to correctly handle *any* of the types of associate array
+that might be created by CREATEFUN.)
+
+INSERTFUN, DELETEFUN, LOOKUPFUN, MAPFUN and EMPTYFUN should
+insert, delete, lookup, map over, and check-if-there-exist-any
+elements in an associative array. They are called as follows:
+
+  (INSERTFUN array element &optional updatefun)
+  (DELETEFUN array element &optional predicate nilflag)
+  (LOOKUPFUN array element &optional nilflag)
+  (MAPFUN function array &optional reverse)
+  (EMPTYFUN array)
+
+INSERTFUN should insert ELEMENT into ARRAY and return the new
+element, which will be ELEMENT itself unless UPDATEFUN is
+specified. In that case, if and only if an element matching
+ELEMENT already exists in the associative array, INSERTFUN should
+instead pass ELEMENT and the matching element as arguments to
+UPDATEFUN, replace the matching element with the return value,
+and return that return value.
+
+DELETEFUN should delete the element in the associative array that
+matches ELEMENT, and return the deleted element. However, if
+PREDICATE is specified and a matching element exists in ARRAY,
+DELETEFUN should first pass the matching element as an argument
+to PREDICATE before deleting, and should only delete the element
+if PREDICATE returns non-nil. DELETEFUN should return NILFLAG if
+no element was deleted (either becuase no matching element was
+found, or because TESTFUN returned nil).
+
+LOOKUPFUN should return the element from the associative array
+that matches ELEMENT, or NILFLAG if no matching element exists.
+
+MAPFUN should map FUNCTION over all elements in the order defined by
+COMPARISON-FUNCTION, or in reverse order if REVERSE is non-nil.
+
+
+STACK-CREATEFUN, STACK-POPFUN and STACK-EMPTYFUN should allow the
+associative array to be used as a stack. STACK-CREATEFUN is
+called as follows:
+
+  (STACK-CREATEFUN array)
+
+and should return a data structure (\"STACK\") that behaves like
+a sorted stack of all elements in the associative array. I.e.
+successive calls to
+
+  (STACK-POPFUN stack)
+
+should return elements from the associative array in the order
+defined by COMPARISON-FUNCTION, and
+
+  (STACK-EMPTYFUN stack)
+
+should return non-nil if the stack is empty, nil otherwise.
+
+The stack functions are optional, in that all trie operations
+other than the stack-related ones will work correctly. However,
+any code that makes use of trie-stacks will complain if supplied
+with this type of trie.
+
+
+The :TRANSFORM-FOR-PRINT and :TRANSFORM-FROM-READ arguments are
+optional. If supplied, they can be used to transform the trie
+into a format suitable for passing to Elisp's `print'
+functions (typically used to persistently store the trie by
+writing it to file), and transform from that format back to the
+original usable form.
+
+
+Warning: to avoid nasty dynamic scoping bugs, the supplied
+functions must *never* bind any variables with names commencing
+\"--\".")
+
+
+;;;###autoload
+(defalias 'trie-create-custom 'make-trie-custom)
+
+
+
+(defalias 'trie-comparison-function 'trie--comparison-function
+  "Return the comparison function for TRIE.")
+
+
+(defalias 'trie-p 'trie--p
+  "Return t if argument is a trie, nil otherwise.")
+
+
+(defun trie-empty (trie)
+  "Return t if the TRIE is empty, nil otherwise."
+  (trie-transform-from-read-warn trie)
+  (funcall (trie--emptyfun trie)
+          (trie--node-subtree (trie--root trie))))
+
+
+(defun trie-construct-sortfun (cmpfun &optional reverse)
+  "Construct function to compare key sequences, based on a CMPFUN
+that compares individual elements of the sequence. Order is
+reversed if REVERSE is non-nil."
+  (if reverse
+      `(lambda (a b)
+        (let (cmp)
+          (catch 'compared
+            (dotimes (i (min (length a) (length b)))
+              (cond ((,cmpfun (elt b i) (elt a i))
+                     (throw 'compared t))
+                    ((,cmpfun (elt a i) (elt b i))
+                     (throw 'compared nil))))
+            (< (length a) (length b)))))
+    `(lambda (a b)
+       (let (cmp)
+        (catch 'compared
+          (dotimes (i (min (length a) (length b)))
+            (cond ((,cmpfun (elt a i) (elt b i))
+                   (throw 'compared t))
+                  ((,cmpfun (elt b i) (elt a i))
+                   (throw 'compared nil))))
+          (< (length a) (length b)))))))
+
+
+
+;; ----------------------------------------------------------------
+;;                        Inserting data
+
+(defun trie-insert (trie key &optional data updatefun)
+  "Associate DATA with KEY in TRIE.
+
+If KEY already exists in TRIE, then DATA replaces the existing
+association, unless UPDATEFUN is supplied. Note that if DATA is
+*not* supplied, this means that the existing association of KEY
+will be replaced by nil.
+
+If UPDATEFUN is supplied and KEY already exists in TRIE,
+UPDATEFUN is called with two arguments: DATA and the existing
+association of KEY. Its return value becomes the new association
+for KEY.
+
+Returns the new association of KEY.
+
+Note: to avoid nasty dynamic scoping bugs, UPDATEFUN must *not*
+bind any variables with names commencing \"--\"."
+
+  ;; convert trie from print-form if necessary
+  (trie-transform-from-read-warn trie)
+
+  ;; absurd variable names are an attempt to avoid dynamic scoping bugs
+  (let ((--trie-insert--updatefun updatefun)
+       --trie-insert--old-node-flag
+       (node (trie--root trie))
+       (len (length key))
+       (i -1))
+    ;; Descend trie, adding nodes for non-existent elements of KEY. The
+    ;; update function passed to `trie--insertfun' ensures that existing
+    ;; nodes are left intact.
+    (while (< (incf i) len)
+      (setq --trie-insert--old-node-flag nil)
+      (setq node (funcall (trie--insertfun trie)
+                         (trie--node-subtree node)
+                         (trie--node-create (elt key i) key trie)
+                         (lambda (a b)
+                           (setq --trie-insert--old-node-flag t) b))))
+    ;; Create or update data node.
+    (setq node (funcall (trie--insertfun trie)
+                       (trie--node-subtree node)
+                       (trie--node-create-data data)
+                       ;; if using existing data node, wrap UPDATEFUN
+                       ;; if any was supplied
+                       (when (and --trie-insert--old-node-flag
+                                  --trie-insert--updatefun)
+                         (lambda (new old)
+                           (setf (trie--node-data old)
+                                 (funcall --trie-insert--updatefun
+                                          (trie--node-data new)
+                                          (trie--node-data old)))
+                           old))))
+    (trie--node-data node)))  ; return new data
+
+
+
+;; ----------------------------------------------------------------
+;;                        Deleting data
+
+(defun trie-delete (trie key &optional test)
+  "Delete KEY and its associated data from TRIE.
+
+If KEY was deleted, a cons cell containing KEY and its
+association is returned. Returns nil if KEY does not exist in
+TRIE.
+
+If TEST is supplied, it should be a function that accepts two
+arguments: the key being deleted, and its associated data. The
+key will then only be deleted if TEST returns non-nil.
+
+Note: to avoid nasty dynamic scoping bugs, TEST must *not* bind
+any variables with names commencing \"--\"."
+  ;; convert trie from print-form if necessary
+  (trie-transform-from-read-warn trie)
+  ;; set up deletion (real work is done by `trie--do-delete'
+  (let (--trie-deleted--node
+       (--trie-delete--key key))
+    (declare (special --trie-deleted--node)
+            (special --trie-delete--key))
+    (trie--do-delete (trie--root trie) key test
+                    (trie--deletefun trie)
+                    (trie--emptyfun trie)
+                    (trie--cmpfun trie))
+    (when --trie-deleted--node
+      (cons key (trie--node-data --trie-deleted--node)))))
+
+
+(defun trie--do-delete (node --trie--do-delete--seq
+                            --trie--do-delete--test
+                            --trie--do-delete--deletefun
+                            --trie--do-delete--emptyfun
+                            --trie--do-delete--cmpfun)
+  ;; Delete --TRIE--DO-DELETE--SEQ starting from trie node NODE, and
+  ;; return non-nil if we deleted a node. If --TRIE--DO-DELETE--TEST is
+  ;; supplied, it is called with two arguments, the key being deleted
+  ;; and the associated data, and the deletion is only carried out if it
+  ;; returns non-nil.
+
+  ;; The absurd argument names are to lessen the likelihood of dynamical
+  ;; scoping bugs caused by a supplied function binding a variable with
+  ;; the same name as one of the arguments, which would cause a nasty
+  ;; bug when the lambda's (below) are called.
+  (declare (special --trie-deleted--node)
+          (special --trie-delete--key))
+  ;; if --TRIE--DO-DELETE--SEQ is empty, try to delete data node and
+  ;; return non-nil if we did (return value of
+  ;; --TRIE--DO-DELETE--DELETEFUN is the deleted data, which is always
+  ;; non-nil for a trie)
+  (if (= (length --trie--do-delete--seq) 0)
+      (setq --trie-deleted--node
+           (funcall --trie--do-delete--deletefun
+                    (trie--node-subtree node)
+                    (trie--node-create-dummy trie--terminator)
+                    (when --trie--do-delete--test
+                      (lambda (n)
+                        (funcall --trie--do-delete--test
+                                 --trie-delete--key (trie--node-data n))))
+                    nil))
+    ;; otherwise, delete on down (return value of
+    ;; --TRIE--DO-DELETE--DELETEFUN is the deleted data, which is always
+    ;; non-nil for a trie)
+    (funcall --trie--do-delete--deletefun
+            (trie--node-subtree node)
+            (trie--node-create-dummy (elt --trie--do-delete--seq 0))
+            (lambda (n)
+              (and (trie--do-delete
+                    n (trie--subseq --trie--do-delete--seq 1)
+                    --trie--do-delete--test
+                    --trie--do-delete--deletefun
+                    --trie--do-delete--emptyfun
+                    --trie--do-delete--cmpfun)
+                   (funcall --trie--do-delete--emptyfun
+                            (trie--node-subtree n))))
+            nil)))
+
+
+
+;; ----------------------------------------------------------------
+;;                       Retrieving data
+
+(defun trie-lookup (trie key &optional nilflag)
+  "Return the data associated with KEY in the TRIE,
+or nil if KEY does not exist in TRIE.
+
+Optional argument NILFLAG specifies a value to return instead of
+nil if KEY does not exist in TRIE. This allows a non-existent KEY
+to be distinguished from an element with a null association. (See
+also `trie-member-p', which does this for you.)"
+  ;; convert trie from print-form if necessary
+  (trie-transform-from-read-warn trie)
+  ;; find node corresponding to key, then find data node, then return
+  ;; data
+  (let (node)
+    (or (and (setq node (trie--node-find (trie--root trie) key
+                                        (trie--lookupfun trie)))
+            (trie--find-data node (trie--lookupfun trie)))
+       nilflag)))
+
+(defalias 'trie-member 'trie-lookup)
+
+
+(defun trie-member-p (trie key)
+  "Return t if KEY exists in TRIE, nil otherwise."
+  ;; convert trie from print-form if necessary
+  (trie-transform-from-read-warn trie)
+  (let ((flag '(nil)))
+    (not (eq flag (trie-member trie key flag)))))
+
+
+
+
+;;; ================================================================
+;;;                      Mapping over tries
+
+(defun trie--mapc (--trie--mapc--function --trie--mapc--mapfun
+                  --trie--mapc--root --trie--mapc--seq
+                  &optional --trie--mapc--reverse)
+  ;; Apply TRIE--MAPC--FUNCTION to all elements in a trie beneath
+  ;; TRIE--MAPC--ROOT, which should correspond to the sequence
+  ;; TRIE--MAPC--SEQ. TRIE--MAPC--FUNCTION is passed two arguments: the
+  ;; trie node itself and the sequence it corresponds to. It is applied
+  ;; in ascending order, or descending order if TRIE--MAPC--REVERSE is
+  ;; non-nil.
+
+  ;; The absurd argument names are to lessen the likelihood of dynamical
+  ;; scoping bugs caused by a supplied function binding a variable with
+  ;; the same name as one of the arguments.
+  (funcall
+   --trie--mapc--mapfun
+   (lambda (--trie--mapc--node)
+     ;; data node: apply function
+     (if (trie--node-data-p --trie--mapc--node)
+        (funcall --trie--mapc--function
+                 --trie--mapc--node
+                 --trie--mapc--seq)
+       ;; internal node: append split value to seq and keep descending
+       (trie--mapc --trie--mapc--function
+                  --trie--mapc--mapfun
+                  --trie--mapc--node
+                  (trie--seq-append
+                   (copy-sequence --trie--mapc--seq)
+                   (trie--node-split --trie--mapc--node))
+                  --trie--mapc--reverse)))
+   ;; --TRIE--MAPC--MAPFUN target
+   (trie--node-subtree --trie--mapc--root)
+   --trie--mapc--reverse))
+
+
+(defun trie-mapc-internal (function trie &optional type)
+  "Apply FUNCTION to all internal associative arrays within TRIE.
+FUNCTION is passed two arguments: an associative array, and the
+sequence it corresponds to.
+
+Optional argument TYPE (one of the symbols vector, lisp or
+string) sets the type of sequence passed to FUNCTION. Defaults to
+vector."
+  (trie--mapc-internal function (trie--mapfun trie) (trie--root trie)
+                      (cond ((eq type 'string) "")
+                            ((eq type 'lisp) ())
+                            (t []))))
+
+
+(defun trie--mapc-internal (--trie--mapc-internal--function
+                            --trie--mapc-internal--mapfun
+                            --trie--mapc-internal--root
+                            --trie--mapc-internal--seq)
+  (funcall
+   --trie--mapc-internal--mapfun
+   (lambda (--trie--mapc-internal--node)
+     ;; data node
+     (unless (trie--node-data-p --trie--mapc-internal--node)
+       (funcall --trie--mapc-internal--function
+               (trie--node-subtree --trie--mapc-internal--node)
+               --trie--mapc-internal--seq)
+       (trie--mapc-internal
+       --trie--mapc-internal--function
+       --trie--mapc-internal--mapfun
+       --trie--mapc-internal--node
+       (trie--seq-append
+        (copy-sequence --trie--mapc-internal--seq)
+        (trie--node-split --trie--mapc-internal--node)))))
+   (trie--node-subtree --trie--mapc-internal--root)))
+
+
+(defun trie-map (function trie &optional type reverse)
+  "Modify all elements in TRIE by applying FUNCTION to them.
+
+FUNCTION should take two arguments: a sequence stored in the trie
+and its associated data. Its return value replaces the existing
+data.
+
+Optional argument TYPE (one of the symbols vector, lisp or
+string) sets the type of sequence passed to FUNCTION. Defaults to
+vector.
+
+FUNCTION is applied in ascending order, or descending order if
+REVERSE is non-nil.
+
+Note: to avoid nasty dynamic scoping bugs, FUNCTION must *not*
+bind any variables with names commencing \"--\"."
+  ;; convert from print-form if necessary
+  (trie-transform-from-read-warn trie)
+  ;; map FUNCTION over TRIE
+  (let ((--trie-map--function function)) ; avoid dynamic scoping bugs
+    (trie--mapc
+     (lambda (node seq)
+       (setf (trie--node-data node)
+            (funcall --trie-map--function seq (trie--node-data node))))
+     (trie--mapfun trie)
+     (trie--root trie)
+     (cond ((eq type 'string) "") ((eq type 'lisp) ()) (t []))
+     reverse)))
+
+
+(defun trie-mapc (function trie &optional type reverse)
+  "Apply FUNCTION to all elements in TRIE for side effect only.
+
+FUNCTION should take two arguments: a sequence stored in the trie
+and its associated data.
+
+Optional argument TYPE (one of the symbols vector, lisp or
+string) sets the type of sequence passed to FUNCTION. Defaults to
+vector.
+
+FUNCTION is applied in ascending order, or descending order if
+REVERSE is non-nil.
+
+Note: to avoid nasty dynamic scoping bugs, FUNCTION must *not*
+bind any variables with names commencing \"--\"."
+  ;; convert from print-form if necessary
+  (trie-transform-from-read-warn trie)
+  ;; map FUNCTION over TRIE
+  (let ((--trie-mapc--function function)) ; avoid dynamic scoping bugs
+    (trie--mapc
+     (lambda (node seq)
+       (funcall --trie-mapc--function seq (trie--node-data node)))
+     (trie--mapfun trie)
+     (trie--root trie)
+     (cond ((eq type 'string) "") ((eq type 'lisp) ()) (t []))
+     reverse)))
+
+
+(defun trie-mapf (function combinator trie &optional type reverse)
+  "Apply FUNCTION to all elements in TRIE, and combine the results
+using COMBINATOR.
+
+FUNCTION should take two arguments: a sequence stored in the
+trie, and its associated data.
+
+Optional argument TYPE (one of the symbols vector, lisp or
+string; defaults to vector) sets the type of sequence passed to
+FUNCTION. If TYPE is 'string, it must be possible to apply the
+function `string' to the individual elements of key sequences
+stored in TRIE.
+
+The FUNCTION is applied and the results combined in ascending
+order, or descending order if REVERSE is non-nil.
+
+Note: to avoid nasty dynamic scoping bugs, FUNCTION and
+COMBINATOR must *not* bind any variables with names
+commencing \"--\"."
+  ;; convert from print-form if necessary
+  (trie-transform-from-read-warn trie)
+  ;; map FUNCTION over TRIE, combining results with COMBINATOR
+  (let ((--trie-mapf--function function) ; avoid dynamic scoping bugs
+       --trie-mapf--accumulate)
+    (trie--mapc
+     (lambda (node seq)
+       (setq --trie-mapf--accumulate
+            (funcall combinator
+                     (funcall --trie-mapf--function
+                              seq (trie--node-data node))
+                     --trie-mapf--accumulate)))
+     (trie--mapfun trie)
+     (trie--root trie)
+     (cond ((eq type 'string) "") ((eq type 'lisp) ()) (t []))
+     reverse)
+    --trie-mapf--accumulate))
+
+
+(defun trie-mapcar (function trie &optional type reverse)
+  "Apply FUNCTION to all elements in TRIE,
+and make a list of the results.
+
+FUNCTION should take two arguments: a sequence stored in the trie
+and its associated data.
+
+Optional argument TYPE (one of the symbols vector, lisp or
+string) sets the type of sequence passed to FUNCTION. Defaults to
+vector.
+
+The FUNCTION is applied and the list constructed in ascending
+order, or descending order if REVERSE is non-nil.
+
+Note that if you don't care about the order in which FUNCTION is
+applied, just that the resulting list is in the correct order,
+then
+
+  (trie-mapf function 'cons trie type (not reverse))
+
+is more efficient.
+
+Note: to avoid nasty dynamic scoping bugs, FUNCTION must *not*
+bind any variables with names commencing \"--\"."
+  ;; convert from print-form if necessary
+  (trie-transform-from-read-warn trie)
+  ;; map FUNCTION over TRIE and accumulate in a list
+  (nreverse (trie-mapf function 'cons trie type reverse)))
+
+
+
+
+;;; ================================================================
+;;;                    Using tries as stacks
+
+(defstruct (trie--stack
+           (:constructor nil)
+           (:constructor
+            trie--stack-create
+            (trie
+             &optional
+             (type 'vector)
+             reverse
+             &aux
+             (comparison-function (trie--comparison-function trie))
+             (lookupfun (trie--lookupfun trie))
+             (stack-createfun (trie--stack-createfun trie))
+             (stack-popfun (trie--stack-popfun trie))
+             (stack-emptyfun (trie--stack-emptyfun trie))
+             (repopulatefun 'trie--stack-repopulate)
+             (store
+              (if (trie-empty trie)
+                  nil
+                (trie--stack-repopulate
+                 (list (cons
+                        (cond ((eq type 'list) ())
+                              ((eq type 'string) "")
+                              (t []))
+                        (funcall
+                         stack-createfun
+                         (trie--node-subtree (trie--root trie))
+                         reverse)))
+                 reverse
+                 comparison-function lookupfun
+                 stack-createfun stack-popfun stack-emptyfun)))
+             (pushed '())
+             ))
+           (:constructor
+            trie--completion-stack-create
+            (trie prefix
+             &optional
+             reverse
+             &aux
+             (comparison-function (trie--comparison-function trie))
+             (lookupfun (trie--lookupfun trie))
+             (stack-createfun (trie--stack-createfun trie))
+             (stack-popfun (trie--stack-popfun trie))
+             (stack-emptyfun (trie--stack-emptyfun trie))
+             (repopulatefun 'trie--stack-repopulate)
+             (store (trie--completion-stack-construct-store
+                     trie prefix reverse))
+             (pushed '())
+             ))
+           (:constructor
+            trie--regexp-stack-create
+            (trie regexp
+             &optional
+             reverse
+             &aux
+             (comparison-function (trie--comparison-function trie))
+             (lookupfun (trie--lookupfun trie))
+             (stack-createfun (trie--stack-createfun trie))
+             (stack-popfun (trie--stack-popfun trie))
+             (stack-emptyfun (trie--stack-emptyfun trie))
+             (repopulatefun 'trie--regexp-stack-repopulate)
+             (store (trie--regexp-stack-construct-store
+                     trie regexp reverse))
+             (pushed '())
+             ))
+           (:copier nil))
+  reverse comparison-function lookupfun
+  stack-createfun stack-popfun stack-emptyfun
+  repopulatefun store pushed)
+
+
+(defun trie-stack (trie &optional type reverse)
+  "Return an object that allows TRIE to be accessed as a stack.
+
+The stack is sorted in \"lexical\" order, i.e. the order defined
+by the trie's comparison function, or in reverse order if REVERSE
+is non-nil. Calling `trie-stack-pop' pops the top element (a key
+and its associated data) from the stack.
+
+Optional argument TYPE (one of the symbols vector, lisp or
+string) sets the type of sequence used for the keys.
+
+Note that any modification to TRIE *immediately* invalidates all
+trie-stacks created before the modification (in particular,
+calling `trie-stack-pop' will give unpredictable results).
+
+Operations on trie-stacks are significantly more efficient than
+constructing a real stack from the trie and using standard stack
+functions. As such, they can be useful in implementing efficient
+algorithms on tries. However, in cases where mapping functions
+`trie-mapc', `trie-mapcar' or `trie-mapf' would be sufficient, it
+is better to use one of those instead."
+  ;; convert trie from print-form if necessary
+  (trie-transform-from-read-warn trie)
+  ;; if stack functions aren't defined for trie type, throw error
+  (if (not (functionp (trie--stack-createfun trie)))
+      (error "Trie type does not support stack operations")
+    ;; otherwise, create and initialise a stack
+    (trie--stack-create trie type reverse)))
+
+
+(defun trie-stack-pop (trie-stack &optional nilflag)
+  "Pop the first element from TRIE-STACK.
+
+Returns nil if the stack is empty, or NILFLAG if specified. (The
+latter allows an empty stack to be distinguished from a null
+element stored in the trie.)"
+  ;; return nilflag if stack is empty
+  (if (trie-stack-empty-p trie-stack)
+      nilflag
+    ;; if elements have been pushed onto the stack, pop those first
+    (if (trie--stack-pushed trie-stack)
+       (pop (trie--stack-pushed trie-stack))
+      ;; otherwise, pop first element from trie-stack and repopulate it
+      (prog1
+         (pop (trie--stack-store trie-stack))
+       (setf (trie--stack-store trie-stack)
+             (funcall (trie--stack-repopulatefun trie-stack)
+                      (trie--stack-store trie-stack)
+                      (trie--stack-reverse trie-stack)
+                      (trie--stack-comparison-function trie-stack)
+                      (trie--stack-lookupfun trie-stack)
+                      (trie--stack-stack-createfun trie-stack)
+                      (trie--stack-stack-popfun trie-stack)
+                      (trie--stack-stack-emptyfun trie-stack)))))))
+
+
+(defun trie-stack-push (element trie-stack)
+  "Push ELEMENT onto TRIE-STACK."
+  (push element (trie--stack-pushed trie-stack)))
+
+
+(defun trie-stack-first (trie-stack &optional nilflag)
+  "Return the first element from TRIE-STACK, without removing it
+from the stack.
+
+Returns nil if the stack is empty, or NILFLAG if specified. (The
+latter allows an empty stack to be distinguished from a null
+element stored in the trie.)"
+  ;; return nilflag if stack is empty
+  (if (trie-stack-empty-p trie-stack)
+      nilflag
+    ;; if elements have been pushed onto the stack, return first of
+    ;; those
+    (if (trie--stack-pushed trie-stack)
+       (car (trie--stack-pushed trie-stack))
+      ;; otherwise, return first element from trie-stack
+      (car (trie--stack-store trie-stack)))))
+
+
+(defalias 'trie-stack-p 'trie--stack-p
+  "Return t if argument is a trie-stack, nil otherwise.")
+
+
+(defun trie-stack-empty-p (trie-stack)
+  "Return t if TRIE-STACK is empty, nil otherwise."
+  (and (null (trie--stack-store trie-stack))
+       (null (trie--stack-pushed trie-stack))))
+
+
+(defun trie--stack-repopulate
+  (store reverse comparison-function lookupfun
+        stack-createfun stack-popfun stack-emptyfun)
+  ;; Recursively push children of the node at the head of STORE onto the
+  ;; front of STORE, until a data node is reached.
+
+  ;; nothing to do if stack is empty
+  (when store
+    (let ((node (funcall stack-popfun (cdar store)))
+         (seq (caar store)))
+      (when (funcall stack-emptyfun (cdar store))
+       ;; (pop store) here produces irritating compiler warnings
+       (setq store (cdr store)))
+
+      (while (not (trie--node-data-p node))
+       (push
+        (cons (trie--seq-append seq (trie--node-split node))
+              (funcall stack-createfun
+                       (trie--node-subtree node) reverse))
+        store)
+       (setq node (funcall stack-popfun (cdar store))
+             seq (caar store))
+       (when (funcall stack-emptyfun (cdar store))
+         ;; (pop store) here produces irritating compiler warnings
+         (setq store (cdr store))))
+
+      (push (cons seq (trie--node-data node)) store))))
+
+
+
+
+;; ================================================================
+;;                   Query-building utility macros
+
+;; Implementation Note
+;; -------------------
+;; For queries ranked in anything other than lexical order, we use a
+;; partial heap-sort to find the k=MAXNUM highest ranked matches among
+;; the n possibile matches. This has worst-case time complexity
+;; O(n log k), and is both simple and elegant. An optimal algorithm
+;; (e.g. partial quick-sort discarding the irrelevant partition at each
+;; step) would have complexity O(n + k log k), but is probably not worth
+;; the extra coding effort, and would have worse space complexity unless
+;; coded to work "in-place", which would be highly non-trivial. (I
+;; haven't done any benchmarking, though, so feel free to do so and let
+;; me know the results!)
+
+(defmacro trie--construct-accumulator (maxnum filter resultfun)
+  ;; Does what it says on the tin! | sed -e 's/tin/macro name/'
+  `(cond
+    ;; filter, maxnum, resultfun
+    ((and ,filter ,maxnum ,resultfun)
+     (lambda (seq data)
+       (when (funcall ,filter seq data)
+        (aset trie--accumulate 0
+              (cons (funcall ,resultfun seq data)
+                    (aref trie--accumulate 0)))
+        (and (>= (length (aref trie--accumulate 0)) ,maxnum)
+             (throw 'trie-accumulate--done nil)))))
+    ;; filter, maxnum, !resultfun
+    ((and ,filter ,maxnum (not ,resultfun))
+     (lambda (seq data)
+       (when (funcall ,filter seq data)
+        (aset trie--accumulate 0
+              (cons (cons seq data)
+                    (aref trie--accumulate 0)))
+        (and (>= (length (aref trie--accumulate 0)) ,maxnum)
+             (throw 'trie-accumulate--done nil)))))
+    ;; filter, !maxnum, resultfun
+    ((and ,filter (not ,maxnum) ,resultfun)
+     (lambda (seq data)
+       (when (funcall ,filter seq data)
+        (aset trie--accumulate 0
+              (cons (funcall ,resultfun seq data)
+                    (aref trie--accumulate 0))))))
+    ;; filter, !maxnum, !resultfun
+    ((and ,filter (not ,maxnum) (not ,resultfun))
+     (lambda (seq data)
+       (when (funcall ,filter seq data)
+        (aset trie--accumulate 0
+              (cons (cons seq data)
+                    (aref trie--accumulate 0))))))
+    ;; !filter, maxnum, resultfun
+    ((and (not ,filter) ,maxnum ,resultfun)
+     (lambda (seq data)
+       (aset trie--accumulate 0
+            (cons (funcall ,resultfun seq data)
+                  (aref trie--accumulate 0)))
+       (and (>= (length (aref trie--accumulate 0)) ,maxnum)
+           (throw 'trie-accumulate--done nil))))
+    ;; !filter, maxnum, !resultfun
+    ((and (not ,filter) ,maxnum (not ,resultfun))
+     (lambda (seq data)
+       (aset trie--accumulate 0
+            (cons (cons seq data)
+                  (aref trie--accumulate 0)))
+       (and (>= (length (aref trie--accumulate 0)) ,maxnum)
+           (throw 'trie-accumulate--done nil))))
+    ;; !filter, !maxnum, resultfun
+    ((and (not ,filter) (not ,maxnum) ,resultfun)
+     (lambda (seq data)
+       (aset trie--accumulate 0
+            (cons (funcall ,resultfun seq data)
+                  (aref trie--accumulate 0)))))
+    ;; !filter, !maxnum, !resultfun
+    ((and (not ,filter) (not ,maxnum) (not ,resultfun))
+     (lambda (seq data)
+       (aset trie--accumulate 0
+            (cons (cons seq data)
+                  (aref trie--accumulate 0)))))
+    ))
+
+
+
+(defmacro trie--construct-ranked-accumulator (maxnum filter)
+  ;; Does what it says on the tin! | sed -e 's/tin/macro name/'
+  `(cond
+    ;; filter, maxnum
+    ((and ,filter ,maxnum)
+     (lambda (seq data)
+       (when (funcall ,filter seq data)
+        (heap-add trie--accumulate (cons seq data))
+        (and (> (heap-size trie--accumulate) ,maxnum)
+             (heap-delete-root trie--accumulate)))))
+    ;; filter, !maxnum
+    ((and ,filter (not ,maxnum))
+     (lambda (seq data)
+       (when (funcall ,filter seq data)
+        (heap-add trie--accumulate (cons seq data)))))
+    ;; !filter, maxnum
+    ((and (not ,filter) ,maxnum)
+     (lambda (seq data)
+       (heap-add trie--accumulate (cons seq data))
+       (and (> (heap-size trie--accumulate) ,maxnum)
+           (heap-delete-root trie--accumulate))))
+    ;; !filter, !maxnum
+    ((and (not ,filter) (not ,maxnum))
+     (lambda (seq data)
+       (heap-add trie--accumulate (cons seq data))))))
+
+
+
+(defmacro trie--accumulate-results
+  (rankfun maxnum reverse filter resultfun accfun duplicates &rest body)
+  ;; Accumulate results of running BODY code, and return them in
+  ;; appropriate order. BODY should call ACCFUN to accumulate a result,
+  ;; passing it two arguments: a trie data node, and the corresponding
+  ;; sequence. BODY can throw 'trie-accumulate--done to terminate the
+  ;; accumulation and return the results. A non-null DUPLICATES flag
+  ;; signals that the accumulated results might contain duplicates,
+  ;; which should be deleted. Note that DUPLICATES is ignored if RANKFUN
+  ;; is null. The other arguments should be passed straight through from
+  ;; the query function.
+
+  ;; rename functions to help avoid dynamic-scoping bugs
+  `(let* ((--trie-accumulate--rankfun ,rankfun)
+         (--trie-accumulate--filter ,filter)
+         (--trie-accumulate--resultfun ,resultfun)
+         ;; construct structure in which to accumulate results
+         (trie--accumulate
+          (if ,rankfun
+              (heap-create  ; heap order is inverse of rank order
+               (if ,reverse
+                   (lambda (a b)
+                     (funcall --trie-accumulate--rankfun a b))
+                 (lambda (a b)
+                   (not (funcall --trie-accumulate--rankfun a b))))
+               (when ,maxnum (1+ ,maxnum)))
+            (make-vector 1 nil)))
+         ;; construct function to accumulate completions
+         (,accfun
+          (if ,rankfun
+              (trie--construct-ranked-accumulator
+               ,maxnum --trie-accumulate--filter)
+            (trie--construct-accumulator
+             ,maxnum --trie-accumulate--filter
+             --trie-accumulate--resultfun))))
+
+     ;; accumulate results
+     (catch 'trie-accumulate--done ,@body)
+
+     ;; return list of completions
+     (cond
+      ;; for a ranked query, extract completions from heap
+      (,rankfun
+       (let (completions)
+        ;; check for and delete duplicates if flag is set
+        (if ,duplicates
+            (while (not (heap-empty trie--accumulate))
+              (if (equal (car (heap-root trie--accumulate))
+                         (caar completions))
+                  (heap-delete-root trie--accumulate)
+                (push (heap-delete-root trie--accumulate)
+                      completions)))
+          ;; skip duplicate checking if flag is not set
+          (while (not (heap-empty trie--accumulate))
+            (if ,resultfun
+                (let ((res (heap-delete-root trie--accumulate)))
+                  (push (funcall ,resultfun (car res) (cdr res))
+                        completions))
+              (push (heap-delete-root trie--accumulate)
+                    completions))))
+        completions))
+
+      ;; for lexical query, reverse result list if MAXNUM supplied
+      (,maxnum (nreverse (aref trie--accumulate 0)))
+      ;; otherwise, just return list
+      (t (aref trie--accumulate 0)))))
+
+
+
+
+;; ================================================================
+;;                          Completing
+
+(defun trie-complete
+  (trie prefix &optional rankfun maxnum reverse filter resultfun)
+  "Return an alist containing all completions of PREFIX in TRIE
+along with their associated data, in the order defined by
+RANKFUN, defaulting to \"lexical\" order (i.e. the order defined
+by the trie's comparison function). If REVERSE is non-nil, the
+completions are sorted in the reverse order. Returns nil if no
+completions are found.
+
+PREFIX must be a sequence (vector, list or string) containing
+elements of the type used to reference data in the trie. (If
+PREFIX is a string, it must be possible to apply `string' to
+individual elements of the sequences stored in the trie.) The
+completions returned in the alist will be sequences of the same
+type as KEY. If PREFIX is a list of sequences, completions of all
+sequences in the list are included in the returned alist. All
+sequences in the list must be of the same type.
+
+The optional integer argument MAXNUM limits the results to the
+first MAXNUM completions. Otherwise, all completions are
+returned.
+
+If specified, RANKFUN must accept two arguments, both cons
+cells. The car contains a sequence from the trie (of the same
+type as PREFIX), the cdr contains its associated data. It should
+return non-nil if first argument is ranked strictly higher than
+the second, nil otherwise.
+
+The FILTER argument sets a filter function for the
+completions. If supplied, it is called for each possible
+completion with two arguments: the completion, and its associated
+data. If the filter function returns nil, the completion is not
+included in the results, and does not count towards MAXNUM.
+
+RESULTFUN defines a function used to process results before
+adding them to the final result list. If specified, it should
+accept two arguments: a key and its associated data. It's return
+value is what gets added to the final result list, instead of the
+default key-data cons cell."
+
+  ;; convert trie from print-form if necessary
+  (trie-transform-from-read-warn trie)
+  ;; wrap prefix in a list if necessary
+  ;; FIXME: the test for a list of prefixes, below, will fail if the
+  ;;        PREFIX sequence is a list, and the elements of PREFIX are
+  ;;        themselves lists (there might be no easy way to fully fix
+  ;;        this...)
+  (if (or (atom prefix)
+         (and (listp prefix) (not (sequencep (car prefix)))))
+      (setq prefix (list prefix))
+    ;; sort list of prefixes if sorting completions lexically
+    (when (null rankfun)
+      (setq prefix
+           (sort prefix (trie-construct-sortfun
+                         (trie--comparison-function trie))))))
+
+  ;; accumulate completions
+  (let (node)
+    (declare (special accumulator))
+    (trie--accumulate-results
+     rankfun maxnum reverse filter resultfun accumulator nil
+     (mapc (lambda (pfx)
+            (setq node (trie--node-find (trie--root trie) pfx
+                                        (trie--lookupfun trie)))
+            (when node
+              (trie--mapc
+               (lambda (node seq)
+                 (funcall accumulator seq (trie--node-data node)))
+               (trie--mapfun trie) node pfx
+               (if maxnum reverse (not reverse)))))
+          prefix))
+    ))
+
+
+
+(defun trie-complete-stack (trie prefix &optional reverse)
+  "Return an object that allows completions of PREFIX to be accessed
+as if they were a stack.
+
+The stack is sorted in \"lexical\" order, i.e. the order defined
+by TRIE's comparison function, or in reverse order if REVERSE is
+non-nil. Calling `trie-stack-pop' pops the top element (a key and
+its associated data) from the stack.
+
+PREFIX must be a sequence (vector, list or string) that forms the
+initial part of a TRIE key, or a list of such sequences. (If
+PREFIX is a string, it must be possible to apply `string' to
+individual elements of TRIE keys.)  The completions returned in
+the alist will be sequences of the same type as KEY. If PREFIX is
+a list of sequences, completions of all sequences in the list are
+included in the stack. All sequences in the list must be of the
+same type.
+
+Note that any modification to TRIE *immediately* invalidates all
+trie-stacks created before the modification (in particular,
+calling `trie-stack-pop' will give unpredictable results).
+
+Operations on trie-stacks are significantly more efficient than
+constructing a real stack from completions of PREFIX in TRIE and
+using standard stack functions. As such, they can be useful in
+implementing efficient algorithms on tries. However, in cases
+where `trie-complete' or `trie-complete-ordered' is sufficient,
+it is better to use one of those instead."
+  ;; convert trie from print-form if necessary
+  (trie-transform-from-read-warn trie)
+  ;; if stack functions aren't defined for trie type, throw error
+  (if (not (functionp (trie--stack-createfun trie)))
+      (error "Trie type does not support stack operations")
+    ;; otherwise, create and initialise a stack
+    (trie--completion-stack-create trie prefix reverse)))
+
+
+(defun trie--completion-stack-construct-store (trie prefix reverse)
+  ;; Construct store for completion stack based on TRIE.
+  (let (store node)
+    (if (or (atom prefix)
+           (and (listp prefix)
+                (not (sequencep (car prefix)))))
+       (setq prefix (list prefix))
+      (setq prefix
+           (sort prefix
+                 (trie-construct-sortfun
+                  (trie--comparison-function trie)
+                  (not reverse)))))
+    (dolist (pfx prefix)
+      (when (setq node (trie--node-find (trie--root trie) pfx
+                                       (trie--lookupfun trie)))
+       (push (cons pfx (funcall (trie--stack-createfun trie)
+                                (trie--node-subtree node)
+                                reverse))
+             store)))
+    (trie--stack-repopulate
+     store reverse
+     (trie--comparison-function trie)
+     (trie--lookupfun trie)
+     (trie--stack-createfun trie)
+     (trie--stack-popfun trie)
+     (trie--stack-emptyfun trie))))
+
+
+
+
+;; ================================================================
+;;                        Regexp search
+
+(defun trie-regexp-search
+  (trie regexp &optional rankfun maxnum reverse filter resultfun type)
+  "Return an alist containing all matches for REGEXP in TRIE
+along with their associated data, in the order defined by
+RANKFUN, defauling to \"lexical\" order (i.e. the order defined
+by the trie's comparison function).  If REVERSE is non-nil, the
+completions are sorted in the reverse order. Returns nil if no
+completions are found.
+
+REGEXP is a regular expression, but it need not necessarily be a
+string. It must be a sequence (vector, list of string) whose
+elements are either elements of the same type as elements of the
+trie keys (which behave as literals in the regexp), or any of the
+usual regexp special characters and backslash constructs. If
+REGEXP is a string, it must be possible to apply `string' to
+individual elements of the keys stored in the trie. The matches
+returned in the alist will be sequences of the same type as KEY.
+
+Only a subset of the full Emacs regular expression syntax is
+supported. There is no support for regexp constructs that are
+only meaningful for strings (character ranges and character
+classes inside character alternatives, and syntax-related
+backslash constructs). Back-references and non-greedy postfix
+operators are not supported, so `?' after a postfix operator
+loses its special meaning. Also, matches are always anchored, so
+`$' and `^' lose their special meanings (use `.*' at the
+beginning and end of the regexp to get an unanchored match).
+
+If the regexp contains any non-shy grouping constructs, subgroup
+match data is included in the results. In this case, the car of
+each match is no longer just a key. Instead, it is a list whose
+first element is the matching key, and whose remaining elements
+are cons cells whose cars and cdrs give the start and end indices
+of the elements that matched the corresponding groups, in order.
+
+The optional integer argument MAXNUM limits the results to the
+first MAXNUM matches. Otherwise, all matches are returned.
+
+If specified, RANKFUN must accept two arguments, both cons
+cells. The car contains a sequence from the trie (of the same
+type as PREFIX), the cdr contains its associated data. It should
+return non-nil if first argument is ranked strictly higher than
+the second, nil otherwise.
+
+The FILTER argument sets a filter function for the matches. If
+supplied, it is called for each possible match with two
+arguments: the matching key, and its associated data. If the
+filter function returns nil, the match is not included in the
+results, and does not count towards MAXNUM.
+
+RESULTFUN defines a function used to process results before
+adding them to the final result list. If specified, it should
+accept two arguments: a key and its associated data. It's return
+value is what gets added to the final result list, instead of the
+default key-data cons cell."
+
+  ;; convert trie from print-form if necessary
+  (trie-transform-from-read-warn trie)
+
+  ;; massage rankfun to cope with grouping data
+  ;; FIXME: could skip this if REGEXP contains no grouping constructs
+  (when rankfun
+    (setq rankfun
+         `(lambda (a b)
+            ;; if car of argument contains a key+group list rather than
+            ;; a straight key, remove group list
+            ;; FIXME: the test for straight key, below, will fail if
+            ;;        the key is a list, and the first element of the
+            ;;        key is itself a list (there might be no easy way
+            ;;        to fully fix this...)
+            (unless (or (atom (car a))
+                        (and (listp (car a))
+                             (not (sequencep (caar a)))))
+              (setq a (cons (caar a) (cdr a))))
+            (unless (or (atom (car b))
+                        (and (listp (car b))
+                             (not (sequencep (caar b)))))
+              (setq b (cons (caar b) (cdr b))))
+            ;; call rankfun on massaged arguments
+            (,rankfun a b))))
+
+  ;; accumulate completions
+  (declare (special accumulator))
+  (trie--accumulate-results
+   rankfun maxnum reverse filter resultfun accumulator nil
+   (trie--do-regexp-search
+    (trie--root trie)
+    (tNFA-from-regexp regexp :test (trie--construct-equality-function
+                                   (trie--comparison-function trie)))
+    (cond ((stringp regexp) "") ((listp regexp) ()) (t []))  0
+    (or (and maxnum reverse) (and (not maxnum) (not reverse)))
+    (trie--comparison-function trie)
+    (trie--lookupfun trie)
+    (trie--mapfun trie))))
+
+
+
+(defun trie--do-regexp-search
+  (--trie--regexp-search--node tNFA seq pos reverse
+                              comparison-function lookupfun mapfun)
+  ;; Search everything below the node --TRIE--REGEXP-SEARCH-NODE for
+  ;; matches to the regexp encoded in tNFA. SEQ is the sequence
+  ;; corresponding to NODE, POS is it's length. REVERSE is the usual
+  ;; query argument, and the remaining arguments are the corresponding
+  ;; trie functions.
+  (declare (special accumulator))
+
+  ;; if NFA has matched and we're accumulating in normal order, check if
+  ;; trie contains current string
+  (when (and (not reverse) (tNFA-match-p tNFA))
+    (let (node groups)
+      (when (setq node (trie--find-data-node
+                       --trie--regexp-search--node lookupfun))
+       (setq groups (tNFA-group-data tNFA))
+       (funcall accumulator
+                (if groups (cons seq groups) seq)
+                (trie--node-data node)))))
+
+  (cond
+   ;; ;; data node
+   ;; ((trie--node-data-p --trie--regexp-search--node)
+   ;;  (when (tNFA-match-p tNFA)
+   ;;    (let ((groups (tNFA-group-data tNFA)))
+   ;;  (funcall accumulator
+   ;;           (if groups (cons seq groups) seq)
+   ;;           (trie--node-data --trie--regexp-search--node)))))
+
+   ;; wildcard transition: map over all nodes in subtree
+   ((tNFA-wildcard-p tNFA)
+    (let (state groups)
+      (funcall mapfun
+              (lambda (node)
+                (unless (trie--node-data-p node)
+                    ;; (when (tNFA-match-p tNFA)
+                    ;;   (setq groups (tNFA-group-data tNFA))
+                    ;;   (funcall accumulator
+                    ;;                 (if groups (cons seq groups) seq)
+                    ;;                 (trie--node-data node)))
+                  (when (setq state (tNFA-next-state
+                                     tNFA (trie--node-split node) pos))
+                    (trie--do-regexp-search
+                     node state
+                     (trie--seq-append seq (trie--node-split node))
+                     (1+ pos) reverse comparison-function
+                     lookupfun mapfun))))
+              (trie--node-subtree --trie--regexp-search--node)
+              reverse)))
+
+   (t ;; no wildcard transition: loop over all transitions
+    (let (node state)
+      (dolist (chr (sort (tNFA-transitions tNFA)
+                        (if reverse
+                            `(lambda (a b) (,comparison-function b a))
+                          comparison-function)))
+       (when (and (setq node (trie--node-find
+                              --trie--regexp-search--node
+                              (vector chr) lookupfun))
+                  (setq state (tNFA-next-state tNFA chr pos)))
+         (trie--do-regexp-search
+          node state (trie--seq-append seq chr) (1+ pos)
+          reverse comparison-function lookupfun mapfun))))))
+
+  ;; if NFA has matched and we're accumulating in reverse order, check if
+  ;; trie contains current string
+  (when (and reverse (tNFA-match-p tNFA))
+    (let (node groups)
+      (when (setq node (trie--find-data-node
+                       --trie--regexp-search--node lookupfun))
+       (setq groups (tNFA-group-data tNFA))
+       (funcall accumulator
+                (if groups (cons seq groups) seq)
+                (trie--node-data node))))))
+
+
+
+(defun trie-regexp-stack  (trie regexp &optional reverse)
+  "Return an object that allows matches to REGEXP to be accessed
+as if they were a stack.
+
+The stack is sorted in \"lexical\" order, i.e. the order defined
+by TRIE's comparison function, or in reverse order if REVERSE is
+non-nil. Calling `trie-stack-pop' pops the top element (a cons
+cell containing a key and its associated data) from the stack.
+
+REGEXP is a regular expression, but it need not necessarily be a
+string. It must be a sequence (vector, list of string) whose
+elements are either elements of the same type as elements of the
+trie keys (which behave as literals in the regexp), or any of the
+usual regexp special characters and backslash constructs. If
+REGEXP is a string, it must be possible to apply `string' to
+individual elements of the keys stored in the trie. The matches
+returned in the alist will be sequences of the same type as KEY.
+
+Back-references and non-greedy postfix operators are *not*
+supported, and the matches are always anchored, so `$' and `^'
+lose their special meanings.
+
+If the regexp contains any non-shy grouping constructs, subgroup
+match data is included in the results. In this case, the car of
+each match (as returned by a call to `trie-stack-pop' is no
+longer just a key. Instead, it is a list whose first element is
+the matching key, and whose remaining elements are cons cells
+whose cars and cdrs give the start and end indices of the
+elements that matched the corresponding groups, in order."
+
+  ;; convert trie from print-form if necessary
+  (trie-transform-from-read-warn trie)
+  ;; if stack functions aren't defined for trie type, throw error
+  (if (not (functionp (trie--stack-createfun trie)))
+      (error "Trie type does not support stack operations")
+    ;; otherwise, create and initialise a regexp stack
+    (trie--regexp-stack-create trie regexp reverse)))
+
+
+(defun trie--regexp-stack-construct-store
+  (trie regexp &optional reverse)
+  ;; Construct store for regexp stack based on TRIE.
+  (let ((seq (cond ((stringp regexp) "") ((listp regexp) ()) (t [])))
+       store)
+    (push (list seq (trie--root trie)
+               (tNFA-from-regexp
+                regexp :test (trie--construct-equality-function
+                              (trie--comparison-function trie)))
+               0)
+         store)
+    (trie--regexp-stack-repopulate
+     store reverse
+     (trie--comparison-function trie)
+     (trie--lookupfun trie)
+     (trie--stack-createfun trie)
+     (trie--stack-popfun trie)
+     (trie--stack-emptyfun trie))))
+
+
+(defun trie--regexp-stack-repopulate
+  (store reverse comparison-function lookupfun
+        stack-createfun stack-popfun stack-emptyfun)
+  ;; Recursively push matching children of the node at the head of STORE
+  ;; onto STORE, until a data node is reached. REVERSE is the usual
+  ;; query argument, and the remaining arguments are the corresponding
+  ;; trie functions.
+  (let (state seq node pos groups n s)
+    (while
+       (progn
+         (setq pos (pop store)
+               seq (nth 0 pos)
+               node (nth 1 pos)
+               state (nth 2 pos)
+               pos (nth 3 pos))
+         (cond
+          ;; if stack is empty, we're done
+          ((null node) nil)
+
+          ;; if stack element is a trie node...
+          ((trie--node-p node)
+           (cond
+            ;; matching data node: add data to the stack and we're done
+            ((trie--node-data-p node)
+             (when (tNFA-match-p state)
+               (setq groups (tNFA-group-data state))
+               (push (cons (if groups (cons groups seq) seq)
+                           (trie--node-data node))
+                     store))
+             nil)  ; return nil to exit loop
+
+            ;; wildcard transition: add new node stack
+            ((tNFA-wildcard-p state)
+             (push (list seq
+                         (funcall stack-createfun
+                                  (trie--node-subtree node) reverse)
+                         state pos)
+                   store))
+
+            (t ;; non-wildcard transition: add all possible next nodes
+             (dolist (chr (sort (tNFA-transitions state)
+                                (if reverse
+                                    comparison-function
+                                  `(lambda (a b)
+                                     (,comparison-function b a)))))
+               (when (and (setq n (trie--node-find
+                                   node (vector chr) lookupfun))
+                          (setq s (tNFA-next-state state chr pos)))
+                 (push (list (trie--seq-append seq chr) n s (1+ pos))
+                       store)))
+             t)))  ; return t to keep looping
+
+          ;; otherwise, stack element is a node stack...
+          (t
+           ;; if node stack is empty, dump it and keep repopulating
+           (if (funcall stack-emptyfun node)
+               t  ; return t to keep looping
+             ;; otherwise, add node stack back, and add next node from
+             ;; stack
+             (push (list seq node state pos) store)
+             (setq node (funcall stack-popfun node)
+                   state (tNFA-next-state state
+                                          (trie--node-split node) pos))
+             (when state
+               ;; matching data node: add data to the stack and we're
+               ;; done
+               (if (trie--node-data-p node)
+                   (progn
+                     (push (cons seq (trie--node-data node)) store)
+                     nil)  ; return nil to exit loop
+                 ;; normal node: add it to the stack and keep
+                 ;; repopulating
+                 (push (list
+                        (trie--seq-append seq (trie--node-split node))
+                        node state (1+ pos))
+                       store)))))
+          ))))
+  store)
+
+
+
+;; ----------------------------------------------------------------
+;;            Pretty-print tries during edebug
+
+;; Note:
+;; -----
+
+;; We advise the `edebug-prin1' and `edebug-prin1-to-string' functions
+;; (actually, aliases) so that they print "#<trie>" instead of the full
+;; print form for tries.
+;;
+;; This is because, if left to its own devices, edebug hangs for ages
+;; whilst printing large tries, and you either have to wait for a *very*
+;; long time for it to finish, or kill Emacs entirely. (Even C-g C-g
+;; fails!)
+;;
+;; We do this also for lists of tries, since those occur quite often,
+;; but not for other sequence types or deeper nested structures, to keep
+;; the implementation as simple as possible.
+;;
+;; Since the print form of a trie is practically incomprehensible
+;; anyway, we don't lose much by doing this. If you *really* want to
+;; print tries in full whilst edebugging, despite this warning, disable
+;; the advice.
+;;
+;; FIXME: We could use `cedet-edebug-prin1-extensions' instead of advice
+;;        when `cedet-edebug' is loaded, though I believe the current
+;;        implementation still works in that case.
+
+
+(eval-when-compile
+  (require 'edebug)
+  (require 'advice))
+
+
+(defun trie--edebug-pretty-print (object)
+  (cond
+   ((trie-p object) "#<trie>")
+   ((null object) "nil")
+   ((let ((tlist object) (test t))
+      (while (or (trie-p (car-safe tlist))
+                (and tlist (setq test nil)))
+       (setq tlist (cdr tlist)))
+      test)
+    (concat "(" (mapconcat (lambda (dummy) "#<trie>") object " ") ")"))
+;; ((vectorp object)
+;;  (let ((pretty "[") (len (length object)))
+;;    (dotimes (i (1- len))
+;;     (setq pretty
+;;           (concat pretty
+;;                   (if (trie-p (aref object i))
+;;                       "#<trie>" (prin1-to-string (aref object i))) " ")))
+;;    (concat pretty
+;;           (if (trie-p (aref object (1- len)))
+;;               "#<trie>" (prin1-to-string (aref object (1- len))))
+;;           "]")))
+   ))
+
+
+(when (fboundp 'ad-define-subr-args)
+  (ad-define-subr-args 'edebug-prin1 '(object &optional printcharfun)))
+
+(defadvice edebug-prin1
+  (around trie activate compile preactivate)
+  (let ((pretty (trie--edebug-pretty-print object)))
+    (if pretty
+       (progn
+         (prin1 pretty printcharfun)
+         (setq ad-return-value pretty))
+    ad-do-it)))
+
+
+(when (fboundp 'ad-define-subr-args)
+  (ad-define-subr-args 'edebug-prin1-to-string '(object &optional noescape)))
+
+(defadvice edebug-prin1-to-string
+  (around trie activate compile preactivate)
+  (let ((pretty (trie--edebug-pretty-print object)))
+    (if pretty
+       (setq ad-return-value pretty)
+      ad-do-it)))
+
+
+
+(provide 'trie)
+
+;;; trie.el ends here
diff --git a/packages/undo-tree/undo-tree.el b/packages/undo-tree/undo-tree.el
new file mode 100644 (file)
index 0000000..a597be9
--- /dev/null
@@ -0,0 +1,4230 @@
+;;; undo-tree.el --- Treat undo history as a tree  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2009-2012  Free Software Foundation, Inc
+
+;; Author: Toby Cubitt <toby-undo-tree@dr-qubit.org>
+;; Version: 0.6.3
+;; Keywords: convenience, files, undo, redo, history, tree
+;; URL: http://www.dr-qubit.org/emacs.php
+;; Repository: http://www.dr-qubit.org/git/undo-tree.git
+
+;; This file is part of Emacs.
+;;
+;; This file is free software: you can redistribute it and/or modify it under
+;; the terms of the GNU General Public License as published by the Free
+;; Software Foundation, either version 3 of the License, or (at your option)
+;; any later version.
+;;
+;; This program is distributed in the hope that it will be useful, but WITHOUT
+;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+;; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+;; more details.
+;;
+;; You should have received a copy of the GNU General Public License along
+;; with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;;
+;; Emacs has a powerful undo system. Unlike the standard undo/redo system in
+;; most software, it allows you to recover *any* past state of a buffer
+;; (whereas the standard undo/redo system can lose past states as soon as you
+;; redo). However, this power comes at a price: many people find Emacs' undo
+;; system confusing and difficult to use, spawning a number of packages that
+;; replace it with the less powerful but more intuitive undo/redo system.
+;;
+;; Both the loss of data with standard undo/redo, and the confusion of Emacs'
+;; undo, stem from trying to treat undo history as a linear sequence of
+;; changes. It's not. The `undo-tree-mode' provided by this package replaces
+;; Emacs' undo system with a system that treats undo history as what it is: a
+;; branching tree of changes. This simple idea allows the more intuitive
+;; behaviour of the standard undo/redo system to be combined with the power of
+;; never losing any history. An added side bonus is that undo history can in
+;; some cases be stored more efficiently, allowing more changes to accumulate
+;; before Emacs starts discarding history.
+;;
+;; The only downside to this more advanced yet simpler undo system is that it
+;; was inspired by Vim. But, after all, most successful religions steal the
+;; best ideas from their competitors!
+;;
+;;
+;; Installation
+;; ============
+;;
+;; This package has only been tested with Emacs versions 24 and CVS. It should
+;; work in Emacs versions 22 and 23 too, but will not work without
+;; modifications in earlier versions of Emacs.
+;;
+;; To install `undo-tree-mode', make sure this file is saved in a directory in
+;; your `load-path', and add the line:
+;;
+;;   (require 'undo-tree)
+;;
+;; to your .emacs file. Byte-compiling undo-tree.el is recommended (e.g. using
+;; "M-x byte-compile-file" from within emacs).
+;;
+;; If you want to replace the standard Emacs' undo system with the
+;; `undo-tree-mode' system in all buffers, you can enable it globally by
+;; adding:
+;;
+;;   (global-undo-tree-mode)
+;;
+;; to your .emacs file.
+;;
+;;
+;; Quick-Start
+;; ===========
+;;
+;; If you're the kind of person who likes to jump in the car and drive,
+;; without bothering to first figure out whether the button on the left dips
+;; the headlights or operates the ejector seat (after all, you'll soon figure
+;; it out when you push it), then here's the minimum you need to know:
+;;
+;; `undo-tree-mode' and `global-undo-tree-mode'
+;;   Enable undo-tree mode (either in the current buffer or globally).
+;;
+;; C-_  C-/  (`undo-tree-undo')
+;;   Undo changes.
+;;
+;; M-_  C-?  (`undo-tree-redo')
+;;   Redo changes.
+;;
+;; `undo-tree-switch-branch'
+;;   Switch undo-tree branch.
+;;   (What does this mean? Better press the button and see!)
+;;
+;; C-x u  (`undo-tree-visualize')
+;;   Visualize the undo tree.
+;;   (Better try pressing this button too!)
+;;
+;; C-x r u  (`undo-tree-save-state-to-register')
+;;   Save current buffer state to register.
+;;
+;; C-x r U  (`undo-tree-restore-state-from-register')
+;;   Restore buffer state from register.
+;;
+;;
+;;
+;; In the undo-tree visualizer:
+;;
+;; <up>  p  C-p  (`undo-tree-visualize-undo')
+;;   Undo changes.
+;;
+;; <down>  n  C-n  (`undo-tree-visualize-redo')
+;;   Redo changes.
+;;
+;; <left>  b  C-b  (`undo-tree-visualize-switch-branch-left')
+;;   Switch to previous undo-tree branch.
+;;
+;; <right>  f  C-f  (`undo-tree-visualize-switch-branch-right')
+;;   Switch to next undo-tree branch.
+;;
+;; C-<up>  M-{  (`undo-tree-visualize-undo-to-x')
+;;   Undo changes up to last branch point.
+;;
+;; C-<down>  M-}  (`undo-tree-visualize-redo-to-x')
+;;   Redo changes down to next branch point.
+;;
+;; <down>  n  C-n  (`undo-tree-visualize-redo')
+;;   Redo changes.
+;;
+;; <mouse-1>  (`undo-tree-visualizer-mouse-set')
+;;   Set state to node at mouse click.
+;;
+;; t  (`undo-tree-visualizer-toggle-timestamps')
+;;   Toggle display of time-stamps.
+;;
+;; d  (`undo-tree-visualizer-toggle-diff')
+;;   Toggle diff display.
+;;
+;; s  (`undo-tree-visualizer-selection-mode')
+;;   Toggle keyboard selection mode.
+;;
+;; q  (`undo-tree-visualizer-quit')
+;;   Quit undo-tree-visualizer.
+;;
+;; C-q  (`undo-tree-visualizer-abort')
+;;   Abort undo-tree-visualizer.
+;;
+;; ,  <
+;;   Scroll left.
+;;
+;; .  >
+;;   Scroll right.
+;;
+;; <pgup>  M-v
+;;   Scroll up.
+;;
+;; <pgdown>  C-v
+;;   Scroll down.
+;;
+;;
+;;
+;; In visualizer selection mode:
+;;
+;; <up>  p  C-p  (`undo-tree-visualizer-select-previous')
+;;   Select previous node.
+;;
+;; <down>  n  C-n  (`undo-tree-visualizer-select-next')
+;;   Select next node.
+;;
+;; <left>  b  C-b  (`undo-tree-visualizer-select-left')
+;;   Select left sibling node.
+;;
+;; <right>  f  C-f  (`undo-tree-visualizer-select-right')
+;;   Select right sibling node.
+;;
+;; <pgup>  M-v
+;;   Select node 10 above.
+;;
+;; <pgdown>  C-v
+;;   Select node 10 below.
+;;
+;; <enter>  (`undo-tree-visualizer-set')
+;;   Set state to selected node and exit selection mode.
+;;
+;; s  (`undo-tree-visualizer-mode')
+;;   Exit selection mode.
+;;
+;; t  (`undo-tree-visualizer-toggle-timestamps')
+;;   Toggle display of time-stamps.
+;;
+;; d  (`undo-tree-visualizer-toggle-diff')
+;;   Toggle diff display.
+;;
+;; q  (`undo-tree-visualizer-quit')
+;;   Quit undo-tree-visualizer.
+;;
+;; C-q  (`undo-tree-visualizer-abort')
+;;   Abort undo-tree-visualizer.
+;;
+;; ,  <
+;;   Scroll left.
+;;
+;; .  >
+;;   Scroll right.
+;;
+;;
+;;
+;; Persistent undo history:
+;;
+;; Note: Requires a recent development version of Emacs checked out out from
+;;       the Emacs bzr repository. All stable versions of Emacs currently
+;;       break this feature.
+;;
+;; `undo-tree-auto-save-history' (variable)
+;;    automatically save and restore undo-tree history along with buffer
+;;    (disabled by default)
+;;
+;; `undo-tree-save-history' (command)
+;;    manually save undo history to file
+;;
+;; `undo-tree-load-history' (command)
+;;    manually load undo history from file
+;;
+;;
+;;
+;; Compressing undo history:
+;;
+;;   Undo history files cannot grow beyond the maximum undo tree size, which
+;;   is limited by `undo-limit', `undo-strong-limit' and
+;;   `undo-outer-limit'. Nevertheless, undo history files can grow quite
+;;   large. If you want to automatically compress undo history, add the
+;;   following advice to your .emacs file (replacing ".gz" with the filename
+;;   extension of your favourite compression algorithm):
+;;
+;;   (defadvice undo-tree-make-history-save-file-name
+;;     (after undo-tree activate)
+;;     (setq concat ad-return-value ".gz"))
+;;
+;;
+;;
+;;
+;; Undo Systems
+;; ============
+;;
+;; To understand the different undo systems, it's easiest to consider an
+;; example. Imagine you make a few edits in a buffer. As you edit, you
+;; accumulate a history of changes, which we might visualize as a string of
+;; past buffer states, growing downwards:
+;;
+;;                                o  (initial buffer state)
+;;                                |
+;;                                |
+;;                                o  (first edit)
+;;                                |
+;;                                |
+;;                                o  (second edit)
+;;                                |
+;;                                |
+;;                                x  (current buffer state)
+;;
+;;
+;; Now imagine that you undo the last two changes. We can visualize this as
+;; rewinding the current state back two steps:
+;;
+;;                                o  (initial buffer state)
+;;                                |
+;;                                |
+;;                                x  (current buffer state)
+;;                                |
+;;                                |
+;;                                o
+;;                                |
+;;                                |
+;;                                o
+;;
+;;
+;; However, this isn't a good representation of what Emacs' undo system
+;; does. Instead, it treats the undos as *new* changes to the buffer, and adds
+;; them to the history:
+;;
+;;                                o  (initial buffer state)
+;;                                |
+;;                                |
+;;                                o  (first edit)
+;;                                |
+;;                                |
+;;                                o  (second edit)
+;;                                |
+;;                                |
+;;                                x  (buffer state before undo)
+;;                                |
+;;                                |
+;;                                o  (first undo)
+;;                                |
+;;                                |
+;;                                x  (second undo)
+;;
+;;
+;; Actually, since the buffer returns to a previous state after an undo,
+;; perhaps a better way to visualize it is to imagine the string of changes
+;; turning back on itself:
+;;
+;;        (initial buffer state)  o
+;;                                |
+;;                                |
+;;                  (first edit)  o  x  (second undo)
+;;                                |  |
+;;                                |  |
+;;                 (second edit)  o  o  (first undo)
+;;                                | /
+;;                                |/
+;;                                o  (buffer state before undo)
+;;
+;; Treating undos as new changes might seem a strange thing to do. But the
+;; advantage becomes clear as soon as we imagine what happens when you edit
+;; the buffer again. Since you've undone a couple of changes, new edits will
+;; branch off from the buffer state that you've rewound to. Conceptually, it
+;; looks like this:
+;;
+;;                                o  (initial buffer state)
+;;                                |
+;;                                |
+;;                                o
+;;                                |\
+;;                                | \
+;;                                o  x  (new edit)
+;;                                |
+;;                                |
+;;                                o
+;;
+;; The standard undo/redo system only lets you go backwards and forwards
+;; linearly. So as soon as you make that new edit, it discards the old
+;; branch. Emacs' undo just keeps adding changes to the end of the string. So
+;; the undo history in the two systems now looks like this:
+;;
+;;            Undo/Redo:                      Emacs' undo
+;;
+;;               o                                o
+;;               |                                |
+;;               |                                |
+;;               o                                o  o
+;;               .\                               |  |\
+;;               . \                              |  | \
+;;               .  x  (new edit)                 o  o  |
+;;   (discarded  .                                | /   |
+;;     branch)   .                                |/    |
+;;               .                                o     |
+;;                                                      |
+;;                                                      |
+;;                                                      x  (new edit)
+;;
+;; Now, what if you change your mind about those undos, and decide you did
+;; like those other changes you'd made after all? With the standard undo/redo
+;; system, you're lost. There's no way to recover them, because that branch
+;; was discarded when you made the new edit.
+;;
+;; However, in Emacs' undo system, those old buffer states are still there in
+;; the undo history. You just have to rewind back through the new edit, and
+;; back through the changes made by the undos, until you reach them. Of
+;; course, since Emacs treats undos (even undos of undos!) as new changes,
+;; you're really weaving backwards and forwards through the history, all the
+;; time adding new changes to the end of the string as you go:
+;;
+;;                       o
+;;                       |
+;;                       |
+;;                       o  o     o  (undo new edit)
+;;                       |  |\    |\
+;;                       |  | \   | \
+;;                       o  o  |  |  o  (undo the undo)
+;;                       | /   |  |  |
+;;                       |/    |  |  |
+;;      (trying to get   o     |  |  x  (undo the undo)
+;;       to this state)        | /
+;;                             |/
+;;                             o
+;;
+;; So far, this is still reasonably intuitive to use. It doesn't behave so
+;; differently to standard undo/redo, except that by going back far enough you
+;; can access changes that would be lost in standard undo/redo.
+;;
+;; However, imagine that after undoing as just described, you decide you
+;; actually want to rewind right back to the initial state. If you're lucky,
+;; and haven't invoked any command since the last undo, you can just keep on
+;; undoing until you get back to the start:
+;;
+;;      (trying to get   o              x  (got there!)
+;;       to this state)  |              |
+;;                       |              |
+;;                       o  o     o     o  (keep undoing)
+;;                       |  |\    |\    |
+;;                       |  | \   | \   |
+;;                       o  o  |  |  o  o  (keep undoing)
+;;                       | /   |  |  | /
+;;                       |/    |  |  |/
+;;      (already undid   o     |  |  o  (got this far)
+;;       to this state)        | /
+;;                             |/
+;;                             o
+;;
+;; But if you're unlucky, and you happen to have moved the point (say) after
+;; getting to the state labelled "got this far", then you've "broken the undo
+;; chain". Hold on to something solid, because things are about to get
+;; hairy. If you try to undo now, Emacs thinks you're trying to undo the
+;; undos! So to get back to the initial state you now have to rewind through
+;; *all* the changes, including the undos you just did:
+;;
+;;      (trying to get   o                          x  (finally got there!)
+;;       to this state)  |                          |
+;;                       |                          |
+;;                       o  o     o     o     o     o
+;;                       |  |\    |\    |\    |\    |
+;;                       |  | \   | \   | \   | \   |
+;;                       o  o  |  |  o  o  o  |  o  o
+;;                       | /   |  |  | /   |  |  | /
+;;                       |/    |  |  |/    |  |  |/
+;;      (already undid   o     |  |  o<.   |  |  o
+;;       to this state)        | /     :   | /
+;;                             |/      :   |/
+;;                             o       :   o
+;;                                     :
+;;                             (got this far, but
+;;                              broke the undo chain)
+;;
+;; Confused?
+;;
+;; In practice you can just hold down the undo key until you reach the buffer
+;; state that you want. But whatever you do, don't move around in the buffer
+;; to *check* that you've got back to where you want! Because you'll break the
+;; undo chain, and then you'll have to traverse the entire string of undos
+;; again, just to get back to the point at which you broke the
+;; chain. Undo-in-region and commands such as `undo-only' help to make using
+;; Emacs' undo a little easier, but nonetheless it remains confusing for many
+;; people.
+;;
+;;
+;; So what does `undo-tree-mode' do? Remember the diagram we drew to represent
+;; the history we've been discussing (make a few edits, undo a couple of them,
+;; and edit again)? The diagram that conceptually represented our undo
+;; history, before we started discussing specific undo systems? It looked like
+;; this:
+;;
+;;                                o  (initial buffer state)
+;;                                |
+;;                                |
+;;                                o
+;;                                |\
+;;                                | \
+;;                                o  x  (current state)
+;;                                |
+;;                                |
+;;                                o
+;;
+;; Well, that's *exactly* what the undo history looks like to
+;; `undo-tree-mode'.  It doesn't discard the old branch (as standard undo/redo
+;; does), nor does it treat undos as new changes to be added to the end of a
+;; linear string of buffer states (as Emacs' undo does). It just keeps track
+;; of the tree of branching changes that make up the entire undo history.
+;;
+;; If you undo from this point, you'll rewind back up the tree to the previous
+;; state:
+;;
+;;                                o
+;;                                |
+;;                                |
+;;                                x  (undo)
+;;                                |\
+;;                                | \
+;;                                o  o
+;;                                |
+;;                                |
+;;                                o
+;;
+;; If you were to undo again, you'd rewind back to the initial state. If on
+;; the other hand you redo the change, you'll end up back at the bottom of the
+;; most recent branch:
+;;
+;;                                o  (undo takes you here)
+;;                                |
+;;                                |
+;;                                o  (start here)
+;;                                |\
+;;                                | \
+;;                                o  x  (redo takes you here)
+;;                                |
+;;                                |
+;;                                o
+;;
+;; So far, this is just like the standard undo/redo system. But what if you
+;; want to return to a buffer state located on a previous branch of the
+;; history? Since `undo-tree-mode' keeps the entire history, you simply need
+;; to tell it to switch to a different branch, and then redo the changes you
+;; want:
+;;
+;;                                o
+;;                                |
+;;                                |
+;;                                o  (start here, but switch
+;;                                |\  to the other branch)
+;;                                | \
+;;                        (redo)  o  o
+;;                                |
+;;                                |
+;;                        (redo)  x
+;;
+;; Now you're on the other branch, if you undo and redo changes you'll stay on
+;; that branch, moving up and down through the buffer states located on that
+;; branch. Until you decide to switch branches again, of course.
+;;
+;; Real undo trees might have multiple branches and sub-branches:
+;;
+;;                                o
+;;                            ____|______
+;;                           /           \
+;;                          o             o
+;;                      ____|__         __|
+;;                     /    |  \       /   \
+;;                    o     o   o     o     x
+;;                    |               |
+;;                   / \             / \
+;;                  o   o           o   o
+;;
+;; Trying to imagine what Emacs' undo would do as you move about such a tree
+;; will likely frazzle your brain circuits! But in `undo-tree-mode', you're
+;; just moving around this undo history tree. Most of the time, you'll
+;; probably only need to stay on the most recent branch, in which case it
+;; behaves like standard undo/redo, and is just as simple to understand. But
+;; if you ever need to recover a buffer state on a different branch, the
+;; possibility of switching between branches and accessing the full undo
+;; history is still there.
+;;
+;;
+;;
+;; The Undo-Tree Visualizer
+;; ========================
+;;
+;; Actually, it gets better. You don't have to imagine all these tree
+;; diagrams, because `undo-tree-mode' includes an undo-tree visualizer which
+;; draws them for you! In fact, it draws even better diagrams: it highlights
+;; the node representing the current buffer state, it highlights the current
+;; branch, and you can toggle the display of time-stamps (by hitting "t") and
+;; a diff of the undo changes (by hitting "d"). (There's one other tiny
+;; difference: the visualizer puts the most recent branch on the left rather
+;; than the right.)
+;;
+;; Bring up the undo tree visualizer whenever you want by hitting "C-x u".
+;;
+;; In the visualizer, the usual keys for moving up and down a buffer instead
+;; move up and down the undo history tree (e.g. the up and down arrow keys, or
+;; "C-n" and "C-p"). The state of the "parent" buffer (the buffer whose undo
+;; history you are visualizing) is updated as you move around the undo tree in
+;; the visualizer. If you reach a branch point in the visualizer, the usual
+;; keys for moving forward and backward in a buffer instead switch branch
+;; (e.g. the left and right arrow keys, or "C-f" and "C-b").
+;;
+;; Clicking with the mouse on any node in the visualizer will take you
+;; directly to that node, resetting the state of the parent buffer to the
+;; state represented by that node.
+;;
+;; You can also select nodes directly using the keyboard, by hitting "s" to
+;; toggle selection mode. The usual motion keys now allow you to move around
+;; the tree without changing the parent buffer. Hitting <enter> will reset the
+;; state of the parent buffer to the state represented by the currently
+;; selected node.
+;;
+;; It can be useful to see how long ago the parent buffer was in the state
+;; represented by a particular node in the visualizer. Hitting "t" in the
+;; visualizer toggles the display of time-stamps for all the nodes. (Note
+;; that, because of the way `undo-tree-mode' works, these time-stamps may be
+;; somewhat later than the true times, especially if it's been a long time
+;; since you last undid any changes.)
+;;
+;; To get some idea of what changes are represented by a given node in the
+;; tree, it can be useful to see a diff of the changes. Hit "d" in the
+;; visualizer to toggle a diff display. This normally displays a diff between
+;; the current state and the previous one, i.e. it shows you the changes that
+;; will be applied if you undo (move up the tree). However, the diff display
+;; really comes into its own in the visualizer's selection mode (see above),
+;; where it instead shows a diff between the current state and the currently
+;; selected state, i.e. it shows you the changes that will be applied if you
+;; reset to the selected state.
+;;
+;; (Note that the diff is generated by the Emacs `diff' command, and is
+;; displayed using `diff-mode'. See the corresponding customization groups if
+;; you want to customize the diff display.)
+;;
+;; Finally, hitting "q" will quit the visualizer, leaving the parent buffer in
+;; whatever state you ended at. Hitting "C-q" will abort the visualizer,
+;; returning the parent buffer to whatever state it was originally in when the
+;; visualizer was .
+;;
+;;
+;;
+;; Undo-in-Region
+;; ==============
+;;
+;; Emacs allows a very useful and powerful method of undoing only selected
+;; changes: when a region is active, only changes that affect the text within
+;; that region will be undone. With the standard Emacs undo system, changes
+;; produced by undoing-in-region naturally get added onto the end of the
+;; linear undo history:
+;;
+;;                       o
+;;                       |
+;;                       |  x  (second undo-in-region)
+;;                       o  |
+;;                       |  |
+;;                       |  o  (first undo-in-region)
+;;                       o  |
+;;                       | /
+;;                       |/
+;;                       o
+;;
+;; You can of course redo these undos-in-region as usual, by undoing the
+;; undos:
+;;
+;;                       o
+;;                       |
+;;                       |  o_
+;;                       o  | \
+;;                       |  |  |
+;;                       |  o  o  (undo the undo-in-region)
+;;                       o  |  |
+;;                       | /   |
+;;                       |/    |
+;;                       o     x  (undo the undo-in-region)
+;;
+;;
+;; In `undo-tree-mode', undo-in-region works similarly: when there's an active
+;; region, undoing only undoes changes that affect that region. However, the
+;; way these undos-in-region are recorded in the undo history is quite
+;; different. In `undo-tree-mode', undo-in-region creates a new branch in the
+;; undo history. The new branch consists of an undo step that undoes some of
+;; the changes that affect the current region, and another step that undoes
+;; the remaining changes needed to rejoin the previous undo history.
+;;
+;;      Previous undo history                Undo-in-region
+;;
+;;               o                                o
+;;               |                                |
+;;               |                                |
+;;               o                                o
+;;               |                                |\
+;;               |                                | \
+;;               o                                o  x  (undo-in-region)
+;;               |                                |  |
+;;               |                                |  |
+;;               x                                o  o
+;;
+;; As long as you don't change the active region after undoing-in-region,
+;; continuing to undo-in-region extends the new branch, pulling more changes
+;; that affect the current region into an undo step immediately above your
+;; current location in the undo tree, and pushing the point at which the new
+;; branch is attached further up the tree:
+;;
+;;      First undo-in-region                 Second undo-in-region
+;;
+;;               o                                o
+;;               |                                |\
+;;               |                                | \
+;;               o                                o  x  (undo-in-region)
+;;               |\                               |  |
+;;               | \                              |  |
+;;               o  x                             o  o
+;;               |  |                             |  |
+;;               |  |                             |  |
+;;               o  o                             o  o
+;;
+;; Redoing takes you back down the undo tree, as usual (as long as you haven't
+;; changed the active region after undoing-in-region, it doesn't matter if it
+;; is still active):
+;;
+;;                       o
+;;                      |\
+;;                      | \
+;;                      o  o
+;;                      |  |
+;;                      |  |
+;;                      o  o  (redo)
+;;                      |  |
+;;                      |  |
+;;                      o  x  (redo)
+;;
+;;
+;; What about redo-in-region? Obviously, this only makes sense if you have
+;; already undone some changes, so that there are some changes to redo!
+;; Redoing-in-region splits off a new branch of the undo history below your
+;; current location in the undo tree. This time, the new branch consists of a
+;; redo step that redoes some of the redo changes that affect the current
+;; region, followed by all the remaining redo changes.
+;;
+;;      Previous undo history                Redo-in-region
+;;
+;;               o                                o
+;;               |                                |
+;;               |                                |
+;;               x                                o
+;;               |                                |\
+;;               |                                | \
+;;               o                                o  x  (redo-in-region)
+;;               |                                |  |
+;;               |                                |  |
+;;               o                                o  o
+;;
+;; As long as you don't change the active region after redoing-in-region,
+;; continuing to redo-in-region extends the new branch, pulling more redo
+;; changes into a redo step immediately below your current location in the
+;; undo tree.
+;;
+;;      First redo-in-region                 Second redo-in-region
+;;
+;;          o                                     o
+;;          |                                     |
+;;          |                                     |
+;;          o                                     o
+;;          |\                                    |\
+;;          | \                                   | \
+;;          o  x  (redo-in-region)                o  o
+;;          |  |                                  |  |
+;;          |  |                                  |  |
+;;          o  o                                  o  x  (redo-in-region)
+;;                                                   |
+;;                                                   |
+;;                                                   o
+;;
+;; Note that undo-in-region and redo-in-region only ever add new changes to
+;; the undo tree, they *never* modify existing undo history. So you can always
+;; return to previous buffer states by switching to a previous branch of the
+;; tree.
+
+
+
+;;; Code:
+
+(eval-when-compile (require 'cl))
+(require 'diff)
+
+
+\f
+;;; =====================================================================
+;;;              Compatibility hacks for older Emacsen
+
+;; `characterp' isn't defined in Emacs versions < 23
+(unless (fboundp 'characterp)
+  (defalias 'characterp 'char-valid-p))
+
+;; `region-active-p' isn't defined in Emacs versions < 23
+(unless (fboundp 'region-active-p)
+  (defun region-active-p () (and transient-mark-mode mark-active)))
+
+
+;; `registerv' defstruct isn't defined in Emacs versions < 24
+(unless (fboundp 'registerv-make)
+  (defmacro registerv-make (data &rest _dummy) data))
+
+(unless (fboundp 'registerv-data)
+  (defmacro registerv-data (data) data))
+
+
+;; `diff-no-select' and `diff-file-local-copy' aren't defined in Emacs
+;; versions < 24 (copied and adapted from Emacs 24)
+(unless (fboundp 'diff-no-select)
+  (defun diff-no-select (old new &optional switches no-async buf)
+    ;; Noninteractive helper for creating and reverting diff buffers
+    (unless (bufferp new) (setq new (expand-file-name new)))
+    (unless (bufferp old) (setq old (expand-file-name old)))
+    (or switches (setq switches diff-switches)) ; If not specified, use default.
+    (unless (listp switches) (setq switches (list switches)))
+    (or buf (setq buf (get-buffer-create "*Diff*")))
+    (let* ((old-alt (diff-file-local-copy old))
+          (new-alt (diff-file-local-copy new))
+          (command
+           (mapconcat 'identity
+                      `(,diff-command
+                        ;; Use explicitly specified switches
+                        ,@switches
+                        ,@(mapcar #'shell-quote-argument
+                                  (nconc
+                                   (when (or old-alt new-alt)
+                                     (list "-L" (if (stringp old)
+                                                    old (prin1-to-string old))
+                                           "-L" (if (stringp new)
+                                                    new (prin1-to-string new))))
+                                   (list (or old-alt old)
+                                         (or new-alt new)))))
+                      " "))
+          (thisdir default-directory))
+      (with-current-buffer buf
+       (setq buffer-read-only t)
+       (buffer-disable-undo (current-buffer))
+       (let ((inhibit-read-only t))
+         (erase-buffer))
+       (buffer-enable-undo (current-buffer))
+       (diff-mode)
+       (set (make-local-variable 'revert-buffer-function)
+            (lambda (_ignore-auto _noconfirm)
+              (diff-no-select old new switches no-async (current-buffer))))
+       (setq default-directory thisdir)
+       (let ((inhibit-read-only t))
+         (insert command "\n"))
+       (if (and (not no-async) (fboundp 'start-process))
+           (let ((proc (start-process "Diff" buf shell-file-name
+                                      shell-command-switch command)))
+             (set-process-filter proc 'diff-process-filter)
+             (set-process-sentinel
+              proc (lambda (proc _msg)
+                     (with-current-buffer (process-buffer proc)
+                       (diff-sentinel (process-exit-status proc))
+                       (if old-alt (delete-file old-alt))
+                       (if new-alt (delete-file new-alt))))))
+         ;; Async processes aren't available.
+         (let ((inhibit-read-only t))
+           (diff-sentinel
+            (call-process shell-file-name nil buf nil
+                          shell-command-switch command))
+           (if old-alt (delete-file old-alt))
+           (if new-alt (delete-file new-alt)))))
+      buf)))
+
+(unless (fboundp 'diff-file-local-copy)
+  (defun diff-file-local-copy (file-or-buf)
+    (if (bufferp file-or-buf)
+       (with-current-buffer file-or-buf
+         (let ((tempfile (make-temp-file "buffer-content-")))
+           (write-region nil nil tempfile nil 'nomessage)
+           tempfile))
+      (file-local-copy file-or-buf))))
+
+
+
+\f
+;;; =====================================================================
+;;;              Global variables and customization options
+
+(defvar buffer-undo-tree nil
+  "Tree of undo entries in current buffer.")
+(make-variable-buffer-local 'buffer-undo-tree)
+(put 'buffer-undo-tree 'permanent-local t)
+
+
+(defgroup undo-tree nil
+  "Tree undo/redo."
+  :group 'undo)
+
+(defcustom undo-tree-mode-lighter " Undo-Tree"
+  "Lighter displayed in mode line
+when `undo-tree-mode' is enabled."
+  :group 'undo-tree
+  :type 'string)
+
+
+(defcustom undo-tree-incompatible-major-modes '(term-mode)
+  "List of major-modes in which `undo-tree-mode' should not be enabled.
+\(See `turn-on-undo-tree-mode'.\)"
+  :group 'undo-tree
+  :type '(repeat symbol))
+
+
+(defcustom undo-tree-enable-undo-in-region t
+  "When non-nil, enable undo-in-region.
+
+When undo-in-region is enabled, undoing or redoing when the
+region is active (in `transient-mark-mode') or with a prefix
+argument (not in `transient-mark-mode') only undoes changes
+within the current region."
+  :group 'undo-tree
+  :type 'boolean)
+
+
+(defcustom undo-tree-auto-save-history nil
+  "When non-nil, `undo-tree-mode' will save undo history to file
+when a buffer is saved to file.
+
+It will automatically load undo history when a buffer is loaded
+from file, if an undo save file exists.
+
+Undo-tree history is saved to a file called
+\".<buffer-file-name>.~undo-tree\" in the same directory as the
+file itself.
+
+WARNING! `undo-tree-auto-save-history' will not work properly in
+Emacs versions prior to 24.3, so it cannot be enabled via
+the customization interface in versions earlier than that one. To
+ignore this warning and enable it regardless, set
+`undo-tree-auto-save-history' to a non-nil value outside of
+customize."
+  :group 'undo-tree
+  :type (if (version-list-< (version-to-list emacs-version) '(24 3))
+           '(choice (const :tag "<disabled>" nil))
+         'boolean))
+
+
+(defcustom undo-tree-history-directory-alist nil
+  "Alist of filename patterns and undo history directory names.
+Each element looks like (REGEXP . DIRECTORY).  Undo history for
+files with names matching REGEXP will be saved in DIRECTORY.
+DIRECTORY may be relative or absolute.  If it is absolute, so
+that all matching files are backed up into the same directory,
+the file names in this directory will be the full name of the
+file backed up with all directory separators changed to `!' to
+prevent clashes.  This will not work correctly if your filesystem
+truncates the resulting name.
+
+For the common case of all backups going into one directory, the
+alist should contain a single element pairing \".\" with the
+appropriate directory name.
+
+If this variable is nil, or it fails to match a filename, the
+backup is made in the original file's directory.
+
+On MS-DOS filesystems without long names this variable is always
+ignored."
+  :group 'undo-tree
+  :type '(repeat (cons (regexp :tag "Regexp matching filename")
+                      (directory :tag "Undo history directory name"))))
+
+
+
+(defcustom undo-tree-visualizer-relative-timestamps t
+  "When non-nil, display times relative to current time
+when displaying time stamps in visualizer.
+
+Otherwise, display absolute times."
+  :group 'undo-tree
+  :type 'boolean)
+
+
+(defcustom undo-tree-visualizer-timestamps nil
+  "When non-nil, display time-stamps by default
+in undo-tree visualizer.
+
+\\<undo-tree-visualizer-map>You can always toggle time-stamps on and off \
+using \\[undo-tree-visualizer-toggle-timestamps], regardless of the
+setting of this variable."
+  :group 'undo-tree
+  :type 'boolean)
+
+
+(defcustom undo-tree-visualizer-diff nil
+  "When non-nil, display diff by default in undo-tree visualizer.
+
+\\<undo-tree-visualizer-map>You can always toggle the diff display \
+using \\[undo-tree-visualizer-toggle-diff], regardless of the
+setting of this variable."
+  :group 'undo-tree
+  :type 'boolean)
+
+
+(defcustom undo-tree-visualizer-lazy-drawing 100
+  "When non-nil, use lazy undo-tree drawing in visualizer.
+
+Setting this to a number causes the visualizer to switch to lazy
+drawing when the number of nodes in the tree is larger than this
+value.
+
+Lazy drawing means that only the visible portion of the tree will
+be drawn initially , and the tree will be extended later as
+needed. For the most part, the only visible effect of this is to
+significantly speed up displaying the visualizer for very large
+trees.
+
+There is one potential negative effect of lazy drawing. Other
+branches of the tree will only be drawn once the node from which
+they branch off becomes visible. So it can happen that certain
+portions of the tree that would be shown with lazy drawing
+disabled, will not be drawn immediately when it is
+enabled. However, this effect is quite rare in practice."
+  :group 'undo-tree
+  :type '(choice (const :tag "never" nil)
+                (const :tag "always" t)
+                (integer :tag "> size")))
+
+
+(defface undo-tree-visualizer-default-face
+  '((((class color)) :foreground "gray"))
+  "Face used to draw undo-tree in visualizer."
+  :group 'undo-tree)
+
+(defface undo-tree-visualizer-current-face
+  '((((class color)) :foreground "red"))
+  "Face used to highlight current undo-tree node in visualizer."
+  :group 'undo-tree)
+
+(defface undo-tree-visualizer-active-branch-face
+  '((((class color) (background dark))
+     (:foreground "white" :weight bold))
+    (((class color) (background light))
+     (:foreground "black" :weight bold)))
+  "Face used to highlight active undo-tree branch in visualizer."
+  :group 'undo-tree)
+
+(defface undo-tree-visualizer-register-face
+  '((((class color)) :foreground "yellow"))
+  "Face used to highlight undo-tree nodes saved to a register
+in visualizer."
+  :group 'undo-tree)
+
+(defface undo-tree-visualizer-unmodified-face
+  '((((class color)) :foreground "cyan"))
+  "Face used to highlight nodes corresponding to unmodified buffers
+in visualizer."
+  :group 'undo-tree)
+
+
+(defvar undo-tree-visualizer-parent-buffer nil
+  "Parent buffer in visualizer.")
+(make-variable-buffer-local 'undo-tree-visualizer-parent-buffer)
+
+;; stores modification time of parent buffer's file, if any
+(defvar undo-tree-visualizer-parent-mtime nil)
+(make-variable-buffer-local 'undo-tree-visualizer-parent-mtime)
+
+;; stores current horizontal spacing needed for drawing undo-tree
+(defvar undo-tree-visualizer-spacing nil)
+(make-variable-buffer-local 'undo-tree-visualizer-spacing)
+
+;; calculate horizontal spacing required for drawing tree with current
+;; settings
+(defsubst undo-tree-visualizer-calculate-spacing ()
+  (if undo-tree-visualizer-timestamps
+      (if undo-tree-visualizer-relative-timestamps 9 13)
+    3))
+
+;; holds node that was current when visualizer was invoked
+(defvar undo-tree-visualizer-initial-node nil)
+(make-variable-buffer-local 'undo-tree-visualizer-initial-node)
+
+;; holds currently selected node in visualizer selection mode
+(defvar undo-tree-visualizer-selected-node nil)
+(make-variable-buffer-local 'undo-tree-visualizer-selected)
+
+;; used to store nodes at edge of currently drawn portion of tree
+(defvar undo-tree-visualizer-needs-extending-down nil)
+(make-variable-buffer-local 'undo-tree-visualizer-needs-extending-down)
+(defvar undo-tree-visualizer-needs-extending-up nil)
+(make-variable-buffer-local 'undo-tree-visualizer-needs-extending-up)
+
+;; dynamically bound to t when undoing from visualizer, to inhibit
+;; `undo-tree-kill-visualizer' hook function in parent buffer
+(defvar undo-tree-inhibit-kill-visualizer nil)
+
+;; can be let-bound to a face name, used in drawing functions
+(defvar undo-tree-insert-face nil)
+
+;; visualizer buffer names
+(defconst undo-tree-visualizer-buffer-name " *undo-tree*")
+(defconst undo-tree-diff-buffer-name "*undo-tree Diff*")
+
+;; prevent debugger being called on "No further redo information"
+(add-to-list 'debug-ignored-errors "^No further redo information")
+(add-to-list 'debug-ignored-errors "^No further redo information for region")
+
+;; install history-auto-save hooks
+(add-hook 'write-file-functions 'undo-tree-save-history-hook)
+(add-hook 'find-file-hook 'undo-tree-load-history-hook)
+
+
+
+\f
+;;; =================================================================
+;;;                          Default keymaps
+
+(defvar undo-tree-map nil
+  "Keymap used in undo-tree-mode.")
+
+(unless undo-tree-map
+  (let ((map (make-sparse-keymap)))
+    ;; remap `undo' and `undo-only' to `undo-tree-undo'
+    (define-key map [remap undo] 'undo-tree-undo)
+    (define-key map [remap undo-only] 'undo-tree-undo)
+    ;; bind standard undo bindings (since these match redo counterparts)
+    (define-key map (kbd "C-/") 'undo-tree-undo)
+    (define-key map "\C-_" 'undo-tree-undo)
+    ;; redo doesn't exist normally, so define our own keybindings
+    (define-key map (kbd "C-?") 'undo-tree-redo)
+    (define-key map (kbd "M-_") 'undo-tree-redo)
+    ;; just in case something has defined `redo'...
+    (define-key map [remap redo] 'undo-tree-redo)
+    ;; we use "C-x u" for the undo-tree visualizer
+    (define-key map (kbd "\C-x u") 'undo-tree-visualize)
+    ;; bind register commands
+    (define-key map (kbd "C-x r u") 'undo-tree-save-state-to-register)
+    (define-key map (kbd "C-x r U") 'undo-tree-restore-state-from-register)
+    ;; set keymap
+    (setq undo-tree-map map)))
+
+
+(defvar undo-tree-visualizer-map nil
+  "Keymap used in undo-tree visualizer.")
+
+(unless undo-tree-visualizer-map
+  (let ((map (make-sparse-keymap)))
+    ;; vertical motion keys undo/redo
+    (define-key map [remap previous-line] 'undo-tree-visualize-undo)
+    (define-key map [remap next-line] 'undo-tree-visualize-redo)
+    (define-key map [up] 'undo-tree-visualize-undo)
+    (define-key map "p" 'undo-tree-visualize-undo)
+    (define-key map "\C-p" 'undo-tree-visualize-undo)
+    (define-key map [down] 'undo-tree-visualize-redo)
+    (define-key map "n" 'undo-tree-visualize-redo)
+    (define-key map "\C-n" 'undo-tree-visualize-redo)
+    ;; horizontal motion keys switch branch
+    (define-key map [remap forward-char]
+      'undo-tree-visualize-switch-branch-right)
+    (define-key map [remap backward-char]
+      'undo-tree-visualize-switch-branch-left)
+    (define-key map [right] 'undo-tree-visualize-switch-branch-right)
+    (define-key map "f" 'undo-tree-visualize-switch-branch-right)
+    (define-key map "\C-f" 'undo-tree-visualize-switch-branch-right)
+    (define-key map [left] 'undo-tree-visualize-switch-branch-left)
+    (define-key map "b" 'undo-tree-visualize-switch-branch-left)
+    (define-key map "\C-b" 'undo-tree-visualize-switch-branch-left)
+    ;; paragraph motion keys undo/redo to significant points in tree
+    (define-key map [remap backward-paragraph] 'undo-tree-visualize-undo-to-x)
+    (define-key map [remap forward-paragraph] 'undo-tree-visualize-redo-to-x)
+    (define-key map "\M-{" 'undo-tree-visualize-undo-to-x)
+    (define-key map "\M-}" 'undo-tree-visualize-redo-to-x)
+    (define-key map [C-down] 'undo-tree-visualize-undo-to-x)
+    (define-key map [C-up] 'undo-tree-visualize-redo-to-x)
+    ;; mouse sets buffer state to node at click
+    (define-key map [mouse-1] 'undo-tree-visualizer-mouse-set)
+    ;; toggle timestamps
+    (define-key map "t" 'undo-tree-visualizer-toggle-timestamps)
+    ;; toggle diff
+    (define-key map "d" 'undo-tree-visualizer-toggle-diff)
+    ;; selection mode
+    (define-key map "s" 'undo-tree-visualizer-selection-mode)
+    ;; horizontal scrolling may be needed if the tree is very wide
+    (define-key map "," 'undo-tree-visualizer-scroll-left)
+    (define-key map "." 'undo-tree-visualizer-scroll-right)
+    (define-key map "<" 'undo-tree-visualizer-scroll-left)
+    (define-key map ">" 'undo-tree-visualizer-scroll-right)
+    ;; vertical scrolling may be needed if the tree is very tall
+    (define-key map [next] 'undo-tree-visualizer-scroll-up)
+    (define-key map [prior] 'undo-tree-visualizer-scroll-down)
+    ;; quit/abort visualizer
+    (define-key map "q" 'undo-tree-visualizer-quit)
+    (define-key map "\C-q" 'undo-tree-visualizer-abort)
+    ;; set keymap
+    (setq undo-tree-visualizer-map map)))
+
+
+(defvar undo-tree-visualizer-selection-map nil
+  "Keymap used in undo-tree visualizer selection mode.")
+
+(unless undo-tree-visualizer-selection-map
+  (let ((map (make-sparse-keymap)))
+    ;; vertical motion keys move up and down tree
+    (define-key map [remap previous-line]
+      'undo-tree-visualizer-select-previous)
+    (define-key map [remap next-line]
+      'undo-tree-visualizer-select-next)
+    (define-key map [up] 'undo-tree-visualizer-select-previous)
+    (define-key map "p" 'undo-tree-visualizer-select-previous)
+    (define-key map "\C-p" 'undo-tree-visualizer-select-previous)
+    (define-key map [down] 'undo-tree-visualizer-select-next)
+    (define-key map "n" 'undo-tree-visualizer-select-next)
+    (define-key map "\C-n" 'undo-tree-visualizer-select-next)
+    ;; vertical scroll keys move up and down quickly
+    (define-key map [next]
+      (lambda () (interactive) (undo-tree-visualizer-select-next 10)))
+    (define-key map [prior]
+      (lambda () (interactive) (undo-tree-visualizer-select-previous 10)))
+    ;; horizontal motion keys move to left and right siblings
+    (define-key map [remap forward-char] 'undo-tree-visualizer-select-right)
+    (define-key map [remap backward-char] 'undo-tree-visualizer-select-left)
+    (define-key map [right] 'undo-tree-visualizer-select-right)
+    (define-key map "f" 'undo-tree-visualizer-select-right)
+    (define-key map "\C-f" 'undo-tree-visualizer-select-right)
+    (define-key map [left] 'undo-tree-visualizer-select-left)
+    (define-key map "b" 'undo-tree-visualizer-select-left)
+    (define-key map "\C-b" 'undo-tree-visualizer-select-left)
+    ;; horizontal scroll keys move left or right quickly
+    (define-key map ","
+      (lambda () (interactive) (undo-tree-visualizer-select-left 10)))
+    (define-key map "."
+      (lambda () (interactive) (undo-tree-visualizer-select-right 10)))
+    (define-key map "<"
+      (lambda () (interactive) (undo-tree-visualizer-select-left 10)))
+    (define-key map ">"
+      (lambda () (interactive) (undo-tree-visualizer-select-right 10)))
+    ;; mouse or <enter> sets buffer state to node at point/click
+    (define-key map "\r" 'undo-tree-visualizer-set)
+    (define-key map [mouse-1] 'undo-tree-visualizer-mouse-set)
+    ;; toggle timestamps
+    (define-key map "t" 'undo-tree-visualizer-toggle-timestamps)
+    ;; toggle diff
+    (define-key map "d" 'undo-tree-visualizer-selection-toggle-diff)
+    ;; quit visualizer selection mode
+    (define-key map "s" 'undo-tree-visualizer-mode)
+    ;; quit visualizer
+    (define-key map "q" 'undo-tree-visualizer-quit)
+    (define-key map "\C-q" 'undo-tree-visualizer-abort)
+    ;; set keymap
+    (setq undo-tree-visualizer-selection-map map)))
+
+
+
+\f
+;;; =====================================================================
+;;;                     Undo-tree data structure
+
+(defstruct
+  (undo-tree
+   :named
+   (:constructor nil)
+   (:constructor make-undo-tree
+                 (&aux
+                  (root (undo-tree-make-node nil nil))
+                  (current root)
+                  (size 0)
+                 (count 0)
+                 (object-pool (make-hash-table :test 'eq :weakness 'value))))
+   ;;(:copier nil)
+   )
+  root current size count object-pool)
+
+
+
+(defstruct
+  (undo-tree-node
+   (:type vector)   ; create unnamed struct
+   (:constructor nil)
+   (:constructor undo-tree-make-node
+                 (previous undo
+                 &optional redo
+                  &aux
+                  (timestamp (current-time))
+                  (branch 0)))
+   (:constructor undo-tree-make-node-backwards
+                 (next-node undo
+                 &optional redo
+                  &aux
+                  (next (list next-node))
+                  (timestamp (current-time))
+                  (branch 0)))
+   (:copier nil))
+  previous next undo redo timestamp branch meta-data)
+
+
+(defmacro undo-tree-node-p (n)
+  (let ((len (length (undo-tree-make-node nil nil))))
+    `(and (vectorp ,n) (= (length ,n) ,len))))
+
+
+
+(defstruct
+  (undo-tree-region-data
+   (:type vector)   ; create unnamed struct
+   (:constructor nil)
+   (:constructor undo-tree-make-region-data
+                (&optional undo-beginning undo-end
+                            redo-beginning redo-end))
+   (:constructor undo-tree-make-undo-region-data
+                (undo-beginning undo-end))
+   (:constructor undo-tree-make-redo-region-data
+                (redo-beginning redo-end))
+   (:copier nil))
+  undo-beginning undo-end redo-beginning redo-end)
+
+
+(defmacro undo-tree-region-data-p (r)
+  (let ((len (length (undo-tree-make-region-data))))
+    `(and (vectorp ,r) (= (length ,r) ,len))))
+
+(defmacro undo-tree-node-clear-region-data (node)
+  `(setf (undo-tree-node-meta-data ,node)
+        (delq nil
+              (delq :region
+                    (plist-put (undo-tree-node-meta-data ,node)
+                               :region nil)))))
+
+
+(defmacro undo-tree-node-undo-beginning (node)
+  `(let ((r (plist-get (undo-tree-node-meta-data ,node) :region)))
+     (when (undo-tree-region-data-p r)
+       (undo-tree-region-data-undo-beginning r))))
+
+(defmacro undo-tree-node-undo-end (node)
+  `(let ((r (plist-get (undo-tree-node-meta-data ,node) :region)))
+     (when (undo-tree-region-data-p r)
+       (undo-tree-region-data-undo-end r))))
+
+(defmacro undo-tree-node-redo-beginning (node)
+  `(let ((r (plist-get (undo-tree-node-meta-data ,node) :region)))
+     (when (undo-tree-region-data-p r)
+       (undo-tree-region-data-redo-beginning r))))
+
+(defmacro undo-tree-node-redo-end (node)
+  `(let ((r (plist-get (undo-tree-node-meta-data ,node) :region)))
+     (when (undo-tree-region-data-p r)
+       (undo-tree-region-data-redo-end r))))
+
+
+(defsetf undo-tree-node-undo-beginning (node) (val)
+  `(let ((r (plist-get (undo-tree-node-meta-data ,node) :region)))
+     (unless (undo-tree-region-data-p r)
+       (setf (undo-tree-node-meta-data ,node)
+            (plist-put (undo-tree-node-meta-data ,node) :region
+                       (setq r (undo-tree-make-region-data)))))
+     (setf (undo-tree-region-data-undo-beginning r) ,val)))
+
+(defsetf undo-tree-node-undo-end (node) (val)
+  `(let ((r (plist-get (undo-tree-node-meta-data ,node) :region)))
+     (unless (undo-tree-region-data-p r)
+       (setf (undo-tree-node-meta-data ,node)
+            (plist-put (undo-tree-node-meta-data ,node) :region
+                       (setq r (undo-tree-make-region-data)))))
+     (setf (undo-tree-region-data-undo-end r) ,val)))
+
+(defsetf undo-tree-node-redo-beginning (node) (val)
+  `(let ((r (plist-get (undo-tree-node-meta-data ,node) :region)))
+     (unless (undo-tree-region-data-p r)
+       (setf (undo-tree-node-meta-data ,node)
+            (plist-put (undo-tree-node-meta-data ,node) :region
+                       (setq r (undo-tree-make-region-data)))))
+     (setf (undo-tree-region-data-redo-beginning r) ,val)))
+
+(defsetf undo-tree-node-redo-end (node) (val)
+  `(let ((r (plist-get (undo-tree-node-meta-data ,node) :region)))
+     (unless (undo-tree-region-data-p r)
+       (setf (undo-tree-node-meta-data ,node)
+            (plist-put (undo-tree-node-meta-data ,node) :region
+                       (setq r (undo-tree-make-region-data)))))
+     (setf (undo-tree-region-data-redo-end r) ,val)))
+
+
+
+(defstruct
+  (undo-tree-visualizer-data
+   (:type vector)   ; create unnamed struct
+   (:constructor nil)
+   (:constructor undo-tree-make-visualizer-data
+                (&optional lwidth cwidth rwidth marker))
+   (:copier nil))
+  lwidth cwidth rwidth marker)
+
+
+(defmacro undo-tree-visualizer-data-p (v)
+  (let ((len (length (undo-tree-make-visualizer-data))))
+    `(and (vectorp ,v) (= (length ,v) ,len))))
+
+(defun undo-tree-node-clear-visualizer-data (node)
+  (let ((plist (undo-tree-node-meta-data node)))
+    (if (eq (car plist) :visualizer)
+       (setf (undo-tree-node-meta-data node) (nthcdr 2 plist))
+      (while (and plist (not (eq (cadr plist) :visualizer)))
+       (setq plist (cdr plist)))
+      (if plist (setcdr plist (nthcdr 3 plist))))))
+
+(defmacro undo-tree-node-lwidth (node)
+  `(let ((v (plist-get (undo-tree-node-meta-data ,node) :visualizer)))
+     (when (undo-tree-visualizer-data-p v)
+       (undo-tree-visualizer-data-lwidth v))))
+
+(defmacro undo-tree-node-cwidth (node)
+  `(let ((v (plist-get (undo-tree-node-meta-data ,node) :visualizer)))
+     (when (undo-tree-visualizer-data-p v)
+       (undo-tree-visualizer-data-cwidth v))))
+
+(defmacro undo-tree-node-rwidth (node)
+  `(let ((v (plist-get (undo-tree-node-meta-data ,node) :visualizer)))
+     (when (undo-tree-visualizer-data-p v)
+       (undo-tree-visualizer-data-rwidth v))))
+
+(defmacro undo-tree-node-marker (node)
+  `(let ((v (plist-get (undo-tree-node-meta-data ,node) :visualizer)))
+     (when (undo-tree-visualizer-data-p v)
+       (undo-tree-visualizer-data-marker v))))
+
+
+(defsetf undo-tree-node-lwidth (node) (val)
+  `(let ((v (plist-get (undo-tree-node-meta-data ,node) :visualizer)))
+     (unless (undo-tree-visualizer-data-p v)
+       (setf (undo-tree-node-meta-data ,node)
+            (plist-put (undo-tree-node-meta-data ,node) :visualizer
+                       (setq v (undo-tree-make-visualizer-data)))))
+     (setf (undo-tree-visualizer-data-lwidth v) ,val)))
+
+(defsetf undo-tree-node-cwidth (node) (val)
+  `(let ((v (plist-get (undo-tree-node-meta-data ,node) :visualizer)))
+     (unless (undo-tree-visualizer-data-p v)
+       (setf (undo-tree-node-meta-data ,node)
+            (plist-put (undo-tree-node-meta-data ,node) :visualizer
+                       (setq v (undo-tree-make-visualizer-data)))))
+     (setf (undo-tree-visualizer-data-cwidth v) ,val)))
+
+(defsetf undo-tree-node-rwidth (node) (val)
+  `(let ((v (plist-get (undo-tree-node-meta-data ,node) :visualizer)))
+     (unless (undo-tree-visualizer-data-p v)
+       (setf (undo-tree-node-meta-data ,node)
+            (plist-put (undo-tree-node-meta-data ,node) :visualizer
+                       (setq v (undo-tree-make-visualizer-data)))))
+     (setf (undo-tree-visualizer-data-rwidth v) ,val)))
+
+(defsetf undo-tree-node-marker (node) (val)
+  `(let ((v (plist-get (undo-tree-node-meta-data ,node) :visualizer)))
+     (unless (undo-tree-visualizer-data-p v)
+       (setf (undo-tree-node-meta-data ,node)
+            (plist-put (undo-tree-node-meta-data ,node) :visualizer
+                       (setq v (undo-tree-make-visualizer-data)))))
+     (setf (undo-tree-visualizer-data-marker v) ,val)))
+
+
+
+(defstruct
+  (undo-tree-register-data
+   (:type vector)
+   (:constructor nil)
+   (:constructor undo-tree-make-register-data (buffer node)))
+  buffer node)
+
+(defun undo-tree-register-data-p (data)
+  (and (vectorp data)
+       (= (length data) 2)
+       (undo-tree-node-p (undo-tree-register-data-node data))))
+
+(defun undo-tree-register-data-print-func (data)
+  (princ (format "an undo-tree state for buffer %s"
+                (undo-tree-register-data-buffer data))))
+
+(defmacro undo-tree-node-register (node)
+  `(plist-get (undo-tree-node-meta-data ,node) :register))
+
+(defsetf undo-tree-node-register (node) (val)
+  `(setf (undo-tree-node-meta-data ,node)
+        (plist-put (undo-tree-node-meta-data ,node) :register ,val)))
+
+
+
+\f
+;;; =====================================================================
+;;;              Basic undo-tree data structure functions
+
+(defun undo-tree-grow (undo)
+  "Add an UNDO node to current branch of `buffer-undo-tree'."
+  (let* ((current (undo-tree-current buffer-undo-tree))
+         (new (undo-tree-make-node current undo)))
+    (push new (undo-tree-node-next current))
+    (setf (undo-tree-current buffer-undo-tree) new)))
+
+
+(defun undo-tree-grow-backwards (node undo &optional redo)
+  "Add new node *above* undo-tree NODE, and return new node.
+Note that this will overwrite NODE's \"previous\" link, so should
+only be used on a detached NODE, never on nodes that are already
+part of `buffer-undo-tree'."
+  (let ((new (undo-tree-make-node-backwards node undo redo)))
+    (setf (undo-tree-node-previous node) new)
+    new))
+
+
+(defun undo-tree-splice-node (node splice)
+  "Splice NODE into undo tree, below node SPLICE.
+Note that this will overwrite NODE's \"next\" and \"previous\"
+links, so should only be used on a detached NODE, never on nodes
+that are already part of `buffer-undo-tree'."
+  (setf (undo-tree-node-next node) (undo-tree-node-next splice)
+       (undo-tree-node-branch node) (undo-tree-node-branch splice)
+       (undo-tree-node-previous node) splice
+       (undo-tree-node-next splice) (list node)
+       (undo-tree-node-branch splice) 0)
+  (dolist (n (undo-tree-node-next node))
+    (setf (undo-tree-node-previous n) node)))
+
+
+(defun undo-tree-snip-node (node)
+  "Snip NODE out of undo tree."
+  (let* ((parent (undo-tree-node-previous node))
+        position p)
+    ;; if NODE is only child, replace parent's next links with NODE's
+    (if (= (length (undo-tree-node-next parent)) 0)
+       (setf (undo-tree-node-next parent) (undo-tree-node-next node)
+             (undo-tree-node-branch parent) (undo-tree-node-branch node))
+      ;; otherwise...
+      (setq position (undo-tree-position node (undo-tree-node-next parent)))
+      (cond
+       ;; if active branch used do go via NODE, set parent's branch to active
+       ;; branch of NODE
+       ((= (undo-tree-node-branch parent) position)
+       (setf (undo-tree-node-branch parent)
+             (+ position (undo-tree-node-branch node))))
+       ;; if active branch didn't go via NODE, update parent's branch to point
+       ;; to same node as before
+       ((> (undo-tree-node-branch parent) position)
+       (incf (undo-tree-node-branch parent)
+             (1- (length (undo-tree-node-next node))))))
+      ;; replace NODE in parent's next list with NODE's entire next list
+      (if (= position 0)
+         (setf (undo-tree-node-next parent)
+               (nconc (undo-tree-node-next node)
+                      (cdr (undo-tree-node-next parent))))
+       (setq p (nthcdr (1- position) (undo-tree-node-next parent)))
+       (setcdr p (nconc (undo-tree-node-next node) (cddr p)))))
+    ;; update previous links of NODE's children
+    (dolist (n (undo-tree-node-next node))
+      (setf (undo-tree-node-previous n) parent))))
+
+
+(defun undo-tree-mapc (--undo-tree-mapc-function-- node)
+  ;; Apply FUNCTION to NODE and to each node below it.
+  (let ((stack (list node))
+       n)
+    (while stack
+      (setq n (pop stack))
+      (funcall --undo-tree-mapc-function-- n)
+      (setq stack (append (undo-tree-node-next n) stack)))))
+
+
+(defmacro undo-tree-num-branches ()
+  "Return number of branches at current undo tree node."
+  '(length (undo-tree-node-next (undo-tree-current buffer-undo-tree))))
+
+
+(defun undo-tree-position (node list)
+  "Find the first occurrence of NODE in LIST.
+Return the index of the matching item, or nil of not found.
+Comparison is done with `eq'."
+  (let ((i 0))
+    (catch 'found
+      (while (progn
+               (when (eq node (car list)) (throw 'found i))
+               (incf i)
+               (setq list (cdr list))))
+      nil)))
+
+
+(defvar *undo-tree-id-counter* 0)
+(make-variable-buffer-local '*undo-tree-id-counter*)
+
+(defmacro undo-tree-generate-id ()
+  ;; Generate a new, unique id (uninterned symbol).
+  ;; The name is made by appending a number to "undo-tree-id".
+  ;; (Copied from CL package `gensym'.)
+  `(let ((num (prog1 *undo-tree-id-counter* (incf *undo-tree-id-counter*))))
+     (make-symbol (format "undo-tree-id%d" num))))
+
+
+(defun undo-tree-decircle (undo-tree)
+  ;; Nullify PREVIOUS links of UNDO-TREE nodes, to make UNDO-TREE data
+  ;; structure non-circular.
+  (undo-tree-mapc
+   (lambda (node)
+     (dolist (n (undo-tree-node-next node))
+       (setf (undo-tree-node-previous n) nil)))
+   (undo-tree-root undo-tree)))
+
+
+(defun undo-tree-recircle (undo-tree)
+  ;; Recreate PREVIOUS links of UNDO-TREE nodes, to restore circular UNDO-TREE
+  ;; data structure.
+  (undo-tree-mapc
+   (lambda (node)
+     (dolist (n (undo-tree-node-next node))
+       (setf (undo-tree-node-previous n) node)))
+   (undo-tree-root undo-tree)))
+
+
+
+\f
+;;; =====================================================================
+;;;             Undo list and undo changeset utility functions
+
+(defmacro undo-list-marker-elt-p (elt)
+  `(markerp (car-safe ,elt)))
+
+(defmacro undo-list-GCd-marker-elt-p (elt)
+  ;; Return t if ELT is a marker element whose marker has been moved to the
+  ;; object-pool, so may potentially have been garbage-collected.
+  ;; Note: Valid marker undo elements should be uniquely identified as cons
+  ;; cells with a symbol in the car (replacing the marker), and a number in
+  ;; the cdr. However, to guard against future changes to undo element
+  ;; formats, we perform an additional redundant check on the symbol name.
+  `(and (car-safe ,elt)
+       (symbolp (car ,elt))
+       (let ((str (symbol-name (car ,elt))))
+         (and (> (length str) 12)
+              (string= (substring str 0 12) "undo-tree-id")))
+       (numberp (cdr-safe ,elt))))
+
+
+(defun undo-tree-move-GC-elts-to-pool (elt)
+  ;; Move elements that can be garbage-collected into `buffer-undo-tree'
+  ;; object pool, substituting a unique id that can be used to retrieve them
+  ;; later. (Only markers require this treatment currently.)
+  (when (undo-list-marker-elt-p elt)
+    (let ((id (undo-tree-generate-id)))
+      (puthash id (car elt) (undo-tree-object-pool buffer-undo-tree))
+      (setcar elt id))))
+
+
+(defun undo-tree-restore-GC-elts-from-pool (elt)
+  ;; Replace object id's in ELT with corresponding objects from
+  ;; `buffer-undo-tree' object pool and return modified ELT, or return nil if
+  ;; any object in ELT has been garbage-collected.
+  (if (undo-list-GCd-marker-elt-p elt)
+      (when (setcar elt (gethash (car elt)
+                                (undo-tree-object-pool buffer-undo-tree)))
+       elt)
+    elt))
+
+
+(defun undo-list-clean-GCd-elts (undo-list)
+  ;; Remove object id's from UNDO-LIST that refer to elements that have been
+  ;; garbage-collected. UNDO-LIST is modified by side-effect.
+  (while (undo-list-GCd-marker-elt-p (car undo-list))
+    (unless (gethash (caar undo-list)
+                    (undo-tree-object-pool buffer-undo-tree))
+      (setq undo-list (cdr undo-list))))
+  (let ((p undo-list))
+    (while (cdr p)
+      (when (and (undo-list-GCd-marker-elt-p (cadr p))
+                (null (gethash (car (cadr p))
+                               (undo-tree-object-pool buffer-undo-tree))))
+       (setcdr p (cddr p)))
+      (setq p (cdr p))))
+  undo-list)
+
+
+(defun undo-list-pop-changeset (&optional discard-pos)
+  ;; Pop changeset from `buffer-undo-list'. If DISCARD-POS is non-nil, discard
+  ;; any position entries from changeset.
+
+  ;; discard undo boundaries and (if DISCARD-POS is non-nil) position entries
+  ;; at head of undo list
+  (while (or (null (car buffer-undo-list))
+            (and discard-pos (integerp (car buffer-undo-list))))
+    (setq buffer-undo-list (cdr buffer-undo-list)))
+  ;; pop elements up to next undo boundary, discarding position entries if
+  ;; DISCARD-POS is non-nil
+  (if (eq (car buffer-undo-list) 'undo-tree-canary)
+      (push nil buffer-undo-list)
+    (let* ((changeset (list (pop buffer-undo-list)))
+           (p changeset))
+      (while (progn
+              (undo-tree-move-GC-elts-to-pool (car p))
+              (while (and discard-pos (integerp (car buffer-undo-list)))
+                (setq buffer-undo-list (cdr buffer-undo-list)))
+              (and (car buffer-undo-list)
+                   (not (eq (car buffer-undo-list) 'undo-tree-canary))))
+        (setcdr p (list (pop buffer-undo-list)))
+       (setq p (cdr p)))
+      changeset)))
+
+
+(defun undo-tree-copy-list (undo-list)
+  ;; Return a deep copy of first changeset in `undo-list'. Object id's are
+  ;; replaced by corresponding objects from `buffer-undo-tree' object-pool.
+  (when undo-list
+    (let (copy p)
+      ;; if first element contains an object id, replace it with object from
+      ;; pool, discarding element entirely if it's been GC'd
+      (while (null copy)
+       (setq copy
+             (undo-tree-restore-GC-elts-from-pool (pop undo-list))))
+      (setq copy (list copy)
+           p copy)
+      ;; copy remaining elements, replacing object id's with objects from
+      ;; pool, or discarding them entirely if they've been GC'd
+      (while undo-list
+       (when (setcdr p (undo-tree-restore-GC-elts-from-pool
+                        (undo-copy-list-1 (pop undo-list))))
+         (setcdr p (list (cdr p)))
+         (setq p (cdr p))))
+      copy)))
+
+
+
+(defun undo-list-transfer-to-tree ()
+  ;; Transfer entries accumulated in `buffer-undo-list' to `buffer-undo-tree'.
+
+  ;; `undo-list-transfer-to-tree' should never be called when undo is disabled
+  ;; (i.e. `buffer-undo-tree' is t)
+  (assert (not (eq buffer-undo-tree t)))
+
+  ;; if `buffer-undo-tree' is empty, create initial undo-tree
+  (when (null buffer-undo-tree) (setq buffer-undo-tree (make-undo-tree)))
+  ;; make sure there's a canary at end of `buffer-undo-list'
+  (when (null buffer-undo-list)
+    (setq buffer-undo-list '(nil undo-tree-canary)))
+
+  (unless (or (eq (cadr buffer-undo-list) 'undo-tree-canary)
+             (eq (car buffer-undo-list) 'undo-tree-canary))
+    ;; create new node from first changeset in `buffer-undo-list', save old
+    ;; `buffer-undo-tree' current node, and make new node the current node
+    (let* ((node (undo-tree-make-node nil (undo-list-pop-changeset)))
+          (splice (undo-tree-current buffer-undo-tree))
+          (size (undo-list-byte-size (undo-tree-node-undo node)))
+          (count 1))
+      (setf (undo-tree-current buffer-undo-tree) node)
+      ;; grow tree fragment backwards using `buffer-undo-list' changesets
+      (while (and buffer-undo-list
+                 (not (eq (cadr buffer-undo-list) 'undo-tree-canary)))
+       (setq node
+             (undo-tree-grow-backwards node (undo-list-pop-changeset)))
+       (incf size (undo-list-byte-size (undo-tree-node-undo node)))
+       (incf count))
+      ;; if no undo history has been discarded from `buffer-undo-list' since
+      ;; last transfer, splice new tree fragment onto end of old
+      ;; `buffer-undo-tree' current node
+      (if (or (eq (cadr buffer-undo-list) 'undo-tree-canary)
+             (eq (car buffer-undo-list) 'undo-tree-canary))
+         (progn
+           (setf (undo-tree-node-previous node) splice)
+           (push node (undo-tree-node-next splice))
+           (setf (undo-tree-node-branch splice) 0)
+           (incf (undo-tree-size buffer-undo-tree) size)
+           (incf (undo-tree-count buffer-undo-tree) count))
+       ;; if undo history has been discarded, replace entire
+       ;; `buffer-undo-tree' with new tree fragment
+       (setq node (undo-tree-grow-backwards node nil))
+       (setf (undo-tree-root buffer-undo-tree) node)
+       (setq buffer-undo-list '(nil undo-tree-canary))
+       (setf (undo-tree-size buffer-undo-tree) size)
+       (setf (undo-tree-count buffer-undo-tree) count)
+       (setq buffer-undo-list '(nil undo-tree-canary))))
+    ;; discard undo history if necessary
+    (undo-tree-discard-history)))
+
+
+(defun undo-list-byte-size (undo-list)
+  ;; Return size (in bytes) of UNDO-LIST
+  (let ((size 0) (p undo-list))
+    (while p
+      (incf size 8)  ; cons cells use up 8 bytes
+      (when (and (consp (car p)) (stringp (caar p)))
+        (incf size (string-bytes (caar p))))
+      (setq p (cdr p)))
+    size))
+
+
+
+(defun undo-list-rebuild-from-tree ()
+  "Rebuild `buffer-undo-list' from information in `buffer-undo-tree'."
+  (unless (eq buffer-undo-list t)
+    (undo-list-transfer-to-tree)
+    (setq buffer-undo-list nil)
+    (when buffer-undo-tree
+      (let ((stack (list (list (undo-tree-root buffer-undo-tree)))))
+       (push (sort (mapcar 'identity (undo-tree-node-next (caar stack)))
+                   (lambda (a b)
+                     (time-less-p (undo-tree-node-timestamp a)
+                                  (undo-tree-node-timestamp b))))
+             stack)
+       ;; Traverse tree in depth-and-oldest-first order, but add undo records
+       ;; on the way down, and redo records on the way up.
+       (while (or (car stack)
+                  (not (eq (car (nth 1 stack))
+                           (undo-tree-current buffer-undo-tree))))
+         (if (car stack)
+             (progn
+               (setq buffer-undo-list
+                     (append (undo-tree-node-undo (caar stack))
+                             buffer-undo-list))
+               (undo-boundary)
+               (push (sort (mapcar 'identity
+                                   (undo-tree-node-next (caar stack)))
+                           (lambda (a b)
+                             (time-less-p (undo-tree-node-timestamp a)
+                                          (undo-tree-node-timestamp b))))
+                     stack))
+           (pop stack)
+           (setq buffer-undo-list
+                 (append (undo-tree-node-redo (caar stack))
+                         buffer-undo-list))
+           (undo-boundary)
+           (pop (car stack))))))))
+
+
+
+\f
+;;; =====================================================================
+;;;                History discarding utility functions
+
+(defun undo-tree-oldest-leaf (node)
+  ;; Return oldest leaf node below NODE.
+  (while (undo-tree-node-next node)
+    (setq node
+          (car (sort (mapcar 'identity (undo-tree-node-next node))
+                     (lambda (a b)
+                       (time-less-p (undo-tree-node-timestamp a)
+                                    (undo-tree-node-timestamp b)))))))
+  node)
+
+
+(defun undo-tree-discard-node (node)
+  ;; Discard NODE from `buffer-undo-tree', and return next in line for
+  ;; discarding.
+
+  ;; don't discard current node
+  (unless (eq node (undo-tree-current buffer-undo-tree))
+
+    ;; discarding root node...
+    (if (eq node (undo-tree-root buffer-undo-tree))
+        (cond
+         ;; should always discard branches before root
+         ((> (length (undo-tree-node-next node)) 1)
+          (error "Trying to discard undo-tree root which still\
+ has multiple branches"))
+         ;; don't discard root if current node is only child
+         ((eq (car (undo-tree-node-next node))
+              (undo-tree-current buffer-undo-tree))
+         nil)
+        ;; discard root
+         (t
+         ;; clear any register referring to root
+         (let ((r (undo-tree-node-register node)))
+           (when (and r (eq (get-register r) node))
+             (set-register r nil)))
+          ;; make child of root into new root
+          (setq node (setf (undo-tree-root buffer-undo-tree)
+                           (car (undo-tree-node-next node))))
+         ;; update undo-tree size
+         (decf (undo-tree-size buffer-undo-tree)
+               (+ (undo-list-byte-size (undo-tree-node-undo node))
+                  (undo-list-byte-size (undo-tree-node-redo node))))
+         (decf (undo-tree-count buffer-undo-tree))
+         ;; discard new root's undo data and PREVIOUS link
+         (setf (undo-tree-node-undo node) nil
+               (undo-tree-node-redo node) nil
+               (undo-tree-node-previous node) nil)
+          ;; if new root has branches, or new root is current node, next node
+          ;; to discard is oldest leaf, otherwise it's new root
+          (if (or (> (length (undo-tree-node-next node)) 1)
+                  (eq (car (undo-tree-node-next node))
+                      (undo-tree-current buffer-undo-tree)))
+              (undo-tree-oldest-leaf node)
+            node)))
+
+      ;; discarding leaf node...
+      (let* ((parent (undo-tree-node-previous node))
+             (current (nth (undo-tree-node-branch parent)
+                           (undo-tree-node-next parent))))
+       ;; clear any register referring to the discarded node
+       (let ((r (undo-tree-node-register node)))
+         (when (and r (eq (get-register r) node))
+           (set-register r nil)))
+       ;; update undo-tree size
+       (decf (undo-tree-size buffer-undo-tree)
+             (+ (undo-list-byte-size (undo-tree-node-undo node))
+                (undo-list-byte-size (undo-tree-node-redo node))))
+       (decf (undo-tree-count buffer-undo-tree))
+       ;; discard leaf
+        (setf (undo-tree-node-next parent)
+                (delq node (undo-tree-node-next parent))
+              (undo-tree-node-branch parent)
+                (undo-tree-position current (undo-tree-node-next parent)))
+        ;; if parent has branches, or parent is current node, next node to
+        ;; discard is oldest leaf, otherwise it's the parent itself
+        (if (or (eq parent (undo-tree-current buffer-undo-tree))
+                (and (undo-tree-node-next parent)
+                     (or (not (eq parent (undo-tree-root buffer-undo-tree)))
+                         (> (length (undo-tree-node-next parent)) 1))))
+            (undo-tree-oldest-leaf parent)
+          parent)))))
+
+
+
+(defun undo-tree-discard-history ()
+  "Discard undo history until we're within memory usage limits
+set by `undo-limit', `undo-strong-limit' and `undo-outer-limit'."
+
+  (when (> (undo-tree-size buffer-undo-tree) undo-limit)
+    ;; if there are no branches off root, first node to discard is root;
+    ;; otherwise it's leaf node at botom of oldest branch
+    (let ((node (if (> (length (undo-tree-node-next
+                                (undo-tree-root buffer-undo-tree))) 1)
+                    (undo-tree-oldest-leaf (undo-tree-root buffer-undo-tree))
+                  (undo-tree-root buffer-undo-tree))))
+
+      ;; discard nodes until memory use is within `undo-strong-limit'
+      (while (and node
+                  (> (undo-tree-size buffer-undo-tree) undo-strong-limit))
+        (setq node (undo-tree-discard-node node)))
+
+      ;; discard nodes until next node to discard would bring memory use
+      ;; within `undo-limit'
+      (while (and node
+                 ;; check first if last discard has brought us within
+                 ;; `undo-limit', in case we can avoid more expensive
+                 ;; `undo-strong-limit' calculation
+                 ;; Note: this assumes undo-strong-limit > undo-limit;
+                 ;;       if not, effectively undo-strong-limit = undo-limit
+                 (> (undo-tree-size buffer-undo-tree) undo-limit)
+                  (> (- (undo-tree-size buffer-undo-tree)
+                       ;; if next node to discard is root, the memory we
+                       ;; free-up comes from discarding changesets from its
+                       ;; only child...
+                       (if (eq node (undo-tree-root buffer-undo-tree))
+                           (+ (undo-list-byte-size
+                               (undo-tree-node-undo
+                                (car (undo-tree-node-next node))))
+                              (undo-list-byte-size
+                               (undo-tree-node-redo
+                                (car (undo-tree-node-next node)))))
+                         ;; ...otherwise, it comes from discarding changesets
+                         ;; from along with the node itself
+                         (+ (undo-list-byte-size (undo-tree-node-undo node))
+                            (undo-list-byte-size (undo-tree-node-redo node)))
+                         ))
+                     undo-limit))
+        (setq node (undo-tree-discard-node node)))
+
+      ;; if we're still over the `undo-outer-limit', discard entire history
+      (when (> (undo-tree-size buffer-undo-tree) undo-outer-limit)
+        ;; query first if `undo-ask-before-discard' is set
+        (if undo-ask-before-discard
+            (when (yes-or-no-p
+                   (format
+                    "Buffer `%s' undo info is %d bytes long;  discard it? "
+                    (buffer-name) (undo-tree-size buffer-undo-tree)))
+              (setq buffer-undo-tree nil))
+          ;; otherwise, discard and display warning
+          (display-warning
+           '(undo discard-info)
+           (concat
+            (format "Buffer `%s' undo info was %d bytes long.\n"
+                    (buffer-name) (undo-tree-size buffer-undo-tree))
+            "The undo info was discarded because it exceeded\
+ `undo-outer-limit'.
+
+This is normal if you executed a command that made a huge change
+to the buffer. In that case, to prevent similar problems in the
+future, set `undo-outer-limit' to a value that is large enough to
+cover the maximum size of normal changes you expect a single
+command to make, but not so large that it might exceed the
+maximum memory allotted to Emacs.
+
+If you did not execute any such command, the situation is
+probably due to a bug and you should report it.
+
+You can disable the popping up of this buffer by adding the entry
+\(undo discard-info) to the user option `warning-suppress-types',
+which is defined in the `warnings' library.\n")
+           :warning)
+          (setq buffer-undo-tree nil)))
+      )))
+
+
+
+\f
+;;; =====================================================================
+;;;                   Visualizer utility functions
+
+(defun undo-tree-compute-widths (node)
+  "Recursively compute widths for nodes below NODE."
+  (let ((stack (list node))
+        res)
+    (while stack
+      ;; try to compute widths for node at top of stack
+      (if (undo-tree-node-p
+           (setq res (undo-tree-node-compute-widths (car stack))))
+          ;; if computation fails, it returns a node whose widths still need
+          ;; computing, which we push onto the stack
+          (push res stack)
+        ;; otherwise, store widths and remove it from stack
+        (setf (undo-tree-node-lwidth (car stack)) (aref res 0)
+              (undo-tree-node-cwidth (car stack)) (aref res 1)
+              (undo-tree-node-rwidth (car stack)) (aref res 2))
+        (pop stack)))))
+
+
+(defun undo-tree-node-compute-widths (node)
+  ;; Compute NODE's left-, centre-, and right-subtree widths. Returns widths
+  ;; (in a vector) if successful. Otherwise, returns a node whose widths need
+  ;; calculating before NODE's can be calculated.
+  (let ((num-children (length (undo-tree-node-next node)))
+        (lwidth 0) (cwidth 0) (rwidth 0) p)
+    (catch 'need-widths
+      (cond
+       ;; leaf nodes have 0 width
+       ((= 0 num-children)
+        (setf cwidth 1
+              (undo-tree-node-lwidth node) 0
+              (undo-tree-node-cwidth node) 1
+              (undo-tree-node-rwidth node) 0))
+
+       ;; odd number of children
+       ((= (mod num-children 2) 1)
+        (setq p (undo-tree-node-next node))
+        ;; compute left-width
+        (dotimes (i (/ num-children 2))
+          (if (undo-tree-node-lwidth (car p))
+              (incf lwidth (+ (undo-tree-node-lwidth (car p))
+                              (undo-tree-node-cwidth (car p))
+                              (undo-tree-node-rwidth (car p))))
+            ;; if child's widths haven't been computed, return that child
+            (throw 'need-widths (car p)))
+          (setq p (cdr p)))
+        (if (undo-tree-node-lwidth (car p))
+            (incf lwidth (undo-tree-node-lwidth (car p)))
+          (throw 'need-widths (car p)))
+        ;; centre-width is inherited from middle child
+        (setf cwidth (undo-tree-node-cwidth (car p)))
+        ;; compute right-width
+        (incf rwidth (undo-tree-node-rwidth (car p)))
+        (setq p (cdr p))
+        (dotimes (i (/ num-children 2))
+          (if (undo-tree-node-lwidth (car p))
+              (incf rwidth (+ (undo-tree-node-lwidth (car p))
+                              (undo-tree-node-cwidth (car p))
+                              (undo-tree-node-rwidth (car p))))
+            (throw 'need-widths (car p)))
+          (setq p (cdr p))))
+
+       ;; even number of children
+       (t
+        (setq p (undo-tree-node-next node))
+        ;; compute left-width
+        (dotimes (i (/ num-children 2))
+          (if (undo-tree-node-lwidth (car p))
+              (incf lwidth (+ (undo-tree-node-lwidth (car p))
+                              (undo-tree-node-cwidth (car p))
+                              (undo-tree-node-rwidth (car p))))
+            (throw 'need-widths (car p)))
+          (setq p (cdr p)))
+        ;; centre-width is 0 when number of children is even
+        (setq cwidth 0)
+        ;; compute right-width
+        (dotimes (i (/ num-children 2))
+          (if (undo-tree-node-lwidth (car p))
+              (incf rwidth (+ (undo-tree-node-lwidth (car p))
+                              (undo-tree-node-cwidth (car p))
+                              (undo-tree-node-rwidth (car p))))
+            (throw 'need-widths (car p)))
+          (setq p (cdr p)))))
+
+      ;; return left-, centre- and right-widths
+      (vector lwidth cwidth rwidth))))
+
+
+(defun undo-tree-clear-visualizer-data (tree)
+  ;; Clear visualizer data below NODE.
+  (undo-tree-mapc
+   (lambda (n) (undo-tree-node-clear-visualizer-data n))
+   (undo-tree-root tree)))
+
+
+(defun undo-tree-node-unmodified-p (node &optional mtime)
+  ;; Return non-nil if NODE corresponds to a buffer state that once upon a
+  ;; time was unmodified. If a file modification time MTIME is specified,
+  ;; return non-nil if the corresponding buffer state really is unmodified.
+  (let (changeset ntime)
+    (setq changeset
+         (or (undo-tree-node-redo node)
+             (and (setq changeset (car (undo-tree-node-next node)))
+                  (undo-tree-node-undo changeset)))
+         ntime
+         (catch 'found
+           (dolist (elt changeset)
+             (when (and (consp elt) (eq (car elt) t) (consp (cdr elt))
+                        (throw 'found (cdr elt)))))))
+    (and ntime
+        (or (null mtime)
+            ;; high-precision timestamps
+            (if (listp (cdr ntime))
+                (equal ntime mtime)
+              ;; old-style timestamps
+              (and (= (car ntime) (car mtime))
+                   (= (cdr ntime) (cadr mtime))))))))
+
+
+
+\f
+;;; =====================================================================
+;;;                  Undo-in-region utility functions
+
+;; `undo-elt-in-region' uses this as a dynamically-scoped variable
+(defvar undo-adjusted-markers nil)
+
+
+(defun undo-tree-pull-undo-in-region-branch (start end)
+  ;; Pull out entries from undo changesets to create a new undo-in-region
+  ;; branch, which undoes changeset entries lying between START and END first,
+  ;; followed by remaining entries from the changesets, before rejoining the
+  ;; existing undo tree history. Repeated calls will, if appropriate, extend
+  ;; the current undo-in-region branch rather than creating a new one.
+
+  ;; if we're just reverting the last redo-in-region, we don't need to
+  ;; manipulate the undo tree at all
+  (if (undo-tree-reverting-redo-in-region-p start end)
+      t  ; return t to indicate success
+
+    ;; We build the `region-changeset' and `delta-list' lists forwards, using
+    ;; pointers `r' and `d' to the penultimate element of the list. So that we
+    ;; don't have to treat the first element differently, we prepend a dummy
+    ;; leading nil to the lists, and have the pointers point to that
+    ;; initially.
+    ;; Note: using '(nil) instead of (list nil) in the `let*' results in
+    ;;       bizarre errors when the code is byte-compiled, where parts of the
+    ;;       lists appear to survive across different calls to this function.
+    ;;       An obscure byte-compiler bug, perhaps?
+    (let* ((region-changeset (list nil))
+          (r region-changeset)
+          (delta-list (list nil))
+          (d delta-list)
+          (node (undo-tree-current buffer-undo-tree))
+          (repeated-undo-in-region
+           (undo-tree-repeated-undo-in-region-p start end))
+          undo-adjusted-markers  ; `undo-elt-in-region' expects this
+          fragment splice original-fragment original-splice original-current
+          got-visible-elt undo-list elt)
+
+      ;; --- initialisation ---
+      (cond
+       ;; if this is a repeated undo in the same region, start pulling changes
+       ;; from NODE at which undo-in-region branch iss attached, and detatch
+       ;; the branch, using it as initial FRAGMENT of branch being constructed
+       (repeated-undo-in-region
+       (setq original-current node
+             fragment (car (undo-tree-node-next node))
+             splice node)
+       ;; undo up to node at which undo-in-region branch is attached
+       ;; (recognizable as first node with more than one branch)
+       (let ((mark-active nil))
+         (while (= (length (undo-tree-node-next node)) 1)
+           (undo-tree-undo-1)
+           (setq fragment node
+                 node (undo-tree-current buffer-undo-tree))))
+       (when (eq splice node) (setq splice nil))
+       ;; detatch undo-in-region branch
+       (setf (undo-tree-node-next node)
+             (delq fragment (undo-tree-node-next node))
+             (undo-tree-node-previous fragment) nil
+             original-fragment fragment
+             original-splice node))
+
+       ;; if this is a new undo-in-region, initial FRAGMENT is a copy of all
+       ;; nodes below the current one in the active branch
+       ((undo-tree-node-next node)
+       (setq fragment (undo-tree-make-node nil nil)
+             splice fragment)
+       (while (setq node (nth (undo-tree-node-branch node)
+                              (undo-tree-node-next node)))
+         (push (undo-tree-make-node
+                splice
+                (undo-copy-list (undo-tree-node-undo node))
+                (undo-copy-list (undo-tree-node-redo node)))
+               (undo-tree-node-next splice))
+         (setq splice (car (undo-tree-node-next splice))))
+       (setq fragment (car (undo-tree-node-next fragment))
+             splice nil
+             node (undo-tree-current buffer-undo-tree))))
+
+
+      ;; --- pull undo-in-region elements into branch ---
+      ;; work backwards up tree, pulling out undo elements within region until
+      ;; we've got one that undoes a visible change (insertion or deletion)
+      (catch 'abort
+       (while (and (not got-visible-elt) node (undo-tree-node-undo node))
+         ;; we cons a dummy nil element on the front of the changeset so that
+         ;; we can conveniently remove the first (real) element from the
+         ;; changeset if we need to; the leading nil is removed once we're
+         ;; done with this changeset
+         (setq undo-list (cons nil (undo-copy-list (undo-tree-node-undo node)))
+               elt (cadr undo-list))
+         (if fragment
+             (progn
+               (setq fragment (undo-tree-grow-backwards fragment undo-list))
+               (unless splice (setq splice fragment)))
+           (setq fragment (undo-tree-make-node nil undo-list))
+           (setq splice fragment))
+
+         (while elt
+           (cond
+            ;; keep elements within region
+            ((undo-elt-in-region elt start end)
+             ;; set flag if kept element is visible (insertion or deletion)
+             (when (and (consp elt)
+                        (or (stringp (car elt)) (integerp (car elt))))
+               (setq got-visible-elt t))
+             ;; adjust buffer positions in elements previously undone before
+             ;; kept element, as kept element will now be undone first
+             (undo-tree-adjust-elements-to-elt splice elt)
+             ;; move kept element to undo-in-region changeset, adjusting its
+             ;; buffer position as it will now be undone first
+             (setcdr r (list (undo-tree-apply-deltas elt (cdr delta-list))))
+             (setq r (cdr r))
+             (setcdr undo-list (cddr undo-list)))
+
+            ;; discard "was unmodified" elements
+            ;; FIXME: deal properly with these
+            ((and (consp elt) (eq (car elt) t))
+             (setcdr undo-list (cddr undo-list)))
+
+            ;; if element crosses region, we can't pull any more elements
+            ((undo-elt-crosses-region elt start end)
+             ;; if we've found a visible element, it must be earlier in
+             ;; current node's changeset; stop pulling elements (null
+             ;; `undo-list' and non-nil `got-visible-elt' cause loop to exit)
+             (if got-visible-elt
+                 (setq undo-list nil)
+               ;; if we haven't found a visible element yet, pulling
+               ;; undo-in-region branch has failed
+               (setq region-changeset nil)
+               (throw 'abort t)))
+
+            ;; if rejecting element, add its delta (if any) to the list
+            (t
+             (let ((delta (undo-delta elt)))
+               (when (/= 0 (cdr delta))
+                 (setcdr d (list delta))
+                 (setq d (cdr d))))
+             (setq undo-list (cdr undo-list))))
+
+           ;; process next element of current changeset
+           (setq elt (cadr undo-list)))
+
+         ;; if there are remaining elements in changeset, remove dummy nil
+         ;; from front
+         (if (cadr (undo-tree-node-undo fragment))
+             (pop (undo-tree-node-undo fragment))
+           ;; otherwise, if we've kept all elements in changeset, discard
+           ;; empty changeset
+           (when (eq splice fragment) (setq splice nil))
+           (setq fragment (car (undo-tree-node-next fragment))))
+         ;; process changeset from next node up the tree
+         (setq node (undo-tree-node-previous node))))
+
+      ;; pop dummy nil from front of `region-changeset'
+      (setq region-changeset (cdr region-changeset))
+
+
+      ;; --- integrate branch into tree ---
+      ;; if no undo-in-region elements were found, restore undo tree
+      (if (null region-changeset)
+         (when original-current
+           (push original-fragment (undo-tree-node-next original-splice))
+           (setf (undo-tree-node-branch original-splice) 0
+                 (undo-tree-node-previous original-fragment) original-splice)
+           (let ((mark-active nil))
+             (while (not (eq (undo-tree-current buffer-undo-tree)
+                             original-current))
+               (undo-tree-redo-1)))
+           nil)  ; return nil to indicate failure
+
+       ;; otherwise...
+       ;; need to undo up to node where new branch will be attached, to
+       ;; ensure redo entries are populated, and then redo back to where we
+       ;; started
+       (let ((mark-active nil)
+             (current (undo-tree-current buffer-undo-tree)))
+         (while (not (eq (undo-tree-current buffer-undo-tree) node))
+           (undo-tree-undo-1))
+         (while (not (eq (undo-tree-current buffer-undo-tree) current))
+           (undo-tree-redo-1)))
+
+       (cond
+        ;; if there's no remaining fragment, just create undo-in-region node
+        ;; and attach it to parent of last node from which elements were
+        ;; pulled
+        ((null fragment)
+         (setq fragment (undo-tree-make-node node region-changeset))
+         (push fragment (undo-tree-node-next node))
+         (setf (undo-tree-node-branch node) 0)
+         ;; set current node to undo-in-region node
+         (setf (undo-tree-current buffer-undo-tree) fragment))
+
+        ;; if no splice point has been set, add undo-in-region node to top of
+        ;; fragment and attach it to parent of last node from which elements
+        ;; were pulled
+        ((null splice)
+         (setq fragment (undo-tree-grow-backwards fragment region-changeset))
+         (push fragment (undo-tree-node-next node))
+         (setf (undo-tree-node-branch node) 0
+               (undo-tree-node-previous fragment) node)
+         ;; set current node to undo-in-region node
+         (setf (undo-tree-current buffer-undo-tree) fragment))
+
+        ;; if fragment contains nodes, attach fragment to parent of last node
+        ;; from which elements were pulled, and splice in undo-in-region node
+        (t
+         (setf (undo-tree-node-previous fragment) node)
+         (push fragment (undo-tree-node-next node))
+         (setf (undo-tree-node-branch node) 0)
+         ;; if this is a repeated undo-in-region, then we've left the current
+         ;; node at the original splice-point; we need to set the current
+         ;; node to the equivalent node on the undo-in-region branch and redo
+         ;; back to where we started
+         (when repeated-undo-in-region
+           (setf (undo-tree-current buffer-undo-tree)
+                 (undo-tree-node-previous original-fragment))
+           (let ((mark-active nil))
+             (while (not (eq (undo-tree-current buffer-undo-tree) splice))
+               (undo-tree-redo-1 nil 'preserve-undo))))
+         ;; splice new undo-in-region node into fragment
+         (setq node (undo-tree-make-node nil region-changeset))
+         (undo-tree-splice-node node splice)
+         ;; set current node to undo-in-region node
+         (setf (undo-tree-current buffer-undo-tree) node)))
+
+       ;; update undo-tree size
+       (setq node (undo-tree-node-previous fragment))
+       (while (progn
+                (and (setq node (car (undo-tree-node-next node)))
+                     (not (eq node original-fragment))
+                     (incf (undo-tree-count buffer-undo-tree))
+                     (incf (undo-tree-size buffer-undo-tree)
+                           (+ (undo-list-byte-size (undo-tree-node-undo node))
+                              (undo-list-byte-size (undo-tree-node-redo node)))))))
+       t)  ; indicate undo-in-region branch was successfully pulled
+      )))
+
+
+
+(defun undo-tree-pull-redo-in-region-branch (start end)
+  ;; Pull out entries from redo changesets to create a new redo-in-region
+  ;; branch, which redoes changeset entries lying between START and END first,
+  ;; followed by remaining entries from the changesets. Repeated calls will,
+  ;; if appropriate, extend the current redo-in-region branch rather than
+  ;; creating a new one.
+
+  ;; if we're just reverting the last undo-in-region, we don't need to
+  ;; manipulate the undo tree at all
+  (if (undo-tree-reverting-undo-in-region-p start end)
+      t  ; return t to indicate success
+
+    ;; We build the `region-changeset' and `delta-list' lists forwards, using
+    ;; pointers `r' and `d' to the penultimate element of the list. So that we
+    ;; don't have to treat the first element differently, we prepend a dummy
+    ;; leading nil to the lists, and have the pointers point to that
+    ;; initially.
+    ;; Note: using '(nil) instead of (list nil) in the `let*' causes bizarre
+    ;;       errors when the code is byte-compiled, where parts of the lists
+    ;;       appear to survive across different calls to this function.  An
+    ;;       obscure byte-compiler bug, perhaps?
+    (let* ((region-changeset (list nil))
+          (r region-changeset)
+          (delta-list (list nil))
+          (d delta-list)
+          (node (undo-tree-current buffer-undo-tree))
+          (repeated-redo-in-region
+           (undo-tree-repeated-redo-in-region-p start end))
+          undo-adjusted-markers  ; `undo-elt-in-region' expects this
+          fragment splice got-visible-elt redo-list elt)
+
+      ;; --- inisitalisation ---
+      (cond
+       ;; if this is a repeated redo-in-region, detach fragment below current
+       ;; node
+       (repeated-redo-in-region
+       (when (setq fragment (car (undo-tree-node-next node)))
+         (setf (undo-tree-node-previous fragment) nil
+               (undo-tree-node-next node)
+               (delq fragment (undo-tree-node-next node)))))
+       ;; if this is a new redo-in-region, initial fragment is a copy of all
+       ;; nodes below the current one in the active branch
+       ((undo-tree-node-next node)
+       (setq fragment (undo-tree-make-node nil nil)
+             splice fragment)
+       (while (setq node (nth (undo-tree-node-branch node)
+                              (undo-tree-node-next node)))
+         (push (undo-tree-make-node
+                splice nil
+                (undo-copy-list (undo-tree-node-redo node)))
+               (undo-tree-node-next splice))
+         (setq splice (car (undo-tree-node-next splice))))
+       (setq fragment (car (undo-tree-node-next fragment)))))
+
+
+      ;; --- pull redo-in-region elements into branch ---
+      ;; work down fragment, pulling out redo elements within region until
+      ;; we've got one that redoes a visible change (insertion or deletion)
+      (setq node fragment)
+      (catch 'abort
+       (while (and (not got-visible-elt) node (undo-tree-node-redo node))
+         ;; we cons a dummy nil element on the front of the changeset so that
+         ;; we can conveniently remove the first (real) element from the
+         ;; changeset if we need to; the leading nil is removed once we're
+         ;; done with this changeset
+         (setq redo-list (push nil (undo-tree-node-redo node))
+               elt (cadr redo-list))
+         (while elt
+           (cond
+            ;; keep elements within region
+            ((undo-elt-in-region elt start end)
+             ;; set flag if kept element is visible (insertion or deletion)
+             (when (and (consp elt)
+                        (or (stringp (car elt)) (integerp (car elt))))
+               (setq got-visible-elt t))
+             ;; adjust buffer positions in elements previously redone before
+             ;; kept element, as kept element will now be redone first
+             (undo-tree-adjust-elements-to-elt fragment elt t)
+             ;; move kept element to redo-in-region changeset, adjusting its
+             ;; buffer position as it will now be redone first
+             (setcdr r (list (undo-tree-apply-deltas elt (cdr delta-list) -1)))
+             (setq r (cdr r))
+             (setcdr redo-list (cddr redo-list)))
+
+            ;; discard "was unmodified" elements
+            ;; FIXME: deal properly with these
+            ((and (consp elt) (eq (car elt) t))
+             (setcdr redo-list (cddr redo-list)))
+
+            ;; if element crosses region, we can't pull any more elements
+            ((undo-elt-crosses-region elt start end)
+             ;; if we've found a visible element, it must be earlier in
+             ;; current node's changeset; stop pulling elements (null
+             ;; `redo-list' and non-nil `got-visible-elt' cause loop to exit)
+             (if got-visible-elt
+                 (setq redo-list nil)
+               ;; if we haven't found a visible element yet, pulling
+               ;; redo-in-region branch has failed
+               (setq region-changeset nil)
+               (throw 'abort t)))
+
+            ;; if rejecting element, add its delta (if any) to the list
+            (t
+             (let ((delta (undo-delta elt)))
+               (when (/= 0 (cdr delta))
+                 (setcdr d (list delta))
+                 (setq d (cdr d))))
+             (setq redo-list (cdr redo-list))))
+
+           ;; process next element of current changeset
+           (setq elt (cadr redo-list)))
+
+         ;; if there are remaining elements in changeset, remove dummy nil
+         ;; from front
+         (if (cadr (undo-tree-node-redo node))
+             (pop (undo-tree-node-undo node))
+           ;; otherwise, if we've kept all elements in changeset, discard
+           ;; empty changeset
+           (if (eq fragment node)
+               (setq fragment (car (undo-tree-node-next fragment)))
+             (undo-tree-snip-node node)))
+         ;; process changeset from next node in fragment
+         (setq node (car (undo-tree-node-next node)))))
+
+      ;; pop dummy nil from front of `region-changeset'
+      (setq region-changeset (cdr region-changeset))
+
+
+      ;; --- integrate branch into tree ---
+      (setq node (undo-tree-current buffer-undo-tree))
+      ;; if no redo-in-region elements were found, restore undo tree
+      (if (null (car region-changeset))
+         (when (and repeated-redo-in-region fragment)
+           (push fragment (undo-tree-node-next node))
+           (setf (undo-tree-node-branch node) 0
+                 (undo-tree-node-previous fragment) node)
+           nil)  ; return nil to indicate failure
+
+       ;; otherwise, add redo-in-region node to top of fragment, and attach
+       ;; it below current node
+       (setq fragment
+             (if fragment
+                 (undo-tree-grow-backwards fragment nil region-changeset)
+               (undo-tree-make-node nil nil region-changeset)))
+       (push fragment (undo-tree-node-next node))
+       (setf (undo-tree-node-branch node) 0
+             (undo-tree-node-previous fragment) node)
+       ;; update undo-tree size
+       (unless repeated-redo-in-region
+         (setq node fragment)
+         (while (and (setq node (car (undo-tree-node-next node)))
+                     (incf (undo-tree-count buffer-undo-tree))
+                     (incf (undo-tree-size buffer-undo-tree)
+                           (undo-list-byte-size
+                            (undo-tree-node-redo node))))))
+       (incf (undo-tree-size buffer-undo-tree)
+             (undo-list-byte-size (undo-tree-node-redo fragment)))
+       t)  ; indicate redo-in-region branch was successfully pulled
+      )))
+
+
+
+(defun undo-tree-adjust-elements-to-elt (node undo-elt &optional below)
+  "Adjust buffer positions of undo elements, starting at NODE's
+and going up the tree (or down the active branch if BELOW is
+non-nil) and through the nodes' undo elements until we reach
+UNDO-ELT.  UNDO-ELT must appear somewhere in the undo changeset
+of either NODE itself or some node above it in the tree."
+  (let ((delta (list (undo-delta undo-elt)))
+       (undo-list (undo-tree-node-undo node)))
+    ;; adjust elements until we reach UNDO-ELT
+    (while (and (car undo-list)
+               (not (eq (car undo-list) undo-elt)))
+      (setcar undo-list
+             (undo-tree-apply-deltas (car undo-list) delta -1))
+      ;; move to next undo element in list, or to next node if we've run out
+      ;; of elements
+      (unless (car (setq undo-list (cdr undo-list)))
+       (if below
+           (setq node (nth (undo-tree-node-branch node)
+                           (undo-tree-node-next node)))
+         (setq node (undo-tree-node-previous node)))
+       (setq undo-list (undo-tree-node-undo node))))))
+
+
+
+(defun undo-tree-apply-deltas (undo-elt deltas &optional sgn)
+  ;; Apply DELTAS in order to UNDO-ELT, multiplying deltas by SGN
+  ;; (only useful value for SGN is -1).
+  (let (position offset)
+    (dolist (delta deltas)
+      (setq position (car delta)
+           offset (* (cdr delta) (or sgn 1)))
+      (cond
+       ;; POSITION
+       ((integerp undo-elt)
+       (when (>= undo-elt position)
+         (setq undo-elt (- undo-elt offset))))
+       ;; nil (or any other atom)
+       ((atom undo-elt))
+       ;; (TEXT . POSITION)
+       ((stringp (car undo-elt))
+       (let ((text-pos (abs (cdr undo-elt)))
+             (point-at-end (< (cdr undo-elt) 0)))
+         (if (>= text-pos position)
+             (setcdr undo-elt (* (if point-at-end -1 1)
+                                 (- text-pos offset))))))
+       ;; (BEGIN . END)
+       ((integerp (car undo-elt))
+       (when (>= (car undo-elt) position)
+         (setcar undo-elt (- (car undo-elt) offset))
+         (setcdr undo-elt (- (cdr undo-elt) offset))))
+       ;; (nil PROPERTY VALUE BEG . END)
+       ((null (car undo-elt))
+       (let ((tail (nthcdr 3 undo-elt)))
+         (when (>= (car tail) position)
+           (setcar tail (- (car tail) offset))
+           (setcdr tail (- (cdr tail) offset)))))
+       ))
+    undo-elt))
+
+
+
+(defun undo-tree-repeated-undo-in-region-p (start end)
+  ;; Return non-nil if undo-in-region between START and END is a repeated
+  ;; undo-in-region
+  (let ((node (undo-tree-current buffer-undo-tree)))
+    (and (setq node
+              (nth (undo-tree-node-branch node) (undo-tree-node-next node)))
+        (eq (undo-tree-node-undo-beginning node) start)
+        (eq (undo-tree-node-undo-end node) end))))
+
+
+(defun undo-tree-repeated-redo-in-region-p (start end)
+  ;; Return non-nil if undo-in-region between START and END is a repeated
+  ;; undo-in-region
+  (let ((node (undo-tree-current buffer-undo-tree)))
+    (and (eq (undo-tree-node-redo-beginning node) start)
+        (eq (undo-tree-node-redo-end node) end))))
+
+
+;; Return non-nil if undo-in-region between START and END is simply
+;; reverting the last redo-in-region
+(defalias 'undo-tree-reverting-undo-in-region-p
+  'undo-tree-repeated-undo-in-region-p)
+
+
+;; Return non-nil if redo-in-region between START and END is simply
+;; reverting the last undo-in-region
+(defalias 'undo-tree-reverting-redo-in-region-p
+  'undo-tree-repeated-redo-in-region-p)
+
+
+
+\f
+;;; =====================================================================
+;;;                        Undo-tree commands
+
+;;;###autoload
+(define-minor-mode undo-tree-mode
+  "Toggle undo-tree mode.
+With no argument, this command toggles the mode.
+A positive prefix argument turns the mode on.
+A negative prefix argument turns it off.
+
+Undo-tree-mode replaces Emacs' standard undo feature with a more
+powerful yet easier to use version, that treats the undo history
+as what it is: a tree.
+
+The following keys are available in `undo-tree-mode':
+
+  \\{undo-tree-map}
+
+Within the undo-tree visualizer, the following keys are available:
+
+  \\{undo-tree-visualizer-map}"
+
+  nil                       ; init value
+  undo-tree-mode-lighter    ; lighter
+  undo-tree-map             ; keymap
+
+  ;; if disabling `undo-tree-mode', rebuild `buffer-undo-list' from tree so
+  ;; Emacs undo can work
+  (if (not undo-tree-mode)
+    (undo-list-rebuild-from-tree)
+    (setq buffer-undo-tree nil)))
+
+
+(defun turn-on-undo-tree-mode (&optional print-message)
+  "Enable `undo-tree-mode' in the current buffer, when appropriate.
+Some major modes implement their own undo system, which should
+not normally be overridden by `undo-tree-mode'. This command does
+not enable `undo-tree-mode' in such buffers. If you want to force
+`undo-tree-mode' to be enabled regardless, use (undo-tree-mode 1)
+instead.
+
+The heuristic used to detect major modes in which
+`undo-tree-mode' should not be used is to check whether either
+the `undo' command has been remapped, or the default undo
+keybindings (C-/ and C-_) have been overridden somewhere other
+than in the global map. In addition, `undo-tree-mode' will not be
+enabled if the buffer's `major-mode' appears in
+`undo-tree-incompatible-major-modes'."
+  (interactive "p")
+  (if (or (key-binding [remap undo])
+         (undo-tree-overridden-undo-bindings-p)
+         (memq major-mode undo-tree-incompatible-major-modes))
+      (when print-message
+       (message "Buffer does not support undo-tree-mode;\
+ undo-tree-mode NOT enabled"))
+    (undo-tree-mode 1)))
+
+
+(defun undo-tree-overridden-undo-bindings-p ()
+  "Returns t if default undo bindings are overridden, nil otherwise.
+Checks if either of the default undo key bindings (\"C-/\" or
+\"C-_\") are overridden in the current buffer by any keymap other
+than the global one. (So global redefinitions of the default undo
+key bindings do not count.)"
+  (let ((binding1 (lookup-key (current-global-map) [?\C-/]))
+       (binding2 (lookup-key (current-global-map) [?\C-_])))
+    (global-set-key [?\C-/] 'undo)
+    (global-set-key [?\C-_] 'undo)
+    (unwind-protect
+       (or (and (key-binding [?\C-/])
+                (not (eq (key-binding [?\C-/]) 'undo)))
+           (and (key-binding [?\C-_])
+                (not (eq (key-binding [?\C-_]) 'undo))))
+      (global-set-key [?\C-/] binding1)
+      (global-set-key [?\C-_] binding2))))
+
+
+;;;###autoload
+(define-globalized-minor-mode global-undo-tree-mode
+  undo-tree-mode turn-on-undo-tree-mode)
+
+
+
+(defun undo-tree-undo (&optional arg)
+  "Undo changes.
+Repeat this command to undo more changes.
+A numeric ARG serves as a repeat count.
+
+In Transient Mark mode when the mark is active, only undo changes
+within the current region. Similarly, when not in Transient Mark
+mode, just \\[universal-argument] as an argument limits undo to
+changes within the current region."
+  (interactive "*P")
+  ;; throw error if undo is disabled in buffer
+  (when (eq buffer-undo-list t) (error "No undo information in this buffer"))
+  (undo-tree-undo-1 arg)
+  ;; inform user if at branch point
+  (when (> (undo-tree-num-branches) 1) (message "Undo branch point!")))
+
+
+(defun undo-tree-undo-1 (&optional arg preserve-redo preserve-timestamps)
+  ;; Internal undo function. An active mark in `transient-mark-mode', or
+  ;; non-nil ARG otherwise, enables undo-in-region. Non-nil PRESERVE-REDO
+  ;; causes the existing redo record to be preserved, rather than replacing it
+  ;; with the new one generated by undoing. Non-nil PRESERVE-TIMESTAMPS
+  ;; disables updating of timestamps in visited undo-tree nodes. (This latter
+  ;; should *only* be used when temporarily visiting another undo state and
+  ;; immediately returning to the original state afterwards. Otherwise, it
+  ;; could cause history-discarding errors.)
+  (let ((undo-in-progress t)
+       (undo-in-region (and undo-tree-enable-undo-in-region
+                            (or (region-active-p)
+                                (and arg (not (numberp arg))))))
+       pos current)
+    ;; transfer entries accumulated in `buffer-undo-list' to
+    ;; `buffer-undo-tree'
+    (undo-list-transfer-to-tree)
+
+    (dotimes (i (or (and (numberp arg) (prefix-numeric-value arg)) 1))
+      ;; check if at top of undo tree
+      (unless (undo-tree-node-previous (undo-tree-current buffer-undo-tree))
+       (error "No further undo information"))
+
+      ;; if region is active, or a non-numeric prefix argument was supplied,
+      ;; try to pull out a new branch of changes affecting the region
+      (when (and undo-in-region
+                (not (undo-tree-pull-undo-in-region-branch
+                      (region-beginning) (region-end))))
+       (error "No further undo information for region"))
+
+      ;; remove any GC'd elements from node's undo list
+      (setq current (undo-tree-current buffer-undo-tree))
+      (decf (undo-tree-size buffer-undo-tree)
+           (undo-list-byte-size (undo-tree-node-undo current)))
+      (setf (undo-tree-node-undo current)
+           (undo-list-clean-GCd-elts (undo-tree-node-undo current)))
+      (incf (undo-tree-size buffer-undo-tree)
+           (undo-list-byte-size (undo-tree-node-undo current)))
+      ;; undo one record from undo tree
+      (when undo-in-region
+       (setq pos (set-marker (make-marker) (point)))
+       (set-marker-insertion-type pos t))
+      (primitive-undo 1 (undo-tree-copy-list (undo-tree-node-undo current)))
+      (undo-boundary)
+
+      ;; if preserving old redo record, discard new redo entries that
+      ;; `primitive-undo' has added to `buffer-undo-list', and remove any GC'd
+      ;; elements from node's redo list
+      (if preserve-redo
+         (progn
+           (undo-list-pop-changeset)
+           (decf (undo-tree-size buffer-undo-tree)
+                 (undo-list-byte-size (undo-tree-node-redo current)))
+           (setf (undo-tree-node-redo current)
+                 (undo-list-clean-GCd-elts (undo-tree-node-redo current)))
+           (incf (undo-tree-size buffer-undo-tree)
+                 (undo-list-byte-size (undo-tree-node-redo current))))
+       ;; otherwise, record redo entries that `primitive-undo' has added to
+       ;; `buffer-undo-list' in current node's redo record, replacing
+       ;; existing entry if one already exists
+       (decf (undo-tree-size buffer-undo-tree)
+             (undo-list-byte-size (undo-tree-node-redo current)))
+       (setf (undo-tree-node-redo current)
+             (undo-list-pop-changeset 'discard-pos))
+       (incf (undo-tree-size buffer-undo-tree)
+             (undo-list-byte-size (undo-tree-node-redo current))))
+
+      ;; rewind current node and update timestamp
+      (setf (undo-tree-current buffer-undo-tree)
+           (undo-tree-node-previous (undo-tree-current buffer-undo-tree)))
+      (unless preserve-timestamps
+       (setf (undo-tree-node-timestamp (undo-tree-current buffer-undo-tree))
+             (current-time)))
+
+      ;; if undoing-in-region, record current node, region and direction so we
+      ;; can tell if undo-in-region is repeated, and re-activate mark if in
+      ;; `transient-mark-mode'; if not, erase any leftover data
+      (if (not undo-in-region)
+         (undo-tree-node-clear-region-data current)
+       (goto-char pos)
+       ;; note: we deliberately want to store the region information in the
+       ;; node *below* the now current one
+       (setf (undo-tree-node-undo-beginning current) (region-beginning)
+             (undo-tree-node-undo-end current) (region-end))
+       (set-marker pos nil)))
+
+    ;; undo deactivates mark unless undoing-in-region
+    (setq deactivate-mark (not undo-in-region))))
+
+
+
+(defun undo-tree-redo (&optional arg)
+  "Redo changes. A numeric ARG serves as a repeat count.
+
+In Transient Mark mode when the mark is active, only redo changes
+within the current region. Similarly, when not in Transient Mark
+mode, just \\[universal-argument] as an argument limits redo to
+changes within the current region."
+  (interactive "*P")
+  ;; throw error if undo is disabled in buffer
+  (when (eq buffer-undo-list t) (error "No undo information in this buffer"))
+  (undo-tree-redo-1 arg)
+  ;; inform user if at branch point
+  (when (> (undo-tree-num-branches) 1) (message "Undo branch point!")))
+
+
+(defun undo-tree-redo-1 (&optional arg preserve-undo preserve-timestamps)
+  ;; Internal redo function. An active mark in `transient-mark-mode', or
+  ;; non-nil ARG otherwise, enables undo-in-region. Non-nil PRESERVE-UNDO
+  ;; causes the existing redo record to be preserved, rather than replacing it
+  ;; with the new one generated by undoing. Non-nil PRESERVE-TIMESTAMPS
+  ;; disables updating of timestamps in visited undo-tree nodes. (This latter
+  ;; should *only* be used when temporarily visiting another undo state and
+  ;; immediately returning to the original state afterwards. Otherwise, it
+  ;; could cause history-discarding errors.)
+  (let ((undo-in-progress t)
+       (redo-in-region (and undo-tree-enable-undo-in-region
+                            (or (region-active-p)
+                                (and arg (not (numberp arg))))))
+       pos current)
+    ;; transfer entries accumulated in `buffer-undo-list' to
+    ;; `buffer-undo-tree'
+    (undo-list-transfer-to-tree)
+
+    (dotimes (i (or (and (numberp arg) (prefix-numeric-value arg)) 1))
+      ;; check if at bottom of undo tree
+      (when (null (undo-tree-node-next (undo-tree-current buffer-undo-tree)))
+       (error "No further redo information"))
+
+      ;; if region is active, or a non-numeric prefix argument was supplied,
+      ;; try to pull out a new branch of changes affecting the region
+      (when (and redo-in-region
+                (not (undo-tree-pull-redo-in-region-branch
+                      (region-beginning) (region-end))))
+       (error "No further redo information for region"))
+
+      ;; get next node (but DON'T advance current node in tree yet, in case
+      ;; redoing fails)
+      (setq current (undo-tree-current buffer-undo-tree)
+           current (nth (undo-tree-node-branch current)
+                        (undo-tree-node-next current)))
+      ;; remove any GC'd elements from node's redo list
+      (decf (undo-tree-size buffer-undo-tree)
+           (undo-list-byte-size (undo-tree-node-redo current)))
+      (setf (undo-tree-node-redo current)
+           (undo-list-clean-GCd-elts (undo-tree-node-redo current)))
+      (incf (undo-tree-size buffer-undo-tree)
+           (undo-list-byte-size (undo-tree-node-redo current)))
+      ;; redo one record from undo tree
+      (when redo-in-region
+       (setq pos (set-marker (make-marker) (point)))
+       (set-marker-insertion-type pos t))
+      (primitive-undo 1 (undo-tree-copy-list (undo-tree-node-redo current)))
+      (undo-boundary)
+      ;; advance current node in tree
+      (setf (undo-tree-current buffer-undo-tree) current)
+
+      ;; if preserving old undo record, discard new undo entries that
+      ;; `primitive-undo' has added to `buffer-undo-list', and remove any GC'd
+      ;; elements from node's redo list
+      (if preserve-undo
+         (progn
+           (undo-list-pop-changeset)
+           (decf (undo-tree-size buffer-undo-tree)
+                 (undo-list-byte-size (undo-tree-node-undo current)))
+           (setf (undo-tree-node-undo current)
+                 (undo-list-clean-GCd-elts (undo-tree-node-undo current)))
+           (incf (undo-tree-size buffer-undo-tree)
+                 (undo-list-byte-size (undo-tree-node-undo current))))
+       ;; otherwise, record undo entries that `primitive-undo' has added to
+       ;; `buffer-undo-list' in current node's undo record, replacing
+       ;; existing entry if one already exists
+       (decf (undo-tree-size buffer-undo-tree)
+             (undo-list-byte-size (undo-tree-node-undo current)))
+       (setf (undo-tree-node-undo current)
+             (undo-list-pop-changeset 'discard-pos))
+       (incf (undo-tree-size buffer-undo-tree)
+             (undo-list-byte-size (undo-tree-node-undo current))))
+
+      ;; update timestamp
+      (unless preserve-timestamps
+       (setf (undo-tree-node-timestamp current) (current-time)))
+
+      ;; if redoing-in-region, record current node, region and direction so we
+      ;; can tell if redo-in-region is repeated, and re-activate mark if in
+      ;; `transient-mark-mode'
+      (if (not redo-in-region)
+         (undo-tree-node-clear-region-data current)
+       (goto-char pos)
+       (setf (undo-tree-node-redo-beginning current) (region-beginning)
+             (undo-tree-node-redo-end current) (region-end))
+       (set-marker pos nil)))
+
+    ;; redo deactivates the mark unless redoing-in-region
+    (setq deactivate-mark (not redo-in-region))))
+
+
+
+(defun undo-tree-switch-branch (branch)
+  "Switch to a different BRANCH of the undo tree.
+This will affect which branch to descend when *redoing* changes
+using `undo-tree-redo'."
+  (interactive (list (or (and prefix-arg (prefix-numeric-value prefix-arg))
+                         (and (not (eq buffer-undo-list t))
+                             (or (undo-list-transfer-to-tree) t)
+                             (let ((b (undo-tree-node-branch
+                                       (undo-tree-current
+                                        buffer-undo-tree))))
+                               (cond
+                                ;; switch to other branch if only 2
+                                ((= (undo-tree-num-branches) 2) (- 1 b))
+                                ;; prompt if more than 2
+                                ((> (undo-tree-num-branches) 2)
+                                 (read-number
+                                  (format "Branch (0-%d, on %d): "
+                                          (1- (undo-tree-num-branches)) b)))
+                                ))))))
+  ;; throw error if undo is disabled in buffer
+  (when (eq buffer-undo-list t) (error "No undo information in this buffer"))
+  ;; sanity check branch number
+  (when (<= (undo-tree-num-branches) 1) (error "Not at undo branch point"))
+  (when (or (< branch 0) (> branch (1- (undo-tree-num-branches))))
+    (error "Invalid branch number"))
+  ;; transfer entries accumulated in `buffer-undo-list' to `buffer-undo-tree'
+  (undo-list-transfer-to-tree)
+  ;; switch branch
+  (setf (undo-tree-node-branch (undo-tree-current buffer-undo-tree))
+       branch)
+  (message "Switched to branch %d" branch))
+
+
+(defun undo-tree-set (node &optional preserve-timestamps)
+  ;; Set buffer to state corresponding to NODE. Returns intersection point
+  ;; between path back from current node and path back from selected NODE.
+  ;; Non-nil PRESERVE-TIMESTAMPS disables updating of timestamps in visited
+  ;; undo-tree nodes. (This should *only* be used when temporarily visiting
+  ;; another undo state and immediately returning to the original state
+  ;; afterwards. Otherwise, it could cause history-discarding errors.)
+  (let ((path (make-hash-table :test 'eq))
+        (n node))
+    (puthash (undo-tree-root buffer-undo-tree) t path)
+    ;; build list of nodes leading back from selected node to root, updating
+    ;; branches as we go to point down to selected node
+    (while (progn
+             (puthash n t path)
+             (when (undo-tree-node-previous n)
+               (setf (undo-tree-node-branch (undo-tree-node-previous n))
+                     (undo-tree-position
+                      n (undo-tree-node-next (undo-tree-node-previous n))))
+               (setq n (undo-tree-node-previous n)))))
+    ;; work backwards from current node until we intersect path back from
+    ;; selected node
+    (setq n (undo-tree-current buffer-undo-tree))
+    (while (not (gethash n path))
+      (setq n (undo-tree-node-previous n)))
+    ;; ascend tree until intersection node
+    (while (not (eq (undo-tree-current buffer-undo-tree) n))
+      (undo-tree-undo-1 nil nil preserve-timestamps))
+    ;; descend tree until selected node
+    (while (not (eq (undo-tree-current buffer-undo-tree) node))
+      (undo-tree-redo-1 nil nil preserve-timestamps))
+    n))  ; return intersection node
+
+
+
+(defun undo-tree-save-state-to-register (register)
+  "Store current undo-tree state to REGISTER.
+The saved state can be restored using
+`undo-tree-restore-state-from-register'.
+Argument is a character, naming the register."
+  (interactive "cUndo-tree state to register: ")
+  ;; throw error if undo is disabled in buffer
+  (when (eq buffer-undo-list t) (error "No undo information in this buffer"))
+  ;; transfer entries accumulated in `buffer-undo-list' to `buffer-undo-tree'
+  (undo-list-transfer-to-tree)
+  ;; save current node to REGISTER
+  (set-register
+   register (registerv-make
+            (undo-tree-make-register-data
+             (current-buffer) (undo-tree-current buffer-undo-tree))
+            :print-func 'undo-tree-register-data-print-func))
+  ;; record REGISTER in current node, for visualizer
+  (setf (undo-tree-node-register (undo-tree-current buffer-undo-tree))
+       register))
+
+
+
+(defun undo-tree-restore-state-from-register (register)
+  "Restore undo-tree state from REGISTER.
+The state must be saved using `undo-tree-save-state-to-register'.
+Argument is a character, naming the register."
+  (interactive "*cRestore undo-tree state from register: ")
+  ;; throw error if undo is disabled in buffer, or if register doesn't contain
+  ;; an undo-tree node
+  (let ((data (registerv-data (get-register register))))
+    (cond
+     ((eq buffer-undo-list t)
+      (error "No undo information in this buffer"))
+     ((not (undo-tree-register-data-p data))
+      (error "Register doesn't contain undo-tree state"))
+     ((not (eq (current-buffer) (undo-tree-register-data-buffer data)))
+      (error "Register contains undo-tree state for a different buffer")))
+    ;; transfer entries accumulated in `buffer-undo-list' to `buffer-undo-tree'
+    (undo-list-transfer-to-tree)
+    ;; restore buffer state corresponding to saved node
+    (undo-tree-set (undo-tree-register-data-node data))))
+
+
+
+\f
+;;; =====================================================================
+;;;                    Persistent storage commands
+
+(defun undo-tree-make-history-save-file-name (file)
+  "Create the undo history file name for FILE.
+Normally this is the file's name with `.' prepended and
+`~undo-tree~' appended.
+
+A match for FILE is sought in `undo-tree-history-directory-alist';
+see the documentation of that variable.  If the directory for the
+backup doesn't exist, it is created."
+  (let* ((backup-directory-alist undo-tree-history-directory-alist)
+        (name (make-backup-file-name-1 file)))
+    (concat (file-name-directory name) "." (file-name-nondirectory name)
+           "~undo-tree~")))
+
+
+(defun undo-tree-save-history (&optional filename overwrite)
+  "Store undo-tree history to file.
+
+If optional argument FILENAME is omitted, default save file is
+\".<buffer-file-name>.~undo-tree\" if buffer is visiting a file.
+Otherwise, prompt for one.
+
+If OVERWRITE is non-nil, any existing file will be overwritten
+without asking for confirmation."
+  (interactive)
+  (when (eq buffer-undo-list t) (error "No undo information in this buffer"))
+  (undo-list-transfer-to-tree)
+  (when (and buffer-undo-tree (not (eq buffer-undo-tree t)))
+    (condition-case nil
+       (undo-tree-kill-visualizer)
+      (error (undo-tree-clear-visualizer-data buffer-undo-tree)))
+    (let ((buff (current-buffer))
+         tree)
+      ;; get filename
+      (unless filename
+       (setq filename
+             (if buffer-file-name
+                 (undo-tree-make-history-save-file-name buffer-file-name)
+               (expand-file-name (read-file-name "File to save in: ") nil))))
+      (when (or (not (file-exists-p filename))
+               overwrite
+               (yes-or-no-p (format "Overwrite \"%s\"? " filename)))
+       (unwind-protect
+           (progn
+             ;; transform undo-tree into non-circular structure, and make
+             ;; temporary copy
+             (undo-tree-decircle buffer-undo-tree)
+             (setq tree (copy-undo-tree buffer-undo-tree))
+             ;; discard undo-tree object pool before saving
+             (setf (undo-tree-object-pool tree) nil)
+             ;; print undo-tree to file
+             ;; NOTE: We use `with-temp-buffer' instead of `with-temp-file'
+             ;;       to allow `auto-compression-mode' to take effect, in
+             ;;       case user has overridden or advised the default
+             ;;       `undo-tree-make-history-save-file-name' to add a
+             ;;       compressed file extension.
+             (with-auto-compression-mode
+               (with-temp-buffer
+                 (prin1 (sha1 buff) (current-buffer))
+                 (terpri (current-buffer))
+                 (let ((print-circle t)) (prin1 tree (current-buffer)))
+                 (write-region nil nil filename))))
+         ;; restore circular undo-tree data structure
+         (undo-tree-recircle buffer-undo-tree))
+       ))))
+
+
+
+(defun undo-tree-load-history (&optional filename noerror)
+  "Load undo-tree history from file.
+
+If optional argument FILENAME is null, default load file is
+\".<buffer-file-name>.~undo-tree\" if buffer is visiting a file.
+Otherwise, prompt for one.
+
+If optional argument NOERROR is non-nil, return nil instead of
+signaling an error if file is not found."
+  (interactive)
+  ;; get filename
+  (unless filename
+    (setq filename
+         (if buffer-file-name
+             (undo-tree-make-history-save-file-name buffer-file-name)
+           (expand-file-name (read-file-name "File to load from: ") nil))))
+
+  ;; attempt to read undo-tree from FILENAME
+  (catch 'load-error
+    (unless (file-exists-p filename)
+      (if noerror
+         (throw 'load-error nil)
+       (error "File \"%s\" does not exist; could not load undo-tree history"
+              filename)))
+    (let (buff hash tree)
+      (setq buff (current-buffer))
+      (with-auto-compression-mode
+       (with-temp-buffer
+         (insert-file-contents filename)
+         (goto-char (point-min))
+         (condition-case nil
+             (setq hash (read (current-buffer)))
+           (error
+            (kill-buffer nil)
+            (funcall (if noerror 'message 'error)
+                     "Error reading undo-tree history from \"%s\"" filename)
+            (throw 'load-error nil)))
+         (unless (string= (sha1 buff) hash)
+           (kill-buffer nil)
+           (funcall (if noerror 'message 'error)
+                    "Buffer has been modified; could not load undo-tree history")
+           (throw 'load-error nil))
+         (condition-case nil
+             (setq tree (read (current-buffer)))
+           (error
+            (kill-buffer nil)
+            (funcall (if noerror 'message 'error)
+                     "Error reading undo-tree history from \"%s\"" filename)
+            (throw 'load-error nil)))
+         (kill-buffer nil)))
+      ;; initialise empty undo-tree object pool
+      (setf (undo-tree-object-pool tree)
+           (make-hash-table :test 'eq :weakness 'value))
+      ;; restore circular undo-tree data structure
+      (undo-tree-recircle tree)
+      (setq buffer-undo-tree tree))))
+
+
+
+;; Versions of save/load functions for use in hooks
+(defun undo-tree-save-history-hook ()
+  (when (and undo-tree-mode undo-tree-auto-save-history
+            (not (eq buffer-undo-list t)))
+    (undo-tree-save-history nil t) nil))
+
+(defun undo-tree-load-history-hook ()
+  (when (and undo-tree-mode undo-tree-auto-save-history
+            (not (eq buffer-undo-list t)))
+    (undo-tree-load-history nil t)))
+
+
+
+\f
+;;; =====================================================================
+;;;                    Visualizer drawing functions
+
+(defun undo-tree-visualize ()
+  "Visualize the current buffer's undo tree."
+  (interactive "*")
+  (deactivate-mark)
+  ;; throw error if undo is disabled in buffer
+  (when (eq buffer-undo-list t) (error "No undo information in this buffer"))
+  ;; transfer entries accumulated in `buffer-undo-list' to `buffer-undo-tree'
+  (undo-list-transfer-to-tree)
+  ;; add hook to kill visualizer buffer if original buffer is changed
+  (add-hook 'before-change-functions 'undo-tree-kill-visualizer nil t)
+  ;; prepare *undo-tree* buffer, then draw tree in it
+  (let ((undo-tree buffer-undo-tree)
+        (buff (current-buffer))
+       (display-buffer-mark-dedicated 'soft))
+    (switch-to-buffer-other-window
+     (get-buffer-create undo-tree-visualizer-buffer-name))
+    (setq undo-tree-visualizer-parent-buffer buff)
+    (setq undo-tree-visualizer-parent-mtime
+         (and (buffer-file-name buff)
+              (nth 5 (file-attributes (buffer-file-name buff)))))
+    (setq buffer-undo-tree undo-tree)
+    (setq undo-tree-visualizer-initial-node (undo-tree-current undo-tree))
+    (setq undo-tree-visualizer-spacing
+         (undo-tree-visualizer-calculate-spacing))
+    (make-local-variable 'undo-tree-visualizer-timestamps)
+    (make-local-variable 'undo-tree-visualizer-diff)
+    (set (make-local-variable 'undo-tree-visualizer-lazy-drawing)
+        (or (eq undo-tree-visualizer-lazy-drawing t)
+            (and (numberp undo-tree-visualizer-lazy-drawing)
+                 (>= (undo-tree-count undo-tree)
+                     undo-tree-visualizer-lazy-drawing))))
+    (when undo-tree-visualizer-diff (undo-tree-visualizer-show-diff))
+    (undo-tree-visualizer-mode)
+    (let ((inhibit-read-only t)) (undo-tree-draw-tree undo-tree))))
+
+
+(defun undo-tree-kill-visualizer (&rest _dummy)
+  ;; Kill visualizer. Added to `before-change-functions' hook of original
+  ;; buffer when visualizer is invoked.
+  (unless undo-tree-inhibit-kill-visualizer
+    (unwind-protect
+       (with-current-buffer undo-tree-visualizer-buffer-name
+         (undo-tree-visualizer-quit)))))
+
+
+
+(defun undo-tree-draw-tree (undo-tree)
+  ;; Draw undo-tree in current buffer starting from NODE (or root if nil).
+  (let ((node (if undo-tree-visualizer-lazy-drawing
+                 (undo-tree-current undo-tree)
+               (undo-tree-root undo-tree))))
+    (erase-buffer)
+    (undo-tree-clear-visualizer-data undo-tree)
+    (undo-tree-compute-widths node)
+    ;; lazy drawing starts vertically centred and displaced horizontally to
+    ;; the left (window-width/4), since trees will typically grow right
+    (if undo-tree-visualizer-lazy-drawing
+       (progn
+         (undo-tree-move-down (/ (window-height) 2))
+         (undo-tree-move-forward (max 2 (/ (window-width) 4)))) ; left margin
+      ;; non-lazy drawing starts in centre at top of buffer
+      (undo-tree-move-down 1)  ; top margin
+      (undo-tree-move-forward
+       (max (/ (window-width) 2)
+           (+ (undo-tree-node-char-lwidth node)
+              ;; add space for left part of left-most time-stamp
+              (if undo-tree-visualizer-timestamps
+                  (/ (- undo-tree-visualizer-spacing 4) 2)
+                0)
+              2))))  ; left margin
+    ;; link starting node to its representation in visualizer
+    (setf (undo-tree-node-marker node) (make-marker))
+    (set-marker-insertion-type (undo-tree-node-marker node) nil)
+    (move-marker (undo-tree-node-marker node) (point))
+    ;; draw undo-tree
+    (let ((undo-tree-insert-face 'undo-tree-visualizer-default-face)
+         node-list)
+      (if (not undo-tree-visualizer-lazy-drawing)
+         (undo-tree-extend-down node t)
+       (undo-tree-extend-down node)
+       (undo-tree-extend-up node)
+       (setq node-list undo-tree-visualizer-needs-extending-down
+             undo-tree-visualizer-needs-extending-down nil)
+       (while node-list (undo-tree-extend-down (pop node-list)))))
+    ;; highlight active branch
+    (let ((undo-tree-insert-face 'undo-tree-visualizer-active-branch-face))
+      (undo-tree-highlight-active-branch
+       (or undo-tree-visualizer-needs-extending-up
+          (undo-tree-root undo-tree))))
+    ;; highlight current node
+    (undo-tree-draw-node (undo-tree-current undo-tree) 'current)))
+
+
+(defun undo-tree-extend-down (node &optional bottom)
+  ;; Extend tree downwards starting from NODE and point. If BOTTOM is t,
+  ;; extend all the way down to the leaves. If BOTTOM is a node, extend down
+  ;; as far as that node. If BOTTOM is an integer, extend down as far as that
+  ;; line. Otherwise, only extend visible portion of tree. NODE is assumed to
+  ;; already have a node marker. Returns non-nil if anything was actually
+  ;; extended.
+  (let ((extended nil)
+       (cur-stack (list node))
+       next-stack)
+    ;; don't bother extending if BOTTOM specifies an already-drawn node
+    (unless (and (undo-tree-node-p bottom) (undo-tree-node-marker bottom))
+      ;; draw nodes layer by layer
+      (while (or cur-stack
+                (prog1 (setq cur-stack next-stack)
+                  (setq next-stack nil)))
+       (setq node (pop cur-stack))
+       ;; if node is within range being drawn...
+       (if (or (eq bottom t)
+               (and (undo-tree-node-p bottom)
+                    (not (eq (undo-tree-node-previous node) bottom)))
+               (and (integerp bottom)
+                    (>= bottom (line-number-at-pos
+                                (undo-tree-node-marker node))))
+               (and (null bottom)
+                    (pos-visible-in-window-p (undo-tree-node-marker node)
+                                             nil t)))
+           ;; ...draw one layer of node's subtree (if not already drawn)
+           (progn
+             (unless (and (undo-tree-node-next node)
+                          (undo-tree-node-marker
+                           (nth (undo-tree-node-branch node)
+                                (undo-tree-node-next node))))
+               (goto-char (undo-tree-node-marker node))
+               (undo-tree-draw-subtree node)
+               (setq extended t))
+             (setq next-stack
+                   (append (undo-tree-node-next node) next-stack)))
+         ;; ...otherwise, postpone drawing until later
+         (push node undo-tree-visualizer-needs-extending-down))))
+    extended))
+
+
+(defun undo-tree-extend-up (node &optional top)
+  ;; Extend tree upwards starting from NODE. If TOP is t, extend all the way
+  ;; to root. If TOP is a node, extend up as far as that node. If TOP is an
+  ;; integer, extend up as far as that line. Otherwise, only extend visible
+  ;; portion of tree. NODE is assumed to already have a node marker. Returns
+  ;; non-nil if anything was actually extended.
+  (let ((extended nil) parent n)
+    ;; don't bother extending if TOP specifies an already-drawn node
+    (unless (and (undo-tree-node-p top) (undo-tree-node-marker top))
+      (while node
+       (setq parent (undo-tree-node-previous node))
+       ;; if we haven't reached root...
+       (if parent
+           ;; ...and node is within range being drawn...
+           (if (or (eq top t)
+                   (and (undo-tree-node-p top) (not (eq node top)))
+                   (and (integerp top)
+                        (< top (line-number-at-pos
+                                (undo-tree-node-marker node))))
+                   (and (null top)
+                        ;; NOTE: check point in case window-start is outdated
+                        (< (min (line-number-at-pos (point))
+                                (line-number-at-pos (window-start)))
+                           (line-number-at-pos
+                            (undo-tree-node-marker node)))))
+               ;; ...and it hasn't already been drawn
+               (when (not (undo-tree-node-marker parent))
+                 ;; link parent node to its representation in visualizer
+                 (undo-tree-compute-widths parent)
+                 (undo-tree-move-to-parent node)
+                 (setf (undo-tree-node-marker parent) (make-marker))
+                 (set-marker-insertion-type
+                  (undo-tree-node-marker parent) nil)
+                 (move-marker (undo-tree-node-marker parent) (point))
+                 ;; draw subtree beneath parent
+                 (setq undo-tree-visualizer-needs-extending-down
+                       (nconc (delq node (undo-tree-draw-subtree parent))
+                              undo-tree-visualizer-needs-extending-down))
+                 (setq extended t))
+             ;; ...otherwise, postpone drawing for later and exit
+             (setq undo-tree-visualizer-needs-extending-up (when parent node)
+                   parent nil))
+
+         ;; if we've reached root, stop extending and add top margin
+         (setq undo-tree-visualizer-needs-extending-up nil)
+         (goto-char (undo-tree-node-marker node))
+         (undo-tree-move-up 1)  ; top margin
+         (delete-region (point-min) (line-beginning-position)))
+       ;; next iteration
+       (setq node parent)))
+    extended))
+
+
+(defun undo-tree-expand-down (from &optional to)
+  ;; Expand tree downwards. FROM is the node to start expanding from. Stop
+  ;; expanding at TO if specified. Otherwise, just expand visible portion of
+  ;; tree and highlight active branch from FROM.
+  (when undo-tree-visualizer-needs-extending-down
+    (let ((inhibit-read-only t)
+         node-list extended)
+      ;; extend down as far as TO node
+      (when to
+       (setq extended (undo-tree-extend-down from to))
+       (goto-char (undo-tree-node-marker to))
+       (redisplay t))  ; force redisplay to scroll buffer if necessary
+      ;; extend visible portion of tree downwards
+      (setq node-list undo-tree-visualizer-needs-extending-down
+           undo-tree-visualizer-needs-extending-down nil)
+      (when node-list
+       (dolist (n node-list)
+         (when (undo-tree-extend-down n) (setq extended t)))
+       ;; highlight active branch in newly-extended-down portion, if any
+       (when extended
+         (let ((undo-tree-insert-face
+                'undo-tree-visualizer-active-branch-face))
+           (undo-tree-highlight-active-branch from)))))))
+
+
+(defun undo-tree-expand-up (from &optional to)
+  ;; Expand tree upwards. FROM is the node to start expanding from, TO is the
+  ;; node to stop expanding at. If TO node isn't specified, just expand visible
+  ;; portion of tree and highlight active branch down to FROM.
+  (when undo-tree-visualizer-needs-extending-up
+    (let ((inhibit-read-only t)
+         extended node-list)
+      ;; extend up as far as TO node
+      (when to
+       (setq extended (undo-tree-extend-up from to))
+       (goto-char (undo-tree-node-marker to))
+       ;; simulate auto-scrolling if close to top of buffer
+       (when (<= (line-number-at-pos (point)) scroll-margin)
+         (undo-tree-move-up (if (= scroll-conservatively 0)
+                                (/ (window-height) 2) 3))
+         (when (undo-tree-extend-up to) (setq extended t))
+         (goto-char (undo-tree-node-marker to))
+         (unless (= scroll-conservatively 0) (recenter scroll-margin))))
+      ;; extend visible portion of tree upwards
+      (and undo-tree-visualizer-needs-extending-up
+          (undo-tree-extend-up undo-tree-visualizer-needs-extending-up)
+          (setq extended t))
+      ;; extend visible portion of tree downwards
+      (setq node-list undo-tree-visualizer-needs-extending-down
+           undo-tree-visualizer-needs-extending-down nil)
+      (dolist (n node-list) (undo-tree-extend-down n))
+      ;; highlight active branch in newly-extended-up portion, if any
+      (when extended
+       (let ((undo-tree-insert-face
+              'undo-tree-visualizer-active-branch-face))
+         (undo-tree-highlight-active-branch
+          (or undo-tree-visualizer-needs-extending-up
+              (undo-tree-root buffer-undo-tree))
+          from))))))
+
+
+
+(defun undo-tree-highlight-active-branch (node &optional end)
+  ;; Draw highlighted active branch below NODE in current buffer. Stop
+  ;; highlighting at END node if specified.
+  (let ((stack (list node)))
+    ;; draw active branch
+    (while stack
+      (setq node (pop stack))
+      (unless (or (eq node end)
+                 (memq node undo-tree-visualizer-needs-extending-down))
+       (goto-char (undo-tree-node-marker node))
+       (setq node (undo-tree-draw-subtree node 'active)
+             stack (nconc stack node))))))
+
+
+(defun undo-tree-draw-node (node &optional current)
+  ;; Draw symbol representing NODE in visualizer. If CURRENT is non-nil, node
+  ;; is current node.
+  (goto-char (undo-tree-node-marker node))
+  (when undo-tree-visualizer-timestamps
+    (undo-tree-move-backward (/ undo-tree-visualizer-spacing 2)))
+
+  (let* ((undo-tree-insert-face (and undo-tree-insert-face
+                                    (or (and (consp undo-tree-insert-face)
+                                             undo-tree-insert-face)
+                                        (list undo-tree-insert-face))))
+        (register (undo-tree-node-register node))
+        (unmodified (if undo-tree-visualizer-parent-mtime
+                        (undo-tree-node-unmodified-p
+                         node undo-tree-visualizer-parent-mtime)
+                      (undo-tree-node-unmodified-p node)))
+       node-string)
+    ;; check node's register (if any) still stores appropriate undo-tree state
+    (unless (and register
+                (undo-tree-register-data-p
+                 (registerv-data (get-register register)))
+                (eq node (undo-tree-register-data-node
+                          (registerv-data (get-register register)))))
+      (setq register nil))
+    ;; represent node by different symbols, depending on whether it's the
+    ;; current node, is saved in a register, or corresponds to an unmodified
+    ;; buffer
+    (setq node-string
+           (cond
+            (undo-tree-visualizer-timestamps
+               (undo-tree-timestamp-to-string
+                (undo-tree-node-timestamp node)
+                undo-tree-visualizer-relative-timestamps
+                current register))
+            (register (char-to-string register))
+            (unmodified "s")
+            (current "x")
+            (t "o"))
+         undo-tree-insert-face
+           (nconc
+            (cond
+             (current    '(undo-tree-visualizer-current-face))
+             (unmodified '(undo-tree-visualizer-unmodified-face))
+             (register   '(undo-tree-visualizer-register-face)))
+            undo-tree-insert-face))
+    ;; draw node and link it to its representation in visualizer
+    (undo-tree-insert node-string)
+    (undo-tree-move-backward (if undo-tree-visualizer-timestamps
+                                (1+ (/ undo-tree-visualizer-spacing 2))
+                              1))
+    (move-marker (undo-tree-node-marker node) (point))
+    (put-text-property (point) (1+ (point)) 'undo-tree-node node)))
+
+
+(defun undo-tree-draw-subtree (node &optional active-branch)
+  ;; Draw subtree rooted at NODE. The subtree will start from point.
+  ;; If ACTIVE-BRANCH is non-nil, just draw active branch below NODE. Returns
+  ;; list of nodes below NODE.
+  (let ((num-children (length (undo-tree-node-next node)))
+        node-list pos trunk-pos n)
+    ;; draw node itself
+    (undo-tree-draw-node node)
+
+    (cond
+     ;; if we're at a leaf node, we're done
+     ((= num-children 0))
+
+     ;; if node has only one child, draw it (not strictly necessary to deal
+     ;; with this case separately, but as it's by far the most common case
+     ;; this makes the code clearer and more efficient)
+     ((= num-children 1)
+      (undo-tree-move-down 1)
+      (undo-tree-insert ?|)
+      (undo-tree-move-backward 1)
+      (undo-tree-move-down 1)
+      (undo-tree-insert ?|)
+      (undo-tree-move-backward 1)
+      (undo-tree-move-down 1)
+      (setq n (car (undo-tree-node-next node)))
+      ;; link next node to its representation in visualizer
+      (unless (markerp (undo-tree-node-marker n))
+        (setf (undo-tree-node-marker n) (make-marker))
+        (set-marker-insertion-type (undo-tree-node-marker n) nil))
+      (move-marker (undo-tree-node-marker n) (point))
+      ;; add next node to list of nodes to draw next
+      (push n node-list))
+
+     ;; if node has multiple children, draw branches
+     (t
+      (undo-tree-move-down 1)
+      (undo-tree-insert ?|)
+      (undo-tree-move-backward 1)
+      (move-marker (setq trunk-pos (make-marker)) (point))
+      ;; left subtrees
+      (undo-tree-move-backward
+       (- (undo-tree-node-char-lwidth node)
+          (undo-tree-node-char-lwidth
+           (car (undo-tree-node-next node)))))
+      (move-marker (setq pos (make-marker)) (point))
+      (setq n (cons nil (undo-tree-node-next node)))
+      (dotimes (i (/ num-children 2))
+        (setq n (cdr n))
+        (when (or (null active-branch)
+                  (eq (car n)
+                      (nth (undo-tree-node-branch node)
+                           (undo-tree-node-next node))))
+          (undo-tree-move-forward 2)
+          (undo-tree-insert ?_ (- trunk-pos pos 2))
+          (goto-char pos)
+          (undo-tree-move-forward 1)
+          (undo-tree-move-down 1)
+          (undo-tree-insert ?/)
+          (undo-tree-move-backward 2)
+          (undo-tree-move-down 1)
+          ;; link node to its representation in visualizer
+          (unless (markerp (undo-tree-node-marker (car n)))
+            (setf (undo-tree-node-marker (car n)) (make-marker))
+            (set-marker-insertion-type (undo-tree-node-marker (car n)) nil))
+          (move-marker (undo-tree-node-marker (car n)) (point))
+          ;; add node to list of nodes to draw next
+          (push (car n) node-list))
+        (goto-char pos)
+        (undo-tree-move-forward
+         (+ (undo-tree-node-char-rwidth (car n))
+            (undo-tree-node-char-lwidth (cadr n))
+            undo-tree-visualizer-spacing 1))
+        (move-marker pos (point)))
+      ;; middle subtree (only when number of children is odd)
+      (when (= (mod num-children 2) 1)
+        (setq n (cdr n))
+        (when (or (null active-branch)
+                  (eq (car n)
+                      (nth (undo-tree-node-branch node)
+                           (undo-tree-node-next node))))
+          (undo-tree-move-down 1)
+          (undo-tree-insert ?|)
+          (undo-tree-move-backward 1)
+          (undo-tree-move-down 1)
+          ;; link node to its representation in visualizer
+          (unless (markerp (undo-tree-node-marker (car n)))
+            (setf (undo-tree-node-marker (car n)) (make-marker))
+            (set-marker-insertion-type (undo-tree-node-marker (car n)) nil))
+          (move-marker (undo-tree-node-marker (car n)) (point))
+          ;; add node to list of nodes to draw next
+          (push (car n) node-list))
+        (goto-char pos)
+        (undo-tree-move-forward
+         (+ (undo-tree-node-char-rwidth (car n))
+            (if (cadr n) (undo-tree-node-char-lwidth (cadr n)) 0)
+            undo-tree-visualizer-spacing 1))
+        (move-marker pos (point)))
+      ;; right subtrees
+      (move-marker trunk-pos (1+ trunk-pos))
+      (dotimes (i (/ num-children 2))
+        (setq n (cdr n))
+        (when (or (null active-branch)
+                  (eq (car n)
+                      (nth (undo-tree-node-branch node)
+                           (undo-tree-node-next node))))
+          (goto-char trunk-pos)
+          (undo-tree-insert ?_ (- pos trunk-pos 1))
+          (goto-char pos)
+          (undo-tree-move-backward 1)
+          (undo-tree-move-down 1)
+          (undo-tree-insert ?\\)
+          (undo-tree-move-down 1)
+          ;; link node to its representation in visualizer
+          (unless (markerp (undo-tree-node-marker (car n)))
+            (setf (undo-tree-node-marker (car n)) (make-marker))
+            (set-marker-insertion-type (undo-tree-node-marker (car n)) nil))
+          (move-marker (undo-tree-node-marker (car n)) (point))
+          ;; add node to list of nodes to draw next
+          (push (car n) node-list))
+        (when (cdr n)
+          (goto-char pos)
+          (undo-tree-move-forward
+           (+ (undo-tree-node-char-rwidth (car n))
+              (if (cadr n) (undo-tree-node-char-lwidth (cadr n)) 0)
+              undo-tree-visualizer-spacing 1))
+          (move-marker pos (point))))
+      ))
+    ;; return list of nodes to draw next
+    (nreverse node-list)))
+
+
+(defun undo-tree-node-char-lwidth (node)
+  ;; Return left-width of NODE measured in characters.
+  (if (= (length (undo-tree-node-next node)) 0) 0
+    (- (* (+ undo-tree-visualizer-spacing 1) (undo-tree-node-lwidth node))
+       (if (= (undo-tree-node-cwidth node) 0)
+           (1+ (/ undo-tree-visualizer-spacing 2)) 0))))
+
+
+(defun undo-tree-node-char-rwidth (node)
+  ;; Return right-width of NODE measured in characters.
+  (if (= (length (undo-tree-node-next node)) 0) 0
+    (- (* (+ undo-tree-visualizer-spacing 1) (undo-tree-node-rwidth node))
+       (if (= (undo-tree-node-cwidth node) 0)
+           (1+ (/ undo-tree-visualizer-spacing 2)) 0))))
+
+
+(defun undo-tree-insert (str &optional arg)
+  ;; Insert character or string STR ARG times, overwriting, and using
+  ;; `undo-tree-insert-face'.
+  (unless arg (setq arg 1))
+  (when (characterp str)
+    (setq str (make-string arg str))
+    (setq arg 1))
+  (dotimes (i arg) (insert str))
+  (setq arg (* arg (length str)))
+  (undo-tree-move-forward arg)
+  ;; make sure mark isn't active, otherwise `backward-delete-char' might
+  ;; delete region instead of single char if transient-mark-mode is enabled
+  (setq mark-active nil)
+  (backward-delete-char arg)
+  (when undo-tree-insert-face
+    (put-text-property (- (point) arg) (point) 'face undo-tree-insert-face)))
+
+
+(defun undo-tree-move-down (&optional arg)
+  ;; Move down, extending buffer if necessary.
+  (let ((row (line-number-at-pos))
+        (col (current-column))
+        line)
+    (unless arg (setq arg 1))
+    (forward-line arg)
+    (setq line (line-number-at-pos))
+    ;; if buffer doesn't have enough lines, add some
+    (when (/= line (+ row arg))
+      (cond
+       ((< arg 0)
+       (insert (make-string (- line row arg) ?\n))
+       (forward-line (+ arg (- row line))))
+       (t (insert (make-string (- arg (- line row)) ?\n)))))
+    (undo-tree-move-forward col)))
+
+
+(defun undo-tree-move-up (&optional arg)
+  ;; Move up, extending buffer if necessary.
+  (unless arg (setq arg 1))
+  (undo-tree-move-down (- arg)))
+
+
+(defun undo-tree-move-forward (&optional arg)
+  ;; Move forward, extending buffer if necessary.
+  (unless arg (setq arg 1))
+  (let (n)
+    (cond
+     ((>= arg 0)
+      (setq n (- (line-end-position) (point)))
+      (if (> n arg)
+         (forward-char arg)
+       (end-of-line)
+       (insert (make-string (- arg n) ? ))))
+     ((< arg 0)
+      (setq arg (- arg))
+      (setq n (- (point) (line-beginning-position)))
+      (when (< (- n 2) arg)  ; -2 to create left-margin
+       ;; no space left - shift entire buffer contents right!
+       (let ((pos (move-marker (make-marker) (point))))
+         (set-marker-insertion-type pos t)
+         (goto-char (point-min))
+         (while (not (eobp))
+           (insert-before-markers (make-string (- arg -2 n) ? ))
+           (forward-line 1))
+         (goto-char pos)))
+      (backward-char arg)))))
+
+
+(defun undo-tree-move-backward (&optional arg)
+  ;; Move backward, extending buffer if necessary.
+  (unless arg (setq arg 1))
+  (undo-tree-move-forward (- arg)))
+
+
+(defun undo-tree-move-to-parent (node)
+  ;; Move to position of parent of NODE, extending buffer if necessary.
+  (let* ((parent (undo-tree-node-previous node))
+        (n (undo-tree-node-next parent))
+        (l (length n)) p)
+    (goto-char (undo-tree-node-marker node))
+    (unless (= l 1)
+      ;; move horizontally
+      (setq p (undo-tree-position node n))
+      (cond
+       ;; node in centre subtree: no horizontal movement
+       ((and (= (mod l 2) 1) (= p (/ l 2))))
+       ;; node in left subtree: move right
+       ((< p (/ l 2))
+       (setq n (nthcdr p n))
+       (undo-tree-move-forward
+        (+ (undo-tree-node-char-rwidth (car n))
+           (/ undo-tree-visualizer-spacing 2) 1))
+       (dotimes (i (- (/ l 2) p 1))
+         (setq n (cdr n))
+         (undo-tree-move-forward
+          (+ (undo-tree-node-char-lwidth (car n))
+             (undo-tree-node-char-rwidth (car n))
+             undo-tree-visualizer-spacing 1)))
+       (when (= (mod l 2) 1)
+         (setq n (cdr n))
+         (undo-tree-move-forward
+          (+ (undo-tree-node-char-lwidth (car n))
+             (/ undo-tree-visualizer-spacing 2) 1))))
+       (t ;; node in right subtree: move left
+       (setq n (nthcdr (/ l 2) n))
+       (when (= (mod l 2) 1)
+         (undo-tree-move-backward
+          (+ (undo-tree-node-char-rwidth (car n))
+             (/ undo-tree-visualizer-spacing 2) 1))
+         (setq n (cdr n)))
+       (dotimes (i (- p (/ l 2) (mod l 2)))
+         (undo-tree-move-backward
+          (+ (undo-tree-node-char-lwidth (car n))
+             (undo-tree-node-char-rwidth (car n))
+             undo-tree-visualizer-spacing 1))
+         (setq n (cdr n)))
+       (undo-tree-move-backward
+        (+ (undo-tree-node-char-lwidth (car n))
+           (/ undo-tree-visualizer-spacing 2) 1)))))
+    ;; move vertically
+    (undo-tree-move-up 3)))
+
+
+(defun undo-tree-timestamp-to-string
+  (timestamp &optional relative current register)
+  ;; Convert TIMESTAMP to string (either absolute or RELATVE time), indicating
+  ;; if it's the CURRENT node and/or has an associated REGISTER.
+  (if relative
+      ;; relative time
+      (let ((time (floor (float-time
+                         (subtract-time (current-time) timestamp))))
+           n)
+       (setq time
+             ;; years
+             (if (> (setq n (/ time 315360000)) 0)
+                 (if (> n 999) "-ages" (format "-%dy" n))
+               (setq time (% time 315360000))
+               ;; days
+               (if (> (setq n (/ time 86400)) 0)
+                   (format "-%dd" n)
+                 (setq time (% time 86400))
+                 ;; hours
+                 (if (> (setq n (/ time 3600)) 0)
+                     (format "-%dh" n)
+                   (setq time (% time 3600))
+                   ;; mins
+                   (if (> (setq n (/ time 60)) 0)
+                       (format "-%dm" n)
+                     ;; secs
+                     (format "-%ds" (% time 60)))))))
+       (setq time (concat
+                   (if current "*" " ")
+                   time
+                   (if register (concat "[" (char-to-string register) "]")
+                     "   ")))
+       (setq n (length time))
+       (if (< n 9)
+           (concat (make-string (- 9 n) ? ) time)
+         time))
+    ;; absolute time
+    (concat (if current "*" " ")
+           (format-time-string "%H:%M:%S" timestamp)
+           (if register
+               (concat "[" (char-to-string register) "]")
+             "   "))))
+
+
+
+\f
+;;; =====================================================================
+;;;                        Visualizer commands
+
+(defun undo-tree-visualizer-mode ()
+  "Major mode used in undo-tree visualizer.
+
+The undo-tree visualizer can only be invoked from a buffer in
+which `undo-tree-mode' is enabled. The visualizer displays the
+undo history tree graphically, and allows you to browse around
+the undo history, undoing or redoing the corresponding changes in
+the parent buffer.
+
+Within the undo-tree visualizer, the following keys are available:
+
+  \\{undo-tree-visualizer-map}"
+  (interactive)
+  (setq major-mode 'undo-tree-visualizer-mode)
+  (setq mode-name "undo-tree-visualizer-mode")
+  (use-local-map undo-tree-visualizer-map)
+  (setq truncate-lines t)
+  (setq cursor-type nil)
+  (setq buffer-read-only t)
+  (setq undo-tree-visualizer-selected-node nil)
+  (when undo-tree-visualizer-diff (undo-tree-visualizer-update-diff)))
+
+
+
+(defun undo-tree-visualize-undo (&optional arg)
+  "Undo changes. A numeric ARG serves as a repeat count."
+  (interactive "p")
+  (let ((old (undo-tree-current buffer-undo-tree))
+       current)
+    ;; unhighlight old current node
+    (let ((undo-tree-insert-face 'undo-tree-visualizer-active-branch-face)
+         (inhibit-read-only t))
+      (undo-tree-draw-node old))
+    ;; undo in parent buffer
+    (switch-to-buffer-other-window undo-tree-visualizer-parent-buffer)
+    (deactivate-mark)
+    (unwind-protect
+       (let ((undo-tree-inhibit-kill-visualizer t)) (undo-tree-undo-1 arg))
+      (setq current (undo-tree-current buffer-undo-tree))
+      (switch-to-buffer-other-window undo-tree-visualizer-buffer-name)
+      ;; when using lazy drawing, extend tree upwards as required
+      (when undo-tree-visualizer-lazy-drawing
+       (undo-tree-expand-up old current))
+      ;; highlight new current node
+      (let ((inhibit-read-only t)) (undo-tree-draw-node current 'current))
+      ;; update diff display, if any
+      (when undo-tree-visualizer-diff (undo-tree-visualizer-update-diff)))))
+
+
+(defun undo-tree-visualize-redo (&optional arg)
+  "Redo changes. A numeric ARG serves as a repeat count."
+  (interactive "p")
+  (let ((old (undo-tree-current buffer-undo-tree))
+       current)
+    ;; unhighlight old current node
+    (let ((undo-tree-insert-face 'undo-tree-visualizer-active-branch-face)
+         (inhibit-read-only t))
+      (undo-tree-draw-node (undo-tree-current buffer-undo-tree)))
+    ;; redo in parent buffer
+    (switch-to-buffer-other-window undo-tree-visualizer-parent-buffer)
+    (deactivate-mark)
+    (unwind-protect
+       (let ((undo-tree-inhibit-kill-visualizer t)) (undo-tree-redo-1 arg))
+      (setq current (undo-tree-current buffer-undo-tree))
+      (switch-to-buffer-other-window undo-tree-visualizer-buffer-name)
+      ;; when using lazy drawing, extend tree downwards as required
+      (when undo-tree-visualizer-lazy-drawing
+       (undo-tree-expand-down old current))
+      ;; highlight new current node
+      (let ((inhibit-read-only t)) (undo-tree-draw-node current 'current))
+      ;; update diff display, if any
+      (when undo-tree-visualizer-diff (undo-tree-visualizer-update-diff)))))
+
+
+(defun undo-tree-visualize-switch-branch-right (arg)
+  "Switch to next branch of the undo tree.
+This will affect which branch to descend when *redoing* changes
+using `undo-tree-redo' or `undo-tree-visualizer-redo'."
+  (interactive "p")
+  ;; un-highlight old active branch below current node
+  (goto-char (undo-tree-node-marker (undo-tree-current buffer-undo-tree)))
+  (let ((undo-tree-insert-face 'undo-tree-visualizer-default-face)
+       (inhibit-read-only t))
+    (undo-tree-highlight-active-branch (undo-tree-current buffer-undo-tree)))
+  ;; increment branch
+  (let ((branch (undo-tree-node-branch (undo-tree-current buffer-undo-tree))))
+  (setf (undo-tree-node-branch (undo-tree-current buffer-undo-tree))
+        (cond
+         ((>= (+ branch arg) (undo-tree-num-branches))
+          (1- (undo-tree-num-branches)))
+         ((<= (+ branch arg) 0) 0)
+         (t (+ branch arg))))
+  (let ((inhibit-read-only t))
+    ;; highlight new active branch below current node
+    (goto-char (undo-tree-node-marker (undo-tree-current buffer-undo-tree)))
+    (let ((undo-tree-insert-face 'undo-tree-visualizer-active-branch-face))
+      (undo-tree-highlight-active-branch (undo-tree-current buffer-undo-tree)))
+    ;; re-highlight current node
+    (undo-tree-draw-node (undo-tree-current buffer-undo-tree) 'current))))
+
+
+(defun undo-tree-visualize-switch-branch-left (arg)
+  "Switch to previous branch of the undo tree.
+This will affect which branch to descend when *redoing* changes
+using `undo-tree-redo' or `undo-tree-visualizer-redo'."
+  (interactive "p")
+  (undo-tree-visualize-switch-branch-right (- arg)))
+
+
+(defun undo-tree-visualizer-quit ()
+  "Quit the undo-tree visualizer."
+  (interactive)
+  (undo-tree-clear-visualizer-data buffer-undo-tree)
+  ;; remove kill visualizer hook from parent buffer
+  (unwind-protect
+      (with-current-buffer undo-tree-visualizer-parent-buffer
+       (remove-hook 'before-change-functions 'undo-tree-kill-visualizer t))
+    ;; kill diff buffer, if any
+    (when undo-tree-visualizer-diff (undo-tree-visualizer-hide-diff))
+    (let ((parent undo-tree-visualizer-parent-buffer)
+         window)
+      ;; kill visualizer buffer
+      (kill-buffer nil)
+      ;; switch back to parent buffer
+      (unwind-protect
+         (if (setq window (get-buffer-window parent))
+             (select-window window)
+           (switch-to-buffer parent))))))
+
+
+(defun undo-tree-visualizer-abort ()
+  "Quit the undo-tree visualizer and return buffer to original state."
+  (interactive)
+  (let ((node undo-tree-visualizer-initial-node))
+    (undo-tree-visualizer-quit)
+    (undo-tree-set node)))
+
+
+(defun undo-tree-visualizer-set (&optional pos)
+  "Set buffer to state corresponding to undo tree node
+at POS, or point if POS is nil."
+  (interactive)
+  (unless pos (setq pos (point)))
+  (let ((node (get-text-property pos 'undo-tree-node)))
+    (when node
+      ;; set parent buffer to state corresponding to node at POS
+      (switch-to-buffer-other-window undo-tree-visualizer-parent-buffer)
+      (let ((undo-tree-inhibit-kill-visualizer t)) (undo-tree-set node))
+      (switch-to-buffer-other-window undo-tree-visualizer-buffer-name)
+      ;; re-draw undo tree
+      (let ((inhibit-read-only t)) (undo-tree-draw-tree buffer-undo-tree))
+      (when undo-tree-visualizer-diff (undo-tree-visualizer-update-diff)))))
+
+
+(defun undo-tree-visualizer-mouse-set (pos)
+  "Set buffer to state corresponding to undo tree node
+at mouse event POS."
+  (interactive "@e")
+  (undo-tree-visualizer-set (event-start (nth 1 pos))))
+
+
+(defun undo-tree-visualize-undo-to-x (&optional x)
+  "Undo to last branch point, register, or saved state.
+If X is 'branch, undo to last branch point. If X is 'register,
+undo to last register. If X is 'saved, undo to last saved state.
+
+Interactively, a single \\[universal-argument] specifies
+`branch', a double \\[universal-argument] \[universal-argument]
+spcified `saved', and a negative prefix argument specifies
+`register'."
+  (interactive "P")
+  (when (and (called-interactively-p 'any) x)
+    (setq x (prefix-numeric-value x)
+         x (cond
+            ((< x 0)  'register)
+            ((<= x 4) 'branch)
+            (t        'saved))))
+  (let ((current (undo-tree-current buffer-undo-tree))
+       r)
+    (while (and (undo-tree-node-previous current)
+               (or (undo-tree-visualize-undo) t)
+               (setq current (undo-tree-current buffer-undo-tree))
+                        ;; branch point
+               (not (or (and (or (null x) (eq x 'branch))
+                             (> (undo-tree-num-branches) 1))
+                        ;; register
+                        (and (or (null x) (eq x 'register))
+                             (setq r (undo-tree-node-register current))
+                             (undo-tree-register-data-p
+                              (setq r (registerv-data (get-register r))))
+                             (eq current (undo-tree-register-data-node r)))
+                        ;; saved state
+                        (and (or (null x) (eq x 'saved))
+                             (undo-tree-node-unmodified-p current))
+                        ))))))
+
+
+(defun undo-tree-visualize-redo-to-x (&optional x)
+  "Redo to next branch point or register.
+If X is the symbol `branch', redo to next branch point ignoring
+registers. If X is the symbol 'register', redo to next register,
+ignoring branch points.
+
+Interactively, a positive prefix argument specifies `branch', and
+a negative prefix argument specifies `register'."
+  (interactive "P")
+  (when (and (called-interactively-p 'any) x)
+    (setq x (prefix-numeric-value x)
+         x (cond
+            ((< x 0)  'register)
+            ((<= x 4) 'branch)
+            (t        'saved))))
+  (let ((current (undo-tree-current buffer-undo-tree))
+       r)
+    (while (and (undo-tree-node-next current)
+               (or (undo-tree-visualize-redo) t)
+               (setq current (undo-tree-current buffer-undo-tree))
+                        ;; branch point
+               (not (or (and (or (null x) (eq x 'branch))
+                             (> (undo-tree-num-branches) 1))
+                        ;; register
+                        (and (or (null x) (eq x 'register))
+                             (setq r (undo-tree-node-register current))
+                             (undo-tree-register-data-p
+                              (setq r (registerv-data (get-register r))))
+                             (eq current (undo-tree-register-data-node r)))
+                        ;; saved state
+                        (and (or (null x) (eq x 'saved))
+                             (undo-tree-node-unmodified-p current))
+                        ))))))
+
+
+(defun undo-tree-visualizer-toggle-timestamps ()
+  "Toggle display of time-stamps."
+  (interactive)
+  (setq undo-tree-visualizer-timestamps (not undo-tree-visualizer-timestamps))
+  (setq undo-tree-visualizer-spacing (undo-tree-visualizer-calculate-spacing))
+  ;; redraw tree
+  (let ((inhibit-read-only t)) (undo-tree-draw-tree buffer-undo-tree)))
+
+
+(defun undo-tree-visualizer-scroll-left (&optional arg)
+  (interactive "p")
+  (scroll-left (or arg 1) t))
+
+
+(defun undo-tree-visualizer-scroll-right (&optional arg)
+  (interactive "p")
+  (scroll-right (or arg 1) t))
+
+
+(defun undo-tree-visualizer-scroll-up (&optional arg)
+  (interactive "P")
+  (if (or (and (numberp arg) (< arg 0)) (eq arg '-))
+      (undo-tree-visualizer-scroll-down arg)
+    ;; scroll up and expand newly-visible portion of tree
+    (unwind-protect
+       (scroll-up-command arg)
+      (undo-tree-expand-down
+       (nth (undo-tree-node-branch (undo-tree-current buffer-undo-tree))
+           (undo-tree-node-next (undo-tree-current buffer-undo-tree)))))
+    ;; signal error if at eob
+    (when (and (not undo-tree-visualizer-needs-extending-down) (eobp))
+      (scroll-up))))
+
+
+(defun undo-tree-visualizer-scroll-down (&optional arg)
+  (interactive "P")
+  (if (or (and (numberp arg) (< arg 0)) (eq arg '-))
+      (undo-tree-visualizer-scroll-up arg)
+    ;; ensure there's enough room at top of buffer to scroll
+    (let ((scroll-lines
+          (or arg (- (window-height) next-screen-context-lines)))
+         (window-line (1- (line-number-at-pos (window-start)))))
+      (when (and undo-tree-visualizer-needs-extending-up
+                (< window-line scroll-lines))
+       (let ((inhibit-read-only t))
+         (goto-char (point-min))
+         (undo-tree-move-up (- scroll-lines window-line)))))
+    ;; scroll down and expand newly-visible portion of tree
+    (unwind-protect
+       (scroll-down-command arg)
+      (undo-tree-expand-up
+       (undo-tree-node-previous (undo-tree-current buffer-undo-tree))))
+    ;; signal error if at bob
+    (when (and (not undo-tree-visualizer-needs-extending-down) (bobp))
+      (scroll-down))))
+
+
+
+\f
+;;; =====================================================================
+;;;                    Visualizer selection mode
+
+(defun undo-tree-visualizer-selection-mode ()
+  "Major mode used to select nodes in undo-tree visualizer."
+  (interactive)
+  (setq major-mode 'undo-tree-visualizer-selection-mode)
+  (setq mode-name "undo-tree-visualizer-selection-mode")
+  (use-local-map undo-tree-visualizer-selection-map)
+  (setq cursor-type 'box)
+  (setq undo-tree-visualizer-selected-node
+       (undo-tree-current buffer-undo-tree))
+  ;; erase diff (if any), as initially selected node is identical to current
+  (when undo-tree-visualizer-diff
+    (let ((buff (get-buffer undo-tree-diff-buffer-name))
+         (inhibit-read-only t))
+      (when buff (with-current-buffer buff (erase-buffer))))))
+
+
+(defun undo-tree-visualizer-select-previous (&optional arg)
+  "Move to previous node."
+  (interactive "p")
+  (let ((node undo-tree-visualizer-selected-node))
+    (catch 'top
+      (dotimes (i arg)
+       (unless (undo-tree-node-previous node) (throw 'top t))
+       (setq node (undo-tree-node-previous node))))
+    ;; when using lazy drawing, extend tree upwards as required
+    (when undo-tree-visualizer-lazy-drawing
+      (undo-tree-expand-up undo-tree-visualizer-selected-node node))
+    ;; update diff display, if any
+    (when (and undo-tree-visualizer-diff
+              (not (eq node undo-tree-visualizer-selected-node)))
+      (undo-tree-visualizer-update-diff node))
+    ;; move to selected node
+    (goto-char (undo-tree-node-marker node))
+    (setq undo-tree-visualizer-selected-node node)))
+
+
+(defun undo-tree-visualizer-select-next (&optional arg)
+  "Move to next node."
+  (interactive "p")
+  (let ((node undo-tree-visualizer-selected-node))
+    (catch 'bottom
+      (dotimes (i arg)
+       (unless (nth (undo-tree-node-branch node) (undo-tree-node-next node))
+         (throw 'bottom t))
+       (setq node
+             (nth (undo-tree-node-branch node) (undo-tree-node-next node)))))
+    ;; when using lazy drawing, extend tree upwards as required
+    (when undo-tree-visualizer-lazy-drawing
+      (undo-tree-expand-down undo-tree-visualizer-selected-node node))
+    ;; update diff display, if any
+    (when (and undo-tree-visualizer-diff
+              (not (eq node undo-tree-visualizer-selected-node)))
+      (undo-tree-visualizer-update-diff node))
+    ;; move to selected node
+    (goto-char (undo-tree-node-marker node))
+    (setq undo-tree-visualizer-selected-node node)))
+
+
+(defun undo-tree-visualizer-select-right (&optional arg)
+  "Move right to a sibling node."
+  (interactive "p")
+  (let ((node undo-tree-visualizer-selected-node)
+       end)
+    (goto-char (undo-tree-node-marker undo-tree-visualizer-selected-node))
+    (setq end (line-end-position))
+    (catch 'end
+      (dotimes (i arg)
+       (while (or (null node) (eq node undo-tree-visualizer-selected-node))
+         (forward-char)
+         (setq node (get-text-property (point) 'undo-tree-node))
+         (when (= (point) end) (throw 'end t)))))
+    (goto-char (undo-tree-node-marker
+               (or node undo-tree-visualizer-selected-node)))
+    (when (and undo-tree-visualizer-diff node
+              (not (eq node undo-tree-visualizer-selected-node)))
+      (undo-tree-visualizer-update-diff node))
+    (when node (setq undo-tree-visualizer-selected-node node))))
+
+
+(defun undo-tree-visualizer-select-left (&optional arg)
+  "Move left to a sibling node."
+  (interactive "p")
+  (let ((node (get-text-property (point) 'undo-tree-node))
+       beg)
+    (goto-char (undo-tree-node-marker undo-tree-visualizer-selected-node))
+    (setq beg (line-beginning-position))
+    (catch 'beg
+      (dotimes (i arg)
+       (while (or (null node) (eq node undo-tree-visualizer-selected-node))
+         (backward-char)
+         (setq node (get-text-property (point) 'undo-tree-node))
+         (when (= (point) beg) (throw 'beg t)))))
+    (goto-char (undo-tree-node-marker
+               (or node undo-tree-visualizer-selected-node)))
+    (when (and undo-tree-visualizer-diff node
+              (not (eq node undo-tree-visualizer-selected-node)))
+      (undo-tree-visualizer-update-diff node))
+    (when node (setq undo-tree-visualizer-selected-node node))))
+
+
+\f
+;;; =====================================================================
+;;;                      Visualizer diff display
+
+(defun undo-tree-visualizer-toggle-diff ()
+  "Toggle diff display in undo-tree visualizer."
+  (interactive)
+  (if undo-tree-visualizer-diff
+      (undo-tree-visualizer-hide-diff)
+    (undo-tree-visualizer-show-diff)))
+
+
+(defun undo-tree-visualizer-selection-toggle-diff ()
+  "Toggle diff display in undo-tree visualizer selection mode."
+  (interactive)
+  (if undo-tree-visualizer-diff
+      (undo-tree-visualizer-hide-diff)
+    (let ((node (get-text-property (point) 'undo-tree-node)))
+      (when node (undo-tree-visualizer-show-diff node)))))
+
+
+(defun undo-tree-visualizer-show-diff (&optional node)
+  ;; show visualizer diff display
+  (setq undo-tree-visualizer-diff t)
+  (let ((buff (with-current-buffer undo-tree-visualizer-parent-buffer
+               (undo-tree-diff node)))
+       (display-buffer-mark-dedicated 'soft)
+       win)
+    (setq win (split-window))
+    (set-window-buffer win buff)
+    (shrink-window-if-larger-than-buffer win)))
+
+
+(defun undo-tree-visualizer-hide-diff ()
+  ;; hide visualizer diff display
+  (setq undo-tree-visualizer-diff nil)
+  (let ((win (get-buffer-window undo-tree-diff-buffer-name)))
+    (when win (with-selected-window win (kill-buffer-and-window)))))
+
+
+(defun undo-tree-diff (&optional node)
+  ;; Create diff between current state and NODE (or previous state, if NODE is
+  ;; null). Returns buffer containing diff.
+  (let (tmpfile buff)
+    ;; generate diff
+    (let ((undo-tree-inhibit-kill-visualizer t)
+         (current (undo-tree-current buffer-undo-tree)))
+      (undo-tree-set (or node (undo-tree-node-previous current) current)
+                    'preserve-timestamps)
+      (setq tmpfile (diff-file-local-copy (current-buffer)))
+      (undo-tree-set current 'preserve-timestamps))
+    (setq buff (diff-no-select
+               (current-buffer) tmpfile nil 'noasync
+               (get-buffer-create undo-tree-diff-buffer-name)))
+    ;; delete process messages and useless headers from diff buffer
+    (with-current-buffer buff
+      (goto-char (point-min))
+      (delete-region (point) (1+ (line-end-position 3)))
+      (goto-char (point-max))
+      (forward-line -2)
+      (delete-region (point) (point-max))
+      (setq cursor-type nil)
+      (setq buffer-read-only t))
+    buff))
+
+
+(defun undo-tree-visualizer-update-diff (&optional node)
+  ;; update visualizer diff display to show diff between current state and
+  ;; NODE (or previous state, if NODE is null)
+  (with-current-buffer undo-tree-visualizer-parent-buffer
+    (undo-tree-diff node))
+  (let ((win (get-buffer-window undo-tree-diff-buffer-name)))
+    (when win
+      (balance-windows)
+      (shrink-window-if-larger-than-buffer win))))
+
+
+
+(provide 'undo-tree)
+
+;;; undo-tree.el ends here
diff --git a/packages/uni-confusables/confusables.txt b/packages/uni-confusables/confusables.txt
new file mode 100644 (file)
index 0000000..c303b5a
--- /dev/null
@@ -0,0 +1,31196 @@
+# Recommended confusable mapping for IDN
+# File: confusables.txt
+# Version: 2.1
+# Generated: 2010-04-13, 01:33:26 GMT
+# Checkin: $Revision: 1.29 $
+#
+# For documentation and usage, see http://www.unicode.org/reports/tr39/
+#
+
+# Single-Script, Lowercase Confusables
+
+05AD ; 0596 ;  SL      # ( ֭ → ֖ ) HEBREW ACCENT DEHI → HEBREW ACCENT TIPEHA     # 
+
+05AE ; 0598 ;  SL      # ( ֮ → ֘ ) HEBREW ACCENT ZINOR → HEBREW ACCENT ZARQA     # 
+
+05A8 ; 0599 ;  SL      # ( ֨ → ֙ ) HEBREW ACCENT QADMA → HEBREW ACCENT PASHTA    # 
+
+05A4 ; 059A ;  SL      # ( ֤ → ֚ ) HEBREW ACCENT MAHAPAKH → HEBREW ACCENT YETIV  # 
+
+06EC ; 06DF ;  SL      # ( ۬ → ۟ ) ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE → ARABIC SMALL HIGH ROUNDED ZERO  # 
+
+0619 ; 0313 ;  SL      # ( ؙ → ̓ ) ARABIC SMALL DAMMA → COMBINING COMMA ABOVE    # →ُ→
+0343 ; 0313 ;  SL      # ( ̓ → ̓ ) COMBINING GREEK KORONIS → COMBINING COMMA ABOVE       # 
+0315 ; 0313 ;  SL      # ( ̕ → ̓ ) COMBINING COMMA ABOVE RIGHT → COMBINING COMMA ABOVE   # 
+064F ; 0313 ;  SL      # ( ُ → ̓ ) ARABIC DAMMA → COMBINING COMMA ABOVE  # 
+
+059C ; 0301 ;  SL      # ( ֜ → ́ ) HEBREW ACCENT GERESH → COMBINING ACUTE ACCENT # 
+059D ; 0301 ;  SL      # ( ֝ → ́ ) HEBREW ACCENT GERESH MUQDAM → COMBINING ACUTE ACCENT  # →֜→
+0747 ; 0301 ;  SL      # ( ݇ → ́ ) SYRIAC OBLIQUE LINE ABOVE → COMBINING ACUTE ACCENT    # 
+0341 ; 0301 ;  SL      # ( ́ → ́ ) COMBINING ACUTE TONE MARK → COMBINING ACUTE ACCENT    # 
+0954 ; 0301 ;  SL      # ( ॔ → ́ ) DEVANAGARI ACUTE ACCENT → COMBINING ACUTE ACCENT     # 
+
+0340 ; 0300 ;  SL      # ( ̀ → ̀ ) COMBINING GRAVE TONE MARK → COMBINING GRAVE ACCENT    # 
+0953 ; 0300 ;  SL      # ( ॓ → ̀ ) DEVANAGARI GRAVE ACCENT → COMBINING GRAVE ACCENT     # 
+
+030C ; 0306 ;  SL      # ( ̌ → ̆ ) COMBINING CARON → COMBINING BREVE     # 
+036E ; 0306 ;  SL      # ( ͮ → ̆ ) COMBINING LATIN SMALL LETTER V → COMBINING BREVE      # →̌→
+
+0310 ; 0306 0307 ;     SL      # ( ̐ → ̆̇ ) COMBINING CANDRABINDU → COMBINING BREVE, COMBINING DOT ABOVE        # 
+0901 ; 0306 0307 ;     SL      # ( ँ → ̆̇ ) DEVANAGARI SIGN CANDRABINDU → COMBINING BREVE, COMBINING DOT ABOVE # →̐→
+0981 ; 0306 0307 ;     SL      # ( ঁ → ̆̇ ) BENGALI SIGN CANDRABINDU → COMBINING BREVE, COMBINING DOT ABOVE    # →̐→
+0A81 ; 0306 0307 ;     SL      # ( ઁ → ̆̇ ) GUJARATI SIGN CANDRABINDU → COMBINING BREVE, COMBINING DOT ABOVE   # →̐→
+0B01 ; 0306 0307 ;     SL      # ( ଁ → ̆̇ ) ORIYA SIGN CANDRABINDU → COMBINING BREVE, COMBINING DOT ABOVE      # →̐→
+
+0311 ; 0302 ;  SL      # ( ̑ → ̂ ) COMBINING INVERTED BREVE → COMBINING CIRCUMFLEX ACCENT        # 
+07EE ; 0302 ;  SL      # ( ߮ → ̂ ) NKO COMBINING LONG DESCENDING TONE → COMBINING CIRCUMFLEX ACCENT      # 
+
+05AF ; 030A ;  SL      # ( ֯ → ̊ ) HEBREW MARK MASORA CIRCLE → COMBINING RING ABOVE      # 
+17D3 ; 030A ;  SL      # ( ៓ → ̊ ) KHMER SIGN BATHAMASAT → COMBINING RING ABOVE # 
+0B82 ; 030A ;  SL      # ( ஂ → ̊ ) TAMIL SIGN ANUSVARA → COMBINING RING ABOVE   # 
+0E4D ; 030A ;  SL      # ( ํ → ̊ ) THAI CHARACTER NIKHAHIT → COMBINING RING ABOVE       # 
+0ECD ; 030A ;  SL      # ( ໍ → ̊ ) LAO NIGGAHITA → COMBINING RING ABOVE # 
+1036 ; 030A ;  SL      # ( ံ → ̊ ) MYANMAR SIGN ANUSVARA → COMBINING RING ABOVE # 
+17C6 ; 030A ;  SL      # ( ំ → ̊ ) KHMER SIGN NIKAHIT → COMBINING RING ABOVE    # 
+309A ; 030A ;  SL      # ( ゚ → ̊ ) COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK → COMBINING RING ABOVE    # 
+0366 ; 030A ;  SL      # ( ͦ → ̊ ) COMBINING LATIN SMALL LETTER O → COMBINING RING ABOVE # 
+
+07F3 ; 0308 ;  SL      # ( ߳ → ̈ ) NKO COMBINING DOUBLE DOT ABOVE → COMBINING DIAERESIS  # 
+
+0342 ; 0303 ;  SL      # ( ͂ → ̃ ) COMBINING GREEK PERISPOMENI → COMBINING TILDE # 
+
+05C4 ; 0307 ;  SL      # ( ׄ → ̇ ) HEBREW MARK UPPER DOT → COMBINING DOT ABOVE   # 
+0740 ; 0307 ;  SL      # ( ݀ → ̇ ) SYRIAC FEMININE DOT → COMBINING DOT ABOVE     # →݁→
+0741 ; 0307 ;  SL      # ( ݁ → ̇ ) SYRIAC QUSHSHAYA → COMBINING DOT ABOVE        # 
+0358 ; 0307 ;  SL      # ( ͘ → ̇ ) COMBINING DOT ABOVE RIGHT → COMBINING DOT ABOVE       # 
+05B9 ; 0307 ;  SL      # ( ֹ → ̇ ) HEBREW POINT HOLAM → COMBINING DOT ABOVE      # 
+05BA ; 0307 ;  SL      # ( ֺ → ̇ ) HEBREW POINT HOLAM HASER FOR VAV → COMBINING DOT ABOVE        # →ׁ→
+05C2 ; 0307 ;  SL      # ( ׂ → ̇ ) HEBREW POINT SIN DOT → COMBINING DOT ABOVE    # 
+05C1 ; 0307 ;  SL      # ( ׁ → ̇ ) HEBREW POINT SHIN DOT → COMBINING DOT ABOVE   # 
+07ED ; 0307 ;  SL      # ( ߭ → ̇ ) NKO COMBINING SHORT RISING TONE → COMBINING DOT ABOVE # 
+0902 ; 0307 ;  SL      # ( ं → ̇ ) DEVANAGARI SIGN ANUSVARA → COMBINING DOT ABOVE       # 
+0A02 ; 0307 ;  SL      # ( ਂ → ̇ ) GURMUKHI SIGN BINDI → COMBINING DOT ABOVE    # 
+0A82 ; 0307 ;  SL      # ( ં → ̇ ) GUJARATI SIGN ANUSVARA → COMBINING DOT ABOVE # 
+0BCD ; 0307 ;  SL      # ( ் → ̇ ) TAMIL SIGN VIRAMA → COMBINING DOT ABOVE      # 
+
+0337 ; 0338 ;  SL      # ( ̷ → ̸ ) COMBINING SHORT SOLIDUS OVERLAY → COMBINING LONG SOLIDUS OVERLAY      # 
+
+0322 ; 0328 ;  SL      # ( ̢ → ̨ ) COMBINING RETROFLEX HOOK BELOW → COMBINING OGONEK     # 
+
+0305 ; 0304 ;  SL      # ( ̅ → ̄ ) COMBINING OVERLINE → COMBINING MACRON # 
+07EB ; 0304 ;  SL      # ( ߫ → ̄ ) NKO COMBINING SHORT HIGH TONE → COMBINING MACRON      # 
+
+0347 ; 0333 ;  SL      # ( ͇ → ̳ ) COMBINING EQUALS SIGN BELOW → COMBINING DOUBLE LOW LINE       # 
+
+302C ; 0309 ;  SL      # ( 〬 → ̉ ) IDEOGRAPHIC DEPARTING TONE MARK → COMBINING HOOK ABOVE       # 
+
+05C5 ; 0323 ;  SL      # ( ׅ → ̣ ) HEBREW MARK LOWER DOT → COMBINING DOT BELOW   # 
+05B4 ; 0323 ;  SL      # ( ִ → ̣ ) HEBREW POINT HIRIQ → COMBINING DOT BELOW      # 
+093C ; 0323 ;  SL      # ( ़ → ̣ ) DEVANAGARI SIGN NUKTA → COMBINING DOT BELOW  # 
+09BC ; 0323 ;  SL      # ( ় → ̣ ) BENGALI SIGN NUKTA → COMBINING DOT BELOW     # 
+0A3C ; 0323 ;  SL      # ( ਼ → ̣ ) GURMUKHI SIGN NUKTA → COMBINING DOT BELOW    # 
+0ABC ; 0323 ;  SL      # ( ઼ → ̣ ) GUJARATI SIGN NUKTA → COMBINING DOT BELOW    # 
+0B3C ; 0323 ;  SL      # ( ଼ → ̣ ) ORIYA SIGN NUKTA → COMBINING DOT BELOW       # 
+10A3A ;        0323 ;  SL      # ( 𐨺 → ̣ ) KHAROSHTHI SIGN DOT BELOW → COMBINING DOT BELOW     # 
+
+302D ; 0325 ;  SL      # ( 〭 → ̥ ) IDEOGRAPHIC ENTERING TONE MARK → COMBINING RING BELOW        # 
+
+0327 ; 0326 ;  SL      # ( ̧ → ̦ ) COMBINING CEDILLA → COMBINING COMMA BELOW     # →̡→
+0321 ; 0326 ;  SL      # ( ̡ → ̦ ) COMBINING PALATALIZED HOOK BELOW → COMBINING COMMA BELOW      # 
+0339 ; 0326 ;  SL      # ( ̹ → ̦ ) COMBINING RIGHT HALF RING BELOW → COMBINING COMMA BELOW       # →̧→→̡→
+
+0952 ; 0331 ;  SL      # ( ॒ → ̱ ) DEVANAGARI STRESS SIGN ANUDATTA → COMBINING MACRON BELOW     # 
+0320 ; 0331 ;  SL      # ( ̠ → ̱ ) COMBINING MINUS SIGN BELOW → COMBINING MACRON BELOW   # 
+
+0336 ; 0335 ;  SL      # ( ̶ → ̵ ) COMBINING LONG STROKE OVERLAY → COMBINING SHORT STROKE OVERLAY        # 
+
+FC5E ; FE72 0651 ;     SL      #* ( ‎ﱞ‎ → ‎ﹲّ‎ ) ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM → ARABIC DAMMATAN ISOLATED FORM, ARABIC SHADDA    # 
+
+FC5F ; FE74 0651 ;     SL      #* ( ‎ﱟ‎ → ‎ﹴّ‎ ) ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM → ARABIC KASRATAN ISOLATED FORM, ARABIC SHADDA    # 
+
+0618 ; 064E ;  SL      # ( ؘ → َ ) ARABIC SMALL FATHA → ARABIC FATHA     # 
+
+FCF2 ; FE77 0651 ;     SL      # ( ‎ﳲ‎ → ‎ﹷّ‎ ) ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM → ARABIC FATHA MEDIAL FORM, ARABIC SHADDA       # 
+
+FC60 ; FE76 0651 ;     SL      #* ( ‎ﱠ‎ → ‎ﹶّ‎ ) ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM → ARABIC FATHA ISOLATED FORM, ARABIC SHADDA  # 
+FC62 ; FE76 0651 ;     SL      #* ( ‎ﱢ‎ → ‎ﹶّ‎ ) ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM → ARABIC FATHA ISOLATED FORM, ARABIC SHADDA  # →‎ﱠ‎→
+
+FCF3 ; FE79 0651 ;     SL      # ( ‎ﳳ‎ → ‎ﹹّ‎ ) ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM → ARABIC DAMMA MEDIAL FORM, ARABIC SHADDA       # 
+
+FC61 ; FE78 0651 ;     SL      #* ( ‎ﱡ‎ → ‎ﹸّ‎ ) ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM → ARABIC DAMMA ISOLATED FORM, ARABIC SHADDA  # 
+
+061A ; 0650 ;  SL      # ( ؚ → ِ ) ARABIC SMALL KASRA → ARABIC KASRA     # 
+
+FCF4 ; FE7B 0651 ;     SL      # ( ‎ﳴ‎ → ‎ﹻّ‎ ) ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM → ARABIC KASRA MEDIAL FORM, ARABIC SHADDA       # 
+
+FC63 ; FE7C 0670 ;     SL      #* ( ‎ﱣ‎ → ‎ﹼٰ‎ ) ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM → ARABIC SHADDA ISOLATED FORM, ARABIC LETTER SUPERSCRIPT ALEF     # 
+
+0742 ; 073C ;  SL      # ( ݂ → ܼ ) SYRIAC RUKKAKHA → SYRIAC HBASA-ESASA DOTTED   # 
+
+309B ; FF9E ;  SL      #* ( ゛ → ゙ ) KATAKANA-HIRAGANA VOICED SOUND MARK → HALFWIDTH KATAKANA VOICED SOUND MARK # 
+
+309C ; FF9F ;  SL      #* ( ゜ → ゚ ) KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK → HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK       # 
+
+180E ; 0020 ;  SL      #* ( ᠎ →   ) MONGOLIAN VOWEL SEPARATOR → SPACE    # 
+2028 ; 0020 ;  SL      #* (  →   ) LINE SEPARATOR → SPACE  # 
+2029 ; 0020 ;  SL      #* (  →   ) PARAGRAPH SEPARATOR → SPACE     # 
+2000 ; 0020 ;  SL      #* (   →   ) EN QUAD → SPACE      # 
+2001 ; 0020 ;  SL      #* (   →   ) EM QUAD → SPACE      # 
+2002 ; 0020 ;  SL      #* (   →   ) EN SPACE → SPACE     # 
+2003 ; 0020 ;  SL      #* (   →   ) EM SPACE → SPACE     # 
+2004 ; 0020 ;  SL      #* (   →   ) THREE-PER-EM SPACE → SPACE   # 
+2005 ; 0020 ;  SL      #* (   →   ) FOUR-PER-EM SPACE → SPACE    # 
+2006 ; 0020 ;  SL      #* (   →   ) SIX-PER-EM SPACE → SPACE     # 
+2008 ; 0020 ;  SL      #* (   →   ) PUNCTUATION SPACE → SPACE    # 
+2009 ; 0020 ;  SL      #* (   →   ) THIN SPACE → SPACE   # 
+200A ; 0020 ;  SL      #* (   →   ) HAIR SPACE → SPACE   # 
+205F ; 0020 ;  SL      #* (   →   ) MEDIUM MATHEMATICAL SPACE → SPACE    # 
+00A0 ; 0020 ;  SL      #* (   →   ) NO-BREAK SPACE → SPACE        # 
+2007 ; 0020 ;  SL      #* (   →   ) FIGURE SPACE → SPACE # 
+202F ; 0020 ;  SL      #* (   →   ) NARROW NO-BREAK SPACE → SPACE        # 
+1680 ; 0020 ;  SL      #* (   →   ) OGHAM SPACE MARK → SPACE     # 
+
+02C4 ; 005E ;  SL      #* ( ˄ → ^ ) MODIFIER LETTER UP ARROWHEAD → CIRCUMFLEX ACCENT      # 
+02C6 ; 005E ;  SL      # ( ˆ → ^ ) MODIFIER LETTER CIRCUMFLEX ACCENT → CIRCUMFLEX ACCENT  # 
+
+07FA ; 005F ;  SL      # ( ‎ߺ‎ → _ ) NKO LAJANYALAN → LOW LINE        # 
+FE4D ; 005F ;  SL      # ( ﹍ → _ ) DASHED LOW LINE → LOW LINE    # 
+FE4E ; 005F ;  SL      # ( ﹎ → _ ) CENTRELINE LOW LINE → LOW LINE        # 
+FE4F ; 005F ;  SL      # ( ﹏ → _ ) WAVY LOW LINE → LOW LINE      # 
+
+2307 ; FE34 ;  SL      #* ( ⌇ → ︴ ) WAVY LINE → PRESENTATION FORM FOR VERTICAL WAVY LOW LINE   # 
+
+2010 ; 002D ;  SL      #* ( ‐ → - ) HYPHEN → HYPHEN-MINUS        # 
+2011 ; 002D ;  SL      #* ( ‑ → - ) NON-BREAKING HYPHEN → HYPHEN-MINUS   # 
+2012 ; 002D ;  SL      #* ( ‒ → - ) FIGURE DASH → HYPHEN-MINUS   # 
+2013 ; 002D ;  SL      #* ( – → - ) EN DASH → HYPHEN-MINUS       # 
+FE58 ; 002D ;  SL      #* ( ﹘ → - ) SMALL EM DASH → HYPHEN-MINUS # 
+2043 ; 002D ;  SL      #* ( ⁃ → - ) HYPHEN BULLET → HYPHEN-MINUS # →‒→
+02D7 ; 002D ;  SL      #* ( ˗ → - ) MODIFIER LETTER MINUS SIGN → HYPHEN-MINUS     # 
+2212 ; 002D ;  SL      #* ( − → - ) MINUS SIGN → HYPHEN-MINUS    # 
+
+A4FE ; 002D 002E ;     SL      #* ( ꓾ → -. ) LISU PUNCTUATION COMMA → HYPHEN-MINUS, FULL STOP    # 
+
+FF5E ; 301C ;  SL      #* ( ~ → 〜 ) FULLWIDTH TILDE → WAVE DASH        # 
+
+00B8 ; 002C ;  SL      #* ( ¸ → , ) CEDILLA → COMMA       # 
+066B ; 002C ;  SL      #* ( ‎٫‎ → , ) ARABIC DECIMAL SEPARATOR → COMMA        # 
+201A ; 002C ;  SL      #* ( ‚ → , ) SINGLE LOW-9 QUOTATION MARK → COMMA  # 
+
+066C ; 060C ;  SL      #* ( ‎٬‎ → ، ) ARABIC THOUSANDS SEPARATOR → ARABIC COMMA      # 
+
+037E ; 003B ;  SL      #* ( ; → ; ) GREEK QUESTION MARK → SEMICOLON       # 
+
+0903 ; 003A ;  SL      # ( ः → : ) DEVANAGARI SIGN VISARGA → COLON       # 
+0A83 ; 003A ;  SL      # ( ઃ → : ) GUJARATI SIGN VISARGA → COLON # 
+FF1A ; 003A ;  SL      #* ( : → : ) FULLWIDTH COLON → COLON      # →︰→
+0589 ; 003A ;  SL      #* ( ։ → : ) ARMENIAN FULL STOP → COLON    # 
+0703 ; 003A ;  SL      #* ( ‎܃‎ → : ) SYRIAC SUPRALINEAR COLON → COLON        # 
+0704 ; 003A ;  SL      #* ( ‎܄‎ → : ) SYRIAC SUBLINEAR COLON → COLON  # 
+FE30 ; 003A ;  SL      #* ( ︰ → : ) PRESENTATION FORM FOR VERTICAL TWO DOT LEADER → COLON        # 
+1803 ; 003A ;  SL      #* ( ᠃ → : ) MONGOLIAN FULL STOP → COLON  # 
+1809 ; 003A ;  SL      #* ( ᠉ → : ) MONGOLIAN MANCHU FULL STOP → COLON   # 
+205A ; 003A ;  SL      #* ( ⁚ → : ) TWO DOT PUNCTUATION → COLON  # 
+05C3 ; 003A ;  SL      #* ( ‎׃‎ → : ) HEBREW PUNCTUATION SOF PASUQ → COLON    # 
+02F8 ; 003A ;  SL      #* ( ˸ → : ) MODIFIER LETTER RAISED COLON → COLON  # 
+A789 ; 003A ;  SL      #* ( ꞉ → : ) MODIFIER LETTER COLON → COLON        # 
+2236 ; 003A ;  SL      #* ( ∶ → : ) RATIO → COLON        # 
+02D0 ; 003A ;  SL      # ( ː → : ) MODIFIER LETTER TRIANGULAR COLON → COLON       # 
+A4FD ; 003A ;  SL      # ( ꓽ → : ) LISU LETTER TONE MYA JEU → COLON      # 
+
+2A74 ; 003A 003A 003D ;        SL      #* ( ⩴ → ::= ) DOUBLE COLON EQUAL → COLON, COLON, EQUALS SIGN     # 
+
+FF01 ; 0021 ;  SL      #* ( ! → ! ) FULLWIDTH EXCLAMATION MARK → EXCLAMATION MARK        # →ǃ→
+01C3 ; 0021 ;  SL      # ( ǃ → ! ) LATIN LETTER RETROFLEX CLICK → EXCLAMATION MARK        # 
+
+203C ; 0021 0021 ;     SL      #* ( ‼ → !! ) DOUBLE EXCLAMATION MARK → EXCLAMATION MARK, EXCLAMATION MARK        # 
+
+2049 ; 0021 003F ;     SL      #* ( ⁉ → !? ) EXCLAMATION QUESTION MARK → EXCLAMATION MARK, QUESTION MARK # 
+
+0294 ; 003F ;  SL      # ( ʔ → ? ) LATIN LETTER GLOTTAL STOP → QUESTION MARK      # 
+097D ; 003F ;  SL      # ( ॽ → ? ) DEVANAGARI LETTER GLOTTAL STOP → QUESTION MARK        # 
+
+2048 ; 003F 0021 ;     SL      #* ( ⁈ → ?! ) QUESTION EXCLAMATION MARK → QUESTION MARK, EXCLAMATION MARK # 
+
+2047 ; 003F 003F ;     SL      #* ( ⁇ → ?? ) DOUBLE QUESTION MARK → QUESTION MARK, QUESTION MARK # 
+
+1D16D ;        002E ;  SL      # ( 𝅭 → . ) MUSICAL SYMBOL COMBINING AUGMENTATION DOT → FULL STOP        # 
+2024 ; 002E ;  SL      #* ( ․ → . ) ONE DOT LEADER → FULL STOP   # 
+06D4 ; 002E ;  SL      #* ( ‎۔‎ → . ) ARABIC FULL STOP → FULL STOP    # 
+0701 ; 002E ;  SL      #* ( ‎܁‎ → . ) SYRIAC SUPRALINEAR FULL STOP → FULL STOP        # 
+0702 ; 002E ;  SL      #* ( ‎܂‎ → . ) SYRIAC SUBLINEAR FULL STOP → FULL STOP  # 
+A60E ; 002E ;  SL      #* ( ꘎ → . ) VAI FULL STOP → FULL STOP    # 
+10A50 ;        002E ;  SL      #* ( ‎𐩐‎ → . ) KHAROSHTHI PUNCTUATION DOT → FULL STOP        # 
+0660 ; 002E ;  SL      # ( ‎٠‎ → . ) ARABIC-INDIC DIGIT ZERO → FULL STOP      # 
+06F0 ; 002E ;  SL      # ( ۰ → . ) EXTENDED ARABIC-INDIC DIGIT ZERO → FULL STOP   # →‎٠‎→
+A4F8 ; 002E ;  SL      # ( ꓸ → . ) LISU LETTER TONE MYA TI → FULL STOP   # 
+A4FB ; 002E ;  SL      # ( ꓻ → . ) LISU LETTER TONE MYA BO → FULL STOP   # 
+
+2025 ; 002E 002E ;     SL      #* ( ‥ → .. ) TWO DOT LEADER → FULL STOP, FULL STOP       # 
+A4FA ; 002E 002E ;     SL      # ( ꓺ → .. ) LISU LETTER TONE MYA CYA → FULL STOP, FULL STOP      # 
+
+2026 ; 002E 002E 002E ;        SL      #* ( … → ... ) HORIZONTAL ELLIPSIS → FULL STOP, FULL STOP, FULL STOP      # 
+
+30FB ; 00B7 ;  SL      #* ( ・ → · ) KATAKANA MIDDLE DOT → MIDDLE DOT    # →•→
+FF65 ; 00B7 ;  SL      #* ( ・ → · ) HALFWIDTH KATAKANA MIDDLE DOT → MIDDLE DOT  # →•→
+0387 ; 00B7 ;  SL      # ( · → · ) GREEK ANO TELEIA → MIDDLE DOT # 
+10101 ;        00B7 ;  SL      #* ( 𐄁 → · ) AEGEAN WORD SEPARATOR DOT → MIDDLE DOT     # 
+2022 ; 00B7 ;  SL      #* ( • → · ) BULLET → MIDDLE DOT # 
+2027 ; 00B7 ;  SL      #* ( ‧ → · ) HYPHENATION POINT → MIDDLE DOT      # 
+2219 ; 00B7 ;  SL      #* ( ∙ → · ) BULLET OPERATOR → MIDDLE DOT        # 
+22C5 ; 00B7 ;  SL      #* ( ⋅ → · ) DOT OPERATOR → MIDDLE DOT   # 
+1427 ; 00B7 ;  SL      # ( ᐧ → · ) CANADIAN SYLLABICS FINAL MIDDLE DOT → MIDDLE DOT     # 
+
+22EF ; 00B7 00B7 00B7 ;        SL      #* ( ⋯ → ··· ) MIDLINE HORIZONTAL ELLIPSIS → MIDDLE DOT, MIDDLE DOT, MIDDLE DOT        # 
+
+152F ; 00B7 0034 ;     SL      # ( ᔯ → ·4 ) CANADIAN SYLLABICS YWE → MIDDLE DOT, DIGIT FOUR     # →ᐧ4→
+
+140C ; 00B7 1401 ;     SL      # ( ᐌ → ·ᐁ ) CANADIAN SYLLABICS WE → MIDDLE DOT, CANADIAN SYLLABICS E  # →ᐧᐁ→
+
+140E ; 00B7 1403 ;     SL      # ( ᐎ → ·ᐃ ) CANADIAN SYLLABICS WI → MIDDLE DOT, CANADIAN SYLLABICS I  # →ᐧᐃ→
+
+1410 ; 00B7 1404 ;     SL      # ( ᐐ → ·ᐄ ) CANADIAN SYLLABICS WII → MIDDLE DOT, CANADIAN SYLLABICS II        # →ᐧᐄ→
+
+1412 ; 00B7 1405 ;     SL      # ( ᐒ → ·ᐅ ) CANADIAN SYLLABICS WO → MIDDLE DOT, CANADIAN SYLLABICS O  # →ᐧᐅ→
+
+1414 ; 00B7 1406 ;     SL      # ( ᐔ → ·ᐆ ) CANADIAN SYLLABICS WOO → MIDDLE DOT, CANADIAN SYLLABICS OO        # →ᐧᐆ→
+
+1417 ; 00B7 140A ;     SL      # ( ᐗ → ·ᐊ ) CANADIAN SYLLABICS WA → MIDDLE DOT, CANADIAN SYLLABICS A  # →ᐧᐊ→
+
+1419 ; 00B7 140B ;     SL      # ( ᐙ → ·ᐋ ) CANADIAN SYLLABICS WAA → MIDDLE DOT, CANADIAN SYLLABICS AA        # →ᐧᐋ→
+
+1437 ; 00B7 1433 ;     SL      # ( ᐷ → ·ᐳ ) CANADIAN SYLLABICS CARRIER HI → MIDDLE DOT, CANADIAN SYLLABICS PO # →ᑀ→→ᐧᐳ→
+1440 ; 00B7 1433 ;     SL      # ( ᑀ → ·ᐳ ) CANADIAN SYLLABICS PWO → MIDDLE DOT, CANADIAN SYLLABICS PO        # →ᐧᐳ→
+
+1442 ; 00B7 1434 ;     SL      # ( ᑂ → ·ᐴ ) CANADIAN SYLLABICS PWOO → MIDDLE DOT, CANADIAN SYLLABICS POO      # →ᐧᐴ→
+
+1444 ; 00B7 1438 ;     SL      # ( ᑄ → ·ᐸ ) CANADIAN SYLLABICS PWA → MIDDLE DOT, CANADIAN SYLLABICS PA        # →ᐧᐸ→
+
+1446 ; 00B7 1439 ;     SL      # ( ᑆ → ·ᐹ ) CANADIAN SYLLABICS PWAA → MIDDLE DOT, CANADIAN SYLLABICS PAA      # →ᐧᐹ→
+
+1457 ; 00B7 144C ;     SL      # ( ᑗ → ·ᑌ ) CANADIAN SYLLABICS TWE → MIDDLE DOT, CANADIAN SYLLABICS TE        # →ᐧᑌ→
+
+1459 ; 00B7 144E ;     SL      # ( ᑙ → ·ᑎ ) CANADIAN SYLLABICS TWI → MIDDLE DOT, CANADIAN SYLLABICS TI        # →ᐧᑎ→
+
+145B ; 00B7 144F ;     SL      # ( ᑛ → ·ᑏ ) CANADIAN SYLLABICS TWII → MIDDLE DOT, CANADIAN SYLLABICS TII      # →ᐧᑏ→
+
+1454 ; 00B7 1450 ;     SL      # ( ᑔ → ·ᑐ ) CANADIAN SYLLABICS CARRIER DI → MIDDLE DOT, CANADIAN SYLLABICS TO # →ᑝ→→ᐧᑐ→
+145D ; 00B7 1450 ;     SL      # ( ᑝ → ·ᑐ ) CANADIAN SYLLABICS TWO → MIDDLE DOT, CANADIAN SYLLABICS TO        # →ᐧᑐ→
+
+145F ; 00B7 1451 ;     SL      # ( ᑟ → ·ᑑ ) CANADIAN SYLLABICS TWOO → MIDDLE DOT, CANADIAN SYLLABICS TOO      # →ᐧᑑ→
+
+1461 ; 00B7 1455 ;     SL      # ( ᑡ → ·ᑕ ) CANADIAN SYLLABICS TWA → MIDDLE DOT, CANADIAN SYLLABICS TA        # →ᐧᑕ→
+
+1463 ; 00B7 1456 ;     SL      # ( ᑣ → ·ᑖ ) CANADIAN SYLLABICS TWAA → MIDDLE DOT, CANADIAN SYLLABICS TAA      # →ᐧᑖ→
+
+1474 ; 00B7 146B ;     SL      # ( ᑴ → ·ᑫ ) CANADIAN SYLLABICS KWE → MIDDLE DOT, CANADIAN SYLLABICS KE        # →ᐧᑫ→
+
+1478 ; 00B7 146E ;     SL      # ( ᑸ → ·ᑮ ) CANADIAN SYLLABICS KWII → MIDDLE DOT, CANADIAN SYLLABICS KII      # →ᐧᑮ→
+
+147C ; 00B7 1470 ;     SL      # ( ᑼ → ·ᑰ ) CANADIAN SYLLABICS KWOO → MIDDLE DOT, CANADIAN SYLLABICS KOO      # →ᐧᑰ→
+
+147E ; 00B7 1472 ;     SL      # ( ᑾ → ·ᑲ ) CANADIAN SYLLABICS KWA → MIDDLE DOT, CANADIAN SYLLABICS KA        # →ᐧᑲ→
+
+1480 ; 00B7 1473 ;     SL      # ( ᒀ → ·ᑳ ) CANADIAN SYLLABICS KWAA → MIDDLE DOT, CANADIAN SYLLABICS KAA      # →ᐧᑳ→
+
+1492 ; 00B7 1489 ;     SL      # ( ᒒ → ·ᒉ ) CANADIAN SYLLABICS CWE → MIDDLE DOT, CANADIAN SYLLABICS CE        # →ᐧᒉ→
+
+1494 ; 00B7 148B ;     SL      # ( ᒔ → ·ᒋ ) CANADIAN SYLLABICS CWI → MIDDLE DOT, CANADIAN SYLLABICS CI        # →ᐧᒋ→
+
+1496 ; 00B7 148C ;     SL      # ( ᒖ → ·ᒌ ) CANADIAN SYLLABICS CWII → MIDDLE DOT, CANADIAN SYLLABICS CII      # →ᐧᒌ→
+
+149A ; 00B7 148E ;     SL      # ( ᒚ → ·ᒎ ) CANADIAN SYLLABICS CWOO → MIDDLE DOT, CANADIAN SYLLABICS COO      # →ᐧᒎ→
+
+149C ; 00B7 1490 ;     SL      # ( ᒜ → ·ᒐ ) CANADIAN SYLLABICS CWA → MIDDLE DOT, CANADIAN SYLLABICS CA        # →ᐧᒐ→
+
+149E ; 00B7 1491 ;     SL      # ( ᒞ → ·ᒑ ) CANADIAN SYLLABICS CWAA → MIDDLE DOT, CANADIAN SYLLABICS CAA      # →ᐧᒑ→
+
+14AC ; 00B7 14A3 ;     SL      # ( ᒬ → ·ᒣ ) CANADIAN SYLLABICS MWE → MIDDLE DOT, CANADIAN SYLLABICS ME        # →ᐧᒣ→
+
+14AE ; 00B7 14A5 ;     SL      # ( ᒮ → ·ᒥ ) CANADIAN SYLLABICS MWI → MIDDLE DOT, CANADIAN SYLLABICS MI        # →ᐧᒥ→
+
+14B0 ; 00B7 14A6 ;     SL      # ( ᒰ → ·ᒦ ) CANADIAN SYLLABICS MWII → MIDDLE DOT, CANADIAN SYLLABICS MII      # →ᐧᒦ→
+
+14B2 ; 00B7 14A7 ;     SL      # ( ᒲ → ·ᒧ ) CANADIAN SYLLABICS MWO → MIDDLE DOT, CANADIAN SYLLABICS MO        # →ᐧᒧ→
+
+14B4 ; 00B7 14A8 ;     SL      # ( ᒴ → ·ᒨ ) CANADIAN SYLLABICS MWOO → MIDDLE DOT, CANADIAN SYLLABICS MOO      # →ᐧᒨ→
+
+14B6 ; 00B7 14AA ;     SL      # ( ᒶ → ·ᒪ ) CANADIAN SYLLABICS MWA → MIDDLE DOT, CANADIAN SYLLABICS MA        # →ᐧᒪ→
+
+14B8 ; 00B7 14AB ;     SL      # ( ᒸ → ·ᒫ ) CANADIAN SYLLABICS MWAA → MIDDLE DOT, CANADIAN SYLLABICS MAA      # →ᐧᒫ→
+
+14C9 ; 00B7 14C0 ;     SL      # ( ᓉ → ·ᓀ ) CANADIAN SYLLABICS NWE → MIDDLE DOT, CANADIAN SYLLABICS NE        # →ᐧᓀ→
+
+14CB ; 00B7 14C7 ;     SL      # ( ᓋ → ·ᓇ ) CANADIAN SYLLABICS NWA → MIDDLE DOT, CANADIAN SYLLABICS NA        # →ᐧᓇ→
+
+14CD ; 00B7 14C8 ;     SL      # ( ᓍ → ·ᓈ ) CANADIAN SYLLABICS NWAA → MIDDLE DOT, CANADIAN SYLLABICS NAA      # →ᐧᓈ→
+
+14DC ; 00B7 14D3 ;     SL      # ( ᓜ → ·ᓓ ) CANADIAN SYLLABICS LWE → MIDDLE DOT, CANADIAN SYLLABICS LE        # →ᐧᓓ→
+
+14DE ; 00B7 14D5 ;     SL      # ( ᓞ → ·ᓕ ) CANADIAN SYLLABICS LWI → MIDDLE DOT, CANADIAN SYLLABICS LI        # →ᐧᓕ→
+
+14E0 ; 00B7 14D6 ;     SL      # ( ᓠ → ·ᓖ ) CANADIAN SYLLABICS LWII → MIDDLE DOT, CANADIAN SYLLABICS LII      # →ᐧᓖ→
+
+14E2 ; 00B7 14D7 ;     SL      # ( ᓢ → ·ᓗ ) CANADIAN SYLLABICS LWO → MIDDLE DOT, CANADIAN SYLLABICS LO        # →ᐧᓗ→
+
+14E4 ; 00B7 14D8 ;     SL      # ( ᓤ → ·ᓘ ) CANADIAN SYLLABICS LWOO → MIDDLE DOT, CANADIAN SYLLABICS LOO      # →ᐧᓘ→
+
+14E6 ; 00B7 14DA ;     SL      # ( ᓦ → ·ᓚ ) CANADIAN SYLLABICS LWA → MIDDLE DOT, CANADIAN SYLLABICS LA        # →ᐧᓚ→
+
+14E8 ; 00B7 14DB ;     SL      # ( ᓨ → ·ᓛ ) CANADIAN SYLLABICS LWAA → MIDDLE DOT, CANADIAN SYLLABICS LAA      # →ᐧᓛ→
+
+14F6 ; 00B7 14ED ;     SL      # ( ᓶ → ·ᓭ ) CANADIAN SYLLABICS SWE → MIDDLE DOT, CANADIAN SYLLABICS SE        # →ᐧᓭ→
+
+14F8 ; 00B7 14EF ;     SL      # ( ᓸ → ·ᓯ ) CANADIAN SYLLABICS SWI → MIDDLE DOT, CANADIAN SYLLABICS SI        # →ᐧᓯ→
+
+14FA ; 00B7 14F0 ;     SL      # ( ᓺ → ·ᓰ ) CANADIAN SYLLABICS SWII → MIDDLE DOT, CANADIAN SYLLABICS SII      # →ᐧᓰ→
+
+14FC ; 00B7 14F1 ;     SL      # ( ᓼ → ·ᓱ ) CANADIAN SYLLABICS SWO → MIDDLE DOT, CANADIAN SYLLABICS SO        # →ᐧᓱ→
+
+14FE ; 00B7 14F2 ;     SL      # ( ᓾ → ·ᓲ ) CANADIAN SYLLABICS SWOO → MIDDLE DOT, CANADIAN SYLLABICS SOO      # →ᐧᓲ→
+
+1500 ; 00B7 14F4 ;     SL      # ( ᔀ → ·ᓴ ) CANADIAN SYLLABICS SWA → MIDDLE DOT, CANADIAN SYLLABICS SA        # →ᐧᓴ→
+
+1502 ; 00B7 14F5 ;     SL      # ( ᔂ → ·ᓵ ) CANADIAN SYLLABICS SWAA → MIDDLE DOT, CANADIAN SYLLABICS SAA      # →ᐧᓵ→
+
+1517 ; 00B7 1510 ;     SL      # ( ᔗ → ·ᔐ ) CANADIAN SYLLABICS SHWE → MIDDLE DOT, CANADIAN SYLLABICS SHE      # →ᐧᔐ→
+
+1519 ; 00B7 1511 ;     SL      # ( ᔙ → ·ᔑ ) CANADIAN SYLLABICS SHWI → MIDDLE DOT, CANADIAN SYLLABICS SHI      # →ᐧᔑ→
+
+151B ; 00B7 1512 ;     SL      # ( ᔛ → ·ᔒ ) CANADIAN SYLLABICS SHWII → MIDDLE DOT, CANADIAN SYLLABICS SHII    # →ᐧᔒ→
+
+151D ; 00B7 1513 ;     SL      # ( ᔝ → ·ᔓ ) CANADIAN SYLLABICS SHWO → MIDDLE DOT, CANADIAN SYLLABICS SHO      # →ᐧᔓ→
+
+151F ; 00B7 1514 ;     SL      # ( ᔟ → ·ᔔ ) CANADIAN SYLLABICS SHWOO → MIDDLE DOT, CANADIAN SYLLABICS SHOO    # →ᐧᔔ→
+
+1521 ; 00B7 1515 ;     SL      # ( ᔡ → ·ᔕ ) CANADIAN SYLLABICS SHWA → MIDDLE DOT, CANADIAN SYLLABICS SHA      # →ᐧᔕ→
+
+1523 ; 00B7 1516 ;     SL      # ( ᔣ → ·ᔖ ) CANADIAN SYLLABICS SHWAA → MIDDLE DOT, CANADIAN SYLLABICS SHAA    # →ᐧᔖ→
+
+1531 ; 00B7 1528 ;     SL      # ( ᔱ → ·ᔨ ) CANADIAN SYLLABICS YWI → MIDDLE DOT, CANADIAN SYLLABICS YI        # →ᐧᔨ→
+
+1533 ; 00B7 1529 ;     SL      # ( ᔳ → ·ᔩ ) CANADIAN SYLLABICS YWII → MIDDLE DOT, CANADIAN SYLLABICS YII      # →ᐧᔩ→
+
+1535 ; 00B7 152A ;     SL      # ( ᔵ → ·ᔪ ) CANADIAN SYLLABICS YWO → MIDDLE DOT, CANADIAN SYLLABICS YO        # →ᐧᔪ→
+
+1537 ; 00B7 152B ;     SL      # ( ᔷ → ·ᔫ ) CANADIAN SYLLABICS YWOO → MIDDLE DOT, CANADIAN SYLLABICS YOO      # →ᐧᔫ→
+
+1539 ; 00B7 152D ;     SL      # ( ᔹ → ·ᔭ ) CANADIAN SYLLABICS YWA → MIDDLE DOT, CANADIAN SYLLABICS YA        # →ᐧᔭ→
+
+153B ; 00B7 152E ;     SL      # ( ᔻ → ·ᔮ ) CANADIAN SYLLABICS YWAA → MIDDLE DOT, CANADIAN SYLLABICS YAA      # →ᐧᔮ→
+
+154E ; 00B7 154C ;     SL      # ( ᕎ → ·ᕌ ) CANADIAN SYLLABICS RWAA → MIDDLE DOT, CANADIAN SYLLABICS RAA      # →ᐧᕌ→
+
+155B ; 00B7 155A ;     SL      # ( ᕛ → ·ᕚ ) CANADIAN SYLLABICS FWAA → MIDDLE DOT, CANADIAN SYLLABICS FAA      # →ᐧᕚ→
+
+1568 ; 00B7 1567 ;     SL      # ( ᕨ → ·ᕧ ) CANADIAN SYLLABICS THWAA → MIDDLE DOT, CANADIAN SYLLABICS THAA    # →ᐧᕧ→
+
+FE19 ; 205D ;  SL      #* ( ︙ → ⁝ ) PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS → TRICOLON      # 
+22EE ; 205D ;  SL      #* ( ⋮ → ⁝ ) VERTICAL ELLIPSIS → TRICOLON       # →︙→
+
+0060 ; 0027 ;  SL      #* ( ` → ' ) GRAVE ACCENT → APOSTROPHE      # →ˋ→→`→→‘→
+1FEF ; 0027 ;  SL      #* ( ` → ' ) GREEK VARIA → APOSTROPHE     # →ˋ→→`→→‘→
+FF40 ; 0027 ;  SL      #* ( ` → ' ) FULLWIDTH GRAVE ACCENT → APOSTROPHE  # →‘→
+00B4 ; 0027 ;  SL      #* ( ´ → ' ) ACUTE ACCENT → APOSTROPHE     # →΄→→ʹ→
+0384 ; 0027 ;  SL      #* ( ΄ → ' ) GREEK TONOS → APOSTROPHE      # →ʹ→
+1FFD ; 0027 ;  SL      #* ( ´ → ' ) GREEK OXIA → APOSTROPHE      # →ˊ→→ʹ→→′→
+1FBD ; 0027 ;  SL      #* ( ᾽ → ' ) GREEK KORONIS → APOSTROPHE   # →’→
+1FBF ; 0027 ;  SL      #* ( ᾿ → ' ) GREEK PSILI → APOSTROPHE     # →’→
+1FFE ; 0027 ;  SL      #* ( ῾ → ' ) GREEK DASIA → APOSTROPHE     # →‛→→′→
+055D ; 0027 ;  SL      #* ( ՝ → ' ) ARMENIAN COMMA → APOSTROPHE   # →ˋ→→`→→‘→
+FF07 ; 0027 ;  SL      #* ( ' → ' ) FULLWIDTH APOSTROPHE → APOSTROPHE    # →’→
+2018 ; 0027 ;  SL      #* ( ‘ → ' ) LEFT SINGLE QUOTATION MARK → APOSTROPHE      # 
+2019 ; 0027 ;  SL      #* ( ’ → ' ) RIGHT SINGLE QUOTATION MARK → APOSTROPHE     # 
+201B ; 0027 ;  SL      #* ( ‛ → ' ) SINGLE HIGH-REVERSED-9 QUOTATION MARK → APOSTROPHE   # →′→
+2032 ; 0027 ;  SL      #* ( ′ → ' ) PRIME → APOSTROPHE   # 
+2035 ; 0027 ;  SL      #* ( ‵ → ' ) REVERSED PRIME → APOSTROPHE  # →ʽ→→‘→
+055A ; 0027 ;  SL      #* ( ՚ → ' ) ARMENIAN APOSTROPHE → APOSTROPHE      # →’→
+05F3 ; 0027 ;  SL      #* ( ‎׳‎ → ' ) HEBREW PUNCTUATION GERESH → APOSTROPHE  # 
+02B9 ; 0027 ;  SL      # ( ʹ → ' ) MODIFIER LETTER PRIME → APOSTROPHE     # 
+0374 ; 0027 ;  SL      # ( ʹ → ' ) GREEK NUMERAL SIGN → APOSTROPHE        # →′→
+02CA ; 0027 ;  SL      # ( ˊ → ' ) MODIFIER LETTER ACUTE ACCENT → APOSTROPHE      # →ʹ→→′→
+02CB ; 0027 ;  SL      # ( ˋ → ' ) MODIFIER LETTER GRAVE ACCENT → APOSTROPHE      # →`→→‘→
+02F4 ; 0027 ;  SL      #* ( ˴ → ' ) MODIFIER LETTER MIDDLE GRAVE ACCENT → APOSTROPHE      # →ˋ→→`→→‘→
+02BB ; 0027 ;  SL      # ( ʻ → ' ) MODIFIER LETTER TURNED COMMA → APOSTROPHE      # →‘→
+02BD ; 0027 ;  SL      # ( ʽ → ' ) MODIFIER LETTER REVERSED COMMA → APOSTROPHE    # →‘→
+02BC ; 0027 ;  SL      # ( ʼ → ' ) MODIFIER LETTER APOSTROPHE → APOSTROPHE        # →′→
+02BE ; 0027 ;  SL      # ( ʾ → ' ) MODIFIER LETTER RIGHT HALF RING → APOSTROPHE   # →ʼ→→′→
+A78C ; 0027 ;  SL      # ( ꞌ → ' ) LATIN SMALL LETTER SALTILLO → APOSTROPHE      # 
+05D9 ; 0027 ;  SL      # ( ‎י‎ → ' ) HEBREW LETTER YOD → APOSTROPHE   # 
+07F4 ; 0027 ;  SL      # ( ‎ߴ‎ → ' ) NKO HIGH TONE APOSTROPHE → APOSTROPHE    # →’→
+07F5 ; 0027 ;  SL      # ( ‎ߵ‎ → ' ) NKO LOW TONE APOSTROPHE → APOSTROPHE     # →‘→
+
+02DD ; 0027 0027 ;     SL      #* ( ˝ → '' ) DOUBLE ACUTE ACCENT → APOSTROPHE, APOSTROPHE # →"→
+0022 ; 0027 0027 ;     SL      #* ( " → '' ) QUOTATION MARK → APOSTROPHE, APOSTROPHE       # 
+FF02 ; 0027 0027 ;     SL      #* ( " → '' ) FULLWIDTH QUOTATION MARK → APOSTROPHE, APOSTROPHE   # →”→→"→
+201C ; 0027 0027 ;     SL      #* ( “ → '' ) LEFT DOUBLE QUOTATION MARK → APOSTROPHE, APOSTROPHE # →"→
+201D ; 0027 0027 ;     SL      #* ( ” → '' ) RIGHT DOUBLE QUOTATION MARK → APOSTROPHE, APOSTROPHE        # →"→
+201F ; 0027 0027 ;     SL      #* ( ‟ → '' ) DOUBLE HIGH-REVERSED-9 QUOTATION MARK → APOSTROPHE, APOSTROPHE      # →”→→"→
+2033 ; 0027 0027 ;     SL      #* ( ″ → '' ) DOUBLE PRIME → APOSTROPHE, APOSTROPHE       # →"→
+2036 ; 0027 0027 ;     SL      #* ( ‶ → '' ) REVERSED DOUBLE PRIME → APOSTROPHE, APOSTROPHE      # →‵‵→
+3003 ; 0027 0027 ;     SL      #* ( 〃 → '' ) DITTO MARK → APOSTROPHE, APOSTROPHE # →″→→"→
+05F4 ; 0027 0027 ;     SL      #* ( ‎״‎ → '' ) HEBREW PUNCTUATION GERSHAYIM → APOSTROPHE, APOSTROPHE  # →"→
+02BA ; 0027 0027 ;     SL      # ( ʺ → '' ) MODIFIER LETTER DOUBLE PRIME → APOSTROPHE, APOSTROPHE # →"→
+02F6 ; 0027 0027 ;     SL      #* ( ˶ → '' ) MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT → APOSTROPHE, APOSTROPHE  # →˝→→"→
+02EE ; 0027 0027 ;     SL      # ( ˮ → '' ) MODIFIER LETTER DOUBLE APOSTROPHE → APOSTROPHE, APOSTROPHE    # →″→→"→
+05F2 ; 0027 0027 ;     SL      # ( ‎ײ‎ → '' ) HEBREW LIGATURE YIDDISH DOUBLE YOD → APOSTROPHE, APOSTROPHE     # →‎יי‎→
+
+2034 ; 0027 0027 0027 ;        SL      #* ( ‴ → ''' ) TRIPLE PRIME → APOSTROPHE, APOSTROPHE, APOSTROPHE  # →′′′→
+2037 ; 0027 0027 0027 ;        SL      #* ( ‷ → ''' ) REVERSED TRIPLE PRIME → APOSTROPHE, APOSTROPHE, APOSTROPHE # →‵‵‵→
+
+2057 ; 0027 0027 0027 0027 ;   SL      #* ( ⁗ → '''' ) QUADRUPLE PRIME → APOSTROPHE, APOSTROPHE, APOSTROPHE, APOSTROPHE  # →′′′′→
+
+FF3B ; 0028 ;  SL      #* ( [ → ( ) FULLWIDTH LEFT SQUARE BRACKET → LEFT PARENTHESIS     # →〔→
+3014 ; 0028 ;  SL      #* ( 〔 → ( ) LEFT TORTOISE SHELL BRACKET → LEFT PARENTHESIS       # 
+FD3E ; 0028 ;  SL      #* ( ﴾ → ( ) ORNATE LEFT PARENTHESIS → LEFT PARENTHESIS   # 
+2768 ; 0028 ;  SL      #* ( ❨ → ( ) MEDIUM LEFT PARENTHESIS ORNAMENT → LEFT PARENTHESIS  # 
+2772 ; 0028 ;  SL      #* ( ❲ → ( ) LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT → LEFT PARENTHESIS        # →〔→
+
+3220 ; 0028 30FC 0029 ;        SL      #* ( ㈠ → (ー) ) PARENTHESIZED IDEOGRAPH ONE → LEFT PARENTHESIS, KATAKANA-HIRAGANA PROLONGED SOUND MARK, RIGHT PARENTHESIS        # →(一)→
+
+247D ; 0028 0031 0030 0029 ;   SL      #* ( ⑽ → (10) ) PARENTHESIZED NUMBER TEN → LEFT PARENTHESIS, DIGIT ONE, DIGIT ZERO, RIGHT PARENTHESIS     # 
+
+2475 ; 0028 0032 0029 ;        SL      #* ( ⑵ → (2) ) PARENTHESIZED DIGIT TWO → LEFT PARENTHESIS, DIGIT TWO, RIGHT PARENTHESIS   # 
+
+2487 ; 0028 0032 0030 0029 ;   SL      #* ( ⒇ → (20) ) PARENTHESIZED NUMBER TWENTY → LEFT PARENTHESIS, DIGIT TWO, DIGIT ZERO, RIGHT PARENTHESIS  # 
+
+2476 ; 0028 0033 0029 ;        SL      #* ( ⑶ → (3) ) PARENTHESIZED DIGIT THREE → LEFT PARENTHESIS, DIGIT THREE, RIGHT PARENTHESIS       # 
+
+2477 ; 0028 0034 0029 ;        SL      #* ( ⑷ → (4) ) PARENTHESIZED DIGIT FOUR → LEFT PARENTHESIS, DIGIT FOUR, RIGHT PARENTHESIS # 
+
+2478 ; 0028 0035 0029 ;        SL      #* ( ⑸ → (5) ) PARENTHESIZED DIGIT FIVE → LEFT PARENTHESIS, DIGIT FIVE, RIGHT PARENTHESIS # 
+
+2479 ; 0028 0036 0029 ;        SL      #* ( ⑹ → (6) ) PARENTHESIZED DIGIT SIX → LEFT PARENTHESIS, DIGIT SIX, RIGHT PARENTHESIS   # 
+
+247A ; 0028 0037 0029 ;        SL      #* ( ⑺ → (7) ) PARENTHESIZED DIGIT SEVEN → LEFT PARENTHESIS, DIGIT SEVEN, RIGHT PARENTHESIS       # 
+
+247B ; 0028 0038 0029 ;        SL      #* ( ⑻ → (8) ) PARENTHESIZED DIGIT EIGHT → LEFT PARENTHESIS, DIGIT EIGHT, RIGHT PARENTHESIS       # 
+
+247C ; 0028 0039 0029 ;        SL      #* ( ⑼ → (9) ) PARENTHESIZED DIGIT NINE → LEFT PARENTHESIS, DIGIT NINE, RIGHT PARENTHESIS # 
+
+249C ; 0028 0061 0029 ;        SL      #* ( ⒜ → (a) ) PARENTHESIZED LATIN SMALL LETTER A → LEFT PARENTHESIS, LATIN SMALL LETTER A, RIGHT PARENTHESIS     # 
+
+249D ; 0028 0062 0029 ;        SL      #* ( ⒝ → (b) ) PARENTHESIZED LATIN SMALL LETTER B → LEFT PARENTHESIS, LATIN SMALL LETTER B, RIGHT PARENTHESIS     # 
+
+249E ; 0028 0063 0029 ;        SL      #* ( ⒞ → (c) ) PARENTHESIZED LATIN SMALL LETTER C → LEFT PARENTHESIS, LATIN SMALL LETTER C, RIGHT PARENTHESIS     # 
+
+249F ; 0028 0064 0029 ;        SL      #* ( ⒟ → (d) ) PARENTHESIZED LATIN SMALL LETTER D → LEFT PARENTHESIS, LATIN SMALL LETTER D, RIGHT PARENTHESIS     # 
+
+24A0 ; 0028 0065 0029 ;        SL      #* ( ⒠ → (e) ) PARENTHESIZED LATIN SMALL LETTER E → LEFT PARENTHESIS, LATIN SMALL LETTER E, RIGHT PARENTHESIS     # 
+
+24A1 ; 0028 0066 0029 ;        SL      #* ( ⒡ → (f) ) PARENTHESIZED LATIN SMALL LETTER F → LEFT PARENTHESIS, LATIN SMALL LETTER F, RIGHT PARENTHESIS     # 
+
+24A2 ; 0028 0067 0029 ;        SL      #* ( ⒢ → (g) ) PARENTHESIZED LATIN SMALL LETTER G → LEFT PARENTHESIS, LATIN SMALL LETTER G, RIGHT PARENTHESIS     # 
+
+24A3 ; 0028 0068 0029 ;        SL      #* ( ⒣ → (h) ) PARENTHESIZED LATIN SMALL LETTER H → LEFT PARENTHESIS, LATIN SMALL LETTER H, RIGHT PARENTHESIS     # 
+
+24A4 ; 0028 0069 0029 ;        SL      #* ( ⒤ → (i) ) PARENTHESIZED LATIN SMALL LETTER I → LEFT PARENTHESIS, LATIN SMALL LETTER I, RIGHT PARENTHESIS     # 
+
+24A5 ; 0028 006A 0029 ;        SL      #* ( ⒥ → (j) ) PARENTHESIZED LATIN SMALL LETTER J → LEFT PARENTHESIS, LATIN SMALL LETTER J, RIGHT PARENTHESIS     # 
+
+24A6 ; 0028 006B 0029 ;        SL      #* ( ⒦ → (k) ) PARENTHESIZED LATIN SMALL LETTER K → LEFT PARENTHESIS, LATIN SMALL LETTER K, RIGHT PARENTHESIS     # 
+
+2474 ; 0028 006C 0029 ;        SL      #* ( ⑴ → (l) ) PARENTHESIZED DIGIT ONE → LEFT PARENTHESIS, LATIN SMALL LETTER L, RIGHT PARENTHESIS        # →(1)→
+1F118 ;        0028 006C 0029 ;        SL      #* ( 🄘 → (l) ) PARENTHESIZED LATIN CAPITAL LETTER I → LEFT PARENTHESIS, LATIN SMALL LETTER L, RIGHT PARENTHESIS  # →(I)→
+24A7 ; 0028 006C 0029 ;        SL      #* ( ⒧ → (l) ) PARENTHESIZED LATIN SMALL LETTER L → LEFT PARENTHESIS, LATIN SMALL LETTER L, RIGHT PARENTHESIS     # 
+
+247F ; 0028 006C 0032 0029 ;   SL      #* ( ⑿ → (l2) ) PARENTHESIZED NUMBER TWELVE → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT TWO, RIGHT PARENTHESIS        # →(12)→
+
+2480 ; 0028 006C 0033 0029 ;   SL      #* ( ⒀ → (l3) ) PARENTHESIZED NUMBER THIRTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT THREE, RIGHT PARENTHESIS    # →(13)→
+
+2481 ; 0028 006C 0034 0029 ;   SL      #* ( ⒁ → (l4) ) PARENTHESIZED NUMBER FOURTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT FOUR, RIGHT PARENTHESIS     # →(14)→
+
+2482 ; 0028 006C 0035 0029 ;   SL      #* ( ⒂ → (l5) ) PARENTHESIZED NUMBER FIFTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT FIVE, RIGHT PARENTHESIS      # →(15)→
+
+2483 ; 0028 006C 0036 0029 ;   SL      #* ( ⒃ → (l6) ) PARENTHESIZED NUMBER SIXTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT SIX, RIGHT PARENTHESIS       # →(16)→
+
+2484 ; 0028 006C 0037 0029 ;   SL      #* ( ⒄ → (l7) ) PARENTHESIZED NUMBER SEVENTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT SEVEN, RIGHT PARENTHESIS   # →(17)→
+
+2485 ; 0028 006C 0038 0029 ;   SL      #* ( ⒅ → (l8) ) PARENTHESIZED NUMBER EIGHTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT EIGHT, RIGHT PARENTHESIS    # →(18)→
+
+2486 ; 0028 006C 0039 0029 ;   SL      #* ( ⒆ → (l9) ) PARENTHESIZED NUMBER NINETEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT NINE, RIGHT PARENTHESIS     # →(19)→
+
+247E ; 0028 006C 006C 0029 ;   SL      #* ( ⑾ → (ll) ) PARENTHESIZED NUMBER ELEVEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, LATIN SMALL LETTER L, RIGHT PARENTHESIS     # →(11)→
+
+24A9 ; 0028 006E 0029 ;        SL      #* ( ⒩ → (n) ) PARENTHESIZED LATIN SMALL LETTER N → LEFT PARENTHESIS, LATIN SMALL LETTER N, RIGHT PARENTHESIS     # 
+
+24AA ; 0028 006F 0029 ;        SL      #* ( ⒪ → (o) ) PARENTHESIZED LATIN SMALL LETTER O → LEFT PARENTHESIS, LATIN SMALL LETTER O, RIGHT PARENTHESIS     # 
+
+24AB ; 0028 0070 0029 ;        SL      #* ( ⒫ → (p) ) PARENTHESIZED LATIN SMALL LETTER P → LEFT PARENTHESIS, LATIN SMALL LETTER P, RIGHT PARENTHESIS     # 
+
+24AC ; 0028 0071 0029 ;        SL      #* ( ⒬ → (q) ) PARENTHESIZED LATIN SMALL LETTER Q → LEFT PARENTHESIS, LATIN SMALL LETTER Q, RIGHT PARENTHESIS     # 
+
+24AD ; 0028 0072 0029 ;        SL      #* ( ⒭ → (r) ) PARENTHESIZED LATIN SMALL LETTER R → LEFT PARENTHESIS, LATIN SMALL LETTER R, RIGHT PARENTHESIS     # 
+
+24A8 ; 0028 0072 006E 0029 ;   SL      #* ( ⒨ → (rn) ) PARENTHESIZED LATIN SMALL LETTER M → LEFT PARENTHESIS, LATIN SMALL LETTER R, LATIN SMALL LETTER N, RIGHT PARENTHESIS      # →(m)→
+
+24AE ; 0028 0073 0029 ;        SL      #* ( ⒮ → (s) ) PARENTHESIZED LATIN SMALL LETTER S → LEFT PARENTHESIS, LATIN SMALL LETTER S, RIGHT PARENTHESIS     # 
+
+1F12A ;        1F122 ; SL      #* ( 🄪 → 🄢 ) TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S → PARENTHESIZED LATIN CAPITAL LETTER S   # →〔S〕→→(S)→
+
+24AF ; 0028 0074 0029 ;        SL      #* ( ⒯ → (t) ) PARENTHESIZED LATIN SMALL LETTER T → LEFT PARENTHESIS, LATIN SMALL LETTER T, RIGHT PARENTHESIS     # 
+
+24B0 ; 0028 0075 0029 ;        SL      #* ( ⒰ → (u) ) PARENTHESIZED LATIN SMALL LETTER U → LEFT PARENTHESIS, LATIN SMALL LETTER U, RIGHT PARENTHESIS     # 
+
+24B1 ; 0028 0076 0029 ;        SL      #* ( ⒱ → (v) ) PARENTHESIZED LATIN SMALL LETTER V → LEFT PARENTHESIS, LATIN SMALL LETTER V, RIGHT PARENTHESIS     # 
+
+24B2 ; 0028 0076 0076 0029 ;   SL      #* ( ⒲ → (vv) ) PARENTHESIZED LATIN SMALL LETTER W → LEFT PARENTHESIS, LATIN SMALL LETTER V, LATIN SMALL LETTER V, RIGHT PARENTHESIS      # →(w)→
+
+24B3 ; 0028 0078 0029 ;        SL      #* ( ⒳ → (x) ) PARENTHESIZED LATIN SMALL LETTER X → LEFT PARENTHESIS, LATIN SMALL LETTER X, RIGHT PARENTHESIS     # 
+
+24B4 ; 0028 0079 0029 ;        SL      #* ( ⒴ → (y) ) PARENTHESIZED LATIN SMALL LETTER Y → LEFT PARENTHESIS, LATIN SMALL LETTER Y, RIGHT PARENTHESIS     # 
+
+24B5 ; 0028 007A 0029 ;        SL      #* ( ⒵ → (z) ) PARENTHESIZED LATIN SMALL LETTER Z → LEFT PARENTHESIS, LATIN SMALL LETTER Z, RIGHT PARENTHESIS     # 
+
+3200 ; 0028 1100 0029 ;        SL      #* ( ㈀ → (ᄀ) ) PARENTHESIZED HANGUL KIYEOK → LEFT PARENTHESIS, HANGUL CHOSEONG KIYEOK, RIGHT PARENTHESIS        # 
+
+320E ; 0028 AC00 0029 ;        SL      #* ( ㈎ → (가) ) PARENTHESIZED HANGUL KIYEOK A → LEFT PARENTHESIS, HANGUL SYLLABLE GA, RIGHT PARENTHESIS  # 
+
+3201 ; 0028 1102 0029 ;        SL      #* ( ㈁ → (ᄂ) ) PARENTHESIZED HANGUL NIEUN → LEFT PARENTHESIS, HANGUL CHOSEONG NIEUN, RIGHT PARENTHESIS  # 
+
+320F ; 0028 B098 0029 ;        SL      #* ( ㈏ → (나) ) PARENTHESIZED HANGUL NIEUN A → LEFT PARENTHESIS, HANGUL SYLLABLE NA, RIGHT PARENTHESIS   # 
+
+3202 ; 0028 1103 0029 ;        SL      #* ( ㈂ → (ᄃ) ) PARENTHESIZED HANGUL TIKEUT → LEFT PARENTHESIS, HANGUL CHOSEONG TIKEUT, RIGHT PARENTHESIS        # 
+
+3210 ; 0028 B2E4 0029 ;        SL      #* ( ㈐ → (다) ) PARENTHESIZED HANGUL TIKEUT A → LEFT PARENTHESIS, HANGUL SYLLABLE DA, RIGHT PARENTHESIS  # 
+
+3203 ; 0028 1105 0029 ;        SL      #* ( ㈃ → (ᄅ) ) PARENTHESIZED HANGUL RIEUL → LEFT PARENTHESIS, HANGUL CHOSEONG RIEUL, RIGHT PARENTHESIS  # 
+
+3211 ; 0028 B77C 0029 ;        SL      #* ( ㈑ → (라) ) PARENTHESIZED HANGUL RIEUL A → LEFT PARENTHESIS, HANGUL SYLLABLE RA, RIGHT PARENTHESIS   # 
+
+3204 ; 0028 1106 0029 ;        SL      #* ( ㈄ → (ᄆ) ) PARENTHESIZED HANGUL MIEUM → LEFT PARENTHESIS, HANGUL CHOSEONG MIEUM, RIGHT PARENTHESIS  # 
+
+3212 ; 0028 B9C8 0029 ;        SL      #* ( ㈒ → (마) ) PARENTHESIZED HANGUL MIEUM A → LEFT PARENTHESIS, HANGUL SYLLABLE MA, RIGHT PARENTHESIS   # 
+
+3205 ; 0028 1107 0029 ;        SL      #* ( ㈅ → (ᄇ) ) PARENTHESIZED HANGUL PIEUP → LEFT PARENTHESIS, HANGUL CHOSEONG PIEUP, RIGHT PARENTHESIS  # 
+
+3213 ; 0028 BC14 0029 ;        SL      #* ( ㈓ → (바) ) PARENTHESIZED HANGUL PIEUP A → LEFT PARENTHESIS, HANGUL SYLLABLE BA, RIGHT PARENTHESIS   # 
+
+3206 ; 0028 1109 0029 ;        SL      #* ( ㈆ → (ᄉ) ) PARENTHESIZED HANGUL SIOS → LEFT PARENTHESIS, HANGUL CHOSEONG SIOS, RIGHT PARENTHESIS    # 
+
+3214 ; 0028 C0AC 0029 ;        SL      #* ( ㈔ → (사) ) PARENTHESIZED HANGUL SIOS A → LEFT PARENTHESIS, HANGUL SYLLABLE SA, RIGHT PARENTHESIS    # 
+
+3207 ; 0028 110B 0029 ;        SL      #* ( ㈇ → (ᄋ) ) PARENTHESIZED HANGUL IEUNG → LEFT PARENTHESIS, HANGUL CHOSEONG IEUNG, RIGHT PARENTHESIS  # 
+
+3215 ; 0028 C544 0029 ;        SL      #* ( ㈕ → (아) ) PARENTHESIZED HANGUL IEUNG A → LEFT PARENTHESIS, HANGUL SYLLABLE A, RIGHT PARENTHESIS    # 
+
+321D ; 0028 C624 C804 0029 ;   SL      #* ( ㈝ → (오전) ) PARENTHESIZED KOREAN CHARACTER OJEON → LEFT PARENTHESIS, HANGUL SYLLABLE O, HANGUL SYLLABLE JEON, RIGHT PARENTHESIS   # 
+
+321E ; 0028 C624 D6C4 0029 ;   SL      #* ( ㈞ → (오후) ) PARENTHESIZED KOREAN CHARACTER O HU → LEFT PARENTHESIS, HANGUL SYLLABLE O, HANGUL SYLLABLE HU, RIGHT PARENTHESIS      # 
+
+3208 ; 0028 110C 0029 ;        SL      #* ( ㈈ → (ᄌ) ) PARENTHESIZED HANGUL CIEUC → LEFT PARENTHESIS, HANGUL CHOSEONG CIEUC, RIGHT PARENTHESIS  # 
+
+3216 ; 0028 C790 0029 ;        SL      #* ( ㈖ → (자) ) PARENTHESIZED HANGUL CIEUC A → LEFT PARENTHESIS, HANGUL SYLLABLE JA, RIGHT PARENTHESIS   # 
+
+321C ; 0028 C8FC 0029 ;        SL      #* ( ㈜ → (주) ) PARENTHESIZED HANGUL CIEUC U → LEFT PARENTHESIS, HANGUL SYLLABLE JU, RIGHT PARENTHESIS   # 
+
+3209 ; 0028 110E 0029 ;        SL      #* ( ㈉ → (ᄎ) ) PARENTHESIZED HANGUL CHIEUCH → LEFT PARENTHESIS, HANGUL CHOSEONG CHIEUCH, RIGHT PARENTHESIS      # 
+
+3217 ; 0028 CC28 0029 ;        SL      #* ( ㈗ → (차) ) PARENTHESIZED HANGUL CHIEUCH A → LEFT PARENTHESIS, HANGUL SYLLABLE CA, RIGHT PARENTHESIS # 
+
+320A ; 0028 110F 0029 ;        SL      #* ( ㈊ → (ᄏ) ) PARENTHESIZED HANGUL KHIEUKH → LEFT PARENTHESIS, HANGUL CHOSEONG KHIEUKH, RIGHT PARENTHESIS      # 
+
+3218 ; 0028 CE74 0029 ;        SL      #* ( ㈘ → (카) ) PARENTHESIZED HANGUL KHIEUKH A → LEFT PARENTHESIS, HANGUL SYLLABLE KA, RIGHT PARENTHESIS # 
+
+320B ; 0028 1110 0029 ;        SL      #* ( ㈋ → (ᄐ) ) PARENTHESIZED HANGUL THIEUTH → LEFT PARENTHESIS, HANGUL CHOSEONG THIEUTH, RIGHT PARENTHESIS      # 
+
+3219 ; 0028 D0C0 0029 ;        SL      #* ( ㈙ → (타) ) PARENTHESIZED HANGUL THIEUTH A → LEFT PARENTHESIS, HANGUL SYLLABLE TA, RIGHT PARENTHESIS # 
+
+320C ; 0028 1111 0029 ;        SL      #* ( ㈌ → (ᄑ) ) PARENTHESIZED HANGUL PHIEUPH → LEFT PARENTHESIS, HANGUL CHOSEONG PHIEUPH, RIGHT PARENTHESIS      # 
+
+321A ; 0028 D30C 0029 ;        SL      #* ( ㈚ → (파) ) PARENTHESIZED HANGUL PHIEUPH A → LEFT PARENTHESIS, HANGUL SYLLABLE PA, RIGHT PARENTHESIS # 
+
+320D ; 0028 1112 0029 ;        SL      #* ( ㈍ → (ᄒ) ) PARENTHESIZED HANGUL HIEUH → LEFT PARENTHESIS, HANGUL CHOSEONG HIEUH, RIGHT PARENTHESIS  # 
+
+321B ; 0028 D558 0029 ;        SL      #* ( ㈛ → (하) ) PARENTHESIZED HANGUL HIEUH A → LEFT PARENTHESIS, HANGUL SYLLABLE HA, RIGHT PARENTHESIS   # 
+
+3226 ; 0028 4E03 0029 ;        SL      #* ( ㈦ → (七) ) PARENTHESIZED IDEOGRAPH SEVEN → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E03, RIGHT PARENTHESIS  # 
+
+3222 ; 0028 4E09 0029 ;        SL      #* ( ㈢ → (三) ) PARENTHESIZED IDEOGRAPH THREE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E09, RIGHT PARENTHESIS  # 
+1F241 ;        0028 4E09 0029 ;        SL      #* ( 🉁 → (三) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E09, RIGHT PARENTHESIS   # →〔三〕→
+
+3228 ; 0028 4E5D 0029 ;        SL      #* ( ㈨ → (九) ) PARENTHESIZED IDEOGRAPH NINE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E5D, RIGHT PARENTHESIS   # 
+
+3221 ; 0028 4E8C 0029 ;        SL      #* ( ㈡ → (二) ) PARENTHESIZED IDEOGRAPH TWO → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E8C, RIGHT PARENTHESIS    # 
+1F242 ;        0028 4E8C 0029 ;        SL      #* ( 🉂 → (二) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E8C, RIGHT PARENTHESIS   # →〔二〕→
+
+3224 ; 0028 4E94 0029 ;        SL      #* ( ㈤ → (五) ) PARENTHESIZED IDEOGRAPH FIVE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E94, RIGHT PARENTHESIS   # 
+
+3239 ; 0028 4EE3 0029 ;        SL      #* ( ㈹ → (代) ) PARENTHESIZED IDEOGRAPH REPRESENT → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4EE3, RIGHT PARENTHESIS      # 
+
+323D ; 0028 4F01 0029 ;        SL      #* ( ㈽ → (企) ) PARENTHESIZED IDEOGRAPH ENTERPRISE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4F01, RIGHT PARENTHESIS     # 
+
+3241 ; 0028 4F11 0029 ;        SL      #* ( ㉁ → (休) ) PARENTHESIZED IDEOGRAPH REST → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4F11, RIGHT PARENTHESIS   # 
+
+3227 ; 0028 516B 0029 ;        SL      #* ( ㈧ → (八) ) PARENTHESIZED IDEOGRAPH EIGHT → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-516B, RIGHT PARENTHESIS  # 
+
+3225 ; 0028 516D 0029 ;        SL      #* ( ㈥ → (六) ) PARENTHESIZED IDEOGRAPH SIX → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-516D, RIGHT PARENTHESIS    # 
+
+3238 ; 0028 52B4 0029 ;        SL      #* ( ㈸ → (労) ) PARENTHESIZED IDEOGRAPH LABOR → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-52B4, RIGHT PARENTHESIS  # 
+
+1F247 ;        0028 52DD 0029 ;        SL      #* ( 🉇 → (勝) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-52DD, RIGHT PARENTHESIS   # →〔勝〕→
+
+3229 ; 0028 5341 0029 ;        SL      #* ( ㈩ → (十) ) PARENTHESIZED IDEOGRAPH TEN → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-5341, RIGHT PARENTHESIS    # 
+
+323F ; 0028 5354 0029 ;        SL      #* ( ㈿ → (協) ) PARENTHESIZED IDEOGRAPH ALLIANCE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-5354, RIGHT PARENTHESIS       # 
+
+3234 ; 0028 540D 0029 ;        SL      #* ( ㈴ → (名) ) PARENTHESIZED IDEOGRAPH NAME → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-540D, RIGHT PARENTHESIS   # 
+
+323A ; 0028 547C 0029 ;        SL      #* ( ㈺ → (呼) ) PARENTHESIZED IDEOGRAPH CALL → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-547C, RIGHT PARENTHESIS   # 
+
+3223 ; 0028 56DB 0029 ;        SL      #* ( ㈣ → (四) ) PARENTHESIZED IDEOGRAPH FOUR → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-56DB, RIGHT PARENTHESIS   # 
+
+322F ; 0028 571F 0029 ;        SL      #* ( ㈯ → (土) ) PARENTHESIZED IDEOGRAPH EARTH → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-571F, RIGHT PARENTHESIS  # 
+
+323B ; 0028 5B66 0029 ;        SL      #* ( ㈻ → (学) ) PARENTHESIZED IDEOGRAPH STUDY → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-5B66, RIGHT PARENTHESIS  # 
+
+1F243 ;        0028 5B89 0029 ;        SL      #* ( 🉃 → (安) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-5B89, RIGHT PARENTHESIS   # →〔安〕→
+
+1F245 ;        0028 6253 0029 ;        SL      #* ( 🉅 → (打) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6253, RIGHT PARENTHESIS   # →〔打〕→
+
+1F248 ;        0028 6557 0029 ;        SL      #* ( 🉈 → (敗) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6557, RIGHT PARENTHESIS   # →〔敗〕→
+
+3230 ; 0028 65E5 0029 ;        SL      #* ( ㈰ → (日) ) PARENTHESIZED IDEOGRAPH SUN → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-65E5, RIGHT PARENTHESIS    # 
+
+322A ; 0028 6708 0029 ;        SL      #* ( ㈪ → (月) ) PARENTHESIZED IDEOGRAPH MOON → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6708, RIGHT PARENTHESIS   # 
+
+3232 ; 0028 6709 0029 ;        SL      #* ( ㈲ → (有) ) PARENTHESIZED IDEOGRAPH HAVE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6709, RIGHT PARENTHESIS   # 
+
+322D ; 0028 6728 0029 ;        SL      #* ( ㈭ → (木) ) PARENTHESIZED IDEOGRAPH WOOD → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6728, RIGHT PARENTHESIS   # 
+
+1F240 ;        0028 672C 0029 ;        SL      #* ( 🉀 → (本) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-672C, RIGHT PARENTHESIS   # →〔本〕→
+
+3231 ; 0028 682A 0029 ;        SL      #* ( ㈱ → (株) ) PARENTHESIZED IDEOGRAPH STOCK → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-682A, RIGHT PARENTHESIS  # 
+
+322C ; 0028 6C34 0029 ;        SL      #* ( ㈬ → (水) ) PARENTHESIZED IDEOGRAPH WATER → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6C34, RIGHT PARENTHESIS  # 
+
+322B ; 0028 706B 0029 ;        SL      #* ( ㈫ → (火) ) PARENTHESIZED IDEOGRAPH FIRE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-706B, RIGHT PARENTHESIS   # 
+
+1F244 ;        0028 70B9 0029 ;        SL      #* ( 🉄 → (点) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-70B9, RIGHT PARENTHESIS   # →〔点〕→
+
+3235 ; 0028 7279 0029 ;        SL      #* ( ㈵ → (特) ) PARENTHESIZED IDEOGRAPH SPECIAL → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-7279, RIGHT PARENTHESIS        # 
+
+1F246 ;        0028 76D7 0029 ;        SL      #* ( 🉆 → (盗) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-76D7, RIGHT PARENTHESIS   # →〔盗〕→
+
+323C ; 0028 76E3 0029 ;        SL      #* ( ㈼ → (監) ) PARENTHESIZED IDEOGRAPH SUPERVISE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-76E3, RIGHT PARENTHESIS      # 
+
+3233 ; 0028 793E 0029 ;        SL      #* ( ㈳ → (社) ) PARENTHESIZED IDEOGRAPH SOCIETY → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-793E, RIGHT PARENTHESIS        # 
+
+3237 ; 0028 795D 0029 ;        SL      #* ( ㈷ → (祝) ) PARENTHESIZED IDEOGRAPH CONGRATULATION → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-795D, RIGHT PARENTHESIS # 
+
+3240 ; 0028 796D 0029 ;        SL      #* ( ㉀ → (祭) ) PARENTHESIZED IDEOGRAPH FESTIVAL → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-796D, RIGHT PARENTHESIS       # 
+
+3242 ; 0028 81EA 0029 ;        SL      #* ( ㉂ → (自) ) PARENTHESIZED IDEOGRAPH SELF → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-81EA, RIGHT PARENTHESIS   # 
+
+3243 ; 0028 81F3 0029 ;        SL      #* ( ㉃ → (至) ) PARENTHESIZED IDEOGRAPH REACH → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-81F3, RIGHT PARENTHESIS  # 
+
+3236 ; 0028 8CA1 0029 ;        SL      #* ( ㈶ → (財) ) PARENTHESIZED IDEOGRAPH FINANCIAL → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-8CA1, RIGHT PARENTHESIS      # 
+
+323E ; 0028 8CC7 0029 ;        SL      #* ( ㈾ → (資) ) PARENTHESIZED IDEOGRAPH RESOURCE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-8CC7, RIGHT PARENTHESIS       # 
+
+322E ; 0028 91D1 0029 ;        SL      #* ( ㈮ → (金) ) PARENTHESIZED IDEOGRAPH METAL → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-91D1, RIGHT PARENTHESIS  # 
+
+FF3D ; 0029 ;  SL      #* ( ] → ) ) FULLWIDTH RIGHT SQUARE BRACKET → RIGHT PARENTHESIS   # →〕→
+3015 ; 0029 ;  SL      #* ( 〕 → ) ) RIGHT TORTOISE SHELL BRACKET → RIGHT PARENTHESIS     # 
+FD3F ; 0029 ;  SL      #* ( ﴿ → ) ) ORNATE RIGHT PARENTHESIS → RIGHT PARENTHESIS # 
+2769 ; 0029 ;  SL      #* ( ❩ → ) ) MEDIUM RIGHT PARENTHESIS ORNAMENT → RIGHT PARENTHESIS        # 
+2773 ; 0029 ;  SL      #* ( ❳ → ) ) LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT → RIGHT PARENTHESIS      # →〕→
+
+2774 ; 007B ;  SL      #* ( ❴ → { ) MEDIUM LEFT CURLY BRACKET ORNAMENT → LEFT CURLY BRACKET      # 
+
+2775 ; 007D ;  SL      #* ( ❵ → } ) MEDIUM RIGHT CURLY BRACKET ORNAMENT → RIGHT CURLY BRACKET    # 
+
+FF3E ; FE3F ;  SL      #* ( ^ → ︿ ) FULLWIDTH CIRCUMFLEX ACCENT → PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET    # 
+
+204E ; 002A ;  SL      #* ( ⁎ → * ) LOW ASTERISK → ASTERISK      # 
+066D ; 002A ;  SL      #* ( ‎٭‎ → * ) ARABIC FIVE POINTED STAR → ASTERISK     # 
+2217 ; 002A ;  SL      #* ( ∗ → * ) ASTERISK OPERATOR → ASTERISK # 
+
+1735 ; 002F ;  SL      #* ( ᜵ → / ) PHILIPPINE SINGLE PUNCTUATION → SOLIDUS      # 
+2044 ; 002F ;  SL      #* ( ⁄ → / ) FRACTION SLASH → SOLIDUS     # 
+2041 ; 002F ;  SL      #* ( ⁁ → / ) CARET INSERTION POINT → SOLIDUS      # 
+2215 ; 002F ;  SL      #* ( ∕ → / ) DIVISION SLASH → SOLIDUS     # 
+2571 ; 002F ;  SL      #* ( ╱ → / ) BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT → SOLIDUS      # 
+29F8 ; 002F ;  SL      #* ( ⧸ → / ) BIG SOLIDUS → SOLIDUS        # 
+31D3 ; 002F ;  SL      #* ( ㇓ → / ) CJK STROKE SP → SOLIDUS      # →⼃→
+3033 ; 002F ;  SL      # ( 〳 → / ) VERTICAL KANA REPEAT MARK UPPER HALF → SOLIDUS        # 
+4E3F ; 002F ;  SL      # ( 丿 → / ) CJK UNIFIED IDEOGRAPH-4E3F → SOLIDUS  # →⼃→
+2F03 ; 002F ;  SL      #* ( ⼃ → / ) KANGXI RADICAL SLASH → SOLIDUS       # 
+
+29F6 ; 002F 0304 ;     SL      #* ( ⧶ → /̄ ) SOLIDUS WITH OVERBAR → SOLIDUS, COMBINING MACRON   # 
+
+2AFD ; 002F 002F ;     SL      #* ( ⫽ → // ) DOUBLE SOLIDUS OPERATOR → SOLIDUS, SOLIDUS  # 
+
+2AFB ; 002F 002F 002F ;        SL      #* ( ⫻ → /// ) TRIPLE SOLIDUS BINARY RELATION → SOLIDUS, SOLIDUS, SOLIDUS # 
+
+FF3C ; 005C ;  SL      #* ( \ → \ ) FULLWIDTH REVERSE SOLIDUS → REVERSE SOLIDUS  # →∖→
+FE68 ; 005C ;  SL      #* ( ﹨ → \ ) SMALL REVERSE SOLIDUS → REVERSE SOLIDUS      # →∖→
+2216 ; 005C ;  SL      #* ( ∖ → \ ) SET MINUS → REVERSE SOLIDUS  # 
+29F5 ; 005C ;  SL      #* ( ⧵ → \ ) REVERSE SOLIDUS OPERATOR → REVERSE SOLIDUS   # 
+29F9 ; 005C ;  SL      #* ( ⧹ → \ ) BIG REVERSE SOLIDUS → REVERSE SOLIDUS        # 
+31D4 ; 005C ;  SL      #* ( ㇔ → \ ) CJK STROKE D → REVERSE SOLIDUS       # →⼂→
+4E36 ; 005C ;  SL      # ( 丶 → \ ) CJK UNIFIED IDEOGRAPH-4E36 → REVERSE SOLIDUS  # →⼂→
+2F02 ; 005C ;  SL      #* ( ⼂ → \ ) KANGXI RADICAL DOT → REVERSE SOLIDUS # 
+
+2CF9 ; 005C 005C ;     SL      #* ( ⳹ → \\ ) COPTIC OLD NUBIAN FULL STOP → REVERSE SOLIDUS, REVERSE SOLIDUS      # 
+244A ; 005C 005C ;     SL      #* ( ⑊ → \\ ) OCR DOUBLE BACKSLASH → REVERSE SOLIDUS, REVERSE SOLIDUS     # 
+
+A778 ; 0026 ;  SL      # ( ꝸ → & ) LATIN SMALL LETTER UM → AMPERSAND     # 
+
+110BB ;        0970 ;  SL      #* ( 𑂻 → ॰ ) KAITHI ABBREVIATION SIGN → DEVANAGARI ABBREVIATION SIGN   # 
+26AC ; 0970 ;  SL      #* ( ⚬ → ॰ ) MEDIUM SMALL WHITE CIRCLE → DEVANAGARI ABBREVIATION SIGN   # 
+
+0F0C ; 0F0B ;  SL      #* ( ༌ → ་ ) TIBETAN MARK DELIMITER TSHEG BSTAR → TIBETAN MARK INTERSYLLABIC TSHEG      # 
+
+02D8 ; 02C7 ;  SL      #* ( ˘ → ˇ ) BREVE → CARON        # 
+A67E ; 02C7 ;  SL      #* ( ꙾ → ˇ ) CYRILLIC KAVYKA → CARON     # →˘→
+
+00AF ; 02C9 ;  SL      #* ( ¯ → ˉ ) MACRON → MODIFIER LETTER MACRON      # 
+FFE3 ; 02C9 ;  SL      #* (  ̄ → ˉ ) FULLWIDTH MACRON → MODIFIER LETTER MACRON   # →‾→
+203E ; 02C9 ;  SL      #* ( ‾ → ˉ ) OVERLINE → MODIFIER LETTER MACRON   # 
+FE49 ; 02C9 ;  SL      #* ( ﹉ → ˉ ) DASHED OVERLINE → MODIFIER LETTER MACRON    # →‾→
+FE4A ; 02C9 ;  SL      #* ( ﹊ → ˉ ) CENTRELINE OVERLINE → MODIFIER LETTER MACRON        # →‾→
+FE4B ; 02C9 ;  SL      #* ( ﹋ → ˉ ) WAVY OVERLINE → MODIFIER LETTER MACRON      # →‾→
+FE4C ; 02C9 ;  SL      #* ( ﹌ → ˉ ) DOUBLE WAVY OVERLINE → MODIFIER LETTER MACRON       # →‾→
+2594 ; 02C9 ;  SL      #* ( ▔ → ˉ ) UPPER ONE EIGHTH BLOCK → MODIFIER LETTER MACRON     # →¯→
+
+0375 ; 02CF ;  SL      #* ( ͵ → ˏ ) GREEK LOWER NUMERAL SIGN → MODIFIER LETTER LOW ACUTE ACCENT  # 
+
+02FB ; 02EA ;  SL      #* ( ˻ → ˪ ) MODIFIER LETTER BEGIN LOW TONE → MODIFIER LETTER YIN DEPARTING TONE MARK     # 
+A716 ; 02EA ;  SL      #* ( ꜖ → ˪ ) MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR → MODIFIER LETTER YIN DEPARTING TONE MARK      # 
+
+A714 ; 02EB ;  SL      #* ( ꜔ → ˫ ) MODIFIER LETTER MID LEFT-STEM TONE BAR → MODIFIER LETTER YANG DEPARTING TONE MARK   # 
+
+2E30 ; 02F3 ;  SL      #* ( ⸰ → ˳ ) RING POINT → MODIFIER LETTER LOW RING       # 
+3002 ; 02F3 ;  SL      #* ( 。 → ˳ ) IDEOGRAPHIC FULL STOP → MODIFIER LETTER LOW RING    # 
+
+02DA ; 00B0 ;  SL      #* ( ˚ → ° ) RING ABOVE → DEGREE SIGN     # 
+2218 ; 00B0 ;  SL      #* ( ∘ → ° ) RING OPERATOR → DEGREE SIGN # 
+25CB ; 00B0 ;  SL      #* ( ○ → ° ) WHITE CIRCLE → DEGREE SIGN  # →◦→→∘→
+25E6 ; 00B0 ;  SL      #* ( ◦ → ° ) WHITE BULLET → DEGREE SIGN  # →∘→
+
+0BF5 ; 0BF3 ;  SL      #* ( ௵ → ௳ ) TAMIL YEAR SIGN → TAMIL DAY SIGN   # 
+
+21B5 ; 21B2 ;  SL      #* ( ↵ → ↲ ) DOWNWARDS ARROW WITH CORNER LEFTWARDS → DOWNWARDS ARROW WITH TIP LEFTWARDS # 
+
+2A21 ; 21BE ;  SL      #* ( ⨡ → ↾ ) Z NOTATION SCHEMA PROJECTION → UPWARDS HARPOON WITH BARB RIGHTWARDS        # 
+
+1D6DB ;        2202 ;  SL      #* ( 𝛛 → ∂ ) MATHEMATICAL BOLD PARTIAL DIFFERENTIAL → PARTIAL DIFFERENTIAL     # 
+1D715 ;        2202 ;  SL      #* ( 𝜕 → ∂ ) MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL → PARTIAL DIFFERENTIAL   # 
+1D74F ;        2202 ;  SL      #* ( 𝝏 → ∂ ) MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL → PARTIAL DIFFERENTIAL      # 
+1D789 ;        2202 ;  SL      #* ( 𝞉 → ∂ ) MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL → PARTIAL DIFFERENTIAL  # 
+1D7C3 ;        2202 ;  SL      #* ( 𝟃 → ∂ ) MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL → PARTIAL DIFFERENTIAL   # 
+
+00F0 ; 2202 0335 ;     SL      # ( ð → ∂̵ ) LATIN SMALL LETTER ETH → PARTIAL DIFFERENTIAL, COMBINING SHORT STROKE OVERLAY      # 
+
+2300 ; 2205 ;  SL      #* ( ⌀ → ∅ ) DIAMETER SIGN → EMPTY SET  # 
+
+1D6C1 ;        2207 ;  SL      #* ( 𝛁 → ∇ ) MATHEMATICAL BOLD NABLA → NABLA   # 
+1D6FB ;        2207 ;  SL      #* ( 𝛻 → ∇ ) MATHEMATICAL ITALIC NABLA → NABLA # 
+1D735 ;        2207 ;  SL      #* ( 𝜵 → ∇ ) MATHEMATICAL BOLD ITALIC NABLA → NABLA    # 
+1D76F ;        2207 ;  SL      #* ( 𝝯 → ∇ ) MATHEMATICAL SANS-SERIF BOLD NABLA → NABLA        # 
+1D7A9 ;        2207 ;  SL      #* ( 𝞩 → ∇ ) MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA → NABLA # 
+
+2588 ; 220E ;  SL      #* ( █ → ∎ ) FULL BLOCK → END OF PROOF  # →■→
+25A0 ; 220E ;  SL      #* ( ■ → ∎ ) BLACK SQUARE → END OF PROOF        # 
+
+2A3F ; 2210 ;  SL      #* ( ⨿ → ∐ ) AMALGAMATION OR COPRODUCT → N-ARY COPRODUCT        # 
+
+FB29 ; 002B ;  SL      #* ( ﬩ → + ) HEBREW LETTER ALTERNATIVE PLUS SIGN → PLUS SIGN      # 
+
+2039 ; 003C ;  SL      #* ( ‹ → < ) SINGLE LEFT-POINTING ANGLE QUOTATION MARK → LESS-THAN SIGN   # 
+02C2 ; 003C ;  SL      #* ( ˂ → < ) MODIFIER LETTER LEFT ARROWHEAD → LESS-THAN SIGN       # 
+276E ; 003C ;  SL      #* ( ❮ → < ) HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT → LESS-THAN SIGN   # →‹→
+
+A4FF ; 003D ;  SL      #* ( ꓿ → = ) LISU PUNCTUATION FULL STOP → EQUALS SIGN     # 
+
+2A75 ; 003D 003D ;     SL      #* ( ⩵ → == ) TWO CONSECUTIVE EQUALS SIGNS → EQUALS SIGN, EQUALS SIGN     # 
+
+2A76 ; 003D 003D 003D ;        SL      #* ( ⩶ → === ) THREE CONSECUTIVE EQUALS SIGNS → EQUALS SIGN, EQUALS SIGN, EQUALS SIGN     # 
+
+203A ; 003E ;  SL      #* ( › → > ) SINGLE RIGHT-POINTING ANGLE QUOTATION MARK → GREATER-THAN SIGN       # 
+02C3 ; 003E ;  SL      #* ( ˃ → > ) MODIFIER LETTER RIGHT ARROWHEAD → GREATER-THAN SIGN   # 
+276F ; 003E ;  SL      #* ( ❯ → > ) HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT → GREATER-THAN SIGN       # →›→
+
+05F0 ; 007C 007C ;     SL      # ( ‎װ‎ → || ) HEBREW LIGATURE YIDDISH DOUBLE VAV → VERTICAL LINE, VERTICAL LINE       # →‎וו‎→→ll→
+
+02DC ; 007E ;  SL      #* ( ˜ → ~ ) SMALL TILDE → TILDE   # 
+1FC0 ; 007E ;  SL      #* ( ῀ → ~ ) GREEK PERISPOMENI → TILDE    # →˜→
+2053 ; 007E ;  SL      #* ( ⁓ → ~ ) SWUNG DASH → TILDE   # 
+223C ; 007E ;  SL      #* ( ∼ → ~ ) TILDE OPERATOR → TILDE       # 
+
+22C0 ; 2227 ;  SL      #* ( ⋀ → ∧ ) N-ARY LOGICAL AND → LOGICAL AND    # 
+
+22C3 ; 222A ;  SL      #* ( ⋃ → ∪ ) N-ARY UNION → UNION        # 
+
+222F ; 222E 222E ;     SL      #* ( ∯ → ∮∮ ) SURFACE INTEGRAL → CONTOUR INTEGRAL, CONTOUR INTEGRAL   # 
+
+2230 ; 222E 222E 222E ;        SL      #* ( ∰ → ∮∮∮ ) VOLUME INTEGRAL → CONTOUR INTEGRAL, CONTOUR INTEGRAL, CONTOUR INTEGRAL       # 
+
+2263 ; 2261 ;  SL      #* ( ≣ → ≡ ) STRICTLY EQUIVALENT TO → IDENTICAL TO      # 
+
+2A20 ; 226B ;  SL      #* ( ⨠ → ≫ ) Z NOTATION SCHEMA PIPING → MUCH GREATER-THAN       # 
+
+2A03 ; 228D ;  SL      #* ( ⨃ → ⊍ ) N-ARY UNION OPERATOR WITH DOT → MULTISET MULTIPLICATION    # 
+
+2A04 ; 228E ;  SL      #* ( ⨄ → ⊎ ) N-ARY UNION OPERATOR WITH PLUS → MULTISET UNION    # 
+
+2A05 ; 2293 ;  SL      #* ( ⨅ → ⊓ ) N-ARY SQUARE INTERSECTION OPERATOR → SQUARE CAP    # 
+
+2A06 ; 2294 ;  SL      #* ( ⨆ → ⊔ ) N-ARY SQUARE UNION OPERATOR → SQUARE CUP   # 
+
+2641 ; 2295 ;  SL      #* ( ♁ → ⊕ ) EARTH → CIRCLED PLUS       # 
+2A01 ; 2295 ;  SL      #* ( ⨁ → ⊕ ) N-ARY CIRCLED PLUS OPERATOR → CIRCLED PLUS # 
+
+2A02 ; 2297 ;  SL      #* ( ⨂ → ⊗ ) N-ARY CIRCLED TIMES OPERATOR → CIRCLED TIMES       # 
+
+2609 ; 2299 ;  SL      #* ( ☉ → ⊙ ) SUN → CIRCLED DOT OPERATOR # 
+2A00 ; 2299 ;  SL      #* ( ⨀ → ⊙ ) N-ARY CIRCLED DOT OPERATOR → CIRCLED DOT OPERATOR  # 
+
+25B7 ; 22B2 ;  SL      #* ( ▷ → ⊲ ) WHITE RIGHT-POINTING TRIANGLE → NORMAL SUBGROUP OF # 
+
+25C7 ; 22C4 ;  SL      #* ( ◇ → ⋄ ) WHITE DIAMOND → DIAMOND OPERATOR   # 
+25CA ; 22C4 ;  SL      #* ( ◊ → ⋄ ) LOZENGE → DIAMOND OPERATOR # 
+2662 ; 22C4 ;  SL      #* ( ♢ → ⋄ ) WHITE DIAMOND SUIT → DIAMOND OPERATOR      # →◊→
+
+2A1D ; 22C8 ;  SL      #* ( ⨝ → ⋈ ) JOIN → BOWTIE      # 
+
+25E0 ; 2312 ;  SL      #* ( ◠ → ⌒ ) UPPER HALF CIRCLE → ARC    # 
+
+2A3D ; 2319 ;  SL      #* ( ⨽ → ⌙ ) RIGHTHAND INTERIOR PRODUCT → TURNED NOT SIGN       # 
+
+2325 ; 2324 ;  SL      #* ( ⌥ → ⌤ ) OPTION KEY → UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS      # 
+
+2638 ; 2388 ;  SL      #* ( ☸ → ⎈ ) WHEEL OF DHARMA → HELM SYMBOL      # 
+
+FE35 ; 23DC ;  SL      #* ( ︵ → ⏜ ) PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS → TOP PARENTHESIS  # 
+
+FE36 ; 23DD ;  SL      #* ( ︶ → ⏝ ) PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS → BOTTOM PARENTHESIS      # 
+
+FE37 ; 23DE ;  SL      #* ( ︷ → ⏞ ) PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET → TOP CURLY BRACKET      # 
+
+FE38 ; 23DF ;  SL      #* ( ︸ → ⏟ ) PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET → BOTTOM CURLY BRACKET  # 
+
+FE39 ; 23E0 ;  SL      #* ( ︹ → ⏠ ) PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET → TOP TORTOISE SHELL BRACKET    # 
+
+FE3A ; 23E1 ;  SL      #* ( ︺ → ⏡ ) PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET → BOTTOM TORTOISE SHELL BRACKET        # 
+
+25B1 ; 23E5 ;  SL      #* ( ▱ → ⏥ ) WHITE PARALLELOGRAM → FLATNESS     # 
+
+FE31 ; 2502 ;  SL      #* ( ︱ → │ ) PRESENTATION FORM FOR VERTICAL EM DASH → BOX DRAWINGS LIGHT VERTICAL       # →|→
+FF5C ; 2502 ;  SL      #* ( | → │ ) FULLWIDTH VERTICAL LINE → BOX DRAWINGS LIGHT VERTICAL      # 
+2503 ; 2502 ;  SL      #* ( ┃ → │ ) BOX DRAWINGS HEAVY VERTICAL → BOX DRAWINGS LIGHT VERTICAL  # 
+
+250F ; 250C ;  SL      #* ( ┏ → ┌ ) BOX DRAWINGS HEAVY DOWN AND RIGHT → BOX DRAWINGS LIGHT DOWN AND RIGHT      # 
+
+2523 ; 251C ;  SL      #* ( ┣ → ├ ) BOX DRAWINGS HEAVY VERTICAL AND RIGHT → BOX DRAWINGS LIGHT VERTICAL AND RIGHT      # 
+
+2590 ; 258C ;  SL      #* ( ▐ → ▌ ) RIGHT HALF BLOCK → LEFT HALF BLOCK # 
+
+2597 ; 2596 ;  SL      #* ( ▗ → ▖ ) QUADRANT LOWER RIGHT → QUADRANT LOWER LEFT # 
+
+259D ; 2598 ;  SL      #* ( ▝ → ▘ ) QUADRANT UPPER RIGHT → QUADRANT UPPER LEFT # 
+
+2610 ; 25A1 ;  SL      #* ( ☐ → □ ) BALLOT BOX → WHITE SQUARE  # 
+
+FFED ; 25AA ;  SL      #* ( ■ → ▪ ) HALFWIDTH BLACK SQUARE → BLACK SMALL SQUARE        # 
+
+25B8 ; 25B6 ;  SL      #* ( ▸ → ▶ ) BLACK RIGHT-POINTING SMALL TRIANGLE → BLACK RIGHT-POINTING TRIANGLE        # →►→
+25BA ; 25B6 ;  SL      #* ( ► → ▶ ) BLACK RIGHT-POINTING POINTER → BLACK RIGHT-POINTING TRIANGLE       # 
+
+29BE ; 25CE ;  SL      #* ( ⦾ → ◎ ) CIRCLED WHITE BULLET → BULLSEYE    # 
+
+2CE9 ; 2627 ;  SL      #* ( ⳩ → ☧ ) COPTIC SYMBOL KHI RO → CHI RHO     # 
+
+2329 ; 276C ;  SL      #* ( 〈 → ❬ ) LEFT-POINTING ANGLE BRACKET → MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT  # →〈→
+3008 ; 276C ;  SL      #* ( 〈 → ❬ ) LEFT ANGLE BRACKET → MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT   # 
+27E8 ; 276C ;  SL      #* ( ⟨ → ❬ ) MATHEMATICAL LEFT ANGLE BRACKET → MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT      # →〈→
+
+232A ; 276D ;  SL      #* ( 〉 → ❭ ) RIGHT-POINTING ANGLE BRACKET → MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT        # →〉→
+3009 ; 276D ;  SL      #* ( 〉 → ❭ ) RIGHT ANGLE BRACKET → MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT # 
+27E9 ; 276D ;  SL      #* ( ⟩ → ❭ ) MATHEMATICAL RIGHT ANGLE BRACKET → MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT    # →〉→
+
+301B ; 27E7 ;  SL      #* ( 〛 → ⟧ ) RIGHT WHITE SQUARE BRACKET → MATHEMATICAL RIGHT WHITE SQUARE BRACKET       # 
+
+29D9 ; 299A ;  SL      #* ( ⧙ → ⦚ ) RIGHT WIGGLY FENCE → VERTICAL ZIGZAG LINE  # 
+
+2A3E ; 2A1F ;  SL      #* ( ⨾ → ⨟ ) Z NOTATION RELATIONAL COMPOSITION → Z NOTATION SCHEMA COMPOSITION  # 
+
+3036 ; 3012 ;  SL      #* ( 〶 → 〒 ) CIRCLED POSTAL MARK → POSTAL MARK  # 
+
+02D9 ; 0971 ;  SL      #* ( ˙ → ॱ ) DOT ABOVE → DEVANAGARI SIGN HIGH SPACING DOT        # 
+
+FF0D ; 30FC ;  SL      #* ( - → ー ) FULLWIDTH HYPHEN-MINUS → KATAKANA-HIRAGANA PROLONGED SOUND MARK    # 
+2014 ; 30FC ;  SL      #* ( — → ー ) EM DASH → KATAKANA-HIRAGANA PROLONGED SOUND MARK   # →一→
+2015 ; 30FC ;  SL      #* ( ― → ー ) HORIZONTAL BAR → KATAKANA-HIRAGANA PROLONGED SOUND MARK    # →—→→一→
+2500 ; 30FC ;  SL      #* ( ─ → ー ) BOX DRAWINGS LIGHT HORIZONTAL → KATAKANA-HIRAGANA PROLONGED SOUND MARK     # →―→→—→→一→
+2501 ; 30FC ;  SL      #* ( ━ → ー ) BOX DRAWINGS HEAVY HORIZONTAL → KATAKANA-HIRAGANA PROLONGED SOUND MARK     # →—→→一→
+31D0 ; 30FC ;  SL      #* ( ㇐ → ー ) CJK STROKE H → KATAKANA-HIRAGANA PROLONGED SOUND MARK      # →一→
+1173 ; 30FC ;  SL      # ( ᅳ → ー ) HANGUL JUNGSEONG EU → KATAKANA-HIRAGANA PROLONGED SOUND MARK        # →ㅡ→→—→→一→
+3161 ; 30FC ;  SL      # ( ㅡ → ー ) HANGUL LETTER EU → KATAKANA-HIRAGANA PROLONGED SOUND MARK   # →—→→一→
+4E00 ; 30FC ;  SL      # ( 一 → ー ) CJK UNIFIED IDEOGRAPH-4E00 → KATAKANA-HIRAGANA PROLONGED SOUND MARK # 
+2F00 ; 30FC ;  SL      #* ( ⼀ → ー ) KANGXI RADICAL ONE → KATAKANA-HIRAGANA PROLONGED SOUND MARK        # →一→
+
+1196 ; 30FC 30FC ;     SL      # ( ᆖ → ーー ) HANGUL JUNGSEONG EU-EU → KATAKANA-HIRAGANA PROLONGED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK  # →ᅳᅳ→
+
+20A4 ; 00A3 ;  SL      #* ( ₤ → £ ) LIRA SIGN → POUND SIGN      # 
+
+1D7CE ;        0030 ;  SL      # ( 𝟎 → 0 ) MATHEMATICAL BOLD DIGIT ZERO → DIGIT ZERO    # 
+1D7D8 ;        0030 ;  SL      # ( 𝟘 → 0 ) MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO → DIGIT ZERO   # 
+1D7E2 ;        0030 ;  SL      # ( 𝟢 → 0 ) MATHEMATICAL SANS-SERIF DIGIT ZERO → DIGIT ZERO      # 
+1D7EC ;        0030 ;  SL      # ( 𝟬 → 0 ) MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO → DIGIT ZERO # 
+1D7F6 ;        0030 ;  SL      # ( 𝟶 → 0 ) MATHEMATICAL MONOSPACE DIGIT ZERO → DIGIT ZERO       # 
+07C0 ; 0030 ;  SL      # ( ‎߀‎ → 0 ) NKO DIGIT ZERO → DIGIT ZERO      # 
+09E6 ; 0030 ;  SL      # ( ০ → 0 ) BENGALI DIGIT ZERO → DIGIT ZERO       # 
+0B66 ; 0030 ;  SL      # ( ୦ → 0 ) ORIYA DIGIT ZERO → DIGIT ZERO # 
+3007 ; 0030 ;  SL      # ( 〇 → 0 ) IDEOGRAPHIC NUMBER ZERO → DIGIT ZERO  # →O→
+1D40E ;        0030 ;  SL      # ( 𝐎 → 0 ) MATHEMATICAL BOLD CAPITAL O → DIGIT ZERO     # →O→
+1D442 ;        0030 ;  SL      # ( 𝑂 → 0 ) MATHEMATICAL ITALIC CAPITAL O → DIGIT ZERO   # →O→
+1D476 ;        0030 ;  SL      # ( 𝑶 → 0 ) MATHEMATICAL BOLD ITALIC CAPITAL O → DIGIT ZERO      # →O→
+1D4AA ;        0030 ;  SL      # ( 𝒪 → 0 ) MATHEMATICAL SCRIPT CAPITAL O → DIGIT ZERO   # →O→
+1D4DE ;        0030 ;  SL      # ( 𝓞 → 0 ) MATHEMATICAL BOLD SCRIPT CAPITAL O → DIGIT ZERO      # →O→
+1D512 ;        0030 ;  SL      # ( 𝔒 → 0 ) MATHEMATICAL FRAKTUR CAPITAL O → DIGIT ZERO  # →O→
+1D546 ;        0030 ;  SL      # ( 𝕆 → 0 ) MATHEMATICAL DOUBLE-STRUCK CAPITAL O → DIGIT ZERO    # →O→
+1D57A ;        0030 ;  SL      # ( 𝕺 → 0 ) MATHEMATICAL BOLD FRAKTUR CAPITAL O → DIGIT ZERO     # →O→
+1D5AE ;        0030 ;  SL      # ( 𝖮 → 0 ) MATHEMATICAL SANS-SERIF CAPITAL O → DIGIT ZERO       # →O→
+1D5E2 ;        0030 ;  SL      # ( 𝗢 → 0 ) MATHEMATICAL SANS-SERIF BOLD CAPITAL O → DIGIT ZERO  # →O→
+1D616 ;        0030 ;  SL      # ( 𝘖 → 0 ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL O → DIGIT ZERO        # →O→
+1D64A ;        0030 ;  SL      # ( 𝙊 → 0 ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O → DIGIT ZERO   # →O→
+1D67E ;        0030 ;  SL      # ( 𝙾 → 0 ) MATHEMATICAL MONOSPACE CAPITAL O → DIGIT ZERO        # →O→
+1D6B6 ;        0030 ;  SL      # ( 𝚶 → 0 ) MATHEMATICAL BOLD CAPITAL OMICRON → DIGIT ZERO       # →Ο→
+1D6F0 ;        0030 ;  SL      # ( 𝛰 → 0 ) MATHEMATICAL ITALIC CAPITAL OMICRON → DIGIT ZERO     # →Ο→
+1D72A ;        0030 ;  SL      # ( 𝜪 → 0 ) MATHEMATICAL BOLD ITALIC CAPITAL OMICRON → DIGIT ZERO        # →Ο→
+1D764 ;        0030 ;  SL      # ( 𝝤 → 0 ) MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON → DIGIT ZERO    # →Ο→
+1D79E ;        0030 ;  SL      # ( 𝞞 → 0 ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON → DIGIT ZERO     # →Ο→
+2D54 ; 0030 ;  SL      # ( ⵔ → 0 ) TIFINAGH LETTER YAR → DIGIT ZERO      # →Ο→
+0B20 ; 0030 ;  SL      # ( ଠ → 0 ) ORIYA LETTER TTHA → DIGIT ZERO        # →୦→
+0D20 ; 0030 ;  SL      # ( ഠ → 0 ) MALAYALAM LETTER TTHA → DIGIT ZERO    # 
+A4F3 ; 0030 ;  SL      # ( ꓳ → 0 ) LISU LETTER O → DIGIT ZERO    # →O→
+
+1B5C ; 1B50 ;  SL      #* ( ᭜ → ᭐ ) BALINESE WINDU → BALINESE DIGIT ZERO       # 
+
+A9C6 ; A9D0 ;  SL      #* ( ꧆ → ꧐ ) JAVANESE PADA WINDU → JAVANESE DIGIT ZERO  # 
+
+1F101 ;        0030 002C ;     SL      #* ( 🄁 → 0, ) DIGIT ZERO COMMA → DIGIT ZERO, COMMA       # 
+
+1F100 ;        0030 002E ;     SL      #* ( 🄀 → 0. ) DIGIT ZERO FULL STOP → DIGIT ZERO, FULL STOP       # 
+
+066A ; 2070 002F 2080 2080 ;   SL      #* ( ٪ → ⁰/₀₀ ) ARABIC PERCENT SIGN → SUPERSCRIPT ZERO, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO      # →%→→‰→
+0609 ; 2070 002F 2080 2080 ;   SL      #* ( ؉ → ⁰/₀₀ ) ARABIC-INDIC PER MILLE SIGN → SUPERSCRIPT ZERO, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO      # →%→→‰→
+060A ; 2070 002F 2080 2080 ;   SL      #* ( ؊ → ⁰/₀₀ ) ARABIC-INDIC PER TEN THOUSAND SIGN → SUPERSCRIPT ZERO, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO       # →%→→‰→
+
+3358 ; 0030 70B9 ;     SL      #* ( ㍘ → 0点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO → DIGIT ZERO, CJK UNIFIED IDEOGRAPH-70B9       # 
+
+05D5 ; 0031 ;  SL      # ( ‎ו‎ → 1 ) HEBREW LETTER VAV → DIGIT ONE    # →l→
+05DF ; 0031 ;  SL      # ( ‎ן‎ → 1 ) HEBREW LETTER FINAL NUN → DIGIT ONE      # →l→
+07CA ; 0031 ;  SL      # ( ‎ߊ‎ → 1 ) NKO LETTER A → DIGIT ONE # →∣→→|→→l→
+2D4F ; 0031 ;  SL      # ( ⵏ → 1 ) TIFINAGH LETTER YAN → DIGIT ONE       # →I→
+A4F2 ; 0031 ;  SL      # ( ꓲ → 1 ) LISU LETTER I → DIGIT ONE     # →I→
+
+2460 ; 2780 ;  SL      #* ( ① → ➀ ) CIRCLED DIGIT ONE → DINGBAT CIRCLED SANS-SERIF DIGIT ONE   # 
+
+06F1 ; 0661 ;  SL      # ( ۱ → ‎١‎ ) EXTENDED ARABIC-INDIC DIGIT ONE → ARABIC-INDIC DIGIT ONE        # 
+
+1065 ; 1041 ;  SL      # ( ၥ → ၁ ) MYANMAR LETTER WESTERN PWO KAREN THA → MYANMAR DIGIT ONE    # 
+
+2469 ; 2789 ;  SL      #* ( ⑩ → ➉ ) CIRCLED NUMBER TEN → DINGBAT CIRCLED SANS-SERIF NUMBER TEN # 
+
+2491 ; 0031 0030 002E ;        SL      #* ( ⒑ → 10. ) NUMBER TEN FULL STOP → DIGIT ONE, DIGIT ZERO, FULL STOP    # 
+
+33E9 ; 0031 0030 65E5 ;        SL      #* ( ㏩ → 10日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN → DIGIT ONE, DIGIT ZERO, CJK UNIFIED IDEOGRAPH-65E5     # 
+
+32C9 ; 0031 0030 6708 ;        SL      #* ( ㋉ → 10月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER → DIGIT ONE, DIGIT ZERO, CJK UNIFIED IDEOGRAPH-6708     # 
+
+3362 ; 0031 0030 70B9 ;        SL      #* ( ㍢ → 10点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN → DIGIT ONE, DIGIT ZERO, CJK UNIFIED IDEOGRAPH-70B9    # 
+
+33EA ; 0031 0031 65E5 ;        SL      #* ( ㏪ → 11日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN → DIGIT ONE, DIGIT ONE, CJK UNIFIED IDEOGRAPH-65E5   # 
+
+32CA ; 0031 0031 6708 ;        SL      #* ( ㋊ → 11月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER → DIGIT ONE, DIGIT ONE, CJK UNIFIED IDEOGRAPH-6708     # 
+
+3363 ; 0031 0031 70B9 ;        SL      #* ( ㍣ → 11点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN → DIGIT ONE, DIGIT ONE, CJK UNIFIED IDEOGRAPH-70B9  # 
+
+33EB ; 0031 0032 65E5 ;        SL      #* ( ㏫ → 12日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE → DIGIT ONE, DIGIT TWO, CJK UNIFIED IDEOGRAPH-65E5   # 
+
+32CB ; 0031 0032 6708 ;        SL      #* ( ㋋ → 12月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER → DIGIT ONE, DIGIT TWO, CJK UNIFIED IDEOGRAPH-6708     # 
+
+3364 ; 0031 0032 70B9 ;        SL      #* ( ㍤ → 12点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE → DIGIT ONE, DIGIT TWO, CJK UNIFIED IDEOGRAPH-70B9  # 
+
+33EC ; 0031 0033 65E5 ;        SL      #* ( ㏬ → 13日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN → DIGIT ONE, DIGIT THREE, CJK UNIFIED IDEOGRAPH-65E5       # 
+
+3365 ; 0031 0033 70B9 ;        SL      #* ( ㍥ → 13点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN → DIGIT ONE, DIGIT THREE, CJK UNIFIED IDEOGRAPH-70B9      # 
+
+33ED ; 0031 0034 65E5 ;        SL      #* ( ㏭ → 14日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN → DIGIT ONE, DIGIT FOUR, CJK UNIFIED IDEOGRAPH-65E5        # 
+
+3366 ; 0031 0034 70B9 ;        SL      #* ( ㍦ → 14点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN → DIGIT ONE, DIGIT FOUR, CJK UNIFIED IDEOGRAPH-70B9       # 
+
+33EE ; 0031 0035 65E5 ;        SL      #* ( ㏮ → 15日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN → DIGIT ONE, DIGIT FIVE, CJK UNIFIED IDEOGRAPH-65E5 # 
+
+3367 ; 0031 0035 70B9 ;        SL      #* ( ㍧ → 15点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN → DIGIT ONE, DIGIT FIVE, CJK UNIFIED IDEOGRAPH-70B9        # 
+
+33EF ; 0031 0036 65E5 ;        SL      #* ( ㏯ → 16日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN → DIGIT ONE, DIGIT SIX, CJK UNIFIED IDEOGRAPH-65E5  # 
+
+3368 ; 0031 0036 70B9 ;        SL      #* ( ㍨ → 16点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN → DIGIT ONE, DIGIT SIX, CJK UNIFIED IDEOGRAPH-70B9 # 
+
+33F0 ; 0031 0037 65E5 ;        SL      #* ( ㏰ → 17日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN → DIGIT ONE, DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-65E5      # 
+
+3369 ; 0031 0037 70B9 ;        SL      #* ( ㍩ → 17点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN → DIGIT ONE, DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-70B9     # 
+
+33F1 ; 0031 0038 65E5 ;        SL      #* ( ㏱ → 18日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN → DIGIT ONE, DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-65E5       # 
+
+336A ; 0031 0038 70B9 ;        SL      #* ( ㍪ → 18点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN → DIGIT ONE, DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-70B9      # 
+
+33F2 ; 0031 0039 65E5 ;        SL      #* ( ㏲ → 19日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN → DIGIT ONE, DIGIT NINE, CJK UNIFIED IDEOGRAPH-65E5        # 
+
+336B ; 0031 0039 70B9 ;        SL      #* ( ㍫ → 19点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN → DIGIT ONE, DIGIT NINE, CJK UNIFIED IDEOGRAPH-70B9       # 
+
+14B7 ; 0031 1427 ;     SL      # ( ᒷ → 1ᐧ ) CANADIAN SYLLABICS WEST-CREE MWA → DIGIT ONE, CANADIAN SYLLABICS FINAL MIDDLE DOT  # 
+
+33E0 ; 0031 65E5 ;     SL      #* ( ㏠ → 1日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE → DIGIT ONE, CJK UNIFIED IDEOGRAPH-65E5  # 
+
+32C0 ; 0031 6708 ;     SL      #* ( ㋀ → 1月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY → DIGIT ONE, CJK UNIFIED IDEOGRAPH-6708  # 
+
+3359 ; 0031 70B9 ;     SL      #* ( ㍙ → 1点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE → DIGIT ONE, CJK UNIFIED IDEOGRAPH-70B9 # 
+
+1D7D0 ;        0032 ;  SL      # ( 𝟐 → 2 ) MATHEMATICAL BOLD DIGIT TWO → DIGIT TWO      # 
+1D7DA ;        0032 ;  SL      # ( 𝟚 → 2 ) MATHEMATICAL DOUBLE-STRUCK DIGIT TWO → DIGIT TWO     # 
+1D7E4 ;        0032 ;  SL      # ( 𝟤 → 2 ) MATHEMATICAL SANS-SERIF DIGIT TWO → DIGIT TWO        # 
+1D7EE ;        0032 ;  SL      # ( 𝟮 → 2 ) MATHEMATICAL SANS-SERIF BOLD DIGIT TWO → DIGIT TWO   # 
+1D7F8 ;        0032 ;  SL      # ( 𝟸 → 2 ) MATHEMATICAL MONOSPACE DIGIT TWO → DIGIT TWO # 
+14BF ; 0032 ;  SL      # ( ᒿ → 2 ) CANADIAN SYLLABICS SAYISI M → DIGIT TWO       # 
+
+2461 ; 2781 ;  SL      #* ( ② → ➁ ) CIRCLED DIGIT TWO → DINGBAT CIRCLED SANS-SERIF DIGIT TWO   # 
+
+06F2 ; 0662 ;  SL      # ( ۲ → ‎٢‎ ) EXTENDED ARABIC-INDIC DIGIT TWO → ARABIC-INDIC DIGIT TWO        # 
+
+1F103 ;        0032 002C ;     SL      #* ( 🄃 → 2, ) DIGIT TWO COMMA → DIGIT TWO, COMMA # 
+
+2489 ; 0032 002E ;     SL      #* ( ⒉ → 2. ) DIGIT TWO FULL STOP → DIGIT TWO, FULL STOP  # 
+
+249B ; 0032 0030 002E ;        SL      #* ( ⒛ → 20. ) NUMBER TWENTY FULL STOP → DIGIT TWO, DIGIT ZERO, FULL STOP # 
+
+33F3 ; 0032 0030 65E5 ;        SL      #* ( ㏳ → 20日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY → DIGIT TWO, DIGIT ZERO, CJK UNIFIED IDEOGRAPH-65E5  # 
+
+336C ; 0032 0030 70B9 ;        SL      #* ( ㍬ → 20点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY → DIGIT TWO, DIGIT ZERO, CJK UNIFIED IDEOGRAPH-70B9 # 
+
+33F4 ; 0032 0031 65E5 ;        SL      #* ( ㏴ → 21日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE → DIGIT TWO, DIGIT ONE, CJK UNIFIED IDEOGRAPH-65E5       # 
+
+336D ; 0032 0031 70B9 ;        SL      #* ( ㍭ → 21点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE → DIGIT TWO, DIGIT ONE, CJK UNIFIED IDEOGRAPH-70B9      # 
+
+33F5 ; 0032 0032 65E5 ;        SL      #* ( ㏵ → 22日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO → DIGIT TWO, DIGIT TWO, CJK UNIFIED IDEOGRAPH-65E5       # 
+
+336E ; 0032 0032 70B9 ;        SL      #* ( ㍮ → 22点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO → DIGIT TWO, DIGIT TWO, CJK UNIFIED IDEOGRAPH-70B9      # 
+
+33F6 ; 0032 0033 65E5 ;        SL      #* ( ㏶ → 23日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE → DIGIT TWO, DIGIT THREE, CJK UNIFIED IDEOGRAPH-65E5   # 
+
+336F ; 0032 0033 70B9 ;        SL      #* ( ㍯ → 23点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE → DIGIT TWO, DIGIT THREE, CJK UNIFIED IDEOGRAPH-70B9  # 
+
+33F7 ; 0032 0034 65E5 ;        SL      #* ( ㏷ → 24日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR → DIGIT TWO, DIGIT FOUR, CJK UNIFIED IDEOGRAPH-65E5     # 
+
+3370 ; 0032 0034 70B9 ;        SL      #* ( ㍰ → 24点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR → DIGIT TWO, DIGIT FOUR, CJK UNIFIED IDEOGRAPH-70B9    # 
+
+33F8 ; 0032 0035 65E5 ;        SL      #* ( ㏸ → 25日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE → DIGIT TWO, DIGIT FIVE, CJK UNIFIED IDEOGRAPH-65E5     # 
+
+33F9 ; 0032 0036 65E5 ;        SL      #* ( ㏹ → 26日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX → DIGIT TWO, DIGIT SIX, CJK UNIFIED IDEOGRAPH-65E5       # 
+
+33FA ; 0032 0037 65E5 ;        SL      #* ( ㏺ → 27日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN → DIGIT TWO, DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-65E5   # 
+
+33FB ; 0032 0038 65E5 ;        SL      #* ( ㏻ → 28日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT → DIGIT TWO, DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-65E5   # 
+
+33FC ; 0032 0039 65E5 ;        SL      #* ( ㏼ → 29日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE → DIGIT TWO, DIGIT NINE, CJK UNIFIED IDEOGRAPH-65E5     # 
+
+33E1 ; 0032 65E5 ;     SL      #* ( ㏡ → 2日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO → DIGIT TWO, CJK UNIFIED IDEOGRAPH-65E5  # 
+
+32C1 ; 0032 6708 ;     SL      #* ( ㋁ → 2月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY → DIGIT TWO, CJK UNIFIED IDEOGRAPH-6708 # 
+
+335A ; 0032 70B9 ;     SL      #* ( ㍚ → 2点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO → DIGIT TWO, CJK UNIFIED IDEOGRAPH-70B9 # 
+
+1D7D1 ;        0033 ;  SL      # ( 𝟑 → 3 ) MATHEMATICAL BOLD DIGIT THREE → DIGIT THREE  # 
+1D7DB ;        0033 ;  SL      # ( 𝟛 → 3 ) MATHEMATICAL DOUBLE-STRUCK DIGIT THREE → DIGIT THREE # 
+1D7E5 ;        0033 ;  SL      # ( 𝟥 → 3 ) MATHEMATICAL SANS-SERIF DIGIT THREE → DIGIT THREE    # 
+1D7EF ;        0033 ;  SL      # ( 𝟯 → 3 ) MATHEMATICAL SANS-SERIF BOLD DIGIT THREE → DIGIT THREE       # 
+1D7F9 ;        0033 ;  SL      # ( 𝟹 → 3 ) MATHEMATICAL MONOSPACE DIGIT THREE → DIGIT THREE     # 
+
+2462 ; 2782 ;  SL      #* ( ③ → ➂ ) CIRCLED DIGIT THREE → DINGBAT CIRCLED SANS-SERIF DIGIT THREE       # 
+
+06F3 ; 0663 ;  SL      # ( ۳ → ‎٣‎ ) EXTENDED ARABIC-INDIC DIGIT THREE → ARABIC-INDIC DIGIT THREE    # 
+
+1F104 ;        0033 002C ;     SL      #* ( 🄄 → 3, ) DIGIT THREE COMMA → DIGIT THREE, COMMA     # 
+
+248A ; 0033 002E ;     SL      #* ( ⒊ → 3. ) DIGIT THREE FULL STOP → DIGIT THREE, FULL STOP      # 
+
+33FD ; 0033 0030 65E5 ;        SL      #* ( ㏽ → 30日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY → DIGIT THREE, DIGIT ZERO, CJK UNIFIED IDEOGRAPH-65E5        # 
+
+33FE ; 0033 0031 65E5 ;        SL      #* ( ㏾ → 31日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE → DIGIT THREE, DIGIT ONE, CJK UNIFIED IDEOGRAPH-65E5     # 
+
+33E2 ; 0033 65E5 ;     SL      #* ( ㏢ → 3日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE → DIGIT THREE, CJK UNIFIED IDEOGRAPH-65E5      # 
+
+32C2 ; 0033 6708 ;     SL      #* ( ㋂ → 3月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH → DIGIT THREE, CJK UNIFIED IDEOGRAPH-6708  # 
+
+335B ; 0033 70B9 ;     SL      #* ( ㍛ → 3点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE → DIGIT THREE, CJK UNIFIED IDEOGRAPH-70B9     # 
+
+1D7D2 ;        0034 ;  SL      # ( 𝟒 → 4 ) MATHEMATICAL BOLD DIGIT FOUR → DIGIT FOUR    # 
+1D7DC ;        0034 ;  SL      # ( 𝟜 → 4 ) MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR → DIGIT FOUR   # 
+1D7E6 ;        0034 ;  SL      # ( 𝟦 → 4 ) MATHEMATICAL SANS-SERIF DIGIT FOUR → DIGIT FOUR      # 
+1D7F0 ;        0034 ;  SL      # ( 𝟰 → 4 ) MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR → DIGIT FOUR # 
+1D7FA ;        0034 ;  SL      # ( 𝟺 → 4 ) MATHEMATICAL MONOSPACE DIGIT FOUR → DIGIT FOUR       # 
+13CE ; 0034 ;  SL      # ( Ꮞ → 4 ) CHEROKEE LETTER SE → DIGIT FOUR       # 
+
+2463 ; 2783 ;  SL      #* ( ④ → ➃ ) CIRCLED DIGIT FOUR → DINGBAT CIRCLED SANS-SERIF DIGIT FOUR # 
+
+1F105 ;        0034 002C ;     SL      #* ( 🄅 → 4, ) DIGIT FOUR COMMA → DIGIT FOUR, COMMA       # 
+
+248B ; 0034 002E ;     SL      #* ( ⒋ → 4. ) DIGIT FOUR FULL STOP → DIGIT FOUR, FULL STOP        # 
+
+1530 ; 0034 00B7 ;     SL      # ( ᔰ → 4· ) CANADIAN SYLLABICS WEST-CREE YWE → DIGIT FOUR, MIDDLE DOT   # →4ᐧ→
+
+33E3 ; 0034 65E5 ;     SL      #* ( ㏣ → 4日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR → DIGIT FOUR, CJK UNIFIED IDEOGRAPH-65E5        # 
+
+32C3 ; 0034 6708 ;     SL      #* ( ㋃ → 4月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL → DIGIT FOUR, CJK UNIFIED IDEOGRAPH-6708   # 
+
+335C ; 0034 70B9 ;     SL      #* ( ㍜ → 4点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR → DIGIT FOUR, CJK UNIFIED IDEOGRAPH-70B9       # 
+
+1D7D3 ;        0035 ;  SL      # ( 𝟓 → 5 ) MATHEMATICAL BOLD DIGIT FIVE → DIGIT FIVE    # 
+1D7DD ;        0035 ;  SL      # ( 𝟝 → 5 ) MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE → DIGIT FIVE   # 
+1D7E7 ;        0035 ;  SL      # ( 𝟧 → 5 ) MATHEMATICAL SANS-SERIF DIGIT FIVE → DIGIT FIVE      # 
+1D7F1 ;        0035 ;  SL      # ( 𝟱 → 5 ) MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE → DIGIT FIVE # 
+1D7FB ;        0035 ;  SL      # ( 𝟻 → 5 ) MATHEMATICAL MONOSPACE DIGIT FIVE → DIGIT FIVE       # 
+
+2464 ; 2784 ;  SL      #* ( ⑤ → ➄ ) CIRCLED DIGIT FIVE → DINGBAT CIRCLED SANS-SERIF DIGIT FIVE # 
+
+0C02 ; 0665 ;  SL      # ( ం → ‎٥‎ ) TELUGU SIGN ANUSVARA → ARABIC-INDIC DIGIT FIVE # →o→
+0C82 ; 0665 ;  SL      # ( ಂ → ‎٥‎ ) KANNADA SIGN ANUSVARA → ARABIC-INDIC DIGIT FIVE        # →o→
+0D02 ; 0665 ;  SL      # ( ം → ‎٥‎ ) MALAYALAM SIGN ANUSVARA → ARABIC-INDIC DIGIT FIVE      # →o→
+0D82 ; 0665 ;  SL      # ( ං → ‎٥‎ ) SINHALA SIGN ANUSVARAYA → ARABIC-INDIC DIGIT FIVE      # →o→
+0966 ; 0665 ;  SL      # ( ० → ‎٥‎ ) DEVANAGARI DIGIT ZERO → ARABIC-INDIC DIGIT FIVE        # →o→
+0A66 ; 0665 ;  SL      # ( ੦ → ‎٥‎ ) GURMUKHI DIGIT ZERO → ARABIC-INDIC DIGIT FIVE  # →o→
+0AE6 ; 0665 ;  SL      # ( ૦ → ‎٥‎ ) GUJARATI DIGIT ZERO → ARABIC-INDIC DIGIT FIVE  # →o→
+0BE6 ; 0665 ;  SL      # ( ௦ → ‎٥‎ ) TAMIL DIGIT ZERO → ARABIC-INDIC DIGIT FIVE     # →o→
+0C66 ; 0665 ;  SL      # ( ౦ → ‎٥‎ ) TELUGU DIGIT ZERO → ARABIC-INDIC DIGIT FIVE    # →o→
+0CE6 ; 0665 ;  SL      # ( ೦ → ‎٥‎ ) KANNADA DIGIT ZERO → ARABIC-INDIC DIGIT FIVE   # →౦→→o→
+0D66 ; 0665 ;  SL      # ( ൦ → ‎٥‎ ) MALAYALAM DIGIT ZERO → ARABIC-INDIC DIGIT FIVE # →o→
+0E50 ; 0665 ;  SL      # ( ๐ → ‎٥‎ ) THAI DIGIT ZERO → ARABIC-INDIC DIGIT FIVE      # →o→
+0ED0 ; 0665 ;  SL      # ( ໐ → ‎٥‎ ) LAO DIGIT ZERO → ARABIC-INDIC DIGIT FIVE       # →o→
+1040 ; 0665 ;  SL      # ( ၀ → ‎٥‎ ) MYANMAR DIGIT ZERO → ARABIC-INDIC DIGIT FIVE   # →o→
+2C9F ; 0665 ;  SL      # ( ⲟ → ‎٥‎ ) COPTIC SMALL LETTER O → ARABIC-INDIC DIGIT FIVE        # →o→
+101D ; 0665 ;  SL      # ( ဝ → ‎٥‎ ) MYANMAR LETTER WA → ARABIC-INDIC DIGIT FIVE    # →o→
+
+1F106 ;        0035 002C ;     SL      #* ( 🄆 → 5, ) DIGIT FIVE COMMA → DIGIT FIVE, COMMA       # 
+
+248C ; 0035 002E ;     SL      #* ( ⒌ → 5. ) DIGIT FIVE FULL STOP → DIGIT FIVE, FULL STOP        # 
+
+33E4 ; 0035 65E5 ;     SL      #* ( ㏤ → 5日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE → DIGIT FIVE, CJK UNIFIED IDEOGRAPH-65E5        # 
+
+32C4 ; 0035 6708 ;     SL      #* ( ㋄ → 5月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY → DIGIT FIVE, CJK UNIFIED IDEOGRAPH-6708     # 
+
+335D ; 0035 70B9 ;     SL      #* ( ㍝ → 5点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE → DIGIT FIVE, CJK UNIFIED IDEOGRAPH-70B9       # 
+
+1D7D4 ;        0036 ;  SL      # ( 𝟔 → 6 ) MATHEMATICAL BOLD DIGIT SIX → DIGIT SIX      # 
+1D7DE ;        0036 ;  SL      # ( 𝟞 → 6 ) MATHEMATICAL DOUBLE-STRUCK DIGIT SIX → DIGIT SIX     # 
+1D7E8 ;        0036 ;  SL      # ( 𝟨 → 6 ) MATHEMATICAL SANS-SERIF DIGIT SIX → DIGIT SIX        # 
+1D7F2 ;        0036 ;  SL      # ( 𝟲 → 6 ) MATHEMATICAL SANS-SERIF BOLD DIGIT SIX → DIGIT SIX   # 
+1D7FC ;        0036 ;  SL      # ( 𝟼 → 6 ) MATHEMATICAL MONOSPACE DIGIT SIX → DIGIT SIX # 
+0431 ; 0036 ;  SL      # ( б → 6 ) CYRILLIC SMALL LETTER BE → DIGIT SIX   # 
+
+2465 ; 2785 ;  SL      #* ( ⑥ → ➅ ) CIRCLED DIGIT SIX → DINGBAT CIRCLED SANS-SERIF DIGIT SIX   # 
+
+1F107 ;        0036 002C ;     SL      #* ( 🄇 → 6, ) DIGIT SIX COMMA → DIGIT SIX, COMMA # 
+
+248D ; 0036 002E ;     SL      #* ( ⒍ → 6. ) DIGIT SIX FULL STOP → DIGIT SIX, FULL STOP  # 
+
+33E5 ; 0036 65E5 ;     SL      #* ( ㏥ → 6日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX → DIGIT SIX, CJK UNIFIED IDEOGRAPH-65E5  # 
+
+32C5 ; 0036 6708 ;     SL      #* ( ㋅ → 6月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE → DIGIT SIX, CJK UNIFIED IDEOGRAPH-6708     # 
+
+335E ; 0036 70B9 ;     SL      #* ( ㍞ → 6点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX → DIGIT SIX, CJK UNIFIED IDEOGRAPH-70B9 # 
+
+1D7D5 ;        0037 ;  SL      # ( 𝟕 → 7 ) MATHEMATICAL BOLD DIGIT SEVEN → DIGIT SEVEN  # 
+1D7DF ;        0037 ;  SL      # ( 𝟟 → 7 ) MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN → DIGIT SEVEN # 
+1D7E9 ;        0037 ;  SL      # ( 𝟩 → 7 ) MATHEMATICAL SANS-SERIF DIGIT SEVEN → DIGIT SEVEN    # 
+1D7F3 ;        0037 ;  SL      # ( 𝟳 → 7 ) MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN → DIGIT SEVEN       # 
+1D7FD ;        0037 ;  SL      # ( 𝟽 → 7 ) MATHEMATICAL MONOSPACE DIGIT SEVEN → DIGIT SEVEN     # 
+
+2466 ; 2786 ;  SL      #* ( ⑦ → ➆ ) CIRCLED DIGIT SEVEN → DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN       # 
+
+06F7 ; 0667 ;  SL      # ( ۷ → ‎٧‎ ) EXTENDED ARABIC-INDIC DIGIT SEVEN → ARABIC-INDIC DIGIT SEVEN    # 
+
+1F108 ;        0037 002C ;     SL      #* ( 🄈 → 7, ) DIGIT SEVEN COMMA → DIGIT SEVEN, COMMA     # 
+
+248E ; 0037 002E ;     SL      #* ( ⒎ → 7. ) DIGIT SEVEN FULL STOP → DIGIT SEVEN, FULL STOP      # 
+
+33E6 ; 0037 65E5 ;     SL      #* ( ㏦ → 7日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN → DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-65E5      # 
+
+32C6 ; 0037 6708 ;     SL      #* ( ㋆ → 7月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY → DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-6708   # 
+
+335F ; 0037 70B9 ;     SL      #* ( ㍟ → 7点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN → DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-70B9     # 
+
+0B03 ; 0038 ;  SL      # ( ଃ → 8 ) ORIYA SIGN VISARGA → DIGIT EIGHT      # 
+09EA ; 0038 ;  SL      # ( ৪ → 8 ) BENGALI DIGIT FOUR → DIGIT EIGHT      # 
+0A6A ; 0038 ;  SL      # ( ੪ → 8 ) GURMUKHI DIGIT FOUR → DIGIT EIGHT     # 
+1D7D6 ;        0038 ;  SL      # ( 𝟖 → 8 ) MATHEMATICAL BOLD DIGIT EIGHT → DIGIT EIGHT  # 
+1D7E0 ;        0038 ;  SL      # ( 𝟠 → 8 ) MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT → DIGIT EIGHT # 
+1D7EA ;        0038 ;  SL      # ( 𝟪 → 8 ) MATHEMATICAL SANS-SERIF DIGIT EIGHT → DIGIT EIGHT    # 
+1D7F4 ;        0038 ;  SL      # ( 𝟴 → 8 ) MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT → DIGIT EIGHT       # 
+1D7FE ;        0038 ;  SL      # ( 𝟾 → 8 ) MATHEMATICAL MONOSPACE DIGIT EIGHT → DIGIT EIGHT     # 
+0223 ; 0038 ;  SL      # ( ȣ → 8 ) LATIN SMALL LETTER OU → DIGIT EIGHT    # 
+
+2467 ; 2787 ;  SL      #* ( ⑧ → ➇ ) CIRCLED DIGIT EIGHT → DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT       # 
+
+06F8 ; 0668 ;  SL      # ( ۸ → ‎٨‎ ) EXTENDED ARABIC-INDIC DIGIT EIGHT → ARABIC-INDIC DIGIT EIGHT    # 
+
+1F109 ;        0038 002C ;     SL      #* ( 🄉 → 8, ) DIGIT EIGHT COMMA → DIGIT EIGHT, COMMA     # 
+
+248F ; 0038 002E ;     SL      #* ( ⒏ → 8. ) DIGIT EIGHT FULL STOP → DIGIT EIGHT, FULL STOP      # 
+
+33E7 ; 0038 65E5 ;     SL      #* ( ㏧ → 8日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT → DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-65E5      # 
+
+32C7 ; 0038 6708 ;     SL      #* ( ㋇ → 8月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST → DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-6708 # 
+
+3360 ; 0038 70B9 ;     SL      #* ( ㍠ → 8点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT → DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-70B9     # 
+
+0A67 ; 0039 ;  SL      # ( ੧ → 9 ) GURMUKHI DIGIT ONE → DIGIT NINE       # 
+0B68 ; 0039 ;  SL      # ( ୨ → 9 ) ORIYA DIGIT TWO → DIGIT NINE  # 
+09ED ; 0039 ;  SL      # ( ৭ → 9 ) BENGALI DIGIT SEVEN → DIGIT NINE      # 
+1D7D7 ;        0039 ;  SL      # ( 𝟗 → 9 ) MATHEMATICAL BOLD DIGIT NINE → DIGIT NINE    # 
+1D7E1 ;        0039 ;  SL      # ( 𝟡 → 9 ) MATHEMATICAL DOUBLE-STRUCK DIGIT NINE → DIGIT NINE   # 
+1D7EB ;        0039 ;  SL      # ( 𝟫 → 9 ) MATHEMATICAL SANS-SERIF DIGIT NINE → DIGIT NINE      # 
+1D7F5 ;        0039 ;  SL      # ( 𝟵 → 9 ) MATHEMATICAL SANS-SERIF BOLD DIGIT NINE → DIGIT NINE # 
+1D7FF ;        0039 ;  SL      # ( 𝟿 → 9 ) MATHEMATICAL MONOSPACE DIGIT NINE → DIGIT NINE       # 
+
+2468 ; 2788 ;  SL      #* ( ⑨ → ➈ ) CIRCLED DIGIT NINE → DINGBAT CIRCLED SANS-SERIF DIGIT NINE # 
+
+06F9 ; 0669 ;  SL      # ( ۹ → ‎٩‎ ) EXTENDED ARABIC-INDIC DIGIT NINE → ARABIC-INDIC DIGIT NINE      # 
+
+1F10A ;        0039 002C ;     SL      #* ( 🄊 → 9, ) DIGIT NINE COMMA → DIGIT NINE, COMMA       # 
+
+2490 ; 0039 002E ;     SL      #* ( ⒐ → 9. ) DIGIT NINE FULL STOP → DIGIT NINE, FULL STOP        # 
+
+33E8 ; 0039 65E5 ;     SL      #* ( ㏨ → 9日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE → DIGIT NINE, CJK UNIFIED IDEOGRAPH-65E5        # 
+
+32C8 ; 0039 6708 ;     SL      #* ( ㋈ → 9月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER → DIGIT NINE, CJK UNIFIED IDEOGRAPH-6708       # 
+
+3361 ; 0039 70B9 ;     SL      #* ( ㍡ → 9点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE → DIGIT NINE, CJK UNIFIED IDEOGRAPH-70B9       # 
+
+237A ; 0061 ;  SL      #* ( ⍺ → a ) APL FUNCTIONAL SYMBOL ALPHA → LATIN SMALL LETTER A   # →α→
+FF41 ; 0061 ;  SL      # ( a → a ) FULLWIDTH LATIN SMALL LETTER A → LATIN SMALL LETTER A # →а→
+1D41A ;        0061 ;  SL      # ( 𝐚 → a ) MATHEMATICAL BOLD SMALL A → LATIN SMALL LETTER A     # 
+1D44E ;        0061 ;  SL      # ( 𝑎 → a ) MATHEMATICAL ITALIC SMALL A → LATIN SMALL LETTER A   # 
+1D482 ;        0061 ;  SL      # ( 𝒂 → a ) MATHEMATICAL BOLD ITALIC SMALL A → LATIN SMALL LETTER A      # 
+1D4B6 ;        0061 ;  SL      # ( 𝒶 → a ) MATHEMATICAL SCRIPT SMALL A → LATIN SMALL LETTER A   # 
+1D4EA ;        0061 ;  SL      # ( 𝓪 → a ) MATHEMATICAL BOLD SCRIPT SMALL A → LATIN SMALL LETTER A      # 
+1D51E ;        0061 ;  SL      # ( 𝔞 → a ) MATHEMATICAL FRAKTUR SMALL A → LATIN SMALL LETTER A  # 
+1D552 ;        0061 ;  SL      # ( 𝕒 → a ) MATHEMATICAL DOUBLE-STRUCK SMALL A → LATIN SMALL LETTER A    # 
+1D586 ;        0061 ;  SL      # ( 𝖆 → a ) MATHEMATICAL BOLD FRAKTUR SMALL A → LATIN SMALL LETTER A     # 
+1D5BA ;        0061 ;  SL      # ( 𝖺 → a ) MATHEMATICAL SANS-SERIF SMALL A → LATIN SMALL LETTER A       # 
+1D5EE ;        0061 ;  SL      # ( 𝗮 → a ) MATHEMATICAL SANS-SERIF BOLD SMALL A → LATIN SMALL LETTER A  # 
+1D622 ;        0061 ;  SL      # ( 𝘢 → a ) MATHEMATICAL SANS-SERIF ITALIC SMALL A → LATIN SMALL LETTER A        # 
+1D656 ;        0061 ;  SL      # ( 𝙖 → a ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A → LATIN SMALL LETTER A   # 
+1D68A ;        0061 ;  SL      # ( 𝚊 → a ) MATHEMATICAL MONOSPACE SMALL A → LATIN SMALL LETTER A        # 
+0251 ; 0061 ;  SL      # ( ɑ → a ) LATIN SMALL LETTER ALPHA → LATIN SMALL LETTER A        # 
+1D6C2 ;        0061 ;  SL      # ( 𝛂 → a ) MATHEMATICAL BOLD SMALL ALPHA → LATIN SMALL LETTER A # →α→
+1D6FC ;        0061 ;  SL      # ( 𝛼 → a ) MATHEMATICAL ITALIC SMALL ALPHA → LATIN SMALL LETTER A       # →α→
+1D736 ;        0061 ;  SL      # ( 𝜶 → a ) MATHEMATICAL BOLD ITALIC SMALL ALPHA → LATIN SMALL LETTER A  # →α→
+1D770 ;        0061 ;  SL      # ( 𝝰 → a ) MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA → LATIN SMALL LETTER A      # →α→
+1D7AA ;        0061 ;  SL      # ( 𝞪 → a ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA → LATIN SMALL LETTER A       # →α→
+
+01CE ; 0103 ;  SL      # ( ǎ → ă ) LATIN SMALL LETTER A WITH CARON → LATIN SMALL LETTER A WITH BREVE     # 
+
+0227 ; 00E5 ;  SL      # ( ȧ → å ) LATIN SMALL LETTER A WITH DOT ABOVE → LATIN SMALL LETTER A WITH RING ABOVE    # 
+
+A733 ; 0061 0061 ;     SL      # ( ꜳ → aa ) LATIN SMALL LETTER AA → LATIN SMALL LETTER A, LATIN SMALL LETTER A   # 
+
+00E6 ; 0061 0065 ;     SL      # ( æ → ae ) LATIN SMALL LETTER AE → LATIN SMALL LETTER A, LATIN SMALL LETTER E    # 
+
+A735 ; 0061 006F ;     SL      # ( ꜵ → ao ) LATIN SMALL LETTER AO → LATIN SMALL LETTER A, LATIN SMALL LETTER O   # 
+
+A737 ; 0061 0075 ;     SL      # ( ꜷ → au ) LATIN SMALL LETTER AU → LATIN SMALL LETTER A, LATIN SMALL LETTER U   # 
+
+A739 ; 0061 0076 ;     SL      # ( ꜹ → av ) LATIN SMALL LETTER AV → LATIN SMALL LETTER A, LATIN SMALL LETTER V   # 
+A73B ; 0061 0076 ;     SL      # ( ꜻ → av ) LATIN SMALL LETTER AV WITH HORIZONTAL BAR → LATIN SMALL LETTER A, LATIN SMALL LETTER V       # 
+
+A73D ; 0061 0079 ;     SL      # ( ꜽ → ay ) LATIN SMALL LETTER AY → LATIN SMALL LETTER A, LATIN SMALL LETTER Y   # 
+
+1D41B ;        0062 ;  SL      # ( 𝐛 → b ) MATHEMATICAL BOLD SMALL B → LATIN SMALL LETTER B     # 
+1D44F ;        0062 ;  SL      # ( 𝑏 → b ) MATHEMATICAL ITALIC SMALL B → LATIN SMALL LETTER B   # 
+1D483 ;        0062 ;  SL      # ( 𝒃 → b ) MATHEMATICAL BOLD ITALIC SMALL B → LATIN SMALL LETTER B      # 
+1D4B7 ;        0062 ;  SL      # ( 𝒷 → b ) MATHEMATICAL SCRIPT SMALL B → LATIN SMALL LETTER B   # 
+1D4EB ;        0062 ;  SL      # ( 𝓫 → b ) MATHEMATICAL BOLD SCRIPT SMALL B → LATIN SMALL LETTER B      # 
+1D51F ;        0062 ;  SL      # ( 𝔟 → b ) MATHEMATICAL FRAKTUR SMALL B → LATIN SMALL LETTER B  # 
+1D553 ;        0062 ;  SL      # ( 𝕓 → b ) MATHEMATICAL DOUBLE-STRUCK SMALL B → LATIN SMALL LETTER B    # 
+1D587 ;        0062 ;  SL      # ( 𝖇 → b ) MATHEMATICAL BOLD FRAKTUR SMALL B → LATIN SMALL LETTER B     # 
+1D5BB ;        0062 ;  SL      # ( 𝖻 → b ) MATHEMATICAL SANS-SERIF SMALL B → LATIN SMALL LETTER B       # 
+1D5EF ;        0062 ;  SL      # ( 𝗯 → b ) MATHEMATICAL SANS-SERIF BOLD SMALL B → LATIN SMALL LETTER B  # 
+1D623 ;        0062 ;  SL      # ( 𝘣 → b ) MATHEMATICAL SANS-SERIF ITALIC SMALL B → LATIN SMALL LETTER B        # 
+1D657 ;        0062 ;  SL      # ( 𝙗 → b ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B → LATIN SMALL LETTER B   # 
+1D68B ;        0062 ;  SL      # ( 𝚋 → b ) MATHEMATICAL MONOSPACE SMALL B → LATIN SMALL LETTER B        # 
+
+0253 ; 0062 0314 ;     SL      # ( ɓ → b̔ ) LATIN SMALL LETTER B WITH HOOK → LATIN SMALL LETTER B, COMBINING REVERSED COMMA ABOVE        # 
+
+0183 ; 0062 0304 ;     SL      # ( ƃ → b̄ ) LATIN SMALL LETTER B WITH TOPBAR → LATIN SMALL LETTER B, COMBINING MACRON    # 
+
+0180 ; 0062 0335 ;     SL      # ( ƀ → b̵ ) LATIN SMALL LETTER B WITH STROKE → LATIN SMALL LETTER B, COMBINING SHORT STROKE OVERLAY      # 
+
+FF43 ; 0063 ;  SL      # ( c → c ) FULLWIDTH LATIN SMALL LETTER C → LATIN SMALL LETTER C # →ϲ→
+217D ; 0063 ;  SL      # ( ⅽ → c ) SMALL ROMAN NUMERAL ONE HUNDRED → LATIN SMALL LETTER C        # 
+1D41C ;        0063 ;  SL      # ( 𝐜 → c ) MATHEMATICAL BOLD SMALL C → LATIN SMALL LETTER C     # 
+1D450 ;        0063 ;  SL      # ( 𝑐 → c ) MATHEMATICAL ITALIC SMALL C → LATIN SMALL LETTER C   # 
+1D484 ;        0063 ;  SL      # ( 𝒄 → c ) MATHEMATICAL BOLD ITALIC SMALL C → LATIN SMALL LETTER C      # 
+1D4B8 ;        0063 ;  SL      # ( 𝒸 → c ) MATHEMATICAL SCRIPT SMALL C → LATIN SMALL LETTER C   # 
+1D4EC ;        0063 ;  SL      # ( 𝓬 → c ) MATHEMATICAL BOLD SCRIPT SMALL C → LATIN SMALL LETTER C      # 
+1D520 ;        0063 ;  SL      # ( 𝔠 → c ) MATHEMATICAL FRAKTUR SMALL C → LATIN SMALL LETTER C  # 
+1D554 ;        0063 ;  SL      # ( 𝕔 → c ) MATHEMATICAL DOUBLE-STRUCK SMALL C → LATIN SMALL LETTER C    # 
+1D588 ;        0063 ;  SL      # ( 𝖈 → c ) MATHEMATICAL BOLD FRAKTUR SMALL C → LATIN SMALL LETTER C     # 
+1D5BC ;        0063 ;  SL      # ( 𝖼 → c ) MATHEMATICAL SANS-SERIF SMALL C → LATIN SMALL LETTER C       # 
+1D5F0 ;        0063 ;  SL      # ( 𝗰 → c ) MATHEMATICAL SANS-SERIF BOLD SMALL C → LATIN SMALL LETTER C  # 
+1D624 ;        0063 ;  SL      # ( 𝘤 → c ) MATHEMATICAL SANS-SERIF ITALIC SMALL C → LATIN SMALL LETTER C        # 
+1D658 ;        0063 ;  SL      # ( 𝙘 → c ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C → LATIN SMALL LETTER C   # 
+1D68C ;        0063 ;  SL      # ( 𝚌 → c ) MATHEMATICAL MONOSPACE SMALL C → LATIN SMALL LETTER C        # 
+1D04 ; 0063 ;  SL      # ( ᴄ → c ) LATIN LETTER SMALL CAPITAL C → LATIN SMALL LETTER C   # 
+
+00A2 ; 0063 0338 ;     SL      #* ( ¢ → c̸ ) CENT SIGN → LATIN SMALL LETTER C, COMBINING LONG SOLIDUS OVERLAY    # 
+
+00E7 ; 0063 0326 ;     SL      # ( ç → c̦ ) LATIN SMALL LETTER C WITH CEDILLA → LATIN SMALL LETTER C, COMBINING COMMA BELOW      # →ҫ→→с̡→
+
+217E ; 0064 ;  SL      # ( ⅾ → d ) SMALL ROMAN NUMERAL FIVE HUNDRED → LATIN SMALL LETTER D       # 
+2146 ; 0064 ;  SL      # ( ⅆ → d ) DOUBLE-STRUCK ITALIC SMALL D → LATIN SMALL LETTER D   # 
+1D41D ;        0064 ;  SL      # ( 𝐝 → d ) MATHEMATICAL BOLD SMALL D → LATIN SMALL LETTER D     # 
+1D451 ;        0064 ;  SL      # ( 𝑑 → d ) MATHEMATICAL ITALIC SMALL D → LATIN SMALL LETTER D   # 
+1D485 ;        0064 ;  SL      # ( 𝒅 → d ) MATHEMATICAL BOLD ITALIC SMALL D → LATIN SMALL LETTER D      # 
+1D4B9 ;        0064 ;  SL      # ( 𝒹 → d ) MATHEMATICAL SCRIPT SMALL D → LATIN SMALL LETTER D   # 
+1D4ED ;        0064 ;  SL      # ( 𝓭 → d ) MATHEMATICAL BOLD SCRIPT SMALL D → LATIN SMALL LETTER D      # 
+1D521 ;        0064 ;  SL      # ( 𝔡 → d ) MATHEMATICAL FRAKTUR SMALL D → LATIN SMALL LETTER D  # 
+1D555 ;        0064 ;  SL      # ( 𝕕 → d ) MATHEMATICAL DOUBLE-STRUCK SMALL D → LATIN SMALL LETTER D    # 
+1D589 ;        0064 ;  SL      # ( 𝖉 → d ) MATHEMATICAL BOLD FRAKTUR SMALL D → LATIN SMALL LETTER D     # 
+1D5BD ;        0064 ;  SL      # ( 𝖽 → d ) MATHEMATICAL SANS-SERIF SMALL D → LATIN SMALL LETTER D       # 
+1D5F1 ;        0064 ;  SL      # ( 𝗱 → d ) MATHEMATICAL SANS-SERIF BOLD SMALL D → LATIN SMALL LETTER D  # 
+1D625 ;        0064 ;  SL      # ( 𝘥 → d ) MATHEMATICAL SANS-SERIF ITALIC SMALL D → LATIN SMALL LETTER D        # 
+1D659 ;        0064 ;  SL      # ( 𝙙 → d ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D → LATIN SMALL LETTER D   # 
+1D68D ;        0064 ;  SL      # ( 𝚍 → d ) MATHEMATICAL MONOSPACE SMALL D → LATIN SMALL LETTER D        # 
+
+0257 ; 0064 0314 ;     SL      # ( ɗ → d̔ ) LATIN SMALL LETTER D WITH HOOK → LATIN SMALL LETTER D, COMBINING REVERSED COMMA ABOVE        # 
+
+0256 ; 0064 0328 ;     SL      # ( ɖ → d̨ ) LATIN SMALL LETTER D WITH TAIL → LATIN SMALL LETTER D, COMBINING OGONEK      # →d̢→
+
+018C ; 0064 0304 ;     SL      # ( ƌ → d̄ ) LATIN SMALL LETTER D WITH TOPBAR → LATIN SMALL LETTER D, COMBINING MACRON    # 
+
+0111 ; 0064 0335 ;     SL      # ( đ → d̵ ) LATIN SMALL LETTER D WITH STROKE → LATIN SMALL LETTER D, COMBINING SHORT STROKE OVERLAY      # 
+
+20AB ; 0064 0335 0331 ;        SL      #* ( ₫ → ḏ̵ ) DONG SIGN → LATIN SMALL LETTER D, COMBINING SHORT STROKE OVERLAY, COMBINING MACRON BELOW # →đ̱→
+
+01F3 ; 0064 007A ;     SL      # ( dz → dz ) LATIN SMALL LETTER DZ → LATIN SMALL LETTER D, LATIN SMALL LETTER Z    # 
+02A3 ; 0064 007A ;     SL      # ( ʣ → dz ) LATIN SMALL LETTER DZ DIGRAPH → LATIN SMALL LETTER D, LATIN SMALL LETTER Z    # 
+
+01C6 ; 0064 017E ;     SL      # ( dž → dž ) LATIN SMALL LETTER DZ WITH CARON → LATIN SMALL LETTER D, LATIN SMALL LETTER Z WITH CARON     # 
+
+02A5 ; 0064 0291 ;     SL      # ( ʥ → dʑ ) LATIN SMALL LETTER DZ DIGRAPH WITH CURL → LATIN SMALL LETTER D, LATIN SMALL LETTER Z WITH CURL       # 
+
+02A4 ; 0064 021D ;     SL      # ( ʤ → dȝ ) LATIN SMALL LETTER DEZH DIGRAPH → LATIN SMALL LETTER D, LATIN SMALL LETTER YOGH      # →dʒ→
+
+1D6C5 ;        1E9F ;  SL      # ( 𝛅 → ẟ ) MATHEMATICAL BOLD SMALL DELTA → LATIN SMALL LETTER DELTA   # →δ→
+1D6FF ;        1E9F ;  SL      # ( 𝛿 → ẟ ) MATHEMATICAL ITALIC SMALL DELTA → LATIN SMALL LETTER DELTA # →δ→
+1D739 ;        1E9F ;  SL      # ( 𝜹 → ẟ ) MATHEMATICAL BOLD ITALIC SMALL DELTA → LATIN SMALL LETTER DELTA    # →δ→
+1D773 ;        1E9F ;  SL      # ( 𝝳 → ẟ ) MATHEMATICAL SANS-SERIF BOLD SMALL DELTA → LATIN SMALL LETTER DELTA        # →δ→
+1D7AD ;        1E9F ;  SL      # ( 𝞭 → ẟ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA → LATIN SMALL LETTER DELTA # →δ→
+
+212E ; 0065 ;  SL      # ( ℮ → e ) ESTIMATED SYMBOL → LATIN SMALL LETTER E       # 
+FF45 ; 0065 ;  SL      # ( e → e ) FULLWIDTH LATIN SMALL LETTER E → LATIN SMALL LETTER E # →е→
+212F ; 0065 ;  SL      # ( ℯ → e ) SCRIPT SMALL E → LATIN SMALL LETTER E # 
+2147 ; 0065 ;  SL      # ( ⅇ → e ) DOUBLE-STRUCK ITALIC SMALL E → LATIN SMALL LETTER E   # 
+1D41E ;        0065 ;  SL      # ( 𝐞 → e ) MATHEMATICAL BOLD SMALL E → LATIN SMALL LETTER E     # 
+1D452 ;        0065 ;  SL      # ( 𝑒 → e ) MATHEMATICAL ITALIC SMALL E → LATIN SMALL LETTER E   # 
+1D486 ;        0065 ;  SL      # ( 𝒆 → e ) MATHEMATICAL BOLD ITALIC SMALL E → LATIN SMALL LETTER E      # 
+1D4EE ;        0065 ;  SL      # ( 𝓮 → e ) MATHEMATICAL BOLD SCRIPT SMALL E → LATIN SMALL LETTER E      # 
+1D522 ;        0065 ;  SL      # ( 𝔢 → e ) MATHEMATICAL FRAKTUR SMALL E → LATIN SMALL LETTER E  # 
+1D556 ;        0065 ;  SL      # ( 𝕖 → e ) MATHEMATICAL DOUBLE-STRUCK SMALL E → LATIN SMALL LETTER E    # 
+1D58A ;        0065 ;  SL      # ( 𝖊 → e ) MATHEMATICAL BOLD FRAKTUR SMALL E → LATIN SMALL LETTER E     # 
+1D5BE ;        0065 ;  SL      # ( 𝖾 → e ) MATHEMATICAL SANS-SERIF SMALL E → LATIN SMALL LETTER E       # 
+1D5F2 ;        0065 ;  SL      # ( 𝗲 → e ) MATHEMATICAL SANS-SERIF BOLD SMALL E → LATIN SMALL LETTER E  # 
+1D626 ;        0065 ;  SL      # ( 𝘦 → e ) MATHEMATICAL SANS-SERIF ITALIC SMALL E → LATIN SMALL LETTER E        # 
+1D65A ;        0065 ;  SL      # ( 𝙚 → e ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E → LATIN SMALL LETTER E   # 
+1D68E ;        0065 ;  SL      # ( 𝚎 → e ) MATHEMATICAL MONOSPACE SMALL E → LATIN SMALL LETTER E        # 
+
+011B ; 0115 ;  SL      # ( ě → ĕ ) LATIN SMALL LETTER E WITH CARON → LATIN SMALL LETTER E WITH BREVE     # 
+
+0259 ; 01DD ;  SL      # ( ə → ǝ ) LATIN SMALL LETTER SCHWA → LATIN SMALL LETTER TURNED E        # 
+
+025A ; 01DD 02DE ;     SL      # ( ɚ → ǝ˞ ) LATIN SMALL LETTER SCHWA WITH HOOK → LATIN SMALL LETTER TURNED E, MODIFIER LETTER RHOTIC HOOK       # →ə˞→
+
+1D14 ; 01DD 006F ;     SL      # ( ᴔ → ǝo ) LATIN SMALL LETTER TURNED OE → LATIN SMALL LETTER TURNED E, LATIN SMALL LETTER O    # →əo→
+
+22F4 ; 025B ;  SL      #* ( ⋴ → ɛ ) SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE → LATIN SMALL LETTER OPEN E  # 
+1D6C6 ;        025B ;  SL      # ( 𝛆 → ɛ ) MATHEMATICAL BOLD SMALL EPSILON → LATIN SMALL LETTER OPEN E # →ε→
+1D6DC ;        025B ;  SL      # ( 𝛜 → ɛ ) MATHEMATICAL BOLD EPSILON SYMBOL → LATIN SMALL LETTER OPEN E        # →ε→
+1D700 ;        025B ;  SL      # ( 𝜀 → ɛ ) MATHEMATICAL ITALIC SMALL EPSILON → LATIN SMALL LETTER OPEN E       # →ε→
+1D716 ;        025B ;  SL      # ( 𝜖 → ɛ ) MATHEMATICAL ITALIC EPSILON SYMBOL → LATIN SMALL LETTER OPEN E      # →ε→
+1D73A ;        025B ;  SL      # ( 𝜺 → ɛ ) MATHEMATICAL BOLD ITALIC SMALL EPSILON → LATIN SMALL LETTER OPEN E  # →ε→
+1D750 ;        025B ;  SL      # ( 𝝐 → ɛ ) MATHEMATICAL BOLD ITALIC EPSILON SYMBOL → LATIN SMALL LETTER OPEN E # →ε→
+1D774 ;        025B ;  SL      # ( 𝝴 → ɛ ) MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON → LATIN SMALL LETTER OPEN E      # →ε→
+1D78A ;        025B ;  SL      # ( 𝞊 → ɛ ) MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL → LATIN SMALL LETTER OPEN E     # →ε→
+1D7AE ;        025B ;  SL      # ( 𝞮 → ɛ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON → LATIN SMALL LETTER OPEN E       # →ε→
+1D7C4 ;        025B ;  SL      # ( 𝟄 → ɛ ) MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL → LATIN SMALL LETTER OPEN E      # →ε→
+
+20AC ; 2107 ;  SL      #* ( € → ℇ ) EURO SIGN → EULER CONSTANT # →Є→
+
+1D9F ; 1D4B ;  SL      # ( ᶟ → ᵋ ) MODIFIER LETTER SMALL REVERSED OPEN E → MODIFIER LETTER SMALL OPEN E        # 
+
+1D08 ; 025C ;  SL      # ( ᴈ → ɜ ) LATIN SMALL LETTER TURNED OPEN E → LATIN SMALL LETTER REVERSED OPEN E        # 
+
+1D41F ;        0066 ;  SL      # ( 𝐟 → f ) MATHEMATICAL BOLD SMALL F → LATIN SMALL LETTER F     # 
+1D453 ;        0066 ;  SL      # ( 𝑓 → f ) MATHEMATICAL ITALIC SMALL F → LATIN SMALL LETTER F   # 
+1D487 ;        0066 ;  SL      # ( 𝒇 → f ) MATHEMATICAL BOLD ITALIC SMALL F → LATIN SMALL LETTER F      # 
+1D4BB ;        0066 ;  SL      # ( 𝒻 → f ) MATHEMATICAL SCRIPT SMALL F → LATIN SMALL LETTER F   # 
+1D4EF ;        0066 ;  SL      # ( 𝓯 → f ) MATHEMATICAL BOLD SCRIPT SMALL F → LATIN SMALL LETTER F      # 
+1D523 ;        0066 ;  SL      # ( 𝔣 → f ) MATHEMATICAL FRAKTUR SMALL F → LATIN SMALL LETTER F  # 
+1D557 ;        0066 ;  SL      # ( 𝕗 → f ) MATHEMATICAL DOUBLE-STRUCK SMALL F → LATIN SMALL LETTER F    # 
+1D58B ;        0066 ;  SL      # ( 𝖋 → f ) MATHEMATICAL BOLD FRAKTUR SMALL F → LATIN SMALL LETTER F     # 
+1D5BF ;        0066 ;  SL      # ( 𝖿 → f ) MATHEMATICAL SANS-SERIF SMALL F → LATIN SMALL LETTER F       # 
+1D5F3 ;        0066 ;  SL      # ( 𝗳 → f ) MATHEMATICAL SANS-SERIF BOLD SMALL F → LATIN SMALL LETTER F  # 
+1D627 ;        0066 ;  SL      # ( 𝘧 → f ) MATHEMATICAL SANS-SERIF ITALIC SMALL F → LATIN SMALL LETTER F        # 
+1D65B ;        0066 ;  SL      # ( 𝙛 → f ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F → LATIN SMALL LETTER F   # 
+1D68F ;        0066 ;  SL      # ( 𝚏 → f ) MATHEMATICAL MONOSPACE SMALL F → LATIN SMALL LETTER F        # 
+1E9D ; 0066 ;  SL      # ( ẝ → f ) LATIN SMALL LETTER LONG S WITH HIGH STROKE → LATIN SMALL LETTER F     # 
+
+0192 ; 0066 0326 ;     SL      # ( ƒ → f̦ ) LATIN SMALL LETTER F WITH HOOK → LATIN SMALL LETTER F, COMBINING COMMA BELOW # →f̡→
+
+02A9 ; 0066 014B ;     SL      # ( ʩ → fŋ ) LATIN SMALL LETTER FENG DIGRAPH → LATIN SMALL LETTER F, LATIN SMALL LETTER ENG       # 
+
+FF47 ; 0067 ;  SL      # ( g → g ) FULLWIDTH LATIN SMALL LETTER G → LATIN SMALL LETTER G # →ɡ→
+210A ; 0067 ;  SL      # ( ℊ → g ) SCRIPT SMALL G → LATIN SMALL LETTER G # 
+1D420 ;        0067 ;  SL      # ( 𝐠 → g ) MATHEMATICAL BOLD SMALL G → LATIN SMALL LETTER G     # 
+1D454 ;        0067 ;  SL      # ( 𝑔 → g ) MATHEMATICAL ITALIC SMALL G → LATIN SMALL LETTER G   # 
+1D488 ;        0067 ;  SL      # ( 𝒈 → g ) MATHEMATICAL BOLD ITALIC SMALL G → LATIN SMALL LETTER G      # 
+1D4F0 ;        0067 ;  SL      # ( 𝓰 → g ) MATHEMATICAL BOLD SCRIPT SMALL G → LATIN SMALL LETTER G      # 
+1D524 ;        0067 ;  SL      # ( 𝔤 → g ) MATHEMATICAL FRAKTUR SMALL G → LATIN SMALL LETTER G  # 
+1D558 ;        0067 ;  SL      # ( 𝕘 → g ) MATHEMATICAL DOUBLE-STRUCK SMALL G → LATIN SMALL LETTER G    # 
+1D58C ;        0067 ;  SL      # ( 𝖌 → g ) MATHEMATICAL BOLD FRAKTUR SMALL G → LATIN SMALL LETTER G     # 
+1D5C0 ;        0067 ;  SL      # ( 𝗀 → g ) MATHEMATICAL SANS-SERIF SMALL G → LATIN SMALL LETTER G       # 
+1D5F4 ;        0067 ;  SL      # ( 𝗴 → g ) MATHEMATICAL SANS-SERIF BOLD SMALL G → LATIN SMALL LETTER G  # 
+1D628 ;        0067 ;  SL      # ( 𝘨 → g ) MATHEMATICAL SANS-SERIF ITALIC SMALL G → LATIN SMALL LETTER G        # 
+1D65C ;        0067 ;  SL      # ( 𝙜 → g ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G → LATIN SMALL LETTER G   # 
+1D690 ;        0067 ;  SL      # ( 𝚐 → g ) MATHEMATICAL MONOSPACE SMALL G → LATIN SMALL LETTER G        # 
+0261 ; 0067 ;  SL      # ( ɡ → g ) LATIN SMALL LETTER SCRIPT G → LATIN SMALL LETTER G     # 
+1D83 ; 0067 ;  SL      # ( ᶃ → g ) LATIN SMALL LETTER G WITH PALATAL HOOK → LATIN SMALL LETTER G # 
+018D ; 0067 ;  SL      # ( ƍ → g ) LATIN SMALL LETTER TURNED DELTA → LATIN SMALL LETTER G # 
+
+1DA2 ; 1D4D ;  SL      # ( ᶢ → ᵍ ) MODIFIER LETTER SMALL SCRIPT G → MODIFIER LETTER SMALL G    # 
+
+0260 ; 0067 0314 ;     SL      # ( ɠ → g̔ ) LATIN SMALL LETTER G WITH HOOK → LATIN SMALL LETTER G, COMBINING REVERSED COMMA ABOVE        # 
+
+01E7 ; 011F ;  SL      # ( ǧ → ğ ) LATIN SMALL LETTER G WITH CARON → LATIN SMALL LETTER G WITH BREVE     # 
+
+01F5 ; 0123 ;  SL      # ( ǵ → ģ ) LATIN SMALL LETTER G WITH ACUTE → LATIN SMALL LETTER G WITH CEDILLA   # 
+
+01E5 ; 0067 0335 ;     SL      # ( ǥ → g̵ ) LATIN SMALL LETTER G WITH STROKE → LATIN SMALL LETTER G, COMBINING SHORT STROKE OVERLAY      # 
+
+FF48 ; 0068 ;  SL      # ( h → h ) FULLWIDTH LATIN SMALL LETTER H → LATIN SMALL LETTER H # →һ→
+210E ; 0068 ;  SL      # ( ℎ → h ) PLANCK CONSTANT → LATIN SMALL LETTER H        # 
+1D421 ;        0068 ;  SL      # ( 𝐡 → h ) MATHEMATICAL BOLD SMALL H → LATIN SMALL LETTER H     # 
+1D489 ;        0068 ;  SL      # ( 𝒉 → h ) MATHEMATICAL BOLD ITALIC SMALL H → LATIN SMALL LETTER H      # 
+1D4BD ;        0068 ;  SL      # ( 𝒽 → h ) MATHEMATICAL SCRIPT SMALL H → LATIN SMALL LETTER H   # 
+1D4F1 ;        0068 ;  SL      # ( 𝓱 → h ) MATHEMATICAL BOLD SCRIPT SMALL H → LATIN SMALL LETTER H      # 
+1D525 ;        0068 ;  SL      # ( 𝔥 → h ) MATHEMATICAL FRAKTUR SMALL H → LATIN SMALL LETTER H  # 
+1D559 ;        0068 ;  SL      # ( 𝕙 → h ) MATHEMATICAL DOUBLE-STRUCK SMALL H → LATIN SMALL LETTER H    # 
+1D58D ;        0068 ;  SL      # ( 𝖍 → h ) MATHEMATICAL BOLD FRAKTUR SMALL H → LATIN SMALL LETTER H     # 
+1D5C1 ;        0068 ;  SL      # ( 𝗁 → h ) MATHEMATICAL SANS-SERIF SMALL H → LATIN SMALL LETTER H       # 
+1D5F5 ;        0068 ;  SL      # ( 𝗵 → h ) MATHEMATICAL SANS-SERIF BOLD SMALL H → LATIN SMALL LETTER H  # 
+1D629 ;        0068 ;  SL      # ( 𝘩 → h ) MATHEMATICAL SANS-SERIF ITALIC SMALL H → LATIN SMALL LETTER H        # 
+1D65D ;        0068 ;  SL      # ( 𝙝 → h ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H → LATIN SMALL LETTER H   # 
+1D691 ;        0068 ;  SL      # ( 𝚑 → h ) MATHEMATICAL MONOSPACE SMALL H → LATIN SMALL LETTER H        # 
+
+0266 ; 0068 0314 ;     SL      # ( ɦ → h̔ ) LATIN SMALL LETTER H WITH HOOK → LATIN SMALL LETTER H, COMBINING REVERSED COMMA ABOVE        # 
+
+0127 ; 0068 0335 ;     SL      # ( ħ → h̵ ) LATIN SMALL LETTER H WITH STROKE → LATIN SMALL LETTER H, COMBINING SHORT STROKE OVERLAY      # 
+210F ; 0068 0335 ;     SL      # ( ℏ → h̵ ) PLANCK CONSTANT OVER TWO PI → LATIN SMALL LETTER H, COMBINING SHORT STROKE OVERLAY  # →ħ→
+
+02DB ; 0069 ;  SL      #* ( ˛ → i ) OGONEK → LATIN SMALL LETTER I # →ͺ→→ι→→ι→
+2373 ; 0069 ;  SL      #* ( ⍳ → i ) APL FUNCTIONAL SYMBOL IOTA → LATIN SMALL LETTER I    # →ι→
+FF49 ; 0069 ;  SL      # ( i → i ) FULLWIDTH LATIN SMALL LETTER I → LATIN SMALL LETTER I # →і→
+2170 ; 0069 ;  SL      # ( ⅰ → i ) SMALL ROMAN NUMERAL ONE → LATIN SMALL LETTER I        # 
+2139 ; 0069 ;  SL      # ( ℹ → i ) INFORMATION SOURCE → LATIN SMALL LETTER I     # 
+2148 ; 0069 ;  SL      # ( ⅈ → i ) DOUBLE-STRUCK ITALIC SMALL I → LATIN SMALL LETTER I   # 
+1D422 ;        0069 ;  SL      # ( 𝐢 → i ) MATHEMATICAL BOLD SMALL I → LATIN SMALL LETTER I     # 
+1D456 ;        0069 ;  SL      # ( 𝑖 → i ) MATHEMATICAL ITALIC SMALL I → LATIN SMALL LETTER I   # 
+1D48A ;        0069 ;  SL      # ( 𝒊 → i ) MATHEMATICAL BOLD ITALIC SMALL I → LATIN SMALL LETTER I      # 
+1D4BE ;        0069 ;  SL      # ( 𝒾 → i ) MATHEMATICAL SCRIPT SMALL I → LATIN SMALL LETTER I   # 
+1D4F2 ;        0069 ;  SL      # ( 𝓲 → i ) MATHEMATICAL BOLD SCRIPT SMALL I → LATIN SMALL LETTER I      # 
+1D526 ;        0069 ;  SL      # ( 𝔦 → i ) MATHEMATICAL FRAKTUR SMALL I → LATIN SMALL LETTER I  # 
+1D55A ;        0069 ;  SL      # ( 𝕚 → i ) MATHEMATICAL DOUBLE-STRUCK SMALL I → LATIN SMALL LETTER I    # 
+1D58E ;        0069 ;  SL      # ( 𝖎 → i ) MATHEMATICAL BOLD FRAKTUR SMALL I → LATIN SMALL LETTER I     # 
+1D5C2 ;        0069 ;  SL      # ( 𝗂 → i ) MATHEMATICAL SANS-SERIF SMALL I → LATIN SMALL LETTER I       # 
+1D5F6 ;        0069 ;  SL      # ( 𝗶 → i ) MATHEMATICAL SANS-SERIF BOLD SMALL I → LATIN SMALL LETTER I  # 
+1D62A ;        0069 ;  SL      # ( 𝘪 → i ) MATHEMATICAL SANS-SERIF ITALIC SMALL I → LATIN SMALL LETTER I        # 
+1D65E ;        0069 ;  SL      # ( 𝙞 → i ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I → LATIN SMALL LETTER I   # 
+1D692 ;        0069 ;  SL      # ( 𝚒 → i ) MATHEMATICAL MONOSPACE SMALL I → LATIN SMALL LETTER I        # 
+0131 ; 0069 ;  SL      # ( ı → i ) LATIN SMALL LETTER DOTLESS I → LATIN SMALL LETTER I    # 
+1D6A4 ;        0069 ;  SL      # ( 𝚤 → i ) MATHEMATICAL ITALIC SMALL DOTLESS I → LATIN SMALL LETTER I   # →ı→
+026A ; 0069 ;  SL      # ( ɪ → i ) LATIN LETTER SMALL CAPITAL I → LATIN SMALL LETTER I    # →ı→
+0269 ; 0069 ;  SL      # ( ɩ → i ) LATIN SMALL LETTER IOTA → LATIN SMALL LETTER I # 
+1D6CA ;        0069 ;  SL      # ( 𝛊 → i ) MATHEMATICAL BOLD SMALL IOTA → LATIN SMALL LETTER I  # →ι→
+1D704 ;        0069 ;  SL      # ( 𝜄 → i ) MATHEMATICAL ITALIC SMALL IOTA → LATIN SMALL LETTER I        # →ι→
+1D73E ;        0069 ;  SL      # ( 𝜾 → i ) MATHEMATICAL BOLD ITALIC SMALL IOTA → LATIN SMALL LETTER I   # →ι→
+1D778 ;        0069 ;  SL      # ( 𝝸 → i ) MATHEMATICAL SANS-SERIF BOLD SMALL IOTA → LATIN SMALL LETTER I       # →ι→
+1D7B2 ;        0069 ;  SL      # ( 𝞲 → i ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA → LATIN SMALL LETTER I        # →ι→
+
+01D0 ; 012D ;  SL      # ( ǐ → ĭ ) LATIN SMALL LETTER I WITH CARON → LATIN SMALL LETTER I WITH BREVE     # 
+
+0268 ; 0069 0335 ;     SL      # ( ɨ → i̵ ) LATIN SMALL LETTER I WITH STROKE → LATIN SMALL LETTER I, COMBINING SHORT STROKE OVERLAY      # 
+
+2171 ; 0069 0069 ;     SL      # ( ⅱ → ii ) SMALL ROMAN NUMERAL TWO → LATIN SMALL LETTER I, LATIN SMALL LETTER I # 
+
+2172 ; 0069 0069 0069 ;        SL      # ( ⅲ → iii ) SMALL ROMAN NUMERAL THREE → LATIN SMALL LETTER I, LATIN SMALL LETTER I, LATIN SMALL LETTER I        # 
+
+0133 ; 0069 006A ;     SL      # ( ij → ij ) LATIN SMALL LIGATURE IJ → LATIN SMALL LETTER I, LATIN SMALL LETTER J  # 
+
+2173 ; 0069 0076 ;     SL      # ( ⅳ → iv ) SMALL ROMAN NUMERAL FOUR → LATIN SMALL LETTER I, LATIN SMALL LETTER V        # 
+
+2178 ; 0069 0078 ;     SL      # ( ⅸ → ix ) SMALL ROMAN NUMERAL NINE → LATIN SMALL LETTER I, LATIN SMALL LETTER X        # 
+
+FF4A ; 006A ;  SL      # ( j → j ) FULLWIDTH LATIN SMALL LETTER J → LATIN SMALL LETTER J # →ј→
+2149 ; 006A ;  SL      # ( ⅉ → j ) DOUBLE-STRUCK ITALIC SMALL J → LATIN SMALL LETTER J   # 
+1D423 ;        006A ;  SL      # ( 𝐣 → j ) MATHEMATICAL BOLD SMALL J → LATIN SMALL LETTER J     # 
+1D457 ;        006A ;  SL      # ( 𝑗 → j ) MATHEMATICAL ITALIC SMALL J → LATIN SMALL LETTER J   # 
+1D48B ;        006A ;  SL      # ( 𝒋 → j ) MATHEMATICAL BOLD ITALIC SMALL J → LATIN SMALL LETTER J      # 
+1D4BF ;        006A ;  SL      # ( 𝒿 → j ) MATHEMATICAL SCRIPT SMALL J → LATIN SMALL LETTER J   # 
+1D4F3 ;        006A ;  SL      # ( 𝓳 → j ) MATHEMATICAL BOLD SCRIPT SMALL J → LATIN SMALL LETTER J      # 
+1D527 ;        006A ;  SL      # ( 𝔧 → j ) MATHEMATICAL FRAKTUR SMALL J → LATIN SMALL LETTER J  # 
+1D55B ;        006A ;  SL      # ( 𝕛 → j ) MATHEMATICAL DOUBLE-STRUCK SMALL J → LATIN SMALL LETTER J    # 
+1D58F ;        006A ;  SL      # ( 𝖏 → j ) MATHEMATICAL BOLD FRAKTUR SMALL J → LATIN SMALL LETTER J     # 
+1D5C3 ;        006A ;  SL      # ( 𝗃 → j ) MATHEMATICAL SANS-SERIF SMALL J → LATIN SMALL LETTER J       # 
+1D5F7 ;        006A ;  SL      # ( 𝗷 → j ) MATHEMATICAL SANS-SERIF BOLD SMALL J → LATIN SMALL LETTER J  # 
+1D62B ;        006A ;  SL      # ( 𝘫 → j ) MATHEMATICAL SANS-SERIF ITALIC SMALL J → LATIN SMALL LETTER J        # 
+1D65F ;        006A ;  SL      # ( 𝙟 → j ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J → LATIN SMALL LETTER J   # 
+1D693 ;        006A ;  SL      # ( 𝚓 → j ) MATHEMATICAL MONOSPACE SMALL J → LATIN SMALL LETTER J        # 
+0237 ; 006A ;  SL      # ( ȷ → j ) LATIN SMALL LETTER DOTLESS J → LATIN SMALL LETTER J    # →յ→
+1D6A5 ;        006A ;  SL      # ( 𝚥 → j ) MATHEMATICAL ITALIC SMALL DOTLESS J → LATIN SMALL LETTER J   # →ȷ→→յ→
+
+1D424 ;        006B ;  SL      # ( 𝐤 → k ) MATHEMATICAL BOLD SMALL K → LATIN SMALL LETTER K     # 
+1D458 ;        006B ;  SL      # ( 𝑘 → k ) MATHEMATICAL ITALIC SMALL K → LATIN SMALL LETTER K   # 
+1D48C ;        006B ;  SL      # ( 𝒌 → k ) MATHEMATICAL BOLD ITALIC SMALL K → LATIN SMALL LETTER K      # 
+1D4C0 ;        006B ;  SL      # ( 𝓀 → k ) MATHEMATICAL SCRIPT SMALL K → LATIN SMALL LETTER K   # 
+1D4F4 ;        006B ;  SL      # ( 𝓴 → k ) MATHEMATICAL BOLD SCRIPT SMALL K → LATIN SMALL LETTER K      # 
+1D528 ;        006B ;  SL      # ( 𝔨 → k ) MATHEMATICAL FRAKTUR SMALL K → LATIN SMALL LETTER K  # 
+1D55C ;        006B ;  SL      # ( 𝕜 → k ) MATHEMATICAL DOUBLE-STRUCK SMALL K → LATIN SMALL LETTER K    # 
+1D590 ;        006B ;  SL      # ( 𝖐 → k ) MATHEMATICAL BOLD FRAKTUR SMALL K → LATIN SMALL LETTER K     # 
+1D5C4 ;        006B ;  SL      # ( 𝗄 → k ) MATHEMATICAL SANS-SERIF SMALL K → LATIN SMALL LETTER K       # 
+1D5F8 ;        006B ;  SL      # ( 𝗸 → k ) MATHEMATICAL SANS-SERIF BOLD SMALL K → LATIN SMALL LETTER K  # 
+1D62C ;        006B ;  SL      # ( 𝘬 → k ) MATHEMATICAL SANS-SERIF ITALIC SMALL K → LATIN SMALL LETTER K        # 
+1D660 ;        006B ;  SL      # ( 𝙠 → k ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K → LATIN SMALL LETTER K   # 
+1D694 ;        006B ;  SL      # ( 𝚔 → k ) MATHEMATICAL MONOSPACE SMALL K → LATIN SMALL LETTER K        # 
+1D0B ; 006B ;  SL      # ( ᴋ → k ) LATIN LETTER SMALL CAPITAL K → LATIN SMALL LETTER K   # →к→
+0138 ; 006B ;  SL      # ( ĸ → k ) LATIN SMALL LETTER KRA → LATIN SMALL LETTER K  # →к→
+1D6CB ;        006B ;  SL      # ( 𝛋 → k ) MATHEMATICAL BOLD SMALL KAPPA → LATIN SMALL LETTER K # →κ→→к→
+1D6DE ;        006B ;  SL      # ( 𝛞 → k ) MATHEMATICAL BOLD KAPPA SYMBOL → LATIN SMALL LETTER K        # →κ→→к→
+1D705 ;        006B ;  SL      # ( 𝜅 → k ) MATHEMATICAL ITALIC SMALL KAPPA → LATIN SMALL LETTER K       # →κ→→к→
+1D718 ;        006B ;  SL      # ( 𝜘 → k ) MATHEMATICAL ITALIC KAPPA SYMBOL → LATIN SMALL LETTER K      # →κ→→к→
+1D73F ;        006B ;  SL      # ( 𝜿 → k ) MATHEMATICAL BOLD ITALIC SMALL KAPPA → LATIN SMALL LETTER K  # →κ→→к→
+1D752 ;        006B ;  SL      # ( 𝝒 → k ) MATHEMATICAL BOLD ITALIC KAPPA SYMBOL → LATIN SMALL LETTER K # →κ→→к→
+1D779 ;        006B ;  SL      # ( 𝝹 → k ) MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA → LATIN SMALL LETTER K      # →κ→→к→
+1D78C ;        006B ;  SL      # ( 𝞌 → k ) MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL → LATIN SMALL LETTER K     # →κ→→к→
+1D7B3 ;        006B ;  SL      # ( 𝞳 → k ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA → LATIN SMALL LETTER K       # →κ→→к→
+1D7C6 ;        006B ;  SL      # ( 𝟆 → k ) MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL → LATIN SMALL LETTER K      # →κ→→к→
+
+0199 ; 006B 0314 ;     SL      # ( ƙ → k̔ ) LATIN SMALL LETTER K WITH HOOK → LATIN SMALL LETTER K, COMBINING REVERSED COMMA ABOVE        # 
+
+007C ; 006C ;  SL      #* ( | → l ) VERTICAL LINE → LATIN SMALL LETTER L   # 
+2223 ; 006C ;  SL      #* ( ∣ → l ) DIVIDES → LATIN SMALL LETTER L       # →|→
+FFE8 ; 006C ;  SL      #* ( │ → l ) HALFWIDTH FORMS LIGHT VERTICAL → LATIN SMALL LETTER L        # →|→
+0031 ; 006C ;  SL      # ( 1 → l ) DIGIT ONE → LATIN SMALL LETTER L        # 
+1D7CF ;        006C ;  SL      # ( 𝟏 → l ) MATHEMATICAL BOLD DIGIT ONE → LATIN SMALL LETTER L   # →1→
+1D7D9 ;        006C ;  SL      # ( 𝟙 → l ) MATHEMATICAL DOUBLE-STRUCK DIGIT ONE → LATIN SMALL LETTER L  # →1→
+1D7E3 ;        006C ;  SL      # ( 𝟣 → l ) MATHEMATICAL SANS-SERIF DIGIT ONE → LATIN SMALL LETTER L     # →1→
+1D7ED ;        006C ;  SL      # ( 𝟭 → l ) MATHEMATICAL SANS-SERIF BOLD DIGIT ONE → LATIN SMALL LETTER L        # →1→
+1D7F7 ;        006C ;  SL      # ( 𝟷 → l ) MATHEMATICAL MONOSPACE DIGIT ONE → LATIN SMALL LETTER L      # →1→
+2110 ; 006C ;  SL      # ( ℐ → l ) SCRIPT CAPITAL I → LATIN SMALL LETTER L       # →I→
+2111 ; 006C ;  SL      # ( ℑ → l ) BLACK-LETTER CAPITAL I → LATIN SMALL LETTER L # →I→
+1D408 ;        006C ;  SL      # ( 𝐈 → l ) MATHEMATICAL BOLD CAPITAL I → LATIN SMALL LETTER L   # →I→
+1D43C ;        006C ;  SL      # ( 𝐼 → l ) MATHEMATICAL ITALIC CAPITAL I → LATIN SMALL LETTER L # →I→
+1D470 ;        006C ;  SL      # ( 𝑰 → l ) MATHEMATICAL BOLD ITALIC CAPITAL I → LATIN SMALL LETTER L    # →I→
+1D4D8 ;        006C ;  SL      # ( 𝓘 → l ) MATHEMATICAL BOLD SCRIPT CAPITAL I → LATIN SMALL LETTER L    # →I→
+1D540 ;        006C ;  SL      # ( 𝕀 → l ) MATHEMATICAL DOUBLE-STRUCK CAPITAL I → LATIN SMALL LETTER L  # →I→
+1D574 ;        006C ;  SL      # ( 𝕴 → l ) MATHEMATICAL BOLD FRAKTUR CAPITAL I → LATIN SMALL LETTER L   # →I→
+1D5A8 ;        006C ;  SL      # ( 𝖨 → l ) MATHEMATICAL SANS-SERIF CAPITAL I → LATIN SMALL LETTER L     # →I→
+1D5DC ;        006C ;  SL      # ( 𝗜 → l ) MATHEMATICAL SANS-SERIF BOLD CAPITAL I → LATIN SMALL LETTER L        # →I→
+1D610 ;        006C ;  SL      # ( 𝘐 → l ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL I → LATIN SMALL LETTER L      # →I→
+1D644 ;        006C ;  SL      # ( 𝙄 → l ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I → LATIN SMALL LETTER L # →I→
+1D678 ;        006C ;  SL      # ( 𝙸 → l ) MATHEMATICAL MONOSPACE CAPITAL I → LATIN SMALL LETTER L      # →I→
+FF4C ; 006C ;  SL      # ( l → l ) FULLWIDTH LATIN SMALL LETTER L → LATIN SMALL LETTER L # →Ⅰ→→Ӏ→
+217C ; 006C ;  SL      # ( ⅼ → l ) SMALL ROMAN NUMERAL FIFTY → LATIN SMALL LETTER L      # 
+2113 ; 006C ;  SL      # ( ℓ → l ) SCRIPT SMALL L → LATIN SMALL LETTER L # 
+1D425 ;        006C ;  SL      # ( 𝐥 → l ) MATHEMATICAL BOLD SMALL L → LATIN SMALL LETTER L     # 
+1D459 ;        006C ;  SL      # ( 𝑙 → l ) MATHEMATICAL ITALIC SMALL L → LATIN SMALL LETTER L   # 
+1D48D ;        006C ;  SL      # ( 𝒍 → l ) MATHEMATICAL BOLD ITALIC SMALL L → LATIN SMALL LETTER L      # 
+1D4C1 ;        006C ;  SL      # ( 𝓁 → l ) MATHEMATICAL SCRIPT SMALL L → LATIN SMALL LETTER L   # 
+1D4F5 ;        006C ;  SL      # ( 𝓵 → l ) MATHEMATICAL BOLD SCRIPT SMALL L → LATIN SMALL LETTER L      # 
+1D529 ;        006C ;  SL      # ( 𝔩 → l ) MATHEMATICAL FRAKTUR SMALL L → LATIN SMALL LETTER L  # 
+1D55D ;        006C ;  SL      # ( 𝕝 → l ) MATHEMATICAL DOUBLE-STRUCK SMALL L → LATIN SMALL LETTER L    # 
+1D591 ;        006C ;  SL      # ( 𝖑 → l ) MATHEMATICAL BOLD FRAKTUR SMALL L → LATIN SMALL LETTER L     # 
+1D5C5 ;        006C ;  SL      # ( 𝗅 → l ) MATHEMATICAL SANS-SERIF SMALL L → LATIN SMALL LETTER L       # 
+1D5F9 ;        006C ;  SL      # ( 𝗹 → l ) MATHEMATICAL SANS-SERIF BOLD SMALL L → LATIN SMALL LETTER L  # 
+1D62D ;        006C ;  SL      # ( 𝘭 → l ) MATHEMATICAL SANS-SERIF ITALIC SMALL L → LATIN SMALL LETTER L        # 
+1D661 ;        006C ;  SL      # ( 𝙡 → l ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L → LATIN SMALL LETTER L   # 
+1D695 ;        006C ;  SL      # ( 𝚕 → l ) MATHEMATICAL MONOSPACE SMALL L → LATIN SMALL LETTER L        # 
+01C0 ; 006C ;  SL      # ( ǀ → l ) LATIN LETTER DENTAL CLICK → LATIN SMALL LETTER L       # 
+1D6B0 ;        006C ;  SL      # ( 𝚰 → l ) MATHEMATICAL BOLD CAPITAL IOTA → LATIN SMALL LETTER L        # →Ι→
+1D6EA ;        006C ;  SL      # ( 𝛪 → l ) MATHEMATICAL ITALIC CAPITAL IOTA → LATIN SMALL LETTER L      # →Ι→
+1D724 ;        006C ;  SL      # ( 𝜤 → l ) MATHEMATICAL BOLD ITALIC CAPITAL IOTA → LATIN SMALL LETTER L # →Ι→
+1D75E ;        006C ;  SL      # ( 𝝞 → l ) MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA → LATIN SMALL LETTER L     # →Ι→
+1D798 ;        006C ;  SL      # ( 𝞘 → l ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA → LATIN SMALL LETTER L      # →Ι→
+
+0142 ; 006C 0338 ;     SL      # ( ł → l̸ ) LATIN SMALL LETTER L WITH STROKE → LATIN SMALL LETTER L, COMBINING LONG SOLIDUS OVERLAY      # →l̷→
+
+026D ; 006C 0328 ;     SL      # ( ɭ → l̨ ) LATIN SMALL LETTER L WITH RETROFLEX HOOK → LATIN SMALL LETTER L, COMBINING OGONEK    # →l̢→
+
+026B ; 006C 0334 ;     SL      # ( ɫ → l̴ ) LATIN SMALL LETTER L WITH MIDDLE TILDE → LATIN SMALL LETTER L, COMBINING TILDE OVERLAY       # 
+
+019A ; 006C 0335 ;     SL      # ( ƚ → l̵ ) LATIN SMALL LETTER L WITH BAR → LATIN SMALL LETTER L, COMBINING SHORT STROKE OVERLAY # 
+
+0140 ; 006C 00B7 ;     SL      # ( ŀ → l· ) LATIN SMALL LETTER L WITH MIDDLE DOT → LATIN SMALL LETTER L, MIDDLE DOT      # 
+
+1F102 ;        006C 002C ;     SL      #* ( 🄂 → l, ) DIGIT ONE COMMA → LATIN SMALL LETTER L, COMMA      # →1,→
+
+2488 ; 006C 002E ;     SL      #* ( ⒈ → l. ) DIGIT ONE FULL STOP → LATIN SMALL LETTER L, FULL STOP       # →1.→
+
+2493 ; 006C 0032 002E ;        SL      #* ( ⒓ → l2. ) NUMBER TWELVE FULL STOP → LATIN SMALL LETTER L, DIGIT TWO, FULL STOP       # →12.→
+
+2494 ; 006C 0033 002E ;        SL      #* ( ⒔ → l3. ) NUMBER THIRTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT THREE, FULL STOP   # →13.→
+
+2495 ; 006C 0034 002E ;        SL      #* ( ⒕ → l4. ) NUMBER FOURTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT FOUR, FULL STOP    # →14.→
+
+2496 ; 006C 0035 002E ;        SL      #* ( ⒖ → l5. ) NUMBER FIFTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT FIVE, FULL STOP     # →15.→
+
+2497 ; 006C 0036 002E ;        SL      #* ( ⒗ → l6. ) NUMBER SIXTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT SIX, FULL STOP      # →16.→
+
+2498 ; 006C 0037 002E ;        SL      #* ( ⒘ → l7. ) NUMBER SEVENTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT SEVEN, FULL STOP  # →17.→
+
+2499 ; 006C 0038 002E ;        SL      #* ( ⒙ → l8. ) NUMBER EIGHTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT EIGHT, FULL STOP   # →18.→
+
+249A ; 006C 0039 002E ;        SL      #* ( ⒚ → l9. ) NUMBER NINETEEN FULL STOP → LATIN SMALL LETTER L, DIGIT NINE, FULL STOP    # →19.→
+
+01C9 ; 006C 006A ;     SL      # ( lj → lj ) LATIN SMALL LETTER LJ → LATIN SMALL LETTER L, LATIN SMALL LETTER J    # 
+
+2016 ; 006C 006C ;     SL      #* ( ‖ → ll ) DOUBLE VERTICAL LINE → LATIN SMALL LETTER L, LATIN SMALL LETTER L   # →∥→→||→
+2225 ; 006C 006C ;     SL      #* ( ∥ → ll ) PARALLEL TO → LATIN SMALL LETTER L, LATIN SMALL LETTER L    # →||→
+01C1 ; 006C 006C ;     SL      # ( ǁ → ll ) LATIN LETTER LATERAL CLICK → LATIN SMALL LETTER L, LATIN SMALL LETTER L       # →‖→→∥→→||→
+
+2492 ; 006C 006C 002E ;        SL      #* ( ⒒ → ll. ) NUMBER ELEVEN FULL STOP → LATIN SMALL LETTER L, LATIN SMALL LETTER L, FULL STOP    # →11.→
+
+1D427 ;        006E ;  SL      # ( 𝐧 → n ) MATHEMATICAL BOLD SMALL N → LATIN SMALL LETTER N     # 
+1D45B ;        006E ;  SL      # ( 𝑛 → n ) MATHEMATICAL ITALIC SMALL N → LATIN SMALL LETTER N   # 
+1D48F ;        006E ;  SL      # ( 𝒏 → n ) MATHEMATICAL BOLD ITALIC SMALL N → LATIN SMALL LETTER N      # 
+1D4C3 ;        006E ;  SL      # ( 𝓃 → n ) MATHEMATICAL SCRIPT SMALL N → LATIN SMALL LETTER N   # 
+1D4F7 ;        006E ;  SL      # ( 𝓷 → n ) MATHEMATICAL BOLD SCRIPT SMALL N → LATIN SMALL LETTER N      # 
+1D52B ;        006E ;  SL      # ( 𝔫 → n ) MATHEMATICAL FRAKTUR SMALL N → LATIN SMALL LETTER N  # 
+1D55F ;        006E ;  SL      # ( 𝕟 → n ) MATHEMATICAL DOUBLE-STRUCK SMALL N → LATIN SMALL LETTER N    # 
+1D593 ;        006E ;  SL      # ( 𝖓 → n ) MATHEMATICAL BOLD FRAKTUR SMALL N → LATIN SMALL LETTER N     # 
+1D5C7 ;        006E ;  SL      # ( 𝗇 → n ) MATHEMATICAL SANS-SERIF SMALL N → LATIN SMALL LETTER N       # 
+1D5FB ;        006E ;  SL      # ( 𝗻 → n ) MATHEMATICAL SANS-SERIF BOLD SMALL N → LATIN SMALL LETTER N  # 
+1D62F ;        006E ;  SL      # ( 𝘯 → n ) MATHEMATICAL SANS-SERIF ITALIC SMALL N → LATIN SMALL LETTER N        # 
+1D663 ;        006E ;  SL      # ( 𝙣 → n ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N → LATIN SMALL LETTER N   # 
+1D697 ;        006E ;  SL      # ( 𝚗 → n ) MATHEMATICAL MONOSPACE SMALL N → LATIN SMALL LETTER N        # 
+213C ; 006E ;  SL      # ( ℼ → n ) DOUBLE-STRUCK SMALL PI → LATIN SMALL LETTER N # →π→
+1D6D1 ;        006E ;  SL      # ( 𝛑 → n ) MATHEMATICAL BOLD SMALL PI → LATIN SMALL LETTER N    # →π→
+1D6E1 ;        006E ;  SL      # ( 𝛡 → n ) MATHEMATICAL BOLD PI SYMBOL → LATIN SMALL LETTER N   # →π→
+1D70B ;        006E ;  SL      # ( 𝜋 → n ) MATHEMATICAL ITALIC SMALL PI → LATIN SMALL LETTER N  # →π→
+1D71B ;        006E ;  SL      # ( 𝜛 → n ) MATHEMATICAL ITALIC PI SYMBOL → LATIN SMALL LETTER N # →π→
+1D745 ;        006E ;  SL      # ( 𝝅 → n ) MATHEMATICAL BOLD ITALIC SMALL PI → LATIN SMALL LETTER N     # →π→
+1D755 ;        006E ;  SL      # ( 𝝕 → n ) MATHEMATICAL BOLD ITALIC PI SYMBOL → LATIN SMALL LETTER N    # →π→
+1D77F ;        006E ;  SL      # ( 𝝿 → n ) MATHEMATICAL SANS-SERIF BOLD SMALL PI → LATIN SMALL LETTER N # →π→
+1D78F ;        006E ;  SL      # ( 𝞏 → n ) MATHEMATICAL SANS-SERIF BOLD PI SYMBOL → LATIN SMALL LETTER N        # →π→
+1D7B9 ;        006E ;  SL      # ( 𝞹 → n ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI → LATIN SMALL LETTER N  # →π→
+1D7C9 ;        006E ;  SL      # ( 𝟉 → n ) MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL → LATIN SMALL LETTER N # →π→
+
+0272 ; 0146 ;  SL      # ( ɲ → ņ ) LATIN SMALL LETTER N WITH LEFT HOOK → LATIN SMALL LETTER N WITH CEDILLA       # 
+
+0273 ; 006E 0328 ;     SL      # ( ɳ → n̨ ) LATIN SMALL LETTER N WITH RETROFLEX HOOK → LATIN SMALL LETTER N, COMBINING OGONEK    # →n̢→
+
+019E ; 006E 0329 ;     SL      # ( ƞ → n̩ ) LATIN SMALL LETTER N WITH LONG RIGHT LEG → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW       # 
+1D6C8 ;        006E 0329 ;     SL      # ( 𝛈 → n̩ ) MATHEMATICAL BOLD SMALL ETA → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW  # →η→→ƞ→
+1D702 ;        006E 0329 ;     SL      # ( 𝜂 → n̩ ) MATHEMATICAL ITALIC SMALL ETA → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW        # →η→→ƞ→
+1D73C ;        006E 0329 ;     SL      # ( 𝜼 → n̩ ) MATHEMATICAL BOLD ITALIC SMALL ETA → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW   # →η→→ƞ→
+1D776 ;        006E 0329 ;     SL      # ( 𝝶 → n̩ ) MATHEMATICAL SANS-SERIF BOLD SMALL ETA → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW       # →η→→ƞ→
+1D7B0 ;        006E 0329 ;     SL      # ( 𝞰 → n̩ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW        # →η→→ƞ→
+
+01CC ; 006E 006A ;     SL      # ( nj → nj ) LATIN SMALL LETTER NJ → LATIN SMALL LETTER N, LATIN SMALL LETTER J    # 
+
+0665 ; 006F ;  SL      # ( ‎٥‎ → o ) ARABIC-INDIC DIGIT FIVE → LATIN SMALL LETTER O   # 
+FF4F ; 006F ;  SL      # ( o → o ) FULLWIDTH LATIN SMALL LETTER O → LATIN SMALL LETTER O # →ο→
+2134 ; 006F ;  SL      # ( ℴ → o ) SCRIPT SMALL O → LATIN SMALL LETTER O # 
+1D428 ;        006F ;  SL      # ( 𝐨 → o ) MATHEMATICAL BOLD SMALL O → LATIN SMALL LETTER O     # 
+1D45C ;        006F ;  SL      # ( 𝑜 → o ) MATHEMATICAL ITALIC SMALL O → LATIN SMALL LETTER O   # 
+1D490 ;        006F ;  SL      # ( 𝒐 → o ) MATHEMATICAL BOLD ITALIC SMALL O → LATIN SMALL LETTER O      # 
+1D4F8 ;        006F ;  SL      # ( 𝓸 → o ) MATHEMATICAL BOLD SCRIPT SMALL O → LATIN SMALL LETTER O      # 
+1D52C ;        006F ;  SL      # ( 𝔬 → o ) MATHEMATICAL FRAKTUR SMALL O → LATIN SMALL LETTER O  # 
+1D560 ;        006F ;  SL      # ( 𝕠 → o ) MATHEMATICAL DOUBLE-STRUCK SMALL O → LATIN SMALL LETTER O    # 
+1D594 ;        006F ;  SL      # ( 𝖔 → o ) MATHEMATICAL BOLD FRAKTUR SMALL O → LATIN SMALL LETTER O     # 
+1D5C8 ;        006F ;  SL      # ( 𝗈 → o ) MATHEMATICAL SANS-SERIF SMALL O → LATIN SMALL LETTER O       # 
+1D5FC ;        006F ;  SL      # ( 𝗼 → o ) MATHEMATICAL SANS-SERIF BOLD SMALL O → LATIN SMALL LETTER O  # 
+1D630 ;        006F ;  SL      # ( 𝘰 → o ) MATHEMATICAL SANS-SERIF ITALIC SMALL O → LATIN SMALL LETTER O        # 
+1D664 ;        006F ;  SL      # ( 𝙤 → o ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O → LATIN SMALL LETTER O   # 
+1D698 ;        006F ;  SL      # ( 𝚘 → o ) MATHEMATICAL MONOSPACE SMALL O → LATIN SMALL LETTER O        # 
+1D0F ; 006F ;  SL      # ( ᴏ → o ) LATIN LETTER SMALL CAPITAL O → LATIN SMALL LETTER O   # 
+1D11 ; 006F ;  SL      # ( ᴑ → o ) LATIN SMALL LETTER SIDEWAYS O → LATIN SMALL LETTER O  # 
+1D6D0 ;        006F ;  SL      # ( 𝛐 → o ) MATHEMATICAL BOLD SMALL OMICRON → LATIN SMALL LETTER O       # →ο→
+1D70A ;        006F ;  SL      # ( 𝜊 → o ) MATHEMATICAL ITALIC SMALL OMICRON → LATIN SMALL LETTER O     # →ο→
+1D744 ;        006F ;  SL      # ( 𝝄 → o ) MATHEMATICAL BOLD ITALIC SMALL OMICRON → LATIN SMALL LETTER O        # →ο→
+1D77E ;        006F ;  SL      # ( 𝝾 → o ) MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON → LATIN SMALL LETTER O    # →ο→
+1D7B8 ;        006F ;  SL      # ( 𝞸 → o ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON → LATIN SMALL LETTER O     # →ο→
+1D6D4 ;        006F ;  SL      # ( 𝛔 → o ) MATHEMATICAL BOLD SMALL SIGMA → LATIN SMALL LETTER O # →σ→
+1D70E ;        006F ;  SL      # ( 𝜎 → o ) MATHEMATICAL ITALIC SMALL SIGMA → LATIN SMALL LETTER O       # →σ→
+1D748 ;        006F ;  SL      # ( 𝝈 → o ) MATHEMATICAL BOLD ITALIC SMALL SIGMA → LATIN SMALL LETTER O  # →σ→
+1D782 ;        006F ;  SL      # ( 𝞂 → o ) MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA → LATIN SMALL LETTER O      # →σ→
+1D7BC ;        006F ;  SL      # ( 𝞼 → o ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA → LATIN SMALL LETTER O       # →σ→
+
+2070 ; 00BA ;  SL      #* ( ⁰ → º ) SUPERSCRIPT ZERO → MASCULINE ORDINAL INDICATOR      # 
+1D52 ; 00BA ;  SL      # ( ᵒ → º ) MODIFIER LETTER SMALL O → MASCULINE ORDINAL INDICATOR        # →⁰→
+
+01D2 ; 014F ;  SL      # ( ǒ → ŏ ) LATIN SMALL LETTER O WITH CARON → LATIN SMALL LETTER O WITH BREVE     # 
+
+00F8 ; 006F 0338 ;     SL      # ( ø → o̸ ) LATIN SMALL LETTER O WITH STROKE → LATIN SMALL LETTER O, COMBINING LONG SOLIDUS OVERLAY      # →o̷→
+
+0275 ; 006F 0335 ;     SL      # ( ɵ → o̵ ) LATIN SMALL LETTER BARRED O → LATIN SMALL LETTER O, COMBINING SHORT STROKE OVERLAY   # 
+
+01A1 ; 006F 0027 ;     SL      # ( ơ → o' ) LATIN SMALL LETTER O WITH HORN → LATIN SMALL LETTER O, APOSTROPHE     # →oʼ→
+
+0025 ; 00BA 002F 2080 2080 ;   SL      #* ( % → º/₀₀ ) PERCENT SIGN → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO    # →‰→→⁰/₀₀→
+2030 ; 00BA 002F 2080 2080 ;   SL      #* ( ‰ → º/₀₀ ) PER MILLE SIGN → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO        # →⁰/₀₀→
+2052 ; 00BA 002F 2080 2080 ;   SL      #* ( ⁒ → º/₀₀ ) COMMERCIAL MINUS SIGN → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO # →%→→‰→→⁰/₀₀→
+2100 ; 00BA 002F 2080 2080 ;   SL      #* ( ℀ → º/₀₀ ) ACCOUNT OF → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO    # →%→→‰→→⁰/₀₀→
+2101 ; 00BA 002F 2080 2080 ;   SL      #* ( ℁ → º/₀₀ ) ADDRESSED TO THE SUBJECT → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO      # →%→→‰→→⁰/₀₀→
+2105 ; 00BA 002F 2080 2080 ;   SL      #* ( ℅ → º/₀₀ ) CARE OF → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO       # →%→→‰→→⁰/₀₀→
+2106 ; 00BA 002F 2080 2080 ;   SL      #* ( ℆ → º/₀₀ ) CADA UNA → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO      # →%→→‰→→⁰/₀₀→
+
+2031 ; 00BA 002F 2080 2080 2080 ;      SL      #* ( ‱ → º/₀₀₀ ) PER TEN THOUSAND SIGN → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO, SUBSCRIPT ZERO      # →⁰/₀₀₀→
+
+0153 ; 006F 0065 ;     SL      # ( œ → oe ) LATIN SMALL LIGATURE OE → LATIN SMALL LETTER O, LATIN SMALL LETTER E  # 
+
+0276 ; 006F 1D07 ;     SL      # ( ɶ → oᴇ ) LATIN LETTER SMALL CAPITAL OE → LATIN SMALL LETTER O, LATIN LETTER SMALL CAPITAL E  # 
+
+A74F ; 006F 006F ;     SL      # ( ꝏ → oo ) LATIN SMALL LETTER OO → LATIN SMALL LETTER O, LATIN SMALL LETTER O   # 
+
+2184 ; 0254 ;  SL      # ( ↄ → ɔ ) LATIN SMALL LETTER REVERSED C → LATIN SMALL LETTER OPEN O    # 
+1D10 ; 0254 ;  SL      # ( ᴐ → ɔ ) LATIN LETTER SMALL CAPITAL OPEN O → LATIN SMALL LETTER OPEN O        # 
+
+2374 ; 0070 ;  SL      #* ( ⍴ → p ) APL FUNCTIONAL SYMBOL RHO → LATIN SMALL LETTER P     # →ρ→
+FF50 ; 0070 ;  SL      # ( p → p ) FULLWIDTH LATIN SMALL LETTER P → LATIN SMALL LETTER P # →р→
+1D429 ;        0070 ;  SL      # ( 𝐩 → p ) MATHEMATICAL BOLD SMALL P → LATIN SMALL LETTER P     # 
+1D45D ;        0070 ;  SL      # ( 𝑝 → p ) MATHEMATICAL ITALIC SMALL P → LATIN SMALL LETTER P   # 
+1D491 ;        0070 ;  SL      # ( 𝒑 → p ) MATHEMATICAL BOLD ITALIC SMALL P → LATIN SMALL LETTER P      # 
+1D4C5 ;        0070 ;  SL      # ( 𝓅 → p ) MATHEMATICAL SCRIPT SMALL P → LATIN SMALL LETTER P   # 
+1D4F9 ;        0070 ;  SL      # ( 𝓹 → p ) MATHEMATICAL BOLD SCRIPT SMALL P → LATIN SMALL LETTER P      # 
+1D52D ;        0070 ;  SL      # ( 𝔭 → p ) MATHEMATICAL FRAKTUR SMALL P → LATIN SMALL LETTER P  # 
+1D561 ;        0070 ;  SL      # ( 𝕡 → p ) MATHEMATICAL DOUBLE-STRUCK SMALL P → LATIN SMALL LETTER P    # 
+1D595 ;        0070 ;  SL      # ( 𝖕 → p ) MATHEMATICAL BOLD FRAKTUR SMALL P → LATIN SMALL LETTER P     # 
+1D5C9 ;        0070 ;  SL      # ( 𝗉 → p ) MATHEMATICAL SANS-SERIF SMALL P → LATIN SMALL LETTER P       # 
+1D5FD ;        0070 ;  SL      # ( 𝗽 → p ) MATHEMATICAL SANS-SERIF BOLD SMALL P → LATIN SMALL LETTER P  # 
+1D631 ;        0070 ;  SL      # ( 𝘱 → p ) MATHEMATICAL SANS-SERIF ITALIC SMALL P → LATIN SMALL LETTER P        # 
+1D665 ;        0070 ;  SL      # ( 𝙥 → p ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P → LATIN SMALL LETTER P   # 
+1D699 ;        0070 ;  SL      # ( 𝚙 → p ) MATHEMATICAL MONOSPACE SMALL P → LATIN SMALL LETTER P        # 
+1D6D2 ;        0070 ;  SL      # ( 𝛒 → p ) MATHEMATICAL BOLD SMALL RHO → LATIN SMALL LETTER P   # →ρ→
+1D6E0 ;        0070 ;  SL      # ( 𝛠 → p ) MATHEMATICAL BOLD RHO SYMBOL → LATIN SMALL LETTER P  # →ρ→
+1D70C ;        0070 ;  SL      # ( 𝜌 → p ) MATHEMATICAL ITALIC SMALL RHO → LATIN SMALL LETTER P # →ρ→
+1D71A ;        0070 ;  SL      # ( 𝜚 → p ) MATHEMATICAL ITALIC RHO SYMBOL → LATIN SMALL LETTER P        # →ρ→
+1D746 ;        0070 ;  SL      # ( 𝝆 → p ) MATHEMATICAL BOLD ITALIC SMALL RHO → LATIN SMALL LETTER P    # →ρ→
+1D754 ;        0070 ;  SL      # ( 𝝔 → p ) MATHEMATICAL BOLD ITALIC RHO SYMBOL → LATIN SMALL LETTER P   # →ρ→
+1D780 ;        0070 ;  SL      # ( 𝞀 → p ) MATHEMATICAL SANS-SERIF BOLD SMALL RHO → LATIN SMALL LETTER P        # →ρ→
+1D78E ;        0070 ;  SL      # ( 𝞎 → p ) MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL → LATIN SMALL LETTER P       # →ρ→
+1D7BA ;        0070 ;  SL      # ( 𝞺 → p ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO → LATIN SMALL LETTER P # →ρ→
+1D7C8 ;        0070 ;  SL      # ( 𝟈 → p ) MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL → LATIN SMALL LETTER P        # →ρ→
+
+01A5 ; 0070 0314 ;     SL      # ( ƥ → p̔ ) LATIN SMALL LETTER P WITH HOOK → LATIN SMALL LETTER P, COMBINING REVERSED COMMA ABOVE        # 
+
+1D6D7 ;        0278 ;  SL      # ( 𝛗 → ɸ ) MATHEMATICAL BOLD SMALL PHI → LATIN SMALL LETTER PHI        # →φ→
+1D6DF ;        0278 ;  SL      # ( 𝛟 → ɸ ) MATHEMATICAL BOLD PHI SYMBOL → LATIN SMALL LETTER PHI       # →φ→
+1D711 ;        0278 ;  SL      # ( 𝜑 → ɸ ) MATHEMATICAL ITALIC SMALL PHI → LATIN SMALL LETTER PHI      # →φ→
+1D719 ;        0278 ;  SL      # ( 𝜙 → ɸ ) MATHEMATICAL ITALIC PHI SYMBOL → LATIN SMALL LETTER PHI     # →φ→
+1D74B ;        0278 ;  SL      # ( 𝝋 → ɸ ) MATHEMATICAL BOLD ITALIC SMALL PHI → LATIN SMALL LETTER PHI # →φ→
+1D753 ;        0278 ;  SL      # ( 𝝓 → ɸ ) MATHEMATICAL BOLD ITALIC PHI SYMBOL → LATIN SMALL LETTER PHI        # →φ→
+1D785 ;        0278 ;  SL      # ( 𝞅 → ɸ ) MATHEMATICAL SANS-SERIF BOLD SMALL PHI → LATIN SMALL LETTER PHI     # →φ→
+1D78D ;        0278 ;  SL      # ( 𝞍 → ɸ ) MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL → LATIN SMALL LETTER PHI    # →φ→
+1D7BF ;        0278 ;  SL      # ( 𝞿 → ɸ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI → LATIN SMALL LETTER PHI      # →φ→
+1D7C7 ;        0278 ;  SL      # ( 𝟇 → ɸ ) MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL → LATIN SMALL LETTER PHI     # →φ→
+
+1D42A ;        0071 ;  SL      # ( 𝐪 → q ) MATHEMATICAL BOLD SMALL Q → LATIN SMALL LETTER Q     # 
+1D45E ;        0071 ;  SL      # ( 𝑞 → q ) MATHEMATICAL ITALIC SMALL Q → LATIN SMALL LETTER Q   # 
+1D492 ;        0071 ;  SL      # ( 𝒒 → q ) MATHEMATICAL BOLD ITALIC SMALL Q → LATIN SMALL LETTER Q      # 
+1D4C6 ;        0071 ;  SL      # ( 𝓆 → q ) MATHEMATICAL SCRIPT SMALL Q → LATIN SMALL LETTER Q   # 
+1D4FA ;        0071 ;  SL      # ( 𝓺 → q ) MATHEMATICAL BOLD SCRIPT SMALL Q → LATIN SMALL LETTER Q      # 
+1D52E ;        0071 ;  SL      # ( 𝔮 → q ) MATHEMATICAL FRAKTUR SMALL Q → LATIN SMALL LETTER Q  # 
+1D562 ;        0071 ;  SL      # ( 𝕢 → q ) MATHEMATICAL DOUBLE-STRUCK SMALL Q → LATIN SMALL LETTER Q    # 
+1D596 ;        0071 ;  SL      # ( 𝖖 → q ) MATHEMATICAL BOLD FRAKTUR SMALL Q → LATIN SMALL LETTER Q     # 
+1D5CA ;        0071 ;  SL      # ( 𝗊 → q ) MATHEMATICAL SANS-SERIF SMALL Q → LATIN SMALL LETTER Q       # 
+1D5FE ;        0071 ;  SL      # ( 𝗾 → q ) MATHEMATICAL SANS-SERIF BOLD SMALL Q → LATIN SMALL LETTER Q  # 
+1D632 ;        0071 ;  SL      # ( 𝘲 → q ) MATHEMATICAL SANS-SERIF ITALIC SMALL Q → LATIN SMALL LETTER Q        # 
+1D666 ;        0071 ;  SL      # ( 𝙦 → q ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q → LATIN SMALL LETTER Q   # 
+1D69A ;        0071 ;  SL      # ( 𝚚 → q ) MATHEMATICAL MONOSPACE SMALL Q → LATIN SMALL LETTER Q        # 
+
+1D410 ;        211A ;  SL      # ( 𝐐 → ℚ ) MATHEMATICAL BOLD CAPITAL Q → DOUBLE-STRUCK CAPITAL Q      # →Q→
+1D444 ;        211A ;  SL      # ( 𝑄 → ℚ ) MATHEMATICAL ITALIC CAPITAL Q → DOUBLE-STRUCK CAPITAL Q    # →Q→
+1D478 ;        211A ;  SL      # ( 𝑸 → ℚ ) MATHEMATICAL BOLD ITALIC CAPITAL Q → DOUBLE-STRUCK CAPITAL Q       # →Q→
+1D4AC ;        211A ;  SL      # ( 𝒬 → ℚ ) MATHEMATICAL SCRIPT CAPITAL Q → DOUBLE-STRUCK CAPITAL Q    # →Q→
+1D4E0 ;        211A ;  SL      # ( 𝓠 → ℚ ) MATHEMATICAL BOLD SCRIPT CAPITAL Q → DOUBLE-STRUCK CAPITAL Q       # →Q→
+1D514 ;        211A ;  SL      # ( 𝔔 → ℚ ) MATHEMATICAL FRAKTUR CAPITAL Q → DOUBLE-STRUCK CAPITAL Q   # →Q→
+1D57C ;        211A ;  SL      # ( 𝕼 → ℚ ) MATHEMATICAL BOLD FRAKTUR CAPITAL Q → DOUBLE-STRUCK CAPITAL Q      # →Q→
+1D5B0 ;        211A ;  SL      # ( 𝖰 → ℚ ) MATHEMATICAL SANS-SERIF CAPITAL Q → DOUBLE-STRUCK CAPITAL Q        # →Q→
+1D5E4 ;        211A ;  SL      # ( 𝗤 → ℚ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL Q → DOUBLE-STRUCK CAPITAL Q   # →Q→
+1D618 ;        211A ;  SL      # ( 𝘘 → ℚ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q → DOUBLE-STRUCK CAPITAL Q # →Q→
+1D64C ;        211A ;  SL      # ( 𝙌 → ℚ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q → DOUBLE-STRUCK CAPITAL Q    # →Q→
+1D680 ;        211A ;  SL      # ( 𝚀 → ℚ ) MATHEMATICAL MONOSPACE CAPITAL Q → DOUBLE-STRUCK CAPITAL Q # →Q→
+
+02A0 ; 0071 0314 ;     SL      # ( ʠ → q̔ ) LATIN SMALL LETTER Q WITH HOOK → LATIN SMALL LETTER Q, COMBINING REVERSED COMMA ABOVE        # 
+
+1D42B ;        0072 ;  SL      # ( 𝐫 → r ) MATHEMATICAL BOLD SMALL R → LATIN SMALL LETTER R     # 
+1D45F ;        0072 ;  SL      # ( 𝑟 → r ) MATHEMATICAL ITALIC SMALL R → LATIN SMALL LETTER R   # 
+1D493 ;        0072 ;  SL      # ( 𝒓 → r ) MATHEMATICAL BOLD ITALIC SMALL R → LATIN SMALL LETTER R      # 
+1D4C7 ;        0072 ;  SL      # ( 𝓇 → r ) MATHEMATICAL SCRIPT SMALL R → LATIN SMALL LETTER R   # 
+1D4FB ;        0072 ;  SL      # ( 𝓻 → r ) MATHEMATICAL BOLD SCRIPT SMALL R → LATIN SMALL LETTER R      # 
+1D52F ;        0072 ;  SL      # ( 𝔯 → r ) MATHEMATICAL FRAKTUR SMALL R → LATIN SMALL LETTER R  # 
+1D563 ;        0072 ;  SL      # ( 𝕣 → r ) MATHEMATICAL DOUBLE-STRUCK SMALL R → LATIN SMALL LETTER R    # 
+1D597 ;        0072 ;  SL      # ( 𝖗 → r ) MATHEMATICAL BOLD FRAKTUR SMALL R → LATIN SMALL LETTER R     # 
+1D5CB ;        0072 ;  SL      # ( 𝗋 → r ) MATHEMATICAL SANS-SERIF SMALL R → LATIN SMALL LETTER R       # 
+1D5FF ;        0072 ;  SL      # ( 𝗿 → r ) MATHEMATICAL SANS-SERIF BOLD SMALL R → LATIN SMALL LETTER R  # 
+1D633 ;        0072 ;  SL      # ( 𝘳 → r ) MATHEMATICAL SANS-SERIF ITALIC SMALL R → LATIN SMALL LETTER R        # 
+1D667 ;        0072 ;  SL      # ( 𝙧 → r ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R → LATIN SMALL LETTER R   # 
+1D69B ;        0072 ;  SL      # ( 𝚛 → r ) MATHEMATICAL MONOSPACE SMALL R → LATIN SMALL LETTER R        # 
+
+027D ; 0072 0328 ;     SL      # ( ɽ → r̨ ) LATIN SMALL LETTER R WITH TAIL → LATIN SMALL LETTER R, COMBINING OGONEK      # 
+
+027C ; 0072 0329 ;     SL      # ( ɼ → r̩ ) LATIN SMALL LETTER R WITH LONG LEG → LATIN SMALL LETTER R, COMBINING VERTICAL LINE BELOW     # 
+
+006D ; 0072 006E ;     SL      # ( m → rn ) LATIN SMALL LETTER M → LATIN SMALL LETTER R, LATIN SMALL LETTER N      # 
+217F ; 0072 006E ;     SL      # ( ⅿ → rn ) SMALL ROMAN NUMERAL ONE THOUSAND → LATIN SMALL LETTER R, LATIN SMALL LETTER N        # →m→
+1D426 ;        0072 006E ;     SL      # ( 𝐦 → rn ) MATHEMATICAL BOLD SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N      # →m→
+1D45A ;        0072 006E ;     SL      # ( 𝑚 → rn ) MATHEMATICAL ITALIC SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N    # →m→
+1D48E ;        0072 006E ;     SL      # ( 𝒎 → rn ) MATHEMATICAL BOLD ITALIC SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N       # →m→
+1D4C2 ;        0072 006E ;     SL      # ( 𝓂 → rn ) MATHEMATICAL SCRIPT SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N    # →m→
+1D4F6 ;        0072 006E ;     SL      # ( 𝓶 → rn ) MATHEMATICAL BOLD SCRIPT SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N       # →m→
+1D52A ;        0072 006E ;     SL      # ( 𝔪 → rn ) MATHEMATICAL FRAKTUR SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N   # →m→
+1D55E ;        0072 006E ;     SL      # ( 𝕞 → rn ) MATHEMATICAL DOUBLE-STRUCK SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N     # →m→
+1D592 ;        0072 006E ;     SL      # ( 𝖒 → rn ) MATHEMATICAL BOLD FRAKTUR SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N      # →m→
+1D5C6 ;        0072 006E ;     SL      # ( 𝗆 → rn ) MATHEMATICAL SANS-SERIF SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N        # →m→
+1D5FA ;        0072 006E ;     SL      # ( 𝗺 → rn ) MATHEMATICAL SANS-SERIF BOLD SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N   # →m→
+1D62E ;        0072 006E ;     SL      # ( 𝘮 → rn ) MATHEMATICAL SANS-SERIF ITALIC SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N # →m→
+1D662 ;        0072 006E ;     SL      # ( 𝙢 → rn ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N    # →m→
+1D696 ;        0072 006E ;     SL      # ( 𝚖 → rn ) MATHEMATICAL MONOSPACE SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N # →m→
+028D ; 0072 006E ;     SL      # ( ʍ → rn ) LATIN SMALL LETTER TURNED W → LATIN SMALL LETTER R, LATIN SMALL LETTER N      # →m→
+
+0271 ; 0072 006E 0326 ;        SL      # ( ɱ → rn̦ ) LATIN SMALL LETTER M WITH HOOK → LATIN SMALL LETTER R, LATIN SMALL LETTER N, COMBINING COMMA BELOW  # →m̡→
+
+2129 ; 027F ;  SL      #* ( ℩ → ɿ ) TURNED GREEK SMALL LETTER IOTA → LATIN SMALL LETTER REVERSED R WITH FISHHOOK        # 
+
+FF53 ; 0073 ;  SL      # ( s → s ) FULLWIDTH LATIN SMALL LETTER S → LATIN SMALL LETTER S # →ѕ→
+1D42C ;        0073 ;  SL      # ( 𝐬 → s ) MATHEMATICAL BOLD SMALL S → LATIN SMALL LETTER S     # 
+1D460 ;        0073 ;  SL      # ( 𝑠 → s ) MATHEMATICAL ITALIC SMALL S → LATIN SMALL LETTER S   # 
+1D494 ;        0073 ;  SL      # ( 𝒔 → s ) MATHEMATICAL BOLD ITALIC SMALL S → LATIN SMALL LETTER S      # 
+1D4C8 ;        0073 ;  SL      # ( 𝓈 → s ) MATHEMATICAL SCRIPT SMALL S → LATIN SMALL LETTER S   # 
+1D4FC ;        0073 ;  SL      # ( 𝓼 → s ) MATHEMATICAL BOLD SCRIPT SMALL S → LATIN SMALL LETTER S      # 
+1D530 ;        0073 ;  SL      # ( 𝔰 → s ) MATHEMATICAL FRAKTUR SMALL S → LATIN SMALL LETTER S  # 
+1D564 ;        0073 ;  SL      # ( 𝕤 → s ) MATHEMATICAL DOUBLE-STRUCK SMALL S → LATIN SMALL LETTER S    # 
+1D598 ;        0073 ;  SL      # ( 𝖘 → s ) MATHEMATICAL BOLD FRAKTUR SMALL S → LATIN SMALL LETTER S     # 
+1D5CC ;        0073 ;  SL      # ( 𝗌 → s ) MATHEMATICAL SANS-SERIF SMALL S → LATIN SMALL LETTER S       # 
+1D600 ;        0073 ;  SL      # ( 𝘀 → s ) MATHEMATICAL SANS-SERIF BOLD SMALL S → LATIN SMALL LETTER S  # 
+1D634 ;        0073 ;  SL      # ( 𝘴 → s ) MATHEMATICAL SANS-SERIF ITALIC SMALL S → LATIN SMALL LETTER S        # 
+1D668 ;        0073 ;  SL      # ( 𝙨 → s ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S → LATIN SMALL LETTER S   # 
+1D69C ;        0073 ;  SL      # ( 𝚜 → s ) MATHEMATICAL MONOSPACE SMALL S → LATIN SMALL LETTER S        # 
+A731 ; 0073 ;  SL      # ( ꜱ → s ) LATIN LETTER SMALL CAPITAL S → LATIN SMALL LETTER S   # 
+01BD ; 0073 ;  SL      # ( ƽ → s ) LATIN SMALL LETTER TONE FIVE → LATIN SMALL LETTER S    # 
+
+0282 ; 0073 0328 ;     SL      # ( ʂ → s̨ ) LATIN SMALL LETTER S WITH HOOK → LATIN SMALL LETTER S, COMBINING OGONEK      # 
+
+222B ; 0283 ;  SL      #* ( ∫ → ʃ ) INTEGRAL → LATIN SMALL LETTER ESH   # 
+
+222C ; 0283 0283 ;     SL      #* ( ∬ → ʃʃ ) DOUBLE INTEGRAL → LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH  # →∫∫→
+
+222D ; 0283 0283 0283 ;        SL      #* ( ∭ → ʃʃʃ ) TRIPLE INTEGRAL → LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH        # →∫∫∫→
+
+2A0C ; 0283 0283 0283 0283 ;   SL      #* ( ⨌ → ʃʃʃʃ ) QUADRUPLE INTEGRAL OPERATOR → LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH  # →∫∫∫∫→
+
+1D42D ;        0074 ;  SL      # ( 𝐭 → t ) MATHEMATICAL BOLD SMALL T → LATIN SMALL LETTER T     # 
+1D461 ;        0074 ;  SL      # ( 𝑡 → t ) MATHEMATICAL ITALIC SMALL T → LATIN SMALL LETTER T   # 
+1D495 ;        0074 ;  SL      # ( 𝒕 → t ) MATHEMATICAL BOLD ITALIC SMALL T → LATIN SMALL LETTER T      # 
+1D4C9 ;        0074 ;  SL      # ( 𝓉 → t ) MATHEMATICAL SCRIPT SMALL T → LATIN SMALL LETTER T   # 
+1D4FD ;        0074 ;  SL      # ( 𝓽 → t ) MATHEMATICAL BOLD SCRIPT SMALL T → LATIN SMALL LETTER T      # 
+1D531 ;        0074 ;  SL      # ( 𝔱 → t ) MATHEMATICAL FRAKTUR SMALL T → LATIN SMALL LETTER T  # 
+1D565 ;        0074 ;  SL      # ( 𝕥 → t ) MATHEMATICAL DOUBLE-STRUCK SMALL T → LATIN SMALL LETTER T    # 
+1D599 ;        0074 ;  SL      # ( 𝖙 → t ) MATHEMATICAL BOLD FRAKTUR SMALL T → LATIN SMALL LETTER T     # 
+1D5CD ;        0074 ;  SL      # ( 𝗍 → t ) MATHEMATICAL SANS-SERIF SMALL T → LATIN SMALL LETTER T       # 
+1D601 ;        0074 ;  SL      # ( 𝘁 → t ) MATHEMATICAL SANS-SERIF BOLD SMALL T → LATIN SMALL LETTER T  # 
+1D635 ;        0074 ;  SL      # ( 𝘵 → t ) MATHEMATICAL SANS-SERIF ITALIC SMALL T → LATIN SMALL LETTER T        # 
+1D669 ;        0074 ;  SL      # ( 𝙩 → t ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T → LATIN SMALL LETTER T   # 
+1D69D ;        0074 ;  SL      # ( 𝚝 → t ) MATHEMATICAL MONOSPACE SMALL T → LATIN SMALL LETTER T        # 
+1D1B ; 0074 ;  SL      # ( ᴛ → t ) LATIN LETTER SMALL CAPITAL T → LATIN SMALL LETTER T   # →т→→τ→
+1D6D5 ;        0074 ;  SL      # ( 𝛕 → t ) MATHEMATICAL BOLD SMALL TAU → LATIN SMALL LETTER T   # →τ→
+1D70F ;        0074 ;  SL      # ( 𝜏 → t ) MATHEMATICAL ITALIC SMALL TAU → LATIN SMALL LETTER T # →τ→
+1D749 ;        0074 ;  SL      # ( 𝝉 → t ) MATHEMATICAL BOLD ITALIC SMALL TAU → LATIN SMALL LETTER T    # →τ→
+1D783 ;        0074 ;  SL      # ( 𝞃 → t ) MATHEMATICAL SANS-SERIF BOLD SMALL TAU → LATIN SMALL LETTER T        # →τ→
+1D7BD ;        0074 ;  SL      # ( 𝞽 → t ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU → LATIN SMALL LETTER T # →τ→
+
+01AD ; 0074 0314 ;     SL      # ( ƭ → t̔ ) LATIN SMALL LETTER T WITH HOOK → LATIN SMALL LETTER T, COMBINING REVERSED COMMA ABOVE        # 
+
+021B ; 0163 ;  SL      # ( ț → ţ ) LATIN SMALL LETTER T WITH COMMA BELOW → LATIN SMALL LETTER T WITH CEDILLA     # 
+01AB ; 0163 ;  SL      # ( ƫ → ţ ) LATIN SMALL LETTER T WITH PALATAL HOOK → LATIN SMALL LETTER T WITH CEDILLA    # 
+
+0167 ; 0074 0335 ;     SL      # ( ŧ → t̵ ) LATIN SMALL LETTER T WITH STROKE → LATIN SMALL LETTER T, COMBINING SHORT STROKE OVERLAY      # 
+
+02A8 ; 0074 0255 ;     SL      # ( ʨ → tɕ ) LATIN SMALL LETTER TC DIGRAPH WITH CURL → LATIN SMALL LETTER T, LATIN SMALL LETTER C WITH CURL       # 
+
+A777 ; 0074 0066 ;     SL      # ( ꝷ → tf ) LATIN SMALL LETTER TUM → LATIN SMALL LETTER T, LATIN SMALL LETTER F  # 
+
+02A6 ; 0074 0073 ;     SL      # ( ʦ → ts ) LATIN SMALL LETTER TS DIGRAPH → LATIN SMALL LETTER T, LATIN SMALL LETTER S    # 
+
+02A7 ; 0074 0283 ;     SL      # ( ʧ → tʃ ) LATIN SMALL LETTER TESH DIGRAPH → LATIN SMALL LETTER T, LATIN SMALL LETTER ESH       # 
+
+A729 ; 0074 021D ;     SL      # ( ꜩ → tȝ ) LATIN SMALL LETTER TZ → LATIN SMALL LETTER T, LATIN SMALL LETTER YOGH       # 
+
+1D42E ;        0075 ;  SL      # ( 𝐮 → u ) MATHEMATICAL BOLD SMALL U → LATIN SMALL LETTER U     # 
+1D462 ;        0075 ;  SL      # ( 𝑢 → u ) MATHEMATICAL ITALIC SMALL U → LATIN SMALL LETTER U   # 
+1D496 ;        0075 ;  SL      # ( 𝒖 → u ) MATHEMATICAL BOLD ITALIC SMALL U → LATIN SMALL LETTER U      # 
+1D4CA ;        0075 ;  SL      # ( 𝓊 → u ) MATHEMATICAL SCRIPT SMALL U → LATIN SMALL LETTER U   # 
+1D4FE ;        0075 ;  SL      # ( 𝓾 → u ) MATHEMATICAL BOLD SCRIPT SMALL U → LATIN SMALL LETTER U      # 
+1D532 ;        0075 ;  SL      # ( 𝔲 → u ) MATHEMATICAL FRAKTUR SMALL U → LATIN SMALL LETTER U  # 
+1D566 ;        0075 ;  SL      # ( 𝕦 → u ) MATHEMATICAL DOUBLE-STRUCK SMALL U → LATIN SMALL LETTER U    # 
+1D59A ;        0075 ;  SL      # ( 𝖚 → u ) MATHEMATICAL BOLD FRAKTUR SMALL U → LATIN SMALL LETTER U     # 
+1D5CE ;        0075 ;  SL      # ( 𝗎 → u ) MATHEMATICAL SANS-SERIF SMALL U → LATIN SMALL LETTER U       # 
+1D602 ;        0075 ;  SL      # ( 𝘂 → u ) MATHEMATICAL SANS-SERIF BOLD SMALL U → LATIN SMALL LETTER U  # 
+1D636 ;        0075 ;  SL      # ( 𝘶 → u ) MATHEMATICAL SANS-SERIF ITALIC SMALL U → LATIN SMALL LETTER U        # 
+1D66A ;        0075 ;  SL      # ( 𝙪 → u ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U → LATIN SMALL LETTER U   # 
+1D69E ;        0075 ;  SL      # ( 𝚞 → u ) MATHEMATICAL MONOSPACE SMALL U → LATIN SMALL LETTER U        # 
+1D1C ; 0075 ;  SL      # ( ᴜ → u ) LATIN LETTER SMALL CAPITAL U → LATIN SMALL LETTER U   # 
+028B ; 0075 ;  SL      # ( ʋ → u ) LATIN SMALL LETTER V WITH HOOK → LATIN SMALL LETTER U  # 
+1D6D6 ;        0075 ;  SL      # ( 𝛖 → u ) MATHEMATICAL BOLD SMALL UPSILON → LATIN SMALL LETTER U       # →υ→→ʋ→
+1D710 ;        0075 ;  SL      # ( 𝜐 → u ) MATHEMATICAL ITALIC SMALL UPSILON → LATIN SMALL LETTER U     # →υ→→ʋ→
+1D74A ;        0075 ;  SL      # ( 𝝊 → u ) MATHEMATICAL BOLD ITALIC SMALL UPSILON → LATIN SMALL LETTER U        # →υ→→ʋ→
+1D784 ;        0075 ;  SL      # ( 𝞄 → u ) MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON → LATIN SMALL LETTER U    # →υ→→ʋ→
+1D7BE ;        0075 ;  SL      # ( 𝞾 → u ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON → LATIN SMALL LETTER U     # →υ→→ʋ→
+
+01D4 ; 016D ;  SL      # ( ǔ → ŭ ) LATIN SMALL LETTER U WITH CARON → LATIN SMALL LETTER U WITH BREVE     # 
+
+2228 ; 0076 ;  SL      #* ( ∨ → v ) LOGICAL OR → LATIN SMALL LETTER V    # 
+22C1 ; 0076 ;  SL      #* ( ⋁ → v ) N-ARY LOGICAL OR → LATIN SMALL LETTER V      # →∨→
+FF56 ; 0076 ;  SL      # ( v → v ) FULLWIDTH LATIN SMALL LETTER V → LATIN SMALL LETTER V # →ν→
+2174 ; 0076 ;  SL      # ( ⅴ → v ) SMALL ROMAN NUMERAL FIVE → LATIN SMALL LETTER V       # 
+1D42F ;        0076 ;  SL      # ( 𝐯 → v ) MATHEMATICAL BOLD SMALL V → LATIN SMALL LETTER V     # 
+1D463 ;        0076 ;  SL      # ( 𝑣 → v ) MATHEMATICAL ITALIC SMALL V → LATIN SMALL LETTER V   # 
+1D497 ;        0076 ;  SL      # ( 𝒗 → v ) MATHEMATICAL BOLD ITALIC SMALL V → LATIN SMALL LETTER V      # 
+1D4CB ;        0076 ;  SL      # ( 𝓋 → v ) MATHEMATICAL SCRIPT SMALL V → LATIN SMALL LETTER V   # 
+1D4FF ;        0076 ;  SL      # ( 𝓿 → v ) MATHEMATICAL BOLD SCRIPT SMALL V → LATIN SMALL LETTER V      # 
+1D533 ;        0076 ;  SL      # ( 𝔳 → v ) MATHEMATICAL FRAKTUR SMALL V → LATIN SMALL LETTER V  # 
+1D567 ;        0076 ;  SL      # ( 𝕧 → v ) MATHEMATICAL DOUBLE-STRUCK SMALL V → LATIN SMALL LETTER V    # 
+1D59B ;        0076 ;  SL      # ( 𝖛 → v ) MATHEMATICAL BOLD FRAKTUR SMALL V → LATIN SMALL LETTER V     # 
+1D5CF ;        0076 ;  SL      # ( 𝗏 → v ) MATHEMATICAL SANS-SERIF SMALL V → LATIN SMALL LETTER V       # 
+1D603 ;        0076 ;  SL      # ( 𝘃 → v ) MATHEMATICAL SANS-SERIF BOLD SMALL V → LATIN SMALL LETTER V  # 
+1D637 ;        0076 ;  SL      # ( 𝘷 → v ) MATHEMATICAL SANS-SERIF ITALIC SMALL V → LATIN SMALL LETTER V        # 
+1D66B ;        0076 ;  SL      # ( 𝙫 → v ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V → LATIN SMALL LETTER V   # 
+1D69F ;        0076 ;  SL      # ( 𝚟 → v ) MATHEMATICAL MONOSPACE SMALL V → LATIN SMALL LETTER V        # 
+1D20 ; 0076 ;  SL      # ( ᴠ → v ) LATIN LETTER SMALL CAPITAL V → LATIN SMALL LETTER V   # 
+1D6CE ;        0076 ;  SL      # ( 𝛎 → v ) MATHEMATICAL BOLD SMALL NU → LATIN SMALL LETTER V    # →ν→
+1D708 ;        0076 ;  SL      # ( 𝜈 → v ) MATHEMATICAL ITALIC SMALL NU → LATIN SMALL LETTER V  # →ν→
+1D742 ;        0076 ;  SL      # ( 𝝂 → v ) MATHEMATICAL BOLD ITALIC SMALL NU → LATIN SMALL LETTER V     # →ν→
+1D77C ;        0076 ;  SL      # ( 𝝼 → v ) MATHEMATICAL SANS-SERIF BOLD SMALL NU → LATIN SMALL LETTER V # →ν→
+1D7B6 ;        0076 ;  SL      # ( 𝞶 → v ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU → LATIN SMALL LETTER V  # →ν→
+
+2175 ; 0076 0069 ;     SL      # ( ⅵ → vi ) SMALL ROMAN NUMERAL SIX → LATIN SMALL LETTER V, LATIN SMALL LETTER I # 
+
+2176 ; 0076 0069 0069 ;        SL      # ( ⅶ → vii ) SMALL ROMAN NUMERAL SEVEN → LATIN SMALL LETTER V, LATIN SMALL LETTER I, LATIN SMALL LETTER I        # 
+
+2177 ; 0076 0069 0069 0069 ;   SL      # ( ⅷ → viii ) SMALL ROMAN NUMERAL EIGHT → LATIN SMALL LETTER V, LATIN SMALL LETTER I, LATIN SMALL LETTER I, LATIN SMALL LETTER I # 
+
+026F ; 0076 0076 ;     SL      # ( ɯ → vv ) LATIN SMALL LETTER TURNED M → LATIN SMALL LETTER V, LATIN SMALL LETTER V      # →w→
+0077 ; 0076 0076 ;     SL      # ( w → vv ) LATIN SMALL LETTER W → LATIN SMALL LETTER V, LATIN SMALL LETTER V      # 
+1D430 ;        0076 0076 ;     SL      # ( 𝐰 → vv ) MATHEMATICAL BOLD SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V      # →w→
+1D464 ;        0076 0076 ;     SL      # ( 𝑤 → vv ) MATHEMATICAL ITALIC SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V    # →w→
+1D498 ;        0076 0076 ;     SL      # ( 𝒘 → vv ) MATHEMATICAL BOLD ITALIC SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V       # →w→
+1D4CC ;        0076 0076 ;     SL      # ( 𝓌 → vv ) MATHEMATICAL SCRIPT SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V    # →w→
+1D500 ;        0076 0076 ;     SL      # ( 𝔀 → vv ) MATHEMATICAL BOLD SCRIPT SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V       # →w→
+1D534 ;        0076 0076 ;     SL      # ( 𝔴 → vv ) MATHEMATICAL FRAKTUR SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V   # →w→
+1D568 ;        0076 0076 ;     SL      # ( 𝕨 → vv ) MATHEMATICAL DOUBLE-STRUCK SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V     # →w→
+1D59C ;        0076 0076 ;     SL      # ( 𝖜 → vv ) MATHEMATICAL BOLD FRAKTUR SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V      # →w→
+1D5D0 ;        0076 0076 ;     SL      # ( 𝗐 → vv ) MATHEMATICAL SANS-SERIF SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V        # →w→
+1D604 ;        0076 0076 ;     SL      # ( 𝘄 → vv ) MATHEMATICAL SANS-SERIF BOLD SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V   # →w→
+1D638 ;        0076 0076 ;     SL      # ( 𝘸 → vv ) MATHEMATICAL SANS-SERIF ITALIC SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V # →w→
+1D66C ;        0076 0076 ;     SL      # ( 𝙬 → vv ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V    # →w→
+1D6A0 ;        0076 0076 ;     SL      # ( 𝚠 → vv ) MATHEMATICAL MONOSPACE SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V # →w→
+1D21 ; 0076 0076 ;     SL      # ( ᴡ → vv ) LATIN LETTER SMALL CAPITAL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V    # →w→
+
+A761 ; 0076 0079 ;     SL      # ( ꝡ → vy ) LATIN SMALL LETTER VY → LATIN SMALL LETTER V, LATIN SMALL LETTER Y   # 
+
+00D7 ; 0078 ;  SL      #* ( × → x ) MULTIPLICATION SIGN → LATIN SMALL LETTER X    # 
+2573 ; 0078 ;  SL      #* ( ╳ → x ) BOX DRAWINGS LIGHT DIAGONAL CROSS → LATIN SMALL LETTER X     # 
+292B ; 0078 ;  SL      #* ( ⤫ → x ) RISING DIAGONAL CROSSING FALLING DIAGONAL → LATIN SMALL LETTER X     # 
+292C ; 0078 ;  SL      #* ( ⤬ → x ) FALLING DIAGONAL CROSSING RISING DIAGONAL → LATIN SMALL LETTER X     # 
+2A2F ; 0078 ;  SL      #* ( ⨯ → x ) VECTOR OR CROSS PRODUCT → LATIN SMALL LETTER X       # →×→
+FF58 ; 0078 ;  SL      # ( x → x ) FULLWIDTH LATIN SMALL LETTER X → LATIN SMALL LETTER X # →х→
+2179 ; 0078 ;  SL      # ( ⅹ → x ) SMALL ROMAN NUMERAL TEN → LATIN SMALL LETTER X        # 
+1D431 ;        0078 ;  SL      # ( 𝐱 → x ) MATHEMATICAL BOLD SMALL X → LATIN SMALL LETTER X     # 
+1D465 ;        0078 ;  SL      # ( 𝑥 → x ) MATHEMATICAL ITALIC SMALL X → LATIN SMALL LETTER X   # 
+1D499 ;        0078 ;  SL      # ( 𝒙 → x ) MATHEMATICAL BOLD ITALIC SMALL X → LATIN SMALL LETTER X      # 
+1D4CD ;        0078 ;  SL      # ( 𝓍 → x ) MATHEMATICAL SCRIPT SMALL X → LATIN SMALL LETTER X   # 
+1D501 ;        0078 ;  SL      # ( 𝔁 → x ) MATHEMATICAL BOLD SCRIPT SMALL X → LATIN SMALL LETTER X      # 
+1D535 ;        0078 ;  SL      # ( 𝔵 → x ) MATHEMATICAL FRAKTUR SMALL X → LATIN SMALL LETTER X  # 
+1D569 ;        0078 ;  SL      # ( 𝕩 → x ) MATHEMATICAL DOUBLE-STRUCK SMALL X → LATIN SMALL LETTER X    # 
+1D59D ;        0078 ;  SL      # ( 𝖝 → x ) MATHEMATICAL BOLD FRAKTUR SMALL X → LATIN SMALL LETTER X     # 
+1D5D1 ;        0078 ;  SL      # ( 𝗑 → x ) MATHEMATICAL SANS-SERIF SMALL X → LATIN SMALL LETTER X       # 
+1D605 ;        0078 ;  SL      # ( 𝘅 → x ) MATHEMATICAL SANS-SERIF BOLD SMALL X → LATIN SMALL LETTER X  # 
+1D639 ;        0078 ;  SL      # ( 𝘹 → x ) MATHEMATICAL SANS-SERIF ITALIC SMALL X → LATIN SMALL LETTER X        # 
+1D66D ;        0078 ;  SL      # ( 𝙭 → x ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X → LATIN SMALL LETTER X   # 
+1D6A1 ;        0078 ;  SL      # ( 𝚡 → x ) MATHEMATICAL MONOSPACE SMALL X → LATIN SMALL LETTER X        # 
+
+166D ; 1D417 ; SL      #* ( ᙭ → 𝐗 ) CANADIAN SYLLABICS CHI SIGN → MATHEMATICAL BOLD CAPITAL X # →X→
+
+2A30 ; 0078 0307 ;     SL      #* ( ⨰ → ẋ ) MULTIPLICATION SIGN WITH DOT ABOVE → LATIN SMALL LETTER X, COMBINING DOT ABOVE     # →×̇→
+
+217A ; 0078 0069 ;     SL      # ( ⅺ → xi ) SMALL ROMAN NUMERAL ELEVEN → LATIN SMALL LETTER X, LATIN SMALL LETTER I      # 
+
+217B ; 0078 0069 0069 ;        SL      # ( ⅻ → xii ) SMALL ROMAN NUMERAL TWELVE → LATIN SMALL LETTER X, LATIN SMALL LETTER I, LATIN SMALL LETTER I       # 
+
+1D8C ; 0079 ;  SL      # ( ᶌ → y ) LATIN SMALL LETTER V WITH PALATAL HOOK → LATIN SMALL LETTER Y # 
+FF59 ; 0079 ;  SL      # ( y → y ) FULLWIDTH LATIN SMALL LETTER Y → LATIN SMALL LETTER Y # →у→
+1D432 ;        0079 ;  SL      # ( 𝐲 → y ) MATHEMATICAL BOLD SMALL Y → LATIN SMALL LETTER Y     # 
+1D466 ;        0079 ;  SL      # ( 𝑦 → y ) MATHEMATICAL ITALIC SMALL Y → LATIN SMALL LETTER Y   # 
+1D49A ;        0079 ;  SL      # ( 𝒚 → y ) MATHEMATICAL BOLD ITALIC SMALL Y → LATIN SMALL LETTER Y      # 
+1D4CE ;        0079 ;  SL      # ( 𝓎 → y ) MATHEMATICAL SCRIPT SMALL Y → LATIN SMALL LETTER Y   # 
+1D502 ;        0079 ;  SL      # ( 𝔂 → y ) MATHEMATICAL BOLD SCRIPT SMALL Y → LATIN SMALL LETTER Y      # 
+1D536 ;        0079 ;  SL      # ( 𝔶 → y ) MATHEMATICAL FRAKTUR SMALL Y → LATIN SMALL LETTER Y  # 
+1D56A ;        0079 ;  SL      # ( 𝕪 → y ) MATHEMATICAL DOUBLE-STRUCK SMALL Y → LATIN SMALL LETTER Y    # 
+1D59E ;        0079 ;  SL      # ( 𝖞 → y ) MATHEMATICAL BOLD FRAKTUR SMALL Y → LATIN SMALL LETTER Y     # 
+1D5D2 ;        0079 ;  SL      # ( 𝗒 → y ) MATHEMATICAL SANS-SERIF SMALL Y → LATIN SMALL LETTER Y       # 
+1D606 ;        0079 ;  SL      # ( 𝘆 → y ) MATHEMATICAL SANS-SERIF BOLD SMALL Y → LATIN SMALL LETTER Y  # 
+1D63A ;        0079 ;  SL      # ( 𝘺 → y ) MATHEMATICAL SANS-SERIF ITALIC SMALL Y → LATIN SMALL LETTER Y        # 
+1D66E ;        0079 ;  SL      # ( 𝙮 → y ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y → LATIN SMALL LETTER Y   # 
+1D6A2 ;        0079 ;  SL      # ( 𝚢 → y ) MATHEMATICAL MONOSPACE SMALL Y → LATIN SMALL LETTER Y        # 
+028F ; 0079 ;  SL      # ( ʏ → y ) LATIN LETTER SMALL CAPITAL Y → LATIN SMALL LETTER Y    # →ү→→у→
+1EFF ; 0079 ;  SL      # ( ỿ → y ) LATIN SMALL LETTER Y WITH LOOP → LATIN SMALL LETTER Y # 
+213D ; 0079 ;  SL      # ( ℽ → y ) DOUBLE-STRUCK SMALL GAMMA → LATIN SMALL LETTER Y      # →γ→
+1D6C4 ;        0079 ;  SL      # ( 𝛄 → y ) MATHEMATICAL BOLD SMALL GAMMA → LATIN SMALL LETTER Y # →γ→
+1D6FE ;        0079 ;  SL      # ( 𝛾 → y ) MATHEMATICAL ITALIC SMALL GAMMA → LATIN SMALL LETTER Y       # →γ→
+1D738 ;        0079 ;  SL      # ( 𝜸 → y ) MATHEMATICAL BOLD ITALIC SMALL GAMMA → LATIN SMALL LETTER Y  # →γ→
+1D772 ;        0079 ;  SL      # ( 𝝲 → y ) MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA → LATIN SMALL LETTER Y      # →γ→
+1D7AC ;        0079 ;  SL      # ( 𝞬 → y ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA → LATIN SMALL LETTER Y       # →γ→
+
+01B4 ; 0079 0314 ;     SL      # ( ƴ → y̔ ) LATIN SMALL LETTER Y WITH HOOK → LATIN SMALL LETTER Y, COMBINING REVERSED COMMA ABOVE        # 
+
+1D433 ;        007A ;  SL      # ( 𝐳 → z ) MATHEMATICAL BOLD SMALL Z → LATIN SMALL LETTER Z     # 
+1D467 ;        007A ;  SL      # ( 𝑧 → z ) MATHEMATICAL ITALIC SMALL Z → LATIN SMALL LETTER Z   # 
+1D49B ;        007A ;  SL      # ( 𝒛 → z ) MATHEMATICAL BOLD ITALIC SMALL Z → LATIN SMALL LETTER Z      # 
+1D4CF ;        007A ;  SL      # ( 𝓏 → z ) MATHEMATICAL SCRIPT SMALL Z → LATIN SMALL LETTER Z   # 
+1D503 ;        007A ;  SL      # ( 𝔃 → z ) MATHEMATICAL BOLD SCRIPT SMALL Z → LATIN SMALL LETTER Z      # 
+1D537 ;        007A ;  SL      # ( 𝔷 → z ) MATHEMATICAL FRAKTUR SMALL Z → LATIN SMALL LETTER Z  # 
+1D56B ;        007A ;  SL      # ( 𝕫 → z ) MATHEMATICAL DOUBLE-STRUCK SMALL Z → LATIN SMALL LETTER Z    # 
+1D59F ;        007A ;  SL      # ( 𝖟 → z ) MATHEMATICAL BOLD FRAKTUR SMALL Z → LATIN SMALL LETTER Z     # 
+1D5D3 ;        007A ;  SL      # ( 𝗓 → z ) MATHEMATICAL SANS-SERIF SMALL Z → LATIN SMALL LETTER Z       # 
+1D607 ;        007A ;  SL      # ( 𝘇 → z ) MATHEMATICAL SANS-SERIF BOLD SMALL Z → LATIN SMALL LETTER Z  # 
+1D63B ;        007A ;  SL      # ( 𝘻 → z ) MATHEMATICAL SANS-SERIF ITALIC SMALL Z → LATIN SMALL LETTER Z        # 
+1D66F ;        007A ;  SL      # ( 𝙯 → z ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z → LATIN SMALL LETTER Z   # 
+1D6A3 ;        007A ;  SL      # ( 𝚣 → z ) MATHEMATICAL MONOSPACE SMALL Z → LATIN SMALL LETTER Z        # 
+1D22 ; 007A ;  SL      # ( ᴢ → z ) LATIN LETTER SMALL CAPITAL Z → LATIN SMALL LETTER Z   # 
+
+0290 ; 007A 0328 ;     SL      # ( ʐ → z̨ ) LATIN SMALL LETTER Z WITH RETROFLEX HOOK → LATIN SMALL LETTER Z, COMBINING OGONEK    # →z̢→
+
+0225 ; 007A 0326 ;     SL      # ( ȥ → z̦ ) LATIN SMALL LETTER Z WITH HOOK → LATIN SMALL LETTER Z, COMBINING COMMA BELOW # →z̡→
+
+01B6 ; 007A 0335 ;     SL      # ( ƶ → z̵ ) LATIN SMALL LETTER Z WITH STROKE → LATIN SMALL LETTER Z, COMBINING SHORT STROKE OVERLAY      # 
+
+0292 ; 021D ;  SL      # ( ʒ → ȝ ) LATIN SMALL LETTER EZH → LATIN SMALL LETTER YOGH      # 
+A76B ; 021D ;  SL      # ( ꝫ → ȝ ) LATIN SMALL LETTER ET → LATIN SMALL LETTER YOGH      # 
+
+01BF ; 00FE ;  SL      # ( ƿ → þ ) LATIN LETTER WYNN → LATIN SMALL LETTER THORN  # 
+
+1D24 ; 01A8 ;  SL      # ( ᴤ → ƨ ) LATIN LETTER VOICED LARYNGEAL SPIRANT → LATIN SMALL LETTER TONE TWO  # 
+
+02C1 ; 02E4 ;  SL      # ( ˁ → ˤ ) MODIFIER LETTER REVERSED GLOTTAL STOP → MODIFIER LETTER SMALL REVERSED GLOTTAL STOP   # 
+
+1D6C3 ;        03B2 ;  SL      # ( 𝛃 → β ) MATHEMATICAL BOLD SMALL BETA → GREEK SMALL LETTER BETA      # 
+1D6FD ;        03B2 ;  SL      # ( 𝛽 → β ) MATHEMATICAL ITALIC SMALL BETA → GREEK SMALL LETTER BETA    # 
+1D737 ;        03B2 ;  SL      # ( 𝜷 → β ) MATHEMATICAL BOLD ITALIC SMALL BETA → GREEK SMALL LETTER BETA       # 
+1D771 ;        03B2 ;  SL      # ( 𝝱 → β ) MATHEMATICAL SANS-SERIF BOLD SMALL BETA → GREEK SMALL LETTER BETA   # 
+1D7AB ;        03B2 ;  SL      # ( 𝞫 → β ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA → GREEK SMALL LETTER BETA    # 
+
+1D7CB ;        03DD ;  SL      # ( 𝟋 → ϝ ) MATHEMATICAL BOLD SMALL DIGAMMA → GREEK SMALL LETTER DIGAMMA        # 
+
+1D6C7 ;        03B6 ;  SL      # ( 𝛇 → ζ ) MATHEMATICAL BOLD SMALL ZETA → GREEK SMALL LETTER ZETA      # 
+1D701 ;        03B6 ;  SL      # ( 𝜁 → ζ ) MATHEMATICAL ITALIC SMALL ZETA → GREEK SMALL LETTER ZETA    # 
+1D73B ;        03B6 ;  SL      # ( 𝜻 → ζ ) MATHEMATICAL BOLD ITALIC SMALL ZETA → GREEK SMALL LETTER ZETA       # 
+1D775 ;        03B6 ;  SL      # ( 𝝵 → ζ ) MATHEMATICAL SANS-SERIF BOLD SMALL ZETA → GREEK SMALL LETTER ZETA   # 
+1D7AF ;        03B6 ;  SL      # ( 𝞯 → ζ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA → GREEK SMALL LETTER ZETA    # 
+
+2296 ; 03B8 ;  SL      #* ( ⊖ → θ ) CIRCLED MINUS → GREEK SMALL LETTER THETA    # 
+229D ; 03B8 ;  SL      #* ( ⊝ → θ ) CIRCLED DASH → GREEK SMALL LETTER THETA     # →⊖→
+236C ; 03B8 ;  SL      #* ( ⍬ → θ ) APL FUNCTIONAL SYMBOL ZILDE → GREEK SMALL LETTER THETA      # 
+1D6C9 ;        03B8 ;  SL      # ( 𝛉 → θ ) MATHEMATICAL BOLD SMALL THETA → GREEK SMALL LETTER THETA    # 
+1D6DD ;        03B8 ;  SL      # ( 𝛝 → θ ) MATHEMATICAL BOLD THETA SYMBOL → GREEK SMALL LETTER THETA   # 
+1D703 ;        03B8 ;  SL      # ( 𝜃 → θ ) MATHEMATICAL ITALIC SMALL THETA → GREEK SMALL LETTER THETA  # 
+1D717 ;        03B8 ;  SL      # ( 𝜗 → θ ) MATHEMATICAL ITALIC THETA SYMBOL → GREEK SMALL LETTER THETA # 
+1D73D ;        03B8 ;  SL      # ( 𝜽 → θ ) MATHEMATICAL BOLD ITALIC SMALL THETA → GREEK SMALL LETTER THETA     # 
+1D751 ;        03B8 ;  SL      # ( 𝝑 → θ ) MATHEMATICAL BOLD ITALIC THETA SYMBOL → GREEK SMALL LETTER THETA    # 
+1D777 ;        03B8 ;  SL      # ( 𝝷 → θ ) MATHEMATICAL SANS-SERIF BOLD SMALL THETA → GREEK SMALL LETTER THETA # 
+1D78B ;        03B8 ;  SL      # ( 𝞋 → θ ) MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL → GREEK SMALL LETTER THETA        # 
+1D7B1 ;        03B8 ;  SL      # ( 𝞱 → θ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA → GREEK SMALL LETTER THETA  # 
+1D7C5 ;        03B8 ;  SL      # ( 𝟅 → θ ) MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL → GREEK SMALL LETTER THETA # 
+1D6AF ;        03B8 ;  SL      # ( 𝚯 → θ ) MATHEMATICAL BOLD CAPITAL THETA → GREEK SMALL LETTER THETA  # →Θ→→⊖→
+1D6B9 ;        03B8 ;  SL      # ( 𝚹 → θ ) MATHEMATICAL BOLD CAPITAL THETA SYMBOL → GREEK SMALL LETTER THETA   # →Θ→→⊖→
+1D6E9 ;        03B8 ;  SL      # ( 𝛩 → θ ) MATHEMATICAL ITALIC CAPITAL THETA → GREEK SMALL LETTER THETA        # →Θ→→⊖→
+1D6F3 ;        03B8 ;  SL      # ( 𝛳 → θ ) MATHEMATICAL ITALIC CAPITAL THETA SYMBOL → GREEK SMALL LETTER THETA # →Θ→→⊖→
+1D723 ;        03B8 ;  SL      # ( 𝜣 → θ ) MATHEMATICAL BOLD ITALIC CAPITAL THETA → GREEK SMALL LETTER THETA   # →Θ→→⊖→
+1D72D ;        03B8 ;  SL      # ( 𝜭 → θ ) MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL → GREEK SMALL LETTER THETA    # →Θ→→⊖→
+1D75D ;        03B8 ;  SL      # ( 𝝝 → θ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA → GREEK SMALL LETTER THETA       # →Θ→→⊖→
+1D767 ;        03B8 ;  SL      # ( 𝝧 → θ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL → GREEK SMALL LETTER THETA        # →Θ→→⊖→
+1D797 ;        03B8 ;  SL      # ( 𝞗 → θ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA → GREEK SMALL LETTER THETA        # →Θ→→⊖→
+1D7A1 ;        03B8 ;  SL      # ( 𝞡 → θ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL → GREEK SMALL LETTER THETA # →Θ→→⊖→
+
+037A ; 03B9 ;  SL      #* ( ͺ → ι ) GREEK YPOGEGRAMMENI → GREEK SMALL LETTER IOTA        # →ι→
+
+1D6CC ;        03BB ;  SL      # ( 𝛌 → λ ) MATHEMATICAL BOLD SMALL LAMDA → GREEK SMALL LETTER LAMDA    # 
+1D706 ;        03BB ;  SL      # ( 𝜆 → λ ) MATHEMATICAL ITALIC SMALL LAMDA → GREEK SMALL LETTER LAMDA  # 
+1D740 ;        03BB ;  SL      # ( 𝝀 → λ ) MATHEMATICAL BOLD ITALIC SMALL LAMDA → GREEK SMALL LETTER LAMDA     # 
+1D77A ;        03BB ;  SL      # ( 𝝺 → λ ) MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA → GREEK SMALL LETTER LAMDA # 
+1D7B4 ;        03BB ;  SL      # ( 𝞴 → λ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA → GREEK SMALL LETTER LAMDA  # 
+
+1D6CD ;        03BC ;  SL      # ( 𝛍 → μ ) MATHEMATICAL BOLD SMALL MU → GREEK SMALL LETTER MU  # 
+1D707 ;        03BC ;  SL      # ( 𝜇 → μ ) MATHEMATICAL ITALIC SMALL MU → GREEK SMALL LETTER MU        # 
+1D741 ;        03BC ;  SL      # ( 𝝁 → μ ) MATHEMATICAL BOLD ITALIC SMALL MU → GREEK SMALL LETTER MU   # 
+1D77B ;        03BC ;  SL      # ( 𝝻 → μ ) MATHEMATICAL SANS-SERIF BOLD SMALL MU → GREEK SMALL LETTER MU       # 
+1D7B5 ;        03BC ;  SL      # ( 𝞵 → μ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU → GREEK SMALL LETTER MU        # 
+
+1D6CF ;        03BE ;  SL      # ( 𝛏 → ξ ) MATHEMATICAL BOLD SMALL XI → GREEK SMALL LETTER XI  # 
+1D709 ;        03BE ;  SL      # ( 𝜉 → ξ ) MATHEMATICAL ITALIC SMALL XI → GREEK SMALL LETTER XI        # 
+1D743 ;        03BE ;  SL      # ( 𝝃 → ξ ) MATHEMATICAL BOLD ITALIC SMALL XI → GREEK SMALL LETTER XI   # 
+1D77D ;        03BE ;  SL      # ( 𝝽 → ξ ) MATHEMATICAL SANS-SERIF BOLD SMALL XI → GREEK SMALL LETTER XI       # 
+1D7B7 ;        03BE ;  SL      # ( 𝞷 → ξ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI → GREEK SMALL LETTER XI        # 
+
+1D6EF ;        1D6B5 ; SL      # ( 𝛯 → 𝚵 ) MATHEMATICAL ITALIC CAPITAL XI → MATHEMATICAL BOLD CAPITAL XI     # →Ξ→
+1D729 ;        1D6B5 ; SL      # ( 𝜩 → 𝚵 ) MATHEMATICAL BOLD ITALIC CAPITAL XI → MATHEMATICAL BOLD CAPITAL XI        # →Ξ→
+1D763 ;        1D6B5 ; SL      # ( 𝝣 → 𝚵 ) MATHEMATICAL SANS-SERIF BOLD CAPITAL XI → MATHEMATICAL BOLD CAPITAL XI    # →Ξ→
+1D79D ;        1D6B5 ; SL      # ( 𝞝 → 𝚵 ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI → MATHEMATICAL BOLD CAPITAL XI     # →Ξ→
+
+03C3 ; 03BF ;  SL      # ( σ → ο ) GREEK SMALL LETTER SIGMA → GREEK SMALL LETTER OMICRON # →o→
+
+1D28 ; 03C0 ;  SL      # ( ᴨ → π ) GREEK LETTER SMALL CAPITAL PI → GREEK SMALL LETTER PI        # →п→
+
+220F ; 213F ;  SL      #* ( ∏ → ℿ ) N-ARY PRODUCT → DOUBLE-STRUCK CAPITAL PI   # →Π→
+1D6B7 ;        213F ;  SL      # ( 𝚷 → ℿ ) MATHEMATICAL BOLD CAPITAL PI → DOUBLE-STRUCK CAPITAL PI    # →Π→
+1D6F1 ;        213F ;  SL      # ( 𝛱 → ℿ ) MATHEMATICAL ITALIC CAPITAL PI → DOUBLE-STRUCK CAPITAL PI  # →Π→
+1D72B ;        213F ;  SL      # ( 𝜫 → ℿ ) MATHEMATICAL BOLD ITALIC CAPITAL PI → DOUBLE-STRUCK CAPITAL PI     # →Π→
+1D765 ;        213F ;  SL      # ( 𝝥 → ℿ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL PI → DOUBLE-STRUCK CAPITAL PI # →Π→
+1D79F ;        213F ;  SL      # ( 𝞟 → ℿ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI → DOUBLE-STRUCK CAPITAL PI  # →Π→
+
+1D70D ;        1D6D3 ; SL      # ( 𝜍 → 𝛓 ) MATHEMATICAL ITALIC SMALL FINAL SIGMA → MATHEMATICAL BOLD SMALL FINAL SIGMA       # →ς→
+1D747 ;        1D6D3 ; SL      # ( 𝝇 → 𝛓 ) MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA → MATHEMATICAL BOLD SMALL FINAL SIGMA  # →ς→
+1D781 ;        1D6D3 ; SL      # ( 𝞁 → 𝛓 ) MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA → MATHEMATICAL BOLD SMALL FINAL SIGMA      # →ς→
+1D7BB ;        1D6D3 ; SL      # ( 𝞻 → 𝛓 ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA → MATHEMATICAL BOLD SMALL FINAL SIGMA       # →ς→
+
+1D6F7 ;        1D6BD ; SL      # ( 𝛷 → 𝚽 ) MATHEMATICAL ITALIC CAPITAL PHI → MATHEMATICAL BOLD CAPITAL PHI   # →Φ→
+1D731 ;        1D6BD ; SL      # ( 𝜱 → 𝚽 ) MATHEMATICAL BOLD ITALIC CAPITAL PHI → MATHEMATICAL BOLD CAPITAL PHI      # →Φ→
+1D76B ;        1D6BD ; SL      # ( 𝝫 → 𝚽 ) MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI → MATHEMATICAL BOLD CAPITAL PHI  # →Φ→
+1D7A5 ;        1D6BD ; SL      # ( 𝞥 → 𝚽 ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI → MATHEMATICAL BOLD CAPITAL PHI   # →Φ→
+
+1D6D8 ;        03C7 ;  SL      # ( 𝛘 → χ ) MATHEMATICAL BOLD SMALL CHI → GREEK SMALL LETTER CHI        # 
+1D712 ;        03C7 ;  SL      # ( 𝜒 → χ ) MATHEMATICAL ITALIC SMALL CHI → GREEK SMALL LETTER CHI      # 
+1D74C ;        03C7 ;  SL      # ( 𝝌 → χ ) MATHEMATICAL BOLD ITALIC SMALL CHI → GREEK SMALL LETTER CHI # 
+1D786 ;        03C7 ;  SL      # ( 𝞆 → χ ) MATHEMATICAL SANS-SERIF BOLD SMALL CHI → GREEK SMALL LETTER CHI     # 
+1D7C0 ;        03C7 ;  SL      # ( 𝟀 → χ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI → GREEK SMALL LETTER CHI      # 
+
+1D6D9 ;        03C8 ;  SL      # ( 𝛙 → ψ ) MATHEMATICAL BOLD SMALL PSI → GREEK SMALL LETTER PSI        # 
+1D713 ;        03C8 ;  SL      # ( 𝜓 → ψ ) MATHEMATICAL ITALIC SMALL PSI → GREEK SMALL LETTER PSI      # 
+1D74D ;        03C8 ;  SL      # ( 𝝍 → ψ ) MATHEMATICAL BOLD ITALIC SMALL PSI → GREEK SMALL LETTER PSI # 
+1D787 ;        03C8 ;  SL      # ( 𝞇 → ψ ) MATHEMATICAL SANS-SERIF BOLD SMALL PSI → GREEK SMALL LETTER PSI     # 
+1D7C1 ;        03C8 ;  SL      # ( 𝟁 → ψ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI → GREEK SMALL LETTER PSI      # 
+
+1D6F9 ;        1D6BF ; SL      # ( 𝛹 → 𝚿 ) MATHEMATICAL ITALIC CAPITAL PSI → MATHEMATICAL BOLD CAPITAL PSI   # →Ψ→
+1D733 ;        1D6BF ; SL      # ( 𝜳 → 𝚿 ) MATHEMATICAL BOLD ITALIC CAPITAL PSI → MATHEMATICAL BOLD CAPITAL PSI      # →Ψ→
+1D76D ;        1D6BF ; SL      # ( 𝝭 → 𝚿 ) MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI → MATHEMATICAL BOLD CAPITAL PSI  # →Ψ→
+1D7A7 ;        1D6BF ; SL      # ( 𝞧 → 𝚿 ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI → MATHEMATICAL BOLD CAPITAL PSI   # →Ψ→
+
+2375 ; 03C9 ;  SL      #* ( ⍵ → ω ) APL FUNCTIONAL SYMBOL OMEGA → GREEK SMALL LETTER OMEGA      # 
+1D6DA ;        03C9 ;  SL      # ( 𝛚 → ω ) MATHEMATICAL BOLD SMALL OMEGA → GREEK SMALL LETTER OMEGA    # 
+1D714 ;        03C9 ;  SL      # ( 𝜔 → ω ) MATHEMATICAL ITALIC SMALL OMEGA → GREEK SMALL LETTER OMEGA  # 
+1D74E ;        03C9 ;  SL      # ( 𝝎 → ω ) MATHEMATICAL BOLD ITALIC SMALL OMEGA → GREEK SMALL LETTER OMEGA     # 
+1D788 ;        03C9 ;  SL      # ( 𝞈 → ω ) MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA → GREEK SMALL LETTER OMEGA # 
+1D7C2 ;        03C9 ;  SL      # ( 𝟂 → ω ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA → GREEK SMALL LETTER OMEGA  # 
+
+04D5 ; 0430 0435 ;     SL      # ( ӕ → ае ) CYRILLIC SMALL LIGATURE A IE → CYRILLIC SMALL LETTER A, CYRILLIC SMALL LETTER IE    # 
+
+0493 ; 0433 0335 ;     SL      # ( ғ → г̵ ) CYRILLIC SMALL LETTER GHE WITH STROKE → CYRILLIC SMALL LETTER GHE, COMBINING SHORT STROKE OVERLAY   # 
+
+0491 ; 0433 02C8 ;     SL      # ( ґ → гˈ ) CYRILLIC SMALL LETTER GHE WITH UPTURN → CYRILLIC SMALL LETTER GHE, MODIFIER LETTER VERTICAL LINE    # 
+
+0511 ; 0454 ;  SL      # ( ԑ → є ) CYRILLIC SMALL LETTER REVERSED ZE → CYRILLIC SMALL LETTER UKRAINIAN IE        # →ε→
+
+0497 ; 0436 0329 ;     SL      # ( җ → ж̩ ) CYRILLIC SMALL LETTER ZHE WITH DESCENDER → CYRILLIC SMALL LETTER ZHE, COMBINING VERTICAL LINE BELOW # 
+
+0499 ; 0437 0321 ;     SL      # ( ҙ → з̡ ) CYRILLIC SMALL LETTER ZE WITH DESCENDER → CYRILLIC SMALL LETTER ZE, COMBINING PALATALIZED HOOK BELOW        # 
+
+04CF ; 0456 ;  SL      # ( ӏ → і ) CYRILLIC SMALL LETTER PALOCHKA → CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I       # →ı→→ι→
+
+045D ; 0439 ;  SL      # ( ѝ → й ) CYRILLIC SMALL LETTER I WITH GRAVE → CYRILLIC SMALL LETTER SHORT I    # 
+
+048B ; 0439 0326 ;     SL      # ( ҋ → й̦ ) CYRILLIC SMALL LETTER SHORT I WITH TAIL → CYRILLIC SMALL LETTER SHORT I, COMBINING COMMA BELOW      # →й̡→
+
+049B ; 043A 0329 ;     SL      # ( қ → к̩ ) CYRILLIC SMALL LETTER KA WITH DESCENDER → CYRILLIC SMALL LETTER KA, COMBINING VERTICAL LINE BELOW   # 
+
+049F ; 043A 0335 ;     SL      # ( ҟ → к̵ ) CYRILLIC SMALL LETTER KA WITH STROKE → CYRILLIC SMALL LETTER KA, COMBINING SHORT STROKE OVERLAY     # 
+
+1D2B ; 043B ;  SL      # ( ᴫ → л ) CYRILLIC LETTER SMALL CAPITAL EL → CYRILLIC SMALL LETTER EL  # 
+
+04C6 ; 043B 0326 ;     SL      # ( ӆ → л̦ ) CYRILLIC SMALL LETTER EL WITH TAIL → CYRILLIC SMALL LETTER EL, COMBINING COMMA BELOW        # →л̡→
+
+04CE ; 043C 0321 ;     SL      # ( ӎ → м̡ ) CYRILLIC SMALL LETTER EM WITH TAIL → CYRILLIC SMALL LETTER EM, COMBINING PALATALIZED HOOK BELOW     # 
+
+04A3 ; 043D 0329 ;     SL      # ( ң → н̩ ) CYRILLIC SMALL LETTER EN WITH DESCENDER → CYRILLIC SMALL LETTER EN, COMBINING VERTICAL LINE BELOW   # 
+
+04CA ; 043D 0321 ;     SL      # ( ӊ → н̡ ) CYRILLIC SMALL LETTER EN WITH TAIL → CYRILLIC SMALL LETTER EN, COMBINING PALATALIZED HOOK BELOW     # 
+04C8 ; 043D 0321 ;     SL      # ( ӈ → н̡ ) CYRILLIC SMALL LETTER EN WITH HOOK → CYRILLIC SMALL LETTER EN, COMBINING PALATALIZED HOOK BELOW     # 
+
+04E9 ; 043E 0335 ;     SL      # ( ө → о̵ ) CYRILLIC SMALL LETTER BARRED O → CYRILLIC SMALL LETTER O, COMBINING SHORT STROKE OVERLAY    # 
+0473 ; 043E 0335 ;     SL      # ( ѳ → о̵ ) CYRILLIC SMALL LETTER FITA → CYRILLIC SMALL LETTER O, COMBINING SHORT STROKE OVERLAY        # 
+
+04AB ; 0441 0321 ;     SL      # ( ҫ → с̡ ) CYRILLIC SMALL LETTER ES WITH DESCENDER → CYRILLIC SMALL LETTER ES, COMBINING PALATALIZED HOOK BELOW        # 
+
+04AD ; 0442 0329 ;     SL      # ( ҭ → т̩ ) CYRILLIC SMALL LETTER TE WITH DESCENDER → CYRILLIC SMALL LETTER TE, COMBINING VERTICAL LINE BELOW   # 
+
+04AF ; 0443 ;  SL      # ( ү → у ) CYRILLIC SMALL LETTER STRAIGHT U → CYRILLIC SMALL LETTER U    # 
+
+04B1 ; 04AF 0335 ;     SL      # ( ұ → ү̵ ) CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE → CYRILLIC SMALL LETTER STRAIGHT U, COMBINING SHORT STROKE OVERLAY     # 
+
+045B ; 04BB 0335 ;     SL      # ( ћ → һ̵ ) CYRILLIC SMALL LETTER TSHE → CYRILLIC SMALL LETTER SHHA, COMBINING SHORT STROKE OVERLAY     # 
+
+047D ; 0461 0483 ;     SL      # ( ѽ → ѡ҃ ) CYRILLIC SMALL LETTER OMEGA WITH TITLO → CYRILLIC SMALL LETTER OMEGA, COMBINING CYRILLIC TITLO      # 
+
+04CC ; 04B7 ;  SL      # ( ӌ → ҷ ) CYRILLIC SMALL LETTER KHAKASSIAN CHE → CYRILLIC SMALL LETTER CHE WITH DESCENDER       # 
+
+04BF ; 04BD 0328 ;     SL      # ( ҿ → ҽ̨ ) CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER → CYRILLIC SMALL LETTER ABKHASIAN CHE, COMBINING OGONEK  # →ҽ̢→
+
+0463 ; 048D ;  SL      # ( ѣ → ҍ ) CYRILLIC SMALL LETTER YAT → CYRILLIC SMALL LETTER SEMISOFT SIGN       # 
+
+0461 ; 051D ;  SL      # ( ѡ → ԝ ) CYRILLIC SMALL LETTER OMEGA → CYRILLIC SMALL LETTER WE        # →w→
+
+0566 ; 0563 ;  SL      # ( զ → գ ) ARMENIAN SMALL LETTER ZA → ARMENIAN SMALL LETTER GIM  # 
+
+057C ; 0578 ;  SL      # ( ռ → ո ) ARMENIAN SMALL LETTER RA → ARMENIAN SMALL LETTER VO   # →n→
+
+02D3 ; 0559 ;  SL      #* ( ˓ → ՙ ) MODIFIER LETTER CENTRED LEFT HALF RING → ARMENIAN MODIFIER LETTER LEFT HALF RING     # 
+02BF ; 0559 ;  SL      # ( ʿ → ՙ ) MODIFIER LETTER LEFT HALF RING → ARMENIAN MODIFIER LETTER LEFT HALF RING      # 
+
+2135 ; 05D0 ;  SL      # ( ℵ → ‎א‎ ) ALEF SYMBOL → HEBREW LETTER ALEF       # 
+FB21 ; 05D0 ;  SL      # ( ‎ﬡ‎ → ‎א‎ ) HEBREW LETTER WIDE ALEF → HEBREW LETTER ALEF     # 
+
+FB2F ; FB2E ;  SL      # ( ‎אָ‎ → ‎אַ‎ ) HEBREW LETTER ALEF WITH QAMATS → HEBREW LETTER ALEF WITH PATAH  # 
+FB30 ; FB2E ;  SL      # ( ‎אּ‎ → ‎אַ‎ ) HEBREW LETTER ALEF WITH MAPIQ → HEBREW LETTER ALEF WITH PATAH   # 
+
+FB4F ; 05D0 05DC ;     SL      # ( ‎ﭏ‎ → ‎אל‎ ) HEBREW LIGATURE ALEF LAMED → HEBREW LETTER ALEF, HEBREW LETTER LAMED   # 
+
+2136 ; 05D1 ;  SL      # ( ℶ → ‎ב‎ ) BET SYMBOL → HEBREW LETTER BET # 
+
+2137 ; 05D2 ;  SL      # ( ℷ → ‎ג‎ ) GIMEL SYMBOL → HEBREW LETTER GIMEL     # 
+
+2138 ; 05D3 ;  SL      # ( ℸ → ‎ד‎ ) DALET SYMBOL → HEBREW LETTER DALET     # 
+FB22 ; 05D3 ;  SL      # ( ‎ﬢ‎ → ‎ד‎ ) HEBREW LETTER WIDE DALET → HEBREW LETTER DALET   # 
+
+FB23 ; 05D4 ;  SL      # ( ‎ﬣ‎ → ‎ה‎ ) HEBREW LETTER WIDE HE → HEBREW LETTER HE # 
+
+05F1 ; 05D5 05D9 ;     SL      # ( ‎ױ‎ → ‎וי‎ ) HEBREW LIGATURE YIDDISH VAV YOD → HEBREW LETTER VAV, HEBREW LETTER YOD  # 
+
+FB39 ; FB1D ;  SL      # ( ‎יּ‎ → ‎יִ‎ ) HEBREW LETTER YOD WITH DAGESH → HEBREW LETTER YOD WITH HIRIQ    # 
+
+FB24 ; 05DB ;  SL      # ( ‎ﬤ‎ → ‎כ‎ ) HEBREW LETTER WIDE KAF → HEBREW LETTER KAF       # 
+
+FB25 ; 05DC ;  SL      # ( ‎ﬥ‎ → ‎ל‎ ) HEBREW LETTER WIDE LAMED → HEBREW LETTER LAMED   # 
+
+FB26 ; 05DD ;  SL      # ( ‎ﬦ‎ → ‎ם‎ ) HEBREW LETTER WIDE FINAL MEM → HEBREW LETTER FINAL MEM   # 
+
+FB20 ; 05E2 ;  SL      # ( ‎ﬠ‎ → ‎ע‎ ) HEBREW LETTER ALTERNATIVE AYIN → HEBREW LETTER AYIN      # 
+
+FB27 ; 05E8 ;  SL      # ( ‎ﬧ‎ → ‎ר‎ ) HEBREW LETTER WIDE RESH → HEBREW LETTER RESH     # 
+
+FB2B ; FB2A ;  SL      # ( ‎שׂ‎ → ‎שׁ‎ ) HEBREW LETTER SHIN WITH SIN DOT → HEBREW LETTER SHIN WITH SHIN DOT      # 
+FB49 ; FB2A ;  SL      # ( ‎שּ‎ → ‎שׁ‎ ) HEBREW LETTER SHIN WITH DAGESH → HEBREW LETTER SHIN WITH SHIN DOT       # 
+
+FB2D ; FB2C ;  SL      # ( ‎שּׂ‎ → ‎שּׁ‎ ) HEBREW LETTER SHIN WITH DAGESH AND SIN DOT → HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT        # 
+
+FB28 ; 05EA ;  SL      # ( ‎ﬨ‎ → ‎ת‎ ) HEBREW LETTER WIDE TAV → HEBREW LETTER TAV       # 
+
+FE80 ; 0621 ;  SL      # ( ‎ﺀ‎ → ‎ء‎ ) ARABIC LETTER HAMZA ISOLATED FORM → ARABIC LETTER HAMZA  # 
+
+FE82 ; 0622 ;  SL      # ( ‎ﺂ‎ → ‎آ‎ ) ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM → ARABIC LETTER ALEF WITH MADDA ABOVE     # 
+FE81 ; 0622 ;  SL      # ( ‎ﺁ‎ → ‎آ‎ ) ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM → ARABIC LETTER ALEF WITH MADDA ABOVE  # 
+
+FB51 ; 0671 ;  SL      # ( ‎ﭑ‎ → ‎ٱ‎ ) ARABIC LETTER ALEF WASLA FINAL FORM → ARABIC LETTER ALEF WASLA   # 
+FB50 ; 0671 ;  SL      # ( ‎ﭐ‎ → ‎ٱ‎ ) ARABIC LETTER ALEF WASLA ISOLATED FORM → ARABIC LETTER ALEF WASLA        # 
+
+FE88 ; 0625 ;  SL      # ( ‎ﺈ‎ → ‎إ‎ ) ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM → ARABIC LETTER ALEF WITH HAMZA BELOW     # 
+FE87 ; 0625 ;  SL      # ( ‎ﺇ‎ → ‎إ‎ ) ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM → ARABIC LETTER ALEF WITH HAMZA BELOW  # 
+
+FE8E ; 0627 ;  SL      # ( ‎ﺎ‎ → ‎ا‎ ) ARABIC LETTER ALEF FINAL FORM → ARABIC LETTER ALEF       # 
+FE8D ; 0627 ;  SL      # ( ‎ﺍ‎ → ‎ا‎ ) ARABIC LETTER ALEF ISOLATED FORM → ARABIC LETTER ALEF    # 
+
+FD3C ; 0627 064B ;     SL      # ( ‎ﴼ‎ → ‎اً‎ ) ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM → ARABIC LETTER ALEF, ARABIC FATHATAN    # 
+FD3D ; 0627 064B ;     SL      # ( ‎ﴽ‎ → ‎اً‎ ) ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM → ARABIC LETTER ALEF, ARABIC FATHATAN # 
+
+0623 ; 0627 0674 ;     SL      # ( ‎أ‎ → ‎اٴ‎ ) ARABIC LETTER ALEF WITH HAMZA ABOVE → ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA      # →‎ٵ‎→
+FE84 ; 0627 0674 ;     SL      # ( ‎ﺄ‎ → ‎اٴ‎ ) ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM → ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA  # →‎أ‎→→‎ٵ‎→
+FE83 ; 0627 0674 ;     SL      # ( ‎ﺃ‎ → ‎اٴ‎ ) ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA       # →‎ٵ‎→
+0675 ; 0627 0674 ;     SL      # ( ‎ٵ‎ → ‎اٴ‎ ) ARABIC LETTER HIGH HAMZA ALEF → ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA    # 
+
+FDF3 ; 0627 0643 0628 0631 ;   SL      # ( ‎ﷳ‎ → ‎اكبر‎ ) ARABIC LIGATURE AKBAR ISOLATED FORM → ARABIC LETTER ALEF, ARABIC LETTER KAF, ARABIC LETTER BEH, ARABIC LETTER REH  # 
+
+FDF2 ; 0627 0644 0644 0647 ;   SL      # ( ‎ﷲ‎ → ‎الله‎ ) ARABIC LIGATURE ALLAH ISOLATED FORM → ARABIC LETTER ALEF, ARABIC LETTER LAM, ARABIC LETTER LAM, ARABIC LETTER HEH  # 
+
+FE91 ; 0628 ;  SL      # ( ‎ﺑ‎ → ‎ب‎ ) ARABIC LETTER BEH INITIAL FORM → ARABIC LETTER BEH       # 
+FE92 ; 0628 ;  SL      # ( ‎ﺒ‎ → ‎ب‎ ) ARABIC LETTER BEH MEDIAL FORM → ARABIC LETTER BEH        # 
+FE90 ; 0628 ;  SL      # ( ‎ﺐ‎ → ‎ب‎ ) ARABIC LETTER BEH FINAL FORM → ARABIC LETTER BEH # 
+FE8F ; 0628 ;  SL      # ( ‎ﺏ‎ → ‎ب‎ ) ARABIC LETTER BEH ISOLATED FORM → ARABIC LETTER BEH      # 
+0646 ; 0628 ;  SL      # ( ‎ن‎ → ‎ب‎ ) ARABIC LETTER NOON → ARABIC LETTER BEH    # →‎ﻨ‎→→‎ﺒ‎→
+FEE7 ; 0628 ;  SL      # ( ‎ﻧ‎ → ‎ب‎ ) ARABIC LETTER NOON INITIAL FORM → ARABIC LETTER BEH      # →‎ﺒ‎→
+FEE8 ; 0628 ;  SL      # ( ‎ﻨ‎ → ‎ب‎ ) ARABIC LETTER NOON MEDIAL FORM → ARABIC LETTER BEH       # →‎ﺒ‎→
+FEE6 ; 0628 ;  SL      # ( ‎ﻦ‎ → ‎ب‎ ) ARABIC LETTER NOON FINAL FORM → ARABIC LETTER BEH        # →‎ن‎→→‎ﻨ‎→→‎ﺒ‎→
+FEE5 ; 0628 ;  SL      # ( ‎ﻥ‎ → ‎ب‎ ) ARABIC LETTER NOON ISOLATED FORM → ARABIC LETTER BEH     # →‎ن‎→→‎ﻨ‎→→‎ﺒ‎→
+
+FC6D ; 0628 0628 ;     SL      # ( ‎ﱭ‎ → ‎بب‎ ) ARABIC LIGATURE BEH WITH NOON FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER BEH        # →‎بن‎→
+FC8D ; 0628 0628 ;     SL      # ( ‎ﲍ‎ → ‎بب‎ ) ARABIC LIGATURE NOON WITH NOON FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER BEH       # →‎نن‎→
+
+FC9C ; 0628 062C ;     SL      # ( ‎ﲜ‎ → ‎بج‎ ) ARABIC LIGATURE BEH WITH JEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM     # 
+FC05 ; 0628 062C ;     SL      # ( ‎ﰅ‎ → ‎بج‎ ) ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM    # 
+FC9E ; 0628 062C ;     SL      # ( ‎ﲞ‎ → ‎بج‎ ) ARABIC LIGATURE BEH WITH KHAH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM     # →‎بخ‎→→‎ﰇ‎→→‎ﰅ‎→
+FC07 ; 0628 062C ;     SL      # ( ‎ﰇ‎ → ‎بج‎ ) ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM    # →‎ﰅ‎→
+FCD2 ; 0628 062C ;     SL      # ( ‎ﳒ‎ → ‎بج‎ ) ARABIC LIGATURE NOON WITH JEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM    # →‎ﲞ‎→→‎بخ‎→→‎ﰇ‎→→‎ﰅ‎→
+FC4B ; 0628 062C ;     SL      # ( ‎ﱋ‎ → ‎بج‎ ) ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM   # →‎نج‎→→‎ﳒ‎→→‎ﲞ‎→→‎بخ‎→→‎ﰇ‎→→‎ﰅ‎→
+FCD4 ; 0628 062C ;     SL      # ( ‎ﳔ‎ → ‎بج‎ ) ARABIC LIGATURE NOON WITH KHAH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM    # →‎نخ‎→→‎ﱍ‎→→‎ﱋ‎→→‎نج‎→→‎ﳒ‎→→‎ﲞ‎→→‎بخ‎→→‎ﰇ‎→→‎ﰅ‎→
+FC4D ; 0628 062C ;     SL      # ( ‎ﱍ‎ → ‎بج‎ ) ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM   # →‎ﱋ‎→→‎نج‎→→‎ﳒ‎→→‎ﲞ‎→→‎بخ‎→→‎ﰇ‎→→‎ﰅ‎→
+
+FDB8 ; 0628 062C 062D ;        SL      # ( ‎ﶸ‎ → ‎بجح‎ ) ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER HAH      # →‎نجح‎→
+FDBD ; 0628 062C 062D ;        SL      # ( ‎ﶽ‎ → ‎بجح‎ ) ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER HAH        # →‎نجح‎→
+
+FD98 ; 0628 062C 0645 ;        SL      # ( ‎ﶘ‎ → ‎بجم‎ ) ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM    # →‎نجم‎→
+FD97 ; 0628 062C 0645 ;        SL      # ( ‎ﶗ‎ → ‎بجم‎ ) ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM      # →‎نجم‎→
+
+FD9E ; 0628 062C 0649 ;        SL      # ( ‎ﶞ‎ → ‎بجى‎ ) ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA        # →‎بخي‎→
+FD99 ; 0628 062C 0649 ;        SL      # ( ‎ﶙ‎ → ‎بجى‎ ) ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎نجى‎→
+FDC7 ; 0628 062C 0649 ;        SL      # ( ‎ﷇ‎ → ‎بجى‎ ) ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA       # →‎نجي‎→
+
+FC9D ; 0628 062D ;     SL      # ( ‎ﲝ‎ → ‎بح‎ ) ARABIC LIGATURE BEH WITH HAH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH       # 
+FC06 ; 0628 062D ;     SL      # ( ‎ﰆ‎ → ‎بح‎ ) ARABIC LIGATURE BEH WITH HAH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER HAH      # 
+FCD3 ; 0628 062D ;     SL      # ( ‎ﳓ‎ → ‎بح‎ ) ARABIC LIGATURE NOON WITH HAH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH      # →‎نح‎→
+FC4C ; 0628 062D ;     SL      # ( ‎ﱌ‎ → ‎بح‎ ) ARABIC LIGATURE NOON WITH HAH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER HAH     # →‎نح‎→
+
+FD95 ; 0628 062D 0645 ;        SL      # ( ‎ﶕ‎ → ‎بحم‎ ) ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH, ARABIC LETTER MEEM      # →‎نحم‎→
+
+FDC2 ; 0628 062D 0649 ;        SL      # ( ‎ﷂ‎ → ‎بحى‎ ) ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA  # →‎بحي‎→
+FD96 ; 0628 062D 0649 ;        SL      # ( ‎ﶖ‎ → ‎بحى‎ ) ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA        # →‎نحى‎→
+FDB3 ; 0628 062D 0649 ;        SL      # ( ‎ﶳ‎ → ‎بحى‎ ) ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA # →‎نحي‎→
+
+FC6A ; 0628 0631 ;     SL      # ( ‎ﱪ‎ → ‎بر‎ ) ARABIC LIGATURE BEH WITH REH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER REH # 
+FC8A ; 0628 0631 ;     SL      # ( ‎ﲊ‎ → ‎بر‎ ) ARABIC LIGATURE NOON WITH REH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER REH        # →‎نر‎→
+
+FC6B ; 0628 0632 ;     SL      # ( ‎ﱫ‎ → ‎بز‎ ) ARABIC LIGATURE BEH WITH ZAIN FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ZAIN       # 
+FC8B ; 0628 0632 ;     SL      # ( ‎ﲋ‎ → ‎بز‎ ) ARABIC LIGATURE NOON WITH ZAIN FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ZAIN      # →‎نز‎→
+
+FC9F ; 0628 0645 ;     SL      # ( ‎ﲟ‎ → ‎بم‎ ) ARABIC LIGATURE BEH WITH MEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM     # 
+FCE1 ; 0628 0645 ;     SL      # ( ‎ﳡ‎ → ‎بم‎ ) ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM      # 
+FC6C ; 0628 0645 ;     SL      # ( ‎ﱬ‎ → ‎بم‎ ) ARABIC LIGATURE BEH WITH MEEM FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM       # 
+FC08 ; 0628 0645 ;     SL      # ( ‎ﰈ‎ → ‎بم‎ ) ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM    # 
+FCD5 ; 0628 0645 ;     SL      # ( ‎ﳕ‎ → ‎بم‎ ) ARABIC LIGATURE NOON WITH MEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM    # →‎نم‎→
+FCEE ; 0628 0645 ;     SL      # ( ‎ﳮ‎ → ‎بم‎ ) ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM     # →‎نم‎→
+FC8C ; 0628 0645 ;     SL      # ( ‎ﲌ‎ → ‎بم‎ ) ARABIC LIGATURE NOON WITH MEEM FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM      # →‎نم‎→
+FC4E ; 0628 0645 ;     SL      # ( ‎ﱎ‎ → ‎بم‎ ) ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM   # →‎نم‎→
+
+FD9B ; 0628 0645 0649 ;        SL      # ( ‎ﶛ‎ → ‎بمى‎ ) ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA      # →‎نمى‎→
+FD9A ; 0628 0645 0649 ;        SL      # ( ‎ﶚ‎ → ‎بمى‎ ) ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA       # →‎نمي‎→
+
+FCA0 ; 0628 0647 ;     SL      # ( ‎ﲠ‎ → ‎به‎ ) ARABIC LIGATURE BEH WITH HEH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HEH       # 
+FCE2 ; 0628 0647 ;     SL      # ( ‎ﳢ‎ → ‎به‎ ) ARABIC LIGATURE BEH WITH HEH MEDIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HEH        # 
+FCD6 ; 0628 0647 ;     SL      # ( ‎ﳖ‎ → ‎به‎ ) ARABIC LIGATURE NOON WITH HEH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HEH      # →‎نه‎→
+FCEF ; 0628 0647 ;     SL      # ( ‎ﳯ‎ → ‎به‎ ) ARABIC LIGATURE NOON WITH HEH MEDIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HEH       # →‎نه‎→
+
+FC6E ; 0628 0649 ;     SL      # ( ‎ﱮ‎ → ‎بى‎ ) ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA       # 
+FC09 ; 0628 0649 ;     SL      # ( ‎ﰉ‎ → ‎بى‎ ) ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA    # 
+FC6F ; 0628 0649 ;     SL      # ( ‎ﱯ‎ → ‎بى‎ ) ARABIC LIGATURE BEH WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA        # →‎بي‎→
+FC0A ; 0628 0649 ;     SL      # ( ‎ﰊ‎ → ‎بى‎ ) ARABIC LIGATURE BEH WITH YEH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA     # →‎بي‎→
+FC8E ; 0628 0649 ;     SL      # ( ‎ﲎ‎ → ‎بى‎ ) ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA      # →‎نى‎→
+FC4F ; 0628 0649 ;     SL      # ( ‎ﱏ‎ → ‎بى‎ ) ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA   # →‎نى‎→
+FC8F ; 0628 0649 ;     SL      # ( ‎ﲏ‎ → ‎بى‎ ) ARABIC LIGATURE NOON WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA       # →‎ني‎→
+FC50 ; 0628 0649 ;     SL      # ( ‎ﱐ‎ → ‎بى‎ ) ARABIC LIGATURE NOON WITH YEH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA    # →‎ني‎→
+
+FB58 ; 067E ;  SL      # ( ‎ﭘ‎ → ‎پ‎ ) ARABIC LETTER PEH INITIAL FORM → ARABIC LETTER PEH       # 
+FB59 ; 067E ;  SL      # ( ‎ﭙ‎ → ‎پ‎ ) ARABIC LETTER PEH MEDIAL FORM → ARABIC LETTER PEH        # 
+FB57 ; 067E ;  SL      # ( ‎ﭗ‎ → ‎پ‎ ) ARABIC LETTER PEH FINAL FORM → ARABIC LETTER PEH # 
+FB56 ; 067E ;  SL      # ( ‎ﭖ‎ → ‎پ‎ ) ARABIC LETTER PEH ISOLATED FORM → ARABIC LETTER PEH      # 
+
+FE94 ; 0629 ;  SL      # ( ‎ﺔ‎ → ‎ة‎ ) ARABIC LETTER TEH MARBUTA FINAL FORM → ARABIC LETTER TEH MARBUTA # 
+FE93 ; 0629 ;  SL      # ( ‎ﺓ‎ → ‎ة‎ ) ARABIC LETTER TEH MARBUTA ISOLATED FORM → ARABIC LETTER TEH MARBUTA      # 
+06C3 ; 0629 ;  SL      # ( ‎ۃ‎ → ‎ة‎ ) ARABIC LETTER TEH MARBUTA GOAL → ARABIC LETTER TEH MARBUTA        # →ö→
+
+FE97 ; 062A ;  SL      # ( ‎ﺗ‎ → ‎ت‎ ) ARABIC LETTER TEH INITIAL FORM → ARABIC LETTER TEH       # 
+FE98 ; 062A ;  SL      # ( ‎ﺘ‎ → ‎ت‎ ) ARABIC LETTER TEH MEDIAL FORM → ARABIC LETTER TEH        # 
+FE96 ; 062A ;  SL      # ( ‎ﺖ‎ → ‎ت‎ ) ARABIC LETTER TEH FINAL FORM → ARABIC LETTER TEH # 
+FE95 ; 062A ;  SL      # ( ‎ﺕ‎ → ‎ت‎ ) ARABIC LETTER TEH ISOLATED FORM → ARABIC LETTER TEH      # 
+
+FC73 ; 062A 0628 ;     SL      # ( ‎ﱳ‎ → ‎تب‎ ) ARABIC LIGATURE TEH WITH NOON FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER BEH        # →‎تن‎→
+
+FCA1 ; 062A 062C ;     SL      # ( ‎ﲡ‎ → ‎تج‎ ) ARABIC LIGATURE TEH WITH JEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM     # 
+FC0B ; 062A 062C ;     SL      # ( ‎ﰋ‎ → ‎تج‎ ) ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM    # 
+FCA3 ; 062A 062C ;     SL      # ( ‎ﲣ‎ → ‎تج‎ ) ARABIC LIGATURE TEH WITH KHAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM     # →‎تخ‎→→‎ﰍ‎→→‎ﰋ‎→
+FC0D ; 062A 062C ;     SL      # ( ‎ﰍ‎ → ‎تج‎ ) ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM    # →‎ﰋ‎→
+FCDA ; 062A 062C ;     SL      # ( ‎ﳚ‎ → ‎تج‎ ) ARABIC LIGATURE YEH WITH JEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM     # →‎ﲡ‎→
+FC55 ; 062A 062C ;     SL      # ( ‎ﱕ‎ → ‎تج‎ ) ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM    # →‎يج‎→→‎ﳚ‎→→‎ﲡ‎→
+FCDC ; 062A 062C ;     SL      # ( ‎ﳜ‎ → ‎تج‎ ) ARABIC LIGATURE YEH WITH KHAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM     # →‎ﲣ‎→→‎تخ‎→→‎ﰍ‎→→‎ﰋ‎→
+FC57 ; 062A 062C ;     SL      # ( ‎ﱗ‎ → ‎تج‎ ) ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM    # →‎ﱕ‎→→‎يج‎→→‎ﳚ‎→→‎ﲡ‎→
+
+FD50 ; 062A 062C 0645 ;        SL      # ( ‎ﵐ‎ → ‎تجم‎ ) ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # 
+FD54 ; 062A 062C 0645 ;        SL      # ( ‎ﵔ‎ → ‎تجم‎ ) ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # →‎تخم‎→
+
+FDA0 ; 062A 062C 0649 ;        SL      # ( ‎ﶠ‎ → ‎تجى‎ ) ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA       # 
+FD9F ; 062A 062C 0649 ;        SL      # ( ‎ﶟ‎ → ‎تجى‎ ) ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA        # →‎تجي‎→
+FDA2 ; 062A 062C 0649 ;        SL      # ( ‎ﶢ‎ → ‎تجى‎ ) ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA       # →‎تخى‎→
+FDA1 ; 062A 062C 0649 ;        SL      # ( ‎ﶡ‎ → ‎تجى‎ ) ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA        # →‎تخي‎→
+
+FCA2 ; 062A 062D ;     SL      # ( ‎ﲢ‎ → ‎تح‎ ) ARABIC LIGATURE TEH WITH HAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HAH       # 
+FC0C ; 062A 062D ;     SL      # ( ‎ﰌ‎ → ‎تح‎ ) ARABIC LIGATURE TEH WITH HAH ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER HAH      # 
+FCDB ; 062A 062D ;     SL      # ( ‎ﳛ‎ → ‎تح‎ ) ARABIC LIGATURE YEH WITH HAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HAH       # →‎ﲢ‎→
+FC56 ; 062A 062D ;     SL      # ( ‎ﱖ‎ → ‎تح‎ ) ARABIC LIGATURE YEH WITH HAH ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER HAH      # →‎يح‎→→‎ﳛ‎→→‎ﲢ‎→
+
+FD52 ; 062A 062D 062C ;        SL      # ( ‎ﵒ‎ → ‎تحج‎ ) ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HAH, ARABIC LETTER JEEM       # 
+FD51 ; 062A 062D 062C ;        SL      # ( ‎ﵑ‎ → ‎تحج‎ ) ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER HAH, ARABIC LETTER JEEM # 
+
+FD53 ; 062A 062D 0645 ;        SL      # ( ‎ﵓ‎ → ‎تحم‎ ) ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HAH, ARABIC LETTER MEEM       # 
+
+FC70 ; 062A 0631 ;     SL      # ( ‎ﱰ‎ → ‎تر‎ ) ARABIC LIGATURE TEH WITH REH FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER REH # 
+
+FC71 ; 062A 0632 ;     SL      # ( ‎ﱱ‎ → ‎تز‎ ) ARABIC LIGATURE TEH WITH ZAIN FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER ZAIN       # 
+
+FCA4 ; 062A 0645 ;     SL      # ( ‎ﲤ‎ → ‎تم‎ ) ARABIC LIGATURE TEH WITH MEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM     # 
+FCE3 ; 062A 0645 ;     SL      # ( ‎ﳣ‎ → ‎تم‎ ) ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM      # 
+FC72 ; 062A 0645 ;     SL      # ( ‎ﱲ‎ → ‎تم‎ ) ARABIC LIGATURE TEH WITH MEEM FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM       # 
+FC0E ; 062A 0645 ;     SL      # ( ‎ﰎ‎ → ‎تم‎ ) ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM    # 
+
+FD55 ; 062A 0645 062C ;        SL      # ( ‎ﵕ‎ → ‎تمج‎ ) ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM, ARABIC LETTER JEEM     # 
+FD57 ; 062A 0645 062C ;        SL      # ( ‎ﵗ‎ → ‎تمج‎ ) ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM, ARABIC LETTER JEEM     # →‎تمخ‎→
+
+FD56 ; 062A 0645 062D ;        SL      # ( ‎ﵖ‎ → ‎تمح‎ ) ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+
+FDA4 ; 062A 0645 0649 ;        SL      # ( ‎ﶤ‎ → ‎تمى‎ ) ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA       # 
+FDA3 ; 062A 0645 0649 ;        SL      # ( ‎ﶣ‎ → ‎تمى‎ ) ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎تمي‎→
+
+FCA5 ; 062A 0647 ;     SL      # ( ‎ﲥ‎ → ‎ته‎ ) ARABIC LIGATURE TEH WITH HEH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HEH       # 
+FCE4 ; 062A 0647 ;     SL      # ( ‎ﳤ‎ → ‎ته‎ ) ARABIC LIGATURE TEH WITH HEH MEDIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HEH        # 
+
+FC74 ; 062A 0649 ;     SL      # ( ‎ﱴ‎ → ‎تى‎ ) ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER ALEF MAKSURA       # 
+FC0F ; 062A 0649 ;     SL      # ( ‎ﰏ‎ → ‎تى‎ ) ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER ALEF MAKSURA    # 
+FC75 ; 062A 0649 ;     SL      # ( ‎ﱵ‎ → ‎تى‎ ) ARABIC LIGATURE TEH WITH YEH FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER ALEF MAKSURA        # →‎تي‎→
+FC10 ; 062A 0649 ;     SL      # ( ‎ﰐ‎ → ‎تى‎ ) ARABIC LIGATURE TEH WITH YEH ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER ALEF MAKSURA     # →‎تي‎→
+
+FE9B ; 062B ;  SL      # ( ‎ﺛ‎ → ‎ث‎ ) ARABIC LETTER THEH INITIAL FORM → ARABIC LETTER THEH     # 
+FE9C ; 062B ;  SL      # ( ‎ﺜ‎ → ‎ث‎ ) ARABIC LETTER THEH MEDIAL FORM → ARABIC LETTER THEH      # 
+FE9A ; 062B ;  SL      # ( ‎ﺚ‎ → ‎ث‎ ) ARABIC LETTER THEH FINAL FORM → ARABIC LETTER THEH       # 
+FE99 ; 062B ;  SL      # ( ‎ﺙ‎ → ‎ث‎ ) ARABIC LETTER THEH ISOLATED FORM → ARABIC LETTER THEH    # 
+
+FC79 ; 062B 0628 ;     SL      # ( ‎ﱹ‎ → ‎ثب‎ ) ARABIC LIGATURE THEH WITH NOON FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER BEH      # →‎ثن‎→
+
+FC11 ; 062B 062C ;     SL      # ( ‎ﰑ‎ → ‎ثج‎ ) ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM → ARABIC LETTER THEH, ARABIC LETTER JEEM  # 
+
+FC76 ; 062B 0631 ;     SL      # ( ‎ﱶ‎ → ‎ثر‎ ) ARABIC LIGATURE THEH WITH REH FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER REH       # 
+
+FC77 ; 062B 0632 ;     SL      # ( ‎ﱷ‎ → ‎ثز‎ ) ARABIC LIGATURE THEH WITH ZAIN FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER ZAIN     # 
+
+FCA6 ; 062B 0645 ;     SL      # ( ‎ﲦ‎ → ‎ثم‎ ) ARABIC LIGATURE THEH WITH MEEM INITIAL FORM → ARABIC LETTER THEH, ARABIC LETTER MEEM   # 
+FCE5 ; 062B 0645 ;     SL      # ( ‎ﳥ‎ → ‎ثم‎ ) ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM → ARABIC LETTER THEH, ARABIC LETTER MEEM    # 
+FC78 ; 062B 0645 ;     SL      # ( ‎ﱸ‎ → ‎ثم‎ ) ARABIC LIGATURE THEH WITH MEEM FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER MEEM     # 
+FC12 ; 062B 0645 ;     SL      # ( ‎ﰒ‎ → ‎ثم‎ ) ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM → ARABIC LETTER THEH, ARABIC LETTER MEEM  # 
+
+FCE6 ; 062B 0647 ;     SL      # ( ‎ﳦ‎ → ‎ثه‎ ) ARABIC LIGATURE THEH WITH HEH MEDIAL FORM → ARABIC LETTER THEH, ARABIC LETTER HEH      # 
+
+FC7A ; 062B 0649 ;     SL      # ( ‎ﱺ‎ → ‎ثى‎ ) ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER ALEF MAKSURA     # 
+FC13 ; 062B 0649 ;     SL      # ( ‎ﰓ‎ → ‎ثى‎ ) ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER THEH, ARABIC LETTER ALEF MAKSURA  # 
+FC7B ; 062B 0649 ;     SL      # ( ‎ﱻ‎ → ‎ثى‎ ) ARABIC LIGATURE THEH WITH YEH FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER ALEF MAKSURA      # →‎ثي‎→
+FC14 ; 062B 0649 ;     SL      # ( ‎ﰔ‎ → ‎ثى‎ ) ARABIC LIGATURE THEH WITH YEH ISOLATED FORM → ARABIC LETTER THEH, ARABIC LETTER ALEF MAKSURA   # →‎ثي‎→
+
+FB68 ; 0679 ;  SL      # ( ‎ﭨ‎ → ‎ٹ‎ ) ARABIC LETTER TTEH INITIAL FORM → ARABIC LETTER TTEH     # 
+FB69 ; 0679 ;  SL      # ( ‎ﭩ‎ → ‎ٹ‎ ) ARABIC LETTER TTEH MEDIAL FORM → ARABIC LETTER TTEH      # 
+FB67 ; 0679 ;  SL      # ( ‎ﭧ‎ → ‎ٹ‎ ) ARABIC LETTER TTEH FINAL FORM → ARABIC LETTER TTEH       # 
+FB66 ; 0679 ;  SL      # ( ‎ﭦ‎ → ‎ٹ‎ ) ARABIC LETTER TTEH ISOLATED FORM → ARABIC LETTER TTEH    # 
+06BB ; 0679 ;  SL      # ( ‎ڻ‎ → ‎ٹ‎ ) ARABIC LETTER RNOON → ARABIC LETTER TTEH  # →‎ﮢ‎→→‎ﭩ‎→
+FBA2 ; 0679 ;  SL      # ( ‎ﮢ‎ → ‎ٹ‎ ) ARABIC LETTER RNOON INITIAL FORM → ARABIC LETTER TTEH    # →‎ﭩ‎→
+FBA3 ; 0679 ;  SL      # ( ‎ﮣ‎ → ‎ٹ‎ ) ARABIC LETTER RNOON MEDIAL FORM → ARABIC LETTER TTEH     # →‎ﭩ‎→
+FBA1 ; 0679 ;  SL      # ( ‎ﮡ‎ → ‎ٹ‎ ) ARABIC LETTER RNOON FINAL FORM → ARABIC LETTER TTEH      # →‎ڻ‎→→‎ﮢ‎→→‎ﭩ‎→
+FBA0 ; 0679 ;  SL      # ( ‎ﮠ‎ → ‎ٹ‎ ) ARABIC LETTER RNOON ISOLATED FORM → ARABIC LETTER TTEH   # →‎ڻ‎→→‎ﮢ‎→→‎ﭩ‎→
+
+067B ; 067A ;  SL      # ( ‎ٻ‎ → ‎ٺ‎ ) ARABIC LETTER BEEH → ARABIC LETTER TTEHEH # →‎ﭞ‎→
+FB54 ; 067A ;  SL      # ( ‎ﭔ‎ → ‎ٺ‎ ) ARABIC LETTER BEEH INITIAL FORM → ARABIC LETTER TTEHEH   # →‎ﭡ‎→
+FB55 ; 067A ;  SL      # ( ‎ﭕ‎ → ‎ٺ‎ ) ARABIC LETTER BEEH MEDIAL FORM → ARABIC LETTER TTEHEH    # →‎ﭡ‎→
+FB53 ; 067A ;  SL      # ( ‎ﭓ‎ → ‎ٺ‎ ) ARABIC LETTER BEEH FINAL FORM → ARABIC LETTER TTEHEH     # 
+FB52 ; 067A ;  SL      # ( ‎ﭒ‎ → ‎ٺ‎ ) ARABIC LETTER BEEH ISOLATED FORM → ARABIC LETTER TTEHEH  # 
+FB60 ; 067A ;  SL      # ( ‎ﭠ‎ → ‎ٺ‎ ) ARABIC LETTER TTEHEH INITIAL FORM → ARABIC LETTER TTEHEH # 
+FB61 ; 067A ;  SL      # ( ‎ﭡ‎ → ‎ٺ‎ ) ARABIC LETTER TTEHEH MEDIAL FORM → ARABIC LETTER TTEHEH  # 
+FB5F ; 067A ;  SL      # ( ‎ﭟ‎ → ‎ٺ‎ ) ARABIC LETTER TTEHEH FINAL FORM → ARABIC LETTER TTEHEH   # 
+FB5E ; 067A ;  SL      # ( ‎ﭞ‎ → ‎ٺ‎ ) ARABIC LETTER TTEHEH ISOLATED FORM → ARABIC LETTER TTEHEH        # 
+06D0 ; 067A ;  SL      # ( ‎ې‎ → ‎ٺ‎ ) ARABIC LETTER E → ARABIC LETTER TTEHEH    # →‎ﯦ‎→→‎ﭡ‎→
+FBE6 ; 067A ;  SL      # ( ‎ﯦ‎ → ‎ٺ‎ ) ARABIC LETTER E INITIAL FORM → ARABIC LETTER TTEHEH      # →‎ﭡ‎→
+FBE7 ; 067A ;  SL      # ( ‎ﯧ‎ → ‎ٺ‎ ) ARABIC LETTER E MEDIAL FORM → ARABIC LETTER TTEHEH       # →‎ﭡ‎→
+FBE5 ; 067A ;  SL      # ( ‎ﯥ‎ → ‎ٺ‎ ) ARABIC LETTER E FINAL FORM → ARABIC LETTER TTEHEH        # →‎ې‎→→‎ﯦ‎→→‎ﭡ‎→
+FBE4 ; 067A ;  SL      # ( ‎ﯤ‎ → ‎ٺ‎ ) ARABIC LETTER E ISOLATED FORM → ARABIC LETTER TTEHEH     # →‎ې‎→→‎ﯦ‎→→‎ﭡ‎→
+
+0680 ; 067F ;  SL      # ( ‎ڀ‎ → ‎ٿ‎ ) ARABIC LETTER BEHEH → ARABIC LETTER TEHEH # →‎ﭚ‎→
+FB5C ; 067F ;  SL      # ( ‎ﭜ‎ → ‎ٿ‎ ) ARABIC LETTER BEHEH INITIAL FORM → ARABIC LETTER TEHEH   # →‎ﭥ‎→
+FB5D ; 067F ;  SL      # ( ‎ﭝ‎ → ‎ٿ‎ ) ARABIC LETTER BEHEH MEDIAL FORM → ARABIC LETTER TEHEH    # →‎ﭥ‎→
+FB5B ; 067F ;  SL      # ( ‎ﭛ‎ → ‎ٿ‎ ) ARABIC LETTER BEHEH FINAL FORM → ARABIC LETTER TEHEH     # 
+FB5A ; 067F ;  SL      # ( ‎ﭚ‎ → ‎ٿ‎ ) ARABIC LETTER BEHEH ISOLATED FORM → ARABIC LETTER TEHEH  # 
+FB64 ; 067F ;  SL      # ( ‎ﭤ‎ → ‎ٿ‎ ) ARABIC LETTER TEHEH INITIAL FORM → ARABIC LETTER TEHEH   # 
+FB65 ; 067F ;  SL      # ( ‎ﭥ‎ → ‎ٿ‎ ) ARABIC LETTER TEHEH MEDIAL FORM → ARABIC LETTER TEHEH    # 
+FB63 ; 067F ;  SL      # ( ‎ﭣ‎ → ‎ٿ‎ ) ARABIC LETTER TEHEH FINAL FORM → ARABIC LETTER TEHEH     # 
+FB62 ; 067F ;  SL      # ( ‎ﭢ‎ → ‎ٿ‎ ) ARABIC LETTER TEHEH ISOLATED FORM → ARABIC LETTER TEHEH  # 
+
+FE9F ; 062C ;  SL      # ( ‎ﺟ‎ → ‎ج‎ ) ARABIC LETTER JEEM INITIAL FORM → ARABIC LETTER JEEM     # 
+FEA0 ; 062C ;  SL      # ( ‎ﺠ‎ → ‎ج‎ ) ARABIC LETTER JEEM MEDIAL FORM → ARABIC LETTER JEEM      # 
+FE9E ; 062C ;  SL      # ( ‎ﺞ‎ → ‎ج‎ ) ARABIC LETTER JEEM FINAL FORM → ARABIC LETTER JEEM       # 
+FE9D ; 062C ;  SL      # ( ‎ﺝ‎ → ‎ج‎ ) ARABIC LETTER JEEM ISOLATED FORM → ARABIC LETTER JEEM    # 
+062E ; 062C ;  SL      # ( ‎خ‎ → ‎ج‎ ) ARABIC LETTER KHAH → ARABIC LETTER JEEM   # 
+FEA7 ; 062C ;  SL      # ( ‎ﺧ‎ → ‎ج‎ ) ARABIC LETTER KHAH INITIAL FORM → ARABIC LETTER JEEM     # →‎خ‎→
+FEA8 ; 062C ;  SL      # ( ‎ﺨ‎ → ‎ج‎ ) ARABIC LETTER KHAH MEDIAL FORM → ARABIC LETTER JEEM      # →‎خ‎→
+FEA6 ; 062C ;  SL      # ( ‎ﺦ‎ → ‎ج‎ ) ARABIC LETTER KHAH FINAL FORM → ARABIC LETTER JEEM       # →‎خ‎→
+FEA5 ; 062C ;  SL      # ( ‎ﺥ‎ → ‎ج‎ ) ARABIC LETTER KHAH ISOLATED FORM → ARABIC LETTER JEEM    # 
+
+FCAB ; 062C 062C ;     SL      # ( ‎ﲫ‎ → ‎جج‎ ) ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM → ARABIC LETTER JEEM, ARABIC LETTER JEEM   # →‎خج‎→
+FC19 ; 062C 062C ;     SL      # ( ‎ﰙ‎ → ‎جج‎ ) ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER JEEM  # →‎خج‎→
+
+FCA7 ; 062C 062D ;     SL      # ( ‎ﲧ‎ → ‎جح‎ ) ARABIC LIGATURE JEEM WITH HAH INITIAL FORM → ARABIC LETTER JEEM, ARABIC LETTER HAH     # 
+FC15 ; 062C 062D ;     SL      # ( ‎ﰕ‎ → ‎جح‎ ) ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER HAH    # 
+FC1A ; 062C 062D ;     SL      # ( ‎ﰚ‎ → ‎جح‎ ) ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER HAH    # →‎ﰕ‎→
+
+FDA6 ; 062C 062D 0649 ;        SL      # ( ‎ﶦ‎ → ‎جحى‎ ) ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA       # 
+FDBE ; 062C 062D 0649 ;        SL      # ( ‎ﶾ‎ → ‎جحى‎ ) ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA        # →‎جحي‎→
+
+FDFB ; 062C 0644 0020 062C 0644 0627 0644 0647 ;       SL      #* ( ‎ﷻ‎ → ‎جل جلاله‎ ) ARABIC LIGATURE JALLAJALALOUHOU → ARABIC LETTER JEEM, ARABIC LETTER LAM, SPACE, ARABIC LETTER JEEM, ARABIC LETTER LAM, ARABIC LETTER ALEF, ARABIC LETTER LAM, ARABIC LETTER HEH    # 
+
+FCA8 ; 062C 0645 ;     SL      # ( ‎ﲨ‎ → ‎جم‎ ) ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM   # 
+FC16 ; 062C 0645 ;     SL      # ( ‎ﰖ‎ → ‎جم‎ ) ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM  # 
+FCAC ; 062C 0645 ;     SL      # ( ‎ﲬ‎ → ‎جم‎ ) ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM   # →‎ﲨ‎→
+FC1B ; 062C 0645 ;     SL      # ( ‎ﰛ‎ → ‎جم‎ ) ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM  # →‎ﰖ‎→
+
+FD59 ; 062C 0645 062D ;        SL      # ( ‎ﵙ‎ → ‎جمح‎ ) ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM, ARABIC LETTER HAH     # 
+FD58 ; 062C 0645 062D ;        SL      # ( ‎ﵘ‎ → ‎جمح‎ ) ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+
+FDA7 ; 062C 0645 0649 ;        SL      # ( ‎ﶧ‎ → ‎جمى‎ ) ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA     # 
+FDA5 ; 062C 0645 0649 ;        SL      # ( ‎ﶥ‎ → ‎جمى‎ ) ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA      # →‎جمي‎→
+
+FD1D ; 062C 0649 ;     SL      # ( ‎ﴝ‎ → ‎جى‎ ) ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA     # 
+FD01 ; 062C 0649 ;     SL      # ( ‎ﴁ‎ → ‎جى‎ ) ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA  # 
+FD1E ; 062C 0649 ;     SL      # ( ‎ﴞ‎ → ‎جى‎ ) ARABIC LIGATURE JEEM WITH YEH FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎جي‎→
+FD02 ; 062C 0649 ;     SL      # ( ‎ﴂ‎ → ‎جى‎ ) ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA   # →‎جي‎→
+FD1F ; 062C 0649 ;     SL      # ( ‎ﴟ‎ → ‎جى‎ ) ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA     # →‎خى‎→→‎ﴃ‎→→‎ﴁ‎→
+FD03 ; 062C 0649 ;     SL      # ( ‎ﴃ‎ → ‎جى‎ ) ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA  # →‎ﴁ‎→
+FD20 ; 062C 0649 ;     SL      # ( ‎ﴠ‎ → ‎جى‎ ) ARABIC LIGATURE KHAH WITH YEH FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎خي‎→→‎ﴄ‎→→‎ﴂ‎→→‎جي‎→
+FD04 ; 062C 0649 ;     SL      # ( ‎ﴄ‎ → ‎جى‎ ) ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA   # →‎ﴂ‎→→‎جي‎→
+
+FB78 ; 0683 ;  SL      # ( ‎ﭸ‎ → ‎ڃ‎ ) ARABIC LETTER NYEH INITIAL FORM → ARABIC LETTER NYEH     # 
+FB79 ; 0683 ;  SL      # ( ‎ﭹ‎ → ‎ڃ‎ ) ARABIC LETTER NYEH MEDIAL FORM → ARABIC LETTER NYEH      # 
+FB77 ; 0683 ;  SL      # ( ‎ﭷ‎ → ‎ڃ‎ ) ARABIC LETTER NYEH FINAL FORM → ARABIC LETTER NYEH       # 
+FB76 ; 0683 ;  SL      # ( ‎ﭶ‎ → ‎ڃ‎ ) ARABIC LETTER NYEH ISOLATED FORM → ARABIC LETTER NYEH    # 
+
+FB7C ; 0686 ;  SL      # ( ‎ﭼ‎ → ‎چ‎ ) ARABIC LETTER TCHEH INITIAL FORM → ARABIC LETTER TCHEH   # 
+FB7D ; 0686 ;  SL      # ( ‎ﭽ‎ → ‎چ‎ ) ARABIC LETTER TCHEH MEDIAL FORM → ARABIC LETTER TCHEH    # 
+FB7B ; 0686 ;  SL      # ( ‎ﭻ‎ → ‎چ‎ ) ARABIC LETTER TCHEH FINAL FORM → ARABIC LETTER TCHEH     # 
+FB7A ; 0686 ;  SL      # ( ‎ﭺ‎ → ‎چ‎ ) ARABIC LETTER TCHEH ISOLATED FORM → ARABIC LETTER TCHEH  # 
+
+FB80 ; 0687 ;  SL      # ( ‎ﮀ‎ → ‎ڇ‎ ) ARABIC LETTER TCHEHEH INITIAL FORM → ARABIC LETTER TCHEHEH       # 
+FB81 ; 0687 ;  SL      # ( ‎ﮁ‎ → ‎ڇ‎ ) ARABIC LETTER TCHEHEH MEDIAL FORM → ARABIC LETTER TCHEHEH        # 
+FB7F ; 0687 ;  SL      # ( ‎ﭿ‎ → ‎ڇ‎ ) ARABIC LETTER TCHEHEH FINAL FORM → ARABIC LETTER TCHEHEH # 
+FB7E ; 0687 ;  SL      # ( ‎ﭾ‎ → ‎ڇ‎ ) ARABIC LETTER TCHEHEH ISOLATED FORM → ARABIC LETTER TCHEHEH      # 
+
+FEA3 ; 062D ;  SL      # ( ‎ﺣ‎ → ‎ح‎ ) ARABIC LETTER HAH INITIAL FORM → ARABIC LETTER HAH       # 
+FEA4 ; 062D ;  SL      # ( ‎ﺤ‎ → ‎ح‎ ) ARABIC LETTER HAH MEDIAL FORM → ARABIC LETTER HAH        # 
+FEA2 ; 062D ;  SL      # ( ‎ﺢ‎ → ‎ح‎ ) ARABIC LETTER HAH FINAL FORM → ARABIC LETTER HAH # 
+FEA1 ; 062D ;  SL      # ( ‎ﺡ‎ → ‎ح‎ ) ARABIC LETTER HAH ISOLATED FORM → ARABIC LETTER HAH      # 
+
+FCA9 ; 062D 062C ;     SL      # ( ‎ﲩ‎ → ‎حج‎ ) ARABIC LIGATURE HAH WITH JEEM INITIAL FORM → ARABIC LETTER HAH, ARABIC LETTER JEEM     # 
+FC17 ; 062D 062C ;     SL      # ( ‎ﰗ‎ → ‎حج‎ ) ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM → ARABIC LETTER HAH, ARABIC LETTER JEEM    # 
+
+FDBF ; 062D 062C 0649 ;        SL      # ( ‎ﶿ‎ → ‎حجى‎ ) ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER HAH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA        # →‎حجي‎→
+
+FCAA ; 062D 0645 ;     SL      # ( ‎ﲪ‎ → ‎حم‎ ) ARABIC LIGATURE HAH WITH MEEM INITIAL FORM → ARABIC LETTER HAH, ARABIC LETTER MEEM     # 
+FC18 ; 062D 0645 ;     SL      # ( ‎ﰘ‎ → ‎حم‎ ) ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM → ARABIC LETTER HAH, ARABIC LETTER MEEM    # 
+
+FD5B ; 062D 0645 0649 ;        SL      # ( ‎ﵛ‎ → ‎حمى‎ ) ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER HAH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA       # 
+FD5A ; 062D 0645 0649 ;        SL      # ( ‎ﵚ‎ → ‎حمى‎ ) ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER HAH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎حمي‎→
+
+FD1B ; 062D 0649 ;     SL      # ( ‎ﴛ‎ → ‎حى‎ ) ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA       # 
+FCFF ; 062D 0649 ;     SL      # ( ‎ﳿ‎ → ‎حى‎ ) ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA    # 
+FD1C ; 062D 0649 ;     SL      # ( ‎ﴜ‎ → ‎حى‎ ) ARABIC LIGATURE HAH WITH YEH FINAL FORM → ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA        # →‎حي‎→
+FD00 ; 062D 0649 ;     SL      # ( ‎ﴀ‎ → ‎حى‎ ) ARABIC LIGATURE HAH WITH YEH ISOLATED FORM → ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA     # →‎حي‎→
+
+0684 ; 0682 ;  SL      # ( ‎ڄ‎ → ‎ڂ‎ ) ARABIC LETTER DYEH → ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE       # 
+FB74 ; 0682 ;  SL      # ( ‎ﭴ‎ → ‎ڂ‎ ) ARABIC LETTER DYEH INITIAL FORM → ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE # →‎ڄ‎→
+FB75 ; 0682 ;  SL      # ( ‎ﭵ‎ → ‎ڂ‎ ) ARABIC LETTER DYEH MEDIAL FORM → ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE  # →‎ڄ‎→
+FB73 ; 0682 ;  SL      # ( ‎ﭳ‎ → ‎ڂ‎ ) ARABIC LETTER DYEH FINAL FORM → ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE   # →‎ڄ‎→
+FB72 ; 0682 ;  SL      # ( ‎ﭲ‎ → ‎ڂ‎ ) ARABIC LETTER DYEH ISOLATED FORM → ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE        # 
+
+FEAA ; 062F ;  SL      # ( ‎ﺪ‎ → ‎د‎ ) ARABIC LETTER DAL FINAL FORM → ARABIC LETTER DAL # 
+FEA9 ; 062F ;  SL      # ( ‎ﺩ‎ → ‎د‎ ) ARABIC LETTER DAL ISOLATED FORM → ARABIC LETTER DAL      # 
+
+FEAC ; 0630 ;  SL      # ( ‎ﺬ‎ → ‎ذ‎ ) ARABIC LETTER THAL FINAL FORM → ARABIC LETTER THAL       # 
+FEAB ; 0630 ;  SL      # ( ‎ﺫ‎ → ‎ذ‎ ) ARABIC LETTER THAL ISOLATED FORM → ARABIC LETTER THAL    # 
+
+FC5B ; 0630 0670 ;     SL      # ( ‎ﱛ‎ → ‎ذٰ‎ ) ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM → ARABIC LETTER THAL, ARABIC LETTER SUPERSCRIPT ALEF  # 
+
+FB89 ; 0688 ;  SL      # ( ‎ﮉ‎ → ‎ڈ‎ ) ARABIC LETTER DDAL FINAL FORM → ARABIC LETTER DDAL       # 
+FB88 ; 0688 ;  SL      # ( ‎ﮈ‎ → ‎ڈ‎ ) ARABIC LETTER DDAL ISOLATED FORM → ARABIC LETTER DDAL    # 
+
+FB85 ; 068C ;  SL      # ( ‎ﮅ‎ → ‎ڌ‎ ) ARABIC LETTER DAHAL FINAL FORM → ARABIC LETTER DAHAL     # 
+FB84 ; 068C ;  SL      # ( ‎ﮄ‎ → ‎ڌ‎ ) ARABIC LETTER DAHAL ISOLATED FORM → ARABIC LETTER DAHAL  # 
+
+FB83 ; 068D ;  SL      # ( ‎ﮃ‎ → ‎ڍ‎ ) ARABIC LETTER DDAHAL FINAL FORM → ARABIC LETTER DDAHAL   # 
+FB82 ; 068D ;  SL      # ( ‎ﮂ‎ → ‎ڍ‎ ) ARABIC LETTER DDAHAL ISOLATED FORM → ARABIC LETTER DDAHAL        # 
+
+FB87 ; 068E ;  SL      # ( ‎ﮇ‎ → ‎ڎ‎ ) ARABIC LETTER DUL FINAL FORM → ARABIC LETTER DUL # 
+FB86 ; 068E ;  SL      # ( ‎ﮆ‎ → ‎ڎ‎ ) ARABIC LETTER DUL ISOLATED FORM → ARABIC LETTER DUL      # 
+
+FEAE ; 0631 ;  SL      # ( ‎ﺮ‎ → ‎ر‎ ) ARABIC LETTER REH FINAL FORM → ARABIC LETTER REH # 
+FEAD ; 0631 ;  SL      # ( ‎ﺭ‎ → ‎ر‎ ) ARABIC LETTER REH ISOLATED FORM → ARABIC LETTER REH      # 
+
+FC5C ; 0631 0670 ;     SL      # ( ‎ﱜ‎ → ‎رٰ‎ ) ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM → ARABIC LETTER REH, ARABIC LETTER SUPERSCRIPT ALEF    # 
+
+FDF6 ; 0631 0633 0648 0644 ;   SL      # ( ‎ﷶ‎ → ‎رسول‎ ) ARABIC LIGATURE RASOUL ISOLATED FORM → ARABIC LETTER REH, ARABIC LETTER SEEN, ARABIC LETTER WAW, ARABIC LETTER LAM # 
+
+FDFC ; 0631 0649 0627 0644 ;   SL      #* ( ‎﷼‎ → ‎رىال‎ ) RIAL SIGN → ARABIC LETTER REH, ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ALEF, ARABIC LETTER LAM  # →‎ریال‎→
+
+FEB0 ; 0632 ;  SL      # ( ‎ﺰ‎ → ‎ز‎ ) ARABIC LETTER ZAIN FINAL FORM → ARABIC LETTER ZAIN       # 
+FEAF ; 0632 ;  SL      # ( ‎ﺯ‎ → ‎ز‎ ) ARABIC LETTER ZAIN ISOLATED FORM → ARABIC LETTER ZAIN    # 
+0694 ; 0632 ;  SL      # ( ‎ڔ‎ → ‎ز‎ ) ARABIC LETTER REH WITH DOT BELOW → ARABIC LETTER ZAIN     # 
+
+FB8D ; 0691 ;  SL      # ( ‎ﮍ‎ → ‎ڑ‎ ) ARABIC LETTER RREH FINAL FORM → ARABIC LETTER RREH       # 
+FB8C ; 0691 ;  SL      # ( ‎ﮌ‎ → ‎ڑ‎ ) ARABIC LETTER RREH ISOLATED FORM → ARABIC LETTER RREH    # 
+
+FB8B ; 0698 ;  SL      # ( ‎ﮋ‎ → ‎ژ‎ ) ARABIC LETTER JEH FINAL FORM → ARABIC LETTER JEH # 
+FB8A ; 0698 ;  SL      # ( ‎ﮊ‎ → ‎ژ‎ ) ARABIC LETTER JEH ISOLATED FORM → ARABIC LETTER JEH      # 
+
+FEB3 ; 0633 ;  SL      # ( ‎ﺳ‎ → ‎س‎ ) ARABIC LETTER SEEN INITIAL FORM → ARABIC LETTER SEEN     # 
+FEB4 ; 0633 ;  SL      # ( ‎ﺴ‎ → ‎س‎ ) ARABIC LETTER SEEN MEDIAL FORM → ARABIC LETTER SEEN      # 
+FEB2 ; 0633 ;  SL      # ( ‎ﺲ‎ → ‎س‎ ) ARABIC LETTER SEEN FINAL FORM → ARABIC LETTER SEEN       # 
+FEB1 ; 0633 ;  SL      # ( ‎ﺱ‎ → ‎س‎ ) ARABIC LETTER SEEN ISOLATED FORM → ARABIC LETTER SEEN    # 
+
+FCAD ; 0633 062C ;     SL      # ( ‎ﲭ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM   # 
+FD34 ; 0633 062C ;     SL      # ( ‎ﴴ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM    # 
+FC1C ; 0633 062C ;     SL      # ( ‎ﰜ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM  # 
+FCAF ; 0633 062C ;     SL      # ( ‎ﲯ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM   # →‎سخ‎→→‎ﰞ‎→→‎ﰜ‎→
+FD36 ; 0633 062C ;     SL      # ( ‎ﴶ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM    # →‎سخ‎→→‎ﰞ‎→→‎ﰜ‎→
+FC1E ; 0633 062C ;     SL      # ( ‎ﰞ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM  # →‎ﰜ‎→
+
+FD5D ; 0633 062C 062D ;        SL      # ( ‎ﵝ‎ → ‎سجح‎ ) ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM, ARABIC LETTER HAH     # 
+
+FD5E ; 0633 062C 0649 ;        SL      # ( ‎ﵞ‎ → ‎سجى‎ ) ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA     # 
+FDA8 ; 0633 062C 0649 ;        SL      # ( ‎ﶨ‎ → ‎سجى‎ ) ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA     # →‎سخى‎→
+FDC6 ; 0633 062C 0649 ;        SL      # ( ‎ﷆ‎ → ‎سجى‎ ) ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎سخي‎→
+
+FCAE ; 0633 062D ;     SL      # ( ‎ﲮ‎ → ‎سح‎ ) ARABIC LIGATURE SEEN WITH HAH INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER HAH     # 
+FD35 ; 0633 062D ;     SL      # ( ‎ﴵ‎ → ‎سح‎ ) ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER HAH      # 
+FC1D ; 0633 062D ;     SL      # ( ‎ﰝ‎ → ‎سح‎ ) ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER HAH    # 
+
+FD5C ; 0633 062D 062C ;        SL      # ( ‎ﵜ‎ → ‎سحج‎ ) ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER HAH, ARABIC LETTER JEEM     # 
+
+FD2A ; 0633 0631 ;     SL      # ( ‎ﴪ‎ → ‎سر‎ ) ARABIC LIGATURE SEEN WITH REH FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER REH       # 
+FD0E ; 0633 0631 ;     SL      # ( ‎ﴎ‎ → ‎سر‎ ) ARABIC LIGATURE SEEN WITH REH ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER REH    # 
+
+FCB0 ; 0633 0645 ;     SL      # ( ‎ﲰ‎ → ‎سم‎ ) ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM   # 
+FCE7 ; 0633 0645 ;     SL      # ( ‎ﳧ‎ → ‎سم‎ ) ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM    # 
+FC1F ; 0633 0645 ;     SL      # ( ‎ﰟ‎ → ‎سم‎ ) ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM  # 
+
+FD61 ; 0633 0645 062C ;        SL      # ( ‎ﵡ‎ → ‎سمج‎ ) ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM, ARABIC LETTER JEEM   # 
+
+FD60 ; 0633 0645 062D ;        SL      # ( ‎ﵠ‎ → ‎سمح‎ ) ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM, ARABIC LETTER HAH     # 
+FD5F ; 0633 0645 062D ;        SL      # ( ‎ﵟ‎ → ‎سمح‎ ) ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+
+FD63 ; 0633 0645 0645 ;        SL      # ( ‎ﵣ‎ → ‎سمم‎ ) ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM, ARABIC LETTER MEEM   # 
+FD62 ; 0633 0645 0645 ;        SL      # ( ‎ﵢ‎ → ‎سمم‎ ) ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+
+FD31 ; 0633 0647 ;     SL      # ( ‎ﴱ‎ → ‎سه‎ ) ARABIC LIGATURE SEEN WITH HEH INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER HEH     # 
+FCE8 ; 0633 0647 ;     SL      # ( ‎ﳨ‎ → ‎سه‎ ) ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER HEH      # 
+
+FD17 ; 0633 0649 ;     SL      # ( ‎ﴗ‎ → ‎سى‎ ) ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER ALEF MAKSURA     # 
+FCFB ; 0633 0649 ;     SL      # ( ‎ﳻ‎ → ‎سى‎ ) ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER ALEF MAKSURA  # 
+FD18 ; 0633 0649 ;     SL      # ( ‎ﴘ‎ → ‎سى‎ ) ARABIC LIGATURE SEEN WITH YEH FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER ALEF MAKSURA      # →‎سي‎→
+FCFC ; 0633 0649 ;     SL      # ( ‎ﳼ‎ → ‎سى‎ ) ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER ALEF MAKSURA   # →‎سي‎→
+
+FEB7 ; 0634 ;  SL      # ( ‎ﺷ‎ → ‎ش‎ ) ARABIC LETTER SHEEN INITIAL FORM → ARABIC LETTER SHEEN   # 
+FEB8 ; 0634 ;  SL      # ( ‎ﺸ‎ → ‎ش‎ ) ARABIC LETTER SHEEN MEDIAL FORM → ARABIC LETTER SHEEN    # 
+FEB6 ; 0634 ;  SL      # ( ‎ﺶ‎ → ‎ش‎ ) ARABIC LETTER SHEEN FINAL FORM → ARABIC LETTER SHEEN     # 
+FEB5 ; 0634 ;  SL      # ( ‎ﺵ‎ → ‎ش‎ ) ARABIC LETTER SHEEN ISOLATED FORM → ARABIC LETTER SHEEN  # 
+
+FD2D ; 0634 062C ;     SL      # ( ‎ﴭ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM # 
+FD37 ; 0634 062C ;     SL      # ( ‎ﴷ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM  # 
+FD25 ; 0634 062C ;     SL      # ( ‎ﴥ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM   # 
+FD09 ; 0634 062C ;     SL      # ( ‎ﴉ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM        # 
+FD2F ; 0634 062C ;     SL      # ( ‎ﴯ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM # →‎شخ‎→→‎ﴧ‎→→‎ﴥ‎→
+FD39 ; 0634 062C ;     SL      # ( ‎ﴹ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM  # →‎شخ‎→→‎ﴧ‎→→‎ﴥ‎→
+FD27 ; 0634 062C ;     SL      # ( ‎ﴧ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM   # →‎ﴥ‎→
+FD0B ; 0634 062C ;     SL      # ( ‎ﴋ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM        # →‎ﴉ‎→
+
+FD69 ; 0634 062C 0649 ;        SL      # ( ‎ﵩ‎ → ‎شجى‎ ) ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA    # →‎شجي‎→
+
+FD2E ; 0634 062D ;     SL      # ( ‎ﴮ‎ → ‎شح‎ ) ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH   # 
+FD38 ; 0634 062D ;     SL      # ( ‎ﴸ‎ → ‎شح‎ ) ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH    # 
+FD26 ; 0634 062D ;     SL      # ( ‎ﴦ‎ → ‎شح‎ ) ARABIC LIGATURE SHEEN WITH HAH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH     # 
+FD0A ; 0634 062D ;     SL      # ( ‎ﴊ‎ → ‎شح‎ ) ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH  # 
+
+FD68 ; 0634 062D 0645 ;        SL      # ( ‎ﵨ‎ → ‎شحم‎ ) ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH, ARABIC LETTER MEEM   # 
+FD67 ; 0634 062D 0645 ;        SL      # ( ‎ﵧ‎ → ‎شحم‎ ) ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH, ARABIC LETTER MEEM     # 
+
+FDAA ; 0634 062D 0649 ;        SL      # ( ‎ﶪ‎ → ‎شحى‎ ) ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA      # →‎شحي‎→
+
+FD29 ; 0634 0631 ;     SL      # ( ‎ﴩ‎ → ‎شر‎ ) ARABIC LIGATURE SHEEN WITH REH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER REH     # 
+FD0D ; 0634 0631 ;     SL      # ( ‎ﴍ‎ → ‎شر‎ ) ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER REH  # 
+
+FD30 ; 0634 0645 ;     SL      # ( ‎ﴰ‎ → ‎شم‎ ) ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM # 
+FCE9 ; 0634 0645 ;     SL      # ( ‎ﳩ‎ → ‎شم‎ ) ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM  # 
+FD28 ; 0634 0645 ;     SL      # ( ‎ﴨ‎ → ‎شم‎ ) ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM   # 
+FD0C ; 0634 0645 ;     SL      # ( ‎ﴌ‎ → ‎شم‎ ) ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM        # 
+
+FD6B ; 0634 0645 062C ;        SL      # ( ‎ﵫ‎ → ‎شمج‎ ) ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM, ARABIC LETTER JEEM # →‎شمخ‎→
+FD6A ; 0634 0645 062C ;        SL      # ( ‎ﵪ‎ → ‎شمج‎ ) ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM, ARABIC LETTER JEEM   # →‎شمخ‎→
+
+FD6D ; 0634 0645 0645 ;        SL      # ( ‎ﵭ‎ → ‎شمم‎ ) ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM, ARABIC LETTER MEEM # 
+FD6C ; 0634 0645 0645 ;        SL      # ( ‎ﵬ‎ → ‎شمم‎ ) ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM, ARABIC LETTER MEEM   # 
+
+FD32 ; 0634 0647 ;     SL      # ( ‎ﴲ‎ → ‎شه‎ ) ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HEH   # 
+FCEA ; 0634 0647 ;     SL      # ( ‎ﳪ‎ → ‎شه‎ ) ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HEH    # 
+
+FD19 ; 0634 0649 ;     SL      # ( ‎ﴙ‎ → ‎شى‎ ) ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER ALEF MAKSURA   # 
+FCFD ; 0634 0649 ;     SL      # ( ‎ﳽ‎ → ‎شى‎ ) ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER ALEF MAKSURA        # 
+FD1A ; 0634 0649 ;     SL      # ( ‎ﴚ‎ → ‎شى‎ ) ARABIC LIGATURE SHEEN WITH YEH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER ALEF MAKSURA    # →‎شي‎→
+FCFE ; 0634 0649 ;     SL      # ( ‎ﳾ‎ → ‎شى‎ ) ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER ALEF MAKSURA # →‎شي‎→
+
+FEBB ; 0635 ;  SL      # ( ‎ﺻ‎ → ‎ص‎ ) ARABIC LETTER SAD INITIAL FORM → ARABIC LETTER SAD       # 
+FEBC ; 0635 ;  SL      # ( ‎ﺼ‎ → ‎ص‎ ) ARABIC LETTER SAD MEDIAL FORM → ARABIC LETTER SAD        # 
+FEBA ; 0635 ;  SL      # ( ‎ﺺ‎ → ‎ص‎ ) ARABIC LETTER SAD FINAL FORM → ARABIC LETTER SAD # 
+FEB9 ; 0635 ;  SL      # ( ‎ﺹ‎ → ‎ص‎ ) ARABIC LETTER SAD ISOLATED FORM → ARABIC LETTER SAD      # 
+
+FCB2 ; 0635 062C ;     SL      # ( ‎ﲲ‎ → ‎صج‎ ) ARABIC LIGATURE SAD WITH KHAH INITIAL FORM → ARABIC LETTER SAD, ARABIC LETTER JEEM     # →‎صخ‎→
+
+FCB1 ; 0635 062D ;     SL      # ( ‎ﲱ‎ → ‎صح‎ ) ARABIC LIGATURE SAD WITH HAH INITIAL FORM → ARABIC LETTER SAD, ARABIC LETTER HAH       # 
+FC20 ; 0635 062D ;     SL      # ( ‎ﰠ‎ → ‎صح‎ ) ARABIC LIGATURE SAD WITH HAH ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER HAH      # 
+
+FD65 ; 0635 062D 062D ;        SL      # ( ‎ﵥ‎ → ‎صحح‎ ) ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM → ARABIC LETTER SAD, ARABIC LETTER HAH, ARABIC LETTER HAH # 
+FD64 ; 0635 062D 062D ;        SL      # ( ‎ﵤ‎ → ‎صحح‎ ) ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER HAH, ARABIC LETTER HAH   # 
+
+FDA9 ; 0635 062D 0649 ;        SL      # ( ‎ﶩ‎ → ‎صحى‎ ) ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA  # →‎صحي‎→
+
+FD2B ; 0635 0631 ;     SL      # ( ‎ﴫ‎ → ‎صر‎ ) ARABIC LIGATURE SAD WITH REH FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER REH # 
+FD0F ; 0635 0631 ;     SL      # ( ‎ﴏ‎ → ‎صر‎ ) ARABIC LIGATURE SAD WITH REH ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER REH      # 
+
+FDF5 ; 0635 0644 0639 0645 ;   SL      # ( ‎ﷵ‎ → ‎صلعم‎ ) ARABIC LIGATURE SALAM ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER LAM, ARABIC LETTER AIN, ARABIC LETTER MEEM  # 
+
+FDF9 ; 0635 0644 0649 ;        SL      # ( ‎ﷹ‎ → ‎صلى‎ ) ARABIC LIGATURE SALLA ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA       # 
+
+FDFA ; 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 0649 0647 0020 0648 0633 0644 0645 ;     SL      #* ( ‎ﷺ‎ → ‎صلى الله علىه وسلم‎ ) ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM → ARABIC LETTER SAD, ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA, SPACE, ARABIC LETTER ALEF, ARABIC LETTER LAM, ARABIC LETTER LAM, ARABIC LETTER HEH, SPACE, ARABIC LETTER AIN, ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HEH, SPACE, ARABIC LETTER WAW, ARABIC LETTER SEEN, ARABIC LETTER LAM, ARABIC LETTER MEEM      # →‎صلى الله عليه وسلم‎→
+
+FDF0 ; 0635 0644 06D2 ;        SL      # ( ‎ﷰ‎ → ‎صلے‎ ) ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER LAM, ARABIC LETTER YEH BARREE       # 
+
+FCB3 ; 0635 0645 ;     SL      # ( ‎ﲳ‎ → ‎صم‎ ) ARABIC LIGATURE SAD WITH MEEM INITIAL FORM → ARABIC LETTER SAD, ARABIC LETTER MEEM     # 
+FC21 ; 0635 0645 ;     SL      # ( ‎ﰡ‎ → ‎صم‎ ) ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER MEEM    # 
+
+FDC5 ; 0635 0645 0645 ;        SL      # ( ‎ﷅ‎ → ‎صمم‎ ) ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER SAD, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+FD66 ; 0635 0645 0645 ;        SL      # ( ‎ﵦ‎ → ‎صمم‎ ) ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER MEEM, ARABIC LETTER MEEM       # 
+
+FD21 ; 0635 0649 ;     SL      # ( ‎ﴡ‎ → ‎صى‎ ) ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER ALEF MAKSURA       # 
+FD05 ; 0635 0649 ;     SL      # ( ‎ﴅ‎ → ‎صى‎ ) ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER ALEF MAKSURA    # 
+FD22 ; 0635 0649 ;     SL      # ( ‎ﴢ‎ → ‎صى‎ ) ARABIC LIGATURE SAD WITH YEH FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER ALEF MAKSURA        # →‎صي‎→
+FD06 ; 0635 0649 ;     SL      # ( ‎ﴆ‎ → ‎صى‎ ) ARABIC LIGATURE SAD WITH YEH ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER ALEF MAKSURA     # →‎صي‎→
+
+FEBF ; 0636 ;  SL      # ( ‎ﺿ‎ → ‎ض‎ ) ARABIC LETTER DAD INITIAL FORM → ARABIC LETTER DAD       # 
+FEC0 ; 0636 ;  SL      # ( ‎ﻀ‎ → ‎ض‎ ) ARABIC LETTER DAD MEDIAL FORM → ARABIC LETTER DAD        # 
+FEBE ; 0636 ;  SL      # ( ‎ﺾ‎ → ‎ض‎ ) ARABIC LETTER DAD FINAL FORM → ARABIC LETTER DAD # 
+FEBD ; 0636 ;  SL      # ( ‎ﺽ‎ → ‎ض‎ ) ARABIC LETTER DAD ISOLATED FORM → ARABIC LETTER DAD      # 
+
+FCB4 ; 0636 062C ;     SL      # ( ‎ﲴ‎ → ‎ضج‎ ) ARABIC LIGATURE DAD WITH JEEM INITIAL FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM     # 
+FC22 ; 0636 062C ;     SL      # ( ‎ﰢ‎ → ‎ضج‎ ) ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM    # 
+FCB6 ; 0636 062C ;     SL      # ( ‎ﲶ‎ → ‎ضج‎ ) ARABIC LIGATURE DAD WITH KHAH INITIAL FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM     # →‎ضخ‎→→‎ﰤ‎→→‎ﰢ‎→
+FC24 ; 0636 062C ;     SL      # ( ‎ﰤ‎ → ‎ضج‎ ) ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM    # →‎ﰢ‎→
+
+FD70 ; 0636 062C 0645 ;        SL      # ( ‎ﵰ‎ → ‎ضجم‎ ) ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # →‎ضخم‎→
+FD6F ; 0636 062C 0645 ;        SL      # ( ‎ﵯ‎ → ‎ضجم‎ ) ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM, ARABIC LETTER MEEM       # →‎ضخم‎→
+
+FCB5 ; 0636 062D ;     SL      # ( ‎ﲵ‎ → ‎ضح‎ ) ARABIC LIGATURE DAD WITH HAH INITIAL FORM → ARABIC LETTER DAD, ARABIC LETTER HAH       # 
+FC23 ; 0636 062D ;     SL      # ( ‎ﰣ‎ → ‎ضح‎ ) ARABIC LIGATURE DAD WITH HAH ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER HAH      # 
+
+FD6E ; 0636 062D 0649 ;        SL      # ( ‎ﵮ‎ → ‎ضحى‎ ) ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA # 
+FDAB ; 0636 062D 0649 ;        SL      # ( ‎ﶫ‎ → ‎ضحى‎ ) ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA  # →‎ضحي‎→
+
+FD2C ; 0636 0631 ;     SL      # ( ‎ﴬ‎ → ‎ضر‎ ) ARABIC LIGATURE DAD WITH REH FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER REH # 
+FD10 ; 0636 0631 ;     SL      # ( ‎ﴐ‎ → ‎ضر‎ ) ARABIC LIGATURE DAD WITH REH ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER REH      # 
+
+FCB7 ; 0636 0645 ;     SL      # ( ‎ﲷ‎ → ‎ضم‎ ) ARABIC LIGATURE DAD WITH MEEM INITIAL FORM → ARABIC LETTER DAD, ARABIC LETTER MEEM     # 
+FC25 ; 0636 0645 ;     SL      # ( ‎ﰥ‎ → ‎ضم‎ ) ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER MEEM    # 
+
+FD23 ; 0636 0649 ;     SL      # ( ‎ﴣ‎ → ‎ضى‎ ) ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER ALEF MAKSURA       # 
+FD07 ; 0636 0649 ;     SL      # ( ‎ﴇ‎ → ‎ضى‎ ) ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER ALEF MAKSURA    # 
+FD24 ; 0636 0649 ;     SL      # ( ‎ﴤ‎ → ‎ضى‎ ) ARABIC LIGATURE DAD WITH YEH FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER ALEF MAKSURA        # →‎ضي‎→
+FD08 ; 0636 0649 ;     SL      # ( ‎ﴈ‎ → ‎ضى‎ ) ARABIC LIGATURE DAD WITH YEH ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER ALEF MAKSURA     # →‎ضي‎→
+
+FEC3 ; 0637 ;  SL      # ( ‎ﻃ‎ → ‎ط‎ ) ARABIC LETTER TAH INITIAL FORM → ARABIC LETTER TAH       # 
+FEC4 ; 0637 ;  SL      # ( ‎ﻄ‎ → ‎ط‎ ) ARABIC LETTER TAH MEDIAL FORM → ARABIC LETTER TAH        # 
+FEC2 ; 0637 ;  SL      # ( ‎ﻂ‎ → ‎ط‎ ) ARABIC LETTER TAH FINAL FORM → ARABIC LETTER TAH # 
+FEC1 ; 0637 ;  SL      # ( ‎ﻁ‎ → ‎ط‎ ) ARABIC LETTER TAH ISOLATED FORM → ARABIC LETTER TAH      # 
+
+FCB8 ; 0637 062D ;     SL      # ( ‎ﲸ‎ → ‎طح‎ ) ARABIC LIGATURE TAH WITH HAH INITIAL FORM → ARABIC LETTER TAH, ARABIC LETTER HAH       # 
+FC26 ; 0637 062D ;     SL      # ( ‎ﰦ‎ → ‎طح‎ ) ARABIC LIGATURE TAH WITH HAH ISOLATED FORM → ARABIC LETTER TAH, ARABIC LETTER HAH      # 
+
+FD33 ; 0637 0645 ;     SL      # ( ‎ﴳ‎ → ‎طم‎ ) ARABIC LIGATURE TAH WITH MEEM INITIAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM     # 
+FD3A ; 0637 0645 ;     SL      # ( ‎ﴺ‎ → ‎طم‎ ) ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM      # 
+FC27 ; 0637 0645 ;     SL      # ( ‎ﰧ‎ → ‎طم‎ ) ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM    # 
+
+FD72 ; 0637 0645 062D ;        SL      # ( ‎ﵲ‎ → ‎طمح‎ ) ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+FD71 ; 0637 0645 062D ;        SL      # ( ‎ﵱ‎ → ‎طمح‎ ) ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM, ARABIC LETTER HAH # 
+
+FD73 ; 0637 0645 0645 ;        SL      # ( ‎ﵳ‎ → ‎طمم‎ ) ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+
+FD74 ; 0637 0645 0649 ;        SL      # ( ‎ﵴ‎ → ‎طمى‎ ) ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎طمي‎→
+
+FD11 ; 0637 0649 ;     SL      # ( ‎ﴑ‎ → ‎طى‎ ) ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER TAH, ARABIC LETTER ALEF MAKSURA       # 
+FCF5 ; 0637 0649 ;     SL      # ( ‎ﳵ‎ → ‎طى‎ ) ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER TAH, ARABIC LETTER ALEF MAKSURA    # 
+FD12 ; 0637 0649 ;     SL      # ( ‎ﴒ‎ → ‎طى‎ ) ARABIC LIGATURE TAH WITH YEH FINAL FORM → ARABIC LETTER TAH, ARABIC LETTER ALEF MAKSURA        # →‎طي‎→
+FCF6 ; 0637 0649 ;     SL      # ( ‎ﳶ‎ → ‎طى‎ ) ARABIC LIGATURE TAH WITH YEH ISOLATED FORM → ARABIC LETTER TAH, ARABIC LETTER ALEF MAKSURA     # →‎طي‎→
+
+FEC7 ; 0638 ;  SL      # ( ‎ﻇ‎ → ‎ظ‎ ) ARABIC LETTER ZAH INITIAL FORM → ARABIC LETTER ZAH       # 
+FEC8 ; 0638 ;  SL      # ( ‎ﻈ‎ → ‎ظ‎ ) ARABIC LETTER ZAH MEDIAL FORM → ARABIC LETTER ZAH        # 
+FEC6 ; 0638 ;  SL      # ( ‎ﻆ‎ → ‎ظ‎ ) ARABIC LETTER ZAH FINAL FORM → ARABIC LETTER ZAH # 
+FEC5 ; 0638 ;  SL      # ( ‎ﻅ‎ → ‎ظ‎ ) ARABIC LETTER ZAH ISOLATED FORM → ARABIC LETTER ZAH      # 
+
+FCB9 ; 0638 0645 ;     SL      # ( ‎ﲹ‎ → ‎ظم‎ ) ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM → ARABIC LETTER ZAH, ARABIC LETTER MEEM     # 
+FD3B ; 0638 0645 ;     SL      # ( ‎ﴻ‎ → ‎ظم‎ ) ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM → ARABIC LETTER ZAH, ARABIC LETTER MEEM      # 
+FC28 ; 0638 0645 ;     SL      # ( ‎ﰨ‎ → ‎ظم‎ ) ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM → ARABIC LETTER ZAH, ARABIC LETTER MEEM    # 
+
+FECB ; 0639 ;  SL      # ( ‎ﻋ‎ → ‎ع‎ ) ARABIC LETTER AIN INITIAL FORM → ARABIC LETTER AIN       # 
+FECC ; 0639 ;  SL      # ( ‎ﻌ‎ → ‎ع‎ ) ARABIC LETTER AIN MEDIAL FORM → ARABIC LETTER AIN        # 
+FECA ; 0639 ;  SL      # ( ‎ﻊ‎ → ‎ع‎ ) ARABIC LETTER AIN FINAL FORM → ARABIC LETTER AIN # 
+FEC9 ; 0639 ;  SL      # ( ‎ﻉ‎ → ‎ع‎ ) ARABIC LETTER AIN ISOLATED FORM → ARABIC LETTER AIN      # 
+
+FCBA ; 0639 062C ;     SL      # ( ‎ﲺ‎ → ‎عج‎ ) ARABIC LIGATURE AIN WITH JEEM INITIAL FORM → ARABIC LETTER AIN, ARABIC LETTER JEEM     # 
+FC29 ; 0639 062C ;     SL      # ( ‎ﰩ‎ → ‎عج‎ ) ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM → ARABIC LETTER AIN, ARABIC LETTER JEEM    # 
+
+FDC4 ; 0639 062C 0645 ;        SL      # ( ‎ﷄ‎ → ‎عجم‎ ) ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM → ARABIC LETTER AIN, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # 
+FD75 ; 0639 062C 0645 ;        SL      # ( ‎ﵵ‎ → ‎عجم‎ ) ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER JEEM, ARABIC LETTER MEEM       # 
+
+FDF7 ; 0639 0644 0649 0647 ;   SL      # ( ‎ﷷ‎ → ‎علىه‎ ) ARABIC LIGATURE ALAYHE ISOLATED FORM → ARABIC LETTER AIN, ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HEH # →‎عليه‎→
+
+FCBB ; 0639 0645 ;     SL      # ( ‎ﲻ‎ → ‎عم‎ ) ARABIC LIGATURE AIN WITH MEEM INITIAL FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM     # 
+FC2A ; 0639 0645 ;     SL      # ( ‎ﰪ‎ → ‎عم‎ ) ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM    # 
+
+FD77 ; 0639 0645 0645 ;        SL      # ( ‎ﵷ‎ → ‎عمم‎ ) ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+FD76 ; 0639 0645 0645 ;        SL      # ( ‎ﵶ‎ → ‎عمم‎ ) ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM, ARABIC LETTER MEEM       # 
+
+FD78 ; 0639 0645 0649 ;        SL      # ( ‎ﵸ‎ → ‎عمى‎ ) ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA       # 
+FDB6 ; 0639 0645 0649 ;        SL      # ( ‎ﶶ‎ → ‎عمى‎ ) ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎عمي‎→
+
+FD13 ; 0639 0649 ;     SL      # ( ‎ﴓ‎ → ‎عى‎ ) ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER ALEF MAKSURA       # 
+FCF7 ; 0639 0649 ;     SL      # ( ‎ﳷ‎ → ‎عى‎ ) ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER AIN, ARABIC LETTER ALEF MAKSURA    # 
+FD14 ; 0639 0649 ;     SL      # ( ‎ﴔ‎ → ‎عى‎ ) ARABIC LIGATURE AIN WITH YEH FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER ALEF MAKSURA        # →‎عي‎→
+FCF8 ; 0639 0649 ;     SL      # ( ‎ﳸ‎ → ‎عى‎ ) ARABIC LIGATURE AIN WITH YEH ISOLATED FORM → ARABIC LETTER AIN, ARABIC LETTER ALEF MAKSURA     # →‎عي‎→
+
+FECF ; 063A ;  SL      # ( ‎ﻏ‎ → ‎غ‎ ) ARABIC LETTER GHAIN INITIAL FORM → ARABIC LETTER GHAIN   # 
+FED0 ; 063A ;  SL      # ( ‎ﻐ‎ → ‎غ‎ ) ARABIC LETTER GHAIN MEDIAL FORM → ARABIC LETTER GHAIN    # 
+FECE ; 063A ;  SL      # ( ‎ﻎ‎ → ‎غ‎ ) ARABIC LETTER GHAIN FINAL FORM → ARABIC LETTER GHAIN     # 
+FECD ; 063A ;  SL      # ( ‎ﻍ‎ → ‎غ‎ ) ARABIC LETTER GHAIN ISOLATED FORM → ARABIC LETTER GHAIN  # 
+
+FCBC ; 063A 062C ;     SL      # ( ‎ﲼ‎ → ‎غج‎ ) ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER JEEM # 
+FC2B ; 063A 062C ;     SL      # ( ‎ﰫ‎ → ‎غج‎ ) ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM → ARABIC LETTER GHAIN, ARABIC LETTER JEEM        # 
+
+FCBD ; 063A 0645 ;     SL      # ( ‎ﲽ‎ → ‎غم‎ ) ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER MEEM # 
+FC2C ; 063A 0645 ;     SL      # ( ‎ﰬ‎ → ‎غم‎ ) ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM → ARABIC LETTER GHAIN, ARABIC LETTER MEEM        # 
+
+FD79 ; 063A 0645 0645 ;        SL      # ( ‎ﵹ‎ → ‎غمم‎ ) ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER MEEM, ARABIC LETTER MEEM   # 
+
+FD7B ; 063A 0645 0649 ;        SL      # ( ‎ﵻ‎ → ‎غمى‎ ) ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA   # 
+FD7A ; 063A 0645 0649 ;        SL      # ( ‎ﵺ‎ → ‎غمى‎ ) ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA    # →‎غمي‎→
+
+FD15 ; 063A 0649 ;     SL      # ( ‎ﴕ‎ → ‎غى‎ ) ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER ALEF MAKSURA   # 
+FCF9 ; 063A 0649 ;     SL      # ( ‎ﳹ‎ → ‎غى‎ ) ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER GHAIN, ARABIC LETTER ALEF MAKSURA        # 
+FD16 ; 063A 0649 ;     SL      # ( ‎ﴖ‎ → ‎غى‎ ) ARABIC LIGATURE GHAIN WITH YEH FINAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER ALEF MAKSURA    # →‎غي‎→
+FCFA ; 063A 0649 ;     SL      # ( ‎ﳺ‎ → ‎غى‎ ) ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM → ARABIC LETTER GHAIN, ARABIC LETTER ALEF MAKSURA # →‎غي‎→
+
+FED3 ; 0641 ;  SL      # ( ‎ﻓ‎ → ‎ف‎ ) ARABIC LETTER FEH INITIAL FORM → ARABIC LETTER FEH       # 
+FED4 ; 0641 ;  SL      # ( ‎ﻔ‎ → ‎ف‎ ) ARABIC LETTER FEH MEDIAL FORM → ARABIC LETTER FEH        # 
+FED2 ; 0641 ;  SL      # ( ‎ﻒ‎ → ‎ف‎ ) ARABIC LETTER FEH FINAL FORM → ARABIC LETTER FEH # 
+FED1 ; 0641 ;  SL      # ( ‎ﻑ‎ → ‎ف‎ ) ARABIC LETTER FEH ISOLATED FORM → ARABIC LETTER FEH      # 
+
+FCBE ; 0641 062C ;     SL      # ( ‎ﲾ‎ → ‎فج‎ ) ARABIC LIGATURE FEH WITH JEEM INITIAL FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM     # 
+FC2D ; 0641 062C ;     SL      # ( ‎ﰭ‎ → ‎فج‎ ) ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM    # 
+FCC0 ; 0641 062C ;     SL      # ( ‎ﳀ‎ → ‎فج‎ ) ARABIC LIGATURE FEH WITH KHAH INITIAL FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM     # →‎فخ‎→→‎ﰯ‎→→‎ﰭ‎→
+FC2F ; 0641 062C ;     SL      # ( ‎ﰯ‎ → ‎فج‎ ) ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM    # →‎ﰭ‎→
+
+FD7D ; 0641 062C 0645 ;        SL      # ( ‎ﵽ‎ → ‎فجم‎ ) ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # →‎فخم‎→
+FD7C ; 0641 062C 0645 ;        SL      # ( ‎ﵼ‎ → ‎فجم‎ ) ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM       # →‎فخم‎→
+
+FCBF ; 0641 062D ;     SL      # ( ‎ﲿ‎ → ‎فح‎ ) ARABIC LIGATURE FEH WITH HAH INITIAL FORM → ARABIC LETTER FEH, ARABIC LETTER HAH       # 
+FC2E ; 0641 062D ;     SL      # ( ‎ﰮ‎ → ‎فح‎ ) ARABIC LIGATURE FEH WITH HAH ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER HAH      # 
+
+FCC1 ; 0641 0645 ;     SL      # ( ‎ﳁ‎ → ‎فم‎ ) ARABIC LIGATURE FEH WITH MEEM INITIAL FORM → ARABIC LETTER FEH, ARABIC LETTER MEEM     # 
+FC30 ; 0641 0645 ;     SL      # ( ‎ﰰ‎ → ‎فم‎ ) ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER MEEM    # 
+
+FDC1 ; 0641 0645 0649 ;        SL      # ( ‎ﷁ‎ → ‎فمى‎ ) ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER FEH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎فمي‎→
+
+FC7C ; 0641 0649 ;     SL      # ( ‎ﱼ‎ → ‎فى‎ ) ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER FEH, ARABIC LETTER ALEF MAKSURA       # 
+FC31 ; 0641 0649 ;     SL      # ( ‎ﰱ‎ → ‎فى‎ ) ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER ALEF MAKSURA    # 
+FC7D ; 0641 0649 ;     SL      # ( ‎ﱽ‎ → ‎فى‎ ) ARABIC LIGATURE FEH WITH YEH FINAL FORM → ARABIC LETTER FEH, ARABIC LETTER ALEF MAKSURA        # →‎في‎→
+FC32 ; 0641 0649 ;     SL      # ( ‎ﰲ‎ → ‎فى‎ ) ARABIC LIGATURE FEH WITH YEH ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER ALEF MAKSURA     # →‎في‎→
+
+FB6C ; 06A4 ;  SL      # ( ‎ﭬ‎ → ‎ڤ‎ ) ARABIC LETTER VEH INITIAL FORM → ARABIC LETTER VEH       # 
+FB6D ; 06A4 ;  SL      # ( ‎ﭭ‎ → ‎ڤ‎ ) ARABIC LETTER VEH MEDIAL FORM → ARABIC LETTER VEH        # 
+FB6B ; 06A4 ;  SL      # ( ‎ﭫ‎ → ‎ڤ‎ ) ARABIC LETTER VEH FINAL FORM → ARABIC LETTER VEH # 
+FB6A ; 06A4 ;  SL      # ( ‎ﭪ‎ → ‎ڤ‎ ) ARABIC LETTER VEH ISOLATED FORM → ARABIC LETTER VEH      # 
+
+FB70 ; 06A6 ;  SL      # ( ‎ﭰ‎ → ‎ڦ‎ ) ARABIC LETTER PEHEH INITIAL FORM → ARABIC LETTER PEHEH   # 
+FB71 ; 06A6 ;  SL      # ( ‎ﭱ‎ → ‎ڦ‎ ) ARABIC LETTER PEHEH MEDIAL FORM → ARABIC LETTER PEHEH    # 
+FB6F ; 06A6 ;  SL      # ( ‎ﭯ‎ → ‎ڦ‎ ) ARABIC LETTER PEHEH FINAL FORM → ARABIC LETTER PEHEH     # 
+FB6E ; 06A6 ;  SL      # ( ‎ﭮ‎ → ‎ڦ‎ ) ARABIC LETTER PEHEH ISOLATED FORM → ARABIC LETTER PEHEH  # 
+
+FED7 ; 0642 ;  SL      # ( ‎ﻗ‎ → ‎ق‎ ) ARABIC LETTER QAF INITIAL FORM → ARABIC LETTER QAF       # 
+FED8 ; 0642 ;  SL      # ( ‎ﻘ‎ → ‎ق‎ ) ARABIC LETTER QAF MEDIAL FORM → ARABIC LETTER QAF        # 
+FED6 ; 0642 ;  SL      # ( ‎ﻖ‎ → ‎ق‎ ) ARABIC LETTER QAF FINAL FORM → ARABIC LETTER QAF # 
+FED5 ; 0642 ;  SL      # ( ‎ﻕ‎ → ‎ق‎ ) ARABIC LETTER QAF ISOLATED FORM → ARABIC LETTER QAF      # 
+
+FCC2 ; 0642 062D ;     SL      # ( ‎ﳂ‎ → ‎قح‎ ) ARABIC LIGATURE QAF WITH HAH INITIAL FORM → ARABIC LETTER QAF, ARABIC LETTER HAH       # 
+FC33 ; 0642 062D ;     SL      # ( ‎ﰳ‎ → ‎قح‎ ) ARABIC LIGATURE QAF WITH HAH ISOLATED FORM → ARABIC LETTER QAF, ARABIC LETTER HAH      # 
+
+FDF1 ; 0642 0644 06D2 ;        SL      # ( ‎ﷱ‎ → ‎قلے‎ ) ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM → ARABIC LETTER QAF, ARABIC LETTER LAM, ARABIC LETTER YEH BARREE        # 
+
+FCC3 ; 0642 0645 ;     SL      # ( ‎ﳃ‎ → ‎قم‎ ) ARABIC LIGATURE QAF WITH MEEM INITIAL FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM     # 
+FC34 ; 0642 0645 ;     SL      # ( ‎ﰴ‎ → ‎قم‎ ) ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM    # 
+
+FDB4 ; 0642 0645 062D ;        SL      # ( ‎ﶴ‎ → ‎قمح‎ ) ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+FD7E ; 0642 0645 062D ;        SL      # ( ‎ﵾ‎ → ‎قمح‎ ) ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM, ARABIC LETTER HAH # 
+
+FD7F ; 0642 0645 0645 ;        SL      # ( ‎ﵿ‎ → ‎قمم‎ ) ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM, ARABIC LETTER MEEM       # 
+
+FDB2 ; 0642 0645 0649 ;        SL      # ( ‎ﶲ‎ → ‎قمى‎ ) ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎قمي‎→
+
+FC7E ; 0642 0649 ;     SL      # ( ‎ﱾ‎ → ‎قى‎ ) ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER QAF, ARABIC LETTER ALEF MAKSURA       # 
+FC35 ; 0642 0649 ;     SL      # ( ‎ﰵ‎ → ‎قى‎ ) ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER QAF, ARABIC LETTER ALEF MAKSURA    # 
+FC7F ; 0642 0649 ;     SL      # ( ‎ﱿ‎ → ‎قى‎ ) ARABIC LIGATURE QAF WITH YEH FINAL FORM → ARABIC LETTER QAF, ARABIC LETTER ALEF MAKSURA        # →‎قي‎→
+FC36 ; 0642 0649 ;     SL      # ( ‎ﰶ‎ → ‎قى‎ ) ARABIC LIGATURE QAF WITH YEH ISOLATED FORM → ARABIC LETTER QAF, ARABIC LETTER ALEF MAKSURA     # →‎قي‎→
+
+FEDB ; 0643 ;  SL      # ( ‎ﻛ‎ → ‎ك‎ ) ARABIC LETTER KAF INITIAL FORM → ARABIC LETTER KAF       # 
+FEDC ; 0643 ;  SL      # ( ‎ﻜ‎ → ‎ك‎ ) ARABIC LETTER KAF MEDIAL FORM → ARABIC LETTER KAF        # 
+FEDA ; 0643 ;  SL      # ( ‎ﻚ‎ → ‎ك‎ ) ARABIC LETTER KAF FINAL FORM → ARABIC LETTER KAF # 
+FED9 ; 0643 ;  SL      # ( ‎ﻙ‎ → ‎ك‎ ) ARABIC LETTER KAF ISOLATED FORM → ARABIC LETTER KAF      # 
+06A9 ; 0643 ;  SL      # ( ‎ک‎ → ‎ك‎ ) ARABIC LETTER KEHEH → ARABIC LETTER KAF   # 
+FB90 ; 0643 ;  SL      # ( ‎ﮐ‎ → ‎ك‎ ) ARABIC LETTER KEHEH INITIAL FORM → ARABIC LETTER KAF     # →‎ﻜ‎→
+FB91 ; 0643 ;  SL      # ( ‎ﮑ‎ → ‎ك‎ ) ARABIC LETTER KEHEH MEDIAL FORM → ARABIC LETTER KAF      # →‎ﻜ‎→
+FB8F ; 0643 ;  SL      # ( ‎ﮏ‎ → ‎ك‎ ) ARABIC LETTER KEHEH FINAL FORM → ARABIC LETTER KAF       # →‎ﻚ‎→
+FB8E ; 0643 ;  SL      # ( ‎ﮎ‎ → ‎ك‎ ) ARABIC LETTER KEHEH ISOLATED FORM → ARABIC LETTER KAF    # →‎ک‎→
+
+FC80 ; 0643 0627 ;     SL      # ( ‎ﲀ‎ → ‎كا‎ ) ARABIC LIGATURE KAF WITH ALEF FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF       # 
+FC37 ; 0643 0627 ;     SL      # ( ‎ﰷ‎ → ‎كا‎ ) ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF    # 
+
+FCC4 ; 0643 062C ;     SL      # ( ‎ﳄ‎ → ‎كج‎ ) ARABIC LIGATURE KAF WITH JEEM INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER JEEM     # 
+FC38 ; 0643 062C ;     SL      # ( ‎ﰸ‎ → ‎كج‎ ) ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER JEEM    # 
+FCC6 ; 0643 062C ;     SL      # ( ‎ﳆ‎ → ‎كج‎ ) ARABIC LIGATURE KAF WITH KHAH INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER JEEM     # →‎كخ‎→→‎ﰺ‎→→‎ﰸ‎→
+FC3A ; 0643 062C ;     SL      # ( ‎ﰺ‎ → ‎كج‎ ) ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER JEEM    # →‎ﰸ‎→
+
+FCC5 ; 0643 062D ;     SL      # ( ‎ﳅ‎ → ‎كح‎ ) ARABIC LIGATURE KAF WITH HAH INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER HAH       # 
+FC39 ; 0643 062D ;     SL      # ( ‎ﰹ‎ → ‎كح‎ ) ARABIC LIGATURE KAF WITH HAH ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER HAH      # 
+
+FCC7 ; 0643 0644 ;     SL      # ( ‎ﳇ‎ → ‎كل‎ ) ARABIC LIGATURE KAF WITH LAM INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER LAM       # 
+FCEB ; 0643 0644 ;     SL      # ( ‎ﳫ‎ → ‎كل‎ ) ARABIC LIGATURE KAF WITH LAM MEDIAL FORM → ARABIC LETTER KAF, ARABIC LETTER LAM        # 
+FC81 ; 0643 0644 ;     SL      # ( ‎ﲁ‎ → ‎كل‎ ) ARABIC LIGATURE KAF WITH LAM FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER LAM # 
+FC3B ; 0643 0644 ;     SL      # ( ‎ﰻ‎ → ‎كل‎ ) ARABIC LIGATURE KAF WITH LAM ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER LAM      # 
+
+FCC8 ; 0643 0645 ;     SL      # ( ‎ﳈ‎ → ‎كم‎ ) ARABIC LIGATURE KAF WITH MEEM INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM     # 
+FCEC ; 0643 0645 ;     SL      # ( ‎ﳬ‎ → ‎كم‎ ) ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM      # 
+FC82 ; 0643 0645 ;     SL      # ( ‎ﲂ‎ → ‎كم‎ ) ARABIC LIGATURE KAF WITH MEEM FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM       # 
+FC3C ; 0643 0645 ;     SL      # ( ‎ﰼ‎ → ‎كم‎ ) ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM    # 
+
+FDC3 ; 0643 0645 0645 ;        SL      # ( ‎ﷃ‎ → ‎كمم‎ ) ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+FDBB ; 0643 0645 0645 ;        SL      # ( ‎ﶻ‎ → ‎كمم‎ ) ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM, ARABIC LETTER MEEM       # 
+
+FDB7 ; 0643 0645 0649 ;        SL      # ( ‎ﶷ‎ → ‎كمى‎ ) ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎كمي‎→
+
+FC83 ; 0643 0649 ;     SL      # ( ‎ﲃ‎ → ‎كى‎ ) ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF MAKSURA       # 
+FC3D ; 0643 0649 ;     SL      # ( ‎ﰽ‎ → ‎كى‎ ) ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF MAKSURA    # 
+FC84 ; 0643 0649 ;     SL      # ( ‎ﲄ‎ → ‎كى‎ ) ARABIC LIGATURE KAF WITH YEH FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF MAKSURA        # →‎كي‎→
+FC3E ; 0643 0649 ;     SL      # ( ‎ﰾ‎ → ‎كى‎ ) ARABIC LIGATURE KAF WITH YEH ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF MAKSURA     # →‎كي‎→
+
+FBD5 ; 06AD ;  SL      # ( ‎ﯕ‎ → ‎ڭ‎ ) ARABIC LETTER NG INITIAL FORM → ARABIC LETTER NG # 
+FBD6 ; 06AD ;  SL      # ( ‎ﯖ‎ → ‎ڭ‎ ) ARABIC LETTER NG MEDIAL FORM → ARABIC LETTER NG  # 
+FBD4 ; 06AD ;  SL      # ( ‎ﯔ‎ → ‎ڭ‎ ) ARABIC LETTER NG FINAL FORM → ARABIC LETTER NG   # 
+FBD3 ; 06AD ;  SL      # ( ‎ﯓ‎ → ‎ڭ‎ ) ARABIC LETTER NG ISOLATED FORM → ARABIC LETTER NG        # 
+
+FB94 ; 06AF ;  SL      # ( ‎ﮔ‎ → ‎گ‎ ) ARABIC LETTER GAF INITIAL FORM → ARABIC LETTER GAF       # 
+FB95 ; 06AF ;  SL      # ( ‎ﮕ‎ → ‎گ‎ ) ARABIC LETTER GAF MEDIAL FORM → ARABIC LETTER GAF        # 
+FB93 ; 06AF ;  SL      # ( ‎ﮓ‎ → ‎گ‎ ) ARABIC LETTER GAF FINAL FORM → ARABIC LETTER GAF # 
+FB92 ; 06AF ;  SL      # ( ‎ﮒ‎ → ‎گ‎ ) ARABIC LETTER GAF ISOLATED FORM → ARABIC LETTER GAF      # 
+
+FB9C ; 06B1 ;  SL      # ( ‎ﮜ‎ → ‎ڱ‎ ) ARABIC LETTER NGOEH INITIAL FORM → ARABIC LETTER NGOEH   # 
+FB9D ; 06B1 ;  SL      # ( ‎ﮝ‎ → ‎ڱ‎ ) ARABIC LETTER NGOEH MEDIAL FORM → ARABIC LETTER NGOEH    # 
+FB9B ; 06B1 ;  SL      # ( ‎ﮛ‎ → ‎ڱ‎ ) ARABIC LETTER NGOEH FINAL FORM → ARABIC LETTER NGOEH     # 
+FB9A ; 06B1 ;  SL      # ( ‎ﮚ‎ → ‎ڱ‎ ) ARABIC LETTER NGOEH ISOLATED FORM → ARABIC LETTER NGOEH  # 
+
+FB98 ; 06B3 ;  SL      # ( ‎ﮘ‎ → ‎ڳ‎ ) ARABIC LETTER GUEH INITIAL FORM → ARABIC LETTER GUEH     # 
+FB99 ; 06B3 ;  SL      # ( ‎ﮙ‎ → ‎ڳ‎ ) ARABIC LETTER GUEH MEDIAL FORM → ARABIC LETTER GUEH      # 
+FB97 ; 06B3 ;  SL      # ( ‎ﮗ‎ → ‎ڳ‎ ) ARABIC LETTER GUEH FINAL FORM → ARABIC LETTER GUEH       # 
+FB96 ; 06B3 ;  SL      # ( ‎ﮖ‎ → ‎ڳ‎ ) ARABIC LETTER GUEH ISOLATED FORM → ARABIC LETTER GUEH    # 
+
+FEDF ; 0644 ;  SL      # ( ‎ﻟ‎ → ‎ل‎ ) ARABIC LETTER LAM INITIAL FORM → ARABIC LETTER LAM       # 
+FEE0 ; 0644 ;  SL      # ( ‎ﻠ‎ → ‎ل‎ ) ARABIC LETTER LAM MEDIAL FORM → ARABIC LETTER LAM        # 
+FEDE ; 0644 ;  SL      # ( ‎ﻞ‎ → ‎ل‎ ) ARABIC LETTER LAM FINAL FORM → ARABIC LETTER LAM # 
+FEDD ; 0644 ;  SL      # ( ‎ﻝ‎ → ‎ل‎ ) ARABIC LETTER LAM ISOLATED FORM → ARABIC LETTER LAM      # 
+
+FEF6 ; 0644 0622 ;     SL      # ( ‎ﻶ‎ → ‎لآ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF WITH MADDA ABOVE     # 
+FEF5 ; 0644 0622 ;     SL      # ( ‎ﻵ‎ → ‎لآ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF WITH MADDA ABOVE  # 
+
+FEFA ; 0644 0625 ;     SL      # ( ‎ﻺ‎ → ‎لإ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF WITH HAMZA BELOW     # 
+FEF9 ; 0644 0625 ;     SL      # ( ‎ﻹ‎ → ‎لإ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF WITH HAMZA BELOW  # 
+
+FEFC ; 0644 0627 ;     SL      # ( ‎ﻼ‎ → ‎لا‎ ) ARABIC LIGATURE LAM WITH ALEF FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF       # 
+FEFB ; 0644 0627 ;     SL      # ( ‎ﻻ‎ → ‎لا‎ ) ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF    # 
+
+FEF8 ; 0644 0627 0674 ;        SL      # ( ‎ﻸ‎ → ‎لاٴ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA  # →‎لأ‎→
+FEF7 ; 0644 0627 0674 ;        SL      # ( ‎ﻷ‎ → ‎لاٴ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA       # →‎لأ‎→
+
+FCC9 ; 0644 062C ;     SL      # ( ‎ﳉ‎ → ‎لج‎ ) ARABIC LIGATURE LAM WITH JEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM     # 
+FC3F ; 0644 062C ;     SL      # ( ‎ﰿ‎ → ‎لج‎ ) ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM    # 
+FCCB ; 0644 062C ;     SL      # ( ‎ﳋ‎ → ‎لج‎ ) ARABIC LIGATURE LAM WITH KHAH INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM     # →‎لخ‎→→‎ﱁ‎→→‎ﰿ‎→
+FC41 ; 0644 062C ;     SL      # ( ‎ﱁ‎ → ‎لج‎ ) ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM    # →‎ﰿ‎→
+
+FD83 ; 0644 062C 062C ;        SL      # ( ‎ﶃ‎ → ‎لجج‎ ) ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER JEEM     # 
+FD84 ; 0644 062C 062C ;        SL      # ( ‎ﶄ‎ → ‎لجج‎ ) ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER JEEM       # 
+
+FDBA ; 0644 062C 0645 ;        SL      # ( ‎ﶺ‎ → ‎لجم‎ ) ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # 
+FDBC ; 0644 062C 0645 ;        SL      # ( ‎ﶼ‎ → ‎لجم‎ ) ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER MEEM       # 
+FD86 ; 0644 062C 0645 ;        SL      # ( ‎ﶆ‎ → ‎لجم‎ ) ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # →‎لخم‎→
+FD85 ; 0644 062C 0645 ;        SL      # ( ‎ﶅ‎ → ‎لجم‎ ) ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER MEEM       # →‎لخم‎→
+
+FDAC ; 0644 062C 0649 ;        SL      # ( ‎ﶬ‎ → ‎لجى‎ ) ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA        # →‎لجي‎→
+
+FCCA ; 0644 062D ;     SL      # ( ‎ﳊ‎ → ‎لح‎ ) ARABIC LIGATURE LAM WITH HAH INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER HAH       # 
+FC40 ; 0644 062D ;     SL      # ( ‎ﱀ‎ → ‎لح‎ ) ARABIC LIGATURE LAM WITH HAH ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER HAH      # 
+
+FDB5 ; 0644 062D 0645 ;        SL      # ( ‎ﶵ‎ → ‎لحم‎ ) ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER HAH, ARABIC LETTER MEEM       # 
+FD80 ; 0644 062D 0645 ;        SL      # ( ‎ﶀ‎ → ‎لحم‎ ) ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER HAH, ARABIC LETTER MEEM # 
+
+FD82 ; 0644 062D 0649 ;        SL      # ( ‎ﶂ‎ → ‎لحى‎ ) ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA # 
+FD81 ; 0644 062D 0649 ;        SL      # ( ‎ﶁ‎ → ‎لحى‎ ) ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA  # →‎لحي‎→
+
+FCCC ; 0644 0645 ;     SL      # ( ‎ﳌ‎ → ‎لم‎ ) ARABIC LIGATURE LAM WITH MEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM     # 
+FCED ; 0644 0645 ;     SL      # ( ‎ﳭ‎ → ‎لم‎ ) ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM      # 
+FC85 ; 0644 0645 ;     SL      # ( ‎ﲅ‎ → ‎لم‎ ) ARABIC LIGATURE LAM WITH MEEM FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM       # 
+FC42 ; 0644 0645 ;     SL      # ( ‎ﱂ‎ → ‎لم‎ ) ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM    # 
+
+FD88 ; 0644 0645 062D ;        SL      # ( ‎ﶈ‎ → ‎لمح‎ ) ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+FD87 ; 0644 0645 062D ;        SL      # ( ‎ﶇ‎ → ‎لمح‎ ) ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM, ARABIC LETTER HAH # 
+
+FDAD ; 0644 0645 0649 ;        SL      # ( ‎ﶭ‎ → ‎لمى‎ ) ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎لمي‎→
+
+FCCD ; 0644 0647 ;     SL      # ( ‎ﳍ‎ → ‎له‎ ) ARABIC LIGATURE LAM WITH HEH INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER HEH       # 
+
+FC86 ; 0644 0649 ;     SL      # ( ‎ﲆ‎ → ‎لى‎ ) ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA       # 
+FC43 ; 0644 0649 ;     SL      # ( ‎ﱃ‎ → ‎لى‎ ) ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA    # 
+FC87 ; 0644 0649 ;     SL      # ( ‎ﲇ‎ → ‎لى‎ ) ARABIC LIGATURE LAM WITH YEH FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA        # →‎لي‎→
+FC44 ; 0644 0649 ;     SL      # ( ‎ﱄ‎ → ‎لى‎ ) ARABIC LIGATURE LAM WITH YEH ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA     # →‎لي‎→
+
+FEE3 ; 0645 ;  SL      # ( ‎ﻣ‎ → ‎م‎ ) ARABIC LETTER MEEM INITIAL FORM → ARABIC LETTER MEEM     # 
+FEE4 ; 0645 ;  SL      # ( ‎ﻤ‎ → ‎م‎ ) ARABIC LETTER MEEM MEDIAL FORM → ARABIC LETTER MEEM      # 
+FEE2 ; 0645 ;  SL      # ( ‎ﻢ‎ → ‎م‎ ) ARABIC LETTER MEEM FINAL FORM → ARABIC LETTER MEEM       # 
+FEE1 ; 0645 ;  SL      # ( ‎ﻡ‎ → ‎م‎ ) ARABIC LETTER MEEM ISOLATED FORM → ARABIC LETTER MEEM    # 
+
+FC88 ; 0645 0627 ;     SL      # ( ‎ﲈ‎ → ‎ما‎ ) ARABIC LIGATURE MEEM WITH ALEF FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER ALEF     # 
+
+FCCE ; 0645 062C ;     SL      # ( ‎ﳎ‎ → ‎مج‎ ) ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM   # 
+FC45 ; 0645 062C ;     SL      # ( ‎ﱅ‎ → ‎مج‎ ) ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM  # 
+FCD0 ; 0645 062C ;     SL      # ( ‎ﳐ‎ → ‎مج‎ ) ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM   # →‎مخ‎→→‎ﱇ‎→→‎ﱅ‎→
+FC47 ; 0645 062C ;     SL      # ( ‎ﱇ‎ → ‎مج‎ ) ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM  # →‎ﱅ‎→
+
+FD92 ; 0645 062C 062C ;        SL      # ( ‎ﶒ‎ → ‎مجج‎ ) ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER JEEM   # →‎مجخ‎→
+FD8E ; 0645 062C 062C ;        SL      # ( ‎ﶎ‎ → ‎مجج‎ ) ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER JEEM   # →‎مخج‎→
+
+FD8C ; 0645 062C 062D ;        SL      # ( ‎ﶌ‎ → ‎مجح‎ ) ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER HAH     # 
+
+FD8D ; 0645 062C 0645 ;        SL      # ( ‎ﶍ‎ → ‎مجم‎ ) ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER MEEM   # 
+FD8F ; 0645 062C 0645 ;        SL      # ( ‎ﶏ‎ → ‎مجم‎ ) ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER MEEM   # →‎مخم‎→
+
+FDC0 ; 0645 062C 0649 ;        SL      # ( ‎ﷀ‎ → ‎مجى‎ ) ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎مجي‎→
+FDB9 ; 0645 062C 0649 ;        SL      # ( ‎ﶹ‎ → ‎مجى‎ ) ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎مخي‎→
+
+FCCF ; 0645 062D ;     SL      # ( ‎ﳏ‎ → ‎مح‎ ) ARABIC LIGATURE MEEM WITH HAH INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH     # 
+FC46 ; 0645 062D ;     SL      # ( ‎ﱆ‎ → ‎مح‎ ) ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH    # 
+
+FD89 ; 0645 062D 062C ;        SL      # ( ‎ﶉ‎ → ‎محج‎ ) ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH, ARABIC LETTER JEEM     # 
+
+FD8A ; 0645 062D 0645 ;        SL      # ( ‎ﶊ‎ → ‎محم‎ ) ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH, ARABIC LETTER MEEM     # 
+
+FDF4 ; 0645 062D 0645 062F ;   SL      # ( ‎ﷴ‎ → ‎محمد‎ ) ARABIC LIGATURE MOHAMMAD ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH, ARABIC LETTER MEEM, ARABIC LETTER DAL      # 
+
+FD8B ; 0645 062D 0649 ;        SL      # ( ‎ﶋ‎ → ‎محى‎ ) ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA        # →‎محي‎→
+
+FCD1 ; 0645 0645 ;     SL      # ( ‎ﳑ‎ → ‎مم‎ ) ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER MEEM   # 
+FC89 ; 0645 0645 ;     SL      # ( ‎ﲉ‎ → ‎مم‎ ) ARABIC LIGATURE MEEM WITH MEEM FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+FC48 ; 0645 0645 ;     SL      # ( ‎ﱈ‎ → ‎مم‎ ) ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER MEEM  # 
+
+FDB1 ; 0645 0645 0649 ;        SL      # ( ‎ﶱ‎ → ‎ممى‎ ) ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA      # →‎ممي‎→
+
+FC49 ; 0645 0649 ;     SL      # ( ‎ﱉ‎ → ‎مى‎ ) ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA  # 
+FC4A ; 0645 0649 ;     SL      # ( ‎ﱊ‎ → ‎مى‎ ) ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA   # →‎مي‎→
+
+FB9F ; 06BA ;  SL      # ( ‎ﮟ‎ → ‎ں‎ ) ARABIC LETTER NOON GHUNNA FINAL FORM → ARABIC LETTER NOON GHUNNA # 
+FB9E ; 06BA ;  SL      # ( ‎ﮞ‎ → ‎ں‎ ) ARABIC LETTER NOON GHUNNA ISOLATED FORM → ARABIC LETTER NOON GHUNNA      # 
+
+FEEB ; 0647 ;  SL      # ( ‎ﻫ‎ → ‎ه‎ ) ARABIC LETTER HEH INITIAL FORM → ARABIC LETTER HEH       # 
+FEEC ; 0647 ;  SL      # ( ‎ﻬ‎ → ‎ه‎ ) ARABIC LETTER HEH MEDIAL FORM → ARABIC LETTER HEH        # 
+FEEA ; 0647 ;  SL      # ( ‎ﻪ‎ → ‎ه‎ ) ARABIC LETTER HEH FINAL FORM → ARABIC LETTER HEH # 
+FEE9 ; 0647 ;  SL      # ( ‎ﻩ‎ → ‎ه‎ ) ARABIC LETTER HEH ISOLATED FORM → ARABIC LETTER HEH      # 
+06BE ; 0647 ;  SL      # ( ‎ھ‎ → ‎ه‎ ) ARABIC LETTER HEH DOACHASHMEE → ARABIC LETTER HEH # 
+FBAC ; 0647 ;  SL      # ( ‎ﮬ‎ → ‎ه‎ ) ARABIC LETTER HEH DOACHASHMEE INITIAL FORM → ARABIC LETTER HEH   # →‎ﻫ‎→
+FBAD ; 0647 ;  SL      # ( ‎ﮭ‎ → ‎ه‎ ) ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM → ARABIC LETTER HEH    # →‎ﻬ‎→
+FBAB ; 0647 ;  SL      # ( ‎ﮫ‎ → ‎ه‎ ) ARABIC LETTER HEH DOACHASHMEE FINAL FORM → ARABIC LETTER HEH     # →‎ﻬ‎→
+FBAA ; 0647 ;  SL      # ( ‎ﮪ‎ → ‎ه‎ ) ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM → ARABIC LETTER HEH  # 
+06C1 ; 0647 ;  SL      # ( ‎ہ‎ → ‎ه‎ ) ARABIC LETTER HEH GOAL → ARABIC LETTER HEH        # →‎ﮦ‎→
+FBA8 ; 0647 ;  SL      # ( ‎ﮨ‎ → ‎ه‎ ) ARABIC LETTER HEH GOAL INITIAL FORM → ARABIC LETTER HEH  # →‎ہ‎→→‎ﮦ‎→
+FBA9 ; 0647 ;  SL      # ( ‎ﮩ‎ → ‎ه‎ ) ARABIC LETTER HEH GOAL MEDIAL FORM → ARABIC LETTER HEH   # →‎ہ‎→→‎ﮦ‎→
+FBA7 ; 0647 ;  SL      # ( ‎ﮧ‎ → ‎ه‎ ) ARABIC LETTER HEH GOAL FINAL FORM → ARABIC LETTER HEH    # →‎ہ‎→→‎ﮦ‎→
+FBA6 ; 0647 ;  SL      # ( ‎ﮦ‎ → ‎ه‎ ) ARABIC LETTER HEH GOAL ISOLATED FORM → ARABIC LETTER HEH # 
+06D5 ; 0647 ;  SL      # ( ‎ە‎ → ‎ه‎ ) ARABIC LETTER AE → ARABIC LETTER HEH      # 
+
+FCD9 ; 0647 0670 ;     SL      # ( ‎ﳙ‎ → ‎هٰ‎ ) ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM → ARABIC LETTER HEH, ARABIC LETTER SUPERSCRIPT ALEF     # 
+
+FCD7 ; 0647 062C ;     SL      # ( ‎ﳗ‎ → ‎هج‎ ) ARABIC LIGATURE HEH WITH JEEM INITIAL FORM → ARABIC LETTER HEH, ARABIC LETTER JEEM     # 
+FC51 ; 0647 062C ;     SL      # ( ‎ﱑ‎ → ‎هج‎ ) ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM → ARABIC LETTER HEH, ARABIC LETTER JEEM    # 
+
+FCD8 ; 0647 0645 ;     SL      # ( ‎ﳘ‎ → ‎هم‎ ) ARABIC LIGATURE HEH WITH MEEM INITIAL FORM → ARABIC LETTER HEH, ARABIC LETTER MEEM     # 
+FC52 ; 0647 0645 ;     SL      # ( ‎ﱒ‎ → ‎هم‎ ) ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM → ARABIC LETTER HEH, ARABIC LETTER MEEM    # 
+
+FD93 ; 0647 0645 062C ;        SL      # ( ‎ﶓ‎ → ‎همج‎ ) ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM → ARABIC LETTER HEH, ARABIC LETTER MEEM, ARABIC LETTER JEEM     # 
+
+FD94 ; 0647 0645 0645 ;        SL      # ( ‎ﶔ‎ → ‎همم‎ ) ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER HEH, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+
+FC53 ; 0647 0649 ;     SL      # ( ‎ﱓ‎ → ‎هى‎ ) ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER HEH, ARABIC LETTER ALEF MAKSURA    # 
+FC54 ; 0647 0649 ;     SL      # ( ‎ﱔ‎ → ‎هى‎ ) ARABIC LIGATURE HEH WITH YEH ISOLATED FORM → ARABIC LETTER HEH, ARABIC LETTER ALEF MAKSURA     # →‎هي‎→
+
+06C2 ; 06C0 ;  SL      # ( ‎ۂ‎ → ‎ۀ‎ ) ARABIC LETTER HEH GOAL WITH HAMZA ABOVE → ARABIC LETTER HEH WITH YEH ABOVE        # →‎ﮤ‎→
+FBA5 ; 06C0 ;  SL      # ( ‎ﮥ‎ → ‎ۀ‎ ) ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM → ARABIC LETTER HEH WITH YEH ABOVE   # 
+FBA4 ; 06C0 ;  SL      # ( ‎ﮤ‎ → ‎ۀ‎ ) ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM → ARABIC LETTER HEH WITH YEH ABOVE        # 
+
+FEEE ; 0648 ;  SL      # ( ‎ﻮ‎ → ‎و‎ ) ARABIC LETTER WAW FINAL FORM → ARABIC LETTER WAW # 
+FEED ; 0648 ;  SL      # ( ‎ﻭ‎ → ‎و‎ ) ARABIC LETTER WAW ISOLATED FORM → ARABIC LETTER WAW      # 
+
+0624 ; 0648 0674 ;     SL      # ( ‎ؤ‎ → ‎وٴ‎ ) ARABIC LETTER WAW WITH HAMZA ABOVE → ARABIC LETTER WAW, ARABIC LETTER HIGH HAMZA        # →‎ٶ‎→
+FE86 ; 0648 0674 ;     SL      # ( ‎ﺆ‎ → ‎وٴ‎ ) ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM → ARABIC LETTER WAW, ARABIC LETTER HIGH HAMZA    # →‎ٶ‎→
+FE85 ; 0648 0674 ;     SL      # ( ‎ﺅ‎ → ‎وٴ‎ ) ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER WAW, ARABIC LETTER HIGH HAMZA # →‎ٶ‎→
+0676 ; 0648 0674 ;     SL      # ( ‎ٶ‎ → ‎وٴ‎ ) ARABIC LETTER HIGH HAMZA WAW → ARABIC LETTER WAW, ARABIC LETTER HIGH HAMZA      # 
+
+FDF8 ; 0648 0633 0644 0645 ;   SL      # ( ‎ﷸ‎ → ‎وسلم‎ ) ARABIC LIGATURE WASALLAM ISOLATED FORM → ARABIC LETTER WAW, ARABIC LETTER SEEN, ARABIC LETTER LAM, ARABIC LETTER MEEM      # 
+
+FBE1 ; 06C5 ;  SL      # ( ‎ﯡ‎ → ‎ۅ‎ ) ARABIC LETTER KIRGHIZ OE FINAL FORM → ARABIC LETTER KIRGHIZ OE   # 
+FBE0 ; 06C5 ;  SL      # ( ‎ﯠ‎ → ‎ۅ‎ ) ARABIC LETTER KIRGHIZ OE ISOLATED FORM → ARABIC LETTER KIRGHIZ OE        # 
+
+FBDA ; 06C6 ;  SL      # ( ‎ﯚ‎ → ‎ۆ‎ ) ARABIC LETTER OE FINAL FORM → ARABIC LETTER OE   # 
+FBD9 ; 06C6 ;  SL      # ( ‎ﯙ‎ → ‎ۆ‎ ) ARABIC LETTER OE ISOLATED FORM → ARABIC LETTER OE        # 
+
+FBD8 ; 06C7 ;  SL      # ( ‎ﯘ‎ → ‎ۇ‎ ) ARABIC LETTER U FINAL FORM → ARABIC LETTER U     # 
+FBD7 ; 06C7 ;  SL      # ( ‎ﯗ‎ → ‎ۇ‎ ) ARABIC LETTER U ISOLATED FORM → ARABIC LETTER U  # 
+
+0677 ; 06C7 0674 ;     SL      # ( ‎ٷ‎ → ‎ۇٴ‎ ) ARABIC LETTER U WITH HAMZA ABOVE → ARABIC LETTER U, ARABIC LETTER HIGH HAMZA    # 
+FBDD ; 06C7 0674 ;     SL      # ( ‎ﯝ‎ → ‎ۇٴ‎ ) ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER U, ARABIC LETTER HIGH HAMZA     # 
+
+FBDC ; 06C8 ;  SL      # ( ‎ﯜ‎ → ‎ۈ‎ ) ARABIC LETTER YU FINAL FORM → ARABIC LETTER YU   # 
+FBDB ; 06C8 ;  SL      # ( ‎ﯛ‎ → ‎ۈ‎ ) ARABIC LETTER YU ISOLATED FORM → ARABIC LETTER YU        # 
+
+FBE3 ; 06C9 ;  SL      # ( ‎ﯣ‎ → ‎ۉ‎ ) ARABIC LETTER KIRGHIZ YU FINAL FORM → ARABIC LETTER KIRGHIZ YU   # 
+FBE2 ; 06C9 ;  SL      # ( ‎ﯢ‎ → ‎ۉ‎ ) ARABIC LETTER KIRGHIZ YU ISOLATED FORM → ARABIC LETTER KIRGHIZ YU        # 
+
+FBDF ; 06CB ;  SL      # ( ‎ﯟ‎ → ‎ۋ‎ ) ARABIC LETTER VE FINAL FORM → ARABIC LETTER VE   # 
+FBDE ; 06CB ;  SL      # ( ‎ﯞ‎ → ‎ۋ‎ ) ARABIC LETTER VE ISOLATED FORM → ARABIC LETTER VE        # 
+
+FBE8 ; 0649 ;  SL      # ( ‎ﯨ‎ → ‎ى‎ ) ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM → ARABIC LETTER ALEF MAKSURA       # 
+FBE9 ; 0649 ;  SL      # ( ‎ﯩ‎ → ‎ى‎ ) ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM → ARABIC LETTER ALEF MAKSURA        # 
+FEF0 ; 0649 ;  SL      # ( ‎ﻰ‎ → ‎ى‎ ) ARABIC LETTER ALEF MAKSURA FINAL FORM → ARABIC LETTER ALEF MAKSURA       # 
+FEEF ; 0649 ;  SL      # ( ‎ﻯ‎ → ‎ى‎ ) ARABIC LETTER ALEF MAKSURA ISOLATED FORM → ARABIC LETTER ALEF MAKSURA    # 
+064A ; 0649 ;  SL      # ( ‎ي‎ → ‎ى‎ ) ARABIC LETTER YEH → ARABIC LETTER ALEF MAKSURA    # →‎ﻴ‎→→‎ﯿ‎→→‎ی‎→
+FEF3 ; 0649 ;  SL      # ( ‎ﻳ‎ → ‎ى‎ ) ARABIC LETTER YEH INITIAL FORM → ARABIC LETTER ALEF MAKSURA      # →‎ﯿ‎→→‎ی‎→
+FEF4 ; 0649 ;  SL      # ( ‎ﻴ‎ → ‎ى‎ ) ARABIC LETTER YEH MEDIAL FORM → ARABIC LETTER ALEF MAKSURA       # →‎ﯿ‎→→‎ی‎→
+FEF2 ; 0649 ;  SL      # ( ‎ﻲ‎ → ‎ى‎ ) ARABIC LETTER YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA        # →‎ي‎→→‎ﻴ‎→→‎ﯿ‎→→‎ی‎→
+FEF1 ; 0649 ;  SL      # ( ‎ﻱ‎ → ‎ى‎ ) ARABIC LETTER YEH ISOLATED FORM → ARABIC LETTER ALEF MAKSURA     # →‎ي‎→→‎ﻴ‎→→‎ﯿ‎→→‎ی‎→
+06CC ; 0649 ;  SL      # ( ‎ی‎ → ‎ى‎ ) ARABIC LETTER FARSI YEH → ARABIC LETTER ALEF MAKSURA      # 
+FBFE ; 0649 ;  SL      # ( ‎ﯾ‎ → ‎ى‎ ) ARABIC LETTER FARSI YEH INITIAL FORM → ARABIC LETTER ALEF MAKSURA        # →‎ی‎→
+FBFF ; 0649 ;  SL      # ( ‎ﯿ‎ → ‎ى‎ ) ARABIC LETTER FARSI YEH MEDIAL FORM → ARABIC LETTER ALEF MAKSURA # →‎ی‎→
+FBFD ; 0649 ;  SL      # ( ‎ﯽ‎ → ‎ى‎ ) ARABIC LETTER FARSI YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA  # →‎ی‎→
+FBFC ; 0649 ;  SL      # ( ‎ﯼ‎ → ‎ى‎ ) ARABIC LETTER FARSI YEH ISOLATED FORM → ARABIC LETTER ALEF MAKSURA       # 
+
+FC90 ; 0649 0670 ;     SL      # ( ‎ﲐ‎ → ‎ىٰ‎ ) ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER SUPERSCRIPT ALEF     # 
+FC5D ; 0649 0670 ;     SL      # ( ‎ﱝ‎ → ‎ىٰ‎ ) ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER SUPERSCRIPT ALEF  # 
+
+0626 ; 0649 0674 ;     SL      # ( ‎ئ‎ → ‎ىٴ‎ ) ARABIC LETTER YEH WITH HAMZA ABOVE → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA       # →‎ٸ‎→→‎يٴ‎→
+FE8B ; 0649 0674 ;     SL      # ( ‎ﺋ‎ → ‎ىٴ‎ ) ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA # →‎ئ‎→→‎ٸ‎→→‎يٴ‎→
+FE8C ; 0649 0674 ;     SL      # ( ‎ﺌ‎ → ‎ىٴ‎ ) ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA  # →‎ئ‎→→‎ٸ‎→→‎يٴ‎→
+FE8A ; 0649 0674 ;     SL      # ( ‎ﺊ‎ → ‎ىٴ‎ ) ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA   # →‎ئ‎→→‎ٸ‎→→‎يٴ‎→
+FE89 ; 0649 0674 ;     SL      # ( ‎ﺉ‎ → ‎ىٴ‎ ) ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA        # →‎ٸ‎→→‎يٴ‎→
+0678 ; 0649 0674 ;     SL      # ( ‎ٸ‎ → ‎ىٴ‎ ) ARABIC LETTER HIGH HAMZA YEH → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA     # →‎يٴ‎→
+
+FBEB ; 0649 0674 0627 ;        SL      # ( ‎ﯫ‎ → ‎ىٴا‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF # →‎ئا‎→
+FBEA ; 0649 0674 0627 ;        SL      # ( ‎ﯪ‎ → ‎ىٴا‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF      # →‎ئا‎→
+
+FC67 ; 0649 0674 0628 ;        SL      # ( ‎ﱧ‎ → ‎ىٴب‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER BEH  # →‎ئن‎→
+
+FBF8 ; 0649 0674 067A ;        SL      # ( ‎ﯸ‎ → ‎ىٴٺ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER TTEHEH        # →‎ئې‎→
+FBF7 ; 0649 0674 067A ;        SL      # ( ‎ﯷ‎ → ‎ىٴٺ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER TTEHEH  # →‎ئې‎→
+FBF6 ; 0649 0674 067A ;        SL      # ( ‎ﯶ‎ → ‎ىٴٺ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER TTEHEH       # →‎ئې‎→
+
+FC97 ; 0649 0674 062C ;        SL      # ( ‎ﲗ‎ → ‎ىٴج‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER JEEM       # →‎ئج‎→
+FC00 ; 0649 0674 062C ;        SL      # ( ‎ﰀ‎ → ‎ىٴج‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER JEEM      # →‎ئج‎→
+FC99 ; 0649 0674 062C ;        SL      # ( ‎ﲙ‎ → ‎ىٴج‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER JEEM       # →‎ئخ‎→→‎يٴج‎→→‎ئج‎→
+
+FC98 ; 0649 0674 062D ;        SL      # ( ‎ﲘ‎ → ‎ىٴح‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HAH # →‎ئح‎→
+FC01 ; 0649 0674 062D ;        SL      # ( ‎ﰁ‎ → ‎ىٴح‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HAH        # →‎ئح‎→
+
+FC64 ; 0649 0674 0631 ;        SL      # ( ‎ﱤ‎ → ‎ىٴر‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER REH   # →‎ئر‎→
+
+FC65 ; 0649 0674 0632 ;        SL      # ( ‎ﱥ‎ → ‎ىٴز‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ZAIN # →‎ئز‎→
+
+FC9A ; 0649 0674 0645 ;        SL      # ( ‎ﲚ‎ → ‎ىٴم‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER MEEM       # →‎ئم‎→
+FCDF ; 0649 0674 0645 ;        SL      # ( ‎ﳟ‎ → ‎ىٴم‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER MEEM        # →‎ئم‎→
+FC66 ; 0649 0674 0645 ;        SL      # ( ‎ﱦ‎ → ‎ىٴم‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER MEEM # →‎ئم‎→
+FC02 ; 0649 0674 0645 ;        SL      # ( ‎ﰂ‎ → ‎ىٴم‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER MEEM      # →‎ئم‎→
+
+FC9B ; 0649 0674 0647 ;        SL      # ( ‎ﲛ‎ → ‎ىٴه‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HEH # →‎ئه‎→
+FCE0 ; 0649 0674 0647 ;        SL      # ( ‎ﳠ‎ → ‎ىٴه‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HEH  # →‎ئه‎→
+FBED ; 0649 0674 0647 ;        SL      # ( ‎ﯭ‎ → ‎ىٴه‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HEH    # →‎ئە‎→→‎يٴه‎→→‎ئه‎→
+FBEC ; 0649 0674 0647 ;        SL      # ( ‎ﯬ‎ → ‎ىٴه‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HEH # →‎ئە‎→→‎يٴه‎→→‎ئه‎→
+
+FBEF ; 0649 0674 0648 ;        SL      # ( ‎ﯯ‎ → ‎ىٴو‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER WAW   # →‎ئو‎→
+FBEE ; 0649 0674 0648 ;        SL      # ( ‎ﯮ‎ → ‎ىٴو‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER WAW        # →‎ئو‎→
+
+FBF3 ; 0649 0674 06C6 ;        SL      # ( ‎ﯳ‎ → ‎ىٴۆ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER OE     # →‎ئۆ‎→
+FBF2 ; 0649 0674 06C6 ;        SL      # ( ‎ﯲ‎ → ‎ىٴۆ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER OE  # →‎ئۆ‎→
+
+FBF1 ; 0649 0674 06C7 ;        SL      # ( ‎ﯱ‎ → ‎ىٴۇ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER U       # →‎ئۇ‎→
+FBF0 ; 0649 0674 06C7 ;        SL      # ( ‎ﯰ‎ → ‎ىٴۇ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER U    # →‎ئۇ‎→
+
+FBF5 ; 0649 0674 06C8 ;        SL      # ( ‎ﯵ‎ → ‎ىٴۈ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER YU     # →‎ئۈ‎→
+FBF4 ; 0649 0674 06C8 ;        SL      # ( ‎ﯴ‎ → ‎ىٴۈ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER YU  # →‎ئۈ‎→
+
+FBFB ; 0649 0674 0649 ;        SL      # ( ‎ﯻ‎ → ‎ىٴى‎ ) ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA        # →‎ئى‎→
+FBFA ; 0649 0674 0649 ;        SL      # ( ‎ﯺ‎ → ‎ىٴى‎ ) ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA  # →‎ئى‎→
+FC68 ; 0649 0674 0649 ;        SL      # ( ‎ﱨ‎ → ‎ىٴى‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA # →‎ئى‎→
+FBF9 ; 0649 0674 0649 ;        SL      # ( ‎ﯹ‎ → ‎ىٴى‎ ) ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA       # →‎ئى‎→
+FC03 ; 0649 0674 0649 ;        SL      # ( ‎ﰃ‎ → ‎ىٴى‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA      # →‎ئى‎→
+FC69 ; 0649 0674 0649 ;        SL      # ( ‎ﱩ‎ → ‎ىٴى‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA  # →‎ئي‎→→‎يٴى‎→→‎ئى‎→
+FC04 ; 0649 0674 0649 ;        SL      # ( ‎ﰄ‎ → ‎ىٴى‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA       # →‎ئي‎→→‎يٴى‎→→‎ئى‎→
+
+FC94 ; 0649 0628 ;     SL      # ( ‎ﲔ‎ → ‎ىب‎ ) ARABIC LIGATURE YEH WITH NOON FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER BEH       # →‎ين‎→
+
+FDAF ; 0649 062C 0649 ;        SL      # ( ‎ﶯ‎ → ‎ىجى‎ ) ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA       # →‎يجي‎→
+
+FDAE ; 0649 062D 0649 ;        SL      # ( ‎ﶮ‎ → ‎ىحى‎ ) ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA # →‎يحي‎→
+
+FC91 ; 0649 0631 ;     SL      # ( ‎ﲑ‎ → ‎ىر‎ ) ARABIC LIGATURE YEH WITH REH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER REH        # →‎ير‎→
+
+FC92 ; 0649 0632 ;     SL      # ( ‎ﲒ‎ → ‎ىز‎ ) ARABIC LIGATURE YEH WITH ZAIN FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ZAIN      # →‎يز‎→
+
+FCDD ; 0649 0645 ;     SL      # ( ‎ﳝ‎ → ‎ىم‎ ) ARABIC LIGATURE YEH WITH MEEM INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM    # →‎يم‎→
+FCF0 ; 0649 0645 ;     SL      # ( ‎ﳰ‎ → ‎ىم‎ ) ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM     # →‎يم‎→
+FC93 ; 0649 0645 ;     SL      # ( ‎ﲓ‎ → ‎ىم‎ ) ARABIC LIGATURE YEH WITH MEEM FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM      # →‎يم‎→
+FC58 ; 0649 0645 ;     SL      # ( ‎ﱘ‎ → ‎ىم‎ ) ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM   # →‎يم‎→
+
+FD9D ; 0649 0645 0645 ;        SL      # ( ‎ﶝ‎ → ‎ىمم‎ ) ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM, ARABIC LETTER MEEM    # →‎يمم‎→
+FD9C ; 0649 0645 0645 ;        SL      # ( ‎ﶜ‎ → ‎ىمم‎ ) ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM, ARABIC LETTER MEEM      # →‎يمم‎→
+
+FDB0 ; 0649 0645 0649 ;        SL      # ( ‎ﶰ‎ → ‎ىمى‎ ) ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA       # →‎يمي‎→
+
+FCDE ; 0649 0647 ;     SL      # ( ‎ﳞ‎ → ‎ىه‎ ) ARABIC LIGATURE YEH WITH HEH INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HEH      # →‎يه‎→
+FCF1 ; 0649 0647 ;     SL      # ( ‎ﳱ‎ → ‎ىه‎ ) ARABIC LIGATURE YEH WITH HEH MEDIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HEH       # →‎يه‎→
+
+FC95 ; 0649 0649 ;     SL      # ( ‎ﲕ‎ → ‎ىى‎ ) ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ALEF MAKSURA      # →‎يى‎→
+FC59 ; 0649 0649 ;     SL      # ( ‎ﱙ‎ → ‎ىى‎ ) ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ALEF MAKSURA   # →‎يى‎→
+FC96 ; 0649 0649 ;     SL      # ( ‎ﲖ‎ → ‎ىى‎ ) ARABIC LIGATURE YEH WITH YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ALEF MAKSURA       # →‎يي‎→
+FC5A ; 0649 0649 ;     SL      # ( ‎ﱚ‎ → ‎ىى‎ ) ARABIC LIGATURE YEH WITH YEH ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ALEF MAKSURA    # →‎يي‎→
+
+FBAF ; 06D2 ;  SL      # ( ‎ﮯ‎ → ‎ے‎ ) ARABIC LETTER YEH BARREE FINAL FORM → ARABIC LETTER YEH BARREE   # 
+FBAE ; 06D2 ;  SL      # ( ‎ﮮ‎ → ‎ے‎ ) ARABIC LETTER YEH BARREE ISOLATED FORM → ARABIC LETTER YEH BARREE        # 
+
+FBB1 ; 06D3 ;  SL      # ( ‎ﮱ‎ → ‎ۓ‎ ) ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM → ARABIC LETTER YEH BARREE WITH HAMZA ABOVE # 
+FBB0 ; 06D3 ;  SL      # ( ‎ﮰ‎ → ‎ۓ‎ ) ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER YEH BARREE WITH HAMZA ABOVE      # 
+
+079A ; 0799 ;  SL      # ( ‎ޚ‎ → ‎ޙ‎ ) THAANA LETTER KHAA → THAANA LETTER HHAA   # 
+
+07A3 ; 07A2 ;  SL      # ( ‎ޣ‎ → ‎ޢ‎ ) THAANA LETTER GHAINU → THAANA LETTER AINU # 
+
+07A1 ; 07A0 ;  SL      # ( ‎ޡ‎ → ‎ޠ‎ ) THAANA LETTER ZO → THAANA LETTER TO       # 
+
+079F ; 079E ;  SL      # ( ‎ޟ‎ → ‎ޞ‎ ) THAANA LETTER DAADHU → THAANA LETTER SAADHU       # 
+
+22FF ; 2D39 ;  SL      #* ( ⋿ → ⴹ ) Z NOTATION BAG MEMBERSHIP → TIFINAGH LETTER YADD   # 
+2130 ; 2D39 ;  SL      # ( ℰ → ⴹ ) SCRIPT CAPITAL E → TIFINAGH LETTER YADD     # →E→
+1D404 ;        2D39 ;  SL      # ( 𝐄 → ⴹ ) MATHEMATICAL BOLD CAPITAL E → TIFINAGH LETTER YADD # →E→
+1D438 ;        2D39 ;  SL      # ( 𝐸 → ⴹ ) MATHEMATICAL ITALIC CAPITAL E → TIFINAGH LETTER YADD       # →E→
+1D46C ;        2D39 ;  SL      # ( 𝑬 → ⴹ ) MATHEMATICAL BOLD ITALIC CAPITAL E → TIFINAGH LETTER YADD  # →E→
+1D4D4 ;        2D39 ;  SL      # ( 𝓔 → ⴹ ) MATHEMATICAL BOLD SCRIPT CAPITAL E → TIFINAGH LETTER YADD  # →E→
+1D508 ;        2D39 ;  SL      # ( 𝔈 → ⴹ ) MATHEMATICAL FRAKTUR CAPITAL E → TIFINAGH LETTER YADD      # →E→
+1D53C ;        2D39 ;  SL      # ( 𝔼 → ⴹ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL E → TIFINAGH LETTER YADD        # →E→
+1D570 ;        2D39 ;  SL      # ( 𝕰 → ⴹ ) MATHEMATICAL BOLD FRAKTUR CAPITAL E → TIFINAGH LETTER YADD # →E→
+1D5A4 ;        2D39 ;  SL      # ( 𝖤 → ⴹ ) MATHEMATICAL SANS-SERIF CAPITAL E → TIFINAGH LETTER YADD   # →E→
+1D5D8 ;        2D39 ;  SL      # ( 𝗘 → ⴹ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL E → TIFINAGH LETTER YADD      # →E→
+1D60C ;        2D39 ;  SL      # ( 𝘌 → ⴹ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL E → TIFINAGH LETTER YADD    # →E→
+1D640 ;        2D39 ;  SL      # ( 𝙀 → ⴹ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E → TIFINAGH LETTER YADD       # →E→
+1D674 ;        2D39 ;  SL      # ( 𝙴 → ⴹ ) MATHEMATICAL MONOSPACE CAPITAL E → TIFINAGH LETTER YADD    # →E→
+1D6AC ;        2D39 ;  SL      # ( 𝚬 → ⴹ ) MATHEMATICAL BOLD CAPITAL EPSILON → TIFINAGH LETTER YADD   # →Ε→
+1D6E6 ;        2D39 ;  SL      # ( 𝛦 → ⴹ ) MATHEMATICAL ITALIC CAPITAL EPSILON → TIFINAGH LETTER YADD # →Ε→
+1D720 ;        2D39 ;  SL      # ( 𝜠 → ⴹ ) MATHEMATICAL BOLD ITALIC CAPITAL EPSILON → TIFINAGH LETTER YADD    # →Ε→
+1D75A ;        2D39 ;  SL      # ( 𝝚 → ⴹ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON → TIFINAGH LETTER YADD        # →Ε→
+1D794 ;        2D39 ;  SL      # ( 𝞔 → ⴹ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON → TIFINAGH LETTER YADD # →Ε→
+
+2203 ; 2D3A ;  SL      #* ( ∃ → ⴺ ) THERE EXISTS → TIFINAGH LETTER YADDH       # 
+
+2211 ; 2D49 ;  SL      #* ( ∑ → ⵉ ) N-ARY SUMMATION → TIFINAGH LETTER YI       # →Ʃ→
+2140 ; 2D49 ;  SL      #* ( ⅀ → ⵉ ) DOUBLE-STRUCK N-ARY SUMMATION → TIFINAGH LETTER YI # →∑→→Ʃ→
+1D6BA ;        2D49 ;  SL      # ( 𝚺 → ⵉ ) MATHEMATICAL BOLD CAPITAL SIGMA → TIFINAGH LETTER YI       # →Σ→
+1D6F4 ;        2D49 ;  SL      # ( 𝛴 → ⵉ ) MATHEMATICAL ITALIC CAPITAL SIGMA → TIFINAGH LETTER YI     # →Σ→
+1D72E ;        2D49 ;  SL      # ( 𝜮 → ⵉ ) MATHEMATICAL BOLD ITALIC CAPITAL SIGMA → TIFINAGH LETTER YI        # →Σ→
+1D768 ;        2D49 ;  SL      # ( 𝝨 → ⵉ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA → TIFINAGH LETTER YI    # →Σ→
+1D7A2 ;        2D49 ;  SL      # ( 𝞢 → ⵉ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA → TIFINAGH LETTER YI     # →Σ→
+
+1D417 ;        2D5D ;  SL      # ( 𝐗 → ⵝ ) MATHEMATICAL BOLD CAPITAL X → TIFINAGH LETTER YATH # →X→
+1D44B ;        2D5D ;  SL      # ( 𝑋 → ⵝ ) MATHEMATICAL ITALIC CAPITAL X → TIFINAGH LETTER YATH       # →X→
+1D47F ;        2D5D ;  SL      # ( 𝑿 → ⵝ ) MATHEMATICAL BOLD ITALIC CAPITAL X → TIFINAGH LETTER YATH  # →X→
+1D4B3 ;        2D5D ;  SL      # ( 𝒳 → ⵝ ) MATHEMATICAL SCRIPT CAPITAL X → TIFINAGH LETTER YATH       # →X→
+1D4E7 ;        2D5D ;  SL      # ( 𝓧 → ⵝ ) MATHEMATICAL BOLD SCRIPT CAPITAL X → TIFINAGH LETTER YATH  # →X→
+1D51B ;        2D5D ;  SL      # ( 𝔛 → ⵝ ) MATHEMATICAL FRAKTUR CAPITAL X → TIFINAGH LETTER YATH      # →X→
+1D54F ;        2D5D ;  SL      # ( 𝕏 → ⵝ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL X → TIFINAGH LETTER YATH        # →X→
+1D583 ;        2D5D ;  SL      # ( 𝖃 → ⵝ ) MATHEMATICAL BOLD FRAKTUR CAPITAL X → TIFINAGH LETTER YATH # →X→
+1D5B7 ;        2D5D ;  SL      # ( 𝖷 → ⵝ ) MATHEMATICAL SANS-SERIF CAPITAL X → TIFINAGH LETTER YATH   # →X→
+1D5EB ;        2D5D ;  SL      # ( 𝗫 → ⵝ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL X → TIFINAGH LETTER YATH      # →X→
+1D61F ;        2D5D ;  SL      # ( 𝘟 → ⵝ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL X → TIFINAGH LETTER YATH    # →X→
+1D653 ;        2D5D ;  SL      # ( 𝙓 → ⵝ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X → TIFINAGH LETTER YATH       # →X→
+1D687 ;        2D5D ;  SL      # ( 𝚇 → ⵝ ) MATHEMATICAL MONOSPACE CAPITAL X → TIFINAGH LETTER YATH    # →X→
+1D6BE ;        2D5D ;  SL      # ( 𝚾 → ⵝ ) MATHEMATICAL BOLD CAPITAL CHI → TIFINAGH LETTER YATH       # →Χ→
+1D6F8 ;        2D5D ;  SL      # ( 𝛸 → ⵝ ) MATHEMATICAL ITALIC CAPITAL CHI → TIFINAGH LETTER YATH     # →Χ→
+1D732 ;        2D5D ;  SL      # ( 𝜲 → ⵝ ) MATHEMATICAL BOLD ITALIC CAPITAL CHI → TIFINAGH LETTER YATH        # →Χ→
+1D76C ;        2D5D ;  SL      # ( 𝝬 → ⵝ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI → TIFINAGH LETTER YATH    # →Χ→
+1D7A6 ;        2D5D ;  SL      # ( 𝞦 → ⵝ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI → TIFINAGH LETTER YATH     # →Χ→
+
+0906 ; 0905 093E ;     SL      # ( आ → अा ) DEVANAGARI LETTER AA → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN AA     # 
+
+0912 ; 0905 093E 0946 ;        SL      # ( ऒ → अाॆ ) DEVANAGARI LETTER SHORT O → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN AA, DEVANAGARI VOWEL SIGN SHORT E      # →अॊ→→आॆ→
+
+0913 ; 0905 093E 0947 ;        SL      # ( ओ → अाे ) DEVANAGARI LETTER O → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN AA, DEVANAGARI VOWEL SIGN E  # →अो→→आे→
+
+0914 ; 0905 093E 0948 ;        SL      # ( औ → अाै ) DEVANAGARI LETTER AU → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN AA, DEVANAGARI VOWEL SIGN AI        # →अौ→→आै→
+
+0904 ; 0905 0946 ;     SL      # ( ऄ → अॆ ) DEVANAGARI LETTER SHORT A → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN SHORT E   # 
+
+0911 ; 0905 0949 ;     SL      # ( ऑ → अॉ ) DEVANAGARI LETTER CANDRA O → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN CANDRA O # 
+
+090D ; 090F 0945 ;     SL      # ( ऍ → एॅ ) DEVANAGARI LETTER CANDRA E → DEVANAGARI LETTER E, DEVANAGARI VOWEL SIGN CANDRA E # 
+
+090E ; 090F 0946 ;     SL      # ( ऎ → एॆ ) DEVANAGARI LETTER SHORT E → DEVANAGARI LETTER E, DEVANAGARI VOWEL SIGN SHORT E   # 
+
+0910 ; 090F 0947 ;     SL      # ( ऐ → एे ) DEVANAGARI LETTER AI → DEVANAGARI LETTER E, DEVANAGARI VOWEL SIGN E      # 
+
+0908 ; 0930 094D 0907 ;        SL      # ( ई → र्इ ) DEVANAGARI LETTER II → DEVANAGARI LETTER RA, DEVANAGARI SIGN VIRAMA, DEVANAGARI LETTER I      # 
+
+0986 ; 0985 09BE ;     SL      # ( আ → অা ) BENGALI LETTER AA → BENGALI LETTER A, BENGALI VOWEL SIGN AA      # 
+
+09E0 ; 098B 09C3 ;     SL      # ( ৠ → ঋৃ ) BENGALI LETTER VOCALIC RR → BENGALI LETTER VOCALIC R, BENGALI VOWEL SIGN VOCALIC R       # 
+09E1 ; 098B 09C3 ;     SL      # ( ৡ → ঋৃ ) BENGALI LETTER VOCALIC LL → BENGALI LETTER VOCALIC R, BENGALI VOWEL SIGN VOCALIC R       # →ঌৢ→→ৠ→
+
+0A09 ; 0A73 0A41 ;     SL      # ( ਉ → ੳੁ ) GURMUKHI LETTER U → GURMUKHI URA, GURMUKHI VOWEL SIGN U  # 
+
+0A0A ; 0A73 0A42 ;     SL      # ( ਊ → ੳੂ ) GURMUKHI LETTER UU → GURMUKHI URA, GURMUKHI VOWEL SIGN UU        # 
+
+0A06 ; 0A05 0A3E ;     SL      # ( ਆ → ਅਾ ) GURMUKHI LETTER AA → GURMUKHI LETTER A, GURMUKHI VOWEL SIGN AA   # 
+
+0A10 ; 0A05 0A48 ;     SL      # ( ਐ → ਅੈ ) GURMUKHI LETTER AI → GURMUKHI LETTER A, GURMUKHI VOWEL SIGN AI   # 
+
+0A14 ; 0A05 0A4C ;     SL      # ( ਔ → ਅੌ ) GURMUKHI LETTER AU → GURMUKHI LETTER A, GURMUKHI VOWEL SIGN AU   # 
+
+0A07 ; 0A72 0A3F ;     SL      # ( ਇ → ੲਿ ) GURMUKHI LETTER I → GURMUKHI IRI, GURMUKHI VOWEL SIGN I  # 
+
+0A08 ; 0A72 0A40 ;     SL      # ( ਈ → ੲੀ ) GURMUKHI LETTER II → GURMUKHI IRI, GURMUKHI VOWEL SIGN II        # 
+
+0A0F ; 0A72 0A47 ;     SL      # ( ਏ → ੲੇ ) GURMUKHI LETTER EE → GURMUKHI IRI, GURMUKHI VOWEL SIGN EE        # 
+
+0A86 ; 0A85 0ABE ;     SL      # ( આ → અા ) GUJARATI LETTER AA → GUJARATI LETTER A, GUJARATI VOWEL SIGN AA   # 
+
+0A91 ; 0A85 0ABE 0AC5 ;        SL      # ( ઑ → અાૅ ) GUJARATI VOWEL CANDRA O → GUJARATI LETTER A, GUJARATI VOWEL SIGN AA, GUJARATI VOWEL SIGN CANDRA E     # →અૉ→→આૅ→
+
+0A93 ; 0A85 0ABE 0AC7 ;        SL      # ( ઓ → અાે ) GUJARATI LETTER O → GUJARATI LETTER A, GUJARATI VOWEL SIGN AA, GUJARATI VOWEL SIGN E  # →અો→→આે→
+
+0A94 ; 0A85 0ABE 0AC8 ;        SL      # ( ઔ → અાૈ ) GUJARATI LETTER AU → GUJARATI LETTER A, GUJARATI VOWEL SIGN AA, GUJARATI VOWEL SIGN AI        # →અૌ→→આૈ→
+
+0A8D ; 0A85 0AC5 ;     SL      # ( ઍ → અૅ ) GUJARATI VOWEL CANDRA E → GUJARATI LETTER A, GUJARATI VOWEL SIGN CANDRA E        # 
+
+0A8F ; 0A85 0AC7 ;     SL      # ( એ → અે ) GUJARATI LETTER E → GUJARATI LETTER A, GUJARATI VOWEL SIGN E     # 
+
+0A90 ; 0A85 0AC8 ;     SL      # ( ઐ → અૈ ) GUJARATI LETTER AI → GUJARATI LETTER A, GUJARATI VOWEL SIGN AI   # 
+
+0B06 ; 0B05 0B3E ;     SL      # ( ଆ → ଅା ) ORIYA LETTER AA → ORIYA LETTER A, ORIYA VOWEL SIGN AA    # 
+
+2102 ; 0BD0 ;  SL      # ( ℂ → ௐ ) DOUBLE-STRUCK CAPITAL C → TAMIL OM  # →C→→С→
+212D ; 0BD0 ;  SL      # ( ℭ → ௐ ) BLACK-LETTER CAPITAL C → TAMIL OM   # →C→→С→
+1D402 ;        0BD0 ;  SL      # ( 𝐂 → ௐ ) MATHEMATICAL BOLD CAPITAL C → TAMIL OM     # →C→→С→
+1D436 ;        0BD0 ;  SL      # ( 𝐶 → ௐ ) MATHEMATICAL ITALIC CAPITAL C → TAMIL OM   # →C→→С→
+1D46A ;        0BD0 ;  SL      # ( 𝑪 → ௐ ) MATHEMATICAL BOLD ITALIC CAPITAL C → TAMIL OM      # →C→→С→
+1D49E ;        0BD0 ;  SL      # ( 𝒞 → ௐ ) MATHEMATICAL SCRIPT CAPITAL C → TAMIL OM   # →C→→С→
+1D4D2 ;        0BD0 ;  SL      # ( 𝓒 → ௐ ) MATHEMATICAL BOLD SCRIPT CAPITAL C → TAMIL OM      # →C→→С→
+1D56E ;        0BD0 ;  SL      # ( 𝕮 → ௐ ) MATHEMATICAL BOLD FRAKTUR CAPITAL C → TAMIL OM     # →C→→С→
+1D5A2 ;        0BD0 ;  SL      # ( 𝖢 → ௐ ) MATHEMATICAL SANS-SERIF CAPITAL C → TAMIL OM       # →C→→С→
+1D5D6 ;        0BD0 ;  SL      # ( 𝗖 → ௐ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL C → TAMIL OM  # →C→→С→
+1D60A ;        0BD0 ;  SL      # ( 𝘊 → ௐ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL C → TAMIL OM        # →C→→С→
+1D63E ;        0BD0 ;  SL      # ( 𝘾 → ௐ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C → TAMIL OM   # →C→→С→
+1D672 ;        0BD0 ;  SL      # ( 𝙲 → ௐ ) MATHEMATICAL MONOSPACE CAPITAL C → TAMIL OM        # →C→→С→
+
+0BEE ; 0B85 ;  SL      # ( ௮ → அ ) TAMIL DIGIT EIGHT → TAMIL LETTER A  # 
+
+0BB0 ; 0B88 ;  SL      # ( ர → ஈ ) TAMIL LETTER RA → TAMIL LETTER II   # →ா→
+0BBE ; 0B88 ;  SL      # ( ா → ஈ ) TAMIL VOWEL SIGN AA → TAMIL LETTER II       # 
+
+0BEB ; 0B88 0BC1 ;     SL      # ( ௫ → ஈு ) TAMIL DIGIT FIVE → TAMIL LETTER II, TAMIL VOWEL SIGN U   # →ரு→
+
+0BE8 ; 0B89 ;  SL      # ( ௨ → உ ) TAMIL DIGIT TWO → TAMIL LETTER U    # 
+
+0B8A ; 0B89 0BB3 ;     SL      # ( ஊ → உள ) TAMIL LETTER UU → TAMIL LETTER U, TAMIL LETTER LLA       # 
+
+0BED ; 0B8E ;  SL      # ( ௭ → எ ) TAMIL DIGIT SEVEN → TAMIL LETTER E  # 
+
+0BF7 ; 0B8E 0BB5 ;     SL      #* ( ௷ → எவ ) TAMIL CREDIT SIGN → TAMIL LETTER E, TAMIL LETTER VA     # 
+
+0B9C ; 0B90 ;  SL      # ( ஜ → ஐ ) TAMIL LETTER JA → TAMIL LETTER AI   # 
+
+0BE7 ; 0B95 ;  SL      # ( ௧ → க ) TAMIL DIGIT ONE → TAMIL LETTER KA   # 
+
+0BEA ; 0B9A ;  SL      # ( ௪ → ச ) TAMIL DIGIT FOUR → TAMIL LETTER CA  # 
+
+0BEC ; 0B9A 0BC1 ;     SL      # ( ௬ → சு ) TAMIL DIGIT SIX → TAMIL LETTER CA, TAMIL VOWEL SIGN U    # 
+
+0BF2 ; 0B9A 0BC2 ;     SL      #* ( ௲ → சூ ) TAMIL NUMBER ONE THOUSAND → TAMIL LETTER CA, TAMIL VOWEL SIGN UU        # 
+
+0BFA ; 0BA8 0BC0 ;     SL      #* ( ௺ → நீ ) TAMIL NUMBER SIGN → TAMIL LETTER NA, TAMIL VOWEL SIGN II        # 
+
+0BF4 ; 0BAE 0BC0 ;     SL      #* ( ௴ → மீ ) TAMIL MONTH SIGN → TAMIL LETTER MA, TAMIL VOWEL SIGN II # 
+
+0BF0 ; 0BAF ;  SL      #* ( ௰ → ய ) TAMIL NUMBER TEN → TAMIL LETTER YA # 
+
+0BD7 ; 0BB3 ;  SL      # ( ௗ → ள ) TAMIL AU LENGTH MARK → TAMIL LETTER LLA     # 
+
+0BC8 ; 0BA9 ;  SL      # ( ை → ன ) TAMIL VOWEL SIGN AI → TAMIL LETTER NNNA     # 
+
+0BF8 ; 0BB7 ;  SL      #* ( ௸ → ஷ ) TAMIL AS ABOVE SIGN → TAMIL LETTER SSA     # 
+
+0BCA ; 0BC6 0B88 ;     SL      # ( ொ → ெஈ ) TAMIL VOWEL SIGN O → TAMIL VOWEL SIGN E, TAMIL LETTER II # →ெர→
+
+0BCC ; 0BC6 0BB3 ;     SL      # ( ௌ → ெள ) TAMIL VOWEL SIGN AU → TAMIL VOWEL SIGN E, TAMIL LETTER LLA       # 
+
+0BCB ; 0BC7 0B88 ;     SL      # ( ோ → ேஈ ) TAMIL VOWEL SIGN OO → TAMIL VOWEL SIGN EE, TAMIL LETTER II       # →ேர→
+
+0C60 ; 0C0B 0C3E ;     SL      # ( ౠ → ఋా ) TELUGU LETTER VOCALIC RR → TELUGU LETTER VOCALIC R, TELUGU VOWEL SIGN AA # 
+
+0C61 ; 0C0C 0C3E ;     SL      # ( ౡ → ఌా ) TELUGU LETTER VOCALIC LL → TELUGU LETTER VOCALIC L, TELUGU VOWEL SIGN AA # 
+
+0C14 ; 0C12 0C4C ;     SL      # ( ఔ → ఒౌ ) TELUGU LETTER AU → TELUGU LETTER O, TELUGU VOWEL SIGN AU # 
+
+0C13 ; 0C12 0C55 ;     SL      # ( ఓ → ఒౕ ) TELUGU LETTER OO → TELUGU LETTER O, TELUGU LENGTH MARK   # 
+
+0C22 ; 0C21 0323 ;     SL      # ( ఢ → డ̣ ) TELUGU LETTER DDHA → TELUGU LETTER DDA, COMBINING DOT BELOW       # 
+
+0C2D ; 0C2C 0323 ;     SL      # ( భ → బ̣ ) TELUGU LETTER BHA → TELUGU LETTER BA, COMBINING DOT BELOW # 
+
+0C37 ; 0C35 0323 ;     SL      # ( ష → వ̣ ) TELUGU LETTER SSA → TELUGU LETTER VA, COMBINING DOT BELOW # 
+
+0C39 ; 0C35 0C3E ;     SL      # ( హ → వా ) TELUGU LETTER HA → TELUGU LETTER VA, TELUGU VOWEL SIGN AA        # 
+
+0C2E ; 0C35 0C41 ;     SL      # ( మ → వు ) TELUGU LETTER MA → TELUGU LETTER VA, TELUGU VOWEL SIGN U # 
+
+0C42 ; 0C41 0C3E ;     SL      # ( ూ → ుా ) TELUGU VOWEL SIGN UU → TELUGU VOWEL SIGN U, TELUGU VOWEL SIGN AA # 
+
+0C44 ; 0C43 0C3E ;     SL      # ( ౄ → ృా ) TELUGU VOWEL SIGN VOCALIC RR → TELUGU VOWEL SIGN VOCALIC R, TELUGU VOWEL SIGN AA # 
+
+0CE1 ; 0C8C 0CBE ;     SL      # ( ೡ → ಌಾ ) KANNADA LETTER VOCALIC LL → KANNADA LETTER VOCALIC L, KANNADA VOWEL SIGN AA      # 
+
+0C94 ; 0C92 0CCC ;     SL      # ( ಔ → ಒೌ ) KANNADA LETTER AU → KANNADA LETTER O, KANNADA VOWEL SIGN AU      # 
+
+0D08 ; 0D07 0D57 ;     SL      # ( ഈ → ഇൗ ) MALAYALAM LETTER II → MALAYALAM LETTER I, MALAYALAM AU LENGTH MARK       # 
+
+0D0A ; 0D09 0D57 ;     SL      # ( ഊ → ഉൗ ) MALAYALAM LETTER UU → MALAYALAM LETTER U, MALAYALAM AU LENGTH MARK       # 
+
+0D10 ; 0D0E 0D46 ;     SL      # ( ഐ → എെ ) MALAYALAM LETTER AI → MALAYALAM LETTER E, MALAYALAM VOWEL SIGN E # 
+
+0D13 ; 0D12 0D3E ;     SL      # ( ഓ → ഒാ ) MALAYALAM LETTER OO → MALAYALAM LETTER O, MALAYALAM VOWEL SIGN AA        # 
+
+0D14 ; 0D12 0D57 ;     SL      # ( ഔ → ഒൗ ) MALAYALAM LETTER AU → MALAYALAM LETTER O, MALAYALAM AU LENGTH MARK       # 
+
+0D61 ; 0D1E ;  SL      # ( ൡ → ഞ ) MALAYALAM LETTER VOCALIC LL → MALAYALAM LETTER NYA  # 
+
+0D6B ; 0D26 0D4D 0D30 ;        SL      # ( ൫ → ദ്ര ) MALAYALAM DIGIT FIVE → MALAYALAM LETTER DA, MALAYALAM SIGN VIRAMA, MALAYALAM LETTER RA        # 
+
+0D0C ; 0D28 0D41 ;     SL      # ( ഌ → നു ) MALAYALAM LETTER VOCALIC L → MALAYALAM LETTER NA, MALAYALAM VOWEL SIGN U # 
+0D19 ; 0D28 0D41 ;     SL      # ( ങ → നു ) MALAYALAM LETTER NGA → MALAYALAM LETTER NA, MALAYALAM VOWEL SIGN U       # →ഌ→
+
+0D6F ; 0D28 0D4D ;     SL      # ( ൯ → ന് ) MALAYALAM DIGIT NINE → MALAYALAM LETTER NA, MALAYALAM SIGN VIRAMA        # 
+
+0D31 ; 0D30 ;  SL      # ( റ → ര ) MALAYALAM LETTER RRA → MALAYALAM LETTER RA  # 
+
+0D6A ; 0D30 0D4D ;     SL      # ( ൪ → ര് ) MALAYALAM DIGIT FOUR → MALAYALAM LETTER RA, MALAYALAM SIGN VIRAMA        # 
+
+0D6E ; 0D35 0D4D ;     SL      # ( ൮ → വ് ) MALAYALAM DIGIT EIGHT → MALAYALAM LETTER VA, MALAYALAM SIGN VIRAMA       # 
+
+0D40 ; 0D3F ;  SL      # ( ീ → ി ) MALAYALAM VOWEL SIGN II → MALAYALAM VOWEL SIGN I    # 
+
+0D42 ; 0D41 ;  SL      # ( ൂ → ു ) MALAYALAM VOWEL SIGN UU → MALAYALAM VOWEL SIGN U    # 
+0D43 ; 0D41 ;  SL      # ( ൃ → ു ) MALAYALAM VOWEL SIGN VOCALIC R → MALAYALAM VOWEL SIGN U     # →ൂ→
+
+0D48 ; 0D46 0D46 ;     SL      # ( ൈ → െെ ) MALAYALAM VOWEL SIGN AI → MALAYALAM VOWEL SIGN E, MALAYALAM VOWEL SIGN E # 
+
+0E03 ; 0E02 ;  SL      # ( ฃ → ข ) THAI CHARACTER KHO KHUAT → THAI CHARACTER KHO KHAI  # 
+
+0E14 ; 0E04 ;  SL      # ( ด → ค ) THAI CHARACTER DO DEK → THAI CHARACTER KHO KHWAI    # 
+0E15 ; 0E04 ;  SL      # ( ต → ค ) THAI CHARACTER TO TAO → THAI CHARACTER KHO KHWAI    # →ด→
+
+0E21 ; 0E06 ;  SL      # ( ม → ฆ ) THAI CHARACTER MO MA → THAI CHARACTER KHO RAKHANG   # 
+
+0E0B ; 0E0A ;  SL      # ( ซ → ช ) THAI CHARACTER SO SO → THAI CHARACTER CHO CHANG     # 
+
+0E0F ; 0E0E ;  SL      # ( ฏ → ฎ ) THAI CHARACTER TO PATAK → THAI CHARACTER DO CHADA   # 
+
+0E17 ; 0E11 ;  SL      # ( ท → ฑ ) THAI CHARACTER THO THAHAN → THAI CHARACTER THO NANGMONTHO   # 
+
+0E26 ; 0E20 ;  SL      # ( ฦ → ภ ) THAI CHARACTER LU → THAI CHARACTER PHO SAMPHAO      # 
+
+0E45 ; 0E32 ;  SL      # ( ๅ → า ) THAI CHARACTER LAKKHANGYAO → THAI CHARACTER SARA AA # 
+
+0E33 ; 030A 0E32 ;     SL      # ( ำ → ̊า ) THAI CHARACTER SARA AM → COMBINING RING ABOVE, THAI CHARACTER SARA AA     # →ํา→
+
+0E41 ; 0E40 0E40 ;     SL      # ( แ → เเ ) THAI CHARACTER SARA AE → THAI CHARACTER SARA E, THAI CHARACTER SARA E    # 
+
+0EDC ; 0EAB 0E99 ;     SL      # ( ໜ → ຫນ ) LAO HO NO → LAO LETTER HO SUNG, LAO LETTER NO    # 
+
+0EDD ; 0EAB 0EA1 ;     SL      # ( ໝ → ຫມ ) LAO HO MO → LAO LETTER HO SUNG, LAO LETTER MO    # 
+
+0EB3 ; 030A 0EB2 ;     SL      # ( ຳ → ̊າ ) LAO VOWEL SIGN AM → COMBINING RING ABOVE, LAO VOWEL SIGN AA       # →ໍາ→
+
+0F6A ; 0F62 ;  SL      # ( ཪ → ར ) TIBETAN LETTER FIXED-FORM RA → TIBETAN LETTER RA    # 
+
+0F77 ; 0FB2 0F71 0F80 ;        SL      # ( ཷ → ྲཱྀ ) TIBETAN VOWEL SIGN VOCALIC RR → TIBETAN SUBJOINED LETTER RA, TIBETAN VOWEL SIGN AA, TIBETAN VOWEL SIGN REVERSED I     # 
+
+0F79 ; 0FB3 0F71 0F80 ;        SL      # ( ཹ → ླཱྀ ) TIBETAN VOWEL SIGN VOCALIC LL → TIBETAN SUBJOINED LETTER LA, TIBETAN VOWEL SIGN AA, TIBETAN VOWEL SIGN REVERSED I     # 
+
+17A3 ; 17A2 ;  SL      # ( ឣ → អ ) KHMER INDEPENDENT VOWEL QAQ → KHMER LETTER QA       # 
+
+19D0 ; 199E ;  SL      # ( ᧐ → ᦞ ) NEW TAI LUE DIGIT ZERO → NEW TAI LUE LETTER LOW VA  # 
+
+19D1 ; 19B1 ;  SL      # ( ᧑ → ᦱ ) NEW TAI LUE DIGIT ONE → NEW TAI LUE VOWEL SIGN AA   # 
+
+1A80 ; 1A45 ;  SL      # ( ᪀ → ᩅ ) TAI THAM HORA DIGIT ZERO → TAI THAM LETTER WA       # 
+1A90 ; 1A45 ;  SL      # ( ᪐ → ᩅ ) TAI THAM THAM DIGIT ZERO → TAI THAM LETTER WA       # 
+
+AA53 ; AA01 ;  SL      # ( ꩓ → ꨁ ) CHAM DIGIT THREE → CHAM LETTER I    # 
+
+AA56 ; AA23 ;  SL      # ( ꩖ → ꨣ ) CHAM DIGIT SIX → CHAM LETTER RA     # 
+
+1B52 ; 1B0D ;  SL      # ( ᭒ → ᬍ ) BALINESE DIGIT TWO → BALINESE LETTER LA LENGA       # 
+
+1B53 ; 1B11 ;  SL      # ( ᭓ → ᬑ ) BALINESE DIGIT THREE → BALINESE LETTER OKARA        # 
+
+1B58 ; 1B28 ;  SL      # ( ᭘ → ᬨ ) BALINESE DIGIT EIGHT → BALINESE LETTER PA KAPAL     # 
+
+1896 ; 185C ;  SL      # ( ᢖ → ᡜ ) MONGOLIAN LETTER ALI GALI ZA → MONGOLIAN LETTER TODO DZA    # 
+
+1855 ; 1835 ;  SL      # ( ᡕ → ᠵ ) MONGOLIAN LETTER TODO YA → MONGOLIAN LETTER JA      # 
+
+13D2 ; 13A1 ;  SL      # ( Ꮢ → Ꭱ ) CHEROKEE LETTER SV → CHEROKEE LETTER E      # 
+
+27D9 ; 13A2 ;  SL      #* ( ⟙ → Ꭲ ) LARGE DOWN TACK → CHEROKEE LETTER I        # →T→
+1D413 ;        13A2 ;  SL      # ( 𝐓 → Ꭲ ) MATHEMATICAL BOLD CAPITAL T → CHEROKEE LETTER I    # →T→
+1D447 ;        13A2 ;  SL      # ( 𝑇 → Ꭲ ) MATHEMATICAL ITALIC CAPITAL T → CHEROKEE LETTER I  # →T→
+1D47B ;        13A2 ;  SL      # ( 𝑻 → Ꭲ ) MATHEMATICAL BOLD ITALIC CAPITAL T → CHEROKEE LETTER I     # →T→
+1D4AF ;        13A2 ;  SL      # ( 𝒯 → Ꭲ ) MATHEMATICAL SCRIPT CAPITAL T → CHEROKEE LETTER I  # →T→
+1D4E3 ;        13A2 ;  SL      # ( 𝓣 → Ꭲ ) MATHEMATICAL BOLD SCRIPT CAPITAL T → CHEROKEE LETTER I     # →T→
+1D517 ;        13A2 ;  SL      # ( 𝔗 → Ꭲ ) MATHEMATICAL FRAKTUR CAPITAL T → CHEROKEE LETTER I # →T→
+1D54B ;        13A2 ;  SL      # ( 𝕋 → Ꭲ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL T → CHEROKEE LETTER I   # →T→
+1D57F ;        13A2 ;  SL      # ( 𝕿 → Ꭲ ) MATHEMATICAL BOLD FRAKTUR CAPITAL T → CHEROKEE LETTER I    # →T→
+1D5B3 ;        13A2 ;  SL      # ( 𝖳 → Ꭲ ) MATHEMATICAL SANS-SERIF CAPITAL T → CHEROKEE LETTER I      # →T→
+1D5E7 ;        13A2 ;  SL      # ( 𝗧 → Ꭲ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL T → CHEROKEE LETTER I # →T→
+1D61B ;        13A2 ;  SL      # ( 𝘛 → Ꭲ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL T → CHEROKEE LETTER I       # →T→
+1D64F ;        13A2 ;  SL      # ( 𝙏 → Ꭲ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T → CHEROKEE LETTER I  # →T→
+1D683 ;        13A2 ;  SL      # ( 𝚃 → Ꭲ ) MATHEMATICAL MONOSPACE CAPITAL T → CHEROKEE LETTER I       # →T→
+1D6BB ;        13A2 ;  SL      # ( 𝚻 → Ꭲ ) MATHEMATICAL BOLD CAPITAL TAU → CHEROKEE LETTER I  # →Τ→
+1D6F5 ;        13A2 ;  SL      # ( 𝛵 → Ꭲ ) MATHEMATICAL ITALIC CAPITAL TAU → CHEROKEE LETTER I        # →Τ→
+1D72F ;        13A2 ;  SL      # ( 𝜯 → Ꭲ ) MATHEMATICAL BOLD ITALIC CAPITAL TAU → CHEROKEE LETTER I   # →Τ→
+1D769 ;        13A2 ;  SL      # ( 𝝩 → Ꭲ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU → CHEROKEE LETTER I       # →Τ→
+1D7A3 ;        13A2 ;  SL      # ( 𝞣 → Ꭲ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU → CHEROKEE LETTER I        # →Τ→
+
+1D418 ;        13A9 ;  SL      # ( 𝐘 → Ꭹ ) MATHEMATICAL BOLD CAPITAL Y → CHEROKEE LETTER GI   # →Y→
+1D44C ;        13A9 ;  SL      # ( 𝑌 → Ꭹ ) MATHEMATICAL ITALIC CAPITAL Y → CHEROKEE LETTER GI # →Y→
+1D480 ;        13A9 ;  SL      # ( 𝒀 → Ꭹ ) MATHEMATICAL BOLD ITALIC CAPITAL Y → CHEROKEE LETTER GI    # →Y→
+1D4B4 ;        13A9 ;  SL      # ( 𝒴 → Ꭹ ) MATHEMATICAL SCRIPT CAPITAL Y → CHEROKEE LETTER GI # →Y→
+1D4E8 ;        13A9 ;  SL      # ( 𝓨 → Ꭹ ) MATHEMATICAL BOLD SCRIPT CAPITAL Y → CHEROKEE LETTER GI    # →Y→
+1D51C ;        13A9 ;  SL      # ( 𝔜 → Ꭹ ) MATHEMATICAL FRAKTUR CAPITAL Y → CHEROKEE LETTER GI        # →Y→
+1D550 ;        13A9 ;  SL      # ( 𝕐 → Ꭹ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL Y → CHEROKEE LETTER GI  # →Y→
+1D584 ;        13A9 ;  SL      # ( 𝖄 → Ꭹ ) MATHEMATICAL BOLD FRAKTUR CAPITAL Y → CHEROKEE LETTER GI   # →Y→
+1D5B8 ;        13A9 ;  SL      # ( 𝖸 → Ꭹ ) MATHEMATICAL SANS-SERIF CAPITAL Y → CHEROKEE LETTER GI     # →Y→
+1D5EC ;        13A9 ;  SL      # ( 𝗬 → Ꭹ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL Y → CHEROKEE LETTER GI        # →Y→
+1D620 ;        13A9 ;  SL      # ( 𝘠 → Ꭹ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y → CHEROKEE LETTER GI      # →Y→
+1D654 ;        13A9 ;  SL      # ( 𝙔 → Ꭹ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y → CHEROKEE LETTER GI # →Y→
+1D688 ;        13A9 ;  SL      # ( 𝚈 → Ꭹ ) MATHEMATICAL MONOSPACE CAPITAL Y → CHEROKEE LETTER GI      # →Y→
+1D6BC ;        13A9 ;  SL      # ( 𝚼 → Ꭹ ) MATHEMATICAL BOLD CAPITAL UPSILON → CHEROKEE LETTER GI     # →Υ→→Y→
+1D6F6 ;        13A9 ;  SL      # ( 𝛶 → Ꭹ ) MATHEMATICAL ITALIC CAPITAL UPSILON → CHEROKEE LETTER GI   # →Υ→→Y→
+1D730 ;        13A9 ;  SL      # ( 𝜰 → Ꭹ ) MATHEMATICAL BOLD ITALIC CAPITAL UPSILON → CHEROKEE LETTER GI      # →Υ→→Y→
+1D76A ;        13A9 ;  SL      # ( 𝝪 → Ꭹ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON → CHEROKEE LETTER GI  # →Υ→→Y→
+1D7A4 ;        13A9 ;  SL      # ( 𝞤 → Ꭹ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON → CHEROKEE LETTER GI   # →Υ→→Y→
+13BD ; 13A9 ;  SL      # ( Ꮍ → Ꭹ ) CHEROKEE LETTER MU → CHEROKEE LETTER GI     # 
+
+13E7 ; 13AB ;  SL      # ( Ꮷ → Ꭻ ) CHEROKEE LETTER TSU → CHEROKEE LETTER GU    # →J→
+
+1D416 ;        13B3 ;  SL      # ( 𝐖 → Ꮃ ) MATHEMATICAL BOLD CAPITAL W → CHEROKEE LETTER LA   # →W→
+1D44A ;        13B3 ;  SL      # ( 𝑊 → Ꮃ ) MATHEMATICAL ITALIC CAPITAL W → CHEROKEE LETTER LA # →W→
+1D47E ;        13B3 ;  SL      # ( 𝑾 → Ꮃ ) MATHEMATICAL BOLD ITALIC CAPITAL W → CHEROKEE LETTER LA    # →W→
+1D4B2 ;        13B3 ;  SL      # ( 𝒲 → Ꮃ ) MATHEMATICAL SCRIPT CAPITAL W → CHEROKEE LETTER LA # →W→
+1D4E6 ;        13B3 ;  SL      # ( 𝓦 → Ꮃ ) MATHEMATICAL BOLD SCRIPT CAPITAL W → CHEROKEE LETTER LA    # →W→
+1D51A ;        13B3 ;  SL      # ( 𝔚 → Ꮃ ) MATHEMATICAL FRAKTUR CAPITAL W → CHEROKEE LETTER LA        # →W→
+1D54E ;        13B3 ;  SL      # ( 𝕎 → Ꮃ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL W → CHEROKEE LETTER LA  # →W→
+1D582 ;        13B3 ;  SL      # ( 𝖂 → Ꮃ ) MATHEMATICAL BOLD FRAKTUR CAPITAL W → CHEROKEE LETTER LA   # →W→
+1D5B6 ;        13B3 ;  SL      # ( 𝖶 → Ꮃ ) MATHEMATICAL SANS-SERIF CAPITAL W → CHEROKEE LETTER LA     # →W→
+1D5EA ;        13B3 ;  SL      # ( 𝗪 → Ꮃ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL W → CHEROKEE LETTER LA        # →W→
+1D61E ;        13B3 ;  SL      # ( 𝘞 → Ꮃ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL W → CHEROKEE LETTER LA      # →W→
+1D652 ;        13B3 ;  SL      # ( 𝙒 → Ꮃ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W → CHEROKEE LETTER LA # →W→
+1D686 ;        13B3 ;  SL      # ( 𝚆 → Ꮃ ) MATHEMATICAL MONOSPACE CAPITAL W → CHEROKEE LETTER LA      # →W→
+13D4 ; 13B3 ;  SL      # ( Ꮤ → Ꮃ ) CHEROKEE LETTER TA → CHEROKEE LETTER LA     # 
+
+1D406 ;        13C0 ;  SL      # ( 𝐆 → Ꮐ ) MATHEMATICAL BOLD CAPITAL G → CHEROKEE LETTER NAH  # →G→
+1D43A ;        13C0 ;  SL      # ( 𝐺 → Ꮐ ) MATHEMATICAL ITALIC CAPITAL G → CHEROKEE LETTER NAH        # →G→
+1D46E ;        13C0 ;  SL      # ( 𝑮 → Ꮐ ) MATHEMATICAL BOLD ITALIC CAPITAL G → CHEROKEE LETTER NAH   # →G→
+1D4A2 ;        13C0 ;  SL      # ( 𝒢 → Ꮐ ) MATHEMATICAL SCRIPT CAPITAL G → CHEROKEE LETTER NAH        # →G→
+1D4D6 ;        13C0 ;  SL      # ( 𝓖 → Ꮐ ) MATHEMATICAL BOLD SCRIPT CAPITAL G → CHEROKEE LETTER NAH   # →G→
+1D50A ;        13C0 ;  SL      # ( 𝔊 → Ꮐ ) MATHEMATICAL FRAKTUR CAPITAL G → CHEROKEE LETTER NAH       # →G→
+1D53E ;        13C0 ;  SL      # ( 𝔾 → Ꮐ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL G → CHEROKEE LETTER NAH # →G→
+1D572 ;        13C0 ;  SL      # ( 𝕲 → Ꮐ ) MATHEMATICAL BOLD FRAKTUR CAPITAL G → CHEROKEE LETTER NAH  # →G→
+1D5A6 ;        13C0 ;  SL      # ( 𝖦 → Ꮐ ) MATHEMATICAL SANS-SERIF CAPITAL G → CHEROKEE LETTER NAH    # →G→
+1D5DA ;        13C0 ;  SL      # ( 𝗚 → Ꮐ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL G → CHEROKEE LETTER NAH       # →G→
+1D60E ;        13C0 ;  SL      # ( 𝘎 → Ꮐ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL G → CHEROKEE LETTER NAH     # →G→
+1D642 ;        13C0 ;  SL      # ( 𝙂 → Ꮐ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G → CHEROKEE LETTER NAH        # →G→
+1D676 ;        13C0 ;  SL      # ( 𝙶 → Ꮐ ) MATHEMATICAL MONOSPACE CAPITAL G → CHEROKEE LETTER NAH     # →G→
+13F3 ; 13C0 ;  SL      # ( Ᏻ → Ꮐ ) CHEROKEE LETTER YU → CHEROKEE LETTER NAH    # 
+
+2124 ; 13C3 ;  SL      # ( ℤ → Ꮓ ) DOUBLE-STRUCK CAPITAL Z → CHEROKEE LETTER NO        # →Z→
+2128 ; 13C3 ;  SL      # ( ℨ → Ꮓ ) BLACK-LETTER CAPITAL Z → CHEROKEE LETTER NO # →Z→
+1D419 ;        13C3 ;  SL      # ( 𝐙 → Ꮓ ) MATHEMATICAL BOLD CAPITAL Z → CHEROKEE LETTER NO   # →Z→
+1D44D ;        13C3 ;  SL      # ( 𝑍 → Ꮓ ) MATHEMATICAL ITALIC CAPITAL Z → CHEROKEE LETTER NO # →Z→
+1D481 ;        13C3 ;  SL      # ( 𝒁 → Ꮓ ) MATHEMATICAL BOLD ITALIC CAPITAL Z → CHEROKEE LETTER NO    # →Z→
+1D4B5 ;        13C3 ;  SL      # ( 𝒵 → Ꮓ ) MATHEMATICAL SCRIPT CAPITAL Z → CHEROKEE LETTER NO # →Z→
+1D4E9 ;        13C3 ;  SL      # ( 𝓩 → Ꮓ ) MATHEMATICAL BOLD SCRIPT CAPITAL Z → CHEROKEE LETTER NO    # →Z→
+1D585 ;        13C3 ;  SL      # ( 𝖅 → Ꮓ ) MATHEMATICAL BOLD FRAKTUR CAPITAL Z → CHEROKEE LETTER NO   # →Z→
+1D5B9 ;        13C3 ;  SL      # ( 𝖹 → Ꮓ ) MATHEMATICAL SANS-SERIF CAPITAL Z → CHEROKEE LETTER NO     # →Z→
+1D5ED ;        13C3 ;  SL      # ( 𝗭 → Ꮓ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL Z → CHEROKEE LETTER NO        # →Z→
+1D621 ;        13C3 ;  SL      # ( 𝘡 → Ꮓ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z → CHEROKEE LETTER NO      # →Z→
+1D655 ;        13C3 ;  SL      # ( 𝙕 → Ꮓ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z → CHEROKEE LETTER NO # →Z→
+1D689 ;        13C3 ;  SL      # ( 𝚉 → Ꮓ ) MATHEMATICAL MONOSPACE CAPITAL Z → CHEROKEE LETTER NO      # →Z→
+1D6AD ;        13C3 ;  SL      # ( 𝚭 → Ꮓ ) MATHEMATICAL BOLD CAPITAL ZETA → CHEROKEE LETTER NO        # →Ζ→
+1D6E7 ;        13C3 ;  SL      # ( 𝛧 → Ꮓ ) MATHEMATICAL ITALIC CAPITAL ZETA → CHEROKEE LETTER NO      # →Ζ→
+1D721 ;        13C3 ;  SL      # ( 𝜡 → Ꮓ ) MATHEMATICAL BOLD ITALIC CAPITAL ZETA → CHEROKEE LETTER NO # →Ζ→
+1D75B ;        13C3 ;  SL      # ( 𝝛 → Ꮓ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA → CHEROKEE LETTER NO     # →Ζ→
+1D795 ;        13C3 ;  SL      # ( 𝞕 → Ꮓ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA → CHEROKEE LETTER NO      # →Ζ→
+
+1D412 ;        13D5 ;  SL      # ( 𝐒 → Ꮥ ) MATHEMATICAL BOLD CAPITAL S → CHEROKEE LETTER DE   # →S→→Ꮪ→
+1D446 ;        13D5 ;  SL      # ( 𝑆 → Ꮥ ) MATHEMATICAL ITALIC CAPITAL S → CHEROKEE LETTER DE # →S→→Ꮪ→
+1D47A ;        13D5 ;  SL      # ( 𝑺 → Ꮥ ) MATHEMATICAL BOLD ITALIC CAPITAL S → CHEROKEE LETTER DE    # →S→→Ꮪ→
+1D4AE ;        13D5 ;  SL      # ( 𝒮 → Ꮥ ) MATHEMATICAL SCRIPT CAPITAL S → CHEROKEE LETTER DE # →S→→Ꮪ→
+1D4E2 ;        13D5 ;  SL      # ( 𝓢 → Ꮥ ) MATHEMATICAL BOLD SCRIPT CAPITAL S → CHEROKEE LETTER DE    # →S→→Ꮪ→
+1D516 ;        13D5 ;  SL      # ( 𝔖 → Ꮥ ) MATHEMATICAL FRAKTUR CAPITAL S → CHEROKEE LETTER DE        # →S→→Ꮪ→
+1D54A ;        13D5 ;  SL      # ( 𝕊 → Ꮥ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL S → CHEROKEE LETTER DE  # →S→→Ꮪ→
+1D57E ;        13D5 ;  SL      # ( 𝕾 → Ꮥ ) MATHEMATICAL BOLD FRAKTUR CAPITAL S → CHEROKEE LETTER DE   # →S→→Ꮪ→
+1D5B2 ;        13D5 ;  SL      # ( 𝖲 → Ꮥ ) MATHEMATICAL SANS-SERIF CAPITAL S → CHEROKEE LETTER DE     # →S→→Ꮪ→
+1D5E6 ;        13D5 ;  SL      # ( 𝗦 → Ꮥ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL S → CHEROKEE LETTER DE        # →S→→Ꮪ→
+1D61A ;        13D5 ;  SL      # ( 𝘚 → Ꮥ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL S → CHEROKEE LETTER DE      # →S→→Ꮪ→
+1D64E ;        13D5 ;  SL      # ( 𝙎 → Ꮥ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S → CHEROKEE LETTER DE # →S→→Ꮪ→
+1D682 ;        13D5 ;  SL      # ( 𝚂 → Ꮥ ) MATHEMATICAL MONOSPACE CAPITAL S → CHEROKEE LETTER DE      # →S→→Ꮪ→
+13DA ; 13D5 ;  SL      # ( Ꮪ → Ꮥ ) CHEROKEE LETTER DU → CHEROKEE LETTER DE     # 
+
+1D40A ;        13E6 ;  SL      # ( 𝐊 → Ꮶ ) MATHEMATICAL BOLD CAPITAL K → CHEROKEE LETTER TSO  # →K→
+1D43E ;        13E6 ;  SL      # ( 𝐾 → Ꮶ ) MATHEMATICAL ITALIC CAPITAL K → CHEROKEE LETTER TSO        # →K→
+1D472 ;        13E6 ;  SL      # ( 𝑲 → Ꮶ ) MATHEMATICAL BOLD ITALIC CAPITAL K → CHEROKEE LETTER TSO   # →K→
+1D4A6 ;        13E6 ;  SL      # ( 𝒦 → Ꮶ ) MATHEMATICAL SCRIPT CAPITAL K → CHEROKEE LETTER TSO        # →K→
+1D4DA ;        13E6 ;  SL      # ( 𝓚 → Ꮶ ) MATHEMATICAL BOLD SCRIPT CAPITAL K → CHEROKEE LETTER TSO   # →K→
+1D50E ;        13E6 ;  SL      # ( 𝔎 → Ꮶ ) MATHEMATICAL FRAKTUR CAPITAL K → CHEROKEE LETTER TSO       # →K→
+1D542 ;        13E6 ;  SL      # ( 𝕂 → Ꮶ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL K → CHEROKEE LETTER TSO # →K→
+1D576 ;        13E6 ;  SL      # ( 𝕶 → Ꮶ ) MATHEMATICAL BOLD FRAKTUR CAPITAL K → CHEROKEE LETTER TSO  # →K→
+1D5AA ;        13E6 ;  SL      # ( 𝖪 → Ꮶ ) MATHEMATICAL SANS-SERIF CAPITAL K → CHEROKEE LETTER TSO    # →K→
+1D5DE ;        13E6 ;  SL      # ( 𝗞 → Ꮶ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL K → CHEROKEE LETTER TSO       # →K→
+1D612 ;        13E6 ;  SL      # ( 𝘒 → Ꮶ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL K → CHEROKEE LETTER TSO     # →K→
+1D646 ;        13E6 ;  SL      # ( 𝙆 → Ꮶ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K → CHEROKEE LETTER TSO        # →K→
+1D67A ;        13E6 ;  SL      # ( 𝙺 → Ꮶ ) MATHEMATICAL MONOSPACE CAPITAL K → CHEROKEE LETTER TSO     # →K→
+1D6B1 ;        13E6 ;  SL      # ( 𝚱 → Ꮶ ) MATHEMATICAL BOLD CAPITAL KAPPA → CHEROKEE LETTER TSO      # →Κ→→K→
+1D6EB ;        13E6 ;  SL      # ( 𝛫 → Ꮶ ) MATHEMATICAL ITALIC CAPITAL KAPPA → CHEROKEE LETTER TSO    # →Κ→→K→
+1D725 ;        13E6 ;  SL      # ( 𝜥 → Ꮶ ) MATHEMATICAL BOLD ITALIC CAPITAL KAPPA → CHEROKEE LETTER TSO       # →Κ→→K→
+1D75F ;        13E6 ;  SL      # ( 𝝟 → Ꮶ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA → CHEROKEE LETTER TSO   # →Κ→→K→
+1D799 ;        13E6 ;  SL      # ( 𝞙 → Ꮶ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA → CHEROKEE LETTER TSO    # →Κ→→K→
+
+140D ; 1401 00B7 ;     SL      # ( ᐍ → ᐁ· ) CANADIAN SYLLABICS WEST-CREE WE → CANADIAN SYLLABICS E, MIDDLE DOT        # →ᐁᐧ→
+
+2206 ; 1403 ;  SL      #* ( ∆ → ᐃ ) INCREMENT → CANADIAN SYLLABICS I   # →Δ→
+1D6AB ;        1403 ;  SL      # ( 𝚫 → ᐃ ) MATHEMATICAL BOLD CAPITAL DELTA → CANADIAN SYLLABICS I     # →Δ→
+1D6E5 ;        1403 ;  SL      # ( 𝛥 → ᐃ ) MATHEMATICAL ITALIC CAPITAL DELTA → CANADIAN SYLLABICS I   # →Δ→
+1D71F ;        1403 ;  SL      # ( 𝜟 → ᐃ ) MATHEMATICAL BOLD ITALIC CAPITAL DELTA → CANADIAN SYLLABICS I      # →Δ→
+1D759 ;        1403 ;  SL      # ( 𝝙 → ᐃ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA → CANADIAN SYLLABICS I  # →Δ→
+1D793 ;        1403 ;  SL      # ( 𝞓 → ᐃ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA → CANADIAN SYLLABICS I   # →Δ→
+
+140F ; 1403 00B7 ;     SL      # ( ᐏ → ᐃ· ) CANADIAN SYLLABICS WEST-CREE WI → CANADIAN SYLLABICS I, MIDDLE DOT        # →ᐃᐧ→
+
+1411 ; 1404 00B7 ;     SL      # ( ᐑ → ᐄ· ) CANADIAN SYLLABICS WEST-CREE WII → CANADIAN SYLLABICS II, MIDDLE DOT      # →ᐄᐧ→
+
+1413 ; 1405 00B7 ;     SL      # ( ᐓ → ᐅ· ) CANADIAN SYLLABICS WEST-CREE WO → CANADIAN SYLLABICS O, MIDDLE DOT        # →ᐅᐧ→
+
+1415 ; 1406 00B7 ;     SL      # ( ᐕ → ᐆ· ) CANADIAN SYLLABICS WEST-CREE WOO → CANADIAN SYLLABICS OO, MIDDLE DOT      # →ᐆᐧ→
+
+1418 ; 140A 00B7 ;     SL      # ( ᐘ → ᐊ· ) CANADIAN SYLLABICS WEST-CREE WA → CANADIAN SYLLABICS A, MIDDLE DOT        # →ᐊᐧ→
+
+141A ; 140B 00B7 ;     SL      # ( ᐚ → ᐋ· ) CANADIAN SYLLABICS WEST-CREE WAA → CANADIAN SYLLABICS AA, MIDDLE DOT      # →ᐋᐧ→
+
+14D1 ; 1421 ;  SL      # ( ᓑ → ᐡ ) CANADIAN SYLLABICS CARRIER NG → CANADIAN SYLLABICS FINAL BOTTOM HALF RING   # 
+
+1476 ; 1427 146D ;     SL      # ( ᑶ → ᐧᑭ ) CANADIAN SYLLABICS KWI → CANADIAN SYLLABICS FINAL MIDDLE DOT, CANADIAN SYLLABICS KI      # 
+
+147A ; 1427 146F ;     SL      # ( ᑺ → ᐧᑯ ) CANADIAN SYLLABICS KWO → CANADIAN SYLLABICS FINAL MIDDLE DOT, CANADIAN SYLLABICS KO      # 
+
+1498 ; 1427 148D ;     SL      # ( ᒘ → ᐧᒍ ) CANADIAN SYLLABICS CWO → CANADIAN SYLLABICS FINAL MIDDLE DOT, CANADIAN SYLLABICS CO      # 
+
+1540 ; 1429 ;  SL      # ( ᕀ → ᐩ ) CANADIAN SYLLABICS WEST-CREE Y → CANADIAN SYLLABICS FINAL PLUS      # 
+
+1D415 ;        142F ;  SL      # ( 𝐕 → ᐯ ) MATHEMATICAL BOLD CAPITAL V → CANADIAN SYLLABICS PE        # →V→
+1D449 ;        142F ;  SL      # ( 𝑉 → ᐯ ) MATHEMATICAL ITALIC CAPITAL V → CANADIAN SYLLABICS PE      # →V→
+1D47D ;        142F ;  SL      # ( 𝑽 → ᐯ ) MATHEMATICAL BOLD ITALIC CAPITAL V → CANADIAN SYLLABICS PE # →V→
+1D4B1 ;        142F ;  SL      # ( 𝒱 → ᐯ ) MATHEMATICAL SCRIPT CAPITAL V → CANADIAN SYLLABICS PE      # →V→
+1D4E5 ;        142F ;  SL      # ( 𝓥 → ᐯ ) MATHEMATICAL BOLD SCRIPT CAPITAL V → CANADIAN SYLLABICS PE # →V→
+1D519 ;        142F ;  SL      # ( 𝔙 → ᐯ ) MATHEMATICAL FRAKTUR CAPITAL V → CANADIAN SYLLABICS PE     # →V→
+1D54D ;        142F ;  SL      # ( 𝕍 → ᐯ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL V → CANADIAN SYLLABICS PE       # →V→
+1D581 ;        142F ;  SL      # ( 𝖁 → ᐯ ) MATHEMATICAL BOLD FRAKTUR CAPITAL V → CANADIAN SYLLABICS PE        # →V→
+1D5B5 ;        142F ;  SL      # ( 𝖵 → ᐯ ) MATHEMATICAL SANS-SERIF CAPITAL V → CANADIAN SYLLABICS PE  # →V→
+1D5E9 ;        142F ;  SL      # ( 𝗩 → ᐯ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL V → CANADIAN SYLLABICS PE     # →V→
+1D61D ;        142F ;  SL      # ( 𝘝 → ᐯ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL V → CANADIAN SYLLABICS PE   # →V→
+1D651 ;        142F ;  SL      # ( 𝙑 → ᐯ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V → CANADIAN SYLLABICS PE      # →V→
+1D685 ;        142F ;  SL      # ( 𝚅 → ᐯ ) MATHEMATICAL MONOSPACE CAPITAL V → CANADIAN SYLLABICS PE   # →V→
+
+1D6B2 ;        1431 ;  SL      # ( 𝚲 → ᐱ ) MATHEMATICAL BOLD CAPITAL LAMDA → CANADIAN SYLLABICS PI    # →Λ→
+1D6EC ;        1431 ;  SL      # ( 𝛬 → ᐱ ) MATHEMATICAL ITALIC CAPITAL LAMDA → CANADIAN SYLLABICS PI  # →Λ→
+1D726 ;        1431 ;  SL      # ( 𝜦 → ᐱ ) MATHEMATICAL BOLD ITALIC CAPITAL LAMDA → CANADIAN SYLLABICS PI     # →Λ→
+1D760 ;        1431 ;  SL      # ( 𝝠 → ᐱ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA → CANADIAN SYLLABICS PI # →Λ→
+1D79A ;        1431 ;  SL      # ( 𝞚 → ᐱ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA → CANADIAN SYLLABICS PI  # →Λ→
+
+1441 ; 1433 00B7 ;     SL      # ( ᑁ → ᐳ· ) CANADIAN SYLLABICS WEST-CREE PWO → CANADIAN SYLLABICS PO, MIDDLE DOT      # →ᐳᐧ→
+
+1443 ; 1434 00B7 ;     SL      # ( ᑃ → ᐴ· ) CANADIAN SYLLABICS WEST-CREE PWOO → CANADIAN SYLLABICS POO, MIDDLE DOT    # →ᐴᐧ→
+
+1445 ; 1438 00B7 ;     SL      # ( ᑅ → ᐸ· ) CANADIAN SYLLABICS WEST-CREE PWA → CANADIAN SYLLABICS PA, MIDDLE DOT      # →ᐸᐧ→
+
+1447 ; 1439 00B7 ;     SL      # ( ᑇ → ᐹ· ) CANADIAN SYLLABICS WEST-CREE PWAA → CANADIAN SYLLABICS PAA, MIDDLE DOT    # →ᐹᐧ→
+
+02C8 ; 144A ;  SL      # ( ˈ → ᑊ ) MODIFIER LETTER VERTICAL LINE → CANADIAN SYLLABICS WEST-CREE P       # 
+
+1D414 ;        144C ;  SL      # ( 𝐔 → ᑌ ) MATHEMATICAL BOLD CAPITAL U → CANADIAN SYLLABICS TE        # →U→
+1D448 ;        144C ;  SL      # ( 𝑈 → ᑌ ) MATHEMATICAL ITALIC CAPITAL U → CANADIAN SYLLABICS TE      # →U→
+1D47C ;        144C ;  SL      # ( 𝑼 → ᑌ ) MATHEMATICAL BOLD ITALIC CAPITAL U → CANADIAN SYLLABICS TE # →U→
+1D4B0 ;        144C ;  SL      # ( 𝒰 → ᑌ ) MATHEMATICAL SCRIPT CAPITAL U → CANADIAN SYLLABICS TE      # →U→
+1D4E4 ;        144C ;  SL      # ( 𝓤 → ᑌ ) MATHEMATICAL BOLD SCRIPT CAPITAL U → CANADIAN SYLLABICS TE # →U→
+1D518 ;        144C ;  SL      # ( 𝔘 → ᑌ ) MATHEMATICAL FRAKTUR CAPITAL U → CANADIAN SYLLABICS TE     # →U→
+1D54C ;        144C ;  SL      # ( 𝕌 → ᑌ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL U → CANADIAN SYLLABICS TE       # →U→
+1D580 ;        144C ;  SL      # ( 𝖀 → ᑌ ) MATHEMATICAL BOLD FRAKTUR CAPITAL U → CANADIAN SYLLABICS TE        # →U→
+1D5B4 ;        144C ;  SL      # ( 𝖴 → ᑌ ) MATHEMATICAL SANS-SERIF CAPITAL U → CANADIAN SYLLABICS TE  # →U→
+1D5E8 ;        144C ;  SL      # ( 𝗨 → ᑌ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL U → CANADIAN SYLLABICS TE     # →U→
+1D61C ;        144C ;  SL      # ( 𝘜 → ᑌ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL U → CANADIAN SYLLABICS TE   # →U→
+1D650 ;        144C ;  SL      # ( 𝙐 → ᑌ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U → CANADIAN SYLLABICS TE      # →U→
+1D684 ;        144C ;  SL      # ( 𝚄 → ᑌ ) MATHEMATICAL MONOSPACE CAPITAL U → CANADIAN SYLLABICS TE   # →U→
+
+1458 ; 144C 00B7 ;     SL      # ( ᑘ → ᑌ· ) CANADIAN SYLLABICS WEST-CREE TWE → CANADIAN SYLLABICS TE, MIDDLE DOT      # →ᑌᐧ→
+
+1467 ; 144C 144A ;     SL      # ( ᑧ → ᑌᑊ ) CANADIAN SYLLABICS TTE → CANADIAN SYLLABICS TE, CANADIAN SYLLABICS WEST-CREE P   # 
+
+145A ; 144E 00B7 ;     SL      # ( ᑚ → ᑎ· ) CANADIAN SYLLABICS WEST-CREE TWI → CANADIAN SYLLABICS TI, MIDDLE DOT      # →ᑎᐧ→
+
+1468 ; 144E 144A ;     SL      # ( ᑨ → ᑎᑊ ) CANADIAN SYLLABICS TTI → CANADIAN SYLLABICS TI, CANADIAN SYLLABICS WEST-CREE P   # 
+
+145C ; 144F 00B7 ;     SL      # ( ᑜ → ᑏ· ) CANADIAN SYLLABICS WEST-CREE TWII → CANADIAN SYLLABICS TII, MIDDLE DOT    # →ᑏᐧ→
+
+145E ; 1450 00B7 ;     SL      # ( ᑞ → ᑐ· ) CANADIAN SYLLABICS WEST-CREE TWO → CANADIAN SYLLABICS TO, MIDDLE DOT      # →ᑐᐧ→
+
+1469 ; 1450 144A ;     SL      # ( ᑩ → ᑐᑊ ) CANADIAN SYLLABICS TTO → CANADIAN SYLLABICS TO, CANADIAN SYLLABICS WEST-CREE P   # 
+
+1460 ; 1451 00B7 ;     SL      # ( ᑠ → ᑑ· ) CANADIAN SYLLABICS WEST-CREE TWOO → CANADIAN SYLLABICS TOO, MIDDLE DOT    # →ᑑᐧ→
+
+1462 ; 1455 00B7 ;     SL      # ( ᑢ → ᑕ· ) CANADIAN SYLLABICS WEST-CREE TWA → CANADIAN SYLLABICS TA, MIDDLE DOT      # →ᑕᐧ→
+
+146A ; 1455 144A ;     SL      # ( ᑪ → ᑕᑊ ) CANADIAN SYLLABICS TTA → CANADIAN SYLLABICS TA, CANADIAN SYLLABICS WEST-CREE P   # 
+
+1464 ; 1456 00B7 ;     SL      # ( ᑤ → ᑖ· ) CANADIAN SYLLABICS WEST-CREE TWAA → CANADIAN SYLLABICS TAA, MIDDLE DOT    # →ᑖᐧ→
+
+1475 ; 146B 00B7 ;     SL      # ( ᑵ → ᑫ· ) CANADIAN SYLLABICS WEST-CREE KWE → CANADIAN SYLLABICS KE, MIDDLE DOT      # →ᑫᐧ→
+
+1485 ; 146B 144A ;     SL      # ( ᒅ → ᑫᑊ ) CANADIAN SYLLABICS SOUTH-SLAVEY KEH → CANADIAN SYLLABICS KE, CANADIAN SYLLABICS WEST-CREE P      # 
+
+2119 ; 146D ;  SL      # ( ℙ → ᑭ ) DOUBLE-STRUCK CAPITAL P → CANADIAN SYLLABICS KI     # →P→
+1D40F ;        146D ;  SL      # ( 𝐏 → ᑭ ) MATHEMATICAL BOLD CAPITAL P → CANADIAN SYLLABICS KI        # →P→
+1D443 ;        146D ;  SL      # ( 𝑃 → ᑭ ) MATHEMATICAL ITALIC CAPITAL P → CANADIAN SYLLABICS KI      # →P→
+1D477 ;        146D ;  SL      # ( 𝑷 → ᑭ ) MATHEMATICAL BOLD ITALIC CAPITAL P → CANADIAN SYLLABICS KI # →P→
+1D4AB ;        146D ;  SL      # ( 𝒫 → ᑭ ) MATHEMATICAL SCRIPT CAPITAL P → CANADIAN SYLLABICS KI      # →P→
+1D4DF ;        146D ;  SL      # ( 𝓟 → ᑭ ) MATHEMATICAL BOLD SCRIPT CAPITAL P → CANADIAN SYLLABICS KI # →P→
+1D513 ;        146D ;  SL      # ( 𝔓 → ᑭ ) MATHEMATICAL FRAKTUR CAPITAL P → CANADIAN SYLLABICS KI     # →P→
+1D57B ;        146D ;  SL      # ( 𝕻 → ᑭ ) MATHEMATICAL BOLD FRAKTUR CAPITAL P → CANADIAN SYLLABICS KI        # →P→
+1D5AF ;        146D ;  SL      # ( 𝖯 → ᑭ ) MATHEMATICAL SANS-SERIF CAPITAL P → CANADIAN SYLLABICS KI  # →P→
+1D5E3 ;        146D ;  SL      # ( 𝗣 → ᑭ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL P → CANADIAN SYLLABICS KI     # →P→
+1D617 ;        146D ;  SL      # ( 𝘗 → ᑭ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL P → CANADIAN SYLLABICS KI   # →P→
+1D64B ;        146D ;  SL      # ( 𝙋 → ᑭ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P → CANADIAN SYLLABICS KI      # →P→
+1D67F ;        146D ;  SL      # ( 𝙿 → ᑭ ) MATHEMATICAL MONOSPACE CAPITAL P → CANADIAN SYLLABICS KI   # →P→
+1D6B8 ;        146D ;  SL      # ( 𝚸 → ᑭ ) MATHEMATICAL BOLD CAPITAL RHO → CANADIAN SYLLABICS KI      # →𝐏→→P→
+1D6F2 ;        146D ;  SL      # ( 𝛲 → ᑭ ) MATHEMATICAL ITALIC CAPITAL RHO → CANADIAN SYLLABICS KI    # →𝑃→→P→
+1D72C ;        146D ;  SL      # ( 𝜬 → ᑭ ) MATHEMATICAL BOLD ITALIC CAPITAL RHO → CANADIAN SYLLABICS KI       # →𝑷→→P→
+1D766 ;        146D ;  SL      # ( 𝝦 → ᑭ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO → CANADIAN SYLLABICS KI   # →Ρ→→P→
+1D7A0 ;        146D ;  SL      # ( 𝞠 → ᑭ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO → CANADIAN SYLLABICS KI    # →Ρ→→P→
+
+1477 ; 146D 1427 ;     SL      # ( ᑷ → ᑭᐧ ) CANADIAN SYLLABICS WEST-CREE KWI → CANADIAN SYLLABICS KI, CANADIAN SYLLABICS FINAL MIDDLE DOT    # 
+
+1486 ; 146D 144A ;     SL      # ( ᒆ → ᑭᑊ ) CANADIAN SYLLABICS SOUTH-SLAVEY KIH → CANADIAN SYLLABICS KI, CANADIAN SYLLABICS WEST-CREE P      # 
+
+1479 ; 146E 00B7 ;     SL      # ( ᑹ → ᑮ· ) CANADIAN SYLLABICS WEST-CREE KWII → CANADIAN SYLLABICS KII, MIDDLE DOT    # →ᑮᐧ→
+
+147B ; 146F 1427 ;     SL      # ( ᑻ → ᑯᐧ ) CANADIAN SYLLABICS WEST-CREE KWO → CANADIAN SYLLABICS KO, CANADIAN SYLLABICS FINAL MIDDLE DOT    # 
+
+1487 ; 146F 144A ;     SL      # ( ᒇ → ᑯᑊ ) CANADIAN SYLLABICS SOUTH-SLAVEY KOH → CANADIAN SYLLABICS KO, CANADIAN SYLLABICS WEST-CREE P      # 
+
+147D ; 1470 00B7 ;     SL      # ( ᑽ → ᑰ· ) CANADIAN SYLLABICS WEST-CREE KWOO → CANADIAN SYLLABICS KOO, MIDDLE DOT    # →ᑰᐧ→
+
+147F ; 1472 00B7 ;     SL      # ( ᑿ → ᑲ· ) CANADIAN SYLLABICS WEST-CREE KWA → CANADIAN SYLLABICS KA, MIDDLE DOT      # →ᑲᐧ→
+
+1488 ; 1472 144A ;     SL      # ( ᒈ → ᑲᑊ ) CANADIAN SYLLABICS SOUTH-SLAVEY KAH → CANADIAN SYLLABICS KA, CANADIAN SYLLABICS WEST-CREE P      # 
+
+1481 ; 1473 00B7 ;     SL      # ( ᒁ → ᑳ· ) CANADIAN SYLLABICS WEST-CREE KWAA → CANADIAN SYLLABICS KAA, MIDDLE DOT    # →ᑳᐧ→
+
+1603 ; 1489 ;  SL      # ( ᘃ → ᒉ ) CANADIAN SYLLABICS CARRIER NO → CANADIAN SYLLABICS CE       # 
+
+1493 ; 1489 00B7 ;     SL      # ( ᒓ → ᒉ· ) CANADIAN SYLLABICS WEST-CREE CWE → CANADIAN SYLLABICS CE, MIDDLE DOT      # →ᒉᐧ→
+
+1495 ; 148B 00B7 ;     SL      # ( ᒕ → ᒋ· ) CANADIAN SYLLABICS WEST-CREE CWI → CANADIAN SYLLABICS CI, MIDDLE DOT      # →ᒋᐧ→
+
+1497 ; 148C 00B7 ;     SL      # ( ᒗ → ᒌ· ) CANADIAN SYLLABICS WEST-CREE CWII → CANADIAN SYLLABICS CII, MIDDLE DOT    # →ᒌᐧ→
+
+1D409 ;        148D ;  SL      # ( 𝐉 → ᒍ ) MATHEMATICAL BOLD CAPITAL J → CANADIAN SYLLABICS CO        # →J→
+1D43D ;        148D ;  SL      # ( 𝐽 → ᒍ ) MATHEMATICAL ITALIC CAPITAL J → CANADIAN SYLLABICS CO      # →J→
+1D471 ;        148D ;  SL      # ( 𝑱 → ᒍ ) MATHEMATICAL BOLD ITALIC CAPITAL J → CANADIAN SYLLABICS CO # →J→
+1D4A5 ;        148D ;  SL      # ( 𝒥 → ᒍ ) MATHEMATICAL SCRIPT CAPITAL J → CANADIAN SYLLABICS CO      # →J→
+1D4D9 ;        148D ;  SL      # ( 𝓙 → ᒍ ) MATHEMATICAL BOLD SCRIPT CAPITAL J → CANADIAN SYLLABICS CO # →J→
+1D50D ;        148D ;  SL      # ( 𝔍 → ᒍ ) MATHEMATICAL FRAKTUR CAPITAL J → CANADIAN SYLLABICS CO     # →J→
+1D541 ;        148D ;  SL      # ( 𝕁 → ᒍ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL J → CANADIAN SYLLABICS CO       # →J→
+1D575 ;        148D ;  SL      # ( 𝕵 → ᒍ ) MATHEMATICAL BOLD FRAKTUR CAPITAL J → CANADIAN SYLLABICS CO        # →J→
+1D5A9 ;        148D ;  SL      # ( 𝖩 → ᒍ ) MATHEMATICAL SANS-SERIF CAPITAL J → CANADIAN SYLLABICS CO  # →J→
+1D5DD ;        148D ;  SL      # ( 𝗝 → ᒍ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL J → CANADIAN SYLLABICS CO     # →J→
+1D611 ;        148D ;  SL      # ( 𝘑 → ᒍ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL J → CANADIAN SYLLABICS CO   # →J→
+1D645 ;        148D ;  SL      # ( 𝙅 → ᒍ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J → CANADIAN SYLLABICS CO      # →J→
+1D679 ;        148D ;  SL      # ( 𝙹 → ᒍ ) MATHEMATICAL MONOSPACE CAPITAL J → CANADIAN SYLLABICS CO   # →J→
+
+1499 ; 148D 1427 ;     SL      # ( ᒙ → ᒍᐧ ) CANADIAN SYLLABICS WEST-CREE CWO → CANADIAN SYLLABICS CO, CANADIAN SYLLABICS FINAL MIDDLE DOT    # 
+
+149B ; 148E 00B7 ;     SL      # ( ᒛ → ᒎ· ) CANADIAN SYLLABICS WEST-CREE CWOO → CANADIAN SYLLABICS COO, MIDDLE DOT    # →ᒎᐧ→
+
+1602 ; 1490 ;  SL      # ( ᘂ → ᒐ ) CANADIAN SYLLABICS CARRIER NU → CANADIAN SYLLABICS CA       # 
+
+149D ; 1490 00B7 ;     SL      # ( ᒝ → ᒐ· ) CANADIAN SYLLABICS WEST-CREE CWA → CANADIAN SYLLABICS CA, MIDDLE DOT      # →ᒐᐧ→
+
+149F ; 1491 00B7 ;     SL      # ( ᒟ → ᒑ· ) CANADIAN SYLLABICS WEST-CREE CWAA → CANADIAN SYLLABICS CAA, MIDDLE DOT    # →ᒑᐧ→
+
+14AD ; 14A3 00B7 ;     SL      # ( ᒭ → ᒣ· ) CANADIAN SYLLABICS WEST-CREE MWE → CANADIAN SYLLABICS ME, MIDDLE DOT      # →ᒣᐧ→
+
+213E ; 14A5 ;  SL      # ( ℾ → ᒥ ) DOUBLE-STRUCK CAPITAL GAMMA → CANADIAN SYLLABICS MI # →Γ→
+1D6AA ;        14A5 ;  SL      # ( 𝚪 → ᒥ ) MATHEMATICAL BOLD CAPITAL GAMMA → CANADIAN SYLLABICS MI    # →Γ→
+1D6E4 ;        14A5 ;  SL      # ( 𝛤 → ᒥ ) MATHEMATICAL ITALIC CAPITAL GAMMA → CANADIAN SYLLABICS MI  # →Γ→
+1D71E ;        14A5 ;  SL      # ( 𝜞 → ᒥ ) MATHEMATICAL BOLD ITALIC CAPITAL GAMMA → CANADIAN SYLLABICS MI     # →Γ→
+1D758 ;        14A5 ;  SL      # ( 𝝘 → ᒥ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA → CANADIAN SYLLABICS MI # →Γ→
+1D792 ;        14A5 ;  SL      # ( 𝞒 → ᒥ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA → CANADIAN SYLLABICS MI  # →Γ→
+
+14AF ; 14A5 00B7 ;     SL      # ( ᒯ → ᒥ· ) CANADIAN SYLLABICS WEST-CREE MWI → CANADIAN SYLLABICS MI, MIDDLE DOT      # →ᒥᐧ→
+
+14B1 ; 14A6 00B7 ;     SL      # ( ᒱ → ᒦ· ) CANADIAN SYLLABICS WEST-CREE MWII → CANADIAN SYLLABICS MII, MIDDLE DOT    # →ᒦᐧ→
+
+14B3 ; 14A7 00B7 ;     SL      # ( ᒳ → ᒧ· ) CANADIAN SYLLABICS WEST-CREE MWO → CANADIAN SYLLABICS MO, MIDDLE DOT      # →ᒧᐧ→
+
+14B5 ; 14A8 00B7 ;     SL      # ( ᒵ → ᒨ· ) CANADIAN SYLLABICS WEST-CREE MWOO → CANADIAN SYLLABICS MOO, MIDDLE DOT    # →ᒨᐧ→
+
+2112 ; 14AA ;  SL      # ( ℒ → ᒪ ) SCRIPT CAPITAL L → CANADIAN SYLLABICS MA    # →L→
+1D40B ;        14AA ;  SL      # ( 𝐋 → ᒪ ) MATHEMATICAL BOLD CAPITAL L → CANADIAN SYLLABICS MA        # →L→
+1D43F ;        14AA ;  SL      # ( 𝐿 → ᒪ ) MATHEMATICAL ITALIC CAPITAL L → CANADIAN SYLLABICS MA      # →L→
+1D473 ;        14AA ;  SL      # ( 𝑳 → ᒪ ) MATHEMATICAL BOLD ITALIC CAPITAL L → CANADIAN SYLLABICS MA # →L→
+1D4DB ;        14AA ;  SL      # ( 𝓛 → ᒪ ) MATHEMATICAL BOLD SCRIPT CAPITAL L → CANADIAN SYLLABICS MA # →L→
+1D50F ;        14AA ;  SL      # ( 𝔏 → ᒪ ) MATHEMATICAL FRAKTUR CAPITAL L → CANADIAN SYLLABICS MA     # →L→
+1D543 ;        14AA ;  SL      # ( 𝕃 → ᒪ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL L → CANADIAN SYLLABICS MA       # →L→
+1D577 ;        14AA ;  SL      # ( 𝕷 → ᒪ ) MATHEMATICAL BOLD FRAKTUR CAPITAL L → CANADIAN SYLLABICS MA        # →L→
+1D5AB ;        14AA ;  SL      # ( 𝖫 → ᒪ ) MATHEMATICAL SANS-SERIF CAPITAL L → CANADIAN SYLLABICS MA  # →L→
+1D5DF ;        14AA ;  SL      # ( 𝗟 → ᒪ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL L → CANADIAN SYLLABICS MA     # →L→
+1D613 ;        14AA ;  SL      # ( 𝘓 → ᒪ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL L → CANADIAN SYLLABICS MA   # →L→
+1D647 ;        14AA ;  SL      # ( 𝙇 → ᒪ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L → CANADIAN SYLLABICS MA      # →L→
+1D67B ;        14AA ;  SL      # ( 𝙻 → ᒪ ) MATHEMATICAL MONOSPACE CAPITAL L → CANADIAN SYLLABICS MA   # →L→
+
+14B9 ; 14AB 00B7 ;     SL      # ( ᒹ → ᒫ· ) CANADIAN SYLLABICS WEST-CREE MWAA → CANADIAN SYLLABICS MAA, MIDDLE DOT    # →ᒫᐧ→
+
+14CA ; 14C0 00B7 ;     SL      # ( ᓊ → ᓀ· ) CANADIAN SYLLABICS WEST-CREE NWE → CANADIAN SYLLABICS NE, MIDDLE DOT      # →ᓀᐧ→
+
+14CC ; 14C7 00B7 ;     SL      # ( ᓌ → ᓇ· ) CANADIAN SYLLABICS WEST-CREE NWA → CANADIAN SYLLABICS NA, MIDDLE DOT      # →ᓇᐧ→
+
+14CE ; 14C8 14AB ;     SL      # ( ᓎ → ᓈᒫ ) CANADIAN SYLLABICS WEST-CREE NWAA → CANADIAN SYLLABICS NAA, CANADIAN SYLLABICS MAA       # 
+
+1604 ; 14D3 ;  SL      # ( ᘄ → ᓓ ) CANADIAN SYLLABICS CARRIER NE → CANADIAN SYLLABICS LE       # 
+
+14DD ; 14D3 00B7 ;     SL      # ( ᓝ → ᓓ· ) CANADIAN SYLLABICS WEST-CREE LWE → CANADIAN SYLLABICS LE, MIDDLE DOT      # →ᓓᐧ→
+
+14DF ; 14D5 00B7 ;     SL      # ( ᓟ → ᓕ· ) CANADIAN SYLLABICS WEST-CREE LWI → CANADIAN SYLLABICS LI, MIDDLE DOT      # →ᓕᐧ→
+
+14E1 ; 14D6 00B7 ;     SL      # ( ᓡ → ᓖ· ) CANADIAN SYLLABICS WEST-CREE LWII → CANADIAN SYLLABICS LII, MIDDLE DOT    # →ᓖᐧ→
+
+14E3 ; 14D7 00B7 ;     SL      # ( ᓣ → ᓗ· ) CANADIAN SYLLABICS WEST-CREE LWO → CANADIAN SYLLABICS LO, MIDDLE DOT      # →ᓗᐧ→
+
+14E5 ; 14D8 00B7 ;     SL      # ( ᓥ → ᓘ· ) CANADIAN SYLLABICS WEST-CREE LWOO → CANADIAN SYLLABICS LOO, MIDDLE DOT    # →ᓘᐧ→
+
+1607 ; 14DA ;  SL      # ( ᘇ → ᓚ ) CANADIAN SYLLABICS CARRIER NA → CANADIAN SYLLABICS LA       # 
+
+14E7 ; 14DA 00B7 ;     SL      # ( ᓧ → ᓚ· ) CANADIAN SYLLABICS WEST-CREE LWA → CANADIAN SYLLABICS LA, MIDDLE DOT      # →ᓚᐧ→
+
+14E9 ; 14DB 00B7 ;     SL      # ( ᓩ → ᓛ· ) CANADIAN SYLLABICS WEST-CREE LWAA → CANADIAN SYLLABICS LAA, MIDDLE DOT    # →ᓛᐧ→
+
+14F7 ; 14ED 00B7 ;     SL      # ( ᓷ → ᓭ· ) CANADIAN SYLLABICS WEST-CREE SWE → CANADIAN SYLLABICS SE, MIDDLE DOT      # →ᓭᐧ→
+
+14F9 ; 14EF 00B7 ;     SL      # ( ᓹ → ᓯ· ) CANADIAN SYLLABICS WEST-CREE SWI → CANADIAN SYLLABICS SI, MIDDLE DOT      # →ᓯᐧ→
+
+14FB ; 14F0 00B7 ;     SL      # ( ᓻ → ᓰ· ) CANADIAN SYLLABICS WEST-CREE SWII → CANADIAN SYLLABICS SII, MIDDLE DOT    # →ᓰᐧ→
+
+14FD ; 14F1 00B7 ;     SL      # ( ᓽ → ᓱ· ) CANADIAN SYLLABICS WEST-CREE SWO → CANADIAN SYLLABICS SO, MIDDLE DOT      # →ᓱᐧ→
+
+14FF ; 14F2 00B7 ;     SL      # ( ᓿ → ᓲ· ) CANADIAN SYLLABICS WEST-CREE SWOO → CANADIAN SYLLABICS SOO, MIDDLE DOT    # →ᓲᐧ→
+
+1501 ; 14F4 00B7 ;     SL      # ( ᔁ → ᓴ· ) CANADIAN SYLLABICS WEST-CREE SWA → CANADIAN SYLLABICS SA, MIDDLE DOT      # →ᓴᐧ→
+
+1503 ; 14F5 00B7 ;     SL      # ( ᔃ → ᓵ· ) CANADIAN SYLLABICS WEST-CREE SWAA → CANADIAN SYLLABICS SAA, MIDDLE DOT    # →ᓵᐧ→
+
+150C ; 150B 1438 ;     SL      # ( ᔌ → ᔋᐸ ) CANADIAN SYLLABICS NASKAPI SPWA → CANADIAN SYLLABICS NASKAPI S-W, CANADIAN SYLLABICS PA  # 
+
+150D ; 150B 1455 ;     SL      # ( ᔍ → ᔋᑕ ) CANADIAN SYLLABICS NASKAPI STWA → CANADIAN SYLLABICS NASKAPI S-W, CANADIAN SYLLABICS TA  # 
+
+150E ; 150B 1472 ;     SL      # ( ᔎ → ᔋᑲ ) CANADIAN SYLLABICS NASKAPI SKWA → CANADIAN SYLLABICS NASKAPI S-W, CANADIAN SYLLABICS KA  # 
+
+150F ; 150B 1490 ;     SL      # ( ᔏ → ᔋᒐ ) CANADIAN SYLLABICS NASKAPI SCWA → CANADIAN SYLLABICS NASKAPI S-W, CANADIAN SYLLABICS CA  # 
+
+1518 ; 1510 00B7 ;     SL      # ( ᔘ → ᔐ· ) CANADIAN SYLLABICS WEST-CREE SHWE → CANADIAN SYLLABICS SHE, MIDDLE DOT    # →ᔐᐧ→
+
+151A ; 1511 00B7 ;     SL      # ( ᔚ → ᔑ· ) CANADIAN SYLLABICS WEST-CREE SHWI → CANADIAN SYLLABICS SHI, MIDDLE DOT    # →ᔑᐧ→
+
+151C ; 1512 00B7 ;     SL      # ( ᔜ → ᔒ· ) CANADIAN SYLLABICS WEST-CREE SHWII → CANADIAN SYLLABICS SHII, MIDDLE DOT  # →ᔒᐧ→
+
+151E ; 1513 00B7 ;     SL      # ( ᔞ → ᔓ· ) CANADIAN SYLLABICS WEST-CREE SHWO → CANADIAN SYLLABICS SHO, MIDDLE DOT    # →ᔓᐧ→
+
+1520 ; 1514 00B7 ;     SL      # ( ᔠ → ᔔ· ) CANADIAN SYLLABICS WEST-CREE SHWOO → CANADIAN SYLLABICS SHOO, MIDDLE DOT  # →ᔔᐧ→
+
+1522 ; 1515 00B7 ;     SL      # ( ᔢ → ᔕ· ) CANADIAN SYLLABICS WEST-CREE SHWA → CANADIAN SYLLABICS SHA, MIDDLE DOT    # →ᔕᐧ→
+
+1524 ; 1516 00B7 ;     SL      # ( ᔤ → ᔖ· ) CANADIAN SYLLABICS WEST-CREE SHWAA → CANADIAN SYLLABICS SHAA, MIDDLE DOT  # →ᔖᐧ→
+
+1532 ; 1528 00B7 ;     SL      # ( ᔲ → ᔨ· ) CANADIAN SYLLABICS WEST-CREE YWI → CANADIAN SYLLABICS YI, MIDDLE DOT      # →ᔨᐧ→
+
+1534 ; 1529 00B7 ;     SL      # ( ᔴ → ᔩ· ) CANADIAN SYLLABICS WEST-CREE YWII → CANADIAN SYLLABICS YII, MIDDLE DOT    # →ᔩᐧ→
+
+1536 ; 152A 00B7 ;     SL      # ( ᔶ → ᔪ· ) CANADIAN SYLLABICS WEST-CREE YWO → CANADIAN SYLLABICS YO, MIDDLE DOT      # →ᔪᐧ→
+
+1538 ; 152B 00B7 ;     SL      # ( ᔸ → ᔫ· ) CANADIAN SYLLABICS WEST-CREE YWOO → CANADIAN SYLLABICS YOO, MIDDLE DOT    # →ᔫᐧ→
+
+153A ; 152D 00B7 ;     SL      # ( ᔺ → ᔭ· ) CANADIAN SYLLABICS WEST-CREE YWA → CANADIAN SYLLABICS YA, MIDDLE DOT      # →ᔭᐧ→
+
+153C ; 152E 00B7 ;     SL      # ( ᔼ → ᔮ· ) CANADIAN SYLLABICS WEST-CREE YWAA → CANADIAN SYLLABICS YAA, MIDDLE DOT    # →ᔮᐧ→
+
+166E ; 1541 ;  SL      #* ( ᙮ → ᕁ ) CANADIAN SYLLABICS FULL STOP → CANADIAN SYLLABICS SAYISI YI        # 
+157D ; 1541 ;  SL      # ( ᕽ → ᕁ ) CANADIAN SYLLABICS HK → CANADIAN SYLLABICS SAYISI YI        # 
+
+1622 ; 1543 ;  SL      # ( ᘢ → ᕃ ) CANADIAN SYLLABICS CARRIER LU → CANADIAN SYLLABICS R-CREE RE        # 
+
+1623 ; 1546 ;  SL      # ( ᘣ → ᕆ ) CANADIAN SYLLABICS CARRIER LO → CANADIAN SYLLABICS RI       # 
+
+1624 ; 154A ;  SL      # ( ᘤ → ᕊ ) CANADIAN SYLLABICS CARRIER LE → CANADIAN SYLLABICS WEST-CREE LO     # 
+
+154F ; 154C 00B7 ;     SL      # ( ᕏ → ᕌ· ) CANADIAN SYLLABICS WEST-CREE RWAA → CANADIAN SYLLABICS RAA, MIDDLE DOT    # →ᕌᐧ→
+
+166F ; 1550 146B ;     SL      # ( ᙯ → ᕐᑫ ) CANADIAN SYLLABICS QAI → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KE     # 
+
+157E ; 1550 146C ;     SL      # ( ᕾ → ᕐᑬ ) CANADIAN SYLLABICS QAAI → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KAAI  # 
+
+157F ; 1550 146D ;     SL      # ( ᕿ → ᕐᑭ ) CANADIAN SYLLABICS QI → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KI      # 
+
+1580 ; 1550 146E ;     SL      # ( ᖀ → ᕐᑮ ) CANADIAN SYLLABICS QII → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KII    # 
+
+1581 ; 1550 146F ;     SL      # ( ᖁ → ᕐᑯ ) CANADIAN SYLLABICS QO → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KO      # 
+
+1582 ; 1550 1470 ;     SL      # ( ᖂ → ᕐᑰ ) CANADIAN SYLLABICS QOO → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KOO    # 
+
+1583 ; 1550 1472 ;     SL      # ( ᖃ → ᕐᑲ ) CANADIAN SYLLABICS QA → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KA      # 
+
+1584 ; 1550 1473 ;     SL      # ( ᖄ → ᕐᑳ ) CANADIAN SYLLABICS QAA → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KAA    # 
+
+1585 ; 1550 1483 ;     SL      # ( ᖅ → ᕐᒃ ) CANADIAN SYLLABICS Q → CANADIAN SYLLABICS R, CANADIAN SYLLABICS K        # 
+
+155C ; 155A 00B7 ;     SL      # ( ᕜ → ᕚ· ) CANADIAN SYLLABICS WEST-CREE FWAA → CANADIAN SYLLABICS FAA, MIDDLE DOT    # →ᕚᐧ→
+
+1569 ; 1567 00B7 ;     SL      # ( ᕩ → ᕧ· ) CANADIAN SYLLABICS WEST-CREE THWAA → CANADIAN SYLLABICS THAA, MIDDLE DOT  # →ᕧᐧ→
+
+211B ; 1587 ;  SL      # ( ℛ → ᖇ ) SCRIPT CAPITAL R → CANADIAN SYLLABICS TLHI  # →R→
+211C ; 1587 ;  SL      # ( ℜ → ᖇ ) BLACK-LETTER CAPITAL R → CANADIAN SYLLABICS TLHI    # →R→
+211D ; 1587 ;  SL      # ( ℝ → ᖇ ) DOUBLE-STRUCK CAPITAL R → CANADIAN SYLLABICS TLHI   # →R→
+1D411 ;        1587 ;  SL      # ( 𝐑 → ᖇ ) MATHEMATICAL BOLD CAPITAL R → CANADIAN SYLLABICS TLHI      # →R→
+1D445 ;        1587 ;  SL      # ( 𝑅 → ᖇ ) MATHEMATICAL ITALIC CAPITAL R → CANADIAN SYLLABICS TLHI    # →R→
+1D479 ;        1587 ;  SL      # ( 𝑹 → ᖇ ) MATHEMATICAL BOLD ITALIC CAPITAL R → CANADIAN SYLLABICS TLHI       # →R→
+1D4E1 ;        1587 ;  SL      # ( 𝓡 → ᖇ ) MATHEMATICAL BOLD SCRIPT CAPITAL R → CANADIAN SYLLABICS TLHI       # →R→
+1D57D ;        1587 ;  SL      # ( 𝕽 → ᖇ ) MATHEMATICAL BOLD FRAKTUR CAPITAL R → CANADIAN SYLLABICS TLHI      # →R→
+1D5B1 ;        1587 ;  SL      # ( 𝖱 → ᖇ ) MATHEMATICAL SANS-SERIF CAPITAL R → CANADIAN SYLLABICS TLHI        # →R→
+1D5E5 ;        1587 ;  SL      # ( 𝗥 → ᖇ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL R → CANADIAN SYLLABICS TLHI   # →R→
+1D619 ;        1587 ;  SL      # ( 𝘙 → ᖇ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL R → CANADIAN SYLLABICS TLHI # →R→
+1D64D ;        1587 ;  SL      # ( 𝙍 → ᖇ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R → CANADIAN SYLLABICS TLHI    # →R→
+1D681 ;        1587 ;  SL      # ( 𝚁 → ᖇ ) MATHEMATICAL MONOSPACE CAPITAL R → CANADIAN SYLLABICS TLHI # →R→
+
+1670 ; 1595 1489 ;     SL      # ( ᙰ → ᖕᒉ ) CANADIAN SYLLABICS NGAI → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CE   # 
+
+158E ; 1595 148A ;     SL      # ( ᖎ → ᖕᒊ ) CANADIAN SYLLABICS NGAAI → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CAAI        # 
+
+158F ; 1595 148B ;     SL      # ( ᖏ → ᖕᒋ ) CANADIAN SYLLABICS NGI → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CI    # 
+
+1590 ; 1595 148C ;     SL      # ( ᖐ → ᖕᒌ ) CANADIAN SYLLABICS NGII → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CII  # 
+
+1591 ; 1595 148D ;     SL      # ( ᖑ → ᖕᒍ ) CANADIAN SYLLABICS NGO → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CO    # 
+
+1592 ; 1595 148E ;     SL      # ( ᖒ → ᖕᒎ ) CANADIAN SYLLABICS NGOO → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS COO  # 
+
+1593 ; 1595 1490 ;     SL      # ( ᖓ → ᖕᒐ ) CANADIAN SYLLABICS NGA → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CA    # 
+
+1594 ; 1595 1491 ;     SL      # ( ᖔ → ᖕᒑ ) CANADIAN SYLLABICS NGAA → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CAA  # 
+
+1671 ; 1596 148B ;     SL      # ( ᙱ → ᖖᒋ ) CANADIAN SYLLABICS NNGI → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS CI  # 
+
+1672 ; 1596 148C ;     SL      # ( ᙲ → ᖖᒌ ) CANADIAN SYLLABICS NNGII → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS CII        # 
+
+1673 ; 1596 148D ;     SL      # ( ᙳ → ᖖᒍ ) CANADIAN SYLLABICS NNGO → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS CO  # 
+
+1674 ; 1596 148E ;     SL      # ( ᙴ → ᖖᒎ ) CANADIAN SYLLABICS NNGOO → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS COO        # 
+
+1675 ; 1596 1490 ;     SL      # ( ᙵ → ᖖᒐ ) CANADIAN SYLLABICS NNGA → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS CA  # 
+
+1676 ; 1596 1491 ;     SL      # ( ᙶ → ᖖᒑ ) CANADIAN SYLLABICS NNGAA → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS CAA        # 
+
+210B ; 157C ;  SL      # ( ℋ → ᕼ ) SCRIPT CAPITAL H → CANADIAN SYLLABICS NUNAVUT H     # →H→
+210C ; 157C ;  SL      # ( ℌ → ᕼ ) BLACK-LETTER CAPITAL H → CANADIAN SYLLABICS NUNAVUT H       # →H→
+210D ; 157C ;  SL      # ( ℍ → ᕼ ) DOUBLE-STRUCK CAPITAL H → CANADIAN SYLLABICS NUNAVUT H      # →H→
+1D407 ;        157C ;  SL      # ( 𝐇 → ᕼ ) MATHEMATICAL BOLD CAPITAL H → CANADIAN SYLLABICS NUNAVUT H # →H→
+1D43B ;        157C ;  SL      # ( 𝐻 → ᕼ ) MATHEMATICAL ITALIC CAPITAL H → CANADIAN SYLLABICS NUNAVUT H       # →H→
+1D46F ;        157C ;  SL      # ( 𝑯 → ᕼ ) MATHEMATICAL BOLD ITALIC CAPITAL H → CANADIAN SYLLABICS NUNAVUT H  # →H→
+1D4D7 ;        157C ;  SL      # ( 𝓗 → ᕼ ) MATHEMATICAL BOLD SCRIPT CAPITAL H → CANADIAN SYLLABICS NUNAVUT H  # →H→
+1D573 ;        157C ;  SL      # ( 𝕳 → ᕼ ) MATHEMATICAL BOLD FRAKTUR CAPITAL H → CANADIAN SYLLABICS NUNAVUT H # →H→
+1D5A7 ;        157C ;  SL      # ( 𝖧 → ᕼ ) MATHEMATICAL SANS-SERIF CAPITAL H → CANADIAN SYLLABICS NUNAVUT H   # →H→
+1D5DB ;        157C ;  SL      # ( 𝗛 → ᕼ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL H → CANADIAN SYLLABICS NUNAVUT H      # →H→
+1D60F ;        157C ;  SL      # ( 𝘏 → ᕼ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL H → CANADIAN SYLLABICS NUNAVUT H    # →H→
+1D643 ;        157C ;  SL      # ( 𝙃 → ᕼ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H → CANADIAN SYLLABICS NUNAVUT H       # →H→
+1D677 ;        157C ;  SL      # ( 𝙷 → ᕼ ) MATHEMATICAL MONOSPACE CAPITAL H → CANADIAN SYLLABICS NUNAVUT H    # →H→
+1D6AE ;        157C ;  SL      # ( 𝚮 → ᕼ ) MATHEMATICAL BOLD CAPITAL ETA → CANADIAN SYLLABICS NUNAVUT H       # →Η→
+1D6E8 ;        157C ;  SL      # ( 𝛨 → ᕼ ) MATHEMATICAL ITALIC CAPITAL ETA → CANADIAN SYLLABICS NUNAVUT H     # →Η→
+1D722 ;        157C ;  SL      # ( 𝜢 → ᕼ ) MATHEMATICAL BOLD ITALIC CAPITAL ETA → CANADIAN SYLLABICS NUNAVUT H        # →Η→
+1D75C ;        157C ;  SL      # ( 𝝜 → ᕼ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA → CANADIAN SYLLABICS NUNAVUT H    # →Η→
+1D796 ;        157C ;  SL      # ( 𝞖 → ᕼ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA → CANADIAN SYLLABICS NUNAVUT H     # →Η→
+
+2131 ; 15B4 ;  SL      # ( ℱ → ᖴ ) SCRIPT CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE  # →F→
+1D405 ;        15B4 ;  SL      # ( 𝐅 → ᖴ ) MATHEMATICAL BOLD CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE      # →F→
+1D439 ;        15B4 ;  SL      # ( 𝐹 → ᖴ ) MATHEMATICAL ITALIC CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE    # →F→
+1D46D ;        15B4 ;  SL      # ( 𝑭 → ᖴ ) MATHEMATICAL BOLD ITALIC CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE       # →F→
+1D4D5 ;        15B4 ;  SL      # ( 𝓕 → ᖴ ) MATHEMATICAL BOLD SCRIPT CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE       # →F→
+1D509 ;        15B4 ;  SL      # ( 𝔉 → ᖴ ) MATHEMATICAL FRAKTUR CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE   # →F→
+1D53D ;        15B4 ;  SL      # ( 𝔽 → ᖴ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE     # →F→
+1D571 ;        15B4 ;  SL      # ( 𝕱 → ᖴ ) MATHEMATICAL BOLD FRAKTUR CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE      # →F→
+1D5A5 ;        15B4 ;  SL      # ( 𝖥 → ᖴ ) MATHEMATICAL SANS-SERIF CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE        # →F→
+1D5D9 ;        15B4 ;  SL      # ( 𝗙 → ᖴ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE   # →F→
+1D60D ;        15B4 ;  SL      # ( 𝘍 → ᖴ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE # →F→
+1D641 ;        15B4 ;  SL      # ( 𝙁 → ᖴ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE    # →F→
+1D675 ;        15B4 ;  SL      # ( 𝙵 → ᖴ ) MATHEMATICAL MONOSPACE CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE # →F→
+1D7CA ;        15B4 ;  SL      # ( 𝟊 → ᖴ ) MATHEMATICAL BOLD CAPITAL DIGAMMA → CANADIAN SYLLABICS BLACKFOOT WE        # →Ϝ→→F→
+
+1D400 ;        15C5 ;  SL      # ( 𝐀 → ᗅ ) MATHEMATICAL BOLD CAPITAL A → CANADIAN SYLLABICS CARRIER GHO       # →A→
+1D434 ;        15C5 ;  SL      # ( 𝐴 → ᗅ ) MATHEMATICAL ITALIC CAPITAL A → CANADIAN SYLLABICS CARRIER GHO     # →A→
+1D468 ;        15C5 ;  SL      # ( 𝑨 → ᗅ ) MATHEMATICAL BOLD ITALIC CAPITAL A → CANADIAN SYLLABICS CARRIER GHO        # →A→
+1D49C ;        15C5 ;  SL      # ( 𝒜 → ᗅ ) MATHEMATICAL SCRIPT CAPITAL A → CANADIAN SYLLABICS CARRIER GHO     # →A→
+1D4D0 ;        15C5 ;  SL      # ( 𝓐 → ᗅ ) MATHEMATICAL BOLD SCRIPT CAPITAL A → CANADIAN SYLLABICS CARRIER GHO        # →A→
+1D504 ;        15C5 ;  SL      # ( 𝔄 → ᗅ ) MATHEMATICAL FRAKTUR CAPITAL A → CANADIAN SYLLABICS CARRIER GHO    # →A→
+1D538 ;        15C5 ;  SL      # ( 𝔸 → ᗅ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL A → CANADIAN SYLLABICS CARRIER GHO      # →A→
+1D56C ;        15C5 ;  SL      # ( 𝕬 → ᗅ ) MATHEMATICAL BOLD FRAKTUR CAPITAL A → CANADIAN SYLLABICS CARRIER GHO       # →A→
+1D5A0 ;        15C5 ;  SL      # ( 𝖠 → ᗅ ) MATHEMATICAL SANS-SERIF CAPITAL A → CANADIAN SYLLABICS CARRIER GHO # →A→
+1D5D4 ;        15C5 ;  SL      # ( 𝗔 → ᗅ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL A → CANADIAN SYLLABICS CARRIER GHO    # →A→
+1D608 ;        15C5 ;  SL      # ( 𝘈 → ᗅ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL A → CANADIAN SYLLABICS CARRIER GHO  # →A→
+1D63C ;        15C5 ;  SL      # ( 𝘼 → ᗅ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A → CANADIAN SYLLABICS CARRIER GHO     # →A→
+1D670 ;        15C5 ;  SL      # ( 𝙰 → ᗅ ) MATHEMATICAL MONOSPACE CAPITAL A → CANADIAN SYLLABICS CARRIER GHO  # →A→
+1D6A8 ;        15C5 ;  SL      # ( 𝚨 → ᗅ ) MATHEMATICAL BOLD CAPITAL ALPHA → CANADIAN SYLLABICS CARRIER GHO   # →𝐀→→A→
+1D6E2 ;        15C5 ;  SL      # ( 𝛢 → ᗅ ) MATHEMATICAL ITALIC CAPITAL ALPHA → CANADIAN SYLLABICS CARRIER GHO # →𝐴→→A→
+1D71C ;        15C5 ;  SL      # ( 𝜜 → ᗅ ) MATHEMATICAL BOLD ITALIC CAPITAL ALPHA → CANADIAN SYLLABICS CARRIER GHO    # →𝑨→→A→
+1D756 ;        15C5 ;  SL      # ( 𝝖 → ᗅ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA → CANADIAN SYLLABICS CARRIER GHO        # →Α→→A→
+1D790 ;        15C5 ;  SL      # ( 𝞐 → ᗅ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA → CANADIAN SYLLABICS CARRIER GHO # →Α→→A→
+
+2145 ; 15DE ;  SL      # ( ⅅ → ᗞ ) DOUBLE-STRUCK ITALIC CAPITAL D → CANADIAN SYLLABICS CARRIER THE     # →D→
+1D403 ;        15DE ;  SL      # ( 𝐃 → ᗞ ) MATHEMATICAL BOLD CAPITAL D → CANADIAN SYLLABICS CARRIER THE       # →D→
+1D437 ;        15DE ;  SL      # ( 𝐷 → ᗞ ) MATHEMATICAL ITALIC CAPITAL D → CANADIAN SYLLABICS CARRIER THE     # →D→
+1D46B ;        15DE ;  SL      # ( 𝑫 → ᗞ ) MATHEMATICAL BOLD ITALIC CAPITAL D → CANADIAN SYLLABICS CARRIER THE        # →D→
+1D49F ;        15DE ;  SL      # ( 𝒟 → ᗞ ) MATHEMATICAL SCRIPT CAPITAL D → CANADIAN SYLLABICS CARRIER THE     # →D→
+1D4D3 ;        15DE ;  SL      # ( 𝓓 → ᗞ ) MATHEMATICAL BOLD SCRIPT CAPITAL D → CANADIAN SYLLABICS CARRIER THE        # →D→
+1D507 ;        15DE ;  SL      # ( 𝔇 → ᗞ ) MATHEMATICAL FRAKTUR CAPITAL D → CANADIAN SYLLABICS CARRIER THE    # →D→
+1D53B ;        15DE ;  SL      # ( 𝔻 → ᗞ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL D → CANADIAN SYLLABICS CARRIER THE      # →D→
+1D56F ;        15DE ;  SL      # ( 𝕯 → ᗞ ) MATHEMATICAL BOLD FRAKTUR CAPITAL D → CANADIAN SYLLABICS CARRIER THE       # →D→
+1D5A3 ;        15DE ;  SL      # ( 𝖣 → ᗞ ) MATHEMATICAL SANS-SERIF CAPITAL D → CANADIAN SYLLABICS CARRIER THE # →D→
+1D5D7 ;        15DE ;  SL      # ( 𝗗 → ᗞ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL D → CANADIAN SYLLABICS CARRIER THE    # →D→
+1D60B ;        15DE ;  SL      # ( 𝘋 → ᗞ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL D → CANADIAN SYLLABICS CARRIER THE  # →D→
+1D63F ;        15DE ;  SL      # ( 𝘿 → ᗞ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D → CANADIAN SYLLABICS CARRIER THE     # →D→
+1D673 ;        15DE ;  SL      # ( 𝙳 → ᗞ ) MATHEMATICAL MONOSPACE CAPITAL D → CANADIAN SYLLABICS CARRIER THE  # →D→
+15EA ; 15DE ;  SL      # ( ᗪ → ᗞ ) CANADIAN SYLLABICS CARRIER PE → CANADIAN SYLLABICS CARRIER THE      # 
+
+2133 ; 15F0 ;  SL      # ( ℳ → ᗰ ) SCRIPT CAPITAL M → CANADIAN SYLLABICS CARRIER GO    # →M→
+1D40C ;        15F0 ;  SL      # ( 𝐌 → ᗰ ) MATHEMATICAL BOLD CAPITAL M → CANADIAN SYLLABICS CARRIER GO        # →M→
+1D440 ;        15F0 ;  SL      # ( 𝑀 → ᗰ ) MATHEMATICAL ITALIC CAPITAL M → CANADIAN SYLLABICS CARRIER GO      # →M→
+1D474 ;        15F0 ;  SL      # ( 𝑴 → ᗰ ) MATHEMATICAL BOLD ITALIC CAPITAL M → CANADIAN SYLLABICS CARRIER GO # →M→
+1D4DC ;        15F0 ;  SL      # ( 𝓜 → ᗰ ) MATHEMATICAL BOLD SCRIPT CAPITAL M → CANADIAN SYLLABICS CARRIER GO # →M→
+1D510 ;        15F0 ;  SL      # ( 𝔐 → ᗰ ) MATHEMATICAL FRAKTUR CAPITAL M → CANADIAN SYLLABICS CARRIER GO     # →M→
+1D544 ;        15F0 ;  SL      # ( 𝕄 → ᗰ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL M → CANADIAN SYLLABICS CARRIER GO       # →M→
+1D578 ;        15F0 ;  SL      # ( 𝕸 → ᗰ ) MATHEMATICAL BOLD FRAKTUR CAPITAL M → CANADIAN SYLLABICS CARRIER GO        # →M→
+1D5AC ;        15F0 ;  SL      # ( 𝖬 → ᗰ ) MATHEMATICAL SANS-SERIF CAPITAL M → CANADIAN SYLLABICS CARRIER GO  # →M→
+1D5E0 ;        15F0 ;  SL      # ( 𝗠 → ᗰ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL M → CANADIAN SYLLABICS CARRIER GO     # →M→
+1D614 ;        15F0 ;  SL      # ( 𝘔 → ᗰ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL M → CANADIAN SYLLABICS CARRIER GO   # →M→
+1D648 ;        15F0 ;  SL      # ( 𝙈 → ᗰ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M → CANADIAN SYLLABICS CARRIER GO      # →M→
+1D67C ;        15F0 ;  SL      # ( 𝙼 → ᗰ ) MATHEMATICAL MONOSPACE CAPITAL M → CANADIAN SYLLABICS CARRIER GO   # →M→
+1D6B3 ;        15F0 ;  SL      # ( 𝚳 → ᗰ ) MATHEMATICAL BOLD CAPITAL MU → CANADIAN SYLLABICS CARRIER GO       # →Μ→→M→
+1D6ED ;        15F0 ;  SL      # ( 𝛭 → ᗰ ) MATHEMATICAL ITALIC CAPITAL MU → CANADIAN SYLLABICS CARRIER GO     # →Μ→→M→
+1D727 ;        15F0 ;  SL      # ( 𝜧 → ᗰ ) MATHEMATICAL BOLD ITALIC CAPITAL MU → CANADIAN SYLLABICS CARRIER GO        # →Μ→→M→
+1D761 ;        15F0 ;  SL      # ( 𝝡 → ᗰ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL MU → CANADIAN SYLLABICS CARRIER GO    # →Μ→→M→
+1D79B ;        15F0 ;  SL      # ( 𝞛 → ᗰ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU → CANADIAN SYLLABICS CARRIER GO     # →Μ→→M→
+
+212C ; 15F7 ;  SL      # ( ℬ → ᗷ ) SCRIPT CAPITAL B → CANADIAN SYLLABICS CARRIER KHE   # →B→
+1D401 ;        15F7 ;  SL      # ( 𝐁 → ᗷ ) MATHEMATICAL BOLD CAPITAL B → CANADIAN SYLLABICS CARRIER KHE       # →B→
+1D435 ;        15F7 ;  SL      # ( 𝐵 → ᗷ ) MATHEMATICAL ITALIC CAPITAL B → CANADIAN SYLLABICS CARRIER KHE     # →B→
+1D469 ;        15F7 ;  SL      # ( 𝑩 → ᗷ ) MATHEMATICAL BOLD ITALIC CAPITAL B → CANADIAN SYLLABICS CARRIER KHE        # →B→
+1D4D1 ;        15F7 ;  SL      # ( 𝓑 → ᗷ ) MATHEMATICAL BOLD SCRIPT CAPITAL B → CANADIAN SYLLABICS CARRIER KHE        # →B→
+1D505 ;        15F7 ;  SL      # ( 𝔅 → ᗷ ) MATHEMATICAL FRAKTUR CAPITAL B → CANADIAN SYLLABICS CARRIER KHE    # →B→
+1D539 ;        15F7 ;  SL      # ( 𝔹 → ᗷ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL B → CANADIAN SYLLABICS CARRIER KHE      # →B→
+1D56D ;        15F7 ;  SL      # ( 𝕭 → ᗷ ) MATHEMATICAL BOLD FRAKTUR CAPITAL B → CANADIAN SYLLABICS CARRIER KHE       # →B→
+1D5A1 ;        15F7 ;  SL      # ( 𝖡 → ᗷ ) MATHEMATICAL SANS-SERIF CAPITAL B → CANADIAN SYLLABICS CARRIER KHE # →B→
+1D5D5 ;        15F7 ;  SL      # ( 𝗕 → ᗷ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL B → CANADIAN SYLLABICS CARRIER KHE    # →B→
+1D609 ;        15F7 ;  SL      # ( 𝘉 → ᗷ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL B → CANADIAN SYLLABICS CARRIER KHE  # →B→
+1D63D ;        15F7 ;  SL      # ( 𝘽 → ᗷ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B → CANADIAN SYLLABICS CARRIER KHE     # →B→
+1D671 ;        15F7 ;  SL      # ( 𝙱 → ᗷ ) MATHEMATICAL MONOSPACE CAPITAL B → CANADIAN SYLLABICS CARRIER KHE  # →B→
+1D6A9 ;        15F7 ;  SL      # ( 𝚩 → ᗷ ) MATHEMATICAL BOLD CAPITAL BETA → CANADIAN SYLLABICS CARRIER KHE    # →𝐁→→B→
+1D6E3 ;        15F7 ;  SL      # ( 𝛣 → ᗷ ) MATHEMATICAL ITALIC CAPITAL BETA → CANADIAN SYLLABICS CARRIER KHE  # →𝐵→→B→
+1D71D ;        15F7 ;  SL      # ( 𝜝 → ᗷ ) MATHEMATICAL BOLD ITALIC CAPITAL BETA → CANADIAN SYLLABICS CARRIER KHE     # →𝑩→→B→
+1D757 ;        15F7 ;  SL      # ( 𝝗 → ᗷ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA → CANADIAN SYLLABICS CARRIER KHE # →Β→→B→
+1D791 ;        15F7 ;  SL      # ( 𝞑 → ᗷ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA → CANADIAN SYLLABICS CARRIER KHE  # →Β→→B→
+
+2127 ; 162E ;  SL      #* ( ℧ → ᘮ ) INVERTED OHM SIGN → CANADIAN SYLLABICS CARRIER LHU # 
+1634 ; 162E ;  SL      # ( ᘴ → ᘮ ) CANADIAN SYLLABICS CARRIER TLHU → CANADIAN SYLLABICS CARRIER LHU    # 
+
+1D6C0 ;        162F ;  SL      # ( 𝛀 → ᘯ ) MATHEMATICAL BOLD CAPITAL OMEGA → CANADIAN SYLLABICS CARRIER LHO   # →Ω→
+1D6FA ;        162F ;  SL      # ( 𝛺 → ᘯ ) MATHEMATICAL ITALIC CAPITAL OMEGA → CANADIAN SYLLABICS CARRIER LHO # →Ω→
+1D734 ;        162F ;  SL      # ( 𝜴 → ᘯ ) MATHEMATICAL BOLD ITALIC CAPITAL OMEGA → CANADIAN SYLLABICS CARRIER LHO    # →Ω→
+1D76E ;        162F ;  SL      # ( 𝝮 → ᘯ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA → CANADIAN SYLLABICS CARRIER LHO        # →Ω→
+1D7A8 ;        162F ;  SL      # ( 𝞨 → ᘯ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA → CANADIAN SYLLABICS CARRIER LHO # →Ω→
+1635 ; 162F ;  SL      # ( ᘵ → ᘯ ) CANADIAN SYLLABICS CARRIER TLHO → CANADIAN SYLLABICS CARRIER LHO    # 
+
+3131 ; 1100 ;  SL      # ( ㄱ → ᄀ ) HANGUL LETTER KIYEOK → HANGUL CHOSEONG KIYEOK       # 
+11A8 ; 1100 ;  SL      # ( ᆨ → ᄀ ) HANGUL JONGSEONG KIYEOK → HANGUL CHOSEONG KIYEOK    # 
+
+1101 ; 1100 1100 ;     SL      # ( ᄁ → ᄀᄀ ) HANGUL CHOSEONG SSANGKIYEOK → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK     # 
+3132 ; 1100 1100 ;     SL      # ( ㄲ → ᄀᄀ ) HANGUL LETTER SSANGKIYEOK → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK       # →ᄁ→
+11A9 ; 1100 1100 ;     SL      # ( ᆩ → ᄀᄀ ) HANGUL JONGSEONG SSANGKIYEOK → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK    # →ᄁ→
+
+11FA ; 1100 1102 ;     SL      # ( ᇺ → ᄀᄂ ) HANGUL JONGSEONG KIYEOK-NIEUN → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG NIEUN    # →ᆨᆫ→
+
+115A ; 1100 1103 ;     SL      # ( ᅚ → ᄀᄃ ) HANGUL CHOSEONG KIYEOK-TIKEUT → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG TIKEUT   # 
+
+11C3 ; 1100 1105 ;     SL      # ( ᇃ → ᄀᄅ ) HANGUL JONGSEONG KIYEOK-RIEUL → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG RIEUL    # →ᆨᆯ→
+
+11FB ; 1100 1107 ;     SL      # ( ᇻ → ᄀᄇ ) HANGUL JONGSEONG KIYEOK-PIEUP → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG PIEUP    # →ᆨᆸ→
+
+11AA ; 1100 1109 ;     SL      # ( ᆪ → ᄀᄉ ) HANGUL JONGSEONG KIYEOK-SIOS → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG SIOS      # →ᆨᆺ→
+3133 ; 1100 1109 ;     SL      # ( ㄳ → ᄀᄉ ) HANGUL LETTER KIYEOK-SIOS → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG SIOS # →ᆪ→→ᆨᆺ→
+
+11C4 ; 1100 1109 1100 ;        SL      # ( ᇄ → ᄀᄉᄀ ) HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK    # →ᆨᆺᆨ→
+
+11FC ; 1100 110E ;     SL      # ( ᇼ → ᄀᄎ ) HANGUL JONGSEONG KIYEOK-CHIEUCH → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG CHIEUCH        # →ᆨᆾ→
+
+11FD ; 1100 110F ;     SL      # ( ᇽ → ᄀᄏ ) HANGUL JONGSEONG KIYEOK-KHIEUKH → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KHIEUKH        # →ᆨᆿ→
+
+11FE ; 1100 1112 ;     SL      # ( ᇾ → ᄀᄒ ) HANGUL JONGSEONG KIYEOK-HIEUH → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG HIEUH    # →ᆨᇂ→
+
+3134 ; 1102 ;  SL      # ( ㄴ → ᄂ ) HANGUL LETTER NIEUN → HANGUL CHOSEONG NIEUN # 
+11AB ; 1102 ;  SL      # ( ᆫ → ᄂ ) HANGUL JONGSEONG NIEUN → HANGUL CHOSEONG NIEUN      # 
+
+1113 ; 1102 1100 ;     SL      # ( ᄓ → ᄂᄀ ) HANGUL CHOSEONG NIEUN-KIYEOK → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG KIYEOK     # 
+11C5 ; 1102 1100 ;     SL      # ( ᇅ → ᄂᄀ ) HANGUL JONGSEONG NIEUN-KIYEOK → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG KIYEOK    # →ᄓ→
+
+1114 ; 1102 1102 ;     SL      # ( ᄔ → ᄂᄂ ) HANGUL CHOSEONG SSANGNIEUN → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG NIEUN        # 
+3165 ; 1102 1102 ;     SL      # ( ㅥ → ᄂᄂ ) HANGUL LETTER SSANGNIEUN → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG NIEUN  # →ᄔ→
+11FF ; 1102 1102 ;     SL      # ( ᇿ → ᄂᄂ ) HANGUL JONGSEONG SSANGNIEUN → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG NIEUN       # →ᆫᆫ→
+
+1115 ; 1102 1103 ;     SL      # ( ᄕ → ᄂᄃ ) HANGUL CHOSEONG NIEUN-TIKEUT → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG TIKEUT     # 
+3166 ; 1102 1103 ;     SL      # ( ㅦ → ᄂᄃ ) HANGUL LETTER NIEUN-TIKEUT → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG TIKEUT       # →ᄕ→
+11C6 ; 1102 1103 ;     SL      # ( ᇆ → ᄂᄃ ) HANGUL JONGSEONG NIEUN-TIKEUT → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG TIKEUT    # →ᄕ→
+
+D7CB ; 1102 1105 ;     SL      # ( ퟋ → ᄂᄅ ) HANGUL JONGSEONG NIEUN-RIEUL → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG RIEUL      # →ᆫᆯ→
+
+1116 ; 1102 1107 ;     SL      # ( ᄖ → ᄂᄇ ) HANGUL CHOSEONG NIEUN-PIEUP → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG PIEUP       # 
+
+115B ; 1102 1109 ;     SL      # ( ᅛ → ᄂᄉ ) HANGUL CHOSEONG NIEUN-SIOS → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG SIOS # 
+11C7 ; 1102 1109 ;     SL      # ( ᇇ → ᄂᄉ ) HANGUL JONGSEONG NIEUN-SIOS → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG SIOS        # →ᆫᆺ→
+3167 ; 1102 1109 ;     SL      # ( ㅧ → ᄂᄉ ) HANGUL LETTER NIEUN-SIOS → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG SIOS   # →ᇇ→→ᆫᆺ→
+
+115C ; 1102 110C ;     SL      # ( ᅜ → ᄂᄌ ) HANGUL CHOSEONG NIEUN-CIEUC → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG CIEUC       # 
+11AC ; 1102 110C ;     SL      # ( ᆬ → ᄂᄌ ) HANGUL JONGSEONG NIEUN-CIEUC → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG CIEUC      # →ᆫᆽ→
+3135 ; 1102 110C ;     SL      # ( ㄵ → ᄂᄌ ) HANGUL LETTER NIEUN-CIEUC → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG CIEUC # →ᆬ→→ᆫᆽ→
+
+D7CC ; 1102 110E ;     SL      # ( ퟌ → ᄂᄎ ) HANGUL JONGSEONG NIEUN-CHIEUCH → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG CHIEUCH  # →ᆫᆾ→
+
+11C9 ; 1102 1110 ;     SL      # ( ᇉ → ᄂᄐ ) HANGUL JONGSEONG NIEUN-THIEUTH → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG THIEUTH  # →ᆫᇀ→
+
+115D ; 1102 1112 ;     SL      # ( ᅝ → ᄂᄒ ) HANGUL CHOSEONG NIEUN-HIEUH → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG HIEUH       # 
+11AD ; 1102 1112 ;     SL      # ( ᆭ → ᄂᄒ ) HANGUL JONGSEONG NIEUN-HIEUH → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG HIEUH      # →ᆫᇂ→
+3136 ; 1102 1112 ;     SL      # ( ㄶ → ᄂᄒ ) HANGUL LETTER NIEUN-HIEUH → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG HIEUH # →ᆭ→→ᆫᇂ→
+
+11C8 ; 1102 1140 ;     SL      # ( ᇈ → ᄂᅀ ) HANGUL JONGSEONG NIEUN-PANSIOS → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG PANSIOS  # →ᆫᇫ→
+3168 ; 1102 1140 ;     SL      # ( ㅨ → ᄂᅀ ) HANGUL LETTER NIEUN-PANSIOS → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG PANSIOS     # →ᇈ→→ᆫᇫ→
+
+3137 ; 1103 ;  SL      # ( ㄷ → ᄃ ) HANGUL LETTER TIKEUT → HANGUL CHOSEONG TIKEUT       # 
+11AE ; 1103 ;  SL      # ( ᆮ → ᄃ ) HANGUL JONGSEONG TIKEUT → HANGUL CHOSEONG TIKEUT    # 
+
+1117 ; 1103 1100 ;     SL      # ( ᄗ → ᄃᄀ ) HANGUL CHOSEONG TIKEUT-KIYEOK → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG KIYEOK   # 
+11CA ; 1103 1100 ;     SL      # ( ᇊ → ᄃᄀ ) HANGUL JONGSEONG TIKEUT-KIYEOK → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG KIYEOK  # →ᄗ→
+
+1104 ; 1103 1103 ;     SL      # ( ᄄ → ᄃᄃ ) HANGUL CHOSEONG SSANGTIKEUT → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG TIKEUT     # 
+3138 ; 1103 1103 ;     SL      # ( ㄸ → ᄃᄃ ) HANGUL LETTER SSANGTIKEUT → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG TIKEUT       # →ᄄ→
+D7CD ; 1103 1103 ;     SL      # ( ퟍ → ᄃᄃ ) HANGUL JONGSEONG SSANGTIKEUT → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG TIKEUT    # →ᆮᆮ→
+
+D7CE ; 1103 1103 1107 ;        SL      # ( ퟎ → ᄃᄃᄇ ) HANGUL JONGSEONG SSANGTIKEUT-PIEUP → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG PIEUP    # →ᆮᆮᆸ→
+
+115E ; 1103 1105 ;     SL      # ( ᅞ → ᄃᄅ ) HANGUL CHOSEONG TIKEUT-RIEUL → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG RIEUL     # 
+11CB ; 1103 1105 ;     SL      # ( ᇋ → ᄃᄅ ) HANGUL JONGSEONG TIKEUT-RIEUL → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG RIEUL    # →ᆮᆯ→
+
+A960 ; 1103 1106 ;     SL      # ( ꥠ → ᄃᄆ ) HANGUL CHOSEONG TIKEUT-MIEUM → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG MIEUM     # 
+
+A961 ; 1103 1107 ;     SL      # ( ꥡ → ᄃᄇ ) HANGUL CHOSEONG TIKEUT-PIEUP → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG PIEUP     # 
+D7CF ; 1103 1107 ;     SL      # ( ퟏ → ᄃᄇ ) HANGUL JONGSEONG TIKEUT-PIEUP → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG PIEUP    # →ᆮᆸ→
+
+A962 ; 1103 1109 ;     SL      # ( ꥢ → ᄃᄉ ) HANGUL CHOSEONG TIKEUT-SIOS → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG SIOS       # 
+D7D0 ; 1103 1109 ;     SL      # ( ퟐ → ᄃᄉ ) HANGUL JONGSEONG TIKEUT-SIOS → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG SIOS      # →ᆮᆺ→
+
+D7D1 ; 1103 1109 1100 ;        SL      # ( ퟑ → ᄃᄉᄀ ) HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK    # →ᆮᆺᆨ→
+
+A963 ; 1103 110C ;     SL      # ( ꥣ → ᄃᄌ ) HANGUL CHOSEONG TIKEUT-CIEUC → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG CIEUC     # 
+D7D2 ; 1103 110C ;     SL      # ( ퟒ → ᄃᄌ ) HANGUL JONGSEONG TIKEUT-CIEUC → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG CIEUC    # →ᆮᆽ→
+
+D7D3 ; 1103 110E ;     SL      # ( ퟓ → ᄃᄎ ) HANGUL JONGSEONG TIKEUT-CHIEUCH → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG CHIEUCH        # →ᆮᆾ→
+
+D7D4 ; 1103 1110 ;     SL      # ( ퟔ → ᄃᄐ ) HANGUL JONGSEONG TIKEUT-THIEUTH → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG THIEUTH        # →ᆮᇀ→
+
+3139 ; 1105 ;  SL      # ( ㄹ → ᄅ ) HANGUL LETTER RIEUL → HANGUL CHOSEONG RIEUL # 
+11AF ; 1105 ;  SL      # ( ᆯ → ᄅ ) HANGUL JONGSEONG RIEUL → HANGUL CHOSEONG RIEUL      # 
+
+A964 ; 1105 1100 ;     SL      # ( ꥤ → ᄅᄀ ) HANGUL CHOSEONG RIEUL-KIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK     # 
+11B0 ; 1105 1100 ;     SL      # ( ᆰ → ᄅᄀ ) HANGUL JONGSEONG RIEUL-KIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK    # →ᆯᆨ→
+313A ; 1105 1100 ;     SL      # ( ㄺ → ᄅᄀ ) HANGUL LETTER RIEUL-KIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK       # →ᆰ→→ᆯᆨ→
+
+A965 ; 1105 1100 1100 ;        SL      # ( ꥥ → ᄅᄀᄀ ) HANGUL CHOSEONG RIEUL-SSANGKIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK     # 
+D7D5 ; 1105 1100 1100 ;        SL      # ( ퟕ → ᄅᄀᄀ ) HANGUL JONGSEONG RIEUL-SSANGKIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK    # →ᆯᆨᆨ→
+
+11CC ; 1105 1100 1109 ;        SL      # ( ᇌ → ᄅᄀᄉ ) HANGUL JONGSEONG RIEUL-KIYEOK-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG SIOS      # →ᆯᆨᆺ→
+3169 ; 1105 1100 1109 ;        SL      # ( ㅩ → ᄅᄀᄉ ) HANGUL LETTER RIEUL-KIYEOK-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG SIOS # →ᇌ→→ᆯᆨᆺ→
+
+D7D6 ; 1105 1100 1112 ;        SL      # ( ퟖ → ᄅᄀᄒ ) HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG HIEUH    # →ᆯᆨᇂ→
+
+1118 ; 1105 1102 ;     SL      # ( ᄘ → ᄅᄂ ) HANGUL CHOSEONG RIEUL-NIEUN → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG NIEUN       # 
+11CD ; 1105 1102 ;     SL      # ( ᇍ → ᄅᄂ ) HANGUL JONGSEONG RIEUL-NIEUN → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG NIEUN      # →ᄘ→
+
+A966 ; 1105 1103 ;     SL      # ( ꥦ → ᄅᄃ ) HANGUL CHOSEONG RIEUL-TIKEUT → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG TIKEUT     # 
+11CE ; 1105 1103 ;     SL      # ( ᇎ → ᄅᄃ ) HANGUL JONGSEONG RIEUL-TIKEUT → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG TIKEUT    # →ᆯᆮ→
+316A ; 1105 1103 ;     SL      # ( ㅪ → ᄅᄃ ) HANGUL LETTER RIEUL-TIKEUT → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG TIKEUT       # →ᇎ→→ᆯᆮ→
+
+A967 ; 1105 1103 1103 ;        SL      # ( ꥧ → ᄅᄃᄃ ) HANGUL CHOSEONG RIEUL-SSANGTIKEUT → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG TIKEUT     # 
+
+11CF ; 1105 1103 1112 ;        SL      # ( ᇏ → ᄅᄃᄒ ) HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG HIEUH    # →ᆯᆮᇂ→
+
+1119 ; 1105 1105 ;     SL      # ( ᄙ → ᄅᄅ ) HANGUL CHOSEONG SSANGRIEUL → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG RIEUL        # 
+11D0 ; 1105 1105 ;     SL      # ( ᇐ → ᄅᄅ ) HANGUL JONGSEONG SSANGRIEUL → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG RIEUL       # →ᄙ→
+
+D7D7 ; 1105 1105 110F ;        SL      # ( ퟗ → ᄅᄅᄏ ) HANGUL JONGSEONG SSANGRIEUL-KHIEUKH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KHIEUKH   # →ᆯᆯᆿ→
+
+A968 ; 1105 1106 ;     SL      # ( ꥨ → ᄅᄆ ) HANGUL CHOSEONG RIEUL-MIEUM → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM       # 
+11B1 ; 1105 1106 ;     SL      # ( ᆱ → ᄅᄆ ) HANGUL JONGSEONG RIEUL-MIEUM → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM      # →ᆯᆷ→
+313B ; 1105 1106 ;     SL      # ( ㄻ → ᄅᄆ ) HANGUL LETTER RIEUL-MIEUM → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM # →ᆱ→→ᆯᆷ→
+
+11D1 ; 1105 1106 1100 ;        SL      # ( ᇑ → ᄅᄆᄀ ) HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG KIYEOK    # →ᆯᆷᆨ→
+
+11D2 ; 1105 1106 1109 ;        SL      # ( ᇒ → ᄅᄆᄉ ) HANGUL JONGSEONG RIEUL-MIEUM-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG SIOS        # →ᆯᆷᆺ→
+
+D7D8 ; 1105 1106 1112 ;        SL      # ( ퟘ → ᄅᄆᄒ ) HANGUL JONGSEONG RIEUL-MIEUM-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG HIEUH      # →ᆯᆷᇂ→
+
+A969 ; 1105 1107 ;     SL      # ( ꥩ → ᄅᄇ ) HANGUL CHOSEONG RIEUL-PIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP       # 
+11B2 ; 1105 1107 ;     SL      # ( ᆲ → ᄅᄇ ) HANGUL JONGSEONG RIEUL-PIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP      # →ᆯᆸ→
+313C ; 1105 1107 ;     SL      # ( ㄼ → ᄅᄇ ) HANGUL LETTER RIEUL-PIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP # →ᆲ→→ᆯᆸ→
+
+D7D9 ; 1105 1107 1103 ;        SL      # ( ퟙ → ᄅᄇᄃ ) HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG TIKEUT    # →ᆯᆸᆮ→
+
+A96A ; 1105 1107 1107 ;        SL      # ( ꥪ → ᄅᄇᄇ ) HANGUL CHOSEONG RIEUL-SSANGPIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP        # 
+
+11D3 ; 1105 1107 1109 ;        SL      # ( ᇓ → ᄅᄇᄉ ) HANGUL JONGSEONG RIEUL-PIEUP-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS        # →ᆯᆸᆺ→
+316B ; 1105 1107 1109 ;        SL      # ( ㅫ → ᄅᄇᄉ ) HANGUL LETTER RIEUL-PIEUP-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS   # →ᇓ→→ᆯᆸᆺ→
+
+A96B ; 1105 1107 110B ;        SL      # ( ꥫ → ᄅᄇᄋ ) HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG     # 
+11D5 ; 1105 1107 110B ;        SL      # ( ᇕ → ᄅᄇᄋ ) HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG    # →ᆯᆸᆼ→
+
+D7DA ; 1105 1107 1111 ;        SL      # ( ퟚ → ᄅᄇᄑ ) HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PHIEUPH  # →ᆯᆸᇁ→
+
+11D4 ; 1105 1107 1112 ;        SL      # ( ᇔ → ᄅᄇᄒ ) HANGUL JONGSEONG RIEUL-PIEUP-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG HIEUH      # →ᆯᆸᇂ→
+
+A96C ; 1105 1109 ;     SL      # ( ꥬ → ᄅᄉ ) HANGUL CHOSEONG RIEUL-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG SIOS # 
+11B3 ; 1105 1109 ;     SL      # ( ᆳ → ᄅᄉ ) HANGUL JONGSEONG RIEUL-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG SIOS        # →ᆯᆺ→
+313D ; 1105 1109 ;     SL      # ( ㄽ → ᄅᄉ ) HANGUL LETTER RIEUL-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG SIOS   # →ᆳ→→ᆯᆺ→
+
+11D6 ; 1105 1109 1109 ;        SL      # ( ᇖ → ᄅᄉᄉ ) HANGUL JONGSEONG RIEUL-SSANGSIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS  # →ᆯᆺᆺ→
+
+111B ; 1105 110B ;     SL      # ( ᄛ → ᄅᄋ ) HANGUL CHOSEONG KAPYEOUNRIEUL → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG IEUNG     # 
+D7DD ; 1105 110B ;     SL      # ( ퟝ → ᄅᄋ ) HANGUL JONGSEONG KAPYEOUNRIEUL → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG IEUNG    # →ᆯᆼ→
+
+A96D ; 1105 110C ;     SL      # ( ꥭ → ᄅᄌ ) HANGUL CHOSEONG RIEUL-CIEUC → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG CIEUC       # 
+
+A96E ; 1105 110F ;     SL      # ( ꥮ → ᄅᄏ ) HANGUL CHOSEONG RIEUL-KHIEUKH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KHIEUKH   # 
+11D8 ; 1105 110F ;     SL      # ( ᇘ → ᄅᄏ ) HANGUL JONGSEONG RIEUL-KHIEUKH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KHIEUKH  # →ᆯᆿ→
+
+11B4 ; 1105 1110 ;     SL      # ( ᆴ → ᄅᄐ ) HANGUL JONGSEONG RIEUL-THIEUTH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG THIEUTH  # →ᆯᇀ→
+313E ; 1105 1110 ;     SL      # ( ㄾ → ᄅᄐ ) HANGUL LETTER RIEUL-THIEUTH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG THIEUTH     # →ᆴ→→ᆯᇀ→
+
+11B5 ; 1105 1111 ;     SL      # ( ᆵ → ᄅᄑ ) HANGUL JONGSEONG RIEUL-PHIEUPH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PHIEUPH  # →ᆯᇁ→
+313F ; 1105 1111 ;     SL      # ( ㄿ → ᄅᄑ ) HANGUL LETTER RIEUL-PHIEUPH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PHIEUPH     # →ᆵ→→ᆯᇁ→
+
+111A ; 1105 1112 ;     SL      # ( ᄚ → ᄅᄒ ) HANGUL CHOSEONG RIEUL-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG HIEUH       # 
+3140 ; 1105 1112 ;     SL      # ( ㅀ → ᄅᄒ ) HANGUL LETTER RIEUL-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG HIEUH # →ᄚ→
+113B ; 1105 1112 ;     SL      # ( ᄻ → ᄅᄒ ) HANGUL CHOSEONG SIOS-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG HIEUH        # →ᄚ→
+11B6 ; 1105 1112 ;     SL      # ( ᆶ → ᄅᄒ ) HANGUL JONGSEONG RIEUL-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG HIEUH      # →ᄚ→
+D7F2 ; 1105 1112 ;     SL      # ( ퟲ → ᄅᄒ ) HANGUL JONGSEONG SIOS-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG HIEUH       # →ᆺᇂ→→ᄉᄒ→→ᄻ→→ᄚ→
+
+11D7 ; 1105 1140 ;     SL      # ( ᇗ → ᄅᅀ ) HANGUL JONGSEONG RIEUL-PANSIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PANSIOS  # →ᆯᇫ→
+316C ; 1105 1140 ;     SL      # ( ㅬ → ᄅᅀ ) HANGUL LETTER RIEUL-PANSIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PANSIOS     # →ᇗ→→ᆯᇫ→
+
+D7DB ; 1105 114C ;     SL      # ( ퟛ → ᄅᅌ ) HANGUL JONGSEONG RIEUL-YESIEUNG → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG YESIEUNG        # →ᆯᇰ→
+
+11D9 ; 1105 1159 ;     SL      # ( ᇙ → ᄅᅙ ) HANGUL JONGSEONG RIEUL-YEORINHIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG YEORINHIEUH  # →ᆯᇹ→
+316D ; 1105 1159 ;     SL      # ( ㅭ → ᄅᅙ ) HANGUL LETTER RIEUL-YEORINHIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG YEORINHIEUH     # →ᇙ→→ᆯᇹ→
+
+D7DC ; 1105 1159 1112 ;        SL      # ( ퟜ → ᄅᅙᄒ ) HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG YEORINHIEUH, HANGUL CHOSEONG HIEUH  # →ᆯᇹᇂ→
+
+3141 ; 1106 ;  SL      # ( ㅁ → ᄆ ) HANGUL LETTER MIEUM → HANGUL CHOSEONG MIEUM # 
+11B7 ; 1106 ;  SL      # ( ᆷ → ᄆ ) HANGUL JONGSEONG MIEUM → HANGUL CHOSEONG MIEUM      # 
+
+A96F ; 1106 1100 ;     SL      # ( ꥯ → ᄆᄀ ) HANGUL CHOSEONG MIEUM-KIYEOK → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG KIYEOK     # 
+11DA ; 1106 1100 ;     SL      # ( ᇚ → ᄆᄀ ) HANGUL JONGSEONG MIEUM-KIYEOK → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG KIYEOK    # →ᆷᆨ→
+
+D7DE ; 1106 1102 ;     SL      # ( ퟞ → ᄆᄂ ) HANGUL JONGSEONG MIEUM-NIEUN → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG NIEUN      # →ᆷᆫ→
+
+D7DF ; 1106 1102 1102 ;        SL      # ( ퟟ → ᄆᄂᄂ ) HANGUL JONGSEONG MIEUM-SSANGNIEUN → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG NIEUN       # →ᆷᆫᆫ→
+
+A970 ; 1106 1103 ;     SL      # ( ꥰ → ᄆᄃ ) HANGUL CHOSEONG MIEUM-TIKEUT → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG TIKEUT     # 
+
+11DB ; 1106 1105 ;     SL      # ( ᇛ → ᄆᄅ ) HANGUL JONGSEONG MIEUM-RIEUL → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG RIEUL      # →ᆷᆯ→
+
+D7E0 ; 1106 1106 ;     SL      # ( ퟠ → ᄆᄆ ) HANGUL JONGSEONG SSANGMIEUM → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG MIEUM       # →ᆷᆷ→
+
+111C ; 1106 1107 ;     SL      # ( ᄜ → ᄆᄇ ) HANGUL CHOSEONG MIEUM-PIEUP → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PIEUP       # 
+316E ; 1106 1107 ;     SL      # ( ㅮ → ᄆᄇ ) HANGUL LETTER MIEUM-PIEUP → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PIEUP # →ᄜ→
+11DC ; 1106 1107 ;     SL      # ( ᇜ → ᄆᄇ ) HANGUL JONGSEONG MIEUM-PIEUP → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PIEUP      # →ᄜ→
+
+D7E1 ; 1106 1107 1109 ;        SL      # ( ퟡ → ᄆᄇᄉ ) HANGUL JONGSEONG MIEUM-PIEUP-SIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS        # →ᆷᆸᆺ→
+
+A971 ; 1106 1109 ;     SL      # ( ꥱ → ᄆᄉ ) HANGUL CHOSEONG MIEUM-SIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG SIOS # 
+11DD ; 1106 1109 ;     SL      # ( ᇝ → ᄆᄉ ) HANGUL JONGSEONG MIEUM-SIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG SIOS        # →ᆷᆺ→
+316F ; 1106 1109 ;     SL      # ( ㅯ → ᄆᄉ ) HANGUL LETTER MIEUM-SIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG SIOS   # →ᇝ→→ᆷᆺ→
+
+11DE ; 1106 1109 1109 ;        SL      # ( ᇞ → ᄆᄉᄉ ) HANGUL JONGSEONG MIEUM-SSANGSIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS  # →ᆷᆺᆺ→
+
+111D ; 1106 110B ;     SL      # ( ᄝ → ᄆᄋ ) HANGUL CHOSEONG KAPYEOUNMIEUM → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG IEUNG     # 
+3171 ; 1106 110B ;     SL      # ( ㅱ → ᄆᄋ ) HANGUL LETTER KAPYEOUNMIEUM → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG IEUNG       # →ᄝ→
+11E2 ; 1106 110B ;     SL      # ( ᇢ → ᄆᄋ ) HANGUL JONGSEONG KAPYEOUNMIEUM → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG IEUNG    # →ᄝ→
+
+D7E2 ; 1106 110C ;     SL      # ( ퟢ → ᄆᄌ ) HANGUL JONGSEONG MIEUM-CIEUC → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG CIEUC      # →ᆷᆽ→
+
+11E0 ; 1106 110E ;     SL      # ( ᇠ → ᄆᄎ ) HANGUL JONGSEONG MIEUM-CHIEUCH → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG CHIEUCH  # →ᆷᆾ→
+
+11E1 ; 1106 1112 ;     SL      # ( ᇡ → ᄆᄒ ) HANGUL JONGSEONG MIEUM-HIEUH → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG HIEUH      # →ᆷᇂ→
+
+11DF ; 1106 1140 ;     SL      # ( ᇟ → ᄆᅀ ) HANGUL JONGSEONG MIEUM-PANSIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PANSIOS  # →ᆷᇫ→
+3170 ; 1106 1140 ;     SL      # ( ㅰ → ᄆᅀ ) HANGUL LETTER MIEUM-PANSIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PANSIOS     # →ᇟ→→ᆷᇫ→
+
+3142 ; 1107 ;  SL      # ( ㅂ → ᄇ ) HANGUL LETTER PIEUP → HANGUL CHOSEONG PIEUP # 
+11B8 ; 1107 ;  SL      # ( ᆸ → ᄇ ) HANGUL JONGSEONG PIEUP → HANGUL CHOSEONG PIEUP      # 
+
+111E ; 1107 1100 ;     SL      # ( ᄞ → ᄇᄀ ) HANGUL CHOSEONG PIEUP-KIYEOK → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG KIYEOK     # 
+3172 ; 1107 1100 ;     SL      # ( ㅲ → ᄇᄀ ) HANGUL LETTER PIEUP-KIYEOK → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG KIYEOK       # →ᄞ→
+
+111F ; 1107 1102 ;     SL      # ( ᄟ → ᄇᄂ ) HANGUL CHOSEONG PIEUP-NIEUN → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG NIEUN       # 
+
+1120 ; 1107 1103 ;     SL      # ( ᄠ → ᄇᄃ ) HANGUL CHOSEONG PIEUP-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG TIKEUT     # 
+3173 ; 1107 1103 ;     SL      # ( ㅳ → ᄇᄃ ) HANGUL LETTER PIEUP-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG TIKEUT       # →ᄠ→
+D7E3 ; 1107 1103 ;     SL      # ( ퟣ → ᄇᄃ ) HANGUL JONGSEONG PIEUP-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG TIKEUT    # →ᆸᆮ→
+
+11E3 ; 1107 1105 ;     SL      # ( ᇣ → ᄇᄅ ) HANGUL JONGSEONG PIEUP-RIEUL → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG RIEUL      # →ᆸᆯ→
+
+D7E4 ; 1107 1105 1111 ;        SL      # ( ퟤ → ᄇᄅᄑ ) HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PHIEUPH  # →ᆸᆯᇁ→
+
+D7E5 ; 1107 1106 ;     SL      # ( ퟥ → ᄇᄆ ) HANGUL JONGSEONG PIEUP-MIEUM → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG MIEUM      # →ᆸᆷ→
+
+1108 ; 1107 1107 ;     SL      # ( ᄈ → ᄇᄇ ) HANGUL CHOSEONG SSANGPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP        # 
+3143 ; 1107 1107 ;     SL      # ( ㅃ → ᄇᄇ ) HANGUL LETTER SSANGPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP  # →ᄈ→
+D7E6 ; 1107 1107 ;     SL      # ( ퟦ → ᄇᄇ ) HANGUL JONGSEONG SSANGPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP       # →ᆸᆸ→
+
+112C ; 1107 1107 110B ;        SL      # ( ᄬ → ᄇᄇᄋ ) HANGUL CHOSEONG KAPYEOUNSSANGPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG      # 
+3179 ; 1107 1107 110B ;        SL      # ( ㅹ → ᄇᄇᄋ ) HANGUL LETTER KAPYEOUNSSANGPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG        # →ᄬ→
+
+1121 ; 1107 1109 ;     SL      # ( ᄡ → ᄇᄉ ) HANGUL CHOSEONG PIEUP-SIOS → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS # 
+3144 ; 1107 1109 ;     SL      # ( ㅄ → ᄇᄉ ) HANGUL LETTER PIEUP-SIOS → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS   # →ᄡ→
+11B9 ; 1107 1109 ;     SL      # ( ᆹ → ᄇᄉ ) HANGUL JONGSEONG PIEUP-SIOS → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS        # →ᄡ→
+
+1122 ; 1107 1109 1100 ;        SL      # ( ᄢ → ᄇᄉᄀ ) HANGUL CHOSEONG PIEUP-SIOS-KIYEOK → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK       # 
+3174 ; 1107 1109 1100 ;        SL      # ( ㅴ → ᄇᄉᄀ ) HANGUL LETTER PIEUP-SIOS-KIYEOK → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK # →ᄢ→
+
+1123 ; 1107 1109 1103 ;        SL      # ( ᄣ → ᄇᄉᄃ ) HANGUL CHOSEONG PIEUP-SIOS-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT       # 
+3175 ; 1107 1109 1103 ;        SL      # ( ㅵ → ᄇᄉᄃ ) HANGUL LETTER PIEUP-SIOS-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT # →ᄣ→
+D7E7 ; 1107 1109 1103 ;        SL      # ( ퟧ → ᄇᄉᄃ ) HANGUL JONGSEONG PIEUP-SIOS-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT      # →ᆸᆺᆮ→
+
+1124 ; 1107 1109 1107 ;        SL      # ( ᄤ → ᄇᄉᄇ ) HANGUL CHOSEONG PIEUP-SIOS-PIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP # 
+
+1125 ; 1107 1109 1109 ;        SL      # ( ᄥ → ᄇᄉᄉ ) HANGUL CHOSEONG PIEUP-SSANGSIOS → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS   # 
+
+1126 ; 1107 1109 110C ;        SL      # ( ᄦ → ᄇᄉᄌ ) HANGUL CHOSEONG PIEUP-SIOS-CIEUC → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CIEUC # 
+
+A972 ; 1107 1109 1110 ;        SL      # ( ꥲ → ᄇᄉᄐ ) HANGUL CHOSEONG PIEUP-SIOS-THIEUTH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG THIEUTH     # 
+
+112B ; 1107 110B ;     SL      # ( ᄫ → ᄇᄋ ) HANGUL CHOSEONG KAPYEOUNPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG     # 
+3178 ; 1107 110B ;     SL      # ( ㅸ → ᄇᄋ ) HANGUL LETTER KAPYEOUNPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG       # →ᄫ→
+11E6 ; 1107 110B ;     SL      # ( ᇦ → ᄇᄋ ) HANGUL JONGSEONG KAPYEOUNPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG    # →ᄫ→
+
+1127 ; 1107 110C ;     SL      # ( ᄧ → ᄇᄌ ) HANGUL CHOSEONG PIEUP-CIEUC → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG CIEUC       # 
+3176 ; 1107 110C ;     SL      # ( ㅶ → ᄇᄌ ) HANGUL LETTER PIEUP-CIEUC → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG CIEUC # →ᄧ→
+D7E8 ; 1107 110C ;     SL      # ( ퟨ → ᄇᄌ ) HANGUL JONGSEONG PIEUP-CIEUC → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG CIEUC      # →ᆸᆽ→
+
+1128 ; 1107 110E ;     SL      # ( ᄨ → ᄇᄎ ) HANGUL CHOSEONG PIEUP-CHIEUCH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG CHIEUCH   # 
+D7E9 ; 1107 110E ;     SL      # ( ퟩ → ᄇᄎ ) HANGUL JONGSEONG PIEUP-CHIEUCH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG CHIEUCH  # →ᆸᆾ→
+
+A973 ; 1107 110F ;     SL      # ( ꥳ → ᄇᄏ ) HANGUL CHOSEONG PIEUP-KHIEUKH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG KHIEUKH   # 
+
+1129 ; 1107 1110 ;     SL      # ( ᄩ → ᄇᄐ ) HANGUL CHOSEONG PIEUP-THIEUTH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG THIEUTH   # 
+3177 ; 1107 1110 ;     SL      # ( ㅷ → ᄇᄐ ) HANGUL LETTER PIEUP-THIEUTH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG THIEUTH     # →ᄩ→
+
+112A ; 1107 1111 ;     SL      # ( ᄪ → ᄇᄑ ) HANGUL CHOSEONG PIEUP-PHIEUPH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PHIEUPH   # 
+11E4 ; 1107 1111 ;     SL      # ( ᇤ → ᄇᄑ ) HANGUL JONGSEONG PIEUP-PHIEUPH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PHIEUPH  # →ᆸᇁ→
+
+A974 ; 1107 1112 ;     SL      # ( ꥴ → ᄇᄒ ) HANGUL CHOSEONG PIEUP-HIEUH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG HIEUH       # 
+11E5 ; 1107 1112 ;     SL      # ( ᇥ → ᄇᄒ ) HANGUL JONGSEONG PIEUP-HIEUH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG HIEUH      # →ᆸᇂ→
+
+3145 ; 1109 ;  SL      # ( ㅅ → ᄉ ) HANGUL LETTER SIOS → HANGUL CHOSEONG SIOS   # 
+11BA ; 1109 ;  SL      # ( ᆺ → ᄉ ) HANGUL JONGSEONG SIOS → HANGUL CHOSEONG SIOS        # 
+
+112D ; 1109 1100 ;     SL      # ( ᄭ → ᄉᄀ ) HANGUL CHOSEONG SIOS-KIYEOK → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK       # 
+317A ; 1109 1100 ;     SL      # ( ㅺ → ᄉᄀ ) HANGUL LETTER SIOS-KIYEOK → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK # →ᄭ→
+11E7 ; 1109 1100 ;     SL      # ( ᇧ → ᄉᄀ ) HANGUL JONGSEONG SIOS-KIYEOK → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK      # →ᄭ→
+
+112E ; 1109 1102 ;     SL      # ( ᄮ → ᄉᄂ ) HANGUL CHOSEONG SIOS-NIEUN → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG NIEUN # 
+317B ; 1109 1102 ;     SL      # ( ㅻ → ᄉᄂ ) HANGUL LETTER SIOS-NIEUN → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG NIEUN   # →ᄮ→
+
+112F ; 1109 1103 ;     SL      # ( ᄯ → ᄉᄃ ) HANGUL CHOSEONG SIOS-TIKEUT → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT       # 
+317C ; 1109 1103 ;     SL      # ( ㅼ → ᄉᄃ ) HANGUL LETTER SIOS-TIKEUT → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT # →ᄯ→
+11E8 ; 1109 1103 ;     SL      # ( ᇨ → ᄉᄃ ) HANGUL JONGSEONG SIOS-TIKEUT → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT      # →ᄯ→
+
+1130 ; 1109 1105 ;     SL      # ( ᄰ → ᄉᄅ ) HANGUL CHOSEONG SIOS-RIEUL → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG RIEUL # 
+11E9 ; 1109 1105 ;     SL      # ( ᇩ → ᄉᄅ ) HANGUL JONGSEONG SIOS-RIEUL → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG RIEUL        # →ᄰ→
+
+1131 ; 1109 1106 ;     SL      # ( ᄱ → ᄉᄆ ) HANGUL CHOSEONG SIOS-MIEUM → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG MIEUM # 
+D7EA ; 1109 1106 ;     SL      # ( ퟪ → ᄉᄆ ) HANGUL JONGSEONG SIOS-MIEUM → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG MIEUM        # →ᆺᆷ→
+
+1132 ; 1109 1107 ;     SL      # ( ᄲ → ᄉᄇ ) HANGUL CHOSEONG SIOS-PIEUP → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP # 
+317D ; 1109 1107 ;     SL      # ( ㅽ → ᄉᄇ ) HANGUL LETTER SIOS-PIEUP → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP   # →ᄲ→
+11EA ; 1109 1107 ;     SL      # ( ᇪ → ᄉᄇ ) HANGUL JONGSEONG SIOS-PIEUP → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP        # →ᄲ→
+
+1133 ; 1109 1107 1100 ;        SL      # ( ᄳ → ᄉᄇᄀ ) HANGUL CHOSEONG SIOS-PIEUP-KIYEOK → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG KIYEOK       # 
+
+D7EB ; 1109 1107 110B ;        SL      # ( ퟫ → ᄉᄇᄋ ) HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG      # →ᆺᆸᆼ→
+
+110A ; 1109 1109 ;     SL      # ( ᄊ → ᄉᄉ ) HANGUL CHOSEONG SSANGSIOS → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS   # 
+3146 ; 1109 1109 ;     SL      # ( ㅆ → ᄉᄉ ) HANGUL LETTER SSANGSIOS → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS     # →ᄊ→
+11BB ; 1109 1109 ;     SL      # ( ᆻ → ᄉᄉ ) HANGUL JONGSEONG SSANGSIOS → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS  # →ᄊ→
+
+D7EC ; 1109 1109 1100 ;        SL      # ( ퟬ → ᄉᄉᄀ ) HANGUL JONGSEONG SSANGSIOS-KIYEOK → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK        # →ᆺᆺᆨ→
+
+D7ED ; 1109 1109 1103 ;        SL      # ( ퟭ → ᄉᄉᄃ ) HANGUL JONGSEONG SSANGSIOS-TIKEUT → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT        # →ᆺᆺᆮ→
+
+A975 ; 1109 1109 1107 ;        SL      # ( ꥵ → ᄉᄉᄇ ) HANGUL CHOSEONG SSANGSIOS-PIEUP → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP   # 
+
+1134 ; 1109 1109 1109 ;        SL      # ( ᄴ → ᄉᄉᄉ ) HANGUL CHOSEONG SIOS-SSANGSIOS → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS     # 
+
+1135 ; 1109 110B ;     SL      # ( ᄵ → ᄉᄋ ) HANGUL CHOSEONG SIOS-IEUNG → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG IEUNG # 
+
+1136 ; 1109 110C ;     SL      # ( ᄶ → ᄉᄌ ) HANGUL CHOSEONG SIOS-CIEUC → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CIEUC # 
+317E ; 1109 110C ;     SL      # ( ㅾ → ᄉᄌ ) HANGUL LETTER SIOS-CIEUC → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CIEUC   # →ᄶ→
+D7EF ; 1109 110C ;     SL      # ( ퟯ → ᄉᄌ ) HANGUL JONGSEONG SIOS-CIEUC → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CIEUC        # →ᆺᆽ→
+
+1137 ; 1109 110E ;     SL      # ( ᄷ → ᄉᄎ ) HANGUL CHOSEONG SIOS-CHIEUCH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CHIEUCH     # 
+D7F0 ; 1109 110E ;     SL      # ( ퟰ → ᄉᄎ ) HANGUL JONGSEONG SIOS-CHIEUCH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CHIEUCH    # →ᆺᆾ→
+
+1138 ; 1109 110F ;     SL      # ( ᄸ → ᄉᄏ ) HANGUL CHOSEONG SIOS-KHIEUKH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KHIEUKH     # 
+
+1139 ; 1109 1110 ;     SL      # ( ᄹ → ᄉᄐ ) HANGUL CHOSEONG SIOS-THIEUTH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG THIEUTH     # 
+D7F1 ; 1109 1110 ;     SL      # ( ퟱ → ᄉᄐ ) HANGUL JONGSEONG SIOS-THIEUTH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG THIEUTH    # →ᆺᇀ→
+
+113A ; 1109 1111 ;     SL      # ( ᄺ → ᄉᄑ ) HANGUL CHOSEONG SIOS-PHIEUPH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PHIEUPH     # 
+
+D7EE ; 1109 1140 ;     SL      # ( ퟮ → ᄉᅀ ) HANGUL JONGSEONG SIOS-PANSIOS → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PANSIOS    # →ᆺᇫ→
+
+3147 ; 110B ;  SL      # ( ㅇ → ᄋ ) HANGUL LETTER IEUNG → HANGUL CHOSEONG IEUNG # 
+11BC ; 110B ;  SL      # ( ᆼ → ᄋ ) HANGUL JONGSEONG IEUNG → HANGUL CHOSEONG IEUNG      # 
+
+1141 ; 110B 1100 ;     SL      # ( ᅁ → ᄋᄀ ) HANGUL CHOSEONG IEUNG-KIYEOK → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG KIYEOK     # 
+11EC ; 110B 1100 ;     SL      # ( ᇬ → ᄋᄀ ) HANGUL JONGSEONG IEUNG-KIYEOK → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG KIYEOK    # →ᅁ→
+
+11ED ; 110B 1100 1100 ;        SL      # ( ᇭ → ᄋᄀᄀ ) HANGUL JONGSEONG IEUNG-SSANGKIYEOK → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK    # →ᆼᆨᆨ→
+
+1142 ; 110B 1103 ;     SL      # ( ᅂ → ᄋᄃ ) HANGUL CHOSEONG IEUNG-TIKEUT → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG TIKEUT     # 
+
+A976 ; 110B 1105 ;     SL      # ( ꥶ → ᄋᄅ ) HANGUL CHOSEONG IEUNG-RIEUL → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG RIEUL       # 
+
+1143 ; 110B 1106 ;     SL      # ( ᅃ → ᄋᄆ ) HANGUL CHOSEONG IEUNG-MIEUM → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG MIEUM       # 
+
+1144 ; 110B 1107 ;     SL      # ( ᅄ → ᄋᄇ ) HANGUL CHOSEONG IEUNG-PIEUP → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG PIEUP       # 
+
+1145 ; 110B 1109 ;     SL      # ( ᅅ → ᄋᄉ ) HANGUL CHOSEONG IEUNG-SIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG SIOS # 
+11F1 ; 110B 1109 ;     SL      # ( ᇱ → ᄋᄉ ) HANGUL JONGSEONG YESIEUNG-SIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG SIOS     # →ᅅ→
+3182 ; 110B 1109 ;     SL      # ( ㆂ → ᄋᄉ ) HANGUL LETTER YESIEUNG-SIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG SIOS        # →ᇱ→→ᅅ→
+
+1147 ; 110B 110B ;     SL      # ( ᅇ → ᄋᄋ ) HANGUL CHOSEONG SSANGIEUNG → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG IEUNG        # 
+3180 ; 110B 110B ;     SL      # ( ㆀ → ᄋᄋ ) HANGUL LETTER SSANGIEUNG → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG IEUNG  # →ᅇ→
+11EE ; 110B 110B ;     SL      # ( ᇮ → ᄋᄋ ) HANGUL JONGSEONG SSANGIEUNG → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG IEUNG       # →ᅇ→
+
+1148 ; 110B 110C ;     SL      # ( ᅈ → ᄋᄌ ) HANGUL CHOSEONG IEUNG-CIEUC → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG CIEUC       # 
+
+1149 ; 110B 110E ;     SL      # ( ᅉ → ᄋᄎ ) HANGUL CHOSEONG IEUNG-CHIEUCH → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG CHIEUCH   # 
+
+11EF ; 110B 110F ;     SL      # ( ᇯ → ᄋᄏ ) HANGUL JONGSEONG IEUNG-KHIEUKH → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG KHIEUKH  # →ᆼᆿ→
+
+114A ; 110B 1110 ;     SL      # ( ᅊ → ᄋᄐ ) HANGUL CHOSEONG IEUNG-THIEUTH → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG THIEUTH   # 
+
+114B ; 110B 1111 ;     SL      # ( ᅋ → ᄋᄑ ) HANGUL CHOSEONG IEUNG-PHIEUPH → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG PHIEUPH   # 
+
+A977 ; 110B 1112 ;     SL      # ( ꥷ → ᄋᄒ ) HANGUL CHOSEONG IEUNG-HIEUH → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG HIEUH       # 
+
+1146 ; 110B 1140 ;     SL      # ( ᅆ → ᄋᅀ ) HANGUL CHOSEONG IEUNG-PANSIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG PANSIOS   # 
+11F2 ; 110B 1140 ;     SL      # ( ᇲ → ᄋᅀ ) HANGUL JONGSEONG YESIEUNG-PANSIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG PANSIOS       # →ᅆ→
+3183 ; 110B 1140 ;     SL      # ( ㆃ → ᄋᅀ ) HANGUL LETTER YESIEUNG-PANSIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG PANSIOS  # →ᇲ→→ᅆ→
+
+3148 ; 110C ;  SL      # ( ㅈ → ᄌ ) HANGUL LETTER CIEUC → HANGUL CHOSEONG CIEUC # 
+11BD ; 110C ;  SL      # ( ᆽ → ᄌ ) HANGUL JONGSEONG CIEUC → HANGUL CHOSEONG CIEUC      # 
+
+D7F7 ; 110C 1107 ;     SL      # ( ퟷ → ᄌᄇ ) HANGUL JONGSEONG CIEUC-PIEUP → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG PIEUP      # →ᆽᆸ→
+
+D7F8 ; 110C 1107 1107 ;        SL      # ( ퟸ → ᄌᄇᄇ ) HANGUL JONGSEONG CIEUC-SSANGPIEUP → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP       # →ᆽᆸᆸ→
+
+114D ; 110C 110B ;     SL      # ( ᅍ → ᄌᄋ ) HANGUL CHOSEONG CIEUC-IEUNG → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG IEUNG       # 
+
+110D ; 110C 110C ;     SL      # ( ᄍ → ᄌᄌ ) HANGUL CHOSEONG SSANGCIEUC → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG CIEUC        # 
+3149 ; 110C 110C ;     SL      # ( ㅉ → ᄌᄌ ) HANGUL LETTER SSANGCIEUC → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG CIEUC  # →ᄍ→
+D7F9 ; 110C 110C ;     SL      # ( ퟹ → ᄌᄌ ) HANGUL JONGSEONG SSANGCIEUC → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG CIEUC       # →ᆽᆽ→
+
+A978 ; 110C 110C 1112 ;        SL      # ( ꥸ → ᄌᄌᄒ ) HANGUL CHOSEONG SSANGCIEUC-HIEUH → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG HIEUH        # 
+
+314A ; 110E ;  SL      # ( ㅊ → ᄎ ) HANGUL LETTER CHIEUCH → HANGUL CHOSEONG CHIEUCH     # 
+11BE ; 110E ;  SL      # ( ᆾ → ᄎ ) HANGUL JONGSEONG CHIEUCH → HANGUL CHOSEONG CHIEUCH  # 
+
+1152 ; 110E 110F ;     SL      # ( ᅒ → ᄎᄏ ) HANGUL CHOSEONG CHIEUCH-KHIEUKH → HANGUL CHOSEONG CHIEUCH, HANGUL CHOSEONG KHIEUKH       # 
+
+1153 ; 110E 1112 ;     SL      # ( ᅓ → ᄎᄒ ) HANGUL CHOSEONG CHIEUCH-HIEUH → HANGUL CHOSEONG CHIEUCH, HANGUL CHOSEONG HIEUH   # 
+
+314B ; 110F ;  SL      # ( ㅋ → ᄏ ) HANGUL LETTER KHIEUKH → HANGUL CHOSEONG KHIEUKH     # 
+11BF ; 110F ;  SL      # ( ᆿ → ᄏ ) HANGUL JONGSEONG KHIEUKH → HANGUL CHOSEONG KHIEUKH  # 
+
+314C ; 1110 ;  SL      # ( ㅌ → ᄐ ) HANGUL LETTER THIEUTH → HANGUL CHOSEONG THIEUTH     # 
+11C0 ; 1110 ;  SL      # ( ᇀ → ᄐ ) HANGUL JONGSEONG THIEUTH → HANGUL CHOSEONG THIEUTH  # 
+
+A979 ; 1110 1110 ;     SL      # ( ꥹ → ᄐᄐ ) HANGUL CHOSEONG SSANGTHIEUTH → HANGUL CHOSEONG THIEUTH, HANGUL CHOSEONG THIEUTH  # 
+
+314D ; 1111 ;  SL      # ( ㅍ → ᄑ ) HANGUL LETTER PHIEUPH → HANGUL CHOSEONG PHIEUPH     # 
+11C1 ; 1111 ;  SL      # ( ᇁ → ᄑ ) HANGUL JONGSEONG PHIEUPH → HANGUL CHOSEONG PHIEUPH  # 
+
+1156 ; 1111 1107 ;     SL      # ( ᅖ → ᄑᄇ ) HANGUL CHOSEONG PHIEUPH-PIEUP → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG PIEUP   # 
+11F3 ; 1111 1107 ;     SL      # ( ᇳ → ᄑᄇ ) HANGUL JONGSEONG PHIEUPH-PIEUP → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG PIEUP  # →ᅖ→
+
+D7FA ; 1111 1109 ;     SL      # ( ퟺ → ᄑᄉ ) HANGUL JONGSEONG PHIEUPH-SIOS → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG SIOS    # →ᇁᆺ→
+
+1157 ; 1111 110B ;     SL      # ( ᅗ → ᄑᄋ ) HANGUL CHOSEONG KAPYEOUNPHIEUPH → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG IEUNG # 
+3184 ; 1111 110B ;     SL      # ( ㆄ → ᄑᄋ ) HANGUL LETTER KAPYEOUNPHIEUPH → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG IEUNG   # →ᅗ→
+11F4 ; 1111 110B ;     SL      # ( ᇴ → ᄑᄋ ) HANGUL JONGSEONG KAPYEOUNPHIEUPH → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG IEUNG        # →ᅗ→
+
+D7FB ; 1111 1110 ;     SL      # ( ퟻ → ᄑᄐ ) HANGUL JONGSEONG PHIEUPH-THIEUTH → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG THIEUTH      # →ᇁᇀ→
+
+A97A ; 1111 1112 ;     SL      # ( ꥺ → ᄑᄒ ) HANGUL CHOSEONG PHIEUPH-HIEUH → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG HIEUH   # 
+
+314E ; 1112 ;  SL      # ( ㅎ → ᄒ ) HANGUL LETTER HIEUH → HANGUL CHOSEONG HIEUH # 
+11C2 ; 1112 ;  SL      # ( ᇂ → ᄒ ) HANGUL JONGSEONG HIEUH → HANGUL CHOSEONG HIEUH      # 
+
+11F5 ; 1112 1102 ;     SL      # ( ᇵ → ᄒᄂ ) HANGUL JONGSEONG HIEUH-NIEUN → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG NIEUN      # →ᇂᆫ→
+
+11F6 ; 1112 1105 ;     SL      # ( ᇶ → ᄒᄅ ) HANGUL JONGSEONG HIEUH-RIEUL → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG RIEUL      # →ᇂᆯ→
+
+11F7 ; 1112 1106 ;     SL      # ( ᇷ → ᄒᄆ ) HANGUL JONGSEONG HIEUH-MIEUM → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG MIEUM      # →ᇂᆷ→
+
+11F8 ; 1112 1107 ;     SL      # ( ᇸ → ᄒᄇ ) HANGUL JONGSEONG HIEUH-PIEUP → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG PIEUP      # →ᇂᆸ→
+
+A97B ; 1112 1109 ;     SL      # ( ꥻ → ᄒᄉ ) HANGUL CHOSEONG HIEUH-SIOS → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG SIOS # 
+
+1158 ; 1112 1112 ;     SL      # ( ᅘ → ᄒᄒ ) HANGUL CHOSEONG SSANGHIEUH → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG HIEUH        # 
+3185 ; 1112 1112 ;     SL      # ( ㆅ → ᄒᄒ ) HANGUL LETTER SSANGHIEUH → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG HIEUH  # →ᅘ→
+
+113D ; 113C 113C ;     SL      # ( ᄽ → ᄼᄼ ) HANGUL CHOSEONG CHITUEUMSSANGSIOS → HANGUL CHOSEONG CHITUEUMSIOS, HANGUL CHOSEONG CHITUEUMSIOS   # 
+
+113F ; 113E 113E ;     SL      # ( ᄿ → ᄾᄾ ) HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS → HANGUL CHOSEONG CEONGCHIEUMSIOS, HANGUL CHOSEONG CEONGCHIEUMSIOS  # 
+
+317F ; 1140 ;  SL      # ( ㅿ → ᅀ ) HANGUL LETTER PANSIOS → HANGUL CHOSEONG PANSIOS     # 
+11EB ; 1140 ;  SL      # ( ᇫ → ᅀ ) HANGUL JONGSEONG PANSIOS → HANGUL CHOSEONG PANSIOS  # 
+
+D7F3 ; 1140 1107 ;     SL      # ( ퟳ → ᅀᄇ ) HANGUL JONGSEONG PANSIOS-PIEUP → HANGUL CHOSEONG PANSIOS, HANGUL CHOSEONG PIEUP  # →ᇫᆸ→
+
+D7F4 ; 1140 1107 110B ;        SL      # ( ퟴ → ᅀᄇᄋ ) HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP → HANGUL CHOSEONG PANSIOS, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG        # →ᇫᆸᆼ→
+
+3181 ; 114C ;  SL      # ( ㆁ → ᅌ ) HANGUL LETTER YESIEUNG → HANGUL CHOSEONG YESIEUNG   # 
+11F0 ; 114C ;  SL      # ( ᇰ → ᅌ ) HANGUL JONGSEONG YESIEUNG → HANGUL CHOSEONG YESIEUNG        # 
+
+D7F5 ; 114C 1106 ;     SL      # ( ퟵ → ᅌᄆ ) HANGUL JONGSEONG YESIEUNG-MIEUM → HANGUL CHOSEONG YESIEUNG, HANGUL CHOSEONG MIEUM        # →ᇰᆷ→
+
+D7F6 ; 114C 1112 ;     SL      # ( ퟶ → ᅌᄒ ) HANGUL JONGSEONG YESIEUNG-HIEUH → HANGUL CHOSEONG YESIEUNG, HANGUL CHOSEONG HIEUH        # →ᇰᇂ→
+
+114F ; 114E 114E ;     SL      # ( ᅏ → ᅎᅎ ) HANGUL CHOSEONG CHITUEUMSSANGCIEUC → HANGUL CHOSEONG CHITUEUMCIEUC, HANGUL CHOSEONG CHITUEUMCIEUC        # 
+
+1151 ; 1150 1150 ;     SL      # ( ᅑ → ᅐᅐ ) HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC → HANGUL CHOSEONG CEONGCHIEUMCIEUC, HANGUL CHOSEONG CEONGCHIEUMCIEUC       # 
+
+3186 ; 1159 ;  SL      # ( ㆆ → ᅙ ) HANGUL LETTER YEORINHIEUH → HANGUL CHOSEONG YEORINHIEUH     # 
+11F9 ; 1159 ;  SL      # ( ᇹ → ᅙ ) HANGUL JONGSEONG YEORINHIEUH → HANGUL CHOSEONG YEORINHIEUH  # 
+
+A97C ; 1159 1159 ;     SL      # ( ꥼ → ᅙᅙ ) HANGUL CHOSEONG SSANGYEORINHIEUH → HANGUL CHOSEONG YEORINHIEUH, HANGUL CHOSEONG YEORINHIEUH      # 
+
+3164 ; 1160 ;  SL      # (  →  ) HANGUL FILLER → HANGUL JUNGSEONG FILLER   # 
+
+314F ; 1161 ;  SL      # ( ㅏ → ᅡ ) HANGUL LETTER A → HANGUL JUNGSEONG A        # 
+
+1176 ; 1161 1169 ;     SL      # ( ᅶ → ᅡᅩ ) HANGUL JUNGSEONG A-O → HANGUL JUNGSEONG A, HANGUL JUNGSEONG O    # 
+
+1177 ; 1161 116E ;     SL      # ( ᅷ → ᅡᅮ ) HANGUL JUNGSEONG A-U → HANGUL JUNGSEONG A, HANGUL JUNGSEONG U    # 
+
+11A3 ; 1161 1173 ;     SL      # ( ᆣ → ᅡᅳ ) HANGUL JUNGSEONG A-EU → HANGUL JUNGSEONG A, HANGUL JUNGSEONG EU  # 
+
+1162 ; 1161 1175 ;     SL      # ( ᅢ → ᅡᅵ ) HANGUL JUNGSEONG AE → HANGUL JUNGSEONG A, HANGUL JUNGSEONG I     # 
+3150 ; 1161 1175 ;     SL      # ( ㅐ → ᅡᅵ ) HANGUL LETTER AE → HANGUL JUNGSEONG A, HANGUL JUNGSEONG I        # →ᅢ→
+
+3151 ; 1163 ;  SL      # ( ㅑ → ᅣ ) HANGUL LETTER YA → HANGUL JUNGSEONG YA      # 
+
+1178 ; 1163 1169 ;     SL      # ( ᅸ → ᅣᅩ ) HANGUL JUNGSEONG YA-O → HANGUL JUNGSEONG YA, HANGUL JUNGSEONG O  # 
+
+1179 ; 1163 116D ;     SL      # ( ᅹ → ᅣᅭ ) HANGUL JUNGSEONG YA-YO → HANGUL JUNGSEONG YA, HANGUL JUNGSEONG YO        # 
+
+11A4 ; 1163 116E ;     SL      # ( ᆤ → ᅣᅮ ) HANGUL JUNGSEONG YA-U → HANGUL JUNGSEONG YA, HANGUL JUNGSEONG U  # 
+
+1164 ; 1163 1175 ;     SL      # ( ᅤ → ᅣᅵ ) HANGUL JUNGSEONG YAE → HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I   # 
+3152 ; 1163 1175 ;     SL      # ( ㅒ → ᅣᅵ ) HANGUL LETTER YAE → HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I      # →ᅤ→
+
+3153 ; 1165 ;  SL      # ( ㅓ → ᅥ ) HANGUL LETTER EO → HANGUL JUNGSEONG EO      # 
+
+117A ; 1165 1169 ;     SL      # ( ᅺ → ᅥᅩ ) HANGUL JUNGSEONG EO-O → HANGUL JUNGSEONG EO, HANGUL JUNGSEONG O  # 
+
+117B ; 1165 116E ;     SL      # ( ᅻ → ᅥᅮ ) HANGUL JUNGSEONG EO-U → HANGUL JUNGSEONG EO, HANGUL JUNGSEONG U  # 
+
+117C ; 1165 1173 ;     SL      # ( ᅼ → ᅥᅳ ) HANGUL JUNGSEONG EO-EU → HANGUL JUNGSEONG EO, HANGUL JUNGSEONG EU        # 
+
+1166 ; 1165 1175 ;     SL      # ( ᅦ → ᅥᅵ ) HANGUL JUNGSEONG E → HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I     # 
+3154 ; 1165 1175 ;     SL      # ( ㅔ → ᅥᅵ ) HANGUL LETTER E → HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I        # →ᅦ→
+
+3155 ; 1167 ;  SL      # ( ㅕ → ᅧ ) HANGUL LETTER YEO → HANGUL JUNGSEONG YEO    # 
+
+11A5 ; 1167 1163 ;     SL      # ( ᆥ → ᅧᅣ ) HANGUL JUNGSEONG YEO-YA → HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG YA      # 
+
+117D ; 1167 1169 ;     SL      # ( ᅽ → ᅧᅩ ) HANGUL JUNGSEONG YEO-O → HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG O        # 
+
+117E ; 1167 116E ;     SL      # ( ᅾ → ᅧᅮ ) HANGUL JUNGSEONG YEO-U → HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG U        # 
+
+1168 ; 1167 1175 ;     SL      # ( ᅨ → ᅧᅵ ) HANGUL JUNGSEONG YE → HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I   # 
+3156 ; 1167 1175 ;     SL      # ( ㅖ → ᅧᅵ ) HANGUL LETTER YE → HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I      # →ᅨ→
+
+3157 ; 1169 ;  SL      # ( ㅗ → ᅩ ) HANGUL LETTER O → HANGUL JUNGSEONG O        # 
+
+116A ; 1169 1161 ;     SL      # ( ᅪ → ᅩᅡ ) HANGUL JUNGSEONG WA → HANGUL JUNGSEONG O, HANGUL JUNGSEONG A     # 
+3158 ; 1169 1161 ;     SL      # ( ㅘ → ᅩᅡ ) HANGUL LETTER WA → HANGUL JUNGSEONG O, HANGUL JUNGSEONG A        # →ᅪ→
+
+116B ; 1169 1161 1175 ;        SL      # ( ᅫ → ᅩᅡᅵ ) HANGUL JUNGSEONG WAE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG A, HANGUL JUNGSEONG I     # 
+3159 ; 1169 1161 1175 ;        SL      # ( ㅙ → ᅩᅡᅵ ) HANGUL LETTER WAE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG A, HANGUL JUNGSEONG I        # →ᅫ→
+
+11A6 ; 1169 1163 ;     SL      # ( ᆦ → ᅩᅣ ) HANGUL JUNGSEONG O-YA → HANGUL JUNGSEONG O, HANGUL JUNGSEONG YA  # 
+
+11A7 ; 1169 1163 1175 ;        SL      # ( ᆧ → ᅩᅣᅵ ) HANGUL JUNGSEONG O-YAE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I  # 
+
+117F ; 1169 1165 ;     SL      # ( ᅿ → ᅩᅥ ) HANGUL JUNGSEONG O-EO → HANGUL JUNGSEONG O, HANGUL JUNGSEONG EO  # 
+
+1180 ; 1169 1165 1175 ;        SL      # ( ᆀ → ᅩᅥᅵ ) HANGUL JUNGSEONG O-E → HANGUL JUNGSEONG O, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I    # 
+
+D7B0 ; 1169 1167 ;     SL      # ( ힰ → ᅩᅧ ) HANGUL JUNGSEONG O-YEO → HANGUL JUNGSEONG O, HANGUL JUNGSEONG YEO        # 
+
+1181 ; 1169 1167 1175 ;        SL      # ( ᆁ → ᅩᅧᅵ ) HANGUL JUNGSEONG O-YE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I  # 
+
+1182 ; 1169 1169 ;     SL      # ( ᆂ → ᅩᅩ ) HANGUL JUNGSEONG O-O → HANGUL JUNGSEONG O, HANGUL JUNGSEONG O    # 
+
+D7B1 ; 1169 1169 1175 ;        SL      # ( ힱ → ᅩᅩᅵ ) HANGUL JUNGSEONG O-O-I → HANGUL JUNGSEONG O, HANGUL JUNGSEONG O, HANGUL JUNGSEONG I   # 
+
+1183 ; 1169 116E ;     SL      # ( ᆃ → ᅩᅮ ) HANGUL JUNGSEONG O-U → HANGUL JUNGSEONG O, HANGUL JUNGSEONG U    # 
+
+116C ; 1169 1175 ;     SL      # ( ᅬ → ᅩᅵ ) HANGUL JUNGSEONG OE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG I     # 
+315A ; 1169 1175 ;     SL      # ( ㅚ → ᅩᅵ ) HANGUL LETTER OE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG I        # →ᅬ→
+
+315B ; 116D ;  SL      # ( ㅛ → ᅭ ) HANGUL LETTER YO → HANGUL JUNGSEONG YO      # 
+
+D7B2 ; 116D 1161 ;     SL      # ( ힲ → ᅭᅡ ) HANGUL JUNGSEONG YO-A → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG A  # 
+
+D7B3 ; 116D 1161 1175 ;        SL      # ( ힳ → ᅭᅡᅵ ) HANGUL JUNGSEONG YO-AE → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG A, HANGUL JUNGSEONG I  # 
+
+1184 ; 116D 1163 ;     SL      # ( ᆄ → ᅭᅣ ) HANGUL JUNGSEONG YO-YA → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG YA        # 
+3187 ; 116D 1163 ;     SL      # ( ㆇ → ᅭᅣ ) HANGUL LETTER YO-YA → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG YA   # →ᆄ→
+1186 ; 116D 1163 ;     SL      # ( ᆆ → ᅭᅣ ) HANGUL JUNGSEONG YO-YEO → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG YA       # →ᆄ→
+
+1185 ; 116D 1163 1175 ;        SL      # ( ᆅ → ᅭᅣᅵ ) HANGUL JUNGSEONG YO-YAE → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I        # 
+3188 ; 116D 1163 1175 ;        SL      # ( ㆈ → ᅭᅣᅵ ) HANGUL LETTER YO-YAE → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I   # →ᆅ→
+
+D7B4 ; 116D 1165 ;     SL      # ( ힴ → ᅭᅥ ) HANGUL JUNGSEONG YO-EO → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG EO        # 
+
+1187 ; 116D 1169 ;     SL      # ( ᆇ → ᅭᅩ ) HANGUL JUNGSEONG YO-O → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG O  # 
+
+1188 ; 116D 1175 ;     SL      # ( ᆈ → ᅭᅵ ) HANGUL JUNGSEONG YO-I → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG I  # 
+3189 ; 116D 1175 ;     SL      # ( ㆉ → ᅭᅵ ) HANGUL LETTER YO-I → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG I     # →ᆈ→
+
+315C ; 116E ;  SL      # ( ㅜ → ᅮ ) HANGUL LETTER U → HANGUL JUNGSEONG U        # 
+
+1189 ; 116E 1161 ;     SL      # ( ᆉ → ᅮᅡ ) HANGUL JUNGSEONG U-A → HANGUL JUNGSEONG U, HANGUL JUNGSEONG A    # 
+
+118A ; 116E 1161 1175 ;        SL      # ( ᆊ → ᅮᅡᅵ ) HANGUL JUNGSEONG U-AE → HANGUL JUNGSEONG U, HANGUL JUNGSEONG A, HANGUL JUNGSEONG I    # 
+
+116F ; 116E 1165 ;     SL      # ( ᅯ → ᅮᅥ ) HANGUL JUNGSEONG WEO → HANGUL JUNGSEONG U, HANGUL JUNGSEONG EO   # 
+315D ; 116E 1165 ;     SL      # ( ㅝ → ᅮᅥ ) HANGUL LETTER WEO → HANGUL JUNGSEONG U, HANGUL JUNGSEONG EO      # →ᅯ→
+
+118B ; 116E 1165 1173 ;        SL      # ( ᆋ → ᅮᅥᅳ ) HANGUL JUNGSEONG U-EO-EU → HANGUL JUNGSEONG U, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG EU       # 
+
+1170 ; 116E 1165 1175 ;        SL      # ( ᅰ → ᅮᅥᅵ ) HANGUL JUNGSEONG WE → HANGUL JUNGSEONG U, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I     # 
+315E ; 116E 1165 1175 ;        SL      # ( ㅞ → ᅮᅥᅵ ) HANGUL LETTER WE → HANGUL JUNGSEONG U, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I        # →ᅰ→
+
+D7B5 ; 116E 1167 ;     SL      # ( ힵ → ᅮᅧ ) HANGUL JUNGSEONG U-YEO → HANGUL JUNGSEONG U, HANGUL JUNGSEONG YEO        # 
+
+118C ; 116E 1167 1175 ;        SL      # ( ᆌ → ᅮᅧᅵ ) HANGUL JUNGSEONG U-YE → HANGUL JUNGSEONG U, HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I  # 
+
+118D ; 116E 116E ;     SL      # ( ᆍ → ᅮᅮ ) HANGUL JUNGSEONG U-U → HANGUL JUNGSEONG U, HANGUL JUNGSEONG U    # 
+
+1171 ; 116E 1175 ;     SL      # ( ᅱ → ᅮᅵ ) HANGUL JUNGSEONG WI → HANGUL JUNGSEONG U, HANGUL JUNGSEONG I     # 
+315F ; 116E 1175 ;     SL      # ( ㅟ → ᅮᅵ ) HANGUL LETTER WI → HANGUL JUNGSEONG U, HANGUL JUNGSEONG I        # →ᅱ→
+
+D7B6 ; 116E 1175 1175 ;        SL      # ( ힶ → ᅮᅵᅵ ) HANGUL JUNGSEONG U-I-I → HANGUL JUNGSEONG U, HANGUL JUNGSEONG I, HANGUL JUNGSEONG I   # 
+
+3160 ; 1172 ;  SL      # ( ㅠ → ᅲ ) HANGUL LETTER YU → HANGUL JUNGSEONG YU      # 
+
+118E ; 1172 1161 ;     SL      # ( ᆎ → ᅲᅡ ) HANGUL JUNGSEONG YU-A → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG A  # 
+
+D7B7 ; 1172 1161 1175 ;        SL      # ( ힷ → ᅲᅡᅵ ) HANGUL JUNGSEONG YU-AE → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG A, HANGUL JUNGSEONG I  # 
+
+118F ; 1172 1165 ;     SL      # ( ᆏ → ᅲᅥ ) HANGUL JUNGSEONG YU-EO → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG EO        # 
+
+1190 ; 1172 1165 1175 ;        SL      # ( ᆐ → ᅲᅥᅵ ) HANGUL JUNGSEONG YU-E → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I  # 
+
+1191 ; 1172 1167 ;     SL      # ( ᆑ → ᅲᅧ ) HANGUL JUNGSEONG YU-YEO → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG YEO      # 
+318A ; 1172 1167 ;     SL      # ( ㆊ → ᅲᅧ ) HANGUL LETTER YU-YEO → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG YEO # →ᆑ→
+
+1192 ; 1172 1167 1175 ;        SL      # ( ᆒ → ᅲᅧᅵ ) HANGUL JUNGSEONG YU-YE → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I        # 
+318B ; 1172 1167 1175 ;        SL      # ( ㆋ → ᅲᅧᅵ ) HANGUL LETTER YU-YE → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I   # →ᆒ→
+
+D7B8 ; 1172 1169 ;     SL      # ( ힸ → ᅲᅩ ) HANGUL JUNGSEONG YU-O → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG O  # 
+
+1193 ; 1172 116E ;     SL      # ( ᆓ → ᅲᅮ ) HANGUL JUNGSEONG YU-U → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG U  # 
+
+1194 ; 1172 1175 ;     SL      # ( ᆔ → ᅲᅵ ) HANGUL JUNGSEONG YU-I → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG I  # 
+318C ; 1172 1175 ;     SL      # ( ㆌ → ᅲᅵ ) HANGUL LETTER YU-I → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG I     # →ᆔ→
+
+D7B9 ; 1173 1161 ;     SL      # ( ힹ → ᅳᅡ ) HANGUL JUNGSEONG EU-A → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG A  # 
+
+D7BA ; 1173 1165 ;     SL      # ( ힺ → ᅳᅥ ) HANGUL JUNGSEONG EU-EO → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG EO        # 
+
+D7BB ; 1173 1165 1175 ;        SL      # ( ힻ → ᅳᅥᅵ ) HANGUL JUNGSEONG EU-E → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I  # 
+
+D7BC ; 1173 1169 ;     SL      # ( ힼ → ᅳᅩ ) HANGUL JUNGSEONG EU-O → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG O  # 
+
+1195 ; 1173 116E ;     SL      # ( ᆕ → ᅳᅮ ) HANGUL JUNGSEONG EU-U → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG U  # 
+
+1174 ; 1173 1175 ;     SL      # ( ᅴ → ᅳᅵ ) HANGUL JUNGSEONG YI → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG I    # 
+3162 ; 1173 1175 ;     SL      # ( ㅢ → ᅳᅵ ) HANGUL LETTER YI → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG I       # →ᅴ→
+
+1197 ; 1173 1175 116E ;        SL      # ( ᆗ → ᅳᅵᅮ ) HANGUL JUNGSEONG YI-U → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG I, HANGUL JUNGSEONG U   # 
+
+3163 ; 1175 ;  SL      # ( ㅣ → ᅵ ) HANGUL LETTER I → HANGUL JUNGSEONG I        # 
+
+1198 ; 1175 1161 ;     SL      # ( ᆘ → ᅵᅡ ) HANGUL JUNGSEONG I-A → HANGUL JUNGSEONG I, HANGUL JUNGSEONG A    # 
+
+1199 ; 1175 1163 ;     SL      # ( ᆙ → ᅵᅣ ) HANGUL JUNGSEONG I-YA → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YA  # 
+
+D7BD ; 1175 1163 1169 ;        SL      # ( ힽ → ᅵᅣᅩ ) HANGUL JUNGSEONG I-YA-O → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YA, HANGUL JUNGSEONG O # 
+
+D7BE ; 1175 1163 1175 ;        SL      # ( ힾ → ᅵᅣᅵ ) HANGUL JUNGSEONG I-YAE → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I  # 
+
+D7BF ; 1175 1167 ;     SL      # ( ힿ → ᅵᅧ ) HANGUL JUNGSEONG I-YEO → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YEO        # 
+
+D7C0 ; 1175 1167 1175 ;        SL      # ( ퟀ → ᅵᅧᅵ ) HANGUL JUNGSEONG I-YE → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I  # 
+
+119A ; 1175 1169 ;     SL      # ( ᆚ → ᅵᅩ ) HANGUL JUNGSEONG I-O → HANGUL JUNGSEONG I, HANGUL JUNGSEONG O    # 
+
+D7C1 ; 1175 1169 1175 ;        SL      # ( ퟁ → ᅵᅩᅵ ) HANGUL JUNGSEONG I-O-I → HANGUL JUNGSEONG I, HANGUL JUNGSEONG O, HANGUL JUNGSEONG I   # 
+
+D7C2 ; 1175 116D ;     SL      # ( ퟂ → ᅵᅭ ) HANGUL JUNGSEONG I-YO → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YO  # 
+
+119B ; 1175 116E ;     SL      # ( ᆛ → ᅵᅮ ) HANGUL JUNGSEONG I-U → HANGUL JUNGSEONG I, HANGUL JUNGSEONG U    # 
+
+D7C3 ; 1175 1172 ;     SL      # ( ퟃ → ᅵᅲ ) HANGUL JUNGSEONG I-YU → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YU  # 
+
+119C ; 1175 1173 ;     SL      # ( ᆜ → ᅵᅳ ) HANGUL JUNGSEONG I-EU → HANGUL JUNGSEONG I, HANGUL JUNGSEONG EU  # 
+
+D7C4 ; 1175 1175 ;     SL      # ( ퟄ → ᅵᅵ ) HANGUL JUNGSEONG I-I → HANGUL JUNGSEONG I, HANGUL JUNGSEONG I    # 
+
+119D ; 1175 119E ;     SL      # ( ᆝ → ᅵᆞ ) HANGUL JUNGSEONG I-ARAEA → HANGUL JUNGSEONG I, HANGUL JUNGSEONG ARAEA    # 
+
+318D ; 119E ;  SL      # ( ㆍ → ᆞ ) HANGUL LETTER ARAEA → HANGUL JUNGSEONG ARAEA        # 
+
+D7C5 ; 119E 1161 ;     SL      # ( ퟅ → ᆞᅡ ) HANGUL JUNGSEONG ARAEA-A → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG A    # 
+
+119F ; 119E 1165 ;     SL      # ( ᆟ → ᆞᅥ ) HANGUL JUNGSEONG ARAEA-EO → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG EO  # 
+
+D7C6 ; 119E 1165 1175 ;        SL      # ( ퟆ → ᆞᅥᅵ ) HANGUL JUNGSEONG ARAEA-E → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I    # 
+
+11A0 ; 119E 116E ;     SL      # ( ᆠ → ᆞᅮ ) HANGUL JUNGSEONG ARAEA-U → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG U    # 
+
+11A1 ; 119E 1175 ;     SL      # ( ᆡ → ᆞᅵ ) HANGUL JUNGSEONG ARAEA-I → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG I    # 
+318E ; 119E 1175 ;     SL      # ( ㆎ → ᆞᅵ ) HANGUL LETTER ARAEAE → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG I        # →ᆡ→
+
+11A2 ; 119E 119E ;     SL      # ( ᆢ → ᆞᆞ ) HANGUL JUNGSEONG SSANGARAEA → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG ARAEA     # 
+
+29C4 ; 303C ;  SL      #* ( ⧄ → 〼 ) SQUARED RISING DIAGONAL SLASH → MASU MARK  # 
+
+A49E ; A04A ;  SL      #* ( ꒞ → ꁊ ) YI RADICAL PUT → YI SYLLABLE PUT   # 
+
+A4AC ; A050 ;  SL      #* ( ꒬ → ꁐ ) YI RADICAL PYT → YI SYLLABLE PYT   # 
+
+A49C ; A0C0 ;  SL      #* ( ꒜ → ꃀ ) YI RADICAL MOP → YI SYLLABLE MOP   # 
+
+A4A8 ; A132 ;  SL      #* ( ꒨ → ꄲ ) YI RADICAL TU → YI SYLLABLE TU     # 
+
+A4BF ; A259 ;  SL      #* ( ꒿ → ꉙ ) YI RADICAL HXOP → YI SYLLABLE HXOP # 
+
+A4BE ; A2B1 ;  SL      #* ( ꒾ → ꊱ ) YI RADICAL CIP → YI SYLLABLE CIP   # 
+
+A494 ; A2CD ;  SL      #* ( ꒔ → ꋍ ) YI RADICAL CYP → YI SYLLABLE CYP   # 
+
+A4C0 ; A3AB ;  SL      #* ( ꓀ → ꎫ ) YI RADICAL SHAT → YI SYLLABLE SHAT # 
+
+A4C2 ; A3B5 ;  SL      #* ( ꓂ → ꎵ ) YI RADICAL SHOP → YI SYLLABLE SHOP # 
+
+A4BA ; A3BF ;  SL      #* ( ꒺ → ꎿ ) YI RADICAL SHUR → YI SYLLABLE SHUR # 
+
+A4B0 ; A3C2 ;  SL      #* ( ꒰ → ꏂ ) YI RADICAL SHY → YI SYLLABLE SHY   # 
+
+A4A7 ; A458 ;  SL      #* ( ꒧ → ꑘ ) YI RADICAL NYOP → YI SYLLABLE NYOP # 
+
+22A5 ; A4D5 ;  SL      #* ( ⊥ → ꓕ ) UP TACK → LISU LETTER THA  # 
+27C2 ; A4D5 ;  SL      #* ( ⟂ → ꓕ ) PERPENDICULAR → LISU LETTER THA    # →⊥→
+
+2115 ; A4E0 ;  SL      # ( ℕ → ꓠ ) DOUBLE-STRUCK CAPITAL N → LISU LETTER NA    # →N→
+1D40D ;        A4E0 ;  SL      # ( 𝐍 → ꓠ ) MATHEMATICAL BOLD CAPITAL N → LISU LETTER NA       # →N→
+1D441 ;        A4E0 ;  SL      # ( 𝑁 → ꓠ ) MATHEMATICAL ITALIC CAPITAL N → LISU LETTER NA     # →N→
+1D475 ;        A4E0 ;  SL      # ( 𝑵 → ꓠ ) MATHEMATICAL BOLD ITALIC CAPITAL N → LISU LETTER NA        # →N→
+1D4A9 ;        A4E0 ;  SL      # ( 𝒩 → ꓠ ) MATHEMATICAL SCRIPT CAPITAL N → LISU LETTER NA     # →N→
+1D4DD ;        A4E0 ;  SL      # ( 𝓝 → ꓠ ) MATHEMATICAL BOLD SCRIPT CAPITAL N → LISU LETTER NA        # →N→
+1D511 ;        A4E0 ;  SL      # ( 𝔑 → ꓠ ) MATHEMATICAL FRAKTUR CAPITAL N → LISU LETTER NA    # →N→
+1D579 ;        A4E0 ;  SL      # ( 𝕹 → ꓠ ) MATHEMATICAL BOLD FRAKTUR CAPITAL N → LISU LETTER NA       # →N→
+1D5AD ;        A4E0 ;  SL      # ( 𝖭 → ꓠ ) MATHEMATICAL SANS-SERIF CAPITAL N → LISU LETTER NA # →N→
+1D5E1 ;        A4E0 ;  SL      # ( 𝗡 → ꓠ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL N → LISU LETTER NA    # →N→
+1D615 ;        A4E0 ;  SL      # ( 𝘕 → ꓠ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL N → LISU LETTER NA  # →N→
+1D649 ;        A4E0 ;  SL      # ( 𝙉 → ꓠ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N → LISU LETTER NA     # →N→
+1D67D ;        A4E0 ;  SL      # ( 𝙽 → ꓠ ) MATHEMATICAL MONOSPACE CAPITAL N → LISU LETTER NA  # →N→
+1D6B4 ;        A4E0 ;  SL      # ( 𝚴 → ꓠ ) MATHEMATICAL BOLD CAPITAL NU → LISU LETTER NA      # →𝐍→→N→
+1D6EE ;        A4E0 ;  SL      # ( 𝛮 → ꓠ ) MATHEMATICAL ITALIC CAPITAL NU → LISU LETTER NA    # →Ν→→N→
+1D728 ;        A4E0 ;  SL      # ( 𝜨 → ꓠ ) MATHEMATICAL BOLD ITALIC CAPITAL NU → LISU LETTER NA       # →𝑵→→N→
+1D762 ;        A4E0 ;  SL      # ( 𝝢 → ꓠ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL NU → LISU LETTER NA   # →Ν→→N→
+1D79C ;        A4E0 ;  SL      # ( 𝞜 → ꓠ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU → LISU LETTER NA    # →Ν→→N→
+
+2141 ; A4E8 ;  SL      #* ( ⅁ → ꓨ ) TURNED SANS-SERIF CAPITAL G → LISU LETTER HHA      # 
+
+2200 ; A4EF ;  SL      #* ( ∀ → ꓯ ) FOR ALL → LISU LETTER AE   # 
+
+2229 ; A4F5 ;  SL      #* ( ∩ → ꓵ ) INTERSECTION → LISU LETTER UE      # 
+22C2 ; A4F5 ;  SL      #* ( ⋂ → ꓵ ) N-ARY INTERSECTION → LISU LETTER UE        # →∩→
+
+2142 ; A4F6 ;  SL      #* ( ⅂ → ꓶ ) TURNED SANS-SERIF CAPITAL L → LISU LETTER UH       # 
+
+104A0 ;        10486 ; SL      # ( 𐒠 → 𐒆 ) OSMANYA DIGIT ZERO → OSMANYA LETTER DEEL  # 
+
+F967 ; 4E0D ;  SL      # ( 不 → 不 ) CJK COMPATIBILITY IDEOGRAPH-F967 → CJK UNIFIED IDEOGRAPH-4E0D       # 
+
+FA70 ; 4E26 ;  SL      # ( 並 → 並 ) CJK COMPATIBILITY IDEOGRAPH-FA70 → CJK UNIFIED IDEOGRAPH-4E26       # 
+
+239C ; 4E28 ;  SL      #* ( ⎜ → 丨 ) LEFT PARENTHESIS EXTENSION → CJK UNIFIED IDEOGRAPH-4E28    # →⎥→→⎮→
+239F ; 4E28 ;  SL      #* ( ⎟ → 丨 ) RIGHT PARENTHESIS EXTENSION → CJK UNIFIED IDEOGRAPH-4E28   # →⎥→→⎮→
+23A2 ; 4E28 ;  SL      #* ( ⎢ → 丨 ) LEFT SQUARE BRACKET EXTENSION → CJK UNIFIED IDEOGRAPH-4E28 # →⎥→→⎮→
+23A5 ; 4E28 ;  SL      #* ( ⎥ → 丨 ) RIGHT SQUARE BRACKET EXTENSION → CJK UNIFIED IDEOGRAPH-4E28        # →⎮→
+23AA ; 4E28 ;  SL      #* ( ⎪ → 丨 ) CURLY BRACKET EXTENSION → CJK UNIFIED IDEOGRAPH-4E28       # →⎥→→⎮→
+23AE ; 4E28 ;  SL      #* ( ⎮ → 丨 ) INTEGRAL EXTENSION → CJK UNIFIED IDEOGRAPH-4E28    # 
+31D1 ; 4E28 ;  SL      #* ( ㇑ → 丨 ) CJK STROKE S → CJK UNIFIED IDEOGRAPH-4E28  # 
+2F01 ; 4E28 ;  SL      #* ( ⼁ → 丨 ) KANGXI RADICAL LINE → CJK UNIFIED IDEOGRAPH-4E28   # 
+
+2EA6 ; 4E2C ;  SL      #* ( ⺦ → 丬 ) CJK RADICAL SIMPLIFIED HALF TREE TRUNK → CJK UNIFIED IDEOGRAPH-4E2C        # 
+
+F905 ; 4E32 ;  SL      # ( 串 → 串 ) CJK COMPATIBILITY IDEOGRAPH-F905 → CJK UNIFIED IDEOGRAPH-4E32       # 
+
+2F801 ;        4E38 ;  SL      # ( 丸 → 丸 ) CJK COMPATIBILITY IDEOGRAPH-2F801 → CJK UNIFIED IDEOGRAPH-4E38     # 
+
+F95E ; 4E39 ;  SL      # ( 丹 → 丹 ) CJK COMPATIBILITY IDEOGRAPH-F95E → CJK UNIFIED IDEOGRAPH-4E39       # 
+
+2F800 ;        4E3D ;  SL      # ( 丽 → 丽 ) CJK COMPATIBILITY IDEOGRAPH-2F800 → CJK UNIFIED IDEOGRAPH-4E3D     # 
+
+2F802 ;        4E41 ;  SL      # ( 乁 → 乁 ) CJK COMPATIBILITY IDEOGRAPH-2F802 → CJK UNIFIED IDEOGRAPH-4E41     # 
+
+31E0 ; 4E59 ;  SL      #* ( ㇠ → 乙 ) CJK STROKE HXWG → CJK UNIFIED IDEOGRAPH-4E59       # 
+2F04 ; 4E59 ;  SL      #* ( ⼄ → 乙 ) KANGXI RADICAL SECOND → CJK UNIFIED IDEOGRAPH-4E59 # 
+
+31DF ; 4E5A ;  SL      #* ( ㇟ → 乚 ) CJK STROKE SWG → CJK UNIFIED IDEOGRAPH-4E5A        # 
+2E83 ; 4E5A ;  SL      #* ( ⺃ → 乚 ) CJK RADICAL SECOND TWO → CJK UNIFIED IDEOGRAPH-4E5A        # 
+
+31D6 ; 4E5B ;  SL      #* ( ㇖ → 乛 ) CJK STROKE HG → CJK UNIFIED IDEOGRAPH-4E5B # 
+
+2EF2 ; 4E80 ;  SL      #* ( ⻲ → 亀 ) CJK RADICAL J-SIMPLIFIED TURTLE → CJK UNIFIED IDEOGRAPH-4E80       # 
+
+F91B ; 4E82 ;  SL      # ( 亂 → 亂 ) CJK COMPATIBILITY IDEOGRAPH-F91B → CJK UNIFIED IDEOGRAPH-4E82       # 
+
+31DA ; 4E85 ;  SL      #* ( ㇚ → 亅 ) CJK STROKE SG → CJK UNIFIED IDEOGRAPH-4E85 # 
+2F05 ; 4E85 ;  SL      #* ( ⼅ → 亅 ) KANGXI RADICAL HOOK → CJK UNIFIED IDEOGRAPH-4E85   # 
+
+F9BA ; 4E86 ;  SL      # ( 了 → 了 ) CJK COMPATIBILITY IDEOGRAPH-F9BA → CJK UNIFIED IDEOGRAPH-4E86       # 
+
+2F06 ; 4E8C ;  SL      #* ( ⼆ → 二 ) KANGXI RADICAL TWO → CJK UNIFIED IDEOGRAPH-4E8C    # 
+
+2F07 ; 4EA0 ;  SL      #* ( ⼇ → 亠 ) KANGXI RADICAL LID → CJK UNIFIED IDEOGRAPH-4EA0    # 
+
+F977 ; 4EAE ;  SL      # ( 亮 → 亮 ) CJK COMPATIBILITY IDEOGRAPH-F977 → CJK UNIFIED IDEOGRAPH-4EAE       # 
+
+2F08 ; 4EBA ;  SL      #* ( ⼈ → 人 ) KANGXI RADICAL MAN → CJK UNIFIED IDEOGRAPH-4EBA    # 
+
+2E85 ; 4EBB ;  SL      #* ( ⺅ → 亻 ) CJK RADICAL PERSON → CJK UNIFIED IDEOGRAPH-4EBB    # 
+
+F9FD ; 4EC0 ;  SL      # ( 什 → 什 ) CJK COMPATIBILITY IDEOGRAPH-F9FD → CJK UNIFIED IDEOGRAPH-4EC0       # 
+
+2F819 ;        4ECC ;  SL      # ( 仌 → 仌 ) CJK COMPATIBILITY IDEOGRAPH-2F819 → CJK UNIFIED IDEOGRAPH-4ECC     # 
+
+F9A8 ; 4EE4 ;  SL      # ( 令 → 令 ) CJK COMPATIBILITY IDEOGRAPH-F9A8 → CJK UNIFIED IDEOGRAPH-4EE4       # 
+
+2F804 ;        4F60 ;  SL      # ( 你 → 你 ) CJK COMPATIBILITY IDEOGRAPH-2F804 → CJK UNIFIED IDEOGRAPH-4F60     # 
+
+5002 ; 4F75 ;  SL      # ( 倂 → 併 ) CJK UNIFIED IDEOGRAPH-5002 → CJK UNIFIED IDEOGRAPH-4F75     # 
+2F807 ;        4F75 ;  SL      # ( 倂 → 併 ) CJK COMPATIBILITY IDEOGRAPH-2F807 → CJK UNIFIED IDEOGRAPH-4F75     # →倂→
+
+FA73 ; 4F80 ;  SL      # ( 侀 → 侀 ) CJK COMPATIBILITY IDEOGRAPH-FA73 → CJK UNIFIED IDEOGRAPH-4F80       # 
+
+F92D ; 4F86 ;  SL      # ( 來 → 來 ) CJK COMPATIBILITY IDEOGRAPH-F92D → CJK UNIFIED IDEOGRAPH-4F86       # 
+
+F9B5 ; 4F8B ;  SL      # ( 例 → 例 ) CJK COMPATIBILITY IDEOGRAPH-F9B5 → CJK UNIFIED IDEOGRAPH-4F8B       # 
+
+FA30 ; 4FAE ;  SL      # ( 侮 → 侮 ) CJK COMPATIBILITY IDEOGRAPH-FA30 → CJK UNIFIED IDEOGRAPH-4FAE       # 
+2F805 ;        4FAE ;  SL      # ( 侮 → 侮 ) CJK COMPATIBILITY IDEOGRAPH-2F805 → CJK UNIFIED IDEOGRAPH-4FAE     # 
+
+2F806 ;        4FBB ;  SL      # ( 侻 → 侻 ) CJK COMPATIBILITY IDEOGRAPH-2F806 → CJK UNIFIED IDEOGRAPH-4FBB     # 
+
+F965 ; 4FBF ;  SL      # ( 便 → 便 ) CJK COMPATIBILITY IDEOGRAPH-F965 → CJK UNIFIED IDEOGRAPH-4FBF       # 
+
+503C ; 5024 ;  SL      # ( 值 → 値 ) CJK UNIFIED IDEOGRAPH-503C → CJK UNIFIED IDEOGRAPH-5024     # 
+
+F9D4 ; 502B ;  SL      # ( 倫 → 倫 ) CJK COMPATIBILITY IDEOGRAPH-F9D4 → CJK UNIFIED IDEOGRAPH-502B       # 
+
+2F808 ;        507A ;  SL      # ( 偺 → 偺 ) CJK COMPATIBILITY IDEOGRAPH-2F808 → CJK UNIFIED IDEOGRAPH-507A     # 
+
+2F809 ;        5099 ;  SL      # ( 備 → 備 ) CJK COMPATIBILITY IDEOGRAPH-2F809 → CJK UNIFIED IDEOGRAPH-5099     # 
+
+2F80B ;        50CF ;  SL      # ( 像 → 像 ) CJK COMPATIBILITY IDEOGRAPH-2F80B → CJK UNIFIED IDEOGRAPH-50CF     # 
+
+F9BB ; 50DA ;  SL      # ( 僚 → 僚 ) CJK COMPATIBILITY IDEOGRAPH-F9BB → CJK UNIFIED IDEOGRAPH-50DA       # 
+
+FA31 ; 50E7 ;  SL      # ( 僧 → 僧 ) CJK COMPATIBILITY IDEOGRAPH-FA31 → CJK UNIFIED IDEOGRAPH-50E7       # 
+2F80A ;        50E7 ;  SL      # ( 僧 → 僧 ) CJK COMPATIBILITY IDEOGRAPH-2F80A → CJK UNIFIED IDEOGRAPH-50E7     # 
+
+2F09 ; 513F ;  SL      #* ( ⼉ → 儿 ) KANGXI RADICAL LEGS → CJK UNIFIED IDEOGRAPH-513F   # 
+
+FA0C ; 5140 ;  SL      # ( 兀 → 兀 ) CJK COMPATIBILITY IDEOGRAPH-FA0C → CJK UNIFIED IDEOGRAPH-5140       # 
+2E8E ; 5140 ;  SL      #* ( ⺎ → 兀 ) CJK RADICAL LAME ONE → CJK UNIFIED IDEOGRAPH-5140  # 
+
+FA74 ; 5145 ;  SL      # ( 充 → 充 ) CJK COMPATIBILITY IDEOGRAPH-FA74 → CJK UNIFIED IDEOGRAPH-5145       # 
+
+FA32 ; 514D ;  SL      # ( 免 → 免 ) CJK COMPATIBILITY IDEOGRAPH-FA32 → CJK UNIFIED IDEOGRAPH-514D       # 
+2F80E ;        514D ;  SL      # ( 免 → 免 ) CJK COMPATIBILITY IDEOGRAPH-2F80E → CJK UNIFIED IDEOGRAPH-514D     # 
+
+2F80F ;        5154 ;  SL      # ( 兔 → 兔 ) CJK COMPATIBILITY IDEOGRAPH-2F80F → CJK UNIFIED IDEOGRAPH-5154     # 
+
+2F810 ;        5164 ;  SL      # ( 兤 → 兤 ) CJK COMPATIBILITY IDEOGRAPH-2F810 → CJK UNIFIED IDEOGRAPH-5164     # 
+
+2F0A ; 5165 ;  SL      #* ( ⼊ → 入 ) KANGXI RADICAL ENTER → CJK UNIFIED IDEOGRAPH-5165  # 
+
+2F814 ;        5167 ;  SL      # ( 內 → 內 ) CJK COMPATIBILITY IDEOGRAPH-2F814 → CJK UNIFIED IDEOGRAPH-5167     # 
+
+FA72 ; 5168 ;  SL      # ( 全 → 全 ) CJK COMPATIBILITY IDEOGRAPH-FA72 → CJK UNIFIED IDEOGRAPH-5168       # 
+
+F978 ; 5169 ;  SL      # ( 兩 → 兩 ) CJK COMPATIBILITY IDEOGRAPH-F978 → CJK UNIFIED IDEOGRAPH-5169       # 
+
+2F0B ; 516B ;  SL      #* ( ⼋ → 八 ) KANGXI RADICAL EIGHT → CJK UNIFIED IDEOGRAPH-516B  # 
+
+F9D1 ; 516D ;  SL      # ( 六 → 六 ) CJK COMPATIBILITY IDEOGRAPH-F9D1 → CJK UNIFIED IDEOGRAPH-516D       # 
+
+2F811 ;        5177 ;  SL      # ( 具 → 具 ) CJK COMPATIBILITY IDEOGRAPH-2F811 → CJK UNIFIED IDEOGRAPH-5177     # 
+
+FA75 ; 5180 ;  SL      # ( 冀 → 冀 ) CJK COMPATIBILITY IDEOGRAPH-FA75 → CJK UNIFIED IDEOGRAPH-5180       # 
+
+2F0C ; 5182 ;  SL      #* ( ⼌ → 冂 ) KANGXI RADICAL DOWN BOX → CJK UNIFIED IDEOGRAPH-5182       # 
+
+2F815 ;        518D ;  SL      # ( 再 → 再 ) CJK COMPATIBILITY IDEOGRAPH-2F815 → CJK UNIFIED IDEOGRAPH-518D     # 
+
+2F8D2 ;        5192 ;  SL      # ( 冒 → 冒 ) CJK COMPATIBILITY IDEOGRAPH-2F8D2 → CJK UNIFIED IDEOGRAPH-5192     # 
+
+2F8D3 ;        5195 ;  SL      # ( 冕 → 冕 ) CJK COMPATIBILITY IDEOGRAPH-2F8D3 → CJK UNIFIED IDEOGRAPH-5195     # 
+
+2F0D ; 5196 ;  SL      #* ( ⼍ → 冖 ) KANGXI RADICAL COVER → CJK UNIFIED IDEOGRAPH-5196  # 
+
+2F817 ;        5197 ;  SL      # ( 冗 → 冗 ) CJK COMPATIBILITY IDEOGRAPH-2F817 → CJK UNIFIED IDEOGRAPH-5197     # 
+
+2F818 ;        51A4 ;  SL      # ( 冤 → 冤 ) CJK COMPATIBILITY IDEOGRAPH-2F818 → CJK UNIFIED IDEOGRAPH-51A4     # 
+
+2F0E ; 51AB ;  SL      #* ( ⼎ → 冫 ) KANGXI RADICAL ICE → CJK UNIFIED IDEOGRAPH-51AB    # 
+
+2F81A ;        51AC ;  SL      # ( 冬 → 冬 ) CJK COMPATIBILITY IDEOGRAPH-2F81A → CJK UNIFIED IDEOGRAPH-51AC     # 
+
+FA71 ; 51B5 ;  SL      # ( 况 → 况 ) CJK COMPATIBILITY IDEOGRAPH-FA71 → CJK UNIFIED IDEOGRAPH-51B5       # 
+2F81B ;        51B5 ;  SL      # ( 况 → 况 ) CJK COMPATIBILITY IDEOGRAPH-2F81B → CJK UNIFIED IDEOGRAPH-51B5     # 
+
+F92E ; 51B7 ;  SL      # ( 冷 → 冷 ) CJK COMPATIBILITY IDEOGRAPH-F92E → CJK UNIFIED IDEOGRAPH-51B7       # 
+
+F979 ; 51C9 ;  SL      # ( 凉 → 凉 ) CJK COMPATIBILITY IDEOGRAPH-F979 → CJK UNIFIED IDEOGRAPH-51C9       # 
+
+F955 ; 51CC ;  SL      # ( 凌 → 凌 ) CJK COMPATIBILITY IDEOGRAPH-F955 → CJK UNIFIED IDEOGRAPH-51CC       # 
+
+F954 ; 51DC ;  SL      # ( 凜 → 凜 ) CJK COMPATIBILITY IDEOGRAPH-F954 → CJK UNIFIED IDEOGRAPH-51DC       # 
+
+FA15 ; 51DE ;  SL      # ( 凞 → 凞 ) CJK COMPATIBILITY IDEOGRAPH-FA15 → CJK UNIFIED IDEOGRAPH-51DE       # 
+
+2F0F ; 51E0 ;  SL      #* ( ⼏ → 几 ) KANGXI RADICAL TABLE → CJK UNIFIED IDEOGRAPH-51E0  # 
+
+2F81D ;        51F5 ;  SL      # ( 凵 → 凵 ) CJK COMPATIBILITY IDEOGRAPH-2F81D → CJK UNIFIED IDEOGRAPH-51F5     # 
+2F10 ; 51F5 ;  SL      #* ( ⼐ → 凵 ) KANGXI RADICAL OPEN BOX → CJK UNIFIED IDEOGRAPH-51F5       # 
+
+2F11 ; 5200 ;  SL      #* ( ⼑ → 刀 ) KANGXI RADICAL KNIFE → CJK UNIFIED IDEOGRAPH-5200  # 
+
+2E89 ; 5202 ;  SL      #* ( ⺉ → 刂 ) CJK RADICAL KNIFE TWO → CJK UNIFIED IDEOGRAPH-5202 # 
+
+2F81E ;        5203 ;  SL      # ( 刃 → 刃 ) CJK COMPATIBILITY IDEOGRAPH-2F81E → CJK UNIFIED IDEOGRAPH-5203     # 
+
+FA00 ; 5207 ;  SL      # ( 切 → 切 ) CJK COMPATIBILITY IDEOGRAPH-FA00 → CJK UNIFIED IDEOGRAPH-5207       # 
+2F850 ;        5207 ;  SL      # ( 切 → 切 ) CJK COMPATIBILITY IDEOGRAPH-2F850 → CJK UNIFIED IDEOGRAPH-5207     # 
+
+F99C ; 5217 ;  SL      # ( 列 → 列 ) CJK COMPATIBILITY IDEOGRAPH-F99C → CJK UNIFIED IDEOGRAPH-5217       # 
+
+F9DD ; 5229 ;  SL      # ( 利 → 利 ) CJK COMPATIBILITY IDEOGRAPH-F9DD → CJK UNIFIED IDEOGRAPH-5229       # 
+
+F9FF ; 523A ;  SL      # ( 刺 → 刺 ) CJK COMPATIBILITY IDEOGRAPH-F9FF → CJK UNIFIED IDEOGRAPH-523A       # 
+
+2F820 ;        523B ;  SL      # ( 刻 → 刻 ) CJK COMPATIBILITY IDEOGRAPH-2F820 → CJK UNIFIED IDEOGRAPH-523B     # 
+
+2F821 ;        5246 ;  SL      # ( 剆 → 剆 ) CJK COMPATIBILITY IDEOGRAPH-2F821 → CJK UNIFIED IDEOGRAPH-5246     # 
+
+2F822 ;        5272 ;  SL      # ( 割 → 割 ) CJK COMPATIBILITY IDEOGRAPH-2F822 → CJK UNIFIED IDEOGRAPH-5272     # 
+
+2F823 ;        5277 ;  SL      # ( 剷 → 剷 ) CJK COMPATIBILITY IDEOGRAPH-2F823 → CJK UNIFIED IDEOGRAPH-5277     # 
+
+F9C7 ; 5289 ;  SL      # ( 劉 → 劉 ) CJK COMPATIBILITY IDEOGRAPH-F9C7 → CJK UNIFIED IDEOGRAPH-5289       # 
+
+F98A ; 529B ;  SL      # ( 力 → 力 ) CJK COMPATIBILITY IDEOGRAPH-F98A → CJK UNIFIED IDEOGRAPH-529B       # 
+2F12 ; 529B ;  SL      #* ( ⼒ → 力 ) KANGXI RADICAL POWER → CJK UNIFIED IDEOGRAPH-529B  # 
+
+F99D ; 52A3 ;  SL      # ( 劣 → 劣 ) CJK COMPATIBILITY IDEOGRAPH-F99D → CJK UNIFIED IDEOGRAPH-52A3       # 
+
+2F992 ;        52B3 ;  SL      # ( 劳 → 劳 ) CJK COMPATIBILITY IDEOGRAPH-2F992 → CJK UNIFIED IDEOGRAPH-52B3     # 
+
+FA76 ; 52C7 ;  SL      # ( 勇 → 勇 ) CJK COMPATIBILITY IDEOGRAPH-FA76 → CJK UNIFIED IDEOGRAPH-52C7       # 
+2F825 ;        52C7 ;  SL      # ( 勇 → 勇 ) CJK COMPATIBILITY IDEOGRAPH-2F825 → CJK UNIFIED IDEOGRAPH-52C7     # 
+
+FA33 ; 52C9 ;  SL      # ( 勉 → 勉 ) CJK COMPATIBILITY IDEOGRAPH-FA33 → CJK UNIFIED IDEOGRAPH-52C9       # 
+2F826 ;        52C9 ;  SL      # ( 勉 → 勉 ) CJK COMPATIBILITY IDEOGRAPH-2F826 → CJK UNIFIED IDEOGRAPH-52C9     # 
+
+F952 ; 52D2 ;  SL      # ( 勒 → 勒 ) CJK COMPATIBILITY IDEOGRAPH-F952 → CJK UNIFIED IDEOGRAPH-52D2       # 
+
+F92F ; 52DE ;  SL      # ( 勞 → 勞 ) CJK COMPATIBILITY IDEOGRAPH-F92F → CJK UNIFIED IDEOGRAPH-52DE       # 
+
+FA34 ; 52E4 ;  SL      # ( 勤 → 勤 ) CJK COMPATIBILITY IDEOGRAPH-FA34 → CJK UNIFIED IDEOGRAPH-52E4       # 
+2F827 ;        52E4 ;  SL      # ( 勤 → 勤 ) CJK COMPATIBILITY IDEOGRAPH-2F827 → CJK UNIFIED IDEOGRAPH-52E4     # 
+
+F97F ; 52F5 ;  SL      # ( 勵 → 勵 ) CJK COMPATIBILITY IDEOGRAPH-F97F → CJK UNIFIED IDEOGRAPH-52F5       # 
+
+2F13 ; 52F9 ;  SL      #* ( ⼓ → 勹 ) KANGXI RADICAL WRAP → CJK UNIFIED IDEOGRAPH-52F9   # 
+
+FA77 ; 52FA ;  SL      # ( 勺 → 勺 ) CJK COMPATIBILITY IDEOGRAPH-FA77 → CJK UNIFIED IDEOGRAPH-52FA       # 
+2F828 ;        52FA ;  SL      # ( 勺 → 勺 ) CJK COMPATIBILITY IDEOGRAPH-2F828 → CJK UNIFIED IDEOGRAPH-52FA     # 
+
+2F829 ;        5305 ;  SL      # ( 包 → 包 ) CJK COMPATIBILITY IDEOGRAPH-2F829 → CJK UNIFIED IDEOGRAPH-5305     # 
+
+2F82A ;        5306 ;  SL      # ( 匆 → 匆 ) CJK COMPATIBILITY IDEOGRAPH-2F82A → CJK UNIFIED IDEOGRAPH-5306     # 
+
+2F14 ; 5315 ;  SL      #* ( ⼔ → 匕 ) KANGXI RADICAL SPOON → CJK UNIFIED IDEOGRAPH-5315  # 
+
+F963 ; 5317 ;  SL      # ( 北 → 北 ) CJK COMPATIBILITY IDEOGRAPH-F963 → CJK UNIFIED IDEOGRAPH-5317       # 
+2F82B ;        5317 ;  SL      # ( 北 → 北 ) CJK COMPATIBILITY IDEOGRAPH-2F82B → CJK UNIFIED IDEOGRAPH-5317     # 
+
+2F15 ; 531A ;  SL      #* ( ⼕ → 匚 ) KANGXI RADICAL RIGHT OPEN BOX → CJK UNIFIED IDEOGRAPH-531A # 
+
+2F16 ; 5338 ;  SL      #* ( ⼖ → 匸 ) KANGXI RADICAL HIDING ENCLOSURE → CJK UNIFIED IDEOGRAPH-5338       # 
+
+F9EB ; 533F ;  SL      # ( 匿 → 匿 ) CJK COMPATIBILITY IDEOGRAPH-F9EB → CJK UNIFIED IDEOGRAPH-533F       # 
+
+2F17 ; 5341 ;  SL      #* ( ⼗ → 十 ) KANGXI RADICAL TEN → CJK UNIFIED IDEOGRAPH-5341    # 
+3038 ; 5341 ;  SL      # ( 〸 → 十 ) HANGZHOU NUMERAL TEN → CJK UNIFIED IDEOGRAPH-5341   # 
+
+3039 ; 5344 ;  SL      # ( 〹 → 卄 ) HANGZHOU NUMERAL TWENTY → CJK UNIFIED IDEOGRAPH-5344        # 
+
+303A ; 5345 ;  SL      # ( 〺 → 卅 ) HANGZHOU NUMERAL THIRTY → CJK UNIFIED IDEOGRAPH-5345        # 
+
+2F82C ;        5349 ;  SL      # ( 卉 → 卉 ) CJK COMPATIBILITY IDEOGRAPH-2F82C → CJK UNIFIED IDEOGRAPH-5349     # 
+
+FA35 ; 5351 ;  SL      # ( 卑 → 卑 ) CJK COMPATIBILITY IDEOGRAPH-FA35 → CJK UNIFIED IDEOGRAPH-5351       # 
+2F82D ;        5351 ;  SL      # ( 卑 → 卑 ) CJK COMPATIBILITY IDEOGRAPH-2F82D → CJK UNIFIED IDEOGRAPH-5351     # 
+
+2F82E ;        535A ;  SL      # ( 博 → 博 ) CJK COMPATIBILITY IDEOGRAPH-2F82E → CJK UNIFIED IDEOGRAPH-535A     # 
+
+2F18 ; 535C ;  SL      #* ( ⼘ → 卜 ) KANGXI RADICAL DIVINATION → CJK UNIFIED IDEOGRAPH-535C     # 
+
+2F19 ; 5369 ;  SL      #* ( ⼙ → 卩 ) KANGXI RADICAL SEAL → CJK UNIFIED IDEOGRAPH-5369   # 
+
+2F82F ;        5373 ;  SL      # ( 即 → 即 ) CJK COMPATIBILITY IDEOGRAPH-2F82F → CJK UNIFIED IDEOGRAPH-5373     # 
+
+F91C ; 5375 ;  SL      # ( 卵 → 卵 ) CJK COMPATIBILITY IDEOGRAPH-F91C → CJK UNIFIED IDEOGRAPH-5375       # 
+
+2F830 ;        537D ;  SL      # ( 卽 → 卽 ) CJK COMPATIBILITY IDEOGRAPH-2F830 → CJK UNIFIED IDEOGRAPH-537D     # 
+
+2F831 ;        537F ;  SL      # ( 卿 → 卿 ) CJK COMPATIBILITY IDEOGRAPH-2F831 → CJK UNIFIED IDEOGRAPH-537F     # 
+2F832 ;        537F ;  SL      # ( 卿 → 卿 ) CJK COMPATIBILITY IDEOGRAPH-2F832 → CJK UNIFIED IDEOGRAPH-537F     # 
+2F833 ;        537F ;  SL      # ( 卿 → 卿 ) CJK COMPATIBILITY IDEOGRAPH-2F833 → CJK UNIFIED IDEOGRAPH-537F     # 
+
+2F1A ; 5382 ;  SL      #* ( ⼚ → 厂 ) KANGXI RADICAL CLIFF → CJK UNIFIED IDEOGRAPH-5382  # 
+
+2F1B ; 53B6 ;  SL      #* ( ⼛ → 厶 ) KANGXI RADICAL PRIVATE → CJK UNIFIED IDEOGRAPH-53B6        # 
+
+F96B ; 53C3 ;  SL      # ( 參 → 參 ) CJK COMPATIBILITY IDEOGRAPH-F96B → CJK UNIFIED IDEOGRAPH-53C3       # 
+
+2F1C ; 53C8 ;  SL      #* ( ⼜ → 又 ) KANGXI RADICAL AGAIN → CJK UNIFIED IDEOGRAPH-53C8  # 
+
+2F836 ;        53CA ;  SL      # ( 及 → 及 ) CJK COMPATIBILITY IDEOGRAPH-2F836 → CJK UNIFIED IDEOGRAPH-53CA     # 
+
+2F837 ;        53DF ;  SL      # ( 叟 → 叟 ) CJK COMPATIBILITY IDEOGRAPH-2F837 → CJK UNIFIED IDEOGRAPH-53DF     # 
+
+2F1D ; 53E3 ;  SL      #* ( ⼝ → 口 ) KANGXI RADICAL MOUTH → CJK UNIFIED IDEOGRAPH-53E3  # 
+
+F906 ; 53E5 ;  SL      # ( 句 → 句 ) CJK COMPATIBILITY IDEOGRAPH-F906 → CJK UNIFIED IDEOGRAPH-53E5       # 
+
+2F839 ;        53EB ;  SL      # ( 叫 → 叫 ) CJK COMPATIBILITY IDEOGRAPH-2F839 → CJK UNIFIED IDEOGRAPH-53EB     # 
+
+2F83A ;        53F1 ;  SL      # ( 叱 → 叱 ) CJK COMPATIBILITY IDEOGRAPH-2F83A → CJK UNIFIED IDEOGRAPH-53F1     # 
+
+2F83B ;        5406 ;  SL      # ( 吆 → 吆 ) CJK COMPATIBILITY IDEOGRAPH-2F83B → CJK UNIFIED IDEOGRAPH-5406     # 
+
+F9DE ; 540F ;  SL      # ( 吏 → 吏 ) CJK COMPATIBILITY IDEOGRAPH-F9DE → CJK UNIFIED IDEOGRAPH-540F       # 
+
+F9ED ; 541D ;  SL      # ( 吝 → 吝 ) CJK COMPATIBILITY IDEOGRAPH-F9ED → CJK UNIFIED IDEOGRAPH-541D       # 
+
+2F83D ;        5438 ;  SL      # ( 吸 → 吸 ) CJK COMPATIBILITY IDEOGRAPH-2F83D → CJK UNIFIED IDEOGRAPH-5438     # 
+
+F980 ; 5442 ;  SL      # ( 呂 → 呂 ) CJK COMPATIBILITY IDEOGRAPH-F980 → CJK UNIFIED IDEOGRAPH-5442       # 
+
+2F83E ;        5448 ;  SL      # ( 呈 → 呈 ) CJK COMPATIBILITY IDEOGRAPH-2F83E → CJK UNIFIED IDEOGRAPH-5448     # 
+
+2F83F ;        5468 ;  SL      # ( 周 → 周 ) CJK COMPATIBILITY IDEOGRAPH-2F83F → CJK UNIFIED IDEOGRAPH-5468     # 
+
+2F83C ;        549E ;  SL      # ( 咞 → 咞 ) CJK COMPATIBILITY IDEOGRAPH-2F83C → CJK UNIFIED IDEOGRAPH-549E     # 
+
+2F840 ;        54A2 ;  SL      # ( 咢 → 咢 ) CJK COMPATIBILITY IDEOGRAPH-2F840 → CJK UNIFIED IDEOGRAPH-54A2     # 
+
+F99E ; 54BD ;  SL      # ( 咽 → 咽 ) CJK COMPATIBILITY IDEOGRAPH-F99E → CJK UNIFIED IDEOGRAPH-54BD       # 
+
+2F841 ;        54F6 ;  SL      # ( 哶 → 哶 ) CJK COMPATIBILITY IDEOGRAPH-2F841 → CJK UNIFIED IDEOGRAPH-54F6     # 
+
+2F842 ;        5510 ;  SL      # ( 唐 → 唐 ) CJK COMPATIBILITY IDEOGRAPH-2F842 → CJK UNIFIED IDEOGRAPH-5510     # 
+
+2F843 ;        5553 ;  SL      # ( 啓 → 啓 ) CJK COMPATIBILITY IDEOGRAPH-2F843 → CJK UNIFIED IDEOGRAPH-5553     # 
+555F ; 5553 ;  SL      # ( 啟 → 啓 ) CJK UNIFIED IDEOGRAPH-555F → CJK UNIFIED IDEOGRAPH-5553     # 
+
+FA79 ; 5555 ;  SL      # ( 啕 → 啕 ) CJK COMPATIBILITY IDEOGRAPH-FA79 → CJK UNIFIED IDEOGRAPH-5555       # 
+
+2F844 ;        5563 ;  SL      # ( 啣 → 啣 ) CJK COMPATIBILITY IDEOGRAPH-2F844 → CJK UNIFIED IDEOGRAPH-5563     # 
+
+2F845 ;        5584 ;  SL      # ( 善 → 善 ) CJK COMPATIBILITY IDEOGRAPH-2F845 → CJK UNIFIED IDEOGRAPH-5584     # 
+2F846 ;        5584 ;  SL      # ( 善 → 善 ) CJK COMPATIBILITY IDEOGRAPH-2F846 → CJK UNIFIED IDEOGRAPH-5584     # 
+
+F90B ; 5587 ;  SL      # ( 喇 → 喇 ) CJK COMPATIBILITY IDEOGRAPH-F90B → CJK UNIFIED IDEOGRAPH-5587       # 
+
+FA7A ; 5599 ;  SL      # ( 喙 → 喙 ) CJK COMPATIBILITY IDEOGRAPH-FA7A → CJK UNIFIED IDEOGRAPH-5599       # 
+2F847 ;        5599 ;  SL      # ( 喙 → 喙 ) CJK COMPATIBILITY IDEOGRAPH-2F847 → CJK UNIFIED IDEOGRAPH-5599     # 
+
+FA36 ; 559D ;  SL      # ( 喝 → 喝 ) CJK COMPATIBILITY IDEOGRAPH-FA36 → CJK UNIFIED IDEOGRAPH-559D       # 
+FA78 ; 559D ;  SL      # ( 喝 → 喝 ) CJK COMPATIBILITY IDEOGRAPH-FA78 → CJK UNIFIED IDEOGRAPH-559D       # 
+
+2F848 ;        55AB ;  SL      # ( 喫 → 喫 ) CJK COMPATIBILITY IDEOGRAPH-2F848 → CJK UNIFIED IDEOGRAPH-55AB     # 
+
+2F849 ;        55B3 ;  SL      # ( 喳 → 喳 ) CJK COMPATIBILITY IDEOGRAPH-2F849 → CJK UNIFIED IDEOGRAPH-55B3     # 
+
+FA0D ; 55C0 ;  SL      # ( 嗀 → 嗀 ) CJK COMPATIBILITY IDEOGRAPH-FA0D → CJK UNIFIED IDEOGRAPH-55C0       # 
+
+2F84A ;        55C2 ;  SL      # ( 嗂 → 嗂 ) CJK COMPATIBILITY IDEOGRAPH-2F84A → CJK UNIFIED IDEOGRAPH-55C2     # 
+
+FA7B ; 55E2 ;  SL      # ( 嗢 → 嗢 ) CJK COMPATIBILITY IDEOGRAPH-FA7B → CJK UNIFIED IDEOGRAPH-55E2       # 
+
+FA37 ; 5606 ;  SL      # ( 嘆 → 嘆 ) CJK COMPATIBILITY IDEOGRAPH-FA37 → CJK UNIFIED IDEOGRAPH-5606       # 
+2F84C ;        5606 ;  SL      # ( 嘆 → 嘆 ) CJK COMPATIBILITY IDEOGRAPH-2F84C → CJK UNIFIED IDEOGRAPH-5606     # 
+
+2F84E ;        5651 ;  SL      # ( 噑 → 噑 ) CJK COMPATIBILITY IDEOGRAPH-2F84E → CJK UNIFIED IDEOGRAPH-5651     # 
+
+FA38 ; 5668 ;  SL      # ( 器 → 器 ) CJK COMPATIBILITY IDEOGRAPH-FA38 → CJK UNIFIED IDEOGRAPH-5668       # 
+
+2F84F ;        5674 ;  SL      # ( 噴 → 噴 ) CJK COMPATIBILITY IDEOGRAPH-2F84F → CJK UNIFIED IDEOGRAPH-5674     # 
+
+2F1E ; 56D7 ;  SL      #* ( ⼞ → 囗 ) KANGXI RADICAL ENCLOSURE → CJK UNIFIED IDEOGRAPH-56D7      # 
+
+F9A9 ; 56F9 ;  SL      # ( 囹 → 囹 ) CJK COMPATIBILITY IDEOGRAPH-F9A9 → CJK UNIFIED IDEOGRAPH-56F9       # 
+
+2F84B ;        5716 ;  SL      # ( 圖 → 圖 ) CJK COMPATIBILITY IDEOGRAPH-2F84B → CJK UNIFIED IDEOGRAPH-5716     # 
+
+2F84D ;        5717 ;  SL      # ( 圗 → 圗 ) CJK COMPATIBILITY IDEOGRAPH-2F84D → CJK UNIFIED IDEOGRAPH-5717     # 
+
+2F1F ; 571F ;  SL      #* ( ⼟ → 土 ) KANGXI RADICAL EARTH → CJK UNIFIED IDEOGRAPH-571F  # 
+
+2F855 ;        578B ;  SL      # ( 型 → 型 ) CJK COMPATIBILITY IDEOGRAPH-2F855 → CJK UNIFIED IDEOGRAPH-578B     # 
+
+2F852 ;        57CE ;  SL      # ( 城 → 城 ) CJK COMPATIBILITY IDEOGRAPH-2F852 → CJK UNIFIED IDEOGRAPH-57CE     # 
+
+2F853 ;        57F4 ;  SL      # ( 埴 → 埴 ) CJK COMPATIBILITY IDEOGRAPH-2F853 → CJK UNIFIED IDEOGRAPH-57F4     # 
+
+2F854 ;        580D ;  SL      # ( 堍 → 堍 ) CJK COMPATIBILITY IDEOGRAPH-2F854 → CJK UNIFIED IDEOGRAPH-580D     # 
+
+2F857 ;        5831 ;  SL      # ( 報 → 報 ) CJK COMPATIBILITY IDEOGRAPH-2F857 → CJK UNIFIED IDEOGRAPH-5831     # 
+
+2F856 ;        5832 ;  SL      # ( 堲 → 堲 ) CJK COMPATIBILITY IDEOGRAPH-2F856 → CJK UNIFIED IDEOGRAPH-5832     # 
+
+FA39 ; 5840 ;  SL      # ( 塀 → 塀 ) CJK COMPATIBILITY IDEOGRAPH-FA39 → CJK UNIFIED IDEOGRAPH-5840       # 
+
+FA10 ; 585A ;  SL      # ( 塚 → 塚 ) CJK COMPATIBILITY IDEOGRAPH-FA10 → CJK UNIFIED IDEOGRAPH-585A       # 
+FA7C ; 585A ;  SL      # ( 塚 → 塚 ) CJK COMPATIBILITY IDEOGRAPH-FA7C → CJK UNIFIED IDEOGRAPH-585A       # 
+
+F96C ; 585E ;  SL      # ( 塞 → 塞 ) CJK COMPATIBILITY IDEOGRAPH-F96C → CJK UNIFIED IDEOGRAPH-585E       # 
+
+586B ; 5861 ;  SL      # ( 填 → 塡 ) CJK UNIFIED IDEOGRAPH-586B → CJK UNIFIED IDEOGRAPH-5861     # 
+
+FA3A ; 58A8 ;  SL      # ( 墨 → 墨 ) CJK COMPATIBILITY IDEOGRAPH-FA3A → CJK UNIFIED IDEOGRAPH-58A8       # 
+
+58FF ; 58AB ;  SL      # ( 壿 → 墫 ) CJK UNIFIED IDEOGRAPH-58FF → CJK UNIFIED IDEOGRAPH-58AB     # 
+
+2F858 ;        58AC ;  SL      # ( 墬 → 墬 ) CJK COMPATIBILITY IDEOGRAPH-2F858 → CJK UNIFIED IDEOGRAPH-58AC     # 
+
+FA7D ; 58B3 ;  SL      # ( 墳 → 墳 ) CJK COMPATIBILITY IDEOGRAPH-FA7D → CJK UNIFIED IDEOGRAPH-58B3       # 
+
+F94A ; 58D8 ;  SL      # ( 壘 → 壘 ) CJK COMPATIBILITY IDEOGRAPH-F94A → CJK UNIFIED IDEOGRAPH-58D8       # 
+
+F942 ; 58DF ;  SL      # ( 壟 → 壟 ) CJK COMPATIBILITY IDEOGRAPH-F942 → CJK UNIFIED IDEOGRAPH-58DF       # 
+
+2F20 ; 58EB ;  SL      #* ( ⼠ → 士 ) KANGXI RADICAL SCHOLAR → CJK UNIFIED IDEOGRAPH-58EB        # 
+
+2F851 ;        58EE ;  SL      # ( 壮 → 壮 ) CJK COMPATIBILITY IDEOGRAPH-2F851 → CJK UNIFIED IDEOGRAPH-58EE     # 
+
+2F85A ;        58F2 ;  SL      # ( 売 → 売 ) CJK COMPATIBILITY IDEOGRAPH-2F85A → CJK UNIFIED IDEOGRAPH-58F2     # 
+
+2F85B ;        58F7 ;  SL      # ( 壷 → 壷 ) CJK COMPATIBILITY IDEOGRAPH-2F85B → CJK UNIFIED IDEOGRAPH-58F7     # 
+
+2F21 ; 5902 ;  SL      #* ( ⼡ → 夂 ) KANGXI RADICAL GO → CJK UNIFIED IDEOGRAPH-5902     # 
+
+2F85C ;        5906 ;  SL      # ( 夆 → 夆 ) CJK COMPATIBILITY IDEOGRAPH-2F85C → CJK UNIFIED IDEOGRAPH-5906     # 
+
+2F22 ; 590A ;  SL      #* ( ⼢ → 夊 ) KANGXI RADICAL GO SLOWLY → CJK UNIFIED IDEOGRAPH-590A      # 
+
+2F23 ; 5915 ;  SL      #* ( ⼣ → 夕 ) KANGXI RADICAL EVENING → CJK UNIFIED IDEOGRAPH-5915        # 
+
+2F85D ;        591A ;  SL      # ( 多 → 多 ) CJK COMPATIBILITY IDEOGRAPH-2F85D → CJK UNIFIED IDEOGRAPH-591A     # 
+
+2F85E ;        5922 ;  SL      # ( 夢 → 夢 ) CJK COMPATIBILITY IDEOGRAPH-2F85E → CJK UNIFIED IDEOGRAPH-5922     # 
+
+2F24 ; 5927 ;  SL      #* ( ⼤ → 大 ) KANGXI RADICAL BIG → CJK UNIFIED IDEOGRAPH-5927    # 
+
+FA7E ; 5944 ;  SL      # ( 奄 → 奄 ) CJK COMPATIBILITY IDEOGRAPH-FA7E → CJK UNIFIED IDEOGRAPH-5944       # 
+
+F90C ; 5948 ;  SL      # ( 奈 → 奈 ) CJK COMPATIBILITY IDEOGRAPH-F90C → CJK UNIFIED IDEOGRAPH-5948       # 
+
+F909 ; 5951 ;  SL      # ( 契 → 契 ) CJK COMPATIBILITY IDEOGRAPH-F909 → CJK UNIFIED IDEOGRAPH-5951       # 
+
+FA7F ; 5954 ;  SL      # ( 奔 → 奔 ) CJK COMPATIBILITY IDEOGRAPH-FA7F → CJK UNIFIED IDEOGRAPH-5954       # 
+
+2F85F ;        5962 ;  SL      # ( 奢 → 奢 ) CJK COMPATIBILITY IDEOGRAPH-2F85F → CJK UNIFIED IDEOGRAPH-5962     # 
+
+F981 ; 5973 ;  SL      # ( 女 → 女 ) CJK COMPATIBILITY IDEOGRAPH-F981 → CJK UNIFIED IDEOGRAPH-5973       # 
+2F25 ; 5973 ;  SL      #* ( ⼥ → 女 ) KANGXI RADICAL WOMAN → CJK UNIFIED IDEOGRAPH-5973  # 
+
+2F865 ;        59D8 ;  SL      # ( 姘 → 姘 ) CJK COMPATIBILITY IDEOGRAPH-2F865 → CJK UNIFIED IDEOGRAPH-59D8     # 
+
+2F862 ;        59EC ;  SL      # ( 姬 → 姬 ) CJK COMPATIBILITY IDEOGRAPH-2F862 → CJK UNIFIED IDEOGRAPH-59EC     # 
+
+2F863 ;        5A1B ;  SL      # ( 娛 → 娛 ) CJK COMPATIBILITY IDEOGRAPH-2F863 → CJK UNIFIED IDEOGRAPH-5A1B     # 
+
+2F864 ;        5A27 ;  SL      # ( 娧 → 娧 ) CJK COMPATIBILITY IDEOGRAPH-2F864 → CJK UNIFIED IDEOGRAPH-5A27     # 
+
+FA80 ; 5A62 ;  SL      # ( 婢 → 婢 ) CJK COMPATIBILITY IDEOGRAPH-FA80 → CJK UNIFIED IDEOGRAPH-5A62       # 
+
+2F866 ;        5A66 ;  SL      # ( 婦 → 婦 ) CJK COMPATIBILITY IDEOGRAPH-2F866 → CJK UNIFIED IDEOGRAPH-5A66     # 
+
+5B00 ; 5AAF ;  SL      # ( 嬀 → 媯 ) CJK UNIFIED IDEOGRAPH-5B00 → CJK UNIFIED IDEOGRAPH-5AAF     # 
+
+2F986 ;        5AB5 ;  SL      # ( 媵 → 媵 ) CJK COMPATIBILITY IDEOGRAPH-2F986 → CJK UNIFIED IDEOGRAPH-5AB5     # 
+
+2F869 ;        5B08 ;  SL      # ( 嬈 → 嬈 ) CJK COMPATIBILITY IDEOGRAPH-2F869 → CJK UNIFIED IDEOGRAPH-5B08     # 
+
+FA81 ; 5B28 ;  SL      # ( 嬨 → 嬨 ) CJK COMPATIBILITY IDEOGRAPH-FA81 → CJK UNIFIED IDEOGRAPH-5B28       # 
+
+2F86A ;        5B3E ;  SL      # ( 嬾 → 嬾 ) CJK COMPATIBILITY IDEOGRAPH-2F86A → CJK UNIFIED IDEOGRAPH-5B3E     # 
+2F86B ;        5B3E ;  SL      # ( 嬾 → 嬾 ) CJK COMPATIBILITY IDEOGRAPH-2F86B → CJK UNIFIED IDEOGRAPH-5B3E     # 
+
+2F26 ; 5B50 ;  SL      #* ( ⼦ → 子 ) KANGXI RADICAL CHILD → CJK UNIFIED IDEOGRAPH-5B50  # 
+
+2F27 ; 5B80 ;  SL      #* ( ⼧ → 宀 ) KANGXI RADICAL ROOF → CJK UNIFIED IDEOGRAPH-5B80   # 
+
+FA04 ; 5B85 ;  SL      # ( 宅 → 宅 ) CJK COMPATIBILITY IDEOGRAPH-FA04 → CJK UNIFIED IDEOGRAPH-5B85       # 
+
+2F86D ;        5BC3 ;  SL      # ( 寃 → 寃 ) CJK COMPATIBILITY IDEOGRAPH-2F86D → CJK UNIFIED IDEOGRAPH-5BC3     # 
+
+2F86E ;        5BD8 ;  SL      # ( 寘 → 寘 ) CJK COMPATIBILITY IDEOGRAPH-2F86E → CJK UNIFIED IDEOGRAPH-5BD8     # 
+
+F95F ; 5BE7 ;  SL      # ( 寧 → 寧 ) CJK COMPATIBILITY IDEOGRAPH-F95F → CJK UNIFIED IDEOGRAPH-5BE7       # 
+F9AA ; 5BE7 ;  SL      # ( 寧 → 寧 ) CJK COMPATIBILITY IDEOGRAPH-F9AA → CJK UNIFIED IDEOGRAPH-5BE7       # 
+2F86F ;        5BE7 ;  SL      # ( 寧 → 寧 ) CJK COMPATIBILITY IDEOGRAPH-2F86F → CJK UNIFIED IDEOGRAPH-5BE7     # 
+
+F9BC ; 5BEE ;  SL      # ( 寮 → 寮 ) CJK COMPATIBILITY IDEOGRAPH-F9BC → CJK UNIFIED IDEOGRAPH-5BEE       # 
+
+2F870 ;        5BF3 ;  SL      # ( 寳 → 寳 ) CJK COMPATIBILITY IDEOGRAPH-2F870 → CJK UNIFIED IDEOGRAPH-5BF3     # 
+
+2F28 ; 5BF8 ;  SL      #* ( ⼨ → 寸 ) KANGXI RADICAL INCH → CJK UNIFIED IDEOGRAPH-5BF8   # 
+
+2F872 ;        5BFF ;  SL      # ( 寿 → 寿 ) CJK COMPATIBILITY IDEOGRAPH-2F872 → CJK UNIFIED IDEOGRAPH-5BFF     # 
+
+2F873 ;        5C06 ;  SL      # ( 将 → 将 ) CJK COMPATIBILITY IDEOGRAPH-2F873 → CJK UNIFIED IDEOGRAPH-5C06     # 
+
+2F29 ; 5C0F ;  SL      #* ( ⼩ → 小 ) KANGXI RADICAL SMALL → CJK UNIFIED IDEOGRAPH-5C0F  # 
+
+2F875 ;        5C22 ;  SL      # ( 尢 → 尢 ) CJK COMPATIBILITY IDEOGRAPH-2F875 → CJK UNIFIED IDEOGRAPH-5C22     # 
+2E90 ; 5C22 ;  SL      #* ( ⺐ → 尢 ) CJK RADICAL LAME THREE → CJK UNIFIED IDEOGRAPH-5C22        # 
+2F2A ; 5C22 ;  SL      #* ( ⼪ → 尢 ) KANGXI RADICAL LAME → CJK UNIFIED IDEOGRAPH-5C22   # 
+
+2E8F ; 5C23 ;  SL      #* ( ⺏ → 尣 ) CJK RADICAL LAME TWO → CJK UNIFIED IDEOGRAPH-5C23  # 
+
+2F2B ; 5C38 ;  SL      #* ( ⼫ → 尸 ) KANGXI RADICAL CORPSE → CJK UNIFIED IDEOGRAPH-5C38 # 
+
+F9BD ; 5C3F ;  SL      # ( 尿 → 尿 ) CJK COMPATIBILITY IDEOGRAPH-F9BD → CJK UNIFIED IDEOGRAPH-5C3F       # 
+
+2F877 ;        5C60 ;  SL      # ( 屠 → 屠 ) CJK COMPATIBILITY IDEOGRAPH-2F877 → CJK UNIFIED IDEOGRAPH-5C60     # 
+
+F94B ; 5C62 ;  SL      # ( 屢 → 屢 ) CJK COMPATIBILITY IDEOGRAPH-F94B → CJK UNIFIED IDEOGRAPH-5C62       # 
+
+FA3B ; 5C64 ;  SL      # ( 層 → 層 ) CJK COMPATIBILITY IDEOGRAPH-FA3B → CJK UNIFIED IDEOGRAPH-5C64       # 
+
+F9DF ; 5C65 ;  SL      # ( 履 → 履 ) CJK COMPATIBILITY IDEOGRAPH-F9DF → CJK UNIFIED IDEOGRAPH-5C65       # 
+
+FA3C ; 5C6E ;  SL      # ( 屮 → 屮 ) CJK COMPATIBILITY IDEOGRAPH-FA3C → CJK UNIFIED IDEOGRAPH-5C6E       # 
+2F878 ;        5C6E ;  SL      # ( 屮 → 屮 ) CJK COMPATIBILITY IDEOGRAPH-2F878 → CJK UNIFIED IDEOGRAPH-5C6E     # 
+2F2C ; 5C6E ;  SL      #* ( ⼬ → 屮 ) KANGXI RADICAL SPROUT → CJK UNIFIED IDEOGRAPH-5C6E # 
+
+2F2D ; 5C71 ;  SL      #* ( ⼭ → 山 ) KANGXI RADICAL MOUNTAIN → CJK UNIFIED IDEOGRAPH-5C71       # 
+
+2F87A ;        5C8D ;  SL      # ( 岍 → 岍 ) CJK COMPATIBILITY IDEOGRAPH-2F87A → CJK UNIFIED IDEOGRAPH-5C8D     # 
+
+2F879 ;        5CC0 ;  SL      # ( 峀 → 峀 ) CJK COMPATIBILITY IDEOGRAPH-2F879 → CJK UNIFIED IDEOGRAPH-5CC0     # 
+
+F9D5 ; 5D19 ;  SL      # ( 崙 → 崙 ) CJK COMPATIBILITY IDEOGRAPH-F9D5 → CJK UNIFIED IDEOGRAPH-5D19       # 
+
+2F87C ;        5D43 ;  SL      # ( 嵃 → 嵃 ) CJK COMPATIBILITY IDEOGRAPH-2F87C → CJK UNIFIED IDEOGRAPH-5D43     # 
+
+F921 ; 5D50 ;  SL      # ( 嵐 → 嵐 ) CJK COMPATIBILITY IDEOGRAPH-F921 → CJK UNIFIED IDEOGRAPH-5D50       # 
+
+2F87F ;        5D6B ;  SL      # ( 嵫 → 嵫 ) CJK COMPATIBILITY IDEOGRAPH-2F87F → CJK UNIFIED IDEOGRAPH-5D6B     # 
+
+2F87E ;        5D6E ;  SL      # ( 嵮 → 嵮 ) CJK COMPATIBILITY IDEOGRAPH-2F87E → CJK UNIFIED IDEOGRAPH-5D6E     # 
+
+2F880 ;        5D7C ;  SL      # ( 嵼 → 嵼 ) CJK COMPATIBILITY IDEOGRAPH-2F880 → CJK UNIFIED IDEOGRAPH-5D7C     # 
+
+2F9F4 ;        5DB2 ;  SL      # ( 嶲 → 嶲 ) CJK COMPATIBILITY IDEOGRAPH-2F9F4 → CJK UNIFIED IDEOGRAPH-5DB2     # 
+
+F9AB ; 5DBA ;  SL      # ( 嶺 → 嶺 ) CJK COMPATIBILITY IDEOGRAPH-F9AB → CJK UNIFIED IDEOGRAPH-5DBA       # 
+
+2F2E ; 5DDB ;  SL      #* ( ⼮ → 巛 ) KANGXI RADICAL RIVER → CJK UNIFIED IDEOGRAPH-5DDB  # 
+
+2F881 ;        5DE1 ;  SL      # ( 巡 → 巡 ) CJK COMPATIBILITY IDEOGRAPH-2F881 → CJK UNIFIED IDEOGRAPH-5DE1     # 
+
+2F882 ;        5DE2 ;  SL      # ( 巢 → 巢 ) CJK COMPATIBILITY IDEOGRAPH-2F882 → CJK UNIFIED IDEOGRAPH-5DE2     # 
+
+2F2F ; 5DE5 ;  SL      #* ( ⼯ → 工 ) KANGXI RADICAL WORK → CJK UNIFIED IDEOGRAPH-5DE5   # 
+
+2F30 ; 5DF1 ;  SL      #* ( ⼰ → 己 ) KANGXI RADICAL ONESELF → CJK UNIFIED IDEOGRAPH-5DF1        # 
+
+2E92 ; 5DF3 ;  SL      #* ( ⺒ → 巳 ) CJK RADICAL SNAKE → CJK UNIFIED IDEOGRAPH-5DF3     # 
+
+2F884 ;        5DFD ;  SL      # ( 巽 → 巽 ) CJK COMPATIBILITY IDEOGRAPH-2F884 → CJK UNIFIED IDEOGRAPH-5DFD     # 
+
+2F31 ; 5DFE ;  SL      #* ( ⼱ → 巾 ) KANGXI RADICAL TURBAN → CJK UNIFIED IDEOGRAPH-5DFE # 
+
+5E32 ; 5E21 ;  SL      # ( 帲 → 帡 ) CJK UNIFIED IDEOGRAPH-5E32 → CJK UNIFIED IDEOGRAPH-5E21     # 
+
+2F885 ;        5E28 ;  SL      # ( 帨 → 帨 ) CJK COMPATIBILITY IDEOGRAPH-2F885 → CJK UNIFIED IDEOGRAPH-5E28     # 
+
+2F886 ;        5E3D ;  SL      # ( 帽 → 帽 ) CJK COMPATIBILITY IDEOGRAPH-2F886 → CJK UNIFIED IDEOGRAPH-5E3D     # 
+
+2F887 ;        5E69 ;  SL      # ( 幩 → 幩 ) CJK COMPATIBILITY IDEOGRAPH-2F887 → CJK UNIFIED IDEOGRAPH-5E69     # 
+
+2F32 ; 5E72 ;  SL      #* ( ⼲ → 干 ) KANGXI RADICAL DRY → CJK UNIFIED IDEOGRAPH-5E72    # 
+
+F98E ; 5E74 ;  SL      # ( 年 → 年 ) CJK COMPATIBILITY IDEOGRAPH-F98E → CJK UNIFIED IDEOGRAPH-5E74       # 
+
+2E93 ; 5E7A ;  SL      #* ( ⺓ → 幺 ) CJK RADICAL THREAD → CJK UNIFIED IDEOGRAPH-5E7A    # 
+2F33 ; 5E7A ;  SL      #* ( ⼳ → 幺 ) KANGXI RADICAL SHORT THREAD → CJK UNIFIED IDEOGRAPH-5E7A   # 
+
+2F34 ; 5E7F ;  SL      #* ( ⼴ → 广 ) KANGXI RADICAL DOTTED CLIFF → CJK UNIFIED IDEOGRAPH-5E7F   # 
+
+FA01 ; 5EA6 ;  SL      # ( 度 → 度 ) CJK COMPATIBILITY IDEOGRAPH-FA01 → CJK UNIFIED IDEOGRAPH-5EA6       # 
+
+2F88B ;        5EB0 ;  SL      # ( 庰 → 庰 ) CJK COMPATIBILITY IDEOGRAPH-2F88B → CJK UNIFIED IDEOGRAPH-5EB0     # 
+
+2F88C ;        5EB3 ;  SL      # ( 庳 → 庳 ) CJK COMPATIBILITY IDEOGRAPH-2F88C → CJK UNIFIED IDEOGRAPH-5EB3     # 
+
+2F88D ;        5EB6 ;  SL      # ( 庶 → 庶 ) CJK COMPATIBILITY IDEOGRAPH-2F88D → CJK UNIFIED IDEOGRAPH-5EB6     # 
+
+F9A2 ; 5EC9 ;  SL      # ( 廉 → 廉 ) CJK COMPATIBILITY IDEOGRAPH-F9A2 → CJK UNIFIED IDEOGRAPH-5EC9       # 
+
+F928 ; 5ECA ;  SL      # ( 廊 → 廊 ) CJK COMPATIBILITY IDEOGRAPH-F928 → CJK UNIFIED IDEOGRAPH-5ECA       # 
+2F88E ;        5ECA ;  SL      # ( 廊 → 廊 ) CJK COMPATIBILITY IDEOGRAPH-2F88E → CJK UNIFIED IDEOGRAPH-5ECA     # 
+
+FA82 ; 5ED2 ;  SL      # ( 廒 → 廒 ) CJK COMPATIBILITY IDEOGRAPH-FA82 → CJK UNIFIED IDEOGRAPH-5ED2       # 
+
+FA0B ; 5ED3 ;  SL      # ( 廓 → 廓 ) CJK COMPATIBILITY IDEOGRAPH-FA0B → CJK UNIFIED IDEOGRAPH-5ED3       # 
+
+FA83 ; 5ED9 ;  SL      # ( 廙 → 廙 ) CJK COMPATIBILITY IDEOGRAPH-FA83 → CJK UNIFIED IDEOGRAPH-5ED9       # 
+
+F982 ; 5EEC ;  SL      # ( 廬 → 廬 ) CJK COMPATIBILITY IDEOGRAPH-F982 → CJK UNIFIED IDEOGRAPH-5EEC       # 
+
+2F35 ; 5EF4 ;  SL      #* ( ⼵ → 廴 ) KANGXI RADICAL LONG STRIDE → CJK UNIFIED IDEOGRAPH-5EF4    # 
+
+2F890 ;        5EFE ;  SL      # ( 廾 → 廾 ) CJK COMPATIBILITY IDEOGRAPH-2F890 → CJK UNIFIED IDEOGRAPH-5EFE     # 
+2F36 ; 5EFE ;  SL      #* ( ⼶ → 廾 ) KANGXI RADICAL TWO HANDS → CJK UNIFIED IDEOGRAPH-5EFE      # 
+
+F943 ; 5F04 ;  SL      # ( 弄 → 弄 ) CJK COMPATIBILITY IDEOGRAPH-F943 → CJK UNIFIED IDEOGRAPH-5F04       # 
+
+2F37 ; 5F0B ;  SL      #* ( ⼷ → 弋 ) KANGXI RADICAL SHOOT → CJK UNIFIED IDEOGRAPH-5F0B  # 
+
+2F38 ; 5F13 ;  SL      #* ( ⼸ → 弓 ) KANGXI RADICAL BOW → CJK UNIFIED IDEOGRAPH-5F13    # 
+
+2F894 ;        5F22 ;  SL      # ( 弢 → 弢 ) CJK COMPATIBILITY IDEOGRAPH-2F894 → CJK UNIFIED IDEOGRAPH-5F22     # 
+2F895 ;        5F22 ;  SL      # ( 弢 → 弢 ) CJK COMPATIBILITY IDEOGRAPH-2F895 → CJK UNIFIED IDEOGRAPH-5F22     # 
+
+2F39 ; 5F50 ;  SL      #* ( ⼹ → 彐 ) KANGXI RADICAL SNOUT → CJK UNIFIED IDEOGRAPH-5F50  # 
+
+2E94 ; 5F51 ;  SL      #* ( ⺔ → 彑 ) CJK RADICAL SNOUT ONE → CJK UNIFIED IDEOGRAPH-5F51 # 
+
+2F874 ;        5F53 ;  SL      # ( 当 → 当 ) CJK COMPATIBILITY IDEOGRAPH-2F874 → CJK UNIFIED IDEOGRAPH-5F53     # 
+
+2F3A ; 5F61 ;  SL      #* ( ⼺ → 彡 ) KANGXI RADICAL BRISTLE → CJK UNIFIED IDEOGRAPH-5F61        # 
+
+2F899 ;        5F62 ;  SL      # ( 形 → 形 ) CJK COMPATIBILITY IDEOGRAPH-2F899 → CJK UNIFIED IDEOGRAPH-5F62     # 
+
+FA84 ; 5F69 ;  SL      # ( 彩 → 彩 ) CJK COMPATIBILITY IDEOGRAPH-FA84 → CJK UNIFIED IDEOGRAPH-5F69       # 
+
+2F89A ;        5F6B ;  SL      # ( 彫 → 彫 ) CJK COMPATIBILITY IDEOGRAPH-2F89A → CJK UNIFIED IDEOGRAPH-5F6B     # 
+
+2F3B ; 5F73 ;  SL      #* ( ⼻ → 彳 ) KANGXI RADICAL STEP → CJK UNIFIED IDEOGRAPH-5F73   # 
+
+F9D8 ; 5F8B ;  SL      # ( 律 → 律 ) CJK COMPATIBILITY IDEOGRAPH-F9D8 → CJK UNIFIED IDEOGRAPH-5F8B       # 
+
+2F89C ;        5F9A ;  SL      # ( 徚 → 徚 ) CJK COMPATIBILITY IDEOGRAPH-2F89C → CJK UNIFIED IDEOGRAPH-5F9A     # 
+
+F966 ; 5FA9 ;  SL      # ( 復 → 復 ) CJK COMPATIBILITY IDEOGRAPH-F966 → CJK UNIFIED IDEOGRAPH-5FA9       # 
+
+FA85 ; 5FAD ;  SL      # ( 徭 → 徭 ) CJK COMPATIBILITY IDEOGRAPH-FA85 → CJK UNIFIED IDEOGRAPH-5FAD       # 
+
+2F3C ; 5FC3 ;  SL      #* ( ⼼ → 心 ) KANGXI RADICAL HEART → CJK UNIFIED IDEOGRAPH-5FC3  # 
+
+2E96 ; 5FC4 ;  SL      #* ( ⺖ → 忄 ) CJK RADICAL HEART ONE → CJK UNIFIED IDEOGRAPH-5FC4 # 
+
+2F89D ;        5FCD ;  SL      # ( 忍 → 忍 ) CJK COMPATIBILITY IDEOGRAPH-2F89D → CJK UNIFIED IDEOGRAPH-5FCD     # 
+
+2F89E ;        5FD7 ;  SL      # ( 志 → 志 ) CJK COMPATIBILITY IDEOGRAPH-2F89E → CJK UNIFIED IDEOGRAPH-5FD7     # 
+
+F9A3 ; 5FF5 ;  SL      # ( 念 → 念 ) CJK COMPATIBILITY IDEOGRAPH-F9A3 → CJK UNIFIED IDEOGRAPH-5FF5       # 
+
+2F89F ;        5FF9 ;  SL      # ( 忹 → 忹 ) CJK COMPATIBILITY IDEOGRAPH-2F89F → CJK UNIFIED IDEOGRAPH-5FF9     # 
+
+F960 ; 6012 ;  SL      # ( 怒 → 怒 ) CJK COMPATIBILITY IDEOGRAPH-F960 → CJK UNIFIED IDEOGRAPH-6012       # 
+
+F9AC ; 601C ;  SL      # ( 怜 → 怜 ) CJK COMPATIBILITY IDEOGRAPH-F9AC → CJK UNIFIED IDEOGRAPH-601C       # 
+
+FA6B ; 6075 ;  SL      # ( 恵 → 恵 ) CJK COMPATIBILITY IDEOGRAPH-FA6B → CJK UNIFIED IDEOGRAPH-6075       # 
+
+2F8A0 ;        6081 ;  SL      # ( 悁 → 悁 ) CJK COMPATIBILITY IDEOGRAPH-2F8A0 → CJK UNIFIED IDEOGRAPH-6081     # 
+
+FA3D ; 6094 ;  SL      # ( 悔 → 悔 ) CJK COMPATIBILITY IDEOGRAPH-FA3D → CJK UNIFIED IDEOGRAPH-6094       # 
+2F8A3 ;        6094 ;  SL      # ( 悔 → 悔 ) CJK COMPATIBILITY IDEOGRAPH-2F8A3 → CJK UNIFIED IDEOGRAPH-6094     # 
+
+2F8A5 ;        60C7 ;  SL      # ( 惇 → 惇 ) CJK COMPATIBILITY IDEOGRAPH-2F8A5 → CJK UNIFIED IDEOGRAPH-60C7     # 
+
+FA86 ; 60D8 ;  SL      # ( 惘 → 惘 ) CJK COMPATIBILITY IDEOGRAPH-FA86 → CJK UNIFIED IDEOGRAPH-60D8       # 
+
+F9B9 ; 60E1 ;  SL      # ( 惡 → 惡 ) CJK COMPATIBILITY IDEOGRAPH-F9B9 → CJK UNIFIED IDEOGRAPH-60E1       # 
+
+FA88 ; 6108 ;  SL      # ( 愈 → 愈 ) CJK COMPATIBILITY IDEOGRAPH-FA88 → CJK UNIFIED IDEOGRAPH-6108       # 
+
+F9D9 ; 6144 ;  SL      # ( 慄 → 慄 ) CJK COMPATIBILITY IDEOGRAPH-F9D9 → CJK UNIFIED IDEOGRAPH-6144       # 
+
+2F8A6 ;        6148 ;  SL      # ( 慈 → 慈 ) CJK COMPATIBILITY IDEOGRAPH-2F8A6 → CJK UNIFIED IDEOGRAPH-6148     # 
+
+2F8A7 ;        614C ;  SL      # ( 慌 → 慌 ) CJK COMPATIBILITY IDEOGRAPH-2F8A7 → CJK UNIFIED IDEOGRAPH-614C     # 
+2F8A9 ;        614C ;  SL      # ( 慌 → 慌 ) CJK COMPATIBILITY IDEOGRAPH-2F8A9 → CJK UNIFIED IDEOGRAPH-614C     # 
+
+FA87 ; 614E ;  SL      # ( 慎 → 慎 ) CJK COMPATIBILITY IDEOGRAPH-FA87 → CJK UNIFIED IDEOGRAPH-614E       # 
+2F8A8 ;        614E ;  SL      # ( 慎 → 慎 ) CJK COMPATIBILITY IDEOGRAPH-2F8A8 → CJK UNIFIED IDEOGRAPH-614E     # 
+
+FA8A ; 6160 ;  SL      # ( 慠 → 慠 ) CJK COMPATIBILITY IDEOGRAPH-FA8A → CJK UNIFIED IDEOGRAPH-6160       # 
+
+FA3E ; 6168 ;  SL      # ( 慨 → 慨 ) CJK COMPATIBILITY IDEOGRAPH-FA3E → CJK UNIFIED IDEOGRAPH-6168       # 
+
+2F8AA ;        617A ;  SL      # ( 慺 → 慺 ) CJK COMPATIBILITY IDEOGRAPH-2F8AA → CJK UNIFIED IDEOGRAPH-617A     # 
+
+FA3F ; 618E ;  SL      # ( 憎 → 憎 ) CJK COMPATIBILITY IDEOGRAPH-FA3F → CJK UNIFIED IDEOGRAPH-618E       # 
+FA89 ; 618E ;  SL      # ( 憎 → 憎 ) CJK COMPATIBILITY IDEOGRAPH-FA89 → CJK UNIFIED IDEOGRAPH-618E       # 
+2F8AB ;        618E ;  SL      # ( 憎 → 憎 ) CJK COMPATIBILITY IDEOGRAPH-2F8AB → CJK UNIFIED IDEOGRAPH-618E     # 
+
+F98F ; 6190 ;  SL      # ( 憐 → 憐 ) CJK COMPATIBILITY IDEOGRAPH-F98F → CJK UNIFIED IDEOGRAPH-6190       # 
+
+2F8AD ;        61A4 ;  SL      # ( 憤 → 憤 ) CJK COMPATIBILITY IDEOGRAPH-2F8AD → CJK UNIFIED IDEOGRAPH-61A4     # 
+
+2F8AE ;        61AF ;  SL      # ( 憯 → 憯 ) CJK COMPATIBILITY IDEOGRAPH-2F8AE → CJK UNIFIED IDEOGRAPH-61AF     # 
+
+2F8AC ;        61B2 ;  SL      # ( 憲 → 憲 ) CJK COMPATIBILITY IDEOGRAPH-2F8AC → CJK UNIFIED IDEOGRAPH-61B2     # 
+
+2F8AF ;        61DE ;  SL      # ( 懞 → 懞 ) CJK COMPATIBILITY IDEOGRAPH-2F8AF → CJK UNIFIED IDEOGRAPH-61DE     # 
+
+FA40 ; 61F2 ;  SL      # ( 懲 → 懲 ) CJK COMPATIBILITY IDEOGRAPH-FA40 → CJK UNIFIED IDEOGRAPH-61F2       # 
+FA8B ; 61F2 ;  SL      # ( 懲 → 懲 ) CJK COMPATIBILITY IDEOGRAPH-FA8B → CJK UNIFIED IDEOGRAPH-61F2       # 
+2F8B0 ;        61F2 ;  SL      # ( 懲 → 懲 ) CJK COMPATIBILITY IDEOGRAPH-2F8B0 → CJK UNIFIED IDEOGRAPH-61F2     # 
+
+F90D ; 61F6 ;  SL      # ( 懶 → 懶 ) CJK COMPATIBILITY IDEOGRAPH-F90D → CJK UNIFIED IDEOGRAPH-61F6       # 
+2F8B1 ;        61F6 ;  SL      # ( 懶 → 懶 ) CJK COMPATIBILITY IDEOGRAPH-2F8B1 → CJK UNIFIED IDEOGRAPH-61F6     # 
+
+F990 ; 6200 ;  SL      # ( 戀 → 戀 ) CJK COMPATIBILITY IDEOGRAPH-F990 → CJK UNIFIED IDEOGRAPH-6200       # 
+
+2F3D ; 6208 ;  SL      #* ( ⼽ → 戈 ) KANGXI RADICAL HALBERD → CJK UNIFIED IDEOGRAPH-6208        # 
+
+2F8B2 ;        6210 ;  SL      # ( 成 → 成 ) CJK COMPATIBILITY IDEOGRAPH-2F8B2 → CJK UNIFIED IDEOGRAPH-6210     # 
+
+2F8B3 ;        621B ;  SL      # ( 戛 → 戛 ) CJK COMPATIBILITY IDEOGRAPH-2F8B3 → CJK UNIFIED IDEOGRAPH-621B     # 
+
+F9D2 ; 622E ;  SL      # ( 戮 → 戮 ) CJK COMPATIBILITY IDEOGRAPH-F9D2 → CJK UNIFIED IDEOGRAPH-622E       # 
+
+FA8C ; 6234 ;  SL      # ( 戴 → 戴 ) CJK COMPATIBILITY IDEOGRAPH-FA8C → CJK UNIFIED IDEOGRAPH-6234       # 
+
+2F3E ; 6236 ;  SL      #* ( ⼾ → 戶 ) KANGXI RADICAL DOOR → CJK UNIFIED IDEOGRAPH-6236   # 
+6238 ; 6236 ;  SL      # ( 戸 → 戶 ) CJK UNIFIED IDEOGRAPH-6238 → CJK UNIFIED IDEOGRAPH-6236     # →⼾→
+
+2F3F ; 624B ;  SL      #* ( ⼿ → 手 ) KANGXI RADICAL HAND → CJK UNIFIED IDEOGRAPH-624B   # 
+
+2E98 ; 624C ;  SL      #* ( ⺘ → 扌 ) CJK RADICAL HAND → CJK UNIFIED IDEOGRAPH-624C      # 
+
+2F8B4 ;        625D ;  SL      # ( 扝 → 扝 ) CJK COMPATIBILITY IDEOGRAPH-2F8B4 → CJK UNIFIED IDEOGRAPH-625D     # 
+
+2F8B5 ;        62B1 ;  SL      # ( 抱 → 抱 ) CJK COMPATIBILITY IDEOGRAPH-2F8B5 → CJK UNIFIED IDEOGRAPH-62B1     # 
+
+F925 ; 62C9 ;  SL      # ( 拉 → 拉 ) CJK COMPATIBILITY IDEOGRAPH-F925 → CJK UNIFIED IDEOGRAPH-62C9       # 
+
+F95B ; 62CF ;  SL      # ( 拏 → 拏 ) CJK COMPATIBILITY IDEOGRAPH-F95B → CJK UNIFIED IDEOGRAPH-62CF       # 
+
+FA02 ; 62D3 ;  SL      # ( 拓 → 拓 ) CJK COMPATIBILITY IDEOGRAPH-FA02 → CJK UNIFIED IDEOGRAPH-62D3       # 
+
+2F8B6 ;        62D4 ;  SL      # ( 拔 → 拔 ) CJK COMPATIBILITY IDEOGRAPH-2F8B6 → CJK UNIFIED IDEOGRAPH-62D4     # 
+
+2F8BA ;        62FC ;  SL      # ( 拼 → 拼 ) CJK COMPATIBILITY IDEOGRAPH-2F8BA → CJK UNIFIED IDEOGRAPH-62FC     # 
+
+F973 ; 62FE ;  SL      # ( 拾 → 拾 ) CJK COMPATIBILITY IDEOGRAPH-F973 → CJK UNIFIED IDEOGRAPH-62FE       # 
+
+2F8B9 ;        633D ;  SL      # ( 挽 → 挽 ) CJK COMPATIBILITY IDEOGRAPH-2F8B9 → CJK UNIFIED IDEOGRAPH-633D     # 
+
+2F8B7 ;        6350 ;  SL      # ( 捐 → 捐 ) CJK COMPATIBILITY IDEOGRAPH-2F8B7 → CJK UNIFIED IDEOGRAPH-6350     # 
+
+2F8BB ;        6368 ;  SL      # ( 捨 → 捨 ) CJK COMPATIBILITY IDEOGRAPH-2F8BB → CJK UNIFIED IDEOGRAPH-6368     # 
+
+F9A4 ; 637B ;  SL      # ( 捻 → 捻 ) CJK COMPATIBILITY IDEOGRAPH-F9A4 → CJK UNIFIED IDEOGRAPH-637B       # 
+
+2F8BC ;        6383 ;  SL      # ( 掃 → 掃 ) CJK COMPATIBILITY IDEOGRAPH-2F8BC → CJK UNIFIED IDEOGRAPH-6383     # 
+
+F975 ; 63A0 ;  SL      # ( 掠 → 掠 ) CJK COMPATIBILITY IDEOGRAPH-F975 → CJK UNIFIED IDEOGRAPH-63A0       # 
+
+2F8C1 ;        63A9 ;  SL      # ( 掩 → 掩 ) CJK COMPATIBILITY IDEOGRAPH-2F8C1 → CJK UNIFIED IDEOGRAPH-63A9     # 
+
+FA8D ; 63C4 ;  SL      # ( 揄 → 揄 ) CJK COMPATIBILITY IDEOGRAPH-FA8D → CJK UNIFIED IDEOGRAPH-63C4       # 
+
+2F8C0 ;        63C5 ;  SL      # ( 揅 → 揅 ) CJK COMPATIBILITY IDEOGRAPH-2F8C0 → CJK UNIFIED IDEOGRAPH-63C5     # 
+
+2F8BD ;        63E4 ;  SL      # ( 揤 → 揤 ) CJK COMPATIBILITY IDEOGRAPH-2F8BD → CJK UNIFIED IDEOGRAPH-63E4     # 
+
+FA8E ; 641C ;  SL      # ( 搜 → 搜 ) CJK COMPATIBILITY IDEOGRAPH-FA8E → CJK UNIFIED IDEOGRAPH-641C       # 
+
+2F8BF ;        6422 ;  SL      # ( 搢 → 搢 ) CJK COMPATIBILITY IDEOGRAPH-2F8BF → CJK UNIFIED IDEOGRAPH-6422     # 
+
+FA8F ; 6452 ;  SL      # ( 摒 → 摒 ) CJK COMPATIBILITY IDEOGRAPH-FA8F → CJK UNIFIED IDEOGRAPH-6452       # 
+
+2F8C3 ;        6469 ;  SL      # ( 摩 → 摩 ) CJK COMPATIBILITY IDEOGRAPH-2F8C3 → CJK UNIFIED IDEOGRAPH-6469     # 
+
+2F8C6 ;        6477 ;  SL      # ( 摷 → 摷 ) CJK COMPATIBILITY IDEOGRAPH-2F8C6 → CJK UNIFIED IDEOGRAPH-6477     # 
+
+2F8C4 ;        647E ;  SL      # ( 摾 → 摾 ) CJK COMPATIBILITY IDEOGRAPH-2F8C4 → CJK UNIFIED IDEOGRAPH-647E     # 
+
+F991 ; 649A ;  SL      # ( 撚 → 撚 ) CJK COMPATIBILITY IDEOGRAPH-F991 → CJK UNIFIED IDEOGRAPH-649A       # 
+
+2F8C5 ;        649D ;  SL      # ( 撝 → 撝 ) CJK COMPATIBILITY IDEOGRAPH-2F8C5 → CJK UNIFIED IDEOGRAPH-649D     # 
+
+F930 ; 64C4 ;  SL      # ( 擄 → 擄 ) CJK COMPATIBILITY IDEOGRAPH-F930 → CJK UNIFIED IDEOGRAPH-64C4       # 
+
+2F40 ; 652F ;  SL      #* ( ⽀ → 支 ) KANGXI RADICAL BRANCH → CJK UNIFIED IDEOGRAPH-652F # 
+
+2F41 ; 6534 ;  SL      #* ( ⽁ → 攴 ) KANGXI RADICAL RAP → CJK UNIFIED IDEOGRAPH-6534    # 
+
+2E99 ; 6535 ;  SL      #* ( ⺙ → 攵 ) CJK RADICAL RAP → CJK UNIFIED IDEOGRAPH-6535       # 
+
+FA41 ; 654F ;  SL      # ( 敏 → 敏 ) CJK COMPATIBILITY IDEOGRAPH-FA41 → CJK UNIFIED IDEOGRAPH-654F       # 
+2F8C8 ;        654F ;  SL      # ( 敏 → 敏 ) CJK COMPATIBILITY IDEOGRAPH-2F8C8 → CJK UNIFIED IDEOGRAPH-654F     # 
+
+FA90 ; 6556 ;  SL      # ( 敖 → 敖 ) CJK COMPATIBILITY IDEOGRAPH-FA90 → CJK UNIFIED IDEOGRAPH-6556       # 
+
+2F8C9 ;        656C ;  SL      # ( 敬 → 敬 ) CJK COMPATIBILITY IDEOGRAPH-2F8C9 → CJK UNIFIED IDEOGRAPH-656C     # 
+
+F969 ; 6578 ;  SL      # ( 數 → 數 ) CJK COMPATIBILITY IDEOGRAPH-F969 → CJK UNIFIED IDEOGRAPH-6578       # 
+
+2F42 ; 6587 ;  SL      #* ( ⽂ → 文 ) KANGXI RADICAL SCRIPT → CJK UNIFIED IDEOGRAPH-6587 # 
+
+2EEB ; 6589 ;  SL      #* ( ⻫ → 斉 ) CJK RADICAL J-SIMPLIFIED EVEN → CJK UNIFIED IDEOGRAPH-6589 # 
+
+2F43 ; 6597 ;  SL      #* ( ⽃ → 斗 ) KANGXI RADICAL DIPPER → CJK UNIFIED IDEOGRAPH-6597 # 
+
+F9BE ; 6599 ;  SL      # ( 料 → 料 ) CJK COMPATIBILITY IDEOGRAPH-F9BE → CJK UNIFIED IDEOGRAPH-6599       # 
+
+2F44 ; 65A4 ;  SL      #* ( ⽄ → 斤 ) KANGXI RADICAL AXE → CJK UNIFIED IDEOGRAPH-65A4    # 
+
+2F45 ; 65B9 ;  SL      #* ( ⽅ → 方 ) KANGXI RADICAL SQUARE → CJK UNIFIED IDEOGRAPH-65B9 # 
+
+F983 ; 65C5 ;  SL      # ( 旅 → 旅 ) CJK COMPATIBILITY IDEOGRAPH-F983 → CJK UNIFIED IDEOGRAPH-65C5       # 
+
+2F46 ; 65E0 ;  SL      #* ( ⽆ → 无 ) KANGXI RADICAL NOT → CJK UNIFIED IDEOGRAPH-65E0    # 
+
+2E9B ; 65E1 ;  SL      #* ( ⺛ → 旡 ) CJK RADICAL CHOKE → CJK UNIFIED IDEOGRAPH-65E1     # 
+
+FA42 ; 65E2 ;  SL      # ( 既 → 既 ) CJK COMPATIBILITY IDEOGRAPH-FA42 → CJK UNIFIED IDEOGRAPH-65E2       # 
+
+2F8CB ;        65E3 ;  SL      # ( 旣 → 旣 ) CJK COMPATIBILITY IDEOGRAPH-2F8CB → CJK UNIFIED IDEOGRAPH-65E3     # 
+
+2F47 ; 65E5 ;  SL      #* ( ⽇ → 日 ) KANGXI RADICAL SUN → CJK UNIFIED IDEOGRAPH-65E5    # 
+
+F9E0 ; 6613 ;  SL      # ( 易 → 易 ) CJK COMPATIBILITY IDEOGRAPH-F9E0 → CJK UNIFIED IDEOGRAPH-6613       # 
+
+2F8CD ;        6649 ;  SL      # ( 晉 → 晉 ) CJK COMPATIBILITY IDEOGRAPH-2F8CD → CJK UNIFIED IDEOGRAPH-6649     # 
+
+6669 ; 665A ;  SL      # ( 晩 → 晚 ) CJK UNIFIED IDEOGRAPH-6669 → CJK UNIFIED IDEOGRAPH-665A     # 
+
+FA12 ; 6674 ;  SL      # ( 晴 → 晴 ) CJK COMPATIBILITY IDEOGRAPH-FA12 → CJK UNIFIED IDEOGRAPH-6674       # 
+FA91 ; 6674 ;  SL      # ( 晴 → 晴 ) CJK COMPATIBILITY IDEOGRAPH-FA91 → CJK UNIFIED IDEOGRAPH-6674       # 
+
+F9C5 ; 6688 ;  SL      # ( 暈 → 暈 ) CJK COMPATIBILITY IDEOGRAPH-F9C5 → CJK UNIFIED IDEOGRAPH-6688       # 
+
+FA43 ; 6691 ;  SL      # ( 暑 → 暑 ) CJK COMPATIBILITY IDEOGRAPH-FA43 → CJK UNIFIED IDEOGRAPH-6691       # 
+2F8CF ;        6691 ;  SL      # ( 暑 → 暑 ) CJK COMPATIBILITY IDEOGRAPH-2F8CF → CJK UNIFIED IDEOGRAPH-6691     # 
+
+2F8D5 ;        669C ;  SL      # ( 暜 → 暜 ) CJK COMPATIBILITY IDEOGRAPH-2F8D5 → CJK UNIFIED IDEOGRAPH-669C     # 
+
+FA06 ; 66B4 ;  SL      # ( 暴 → 暴 ) CJK COMPATIBILITY IDEOGRAPH-FA06 → CJK UNIFIED IDEOGRAPH-66B4       # 
+
+F98B ; 66C6 ;  SL      # ( 曆 → 曆 ) CJK COMPATIBILITY IDEOGRAPH-F98B → CJK UNIFIED IDEOGRAPH-66C6       # 
+
+2F48 ; 66F0 ;  SL      #* ( ⽈ → 曰 ) KANGXI RADICAL SAY → CJK UNIFIED IDEOGRAPH-66F0    # 
+
+F901 ; 66F4 ;  SL      # ( 更 → 更 ) CJK COMPATIBILITY IDEOGRAPH-F901 → CJK UNIFIED IDEOGRAPH-66F4       # 
+
+2F8CC ;        66F8 ;  SL      # ( 書 → 書 ) CJK COMPATIBILITY IDEOGRAPH-2F8CC → CJK UNIFIED IDEOGRAPH-66F8     # 
+
+2F8D4 ;        6700 ;  SL      # ( 最 → 最 ) CJK COMPATIBILITY IDEOGRAPH-2F8D4 → CJK UNIFIED IDEOGRAPH-6700     # 
+
+2F49 ; 6708 ;  SL      #* ( ⽉ → 月 ) KANGXI RADICAL MOON → CJK UNIFIED IDEOGRAPH-6708   # 
+
+80A6 ; 670C ;  SL      # ( 肦 → 朌 ) CJK UNIFIED IDEOGRAPH-80A6 → CJK UNIFIED IDEOGRAPH-670C     # 
+
+80D0 ; 670F ;  SL      # ( 胐 → 朏 ) CJK UNIFIED IDEOGRAPH-80D0 → CJK UNIFIED IDEOGRAPH-670F     # 
+
+80CA ; 6710 ;  SL      # ( 胊 → 朐 ) CJK UNIFIED IDEOGRAPH-80CA → CJK UNIFIED IDEOGRAPH-6710     # 
+
+8101 ; 6713 ;  SL      # ( 脁 → 朓 ) CJK UNIFIED IDEOGRAPH-8101 → CJK UNIFIED IDEOGRAPH-6713     # 
+
+F929 ; 6717 ;  SL      # ( 朗 → 朗 ) CJK COMPATIBILITY IDEOGRAPH-F929 → CJK UNIFIED IDEOGRAPH-6717       # 
+FA92 ; 6717 ;  SL      # ( 朗 → 朗 ) CJK COMPATIBILITY IDEOGRAPH-FA92 → CJK UNIFIED IDEOGRAPH-6717       # 
+2F8D8 ;        6717 ;  SL      # ( 朗 → 朗 ) CJK COMPATIBILITY IDEOGRAPH-2F8D8 → CJK UNIFIED IDEOGRAPH-6717     # 
+
+8127 ; 6718 ;  SL      # ( 脧 → 朘 ) CJK UNIFIED IDEOGRAPH-8127 → CJK UNIFIED IDEOGRAPH-6718     # 
+
+FA93 ; 671B ;  SL      # ( 望 → 望 ) CJK COMPATIBILITY IDEOGRAPH-FA93 → CJK UNIFIED IDEOGRAPH-671B       # 
+2F8D9 ;        671B ;  SL      # ( 望 → 望 ) CJK COMPATIBILITY IDEOGRAPH-2F8D9 → CJK UNIFIED IDEOGRAPH-671B     # 
+
+2F8DA ;        6721 ;  SL      # ( 朡 → 朡 ) CJK COMPATIBILITY IDEOGRAPH-2F8DA → CJK UNIFIED IDEOGRAPH-6721     # 
+
+81A7 ; 6723 ;  SL      # ( 膧 → 朣 ) CJK UNIFIED IDEOGRAPH-81A7 → CJK UNIFIED IDEOGRAPH-6723     # 
+
+2F4A ; 6728 ;  SL      #* ( ⽊ → 木 ) KANGXI RADICAL TREE → CJK UNIFIED IDEOGRAPH-6728   # 
+
+F9E1 ; 674E ;  SL      # ( 李 → 李 ) CJK COMPATIBILITY IDEOGRAPH-F9E1 → CJK UNIFIED IDEOGRAPH-674E       # 
+
+2F8DC ;        6753 ;  SL      # ( 杓 → 杓 ) CJK COMPATIBILITY IDEOGRAPH-2F8DC → CJK UNIFIED IDEOGRAPH-6753     # 
+
+FA94 ; 6756 ;  SL      # ( 杖 → 杖 ) CJK COMPATIBILITY IDEOGRAPH-FA94 → CJK UNIFIED IDEOGRAPH-6756       # 
+
+2F8DB ;        675E ;  SL      # ( 杞 → 杞 ) CJK COMPATIBILITY IDEOGRAPH-2F8DB → CJK UNIFIED IDEOGRAPH-675E     # 
+
+67FF ; 676E ;  SL      # ( 柿 → 杮 ) CJK UNIFIED IDEOGRAPH-67FF → CJK UNIFIED IDEOGRAPH-676E     # 
+
+F9C8 ; 677B ;  SL      # ( 杻 → 杻 ) CJK COMPATIBILITY IDEOGRAPH-F9C8 → CJK UNIFIED IDEOGRAPH-677B       # 
+
+2F8E0 ;        6785 ;  SL      # ( 枅 → 枅 ) CJK COMPATIBILITY IDEOGRAPH-2F8E0 → CJK UNIFIED IDEOGRAPH-6785     # 
+
+F9F4 ; 6797 ;  SL      # ( 林 → 林 ) CJK COMPATIBILITY IDEOGRAPH-F9F4 → CJK UNIFIED IDEOGRAPH-6797       # 
+
+F9C9 ; 67F3 ;  SL      # ( 柳 → 柳 ) CJK COMPATIBILITY IDEOGRAPH-F9C9 → CJK UNIFIED IDEOGRAPH-67F3       # 
+
+2F8DF ;        67FA ;  SL      # ( 柺 → 柺 ) CJK COMPATIBILITY IDEOGRAPH-2F8DF → CJK UNIFIED IDEOGRAPH-67FA     # 
+
+F9DA ; 6817 ;  SL      # ( 栗 → 栗 ) CJK COMPATIBILITY IDEOGRAPH-F9DA → CJK UNIFIED IDEOGRAPH-6817       # 
+
+2F8E5 ;        681F ;  SL      # ( 栟 → 栟 ) CJK COMPATIBILITY IDEOGRAPH-2F8E5 → CJK UNIFIED IDEOGRAPH-681F     # 
+
+2F8E1 ;        6852 ;  SL      # ( 桒 → 桒 ) CJK COMPATIBILITY IDEOGRAPH-2F8E1 → CJK UNIFIED IDEOGRAPH-6852     # 
+
+F97A ; 6881 ;  SL      # ( 梁 → 梁 ) CJK COMPATIBILITY IDEOGRAPH-F97A → CJK UNIFIED IDEOGRAPH-6881       # 
+
+FA44 ; 6885 ;  SL      # ( 梅 → 梅 ) CJK COMPATIBILITY IDEOGRAPH-FA44 → CJK UNIFIED IDEOGRAPH-6885       # 
+2F8E2 ;        6885 ;  SL      # ( 梅 → 梅 ) CJK COMPATIBILITY IDEOGRAPH-2F8E2 → CJK UNIFIED IDEOGRAPH-6885     # 
+
+2F8E4 ;        688E ;  SL      # ( 梎 → 梎 ) CJK COMPATIBILITY IDEOGRAPH-2F8E4 → CJK UNIFIED IDEOGRAPH-688E     # 
+
+F9E2 ; 68A8 ;  SL      # ( 梨 → 梨 ) CJK COMPATIBILITY IDEOGRAPH-F9E2 → CJK UNIFIED IDEOGRAPH-68A8       # 
+
+2F8E6 ;        6914 ;  SL      # ( 椔 → 椔 ) CJK COMPATIBILITY IDEOGRAPH-2F8E6 → CJK UNIFIED IDEOGRAPH-6914     # 
+
+2F8E8 ;        6942 ;  SL      # ( 楂 → 楂 ) CJK COMPATIBILITY IDEOGRAPH-2F8E8 → CJK UNIFIED IDEOGRAPH-6942     # 
+
+6A27 ; 699D ;  SL      # ( 樧 → 榝 ) CJK UNIFIED IDEOGRAPH-6A27 → CJK UNIFIED IDEOGRAPH-699D     # 
+
+2F8E9 ;        69A3 ;  SL      # ( 榣 → 榣 ) CJK COMPATIBILITY IDEOGRAPH-2F8E9 → CJK UNIFIED IDEOGRAPH-69A3     # 
+
+2F8EA ;        69EA ;  SL      # ( 槪 → 槪 ) CJK COMPATIBILITY IDEOGRAPH-2F8EA → CJK UNIFIED IDEOGRAPH-69EA     # 
+
+F914 ; 6A02 ;  SL      # ( 樂 → 樂 ) CJK COMPATIBILITY IDEOGRAPH-F914 → CJK UNIFIED IDEOGRAPH-6A02       # 
+F95C ; 6A02 ;  SL      # ( 樂 → 樂 ) CJK COMPATIBILITY IDEOGRAPH-F95C → CJK UNIFIED IDEOGRAPH-6A02       # 
+F9BF ; 6A02 ;  SL      # ( 樂 → 樂 ) CJK COMPATIBILITY IDEOGRAPH-F9BF → CJK UNIFIED IDEOGRAPH-6A02       # 
+
+F94C ; 6A13 ;  SL      # ( 樓 → 樓 ) CJK COMPATIBILITY IDEOGRAPH-F94C → CJK UNIFIED IDEOGRAPH-6A13       # 
+
+2F8EB ;        6AA8 ;  SL      # ( 檨 → 檨 ) CJK COMPATIBILITY IDEOGRAPH-2F8EB → CJK UNIFIED IDEOGRAPH-6AA8     # 
+
+F931 ; 6AD3 ;  SL      # ( 櫓 → 櫓 ) CJK COMPATIBILITY IDEOGRAPH-F931 → CJK UNIFIED IDEOGRAPH-6AD3       # 
+
+2F8ED ;        6ADB ;  SL      # ( 櫛 → 櫛 ) CJK COMPATIBILITY IDEOGRAPH-2F8ED → CJK UNIFIED IDEOGRAPH-6ADB     # 
+
+F91D ; 6B04 ;  SL      # ( 欄 → 欄 ) CJK COMPATIBILITY IDEOGRAPH-F91D → CJK UNIFIED IDEOGRAPH-6B04       # 
+
+2F4B ; 6B20 ;  SL      #* ( ⽋ → 欠 ) KANGXI RADICAL LACK → CJK UNIFIED IDEOGRAPH-6B20   # 
+
+2F8EF ;        6B21 ;  SL      # ( 次 → 次 ) CJK COMPATIBILITY IDEOGRAPH-2F8EF → CJK UNIFIED IDEOGRAPH-6B21     # 
+
+2F8F1 ;        6B54 ;  SL      # ( 歔 → 歔 ) CJK COMPATIBILITY IDEOGRAPH-2F8F1 → CJK UNIFIED IDEOGRAPH-6B54     # 
+
+2F4C ; 6B62 ;  SL      #* ( ⽌ → 止 ) KANGXI RADICAL STOP → CJK UNIFIED IDEOGRAPH-6B62   # 
+
+2EED ; 6B6F ;  SL      #* ( ⻭ → 歯 ) CJK RADICAL J-SIMPLIFIED TOOTH → CJK UNIFIED IDEOGRAPH-6B6F        # 
+
+2F8F3 ;        6B72 ;  SL      # ( 歲 → 歲 ) CJK COMPATIBILITY IDEOGRAPH-2F8F3 → CJK UNIFIED IDEOGRAPH-6B72     # 
+
+F98C ; 6B77 ;  SL      # ( 歷 → 歷 ) CJK COMPATIBILITY IDEOGRAPH-F98C → CJK UNIFIED IDEOGRAPH-6B77       # 
+
+FA95 ; 6B79 ;  SL      # ( 歹 → 歹 ) CJK COMPATIBILITY IDEOGRAPH-FA95 → CJK UNIFIED IDEOGRAPH-6B79       # 
+2F4D ; 6B79 ;  SL      #* ( ⽍ → 歹 ) KANGXI RADICAL DEATH → CJK UNIFIED IDEOGRAPH-6B79  # 
+
+2E9E ; 6B7A ;  SL      #* ( ⺞ → 歺 ) CJK RADICAL DEATH → CJK UNIFIED IDEOGRAPH-6B7A     # 
+
+2F8F4 ;        6B9F ;  SL      # ( 殟 → 殟 ) CJK COMPATIBILITY IDEOGRAPH-2F8F4 → CJK UNIFIED IDEOGRAPH-6B9F     # 
+
+F9A5 ; 6BAE ;  SL      # ( 殮 → 殮 ) CJK COMPATIBILITY IDEOGRAPH-F9A5 → CJK UNIFIED IDEOGRAPH-6BAE       # 
+
+2F4E ; 6BB3 ;  SL      #* ( ⽎ → 殳 ) KANGXI RADICAL WEAPON → CJK UNIFIED IDEOGRAPH-6BB3 # 
+
+F970 ; 6BBA ;  SL      # ( 殺 → 殺 ) CJK COMPATIBILITY IDEOGRAPH-F970 → CJK UNIFIED IDEOGRAPH-6BBA       # 
+FA96 ; 6BBA ;  SL      # ( 殺 → 殺 ) CJK COMPATIBILITY IDEOGRAPH-FA96 → CJK UNIFIED IDEOGRAPH-6BBA       # 
+2F8F5 ;        6BBA ;  SL      # ( 殺 → 殺 ) CJK COMPATIBILITY IDEOGRAPH-2F8F5 → CJK UNIFIED IDEOGRAPH-6BBA     # 
+
+2F8F6 ;        6BBB ;  SL      # ( 殻 → 殻 ) CJK COMPATIBILITY IDEOGRAPH-2F8F6 → CJK UNIFIED IDEOGRAPH-6BBB     # 
+
+2F4F ; 6BCB ;  SL      #* ( ⽏ → 毋 ) KANGXI RADICAL DO NOT → CJK UNIFIED IDEOGRAPH-6BCB # 
+
+2E9F ; 6BCD ;  SL      #* ( ⺟ → 母 ) CJK RADICAL MOTHER → CJK UNIFIED IDEOGRAPH-6BCD    # 
+
+2F50 ; 6BD4 ;  SL      #* ( ⽐ → 比 ) KANGXI RADICAL COMPARE → CJK UNIFIED IDEOGRAPH-6BD4        # 
+
+2F51 ; 6BDB ;  SL      #* ( ⽑ → 毛 ) KANGXI RADICAL FUR → CJK UNIFIED IDEOGRAPH-6BDB    # 
+
+2F52 ; 6C0F ;  SL      #* ( ⽒ → 氏 ) KANGXI RADICAL CLAN → CJK UNIFIED IDEOGRAPH-6C0F   # 
+
+2EA0 ; 6C11 ;  SL      #* ( ⺠ → 民 ) CJK RADICAL CIVILIAN → CJK UNIFIED IDEOGRAPH-6C11  # 
+
+2F53 ; 6C14 ;  SL      #* ( ⽓ → 气 ) KANGXI RADICAL STEAM → CJK UNIFIED IDEOGRAPH-6C14  # 
+
+2F54 ; 6C34 ;  SL      #* ( ⽔ → 水 ) KANGXI RADICAL WATER → CJK UNIFIED IDEOGRAPH-6C34  # 
+
+2EA1 ; 6C35 ;  SL      #* ( ⺡ → 氵 ) CJK RADICAL WATER ONE → CJK UNIFIED IDEOGRAPH-6C35 # 
+
+2EA2 ; 6C3A ;  SL      #* ( ⺢ → 氺 ) CJK RADICAL WATER TWO → CJK UNIFIED IDEOGRAPH-6C3A # 
+
+2F8FA ;        6C4E ;  SL      # ( 汎 → 汎 ) CJK COMPATIBILITY IDEOGRAPH-2F8FA → CJK UNIFIED IDEOGRAPH-6C4E     # 
+
+2F8FE ;        6C67 ;  SL      # ( 汧 → 汧 ) CJK COMPATIBILITY IDEOGRAPH-2F8FE → CJK UNIFIED IDEOGRAPH-6C67     # 
+
+F972 ; 6C88 ;  SL      # ( 沈 → 沈 ) CJK COMPATIBILITY IDEOGRAPH-F972 → CJK UNIFIED IDEOGRAPH-6C88       # 
+
+2F8FC ;        6CBF ;  SL      # ( 沿 → 沿 ) CJK COMPATIBILITY IDEOGRAPH-2F8FC → CJK UNIFIED IDEOGRAPH-6CBF     # 
+
+F968 ; 6CCC ;  SL      # ( 泌 → 泌 ) CJK COMPATIBILITY IDEOGRAPH-F968 → CJK UNIFIED IDEOGRAPH-6CCC       # 
+
+2F8FD ;        6CCD ;  SL      # ( 泍 → 泍 ) CJK COMPATIBILITY IDEOGRAPH-2F8FD → CJK UNIFIED IDEOGRAPH-6CCD     # 
+
+F9E3 ; 6CE5 ;  SL      # ( 泥 → 泥 ) CJK COMPATIBILITY IDEOGRAPH-F9E3 → CJK UNIFIED IDEOGRAPH-6CE5       # 
+
+2F8FF ;        6D16 ;  SL      # ( 洖 → 洖 ) CJK COMPATIBILITY IDEOGRAPH-2F8FF → CJK UNIFIED IDEOGRAPH-6D16     # 
+
+F915 ; 6D1B ;  SL      # ( 洛 → 洛 ) CJK COMPATIBILITY IDEOGRAPH-F915 → CJK UNIFIED IDEOGRAPH-6D1B       # 
+
+FA05 ; 6D1E ;  SL      # ( 洞 → 洞 ) CJK COMPATIBILITY IDEOGRAPH-FA05 → CJK UNIFIED IDEOGRAPH-6D1E       # 
+
+2F907 ;        6D34 ;  SL      # ( 洴 → 洴 ) CJK COMPATIBILITY IDEOGRAPH-2F907 → CJK UNIFIED IDEOGRAPH-6D34     # 
+
+2F900 ;        6D3E ;  SL      # ( 派 → 派 ) CJK COMPATIBILITY IDEOGRAPH-2F900 → CJK UNIFIED IDEOGRAPH-6D3E     # 
+
+F9CA ; 6D41 ;  SL      # ( 流 → 流 ) CJK COMPATIBILITY IDEOGRAPH-F9CA → CJK UNIFIED IDEOGRAPH-6D41       # 
+FA97 ; 6D41 ;  SL      # ( 流 → 流 ) CJK COMPATIBILITY IDEOGRAPH-FA97 → CJK UNIFIED IDEOGRAPH-6D41       # 
+2F902 ;        6D41 ;  SL      # ( 流 → 流 ) CJK COMPATIBILITY IDEOGRAPH-2F902 → CJK UNIFIED IDEOGRAPH-6D41     # 
+
+2F903 ;        6D69 ;  SL      # ( 浩 → 浩 ) CJK COMPATIBILITY IDEOGRAPH-2F903 → CJK UNIFIED IDEOGRAPH-6D69     # 
+
+F92A ; 6D6A ;  SL      # ( 浪 → 浪 ) CJK COMPATIBILITY IDEOGRAPH-F92A → CJK UNIFIED IDEOGRAPH-6D6A       # 
+
+FA45 ; 6D77 ;  SL      # ( 海 → 海 ) CJK COMPATIBILITY IDEOGRAPH-FA45 → CJK UNIFIED IDEOGRAPH-6D77       # 
+2F901 ;        6D77 ;  SL      # ( 海 → 海 ) CJK COMPATIBILITY IDEOGRAPH-2F901 → CJK UNIFIED IDEOGRAPH-6D77     # 
+
+2F904 ;        6D78 ;  SL      # ( 浸 → 浸 ) CJK COMPATIBILITY IDEOGRAPH-2F904 → CJK UNIFIED IDEOGRAPH-6D78     # 
+
+2F905 ;        6D85 ;  SL      # ( 涅 → 涅 ) CJK COMPATIBILITY IDEOGRAPH-2F905 → CJK UNIFIED IDEOGRAPH-6D85     # 
+
+F9F5 ; 6DCB ;  SL      # ( 淋 → 淋 ) CJK COMPATIBILITY IDEOGRAPH-F9F5 → CJK UNIFIED IDEOGRAPH-6DCB       # 
+
+F94D ; 6DDA ;  SL      # ( 淚 → 淚 ) CJK COMPATIBILITY IDEOGRAPH-F94D → CJK UNIFIED IDEOGRAPH-6DDA       # 
+
+F9D6 ; 6DEA ;  SL      # ( 淪 → 淪 ) CJK COMPATIBILITY IDEOGRAPH-F9D6 → CJK UNIFIED IDEOGRAPH-6DEA       # 
+
+2F90E ;        6DF9 ;  SL      # ( 淹 → 淹 ) CJK COMPATIBILITY IDEOGRAPH-2F90E → CJK UNIFIED IDEOGRAPH-6DF9     # 
+
+FA46 ; 6E1A ;  SL      # ( 渚 → 渚 ) CJK COMPATIBILITY IDEOGRAPH-FA46 → CJK UNIFIED IDEOGRAPH-6E1A       # 
+
+2F908 ;        6E2F ;  SL      # ( 港 → 港 ) CJK COMPATIBILITY IDEOGRAPH-2F908 → CJK UNIFIED IDEOGRAPH-6E2F     # 
+
+2F909 ;        6E6E ;  SL      # ( 湮 → 湮 ) CJK COMPATIBILITY IDEOGRAPH-2F909 → CJK UNIFIED IDEOGRAPH-6E6E     # 
+
+6F59 ; 6E88 ;  SL      # ( 潙 → 溈 ) CJK UNIFIED IDEOGRAPH-6F59 → CJK UNIFIED IDEOGRAPH-6E88     # 
+
+F9CB ; 6E9C ;  SL      # ( 溜 → 溜 ) CJK COMPATIBILITY IDEOGRAPH-F9CB → CJK UNIFIED IDEOGRAPH-6E9C       # 
+
+F9EC ; 6EBA ;  SL      # ( 溺 → 溺 ) CJK COMPATIBILITY IDEOGRAPH-F9EC → CJK UNIFIED IDEOGRAPH-6EBA       # 
+
+2F90C ;        6EC7 ;  SL      # ( 滇 → 滇 ) CJK COMPATIBILITY IDEOGRAPH-2F90C → CJK UNIFIED IDEOGRAPH-6EC7     # 
+
+FA99 ; 6ECB ;  SL      # ( 滋 → 滋 ) CJK COMPATIBILITY IDEOGRAPH-FA99 → CJK UNIFIED IDEOGRAPH-6ECB       # 
+2F90B ;        6ECB ;  SL      # ( 滋 → 滋 ) CJK COMPATIBILITY IDEOGRAPH-2F90B → CJK UNIFIED IDEOGRAPH-6ECB     # 
+
+F904 ; 6ED1 ;  SL      # ( 滑 → 滑 ) CJK COMPATIBILITY IDEOGRAPH-F904 → CJK UNIFIED IDEOGRAPH-6ED1       # 
+
+FA98 ; 6EDB ;  SL      # ( 滛 → 滛 ) CJK COMPATIBILITY IDEOGRAPH-FA98 → CJK UNIFIED IDEOGRAPH-6EDB       # 
+
+F94E ; 6F0F ;  SL      # ( 漏 → 漏 ) CJK COMPATIBILITY IDEOGRAPH-F94E → CJK UNIFIED IDEOGRAPH-6F0F       # 
+
+FA47 ; 6F22 ;  SL      # ( 漢 → 漢 ) CJK COMPATIBILITY IDEOGRAPH-FA47 → CJK UNIFIED IDEOGRAPH-6F22       # 
+FA9A ; 6F22 ;  SL      # ( 漢 → 漢 ) CJK COMPATIBILITY IDEOGRAPH-FA9A → CJK UNIFIED IDEOGRAPH-6F22       # 
+
+F992 ; 6F23 ;  SL      # ( 漣 → 漣 ) CJK COMPATIBILITY IDEOGRAPH-F992 → CJK UNIFIED IDEOGRAPH-6F23       # 
+
+2F90F ;        6F6E ;  SL      # ( 潮 → 潮 ) CJK COMPATIBILITY IDEOGRAPH-2F90F → CJK UNIFIED IDEOGRAPH-6F6E     # 
+
+2F912 ;        6FC6 ;  SL      # ( 濆 → 濆 ) CJK COMPATIBILITY IDEOGRAPH-2F912 → CJK UNIFIED IDEOGRAPH-6FC6     # 
+
+F922 ; 6FEB ;  SL      # ( 濫 → 濫 ) CJK COMPATIBILITY IDEOGRAPH-F922 → CJK UNIFIED IDEOGRAPH-6FEB       # 
+
+F984 ; 6FFE ;  SL      # ( 濾 → 濾 ) CJK COMPATIBILITY IDEOGRAPH-F984 → CJK UNIFIED IDEOGRAPH-6FFE       # 
+
+2F915 ;        701B ;  SL      # ( 瀛 → 瀛 ) CJK COMPATIBILITY IDEOGRAPH-2F915 → CJK UNIFIED IDEOGRAPH-701B     # 
+
+FA9B ; 701E ;  SL      # ( 瀞 → 瀞 ) CJK COMPATIBILITY IDEOGRAPH-FA9B → CJK UNIFIED IDEOGRAPH-701E       # 
+2F914 ;        701E ;  SL      # ( 瀞 → 瀞 ) CJK COMPATIBILITY IDEOGRAPH-2F914 → CJK UNIFIED IDEOGRAPH-701E     # 
+
+2F913 ;        7039 ;  SL      # ( 瀹 → 瀹 ) CJK COMPATIBILITY IDEOGRAPH-2F913 → CJK UNIFIED IDEOGRAPH-7039     # 
+
+2F917 ;        704A ;  SL      # ( 灊 → 灊 ) CJK COMPATIBILITY IDEOGRAPH-2F917 → CJK UNIFIED IDEOGRAPH-704A     # 
+
+2F55 ; 706B ;  SL      #* ( ⽕ → 火 ) KANGXI RADICAL FIRE → CJK UNIFIED IDEOGRAPH-706B   # 
+
+2EA3 ; 706C ;  SL      #* ( ⺣ → 灬 ) CJK RADICAL FIRE → CJK UNIFIED IDEOGRAPH-706C      # 
+
+2F835 ;        7070 ;  SL      # ( 灰 → 灰 ) CJK COMPATIBILITY IDEOGRAPH-2F835 → CJK UNIFIED IDEOGRAPH-7070     # 
+
+2F919 ;        7077 ;  SL      # ( 灷 → 灷 ) CJK COMPATIBILITY IDEOGRAPH-2F919 → CJK UNIFIED IDEOGRAPH-7077     # 
+
+2F918 ;        707D ;  SL      # ( 災 → 災 ) CJK COMPATIBILITY IDEOGRAPH-2F918 → CJK UNIFIED IDEOGRAPH-707D     # 
+
+F9FB ; 7099 ;  SL      # ( 炙 → 炙 ) CJK COMPATIBILITY IDEOGRAPH-F9FB → CJK UNIFIED IDEOGRAPH-7099       # 
+
+2F91A ;        70AD ;  SL      # ( 炭 → 炭 ) CJK COMPATIBILITY IDEOGRAPH-2F91A → CJK UNIFIED IDEOGRAPH-70AD     # 
+
+F99F ; 70C8 ;  SL      # ( 烈 → 烈 ) CJK COMPATIBILITY IDEOGRAPH-F99F → CJK UNIFIED IDEOGRAPH-70C8       # 
+
+F916 ; 70D9 ;  SL      # ( 烙 → 烙 ) CJK COMPATIBILITY IDEOGRAPH-F916 → CJK UNIFIED IDEOGRAPH-70D9       # 
+
+2F91C ;        7145 ;  SL      # ( 煅 → 煅 ) CJK COMPATIBILITY IDEOGRAPH-2F91C → CJK UNIFIED IDEOGRAPH-7145     # 
+
+F993 ; 7149 ;  SL      # ( 煉 → 煉 ) CJK COMPATIBILITY IDEOGRAPH-F993 → CJK UNIFIED IDEOGRAPH-7149       # 
+
+FA48 ; 716E ;  SL      # ( 煮 → 煮 ) CJK COMPATIBILITY IDEOGRAPH-FA48 → CJK UNIFIED IDEOGRAPH-716E       # 
+FA9C ; 716E ;  SL      # ( 煮 → 煮 ) CJK COMPATIBILITY IDEOGRAPH-FA9C → CJK UNIFIED IDEOGRAPH-716E       # 
+
+2F91E ;        719C ;  SL      # ( 熜 → 熜 ) CJK COMPATIBILITY IDEOGRAPH-2F91E → CJK UNIFIED IDEOGRAPH-719C     # 
+
+F9C0 ; 71CE ;  SL      # ( 燎 → 燎 ) CJK COMPATIBILITY IDEOGRAPH-F9C0 → CJK UNIFIED IDEOGRAPH-71CE       # 
+
+F9EE ; 71D0 ;  SL      # ( 燐 → 燐 ) CJK COMPATIBILITY IDEOGRAPH-F9EE → CJK UNIFIED IDEOGRAPH-71D0       # 
+
+F932 ; 7210 ;  SL      # ( 爐 → 爐 ) CJK COMPATIBILITY IDEOGRAPH-F932 → CJK UNIFIED IDEOGRAPH-7210       # 
+
+F91E ; 721B ;  SL      # ( 爛 → 爛 ) CJK COMPATIBILITY IDEOGRAPH-F91E → CJK UNIFIED IDEOGRAPH-721B       # 
+
+2F920 ;        7228 ;  SL      # ( 爨 → 爨 ) CJK COMPATIBILITY IDEOGRAPH-2F920 → CJK UNIFIED IDEOGRAPH-7228     # 
+
+2F56 ; 722A ;  SL      #* ( ⽖ → 爪 ) KANGXI RADICAL CLAW → CJK UNIFIED IDEOGRAPH-722A   # 
+
+FA49 ; 722B ;  SL      # ( 爫 → 爫 ) CJK COMPATIBILITY IDEOGRAPH-FA49 → CJK UNIFIED IDEOGRAPH-722B       # 
+2EA4 ; 722B ;  SL      #* ( ⺤ → 爫 ) CJK RADICAL PAW ONE → CJK UNIFIED IDEOGRAPH-722B   # 
+
+FA9E ; 7235 ;  SL      # ( 爵 → 爵 ) CJK COMPATIBILITY IDEOGRAPH-FA9E → CJK UNIFIED IDEOGRAPH-7235       # 
+2F921 ;        7235 ;  SL      # ( 爵 → 爵 ) CJK COMPATIBILITY IDEOGRAPH-2F921 → CJK UNIFIED IDEOGRAPH-7235     # 
+
+2F57 ; 7236 ;  SL      #* ( ⽗ → 父 ) KANGXI RADICAL FATHER → CJK UNIFIED IDEOGRAPH-7236 # 
+
+2F58 ; 723B ;  SL      #* ( ⽘ → 爻 ) KANGXI RADICAL DOUBLE X → CJK UNIFIED IDEOGRAPH-723B       # 
+
+2F59 ; 723F ;  SL      #* ( ⽙ → 爿 ) KANGXI RADICAL HALF TREE TRUNK → CJK UNIFIED IDEOGRAPH-723F        # 
+
+2F5A ; 7247 ;  SL      #* ( ⽚ → 片 ) KANGXI RADICAL SLICE → CJK UNIFIED IDEOGRAPH-7247  # 
+
+2F922 ;        7250 ;  SL      # ( 牐 → 牐 ) CJK COMPATIBILITY IDEOGRAPH-2F922 → CJK UNIFIED IDEOGRAPH-7250     # 
+
+2F5B ; 7259 ;  SL      #* ( ⽛ → 牙 ) KANGXI RADICAL FANG → CJK UNIFIED IDEOGRAPH-7259   # 
+
+2F5C ; 725B ;  SL      #* ( ⽜ → 牛 ) KANGXI RADICAL COW → CJK UNIFIED IDEOGRAPH-725B    # 
+
+F946 ; 7262 ;  SL      # ( 牢 → 牢 ) CJK COMPATIBILITY IDEOGRAPH-F946 → CJK UNIFIED IDEOGRAPH-7262       # 
+
+2F924 ;        7280 ;  SL      # ( 犀 → 犀 ) CJK COMPATIBILITY IDEOGRAPH-2F924 → CJK UNIFIED IDEOGRAPH-7280     # 
+
+2F925 ;        7295 ;  SL      # ( 犕 → 犕 ) CJK COMPATIBILITY IDEOGRAPH-2F925 → CJK UNIFIED IDEOGRAPH-7295     # 
+
+2F5D ; 72AC ;  SL      #* ( ⽝ → 犬 ) KANGXI RADICAL DOG → CJK UNIFIED IDEOGRAPH-72AC    # 
+
+2EA8 ; 72AD ;  SL      #* ( ⺨ → 犭 ) CJK RADICAL DOG → CJK UNIFIED IDEOGRAPH-72AD       # 
+
+FA9F ; 72AF ;  SL      # ( 犯 → 犯 ) CJK COMPATIBILITY IDEOGRAPH-FA9F → CJK UNIFIED IDEOGRAPH-72AF       # 
+
+F9FA ; 72C0 ;  SL      # ( 狀 → 狀 ) CJK COMPATIBILITY IDEOGRAPH-F9FA → CJK UNIFIED IDEOGRAPH-72C0       # 
+
+F92B ; 72FC ;  SL      # ( 狼 → 狼 ) CJK COMPATIBILITY IDEOGRAPH-F92B → CJK UNIFIED IDEOGRAPH-72FC       # 
+
+FA16 ; 732A ;  SL      # ( 猪 → 猪 ) CJK COMPATIBILITY IDEOGRAPH-FA16 → CJK UNIFIED IDEOGRAPH-732A       # 
+FAA0 ; 732A ;  SL      # ( 猪 → 猪 ) CJK COMPATIBILITY IDEOGRAPH-FAA0 → CJK UNIFIED IDEOGRAPH-732A       # 
+
+F9A7 ; 7375 ;  SL      # ( 獵 → 獵 ) CJK COMPATIBILITY IDEOGRAPH-F9A7 → CJK UNIFIED IDEOGRAPH-7375       # 
+
+2F928 ;        737A ;  SL      # ( 獺 → 獺 ) CJK COMPATIBILITY IDEOGRAPH-2F928 → CJK UNIFIED IDEOGRAPH-737A     # 
+
+2F5E ; 7384 ;  SL      #* ( ⽞ → 玄 ) KANGXI RADICAL PROFOUND → CJK UNIFIED IDEOGRAPH-7384       # 
+
+F961 ; 7387 ;  SL      # ( 率 → 率 ) CJK COMPATIBILITY IDEOGRAPH-F961 → CJK UNIFIED IDEOGRAPH-7387       # 
+F9DB ; 7387 ;  SL      # ( 率 → 率 ) CJK COMPATIBILITY IDEOGRAPH-F9DB → CJK UNIFIED IDEOGRAPH-7387       # 
+
+2F5F ; 7389 ;  SL      #* ( ⽟ → 玉 ) KANGXI RADICAL JADE → CJK UNIFIED IDEOGRAPH-7389   # 
+
+2F929 ;        738B ;  SL      # ( 王 → 王 ) CJK COMPATIBILITY IDEOGRAPH-2F929 → CJK UNIFIED IDEOGRAPH-738B     # 
+
+2F92B ;        73A5 ;  SL      # ( 玥 → 玥 ) CJK COMPATIBILITY IDEOGRAPH-2F92B → CJK UNIFIED IDEOGRAPH-73A5     # 
+
+F9AD ; 73B2 ;  SL      # ( 玲 → 玲 ) CJK COMPATIBILITY IDEOGRAPH-F9AD → CJK UNIFIED IDEOGRAPH-73B2       # 
+
+F917 ; 73DE ;  SL      # ( 珞 → 珞 ) CJK COMPATIBILITY IDEOGRAPH-F917 → CJK UNIFIED IDEOGRAPH-73DE       # 
+
+F9E4 ; 7406 ;  SL      # ( 理 → 理 ) CJK COMPATIBILITY IDEOGRAPH-F9E4 → CJK UNIFIED IDEOGRAPH-7406       # 
+
+F9CC ; 7409 ;  SL      # ( 琉 → 琉 ) CJK COMPATIBILITY IDEOGRAPH-F9CC → CJK UNIFIED IDEOGRAPH-7409       # 
+
+FA4A ; 7422 ;  SL      # ( 琢 → 琢 ) CJK COMPATIBILITY IDEOGRAPH-FA4A → CJK UNIFIED IDEOGRAPH-7422       # 
+
+2F92E ;        7447 ;  SL      # ( 瑇 → 瑇 ) CJK COMPATIBILITY IDEOGRAPH-2F92E → CJK UNIFIED IDEOGRAPH-7447     # 
+
+2F92F ;        745C ;  SL      # ( 瑜 → 瑜 ) CJK COMPATIBILITY IDEOGRAPH-2F92F → CJK UNIFIED IDEOGRAPH-745C     # 
+
+F9AE ; 7469 ;  SL      # ( 瑩 → 瑩 ) CJK COMPATIBILITY IDEOGRAPH-F9AE → CJK UNIFIED IDEOGRAPH-7469       # 
+
+FAA1 ; 7471 ;  SL      # ( 瑱 → 瑱 ) CJK COMPATIBILITY IDEOGRAPH-FAA1 → CJK UNIFIED IDEOGRAPH-7471       # 
+2F930 ;        7471 ;  SL      # ( 瑱 → 瑱 ) CJK COMPATIBILITY IDEOGRAPH-2F930 → CJK UNIFIED IDEOGRAPH-7471     # 
+
+2F931 ;        7485 ;  SL      # ( 璅 → 璅 ) CJK COMPATIBILITY IDEOGRAPH-2F931 → CJK UNIFIED IDEOGRAPH-7485     # 
+
+F994 ; 7489 ;  SL      # ( 璉 → 璉 ) CJK COMPATIBILITY IDEOGRAPH-F994 → CJK UNIFIED IDEOGRAPH-7489       # 
+
+F9EF ; 7498 ;  SL      # ( 璘 → 璘 ) CJK COMPATIBILITY IDEOGRAPH-F9EF → CJK UNIFIED IDEOGRAPH-7498       # 
+
+2F932 ;        74CA ;  SL      # ( 瓊 → 瓊 ) CJK COMPATIBILITY IDEOGRAPH-2F932 → CJK UNIFIED IDEOGRAPH-74CA     # 
+
+2F60 ; 74DC ;  SL      #* ( ⽠ → 瓜 ) KANGXI RADICAL MELON → CJK UNIFIED IDEOGRAPH-74DC  # 
+
+2F61 ; 74E6 ;  SL      #* ( ⽡ → 瓦 ) KANGXI RADICAL TILE → CJK UNIFIED IDEOGRAPH-74E6   # 
+
+FAA2 ; 7506 ;  SL      # ( 甆 → 甆 ) CJK COMPATIBILITY IDEOGRAPH-FAA2 → CJK UNIFIED IDEOGRAPH-7506       # 
+
+2F62 ; 7518 ;  SL      #* ( ⽢ → 甘 ) KANGXI RADICAL SWEET → CJK UNIFIED IDEOGRAPH-7518  # 
+
+2F63 ; 751F ;  SL      #* ( ⽣ → 生 ) KANGXI RADICAL LIFE → CJK UNIFIED IDEOGRAPH-751F   # 
+
+2F934 ;        7524 ;  SL      # ( 甤 → 甤 ) CJK COMPATIBILITY IDEOGRAPH-2F934 → CJK UNIFIED IDEOGRAPH-7524     # 
+
+2F64 ; 7528 ;  SL      #* ( ⽤ → 用 ) KANGXI RADICAL USE → CJK UNIFIED IDEOGRAPH-7528    # 
+
+2F65 ; 7530 ;  SL      #* ( ⽥ → 田 ) KANGXI RADICAL FIELD → CJK UNIFIED IDEOGRAPH-7530  # 
+
+FAA3 ; 753B ;  SL      # ( 画 → 画 ) CJK COMPATIBILITY IDEOGRAPH-FAA3 → CJK UNIFIED IDEOGRAPH-753B       # 
+
+2F936 ;        753E ;  SL      # ( 甾 → 甾 ) CJK COMPATIBILITY IDEOGRAPH-2F936 → CJK UNIFIED IDEOGRAPH-753E     # 
+
+F9CD ; 7559 ;  SL      # ( 留 → 留 ) CJK COMPATIBILITY IDEOGRAPH-F9CD → CJK UNIFIED IDEOGRAPH-7559       # 
+
+F976 ; 7565 ;  SL      # ( 略 → 略 ) CJK COMPATIBILITY IDEOGRAPH-F976 → CJK UNIFIED IDEOGRAPH-7565       # 
+
+F962 ; 7570 ;  SL      # ( 異 → 異 ) CJK COMPATIBILITY IDEOGRAPH-F962 → CJK UNIFIED IDEOGRAPH-7570       # 
+2F938 ;        7570 ;  SL      # ( 異 → 異 ) CJK COMPATIBILITY IDEOGRAPH-2F938 → CJK UNIFIED IDEOGRAPH-7570     # 
+
+2F66 ; 758B ;  SL      #* ( ⽦ → 疋 ) KANGXI RADICAL BOLT OF CLOTH → CJK UNIFIED IDEOGRAPH-758B  # 
+
+2F67 ; 7592 ;  SL      #* ( ⽧ → 疒 ) KANGXI RADICAL SICKNESS → CJK UNIFIED IDEOGRAPH-7592       # 
+
+F9E5 ; 75E2 ;  SL      # ( 痢 → 痢 ) CJK COMPATIBILITY IDEOGRAPH-F9E5 → CJK UNIFIED IDEOGRAPH-75E2       # 
+
+2F93A ;        7610 ;  SL      # ( 瘐 → 瘐 ) CJK COMPATIBILITY IDEOGRAPH-2F93A → CJK UNIFIED IDEOGRAPH-7610     # 
+
+FAA4 ; 761D ;  SL      # ( 瘝 → 瘝 ) CJK COMPATIBILITY IDEOGRAPH-FAA4 → CJK UNIFIED IDEOGRAPH-761D       # 
+
+FAA5 ; 761F ;  SL      # ( 瘟 → 瘟 ) CJK COMPATIBILITY IDEOGRAPH-FAA5 → CJK UNIFIED IDEOGRAPH-761F       # 
+
+F9C1 ; 7642 ;  SL      # ( 療 → 療 ) CJK COMPATIBILITY IDEOGRAPH-F9C1 → CJK UNIFIED IDEOGRAPH-7642       # 
+
+F90E ; 7669 ;  SL      # ( 癩 → 癩 ) CJK COMPATIBILITY IDEOGRAPH-F90E → CJK UNIFIED IDEOGRAPH-7669       # 
+
+2F68 ; 7676 ;  SL      #* ( ⽨ → 癶 ) KANGXI RADICAL DOTTED TENT → CJK UNIFIED IDEOGRAPH-7676    # 
+
+2F69 ; 767D ;  SL      #* ( ⽩ → 白 ) KANGXI RADICAL WHITE → CJK UNIFIED IDEOGRAPH-767D  # 
+
+2F6A ; 76AE ;  SL      #* ( ⽪ → 皮 ) KANGXI RADICAL SKIN → CJK UNIFIED IDEOGRAPH-76AE   # 
+
+2F6B ; 76BF ;  SL      #* ( ⽫ → 皿 ) KANGXI RADICAL DISH → CJK UNIFIED IDEOGRAPH-76BF   # 
+
+FA17 ; 76CA ;  SL      # ( 益 → 益 ) CJK COMPATIBILITY IDEOGRAPH-FA17 → CJK UNIFIED IDEOGRAPH-76CA       # 
+FAA6 ; 76CA ;  SL      # ( 益 → 益 ) CJK COMPATIBILITY IDEOGRAPH-FAA6 → CJK UNIFIED IDEOGRAPH-76CA       # 
+
+FAA7 ; 76DB ;  SL      # ( 盛 → 盛 ) CJK COMPATIBILITY IDEOGRAPH-FAA7 → CJK UNIFIED IDEOGRAPH-76DB       # 
+
+F933 ; 76E7 ;  SL      # ( 盧 → 盧 ) CJK COMPATIBILITY IDEOGRAPH-F933 → CJK UNIFIED IDEOGRAPH-76E7       # 
+
+2F6C ; 76EE ;  SL      #* ( ⽬ → 目 ) KANGXI RADICAL EYE → CJK UNIFIED IDEOGRAPH-76EE    # 
+
+FAA8 ; 76F4 ;  SL      # ( 直 → 直 ) CJK COMPATIBILITY IDEOGRAPH-FAA8 → CJK UNIFIED IDEOGRAPH-76F4       # 
+2F940 ;        76F4 ;  SL      # ( 直 → 直 ) CJK COMPATIBILITY IDEOGRAPH-2F940 → CJK UNIFIED IDEOGRAPH-76F4     # 
+
+F96D ; 7701 ;  SL      # ( 省 → 省 ) CJK COMPATIBILITY IDEOGRAPH-F96D → CJK UNIFIED IDEOGRAPH-7701       # 
+
+2F945 ;        771E ;  SL      # ( 眞 → 眞 ) CJK COMPATIBILITY IDEOGRAPH-2F945 → CJK UNIFIED IDEOGRAPH-771E     # 
+
+2F946 ;        771F ;  SL      # ( 真 → 真 ) CJK COMPATIBILITY IDEOGRAPH-2F946 → CJK UNIFIED IDEOGRAPH-771F     # 
+2F947 ;        771F ;  SL      # ( 真 → 真 ) CJK COMPATIBILITY IDEOGRAPH-2F947 → CJK UNIFIED IDEOGRAPH-771F     # 
+
+FAAA ; 7740 ;  SL      # ( 着 → 着 ) CJK COMPATIBILITY IDEOGRAPH-FAAA → CJK UNIFIED IDEOGRAPH-7740       # 
+
+FAA9 ; 774A ;  SL      # ( 睊 → 睊 ) CJK COMPATIBILITY IDEOGRAPH-FAA9 → CJK UNIFIED IDEOGRAPH-774A       # 
+2F948 ;        774A ;  SL      # ( 睊 → 睊 ) CJK COMPATIBILITY IDEOGRAPH-2F948 → CJK UNIFIED IDEOGRAPH-774A     # 
+
+2F94A ;        778B ;  SL      # ( 瞋 → 瞋 ) CJK COMPATIBILITY IDEOGRAPH-2F94A → CJK UNIFIED IDEOGRAPH-778B     # 
+
+FA9D ; 77A7 ;  SL      # ( 瞧 → 瞧 ) CJK COMPATIBILITY IDEOGRAPH-FA9D → CJK UNIFIED IDEOGRAPH-77A7       # 
+
+2F6D ; 77DB ;  SL      #* ( ⽭ → 矛 ) KANGXI RADICAL SPEAR → CJK UNIFIED IDEOGRAPH-77DB  # 
+
+2F6E ; 77E2 ;  SL      #* ( ⽮ → 矢 ) KANGXI RADICAL ARROW → CJK UNIFIED IDEOGRAPH-77E2  # 
+
+2F6F ; 77F3 ;  SL      #* ( ⽯ → 石 ) KANGXI RADICAL STONE → CJK UNIFIED IDEOGRAPH-77F3  # 
+
+784F ; 7814 ;  SL      # ( 硏 → 研 ) CJK UNIFIED IDEOGRAPH-784F → CJK UNIFIED IDEOGRAPH-7814     # 
+
+2F94E ;        784E ;  SL      # ( 硎 → 硎 ) CJK COMPATIBILITY IDEOGRAPH-2F94E → CJK UNIFIED IDEOGRAPH-784E     # 
+
+F9CE ; 786B ;  SL      # ( 硫 → 硫 ) CJK COMPATIBILITY IDEOGRAPH-F9CE → CJK UNIFIED IDEOGRAPH-786B       # 
+
+F93B ; 788C ;  SL      # ( 碌 → 碌 ) CJK COMPATIBILITY IDEOGRAPH-F93B → CJK UNIFIED IDEOGRAPH-788C       # 
+2F94F ;        788C ;  SL      # ( 碌 → 碌 ) CJK COMPATIBILITY IDEOGRAPH-2F94F → CJK UNIFIED IDEOGRAPH-788C     # 
+
+FA4B ; 7891 ;  SL      # ( 碑 → 碑 ) CJK COMPATIBILITY IDEOGRAPH-FA4B → CJK UNIFIED IDEOGRAPH-7891       # 
+
+F947 ; 78CA ;  SL      # ( 磊 → 磊 ) CJK COMPATIBILITY IDEOGRAPH-F947 → CJK UNIFIED IDEOGRAPH-78CA       # 
+
+FAAB ; 78CC ;  SL      # ( 磌 → 磌 ) CJK COMPATIBILITY IDEOGRAPH-FAAB → CJK UNIFIED IDEOGRAPH-78CC       # 
+2F950 ;        78CC ;  SL      # ( 磌 → 磌 ) CJK COMPATIBILITY IDEOGRAPH-2F950 → CJK UNIFIED IDEOGRAPH-78CC     # 
+
+F964 ; 78FB ;  SL      # ( 磻 → 磻 ) CJK COMPATIBILITY IDEOGRAPH-F964 → CJK UNIFIED IDEOGRAPH-78FB       # 
+
+F985 ; 792A ;  SL      # ( 礪 → 礪 ) CJK COMPATIBILITY IDEOGRAPH-F985 → CJK UNIFIED IDEOGRAPH-792A       # 
+
+2F70 ; 793A ;  SL      #* ( ⽰ → 示 ) KANGXI RADICAL SPIRIT → CJK UNIFIED IDEOGRAPH-793A # 
+
+2EAD ; 793B ;  SL      #* ( ⺭ → 礻 ) CJK RADICAL SPIRIT TWO → CJK UNIFIED IDEOGRAPH-793B        # 
+
+FA18 ; 793C ;  SL      # ( 礼 → 礼 ) CJK COMPATIBILITY IDEOGRAPH-FA18 → CJK UNIFIED IDEOGRAPH-793C       # 
+
+FA4C ; 793E ;  SL      # ( 社 → 社 ) CJK COMPATIBILITY IDEOGRAPH-FA4C → CJK UNIFIED IDEOGRAPH-793E       # 
+
+FA4E ; 7948 ;  SL      # ( 祈 → 祈 ) CJK COMPATIBILITY IDEOGRAPH-FA4E → CJK UNIFIED IDEOGRAPH-7948       # 
+
+FA4D ; 7949 ;  SL      # ( 祉 → 祉 ) CJK COMPATIBILITY IDEOGRAPH-FA4D → CJK UNIFIED IDEOGRAPH-7949       # 
+
+FA4F ; 7950 ;  SL      # ( 祐 → 祐 ) CJK COMPATIBILITY IDEOGRAPH-FA4F → CJK UNIFIED IDEOGRAPH-7950       # 
+
+FA50 ; 7956 ;  SL      # ( 祖 → 祖 ) CJK COMPATIBILITY IDEOGRAPH-FA50 → CJK UNIFIED IDEOGRAPH-7956       # 
+2F953 ;        7956 ;  SL      # ( 祖 → 祖 ) CJK COMPATIBILITY IDEOGRAPH-2F953 → CJK UNIFIED IDEOGRAPH-7956     # 
+
+FA51 ; 795D ;  SL      # ( 祝 → 祝 ) CJK COMPATIBILITY IDEOGRAPH-FA51 → CJK UNIFIED IDEOGRAPH-795D       # 
+
+FA19 ; 795E ;  SL      # ( 神 → 神 ) CJK COMPATIBILITY IDEOGRAPH-FA19 → CJK UNIFIED IDEOGRAPH-795E       # 
+
+FA1A ; 7965 ;  SL      # ( 祥 → 祥 ) CJK COMPATIBILITY IDEOGRAPH-FA1A → CJK UNIFIED IDEOGRAPH-7965       # 
+
+F93C ; 797F ;  SL      # ( 祿 → 祿 ) CJK COMPATIBILITY IDEOGRAPH-F93C → CJK UNIFIED IDEOGRAPH-797F       # 
+
+FA52 ; 798D ;  SL      # ( 禍 → 禍 ) CJK COMPATIBILITY IDEOGRAPH-FA52 → CJK UNIFIED IDEOGRAPH-798D       # 
+
+FA53 ; 798E ;  SL      # ( 禎 → 禎 ) CJK COMPATIBILITY IDEOGRAPH-FA53 → CJK UNIFIED IDEOGRAPH-798E       # 
+
+FA1B ; 798F ;  SL      # ( 福 → 福 ) CJK COMPATIBILITY IDEOGRAPH-FA1B → CJK UNIFIED IDEOGRAPH-798F       # 
+2F956 ;        798F ;  SL      # ( 福 → 福 ) CJK COMPATIBILITY IDEOGRAPH-2F956 → CJK UNIFIED IDEOGRAPH-798F     # 
+
+F9B6 ; 79AE ;  SL      # ( 禮 → 禮 ) CJK COMPATIBILITY IDEOGRAPH-F9B6 → CJK UNIFIED IDEOGRAPH-79AE       # 
+
+2F71 ; 79B8 ;  SL      #* ( ⽱ → 禸 ) KANGXI RADICAL TRACK → CJK UNIFIED IDEOGRAPH-79B8  # 
+
+2F72 ; 79BE ;  SL      #* ( ⽲ → 禾 ) KANGXI RADICAL GRAIN → CJK UNIFIED IDEOGRAPH-79BE  # 
+
+F995 ; 79CA ;  SL      # ( 秊 → 秊 ) CJK COMPATIBILITY IDEOGRAPH-F995 → CJK UNIFIED IDEOGRAPH-79CA       # 
+
+2F957 ;        79EB ;  SL      # ( 秫 → 秫 ) CJK COMPATIBILITY IDEOGRAPH-2F957 → CJK UNIFIED IDEOGRAPH-79EB     # 
+
+F956 ; 7A1C ;  SL      # ( 稜 → 稜 ) CJK COMPATIBILITY IDEOGRAPH-F956 → CJK UNIFIED IDEOGRAPH-7A1C       # 
+
+FA54 ; 7A40 ;  SL      # ( 穀 → 穀 ) CJK COMPATIBILITY IDEOGRAPH-FA54 → CJK UNIFIED IDEOGRAPH-7A40       # 
+2F959 ;        7A40 ;  SL      # ( 穀 → 穀 ) CJK COMPATIBILITY IDEOGRAPH-2F959 → CJK UNIFIED IDEOGRAPH-7A40     # 
+
+2F95A ;        7A4A ;  SL      # ( 穊 → 穊 ) CJK COMPATIBILITY IDEOGRAPH-2F95A → CJK UNIFIED IDEOGRAPH-7A4A     # 
+
+2F95B ;        7A4F ;  SL      # ( 穏 → 穏 ) CJK COMPATIBILITY IDEOGRAPH-2F95B → CJK UNIFIED IDEOGRAPH-7A4F     # 
+
+2F73 ; 7A74 ;  SL      #* ( ⽳ → 穴 ) KANGXI RADICAL CAVE → CJK UNIFIED IDEOGRAPH-7A74   # 
+
+FA55 ; 7A81 ;  SL      # ( 突 → 突 ) CJK COMPATIBILITY IDEOGRAPH-FA55 → CJK UNIFIED IDEOGRAPH-7A81       # 
+
+FAAC ; 7AB1 ;  SL      # ( 窱 → 窱 ) CJK COMPATIBILITY IDEOGRAPH-FAAC → CJK UNIFIED IDEOGRAPH-7AB1       # 
+
+F9F7 ; 7ACB ;  SL      # ( 立 → 立 ) CJK COMPATIBILITY IDEOGRAPH-F9F7 → CJK UNIFIED IDEOGRAPH-7ACB       # 
+2F74 ; 7ACB ;  SL      #* ( ⽴ → 立 ) KANGXI RADICAL STAND → CJK UNIFIED IDEOGRAPH-7ACB  # 
+
+2EEF ; 7ADC ;  SL      #* ( ⻯ → 竜 ) CJK RADICAL J-SIMPLIFIED DRAGON → CJK UNIFIED IDEOGRAPH-7ADC       # 
+
+2F95F ;        7AEE ;  SL      # ( 竮 → 竮 ) CJK COMPATIBILITY IDEOGRAPH-2F95F → CJK UNIFIED IDEOGRAPH-7AEE     # 
+
+2F75 ; 7AF9 ;  SL      #* ( ⽵ → 竹 ) KANGXI RADICAL BAMBOO → CJK UNIFIED IDEOGRAPH-7AF9 # 
+
+F9F8 ; 7B20 ;  SL      # ( 笠 → 笠 ) CJK COMPATIBILITY IDEOGRAPH-F9F8 → CJK UNIFIED IDEOGRAPH-7B20       # 
+
+FA56 ; 7BC0 ;  SL      # ( 節 → 節 ) CJK COMPATIBILITY IDEOGRAPH-FA56 → CJK UNIFIED IDEOGRAPH-7BC0       # 
+FAAD ; 7BC0 ;  SL      # ( 節 → 節 ) CJK COMPATIBILITY IDEOGRAPH-FAAD → CJK UNIFIED IDEOGRAPH-7BC0       # 
+
+2F962 ;        7BC6 ;  SL      # ( 篆 → 篆 ) CJK COMPATIBILITY IDEOGRAPH-2F962 → CJK UNIFIED IDEOGRAPH-7BC6     # 
+
+2F963 ;        7BC9 ;  SL      # ( 築 → 築 ) CJK COMPATIBILITY IDEOGRAPH-2F963 → CJK UNIFIED IDEOGRAPH-7BC9     # 
+
+F9A6 ; 7C3E ;  SL      # ( 簾 → 簾 ) CJK COMPATIBILITY IDEOGRAPH-F9A6 → CJK UNIFIED IDEOGRAPH-7C3E       # 
+
+F944 ; 7C60 ;  SL      # ( 籠 → 籠 ) CJK COMPATIBILITY IDEOGRAPH-F944 → CJK UNIFIED IDEOGRAPH-7C60       # 
+
+2F76 ; 7C73 ;  SL      #* ( ⽶ → 米 ) KANGXI RADICAL RICE → CJK UNIFIED IDEOGRAPH-7C73   # 
+
+FAAE ; 7C7B ;  SL      # ( 类 → 类 ) CJK COMPATIBILITY IDEOGRAPH-FAAE → CJK UNIFIED IDEOGRAPH-7C7B       # 
+
+F9F9 ; 7C92 ;  SL      # ( 粒 → 粒 ) CJK COMPATIBILITY IDEOGRAPH-F9F9 → CJK UNIFIED IDEOGRAPH-7C92       # 
+
+FA1D ; 7CBE ;  SL      # ( 精 → 精 ) CJK COMPATIBILITY IDEOGRAPH-FA1D → CJK UNIFIED IDEOGRAPH-7CBE       # 
+
+2F966 ;        7CD2 ;  SL      # ( 糒 → 糒 ) CJK COMPATIBILITY IDEOGRAPH-2F966 → CJK UNIFIED IDEOGRAPH-7CD2     # 
+
+FA03 ; 7CD6 ;  SL      # ( 糖 → 糖 ) CJK COMPATIBILITY IDEOGRAPH-FA03 → CJK UNIFIED IDEOGRAPH-7CD6       # 
+
+2F969 ;        7CE3 ;  SL      # ( 糣 → 糣 ) CJK COMPATIBILITY IDEOGRAPH-2F969 → CJK UNIFIED IDEOGRAPH-7CE3     # 
+
+F97B ; 7CE7 ;  SL      # ( 糧 → 糧 ) CJK COMPATIBILITY IDEOGRAPH-F97B → CJK UNIFIED IDEOGRAPH-7CE7       # 
+
+2F968 ;        7CE8 ;  SL      # ( 糨 → 糨 ) CJK COMPATIBILITY IDEOGRAPH-2F968 → CJK UNIFIED IDEOGRAPH-7CE8     # 
+
+2F77 ; 7CF8 ;  SL      #* ( ⽷ → 糸 ) KANGXI RADICAL SILK → CJK UNIFIED IDEOGRAPH-7CF8   # 
+
+2EAF ; 7CF9 ;  SL      #* ( ⺯ → 糹 ) CJK RADICAL SILK → CJK UNIFIED IDEOGRAPH-7CF9      # 
+
+2F96A ;        7D00 ;  SL      # ( 紀 → 紀 ) CJK COMPATIBILITY IDEOGRAPH-2F96A → CJK UNIFIED IDEOGRAPH-7D00     # 
+
+F9CF ; 7D10 ;  SL      # ( 紐 → 紐 ) CJK COMPATIBILITY IDEOGRAPH-F9CF → CJK UNIFIED IDEOGRAPH-7D10       # 
+
+F96A ; 7D22 ;  SL      # ( 索 → 索 ) CJK COMPATIBILITY IDEOGRAPH-F96A → CJK UNIFIED IDEOGRAPH-7D22       # 
+
+F94F ; 7D2F ;  SL      # ( 累 → 累 ) CJK COMPATIBILITY IDEOGRAPH-F94F → CJK UNIFIED IDEOGRAPH-7D2F       # 
+
+7D76 ; 7D55 ;  SL      # ( 絶 → 絕 ) CJK UNIFIED IDEOGRAPH-7D76 → CJK UNIFIED IDEOGRAPH-7D55     # 
+
+FAAF ; 7D5B ;  SL      # ( 絛 → 絛 ) CJK COMPATIBILITY IDEOGRAPH-FAAF → CJK UNIFIED IDEOGRAPH-7D5B       # 
+
+2F96C ;        7D63 ;  SL      # ( 絣 → 絣 ) CJK COMPATIBILITY IDEOGRAPH-2F96C → CJK UNIFIED IDEOGRAPH-7D63     # 
+
+F93D ; 7DA0 ;  SL      # ( 綠 → 綠 ) CJK COMPATIBILITY IDEOGRAPH-F93D → CJK UNIFIED IDEOGRAPH-7DA0       # 
+
+F957 ; 7DBE ;  SL      # ( 綾 → 綾 ) CJK COMPATIBILITY IDEOGRAPH-F957 → CJK UNIFIED IDEOGRAPH-7DBE       # 
+
+2F96E ;        7DC7 ;  SL      # ( 緇 → 緇 ) CJK COMPATIBILITY IDEOGRAPH-2F96E → CJK UNIFIED IDEOGRAPH-7DC7     # 
+
+F996 ; 7DF4 ;  SL      # ( 練 → 練 ) CJK COMPATIBILITY IDEOGRAPH-F996 → CJK UNIFIED IDEOGRAPH-7DF4       # 
+FA57 ; 7DF4 ;  SL      # ( 練 → 練 ) CJK COMPATIBILITY IDEOGRAPH-FA57 → CJK UNIFIED IDEOGRAPH-7DF4       # 
+FAB0 ; 7DF4 ;  SL      # ( 練 → 練 ) CJK COMPATIBILITY IDEOGRAPH-FAB0 → CJK UNIFIED IDEOGRAPH-7DF4       # 
+
+2F96F ;        7E02 ;  SL      # ( 縂 → 縂 ) CJK COMPATIBILITY IDEOGRAPH-2F96F → CJK UNIFIED IDEOGRAPH-7E02     # 
+
+FA58 ; 7E09 ;  SL      # ( 縉 → 縉 ) CJK COMPATIBILITY IDEOGRAPH-FA58 → CJK UNIFIED IDEOGRAPH-7E09       # 
+
+F950 ; 7E37 ;  SL      # ( 縷 → 縷 ) CJK COMPATIBILITY IDEOGRAPH-F950 → CJK UNIFIED IDEOGRAPH-7E37       # 
+
+FA59 ; 7E41 ;  SL      # ( 繁 → 繁 ) CJK COMPATIBILITY IDEOGRAPH-FA59 → CJK UNIFIED IDEOGRAPH-7E41       # 
+
+2F970 ;        7E45 ;  SL      # ( 繅 → 繅 ) CJK COMPATIBILITY IDEOGRAPH-2F970 → CJK UNIFIED IDEOGRAPH-7E45     # 
+
+2F78 ; 7F36 ;  SL      #* ( ⽸ → 缶 ) KANGXI RADICAL JAR → CJK UNIFIED IDEOGRAPH-7F36    # 
+
+FAB1 ; 7F3E ;  SL      # ( 缾 → 缾 ) CJK COMPATIBILITY IDEOGRAPH-FAB1 → CJK UNIFIED IDEOGRAPH-7F3E       # 
+
+2F79 ; 7F51 ;  SL      #* ( ⽹ → 网 ) KANGXI RADICAL NET → CJK UNIFIED IDEOGRAPH-7F51    # 
+
+2EAB ; 7F52 ;  SL      #* ( ⺫ → 罒 ) CJK RADICAL EYE → CJK UNIFIED IDEOGRAPH-7F52       # 
+2EB2 ; 7F52 ;  SL      #* ( ⺲ → 罒 ) CJK RADICAL NET TWO → CJK UNIFIED IDEOGRAPH-7F52   # 
+
+2EB1 ; 7F53 ;  SL      #* ( ⺱ → 罓 ) CJK RADICAL NET ONE → CJK UNIFIED IDEOGRAPH-7F53   # 
+
+FA5A ; 7F72 ;  SL      # ( 署 → 署 ) CJK COMPATIBILITY IDEOGRAPH-FA5A → CJK UNIFIED IDEOGRAPH-7F72       # 
+
+F9E6 ; 7F79 ;  SL      # ( 罹 → 罹 ) CJK COMPATIBILITY IDEOGRAPH-F9E6 → CJK UNIFIED IDEOGRAPH-7F79       # 
+
+2F976 ;        7F7A ;  SL      # ( 罺 → 罺 ) CJK COMPATIBILITY IDEOGRAPH-2F976 → CJK UNIFIED IDEOGRAPH-7F7A     # 
+
+F90F ; 7F85 ;  SL      # ( 羅 → 羅 ) CJK COMPATIBILITY IDEOGRAPH-F90F → CJK UNIFIED IDEOGRAPH-7F85       # 
+
+2F7A ; 7F8A ;  SL      #* ( ⽺ → 羊 ) KANGXI RADICAL SHEEP → CJK UNIFIED IDEOGRAPH-7F8A  # 
+
+2F978 ;        7F95 ;  SL      # ( 羕 → 羕 ) CJK COMPATIBILITY IDEOGRAPH-2F978 → CJK UNIFIED IDEOGRAPH-7F95     # 
+
+F9AF ; 7F9A ;  SL      # ( 羚 → 羚 ) CJK COMPATIBILITY IDEOGRAPH-F9AF → CJK UNIFIED IDEOGRAPH-7F9A       # 
+
+FA1E ; 7FBD ;  SL      # ( 羽 → 羽 ) CJK COMPATIBILITY IDEOGRAPH-FA1E → CJK UNIFIED IDEOGRAPH-7FBD       # 
+2F7B ; 7FBD ;  SL      #* ( ⽻ → 羽 ) KANGXI RADICAL FEATHER → CJK UNIFIED IDEOGRAPH-7FBD        # 
+
+2F979 ;        7FFA ;  SL      # ( 翺 → 翺 ) CJK COMPATIBILITY IDEOGRAPH-2F979 → CJK UNIFIED IDEOGRAPH-7FFA     # 
+
+F934 ; 8001 ;  SL      # ( 老 → 老 ) CJK COMPATIBILITY IDEOGRAPH-F934 → CJK UNIFIED IDEOGRAPH-8001       # 
+2F7C ; 8001 ;  SL      #* ( ⽼ → 老 ) KANGXI RADICAL OLD → CJK UNIFIED IDEOGRAPH-8001    # 
+
+2EB9 ; 8002 ;  SL      #* ( ⺹ → 耂 ) CJK RADICAL OLD → CJK UNIFIED IDEOGRAPH-8002       # 
+
+FA5B ; 8005 ;  SL      # ( 者 → 者 ) CJK COMPATIBILITY IDEOGRAPH-FA5B → CJK UNIFIED IDEOGRAPH-8005       # 
+FAB2 ; 8005 ;  SL      # ( 者 → 者 ) CJK COMPATIBILITY IDEOGRAPH-FAB2 → CJK UNIFIED IDEOGRAPH-8005       # 
+2F97A ;        8005 ;  SL      # ( 者 → 者 ) CJK COMPATIBILITY IDEOGRAPH-2F97A → CJK UNIFIED IDEOGRAPH-8005     # 
+
+2F7D ; 800C ;  SL      #* ( ⽽ → 而 ) KANGXI RADICAL AND → CJK UNIFIED IDEOGRAPH-800C    # 
+
+2F7E ; 8012 ;  SL      #* ( ⽾ → 耒 ) KANGXI RADICAL PLOW → CJK UNIFIED IDEOGRAPH-8012   # 
+
+2F7F ; 8033 ;  SL      #* ( ⽿ → 耳 ) KANGXI RADICAL EAR → CJK UNIFIED IDEOGRAPH-8033    # 
+
+F9B0 ; 8046 ;  SL      # ( 聆 → 聆 ) CJK COMPATIBILITY IDEOGRAPH-F9B0 → CJK UNIFIED IDEOGRAPH-8046       # 
+
+2F97D ;        8060 ;  SL      # ( 聠 → 聠 ) CJK COMPATIBILITY IDEOGRAPH-2F97D → CJK UNIFIED IDEOGRAPH-8060     # 
+
+F997 ; 806F ;  SL      # ( 聯 → 聯 ) CJK COMPATIBILITY IDEOGRAPH-F997 → CJK UNIFIED IDEOGRAPH-806F       # 
+
+2F97F ;        8070 ;  SL      # ( 聰 → 聰 ) CJK COMPATIBILITY IDEOGRAPH-2F97F → CJK UNIFIED IDEOGRAPH-8070     # 
+
+F945 ; 807E ;  SL      # ( 聾 → 聾 ) CJK COMPATIBILITY IDEOGRAPH-F945 → CJK UNIFIED IDEOGRAPH-807E       # 
+
+2F80 ; 807F ;  SL      #* ( ⾀ → 聿 ) KANGXI RADICAL BRUSH → CJK UNIFIED IDEOGRAPH-807F  # 
+
+2EBA ; 8080 ;  SL      #* ( ⺺ → 肀 ) CJK RADICAL BRUSH ONE → CJK UNIFIED IDEOGRAPH-8080 # 
+
+2F81 ; 8089 ;  SL      #* ( ⾁ → 肉 ) KANGXI RADICAL MEAT → CJK UNIFIED IDEOGRAPH-8089   # 
+
+F953 ; 808B ;  SL      # ( 肋 → 肋 ) CJK COMPATIBILITY IDEOGRAPH-F953 → CJK UNIFIED IDEOGRAPH-808B       # 
+
+2F8D6 ;        80AD ;  SL      # ( 肭 → 肭 ) CJK COMPATIBILITY IDEOGRAPH-2F8D6 → CJK UNIFIED IDEOGRAPH-80AD     # 
+
+2F982 ;        80B2 ;  SL      # ( 育 → 育 ) CJK COMPATIBILITY IDEOGRAPH-2F982 → CJK UNIFIED IDEOGRAPH-80B2     # 
+
+8141 ; 80FC ;  SL      # ( 腁 → 胼 ) CJK UNIFIED IDEOGRAPH-8141 → CJK UNIFIED IDEOGRAPH-80FC     # 
+
+2F983 ;        8103 ;  SL      # ( 脃 → 脃 ) CJK COMPATIBILITY IDEOGRAPH-2F983 → CJK UNIFIED IDEOGRAPH-8103     # 
+
+2F985 ;        813E ;  SL      # ( 脾 → 脾 ) CJK COMPATIBILITY IDEOGRAPH-2F985 → CJK UNIFIED IDEOGRAPH-813E     # 
+
+F926 ; 81D8 ;  SL      # ( 臘 → 臘 ) CJK COMPATIBILITY IDEOGRAPH-F926 → CJK UNIFIED IDEOGRAPH-81D8       # 
+
+2F82 ; 81E3 ;  SL      #* ( ⾂ → 臣 ) KANGXI RADICAL MINISTER → CJK UNIFIED IDEOGRAPH-81E3       # 
+
+F9F6 ; 81E8 ;  SL      # ( 臨 → 臨 ) CJK COMPATIBILITY IDEOGRAPH-F9F6 → CJK UNIFIED IDEOGRAPH-81E8       # 
+
+2F83 ; 81EA ;  SL      #* ( ⾃ → 自 ) KANGXI RADICAL SELF → CJK UNIFIED IDEOGRAPH-81EA   # 
+
+FA5C ; 81ED ;  SL      # ( 臭 → 臭 ) CJK COMPATIBILITY IDEOGRAPH-FA5C → CJK UNIFIED IDEOGRAPH-81ED       # 
+
+2F84 ; 81F3 ;  SL      #* ( ⾄ → 至 ) KANGXI RADICAL ARRIVE → CJK UNIFIED IDEOGRAPH-81F3 # 
+
+2F85 ; 81FC ;  SL      #* ( ⾅ → 臼 ) KANGXI RADICAL MORTAR → CJK UNIFIED IDEOGRAPH-81FC # 
+
+2F893 ;        8201 ;  SL      # ( 舁 → 舁 ) CJK COMPATIBILITY IDEOGRAPH-2F893 → CJK UNIFIED IDEOGRAPH-8201     # 
+2F98B ;        8201 ;  SL      # ( 舁 → 舁 ) CJK COMPATIBILITY IDEOGRAPH-2F98B → CJK UNIFIED IDEOGRAPH-8201     # 
+
+2F98C ;        8204 ;  SL      # ( 舄 → 舄 ) CJK COMPATIBILITY IDEOGRAPH-2F98C → CJK UNIFIED IDEOGRAPH-8204     # 
+
+2F86 ; 820C ;  SL      #* ( ⾆ → 舌 ) KANGXI RADICAL TONGUE → CJK UNIFIED IDEOGRAPH-820C # 
+
+FA6D ; 8218 ;  SL      # ( 舘 → 舘 ) CJK COMPATIBILITY IDEOGRAPH-FA6D → CJK UNIFIED IDEOGRAPH-8218       # 
+
+2F87 ; 821B ;  SL      #* ( ⾇ → 舛 ) KANGXI RADICAL OPPOSE → CJK UNIFIED IDEOGRAPH-821B # 
+
+2F88 ; 821F ;  SL      #* ( ⾈ → 舟 ) KANGXI RADICAL BOAT → CJK UNIFIED IDEOGRAPH-821F   # 
+
+2F89 ; 826E ;  SL      #* ( ⾉ → 艮 ) KANGXI RADICAL STOPPING → CJK UNIFIED IDEOGRAPH-826E       # 
+
+F97C ; 826F ;  SL      # ( 良 → 良 ) CJK COMPATIBILITY IDEOGRAPH-F97C → CJK UNIFIED IDEOGRAPH-826F       # 
+
+2F8A ; 8272 ;  SL      #* ( ⾊ → 色 ) KANGXI RADICAL COLOR → CJK UNIFIED IDEOGRAPH-8272  # 
+
+2F8B ; 8278 ;  SL      #* ( ⾋ → 艸 ) KANGXI RADICAL GRASS → CJK UNIFIED IDEOGRAPH-8278  # 
+
+FA5D ; 8279 ;  SL      # ( 艹 → 艹 ) CJK COMPATIBILITY IDEOGRAPH-FA5D → CJK UNIFIED IDEOGRAPH-8279       # 
+FA5E ; 8279 ;  SL      # ( 艹 → 艹 ) CJK COMPATIBILITY IDEOGRAPH-FA5E → CJK UNIFIED IDEOGRAPH-8279       # 
+2EBE ; 8279 ;  SL      #* ( ⺾ → 艹 ) CJK RADICAL GRASS ONE → CJK UNIFIED IDEOGRAPH-8279 # 
+2EBF ; 8279 ;  SL      #* ( ⺿ → 艹 ) CJK RADICAL GRASS TWO → CJK UNIFIED IDEOGRAPH-8279 # →艹→
+2EC0 ; 8279 ;  SL      #* ( ⻀ → 艹 ) CJK RADICAL GRASS THREE → CJK UNIFIED IDEOGRAPH-8279       # →艹→
+
+2F990 ;        828B ;  SL      # ( 芋 → 芋 ) CJK COMPATIBILITY IDEOGRAPH-2F990 → CJK UNIFIED IDEOGRAPH-828B     # 
+
+2F98F ;        8291 ;  SL      # ( 芑 → 芑 ) CJK COMPATIBILITY IDEOGRAPH-2F98F → CJK UNIFIED IDEOGRAPH-8291     # 
+
+2F991 ;        829D ;  SL      # ( 芝 → 芝 ) CJK COMPATIBILITY IDEOGRAPH-2F991 → CJK UNIFIED IDEOGRAPH-829D     # 
+
+2F993 ;        82B1 ;  SL      # ( 花 → 花 ) CJK COMPATIBILITY IDEOGRAPH-2F993 → CJK UNIFIED IDEOGRAPH-82B1     # 
+
+2F994 ;        82B3 ;  SL      # ( 芳 → 芳 ) CJK COMPATIBILITY IDEOGRAPH-2F994 → CJK UNIFIED IDEOGRAPH-82B3     # 
+
+2F995 ;        82BD ;  SL      # ( 芽 → 芽 ) CJK COMPATIBILITY IDEOGRAPH-2F995 → CJK UNIFIED IDEOGRAPH-82BD     # 
+
+F974 ; 82E5 ;  SL      # ( 若 → 若 ) CJK COMPATIBILITY IDEOGRAPH-F974 → CJK UNIFIED IDEOGRAPH-82E5       # 
+2F998 ;        82E5 ;  SL      # ( 若 → 若 ) CJK COMPATIBILITY IDEOGRAPH-2F998 → CJK UNIFIED IDEOGRAPH-82E5     # 
+
+2F996 ;        82E6 ;  SL      # ( 苦 → 苦 ) CJK COMPATIBILITY IDEOGRAPH-2F996 → CJK UNIFIED IDEOGRAPH-82E6     # 
+
+2F999 ;        831D ;  SL      # ( 茝 → 茝 ) CJK COMPATIBILITY IDEOGRAPH-2F999 → CJK UNIFIED IDEOGRAPH-831D     # 
+
+2F99C ;        8323 ;  SL      # ( 茣 → 茣 ) CJK COMPATIBILITY IDEOGRAPH-2F99C → CJK UNIFIED IDEOGRAPH-8323     # 
+
+F9FE ; 8336 ;  SL      # ( 茶 → 茶 ) CJK COMPATIBILITY IDEOGRAPH-F9FE → CJK UNIFIED IDEOGRAPH-8336       # 
+
+FAB3 ; 8352 ;  SL      # ( 荒 → 荒 ) CJK COMPATIBILITY IDEOGRAPH-FAB3 → CJK UNIFIED IDEOGRAPH-8352       # 
+
+2F9A0 ;        8353 ;  SL      # ( 荓 → 荓 ) CJK COMPATIBILITY IDEOGRAPH-2F9A0 → CJK UNIFIED IDEOGRAPH-8353     # 
+
+2F99A ;        8363 ;  SL      # ( 荣 → 荣 ) CJK COMPATIBILITY IDEOGRAPH-2F99A → CJK UNIFIED IDEOGRAPH-8363     # 
+
+2F99B ;        83AD ;  SL      # ( 莭 → 莭 ) CJK COMPATIBILITY IDEOGRAPH-2F99B → CJK UNIFIED IDEOGRAPH-83AD     # 
+
+2F99D ;        83BD ;  SL      # ( 莽 → 莽 ) CJK COMPATIBILITY IDEOGRAPH-2F99D → CJK UNIFIED IDEOGRAPH-83BD     # 
+
+F93E ; 83C9 ;  SL      # ( 菉 → 菉 ) CJK COMPATIBILITY IDEOGRAPH-F93E → CJK UNIFIED IDEOGRAPH-83C9       # 
+
+2F9A1 ;        83CA ;  SL      # ( 菊 → 菊 ) CJK COMPATIBILITY IDEOGRAPH-2F9A1 → CJK UNIFIED IDEOGRAPH-83CA     # 
+
+2F9A2 ;        83CC ;  SL      # ( 菌 → 菌 ) CJK COMPATIBILITY IDEOGRAPH-2F9A2 → CJK UNIFIED IDEOGRAPH-83CC     # 
+
+2F9A3 ;        83DC ;  SL      # ( 菜 → 菜 ) CJK COMPATIBILITY IDEOGRAPH-2F9A3 → CJK UNIFIED IDEOGRAPH-83DC     # 
+
+2F99E ;        83E7 ;  SL      # ( 菧 → 菧 ) CJK COMPATIBILITY IDEOGRAPH-2F99E → CJK UNIFIED IDEOGRAPH-83E7     # 
+
+FAB4 ; 83EF ;  SL      # ( 華 → 華 ) CJK COMPATIBILITY IDEOGRAPH-FAB4 → CJK UNIFIED IDEOGRAPH-83EF       # 
+
+F958 ; 83F1 ;  SL      # ( 菱 → 菱 ) CJK COMPATIBILITY IDEOGRAPH-F958 → CJK UNIFIED IDEOGRAPH-83F1       # 
+
+F918 ; 843D ;  SL      # ( 落 → 落 ) CJK COMPATIBILITY IDEOGRAPH-F918 → CJK UNIFIED IDEOGRAPH-843D       # 
+
+F96E ; 8449 ;  SL      # ( 葉 → 葉 ) CJK COMPATIBILITY IDEOGRAPH-F96E → CJK UNIFIED IDEOGRAPH-8449       # 
+
+FA5F ; 8457 ;  SL      # ( 著 → 著 ) CJK COMPATIBILITY IDEOGRAPH-FA5F → CJK UNIFIED IDEOGRAPH-8457       # 
+2F99F ;        8457 ;  SL      # ( 著 → 著 ) CJK COMPATIBILITY IDEOGRAPH-2F99F → CJK UNIFIED IDEOGRAPH-8457     # 
+
+853F ; 848D ;  SL      # ( 蔿 → 蒍 ) CJK UNIFIED IDEOGRAPH-853F → CJK UNIFIED IDEOGRAPH-848D     # 
+
+F999 ; 84EE ;  SL      # ( 蓮 → 蓮 ) CJK COMPATIBILITY IDEOGRAPH-F999 → CJK UNIFIED IDEOGRAPH-84EE       # 
+
+2F9A8 ;        84F1 ;  SL      # ( 蓱 → 蓱 ) CJK COMPATIBILITY IDEOGRAPH-2F9A8 → CJK UNIFIED IDEOGRAPH-84F1     # 
+
+2F9A9 ;        84F3 ;  SL      # ( 蓳 → 蓳 ) CJK COMPATIBILITY IDEOGRAPH-2F9A9 → CJK UNIFIED IDEOGRAPH-84F3     # 
+
+F9C2 ; 84FC ;  SL      # ( 蓼 → 蓼 ) CJK COMPATIBILITY IDEOGRAPH-F9C2 → CJK UNIFIED IDEOGRAPH-84FC       # 
+
+2F9AA ;        8516 ;  SL      # ( 蔖 → 蔖 ) CJK COMPATIBILITY IDEOGRAPH-2F9AA → CJK UNIFIED IDEOGRAPH-8516     # 
+
+2F9AC ;        8564 ;  SL      # ( 蕤 → 蕤 ) CJK COMPATIBILITY IDEOGRAPH-2F9AC → CJK UNIFIED IDEOGRAPH-8564     # 
+
+F923 ; 85CD ;  SL      # ( 藍 → 藍 ) CJK COMPATIBILITY IDEOGRAPH-F923 → CJK UNIFIED IDEOGRAPH-85CD       # 
+
+F9F0 ; 85FA ;  SL      # ( 藺 → 藺 ) CJK COMPATIBILITY IDEOGRAPH-F9F0 → CJK UNIFIED IDEOGRAPH-85FA       # 
+
+F935 ; 8606 ;  SL      # ( 蘆 → 蘆 ) CJK COMPATIBILITY IDEOGRAPH-F935 → CJK UNIFIED IDEOGRAPH-8606       # 
+
+FA20 ; 8612 ;  SL      # ( 蘒 → 蘒 ) CJK COMPATIBILITY IDEOGRAPH-FA20 → CJK UNIFIED IDEOGRAPH-8612       # 
+
+F91F ; 862D ;  SL      # ( 蘭 → 蘭 ) CJK COMPATIBILITY IDEOGRAPH-F91F → CJK UNIFIED IDEOGRAPH-862D       # 
+
+8641 ; 8637 ;  SL      # ( 虁 → 蘷 ) CJK UNIFIED IDEOGRAPH-8641 → CJK UNIFIED IDEOGRAPH-8637     # 
+
+F910 ; 863F ;  SL      # ( 蘿 → 蘿 ) CJK COMPATIBILITY IDEOGRAPH-F910 → CJK UNIFIED IDEOGRAPH-863F       # 
+
+2F8C ; 864D ;  SL      #* ( ⾌ → 虍 ) KANGXI RADICAL TIGER → CJK UNIFIED IDEOGRAPH-864D  # 
+
+2EC1 ; 864E ;  SL      #* ( ⻁ → 虎 ) CJK RADICAL TIGER → CJK UNIFIED IDEOGRAPH-864E     # 
+
+2F9B3 ;        8650 ;  SL      # ( 虐 → 虐 ) CJK COMPATIBILITY IDEOGRAPH-2F9B3 → CJK UNIFIED IDEOGRAPH-8650     # 
+
+F936 ; 865C ;  SL      # ( 虜 → 虜 ) CJK COMPATIBILITY IDEOGRAPH-F936 → CJK UNIFIED IDEOGRAPH-865C       # 
+2F9B4 ;        865C ;  SL      # ( 虜 → 虜 ) CJK COMPATIBILITY IDEOGRAPH-2F9B4 → CJK UNIFIED IDEOGRAPH-865C     # 
+
+2F9B5 ;        8667 ;  SL      # ( 虧 → 虧 ) CJK COMPATIBILITY IDEOGRAPH-2F9B5 → CJK UNIFIED IDEOGRAPH-8667     # 
+
+2F9B6 ;        8669 ;  SL      # ( 虩 → 虩 ) CJK COMPATIBILITY IDEOGRAPH-2F9B6 → CJK UNIFIED IDEOGRAPH-8669     # 
+
+2F8D ; 866B ;  SL      #* ( ⾍ → 虫 ) KANGXI RADICAL INSECT → CJK UNIFIED IDEOGRAPH-866B # 
+
+2F9B8 ;        8688 ;  SL      # ( 蚈 → 蚈 ) CJK COMPATIBILITY IDEOGRAPH-2F9B8 → CJK UNIFIED IDEOGRAPH-8688     # 
+
+2F9B7 ;        86A9 ;  SL      # ( 蚩 → 蚩 ) CJK COMPATIBILITY IDEOGRAPH-2F9B7 → CJK UNIFIED IDEOGRAPH-86A9     # 
+
+2F9BA ;        86E2 ;  SL      # ( 蛢 → 蛢 ) CJK COMPATIBILITY IDEOGRAPH-2F9BA → CJK UNIFIED IDEOGRAPH-86E2     # 
+
+2F9B9 ;        870E ;  SL      # ( 蜎 → 蜎 ) CJK COMPATIBILITY IDEOGRAPH-2F9B9 → CJK UNIFIED IDEOGRAPH-870E     # 
+
+2F9BC ;        8728 ;  SL      # ( 蜨 → 蜨 ) CJK COMPATIBILITY IDEOGRAPH-2F9BC → CJK UNIFIED IDEOGRAPH-8728     # 
+
+2F9BD ;        876B ;  SL      # ( 蝫 → 蝫 ) CJK COMPATIBILITY IDEOGRAPH-2F9BD → CJK UNIFIED IDEOGRAPH-876B     # 
+
+FAB5 ; 8779 ;  SL      # ( 蝹 → 蝹 ) CJK COMPATIBILITY IDEOGRAPH-FAB5 → CJK UNIFIED IDEOGRAPH-8779       # 
+2F9BB ;        8779 ;  SL      # ( 蝹 → 蝹 ) CJK COMPATIBILITY IDEOGRAPH-2F9BB → CJK UNIFIED IDEOGRAPH-8779     # 
+
+2F9BE ;        8786 ;  SL      # ( 螆 → 螆 ) CJK COMPATIBILITY IDEOGRAPH-2F9BE → CJK UNIFIED IDEOGRAPH-8786     # 
+
+F911 ; 87BA ;  SL      # ( 螺 → 螺 ) CJK COMPATIBILITY IDEOGRAPH-F911 → CJK UNIFIED IDEOGRAPH-87BA       # 
+
+2F9C0 ;        87E1 ;  SL      # ( 蟡 → 蟡 ) CJK COMPATIBILITY IDEOGRAPH-2F9C0 → CJK UNIFIED IDEOGRAPH-87E1     # 
+
+2F9C1 ;        8801 ;  SL      # ( 蠁 → 蠁 ) CJK COMPATIBILITY IDEOGRAPH-2F9C1 → CJK UNIFIED IDEOGRAPH-8801     # 
+
+F927 ; 881F ;  SL      # ( 蠟 → 蠟 ) CJK COMPATIBILITY IDEOGRAPH-F927 → CJK UNIFIED IDEOGRAPH-881F       # 
+
+2F8E ; 8840 ;  SL      #* ( ⾎ → 血 ) KANGXI RADICAL BLOOD → CJK UNIFIED IDEOGRAPH-8840  # 
+
+FA08 ; 884C ;  SL      # ( 行 → 行 ) CJK COMPATIBILITY IDEOGRAPH-FA08 → CJK UNIFIED IDEOGRAPH-884C       # 
+2F8F ; 884C ;  SL      #* ( ⾏ → 行 ) KANGXI RADICAL WALK ENCLOSURE → CJK UNIFIED IDEOGRAPH-884C # 
+
+2F9C3 ;        8860 ;  SL      # ( 衠 → 衠 ) CJK COMPATIBILITY IDEOGRAPH-2F9C3 → CJK UNIFIED IDEOGRAPH-8860     # 
+
+2F9C4 ;        8863 ;  SL      # ( 衣 → 衣 ) CJK COMPATIBILITY IDEOGRAPH-2F9C4 → CJK UNIFIED IDEOGRAPH-8863     # 
+2F90 ; 8863 ;  SL      #* ( ⾐ → 衣 ) KANGXI RADICAL CLOTHES → CJK UNIFIED IDEOGRAPH-8863        # 
+
+2EC2 ; 8864 ;  SL      #* ( ⻂ → 衤 ) CJK RADICAL CLOTHES → CJK UNIFIED IDEOGRAPH-8864   # 
+
+F9A0 ; 88C2 ;  SL      # ( 裂 → 裂 ) CJK COMPATIBILITY IDEOGRAPH-F9A0 → CJK UNIFIED IDEOGRAPH-88C2       # 
+
+F9E7 ; 88CF ;  SL      # ( 裏 → 裏 ) CJK COMPATIBILITY IDEOGRAPH-F9E7 → CJK UNIFIED IDEOGRAPH-88CF       # 
+
+2F9C6 ;        88D7 ;  SL      # ( 裗 → 裗 ) CJK COMPATIBILITY IDEOGRAPH-2F9C6 → CJK UNIFIED IDEOGRAPH-88D7     # 
+
+2F9C7 ;        88DE ;  SL      # ( 裞 → 裞 ) CJK COMPATIBILITY IDEOGRAPH-2F9C7 → CJK UNIFIED IDEOGRAPH-88DE     # 
+
+F9E8 ; 88E1 ;  SL      # ( 裡 → 裡 ) CJK COMPATIBILITY IDEOGRAPH-F9E8 → CJK UNIFIED IDEOGRAPH-88E1       # 
+
+F912 ; 88F8 ;  SL      # ( 裸 → 裸 ) CJK COMPATIBILITY IDEOGRAPH-F912 → CJK UNIFIED IDEOGRAPH-88F8       # 
+
+2F9C9 ;        88FA ;  SL      # ( 裺 → 裺 ) CJK COMPATIBILITY IDEOGRAPH-2F9C9 → CJK UNIFIED IDEOGRAPH-88FA     # 
+
+FA60 ; 8910 ;  SL      # ( 褐 → 褐 ) CJK COMPATIBILITY IDEOGRAPH-FA60 → CJK UNIFIED IDEOGRAPH-8910       # 
+
+FAB6 ; 8941 ;  SL      # ( 襁 → 襁 ) CJK COMPATIBILITY IDEOGRAPH-FAB6 → CJK UNIFIED IDEOGRAPH-8941       # 
+
+F924 ; 8964 ;  SL      # ( 襤 → 襤 ) CJK COMPATIBILITY IDEOGRAPH-F924 → CJK UNIFIED IDEOGRAPH-8964       # 
+
+2F91 ; 897E ;  SL      #* ( ⾑ → 襾 ) KANGXI RADICAL WEST → CJK UNIFIED IDEOGRAPH-897E   # 
+
+2EC4 ; 897F ;  SL      #* ( ⻄ → 西 ) CJK RADICAL WEST TWO → CJK UNIFIED IDEOGRAPH-897F  # 
+
+2EC3 ; 8980 ;  SL      #* ( ⻃ → 覀 ) CJK RADICAL WEST ONE → CJK UNIFIED IDEOGRAPH-8980  # 
+
+FAB7 ; 8986 ;  SL      # ( 覆 → 覆 ) CJK COMPATIBILITY IDEOGRAPH-FAB7 → CJK UNIFIED IDEOGRAPH-8986       # 
+
+FA0A ; 898B ;  SL      # ( 見 → 見 ) CJK COMPATIBILITY IDEOGRAPH-FA0A → CJK UNIFIED IDEOGRAPH-898B       # 
+2F92 ; 898B ;  SL      #* ( ⾒ → 見 ) KANGXI RADICAL SEE → CJK UNIFIED IDEOGRAPH-898B    # 
+
+FA61 ; 8996 ;  SL      # ( 視 → 視 ) CJK COMPATIBILITY IDEOGRAPH-FA61 → CJK UNIFIED IDEOGRAPH-8996       # 
+FAB8 ; 8996 ;  SL      # ( 視 → 視 ) CJK COMPATIBILITY IDEOGRAPH-FAB8 → CJK UNIFIED IDEOGRAPH-8996       # 
+
+2EC5 ; 89C1 ;  SL      #* ( ⻅ → 见 ) CJK RADICAL C-SIMPLIFIED SEE → CJK UNIFIED IDEOGRAPH-89C1  # 
+
+2F93 ; 89D2 ;  SL      #* ( ⾓ → 角 ) KANGXI RADICAL HORN → CJK UNIFIED IDEOGRAPH-89D2   # 
+
+2F94 ; 8A00 ;  SL      #* ( ⾔ → 言 ) KANGXI RADICAL SPEECH → CJK UNIFIED IDEOGRAPH-8A00 # 
+
+8A7D ; 8A2E ;  SL      # ( 詽 → 訮 ) CJK UNIFIED IDEOGRAPH-8A7D → CJK UNIFIED IDEOGRAPH-8A2E     # 
+
+2F9CF ;        8AA0 ;  SL      # ( 誠 → 誠 ) CJK COMPATIBILITY IDEOGRAPH-2F9CF → CJK UNIFIED IDEOGRAPH-8AA0     # 
+
+F96F ; 8AAA ;  SL      # ( 說 → 說 ) CJK COMPATIBILITY IDEOGRAPH-F96F → CJK UNIFIED IDEOGRAPH-8AAA       # 
+F9A1 ; 8AAA ;  SL      # ( 說 → 說 ) CJK COMPATIBILITY IDEOGRAPH-F9A1 → CJK UNIFIED IDEOGRAPH-8AAA       # 
+
+FAB9 ; 8ABF ;  SL      # ( 調 → 調 ) CJK COMPATIBILITY IDEOGRAPH-FAB9 → CJK UNIFIED IDEOGRAPH-8ABF       # 
+
+FABB ; 8ACB ;  SL      # ( 請 → 請 ) CJK COMPATIBILITY IDEOGRAPH-FABB → CJK UNIFIED IDEOGRAPH-8ACB       # 
+
+F97D ; 8AD2 ;  SL      # ( 諒 → 諒 ) CJK COMPATIBILITY IDEOGRAPH-F97D → CJK UNIFIED IDEOGRAPH-8AD2       # 
+
+F941 ; 8AD6 ;  SL      # ( 論 → 論 ) CJK COMPATIBILITY IDEOGRAPH-F941 → CJK UNIFIED IDEOGRAPH-8AD6       # 
+
+FABE ; 8AED ;  SL      # ( 諭 → 諭 ) CJK COMPATIBILITY IDEOGRAPH-FABE → CJK UNIFIED IDEOGRAPH-8AED       # 
+2F9D0 ;        8AED ;  SL      # ( 諭 → 諭 ) CJK COMPATIBILITY IDEOGRAPH-2F9D0 → CJK UNIFIED IDEOGRAPH-8AED     # 
+
+FA22 ; 8AF8 ;  SL      # ( 諸 → 諸 ) CJK COMPATIBILITY IDEOGRAPH-FA22 → CJK UNIFIED IDEOGRAPH-8AF8       # 
+FABA ; 8AF8 ;  SL      # ( 諸 → 諸 ) CJK COMPATIBILITY IDEOGRAPH-FABA → CJK UNIFIED IDEOGRAPH-8AF8       # 
+
+F95D ; 8AFE ;  SL      # ( 諾 → 諾 ) CJK COMPATIBILITY IDEOGRAPH-F95D → CJK UNIFIED IDEOGRAPH-8AFE       # 
+FABD ; 8AFE ;  SL      # ( 諾 → 諾 ) CJK COMPATIBILITY IDEOGRAPH-FABD → CJK UNIFIED IDEOGRAPH-8AFE       # 
+
+FA62 ; 8B01 ;  SL      # ( 謁 → 謁 ) CJK COMPATIBILITY IDEOGRAPH-FA62 → CJK UNIFIED IDEOGRAPH-8B01       # 
+FABC ; 8B01 ;  SL      # ( 謁 → 謁 ) CJK COMPATIBILITY IDEOGRAPH-FABC → CJK UNIFIED IDEOGRAPH-8B01       # 
+
+FA63 ; 8B39 ;  SL      # ( 謹 → 謹 ) CJK COMPATIBILITY IDEOGRAPH-FA63 → CJK UNIFIED IDEOGRAPH-8B39       # 
+FABF ; 8B39 ;  SL      # ( 謹 → 謹 ) CJK COMPATIBILITY IDEOGRAPH-FABF → CJK UNIFIED IDEOGRAPH-8B39       # 
+
+F9FC ; 8B58 ;  SL      # ( 識 → 識 ) CJK COMPATIBILITY IDEOGRAPH-F9FC → CJK UNIFIED IDEOGRAPH-8B58       # 
+
+F95A ; 8B80 ;  SL      # ( 讀 → 讀 ) CJK COMPATIBILITY IDEOGRAPH-F95A → CJK UNIFIED IDEOGRAPH-8B80       # 
+
+8B8F ; 8B86 ;  SL      # ( 讏 → 讆 ) CJK UNIFIED IDEOGRAPH-8B8F → CJK UNIFIED IDEOGRAPH-8B86     # 
+
+FAC0 ; 8B8A ;  SL      # ( 變 → 變 ) CJK COMPATIBILITY IDEOGRAPH-FAC0 → CJK UNIFIED IDEOGRAPH-8B8A       # 
+2F9D1 ;        8B8A ;  SL      # ( 變 → 變 ) CJK COMPATIBILITY IDEOGRAPH-2F9D1 → CJK UNIFIED IDEOGRAPH-8B8A     # 
+
+2EC8 ; 8BA0 ;  SL      #* ( ⻈ → 讠 ) CJK RADICAL C-SIMPLIFIED SPEECH → CJK UNIFIED IDEOGRAPH-8BA0       # 
+
+2F95 ; 8C37 ;  SL      #* ( ⾕ → 谷 ) KANGXI RADICAL VALLEY → CJK UNIFIED IDEOGRAPH-8C37 # 
+
+2F96 ; 8C46 ;  SL      #* ( ⾖ → 豆 ) KANGXI RADICAL BEAN → CJK UNIFIED IDEOGRAPH-8C46   # 
+
+F900 ; 8C48 ;  SL      # ( 豈 → 豈 ) CJK COMPATIBILITY IDEOGRAPH-F900 → CJK UNIFIED IDEOGRAPH-8C48       # 
+
+2F9D2 ;        8C55 ;  SL      # ( 豕 → 豕 ) CJK COMPATIBILITY IDEOGRAPH-2F9D2 → CJK UNIFIED IDEOGRAPH-8C55     # 
+2F97 ; 8C55 ;  SL      #* ( ⾗ → 豕 ) KANGXI RADICAL PIG → CJK UNIFIED IDEOGRAPH-8C55    # 
+
+8C63 ; 8C5C ;  SL      # ( 豣 → 豜 ) CJK UNIFIED IDEOGRAPH-8C63 → CJK UNIFIED IDEOGRAPH-8C5C     # 
+
+2F98 ; 8C78 ;  SL      #* ( ⾘ → 豸 ) KANGXI RADICAL BADGER → CJK UNIFIED IDEOGRAPH-8C78 # 
+
+2F99 ; 8C9D ;  SL      #* ( ⾙ → 貝 ) KANGXI RADICAL SHELL → CJK UNIFIED IDEOGRAPH-8C9D  # 
+
+2F9D4 ;        8CAB ;  SL      # ( 貫 → 貫 ) CJK COMPATIBILITY IDEOGRAPH-2F9D4 → CJK UNIFIED IDEOGRAPH-8CAB     # 
+
+2F9D5 ;        8CC1 ;  SL      # ( 賁 → 賁 ) CJK COMPATIBILITY IDEOGRAPH-2F9D5 → CJK UNIFIED IDEOGRAPH-8CC1     # 
+
+F948 ; 8CC2 ;  SL      # ( 賂 → 賂 ) CJK COMPATIBILITY IDEOGRAPH-F948 → CJK UNIFIED IDEOGRAPH-8CC2       # 
+
+F903 ; 8CC8 ;  SL      # ( 賈 → 賈 ) CJK COMPATIBILITY IDEOGRAPH-F903 → CJK UNIFIED IDEOGRAPH-8CC8       # 
+
+FA64 ; 8CD3 ;  SL      # ( 賓 → 賓 ) CJK COMPATIBILITY IDEOGRAPH-FA64 → CJK UNIFIED IDEOGRAPH-8CD3       # 
+
+FA65 ; 8D08 ;  SL      # ( 贈 → 贈 ) CJK COMPATIBILITY IDEOGRAPH-FA65 → CJK UNIFIED IDEOGRAPH-8D08       # 
+FAC1 ; 8D08 ;  SL      # ( 贈 → 贈 ) CJK COMPATIBILITY IDEOGRAPH-FAC1 → CJK UNIFIED IDEOGRAPH-8D08       # 
+
+2F9D6 ;        8D1B ;  SL      # ( 贛 → 贛 ) CJK COMPATIBILITY IDEOGRAPH-2F9D6 → CJK UNIFIED IDEOGRAPH-8D1B     # 
+
+2EC9 ; 8D1D ;  SL      #* ( ⻉ → 贝 ) CJK RADICAL C-SIMPLIFIED SHELL → CJK UNIFIED IDEOGRAPH-8D1D        # 
+
+2F9A ; 8D64 ;  SL      #* ( ⾚ → 赤 ) KANGXI RADICAL RED → CJK UNIFIED IDEOGRAPH-8D64    # 
+
+2F9B ; 8D70 ;  SL      #* ( ⾛ → 走 ) KANGXI RADICAL RUN → CJK UNIFIED IDEOGRAPH-8D70    # 
+
+2F9D7 ;        8D77 ;  SL      # ( 起 → 起 ) CJK COMPATIBILITY IDEOGRAPH-2F9D7 → CJK UNIFIED IDEOGRAPH-8D77     # 
+
+8D86 ; 8D7F ;  SL      # ( 趆 → 赿 ) CJK UNIFIED IDEOGRAPH-8D86 → CJK UNIFIED IDEOGRAPH-8D7F     # 
+
+2F9C ; 8DB3 ;  SL      #* ( ⾜ → 足 ) KANGXI RADICAL FOOT → CJK UNIFIED IDEOGRAPH-8DB3   # 
+
+2F9DB ;        8DBC ;  SL      # ( 趼 → 趼 ) CJK COMPATIBILITY IDEOGRAPH-2F9DB → CJK UNIFIED IDEOGRAPH-8DBC     # 
+
+2F9DA ;        8DCB ;  SL      # ( 跋 → 跋 ) CJK COMPATIBILITY IDEOGRAPH-2F9DA → CJK UNIFIED IDEOGRAPH-8DCB     # 
+
+8DFA ; 8DE5 ;  SL      # ( 跺 → 跥 ) CJK UNIFIED IDEOGRAPH-8DFA → CJK UNIFIED IDEOGRAPH-8DE5     # 
+
+F937 ; 8DEF ;  SL      # ( 路 → 路 ) CJK COMPATIBILITY IDEOGRAPH-F937 → CJK UNIFIED IDEOGRAPH-8DEF       # 
+
+2F9DC ;        8DF0 ;  SL      # ( 跰 → 跰 ) CJK COMPATIBILITY IDEOGRAPH-2F9DC → CJK UNIFIED IDEOGRAPH-8DF0     # 
+
+8E9B ; 8E97 ;  SL      # ( 躛 → 躗 ) CJK UNIFIED IDEOGRAPH-8E9B → CJK UNIFIED IDEOGRAPH-8E97     # 
+
+2F9D ; 8EAB ;  SL      #* ( ⾝ → 身 ) KANGXI RADICAL BODY → CJK UNIFIED IDEOGRAPH-8EAB   # 
+
+F902 ; 8ECA ;  SL      # ( 車 → 車 ) CJK COMPATIBILITY IDEOGRAPH-F902 → CJK UNIFIED IDEOGRAPH-8ECA       # 
+2F9E ; 8ECA ;  SL      #* ( ⾞ → 車 ) KANGXI RADICAL CART → CJK UNIFIED IDEOGRAPH-8ECA   # 
+
+2F9DE ;        8ED4 ;  SL      # ( 軔 → 軔 ) CJK COMPATIBILITY IDEOGRAPH-2F9DE → CJK UNIFIED IDEOGRAPH-8ED4     # 
+
+8F27 ; 8EFF ;  SL      # ( 輧 → 軿 ) CJK UNIFIED IDEOGRAPH-8F27 → CJK UNIFIED IDEOGRAPH-8EFF     # 
+
+F998 ; 8F26 ;  SL      # ( 輦 → 輦 ) CJK COMPATIBILITY IDEOGRAPH-F998 → CJK UNIFIED IDEOGRAPH-8F26       # 
+
+F9D7 ; 8F2A ;  SL      # ( 輪 → 輪 ) CJK COMPATIBILITY IDEOGRAPH-F9D7 → CJK UNIFIED IDEOGRAPH-8F2A       # 
+
+FAC2 ; 8F38 ;  SL      # ( 輸 → 輸 ) CJK COMPATIBILITY IDEOGRAPH-FAC2 → CJK UNIFIED IDEOGRAPH-8F38       # 
+2F9DF ;        8F38 ;  SL      # ( 輸 → 輸 ) CJK COMPATIBILITY IDEOGRAPH-2F9DF → CJK UNIFIED IDEOGRAPH-8F38     # 
+
+FA07 ; 8F3B ;  SL      # ( 輻 → 輻 ) CJK COMPATIBILITY IDEOGRAPH-FA07 → CJK UNIFIED IDEOGRAPH-8F3B       # 
+
+F98D ; 8F62 ;  SL      # ( 轢 → 轢 ) CJK COMPATIBILITY IDEOGRAPH-F98D → CJK UNIFIED IDEOGRAPH-8F62       # 
+
+2ECB ; 8F66 ;  SL      #* ( ⻋ → 车 ) CJK RADICAL C-SIMPLIFIED CART → CJK UNIFIED IDEOGRAPH-8F66 # 
+
+2F9F ; 8F9B ;  SL      #* ( ⾟ → 辛 ) KANGXI RADICAL BITTER → CJK UNIFIED IDEOGRAPH-8F9B # 
+
+2F98D ;        8F9E ;  SL      # ( 辞 → 辞 ) CJK COMPATIBILITY IDEOGRAPH-2F98D → CJK UNIFIED IDEOGRAPH-8F9E     # 
+
+F971 ; 8FB0 ;  SL      # ( 辰 → 辰 ) CJK COMPATIBILITY IDEOGRAPH-F971 → CJK UNIFIED IDEOGRAPH-8FB0       # 
+2FA0 ; 8FB0 ;  SL      #* ( ⾠ → 辰 ) KANGXI RADICAL MORNING → CJK UNIFIED IDEOGRAPH-8FB0        # 
+
+2FA1 ; 8FB5 ;  SL      #* ( ⾡ → 辵 ) KANGXI RADICAL WALK → CJK UNIFIED IDEOGRAPH-8FB5   # 
+
+FA66 ; 8FB6 ;  SL      # ( 辶 → 辶 ) CJK COMPATIBILITY IDEOGRAPH-FA66 → CJK UNIFIED IDEOGRAPH-8FB6       # 
+2ECC ; 8FB6 ;  SL      #* ( ⻌ → 辶 ) CJK RADICAL SIMPLIFIED WALK → CJK UNIFIED IDEOGRAPH-8FB6   # 
+2ECD ; 8FB6 ;  SL      #* ( ⻍ → 辶 ) CJK RADICAL WALK ONE → CJK UNIFIED IDEOGRAPH-8FB6  # 
+
+F99A ; 9023 ;  SL      # ( 連 → 連 ) CJK COMPATIBILITY IDEOGRAPH-F99A → CJK UNIFIED IDEOGRAPH-9023       # 
+
+FA25 ; 9038 ;  SL      # ( 逸 → 逸 ) CJK COMPATIBILITY IDEOGRAPH-FA25 → CJK UNIFIED IDEOGRAPH-9038       # 
+FA67 ; 9038 ;  SL      # ( 逸 → 逸 ) CJK COMPATIBILITY IDEOGRAPH-FA67 → CJK UNIFIED IDEOGRAPH-9038       # 
+
+FAC3 ; 9072 ;  SL      # ( 遲 → 遲 ) CJK COMPATIBILITY IDEOGRAPH-FAC3 → CJK UNIFIED IDEOGRAPH-9072       # 
+
+F9C3 ; 907C ;  SL      # ( 遼 → 遼 ) CJK COMPATIBILITY IDEOGRAPH-F9C3 → CJK UNIFIED IDEOGRAPH-907C       # 
+
+F913 ; 908F ;  SL      # ( 邏 → 邏 ) CJK COMPATIBILITY IDEOGRAPH-F913 → CJK UNIFIED IDEOGRAPH-908F       # 
+
+2FA2 ; 9091 ;  SL      #* ( ⾢ → 邑 ) KANGXI RADICAL CITY → CJK UNIFIED IDEOGRAPH-9091   # 
+
+2F9E2 ;        9094 ;  SL      # ( 邔 → 邔 ) CJK COMPATIBILITY IDEOGRAPH-2F9E2 → CJK UNIFIED IDEOGRAPH-9094     # 
+
+F92C ; 90CE ;  SL      # ( 郎 → 郎 ) CJK COMPATIBILITY IDEOGRAPH-F92C → CJK UNIFIED IDEOGRAPH-90CE       # 
+90DE ; 90CE ;  SL      # ( 郞 → 郎 ) CJK UNIFIED IDEOGRAPH-90DE → CJK UNIFIED IDEOGRAPH-90CE     # →郎→
+
+2F9E3 ;        90F1 ;  SL      # ( 郱 → 郱 ) CJK COMPATIBILITY IDEOGRAPH-2F9E3 → CJK UNIFIED IDEOGRAPH-90F1     # 
+
+FA26 ; 90FD ;  SL      # ( 都 → 都 ) CJK COMPATIBILITY IDEOGRAPH-FA26 → CJK UNIFIED IDEOGRAPH-90FD       # 
+
+2F9E4 ;        9111 ;  SL      # ( 鄑 → 鄑 ) CJK COMPATIBILITY IDEOGRAPH-2F9E4 → CJK UNIFIED IDEOGRAPH-9111     # 
+
+2F9E6 ;        911B ;  SL      # ( 鄛 → 鄛 ) CJK COMPATIBILITY IDEOGRAPH-2F9E6 → CJK UNIFIED IDEOGRAPH-911B     # 
+
+2FA3 ; 9149 ;  SL      #* ( ⾣ → 酉 ) KANGXI RADICAL WINE → CJK UNIFIED IDEOGRAPH-9149   # 
+
+F919 ; 916A ;  SL      # ( 酪 → 酪 ) CJK COMPATIBILITY IDEOGRAPH-F919 → CJK UNIFIED IDEOGRAPH-916A       # 
+
+FAC4 ; 9199 ;  SL      # ( 醙 → 醙 ) CJK COMPATIBILITY IDEOGRAPH-FAC4 → CJK UNIFIED IDEOGRAPH-9199       # 
+
+F9B7 ; 91B4 ;  SL      # ( 醴 → 醴 ) CJK COMPATIBILITY IDEOGRAPH-F9B7 → CJK UNIFIED IDEOGRAPH-91B4       # 
+
+2FA4 ; 91C6 ;  SL      #* ( ⾤ → 釆 ) KANGXI RADICAL DISTINGUISH → CJK UNIFIED IDEOGRAPH-91C6    # 
+
+F9E9 ; 91CC ;  SL      # ( 里 → 里 ) CJK COMPATIBILITY IDEOGRAPH-F9E9 → CJK UNIFIED IDEOGRAPH-91CC       # 
+2FA5 ; 91CC ;  SL      #* ( ⾥ → 里 ) KANGXI RADICAL VILLAGE → CJK UNIFIED IDEOGRAPH-91CC        # 
+
+F97E ; 91CF ;  SL      # ( 量 → 量 ) CJK COMPATIBILITY IDEOGRAPH-F97E → CJK UNIFIED IDEOGRAPH-91CF       # 
+
+F90A ; 91D1 ;  SL      # ( 金 → 金 ) CJK COMPATIBILITY IDEOGRAPH-F90A → CJK UNIFIED IDEOGRAPH-91D1       # 
+2FA6 ; 91D1 ;  SL      #* ( ⾦ → 金 ) KANGXI RADICAL GOLD → CJK UNIFIED IDEOGRAPH-91D1   # 
+
+F9B1 ; 9234 ;  SL      # ( 鈴 → 鈴 ) CJK COMPATIBILITY IDEOGRAPH-F9B1 → CJK UNIFIED IDEOGRAPH-9234       # 
+
+2F9E7 ;        9238 ;  SL      # ( 鈸 → 鈸 ) CJK COMPATIBILITY IDEOGRAPH-2F9E7 → CJK UNIFIED IDEOGRAPH-9238     # 
+
+FAC5 ; 9276 ;  SL      # ( 鉶 → 鉶 ) CJK COMPATIBILITY IDEOGRAPH-FAC5 → CJK UNIFIED IDEOGRAPH-9276       # 
+
+2F9EA ;        927C ;  SL      # ( 鉼 → 鉼 ) CJK COMPATIBILITY IDEOGRAPH-2F9EA → CJK UNIFIED IDEOGRAPH-927C     # 
+
+2F9E8 ;        92D7 ;  SL      # ( 鋗 → 鋗 ) CJK COMPATIBILITY IDEOGRAPH-2F9E8 → CJK UNIFIED IDEOGRAPH-92D7     # 
+
+2F9E9 ;        92D8 ;  SL      # ( 鋘 → 鋘 ) CJK COMPATIBILITY IDEOGRAPH-2F9E9 → CJK UNIFIED IDEOGRAPH-92D8     # 
+
+F93F ; 9304 ;  SL      # ( 錄 → 錄 ) CJK COMPATIBILITY IDEOGRAPH-F93F → CJK UNIFIED IDEOGRAPH-9304       # 
+
+F99B ; 934A ;  SL      # ( 鍊 → 鍊 ) CJK COMPATIBILITY IDEOGRAPH-F99B → CJK UNIFIED IDEOGRAPH-934A       # 
+
+93AE ; 93AD ;  SL      # ( 鎮 → 鎭 ) CJK UNIFIED IDEOGRAPH-93AE → CJK UNIFIED IDEOGRAPH-93AD     # 
+
+2F9EB ;        93F9 ;  SL      # ( 鏹 → 鏹 ) CJK COMPATIBILITY IDEOGRAPH-2F9EB → CJK UNIFIED IDEOGRAPH-93F9     # 
+
+2F9EC ;        9415 ;  SL      # ( 鐕 → 鐕 ) CJK COMPATIBILITY IDEOGRAPH-2F9EC → CJK UNIFIED IDEOGRAPH-9415     # 
+
+2ED0 ; 9485 ;  SL      #* ( ⻐ → 钅 ) CJK RADICAL C-SIMPLIFIED GOLD → CJK UNIFIED IDEOGRAPH-9485 # 
+
+2ED1 ; 9577 ;  SL      #* ( ⻑ → 長 ) CJK RADICAL LONG ONE → CJK UNIFIED IDEOGRAPH-9577  # 
+2FA7 ; 9577 ;  SL      #* ( ⾧ → 長 ) KANGXI RADICAL LONG → CJK UNIFIED IDEOGRAPH-9577   # 
+
+2ED2 ; 9578 ;  SL      #* ( ⻒ → 镸 ) CJK RADICAL LONG TWO → CJK UNIFIED IDEOGRAPH-9578  # 
+
+2ED3 ; 957F ;  SL      #* ( ⻓ → 长 ) CJK RADICAL C-SIMPLIFIED LONG → CJK UNIFIED IDEOGRAPH-957F # 
+
+2FA8 ; 9580 ;  SL      #* ( ⾨ → 門 ) KANGXI RADICAL GATE → CJK UNIFIED IDEOGRAPH-9580   # 
+
+2F9EE ;        958B ;  SL      # ( 開 → 開 ) CJK COMPATIBILITY IDEOGRAPH-2F9EE → CJK UNIFIED IDEOGRAPH-958B     # 
+
+F986 ; 95AD ;  SL      # ( 閭 → 閭 ) CJK COMPATIBILITY IDEOGRAPH-F986 → CJK UNIFIED IDEOGRAPH-95AD       # 
+
+2F9F0 ;        95B7 ;  SL      # ( 閷 → 閷 ) CJK COMPATIBILITY IDEOGRAPH-2F9F0 → CJK UNIFIED IDEOGRAPH-95B7     # 
+
+2ED4 ; 95E8 ;  SL      #* ( ⻔ → 门 ) CJK RADICAL C-SIMPLIFIED GATE → CJK UNIFIED IDEOGRAPH-95E8 # 
+
+2FA9 ; 961C ;  SL      #* ( ⾩ → 阜 ) KANGXI RADICAL MOUND → CJK UNIFIED IDEOGRAPH-961C  # 
+
+2ECF ; 961D ;  SL      #* ( ⻏ → 阝 ) CJK RADICAL CITY → CJK UNIFIED IDEOGRAPH-961D      # 
+2ED6 ; 961D ;  SL      #* ( ⻖ → 阝 ) CJK RADICAL MOUND TWO → CJK UNIFIED IDEOGRAPH-961D # 
+
+F9C6 ; 962E ;  SL      # ( 阮 → 阮 ) CJK COMPATIBILITY IDEOGRAPH-F9C6 → CJK UNIFIED IDEOGRAPH-962E       # 
+
+F951 ; 964B ;  SL      # ( 陋 → 陋 ) CJK COMPATIBILITY IDEOGRAPH-F951 → CJK UNIFIED IDEOGRAPH-964B       # 
+
+FA09 ; 964D ;  SL      # ( 降 → 降 ) CJK COMPATIBILITY IDEOGRAPH-FA09 → CJK UNIFIED IDEOGRAPH-964D       # 
+
+F959 ; 9675 ;  SL      # ( 陵 → 陵 ) CJK COMPATIBILITY IDEOGRAPH-F959 → CJK UNIFIED IDEOGRAPH-9675       # 
+
+F9D3 ; 9678 ;  SL      # ( 陸 → 陸 ) CJK COMPATIBILITY IDEOGRAPH-F9D3 → CJK UNIFIED IDEOGRAPH-9678       # 
+
+FAC6 ; 967C ;  SL      # ( 陼 → 陼 ) CJK COMPATIBILITY IDEOGRAPH-FAC6 → CJK UNIFIED IDEOGRAPH-967C       # 
+
+F9DC ; 9686 ;  SL      # ( 隆 → 隆 ) CJK COMPATIBILITY IDEOGRAPH-F9DC → CJK UNIFIED IDEOGRAPH-9686       # 
+
+F9F1 ; 96A3 ;  SL      # ( 隣 → 隣 ) CJK COMPATIBILITY IDEOGRAPH-F9F1 → CJK UNIFIED IDEOGRAPH-96A3       # 
+
+2FAA ; 96B6 ;  SL      #* ( ⾪ → 隶 ) KANGXI RADICAL SLAVE → CJK UNIFIED IDEOGRAPH-96B6  # 
+
+96B8 ; 96B7 ;  SL      # ( 隸 → 隷 ) CJK UNIFIED IDEOGRAPH-96B8 → CJK UNIFIED IDEOGRAPH-96B7     # →隸→
+F9B8 ; 96B7 ;  SL      # ( 隸 → 隷 ) CJK COMPATIBILITY IDEOGRAPH-F9B8 → CJK UNIFIED IDEOGRAPH-96B7       # 
+
+2FAB ; 96B9 ;  SL      #* ( ⾫ → 隹 ) KANGXI RADICAL SHORT TAILED BIRD → CJK UNIFIED IDEOGRAPH-96B9      # 
+
+2F9F3 ;        96C3 ;  SL      # ( 雃 → 雃 ) CJK COMPATIBILITY IDEOGRAPH-2F9F3 → CJK UNIFIED IDEOGRAPH-96C3     # 
+
+F9EA ; 96E2 ;  SL      # ( 離 → 離 ) CJK COMPATIBILITY IDEOGRAPH-F9EA → CJK UNIFIED IDEOGRAPH-96E2       # 
+
+FA68 ; 96E3 ;  SL      # ( 難 → 難 ) CJK COMPATIBILITY IDEOGRAPH-FA68 → CJK UNIFIED IDEOGRAPH-96E3       # 
+FAC7 ; 96E3 ;  SL      # ( 難 → 難 ) CJK COMPATIBILITY IDEOGRAPH-FAC7 → CJK UNIFIED IDEOGRAPH-96E3       # 
+
+2FAC ; 96E8 ;  SL      #* ( ⾬ → 雨 ) KANGXI RADICAL RAIN → CJK UNIFIED IDEOGRAPH-96E8   # 
+
+F9B2 ; 96F6 ;  SL      # ( 零 → 零 ) CJK COMPATIBILITY IDEOGRAPH-F9B2 → CJK UNIFIED IDEOGRAPH-96F6       # 
+
+F949 ; 96F7 ;  SL      # ( 雷 → 雷 ) CJK COMPATIBILITY IDEOGRAPH-F949 → CJK UNIFIED IDEOGRAPH-96F7       # 
+
+2F9F5 ;        9723 ;  SL      # ( 霣 → 霣 ) CJK COMPATIBILITY IDEOGRAPH-2F9F5 → CJK UNIFIED IDEOGRAPH-9723     # 
+
+F938 ; 9732 ;  SL      # ( 露 → 露 ) CJK COMPATIBILITY IDEOGRAPH-F938 → CJK UNIFIED IDEOGRAPH-9732       # 
+
+F9B3 ; 9748 ;  SL      # ( 靈 → 靈 ) CJK COMPATIBILITY IDEOGRAPH-F9B3 → CJK UNIFIED IDEOGRAPH-9748       # 
+
+2FAD ; 9751 ;  SL      #* ( ⾭ → 靑 ) KANGXI RADICAL BLUE → CJK UNIFIED IDEOGRAPH-9751   # 
+
+2ED8 ; 9752 ;  SL      #* ( ⻘ → 青 ) CJK RADICAL BLUE → CJK UNIFIED IDEOGRAPH-9752      # 
+
+FA1C ; 9756 ;  SL      # ( 靖 → 靖 ) CJK COMPATIBILITY IDEOGRAPH-FA1C → CJK UNIFIED IDEOGRAPH-9756       # 
+FAC8 ; 9756 ;  SL      # ( 靖 → 靖 ) CJK COMPATIBILITY IDEOGRAPH-FAC8 → CJK UNIFIED IDEOGRAPH-9756       # 
+
+2FAE ; 975E ;  SL      #* ( ⾮ → 非 ) KANGXI RADICAL WRONG → CJK UNIFIED IDEOGRAPH-975E  # 
+
+2FAF ; 9762 ;  SL      #* ( ⾯ → 面 ) KANGXI RADICAL FACE → CJK UNIFIED IDEOGRAPH-9762   # 
+
+2FB0 ; 9769 ;  SL      #* ( ⾰ → 革 ) KANGXI RADICAL LEATHER → CJK UNIFIED IDEOGRAPH-9769        # 
+
+2FB1 ; 97CB ;  SL      #* ( ⾱ → 韋 ) KANGXI RADICAL TANNED LEATHER → CJK UNIFIED IDEOGRAPH-97CB # 
+
+FAC9 ; 97DB ;  SL      # ( 韛 → 韛 ) CJK COMPATIBILITY IDEOGRAPH-FAC9 → CJK UNIFIED IDEOGRAPH-97DB       # 
+
+2F9FA ;        97E0 ;  SL      # ( 韠 → 韠 ) CJK COMPATIBILITY IDEOGRAPH-2F9FA → CJK UNIFIED IDEOGRAPH-97E0     # 
+
+2ED9 ; 97E6 ;  SL      #* ( ⻙ → 韦 ) CJK RADICAL C-SIMPLIFIED TANNED LEATHER → CJK UNIFIED IDEOGRAPH-97E6       # 
+
+2FB2 ; 97ED ;  SL      #* ( ⾲ → 韭 ) KANGXI RADICAL LEEK → CJK UNIFIED IDEOGRAPH-97ED   # 
+
+2FB3 ; 97F3 ;  SL      #* ( ⾳ → 音 ) KANGXI RADICAL SOUND → CJK UNIFIED IDEOGRAPH-97F3  # 
+
+FA69 ; 97FF ;  SL      # ( 響 → 響 ) CJK COMPATIBILITY IDEOGRAPH-FA69 → CJK UNIFIED IDEOGRAPH-97FF       # 
+FACA ; 97FF ;  SL      # ( 響 → 響 ) CJK COMPATIBILITY IDEOGRAPH-FACA → CJK UNIFIED IDEOGRAPH-97FF       # 
+
+2FB4 ; 9801 ;  SL      #* ( ⾴ → 頁 ) KANGXI RADICAL LEAF → CJK UNIFIED IDEOGRAPH-9801   # 
+
+FACB ; 980B ;  SL      # ( 頋 → 頋 ) CJK COMPATIBILITY IDEOGRAPH-FACB → CJK UNIFIED IDEOGRAPH-980B       # 
+2F9FE ;        980B ;  SL      # ( 頋 → 頋 ) CJK COMPATIBILITY IDEOGRAPH-2F9FE → CJK UNIFIED IDEOGRAPH-980B     # 
+2F9FF ;        980B ;  SL      # ( 頋 → 頋 ) CJK COMPATIBILITY IDEOGRAPH-2F9FF → CJK UNIFIED IDEOGRAPH-980B     # 
+
+F9B4 ; 9818 ;  SL      # ( 領 → 領 ) CJK COMPATIBILITY IDEOGRAPH-F9B4 → CJK UNIFIED IDEOGRAPH-9818       # 
+
+2FA00 ;        9829 ;  SL      # ( 頩 → 頩 ) CJK COMPATIBILITY IDEOGRAPH-2FA00 → CJK UNIFIED IDEOGRAPH-9829     # 
+
+FA6A ; 983B ;  SL      # ( 頻 → 頻 ) CJK COMPATIBILITY IDEOGRAPH-FA6A → CJK UNIFIED IDEOGRAPH-983B       # 
+FACC ; 983B ;  SL      # ( 頻 → 頻 ) CJK COMPATIBILITY IDEOGRAPH-FACC → CJK UNIFIED IDEOGRAPH-983B       # 
+
+F9D0 ; 985E ;  SL      # ( 類 → 類 ) CJK COMPATIBILITY IDEOGRAPH-F9D0 → CJK UNIFIED IDEOGRAPH-985E       # 
+
+2EDA ; 9875 ;  SL      #* ( ⻚ → 页 ) CJK RADICAL C-SIMPLIFIED LEAF → CJK UNIFIED IDEOGRAPH-9875 # 
+
+2FB5 ; 98A8 ;  SL      #* ( ⾵ → 風 ) KANGXI RADICAL WIND → CJK UNIFIED IDEOGRAPH-98A8   # 
+
+2EDB ; 98CE ;  SL      #* ( ⻛ → 风 ) CJK RADICAL C-SIMPLIFIED WIND → CJK UNIFIED IDEOGRAPH-98CE # 
+
+2FB6 ; 98DB ;  SL      #* ( ⾶ → 飛 ) KANGXI RADICAL FLY → CJK UNIFIED IDEOGRAPH-98DB    # 
+
+2EDC ; 98DE ;  SL      #* ( ⻜ → 飞 ) CJK RADICAL C-SIMPLIFIED FLY → CJK UNIFIED IDEOGRAPH-98DE  # 
+
+2EDD ; 98DF ;  SL      #* ( ⻝ → 食 ) CJK RADICAL EAT ONE → CJK UNIFIED IDEOGRAPH-98DF   # 
+2FB7 ; 98DF ;  SL      #* ( ⾷ → 食 ) KANGXI RADICAL EAT → CJK UNIFIED IDEOGRAPH-98DF    # 
+
+2EDF ; 98E0 ;  SL      #* ( ⻟ → 飠 ) CJK RADICAL EAT THREE → CJK UNIFIED IDEOGRAPH-98E0 # 
+
+2FA02 ;        98E2 ;  SL      # ( 飢 → 飢 ) CJK COMPATIBILITY IDEOGRAPH-2FA02 → CJK UNIFIED IDEOGRAPH-98E2     # 
+
+FA2A ; 98EF ;  SL      # ( 飯 → 飯 ) CJK COMPATIBILITY IDEOGRAPH-FA2A → CJK UNIFIED IDEOGRAPH-98EF       # 
+
+FA2B ; 98FC ;  SL      # ( 飼 → 飼 ) CJK COMPATIBILITY IDEOGRAPH-FA2B → CJK UNIFIED IDEOGRAPH-98FC       # 
+
+FA2C ; 9928 ;  SL      # ( 館 → 館 ) CJK COMPATIBILITY IDEOGRAPH-FA2C → CJK UNIFIED IDEOGRAPH-9928       # 
+
+2FA04 ;        9929 ;  SL      # ( 餩 → 餩 ) CJK COMPATIBILITY IDEOGRAPH-2FA04 → CJK UNIFIED IDEOGRAPH-9929     # 
+
+2EE0 ; 9963 ;  SL      #* ( ⻠ → 饣 ) CJK RADICAL C-SIMPLIFIED EAT → CJK UNIFIED IDEOGRAPH-9963  # 
+
+2FB8 ; 9996 ;  SL      #* ( ⾸ → 首 ) KANGXI RADICAL HEAD → CJK UNIFIED IDEOGRAPH-9996   # 
+
+2FB9 ; 9999 ;  SL      #* ( ⾹ → 香 ) KANGXI RADICAL FRAGRANT → CJK UNIFIED IDEOGRAPH-9999       # 
+
+2FA05 ;        99A7 ;  SL      # ( 馧 → 馧 ) CJK COMPATIBILITY IDEOGRAPH-2FA05 → CJK UNIFIED IDEOGRAPH-99A7     # 
+
+2FBA ; 99AC ;  SL      #* ( ⾺ → 馬 ) KANGXI RADICAL HORSE → CJK UNIFIED IDEOGRAPH-99AC  # 
+
+2FA06 ;        99C2 ;  SL      # ( 駂 → 駂 ) CJK COMPATIBILITY IDEOGRAPH-2FA06 → CJK UNIFIED IDEOGRAPH-99C2     # 
+
+F91A ; 99F1 ;  SL      # ( 駱 → 駱 ) CJK COMPATIBILITY IDEOGRAPH-F91A → CJK UNIFIED IDEOGRAPH-99F1       # 
+
+2FA07 ;        99FE ;  SL      # ( 駾 → 駾 ) CJK COMPATIBILITY IDEOGRAPH-2FA07 → CJK UNIFIED IDEOGRAPH-99FE     # 
+
+F987 ; 9A6A ;  SL      # ( 驪 → 驪 ) CJK COMPATIBILITY IDEOGRAPH-F987 → CJK UNIFIED IDEOGRAPH-9A6A       # 
+
+2EE2 ; 9A6C ;  SL      #* ( ⻢ → 马 ) CJK RADICAL C-SIMPLIFIED HORSE → CJK UNIFIED IDEOGRAPH-9A6C        # 
+
+2FBB ; 9AA8 ;  SL      #* ( ⾻ → 骨 ) KANGXI RADICAL BONE → CJK UNIFIED IDEOGRAPH-9AA8   # 
+
+2FBC ; 9AD8 ;  SL      #* ( ⾼ → 高 ) KANGXI RADICAL TALL → CJK UNIFIED IDEOGRAPH-9AD8   # 
+
+2FBD ; 9ADF ;  SL      #* ( ⾽ → 髟 ) KANGXI RADICAL HAIR → CJK UNIFIED IDEOGRAPH-9ADF   # 
+
+FACD ; 9B12 ;  SL      # ( 鬒 → 鬒 ) CJK COMPATIBILITY IDEOGRAPH-FACD → CJK UNIFIED IDEOGRAPH-9B12       # 
+2FA0A ;        9B12 ;  SL      # ( 鬒 → 鬒 ) CJK COMPATIBILITY IDEOGRAPH-2FA0A → CJK UNIFIED IDEOGRAPH-9B12     # 
+
+2FBE ; 9B25 ;  SL      #* ( ⾾ → 鬥 ) KANGXI RADICAL FIGHT → CJK UNIFIED IDEOGRAPH-9B25  # 
+
+2FBF ; 9B2F ;  SL      #* ( ⾿ → 鬯 ) KANGXI RADICAL SACRIFICIAL WINE → CJK UNIFIED IDEOGRAPH-9B2F       # 
+
+2FC0 ; 9B32 ;  SL      #* ( ⿀ → 鬲 ) KANGXI RADICAL CAULDRON → CJK UNIFIED IDEOGRAPH-9B32       # 
+
+2FC1 ; 9B3C ;  SL      #* ( ⿁ → 鬼 ) KANGXI RADICAL GHOST → CJK UNIFIED IDEOGRAPH-9B3C  # 
+2EE4 ; 9B3C ;  SL      #* ( ⻤ → 鬼 ) CJK RADICAL GHOST → CJK UNIFIED IDEOGRAPH-9B3C     # 
+
+2FC2 ; 9B5A ;  SL      #* ( ⿂ → 魚 ) KANGXI RADICAL FISH → CJK UNIFIED IDEOGRAPH-9B5A   # 
+
+F939 ; 9B6F ;  SL      # ( 魯 → 魯 ) CJK COMPATIBILITY IDEOGRAPH-F939 → CJK UNIFIED IDEOGRAPH-9B6F       # 
+
+2FA0B ;        9C40 ;  SL      # ( 鱀 → 鱀 ) CJK COMPATIBILITY IDEOGRAPH-2FA0B → CJK UNIFIED IDEOGRAPH-9C40     # 
+
+F9F2 ; 9C57 ;  SL      # ( 鱗 → 鱗 ) CJK COMPATIBILITY IDEOGRAPH-F9F2 → CJK UNIFIED IDEOGRAPH-9C57       # 
+
+2EE5 ; 9C7C ;  SL      #* ( ⻥ → 鱼 ) CJK RADICAL C-SIMPLIFIED FISH → CJK UNIFIED IDEOGRAPH-9C7C # 
+
+2FC3 ; 9CE5 ;  SL      #* ( ⿃ → 鳥 ) KANGXI RADICAL BIRD → CJK UNIFIED IDEOGRAPH-9CE5   # 
+
+2FA0C ;        9CFD ;  SL      # ( 鳽 → 鳽 ) CJK COMPATIBILITY IDEOGRAPH-2FA0C → CJK UNIFIED IDEOGRAPH-9CFD     # 
+
+2FA0F ;        9D67 ;  SL      # ( 鵧 → 鵧 ) CJK COMPATIBILITY IDEOGRAPH-2FA0F → CJK UNIFIED IDEOGRAPH-9D67     # 
+
+FA2D ; 9DB4 ;  SL      # ( 鶴 → 鶴 ) CJK COMPATIBILITY IDEOGRAPH-FA2D → CJK UNIFIED IDEOGRAPH-9DB4       # 
+
+F93A ; 9DFA ;  SL      # ( 鷺 → 鷺 ) CJK COMPATIBILITY IDEOGRAPH-F93A → CJK UNIFIED IDEOGRAPH-9DFA       # 
+
+F920 ; 9E1E ;  SL      # ( 鸞 → 鸞 ) CJK COMPATIBILITY IDEOGRAPH-F920 → CJK UNIFIED IDEOGRAPH-9E1E       # 
+
+9E43 ; 9E42 ;  SL      # ( 鹃 → 鹂 ) CJK UNIFIED IDEOGRAPH-9E43 → CJK UNIFIED IDEOGRAPH-9E42     # 
+
+2FC4 ; 9E75 ;  SL      #* ( ⿄ → 鹵 ) KANGXI RADICAL SALT → CJK UNIFIED IDEOGRAPH-9E75   # 
+
+F940 ; 9E7F ;  SL      # ( 鹿 → 鹿 ) CJK COMPATIBILITY IDEOGRAPH-F940 → CJK UNIFIED IDEOGRAPH-9E7F       # 
+2FC5 ; 9E7F ;  SL      #* ( ⿅ → 鹿 ) KANGXI RADICAL DEER → CJK UNIFIED IDEOGRAPH-9E7F   # 
+
+F988 ; 9E97 ;  SL      # ( 麗 → 麗 ) CJK COMPATIBILITY IDEOGRAPH-F988 → CJK UNIFIED IDEOGRAPH-9E97       # 
+
+F9F3 ; 9E9F ;  SL      # ( 麟 → 麟 ) CJK COMPATIBILITY IDEOGRAPH-F9F3 → CJK UNIFIED IDEOGRAPH-9E9F       # 
+
+2FC6 ; 9EA5 ;  SL      #* ( ⿆ → 麥 ) KANGXI RADICAL WHEAT → CJK UNIFIED IDEOGRAPH-9EA5  # 
+
+2EE8 ; 9EA6 ;  SL      #* ( ⻨ → 麦 ) CJK RADICAL SIMPLIFIED WHEAT → CJK UNIFIED IDEOGRAPH-9EA6  # 
+
+2FA15 ;        9EBB ;  SL      # ( 麻 → 麻 ) CJK COMPATIBILITY IDEOGRAPH-2FA15 → CJK UNIFIED IDEOGRAPH-9EBB     # 
+2FC7 ; 9EBB ;  SL      #* ( ⿇ → 麻 ) KANGXI RADICAL HEMP → CJK UNIFIED IDEOGRAPH-9EBB   # 
+
+2FC8 ; 9EC3 ;  SL      #* ( ⿈ → 黃 ) KANGXI RADICAL YELLOW → CJK UNIFIED IDEOGRAPH-9EC3 # 
+
+2EE9 ; 9EC4 ;  SL      #* ( ⻩ → 黄 ) CJK RADICAL SIMPLIFIED YELLOW → CJK UNIFIED IDEOGRAPH-9EC4 # 
+
+2FC9 ; 9ECD ;  SL      #* ( ⿉ → 黍 ) KANGXI RADICAL MILLET → CJK UNIFIED IDEOGRAPH-9ECD # 
+
+F989 ; 9ECE ;  SL      # ( 黎 → 黎 ) CJK COMPATIBILITY IDEOGRAPH-F989 → CJK UNIFIED IDEOGRAPH-9ECE       # 
+
+2FCA ; 9ED1 ;  SL      #* ( ⿊ → 黑 ) KANGXI RADICAL BLACK → CJK UNIFIED IDEOGRAPH-9ED1  # 
+9ED2 ; 9ED1 ;  SL      # ( 黒 → 黑 ) CJK UNIFIED IDEOGRAPH-9ED2 → CJK UNIFIED IDEOGRAPH-9ED1     # →⿊→
+
+2FA17 ;        9EF9 ;  SL      # ( 黹 → 黹 ) CJK COMPATIBILITY IDEOGRAPH-2FA17 → CJK UNIFIED IDEOGRAPH-9EF9     # 
+2FCB ; 9EF9 ;  SL      #* ( ⿋ → 黹 ) KANGXI RADICAL EMBROIDERY → CJK UNIFIED IDEOGRAPH-9EF9     # 
+
+2FCC ; 9EFD ;  SL      #* ( ⿌ → 黽 ) KANGXI RADICAL FROG → CJK UNIFIED IDEOGRAPH-9EFD   # 
+
+2FA18 ;        9EFE ;  SL      # ( 黾 → 黾 ) CJK COMPATIBILITY IDEOGRAPH-2FA18 → CJK UNIFIED IDEOGRAPH-9EFE     # 
+
+2FA19 ;        9F05 ;  SL      # ( 鼅 → 鼅 ) CJK COMPATIBILITY IDEOGRAPH-2FA19 → CJK UNIFIED IDEOGRAPH-9F05     # 
+
+2FCD ; 9F0E ;  SL      #* ( ⿍ → 鼎 ) KANGXI RADICAL TRIPOD → CJK UNIFIED IDEOGRAPH-9F0E # 
+
+2FA1A ;        9F0F ;  SL      # ( 鼏 → 鼏 ) CJK COMPATIBILITY IDEOGRAPH-2FA1A → CJK UNIFIED IDEOGRAPH-9F0F     # 
+
+2FCE ; 9F13 ;  SL      #* ( ⿎ → 鼓 ) KANGXI RADICAL DRUM → CJK UNIFIED IDEOGRAPH-9F13   # 
+
+2FA1B ;        9F16 ;  SL      # ( 鼖 → 鼖 ) CJK COMPATIBILITY IDEOGRAPH-2FA1B → CJK UNIFIED IDEOGRAPH-9F16     # 
+
+2FCF ; 9F20 ;  SL      #* ( ⿏ → 鼠 ) KANGXI RADICAL RAT → CJK UNIFIED IDEOGRAPH-9F20    # 
+
+2FA1C ;        9F3B ;  SL      # ( 鼻 → 鼻 ) CJK COMPATIBILITY IDEOGRAPH-2FA1C → CJK UNIFIED IDEOGRAPH-9F3B     # 
+2FD0 ; 9F3B ;  SL      #* ( ⿐ → 鼻 ) KANGXI RADICAL NOSE → CJK UNIFIED IDEOGRAPH-9F3B   # 
+
+FAD8 ; 9F43 ;  SL      # ( 齃 → 齃 ) CJK COMPATIBILITY IDEOGRAPH-FAD8 → CJK UNIFIED IDEOGRAPH-9F43       # 
+
+2FD1 ; 9F4A ;  SL      #* ( ⿑ → 齊 ) KANGXI RADICAL EVEN → CJK UNIFIED IDEOGRAPH-9F4A   # 
+
+2EEC ; 9F50 ;  SL      #* ( ⻬ → 齐 ) CJK RADICAL C-SIMPLIFIED EVEN → CJK UNIFIED IDEOGRAPH-9F50 # 
+
+2FD2 ; 9F52 ;  SL      #* ( ⿒ → 齒 ) KANGXI RADICAL TOOTH → CJK UNIFIED IDEOGRAPH-9F52  # 
+
+2EEE ; 9F7F ;  SL      #* ( ⻮ → 齿 ) CJK RADICAL C-SIMPLIFIED TOOTH → CJK UNIFIED IDEOGRAPH-9F7F        # 
+
+F9C4 ; 9F8D ;  SL      # ( 龍 → 龍 ) CJK COMPATIBILITY IDEOGRAPH-F9C4 → CJK UNIFIED IDEOGRAPH-9F8D       # 
+2FD3 ; 9F8D ;  SL      #* ( ⿓ → 龍 ) KANGXI RADICAL DRAGON → CJK UNIFIED IDEOGRAPH-9F8D # 
+
+FAD9 ; 9F8E ;  SL      # ( 龎 → 龎 ) CJK COMPATIBILITY IDEOGRAPH-FAD9 → CJK UNIFIED IDEOGRAPH-9F8E       # 
+
+2EF0 ; 9F99 ;  SL      #* ( ⻰ → 龙 ) CJK RADICAL C-SIMPLIFIED DRAGON → CJK UNIFIED IDEOGRAPH-9F99       # 
+
+F907 ; 9F9C ;  SL      # ( 龜 → 龜 ) CJK COMPATIBILITY IDEOGRAPH-F907 → CJK UNIFIED IDEOGRAPH-9F9C       # 
+F908 ; 9F9C ;  SL      # ( 龜 → 龜 ) CJK COMPATIBILITY IDEOGRAPH-F908 → CJK UNIFIED IDEOGRAPH-9F9C       # 
+FACE ; 9F9C ;  SL      # ( 龜 → 龜 ) CJK COMPATIBILITY IDEOGRAPH-FACE → CJK UNIFIED IDEOGRAPH-9F9C       # 
+2FD4 ; 9F9C ;  SL      #* ( ⿔ → 龜 ) KANGXI RADICAL TURTLE → CJK UNIFIED IDEOGRAPH-9F9C # 
+
+2EF3 ; 9F9F ;  SL      #* ( ⻳ → 龟 ) CJK RADICAL C-SIMPLIFIED TURTLE → CJK UNIFIED IDEOGRAPH-9F9F       # 
+
+2FD5 ; 9FA0 ;  SL      #* ( ⿕ → 龠 ) KANGXI RADICAL FLUTE → CJK UNIFIED IDEOGRAPH-9FA0  # 
+
+2F80C ;        349E ;  SL      # ( 㒞 → 㒞 ) CJK COMPATIBILITY IDEOGRAPH-2F80C → CJK UNIFIED IDEOGRAPH-349E     # 
+
+2F813 ;        34B9 ;  SL      # ( 㒹 → 㒹 ) CJK COMPATIBILITY IDEOGRAPH-2F813 → CJK UNIFIED IDEOGRAPH-34B9     # 
+
+2F9CA ;        34BB ;  SL      # ( 㒻 → 㒻 ) CJK COMPATIBILITY IDEOGRAPH-2F9CA → CJK UNIFIED IDEOGRAPH-34BB     # 
+
+2F81F ;        34DF ;  SL      # ( 㓟 → 㓟 ) CJK COMPATIBILITY IDEOGRAPH-2F81F → CJK UNIFIED IDEOGRAPH-34DF     # 
+
+2F824 ;        3515 ;  SL      # ( 㔕 → 㔕 ) CJK COMPATIBILITY IDEOGRAPH-2F824 → CJK UNIFIED IDEOGRAPH-3515     # 
+
+2E8B ; 353E ;  SL      #* ( ⺋ → 㔾 ) CJK RADICAL SEAL → CJK UNIFIED IDEOGRAPH-353E      # 
+
+439B ; 3588 ;  SL      # ( 䎛 → 㖈 ) CJK UNIFIED IDEOGRAPH-439B → CJK UNIFIED IDEOGRAPH-3588     # 
+
+39B3 ; 363D ;  SL      # ( 㦳 → 㘽 ) CJK UNIFIED IDEOGRAPH-39B3 → CJK UNIFIED IDEOGRAPH-363D     # 
+
+2F867 ;        36EE ;  SL      # ( 㛮 → 㛮 ) CJK COMPATIBILITY IDEOGRAPH-2F867 → CJK UNIFIED IDEOGRAPH-36EE     # 
+
+2F868 ;        36FC ;  SL      # ( 㛼 → 㛼 ) CJK COMPATIBILITY IDEOGRAPH-2F868 → CJK UNIFIED IDEOGRAPH-36FC     # 
+
+2F876 ;        3781 ;  SL      # ( 㞁 → 㞁 ) CJK COMPATIBILITY IDEOGRAPH-2F876 → CJK UNIFIED IDEOGRAPH-3781     # 
+
+2F883 ;        382F ;  SL      # ( 㠯 → 㠯 ) CJK COMPATIBILITY IDEOGRAPH-2F883 → CJK UNIFIED IDEOGRAPH-382F     # 
+
+2F888 ;        3862 ;  SL      # ( 㡢 → 㡢 ) CJK COMPATIBILITY IDEOGRAPH-2F888 → CJK UNIFIED IDEOGRAPH-3862     # 
+
+2F88A ;        387C ;  SL      # ( 㡼 → 㡼 ) CJK COMPATIBILITY IDEOGRAPH-2F88A → CJK UNIFIED IDEOGRAPH-387C     # 
+
+2F896 ;        38C7 ;  SL      # ( 㣇 → 㣇 ) CJK COMPATIBILITY IDEOGRAPH-2F896 → CJK UNIFIED IDEOGRAPH-38C7     # 
+
+2F89B ;        38E3 ;  SL      # ( 㣣 → 㣣 ) CJK COMPATIBILITY IDEOGRAPH-2F89B → CJK UNIFIED IDEOGRAPH-38E3     # 
+
+2E97 ; 38FA ;  SL      #* ( ⺗ → 㣺 ) CJK RADICAL HEART TWO → CJK UNIFIED IDEOGRAPH-38FA # 
+
+2F8A2 ;        391C ;  SL      # ( 㤜 → 㤜 ) CJK COMPATIBILITY IDEOGRAPH-2F8A2 → CJK UNIFIED IDEOGRAPH-391C     # 
+
+2F8A1 ;        393A ;  SL      # ( 㤺 → 㤺 ) CJK COMPATIBILITY IDEOGRAPH-2F8A1 → CJK UNIFIED IDEOGRAPH-393A     # 
+
+2F8C2 ;        3A2E ;  SL      # ( 㨮 → 㨮 ) CJK COMPATIBILITY IDEOGRAPH-2F8C2 → CJK UNIFIED IDEOGRAPH-3A2E     # 
+
+6409 ; 3A41 ;  SL      # ( 搉 → 㩁 ) CJK UNIFIED IDEOGRAPH-6409 → CJK UNIFIED IDEOGRAPH-3A41     # 
+
+2F8C7 ;        3A6C ;  SL      # ( 㩬 → 㩬 ) CJK COMPATIBILITY IDEOGRAPH-2F8C7 → CJK UNIFIED IDEOGRAPH-3A6C     # 
+
+66F6 ; 3ADA ;  SL      # ( 曶 → 㫚 ) CJK UNIFIED IDEOGRAPH-66F6 → CJK UNIFIED IDEOGRAPH-3ADA     # 
+
+2F8D1 ;        3AE4 ;  SL      # ( 㫤 → 㫤 ) CJK COMPATIBILITY IDEOGRAPH-2F8D1 → CJK UNIFIED IDEOGRAPH-3AE4     # 
+
+2F8D0 ;        3B08 ;  SL      # ( 㬈 → 㬈 ) CJK COMPATIBILITY IDEOGRAPH-2F8D0 → CJK UNIFIED IDEOGRAPH-3B08     # 
+
+2F8CE ;        3B19 ;  SL      # ( 㬙 → 㬙 ) CJK COMPATIBILITY IDEOGRAPH-2F8CE → CJK UNIFIED IDEOGRAPH-3B19     # 
+
+80F6 ; 3B35 ;  SL      # ( 胶 → 㬵 ) CJK UNIFIED IDEOGRAPH-80F6 → CJK UNIFIED IDEOGRAPH-3B35     # 
+
+5E50 ; 3B3A ;  SL      # ( 幐 → 㬺 ) CJK UNIFIED IDEOGRAPH-5E50 → CJK UNIFIED IDEOGRAPH-3B3A     # 
+
+4420 ; 3B3B ;  SL      # ( 䐠 → 㬻 ) CJK UNIFIED IDEOGRAPH-4420 → CJK UNIFIED IDEOGRAPH-3B3B     # 
+
+2F8DE ;        3B49 ;  SL      # ( 㭉 → 㭉 ) CJK COMPATIBILITY IDEOGRAPH-2F8DE → CJK UNIFIED IDEOGRAPH-3B49     # 
+
+FAD2 ; 3B9D ;  SL      # ( 㮝 → 㮝 ) CJK COMPATIBILITY IDEOGRAPH-FAD2 → CJK UNIFIED IDEOGRAPH-3B9D       # 
+2F8E7 ;        3B9D ;  SL      # ( 㮝 → 㮝 ) CJK COMPATIBILITY IDEOGRAPH-2F8E7 → CJK UNIFIED IDEOGRAPH-3B9D     # 
+
+69E9 ; 3BA3 ;  SL      # ( 槩 → 㮣 ) CJK UNIFIED IDEOGRAPH-69E9 → CJK UNIFIED IDEOGRAPH-3BA3     # 
+
+2F8EE ;        3C18 ;  SL      # ( 㰘 → 㰘 ) CJK COMPATIBILITY IDEOGRAPH-2F8EE → CJK UNIFIED IDEOGRAPH-3C18     # 
+
+2F8F2 ;        3C4E ;  SL      # ( 㱎 → 㱎 ) CJK COMPATIBILITY IDEOGRAPH-2F8F2 → CJK UNIFIED IDEOGRAPH-3C4E     # 
+
+2F90A ;        3D33 ;  SL      # ( 㴳 → 㴳 ) CJK COMPATIBILITY IDEOGRAPH-2F90A → CJK UNIFIED IDEOGRAPH-3D33     # 
+
+2F916 ;        3D96 ;  SL      # ( 㶖 → 㶖 ) CJK COMPATIBILITY IDEOGRAPH-2F916 → CJK UNIFIED IDEOGRAPH-3D96     # 
+
+2F92A ;        3EAC ;  SL      # ( 㺬 → 㺬 ) CJK COMPATIBILITY IDEOGRAPH-2F92A → CJK UNIFIED IDEOGRAPH-3EAC     # 
+
+2F92C ;        3EB8 ;  SL      # ( 㺸 → 㺸 ) CJK COMPATIBILITY IDEOGRAPH-2F92C → CJK UNIFIED IDEOGRAPH-3EB8     # 
+2F92D ;        3EB8 ;  SL      # ( 㺸 → 㺸 ) CJK COMPATIBILITY IDEOGRAPH-2F92D → CJK UNIFIED IDEOGRAPH-3EB8     # 
+
+2F933 ;        3F1B ;  SL      # ( 㼛 → 㼛 ) CJK COMPATIBILITY IDEOGRAPH-2F933 → CJK UNIFIED IDEOGRAPH-3F1B     # 
+
+2F93E ;        3FFC ;  SL      # ( 㿼 → 㿼 ) CJK COMPATIBILITY IDEOGRAPH-2F93E → CJK UNIFIED IDEOGRAPH-3FFC     # 
+
+2F93F ;        4008 ;  SL      # ( 䀈 → 䀈 ) CJK COMPATIBILITY IDEOGRAPH-2F93F → CJK UNIFIED IDEOGRAPH-4008     # 
+
+FAD3 ; 4018 ;  SL      # ( 䀘 → 䀘 ) CJK COMPATIBILITY IDEOGRAPH-FAD3 → CJK UNIFIED IDEOGRAPH-4018       # 
+
+9FC3 ; 4039 ;  SL      # ( 鿃 → 䀹 ) CJK UNIFIED IDEOGRAPH-9FC3 → CJK UNIFIED IDEOGRAPH-4039     # →䀹→
+FAD4 ; 4039 ;  SL      # ( 䀹 → 䀹 ) CJK COMPATIBILITY IDEOGRAPH-FAD4 → CJK UNIFIED IDEOGRAPH-4039       # 
+2F949 ;        4039 ;  SL      # ( 䀹 → 䀹 ) CJK COMPATIBILITY IDEOGRAPH-2F949 → CJK UNIFIED IDEOGRAPH-4039     # 
+
+6663 ; 403F ;  SL      # ( 晣 → 䀿 ) CJK UNIFIED IDEOGRAPH-6663 → CJK UNIFIED IDEOGRAPH-403F     # 
+
+2F94B ;        4046 ;  SL      # ( 䁆 → 䁆 ) CJK COMPATIBILITY IDEOGRAPH-2F94B → CJK UNIFIED IDEOGRAPH-4046     # 
+
+2F94C ;        4096 ;  SL      # ( 䂖 → 䂖 ) CJK COMPATIBILITY IDEOGRAPH-2F94C → CJK UNIFIED IDEOGRAPH-4096     # 
+
+2F951 ;        40E3 ;  SL      # ( 䃣 → 䃣 ) CJK COMPATIBILITY IDEOGRAPH-2F951 → CJK UNIFIED IDEOGRAPH-40E3     # 
+
+2F958 ;        412F ;  SL      # ( 䄯 → 䄯 ) CJK COMPATIBILITY IDEOGRAPH-2F958 → CJK UNIFIED IDEOGRAPH-412F     # 
+
+2F960 ;        4202 ;  SL      # ( 䈂 → 䈂 ) CJK COMPATIBILITY IDEOGRAPH-2F960 → CJK UNIFIED IDEOGRAPH-4202     # 
+
+2F964 ;        4227 ;  SL      # ( 䈧 → 䈧 ) CJK COMPATIBILITY IDEOGRAPH-2F964 → CJK UNIFIED IDEOGRAPH-4227     # 
+
+2F967 ;        42A0 ;  SL      # ( 䊠 → 䊠 ) CJK COMPATIBILITY IDEOGRAPH-2F967 → CJK UNIFIED IDEOGRAPH-42A0     # 
+
+2F96D ;        4301 ;  SL      # ( 䌁 → 䌁 ) CJK COMPATIBILITY IDEOGRAPH-2F96D → CJK UNIFIED IDEOGRAPH-4301     # 
+
+2F971 ;        4334 ;  SL      # ( 䌴 → 䌴 ) CJK COMPATIBILITY IDEOGRAPH-2F971 → CJK UNIFIED IDEOGRAPH-4334     # 
+
+2F974 ;        4359 ;  SL      # ( 䍙 → 䍙 ) CJK COMPATIBILITY IDEOGRAPH-2F974 → CJK UNIFIED IDEOGRAPH-4359     # 
+
+2F981 ;        43D5 ;  SL      # ( 䏕 → 䏕 ) CJK COMPATIBILITY IDEOGRAPH-2F981 → CJK UNIFIED IDEOGRAPH-43D5     # 
+
+2F8D7 ;        43D9 ;  SL      # ( 䏙 → 䏙 ) CJK COMPATIBILITY IDEOGRAPH-2F8D7 → CJK UNIFIED IDEOGRAPH-43D9     # 
+
+2F984 ;        440B ;  SL      # ( 䐋 → 䐋 ) CJK COMPATIBILITY IDEOGRAPH-2F984 → CJK UNIFIED IDEOGRAPH-440B     # 
+
+6726 ; 4443 ;  SL      # ( 朦 → 䑃 ) CJK UNIFIED IDEOGRAPH-6726 → CJK UNIFIED IDEOGRAPH-4443     # 
+
+2F98E ;        446B ;  SL      # ( 䑫 → 䑫 ) CJK COMPATIBILITY IDEOGRAPH-2F98E → CJK UNIFIED IDEOGRAPH-446B     # 
+
+2F9A7 ;        452B ;  SL      # ( 䔫 → 䔫 ) CJK COMPATIBILITY IDEOGRAPH-2F9A7 → CJK UNIFIED IDEOGRAPH-452B     # 
+
+2F9AE ;        455D ;  SL      # ( 䕝 → 䕝 ) CJK COMPATIBILITY IDEOGRAPH-2F9AE → CJK UNIFIED IDEOGRAPH-455D     # 
+
+2F9AF ;        4561 ;  SL      # ( 䕡 → 䕡 ) CJK COMPATIBILITY IDEOGRAPH-2F9AF → CJK UNIFIED IDEOGRAPH-4561     # 
+
+2F9B2 ;        456B ;  SL      # ( 䕫 → 䕫 ) CJK COMPATIBILITY IDEOGRAPH-2F9B2 → CJK UNIFIED IDEOGRAPH-456B     # 
+
+2F9BF ;        45D7 ;  SL      # ( 䗗 → 䗗 ) CJK COMPATIBILITY IDEOGRAPH-2F9BF → CJK UNIFIED IDEOGRAPH-45D7     # 
+
+2F9C2 ;        45F9 ;  SL      # ( 䗹 → 䗹 ) CJK COMPATIBILITY IDEOGRAPH-2F9C2 → CJK UNIFIED IDEOGRAPH-45F9     # 
+
+2F9C8 ;        4635 ;  SL      # ( 䘵 → 䘵 ) CJK COMPATIBILITY IDEOGRAPH-2F9C8 → CJK UNIFIED IDEOGRAPH-4635     # 
+
+8A1E ; 46B6 ;  SL      # ( 訞 → 䚶 ) CJK UNIFIED IDEOGRAPH-8A1E → CJK UNIFIED IDEOGRAPH-46B6     # 
+
+2F9CD ;        46BE ;  SL      # ( 䚾 → 䚾 ) CJK COMPATIBILITY IDEOGRAPH-2F9CD → CJK UNIFIED IDEOGRAPH-46BE     # 
+
+2F9CE ;        46C7 ;  SL      # ( 䛇 → 䛇 ) CJK COMPATIBILITY IDEOGRAPH-2F9CE → CJK UNIFIED IDEOGRAPH-46C7     # 
+
+2F9EF ;        4995 ;  SL      # ( 䦕 → 䦕 ) CJK COMPATIBILITY IDEOGRAPH-2F9EF → CJK UNIFIED IDEOGRAPH-4995     # 
+
+2F9F2 ;        49E6 ;  SL      # ( 䧦 → 䧦 ) CJK COMPATIBILITY IDEOGRAPH-2F9F2 → CJK UNIFIED IDEOGRAPH-49E6     # 
+
+2F9F8 ;        4A6E ;  SL      # ( 䩮 → 䩮 ) CJK COMPATIBILITY IDEOGRAPH-2F9F8 → CJK UNIFIED IDEOGRAPH-4A6E     # 
+
+2F9F9 ;        4A76 ;  SL      # ( 䩶 → 䩶 ) CJK COMPATIBILITY IDEOGRAPH-2F9F9 → CJK UNIFIED IDEOGRAPH-4A76     # 
+
+2F9FC ;        4AB2 ;  SL      # ( 䪲 → 䪲 ) CJK COMPATIBILITY IDEOGRAPH-2F9FC → CJK UNIFIED IDEOGRAPH-4AB2     # 
+
+2FA03 ;        4B33 ;  SL      # ( 䬳 → 䬳 ) CJK COMPATIBILITY IDEOGRAPH-2FA03 → CJK UNIFIED IDEOGRAPH-4B33     # 
+
+2FA08 ;        4BCE ;  SL      # ( 䯎 → 䯎 ) CJK COMPATIBILITY IDEOGRAPH-2FA08 → CJK UNIFIED IDEOGRAPH-4BCE     # 
+
+2FA0D ;        4CCE ;  SL      # ( 䳎 → 䳎 ) CJK COMPATIBILITY IDEOGRAPH-2FA0D → CJK UNIFIED IDEOGRAPH-4CCE     # 
+
+2FA0E ;        4CED ;  SL      # ( 䳭 → 䳭 ) CJK COMPATIBILITY IDEOGRAPH-2FA0E → CJK UNIFIED IDEOGRAPH-4CED     # 
+
+2FA11 ;        4CF8 ;  SL      # ( 䳸 → 䳸 ) CJK COMPATIBILITY IDEOGRAPH-2FA11 → CJK UNIFIED IDEOGRAPH-4CF8     # 
+
+2FA16 ;        4D56 ;  SL      # ( 䵖 → 䵖 ) CJK COMPATIBILITY IDEOGRAPH-2FA16 → CJK UNIFIED IDEOGRAPH-4D56     # 
+
+2F803 ;        20122 ; SL      # ( 𠄢 → 𠄢 ) CJK COMPATIBILITY IDEOGRAPH-2F803 → CJK UNIFIED IDEOGRAPH-20122   # 
+
+2F812 ;        2051C ; SL      # ( 𠔜 → 𠔜 ) CJK COMPATIBILITY IDEOGRAPH-2F812 → CJK UNIFIED IDEOGRAPH-2051C   # 
+
+2F91B ;        20525 ; SL      # ( 𠔥 → 𠔥 ) CJK COMPATIBILITY IDEOGRAPH-2F91B → CJK UNIFIED IDEOGRAPH-20525   # 
+
+2F816 ;        2054B ; SL      # ( 𠕋 → 𠕋 ) CJK COMPATIBILITY IDEOGRAPH-2F816 → CJK UNIFIED IDEOGRAPH-2054B   # 
+
+2F80D ;        2063A ; SL      # ( 𠘺 → 𠘺 ) CJK COMPATIBILITY IDEOGRAPH-2F80D → CJK UNIFIED IDEOGRAPH-2063A   # 
+
+2F9D9 ;        20804 ; SL      # ( 𠠄 → 𠠄 ) CJK COMPATIBILITY IDEOGRAPH-2F9D9 → CJK UNIFIED IDEOGRAPH-20804   # 
+
+2F9DD ;        208DE ; SL      # ( 𠣞 → 𠣞 ) CJK COMPATIBILITY IDEOGRAPH-2F9DD → CJK UNIFIED IDEOGRAPH-208DE   # 
+
+2F834 ;        20A2C ; SL      # ( 𠨬 → 𠨬 ) CJK COMPATIBILITY IDEOGRAPH-2F834 → CJK UNIFIED IDEOGRAPH-20A2C   # 
+
+2F838 ;        20B63 ; SL      # ( 𠭣 → 𠭣 ) CJK COMPATIBILITY IDEOGRAPH-2F838 → CJK UNIFIED IDEOGRAPH-20B63   # 
+
+2F859 ;        214E4 ; SL      # ( 𡓤 → 𡓤 ) CJK COMPATIBILITY IDEOGRAPH-2F859 → CJK UNIFIED IDEOGRAPH-214E4   # 
+
+2F860 ;        216A8 ; SL      # ( 𡚨 → 𡚨 ) CJK COMPATIBILITY IDEOGRAPH-2F860 → CJK UNIFIED IDEOGRAPH-216A8   # 
+
+2F861 ;        216EA ; SL      # ( 𡛪 → 𡛪 ) CJK COMPATIBILITY IDEOGRAPH-2F861 → CJK UNIFIED IDEOGRAPH-216EA   # 
+
+2F86C ;        219C8 ; SL      # ( 𡧈 → 𡧈 ) CJK COMPATIBILITY IDEOGRAPH-2F86C → CJK UNIFIED IDEOGRAPH-219C8   # 
+
+2F871 ;        21B18 ; SL      # ( 𡬘 → 𡬘 ) CJK COMPATIBILITY IDEOGRAPH-2F871 → CJK UNIFIED IDEOGRAPH-21B18   # 
+
+2F8F8 ;        21D0B ; SL      # ( 𡴋 → 𡴋 ) CJK COMPATIBILITY IDEOGRAPH-2F8F8 → CJK UNIFIED IDEOGRAPH-21D0B   # 
+
+2F87B ;        21DE4 ; SL      # ( 𡷤 → 𡷤 ) CJK COMPATIBILITY IDEOGRAPH-2F87B → CJK UNIFIED IDEOGRAPH-21DE4   # 
+
+2F87D ;        21DE6 ; SL      # ( 𡷦 → 𡷦 ) CJK COMPATIBILITY IDEOGRAPH-2F87D → CJK UNIFIED IDEOGRAPH-21DE6   # 
+
+2F889 ;        22183 ; SL      # ( 𢆃 → 𢆃 ) CJK COMPATIBILITY IDEOGRAPH-2F889 → CJK UNIFIED IDEOGRAPH-22183   # 
+
+2F939 ;        2219F ; SL      # ( 𢆟 → 𢆟 ) CJK COMPATIBILITY IDEOGRAPH-2F939 → CJK UNIFIED IDEOGRAPH-2219F   # 
+
+2F891 ;        22331 ; SL      # ( 𢌱 → 𢌱 ) CJK COMPATIBILITY IDEOGRAPH-2F891 → CJK UNIFIED IDEOGRAPH-22331   # 
+2F892 ;        22331 ; SL      # ( 𢌱 → 𢌱 ) CJK COMPATIBILITY IDEOGRAPH-2F892 → CJK UNIFIED IDEOGRAPH-22331   # 
+
+2F8A4 ;        226D4 ; SL      # ( 𢛔 → 𢛔 ) CJK COMPATIBILITY IDEOGRAPH-2F8A4 → CJK UNIFIED IDEOGRAPH-226D4   # 
+
+FAD0 ; 22844 ; SL      # ( 𢡄 → 𢡄 ) CJK COMPATIBILITY IDEOGRAPH-FAD0 → CJK UNIFIED IDEOGRAPH-22844     # 
+
+FACF ; 2284A ; SL      # ( 𢡊 → 𢡊 ) CJK COMPATIBILITY IDEOGRAPH-FACF → CJK UNIFIED IDEOGRAPH-2284A     # 
+
+2F8B8 ;        22B0C ; SL      # ( 𢬌 → 𢬌 ) CJK COMPATIBILITY IDEOGRAPH-2F8B8 → CJK UNIFIED IDEOGRAPH-22B0C   # 
+
+2F8BE ;        22BF1 ; SL      # ( 𢯱 → 𢯱 ) CJK COMPATIBILITY IDEOGRAPH-2F8BE → CJK UNIFIED IDEOGRAPH-22BF1   # 
+
+2F8CA ;        2300A ; SL      # ( 𣀊 → 𣀊 ) CJK COMPATIBILITY IDEOGRAPH-2F8CA → CJK UNIFIED IDEOGRAPH-2300A   # 
+
+2F897 ;        232B8 ; SL      # ( 𣊸 → 𣊸 ) CJK COMPATIBILITY IDEOGRAPH-2F897 → CJK UNIFIED IDEOGRAPH-232B8   # 
+
+2F980 ;        2335F ; SL      # ( 𣍟 → 𣍟 ) CJK COMPATIBILITY IDEOGRAPH-2F980 → CJK UNIFIED IDEOGRAPH-2335F   # 
+
+2F989 ;        23393 ; SL      # ( 𣎓 → 𣎓 ) CJK COMPATIBILITY IDEOGRAPH-2F989 → CJK UNIFIED IDEOGRAPH-23393   # 
+
+2F98A ;        2339C ; SL      # ( 𣎜 → 𣎜 ) CJK COMPATIBILITY IDEOGRAPH-2F98A → CJK UNIFIED IDEOGRAPH-2339C   # 
+
+2F8DD ;        233C3 ; SL      # ( 𣏃 → 𣏃 ) CJK COMPATIBILITY IDEOGRAPH-2F8DD → CJK UNIFIED IDEOGRAPH-233C3   # 
+
+FAD1 ; 233D5 ; SL      # ( 𣏕 → 𣏕 ) CJK COMPATIBILITY IDEOGRAPH-FAD1 → CJK UNIFIED IDEOGRAPH-233D5     # 
+
+2F8E3 ;        2346D ; SL      # ( 𣑭 → 𣑭 ) CJK COMPATIBILITY IDEOGRAPH-2F8E3 → CJK UNIFIED IDEOGRAPH-2346D   # 
+
+2F8EC ;        236A3 ; SL      # ( 𣚣 → 𣚣 ) CJK COMPATIBILITY IDEOGRAPH-2F8EC → CJK UNIFIED IDEOGRAPH-236A3   # 
+
+2F8F0 ;        238A7 ; SL      # ( 𣢧 → 𣢧 ) CJK COMPATIBILITY IDEOGRAPH-2F8F0 → CJK UNIFIED IDEOGRAPH-238A7   # 
+
+2F8F7 ;        23A8D ; SL      # ( 𣪍 → 𣪍 ) CJK COMPATIBILITY IDEOGRAPH-2F8F7 → CJK UNIFIED IDEOGRAPH-23A8D   # 
+
+2F8F9 ;        23AFA ; SL      # ( 𣫺 → 𣫺 ) CJK COMPATIBILITY IDEOGRAPH-2F8F9 → CJK UNIFIED IDEOGRAPH-23AFA   # 
+
+2F8FB ;        23CBC ; SL      # ( 𣲼 → 𣲼 ) CJK COMPATIBILITY IDEOGRAPH-2F8FB → CJK UNIFIED IDEOGRAPH-23CBC   # 
+
+2F906 ;        23D1E ; SL      # ( 𣴞 → 𣴞 ) CJK COMPATIBILITY IDEOGRAPH-2F906 → CJK UNIFIED IDEOGRAPH-23D1E   # 
+
+2F90D ;        23ED1 ; SL      # ( 𣻑 → 𣻑 ) CJK COMPATIBILITY IDEOGRAPH-2F90D → CJK UNIFIED IDEOGRAPH-23ED1   # 
+
+2F910 ;        23F5E ; SL      # ( 𣽞 → 𣽞 ) CJK COMPATIBILITY IDEOGRAPH-2F910 → CJK UNIFIED IDEOGRAPH-23F5E   # 
+
+2F911 ;        23F8E ; SL      # ( 𣾎 → 𣾎 ) CJK COMPATIBILITY IDEOGRAPH-2F911 → CJK UNIFIED IDEOGRAPH-23F8E   # 
+
+2F91D ;        24263 ; SL      # ( 𤉣 → 𤉣 ) CJK COMPATIBILITY IDEOGRAPH-2F91D → CJK UNIFIED IDEOGRAPH-24263   # 
+
+FA6C ; 242EE ; SL      # ( 𤋮 → 𤋮 ) CJK COMPATIBILITY IDEOGRAPH-FA6C → CJK UNIFIED IDEOGRAPH-242EE     # 
+
+2F91F ;        243AB ; SL      # ( 𤎫 → 𤎫 ) CJK COMPATIBILITY IDEOGRAPH-2F91F → CJK UNIFIED IDEOGRAPH-243AB   # 
+
+2F923 ;        24608 ; SL      # ( 𤘈 → 𤘈 ) CJK COMPATIBILITY IDEOGRAPH-2F923 → CJK UNIFIED IDEOGRAPH-24608   # 
+
+2F926 ;        24735 ; SL      # ( 𤜵 → 𤜵 ) CJK COMPATIBILITY IDEOGRAPH-2F926 → CJK UNIFIED IDEOGRAPH-24735   # 
+
+2F927 ;        24814 ; SL      # ( 𤠔 → 𤠔 ) CJK COMPATIBILITY IDEOGRAPH-2F927 → CJK UNIFIED IDEOGRAPH-24814   # 
+
+2F935 ;        24C36 ; SL      # ( 𤰶 → 𤰶 ) CJK COMPATIBILITY IDEOGRAPH-2F935 → CJK UNIFIED IDEOGRAPH-24C36   # 
+
+2F937 ;        24C92 ; SL      # ( 𤲒 → 𤲒 ) CJK COMPATIBILITY IDEOGRAPH-2F937 → CJK UNIFIED IDEOGRAPH-24C92   # 
+
+2F93B ;        24FA1 ; SL      # ( 𤾡 → 𤾡 ) CJK COMPATIBILITY IDEOGRAPH-2F93B → CJK UNIFIED IDEOGRAPH-24FA1   # 
+
+2F93C ;        24FB8 ; SL      # ( 𤾸 → 𤾸 ) CJK COMPATIBILITY IDEOGRAPH-2F93C → CJK UNIFIED IDEOGRAPH-24FB8   # 
+
+2F93D ;        25044 ; SL      # ( 𥁄 → 𥁄 ) CJK COMPATIBILITY IDEOGRAPH-2F93D → CJK UNIFIED IDEOGRAPH-25044   # 
+
+2F942 ;        250F2 ; SL      # ( 𥃲 → 𥃲 ) CJK COMPATIBILITY IDEOGRAPH-2F942 → CJK UNIFIED IDEOGRAPH-250F2   # 
+
+2F941 ;        250F3 ; SL      # ( 𥃳 → 𥃳 ) CJK COMPATIBILITY IDEOGRAPH-2F941 → CJK UNIFIED IDEOGRAPH-250F3   # 
+
+2F943 ;        25119 ; SL      # ( 𥄙 → 𥄙 ) CJK COMPATIBILITY IDEOGRAPH-2F943 → CJK UNIFIED IDEOGRAPH-25119   # 
+
+2F944 ;        25133 ; SL      # ( 𥄳 → 𥄳 ) CJK COMPATIBILITY IDEOGRAPH-2F944 → CJK UNIFIED IDEOGRAPH-25133   # 
+
+FAD5 ; 25249 ; SL      # ( 𥉉 → 𥉉 ) CJK COMPATIBILITY IDEOGRAPH-FAD5 → CJK UNIFIED IDEOGRAPH-25249     # 
+
+2F94D ;        2541D ; SL      # ( 𥐝 → 𥐝 ) CJK COMPATIBILITY IDEOGRAPH-2F94D → CJK UNIFIED IDEOGRAPH-2541D   # 
+
+2F952 ;        25626 ; SL      # ( 𥘦 → 𥘦 ) CJK COMPATIBILITY IDEOGRAPH-2F952 → CJK UNIFIED IDEOGRAPH-25626   # 
+
+2F954 ;        2569A ; SL      # ( 𥚚 → 𥚚 ) CJK COMPATIBILITY IDEOGRAPH-2F954 → CJK UNIFIED IDEOGRAPH-2569A   # 
+
+2F955 ;        256C5 ; SL      # ( 𥛅 → 𥛅 ) CJK COMPATIBILITY IDEOGRAPH-2F955 → CJK UNIFIED IDEOGRAPH-256C5   # 
+
+2F95C ;        2597C ; SL      # ( 𥥼 → 𥥼 ) CJK COMPATIBILITY IDEOGRAPH-2F95C → CJK UNIFIED IDEOGRAPH-2597C   # 
+
+2F95D ;        25AA7 ; SL      # ( 𥪧 → 𥪧 ) CJK COMPATIBILITY IDEOGRAPH-2F95D → CJK UNIFIED IDEOGRAPH-25AA7   # 
+2F95E ;        25AA7 ; SL      # ( 𥪧 → 𥪧 ) CJK COMPATIBILITY IDEOGRAPH-2F95E → CJK UNIFIED IDEOGRAPH-25AA7   # 
+
+2F961 ;        25BAB ; SL      # ( 𥮫 → 𥮫 ) CJK COMPATIBILITY IDEOGRAPH-2F961 → CJK UNIFIED IDEOGRAPH-25BAB   # 
+
+2F965 ;        25C80 ; SL      # ( 𥲀 → 𥲀 ) CJK COMPATIBILITY IDEOGRAPH-2F965 → CJK UNIFIED IDEOGRAPH-25C80   # 
+
+FAD6 ; 25CD0 ; SL      # ( 𥳐 → 𥳐 ) CJK COMPATIBILITY IDEOGRAPH-FAD6 → CJK UNIFIED IDEOGRAPH-25CD0     # 
+
+2F96B ;        25F86 ; SL      # ( 𥾆 → 𥾆 ) CJK COMPATIBILITY IDEOGRAPH-2F96B → CJK UNIFIED IDEOGRAPH-25F86   # 
+
+2F898 ;        261DA ; SL      # ( 𦇚 → 𦇚 ) CJK COMPATIBILITY IDEOGRAPH-2F898 → CJK UNIFIED IDEOGRAPH-261DA   # 
+
+2F972 ;        26228 ; SL      # ( 𦈨 → 𦈨 ) CJK COMPATIBILITY IDEOGRAPH-2F972 → CJK UNIFIED IDEOGRAPH-26228   # 
+
+2F973 ;        26247 ; SL      # ( 𦉇 → 𦉇 ) CJK COMPATIBILITY IDEOGRAPH-2F973 → CJK UNIFIED IDEOGRAPH-26247   # 
+
+2F975 ;        262D9 ; SL      # ( 𦋙 → 𦋙 ) CJK COMPATIBILITY IDEOGRAPH-2F975 → CJK UNIFIED IDEOGRAPH-262D9   # 
+
+2F977 ;        2633E ; SL      # ( 𦌾 → 𦌾 ) CJK COMPATIBILITY IDEOGRAPH-2F977 → CJK UNIFIED IDEOGRAPH-2633E   # 
+
+2F97B ;        264DA ; SL      # ( 𦓚 → 𦓚 ) CJK COMPATIBILITY IDEOGRAPH-2F97B → CJK UNIFIED IDEOGRAPH-264DA   # 
+
+2F97C ;        26523 ; SL      # ( 𦔣 → 𦔣 ) CJK COMPATIBILITY IDEOGRAPH-2F97C → CJK UNIFIED IDEOGRAPH-26523   # 
+
+2F97E ;        265A8 ; SL      # ( 𦖨 → 𦖨 ) CJK COMPATIBILITY IDEOGRAPH-2F97E → CJK UNIFIED IDEOGRAPH-265A8   # 
+
+2F987 ;        267A7 ; SL      # ( 𦞧 → 𦞧 ) CJK COMPATIBILITY IDEOGRAPH-2F987 → CJK UNIFIED IDEOGRAPH-267A7   # 
+
+2F988 ;        267B5 ; SL      # ( 𦞵 → 𦞵 ) CJK COMPATIBILITY IDEOGRAPH-2F988 → CJK UNIFIED IDEOGRAPH-267B5   # 
+
+2F997 ;        26B3C ; SL      # ( 𦬼 → 𦬼 ) CJK COMPATIBILITY IDEOGRAPH-2F997 → CJK UNIFIED IDEOGRAPH-26B3C   # 
+
+2F9A4 ;        26C36 ; SL      # ( 𦰶 → 𦰶 ) CJK COMPATIBILITY IDEOGRAPH-2F9A4 → CJK UNIFIED IDEOGRAPH-26C36   # 
+
+2F9A6 ;        26CD5 ; SL      # ( 𦳕 → 𦳕 ) CJK COMPATIBILITY IDEOGRAPH-2F9A6 → CJK UNIFIED IDEOGRAPH-26CD5   # 
+
+2F9A5 ;        26D6B ; SL      # ( 𦵫 → 𦵫 ) CJK COMPATIBILITY IDEOGRAPH-2F9A5 → CJK UNIFIED IDEOGRAPH-26D6B   # 
+
+2F9AD ;        26F2C ; SL      # ( 𦼬 → 𦼬 ) CJK COMPATIBILITY IDEOGRAPH-2F9AD → CJK UNIFIED IDEOGRAPH-26F2C   # 
+
+2F9B0 ;        26FB1 ; SL      # ( 𦾱 → 𦾱 ) CJK COMPATIBILITY IDEOGRAPH-2F9B0 → CJK UNIFIED IDEOGRAPH-26FB1   # 
+
+2F9B1 ;        270D2 ; SL      # ( 𧃒 → 𧃒 ) CJK COMPATIBILITY IDEOGRAPH-2F9B1 → CJK UNIFIED IDEOGRAPH-270D2   # 
+
+2F9AB ;        273CA ; SL      # ( 𧏊 → 𧏊 ) CJK COMPATIBILITY IDEOGRAPH-2F9AB → CJK UNIFIED IDEOGRAPH-273CA   # 
+
+2F9C5 ;        27667 ; SL      # ( 𧙧 → 𧙧 ) CJK COMPATIBILITY IDEOGRAPH-2F9C5 → CJK UNIFIED IDEOGRAPH-27667   # 
+
+2F9CB ;        278AE ; SL      # ( 𧢮 → 𧢮 ) CJK COMPATIBILITY IDEOGRAPH-2F9CB → CJK UNIFIED IDEOGRAPH-278AE   # 
+
+2F9CC ;        27966 ; SL      # ( 𧥦 → 𧥦 ) CJK COMPATIBILITY IDEOGRAPH-2F9CC → CJK UNIFIED IDEOGRAPH-27966   # 
+
+2F9D3 ;        27CA8 ; SL      # ( 𧲨 → 𧲨 ) CJK COMPATIBILITY IDEOGRAPH-2F9D3 → CJK UNIFIED IDEOGRAPH-27CA8   # 
+
+FAD7 ; 27ED3 ; SL      # ( 𧻓 → 𧻓 ) CJK COMPATIBILITY IDEOGRAPH-FAD7 → CJK UNIFIED IDEOGRAPH-27ED3     # 
+
+2F9D8 ;        27F2F ; SL      # ( 𧼯 → 𧼯 ) CJK COMPATIBILITY IDEOGRAPH-2F9D8 → CJK UNIFIED IDEOGRAPH-27F2F   # 
+
+2F9E0 ;        285D2 ; SL      # ( 𨗒 → 𨗒 ) CJK COMPATIBILITY IDEOGRAPH-2F9E0 → CJK UNIFIED IDEOGRAPH-285D2   # 
+
+2F9E1 ;        285ED ; SL      # ( 𨗭 → 𨗭 ) CJK COMPATIBILITY IDEOGRAPH-2F9E1 → CJK UNIFIED IDEOGRAPH-285ED   # 
+
+2F9E5 ;        2872E ; SL      # ( 𨜮 → 𨜮 ) CJK COMPATIBILITY IDEOGRAPH-2F9E5 → CJK UNIFIED IDEOGRAPH-2872E   # 
+
+2F9ED ;        28BFA ; SL      # ( 𨯺 → 𨯺 ) CJK COMPATIBILITY IDEOGRAPH-2F9ED → CJK UNIFIED IDEOGRAPH-28BFA   # 
+
+2F9F1 ;        28D77 ; SL      # ( 𨵷 → 𨵷 ) CJK COMPATIBILITY IDEOGRAPH-2F9F1 → CJK UNIFIED IDEOGRAPH-28D77   # 
+
+2F9F6 ;        29145 ; SL      # ( 𩅅 → 𩅅 ) CJK COMPATIBILITY IDEOGRAPH-2F9F6 → CJK UNIFIED IDEOGRAPH-29145   # 
+
+2F81C ;        291DF ; SL      # ( 𩇟 → 𩇟 ) CJK COMPATIBILITY IDEOGRAPH-2F81C → CJK UNIFIED IDEOGRAPH-291DF   # 
+
+2F9F7 ;        2921A ; SL      # ( 𩈚 → 𩈚 ) CJK COMPATIBILITY IDEOGRAPH-2F9F7 → CJK UNIFIED IDEOGRAPH-2921A   # 
+
+2F9FB ;        2940A ; SL      # ( 𩐊 → 𩐊 ) CJK COMPATIBILITY IDEOGRAPH-2F9FB → CJK UNIFIED IDEOGRAPH-2940A   # 
+
+2F9FD ;        29496 ; SL      # ( 𩒖 → 𩒖 ) CJK COMPATIBILITY IDEOGRAPH-2F9FD → CJK UNIFIED IDEOGRAPH-29496   # 
+
+2FA01 ;        295B6 ; SL      # ( 𩖶 → 𩖶 ) CJK COMPATIBILITY IDEOGRAPH-2FA01 → CJK UNIFIED IDEOGRAPH-295B6   # 
+
+2FA09 ;        29B30 ; SL      # ( 𩬰 → 𩬰 ) CJK COMPATIBILITY IDEOGRAPH-2FA09 → CJK UNIFIED IDEOGRAPH-29B30   # 
+
+2FA10 ;        2A0CE ; SL      # ( 𪃎 → 𪃎 ) CJK COMPATIBILITY IDEOGRAPH-2FA10 → CJK UNIFIED IDEOGRAPH-2A0CE   # 
+
+2FA12 ;        2A105 ; SL      # ( 𪄅 → 𪄅 ) CJK COMPATIBILITY IDEOGRAPH-2FA12 → CJK UNIFIED IDEOGRAPH-2A105   # 
+
+2FA13 ;        2A20E ; SL      # ( 𪈎 → 𪈎 ) CJK COMPATIBILITY IDEOGRAPH-2FA13 → CJK UNIFIED IDEOGRAPH-2A20E   # 
+
+2FA14 ;        2A291 ; SL      # ( 𪊑 → 𪊑 ) CJK COMPATIBILITY IDEOGRAPH-2FA14 → CJK UNIFIED IDEOGRAPH-2A291   # 
+
+2F88F ;        2A392 ; SL      # ( 𪎒 → 𪎒 ) CJK COMPATIBILITY IDEOGRAPH-2F88F → CJK UNIFIED IDEOGRAPH-2A392   # 
+
+2FA1D ;        2A600 ; SL      # ( 𪘀 → 𪘀 ) CJK COMPATIBILITY IDEOGRAPH-2FA1D → CJK UNIFIED IDEOGRAPH-2A600   # 
+
+# total for (SL): 4770
+
+
+# Single-Script, Anycase Confusables
+
+05AD ; 0596 ;  SA      # ( ֭ → ֖ ) HEBREW ACCENT DEHI → HEBREW ACCENT TIPEHA     # 
+
+05AE ; 0598 ;  SA      # ( ֮ → ֘ ) HEBREW ACCENT ZINOR → HEBREW ACCENT ZARQA     # 
+
+05A8 ; 0599 ;  SA      # ( ֨ → ֙ ) HEBREW ACCENT QADMA → HEBREW ACCENT PASHTA    # 
+
+05A4 ; 059A ;  SA      # ( ֤ → ֚ ) HEBREW ACCENT MAHAPAKH → HEBREW ACCENT YETIV  # 
+
+06EC ; 06DF ;  SA      # ( ۬ → ۟ ) ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE → ARABIC SMALL HIGH ROUNDED ZERO  # 
+
+0619 ; 0313 ;  SA      # ( ؙ → ̓ ) ARABIC SMALL DAMMA → COMBINING COMMA ABOVE    # →ُ→
+0343 ; 0313 ;  SA      # ( ̓ → ̓ ) COMBINING GREEK KORONIS → COMBINING COMMA ABOVE       # 
+0315 ; 0313 ;  SA      # ( ̕ → ̓ ) COMBINING COMMA ABOVE RIGHT → COMBINING COMMA ABOVE   # 
+064F ; 0313 ;  SA      # ( ُ → ̓ ) ARABIC DAMMA → COMBINING COMMA ABOVE  # 
+
+059C ; 0301 ;  SA      # ( ֜ → ́ ) HEBREW ACCENT GERESH → COMBINING ACUTE ACCENT # 
+059D ; 0301 ;  SA      # ( ֝ → ́ ) HEBREW ACCENT GERESH MUQDAM → COMBINING ACUTE ACCENT  # →֜→
+0747 ; 0301 ;  SA      # ( ݇ → ́ ) SYRIAC OBLIQUE LINE ABOVE → COMBINING ACUTE ACCENT    # 
+0341 ; 0301 ;  SA      # ( ́ → ́ ) COMBINING ACUTE TONE MARK → COMBINING ACUTE ACCENT    # 
+0954 ; 0301 ;  SA      # ( ॔ → ́ ) DEVANAGARI ACUTE ACCENT → COMBINING ACUTE ACCENT     # 
+
+0340 ; 0300 ;  SA      # ( ̀ → ̀ ) COMBINING GRAVE TONE MARK → COMBINING GRAVE ACCENT    # 
+0953 ; 0300 ;  SA      # ( ॓ → ̀ ) DEVANAGARI GRAVE ACCENT → COMBINING GRAVE ACCENT     # 
+
+030C ; 0306 ;  SA      # ( ̌ → ̆ ) COMBINING CARON → COMBINING BREVE     # 
+036E ; 0306 ;  SA      # ( ͮ → ̆ ) COMBINING LATIN SMALL LETTER V → COMBINING BREVE      # →̌→
+
+0310 ; 0306 0307 ;     SA      # ( ̐ → ̆̇ ) COMBINING CANDRABINDU → COMBINING BREVE, COMBINING DOT ABOVE        # 
+0901 ; 0306 0307 ;     SA      # ( ँ → ̆̇ ) DEVANAGARI SIGN CANDRABINDU → COMBINING BREVE, COMBINING DOT ABOVE # →̐→
+0981 ; 0306 0307 ;     SA      # ( ঁ → ̆̇ ) BENGALI SIGN CANDRABINDU → COMBINING BREVE, COMBINING DOT ABOVE    # →̐→
+0A81 ; 0306 0307 ;     SA      # ( ઁ → ̆̇ ) GUJARATI SIGN CANDRABINDU → COMBINING BREVE, COMBINING DOT ABOVE   # →̐→
+0B01 ; 0306 0307 ;     SA      # ( ଁ → ̆̇ ) ORIYA SIGN CANDRABINDU → COMBINING BREVE, COMBINING DOT ABOVE      # →̐→
+
+0311 ; 0302 ;  SA      # ( ̑ → ̂ ) COMBINING INVERTED BREVE → COMBINING CIRCUMFLEX ACCENT        # 
+07EE ; 0302 ;  SA      # ( ߮ → ̂ ) NKO COMBINING LONG DESCENDING TONE → COMBINING CIRCUMFLEX ACCENT      # 
+
+05AF ; 030A ;  SA      # ( ֯ → ̊ ) HEBREW MARK MASORA CIRCLE → COMBINING RING ABOVE      # 
+17D3 ; 030A ;  SA      # ( ៓ → ̊ ) KHMER SIGN BATHAMASAT → COMBINING RING ABOVE # 
+0B82 ; 030A ;  SA      # ( ஂ → ̊ ) TAMIL SIGN ANUSVARA → COMBINING RING ABOVE   # 
+0E4D ; 030A ;  SA      # ( ํ → ̊ ) THAI CHARACTER NIKHAHIT → COMBINING RING ABOVE       # 
+0ECD ; 030A ;  SA      # ( ໍ → ̊ ) LAO NIGGAHITA → COMBINING RING ABOVE # 
+1036 ; 030A ;  SA      # ( ံ → ̊ ) MYANMAR SIGN ANUSVARA → COMBINING RING ABOVE # 
+17C6 ; 030A ;  SA      # ( ំ → ̊ ) KHMER SIGN NIKAHIT → COMBINING RING ABOVE    # 
+309A ; 030A ;  SA      # ( ゚ → ̊ ) COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK → COMBINING RING ABOVE    # 
+0366 ; 030A ;  SA      # ( ͦ → ̊ ) COMBINING LATIN SMALL LETTER O → COMBINING RING ABOVE # 
+
+07F3 ; 0308 ;  SA      # ( ߳ → ̈ ) NKO COMBINING DOUBLE DOT ABOVE → COMBINING DIAERESIS  # 
+
+0342 ; 0303 ;  SA      # ( ͂ → ̃ ) COMBINING GREEK PERISPOMENI → COMBINING TILDE # 
+
+05C4 ; 0307 ;  SA      # ( ׄ → ̇ ) HEBREW MARK UPPER DOT → COMBINING DOT ABOVE   # 
+0740 ; 0307 ;  SA      # ( ݀ → ̇ ) SYRIAC FEMININE DOT → COMBINING DOT ABOVE     # →݁→
+0741 ; 0307 ;  SA      # ( ݁ → ̇ ) SYRIAC QUSHSHAYA → COMBINING DOT ABOVE        # 
+0358 ; 0307 ;  SA      # ( ͘ → ̇ ) COMBINING DOT ABOVE RIGHT → COMBINING DOT ABOVE       # 
+05B9 ; 0307 ;  SA      # ( ֹ → ̇ ) HEBREW POINT HOLAM → COMBINING DOT ABOVE      # 
+05BA ; 0307 ;  SA      # ( ֺ → ̇ ) HEBREW POINT HOLAM HASER FOR VAV → COMBINING DOT ABOVE        # →ׁ→
+05C2 ; 0307 ;  SA      # ( ׂ → ̇ ) HEBREW POINT SIN DOT → COMBINING DOT ABOVE    # 
+05C1 ; 0307 ;  SA      # ( ׁ → ̇ ) HEBREW POINT SHIN DOT → COMBINING DOT ABOVE   # 
+07ED ; 0307 ;  SA      # ( ߭ → ̇ ) NKO COMBINING SHORT RISING TONE → COMBINING DOT ABOVE # 
+0902 ; 0307 ;  SA      # ( ं → ̇ ) DEVANAGARI SIGN ANUSVARA → COMBINING DOT ABOVE       # 
+0A02 ; 0307 ;  SA      # ( ਂ → ̇ ) GURMUKHI SIGN BINDI → COMBINING DOT ABOVE    # 
+0A82 ; 0307 ;  SA      # ( ં → ̇ ) GUJARATI SIGN ANUSVARA → COMBINING DOT ABOVE # 
+0BCD ; 0307 ;  SA      # ( ் → ̇ ) TAMIL SIGN VIRAMA → COMBINING DOT ABOVE      # 
+
+0337 ; 0338 ;  SA      # ( ̷ → ̸ ) COMBINING SHORT SOLIDUS OVERLAY → COMBINING LONG SOLIDUS OVERLAY      # 
+
+0322 ; 0328 ;  SA      # ( ̢ → ̨ ) COMBINING RETROFLEX HOOK BELOW → COMBINING OGONEK     # 
+0345 ; 0328 ;  SA      # ( ͅ → ̨ ) COMBINING GREEK YPOGEGRAMMENI → COMBINING OGONEK      # 
+
+0305 ; 0304 ;  SA      # ( ̅ → ̄ ) COMBINING OVERLINE → COMBINING MACRON # 
+07EB ; 0304 ;  SA      # ( ߫ → ̄ ) NKO COMBINING SHORT HIGH TONE → COMBINING MACRON      # 
+
+0347 ; 0333 ;  SA      # ( ͇ → ̳ ) COMBINING EQUALS SIGN BELOW → COMBINING DOUBLE LOW LINE       # 
+
+302C ; 0309 ;  SA      # ( 〬 → ̉ ) IDEOGRAPHIC DEPARTING TONE MARK → COMBINING HOOK ABOVE       # 
+
+05C5 ; 0323 ;  SA      # ( ׅ → ̣ ) HEBREW MARK LOWER DOT → COMBINING DOT BELOW   # 
+05B4 ; 0323 ;  SA      # ( ִ → ̣ ) HEBREW POINT HIRIQ → COMBINING DOT BELOW      # 
+093C ; 0323 ;  SA      # ( ़ → ̣ ) DEVANAGARI SIGN NUKTA → COMBINING DOT BELOW  # 
+09BC ; 0323 ;  SA      # ( ় → ̣ ) BENGALI SIGN NUKTA → COMBINING DOT BELOW     # 
+0A3C ; 0323 ;  SA      # ( ਼ → ̣ ) GURMUKHI SIGN NUKTA → COMBINING DOT BELOW    # 
+0ABC ; 0323 ;  SA      # ( ઼ → ̣ ) GUJARATI SIGN NUKTA → COMBINING DOT BELOW    # 
+0B3C ; 0323 ;  SA      # ( ଼ → ̣ ) ORIYA SIGN NUKTA → COMBINING DOT BELOW       # 
+10A3A ;        0323 ;  SA      # ( 𐨺 → ̣ ) KHAROSHTHI SIGN DOT BELOW → COMBINING DOT BELOW     # 
+
+302D ; 0325 ;  SA      # ( 〭 → ̥ ) IDEOGRAPHIC ENTERING TONE MARK → COMBINING RING BELOW        # 
+
+0327 ; 0326 ;  SA      # ( ̧ → ̦ ) COMBINING CEDILLA → COMBINING COMMA BELOW     # →̡→
+0321 ; 0326 ;  SA      # ( ̡ → ̦ ) COMBINING PALATALIZED HOOK BELOW → COMBINING COMMA BELOW      # 
+0339 ; 0326 ;  SA      # ( ̹ → ̦ ) COMBINING RIGHT HALF RING BELOW → COMBINING COMMA BELOW       # →̧→→̡→
+
+0952 ; 0331 ;  SA      # ( ॒ → ̱ ) DEVANAGARI STRESS SIGN ANUDATTA → COMBINING MACRON BELOW     # 
+0320 ; 0331 ;  SA      # ( ̠ → ̱ ) COMBINING MINUS SIGN BELOW → COMBINING MACRON BELOW   # 
+
+0336 ; 0335 ;  SA      # ( ̶ → ̵ ) COMBINING LONG STROKE OVERLAY → COMBINING SHORT STROKE OVERLAY        # 
+
+FC5E ; FE72 0651 ;     SA      #* ( ‎ﱞ‎ → ‎ﹲّ‎ ) ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM → ARABIC DAMMATAN ISOLATED FORM, ARABIC SHADDA    # 
+
+FC5F ; FE74 0651 ;     SA      #* ( ‎ﱟ‎ → ‎ﹴّ‎ ) ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM → ARABIC KASRATAN ISOLATED FORM, ARABIC SHADDA    # 
+
+0618 ; 064E ;  SA      # ( ؘ → َ ) ARABIC SMALL FATHA → ARABIC FATHA     # 
+
+FCF2 ; FE77 0651 ;     SA      # ( ‎ﳲ‎ → ‎ﹷّ‎ ) ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM → ARABIC FATHA MEDIAL FORM, ARABIC SHADDA       # 
+
+FC60 ; FE76 0651 ;     SA      #* ( ‎ﱠ‎ → ‎ﹶّ‎ ) ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM → ARABIC FATHA ISOLATED FORM, ARABIC SHADDA  # 
+FC62 ; FE76 0651 ;     SA      #* ( ‎ﱢ‎ → ‎ﹶّ‎ ) ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM → ARABIC FATHA ISOLATED FORM, ARABIC SHADDA  # →‎ﱠ‎→
+
+FCF3 ; FE79 0651 ;     SA      # ( ‎ﳳ‎ → ‎ﹹّ‎ ) ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM → ARABIC DAMMA MEDIAL FORM, ARABIC SHADDA       # 
+
+FC61 ; FE78 0651 ;     SA      #* ( ‎ﱡ‎ → ‎ﹸّ‎ ) ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM → ARABIC DAMMA ISOLATED FORM, ARABIC SHADDA  # 
+
+061A ; 0650 ;  SA      # ( ؚ → ِ ) ARABIC SMALL KASRA → ARABIC KASRA     # 
+
+FCF4 ; FE7B 0651 ;     SA      # ( ‎ﳴ‎ → ‎ﹻّ‎ ) ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM → ARABIC KASRA MEDIAL FORM, ARABIC SHADDA       # 
+
+FC63 ; FE7C 0670 ;     SA      #* ( ‎ﱣ‎ → ‎ﹼٰ‎ ) ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM → ARABIC SHADDA ISOLATED FORM, ARABIC LETTER SUPERSCRIPT ALEF     # 
+
+0742 ; 073C ;  SA      # ( ݂ → ܼ ) SYRIAC RUKKAKHA → SYRIAC HBASA-ESASA DOTTED   # 
+
+309B ; FF9E ;  SA      #* ( ゛ → ゙ ) KATAKANA-HIRAGANA VOICED SOUND MARK → HALFWIDTH KATAKANA VOICED SOUND MARK # 
+
+309C ; FF9F ;  SA      #* ( ゜ → ゚ ) KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK → HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK       # 
+
+180E ; 0020 ;  SA      #* ( ᠎ →   ) MONGOLIAN VOWEL SEPARATOR → SPACE    # 
+2028 ; 0020 ;  SA      #* (  →   ) LINE SEPARATOR → SPACE  # 
+2029 ; 0020 ;  SA      #* (  →   ) PARAGRAPH SEPARATOR → SPACE     # 
+2000 ; 0020 ;  SA      #* (   →   ) EN QUAD → SPACE      # 
+2001 ; 0020 ;  SA      #* (   →   ) EM QUAD → SPACE      # 
+2002 ; 0020 ;  SA      #* (   →   ) EN SPACE → SPACE     # 
+2003 ; 0020 ;  SA      #* (   →   ) EM SPACE → SPACE     # 
+2004 ; 0020 ;  SA      #* (   →   ) THREE-PER-EM SPACE → SPACE   # 
+2005 ; 0020 ;  SA      #* (   →   ) FOUR-PER-EM SPACE → SPACE    # 
+2006 ; 0020 ;  SA      #* (   →   ) SIX-PER-EM SPACE → SPACE     # 
+2008 ; 0020 ;  SA      #* (   →   ) PUNCTUATION SPACE → SPACE    # 
+2009 ; 0020 ;  SA      #* (   →   ) THIN SPACE → SPACE   # 
+200A ; 0020 ;  SA      #* (   →   ) HAIR SPACE → SPACE   # 
+205F ; 0020 ;  SA      #* (   →   ) MEDIUM MATHEMATICAL SPACE → SPACE    # 
+00A0 ; 0020 ;  SA      #* (   →   ) NO-BREAK SPACE → SPACE        # 
+2007 ; 0020 ;  SA      #* (   →   ) FIGURE SPACE → SPACE # 
+202F ; 0020 ;  SA      #* (   →   ) NARROW NO-BREAK SPACE → SPACE        # 
+1680 ; 0020 ;  SA      #* (   →   ) OGHAM SPACE MARK → SPACE     # 
+
+02C4 ; 005E ;  SA      #* ( ˄ → ^ ) MODIFIER LETTER UP ARROWHEAD → CIRCUMFLEX ACCENT      # 
+02C6 ; 005E ;  SA      # ( ˆ → ^ ) MODIFIER LETTER CIRCUMFLEX ACCENT → CIRCUMFLEX ACCENT  # 
+
+07FA ; 005F ;  SA      # ( ‎ߺ‎ → _ ) NKO LAJANYALAN → LOW LINE        # 
+FE4D ; 005F ;  SA      # ( ﹍ → _ ) DASHED LOW LINE → LOW LINE    # 
+FE4E ; 005F ;  SA      # ( ﹎ → _ ) CENTRELINE LOW LINE → LOW LINE        # 
+FE4F ; 005F ;  SA      # ( ﹏ → _ ) WAVY LOW LINE → LOW LINE      # 
+
+2307 ; FE34 ;  SA      #* ( ⌇ → ︴ ) WAVY LINE → PRESENTATION FORM FOR VERTICAL WAVY LOW LINE   # 
+
+2010 ; 002D ;  SA      #* ( ‐ → - ) HYPHEN → HYPHEN-MINUS        # 
+2011 ; 002D ;  SA      #* ( ‑ → - ) NON-BREAKING HYPHEN → HYPHEN-MINUS   # 
+2012 ; 002D ;  SA      #* ( ‒ → - ) FIGURE DASH → HYPHEN-MINUS   # 
+2013 ; 002D ;  SA      #* ( – → - ) EN DASH → HYPHEN-MINUS       # 
+FE58 ; 002D ;  SA      #* ( ﹘ → - ) SMALL EM DASH → HYPHEN-MINUS # 
+2043 ; 002D ;  SA      #* ( ⁃ → - ) HYPHEN BULLET → HYPHEN-MINUS # →‒→
+02D7 ; 002D ;  SA      #* ( ˗ → - ) MODIFIER LETTER MINUS SIGN → HYPHEN-MINUS     # 
+2212 ; 002D ;  SA      #* ( − → - ) MINUS SIGN → HYPHEN-MINUS    # 
+2CBA ; 002D ;  SA      # ( Ⲻ → - ) COPTIC CAPITAL LETTER DIALECT-P NI → HYPHEN-MINUS     # →‒→
+
+A4FE ; 002D 002E ;     SA      #* ( ꓾ → -. ) LISU PUNCTUATION COMMA → HYPHEN-MINUS, FULL STOP    # 
+
+FF5E ; 301C ;  SA      #* ( ~ → 〜 ) FULLWIDTH TILDE → WAVE DASH        # 
+
+00B8 ; 002C ;  SA      #* ( ¸ → , ) CEDILLA → COMMA       # 
+066B ; 002C ;  SA      #* ( ‎٫‎ → , ) ARABIC DECIMAL SEPARATOR → COMMA        # 
+201A ; 002C ;  SA      #* ( ‚ → , ) SINGLE LOW-9 QUOTATION MARK → COMMA  # 
+
+066C ; 060C ;  SA      #* ( ‎٬‎ → ، ) ARABIC THOUSANDS SEPARATOR → ARABIC COMMA      # 
+
+037E ; 003B ;  SA      #* ( ; → ; ) GREEK QUESTION MARK → SEMICOLON       # 
+
+0903 ; 003A ;  SA      # ( ः → : ) DEVANAGARI SIGN VISARGA → COLON       # 
+0A83 ; 003A ;  SA      # ( ઃ → : ) GUJARATI SIGN VISARGA → COLON # 
+FF1A ; 003A ;  SA      #* ( : → : ) FULLWIDTH COLON → COLON      # →︰→
+0589 ; 003A ;  SA      #* ( ։ → : ) ARMENIAN FULL STOP → COLON    # 
+0703 ; 003A ;  SA      #* ( ‎܃‎ → : ) SYRIAC SUPRALINEAR COLON → COLON        # 
+0704 ; 003A ;  SA      #* ( ‎܄‎ → : ) SYRIAC SUBLINEAR COLON → COLON  # 
+FE30 ; 003A ;  SA      #* ( ︰ → : ) PRESENTATION FORM FOR VERTICAL TWO DOT LEADER → COLON        # 
+1803 ; 003A ;  SA      #* ( ᠃ → : ) MONGOLIAN FULL STOP → COLON  # 
+1809 ; 003A ;  SA      #* ( ᠉ → : ) MONGOLIAN MANCHU FULL STOP → COLON   # 
+205A ; 003A ;  SA      #* ( ⁚ → : ) TWO DOT PUNCTUATION → COLON  # 
+05C3 ; 003A ;  SA      #* ( ‎׃‎ → : ) HEBREW PUNCTUATION SOF PASUQ → COLON    # 
+02F8 ; 003A ;  SA      #* ( ˸ → : ) MODIFIER LETTER RAISED COLON → COLON  # 
+A789 ; 003A ;  SA      #* ( ꞉ → : ) MODIFIER LETTER COLON → COLON        # 
+2236 ; 003A ;  SA      #* ( ∶ → : ) RATIO → COLON        # 
+02D0 ; 003A ;  SA      # ( ː → : ) MODIFIER LETTER TRIANGULAR COLON → COLON       # 
+A4FD ; 003A ;  SA      # ( ꓽ → : ) LISU LETTER TONE MYA JEU → COLON      # 
+
+2A74 ; 003A 003A 003D ;        SA      #* ( ⩴ → ::= ) DOUBLE COLON EQUAL → COLON, COLON, EQUALS SIGN     # 
+
+FF01 ; 0021 ;  SA      #* ( ! → ! ) FULLWIDTH EXCLAMATION MARK → EXCLAMATION MARK        # →ǃ→
+01C3 ; 0021 ;  SA      # ( ǃ → ! ) LATIN LETTER RETROFLEX CLICK → EXCLAMATION MARK        # 
+
+203C ; 0021 0021 ;     SA      #* ( ‼ → !! ) DOUBLE EXCLAMATION MARK → EXCLAMATION MARK, EXCLAMATION MARK        # 
+
+2049 ; 0021 003F ;     SA      #* ( ⁉ → !? ) EXCLAMATION QUESTION MARK → EXCLAMATION MARK, QUESTION MARK # 
+
+0294 ; 003F ;  SA      # ( ʔ → ? ) LATIN LETTER GLOTTAL STOP → QUESTION MARK      # 
+0241 ; 003F ;  SA      # ( Ɂ → ? ) LATIN CAPITAL LETTER GLOTTAL STOP → QUESTION MARK      # →ʔ→
+097D ; 003F ;  SA      # ( ॽ → ? ) DEVANAGARI LETTER GLOTTAL STOP → QUESTION MARK        # 
+
+2048 ; 003F 0021 ;     SA      #* ( ⁈ → ?! ) QUESTION EXCLAMATION MARK → QUESTION MARK, EXCLAMATION MARK # 
+
+2047 ; 003F 003F ;     SA      #* ( ⁇ → ?? ) DOUBLE QUESTION MARK → QUESTION MARK, QUESTION MARK # 
+
+1D16D ;        002E ;  SA      # ( 𝅭 → . ) MUSICAL SYMBOL COMBINING AUGMENTATION DOT → FULL STOP        # 
+2024 ; 002E ;  SA      #* ( ․ → . ) ONE DOT LEADER → FULL STOP   # 
+06D4 ; 002E ;  SA      #* ( ‎۔‎ → . ) ARABIC FULL STOP → FULL STOP    # 
+0701 ; 002E ;  SA      #* ( ‎܁‎ → . ) SYRIAC SUPRALINEAR FULL STOP → FULL STOP        # 
+0702 ; 002E ;  SA      #* ( ‎܂‎ → . ) SYRIAC SUBLINEAR FULL STOP → FULL STOP  # 
+A60E ; 002E ;  SA      #* ( ꘎ → . ) VAI FULL STOP → FULL STOP    # 
+10A50 ;        002E ;  SA      #* ( ‎𐩐‎ → . ) KHAROSHTHI PUNCTUATION DOT → FULL STOP        # 
+0660 ; 002E ;  SA      # ( ‎٠‎ → . ) ARABIC-INDIC DIGIT ZERO → FULL STOP      # 
+06F0 ; 002E ;  SA      # ( ۰ → . ) EXTENDED ARABIC-INDIC DIGIT ZERO → FULL STOP   # →‎٠‎→
+A4F8 ; 002E ;  SA      # ( ꓸ → . ) LISU LETTER TONE MYA TI → FULL STOP   # 
+A4FB ; 002E ;  SA      # ( ꓻ → . ) LISU LETTER TONE MYA BO → FULL STOP   # 
+
+2025 ; 002E 002E ;     SA      #* ( ‥ → .. ) TWO DOT LEADER → FULL STOP, FULL STOP       # 
+A4FA ; 002E 002E ;     SA      # ( ꓺ → .. ) LISU LETTER TONE MYA CYA → FULL STOP, FULL STOP      # 
+
+2026 ; 002E 002E 002E ;        SA      #* ( … → ... ) HORIZONTAL ELLIPSIS → FULL STOP, FULL STOP, FULL STOP      # 
+
+30FB ; 00B7 ;  SA      #* ( ・ → · ) KATAKANA MIDDLE DOT → MIDDLE DOT    # →•→
+FF65 ; 00B7 ;  SA      #* ( ・ → · ) HALFWIDTH KATAKANA MIDDLE DOT → MIDDLE DOT  # →•→
+0387 ; 00B7 ;  SA      # ( · → · ) GREEK ANO TELEIA → MIDDLE DOT # 
+10101 ;        00B7 ;  SA      #* ( 𐄁 → · ) AEGEAN WORD SEPARATOR DOT → MIDDLE DOT     # 
+2022 ; 00B7 ;  SA      #* ( • → · ) BULLET → MIDDLE DOT # 
+2027 ; 00B7 ;  SA      #* ( ‧ → · ) HYPHENATION POINT → MIDDLE DOT      # 
+2219 ; 00B7 ;  SA      #* ( ∙ → · ) BULLET OPERATOR → MIDDLE DOT        # 
+22C5 ; 00B7 ;  SA      #* ( ⋅ → · ) DOT OPERATOR → MIDDLE DOT   # 
+1427 ; 00B7 ;  SA      # ( ᐧ → · ) CANADIAN SYLLABICS FINAL MIDDLE DOT → MIDDLE DOT     # 
+
+22EF ; 00B7 00B7 00B7 ;        SA      #* ( ⋯ → ··· ) MIDLINE HORIZONTAL ELLIPSIS → MIDDLE DOT, MIDDLE DOT, MIDDLE DOT        # 
+
+152F ; 00B7 0034 ;     SA      # ( ᔯ → ·4 ) CANADIAN SYLLABICS YWE → MIDDLE DOT, DIGIT FOUR     # →ᐧ4→
+
+140C ; 00B7 1401 ;     SA      # ( ᐌ → ·ᐁ ) CANADIAN SYLLABICS WE → MIDDLE DOT, CANADIAN SYLLABICS E  # →ᐧᐁ→
+
+140E ; 00B7 1403 ;     SA      # ( ᐎ → ·ᐃ ) CANADIAN SYLLABICS WI → MIDDLE DOT, CANADIAN SYLLABICS I  # →ᐧᐃ→
+
+1410 ; 00B7 1404 ;     SA      # ( ᐐ → ·ᐄ ) CANADIAN SYLLABICS WII → MIDDLE DOT, CANADIAN SYLLABICS II        # →ᐧᐄ→
+
+1412 ; 00B7 1405 ;     SA      # ( ᐒ → ·ᐅ ) CANADIAN SYLLABICS WO → MIDDLE DOT, CANADIAN SYLLABICS O  # →ᐧᐅ→
+
+1414 ; 00B7 1406 ;     SA      # ( ᐔ → ·ᐆ ) CANADIAN SYLLABICS WOO → MIDDLE DOT, CANADIAN SYLLABICS OO        # →ᐧᐆ→
+
+1417 ; 00B7 140A ;     SA      # ( ᐗ → ·ᐊ ) CANADIAN SYLLABICS WA → MIDDLE DOT, CANADIAN SYLLABICS A  # →ᐧᐊ→
+
+1419 ; 00B7 140B ;     SA      # ( ᐙ → ·ᐋ ) CANADIAN SYLLABICS WAA → MIDDLE DOT, CANADIAN SYLLABICS AA        # →ᐧᐋ→
+
+1437 ; 00B7 1433 ;     SA      # ( ᐷ → ·ᐳ ) CANADIAN SYLLABICS CARRIER HI → MIDDLE DOT, CANADIAN SYLLABICS PO # →ᑀ→→ᐧᐳ→
+1440 ; 00B7 1433 ;     SA      # ( ᑀ → ·ᐳ ) CANADIAN SYLLABICS PWO → MIDDLE DOT, CANADIAN SYLLABICS PO        # →ᐧᐳ→
+
+1442 ; 00B7 1434 ;     SA      # ( ᑂ → ·ᐴ ) CANADIAN SYLLABICS PWOO → MIDDLE DOT, CANADIAN SYLLABICS POO      # →ᐧᐴ→
+
+1444 ; 00B7 1438 ;     SA      # ( ᑄ → ·ᐸ ) CANADIAN SYLLABICS PWA → MIDDLE DOT, CANADIAN SYLLABICS PA        # →ᐧᐸ→
+
+1446 ; 00B7 1439 ;     SA      # ( ᑆ → ·ᐹ ) CANADIAN SYLLABICS PWAA → MIDDLE DOT, CANADIAN SYLLABICS PAA      # →ᐧᐹ→
+
+1457 ; 00B7 144C ;     SA      # ( ᑗ → ·ᑌ ) CANADIAN SYLLABICS TWE → MIDDLE DOT, CANADIAN SYLLABICS TE        # →ᐧᑌ→
+
+1459 ; 00B7 144E ;     SA      # ( ᑙ → ·ᑎ ) CANADIAN SYLLABICS TWI → MIDDLE DOT, CANADIAN SYLLABICS TI        # →ᐧᑎ→
+
+145B ; 00B7 144F ;     SA      # ( ᑛ → ·ᑏ ) CANADIAN SYLLABICS TWII → MIDDLE DOT, CANADIAN SYLLABICS TII      # →ᐧᑏ→
+
+1454 ; 00B7 1450 ;     SA      # ( ᑔ → ·ᑐ ) CANADIAN SYLLABICS CARRIER DI → MIDDLE DOT, CANADIAN SYLLABICS TO # →ᑝ→→ᐧᑐ→
+145D ; 00B7 1450 ;     SA      # ( ᑝ → ·ᑐ ) CANADIAN SYLLABICS TWO → MIDDLE DOT, CANADIAN SYLLABICS TO        # →ᐧᑐ→
+
+145F ; 00B7 1451 ;     SA      # ( ᑟ → ·ᑑ ) CANADIAN SYLLABICS TWOO → MIDDLE DOT, CANADIAN SYLLABICS TOO      # →ᐧᑑ→
+
+1461 ; 00B7 1455 ;     SA      # ( ᑡ → ·ᑕ ) CANADIAN SYLLABICS TWA → MIDDLE DOT, CANADIAN SYLLABICS TA        # →ᐧᑕ→
+
+1463 ; 00B7 1456 ;     SA      # ( ᑣ → ·ᑖ ) CANADIAN SYLLABICS TWAA → MIDDLE DOT, CANADIAN SYLLABICS TAA      # →ᐧᑖ→
+
+1474 ; 00B7 146B ;     SA      # ( ᑴ → ·ᑫ ) CANADIAN SYLLABICS KWE → MIDDLE DOT, CANADIAN SYLLABICS KE        # →ᐧᑫ→
+
+1478 ; 00B7 146E ;     SA      # ( ᑸ → ·ᑮ ) CANADIAN SYLLABICS KWII → MIDDLE DOT, CANADIAN SYLLABICS KII      # →ᐧᑮ→
+
+147C ; 00B7 1470 ;     SA      # ( ᑼ → ·ᑰ ) CANADIAN SYLLABICS KWOO → MIDDLE DOT, CANADIAN SYLLABICS KOO      # →ᐧᑰ→
+
+147E ; 00B7 1472 ;     SA      # ( ᑾ → ·ᑲ ) CANADIAN SYLLABICS KWA → MIDDLE DOT, CANADIAN SYLLABICS KA        # →ᐧᑲ→
+
+1480 ; 00B7 1473 ;     SA      # ( ᒀ → ·ᑳ ) CANADIAN SYLLABICS KWAA → MIDDLE DOT, CANADIAN SYLLABICS KAA      # →ᐧᑳ→
+
+1492 ; 00B7 1489 ;     SA      # ( ᒒ → ·ᒉ ) CANADIAN SYLLABICS CWE → MIDDLE DOT, CANADIAN SYLLABICS CE        # →ᐧᒉ→
+
+1494 ; 00B7 148B ;     SA      # ( ᒔ → ·ᒋ ) CANADIAN SYLLABICS CWI → MIDDLE DOT, CANADIAN SYLLABICS CI        # →ᐧᒋ→
+
+1496 ; 00B7 148C ;     SA      # ( ᒖ → ·ᒌ ) CANADIAN SYLLABICS CWII → MIDDLE DOT, CANADIAN SYLLABICS CII      # →ᐧᒌ→
+
+149A ; 00B7 148E ;     SA      # ( ᒚ → ·ᒎ ) CANADIAN SYLLABICS CWOO → MIDDLE DOT, CANADIAN SYLLABICS COO      # →ᐧᒎ→
+
+149C ; 00B7 1490 ;     SA      # ( ᒜ → ·ᒐ ) CANADIAN SYLLABICS CWA → MIDDLE DOT, CANADIAN SYLLABICS CA        # →ᐧᒐ→
+
+149E ; 00B7 1491 ;     SA      # ( ᒞ → ·ᒑ ) CANADIAN SYLLABICS CWAA → MIDDLE DOT, CANADIAN SYLLABICS CAA      # →ᐧᒑ→
+
+14AC ; 00B7 14A3 ;     SA      # ( ᒬ → ·ᒣ ) CANADIAN SYLLABICS MWE → MIDDLE DOT, CANADIAN SYLLABICS ME        # →ᐧᒣ→
+
+14AE ; 00B7 14A5 ;     SA      # ( ᒮ → ·ᒥ ) CANADIAN SYLLABICS MWI → MIDDLE DOT, CANADIAN SYLLABICS MI        # →ᐧᒥ→
+
+14B0 ; 00B7 14A6 ;     SA      # ( ᒰ → ·ᒦ ) CANADIAN SYLLABICS MWII → MIDDLE DOT, CANADIAN SYLLABICS MII      # →ᐧᒦ→
+
+14B2 ; 00B7 14A7 ;     SA      # ( ᒲ → ·ᒧ ) CANADIAN SYLLABICS MWO → MIDDLE DOT, CANADIAN SYLLABICS MO        # →ᐧᒧ→
+
+14B4 ; 00B7 14A8 ;     SA      # ( ᒴ → ·ᒨ ) CANADIAN SYLLABICS MWOO → MIDDLE DOT, CANADIAN SYLLABICS MOO      # →ᐧᒨ→
+
+14B6 ; 00B7 14AA ;     SA      # ( ᒶ → ·ᒪ ) CANADIAN SYLLABICS MWA → MIDDLE DOT, CANADIAN SYLLABICS MA        # →ᐧᒪ→
+
+14B8 ; 00B7 14AB ;     SA      # ( ᒸ → ·ᒫ ) CANADIAN SYLLABICS MWAA → MIDDLE DOT, CANADIAN SYLLABICS MAA      # →ᐧᒫ→
+
+14C9 ; 00B7 14C0 ;     SA      # ( ᓉ → ·ᓀ ) CANADIAN SYLLABICS NWE → MIDDLE DOT, CANADIAN SYLLABICS NE        # →ᐧᓀ→
+
+14CB ; 00B7 14C7 ;     SA      # ( ᓋ → ·ᓇ ) CANADIAN SYLLABICS NWA → MIDDLE DOT, CANADIAN SYLLABICS NA        # →ᐧᓇ→
+
+14CD ; 00B7 14C8 ;     SA      # ( ᓍ → ·ᓈ ) CANADIAN SYLLABICS NWAA → MIDDLE DOT, CANADIAN SYLLABICS NAA      # →ᐧᓈ→
+
+14DC ; 00B7 14D3 ;     SA      # ( ᓜ → ·ᓓ ) CANADIAN SYLLABICS LWE → MIDDLE DOT, CANADIAN SYLLABICS LE        # →ᐧᓓ→
+
+14DE ; 00B7 14D5 ;     SA      # ( ᓞ → ·ᓕ ) CANADIAN SYLLABICS LWI → MIDDLE DOT, CANADIAN SYLLABICS LI        # →ᐧᓕ→
+
+14E0 ; 00B7 14D6 ;     SA      # ( ᓠ → ·ᓖ ) CANADIAN SYLLABICS LWII → MIDDLE DOT, CANADIAN SYLLABICS LII      # →ᐧᓖ→
+
+14E2 ; 00B7 14D7 ;     SA      # ( ᓢ → ·ᓗ ) CANADIAN SYLLABICS LWO → MIDDLE DOT, CANADIAN SYLLABICS LO        # →ᐧᓗ→
+
+14E4 ; 00B7 14D8 ;     SA      # ( ᓤ → ·ᓘ ) CANADIAN SYLLABICS LWOO → MIDDLE DOT, CANADIAN SYLLABICS LOO      # →ᐧᓘ→
+
+14E6 ; 00B7 14DA ;     SA      # ( ᓦ → ·ᓚ ) CANADIAN SYLLABICS LWA → MIDDLE DOT, CANADIAN SYLLABICS LA        # →ᐧᓚ→
+
+14E8 ; 00B7 14DB ;     SA      # ( ᓨ → ·ᓛ ) CANADIAN SYLLABICS LWAA → MIDDLE DOT, CANADIAN SYLLABICS LAA      # →ᐧᓛ→
+
+14F6 ; 00B7 14ED ;     SA      # ( ᓶ → ·ᓭ ) CANADIAN SYLLABICS SWE → MIDDLE DOT, CANADIAN SYLLABICS SE        # →ᐧᓭ→
+
+14F8 ; 00B7 14EF ;     SA      # ( ᓸ → ·ᓯ ) CANADIAN SYLLABICS SWI → MIDDLE DOT, CANADIAN SYLLABICS SI        # →ᐧᓯ→
+
+14FA ; 00B7 14F0 ;     SA      # ( ᓺ → ·ᓰ ) CANADIAN SYLLABICS SWII → MIDDLE DOT, CANADIAN SYLLABICS SII      # →ᐧᓰ→
+
+14FC ; 00B7 14F1 ;     SA      # ( ᓼ → ·ᓱ ) CANADIAN SYLLABICS SWO → MIDDLE DOT, CANADIAN SYLLABICS SO        # →ᐧᓱ→
+
+14FE ; 00B7 14F2 ;     SA      # ( ᓾ → ·ᓲ ) CANADIAN SYLLABICS SWOO → MIDDLE DOT, CANADIAN SYLLABICS SOO      # →ᐧᓲ→
+
+1500 ; 00B7 14F4 ;     SA      # ( ᔀ → ·ᓴ ) CANADIAN SYLLABICS SWA → MIDDLE DOT, CANADIAN SYLLABICS SA        # →ᐧᓴ→
+
+1502 ; 00B7 14F5 ;     SA      # ( ᔂ → ·ᓵ ) CANADIAN SYLLABICS SWAA → MIDDLE DOT, CANADIAN SYLLABICS SAA      # →ᐧᓵ→
+
+1517 ; 00B7 1510 ;     SA      # ( ᔗ → ·ᔐ ) CANADIAN SYLLABICS SHWE → MIDDLE DOT, CANADIAN SYLLABICS SHE      # →ᐧᔐ→
+
+1519 ; 00B7 1511 ;     SA      # ( ᔙ → ·ᔑ ) CANADIAN SYLLABICS SHWI → MIDDLE DOT, CANADIAN SYLLABICS SHI      # →ᐧᔑ→
+
+151B ; 00B7 1512 ;     SA      # ( ᔛ → ·ᔒ ) CANADIAN SYLLABICS SHWII → MIDDLE DOT, CANADIAN SYLLABICS SHII    # →ᐧᔒ→
+
+151D ; 00B7 1513 ;     SA      # ( ᔝ → ·ᔓ ) CANADIAN SYLLABICS SHWO → MIDDLE DOT, CANADIAN SYLLABICS SHO      # →ᐧᔓ→
+
+151F ; 00B7 1514 ;     SA      # ( ᔟ → ·ᔔ ) CANADIAN SYLLABICS SHWOO → MIDDLE DOT, CANADIAN SYLLABICS SHOO    # →ᐧᔔ→
+
+1521 ; 00B7 1515 ;     SA      # ( ᔡ → ·ᔕ ) CANADIAN SYLLABICS SHWA → MIDDLE DOT, CANADIAN SYLLABICS SHA      # →ᐧᔕ→
+
+1523 ; 00B7 1516 ;     SA      # ( ᔣ → ·ᔖ ) CANADIAN SYLLABICS SHWAA → MIDDLE DOT, CANADIAN SYLLABICS SHAA    # →ᐧᔖ→
+
+1531 ; 00B7 1528 ;     SA      # ( ᔱ → ·ᔨ ) CANADIAN SYLLABICS YWI → MIDDLE DOT, CANADIAN SYLLABICS YI        # →ᐧᔨ→
+
+1533 ; 00B7 1529 ;     SA      # ( ᔳ → ·ᔩ ) CANADIAN SYLLABICS YWII → MIDDLE DOT, CANADIAN SYLLABICS YII      # →ᐧᔩ→
+
+1535 ; 00B7 152A ;     SA      # ( ᔵ → ·ᔪ ) CANADIAN SYLLABICS YWO → MIDDLE DOT, CANADIAN SYLLABICS YO        # →ᐧᔪ→
+
+1537 ; 00B7 152B ;     SA      # ( ᔷ → ·ᔫ ) CANADIAN SYLLABICS YWOO → MIDDLE DOT, CANADIAN SYLLABICS YOO      # →ᐧᔫ→
+
+1539 ; 00B7 152D ;     SA      # ( ᔹ → ·ᔭ ) CANADIAN SYLLABICS YWA → MIDDLE DOT, CANADIAN SYLLABICS YA        # →ᐧᔭ→
+
+153B ; 00B7 152E ;     SA      # ( ᔻ → ·ᔮ ) CANADIAN SYLLABICS YWAA → MIDDLE DOT, CANADIAN SYLLABICS YAA      # →ᐧᔮ→
+
+154E ; 00B7 154C ;     SA      # ( ᕎ → ·ᕌ ) CANADIAN SYLLABICS RWAA → MIDDLE DOT, CANADIAN SYLLABICS RAA      # →ᐧᕌ→
+
+155B ; 00B7 155A ;     SA      # ( ᕛ → ·ᕚ ) CANADIAN SYLLABICS FWAA → MIDDLE DOT, CANADIAN SYLLABICS FAA      # →ᐧᕚ→
+
+1568 ; 00B7 1567 ;     SA      # ( ᕨ → ·ᕧ ) CANADIAN SYLLABICS THWAA → MIDDLE DOT, CANADIAN SYLLABICS THAA    # →ᐧᕧ→
+
+FE19 ; 205D ;  SA      #* ( ︙ → ⁝ ) PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS → TRICOLON      # 
+22EE ; 205D ;  SA      #* ( ⋮ → ⁝ ) VERTICAL ELLIPSIS → TRICOLON       # →︙→
+
+0060 ; 0027 ;  SA      #* ( ` → ' ) GRAVE ACCENT → APOSTROPHE      # →ˋ→→`→→‘→
+1FEF ; 0027 ;  SA      #* ( ` → ' ) GREEK VARIA → APOSTROPHE     # →ˋ→→`→→‘→
+FF40 ; 0027 ;  SA      #* ( ` → ' ) FULLWIDTH GRAVE ACCENT → APOSTROPHE  # →‘→
+00B4 ; 0027 ;  SA      #* ( ´ → ' ) ACUTE ACCENT → APOSTROPHE     # →΄→→ʹ→
+0384 ; 0027 ;  SA      #* ( ΄ → ' ) GREEK TONOS → APOSTROPHE      # →ʹ→
+1FFD ; 0027 ;  SA      #* ( ´ → ' ) GREEK OXIA → APOSTROPHE      # →ˊ→→ʹ→→′→
+1FBD ; 0027 ;  SA      #* ( ᾽ → ' ) GREEK KORONIS → APOSTROPHE   # →’→
+1FBF ; 0027 ;  SA      #* ( ᾿ → ' ) GREEK PSILI → APOSTROPHE     # →’→
+1FFE ; 0027 ;  SA      #* ( ῾ → ' ) GREEK DASIA → APOSTROPHE     # →‛→→′→
+055D ; 0027 ;  SA      #* ( ՝ → ' ) ARMENIAN COMMA → APOSTROPHE   # →ˋ→→`→→‘→
+FF07 ; 0027 ;  SA      #* ( ' → ' ) FULLWIDTH APOSTROPHE → APOSTROPHE    # →’→
+2018 ; 0027 ;  SA      #* ( ‘ → ' ) LEFT SINGLE QUOTATION MARK → APOSTROPHE      # 
+2019 ; 0027 ;  SA      #* ( ’ → ' ) RIGHT SINGLE QUOTATION MARK → APOSTROPHE     # 
+201B ; 0027 ;  SA      #* ( ‛ → ' ) SINGLE HIGH-REVERSED-9 QUOTATION MARK → APOSTROPHE   # →′→
+2032 ; 0027 ;  SA      #* ( ′ → ' ) PRIME → APOSTROPHE   # 
+2035 ; 0027 ;  SA      #* ( ‵ → ' ) REVERSED PRIME → APOSTROPHE  # →ʽ→→‘→
+055A ; 0027 ;  SA      #* ( ՚ → ' ) ARMENIAN APOSTROPHE → APOSTROPHE      # →’→
+05F3 ; 0027 ;  SA      #* ( ‎׳‎ → ' ) HEBREW PUNCTUATION GERESH → APOSTROPHE  # 
+02B9 ; 0027 ;  SA      # ( ʹ → ' ) MODIFIER LETTER PRIME → APOSTROPHE     # 
+0374 ; 0027 ;  SA      # ( ʹ → ' ) GREEK NUMERAL SIGN → APOSTROPHE        # →′→
+02CA ; 0027 ;  SA      # ( ˊ → ' ) MODIFIER LETTER ACUTE ACCENT → APOSTROPHE      # →ʹ→→′→
+02CB ; 0027 ;  SA      # ( ˋ → ' ) MODIFIER LETTER GRAVE ACCENT → APOSTROPHE      # →`→→‘→
+02F4 ; 0027 ;  SA      #* ( ˴ → ' ) MODIFIER LETTER MIDDLE GRAVE ACCENT → APOSTROPHE      # →ˋ→→`→→‘→
+02BB ; 0027 ;  SA      # ( ʻ → ' ) MODIFIER LETTER TURNED COMMA → APOSTROPHE      # →‘→
+02BD ; 0027 ;  SA      # ( ʽ → ' ) MODIFIER LETTER REVERSED COMMA → APOSTROPHE    # →‘→
+02BC ; 0027 ;  SA      # ( ʼ → ' ) MODIFIER LETTER APOSTROPHE → APOSTROPHE        # →′→
+02BE ; 0027 ;  SA      # ( ʾ → ' ) MODIFIER LETTER RIGHT HALF RING → APOSTROPHE   # →ʼ→→′→
+A78C ; 0027 ;  SA      # ( ꞌ → ' ) LATIN SMALL LETTER SALTILLO → APOSTROPHE      # 
+05D9 ; 0027 ;  SA      # ( ‎י‎ → ' ) HEBREW LETTER YOD → APOSTROPHE   # 
+07F4 ; 0027 ;  SA      # ( ‎ߴ‎ → ' ) NKO HIGH TONE APOSTROPHE → APOSTROPHE    # →’→
+07F5 ; 0027 ;  SA      # ( ‎ߵ‎ → ' ) NKO LOW TONE APOSTROPHE → APOSTROPHE     # →‘→
+
+02DD ; 0027 0027 ;     SA      #* ( ˝ → '' ) DOUBLE ACUTE ACCENT → APOSTROPHE, APOSTROPHE # →"→
+0022 ; 0027 0027 ;     SA      #* ( " → '' ) QUOTATION MARK → APOSTROPHE, APOSTROPHE       # 
+FF02 ; 0027 0027 ;     SA      #* ( " → '' ) FULLWIDTH QUOTATION MARK → APOSTROPHE, APOSTROPHE   # →”→→"→
+201C ; 0027 0027 ;     SA      #* ( “ → '' ) LEFT DOUBLE QUOTATION MARK → APOSTROPHE, APOSTROPHE # →"→
+201D ; 0027 0027 ;     SA      #* ( ” → '' ) RIGHT DOUBLE QUOTATION MARK → APOSTROPHE, APOSTROPHE        # →"→
+201F ; 0027 0027 ;     SA      #* ( ‟ → '' ) DOUBLE HIGH-REVERSED-9 QUOTATION MARK → APOSTROPHE, APOSTROPHE      # →”→→"→
+2033 ; 0027 0027 ;     SA      #* ( ″ → '' ) DOUBLE PRIME → APOSTROPHE, APOSTROPHE       # →"→
+2036 ; 0027 0027 ;     SA      #* ( ‶ → '' ) REVERSED DOUBLE PRIME → APOSTROPHE, APOSTROPHE      # →‵‵→
+3003 ; 0027 0027 ;     SA      #* ( 〃 → '' ) DITTO MARK → APOSTROPHE, APOSTROPHE # →″→→"→
+05F4 ; 0027 0027 ;     SA      #* ( ‎״‎ → '' ) HEBREW PUNCTUATION GERSHAYIM → APOSTROPHE, APOSTROPHE  # →"→
+02BA ; 0027 0027 ;     SA      # ( ʺ → '' ) MODIFIER LETTER DOUBLE PRIME → APOSTROPHE, APOSTROPHE # →"→
+02F6 ; 0027 0027 ;     SA      #* ( ˶ → '' ) MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT → APOSTROPHE, APOSTROPHE  # →˝→→"→
+02EE ; 0027 0027 ;     SA      # ( ˮ → '' ) MODIFIER LETTER DOUBLE APOSTROPHE → APOSTROPHE, APOSTROPHE    # →″→→"→
+05F2 ; 0027 0027 ;     SA      # ( ‎ײ‎ → '' ) HEBREW LIGATURE YIDDISH DOUBLE YOD → APOSTROPHE, APOSTROPHE     # →‎יי‎→
+
+2034 ; 0027 0027 0027 ;        SA      #* ( ‴ → ''' ) TRIPLE PRIME → APOSTROPHE, APOSTROPHE, APOSTROPHE  # →′′′→
+2037 ; 0027 0027 0027 ;        SA      #* ( ‷ → ''' ) REVERSED TRIPLE PRIME → APOSTROPHE, APOSTROPHE, APOSTROPHE # →‵‵‵→
+
+2057 ; 0027 0027 0027 0027 ;   SA      #* ( ⁗ → '''' ) QUADRUPLE PRIME → APOSTROPHE, APOSTROPHE, APOSTROPHE, APOSTROPHE  # →′′′′→
+
+0181 ; 0027 0042 ;     SA      # ( Ɓ → 'B ) LATIN CAPITAL LETTER B WITH HOOK → APOSTROPHE, LATIN CAPITAL LETTER B # →ʽB→
+
+018A ; 0027 0044 ;     SA      # ( Ɗ → 'D ) LATIN CAPITAL LETTER D WITH HOOK → APOSTROPHE, LATIN CAPITAL LETTER D # →ʽD→
+
+0149 ; 0027 006E ;     SA      # ( ʼn → 'n ) LATIN SMALL LETTER N PRECEDED BY APOSTROPHE → APOSTROPHE, LATIN SMALL LETTER N        # →ʼn→
+
+01A4 ; 0027 0050 ;     SA      # ( Ƥ → 'P ) LATIN CAPITAL LETTER P WITH HOOK → APOSTROPHE, LATIN CAPITAL LETTER P # →ʽP→
+
+01AC ; 0027 0054 ;     SA      # ( Ƭ → 'T ) LATIN CAPITAL LETTER T WITH HOOK → APOSTROPHE, LATIN CAPITAL LETTER T # →ʽT→
+
+01B3 ; 0027 0059 ;     SA      # ( Ƴ → 'Y ) LATIN CAPITAL LETTER Y WITH HOOK → APOSTROPHE, LATIN CAPITAL LETTER Y # →ʽY→
+
+FF3B ; 0028 ;  SA      #* ( [ → ( ) FULLWIDTH LEFT SQUARE BRACKET → LEFT PARENTHESIS     # →〔→
+3014 ; 0028 ;  SA      #* ( 〔 → ( ) LEFT TORTOISE SHELL BRACKET → LEFT PARENTHESIS       # 
+FD3E ; 0028 ;  SA      #* ( ﴾ → ( ) ORNATE LEFT PARENTHESIS → LEFT PARENTHESIS   # 
+2768 ; 0028 ;  SA      #* ( ❨ → ( ) MEDIUM LEFT PARENTHESIS ORNAMENT → LEFT PARENTHESIS  # 
+2772 ; 0028 ;  SA      #* ( ❲ → ( ) LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT → LEFT PARENTHESIS        # →〔→
+
+3220 ; 0028 30FC 0029 ;        SA      #* ( ㈠ → (ー) ) PARENTHESIZED IDEOGRAPH ONE → LEFT PARENTHESIS, KATAKANA-HIRAGANA PROLONGED SOUND MARK, RIGHT PARENTHESIS        # →(一)→
+
+2475 ; 0028 0032 0029 ;        SA      #* ( ⑵ → (2) ) PARENTHESIZED DIGIT TWO → LEFT PARENTHESIS, DIGIT TWO, RIGHT PARENTHESIS   # 
+
+2487 ; 0028 0032 004F 0029 ;   SA      #* ( ⒇ → (2O) ) PARENTHESIZED NUMBER TWENTY → LEFT PARENTHESIS, DIGIT TWO, LATIN CAPITAL LETTER O, RIGHT PARENTHESIS      # →(20)→
+
+2476 ; 0028 0033 0029 ;        SA      #* ( ⑶ → (3) ) PARENTHESIZED DIGIT THREE → LEFT PARENTHESIS, DIGIT THREE, RIGHT PARENTHESIS       # 
+
+2477 ; 0028 0034 0029 ;        SA      #* ( ⑷ → (4) ) PARENTHESIZED DIGIT FOUR → LEFT PARENTHESIS, DIGIT FOUR, RIGHT PARENTHESIS # 
+
+2478 ; 0028 0035 0029 ;        SA      #* ( ⑸ → (5) ) PARENTHESIZED DIGIT FIVE → LEFT PARENTHESIS, DIGIT FIVE, RIGHT PARENTHESIS # 
+
+2479 ; 0028 0036 0029 ;        SA      #* ( ⑹ → (6) ) PARENTHESIZED DIGIT SIX → LEFT PARENTHESIS, DIGIT SIX, RIGHT PARENTHESIS   # 
+
+247A ; 0028 0037 0029 ;        SA      #* ( ⑺ → (7) ) PARENTHESIZED DIGIT SEVEN → LEFT PARENTHESIS, DIGIT SEVEN, RIGHT PARENTHESIS       # 
+
+247B ; 0028 0038 0029 ;        SA      #* ( ⑻ → (8) ) PARENTHESIZED DIGIT EIGHT → LEFT PARENTHESIS, DIGIT EIGHT, RIGHT PARENTHESIS       # 
+
+247C ; 0028 0039 0029 ;        SA      #* ( ⑼ → (9) ) PARENTHESIZED DIGIT NINE → LEFT PARENTHESIS, DIGIT NINE, RIGHT PARENTHESIS # 
+
+249C ; 0028 0061 0029 ;        SA      #* ( ⒜ → (a) ) PARENTHESIZED LATIN SMALL LETTER A → LEFT PARENTHESIS, LATIN SMALL LETTER A, RIGHT PARENTHESIS     # 
+
+1F110 ;        0028 0041 0029 ;        SA      #* ( 🄐 → (A) ) PARENTHESIZED LATIN CAPITAL LETTER A → LEFT PARENTHESIS, LATIN CAPITAL LETTER A, RIGHT PARENTHESIS        # 
+
+249D ; 0028 0062 0029 ;        SA      #* ( ⒝ → (b) ) PARENTHESIZED LATIN SMALL LETTER B → LEFT PARENTHESIS, LATIN SMALL LETTER B, RIGHT PARENTHESIS     # 
+
+1F111 ;        0028 0042 0029 ;        SA      #* ( 🄑 → (B) ) PARENTHESIZED LATIN CAPITAL LETTER B → LEFT PARENTHESIS, LATIN CAPITAL LETTER B, RIGHT PARENTHESIS        # 
+
+249E ; 0028 0063 0029 ;        SA      #* ( ⒞ → (c) ) PARENTHESIZED LATIN SMALL LETTER C → LEFT PARENTHESIS, LATIN SMALL LETTER C, RIGHT PARENTHESIS     # 
+
+1F112 ;        0028 0043 0029 ;        SA      #* ( 🄒 → (C) ) PARENTHESIZED LATIN CAPITAL LETTER C → LEFT PARENTHESIS, LATIN CAPITAL LETTER C, RIGHT PARENTHESIS        # 
+
+249F ; 0028 0064 0029 ;        SA      #* ( ⒟ → (d) ) PARENTHESIZED LATIN SMALL LETTER D → LEFT PARENTHESIS, LATIN SMALL LETTER D, RIGHT PARENTHESIS     # 
+
+1F113 ;        0028 0044 0029 ;        SA      #* ( 🄓 → (D) ) PARENTHESIZED LATIN CAPITAL LETTER D → LEFT PARENTHESIS, LATIN CAPITAL LETTER D, RIGHT PARENTHESIS        # 
+
+24A0 ; 0028 0065 0029 ;        SA      #* ( ⒠ → (e) ) PARENTHESIZED LATIN SMALL LETTER E → LEFT PARENTHESIS, LATIN SMALL LETTER E, RIGHT PARENTHESIS     # 
+
+1F114 ;        0028 0045 0029 ;        SA      #* ( 🄔 → (E) ) PARENTHESIZED LATIN CAPITAL LETTER E → LEFT PARENTHESIS, LATIN CAPITAL LETTER E, RIGHT PARENTHESIS        # 
+
+24A1 ; 0028 0066 0029 ;        SA      #* ( ⒡ → (f) ) PARENTHESIZED LATIN SMALL LETTER F → LEFT PARENTHESIS, LATIN SMALL LETTER F, RIGHT PARENTHESIS     # 
+
+1F115 ;        0028 0046 0029 ;        SA      #* ( 🄕 → (F) ) PARENTHESIZED LATIN CAPITAL LETTER F → LEFT PARENTHESIS, LATIN CAPITAL LETTER F, RIGHT PARENTHESIS        # 
+
+24A2 ; 0028 0067 0029 ;        SA      #* ( ⒢ → (g) ) PARENTHESIZED LATIN SMALL LETTER G → LEFT PARENTHESIS, LATIN SMALL LETTER G, RIGHT PARENTHESIS     # 
+
+1F116 ;        0028 0047 0029 ;        SA      #* ( 🄖 → (G) ) PARENTHESIZED LATIN CAPITAL LETTER G → LEFT PARENTHESIS, LATIN CAPITAL LETTER G, RIGHT PARENTHESIS        # 
+
+24A3 ; 0028 0068 0029 ;        SA      #* ( ⒣ → (h) ) PARENTHESIZED LATIN SMALL LETTER H → LEFT PARENTHESIS, LATIN SMALL LETTER H, RIGHT PARENTHESIS     # 
+
+1F117 ;        0028 0048 0029 ;        SA      #* ( 🄗 → (H) ) PARENTHESIZED LATIN CAPITAL LETTER H → LEFT PARENTHESIS, LATIN CAPITAL LETTER H, RIGHT PARENTHESIS        # 
+
+24A4 ; 0028 0069 0029 ;        SA      #* ( ⒤ → (i) ) PARENTHESIZED LATIN SMALL LETTER I → LEFT PARENTHESIS, LATIN SMALL LETTER I, RIGHT PARENTHESIS     # 
+
+2474 ; 0028 0049 0029 ;        SA      #* ( ⑴ → (I) ) PARENTHESIZED DIGIT ONE → LEFT PARENTHESIS, LATIN CAPITAL LETTER I, RIGHT PARENTHESIS      # →(1)→→(l)→
+1F118 ;        0028 0049 0029 ;        SA      #* ( 🄘 → (I) ) PARENTHESIZED LATIN CAPITAL LETTER I → LEFT PARENTHESIS, LATIN CAPITAL LETTER I, RIGHT PARENTHESIS        # 
+24A7 ; 0028 0049 0029 ;        SA      #* ( ⒧ → (I) ) PARENTHESIZED LATIN SMALL LETTER L → LEFT PARENTHESIS, LATIN CAPITAL LETTER I, RIGHT PARENTHESIS   # →(l)→
+
+24A5 ; 0028 006A 0029 ;        SA      #* ( ⒥ → (j) ) PARENTHESIZED LATIN SMALL LETTER J → LEFT PARENTHESIS, LATIN SMALL LETTER J, RIGHT PARENTHESIS     # 
+
+1F119 ;        0028 004A 0029 ;        SA      #* ( 🄙 → (J) ) PARENTHESIZED LATIN CAPITAL LETTER J → LEFT PARENTHESIS, LATIN CAPITAL LETTER J, RIGHT PARENTHESIS        # 
+
+24A6 ; 0028 006B 0029 ;        SA      #* ( ⒦ → (k) ) PARENTHESIZED LATIN SMALL LETTER K → LEFT PARENTHESIS, LATIN SMALL LETTER K, RIGHT PARENTHESIS     # 
+
+1F11A ;        0028 004B 0029 ;        SA      #* ( 🄚 → (K) ) PARENTHESIZED LATIN CAPITAL LETTER K → LEFT PARENTHESIS, LATIN CAPITAL LETTER K, RIGHT PARENTHESIS        # 
+
+1F11B ;        0028 004C 0029 ;        SA      #* ( 🄛 → (L) ) PARENTHESIZED LATIN CAPITAL LETTER L → LEFT PARENTHESIS, LATIN CAPITAL LETTER L, RIGHT PARENTHESIS        # 
+
+247F ; 0028 006C 0032 0029 ;   SA      #* ( ⑿ → (l2) ) PARENTHESIZED NUMBER TWELVE → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT TWO, RIGHT PARENTHESIS        # →(12)→
+
+2480 ; 0028 006C 0033 0029 ;   SA      #* ( ⒀ → (l3) ) PARENTHESIZED NUMBER THIRTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT THREE, RIGHT PARENTHESIS    # →(13)→
+
+2481 ; 0028 006C 0034 0029 ;   SA      #* ( ⒁ → (l4) ) PARENTHESIZED NUMBER FOURTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT FOUR, RIGHT PARENTHESIS     # →(14)→
+
+2482 ; 0028 006C 0035 0029 ;   SA      #* ( ⒂ → (l5) ) PARENTHESIZED NUMBER FIFTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT FIVE, RIGHT PARENTHESIS      # →(15)→
+
+2483 ; 0028 006C 0036 0029 ;   SA      #* ( ⒃ → (l6) ) PARENTHESIZED NUMBER SIXTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT SIX, RIGHT PARENTHESIS       # →(16)→
+
+2484 ; 0028 006C 0037 0029 ;   SA      #* ( ⒄ → (l7) ) PARENTHESIZED NUMBER SEVENTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT SEVEN, RIGHT PARENTHESIS   # →(17)→
+
+2485 ; 0028 006C 0038 0029 ;   SA      #* ( ⒅ → (l8) ) PARENTHESIZED NUMBER EIGHTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT EIGHT, RIGHT PARENTHESIS    # →(18)→
+
+2486 ; 0028 006C 0039 0029 ;   SA      #* ( ⒆ → (l9) ) PARENTHESIZED NUMBER NINETEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT NINE, RIGHT PARENTHESIS     # →(19)→
+
+247E ; 0028 006C 006C 0029 ;   SA      #* ( ⑾ → (ll) ) PARENTHESIZED NUMBER ELEVEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, LATIN SMALL LETTER L, RIGHT PARENTHESIS     # →(11)→
+
+247D ; 0028 006C 004F 0029 ;   SA      #* ( ⑽ → (lO) ) PARENTHESIZED NUMBER TEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, LATIN CAPITAL LETTER O, RIGHT PARENTHESIS      # →(10)→
+
+1F11C ;        0028 004D 0029 ;        SA      #* ( 🄜 → (M) ) PARENTHESIZED LATIN CAPITAL LETTER M → LEFT PARENTHESIS, LATIN CAPITAL LETTER M, RIGHT PARENTHESIS        # 
+
+24A9 ; 0028 006E 0029 ;        SA      #* ( ⒩ → (n) ) PARENTHESIZED LATIN SMALL LETTER N → LEFT PARENTHESIS, LATIN SMALL LETTER N, RIGHT PARENTHESIS     # 
+
+1F11D ;        0028 004E 0029 ;        SA      #* ( 🄝 → (N) ) PARENTHESIZED LATIN CAPITAL LETTER N → LEFT PARENTHESIS, LATIN CAPITAL LETTER N, RIGHT PARENTHESIS        # 
+
+24AA ; 0028 006F 0029 ;        SA      #* ( ⒪ → (o) ) PARENTHESIZED LATIN SMALL LETTER O → LEFT PARENTHESIS, LATIN SMALL LETTER O, RIGHT PARENTHESIS     # 
+
+1F11E ;        0028 004F 0029 ;        SA      #* ( 🄞 → (O) ) PARENTHESIZED LATIN CAPITAL LETTER O → LEFT PARENTHESIS, LATIN CAPITAL LETTER O, RIGHT PARENTHESIS        # 
+
+24AB ; 0028 0070 0029 ;        SA      #* ( ⒫ → (p) ) PARENTHESIZED LATIN SMALL LETTER P → LEFT PARENTHESIS, LATIN SMALL LETTER P, RIGHT PARENTHESIS     # 
+
+1F11F ;        0028 0050 0029 ;        SA      #* ( 🄟 → (P) ) PARENTHESIZED LATIN CAPITAL LETTER P → LEFT PARENTHESIS, LATIN CAPITAL LETTER P, RIGHT PARENTHESIS        # 
+
+24AC ; 0028 0071 0029 ;        SA      #* ( ⒬ → (q) ) PARENTHESIZED LATIN SMALL LETTER Q → LEFT PARENTHESIS, LATIN SMALL LETTER Q, RIGHT PARENTHESIS     # 
+
+1F120 ;        0028 0051 0029 ;        SA      #* ( 🄠 → (Q) ) PARENTHESIZED LATIN CAPITAL LETTER Q → LEFT PARENTHESIS, LATIN CAPITAL LETTER Q, RIGHT PARENTHESIS        # 
+
+24AD ; 0028 0072 0029 ;        SA      #* ( ⒭ → (r) ) PARENTHESIZED LATIN SMALL LETTER R → LEFT PARENTHESIS, LATIN SMALL LETTER R, RIGHT PARENTHESIS     # 
+
+1F121 ;        0028 0052 0029 ;        SA      #* ( 🄡 → (R) ) PARENTHESIZED LATIN CAPITAL LETTER R → LEFT PARENTHESIS, LATIN CAPITAL LETTER R, RIGHT PARENTHESIS        # 
+
+24A8 ; 0028 0072 006E 0029 ;   SA      #* ( ⒨ → (rn) ) PARENTHESIZED LATIN SMALL LETTER M → LEFT PARENTHESIS, LATIN SMALL LETTER R, LATIN SMALL LETTER N, RIGHT PARENTHESIS      # →(m)→
+
+24AE ; 0028 0073 0029 ;        SA      #* ( ⒮ → (s) ) PARENTHESIZED LATIN SMALL LETTER S → LEFT PARENTHESIS, LATIN SMALL LETTER S, RIGHT PARENTHESIS     # 
+
+1F122 ;        0028 0053 0029 ;        SA      #* ( 🄢 → (S) ) PARENTHESIZED LATIN CAPITAL LETTER S → LEFT PARENTHESIS, LATIN CAPITAL LETTER S, RIGHT PARENTHESIS        # 
+1F12A ;        0028 0053 0029 ;        SA      #* ( 🄪 → (S) ) TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S → LEFT PARENTHESIS, LATIN CAPITAL LETTER S, RIGHT PARENTHESIS     # →〔S〕→
+
+24AF ; 0028 0074 0029 ;        SA      #* ( ⒯ → (t) ) PARENTHESIZED LATIN SMALL LETTER T → LEFT PARENTHESIS, LATIN SMALL LETTER T, RIGHT PARENTHESIS     # 
+
+1F123 ;        0028 0054 0029 ;        SA      #* ( 🄣 → (T) ) PARENTHESIZED LATIN CAPITAL LETTER T → LEFT PARENTHESIS, LATIN CAPITAL LETTER T, RIGHT PARENTHESIS        # 
+
+24B0 ; 0028 0075 0029 ;        SA      #* ( ⒰ → (u) ) PARENTHESIZED LATIN SMALL LETTER U → LEFT PARENTHESIS, LATIN SMALL LETTER U, RIGHT PARENTHESIS     # 
+
+1F124 ;        0028 0055 0029 ;        SA      #* ( 🄤 → (U) ) PARENTHESIZED LATIN CAPITAL LETTER U → LEFT PARENTHESIS, LATIN CAPITAL LETTER U, RIGHT PARENTHESIS        # 
+
+24B1 ; 0028 0076 0029 ;        SA      #* ( ⒱ → (v) ) PARENTHESIZED LATIN SMALL LETTER V → LEFT PARENTHESIS, LATIN SMALL LETTER V, RIGHT PARENTHESIS     # 
+
+1F125 ;        0028 0056 0029 ;        SA      #* ( 🄥 → (V) ) PARENTHESIZED LATIN CAPITAL LETTER V → LEFT PARENTHESIS, LATIN CAPITAL LETTER V, RIGHT PARENTHESIS        # 
+
+24B2 ; 0028 0076 0076 0029 ;   SA      #* ( ⒲ → (vv) ) PARENTHESIZED LATIN SMALL LETTER W → LEFT PARENTHESIS, LATIN SMALL LETTER V, LATIN SMALL LETTER V, RIGHT PARENTHESIS      # →(w)→
+
+1F126 ;        0028 0057 0029 ;        SA      #* ( 🄦 → (W) ) PARENTHESIZED LATIN CAPITAL LETTER W → LEFT PARENTHESIS, LATIN CAPITAL LETTER W, RIGHT PARENTHESIS        # 
+
+24B3 ; 0028 0078 0029 ;        SA      #* ( ⒳ → (x) ) PARENTHESIZED LATIN SMALL LETTER X → LEFT PARENTHESIS, LATIN SMALL LETTER X, RIGHT PARENTHESIS     # 
+
+1F127 ;        0028 0058 0029 ;        SA      #* ( 🄧 → (X) ) PARENTHESIZED LATIN CAPITAL LETTER X → LEFT PARENTHESIS, LATIN CAPITAL LETTER X, RIGHT PARENTHESIS        # 
+
+24B4 ; 0028 0079 0029 ;        SA      #* ( ⒴ → (y) ) PARENTHESIZED LATIN SMALL LETTER Y → LEFT PARENTHESIS, LATIN SMALL LETTER Y, RIGHT PARENTHESIS     # 
+
+1F128 ;        0028 0059 0029 ;        SA      #* ( 🄨 → (Y) ) PARENTHESIZED LATIN CAPITAL LETTER Y → LEFT PARENTHESIS, LATIN CAPITAL LETTER Y, RIGHT PARENTHESIS        # 
+
+24B5 ; 0028 007A 0029 ;        SA      #* ( ⒵ → (z) ) PARENTHESIZED LATIN SMALL LETTER Z → LEFT PARENTHESIS, LATIN SMALL LETTER Z, RIGHT PARENTHESIS     # 
+
+1F129 ;        0028 005A 0029 ;        SA      #* ( 🄩 → (Z) ) PARENTHESIZED LATIN CAPITAL LETTER Z → LEFT PARENTHESIS, LATIN CAPITAL LETTER Z, RIGHT PARENTHESIS        # 
+
+3200 ; 0028 1100 0029 ;        SA      #* ( ㈀ → (ᄀ) ) PARENTHESIZED HANGUL KIYEOK → LEFT PARENTHESIS, HANGUL CHOSEONG KIYEOK, RIGHT PARENTHESIS        # 
+
+320E ; 0028 AC00 0029 ;        SA      #* ( ㈎ → (가) ) PARENTHESIZED HANGUL KIYEOK A → LEFT PARENTHESIS, HANGUL SYLLABLE GA, RIGHT PARENTHESIS  # 
+
+3201 ; 0028 1102 0029 ;        SA      #* ( ㈁ → (ᄂ) ) PARENTHESIZED HANGUL NIEUN → LEFT PARENTHESIS, HANGUL CHOSEONG NIEUN, RIGHT PARENTHESIS  # 
+
+320F ; 0028 B098 0029 ;        SA      #* ( ㈏ → (나) ) PARENTHESIZED HANGUL NIEUN A → LEFT PARENTHESIS, HANGUL SYLLABLE NA, RIGHT PARENTHESIS   # 
+
+3202 ; 0028 1103 0029 ;        SA      #* ( ㈂ → (ᄃ) ) PARENTHESIZED HANGUL TIKEUT → LEFT PARENTHESIS, HANGUL CHOSEONG TIKEUT, RIGHT PARENTHESIS        # 
+
+3210 ; 0028 B2E4 0029 ;        SA      #* ( ㈐ → (다) ) PARENTHESIZED HANGUL TIKEUT A → LEFT PARENTHESIS, HANGUL SYLLABLE DA, RIGHT PARENTHESIS  # 
+
+3203 ; 0028 1105 0029 ;        SA      #* ( ㈃ → (ᄅ) ) PARENTHESIZED HANGUL RIEUL → LEFT PARENTHESIS, HANGUL CHOSEONG RIEUL, RIGHT PARENTHESIS  # 
+
+3211 ; 0028 B77C 0029 ;        SA      #* ( ㈑ → (라) ) PARENTHESIZED HANGUL RIEUL A → LEFT PARENTHESIS, HANGUL SYLLABLE RA, RIGHT PARENTHESIS   # 
+
+3204 ; 0028 1106 0029 ;        SA      #* ( ㈄ → (ᄆ) ) PARENTHESIZED HANGUL MIEUM → LEFT PARENTHESIS, HANGUL CHOSEONG MIEUM, RIGHT PARENTHESIS  # 
+
+3212 ; 0028 B9C8 0029 ;        SA      #* ( ㈒ → (마) ) PARENTHESIZED HANGUL MIEUM A → LEFT PARENTHESIS, HANGUL SYLLABLE MA, RIGHT PARENTHESIS   # 
+
+3205 ; 0028 1107 0029 ;        SA      #* ( ㈅ → (ᄇ) ) PARENTHESIZED HANGUL PIEUP → LEFT PARENTHESIS, HANGUL CHOSEONG PIEUP, RIGHT PARENTHESIS  # 
+
+3213 ; 0028 BC14 0029 ;        SA      #* ( ㈓ → (바) ) PARENTHESIZED HANGUL PIEUP A → LEFT PARENTHESIS, HANGUL SYLLABLE BA, RIGHT PARENTHESIS   # 
+
+3206 ; 0028 1109 0029 ;        SA      #* ( ㈆ → (ᄉ) ) PARENTHESIZED HANGUL SIOS → LEFT PARENTHESIS, HANGUL CHOSEONG SIOS, RIGHT PARENTHESIS    # 
+
+3214 ; 0028 C0AC 0029 ;        SA      #* ( ㈔ → (사) ) PARENTHESIZED HANGUL SIOS A → LEFT PARENTHESIS, HANGUL SYLLABLE SA, RIGHT PARENTHESIS    # 
+
+3207 ; 0028 110B 0029 ;        SA      #* ( ㈇ → (ᄋ) ) PARENTHESIZED HANGUL IEUNG → LEFT PARENTHESIS, HANGUL CHOSEONG IEUNG, RIGHT PARENTHESIS  # 
+
+3215 ; 0028 C544 0029 ;        SA      #* ( ㈕ → (아) ) PARENTHESIZED HANGUL IEUNG A → LEFT PARENTHESIS, HANGUL SYLLABLE A, RIGHT PARENTHESIS    # 
+
+321D ; 0028 C624 C804 0029 ;   SA      #* ( ㈝ → (오전) ) PARENTHESIZED KOREAN CHARACTER OJEON → LEFT PARENTHESIS, HANGUL SYLLABLE O, HANGUL SYLLABLE JEON, RIGHT PARENTHESIS   # 
+
+321E ; 0028 C624 D6C4 0029 ;   SA      #* ( ㈞ → (오후) ) PARENTHESIZED KOREAN CHARACTER O HU → LEFT PARENTHESIS, HANGUL SYLLABLE O, HANGUL SYLLABLE HU, RIGHT PARENTHESIS      # 
+
+3208 ; 0028 110C 0029 ;        SA      #* ( ㈈ → (ᄌ) ) PARENTHESIZED HANGUL CIEUC → LEFT PARENTHESIS, HANGUL CHOSEONG CIEUC, RIGHT PARENTHESIS  # 
+
+3216 ; 0028 C790 0029 ;        SA      #* ( ㈖ → (자) ) PARENTHESIZED HANGUL CIEUC A → LEFT PARENTHESIS, HANGUL SYLLABLE JA, RIGHT PARENTHESIS   # 
+
+321C ; 0028 C8FC 0029 ;        SA      #* ( ㈜ → (주) ) PARENTHESIZED HANGUL CIEUC U → LEFT PARENTHESIS, HANGUL SYLLABLE JU, RIGHT PARENTHESIS   # 
+
+3209 ; 0028 110E 0029 ;        SA      #* ( ㈉ → (ᄎ) ) PARENTHESIZED HANGUL CHIEUCH → LEFT PARENTHESIS, HANGUL CHOSEONG CHIEUCH, RIGHT PARENTHESIS      # 
+
+3217 ; 0028 CC28 0029 ;        SA      #* ( ㈗ → (차) ) PARENTHESIZED HANGUL CHIEUCH A → LEFT PARENTHESIS, HANGUL SYLLABLE CA, RIGHT PARENTHESIS # 
+
+320A ; 0028 110F 0029 ;        SA      #* ( ㈊ → (ᄏ) ) PARENTHESIZED HANGUL KHIEUKH → LEFT PARENTHESIS, HANGUL CHOSEONG KHIEUKH, RIGHT PARENTHESIS      # 
+
+3218 ; 0028 CE74 0029 ;        SA      #* ( ㈘ → (카) ) PARENTHESIZED HANGUL KHIEUKH A → LEFT PARENTHESIS, HANGUL SYLLABLE KA, RIGHT PARENTHESIS # 
+
+320B ; 0028 1110 0029 ;        SA      #* ( ㈋ → (ᄐ) ) PARENTHESIZED HANGUL THIEUTH → LEFT PARENTHESIS, HANGUL CHOSEONG THIEUTH, RIGHT PARENTHESIS      # 
+
+3219 ; 0028 D0C0 0029 ;        SA      #* ( ㈙ → (타) ) PARENTHESIZED HANGUL THIEUTH A → LEFT PARENTHESIS, HANGUL SYLLABLE TA, RIGHT PARENTHESIS # 
+
+320C ; 0028 1111 0029 ;        SA      #* ( ㈌ → (ᄑ) ) PARENTHESIZED HANGUL PHIEUPH → LEFT PARENTHESIS, HANGUL CHOSEONG PHIEUPH, RIGHT PARENTHESIS      # 
+
+321A ; 0028 D30C 0029 ;        SA      #* ( ㈚ → (파) ) PARENTHESIZED HANGUL PHIEUPH A → LEFT PARENTHESIS, HANGUL SYLLABLE PA, RIGHT PARENTHESIS # 
+
+320D ; 0028 1112 0029 ;        SA      #* ( ㈍ → (ᄒ) ) PARENTHESIZED HANGUL HIEUH → LEFT PARENTHESIS, HANGUL CHOSEONG HIEUH, RIGHT PARENTHESIS  # 
+
+321B ; 0028 D558 0029 ;        SA      #* ( ㈛ → (하) ) PARENTHESIZED HANGUL HIEUH A → LEFT PARENTHESIS, HANGUL SYLLABLE HA, RIGHT PARENTHESIS   # 
+
+3226 ; 0028 4E03 0029 ;        SA      #* ( ㈦ → (七) ) PARENTHESIZED IDEOGRAPH SEVEN → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E03, RIGHT PARENTHESIS  # 
+
+3222 ; 0028 4E09 0029 ;        SA      #* ( ㈢ → (三) ) PARENTHESIZED IDEOGRAPH THREE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E09, RIGHT PARENTHESIS  # 
+1F241 ;        0028 4E09 0029 ;        SA      #* ( 🉁 → (三) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E09, RIGHT PARENTHESIS   # →〔三〕→
+
+3228 ; 0028 4E5D 0029 ;        SA      #* ( ㈨ → (九) ) PARENTHESIZED IDEOGRAPH NINE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E5D, RIGHT PARENTHESIS   # 
+
+3221 ; 0028 4E8C 0029 ;        SA      #* ( ㈡ → (二) ) PARENTHESIZED IDEOGRAPH TWO → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E8C, RIGHT PARENTHESIS    # 
+1F242 ;        0028 4E8C 0029 ;        SA      #* ( 🉂 → (二) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E8C, RIGHT PARENTHESIS   # →〔二〕→
+
+3224 ; 0028 4E94 0029 ;        SA      #* ( ㈤ → (五) ) PARENTHESIZED IDEOGRAPH FIVE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E94, RIGHT PARENTHESIS   # 
+
+3239 ; 0028 4EE3 0029 ;        SA      #* ( ㈹ → (代) ) PARENTHESIZED IDEOGRAPH REPRESENT → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4EE3, RIGHT PARENTHESIS      # 
+
+323D ; 0028 4F01 0029 ;        SA      #* ( ㈽ → (企) ) PARENTHESIZED IDEOGRAPH ENTERPRISE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4F01, RIGHT PARENTHESIS     # 
+
+3241 ; 0028 4F11 0029 ;        SA      #* ( ㉁ → (休) ) PARENTHESIZED IDEOGRAPH REST → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4F11, RIGHT PARENTHESIS   # 
+
+3227 ; 0028 516B 0029 ;        SA      #* ( ㈧ → (八) ) PARENTHESIZED IDEOGRAPH EIGHT → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-516B, RIGHT PARENTHESIS  # 
+
+3225 ; 0028 516D 0029 ;        SA      #* ( ㈥ → (六) ) PARENTHESIZED IDEOGRAPH SIX → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-516D, RIGHT PARENTHESIS    # 
+
+3238 ; 0028 52B4 0029 ;        SA      #* ( ㈸ → (労) ) PARENTHESIZED IDEOGRAPH LABOR → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-52B4, RIGHT PARENTHESIS  # 
+
+1F247 ;        0028 52DD 0029 ;        SA      #* ( 🉇 → (勝) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-52DD, RIGHT PARENTHESIS   # →〔勝〕→
+
+3229 ; 0028 5341 0029 ;        SA      #* ( ㈩ → (十) ) PARENTHESIZED IDEOGRAPH TEN → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-5341, RIGHT PARENTHESIS    # 
+
+323F ; 0028 5354 0029 ;        SA      #* ( ㈿ → (協) ) PARENTHESIZED IDEOGRAPH ALLIANCE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-5354, RIGHT PARENTHESIS       # 
+
+3234 ; 0028 540D 0029 ;        SA      #* ( ㈴ → (名) ) PARENTHESIZED IDEOGRAPH NAME → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-540D, RIGHT PARENTHESIS   # 
+
+323A ; 0028 547C 0029 ;        SA      #* ( ㈺ → (呼) ) PARENTHESIZED IDEOGRAPH CALL → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-547C, RIGHT PARENTHESIS   # 
+
+3223 ; 0028 56DB 0029 ;        SA      #* ( ㈣ → (四) ) PARENTHESIZED IDEOGRAPH FOUR → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-56DB, RIGHT PARENTHESIS   # 
+
+322F ; 0028 571F 0029 ;        SA      #* ( ㈯ → (土) ) PARENTHESIZED IDEOGRAPH EARTH → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-571F, RIGHT PARENTHESIS  # 
+
+323B ; 0028 5B66 0029 ;        SA      #* ( ㈻ → (学) ) PARENTHESIZED IDEOGRAPH STUDY → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-5B66, RIGHT PARENTHESIS  # 
+
+1F243 ;        0028 5B89 0029 ;        SA      #* ( 🉃 → (安) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-5B89, RIGHT PARENTHESIS   # →〔安〕→
+
+1F245 ;        0028 6253 0029 ;        SA      #* ( 🉅 → (打) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6253, RIGHT PARENTHESIS   # →〔打〕→
+
+1F248 ;        0028 6557 0029 ;        SA      #* ( 🉈 → (敗) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6557, RIGHT PARENTHESIS   # →〔敗〕→
+
+3230 ; 0028 65E5 0029 ;        SA      #* ( ㈰ → (日) ) PARENTHESIZED IDEOGRAPH SUN → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-65E5, RIGHT PARENTHESIS    # 
+
+322A ; 0028 6708 0029 ;        SA      #* ( ㈪ → (月) ) PARENTHESIZED IDEOGRAPH MOON → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6708, RIGHT PARENTHESIS   # 
+
+3232 ; 0028 6709 0029 ;        SA      #* ( ㈲ → (有) ) PARENTHESIZED IDEOGRAPH HAVE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6709, RIGHT PARENTHESIS   # 
+
+322D ; 0028 6728 0029 ;        SA      #* ( ㈭ → (木) ) PARENTHESIZED IDEOGRAPH WOOD → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6728, RIGHT PARENTHESIS   # 
+
+1F240 ;        0028 672C 0029 ;        SA      #* ( 🉀 → (本) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-672C, RIGHT PARENTHESIS   # →〔本〕→
+
+3231 ; 0028 682A 0029 ;        SA      #* ( ㈱ → (株) ) PARENTHESIZED IDEOGRAPH STOCK → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-682A, RIGHT PARENTHESIS  # 
+
+322C ; 0028 6C34 0029 ;        SA      #* ( ㈬ → (水) ) PARENTHESIZED IDEOGRAPH WATER → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6C34, RIGHT PARENTHESIS  # 
+
+322B ; 0028 706B 0029 ;        SA      #* ( ㈫ → (火) ) PARENTHESIZED IDEOGRAPH FIRE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-706B, RIGHT PARENTHESIS   # 
+
+1F244 ;        0028 70B9 0029 ;        SA      #* ( 🉄 → (点) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-70B9, RIGHT PARENTHESIS   # →〔点〕→
+
+3235 ; 0028 7279 0029 ;        SA      #* ( ㈵ → (特) ) PARENTHESIZED IDEOGRAPH SPECIAL → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-7279, RIGHT PARENTHESIS        # 
+
+1F246 ;        0028 76D7 0029 ;        SA      #* ( 🉆 → (盗) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-76D7, RIGHT PARENTHESIS   # →〔盗〕→
+
+323C ; 0028 76E3 0029 ;        SA      #* ( ㈼ → (監) ) PARENTHESIZED IDEOGRAPH SUPERVISE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-76E3, RIGHT PARENTHESIS      # 
+
+3233 ; 0028 793E 0029 ;        SA      #* ( ㈳ → (社) ) PARENTHESIZED IDEOGRAPH SOCIETY → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-793E, RIGHT PARENTHESIS        # 
+
+3237 ; 0028 795D 0029 ;        SA      #* ( ㈷ → (祝) ) PARENTHESIZED IDEOGRAPH CONGRATULATION → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-795D, RIGHT PARENTHESIS # 
+
+3240 ; 0028 796D 0029 ;        SA      #* ( ㉀ → (祭) ) PARENTHESIZED IDEOGRAPH FESTIVAL → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-796D, RIGHT PARENTHESIS       # 
+
+3242 ; 0028 81EA 0029 ;        SA      #* ( ㉂ → (自) ) PARENTHESIZED IDEOGRAPH SELF → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-81EA, RIGHT PARENTHESIS   # 
+
+3243 ; 0028 81F3 0029 ;        SA      #* ( ㉃ → (至) ) PARENTHESIZED IDEOGRAPH REACH → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-81F3, RIGHT PARENTHESIS  # 
+
+3236 ; 0028 8CA1 0029 ;        SA      #* ( ㈶ → (財) ) PARENTHESIZED IDEOGRAPH FINANCIAL → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-8CA1, RIGHT PARENTHESIS      # 
+
+323E ; 0028 8CC7 0029 ;        SA      #* ( ㈾ → (資) ) PARENTHESIZED IDEOGRAPH RESOURCE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-8CC7, RIGHT PARENTHESIS       # 
+
+322E ; 0028 91D1 0029 ;        SA      #* ( ㈮ → (金) ) PARENTHESIZED IDEOGRAPH METAL → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-91D1, RIGHT PARENTHESIS  # 
+
+FF3D ; 0029 ;  SA      #* ( ] → ) ) FULLWIDTH RIGHT SQUARE BRACKET → RIGHT PARENTHESIS   # →〕→
+3015 ; 0029 ;  SA      #* ( 〕 → ) ) RIGHT TORTOISE SHELL BRACKET → RIGHT PARENTHESIS     # 
+FD3F ; 0029 ;  SA      #* ( ﴿ → ) ) ORNATE RIGHT PARENTHESIS → RIGHT PARENTHESIS # 
+2769 ; 0029 ;  SA      #* ( ❩ → ) ) MEDIUM RIGHT PARENTHESIS ORNAMENT → RIGHT PARENTHESIS        # 
+2773 ; 0029 ;  SA      #* ( ❳ → ) ) LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT → RIGHT PARENTHESIS      # →〕→
+
+2774 ; 007B ;  SA      #* ( ❴ → { ) MEDIUM LEFT CURLY BRACKET ORNAMENT → LEFT CURLY BRACKET      # 
+
+2775 ; 007D ;  SA      #* ( ❵ → } ) MEDIUM RIGHT CURLY BRACKET ORNAMENT → RIGHT CURLY BRACKET    # 
+
+FF3E ; FE3F ;  SA      #* ( ^ → ︿ ) FULLWIDTH CIRCUMFLEX ACCENT → PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET    # 
+
+204E ; 002A ;  SA      #* ( ⁎ → * ) LOW ASTERISK → ASTERISK      # 
+066D ; 002A ;  SA      #* ( ‎٭‎ → * ) ARABIC FIVE POINTED STAR → ASTERISK     # 
+2217 ; 002A ;  SA      #* ( ∗ → * ) ASTERISK OPERATOR → ASTERISK # 
+
+1735 ; 002F ;  SA      #* ( ᜵ → / ) PHILIPPINE SINGLE PUNCTUATION → SOLIDUS      # 
+2044 ; 002F ;  SA      #* ( ⁄ → / ) FRACTION SLASH → SOLIDUS     # 
+2041 ; 002F ;  SA      #* ( ⁁ → / ) CARET INSERTION POINT → SOLIDUS      # 
+2215 ; 002F ;  SA      #* ( ∕ → / ) DIVISION SLASH → SOLIDUS     # 
+2571 ; 002F ;  SA      #* ( ╱ → / ) BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT → SOLIDUS      # 
+29F8 ; 002F ;  SA      #* ( ⧸ → / ) BIG SOLIDUS → SOLIDUS        # 
+31D3 ; 002F ;  SA      #* ( ㇓ → / ) CJK STROKE SP → SOLIDUS      # →⼃→
+3033 ; 002F ;  SA      # ( 〳 → / ) VERTICAL KANA REPEAT MARK UPPER HALF → SOLIDUS        # 
+2CC6 ; 002F ;  SA      # ( Ⳇ → / ) COPTIC CAPITAL LETTER OLD COPTIC ESH → SOLIDUS        # 
+4E3F ; 002F ;  SA      # ( 丿 → / ) CJK UNIFIED IDEOGRAPH-4E3F → SOLIDUS  # →⼃→
+2F03 ; 002F ;  SA      #* ( ⼃ → / ) KANGXI RADICAL SLASH → SOLIDUS       # 
+
+29F6 ; 002F 0304 ;     SA      #* ( ⧶ → /̄ ) SOLIDUS WITH OVERBAR → SOLIDUS, COMBINING MACRON   # 
+
+2AFD ; 002F 002F ;     SA      #* ( ⫽ → // ) DOUBLE SOLIDUS OPERATOR → SOLIDUS, SOLIDUS  # 
+
+2AFB ; 002F 002F 002F ;        SA      #* ( ⫻ → /// ) TRIPLE SOLIDUS BINARY RELATION → SOLIDUS, SOLIDUS, SOLIDUS # 
+
+FF3C ; 005C ;  SA      #* ( \ → \ ) FULLWIDTH REVERSE SOLIDUS → REVERSE SOLIDUS  # →∖→
+FE68 ; 005C ;  SA      #* ( ﹨ → \ ) SMALL REVERSE SOLIDUS → REVERSE SOLIDUS      # →∖→
+2216 ; 005C ;  SA      #* ( ∖ → \ ) SET MINUS → REVERSE SOLIDUS  # 
+29F5 ; 005C ;  SA      #* ( ⧵ → \ ) REVERSE SOLIDUS OPERATOR → REVERSE SOLIDUS   # 
+29F9 ; 005C ;  SA      #* ( ⧹ → \ ) BIG REVERSE SOLIDUS → REVERSE SOLIDUS        # 
+31D4 ; 005C ;  SA      #* ( ㇔ → \ ) CJK STROKE D → REVERSE SOLIDUS       # →⼂→
+4E36 ; 005C ;  SA      # ( 丶 → \ ) CJK UNIFIED IDEOGRAPH-4E36 → REVERSE SOLIDUS  # →⼂→
+2F02 ; 005C ;  SA      #* ( ⼂ → \ ) KANGXI RADICAL DOT → REVERSE SOLIDUS # 
+
+2CF9 ; 005C 005C ;     SA      #* ( ⳹ → \\ ) COPTIC OLD NUBIAN FULL STOP → REVERSE SOLIDUS, REVERSE SOLIDUS      # 
+244A ; 005C 005C ;     SA      #* ( ⑊ → \\ ) OCR DOUBLE BACKSLASH → REVERSE SOLIDUS, REVERSE SOLIDUS     # 
+
+A778 ; 0026 ;  SA      # ( ꝸ → & ) LATIN SMALL LETTER UM → AMPERSAND     # 
+
+110BB ;        0970 ;  SA      #* ( 𑂻 → ॰ ) KAITHI ABBREVIATION SIGN → DEVANAGARI ABBREVIATION SIGN   # 
+26AC ; 0970 ;  SA      #* ( ⚬ → ॰ ) MEDIUM SMALL WHITE CIRCLE → DEVANAGARI ABBREVIATION SIGN   # 
+
+0F0C ; 0F0B ;  SA      #* ( ༌ → ་ ) TIBETAN MARK DELIMITER TSHEG BSTAR → TIBETAN MARK INTERSYLLABIC TSHEG      # 
+
+02D8 ; 02C7 ;  SA      #* ( ˘ → ˇ ) BREVE → CARON        # 
+A67E ; 02C7 ;  SA      #* ( ꙾ → ˇ ) CYRILLIC KAVYKA → CARON     # →˘→
+
+00AF ; 02C9 ;  SA      #* ( ¯ → ˉ ) MACRON → MODIFIER LETTER MACRON      # 
+FFE3 ; 02C9 ;  SA      #* (  ̄ → ˉ ) FULLWIDTH MACRON → MODIFIER LETTER MACRON   # →‾→
+203E ; 02C9 ;  SA      #* ( ‾ → ˉ ) OVERLINE → MODIFIER LETTER MACRON   # 
+FE49 ; 02C9 ;  SA      #* ( ﹉ → ˉ ) DASHED OVERLINE → MODIFIER LETTER MACRON    # →‾→
+FE4A ; 02C9 ;  SA      #* ( ﹊ → ˉ ) CENTRELINE OVERLINE → MODIFIER LETTER MACRON        # →‾→
+FE4B ; 02C9 ;  SA      #* ( ﹋ → ˉ ) WAVY OVERLINE → MODIFIER LETTER MACRON      # →‾→
+FE4C ; 02C9 ;  SA      #* ( ﹌ → ˉ ) DOUBLE WAVY OVERLINE → MODIFIER LETTER MACRON       # →‾→
+2594 ; 02C9 ;  SA      #* ( ▔ → ˉ ) UPPER ONE EIGHTH BLOCK → MODIFIER LETTER MACRON     # →¯→
+
+0375 ; 02CF ;  SA      #* ( ͵ → ˏ ) GREEK LOWER NUMERAL SIGN → MODIFIER LETTER LOW ACUTE ACCENT  # 
+
+02FB ; 02EA ;  SA      #* ( ˻ → ˪ ) MODIFIER LETTER BEGIN LOW TONE → MODIFIER LETTER YIN DEPARTING TONE MARK     # 
+A716 ; 02EA ;  SA      #* ( ꜖ → ˪ ) MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR → MODIFIER LETTER YIN DEPARTING TONE MARK      # 
+
+A714 ; 02EB ;  SA      #* ( ꜔ → ˫ ) MODIFIER LETTER MID LEFT-STEM TONE BAR → MODIFIER LETTER YANG DEPARTING TONE MARK   # 
+
+2E30 ; 02F3 ;  SA      #* ( ⸰ → ˳ ) RING POINT → MODIFIER LETTER LOW RING       # 
+3002 ; 02F3 ;  SA      #* ( 。 → ˳ ) IDEOGRAPHIC FULL STOP → MODIFIER LETTER LOW RING    # 
+
+02DA ; 00B0 ;  SA      #* ( ˚ → ° ) RING ABOVE → DEGREE SIGN     # 
+2218 ; 00B0 ;  SA      #* ( ∘ → ° ) RING OPERATOR → DEGREE SIGN # 
+25CB ; 00B0 ;  SA      #* ( ○ → ° ) WHITE CIRCLE → DEGREE SIGN  # →◦→→∘→
+25E6 ; 00B0 ;  SA      #* ( ◦ → ° ) WHITE BULLET → DEGREE SIGN  # →∘→
+
+2103 ; 00B0 0043 ;     SA      #* ( ℃ → °C ) DEGREE CELSIUS → DEGREE SIGN, LATIN CAPITAL LETTER C       # 
+
+2109 ; 00B0 0046 ;     SA      #* ( ℉ → °F ) DEGREE FAHRENHEIT → DEGREE SIGN, LATIN CAPITAL LETTER F    # 
+
+0BF5 ; 0BF3 ;  SA      #* ( ௵ → ௳ ) TAMIL YEAR SIGN → TAMIL DAY SIGN   # 
+
+24C5 ; 2117 ;  SA      #* ( Ⓟ → ℗ ) CIRCLED LATIN CAPITAL LETTER P → SOUND RECORDING COPYRIGHT # 
+
+21B5 ; 21B2 ;  SA      #* ( ↵ → ↲ ) DOWNWARDS ARROW WITH CORNER LEFTWARDS → DOWNWARDS ARROW WITH TIP LEFTWARDS # 
+
+2A21 ; 21BE ;  SA      #* ( ⨡ → ↾ ) Z NOTATION SCHEMA PROJECTION → UPWARDS HARPOON WITH BARB RIGHTWARDS        # 
+
+1D6DB ;        2202 ;  SA      #* ( 𝛛 → ∂ ) MATHEMATICAL BOLD PARTIAL DIFFERENTIAL → PARTIAL DIFFERENTIAL     # 
+1D715 ;        2202 ;  SA      #* ( 𝜕 → ∂ ) MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL → PARTIAL DIFFERENTIAL   # 
+1D74F ;        2202 ;  SA      #* ( 𝝏 → ∂ ) MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL → PARTIAL DIFFERENTIAL      # 
+1D789 ;        2202 ;  SA      #* ( 𝞉 → ∂ ) MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL → PARTIAL DIFFERENTIAL  # 
+1D7C3 ;        2202 ;  SA      #* ( 𝟃 → ∂ ) MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL → PARTIAL DIFFERENTIAL   # 
+
+00F0 ; 2202 0335 ;     SA      # ( ð → ∂̵ ) LATIN SMALL LETTER ETH → PARTIAL DIFFERENTIAL, COMBINING SHORT STROKE OVERLAY      # 
+
+2300 ; 2205 ;  SA      #* ( ⌀ → ∅ ) DIAMETER SIGN → EMPTY SET  # 
+
+1D6C1 ;        2207 ;  SA      #* ( 𝛁 → ∇ ) MATHEMATICAL BOLD NABLA → NABLA   # 
+1D6FB ;        2207 ;  SA      #* ( 𝛻 → ∇ ) MATHEMATICAL ITALIC NABLA → NABLA # 
+1D735 ;        2207 ;  SA      #* ( 𝜵 → ∇ ) MATHEMATICAL BOLD ITALIC NABLA → NABLA    # 
+1D76F ;        2207 ;  SA      #* ( 𝝯 → ∇ ) MATHEMATICAL SANS-SERIF BOLD NABLA → NABLA        # 
+1D7A9 ;        2207 ;  SA      #* ( 𝞩 → ∇ ) MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA → NABLA # 
+
+2588 ; 220E ;  SA      #* ( █ → ∎ ) FULL BLOCK → END OF PROOF  # →■→
+25A0 ; 220E ;  SA      #* ( ■ → ∎ ) BLACK SQUARE → END OF PROOF        # 
+
+2A3F ; 2210 ;  SA      #* ( ⨿ → ∐ ) AMALGAMATION OR COPRODUCT → N-ARY COPRODUCT        # 
+
+FB29 ; 002B ;  SA      #* ( ﬩ → + ) HEBREW LETTER ALTERNATIVE PLUS SIGN → PLUS SIGN      # 
+
+2039 ; 003C ;  SA      #* ( ‹ → < ) SINGLE LEFT-POINTING ANGLE QUOTATION MARK → LESS-THAN SIGN   # 
+02C2 ; 003C ;  SA      #* ( ˂ → < ) MODIFIER LETTER LEFT ARROWHEAD → LESS-THAN SIGN       # 
+276E ; 003C ;  SA      #* ( ❮ → < ) HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT → LESS-THAN SIGN   # →‹→
+
+A4FF ; 003D ;  SA      #* ( ꓿ → = ) LISU PUNCTUATION FULL STOP → EQUALS SIGN     # 
+
+2A75 ; 003D 003D ;     SA      #* ( ⩵ → == ) TWO CONSECUTIVE EQUALS SIGNS → EQUALS SIGN, EQUALS SIGN     # 
+
+2A76 ; 003D 003D 003D ;        SA      #* ( ⩶ → === ) THREE CONSECUTIVE EQUALS SIGNS → EQUALS SIGN, EQUALS SIGN, EQUALS SIGN     # 
+
+203A ; 003E ;  SA      #* ( › → > ) SINGLE RIGHT-POINTING ANGLE QUOTATION MARK → GREATER-THAN SIGN       # 
+02C3 ; 003E ;  SA      #* ( ˃ → > ) MODIFIER LETTER RIGHT ARROWHEAD → GREATER-THAN SIGN   # 
+276F ; 003E ;  SA      #* ( ❯ → > ) HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT → GREATER-THAN SIGN       # →›→
+
+05F0 ; 007C 007C ;     SA      # ( ‎װ‎ → || ) HEBREW LIGATURE YIDDISH DOUBLE VAV → VERTICAL LINE, VERTICAL LINE       # →‎וו‎→→ll→
+
+02DC ; 007E ;  SA      #* ( ˜ → ~ ) SMALL TILDE → TILDE   # 
+1FC0 ; 007E ;  SA      #* ( ῀ → ~ ) GREEK PERISPOMENI → TILDE    # →˜→
+2053 ; 007E ;  SA      #* ( ⁓ → ~ ) SWUNG DASH → TILDE   # 
+223C ; 007E ;  SA      #* ( ∼ → ~ ) TILDE OPERATOR → TILDE       # 
+
+22C0 ; 2227 ;  SA      #* ( ⋀ → ∧ ) N-ARY LOGICAL AND → LOGICAL AND    # 
+
+22C3 ; 222A ;  SA      #* ( ⋃ → ∪ ) N-ARY UNION → UNION        # 
+
+222F ; 222E 222E ;     SA      #* ( ∯ → ∮∮ ) SURFACE INTEGRAL → CONTOUR INTEGRAL, CONTOUR INTEGRAL   # 
+
+2230 ; 222E 222E 222E ;        SA      #* ( ∰ → ∮∮∮ ) VOLUME INTEGRAL → CONTOUR INTEGRAL, CONTOUR INTEGRAL, CONTOUR INTEGRAL       # 
+
+2263 ; 2261 ;  SA      #* ( ≣ → ≡ ) STRICTLY EQUIVALENT TO → IDENTICAL TO      # 
+
+2A20 ; 226B ;  SA      #* ( ⨠ → ≫ ) Z NOTATION SCHEMA PIPING → MUCH GREATER-THAN       # 
+
+2A03 ; 228D ;  SA      #* ( ⨃ → ⊍ ) N-ARY UNION OPERATOR WITH DOT → MULTISET MULTIPLICATION    # 
+
+2A04 ; 228E ;  SA      #* ( ⨄ → ⊎ ) N-ARY UNION OPERATOR WITH PLUS → MULTISET UNION    # 
+
+2A05 ; 2293 ;  SA      #* ( ⨅ → ⊓ ) N-ARY SQUARE INTERSECTION OPERATOR → SQUARE CAP    # 
+
+2A06 ; 2294 ;  SA      #* ( ⨆ → ⊔ ) N-ARY SQUARE UNION OPERATOR → SQUARE CUP   # 
+
+2641 ; 2295 ;  SA      #* ( ♁ → ⊕ ) EARTH → CIRCLED PLUS       # 
+2A01 ; 2295 ;  SA      #* ( ⨁ → ⊕ ) N-ARY CIRCLED PLUS OPERATOR → CIRCLED PLUS # 
+
+2A02 ; 2297 ;  SA      #* ( ⨂ → ⊗ ) N-ARY CIRCLED TIMES OPERATOR → CIRCLED TIMES       # 
+
+2609 ; 2299 ;  SA      #* ( ☉ → ⊙ ) SUN → CIRCLED DOT OPERATOR # 
+2A00 ; 2299 ;  SA      #* ( ⨀ → ⊙ ) N-ARY CIRCLED DOT OPERATOR → CIRCLED DOT OPERATOR  # 
+
+25B7 ; 22B2 ;  SA      #* ( ▷ → ⊲ ) WHITE RIGHT-POINTING TRIANGLE → NORMAL SUBGROUP OF # 
+
+25C7 ; 22C4 ;  SA      #* ( ◇ → ⋄ ) WHITE DIAMOND → DIAMOND OPERATOR   # 
+25CA ; 22C4 ;  SA      #* ( ◊ → ⋄ ) LOZENGE → DIAMOND OPERATOR # 
+2662 ; 22C4 ;  SA      #* ( ♢ → ⋄ ) WHITE DIAMOND SUIT → DIAMOND OPERATOR      # →◊→
+
+2A1D ; 22C8 ;  SA      #* ( ⨝ → ⋈ ) JOIN → BOWTIE      # 
+
+25E0 ; 2312 ;  SA      #* ( ◠ → ⌒ ) UPPER HALF CIRCLE → ARC    # 
+
+2A3D ; 2319 ;  SA      #* ( ⨽ → ⌙ ) RIGHTHAND INTERIOR PRODUCT → TURNED NOT SIGN       # 
+
+2325 ; 2324 ;  SA      #* ( ⌥ → ⌤ ) OPTION KEY → UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS      # 
+
+2638 ; 2388 ;  SA      #* ( ☸ → ⎈ ) WHEEL OF DHARMA → HELM SYMBOL      # 
+
+FE35 ; 23DC ;  SA      #* ( ︵ → ⏜ ) PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS → TOP PARENTHESIS  # 
+
+FE36 ; 23DD ;  SA      #* ( ︶ → ⏝ ) PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS → BOTTOM PARENTHESIS      # 
+
+FE37 ; 23DE ;  SA      #* ( ︷ → ⏞ ) PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET → TOP CURLY BRACKET      # 
+
+FE38 ; 23DF ;  SA      #* ( ︸ → ⏟ ) PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET → BOTTOM CURLY BRACKET  # 
+
+FE39 ; 23E0 ;  SA      #* ( ︹ → ⏠ ) PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET → TOP TORTOISE SHELL BRACKET    # 
+
+FE3A ; 23E1 ;  SA      #* ( ︺ → ⏡ ) PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET → BOTTOM TORTOISE SHELL BRACKET        # 
+
+25B1 ; 23E5 ;  SA      #* ( ▱ → ⏥ ) WHITE PARALLELOGRAM → FLATNESS     # 
+
+FE31 ; 2502 ;  SA      #* ( ︱ → │ ) PRESENTATION FORM FOR VERTICAL EM DASH → BOX DRAWINGS LIGHT VERTICAL       # →|→
+FF5C ; 2502 ;  SA      #* ( | → │ ) FULLWIDTH VERTICAL LINE → BOX DRAWINGS LIGHT VERTICAL      # 
+2503 ; 2502 ;  SA      #* ( ┃ → │ ) BOX DRAWINGS HEAVY VERTICAL → BOX DRAWINGS LIGHT VERTICAL  # 
+
+250F ; 250C ;  SA      #* ( ┏ → ┌ ) BOX DRAWINGS HEAVY DOWN AND RIGHT → BOX DRAWINGS LIGHT DOWN AND RIGHT      # 
+
+2523 ; 251C ;  SA      #* ( ┣ → ├ ) BOX DRAWINGS HEAVY VERTICAL AND RIGHT → BOX DRAWINGS LIGHT VERTICAL AND RIGHT      # 
+
+2590 ; 258C ;  SA      #* ( ▐ → ▌ ) RIGHT HALF BLOCK → LEFT HALF BLOCK # 
+
+2597 ; 2596 ;  SA      #* ( ▗ → ▖ ) QUADRANT LOWER RIGHT → QUADRANT LOWER LEFT # 
+
+259D ; 2598 ;  SA      #* ( ▝ → ▘ ) QUADRANT UPPER RIGHT → QUADRANT UPPER LEFT # 
+
+2610 ; 25A1 ;  SA      #* ( ☐ → □ ) BALLOT BOX → WHITE SQUARE  # 
+
+FFED ; 25AA ;  SA      #* ( ■ → ▪ ) HALFWIDTH BLACK SQUARE → BLACK SMALL SQUARE        # 
+
+25B8 ; 25B6 ;  SA      #* ( ▸ → ▶ ) BLACK RIGHT-POINTING SMALL TRIANGLE → BLACK RIGHT-POINTING TRIANGLE        # →►→
+25BA ; 25B6 ;  SA      #* ( ► → ▶ ) BLACK RIGHT-POINTING POINTER → BLACK RIGHT-POINTING TRIANGLE       # 
+
+29BE ; 25CE ;  SA      #* ( ⦾ → ◎ ) CIRCLED WHITE BULLET → BULLSEYE    # 
+
+2CE9 ; 2627 ;  SA      #* ( ⳩ → ☧ ) COPTIC SYMBOL KHI RO → CHI RHO     # 
+
+2329 ; 276C ;  SA      #* ( 〈 → ❬ ) LEFT-POINTING ANGLE BRACKET → MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT  # →〈→
+3008 ; 276C ;  SA      #* ( 〈 → ❬ ) LEFT ANGLE BRACKET → MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT   # 
+27E8 ; 276C ;  SA      #* ( ⟨ → ❬ ) MATHEMATICAL LEFT ANGLE BRACKET → MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT      # →〈→
+
+232A ; 276D ;  SA      #* ( 〉 → ❭ ) RIGHT-POINTING ANGLE BRACKET → MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT        # →〉→
+3009 ; 276D ;  SA      #* ( 〉 → ❭ ) RIGHT ANGLE BRACKET → MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT # 
+27E9 ; 276D ;  SA      #* ( ⟩ → ❭ ) MATHEMATICAL RIGHT ANGLE BRACKET → MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT    # →〉→
+
+301B ; 27E7 ;  SA      #* ( 〛 → ⟧ ) RIGHT WHITE SQUARE BRACKET → MATHEMATICAL RIGHT WHITE SQUARE BRACKET       # 
+
+29D9 ; 299A ;  SA      #* ( ⧙ → ⦚ ) RIGHT WIGGLY FENCE → VERTICAL ZIGZAG LINE  # 
+
+2A3E ; 2A1F ;  SA      #* ( ⨾ → ⨟ ) Z NOTATION RELATIONAL COMPOSITION → Z NOTATION SCHEMA COMPOSITION  # 
+
+3036 ; 3012 ;  SA      #* ( 〶 → 〒 ) CIRCLED POSTAL MARK → POSTAL MARK  # 
+
+02D9 ; 0971 ;  SA      #* ( ˙ → ॱ ) DOT ABOVE → DEVANAGARI SIGN HIGH SPACING DOT        # 
+
+FF0D ; 30FC ;  SA      #* ( - → ー ) FULLWIDTH HYPHEN-MINUS → KATAKANA-HIRAGANA PROLONGED SOUND MARK    # 
+2014 ; 30FC ;  SA      #* ( — → ー ) EM DASH → KATAKANA-HIRAGANA PROLONGED SOUND MARK   # →一→
+2015 ; 30FC ;  SA      #* ( ― → ー ) HORIZONTAL BAR → KATAKANA-HIRAGANA PROLONGED SOUND MARK    # →—→→一→
+2500 ; 30FC ;  SA      #* ( ─ → ー ) BOX DRAWINGS LIGHT HORIZONTAL → KATAKANA-HIRAGANA PROLONGED SOUND MARK     # →―→→—→→一→
+2501 ; 30FC ;  SA      #* ( ━ → ー ) BOX DRAWINGS HEAVY HORIZONTAL → KATAKANA-HIRAGANA PROLONGED SOUND MARK     # →—→→一→
+31D0 ; 30FC ;  SA      #* ( ㇐ → ー ) CJK STROKE H → KATAKANA-HIRAGANA PROLONGED SOUND MARK      # →一→
+1173 ; 30FC ;  SA      # ( ᅳ → ー ) HANGUL JUNGSEONG EU → KATAKANA-HIRAGANA PROLONGED SOUND MARK        # →ㅡ→→—→→一→
+3161 ; 30FC ;  SA      # ( ㅡ → ー ) HANGUL LETTER EU → KATAKANA-HIRAGANA PROLONGED SOUND MARK   # →—→→一→
+4E00 ; 30FC ;  SA      # ( 一 → ー ) CJK UNIFIED IDEOGRAPH-4E00 → KATAKANA-HIRAGANA PROLONGED SOUND MARK # 
+2F00 ; 30FC ;  SA      #* ( ⼀ → ー ) KANGXI RADICAL ONE → KATAKANA-HIRAGANA PROLONGED SOUND MARK        # →一→
+
+1196 ; 30FC 30FC ;     SA      # ( ᆖ → ーー ) HANGUL JUNGSEONG EU-EU → KATAKANA-HIRAGANA PROLONGED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK  # →ᅳᅳ→
+
+20A4 ; 00A3 ;  SA      #* ( ₤ → £ ) LIRA SIGN → POUND SIGN      # 
+
+07C0 ; 0030 ;  SA      # ( ‎߀‎ → 0 ) NKO DIGIT ZERO → DIGIT ZERO      # 
+09E6 ; 0030 ;  SA      # ( ০ → 0 ) BENGALI DIGIT ZERO → DIGIT ZERO       # 
+0B66 ; 0030 ;  SA      # ( ୦ → 0 ) ORIYA DIGIT ZERO → DIGIT ZERO # 
+3007 ; 0030 ;  SA      # ( 〇 → 0 ) IDEOGRAPHIC NUMBER ZERO → DIGIT ZERO  # →O→
+039F ; 0030 ;  SA      # ( Ο → 0 ) GREEK CAPITAL LETTER OMICRON → DIGIT ZERO      # 
+2C9E ; 0030 ;  SA      # ( Ⲟ → 0 ) COPTIC CAPITAL LETTER O → DIGIT ZERO  # →Ο→
+041E ; 0030 ;  SA      # ( О → 0 ) CYRILLIC CAPITAL LETTER O → DIGIT ZERO # 
+0555 ; 0030 ;  SA      # ( Օ → 0 ) ARMENIAN CAPITAL LETTER OH → DIGIT ZERO        # →Ο→
+2D54 ; 0030 ;  SA      # ( ⵔ → 0 ) TIFINAGH LETTER YAR → DIGIT ZERO      # →Ο→
+0B20 ; 0030 ;  SA      # ( ଠ → 0 ) ORIYA LETTER TTHA → DIGIT ZERO        # →୦→
+0D20 ; 0030 ;  SA      # ( ഠ → 0 ) MALAYALAM LETTER TTHA → DIGIT ZERO    # 
+A4F3 ; 0030 ;  SA      # ( ꓳ → 0 ) LISU LETTER O → DIGIT ZERO    # →O→
+
+1B5C ; 1B50 ;  SA      #* ( ᭜ → ᭐ ) BALINESE WINDU → BALINESE DIGIT ZERO       # 
+
+A9C6 ; A9D0 ;  SA      #* ( ꧆ → ꧐ ) JAVANESE PADA WINDU → JAVANESE DIGIT ZERO  # 
+
+066A ; 2070 002F 2080 2080 ;   SA      #* ( ٪ → ⁰/₀₀ ) ARABIC PERCENT SIGN → SUPERSCRIPT ZERO, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO      # →%→→‰→
+0609 ; 2070 002F 2080 2080 ;   SA      #* ( ؉ → ⁰/₀₀ ) ARABIC-INDIC PER MILLE SIGN → SUPERSCRIPT ZERO, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO      # →%→→‰→
+060A ; 2070 002F 2080 2080 ;   SA      #* ( ؊ → ⁰/₀₀ ) ARABIC-INDIC PER TEN THOUSAND SIGN → SUPERSCRIPT ZERO, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO       # →%→→‰→
+
+3358 ; 0030 70B9 ;     SA      #* ( ㍘ → 0点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO → DIGIT ZERO, CJK UNIFIED IDEOGRAPH-70B9       # 
+
+0399 ; 0031 ;  SA      # ( Ι → 1 ) GREEK CAPITAL LETTER IOTA → DIGIT ONE  # →l→
+2C92 ; 0031 ;  SA      # ( Ⲓ → 1 ) COPTIC CAPITAL LETTER IAUDA → DIGIT ONE       # →I→
+0406 ; 0031 ;  SA      # ( І → 1 ) CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I → DIGIT ONE   # →l→
+04C0 ; 0031 ;  SA      # ( Ӏ → 1 ) CYRILLIC LETTER PALOCHKA → DIGIT ONE   # →l→
+05D5 ; 0031 ;  SA      # ( ‎ו‎ → 1 ) HEBREW LETTER VAV → DIGIT ONE    # →l→
+05DF ; 0031 ;  SA      # ( ‎ן‎ → 1 ) HEBREW LETTER FINAL NUN → DIGIT ONE      # →l→
+07CA ; 0031 ;  SA      # ( ‎ߊ‎ → 1 ) NKO LETTER A → DIGIT ONE # →∣→→|→→l→
+2D4F ; 0031 ;  SA      # ( ⵏ → 1 ) TIFINAGH LETTER YAN → DIGIT ONE       # →I→
+A4F2 ; 0031 ;  SA      # ( ꓲ → 1 ) LISU LETTER I → DIGIT ONE     # →I→
+
+2460 ; 2780 ;  SA      #* ( ① → ➀ ) CIRCLED DIGIT ONE → DINGBAT CIRCLED SANS-SERIF DIGIT ONE   # 
+
+06F1 ; 0661 ;  SA      # ( ۱ → ‎١‎ ) EXTENDED ARABIC-INDIC DIGIT ONE → ARABIC-INDIC DIGIT ONE        # 
+
+1065 ; 1041 ;  SA      # ( ၥ → ၁ ) MYANMAR LETTER WESTERN PWO KAREN THA → MYANMAR DIGIT ONE    # 
+
+2469 ; 2789 ;  SA      #* ( ⑩ → ➉ ) CIRCLED NUMBER TEN → DINGBAT CIRCLED SANS-SERIF NUMBER TEN # 
+
+33E9 ; 0031 0030 65E5 ;        SA      #* ( ㏩ → 10日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN → DIGIT ONE, DIGIT ZERO, CJK UNIFIED IDEOGRAPH-65E5     # 
+
+32C9 ; 0031 0030 6708 ;        SA      #* ( ㋉ → 10月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER → DIGIT ONE, DIGIT ZERO, CJK UNIFIED IDEOGRAPH-6708     # 
+
+3362 ; 0031 0030 70B9 ;        SA      #* ( ㍢ → 10点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN → DIGIT ONE, DIGIT ZERO, CJK UNIFIED IDEOGRAPH-70B9    # 
+
+33EA ; 0031 0031 65E5 ;        SA      #* ( ㏪ → 11日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN → DIGIT ONE, DIGIT ONE, CJK UNIFIED IDEOGRAPH-65E5   # 
+
+32CA ; 0031 0031 6708 ;        SA      #* ( ㋊ → 11月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER → DIGIT ONE, DIGIT ONE, CJK UNIFIED IDEOGRAPH-6708     # 
+
+3363 ; 0031 0031 70B9 ;        SA      #* ( ㍣ → 11点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN → DIGIT ONE, DIGIT ONE, CJK UNIFIED IDEOGRAPH-70B9  # 
+
+33EB ; 0031 0032 65E5 ;        SA      #* ( ㏫ → 12日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE → DIGIT ONE, DIGIT TWO, CJK UNIFIED IDEOGRAPH-65E5   # 
+
+32CB ; 0031 0032 6708 ;        SA      #* ( ㋋ → 12月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER → DIGIT ONE, DIGIT TWO, CJK UNIFIED IDEOGRAPH-6708     # 
+
+3364 ; 0031 0032 70B9 ;        SA      #* ( ㍤ → 12点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE → DIGIT ONE, DIGIT TWO, CJK UNIFIED IDEOGRAPH-70B9  # 
+
+33EC ; 0031 0033 65E5 ;        SA      #* ( ㏬ → 13日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN → DIGIT ONE, DIGIT THREE, CJK UNIFIED IDEOGRAPH-65E5       # 
+
+3365 ; 0031 0033 70B9 ;        SA      #* ( ㍥ → 13点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN → DIGIT ONE, DIGIT THREE, CJK UNIFIED IDEOGRAPH-70B9      # 
+
+33ED ; 0031 0034 65E5 ;        SA      #* ( ㏭ → 14日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN → DIGIT ONE, DIGIT FOUR, CJK UNIFIED IDEOGRAPH-65E5        # 
+
+3366 ; 0031 0034 70B9 ;        SA      #* ( ㍦ → 14点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN → DIGIT ONE, DIGIT FOUR, CJK UNIFIED IDEOGRAPH-70B9       # 
+
+33EE ; 0031 0035 65E5 ;        SA      #* ( ㏮ → 15日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN → DIGIT ONE, DIGIT FIVE, CJK UNIFIED IDEOGRAPH-65E5 # 
+
+3367 ; 0031 0035 70B9 ;        SA      #* ( ㍧ → 15点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN → DIGIT ONE, DIGIT FIVE, CJK UNIFIED IDEOGRAPH-70B9        # 
+
+33EF ; 0031 0036 65E5 ;        SA      #* ( ㏯ → 16日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN → DIGIT ONE, DIGIT SIX, CJK UNIFIED IDEOGRAPH-65E5  # 
+
+3368 ; 0031 0036 70B9 ;        SA      #* ( ㍨ → 16点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN → DIGIT ONE, DIGIT SIX, CJK UNIFIED IDEOGRAPH-70B9 # 
+
+33F0 ; 0031 0037 65E5 ;        SA      #* ( ㏰ → 17日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN → DIGIT ONE, DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-65E5      # 
+
+3369 ; 0031 0037 70B9 ;        SA      #* ( ㍩ → 17点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN → DIGIT ONE, DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-70B9     # 
+
+33F1 ; 0031 0038 65E5 ;        SA      #* ( ㏱ → 18日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN → DIGIT ONE, DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-65E5       # 
+
+336A ; 0031 0038 70B9 ;        SA      #* ( ㍪ → 18点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN → DIGIT ONE, DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-70B9      # 
+
+33F2 ; 0031 0039 65E5 ;        SA      #* ( ㏲ → 19日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN → DIGIT ONE, DIGIT NINE, CJK UNIFIED IDEOGRAPH-65E5        # 
+
+336B ; 0031 0039 70B9 ;        SA      #* ( ㍫ → 19点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN → DIGIT ONE, DIGIT NINE, CJK UNIFIED IDEOGRAPH-70B9       # 
+
+14B7 ; 0031 1427 ;     SA      # ( ᒷ → 1ᐧ ) CANADIAN SYLLABICS WEST-CREE MWA → DIGIT ONE, CANADIAN SYLLABICS FINAL MIDDLE DOT  # 
+
+33E0 ; 0031 65E5 ;     SA      #* ( ㏠ → 1日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE → DIGIT ONE, CJK UNIFIED IDEOGRAPH-65E5  # 
+
+32C0 ; 0031 6708 ;     SA      #* ( ㋀ → 1月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY → DIGIT ONE, CJK UNIFIED IDEOGRAPH-6708  # 
+
+3359 ; 0031 70B9 ;     SA      #* ( ㍙ → 1点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE → DIGIT ONE, CJK UNIFIED IDEOGRAPH-70B9 # 
+
+1D7D0 ;        0032 ;  SA      # ( 𝟐 → 2 ) MATHEMATICAL BOLD DIGIT TWO → DIGIT TWO      # 
+1D7DA ;        0032 ;  SA      # ( 𝟚 → 2 ) MATHEMATICAL DOUBLE-STRUCK DIGIT TWO → DIGIT TWO     # 
+1D7E4 ;        0032 ;  SA      # ( 𝟤 → 2 ) MATHEMATICAL SANS-SERIF DIGIT TWO → DIGIT TWO        # 
+1D7EE ;        0032 ;  SA      # ( 𝟮 → 2 ) MATHEMATICAL SANS-SERIF BOLD DIGIT TWO → DIGIT TWO   # 
+1D7F8 ;        0032 ;  SA      # ( 𝟸 → 2 ) MATHEMATICAL MONOSPACE DIGIT TWO → DIGIT TWO # 
+A75A ; 0032 ;  SA      # ( Ꝛ → 2 ) LATIN CAPITAL LETTER R ROTUNDA → DIGIT TWO    # 
+01A7 ; 0032 ;  SA      # ( Ƨ → 2 ) LATIN CAPITAL LETTER TONE TWO → DIGIT TWO      # 
+03E8 ; 0032 ;  SA      # ( Ϩ → 2 ) COPTIC CAPITAL LETTER HORI → DIGIT TWO # →Ƨ→
+A644 ; 0032 ;  SA      # ( Ꙅ → 2 ) CYRILLIC CAPITAL LETTER REVERSED DZE → DIGIT TWO      # →Ƨ→
+14BF ; 0032 ;  SA      # ( ᒿ → 2 ) CANADIAN SYLLABICS SAYISI M → DIGIT TWO       # 
+
+2461 ; 2781 ;  SA      #* ( ② → ➁ ) CIRCLED DIGIT TWO → DINGBAT CIRCLED SANS-SERIF DIGIT TWO   # 
+
+06F2 ; 0662 ;  SA      # ( ۲ → ‎٢‎ ) EXTENDED ARABIC-INDIC DIGIT TWO → ARABIC-INDIC DIGIT TWO        # 
+
+1F103 ;        0032 002C ;     SA      #* ( 🄃 → 2, ) DIGIT TWO COMMA → DIGIT TWO, COMMA # 
+
+2489 ; 0032 002E ;     SA      #* ( ⒉ → 2. ) DIGIT TWO FULL STOP → DIGIT TWO, FULL STOP  # 
+
+33F3 ; 0032 0030 65E5 ;        SA      #* ( ㏳ → 20日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY → DIGIT TWO, DIGIT ZERO, CJK UNIFIED IDEOGRAPH-65E5  # 
+
+336C ; 0032 0030 70B9 ;        SA      #* ( ㍬ → 20点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY → DIGIT TWO, DIGIT ZERO, CJK UNIFIED IDEOGRAPH-70B9 # 
+
+33F4 ; 0032 0031 65E5 ;        SA      #* ( ㏴ → 21日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE → DIGIT TWO, DIGIT ONE, CJK UNIFIED IDEOGRAPH-65E5       # 
+
+336D ; 0032 0031 70B9 ;        SA      #* ( ㍭ → 21点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE → DIGIT TWO, DIGIT ONE, CJK UNIFIED IDEOGRAPH-70B9      # 
+
+33F5 ; 0032 0032 65E5 ;        SA      #* ( ㏵ → 22日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO → DIGIT TWO, DIGIT TWO, CJK UNIFIED IDEOGRAPH-65E5       # 
+
+336E ; 0032 0032 70B9 ;        SA      #* ( ㍮ → 22点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO → DIGIT TWO, DIGIT TWO, CJK UNIFIED IDEOGRAPH-70B9      # 
+
+33F6 ; 0032 0033 65E5 ;        SA      #* ( ㏶ → 23日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE → DIGIT TWO, DIGIT THREE, CJK UNIFIED IDEOGRAPH-65E5   # 
+
+336F ; 0032 0033 70B9 ;        SA      #* ( ㍯ → 23点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE → DIGIT TWO, DIGIT THREE, CJK UNIFIED IDEOGRAPH-70B9  # 
+
+33F7 ; 0032 0034 65E5 ;        SA      #* ( ㏷ → 24日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR → DIGIT TWO, DIGIT FOUR, CJK UNIFIED IDEOGRAPH-65E5     # 
+
+3370 ; 0032 0034 70B9 ;        SA      #* ( ㍰ → 24点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR → DIGIT TWO, DIGIT FOUR, CJK UNIFIED IDEOGRAPH-70B9    # 
+
+33F8 ; 0032 0035 65E5 ;        SA      #* ( ㏸ → 25日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE → DIGIT TWO, DIGIT FIVE, CJK UNIFIED IDEOGRAPH-65E5     # 
+
+33F9 ; 0032 0036 65E5 ;        SA      #* ( ㏹ → 26日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX → DIGIT TWO, DIGIT SIX, CJK UNIFIED IDEOGRAPH-65E5       # 
+
+33FA ; 0032 0037 65E5 ;        SA      #* ( ㏺ → 27日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN → DIGIT TWO, DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-65E5   # 
+
+33FB ; 0032 0038 65E5 ;        SA      #* ( ㏻ → 28日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT → DIGIT TWO, DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-65E5   # 
+
+33FC ; 0032 0039 65E5 ;        SA      #* ( ㏼ → 29日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE → DIGIT TWO, DIGIT NINE, CJK UNIFIED IDEOGRAPH-65E5     # 
+
+249B ; 0032 004F 002E ;        SA      #* ( ⒛ → 2O. ) NUMBER TWENTY FULL STOP → DIGIT TWO, LATIN CAPITAL LETTER O, FULL STOP     # →20.→
+
+33E1 ; 0032 65E5 ;     SA      #* ( ㏡ → 2日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO → DIGIT TWO, CJK UNIFIED IDEOGRAPH-65E5  # 
+
+32C1 ; 0032 6708 ;     SA      #* ( ㋁ → 2月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY → DIGIT TWO, CJK UNIFIED IDEOGRAPH-6708 # 
+
+335A ; 0032 70B9 ;     SA      #* ( ㍚ → 2点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO → DIGIT TWO, CJK UNIFIED IDEOGRAPH-70B9 # 
+
+1D7D1 ;        0033 ;  SA      # ( 𝟑 → 3 ) MATHEMATICAL BOLD DIGIT THREE → DIGIT THREE  # 
+1D7DB ;        0033 ;  SA      # ( 𝟛 → 3 ) MATHEMATICAL DOUBLE-STRUCK DIGIT THREE → DIGIT THREE # 
+1D7E5 ;        0033 ;  SA      # ( 𝟥 → 3 ) MATHEMATICAL SANS-SERIF DIGIT THREE → DIGIT THREE    # 
+1D7EF ;        0033 ;  SA      # ( 𝟯 → 3 ) MATHEMATICAL SANS-SERIF BOLD DIGIT THREE → DIGIT THREE       # 
+1D7F9 ;        0033 ;  SA      # ( 𝟹 → 3 ) MATHEMATICAL MONOSPACE DIGIT THREE → DIGIT THREE     # 
+01B7 ; 0033 ;  SA      # ( Ʒ → 3 ) LATIN CAPITAL LETTER EZH → DIGIT THREE # 
+021C ; 0033 ;  SA      # ( Ȝ → 3 ) LATIN CAPITAL LETTER YOGH → DIGIT THREE        # →Ʒ→
+A76A ; 0033 ;  SA      # ( Ꝫ → 3 ) LATIN CAPITAL LETTER ET → DIGIT THREE # 
+2CCC ; 0033 ;  SA      # ( Ⳍ → 3 ) COPTIC CAPITAL LETTER OLD COPTIC HORI → DIGIT THREE   # →Ȝ→→Ʒ→
+0417 ; 0033 ;  SA      # ( З → 3 ) CYRILLIC CAPITAL LETTER ZE → DIGIT THREE       # 
+04E0 ; 0033 ;  SA      # ( Ӡ → 3 ) CYRILLIC CAPITAL LETTER ABKHASIAN DZE → DIGIT THREE    # →Ʒ→
+0545 ; 0033 ;  SA      # ( Յ → 3 ) ARMENIAN CAPITAL LETTER YI → DIGIT THREE       # 
+
+2462 ; 2782 ;  SA      #* ( ③ → ➂ ) CIRCLED DIGIT THREE → DINGBAT CIRCLED SANS-SERIF DIGIT THREE       # 
+
+0498 ; 0033 0326 ;     SA      # ( Ҙ → 3̦ ) CYRILLIC CAPITAL LETTER ZE WITH DESCENDER → DIGIT THREE, COMBINING COMMA BELOW       # →З̧→
+
+06F3 ; 0663 ;  SA      # ( ۳ → ‎٣‎ ) EXTENDED ARABIC-INDIC DIGIT THREE → ARABIC-INDIC DIGIT THREE    # 
+
+1F104 ;        0033 002C ;     SA      #* ( 🄄 → 3, ) DIGIT THREE COMMA → DIGIT THREE, COMMA     # 
+
+248A ; 0033 002E ;     SA      #* ( ⒊ → 3. ) DIGIT THREE FULL STOP → DIGIT THREE, FULL STOP      # 
+
+33FD ; 0033 0030 65E5 ;        SA      #* ( ㏽ → 30日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY → DIGIT THREE, DIGIT ZERO, CJK UNIFIED IDEOGRAPH-65E5        # 
+
+33FE ; 0033 0031 65E5 ;        SA      #* ( ㏾ → 31日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE → DIGIT THREE, DIGIT ONE, CJK UNIFIED IDEOGRAPH-65E5     # 
+
+33E2 ; 0033 65E5 ;     SA      #* ( ㏢ → 3日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE → DIGIT THREE, CJK UNIFIED IDEOGRAPH-65E5      # 
+
+32C2 ; 0033 6708 ;     SA      #* ( ㋂ → 3月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH → DIGIT THREE, CJK UNIFIED IDEOGRAPH-6708  # 
+
+335B ; 0033 70B9 ;     SA      #* ( ㍛ → 3点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE → DIGIT THREE, CJK UNIFIED IDEOGRAPH-70B9     # 
+
+1D7D2 ;        0034 ;  SA      # ( 𝟒 → 4 ) MATHEMATICAL BOLD DIGIT FOUR → DIGIT FOUR    # 
+1D7DC ;        0034 ;  SA      # ( 𝟜 → 4 ) MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR → DIGIT FOUR   # 
+1D7E6 ;        0034 ;  SA      # ( 𝟦 → 4 ) MATHEMATICAL SANS-SERIF DIGIT FOUR → DIGIT FOUR      # 
+1D7F0 ;        0034 ;  SA      # ( 𝟰 → 4 ) MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR → DIGIT FOUR # 
+1D7FA ;        0034 ;  SA      # ( 𝟺 → 4 ) MATHEMATICAL MONOSPACE DIGIT FOUR → DIGIT FOUR       # 
+13CE ; 0034 ;  SA      # ( Ꮞ → 4 ) CHEROKEE LETTER SE → DIGIT FOUR       # 
+
+2463 ; 2783 ;  SA      #* ( ④ → ➃ ) CIRCLED DIGIT FOUR → DINGBAT CIRCLED SANS-SERIF DIGIT FOUR # 
+
+1F105 ;        0034 002C ;     SA      #* ( 🄅 → 4, ) DIGIT FOUR COMMA → DIGIT FOUR, COMMA       # 
+
+248B ; 0034 002E ;     SA      #* ( ⒋ → 4. ) DIGIT FOUR FULL STOP → DIGIT FOUR, FULL STOP        # 
+
+1530 ; 0034 00B7 ;     SA      # ( ᔰ → 4· ) CANADIAN SYLLABICS WEST-CREE YWE → DIGIT FOUR, MIDDLE DOT   # →4ᐧ→
+
+33E3 ; 0034 65E5 ;     SA      #* ( ㏣ → 4日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR → DIGIT FOUR, CJK UNIFIED IDEOGRAPH-65E5        # 
+
+32C3 ; 0034 6708 ;     SA      #* ( ㋃ → 4月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL → DIGIT FOUR, CJK UNIFIED IDEOGRAPH-6708   # 
+
+335C ; 0034 70B9 ;     SA      #* ( ㍜ → 4点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR → DIGIT FOUR, CJK UNIFIED IDEOGRAPH-70B9       # 
+
+1D7D3 ;        0035 ;  SA      # ( 𝟓 → 5 ) MATHEMATICAL BOLD DIGIT FIVE → DIGIT FIVE    # 
+1D7DD ;        0035 ;  SA      # ( 𝟝 → 5 ) MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE → DIGIT FIVE   # 
+1D7E7 ;        0035 ;  SA      # ( 𝟧 → 5 ) MATHEMATICAL SANS-SERIF DIGIT FIVE → DIGIT FIVE      # 
+1D7F1 ;        0035 ;  SA      # ( 𝟱 → 5 ) MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE → DIGIT FIVE # 
+1D7FB ;        0035 ;  SA      # ( 𝟻 → 5 ) MATHEMATICAL MONOSPACE DIGIT FIVE → DIGIT FIVE       # 
+01BC ; 0035 ;  SA      # ( Ƽ → 5 ) LATIN CAPITAL LETTER TONE FIVE → DIGIT FIVE    # 
+
+2464 ; 2784 ;  SA      #* ( ⑤ → ➄ ) CIRCLED DIGIT FIVE → DINGBAT CIRCLED SANS-SERIF DIGIT FIVE # 
+
+0C02 ; 0665 ;  SA      # ( ం → ‎٥‎ ) TELUGU SIGN ANUSVARA → ARABIC-INDIC DIGIT FIVE # →o→
+0C82 ; 0665 ;  SA      # ( ಂ → ‎٥‎ ) KANNADA SIGN ANUSVARA → ARABIC-INDIC DIGIT FIVE        # →o→
+0D02 ; 0665 ;  SA      # ( ം → ‎٥‎ ) MALAYALAM SIGN ANUSVARA → ARABIC-INDIC DIGIT FIVE      # →o→
+0D82 ; 0665 ;  SA      # ( ං → ‎٥‎ ) SINHALA SIGN ANUSVARAYA → ARABIC-INDIC DIGIT FIVE      # →o→
+0966 ; 0665 ;  SA      # ( ० → ‎٥‎ ) DEVANAGARI DIGIT ZERO → ARABIC-INDIC DIGIT FIVE        # →o→
+0A66 ; 0665 ;  SA      # ( ੦ → ‎٥‎ ) GURMUKHI DIGIT ZERO → ARABIC-INDIC DIGIT FIVE  # →o→
+0AE6 ; 0665 ;  SA      # ( ૦ → ‎٥‎ ) GUJARATI DIGIT ZERO → ARABIC-INDIC DIGIT FIVE  # →o→
+0BE6 ; 0665 ;  SA      # ( ௦ → ‎٥‎ ) TAMIL DIGIT ZERO → ARABIC-INDIC DIGIT FIVE     # →o→
+0C66 ; 0665 ;  SA      # ( ౦ → ‎٥‎ ) TELUGU DIGIT ZERO → ARABIC-INDIC DIGIT FIVE    # →o→
+0CE6 ; 0665 ;  SA      # ( ೦ → ‎٥‎ ) KANNADA DIGIT ZERO → ARABIC-INDIC DIGIT FIVE   # →౦→→o→
+0D66 ; 0665 ;  SA      # ( ൦ → ‎٥‎ ) MALAYALAM DIGIT ZERO → ARABIC-INDIC DIGIT FIVE # →o→
+0E50 ; 0665 ;  SA      # ( ๐ → ‎٥‎ ) THAI DIGIT ZERO → ARABIC-INDIC DIGIT FIVE      # →o→
+0ED0 ; 0665 ;  SA      # ( ໐ → ‎٥‎ ) LAO DIGIT ZERO → ARABIC-INDIC DIGIT FIVE       # →o→
+1040 ; 0665 ;  SA      # ( ၀ → ‎٥‎ ) MYANMAR DIGIT ZERO → ARABIC-INDIC DIGIT FIVE   # →o→
+2C9F ; 0665 ;  SA      # ( ⲟ → ‎٥‎ ) COPTIC SMALL LETTER O → ARABIC-INDIC DIGIT FIVE        # →o→
+101D ; 0665 ;  SA      # ( ဝ → ‎٥‎ ) MYANMAR LETTER WA → ARABIC-INDIC DIGIT FIVE    # →o→
+
+1F106 ;        0035 002C ;     SA      #* ( 🄆 → 5, ) DIGIT FIVE COMMA → DIGIT FIVE, COMMA       # 
+
+248C ; 0035 002E ;     SA      #* ( ⒌ → 5. ) DIGIT FIVE FULL STOP → DIGIT FIVE, FULL STOP        # 
+
+33E4 ; 0035 65E5 ;     SA      #* ( ㏤ → 5日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE → DIGIT FIVE, CJK UNIFIED IDEOGRAPH-65E5        # 
+
+32C4 ; 0035 6708 ;     SA      #* ( ㋄ → 5月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY → DIGIT FIVE, CJK UNIFIED IDEOGRAPH-6708     # 
+
+335D ; 0035 70B9 ;     SA      #* ( ㍝ → 5点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE → DIGIT FIVE, CJK UNIFIED IDEOGRAPH-70B9       # 
+
+1D7D4 ;        0036 ;  SA      # ( 𝟔 → 6 ) MATHEMATICAL BOLD DIGIT SIX → DIGIT SIX      # 
+1D7DE ;        0036 ;  SA      # ( 𝟞 → 6 ) MATHEMATICAL DOUBLE-STRUCK DIGIT SIX → DIGIT SIX     # 
+1D7E8 ;        0036 ;  SA      # ( 𝟨 → 6 ) MATHEMATICAL SANS-SERIF DIGIT SIX → DIGIT SIX        # 
+1D7F2 ;        0036 ;  SA      # ( 𝟲 → 6 ) MATHEMATICAL SANS-SERIF BOLD DIGIT SIX → DIGIT SIX   # 
+1D7FC ;        0036 ;  SA      # ( 𝟼 → 6 ) MATHEMATICAL MONOSPACE DIGIT SIX → DIGIT SIX # 
+2CD2 ; 0036 ;  SA      # ( Ⳓ → 6 ) COPTIC CAPITAL LETTER OLD COPTIC HEI → DIGIT SIX      # 
+0431 ; 0036 ;  SA      # ( б → 6 ) CYRILLIC SMALL LETTER BE → DIGIT SIX   # 
+
+2465 ; 2785 ;  SA      #* ( ⑥ → ➅ ) CIRCLED DIGIT SIX → DINGBAT CIRCLED SANS-SERIF DIGIT SIX   # 
+
+1F107 ;        0036 002C ;     SA      #* ( 🄇 → 6, ) DIGIT SIX COMMA → DIGIT SIX, COMMA # 
+
+248D ; 0036 002E ;     SA      #* ( ⒍ → 6. ) DIGIT SIX FULL STOP → DIGIT SIX, FULL STOP  # 
+
+33E5 ; 0036 65E5 ;     SA      #* ( ㏥ → 6日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX → DIGIT SIX, CJK UNIFIED IDEOGRAPH-65E5  # 
+
+32C5 ; 0036 6708 ;     SA      #* ( ㋅ → 6月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE → DIGIT SIX, CJK UNIFIED IDEOGRAPH-6708     # 
+
+335E ; 0036 70B9 ;     SA      #* ( ㍞ → 6点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX → DIGIT SIX, CJK UNIFIED IDEOGRAPH-70B9 # 
+
+1D7D5 ;        0037 ;  SA      # ( 𝟕 → 7 ) MATHEMATICAL BOLD DIGIT SEVEN → DIGIT SEVEN  # 
+1D7DF ;        0037 ;  SA      # ( 𝟟 → 7 ) MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN → DIGIT SEVEN # 
+1D7E9 ;        0037 ;  SA      # ( 𝟩 → 7 ) MATHEMATICAL SANS-SERIF DIGIT SEVEN → DIGIT SEVEN    # 
+1D7F3 ;        0037 ;  SA      # ( 𝟳 → 7 ) MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN → DIGIT SEVEN       # 
+1D7FD ;        0037 ;  SA      # ( 𝟽 → 7 ) MATHEMATICAL MONOSPACE DIGIT SEVEN → DIGIT SEVEN     # 
+
+2466 ; 2786 ;  SA      #* ( ⑦ → ➆ ) CIRCLED DIGIT SEVEN → DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN       # 
+
+06F7 ; 0667 ;  SA      # ( ۷ → ‎٧‎ ) EXTENDED ARABIC-INDIC DIGIT SEVEN → ARABIC-INDIC DIGIT SEVEN    # 
+
+1F108 ;        0037 002C ;     SA      #* ( 🄈 → 7, ) DIGIT SEVEN COMMA → DIGIT SEVEN, COMMA     # 
+
+248E ; 0037 002E ;     SA      #* ( ⒎ → 7. ) DIGIT SEVEN FULL STOP → DIGIT SEVEN, FULL STOP      # 
+
+33E6 ; 0037 65E5 ;     SA      #* ( ㏦ → 7日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN → DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-65E5      # 
+
+32C6 ; 0037 6708 ;     SA      #* ( ㋆ → 7月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY → DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-6708   # 
+
+335F ; 0037 70B9 ;     SA      #* ( ㍟ → 7点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN → DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-70B9     # 
+
+0B03 ; 0038 ;  SA      # ( ଃ → 8 ) ORIYA SIGN VISARGA → DIGIT EIGHT      # 
+09EA ; 0038 ;  SA      # ( ৪ → 8 ) BENGALI DIGIT FOUR → DIGIT EIGHT      # 
+0A6A ; 0038 ;  SA      # ( ੪ → 8 ) GURMUKHI DIGIT FOUR → DIGIT EIGHT     # 
+1D7D6 ;        0038 ;  SA      # ( 𝟖 → 8 ) MATHEMATICAL BOLD DIGIT EIGHT → DIGIT EIGHT  # 
+1D7E0 ;        0038 ;  SA      # ( 𝟠 → 8 ) MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT → DIGIT EIGHT # 
+1D7EA ;        0038 ;  SA      # ( 𝟪 → 8 ) MATHEMATICAL SANS-SERIF DIGIT EIGHT → DIGIT EIGHT    # 
+1D7F4 ;        0038 ;  SA      # ( 𝟴 → 8 ) MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT → DIGIT EIGHT       # 
+1D7FE ;        0038 ;  SA      # ( 𝟾 → 8 ) MATHEMATICAL MONOSPACE DIGIT EIGHT → DIGIT EIGHT     # 
+0223 ; 0038 ;  SA      # ( ȣ → 8 ) LATIN SMALL LETTER OU → DIGIT EIGHT    # 
+0222 ; 0038 ;  SA      # ( Ȣ → 8 ) LATIN CAPITAL LETTER OU → DIGIT EIGHT  # 
+
+2467 ; 2787 ;  SA      #* ( ⑧ → ➇ ) CIRCLED DIGIT EIGHT → DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT       # 
+
+06F8 ; 0668 ;  SA      # ( ۸ → ‎٨‎ ) EXTENDED ARABIC-INDIC DIGIT EIGHT → ARABIC-INDIC DIGIT EIGHT    # 
+
+1F109 ;        0038 002C ;     SA      #* ( 🄉 → 8, ) DIGIT EIGHT COMMA → DIGIT EIGHT, COMMA     # 
+
+248F ; 0038 002E ;     SA      #* ( ⒏ → 8. ) DIGIT EIGHT FULL STOP → DIGIT EIGHT, FULL STOP      # 
+
+33E7 ; 0038 65E5 ;     SA      #* ( ㏧ → 8日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT → DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-65E5      # 
+
+32C7 ; 0038 6708 ;     SA      #* ( ㋇ → 8月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST → DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-6708 # 
+
+3360 ; 0038 70B9 ;     SA      #* ( ㍠ → 8点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT → DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-70B9     # 
+
+0A67 ; 0039 ;  SA      # ( ੧ → 9 ) GURMUKHI DIGIT ONE → DIGIT NINE       # 
+0B68 ; 0039 ;  SA      # ( ୨ → 9 ) ORIYA DIGIT TWO → DIGIT NINE  # 
+09ED ; 0039 ;  SA      # ( ৭ → 9 ) BENGALI DIGIT SEVEN → DIGIT NINE      # 
+1D7D7 ;        0039 ;  SA      # ( 𝟗 → 9 ) MATHEMATICAL BOLD DIGIT NINE → DIGIT NINE    # 
+1D7E1 ;        0039 ;  SA      # ( 𝟡 → 9 ) MATHEMATICAL DOUBLE-STRUCK DIGIT NINE → DIGIT NINE   # 
+1D7EB ;        0039 ;  SA      # ( 𝟫 → 9 ) MATHEMATICAL SANS-SERIF DIGIT NINE → DIGIT NINE      # 
+1D7F5 ;        0039 ;  SA      # ( 𝟵 → 9 ) MATHEMATICAL SANS-SERIF BOLD DIGIT NINE → DIGIT NINE # 
+1D7FF ;        0039 ;  SA      # ( 𝟿 → 9 ) MATHEMATICAL MONOSPACE DIGIT NINE → DIGIT NINE       # 
+A76E ; 0039 ;  SA      # ( Ꝯ → 9 ) LATIN CAPITAL LETTER CON → DIGIT NINE # 
+2CCA ; 0039 ;  SA      # ( Ⳋ → 9 ) COPTIC CAPITAL LETTER DIALECT-P HORI → DIGIT NINE     # 
+
+2468 ; 2788 ;  SA      #* ( ⑨ → ➈ ) CIRCLED DIGIT NINE → DINGBAT CIRCLED SANS-SERIF DIGIT NINE # 
+
+06F9 ; 0669 ;  SA      # ( ۹ → ‎٩‎ ) EXTENDED ARABIC-INDIC DIGIT NINE → ARABIC-INDIC DIGIT NINE      # 
+
+1F10A ;        0039 002C ;     SA      #* ( 🄊 → 9, ) DIGIT NINE COMMA → DIGIT NINE, COMMA       # 
+
+2490 ; 0039 002E ;     SA      #* ( ⒐ → 9. ) DIGIT NINE FULL STOP → DIGIT NINE, FULL STOP        # 
+
+33E8 ; 0039 65E5 ;     SA      #* ( ㏨ → 9日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE → DIGIT NINE, CJK UNIFIED IDEOGRAPH-65E5        # 
+
+32C8 ; 0039 6708 ;     SA      #* ( ㋈ → 9月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER → DIGIT NINE, CJK UNIFIED IDEOGRAPH-6708       # 
+
+3361 ; 0039 70B9 ;     SA      #* ( ㍡ → 9点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE → DIGIT NINE, CJK UNIFIED IDEOGRAPH-70B9       # 
+
+237A ; 0061 ;  SA      #* ( ⍺ → a ) APL FUNCTIONAL SYMBOL ALPHA → LATIN SMALL LETTER A   # →α→
+FF41 ; 0061 ;  SA      # ( a → a ) FULLWIDTH LATIN SMALL LETTER A → LATIN SMALL LETTER A # →а→
+1D41A ;        0061 ;  SA      # ( 𝐚 → a ) MATHEMATICAL BOLD SMALL A → LATIN SMALL LETTER A     # 
+1D44E ;        0061 ;  SA      # ( 𝑎 → a ) MATHEMATICAL ITALIC SMALL A → LATIN SMALL LETTER A   # 
+1D482 ;        0061 ;  SA      # ( 𝒂 → a ) MATHEMATICAL BOLD ITALIC SMALL A → LATIN SMALL LETTER A      # 
+1D4B6 ;        0061 ;  SA      # ( 𝒶 → a ) MATHEMATICAL SCRIPT SMALL A → LATIN SMALL LETTER A   # 
+1D4EA ;        0061 ;  SA      # ( 𝓪 → a ) MATHEMATICAL BOLD SCRIPT SMALL A → LATIN SMALL LETTER A      # 
+1D51E ;        0061 ;  SA      # ( 𝔞 → a ) MATHEMATICAL FRAKTUR SMALL A → LATIN SMALL LETTER A  # 
+1D552 ;        0061 ;  SA      # ( 𝕒 → a ) MATHEMATICAL DOUBLE-STRUCK SMALL A → LATIN SMALL LETTER A    # 
+1D586 ;        0061 ;  SA      # ( 𝖆 → a ) MATHEMATICAL BOLD FRAKTUR SMALL A → LATIN SMALL LETTER A     # 
+1D5BA ;        0061 ;  SA      # ( 𝖺 → a ) MATHEMATICAL SANS-SERIF SMALL A → LATIN SMALL LETTER A       # 
+1D5EE ;        0061 ;  SA      # ( 𝗮 → a ) MATHEMATICAL SANS-SERIF BOLD SMALL A → LATIN SMALL LETTER A  # 
+1D622 ;        0061 ;  SA      # ( 𝘢 → a ) MATHEMATICAL SANS-SERIF ITALIC SMALL A → LATIN SMALL LETTER A        # 
+1D656 ;        0061 ;  SA      # ( 𝙖 → a ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A → LATIN SMALL LETTER A   # 
+1D68A ;        0061 ;  SA      # ( 𝚊 → a ) MATHEMATICAL MONOSPACE SMALL A → LATIN SMALL LETTER A        # 
+0251 ; 0061 ;  SA      # ( ɑ → a ) LATIN SMALL LETTER ALPHA → LATIN SMALL LETTER A        # 
+1D6C2 ;        0061 ;  SA      # ( 𝛂 → a ) MATHEMATICAL BOLD SMALL ALPHA → LATIN SMALL LETTER A # →α→
+1D6FC ;        0061 ;  SA      # ( 𝛼 → a ) MATHEMATICAL ITALIC SMALL ALPHA → LATIN SMALL LETTER A       # →α→
+1D736 ;        0061 ;  SA      # ( 𝜶 → a ) MATHEMATICAL BOLD ITALIC SMALL ALPHA → LATIN SMALL LETTER A  # →α→
+1D770 ;        0061 ;  SA      # ( 𝝰 → a ) MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA → LATIN SMALL LETTER A      # →α→
+1D7AA ;        0061 ;  SA      # ( 𝞪 → a ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA → LATIN SMALL LETTER A       # →α→
+
+FF21 ; 0041 ;  SA      # ( A → A ) FULLWIDTH LATIN CAPITAL LETTER A → LATIN CAPITAL LETTER A     # →А→
+1D400 ;        0041 ;  SA      # ( 𝐀 → A ) MATHEMATICAL BOLD CAPITAL A → LATIN CAPITAL LETTER A # 
+1D434 ;        0041 ;  SA      # ( 𝐴 → A ) MATHEMATICAL ITALIC CAPITAL A → LATIN CAPITAL LETTER A       # 
+1D468 ;        0041 ;  SA      # ( 𝑨 → A ) MATHEMATICAL BOLD ITALIC CAPITAL A → LATIN CAPITAL LETTER A  # 
+1D49C ;        0041 ;  SA      # ( 𝒜 → A ) MATHEMATICAL SCRIPT CAPITAL A → LATIN CAPITAL LETTER A       # 
+1D4D0 ;        0041 ;  SA      # ( 𝓐 → A ) MATHEMATICAL BOLD SCRIPT CAPITAL A → LATIN CAPITAL LETTER A  # 
+1D504 ;        0041 ;  SA      # ( 𝔄 → A ) MATHEMATICAL FRAKTUR CAPITAL A → LATIN CAPITAL LETTER A      # 
+1D538 ;        0041 ;  SA      # ( 𝔸 → A ) MATHEMATICAL DOUBLE-STRUCK CAPITAL A → LATIN CAPITAL LETTER A        # 
+1D56C ;        0041 ;  SA      # ( 𝕬 → A ) MATHEMATICAL BOLD FRAKTUR CAPITAL A → LATIN CAPITAL LETTER A # 
+1D5A0 ;        0041 ;  SA      # ( 𝖠 → A ) MATHEMATICAL SANS-SERIF CAPITAL A → LATIN CAPITAL LETTER A   # 
+1D5D4 ;        0041 ;  SA      # ( 𝗔 → A ) MATHEMATICAL SANS-SERIF BOLD CAPITAL A → LATIN CAPITAL LETTER A      # 
+1D608 ;        0041 ;  SA      # ( 𝘈 → A ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL A → LATIN CAPITAL LETTER A    # 
+1D63C ;        0041 ;  SA      # ( 𝘼 → A ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A → LATIN CAPITAL LETTER A       # 
+1D670 ;        0041 ;  SA      # ( 𝙰 → A ) MATHEMATICAL MONOSPACE CAPITAL A → LATIN CAPITAL LETTER A    # 
+1D6A8 ;        0041 ;  SA      # ( 𝚨 → A ) MATHEMATICAL BOLD CAPITAL ALPHA → LATIN CAPITAL LETTER A     # →𝐀→
+1D6E2 ;        0041 ;  SA      # ( 𝛢 → A ) MATHEMATICAL ITALIC CAPITAL ALPHA → LATIN CAPITAL LETTER A   # →𝐴→
+1D71C ;        0041 ;  SA      # ( 𝜜 → A ) MATHEMATICAL BOLD ITALIC CAPITAL ALPHA → LATIN CAPITAL LETTER A      # →𝑨→
+1D756 ;        0041 ;  SA      # ( 𝝖 → A ) MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA → LATIN CAPITAL LETTER A  # →Α→
+1D790 ;        0041 ;  SA      # ( 𝞐 → A ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA → LATIN CAPITAL LETTER A   # →Α→
+
+01CE ; 0103 ;  SA      # ( ǎ → ă ) LATIN SMALL LETTER A WITH CARON → LATIN SMALL LETTER A WITH BREVE     # 
+
+01CD ; 0102 ;  SA      # ( Ǎ → Ă ) LATIN CAPITAL LETTER A WITH CARON → LATIN CAPITAL LETTER A WITH BREVE # 
+
+0227 ; 00E5 ;  SA      # ( ȧ → å ) LATIN SMALL LETTER A WITH DOT ABOVE → LATIN SMALL LETTER A WITH RING ABOVE    # 
+
+0226 ; 00C5 ;  SA      # ( Ȧ → Å ) LATIN CAPITAL LETTER A WITH DOT ABOVE → LATIN CAPITAL LETTER A WITH RING ABOVE        # 
+
+1E9A ; 1EA3 ;  SA      # ( ẚ → ả ) LATIN SMALL LETTER A WITH RIGHT HALF RING → LATIN SMALL LETTER A WITH HOOK ABOVE    # 
+
+A733 ; 0061 0061 ;     SA      # ( ꜳ → aa ) LATIN SMALL LETTER AA → LATIN SMALL LETTER A, LATIN SMALL LETTER A   # 
+
+A732 ; 0041 0041 ;     SA      # ( Ꜳ → AA ) LATIN CAPITAL LETTER AA → LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER A     # 
+
+00E6 ; 0061 0065 ;     SA      # ( æ → ae ) LATIN SMALL LETTER AE → LATIN SMALL LETTER A, LATIN SMALL LETTER E    # 
+
+00C6 ; 0041 0045 ;     SA      # ( Æ → AE ) LATIN CAPITAL LETTER AE → LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER E      # 
+
+A735 ; 0061 006F ;     SA      # ( ꜵ → ao ) LATIN SMALL LETTER AO → LATIN SMALL LETTER A, LATIN SMALL LETTER O   # 
+
+A734 ; 0041 004F ;     SA      # ( Ꜵ → AO ) LATIN CAPITAL LETTER AO → LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER O     # 
+
+A737 ; 0061 0075 ;     SA      # ( ꜷ → au ) LATIN SMALL LETTER AU → LATIN SMALL LETTER A, LATIN SMALL LETTER U   # 
+
+A736 ; 0041 0055 ;     SA      # ( Ꜷ → AU ) LATIN CAPITAL LETTER AU → LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER U     # 
+
+A739 ; 0061 0076 ;     SA      # ( ꜹ → av ) LATIN SMALL LETTER AV → LATIN SMALL LETTER A, LATIN SMALL LETTER V   # 
+A73B ; 0061 0076 ;     SA      # ( ꜻ → av ) LATIN SMALL LETTER AV WITH HORIZONTAL BAR → LATIN SMALL LETTER A, LATIN SMALL LETTER V       # 
+
+A738 ; 0041 0056 ;     SA      # ( Ꜹ → AV ) LATIN CAPITAL LETTER AV → LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER V     # 
+A73A ; 0041 0056 ;     SA      # ( Ꜻ → AV ) LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR → LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER V # 
+
+A73D ; 0061 0079 ;     SA      # ( ꜽ → ay ) LATIN SMALL LETTER AY → LATIN SMALL LETTER A, LATIN SMALL LETTER Y   # 
+
+A73C ; 0041 0059 ;     SA      # ( Ꜽ → AY ) LATIN CAPITAL LETTER AY → LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER Y     # 
+
+1D41B ;        0062 ;  SA      # ( 𝐛 → b ) MATHEMATICAL BOLD SMALL B → LATIN SMALL LETTER B     # 
+1D44F ;        0062 ;  SA      # ( 𝑏 → b ) MATHEMATICAL ITALIC SMALL B → LATIN SMALL LETTER B   # 
+1D483 ;        0062 ;  SA      # ( 𝒃 → b ) MATHEMATICAL BOLD ITALIC SMALL B → LATIN SMALL LETTER B      # 
+1D4B7 ;        0062 ;  SA      # ( 𝒷 → b ) MATHEMATICAL SCRIPT SMALL B → LATIN SMALL LETTER B   # 
+1D4EB ;        0062 ;  SA      # ( 𝓫 → b ) MATHEMATICAL BOLD SCRIPT SMALL B → LATIN SMALL LETTER B      # 
+1D51F ;        0062 ;  SA      # ( 𝔟 → b ) MATHEMATICAL FRAKTUR SMALL B → LATIN SMALL LETTER B  # 
+1D553 ;        0062 ;  SA      # ( 𝕓 → b ) MATHEMATICAL DOUBLE-STRUCK SMALL B → LATIN SMALL LETTER B    # 
+1D587 ;        0062 ;  SA      # ( 𝖇 → b ) MATHEMATICAL BOLD FRAKTUR SMALL B → LATIN SMALL LETTER B     # 
+1D5BB ;        0062 ;  SA      # ( 𝖻 → b ) MATHEMATICAL SANS-SERIF SMALL B → LATIN SMALL LETTER B       # 
+1D5EF ;        0062 ;  SA      # ( 𝗯 → b ) MATHEMATICAL SANS-SERIF BOLD SMALL B → LATIN SMALL LETTER B  # 
+1D623 ;        0062 ;  SA      # ( 𝘣 → b ) MATHEMATICAL SANS-SERIF ITALIC SMALL B → LATIN SMALL LETTER B        # 
+1D657 ;        0062 ;  SA      # ( 𝙗 → b ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B → LATIN SMALL LETTER B   # 
+1D68B ;        0062 ;  SA      # ( 𝚋 → b ) MATHEMATICAL MONOSPACE SMALL B → LATIN SMALL LETTER B        # 
+0184 ; 0062 ;  SA      # ( Ƅ → b ) LATIN CAPITAL LETTER TONE SIX → LATIN SMALL LETTER B   # 
+
+FF22 ; 0042 ;  SA      # ( B → B ) FULLWIDTH LATIN CAPITAL LETTER B → LATIN CAPITAL LETTER B     # →В→
+212C ; 0042 ;  SA      # ( ℬ → B ) SCRIPT CAPITAL B → LATIN CAPITAL LETTER B     # 
+1D401 ;        0042 ;  SA      # ( 𝐁 → B ) MATHEMATICAL BOLD CAPITAL B → LATIN CAPITAL LETTER B # 
+1D435 ;        0042 ;  SA      # ( 𝐵 → B ) MATHEMATICAL ITALIC CAPITAL B → LATIN CAPITAL LETTER B       # 
+1D469 ;        0042 ;  SA      # ( 𝑩 → B ) MATHEMATICAL BOLD ITALIC CAPITAL B → LATIN CAPITAL LETTER B  # 
+1D4D1 ;        0042 ;  SA      # ( 𝓑 → B ) MATHEMATICAL BOLD SCRIPT CAPITAL B → LATIN CAPITAL LETTER B  # 
+1D505 ;        0042 ;  SA      # ( 𝔅 → B ) MATHEMATICAL FRAKTUR CAPITAL B → LATIN CAPITAL LETTER B      # 
+1D539 ;        0042 ;  SA      # ( 𝔹 → B ) MATHEMATICAL DOUBLE-STRUCK CAPITAL B → LATIN CAPITAL LETTER B        # 
+1D56D ;        0042 ;  SA      # ( 𝕭 → B ) MATHEMATICAL BOLD FRAKTUR CAPITAL B → LATIN CAPITAL LETTER B # 
+1D5A1 ;        0042 ;  SA      # ( 𝖡 → B ) MATHEMATICAL SANS-SERIF CAPITAL B → LATIN CAPITAL LETTER B   # 
+1D5D5 ;        0042 ;  SA      # ( 𝗕 → B ) MATHEMATICAL SANS-SERIF BOLD CAPITAL B → LATIN CAPITAL LETTER B      # 
+1D609 ;        0042 ;  SA      # ( 𝘉 → B ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL B → LATIN CAPITAL LETTER B    # 
+1D63D ;        0042 ;  SA      # ( 𝘽 → B ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B → LATIN CAPITAL LETTER B       # 
+1D671 ;        0042 ;  SA      # ( 𝙱 → B ) MATHEMATICAL MONOSPACE CAPITAL B → LATIN CAPITAL LETTER B    # 
+1D6A9 ;        0042 ;  SA      # ( 𝚩 → B ) MATHEMATICAL BOLD CAPITAL BETA → LATIN CAPITAL LETTER B      # →𝐁→
+1D6E3 ;        0042 ;  SA      # ( 𝛣 → B ) MATHEMATICAL ITALIC CAPITAL BETA → LATIN CAPITAL LETTER B    # →𝐵→
+1D71D ;        0042 ;  SA      # ( 𝜝 → B ) MATHEMATICAL BOLD ITALIC CAPITAL BETA → LATIN CAPITAL LETTER B       # →𝑩→
+1D757 ;        0042 ;  SA      # ( 𝝗 → B ) MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA → LATIN CAPITAL LETTER B   # →Β→
+1D791 ;        0042 ;  SA      # ( 𝞑 → B ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA → LATIN CAPITAL LETTER B    # →Β→
+
+0253 ; 0062 0314 ;     SA      # ( ɓ → b̔ ) LATIN SMALL LETTER B WITH HOOK → LATIN SMALL LETTER B, COMBINING REVERSED COMMA ABOVE        # 
+
+0183 ; 0062 0304 ;     SA      # ( ƃ → b̄ ) LATIN SMALL LETTER B WITH TOPBAR → LATIN SMALL LETTER B, COMBINING MACRON    # 
+0182 ; 0062 0304 ;     SA      # ( Ƃ → b̄ ) LATIN CAPITAL LETTER B WITH TOPBAR → LATIN SMALL LETTER B, COMBINING MACRON  # 
+
+0180 ; 0062 0335 ;     SA      # ( ƀ → b̵ ) LATIN SMALL LETTER B WITH STROKE → LATIN SMALL LETTER B, COMBINING SHORT STROKE OVERLAY      # 
+
+FF43 ; 0063 ;  SA      # ( c → c ) FULLWIDTH LATIN SMALL LETTER C → LATIN SMALL LETTER C # →ϲ→
+217D ; 0063 ;  SA      # ( ⅽ → c ) SMALL ROMAN NUMERAL ONE HUNDRED → LATIN SMALL LETTER C        # 
+1D41C ;        0063 ;  SA      # ( 𝐜 → c ) MATHEMATICAL BOLD SMALL C → LATIN SMALL LETTER C     # 
+1D450 ;        0063 ;  SA      # ( 𝑐 → c ) MATHEMATICAL ITALIC SMALL C → LATIN SMALL LETTER C   # 
+1D484 ;        0063 ;  SA      # ( 𝒄 → c ) MATHEMATICAL BOLD ITALIC SMALL C → LATIN SMALL LETTER C      # 
+1D4B8 ;        0063 ;  SA      # ( 𝒸 → c ) MATHEMATICAL SCRIPT SMALL C → LATIN SMALL LETTER C   # 
+1D4EC ;        0063 ;  SA      # ( 𝓬 → c ) MATHEMATICAL BOLD SCRIPT SMALL C → LATIN SMALL LETTER C      # 
+1D520 ;        0063 ;  SA      # ( 𝔠 → c ) MATHEMATICAL FRAKTUR SMALL C → LATIN SMALL LETTER C  # 
+1D554 ;        0063 ;  SA      # ( 𝕔 → c ) MATHEMATICAL DOUBLE-STRUCK SMALL C → LATIN SMALL LETTER C    # 
+1D588 ;        0063 ;  SA      # ( 𝖈 → c ) MATHEMATICAL BOLD FRAKTUR SMALL C → LATIN SMALL LETTER C     # 
+1D5BC ;        0063 ;  SA      # ( 𝖼 → c ) MATHEMATICAL SANS-SERIF SMALL C → LATIN SMALL LETTER C       # 
+1D5F0 ;        0063 ;  SA      # ( 𝗰 → c ) MATHEMATICAL SANS-SERIF BOLD SMALL C → LATIN SMALL LETTER C  # 
+1D624 ;        0063 ;  SA      # ( 𝘤 → c ) MATHEMATICAL SANS-SERIF ITALIC SMALL C → LATIN SMALL LETTER C        # 
+1D658 ;        0063 ;  SA      # ( 𝙘 → c ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C → LATIN SMALL LETTER C   # 
+1D68C ;        0063 ;  SA      # ( 𝚌 → c ) MATHEMATICAL MONOSPACE SMALL C → LATIN SMALL LETTER C        # 
+1D04 ; 0063 ;  SA      # ( ᴄ → c ) LATIN LETTER SMALL CAPITAL C → LATIN SMALL LETTER C   # 
+
+FF23 ; 0043 ;  SA      # ( C → C ) FULLWIDTH LATIN CAPITAL LETTER C → LATIN CAPITAL LETTER C     # →С→
+216D ; 0043 ;  SA      # ( Ⅽ → C ) ROMAN NUMERAL ONE HUNDRED → LATIN CAPITAL LETTER C    # 
+2102 ; 0043 ;  SA      # ( ℂ → C ) DOUBLE-STRUCK CAPITAL C → LATIN CAPITAL LETTER C      # 
+212D ; 0043 ;  SA      # ( ℭ → C ) BLACK-LETTER CAPITAL C → LATIN CAPITAL LETTER C       # 
+1D402 ;        0043 ;  SA      # ( 𝐂 → C ) MATHEMATICAL BOLD CAPITAL C → LATIN CAPITAL LETTER C # 
+1D436 ;        0043 ;  SA      # ( 𝐶 → C ) MATHEMATICAL ITALIC CAPITAL C → LATIN CAPITAL LETTER C       # 
+1D46A ;        0043 ;  SA      # ( 𝑪 → C ) MATHEMATICAL BOLD ITALIC CAPITAL C → LATIN CAPITAL LETTER C  # 
+1D49E ;        0043 ;  SA      # ( 𝒞 → C ) MATHEMATICAL SCRIPT CAPITAL C → LATIN CAPITAL LETTER C       # 
+1D4D2 ;        0043 ;  SA      # ( 𝓒 → C ) MATHEMATICAL BOLD SCRIPT CAPITAL C → LATIN CAPITAL LETTER C  # 
+1D56E ;        0043 ;  SA      # ( 𝕮 → C ) MATHEMATICAL BOLD FRAKTUR CAPITAL C → LATIN CAPITAL LETTER C # 
+1D5A2 ;        0043 ;  SA      # ( 𝖢 → C ) MATHEMATICAL SANS-SERIF CAPITAL C → LATIN CAPITAL LETTER C   # 
+1D5D6 ;        0043 ;  SA      # ( 𝗖 → C ) MATHEMATICAL SANS-SERIF BOLD CAPITAL C → LATIN CAPITAL LETTER C      # 
+1D60A ;        0043 ;  SA      # ( 𝘊 → C ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL C → LATIN CAPITAL LETTER C    # 
+1D63E ;        0043 ;  SA      # ( 𝘾 → C ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C → LATIN CAPITAL LETTER C       # 
+1D672 ;        0043 ;  SA      # ( 𝙲 → C ) MATHEMATICAL MONOSPACE CAPITAL C → LATIN CAPITAL LETTER C    # 
+
+00A2 ; 0063 0338 ;     SA      #* ( ¢ → c̸ ) CENT SIGN → LATIN SMALL LETTER C, COMBINING LONG SOLIDUS OVERLAY    # 
+
+00E7 ; 0063 0326 ;     SA      # ( ç → c̦ ) LATIN SMALL LETTER C WITH CEDILLA → LATIN SMALL LETTER C, COMBINING COMMA BELOW      # →ҫ→→с̡→
+
+00C7 ; 0043 0326 ;     SA      # ( Ç → C̦ ) LATIN CAPITAL LETTER C WITH CEDILLA → LATIN CAPITAL LETTER C, COMBINING COMMA BELOW  # →Ҫ→→С̡→
+
+0187 ; 0043 0027 ;     SA      # ( Ƈ → C' ) LATIN CAPITAL LETTER C WITH HOOK → LATIN CAPITAL LETTER C, APOSTROPHE # →Cʽ→
+
+217E ; 0064 ;  SA      # ( ⅾ → d ) SMALL ROMAN NUMERAL FIVE HUNDRED → LATIN SMALL LETTER D       # 
+2146 ; 0064 ;  SA      # ( ⅆ → d ) DOUBLE-STRUCK ITALIC SMALL D → LATIN SMALL LETTER D   # 
+1D41D ;        0064 ;  SA      # ( 𝐝 → d ) MATHEMATICAL BOLD SMALL D → LATIN SMALL LETTER D     # 
+1D451 ;        0064 ;  SA      # ( 𝑑 → d ) MATHEMATICAL ITALIC SMALL D → LATIN SMALL LETTER D   # 
+1D485 ;        0064 ;  SA      # ( 𝒅 → d ) MATHEMATICAL BOLD ITALIC SMALL D → LATIN SMALL LETTER D      # 
+1D4B9 ;        0064 ;  SA      # ( 𝒹 → d ) MATHEMATICAL SCRIPT SMALL D → LATIN SMALL LETTER D   # 
+1D4ED ;        0064 ;  SA      # ( 𝓭 → d ) MATHEMATICAL BOLD SCRIPT SMALL D → LATIN SMALL LETTER D      # 
+1D521 ;        0064 ;  SA      # ( 𝔡 → d ) MATHEMATICAL FRAKTUR SMALL D → LATIN SMALL LETTER D  # 
+1D555 ;        0064 ;  SA      # ( 𝕕 → d ) MATHEMATICAL DOUBLE-STRUCK SMALL D → LATIN SMALL LETTER D    # 
+1D589 ;        0064 ;  SA      # ( 𝖉 → d ) MATHEMATICAL BOLD FRAKTUR SMALL D → LATIN SMALL LETTER D     # 
+1D5BD ;        0064 ;  SA      # ( 𝖽 → d ) MATHEMATICAL SANS-SERIF SMALL D → LATIN SMALL LETTER D       # 
+1D5F1 ;        0064 ;  SA      # ( 𝗱 → d ) MATHEMATICAL SANS-SERIF BOLD SMALL D → LATIN SMALL LETTER D  # 
+1D625 ;        0064 ;  SA      # ( 𝘥 → d ) MATHEMATICAL SANS-SERIF ITALIC SMALL D → LATIN SMALL LETTER D        # 
+1D659 ;        0064 ;  SA      # ( 𝙙 → d ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D → LATIN SMALL LETTER D   # 
+1D68D ;        0064 ;  SA      # ( 𝚍 → d ) MATHEMATICAL MONOSPACE SMALL D → LATIN SMALL LETTER D        # 
+
+216E ; 0044 ;  SA      # ( Ⅾ → D ) ROMAN NUMERAL FIVE HUNDRED → LATIN CAPITAL LETTER D   # 
+2145 ; 0044 ;  SA      # ( ⅅ → D ) DOUBLE-STRUCK ITALIC CAPITAL D → LATIN CAPITAL LETTER D       # 
+1D403 ;        0044 ;  SA      # ( 𝐃 → D ) MATHEMATICAL BOLD CAPITAL D → LATIN CAPITAL LETTER D # 
+1D437 ;        0044 ;  SA      # ( 𝐷 → D ) MATHEMATICAL ITALIC CAPITAL D → LATIN CAPITAL LETTER D       # 
+1D46B ;        0044 ;  SA      # ( 𝑫 → D ) MATHEMATICAL BOLD ITALIC CAPITAL D → LATIN CAPITAL LETTER D  # 
+1D49F ;        0044 ;  SA      # ( 𝒟 → D ) MATHEMATICAL SCRIPT CAPITAL D → LATIN CAPITAL LETTER D       # 
+1D4D3 ;        0044 ;  SA      # ( 𝓓 → D ) MATHEMATICAL BOLD SCRIPT CAPITAL D → LATIN CAPITAL LETTER D  # 
+1D507 ;        0044 ;  SA      # ( 𝔇 → D ) MATHEMATICAL FRAKTUR CAPITAL D → LATIN CAPITAL LETTER D      # 
+1D53B ;        0044 ;  SA      # ( 𝔻 → D ) MATHEMATICAL DOUBLE-STRUCK CAPITAL D → LATIN CAPITAL LETTER D        # 
+1D56F ;        0044 ;  SA      # ( 𝕯 → D ) MATHEMATICAL BOLD FRAKTUR CAPITAL D → LATIN CAPITAL LETTER D # 
+1D5A3 ;        0044 ;  SA      # ( 𝖣 → D ) MATHEMATICAL SANS-SERIF CAPITAL D → LATIN CAPITAL LETTER D   # 
+1D5D7 ;        0044 ;  SA      # ( 𝗗 → D ) MATHEMATICAL SANS-SERIF BOLD CAPITAL D → LATIN CAPITAL LETTER D      # 
+1D60B ;        0044 ;  SA      # ( 𝘋 → D ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL D → LATIN CAPITAL LETTER D    # 
+1D63F ;        0044 ;  SA      # ( 𝘿 → D ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D → LATIN CAPITAL LETTER D       # 
+1D673 ;        0044 ;  SA      # ( 𝙳 → D ) MATHEMATICAL MONOSPACE CAPITAL D → LATIN CAPITAL LETTER D    # 
+
+0257 ; 0064 0314 ;     SA      # ( ɗ → d̔ ) LATIN SMALL LETTER D WITH HOOK → LATIN SMALL LETTER D, COMBINING REVERSED COMMA ABOVE        # 
+
+0256 ; 0064 0328 ;     SA      # ( ɖ → d̨ ) LATIN SMALL LETTER D WITH TAIL → LATIN SMALL LETTER D, COMBINING OGONEK      # →d̢→
+
+018C ; 0064 0304 ;     SA      # ( ƌ → d̄ ) LATIN SMALL LETTER D WITH TOPBAR → LATIN SMALL LETTER D, COMBINING MACRON    # 
+
+0111 ; 0064 0335 ;     SA      # ( đ → d̵ ) LATIN SMALL LETTER D WITH STROKE → LATIN SMALL LETTER D, COMBINING SHORT STROKE OVERLAY      # 
+
+0110 ; 0044 0335 ;     SA      # ( Đ → D̵ ) LATIN CAPITAL LETTER D WITH STROKE → LATIN CAPITAL LETTER D, COMBINING SHORT STROKE OVERLAY  # 
+00D0 ; 0044 0335 ;     SA      # ( Ð → D̵ ) LATIN CAPITAL LETTER ETH → LATIN CAPITAL LETTER D, COMBINING SHORT STROKE OVERLAY    # →Đ→
+0189 ; 0044 0335 ;     SA      # ( Ɖ → D̵ ) LATIN CAPITAL LETTER AFRICAN D → LATIN CAPITAL LETTER D, COMBINING SHORT STROKE OVERLAY      # →Đ→
+
+20AB ; 0064 0335 0331 ;        SA      #* ( ₫ → ḏ̵ ) DONG SIGN → LATIN SMALL LETTER D, COMBINING SHORT STROKE OVERLAY, COMBINING MACRON BELOW # →đ̱→
+
+A77A ; A779 ;  SA      # ( ꝺ → Ꝺ ) LATIN SMALL LETTER INSULAR D → LATIN CAPITAL LETTER INSULAR D       # 
+
+01F3 ; 0064 007A ;     SA      # ( dz → dz ) LATIN SMALL LETTER DZ → LATIN SMALL LETTER D, LATIN SMALL LETTER Z    # 
+02A3 ; 0064 007A ;     SA      # ( ʣ → dz ) LATIN SMALL LETTER DZ DIGRAPH → LATIN SMALL LETTER D, LATIN SMALL LETTER Z    # 
+
+01F2 ; 0044 007A ;     SA      # ( Dz → Dz ) LATIN CAPITAL LETTER D WITH SMALL LETTER Z → LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z     # 
+
+01F1 ; 0044 005A ;     SA      # ( DZ → DZ ) LATIN CAPITAL LETTER DZ → LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z      # 
+
+01C6 ; 0064 017E ;     SA      # ( dž → dž ) LATIN SMALL LETTER DZ WITH CARON → LATIN SMALL LETTER D, LATIN SMALL LETTER Z WITH CARON     # 
+
+01C5 ; 0044 017E ;     SA      # ( Dž → Dž ) LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON → LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z WITH CARON      # 
+
+01C4 ; 0044 017D ;     SA      # ( DŽ → DŽ ) LATIN CAPITAL LETTER DZ WITH CARON → LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z WITH CARON       # 
+
+02A5 ; 0064 0291 ;     SA      # ( ʥ → dʑ ) LATIN SMALL LETTER DZ DIGRAPH WITH CURL → LATIN SMALL LETTER D, LATIN SMALL LETTER Z WITH CURL       # 
+
+02A4 ; 0064 021D ;     SA      # ( ʤ → dȝ ) LATIN SMALL LETTER DEZH DIGRAPH → LATIN SMALL LETTER D, LATIN SMALL LETTER YOGH      # →dʒ→
+
+1D6C5 ;        1E9F ;  SA      # ( 𝛅 → ẟ ) MATHEMATICAL BOLD SMALL DELTA → LATIN SMALL LETTER DELTA   # →δ→
+1D6FF ;        1E9F ;  SA      # ( 𝛿 → ẟ ) MATHEMATICAL ITALIC SMALL DELTA → LATIN SMALL LETTER DELTA # →δ→
+1D739 ;        1E9F ;  SA      # ( 𝜹 → ẟ ) MATHEMATICAL BOLD ITALIC SMALL DELTA → LATIN SMALL LETTER DELTA    # →δ→
+1D773 ;        1E9F ;  SA      # ( 𝝳 → ẟ ) MATHEMATICAL SANS-SERIF BOLD SMALL DELTA → LATIN SMALL LETTER DELTA        # →δ→
+1D7AD ;        1E9F ;  SA      # ( 𝞭 → ẟ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA → LATIN SMALL LETTER DELTA # →δ→
+
+212E ; 0065 ;  SA      # ( ℮ → e ) ESTIMATED SYMBOL → LATIN SMALL LETTER E       # 
+FF45 ; 0065 ;  SA      # ( e → e ) FULLWIDTH LATIN SMALL LETTER E → LATIN SMALL LETTER E # →е→
+212F ; 0065 ;  SA      # ( ℯ → e ) SCRIPT SMALL E → LATIN SMALL LETTER E # 
+2147 ; 0065 ;  SA      # ( ⅇ → e ) DOUBLE-STRUCK ITALIC SMALL E → LATIN SMALL LETTER E   # 
+1D41E ;        0065 ;  SA      # ( 𝐞 → e ) MATHEMATICAL BOLD SMALL E → LATIN SMALL LETTER E     # 
+1D452 ;        0065 ;  SA      # ( 𝑒 → e ) MATHEMATICAL ITALIC SMALL E → LATIN SMALL LETTER E   # 
+1D486 ;        0065 ;  SA      # ( 𝒆 → e ) MATHEMATICAL BOLD ITALIC SMALL E → LATIN SMALL LETTER E      # 
+1D4EE ;        0065 ;  SA      # ( 𝓮 → e ) MATHEMATICAL BOLD SCRIPT SMALL E → LATIN SMALL LETTER E      # 
+1D522 ;        0065 ;  SA      # ( 𝔢 → e ) MATHEMATICAL FRAKTUR SMALL E → LATIN SMALL LETTER E  # 
+1D556 ;        0065 ;  SA      # ( 𝕖 → e ) MATHEMATICAL DOUBLE-STRUCK SMALL E → LATIN SMALL LETTER E    # 
+1D58A ;        0065 ;  SA      # ( 𝖊 → e ) MATHEMATICAL BOLD FRAKTUR SMALL E → LATIN SMALL LETTER E     # 
+1D5BE ;        0065 ;  SA      # ( 𝖾 → e ) MATHEMATICAL SANS-SERIF SMALL E → LATIN SMALL LETTER E       # 
+1D5F2 ;        0065 ;  SA      # ( 𝗲 → e ) MATHEMATICAL SANS-SERIF BOLD SMALL E → LATIN SMALL LETTER E  # 
+1D626 ;        0065 ;  SA      # ( 𝘦 → e ) MATHEMATICAL SANS-SERIF ITALIC SMALL E → LATIN SMALL LETTER E        # 
+1D65A ;        0065 ;  SA      # ( 𝙚 → e ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E → LATIN SMALL LETTER E   # 
+1D68E ;        0065 ;  SA      # ( 𝚎 → e ) MATHEMATICAL MONOSPACE SMALL E → LATIN SMALL LETTER E        # 
+
+22FF ; 0045 ;  SA      #* ( ⋿ → E ) Z NOTATION BAG MEMBERSHIP → LATIN CAPITAL LETTER E   # 
+FF25 ; 0045 ;  SA      # ( E → E ) FULLWIDTH LATIN CAPITAL LETTER E → LATIN CAPITAL LETTER E     # →Ε→
+2130 ; 0045 ;  SA      # ( ℰ → E ) SCRIPT CAPITAL E → LATIN CAPITAL LETTER E     # 
+1D404 ;        0045 ;  SA      # ( 𝐄 → E ) MATHEMATICAL BOLD CAPITAL E → LATIN CAPITAL LETTER E # 
+1D438 ;        0045 ;  SA      # ( 𝐸 → E ) MATHEMATICAL ITALIC CAPITAL E → LATIN CAPITAL LETTER E       # 
+1D46C ;        0045 ;  SA      # ( 𝑬 → E ) MATHEMATICAL BOLD ITALIC CAPITAL E → LATIN CAPITAL LETTER E  # 
+1D4D4 ;        0045 ;  SA      # ( 𝓔 → E ) MATHEMATICAL BOLD SCRIPT CAPITAL E → LATIN CAPITAL LETTER E  # 
+1D508 ;        0045 ;  SA      # ( 𝔈 → E ) MATHEMATICAL FRAKTUR CAPITAL E → LATIN CAPITAL LETTER E      # 
+1D53C ;        0045 ;  SA      # ( 𝔼 → E ) MATHEMATICAL DOUBLE-STRUCK CAPITAL E → LATIN CAPITAL LETTER E        # 
+1D570 ;        0045 ;  SA      # ( 𝕰 → E ) MATHEMATICAL BOLD FRAKTUR CAPITAL E → LATIN CAPITAL LETTER E # 
+1D5A4 ;        0045 ;  SA      # ( 𝖤 → E ) MATHEMATICAL SANS-SERIF CAPITAL E → LATIN CAPITAL LETTER E   # 
+1D5D8 ;        0045 ;  SA      # ( 𝗘 → E ) MATHEMATICAL SANS-SERIF BOLD CAPITAL E → LATIN CAPITAL LETTER E      # 
+1D60C ;        0045 ;  SA      # ( 𝘌 → E ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL E → LATIN CAPITAL LETTER E    # 
+1D640 ;        0045 ;  SA      # ( 𝙀 → E ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E → LATIN CAPITAL LETTER E       # 
+1D674 ;        0045 ;  SA      # ( 𝙴 → E ) MATHEMATICAL MONOSPACE CAPITAL E → LATIN CAPITAL LETTER E    # 
+1D6AC ;        0045 ;  SA      # ( 𝚬 → E ) MATHEMATICAL BOLD CAPITAL EPSILON → LATIN CAPITAL LETTER E   # →𝐄→
+1D6E6 ;        0045 ;  SA      # ( 𝛦 → E ) MATHEMATICAL ITALIC CAPITAL EPSILON → LATIN CAPITAL LETTER E # →𝐸→
+1D720 ;        0045 ;  SA      # ( 𝜠 → E ) MATHEMATICAL BOLD ITALIC CAPITAL EPSILON → LATIN CAPITAL LETTER E    # →𝑬→
+1D75A ;        0045 ;  SA      # ( 𝝚 → E ) MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON → LATIN CAPITAL LETTER E        # →Ε→
+1D794 ;        0045 ;  SA      # ( 𝞔 → E ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON → LATIN CAPITAL LETTER E # →Ε→
+
+011B ; 0115 ;  SA      # ( ě → ĕ ) LATIN SMALL LETTER E WITH CARON → LATIN SMALL LETTER E WITH BREVE     # 
+
+011A ; 0114 ;  SA      # ( Ě → Ĕ ) LATIN CAPITAL LETTER E WITH CARON → LATIN CAPITAL LETTER E WITH BREVE # 
+
+0259 ; 01DD ;  SA      # ( ə → ǝ ) LATIN SMALL LETTER SCHWA → LATIN SMALL LETTER TURNED E        # 
+
+2203 ; 018E ;  SA      #* ( ∃ → Ǝ ) THERE EXISTS → LATIN CAPITAL LETTER REVERSED E      # 
+
+025A ; 01DD 02DE ;     SA      # ( ɚ → ǝ˞ ) LATIN SMALL LETTER SCHWA WITH HOOK → LATIN SMALL LETTER TURNED E, MODIFIER LETTER RHOTIC HOOK       # →ə˞→
+
+1D14 ; 01DD 006F ;     SA      # ( ᴔ → ǝo ) LATIN SMALL LETTER TURNED OE → LATIN SMALL LETTER TURNED E, LATIN SMALL LETTER O    # →əo→
+
+22F4 ; 025B ;  SA      #* ( ⋴ → ɛ ) SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE → LATIN SMALL LETTER OPEN E  # 
+1D6C6 ;        025B ;  SA      # ( 𝛆 → ɛ ) MATHEMATICAL BOLD SMALL EPSILON → LATIN SMALL LETTER OPEN E # →ε→
+1D6DC ;        025B ;  SA      # ( 𝛜 → ɛ ) MATHEMATICAL BOLD EPSILON SYMBOL → LATIN SMALL LETTER OPEN E        # →ε→
+1D700 ;        025B ;  SA      # ( 𝜀 → ɛ ) MATHEMATICAL ITALIC SMALL EPSILON → LATIN SMALL LETTER OPEN E       # →ε→
+1D716 ;        025B ;  SA      # ( 𝜖 → ɛ ) MATHEMATICAL ITALIC EPSILON SYMBOL → LATIN SMALL LETTER OPEN E      # →ε→
+1D73A ;        025B ;  SA      # ( 𝜺 → ɛ ) MATHEMATICAL BOLD ITALIC SMALL EPSILON → LATIN SMALL LETTER OPEN E  # →ε→
+1D750 ;        025B ;  SA      # ( 𝝐 → ɛ ) MATHEMATICAL BOLD ITALIC EPSILON SYMBOL → LATIN SMALL LETTER OPEN E # →ε→
+1D774 ;        025B ;  SA      # ( 𝝴 → ɛ ) MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON → LATIN SMALL LETTER OPEN E      # →ε→
+1D78A ;        025B ;  SA      # ( 𝞊 → ɛ ) MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL → LATIN SMALL LETTER OPEN E     # →ε→
+1D7AE ;        025B ;  SA      # ( 𝞮 → ɛ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON → LATIN SMALL LETTER OPEN E       # →ε→
+1D7C4 ;        025B ;  SA      # ( 𝟄 → ɛ ) MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL → LATIN SMALL LETTER OPEN E      # →ε→
+
+20AC ; 0190 ;  SA      #* ( € → Ɛ ) EURO SIGN → LATIN CAPITAL LETTER OPEN E     # →Є→
+2107 ; 0190 ;  SA      # ( ℇ → Ɛ ) EULER CONSTANT → LATIN CAPITAL LETTER OPEN E # 
+
+1D9F ; 1D4B ;  SA      # ( ᶟ → ᵋ ) MODIFIER LETTER SMALL REVERSED OPEN E → MODIFIER LETTER SMALL OPEN E        # 
+
+1D08 ; 025C ;  SA      # ( ᴈ → ɜ ) LATIN SMALL LETTER TURNED OPEN E → LATIN SMALL LETTER REVERSED OPEN E        # 
+
+1D41F ;        0066 ;  SA      # ( 𝐟 → f ) MATHEMATICAL BOLD SMALL F → LATIN SMALL LETTER F     # 
+1D453 ;        0066 ;  SA      # ( 𝑓 → f ) MATHEMATICAL ITALIC SMALL F → LATIN SMALL LETTER F   # 
+1D487 ;        0066 ;  SA      # ( 𝒇 → f ) MATHEMATICAL BOLD ITALIC SMALL F → LATIN SMALL LETTER F      # 
+1D4BB ;        0066 ;  SA      # ( 𝒻 → f ) MATHEMATICAL SCRIPT SMALL F → LATIN SMALL LETTER F   # 
+1D4EF ;        0066 ;  SA      # ( 𝓯 → f ) MATHEMATICAL BOLD SCRIPT SMALL F → LATIN SMALL LETTER F      # 
+1D523 ;        0066 ;  SA      # ( 𝔣 → f ) MATHEMATICAL FRAKTUR SMALL F → LATIN SMALL LETTER F  # 
+1D557 ;        0066 ;  SA      # ( 𝕗 → f ) MATHEMATICAL DOUBLE-STRUCK SMALL F → LATIN SMALL LETTER F    # 
+1D58B ;        0066 ;  SA      # ( 𝖋 → f ) MATHEMATICAL BOLD FRAKTUR SMALL F → LATIN SMALL LETTER F     # 
+1D5BF ;        0066 ;  SA      # ( 𝖿 → f ) MATHEMATICAL SANS-SERIF SMALL F → LATIN SMALL LETTER F       # 
+1D5F3 ;        0066 ;  SA      # ( 𝗳 → f ) MATHEMATICAL SANS-SERIF BOLD SMALL F → LATIN SMALL LETTER F  # 
+1D627 ;        0066 ;  SA      # ( 𝘧 → f ) MATHEMATICAL SANS-SERIF ITALIC SMALL F → LATIN SMALL LETTER F        # 
+1D65B ;        0066 ;  SA      # ( 𝙛 → f ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F → LATIN SMALL LETTER F   # 
+1D68F ;        0066 ;  SA      # ( 𝚏 → f ) MATHEMATICAL MONOSPACE SMALL F → LATIN SMALL LETTER F        # 
+017F ; 0066 ;  SA      # ( ſ → f ) LATIN SMALL LETTER LONG S → LATIN SMALL LETTER F       # 
+1E9D ; 0066 ;  SA      # ( ẝ → f ) LATIN SMALL LETTER LONG S WITH HIGH STROKE → LATIN SMALL LETTER F     # 
+
+2131 ; 0046 ;  SA      # ( ℱ → F ) SCRIPT CAPITAL F → LATIN CAPITAL LETTER F     # 
+1D405 ;        0046 ;  SA      # ( 𝐅 → F ) MATHEMATICAL BOLD CAPITAL F → LATIN CAPITAL LETTER F # 
+1D439 ;        0046 ;  SA      # ( 𝐹 → F ) MATHEMATICAL ITALIC CAPITAL F → LATIN CAPITAL LETTER F       # 
+1D46D ;        0046 ;  SA      # ( 𝑭 → F ) MATHEMATICAL BOLD ITALIC CAPITAL F → LATIN CAPITAL LETTER F  # 
+1D4D5 ;        0046 ;  SA      # ( 𝓕 → F ) MATHEMATICAL BOLD SCRIPT CAPITAL F → LATIN CAPITAL LETTER F  # 
+1D509 ;        0046 ;  SA      # ( 𝔉 → F ) MATHEMATICAL FRAKTUR CAPITAL F → LATIN CAPITAL LETTER F      # 
+1D53D ;        0046 ;  SA      # ( 𝔽 → F ) MATHEMATICAL DOUBLE-STRUCK CAPITAL F → LATIN CAPITAL LETTER F        # 
+1D571 ;        0046 ;  SA      # ( 𝕱 → F ) MATHEMATICAL BOLD FRAKTUR CAPITAL F → LATIN CAPITAL LETTER F # 
+1D5A5 ;        0046 ;  SA      # ( 𝖥 → F ) MATHEMATICAL SANS-SERIF CAPITAL F → LATIN CAPITAL LETTER F   # 
+1D5D9 ;        0046 ;  SA      # ( 𝗙 → F ) MATHEMATICAL SANS-SERIF BOLD CAPITAL F → LATIN CAPITAL LETTER F      # 
+1D60D ;        0046 ;  SA      # ( 𝘍 → F ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL F → LATIN CAPITAL LETTER F    # 
+1D641 ;        0046 ;  SA      # ( 𝙁 → F ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F → LATIN CAPITAL LETTER F       # 
+1D675 ;        0046 ;  SA      # ( 𝙵 → F ) MATHEMATICAL MONOSPACE CAPITAL F → LATIN CAPITAL LETTER F    # 
+1D7CA ;        0046 ;  SA      # ( 𝟊 → F ) MATHEMATICAL BOLD CAPITAL DIGAMMA → LATIN CAPITAL LETTER F   # →Ϝ→
+
+0192 ; 0066 0326 ;     SA      # ( ƒ → f̦ ) LATIN SMALL LETTER F WITH HOOK → LATIN SMALL LETTER F, COMBINING COMMA BELOW # →f̡→
+
+0191 ; 0046 0326 ;     SA      # ( Ƒ → F̦ ) LATIN CAPITAL LETTER F WITH HOOK → LATIN CAPITAL LETTER F, COMBINING COMMA BELOW     # →F̡→
+
+213B ; 0046 0041 0058 ;        SA      #* ( ℻ → FAX ) FACSIMILE SIGN → LATIN CAPITAL LETTER F, LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER X    # 
+
+FB00 ; 0066 0066 ;     SA      # ( ff → ff ) LATIN SMALL LIGATURE FF → LATIN SMALL LETTER F, LATIN SMALL LETTER F # 
+
+FB03 ; 0066 0066 0069 ;        SA      # ( ffi → ffi ) LATIN SMALL LIGATURE FFI → LATIN SMALL LETTER F, LATIN SMALL LETTER F, LATIN SMALL LETTER I # 
+
+FB04 ; 0066 0066 006C ;        SA      # ( ffl → ffl ) LATIN SMALL LIGATURE FFL → LATIN SMALL LETTER F, LATIN SMALL LETTER F, LATIN SMALL LETTER L # 
+
+FB01 ; 0066 0069 ;     SA      # ( fi → fi ) LATIN SMALL LIGATURE FI → LATIN SMALL LETTER F, LATIN SMALL LETTER I # 
+
+FB02 ; 0066 006C ;     SA      # ( fl → fl ) LATIN SMALL LIGATURE FL → LATIN SMALL LETTER F, LATIN SMALL LETTER L # 
+
+02A9 ; 0066 014B ;     SA      # ( ʩ → fŋ ) LATIN SMALL LETTER FENG DIGRAPH → LATIN SMALL LETTER F, LATIN SMALL LETTER ENG       # 
+
+FF47 ; 0067 ;  SA      # ( g → g ) FULLWIDTH LATIN SMALL LETTER G → LATIN SMALL LETTER G # →ɡ→
+210A ; 0067 ;  SA      # ( ℊ → g ) SCRIPT SMALL G → LATIN SMALL LETTER G # 
+1D420 ;        0067 ;  SA      # ( 𝐠 → g ) MATHEMATICAL BOLD SMALL G → LATIN SMALL LETTER G     # 
+1D454 ;        0067 ;  SA      # ( 𝑔 → g ) MATHEMATICAL ITALIC SMALL G → LATIN SMALL LETTER G   # 
+1D488 ;        0067 ;  SA      # ( 𝒈 → g ) MATHEMATICAL BOLD ITALIC SMALL G → LATIN SMALL LETTER G      # 
+1D4F0 ;        0067 ;  SA      # ( 𝓰 → g ) MATHEMATICAL BOLD SCRIPT SMALL G → LATIN SMALL LETTER G      # 
+1D524 ;        0067 ;  SA      # ( 𝔤 → g ) MATHEMATICAL FRAKTUR SMALL G → LATIN SMALL LETTER G  # 
+1D558 ;        0067 ;  SA      # ( 𝕘 → g ) MATHEMATICAL DOUBLE-STRUCK SMALL G → LATIN SMALL LETTER G    # 
+1D58C ;        0067 ;  SA      # ( 𝖌 → g ) MATHEMATICAL BOLD FRAKTUR SMALL G → LATIN SMALL LETTER G     # 
+1D5C0 ;        0067 ;  SA      # ( 𝗀 → g ) MATHEMATICAL SANS-SERIF SMALL G → LATIN SMALL LETTER G       # 
+1D5F4 ;        0067 ;  SA      # ( 𝗴 → g ) MATHEMATICAL SANS-SERIF BOLD SMALL G → LATIN SMALL LETTER G  # 
+1D628 ;        0067 ;  SA      # ( 𝘨 → g ) MATHEMATICAL SANS-SERIF ITALIC SMALL G → LATIN SMALL LETTER G        # 
+1D65C ;        0067 ;  SA      # ( 𝙜 → g ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G → LATIN SMALL LETTER G   # 
+1D690 ;        0067 ;  SA      # ( 𝚐 → g ) MATHEMATICAL MONOSPACE SMALL G → LATIN SMALL LETTER G        # 
+0261 ; 0067 ;  SA      # ( ɡ → g ) LATIN SMALL LETTER SCRIPT G → LATIN SMALL LETTER G     # 
+1D83 ; 0067 ;  SA      # ( ᶃ → g ) LATIN SMALL LETTER G WITH PALATAL HOOK → LATIN SMALL LETTER G # 
+018D ; 0067 ;  SA      # ( ƍ → g ) LATIN SMALL LETTER TURNED DELTA → LATIN SMALL LETTER G # 
+
+1D406 ;        0047 ;  SA      # ( 𝐆 → G ) MATHEMATICAL BOLD CAPITAL G → LATIN CAPITAL LETTER G # 
+1D43A ;        0047 ;  SA      # ( 𝐺 → G ) MATHEMATICAL ITALIC CAPITAL G → LATIN CAPITAL LETTER G       # 
+1D46E ;        0047 ;  SA      # ( 𝑮 → G ) MATHEMATICAL BOLD ITALIC CAPITAL G → LATIN CAPITAL LETTER G  # 
+1D4A2 ;        0047 ;  SA      # ( 𝒢 → G ) MATHEMATICAL SCRIPT CAPITAL G → LATIN CAPITAL LETTER G       # 
+1D4D6 ;        0047 ;  SA      # ( 𝓖 → G ) MATHEMATICAL BOLD SCRIPT CAPITAL G → LATIN CAPITAL LETTER G  # 
+1D50A ;        0047 ;  SA      # ( 𝔊 → G ) MATHEMATICAL FRAKTUR CAPITAL G → LATIN CAPITAL LETTER G      # 
+1D53E ;        0047 ;  SA      # ( 𝔾 → G ) MATHEMATICAL DOUBLE-STRUCK CAPITAL G → LATIN CAPITAL LETTER G        # 
+1D572 ;        0047 ;  SA      # ( 𝕲 → G ) MATHEMATICAL BOLD FRAKTUR CAPITAL G → LATIN CAPITAL LETTER G # 
+1D5A6 ;        0047 ;  SA      # ( 𝖦 → G ) MATHEMATICAL SANS-SERIF CAPITAL G → LATIN CAPITAL LETTER G   # 
+1D5DA ;        0047 ;  SA      # ( 𝗚 → G ) MATHEMATICAL SANS-SERIF BOLD CAPITAL G → LATIN CAPITAL LETTER G      # 
+1D60E ;        0047 ;  SA      # ( 𝘎 → G ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL G → LATIN CAPITAL LETTER G    # 
+1D642 ;        0047 ;  SA      # ( 𝙂 → G ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G → LATIN CAPITAL LETTER G       # 
+1D676 ;        0047 ;  SA      # ( 𝙶 → G ) MATHEMATICAL MONOSPACE CAPITAL G → LATIN CAPITAL LETTER G    # 
+
+1DA2 ; 1D4D ;  SA      # ( ᶢ → ᵍ ) MODIFIER LETTER SMALL SCRIPT G → MODIFIER LETTER SMALL G    # 
+
+0260 ; 0067 0314 ;     SA      # ( ɠ → g̔ ) LATIN SMALL LETTER G WITH HOOK → LATIN SMALL LETTER G, COMBINING REVERSED COMMA ABOVE        # 
+
+01E7 ; 011F ;  SA      # ( ǧ → ğ ) LATIN SMALL LETTER G WITH CARON → LATIN SMALL LETTER G WITH BREVE     # 
+
+01E6 ; 011E ;  SA      # ( Ǧ → Ğ ) LATIN CAPITAL LETTER G WITH CARON → LATIN CAPITAL LETTER G WITH BREVE # 
+
+01F5 ; 0123 ;  SA      # ( ǵ → ģ ) LATIN SMALL LETTER G WITH ACUTE → LATIN SMALL LETTER G WITH CEDILLA   # 
+
+01E5 ; 0067 0335 ;     SA      # ( ǥ → g̵ ) LATIN SMALL LETTER G WITH STROKE → LATIN SMALL LETTER G, COMBINING SHORT STROKE OVERLAY      # 
+
+01E4 ; 0047 0335 ;     SA      # ( Ǥ → G̵ ) LATIN CAPITAL LETTER G WITH STROKE → LATIN CAPITAL LETTER G, COMBINING SHORT STROKE OVERLAY  # 
+
+0193 ; 0047 0027 ;     SA      # ( Ɠ → G' ) LATIN CAPITAL LETTER G WITH HOOK → LATIN CAPITAL LETTER G, APOSTROPHE # →Gʽ→
+
+FF48 ; 0068 ;  SA      # ( h → h ) FULLWIDTH LATIN SMALL LETTER H → LATIN SMALL LETTER H # →һ→
+210E ; 0068 ;  SA      # ( ℎ → h ) PLANCK CONSTANT → LATIN SMALL LETTER H        # 
+1D421 ;        0068 ;  SA      # ( 𝐡 → h ) MATHEMATICAL BOLD SMALL H → LATIN SMALL LETTER H     # 
+1D489 ;        0068 ;  SA      # ( 𝒉 → h ) MATHEMATICAL BOLD ITALIC SMALL H → LATIN SMALL LETTER H      # 
+1D4BD ;        0068 ;  SA      # ( 𝒽 → h ) MATHEMATICAL SCRIPT SMALL H → LATIN SMALL LETTER H   # 
+1D4F1 ;        0068 ;  SA      # ( 𝓱 → h ) MATHEMATICAL BOLD SCRIPT SMALL H → LATIN SMALL LETTER H      # 
+1D525 ;        0068 ;  SA      # ( 𝔥 → h ) MATHEMATICAL FRAKTUR SMALL H → LATIN SMALL LETTER H  # 
+1D559 ;        0068 ;  SA      # ( 𝕙 → h ) MATHEMATICAL DOUBLE-STRUCK SMALL H → LATIN SMALL LETTER H    # 
+1D58D ;        0068 ;  SA      # ( 𝖍 → h ) MATHEMATICAL BOLD FRAKTUR SMALL H → LATIN SMALL LETTER H     # 
+1D5C1 ;        0068 ;  SA      # ( 𝗁 → h ) MATHEMATICAL SANS-SERIF SMALL H → LATIN SMALL LETTER H       # 
+1D5F5 ;        0068 ;  SA      # ( 𝗵 → h ) MATHEMATICAL SANS-SERIF BOLD SMALL H → LATIN SMALL LETTER H  # 
+1D629 ;        0068 ;  SA      # ( 𝘩 → h ) MATHEMATICAL SANS-SERIF ITALIC SMALL H → LATIN SMALL LETTER H        # 
+1D65D ;        0068 ;  SA      # ( 𝙝 → h ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H → LATIN SMALL LETTER H   # 
+1D691 ;        0068 ;  SA      # ( 𝚑 → h ) MATHEMATICAL MONOSPACE SMALL H → LATIN SMALL LETTER H        # 
+
+FF28 ; 0048 ;  SA      # ( H → H ) FULLWIDTH LATIN CAPITAL LETTER H → LATIN CAPITAL LETTER H     # →Н→
+210B ; 0048 ;  SA      # ( ℋ → H ) SCRIPT CAPITAL H → LATIN CAPITAL LETTER H     # 
+210C ; 0048 ;  SA      # ( ℌ → H ) BLACK-LETTER CAPITAL H → LATIN CAPITAL LETTER H       # 
+210D ; 0048 ;  SA      # ( ℍ → H ) DOUBLE-STRUCK CAPITAL H → LATIN CAPITAL LETTER H      # 
+1D407 ;        0048 ;  SA      # ( 𝐇 → H ) MATHEMATICAL BOLD CAPITAL H → LATIN CAPITAL LETTER H # 
+1D43B ;        0048 ;  SA      # ( 𝐻 → H ) MATHEMATICAL ITALIC CAPITAL H → LATIN CAPITAL LETTER H       # 
+1D46F ;        0048 ;  SA      # ( 𝑯 → H ) MATHEMATICAL BOLD ITALIC CAPITAL H → LATIN CAPITAL LETTER H  # 
+1D4D7 ;        0048 ;  SA      # ( 𝓗 → H ) MATHEMATICAL BOLD SCRIPT CAPITAL H → LATIN CAPITAL LETTER H  # 
+1D573 ;        0048 ;  SA      # ( 𝕳 → H ) MATHEMATICAL BOLD FRAKTUR CAPITAL H → LATIN CAPITAL LETTER H # 
+1D5A7 ;        0048 ;  SA      # ( 𝖧 → H ) MATHEMATICAL SANS-SERIF CAPITAL H → LATIN CAPITAL LETTER H   # 
+1D5DB ;        0048 ;  SA      # ( 𝗛 → H ) MATHEMATICAL SANS-SERIF BOLD CAPITAL H → LATIN CAPITAL LETTER H      # 
+1D60F ;        0048 ;  SA      # ( 𝘏 → H ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL H → LATIN CAPITAL LETTER H    # 
+1D643 ;        0048 ;  SA      # ( 𝙃 → H ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H → LATIN CAPITAL LETTER H       # 
+1D677 ;        0048 ;  SA      # ( 𝙷 → H ) MATHEMATICAL MONOSPACE CAPITAL H → LATIN CAPITAL LETTER H    # 
+1D6AE ;        0048 ;  SA      # ( 𝚮 → H ) MATHEMATICAL BOLD CAPITAL ETA → LATIN CAPITAL LETTER H       # →𝐇→
+1D6E8 ;        0048 ;  SA      # ( 𝛨 → H ) MATHEMATICAL ITALIC CAPITAL ETA → LATIN CAPITAL LETTER H     # →𝐻→
+1D722 ;        0048 ;  SA      # ( 𝜢 → H ) MATHEMATICAL BOLD ITALIC CAPITAL ETA → LATIN CAPITAL LETTER H        # →Η→
+1D75C ;        0048 ;  SA      # ( 𝝜 → H ) MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA → LATIN CAPITAL LETTER H    # →Η→
+1D796 ;        0048 ;  SA      # ( 𝞖 → H ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA → LATIN CAPITAL LETTER H     # →Η→
+
+0266 ; 0068 0314 ;     SA      # ( ɦ → h̔ ) LATIN SMALL LETTER H WITH HOOK → LATIN SMALL LETTER H, COMBINING REVERSED COMMA ABOVE        # 
+
+2C67 ; 0048 0329 ;     SA      # ( Ⱨ → H̩ ) LATIN CAPITAL LETTER H WITH DESCENDER → LATIN CAPITAL LETTER H, COMBINING VERTICAL LINE BELOW       # →Ң→→Н̩→
+
+0127 ; 0068 0335 ;     SA      # ( ħ → h̵ ) LATIN SMALL LETTER H WITH STROKE → LATIN SMALL LETTER H, COMBINING SHORT STROKE OVERLAY      # 
+210F ; 0068 0335 ;     SA      # ( ℏ → h̵ ) PLANCK CONSTANT OVER TWO PI → LATIN SMALL LETTER H, COMBINING SHORT STROKE OVERLAY  # →ħ→
+
+0126 ; 0048 0335 ;     SA      # ( Ħ → H̵ ) LATIN CAPITAL LETTER H WITH STROKE → LATIN CAPITAL LETTER H, COMBINING SHORT STROKE OVERLAY  # 
+
+02DB ; 0069 ;  SA      #* ( ˛ → i ) OGONEK → LATIN SMALL LETTER I # →ͺ→→ι→→ι→
+2373 ; 0069 ;  SA      #* ( ⍳ → i ) APL FUNCTIONAL SYMBOL IOTA → LATIN SMALL LETTER I    # →ι→
+FF49 ; 0069 ;  SA      # ( i → i ) FULLWIDTH LATIN SMALL LETTER I → LATIN SMALL LETTER I # →і→
+2170 ; 0069 ;  SA      # ( ⅰ → i ) SMALL ROMAN NUMERAL ONE → LATIN SMALL LETTER I        # 
+2139 ; 0069 ;  SA      # ( ℹ → i ) INFORMATION SOURCE → LATIN SMALL LETTER I     # 
+2148 ; 0069 ;  SA      # ( ⅈ → i ) DOUBLE-STRUCK ITALIC SMALL I → LATIN SMALL LETTER I   # 
+1D422 ;        0069 ;  SA      # ( 𝐢 → i ) MATHEMATICAL BOLD SMALL I → LATIN SMALL LETTER I     # 
+1D456 ;        0069 ;  SA      # ( 𝑖 → i ) MATHEMATICAL ITALIC SMALL I → LATIN SMALL LETTER I   # 
+1D48A ;        0069 ;  SA      # ( 𝒊 → i ) MATHEMATICAL BOLD ITALIC SMALL I → LATIN SMALL LETTER I      # 
+1D4BE ;        0069 ;  SA      # ( 𝒾 → i ) MATHEMATICAL SCRIPT SMALL I → LATIN SMALL LETTER I   # 
+1D4F2 ;        0069 ;  SA      # ( 𝓲 → i ) MATHEMATICAL BOLD SCRIPT SMALL I → LATIN SMALL LETTER I      # 
+1D526 ;        0069 ;  SA      # ( 𝔦 → i ) MATHEMATICAL FRAKTUR SMALL I → LATIN SMALL LETTER I  # 
+1D55A ;        0069 ;  SA      # ( 𝕚 → i ) MATHEMATICAL DOUBLE-STRUCK SMALL I → LATIN SMALL LETTER I    # 
+1D58E ;        0069 ;  SA      # ( 𝖎 → i ) MATHEMATICAL BOLD FRAKTUR SMALL I → LATIN SMALL LETTER I     # 
+1D5C2 ;        0069 ;  SA      # ( 𝗂 → i ) MATHEMATICAL SANS-SERIF SMALL I → LATIN SMALL LETTER I       # 
+1D5F6 ;        0069 ;  SA      # ( 𝗶 → i ) MATHEMATICAL SANS-SERIF BOLD SMALL I → LATIN SMALL LETTER I  # 
+1D62A ;        0069 ;  SA      # ( 𝘪 → i ) MATHEMATICAL SANS-SERIF ITALIC SMALL I → LATIN SMALL LETTER I        # 
+1D65E ;        0069 ;  SA      # ( 𝙞 → i ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I → LATIN SMALL LETTER I   # 
+1D692 ;        0069 ;  SA      # ( 𝚒 → i ) MATHEMATICAL MONOSPACE SMALL I → LATIN SMALL LETTER I        # 
+0131 ; 0069 ;  SA      # ( ı → i ) LATIN SMALL LETTER DOTLESS I → LATIN SMALL LETTER I    # 
+1D6A4 ;        0069 ;  SA      # ( 𝚤 → i ) MATHEMATICAL ITALIC SMALL DOTLESS I → LATIN SMALL LETTER I   # →ı→
+026A ; 0069 ;  SA      # ( ɪ → i ) LATIN LETTER SMALL CAPITAL I → LATIN SMALL LETTER I    # →ı→
+0269 ; 0069 ;  SA      # ( ɩ → i ) LATIN SMALL LETTER IOTA → LATIN SMALL LETTER I # 
+1D6CA ;        0069 ;  SA      # ( 𝛊 → i ) MATHEMATICAL BOLD SMALL IOTA → LATIN SMALL LETTER I  # →ι→
+1D704 ;        0069 ;  SA      # ( 𝜄 → i ) MATHEMATICAL ITALIC SMALL IOTA → LATIN SMALL LETTER I        # →ι→
+1D73E ;        0069 ;  SA      # ( 𝜾 → i ) MATHEMATICAL BOLD ITALIC SMALL IOTA → LATIN SMALL LETTER I   # →ι→
+1D778 ;        0069 ;  SA      # ( 𝝸 → i ) MATHEMATICAL SANS-SERIF BOLD SMALL IOTA → LATIN SMALL LETTER I       # →ι→
+1D7B2 ;        0069 ;  SA      # ( 𝞲 → i ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA → LATIN SMALL LETTER I        # →ι→
+
+24DB ; 24BE ;  SA      #* ( ⓛ → Ⓘ ) CIRCLED LATIN SMALL LETTER L → CIRCLED LATIN CAPITAL LETTER I      # 
+
+01D0 ; 012D ;  SA      # ( ǐ → ĭ ) LATIN SMALL LETTER I WITH CARON → LATIN SMALL LETTER I WITH BREVE     # 
+
+01CF ; 012C ;  SA      # ( Ǐ → Ĭ ) LATIN CAPITAL LETTER I WITH CARON → LATIN CAPITAL LETTER I WITH BREVE # 
+
+0268 ; 0069 0335 ;     SA      # ( ɨ → i̵ ) LATIN SMALL LETTER I WITH STROKE → LATIN SMALL LETTER I, COMBINING SHORT STROKE OVERLAY      # 
+
+2171 ; 0069 0069 ;     SA      # ( ⅱ → ii ) SMALL ROMAN NUMERAL TWO → LATIN SMALL LETTER I, LATIN SMALL LETTER I # 
+
+2172 ; 0069 0069 0069 ;        SA      # ( ⅲ → iii ) SMALL ROMAN NUMERAL THREE → LATIN SMALL LETTER I, LATIN SMALL LETTER I, LATIN SMALL LETTER I        # 
+
+0133 ; 0069 006A ;     SA      # ( ij → ij ) LATIN SMALL LIGATURE IJ → LATIN SMALL LETTER I, LATIN SMALL LETTER J  # 
+
+0132 ; 0049 004A ;     SA      # ( IJ → IJ ) LATIN CAPITAL LIGATURE IJ → LATIN CAPITAL LETTER I, LATIN CAPITAL LETTER J    # 
+
+2173 ; 0069 0076 ;     SA      # ( ⅳ → iv ) SMALL ROMAN NUMERAL FOUR → LATIN SMALL LETTER I, LATIN SMALL LETTER V        # 
+
+2163 ; 0049 0056 ;     SA      # ( Ⅳ → IV ) ROMAN NUMERAL FOUR → LATIN CAPITAL LETTER I, LATIN CAPITAL LETTER V  # 
+
+2178 ; 0069 0078 ;     SA      # ( ⅸ → ix ) SMALL ROMAN NUMERAL NINE → LATIN SMALL LETTER I, LATIN SMALL LETTER X        # 
+
+2168 ; 0049 0058 ;     SA      # ( Ⅸ → IX ) ROMAN NUMERAL NINE → LATIN CAPITAL LETTER I, LATIN CAPITAL LETTER X  # 
+
+FF4A ; 006A ;  SA      # ( j → j ) FULLWIDTH LATIN SMALL LETTER J → LATIN SMALL LETTER J # →ј→
+2149 ; 006A ;  SA      # ( ⅉ → j ) DOUBLE-STRUCK ITALIC SMALL J → LATIN SMALL LETTER J   # 
+1D423 ;        006A ;  SA      # ( 𝐣 → j ) MATHEMATICAL BOLD SMALL J → LATIN SMALL LETTER J     # 
+1D457 ;        006A ;  SA      # ( 𝑗 → j ) MATHEMATICAL ITALIC SMALL J → LATIN SMALL LETTER J   # 
+1D48B ;        006A ;  SA      # ( 𝒋 → j ) MATHEMATICAL BOLD ITALIC SMALL J → LATIN SMALL LETTER J      # 
+1D4BF ;        006A ;  SA      # ( 𝒿 → j ) MATHEMATICAL SCRIPT SMALL J → LATIN SMALL LETTER J   # 
+1D4F3 ;        006A ;  SA      # ( 𝓳 → j ) MATHEMATICAL BOLD SCRIPT SMALL J → LATIN SMALL LETTER J      # 
+1D527 ;        006A ;  SA      # ( 𝔧 → j ) MATHEMATICAL FRAKTUR SMALL J → LATIN SMALL LETTER J  # 
+1D55B ;        006A ;  SA      # ( 𝕛 → j ) MATHEMATICAL DOUBLE-STRUCK SMALL J → LATIN SMALL LETTER J    # 
+1D58F ;        006A ;  SA      # ( 𝖏 → j ) MATHEMATICAL BOLD FRAKTUR SMALL J → LATIN SMALL LETTER J     # 
+1D5C3 ;        006A ;  SA      # ( 𝗃 → j ) MATHEMATICAL SANS-SERIF SMALL J → LATIN SMALL LETTER J       # 
+1D5F7 ;        006A ;  SA      # ( 𝗷 → j ) MATHEMATICAL SANS-SERIF BOLD SMALL J → LATIN SMALL LETTER J  # 
+1D62B ;        006A ;  SA      # ( 𝘫 → j ) MATHEMATICAL SANS-SERIF ITALIC SMALL J → LATIN SMALL LETTER J        # 
+1D65F ;        006A ;  SA      # ( 𝙟 → j ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J → LATIN SMALL LETTER J   # 
+1D693 ;        006A ;  SA      # ( 𝚓 → j ) MATHEMATICAL MONOSPACE SMALL J → LATIN SMALL LETTER J        # 
+0237 ; 006A ;  SA      # ( ȷ → j ) LATIN SMALL LETTER DOTLESS J → LATIN SMALL LETTER J    # →յ→
+1D6A5 ;        006A ;  SA      # ( 𝚥 → j ) MATHEMATICAL ITALIC SMALL DOTLESS J → LATIN SMALL LETTER J   # →ȷ→→յ→
+
+FF2A ; 004A ;  SA      # ( J → J ) FULLWIDTH LATIN CAPITAL LETTER J → LATIN CAPITAL LETTER J     # →Ј→
+1D409 ;        004A ;  SA      # ( 𝐉 → J ) MATHEMATICAL BOLD CAPITAL J → LATIN CAPITAL LETTER J # 
+1D43D ;        004A ;  SA      # ( 𝐽 → J ) MATHEMATICAL ITALIC CAPITAL J → LATIN CAPITAL LETTER J       # 
+1D471 ;        004A ;  SA      # ( 𝑱 → J ) MATHEMATICAL BOLD ITALIC CAPITAL J → LATIN CAPITAL LETTER J  # 
+1D4A5 ;        004A ;  SA      # ( 𝒥 → J ) MATHEMATICAL SCRIPT CAPITAL J → LATIN CAPITAL LETTER J       # 
+1D4D9 ;        004A ;  SA      # ( 𝓙 → J ) MATHEMATICAL BOLD SCRIPT CAPITAL J → LATIN CAPITAL LETTER J  # 
+1D50D ;        004A ;  SA      # ( 𝔍 → J ) MATHEMATICAL FRAKTUR CAPITAL J → LATIN CAPITAL LETTER J      # 
+1D541 ;        004A ;  SA      # ( 𝕁 → J ) MATHEMATICAL DOUBLE-STRUCK CAPITAL J → LATIN CAPITAL LETTER J        # 
+1D575 ;        004A ;  SA      # ( 𝕵 → J ) MATHEMATICAL BOLD FRAKTUR CAPITAL J → LATIN CAPITAL LETTER J # 
+1D5A9 ;        004A ;  SA      # ( 𝖩 → J ) MATHEMATICAL SANS-SERIF CAPITAL J → LATIN CAPITAL LETTER J   # 
+1D5DD ;        004A ;  SA      # ( 𝗝 → J ) MATHEMATICAL SANS-SERIF BOLD CAPITAL J → LATIN CAPITAL LETTER J      # 
+1D611 ;        004A ;  SA      # ( 𝘑 → J ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL J → LATIN CAPITAL LETTER J    # 
+1D645 ;        004A ;  SA      # ( 𝙅 → J ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J → LATIN CAPITAL LETTER J       # 
+1D679 ;        004A ;  SA      # ( 𝙹 → J ) MATHEMATICAL MONOSPACE CAPITAL J → LATIN CAPITAL LETTER J    # 
+
+1D424 ;        006B ;  SA      # ( 𝐤 → k ) MATHEMATICAL BOLD SMALL K → LATIN SMALL LETTER K     # 
+1D458 ;        006B ;  SA      # ( 𝑘 → k ) MATHEMATICAL ITALIC SMALL K → LATIN SMALL LETTER K   # 
+1D48C ;        006B ;  SA      # ( 𝒌 → k ) MATHEMATICAL BOLD ITALIC SMALL K → LATIN SMALL LETTER K      # 
+1D4C0 ;        006B ;  SA      # ( 𝓀 → k ) MATHEMATICAL SCRIPT SMALL K → LATIN SMALL LETTER K   # 
+1D4F4 ;        006B ;  SA      # ( 𝓴 → k ) MATHEMATICAL BOLD SCRIPT SMALL K → LATIN SMALL LETTER K      # 
+1D528 ;        006B ;  SA      # ( 𝔨 → k ) MATHEMATICAL FRAKTUR SMALL K → LATIN SMALL LETTER K  # 
+1D55C ;        006B ;  SA      # ( 𝕜 → k ) MATHEMATICAL DOUBLE-STRUCK SMALL K → LATIN SMALL LETTER K    # 
+1D590 ;        006B ;  SA      # ( 𝖐 → k ) MATHEMATICAL BOLD FRAKTUR SMALL K → LATIN SMALL LETTER K     # 
+1D5C4 ;        006B ;  SA      # ( 𝗄 → k ) MATHEMATICAL SANS-SERIF SMALL K → LATIN SMALL LETTER K       # 
+1D5F8 ;        006B ;  SA      # ( 𝗸 → k ) MATHEMATICAL SANS-SERIF BOLD SMALL K → LATIN SMALL LETTER K  # 
+1D62C ;        006B ;  SA      # ( 𝘬 → k ) MATHEMATICAL SANS-SERIF ITALIC SMALL K → LATIN SMALL LETTER K        # 
+1D660 ;        006B ;  SA      # ( 𝙠 → k ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K → LATIN SMALL LETTER K   # 
+1D694 ;        006B ;  SA      # ( 𝚔 → k ) MATHEMATICAL MONOSPACE SMALL K → LATIN SMALL LETTER K        # 
+1D0B ; 006B ;  SA      # ( ᴋ → k ) LATIN LETTER SMALL CAPITAL K → LATIN SMALL LETTER K   # →к→
+0138 ; 006B ;  SA      # ( ĸ → k ) LATIN SMALL LETTER KRA → LATIN SMALL LETTER K  # →к→
+1D6CB ;        006B ;  SA      # ( 𝛋 → k ) MATHEMATICAL BOLD SMALL KAPPA → LATIN SMALL LETTER K # →κ→→к→
+1D6DE ;        006B ;  SA      # ( 𝛞 → k ) MATHEMATICAL BOLD KAPPA SYMBOL → LATIN SMALL LETTER K        # →κ→→к→
+1D705 ;        006B ;  SA      # ( 𝜅 → k ) MATHEMATICAL ITALIC SMALL KAPPA → LATIN SMALL LETTER K       # →κ→→к→
+1D718 ;        006B ;  SA      # ( 𝜘 → k ) MATHEMATICAL ITALIC KAPPA SYMBOL → LATIN SMALL LETTER K      # →κ→→к→
+1D73F ;        006B ;  SA      # ( 𝜿 → k ) MATHEMATICAL BOLD ITALIC SMALL KAPPA → LATIN SMALL LETTER K  # →κ→→к→
+1D752 ;        006B ;  SA      # ( 𝝒 → k ) MATHEMATICAL BOLD ITALIC KAPPA SYMBOL → LATIN SMALL LETTER K # →κ→→к→
+1D779 ;        006B ;  SA      # ( 𝝹 → k ) MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA → LATIN SMALL LETTER K      # →κ→→к→
+1D78C ;        006B ;  SA      # ( 𝞌 → k ) MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL → LATIN SMALL LETTER K     # →κ→→к→
+1D7B3 ;        006B ;  SA      # ( 𝞳 → k ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA → LATIN SMALL LETTER K       # →κ→→к→
+1D7C6 ;        006B ;  SA      # ( 𝟆 → k ) MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL → LATIN SMALL LETTER K      # →κ→→к→
+
+212A ; 004B ;  SA      # ( K → K ) KELVIN SIGN → LATIN CAPITAL LETTER K  # 
+FF2B ; 004B ;  SA      # ( K → K ) FULLWIDTH LATIN CAPITAL LETTER K → LATIN CAPITAL LETTER K     # →Κ→
+1D40A ;        004B ;  SA      # ( 𝐊 → K ) MATHEMATICAL BOLD CAPITAL K → LATIN CAPITAL LETTER K # 
+1D43E ;        004B ;  SA      # ( 𝐾 → K ) MATHEMATICAL ITALIC CAPITAL K → LATIN CAPITAL LETTER K       # 
+1D472 ;        004B ;  SA      # ( 𝑲 → K ) MATHEMATICAL BOLD ITALIC CAPITAL K → LATIN CAPITAL LETTER K  # 
+1D4A6 ;        004B ;  SA      # ( 𝒦 → K ) MATHEMATICAL SCRIPT CAPITAL K → LATIN CAPITAL LETTER K       # 
+1D4DA ;        004B ;  SA      # ( 𝓚 → K ) MATHEMATICAL BOLD SCRIPT CAPITAL K → LATIN CAPITAL LETTER K  # 
+1D50E ;        004B ;  SA      # ( 𝔎 → K ) MATHEMATICAL FRAKTUR CAPITAL K → LATIN CAPITAL LETTER K      # 
+1D542 ;        004B ;  SA      # ( 𝕂 → K ) MATHEMATICAL DOUBLE-STRUCK CAPITAL K → LATIN CAPITAL LETTER K        # 
+1D576 ;        004B ;  SA      # ( 𝕶 → K ) MATHEMATICAL BOLD FRAKTUR CAPITAL K → LATIN CAPITAL LETTER K # 
+1D5AA ;        004B ;  SA      # ( 𝖪 → K ) MATHEMATICAL SANS-SERIF CAPITAL K → LATIN CAPITAL LETTER K   # 
+1D5DE ;        004B ;  SA      # ( 𝗞 → K ) MATHEMATICAL SANS-SERIF BOLD CAPITAL K → LATIN CAPITAL LETTER K      # 
+1D612 ;        004B ;  SA      # ( 𝘒 → K ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL K → LATIN CAPITAL LETTER K    # 
+1D646 ;        004B ;  SA      # ( 𝙆 → K ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K → LATIN CAPITAL LETTER K       # 
+1D67A ;        004B ;  SA      # ( 𝙺 → K ) MATHEMATICAL MONOSPACE CAPITAL K → LATIN CAPITAL LETTER K    # 
+1D6B1 ;        004B ;  SA      # ( 𝚱 → K ) MATHEMATICAL BOLD CAPITAL KAPPA → LATIN CAPITAL LETTER K     # →Κ→
+1D6EB ;        004B ;  SA      # ( 𝛫 → K ) MATHEMATICAL ITALIC CAPITAL KAPPA → LATIN CAPITAL LETTER K   # →Κ→
+1D725 ;        004B ;  SA      # ( 𝜥 → K ) MATHEMATICAL BOLD ITALIC CAPITAL KAPPA → LATIN CAPITAL LETTER K      # →Κ→
+1D75F ;        004B ;  SA      # ( 𝝟 → K ) MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA → LATIN CAPITAL LETTER K  # →Κ→
+1D799 ;        004B ;  SA      # ( 𝞙 → K ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA → LATIN CAPITAL LETTER K   # →Κ→
+
+0199 ; 006B 0314 ;     SA      # ( ƙ → k̔ ) LATIN SMALL LETTER K WITH HOOK → LATIN SMALL LETTER K, COMBINING REVERSED COMMA ABOVE        # 
+
+2C69 ; 004B 0329 ;     SA      # ( Ⱪ → K̩ ) LATIN CAPITAL LETTER K WITH DESCENDER → LATIN CAPITAL LETTER K, COMBINING VERTICAL LINE BELOW       # →Қ→→К̩→
+
+0198 ; 004B 0027 ;     SA      # ( Ƙ → K' ) LATIN CAPITAL LETTER K WITH HOOK → LATIN CAPITAL LETTER K, APOSTROPHE # →Kʽ→
+
+007C ; 006C ;  SA      #* ( | → l ) VERTICAL LINE → LATIN SMALL LETTER L   # 
+2223 ; 006C ;  SA      #* ( ∣ → l ) DIVIDES → LATIN SMALL LETTER L       # →|→
+FFE8 ; 006C ;  SA      #* ( │ → l ) HALFWIDTH FORMS LIGHT VERTICAL → LATIN SMALL LETTER L        # →|→
+0031 ; 006C ;  SA      # ( 1 → l ) DIGIT ONE → LATIN SMALL LETTER L        # 
+1D7CF ;        006C ;  SA      # ( 𝟏 → l ) MATHEMATICAL BOLD DIGIT ONE → LATIN SMALL LETTER L   # →1→
+1D7D9 ;        006C ;  SA      # ( 𝟙 → l ) MATHEMATICAL DOUBLE-STRUCK DIGIT ONE → LATIN SMALL LETTER L  # →1→
+1D7E3 ;        006C ;  SA      # ( 𝟣 → l ) MATHEMATICAL SANS-SERIF DIGIT ONE → LATIN SMALL LETTER L     # →1→
+1D7ED ;        006C ;  SA      # ( 𝟭 → l ) MATHEMATICAL SANS-SERIF BOLD DIGIT ONE → LATIN SMALL LETTER L        # →1→
+1D7F7 ;        006C ;  SA      # ( 𝟷 → l ) MATHEMATICAL MONOSPACE DIGIT ONE → LATIN SMALL LETTER L      # →1→
+0049 ; 006C ;  SA      # ( I → l ) LATIN CAPITAL LETTER I → LATIN SMALL LETTER L   # 
+FF29 ; 006C ;  SA      # ( I → l ) FULLWIDTH LATIN CAPITAL LETTER I → LATIN SMALL LETTER L       # →Ӏ→
+2160 ; 006C ;  SA      # ( Ⅰ → l ) ROMAN NUMERAL ONE → LATIN SMALL LETTER L      # →Ӏ→
+2110 ; 006C ;  SA      # ( ℐ → l ) SCRIPT CAPITAL I → LATIN SMALL LETTER L       # →I→
+2111 ; 006C ;  SA      # ( ℑ → l ) BLACK-LETTER CAPITAL I → LATIN SMALL LETTER L # →I→
+1D408 ;        006C ;  SA      # ( 𝐈 → l ) MATHEMATICAL BOLD CAPITAL I → LATIN SMALL LETTER L   # →I→
+1D43C ;        006C ;  SA      # ( 𝐼 → l ) MATHEMATICAL ITALIC CAPITAL I → LATIN SMALL LETTER L # →I→
+1D470 ;        006C ;  SA      # ( 𝑰 → l ) MATHEMATICAL BOLD ITALIC CAPITAL I → LATIN SMALL LETTER L    # →I→
+1D4D8 ;        006C ;  SA      # ( 𝓘 → l ) MATHEMATICAL BOLD SCRIPT CAPITAL I → LATIN SMALL LETTER L    # →I→
+1D540 ;        006C ;  SA      # ( 𝕀 → l ) MATHEMATICAL DOUBLE-STRUCK CAPITAL I → LATIN SMALL LETTER L  # →I→
+1D574 ;        006C ;  SA      # ( 𝕴 → l ) MATHEMATICAL BOLD FRAKTUR CAPITAL I → LATIN SMALL LETTER L   # →I→
+1D5A8 ;        006C ;  SA      # ( 𝖨 → l ) MATHEMATICAL SANS-SERIF CAPITAL I → LATIN SMALL LETTER L     # →I→
+1D5DC ;        006C ;  SA      # ( 𝗜 → l ) MATHEMATICAL SANS-SERIF BOLD CAPITAL I → LATIN SMALL LETTER L        # →I→
+1D610 ;        006C ;  SA      # ( 𝘐 → l ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL I → LATIN SMALL LETTER L      # →I→
+1D644 ;        006C ;  SA      # ( 𝙄 → l ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I → LATIN SMALL LETTER L # →I→
+1D678 ;        006C ;  SA      # ( 𝙸 → l ) MATHEMATICAL MONOSPACE CAPITAL I → LATIN SMALL LETTER L      # →I→
+0196 ; 006C ;  SA      # ( Ɩ → l ) LATIN CAPITAL LETTER IOTA → LATIN SMALL LETTER L       # 
+FF4C ; 006C ;  SA      # ( l → l ) FULLWIDTH LATIN SMALL LETTER L → LATIN SMALL LETTER L # →Ⅰ→→Ӏ→
+217C ; 006C ;  SA      # ( ⅼ → l ) SMALL ROMAN NUMERAL FIFTY → LATIN SMALL LETTER L      # 
+2113 ; 006C ;  SA      # ( ℓ → l ) SCRIPT SMALL L → LATIN SMALL LETTER L # 
+1D425 ;        006C ;  SA      # ( 𝐥 → l ) MATHEMATICAL BOLD SMALL L → LATIN SMALL LETTER L     # 
+1D459 ;        006C ;  SA      # ( 𝑙 → l ) MATHEMATICAL ITALIC SMALL L → LATIN SMALL LETTER L   # 
+1D48D ;        006C ;  SA      # ( 𝒍 → l ) MATHEMATICAL BOLD ITALIC SMALL L → LATIN SMALL LETTER L      # 
+1D4C1 ;        006C ;  SA      # ( 𝓁 → l ) MATHEMATICAL SCRIPT SMALL L → LATIN SMALL LETTER L   # 
+1D4F5 ;        006C ;  SA      # ( 𝓵 → l ) MATHEMATICAL BOLD SCRIPT SMALL L → LATIN SMALL LETTER L      # 
+1D529 ;        006C ;  SA      # ( 𝔩 → l ) MATHEMATICAL FRAKTUR SMALL L → LATIN SMALL LETTER L  # 
+1D55D ;        006C ;  SA      # ( 𝕝 → l ) MATHEMATICAL DOUBLE-STRUCK SMALL L → LATIN SMALL LETTER L    # 
+1D591 ;        006C ;  SA      # ( 𝖑 → l ) MATHEMATICAL BOLD FRAKTUR SMALL L → LATIN SMALL LETTER L     # 
+1D5C5 ;        006C ;  SA      # ( 𝗅 → l ) MATHEMATICAL SANS-SERIF SMALL L → LATIN SMALL LETTER L       # 
+1D5F9 ;        006C ;  SA      # ( 𝗹 → l ) MATHEMATICAL SANS-SERIF BOLD SMALL L → LATIN SMALL LETTER L  # 
+1D62D ;        006C ;  SA      # ( 𝘭 → l ) MATHEMATICAL SANS-SERIF ITALIC SMALL L → LATIN SMALL LETTER L        # 
+1D661 ;        006C ;  SA      # ( 𝙡 → l ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L → LATIN SMALL LETTER L   # 
+1D695 ;        006C ;  SA      # ( 𝚕 → l ) MATHEMATICAL MONOSPACE SMALL L → LATIN SMALL LETTER L        # 
+01C0 ; 006C ;  SA      # ( ǀ → l ) LATIN LETTER DENTAL CLICK → LATIN SMALL LETTER L       # 
+1D6B0 ;        006C ;  SA      # ( 𝚰 → l ) MATHEMATICAL BOLD CAPITAL IOTA → LATIN SMALL LETTER L        # →Ι→
+1D6EA ;        006C ;  SA      # ( 𝛪 → l ) MATHEMATICAL ITALIC CAPITAL IOTA → LATIN SMALL LETTER L      # →Ι→
+1D724 ;        006C ;  SA      # ( 𝜤 → l ) MATHEMATICAL BOLD ITALIC CAPITAL IOTA → LATIN SMALL LETTER L # →Ι→
+1D75E ;        006C ;  SA      # ( 𝝞 → l ) MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA → LATIN SMALL LETTER L     # →Ι→
+1D798 ;        006C ;  SA      # ( 𝞘 → l ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA → LATIN SMALL LETTER L      # →Ι→
+
+216C ; 004C ;  SA      # ( Ⅼ → L ) ROMAN NUMERAL FIFTY → LATIN CAPITAL LETTER L  # 
+2112 ; 004C ;  SA      # ( ℒ → L ) SCRIPT CAPITAL L → LATIN CAPITAL LETTER L     # 
+1D40B ;        004C ;  SA      # ( 𝐋 → L ) MATHEMATICAL BOLD CAPITAL L → LATIN CAPITAL LETTER L # 
+1D43F ;        004C ;  SA      # ( 𝐿 → L ) MATHEMATICAL ITALIC CAPITAL L → LATIN CAPITAL LETTER L       # 
+1D473 ;        004C ;  SA      # ( 𝑳 → L ) MATHEMATICAL BOLD ITALIC CAPITAL L → LATIN CAPITAL LETTER L  # 
+1D4DB ;        004C ;  SA      # ( 𝓛 → L ) MATHEMATICAL BOLD SCRIPT CAPITAL L → LATIN CAPITAL LETTER L  # 
+1D50F ;        004C ;  SA      # ( 𝔏 → L ) MATHEMATICAL FRAKTUR CAPITAL L → LATIN CAPITAL LETTER L      # 
+1D543 ;        004C ;  SA      # ( 𝕃 → L ) MATHEMATICAL DOUBLE-STRUCK CAPITAL L → LATIN CAPITAL LETTER L        # 
+1D577 ;        004C ;  SA      # ( 𝕷 → L ) MATHEMATICAL BOLD FRAKTUR CAPITAL L → LATIN CAPITAL LETTER L # 
+1D5AB ;        004C ;  SA      # ( 𝖫 → L ) MATHEMATICAL SANS-SERIF CAPITAL L → LATIN CAPITAL LETTER L   # 
+1D5DF ;        004C ;  SA      # ( 𝗟 → L ) MATHEMATICAL SANS-SERIF BOLD CAPITAL L → LATIN CAPITAL LETTER L      # 
+1D613 ;        004C ;  SA      # ( 𝘓 → L ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL L → LATIN CAPITAL LETTER L    # 
+1D647 ;        004C ;  SA      # ( 𝙇 → L ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L → LATIN CAPITAL LETTER L       # 
+1D67B ;        004C ;  SA      # ( 𝙻 → L ) MATHEMATICAL MONOSPACE CAPITAL L → LATIN CAPITAL LETTER L    # 
+
+0142 ; 006C 0338 ;     SA      # ( ł → l̸ ) LATIN SMALL LETTER L WITH STROKE → LATIN SMALL LETTER L, COMBINING LONG SOLIDUS OVERLAY      # →l̷→
+
+0141 ; 004C 0338 ;     SA      # ( Ł → L̸ ) LATIN CAPITAL LETTER L WITH STROKE → LATIN CAPITAL LETTER L, COMBINING LONG SOLIDUS OVERLAY  # →L̷→
+
+026D ; 006C 0328 ;     SA      # ( ɭ → l̨ ) LATIN SMALL LETTER L WITH RETROFLEX HOOK → LATIN SMALL LETTER L, COMBINING OGONEK    # →l̢→
+
+026B ; 006C 0334 ;     SA      # ( ɫ → l̴ ) LATIN SMALL LETTER L WITH MIDDLE TILDE → LATIN SMALL LETTER L, COMBINING TILDE OVERLAY       # 
+
+0197 ; 006C 0335 ;     SA      # ( Ɨ → l̵ ) LATIN CAPITAL LETTER I WITH STROKE → LATIN SMALL LETTER L, COMBINING SHORT STROKE OVERLAY    # →ƚ→
+019A ; 006C 0335 ;     SA      # ( ƚ → l̵ ) LATIN SMALL LETTER L WITH BAR → LATIN SMALL LETTER L, COMBINING SHORT STROKE OVERLAY # 
+
+0140 ; 006C 00B7 ;     SA      # ( ŀ → l· ) LATIN SMALL LETTER L WITH MIDDLE DOT → LATIN SMALL LETTER L, MIDDLE DOT      # 
+013F ; 006C 00B7 ;     SA      # ( Ŀ → l· ) LATIN CAPITAL LETTER L WITH MIDDLE DOT → LATIN SMALL LETTER L, MIDDLE DOT    # →L·→→ᒪ·→→ᒪᐧ→→ᒷ→→1ᐧ→
+
+1F102 ;        006C 002C ;     SA      #* ( 🄂 → l, ) DIGIT ONE COMMA → LATIN SMALL LETTER L, COMMA      # →1,→
+
+2488 ; 006C 002E ;     SA      #* ( ⒈ → l. ) DIGIT ONE FULL STOP → LATIN SMALL LETTER L, FULL STOP       # →1.→
+
+2493 ; 006C 0032 002E ;        SA      #* ( ⒓ → l2. ) NUMBER TWELVE FULL STOP → LATIN SMALL LETTER L, DIGIT TWO, FULL STOP       # →12.→
+
+2494 ; 006C 0033 002E ;        SA      #* ( ⒔ → l3. ) NUMBER THIRTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT THREE, FULL STOP   # →13.→
+
+2495 ; 006C 0034 002E ;        SA      #* ( ⒕ → l4. ) NUMBER FOURTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT FOUR, FULL STOP    # →14.→
+
+2496 ; 006C 0035 002E ;        SA      #* ( ⒖ → l5. ) NUMBER FIFTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT FIVE, FULL STOP     # →15.→
+
+2497 ; 006C 0036 002E ;        SA      #* ( ⒗ → l6. ) NUMBER SIXTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT SIX, FULL STOP      # →16.→
+
+2498 ; 006C 0037 002E ;        SA      #* ( ⒘ → l7. ) NUMBER SEVENTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT SEVEN, FULL STOP  # →17.→
+
+2499 ; 006C 0038 002E ;        SA      #* ( ⒙ → l8. ) NUMBER EIGHTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT EIGHT, FULL STOP   # →18.→
+
+249A ; 006C 0039 002E ;        SA      #* ( ⒚ → l9. ) NUMBER NINETEEN FULL STOP → LATIN SMALL LETTER L, DIGIT NINE, FULL STOP    # →19.→
+
+01C9 ; 006C 006A ;     SA      # ( lj → lj ) LATIN SMALL LETTER LJ → LATIN SMALL LETTER L, LATIN SMALL LETTER J    # 
+
+01C8 ; 004C 006A ;     SA      # ( Lj → Lj ) LATIN CAPITAL LETTER L WITH SMALL LETTER J → LATIN CAPITAL LETTER L, LATIN SMALL LETTER J     # 
+
+01C7 ; 004C 004A ;     SA      # ( LJ → LJ ) LATIN CAPITAL LETTER LJ → LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER J      # 
+
+2016 ; 006C 006C ;     SA      #* ( ‖ → ll ) DOUBLE VERTICAL LINE → LATIN SMALL LETTER L, LATIN SMALL LETTER L   # →∥→→||→
+2225 ; 006C 006C ;     SA      #* ( ∥ → ll ) PARALLEL TO → LATIN SMALL LETTER L, LATIN SMALL LETTER L    # →||→
+2161 ; 006C 006C ;     SA      # ( Ⅱ → ll ) ROMAN NUMERAL TWO → LATIN SMALL LETTER L, LATIN SMALL LETTER L       # →II→
+01C1 ; 006C 006C ;     SA      # ( ǁ → ll ) LATIN LETTER LATERAL CLICK → LATIN SMALL LETTER L, LATIN SMALL LETTER L       # →‖→→∥→→||→
+
+2492 ; 006C 006C 002E ;        SA      #* ( ⒒ → ll. ) NUMBER ELEVEN FULL STOP → LATIN SMALL LETTER L, LATIN SMALL LETTER L, FULL STOP    # →11.→
+
+2162 ; 006C 006C 006C ;        SA      # ( Ⅲ → lll ) ROMAN NUMERAL THREE → LATIN SMALL LETTER L, LATIN SMALL LETTER L, LATIN SMALL LETTER L      # →III→
+
+2491 ; 006C 004F 002E ;        SA      #* ( ⒑ → lO. ) NUMBER TEN FULL STOP → LATIN SMALL LETTER L, LATIN CAPITAL LETTER O, FULL STOP     # →10.→
+
+FF2D ; 004D ;  SA      # ( M → M ) FULLWIDTH LATIN CAPITAL LETTER M → LATIN CAPITAL LETTER M     # →Μ→
+216F ; 004D ;  SA      # ( Ⅿ → M ) ROMAN NUMERAL ONE THOUSAND → LATIN CAPITAL LETTER M   # 
+2133 ; 004D ;  SA      # ( ℳ → M ) SCRIPT CAPITAL M → LATIN CAPITAL LETTER M     # 
+1D40C ;        004D ;  SA      # ( 𝐌 → M ) MATHEMATICAL BOLD CAPITAL M → LATIN CAPITAL LETTER M # 
+1D440 ;        004D ;  SA      # ( 𝑀 → M ) MATHEMATICAL ITALIC CAPITAL M → LATIN CAPITAL LETTER M       # 
+1D474 ;        004D ;  SA      # ( 𝑴 → M ) MATHEMATICAL BOLD ITALIC CAPITAL M → LATIN CAPITAL LETTER M  # 
+1D4DC ;        004D ;  SA      # ( 𝓜 → M ) MATHEMATICAL BOLD SCRIPT CAPITAL M → LATIN CAPITAL LETTER M  # 
+1D510 ;        004D ;  SA      # ( 𝔐 → M ) MATHEMATICAL FRAKTUR CAPITAL M → LATIN CAPITAL LETTER M      # 
+1D544 ;        004D ;  SA      # ( 𝕄 → M ) MATHEMATICAL DOUBLE-STRUCK CAPITAL M → LATIN CAPITAL LETTER M        # 
+1D578 ;        004D ;  SA      # ( 𝕸 → M ) MATHEMATICAL BOLD FRAKTUR CAPITAL M → LATIN CAPITAL LETTER M # 
+1D5AC ;        004D ;  SA      # ( 𝖬 → M ) MATHEMATICAL SANS-SERIF CAPITAL M → LATIN CAPITAL LETTER M   # 
+1D5E0 ;        004D ;  SA      # ( 𝗠 → M ) MATHEMATICAL SANS-SERIF BOLD CAPITAL M → LATIN CAPITAL LETTER M      # 
+1D614 ;        004D ;  SA      # ( 𝘔 → M ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL M → LATIN CAPITAL LETTER M    # 
+1D648 ;        004D ;  SA      # ( 𝙈 → M ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M → LATIN CAPITAL LETTER M       # 
+1D67C ;        004D ;  SA      # ( 𝙼 → M ) MATHEMATICAL MONOSPACE CAPITAL M → LATIN CAPITAL LETTER M    # 
+1D6B3 ;        004D ;  SA      # ( 𝚳 → M ) MATHEMATICAL BOLD CAPITAL MU → LATIN CAPITAL LETTER M        # →Μ→
+1D6ED ;        004D ;  SA      # ( 𝛭 → M ) MATHEMATICAL ITALIC CAPITAL MU → LATIN CAPITAL LETTER M      # →Μ→
+1D727 ;        004D ;  SA      # ( 𝜧 → M ) MATHEMATICAL BOLD ITALIC CAPITAL MU → LATIN CAPITAL LETTER M # →Μ→
+1D761 ;        004D ;  SA      # ( 𝝡 → M ) MATHEMATICAL SANS-SERIF BOLD CAPITAL MU → LATIN CAPITAL LETTER M     # →Μ→
+1D79B ;        004D ;  SA      # ( 𝞛 → M ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU → LATIN CAPITAL LETTER M      # →Μ→
+
+1D427 ;        006E ;  SA      # ( 𝐧 → n ) MATHEMATICAL BOLD SMALL N → LATIN SMALL LETTER N     # 
+1D45B ;        006E ;  SA      # ( 𝑛 → n ) MATHEMATICAL ITALIC SMALL N → LATIN SMALL LETTER N   # 
+1D48F ;        006E ;  SA      # ( 𝒏 → n ) MATHEMATICAL BOLD ITALIC SMALL N → LATIN SMALL LETTER N      # 
+1D4C3 ;        006E ;  SA      # ( 𝓃 → n ) MATHEMATICAL SCRIPT SMALL N → LATIN SMALL LETTER N   # 
+1D4F7 ;        006E ;  SA      # ( 𝓷 → n ) MATHEMATICAL BOLD SCRIPT SMALL N → LATIN SMALL LETTER N      # 
+1D52B ;        006E ;  SA      # ( 𝔫 → n ) MATHEMATICAL FRAKTUR SMALL N → LATIN SMALL LETTER N  # 
+1D55F ;        006E ;  SA      # ( 𝕟 → n ) MATHEMATICAL DOUBLE-STRUCK SMALL N → LATIN SMALL LETTER N    # 
+1D593 ;        006E ;  SA      # ( 𝖓 → n ) MATHEMATICAL BOLD FRAKTUR SMALL N → LATIN SMALL LETTER N     # 
+1D5C7 ;        006E ;  SA      # ( 𝗇 → n ) MATHEMATICAL SANS-SERIF SMALL N → LATIN SMALL LETTER N       # 
+1D5FB ;        006E ;  SA      # ( 𝗻 → n ) MATHEMATICAL SANS-SERIF BOLD SMALL N → LATIN SMALL LETTER N  # 
+1D62F ;        006E ;  SA      # ( 𝘯 → n ) MATHEMATICAL SANS-SERIF ITALIC SMALL N → LATIN SMALL LETTER N        # 
+1D663 ;        006E ;  SA      # ( 𝙣 → n ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N → LATIN SMALL LETTER N   # 
+1D697 ;        006E ;  SA      # ( 𝚗 → n ) MATHEMATICAL MONOSPACE SMALL N → LATIN SMALL LETTER N        # 
+213C ; 006E ;  SA      # ( ℼ → n ) DOUBLE-STRUCK SMALL PI → LATIN SMALL LETTER N # →π→
+1D6D1 ;        006E ;  SA      # ( 𝛑 → n ) MATHEMATICAL BOLD SMALL PI → LATIN SMALL LETTER N    # →π→
+1D6E1 ;        006E ;  SA      # ( 𝛡 → n ) MATHEMATICAL BOLD PI SYMBOL → LATIN SMALL LETTER N   # →π→
+1D70B ;        006E ;  SA      # ( 𝜋 → n ) MATHEMATICAL ITALIC SMALL PI → LATIN SMALL LETTER N  # →π→
+1D71B ;        006E ;  SA      # ( 𝜛 → n ) MATHEMATICAL ITALIC PI SYMBOL → LATIN SMALL LETTER N # →π→
+1D745 ;        006E ;  SA      # ( 𝝅 → n ) MATHEMATICAL BOLD ITALIC SMALL PI → LATIN SMALL LETTER N     # →π→
+1D755 ;        006E ;  SA      # ( 𝝕 → n ) MATHEMATICAL BOLD ITALIC PI SYMBOL → LATIN SMALL LETTER N    # →π→
+1D77F ;        006E ;  SA      # ( 𝝿 → n ) MATHEMATICAL SANS-SERIF BOLD SMALL PI → LATIN SMALL LETTER N # →π→
+1D78F ;        006E ;  SA      # ( 𝞏 → n ) MATHEMATICAL SANS-SERIF BOLD PI SYMBOL → LATIN SMALL LETTER N        # →π→
+1D7B9 ;        006E ;  SA      # ( 𝞹 → n ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI → LATIN SMALL LETTER N  # →π→
+1D7C9 ;        006E ;  SA      # ( 𝟉 → n ) MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL → LATIN SMALL LETTER N # →π→
+
+FF2E ; 004E ;  SA      # ( N → N ) FULLWIDTH LATIN CAPITAL LETTER N → LATIN CAPITAL LETTER N     # →Ν→
+2115 ; 004E ;  SA      # ( ℕ → N ) DOUBLE-STRUCK CAPITAL N → LATIN CAPITAL LETTER N      # 
+1D40D ;        004E ;  SA      # ( 𝐍 → N ) MATHEMATICAL BOLD CAPITAL N → LATIN CAPITAL LETTER N # 
+1D441 ;        004E ;  SA      # ( 𝑁 → N ) MATHEMATICAL ITALIC CAPITAL N → LATIN CAPITAL LETTER N       # 
+1D475 ;        004E ;  SA      # ( 𝑵 → N ) MATHEMATICAL BOLD ITALIC CAPITAL N → LATIN CAPITAL LETTER N  # 
+1D4A9 ;        004E ;  SA      # ( 𝒩 → N ) MATHEMATICAL SCRIPT CAPITAL N → LATIN CAPITAL LETTER N       # 
+1D4DD ;        004E ;  SA      # ( 𝓝 → N ) MATHEMATICAL BOLD SCRIPT CAPITAL N → LATIN CAPITAL LETTER N  # 
+1D511 ;        004E ;  SA      # ( 𝔑 → N ) MATHEMATICAL FRAKTUR CAPITAL N → LATIN CAPITAL LETTER N      # 
+1D579 ;        004E ;  SA      # ( 𝕹 → N ) MATHEMATICAL BOLD FRAKTUR CAPITAL N → LATIN CAPITAL LETTER N # 
+1D5AD ;        004E ;  SA      # ( 𝖭 → N ) MATHEMATICAL SANS-SERIF CAPITAL N → LATIN CAPITAL LETTER N   # 
+1D5E1 ;        004E ;  SA      # ( 𝗡 → N ) MATHEMATICAL SANS-SERIF BOLD CAPITAL N → LATIN CAPITAL LETTER N      # 
+1D615 ;        004E ;  SA      # ( 𝘕 → N ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL N → LATIN CAPITAL LETTER N    # 
+1D649 ;        004E ;  SA      # ( 𝙉 → N ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N → LATIN CAPITAL LETTER N       # 
+1D67D ;        004E ;  SA      # ( 𝙽 → N ) MATHEMATICAL MONOSPACE CAPITAL N → LATIN CAPITAL LETTER N    # 
+1D6B4 ;        004E ;  SA      # ( 𝚴 → N ) MATHEMATICAL BOLD CAPITAL NU → LATIN CAPITAL LETTER N        # →𝐍→
+1D6EE ;        004E ;  SA      # ( 𝛮 → N ) MATHEMATICAL ITALIC CAPITAL NU → LATIN CAPITAL LETTER N      # →Ν→
+1D728 ;        004E ;  SA      # ( 𝜨 → N ) MATHEMATICAL BOLD ITALIC CAPITAL NU → LATIN CAPITAL LETTER N # →𝑵→
+1D762 ;        004E ;  SA      # ( 𝝢 → N ) MATHEMATICAL SANS-SERIF BOLD CAPITAL NU → LATIN CAPITAL LETTER N     # →Ν→
+1D79C ;        004E ;  SA      # ( 𝞜 → N ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU → LATIN CAPITAL LETTER N      # →Ν→
+
+0272 ; 0146 ;  SA      # ( ɲ → ņ ) LATIN SMALL LETTER N WITH LEFT HOOK → LATIN SMALL LETTER N WITH CEDILLA       # 
+
+0273 ; 006E 0328 ;     SA      # ( ɳ → n̨ ) LATIN SMALL LETTER N WITH RETROFLEX HOOK → LATIN SMALL LETTER N, COMBINING OGONEK    # →n̢→
+
+019E ; 006E 0329 ;     SA      # ( ƞ → n̩ ) LATIN SMALL LETTER N WITH LONG RIGHT LEG → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW       # 
+1D6C8 ;        006E 0329 ;     SA      # ( 𝛈 → n̩ ) MATHEMATICAL BOLD SMALL ETA → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW  # →η→→ƞ→
+1D702 ;        006E 0329 ;     SA      # ( 𝜂 → n̩ ) MATHEMATICAL ITALIC SMALL ETA → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW        # →η→→ƞ→
+1D73C ;        006E 0329 ;     SA      # ( 𝜼 → n̩ ) MATHEMATICAL BOLD ITALIC SMALL ETA → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW   # →η→→ƞ→
+1D776 ;        006E 0329 ;     SA      # ( 𝝶 → n̩ ) MATHEMATICAL SANS-SERIF BOLD SMALL ETA → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW       # →η→→ƞ→
+1D7B0 ;        006E 0329 ;     SA      # ( 𝞰 → n̩ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW        # →η→→ƞ→
+
+019D ; 004E 0326 ;     SA      # ( Ɲ → N̦ ) LATIN CAPITAL LETTER N WITH LEFT HOOK → LATIN CAPITAL LETTER N, COMBINING COMMA BELOW        # →N̡→
+
+01CC ; 006E 006A ;     SA      # ( nj → nj ) LATIN SMALL LETTER NJ → LATIN SMALL LETTER N, LATIN SMALL LETTER J    # 
+
+01CB ; 004E 006A ;     SA      # ( Nj → Nj ) LATIN CAPITAL LETTER N WITH SMALL LETTER J → LATIN CAPITAL LETTER N, LATIN SMALL LETTER J     # 
+
+01CA ; 004E 004A ;     SA      # ( NJ → NJ ) LATIN CAPITAL LETTER NJ → LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER J      # 
+
+2116 ; 004E 006F ;     SA      #* ( № → No ) NUMERO SIGN → LATIN CAPITAL LETTER N, LATIN SMALL LETTER O  # 
+
+0665 ; 006F ;  SA      # ( ‎٥‎ → o ) ARABIC-INDIC DIGIT FIVE → LATIN SMALL LETTER O   # 
+FF4F ; 006F ;  SA      # ( o → o ) FULLWIDTH LATIN SMALL LETTER O → LATIN SMALL LETTER O # →ο→
+2134 ; 006F ;  SA      # ( ℴ → o ) SCRIPT SMALL O → LATIN SMALL LETTER O # 
+1D428 ;        006F ;  SA      # ( 𝐨 → o ) MATHEMATICAL BOLD SMALL O → LATIN SMALL LETTER O     # 
+1D45C ;        006F ;  SA      # ( 𝑜 → o ) MATHEMATICAL ITALIC SMALL O → LATIN SMALL LETTER O   # 
+1D490 ;        006F ;  SA      # ( 𝒐 → o ) MATHEMATICAL BOLD ITALIC SMALL O → LATIN SMALL LETTER O      # 
+1D4F8 ;        006F ;  SA      # ( 𝓸 → o ) MATHEMATICAL BOLD SCRIPT SMALL O → LATIN SMALL LETTER O      # 
+1D52C ;        006F ;  SA      # ( 𝔬 → o ) MATHEMATICAL FRAKTUR SMALL O → LATIN SMALL LETTER O  # 
+1D560 ;        006F ;  SA      # ( 𝕠 → o ) MATHEMATICAL DOUBLE-STRUCK SMALL O → LATIN SMALL LETTER O    # 
+1D594 ;        006F ;  SA      # ( 𝖔 → o ) MATHEMATICAL BOLD FRAKTUR SMALL O → LATIN SMALL LETTER O     # 
+1D5C8 ;        006F ;  SA      # ( 𝗈 → o ) MATHEMATICAL SANS-SERIF SMALL O → LATIN SMALL LETTER O       # 
+1D5FC ;        006F ;  SA      # ( 𝗼 → o ) MATHEMATICAL SANS-SERIF BOLD SMALL O → LATIN SMALL LETTER O  # 
+1D630 ;        006F ;  SA      # ( 𝘰 → o ) MATHEMATICAL SANS-SERIF ITALIC SMALL O → LATIN SMALL LETTER O        # 
+1D664 ;        006F ;  SA      # ( 𝙤 → o ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O → LATIN SMALL LETTER O   # 
+1D698 ;        006F ;  SA      # ( 𝚘 → o ) MATHEMATICAL MONOSPACE SMALL O → LATIN SMALL LETTER O        # 
+1D0F ; 006F ;  SA      # ( ᴏ → o ) LATIN LETTER SMALL CAPITAL O → LATIN SMALL LETTER O   # 
+1D11 ; 006F ;  SA      # ( ᴑ → o ) LATIN SMALL LETTER SIDEWAYS O → LATIN SMALL LETTER O  # 
+1D6D0 ;        006F ;  SA      # ( 𝛐 → o ) MATHEMATICAL BOLD SMALL OMICRON → LATIN SMALL LETTER O       # →ο→
+1D70A ;        006F ;  SA      # ( 𝜊 → o ) MATHEMATICAL ITALIC SMALL OMICRON → LATIN SMALL LETTER O     # →ο→
+1D744 ;        006F ;  SA      # ( 𝝄 → o ) MATHEMATICAL BOLD ITALIC SMALL OMICRON → LATIN SMALL LETTER O        # →ο→
+1D77E ;        006F ;  SA      # ( 𝝾 → o ) MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON → LATIN SMALL LETTER O    # →ο→
+1D7B8 ;        006F ;  SA      # ( 𝞸 → o ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON → LATIN SMALL LETTER O     # →ο→
+1D6D4 ;        006F ;  SA      # ( 𝛔 → o ) MATHEMATICAL BOLD SMALL SIGMA → LATIN SMALL LETTER O # →σ→
+1D70E ;        006F ;  SA      # ( 𝜎 → o ) MATHEMATICAL ITALIC SMALL SIGMA → LATIN SMALL LETTER O       # →σ→
+1D748 ;        006F ;  SA      # ( 𝝈 → o ) MATHEMATICAL BOLD ITALIC SMALL SIGMA → LATIN SMALL LETTER O  # →σ→
+1D782 ;        006F ;  SA      # ( 𝞂 → o ) MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA → LATIN SMALL LETTER O      # →σ→
+1D7BC ;        006F ;  SA      # ( 𝞼 → o ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA → LATIN SMALL LETTER O       # →σ→
+
+0030 ; 004F ;  SA      # ( 0 → O ) DIGIT ZERO → LATIN CAPITAL LETTER O     # 
+1D7CE ;        004F ;  SA      # ( 𝟎 → O ) MATHEMATICAL BOLD DIGIT ZERO → LATIN CAPITAL LETTER O        # →0→
+1D7D8 ;        004F ;  SA      # ( 𝟘 → O ) MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO → LATIN CAPITAL LETTER O       # →0→
+1D7E2 ;        004F ;  SA      # ( 𝟢 → O ) MATHEMATICAL SANS-SERIF DIGIT ZERO → LATIN CAPITAL LETTER O  # →0→
+1D7EC ;        004F ;  SA      # ( 𝟬 → O ) MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO → LATIN CAPITAL LETTER O     # →0→
+1D7F6 ;        004F ;  SA      # ( 𝟶 → O ) MATHEMATICAL MONOSPACE DIGIT ZERO → LATIN CAPITAL LETTER O   # →0→
+FF2F ; 004F ;  SA      # ( O → O ) FULLWIDTH LATIN CAPITAL LETTER O → LATIN CAPITAL LETTER O     # →Ο→
+1D40E ;        004F ;  SA      # ( 𝐎 → O ) MATHEMATICAL BOLD CAPITAL O → LATIN CAPITAL LETTER O # 
+1D442 ;        004F ;  SA      # ( 𝑂 → O ) MATHEMATICAL ITALIC CAPITAL O → LATIN CAPITAL LETTER O       # 
+1D476 ;        004F ;  SA      # ( 𝑶 → O ) MATHEMATICAL BOLD ITALIC CAPITAL O → LATIN CAPITAL LETTER O  # 
+1D4AA ;        004F ;  SA      # ( 𝒪 → O ) MATHEMATICAL SCRIPT CAPITAL O → LATIN CAPITAL LETTER O       # 
+1D4DE ;        004F ;  SA      # ( 𝓞 → O ) MATHEMATICAL BOLD SCRIPT CAPITAL O → LATIN CAPITAL LETTER O  # 
+1D512 ;        004F ;  SA      # ( 𝔒 → O ) MATHEMATICAL FRAKTUR CAPITAL O → LATIN CAPITAL LETTER O      # 
+1D546 ;        004F ;  SA      # ( 𝕆 → O ) MATHEMATICAL DOUBLE-STRUCK CAPITAL O → LATIN CAPITAL LETTER O        # 
+1D57A ;        004F ;  SA      # ( 𝕺 → O ) MATHEMATICAL BOLD FRAKTUR CAPITAL O → LATIN CAPITAL LETTER O # 
+1D5AE ;        004F ;  SA      # ( 𝖮 → O ) MATHEMATICAL SANS-SERIF CAPITAL O → LATIN CAPITAL LETTER O   # 
+1D5E2 ;        004F ;  SA      # ( 𝗢 → O ) MATHEMATICAL SANS-SERIF BOLD CAPITAL O → LATIN CAPITAL LETTER O      # 
+1D616 ;        004F ;  SA      # ( 𝘖 → O ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL O → LATIN CAPITAL LETTER O    # 
+1D64A ;        004F ;  SA      # ( 𝙊 → O ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O → LATIN CAPITAL LETTER O       # 
+1D67E ;        004F ;  SA      # ( 𝙾 → O ) MATHEMATICAL MONOSPACE CAPITAL O → LATIN CAPITAL LETTER O    # 
+1D6B6 ;        004F ;  SA      # ( 𝚶 → O ) MATHEMATICAL BOLD CAPITAL OMICRON → LATIN CAPITAL LETTER O   # →Ο→
+1D6F0 ;        004F ;  SA      # ( 𝛰 → O ) MATHEMATICAL ITALIC CAPITAL OMICRON → LATIN CAPITAL LETTER O # →Ο→
+1D72A ;        004F ;  SA      # ( 𝜪 → O ) MATHEMATICAL BOLD ITALIC CAPITAL OMICRON → LATIN CAPITAL LETTER O    # →Ο→
+1D764 ;        004F ;  SA      # ( 𝝤 → O ) MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON → LATIN CAPITAL LETTER O        # →Ο→
+1D79E ;        004F ;  SA      # ( 𝞞 → O ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON → LATIN CAPITAL LETTER O # →Ο→
+
+2070 ; 00BA ;  SA      #* ( ⁰ → º ) SUPERSCRIPT ZERO → MASCULINE ORDINAL INDICATOR      # 
+1D52 ; 00BA ;  SA      # ( ᵒ → º ) MODIFIER LETTER SMALL O → MASCULINE ORDINAL INDICATOR        # →⁰→
+
+01D2 ; 014F ;  SA      # ( ǒ → ŏ ) LATIN SMALL LETTER O WITH CARON → LATIN SMALL LETTER O WITH BREVE     # 
+
+01D1 ; 014E ;  SA      # ( Ǒ → Ŏ ) LATIN CAPITAL LETTER O WITH CARON → LATIN CAPITAL LETTER O WITH BREVE # 
+
+0150 ; 00D6 ;  SA      # ( Ő → Ö ) LATIN CAPITAL LETTER O WITH DOUBLE ACUTE → LATIN CAPITAL LETTER O WITH DIAERESIS      # 
+
+00F8 ; 006F 0338 ;     SA      # ( ø → o̸ ) LATIN SMALL LETTER O WITH STROKE → LATIN SMALL LETTER O, COMBINING LONG SOLIDUS OVERLAY      # →o̷→
+
+00D8 ; 004F 0338 ;     SA      # ( Ø → O̸ ) LATIN CAPITAL LETTER O WITH STROKE → LATIN CAPITAL LETTER O, COMBINING LONG SOLIDUS OVERLAY  # 
+
+01FE ; 004F 0338 0301 ;        SA      # ( Ǿ → Ó̸ ) LATIN CAPITAL LETTER O WITH STROKE AND ACUTE → LATIN CAPITAL LETTER O, COMBINING LONG SOLIDUS OVERLAY, COMBINING ACUTE ACCENT      # 
+
+0275 ; 006F 0335 ;     SA      # ( ɵ → o̵ ) LATIN SMALL LETTER BARRED O → LATIN SMALL LETTER O, COMBINING SHORT STROKE OVERLAY   # 
+
+2296 ; 004F 0335 ;     SA      #* ( ⊖ → O̵ ) CIRCLED MINUS → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY     # →Θ→→Ɵ→→O̶→
+229D ; 004F 0335 ;     SA      #* ( ⊝ → O̵ ) CIRCLED DASH → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY      # →⊖→→Θ→→Ɵ→→O̶→
+236C ; 004F 0335 ;     SA      #* ( ⍬ → O̵ ) APL FUNCTIONAL SYMBOL ZILDE → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY       # →θ→→⊖→→Θ→→Ɵ→→O̶→
+019F ; 004F 0335 ;     SA      # ( Ɵ → O̵ ) LATIN CAPITAL LETTER O WITH MIDDLE TILDE → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY    # →O̶→
+1D6C9 ;        004F 0335 ;     SA      # ( 𝛉 → O̵ ) MATHEMATICAL BOLD SMALL THETA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY     # →θ→→⊖→→Θ→→Ɵ→→O̶→
+1D6DD ;        004F 0335 ;     SA      # ( 𝛝 → O̵ ) MATHEMATICAL BOLD THETA SYMBOL → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY    # →θ→→⊖→→Θ→→Ɵ→→O̶→
+1D703 ;        004F 0335 ;     SA      # ( 𝜃 → O̵ ) MATHEMATICAL ITALIC SMALL THETA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY   # →θ→→⊖→→Θ→→Ɵ→→O̶→
+1D717 ;        004F 0335 ;     SA      # ( 𝜗 → O̵ ) MATHEMATICAL ITALIC THETA SYMBOL → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY  # →θ→→⊖→→Θ→→Ɵ→→O̶→
+1D73D ;        004F 0335 ;     SA      # ( 𝜽 → O̵ ) MATHEMATICAL BOLD ITALIC SMALL THETA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY      # →θ→→⊖→→Θ→→Ɵ→→O̶→
+1D751 ;        004F 0335 ;     SA      # ( 𝝑 → O̵ ) MATHEMATICAL BOLD ITALIC THETA SYMBOL → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY     # →θ→→⊖→→Θ→→Ɵ→→O̶→
+1D777 ;        004F 0335 ;     SA      # ( 𝝷 → O̵ ) MATHEMATICAL SANS-SERIF BOLD SMALL THETA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY  # →θ→→⊖→→Θ→→Ɵ→→O̶→
+1D78B ;        004F 0335 ;     SA      # ( 𝞋 → O̵ ) MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY # →θ→→⊖→→Θ→→Ɵ→→O̶→
+1D7B1 ;        004F 0335 ;     SA      # ( 𝞱 → O̵ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY   # →θ→→⊖→→Θ→→Ɵ→→O̶→
+1D7C5 ;        004F 0335 ;     SA      # ( 𝟅 → O̵ ) MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY  # →θ→→⊖→→Θ→→Ɵ→→O̶→
+1D6AF ;        004F 0335 ;     SA      # ( 𝚯 → O̵ ) MATHEMATICAL BOLD CAPITAL THETA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY   # →Θ→→Ɵ→→O̶→
+1D6B9 ;        004F 0335 ;     SA      # ( 𝚹 → O̵ ) MATHEMATICAL BOLD CAPITAL THETA SYMBOL → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY    # →Θ→→Ɵ→→O̶→
+1D6E9 ;        004F 0335 ;     SA      # ( 𝛩 → O̵ ) MATHEMATICAL ITALIC CAPITAL THETA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY # →Θ→→Ɵ→→O̶→
+1D6F3 ;        004F 0335 ;     SA      # ( 𝛳 → O̵ ) MATHEMATICAL ITALIC CAPITAL THETA SYMBOL → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY  # →Θ→→Ɵ→→O̶→
+1D723 ;        004F 0335 ;     SA      # ( 𝜣 → O̵ ) MATHEMATICAL BOLD ITALIC CAPITAL THETA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY    # →Θ→→Ɵ→→O̶→
+1D72D ;        004F 0335 ;     SA      # ( 𝜭 → O̵ ) MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY     # →Θ→→Ɵ→→O̶→
+1D75D ;        004F 0335 ;     SA      # ( 𝝝 → O̵ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY        # →Θ→→Ɵ→→O̶→
+1D767 ;        004F 0335 ;     SA      # ( 𝝧 → O̵ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY # →Θ→→Ɵ→→O̶→
+1D797 ;        004F 0335 ;     SA      # ( 𝞗 → O̵ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY # →Θ→→Ɵ→→O̶→
+1D7A1 ;        004F 0335 ;     SA      # ( 𝞡 → O̵ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY  # →Θ→→Ɵ→→O̶→
+
+1F101 ;        004F 002C ;     SA      #* ( 🄁 → O, ) DIGIT ZERO COMMA → LATIN CAPITAL LETTER O, COMMA   # →0,→
+
+1F100 ;        004F 002E ;     SA      #* ( 🄀 → O. ) DIGIT ZERO FULL STOP → LATIN CAPITAL LETTER O, FULL STOP   # →0.→
+
+01A1 ; 006F 0027 ;     SA      # ( ơ → o' ) LATIN SMALL LETTER O WITH HORN → LATIN SMALL LETTER O, APOSTROPHE     # →oʼ→
+
+01A0 ; 004F 0027 ;     SA      # ( Ơ → O' ) LATIN CAPITAL LETTER O WITH HORN → LATIN CAPITAL LETTER O, APOSTROPHE # →Oʼ→
+
+0025 ; 00BA 002F 2080 2080 ;   SA      #* ( % → º/₀₀ ) PERCENT SIGN → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO    # →‰→→⁰/₀₀→
+2030 ; 00BA 002F 2080 2080 ;   SA      #* ( ‰ → º/₀₀ ) PER MILLE SIGN → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO        # →⁰/₀₀→
+2052 ; 00BA 002F 2080 2080 ;   SA      #* ( ⁒ → º/₀₀ ) COMMERCIAL MINUS SIGN → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO # →%→→‰→→⁰/₀₀→
+2100 ; 00BA 002F 2080 2080 ;   SA      #* ( ℀ → º/₀₀ ) ACCOUNT OF → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO    # →%→→‰→→⁰/₀₀→
+2101 ; 00BA 002F 2080 2080 ;   SA      #* ( ℁ → º/₀₀ ) ADDRESSED TO THE SUBJECT → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO      # →%→→‰→→⁰/₀₀→
+2105 ; 00BA 002F 2080 2080 ;   SA      #* ( ℅ → º/₀₀ ) CARE OF → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO       # →%→→‰→→⁰/₀₀→
+2106 ; 00BA 002F 2080 2080 ;   SA      #* ( ℆ → º/₀₀ ) CADA UNA → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO      # →%→→‰→→⁰/₀₀→
+
+2031 ; 00BA 002F 2080 2080 2080 ;      SA      #* ( ‱ → º/₀₀₀ ) PER TEN THOUSAND SIGN → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO, SUBSCRIPT ZERO      # →⁰/₀₀₀→
+
+0153 ; 006F 0065 ;     SA      # ( œ → oe ) LATIN SMALL LIGATURE OE → LATIN SMALL LETTER O, LATIN SMALL LETTER E  # 
+
+0152 ; 004F 0045 ;     SA      # ( Œ → OE ) LATIN CAPITAL LIGATURE OE → LATIN CAPITAL LETTER O, LATIN CAPITAL LETTER E    # 
+
+0276 ; 006F 1D07 ;     SA      # ( ɶ → oᴇ ) LATIN LETTER SMALL CAPITAL OE → LATIN SMALL LETTER O, LATIN LETTER SMALL CAPITAL E  # 
+
+A74F ; 006F 006F ;     SA      # ( ꝏ → oo ) LATIN SMALL LETTER OO → LATIN SMALL LETTER O, LATIN SMALL LETTER O   # 
+
+A74E ; 004F 004F ;     SA      # ( Ꝏ → OO ) LATIN CAPITAL LETTER OO → LATIN CAPITAL LETTER O, LATIN CAPITAL LETTER O     # 
+
+2184 ; 0254 ;  SA      # ( ↄ → ɔ ) LATIN SMALL LETTER REVERSED C → LATIN SMALL LETTER OPEN O    # 
+1D10 ; 0254 ;  SA      # ( ᴐ → ɔ ) LATIN LETTER SMALL CAPITAL OPEN O → LATIN SMALL LETTER OPEN O        # 
+
+2183 ; 0186 ;  SA      # ( Ↄ → Ɔ ) ROMAN NUMERAL REVERSED ONE HUNDRED → LATIN CAPITAL LETTER OPEN O     # 
+
+2374 ; 0070 ;  SA      #* ( ⍴ → p ) APL FUNCTIONAL SYMBOL RHO → LATIN SMALL LETTER P     # →ρ→
+FF50 ; 0070 ;  SA      # ( p → p ) FULLWIDTH LATIN SMALL LETTER P → LATIN SMALL LETTER P # →р→
+1D429 ;        0070 ;  SA      # ( 𝐩 → p ) MATHEMATICAL BOLD SMALL P → LATIN SMALL LETTER P     # 
+1D45D ;        0070 ;  SA      # ( 𝑝 → p ) MATHEMATICAL ITALIC SMALL P → LATIN SMALL LETTER P   # 
+1D491 ;        0070 ;  SA      # ( 𝒑 → p ) MATHEMATICAL BOLD ITALIC SMALL P → LATIN SMALL LETTER P      # 
+1D4C5 ;        0070 ;  SA      # ( 𝓅 → p ) MATHEMATICAL SCRIPT SMALL P → LATIN SMALL LETTER P   # 
+1D4F9 ;        0070 ;  SA      # ( 𝓹 → p ) MATHEMATICAL BOLD SCRIPT SMALL P → LATIN SMALL LETTER P      # 
+1D52D ;        0070 ;  SA      # ( 𝔭 → p ) MATHEMATICAL FRAKTUR SMALL P → LATIN SMALL LETTER P  # 
+1D561 ;        0070 ;  SA      # ( 𝕡 → p ) MATHEMATICAL DOUBLE-STRUCK SMALL P → LATIN SMALL LETTER P    # 
+1D595 ;        0070 ;  SA      # ( 𝖕 → p ) MATHEMATICAL BOLD FRAKTUR SMALL P → LATIN SMALL LETTER P     # 
+1D5C9 ;        0070 ;  SA      # ( 𝗉 → p ) MATHEMATICAL SANS-SERIF SMALL P → LATIN SMALL LETTER P       # 
+1D5FD ;        0070 ;  SA      # ( 𝗽 → p ) MATHEMATICAL SANS-SERIF BOLD SMALL P → LATIN SMALL LETTER P  # 
+1D631 ;        0070 ;  SA      # ( 𝘱 → p ) MATHEMATICAL SANS-SERIF ITALIC SMALL P → LATIN SMALL LETTER P        # 
+1D665 ;        0070 ;  SA      # ( 𝙥 → p ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P → LATIN SMALL LETTER P   # 
+1D699 ;        0070 ;  SA      # ( 𝚙 → p ) MATHEMATICAL MONOSPACE SMALL P → LATIN SMALL LETTER P        # 
+1D6D2 ;        0070 ;  SA      # ( 𝛒 → p ) MATHEMATICAL BOLD SMALL RHO → LATIN SMALL LETTER P   # →ρ→
+1D6E0 ;        0070 ;  SA      # ( 𝛠 → p ) MATHEMATICAL BOLD RHO SYMBOL → LATIN SMALL LETTER P  # →ρ→
+1D70C ;        0070 ;  SA      # ( 𝜌 → p ) MATHEMATICAL ITALIC SMALL RHO → LATIN SMALL LETTER P # →ρ→
+1D71A ;        0070 ;  SA      # ( 𝜚 → p ) MATHEMATICAL ITALIC RHO SYMBOL → LATIN SMALL LETTER P        # →ρ→
+1D746 ;        0070 ;  SA      # ( 𝝆 → p ) MATHEMATICAL BOLD ITALIC SMALL RHO → LATIN SMALL LETTER P    # →ρ→
+1D754 ;        0070 ;  SA      # ( 𝝔 → p ) MATHEMATICAL BOLD ITALIC RHO SYMBOL → LATIN SMALL LETTER P   # →ρ→
+1D780 ;        0070 ;  SA      # ( 𝞀 → p ) MATHEMATICAL SANS-SERIF BOLD SMALL RHO → LATIN SMALL LETTER P        # →ρ→
+1D78E ;        0070 ;  SA      # ( 𝞎 → p ) MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL → LATIN SMALL LETTER P       # →ρ→
+1D7BA ;        0070 ;  SA      # ( 𝞺 → p ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO → LATIN SMALL LETTER P # →ρ→
+1D7C8 ;        0070 ;  SA      # ( 𝟈 → p ) MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL → LATIN SMALL LETTER P        # →ρ→
+
+FF30 ; 0050 ;  SA      # ( P → P ) FULLWIDTH LATIN CAPITAL LETTER P → LATIN CAPITAL LETTER P     # →Р→
+2119 ; 0050 ;  SA      # ( ℙ → P ) DOUBLE-STRUCK CAPITAL P → LATIN CAPITAL LETTER P      # 
+1D40F ;        0050 ;  SA      # ( 𝐏 → P ) MATHEMATICAL BOLD CAPITAL P → LATIN CAPITAL LETTER P # 
+1D443 ;        0050 ;  SA      # ( 𝑃 → P ) MATHEMATICAL ITALIC CAPITAL P → LATIN CAPITAL LETTER P       # 
+1D477 ;        0050 ;  SA      # ( 𝑷 → P ) MATHEMATICAL BOLD ITALIC CAPITAL P → LATIN CAPITAL LETTER P  # 
+1D4AB ;        0050 ;  SA      # ( 𝒫 → P ) MATHEMATICAL SCRIPT CAPITAL P → LATIN CAPITAL LETTER P       # 
+1D4DF ;        0050 ;  SA      # ( 𝓟 → P ) MATHEMATICAL BOLD SCRIPT CAPITAL P → LATIN CAPITAL LETTER P  # 
+1D513 ;        0050 ;  SA      # ( 𝔓 → P ) MATHEMATICAL FRAKTUR CAPITAL P → LATIN CAPITAL LETTER P      # 
+1D57B ;        0050 ;  SA      # ( 𝕻 → P ) MATHEMATICAL BOLD FRAKTUR CAPITAL P → LATIN CAPITAL LETTER P # 
+1D5AF ;        0050 ;  SA      # ( 𝖯 → P ) MATHEMATICAL SANS-SERIF CAPITAL P → LATIN CAPITAL LETTER P   # 
+1D5E3 ;        0050 ;  SA      # ( 𝗣 → P ) MATHEMATICAL SANS-SERIF BOLD CAPITAL P → LATIN CAPITAL LETTER P      # 
+1D617 ;        0050 ;  SA      # ( 𝘗 → P ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL P → LATIN CAPITAL LETTER P    # 
+1D64B ;        0050 ;  SA      # ( 𝙋 → P ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P → LATIN CAPITAL LETTER P       # 
+1D67F ;        0050 ;  SA      # ( 𝙿 → P ) MATHEMATICAL MONOSPACE CAPITAL P → LATIN CAPITAL LETTER P    # 
+1D6B8 ;        0050 ;  SA      # ( 𝚸 → P ) MATHEMATICAL BOLD CAPITAL RHO → LATIN CAPITAL LETTER P       # →𝐏→
+1D6F2 ;        0050 ;  SA      # ( 𝛲 → P ) MATHEMATICAL ITALIC CAPITAL RHO → LATIN CAPITAL LETTER P     # →𝑃→
+1D72C ;        0050 ;  SA      # ( 𝜬 → P ) MATHEMATICAL BOLD ITALIC CAPITAL RHO → LATIN CAPITAL LETTER P        # →𝑷→
+1D766 ;        0050 ;  SA      # ( 𝝦 → P ) MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO → LATIN CAPITAL LETTER P    # →Ρ→
+1D7A0 ;        0050 ;  SA      # ( 𝞠 → P ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO → LATIN CAPITAL LETTER P     # →Ρ→
+
+01A5 ; 0070 0314 ;     SA      # ( ƥ → p̔ ) LATIN SMALL LETTER P WITH HOOK → LATIN SMALL LETTER P, COMBINING REVERSED COMMA ABOVE        # 
+
+1D6D7 ;        0278 ;  SA      # ( 𝛗 → ɸ ) MATHEMATICAL BOLD SMALL PHI → LATIN SMALL LETTER PHI        # →φ→
+1D6DF ;        0278 ;  SA      # ( 𝛟 → ɸ ) MATHEMATICAL BOLD PHI SYMBOL → LATIN SMALL LETTER PHI       # →φ→
+1D711 ;        0278 ;  SA      # ( 𝜑 → ɸ ) MATHEMATICAL ITALIC SMALL PHI → LATIN SMALL LETTER PHI      # →φ→
+1D719 ;        0278 ;  SA      # ( 𝜙 → ɸ ) MATHEMATICAL ITALIC PHI SYMBOL → LATIN SMALL LETTER PHI     # →φ→
+1D74B ;        0278 ;  SA      # ( 𝝋 → ɸ ) MATHEMATICAL BOLD ITALIC SMALL PHI → LATIN SMALL LETTER PHI # →φ→
+1D753 ;        0278 ;  SA      # ( 𝝓 → ɸ ) MATHEMATICAL BOLD ITALIC PHI SYMBOL → LATIN SMALL LETTER PHI        # →φ→
+1D785 ;        0278 ;  SA      # ( 𝞅 → ɸ ) MATHEMATICAL SANS-SERIF BOLD SMALL PHI → LATIN SMALL LETTER PHI     # →φ→
+1D78D ;        0278 ;  SA      # ( 𝞍 → ɸ ) MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL → LATIN SMALL LETTER PHI    # →φ→
+1D7BF ;        0278 ;  SA      # ( 𝞿 → ɸ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI → LATIN SMALL LETTER PHI      # →φ→
+1D7C7 ;        0278 ;  SA      # ( 𝟇 → ɸ ) MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL → LATIN SMALL LETTER PHI     # →φ→
+
+1D42A ;        0071 ;  SA      # ( 𝐪 → q ) MATHEMATICAL BOLD SMALL Q → LATIN SMALL LETTER Q     # 
+1D45E ;        0071 ;  SA      # ( 𝑞 → q ) MATHEMATICAL ITALIC SMALL Q → LATIN SMALL LETTER Q   # 
+1D492 ;        0071 ;  SA      # ( 𝒒 → q ) MATHEMATICAL BOLD ITALIC SMALL Q → LATIN SMALL LETTER Q      # 
+1D4C6 ;        0071 ;  SA      # ( 𝓆 → q ) MATHEMATICAL SCRIPT SMALL Q → LATIN SMALL LETTER Q   # 
+1D4FA ;        0071 ;  SA      # ( 𝓺 → q ) MATHEMATICAL BOLD SCRIPT SMALL Q → LATIN SMALL LETTER Q      # 
+1D52E ;        0071 ;  SA      # ( 𝔮 → q ) MATHEMATICAL FRAKTUR SMALL Q → LATIN SMALL LETTER Q  # 
+1D562 ;        0071 ;  SA      # ( 𝕢 → q ) MATHEMATICAL DOUBLE-STRUCK SMALL Q → LATIN SMALL LETTER Q    # 
+1D596 ;        0071 ;  SA      # ( 𝖖 → q ) MATHEMATICAL BOLD FRAKTUR SMALL Q → LATIN SMALL LETTER Q     # 
+1D5CA ;        0071 ;  SA      # ( 𝗊 → q ) MATHEMATICAL SANS-SERIF SMALL Q → LATIN SMALL LETTER Q       # 
+1D5FE ;        0071 ;  SA      # ( 𝗾 → q ) MATHEMATICAL SANS-SERIF BOLD SMALL Q → LATIN SMALL LETTER Q  # 
+1D632 ;        0071 ;  SA      # ( 𝘲 → q ) MATHEMATICAL SANS-SERIF ITALIC SMALL Q → LATIN SMALL LETTER Q        # 
+1D666 ;        0071 ;  SA      # ( 𝙦 → q ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q → LATIN SMALL LETTER Q   # 
+1D69A ;        0071 ;  SA      # ( 𝚚 → q ) MATHEMATICAL MONOSPACE SMALL Q → LATIN SMALL LETTER Q        # 
+
+211A ; 0051 ;  SA      # ( ℚ → Q ) DOUBLE-STRUCK CAPITAL Q → LATIN CAPITAL LETTER Q      # 
+1D410 ;        0051 ;  SA      # ( 𝐐 → Q ) MATHEMATICAL BOLD CAPITAL Q → LATIN CAPITAL LETTER Q # 
+1D444 ;        0051 ;  SA      # ( 𝑄 → Q ) MATHEMATICAL ITALIC CAPITAL Q → LATIN CAPITAL LETTER Q       # 
+1D478 ;        0051 ;  SA      # ( 𝑸 → Q ) MATHEMATICAL BOLD ITALIC CAPITAL Q → LATIN CAPITAL LETTER Q  # 
+1D4AC ;        0051 ;  SA      # ( 𝒬 → Q ) MATHEMATICAL SCRIPT CAPITAL Q → LATIN CAPITAL LETTER Q       # 
+1D4E0 ;        0051 ;  SA      # ( 𝓠 → Q ) MATHEMATICAL BOLD SCRIPT CAPITAL Q → LATIN CAPITAL LETTER Q  # 
+1D514 ;        0051 ;  SA      # ( 𝔔 → Q ) MATHEMATICAL FRAKTUR CAPITAL Q → LATIN CAPITAL LETTER Q      # 
+1D57C ;        0051 ;  SA      # ( 𝕼 → Q ) MATHEMATICAL BOLD FRAKTUR CAPITAL Q → LATIN CAPITAL LETTER Q # 
+1D5B0 ;        0051 ;  SA      # ( 𝖰 → Q ) MATHEMATICAL SANS-SERIF CAPITAL Q → LATIN CAPITAL LETTER Q   # 
+1D5E4 ;        0051 ;  SA      # ( 𝗤 → Q ) MATHEMATICAL SANS-SERIF BOLD CAPITAL Q → LATIN CAPITAL LETTER Q      # 
+1D618 ;        0051 ;  SA      # ( 𝘘 → Q ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q → LATIN CAPITAL LETTER Q    # 
+1D64C ;        0051 ;  SA      # ( 𝙌 → Q ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q → LATIN CAPITAL LETTER Q       # 
+1D680 ;        0051 ;  SA      # ( 𝚀 → Q ) MATHEMATICAL MONOSPACE CAPITAL Q → LATIN CAPITAL LETTER Q    # 
+
+02A0 ; 0071 0314 ;     SA      # ( ʠ → q̔ ) LATIN SMALL LETTER Q WITH HOOK → LATIN SMALL LETTER Q, COMBINING REVERSED COMMA ABOVE        # 
+
+1D42B ;        0072 ;  SA      # ( 𝐫 → r ) MATHEMATICAL BOLD SMALL R → LATIN SMALL LETTER R     # 
+1D45F ;        0072 ;  SA      # ( 𝑟 → r ) MATHEMATICAL ITALIC SMALL R → LATIN SMALL LETTER R   # 
+1D493 ;        0072 ;  SA      # ( 𝒓 → r ) MATHEMATICAL BOLD ITALIC SMALL R → LATIN SMALL LETTER R      # 
+1D4C7 ;        0072 ;  SA      # ( 𝓇 → r ) MATHEMATICAL SCRIPT SMALL R → LATIN SMALL LETTER R   # 
+1D4FB ;        0072 ;  SA      # ( 𝓻 → r ) MATHEMATICAL BOLD SCRIPT SMALL R → LATIN SMALL LETTER R      # 
+1D52F ;        0072 ;  SA      # ( 𝔯 → r ) MATHEMATICAL FRAKTUR SMALL R → LATIN SMALL LETTER R  # 
+1D563 ;        0072 ;  SA      # ( 𝕣 → r ) MATHEMATICAL DOUBLE-STRUCK SMALL R → LATIN SMALL LETTER R    # 
+1D597 ;        0072 ;  SA      # ( 𝖗 → r ) MATHEMATICAL BOLD FRAKTUR SMALL R → LATIN SMALL LETTER R     # 
+1D5CB ;        0072 ;  SA      # ( 𝗋 → r ) MATHEMATICAL SANS-SERIF SMALL R → LATIN SMALL LETTER R       # 
+1D5FF ;        0072 ;  SA      # ( 𝗿 → r ) MATHEMATICAL SANS-SERIF BOLD SMALL R → LATIN SMALL LETTER R  # 
+1D633 ;        0072 ;  SA      # ( 𝘳 → r ) MATHEMATICAL SANS-SERIF ITALIC SMALL R → LATIN SMALL LETTER R        # 
+1D667 ;        0072 ;  SA      # ( 𝙧 → r ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R → LATIN SMALL LETTER R   # 
+1D69B ;        0072 ;  SA      # ( 𝚛 → r ) MATHEMATICAL MONOSPACE SMALL R → LATIN SMALL LETTER R        # 
+
+211B ; 0052 ;  SA      # ( ℛ → R ) SCRIPT CAPITAL R → LATIN CAPITAL LETTER R     # 
+211C ; 0052 ;  SA      # ( ℜ → R ) BLACK-LETTER CAPITAL R → LATIN CAPITAL LETTER R       # 
+211D ; 0052 ;  SA      # ( ℝ → R ) DOUBLE-STRUCK CAPITAL R → LATIN CAPITAL LETTER R      # 
+1D411 ;        0052 ;  SA      # ( 𝐑 → R ) MATHEMATICAL BOLD CAPITAL R → LATIN CAPITAL LETTER R # 
+1D445 ;        0052 ;  SA      # ( 𝑅 → R ) MATHEMATICAL ITALIC CAPITAL R → LATIN CAPITAL LETTER R       # 
+1D479 ;        0052 ;  SA      # ( 𝑹 → R ) MATHEMATICAL BOLD ITALIC CAPITAL R → LATIN CAPITAL LETTER R  # 
+1D4E1 ;        0052 ;  SA      # ( 𝓡 → R ) MATHEMATICAL BOLD SCRIPT CAPITAL R → LATIN CAPITAL LETTER R  # 
+1D57D ;        0052 ;  SA      # ( 𝕽 → R ) MATHEMATICAL BOLD FRAKTUR CAPITAL R → LATIN CAPITAL LETTER R # 
+1D5B1 ;        0052 ;  SA      # ( 𝖱 → R ) MATHEMATICAL SANS-SERIF CAPITAL R → LATIN CAPITAL LETTER R   # 
+1D5E5 ;        0052 ;  SA      # ( 𝗥 → R ) MATHEMATICAL SANS-SERIF BOLD CAPITAL R → LATIN CAPITAL LETTER R      # 
+1D619 ;        0052 ;  SA      # ( 𝘙 → R ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL R → LATIN CAPITAL LETTER R    # 
+1D64D ;        0052 ;  SA      # ( 𝙍 → R ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R → LATIN CAPITAL LETTER R       # 
+1D681 ;        0052 ;  SA      # ( 𝚁 → R ) MATHEMATICAL MONOSPACE CAPITAL R → LATIN CAPITAL LETTER R    # 
+01A6 ; 0052 ;  SA      # ( Ʀ → R ) LATIN LETTER YR → LATIN CAPITAL LETTER R       # 
+
+027D ; 0072 0328 ;     SA      # ( ɽ → r̨ ) LATIN SMALL LETTER R WITH TAIL → LATIN SMALL LETTER R, COMBINING OGONEK      # 
+
+027C ; 0072 0329 ;     SA      # ( ɼ → r̩ ) LATIN SMALL LETTER R WITH LONG LEG → LATIN SMALL LETTER R, COMBINING VERTICAL LINE BELOW     # 
+
+006D ; 0072 006E ;     SA      # ( m → rn ) LATIN SMALL LETTER M → LATIN SMALL LETTER R, LATIN SMALL LETTER N      # 
+217F ; 0072 006E ;     SA      # ( ⅿ → rn ) SMALL ROMAN NUMERAL ONE THOUSAND → LATIN SMALL LETTER R, LATIN SMALL LETTER N        # →m→
+1D426 ;        0072 006E ;     SA      # ( 𝐦 → rn ) MATHEMATICAL BOLD SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N      # →m→
+1D45A ;        0072 006E ;     SA      # ( 𝑚 → rn ) MATHEMATICAL ITALIC SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N    # →m→
+1D48E ;        0072 006E ;     SA      # ( 𝒎 → rn ) MATHEMATICAL BOLD ITALIC SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N       # →m→
+1D4C2 ;        0072 006E ;     SA      # ( 𝓂 → rn ) MATHEMATICAL SCRIPT SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N    # →m→
+1D4F6 ;        0072 006E ;     SA      # ( 𝓶 → rn ) MATHEMATICAL BOLD SCRIPT SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N       # →m→
+1D52A ;        0072 006E ;     SA      # ( 𝔪 → rn ) MATHEMATICAL FRAKTUR SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N   # →m→
+1D55E ;        0072 006E ;     SA      # ( 𝕞 → rn ) MATHEMATICAL DOUBLE-STRUCK SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N     # →m→
+1D592 ;        0072 006E ;     SA      # ( 𝖒 → rn ) MATHEMATICAL BOLD FRAKTUR SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N      # →m→
+1D5C6 ;        0072 006E ;     SA      # ( 𝗆 → rn ) MATHEMATICAL SANS-SERIF SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N        # →m→
+1D5FA ;        0072 006E ;     SA      # ( 𝗺 → rn ) MATHEMATICAL SANS-SERIF BOLD SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N   # →m→
+1D62E ;        0072 006E ;     SA      # ( 𝘮 → rn ) MATHEMATICAL SANS-SERIF ITALIC SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N # →m→
+1D662 ;        0072 006E ;     SA      # ( 𝙢 → rn ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N    # →m→
+1D696 ;        0072 006E ;     SA      # ( 𝚖 → rn ) MATHEMATICAL MONOSPACE SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N # →m→
+028D ; 0072 006E ;     SA      # ( ʍ → rn ) LATIN SMALL LETTER TURNED W → LATIN SMALL LETTER R, LATIN SMALL LETTER N      # →m→
+
+0271 ; 0072 006E 0326 ;        SA      # ( ɱ → rn̦ ) LATIN SMALL LETTER M WITH HOOK → LATIN SMALL LETTER R, LATIN SMALL LETTER N, COMBINING COMMA BELOW  # →m̡→
+
+20A8 ; 0052 0073 ;     SA      #* ( ₨ → Rs ) RUPEE SIGN → LATIN CAPITAL LETTER R, LATIN SMALL LETTER S   # 
+
+2129 ; 027F ;  SA      #* ( ℩ → ɿ ) TURNED GREEK SMALL LETTER IOTA → LATIN SMALL LETTER REVERSED R WITH FISHHOOK        # 
+
+FF53 ; 0073 ;  SA      # ( s → s ) FULLWIDTH LATIN SMALL LETTER S → LATIN SMALL LETTER S # →ѕ→
+1D42C ;        0073 ;  SA      # ( 𝐬 → s ) MATHEMATICAL BOLD SMALL S → LATIN SMALL LETTER S     # 
+1D460 ;        0073 ;  SA      # ( 𝑠 → s ) MATHEMATICAL ITALIC SMALL S → LATIN SMALL LETTER S   # 
+1D494 ;        0073 ;  SA      # ( 𝒔 → s ) MATHEMATICAL BOLD ITALIC SMALL S → LATIN SMALL LETTER S      # 
+1D4C8 ;        0073 ;  SA      # ( 𝓈 → s ) MATHEMATICAL SCRIPT SMALL S → LATIN SMALL LETTER S   # 
+1D4FC ;        0073 ;  SA      # ( 𝓼 → s ) MATHEMATICAL BOLD SCRIPT SMALL S → LATIN SMALL LETTER S      # 
+1D530 ;        0073 ;  SA      # ( 𝔰 → s ) MATHEMATICAL FRAKTUR SMALL S → LATIN SMALL LETTER S  # 
+1D564 ;        0073 ;  SA      # ( 𝕤 → s ) MATHEMATICAL DOUBLE-STRUCK SMALL S → LATIN SMALL LETTER S    # 
+1D598 ;        0073 ;  SA      # ( 𝖘 → s ) MATHEMATICAL BOLD FRAKTUR SMALL S → LATIN SMALL LETTER S     # 
+1D5CC ;        0073 ;  SA      # ( 𝗌 → s ) MATHEMATICAL SANS-SERIF SMALL S → LATIN SMALL LETTER S       # 
+1D600 ;        0073 ;  SA      # ( 𝘀 → s ) MATHEMATICAL SANS-SERIF BOLD SMALL S → LATIN SMALL LETTER S  # 
+1D634 ;        0073 ;  SA      # ( 𝘴 → s ) MATHEMATICAL SANS-SERIF ITALIC SMALL S → LATIN SMALL LETTER S        # 
+1D668 ;        0073 ;  SA      # ( 𝙨 → s ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S → LATIN SMALL LETTER S   # 
+1D69C ;        0073 ;  SA      # ( 𝚜 → s ) MATHEMATICAL MONOSPACE SMALL S → LATIN SMALL LETTER S        # 
+A731 ; 0073 ;  SA      # ( ꜱ → s ) LATIN LETTER SMALL CAPITAL S → LATIN SMALL LETTER S   # 
+01BD ; 0073 ;  SA      # ( ƽ → s ) LATIN SMALL LETTER TONE FIVE → LATIN SMALL LETTER S    # 
+
+FF33 ; 0053 ;  SA      # ( S → S ) FULLWIDTH LATIN CAPITAL LETTER S → LATIN CAPITAL LETTER S     # →Ѕ→
+1D412 ;        0053 ;  SA      # ( 𝐒 → S ) MATHEMATICAL BOLD CAPITAL S → LATIN CAPITAL LETTER S # 
+1D446 ;        0053 ;  SA      # ( 𝑆 → S ) MATHEMATICAL ITALIC CAPITAL S → LATIN CAPITAL LETTER S       # 
+1D47A ;        0053 ;  SA      # ( 𝑺 → S ) MATHEMATICAL BOLD ITALIC CAPITAL S → LATIN CAPITAL LETTER S  # 
+1D4AE ;        0053 ;  SA      # ( 𝒮 → S ) MATHEMATICAL SCRIPT CAPITAL S → LATIN CAPITAL LETTER S       # 
+1D4E2 ;        0053 ;  SA      # ( 𝓢 → S ) MATHEMATICAL BOLD SCRIPT CAPITAL S → LATIN CAPITAL LETTER S  # 
+1D516 ;        0053 ;  SA      # ( 𝔖 → S ) MATHEMATICAL FRAKTUR CAPITAL S → LATIN CAPITAL LETTER S      # 
+1D54A ;        0053 ;  SA      # ( 𝕊 → S ) MATHEMATICAL DOUBLE-STRUCK CAPITAL S → LATIN CAPITAL LETTER S        # 
+1D57E ;        0053 ;  SA      # ( 𝕾 → S ) MATHEMATICAL BOLD FRAKTUR CAPITAL S → LATIN CAPITAL LETTER S # 
+1D5B2 ;        0053 ;  SA      # ( 𝖲 → S ) MATHEMATICAL SANS-SERIF CAPITAL S → LATIN CAPITAL LETTER S   # 
+1D5E6 ;        0053 ;  SA      # ( 𝗦 → S ) MATHEMATICAL SANS-SERIF BOLD CAPITAL S → LATIN CAPITAL LETTER S      # 
+1D61A ;        0053 ;  SA      # ( 𝘚 → S ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL S → LATIN CAPITAL LETTER S    # 
+1D64E ;        0053 ;  SA      # ( 𝙎 → S ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S → LATIN CAPITAL LETTER S       # 
+1D682 ;        0053 ;  SA      # ( 𝚂 → S ) MATHEMATICAL MONOSPACE CAPITAL S → LATIN CAPITAL LETTER S    # 
+
+0282 ; 0073 0328 ;     SA      # ( ʂ → s̨ ) LATIN SMALL LETTER S WITH HOOK → LATIN SMALL LETTER S, COMBINING OGONEK      # 
+
+1D6C3 ;        00DF ;  SA      # ( 𝛃 → ß ) MATHEMATICAL BOLD SMALL BETA → LATIN SMALL LETTER SHARP S   # →β→
+1D6FD ;        00DF ;  SA      # ( 𝛽 → ß ) MATHEMATICAL ITALIC SMALL BETA → LATIN SMALL LETTER SHARP S # →β→
+1D737 ;        00DF ;  SA      # ( 𝜷 → ß ) MATHEMATICAL BOLD ITALIC SMALL BETA → LATIN SMALL LETTER SHARP S    # →β→
+1D771 ;        00DF ;  SA      # ( 𝝱 → ß ) MATHEMATICAL SANS-SERIF BOLD SMALL BETA → LATIN SMALL LETTER SHARP S        # →β→
+1D7AB ;        00DF ;  SA      # ( 𝞫 → ß ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA → LATIN SMALL LETTER SHARP S # →β→
+
+FB06 ; 0073 0074 ;     SA      # ( st → st ) LATIN SMALL LIGATURE ST → LATIN SMALL LETTER S, LATIN SMALL LETTER T # 
+
+222B ; 0283 ;  SA      #* ( ∫ → ʃ ) INTEGRAL → LATIN SMALL LETTER ESH   # 
+
+2211 ; 01A9 ;  SA      #* ( ∑ → Ʃ ) N-ARY SUMMATION → LATIN CAPITAL LETTER ESH  # 
+2140 ; 01A9 ;  SA      #* ( ⅀ → Ʃ ) DOUBLE-STRUCK N-ARY SUMMATION → LATIN CAPITAL LETTER ESH    # →∑→
+1D6BA ;        01A9 ;  SA      # ( 𝚺 → Ʃ ) MATHEMATICAL BOLD CAPITAL SIGMA → LATIN CAPITAL LETTER ESH  # →Σ→
+1D6F4 ;        01A9 ;  SA      # ( 𝛴 → Ʃ ) MATHEMATICAL ITALIC CAPITAL SIGMA → LATIN CAPITAL LETTER ESH        # →Σ→
+1D72E ;        01A9 ;  SA      # ( 𝜮 → Ʃ ) MATHEMATICAL BOLD ITALIC CAPITAL SIGMA → LATIN CAPITAL LETTER ESH   # →Σ→
+1D768 ;        01A9 ;  SA      # ( 𝝨 → Ʃ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA → LATIN CAPITAL LETTER ESH       # →Σ→
+1D7A2 ;        01A9 ;  SA      # ( 𝞢 → Ʃ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA → LATIN CAPITAL LETTER ESH        # →Σ→
+
+222C ; 0283 0283 ;     SA      #* ( ∬ → ʃʃ ) DOUBLE INTEGRAL → LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH  # →∫∫→
+
+222D ; 0283 0283 0283 ;        SA      #* ( ∭ → ʃʃʃ ) TRIPLE INTEGRAL → LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH        # →∫∫∫→
+
+2A0C ; 0283 0283 0283 0283 ;   SA      #* ( ⨌ → ʃʃʃʃ ) QUADRUPLE INTEGRAL OPERATOR → LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH  # →∫∫∫∫→
+
+1D42D ;        0074 ;  SA      # ( 𝐭 → t ) MATHEMATICAL BOLD SMALL T → LATIN SMALL LETTER T     # 
+1D461 ;        0074 ;  SA      # ( 𝑡 → t ) MATHEMATICAL ITALIC SMALL T → LATIN SMALL LETTER T   # 
+1D495 ;        0074 ;  SA      # ( 𝒕 → t ) MATHEMATICAL BOLD ITALIC SMALL T → LATIN SMALL LETTER T      # 
+1D4C9 ;        0074 ;  SA      # ( 𝓉 → t ) MATHEMATICAL SCRIPT SMALL T → LATIN SMALL LETTER T   # 
+1D4FD ;        0074 ;  SA      # ( 𝓽 → t ) MATHEMATICAL BOLD SCRIPT SMALL T → LATIN SMALL LETTER T      # 
+1D531 ;        0074 ;  SA      # ( 𝔱 → t ) MATHEMATICAL FRAKTUR SMALL T → LATIN SMALL LETTER T  # 
+1D565 ;        0074 ;  SA      # ( 𝕥 → t ) MATHEMATICAL DOUBLE-STRUCK SMALL T → LATIN SMALL LETTER T    # 
+1D599 ;        0074 ;  SA      # ( 𝖙 → t ) MATHEMATICAL BOLD FRAKTUR SMALL T → LATIN SMALL LETTER T     # 
+1D5CD ;        0074 ;  SA      # ( 𝗍 → t ) MATHEMATICAL SANS-SERIF SMALL T → LATIN SMALL LETTER T       # 
+1D601 ;        0074 ;  SA      # ( 𝘁 → t ) MATHEMATICAL SANS-SERIF BOLD SMALL T → LATIN SMALL LETTER T  # 
+1D635 ;        0074 ;  SA      # ( 𝘵 → t ) MATHEMATICAL SANS-SERIF ITALIC SMALL T → LATIN SMALL LETTER T        # 
+1D669 ;        0074 ;  SA      # ( 𝙩 → t ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T → LATIN SMALL LETTER T   # 
+1D69D ;        0074 ;  SA      # ( 𝚝 → t ) MATHEMATICAL MONOSPACE SMALL T → LATIN SMALL LETTER T        # 
+1D1B ; 0074 ;  SA      # ( ᴛ → t ) LATIN LETTER SMALL CAPITAL T → LATIN SMALL LETTER T   # →т→→τ→
+1D6D5 ;        0074 ;  SA      # ( 𝛕 → t ) MATHEMATICAL BOLD SMALL TAU → LATIN SMALL LETTER T   # →τ→
+1D70F ;        0074 ;  SA      # ( 𝜏 → t ) MATHEMATICAL ITALIC SMALL TAU → LATIN SMALL LETTER T # →τ→
+1D749 ;        0074 ;  SA      # ( 𝝉 → t ) MATHEMATICAL BOLD ITALIC SMALL TAU → LATIN SMALL LETTER T    # →τ→
+1D783 ;        0074 ;  SA      # ( 𝞃 → t ) MATHEMATICAL SANS-SERIF BOLD SMALL TAU → LATIN SMALL LETTER T        # →τ→
+1D7BD ;        0074 ;  SA      # ( 𝞽 → t ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU → LATIN SMALL LETTER T # →τ→
+
+27D9 ; 0054 ;  SA      #* ( ⟙ → T ) LARGE DOWN TACK → LATIN CAPITAL LETTER T     # 
+FF34 ; 0054 ;  SA      # ( T → T ) FULLWIDTH LATIN CAPITAL LETTER T → LATIN CAPITAL LETTER T     # →Т→
+1D413 ;        0054 ;  SA      # ( 𝐓 → T ) MATHEMATICAL BOLD CAPITAL T → LATIN CAPITAL LETTER T # 
+1D447 ;        0054 ;  SA      # ( 𝑇 → T ) MATHEMATICAL ITALIC CAPITAL T → LATIN CAPITAL LETTER T       # 
+1D47B ;        0054 ;  SA      # ( 𝑻 → T ) MATHEMATICAL BOLD ITALIC CAPITAL T → LATIN CAPITAL LETTER T  # 
+1D4AF ;        0054 ;  SA      # ( 𝒯 → T ) MATHEMATICAL SCRIPT CAPITAL T → LATIN CAPITAL LETTER T       # 
+1D4E3 ;        0054 ;  SA      # ( 𝓣 → T ) MATHEMATICAL BOLD SCRIPT CAPITAL T → LATIN CAPITAL LETTER T  # 
+1D517 ;        0054 ;  SA      # ( 𝔗 → T ) MATHEMATICAL FRAKTUR CAPITAL T → LATIN CAPITAL LETTER T      # 
+1D54B ;        0054 ;  SA      # ( 𝕋 → T ) MATHEMATICAL DOUBLE-STRUCK CAPITAL T → LATIN CAPITAL LETTER T        # 
+1D57F ;        0054 ;  SA      # ( 𝕿 → T ) MATHEMATICAL BOLD FRAKTUR CAPITAL T → LATIN CAPITAL LETTER T # 
+1D5B3 ;        0054 ;  SA      # ( 𝖳 → T ) MATHEMATICAL SANS-SERIF CAPITAL T → LATIN CAPITAL LETTER T   # 
+1D5E7 ;        0054 ;  SA      # ( 𝗧 → T ) MATHEMATICAL SANS-SERIF BOLD CAPITAL T → LATIN CAPITAL LETTER T      # 
+1D61B ;        0054 ;  SA      # ( 𝘛 → T ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL T → LATIN CAPITAL LETTER T    # 
+1D64F ;        0054 ;  SA      # ( 𝙏 → T ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T → LATIN CAPITAL LETTER T       # 
+1D683 ;        0054 ;  SA      # ( 𝚃 → T ) MATHEMATICAL MONOSPACE CAPITAL T → LATIN CAPITAL LETTER T    # 
+1D6BB ;        0054 ;  SA      # ( 𝚻 → T ) MATHEMATICAL BOLD CAPITAL TAU → LATIN CAPITAL LETTER T       # →𝐓→
+1D6F5 ;        0054 ;  SA      # ( 𝛵 → T ) MATHEMATICAL ITALIC CAPITAL TAU → LATIN CAPITAL LETTER T     # →𝑇→
+1D72F ;        0054 ;  SA      # ( 𝜯 → T ) MATHEMATICAL BOLD ITALIC CAPITAL TAU → LATIN CAPITAL LETTER T        # →𝑻→
+1D769 ;        0054 ;  SA      # ( 𝝩 → T ) MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU → LATIN CAPITAL LETTER T    # →Τ→
+1D7A3 ;        0054 ;  SA      # ( 𝞣 → T ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU → LATIN CAPITAL LETTER T     # →Τ→
+
+01AD ; 0074 0314 ;     SA      # ( ƭ → t̔ ) LATIN SMALL LETTER T WITH HOOK → LATIN SMALL LETTER T, COMBINING REVERSED COMMA ABOVE        # 
+
+021B ; 0163 ;  SA      # ( ț → ţ ) LATIN SMALL LETTER T WITH COMMA BELOW → LATIN SMALL LETTER T WITH CEDILLA     # 
+01AB ; 0163 ;  SA      # ( ƫ → ţ ) LATIN SMALL LETTER T WITH PALATAL HOOK → LATIN SMALL LETTER T WITH CEDILLA    # 
+
+021A ; 0162 ;  SA      # ( Ț → Ţ ) LATIN CAPITAL LETTER T WITH COMMA BELOW → LATIN CAPITAL LETTER T WITH CEDILLA # 
+
+01AE ; 0054 0328 ;     SA      # ( Ʈ → T̨ ) LATIN CAPITAL LETTER T WITH RETROFLEX HOOK → LATIN CAPITAL LETTER T, COMBINING OGONEK        # 
+
+0167 ; 0074 0335 ;     SA      # ( ŧ → t̵ ) LATIN SMALL LETTER T WITH STROKE → LATIN SMALL LETTER T, COMBINING SHORT STROKE OVERLAY      # 
+
+0166 ; 0054 0335 ;     SA      # ( Ŧ → T̵ ) LATIN CAPITAL LETTER T WITH STROKE → LATIN CAPITAL LETTER T, COMBINING SHORT STROKE OVERLAY  # 
+
+A728 ; 0054 0033 ;     SA      # ( Ꜩ → T3 ) LATIN CAPITAL LETTER TZ → LATIN CAPITAL LETTER T, DIGIT THREE        # →TƷ→
+
+02A8 ; 0074 0255 ;     SA      # ( ʨ → tɕ ) LATIN SMALL LETTER TC DIGRAPH WITH CURL → LATIN SMALL LETTER T, LATIN SMALL LETTER C WITH CURL       # 
+
+2121 ; 0054 0045 004C ;        SA      #* ( ℡ → TEL ) TELEPHONE SIGN → LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER E, LATIN CAPITAL LETTER L    # 
+
+A777 ; 0074 0066 ;     SA      # ( ꝷ → tf ) LATIN SMALL LETTER TUM → LATIN SMALL LETTER T, LATIN SMALL LETTER F  # 
+
+02A6 ; 0074 0073 ;     SA      # ( ʦ → ts ) LATIN SMALL LETTER TS DIGRAPH → LATIN SMALL LETTER T, LATIN SMALL LETTER S    # 
+
+02A7 ; 0074 0283 ;     SA      # ( ʧ → tʃ ) LATIN SMALL LETTER TESH DIGRAPH → LATIN SMALL LETTER T, LATIN SMALL LETTER ESH       # 
+
+A729 ; 0074 021D ;     SA      # ( ꜩ → tȝ ) LATIN SMALL LETTER TZ → LATIN SMALL LETTER T, LATIN SMALL LETTER YOGH       # 
+
+1D42E ;        0075 ;  SA      # ( 𝐮 → u ) MATHEMATICAL BOLD SMALL U → LATIN SMALL LETTER U     # 
+1D462 ;        0075 ;  SA      # ( 𝑢 → u ) MATHEMATICAL ITALIC SMALL U → LATIN SMALL LETTER U   # 
+1D496 ;        0075 ;  SA      # ( 𝒖 → u ) MATHEMATICAL BOLD ITALIC SMALL U → LATIN SMALL LETTER U      # 
+1D4CA ;        0075 ;  SA      # ( 𝓊 → u ) MATHEMATICAL SCRIPT SMALL U → LATIN SMALL LETTER U   # 
+1D4FE ;        0075 ;  SA      # ( 𝓾 → u ) MATHEMATICAL BOLD SCRIPT SMALL U → LATIN SMALL LETTER U      # 
+1D532 ;        0075 ;  SA      # ( 𝔲 → u ) MATHEMATICAL FRAKTUR SMALL U → LATIN SMALL LETTER U  # 
+1D566 ;        0075 ;  SA      # ( 𝕦 → u ) MATHEMATICAL DOUBLE-STRUCK SMALL U → LATIN SMALL LETTER U    # 
+1D59A ;        0075 ;  SA      # ( 𝖚 → u ) MATHEMATICAL BOLD FRAKTUR SMALL U → LATIN SMALL LETTER U     # 
+1D5CE ;        0075 ;  SA      # ( 𝗎 → u ) MATHEMATICAL SANS-SERIF SMALL U → LATIN SMALL LETTER U       # 
+1D602 ;        0075 ;  SA      # ( 𝘂 → u ) MATHEMATICAL SANS-SERIF BOLD SMALL U → LATIN SMALL LETTER U  # 
+1D636 ;        0075 ;  SA      # ( 𝘶 → u ) MATHEMATICAL SANS-SERIF ITALIC SMALL U → LATIN SMALL LETTER U        # 
+1D66A ;        0075 ;  SA      # ( 𝙪 → u ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U → LATIN SMALL LETTER U   # 
+1D69E ;        0075 ;  SA      # ( 𝚞 → u ) MATHEMATICAL MONOSPACE SMALL U → LATIN SMALL LETTER U        # 
+1D1C ; 0075 ;  SA      # ( ᴜ → u ) LATIN LETTER SMALL CAPITAL U → LATIN SMALL LETTER U   # 
+028B ; 0075 ;  SA      # ( ʋ → u ) LATIN SMALL LETTER V WITH HOOK → LATIN SMALL LETTER U  # 
+1D6D6 ;        0075 ;  SA      # ( 𝛖 → u ) MATHEMATICAL BOLD SMALL UPSILON → LATIN SMALL LETTER U       # →υ→→ʋ→
+1D710 ;        0075 ;  SA      # ( 𝜐 → u ) MATHEMATICAL ITALIC SMALL UPSILON → LATIN SMALL LETTER U     # →υ→→ʋ→
+1D74A ;        0075 ;  SA      # ( 𝝊 → u ) MATHEMATICAL BOLD ITALIC SMALL UPSILON → LATIN SMALL LETTER U        # →υ→→ʋ→
+1D784 ;        0075 ;  SA      # ( 𝞄 → u ) MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON → LATIN SMALL LETTER U    # →υ→→ʋ→
+1D7BE ;        0075 ;  SA      # ( 𝞾 → u ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON → LATIN SMALL LETTER U     # →υ→→ʋ→
+
+1D414 ;        0055 ;  SA      # ( 𝐔 → U ) MATHEMATICAL BOLD CAPITAL U → LATIN CAPITAL LETTER U # 
+1D448 ;        0055 ;  SA      # ( 𝑈 → U ) MATHEMATICAL ITALIC CAPITAL U → LATIN CAPITAL LETTER U       # 
+1D47C ;        0055 ;  SA      # ( 𝑼 → U ) MATHEMATICAL BOLD ITALIC CAPITAL U → LATIN CAPITAL LETTER U  # 
+1D4B0 ;        0055 ;  SA      # ( 𝒰 → U ) MATHEMATICAL SCRIPT CAPITAL U → LATIN CAPITAL LETTER U       # 
+1D4E4 ;        0055 ;  SA      # ( 𝓤 → U ) MATHEMATICAL BOLD SCRIPT CAPITAL U → LATIN CAPITAL LETTER U  # 
+1D518 ;        0055 ;  SA      # ( 𝔘 → U ) MATHEMATICAL FRAKTUR CAPITAL U → LATIN CAPITAL LETTER U      # 
+1D54C ;        0055 ;  SA      # ( 𝕌 → U ) MATHEMATICAL DOUBLE-STRUCK CAPITAL U → LATIN CAPITAL LETTER U        # 
+1D580 ;        0055 ;  SA      # ( 𝖀 → U ) MATHEMATICAL BOLD FRAKTUR CAPITAL U → LATIN CAPITAL LETTER U # 
+1D5B4 ;        0055 ;  SA      # ( 𝖴 → U ) MATHEMATICAL SANS-SERIF CAPITAL U → LATIN CAPITAL LETTER U   # 
+1D5E8 ;        0055 ;  SA      # ( 𝗨 → U ) MATHEMATICAL SANS-SERIF BOLD CAPITAL U → LATIN CAPITAL LETTER U      # 
+1D61C ;        0055 ;  SA      # ( 𝘜 → U ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL U → LATIN CAPITAL LETTER U    # 
+1D650 ;        0055 ;  SA      # ( 𝙐 → U ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U → LATIN CAPITAL LETTER U       # 
+1D684 ;        0055 ;  SA      # ( 𝚄 → U ) MATHEMATICAL MONOSPACE CAPITAL U → LATIN CAPITAL LETTER U    # 
+
+01D4 ; 016D ;  SA      # ( ǔ → ŭ ) LATIN SMALL LETTER U WITH CARON → LATIN SMALL LETTER U WITH BREVE     # 
+
+01D3 ; 016C ;  SA      # ( Ǔ → Ŭ ) LATIN CAPITAL LETTER U WITH CARON → LATIN CAPITAL LETTER U WITH BREVE # 
+
+2127 ; 01B1 ;  SA      #* ( ℧ → Ʊ ) INVERTED OHM SIGN → LATIN CAPITAL LETTER UPSILON    # 
+
+2228 ; 0076 ;  SA      #* ( ∨ → v ) LOGICAL OR → LATIN SMALL LETTER V    # 
+22C1 ; 0076 ;  SA      #* ( ⋁ → v ) N-ARY LOGICAL OR → LATIN SMALL LETTER V      # →∨→
+FF56 ; 0076 ;  SA      # ( v → v ) FULLWIDTH LATIN SMALL LETTER V → LATIN SMALL LETTER V # →ν→
+2174 ; 0076 ;  SA      # ( ⅴ → v ) SMALL ROMAN NUMERAL FIVE → LATIN SMALL LETTER V       # 
+1D42F ;        0076 ;  SA      # ( 𝐯 → v ) MATHEMATICAL BOLD SMALL V → LATIN SMALL LETTER V     # 
+1D463 ;        0076 ;  SA      # ( 𝑣 → v ) MATHEMATICAL ITALIC SMALL V → LATIN SMALL LETTER V   # 
+1D497 ;        0076 ;  SA      # ( 𝒗 → v ) MATHEMATICAL BOLD ITALIC SMALL V → LATIN SMALL LETTER V      # 
+1D4CB ;        0076 ;  SA      # ( 𝓋 → v ) MATHEMATICAL SCRIPT SMALL V → LATIN SMALL LETTER V   # 
+1D4FF ;        0076 ;  SA      # ( 𝓿 → v ) MATHEMATICAL BOLD SCRIPT SMALL V → LATIN SMALL LETTER V      # 
+1D533 ;        0076 ;  SA      # ( 𝔳 → v ) MATHEMATICAL FRAKTUR SMALL V → LATIN SMALL LETTER V  # 
+1D567 ;        0076 ;  SA      # ( 𝕧 → v ) MATHEMATICAL DOUBLE-STRUCK SMALL V → LATIN SMALL LETTER V    # 
+1D59B ;        0076 ;  SA      # ( 𝖛 → v ) MATHEMATICAL BOLD FRAKTUR SMALL V → LATIN SMALL LETTER V     # 
+1D5CF ;        0076 ;  SA      # ( 𝗏 → v ) MATHEMATICAL SANS-SERIF SMALL V → LATIN SMALL LETTER V       # 
+1D603 ;        0076 ;  SA      # ( 𝘃 → v ) MATHEMATICAL SANS-SERIF BOLD SMALL V → LATIN SMALL LETTER V  # 
+1D637 ;        0076 ;  SA      # ( 𝘷 → v ) MATHEMATICAL SANS-SERIF ITALIC SMALL V → LATIN SMALL LETTER V        # 
+1D66B ;        0076 ;  SA      # ( 𝙫 → v ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V → LATIN SMALL LETTER V   # 
+1D69F ;        0076 ;  SA      # ( 𝚟 → v ) MATHEMATICAL MONOSPACE SMALL V → LATIN SMALL LETTER V        # 
+1D20 ; 0076 ;  SA      # ( ᴠ → v ) LATIN LETTER SMALL CAPITAL V → LATIN SMALL LETTER V   # 
+1D6CE ;        0076 ;  SA      # ( 𝛎 → v ) MATHEMATICAL BOLD SMALL NU → LATIN SMALL LETTER V    # →ν→
+1D708 ;        0076 ;  SA      # ( 𝜈 → v ) MATHEMATICAL ITALIC SMALL NU → LATIN SMALL LETTER V  # →ν→
+1D742 ;        0076 ;  SA      # ( 𝝂 → v ) MATHEMATICAL BOLD ITALIC SMALL NU → LATIN SMALL LETTER V     # →ν→
+1D77C ;        0076 ;  SA      # ( 𝝼 → v ) MATHEMATICAL SANS-SERIF BOLD SMALL NU → LATIN SMALL LETTER V # →ν→
+1D7B6 ;        0076 ;  SA      # ( 𝞶 → v ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU → LATIN SMALL LETTER V  # →ν→
+
+2164 ; 0056 ;  SA      # ( Ⅴ → V ) ROMAN NUMERAL FIVE → LATIN CAPITAL LETTER V   # 
+1D415 ;        0056 ;  SA      # ( 𝐕 → V ) MATHEMATICAL BOLD CAPITAL V → LATIN CAPITAL LETTER V # 
+1D449 ;        0056 ;  SA      # ( 𝑉 → V ) MATHEMATICAL ITALIC CAPITAL V → LATIN CAPITAL LETTER V       # 
+1D47D ;        0056 ;  SA      # ( 𝑽 → V ) MATHEMATICAL BOLD ITALIC CAPITAL V → LATIN CAPITAL LETTER V  # 
+1D4B1 ;        0056 ;  SA      # ( 𝒱 → V ) MATHEMATICAL SCRIPT CAPITAL V → LATIN CAPITAL LETTER V       # 
+1D4E5 ;        0056 ;  SA      # ( 𝓥 → V ) MATHEMATICAL BOLD SCRIPT CAPITAL V → LATIN CAPITAL LETTER V  # 
+1D519 ;        0056 ;  SA      # ( 𝔙 → V ) MATHEMATICAL FRAKTUR CAPITAL V → LATIN CAPITAL LETTER V      # 
+1D54D ;        0056 ;  SA      # ( 𝕍 → V ) MATHEMATICAL DOUBLE-STRUCK CAPITAL V → LATIN CAPITAL LETTER V        # 
+1D581 ;        0056 ;  SA      # ( 𝖁 → V ) MATHEMATICAL BOLD FRAKTUR CAPITAL V → LATIN CAPITAL LETTER V # 
+1D5B5 ;        0056 ;  SA      # ( 𝖵 → V ) MATHEMATICAL SANS-SERIF CAPITAL V → LATIN CAPITAL LETTER V   # 
+1D5E9 ;        0056 ;  SA      # ( 𝗩 → V ) MATHEMATICAL SANS-SERIF BOLD CAPITAL V → LATIN CAPITAL LETTER V      # 
+1D61D ;        0056 ;  SA      # ( 𝘝 → V ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL V → LATIN CAPITAL LETTER V    # 
+1D651 ;        0056 ;  SA      # ( 𝙑 → V ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V → LATIN CAPITAL LETTER V       # 
+1D685 ;        0056 ;  SA      # ( 𝚅 → V ) MATHEMATICAL MONOSPACE CAPITAL V → LATIN CAPITAL LETTER V    # 
+
+2175 ; 0076 0069 ;     SA      # ( ⅵ → vi ) SMALL ROMAN NUMERAL SIX → LATIN SMALL LETTER V, LATIN SMALL LETTER I # 
+
+2165 ; 0056 0049 ;     SA      # ( Ⅵ → VI ) ROMAN NUMERAL SIX → LATIN CAPITAL LETTER V, LATIN CAPITAL LETTER I   # 
+
+2176 ; 0076 0069 0069 ;        SA      # ( ⅶ → vii ) SMALL ROMAN NUMERAL SEVEN → LATIN SMALL LETTER V, LATIN SMALL LETTER I, LATIN SMALL LETTER I        # 
+
+2166 ; 0056 0049 0049 ;        SA      # ( Ⅶ → VII ) ROMAN NUMERAL SEVEN → LATIN CAPITAL LETTER V, LATIN CAPITAL LETTER I, LATIN CAPITAL LETTER I        # 
+
+2177 ; 0076 0069 0069 0069 ;   SA      # ( ⅷ → viii ) SMALL ROMAN NUMERAL EIGHT → LATIN SMALL LETTER V, LATIN SMALL LETTER I, LATIN SMALL LETTER I, LATIN SMALL LETTER I # 
+
+2167 ; 0056 0049 0049 0049 ;   SA      # ( Ⅷ → VIII ) ROMAN NUMERAL EIGHT → LATIN CAPITAL LETTER V, LATIN CAPITAL LETTER I, LATIN CAPITAL LETTER I, LATIN CAPITAL LETTER I       # 
+
+026F ; 0076 0076 ;     SA      # ( ɯ → vv ) LATIN SMALL LETTER TURNED M → LATIN SMALL LETTER V, LATIN SMALL LETTER V      # →w→
+0077 ; 0076 0076 ;     SA      # ( w → vv ) LATIN SMALL LETTER W → LATIN SMALL LETTER V, LATIN SMALL LETTER V      # 
+1D430 ;        0076 0076 ;     SA      # ( 𝐰 → vv ) MATHEMATICAL BOLD SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V      # →w→
+1D464 ;        0076 0076 ;     SA      # ( 𝑤 → vv ) MATHEMATICAL ITALIC SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V    # →w→
+1D498 ;        0076 0076 ;     SA      # ( 𝒘 → vv ) MATHEMATICAL BOLD ITALIC SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V       # →w→
+1D4CC ;        0076 0076 ;     SA      # ( 𝓌 → vv ) MATHEMATICAL SCRIPT SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V    # →w→
+1D500 ;        0076 0076 ;     SA      # ( 𝔀 → vv ) MATHEMATICAL BOLD SCRIPT SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V       # →w→
+1D534 ;        0076 0076 ;     SA      # ( 𝔴 → vv ) MATHEMATICAL FRAKTUR SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V   # →w→
+1D568 ;        0076 0076 ;     SA      # ( 𝕨 → vv ) MATHEMATICAL DOUBLE-STRUCK SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V     # →w→
+1D59C ;        0076 0076 ;     SA      # ( 𝖜 → vv ) MATHEMATICAL BOLD FRAKTUR SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V      # →w→
+1D5D0 ;        0076 0076 ;     SA      # ( 𝗐 → vv ) MATHEMATICAL SANS-SERIF SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V        # →w→
+1D604 ;        0076 0076 ;     SA      # ( 𝘄 → vv ) MATHEMATICAL SANS-SERIF BOLD SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V   # →w→
+1D638 ;        0076 0076 ;     SA      # ( 𝘸 → vv ) MATHEMATICAL SANS-SERIF ITALIC SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V # →w→
+1D66C ;        0076 0076 ;     SA      # ( 𝙬 → vv ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V    # →w→
+1D6A0 ;        0076 0076 ;     SA      # ( 𝚠 → vv ) MATHEMATICAL MONOSPACE SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V # →w→
+1D21 ; 0076 0076 ;     SA      # ( ᴡ → vv ) LATIN LETTER SMALL CAPITAL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V    # →w→
+
+A761 ; 0076 0079 ;     SA      # ( ꝡ → vy ) LATIN SMALL LETTER VY → LATIN SMALL LETTER V, LATIN SMALL LETTER Y   # 
+
+1D6B2 ;        0245 ;  SA      # ( 𝚲 → Ʌ ) MATHEMATICAL BOLD CAPITAL LAMDA → LATIN CAPITAL LETTER TURNED V     # →Λ→
+1D6EC ;        0245 ;  SA      # ( 𝛬 → Ʌ ) MATHEMATICAL ITALIC CAPITAL LAMDA → LATIN CAPITAL LETTER TURNED V   # →Λ→
+1D726 ;        0245 ;  SA      # ( 𝜦 → Ʌ ) MATHEMATICAL BOLD ITALIC CAPITAL LAMDA → LATIN CAPITAL LETTER TURNED V      # →Λ→
+1D760 ;        0245 ;  SA      # ( 𝝠 → Ʌ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA → LATIN CAPITAL LETTER TURNED V  # →Λ→
+1D79A ;        0245 ;  SA      # ( 𝞚 → Ʌ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA → LATIN CAPITAL LETTER TURNED V   # →Λ→
+
+1D416 ;        0057 ;  SA      # ( 𝐖 → W ) MATHEMATICAL BOLD CAPITAL W → LATIN CAPITAL LETTER W # 
+1D44A ;        0057 ;  SA      # ( 𝑊 → W ) MATHEMATICAL ITALIC CAPITAL W → LATIN CAPITAL LETTER W       # 
+1D47E ;        0057 ;  SA      # ( 𝑾 → W ) MATHEMATICAL BOLD ITALIC CAPITAL W → LATIN CAPITAL LETTER W  # 
+1D4B2 ;        0057 ;  SA      # ( 𝒲 → W ) MATHEMATICAL SCRIPT CAPITAL W → LATIN CAPITAL LETTER W       # 
+1D4E6 ;        0057 ;  SA      # ( 𝓦 → W ) MATHEMATICAL BOLD SCRIPT CAPITAL W → LATIN CAPITAL LETTER W  # 
+1D51A ;        0057 ;  SA      # ( 𝔚 → W ) MATHEMATICAL FRAKTUR CAPITAL W → LATIN CAPITAL LETTER W      # 
+1D54E ;        0057 ;  SA      # ( 𝕎 → W ) MATHEMATICAL DOUBLE-STRUCK CAPITAL W → LATIN CAPITAL LETTER W        # 
+1D582 ;        0057 ;  SA      # ( 𝖂 → W ) MATHEMATICAL BOLD FRAKTUR CAPITAL W → LATIN CAPITAL LETTER W # 
+1D5B6 ;        0057 ;  SA      # ( 𝖶 → W ) MATHEMATICAL SANS-SERIF CAPITAL W → LATIN CAPITAL LETTER W   # 
+1D5EA ;        0057 ;  SA      # ( 𝗪 → W ) MATHEMATICAL SANS-SERIF BOLD CAPITAL W → LATIN CAPITAL LETTER W      # 
+1D61E ;        0057 ;  SA      # ( 𝘞 → W ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL W → LATIN CAPITAL LETTER W    # 
+1D652 ;        0057 ;  SA      # ( 𝙒 → W ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W → LATIN CAPITAL LETTER W       # 
+1D686 ;        0057 ;  SA      # ( 𝚆 → W ) MATHEMATICAL MONOSPACE CAPITAL W → LATIN CAPITAL LETTER W    # 
+
+20A9 ; 0057 0335 ;     SA      #* ( ₩ → W̵ ) WON SIGN → LATIN CAPITAL LETTER W, COMBINING SHORT STROKE OVERLAY  # 
+
+00D7 ; 0078 ;  SA      #* ( × → x ) MULTIPLICATION SIGN → LATIN SMALL LETTER X    # 
+2573 ; 0078 ;  SA      #* ( ╳ → x ) BOX DRAWINGS LIGHT DIAGONAL CROSS → LATIN SMALL LETTER X     # 
+292B ; 0078 ;  SA      #* ( ⤫ → x ) RISING DIAGONAL CROSSING FALLING DIAGONAL → LATIN SMALL LETTER X     # 
+292C ; 0078 ;  SA      #* ( ⤬ → x ) FALLING DIAGONAL CROSSING RISING DIAGONAL → LATIN SMALL LETTER X     # 
+2A2F ; 0078 ;  SA      #* ( ⨯ → x ) VECTOR OR CROSS PRODUCT → LATIN SMALL LETTER X       # →×→
+FF58 ; 0078 ;  SA      # ( x → x ) FULLWIDTH LATIN SMALL LETTER X → LATIN SMALL LETTER X # →х→
+2179 ; 0078 ;  SA      # ( ⅹ → x ) SMALL ROMAN NUMERAL TEN → LATIN SMALL LETTER X        # 
+1D431 ;        0078 ;  SA      # ( 𝐱 → x ) MATHEMATICAL BOLD SMALL X → LATIN SMALL LETTER X     # 
+1D465 ;        0078 ;  SA      # ( 𝑥 → x ) MATHEMATICAL ITALIC SMALL X → LATIN SMALL LETTER X   # 
+1D499 ;        0078 ;  SA      # ( 𝒙 → x ) MATHEMATICAL BOLD ITALIC SMALL X → LATIN SMALL LETTER X      # 
+1D4CD ;        0078 ;  SA      # ( 𝓍 → x ) MATHEMATICAL SCRIPT SMALL X → LATIN SMALL LETTER X   # 
+1D501 ;        0078 ;  SA      # ( 𝔁 → x ) MATHEMATICAL BOLD SCRIPT SMALL X → LATIN SMALL LETTER X      # 
+1D535 ;        0078 ;  SA      # ( 𝔵 → x ) MATHEMATICAL FRAKTUR SMALL X → LATIN SMALL LETTER X  # 
+1D569 ;        0078 ;  SA      # ( 𝕩 → x ) MATHEMATICAL DOUBLE-STRUCK SMALL X → LATIN SMALL LETTER X    # 
+1D59D ;        0078 ;  SA      # ( 𝖝 → x ) MATHEMATICAL BOLD FRAKTUR SMALL X → LATIN SMALL LETTER X     # 
+1D5D1 ;        0078 ;  SA      # ( 𝗑 → x ) MATHEMATICAL SANS-SERIF SMALL X → LATIN SMALL LETTER X       # 
+1D605 ;        0078 ;  SA      # ( 𝘅 → x ) MATHEMATICAL SANS-SERIF BOLD SMALL X → LATIN SMALL LETTER X  # 
+1D639 ;        0078 ;  SA      # ( 𝘹 → x ) MATHEMATICAL SANS-SERIF ITALIC SMALL X → LATIN SMALL LETTER X        # 
+1D66D ;        0078 ;  SA      # ( 𝙭 → x ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X → LATIN SMALL LETTER X   # 
+1D6A1 ;        0078 ;  SA      # ( 𝚡 → x ) MATHEMATICAL MONOSPACE SMALL X → LATIN SMALL LETTER X        # 
+
+FF38 ; 0058 ;  SA      # ( X → X ) FULLWIDTH LATIN CAPITAL LETTER X → LATIN CAPITAL LETTER X     # →Χ→
+2169 ; 0058 ;  SA      # ( Ⅹ → X ) ROMAN NUMERAL TEN → LATIN CAPITAL LETTER X    # 
+1D417 ;        0058 ;  SA      # ( 𝐗 → X ) MATHEMATICAL BOLD CAPITAL X → LATIN CAPITAL LETTER X # 
+1D44B ;        0058 ;  SA      # ( 𝑋 → X ) MATHEMATICAL ITALIC CAPITAL X → LATIN CAPITAL LETTER X       # 
+1D47F ;        0058 ;  SA      # ( 𝑿 → X ) MATHEMATICAL BOLD ITALIC CAPITAL X → LATIN CAPITAL LETTER X  # 
+1D4B3 ;        0058 ;  SA      # ( 𝒳 → X ) MATHEMATICAL SCRIPT CAPITAL X → LATIN CAPITAL LETTER X       # 
+1D4E7 ;        0058 ;  SA      # ( 𝓧 → X ) MATHEMATICAL BOLD SCRIPT CAPITAL X → LATIN CAPITAL LETTER X  # 
+1D51B ;        0058 ;  SA      # ( 𝔛 → X ) MATHEMATICAL FRAKTUR CAPITAL X → LATIN CAPITAL LETTER X      # 
+1D54F ;        0058 ;  SA      # ( 𝕏 → X ) MATHEMATICAL DOUBLE-STRUCK CAPITAL X → LATIN CAPITAL LETTER X        # 
+1D583 ;        0058 ;  SA      # ( 𝖃 → X ) MATHEMATICAL BOLD FRAKTUR CAPITAL X → LATIN CAPITAL LETTER X # 
+1D5B7 ;        0058 ;  SA      # ( 𝖷 → X ) MATHEMATICAL SANS-SERIF CAPITAL X → LATIN CAPITAL LETTER X   # 
+1D5EB ;        0058 ;  SA      # ( 𝗫 → X ) MATHEMATICAL SANS-SERIF BOLD CAPITAL X → LATIN CAPITAL LETTER X      # 
+1D61F ;        0058 ;  SA      # ( 𝘟 → X ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL X → LATIN CAPITAL LETTER X    # 
+1D653 ;        0058 ;  SA      # ( 𝙓 → X ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X → LATIN CAPITAL LETTER X       # 
+1D687 ;        0058 ;  SA      # ( 𝚇 → X ) MATHEMATICAL MONOSPACE CAPITAL X → LATIN CAPITAL LETTER X    # 
+1D6BE ;        0058 ;  SA      # ( 𝚾 → X ) MATHEMATICAL BOLD CAPITAL CHI → LATIN CAPITAL LETTER X       # →𝐗→
+1D6F8 ;        0058 ;  SA      # ( 𝛸 → X ) MATHEMATICAL ITALIC CAPITAL CHI → LATIN CAPITAL LETTER X     # →𝑋→
+1D732 ;        0058 ;  SA      # ( 𝜲 → X ) MATHEMATICAL BOLD ITALIC CAPITAL CHI → LATIN CAPITAL LETTER X        # →𝑿→
+1D76C ;        0058 ;  SA      # ( 𝝬 → X ) MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI → LATIN CAPITAL LETTER X    # →Χ→
+1D7A6 ;        0058 ;  SA      # ( 𝞦 → X ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI → LATIN CAPITAL LETTER X     # →Χ→
+
+166D ; 1D417 ; SA      #* ( ᙭ → 𝐗 ) CANADIAN SYLLABICS CHI SIGN → MATHEMATICAL BOLD CAPITAL X # →X→
+
+2A30 ; 0078 0307 ;     SA      #* ( ⨰ → ẋ ) MULTIPLICATION SIGN WITH DOT ABOVE → LATIN SMALL LETTER X, COMBINING DOT ABOVE     # →×̇→
+
+217A ; 0078 0069 ;     SA      # ( ⅺ → xi ) SMALL ROMAN NUMERAL ELEVEN → LATIN SMALL LETTER X, LATIN SMALL LETTER I      # 
+
+216A ; 0058 0049 ;     SA      # ( Ⅺ → XI ) ROMAN NUMERAL ELEVEN → LATIN CAPITAL LETTER X, LATIN CAPITAL LETTER I        # 
+
+217B ; 0078 0069 0069 ;        SA      # ( ⅻ → xii ) SMALL ROMAN NUMERAL TWELVE → LATIN SMALL LETTER X, LATIN SMALL LETTER I, LATIN SMALL LETTER I       # 
+
+216B ; 0058 0049 0049 ;        SA      # ( Ⅻ → XII ) ROMAN NUMERAL TWELVE → LATIN CAPITAL LETTER X, LATIN CAPITAL LETTER I, LATIN CAPITAL LETTER I       # 
+
+1D8C ; 0079 ;  SA      # ( ᶌ → y ) LATIN SMALL LETTER V WITH PALATAL HOOK → LATIN SMALL LETTER Y # 
+FF59 ; 0079 ;  SA      # ( y → y ) FULLWIDTH LATIN SMALL LETTER Y → LATIN SMALL LETTER Y # →у→
+1D432 ;        0079 ;  SA      # ( 𝐲 → y ) MATHEMATICAL BOLD SMALL Y → LATIN SMALL LETTER Y     # 
+1D466 ;        0079 ;  SA      # ( 𝑦 → y ) MATHEMATICAL ITALIC SMALL Y → LATIN SMALL LETTER Y   # 
+1D49A ;        0079 ;  SA      # ( 𝒚 → y ) MATHEMATICAL BOLD ITALIC SMALL Y → LATIN SMALL LETTER Y      # 
+1D4CE ;        0079 ;  SA      # ( 𝓎 → y ) MATHEMATICAL SCRIPT SMALL Y → LATIN SMALL LETTER Y   # 
+1D502 ;        0079 ;  SA      # ( 𝔂 → y ) MATHEMATICAL BOLD SCRIPT SMALL Y → LATIN SMALL LETTER Y      # 
+1D536 ;        0079 ;  SA      # ( 𝔶 → y ) MATHEMATICAL FRAKTUR SMALL Y → LATIN SMALL LETTER Y  # 
+1D56A ;        0079 ;  SA      # ( 𝕪 → y ) MATHEMATICAL DOUBLE-STRUCK SMALL Y → LATIN SMALL LETTER Y    # 
+1D59E ;        0079 ;  SA      # ( 𝖞 → y ) MATHEMATICAL BOLD FRAKTUR SMALL Y → LATIN SMALL LETTER Y     # 
+1D5D2 ;        0079 ;  SA      # ( 𝗒 → y ) MATHEMATICAL SANS-SERIF SMALL Y → LATIN SMALL LETTER Y       # 
+1D606 ;        0079 ;  SA      # ( 𝘆 → y ) MATHEMATICAL SANS-SERIF BOLD SMALL Y → LATIN SMALL LETTER Y  # 
+1D63A ;        0079 ;  SA      # ( 𝘺 → y ) MATHEMATICAL SANS-SERIF ITALIC SMALL Y → LATIN SMALL LETTER Y        # 
+1D66E ;        0079 ;  SA      # ( 𝙮 → y ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y → LATIN SMALL LETTER Y   # 
+1D6A2 ;        0079 ;  SA      # ( 𝚢 → y ) MATHEMATICAL MONOSPACE SMALL Y → LATIN SMALL LETTER Y        # 
+028F ; 0079 ;  SA      # ( ʏ → y ) LATIN LETTER SMALL CAPITAL Y → LATIN SMALL LETTER Y    # →ү→→у→
+1EFF ; 0079 ;  SA      # ( ỿ → y ) LATIN SMALL LETTER Y WITH LOOP → LATIN SMALL LETTER Y # 
+213D ; 0079 ;  SA      # ( ℽ → y ) DOUBLE-STRUCK SMALL GAMMA → LATIN SMALL LETTER Y      # →γ→
+1D6C4 ;        0079 ;  SA      # ( 𝛄 → y ) MATHEMATICAL BOLD SMALL GAMMA → LATIN SMALL LETTER Y # →γ→
+1D6FE ;        0079 ;  SA      # ( 𝛾 → y ) MATHEMATICAL ITALIC SMALL GAMMA → LATIN SMALL LETTER Y       # →γ→
+1D738 ;        0079 ;  SA      # ( 𝜸 → y ) MATHEMATICAL BOLD ITALIC SMALL GAMMA → LATIN SMALL LETTER Y  # →γ→
+1D772 ;        0079 ;  SA      # ( 𝝲 → y ) MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA → LATIN SMALL LETTER Y      # →γ→
+1D7AC ;        0079 ;  SA      # ( 𝞬 → y ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA → LATIN SMALL LETTER Y       # →γ→
+
+FF39 ; 0059 ;  SA      # ( Y → Y ) FULLWIDTH LATIN CAPITAL LETTER Y → LATIN CAPITAL LETTER Y     # →Υ→
+1D418 ;        0059 ;  SA      # ( 𝐘 → Y ) MATHEMATICAL BOLD CAPITAL Y → LATIN CAPITAL LETTER Y # 
+1D44C ;        0059 ;  SA      # ( 𝑌 → Y ) MATHEMATICAL ITALIC CAPITAL Y → LATIN CAPITAL LETTER Y       # 
+1D480 ;        0059 ;  SA      # ( 𝒀 → Y ) MATHEMATICAL BOLD ITALIC CAPITAL Y → LATIN CAPITAL LETTER Y  # 
+1D4B4 ;        0059 ;  SA      # ( 𝒴 → Y ) MATHEMATICAL SCRIPT CAPITAL Y → LATIN CAPITAL LETTER Y       # 
+1D4E8 ;        0059 ;  SA      # ( 𝓨 → Y ) MATHEMATICAL BOLD SCRIPT CAPITAL Y → LATIN CAPITAL LETTER Y  # 
+1D51C ;        0059 ;  SA      # ( 𝔜 → Y ) MATHEMATICAL FRAKTUR CAPITAL Y → LATIN CAPITAL LETTER Y      # 
+1D550 ;        0059 ;  SA      # ( 𝕐 → Y ) MATHEMATICAL DOUBLE-STRUCK CAPITAL Y → LATIN CAPITAL LETTER Y        # 
+1D584 ;        0059 ;  SA      # ( 𝖄 → Y ) MATHEMATICAL BOLD FRAKTUR CAPITAL Y → LATIN CAPITAL LETTER Y # 
+1D5B8 ;        0059 ;  SA      # ( 𝖸 → Y ) MATHEMATICAL SANS-SERIF CAPITAL Y → LATIN CAPITAL LETTER Y   # 
+1D5EC ;        0059 ;  SA      # ( 𝗬 → Y ) MATHEMATICAL SANS-SERIF BOLD CAPITAL Y → LATIN CAPITAL LETTER Y      # 
+1D620 ;        0059 ;  SA      # ( 𝘠 → Y ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y → LATIN CAPITAL LETTER Y    # 
+1D654 ;        0059 ;  SA      # ( 𝙔 → Y ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y → LATIN CAPITAL LETTER Y       # 
+1D688 ;        0059 ;  SA      # ( 𝚈 → Y ) MATHEMATICAL MONOSPACE CAPITAL Y → LATIN CAPITAL LETTER Y    # 
+1D6BC ;        0059 ;  SA      # ( 𝚼 → Y ) MATHEMATICAL BOLD CAPITAL UPSILON → LATIN CAPITAL LETTER Y   # →Υ→
+1D6F6 ;        0059 ;  SA      # ( 𝛶 → Y ) MATHEMATICAL ITALIC CAPITAL UPSILON → LATIN CAPITAL LETTER Y # →Υ→
+1D730 ;        0059 ;  SA      # ( 𝜰 → Y ) MATHEMATICAL BOLD ITALIC CAPITAL UPSILON → LATIN CAPITAL LETTER Y    # →Υ→
+1D76A ;        0059 ;  SA      # ( 𝝪 → Y ) MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON → LATIN CAPITAL LETTER Y        # →Υ→
+1D7A4 ;        0059 ;  SA      # ( 𝞤 → Y ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON → LATIN CAPITAL LETTER Y # →Υ→
+
+01B4 ; 0079 0314 ;     SA      # ( ƴ → y̔ ) LATIN SMALL LETTER Y WITH HOOK → LATIN SMALL LETTER Y, COMBINING REVERSED COMMA ABOVE        # 
+
+00A5 ; 0059 0335 ;     SA      #* ( ¥ → Y̵ ) YEN SIGN → LATIN CAPITAL LETTER Y, COMBINING SHORT STROKE OVERLAY   # 
+
+1D433 ;        007A ;  SA      # ( 𝐳 → z ) MATHEMATICAL BOLD SMALL Z → LATIN SMALL LETTER Z     # 
+1D467 ;        007A ;  SA      # ( 𝑧 → z ) MATHEMATICAL ITALIC SMALL Z → LATIN SMALL LETTER Z   # 
+1D49B ;        007A ;  SA      # ( 𝒛 → z ) MATHEMATICAL BOLD ITALIC SMALL Z → LATIN SMALL LETTER Z      # 
+1D4CF ;        007A ;  SA      # ( 𝓏 → z ) MATHEMATICAL SCRIPT SMALL Z → LATIN SMALL LETTER Z   # 
+1D503 ;        007A ;  SA      # ( 𝔃 → z ) MATHEMATICAL BOLD SCRIPT SMALL Z → LATIN SMALL LETTER Z      # 
+1D537 ;        007A ;  SA      # ( 𝔷 → z ) MATHEMATICAL FRAKTUR SMALL Z → LATIN SMALL LETTER Z  # 
+1D56B ;        007A ;  SA      # ( 𝕫 → z ) MATHEMATICAL DOUBLE-STRUCK SMALL Z → LATIN SMALL LETTER Z    # 
+1D59F ;        007A ;  SA      # ( 𝖟 → z ) MATHEMATICAL BOLD FRAKTUR SMALL Z → LATIN SMALL LETTER Z     # 
+1D5D3 ;        007A ;  SA      # ( 𝗓 → z ) MATHEMATICAL SANS-SERIF SMALL Z → LATIN SMALL LETTER Z       # 
+1D607 ;        007A ;  SA      # ( 𝘇 → z ) MATHEMATICAL SANS-SERIF BOLD SMALL Z → LATIN SMALL LETTER Z  # 
+1D63B ;        007A ;  SA      # ( 𝘻 → z ) MATHEMATICAL SANS-SERIF ITALIC SMALL Z → LATIN SMALL LETTER Z        # 
+1D66F ;        007A ;  SA      # ( 𝙯 → z ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z → LATIN SMALL LETTER Z   # 
+1D6A3 ;        007A ;  SA      # ( 𝚣 → z ) MATHEMATICAL MONOSPACE SMALL Z → LATIN SMALL LETTER Z        # 
+1D22 ; 007A ;  SA      # ( ᴢ → z ) LATIN LETTER SMALL CAPITAL Z → LATIN SMALL LETTER Z   # 
+
+FF3A ; 005A ;  SA      # ( Z → Z ) FULLWIDTH LATIN CAPITAL LETTER Z → LATIN CAPITAL LETTER Z     # →Ζ→
+2124 ; 005A ;  SA      # ( ℤ → Z ) DOUBLE-STRUCK CAPITAL Z → LATIN CAPITAL LETTER Z      # 
+2128 ; 005A ;  SA      # ( ℨ → Z ) BLACK-LETTER CAPITAL Z → LATIN CAPITAL LETTER Z       # 
+1D419 ;        005A ;  SA      # ( 𝐙 → Z ) MATHEMATICAL BOLD CAPITAL Z → LATIN CAPITAL LETTER Z # 
+1D44D ;        005A ;  SA      # ( 𝑍 → Z ) MATHEMATICAL ITALIC CAPITAL Z → LATIN CAPITAL LETTER Z       # 
+1D481 ;        005A ;  SA      # ( 𝒁 → Z ) MATHEMATICAL BOLD ITALIC CAPITAL Z → LATIN CAPITAL LETTER Z  # 
+1D4B5 ;        005A ;  SA      # ( 𝒵 → Z ) MATHEMATICAL SCRIPT CAPITAL Z → LATIN CAPITAL LETTER Z       # 
+1D4E9 ;        005A ;  SA      # ( 𝓩 → Z ) MATHEMATICAL BOLD SCRIPT CAPITAL Z → LATIN CAPITAL LETTER Z  # 
+1D585 ;        005A ;  SA      # ( 𝖅 → Z ) MATHEMATICAL BOLD FRAKTUR CAPITAL Z → LATIN CAPITAL LETTER Z # 
+1D5B9 ;        005A ;  SA      # ( 𝖹 → Z ) MATHEMATICAL SANS-SERIF CAPITAL Z → LATIN CAPITAL LETTER Z   # 
+1D5ED ;        005A ;  SA      # ( 𝗭 → Z ) MATHEMATICAL SANS-SERIF BOLD CAPITAL Z → LATIN CAPITAL LETTER Z      # 
+1D621 ;        005A ;  SA      # ( 𝘡 → Z ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z → LATIN CAPITAL LETTER Z    # 
+1D655 ;        005A ;  SA      # ( 𝙕 → Z ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z → LATIN CAPITAL LETTER Z       # 
+1D689 ;        005A ;  SA      # ( 𝚉 → Z ) MATHEMATICAL MONOSPACE CAPITAL Z → LATIN CAPITAL LETTER Z    # 
+1D6AD ;        005A ;  SA      # ( 𝚭 → Z ) MATHEMATICAL BOLD CAPITAL ZETA → LATIN CAPITAL LETTER Z      # →𝐙→
+1D6E7 ;        005A ;  SA      # ( 𝛧 → Z ) MATHEMATICAL ITALIC CAPITAL ZETA → LATIN CAPITAL LETTER Z    # →Ζ→
+1D721 ;        005A ;  SA      # ( 𝜡 → Z ) MATHEMATICAL BOLD ITALIC CAPITAL ZETA → LATIN CAPITAL LETTER Z       # →Ζ→
+1D75B ;        005A ;  SA      # ( 𝝛 → Z ) MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA → LATIN CAPITAL LETTER Z   # →Ζ→
+1D795 ;        005A ;  SA      # ( 𝞕 → Z ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA → LATIN CAPITAL LETTER Z    # →Ζ→
+
+0290 ; 007A 0328 ;     SA      # ( ʐ → z̨ ) LATIN SMALL LETTER Z WITH RETROFLEX HOOK → LATIN SMALL LETTER Z, COMBINING OGONEK    # →z̢→
+
+0225 ; 007A 0326 ;     SA      # ( ȥ → z̦ ) LATIN SMALL LETTER Z WITH HOOK → LATIN SMALL LETTER Z, COMBINING COMMA BELOW # →z̡→
+
+0224 ; 005A 0326 ;     SA      # ( Ȥ → Z̦ ) LATIN CAPITAL LETTER Z WITH HOOK → LATIN CAPITAL LETTER Z, COMBINING COMMA BELOW     # →Z̧→
+
+01B6 ; 007A 0335 ;     SA      # ( ƶ → z̵ ) LATIN SMALL LETTER Z WITH STROKE → LATIN SMALL LETTER Z, COMBINING SHORT STROKE OVERLAY      # 
+
+01B5 ; 005A 0335 ;     SA      # ( Ƶ → Z̵ ) LATIN CAPITAL LETTER Z WITH STROKE → LATIN CAPITAL LETTER Z, COMBINING SHORT STROKE OVERLAY  # 
+
+0292 ; 021D ;  SA      # ( ʒ → ȝ ) LATIN SMALL LETTER EZH → LATIN SMALL LETTER YOGH      # 
+A76B ; 021D ;  SA      # ( ꝫ → ȝ ) LATIN SMALL LETTER ET → LATIN SMALL LETTER YOGH      # 
+
+01BF ; 00FE ;  SA      # ( ƿ → þ ) LATIN LETTER WYNN → LATIN SMALL LETTER THORN  # 
+
+1D24 ; 01A8 ;  SA      # ( ᴤ → ƨ ) LATIN LETTER VOICED LARYNGEAL SPIRANT → LATIN SMALL LETTER TONE TWO  # 
+
+02C1 ; 02E4 ;  SA      # ( ˁ → ˤ ) MODIFIER LETTER REVERSED GLOTTAL STOP → MODIFIER LETTER SMALL REVERSED GLOTTAL STOP   # 
+
+03D0 ; 03B2 ;  SA      # ( ϐ → β ) GREEK BETA SYMBOL → GREEK SMALL LETTER BETA   # 
+
+03F5 ; 03B5 ;  SA      # ( ϵ → ε ) GREEK LUNATE EPSILON SYMBOL → GREEK SMALL LETTER EPSILON      # 
+
+1D7CB ;        03DD ;  SA      # ( 𝟋 → ϝ ) MATHEMATICAL BOLD SMALL DIGAMMA → GREEK SMALL LETTER DIGAMMA        # 
+
+1D6C7 ;        03B6 ;  SA      # ( 𝛇 → ζ ) MATHEMATICAL BOLD SMALL ZETA → GREEK SMALL LETTER ZETA      # 
+1D701 ;        03B6 ;  SA      # ( 𝜁 → ζ ) MATHEMATICAL ITALIC SMALL ZETA → GREEK SMALL LETTER ZETA    # 
+1D73B ;        03B6 ;  SA      # ( 𝜻 → ζ ) MATHEMATICAL BOLD ITALIC SMALL ZETA → GREEK SMALL LETTER ZETA       # 
+1D775 ;        03B6 ;  SA      # ( 𝝵 → ζ ) MATHEMATICAL SANS-SERIF BOLD SMALL ZETA → GREEK SMALL LETTER ZETA   # 
+1D7AF ;        03B6 ;  SA      # ( 𝞯 → ζ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA → GREEK SMALL LETTER ZETA    # 
+
+03D1 ; 03B8 ;  SA      # ( ϑ → θ ) GREEK THETA SYMBOL → GREEK SMALL LETTER THETA # 
+0398 ; 03B8 ;  SA      # ( Θ → θ ) GREEK CAPITAL LETTER THETA → GREEK SMALL LETTER THETA # →⊖→
+03F4 ; 03B8 ;  SA      # ( ϴ → θ ) GREEK CAPITAL THETA SYMBOL → GREEK SMALL LETTER THETA # →Θ→→⊖→
+
+1FBE ; 03B9 ;  SA      # ( ι → ι ) GREEK PROSGEGRAMMENI → GREEK SMALL LETTER IOTA       # 
+037A ; 03B9 ;  SA      #* ( ͺ → ι ) GREEK YPOGEGRAMMENI → GREEK SMALL LETTER IOTA        # →ι→
+
+03F0 ; 03BA ;  SA      # ( ϰ → κ ) GREEK KAPPA SYMBOL → GREEK SMALL LETTER KAPPA # 
+
+1D6CC ;        03BB ;  SA      # ( 𝛌 → λ ) MATHEMATICAL BOLD SMALL LAMDA → GREEK SMALL LETTER LAMDA    # 
+1D706 ;        03BB ;  SA      # ( 𝜆 → λ ) MATHEMATICAL ITALIC SMALL LAMDA → GREEK SMALL LETTER LAMDA  # 
+1D740 ;        03BB ;  SA      # ( 𝝀 → λ ) MATHEMATICAL BOLD ITALIC SMALL LAMDA → GREEK SMALL LETTER LAMDA     # 
+1D77A ;        03BB ;  SA      # ( 𝝺 → λ ) MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA → GREEK SMALL LETTER LAMDA # 
+1D7B4 ;        03BB ;  SA      # ( 𝞴 → λ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA → GREEK SMALL LETTER LAMDA  # 
+
+00B5 ; 03BC ;  SA      # ( µ → μ ) MICRO SIGN → GREEK SMALL LETTER MU    # 
+1D6CD ;        03BC ;  SA      # ( 𝛍 → μ ) MATHEMATICAL BOLD SMALL MU → GREEK SMALL LETTER MU  # 
+1D707 ;        03BC ;  SA      # ( 𝜇 → μ ) MATHEMATICAL ITALIC SMALL MU → GREEK SMALL LETTER MU        # 
+1D741 ;        03BC ;  SA      # ( 𝝁 → μ ) MATHEMATICAL BOLD ITALIC SMALL MU → GREEK SMALL LETTER MU   # 
+1D77B ;        03BC ;  SA      # ( 𝝻 → μ ) MATHEMATICAL SANS-SERIF BOLD SMALL MU → GREEK SMALL LETTER MU       # 
+1D7B5 ;        03BC ;  SA      # ( 𝞵 → μ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU → GREEK SMALL LETTER MU        # 
+
+03FA ; 039C ;  SA      # ( Ϻ → Μ ) GREEK CAPITAL LETTER SAN → GREEK CAPITAL LETTER MU    # 
+
+1D6CF ;        03BE ;  SA      # ( 𝛏 → ξ ) MATHEMATICAL BOLD SMALL XI → GREEK SMALL LETTER XI  # 
+1D709 ;        03BE ;  SA      # ( 𝜉 → ξ ) MATHEMATICAL ITALIC SMALL XI → GREEK SMALL LETTER XI        # 
+1D743 ;        03BE ;  SA      # ( 𝝃 → ξ ) MATHEMATICAL BOLD ITALIC SMALL XI → GREEK SMALL LETTER XI   # 
+1D77D ;        03BE ;  SA      # ( 𝝽 → ξ ) MATHEMATICAL SANS-SERIF BOLD SMALL XI → GREEK SMALL LETTER XI       # 
+1D7B7 ;        03BE ;  SA      # ( 𝞷 → ξ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI → GREEK SMALL LETTER XI        # 
+
+1D6B5 ;        039E ;  SA      # ( 𝚵 → Ξ ) MATHEMATICAL BOLD CAPITAL XI → GREEK CAPITAL LETTER XI      # 
+1D6EF ;        039E ;  SA      # ( 𝛯 → Ξ ) MATHEMATICAL ITALIC CAPITAL XI → GREEK CAPITAL LETTER XI    # 
+1D729 ;        039E ;  SA      # ( 𝜩 → Ξ ) MATHEMATICAL BOLD ITALIC CAPITAL XI → GREEK CAPITAL LETTER XI       # 
+1D763 ;        039E ;  SA      # ( 𝝣 → Ξ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL XI → GREEK CAPITAL LETTER XI   # 
+1D79D ;        039E ;  SA      # ( 𝞝 → Ξ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI → GREEK CAPITAL LETTER XI    # 
+
+03C3 ; 03BF ;  SA      # ( σ → ο ) GREEK SMALL LETTER SIGMA → GREEK SMALL LETTER OMICRON # →o→
+
+03D6 ; 03C0 ;  SA      # ( ϖ → π ) GREEK PI SYMBOL → GREEK SMALL LETTER PI       # 
+1D28 ; 03C0 ;  SA      # ( ᴨ → π ) GREEK LETTER SMALL CAPITAL PI → GREEK SMALL LETTER PI        # →п→
+
+220F ; 03A0 ;  SA      #* ( ∏ → Π ) N-ARY PRODUCT → GREEK CAPITAL LETTER PI     # 
+213F ; 03A0 ;  SA      # ( ℿ → Π ) DOUBLE-STRUCK CAPITAL PI → GREEK CAPITAL LETTER PI   # 
+1D6B7 ;        03A0 ;  SA      # ( 𝚷 → Π ) MATHEMATICAL BOLD CAPITAL PI → GREEK CAPITAL LETTER PI      # 
+1D6F1 ;        03A0 ;  SA      # ( 𝛱 → Π ) MATHEMATICAL ITALIC CAPITAL PI → GREEK CAPITAL LETTER PI    # 
+1D72B ;        03A0 ;  SA      # ( 𝜫 → Π ) MATHEMATICAL BOLD ITALIC CAPITAL PI → GREEK CAPITAL LETTER PI       # 
+1D765 ;        03A0 ;  SA      # ( 𝝥 → Π ) MATHEMATICAL SANS-SERIF BOLD CAPITAL PI → GREEK CAPITAL LETTER PI   # 
+1D79F ;        03A0 ;  SA      # ( 𝞟 → Π ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI → GREEK CAPITAL LETTER PI    # 
+
+03F1 ; 03C1 ;  SA      # ( ϱ → ρ ) GREEK RHO SYMBOL → GREEK SMALL LETTER RHO     # 
+
+1D6D3 ;        03C2 ;  SA      # ( 𝛓 → ς ) MATHEMATICAL BOLD SMALL FINAL SIGMA → GREEK SMALL LETTER FINAL SIGMA        # 
+1D70D ;        03C2 ;  SA      # ( 𝜍 → ς ) MATHEMATICAL ITALIC SMALL FINAL SIGMA → GREEK SMALL LETTER FINAL SIGMA      # 
+1D747 ;        03C2 ;  SA      # ( 𝝇 → ς ) MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA → GREEK SMALL LETTER FINAL SIGMA # 
+1D781 ;        03C2 ;  SA      # ( 𝞁 → ς ) MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA → GREEK SMALL LETTER FINAL SIGMA     # 
+1D7BB ;        03C2 ;  SA      # ( 𝞻 → ς ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA → GREEK SMALL LETTER FINAL SIGMA      # 
+
+03D2 ; 03A5 ;  SA      # ( ϒ → Υ ) GREEK UPSILON WITH HOOK SYMBOL → GREEK CAPITAL LETTER UPSILON # 
+
+03D5 ; 03C6 ;  SA      # ( ϕ → φ ) GREEK PHI SYMBOL → GREEK SMALL LETTER PHI     # 
+
+1D6BD ;        03A6 ;  SA      # ( 𝚽 → Φ ) MATHEMATICAL BOLD CAPITAL PHI → GREEK CAPITAL LETTER PHI    # 
+1D6F7 ;        03A6 ;  SA      # ( 𝛷 → Φ ) MATHEMATICAL ITALIC CAPITAL PHI → GREEK CAPITAL LETTER PHI  # 
+1D731 ;        03A6 ;  SA      # ( 𝜱 → Φ ) MATHEMATICAL BOLD ITALIC CAPITAL PHI → GREEK CAPITAL LETTER PHI     # 
+1D76B ;        03A6 ;  SA      # ( 𝝫 → Φ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI → GREEK CAPITAL LETTER PHI # 
+1D7A5 ;        03A6 ;  SA      # ( 𝞥 → Φ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI → GREEK CAPITAL LETTER PHI  # 
+
+1D6D8 ;        03C7 ;  SA      # ( 𝛘 → χ ) MATHEMATICAL BOLD SMALL CHI → GREEK SMALL LETTER CHI        # 
+1D712 ;        03C7 ;  SA      # ( 𝜒 → χ ) MATHEMATICAL ITALIC SMALL CHI → GREEK SMALL LETTER CHI      # 
+1D74C ;        03C7 ;  SA      # ( 𝝌 → χ ) MATHEMATICAL BOLD ITALIC SMALL CHI → GREEK SMALL LETTER CHI # 
+1D786 ;        03C7 ;  SA      # ( 𝞆 → χ ) MATHEMATICAL SANS-SERIF BOLD SMALL CHI → GREEK SMALL LETTER CHI     # 
+1D7C0 ;        03C7 ;  SA      # ( 𝟀 → χ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI → GREEK SMALL LETTER CHI      # 
+
+1D6D9 ;        03C8 ;  SA      # ( 𝛙 → ψ ) MATHEMATICAL BOLD SMALL PSI → GREEK SMALL LETTER PSI        # 
+1D713 ;        03C8 ;  SA      # ( 𝜓 → ψ ) MATHEMATICAL ITALIC SMALL PSI → GREEK SMALL LETTER PSI      # 
+1D74D ;        03C8 ;  SA      # ( 𝝍 → ψ ) MATHEMATICAL BOLD ITALIC SMALL PSI → GREEK SMALL LETTER PSI # 
+1D787 ;        03C8 ;  SA      # ( 𝞇 → ψ ) MATHEMATICAL SANS-SERIF BOLD SMALL PSI → GREEK SMALL LETTER PSI     # 
+1D7C1 ;        03C8 ;  SA      # ( 𝟁 → ψ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI → GREEK SMALL LETTER PSI      # 
+
+1D6BF ;        03A8 ;  SA      # ( 𝚿 → Ψ ) MATHEMATICAL BOLD CAPITAL PSI → GREEK CAPITAL LETTER PSI    # 
+1D6F9 ;        03A8 ;  SA      # ( 𝛹 → Ψ ) MATHEMATICAL ITALIC CAPITAL PSI → GREEK CAPITAL LETTER PSI  # 
+1D733 ;        03A8 ;  SA      # ( 𝜳 → Ψ ) MATHEMATICAL BOLD ITALIC CAPITAL PSI → GREEK CAPITAL LETTER PSI     # 
+1D76D ;        03A8 ;  SA      # ( 𝝭 → Ψ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI → GREEK CAPITAL LETTER PSI # 
+1D7A7 ;        03A8 ;  SA      # ( 𝞧 → Ψ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI → GREEK CAPITAL LETTER PSI  # 
+
+2375 ; 03C9 ;  SA      #* ( ⍵ → ω ) APL FUNCTIONAL SYMBOL OMEGA → GREEK SMALL LETTER OMEGA      # 
+1D6DA ;        03C9 ;  SA      # ( 𝛚 → ω ) MATHEMATICAL BOLD SMALL OMEGA → GREEK SMALL LETTER OMEGA    # 
+1D714 ;        03C9 ;  SA      # ( 𝜔 → ω ) MATHEMATICAL ITALIC SMALL OMEGA → GREEK SMALL LETTER OMEGA  # 
+1D74E ;        03C9 ;  SA      # ( 𝝎 → ω ) MATHEMATICAL BOLD ITALIC SMALL OMEGA → GREEK SMALL LETTER OMEGA     # 
+1D788 ;        03C9 ;  SA      # ( 𝞈 → ω ) MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA → GREEK SMALL LETTER OMEGA # 
+1D7C2 ;        03C9 ;  SA      # ( 𝟂 → ω ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA → GREEK SMALL LETTER OMEGA  # 
+
+2126 ; 03A9 ;  SA      # ( Ω → Ω ) OHM SIGN → GREEK CAPITAL LETTER OMEGA        # 
+
+1F7D ; 1FF4 ;  SA      # ( ώ → ῴ ) GREEK SMALL LETTER OMEGA WITH OXIA → GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI   # 
+
+2630 ; 2CB6 ;  SA      #* ( ☰ → Ⲷ ) TRIGRAM FOR HEAVEN → COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE       # 
+
+2CDC ; 03EC ;  SA      # ( Ⳝ → Ϭ ) COPTIC CAPITAL LETTER OLD NUBIAN SHIMA → COPTIC CAPITAL LETTER SHIMA # 
+
+04D5 ; 0430 0435 ;     SA      # ( ӕ → ае ) CYRILLIC SMALL LIGATURE A IE → CYRILLIC SMALL LETTER A, CYRILLIC SMALL LETTER IE    # 
+
+0493 ; 0433 0335 ;     SA      # ( ғ → г̵ ) CYRILLIC SMALL LETTER GHE WITH STROKE → CYRILLIC SMALL LETTER GHE, COMBINING SHORT STROKE OVERLAY   # 
+
+0492 ; 0413 0335 ;     SA      # ( Ғ → Г̵ ) CYRILLIC CAPITAL LETTER GHE WITH STROKE → CYRILLIC CAPITAL LETTER GHE, COMBINING SHORT STROKE OVERLAY       # 
+
+0491 ; 0433 02C8 ;     SA      # ( ґ → гˈ ) CYRILLIC SMALL LETTER GHE WITH UPTURN → CYRILLIC SMALL LETTER GHE, MODIFIER LETTER VERTICAL LINE    # 
+
+0490 ; 0413 02C8 ;     SA      # ( Ґ → Гˈ ) CYRILLIC CAPITAL LETTER GHE WITH UPTURN → CYRILLIC CAPITAL LETTER GHE, MODIFIER LETTER VERTICAL LINE        # 
+
+0511 ; 0454 ;  SA      # ( ԑ → є ) CYRILLIC SMALL LETTER REVERSED ZE → CYRILLIC SMALL LETTER UKRAINIAN IE        # →ε→
+
+0510 ; 0404 ;  SA      # ( Ԑ → Є ) CYRILLIC CAPITAL LETTER REVERSED ZE → CYRILLIC CAPITAL LETTER UKRAINIAN IE    # →ℇ→
+
+0497 ; 0436 0329 ;     SA      # ( җ → ж̩ ) CYRILLIC SMALL LETTER ZHE WITH DESCENDER → CYRILLIC SMALL LETTER ZHE, COMBINING VERTICAL LINE BELOW # 
+
+0496 ; 0416 0329 ;     SA      # ( Җ → Ж̩ ) CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER → CYRILLIC CAPITAL LETTER ZHE, COMBINING VERTICAL LINE BELOW     # 
+
+0499 ; 0437 0321 ;     SA      # ( ҙ → з̡ ) CYRILLIC SMALL LETTER ZE WITH DESCENDER → CYRILLIC SMALL LETTER ZE, COMBINING PALATALIZED HOOK BELOW        # 
+
+0419 ; 040D ;  SA      # ( Й → Ѝ ) CYRILLIC CAPITAL LETTER SHORT I → CYRILLIC CAPITAL LETTER I WITH GRAVE        # 
+
+048A ; 040D 0326 ;     SA      # ( Ҋ → Ѝ̦ ) CYRILLIC CAPITAL LETTER SHORT I WITH TAIL → CYRILLIC CAPITAL LETTER I WITH GRAVE, COMBINING COMMA BELOW     # →Й̡→
+
+04CF ; 0456 ;  SA      # ( ӏ → і ) CYRILLIC SMALL LETTER PALOCHKA → CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I       # →ı→→ι→
+
+045D ; 0439 ;  SA      # ( ѝ → й ) CYRILLIC SMALL LETTER I WITH GRAVE → CYRILLIC SMALL LETTER SHORT I    # 
+
+048B ; 0439 0326 ;     SA      # ( ҋ → й̦ ) CYRILLIC SMALL LETTER SHORT I WITH TAIL → CYRILLIC SMALL LETTER SHORT I, COMBINING COMMA BELOW      # →й̡→
+
+049B ; 043A 0329 ;     SA      # ( қ → к̩ ) CYRILLIC SMALL LETTER KA WITH DESCENDER → CYRILLIC SMALL LETTER KA, COMBINING VERTICAL LINE BELOW   # 
+
+049A ; 041A 0329 ;     SA      # ( Қ → К̩ ) CYRILLIC CAPITAL LETTER KA WITH DESCENDER → CYRILLIC CAPITAL LETTER KA, COMBINING VERTICAL LINE BELOW       # 
+
+049F ; 043A 0335 ;     SA      # ( ҟ → к̵ ) CYRILLIC SMALL LETTER KA WITH STROKE → CYRILLIC SMALL LETTER KA, COMBINING SHORT STROKE OVERLAY     # 
+
+049E ; 041A 0335 ;     SA      # ( Ҟ → К̵ ) CYRILLIC CAPITAL LETTER KA WITH STROKE → CYRILLIC CAPITAL LETTER KA, COMBINING SHORT STROKE OVERLAY # 
+
+1D2B ; 043B ;  SA      # ( ᴫ → л ) CYRILLIC LETTER SMALL CAPITAL EL → CYRILLIC SMALL LETTER EL  # 
+
+04C6 ; 043B 0326 ;     SA      # ( ӆ → л̦ ) CYRILLIC SMALL LETTER EL WITH TAIL → CYRILLIC SMALL LETTER EL, COMBINING COMMA BELOW        # →л̡→
+
+04C5 ; 041B 0326 ;     SA      # ( Ӆ → Л̦ ) CYRILLIC CAPITAL LETTER EL WITH TAIL → CYRILLIC CAPITAL LETTER EL, COMBINING COMMA BELOW    # →Л̡→
+
+04CE ; 043C 0321 ;     SA      # ( ӎ → м̡ ) CYRILLIC SMALL LETTER EM WITH TAIL → CYRILLIC SMALL LETTER EM, COMBINING PALATALIZED HOOK BELOW     # 
+
+04CD ; 041C 0321 ;     SA      # ( Ӎ → М̡ ) CYRILLIC CAPITAL LETTER EM WITH TAIL → CYRILLIC CAPITAL LETTER EM, COMBINING PALATALIZED HOOK BELOW # 
+
+04A3 ; 043D 0329 ;     SA      # ( ң → н̩ ) CYRILLIC SMALL LETTER EN WITH DESCENDER → CYRILLIC SMALL LETTER EN, COMBINING VERTICAL LINE BELOW   # 
+
+04A2 ; 041D 0329 ;     SA      # ( Ң → Н̩ ) CYRILLIC CAPITAL LETTER EN WITH DESCENDER → CYRILLIC CAPITAL LETTER EN, COMBINING VERTICAL LINE BELOW       # 
+
+04CA ; 043D 0321 ;     SA      # ( ӊ → н̡ ) CYRILLIC SMALL LETTER EN WITH TAIL → CYRILLIC SMALL LETTER EN, COMBINING PALATALIZED HOOK BELOW     # 
+04C8 ; 043D 0321 ;     SA      # ( ӈ → н̡ ) CYRILLIC SMALL LETTER EN WITH HOOK → CYRILLIC SMALL LETTER EN, COMBINING PALATALIZED HOOK BELOW     # 
+
+04C9 ; 041D 0321 ;     SA      # ( Ӊ → Н̡ ) CYRILLIC CAPITAL LETTER EN WITH TAIL → CYRILLIC CAPITAL LETTER EN, COMBINING PALATALIZED HOOK BELOW # 
+04C7 ; 041D 0321 ;     SA      # ( Ӈ → Н̡ ) CYRILLIC CAPITAL LETTER EN WITH HOOK → CYRILLIC CAPITAL LETTER EN, COMBINING PALATALIZED HOOK BELOW # 
+
+04E9 ; 043E 0335 ;     SA      # ( ө → о̵ ) CYRILLIC SMALL LETTER BARRED O → CYRILLIC SMALL LETTER O, COMBINING SHORT STROKE OVERLAY    # 
+0473 ; 043E 0335 ;     SA      # ( ѳ → о̵ ) CYRILLIC SMALL LETTER FITA → CYRILLIC SMALL LETTER O, COMBINING SHORT STROKE OVERLAY        # 
+
+04E8 ; 041E 0335 ;     SA      # ( Ө → О̵ ) CYRILLIC CAPITAL LETTER BARRED O → CYRILLIC CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY        # →Ѳ→
+0472 ; 041E 0335 ;     SA      # ( Ѳ → О̵ ) CYRILLIC CAPITAL LETTER FITA → CYRILLIC CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY    # 
+
+04AB ; 0441 0321 ;     SA      # ( ҫ → с̡ ) CYRILLIC SMALL LETTER ES WITH DESCENDER → CYRILLIC SMALL LETTER ES, COMBINING PALATALIZED HOOK BELOW        # 
+
+04AA ; 0421 0321 ;     SA      # ( Ҫ → С̡ ) CYRILLIC CAPITAL LETTER ES WITH DESCENDER → CYRILLIC CAPITAL LETTER ES, COMBINING PALATALIZED HOOK BELOW    # 
+
+04AD ; 0442 0329 ;     SA      # ( ҭ → т̩ ) CYRILLIC SMALL LETTER TE WITH DESCENDER → CYRILLIC SMALL LETTER TE, COMBINING VERTICAL LINE BELOW   # 
+
+04AC ; 0422 0329 ;     SA      # ( Ҭ → Т̩ ) CYRILLIC CAPITAL LETTER TE WITH DESCENDER → CYRILLIC CAPITAL LETTER TE, COMBINING VERTICAL LINE BELOW       # 
+
+04AF ; 0443 ;  SA      # ( ү → у ) CYRILLIC SMALL LETTER STRAIGHT U → CYRILLIC SMALL LETTER U    # 
+
+04B1 ; 04AF 0335 ;     SA      # ( ұ → ү̵ ) CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE → CYRILLIC SMALL LETTER STRAIGHT U, COMBINING SHORT STROKE OVERLAY     # 
+
+04B0 ; 04AE 0335 ;     SA      # ( Ұ → Ү̵ ) CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE → CYRILLIC CAPITAL LETTER STRAIGHT U, COMBINING SHORT STROKE OVERLAY # 
+
+04B2 ; 0425 0329 ;     SA      # ( Ҳ → Х̩ ) CYRILLIC CAPITAL LETTER HA WITH DESCENDER → CYRILLIC CAPITAL LETTER HA, COMBINING VERTICAL LINE BELOW       # 
+
+045B ; 04BB 0335 ;     SA      # ( ћ → һ̵ ) CYRILLIC SMALL LETTER TSHE → CYRILLIC SMALL LETTER SHHA, COMBINING SHORT STROKE OVERLAY     # 
+
+047D ; 0461 0483 ;     SA      # ( ѽ → ѡ҃ ) CYRILLIC SMALL LETTER OMEGA WITH TITLO → CYRILLIC SMALL LETTER OMEGA, COMBINING CYRILLIC TITLO      # 
+
+047C ; 0460 0483 ;     SA      # ( Ѽ → Ѡ҃ ) CYRILLIC CAPITAL LETTER OMEGA WITH TITLO → CYRILLIC CAPITAL LETTER OMEGA, COMBINING CYRILLIC TITLO  # 
+
+04CC ; 04B7 ;  SA      # ( ӌ → ҷ ) CYRILLIC SMALL LETTER KHAKASSIAN CHE → CYRILLIC SMALL LETTER CHE WITH DESCENDER       # 
+
+04CB ; 04B6 ;  SA      # ( Ӌ → Ҷ ) CYRILLIC CAPITAL LETTER KHAKASSIAN CHE → CYRILLIC CAPITAL LETTER CHE WITH DESCENDER   # 
+
+04BF ; 04BD 0328 ;     SA      # ( ҿ → ҽ̨ ) CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER → CYRILLIC SMALL LETTER ABKHASIAN CHE, COMBINING OGONEK  # →ҽ̢→
+
+04BE ; 04BC 0328 ;     SA      # ( Ҿ → Ҽ̨ ) CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER → CYRILLIC CAPITAL LETTER ABKHASIAN CHE, COMBINING OGONEK      # 
+
+048D ; 042C 0335 ;     SA      # ( ҍ → Ь̵ ) CYRILLIC SMALL LETTER SEMISOFT SIGN → CYRILLIC CAPITAL LETTER SOFT SIGN, COMBINING SHORT STROKE OVERLAY     # →ѣ→
+048C ; 042C 0335 ;     SA      # ( Ҍ → Ь̵ ) CYRILLIC CAPITAL LETTER SEMISOFT SIGN → CYRILLIC CAPITAL LETTER SOFT SIGN, COMBINING SHORT STROKE OVERLAY   # →Ѣ→
+0463 ; 042C 0335 ;     SA      # ( ѣ → Ь̵ ) CYRILLIC SMALL LETTER YAT → CYRILLIC CAPITAL LETTER SOFT SIGN, COMBINING SHORT STROKE OVERLAY       # 
+0462 ; 042C 0335 ;     SA      # ( Ѣ → Ь̵ ) CYRILLIC CAPITAL LETTER YAT → CYRILLIC CAPITAL LETTER SOFT SIGN, COMBINING SHORT STROKE OVERLAY     # 
+
+042B ; 042C 0406 ;     SA      # ( Ы → ЬІ ) CYRILLIC CAPITAL LETTER YERU → CYRILLIC CAPITAL LETTER SOFT SIGN, CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I  # 
+
+2108 ; 042D ;  SA      #* ( ℈ → Э ) SCRUPLE → CYRILLIC CAPITAL LETTER E # 
+
+0461 ; 051D ;  SA      # ( ѡ → ԝ ) CYRILLIC SMALL LETTER OMEGA → CYRILLIC SMALL LETTER WE        # →w→
+
+0566 ; 0563 ;  SA      # ( զ → գ ) ARMENIAN SMALL LETTER ZA → ARMENIAN SMALL LETTER GIM  # 
+
+0587 ; 0565 0582 ;     SA      # ( և → եւ ) ARMENIAN SMALL LIGATURE ECH YIWN → ARMENIAN SMALL LETTER ECH, ARMENIAN SMALL LETTER YIWN    # 
+
+FB14 ; 0574 0565 ;     SA      # ( ﬔ → մե ) ARMENIAN SMALL LIGATURE MEN ECH → ARMENIAN SMALL LETTER MEN, ARMENIAN SMALL LETTER ECH     # 
+
+FB15 ; 0574 056B ;     SA      # ( ﬕ → մի ) ARMENIAN SMALL LIGATURE MEN INI → ARMENIAN SMALL LETTER MEN, ARMENIAN SMALL LETTER INI     # 
+
+FB17 ; 0574 056D ;     SA      # ( ﬗ → մխ ) ARMENIAN SMALL LIGATURE MEN XEH → ARMENIAN SMALL LETTER MEN, ARMENIAN SMALL LETTER XEH     # 
+
+FB13 ; 0574 0576 ;     SA      # ( ﬓ → մն ) ARMENIAN SMALL LIGATURE MEN NOW → ARMENIAN SMALL LETTER MEN, ARMENIAN SMALL LETTER NOW     # 
+
+057C ; 0578 ;  SA      # ( ռ → ո ) ARMENIAN SMALL LETTER RA → ARMENIAN SMALL LETTER VO   # →n→
+
+FB16 ; 057E 0576 ;     SA      # ( ﬖ → վն ) ARMENIAN SMALL LIGATURE VEW NOW → ARMENIAN SMALL LETTER VEW, ARMENIAN SMALL LETTER NOW     # 
+
+02D3 ; 0559 ;  SA      #* ( ˓ → ՙ ) MODIFIER LETTER CENTRED LEFT HALF RING → ARMENIAN MODIFIER LETTER LEFT HALF RING     # 
+02BF ; 0559 ;  SA      # ( ʿ → ՙ ) MODIFIER LETTER LEFT HALF RING → ARMENIAN MODIFIER LETTER LEFT HALF RING      # 
+
+2135 ; 05D0 ;  SA      # ( ℵ → ‎א‎ ) ALEF SYMBOL → HEBREW LETTER ALEF       # 
+FB21 ; 05D0 ;  SA      # ( ‎ﬡ‎ → ‎א‎ ) HEBREW LETTER WIDE ALEF → HEBREW LETTER ALEF     # 
+
+FB2F ; FB2E ;  SA      # ( ‎אָ‎ → ‎אַ‎ ) HEBREW LETTER ALEF WITH QAMATS → HEBREW LETTER ALEF WITH PATAH  # 
+FB30 ; FB2E ;  SA      # ( ‎אּ‎ → ‎אַ‎ ) HEBREW LETTER ALEF WITH MAPIQ → HEBREW LETTER ALEF WITH PATAH   # 
+
+FB4F ; 05D0 05DC ;     SA      # ( ‎ﭏ‎ → ‎אל‎ ) HEBREW LIGATURE ALEF LAMED → HEBREW LETTER ALEF, HEBREW LETTER LAMED   # 
+
+2136 ; 05D1 ;  SA      # ( ℶ → ‎ב‎ ) BET SYMBOL → HEBREW LETTER BET # 
+
+2137 ; 05D2 ;  SA      # ( ℷ → ‎ג‎ ) GIMEL SYMBOL → HEBREW LETTER GIMEL     # 
+
+2138 ; 05D3 ;  SA      # ( ℸ → ‎ד‎ ) DALET SYMBOL → HEBREW LETTER DALET     # 
+FB22 ; 05D3 ;  SA      # ( ‎ﬢ‎ → ‎ד‎ ) HEBREW LETTER WIDE DALET → HEBREW LETTER DALET   # 
+
+FB23 ; 05D4 ;  SA      # ( ‎ﬣ‎ → ‎ה‎ ) HEBREW LETTER WIDE HE → HEBREW LETTER HE # 
+
+05F1 ; 05D5 05D9 ;     SA      # ( ‎ױ‎ → ‎וי‎ ) HEBREW LIGATURE YIDDISH VAV YOD → HEBREW LETTER VAV, HEBREW LETTER YOD  # 
+
+FB39 ; FB1D ;  SA      # ( ‎יּ‎ → ‎יִ‎ ) HEBREW LETTER YOD WITH DAGESH → HEBREW LETTER YOD WITH HIRIQ    # 
+
+FB24 ; 05DB ;  SA      # ( ‎ﬤ‎ → ‎כ‎ ) HEBREW LETTER WIDE KAF → HEBREW LETTER KAF       # 
+
+FB25 ; 05DC ;  SA      # ( ‎ﬥ‎ → ‎ל‎ ) HEBREW LETTER WIDE LAMED → HEBREW LETTER LAMED   # 
+
+FB26 ; 05DD ;  SA      # ( ‎ﬦ‎ → ‎ם‎ ) HEBREW LETTER WIDE FINAL MEM → HEBREW LETTER FINAL MEM   # 
+
+FB20 ; 05E2 ;  SA      # ( ‎ﬠ‎ → ‎ע‎ ) HEBREW LETTER ALTERNATIVE AYIN → HEBREW LETTER AYIN      # 
+
+FB27 ; 05E8 ;  SA      # ( ‎ﬧ‎ → ‎ר‎ ) HEBREW LETTER WIDE RESH → HEBREW LETTER RESH     # 
+
+FB2B ; FB2A ;  SA      # ( ‎שׂ‎ → ‎שׁ‎ ) HEBREW LETTER SHIN WITH SIN DOT → HEBREW LETTER SHIN WITH SHIN DOT      # 
+FB49 ; FB2A ;  SA      # ( ‎שּ‎ → ‎שׁ‎ ) HEBREW LETTER SHIN WITH DAGESH → HEBREW LETTER SHIN WITH SHIN DOT       # 
+
+FB2D ; FB2C ;  SA      # ( ‎שּׂ‎ → ‎שּׁ‎ ) HEBREW LETTER SHIN WITH DAGESH AND SIN DOT → HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT        # 
+
+FB28 ; 05EA ;  SA      # ( ‎ﬨ‎ → ‎ת‎ ) HEBREW LETTER WIDE TAV → HEBREW LETTER TAV       # 
+
+FE80 ; 0621 ;  SA      # ( ‎ﺀ‎ → ‎ء‎ ) ARABIC LETTER HAMZA ISOLATED FORM → ARABIC LETTER HAMZA  # 
+
+FE82 ; 0622 ;  SA      # ( ‎ﺂ‎ → ‎آ‎ ) ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM → ARABIC LETTER ALEF WITH MADDA ABOVE     # 
+FE81 ; 0622 ;  SA      # ( ‎ﺁ‎ → ‎آ‎ ) ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM → ARABIC LETTER ALEF WITH MADDA ABOVE  # 
+
+FB51 ; 0671 ;  SA      # ( ‎ﭑ‎ → ‎ٱ‎ ) ARABIC LETTER ALEF WASLA FINAL FORM → ARABIC LETTER ALEF WASLA   # 
+FB50 ; 0671 ;  SA      # ( ‎ﭐ‎ → ‎ٱ‎ ) ARABIC LETTER ALEF WASLA ISOLATED FORM → ARABIC LETTER ALEF WASLA        # 
+
+FE88 ; 0625 ;  SA      # ( ‎ﺈ‎ → ‎إ‎ ) ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM → ARABIC LETTER ALEF WITH HAMZA BELOW     # 
+FE87 ; 0625 ;  SA      # ( ‎ﺇ‎ → ‎إ‎ ) ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM → ARABIC LETTER ALEF WITH HAMZA BELOW  # 
+
+FE8E ; 0627 ;  SA      # ( ‎ﺎ‎ → ‎ا‎ ) ARABIC LETTER ALEF FINAL FORM → ARABIC LETTER ALEF       # 
+FE8D ; 0627 ;  SA      # ( ‎ﺍ‎ → ‎ا‎ ) ARABIC LETTER ALEF ISOLATED FORM → ARABIC LETTER ALEF    # 
+
+FD3C ; 0627 064B ;     SA      # ( ‎ﴼ‎ → ‎اً‎ ) ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM → ARABIC LETTER ALEF, ARABIC FATHATAN    # 
+FD3D ; 0627 064B ;     SA      # ( ‎ﴽ‎ → ‎اً‎ ) ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM → ARABIC LETTER ALEF, ARABIC FATHATAN # 
+
+0623 ; 0627 0674 ;     SA      # ( ‎أ‎ → ‎اٴ‎ ) ARABIC LETTER ALEF WITH HAMZA ABOVE → ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA      # →‎ٵ‎→
+FE84 ; 0627 0674 ;     SA      # ( ‎ﺄ‎ → ‎اٴ‎ ) ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM → ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA  # →‎أ‎→→‎ٵ‎→
+FE83 ; 0627 0674 ;     SA      # ( ‎ﺃ‎ → ‎اٴ‎ ) ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA       # →‎ٵ‎→
+0675 ; 0627 0674 ;     SA      # ( ‎ٵ‎ → ‎اٴ‎ ) ARABIC LETTER HIGH HAMZA ALEF → ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA    # 
+
+FDF3 ; 0627 0643 0628 0631 ;   SA      # ( ‎ﷳ‎ → ‎اكبر‎ ) ARABIC LIGATURE AKBAR ISOLATED FORM → ARABIC LETTER ALEF, ARABIC LETTER KAF, ARABIC LETTER BEH, ARABIC LETTER REH  # 
+
+FDF2 ; 0627 0644 0644 0647 ;   SA      # ( ‎ﷲ‎ → ‎الله‎ ) ARABIC LIGATURE ALLAH ISOLATED FORM → ARABIC LETTER ALEF, ARABIC LETTER LAM, ARABIC LETTER LAM, ARABIC LETTER HEH  # 
+
+FE91 ; 0628 ;  SA      # ( ‎ﺑ‎ → ‎ب‎ ) ARABIC LETTER BEH INITIAL FORM → ARABIC LETTER BEH       # 
+FE92 ; 0628 ;  SA      # ( ‎ﺒ‎ → ‎ب‎ ) ARABIC LETTER BEH MEDIAL FORM → ARABIC LETTER BEH        # 
+FE90 ; 0628 ;  SA      # ( ‎ﺐ‎ → ‎ب‎ ) ARABIC LETTER BEH FINAL FORM → ARABIC LETTER BEH # 
+FE8F ; 0628 ;  SA      # ( ‎ﺏ‎ → ‎ب‎ ) ARABIC LETTER BEH ISOLATED FORM → ARABIC LETTER BEH      # 
+0646 ; 0628 ;  SA      # ( ‎ن‎ → ‎ب‎ ) ARABIC LETTER NOON → ARABIC LETTER BEH    # →‎ﻨ‎→→‎ﺒ‎→
+FEE7 ; 0628 ;  SA      # ( ‎ﻧ‎ → ‎ب‎ ) ARABIC LETTER NOON INITIAL FORM → ARABIC LETTER BEH      # →‎ﺒ‎→
+FEE8 ; 0628 ;  SA      # ( ‎ﻨ‎ → ‎ب‎ ) ARABIC LETTER NOON MEDIAL FORM → ARABIC LETTER BEH       # →‎ﺒ‎→
+FEE6 ; 0628 ;  SA      # ( ‎ﻦ‎ → ‎ب‎ ) ARABIC LETTER NOON FINAL FORM → ARABIC LETTER BEH        # →‎ن‎→→‎ﻨ‎→→‎ﺒ‎→
+FEE5 ; 0628 ;  SA      # ( ‎ﻥ‎ → ‎ب‎ ) ARABIC LETTER NOON ISOLATED FORM → ARABIC LETTER BEH     # →‎ن‎→→‎ﻨ‎→→‎ﺒ‎→
+
+FC6D ; 0628 0628 ;     SA      # ( ‎ﱭ‎ → ‎بب‎ ) ARABIC LIGATURE BEH WITH NOON FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER BEH        # →‎بن‎→
+FC8D ; 0628 0628 ;     SA      # ( ‎ﲍ‎ → ‎بب‎ ) ARABIC LIGATURE NOON WITH NOON FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER BEH       # →‎نن‎→
+
+FC9C ; 0628 062C ;     SA      # ( ‎ﲜ‎ → ‎بج‎ ) ARABIC LIGATURE BEH WITH JEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM     # 
+FC05 ; 0628 062C ;     SA      # ( ‎ﰅ‎ → ‎بج‎ ) ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM    # 
+FC9E ; 0628 062C ;     SA      # ( ‎ﲞ‎ → ‎بج‎ ) ARABIC LIGATURE BEH WITH KHAH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM     # →‎بخ‎→→‎ﰇ‎→→‎ﰅ‎→
+FC07 ; 0628 062C ;     SA      # ( ‎ﰇ‎ → ‎بج‎ ) ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM    # →‎ﰅ‎→
+FCD2 ; 0628 062C ;     SA      # ( ‎ﳒ‎ → ‎بج‎ ) ARABIC LIGATURE NOON WITH JEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM    # →‎ﲞ‎→→‎بخ‎→→‎ﰇ‎→→‎ﰅ‎→
+FC4B ; 0628 062C ;     SA      # ( ‎ﱋ‎ → ‎بج‎ ) ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM   # →‎نج‎→→‎ﳒ‎→→‎ﲞ‎→→‎بخ‎→→‎ﰇ‎→→‎ﰅ‎→
+FCD4 ; 0628 062C ;     SA      # ( ‎ﳔ‎ → ‎بج‎ ) ARABIC LIGATURE NOON WITH KHAH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM    # →‎نخ‎→→‎ﱍ‎→→‎ﱋ‎→→‎نج‎→→‎ﳒ‎→→‎ﲞ‎→→‎بخ‎→→‎ﰇ‎→→‎ﰅ‎→
+FC4D ; 0628 062C ;     SA      # ( ‎ﱍ‎ → ‎بج‎ ) ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM   # →‎ﱋ‎→→‎نج‎→→‎ﳒ‎→→‎ﲞ‎→→‎بخ‎→→‎ﰇ‎→→‎ﰅ‎→
+
+FDB8 ; 0628 062C 062D ;        SA      # ( ‎ﶸ‎ → ‎بجح‎ ) ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER HAH      # →‎نجح‎→
+FDBD ; 0628 062C 062D ;        SA      # ( ‎ﶽ‎ → ‎بجح‎ ) ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER HAH        # →‎نجح‎→
+
+FD98 ; 0628 062C 0645 ;        SA      # ( ‎ﶘ‎ → ‎بجم‎ ) ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM    # →‎نجم‎→
+FD97 ; 0628 062C 0645 ;        SA      # ( ‎ﶗ‎ → ‎بجم‎ ) ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM      # →‎نجم‎→
+
+FD9E ; 0628 062C 0649 ;        SA      # ( ‎ﶞ‎ → ‎بجى‎ ) ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA        # →‎بخي‎→
+FD99 ; 0628 062C 0649 ;        SA      # ( ‎ﶙ‎ → ‎بجى‎ ) ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎نجى‎→
+FDC7 ; 0628 062C 0649 ;        SA      # ( ‎ﷇ‎ → ‎بجى‎ ) ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA       # →‎نجي‎→
+
+FC9D ; 0628 062D ;     SA      # ( ‎ﲝ‎ → ‎بح‎ ) ARABIC LIGATURE BEH WITH HAH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH       # 
+FC06 ; 0628 062D ;     SA      # ( ‎ﰆ‎ → ‎بح‎ ) ARABIC LIGATURE BEH WITH HAH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER HAH      # 
+FCD3 ; 0628 062D ;     SA      # ( ‎ﳓ‎ → ‎بح‎ ) ARABIC LIGATURE NOON WITH HAH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH      # →‎نح‎→
+FC4C ; 0628 062D ;     SA      # ( ‎ﱌ‎ → ‎بح‎ ) ARABIC LIGATURE NOON WITH HAH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER HAH     # →‎نح‎→
+
+FD95 ; 0628 062D 0645 ;        SA      # ( ‎ﶕ‎ → ‎بحم‎ ) ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH, ARABIC LETTER MEEM      # →‎نحم‎→
+
+FDC2 ; 0628 062D 0649 ;        SA      # ( ‎ﷂ‎ → ‎بحى‎ ) ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA  # →‎بحي‎→
+FD96 ; 0628 062D 0649 ;        SA      # ( ‎ﶖ‎ → ‎بحى‎ ) ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA        # →‎نحى‎→
+FDB3 ; 0628 062D 0649 ;        SA      # ( ‎ﶳ‎ → ‎بحى‎ ) ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA # →‎نحي‎→
+
+FC6A ; 0628 0631 ;     SA      # ( ‎ﱪ‎ → ‎بر‎ ) ARABIC LIGATURE BEH WITH REH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER REH # 
+FC8A ; 0628 0631 ;     SA      # ( ‎ﲊ‎ → ‎بر‎ ) ARABIC LIGATURE NOON WITH REH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER REH        # →‎نر‎→
+
+FC6B ; 0628 0632 ;     SA      # ( ‎ﱫ‎ → ‎بز‎ ) ARABIC LIGATURE BEH WITH ZAIN FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ZAIN       # 
+FC8B ; 0628 0632 ;     SA      # ( ‎ﲋ‎ → ‎بز‎ ) ARABIC LIGATURE NOON WITH ZAIN FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ZAIN      # →‎نز‎→
+
+FC9F ; 0628 0645 ;     SA      # ( ‎ﲟ‎ → ‎بم‎ ) ARABIC LIGATURE BEH WITH MEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM     # 
+FCE1 ; 0628 0645 ;     SA      # ( ‎ﳡ‎ → ‎بم‎ ) ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM      # 
+FC6C ; 0628 0645 ;     SA      # ( ‎ﱬ‎ → ‎بم‎ ) ARABIC LIGATURE BEH WITH MEEM FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM       # 
+FC08 ; 0628 0645 ;     SA      # ( ‎ﰈ‎ → ‎بم‎ ) ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM    # 
+FCD5 ; 0628 0645 ;     SA      # ( ‎ﳕ‎ → ‎بم‎ ) ARABIC LIGATURE NOON WITH MEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM    # →‎نم‎→
+FCEE ; 0628 0645 ;     SA      # ( ‎ﳮ‎ → ‎بم‎ ) ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM     # →‎نم‎→
+FC8C ; 0628 0645 ;     SA      # ( ‎ﲌ‎ → ‎بم‎ ) ARABIC LIGATURE NOON WITH MEEM FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM      # →‎نم‎→
+FC4E ; 0628 0645 ;     SA      # ( ‎ﱎ‎ → ‎بم‎ ) ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM   # →‎نم‎→
+
+FD9B ; 0628 0645 0649 ;        SA      # ( ‎ﶛ‎ → ‎بمى‎ ) ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA      # →‎نمى‎→
+FD9A ; 0628 0645 0649 ;        SA      # ( ‎ﶚ‎ → ‎بمى‎ ) ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA       # →‎نمي‎→
+
+FCA0 ; 0628 0647 ;     SA      # ( ‎ﲠ‎ → ‎به‎ ) ARABIC LIGATURE BEH WITH HEH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HEH       # 
+FCE2 ; 0628 0647 ;     SA      # ( ‎ﳢ‎ → ‎به‎ ) ARABIC LIGATURE BEH WITH HEH MEDIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HEH        # 
+FCD6 ; 0628 0647 ;     SA      # ( ‎ﳖ‎ → ‎به‎ ) ARABIC LIGATURE NOON WITH HEH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HEH      # →‎نه‎→
+FCEF ; 0628 0647 ;     SA      # ( ‎ﳯ‎ → ‎به‎ ) ARABIC LIGATURE NOON WITH HEH MEDIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HEH       # →‎نه‎→
+
+FC6E ; 0628 0649 ;     SA      # ( ‎ﱮ‎ → ‎بى‎ ) ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA       # 
+FC09 ; 0628 0649 ;     SA      # ( ‎ﰉ‎ → ‎بى‎ ) ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA    # 
+FC6F ; 0628 0649 ;     SA      # ( ‎ﱯ‎ → ‎بى‎ ) ARABIC LIGATURE BEH WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA        # →‎بي‎→
+FC0A ; 0628 0649 ;     SA      # ( ‎ﰊ‎ → ‎بى‎ ) ARABIC LIGATURE BEH WITH YEH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA     # →‎بي‎→
+FC8E ; 0628 0649 ;     SA      # ( ‎ﲎ‎ → ‎بى‎ ) ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA      # →‎نى‎→
+FC4F ; 0628 0649 ;     SA      # ( ‎ﱏ‎ → ‎بى‎ ) ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA   # →‎نى‎→
+FC8F ; 0628 0649 ;     SA      # ( ‎ﲏ‎ → ‎بى‎ ) ARABIC LIGATURE NOON WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA       # →‎ني‎→
+FC50 ; 0628 0649 ;     SA      # ( ‎ﱐ‎ → ‎بى‎ ) ARABIC LIGATURE NOON WITH YEH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA    # →‎ني‎→
+
+FB58 ; 067E ;  SA      # ( ‎ﭘ‎ → ‎پ‎ ) ARABIC LETTER PEH INITIAL FORM → ARABIC LETTER PEH       # 
+FB59 ; 067E ;  SA      # ( ‎ﭙ‎ → ‎پ‎ ) ARABIC LETTER PEH MEDIAL FORM → ARABIC LETTER PEH        # 
+FB57 ; 067E ;  SA      # ( ‎ﭗ‎ → ‎پ‎ ) ARABIC LETTER PEH FINAL FORM → ARABIC LETTER PEH # 
+FB56 ; 067E ;  SA      # ( ‎ﭖ‎ → ‎پ‎ ) ARABIC LETTER PEH ISOLATED FORM → ARABIC LETTER PEH      # 
+
+FE94 ; 0629 ;  SA      # ( ‎ﺔ‎ → ‎ة‎ ) ARABIC LETTER TEH MARBUTA FINAL FORM → ARABIC LETTER TEH MARBUTA # 
+FE93 ; 0629 ;  SA      # ( ‎ﺓ‎ → ‎ة‎ ) ARABIC LETTER TEH MARBUTA ISOLATED FORM → ARABIC LETTER TEH MARBUTA      # 
+06C3 ; 0629 ;  SA      # ( ‎ۃ‎ → ‎ة‎ ) ARABIC LETTER TEH MARBUTA GOAL → ARABIC LETTER TEH MARBUTA        # →ö→
+
+FE97 ; 062A ;  SA      # ( ‎ﺗ‎ → ‎ت‎ ) ARABIC LETTER TEH INITIAL FORM → ARABIC LETTER TEH       # 
+FE98 ; 062A ;  SA      # ( ‎ﺘ‎ → ‎ت‎ ) ARABIC LETTER TEH MEDIAL FORM → ARABIC LETTER TEH        # 
+FE96 ; 062A ;  SA      # ( ‎ﺖ‎ → ‎ت‎ ) ARABIC LETTER TEH FINAL FORM → ARABIC LETTER TEH # 
+FE95 ; 062A ;  SA      # ( ‎ﺕ‎ → ‎ت‎ ) ARABIC LETTER TEH ISOLATED FORM → ARABIC LETTER TEH      # 
+
+FC73 ; 062A 0628 ;     SA      # ( ‎ﱳ‎ → ‎تب‎ ) ARABIC LIGATURE TEH WITH NOON FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER BEH        # →‎تن‎→
+
+FCA1 ; 062A 062C ;     SA      # ( ‎ﲡ‎ → ‎تج‎ ) ARABIC LIGATURE TEH WITH JEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM     # 
+FC0B ; 062A 062C ;     SA      # ( ‎ﰋ‎ → ‎تج‎ ) ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM    # 
+FCA3 ; 062A 062C ;     SA      # ( ‎ﲣ‎ → ‎تج‎ ) ARABIC LIGATURE TEH WITH KHAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM     # →‎تخ‎→→‎ﰍ‎→→‎ﰋ‎→
+FC0D ; 062A 062C ;     SA      # ( ‎ﰍ‎ → ‎تج‎ ) ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM    # →‎ﰋ‎→
+FCDA ; 062A 062C ;     SA      # ( ‎ﳚ‎ → ‎تج‎ ) ARABIC LIGATURE YEH WITH JEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM     # →‎ﲡ‎→
+FC55 ; 062A 062C ;     SA      # ( ‎ﱕ‎ → ‎تج‎ ) ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM    # →‎يج‎→→‎ﳚ‎→→‎ﲡ‎→
+FCDC ; 062A 062C ;     SA      # ( ‎ﳜ‎ → ‎تج‎ ) ARABIC LIGATURE YEH WITH KHAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM     # →‎ﲣ‎→→‎تخ‎→→‎ﰍ‎→→‎ﰋ‎→
+FC57 ; 062A 062C ;     SA      # ( ‎ﱗ‎ → ‎تج‎ ) ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM    # →‎ﱕ‎→→‎يج‎→→‎ﳚ‎→→‎ﲡ‎→
+
+FD50 ; 062A 062C 0645 ;        SA      # ( ‎ﵐ‎ → ‎تجم‎ ) ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # 
+FD54 ; 062A 062C 0645 ;        SA      # ( ‎ﵔ‎ → ‎تجم‎ ) ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # →‎تخم‎→
+
+FDA0 ; 062A 062C 0649 ;        SA      # ( ‎ﶠ‎ → ‎تجى‎ ) ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA       # 
+FD9F ; 062A 062C 0649 ;        SA      # ( ‎ﶟ‎ → ‎تجى‎ ) ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA        # →‎تجي‎→
+FDA2 ; 062A 062C 0649 ;        SA      # ( ‎ﶢ‎ → ‎تجى‎ ) ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA       # →‎تخى‎→
+FDA1 ; 062A 062C 0649 ;        SA      # ( ‎ﶡ‎ → ‎تجى‎ ) ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA        # →‎تخي‎→
+
+FCA2 ; 062A 062D ;     SA      # ( ‎ﲢ‎ → ‎تح‎ ) ARABIC LIGATURE TEH WITH HAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HAH       # 
+FC0C ; 062A 062D ;     SA      # ( ‎ﰌ‎ → ‎تح‎ ) ARABIC LIGATURE TEH WITH HAH ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER HAH      # 
+FCDB ; 062A 062D ;     SA      # ( ‎ﳛ‎ → ‎تح‎ ) ARABIC LIGATURE YEH WITH HAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HAH       # →‎ﲢ‎→
+FC56 ; 062A 062D ;     SA      # ( ‎ﱖ‎ → ‎تح‎ ) ARABIC LIGATURE YEH WITH HAH ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER HAH      # →‎يح‎→→‎ﳛ‎→→‎ﲢ‎→
+
+FD52 ; 062A 062D 062C ;        SA      # ( ‎ﵒ‎ → ‎تحج‎ ) ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HAH, ARABIC LETTER JEEM       # 
+FD51 ; 062A 062D 062C ;        SA      # ( ‎ﵑ‎ → ‎تحج‎ ) ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER HAH, ARABIC LETTER JEEM # 
+
+FD53 ; 062A 062D 0645 ;        SA      # ( ‎ﵓ‎ → ‎تحم‎ ) ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HAH, ARABIC LETTER MEEM       # 
+
+FC70 ; 062A 0631 ;     SA      # ( ‎ﱰ‎ → ‎تر‎ ) ARABIC LIGATURE TEH WITH REH FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER REH # 
+
+FC71 ; 062A 0632 ;     SA      # ( ‎ﱱ‎ → ‎تز‎ ) ARABIC LIGATURE TEH WITH ZAIN FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER ZAIN       # 
+
+FCA4 ; 062A 0645 ;     SA      # ( ‎ﲤ‎ → ‎تم‎ ) ARABIC LIGATURE TEH WITH MEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM     # 
+FCE3 ; 062A 0645 ;     SA      # ( ‎ﳣ‎ → ‎تم‎ ) ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM      # 
+FC72 ; 062A 0645 ;     SA      # ( ‎ﱲ‎ → ‎تم‎ ) ARABIC LIGATURE TEH WITH MEEM FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM       # 
+FC0E ; 062A 0645 ;     SA      # ( ‎ﰎ‎ → ‎تم‎ ) ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM    # 
+
+FD55 ; 062A 0645 062C ;        SA      # ( ‎ﵕ‎ → ‎تمج‎ ) ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM, ARABIC LETTER JEEM     # 
+FD57 ; 062A 0645 062C ;        SA      # ( ‎ﵗ‎ → ‎تمج‎ ) ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM, ARABIC LETTER JEEM     # →‎تمخ‎→
+
+FD56 ; 062A 0645 062D ;        SA      # ( ‎ﵖ‎ → ‎تمح‎ ) ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+
+FDA4 ; 062A 0645 0649 ;        SA      # ( ‎ﶤ‎ → ‎تمى‎ ) ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA       # 
+FDA3 ; 062A 0645 0649 ;        SA      # ( ‎ﶣ‎ → ‎تمى‎ ) ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎تمي‎→
+
+FCA5 ; 062A 0647 ;     SA      # ( ‎ﲥ‎ → ‎ته‎ ) ARABIC LIGATURE TEH WITH HEH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HEH       # 
+FCE4 ; 062A 0647 ;     SA      # ( ‎ﳤ‎ → ‎ته‎ ) ARABIC LIGATURE TEH WITH HEH MEDIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HEH        # 
+
+FC74 ; 062A 0649 ;     SA      # ( ‎ﱴ‎ → ‎تى‎ ) ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER ALEF MAKSURA       # 
+FC0F ; 062A 0649 ;     SA      # ( ‎ﰏ‎ → ‎تى‎ ) ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER ALEF MAKSURA    # 
+FC75 ; 062A 0649 ;     SA      # ( ‎ﱵ‎ → ‎تى‎ ) ARABIC LIGATURE TEH WITH YEH FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER ALEF MAKSURA        # →‎تي‎→
+FC10 ; 062A 0649 ;     SA      # ( ‎ﰐ‎ → ‎تى‎ ) ARABIC LIGATURE TEH WITH YEH ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER ALEF MAKSURA     # →‎تي‎→
+
+FE9B ; 062B ;  SA      # ( ‎ﺛ‎ → ‎ث‎ ) ARABIC LETTER THEH INITIAL FORM → ARABIC LETTER THEH     # 
+FE9C ; 062B ;  SA      # ( ‎ﺜ‎ → ‎ث‎ ) ARABIC LETTER THEH MEDIAL FORM → ARABIC LETTER THEH      # 
+FE9A ; 062B ;  SA      # ( ‎ﺚ‎ → ‎ث‎ ) ARABIC LETTER THEH FINAL FORM → ARABIC LETTER THEH       # 
+FE99 ; 062B ;  SA      # ( ‎ﺙ‎ → ‎ث‎ ) ARABIC LETTER THEH ISOLATED FORM → ARABIC LETTER THEH    # 
+
+FC79 ; 062B 0628 ;     SA      # ( ‎ﱹ‎ → ‎ثب‎ ) ARABIC LIGATURE THEH WITH NOON FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER BEH      # →‎ثن‎→
+
+FC11 ; 062B 062C ;     SA      # ( ‎ﰑ‎ → ‎ثج‎ ) ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM → ARABIC LETTER THEH, ARABIC LETTER JEEM  # 
+
+FC76 ; 062B 0631 ;     SA      # ( ‎ﱶ‎ → ‎ثر‎ ) ARABIC LIGATURE THEH WITH REH FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER REH       # 
+
+FC77 ; 062B 0632 ;     SA      # ( ‎ﱷ‎ → ‎ثز‎ ) ARABIC LIGATURE THEH WITH ZAIN FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER ZAIN     # 
+
+FCA6 ; 062B 0645 ;     SA      # ( ‎ﲦ‎ → ‎ثم‎ ) ARABIC LIGATURE THEH WITH MEEM INITIAL FORM → ARABIC LETTER THEH, ARABIC LETTER MEEM   # 
+FCE5 ; 062B 0645 ;     SA      # ( ‎ﳥ‎ → ‎ثم‎ ) ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM → ARABIC LETTER THEH, ARABIC LETTER MEEM    # 
+FC78 ; 062B 0645 ;     SA      # ( ‎ﱸ‎ → ‎ثم‎ ) ARABIC LIGATURE THEH WITH MEEM FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER MEEM     # 
+FC12 ; 062B 0645 ;     SA      # ( ‎ﰒ‎ → ‎ثم‎ ) ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM → ARABIC LETTER THEH, ARABIC LETTER MEEM  # 
+
+FCE6 ; 062B 0647 ;     SA      # ( ‎ﳦ‎ → ‎ثه‎ ) ARABIC LIGATURE THEH WITH HEH MEDIAL FORM → ARABIC LETTER THEH, ARABIC LETTER HEH      # 
+
+FC7A ; 062B 0649 ;     SA      # ( ‎ﱺ‎ → ‎ثى‎ ) ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER ALEF MAKSURA     # 
+FC13 ; 062B 0649 ;     SA      # ( ‎ﰓ‎ → ‎ثى‎ ) ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER THEH, ARABIC LETTER ALEF MAKSURA  # 
+FC7B ; 062B 0649 ;     SA      # ( ‎ﱻ‎ → ‎ثى‎ ) ARABIC LIGATURE THEH WITH YEH FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER ALEF MAKSURA      # →‎ثي‎→
+FC14 ; 062B 0649 ;     SA      # ( ‎ﰔ‎ → ‎ثى‎ ) ARABIC LIGATURE THEH WITH YEH ISOLATED FORM → ARABIC LETTER THEH, ARABIC LETTER ALEF MAKSURA   # →‎ثي‎→
+
+FB68 ; 0679 ;  SA      # ( ‎ﭨ‎ → ‎ٹ‎ ) ARABIC LETTER TTEH INITIAL FORM → ARABIC LETTER TTEH     # 
+FB69 ; 0679 ;  SA      # ( ‎ﭩ‎ → ‎ٹ‎ ) ARABIC LETTER TTEH MEDIAL FORM → ARABIC LETTER TTEH      # 
+FB67 ; 0679 ;  SA      # ( ‎ﭧ‎ → ‎ٹ‎ ) ARABIC LETTER TTEH FINAL FORM → ARABIC LETTER TTEH       # 
+FB66 ; 0679 ;  SA      # ( ‎ﭦ‎ → ‎ٹ‎ ) ARABIC LETTER TTEH ISOLATED FORM → ARABIC LETTER TTEH    # 
+06BB ; 0679 ;  SA      # ( ‎ڻ‎ → ‎ٹ‎ ) ARABIC LETTER RNOON → ARABIC LETTER TTEH  # →‎ﮢ‎→→‎ﭩ‎→
+FBA2 ; 0679 ;  SA      # ( ‎ﮢ‎ → ‎ٹ‎ ) ARABIC LETTER RNOON INITIAL FORM → ARABIC LETTER TTEH    # →‎ﭩ‎→
+FBA3 ; 0679 ;  SA      # ( ‎ﮣ‎ → ‎ٹ‎ ) ARABIC LETTER RNOON MEDIAL FORM → ARABIC LETTER TTEH     # →‎ﭩ‎→
+FBA1 ; 0679 ;  SA      # ( ‎ﮡ‎ → ‎ٹ‎ ) ARABIC LETTER RNOON FINAL FORM → ARABIC LETTER TTEH      # →‎ڻ‎→→‎ﮢ‎→→‎ﭩ‎→
+FBA0 ; 0679 ;  SA      # ( ‎ﮠ‎ → ‎ٹ‎ ) ARABIC LETTER RNOON ISOLATED FORM → ARABIC LETTER TTEH   # →‎ڻ‎→→‎ﮢ‎→→‎ﭩ‎→
+
+067B ; 067A ;  SA      # ( ‎ٻ‎ → ‎ٺ‎ ) ARABIC LETTER BEEH → ARABIC LETTER TTEHEH # →‎ﭞ‎→
+FB54 ; 067A ;  SA      # ( ‎ﭔ‎ → ‎ٺ‎ ) ARABIC LETTER BEEH INITIAL FORM → ARABIC LETTER TTEHEH   # →‎ﭡ‎→
+FB55 ; 067A ;  SA      # ( ‎ﭕ‎ → ‎ٺ‎ ) ARABIC LETTER BEEH MEDIAL FORM → ARABIC LETTER TTEHEH    # →‎ﭡ‎→
+FB53 ; 067A ;  SA      # ( ‎ﭓ‎ → ‎ٺ‎ ) ARABIC LETTER BEEH FINAL FORM → ARABIC LETTER TTEHEH     # 
+FB52 ; 067A ;  SA      # ( ‎ﭒ‎ → ‎ٺ‎ ) ARABIC LETTER BEEH ISOLATED FORM → ARABIC LETTER TTEHEH  # 
+FB60 ; 067A ;  SA      # ( ‎ﭠ‎ → ‎ٺ‎ ) ARABIC LETTER TTEHEH INITIAL FORM → ARABIC LETTER TTEHEH # 
+FB61 ; 067A ;  SA      # ( ‎ﭡ‎ → ‎ٺ‎ ) ARABIC LETTER TTEHEH MEDIAL FORM → ARABIC LETTER TTEHEH  # 
+FB5F ; 067A ;  SA      # ( ‎ﭟ‎ → ‎ٺ‎ ) ARABIC LETTER TTEHEH FINAL FORM → ARABIC LETTER TTEHEH   # 
+FB5E ; 067A ;  SA      # ( ‎ﭞ‎ → ‎ٺ‎ ) ARABIC LETTER TTEHEH ISOLATED FORM → ARABIC LETTER TTEHEH        # 
+06D0 ; 067A ;  SA      # ( ‎ې‎ → ‎ٺ‎ ) ARABIC LETTER E → ARABIC LETTER TTEHEH    # →‎ﯦ‎→→‎ﭡ‎→
+FBE6 ; 067A ;  SA      # ( ‎ﯦ‎ → ‎ٺ‎ ) ARABIC LETTER E INITIAL FORM → ARABIC LETTER TTEHEH      # →‎ﭡ‎→
+FBE7 ; 067A ;  SA      # ( ‎ﯧ‎ → ‎ٺ‎ ) ARABIC LETTER E MEDIAL FORM → ARABIC LETTER TTEHEH       # →‎ﭡ‎→
+FBE5 ; 067A ;  SA      # ( ‎ﯥ‎ → ‎ٺ‎ ) ARABIC LETTER E FINAL FORM → ARABIC LETTER TTEHEH        # →‎ې‎→→‎ﯦ‎→→‎ﭡ‎→
+FBE4 ; 067A ;  SA      # ( ‎ﯤ‎ → ‎ٺ‎ ) ARABIC LETTER E ISOLATED FORM → ARABIC LETTER TTEHEH     # →‎ې‎→→‎ﯦ‎→→‎ﭡ‎→
+
+0680 ; 067F ;  SA      # ( ‎ڀ‎ → ‎ٿ‎ ) ARABIC LETTER BEHEH → ARABIC LETTER TEHEH # →‎ﭚ‎→
+FB5C ; 067F ;  SA      # ( ‎ﭜ‎ → ‎ٿ‎ ) ARABIC LETTER BEHEH INITIAL FORM → ARABIC LETTER TEHEH   # →‎ﭥ‎→
+FB5D ; 067F ;  SA      # ( ‎ﭝ‎ → ‎ٿ‎ ) ARABIC LETTER BEHEH MEDIAL FORM → ARABIC LETTER TEHEH    # →‎ﭥ‎→
+FB5B ; 067F ;  SA      # ( ‎ﭛ‎ → ‎ٿ‎ ) ARABIC LETTER BEHEH FINAL FORM → ARABIC LETTER TEHEH     # 
+FB5A ; 067F ;  SA      # ( ‎ﭚ‎ → ‎ٿ‎ ) ARABIC LETTER BEHEH ISOLATED FORM → ARABIC LETTER TEHEH  # 
+FB64 ; 067F ;  SA      # ( ‎ﭤ‎ → ‎ٿ‎ ) ARABIC LETTER TEHEH INITIAL FORM → ARABIC LETTER TEHEH   # 
+FB65 ; 067F ;  SA      # ( ‎ﭥ‎ → ‎ٿ‎ ) ARABIC LETTER TEHEH MEDIAL FORM → ARABIC LETTER TEHEH    # 
+FB63 ; 067F ;  SA      # ( ‎ﭣ‎ → ‎ٿ‎ ) ARABIC LETTER TEHEH FINAL FORM → ARABIC LETTER TEHEH     # 
+FB62 ; 067F ;  SA      # ( ‎ﭢ‎ → ‎ٿ‎ ) ARABIC LETTER TEHEH ISOLATED FORM → ARABIC LETTER TEHEH  # 
+
+FE9F ; 062C ;  SA      # ( ‎ﺟ‎ → ‎ج‎ ) ARABIC LETTER JEEM INITIAL FORM → ARABIC LETTER JEEM     # 
+FEA0 ; 062C ;  SA      # ( ‎ﺠ‎ → ‎ج‎ ) ARABIC LETTER JEEM MEDIAL FORM → ARABIC LETTER JEEM      # 
+FE9E ; 062C ;  SA      # ( ‎ﺞ‎ → ‎ج‎ ) ARABIC LETTER JEEM FINAL FORM → ARABIC LETTER JEEM       # 
+FE9D ; 062C ;  SA      # ( ‎ﺝ‎ → ‎ج‎ ) ARABIC LETTER JEEM ISOLATED FORM → ARABIC LETTER JEEM    # 
+062E ; 062C ;  SA      # ( ‎خ‎ → ‎ج‎ ) ARABIC LETTER KHAH → ARABIC LETTER JEEM   # 
+FEA7 ; 062C ;  SA      # ( ‎ﺧ‎ → ‎ج‎ ) ARABIC LETTER KHAH INITIAL FORM → ARABIC LETTER JEEM     # →‎خ‎→
+FEA8 ; 062C ;  SA      # ( ‎ﺨ‎ → ‎ج‎ ) ARABIC LETTER KHAH MEDIAL FORM → ARABIC LETTER JEEM      # →‎خ‎→
+FEA6 ; 062C ;  SA      # ( ‎ﺦ‎ → ‎ج‎ ) ARABIC LETTER KHAH FINAL FORM → ARABIC LETTER JEEM       # →‎خ‎→
+FEA5 ; 062C ;  SA      # ( ‎ﺥ‎ → ‎ج‎ ) ARABIC LETTER KHAH ISOLATED FORM → ARABIC LETTER JEEM    # 
+
+FCAB ; 062C 062C ;     SA      # ( ‎ﲫ‎ → ‎جج‎ ) ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM → ARABIC LETTER JEEM, ARABIC LETTER JEEM   # →‎خج‎→
+FC19 ; 062C 062C ;     SA      # ( ‎ﰙ‎ → ‎جج‎ ) ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER JEEM  # →‎خج‎→
+
+FCA7 ; 062C 062D ;     SA      # ( ‎ﲧ‎ → ‎جح‎ ) ARABIC LIGATURE JEEM WITH HAH INITIAL FORM → ARABIC LETTER JEEM, ARABIC LETTER HAH     # 
+FC15 ; 062C 062D ;     SA      # ( ‎ﰕ‎ → ‎جح‎ ) ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER HAH    # 
+FC1A ; 062C 062D ;     SA      # ( ‎ﰚ‎ → ‎جح‎ ) ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER HAH    # →‎ﰕ‎→
+
+FDA6 ; 062C 062D 0649 ;        SA      # ( ‎ﶦ‎ → ‎جحى‎ ) ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA       # 
+FDBE ; 062C 062D 0649 ;        SA      # ( ‎ﶾ‎ → ‎جحى‎ ) ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA        # →‎جحي‎→
+
+FDFB ; 062C 0644 0020 062C 0644 0627 0644 0647 ;       SA      #* ( ‎ﷻ‎ → ‎جل جلاله‎ ) ARABIC LIGATURE JALLAJALALOUHOU → ARABIC LETTER JEEM, ARABIC LETTER LAM, SPACE, ARABIC LETTER JEEM, ARABIC LETTER LAM, ARABIC LETTER ALEF, ARABIC LETTER LAM, ARABIC LETTER HEH    # 
+
+FCA8 ; 062C 0645 ;     SA      # ( ‎ﲨ‎ → ‎جم‎ ) ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM   # 
+FC16 ; 062C 0645 ;     SA      # ( ‎ﰖ‎ → ‎جم‎ ) ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM  # 
+FCAC ; 062C 0645 ;     SA      # ( ‎ﲬ‎ → ‎جم‎ ) ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM   # →‎ﲨ‎→
+FC1B ; 062C 0645 ;     SA      # ( ‎ﰛ‎ → ‎جم‎ ) ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM  # →‎ﰖ‎→
+
+FD59 ; 062C 0645 062D ;        SA      # ( ‎ﵙ‎ → ‎جمح‎ ) ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM, ARABIC LETTER HAH     # 
+FD58 ; 062C 0645 062D ;        SA      # ( ‎ﵘ‎ → ‎جمح‎ ) ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+
+FDA7 ; 062C 0645 0649 ;        SA      # ( ‎ﶧ‎ → ‎جمى‎ ) ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA     # 
+FDA5 ; 062C 0645 0649 ;        SA      # ( ‎ﶥ‎ → ‎جمى‎ ) ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA      # →‎جمي‎→
+
+FD1D ; 062C 0649 ;     SA      # ( ‎ﴝ‎ → ‎جى‎ ) ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA     # 
+FD01 ; 062C 0649 ;     SA      # ( ‎ﴁ‎ → ‎جى‎ ) ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA  # 
+FD1E ; 062C 0649 ;     SA      # ( ‎ﴞ‎ → ‎جى‎ ) ARABIC LIGATURE JEEM WITH YEH FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎جي‎→
+FD02 ; 062C 0649 ;     SA      # ( ‎ﴂ‎ → ‎جى‎ ) ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA   # →‎جي‎→
+FD1F ; 062C 0649 ;     SA      # ( ‎ﴟ‎ → ‎جى‎ ) ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA     # →‎خى‎→→‎ﴃ‎→→‎ﴁ‎→
+FD03 ; 062C 0649 ;     SA      # ( ‎ﴃ‎ → ‎جى‎ ) ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA  # →‎ﴁ‎→
+FD20 ; 062C 0649 ;     SA      # ( ‎ﴠ‎ → ‎جى‎ ) ARABIC LIGATURE KHAH WITH YEH FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎خي‎→→‎ﴄ‎→→‎ﴂ‎→→‎جي‎→
+FD04 ; 062C 0649 ;     SA      # ( ‎ﴄ‎ → ‎جى‎ ) ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA   # →‎ﴂ‎→→‎جي‎→
+
+FB78 ; 0683 ;  SA      # ( ‎ﭸ‎ → ‎ڃ‎ ) ARABIC LETTER NYEH INITIAL FORM → ARABIC LETTER NYEH     # 
+FB79 ; 0683 ;  SA      # ( ‎ﭹ‎ → ‎ڃ‎ ) ARABIC LETTER NYEH MEDIAL FORM → ARABIC LETTER NYEH      # 
+FB77 ; 0683 ;  SA      # ( ‎ﭷ‎ → ‎ڃ‎ ) ARABIC LETTER NYEH FINAL FORM → ARABIC LETTER NYEH       # 
+FB76 ; 0683 ;  SA      # ( ‎ﭶ‎ → ‎ڃ‎ ) ARABIC LETTER NYEH ISOLATED FORM → ARABIC LETTER NYEH    # 
+
+FB7C ; 0686 ;  SA      # ( ‎ﭼ‎ → ‎چ‎ ) ARABIC LETTER TCHEH INITIAL FORM → ARABIC LETTER TCHEH   # 
+FB7D ; 0686 ;  SA      # ( ‎ﭽ‎ → ‎چ‎ ) ARABIC LETTER TCHEH MEDIAL FORM → ARABIC LETTER TCHEH    # 
+FB7B ; 0686 ;  SA      # ( ‎ﭻ‎ → ‎چ‎ ) ARABIC LETTER TCHEH FINAL FORM → ARABIC LETTER TCHEH     # 
+FB7A ; 0686 ;  SA      # ( ‎ﭺ‎ → ‎چ‎ ) ARABIC LETTER TCHEH ISOLATED FORM → ARABIC LETTER TCHEH  # 
+
+FB80 ; 0687 ;  SA      # ( ‎ﮀ‎ → ‎ڇ‎ ) ARABIC LETTER TCHEHEH INITIAL FORM → ARABIC LETTER TCHEHEH       # 
+FB81 ; 0687 ;  SA      # ( ‎ﮁ‎ → ‎ڇ‎ ) ARABIC LETTER TCHEHEH MEDIAL FORM → ARABIC LETTER TCHEHEH        # 
+FB7F ; 0687 ;  SA      # ( ‎ﭿ‎ → ‎ڇ‎ ) ARABIC LETTER TCHEHEH FINAL FORM → ARABIC LETTER TCHEHEH # 
+FB7E ; 0687 ;  SA      # ( ‎ﭾ‎ → ‎ڇ‎ ) ARABIC LETTER TCHEHEH ISOLATED FORM → ARABIC LETTER TCHEHEH      # 
+
+FEA3 ; 062D ;  SA      # ( ‎ﺣ‎ → ‎ح‎ ) ARABIC LETTER HAH INITIAL FORM → ARABIC LETTER HAH       # 
+FEA4 ; 062D ;  SA      # ( ‎ﺤ‎ → ‎ح‎ ) ARABIC LETTER HAH MEDIAL FORM → ARABIC LETTER HAH        # 
+FEA2 ; 062D ;  SA      # ( ‎ﺢ‎ → ‎ح‎ ) ARABIC LETTER HAH FINAL FORM → ARABIC LETTER HAH # 
+FEA1 ; 062D ;  SA      # ( ‎ﺡ‎ → ‎ح‎ ) ARABIC LETTER HAH ISOLATED FORM → ARABIC LETTER HAH      # 
+
+FCA9 ; 062D 062C ;     SA      # ( ‎ﲩ‎ → ‎حج‎ ) ARABIC LIGATURE HAH WITH JEEM INITIAL FORM → ARABIC LETTER HAH, ARABIC LETTER JEEM     # 
+FC17 ; 062D 062C ;     SA      # ( ‎ﰗ‎ → ‎حج‎ ) ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM → ARABIC LETTER HAH, ARABIC LETTER JEEM    # 
+
+FDBF ; 062D 062C 0649 ;        SA      # ( ‎ﶿ‎ → ‎حجى‎ ) ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER HAH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA        # →‎حجي‎→
+
+FCAA ; 062D 0645 ;     SA      # ( ‎ﲪ‎ → ‎حم‎ ) ARABIC LIGATURE HAH WITH MEEM INITIAL FORM → ARABIC LETTER HAH, ARABIC LETTER MEEM     # 
+FC18 ; 062D 0645 ;     SA      # ( ‎ﰘ‎ → ‎حم‎ ) ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM → ARABIC LETTER HAH, ARABIC LETTER MEEM    # 
+
+FD5B ; 062D 0645 0649 ;        SA      # ( ‎ﵛ‎ → ‎حمى‎ ) ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER HAH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA       # 
+FD5A ; 062D 0645 0649 ;        SA      # ( ‎ﵚ‎ → ‎حمى‎ ) ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER HAH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎حمي‎→
+
+FD1B ; 062D 0649 ;     SA      # ( ‎ﴛ‎ → ‎حى‎ ) ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA       # 
+FCFF ; 062D 0649 ;     SA      # ( ‎ﳿ‎ → ‎حى‎ ) ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA    # 
+FD1C ; 062D 0649 ;     SA      # ( ‎ﴜ‎ → ‎حى‎ ) ARABIC LIGATURE HAH WITH YEH FINAL FORM → ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA        # →‎حي‎→
+FD00 ; 062D 0649 ;     SA      # ( ‎ﴀ‎ → ‎حى‎ ) ARABIC LIGATURE HAH WITH YEH ISOLATED FORM → ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA     # →‎حي‎→
+
+0684 ; 0682 ;  SA      # ( ‎ڄ‎ → ‎ڂ‎ ) ARABIC LETTER DYEH → ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE       # 
+FB74 ; 0682 ;  SA      # ( ‎ﭴ‎ → ‎ڂ‎ ) ARABIC LETTER DYEH INITIAL FORM → ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE # →‎ڄ‎→
+FB75 ; 0682 ;  SA      # ( ‎ﭵ‎ → ‎ڂ‎ ) ARABIC LETTER DYEH MEDIAL FORM → ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE  # →‎ڄ‎→
+FB73 ; 0682 ;  SA      # ( ‎ﭳ‎ → ‎ڂ‎ ) ARABIC LETTER DYEH FINAL FORM → ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE   # →‎ڄ‎→
+FB72 ; 0682 ;  SA      # ( ‎ﭲ‎ → ‎ڂ‎ ) ARABIC LETTER DYEH ISOLATED FORM → ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE        # 
+
+FEAA ; 062F ;  SA      # ( ‎ﺪ‎ → ‎د‎ ) ARABIC LETTER DAL FINAL FORM → ARABIC LETTER DAL # 
+FEA9 ; 062F ;  SA      # ( ‎ﺩ‎ → ‎د‎ ) ARABIC LETTER DAL ISOLATED FORM → ARABIC LETTER DAL      # 
+
+FEAC ; 0630 ;  SA      # ( ‎ﺬ‎ → ‎ذ‎ ) ARABIC LETTER THAL FINAL FORM → ARABIC LETTER THAL       # 
+FEAB ; 0630 ;  SA      # ( ‎ﺫ‎ → ‎ذ‎ ) ARABIC LETTER THAL ISOLATED FORM → ARABIC LETTER THAL    # 
+
+FC5B ; 0630 0670 ;     SA      # ( ‎ﱛ‎ → ‎ذٰ‎ ) ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM → ARABIC LETTER THAL, ARABIC LETTER SUPERSCRIPT ALEF  # 
+
+FB89 ; 0688 ;  SA      # ( ‎ﮉ‎ → ‎ڈ‎ ) ARABIC LETTER DDAL FINAL FORM → ARABIC LETTER DDAL       # 
+FB88 ; 0688 ;  SA      # ( ‎ﮈ‎ → ‎ڈ‎ ) ARABIC LETTER DDAL ISOLATED FORM → ARABIC LETTER DDAL    # 
+
+FB85 ; 068C ;  SA      # ( ‎ﮅ‎ → ‎ڌ‎ ) ARABIC LETTER DAHAL FINAL FORM → ARABIC LETTER DAHAL     # 
+FB84 ; 068C ;  SA      # ( ‎ﮄ‎ → ‎ڌ‎ ) ARABIC LETTER DAHAL ISOLATED FORM → ARABIC LETTER DAHAL  # 
+
+FB83 ; 068D ;  SA      # ( ‎ﮃ‎ → ‎ڍ‎ ) ARABIC LETTER DDAHAL FINAL FORM → ARABIC LETTER DDAHAL   # 
+FB82 ; 068D ;  SA      # ( ‎ﮂ‎ → ‎ڍ‎ ) ARABIC LETTER DDAHAL ISOLATED FORM → ARABIC LETTER DDAHAL        # 
+
+FB87 ; 068E ;  SA      # ( ‎ﮇ‎ → ‎ڎ‎ ) ARABIC LETTER DUL FINAL FORM → ARABIC LETTER DUL # 
+FB86 ; 068E ;  SA      # ( ‎ﮆ‎ → ‎ڎ‎ ) ARABIC LETTER DUL ISOLATED FORM → ARABIC LETTER DUL      # 
+
+FEAE ; 0631 ;  SA      # ( ‎ﺮ‎ → ‎ر‎ ) ARABIC LETTER REH FINAL FORM → ARABIC LETTER REH # 
+FEAD ; 0631 ;  SA      # ( ‎ﺭ‎ → ‎ر‎ ) ARABIC LETTER REH ISOLATED FORM → ARABIC LETTER REH      # 
+
+FC5C ; 0631 0670 ;     SA      # ( ‎ﱜ‎ → ‎رٰ‎ ) ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM → ARABIC LETTER REH, ARABIC LETTER SUPERSCRIPT ALEF    # 
+
+FDF6 ; 0631 0633 0648 0644 ;   SA      # ( ‎ﷶ‎ → ‎رسول‎ ) ARABIC LIGATURE RASOUL ISOLATED FORM → ARABIC LETTER REH, ARABIC LETTER SEEN, ARABIC LETTER WAW, ARABIC LETTER LAM # 
+
+FDFC ; 0631 0649 0627 0644 ;   SA      #* ( ‎﷼‎ → ‎رىال‎ ) RIAL SIGN → ARABIC LETTER REH, ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ALEF, ARABIC LETTER LAM  # →‎ریال‎→
+
+FEB0 ; 0632 ;  SA      # ( ‎ﺰ‎ → ‎ز‎ ) ARABIC LETTER ZAIN FINAL FORM → ARABIC LETTER ZAIN       # 
+FEAF ; 0632 ;  SA      # ( ‎ﺯ‎ → ‎ز‎ ) ARABIC LETTER ZAIN ISOLATED FORM → ARABIC LETTER ZAIN    # 
+0694 ; 0632 ;  SA      # ( ‎ڔ‎ → ‎ز‎ ) ARABIC LETTER REH WITH DOT BELOW → ARABIC LETTER ZAIN     # 
+
+FB8D ; 0691 ;  SA      # ( ‎ﮍ‎ → ‎ڑ‎ ) ARABIC LETTER RREH FINAL FORM → ARABIC LETTER RREH       # 
+FB8C ; 0691 ;  SA      # ( ‎ﮌ‎ → ‎ڑ‎ ) ARABIC LETTER RREH ISOLATED FORM → ARABIC LETTER RREH    # 
+
+FB8B ; 0698 ;  SA      # ( ‎ﮋ‎ → ‎ژ‎ ) ARABIC LETTER JEH FINAL FORM → ARABIC LETTER JEH # 
+FB8A ; 0698 ;  SA      # ( ‎ﮊ‎ → ‎ژ‎ ) ARABIC LETTER JEH ISOLATED FORM → ARABIC LETTER JEH      # 
+
+FEB3 ; 0633 ;  SA      # ( ‎ﺳ‎ → ‎س‎ ) ARABIC LETTER SEEN INITIAL FORM → ARABIC LETTER SEEN     # 
+FEB4 ; 0633 ;  SA      # ( ‎ﺴ‎ → ‎س‎ ) ARABIC LETTER SEEN MEDIAL FORM → ARABIC LETTER SEEN      # 
+FEB2 ; 0633 ;  SA      # ( ‎ﺲ‎ → ‎س‎ ) ARABIC LETTER SEEN FINAL FORM → ARABIC LETTER SEEN       # 
+FEB1 ; 0633 ;  SA      # ( ‎ﺱ‎ → ‎س‎ ) ARABIC LETTER SEEN ISOLATED FORM → ARABIC LETTER SEEN    # 
+
+FCAD ; 0633 062C ;     SA      # ( ‎ﲭ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM   # 
+FD34 ; 0633 062C ;     SA      # ( ‎ﴴ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM    # 
+FC1C ; 0633 062C ;     SA      # ( ‎ﰜ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM  # 
+FCAF ; 0633 062C ;     SA      # ( ‎ﲯ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM   # →‎سخ‎→→‎ﰞ‎→→‎ﰜ‎→
+FD36 ; 0633 062C ;     SA      # ( ‎ﴶ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM    # →‎سخ‎→→‎ﰞ‎→→‎ﰜ‎→
+FC1E ; 0633 062C ;     SA      # ( ‎ﰞ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM  # →‎ﰜ‎→
+
+FD5D ; 0633 062C 062D ;        SA      # ( ‎ﵝ‎ → ‎سجح‎ ) ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM, ARABIC LETTER HAH     # 
+
+FD5E ; 0633 062C 0649 ;        SA      # ( ‎ﵞ‎ → ‎سجى‎ ) ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA     # 
+FDA8 ; 0633 062C 0649 ;        SA      # ( ‎ﶨ‎ → ‎سجى‎ ) ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA     # →‎سخى‎→
+FDC6 ; 0633 062C 0649 ;        SA      # ( ‎ﷆ‎ → ‎سجى‎ ) ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎سخي‎→
+
+FCAE ; 0633 062D ;     SA      # ( ‎ﲮ‎ → ‎سح‎ ) ARABIC LIGATURE SEEN WITH HAH INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER HAH     # 
+FD35 ; 0633 062D ;     SA      # ( ‎ﴵ‎ → ‎سح‎ ) ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER HAH      # 
+FC1D ; 0633 062D ;     SA      # ( ‎ﰝ‎ → ‎سح‎ ) ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER HAH    # 
+
+FD5C ; 0633 062D 062C ;        SA      # ( ‎ﵜ‎ → ‎سحج‎ ) ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER HAH, ARABIC LETTER JEEM     # 
+
+FD2A ; 0633 0631 ;     SA      # ( ‎ﴪ‎ → ‎سر‎ ) ARABIC LIGATURE SEEN WITH REH FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER REH       # 
+FD0E ; 0633 0631 ;     SA      # ( ‎ﴎ‎ → ‎سر‎ ) ARABIC LIGATURE SEEN WITH REH ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER REH    # 
+
+FCB0 ; 0633 0645 ;     SA      # ( ‎ﲰ‎ → ‎سم‎ ) ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM   # 
+FCE7 ; 0633 0645 ;     SA      # ( ‎ﳧ‎ → ‎سم‎ ) ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM    # 
+FC1F ; 0633 0645 ;     SA      # ( ‎ﰟ‎ → ‎سم‎ ) ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM  # 
+
+FD61 ; 0633 0645 062C ;        SA      # ( ‎ﵡ‎ → ‎سمج‎ ) ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM, ARABIC LETTER JEEM   # 
+
+FD60 ; 0633 0645 062D ;        SA      # ( ‎ﵠ‎ → ‎سمح‎ ) ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM, ARABIC LETTER HAH     # 
+FD5F ; 0633 0645 062D ;        SA      # ( ‎ﵟ‎ → ‎سمح‎ ) ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+
+FD63 ; 0633 0645 0645 ;        SA      # ( ‎ﵣ‎ → ‎سمم‎ ) ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM, ARABIC LETTER MEEM   # 
+FD62 ; 0633 0645 0645 ;        SA      # ( ‎ﵢ‎ → ‎سمم‎ ) ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+
+FD31 ; 0633 0647 ;     SA      # ( ‎ﴱ‎ → ‎سه‎ ) ARABIC LIGATURE SEEN WITH HEH INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER HEH     # 
+FCE8 ; 0633 0647 ;     SA      # ( ‎ﳨ‎ → ‎سه‎ ) ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER HEH      # 
+
+FD17 ; 0633 0649 ;     SA      # ( ‎ﴗ‎ → ‎سى‎ ) ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER ALEF MAKSURA     # 
+FCFB ; 0633 0649 ;     SA      # ( ‎ﳻ‎ → ‎سى‎ ) ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER ALEF MAKSURA  # 
+FD18 ; 0633 0649 ;     SA      # ( ‎ﴘ‎ → ‎سى‎ ) ARABIC LIGATURE SEEN WITH YEH FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER ALEF MAKSURA      # →‎سي‎→
+FCFC ; 0633 0649 ;     SA      # ( ‎ﳼ‎ → ‎سى‎ ) ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER ALEF MAKSURA   # →‎سي‎→
+
+FEB7 ; 0634 ;  SA      # ( ‎ﺷ‎ → ‎ش‎ ) ARABIC LETTER SHEEN INITIAL FORM → ARABIC LETTER SHEEN   # 
+FEB8 ; 0634 ;  SA      # ( ‎ﺸ‎ → ‎ش‎ ) ARABIC LETTER SHEEN MEDIAL FORM → ARABIC LETTER SHEEN    # 
+FEB6 ; 0634 ;  SA      # ( ‎ﺶ‎ → ‎ش‎ ) ARABIC LETTER SHEEN FINAL FORM → ARABIC LETTER SHEEN     # 
+FEB5 ; 0634 ;  SA      # ( ‎ﺵ‎ → ‎ش‎ ) ARABIC LETTER SHEEN ISOLATED FORM → ARABIC LETTER SHEEN  # 
+
+FD2D ; 0634 062C ;     SA      # ( ‎ﴭ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM # 
+FD37 ; 0634 062C ;     SA      # ( ‎ﴷ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM  # 
+FD25 ; 0634 062C ;     SA      # ( ‎ﴥ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM   # 
+FD09 ; 0634 062C ;     SA      # ( ‎ﴉ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM        # 
+FD2F ; 0634 062C ;     SA      # ( ‎ﴯ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM # →‎شخ‎→→‎ﴧ‎→→‎ﴥ‎→
+FD39 ; 0634 062C ;     SA      # ( ‎ﴹ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM  # →‎شخ‎→→‎ﴧ‎→→‎ﴥ‎→
+FD27 ; 0634 062C ;     SA      # ( ‎ﴧ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM   # →‎ﴥ‎→
+FD0B ; 0634 062C ;     SA      # ( ‎ﴋ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM        # →‎ﴉ‎→
+
+FD69 ; 0634 062C 0649 ;        SA      # ( ‎ﵩ‎ → ‎شجى‎ ) ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA    # →‎شجي‎→
+
+FD2E ; 0634 062D ;     SA      # ( ‎ﴮ‎ → ‎شح‎ ) ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH   # 
+FD38 ; 0634 062D ;     SA      # ( ‎ﴸ‎ → ‎شح‎ ) ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH    # 
+FD26 ; 0634 062D ;     SA      # ( ‎ﴦ‎ → ‎شح‎ ) ARABIC LIGATURE SHEEN WITH HAH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH     # 
+FD0A ; 0634 062D ;     SA      # ( ‎ﴊ‎ → ‎شح‎ ) ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH  # 
+
+FD68 ; 0634 062D 0645 ;        SA      # ( ‎ﵨ‎ → ‎شحم‎ ) ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH, ARABIC LETTER MEEM   # 
+FD67 ; 0634 062D 0645 ;        SA      # ( ‎ﵧ‎ → ‎شحم‎ ) ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH, ARABIC LETTER MEEM     # 
+
+FDAA ; 0634 062D 0649 ;        SA      # ( ‎ﶪ‎ → ‎شحى‎ ) ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA      # →‎شحي‎→
+
+FD29 ; 0634 0631 ;     SA      # ( ‎ﴩ‎ → ‎شر‎ ) ARABIC LIGATURE SHEEN WITH REH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER REH     # 
+FD0D ; 0634 0631 ;     SA      # ( ‎ﴍ‎ → ‎شر‎ ) ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER REH  # 
+
+FD30 ; 0634 0645 ;     SA      # ( ‎ﴰ‎ → ‎شم‎ ) ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM # 
+FCE9 ; 0634 0645 ;     SA      # ( ‎ﳩ‎ → ‎شم‎ ) ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM  # 
+FD28 ; 0634 0645 ;     SA      # ( ‎ﴨ‎ → ‎شم‎ ) ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM   # 
+FD0C ; 0634 0645 ;     SA      # ( ‎ﴌ‎ → ‎شم‎ ) ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM        # 
+
+FD6B ; 0634 0645 062C ;        SA      # ( ‎ﵫ‎ → ‎شمج‎ ) ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM, ARABIC LETTER JEEM # →‎شمخ‎→
+FD6A ; 0634 0645 062C ;        SA      # ( ‎ﵪ‎ → ‎شمج‎ ) ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM, ARABIC LETTER JEEM   # →‎شمخ‎→
+
+FD6D ; 0634 0645 0645 ;        SA      # ( ‎ﵭ‎ → ‎شمم‎ ) ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM, ARABIC LETTER MEEM # 
+FD6C ; 0634 0645 0645 ;        SA      # ( ‎ﵬ‎ → ‎شمم‎ ) ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM, ARABIC LETTER MEEM   # 
+
+FD32 ; 0634 0647 ;     SA      # ( ‎ﴲ‎ → ‎شه‎ ) ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HEH   # 
+FCEA ; 0634 0647 ;     SA      # ( ‎ﳪ‎ → ‎شه‎ ) ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HEH    # 
+
+FD19 ; 0634 0649 ;     SA      # ( ‎ﴙ‎ → ‎شى‎ ) ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER ALEF MAKSURA   # 
+FCFD ; 0634 0649 ;     SA      # ( ‎ﳽ‎ → ‎شى‎ ) ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER ALEF MAKSURA        # 
+FD1A ; 0634 0649 ;     SA      # ( ‎ﴚ‎ → ‎شى‎ ) ARABIC LIGATURE SHEEN WITH YEH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER ALEF MAKSURA    # →‎شي‎→
+FCFE ; 0634 0649 ;     SA      # ( ‎ﳾ‎ → ‎شى‎ ) ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER ALEF MAKSURA # →‎شي‎→
+
+FEBB ; 0635 ;  SA      # ( ‎ﺻ‎ → ‎ص‎ ) ARABIC LETTER SAD INITIAL FORM → ARABIC LETTER SAD       # 
+FEBC ; 0635 ;  SA      # ( ‎ﺼ‎ → ‎ص‎ ) ARABIC LETTER SAD MEDIAL FORM → ARABIC LETTER SAD        # 
+FEBA ; 0635 ;  SA      # ( ‎ﺺ‎ → ‎ص‎ ) ARABIC LETTER SAD FINAL FORM → ARABIC LETTER SAD # 
+FEB9 ; 0635 ;  SA      # ( ‎ﺹ‎ → ‎ص‎ ) ARABIC LETTER SAD ISOLATED FORM → ARABIC LETTER SAD      # 
+
+FCB2 ; 0635 062C ;     SA      # ( ‎ﲲ‎ → ‎صج‎ ) ARABIC LIGATURE SAD WITH KHAH INITIAL FORM → ARABIC LETTER SAD, ARABIC LETTER JEEM     # →‎صخ‎→
+
+FCB1 ; 0635 062D ;     SA      # ( ‎ﲱ‎ → ‎صح‎ ) ARABIC LIGATURE SAD WITH HAH INITIAL FORM → ARABIC LETTER SAD, ARABIC LETTER HAH       # 
+FC20 ; 0635 062D ;     SA      # ( ‎ﰠ‎ → ‎صح‎ ) ARABIC LIGATURE SAD WITH HAH ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER HAH      # 
+
+FD65 ; 0635 062D 062D ;        SA      # ( ‎ﵥ‎ → ‎صحح‎ ) ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM → ARABIC LETTER SAD, ARABIC LETTER HAH, ARABIC LETTER HAH # 
+FD64 ; 0635 062D 062D ;        SA      # ( ‎ﵤ‎ → ‎صحح‎ ) ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER HAH, ARABIC LETTER HAH   # 
+
+FDA9 ; 0635 062D 0649 ;        SA      # ( ‎ﶩ‎ → ‎صحى‎ ) ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA  # →‎صحي‎→
+
+FD2B ; 0635 0631 ;     SA      # ( ‎ﴫ‎ → ‎صر‎ ) ARABIC LIGATURE SAD WITH REH FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER REH # 
+FD0F ; 0635 0631 ;     SA      # ( ‎ﴏ‎ → ‎صر‎ ) ARABIC LIGATURE SAD WITH REH ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER REH      # 
+
+FDF5 ; 0635 0644 0639 0645 ;   SA      # ( ‎ﷵ‎ → ‎صلعم‎ ) ARABIC LIGATURE SALAM ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER LAM, ARABIC LETTER AIN, ARABIC LETTER MEEM  # 
+
+FDF9 ; 0635 0644 0649 ;        SA      # ( ‎ﷹ‎ → ‎صلى‎ ) ARABIC LIGATURE SALLA ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA       # 
+
+FDFA ; 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 0649 0647 0020 0648 0633 0644 0645 ;     SA      #* ( ‎ﷺ‎ → ‎صلى الله علىه وسلم‎ ) ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM → ARABIC LETTER SAD, ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA, SPACE, ARABIC LETTER ALEF, ARABIC LETTER LAM, ARABIC LETTER LAM, ARABIC LETTER HEH, SPACE, ARABIC LETTER AIN, ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HEH, SPACE, ARABIC LETTER WAW, ARABIC LETTER SEEN, ARABIC LETTER LAM, ARABIC LETTER MEEM      # →‎صلى الله عليه وسلم‎→
+
+FDF0 ; 0635 0644 06D2 ;        SA      # ( ‎ﷰ‎ → ‎صلے‎ ) ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER LAM, ARABIC LETTER YEH BARREE       # 
+
+FCB3 ; 0635 0645 ;     SA      # ( ‎ﲳ‎ → ‎صم‎ ) ARABIC LIGATURE SAD WITH MEEM INITIAL FORM → ARABIC LETTER SAD, ARABIC LETTER MEEM     # 
+FC21 ; 0635 0645 ;     SA      # ( ‎ﰡ‎ → ‎صم‎ ) ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER MEEM    # 
+
+FDC5 ; 0635 0645 0645 ;        SA      # ( ‎ﷅ‎ → ‎صمم‎ ) ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER SAD, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+FD66 ; 0635 0645 0645 ;        SA      # ( ‎ﵦ‎ → ‎صمم‎ ) ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER MEEM, ARABIC LETTER MEEM       # 
+
+FD21 ; 0635 0649 ;     SA      # ( ‎ﴡ‎ → ‎صى‎ ) ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER ALEF MAKSURA       # 
+FD05 ; 0635 0649 ;     SA      # ( ‎ﴅ‎ → ‎صى‎ ) ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER ALEF MAKSURA    # 
+FD22 ; 0635 0649 ;     SA      # ( ‎ﴢ‎ → ‎صى‎ ) ARABIC LIGATURE SAD WITH YEH FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER ALEF MAKSURA        # →‎صي‎→
+FD06 ; 0635 0649 ;     SA      # ( ‎ﴆ‎ → ‎صى‎ ) ARABIC LIGATURE SAD WITH YEH ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER ALEF MAKSURA     # →‎صي‎→
+
+FEBF ; 0636 ;  SA      # ( ‎ﺿ‎ → ‎ض‎ ) ARABIC LETTER DAD INITIAL FORM → ARABIC LETTER DAD       # 
+FEC0 ; 0636 ;  SA      # ( ‎ﻀ‎ → ‎ض‎ ) ARABIC LETTER DAD MEDIAL FORM → ARABIC LETTER DAD        # 
+FEBE ; 0636 ;  SA      # ( ‎ﺾ‎ → ‎ض‎ ) ARABIC LETTER DAD FINAL FORM → ARABIC LETTER DAD # 
+FEBD ; 0636 ;  SA      # ( ‎ﺽ‎ → ‎ض‎ ) ARABIC LETTER DAD ISOLATED FORM → ARABIC LETTER DAD      # 
+
+FCB4 ; 0636 062C ;     SA      # ( ‎ﲴ‎ → ‎ضج‎ ) ARABIC LIGATURE DAD WITH JEEM INITIAL FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM     # 
+FC22 ; 0636 062C ;     SA      # ( ‎ﰢ‎ → ‎ضج‎ ) ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM    # 
+FCB6 ; 0636 062C ;     SA      # ( ‎ﲶ‎ → ‎ضج‎ ) ARABIC LIGATURE DAD WITH KHAH INITIAL FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM     # →‎ضخ‎→→‎ﰤ‎→→‎ﰢ‎→
+FC24 ; 0636 062C ;     SA      # ( ‎ﰤ‎ → ‎ضج‎ ) ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM    # →‎ﰢ‎→
+
+FD70 ; 0636 062C 0645 ;        SA      # ( ‎ﵰ‎ → ‎ضجم‎ ) ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # →‎ضخم‎→
+FD6F ; 0636 062C 0645 ;        SA      # ( ‎ﵯ‎ → ‎ضجم‎ ) ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM, ARABIC LETTER MEEM       # →‎ضخم‎→
+
+FCB5 ; 0636 062D ;     SA      # ( ‎ﲵ‎ → ‎ضح‎ ) ARABIC LIGATURE DAD WITH HAH INITIAL FORM → ARABIC LETTER DAD, ARABIC LETTER HAH       # 
+FC23 ; 0636 062D ;     SA      # ( ‎ﰣ‎ → ‎ضح‎ ) ARABIC LIGATURE DAD WITH HAH ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER HAH      # 
+
+FD6E ; 0636 062D 0649 ;        SA      # ( ‎ﵮ‎ → ‎ضحى‎ ) ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA # 
+FDAB ; 0636 062D 0649 ;        SA      # ( ‎ﶫ‎ → ‎ضحى‎ ) ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA  # →‎ضحي‎→
+
+FD2C ; 0636 0631 ;     SA      # ( ‎ﴬ‎ → ‎ضر‎ ) ARABIC LIGATURE DAD WITH REH FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER REH # 
+FD10 ; 0636 0631 ;     SA      # ( ‎ﴐ‎ → ‎ضر‎ ) ARABIC LIGATURE DAD WITH REH ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER REH      # 
+
+FCB7 ; 0636 0645 ;     SA      # ( ‎ﲷ‎ → ‎ضم‎ ) ARABIC LIGATURE DAD WITH MEEM INITIAL FORM → ARABIC LETTER DAD, ARABIC LETTER MEEM     # 
+FC25 ; 0636 0645 ;     SA      # ( ‎ﰥ‎ → ‎ضم‎ ) ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER MEEM    # 
+
+FD23 ; 0636 0649 ;     SA      # ( ‎ﴣ‎ → ‎ضى‎ ) ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER ALEF MAKSURA       # 
+FD07 ; 0636 0649 ;     SA      # ( ‎ﴇ‎ → ‎ضى‎ ) ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER ALEF MAKSURA    # 
+FD24 ; 0636 0649 ;     SA      # ( ‎ﴤ‎ → ‎ضى‎ ) ARABIC LIGATURE DAD WITH YEH FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER ALEF MAKSURA        # →‎ضي‎→
+FD08 ; 0636 0649 ;     SA      # ( ‎ﴈ‎ → ‎ضى‎ ) ARABIC LIGATURE DAD WITH YEH ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER ALEF MAKSURA     # →‎ضي‎→
+
+FEC3 ; 0637 ;  SA      # ( ‎ﻃ‎ → ‎ط‎ ) ARABIC LETTER TAH INITIAL FORM → ARABIC LETTER TAH       # 
+FEC4 ; 0637 ;  SA      # ( ‎ﻄ‎ → ‎ط‎ ) ARABIC LETTER TAH MEDIAL FORM → ARABIC LETTER TAH        # 
+FEC2 ; 0637 ;  SA      # ( ‎ﻂ‎ → ‎ط‎ ) ARABIC LETTER TAH FINAL FORM → ARABIC LETTER TAH # 
+FEC1 ; 0637 ;  SA      # ( ‎ﻁ‎ → ‎ط‎ ) ARABIC LETTER TAH ISOLATED FORM → ARABIC LETTER TAH      # 
+
+FCB8 ; 0637 062D ;     SA      # ( ‎ﲸ‎ → ‎طح‎ ) ARABIC LIGATURE TAH WITH HAH INITIAL FORM → ARABIC LETTER TAH, ARABIC LETTER HAH       # 
+FC26 ; 0637 062D ;     SA      # ( ‎ﰦ‎ → ‎طح‎ ) ARABIC LIGATURE TAH WITH HAH ISOLATED FORM → ARABIC LETTER TAH, ARABIC LETTER HAH      # 
+
+FD33 ; 0637 0645 ;     SA      # ( ‎ﴳ‎ → ‎طم‎ ) ARABIC LIGATURE TAH WITH MEEM INITIAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM     # 
+FD3A ; 0637 0645 ;     SA      # ( ‎ﴺ‎ → ‎طم‎ ) ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM      # 
+FC27 ; 0637 0645 ;     SA      # ( ‎ﰧ‎ → ‎طم‎ ) ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM    # 
+
+FD72 ; 0637 0645 062D ;        SA      # ( ‎ﵲ‎ → ‎طمح‎ ) ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+FD71 ; 0637 0645 062D ;        SA      # ( ‎ﵱ‎ → ‎طمح‎ ) ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM, ARABIC LETTER HAH # 
+
+FD73 ; 0637 0645 0645 ;        SA      # ( ‎ﵳ‎ → ‎طمم‎ ) ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+
+FD74 ; 0637 0645 0649 ;        SA      # ( ‎ﵴ‎ → ‎طمى‎ ) ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎طمي‎→
+
+FD11 ; 0637 0649 ;     SA      # ( ‎ﴑ‎ → ‎طى‎ ) ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER TAH, ARABIC LETTER ALEF MAKSURA       # 
+FCF5 ; 0637 0649 ;     SA      # ( ‎ﳵ‎ → ‎طى‎ ) ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER TAH, ARABIC LETTER ALEF MAKSURA    # 
+FD12 ; 0637 0649 ;     SA      # ( ‎ﴒ‎ → ‎طى‎ ) ARABIC LIGATURE TAH WITH YEH FINAL FORM → ARABIC LETTER TAH, ARABIC LETTER ALEF MAKSURA        # →‎طي‎→
+FCF6 ; 0637 0649 ;     SA      # ( ‎ﳶ‎ → ‎طى‎ ) ARABIC LIGATURE TAH WITH YEH ISOLATED FORM → ARABIC LETTER TAH, ARABIC LETTER ALEF MAKSURA     # →‎طي‎→
+
+FEC7 ; 0638 ;  SA      # ( ‎ﻇ‎ → ‎ظ‎ ) ARABIC LETTER ZAH INITIAL FORM → ARABIC LETTER ZAH       # 
+FEC8 ; 0638 ;  SA      # ( ‎ﻈ‎ → ‎ظ‎ ) ARABIC LETTER ZAH MEDIAL FORM → ARABIC LETTER ZAH        # 
+FEC6 ; 0638 ;  SA      # ( ‎ﻆ‎ → ‎ظ‎ ) ARABIC LETTER ZAH FINAL FORM → ARABIC LETTER ZAH # 
+FEC5 ; 0638 ;  SA      # ( ‎ﻅ‎ → ‎ظ‎ ) ARABIC LETTER ZAH ISOLATED FORM → ARABIC LETTER ZAH      # 
+
+FCB9 ; 0638 0645 ;     SA      # ( ‎ﲹ‎ → ‎ظم‎ ) ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM → ARABIC LETTER ZAH, ARABIC LETTER MEEM     # 
+FD3B ; 0638 0645 ;     SA      # ( ‎ﴻ‎ → ‎ظم‎ ) ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM → ARABIC LETTER ZAH, ARABIC LETTER MEEM      # 
+FC28 ; 0638 0645 ;     SA      # ( ‎ﰨ‎ → ‎ظم‎ ) ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM → ARABIC LETTER ZAH, ARABIC LETTER MEEM    # 
+
+FECB ; 0639 ;  SA      # ( ‎ﻋ‎ → ‎ع‎ ) ARABIC LETTER AIN INITIAL FORM → ARABIC LETTER AIN       # 
+FECC ; 0639 ;  SA      # ( ‎ﻌ‎ → ‎ع‎ ) ARABIC LETTER AIN MEDIAL FORM → ARABIC LETTER AIN        # 
+FECA ; 0639 ;  SA      # ( ‎ﻊ‎ → ‎ع‎ ) ARABIC LETTER AIN FINAL FORM → ARABIC LETTER AIN # 
+FEC9 ; 0639 ;  SA      # ( ‎ﻉ‎ → ‎ع‎ ) ARABIC LETTER AIN ISOLATED FORM → ARABIC LETTER AIN      # 
+
+FCBA ; 0639 062C ;     SA      # ( ‎ﲺ‎ → ‎عج‎ ) ARABIC LIGATURE AIN WITH JEEM INITIAL FORM → ARABIC LETTER AIN, ARABIC LETTER JEEM     # 
+FC29 ; 0639 062C ;     SA      # ( ‎ﰩ‎ → ‎عج‎ ) ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM → ARABIC LETTER AIN, ARABIC LETTER JEEM    # 
+
+FDC4 ; 0639 062C 0645 ;        SA      # ( ‎ﷄ‎ → ‎عجم‎ ) ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM → ARABIC LETTER AIN, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # 
+FD75 ; 0639 062C 0645 ;        SA      # ( ‎ﵵ‎ → ‎عجم‎ ) ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER JEEM, ARABIC LETTER MEEM       # 
+
+FDF7 ; 0639 0644 0649 0647 ;   SA      # ( ‎ﷷ‎ → ‎علىه‎ ) ARABIC LIGATURE ALAYHE ISOLATED FORM → ARABIC LETTER AIN, ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HEH # →‎عليه‎→
+
+FCBB ; 0639 0645 ;     SA      # ( ‎ﲻ‎ → ‎عم‎ ) ARABIC LIGATURE AIN WITH MEEM INITIAL FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM     # 
+FC2A ; 0639 0645 ;     SA      # ( ‎ﰪ‎ → ‎عم‎ ) ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM    # 
+
+FD77 ; 0639 0645 0645 ;        SA      # ( ‎ﵷ‎ → ‎عمم‎ ) ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+FD76 ; 0639 0645 0645 ;        SA      # ( ‎ﵶ‎ → ‎عمم‎ ) ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM, ARABIC LETTER MEEM       # 
+
+FD78 ; 0639 0645 0649 ;        SA      # ( ‎ﵸ‎ → ‎عمى‎ ) ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA       # 
+FDB6 ; 0639 0645 0649 ;        SA      # ( ‎ﶶ‎ → ‎عمى‎ ) ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎عمي‎→
+
+FD13 ; 0639 0649 ;     SA      # ( ‎ﴓ‎ → ‎عى‎ ) ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER ALEF MAKSURA       # 
+FCF7 ; 0639 0649 ;     SA      # ( ‎ﳷ‎ → ‎عى‎ ) ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER AIN, ARABIC LETTER ALEF MAKSURA    # 
+FD14 ; 0639 0649 ;     SA      # ( ‎ﴔ‎ → ‎عى‎ ) ARABIC LIGATURE AIN WITH YEH FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER ALEF MAKSURA        # →‎عي‎→
+FCF8 ; 0639 0649 ;     SA      # ( ‎ﳸ‎ → ‎عى‎ ) ARABIC LIGATURE AIN WITH YEH ISOLATED FORM → ARABIC LETTER AIN, ARABIC LETTER ALEF MAKSURA     # →‎عي‎→
+
+FECF ; 063A ;  SA      # ( ‎ﻏ‎ → ‎غ‎ ) ARABIC LETTER GHAIN INITIAL FORM → ARABIC LETTER GHAIN   # 
+FED0 ; 063A ;  SA      # ( ‎ﻐ‎ → ‎غ‎ ) ARABIC LETTER GHAIN MEDIAL FORM → ARABIC LETTER GHAIN    # 
+FECE ; 063A ;  SA      # ( ‎ﻎ‎ → ‎غ‎ ) ARABIC LETTER GHAIN FINAL FORM → ARABIC LETTER GHAIN     # 
+FECD ; 063A ;  SA      # ( ‎ﻍ‎ → ‎غ‎ ) ARABIC LETTER GHAIN ISOLATED FORM → ARABIC LETTER GHAIN  # 
+
+FCBC ; 063A 062C ;     SA      # ( ‎ﲼ‎ → ‎غج‎ ) ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER JEEM # 
+FC2B ; 063A 062C ;     SA      # ( ‎ﰫ‎ → ‎غج‎ ) ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM → ARABIC LETTER GHAIN, ARABIC LETTER JEEM        # 
+
+FCBD ; 063A 0645 ;     SA      # ( ‎ﲽ‎ → ‎غم‎ ) ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER MEEM # 
+FC2C ; 063A 0645 ;     SA      # ( ‎ﰬ‎ → ‎غم‎ ) ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM → ARABIC LETTER GHAIN, ARABIC LETTER MEEM        # 
+
+FD79 ; 063A 0645 0645 ;        SA      # ( ‎ﵹ‎ → ‎غمم‎ ) ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER MEEM, ARABIC LETTER MEEM   # 
+
+FD7B ; 063A 0645 0649 ;        SA      # ( ‎ﵻ‎ → ‎غمى‎ ) ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA   # 
+FD7A ; 063A 0645 0649 ;        SA      # ( ‎ﵺ‎ → ‎غمى‎ ) ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA    # →‎غمي‎→
+
+FD15 ; 063A 0649 ;     SA      # ( ‎ﴕ‎ → ‎غى‎ ) ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER ALEF MAKSURA   # 
+FCF9 ; 063A 0649 ;     SA      # ( ‎ﳹ‎ → ‎غى‎ ) ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER GHAIN, ARABIC LETTER ALEF MAKSURA        # 
+FD16 ; 063A 0649 ;     SA      # ( ‎ﴖ‎ → ‎غى‎ ) ARABIC LIGATURE GHAIN WITH YEH FINAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER ALEF MAKSURA    # →‎غي‎→
+FCFA ; 063A 0649 ;     SA      # ( ‎ﳺ‎ → ‎غى‎ ) ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM → ARABIC LETTER GHAIN, ARABIC LETTER ALEF MAKSURA # →‎غي‎→
+
+FED3 ; 0641 ;  SA      # ( ‎ﻓ‎ → ‎ف‎ ) ARABIC LETTER FEH INITIAL FORM → ARABIC LETTER FEH       # 
+FED4 ; 0641 ;  SA      # ( ‎ﻔ‎ → ‎ف‎ ) ARABIC LETTER FEH MEDIAL FORM → ARABIC LETTER FEH        # 
+FED2 ; 0641 ;  SA      # ( ‎ﻒ‎ → ‎ف‎ ) ARABIC LETTER FEH FINAL FORM → ARABIC LETTER FEH # 
+FED1 ; 0641 ;  SA      # ( ‎ﻑ‎ → ‎ف‎ ) ARABIC LETTER FEH ISOLATED FORM → ARABIC LETTER FEH      # 
+
+FCBE ; 0641 062C ;     SA      # ( ‎ﲾ‎ → ‎فج‎ ) ARABIC LIGATURE FEH WITH JEEM INITIAL FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM     # 
+FC2D ; 0641 062C ;     SA      # ( ‎ﰭ‎ → ‎فج‎ ) ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM    # 
+FCC0 ; 0641 062C ;     SA      # ( ‎ﳀ‎ → ‎فج‎ ) ARABIC LIGATURE FEH WITH KHAH INITIAL FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM     # →‎فخ‎→→‎ﰯ‎→→‎ﰭ‎→
+FC2F ; 0641 062C ;     SA      # ( ‎ﰯ‎ → ‎فج‎ ) ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM    # →‎ﰭ‎→
+
+FD7D ; 0641 062C 0645 ;        SA      # ( ‎ﵽ‎ → ‎فجم‎ ) ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # →‎فخم‎→
+FD7C ; 0641 062C 0645 ;        SA      # ( ‎ﵼ‎ → ‎فجم‎ ) ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM       # →‎فخم‎→
+
+FCBF ; 0641 062D ;     SA      # ( ‎ﲿ‎ → ‎فح‎ ) ARABIC LIGATURE FEH WITH HAH INITIAL FORM → ARABIC LETTER FEH, ARABIC LETTER HAH       # 
+FC2E ; 0641 062D ;     SA      # ( ‎ﰮ‎ → ‎فح‎ ) ARABIC LIGATURE FEH WITH HAH ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER HAH      # 
+
+FCC1 ; 0641 0645 ;     SA      # ( ‎ﳁ‎ → ‎فم‎ ) ARABIC LIGATURE FEH WITH MEEM INITIAL FORM → ARABIC LETTER FEH, ARABIC LETTER MEEM     # 
+FC30 ; 0641 0645 ;     SA      # ( ‎ﰰ‎ → ‎فم‎ ) ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER MEEM    # 
+
+FDC1 ; 0641 0645 0649 ;        SA      # ( ‎ﷁ‎ → ‎فمى‎ ) ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER FEH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎فمي‎→
+
+FC7C ; 0641 0649 ;     SA      # ( ‎ﱼ‎ → ‎فى‎ ) ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER FEH, ARABIC LETTER ALEF MAKSURA       # 
+FC31 ; 0641 0649 ;     SA      # ( ‎ﰱ‎ → ‎فى‎ ) ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER ALEF MAKSURA    # 
+FC7D ; 0641 0649 ;     SA      # ( ‎ﱽ‎ → ‎فى‎ ) ARABIC LIGATURE FEH WITH YEH FINAL FORM → ARABIC LETTER FEH, ARABIC LETTER ALEF MAKSURA        # →‎في‎→
+FC32 ; 0641 0649 ;     SA      # ( ‎ﰲ‎ → ‎فى‎ ) ARABIC LIGATURE FEH WITH YEH ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER ALEF MAKSURA     # →‎في‎→
+
+FB6C ; 06A4 ;  SA      # ( ‎ﭬ‎ → ‎ڤ‎ ) ARABIC LETTER VEH INITIAL FORM → ARABIC LETTER VEH       # 
+FB6D ; 06A4 ;  SA      # ( ‎ﭭ‎ → ‎ڤ‎ ) ARABIC LETTER VEH MEDIAL FORM → ARABIC LETTER VEH        # 
+FB6B ; 06A4 ;  SA      # ( ‎ﭫ‎ → ‎ڤ‎ ) ARABIC LETTER VEH FINAL FORM → ARABIC LETTER VEH # 
+FB6A ; 06A4 ;  SA      # ( ‎ﭪ‎ → ‎ڤ‎ ) ARABIC LETTER VEH ISOLATED FORM → ARABIC LETTER VEH      # 
+
+FB70 ; 06A6 ;  SA      # ( ‎ﭰ‎ → ‎ڦ‎ ) ARABIC LETTER PEHEH INITIAL FORM → ARABIC LETTER PEHEH   # 
+FB71 ; 06A6 ;  SA      # ( ‎ﭱ‎ → ‎ڦ‎ ) ARABIC LETTER PEHEH MEDIAL FORM → ARABIC LETTER PEHEH    # 
+FB6F ; 06A6 ;  SA      # ( ‎ﭯ‎ → ‎ڦ‎ ) ARABIC LETTER PEHEH FINAL FORM → ARABIC LETTER PEHEH     # 
+FB6E ; 06A6 ;  SA      # ( ‎ﭮ‎ → ‎ڦ‎ ) ARABIC LETTER PEHEH ISOLATED FORM → ARABIC LETTER PEHEH  # 
+
+FED7 ; 0642 ;  SA      # ( ‎ﻗ‎ → ‎ق‎ ) ARABIC LETTER QAF INITIAL FORM → ARABIC LETTER QAF       # 
+FED8 ; 0642 ;  SA      # ( ‎ﻘ‎ → ‎ق‎ ) ARABIC LETTER QAF MEDIAL FORM → ARABIC LETTER QAF        # 
+FED6 ; 0642 ;  SA      # ( ‎ﻖ‎ → ‎ق‎ ) ARABIC LETTER QAF FINAL FORM → ARABIC LETTER QAF # 
+FED5 ; 0642 ;  SA      # ( ‎ﻕ‎ → ‎ق‎ ) ARABIC LETTER QAF ISOLATED FORM → ARABIC LETTER QAF      # 
+
+FCC2 ; 0642 062D ;     SA      # ( ‎ﳂ‎ → ‎قح‎ ) ARABIC LIGATURE QAF WITH HAH INITIAL FORM → ARABIC LETTER QAF, ARABIC LETTER HAH       # 
+FC33 ; 0642 062D ;     SA      # ( ‎ﰳ‎ → ‎قح‎ ) ARABIC LIGATURE QAF WITH HAH ISOLATED FORM → ARABIC LETTER QAF, ARABIC LETTER HAH      # 
+
+FDF1 ; 0642 0644 06D2 ;        SA      # ( ‎ﷱ‎ → ‎قلے‎ ) ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM → ARABIC LETTER QAF, ARABIC LETTER LAM, ARABIC LETTER YEH BARREE        # 
+
+FCC3 ; 0642 0645 ;     SA      # ( ‎ﳃ‎ → ‎قم‎ ) ARABIC LIGATURE QAF WITH MEEM INITIAL FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM     # 
+FC34 ; 0642 0645 ;     SA      # ( ‎ﰴ‎ → ‎قم‎ ) ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM    # 
+
+FDB4 ; 0642 0645 062D ;        SA      # ( ‎ﶴ‎ → ‎قمح‎ ) ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+FD7E ; 0642 0645 062D ;        SA      # ( ‎ﵾ‎ → ‎قمح‎ ) ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM, ARABIC LETTER HAH # 
+
+FD7F ; 0642 0645 0645 ;        SA      # ( ‎ﵿ‎ → ‎قمم‎ ) ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM, ARABIC LETTER MEEM       # 
+
+FDB2 ; 0642 0645 0649 ;        SA      # ( ‎ﶲ‎ → ‎قمى‎ ) ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎قمي‎→
+
+FC7E ; 0642 0649 ;     SA      # ( ‎ﱾ‎ → ‎قى‎ ) ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER QAF, ARABIC LETTER ALEF MAKSURA       # 
+FC35 ; 0642 0649 ;     SA      # ( ‎ﰵ‎ → ‎قى‎ ) ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER QAF, ARABIC LETTER ALEF MAKSURA    # 
+FC7F ; 0642 0649 ;     SA      # ( ‎ﱿ‎ → ‎قى‎ ) ARABIC LIGATURE QAF WITH YEH FINAL FORM → ARABIC LETTER QAF, ARABIC LETTER ALEF MAKSURA        # →‎قي‎→
+FC36 ; 0642 0649 ;     SA      # ( ‎ﰶ‎ → ‎قى‎ ) ARABIC LIGATURE QAF WITH YEH ISOLATED FORM → ARABIC LETTER QAF, ARABIC LETTER ALEF MAKSURA     # →‎قي‎→
+
+FEDB ; 0643 ;  SA      # ( ‎ﻛ‎ → ‎ك‎ ) ARABIC LETTER KAF INITIAL FORM → ARABIC LETTER KAF       # 
+FEDC ; 0643 ;  SA      # ( ‎ﻜ‎ → ‎ك‎ ) ARABIC LETTER KAF MEDIAL FORM → ARABIC LETTER KAF        # 
+FEDA ; 0643 ;  SA      # ( ‎ﻚ‎ → ‎ك‎ ) ARABIC LETTER KAF FINAL FORM → ARABIC LETTER KAF # 
+FED9 ; 0643 ;  SA      # ( ‎ﻙ‎ → ‎ك‎ ) ARABIC LETTER KAF ISOLATED FORM → ARABIC LETTER KAF      # 
+06A9 ; 0643 ;  SA      # ( ‎ک‎ → ‎ك‎ ) ARABIC LETTER KEHEH → ARABIC LETTER KAF   # 
+FB90 ; 0643 ;  SA      # ( ‎ﮐ‎ → ‎ك‎ ) ARABIC LETTER KEHEH INITIAL FORM → ARABIC LETTER KAF     # →‎ﻜ‎→
+FB91 ; 0643 ;  SA      # ( ‎ﮑ‎ → ‎ك‎ ) ARABIC LETTER KEHEH MEDIAL FORM → ARABIC LETTER KAF      # →‎ﻜ‎→
+FB8F ; 0643 ;  SA      # ( ‎ﮏ‎ → ‎ك‎ ) ARABIC LETTER KEHEH FINAL FORM → ARABIC LETTER KAF       # →‎ﻚ‎→
+FB8E ; 0643 ;  SA      # ( ‎ﮎ‎ → ‎ك‎ ) ARABIC LETTER KEHEH ISOLATED FORM → ARABIC LETTER KAF    # →‎ک‎→
+
+FC80 ; 0643 0627 ;     SA      # ( ‎ﲀ‎ → ‎كا‎ ) ARABIC LIGATURE KAF WITH ALEF FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF       # 
+FC37 ; 0643 0627 ;     SA      # ( ‎ﰷ‎ → ‎كا‎ ) ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF    # 
+
+FCC4 ; 0643 062C ;     SA      # ( ‎ﳄ‎ → ‎كج‎ ) ARABIC LIGATURE KAF WITH JEEM INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER JEEM     # 
+FC38 ; 0643 062C ;     SA      # ( ‎ﰸ‎ → ‎كج‎ ) ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER JEEM    # 
+FCC6 ; 0643 062C ;     SA      # ( ‎ﳆ‎ → ‎كج‎ ) ARABIC LIGATURE KAF WITH KHAH INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER JEEM     # →‎كخ‎→→‎ﰺ‎→→‎ﰸ‎→
+FC3A ; 0643 062C ;     SA      # ( ‎ﰺ‎ → ‎كج‎ ) ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER JEEM    # →‎ﰸ‎→
+
+FCC5 ; 0643 062D ;     SA      # ( ‎ﳅ‎ → ‎كح‎ ) ARABIC LIGATURE KAF WITH HAH INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER HAH       # 
+FC39 ; 0643 062D ;     SA      # ( ‎ﰹ‎ → ‎كح‎ ) ARABIC LIGATURE KAF WITH HAH ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER HAH      # 
+
+FCC7 ; 0643 0644 ;     SA      # ( ‎ﳇ‎ → ‎كل‎ ) ARABIC LIGATURE KAF WITH LAM INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER LAM       # 
+FCEB ; 0643 0644 ;     SA      # ( ‎ﳫ‎ → ‎كل‎ ) ARABIC LIGATURE KAF WITH LAM MEDIAL FORM → ARABIC LETTER KAF, ARABIC LETTER LAM        # 
+FC81 ; 0643 0644 ;     SA      # ( ‎ﲁ‎ → ‎كل‎ ) ARABIC LIGATURE KAF WITH LAM FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER LAM # 
+FC3B ; 0643 0644 ;     SA      # ( ‎ﰻ‎ → ‎كل‎ ) ARABIC LIGATURE KAF WITH LAM ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER LAM      # 
+
+FCC8 ; 0643 0645 ;     SA      # ( ‎ﳈ‎ → ‎كم‎ ) ARABIC LIGATURE KAF WITH MEEM INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM     # 
+FCEC ; 0643 0645 ;     SA      # ( ‎ﳬ‎ → ‎كم‎ ) ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM      # 
+FC82 ; 0643 0645 ;     SA      # ( ‎ﲂ‎ → ‎كم‎ ) ARABIC LIGATURE KAF WITH MEEM FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM       # 
+FC3C ; 0643 0645 ;     SA      # ( ‎ﰼ‎ → ‎كم‎ ) ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM    # 
+
+FDC3 ; 0643 0645 0645 ;        SA      # ( ‎ﷃ‎ → ‎كمم‎ ) ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+FDBB ; 0643 0645 0645 ;        SA      # ( ‎ﶻ‎ → ‎كمم‎ ) ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM, ARABIC LETTER MEEM       # 
+
+FDB7 ; 0643 0645 0649 ;        SA      # ( ‎ﶷ‎ → ‎كمى‎ ) ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎كمي‎→
+
+FC83 ; 0643 0649 ;     SA      # ( ‎ﲃ‎ → ‎كى‎ ) ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF MAKSURA       # 
+FC3D ; 0643 0649 ;     SA      # ( ‎ﰽ‎ → ‎كى‎ ) ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF MAKSURA    # 
+FC84 ; 0643 0649 ;     SA      # ( ‎ﲄ‎ → ‎كى‎ ) ARABIC LIGATURE KAF WITH YEH FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF MAKSURA        # →‎كي‎→
+FC3E ; 0643 0649 ;     SA      # ( ‎ﰾ‎ → ‎كى‎ ) ARABIC LIGATURE KAF WITH YEH ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF MAKSURA     # →‎كي‎→
+
+FBD5 ; 06AD ;  SA      # ( ‎ﯕ‎ → ‎ڭ‎ ) ARABIC LETTER NG INITIAL FORM → ARABIC LETTER NG # 
+FBD6 ; 06AD ;  SA      # ( ‎ﯖ‎ → ‎ڭ‎ ) ARABIC LETTER NG MEDIAL FORM → ARABIC LETTER NG  # 
+FBD4 ; 06AD ;  SA      # ( ‎ﯔ‎ → ‎ڭ‎ ) ARABIC LETTER NG FINAL FORM → ARABIC LETTER NG   # 
+FBD3 ; 06AD ;  SA      # ( ‎ﯓ‎ → ‎ڭ‎ ) ARABIC LETTER NG ISOLATED FORM → ARABIC LETTER NG        # 
+
+FB94 ; 06AF ;  SA      # ( ‎ﮔ‎ → ‎گ‎ ) ARABIC LETTER GAF INITIAL FORM → ARABIC LETTER GAF       # 
+FB95 ; 06AF ;  SA      # ( ‎ﮕ‎ → ‎گ‎ ) ARABIC LETTER GAF MEDIAL FORM → ARABIC LETTER GAF        # 
+FB93 ; 06AF ;  SA      # ( ‎ﮓ‎ → ‎گ‎ ) ARABIC LETTER GAF FINAL FORM → ARABIC LETTER GAF # 
+FB92 ; 06AF ;  SA      # ( ‎ﮒ‎ → ‎گ‎ ) ARABIC LETTER GAF ISOLATED FORM → ARABIC LETTER GAF      # 
+
+FB9C ; 06B1 ;  SA      # ( ‎ﮜ‎ → ‎ڱ‎ ) ARABIC LETTER NGOEH INITIAL FORM → ARABIC LETTER NGOEH   # 
+FB9D ; 06B1 ;  SA      # ( ‎ﮝ‎ → ‎ڱ‎ ) ARABIC LETTER NGOEH MEDIAL FORM → ARABIC LETTER NGOEH    # 
+FB9B ; 06B1 ;  SA      # ( ‎ﮛ‎ → ‎ڱ‎ ) ARABIC LETTER NGOEH FINAL FORM → ARABIC LETTER NGOEH     # 
+FB9A ; 06B1 ;  SA      # ( ‎ﮚ‎ → ‎ڱ‎ ) ARABIC LETTER NGOEH ISOLATED FORM → ARABIC LETTER NGOEH  # 
+
+FB98 ; 06B3 ;  SA      # ( ‎ﮘ‎ → ‎ڳ‎ ) ARABIC LETTER GUEH INITIAL FORM → ARABIC LETTER GUEH     # 
+FB99 ; 06B3 ;  SA      # ( ‎ﮙ‎ → ‎ڳ‎ ) ARABIC LETTER GUEH MEDIAL FORM → ARABIC LETTER GUEH      # 
+FB97 ; 06B3 ;  SA      # ( ‎ﮗ‎ → ‎ڳ‎ ) ARABIC LETTER GUEH FINAL FORM → ARABIC LETTER GUEH       # 
+FB96 ; 06B3 ;  SA      # ( ‎ﮖ‎ → ‎ڳ‎ ) ARABIC LETTER GUEH ISOLATED FORM → ARABIC LETTER GUEH    # 
+
+FEDF ; 0644 ;  SA      # ( ‎ﻟ‎ → ‎ل‎ ) ARABIC LETTER LAM INITIAL FORM → ARABIC LETTER LAM       # 
+FEE0 ; 0644 ;  SA      # ( ‎ﻠ‎ → ‎ل‎ ) ARABIC LETTER LAM MEDIAL FORM → ARABIC LETTER LAM        # 
+FEDE ; 0644 ;  SA      # ( ‎ﻞ‎ → ‎ل‎ ) ARABIC LETTER LAM FINAL FORM → ARABIC LETTER LAM # 
+FEDD ; 0644 ;  SA      # ( ‎ﻝ‎ → ‎ل‎ ) ARABIC LETTER LAM ISOLATED FORM → ARABIC LETTER LAM      # 
+
+FEF6 ; 0644 0622 ;     SA      # ( ‎ﻶ‎ → ‎لآ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF WITH MADDA ABOVE     # 
+FEF5 ; 0644 0622 ;     SA      # ( ‎ﻵ‎ → ‎لآ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF WITH MADDA ABOVE  # 
+
+FEFA ; 0644 0625 ;     SA      # ( ‎ﻺ‎ → ‎لإ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF WITH HAMZA BELOW     # 
+FEF9 ; 0644 0625 ;     SA      # ( ‎ﻹ‎ → ‎لإ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF WITH HAMZA BELOW  # 
+
+FEFC ; 0644 0627 ;     SA      # ( ‎ﻼ‎ → ‎لا‎ ) ARABIC LIGATURE LAM WITH ALEF FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF       # 
+FEFB ; 0644 0627 ;     SA      # ( ‎ﻻ‎ → ‎لا‎ ) ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF    # 
+
+FEF8 ; 0644 0627 0674 ;        SA      # ( ‎ﻸ‎ → ‎لاٴ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA  # →‎لأ‎→
+FEF7 ; 0644 0627 0674 ;        SA      # ( ‎ﻷ‎ → ‎لاٴ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA       # →‎لأ‎→
+
+FCC9 ; 0644 062C ;     SA      # ( ‎ﳉ‎ → ‎لج‎ ) ARABIC LIGATURE LAM WITH JEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM     # 
+FC3F ; 0644 062C ;     SA      # ( ‎ﰿ‎ → ‎لج‎ ) ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM    # 
+FCCB ; 0644 062C ;     SA      # ( ‎ﳋ‎ → ‎لج‎ ) ARABIC LIGATURE LAM WITH KHAH INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM     # →‎لخ‎→→‎ﱁ‎→→‎ﰿ‎→
+FC41 ; 0644 062C ;     SA      # ( ‎ﱁ‎ → ‎لج‎ ) ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM    # →‎ﰿ‎→
+
+FD83 ; 0644 062C 062C ;        SA      # ( ‎ﶃ‎ → ‎لجج‎ ) ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER JEEM     # 
+FD84 ; 0644 062C 062C ;        SA      # ( ‎ﶄ‎ → ‎لجج‎ ) ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER JEEM       # 
+
+FDBA ; 0644 062C 0645 ;        SA      # ( ‎ﶺ‎ → ‎لجم‎ ) ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # 
+FDBC ; 0644 062C 0645 ;        SA      # ( ‎ﶼ‎ → ‎لجم‎ ) ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER MEEM       # 
+FD86 ; 0644 062C 0645 ;        SA      # ( ‎ﶆ‎ → ‎لجم‎ ) ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # →‎لخم‎→
+FD85 ; 0644 062C 0645 ;        SA      # ( ‎ﶅ‎ → ‎لجم‎ ) ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER MEEM       # →‎لخم‎→
+
+FDAC ; 0644 062C 0649 ;        SA      # ( ‎ﶬ‎ → ‎لجى‎ ) ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA        # →‎لجي‎→
+
+FCCA ; 0644 062D ;     SA      # ( ‎ﳊ‎ → ‎لح‎ ) ARABIC LIGATURE LAM WITH HAH INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER HAH       # 
+FC40 ; 0644 062D ;     SA      # ( ‎ﱀ‎ → ‎لح‎ ) ARABIC LIGATURE LAM WITH HAH ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER HAH      # 
+
+FDB5 ; 0644 062D 0645 ;        SA      # ( ‎ﶵ‎ → ‎لحم‎ ) ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER HAH, ARABIC LETTER MEEM       # 
+FD80 ; 0644 062D 0645 ;        SA      # ( ‎ﶀ‎ → ‎لحم‎ ) ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER HAH, ARABIC LETTER MEEM # 
+
+FD82 ; 0644 062D 0649 ;        SA      # ( ‎ﶂ‎ → ‎لحى‎ ) ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA # 
+FD81 ; 0644 062D 0649 ;        SA      # ( ‎ﶁ‎ → ‎لحى‎ ) ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA  # →‎لحي‎→
+
+FCCC ; 0644 0645 ;     SA      # ( ‎ﳌ‎ → ‎لم‎ ) ARABIC LIGATURE LAM WITH MEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM     # 
+FCED ; 0644 0645 ;     SA      # ( ‎ﳭ‎ → ‎لم‎ ) ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM      # 
+FC85 ; 0644 0645 ;     SA      # ( ‎ﲅ‎ → ‎لم‎ ) ARABIC LIGATURE LAM WITH MEEM FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM       # 
+FC42 ; 0644 0645 ;     SA      # ( ‎ﱂ‎ → ‎لم‎ ) ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM    # 
+
+FD88 ; 0644 0645 062D ;        SA      # ( ‎ﶈ‎ → ‎لمح‎ ) ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+FD87 ; 0644 0645 062D ;        SA      # ( ‎ﶇ‎ → ‎لمح‎ ) ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM, ARABIC LETTER HAH # 
+
+FDAD ; 0644 0645 0649 ;        SA      # ( ‎ﶭ‎ → ‎لمى‎ ) ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎لمي‎→
+
+FCCD ; 0644 0647 ;     SA      # ( ‎ﳍ‎ → ‎له‎ ) ARABIC LIGATURE LAM WITH HEH INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER HEH       # 
+
+FC86 ; 0644 0649 ;     SA      # ( ‎ﲆ‎ → ‎لى‎ ) ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA       # 
+FC43 ; 0644 0649 ;     SA      # ( ‎ﱃ‎ → ‎لى‎ ) ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA    # 
+FC87 ; 0644 0649 ;     SA      # ( ‎ﲇ‎ → ‎لى‎ ) ARABIC LIGATURE LAM WITH YEH FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA        # →‎لي‎→
+FC44 ; 0644 0649 ;     SA      # ( ‎ﱄ‎ → ‎لى‎ ) ARABIC LIGATURE LAM WITH YEH ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA     # →‎لي‎→
+
+FEE3 ; 0645 ;  SA      # ( ‎ﻣ‎ → ‎م‎ ) ARABIC LETTER MEEM INITIAL FORM → ARABIC LETTER MEEM     # 
+FEE4 ; 0645 ;  SA      # ( ‎ﻤ‎ → ‎م‎ ) ARABIC LETTER MEEM MEDIAL FORM → ARABIC LETTER MEEM      # 
+FEE2 ; 0645 ;  SA      # ( ‎ﻢ‎ → ‎م‎ ) ARABIC LETTER MEEM FINAL FORM → ARABIC LETTER MEEM       # 
+FEE1 ; 0645 ;  SA      # ( ‎ﻡ‎ → ‎م‎ ) ARABIC LETTER MEEM ISOLATED FORM → ARABIC LETTER MEEM    # 
+
+FC88 ; 0645 0627 ;     SA      # ( ‎ﲈ‎ → ‎ما‎ ) ARABIC LIGATURE MEEM WITH ALEF FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER ALEF     # 
+
+FCCE ; 0645 062C ;     SA      # ( ‎ﳎ‎ → ‎مج‎ ) ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM   # 
+FC45 ; 0645 062C ;     SA      # ( ‎ﱅ‎ → ‎مج‎ ) ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM  # 
+FCD0 ; 0645 062C ;     SA      # ( ‎ﳐ‎ → ‎مج‎ ) ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM   # →‎مخ‎→→‎ﱇ‎→→‎ﱅ‎→
+FC47 ; 0645 062C ;     SA      # ( ‎ﱇ‎ → ‎مج‎ ) ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM  # →‎ﱅ‎→
+
+FD92 ; 0645 062C 062C ;        SA      # ( ‎ﶒ‎ → ‎مجج‎ ) ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER JEEM   # →‎مجخ‎→
+FD8E ; 0645 062C 062C ;        SA      # ( ‎ﶎ‎ → ‎مجج‎ ) ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER JEEM   # →‎مخج‎→
+
+FD8C ; 0645 062C 062D ;        SA      # ( ‎ﶌ‎ → ‎مجح‎ ) ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER HAH     # 
+
+FD8D ; 0645 062C 0645 ;        SA      # ( ‎ﶍ‎ → ‎مجم‎ ) ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER MEEM   # 
+FD8F ; 0645 062C 0645 ;        SA      # ( ‎ﶏ‎ → ‎مجم‎ ) ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER MEEM   # →‎مخم‎→
+
+FDC0 ; 0645 062C 0649 ;        SA      # ( ‎ﷀ‎ → ‎مجى‎ ) ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎مجي‎→
+FDB9 ; 0645 062C 0649 ;        SA      # ( ‎ﶹ‎ → ‎مجى‎ ) ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎مخي‎→
+
+FCCF ; 0645 062D ;     SA      # ( ‎ﳏ‎ → ‎مح‎ ) ARABIC LIGATURE MEEM WITH HAH INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH     # 
+FC46 ; 0645 062D ;     SA      # ( ‎ﱆ‎ → ‎مح‎ ) ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH    # 
+
+FD89 ; 0645 062D 062C ;        SA      # ( ‎ﶉ‎ → ‎محج‎ ) ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH, ARABIC LETTER JEEM     # 
+
+FD8A ; 0645 062D 0645 ;        SA      # ( ‎ﶊ‎ → ‎محم‎ ) ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH, ARABIC LETTER MEEM     # 
+
+FDF4 ; 0645 062D 0645 062F ;   SA      # ( ‎ﷴ‎ → ‎محمد‎ ) ARABIC LIGATURE MOHAMMAD ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH, ARABIC LETTER MEEM, ARABIC LETTER DAL      # 
+
+FD8B ; 0645 062D 0649 ;        SA      # ( ‎ﶋ‎ → ‎محى‎ ) ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA        # →‎محي‎→
+
+FCD1 ; 0645 0645 ;     SA      # ( ‎ﳑ‎ → ‎مم‎ ) ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER MEEM   # 
+FC89 ; 0645 0645 ;     SA      # ( ‎ﲉ‎ → ‎مم‎ ) ARABIC LIGATURE MEEM WITH MEEM FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+FC48 ; 0645 0645 ;     SA      # ( ‎ﱈ‎ → ‎مم‎ ) ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER MEEM  # 
+
+FDB1 ; 0645 0645 0649 ;        SA      # ( ‎ﶱ‎ → ‎ممى‎ ) ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA      # →‎ممي‎→
+
+FC49 ; 0645 0649 ;     SA      # ( ‎ﱉ‎ → ‎مى‎ ) ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA  # 
+FC4A ; 0645 0649 ;     SA      # ( ‎ﱊ‎ → ‎مى‎ ) ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA   # →‎مي‎→
+
+FB9F ; 06BA ;  SA      # ( ‎ﮟ‎ → ‎ں‎ ) ARABIC LETTER NOON GHUNNA FINAL FORM → ARABIC LETTER NOON GHUNNA # 
+FB9E ; 06BA ;  SA      # ( ‎ﮞ‎ → ‎ں‎ ) ARABIC LETTER NOON GHUNNA ISOLATED FORM → ARABIC LETTER NOON GHUNNA      # 
+
+FEEB ; 0647 ;  SA      # ( ‎ﻫ‎ → ‎ه‎ ) ARABIC LETTER HEH INITIAL FORM → ARABIC LETTER HEH       # 
+FEEC ; 0647 ;  SA      # ( ‎ﻬ‎ → ‎ه‎ ) ARABIC LETTER HEH MEDIAL FORM → ARABIC LETTER HEH        # 
+FEEA ; 0647 ;  SA      # ( ‎ﻪ‎ → ‎ه‎ ) ARABIC LETTER HEH FINAL FORM → ARABIC LETTER HEH # 
+FEE9 ; 0647 ;  SA      # ( ‎ﻩ‎ → ‎ه‎ ) ARABIC LETTER HEH ISOLATED FORM → ARABIC LETTER HEH      # 
+06BE ; 0647 ;  SA      # ( ‎ھ‎ → ‎ه‎ ) ARABIC LETTER HEH DOACHASHMEE → ARABIC LETTER HEH # 
+FBAC ; 0647 ;  SA      # ( ‎ﮬ‎ → ‎ه‎ ) ARABIC LETTER HEH DOACHASHMEE INITIAL FORM → ARABIC LETTER HEH   # →‎ﻫ‎→
+FBAD ; 0647 ;  SA      # ( ‎ﮭ‎ → ‎ه‎ ) ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM → ARABIC LETTER HEH    # →‎ﻬ‎→
+FBAB ; 0647 ;  SA      # ( ‎ﮫ‎ → ‎ه‎ ) ARABIC LETTER HEH DOACHASHMEE FINAL FORM → ARABIC LETTER HEH     # →‎ﻬ‎→
+FBAA ; 0647 ;  SA      # ( ‎ﮪ‎ → ‎ه‎ ) ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM → ARABIC LETTER HEH  # 
+06C1 ; 0647 ;  SA      # ( ‎ہ‎ → ‎ه‎ ) ARABIC LETTER HEH GOAL → ARABIC LETTER HEH        # →‎ﮦ‎→
+FBA8 ; 0647 ;  SA      # ( ‎ﮨ‎ → ‎ه‎ ) ARABIC LETTER HEH GOAL INITIAL FORM → ARABIC LETTER HEH  # →‎ہ‎→→‎ﮦ‎→
+FBA9 ; 0647 ;  SA      # ( ‎ﮩ‎ → ‎ه‎ ) ARABIC LETTER HEH GOAL MEDIAL FORM → ARABIC LETTER HEH   # →‎ہ‎→→‎ﮦ‎→
+FBA7 ; 0647 ;  SA      # ( ‎ﮧ‎ → ‎ه‎ ) ARABIC LETTER HEH GOAL FINAL FORM → ARABIC LETTER HEH    # →‎ہ‎→→‎ﮦ‎→
+FBA6 ; 0647 ;  SA      # ( ‎ﮦ‎ → ‎ه‎ ) ARABIC LETTER HEH GOAL ISOLATED FORM → ARABIC LETTER HEH # 
+06D5 ; 0647 ;  SA      # ( ‎ە‎ → ‎ه‎ ) ARABIC LETTER AE → ARABIC LETTER HEH      # 
+
+FCD9 ; 0647 0670 ;     SA      # ( ‎ﳙ‎ → ‎هٰ‎ ) ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM → ARABIC LETTER HEH, ARABIC LETTER SUPERSCRIPT ALEF     # 
+
+FCD7 ; 0647 062C ;     SA      # ( ‎ﳗ‎ → ‎هج‎ ) ARABIC LIGATURE HEH WITH JEEM INITIAL FORM → ARABIC LETTER HEH, ARABIC LETTER JEEM     # 
+FC51 ; 0647 062C ;     SA      # ( ‎ﱑ‎ → ‎هج‎ ) ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM → ARABIC LETTER HEH, ARABIC LETTER JEEM    # 
+
+FCD8 ; 0647 0645 ;     SA      # ( ‎ﳘ‎ → ‎هم‎ ) ARABIC LIGATURE HEH WITH MEEM INITIAL FORM → ARABIC LETTER HEH, ARABIC LETTER MEEM     # 
+FC52 ; 0647 0645 ;     SA      # ( ‎ﱒ‎ → ‎هم‎ ) ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM → ARABIC LETTER HEH, ARABIC LETTER MEEM    # 
+
+FD93 ; 0647 0645 062C ;        SA      # ( ‎ﶓ‎ → ‎همج‎ ) ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM → ARABIC LETTER HEH, ARABIC LETTER MEEM, ARABIC LETTER JEEM     # 
+
+FD94 ; 0647 0645 0645 ;        SA      # ( ‎ﶔ‎ → ‎همم‎ ) ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER HEH, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+
+FC53 ; 0647 0649 ;     SA      # ( ‎ﱓ‎ → ‎هى‎ ) ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER HEH, ARABIC LETTER ALEF MAKSURA    # 
+FC54 ; 0647 0649 ;     SA      # ( ‎ﱔ‎ → ‎هى‎ ) ARABIC LIGATURE HEH WITH YEH ISOLATED FORM → ARABIC LETTER HEH, ARABIC LETTER ALEF MAKSURA     # →‎هي‎→
+
+06C2 ; 06C0 ;  SA      # ( ‎ۂ‎ → ‎ۀ‎ ) ARABIC LETTER HEH GOAL WITH HAMZA ABOVE → ARABIC LETTER HEH WITH YEH ABOVE        # →‎ﮤ‎→
+FBA5 ; 06C0 ;  SA      # ( ‎ﮥ‎ → ‎ۀ‎ ) ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM → ARABIC LETTER HEH WITH YEH ABOVE   # 
+FBA4 ; 06C0 ;  SA      # ( ‎ﮤ‎ → ‎ۀ‎ ) ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM → ARABIC LETTER HEH WITH YEH ABOVE        # 
+
+FEEE ; 0648 ;  SA      # ( ‎ﻮ‎ → ‎و‎ ) ARABIC LETTER WAW FINAL FORM → ARABIC LETTER WAW # 
+FEED ; 0648 ;  SA      # ( ‎ﻭ‎ → ‎و‎ ) ARABIC LETTER WAW ISOLATED FORM → ARABIC LETTER WAW      # 
+
+0624 ; 0648 0674 ;     SA      # ( ‎ؤ‎ → ‎وٴ‎ ) ARABIC LETTER WAW WITH HAMZA ABOVE → ARABIC LETTER WAW, ARABIC LETTER HIGH HAMZA        # →‎ٶ‎→
+FE86 ; 0648 0674 ;     SA      # ( ‎ﺆ‎ → ‎وٴ‎ ) ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM → ARABIC LETTER WAW, ARABIC LETTER HIGH HAMZA    # →‎ٶ‎→
+FE85 ; 0648 0674 ;     SA      # ( ‎ﺅ‎ → ‎وٴ‎ ) ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER WAW, ARABIC LETTER HIGH HAMZA # →‎ٶ‎→
+0676 ; 0648 0674 ;     SA      # ( ‎ٶ‎ → ‎وٴ‎ ) ARABIC LETTER HIGH HAMZA WAW → ARABIC LETTER WAW, ARABIC LETTER HIGH HAMZA      # 
+
+FDF8 ; 0648 0633 0644 0645 ;   SA      # ( ‎ﷸ‎ → ‎وسلم‎ ) ARABIC LIGATURE WASALLAM ISOLATED FORM → ARABIC LETTER WAW, ARABIC LETTER SEEN, ARABIC LETTER LAM, ARABIC LETTER MEEM      # 
+
+FBE1 ; 06C5 ;  SA      # ( ‎ﯡ‎ → ‎ۅ‎ ) ARABIC LETTER KIRGHIZ OE FINAL FORM → ARABIC LETTER KIRGHIZ OE   # 
+FBE0 ; 06C5 ;  SA      # ( ‎ﯠ‎ → ‎ۅ‎ ) ARABIC LETTER KIRGHIZ OE ISOLATED FORM → ARABIC LETTER KIRGHIZ OE        # 
+
+FBDA ; 06C6 ;  SA      # ( ‎ﯚ‎ → ‎ۆ‎ ) ARABIC LETTER OE FINAL FORM → ARABIC LETTER OE   # 
+FBD9 ; 06C6 ;  SA      # ( ‎ﯙ‎ → ‎ۆ‎ ) ARABIC LETTER OE ISOLATED FORM → ARABIC LETTER OE        # 
+
+FBD8 ; 06C7 ;  SA      # ( ‎ﯘ‎ → ‎ۇ‎ ) ARABIC LETTER U FINAL FORM → ARABIC LETTER U     # 
+FBD7 ; 06C7 ;  SA      # ( ‎ﯗ‎ → ‎ۇ‎ ) ARABIC LETTER U ISOLATED FORM → ARABIC LETTER U  # 
+
+0677 ; 06C7 0674 ;     SA      # ( ‎ٷ‎ → ‎ۇٴ‎ ) ARABIC LETTER U WITH HAMZA ABOVE → ARABIC LETTER U, ARABIC LETTER HIGH HAMZA    # 
+FBDD ; 06C7 0674 ;     SA      # ( ‎ﯝ‎ → ‎ۇٴ‎ ) ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER U, ARABIC LETTER HIGH HAMZA     # 
+
+FBDC ; 06C8 ;  SA      # ( ‎ﯜ‎ → ‎ۈ‎ ) ARABIC LETTER YU FINAL FORM → ARABIC LETTER YU   # 
+FBDB ; 06C8 ;  SA      # ( ‎ﯛ‎ → ‎ۈ‎ ) ARABIC LETTER YU ISOLATED FORM → ARABIC LETTER YU        # 
+
+FBE3 ; 06C9 ;  SA      # ( ‎ﯣ‎ → ‎ۉ‎ ) ARABIC LETTER KIRGHIZ YU FINAL FORM → ARABIC LETTER KIRGHIZ YU   # 
+FBE2 ; 06C9 ;  SA      # ( ‎ﯢ‎ → ‎ۉ‎ ) ARABIC LETTER KIRGHIZ YU ISOLATED FORM → ARABIC LETTER KIRGHIZ YU        # 
+
+FBDF ; 06CB ;  SA      # ( ‎ﯟ‎ → ‎ۋ‎ ) ARABIC LETTER VE FINAL FORM → ARABIC LETTER VE   # 
+FBDE ; 06CB ;  SA      # ( ‎ﯞ‎ → ‎ۋ‎ ) ARABIC LETTER VE ISOLATED FORM → ARABIC LETTER VE        # 
+
+FBE8 ; 0649 ;  SA      # ( ‎ﯨ‎ → ‎ى‎ ) ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM → ARABIC LETTER ALEF MAKSURA       # 
+FBE9 ; 0649 ;  SA      # ( ‎ﯩ‎ → ‎ى‎ ) ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM → ARABIC LETTER ALEF MAKSURA        # 
+FEF0 ; 0649 ;  SA      # ( ‎ﻰ‎ → ‎ى‎ ) ARABIC LETTER ALEF MAKSURA FINAL FORM → ARABIC LETTER ALEF MAKSURA       # 
+FEEF ; 0649 ;  SA      # ( ‎ﻯ‎ → ‎ى‎ ) ARABIC LETTER ALEF MAKSURA ISOLATED FORM → ARABIC LETTER ALEF MAKSURA    # 
+064A ; 0649 ;  SA      # ( ‎ي‎ → ‎ى‎ ) ARABIC LETTER YEH → ARABIC LETTER ALEF MAKSURA    # →‎ﻴ‎→→‎ﯿ‎→→‎ی‎→
+FEF3 ; 0649 ;  SA      # ( ‎ﻳ‎ → ‎ى‎ ) ARABIC LETTER YEH INITIAL FORM → ARABIC LETTER ALEF MAKSURA      # →‎ﯿ‎→→‎ی‎→
+FEF4 ; 0649 ;  SA      # ( ‎ﻴ‎ → ‎ى‎ ) ARABIC LETTER YEH MEDIAL FORM → ARABIC LETTER ALEF MAKSURA       # →‎ﯿ‎→→‎ی‎→
+FEF2 ; 0649 ;  SA      # ( ‎ﻲ‎ → ‎ى‎ ) ARABIC LETTER YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA        # →‎ي‎→→‎ﻴ‎→→‎ﯿ‎→→‎ی‎→
+FEF1 ; 0649 ;  SA      # ( ‎ﻱ‎ → ‎ى‎ ) ARABIC LETTER YEH ISOLATED FORM → ARABIC LETTER ALEF MAKSURA     # →‎ي‎→→‎ﻴ‎→→‎ﯿ‎→→‎ی‎→
+06CC ; 0649 ;  SA      # ( ‎ی‎ → ‎ى‎ ) ARABIC LETTER FARSI YEH → ARABIC LETTER ALEF MAKSURA      # 
+FBFE ; 0649 ;  SA      # ( ‎ﯾ‎ → ‎ى‎ ) ARABIC LETTER FARSI YEH INITIAL FORM → ARABIC LETTER ALEF MAKSURA        # →‎ی‎→
+FBFF ; 0649 ;  SA      # ( ‎ﯿ‎ → ‎ى‎ ) ARABIC LETTER FARSI YEH MEDIAL FORM → ARABIC LETTER ALEF MAKSURA # →‎ی‎→
+FBFD ; 0649 ;  SA      # ( ‎ﯽ‎ → ‎ى‎ ) ARABIC LETTER FARSI YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA  # →‎ی‎→
+FBFC ; 0649 ;  SA      # ( ‎ﯼ‎ → ‎ى‎ ) ARABIC LETTER FARSI YEH ISOLATED FORM → ARABIC LETTER ALEF MAKSURA       # 
+
+FC90 ; 0649 0670 ;     SA      # ( ‎ﲐ‎ → ‎ىٰ‎ ) ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER SUPERSCRIPT ALEF     # 
+FC5D ; 0649 0670 ;     SA      # ( ‎ﱝ‎ → ‎ىٰ‎ ) ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER SUPERSCRIPT ALEF  # 
+
+0626 ; 0649 0674 ;     SA      # ( ‎ئ‎ → ‎ىٴ‎ ) ARABIC LETTER YEH WITH HAMZA ABOVE → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA       # →‎ٸ‎→→‎يٴ‎→
+FE8B ; 0649 0674 ;     SA      # ( ‎ﺋ‎ → ‎ىٴ‎ ) ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA # →‎ئ‎→→‎ٸ‎→→‎يٴ‎→
+FE8C ; 0649 0674 ;     SA      # ( ‎ﺌ‎ → ‎ىٴ‎ ) ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA  # →‎ئ‎→→‎ٸ‎→→‎يٴ‎→
+FE8A ; 0649 0674 ;     SA      # ( ‎ﺊ‎ → ‎ىٴ‎ ) ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA   # →‎ئ‎→→‎ٸ‎→→‎يٴ‎→
+FE89 ; 0649 0674 ;     SA      # ( ‎ﺉ‎ → ‎ىٴ‎ ) ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA        # →‎ٸ‎→→‎يٴ‎→
+0678 ; 0649 0674 ;     SA      # ( ‎ٸ‎ → ‎ىٴ‎ ) ARABIC LETTER HIGH HAMZA YEH → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA     # →‎يٴ‎→
+
+FBEB ; 0649 0674 0627 ;        SA      # ( ‎ﯫ‎ → ‎ىٴا‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF # →‎ئا‎→
+FBEA ; 0649 0674 0627 ;        SA      # ( ‎ﯪ‎ → ‎ىٴا‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF      # →‎ئا‎→
+
+FC67 ; 0649 0674 0628 ;        SA      # ( ‎ﱧ‎ → ‎ىٴب‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER BEH  # →‎ئن‎→
+
+FBF8 ; 0649 0674 067A ;        SA      # ( ‎ﯸ‎ → ‎ىٴٺ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER TTEHEH        # →‎ئې‎→
+FBF7 ; 0649 0674 067A ;        SA      # ( ‎ﯷ‎ → ‎ىٴٺ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER TTEHEH  # →‎ئې‎→
+FBF6 ; 0649 0674 067A ;        SA      # ( ‎ﯶ‎ → ‎ىٴٺ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER TTEHEH       # →‎ئې‎→
+
+FC97 ; 0649 0674 062C ;        SA      # ( ‎ﲗ‎ → ‎ىٴج‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER JEEM       # →‎ئج‎→
+FC00 ; 0649 0674 062C ;        SA      # ( ‎ﰀ‎ → ‎ىٴج‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER JEEM      # →‎ئج‎→
+FC99 ; 0649 0674 062C ;        SA      # ( ‎ﲙ‎ → ‎ىٴج‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER JEEM       # →‎ئخ‎→→‎يٴج‎→→‎ئج‎→
+
+FC98 ; 0649 0674 062D ;        SA      # ( ‎ﲘ‎ → ‎ىٴح‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HAH # →‎ئح‎→
+FC01 ; 0649 0674 062D ;        SA      # ( ‎ﰁ‎ → ‎ىٴح‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HAH        # →‎ئح‎→
+
+FC64 ; 0649 0674 0631 ;        SA      # ( ‎ﱤ‎ → ‎ىٴر‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER REH   # →‎ئر‎→
+
+FC65 ; 0649 0674 0632 ;        SA      # ( ‎ﱥ‎ → ‎ىٴز‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ZAIN # →‎ئز‎→
+
+FC9A ; 0649 0674 0645 ;        SA      # ( ‎ﲚ‎ → ‎ىٴم‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER MEEM       # →‎ئم‎→
+FCDF ; 0649 0674 0645 ;        SA      # ( ‎ﳟ‎ → ‎ىٴم‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER MEEM        # →‎ئم‎→
+FC66 ; 0649 0674 0645 ;        SA      # ( ‎ﱦ‎ → ‎ىٴم‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER MEEM # →‎ئم‎→
+FC02 ; 0649 0674 0645 ;        SA      # ( ‎ﰂ‎ → ‎ىٴم‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER MEEM      # →‎ئم‎→
+
+FC9B ; 0649 0674 0647 ;        SA      # ( ‎ﲛ‎ → ‎ىٴه‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HEH # →‎ئه‎→
+FCE0 ; 0649 0674 0647 ;        SA      # ( ‎ﳠ‎ → ‎ىٴه‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HEH  # →‎ئه‎→
+FBED ; 0649 0674 0647 ;        SA      # ( ‎ﯭ‎ → ‎ىٴه‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HEH    # →‎ئە‎→→‎يٴه‎→→‎ئه‎→
+FBEC ; 0649 0674 0647 ;        SA      # ( ‎ﯬ‎ → ‎ىٴه‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HEH # →‎ئە‎→→‎يٴه‎→→‎ئه‎→
+
+FBEF ; 0649 0674 0648 ;        SA      # ( ‎ﯯ‎ → ‎ىٴو‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER WAW   # →‎ئو‎→
+FBEE ; 0649 0674 0648 ;        SA      # ( ‎ﯮ‎ → ‎ىٴو‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER WAW        # →‎ئو‎→
+
+FBF3 ; 0649 0674 06C6 ;        SA      # ( ‎ﯳ‎ → ‎ىٴۆ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER OE     # →‎ئۆ‎→
+FBF2 ; 0649 0674 06C6 ;        SA      # ( ‎ﯲ‎ → ‎ىٴۆ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER OE  # →‎ئۆ‎→
+
+FBF1 ; 0649 0674 06C7 ;        SA      # ( ‎ﯱ‎ → ‎ىٴۇ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER U       # →‎ئۇ‎→
+FBF0 ; 0649 0674 06C7 ;        SA      # ( ‎ﯰ‎ → ‎ىٴۇ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER U    # →‎ئۇ‎→
+
+FBF5 ; 0649 0674 06C8 ;        SA      # ( ‎ﯵ‎ → ‎ىٴۈ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER YU     # →‎ئۈ‎→
+FBF4 ; 0649 0674 06C8 ;        SA      # ( ‎ﯴ‎ → ‎ىٴۈ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER YU  # →‎ئۈ‎→
+
+FBFB ; 0649 0674 0649 ;        SA      # ( ‎ﯻ‎ → ‎ىٴى‎ ) ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA        # →‎ئى‎→
+FBFA ; 0649 0674 0649 ;        SA      # ( ‎ﯺ‎ → ‎ىٴى‎ ) ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA  # →‎ئى‎→
+FC68 ; 0649 0674 0649 ;        SA      # ( ‎ﱨ‎ → ‎ىٴى‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA # →‎ئى‎→
+FBF9 ; 0649 0674 0649 ;        SA      # ( ‎ﯹ‎ → ‎ىٴى‎ ) ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA       # →‎ئى‎→
+FC03 ; 0649 0674 0649 ;        SA      # ( ‎ﰃ‎ → ‎ىٴى‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA      # →‎ئى‎→
+FC69 ; 0649 0674 0649 ;        SA      # ( ‎ﱩ‎ → ‎ىٴى‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA  # →‎ئي‎→→‎يٴى‎→→‎ئى‎→
+FC04 ; 0649 0674 0649 ;        SA      # ( ‎ﰄ‎ → ‎ىٴى‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA       # →‎ئي‎→→‎يٴى‎→→‎ئى‎→
+
+FC94 ; 0649 0628 ;     SA      # ( ‎ﲔ‎ → ‎ىب‎ ) ARABIC LIGATURE YEH WITH NOON FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER BEH       # →‎ين‎→
+
+FDAF ; 0649 062C 0649 ;        SA      # ( ‎ﶯ‎ → ‎ىجى‎ ) ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA       # →‎يجي‎→
+
+FDAE ; 0649 062D 0649 ;        SA      # ( ‎ﶮ‎ → ‎ىحى‎ ) ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA # →‎يحي‎→
+
+FC91 ; 0649 0631 ;     SA      # ( ‎ﲑ‎ → ‎ىر‎ ) ARABIC LIGATURE YEH WITH REH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER REH        # →‎ير‎→
+
+FC92 ; 0649 0632 ;     SA      # ( ‎ﲒ‎ → ‎ىز‎ ) ARABIC LIGATURE YEH WITH ZAIN FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ZAIN      # →‎يز‎→
+
+FCDD ; 0649 0645 ;     SA      # ( ‎ﳝ‎ → ‎ىم‎ ) ARABIC LIGATURE YEH WITH MEEM INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM    # →‎يم‎→
+FCF0 ; 0649 0645 ;     SA      # ( ‎ﳰ‎ → ‎ىم‎ ) ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM     # →‎يم‎→
+FC93 ; 0649 0645 ;     SA      # ( ‎ﲓ‎ → ‎ىم‎ ) ARABIC LIGATURE YEH WITH MEEM FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM      # →‎يم‎→
+FC58 ; 0649 0645 ;     SA      # ( ‎ﱘ‎ → ‎ىم‎ ) ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM   # →‎يم‎→
+
+FD9D ; 0649 0645 0645 ;        SA      # ( ‎ﶝ‎ → ‎ىمم‎ ) ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM, ARABIC LETTER MEEM    # →‎يمم‎→
+FD9C ; 0649 0645 0645 ;        SA      # ( ‎ﶜ‎ → ‎ىمم‎ ) ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM, ARABIC LETTER MEEM      # →‎يمم‎→
+
+FDB0 ; 0649 0645 0649 ;        SA      # ( ‎ﶰ‎ → ‎ىمى‎ ) ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA       # →‎يمي‎→
+
+FCDE ; 0649 0647 ;     SA      # ( ‎ﳞ‎ → ‎ىه‎ ) ARABIC LIGATURE YEH WITH HEH INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HEH      # →‎يه‎→
+FCF1 ; 0649 0647 ;     SA      # ( ‎ﳱ‎ → ‎ىه‎ ) ARABIC LIGATURE YEH WITH HEH MEDIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HEH       # →‎يه‎→
+
+FC95 ; 0649 0649 ;     SA      # ( ‎ﲕ‎ → ‎ىى‎ ) ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ALEF MAKSURA      # →‎يى‎→
+FC59 ; 0649 0649 ;     SA      # ( ‎ﱙ‎ → ‎ىى‎ ) ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ALEF MAKSURA   # →‎يى‎→
+FC96 ; 0649 0649 ;     SA      # ( ‎ﲖ‎ → ‎ىى‎ ) ARABIC LIGATURE YEH WITH YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ALEF MAKSURA       # →‎يي‎→
+FC5A ; 0649 0649 ;     SA      # ( ‎ﱚ‎ → ‎ىى‎ ) ARABIC LIGATURE YEH WITH YEH ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ALEF MAKSURA    # →‎يي‎→
+
+FBAF ; 06D2 ;  SA      # ( ‎ﮯ‎ → ‎ے‎ ) ARABIC LETTER YEH BARREE FINAL FORM → ARABIC LETTER YEH BARREE   # 
+FBAE ; 06D2 ;  SA      # ( ‎ﮮ‎ → ‎ے‎ ) ARABIC LETTER YEH BARREE ISOLATED FORM → ARABIC LETTER YEH BARREE        # 
+
+FBB1 ; 06D3 ;  SA      # ( ‎ﮱ‎ → ‎ۓ‎ ) ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM → ARABIC LETTER YEH BARREE WITH HAMZA ABOVE # 
+FBB0 ; 06D3 ;  SA      # ( ‎ﮰ‎ → ‎ۓ‎ ) ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER YEH BARREE WITH HAMZA ABOVE      # 
+
+079A ; 0799 ;  SA      # ( ‎ޚ‎ → ‎ޙ‎ ) THAANA LETTER KHAA → THAANA LETTER HHAA   # 
+
+07A3 ; 07A2 ;  SA      # ( ‎ޣ‎ → ‎ޢ‎ ) THAANA LETTER GHAINU → THAANA LETTER AINU # 
+
+07A1 ; 07A0 ;  SA      # ( ‎ޡ‎ → ‎ޠ‎ ) THAANA LETTER ZO → THAANA LETTER TO       # 
+
+079F ; 079E ;  SA      # ( ‎ޟ‎ → ‎ޞ‎ ) THAANA LETTER DAADHU → THAANA LETTER SAADHU       # 
+
+0906 ; 0905 093E ;     SA      # ( आ → अा ) DEVANAGARI LETTER AA → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN AA     # 
+
+0912 ; 0905 093E 0946 ;        SA      # ( ऒ → अाॆ ) DEVANAGARI LETTER SHORT O → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN AA, DEVANAGARI VOWEL SIGN SHORT E      # →अॊ→→आॆ→
+
+0913 ; 0905 093E 0947 ;        SA      # ( ओ → अाे ) DEVANAGARI LETTER O → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN AA, DEVANAGARI VOWEL SIGN E  # →अो→→आे→
+
+0914 ; 0905 093E 0948 ;        SA      # ( औ → अाै ) DEVANAGARI LETTER AU → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN AA, DEVANAGARI VOWEL SIGN AI        # →अौ→→आै→
+
+0904 ; 0905 0946 ;     SA      # ( ऄ → अॆ ) DEVANAGARI LETTER SHORT A → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN SHORT E   # 
+
+0911 ; 0905 0949 ;     SA      # ( ऑ → अॉ ) DEVANAGARI LETTER CANDRA O → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN CANDRA O # 
+
+090D ; 090F 0945 ;     SA      # ( ऍ → एॅ ) DEVANAGARI LETTER CANDRA E → DEVANAGARI LETTER E, DEVANAGARI VOWEL SIGN CANDRA E # 
+
+090E ; 090F 0946 ;     SA      # ( ऎ → एॆ ) DEVANAGARI LETTER SHORT E → DEVANAGARI LETTER E, DEVANAGARI VOWEL SIGN SHORT E   # 
+
+0910 ; 090F 0947 ;     SA      # ( ऐ → एे ) DEVANAGARI LETTER AI → DEVANAGARI LETTER E, DEVANAGARI VOWEL SIGN E      # 
+
+0908 ; 0930 094D 0907 ;        SA      # ( ई → र्इ ) DEVANAGARI LETTER II → DEVANAGARI LETTER RA, DEVANAGARI SIGN VIRAMA, DEVANAGARI LETTER I      # 
+
+0986 ; 0985 09BE ;     SA      # ( আ → অা ) BENGALI LETTER AA → BENGALI LETTER A, BENGALI VOWEL SIGN AA      # 
+
+09E0 ; 098B 09C3 ;     SA      # ( ৠ → ঋৃ ) BENGALI LETTER VOCALIC RR → BENGALI LETTER VOCALIC R, BENGALI VOWEL SIGN VOCALIC R       # 
+09E1 ; 098B 09C3 ;     SA      # ( ৡ → ঋৃ ) BENGALI LETTER VOCALIC LL → BENGALI LETTER VOCALIC R, BENGALI VOWEL SIGN VOCALIC R       # →ঌৢ→→ৠ→
+
+0A09 ; 0A73 0A41 ;     SA      # ( ਉ → ੳੁ ) GURMUKHI LETTER U → GURMUKHI URA, GURMUKHI VOWEL SIGN U  # 
+
+0A0A ; 0A73 0A42 ;     SA      # ( ਊ → ੳੂ ) GURMUKHI LETTER UU → GURMUKHI URA, GURMUKHI VOWEL SIGN UU        # 
+
+0A06 ; 0A05 0A3E ;     SA      # ( ਆ → ਅਾ ) GURMUKHI LETTER AA → GURMUKHI LETTER A, GURMUKHI VOWEL SIGN AA   # 
+
+0A10 ; 0A05 0A48 ;     SA      # ( ਐ → ਅੈ ) GURMUKHI LETTER AI → GURMUKHI LETTER A, GURMUKHI VOWEL SIGN AI   # 
+
+0A14 ; 0A05 0A4C ;     SA      # ( ਔ → ਅੌ ) GURMUKHI LETTER AU → GURMUKHI LETTER A, GURMUKHI VOWEL SIGN AU   # 
+
+0A07 ; 0A72 0A3F ;     SA      # ( ਇ → ੲਿ ) GURMUKHI LETTER I → GURMUKHI IRI, GURMUKHI VOWEL SIGN I  # 
+
+0A08 ; 0A72 0A40 ;     SA      # ( ਈ → ੲੀ ) GURMUKHI LETTER II → GURMUKHI IRI, GURMUKHI VOWEL SIGN II        # 
+
+0A0F ; 0A72 0A47 ;     SA      # ( ਏ → ੲੇ ) GURMUKHI LETTER EE → GURMUKHI IRI, GURMUKHI VOWEL SIGN EE        # 
+
+0A86 ; 0A85 0ABE ;     SA      # ( આ → અા ) GUJARATI LETTER AA → GUJARATI LETTER A, GUJARATI VOWEL SIGN AA   # 
+
+0A91 ; 0A85 0ABE 0AC5 ;        SA      # ( ઑ → અાૅ ) GUJARATI VOWEL CANDRA O → GUJARATI LETTER A, GUJARATI VOWEL SIGN AA, GUJARATI VOWEL SIGN CANDRA E     # →અૉ→→આૅ→
+
+0A93 ; 0A85 0ABE 0AC7 ;        SA      # ( ઓ → અાે ) GUJARATI LETTER O → GUJARATI LETTER A, GUJARATI VOWEL SIGN AA, GUJARATI VOWEL SIGN E  # →અો→→આે→
+
+0A94 ; 0A85 0ABE 0AC8 ;        SA      # ( ઔ → અાૈ ) GUJARATI LETTER AU → GUJARATI LETTER A, GUJARATI VOWEL SIGN AA, GUJARATI VOWEL SIGN AI        # →અૌ→→આૈ→
+
+0A8D ; 0A85 0AC5 ;     SA      # ( ઍ → અૅ ) GUJARATI VOWEL CANDRA E → GUJARATI LETTER A, GUJARATI VOWEL SIGN CANDRA E        # 
+
+0A8F ; 0A85 0AC7 ;     SA      # ( એ → અે ) GUJARATI LETTER E → GUJARATI LETTER A, GUJARATI VOWEL SIGN E     # 
+
+0A90 ; 0A85 0AC8 ;     SA      # ( ઐ → અૈ ) GUJARATI LETTER AI → GUJARATI LETTER A, GUJARATI VOWEL SIGN AI   # 
+
+0B06 ; 0B05 0B3E ;     SA      # ( ଆ → ଅା ) ORIYA LETTER AA → ORIYA LETTER A, ORIYA VOWEL SIGN AA    # 
+
+0BEE ; 0B85 ;  SA      # ( ௮ → அ ) TAMIL DIGIT EIGHT → TAMIL LETTER A  # 
+
+0BB0 ; 0B88 ;  SA      # ( ர → ஈ ) TAMIL LETTER RA → TAMIL LETTER II   # →ா→
+0BBE ; 0B88 ;  SA      # ( ா → ஈ ) TAMIL VOWEL SIGN AA → TAMIL LETTER II       # 
+
+0BEB ; 0B88 0BC1 ;     SA      # ( ௫ → ஈு ) TAMIL DIGIT FIVE → TAMIL LETTER II, TAMIL VOWEL SIGN U   # →ரு→
+
+0BE8 ; 0B89 ;  SA      # ( ௨ → உ ) TAMIL DIGIT TWO → TAMIL LETTER U    # 
+
+0B8A ; 0B89 0BB3 ;     SA      # ( ஊ → உள ) TAMIL LETTER UU → TAMIL LETTER U, TAMIL LETTER LLA       # 
+
+0BED ; 0B8E ;  SA      # ( ௭ → எ ) TAMIL DIGIT SEVEN → TAMIL LETTER E  # 
+
+0BF7 ; 0B8E 0BB5 ;     SA      #* ( ௷ → எவ ) TAMIL CREDIT SIGN → TAMIL LETTER E, TAMIL LETTER VA     # 
+
+0B9C ; 0B90 ;  SA      # ( ஜ → ஐ ) TAMIL LETTER JA → TAMIL LETTER AI   # 
+
+0BE7 ; 0B95 ;  SA      # ( ௧ → க ) TAMIL DIGIT ONE → TAMIL LETTER KA   # 
+
+0BEA ; 0B9A ;  SA      # ( ௪ → ச ) TAMIL DIGIT FOUR → TAMIL LETTER CA  # 
+
+0BEC ; 0B9A 0BC1 ;     SA      # ( ௬ → சு ) TAMIL DIGIT SIX → TAMIL LETTER CA, TAMIL VOWEL SIGN U    # 
+
+0BF2 ; 0B9A 0BC2 ;     SA      #* ( ௲ → சூ ) TAMIL NUMBER ONE THOUSAND → TAMIL LETTER CA, TAMIL VOWEL SIGN UU        # 
+
+0BFA ; 0BA8 0BC0 ;     SA      #* ( ௺ → நீ ) TAMIL NUMBER SIGN → TAMIL LETTER NA, TAMIL VOWEL SIGN II        # 
+
+0BF4 ; 0BAE 0BC0 ;     SA      #* ( ௴ → மீ ) TAMIL MONTH SIGN → TAMIL LETTER MA, TAMIL VOWEL SIGN II # 
+
+0BF0 ; 0BAF ;  SA      #* ( ௰ → ய ) TAMIL NUMBER TEN → TAMIL LETTER YA # 
+
+0BD7 ; 0BB3 ;  SA      # ( ௗ → ள ) TAMIL AU LENGTH MARK → TAMIL LETTER LLA     # 
+
+0BC8 ; 0BA9 ;  SA      # ( ை → ன ) TAMIL VOWEL SIGN AI → TAMIL LETTER NNNA     # 
+
+0BF8 ; 0BB7 ;  SA      #* ( ௸ → ஷ ) TAMIL AS ABOVE SIGN → TAMIL LETTER SSA     # 
+
+0BCA ; 0BC6 0B88 ;     SA      # ( ொ → ெஈ ) TAMIL VOWEL SIGN O → TAMIL VOWEL SIGN E, TAMIL LETTER II # →ெர→
+
+0BCC ; 0BC6 0BB3 ;     SA      # ( ௌ → ெள ) TAMIL VOWEL SIGN AU → TAMIL VOWEL SIGN E, TAMIL LETTER LLA       # 
+
+0BCB ; 0BC7 0B88 ;     SA      # ( ோ → ேஈ ) TAMIL VOWEL SIGN OO → TAMIL VOWEL SIGN EE, TAMIL LETTER II       # →ேர→
+
+0C60 ; 0C0B 0C3E ;     SA      # ( ౠ → ఋా ) TELUGU LETTER VOCALIC RR → TELUGU LETTER VOCALIC R, TELUGU VOWEL SIGN AA # 
+
+0C61 ; 0C0C 0C3E ;     SA      # ( ౡ → ఌా ) TELUGU LETTER VOCALIC LL → TELUGU LETTER VOCALIC L, TELUGU VOWEL SIGN AA # 
+
+0C14 ; 0C12 0C4C ;     SA      # ( ఔ → ఒౌ ) TELUGU LETTER AU → TELUGU LETTER O, TELUGU VOWEL SIGN AU # 
+
+0C13 ; 0C12 0C55 ;     SA      # ( ఓ → ఒౕ ) TELUGU LETTER OO → TELUGU LETTER O, TELUGU LENGTH MARK   # 
+
+0C22 ; 0C21 0323 ;     SA      # ( ఢ → డ̣ ) TELUGU LETTER DDHA → TELUGU LETTER DDA, COMBINING DOT BELOW       # 
+
+0C2D ; 0C2C 0323 ;     SA      # ( భ → బ̣ ) TELUGU LETTER BHA → TELUGU LETTER BA, COMBINING DOT BELOW # 
+
+0C37 ; 0C35 0323 ;     SA      # ( ష → వ̣ ) TELUGU LETTER SSA → TELUGU LETTER VA, COMBINING DOT BELOW # 
+
+0C39 ; 0C35 0C3E ;     SA      # ( హ → వా ) TELUGU LETTER HA → TELUGU LETTER VA, TELUGU VOWEL SIGN AA        # 
+
+0C2E ; 0C35 0C41 ;     SA      # ( మ → వు ) TELUGU LETTER MA → TELUGU LETTER VA, TELUGU VOWEL SIGN U # 
+
+0C42 ; 0C41 0C3E ;     SA      # ( ూ → ుా ) TELUGU VOWEL SIGN UU → TELUGU VOWEL SIGN U, TELUGU VOWEL SIGN AA # 
+
+0C44 ; 0C43 0C3E ;     SA      # ( ౄ → ృా ) TELUGU VOWEL SIGN VOCALIC RR → TELUGU VOWEL SIGN VOCALIC R, TELUGU VOWEL SIGN AA # 
+
+0CE1 ; 0C8C 0CBE ;     SA      # ( ೡ → ಌಾ ) KANNADA LETTER VOCALIC LL → KANNADA LETTER VOCALIC L, KANNADA VOWEL SIGN AA      # 
+
+0C94 ; 0C92 0CCC ;     SA      # ( ಔ → ಒೌ ) KANNADA LETTER AU → KANNADA LETTER O, KANNADA VOWEL SIGN AU      # 
+
+0D08 ; 0D07 0D57 ;     SA      # ( ഈ → ഇൗ ) MALAYALAM LETTER II → MALAYALAM LETTER I, MALAYALAM AU LENGTH MARK       # 
+
+0D0A ; 0D09 0D57 ;     SA      # ( ഊ → ഉൗ ) MALAYALAM LETTER UU → MALAYALAM LETTER U, MALAYALAM AU LENGTH MARK       # 
+
+0D10 ; 0D0E 0D46 ;     SA      # ( ഐ → എെ ) MALAYALAM LETTER AI → MALAYALAM LETTER E, MALAYALAM VOWEL SIGN E # 
+
+0D13 ; 0D12 0D3E ;     SA      # ( ഓ → ഒാ ) MALAYALAM LETTER OO → MALAYALAM LETTER O, MALAYALAM VOWEL SIGN AA        # 
+
+0D14 ; 0D12 0D57 ;     SA      # ( ഔ → ഒൗ ) MALAYALAM LETTER AU → MALAYALAM LETTER O, MALAYALAM AU LENGTH MARK       # 
+
+0D61 ; 0D1E ;  SA      # ( ൡ → ഞ ) MALAYALAM LETTER VOCALIC LL → MALAYALAM LETTER NYA  # 
+
+0D6B ; 0D26 0D4D 0D30 ;        SA      # ( ൫ → ദ്ര ) MALAYALAM DIGIT FIVE → MALAYALAM LETTER DA, MALAYALAM SIGN VIRAMA, MALAYALAM LETTER RA        # 
+
+0D0C ; 0D28 0D41 ;     SA      # ( ഌ → നു ) MALAYALAM LETTER VOCALIC L → MALAYALAM LETTER NA, MALAYALAM VOWEL SIGN U # 
+0D19 ; 0D28 0D41 ;     SA      # ( ങ → നു ) MALAYALAM LETTER NGA → MALAYALAM LETTER NA, MALAYALAM VOWEL SIGN U       # →ഌ→
+
+0D6F ; 0D28 0D4D ;     SA      # ( ൯ → ന് ) MALAYALAM DIGIT NINE → MALAYALAM LETTER NA, MALAYALAM SIGN VIRAMA        # 
+
+0D31 ; 0D30 ;  SA      # ( റ → ര ) MALAYALAM LETTER RRA → MALAYALAM LETTER RA  # 
+
+0D6A ; 0D30 0D4D ;     SA      # ( ൪ → ര് ) MALAYALAM DIGIT FOUR → MALAYALAM LETTER RA, MALAYALAM SIGN VIRAMA        # 
+
+0D6E ; 0D35 0D4D ;     SA      # ( ൮ → വ് ) MALAYALAM DIGIT EIGHT → MALAYALAM LETTER VA, MALAYALAM SIGN VIRAMA       # 
+
+0D40 ; 0D3F ;  SA      # ( ീ → ി ) MALAYALAM VOWEL SIGN II → MALAYALAM VOWEL SIGN I    # 
+
+0D42 ; 0D41 ;  SA      # ( ൂ → ു ) MALAYALAM VOWEL SIGN UU → MALAYALAM VOWEL SIGN U    # 
+0D43 ; 0D41 ;  SA      # ( ൃ → ു ) MALAYALAM VOWEL SIGN VOCALIC R → MALAYALAM VOWEL SIGN U     # →ൂ→
+
+0D48 ; 0D46 0D46 ;     SA      # ( ൈ → െെ ) MALAYALAM VOWEL SIGN AI → MALAYALAM VOWEL SIGN E, MALAYALAM VOWEL SIGN E # 
+
+0E03 ; 0E02 ;  SA      # ( ฃ → ข ) THAI CHARACTER KHO KHUAT → THAI CHARACTER KHO KHAI  # 
+
+0E14 ; 0E04 ;  SA      # ( ด → ค ) THAI CHARACTER DO DEK → THAI CHARACTER KHO KHWAI    # 
+0E15 ; 0E04 ;  SA      # ( ต → ค ) THAI CHARACTER TO TAO → THAI CHARACTER KHO KHWAI    # →ด→
+
+0E21 ; 0E06 ;  SA      # ( ม → ฆ ) THAI CHARACTER MO MA → THAI CHARACTER KHO RAKHANG   # 
+
+0E0B ; 0E0A ;  SA      # ( ซ → ช ) THAI CHARACTER SO SO → THAI CHARACTER CHO CHANG     # 
+
+0E0F ; 0E0E ;  SA      # ( ฏ → ฎ ) THAI CHARACTER TO PATAK → THAI CHARACTER DO CHADA   # 
+
+0E17 ; 0E11 ;  SA      # ( ท → ฑ ) THAI CHARACTER THO THAHAN → THAI CHARACTER THO NANGMONTHO   # 
+
+0E26 ; 0E20 ;  SA      # ( ฦ → ภ ) THAI CHARACTER LU → THAI CHARACTER PHO SAMPHAO      # 
+
+0E45 ; 0E32 ;  SA      # ( ๅ → า ) THAI CHARACTER LAKKHANGYAO → THAI CHARACTER SARA AA # 
+
+0E33 ; 030A 0E32 ;     SA      # ( ำ → ̊า ) THAI CHARACTER SARA AM → COMBINING RING ABOVE, THAI CHARACTER SARA AA     # →ํา→
+
+0E41 ; 0E40 0E40 ;     SA      # ( แ → เเ ) THAI CHARACTER SARA AE → THAI CHARACTER SARA E, THAI CHARACTER SARA E    # 
+
+0EDC ; 0EAB 0E99 ;     SA      # ( ໜ → ຫນ ) LAO HO NO → LAO LETTER HO SUNG, LAO LETTER NO    # 
+
+0EDD ; 0EAB 0EA1 ;     SA      # ( ໝ → ຫມ ) LAO HO MO → LAO LETTER HO SUNG, LAO LETTER MO    # 
+
+0EB3 ; 030A 0EB2 ;     SA      # ( ຳ → ̊າ ) LAO VOWEL SIGN AM → COMBINING RING ABOVE, LAO VOWEL SIGN AA       # →ໍາ→
+
+0F6A ; 0F62 ;  SA      # ( ཪ → ར ) TIBETAN LETTER FIXED-FORM RA → TIBETAN LETTER RA    # 
+
+0F77 ; 0FB2 0F71 0F80 ;        SA      # ( ཷ → ྲཱྀ ) TIBETAN VOWEL SIGN VOCALIC RR → TIBETAN SUBJOINED LETTER RA, TIBETAN VOWEL SIGN AA, TIBETAN VOWEL SIGN REVERSED I     # 
+
+0F79 ; 0FB3 0F71 0F80 ;        SA      # ( ཹ → ླཱྀ ) TIBETAN VOWEL SIGN VOCALIC LL → TIBETAN SUBJOINED LETTER LA, TIBETAN VOWEL SIGN AA, TIBETAN VOWEL SIGN REVERSED I     # 
+
+17A3 ; 17A2 ;  SA      # ( ឣ → អ ) KHMER INDEPENDENT VOWEL QAQ → KHMER LETTER QA       # 
+
+19D0 ; 199E ;  SA      # ( ᧐ → ᦞ ) NEW TAI LUE DIGIT ZERO → NEW TAI LUE LETTER LOW VA  # 
+
+19D1 ; 19B1 ;  SA      # ( ᧑ → ᦱ ) NEW TAI LUE DIGIT ONE → NEW TAI LUE VOWEL SIGN AA   # 
+
+1A80 ; 1A45 ;  SA      # ( ᪀ → ᩅ ) TAI THAM HORA DIGIT ZERO → TAI THAM LETTER WA       # 
+1A90 ; 1A45 ;  SA      # ( ᪐ → ᩅ ) TAI THAM THAM DIGIT ZERO → TAI THAM LETTER WA       # 
+
+AA53 ; AA01 ;  SA      # ( ꩓ → ꨁ ) CHAM DIGIT THREE → CHAM LETTER I    # 
+
+AA56 ; AA23 ;  SA      # ( ꩖ → ꨣ ) CHAM DIGIT SIX → CHAM LETTER RA     # 
+
+1B52 ; 1B0D ;  SA      # ( ᭒ → ᬍ ) BALINESE DIGIT TWO → BALINESE LETTER LA LENGA       # 
+
+1B53 ; 1B11 ;  SA      # ( ᭓ → ᬑ ) BALINESE DIGIT THREE → BALINESE LETTER OKARA        # 
+
+1B58 ; 1B28 ;  SA      # ( ᭘ → ᬨ ) BALINESE DIGIT EIGHT → BALINESE LETTER PA KAPAL     # 
+
+1896 ; 185C ;  SA      # ( ᢖ → ᡜ ) MONGOLIAN LETTER ALI GALI ZA → MONGOLIAN LETTER TODO DZA    # 
+
+1855 ; 1835 ;  SA      # ( ᡕ → ᠵ ) MONGOLIAN LETTER TODO YA → MONGOLIAN LETTER JA      # 
+
+13D2 ; 13A1 ;  SA      # ( Ꮢ → Ꭱ ) CHEROKEE LETTER SV → CHEROKEE LETTER E      # 
+
+13BD ; 13A9 ;  SA      # ( Ꮍ → Ꭹ ) CHEROKEE LETTER MU → CHEROKEE LETTER GI     # 
+
+13E7 ; 13AB ;  SA      # ( Ꮷ → Ꭻ ) CHEROKEE LETTER TSU → CHEROKEE LETTER GU    # →J→
+
+13D4 ; 13B3 ;  SA      # ( Ꮤ → Ꮃ ) CHEROKEE LETTER TA → CHEROKEE LETTER LA     # 
+
+13F3 ; 13C0 ;  SA      # ( Ᏻ → Ꮐ ) CHEROKEE LETTER YU → CHEROKEE LETTER NAH    # 
+
+13DA ; 13D5 ;  SA      # ( Ꮪ → Ꮥ ) CHEROKEE LETTER DU → CHEROKEE LETTER DE     # 
+
+140D ; 1401 00B7 ;     SA      # ( ᐍ → ᐁ· ) CANADIAN SYLLABICS WEST-CREE WE → CANADIAN SYLLABICS E, MIDDLE DOT        # →ᐁᐧ→
+
+2206 ; 1403 ;  SA      #* ( ∆ → ᐃ ) INCREMENT → CANADIAN SYLLABICS I   # →Δ→
+1D6AB ;        1403 ;  SA      # ( 𝚫 → ᐃ ) MATHEMATICAL BOLD CAPITAL DELTA → CANADIAN SYLLABICS I     # →Δ→
+1D6E5 ;        1403 ;  SA      # ( 𝛥 → ᐃ ) MATHEMATICAL ITALIC CAPITAL DELTA → CANADIAN SYLLABICS I   # →Δ→
+1D71F ;        1403 ;  SA      # ( 𝜟 → ᐃ ) MATHEMATICAL BOLD ITALIC CAPITAL DELTA → CANADIAN SYLLABICS I      # →Δ→
+1D759 ;        1403 ;  SA      # ( 𝝙 → ᐃ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA → CANADIAN SYLLABICS I  # →Δ→
+1D793 ;        1403 ;  SA      # ( 𝞓 → ᐃ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA → CANADIAN SYLLABICS I   # →Δ→
+
+140F ; 1403 00B7 ;     SA      # ( ᐏ → ᐃ· ) CANADIAN SYLLABICS WEST-CREE WI → CANADIAN SYLLABICS I, MIDDLE DOT        # →ᐃᐧ→
+
+1411 ; 1404 00B7 ;     SA      # ( ᐑ → ᐄ· ) CANADIAN SYLLABICS WEST-CREE WII → CANADIAN SYLLABICS II, MIDDLE DOT      # →ᐄᐧ→
+
+1413 ; 1405 00B7 ;     SA      # ( ᐓ → ᐅ· ) CANADIAN SYLLABICS WEST-CREE WO → CANADIAN SYLLABICS O, MIDDLE DOT        # →ᐅᐧ→
+
+1415 ; 1406 00B7 ;     SA      # ( ᐕ → ᐆ· ) CANADIAN SYLLABICS WEST-CREE WOO → CANADIAN SYLLABICS OO, MIDDLE DOT      # →ᐆᐧ→
+
+1418 ; 140A 00B7 ;     SA      # ( ᐘ → ᐊ· ) CANADIAN SYLLABICS WEST-CREE WA → CANADIAN SYLLABICS A, MIDDLE DOT        # →ᐊᐧ→
+
+141A ; 140B 00B7 ;     SA      # ( ᐚ → ᐋ· ) CANADIAN SYLLABICS WEST-CREE WAA → CANADIAN SYLLABICS AA, MIDDLE DOT      # →ᐋᐧ→
+
+14D1 ; 1421 ;  SA      # ( ᓑ → ᐡ ) CANADIAN SYLLABICS CARRIER NG → CANADIAN SYLLABICS FINAL BOTTOM HALF RING   # 
+
+1476 ; 1427 146D ;     SA      # ( ᑶ → ᐧᑭ ) CANADIAN SYLLABICS KWI → CANADIAN SYLLABICS FINAL MIDDLE DOT, CANADIAN SYLLABICS KI      # 
+
+147A ; 1427 146F ;     SA      # ( ᑺ → ᐧᑯ ) CANADIAN SYLLABICS KWO → CANADIAN SYLLABICS FINAL MIDDLE DOT, CANADIAN SYLLABICS KO      # 
+
+1498 ; 1427 148D ;     SA      # ( ᒘ → ᐧᒍ ) CANADIAN SYLLABICS CWO → CANADIAN SYLLABICS FINAL MIDDLE DOT, CANADIAN SYLLABICS CO      # 
+
+1540 ; 1429 ;  SA      # ( ᕀ → ᐩ ) CANADIAN SYLLABICS WEST-CREE Y → CANADIAN SYLLABICS FINAL PLUS      # 
+
+1441 ; 1433 00B7 ;     SA      # ( ᑁ → ᐳ· ) CANADIAN SYLLABICS WEST-CREE PWO → CANADIAN SYLLABICS PO, MIDDLE DOT      # →ᐳᐧ→
+
+1443 ; 1434 00B7 ;     SA      # ( ᑃ → ᐴ· ) CANADIAN SYLLABICS WEST-CREE PWOO → CANADIAN SYLLABICS POO, MIDDLE DOT    # →ᐴᐧ→
+
+1445 ; 1438 00B7 ;     SA      # ( ᑅ → ᐸ· ) CANADIAN SYLLABICS WEST-CREE PWA → CANADIAN SYLLABICS PA, MIDDLE DOT      # →ᐸᐧ→
+
+1447 ; 1439 00B7 ;     SA      # ( ᑇ → ᐹ· ) CANADIAN SYLLABICS WEST-CREE PWAA → CANADIAN SYLLABICS PAA, MIDDLE DOT    # →ᐹᐧ→
+
+02C8 ; 144A ;  SA      # ( ˈ → ᑊ ) MODIFIER LETTER VERTICAL LINE → CANADIAN SYLLABICS WEST-CREE P       # 
+
+1458 ; 144C 00B7 ;     SA      # ( ᑘ → ᑌ· ) CANADIAN SYLLABICS WEST-CREE TWE → CANADIAN SYLLABICS TE, MIDDLE DOT      # →ᑌᐧ→
+
+1467 ; 144C 144A ;     SA      # ( ᑧ → ᑌᑊ ) CANADIAN SYLLABICS TTE → CANADIAN SYLLABICS TE, CANADIAN SYLLABICS WEST-CREE P   # 
+
+145A ; 144E 00B7 ;     SA      # ( ᑚ → ᑎ· ) CANADIAN SYLLABICS WEST-CREE TWI → CANADIAN SYLLABICS TI, MIDDLE DOT      # →ᑎᐧ→
+
+1468 ; 144E 144A ;     SA      # ( ᑨ → ᑎᑊ ) CANADIAN SYLLABICS TTI → CANADIAN SYLLABICS TI, CANADIAN SYLLABICS WEST-CREE P   # 
+
+145C ; 144F 00B7 ;     SA      # ( ᑜ → ᑏ· ) CANADIAN SYLLABICS WEST-CREE TWII → CANADIAN SYLLABICS TII, MIDDLE DOT    # →ᑏᐧ→
+
+145E ; 1450 00B7 ;     SA      # ( ᑞ → ᑐ· ) CANADIAN SYLLABICS WEST-CREE TWO → CANADIAN SYLLABICS TO, MIDDLE DOT      # →ᑐᐧ→
+
+1469 ; 1450 144A ;     SA      # ( ᑩ → ᑐᑊ ) CANADIAN SYLLABICS TTO → CANADIAN SYLLABICS TO, CANADIAN SYLLABICS WEST-CREE P   # 
+
+1460 ; 1451 00B7 ;     SA      # ( ᑠ → ᑑ· ) CANADIAN SYLLABICS WEST-CREE TWOO → CANADIAN SYLLABICS TOO, MIDDLE DOT    # →ᑑᐧ→
+
+1462 ; 1455 00B7 ;     SA      # ( ᑢ → ᑕ· ) CANADIAN SYLLABICS WEST-CREE TWA → CANADIAN SYLLABICS TA, MIDDLE DOT      # →ᑕᐧ→
+
+146A ; 1455 144A ;     SA      # ( ᑪ → ᑕᑊ ) CANADIAN SYLLABICS TTA → CANADIAN SYLLABICS TA, CANADIAN SYLLABICS WEST-CREE P   # 
+
+1464 ; 1456 00B7 ;     SA      # ( ᑤ → ᑖ· ) CANADIAN SYLLABICS WEST-CREE TWAA → CANADIAN SYLLABICS TAA, MIDDLE DOT    # →ᑖᐧ→
+
+1475 ; 146B 00B7 ;     SA      # ( ᑵ → ᑫ· ) CANADIAN SYLLABICS WEST-CREE KWE → CANADIAN SYLLABICS KE, MIDDLE DOT      # →ᑫᐧ→
+
+1485 ; 146B 144A ;     SA      # ( ᒅ → ᑫᑊ ) CANADIAN SYLLABICS SOUTH-SLAVEY KEH → CANADIAN SYLLABICS KE, CANADIAN SYLLABICS WEST-CREE P      # 
+
+1477 ; 146D 1427 ;     SA      # ( ᑷ → ᑭᐧ ) CANADIAN SYLLABICS WEST-CREE KWI → CANADIAN SYLLABICS KI, CANADIAN SYLLABICS FINAL MIDDLE DOT    # 
+
+1486 ; 146D 144A ;     SA      # ( ᒆ → ᑭᑊ ) CANADIAN SYLLABICS SOUTH-SLAVEY KIH → CANADIAN SYLLABICS KI, CANADIAN SYLLABICS WEST-CREE P      # 
+
+1479 ; 146E 00B7 ;     SA      # ( ᑹ → ᑮ· ) CANADIAN SYLLABICS WEST-CREE KWII → CANADIAN SYLLABICS KII, MIDDLE DOT    # →ᑮᐧ→
+
+147B ; 146F 1427 ;     SA      # ( ᑻ → ᑯᐧ ) CANADIAN SYLLABICS WEST-CREE KWO → CANADIAN SYLLABICS KO, CANADIAN SYLLABICS FINAL MIDDLE DOT    # 
+
+1487 ; 146F 144A ;     SA      # ( ᒇ → ᑯᑊ ) CANADIAN SYLLABICS SOUTH-SLAVEY KOH → CANADIAN SYLLABICS KO, CANADIAN SYLLABICS WEST-CREE P      # 
+
+147D ; 1470 00B7 ;     SA      # ( ᑽ → ᑰ· ) CANADIAN SYLLABICS WEST-CREE KWOO → CANADIAN SYLLABICS KOO, MIDDLE DOT    # →ᑰᐧ→
+
+147F ; 1472 00B7 ;     SA      # ( ᑿ → ᑲ· ) CANADIAN SYLLABICS WEST-CREE KWA → CANADIAN SYLLABICS KA, MIDDLE DOT      # →ᑲᐧ→
+
+1488 ; 1472 144A ;     SA      # ( ᒈ → ᑲᑊ ) CANADIAN SYLLABICS SOUTH-SLAVEY KAH → CANADIAN SYLLABICS KA, CANADIAN SYLLABICS WEST-CREE P      # 
+
+1481 ; 1473 00B7 ;     SA      # ( ᒁ → ᑳ· ) CANADIAN SYLLABICS WEST-CREE KWAA → CANADIAN SYLLABICS KAA, MIDDLE DOT    # →ᑳᐧ→
+
+1603 ; 1489 ;  SA      # ( ᘃ → ᒉ ) CANADIAN SYLLABICS CARRIER NO → CANADIAN SYLLABICS CE       # 
+
+1493 ; 1489 00B7 ;     SA      # ( ᒓ → ᒉ· ) CANADIAN SYLLABICS WEST-CREE CWE → CANADIAN SYLLABICS CE, MIDDLE DOT      # →ᒉᐧ→
+
+1495 ; 148B 00B7 ;     SA      # ( ᒕ → ᒋ· ) CANADIAN SYLLABICS WEST-CREE CWI → CANADIAN SYLLABICS CI, MIDDLE DOT      # →ᒋᐧ→
+
+1497 ; 148C 00B7 ;     SA      # ( ᒗ → ᒌ· ) CANADIAN SYLLABICS WEST-CREE CWII → CANADIAN SYLLABICS CII, MIDDLE DOT    # →ᒌᐧ→
+
+1499 ; 148D 1427 ;     SA      # ( ᒙ → ᒍᐧ ) CANADIAN SYLLABICS WEST-CREE CWO → CANADIAN SYLLABICS CO, CANADIAN SYLLABICS FINAL MIDDLE DOT    # 
+
+149B ; 148E 00B7 ;     SA      # ( ᒛ → ᒎ· ) CANADIAN SYLLABICS WEST-CREE CWOO → CANADIAN SYLLABICS COO, MIDDLE DOT    # →ᒎᐧ→
+
+1602 ; 1490 ;  SA      # ( ᘂ → ᒐ ) CANADIAN SYLLABICS CARRIER NU → CANADIAN SYLLABICS CA       # 
+
+149D ; 1490 00B7 ;     SA      # ( ᒝ → ᒐ· ) CANADIAN SYLLABICS WEST-CREE CWA → CANADIAN SYLLABICS CA, MIDDLE DOT      # →ᒐᐧ→
+
+149F ; 1491 00B7 ;     SA      # ( ᒟ → ᒑ· ) CANADIAN SYLLABICS WEST-CREE CWAA → CANADIAN SYLLABICS CAA, MIDDLE DOT    # →ᒑᐧ→
+
+14AD ; 14A3 00B7 ;     SA      # ( ᒭ → ᒣ· ) CANADIAN SYLLABICS WEST-CREE MWE → CANADIAN SYLLABICS ME, MIDDLE DOT      # →ᒣᐧ→
+
+213E ; 14A5 ;  SA      # ( ℾ → ᒥ ) DOUBLE-STRUCK CAPITAL GAMMA → CANADIAN SYLLABICS MI # →Γ→
+1D6AA ;        14A5 ;  SA      # ( 𝚪 → ᒥ ) MATHEMATICAL BOLD CAPITAL GAMMA → CANADIAN SYLLABICS MI    # →Γ→
+1D6E4 ;        14A5 ;  SA      # ( 𝛤 → ᒥ ) MATHEMATICAL ITALIC CAPITAL GAMMA → CANADIAN SYLLABICS MI  # →Γ→
+1D71E ;        14A5 ;  SA      # ( 𝜞 → ᒥ ) MATHEMATICAL BOLD ITALIC CAPITAL GAMMA → CANADIAN SYLLABICS MI     # →Γ→
+1D758 ;        14A5 ;  SA      # ( 𝝘 → ᒥ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA → CANADIAN SYLLABICS MI # →Γ→
+1D792 ;        14A5 ;  SA      # ( 𝞒 → ᒥ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA → CANADIAN SYLLABICS MI  # →Γ→
+
+14AF ; 14A5 00B7 ;     SA      # ( ᒯ → ᒥ· ) CANADIAN SYLLABICS WEST-CREE MWI → CANADIAN SYLLABICS MI, MIDDLE DOT      # →ᒥᐧ→
+
+14B1 ; 14A6 00B7 ;     SA      # ( ᒱ → ᒦ· ) CANADIAN SYLLABICS WEST-CREE MWII → CANADIAN SYLLABICS MII, MIDDLE DOT    # →ᒦᐧ→
+
+14B3 ; 14A7 00B7 ;     SA      # ( ᒳ → ᒧ· ) CANADIAN SYLLABICS WEST-CREE MWO → CANADIAN SYLLABICS MO, MIDDLE DOT      # →ᒧᐧ→
+
+14B5 ; 14A8 00B7 ;     SA      # ( ᒵ → ᒨ· ) CANADIAN SYLLABICS WEST-CREE MWOO → CANADIAN SYLLABICS MOO, MIDDLE DOT    # →ᒨᐧ→
+
+14B9 ; 14AB 00B7 ;     SA      # ( ᒹ → ᒫ· ) CANADIAN SYLLABICS WEST-CREE MWAA → CANADIAN SYLLABICS MAA, MIDDLE DOT    # →ᒫᐧ→
+
+14CA ; 14C0 00B7 ;     SA      # ( ᓊ → ᓀ· ) CANADIAN SYLLABICS WEST-CREE NWE → CANADIAN SYLLABICS NE, MIDDLE DOT      # →ᓀᐧ→
+
+14CC ; 14C7 00B7 ;     SA      # ( ᓌ → ᓇ· ) CANADIAN SYLLABICS WEST-CREE NWA → CANADIAN SYLLABICS NA, MIDDLE DOT      # →ᓇᐧ→
+
+14CE ; 14C8 14AB ;     SA      # ( ᓎ → ᓈᒫ ) CANADIAN SYLLABICS WEST-CREE NWAA → CANADIAN SYLLABICS NAA, CANADIAN SYLLABICS MAA       # 
+
+1604 ; 14D3 ;  SA      # ( ᘄ → ᓓ ) CANADIAN SYLLABICS CARRIER NE → CANADIAN SYLLABICS LE       # 
+
+14DD ; 14D3 00B7 ;     SA      # ( ᓝ → ᓓ· ) CANADIAN SYLLABICS WEST-CREE LWE → CANADIAN SYLLABICS LE, MIDDLE DOT      # →ᓓᐧ→
+
+14DF ; 14D5 00B7 ;     SA      # ( ᓟ → ᓕ· ) CANADIAN SYLLABICS WEST-CREE LWI → CANADIAN SYLLABICS LI, MIDDLE DOT      # →ᓕᐧ→
+
+14E1 ; 14D6 00B7 ;     SA      # ( ᓡ → ᓖ· ) CANADIAN SYLLABICS WEST-CREE LWII → CANADIAN SYLLABICS LII, MIDDLE DOT    # →ᓖᐧ→
+
+14E3 ; 14D7 00B7 ;     SA      # ( ᓣ → ᓗ· ) CANADIAN SYLLABICS WEST-CREE LWO → CANADIAN SYLLABICS LO, MIDDLE DOT      # →ᓗᐧ→
+
+14E5 ; 14D8 00B7 ;     SA      # ( ᓥ → ᓘ· ) CANADIAN SYLLABICS WEST-CREE LWOO → CANADIAN SYLLABICS LOO, MIDDLE DOT    # →ᓘᐧ→
+
+1607 ; 14DA ;  SA      # ( ᘇ → ᓚ ) CANADIAN SYLLABICS CARRIER NA → CANADIAN SYLLABICS LA       # 
+
+14E7 ; 14DA 00B7 ;     SA      # ( ᓧ → ᓚ· ) CANADIAN SYLLABICS WEST-CREE LWA → CANADIAN SYLLABICS LA, MIDDLE DOT      # →ᓚᐧ→
+
+14E9 ; 14DB 00B7 ;     SA      # ( ᓩ → ᓛ· ) CANADIAN SYLLABICS WEST-CREE LWAA → CANADIAN SYLLABICS LAA, MIDDLE DOT    # →ᓛᐧ→
+
+14F7 ; 14ED 00B7 ;     SA      # ( ᓷ → ᓭ· ) CANADIAN SYLLABICS WEST-CREE SWE → CANADIAN SYLLABICS SE, MIDDLE DOT      # →ᓭᐧ→
+
+14F9 ; 14EF 00B7 ;     SA      # ( ᓹ → ᓯ· ) CANADIAN SYLLABICS WEST-CREE SWI → CANADIAN SYLLABICS SI, MIDDLE DOT      # →ᓯᐧ→
+
+14FB ; 14F0 00B7 ;     SA      # ( ᓻ → ᓰ· ) CANADIAN SYLLABICS WEST-CREE SWII → CANADIAN SYLLABICS SII, MIDDLE DOT    # →ᓰᐧ→
+
+14FD ; 14F1 00B7 ;     SA      # ( ᓽ → ᓱ· ) CANADIAN SYLLABICS WEST-CREE SWO → CANADIAN SYLLABICS SO, MIDDLE DOT      # →ᓱᐧ→
+
+14FF ; 14F2 00B7 ;     SA      # ( ᓿ → ᓲ· ) CANADIAN SYLLABICS WEST-CREE SWOO → CANADIAN SYLLABICS SOO, MIDDLE DOT    # →ᓲᐧ→
+
+1501 ; 14F4 00B7 ;     SA      # ( ᔁ → ᓴ· ) CANADIAN SYLLABICS WEST-CREE SWA → CANADIAN SYLLABICS SA, MIDDLE DOT      # →ᓴᐧ→
+
+1503 ; 14F5 00B7 ;     SA      # ( ᔃ → ᓵ· ) CANADIAN SYLLABICS WEST-CREE SWAA → CANADIAN SYLLABICS SAA, MIDDLE DOT    # →ᓵᐧ→
+
+150C ; 150B 1438 ;     SA      # ( ᔌ → ᔋᐸ ) CANADIAN SYLLABICS NASKAPI SPWA → CANADIAN SYLLABICS NASKAPI S-W, CANADIAN SYLLABICS PA  # 
+
+150D ; 150B 1455 ;     SA      # ( ᔍ → ᔋᑕ ) CANADIAN SYLLABICS NASKAPI STWA → CANADIAN SYLLABICS NASKAPI S-W, CANADIAN SYLLABICS TA  # 
+
+150E ; 150B 1472 ;     SA      # ( ᔎ → ᔋᑲ ) CANADIAN SYLLABICS NASKAPI SKWA → CANADIAN SYLLABICS NASKAPI S-W, CANADIAN SYLLABICS KA  # 
+
+150F ; 150B 1490 ;     SA      # ( ᔏ → ᔋᒐ ) CANADIAN SYLLABICS NASKAPI SCWA → CANADIAN SYLLABICS NASKAPI S-W, CANADIAN SYLLABICS CA  # 
+
+1518 ; 1510 00B7 ;     SA      # ( ᔘ → ᔐ· ) CANADIAN SYLLABICS WEST-CREE SHWE → CANADIAN SYLLABICS SHE, MIDDLE DOT    # →ᔐᐧ→
+
+151A ; 1511 00B7 ;     SA      # ( ᔚ → ᔑ· ) CANADIAN SYLLABICS WEST-CREE SHWI → CANADIAN SYLLABICS SHI, MIDDLE DOT    # →ᔑᐧ→
+
+151C ; 1512 00B7 ;     SA      # ( ᔜ → ᔒ· ) CANADIAN SYLLABICS WEST-CREE SHWII → CANADIAN SYLLABICS SHII, MIDDLE DOT  # →ᔒᐧ→
+
+151E ; 1513 00B7 ;     SA      # ( ᔞ → ᔓ· ) CANADIAN SYLLABICS WEST-CREE SHWO → CANADIAN SYLLABICS SHO, MIDDLE DOT    # →ᔓᐧ→
+
+1520 ; 1514 00B7 ;     SA      # ( ᔠ → ᔔ· ) CANADIAN SYLLABICS WEST-CREE SHWOO → CANADIAN SYLLABICS SHOO, MIDDLE DOT  # →ᔔᐧ→
+
+1522 ; 1515 00B7 ;     SA      # ( ᔢ → ᔕ· ) CANADIAN SYLLABICS WEST-CREE SHWA → CANADIAN SYLLABICS SHA, MIDDLE DOT    # →ᔕᐧ→
+
+1524 ; 1516 00B7 ;     SA      # ( ᔤ → ᔖ· ) CANADIAN SYLLABICS WEST-CREE SHWAA → CANADIAN SYLLABICS SHAA, MIDDLE DOT  # →ᔖᐧ→
+
+1532 ; 1528 00B7 ;     SA      # ( ᔲ → ᔨ· ) CANADIAN SYLLABICS WEST-CREE YWI → CANADIAN SYLLABICS YI, MIDDLE DOT      # →ᔨᐧ→
+
+1534 ; 1529 00B7 ;     SA      # ( ᔴ → ᔩ· ) CANADIAN SYLLABICS WEST-CREE YWII → CANADIAN SYLLABICS YII, MIDDLE DOT    # →ᔩᐧ→
+
+1536 ; 152A 00B7 ;     SA      # ( ᔶ → ᔪ· ) CANADIAN SYLLABICS WEST-CREE YWO → CANADIAN SYLLABICS YO, MIDDLE DOT      # →ᔪᐧ→
+
+1538 ; 152B 00B7 ;     SA      # ( ᔸ → ᔫ· ) CANADIAN SYLLABICS WEST-CREE YWOO → CANADIAN SYLLABICS YOO, MIDDLE DOT    # →ᔫᐧ→
+
+153A ; 152D 00B7 ;     SA      # ( ᔺ → ᔭ· ) CANADIAN SYLLABICS WEST-CREE YWA → CANADIAN SYLLABICS YA, MIDDLE DOT      # →ᔭᐧ→
+
+153C ; 152E 00B7 ;     SA      # ( ᔼ → ᔮ· ) CANADIAN SYLLABICS WEST-CREE YWAA → CANADIAN SYLLABICS YAA, MIDDLE DOT    # →ᔮᐧ→
+
+166E ; 1541 ;  SA      #* ( ᙮ → ᕁ ) CANADIAN SYLLABICS FULL STOP → CANADIAN SYLLABICS SAYISI YI        # 
+157D ; 1541 ;  SA      # ( ᕽ → ᕁ ) CANADIAN SYLLABICS HK → CANADIAN SYLLABICS SAYISI YI        # 
+
+1622 ; 1543 ;  SA      # ( ᘢ → ᕃ ) CANADIAN SYLLABICS CARRIER LU → CANADIAN SYLLABICS R-CREE RE        # 
+
+1623 ; 1546 ;  SA      # ( ᘣ → ᕆ ) CANADIAN SYLLABICS CARRIER LO → CANADIAN SYLLABICS RI       # 
+
+1624 ; 154A ;  SA      # ( ᘤ → ᕊ ) CANADIAN SYLLABICS CARRIER LE → CANADIAN SYLLABICS WEST-CREE LO     # 
+
+154F ; 154C 00B7 ;     SA      # ( ᕏ → ᕌ· ) CANADIAN SYLLABICS WEST-CREE RWAA → CANADIAN SYLLABICS RAA, MIDDLE DOT    # →ᕌᐧ→
+
+166F ; 1550 146B ;     SA      # ( ᙯ → ᕐᑫ ) CANADIAN SYLLABICS QAI → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KE     # 
+
+157E ; 1550 146C ;     SA      # ( ᕾ → ᕐᑬ ) CANADIAN SYLLABICS QAAI → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KAAI  # 
+
+157F ; 1550 146D ;     SA      # ( ᕿ → ᕐᑭ ) CANADIAN SYLLABICS QI → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KI      # 
+
+1580 ; 1550 146E ;     SA      # ( ᖀ → ᕐᑮ ) CANADIAN SYLLABICS QII → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KII    # 
+
+1581 ; 1550 146F ;     SA      # ( ᖁ → ᕐᑯ ) CANADIAN SYLLABICS QO → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KO      # 
+
+1582 ; 1550 1470 ;     SA      # ( ᖂ → ᕐᑰ ) CANADIAN SYLLABICS QOO → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KOO    # 
+
+1583 ; 1550 1472 ;     SA      # ( ᖃ → ᕐᑲ ) CANADIAN SYLLABICS QA → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KA      # 
+
+1584 ; 1550 1473 ;     SA      # ( ᖄ → ᕐᑳ ) CANADIAN SYLLABICS QAA → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KAA    # 
+
+1585 ; 1550 1483 ;     SA      # ( ᖅ → ᕐᒃ ) CANADIAN SYLLABICS Q → CANADIAN SYLLABICS R, CANADIAN SYLLABICS K        # 
+
+155C ; 155A 00B7 ;     SA      # ( ᕜ → ᕚ· ) CANADIAN SYLLABICS WEST-CREE FWAA → CANADIAN SYLLABICS FAA, MIDDLE DOT    # →ᕚᐧ→
+
+1569 ; 1567 00B7 ;     SA      # ( ᕩ → ᕧ· ) CANADIAN SYLLABICS WEST-CREE THWAA → CANADIAN SYLLABICS THAA, MIDDLE DOT  # →ᕧᐧ→
+
+1670 ; 1595 1489 ;     SA      # ( ᙰ → ᖕᒉ ) CANADIAN SYLLABICS NGAI → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CE   # 
+
+158E ; 1595 148A ;     SA      # ( ᖎ → ᖕᒊ ) CANADIAN SYLLABICS NGAAI → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CAAI        # 
+
+158F ; 1595 148B ;     SA      # ( ᖏ → ᖕᒋ ) CANADIAN SYLLABICS NGI → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CI    # 
+
+1590 ; 1595 148C ;     SA      # ( ᖐ → ᖕᒌ ) CANADIAN SYLLABICS NGII → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CII  # 
+
+1591 ; 1595 148D ;     SA      # ( ᖑ → ᖕᒍ ) CANADIAN SYLLABICS NGO → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CO    # 
+
+1592 ; 1595 148E ;     SA      # ( ᖒ → ᖕᒎ ) CANADIAN SYLLABICS NGOO → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS COO  # 
+
+1593 ; 1595 1490 ;     SA      # ( ᖓ → ᖕᒐ ) CANADIAN SYLLABICS NGA → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CA    # 
+
+1594 ; 1595 1491 ;     SA      # ( ᖔ → ᖕᒑ ) CANADIAN SYLLABICS NGAA → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CAA  # 
+
+1671 ; 1596 148B ;     SA      # ( ᙱ → ᖖᒋ ) CANADIAN SYLLABICS NNGI → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS CI  # 
+
+1672 ; 1596 148C ;     SA      # ( ᙲ → ᖖᒌ ) CANADIAN SYLLABICS NNGII → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS CII        # 
+
+1673 ; 1596 148D ;     SA      # ( ᙳ → ᖖᒍ ) CANADIAN SYLLABICS NNGO → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS CO  # 
+
+1674 ; 1596 148E ;     SA      # ( ᙴ → ᖖᒎ ) CANADIAN SYLLABICS NNGOO → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS COO        # 
+
+1675 ; 1596 1490 ;     SA      # ( ᙵ → ᖖᒐ ) CANADIAN SYLLABICS NNGA → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS CA  # 
+
+1676 ; 1596 1491 ;     SA      # ( ᙶ → ᖖᒑ ) CANADIAN SYLLABICS NNGAA → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS CAA        # 
+
+15EA ; 15DE ;  SA      # ( ᗪ → ᗞ ) CANADIAN SYLLABICS CARRIER PE → CANADIAN SYLLABICS CARRIER THE      # 
+
+1634 ; 162E ;  SA      # ( ᘴ → ᘮ ) CANADIAN SYLLABICS CARRIER TLHU → CANADIAN SYLLABICS CARRIER LHU    # 
+
+1D6C0 ;        162F ;  SA      # ( 𝛀 → ᘯ ) MATHEMATICAL BOLD CAPITAL OMEGA → CANADIAN SYLLABICS CARRIER LHO   # →Ω→
+1D6FA ;        162F ;  SA      # ( 𝛺 → ᘯ ) MATHEMATICAL ITALIC CAPITAL OMEGA → CANADIAN SYLLABICS CARRIER LHO # →Ω→
+1D734 ;        162F ;  SA      # ( 𝜴 → ᘯ ) MATHEMATICAL BOLD ITALIC CAPITAL OMEGA → CANADIAN SYLLABICS CARRIER LHO    # →Ω→
+1D76E ;        162F ;  SA      # ( 𝝮 → ᘯ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA → CANADIAN SYLLABICS CARRIER LHO        # →Ω→
+1D7A8 ;        162F ;  SA      # ( 𝞨 → ᘯ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA → CANADIAN SYLLABICS CARRIER LHO # →Ω→
+1635 ; 162F ;  SA      # ( ᘵ → ᘯ ) CANADIAN SYLLABICS CARRIER TLHO → CANADIAN SYLLABICS CARRIER LHO    # 
+
+3131 ; 1100 ;  SA      # ( ㄱ → ᄀ ) HANGUL LETTER KIYEOK → HANGUL CHOSEONG KIYEOK       # 
+11A8 ; 1100 ;  SA      # ( ᆨ → ᄀ ) HANGUL JONGSEONG KIYEOK → HANGUL CHOSEONG KIYEOK    # 
+
+1101 ; 1100 1100 ;     SA      # ( ᄁ → ᄀᄀ ) HANGUL CHOSEONG SSANGKIYEOK → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK     # 
+3132 ; 1100 1100 ;     SA      # ( ㄲ → ᄀᄀ ) HANGUL LETTER SSANGKIYEOK → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK       # →ᄁ→
+11A9 ; 1100 1100 ;     SA      # ( ᆩ → ᄀᄀ ) HANGUL JONGSEONG SSANGKIYEOK → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK    # →ᄁ→
+
+11FA ; 1100 1102 ;     SA      # ( ᇺ → ᄀᄂ ) HANGUL JONGSEONG KIYEOK-NIEUN → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG NIEUN    # →ᆨᆫ→
+
+115A ; 1100 1103 ;     SA      # ( ᅚ → ᄀᄃ ) HANGUL CHOSEONG KIYEOK-TIKEUT → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG TIKEUT   # 
+
+11C3 ; 1100 1105 ;     SA      # ( ᇃ → ᄀᄅ ) HANGUL JONGSEONG KIYEOK-RIEUL → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG RIEUL    # →ᆨᆯ→
+
+11FB ; 1100 1107 ;     SA      # ( ᇻ → ᄀᄇ ) HANGUL JONGSEONG KIYEOK-PIEUP → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG PIEUP    # →ᆨᆸ→
+
+11AA ; 1100 1109 ;     SA      # ( ᆪ → ᄀᄉ ) HANGUL JONGSEONG KIYEOK-SIOS → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG SIOS      # →ᆨᆺ→
+3133 ; 1100 1109 ;     SA      # ( ㄳ → ᄀᄉ ) HANGUL LETTER KIYEOK-SIOS → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG SIOS # →ᆪ→→ᆨᆺ→
+
+11C4 ; 1100 1109 1100 ;        SA      # ( ᇄ → ᄀᄉᄀ ) HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK    # →ᆨᆺᆨ→
+
+11FC ; 1100 110E ;     SA      # ( ᇼ → ᄀᄎ ) HANGUL JONGSEONG KIYEOK-CHIEUCH → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG CHIEUCH        # →ᆨᆾ→
+
+11FD ; 1100 110F ;     SA      # ( ᇽ → ᄀᄏ ) HANGUL JONGSEONG KIYEOK-KHIEUKH → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KHIEUKH        # →ᆨᆿ→
+
+11FE ; 1100 1112 ;     SA      # ( ᇾ → ᄀᄒ ) HANGUL JONGSEONG KIYEOK-HIEUH → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG HIEUH    # →ᆨᇂ→
+
+3134 ; 1102 ;  SA      # ( ㄴ → ᄂ ) HANGUL LETTER NIEUN → HANGUL CHOSEONG NIEUN # 
+11AB ; 1102 ;  SA      # ( ᆫ → ᄂ ) HANGUL JONGSEONG NIEUN → HANGUL CHOSEONG NIEUN      # 
+
+1113 ; 1102 1100 ;     SA      # ( ᄓ → ᄂᄀ ) HANGUL CHOSEONG NIEUN-KIYEOK → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG KIYEOK     # 
+11C5 ; 1102 1100 ;     SA      # ( ᇅ → ᄂᄀ ) HANGUL JONGSEONG NIEUN-KIYEOK → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG KIYEOK    # →ᄓ→
+
+1114 ; 1102 1102 ;     SA      # ( ᄔ → ᄂᄂ ) HANGUL CHOSEONG SSANGNIEUN → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG NIEUN        # 
+3165 ; 1102 1102 ;     SA      # ( ㅥ → ᄂᄂ ) HANGUL LETTER SSANGNIEUN → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG NIEUN  # →ᄔ→
+11FF ; 1102 1102 ;     SA      # ( ᇿ → ᄂᄂ ) HANGUL JONGSEONG SSANGNIEUN → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG NIEUN       # →ᆫᆫ→
+
+1115 ; 1102 1103 ;     SA      # ( ᄕ → ᄂᄃ ) HANGUL CHOSEONG NIEUN-TIKEUT → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG TIKEUT     # 
+3166 ; 1102 1103 ;     SA      # ( ㅦ → ᄂᄃ ) HANGUL LETTER NIEUN-TIKEUT → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG TIKEUT       # →ᄕ→
+11C6 ; 1102 1103 ;     SA      # ( ᇆ → ᄂᄃ ) HANGUL JONGSEONG NIEUN-TIKEUT → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG TIKEUT    # →ᄕ→
+
+D7CB ; 1102 1105 ;     SA      # ( ퟋ → ᄂᄅ ) HANGUL JONGSEONG NIEUN-RIEUL → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG RIEUL      # →ᆫᆯ→
+
+1116 ; 1102 1107 ;     SA      # ( ᄖ → ᄂᄇ ) HANGUL CHOSEONG NIEUN-PIEUP → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG PIEUP       # 
+
+115B ; 1102 1109 ;     SA      # ( ᅛ → ᄂᄉ ) HANGUL CHOSEONG NIEUN-SIOS → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG SIOS # 
+11C7 ; 1102 1109 ;     SA      # ( ᇇ → ᄂᄉ ) HANGUL JONGSEONG NIEUN-SIOS → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG SIOS        # →ᆫᆺ→
+3167 ; 1102 1109 ;     SA      # ( ㅧ → ᄂᄉ ) HANGUL LETTER NIEUN-SIOS → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG SIOS   # →ᇇ→→ᆫᆺ→
+
+115C ; 1102 110C ;     SA      # ( ᅜ → ᄂᄌ ) HANGUL CHOSEONG NIEUN-CIEUC → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG CIEUC       # 
+11AC ; 1102 110C ;     SA      # ( ᆬ → ᄂᄌ ) HANGUL JONGSEONG NIEUN-CIEUC → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG CIEUC      # →ᆫᆽ→
+3135 ; 1102 110C ;     SA      # ( ㄵ → ᄂᄌ ) HANGUL LETTER NIEUN-CIEUC → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG CIEUC # →ᆬ→→ᆫᆽ→
+
+D7CC ; 1102 110E ;     SA      # ( ퟌ → ᄂᄎ ) HANGUL JONGSEONG NIEUN-CHIEUCH → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG CHIEUCH  # →ᆫᆾ→
+
+11C9 ; 1102 1110 ;     SA      # ( ᇉ → ᄂᄐ ) HANGUL JONGSEONG NIEUN-THIEUTH → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG THIEUTH  # →ᆫᇀ→
+
+115D ; 1102 1112 ;     SA      # ( ᅝ → ᄂᄒ ) HANGUL CHOSEONG NIEUN-HIEUH → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG HIEUH       # 
+11AD ; 1102 1112 ;     SA      # ( ᆭ → ᄂᄒ ) HANGUL JONGSEONG NIEUN-HIEUH → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG HIEUH      # →ᆫᇂ→
+3136 ; 1102 1112 ;     SA      # ( ㄶ → ᄂᄒ ) HANGUL LETTER NIEUN-HIEUH → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG HIEUH # →ᆭ→→ᆫᇂ→
+
+11C8 ; 1102 1140 ;     SA      # ( ᇈ → ᄂᅀ ) HANGUL JONGSEONG NIEUN-PANSIOS → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG PANSIOS  # →ᆫᇫ→
+3168 ; 1102 1140 ;     SA      # ( ㅨ → ᄂᅀ ) HANGUL LETTER NIEUN-PANSIOS → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG PANSIOS     # →ᇈ→→ᆫᇫ→
+
+3137 ; 1103 ;  SA      # ( ㄷ → ᄃ ) HANGUL LETTER TIKEUT → HANGUL CHOSEONG TIKEUT       # 
+11AE ; 1103 ;  SA      # ( ᆮ → ᄃ ) HANGUL JONGSEONG TIKEUT → HANGUL CHOSEONG TIKEUT    # 
+
+1117 ; 1103 1100 ;     SA      # ( ᄗ → ᄃᄀ ) HANGUL CHOSEONG TIKEUT-KIYEOK → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG KIYEOK   # 
+11CA ; 1103 1100 ;     SA      # ( ᇊ → ᄃᄀ ) HANGUL JONGSEONG TIKEUT-KIYEOK → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG KIYEOK  # →ᄗ→
+
+1104 ; 1103 1103 ;     SA      # ( ᄄ → ᄃᄃ ) HANGUL CHOSEONG SSANGTIKEUT → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG TIKEUT     # 
+3138 ; 1103 1103 ;     SA      # ( ㄸ → ᄃᄃ ) HANGUL LETTER SSANGTIKEUT → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG TIKEUT       # →ᄄ→
+D7CD ; 1103 1103 ;     SA      # ( ퟍ → ᄃᄃ ) HANGUL JONGSEONG SSANGTIKEUT → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG TIKEUT    # →ᆮᆮ→
+
+D7CE ; 1103 1103 1107 ;        SA      # ( ퟎ → ᄃᄃᄇ ) HANGUL JONGSEONG SSANGTIKEUT-PIEUP → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG PIEUP    # →ᆮᆮᆸ→
+
+115E ; 1103 1105 ;     SA      # ( ᅞ → ᄃᄅ ) HANGUL CHOSEONG TIKEUT-RIEUL → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG RIEUL     # 
+11CB ; 1103 1105 ;     SA      # ( ᇋ → ᄃᄅ ) HANGUL JONGSEONG TIKEUT-RIEUL → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG RIEUL    # →ᆮᆯ→
+
+A960 ; 1103 1106 ;     SA      # ( ꥠ → ᄃᄆ ) HANGUL CHOSEONG TIKEUT-MIEUM → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG MIEUM     # 
+
+A961 ; 1103 1107 ;     SA      # ( ꥡ → ᄃᄇ ) HANGUL CHOSEONG TIKEUT-PIEUP → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG PIEUP     # 
+D7CF ; 1103 1107 ;     SA      # ( ퟏ → ᄃᄇ ) HANGUL JONGSEONG TIKEUT-PIEUP → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG PIEUP    # →ᆮᆸ→
+
+A962 ; 1103 1109 ;     SA      # ( ꥢ → ᄃᄉ ) HANGUL CHOSEONG TIKEUT-SIOS → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG SIOS       # 
+D7D0 ; 1103 1109 ;     SA      # ( ퟐ → ᄃᄉ ) HANGUL JONGSEONG TIKEUT-SIOS → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG SIOS      # →ᆮᆺ→
+
+D7D1 ; 1103 1109 1100 ;        SA      # ( ퟑ → ᄃᄉᄀ ) HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK    # →ᆮᆺᆨ→
+
+A963 ; 1103 110C ;     SA      # ( ꥣ → ᄃᄌ ) HANGUL CHOSEONG TIKEUT-CIEUC → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG CIEUC     # 
+D7D2 ; 1103 110C ;     SA      # ( ퟒ → ᄃᄌ ) HANGUL JONGSEONG TIKEUT-CIEUC → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG CIEUC    # →ᆮᆽ→
+
+D7D3 ; 1103 110E ;     SA      # ( ퟓ → ᄃᄎ ) HANGUL JONGSEONG TIKEUT-CHIEUCH → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG CHIEUCH        # →ᆮᆾ→
+
+D7D4 ; 1103 1110 ;     SA      # ( ퟔ → ᄃᄐ ) HANGUL JONGSEONG TIKEUT-THIEUTH → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG THIEUTH        # →ᆮᇀ→
+
+3139 ; 1105 ;  SA      # ( ㄹ → ᄅ ) HANGUL LETTER RIEUL → HANGUL CHOSEONG RIEUL # 
+11AF ; 1105 ;  SA      # ( ᆯ → ᄅ ) HANGUL JONGSEONG RIEUL → HANGUL CHOSEONG RIEUL      # 
+
+A964 ; 1105 1100 ;     SA      # ( ꥤ → ᄅᄀ ) HANGUL CHOSEONG RIEUL-KIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK     # 
+11B0 ; 1105 1100 ;     SA      # ( ᆰ → ᄅᄀ ) HANGUL JONGSEONG RIEUL-KIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK    # →ᆯᆨ→
+313A ; 1105 1100 ;     SA      # ( ㄺ → ᄅᄀ ) HANGUL LETTER RIEUL-KIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK       # →ᆰ→→ᆯᆨ→
+
+A965 ; 1105 1100 1100 ;        SA      # ( ꥥ → ᄅᄀᄀ ) HANGUL CHOSEONG RIEUL-SSANGKIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK     # 
+D7D5 ; 1105 1100 1100 ;        SA      # ( ퟕ → ᄅᄀᄀ ) HANGUL JONGSEONG RIEUL-SSANGKIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK    # →ᆯᆨᆨ→
+
+11CC ; 1105 1100 1109 ;        SA      # ( ᇌ → ᄅᄀᄉ ) HANGUL JONGSEONG RIEUL-KIYEOK-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG SIOS      # →ᆯᆨᆺ→
+3169 ; 1105 1100 1109 ;        SA      # ( ㅩ → ᄅᄀᄉ ) HANGUL LETTER RIEUL-KIYEOK-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG SIOS # →ᇌ→→ᆯᆨᆺ→
+
+D7D6 ; 1105 1100 1112 ;        SA      # ( ퟖ → ᄅᄀᄒ ) HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG HIEUH    # →ᆯᆨᇂ→
+
+1118 ; 1105 1102 ;     SA      # ( ᄘ → ᄅᄂ ) HANGUL CHOSEONG RIEUL-NIEUN → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG NIEUN       # 
+11CD ; 1105 1102 ;     SA      # ( ᇍ → ᄅᄂ ) HANGUL JONGSEONG RIEUL-NIEUN → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG NIEUN      # →ᄘ→
+
+A966 ; 1105 1103 ;     SA      # ( ꥦ → ᄅᄃ ) HANGUL CHOSEONG RIEUL-TIKEUT → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG TIKEUT     # 
+11CE ; 1105 1103 ;     SA      # ( ᇎ → ᄅᄃ ) HANGUL JONGSEONG RIEUL-TIKEUT → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG TIKEUT    # →ᆯᆮ→
+316A ; 1105 1103 ;     SA      # ( ㅪ → ᄅᄃ ) HANGUL LETTER RIEUL-TIKEUT → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG TIKEUT       # →ᇎ→→ᆯᆮ→
+
+A967 ; 1105 1103 1103 ;        SA      # ( ꥧ → ᄅᄃᄃ ) HANGUL CHOSEONG RIEUL-SSANGTIKEUT → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG TIKEUT     # 
+
+11CF ; 1105 1103 1112 ;        SA      # ( ᇏ → ᄅᄃᄒ ) HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG HIEUH    # →ᆯᆮᇂ→
+
+1119 ; 1105 1105 ;     SA      # ( ᄙ → ᄅᄅ ) HANGUL CHOSEONG SSANGRIEUL → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG RIEUL        # 
+11D0 ; 1105 1105 ;     SA      # ( ᇐ → ᄅᄅ ) HANGUL JONGSEONG SSANGRIEUL → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG RIEUL       # →ᄙ→
+
+D7D7 ; 1105 1105 110F ;        SA      # ( ퟗ → ᄅᄅᄏ ) HANGUL JONGSEONG SSANGRIEUL-KHIEUKH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KHIEUKH   # →ᆯᆯᆿ→
+
+A968 ; 1105 1106 ;     SA      # ( ꥨ → ᄅᄆ ) HANGUL CHOSEONG RIEUL-MIEUM → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM       # 
+11B1 ; 1105 1106 ;     SA      # ( ᆱ → ᄅᄆ ) HANGUL JONGSEONG RIEUL-MIEUM → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM      # →ᆯᆷ→
+313B ; 1105 1106 ;     SA      # ( ㄻ → ᄅᄆ ) HANGUL LETTER RIEUL-MIEUM → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM # →ᆱ→→ᆯᆷ→
+
+11D1 ; 1105 1106 1100 ;        SA      # ( ᇑ → ᄅᄆᄀ ) HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG KIYEOK    # →ᆯᆷᆨ→
+
+11D2 ; 1105 1106 1109 ;        SA      # ( ᇒ → ᄅᄆᄉ ) HANGUL JONGSEONG RIEUL-MIEUM-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG SIOS        # →ᆯᆷᆺ→
+
+D7D8 ; 1105 1106 1112 ;        SA      # ( ퟘ → ᄅᄆᄒ ) HANGUL JONGSEONG RIEUL-MIEUM-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG HIEUH      # →ᆯᆷᇂ→
+
+A969 ; 1105 1107 ;     SA      # ( ꥩ → ᄅᄇ ) HANGUL CHOSEONG RIEUL-PIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP       # 
+11B2 ; 1105 1107 ;     SA      # ( ᆲ → ᄅᄇ ) HANGUL JONGSEONG RIEUL-PIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP      # →ᆯᆸ→
+313C ; 1105 1107 ;     SA      # ( ㄼ → ᄅᄇ ) HANGUL LETTER RIEUL-PIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP # →ᆲ→→ᆯᆸ→
+
+D7D9 ; 1105 1107 1103 ;        SA      # ( ퟙ → ᄅᄇᄃ ) HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG TIKEUT    # →ᆯᆸᆮ→
+
+A96A ; 1105 1107 1107 ;        SA      # ( ꥪ → ᄅᄇᄇ ) HANGUL CHOSEONG RIEUL-SSANGPIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP        # 
+
+11D3 ; 1105 1107 1109 ;        SA      # ( ᇓ → ᄅᄇᄉ ) HANGUL JONGSEONG RIEUL-PIEUP-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS        # →ᆯᆸᆺ→
+316B ; 1105 1107 1109 ;        SA      # ( ㅫ → ᄅᄇᄉ ) HANGUL LETTER RIEUL-PIEUP-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS   # →ᇓ→→ᆯᆸᆺ→
+
+A96B ; 1105 1107 110B ;        SA      # ( ꥫ → ᄅᄇᄋ ) HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG     # 
+11D5 ; 1105 1107 110B ;        SA      # ( ᇕ → ᄅᄇᄋ ) HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG    # →ᆯᆸᆼ→
+
+D7DA ; 1105 1107 1111 ;        SA      # ( ퟚ → ᄅᄇᄑ ) HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PHIEUPH  # →ᆯᆸᇁ→
+
+11D4 ; 1105 1107 1112 ;        SA      # ( ᇔ → ᄅᄇᄒ ) HANGUL JONGSEONG RIEUL-PIEUP-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG HIEUH      # →ᆯᆸᇂ→
+
+A96C ; 1105 1109 ;     SA      # ( ꥬ → ᄅᄉ ) HANGUL CHOSEONG RIEUL-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG SIOS # 
+11B3 ; 1105 1109 ;     SA      # ( ᆳ → ᄅᄉ ) HANGUL JONGSEONG RIEUL-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG SIOS        # →ᆯᆺ→
+313D ; 1105 1109 ;     SA      # ( ㄽ → ᄅᄉ ) HANGUL LETTER RIEUL-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG SIOS   # →ᆳ→→ᆯᆺ→
+
+11D6 ; 1105 1109 1109 ;        SA      # ( ᇖ → ᄅᄉᄉ ) HANGUL JONGSEONG RIEUL-SSANGSIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS  # →ᆯᆺᆺ→
+
+111B ; 1105 110B ;     SA      # ( ᄛ → ᄅᄋ ) HANGUL CHOSEONG KAPYEOUNRIEUL → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG IEUNG     # 
+D7DD ; 1105 110B ;     SA      # ( ퟝ → ᄅᄋ ) HANGUL JONGSEONG KAPYEOUNRIEUL → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG IEUNG    # →ᆯᆼ→
+
+A96D ; 1105 110C ;     SA      # ( ꥭ → ᄅᄌ ) HANGUL CHOSEONG RIEUL-CIEUC → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG CIEUC       # 
+
+A96E ; 1105 110F ;     SA      # ( ꥮ → ᄅᄏ ) HANGUL CHOSEONG RIEUL-KHIEUKH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KHIEUKH   # 
+11D8 ; 1105 110F ;     SA      # ( ᇘ → ᄅᄏ ) HANGUL JONGSEONG RIEUL-KHIEUKH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KHIEUKH  # →ᆯᆿ→
+
+11B4 ; 1105 1110 ;     SA      # ( ᆴ → ᄅᄐ ) HANGUL JONGSEONG RIEUL-THIEUTH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG THIEUTH  # →ᆯᇀ→
+313E ; 1105 1110 ;     SA      # ( ㄾ → ᄅᄐ ) HANGUL LETTER RIEUL-THIEUTH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG THIEUTH     # →ᆴ→→ᆯᇀ→
+
+11B5 ; 1105 1111 ;     SA      # ( ᆵ → ᄅᄑ ) HANGUL JONGSEONG RIEUL-PHIEUPH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PHIEUPH  # →ᆯᇁ→
+313F ; 1105 1111 ;     SA      # ( ㄿ → ᄅᄑ ) HANGUL LETTER RIEUL-PHIEUPH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PHIEUPH     # →ᆵ→→ᆯᇁ→
+
+111A ; 1105 1112 ;     SA      # ( ᄚ → ᄅᄒ ) HANGUL CHOSEONG RIEUL-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG HIEUH       # 
+3140 ; 1105 1112 ;     SA      # ( ㅀ → ᄅᄒ ) HANGUL LETTER RIEUL-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG HIEUH # →ᄚ→
+113B ; 1105 1112 ;     SA      # ( ᄻ → ᄅᄒ ) HANGUL CHOSEONG SIOS-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG HIEUH        # →ᄚ→
+11B6 ; 1105 1112 ;     SA      # ( ᆶ → ᄅᄒ ) HANGUL JONGSEONG RIEUL-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG HIEUH      # →ᄚ→
+D7F2 ; 1105 1112 ;     SA      # ( ퟲ → ᄅᄒ ) HANGUL JONGSEONG SIOS-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG HIEUH       # →ᆺᇂ→→ᄉᄒ→→ᄻ→→ᄚ→
+
+11D7 ; 1105 1140 ;     SA      # ( ᇗ → ᄅᅀ ) HANGUL JONGSEONG RIEUL-PANSIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PANSIOS  # →ᆯᇫ→
+316C ; 1105 1140 ;     SA      # ( ㅬ → ᄅᅀ ) HANGUL LETTER RIEUL-PANSIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PANSIOS     # →ᇗ→→ᆯᇫ→
+
+D7DB ; 1105 114C ;     SA      # ( ퟛ → ᄅᅌ ) HANGUL JONGSEONG RIEUL-YESIEUNG → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG YESIEUNG        # →ᆯᇰ→
+
+11D9 ; 1105 1159 ;     SA      # ( ᇙ → ᄅᅙ ) HANGUL JONGSEONG RIEUL-YEORINHIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG YEORINHIEUH  # →ᆯᇹ→
+316D ; 1105 1159 ;     SA      # ( ㅭ → ᄅᅙ ) HANGUL LETTER RIEUL-YEORINHIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG YEORINHIEUH     # →ᇙ→→ᆯᇹ→
+
+D7DC ; 1105 1159 1112 ;        SA      # ( ퟜ → ᄅᅙᄒ ) HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG YEORINHIEUH, HANGUL CHOSEONG HIEUH  # →ᆯᇹᇂ→
+
+3141 ; 1106 ;  SA      # ( ㅁ → ᄆ ) HANGUL LETTER MIEUM → HANGUL CHOSEONG MIEUM # 
+11B7 ; 1106 ;  SA      # ( ᆷ → ᄆ ) HANGUL JONGSEONG MIEUM → HANGUL CHOSEONG MIEUM      # 
+
+A96F ; 1106 1100 ;     SA      # ( ꥯ → ᄆᄀ ) HANGUL CHOSEONG MIEUM-KIYEOK → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG KIYEOK     # 
+11DA ; 1106 1100 ;     SA      # ( ᇚ → ᄆᄀ ) HANGUL JONGSEONG MIEUM-KIYEOK → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG KIYEOK    # →ᆷᆨ→
+
+D7DE ; 1106 1102 ;     SA      # ( ퟞ → ᄆᄂ ) HANGUL JONGSEONG MIEUM-NIEUN → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG NIEUN      # →ᆷᆫ→
+
+D7DF ; 1106 1102 1102 ;        SA      # ( ퟟ → ᄆᄂᄂ ) HANGUL JONGSEONG MIEUM-SSANGNIEUN → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG NIEUN       # →ᆷᆫᆫ→
+
+A970 ; 1106 1103 ;     SA      # ( ꥰ → ᄆᄃ ) HANGUL CHOSEONG MIEUM-TIKEUT → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG TIKEUT     # 
+
+11DB ; 1106 1105 ;     SA      # ( ᇛ → ᄆᄅ ) HANGUL JONGSEONG MIEUM-RIEUL → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG RIEUL      # →ᆷᆯ→
+
+D7E0 ; 1106 1106 ;     SA      # ( ퟠ → ᄆᄆ ) HANGUL JONGSEONG SSANGMIEUM → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG MIEUM       # →ᆷᆷ→
+
+111C ; 1106 1107 ;     SA      # ( ᄜ → ᄆᄇ ) HANGUL CHOSEONG MIEUM-PIEUP → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PIEUP       # 
+316E ; 1106 1107 ;     SA      # ( ㅮ → ᄆᄇ ) HANGUL LETTER MIEUM-PIEUP → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PIEUP # →ᄜ→
+11DC ; 1106 1107 ;     SA      # ( ᇜ → ᄆᄇ ) HANGUL JONGSEONG MIEUM-PIEUP → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PIEUP      # →ᄜ→
+
+D7E1 ; 1106 1107 1109 ;        SA      # ( ퟡ → ᄆᄇᄉ ) HANGUL JONGSEONG MIEUM-PIEUP-SIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS        # →ᆷᆸᆺ→
+
+A971 ; 1106 1109 ;     SA      # ( ꥱ → ᄆᄉ ) HANGUL CHOSEONG MIEUM-SIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG SIOS # 
+11DD ; 1106 1109 ;     SA      # ( ᇝ → ᄆᄉ ) HANGUL JONGSEONG MIEUM-SIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG SIOS        # →ᆷᆺ→
+316F ; 1106 1109 ;     SA      # ( ㅯ → ᄆᄉ ) HANGUL LETTER MIEUM-SIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG SIOS   # →ᇝ→→ᆷᆺ→
+
+11DE ; 1106 1109 1109 ;        SA      # ( ᇞ → ᄆᄉᄉ ) HANGUL JONGSEONG MIEUM-SSANGSIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS  # →ᆷᆺᆺ→
+
+111D ; 1106 110B ;     SA      # ( ᄝ → ᄆᄋ ) HANGUL CHOSEONG KAPYEOUNMIEUM → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG IEUNG     # 
+3171 ; 1106 110B ;     SA      # ( ㅱ → ᄆᄋ ) HANGUL LETTER KAPYEOUNMIEUM → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG IEUNG       # →ᄝ→
+11E2 ; 1106 110B ;     SA      # ( ᇢ → ᄆᄋ ) HANGUL JONGSEONG KAPYEOUNMIEUM → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG IEUNG    # →ᄝ→
+
+D7E2 ; 1106 110C ;     SA      # ( ퟢ → ᄆᄌ ) HANGUL JONGSEONG MIEUM-CIEUC → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG CIEUC      # →ᆷᆽ→
+
+11E0 ; 1106 110E ;     SA      # ( ᇠ → ᄆᄎ ) HANGUL JONGSEONG MIEUM-CHIEUCH → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG CHIEUCH  # →ᆷᆾ→
+
+11E1 ; 1106 1112 ;     SA      # ( ᇡ → ᄆᄒ ) HANGUL JONGSEONG MIEUM-HIEUH → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG HIEUH      # →ᆷᇂ→
+
+11DF ; 1106 1140 ;     SA      # ( ᇟ → ᄆᅀ ) HANGUL JONGSEONG MIEUM-PANSIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PANSIOS  # →ᆷᇫ→
+3170 ; 1106 1140 ;     SA      # ( ㅰ → ᄆᅀ ) HANGUL LETTER MIEUM-PANSIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PANSIOS     # →ᇟ→→ᆷᇫ→
+
+3142 ; 1107 ;  SA      # ( ㅂ → ᄇ ) HANGUL LETTER PIEUP → HANGUL CHOSEONG PIEUP # 
+11B8 ; 1107 ;  SA      # ( ᆸ → ᄇ ) HANGUL JONGSEONG PIEUP → HANGUL CHOSEONG PIEUP      # 
+
+111E ; 1107 1100 ;     SA      # ( ᄞ → ᄇᄀ ) HANGUL CHOSEONG PIEUP-KIYEOK → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG KIYEOK     # 
+3172 ; 1107 1100 ;     SA      # ( ㅲ → ᄇᄀ ) HANGUL LETTER PIEUP-KIYEOK → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG KIYEOK       # →ᄞ→
+
+111F ; 1107 1102 ;     SA      # ( ᄟ → ᄇᄂ ) HANGUL CHOSEONG PIEUP-NIEUN → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG NIEUN       # 
+
+1120 ; 1107 1103 ;     SA      # ( ᄠ → ᄇᄃ ) HANGUL CHOSEONG PIEUP-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG TIKEUT     # 
+3173 ; 1107 1103 ;     SA      # ( ㅳ → ᄇᄃ ) HANGUL LETTER PIEUP-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG TIKEUT       # →ᄠ→
+D7E3 ; 1107 1103 ;     SA      # ( ퟣ → ᄇᄃ ) HANGUL JONGSEONG PIEUP-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG TIKEUT    # →ᆸᆮ→
+
+11E3 ; 1107 1105 ;     SA      # ( ᇣ → ᄇᄅ ) HANGUL JONGSEONG PIEUP-RIEUL → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG RIEUL      # →ᆸᆯ→
+
+D7E4 ; 1107 1105 1111 ;        SA      # ( ퟤ → ᄇᄅᄑ ) HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PHIEUPH  # →ᆸᆯᇁ→
+
+D7E5 ; 1107 1106 ;     SA      # ( ퟥ → ᄇᄆ ) HANGUL JONGSEONG PIEUP-MIEUM → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG MIEUM      # →ᆸᆷ→
+
+1108 ; 1107 1107 ;     SA      # ( ᄈ → ᄇᄇ ) HANGUL CHOSEONG SSANGPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP        # 
+3143 ; 1107 1107 ;     SA      # ( ㅃ → ᄇᄇ ) HANGUL LETTER SSANGPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP  # →ᄈ→
+D7E6 ; 1107 1107 ;     SA      # ( ퟦ → ᄇᄇ ) HANGUL JONGSEONG SSANGPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP       # →ᆸᆸ→
+
+112C ; 1107 1107 110B ;        SA      # ( ᄬ → ᄇᄇᄋ ) HANGUL CHOSEONG KAPYEOUNSSANGPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG      # 
+3179 ; 1107 1107 110B ;        SA      # ( ㅹ → ᄇᄇᄋ ) HANGUL LETTER KAPYEOUNSSANGPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG        # →ᄬ→
+
+1121 ; 1107 1109 ;     SA      # ( ᄡ → ᄇᄉ ) HANGUL CHOSEONG PIEUP-SIOS → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS # 
+3144 ; 1107 1109 ;     SA      # ( ㅄ → ᄇᄉ ) HANGUL LETTER PIEUP-SIOS → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS   # →ᄡ→
+11B9 ; 1107 1109 ;     SA      # ( ᆹ → ᄇᄉ ) HANGUL JONGSEONG PIEUP-SIOS → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS        # →ᄡ→
+
+1122 ; 1107 1109 1100 ;        SA      # ( ᄢ → ᄇᄉᄀ ) HANGUL CHOSEONG PIEUP-SIOS-KIYEOK → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK       # 
+3174 ; 1107 1109 1100 ;        SA      # ( ㅴ → ᄇᄉᄀ ) HANGUL LETTER PIEUP-SIOS-KIYEOK → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK # →ᄢ→
+
+1123 ; 1107 1109 1103 ;        SA      # ( ᄣ → ᄇᄉᄃ ) HANGUL CHOSEONG PIEUP-SIOS-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT       # 
+3175 ; 1107 1109 1103 ;        SA      # ( ㅵ → ᄇᄉᄃ ) HANGUL LETTER PIEUP-SIOS-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT # →ᄣ→
+D7E7 ; 1107 1109 1103 ;        SA      # ( ퟧ → ᄇᄉᄃ ) HANGUL JONGSEONG PIEUP-SIOS-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT      # →ᆸᆺᆮ→
+
+1124 ; 1107 1109 1107 ;        SA      # ( ᄤ → ᄇᄉᄇ ) HANGUL CHOSEONG PIEUP-SIOS-PIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP # 
+
+1125 ; 1107 1109 1109 ;        SA      # ( ᄥ → ᄇᄉᄉ ) HANGUL CHOSEONG PIEUP-SSANGSIOS → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS   # 
+
+1126 ; 1107 1109 110C ;        SA      # ( ᄦ → ᄇᄉᄌ ) HANGUL CHOSEONG PIEUP-SIOS-CIEUC → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CIEUC # 
+
+A972 ; 1107 1109 1110 ;        SA      # ( ꥲ → ᄇᄉᄐ ) HANGUL CHOSEONG PIEUP-SIOS-THIEUTH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG THIEUTH     # 
+
+112B ; 1107 110B ;     SA      # ( ᄫ → ᄇᄋ ) HANGUL CHOSEONG KAPYEOUNPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG     # 
+3178 ; 1107 110B ;     SA      # ( ㅸ → ᄇᄋ ) HANGUL LETTER KAPYEOUNPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG       # →ᄫ→
+11E6 ; 1107 110B ;     SA      # ( ᇦ → ᄇᄋ ) HANGUL JONGSEONG KAPYEOUNPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG    # →ᄫ→
+
+1127 ; 1107 110C ;     SA      # ( ᄧ → ᄇᄌ ) HANGUL CHOSEONG PIEUP-CIEUC → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG CIEUC       # 
+3176 ; 1107 110C ;     SA      # ( ㅶ → ᄇᄌ ) HANGUL LETTER PIEUP-CIEUC → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG CIEUC # →ᄧ→
+D7E8 ; 1107 110C ;     SA      # ( ퟨ → ᄇᄌ ) HANGUL JONGSEONG PIEUP-CIEUC → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG CIEUC      # →ᆸᆽ→
+
+1128 ; 1107 110E ;     SA      # ( ᄨ → ᄇᄎ ) HANGUL CHOSEONG PIEUP-CHIEUCH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG CHIEUCH   # 
+D7E9 ; 1107 110E ;     SA      # ( ퟩ → ᄇᄎ ) HANGUL JONGSEONG PIEUP-CHIEUCH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG CHIEUCH  # →ᆸᆾ→
+
+A973 ; 1107 110F ;     SA      # ( ꥳ → ᄇᄏ ) HANGUL CHOSEONG PIEUP-KHIEUKH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG KHIEUKH   # 
+
+1129 ; 1107 1110 ;     SA      # ( ᄩ → ᄇᄐ ) HANGUL CHOSEONG PIEUP-THIEUTH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG THIEUTH   # 
+3177 ; 1107 1110 ;     SA      # ( ㅷ → ᄇᄐ ) HANGUL LETTER PIEUP-THIEUTH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG THIEUTH     # →ᄩ→
+
+112A ; 1107 1111 ;     SA      # ( ᄪ → ᄇᄑ ) HANGUL CHOSEONG PIEUP-PHIEUPH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PHIEUPH   # 
+11E4 ; 1107 1111 ;     SA      # ( ᇤ → ᄇᄑ ) HANGUL JONGSEONG PIEUP-PHIEUPH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PHIEUPH  # →ᆸᇁ→
+
+A974 ; 1107 1112 ;     SA      # ( ꥴ → ᄇᄒ ) HANGUL CHOSEONG PIEUP-HIEUH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG HIEUH       # 
+11E5 ; 1107 1112 ;     SA      # ( ᇥ → ᄇᄒ ) HANGUL JONGSEONG PIEUP-HIEUH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG HIEUH      # →ᆸᇂ→
+
+3145 ; 1109 ;  SA      # ( ㅅ → ᄉ ) HANGUL LETTER SIOS → HANGUL CHOSEONG SIOS   # 
+11BA ; 1109 ;  SA      # ( ᆺ → ᄉ ) HANGUL JONGSEONG SIOS → HANGUL CHOSEONG SIOS        # 
+
+112D ; 1109 1100 ;     SA      # ( ᄭ → ᄉᄀ ) HANGUL CHOSEONG SIOS-KIYEOK → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK       # 
+317A ; 1109 1100 ;     SA      # ( ㅺ → ᄉᄀ ) HANGUL LETTER SIOS-KIYEOK → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK # →ᄭ→
+11E7 ; 1109 1100 ;     SA      # ( ᇧ → ᄉᄀ ) HANGUL JONGSEONG SIOS-KIYEOK → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK      # →ᄭ→
+
+112E ; 1109 1102 ;     SA      # ( ᄮ → ᄉᄂ ) HANGUL CHOSEONG SIOS-NIEUN → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG NIEUN # 
+317B ; 1109 1102 ;     SA      # ( ㅻ → ᄉᄂ ) HANGUL LETTER SIOS-NIEUN → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG NIEUN   # →ᄮ→
+
+112F ; 1109 1103 ;     SA      # ( ᄯ → ᄉᄃ ) HANGUL CHOSEONG SIOS-TIKEUT → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT       # 
+317C ; 1109 1103 ;     SA      # ( ㅼ → ᄉᄃ ) HANGUL LETTER SIOS-TIKEUT → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT # →ᄯ→
+11E8 ; 1109 1103 ;     SA      # ( ᇨ → ᄉᄃ ) HANGUL JONGSEONG SIOS-TIKEUT → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT      # →ᄯ→
+
+1130 ; 1109 1105 ;     SA      # ( ᄰ → ᄉᄅ ) HANGUL CHOSEONG SIOS-RIEUL → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG RIEUL # 
+11E9 ; 1109 1105 ;     SA      # ( ᇩ → ᄉᄅ ) HANGUL JONGSEONG SIOS-RIEUL → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG RIEUL        # →ᄰ→
+
+1131 ; 1109 1106 ;     SA      # ( ᄱ → ᄉᄆ ) HANGUL CHOSEONG SIOS-MIEUM → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG MIEUM # 
+D7EA ; 1109 1106 ;     SA      # ( ퟪ → ᄉᄆ ) HANGUL JONGSEONG SIOS-MIEUM → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG MIEUM        # →ᆺᆷ→
+
+1132 ; 1109 1107 ;     SA      # ( ᄲ → ᄉᄇ ) HANGUL CHOSEONG SIOS-PIEUP → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP # 
+317D ; 1109 1107 ;     SA      # ( ㅽ → ᄉᄇ ) HANGUL LETTER SIOS-PIEUP → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP   # →ᄲ→
+11EA ; 1109 1107 ;     SA      # ( ᇪ → ᄉᄇ ) HANGUL JONGSEONG SIOS-PIEUP → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP        # →ᄲ→
+
+1133 ; 1109 1107 1100 ;        SA      # ( ᄳ → ᄉᄇᄀ ) HANGUL CHOSEONG SIOS-PIEUP-KIYEOK → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG KIYEOK       # 
+
+D7EB ; 1109 1107 110B ;        SA      # ( ퟫ → ᄉᄇᄋ ) HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG      # →ᆺᆸᆼ→
+
+110A ; 1109 1109 ;     SA      # ( ᄊ → ᄉᄉ ) HANGUL CHOSEONG SSANGSIOS → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS   # 
+3146 ; 1109 1109 ;     SA      # ( ㅆ → ᄉᄉ ) HANGUL LETTER SSANGSIOS → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS     # →ᄊ→
+11BB ; 1109 1109 ;     SA      # ( ᆻ → ᄉᄉ ) HANGUL JONGSEONG SSANGSIOS → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS  # →ᄊ→
+
+D7EC ; 1109 1109 1100 ;        SA      # ( ퟬ → ᄉᄉᄀ ) HANGUL JONGSEONG SSANGSIOS-KIYEOK → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK        # →ᆺᆺᆨ→
+
+D7ED ; 1109 1109 1103 ;        SA      # ( ퟭ → ᄉᄉᄃ ) HANGUL JONGSEONG SSANGSIOS-TIKEUT → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT        # →ᆺᆺᆮ→
+
+A975 ; 1109 1109 1107 ;        SA      # ( ꥵ → ᄉᄉᄇ ) HANGUL CHOSEONG SSANGSIOS-PIEUP → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP   # 
+
+1134 ; 1109 1109 1109 ;        SA      # ( ᄴ → ᄉᄉᄉ ) HANGUL CHOSEONG SIOS-SSANGSIOS → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS     # 
+
+1135 ; 1109 110B ;     SA      # ( ᄵ → ᄉᄋ ) HANGUL CHOSEONG SIOS-IEUNG → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG IEUNG # 
+
+1136 ; 1109 110C ;     SA      # ( ᄶ → ᄉᄌ ) HANGUL CHOSEONG SIOS-CIEUC → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CIEUC # 
+317E ; 1109 110C ;     SA      # ( ㅾ → ᄉᄌ ) HANGUL LETTER SIOS-CIEUC → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CIEUC   # →ᄶ→
+D7EF ; 1109 110C ;     SA      # ( ퟯ → ᄉᄌ ) HANGUL JONGSEONG SIOS-CIEUC → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CIEUC        # →ᆺᆽ→
+
+1137 ; 1109 110E ;     SA      # ( ᄷ → ᄉᄎ ) HANGUL CHOSEONG SIOS-CHIEUCH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CHIEUCH     # 
+D7F0 ; 1109 110E ;     SA      # ( ퟰ → ᄉᄎ ) HANGUL JONGSEONG SIOS-CHIEUCH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CHIEUCH    # →ᆺᆾ→
+
+1138 ; 1109 110F ;     SA      # ( ᄸ → ᄉᄏ ) HANGUL CHOSEONG SIOS-KHIEUKH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KHIEUKH     # 
+
+1139 ; 1109 1110 ;     SA      # ( ᄹ → ᄉᄐ ) HANGUL CHOSEONG SIOS-THIEUTH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG THIEUTH     # 
+D7F1 ; 1109 1110 ;     SA      # ( ퟱ → ᄉᄐ ) HANGUL JONGSEONG SIOS-THIEUTH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG THIEUTH    # →ᆺᇀ→
+
+113A ; 1109 1111 ;     SA      # ( ᄺ → ᄉᄑ ) HANGUL CHOSEONG SIOS-PHIEUPH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PHIEUPH     # 
+
+D7EE ; 1109 1140 ;     SA      # ( ퟮ → ᄉᅀ ) HANGUL JONGSEONG SIOS-PANSIOS → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PANSIOS    # →ᆺᇫ→
+
+3147 ; 110B ;  SA      # ( ㅇ → ᄋ ) HANGUL LETTER IEUNG → HANGUL CHOSEONG IEUNG # 
+11BC ; 110B ;  SA      # ( ᆼ → ᄋ ) HANGUL JONGSEONG IEUNG → HANGUL CHOSEONG IEUNG      # 
+
+1141 ; 110B 1100 ;     SA      # ( ᅁ → ᄋᄀ ) HANGUL CHOSEONG IEUNG-KIYEOK → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG KIYEOK     # 
+11EC ; 110B 1100 ;     SA      # ( ᇬ → ᄋᄀ ) HANGUL JONGSEONG IEUNG-KIYEOK → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG KIYEOK    # →ᅁ→
+
+11ED ; 110B 1100 1100 ;        SA      # ( ᇭ → ᄋᄀᄀ ) HANGUL JONGSEONG IEUNG-SSANGKIYEOK → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK    # →ᆼᆨᆨ→
+
+1142 ; 110B 1103 ;     SA      # ( ᅂ → ᄋᄃ ) HANGUL CHOSEONG IEUNG-TIKEUT → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG TIKEUT     # 
+
+A976 ; 110B 1105 ;     SA      # ( ꥶ → ᄋᄅ ) HANGUL CHOSEONG IEUNG-RIEUL → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG RIEUL       # 
+
+1143 ; 110B 1106 ;     SA      # ( ᅃ → ᄋᄆ ) HANGUL CHOSEONG IEUNG-MIEUM → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG MIEUM       # 
+
+1144 ; 110B 1107 ;     SA      # ( ᅄ → ᄋᄇ ) HANGUL CHOSEONG IEUNG-PIEUP → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG PIEUP       # 
+
+1145 ; 110B 1109 ;     SA      # ( ᅅ → ᄋᄉ ) HANGUL CHOSEONG IEUNG-SIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG SIOS # 
+11F1 ; 110B 1109 ;     SA      # ( ᇱ → ᄋᄉ ) HANGUL JONGSEONG YESIEUNG-SIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG SIOS     # →ᅅ→
+3182 ; 110B 1109 ;     SA      # ( ㆂ → ᄋᄉ ) HANGUL LETTER YESIEUNG-SIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG SIOS        # →ᇱ→→ᅅ→
+
+1147 ; 110B 110B ;     SA      # ( ᅇ → ᄋᄋ ) HANGUL CHOSEONG SSANGIEUNG → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG IEUNG        # 
+3180 ; 110B 110B ;     SA      # ( ㆀ → ᄋᄋ ) HANGUL LETTER SSANGIEUNG → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG IEUNG  # →ᅇ→
+11EE ; 110B 110B ;     SA      # ( ᇮ → ᄋᄋ ) HANGUL JONGSEONG SSANGIEUNG → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG IEUNG       # →ᅇ→
+
+1148 ; 110B 110C ;     SA      # ( ᅈ → ᄋᄌ ) HANGUL CHOSEONG IEUNG-CIEUC → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG CIEUC       # 
+
+1149 ; 110B 110E ;     SA      # ( ᅉ → ᄋᄎ ) HANGUL CHOSEONG IEUNG-CHIEUCH → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG CHIEUCH   # 
+
+11EF ; 110B 110F ;     SA      # ( ᇯ → ᄋᄏ ) HANGUL JONGSEONG IEUNG-KHIEUKH → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG KHIEUKH  # →ᆼᆿ→
+
+114A ; 110B 1110 ;     SA      # ( ᅊ → ᄋᄐ ) HANGUL CHOSEONG IEUNG-THIEUTH → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG THIEUTH   # 
+
+114B ; 110B 1111 ;     SA      # ( ᅋ → ᄋᄑ ) HANGUL CHOSEONG IEUNG-PHIEUPH → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG PHIEUPH   # 
+
+A977 ; 110B 1112 ;     SA      # ( ꥷ → ᄋᄒ ) HANGUL CHOSEONG IEUNG-HIEUH → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG HIEUH       # 
+
+1146 ; 110B 1140 ;     SA      # ( ᅆ → ᄋᅀ ) HANGUL CHOSEONG IEUNG-PANSIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG PANSIOS   # 
+11F2 ; 110B 1140 ;     SA      # ( ᇲ → ᄋᅀ ) HANGUL JONGSEONG YESIEUNG-PANSIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG PANSIOS       # →ᅆ→
+3183 ; 110B 1140 ;     SA      # ( ㆃ → ᄋᅀ ) HANGUL LETTER YESIEUNG-PANSIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG PANSIOS  # →ᇲ→→ᅆ→
+
+3148 ; 110C ;  SA      # ( ㅈ → ᄌ ) HANGUL LETTER CIEUC → HANGUL CHOSEONG CIEUC # 
+11BD ; 110C ;  SA      # ( ᆽ → ᄌ ) HANGUL JONGSEONG CIEUC → HANGUL CHOSEONG CIEUC      # 
+
+D7F7 ; 110C 1107 ;     SA      # ( ퟷ → ᄌᄇ ) HANGUL JONGSEONG CIEUC-PIEUP → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG PIEUP      # →ᆽᆸ→
+
+D7F8 ; 110C 1107 1107 ;        SA      # ( ퟸ → ᄌᄇᄇ ) HANGUL JONGSEONG CIEUC-SSANGPIEUP → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP       # →ᆽᆸᆸ→
+
+114D ; 110C 110B ;     SA      # ( ᅍ → ᄌᄋ ) HANGUL CHOSEONG CIEUC-IEUNG → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG IEUNG       # 
+
+110D ; 110C 110C ;     SA      # ( ᄍ → ᄌᄌ ) HANGUL CHOSEONG SSANGCIEUC → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG CIEUC        # 
+3149 ; 110C 110C ;     SA      # ( ㅉ → ᄌᄌ ) HANGUL LETTER SSANGCIEUC → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG CIEUC  # →ᄍ→
+D7F9 ; 110C 110C ;     SA      # ( ퟹ → ᄌᄌ ) HANGUL JONGSEONG SSANGCIEUC → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG CIEUC       # →ᆽᆽ→
+
+A978 ; 110C 110C 1112 ;        SA      # ( ꥸ → ᄌᄌᄒ ) HANGUL CHOSEONG SSANGCIEUC-HIEUH → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG HIEUH        # 
+
+314A ; 110E ;  SA      # ( ㅊ → ᄎ ) HANGUL LETTER CHIEUCH → HANGUL CHOSEONG CHIEUCH     # 
+11BE ; 110E ;  SA      # ( ᆾ → ᄎ ) HANGUL JONGSEONG CHIEUCH → HANGUL CHOSEONG CHIEUCH  # 
+
+1152 ; 110E 110F ;     SA      # ( ᅒ → ᄎᄏ ) HANGUL CHOSEONG CHIEUCH-KHIEUKH → HANGUL CHOSEONG CHIEUCH, HANGUL CHOSEONG KHIEUKH       # 
+
+1153 ; 110E 1112 ;     SA      # ( ᅓ → ᄎᄒ ) HANGUL CHOSEONG CHIEUCH-HIEUH → HANGUL CHOSEONG CHIEUCH, HANGUL CHOSEONG HIEUH   # 
+
+314B ; 110F ;  SA      # ( ㅋ → ᄏ ) HANGUL LETTER KHIEUKH → HANGUL CHOSEONG KHIEUKH     # 
+11BF ; 110F ;  SA      # ( ᆿ → ᄏ ) HANGUL JONGSEONG KHIEUKH → HANGUL CHOSEONG KHIEUKH  # 
+
+314C ; 1110 ;  SA      # ( ㅌ → ᄐ ) HANGUL LETTER THIEUTH → HANGUL CHOSEONG THIEUTH     # 
+11C0 ; 1110 ;  SA      # ( ᇀ → ᄐ ) HANGUL JONGSEONG THIEUTH → HANGUL CHOSEONG THIEUTH  # 
+
+A979 ; 1110 1110 ;     SA      # ( ꥹ → ᄐᄐ ) HANGUL CHOSEONG SSANGTHIEUTH → HANGUL CHOSEONG THIEUTH, HANGUL CHOSEONG THIEUTH  # 
+
+314D ; 1111 ;  SA      # ( ㅍ → ᄑ ) HANGUL LETTER PHIEUPH → HANGUL CHOSEONG PHIEUPH     # 
+11C1 ; 1111 ;  SA      # ( ᇁ → ᄑ ) HANGUL JONGSEONG PHIEUPH → HANGUL CHOSEONG PHIEUPH  # 
+
+1156 ; 1111 1107 ;     SA      # ( ᅖ → ᄑᄇ ) HANGUL CHOSEONG PHIEUPH-PIEUP → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG PIEUP   # 
+11F3 ; 1111 1107 ;     SA      # ( ᇳ → ᄑᄇ ) HANGUL JONGSEONG PHIEUPH-PIEUP → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG PIEUP  # →ᅖ→
+
+D7FA ; 1111 1109 ;     SA      # ( ퟺ → ᄑᄉ ) HANGUL JONGSEONG PHIEUPH-SIOS → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG SIOS    # →ᇁᆺ→
+
+1157 ; 1111 110B ;     SA      # ( ᅗ → ᄑᄋ ) HANGUL CHOSEONG KAPYEOUNPHIEUPH → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG IEUNG # 
+3184 ; 1111 110B ;     SA      # ( ㆄ → ᄑᄋ ) HANGUL LETTER KAPYEOUNPHIEUPH → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG IEUNG   # →ᅗ→
+11F4 ; 1111 110B ;     SA      # ( ᇴ → ᄑᄋ ) HANGUL JONGSEONG KAPYEOUNPHIEUPH → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG IEUNG        # →ᅗ→
+
+D7FB ; 1111 1110 ;     SA      # ( ퟻ → ᄑᄐ ) HANGUL JONGSEONG PHIEUPH-THIEUTH → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG THIEUTH      # →ᇁᇀ→
+
+A97A ; 1111 1112 ;     SA      # ( ꥺ → ᄑᄒ ) HANGUL CHOSEONG PHIEUPH-HIEUH → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG HIEUH   # 
+
+314E ; 1112 ;  SA      # ( ㅎ → ᄒ ) HANGUL LETTER HIEUH → HANGUL CHOSEONG HIEUH # 
+11C2 ; 1112 ;  SA      # ( ᇂ → ᄒ ) HANGUL JONGSEONG HIEUH → HANGUL CHOSEONG HIEUH      # 
+
+11F5 ; 1112 1102 ;     SA      # ( ᇵ → ᄒᄂ ) HANGUL JONGSEONG HIEUH-NIEUN → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG NIEUN      # →ᇂᆫ→
+
+11F6 ; 1112 1105 ;     SA      # ( ᇶ → ᄒᄅ ) HANGUL JONGSEONG HIEUH-RIEUL → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG RIEUL      # →ᇂᆯ→
+
+11F7 ; 1112 1106 ;     SA      # ( ᇷ → ᄒᄆ ) HANGUL JONGSEONG HIEUH-MIEUM → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG MIEUM      # →ᇂᆷ→
+
+11F8 ; 1112 1107 ;     SA      # ( ᇸ → ᄒᄇ ) HANGUL JONGSEONG HIEUH-PIEUP → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG PIEUP      # →ᇂᆸ→
+
+A97B ; 1112 1109 ;     SA      # ( ꥻ → ᄒᄉ ) HANGUL CHOSEONG HIEUH-SIOS → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG SIOS # 
+
+1158 ; 1112 1112 ;     SA      # ( ᅘ → ᄒᄒ ) HANGUL CHOSEONG SSANGHIEUH → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG HIEUH        # 
+3185 ; 1112 1112 ;     SA      # ( ㆅ → ᄒᄒ ) HANGUL LETTER SSANGHIEUH → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG HIEUH  # →ᅘ→
+
+113D ; 113C 113C ;     SA      # ( ᄽ → ᄼᄼ ) HANGUL CHOSEONG CHITUEUMSSANGSIOS → HANGUL CHOSEONG CHITUEUMSIOS, HANGUL CHOSEONG CHITUEUMSIOS   # 
+
+113F ; 113E 113E ;     SA      # ( ᄿ → ᄾᄾ ) HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS → HANGUL CHOSEONG CEONGCHIEUMSIOS, HANGUL CHOSEONG CEONGCHIEUMSIOS  # 
+
+317F ; 1140 ;  SA      # ( ㅿ → ᅀ ) HANGUL LETTER PANSIOS → HANGUL CHOSEONG PANSIOS     # 
+11EB ; 1140 ;  SA      # ( ᇫ → ᅀ ) HANGUL JONGSEONG PANSIOS → HANGUL CHOSEONG PANSIOS  # 
+
+D7F3 ; 1140 1107 ;     SA      # ( ퟳ → ᅀᄇ ) HANGUL JONGSEONG PANSIOS-PIEUP → HANGUL CHOSEONG PANSIOS, HANGUL CHOSEONG PIEUP  # →ᇫᆸ→
+
+D7F4 ; 1140 1107 110B ;        SA      # ( ퟴ → ᅀᄇᄋ ) HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP → HANGUL CHOSEONG PANSIOS, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG        # →ᇫᆸᆼ→
+
+3181 ; 114C ;  SA      # ( ㆁ → ᅌ ) HANGUL LETTER YESIEUNG → HANGUL CHOSEONG YESIEUNG   # 
+11F0 ; 114C ;  SA      # ( ᇰ → ᅌ ) HANGUL JONGSEONG YESIEUNG → HANGUL CHOSEONG YESIEUNG        # 
+
+D7F5 ; 114C 1106 ;     SA      # ( ퟵ → ᅌᄆ ) HANGUL JONGSEONG YESIEUNG-MIEUM → HANGUL CHOSEONG YESIEUNG, HANGUL CHOSEONG MIEUM        # →ᇰᆷ→
+
+D7F6 ; 114C 1112 ;     SA      # ( ퟶ → ᅌᄒ ) HANGUL JONGSEONG YESIEUNG-HIEUH → HANGUL CHOSEONG YESIEUNG, HANGUL CHOSEONG HIEUH        # →ᇰᇂ→
+
+114F ; 114E 114E ;     SA      # ( ᅏ → ᅎᅎ ) HANGUL CHOSEONG CHITUEUMSSANGCIEUC → HANGUL CHOSEONG CHITUEUMCIEUC, HANGUL CHOSEONG CHITUEUMCIEUC        # 
+
+1151 ; 1150 1150 ;     SA      # ( ᅑ → ᅐᅐ ) HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC → HANGUL CHOSEONG CEONGCHIEUMCIEUC, HANGUL CHOSEONG CEONGCHIEUMCIEUC       # 
+
+3186 ; 1159 ;  SA      # ( ㆆ → ᅙ ) HANGUL LETTER YEORINHIEUH → HANGUL CHOSEONG YEORINHIEUH     # 
+11F9 ; 1159 ;  SA      # ( ᇹ → ᅙ ) HANGUL JONGSEONG YEORINHIEUH → HANGUL CHOSEONG YEORINHIEUH  # 
+
+A97C ; 1159 1159 ;     SA      # ( ꥼ → ᅙᅙ ) HANGUL CHOSEONG SSANGYEORINHIEUH → HANGUL CHOSEONG YEORINHIEUH, HANGUL CHOSEONG YEORINHIEUH      # 
+
+3164 ; 1160 ;  SA      # (  →  ) HANGUL FILLER → HANGUL JUNGSEONG FILLER   # 
+
+314F ; 1161 ;  SA      # ( ㅏ → ᅡ ) HANGUL LETTER A → HANGUL JUNGSEONG A        # 
+
+1176 ; 1161 1169 ;     SA      # ( ᅶ → ᅡᅩ ) HANGUL JUNGSEONG A-O → HANGUL JUNGSEONG A, HANGUL JUNGSEONG O    # 
+
+1177 ; 1161 116E ;     SA      # ( ᅷ → ᅡᅮ ) HANGUL JUNGSEONG A-U → HANGUL JUNGSEONG A, HANGUL JUNGSEONG U    # 
+
+11A3 ; 1161 1173 ;     SA      # ( ᆣ → ᅡᅳ ) HANGUL JUNGSEONG A-EU → HANGUL JUNGSEONG A, HANGUL JUNGSEONG EU  # 
+
+1162 ; 1161 1175 ;     SA      # ( ᅢ → ᅡᅵ ) HANGUL JUNGSEONG AE → HANGUL JUNGSEONG A, HANGUL JUNGSEONG I     # 
+3150 ; 1161 1175 ;     SA      # ( ㅐ → ᅡᅵ ) HANGUL LETTER AE → HANGUL JUNGSEONG A, HANGUL JUNGSEONG I        # →ᅢ→
+
+3151 ; 1163 ;  SA      # ( ㅑ → ᅣ ) HANGUL LETTER YA → HANGUL JUNGSEONG YA      # 
+
+1178 ; 1163 1169 ;     SA      # ( ᅸ → ᅣᅩ ) HANGUL JUNGSEONG YA-O → HANGUL JUNGSEONG YA, HANGUL JUNGSEONG O  # 
+
+1179 ; 1163 116D ;     SA      # ( ᅹ → ᅣᅭ ) HANGUL JUNGSEONG YA-YO → HANGUL JUNGSEONG YA, HANGUL JUNGSEONG YO        # 
+
+11A4 ; 1163 116E ;     SA      # ( ᆤ → ᅣᅮ ) HANGUL JUNGSEONG YA-U → HANGUL JUNGSEONG YA, HANGUL JUNGSEONG U  # 
+
+1164 ; 1163 1175 ;     SA      # ( ᅤ → ᅣᅵ ) HANGUL JUNGSEONG YAE → HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I   # 
+3152 ; 1163 1175 ;     SA      # ( ㅒ → ᅣᅵ ) HANGUL LETTER YAE → HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I      # →ᅤ→
+
+3153 ; 1165 ;  SA      # ( ㅓ → ᅥ ) HANGUL LETTER EO → HANGUL JUNGSEONG EO      # 
+
+117A ; 1165 1169 ;     SA      # ( ᅺ → ᅥᅩ ) HANGUL JUNGSEONG EO-O → HANGUL JUNGSEONG EO, HANGUL JUNGSEONG O  # 
+
+117B ; 1165 116E ;     SA      # ( ᅻ → ᅥᅮ ) HANGUL JUNGSEONG EO-U → HANGUL JUNGSEONG EO, HANGUL JUNGSEONG U  # 
+
+117C ; 1165 1173 ;     SA      # ( ᅼ → ᅥᅳ ) HANGUL JUNGSEONG EO-EU → HANGUL JUNGSEONG EO, HANGUL JUNGSEONG EU        # 
+
+1166 ; 1165 1175 ;     SA      # ( ᅦ → ᅥᅵ ) HANGUL JUNGSEONG E → HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I     # 
+3154 ; 1165 1175 ;     SA      # ( ㅔ → ᅥᅵ ) HANGUL LETTER E → HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I        # →ᅦ→
+
+3155 ; 1167 ;  SA      # ( ㅕ → ᅧ ) HANGUL LETTER YEO → HANGUL JUNGSEONG YEO    # 
+
+11A5 ; 1167 1163 ;     SA      # ( ᆥ → ᅧᅣ ) HANGUL JUNGSEONG YEO-YA → HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG YA      # 
+
+117D ; 1167 1169 ;     SA      # ( ᅽ → ᅧᅩ ) HANGUL JUNGSEONG YEO-O → HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG O        # 
+
+117E ; 1167 116E ;     SA      # ( ᅾ → ᅧᅮ ) HANGUL JUNGSEONG YEO-U → HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG U        # 
+
+1168 ; 1167 1175 ;     SA      # ( ᅨ → ᅧᅵ ) HANGUL JUNGSEONG YE → HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I   # 
+3156 ; 1167 1175 ;     SA      # ( ㅖ → ᅧᅵ ) HANGUL LETTER YE → HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I      # →ᅨ→
+
+3157 ; 1169 ;  SA      # ( ㅗ → ᅩ ) HANGUL LETTER O → HANGUL JUNGSEONG O        # 
+
+116A ; 1169 1161 ;     SA      # ( ᅪ → ᅩᅡ ) HANGUL JUNGSEONG WA → HANGUL JUNGSEONG O, HANGUL JUNGSEONG A     # 
+3158 ; 1169 1161 ;     SA      # ( ㅘ → ᅩᅡ ) HANGUL LETTER WA → HANGUL JUNGSEONG O, HANGUL JUNGSEONG A        # →ᅪ→
+
+116B ; 1169 1161 1175 ;        SA      # ( ᅫ → ᅩᅡᅵ ) HANGUL JUNGSEONG WAE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG A, HANGUL JUNGSEONG I     # 
+3159 ; 1169 1161 1175 ;        SA      # ( ㅙ → ᅩᅡᅵ ) HANGUL LETTER WAE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG A, HANGUL JUNGSEONG I        # →ᅫ→
+
+11A6 ; 1169 1163 ;     SA      # ( ᆦ → ᅩᅣ ) HANGUL JUNGSEONG O-YA → HANGUL JUNGSEONG O, HANGUL JUNGSEONG YA  # 
+
+11A7 ; 1169 1163 1175 ;        SA      # ( ᆧ → ᅩᅣᅵ ) HANGUL JUNGSEONG O-YAE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I  # 
+
+117F ; 1169 1165 ;     SA      # ( ᅿ → ᅩᅥ ) HANGUL JUNGSEONG O-EO → HANGUL JUNGSEONG O, HANGUL JUNGSEONG EO  # 
+
+1180 ; 1169 1165 1175 ;        SA      # ( ᆀ → ᅩᅥᅵ ) HANGUL JUNGSEONG O-E → HANGUL JUNGSEONG O, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I    # 
+
+D7B0 ; 1169 1167 ;     SA      # ( ힰ → ᅩᅧ ) HANGUL JUNGSEONG O-YEO → HANGUL JUNGSEONG O, HANGUL JUNGSEONG YEO        # 
+
+1181 ; 1169 1167 1175 ;        SA      # ( ᆁ → ᅩᅧᅵ ) HANGUL JUNGSEONG O-YE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I  # 
+
+1182 ; 1169 1169 ;     SA      # ( ᆂ → ᅩᅩ ) HANGUL JUNGSEONG O-O → HANGUL JUNGSEONG O, HANGUL JUNGSEONG O    # 
+
+D7B1 ; 1169 1169 1175 ;        SA      # ( ힱ → ᅩᅩᅵ ) HANGUL JUNGSEONG O-O-I → HANGUL JUNGSEONG O, HANGUL JUNGSEONG O, HANGUL JUNGSEONG I   # 
+
+1183 ; 1169 116E ;     SA      # ( ᆃ → ᅩᅮ ) HANGUL JUNGSEONG O-U → HANGUL JUNGSEONG O, HANGUL JUNGSEONG U    # 
+
+116C ; 1169 1175 ;     SA      # ( ᅬ → ᅩᅵ ) HANGUL JUNGSEONG OE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG I     # 
+315A ; 1169 1175 ;     SA      # ( ㅚ → ᅩᅵ ) HANGUL LETTER OE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG I        # →ᅬ→
+
+315B ; 116D ;  SA      # ( ㅛ → ᅭ ) HANGUL LETTER YO → HANGUL JUNGSEONG YO      # 
+
+D7B2 ; 116D 1161 ;     SA      # ( ힲ → ᅭᅡ ) HANGUL JUNGSEONG YO-A → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG A  # 
+
+D7B3 ; 116D 1161 1175 ;        SA      # ( ힳ → ᅭᅡᅵ ) HANGUL JUNGSEONG YO-AE → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG A, HANGUL JUNGSEONG I  # 
+
+1184 ; 116D 1163 ;     SA      # ( ᆄ → ᅭᅣ ) HANGUL JUNGSEONG YO-YA → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG YA        # 
+3187 ; 116D 1163 ;     SA      # ( ㆇ → ᅭᅣ ) HANGUL LETTER YO-YA → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG YA   # →ᆄ→
+1186 ; 116D 1163 ;     SA      # ( ᆆ → ᅭᅣ ) HANGUL JUNGSEONG YO-YEO → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG YA       # →ᆄ→
+
+1185 ; 116D 1163 1175 ;        SA      # ( ᆅ → ᅭᅣᅵ ) HANGUL JUNGSEONG YO-YAE → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I        # 
+3188 ; 116D 1163 1175 ;        SA      # ( ㆈ → ᅭᅣᅵ ) HANGUL LETTER YO-YAE → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I   # →ᆅ→
+
+D7B4 ; 116D 1165 ;     SA      # ( ힴ → ᅭᅥ ) HANGUL JUNGSEONG YO-EO → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG EO        # 
+
+1187 ; 116D 1169 ;     SA      # ( ᆇ → ᅭᅩ ) HANGUL JUNGSEONG YO-O → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG O  # 
+
+1188 ; 116D 1175 ;     SA      # ( ᆈ → ᅭᅵ ) HANGUL JUNGSEONG YO-I → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG I  # 
+3189 ; 116D 1175 ;     SA      # ( ㆉ → ᅭᅵ ) HANGUL LETTER YO-I → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG I     # →ᆈ→
+
+315C ; 116E ;  SA      # ( ㅜ → ᅮ ) HANGUL LETTER U → HANGUL JUNGSEONG U        # 
+
+1189 ; 116E 1161 ;     SA      # ( ᆉ → ᅮᅡ ) HANGUL JUNGSEONG U-A → HANGUL JUNGSEONG U, HANGUL JUNGSEONG A    # 
+
+118A ; 116E 1161 1175 ;        SA      # ( ᆊ → ᅮᅡᅵ ) HANGUL JUNGSEONG U-AE → HANGUL JUNGSEONG U, HANGUL JUNGSEONG A, HANGUL JUNGSEONG I    # 
+
+116F ; 116E 1165 ;     SA      # ( ᅯ → ᅮᅥ ) HANGUL JUNGSEONG WEO → HANGUL JUNGSEONG U, HANGUL JUNGSEONG EO   # 
+315D ; 116E 1165 ;     SA      # ( ㅝ → ᅮᅥ ) HANGUL LETTER WEO → HANGUL JUNGSEONG U, HANGUL JUNGSEONG EO      # →ᅯ→
+
+118B ; 116E 1165 1173 ;        SA      # ( ᆋ → ᅮᅥᅳ ) HANGUL JUNGSEONG U-EO-EU → HANGUL JUNGSEONG U, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG EU       # 
+
+1170 ; 116E 1165 1175 ;        SA      # ( ᅰ → ᅮᅥᅵ ) HANGUL JUNGSEONG WE → HANGUL JUNGSEONG U, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I     # 
+315E ; 116E 1165 1175 ;        SA      # ( ㅞ → ᅮᅥᅵ ) HANGUL LETTER WE → HANGUL JUNGSEONG U, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I        # →ᅰ→
+
+D7B5 ; 116E 1167 ;     SA      # ( ힵ → ᅮᅧ ) HANGUL JUNGSEONG U-YEO → HANGUL JUNGSEONG U, HANGUL JUNGSEONG YEO        # 
+
+118C ; 116E 1167 1175 ;        SA      # ( ᆌ → ᅮᅧᅵ ) HANGUL JUNGSEONG U-YE → HANGUL JUNGSEONG U, HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I  # 
+
+118D ; 116E 116E ;     SA      # ( ᆍ → ᅮᅮ ) HANGUL JUNGSEONG U-U → HANGUL JUNGSEONG U, HANGUL JUNGSEONG U    # 
+
+1171 ; 116E 1175 ;     SA      # ( ᅱ → ᅮᅵ ) HANGUL JUNGSEONG WI → HANGUL JUNGSEONG U, HANGUL JUNGSEONG I     # 
+315F ; 116E 1175 ;     SA      # ( ㅟ → ᅮᅵ ) HANGUL LETTER WI → HANGUL JUNGSEONG U, HANGUL JUNGSEONG I        # →ᅱ→
+
+D7B6 ; 116E 1175 1175 ;        SA      # ( ힶ → ᅮᅵᅵ ) HANGUL JUNGSEONG U-I-I → HANGUL JUNGSEONG U, HANGUL JUNGSEONG I, HANGUL JUNGSEONG I   # 
+
+3160 ; 1172 ;  SA      # ( ㅠ → ᅲ ) HANGUL LETTER YU → HANGUL JUNGSEONG YU      # 
+
+118E ; 1172 1161 ;     SA      # ( ᆎ → ᅲᅡ ) HANGUL JUNGSEONG YU-A → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG A  # 
+
+D7B7 ; 1172 1161 1175 ;        SA      # ( ힷ → ᅲᅡᅵ ) HANGUL JUNGSEONG YU-AE → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG A, HANGUL JUNGSEONG I  # 
+
+118F ; 1172 1165 ;     SA      # ( ᆏ → ᅲᅥ ) HANGUL JUNGSEONG YU-EO → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG EO        # 
+
+1190 ; 1172 1165 1175 ;        SA      # ( ᆐ → ᅲᅥᅵ ) HANGUL JUNGSEONG YU-E → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I  # 
+
+1191 ; 1172 1167 ;     SA      # ( ᆑ → ᅲᅧ ) HANGUL JUNGSEONG YU-YEO → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG YEO      # 
+318A ; 1172 1167 ;     SA      # ( ㆊ → ᅲᅧ ) HANGUL LETTER YU-YEO → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG YEO # →ᆑ→
+
+1192 ; 1172 1167 1175 ;        SA      # ( ᆒ → ᅲᅧᅵ ) HANGUL JUNGSEONG YU-YE → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I        # 
+318B ; 1172 1167 1175 ;        SA      # ( ㆋ → ᅲᅧᅵ ) HANGUL LETTER YU-YE → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I   # →ᆒ→
+
+D7B8 ; 1172 1169 ;     SA      # ( ힸ → ᅲᅩ ) HANGUL JUNGSEONG YU-O → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG O  # 
+
+1193 ; 1172 116E ;     SA      # ( ᆓ → ᅲᅮ ) HANGUL JUNGSEONG YU-U → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG U  # 
+
+1194 ; 1172 1175 ;     SA      # ( ᆔ → ᅲᅵ ) HANGUL JUNGSEONG YU-I → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG I  # 
+318C ; 1172 1175 ;     SA      # ( ㆌ → ᅲᅵ ) HANGUL LETTER YU-I → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG I     # →ᆔ→
+
+D7B9 ; 1173 1161 ;     SA      # ( ힹ → ᅳᅡ ) HANGUL JUNGSEONG EU-A → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG A  # 
+
+D7BA ; 1173 1165 ;     SA      # ( ힺ → ᅳᅥ ) HANGUL JUNGSEONG EU-EO → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG EO        # 
+
+D7BB ; 1173 1165 1175 ;        SA      # ( ힻ → ᅳᅥᅵ ) HANGUL JUNGSEONG EU-E → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I  # 
+
+D7BC ; 1173 1169 ;     SA      # ( ힼ → ᅳᅩ ) HANGUL JUNGSEONG EU-O → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG O  # 
+
+1195 ; 1173 116E ;     SA      # ( ᆕ → ᅳᅮ ) HANGUL JUNGSEONG EU-U → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG U  # 
+
+1174 ; 1173 1175 ;     SA      # ( ᅴ → ᅳᅵ ) HANGUL JUNGSEONG YI → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG I    # 
+3162 ; 1173 1175 ;     SA      # ( ㅢ → ᅳᅵ ) HANGUL LETTER YI → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG I       # →ᅴ→
+
+1197 ; 1173 1175 116E ;        SA      # ( ᆗ → ᅳᅵᅮ ) HANGUL JUNGSEONG YI-U → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG I, HANGUL JUNGSEONG U   # 
+
+3163 ; 1175 ;  SA      # ( ㅣ → ᅵ ) HANGUL LETTER I → HANGUL JUNGSEONG I        # 
+
+1198 ; 1175 1161 ;     SA      # ( ᆘ → ᅵᅡ ) HANGUL JUNGSEONG I-A → HANGUL JUNGSEONG I, HANGUL JUNGSEONG A    # 
+
+1199 ; 1175 1163 ;     SA      # ( ᆙ → ᅵᅣ ) HANGUL JUNGSEONG I-YA → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YA  # 
+
+D7BD ; 1175 1163 1169 ;        SA      # ( ힽ → ᅵᅣᅩ ) HANGUL JUNGSEONG I-YA-O → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YA, HANGUL JUNGSEONG O # 
+
+D7BE ; 1175 1163 1175 ;        SA      # ( ힾ → ᅵᅣᅵ ) HANGUL JUNGSEONG I-YAE → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I  # 
+
+D7BF ; 1175 1167 ;     SA      # ( ힿ → ᅵᅧ ) HANGUL JUNGSEONG I-YEO → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YEO        # 
+
+D7C0 ; 1175 1167 1175 ;        SA      # ( ퟀ → ᅵᅧᅵ ) HANGUL JUNGSEONG I-YE → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I  # 
+
+119A ; 1175 1169 ;     SA      # ( ᆚ → ᅵᅩ ) HANGUL JUNGSEONG I-O → HANGUL JUNGSEONG I, HANGUL JUNGSEONG O    # 
+
+D7C1 ; 1175 1169 1175 ;        SA      # ( ퟁ → ᅵᅩᅵ ) HANGUL JUNGSEONG I-O-I → HANGUL JUNGSEONG I, HANGUL JUNGSEONG O, HANGUL JUNGSEONG I   # 
+
+D7C2 ; 1175 116D ;     SA      # ( ퟂ → ᅵᅭ ) HANGUL JUNGSEONG I-YO → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YO  # 
+
+119B ; 1175 116E ;     SA      # ( ᆛ → ᅵᅮ ) HANGUL JUNGSEONG I-U → HANGUL JUNGSEONG I, HANGUL JUNGSEONG U    # 
+
+D7C3 ; 1175 1172 ;     SA      # ( ퟃ → ᅵᅲ ) HANGUL JUNGSEONG I-YU → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YU  # 
+
+119C ; 1175 1173 ;     SA      # ( ᆜ → ᅵᅳ ) HANGUL JUNGSEONG I-EU → HANGUL JUNGSEONG I, HANGUL JUNGSEONG EU  # 
+
+D7C4 ; 1175 1175 ;     SA      # ( ퟄ → ᅵᅵ ) HANGUL JUNGSEONG I-I → HANGUL JUNGSEONG I, HANGUL JUNGSEONG I    # 
+
+119D ; 1175 119E ;     SA      # ( ᆝ → ᅵᆞ ) HANGUL JUNGSEONG I-ARAEA → HANGUL JUNGSEONG I, HANGUL JUNGSEONG ARAEA    # 
+
+318D ; 119E ;  SA      # ( ㆍ → ᆞ ) HANGUL LETTER ARAEA → HANGUL JUNGSEONG ARAEA        # 
+
+D7C5 ; 119E 1161 ;     SA      # ( ퟅ → ᆞᅡ ) HANGUL JUNGSEONG ARAEA-A → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG A    # 
+
+119F ; 119E 1165 ;     SA      # ( ᆟ → ᆞᅥ ) HANGUL JUNGSEONG ARAEA-EO → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG EO  # 
+
+D7C6 ; 119E 1165 1175 ;        SA      # ( ퟆ → ᆞᅥᅵ ) HANGUL JUNGSEONG ARAEA-E → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I    # 
+
+11A0 ; 119E 116E ;     SA      # ( ᆠ → ᆞᅮ ) HANGUL JUNGSEONG ARAEA-U → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG U    # 
+
+11A1 ; 119E 1175 ;     SA      # ( ᆡ → ᆞᅵ ) HANGUL JUNGSEONG ARAEA-I → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG I    # 
+318E ; 119E 1175 ;     SA      # ( ㆎ → ᆞᅵ ) HANGUL LETTER ARAEAE → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG I        # →ᆡ→
+
+11A2 ; 119E 119E ;     SA      # ( ᆢ → ᆞᆞ ) HANGUL JUNGSEONG SSANGARAEA → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG ARAEA     # 
+
+29C4 ; 303C ;  SA      #* ( ⧄ → 〼 ) SQUARED RISING DIAGONAL SLASH → MASU MARK  # 
+
+A49E ; A04A ;  SA      #* ( ꒞ → ꁊ ) YI RADICAL PUT → YI SYLLABLE PUT   # 
+
+A4AC ; A050 ;  SA      #* ( ꒬ → ꁐ ) YI RADICAL PYT → YI SYLLABLE PYT   # 
+
+A49C ; A0C0 ;  SA      #* ( ꒜ → ꃀ ) YI RADICAL MOP → YI SYLLABLE MOP   # 
+
+A4A8 ; A132 ;  SA      #* ( ꒨ → ꄲ ) YI RADICAL TU → YI SYLLABLE TU     # 
+
+A4BF ; A259 ;  SA      #* ( ꒿ → ꉙ ) YI RADICAL HXOP → YI SYLLABLE HXOP # 
+
+A4BE ; A2B1 ;  SA      #* ( ꒾ → ꊱ ) YI RADICAL CIP → YI SYLLABLE CIP   # 
+
+A494 ; A2CD ;  SA      #* ( ꒔ → ꋍ ) YI RADICAL CYP → YI SYLLABLE CYP   # 
+
+A4C0 ; A3AB ;  SA      #* ( ꓀ → ꎫ ) YI RADICAL SHAT → YI SYLLABLE SHAT # 
+
+A4C2 ; A3B5 ;  SA      #* ( ꓂ → ꎵ ) YI RADICAL SHOP → YI SYLLABLE SHOP # 
+
+A4BA ; A3BF ;  SA      #* ( ꒺ → ꎿ ) YI RADICAL SHUR → YI SYLLABLE SHUR # 
+
+A4B0 ; A3C2 ;  SA      #* ( ꒰ → ꏂ ) YI RADICAL SHY → YI SYLLABLE SHY   # 
+
+A4A7 ; A458 ;  SA      #* ( ꒧ → ꑘ ) YI RADICAL NYOP → YI SYLLABLE NYOP # 
+
+22A5 ; A4D5 ;  SA      #* ( ⊥ → ꓕ ) UP TACK → LISU LETTER THA  # 
+27C2 ; A4D5 ;  SA      #* ( ⟂ → ꓕ ) PERPENDICULAR → LISU LETTER THA    # →⊥→
+
+2141 ; A4E8 ;  SA      #* ( ⅁ → ꓨ ) TURNED SANS-SERIF CAPITAL G → LISU LETTER HHA      # 
+
+2200 ; A4EF ;  SA      #* ( ∀ → ꓯ ) FOR ALL → LISU LETTER AE   # 
+
+2229 ; A4F5 ;  SA      #* ( ∩ → ꓵ ) INTERSECTION → LISU LETTER UE      # 
+22C2 ; A4F5 ;  SA      #* ( ⋂ → ꓵ ) N-ARY INTERSECTION → LISU LETTER UE        # →∩→
+
+2142 ; A4F6 ;  SA      #* ( ⅂ → ꓶ ) TURNED SANS-SERIF CAPITAL L → LISU LETTER UH       # 
+
+104A0 ;        10486 ; SA      # ( 𐒠 → 𐒆 ) OSMANYA DIGIT ZERO → OSMANYA LETTER DEEL  # 
+
+F967 ; 4E0D ;  SA      # ( 不 → 不 ) CJK COMPATIBILITY IDEOGRAPH-F967 → CJK UNIFIED IDEOGRAPH-4E0D       # 
+
+FA70 ; 4E26 ;  SA      # ( 並 → 並 ) CJK COMPATIBILITY IDEOGRAPH-FA70 → CJK UNIFIED IDEOGRAPH-4E26       # 
+
+239C ; 4E28 ;  SA      #* ( ⎜ → 丨 ) LEFT PARENTHESIS EXTENSION → CJK UNIFIED IDEOGRAPH-4E28    # →⎥→→⎮→
+239F ; 4E28 ;  SA      #* ( ⎟ → 丨 ) RIGHT PARENTHESIS EXTENSION → CJK UNIFIED IDEOGRAPH-4E28   # →⎥→→⎮→
+23A2 ; 4E28 ;  SA      #* ( ⎢ → 丨 ) LEFT SQUARE BRACKET EXTENSION → CJK UNIFIED IDEOGRAPH-4E28 # →⎥→→⎮→
+23A5 ; 4E28 ;  SA      #* ( ⎥ → 丨 ) RIGHT SQUARE BRACKET EXTENSION → CJK UNIFIED IDEOGRAPH-4E28        # →⎮→
+23AA ; 4E28 ;  SA      #* ( ⎪ → 丨 ) CURLY BRACKET EXTENSION → CJK UNIFIED IDEOGRAPH-4E28       # →⎥→→⎮→
+23AE ; 4E28 ;  SA      #* ( ⎮ → 丨 ) INTEGRAL EXTENSION → CJK UNIFIED IDEOGRAPH-4E28    # 
+31D1 ; 4E28 ;  SA      #* ( ㇑ → 丨 ) CJK STROKE S → CJK UNIFIED IDEOGRAPH-4E28  # 
+2F01 ; 4E28 ;  SA      #* ( ⼁ → 丨 ) KANGXI RADICAL LINE → CJK UNIFIED IDEOGRAPH-4E28   # 
+
+2EA6 ; 4E2C ;  SA      #* ( ⺦ → 丬 ) CJK RADICAL SIMPLIFIED HALF TREE TRUNK → CJK UNIFIED IDEOGRAPH-4E2C        # 
+
+F905 ; 4E32 ;  SA      # ( 串 → 串 ) CJK COMPATIBILITY IDEOGRAPH-F905 → CJK UNIFIED IDEOGRAPH-4E32       # 
+
+2F801 ;        4E38 ;  SA      # ( 丸 → 丸 ) CJK COMPATIBILITY IDEOGRAPH-2F801 → CJK UNIFIED IDEOGRAPH-4E38     # 
+
+F95E ; 4E39 ;  SA      # ( 丹 → 丹 ) CJK COMPATIBILITY IDEOGRAPH-F95E → CJK UNIFIED IDEOGRAPH-4E39       # 
+
+2F800 ;        4E3D ;  SA      # ( 丽 → 丽 ) CJK COMPATIBILITY IDEOGRAPH-2F800 → CJK UNIFIED IDEOGRAPH-4E3D     # 
+
+2F802 ;        4E41 ;  SA      # ( 乁 → 乁 ) CJK COMPATIBILITY IDEOGRAPH-2F802 → CJK UNIFIED IDEOGRAPH-4E41     # 
+
+31E0 ; 4E59 ;  SA      #* ( ㇠ → 乙 ) CJK STROKE HXWG → CJK UNIFIED IDEOGRAPH-4E59       # 
+2F04 ; 4E59 ;  SA      #* ( ⼄ → 乙 ) KANGXI RADICAL SECOND → CJK UNIFIED IDEOGRAPH-4E59 # 
+
+31DF ; 4E5A ;  SA      #* ( ㇟ → 乚 ) CJK STROKE SWG → CJK UNIFIED IDEOGRAPH-4E5A        # 
+2E83 ; 4E5A ;  SA      #* ( ⺃ → 乚 ) CJK RADICAL SECOND TWO → CJK UNIFIED IDEOGRAPH-4E5A        # 
+
+31D6 ; 4E5B ;  SA      #* ( ㇖ → 乛 ) CJK STROKE HG → CJK UNIFIED IDEOGRAPH-4E5B # 
+
+2EF2 ; 4E80 ;  SA      #* ( ⻲ → 亀 ) CJK RADICAL J-SIMPLIFIED TURTLE → CJK UNIFIED IDEOGRAPH-4E80       # 
+
+F91B ; 4E82 ;  SA      # ( 亂 → 亂 ) CJK COMPATIBILITY IDEOGRAPH-F91B → CJK UNIFIED IDEOGRAPH-4E82       # 
+
+31DA ; 4E85 ;  SA      #* ( ㇚ → 亅 ) CJK STROKE SG → CJK UNIFIED IDEOGRAPH-4E85 # 
+2F05 ; 4E85 ;  SA      #* ( ⼅ → 亅 ) KANGXI RADICAL HOOK → CJK UNIFIED IDEOGRAPH-4E85   # 
+
+F9BA ; 4E86 ;  SA      # ( 了 → 了 ) CJK COMPATIBILITY IDEOGRAPH-F9BA → CJK UNIFIED IDEOGRAPH-4E86       # 
+
+2F06 ; 4E8C ;  SA      #* ( ⼆ → 二 ) KANGXI RADICAL TWO → CJK UNIFIED IDEOGRAPH-4E8C    # 
+
+2F07 ; 4EA0 ;  SA      #* ( ⼇ → 亠 ) KANGXI RADICAL LID → CJK UNIFIED IDEOGRAPH-4EA0    # 
+
+F977 ; 4EAE ;  SA      # ( 亮 → 亮 ) CJK COMPATIBILITY IDEOGRAPH-F977 → CJK UNIFIED IDEOGRAPH-4EAE       # 
+
+2F08 ; 4EBA ;  SA      #* ( ⼈ → 人 ) KANGXI RADICAL MAN → CJK UNIFIED IDEOGRAPH-4EBA    # 
+
+2E85 ; 4EBB ;  SA      #* ( ⺅ → 亻 ) CJK RADICAL PERSON → CJK UNIFIED IDEOGRAPH-4EBB    # 
+
+F9FD ; 4EC0 ;  SA      # ( 什 → 什 ) CJK COMPATIBILITY IDEOGRAPH-F9FD → CJK UNIFIED IDEOGRAPH-4EC0       # 
+
+2F819 ;        4ECC ;  SA      # ( 仌 → 仌 ) CJK COMPATIBILITY IDEOGRAPH-2F819 → CJK UNIFIED IDEOGRAPH-4ECC     # 
+
+F9A8 ; 4EE4 ;  SA      # ( 令 → 令 ) CJK COMPATIBILITY IDEOGRAPH-F9A8 → CJK UNIFIED IDEOGRAPH-4EE4       # 
+
+2F804 ;        4F60 ;  SA      # ( 你 → 你 ) CJK COMPATIBILITY IDEOGRAPH-2F804 → CJK UNIFIED IDEOGRAPH-4F60     # 
+
+5002 ; 4F75 ;  SA      # ( 倂 → 併 ) CJK UNIFIED IDEOGRAPH-5002 → CJK UNIFIED IDEOGRAPH-4F75     # 
+2F807 ;        4F75 ;  SA      # ( 倂 → 併 ) CJK COMPATIBILITY IDEOGRAPH-2F807 → CJK UNIFIED IDEOGRAPH-4F75     # →倂→
+
+FA73 ; 4F80 ;  SA      # ( 侀 → 侀 ) CJK COMPATIBILITY IDEOGRAPH-FA73 → CJK UNIFIED IDEOGRAPH-4F80       # 
+
+F92D ; 4F86 ;  SA      # ( 來 → 來 ) CJK COMPATIBILITY IDEOGRAPH-F92D → CJK UNIFIED IDEOGRAPH-4F86       # 
+
+F9B5 ; 4F8B ;  SA      # ( 例 → 例 ) CJK COMPATIBILITY IDEOGRAPH-F9B5 → CJK UNIFIED IDEOGRAPH-4F8B       # 
+
+FA30 ; 4FAE ;  SA      # ( 侮 → 侮 ) CJK COMPATIBILITY IDEOGRAPH-FA30 → CJK UNIFIED IDEOGRAPH-4FAE       # 
+2F805 ;        4FAE ;  SA      # ( 侮 → 侮 ) CJK COMPATIBILITY IDEOGRAPH-2F805 → CJK UNIFIED IDEOGRAPH-4FAE     # 
+
+2F806 ;        4FBB ;  SA      # ( 侻 → 侻 ) CJK COMPATIBILITY IDEOGRAPH-2F806 → CJK UNIFIED IDEOGRAPH-4FBB     # 
+
+F965 ; 4FBF ;  SA      # ( 便 → 便 ) CJK COMPATIBILITY IDEOGRAPH-F965 → CJK UNIFIED IDEOGRAPH-4FBF       # 
+
+503C ; 5024 ;  SA      # ( 值 → 値 ) CJK UNIFIED IDEOGRAPH-503C → CJK UNIFIED IDEOGRAPH-5024     # 
+
+F9D4 ; 502B ;  SA      # ( 倫 → 倫 ) CJK COMPATIBILITY IDEOGRAPH-F9D4 → CJK UNIFIED IDEOGRAPH-502B       # 
+
+2F808 ;        507A ;  SA      # ( 偺 → 偺 ) CJK COMPATIBILITY IDEOGRAPH-2F808 → CJK UNIFIED IDEOGRAPH-507A     # 
+
+2F809 ;        5099 ;  SA      # ( 備 → 備 ) CJK COMPATIBILITY IDEOGRAPH-2F809 → CJK UNIFIED IDEOGRAPH-5099     # 
+
+2F80B ;        50CF ;  SA      # ( 像 → 像 ) CJK COMPATIBILITY IDEOGRAPH-2F80B → CJK UNIFIED IDEOGRAPH-50CF     # 
+
+F9BB ; 50DA ;  SA      # ( 僚 → 僚 ) CJK COMPATIBILITY IDEOGRAPH-F9BB → CJK UNIFIED IDEOGRAPH-50DA       # 
+
+FA31 ; 50E7 ;  SA      # ( 僧 → 僧 ) CJK COMPATIBILITY IDEOGRAPH-FA31 → CJK UNIFIED IDEOGRAPH-50E7       # 
+2F80A ;        50E7 ;  SA      # ( 僧 → 僧 ) CJK COMPATIBILITY IDEOGRAPH-2F80A → CJK UNIFIED IDEOGRAPH-50E7     # 
+
+2F09 ; 513F ;  SA      #* ( ⼉ → 儿 ) KANGXI RADICAL LEGS → CJK UNIFIED IDEOGRAPH-513F   # 
+
+FA0C ; 5140 ;  SA      # ( 兀 → 兀 ) CJK COMPATIBILITY IDEOGRAPH-FA0C → CJK UNIFIED IDEOGRAPH-5140       # 
+2E8E ; 5140 ;  SA      #* ( ⺎ → 兀 ) CJK RADICAL LAME ONE → CJK UNIFIED IDEOGRAPH-5140  # 
+
+FA74 ; 5145 ;  SA      # ( 充 → 充 ) CJK COMPATIBILITY IDEOGRAPH-FA74 → CJK UNIFIED IDEOGRAPH-5145       # 
+
+FA32 ; 514D ;  SA      # ( 免 → 免 ) CJK COMPATIBILITY IDEOGRAPH-FA32 → CJK UNIFIED IDEOGRAPH-514D       # 
+2F80E ;        514D ;  SA      # ( 免 → 免 ) CJK COMPATIBILITY IDEOGRAPH-2F80E → CJK UNIFIED IDEOGRAPH-514D     # 
+
+2F80F ;        5154 ;  SA      # ( 兔 → 兔 ) CJK COMPATIBILITY IDEOGRAPH-2F80F → CJK UNIFIED IDEOGRAPH-5154     # 
+
+2F810 ;        5164 ;  SA      # ( 兤 → 兤 ) CJK COMPATIBILITY IDEOGRAPH-2F810 → CJK UNIFIED IDEOGRAPH-5164     # 
+
+2F0A ; 5165 ;  SA      #* ( ⼊ → 入 ) KANGXI RADICAL ENTER → CJK UNIFIED IDEOGRAPH-5165  # 
+
+2F814 ;        5167 ;  SA      # ( 內 → 內 ) CJK COMPATIBILITY IDEOGRAPH-2F814 → CJK UNIFIED IDEOGRAPH-5167     # 
+
+FA72 ; 5168 ;  SA      # ( 全 → 全 ) CJK COMPATIBILITY IDEOGRAPH-FA72 → CJK UNIFIED IDEOGRAPH-5168       # 
+
+F978 ; 5169 ;  SA      # ( 兩 → 兩 ) CJK COMPATIBILITY IDEOGRAPH-F978 → CJK UNIFIED IDEOGRAPH-5169       # 
+
+2F0B ; 516B ;  SA      #* ( ⼋ → 八 ) KANGXI RADICAL EIGHT → CJK UNIFIED IDEOGRAPH-516B  # 
+
+F9D1 ; 516D ;  SA      # ( 六 → 六 ) CJK COMPATIBILITY IDEOGRAPH-F9D1 → CJK UNIFIED IDEOGRAPH-516D       # 
+
+2F811 ;        5177 ;  SA      # ( 具 → 具 ) CJK COMPATIBILITY IDEOGRAPH-2F811 → CJK UNIFIED IDEOGRAPH-5177     # 
+
+FA75 ; 5180 ;  SA      # ( 冀 → 冀 ) CJK COMPATIBILITY IDEOGRAPH-FA75 → CJK UNIFIED IDEOGRAPH-5180       # 
+
+2F0C ; 5182 ;  SA      #* ( ⼌ → 冂 ) KANGXI RADICAL DOWN BOX → CJK UNIFIED IDEOGRAPH-5182       # 
+
+2F815 ;        518D ;  SA      # ( 再 → 再 ) CJK COMPATIBILITY IDEOGRAPH-2F815 → CJK UNIFIED IDEOGRAPH-518D     # 
+
+2F8D2 ;        5192 ;  SA      # ( 冒 → 冒 ) CJK COMPATIBILITY IDEOGRAPH-2F8D2 → CJK UNIFIED IDEOGRAPH-5192     # 
+
+2F8D3 ;        5195 ;  SA      # ( 冕 → 冕 ) CJK COMPATIBILITY IDEOGRAPH-2F8D3 → CJK UNIFIED IDEOGRAPH-5195     # 
+
+2F0D ; 5196 ;  SA      #* ( ⼍ → 冖 ) KANGXI RADICAL COVER → CJK UNIFIED IDEOGRAPH-5196  # 
+
+2F817 ;        5197 ;  SA      # ( 冗 → 冗 ) CJK COMPATIBILITY IDEOGRAPH-2F817 → CJK UNIFIED IDEOGRAPH-5197     # 
+
+2F818 ;        51A4 ;  SA      # ( 冤 → 冤 ) CJK COMPATIBILITY IDEOGRAPH-2F818 → CJK UNIFIED IDEOGRAPH-51A4     # 
+
+2F0E ; 51AB ;  SA      #* ( ⼎ → 冫 ) KANGXI RADICAL ICE → CJK UNIFIED IDEOGRAPH-51AB    # 
+
+2F81A ;        51AC ;  SA      # ( 冬 → 冬 ) CJK COMPATIBILITY IDEOGRAPH-2F81A → CJK UNIFIED IDEOGRAPH-51AC     # 
+
+FA71 ; 51B5 ;  SA      # ( 况 → 况 ) CJK COMPATIBILITY IDEOGRAPH-FA71 → CJK UNIFIED IDEOGRAPH-51B5       # 
+2F81B ;        51B5 ;  SA      # ( 况 → 况 ) CJK COMPATIBILITY IDEOGRAPH-2F81B → CJK UNIFIED IDEOGRAPH-51B5     # 
+
+F92E ; 51B7 ;  SA      # ( 冷 → 冷 ) CJK COMPATIBILITY IDEOGRAPH-F92E → CJK UNIFIED IDEOGRAPH-51B7       # 
+
+F979 ; 51C9 ;  SA      # ( 凉 → 凉 ) CJK COMPATIBILITY IDEOGRAPH-F979 → CJK UNIFIED IDEOGRAPH-51C9       # 
+
+F955 ; 51CC ;  SA      # ( 凌 → 凌 ) CJK COMPATIBILITY IDEOGRAPH-F955 → CJK UNIFIED IDEOGRAPH-51CC       # 
+
+F954 ; 51DC ;  SA      # ( 凜 → 凜 ) CJK COMPATIBILITY IDEOGRAPH-F954 → CJK UNIFIED IDEOGRAPH-51DC       # 
+
+FA15 ; 51DE ;  SA      # ( 凞 → 凞 ) CJK COMPATIBILITY IDEOGRAPH-FA15 → CJK UNIFIED IDEOGRAPH-51DE       # 
+
+2F0F ; 51E0 ;  SA      #* ( ⼏ → 几 ) KANGXI RADICAL TABLE → CJK UNIFIED IDEOGRAPH-51E0  # 
+
+2F81D ;        51F5 ;  SA      # ( 凵 → 凵 ) CJK COMPATIBILITY IDEOGRAPH-2F81D → CJK UNIFIED IDEOGRAPH-51F5     # 
+2F10 ; 51F5 ;  SA      #* ( ⼐ → 凵 ) KANGXI RADICAL OPEN BOX → CJK UNIFIED IDEOGRAPH-51F5       # 
+
+2F11 ; 5200 ;  SA      #* ( ⼑ → 刀 ) KANGXI RADICAL KNIFE → CJK UNIFIED IDEOGRAPH-5200  # 
+
+2E89 ; 5202 ;  SA      #* ( ⺉ → 刂 ) CJK RADICAL KNIFE TWO → CJK UNIFIED IDEOGRAPH-5202 # 
+
+2F81E ;        5203 ;  SA      # ( 刃 → 刃 ) CJK COMPATIBILITY IDEOGRAPH-2F81E → CJK UNIFIED IDEOGRAPH-5203     # 
+
+FA00 ; 5207 ;  SA      # ( 切 → 切 ) CJK COMPATIBILITY IDEOGRAPH-FA00 → CJK UNIFIED IDEOGRAPH-5207       # 
+2F850 ;        5207 ;  SA      # ( 切 → 切 ) CJK COMPATIBILITY IDEOGRAPH-2F850 → CJK UNIFIED IDEOGRAPH-5207     # 
+
+F99C ; 5217 ;  SA      # ( 列 → 列 ) CJK COMPATIBILITY IDEOGRAPH-F99C → CJK UNIFIED IDEOGRAPH-5217       # 
+
+F9DD ; 5229 ;  SA      # ( 利 → 利 ) CJK COMPATIBILITY IDEOGRAPH-F9DD → CJK UNIFIED IDEOGRAPH-5229       # 
+
+F9FF ; 523A ;  SA      # ( 刺 → 刺 ) CJK COMPATIBILITY IDEOGRAPH-F9FF → CJK UNIFIED IDEOGRAPH-523A       # 
+
+2F820 ;        523B ;  SA      # ( 刻 → 刻 ) CJK COMPATIBILITY IDEOGRAPH-2F820 → CJK UNIFIED IDEOGRAPH-523B     # 
+
+2F821 ;        5246 ;  SA      # ( 剆 → 剆 ) CJK COMPATIBILITY IDEOGRAPH-2F821 → CJK UNIFIED IDEOGRAPH-5246     # 
+
+2F822 ;        5272 ;  SA      # ( 割 → 割 ) CJK COMPATIBILITY IDEOGRAPH-2F822 → CJK UNIFIED IDEOGRAPH-5272     # 
+
+2F823 ;        5277 ;  SA      # ( 剷 → 剷 ) CJK COMPATIBILITY IDEOGRAPH-2F823 → CJK UNIFIED IDEOGRAPH-5277     # 
+
+F9C7 ; 5289 ;  SA      # ( 劉 → 劉 ) CJK COMPATIBILITY IDEOGRAPH-F9C7 → CJK UNIFIED IDEOGRAPH-5289       # 
+
+F98A ; 529B ;  SA      # ( 力 → 力 ) CJK COMPATIBILITY IDEOGRAPH-F98A → CJK UNIFIED IDEOGRAPH-529B       # 
+2F12 ; 529B ;  SA      #* ( ⼒ → 力 ) KANGXI RADICAL POWER → CJK UNIFIED IDEOGRAPH-529B  # 
+
+F99D ; 52A3 ;  SA      # ( 劣 → 劣 ) CJK COMPATIBILITY IDEOGRAPH-F99D → CJK UNIFIED IDEOGRAPH-52A3       # 
+
+2F992 ;        52B3 ;  SA      # ( 劳 → 劳 ) CJK COMPATIBILITY IDEOGRAPH-2F992 → CJK UNIFIED IDEOGRAPH-52B3     # 
+
+FA76 ; 52C7 ;  SA      # ( 勇 → 勇 ) CJK COMPATIBILITY IDEOGRAPH-FA76 → CJK UNIFIED IDEOGRAPH-52C7       # 
+2F825 ;        52C7 ;  SA      # ( 勇 → 勇 ) CJK COMPATIBILITY IDEOGRAPH-2F825 → CJK UNIFIED IDEOGRAPH-52C7     # 
+
+FA33 ; 52C9 ;  SA      # ( 勉 → 勉 ) CJK COMPATIBILITY IDEOGRAPH-FA33 → CJK UNIFIED IDEOGRAPH-52C9       # 
+2F826 ;        52C9 ;  SA      # ( 勉 → 勉 ) CJK COMPATIBILITY IDEOGRAPH-2F826 → CJK UNIFIED IDEOGRAPH-52C9     # 
+
+F952 ; 52D2 ;  SA      # ( 勒 → 勒 ) CJK COMPATIBILITY IDEOGRAPH-F952 → CJK UNIFIED IDEOGRAPH-52D2       # 
+
+F92F ; 52DE ;  SA      # ( 勞 → 勞 ) CJK COMPATIBILITY IDEOGRAPH-F92F → CJK UNIFIED IDEOGRAPH-52DE       # 
+
+FA34 ; 52E4 ;  SA      # ( 勤 → 勤 ) CJK COMPATIBILITY IDEOGRAPH-FA34 → CJK UNIFIED IDEOGRAPH-52E4       # 
+2F827 ;        52E4 ;  SA      # ( 勤 → 勤 ) CJK COMPATIBILITY IDEOGRAPH-2F827 → CJK UNIFIED IDEOGRAPH-52E4     # 
+
+F97F ; 52F5 ;  SA      # ( 勵 → 勵 ) CJK COMPATIBILITY IDEOGRAPH-F97F → CJK UNIFIED IDEOGRAPH-52F5       # 
+
+2F13 ; 52F9 ;  SA      #* ( ⼓ → 勹 ) KANGXI RADICAL WRAP → CJK UNIFIED IDEOGRAPH-52F9   # 
+
+FA77 ; 52FA ;  SA      # ( 勺 → 勺 ) CJK COMPATIBILITY IDEOGRAPH-FA77 → CJK UNIFIED IDEOGRAPH-52FA       # 
+2F828 ;        52FA ;  SA      # ( 勺 → 勺 ) CJK COMPATIBILITY IDEOGRAPH-2F828 → CJK UNIFIED IDEOGRAPH-52FA     # 
+
+2F829 ;        5305 ;  SA      # ( 包 → 包 ) CJK COMPATIBILITY IDEOGRAPH-2F829 → CJK UNIFIED IDEOGRAPH-5305     # 
+
+2F82A ;        5306 ;  SA      # ( 匆 → 匆 ) CJK COMPATIBILITY IDEOGRAPH-2F82A → CJK UNIFIED IDEOGRAPH-5306     # 
+
+2F14 ; 5315 ;  SA      #* ( ⼔ → 匕 ) KANGXI RADICAL SPOON → CJK UNIFIED IDEOGRAPH-5315  # 
+
+F963 ; 5317 ;  SA      # ( 北 → 北 ) CJK COMPATIBILITY IDEOGRAPH-F963 → CJK UNIFIED IDEOGRAPH-5317       # 
+2F82B ;        5317 ;  SA      # ( 北 → 北 ) CJK COMPATIBILITY IDEOGRAPH-2F82B → CJK UNIFIED IDEOGRAPH-5317     # 
+
+2F15 ; 531A ;  SA      #* ( ⼕ → 匚 ) KANGXI RADICAL RIGHT OPEN BOX → CJK UNIFIED IDEOGRAPH-531A # 
+
+2F16 ; 5338 ;  SA      #* ( ⼖ → 匸 ) KANGXI RADICAL HIDING ENCLOSURE → CJK UNIFIED IDEOGRAPH-5338       # 
+
+F9EB ; 533F ;  SA      # ( 匿 → 匿 ) CJK COMPATIBILITY IDEOGRAPH-F9EB → CJK UNIFIED IDEOGRAPH-533F       # 
+
+2F17 ; 5341 ;  SA      #* ( ⼗ → 十 ) KANGXI RADICAL TEN → CJK UNIFIED IDEOGRAPH-5341    # 
+3038 ; 5341 ;  SA      # ( 〸 → 十 ) HANGZHOU NUMERAL TEN → CJK UNIFIED IDEOGRAPH-5341   # 
+
+3039 ; 5344 ;  SA      # ( 〹 → 卄 ) HANGZHOU NUMERAL TWENTY → CJK UNIFIED IDEOGRAPH-5344        # 
+
+303A ; 5345 ;  SA      # ( 〺 → 卅 ) HANGZHOU NUMERAL THIRTY → CJK UNIFIED IDEOGRAPH-5345        # 
+
+2F82C ;        5349 ;  SA      # ( 卉 → 卉 ) CJK COMPATIBILITY IDEOGRAPH-2F82C → CJK UNIFIED IDEOGRAPH-5349     # 
+
+FA35 ; 5351 ;  SA      # ( 卑 → 卑 ) CJK COMPATIBILITY IDEOGRAPH-FA35 → CJK UNIFIED IDEOGRAPH-5351       # 
+2F82D ;        5351 ;  SA      # ( 卑 → 卑 ) CJK COMPATIBILITY IDEOGRAPH-2F82D → CJK UNIFIED IDEOGRAPH-5351     # 
+
+2F82E ;        535A ;  SA      # ( 博 → 博 ) CJK COMPATIBILITY IDEOGRAPH-2F82E → CJK UNIFIED IDEOGRAPH-535A     # 
+
+2F18 ; 535C ;  SA      #* ( ⼘ → 卜 ) KANGXI RADICAL DIVINATION → CJK UNIFIED IDEOGRAPH-535C     # 
+
+2F19 ; 5369 ;  SA      #* ( ⼙ → 卩 ) KANGXI RADICAL SEAL → CJK UNIFIED IDEOGRAPH-5369   # 
+
+2F82F ;        5373 ;  SA      # ( 即 → 即 ) CJK COMPATIBILITY IDEOGRAPH-2F82F → CJK UNIFIED IDEOGRAPH-5373     # 
+
+F91C ; 5375 ;  SA      # ( 卵 → 卵 ) CJK COMPATIBILITY IDEOGRAPH-F91C → CJK UNIFIED IDEOGRAPH-5375       # 
+
+2F830 ;        537D ;  SA      # ( 卽 → 卽 ) CJK COMPATIBILITY IDEOGRAPH-2F830 → CJK UNIFIED IDEOGRAPH-537D     # 
+
+2F831 ;        537F ;  SA      # ( 卿 → 卿 ) CJK COMPATIBILITY IDEOGRAPH-2F831 → CJK UNIFIED IDEOGRAPH-537F     # 
+2F832 ;        537F ;  SA      # ( 卿 → 卿 ) CJK COMPATIBILITY IDEOGRAPH-2F832 → CJK UNIFIED IDEOGRAPH-537F     # 
+2F833 ;        537F ;  SA      # ( 卿 → 卿 ) CJK COMPATIBILITY IDEOGRAPH-2F833 → CJK UNIFIED IDEOGRAPH-537F     # 
+
+2F1A ; 5382 ;  SA      #* ( ⼚ → 厂 ) KANGXI RADICAL CLIFF → CJK UNIFIED IDEOGRAPH-5382  # 
+
+2F1B ; 53B6 ;  SA      #* ( ⼛ → 厶 ) KANGXI RADICAL PRIVATE → CJK UNIFIED IDEOGRAPH-53B6        # 
+
+F96B ; 53C3 ;  SA      # ( 參 → 參 ) CJK COMPATIBILITY IDEOGRAPH-F96B → CJK UNIFIED IDEOGRAPH-53C3       # 
+
+2F1C ; 53C8 ;  SA      #* ( ⼜ → 又 ) KANGXI RADICAL AGAIN → CJK UNIFIED IDEOGRAPH-53C8  # 
+
+2F836 ;        53CA ;  SA      # ( 及 → 及 ) CJK COMPATIBILITY IDEOGRAPH-2F836 → CJK UNIFIED IDEOGRAPH-53CA     # 
+
+2F837 ;        53DF ;  SA      # ( 叟 → 叟 ) CJK COMPATIBILITY IDEOGRAPH-2F837 → CJK UNIFIED IDEOGRAPH-53DF     # 
+
+2F1D ; 53E3 ;  SA      #* ( ⼝ → 口 ) KANGXI RADICAL MOUTH → CJK UNIFIED IDEOGRAPH-53E3  # 
+
+F906 ; 53E5 ;  SA      # ( 句 → 句 ) CJK COMPATIBILITY IDEOGRAPH-F906 → CJK UNIFIED IDEOGRAPH-53E5       # 
+
+2F839 ;        53EB ;  SA      # ( 叫 → 叫 ) CJK COMPATIBILITY IDEOGRAPH-2F839 → CJK UNIFIED IDEOGRAPH-53EB     # 
+
+2F83A ;        53F1 ;  SA      # ( 叱 → 叱 ) CJK COMPATIBILITY IDEOGRAPH-2F83A → CJK UNIFIED IDEOGRAPH-53F1     # 
+
+2F83B ;        5406 ;  SA      # ( 吆 → 吆 ) CJK COMPATIBILITY IDEOGRAPH-2F83B → CJK UNIFIED IDEOGRAPH-5406     # 
+
+F9DE ; 540F ;  SA      # ( 吏 → 吏 ) CJK COMPATIBILITY IDEOGRAPH-F9DE → CJK UNIFIED IDEOGRAPH-540F       # 
+
+F9ED ; 541D ;  SA      # ( 吝 → 吝 ) CJK COMPATIBILITY IDEOGRAPH-F9ED → CJK UNIFIED IDEOGRAPH-541D       # 
+
+2F83D ;        5438 ;  SA      # ( 吸 → 吸 ) CJK COMPATIBILITY IDEOGRAPH-2F83D → CJK UNIFIED IDEOGRAPH-5438     # 
+
+F980 ; 5442 ;  SA      # ( 呂 → 呂 ) CJK COMPATIBILITY IDEOGRAPH-F980 → CJK UNIFIED IDEOGRAPH-5442       # 
+
+2F83E ;        5448 ;  SA      # ( 呈 → 呈 ) CJK COMPATIBILITY IDEOGRAPH-2F83E → CJK UNIFIED IDEOGRAPH-5448     # 
+
+2F83F ;        5468 ;  SA      # ( 周 → 周 ) CJK COMPATIBILITY IDEOGRAPH-2F83F → CJK UNIFIED IDEOGRAPH-5468     # 
+
+2F83C ;        549E ;  SA      # ( 咞 → 咞 ) CJK COMPATIBILITY IDEOGRAPH-2F83C → CJK UNIFIED IDEOGRAPH-549E     # 
+
+2F840 ;        54A2 ;  SA      # ( 咢 → 咢 ) CJK COMPATIBILITY IDEOGRAPH-2F840 → CJK UNIFIED IDEOGRAPH-54A2     # 
+
+F99E ; 54BD ;  SA      # ( 咽 → 咽 ) CJK COMPATIBILITY IDEOGRAPH-F99E → CJK UNIFIED IDEOGRAPH-54BD       # 
+
+2F841 ;        54F6 ;  SA      # ( 哶 → 哶 ) CJK COMPATIBILITY IDEOGRAPH-2F841 → CJK UNIFIED IDEOGRAPH-54F6     # 
+
+2F842 ;        5510 ;  SA      # ( 唐 → 唐 ) CJK COMPATIBILITY IDEOGRAPH-2F842 → CJK UNIFIED IDEOGRAPH-5510     # 
+
+2F843 ;        5553 ;  SA      # ( 啓 → 啓 ) CJK COMPATIBILITY IDEOGRAPH-2F843 → CJK UNIFIED IDEOGRAPH-5553     # 
+555F ; 5553 ;  SA      # ( 啟 → 啓 ) CJK UNIFIED IDEOGRAPH-555F → CJK UNIFIED IDEOGRAPH-5553     # 
+
+FA79 ; 5555 ;  SA      # ( 啕 → 啕 ) CJK COMPATIBILITY IDEOGRAPH-FA79 → CJK UNIFIED IDEOGRAPH-5555       # 
+
+2F844 ;        5563 ;  SA      # ( 啣 → 啣 ) CJK COMPATIBILITY IDEOGRAPH-2F844 → CJK UNIFIED IDEOGRAPH-5563     # 
+
+2F845 ;        5584 ;  SA      # ( 善 → 善 ) CJK COMPATIBILITY IDEOGRAPH-2F845 → CJK UNIFIED IDEOGRAPH-5584     # 
+2F846 ;        5584 ;  SA      # ( 善 → 善 ) CJK COMPATIBILITY IDEOGRAPH-2F846 → CJK UNIFIED IDEOGRAPH-5584     # 
+
+F90B ; 5587 ;  SA      # ( 喇 → 喇 ) CJK COMPATIBILITY IDEOGRAPH-F90B → CJK UNIFIED IDEOGRAPH-5587       # 
+
+FA7A ; 5599 ;  SA      # ( 喙 → 喙 ) CJK COMPATIBILITY IDEOGRAPH-FA7A → CJK UNIFIED IDEOGRAPH-5599       # 
+2F847 ;        5599 ;  SA      # ( 喙 → 喙 ) CJK COMPATIBILITY IDEOGRAPH-2F847 → CJK UNIFIED IDEOGRAPH-5599     # 
+
+FA36 ; 559D ;  SA      # ( 喝 → 喝 ) CJK COMPATIBILITY IDEOGRAPH-FA36 → CJK UNIFIED IDEOGRAPH-559D       # 
+FA78 ; 559D ;  SA      # ( 喝 → 喝 ) CJK COMPATIBILITY IDEOGRAPH-FA78 → CJK UNIFIED IDEOGRAPH-559D       # 
+
+2F848 ;        55AB ;  SA      # ( 喫 → 喫 ) CJK COMPATIBILITY IDEOGRAPH-2F848 → CJK UNIFIED IDEOGRAPH-55AB     # 
+
+2F849 ;        55B3 ;  SA      # ( 喳 → 喳 ) CJK COMPATIBILITY IDEOGRAPH-2F849 → CJK UNIFIED IDEOGRAPH-55B3     # 
+
+FA0D ; 55C0 ;  SA      # ( 嗀 → 嗀 ) CJK COMPATIBILITY IDEOGRAPH-FA0D → CJK UNIFIED IDEOGRAPH-55C0       # 
+
+2F84A ;        55C2 ;  SA      # ( 嗂 → 嗂 ) CJK COMPATIBILITY IDEOGRAPH-2F84A → CJK UNIFIED IDEOGRAPH-55C2     # 
+
+FA7B ; 55E2 ;  SA      # ( 嗢 → 嗢 ) CJK COMPATIBILITY IDEOGRAPH-FA7B → CJK UNIFIED IDEOGRAPH-55E2       # 
+
+FA37 ; 5606 ;  SA      # ( 嘆 → 嘆 ) CJK COMPATIBILITY IDEOGRAPH-FA37 → CJK UNIFIED IDEOGRAPH-5606       # 
+2F84C ;        5606 ;  SA      # ( 嘆 → 嘆 ) CJK COMPATIBILITY IDEOGRAPH-2F84C → CJK UNIFIED IDEOGRAPH-5606     # 
+
+2F84E ;        5651 ;  SA      # ( 噑 → 噑 ) CJK COMPATIBILITY IDEOGRAPH-2F84E → CJK UNIFIED IDEOGRAPH-5651     # 
+
+FA38 ; 5668 ;  SA      # ( 器 → 器 ) CJK COMPATIBILITY IDEOGRAPH-FA38 → CJK UNIFIED IDEOGRAPH-5668       # 
+
+2F84F ;        5674 ;  SA      # ( 噴 → 噴 ) CJK COMPATIBILITY IDEOGRAPH-2F84F → CJK UNIFIED IDEOGRAPH-5674     # 
+
+2F1E ; 56D7 ;  SA      #* ( ⼞ → 囗 ) KANGXI RADICAL ENCLOSURE → CJK UNIFIED IDEOGRAPH-56D7      # 
+
+F9A9 ; 56F9 ;  SA      # ( 囹 → 囹 ) CJK COMPATIBILITY IDEOGRAPH-F9A9 → CJK UNIFIED IDEOGRAPH-56F9       # 
+
+2F84B ;        5716 ;  SA      # ( 圖 → 圖 ) CJK COMPATIBILITY IDEOGRAPH-2F84B → CJK UNIFIED IDEOGRAPH-5716     # 
+
+2F84D ;        5717 ;  SA      # ( 圗 → 圗 ) CJK COMPATIBILITY IDEOGRAPH-2F84D → CJK UNIFIED IDEOGRAPH-5717     # 
+
+2F1F ; 571F ;  SA      #* ( ⼟ → 土 ) KANGXI RADICAL EARTH → CJK UNIFIED IDEOGRAPH-571F  # 
+
+2F855 ;        578B ;  SA      # ( 型 → 型 ) CJK COMPATIBILITY IDEOGRAPH-2F855 → CJK UNIFIED IDEOGRAPH-578B     # 
+
+2F852 ;        57CE ;  SA      # ( 城 → 城 ) CJK COMPATIBILITY IDEOGRAPH-2F852 → CJK UNIFIED IDEOGRAPH-57CE     # 
+
+2F853 ;        57F4 ;  SA      # ( 埴 → 埴 ) CJK COMPATIBILITY IDEOGRAPH-2F853 → CJK UNIFIED IDEOGRAPH-57F4     # 
+
+2F854 ;        580D ;  SA      # ( 堍 → 堍 ) CJK COMPATIBILITY IDEOGRAPH-2F854 → CJK UNIFIED IDEOGRAPH-580D     # 
+
+2F857 ;        5831 ;  SA      # ( 報 → 報 ) CJK COMPATIBILITY IDEOGRAPH-2F857 → CJK UNIFIED IDEOGRAPH-5831     # 
+
+2F856 ;        5832 ;  SA      # ( 堲 → 堲 ) CJK COMPATIBILITY IDEOGRAPH-2F856 → CJK UNIFIED IDEOGRAPH-5832     # 
+
+FA39 ; 5840 ;  SA      # ( 塀 → 塀 ) CJK COMPATIBILITY IDEOGRAPH-FA39 → CJK UNIFIED IDEOGRAPH-5840       # 
+
+FA10 ; 585A ;  SA      # ( 塚 → 塚 ) CJK COMPATIBILITY IDEOGRAPH-FA10 → CJK UNIFIED IDEOGRAPH-585A       # 
+FA7C ; 585A ;  SA      # ( 塚 → 塚 ) CJK COMPATIBILITY IDEOGRAPH-FA7C → CJK UNIFIED IDEOGRAPH-585A       # 
+
+F96C ; 585E ;  SA      # ( 塞 → 塞 ) CJK COMPATIBILITY IDEOGRAPH-F96C → CJK UNIFIED IDEOGRAPH-585E       # 
+
+586B ; 5861 ;  SA      # ( 填 → 塡 ) CJK UNIFIED IDEOGRAPH-586B → CJK UNIFIED IDEOGRAPH-5861     # 
+
+FA3A ; 58A8 ;  SA      # ( 墨 → 墨 ) CJK COMPATIBILITY IDEOGRAPH-FA3A → CJK UNIFIED IDEOGRAPH-58A8       # 
+
+58FF ; 58AB ;  SA      # ( 壿 → 墫 ) CJK UNIFIED IDEOGRAPH-58FF → CJK UNIFIED IDEOGRAPH-58AB     # 
+
+2F858 ;        58AC ;  SA      # ( 墬 → 墬 ) CJK COMPATIBILITY IDEOGRAPH-2F858 → CJK UNIFIED IDEOGRAPH-58AC     # 
+
+FA7D ; 58B3 ;  SA      # ( 墳 → 墳 ) CJK COMPATIBILITY IDEOGRAPH-FA7D → CJK UNIFIED IDEOGRAPH-58B3       # 
+
+F94A ; 58D8 ;  SA      # ( 壘 → 壘 ) CJK COMPATIBILITY IDEOGRAPH-F94A → CJK UNIFIED IDEOGRAPH-58D8       # 
+
+F942 ; 58DF ;  SA      # ( 壟 → 壟 ) CJK COMPATIBILITY IDEOGRAPH-F942 → CJK UNIFIED IDEOGRAPH-58DF       # 
+
+2F20 ; 58EB ;  SA      #* ( ⼠ → 士 ) KANGXI RADICAL SCHOLAR → CJK UNIFIED IDEOGRAPH-58EB        # 
+
+2F851 ;        58EE ;  SA      # ( 壮 → 壮 ) CJK COMPATIBILITY IDEOGRAPH-2F851 → CJK UNIFIED IDEOGRAPH-58EE     # 
+
+2F85A ;        58F2 ;  SA      # ( 売 → 売 ) CJK COMPATIBILITY IDEOGRAPH-2F85A → CJK UNIFIED IDEOGRAPH-58F2     # 
+
+2F85B ;        58F7 ;  SA      # ( 壷 → 壷 ) CJK COMPATIBILITY IDEOGRAPH-2F85B → CJK UNIFIED IDEOGRAPH-58F7     # 
+
+2F21 ; 5902 ;  SA      #* ( ⼡ → 夂 ) KANGXI RADICAL GO → CJK UNIFIED IDEOGRAPH-5902     # 
+
+2F85C ;        5906 ;  SA      # ( 夆 → 夆 ) CJK COMPATIBILITY IDEOGRAPH-2F85C → CJK UNIFIED IDEOGRAPH-5906     # 
+
+2F22 ; 590A ;  SA      #* ( ⼢ → 夊 ) KANGXI RADICAL GO SLOWLY → CJK UNIFIED IDEOGRAPH-590A      # 
+
+2F23 ; 5915 ;  SA      #* ( ⼣ → 夕 ) KANGXI RADICAL EVENING → CJK UNIFIED IDEOGRAPH-5915        # 
+
+2F85D ;        591A ;  SA      # ( 多 → 多 ) CJK COMPATIBILITY IDEOGRAPH-2F85D → CJK UNIFIED IDEOGRAPH-591A     # 
+
+2F85E ;        5922 ;  SA      # ( 夢 → 夢 ) CJK COMPATIBILITY IDEOGRAPH-2F85E → CJK UNIFIED IDEOGRAPH-5922     # 
+
+2F24 ; 5927 ;  SA      #* ( ⼤ → 大 ) KANGXI RADICAL BIG → CJK UNIFIED IDEOGRAPH-5927    # 
+
+FA7E ; 5944 ;  SA      # ( 奄 → 奄 ) CJK COMPATIBILITY IDEOGRAPH-FA7E → CJK UNIFIED IDEOGRAPH-5944       # 
+
+F90C ; 5948 ;  SA      # ( 奈 → 奈 ) CJK COMPATIBILITY IDEOGRAPH-F90C → CJK UNIFIED IDEOGRAPH-5948       # 
+
+F909 ; 5951 ;  SA      # ( 契 → 契 ) CJK COMPATIBILITY IDEOGRAPH-F909 → CJK UNIFIED IDEOGRAPH-5951       # 
+
+FA7F ; 5954 ;  SA      # ( 奔 → 奔 ) CJK COMPATIBILITY IDEOGRAPH-FA7F → CJK UNIFIED IDEOGRAPH-5954       # 
+
+2F85F ;        5962 ;  SA      # ( 奢 → 奢 ) CJK COMPATIBILITY IDEOGRAPH-2F85F → CJK UNIFIED IDEOGRAPH-5962     # 
+
+F981 ; 5973 ;  SA      # ( 女 → 女 ) CJK COMPATIBILITY IDEOGRAPH-F981 → CJK UNIFIED IDEOGRAPH-5973       # 
+2F25 ; 5973 ;  SA      #* ( ⼥ → 女 ) KANGXI RADICAL WOMAN → CJK UNIFIED IDEOGRAPH-5973  # 
+
+2F865 ;        59D8 ;  SA      # ( 姘 → 姘 ) CJK COMPATIBILITY IDEOGRAPH-2F865 → CJK UNIFIED IDEOGRAPH-59D8     # 
+
+2F862 ;        59EC ;  SA      # ( 姬 → 姬 ) CJK COMPATIBILITY IDEOGRAPH-2F862 → CJK UNIFIED IDEOGRAPH-59EC     # 
+
+2F863 ;        5A1B ;  SA      # ( 娛 → 娛 ) CJK COMPATIBILITY IDEOGRAPH-2F863 → CJK UNIFIED IDEOGRAPH-5A1B     # 
+
+2F864 ;        5A27 ;  SA      # ( 娧 → 娧 ) CJK COMPATIBILITY IDEOGRAPH-2F864 → CJK UNIFIED IDEOGRAPH-5A27     # 
+
+FA80 ; 5A62 ;  SA      # ( 婢 → 婢 ) CJK COMPATIBILITY IDEOGRAPH-FA80 → CJK UNIFIED IDEOGRAPH-5A62       # 
+
+2F866 ;        5A66 ;  SA      # ( 婦 → 婦 ) CJK COMPATIBILITY IDEOGRAPH-2F866 → CJK UNIFIED IDEOGRAPH-5A66     # 
+
+5B00 ; 5AAF ;  SA      # ( 嬀 → 媯 ) CJK UNIFIED IDEOGRAPH-5B00 → CJK UNIFIED IDEOGRAPH-5AAF     # 
+
+2F986 ;        5AB5 ;  SA      # ( 媵 → 媵 ) CJK COMPATIBILITY IDEOGRAPH-2F986 → CJK UNIFIED IDEOGRAPH-5AB5     # 
+
+2F869 ;        5B08 ;  SA      # ( 嬈 → 嬈 ) CJK COMPATIBILITY IDEOGRAPH-2F869 → CJK UNIFIED IDEOGRAPH-5B08     # 
+
+FA81 ; 5B28 ;  SA      # ( 嬨 → 嬨 ) CJK COMPATIBILITY IDEOGRAPH-FA81 → CJK UNIFIED IDEOGRAPH-5B28       # 
+
+2F86A ;        5B3E ;  SA      # ( 嬾 → 嬾 ) CJK COMPATIBILITY IDEOGRAPH-2F86A → CJK UNIFIED IDEOGRAPH-5B3E     # 
+2F86B ;        5B3E ;  SA      # ( 嬾 → 嬾 ) CJK COMPATIBILITY IDEOGRAPH-2F86B → CJK UNIFIED IDEOGRAPH-5B3E     # 
+
+2F26 ; 5B50 ;  SA      #* ( ⼦ → 子 ) KANGXI RADICAL CHILD → CJK UNIFIED IDEOGRAPH-5B50  # 
+
+2F27 ; 5B80 ;  SA      #* ( ⼧ → 宀 ) KANGXI RADICAL ROOF → CJK UNIFIED IDEOGRAPH-5B80   # 
+
+FA04 ; 5B85 ;  SA      # ( 宅 → 宅 ) CJK COMPATIBILITY IDEOGRAPH-FA04 → CJK UNIFIED IDEOGRAPH-5B85       # 
+
+2F86D ;        5BC3 ;  SA      # ( 寃 → 寃 ) CJK COMPATIBILITY IDEOGRAPH-2F86D → CJK UNIFIED IDEOGRAPH-5BC3     # 
+
+2F86E ;        5BD8 ;  SA      # ( 寘 → 寘 ) CJK COMPATIBILITY IDEOGRAPH-2F86E → CJK UNIFIED IDEOGRAPH-5BD8     # 
+
+F95F ; 5BE7 ;  SA      # ( 寧 → 寧 ) CJK COMPATIBILITY IDEOGRAPH-F95F → CJK UNIFIED IDEOGRAPH-5BE7       # 
+F9AA ; 5BE7 ;  SA      # ( 寧 → 寧 ) CJK COMPATIBILITY IDEOGRAPH-F9AA → CJK UNIFIED IDEOGRAPH-5BE7       # 
+2F86F ;        5BE7 ;  SA      # ( 寧 → 寧 ) CJK COMPATIBILITY IDEOGRAPH-2F86F → CJK UNIFIED IDEOGRAPH-5BE7     # 
+
+F9BC ; 5BEE ;  SA      # ( 寮 → 寮 ) CJK COMPATIBILITY IDEOGRAPH-F9BC → CJK UNIFIED IDEOGRAPH-5BEE       # 
+
+2F870 ;        5BF3 ;  SA      # ( 寳 → 寳 ) CJK COMPATIBILITY IDEOGRAPH-2F870 → CJK UNIFIED IDEOGRAPH-5BF3     # 
+
+2F28 ; 5BF8 ;  SA      #* ( ⼨ → 寸 ) KANGXI RADICAL INCH → CJK UNIFIED IDEOGRAPH-5BF8   # 
+
+2F872 ;        5BFF ;  SA      # ( 寿 → 寿 ) CJK COMPATIBILITY IDEOGRAPH-2F872 → CJK UNIFIED IDEOGRAPH-5BFF     # 
+
+2F873 ;        5C06 ;  SA      # ( 将 → 将 ) CJK COMPATIBILITY IDEOGRAPH-2F873 → CJK UNIFIED IDEOGRAPH-5C06     # 
+
+2F29 ; 5C0F ;  SA      #* ( ⼩ → 小 ) KANGXI RADICAL SMALL → CJK UNIFIED IDEOGRAPH-5C0F  # 
+
+2F875 ;        5C22 ;  SA      # ( 尢 → 尢 ) CJK COMPATIBILITY IDEOGRAPH-2F875 → CJK UNIFIED IDEOGRAPH-5C22     # 
+2E90 ; 5C22 ;  SA      #* ( ⺐ → 尢 ) CJK RADICAL LAME THREE → CJK UNIFIED IDEOGRAPH-5C22        # 
+2F2A ; 5C22 ;  SA      #* ( ⼪ → 尢 ) KANGXI RADICAL LAME → CJK UNIFIED IDEOGRAPH-5C22   # 
+
+2E8F ; 5C23 ;  SA      #* ( ⺏ → 尣 ) CJK RADICAL LAME TWO → CJK UNIFIED IDEOGRAPH-5C23  # 
+
+2F2B ; 5C38 ;  SA      #* ( ⼫ → 尸 ) KANGXI RADICAL CORPSE → CJK UNIFIED IDEOGRAPH-5C38 # 
+
+F9BD ; 5C3F ;  SA      # ( 尿 → 尿 ) CJK COMPATIBILITY IDEOGRAPH-F9BD → CJK UNIFIED IDEOGRAPH-5C3F       # 
+
+2F877 ;        5C60 ;  SA      # ( 屠 → 屠 ) CJK COMPATIBILITY IDEOGRAPH-2F877 → CJK UNIFIED IDEOGRAPH-5C60     # 
+
+F94B ; 5C62 ;  SA      # ( 屢 → 屢 ) CJK COMPATIBILITY IDEOGRAPH-F94B → CJK UNIFIED IDEOGRAPH-5C62       # 
+
+FA3B ; 5C64 ;  SA      # ( 層 → 層 ) CJK COMPATIBILITY IDEOGRAPH-FA3B → CJK UNIFIED IDEOGRAPH-5C64       # 
+
+F9DF ; 5C65 ;  SA      # ( 履 → 履 ) CJK COMPATIBILITY IDEOGRAPH-F9DF → CJK UNIFIED IDEOGRAPH-5C65       # 
+
+FA3C ; 5C6E ;  SA      # ( 屮 → 屮 ) CJK COMPATIBILITY IDEOGRAPH-FA3C → CJK UNIFIED IDEOGRAPH-5C6E       # 
+2F878 ;        5C6E ;  SA      # ( 屮 → 屮 ) CJK COMPATIBILITY IDEOGRAPH-2F878 → CJK UNIFIED IDEOGRAPH-5C6E     # 
+2F2C ; 5C6E ;  SA      #* ( ⼬ → 屮 ) KANGXI RADICAL SPROUT → CJK UNIFIED IDEOGRAPH-5C6E # 
+
+2F2D ; 5C71 ;  SA      #* ( ⼭ → 山 ) KANGXI RADICAL MOUNTAIN → CJK UNIFIED IDEOGRAPH-5C71       # 
+
+2F87A ;        5C8D ;  SA      # ( 岍 → 岍 ) CJK COMPATIBILITY IDEOGRAPH-2F87A → CJK UNIFIED IDEOGRAPH-5C8D     # 
+
+2F879 ;        5CC0 ;  SA      # ( 峀 → 峀 ) CJK COMPATIBILITY IDEOGRAPH-2F879 → CJK UNIFIED IDEOGRAPH-5CC0     # 
+
+F9D5 ; 5D19 ;  SA      # ( 崙 → 崙 ) CJK COMPATIBILITY IDEOGRAPH-F9D5 → CJK UNIFIED IDEOGRAPH-5D19       # 
+
+2F87C ;        5D43 ;  SA      # ( 嵃 → 嵃 ) CJK COMPATIBILITY IDEOGRAPH-2F87C → CJK UNIFIED IDEOGRAPH-5D43     # 
+
+F921 ; 5D50 ;  SA      # ( 嵐 → 嵐 ) CJK COMPATIBILITY IDEOGRAPH-F921 → CJK UNIFIED IDEOGRAPH-5D50       # 
+
+2F87F ;        5D6B ;  SA      # ( 嵫 → 嵫 ) CJK COMPATIBILITY IDEOGRAPH-2F87F → CJK UNIFIED IDEOGRAPH-5D6B     # 
+
+2F87E ;        5D6E ;  SA      # ( 嵮 → 嵮 ) CJK COMPATIBILITY IDEOGRAPH-2F87E → CJK UNIFIED IDEOGRAPH-5D6E     # 
+
+2F880 ;        5D7C ;  SA      # ( 嵼 → 嵼 ) CJK COMPATIBILITY IDEOGRAPH-2F880 → CJK UNIFIED IDEOGRAPH-5D7C     # 
+
+2F9F4 ;        5DB2 ;  SA      # ( 嶲 → 嶲 ) CJK COMPATIBILITY IDEOGRAPH-2F9F4 → CJK UNIFIED IDEOGRAPH-5DB2     # 
+
+F9AB ; 5DBA ;  SA      # ( 嶺 → 嶺 ) CJK COMPATIBILITY IDEOGRAPH-F9AB → CJK UNIFIED IDEOGRAPH-5DBA       # 
+
+2F2E ; 5DDB ;  SA      #* ( ⼮ → 巛 ) KANGXI RADICAL RIVER → CJK UNIFIED IDEOGRAPH-5DDB  # 
+
+2F881 ;        5DE1 ;  SA      # ( 巡 → 巡 ) CJK COMPATIBILITY IDEOGRAPH-2F881 → CJK UNIFIED IDEOGRAPH-5DE1     # 
+
+2F882 ;        5DE2 ;  SA      # ( 巢 → 巢 ) CJK COMPATIBILITY IDEOGRAPH-2F882 → CJK UNIFIED IDEOGRAPH-5DE2     # 
+
+2F2F ; 5DE5 ;  SA      #* ( ⼯ → 工 ) KANGXI RADICAL WORK → CJK UNIFIED IDEOGRAPH-5DE5   # 
+
+2F30 ; 5DF1 ;  SA      #* ( ⼰ → 己 ) KANGXI RADICAL ONESELF → CJK UNIFIED IDEOGRAPH-5DF1        # 
+
+2E92 ; 5DF3 ;  SA      #* ( ⺒ → 巳 ) CJK RADICAL SNAKE → CJK UNIFIED IDEOGRAPH-5DF3     # 
+
+2F884 ;        5DFD ;  SA      # ( 巽 → 巽 ) CJK COMPATIBILITY IDEOGRAPH-2F884 → CJK UNIFIED IDEOGRAPH-5DFD     # 
+
+2F31 ; 5DFE ;  SA      #* ( ⼱ → 巾 ) KANGXI RADICAL TURBAN → CJK UNIFIED IDEOGRAPH-5DFE # 
+
+5E32 ; 5E21 ;  SA      # ( 帲 → 帡 ) CJK UNIFIED IDEOGRAPH-5E32 → CJK UNIFIED IDEOGRAPH-5E21     # 
+
+2F885 ;        5E28 ;  SA      # ( 帨 → 帨 ) CJK COMPATIBILITY IDEOGRAPH-2F885 → CJK UNIFIED IDEOGRAPH-5E28     # 
+
+2F886 ;        5E3D ;  SA      # ( 帽 → 帽 ) CJK COMPATIBILITY IDEOGRAPH-2F886 → CJK UNIFIED IDEOGRAPH-5E3D     # 
+
+2F887 ;        5E69 ;  SA      # ( 幩 → 幩 ) CJK COMPATIBILITY IDEOGRAPH-2F887 → CJK UNIFIED IDEOGRAPH-5E69     # 
+
+2F32 ; 5E72 ;  SA      #* ( ⼲ → 干 ) KANGXI RADICAL DRY → CJK UNIFIED IDEOGRAPH-5E72    # 
+
+F98E ; 5E74 ;  SA      # ( 年 → 年 ) CJK COMPATIBILITY IDEOGRAPH-F98E → CJK UNIFIED IDEOGRAPH-5E74       # 
+
+2E93 ; 5E7A ;  SA      #* ( ⺓ → 幺 ) CJK RADICAL THREAD → CJK UNIFIED IDEOGRAPH-5E7A    # 
+2F33 ; 5E7A ;  SA      #* ( ⼳ → 幺 ) KANGXI RADICAL SHORT THREAD → CJK UNIFIED IDEOGRAPH-5E7A   # 
+
+2F34 ; 5E7F ;  SA      #* ( ⼴ → 广 ) KANGXI RADICAL DOTTED CLIFF → CJK UNIFIED IDEOGRAPH-5E7F   # 
+
+FA01 ; 5EA6 ;  SA      # ( 度 → 度 ) CJK COMPATIBILITY IDEOGRAPH-FA01 → CJK UNIFIED IDEOGRAPH-5EA6       # 
+
+2F88B ;        5EB0 ;  SA      # ( 庰 → 庰 ) CJK COMPATIBILITY IDEOGRAPH-2F88B → CJK UNIFIED IDEOGRAPH-5EB0     # 
+
+2F88C ;        5EB3 ;  SA      # ( 庳 → 庳 ) CJK COMPATIBILITY IDEOGRAPH-2F88C → CJK UNIFIED IDEOGRAPH-5EB3     # 
+
+2F88D ;        5EB6 ;  SA      # ( 庶 → 庶 ) CJK COMPATIBILITY IDEOGRAPH-2F88D → CJK UNIFIED IDEOGRAPH-5EB6     # 
+
+F9A2 ; 5EC9 ;  SA      # ( 廉 → 廉 ) CJK COMPATIBILITY IDEOGRAPH-F9A2 → CJK UNIFIED IDEOGRAPH-5EC9       # 
+
+F928 ; 5ECA ;  SA      # ( 廊 → 廊 ) CJK COMPATIBILITY IDEOGRAPH-F928 → CJK UNIFIED IDEOGRAPH-5ECA       # 
+2F88E ;        5ECA ;  SA      # ( 廊 → 廊 ) CJK COMPATIBILITY IDEOGRAPH-2F88E → CJK UNIFIED IDEOGRAPH-5ECA     # 
+
+FA82 ; 5ED2 ;  SA      # ( 廒 → 廒 ) CJK COMPATIBILITY IDEOGRAPH-FA82 → CJK UNIFIED IDEOGRAPH-5ED2       # 
+
+FA0B ; 5ED3 ;  SA      # ( 廓 → 廓 ) CJK COMPATIBILITY IDEOGRAPH-FA0B → CJK UNIFIED IDEOGRAPH-5ED3       # 
+
+FA83 ; 5ED9 ;  SA      # ( 廙 → 廙 ) CJK COMPATIBILITY IDEOGRAPH-FA83 → CJK UNIFIED IDEOGRAPH-5ED9       # 
+
+F982 ; 5EEC ;  SA      # ( 廬 → 廬 ) CJK COMPATIBILITY IDEOGRAPH-F982 → CJK UNIFIED IDEOGRAPH-5EEC       # 
+
+2F35 ; 5EF4 ;  SA      #* ( ⼵ → 廴 ) KANGXI RADICAL LONG STRIDE → CJK UNIFIED IDEOGRAPH-5EF4    # 
+
+2F890 ;        5EFE ;  SA      # ( 廾 → 廾 ) CJK COMPATIBILITY IDEOGRAPH-2F890 → CJK UNIFIED IDEOGRAPH-5EFE     # 
+2F36 ; 5EFE ;  SA      #* ( ⼶ → 廾 ) KANGXI RADICAL TWO HANDS → CJK UNIFIED IDEOGRAPH-5EFE      # 
+
+F943 ; 5F04 ;  SA      # ( 弄 → 弄 ) CJK COMPATIBILITY IDEOGRAPH-F943 → CJK UNIFIED IDEOGRAPH-5F04       # 
+
+2F37 ; 5F0B ;  SA      #* ( ⼷ → 弋 ) KANGXI RADICAL SHOOT → CJK UNIFIED IDEOGRAPH-5F0B  # 
+
+2F38 ; 5F13 ;  SA      #* ( ⼸ → 弓 ) KANGXI RADICAL BOW → CJK UNIFIED IDEOGRAPH-5F13    # 
+
+2F894 ;        5F22 ;  SA      # ( 弢 → 弢 ) CJK COMPATIBILITY IDEOGRAPH-2F894 → CJK UNIFIED IDEOGRAPH-5F22     # 
+2F895 ;        5F22 ;  SA      # ( 弢 → 弢 ) CJK COMPATIBILITY IDEOGRAPH-2F895 → CJK UNIFIED IDEOGRAPH-5F22     # 
+
+2F39 ; 5F50 ;  SA      #* ( ⼹ → 彐 ) KANGXI RADICAL SNOUT → CJK UNIFIED IDEOGRAPH-5F50  # 
+
+2E94 ; 5F51 ;  SA      #* ( ⺔ → 彑 ) CJK RADICAL SNOUT ONE → CJK UNIFIED IDEOGRAPH-5F51 # 
+
+2F874 ;        5F53 ;  SA      # ( 当 → 当 ) CJK COMPATIBILITY IDEOGRAPH-2F874 → CJK UNIFIED IDEOGRAPH-5F53     # 
+
+2F3A ; 5F61 ;  SA      #* ( ⼺ → 彡 ) KANGXI RADICAL BRISTLE → CJK UNIFIED IDEOGRAPH-5F61        # 
+
+2F899 ;        5F62 ;  SA      # ( 形 → 形 ) CJK COMPATIBILITY IDEOGRAPH-2F899 → CJK UNIFIED IDEOGRAPH-5F62     # 
+
+FA84 ; 5F69 ;  SA      # ( 彩 → 彩 ) CJK COMPATIBILITY IDEOGRAPH-FA84 → CJK UNIFIED IDEOGRAPH-5F69       # 
+
+2F89A ;        5F6B ;  SA      # ( 彫 → 彫 ) CJK COMPATIBILITY IDEOGRAPH-2F89A → CJK UNIFIED IDEOGRAPH-5F6B     # 
+
+2F3B ; 5F73 ;  SA      #* ( ⼻ → 彳 ) KANGXI RADICAL STEP → CJK UNIFIED IDEOGRAPH-5F73   # 
+
+F9D8 ; 5F8B ;  SA      # ( 律 → 律 ) CJK COMPATIBILITY IDEOGRAPH-F9D8 → CJK UNIFIED IDEOGRAPH-5F8B       # 
+
+2F89C ;        5F9A ;  SA      # ( 徚 → 徚 ) CJK COMPATIBILITY IDEOGRAPH-2F89C → CJK UNIFIED IDEOGRAPH-5F9A     # 
+
+F966 ; 5FA9 ;  SA      # ( 復 → 復 ) CJK COMPATIBILITY IDEOGRAPH-F966 → CJK UNIFIED IDEOGRAPH-5FA9       # 
+
+FA85 ; 5FAD ;  SA      # ( 徭 → 徭 ) CJK COMPATIBILITY IDEOGRAPH-FA85 → CJK UNIFIED IDEOGRAPH-5FAD       # 
+
+2F3C ; 5FC3 ;  SA      #* ( ⼼ → 心 ) KANGXI RADICAL HEART → CJK UNIFIED IDEOGRAPH-5FC3  # 
+
+2E96 ; 5FC4 ;  SA      #* ( ⺖ → 忄 ) CJK RADICAL HEART ONE → CJK UNIFIED IDEOGRAPH-5FC4 # 
+
+2F89D ;        5FCD ;  SA      # ( 忍 → 忍 ) CJK COMPATIBILITY IDEOGRAPH-2F89D → CJK UNIFIED IDEOGRAPH-5FCD     # 
+
+2F89E ;        5FD7 ;  SA      # ( 志 → 志 ) CJK COMPATIBILITY IDEOGRAPH-2F89E → CJK UNIFIED IDEOGRAPH-5FD7     # 
+
+F9A3 ; 5FF5 ;  SA      # ( 念 → 念 ) CJK COMPATIBILITY IDEOGRAPH-F9A3 → CJK UNIFIED IDEOGRAPH-5FF5       # 
+
+2F89F ;        5FF9 ;  SA      # ( 忹 → 忹 ) CJK COMPATIBILITY IDEOGRAPH-2F89F → CJK UNIFIED IDEOGRAPH-5FF9     # 
+
+F960 ; 6012 ;  SA      # ( 怒 → 怒 ) CJK COMPATIBILITY IDEOGRAPH-F960 → CJK UNIFIED IDEOGRAPH-6012       # 
+
+F9AC ; 601C ;  SA      # ( 怜 → 怜 ) CJK COMPATIBILITY IDEOGRAPH-F9AC → CJK UNIFIED IDEOGRAPH-601C       # 
+
+FA6B ; 6075 ;  SA      # ( 恵 → 恵 ) CJK COMPATIBILITY IDEOGRAPH-FA6B → CJK UNIFIED IDEOGRAPH-6075       # 
+
+2F8A0 ;        6081 ;  SA      # ( 悁 → 悁 ) CJK COMPATIBILITY IDEOGRAPH-2F8A0 → CJK UNIFIED IDEOGRAPH-6081     # 
+
+FA3D ; 6094 ;  SA      # ( 悔 → 悔 ) CJK COMPATIBILITY IDEOGRAPH-FA3D → CJK UNIFIED IDEOGRAPH-6094       # 
+2F8A3 ;        6094 ;  SA      # ( 悔 → 悔 ) CJK COMPATIBILITY IDEOGRAPH-2F8A3 → CJK UNIFIED IDEOGRAPH-6094     # 
+
+2F8A5 ;        60C7 ;  SA      # ( 惇 → 惇 ) CJK COMPATIBILITY IDEOGRAPH-2F8A5 → CJK UNIFIED IDEOGRAPH-60C7     # 
+
+FA86 ; 60D8 ;  SA      # ( 惘 → 惘 ) CJK COMPATIBILITY IDEOGRAPH-FA86 → CJK UNIFIED IDEOGRAPH-60D8       # 
+
+F9B9 ; 60E1 ;  SA      # ( 惡 → 惡 ) CJK COMPATIBILITY IDEOGRAPH-F9B9 → CJK UNIFIED IDEOGRAPH-60E1       # 
+
+FA88 ; 6108 ;  SA      # ( 愈 → 愈 ) CJK COMPATIBILITY IDEOGRAPH-FA88 → CJK UNIFIED IDEOGRAPH-6108       # 
+
+F9D9 ; 6144 ;  SA      # ( 慄 → 慄 ) CJK COMPATIBILITY IDEOGRAPH-F9D9 → CJK UNIFIED IDEOGRAPH-6144       # 
+
+2F8A6 ;        6148 ;  SA      # ( 慈 → 慈 ) CJK COMPATIBILITY IDEOGRAPH-2F8A6 → CJK UNIFIED IDEOGRAPH-6148     # 
+
+2F8A7 ;        614C ;  SA      # ( 慌 → 慌 ) CJK COMPATIBILITY IDEOGRAPH-2F8A7 → CJK UNIFIED IDEOGRAPH-614C     # 
+2F8A9 ;        614C ;  SA      # ( 慌 → 慌 ) CJK COMPATIBILITY IDEOGRAPH-2F8A9 → CJK UNIFIED IDEOGRAPH-614C     # 
+
+FA87 ; 614E ;  SA      # ( 慎 → 慎 ) CJK COMPATIBILITY IDEOGRAPH-FA87 → CJK UNIFIED IDEOGRAPH-614E       # 
+2F8A8 ;        614E ;  SA      # ( 慎 → 慎 ) CJK COMPATIBILITY IDEOGRAPH-2F8A8 → CJK UNIFIED IDEOGRAPH-614E     # 
+
+FA8A ; 6160 ;  SA      # ( 慠 → 慠 ) CJK COMPATIBILITY IDEOGRAPH-FA8A → CJK UNIFIED IDEOGRAPH-6160       # 
+
+FA3E ; 6168 ;  SA      # ( 慨 → 慨 ) CJK COMPATIBILITY IDEOGRAPH-FA3E → CJK UNIFIED IDEOGRAPH-6168       # 
+
+2F8AA ;        617A ;  SA      # ( 慺 → 慺 ) CJK COMPATIBILITY IDEOGRAPH-2F8AA → CJK UNIFIED IDEOGRAPH-617A     # 
+
+FA3F ; 618E ;  SA      # ( 憎 → 憎 ) CJK COMPATIBILITY IDEOGRAPH-FA3F → CJK UNIFIED IDEOGRAPH-618E       # 
+FA89 ; 618E ;  SA      # ( 憎 → 憎 ) CJK COMPATIBILITY IDEOGRAPH-FA89 → CJK UNIFIED IDEOGRAPH-618E       # 
+2F8AB ;        618E ;  SA      # ( 憎 → 憎 ) CJK COMPATIBILITY IDEOGRAPH-2F8AB → CJK UNIFIED IDEOGRAPH-618E     # 
+
+F98F ; 6190 ;  SA      # ( 憐 → 憐 ) CJK COMPATIBILITY IDEOGRAPH-F98F → CJK UNIFIED IDEOGRAPH-6190       # 
+
+2F8AD ;        61A4 ;  SA      # ( 憤 → 憤 ) CJK COMPATIBILITY IDEOGRAPH-2F8AD → CJK UNIFIED IDEOGRAPH-61A4     # 
+
+2F8AE ;        61AF ;  SA      # ( 憯 → 憯 ) CJK COMPATIBILITY IDEOGRAPH-2F8AE → CJK UNIFIED IDEOGRAPH-61AF     # 
+
+2F8AC ;        61B2 ;  SA      # ( 憲 → 憲 ) CJK COMPATIBILITY IDEOGRAPH-2F8AC → CJK UNIFIED IDEOGRAPH-61B2     # 
+
+2F8AF ;        61DE ;  SA      # ( 懞 → 懞 ) CJK COMPATIBILITY IDEOGRAPH-2F8AF → CJK UNIFIED IDEOGRAPH-61DE     # 
+
+FA40 ; 61F2 ;  SA      # ( 懲 → 懲 ) CJK COMPATIBILITY IDEOGRAPH-FA40 → CJK UNIFIED IDEOGRAPH-61F2       # 
+FA8B ; 61F2 ;  SA      # ( 懲 → 懲 ) CJK COMPATIBILITY IDEOGRAPH-FA8B → CJK UNIFIED IDEOGRAPH-61F2       # 
+2F8B0 ;        61F2 ;  SA      # ( 懲 → 懲 ) CJK COMPATIBILITY IDEOGRAPH-2F8B0 → CJK UNIFIED IDEOGRAPH-61F2     # 
+
+F90D ; 61F6 ;  SA      # ( 懶 → 懶 ) CJK COMPATIBILITY IDEOGRAPH-F90D → CJK UNIFIED IDEOGRAPH-61F6       # 
+2F8B1 ;        61F6 ;  SA      # ( 懶 → 懶 ) CJK COMPATIBILITY IDEOGRAPH-2F8B1 → CJK UNIFIED IDEOGRAPH-61F6     # 
+
+F990 ; 6200 ;  SA      # ( 戀 → 戀 ) CJK COMPATIBILITY IDEOGRAPH-F990 → CJK UNIFIED IDEOGRAPH-6200       # 
+
+2F3D ; 6208 ;  SA      #* ( ⼽ → 戈 ) KANGXI RADICAL HALBERD → CJK UNIFIED IDEOGRAPH-6208        # 
+
+2F8B2 ;        6210 ;  SA      # ( 成 → 成 ) CJK COMPATIBILITY IDEOGRAPH-2F8B2 → CJK UNIFIED IDEOGRAPH-6210     # 
+
+2F8B3 ;        621B ;  SA      # ( 戛 → 戛 ) CJK COMPATIBILITY IDEOGRAPH-2F8B3 → CJK UNIFIED IDEOGRAPH-621B     # 
+
+F9D2 ; 622E ;  SA      # ( 戮 → 戮 ) CJK COMPATIBILITY IDEOGRAPH-F9D2 → CJK UNIFIED IDEOGRAPH-622E       # 
+
+FA8C ; 6234 ;  SA      # ( 戴 → 戴 ) CJK COMPATIBILITY IDEOGRAPH-FA8C → CJK UNIFIED IDEOGRAPH-6234       # 
+
+2F3E ; 6236 ;  SA      #* ( ⼾ → 戶 ) KANGXI RADICAL DOOR → CJK UNIFIED IDEOGRAPH-6236   # 
+6238 ; 6236 ;  SA      # ( 戸 → 戶 ) CJK UNIFIED IDEOGRAPH-6238 → CJK UNIFIED IDEOGRAPH-6236     # →⼾→
+
+2F3F ; 624B ;  SA      #* ( ⼿ → 手 ) KANGXI RADICAL HAND → CJK UNIFIED IDEOGRAPH-624B   # 
+
+2E98 ; 624C ;  SA      #* ( ⺘ → 扌 ) CJK RADICAL HAND → CJK UNIFIED IDEOGRAPH-624C      # 
+
+2F8B4 ;        625D ;  SA      # ( 扝 → 扝 ) CJK COMPATIBILITY IDEOGRAPH-2F8B4 → CJK UNIFIED IDEOGRAPH-625D     # 
+
+2F8B5 ;        62B1 ;  SA      # ( 抱 → 抱 ) CJK COMPATIBILITY IDEOGRAPH-2F8B5 → CJK UNIFIED IDEOGRAPH-62B1     # 
+
+F925 ; 62C9 ;  SA      # ( 拉 → 拉 ) CJK COMPATIBILITY IDEOGRAPH-F925 → CJK UNIFIED IDEOGRAPH-62C9       # 
+
+F95B ; 62CF ;  SA      # ( 拏 → 拏 ) CJK COMPATIBILITY IDEOGRAPH-F95B → CJK UNIFIED IDEOGRAPH-62CF       # 
+
+FA02 ; 62D3 ;  SA      # ( 拓 → 拓 ) CJK COMPATIBILITY IDEOGRAPH-FA02 → CJK UNIFIED IDEOGRAPH-62D3       # 
+
+2F8B6 ;        62D4 ;  SA      # ( 拔 → 拔 ) CJK COMPATIBILITY IDEOGRAPH-2F8B6 → CJK UNIFIED IDEOGRAPH-62D4     # 
+
+2F8BA ;        62FC ;  SA      # ( 拼 → 拼 ) CJK COMPATIBILITY IDEOGRAPH-2F8BA → CJK UNIFIED IDEOGRAPH-62FC     # 
+
+F973 ; 62FE ;  SA      # ( 拾 → 拾 ) CJK COMPATIBILITY IDEOGRAPH-F973 → CJK UNIFIED IDEOGRAPH-62FE       # 
+
+2F8B9 ;        633D ;  SA      # ( 挽 → 挽 ) CJK COMPATIBILITY IDEOGRAPH-2F8B9 → CJK UNIFIED IDEOGRAPH-633D     # 
+
+2F8B7 ;        6350 ;  SA      # ( 捐 → 捐 ) CJK COMPATIBILITY IDEOGRAPH-2F8B7 → CJK UNIFIED IDEOGRAPH-6350     # 
+
+2F8BB ;        6368 ;  SA      # ( 捨 → 捨 ) CJK COMPATIBILITY IDEOGRAPH-2F8BB → CJK UNIFIED IDEOGRAPH-6368     # 
+
+F9A4 ; 637B ;  SA      # ( 捻 → 捻 ) CJK COMPATIBILITY IDEOGRAPH-F9A4 → CJK UNIFIED IDEOGRAPH-637B       # 
+
+2F8BC ;        6383 ;  SA      # ( 掃 → 掃 ) CJK COMPATIBILITY IDEOGRAPH-2F8BC → CJK UNIFIED IDEOGRAPH-6383     # 
+
+F975 ; 63A0 ;  SA      # ( 掠 → 掠 ) CJK COMPATIBILITY IDEOGRAPH-F975 → CJK UNIFIED IDEOGRAPH-63A0       # 
+
+2F8C1 ;        63A9 ;  SA      # ( 掩 → 掩 ) CJK COMPATIBILITY IDEOGRAPH-2F8C1 → CJK UNIFIED IDEOGRAPH-63A9     # 
+
+FA8D ; 63C4 ;  SA      # ( 揄 → 揄 ) CJK COMPATIBILITY IDEOGRAPH-FA8D → CJK UNIFIED IDEOGRAPH-63C4       # 
+
+2F8C0 ;        63C5 ;  SA      # ( 揅 → 揅 ) CJK COMPATIBILITY IDEOGRAPH-2F8C0 → CJK UNIFIED IDEOGRAPH-63C5     # 
+
+2F8BD ;        63E4 ;  SA      # ( 揤 → 揤 ) CJK COMPATIBILITY IDEOGRAPH-2F8BD → CJK UNIFIED IDEOGRAPH-63E4     # 
+
+FA8E ; 641C ;  SA      # ( 搜 → 搜 ) CJK COMPATIBILITY IDEOGRAPH-FA8E → CJK UNIFIED IDEOGRAPH-641C       # 
+
+2F8BF ;        6422 ;  SA      # ( 搢 → 搢 ) CJK COMPATIBILITY IDEOGRAPH-2F8BF → CJK UNIFIED IDEOGRAPH-6422     # 
+
+FA8F ; 6452 ;  SA      # ( 摒 → 摒 ) CJK COMPATIBILITY IDEOGRAPH-FA8F → CJK UNIFIED IDEOGRAPH-6452       # 
+
+2F8C3 ;        6469 ;  SA      # ( 摩 → 摩 ) CJK COMPATIBILITY IDEOGRAPH-2F8C3 → CJK UNIFIED IDEOGRAPH-6469     # 
+
+2F8C6 ;        6477 ;  SA      # ( 摷 → 摷 ) CJK COMPATIBILITY IDEOGRAPH-2F8C6 → CJK UNIFIED IDEOGRAPH-6477     # 
+
+2F8C4 ;        647E ;  SA      # ( 摾 → 摾 ) CJK COMPATIBILITY IDEOGRAPH-2F8C4 → CJK UNIFIED IDEOGRAPH-647E     # 
+
+F991 ; 649A ;  SA      # ( 撚 → 撚 ) CJK COMPATIBILITY IDEOGRAPH-F991 → CJK UNIFIED IDEOGRAPH-649A       # 
+
+2F8C5 ;        649D ;  SA      # ( 撝 → 撝 ) CJK COMPATIBILITY IDEOGRAPH-2F8C5 → CJK UNIFIED IDEOGRAPH-649D     # 
+
+F930 ; 64C4 ;  SA      # ( 擄 → 擄 ) CJK COMPATIBILITY IDEOGRAPH-F930 → CJK UNIFIED IDEOGRAPH-64C4       # 
+
+2F40 ; 652F ;  SA      #* ( ⽀ → 支 ) KANGXI RADICAL BRANCH → CJK UNIFIED IDEOGRAPH-652F # 
+
+2F41 ; 6534 ;  SA      #* ( ⽁ → 攴 ) KANGXI RADICAL RAP → CJK UNIFIED IDEOGRAPH-6534    # 
+
+2E99 ; 6535 ;  SA      #* ( ⺙ → 攵 ) CJK RADICAL RAP → CJK UNIFIED IDEOGRAPH-6535       # 
+
+FA41 ; 654F ;  SA      # ( 敏 → 敏 ) CJK COMPATIBILITY IDEOGRAPH-FA41 → CJK UNIFIED IDEOGRAPH-654F       # 
+2F8C8 ;        654F ;  SA      # ( 敏 → 敏 ) CJK COMPATIBILITY IDEOGRAPH-2F8C8 → CJK UNIFIED IDEOGRAPH-654F     # 
+
+FA90 ; 6556 ;  SA      # ( 敖 → 敖 ) CJK COMPATIBILITY IDEOGRAPH-FA90 → CJK UNIFIED IDEOGRAPH-6556       # 
+
+2F8C9 ;        656C ;  SA      # ( 敬 → 敬 ) CJK COMPATIBILITY IDEOGRAPH-2F8C9 → CJK UNIFIED IDEOGRAPH-656C     # 
+
+F969 ; 6578 ;  SA      # ( 數 → 數 ) CJK COMPATIBILITY IDEOGRAPH-F969 → CJK UNIFIED IDEOGRAPH-6578       # 
+
+2F42 ; 6587 ;  SA      #* ( ⽂ → 文 ) KANGXI RADICAL SCRIPT → CJK UNIFIED IDEOGRAPH-6587 # 
+
+2EEB ; 6589 ;  SA      #* ( ⻫ → 斉 ) CJK RADICAL J-SIMPLIFIED EVEN → CJK UNIFIED IDEOGRAPH-6589 # 
+
+2F43 ; 6597 ;  SA      #* ( ⽃ → 斗 ) KANGXI RADICAL DIPPER → CJK UNIFIED IDEOGRAPH-6597 # 
+
+F9BE ; 6599 ;  SA      # ( 料 → 料 ) CJK COMPATIBILITY IDEOGRAPH-F9BE → CJK UNIFIED IDEOGRAPH-6599       # 
+
+2F44 ; 65A4 ;  SA      #* ( ⽄ → 斤 ) KANGXI RADICAL AXE → CJK UNIFIED IDEOGRAPH-65A4    # 
+
+2F45 ; 65B9 ;  SA      #* ( ⽅ → 方 ) KANGXI RADICAL SQUARE → CJK UNIFIED IDEOGRAPH-65B9 # 
+
+F983 ; 65C5 ;  SA      # ( 旅 → 旅 ) CJK COMPATIBILITY IDEOGRAPH-F983 → CJK UNIFIED IDEOGRAPH-65C5       # 
+
+2F46 ; 65E0 ;  SA      #* ( ⽆ → 无 ) KANGXI RADICAL NOT → CJK UNIFIED IDEOGRAPH-65E0    # 
+
+2E9B ; 65E1 ;  SA      #* ( ⺛ → 旡 ) CJK RADICAL CHOKE → CJK UNIFIED IDEOGRAPH-65E1     # 
+
+FA42 ; 65E2 ;  SA      # ( 既 → 既 ) CJK COMPATIBILITY IDEOGRAPH-FA42 → CJK UNIFIED IDEOGRAPH-65E2       # 
+
+2F8CB ;        65E3 ;  SA      # ( 旣 → 旣 ) CJK COMPATIBILITY IDEOGRAPH-2F8CB → CJK UNIFIED IDEOGRAPH-65E3     # 
+
+2F47 ; 65E5 ;  SA      #* ( ⽇ → 日 ) KANGXI RADICAL SUN → CJK UNIFIED IDEOGRAPH-65E5    # 
+
+F9E0 ; 6613 ;  SA      # ( 易 → 易 ) CJK COMPATIBILITY IDEOGRAPH-F9E0 → CJK UNIFIED IDEOGRAPH-6613       # 
+
+2F8CD ;        6649 ;  SA      # ( 晉 → 晉 ) CJK COMPATIBILITY IDEOGRAPH-2F8CD → CJK UNIFIED IDEOGRAPH-6649     # 
+
+6669 ; 665A ;  SA      # ( 晩 → 晚 ) CJK UNIFIED IDEOGRAPH-6669 → CJK UNIFIED IDEOGRAPH-665A     # 
+
+FA12 ; 6674 ;  SA      # ( 晴 → 晴 ) CJK COMPATIBILITY IDEOGRAPH-FA12 → CJK UNIFIED IDEOGRAPH-6674       # 
+FA91 ; 6674 ;  SA      # ( 晴 → 晴 ) CJK COMPATIBILITY IDEOGRAPH-FA91 → CJK UNIFIED IDEOGRAPH-6674       # 
+
+F9C5 ; 6688 ;  SA      # ( 暈 → 暈 ) CJK COMPATIBILITY IDEOGRAPH-F9C5 → CJK UNIFIED IDEOGRAPH-6688       # 
+
+FA43 ; 6691 ;  SA      # ( 暑 → 暑 ) CJK COMPATIBILITY IDEOGRAPH-FA43 → CJK UNIFIED IDEOGRAPH-6691       # 
+2F8CF ;        6691 ;  SA      # ( 暑 → 暑 ) CJK COMPATIBILITY IDEOGRAPH-2F8CF → CJK UNIFIED IDEOGRAPH-6691     # 
+
+2F8D5 ;        669C ;  SA      # ( 暜 → 暜 ) CJK COMPATIBILITY IDEOGRAPH-2F8D5 → CJK UNIFIED IDEOGRAPH-669C     # 
+
+FA06 ; 66B4 ;  SA      # ( 暴 → 暴 ) CJK COMPATIBILITY IDEOGRAPH-FA06 → CJK UNIFIED IDEOGRAPH-66B4       # 
+
+F98B ; 66C6 ;  SA      # ( 曆 → 曆 ) CJK COMPATIBILITY IDEOGRAPH-F98B → CJK UNIFIED IDEOGRAPH-66C6       # 
+
+2F48 ; 66F0 ;  SA      #* ( ⽈ → 曰 ) KANGXI RADICAL SAY → CJK UNIFIED IDEOGRAPH-66F0    # 
+
+F901 ; 66F4 ;  SA      # ( 更 → 更 ) CJK COMPATIBILITY IDEOGRAPH-F901 → CJK UNIFIED IDEOGRAPH-66F4       # 
+
+2F8CC ;        66F8 ;  SA      # ( 書 → 書 ) CJK COMPATIBILITY IDEOGRAPH-2F8CC → CJK UNIFIED IDEOGRAPH-66F8     # 
+
+2F8D4 ;        6700 ;  SA      # ( 最 → 最 ) CJK COMPATIBILITY IDEOGRAPH-2F8D4 → CJK UNIFIED IDEOGRAPH-6700     # 
+
+2F49 ; 6708 ;  SA      #* ( ⽉ → 月 ) KANGXI RADICAL MOON → CJK UNIFIED IDEOGRAPH-6708   # 
+
+80A6 ; 670C ;  SA      # ( 肦 → 朌 ) CJK UNIFIED IDEOGRAPH-80A6 → CJK UNIFIED IDEOGRAPH-670C     # 
+
+80D0 ; 670F ;  SA      # ( 胐 → 朏 ) CJK UNIFIED IDEOGRAPH-80D0 → CJK UNIFIED IDEOGRAPH-670F     # 
+
+80CA ; 6710 ;  SA      # ( 胊 → 朐 ) CJK UNIFIED IDEOGRAPH-80CA → CJK UNIFIED IDEOGRAPH-6710     # 
+
+8101 ; 6713 ;  SA      # ( 脁 → 朓 ) CJK UNIFIED IDEOGRAPH-8101 → CJK UNIFIED IDEOGRAPH-6713     # 
+
+F929 ; 6717 ;  SA      # ( 朗 → 朗 ) CJK COMPATIBILITY IDEOGRAPH-F929 → CJK UNIFIED IDEOGRAPH-6717       # 
+FA92 ; 6717 ;  SA      # ( 朗 → 朗 ) CJK COMPATIBILITY IDEOGRAPH-FA92 → CJK UNIFIED IDEOGRAPH-6717       # 
+2F8D8 ;        6717 ;  SA      # ( 朗 → 朗 ) CJK COMPATIBILITY IDEOGRAPH-2F8D8 → CJK UNIFIED IDEOGRAPH-6717     # 
+
+8127 ; 6718 ;  SA      # ( 脧 → 朘 ) CJK UNIFIED IDEOGRAPH-8127 → CJK UNIFIED IDEOGRAPH-6718     # 
+
+FA93 ; 671B ;  SA      # ( 望 → 望 ) CJK COMPATIBILITY IDEOGRAPH-FA93 → CJK UNIFIED IDEOGRAPH-671B       # 
+2F8D9 ;        671B ;  SA      # ( 望 → 望 ) CJK COMPATIBILITY IDEOGRAPH-2F8D9 → CJK UNIFIED IDEOGRAPH-671B     # 
+
+2F8DA ;        6721 ;  SA      # ( 朡 → 朡 ) CJK COMPATIBILITY IDEOGRAPH-2F8DA → CJK UNIFIED IDEOGRAPH-6721     # 
+
+81A7 ; 6723 ;  SA      # ( 膧 → 朣 ) CJK UNIFIED IDEOGRAPH-81A7 → CJK UNIFIED IDEOGRAPH-6723     # 
+
+2F4A ; 6728 ;  SA      #* ( ⽊ → 木 ) KANGXI RADICAL TREE → CJK UNIFIED IDEOGRAPH-6728   # 
+
+F9E1 ; 674E ;  SA      # ( 李 → 李 ) CJK COMPATIBILITY IDEOGRAPH-F9E1 → CJK UNIFIED IDEOGRAPH-674E       # 
+
+2F8DC ;        6753 ;  SA      # ( 杓 → 杓 ) CJK COMPATIBILITY IDEOGRAPH-2F8DC → CJK UNIFIED IDEOGRAPH-6753     # 
+
+FA94 ; 6756 ;  SA      # ( 杖 → 杖 ) CJK COMPATIBILITY IDEOGRAPH-FA94 → CJK UNIFIED IDEOGRAPH-6756       # 
+
+2F8DB ;        675E ;  SA      # ( 杞 → 杞 ) CJK COMPATIBILITY IDEOGRAPH-2F8DB → CJK UNIFIED IDEOGRAPH-675E     # 
+
+67FF ; 676E ;  SA      # ( 柿 → 杮 ) CJK UNIFIED IDEOGRAPH-67FF → CJK UNIFIED IDEOGRAPH-676E     # 
+
+F9C8 ; 677B ;  SA      # ( 杻 → 杻 ) CJK COMPATIBILITY IDEOGRAPH-F9C8 → CJK UNIFIED IDEOGRAPH-677B       # 
+
+2F8E0 ;        6785 ;  SA      # ( 枅 → 枅 ) CJK COMPATIBILITY IDEOGRAPH-2F8E0 → CJK UNIFIED IDEOGRAPH-6785     # 
+
+F9F4 ; 6797 ;  SA      # ( 林 → 林 ) CJK COMPATIBILITY IDEOGRAPH-F9F4 → CJK UNIFIED IDEOGRAPH-6797       # 
+
+F9C9 ; 67F3 ;  SA      # ( 柳 → 柳 ) CJK COMPATIBILITY IDEOGRAPH-F9C9 → CJK UNIFIED IDEOGRAPH-67F3       # 
+
+2F8DF ;        67FA ;  SA      # ( 柺 → 柺 ) CJK COMPATIBILITY IDEOGRAPH-2F8DF → CJK UNIFIED IDEOGRAPH-67FA     # 
+
+F9DA ; 6817 ;  SA      # ( 栗 → 栗 ) CJK COMPATIBILITY IDEOGRAPH-F9DA → CJK UNIFIED IDEOGRAPH-6817       # 
+
+2F8E5 ;        681F ;  SA      # ( 栟 → 栟 ) CJK COMPATIBILITY IDEOGRAPH-2F8E5 → CJK UNIFIED IDEOGRAPH-681F     # 
+
+2F8E1 ;        6852 ;  SA      # ( 桒 → 桒 ) CJK COMPATIBILITY IDEOGRAPH-2F8E1 → CJK UNIFIED IDEOGRAPH-6852     # 
+
+F97A ; 6881 ;  SA      # ( 梁 → 梁 ) CJK COMPATIBILITY IDEOGRAPH-F97A → CJK UNIFIED IDEOGRAPH-6881       # 
+
+FA44 ; 6885 ;  SA      # ( 梅 → 梅 ) CJK COMPATIBILITY IDEOGRAPH-FA44 → CJK UNIFIED IDEOGRAPH-6885       # 
+2F8E2 ;        6885 ;  SA      # ( 梅 → 梅 ) CJK COMPATIBILITY IDEOGRAPH-2F8E2 → CJK UNIFIED IDEOGRAPH-6885     # 
+
+2F8E4 ;        688E ;  SA      # ( 梎 → 梎 ) CJK COMPATIBILITY IDEOGRAPH-2F8E4 → CJK UNIFIED IDEOGRAPH-688E     # 
+
+F9E2 ; 68A8 ;  SA      # ( 梨 → 梨 ) CJK COMPATIBILITY IDEOGRAPH-F9E2 → CJK UNIFIED IDEOGRAPH-68A8       # 
+
+2F8E6 ;        6914 ;  SA      # ( 椔 → 椔 ) CJK COMPATIBILITY IDEOGRAPH-2F8E6 → CJK UNIFIED IDEOGRAPH-6914     # 
+
+2F8E8 ;        6942 ;  SA      # ( 楂 → 楂 ) CJK COMPATIBILITY IDEOGRAPH-2F8E8 → CJK UNIFIED IDEOGRAPH-6942     # 
+
+6A27 ; 699D ;  SA      # ( 樧 → 榝 ) CJK UNIFIED IDEOGRAPH-6A27 → CJK UNIFIED IDEOGRAPH-699D     # 
+
+2F8E9 ;        69A3 ;  SA      # ( 榣 → 榣 ) CJK COMPATIBILITY IDEOGRAPH-2F8E9 → CJK UNIFIED IDEOGRAPH-69A3     # 
+
+2F8EA ;        69EA ;  SA      # ( 槪 → 槪 ) CJK COMPATIBILITY IDEOGRAPH-2F8EA → CJK UNIFIED IDEOGRAPH-69EA     # 
+
+F914 ; 6A02 ;  SA      # ( 樂 → 樂 ) CJK COMPATIBILITY IDEOGRAPH-F914 → CJK UNIFIED IDEOGRAPH-6A02       # 
+F95C ; 6A02 ;  SA      # ( 樂 → 樂 ) CJK COMPATIBILITY IDEOGRAPH-F95C → CJK UNIFIED IDEOGRAPH-6A02       # 
+F9BF ; 6A02 ;  SA      # ( 樂 → 樂 ) CJK COMPATIBILITY IDEOGRAPH-F9BF → CJK UNIFIED IDEOGRAPH-6A02       # 
+
+F94C ; 6A13 ;  SA      # ( 樓 → 樓 ) CJK COMPATIBILITY IDEOGRAPH-F94C → CJK UNIFIED IDEOGRAPH-6A13       # 
+
+2F8EB ;        6AA8 ;  SA      # ( 檨 → 檨 ) CJK COMPATIBILITY IDEOGRAPH-2F8EB → CJK UNIFIED IDEOGRAPH-6AA8     # 
+
+F931 ; 6AD3 ;  SA      # ( 櫓 → 櫓 ) CJK COMPATIBILITY IDEOGRAPH-F931 → CJK UNIFIED IDEOGRAPH-6AD3       # 
+
+2F8ED ;        6ADB ;  SA      # ( 櫛 → 櫛 ) CJK COMPATIBILITY IDEOGRAPH-2F8ED → CJK UNIFIED IDEOGRAPH-6ADB     # 
+
+F91D ; 6B04 ;  SA      # ( 欄 → 欄 ) CJK COMPATIBILITY IDEOGRAPH-F91D → CJK UNIFIED IDEOGRAPH-6B04       # 
+
+2F4B ; 6B20 ;  SA      #* ( ⽋ → 欠 ) KANGXI RADICAL LACK → CJK UNIFIED IDEOGRAPH-6B20   # 
+
+2F8EF ;        6B21 ;  SA      # ( 次 → 次 ) CJK COMPATIBILITY IDEOGRAPH-2F8EF → CJK UNIFIED IDEOGRAPH-6B21     # 
+
+2F8F1 ;        6B54 ;  SA      # ( 歔 → 歔 ) CJK COMPATIBILITY IDEOGRAPH-2F8F1 → CJK UNIFIED IDEOGRAPH-6B54     # 
+
+2F4C ; 6B62 ;  SA      #* ( ⽌ → 止 ) KANGXI RADICAL STOP → CJK UNIFIED IDEOGRAPH-6B62   # 
+
+2EED ; 6B6F ;  SA      #* ( ⻭ → 歯 ) CJK RADICAL J-SIMPLIFIED TOOTH → CJK UNIFIED IDEOGRAPH-6B6F        # 
+
+2F8F3 ;        6B72 ;  SA      # ( 歲 → 歲 ) CJK COMPATIBILITY IDEOGRAPH-2F8F3 → CJK UNIFIED IDEOGRAPH-6B72     # 
+
+F98C ; 6B77 ;  SA      # ( 歷 → 歷 ) CJK COMPATIBILITY IDEOGRAPH-F98C → CJK UNIFIED IDEOGRAPH-6B77       # 
+
+FA95 ; 6B79 ;  SA      # ( 歹 → 歹 ) CJK COMPATIBILITY IDEOGRAPH-FA95 → CJK UNIFIED IDEOGRAPH-6B79       # 
+2F4D ; 6B79 ;  SA      #* ( ⽍ → 歹 ) KANGXI RADICAL DEATH → CJK UNIFIED IDEOGRAPH-6B79  # 
+
+2E9E ; 6B7A ;  SA      #* ( ⺞ → 歺 ) CJK RADICAL DEATH → CJK UNIFIED IDEOGRAPH-6B7A     # 
+
+2F8F4 ;        6B9F ;  SA      # ( 殟 → 殟 ) CJK COMPATIBILITY IDEOGRAPH-2F8F4 → CJK UNIFIED IDEOGRAPH-6B9F     # 
+
+F9A5 ; 6BAE ;  SA      # ( 殮 → 殮 ) CJK COMPATIBILITY IDEOGRAPH-F9A5 → CJK UNIFIED IDEOGRAPH-6BAE       # 
+
+2F4E ; 6BB3 ;  SA      #* ( ⽎ → 殳 ) KANGXI RADICAL WEAPON → CJK UNIFIED IDEOGRAPH-6BB3 # 
+
+F970 ; 6BBA ;  SA      # ( 殺 → 殺 ) CJK COMPATIBILITY IDEOGRAPH-F970 → CJK UNIFIED IDEOGRAPH-6BBA       # 
+FA96 ; 6BBA ;  SA      # ( 殺 → 殺 ) CJK COMPATIBILITY IDEOGRAPH-FA96 → CJK UNIFIED IDEOGRAPH-6BBA       # 
+2F8F5 ;        6BBA ;  SA      # ( 殺 → 殺 ) CJK COMPATIBILITY IDEOGRAPH-2F8F5 → CJK UNIFIED IDEOGRAPH-6BBA     # 
+
+2F8F6 ;        6BBB ;  SA      # ( 殻 → 殻 ) CJK COMPATIBILITY IDEOGRAPH-2F8F6 → CJK UNIFIED IDEOGRAPH-6BBB     # 
+
+2F4F ; 6BCB ;  SA      #* ( ⽏ → 毋 ) KANGXI RADICAL DO NOT → CJK UNIFIED IDEOGRAPH-6BCB # 
+
+2E9F ; 6BCD ;  SA      #* ( ⺟ → 母 ) CJK RADICAL MOTHER → CJK UNIFIED IDEOGRAPH-6BCD    # 
+
+2F50 ; 6BD4 ;  SA      #* ( ⽐ → 比 ) KANGXI RADICAL COMPARE → CJK UNIFIED IDEOGRAPH-6BD4        # 
+
+2F51 ; 6BDB ;  SA      #* ( ⽑ → 毛 ) KANGXI RADICAL FUR → CJK UNIFIED IDEOGRAPH-6BDB    # 
+
+2F52 ; 6C0F ;  SA      #* ( ⽒ → 氏 ) KANGXI RADICAL CLAN → CJK UNIFIED IDEOGRAPH-6C0F   # 
+
+2EA0 ; 6C11 ;  SA      #* ( ⺠ → 民 ) CJK RADICAL CIVILIAN → CJK UNIFIED IDEOGRAPH-6C11  # 
+
+2F53 ; 6C14 ;  SA      #* ( ⽓ → 气 ) KANGXI RADICAL STEAM → CJK UNIFIED IDEOGRAPH-6C14  # 
+
+2F54 ; 6C34 ;  SA      #* ( ⽔ → 水 ) KANGXI RADICAL WATER → CJK UNIFIED IDEOGRAPH-6C34  # 
+
+2EA1 ; 6C35 ;  SA      #* ( ⺡ → 氵 ) CJK RADICAL WATER ONE → CJK UNIFIED IDEOGRAPH-6C35 # 
+
+2EA2 ; 6C3A ;  SA      #* ( ⺢ → 氺 ) CJK RADICAL WATER TWO → CJK UNIFIED IDEOGRAPH-6C3A # 
+
+2F8FA ;        6C4E ;  SA      # ( 汎 → 汎 ) CJK COMPATIBILITY IDEOGRAPH-2F8FA → CJK UNIFIED IDEOGRAPH-6C4E     # 
+
+2F8FE ;        6C67 ;  SA      # ( 汧 → 汧 ) CJK COMPATIBILITY IDEOGRAPH-2F8FE → CJK UNIFIED IDEOGRAPH-6C67     # 
+
+F972 ; 6C88 ;  SA      # ( 沈 → 沈 ) CJK COMPATIBILITY IDEOGRAPH-F972 → CJK UNIFIED IDEOGRAPH-6C88       # 
+
+2F8FC ;        6CBF ;  SA      # ( 沿 → 沿 ) CJK COMPATIBILITY IDEOGRAPH-2F8FC → CJK UNIFIED IDEOGRAPH-6CBF     # 
+
+F968 ; 6CCC ;  SA      # ( 泌 → 泌 ) CJK COMPATIBILITY IDEOGRAPH-F968 → CJK UNIFIED IDEOGRAPH-6CCC       # 
+
+2F8FD ;        6CCD ;  SA      # ( 泍 → 泍 ) CJK COMPATIBILITY IDEOGRAPH-2F8FD → CJK UNIFIED IDEOGRAPH-6CCD     # 
+
+F9E3 ; 6CE5 ;  SA      # ( 泥 → 泥 ) CJK COMPATIBILITY IDEOGRAPH-F9E3 → CJK UNIFIED IDEOGRAPH-6CE5       # 
+
+2F8FF ;        6D16 ;  SA      # ( 洖 → 洖 ) CJK COMPATIBILITY IDEOGRAPH-2F8FF → CJK UNIFIED IDEOGRAPH-6D16     # 
+
+F915 ; 6D1B ;  SA      # ( 洛 → 洛 ) CJK COMPATIBILITY IDEOGRAPH-F915 → CJK UNIFIED IDEOGRAPH-6D1B       # 
+
+FA05 ; 6D1E ;  SA      # ( 洞 → 洞 ) CJK COMPATIBILITY IDEOGRAPH-FA05 → CJK UNIFIED IDEOGRAPH-6D1E       # 
+
+2F907 ;        6D34 ;  SA      # ( 洴 → 洴 ) CJK COMPATIBILITY IDEOGRAPH-2F907 → CJK UNIFIED IDEOGRAPH-6D34     # 
+
+2F900 ;        6D3E ;  SA      # ( 派 → 派 ) CJK COMPATIBILITY IDEOGRAPH-2F900 → CJK UNIFIED IDEOGRAPH-6D3E     # 
+
+F9CA ; 6D41 ;  SA      # ( 流 → 流 ) CJK COMPATIBILITY IDEOGRAPH-F9CA → CJK UNIFIED IDEOGRAPH-6D41       # 
+FA97 ; 6D41 ;  SA      # ( 流 → 流 ) CJK COMPATIBILITY IDEOGRAPH-FA97 → CJK UNIFIED IDEOGRAPH-6D41       # 
+2F902 ;        6D41 ;  SA      # ( 流 → 流 ) CJK COMPATIBILITY IDEOGRAPH-2F902 → CJK UNIFIED IDEOGRAPH-6D41     # 
+
+2F903 ;        6D69 ;  SA      # ( 浩 → 浩 ) CJK COMPATIBILITY IDEOGRAPH-2F903 → CJK UNIFIED IDEOGRAPH-6D69     # 
+
+F92A ; 6D6A ;  SA      # ( 浪 → 浪 ) CJK COMPATIBILITY IDEOGRAPH-F92A → CJK UNIFIED IDEOGRAPH-6D6A       # 
+
+FA45 ; 6D77 ;  SA      # ( 海 → 海 ) CJK COMPATIBILITY IDEOGRAPH-FA45 → CJK UNIFIED IDEOGRAPH-6D77       # 
+2F901 ;        6D77 ;  SA      # ( 海 → 海 ) CJK COMPATIBILITY IDEOGRAPH-2F901 → CJK UNIFIED IDEOGRAPH-6D77     # 
+
+2F904 ;        6D78 ;  SA      # ( 浸 → 浸 ) CJK COMPATIBILITY IDEOGRAPH-2F904 → CJK UNIFIED IDEOGRAPH-6D78     # 
+
+2F905 ;        6D85 ;  SA      # ( 涅 → 涅 ) CJK COMPATIBILITY IDEOGRAPH-2F905 → CJK UNIFIED IDEOGRAPH-6D85     # 
+
+F9F5 ; 6DCB ;  SA      # ( 淋 → 淋 ) CJK COMPATIBILITY IDEOGRAPH-F9F5 → CJK UNIFIED IDEOGRAPH-6DCB       # 
+
+F94D ; 6DDA ;  SA      # ( 淚 → 淚 ) CJK COMPATIBILITY IDEOGRAPH-F94D → CJK UNIFIED IDEOGRAPH-6DDA       # 
+
+F9D6 ; 6DEA ;  SA      # ( 淪 → 淪 ) CJK COMPATIBILITY IDEOGRAPH-F9D6 → CJK UNIFIED IDEOGRAPH-6DEA       # 
+
+2F90E ;        6DF9 ;  SA      # ( 淹 → 淹 ) CJK COMPATIBILITY IDEOGRAPH-2F90E → CJK UNIFIED IDEOGRAPH-6DF9     # 
+
+FA46 ; 6E1A ;  SA      # ( 渚 → 渚 ) CJK COMPATIBILITY IDEOGRAPH-FA46 → CJK UNIFIED IDEOGRAPH-6E1A       # 
+
+2F908 ;        6E2F ;  SA      # ( 港 → 港 ) CJK COMPATIBILITY IDEOGRAPH-2F908 → CJK UNIFIED IDEOGRAPH-6E2F     # 
+
+2F909 ;        6E6E ;  SA      # ( 湮 → 湮 ) CJK COMPATIBILITY IDEOGRAPH-2F909 → CJK UNIFIED IDEOGRAPH-6E6E     # 
+
+6F59 ; 6E88 ;  SA      # ( 潙 → 溈 ) CJK UNIFIED IDEOGRAPH-6F59 → CJK UNIFIED IDEOGRAPH-6E88     # 
+
+F9CB ; 6E9C ;  SA      # ( 溜 → 溜 ) CJK COMPATIBILITY IDEOGRAPH-F9CB → CJK UNIFIED IDEOGRAPH-6E9C       # 
+
+F9EC ; 6EBA ;  SA      # ( 溺 → 溺 ) CJK COMPATIBILITY IDEOGRAPH-F9EC → CJK UNIFIED IDEOGRAPH-6EBA       # 
+
+2F90C ;        6EC7 ;  SA      # ( 滇 → 滇 ) CJK COMPATIBILITY IDEOGRAPH-2F90C → CJK UNIFIED IDEOGRAPH-6EC7     # 
+
+FA99 ; 6ECB ;  SA      # ( 滋 → 滋 ) CJK COMPATIBILITY IDEOGRAPH-FA99 → CJK UNIFIED IDEOGRAPH-6ECB       # 
+2F90B ;        6ECB ;  SA      # ( 滋 → 滋 ) CJK COMPATIBILITY IDEOGRAPH-2F90B → CJK UNIFIED IDEOGRAPH-6ECB     # 
+
+F904 ; 6ED1 ;  SA      # ( 滑 → 滑 ) CJK COMPATIBILITY IDEOGRAPH-F904 → CJK UNIFIED IDEOGRAPH-6ED1       # 
+
+FA98 ; 6EDB ;  SA      # ( 滛 → 滛 ) CJK COMPATIBILITY IDEOGRAPH-FA98 → CJK UNIFIED IDEOGRAPH-6EDB       # 
+
+F94E ; 6F0F ;  SA      # ( 漏 → 漏 ) CJK COMPATIBILITY IDEOGRAPH-F94E → CJK UNIFIED IDEOGRAPH-6F0F       # 
+
+FA47 ; 6F22 ;  SA      # ( 漢 → 漢 ) CJK COMPATIBILITY IDEOGRAPH-FA47 → CJK UNIFIED IDEOGRAPH-6F22       # 
+FA9A ; 6F22 ;  SA      # ( 漢 → 漢 ) CJK COMPATIBILITY IDEOGRAPH-FA9A → CJK UNIFIED IDEOGRAPH-6F22       # 
+
+F992 ; 6F23 ;  SA      # ( 漣 → 漣 ) CJK COMPATIBILITY IDEOGRAPH-F992 → CJK UNIFIED IDEOGRAPH-6F23       # 
+
+2F90F ;        6F6E ;  SA      # ( 潮 → 潮 ) CJK COMPATIBILITY IDEOGRAPH-2F90F → CJK UNIFIED IDEOGRAPH-6F6E     # 
+
+2F912 ;        6FC6 ;  SA      # ( 濆 → 濆 ) CJK COMPATIBILITY IDEOGRAPH-2F912 → CJK UNIFIED IDEOGRAPH-6FC6     # 
+
+F922 ; 6FEB ;  SA      # ( 濫 → 濫 ) CJK COMPATIBILITY IDEOGRAPH-F922 → CJK UNIFIED IDEOGRAPH-6FEB       # 
+
+F984 ; 6FFE ;  SA      # ( 濾 → 濾 ) CJK COMPATIBILITY IDEOGRAPH-F984 → CJK UNIFIED IDEOGRAPH-6FFE       # 
+
+2F915 ;        701B ;  SA      # ( 瀛 → 瀛 ) CJK COMPATIBILITY IDEOGRAPH-2F915 → CJK UNIFIED IDEOGRAPH-701B     # 
+
+FA9B ; 701E ;  SA      # ( 瀞 → 瀞 ) CJK COMPATIBILITY IDEOGRAPH-FA9B → CJK UNIFIED IDEOGRAPH-701E       # 
+2F914 ;        701E ;  SA      # ( 瀞 → 瀞 ) CJK COMPATIBILITY IDEOGRAPH-2F914 → CJK UNIFIED IDEOGRAPH-701E     # 
+
+2F913 ;        7039 ;  SA      # ( 瀹 → 瀹 ) CJK COMPATIBILITY IDEOGRAPH-2F913 → CJK UNIFIED IDEOGRAPH-7039     # 
+
+2F917 ;        704A ;  SA      # ( 灊 → 灊 ) CJK COMPATIBILITY IDEOGRAPH-2F917 → CJK UNIFIED IDEOGRAPH-704A     # 
+
+2F55 ; 706B ;  SA      #* ( ⽕ → 火 ) KANGXI RADICAL FIRE → CJK UNIFIED IDEOGRAPH-706B   # 
+
+2EA3 ; 706C ;  SA      #* ( ⺣ → 灬 ) CJK RADICAL FIRE → CJK UNIFIED IDEOGRAPH-706C      # 
+
+2F835 ;        7070 ;  SA      # ( 灰 → 灰 ) CJK COMPATIBILITY IDEOGRAPH-2F835 → CJK UNIFIED IDEOGRAPH-7070     # 
+
+2F919 ;        7077 ;  SA      # ( 灷 → 灷 ) CJK COMPATIBILITY IDEOGRAPH-2F919 → CJK UNIFIED IDEOGRAPH-7077     # 
+
+2F918 ;        707D ;  SA      # ( 災 → 災 ) CJK COMPATIBILITY IDEOGRAPH-2F918 → CJK UNIFIED IDEOGRAPH-707D     # 
+
+F9FB ; 7099 ;  SA      # ( 炙 → 炙 ) CJK COMPATIBILITY IDEOGRAPH-F9FB → CJK UNIFIED IDEOGRAPH-7099       # 
+
+2F91A ;        70AD ;  SA      # ( 炭 → 炭 ) CJK COMPATIBILITY IDEOGRAPH-2F91A → CJK UNIFIED IDEOGRAPH-70AD     # 
+
+F99F ; 70C8 ;  SA      # ( 烈 → 烈 ) CJK COMPATIBILITY IDEOGRAPH-F99F → CJK UNIFIED IDEOGRAPH-70C8       # 
+
+F916 ; 70D9 ;  SA      # ( 烙 → 烙 ) CJK COMPATIBILITY IDEOGRAPH-F916 → CJK UNIFIED IDEOGRAPH-70D9       # 
+
+2F91C ;        7145 ;  SA      # ( 煅 → 煅 ) CJK COMPATIBILITY IDEOGRAPH-2F91C → CJK UNIFIED IDEOGRAPH-7145     # 
+
+F993 ; 7149 ;  SA      # ( 煉 → 煉 ) CJK COMPATIBILITY IDEOGRAPH-F993 → CJK UNIFIED IDEOGRAPH-7149       # 
+
+FA48 ; 716E ;  SA      # ( 煮 → 煮 ) CJK COMPATIBILITY IDEOGRAPH-FA48 → CJK UNIFIED IDEOGRAPH-716E       # 
+FA9C ; 716E ;  SA      # ( 煮 → 煮 ) CJK COMPATIBILITY IDEOGRAPH-FA9C → CJK UNIFIED IDEOGRAPH-716E       # 
+
+2F91E ;        719C ;  SA      # ( 熜 → 熜 ) CJK COMPATIBILITY IDEOGRAPH-2F91E → CJK UNIFIED IDEOGRAPH-719C     # 
+
+F9C0 ; 71CE ;  SA      # ( 燎 → 燎 ) CJK COMPATIBILITY IDEOGRAPH-F9C0 → CJK UNIFIED IDEOGRAPH-71CE       # 
+
+F9EE ; 71D0 ;  SA      # ( 燐 → 燐 ) CJK COMPATIBILITY IDEOGRAPH-F9EE → CJK UNIFIED IDEOGRAPH-71D0       # 
+
+F932 ; 7210 ;  SA      # ( 爐 → 爐 ) CJK COMPATIBILITY IDEOGRAPH-F932 → CJK UNIFIED IDEOGRAPH-7210       # 
+
+F91E ; 721B ;  SA      # ( 爛 → 爛 ) CJK COMPATIBILITY IDEOGRAPH-F91E → CJK UNIFIED IDEOGRAPH-721B       # 
+
+2F920 ;        7228 ;  SA      # ( 爨 → 爨 ) CJK COMPATIBILITY IDEOGRAPH-2F920 → CJK UNIFIED IDEOGRAPH-7228     # 
+
+2F56 ; 722A ;  SA      #* ( ⽖ → 爪 ) KANGXI RADICAL CLAW → CJK UNIFIED IDEOGRAPH-722A   # 
+
+FA49 ; 722B ;  SA      # ( 爫 → 爫 ) CJK COMPATIBILITY IDEOGRAPH-FA49 → CJK UNIFIED IDEOGRAPH-722B       # 
+2EA4 ; 722B ;  SA      #* ( ⺤ → 爫 ) CJK RADICAL PAW ONE → CJK UNIFIED IDEOGRAPH-722B   # 
+
+FA9E ; 7235 ;  SA      # ( 爵 → 爵 ) CJK COMPATIBILITY IDEOGRAPH-FA9E → CJK UNIFIED IDEOGRAPH-7235       # 
+2F921 ;        7235 ;  SA      # ( 爵 → 爵 ) CJK COMPATIBILITY IDEOGRAPH-2F921 → CJK UNIFIED IDEOGRAPH-7235     # 
+
+2F57 ; 7236 ;  SA      #* ( ⽗ → 父 ) KANGXI RADICAL FATHER → CJK UNIFIED IDEOGRAPH-7236 # 
+
+2F58 ; 723B ;  SA      #* ( ⽘ → 爻 ) KANGXI RADICAL DOUBLE X → CJK UNIFIED IDEOGRAPH-723B       # 
+
+2F59 ; 723F ;  SA      #* ( ⽙ → 爿 ) KANGXI RADICAL HALF TREE TRUNK → CJK UNIFIED IDEOGRAPH-723F        # 
+
+2F5A ; 7247 ;  SA      #* ( ⽚ → 片 ) KANGXI RADICAL SLICE → CJK UNIFIED IDEOGRAPH-7247  # 
+
+2F922 ;        7250 ;  SA      # ( 牐 → 牐 ) CJK COMPATIBILITY IDEOGRAPH-2F922 → CJK UNIFIED IDEOGRAPH-7250     # 
+
+2F5B ; 7259 ;  SA      #* ( ⽛ → 牙 ) KANGXI RADICAL FANG → CJK UNIFIED IDEOGRAPH-7259   # 
+
+2F5C ; 725B ;  SA      #* ( ⽜ → 牛 ) KANGXI RADICAL COW → CJK UNIFIED IDEOGRAPH-725B    # 
+
+F946 ; 7262 ;  SA      # ( 牢 → 牢 ) CJK COMPATIBILITY IDEOGRAPH-F946 → CJK UNIFIED IDEOGRAPH-7262       # 
+
+2F924 ;        7280 ;  SA      # ( 犀 → 犀 ) CJK COMPATIBILITY IDEOGRAPH-2F924 → CJK UNIFIED IDEOGRAPH-7280     # 
+
+2F925 ;        7295 ;  SA      # ( 犕 → 犕 ) CJK COMPATIBILITY IDEOGRAPH-2F925 → CJK UNIFIED IDEOGRAPH-7295     # 
+
+2F5D ; 72AC ;  SA      #* ( ⽝ → 犬 ) KANGXI RADICAL DOG → CJK UNIFIED IDEOGRAPH-72AC    # 
+
+2EA8 ; 72AD ;  SA      #* ( ⺨ → 犭 ) CJK RADICAL DOG → CJK UNIFIED IDEOGRAPH-72AD       # 
+
+FA9F ; 72AF ;  SA      # ( 犯 → 犯 ) CJK COMPATIBILITY IDEOGRAPH-FA9F → CJK UNIFIED IDEOGRAPH-72AF       # 
+
+F9FA ; 72C0 ;  SA      # ( 狀 → 狀 ) CJK COMPATIBILITY IDEOGRAPH-F9FA → CJK UNIFIED IDEOGRAPH-72C0       # 
+
+F92B ; 72FC ;  SA      # ( 狼 → 狼 ) CJK COMPATIBILITY IDEOGRAPH-F92B → CJK UNIFIED IDEOGRAPH-72FC       # 
+
+FA16 ; 732A ;  SA      # ( 猪 → 猪 ) CJK COMPATIBILITY IDEOGRAPH-FA16 → CJK UNIFIED IDEOGRAPH-732A       # 
+FAA0 ; 732A ;  SA      # ( 猪 → 猪 ) CJK COMPATIBILITY IDEOGRAPH-FAA0 → CJK UNIFIED IDEOGRAPH-732A       # 
+
+F9A7 ; 7375 ;  SA      # ( 獵 → 獵 ) CJK COMPATIBILITY IDEOGRAPH-F9A7 → CJK UNIFIED IDEOGRAPH-7375       # 
+
+2F928 ;        737A ;  SA      # ( 獺 → 獺 ) CJK COMPATIBILITY IDEOGRAPH-2F928 → CJK UNIFIED IDEOGRAPH-737A     # 
+
+2F5E ; 7384 ;  SA      #* ( ⽞ → 玄 ) KANGXI RADICAL PROFOUND → CJK UNIFIED IDEOGRAPH-7384       # 
+
+F961 ; 7387 ;  SA      # ( 率 → 率 ) CJK COMPATIBILITY IDEOGRAPH-F961 → CJK UNIFIED IDEOGRAPH-7387       # 
+F9DB ; 7387 ;  SA      # ( 率 → 率 ) CJK COMPATIBILITY IDEOGRAPH-F9DB → CJK UNIFIED IDEOGRAPH-7387       # 
+
+2F5F ; 7389 ;  SA      #* ( ⽟ → 玉 ) KANGXI RADICAL JADE → CJK UNIFIED IDEOGRAPH-7389   # 
+
+2F929 ;        738B ;  SA      # ( 王 → 王 ) CJK COMPATIBILITY IDEOGRAPH-2F929 → CJK UNIFIED IDEOGRAPH-738B     # 
+
+2F92B ;        73A5 ;  SA      # ( 玥 → 玥 ) CJK COMPATIBILITY IDEOGRAPH-2F92B → CJK UNIFIED IDEOGRAPH-73A5     # 
+
+F9AD ; 73B2 ;  SA      # ( 玲 → 玲 ) CJK COMPATIBILITY IDEOGRAPH-F9AD → CJK UNIFIED IDEOGRAPH-73B2       # 
+
+F917 ; 73DE ;  SA      # ( 珞 → 珞 ) CJK COMPATIBILITY IDEOGRAPH-F917 → CJK UNIFIED IDEOGRAPH-73DE       # 
+
+F9E4 ; 7406 ;  SA      # ( 理 → 理 ) CJK COMPATIBILITY IDEOGRAPH-F9E4 → CJK UNIFIED IDEOGRAPH-7406       # 
+
+F9CC ; 7409 ;  SA      # ( 琉 → 琉 ) CJK COMPATIBILITY IDEOGRAPH-F9CC → CJK UNIFIED IDEOGRAPH-7409       # 
+
+FA4A ; 7422 ;  SA      # ( 琢 → 琢 ) CJK COMPATIBILITY IDEOGRAPH-FA4A → CJK UNIFIED IDEOGRAPH-7422       # 
+
+2F92E ;        7447 ;  SA      # ( 瑇 → 瑇 ) CJK COMPATIBILITY IDEOGRAPH-2F92E → CJK UNIFIED IDEOGRAPH-7447     # 
+
+2F92F ;        745C ;  SA      # ( 瑜 → 瑜 ) CJK COMPATIBILITY IDEOGRAPH-2F92F → CJK UNIFIED IDEOGRAPH-745C     # 
+
+F9AE ; 7469 ;  SA      # ( 瑩 → 瑩 ) CJK COMPATIBILITY IDEOGRAPH-F9AE → CJK UNIFIED IDEOGRAPH-7469       # 
+
+FAA1 ; 7471 ;  SA      # ( 瑱 → 瑱 ) CJK COMPATIBILITY IDEOGRAPH-FAA1 → CJK UNIFIED IDEOGRAPH-7471       # 
+2F930 ;        7471 ;  SA      # ( 瑱 → 瑱 ) CJK COMPATIBILITY IDEOGRAPH-2F930 → CJK UNIFIED IDEOGRAPH-7471     # 
+
+2F931 ;        7485 ;  SA      # ( 璅 → 璅 ) CJK COMPATIBILITY IDEOGRAPH-2F931 → CJK UNIFIED IDEOGRAPH-7485     # 
+
+F994 ; 7489 ;  SA      # ( 璉 → 璉 ) CJK COMPATIBILITY IDEOGRAPH-F994 → CJK UNIFIED IDEOGRAPH-7489       # 
+
+F9EF ; 7498 ;  SA      # ( 璘 → 璘 ) CJK COMPATIBILITY IDEOGRAPH-F9EF → CJK UNIFIED IDEOGRAPH-7498       # 
+
+2F932 ;        74CA ;  SA      # ( 瓊 → 瓊 ) CJK COMPATIBILITY IDEOGRAPH-2F932 → CJK UNIFIED IDEOGRAPH-74CA     # 
+
+2F60 ; 74DC ;  SA      #* ( ⽠ → 瓜 ) KANGXI RADICAL MELON → CJK UNIFIED IDEOGRAPH-74DC  # 
+
+2F61 ; 74E6 ;  SA      #* ( ⽡ → 瓦 ) KANGXI RADICAL TILE → CJK UNIFIED IDEOGRAPH-74E6   # 
+
+FAA2 ; 7506 ;  SA      # ( 甆 → 甆 ) CJK COMPATIBILITY IDEOGRAPH-FAA2 → CJK UNIFIED IDEOGRAPH-7506       # 
+
+2F62 ; 7518 ;  SA      #* ( ⽢ → 甘 ) KANGXI RADICAL SWEET → CJK UNIFIED IDEOGRAPH-7518  # 
+
+2F63 ; 751F ;  SA      #* ( ⽣ → 生 ) KANGXI RADICAL LIFE → CJK UNIFIED IDEOGRAPH-751F   # 
+
+2F934 ;        7524 ;  SA      # ( 甤 → 甤 ) CJK COMPATIBILITY IDEOGRAPH-2F934 → CJK UNIFIED IDEOGRAPH-7524     # 
+
+2F64 ; 7528 ;  SA      #* ( ⽤ → 用 ) KANGXI RADICAL USE → CJK UNIFIED IDEOGRAPH-7528    # 
+
+2F65 ; 7530 ;  SA      #* ( ⽥ → 田 ) KANGXI RADICAL FIELD → CJK UNIFIED IDEOGRAPH-7530  # 
+
+FAA3 ; 753B ;  SA      # ( 画 → 画 ) CJK COMPATIBILITY IDEOGRAPH-FAA3 → CJK UNIFIED IDEOGRAPH-753B       # 
+
+2F936 ;        753E ;  SA      # ( 甾 → 甾 ) CJK COMPATIBILITY IDEOGRAPH-2F936 → CJK UNIFIED IDEOGRAPH-753E     # 
+
+F9CD ; 7559 ;  SA      # ( 留 → 留 ) CJK COMPATIBILITY IDEOGRAPH-F9CD → CJK UNIFIED IDEOGRAPH-7559       # 
+
+F976 ; 7565 ;  SA      # ( 略 → 略 ) CJK COMPATIBILITY IDEOGRAPH-F976 → CJK UNIFIED IDEOGRAPH-7565       # 
+
+F962 ; 7570 ;  SA      # ( 異 → 異 ) CJK COMPATIBILITY IDEOGRAPH-F962 → CJK UNIFIED IDEOGRAPH-7570       # 
+2F938 ;        7570 ;  SA      # ( 異 → 異 ) CJK COMPATIBILITY IDEOGRAPH-2F938 → CJK UNIFIED IDEOGRAPH-7570     # 
+
+2F66 ; 758B ;  SA      #* ( ⽦ → 疋 ) KANGXI RADICAL BOLT OF CLOTH → CJK UNIFIED IDEOGRAPH-758B  # 
+
+2F67 ; 7592 ;  SA      #* ( ⽧ → 疒 ) KANGXI RADICAL SICKNESS → CJK UNIFIED IDEOGRAPH-7592       # 
+
+F9E5 ; 75E2 ;  SA      # ( 痢 → 痢 ) CJK COMPATIBILITY IDEOGRAPH-F9E5 → CJK UNIFIED IDEOGRAPH-75E2       # 
+
+2F93A ;        7610 ;  SA      # ( 瘐 → 瘐 ) CJK COMPATIBILITY IDEOGRAPH-2F93A → CJK UNIFIED IDEOGRAPH-7610     # 
+
+FAA4 ; 761D ;  SA      # ( 瘝 → 瘝 ) CJK COMPATIBILITY IDEOGRAPH-FAA4 → CJK UNIFIED IDEOGRAPH-761D       # 
+
+FAA5 ; 761F ;  SA      # ( 瘟 → 瘟 ) CJK COMPATIBILITY IDEOGRAPH-FAA5 → CJK UNIFIED IDEOGRAPH-761F       # 
+
+F9C1 ; 7642 ;  SA      # ( 療 → 療 ) CJK COMPATIBILITY IDEOGRAPH-F9C1 → CJK UNIFIED IDEOGRAPH-7642       # 
+
+F90E ; 7669 ;  SA      # ( 癩 → 癩 ) CJK COMPATIBILITY IDEOGRAPH-F90E → CJK UNIFIED IDEOGRAPH-7669       # 
+
+2F68 ; 7676 ;  SA      #* ( ⽨ → 癶 ) KANGXI RADICAL DOTTED TENT → CJK UNIFIED IDEOGRAPH-7676    # 
+
+2F69 ; 767D ;  SA      #* ( ⽩ → 白 ) KANGXI RADICAL WHITE → CJK UNIFIED IDEOGRAPH-767D  # 
+
+2F6A ; 76AE ;  SA      #* ( ⽪ → 皮 ) KANGXI RADICAL SKIN → CJK UNIFIED IDEOGRAPH-76AE   # 
+
+2F6B ; 76BF ;  SA      #* ( ⽫ → 皿 ) KANGXI RADICAL DISH → CJK UNIFIED IDEOGRAPH-76BF   # 
+
+FA17 ; 76CA ;  SA      # ( 益 → 益 ) CJK COMPATIBILITY IDEOGRAPH-FA17 → CJK UNIFIED IDEOGRAPH-76CA       # 
+FAA6 ; 76CA ;  SA      # ( 益 → 益 ) CJK COMPATIBILITY IDEOGRAPH-FAA6 → CJK UNIFIED IDEOGRAPH-76CA       # 
+
+FAA7 ; 76DB ;  SA      # ( 盛 → 盛 ) CJK COMPATIBILITY IDEOGRAPH-FAA7 → CJK UNIFIED IDEOGRAPH-76DB       # 
+
+F933 ; 76E7 ;  SA      # ( 盧 → 盧 ) CJK COMPATIBILITY IDEOGRAPH-F933 → CJK UNIFIED IDEOGRAPH-76E7       # 
+
+2F6C ; 76EE ;  SA      #* ( ⽬ → 目 ) KANGXI RADICAL EYE → CJK UNIFIED IDEOGRAPH-76EE    # 
+
+FAA8 ; 76F4 ;  SA      # ( 直 → 直 ) CJK COMPATIBILITY IDEOGRAPH-FAA8 → CJK UNIFIED IDEOGRAPH-76F4       # 
+2F940 ;        76F4 ;  SA      # ( 直 → 直 ) CJK COMPATIBILITY IDEOGRAPH-2F940 → CJK UNIFIED IDEOGRAPH-76F4     # 
+
+F96D ; 7701 ;  SA      # ( 省 → 省 ) CJK COMPATIBILITY IDEOGRAPH-F96D → CJK UNIFIED IDEOGRAPH-7701       # 
+
+2F945 ;        771E ;  SA      # ( 眞 → 眞 ) CJK COMPATIBILITY IDEOGRAPH-2F945 → CJK UNIFIED IDEOGRAPH-771E     # 
+
+2F946 ;        771F ;  SA      # ( 真 → 真 ) CJK COMPATIBILITY IDEOGRAPH-2F946 → CJK UNIFIED IDEOGRAPH-771F     # 
+2F947 ;        771F ;  SA      # ( 真 → 真 ) CJK COMPATIBILITY IDEOGRAPH-2F947 → CJK UNIFIED IDEOGRAPH-771F     # 
+
+FAAA ; 7740 ;  SA      # ( 着 → 着 ) CJK COMPATIBILITY IDEOGRAPH-FAAA → CJK UNIFIED IDEOGRAPH-7740       # 
+
+FAA9 ; 774A ;  SA      # ( 睊 → 睊 ) CJK COMPATIBILITY IDEOGRAPH-FAA9 → CJK UNIFIED IDEOGRAPH-774A       # 
+2F948 ;        774A ;  SA      # ( 睊 → 睊 ) CJK COMPATIBILITY IDEOGRAPH-2F948 → CJK UNIFIED IDEOGRAPH-774A     # 
+
+2F94A ;        778B ;  SA      # ( 瞋 → 瞋 ) CJK COMPATIBILITY IDEOGRAPH-2F94A → CJK UNIFIED IDEOGRAPH-778B     # 
+
+FA9D ; 77A7 ;  SA      # ( 瞧 → 瞧 ) CJK COMPATIBILITY IDEOGRAPH-FA9D → CJK UNIFIED IDEOGRAPH-77A7       # 
+
+2F6D ; 77DB ;  SA      #* ( ⽭ → 矛 ) KANGXI RADICAL SPEAR → CJK UNIFIED IDEOGRAPH-77DB  # 
+
+2F6E ; 77E2 ;  SA      #* ( ⽮ → 矢 ) KANGXI RADICAL ARROW → CJK UNIFIED IDEOGRAPH-77E2  # 
+
+2F6F ; 77F3 ;  SA      #* ( ⽯ → 石 ) KANGXI RADICAL STONE → CJK UNIFIED IDEOGRAPH-77F3  # 
+
+784F ; 7814 ;  SA      # ( 硏 → 研 ) CJK UNIFIED IDEOGRAPH-784F → CJK UNIFIED IDEOGRAPH-7814     # 
+
+2F94E ;        784E ;  SA      # ( 硎 → 硎 ) CJK COMPATIBILITY IDEOGRAPH-2F94E → CJK UNIFIED IDEOGRAPH-784E     # 
+
+F9CE ; 786B ;  SA      # ( 硫 → 硫 ) CJK COMPATIBILITY IDEOGRAPH-F9CE → CJK UNIFIED IDEOGRAPH-786B       # 
+
+F93B ; 788C ;  SA      # ( 碌 → 碌 ) CJK COMPATIBILITY IDEOGRAPH-F93B → CJK UNIFIED IDEOGRAPH-788C       # 
+2F94F ;        788C ;  SA      # ( 碌 → 碌 ) CJK COMPATIBILITY IDEOGRAPH-2F94F → CJK UNIFIED IDEOGRAPH-788C     # 
+
+FA4B ; 7891 ;  SA      # ( 碑 → 碑 ) CJK COMPATIBILITY IDEOGRAPH-FA4B → CJK UNIFIED IDEOGRAPH-7891       # 
+
+F947 ; 78CA ;  SA      # ( 磊 → 磊 ) CJK COMPATIBILITY IDEOGRAPH-F947 → CJK UNIFIED IDEOGRAPH-78CA       # 
+
+FAAB ; 78CC ;  SA      # ( 磌 → 磌 ) CJK COMPATIBILITY IDEOGRAPH-FAAB → CJK UNIFIED IDEOGRAPH-78CC       # 
+2F950 ;        78CC ;  SA      # ( 磌 → 磌 ) CJK COMPATIBILITY IDEOGRAPH-2F950 → CJK UNIFIED IDEOGRAPH-78CC     # 
+
+F964 ; 78FB ;  SA      # ( 磻 → 磻 ) CJK COMPATIBILITY IDEOGRAPH-F964 → CJK UNIFIED IDEOGRAPH-78FB       # 
+
+F985 ; 792A ;  SA      # ( 礪 → 礪 ) CJK COMPATIBILITY IDEOGRAPH-F985 → CJK UNIFIED IDEOGRAPH-792A       # 
+
+2F70 ; 793A ;  SA      #* ( ⽰ → 示 ) KANGXI RADICAL SPIRIT → CJK UNIFIED IDEOGRAPH-793A # 
+
+2EAD ; 793B ;  SA      #* ( ⺭ → 礻 ) CJK RADICAL SPIRIT TWO → CJK UNIFIED IDEOGRAPH-793B        # 
+
+FA18 ; 793C ;  SA      # ( 礼 → 礼 ) CJK COMPATIBILITY IDEOGRAPH-FA18 → CJK UNIFIED IDEOGRAPH-793C       # 
+
+FA4C ; 793E ;  SA      # ( 社 → 社 ) CJK COMPATIBILITY IDEOGRAPH-FA4C → CJK UNIFIED IDEOGRAPH-793E       # 
+
+FA4E ; 7948 ;  SA      # ( 祈 → 祈 ) CJK COMPATIBILITY IDEOGRAPH-FA4E → CJK UNIFIED IDEOGRAPH-7948       # 
+
+FA4D ; 7949 ;  SA      # ( 祉 → 祉 ) CJK COMPATIBILITY IDEOGRAPH-FA4D → CJK UNIFIED IDEOGRAPH-7949       # 
+
+FA4F ; 7950 ;  SA      # ( 祐 → 祐 ) CJK COMPATIBILITY IDEOGRAPH-FA4F → CJK UNIFIED IDEOGRAPH-7950       # 
+
+FA50 ; 7956 ;  SA      # ( 祖 → 祖 ) CJK COMPATIBILITY IDEOGRAPH-FA50 → CJK UNIFIED IDEOGRAPH-7956       # 
+2F953 ;        7956 ;  SA      # ( 祖 → 祖 ) CJK COMPATIBILITY IDEOGRAPH-2F953 → CJK UNIFIED IDEOGRAPH-7956     # 
+
+FA51 ; 795D ;  SA      # ( 祝 → 祝 ) CJK COMPATIBILITY IDEOGRAPH-FA51 → CJK UNIFIED IDEOGRAPH-795D       # 
+
+FA19 ; 795E ;  SA      # ( 神 → 神 ) CJK COMPATIBILITY IDEOGRAPH-FA19 → CJK UNIFIED IDEOGRAPH-795E       # 
+
+FA1A ; 7965 ;  SA      # ( 祥 → 祥 ) CJK COMPATIBILITY IDEOGRAPH-FA1A → CJK UNIFIED IDEOGRAPH-7965       # 
+
+F93C ; 797F ;  SA      # ( 祿 → 祿 ) CJK COMPATIBILITY IDEOGRAPH-F93C → CJK UNIFIED IDEOGRAPH-797F       # 
+
+FA52 ; 798D ;  SA      # ( 禍 → 禍 ) CJK COMPATIBILITY IDEOGRAPH-FA52 → CJK UNIFIED IDEOGRAPH-798D       # 
+
+FA53 ; 798E ;  SA      # ( 禎 → 禎 ) CJK COMPATIBILITY IDEOGRAPH-FA53 → CJK UNIFIED IDEOGRAPH-798E       # 
+
+FA1B ; 798F ;  SA      # ( 福 → 福 ) CJK COMPATIBILITY IDEOGRAPH-FA1B → CJK UNIFIED IDEOGRAPH-798F       # 
+2F956 ;        798F ;  SA      # ( 福 → 福 ) CJK COMPATIBILITY IDEOGRAPH-2F956 → CJK UNIFIED IDEOGRAPH-798F     # 
+
+F9B6 ; 79AE ;  SA      # ( 禮 → 禮 ) CJK COMPATIBILITY IDEOGRAPH-F9B6 → CJK UNIFIED IDEOGRAPH-79AE       # 
+
+2F71 ; 79B8 ;  SA      #* ( ⽱ → 禸 ) KANGXI RADICAL TRACK → CJK UNIFIED IDEOGRAPH-79B8  # 
+
+2F72 ; 79BE ;  SA      #* ( ⽲ → 禾 ) KANGXI RADICAL GRAIN → CJK UNIFIED IDEOGRAPH-79BE  # 
+
+F995 ; 79CA ;  SA      # ( 秊 → 秊 ) CJK COMPATIBILITY IDEOGRAPH-F995 → CJK UNIFIED IDEOGRAPH-79CA       # 
+
+2F957 ;        79EB ;  SA      # ( 秫 → 秫 ) CJK COMPATIBILITY IDEOGRAPH-2F957 → CJK UNIFIED IDEOGRAPH-79EB     # 
+
+F956 ; 7A1C ;  SA      # ( 稜 → 稜 ) CJK COMPATIBILITY IDEOGRAPH-F956 → CJK UNIFIED IDEOGRAPH-7A1C       # 
+
+FA54 ; 7A40 ;  SA      # ( 穀 → 穀 ) CJK COMPATIBILITY IDEOGRAPH-FA54 → CJK UNIFIED IDEOGRAPH-7A40       # 
+2F959 ;        7A40 ;  SA      # ( 穀 → 穀 ) CJK COMPATIBILITY IDEOGRAPH-2F959 → CJK UNIFIED IDEOGRAPH-7A40     # 
+
+2F95A ;        7A4A ;  SA      # ( 穊 → 穊 ) CJK COMPATIBILITY IDEOGRAPH-2F95A → CJK UNIFIED IDEOGRAPH-7A4A     # 
+
+2F95B ;        7A4F ;  SA      # ( 穏 → 穏 ) CJK COMPATIBILITY IDEOGRAPH-2F95B → CJK UNIFIED IDEOGRAPH-7A4F     # 
+
+2F73 ; 7A74 ;  SA      #* ( ⽳ → 穴 ) KANGXI RADICAL CAVE → CJK UNIFIED IDEOGRAPH-7A74   # 
+
+FA55 ; 7A81 ;  SA      # ( 突 → 突 ) CJK COMPATIBILITY IDEOGRAPH-FA55 → CJK UNIFIED IDEOGRAPH-7A81       # 
+
+FAAC ; 7AB1 ;  SA      # ( 窱 → 窱 ) CJK COMPATIBILITY IDEOGRAPH-FAAC → CJK UNIFIED IDEOGRAPH-7AB1       # 
+
+F9F7 ; 7ACB ;  SA      # ( 立 → 立 ) CJK COMPATIBILITY IDEOGRAPH-F9F7 → CJK UNIFIED IDEOGRAPH-7ACB       # 
+2F74 ; 7ACB ;  SA      #* ( ⽴ → 立 ) KANGXI RADICAL STAND → CJK UNIFIED IDEOGRAPH-7ACB  # 
+
+2EEF ; 7ADC ;  SA      #* ( ⻯ → 竜 ) CJK RADICAL J-SIMPLIFIED DRAGON → CJK UNIFIED IDEOGRAPH-7ADC       # 
+
+2F95F ;        7AEE ;  SA      # ( 竮 → 竮 ) CJK COMPATIBILITY IDEOGRAPH-2F95F → CJK UNIFIED IDEOGRAPH-7AEE     # 
+
+2F75 ; 7AF9 ;  SA      #* ( ⽵ → 竹 ) KANGXI RADICAL BAMBOO → CJK UNIFIED IDEOGRAPH-7AF9 # 
+
+F9F8 ; 7B20 ;  SA      # ( 笠 → 笠 ) CJK COMPATIBILITY IDEOGRAPH-F9F8 → CJK UNIFIED IDEOGRAPH-7B20       # 
+
+FA56 ; 7BC0 ;  SA      # ( 節 → 節 ) CJK COMPATIBILITY IDEOGRAPH-FA56 → CJK UNIFIED IDEOGRAPH-7BC0       # 
+FAAD ; 7BC0 ;  SA      # ( 節 → 節 ) CJK COMPATIBILITY IDEOGRAPH-FAAD → CJK UNIFIED IDEOGRAPH-7BC0       # 
+
+2F962 ;        7BC6 ;  SA      # ( 篆 → 篆 ) CJK COMPATIBILITY IDEOGRAPH-2F962 → CJK UNIFIED IDEOGRAPH-7BC6     # 
+
+2F963 ;        7BC9 ;  SA      # ( 築 → 築 ) CJK COMPATIBILITY IDEOGRAPH-2F963 → CJK UNIFIED IDEOGRAPH-7BC9     # 
+
+F9A6 ; 7C3E ;  SA      # ( 簾 → 簾 ) CJK COMPATIBILITY IDEOGRAPH-F9A6 → CJK UNIFIED IDEOGRAPH-7C3E       # 
+
+F944 ; 7C60 ;  SA      # ( 籠 → 籠 ) CJK COMPATIBILITY IDEOGRAPH-F944 → CJK UNIFIED IDEOGRAPH-7C60       # 
+
+2F76 ; 7C73 ;  SA      #* ( ⽶ → 米 ) KANGXI RADICAL RICE → CJK UNIFIED IDEOGRAPH-7C73   # 
+
+FAAE ; 7C7B ;  SA      # ( 类 → 类 ) CJK COMPATIBILITY IDEOGRAPH-FAAE → CJK UNIFIED IDEOGRAPH-7C7B       # 
+
+F9F9 ; 7C92 ;  SA      # ( 粒 → 粒 ) CJK COMPATIBILITY IDEOGRAPH-F9F9 → CJK UNIFIED IDEOGRAPH-7C92       # 
+
+FA1D ; 7CBE ;  SA      # ( 精 → 精 ) CJK COMPATIBILITY IDEOGRAPH-FA1D → CJK UNIFIED IDEOGRAPH-7CBE       # 
+
+2F966 ;        7CD2 ;  SA      # ( 糒 → 糒 ) CJK COMPATIBILITY IDEOGRAPH-2F966 → CJK UNIFIED IDEOGRAPH-7CD2     # 
+
+FA03 ; 7CD6 ;  SA      # ( 糖 → 糖 ) CJK COMPATIBILITY IDEOGRAPH-FA03 → CJK UNIFIED IDEOGRAPH-7CD6       # 
+
+2F969 ;        7CE3 ;  SA      # ( 糣 → 糣 ) CJK COMPATIBILITY IDEOGRAPH-2F969 → CJK UNIFIED IDEOGRAPH-7CE3     # 
+
+F97B ; 7CE7 ;  SA      # ( 糧 → 糧 ) CJK COMPATIBILITY IDEOGRAPH-F97B → CJK UNIFIED IDEOGRAPH-7CE7       # 
+
+2F968 ;        7CE8 ;  SA      # ( 糨 → 糨 ) CJK COMPATIBILITY IDEOGRAPH-2F968 → CJK UNIFIED IDEOGRAPH-7CE8     # 
+
+2F77 ; 7CF8 ;  SA      #* ( ⽷ → 糸 ) KANGXI RADICAL SILK → CJK UNIFIED IDEOGRAPH-7CF8   # 
+
+2EAF ; 7CF9 ;  SA      #* ( ⺯ → 糹 ) CJK RADICAL SILK → CJK UNIFIED IDEOGRAPH-7CF9      # 
+
+2F96A ;        7D00 ;  SA      # ( 紀 → 紀 ) CJK COMPATIBILITY IDEOGRAPH-2F96A → CJK UNIFIED IDEOGRAPH-7D00     # 
+
+F9CF ; 7D10 ;  SA      # ( 紐 → 紐 ) CJK COMPATIBILITY IDEOGRAPH-F9CF → CJK UNIFIED IDEOGRAPH-7D10       # 
+
+F96A ; 7D22 ;  SA      # ( 索 → 索 ) CJK COMPATIBILITY IDEOGRAPH-F96A → CJK UNIFIED IDEOGRAPH-7D22       # 
+
+F94F ; 7D2F ;  SA      # ( 累 → 累 ) CJK COMPATIBILITY IDEOGRAPH-F94F → CJK UNIFIED IDEOGRAPH-7D2F       # 
+
+7D76 ; 7D55 ;  SA      # ( 絶 → 絕 ) CJK UNIFIED IDEOGRAPH-7D76 → CJK UNIFIED IDEOGRAPH-7D55     # 
+
+FAAF ; 7D5B ;  SA      # ( 絛 → 絛 ) CJK COMPATIBILITY IDEOGRAPH-FAAF → CJK UNIFIED IDEOGRAPH-7D5B       # 
+
+2F96C ;        7D63 ;  SA      # ( 絣 → 絣 ) CJK COMPATIBILITY IDEOGRAPH-2F96C → CJK UNIFIED IDEOGRAPH-7D63     # 
+
+F93D ; 7DA0 ;  SA      # ( 綠 → 綠 ) CJK COMPATIBILITY IDEOGRAPH-F93D → CJK UNIFIED IDEOGRAPH-7DA0       # 
+
+F957 ; 7DBE ;  SA      # ( 綾 → 綾 ) CJK COMPATIBILITY IDEOGRAPH-F957 → CJK UNIFIED IDEOGRAPH-7DBE       # 
+
+2F96E ;        7DC7 ;  SA      # ( 緇 → 緇 ) CJK COMPATIBILITY IDEOGRAPH-2F96E → CJK UNIFIED IDEOGRAPH-7DC7     # 
+
+F996 ; 7DF4 ;  SA      # ( 練 → 練 ) CJK COMPATIBILITY IDEOGRAPH-F996 → CJK UNIFIED IDEOGRAPH-7DF4       # 
+FA57 ; 7DF4 ;  SA      # ( 練 → 練 ) CJK COMPATIBILITY IDEOGRAPH-FA57 → CJK UNIFIED IDEOGRAPH-7DF4       # 
+FAB0 ; 7DF4 ;  SA      # ( 練 → 練 ) CJK COMPATIBILITY IDEOGRAPH-FAB0 → CJK UNIFIED IDEOGRAPH-7DF4       # 
+
+2F96F ;        7E02 ;  SA      # ( 縂 → 縂 ) CJK COMPATIBILITY IDEOGRAPH-2F96F → CJK UNIFIED IDEOGRAPH-7E02     # 
+
+FA58 ; 7E09 ;  SA      # ( 縉 → 縉 ) CJK COMPATIBILITY IDEOGRAPH-FA58 → CJK UNIFIED IDEOGRAPH-7E09       # 
+
+F950 ; 7E37 ;  SA      # ( 縷 → 縷 ) CJK COMPATIBILITY IDEOGRAPH-F950 → CJK UNIFIED IDEOGRAPH-7E37       # 
+
+FA59 ; 7E41 ;  SA      # ( 繁 → 繁 ) CJK COMPATIBILITY IDEOGRAPH-FA59 → CJK UNIFIED IDEOGRAPH-7E41       # 
+
+2F970 ;        7E45 ;  SA      # ( 繅 → 繅 ) CJK COMPATIBILITY IDEOGRAPH-2F970 → CJK UNIFIED IDEOGRAPH-7E45     # 
+
+2F78 ; 7F36 ;  SA      #* ( ⽸ → 缶 ) KANGXI RADICAL JAR → CJK UNIFIED IDEOGRAPH-7F36    # 
+
+FAB1 ; 7F3E ;  SA      # ( 缾 → 缾 ) CJK COMPATIBILITY IDEOGRAPH-FAB1 → CJK UNIFIED IDEOGRAPH-7F3E       # 
+
+2F79 ; 7F51 ;  SA      #* ( ⽹ → 网 ) KANGXI RADICAL NET → CJK UNIFIED IDEOGRAPH-7F51    # 
+
+2EAB ; 7F52 ;  SA      #* ( ⺫ → 罒 ) CJK RADICAL EYE → CJK UNIFIED IDEOGRAPH-7F52       # 
+2EB2 ; 7F52 ;  SA      #* ( ⺲ → 罒 ) CJK RADICAL NET TWO → CJK UNIFIED IDEOGRAPH-7F52   # 
+
+2EB1 ; 7F53 ;  SA      #* ( ⺱ → 罓 ) CJK RADICAL NET ONE → CJK UNIFIED IDEOGRAPH-7F53   # 
+
+FA5A ; 7F72 ;  SA      # ( 署 → 署 ) CJK COMPATIBILITY IDEOGRAPH-FA5A → CJK UNIFIED IDEOGRAPH-7F72       # 
+
+F9E6 ; 7F79 ;  SA      # ( 罹 → 罹 ) CJK COMPATIBILITY IDEOGRAPH-F9E6 → CJK UNIFIED IDEOGRAPH-7F79       # 
+
+2F976 ;        7F7A ;  SA      # ( 罺 → 罺 ) CJK COMPATIBILITY IDEOGRAPH-2F976 → CJK UNIFIED IDEOGRAPH-7F7A     # 
+
+F90F ; 7F85 ;  SA      # ( 羅 → 羅 ) CJK COMPATIBILITY IDEOGRAPH-F90F → CJK UNIFIED IDEOGRAPH-7F85       # 
+
+2F7A ; 7F8A ;  SA      #* ( ⽺ → 羊 ) KANGXI RADICAL SHEEP → CJK UNIFIED IDEOGRAPH-7F8A  # 
+
+2F978 ;        7F95 ;  SA      # ( 羕 → 羕 ) CJK COMPATIBILITY IDEOGRAPH-2F978 → CJK UNIFIED IDEOGRAPH-7F95     # 
+
+F9AF ; 7F9A ;  SA      # ( 羚 → 羚 ) CJK COMPATIBILITY IDEOGRAPH-F9AF → CJK UNIFIED IDEOGRAPH-7F9A       # 
+
+FA1E ; 7FBD ;  SA      # ( 羽 → 羽 ) CJK COMPATIBILITY IDEOGRAPH-FA1E → CJK UNIFIED IDEOGRAPH-7FBD       # 
+2F7B ; 7FBD ;  SA      #* ( ⽻ → 羽 ) KANGXI RADICAL FEATHER → CJK UNIFIED IDEOGRAPH-7FBD        # 
+
+2F979 ;        7FFA ;  SA      # ( 翺 → 翺 ) CJK COMPATIBILITY IDEOGRAPH-2F979 → CJK UNIFIED IDEOGRAPH-7FFA     # 
+
+F934 ; 8001 ;  SA      # ( 老 → 老 ) CJK COMPATIBILITY IDEOGRAPH-F934 → CJK UNIFIED IDEOGRAPH-8001       # 
+2F7C ; 8001 ;  SA      #* ( ⽼ → 老 ) KANGXI RADICAL OLD → CJK UNIFIED IDEOGRAPH-8001    # 
+
+2EB9 ; 8002 ;  SA      #* ( ⺹ → 耂 ) CJK RADICAL OLD → CJK UNIFIED IDEOGRAPH-8002       # 
+
+FA5B ; 8005 ;  SA      # ( 者 → 者 ) CJK COMPATIBILITY IDEOGRAPH-FA5B → CJK UNIFIED IDEOGRAPH-8005       # 
+FAB2 ; 8005 ;  SA      # ( 者 → 者 ) CJK COMPATIBILITY IDEOGRAPH-FAB2 → CJK UNIFIED IDEOGRAPH-8005       # 
+2F97A ;        8005 ;  SA      # ( 者 → 者 ) CJK COMPATIBILITY IDEOGRAPH-2F97A → CJK UNIFIED IDEOGRAPH-8005     # 
+
+2F7D ; 800C ;  SA      #* ( ⽽ → 而 ) KANGXI RADICAL AND → CJK UNIFIED IDEOGRAPH-800C    # 
+
+2F7E ; 8012 ;  SA      #* ( ⽾ → 耒 ) KANGXI RADICAL PLOW → CJK UNIFIED IDEOGRAPH-8012   # 
+
+2F7F ; 8033 ;  SA      #* ( ⽿ → 耳 ) KANGXI RADICAL EAR → CJK UNIFIED IDEOGRAPH-8033    # 
+
+F9B0 ; 8046 ;  SA      # ( 聆 → 聆 ) CJK COMPATIBILITY IDEOGRAPH-F9B0 → CJK UNIFIED IDEOGRAPH-8046       # 
+
+2F97D ;        8060 ;  SA      # ( 聠 → 聠 ) CJK COMPATIBILITY IDEOGRAPH-2F97D → CJK UNIFIED IDEOGRAPH-8060     # 
+
+F997 ; 806F ;  SA      # ( 聯 → 聯 ) CJK COMPATIBILITY IDEOGRAPH-F997 → CJK UNIFIED IDEOGRAPH-806F       # 
+
+2F97F ;        8070 ;  SA      # ( 聰 → 聰 ) CJK COMPATIBILITY IDEOGRAPH-2F97F → CJK UNIFIED IDEOGRAPH-8070     # 
+
+F945 ; 807E ;  SA      # ( 聾 → 聾 ) CJK COMPATIBILITY IDEOGRAPH-F945 → CJK UNIFIED IDEOGRAPH-807E       # 
+
+2F80 ; 807F ;  SA      #* ( ⾀ → 聿 ) KANGXI RADICAL BRUSH → CJK UNIFIED IDEOGRAPH-807F  # 
+
+2EBA ; 8080 ;  SA      #* ( ⺺ → 肀 ) CJK RADICAL BRUSH ONE → CJK UNIFIED IDEOGRAPH-8080 # 
+
+2F81 ; 8089 ;  SA      #* ( ⾁ → 肉 ) KANGXI RADICAL MEAT → CJK UNIFIED IDEOGRAPH-8089   # 
+
+F953 ; 808B ;  SA      # ( 肋 → 肋 ) CJK COMPATIBILITY IDEOGRAPH-F953 → CJK UNIFIED IDEOGRAPH-808B       # 
+
+2F8D6 ;        80AD ;  SA      # ( 肭 → 肭 ) CJK COMPATIBILITY IDEOGRAPH-2F8D6 → CJK UNIFIED IDEOGRAPH-80AD     # 
+
+2F982 ;        80B2 ;  SA      # ( 育 → 育 ) CJK COMPATIBILITY IDEOGRAPH-2F982 → CJK UNIFIED IDEOGRAPH-80B2     # 
+
+8141 ; 80FC ;  SA      # ( 腁 → 胼 ) CJK UNIFIED IDEOGRAPH-8141 → CJK UNIFIED IDEOGRAPH-80FC     # 
+
+2F983 ;        8103 ;  SA      # ( 脃 → 脃 ) CJK COMPATIBILITY IDEOGRAPH-2F983 → CJK UNIFIED IDEOGRAPH-8103     # 
+
+2F985 ;        813E ;  SA      # ( 脾 → 脾 ) CJK COMPATIBILITY IDEOGRAPH-2F985 → CJK UNIFIED IDEOGRAPH-813E     # 
+
+F926 ; 81D8 ;  SA      # ( 臘 → 臘 ) CJK COMPATIBILITY IDEOGRAPH-F926 → CJK UNIFIED IDEOGRAPH-81D8       # 
+
+2F82 ; 81E3 ;  SA      #* ( ⾂ → 臣 ) KANGXI RADICAL MINISTER → CJK UNIFIED IDEOGRAPH-81E3       # 
+
+F9F6 ; 81E8 ;  SA      # ( 臨 → 臨 ) CJK COMPATIBILITY IDEOGRAPH-F9F6 → CJK UNIFIED IDEOGRAPH-81E8       # 
+
+2F83 ; 81EA ;  SA      #* ( ⾃ → 自 ) KANGXI RADICAL SELF → CJK UNIFIED IDEOGRAPH-81EA   # 
+
+FA5C ; 81ED ;  SA      # ( 臭 → 臭 ) CJK COMPATIBILITY IDEOGRAPH-FA5C → CJK UNIFIED IDEOGRAPH-81ED       # 
+
+2F84 ; 81F3 ;  SA      #* ( ⾄ → 至 ) KANGXI RADICAL ARRIVE → CJK UNIFIED IDEOGRAPH-81F3 # 
+
+2F85 ; 81FC ;  SA      #* ( ⾅ → 臼 ) KANGXI RADICAL MORTAR → CJK UNIFIED IDEOGRAPH-81FC # 
+
+2F893 ;        8201 ;  SA      # ( 舁 → 舁 ) CJK COMPATIBILITY IDEOGRAPH-2F893 → CJK UNIFIED IDEOGRAPH-8201     # 
+2F98B ;        8201 ;  SA      # ( 舁 → 舁 ) CJK COMPATIBILITY IDEOGRAPH-2F98B → CJK UNIFIED IDEOGRAPH-8201     # 
+
+2F98C ;        8204 ;  SA      # ( 舄 → 舄 ) CJK COMPATIBILITY IDEOGRAPH-2F98C → CJK UNIFIED IDEOGRAPH-8204     # 
+
+2F86 ; 820C ;  SA      #* ( ⾆ → 舌 ) KANGXI RADICAL TONGUE → CJK UNIFIED IDEOGRAPH-820C # 
+
+FA6D ; 8218 ;  SA      # ( 舘 → 舘 ) CJK COMPATIBILITY IDEOGRAPH-FA6D → CJK UNIFIED IDEOGRAPH-8218       # 
+
+2F87 ; 821B ;  SA      #* ( ⾇ → 舛 ) KANGXI RADICAL OPPOSE → CJK UNIFIED IDEOGRAPH-821B # 
+
+2F88 ; 821F ;  SA      #* ( ⾈ → 舟 ) KANGXI RADICAL BOAT → CJK UNIFIED IDEOGRAPH-821F   # 
+
+2F89 ; 826E ;  SA      #* ( ⾉ → 艮 ) KANGXI RADICAL STOPPING → CJK UNIFIED IDEOGRAPH-826E       # 
+
+F97C ; 826F ;  SA      # ( 良 → 良 ) CJK COMPATIBILITY IDEOGRAPH-F97C → CJK UNIFIED IDEOGRAPH-826F       # 
+
+2F8A ; 8272 ;  SA      #* ( ⾊ → 色 ) KANGXI RADICAL COLOR → CJK UNIFIED IDEOGRAPH-8272  # 
+
+2F8B ; 8278 ;  SA      #* ( ⾋ → 艸 ) KANGXI RADICAL GRASS → CJK UNIFIED IDEOGRAPH-8278  # 
+
+FA5D ; 8279 ;  SA      # ( 艹 → 艹 ) CJK COMPATIBILITY IDEOGRAPH-FA5D → CJK UNIFIED IDEOGRAPH-8279       # 
+FA5E ; 8279 ;  SA      # ( 艹 → 艹 ) CJK COMPATIBILITY IDEOGRAPH-FA5E → CJK UNIFIED IDEOGRAPH-8279       # 
+2EBE ; 8279 ;  SA      #* ( ⺾ → 艹 ) CJK RADICAL GRASS ONE → CJK UNIFIED IDEOGRAPH-8279 # 
+2EBF ; 8279 ;  SA      #* ( ⺿ → 艹 ) CJK RADICAL GRASS TWO → CJK UNIFIED IDEOGRAPH-8279 # →艹→
+2EC0 ; 8279 ;  SA      #* ( ⻀ → 艹 ) CJK RADICAL GRASS THREE → CJK UNIFIED IDEOGRAPH-8279       # →艹→
+
+2F990 ;        828B ;  SA      # ( 芋 → 芋 ) CJK COMPATIBILITY IDEOGRAPH-2F990 → CJK UNIFIED IDEOGRAPH-828B     # 
+
+2F98F ;        8291 ;  SA      # ( 芑 → 芑 ) CJK COMPATIBILITY IDEOGRAPH-2F98F → CJK UNIFIED IDEOGRAPH-8291     # 
+
+2F991 ;        829D ;  SA      # ( 芝 → 芝 ) CJK COMPATIBILITY IDEOGRAPH-2F991 → CJK UNIFIED IDEOGRAPH-829D     # 
+
+2F993 ;        82B1 ;  SA      # ( 花 → 花 ) CJK COMPATIBILITY IDEOGRAPH-2F993 → CJK UNIFIED IDEOGRAPH-82B1     # 
+
+2F994 ;        82B3 ;  SA      # ( 芳 → 芳 ) CJK COMPATIBILITY IDEOGRAPH-2F994 → CJK UNIFIED IDEOGRAPH-82B3     # 
+
+2F995 ;        82BD ;  SA      # ( 芽 → 芽 ) CJK COMPATIBILITY IDEOGRAPH-2F995 → CJK UNIFIED IDEOGRAPH-82BD     # 
+
+F974 ; 82E5 ;  SA      # ( 若 → 若 ) CJK COMPATIBILITY IDEOGRAPH-F974 → CJK UNIFIED IDEOGRAPH-82E5       # 
+2F998 ;        82E5 ;  SA      # ( 若 → 若 ) CJK COMPATIBILITY IDEOGRAPH-2F998 → CJK UNIFIED IDEOGRAPH-82E5     # 
+
+2F996 ;        82E6 ;  SA      # ( 苦 → 苦 ) CJK COMPATIBILITY IDEOGRAPH-2F996 → CJK UNIFIED IDEOGRAPH-82E6     # 
+
+2F999 ;        831D ;  SA      # ( 茝 → 茝 ) CJK COMPATIBILITY IDEOGRAPH-2F999 → CJK UNIFIED IDEOGRAPH-831D     # 
+
+2F99C ;        8323 ;  SA      # ( 茣 → 茣 ) CJK COMPATIBILITY IDEOGRAPH-2F99C → CJK UNIFIED IDEOGRAPH-8323     # 
+
+F9FE ; 8336 ;  SA      # ( 茶 → 茶 ) CJK COMPATIBILITY IDEOGRAPH-F9FE → CJK UNIFIED IDEOGRAPH-8336       # 
+
+FAB3 ; 8352 ;  SA      # ( 荒 → 荒 ) CJK COMPATIBILITY IDEOGRAPH-FAB3 → CJK UNIFIED IDEOGRAPH-8352       # 
+
+2F9A0 ;        8353 ;  SA      # ( 荓 → 荓 ) CJK COMPATIBILITY IDEOGRAPH-2F9A0 → CJK UNIFIED IDEOGRAPH-8353     # 
+
+2F99A ;        8363 ;  SA      # ( 荣 → 荣 ) CJK COMPATIBILITY IDEOGRAPH-2F99A → CJK UNIFIED IDEOGRAPH-8363     # 
+
+2F99B ;        83AD ;  SA      # ( 莭 → 莭 ) CJK COMPATIBILITY IDEOGRAPH-2F99B → CJK UNIFIED IDEOGRAPH-83AD     # 
+
+2F99D ;        83BD ;  SA      # ( 莽 → 莽 ) CJK COMPATIBILITY IDEOGRAPH-2F99D → CJK UNIFIED IDEOGRAPH-83BD     # 
+
+F93E ; 83C9 ;  SA      # ( 菉 → 菉 ) CJK COMPATIBILITY IDEOGRAPH-F93E → CJK UNIFIED IDEOGRAPH-83C9       # 
+
+2F9A1 ;        83CA ;  SA      # ( 菊 → 菊 ) CJK COMPATIBILITY IDEOGRAPH-2F9A1 → CJK UNIFIED IDEOGRAPH-83CA     # 
+
+2F9A2 ;        83CC ;  SA      # ( 菌 → 菌 ) CJK COMPATIBILITY IDEOGRAPH-2F9A2 → CJK UNIFIED IDEOGRAPH-83CC     # 
+
+2F9A3 ;        83DC ;  SA      # ( 菜 → 菜 ) CJK COMPATIBILITY IDEOGRAPH-2F9A3 → CJK UNIFIED IDEOGRAPH-83DC     # 
+
+2F99E ;        83E7 ;  SA      # ( 菧 → 菧 ) CJK COMPATIBILITY IDEOGRAPH-2F99E → CJK UNIFIED IDEOGRAPH-83E7     # 
+
+FAB4 ; 83EF ;  SA      # ( 華 → 華 ) CJK COMPATIBILITY IDEOGRAPH-FAB4 → CJK UNIFIED IDEOGRAPH-83EF       # 
+
+F958 ; 83F1 ;  SA      # ( 菱 → 菱 ) CJK COMPATIBILITY IDEOGRAPH-F958 → CJK UNIFIED IDEOGRAPH-83F1       # 
+
+F918 ; 843D ;  SA      # ( 落 → 落 ) CJK COMPATIBILITY IDEOGRAPH-F918 → CJK UNIFIED IDEOGRAPH-843D       # 
+
+F96E ; 8449 ;  SA      # ( 葉 → 葉 ) CJK COMPATIBILITY IDEOGRAPH-F96E → CJK UNIFIED IDEOGRAPH-8449       # 
+
+FA5F ; 8457 ;  SA      # ( 著 → 著 ) CJK COMPATIBILITY IDEOGRAPH-FA5F → CJK UNIFIED IDEOGRAPH-8457       # 
+2F99F ;        8457 ;  SA      # ( 著 → 著 ) CJK COMPATIBILITY IDEOGRAPH-2F99F → CJK UNIFIED IDEOGRAPH-8457     # 
+
+853F ; 848D ;  SA      # ( 蔿 → 蒍 ) CJK UNIFIED IDEOGRAPH-853F → CJK UNIFIED IDEOGRAPH-848D     # 
+
+F999 ; 84EE ;  SA      # ( 蓮 → 蓮 ) CJK COMPATIBILITY IDEOGRAPH-F999 → CJK UNIFIED IDEOGRAPH-84EE       # 
+
+2F9A8 ;        84F1 ;  SA      # ( 蓱 → 蓱 ) CJK COMPATIBILITY IDEOGRAPH-2F9A8 → CJK UNIFIED IDEOGRAPH-84F1     # 
+
+2F9A9 ;        84F3 ;  SA      # ( 蓳 → 蓳 ) CJK COMPATIBILITY IDEOGRAPH-2F9A9 → CJK UNIFIED IDEOGRAPH-84F3     # 
+
+F9C2 ; 84FC ;  SA      # ( 蓼 → 蓼 ) CJK COMPATIBILITY IDEOGRAPH-F9C2 → CJK UNIFIED IDEOGRAPH-84FC       # 
+
+2F9AA ;        8516 ;  SA      # ( 蔖 → 蔖 ) CJK COMPATIBILITY IDEOGRAPH-2F9AA → CJK UNIFIED IDEOGRAPH-8516     # 
+
+2F9AC ;        8564 ;  SA      # ( 蕤 → 蕤 ) CJK COMPATIBILITY IDEOGRAPH-2F9AC → CJK UNIFIED IDEOGRAPH-8564     # 
+
+F923 ; 85CD ;  SA      # ( 藍 → 藍 ) CJK COMPATIBILITY IDEOGRAPH-F923 → CJK UNIFIED IDEOGRAPH-85CD       # 
+
+F9F0 ; 85FA ;  SA      # ( 藺 → 藺 ) CJK COMPATIBILITY IDEOGRAPH-F9F0 → CJK UNIFIED IDEOGRAPH-85FA       # 
+
+F935 ; 8606 ;  SA      # ( 蘆 → 蘆 ) CJK COMPATIBILITY IDEOGRAPH-F935 → CJK UNIFIED IDEOGRAPH-8606       # 
+
+FA20 ; 8612 ;  SA      # ( 蘒 → 蘒 ) CJK COMPATIBILITY IDEOGRAPH-FA20 → CJK UNIFIED IDEOGRAPH-8612       # 
+
+F91F ; 862D ;  SA      # ( 蘭 → 蘭 ) CJK COMPATIBILITY IDEOGRAPH-F91F → CJK UNIFIED IDEOGRAPH-862D       # 
+
+8641 ; 8637 ;  SA      # ( 虁 → 蘷 ) CJK UNIFIED IDEOGRAPH-8641 → CJK UNIFIED IDEOGRAPH-8637     # 
+
+F910 ; 863F ;  SA      # ( 蘿 → 蘿 ) CJK COMPATIBILITY IDEOGRAPH-F910 → CJK UNIFIED IDEOGRAPH-863F       # 
+
+2F8C ; 864D ;  SA      #* ( ⾌ → 虍 ) KANGXI RADICAL TIGER → CJK UNIFIED IDEOGRAPH-864D  # 
+
+2EC1 ; 864E ;  SA      #* ( ⻁ → 虎 ) CJK RADICAL TIGER → CJK UNIFIED IDEOGRAPH-864E     # 
+
+2F9B3 ;        8650 ;  SA      # ( 虐 → 虐 ) CJK COMPATIBILITY IDEOGRAPH-2F9B3 → CJK UNIFIED IDEOGRAPH-8650     # 
+
+F936 ; 865C ;  SA      # ( 虜 → 虜 ) CJK COMPATIBILITY IDEOGRAPH-F936 → CJK UNIFIED IDEOGRAPH-865C       # 
+2F9B4 ;        865C ;  SA      # ( 虜 → 虜 ) CJK COMPATIBILITY IDEOGRAPH-2F9B4 → CJK UNIFIED IDEOGRAPH-865C     # 
+
+2F9B5 ;        8667 ;  SA      # ( 虧 → 虧 ) CJK COMPATIBILITY IDEOGRAPH-2F9B5 → CJK UNIFIED IDEOGRAPH-8667     # 
+
+2F9B6 ;        8669 ;  SA      # ( 虩 → 虩 ) CJK COMPATIBILITY IDEOGRAPH-2F9B6 → CJK UNIFIED IDEOGRAPH-8669     # 
+
+2F8D ; 866B ;  SA      #* ( ⾍ → 虫 ) KANGXI RADICAL INSECT → CJK UNIFIED IDEOGRAPH-866B # 
+
+2F9B8 ;        8688 ;  SA      # ( 蚈 → 蚈 ) CJK COMPATIBILITY IDEOGRAPH-2F9B8 → CJK UNIFIED IDEOGRAPH-8688     # 
+
+2F9B7 ;        86A9 ;  SA      # ( 蚩 → 蚩 ) CJK COMPATIBILITY IDEOGRAPH-2F9B7 → CJK UNIFIED IDEOGRAPH-86A9     # 
+
+2F9BA ;        86E2 ;  SA      # ( 蛢 → 蛢 ) CJK COMPATIBILITY IDEOGRAPH-2F9BA → CJK UNIFIED IDEOGRAPH-86E2     # 
+
+2F9B9 ;        870E ;  SA      # ( 蜎 → 蜎 ) CJK COMPATIBILITY IDEOGRAPH-2F9B9 → CJK UNIFIED IDEOGRAPH-870E     # 
+
+2F9BC ;        8728 ;  SA      # ( 蜨 → 蜨 ) CJK COMPATIBILITY IDEOGRAPH-2F9BC → CJK UNIFIED IDEOGRAPH-8728     # 
+
+2F9BD ;        876B ;  SA      # ( 蝫 → 蝫 ) CJK COMPATIBILITY IDEOGRAPH-2F9BD → CJK UNIFIED IDEOGRAPH-876B     # 
+
+FAB5 ; 8779 ;  SA      # ( 蝹 → 蝹 ) CJK COMPATIBILITY IDEOGRAPH-FAB5 → CJK UNIFIED IDEOGRAPH-8779       # 
+2F9BB ;        8779 ;  SA      # ( 蝹 → 蝹 ) CJK COMPATIBILITY IDEOGRAPH-2F9BB → CJK UNIFIED IDEOGRAPH-8779     # 
+
+2F9BE ;        8786 ;  SA      # ( 螆 → 螆 ) CJK COMPATIBILITY IDEOGRAPH-2F9BE → CJK UNIFIED IDEOGRAPH-8786     # 
+
+F911 ; 87BA ;  SA      # ( 螺 → 螺 ) CJK COMPATIBILITY IDEOGRAPH-F911 → CJK UNIFIED IDEOGRAPH-87BA       # 
+
+2F9C0 ;        87E1 ;  SA      # ( 蟡 → 蟡 ) CJK COMPATIBILITY IDEOGRAPH-2F9C0 → CJK UNIFIED IDEOGRAPH-87E1     # 
+
+2F9C1 ;        8801 ;  SA      # ( 蠁 → 蠁 ) CJK COMPATIBILITY IDEOGRAPH-2F9C1 → CJK UNIFIED IDEOGRAPH-8801     # 
+
+F927 ; 881F ;  SA      # ( 蠟 → 蠟 ) CJK COMPATIBILITY IDEOGRAPH-F927 → CJK UNIFIED IDEOGRAPH-881F       # 
+
+2F8E ; 8840 ;  SA      #* ( ⾎ → 血 ) KANGXI RADICAL BLOOD → CJK UNIFIED IDEOGRAPH-8840  # 
+
+FA08 ; 884C ;  SA      # ( 行 → 行 ) CJK COMPATIBILITY IDEOGRAPH-FA08 → CJK UNIFIED IDEOGRAPH-884C       # 
+2F8F ; 884C ;  SA      #* ( ⾏ → 行 ) KANGXI RADICAL WALK ENCLOSURE → CJK UNIFIED IDEOGRAPH-884C # 
+
+2F9C3 ;        8860 ;  SA      # ( 衠 → 衠 ) CJK COMPATIBILITY IDEOGRAPH-2F9C3 → CJK UNIFIED IDEOGRAPH-8860     # 
+
+2F9C4 ;        8863 ;  SA      # ( 衣 → 衣 ) CJK COMPATIBILITY IDEOGRAPH-2F9C4 → CJK UNIFIED IDEOGRAPH-8863     # 
+2F90 ; 8863 ;  SA      #* ( ⾐ → 衣 ) KANGXI RADICAL CLOTHES → CJK UNIFIED IDEOGRAPH-8863        # 
+
+2EC2 ; 8864 ;  SA      #* ( ⻂ → 衤 ) CJK RADICAL CLOTHES → CJK UNIFIED IDEOGRAPH-8864   # 
+
+F9A0 ; 88C2 ;  SA      # ( 裂 → 裂 ) CJK COMPATIBILITY IDEOGRAPH-F9A0 → CJK UNIFIED IDEOGRAPH-88C2       # 
+
+F9E7 ; 88CF ;  SA      # ( 裏 → 裏 ) CJK COMPATIBILITY IDEOGRAPH-F9E7 → CJK UNIFIED IDEOGRAPH-88CF       # 
+
+2F9C6 ;        88D7 ;  SA      # ( 裗 → 裗 ) CJK COMPATIBILITY IDEOGRAPH-2F9C6 → CJK UNIFIED IDEOGRAPH-88D7     # 
+
+2F9C7 ;        88DE ;  SA      # ( 裞 → 裞 ) CJK COMPATIBILITY IDEOGRAPH-2F9C7 → CJK UNIFIED IDEOGRAPH-88DE     # 
+
+F9E8 ; 88E1 ;  SA      # ( 裡 → 裡 ) CJK COMPATIBILITY IDEOGRAPH-F9E8 → CJK UNIFIED IDEOGRAPH-88E1       # 
+
+F912 ; 88F8 ;  SA      # ( 裸 → 裸 ) CJK COMPATIBILITY IDEOGRAPH-F912 → CJK UNIFIED IDEOGRAPH-88F8       # 
+
+2F9C9 ;        88FA ;  SA      # ( 裺 → 裺 ) CJK COMPATIBILITY IDEOGRAPH-2F9C9 → CJK UNIFIED IDEOGRAPH-88FA     # 
+
+FA60 ; 8910 ;  SA      # ( 褐 → 褐 ) CJK COMPATIBILITY IDEOGRAPH-FA60 → CJK UNIFIED IDEOGRAPH-8910       # 
+
+FAB6 ; 8941 ;  SA      # ( 襁 → 襁 ) CJK COMPATIBILITY IDEOGRAPH-FAB6 → CJK UNIFIED IDEOGRAPH-8941       # 
+
+F924 ; 8964 ;  SA      # ( 襤 → 襤 ) CJK COMPATIBILITY IDEOGRAPH-F924 → CJK UNIFIED IDEOGRAPH-8964       # 
+
+2F91 ; 897E ;  SA      #* ( ⾑ → 襾 ) KANGXI RADICAL WEST → CJK UNIFIED IDEOGRAPH-897E   # 
+
+2EC4 ; 897F ;  SA      #* ( ⻄ → 西 ) CJK RADICAL WEST TWO → CJK UNIFIED IDEOGRAPH-897F  # 
+
+2EC3 ; 8980 ;  SA      #* ( ⻃ → 覀 ) CJK RADICAL WEST ONE → CJK UNIFIED IDEOGRAPH-8980  # 
+
+FAB7 ; 8986 ;  SA      # ( 覆 → 覆 ) CJK COMPATIBILITY IDEOGRAPH-FAB7 → CJK UNIFIED IDEOGRAPH-8986       # 
+
+FA0A ; 898B ;  SA      # ( 見 → 見 ) CJK COMPATIBILITY IDEOGRAPH-FA0A → CJK UNIFIED IDEOGRAPH-898B       # 
+2F92 ; 898B ;  SA      #* ( ⾒ → 見 ) KANGXI RADICAL SEE → CJK UNIFIED IDEOGRAPH-898B    # 
+
+FA61 ; 8996 ;  SA      # ( 視 → 視 ) CJK COMPATIBILITY IDEOGRAPH-FA61 → CJK UNIFIED IDEOGRAPH-8996       # 
+FAB8 ; 8996 ;  SA      # ( 視 → 視 ) CJK COMPATIBILITY IDEOGRAPH-FAB8 → CJK UNIFIED IDEOGRAPH-8996       # 
+
+2EC5 ; 89C1 ;  SA      #* ( ⻅ → 见 ) CJK RADICAL C-SIMPLIFIED SEE → CJK UNIFIED IDEOGRAPH-89C1  # 
+
+2F93 ; 89D2 ;  SA      #* ( ⾓ → 角 ) KANGXI RADICAL HORN → CJK UNIFIED IDEOGRAPH-89D2   # 
+
+2F94 ; 8A00 ;  SA      #* ( ⾔ → 言 ) KANGXI RADICAL SPEECH → CJK UNIFIED IDEOGRAPH-8A00 # 
+
+8A7D ; 8A2E ;  SA      # ( 詽 → 訮 ) CJK UNIFIED IDEOGRAPH-8A7D → CJK UNIFIED IDEOGRAPH-8A2E     # 
+
+2F9CF ;        8AA0 ;  SA      # ( 誠 → 誠 ) CJK COMPATIBILITY IDEOGRAPH-2F9CF → CJK UNIFIED IDEOGRAPH-8AA0     # 
+
+F96F ; 8AAA ;  SA      # ( 說 → 說 ) CJK COMPATIBILITY IDEOGRAPH-F96F → CJK UNIFIED IDEOGRAPH-8AAA       # 
+F9A1 ; 8AAA ;  SA      # ( 說 → 說 ) CJK COMPATIBILITY IDEOGRAPH-F9A1 → CJK UNIFIED IDEOGRAPH-8AAA       # 
+
+FAB9 ; 8ABF ;  SA      # ( 調 → 調 ) CJK COMPATIBILITY IDEOGRAPH-FAB9 → CJK UNIFIED IDEOGRAPH-8ABF       # 
+
+FABB ; 8ACB ;  SA      # ( 請 → 請 ) CJK COMPATIBILITY IDEOGRAPH-FABB → CJK UNIFIED IDEOGRAPH-8ACB       # 
+
+F97D ; 8AD2 ;  SA      # ( 諒 → 諒 ) CJK COMPATIBILITY IDEOGRAPH-F97D → CJK UNIFIED IDEOGRAPH-8AD2       # 
+
+F941 ; 8AD6 ;  SA      # ( 論 → 論 ) CJK COMPATIBILITY IDEOGRAPH-F941 → CJK UNIFIED IDEOGRAPH-8AD6       # 
+
+FABE ; 8AED ;  SA      # ( 諭 → 諭 ) CJK COMPATIBILITY IDEOGRAPH-FABE → CJK UNIFIED IDEOGRAPH-8AED       # 
+2F9D0 ;        8AED ;  SA      # ( 諭 → 諭 ) CJK COMPATIBILITY IDEOGRAPH-2F9D0 → CJK UNIFIED IDEOGRAPH-8AED     # 
+
+FA22 ; 8AF8 ;  SA      # ( 諸 → 諸 ) CJK COMPATIBILITY IDEOGRAPH-FA22 → CJK UNIFIED IDEOGRAPH-8AF8       # 
+FABA ; 8AF8 ;  SA      # ( 諸 → 諸 ) CJK COMPATIBILITY IDEOGRAPH-FABA → CJK UNIFIED IDEOGRAPH-8AF8       # 
+
+F95D ; 8AFE ;  SA      # ( 諾 → 諾 ) CJK COMPATIBILITY IDEOGRAPH-F95D → CJK UNIFIED IDEOGRAPH-8AFE       # 
+FABD ; 8AFE ;  SA      # ( 諾 → 諾 ) CJK COMPATIBILITY IDEOGRAPH-FABD → CJK UNIFIED IDEOGRAPH-8AFE       # 
+
+FA62 ; 8B01 ;  SA      # ( 謁 → 謁 ) CJK COMPATIBILITY IDEOGRAPH-FA62 → CJK UNIFIED IDEOGRAPH-8B01       # 
+FABC ; 8B01 ;  SA      # ( 謁 → 謁 ) CJK COMPATIBILITY IDEOGRAPH-FABC → CJK UNIFIED IDEOGRAPH-8B01       # 
+
+FA63 ; 8B39 ;  SA      # ( 謹 → 謹 ) CJK COMPATIBILITY IDEOGRAPH-FA63 → CJK UNIFIED IDEOGRAPH-8B39       # 
+FABF ; 8B39 ;  SA      # ( 謹 → 謹 ) CJK COMPATIBILITY IDEOGRAPH-FABF → CJK UNIFIED IDEOGRAPH-8B39       # 
+
+F9FC ; 8B58 ;  SA      # ( 識 → 識 ) CJK COMPATIBILITY IDEOGRAPH-F9FC → CJK UNIFIED IDEOGRAPH-8B58       # 
+
+F95A ; 8B80 ;  SA      # ( 讀 → 讀 ) CJK COMPATIBILITY IDEOGRAPH-F95A → CJK UNIFIED IDEOGRAPH-8B80       # 
+
+8B8F ; 8B86 ;  SA      # ( 讏 → 讆 ) CJK UNIFIED IDEOGRAPH-8B8F → CJK UNIFIED IDEOGRAPH-8B86     # 
+
+FAC0 ; 8B8A ;  SA      # ( 變 → 變 ) CJK COMPATIBILITY IDEOGRAPH-FAC0 → CJK UNIFIED IDEOGRAPH-8B8A       # 
+2F9D1 ;        8B8A ;  SA      # ( 變 → 變 ) CJK COMPATIBILITY IDEOGRAPH-2F9D1 → CJK UNIFIED IDEOGRAPH-8B8A     # 
+
+2EC8 ; 8BA0 ;  SA      #* ( ⻈ → 讠 ) CJK RADICAL C-SIMPLIFIED SPEECH → CJK UNIFIED IDEOGRAPH-8BA0       # 
+
+2F95 ; 8C37 ;  SA      #* ( ⾕ → 谷 ) KANGXI RADICAL VALLEY → CJK UNIFIED IDEOGRAPH-8C37 # 
+
+2F96 ; 8C46 ;  SA      #* ( ⾖ → 豆 ) KANGXI RADICAL BEAN → CJK UNIFIED IDEOGRAPH-8C46   # 
+
+F900 ; 8C48 ;  SA      # ( 豈 → 豈 ) CJK COMPATIBILITY IDEOGRAPH-F900 → CJK UNIFIED IDEOGRAPH-8C48       # 
+
+2F9D2 ;        8C55 ;  SA      # ( 豕 → 豕 ) CJK COMPATIBILITY IDEOGRAPH-2F9D2 → CJK UNIFIED IDEOGRAPH-8C55     # 
+2F97 ; 8C55 ;  SA      #* ( ⾗ → 豕 ) KANGXI RADICAL PIG → CJK UNIFIED IDEOGRAPH-8C55    # 
+
+8C63 ; 8C5C ;  SA      # ( 豣 → 豜 ) CJK UNIFIED IDEOGRAPH-8C63 → CJK UNIFIED IDEOGRAPH-8C5C     # 
+
+2F98 ; 8C78 ;  SA      #* ( ⾘ → 豸 ) KANGXI RADICAL BADGER → CJK UNIFIED IDEOGRAPH-8C78 # 
+
+2F99 ; 8C9D ;  SA      #* ( ⾙ → 貝 ) KANGXI RADICAL SHELL → CJK UNIFIED IDEOGRAPH-8C9D  # 
+
+2F9D4 ;        8CAB ;  SA      # ( 貫 → 貫 ) CJK COMPATIBILITY IDEOGRAPH-2F9D4 → CJK UNIFIED IDEOGRAPH-8CAB     # 
+
+2F9D5 ;        8CC1 ;  SA      # ( 賁 → 賁 ) CJK COMPATIBILITY IDEOGRAPH-2F9D5 → CJK UNIFIED IDEOGRAPH-8CC1     # 
+
+F948 ; 8CC2 ;  SA      # ( 賂 → 賂 ) CJK COMPATIBILITY IDEOGRAPH-F948 → CJK UNIFIED IDEOGRAPH-8CC2       # 
+
+F903 ; 8CC8 ;  SA      # ( 賈 → 賈 ) CJK COMPATIBILITY IDEOGRAPH-F903 → CJK UNIFIED IDEOGRAPH-8CC8       # 
+
+FA64 ; 8CD3 ;  SA      # ( 賓 → 賓 ) CJK COMPATIBILITY IDEOGRAPH-FA64 → CJK UNIFIED IDEOGRAPH-8CD3       # 
+
+FA65 ; 8D08 ;  SA      # ( 贈 → 贈 ) CJK COMPATIBILITY IDEOGRAPH-FA65 → CJK UNIFIED IDEOGRAPH-8D08       # 
+FAC1 ; 8D08 ;  SA      # ( 贈 → 贈 ) CJK COMPATIBILITY IDEOGRAPH-FAC1 → CJK UNIFIED IDEOGRAPH-8D08       # 
+
+2F9D6 ;        8D1B ;  SA      # ( 贛 → 贛 ) CJK COMPATIBILITY IDEOGRAPH-2F9D6 → CJK UNIFIED IDEOGRAPH-8D1B     # 
+
+2EC9 ; 8D1D ;  SA      #* ( ⻉ → 贝 ) CJK RADICAL C-SIMPLIFIED SHELL → CJK UNIFIED IDEOGRAPH-8D1D        # 
+
+2F9A ; 8D64 ;  SA      #* ( ⾚ → 赤 ) KANGXI RADICAL RED → CJK UNIFIED IDEOGRAPH-8D64    # 
+
+2F9B ; 8D70 ;  SA      #* ( ⾛ → 走 ) KANGXI RADICAL RUN → CJK UNIFIED IDEOGRAPH-8D70    # 
+
+2F9D7 ;        8D77 ;  SA      # ( 起 → 起 ) CJK COMPATIBILITY IDEOGRAPH-2F9D7 → CJK UNIFIED IDEOGRAPH-8D77     # 
+
+8D86 ; 8D7F ;  SA      # ( 趆 → 赿 ) CJK UNIFIED IDEOGRAPH-8D86 → CJK UNIFIED IDEOGRAPH-8D7F     # 
+
+2F9C ; 8DB3 ;  SA      #* ( ⾜ → 足 ) KANGXI RADICAL FOOT → CJK UNIFIED IDEOGRAPH-8DB3   # 
+
+2F9DB ;        8DBC ;  SA      # ( 趼 → 趼 ) CJK COMPATIBILITY IDEOGRAPH-2F9DB → CJK UNIFIED IDEOGRAPH-8DBC     # 
+
+2F9DA ;        8DCB ;  SA      # ( 跋 → 跋 ) CJK COMPATIBILITY IDEOGRAPH-2F9DA → CJK UNIFIED IDEOGRAPH-8DCB     # 
+
+8DFA ; 8DE5 ;  SA      # ( 跺 → 跥 ) CJK UNIFIED IDEOGRAPH-8DFA → CJK UNIFIED IDEOGRAPH-8DE5     # 
+
+F937 ; 8DEF ;  SA      # ( 路 → 路 ) CJK COMPATIBILITY IDEOGRAPH-F937 → CJK UNIFIED IDEOGRAPH-8DEF       # 
+
+2F9DC ;        8DF0 ;  SA      # ( 跰 → 跰 ) CJK COMPATIBILITY IDEOGRAPH-2F9DC → CJK UNIFIED IDEOGRAPH-8DF0     # 
+
+8E9B ; 8E97 ;  SA      # ( 躛 → 躗 ) CJK UNIFIED IDEOGRAPH-8E9B → CJK UNIFIED IDEOGRAPH-8E97     # 
+
+2F9D ; 8EAB ;  SA      #* ( ⾝ → 身 ) KANGXI RADICAL BODY → CJK UNIFIED IDEOGRAPH-8EAB   # 
+
+F902 ; 8ECA ;  SA      # ( 車 → 車 ) CJK COMPATIBILITY IDEOGRAPH-F902 → CJK UNIFIED IDEOGRAPH-8ECA       # 
+2F9E ; 8ECA ;  SA      #* ( ⾞ → 車 ) KANGXI RADICAL CART → CJK UNIFIED IDEOGRAPH-8ECA   # 
+
+2F9DE ;        8ED4 ;  SA      # ( 軔 → 軔 ) CJK COMPATIBILITY IDEOGRAPH-2F9DE → CJK UNIFIED IDEOGRAPH-8ED4     # 
+
+8F27 ; 8EFF ;  SA      # ( 輧 → 軿 ) CJK UNIFIED IDEOGRAPH-8F27 → CJK UNIFIED IDEOGRAPH-8EFF     # 
+
+F998 ; 8F26 ;  SA      # ( 輦 → 輦 ) CJK COMPATIBILITY IDEOGRAPH-F998 → CJK UNIFIED IDEOGRAPH-8F26       # 
+
+F9D7 ; 8F2A ;  SA      # ( 輪 → 輪 ) CJK COMPATIBILITY IDEOGRAPH-F9D7 → CJK UNIFIED IDEOGRAPH-8F2A       # 
+
+FAC2 ; 8F38 ;  SA      # ( 輸 → 輸 ) CJK COMPATIBILITY IDEOGRAPH-FAC2 → CJK UNIFIED IDEOGRAPH-8F38       # 
+2F9DF ;        8F38 ;  SA      # ( 輸 → 輸 ) CJK COMPATIBILITY IDEOGRAPH-2F9DF → CJK UNIFIED IDEOGRAPH-8F38     # 
+
+FA07 ; 8F3B ;  SA      # ( 輻 → 輻 ) CJK COMPATIBILITY IDEOGRAPH-FA07 → CJK UNIFIED IDEOGRAPH-8F3B       # 
+
+F98D ; 8F62 ;  SA      # ( 轢 → 轢 ) CJK COMPATIBILITY IDEOGRAPH-F98D → CJK UNIFIED IDEOGRAPH-8F62       # 
+
+2ECB ; 8F66 ;  SA      #* ( ⻋ → 车 ) CJK RADICAL C-SIMPLIFIED CART → CJK UNIFIED IDEOGRAPH-8F66 # 
+
+2F9F ; 8F9B ;  SA      #* ( ⾟ → 辛 ) KANGXI RADICAL BITTER → CJK UNIFIED IDEOGRAPH-8F9B # 
+
+2F98D ;        8F9E ;  SA      # ( 辞 → 辞 ) CJK COMPATIBILITY IDEOGRAPH-2F98D → CJK UNIFIED IDEOGRAPH-8F9E     # 
+
+F971 ; 8FB0 ;  SA      # ( 辰 → 辰 ) CJK COMPATIBILITY IDEOGRAPH-F971 → CJK UNIFIED IDEOGRAPH-8FB0       # 
+2FA0 ; 8FB0 ;  SA      #* ( ⾠ → 辰 ) KANGXI RADICAL MORNING → CJK UNIFIED IDEOGRAPH-8FB0        # 
+
+2FA1 ; 8FB5 ;  SA      #* ( ⾡ → 辵 ) KANGXI RADICAL WALK → CJK UNIFIED IDEOGRAPH-8FB5   # 
+
+FA66 ; 8FB6 ;  SA      # ( 辶 → 辶 ) CJK COMPATIBILITY IDEOGRAPH-FA66 → CJK UNIFIED IDEOGRAPH-8FB6       # 
+2ECC ; 8FB6 ;  SA      #* ( ⻌ → 辶 ) CJK RADICAL SIMPLIFIED WALK → CJK UNIFIED IDEOGRAPH-8FB6   # 
+2ECD ; 8FB6 ;  SA      #* ( ⻍ → 辶 ) CJK RADICAL WALK ONE → CJK UNIFIED IDEOGRAPH-8FB6  # 
+
+F99A ; 9023 ;  SA      # ( 連 → 連 ) CJK COMPATIBILITY IDEOGRAPH-F99A → CJK UNIFIED IDEOGRAPH-9023       # 
+
+FA25 ; 9038 ;  SA      # ( 逸 → 逸 ) CJK COMPATIBILITY IDEOGRAPH-FA25 → CJK UNIFIED IDEOGRAPH-9038       # 
+FA67 ; 9038 ;  SA      # ( 逸 → 逸 ) CJK COMPATIBILITY IDEOGRAPH-FA67 → CJK UNIFIED IDEOGRAPH-9038       # 
+
+FAC3 ; 9072 ;  SA      # ( 遲 → 遲 ) CJK COMPATIBILITY IDEOGRAPH-FAC3 → CJK UNIFIED IDEOGRAPH-9072       # 
+
+F9C3 ; 907C ;  SA      # ( 遼 → 遼 ) CJK COMPATIBILITY IDEOGRAPH-F9C3 → CJK UNIFIED IDEOGRAPH-907C       # 
+
+F913 ; 908F ;  SA      # ( 邏 → 邏 ) CJK COMPATIBILITY IDEOGRAPH-F913 → CJK UNIFIED IDEOGRAPH-908F       # 
+
+2FA2 ; 9091 ;  SA      #* ( ⾢ → 邑 ) KANGXI RADICAL CITY → CJK UNIFIED IDEOGRAPH-9091   # 
+
+2F9E2 ;        9094 ;  SA      # ( 邔 → 邔 ) CJK COMPATIBILITY IDEOGRAPH-2F9E2 → CJK UNIFIED IDEOGRAPH-9094     # 
+
+F92C ; 90CE ;  SA      # ( 郎 → 郎 ) CJK COMPATIBILITY IDEOGRAPH-F92C → CJK UNIFIED IDEOGRAPH-90CE       # 
+90DE ; 90CE ;  SA      # ( 郞 → 郎 ) CJK UNIFIED IDEOGRAPH-90DE → CJK UNIFIED IDEOGRAPH-90CE     # →郎→
+
+2F9E3 ;        90F1 ;  SA      # ( 郱 → 郱 ) CJK COMPATIBILITY IDEOGRAPH-2F9E3 → CJK UNIFIED IDEOGRAPH-90F1     # 
+
+FA26 ; 90FD ;  SA      # ( 都 → 都 ) CJK COMPATIBILITY IDEOGRAPH-FA26 → CJK UNIFIED IDEOGRAPH-90FD       # 
+
+2F9E4 ;        9111 ;  SA      # ( 鄑 → 鄑 ) CJK COMPATIBILITY IDEOGRAPH-2F9E4 → CJK UNIFIED IDEOGRAPH-9111     # 
+
+2F9E6 ;        911B ;  SA      # ( 鄛 → 鄛 ) CJK COMPATIBILITY IDEOGRAPH-2F9E6 → CJK UNIFIED IDEOGRAPH-911B     # 
+
+2FA3 ; 9149 ;  SA      #* ( ⾣ → 酉 ) KANGXI RADICAL WINE → CJK UNIFIED IDEOGRAPH-9149   # 
+
+F919 ; 916A ;  SA      # ( 酪 → 酪 ) CJK COMPATIBILITY IDEOGRAPH-F919 → CJK UNIFIED IDEOGRAPH-916A       # 
+
+FAC4 ; 9199 ;  SA      # ( 醙 → 醙 ) CJK COMPATIBILITY IDEOGRAPH-FAC4 → CJK UNIFIED IDEOGRAPH-9199       # 
+
+F9B7 ; 91B4 ;  SA      # ( 醴 → 醴 ) CJK COMPATIBILITY IDEOGRAPH-F9B7 → CJK UNIFIED IDEOGRAPH-91B4       # 
+
+2FA4 ; 91C6 ;  SA      #* ( ⾤ → 釆 ) KANGXI RADICAL DISTINGUISH → CJK UNIFIED IDEOGRAPH-91C6    # 
+
+F9E9 ; 91CC ;  SA      # ( 里 → 里 ) CJK COMPATIBILITY IDEOGRAPH-F9E9 → CJK UNIFIED IDEOGRAPH-91CC       # 
+2FA5 ; 91CC ;  SA      #* ( ⾥ → 里 ) KANGXI RADICAL VILLAGE → CJK UNIFIED IDEOGRAPH-91CC        # 
+
+F97E ; 91CF ;  SA      # ( 量 → 量 ) CJK COMPATIBILITY IDEOGRAPH-F97E → CJK UNIFIED IDEOGRAPH-91CF       # 
+
+F90A ; 91D1 ;  SA      # ( 金 → 金 ) CJK COMPATIBILITY IDEOGRAPH-F90A → CJK UNIFIED IDEOGRAPH-91D1       # 
+2FA6 ; 91D1 ;  SA      #* ( ⾦ → 金 ) KANGXI RADICAL GOLD → CJK UNIFIED IDEOGRAPH-91D1   # 
+
+F9B1 ; 9234 ;  SA      # ( 鈴 → 鈴 ) CJK COMPATIBILITY IDEOGRAPH-F9B1 → CJK UNIFIED IDEOGRAPH-9234       # 
+
+2F9E7 ;        9238 ;  SA      # ( 鈸 → 鈸 ) CJK COMPATIBILITY IDEOGRAPH-2F9E7 → CJK UNIFIED IDEOGRAPH-9238     # 
+
+FAC5 ; 9276 ;  SA      # ( 鉶 → 鉶 ) CJK COMPATIBILITY IDEOGRAPH-FAC5 → CJK UNIFIED IDEOGRAPH-9276       # 
+
+2F9EA ;        927C ;  SA      # ( 鉼 → 鉼 ) CJK COMPATIBILITY IDEOGRAPH-2F9EA → CJK UNIFIED IDEOGRAPH-927C     # 
+
+2F9E8 ;        92D7 ;  SA      # ( 鋗 → 鋗 ) CJK COMPATIBILITY IDEOGRAPH-2F9E8 → CJK UNIFIED IDEOGRAPH-92D7     # 
+
+2F9E9 ;        92D8 ;  SA      # ( 鋘 → 鋘 ) CJK COMPATIBILITY IDEOGRAPH-2F9E9 → CJK UNIFIED IDEOGRAPH-92D8     # 
+
+F93F ; 9304 ;  SA      # ( 錄 → 錄 ) CJK COMPATIBILITY IDEOGRAPH-F93F → CJK UNIFIED IDEOGRAPH-9304       # 
+
+F99B ; 934A ;  SA      # ( 鍊 → 鍊 ) CJK COMPATIBILITY IDEOGRAPH-F99B → CJK UNIFIED IDEOGRAPH-934A       # 
+
+93AE ; 93AD ;  SA      # ( 鎮 → 鎭 ) CJK UNIFIED IDEOGRAPH-93AE → CJK UNIFIED IDEOGRAPH-93AD     # 
+
+2F9EB ;        93F9 ;  SA      # ( 鏹 → 鏹 ) CJK COMPATIBILITY IDEOGRAPH-2F9EB → CJK UNIFIED IDEOGRAPH-93F9     # 
+
+2F9EC ;        9415 ;  SA      # ( 鐕 → 鐕 ) CJK COMPATIBILITY IDEOGRAPH-2F9EC → CJK UNIFIED IDEOGRAPH-9415     # 
+
+2ED0 ; 9485 ;  SA      #* ( ⻐ → 钅 ) CJK RADICAL C-SIMPLIFIED GOLD → CJK UNIFIED IDEOGRAPH-9485 # 
+
+2ED1 ; 9577 ;  SA      #* ( ⻑ → 長 ) CJK RADICAL LONG ONE → CJK UNIFIED IDEOGRAPH-9577  # 
+2FA7 ; 9577 ;  SA      #* ( ⾧ → 長 ) KANGXI RADICAL LONG → CJK UNIFIED IDEOGRAPH-9577   # 
+
+2ED2 ; 9578 ;  SA      #* ( ⻒ → 镸 ) CJK RADICAL LONG TWO → CJK UNIFIED IDEOGRAPH-9578  # 
+
+2ED3 ; 957F ;  SA      #* ( ⻓ → 长 ) CJK RADICAL C-SIMPLIFIED LONG → CJK UNIFIED IDEOGRAPH-957F # 
+
+2FA8 ; 9580 ;  SA      #* ( ⾨ → 門 ) KANGXI RADICAL GATE → CJK UNIFIED IDEOGRAPH-9580   # 
+
+2F9EE ;        958B ;  SA      # ( 開 → 開 ) CJK COMPATIBILITY IDEOGRAPH-2F9EE → CJK UNIFIED IDEOGRAPH-958B     # 
+
+F986 ; 95AD ;  SA      # ( 閭 → 閭 ) CJK COMPATIBILITY IDEOGRAPH-F986 → CJK UNIFIED IDEOGRAPH-95AD       # 
+
+2F9F0 ;        95B7 ;  SA      # ( 閷 → 閷 ) CJK COMPATIBILITY IDEOGRAPH-2F9F0 → CJK UNIFIED IDEOGRAPH-95B7     # 
+
+2ED4 ; 95E8 ;  SA      #* ( ⻔ → 门 ) CJK RADICAL C-SIMPLIFIED GATE → CJK UNIFIED IDEOGRAPH-95E8 # 
+
+2FA9 ; 961C ;  SA      #* ( ⾩ → 阜 ) KANGXI RADICAL MOUND → CJK UNIFIED IDEOGRAPH-961C  # 
+
+2ECF ; 961D ;  SA      #* ( ⻏ → 阝 ) CJK RADICAL CITY → CJK UNIFIED IDEOGRAPH-961D      # 
+2ED6 ; 961D ;  SA      #* ( ⻖ → 阝 ) CJK RADICAL MOUND TWO → CJK UNIFIED IDEOGRAPH-961D # 
+
+F9C6 ; 962E ;  SA      # ( 阮 → 阮 ) CJK COMPATIBILITY IDEOGRAPH-F9C6 → CJK UNIFIED IDEOGRAPH-962E       # 
+
+F951 ; 964B ;  SA      # ( 陋 → 陋 ) CJK COMPATIBILITY IDEOGRAPH-F951 → CJK UNIFIED IDEOGRAPH-964B       # 
+
+FA09 ; 964D ;  SA      # ( 降 → 降 ) CJK COMPATIBILITY IDEOGRAPH-FA09 → CJK UNIFIED IDEOGRAPH-964D       # 
+
+F959 ; 9675 ;  SA      # ( 陵 → 陵 ) CJK COMPATIBILITY IDEOGRAPH-F959 → CJK UNIFIED IDEOGRAPH-9675       # 
+
+F9D3 ; 9678 ;  SA      # ( 陸 → 陸 ) CJK COMPATIBILITY IDEOGRAPH-F9D3 → CJK UNIFIED IDEOGRAPH-9678       # 
+
+FAC6 ; 967C ;  SA      # ( 陼 → 陼 ) CJK COMPATIBILITY IDEOGRAPH-FAC6 → CJK UNIFIED IDEOGRAPH-967C       # 
+
+F9DC ; 9686 ;  SA      # ( 隆 → 隆 ) CJK COMPATIBILITY IDEOGRAPH-F9DC → CJK UNIFIED IDEOGRAPH-9686       # 
+
+F9F1 ; 96A3 ;  SA      # ( 隣 → 隣 ) CJK COMPATIBILITY IDEOGRAPH-F9F1 → CJK UNIFIED IDEOGRAPH-96A3       # 
+
+2FAA ; 96B6 ;  SA      #* ( ⾪ → 隶 ) KANGXI RADICAL SLAVE → CJK UNIFIED IDEOGRAPH-96B6  # 
+
+96B8 ; 96B7 ;  SA      # ( 隸 → 隷 ) CJK UNIFIED IDEOGRAPH-96B8 → CJK UNIFIED IDEOGRAPH-96B7     # →隸→
+F9B8 ; 96B7 ;  SA      # ( 隸 → 隷 ) CJK COMPATIBILITY IDEOGRAPH-F9B8 → CJK UNIFIED IDEOGRAPH-96B7       # 
+
+2FAB ; 96B9 ;  SA      #* ( ⾫ → 隹 ) KANGXI RADICAL SHORT TAILED BIRD → CJK UNIFIED IDEOGRAPH-96B9      # 
+
+2F9F3 ;        96C3 ;  SA      # ( 雃 → 雃 ) CJK COMPATIBILITY IDEOGRAPH-2F9F3 → CJK UNIFIED IDEOGRAPH-96C3     # 
+
+F9EA ; 96E2 ;  SA      # ( 離 → 離 ) CJK COMPATIBILITY IDEOGRAPH-F9EA → CJK UNIFIED IDEOGRAPH-96E2       # 
+
+FA68 ; 96E3 ;  SA      # ( 難 → 難 ) CJK COMPATIBILITY IDEOGRAPH-FA68 → CJK UNIFIED IDEOGRAPH-96E3       # 
+FAC7 ; 96E3 ;  SA      # ( 難 → 難 ) CJK COMPATIBILITY IDEOGRAPH-FAC7 → CJK UNIFIED IDEOGRAPH-96E3       # 
+
+2FAC ; 96E8 ;  SA      #* ( ⾬ → 雨 ) KANGXI RADICAL RAIN → CJK UNIFIED IDEOGRAPH-96E8   # 
+
+F9B2 ; 96F6 ;  SA      # ( 零 → 零 ) CJK COMPATIBILITY IDEOGRAPH-F9B2 → CJK UNIFIED IDEOGRAPH-96F6       # 
+
+F949 ; 96F7 ;  SA      # ( 雷 → 雷 ) CJK COMPATIBILITY IDEOGRAPH-F949 → CJK UNIFIED IDEOGRAPH-96F7       # 
+
+2F9F5 ;        9723 ;  SA      # ( 霣 → 霣 ) CJK COMPATIBILITY IDEOGRAPH-2F9F5 → CJK UNIFIED IDEOGRAPH-9723     # 
+
+F938 ; 9732 ;  SA      # ( 露 → 露 ) CJK COMPATIBILITY IDEOGRAPH-F938 → CJK UNIFIED IDEOGRAPH-9732       # 
+
+F9B3 ; 9748 ;  SA      # ( 靈 → 靈 ) CJK COMPATIBILITY IDEOGRAPH-F9B3 → CJK UNIFIED IDEOGRAPH-9748       # 
+
+2FAD ; 9751 ;  SA      #* ( ⾭ → 靑 ) KANGXI RADICAL BLUE → CJK UNIFIED IDEOGRAPH-9751   # 
+
+2ED8 ; 9752 ;  SA      #* ( ⻘ → 青 ) CJK RADICAL BLUE → CJK UNIFIED IDEOGRAPH-9752      # 
+
+FA1C ; 9756 ;  SA      # ( 靖 → 靖 ) CJK COMPATIBILITY IDEOGRAPH-FA1C → CJK UNIFIED IDEOGRAPH-9756       # 
+FAC8 ; 9756 ;  SA      # ( 靖 → 靖 ) CJK COMPATIBILITY IDEOGRAPH-FAC8 → CJK UNIFIED IDEOGRAPH-9756       # 
+
+2FAE ; 975E ;  SA      #* ( ⾮ → 非 ) KANGXI RADICAL WRONG → CJK UNIFIED IDEOGRAPH-975E  # 
+
+2FAF ; 9762 ;  SA      #* ( ⾯ → 面 ) KANGXI RADICAL FACE → CJK UNIFIED IDEOGRAPH-9762   # 
+
+2FB0 ; 9769 ;  SA      #* ( ⾰ → 革 ) KANGXI RADICAL LEATHER → CJK UNIFIED IDEOGRAPH-9769        # 
+
+2FB1 ; 97CB ;  SA      #* ( ⾱ → 韋 ) KANGXI RADICAL TANNED LEATHER → CJK UNIFIED IDEOGRAPH-97CB # 
+
+FAC9 ; 97DB ;  SA      # ( 韛 → 韛 ) CJK COMPATIBILITY IDEOGRAPH-FAC9 → CJK UNIFIED IDEOGRAPH-97DB       # 
+
+2F9FA ;        97E0 ;  SA      # ( 韠 → 韠 ) CJK COMPATIBILITY IDEOGRAPH-2F9FA → CJK UNIFIED IDEOGRAPH-97E0     # 
+
+2ED9 ; 97E6 ;  SA      #* ( ⻙ → 韦 ) CJK RADICAL C-SIMPLIFIED TANNED LEATHER → CJK UNIFIED IDEOGRAPH-97E6       # 
+
+2FB2 ; 97ED ;  SA      #* ( ⾲ → 韭 ) KANGXI RADICAL LEEK → CJK UNIFIED IDEOGRAPH-97ED   # 
+
+2FB3 ; 97F3 ;  SA      #* ( ⾳ → 音 ) KANGXI RADICAL SOUND → CJK UNIFIED IDEOGRAPH-97F3  # 
+
+FA69 ; 97FF ;  SA      # ( 響 → 響 ) CJK COMPATIBILITY IDEOGRAPH-FA69 → CJK UNIFIED IDEOGRAPH-97FF       # 
+FACA ; 97FF ;  SA      # ( 響 → 響 ) CJK COMPATIBILITY IDEOGRAPH-FACA → CJK UNIFIED IDEOGRAPH-97FF       # 
+
+2FB4 ; 9801 ;  SA      #* ( ⾴ → 頁 ) KANGXI RADICAL LEAF → CJK UNIFIED IDEOGRAPH-9801   # 
+
+FACB ; 980B ;  SA      # ( 頋 → 頋 ) CJK COMPATIBILITY IDEOGRAPH-FACB → CJK UNIFIED IDEOGRAPH-980B       # 
+2F9FE ;        980B ;  SA      # ( 頋 → 頋 ) CJK COMPATIBILITY IDEOGRAPH-2F9FE → CJK UNIFIED IDEOGRAPH-980B     # 
+2F9FF ;        980B ;  SA      # ( 頋 → 頋 ) CJK COMPATIBILITY IDEOGRAPH-2F9FF → CJK UNIFIED IDEOGRAPH-980B     # 
+
+F9B4 ; 9818 ;  SA      # ( 領 → 領 ) CJK COMPATIBILITY IDEOGRAPH-F9B4 → CJK UNIFIED IDEOGRAPH-9818       # 
+
+2FA00 ;        9829 ;  SA      # ( 頩 → 頩 ) CJK COMPATIBILITY IDEOGRAPH-2FA00 → CJK UNIFIED IDEOGRAPH-9829     # 
+
+FA6A ; 983B ;  SA      # ( 頻 → 頻 ) CJK COMPATIBILITY IDEOGRAPH-FA6A → CJK UNIFIED IDEOGRAPH-983B       # 
+FACC ; 983B ;  SA      # ( 頻 → 頻 ) CJK COMPATIBILITY IDEOGRAPH-FACC → CJK UNIFIED IDEOGRAPH-983B       # 
+
+F9D0 ; 985E ;  SA      # ( 類 → 類 ) CJK COMPATIBILITY IDEOGRAPH-F9D0 → CJK UNIFIED IDEOGRAPH-985E       # 
+
+2EDA ; 9875 ;  SA      #* ( ⻚ → 页 ) CJK RADICAL C-SIMPLIFIED LEAF → CJK UNIFIED IDEOGRAPH-9875 # 
+
+2FB5 ; 98A8 ;  SA      #* ( ⾵ → 風 ) KANGXI RADICAL WIND → CJK UNIFIED IDEOGRAPH-98A8   # 
+
+2EDB ; 98CE ;  SA      #* ( ⻛ → 风 ) CJK RADICAL C-SIMPLIFIED WIND → CJK UNIFIED IDEOGRAPH-98CE # 
+
+2FB6 ; 98DB ;  SA      #* ( ⾶ → 飛 ) KANGXI RADICAL FLY → CJK UNIFIED IDEOGRAPH-98DB    # 
+
+2EDC ; 98DE ;  SA      #* ( ⻜ → 飞 ) CJK RADICAL C-SIMPLIFIED FLY → CJK UNIFIED IDEOGRAPH-98DE  # 
+
+2EDD ; 98DF ;  SA      #* ( ⻝ → 食 ) CJK RADICAL EAT ONE → CJK UNIFIED IDEOGRAPH-98DF   # 
+2FB7 ; 98DF ;  SA      #* ( ⾷ → 食 ) KANGXI RADICAL EAT → CJK UNIFIED IDEOGRAPH-98DF    # 
+
+2EDF ; 98E0 ;  SA      #* ( ⻟ → 飠 ) CJK RADICAL EAT THREE → CJK UNIFIED IDEOGRAPH-98E0 # 
+
+2FA02 ;        98E2 ;  SA      # ( 飢 → 飢 ) CJK COMPATIBILITY IDEOGRAPH-2FA02 → CJK UNIFIED IDEOGRAPH-98E2     # 
+
+FA2A ; 98EF ;  SA      # ( 飯 → 飯 ) CJK COMPATIBILITY IDEOGRAPH-FA2A → CJK UNIFIED IDEOGRAPH-98EF       # 
+
+FA2B ; 98FC ;  SA      # ( 飼 → 飼 ) CJK COMPATIBILITY IDEOGRAPH-FA2B → CJK UNIFIED IDEOGRAPH-98FC       # 
+
+FA2C ; 9928 ;  SA      # ( 館 → 館 ) CJK COMPATIBILITY IDEOGRAPH-FA2C → CJK UNIFIED IDEOGRAPH-9928       # 
+
+2FA04 ;        9929 ;  SA      # ( 餩 → 餩 ) CJK COMPATIBILITY IDEOGRAPH-2FA04 → CJK UNIFIED IDEOGRAPH-9929     # 
+
+2EE0 ; 9963 ;  SA      #* ( ⻠ → 饣 ) CJK RADICAL C-SIMPLIFIED EAT → CJK UNIFIED IDEOGRAPH-9963  # 
+
+2FB8 ; 9996 ;  SA      #* ( ⾸ → 首 ) KANGXI RADICAL HEAD → CJK UNIFIED IDEOGRAPH-9996   # 
+
+2FB9 ; 9999 ;  SA      #* ( ⾹ → 香 ) KANGXI RADICAL FRAGRANT → CJK UNIFIED IDEOGRAPH-9999       # 
+
+2FA05 ;        99A7 ;  SA      # ( 馧 → 馧 ) CJK COMPATIBILITY IDEOGRAPH-2FA05 → CJK UNIFIED IDEOGRAPH-99A7     # 
+
+2FBA ; 99AC ;  SA      #* ( ⾺ → 馬 ) KANGXI RADICAL HORSE → CJK UNIFIED IDEOGRAPH-99AC  # 
+
+2FA06 ;        99C2 ;  SA      # ( 駂 → 駂 ) CJK COMPATIBILITY IDEOGRAPH-2FA06 → CJK UNIFIED IDEOGRAPH-99C2     # 
+
+F91A ; 99F1 ;  SA      # ( 駱 → 駱 ) CJK COMPATIBILITY IDEOGRAPH-F91A → CJK UNIFIED IDEOGRAPH-99F1       # 
+
+2FA07 ;        99FE ;  SA      # ( 駾 → 駾 ) CJK COMPATIBILITY IDEOGRAPH-2FA07 → CJK UNIFIED IDEOGRAPH-99FE     # 
+
+F987 ; 9A6A ;  SA      # ( 驪 → 驪 ) CJK COMPATIBILITY IDEOGRAPH-F987 → CJK UNIFIED IDEOGRAPH-9A6A       # 
+
+2EE2 ; 9A6C ;  SA      #* ( ⻢ → 马 ) CJK RADICAL C-SIMPLIFIED HORSE → CJK UNIFIED IDEOGRAPH-9A6C        # 
+
+2FBB ; 9AA8 ;  SA      #* ( ⾻ → 骨 ) KANGXI RADICAL BONE → CJK UNIFIED IDEOGRAPH-9AA8   # 
+
+2FBC ; 9AD8 ;  SA      #* ( ⾼ → 高 ) KANGXI RADICAL TALL → CJK UNIFIED IDEOGRAPH-9AD8   # 
+
+2FBD ; 9ADF ;  SA      #* ( ⾽ → 髟 ) KANGXI RADICAL HAIR → CJK UNIFIED IDEOGRAPH-9ADF   # 
+
+FACD ; 9B12 ;  SA      # ( 鬒 → 鬒 ) CJK COMPATIBILITY IDEOGRAPH-FACD → CJK UNIFIED IDEOGRAPH-9B12       # 
+2FA0A ;        9B12 ;  SA      # ( 鬒 → 鬒 ) CJK COMPATIBILITY IDEOGRAPH-2FA0A → CJK UNIFIED IDEOGRAPH-9B12     # 
+
+2FBE ; 9B25 ;  SA      #* ( ⾾ → 鬥 ) KANGXI RADICAL FIGHT → CJK UNIFIED IDEOGRAPH-9B25  # 
+
+2FBF ; 9B2F ;  SA      #* ( ⾿ → 鬯 ) KANGXI RADICAL SACRIFICIAL WINE → CJK UNIFIED IDEOGRAPH-9B2F       # 
+
+2FC0 ; 9B32 ;  SA      #* ( ⿀ → 鬲 ) KANGXI RADICAL CAULDRON → CJK UNIFIED IDEOGRAPH-9B32       # 
+
+2FC1 ; 9B3C ;  SA      #* ( ⿁ → 鬼 ) KANGXI RADICAL GHOST → CJK UNIFIED IDEOGRAPH-9B3C  # 
+2EE4 ; 9B3C ;  SA      #* ( ⻤ → 鬼 ) CJK RADICAL GHOST → CJK UNIFIED IDEOGRAPH-9B3C     # 
+
+2FC2 ; 9B5A ;  SA      #* ( ⿂ → 魚 ) KANGXI RADICAL FISH → CJK UNIFIED IDEOGRAPH-9B5A   # 
+
+F939 ; 9B6F ;  SA      # ( 魯 → 魯 ) CJK COMPATIBILITY IDEOGRAPH-F939 → CJK UNIFIED IDEOGRAPH-9B6F       # 
+
+2FA0B ;        9C40 ;  SA      # ( 鱀 → 鱀 ) CJK COMPATIBILITY IDEOGRAPH-2FA0B → CJK UNIFIED IDEOGRAPH-9C40     # 
+
+F9F2 ; 9C57 ;  SA      # ( 鱗 → 鱗 ) CJK COMPATIBILITY IDEOGRAPH-F9F2 → CJK UNIFIED IDEOGRAPH-9C57       # 
+
+2EE5 ; 9C7C ;  SA      #* ( ⻥ → 鱼 ) CJK RADICAL C-SIMPLIFIED FISH → CJK UNIFIED IDEOGRAPH-9C7C # 
+
+2FC3 ; 9CE5 ;  SA      #* ( ⿃ → 鳥 ) KANGXI RADICAL BIRD → CJK UNIFIED IDEOGRAPH-9CE5   # 
+
+2FA0C ;        9CFD ;  SA      # ( 鳽 → 鳽 ) CJK COMPATIBILITY IDEOGRAPH-2FA0C → CJK UNIFIED IDEOGRAPH-9CFD     # 
+
+2FA0F ;        9D67 ;  SA      # ( 鵧 → 鵧 ) CJK COMPATIBILITY IDEOGRAPH-2FA0F → CJK UNIFIED IDEOGRAPH-9D67     # 
+
+FA2D ; 9DB4 ;  SA      # ( 鶴 → 鶴 ) CJK COMPATIBILITY IDEOGRAPH-FA2D → CJK UNIFIED IDEOGRAPH-9DB4       # 
+
+F93A ; 9DFA ;  SA      # ( 鷺 → 鷺 ) CJK COMPATIBILITY IDEOGRAPH-F93A → CJK UNIFIED IDEOGRAPH-9DFA       # 
+
+F920 ; 9E1E ;  SA      # ( 鸞 → 鸞 ) CJK COMPATIBILITY IDEOGRAPH-F920 → CJK UNIFIED IDEOGRAPH-9E1E       # 
+
+9E43 ; 9E42 ;  SA      # ( 鹃 → 鹂 ) CJK UNIFIED IDEOGRAPH-9E43 → CJK UNIFIED IDEOGRAPH-9E42     # 
+
+2FC4 ; 9E75 ;  SA      #* ( ⿄ → 鹵 ) KANGXI RADICAL SALT → CJK UNIFIED IDEOGRAPH-9E75   # 
+
+F940 ; 9E7F ;  SA      # ( 鹿 → 鹿 ) CJK COMPATIBILITY IDEOGRAPH-F940 → CJK UNIFIED IDEOGRAPH-9E7F       # 
+2FC5 ; 9E7F ;  SA      #* ( ⿅ → 鹿 ) KANGXI RADICAL DEER → CJK UNIFIED IDEOGRAPH-9E7F   # 
+
+F988 ; 9E97 ;  SA      # ( 麗 → 麗 ) CJK COMPATIBILITY IDEOGRAPH-F988 → CJK UNIFIED IDEOGRAPH-9E97       # 
+
+F9F3 ; 9E9F ;  SA      # ( 麟 → 麟 ) CJK COMPATIBILITY IDEOGRAPH-F9F3 → CJK UNIFIED IDEOGRAPH-9E9F       # 
+
+2FC6 ; 9EA5 ;  SA      #* ( ⿆ → 麥 ) KANGXI RADICAL WHEAT → CJK UNIFIED IDEOGRAPH-9EA5  # 
+
+2EE8 ; 9EA6 ;  SA      #* ( ⻨ → 麦 ) CJK RADICAL SIMPLIFIED WHEAT → CJK UNIFIED IDEOGRAPH-9EA6  # 
+
+2FA15 ;        9EBB ;  SA      # ( 麻 → 麻 ) CJK COMPATIBILITY IDEOGRAPH-2FA15 → CJK UNIFIED IDEOGRAPH-9EBB     # 
+2FC7 ; 9EBB ;  SA      #* ( ⿇ → 麻 ) KANGXI RADICAL HEMP → CJK UNIFIED IDEOGRAPH-9EBB   # 
+
+2FC8 ; 9EC3 ;  SA      #* ( ⿈ → 黃 ) KANGXI RADICAL YELLOW → CJK UNIFIED IDEOGRAPH-9EC3 # 
+
+2EE9 ; 9EC4 ;  SA      #* ( ⻩ → 黄 ) CJK RADICAL SIMPLIFIED YELLOW → CJK UNIFIED IDEOGRAPH-9EC4 # 
+
+2FC9 ; 9ECD ;  SA      #* ( ⿉ → 黍 ) KANGXI RADICAL MILLET → CJK UNIFIED IDEOGRAPH-9ECD # 
+
+F989 ; 9ECE ;  SA      # ( 黎 → 黎 ) CJK COMPATIBILITY IDEOGRAPH-F989 → CJK UNIFIED IDEOGRAPH-9ECE       # 
+
+2FCA ; 9ED1 ;  SA      #* ( ⿊ → 黑 ) KANGXI RADICAL BLACK → CJK UNIFIED IDEOGRAPH-9ED1  # 
+9ED2 ; 9ED1 ;  SA      # ( 黒 → 黑 ) CJK UNIFIED IDEOGRAPH-9ED2 → CJK UNIFIED IDEOGRAPH-9ED1     # →⿊→
+
+2FA17 ;        9EF9 ;  SA      # ( 黹 → 黹 ) CJK COMPATIBILITY IDEOGRAPH-2FA17 → CJK UNIFIED IDEOGRAPH-9EF9     # 
+2FCB ; 9EF9 ;  SA      #* ( ⿋ → 黹 ) KANGXI RADICAL EMBROIDERY → CJK UNIFIED IDEOGRAPH-9EF9     # 
+
+2FCC ; 9EFD ;  SA      #* ( ⿌ → 黽 ) KANGXI RADICAL FROG → CJK UNIFIED IDEOGRAPH-9EFD   # 
+
+2FA18 ;        9EFE ;  SA      # ( 黾 → 黾 ) CJK COMPATIBILITY IDEOGRAPH-2FA18 → CJK UNIFIED IDEOGRAPH-9EFE     # 
+
+2FA19 ;        9F05 ;  SA      # ( 鼅 → 鼅 ) CJK COMPATIBILITY IDEOGRAPH-2FA19 → CJK UNIFIED IDEOGRAPH-9F05     # 
+
+2FCD ; 9F0E ;  SA      #* ( ⿍ → 鼎 ) KANGXI RADICAL TRIPOD → CJK UNIFIED IDEOGRAPH-9F0E # 
+
+2FA1A ;        9F0F ;  SA      # ( 鼏 → 鼏 ) CJK COMPATIBILITY IDEOGRAPH-2FA1A → CJK UNIFIED IDEOGRAPH-9F0F     # 
+
+2FCE ; 9F13 ;  SA      #* ( ⿎ → 鼓 ) KANGXI RADICAL DRUM → CJK UNIFIED IDEOGRAPH-9F13   # 
+
+2FA1B ;        9F16 ;  SA      # ( 鼖 → 鼖 ) CJK COMPATIBILITY IDEOGRAPH-2FA1B → CJK UNIFIED IDEOGRAPH-9F16     # 
+
+2FCF ; 9F20 ;  SA      #* ( ⿏ → 鼠 ) KANGXI RADICAL RAT → CJK UNIFIED IDEOGRAPH-9F20    # 
+
+2FA1C ;        9F3B ;  SA      # ( 鼻 → 鼻 ) CJK COMPATIBILITY IDEOGRAPH-2FA1C → CJK UNIFIED IDEOGRAPH-9F3B     # 
+2FD0 ; 9F3B ;  SA      #* ( ⿐ → 鼻 ) KANGXI RADICAL NOSE → CJK UNIFIED IDEOGRAPH-9F3B   # 
+
+FAD8 ; 9F43 ;  SA      # ( 齃 → 齃 ) CJK COMPATIBILITY IDEOGRAPH-FAD8 → CJK UNIFIED IDEOGRAPH-9F43       # 
+
+2FD1 ; 9F4A ;  SA      #* ( ⿑ → 齊 ) KANGXI RADICAL EVEN → CJK UNIFIED IDEOGRAPH-9F4A   # 
+
+2EEC ; 9F50 ;  SA      #* ( ⻬ → 齐 ) CJK RADICAL C-SIMPLIFIED EVEN → CJK UNIFIED IDEOGRAPH-9F50 # 
+
+2FD2 ; 9F52 ;  SA      #* ( ⿒ → 齒 ) KANGXI RADICAL TOOTH → CJK UNIFIED IDEOGRAPH-9F52  # 
+
+2EEE ; 9F7F ;  SA      #* ( ⻮ → 齿 ) CJK RADICAL C-SIMPLIFIED TOOTH → CJK UNIFIED IDEOGRAPH-9F7F        # 
+
+F9C4 ; 9F8D ;  SA      # ( 龍 → 龍 ) CJK COMPATIBILITY IDEOGRAPH-F9C4 → CJK UNIFIED IDEOGRAPH-9F8D       # 
+2FD3 ; 9F8D ;  SA      #* ( ⿓ → 龍 ) KANGXI RADICAL DRAGON → CJK UNIFIED IDEOGRAPH-9F8D # 
+
+FAD9 ; 9F8E ;  SA      # ( 龎 → 龎 ) CJK COMPATIBILITY IDEOGRAPH-FAD9 → CJK UNIFIED IDEOGRAPH-9F8E       # 
+
+2EF0 ; 9F99 ;  SA      #* ( ⻰ → 龙 ) CJK RADICAL C-SIMPLIFIED DRAGON → CJK UNIFIED IDEOGRAPH-9F99       # 
+
+F907 ; 9F9C ;  SA      # ( 龜 → 龜 ) CJK COMPATIBILITY IDEOGRAPH-F907 → CJK UNIFIED IDEOGRAPH-9F9C       # 
+F908 ; 9F9C ;  SA      # ( 龜 → 龜 ) CJK COMPATIBILITY IDEOGRAPH-F908 → CJK UNIFIED IDEOGRAPH-9F9C       # 
+FACE ; 9F9C ;  SA      # ( 龜 → 龜 ) CJK COMPATIBILITY IDEOGRAPH-FACE → CJK UNIFIED IDEOGRAPH-9F9C       # 
+2FD4 ; 9F9C ;  SA      #* ( ⿔ → 龜 ) KANGXI RADICAL TURTLE → CJK UNIFIED IDEOGRAPH-9F9C # 
+
+2EF3 ; 9F9F ;  SA      #* ( ⻳ → 龟 ) CJK RADICAL C-SIMPLIFIED TURTLE → CJK UNIFIED IDEOGRAPH-9F9F       # 
+
+2FD5 ; 9FA0 ;  SA      #* ( ⿕ → 龠 ) KANGXI RADICAL FLUTE → CJK UNIFIED IDEOGRAPH-9FA0  # 
+
+2F80C ;        349E ;  SA      # ( 㒞 → 㒞 ) CJK COMPATIBILITY IDEOGRAPH-2F80C → CJK UNIFIED IDEOGRAPH-349E     # 
+
+2F813 ;        34B9 ;  SA      # ( 㒹 → 㒹 ) CJK COMPATIBILITY IDEOGRAPH-2F813 → CJK UNIFIED IDEOGRAPH-34B9     # 
+
+2F9CA ;        34BB ;  SA      # ( 㒻 → 㒻 ) CJK COMPATIBILITY IDEOGRAPH-2F9CA → CJK UNIFIED IDEOGRAPH-34BB     # 
+
+2F81F ;        34DF ;  SA      # ( 㓟 → 㓟 ) CJK COMPATIBILITY IDEOGRAPH-2F81F → CJK UNIFIED IDEOGRAPH-34DF     # 
+
+2F824 ;        3515 ;  SA      # ( 㔕 → 㔕 ) CJK COMPATIBILITY IDEOGRAPH-2F824 → CJK UNIFIED IDEOGRAPH-3515     # 
+
+2E8B ; 353E ;  SA      #* ( ⺋ → 㔾 ) CJK RADICAL SEAL → CJK UNIFIED IDEOGRAPH-353E      # 
+
+439B ; 3588 ;  SA      # ( 䎛 → 㖈 ) CJK UNIFIED IDEOGRAPH-439B → CJK UNIFIED IDEOGRAPH-3588     # 
+
+39B3 ; 363D ;  SA      # ( 㦳 → 㘽 ) CJK UNIFIED IDEOGRAPH-39B3 → CJK UNIFIED IDEOGRAPH-363D     # 
+
+2F867 ;        36EE ;  SA      # ( 㛮 → 㛮 ) CJK COMPATIBILITY IDEOGRAPH-2F867 → CJK UNIFIED IDEOGRAPH-36EE     # 
+
+2F868 ;        36FC ;  SA      # ( 㛼 → 㛼 ) CJK COMPATIBILITY IDEOGRAPH-2F868 → CJK UNIFIED IDEOGRAPH-36FC     # 
+
+2F876 ;        3781 ;  SA      # ( 㞁 → 㞁 ) CJK COMPATIBILITY IDEOGRAPH-2F876 → CJK UNIFIED IDEOGRAPH-3781     # 
+
+2F883 ;        382F ;  SA      # ( 㠯 → 㠯 ) CJK COMPATIBILITY IDEOGRAPH-2F883 → CJK UNIFIED IDEOGRAPH-382F     # 
+
+2F888 ;        3862 ;  SA      # ( 㡢 → 㡢 ) CJK COMPATIBILITY IDEOGRAPH-2F888 → CJK UNIFIED IDEOGRAPH-3862     # 
+
+2F88A ;        387C ;  SA      # ( 㡼 → 㡼 ) CJK COMPATIBILITY IDEOGRAPH-2F88A → CJK UNIFIED IDEOGRAPH-387C     # 
+
+2F896 ;        38C7 ;  SA      # ( 㣇 → 㣇 ) CJK COMPATIBILITY IDEOGRAPH-2F896 → CJK UNIFIED IDEOGRAPH-38C7     # 
+
+2F89B ;        38E3 ;  SA      # ( 㣣 → 㣣 ) CJK COMPATIBILITY IDEOGRAPH-2F89B → CJK UNIFIED IDEOGRAPH-38E3     # 
+
+2E97 ; 38FA ;  SA      #* ( ⺗ → 㣺 ) CJK RADICAL HEART TWO → CJK UNIFIED IDEOGRAPH-38FA # 
+
+2F8A2 ;        391C ;  SA      # ( 㤜 → 㤜 ) CJK COMPATIBILITY IDEOGRAPH-2F8A2 → CJK UNIFIED IDEOGRAPH-391C     # 
+
+2F8A1 ;        393A ;  SA      # ( 㤺 → 㤺 ) CJK COMPATIBILITY IDEOGRAPH-2F8A1 → CJK UNIFIED IDEOGRAPH-393A     # 
+
+2F8C2 ;        3A2E ;  SA      # ( 㨮 → 㨮 ) CJK COMPATIBILITY IDEOGRAPH-2F8C2 → CJK UNIFIED IDEOGRAPH-3A2E     # 
+
+6409 ; 3A41 ;  SA      # ( 搉 → 㩁 ) CJK UNIFIED IDEOGRAPH-6409 → CJK UNIFIED IDEOGRAPH-3A41     # 
+
+2F8C7 ;        3A6C ;  SA      # ( 㩬 → 㩬 ) CJK COMPATIBILITY IDEOGRAPH-2F8C7 → CJK UNIFIED IDEOGRAPH-3A6C     # 
+
+66F6 ; 3ADA ;  SA      # ( 曶 → 㫚 ) CJK UNIFIED IDEOGRAPH-66F6 → CJK UNIFIED IDEOGRAPH-3ADA     # 
+
+2F8D1 ;        3AE4 ;  SA      # ( 㫤 → 㫤 ) CJK COMPATIBILITY IDEOGRAPH-2F8D1 → CJK UNIFIED IDEOGRAPH-3AE4     # 
+
+2F8D0 ;        3B08 ;  SA      # ( 㬈 → 㬈 ) CJK COMPATIBILITY IDEOGRAPH-2F8D0 → CJK UNIFIED IDEOGRAPH-3B08     # 
+
+2F8CE ;        3B19 ;  SA      # ( 㬙 → 㬙 ) CJK COMPATIBILITY IDEOGRAPH-2F8CE → CJK UNIFIED IDEOGRAPH-3B19     # 
+
+80F6 ; 3B35 ;  SA      # ( 胶 → 㬵 ) CJK UNIFIED IDEOGRAPH-80F6 → CJK UNIFIED IDEOGRAPH-3B35     # 
+
+5E50 ; 3B3A ;  SA      # ( 幐 → 㬺 ) CJK UNIFIED IDEOGRAPH-5E50 → CJK UNIFIED IDEOGRAPH-3B3A     # 
+
+4420 ; 3B3B ;  SA      # ( 䐠 → 㬻 ) CJK UNIFIED IDEOGRAPH-4420 → CJK UNIFIED IDEOGRAPH-3B3B     # 
+
+2F8DE ;        3B49 ;  SA      # ( 㭉 → 㭉 ) CJK COMPATIBILITY IDEOGRAPH-2F8DE → CJK UNIFIED IDEOGRAPH-3B49     # 
+
+FAD2 ; 3B9D ;  SA      # ( 㮝 → 㮝 ) CJK COMPATIBILITY IDEOGRAPH-FAD2 → CJK UNIFIED IDEOGRAPH-3B9D       # 
+2F8E7 ;        3B9D ;  SA      # ( 㮝 → 㮝 ) CJK COMPATIBILITY IDEOGRAPH-2F8E7 → CJK UNIFIED IDEOGRAPH-3B9D     # 
+
+69E9 ; 3BA3 ;  SA      # ( 槩 → 㮣 ) CJK UNIFIED IDEOGRAPH-69E9 → CJK UNIFIED IDEOGRAPH-3BA3     # 
+
+2F8EE ;        3C18 ;  SA      # ( 㰘 → 㰘 ) CJK COMPATIBILITY IDEOGRAPH-2F8EE → CJK UNIFIED IDEOGRAPH-3C18     # 
+
+2F8F2 ;        3C4E ;  SA      # ( 㱎 → 㱎 ) CJK COMPATIBILITY IDEOGRAPH-2F8F2 → CJK UNIFIED IDEOGRAPH-3C4E     # 
+
+2F90A ;        3D33 ;  SA      # ( 㴳 → 㴳 ) CJK COMPATIBILITY IDEOGRAPH-2F90A → CJK UNIFIED IDEOGRAPH-3D33     # 
+
+2F916 ;        3D96 ;  SA      # ( 㶖 → 㶖 ) CJK COMPATIBILITY IDEOGRAPH-2F916 → CJK UNIFIED IDEOGRAPH-3D96     # 
+
+2F92A ;        3EAC ;  SA      # ( 㺬 → 㺬 ) CJK COMPATIBILITY IDEOGRAPH-2F92A → CJK UNIFIED IDEOGRAPH-3EAC     # 
+
+2F92C ;        3EB8 ;  SA      # ( 㺸 → 㺸 ) CJK COMPATIBILITY IDEOGRAPH-2F92C → CJK UNIFIED IDEOGRAPH-3EB8     # 
+2F92D ;        3EB8 ;  SA      # ( 㺸 → 㺸 ) CJK COMPATIBILITY IDEOGRAPH-2F92D → CJK UNIFIED IDEOGRAPH-3EB8     # 
+
+2F933 ;        3F1B ;  SA      # ( 㼛 → 㼛 ) CJK COMPATIBILITY IDEOGRAPH-2F933 → CJK UNIFIED IDEOGRAPH-3F1B     # 
+
+2F93E ;        3FFC ;  SA      # ( 㿼 → 㿼 ) CJK COMPATIBILITY IDEOGRAPH-2F93E → CJK UNIFIED IDEOGRAPH-3FFC     # 
+
+2F93F ;        4008 ;  SA      # ( 䀈 → 䀈 ) CJK COMPATIBILITY IDEOGRAPH-2F93F → CJK UNIFIED IDEOGRAPH-4008     # 
+
+FAD3 ; 4018 ;  SA      # ( 䀘 → 䀘 ) CJK COMPATIBILITY IDEOGRAPH-FAD3 → CJK UNIFIED IDEOGRAPH-4018       # 
+
+9FC3 ; 4039 ;  SA      # ( 鿃 → 䀹 ) CJK UNIFIED IDEOGRAPH-9FC3 → CJK UNIFIED IDEOGRAPH-4039     # →䀹→
+FAD4 ; 4039 ;  SA      # ( 䀹 → 䀹 ) CJK COMPATIBILITY IDEOGRAPH-FAD4 → CJK UNIFIED IDEOGRAPH-4039       # 
+2F949 ;        4039 ;  SA      # ( 䀹 → 䀹 ) CJK COMPATIBILITY IDEOGRAPH-2F949 → CJK UNIFIED IDEOGRAPH-4039     # 
+
+6663 ; 403F ;  SA      # ( 晣 → 䀿 ) CJK UNIFIED IDEOGRAPH-6663 → CJK UNIFIED IDEOGRAPH-403F     # 
+
+2F94B ;        4046 ;  SA      # ( 䁆 → 䁆 ) CJK COMPATIBILITY IDEOGRAPH-2F94B → CJK UNIFIED IDEOGRAPH-4046     # 
+
+2F94C ;        4096 ;  SA      # ( 䂖 → 䂖 ) CJK COMPATIBILITY IDEOGRAPH-2F94C → CJK UNIFIED IDEOGRAPH-4096     # 
+
+2F951 ;        40E3 ;  SA      # ( 䃣 → 䃣 ) CJK COMPATIBILITY IDEOGRAPH-2F951 → CJK UNIFIED IDEOGRAPH-40E3     # 
+
+2F958 ;        412F ;  SA      # ( 䄯 → 䄯 ) CJK COMPATIBILITY IDEOGRAPH-2F958 → CJK UNIFIED IDEOGRAPH-412F     # 
+
+2F960 ;        4202 ;  SA      # ( 䈂 → 䈂 ) CJK COMPATIBILITY IDEOGRAPH-2F960 → CJK UNIFIED IDEOGRAPH-4202     # 
+
+2F964 ;        4227 ;  SA      # ( 䈧 → 䈧 ) CJK COMPATIBILITY IDEOGRAPH-2F964 → CJK UNIFIED IDEOGRAPH-4227     # 
+
+2F967 ;        42A0 ;  SA      # ( 䊠 → 䊠 ) CJK COMPATIBILITY IDEOGRAPH-2F967 → CJK UNIFIED IDEOGRAPH-42A0     # 
+
+2F96D ;        4301 ;  SA      # ( 䌁 → 䌁 ) CJK COMPATIBILITY IDEOGRAPH-2F96D → CJK UNIFIED IDEOGRAPH-4301     # 
+
+2F971 ;        4334 ;  SA      # ( 䌴 → 䌴 ) CJK COMPATIBILITY IDEOGRAPH-2F971 → CJK UNIFIED IDEOGRAPH-4334     # 
+
+2F974 ;        4359 ;  SA      # ( 䍙 → 䍙 ) CJK COMPATIBILITY IDEOGRAPH-2F974 → CJK UNIFIED IDEOGRAPH-4359     # 
+
+2F981 ;        43D5 ;  SA      # ( 䏕 → 䏕 ) CJK COMPATIBILITY IDEOGRAPH-2F981 → CJK UNIFIED IDEOGRAPH-43D5     # 
+
+2F8D7 ;        43D9 ;  SA      # ( 䏙 → 䏙 ) CJK COMPATIBILITY IDEOGRAPH-2F8D7 → CJK UNIFIED IDEOGRAPH-43D9     # 
+
+2F984 ;        440B ;  SA      # ( 䐋 → 䐋 ) CJK COMPATIBILITY IDEOGRAPH-2F984 → CJK UNIFIED IDEOGRAPH-440B     # 
+
+6726 ; 4443 ;  SA      # ( 朦 → 䑃 ) CJK UNIFIED IDEOGRAPH-6726 → CJK UNIFIED IDEOGRAPH-4443     # 
+
+2F98E ;        446B ;  SA      # ( 䑫 → 䑫 ) CJK COMPATIBILITY IDEOGRAPH-2F98E → CJK UNIFIED IDEOGRAPH-446B     # 
+
+2F9A7 ;        452B ;  SA      # ( 䔫 → 䔫 ) CJK COMPATIBILITY IDEOGRAPH-2F9A7 → CJK UNIFIED IDEOGRAPH-452B     # 
+
+2F9AE ;        455D ;  SA      # ( 䕝 → 䕝 ) CJK COMPATIBILITY IDEOGRAPH-2F9AE → CJK UNIFIED IDEOGRAPH-455D     # 
+
+2F9AF ;        4561 ;  SA      # ( 䕡 → 䕡 ) CJK COMPATIBILITY IDEOGRAPH-2F9AF → CJK UNIFIED IDEOGRAPH-4561     # 
+
+2F9B2 ;        456B ;  SA      # ( 䕫 → 䕫 ) CJK COMPATIBILITY IDEOGRAPH-2F9B2 → CJK UNIFIED IDEOGRAPH-456B     # 
+
+2F9BF ;        45D7 ;  SA      # ( 䗗 → 䗗 ) CJK COMPATIBILITY IDEOGRAPH-2F9BF → CJK UNIFIED IDEOGRAPH-45D7     # 
+
+2F9C2 ;        45F9 ;  SA      # ( 䗹 → 䗹 ) CJK COMPATIBILITY IDEOGRAPH-2F9C2 → CJK UNIFIED IDEOGRAPH-45F9     # 
+
+2F9C8 ;        4635 ;  SA      # ( 䘵 → 䘵 ) CJK COMPATIBILITY IDEOGRAPH-2F9C8 → CJK UNIFIED IDEOGRAPH-4635     # 
+
+8A1E ; 46B6 ;  SA      # ( 訞 → 䚶 ) CJK UNIFIED IDEOGRAPH-8A1E → CJK UNIFIED IDEOGRAPH-46B6     # 
+
+2F9CD ;        46BE ;  SA      # ( 䚾 → 䚾 ) CJK COMPATIBILITY IDEOGRAPH-2F9CD → CJK UNIFIED IDEOGRAPH-46BE     # 
+
+2F9CE ;        46C7 ;  SA      # ( 䛇 → 䛇 ) CJK COMPATIBILITY IDEOGRAPH-2F9CE → CJK UNIFIED IDEOGRAPH-46C7     # 
+
+2F9EF ;        4995 ;  SA      # ( 䦕 → 䦕 ) CJK COMPATIBILITY IDEOGRAPH-2F9EF → CJK UNIFIED IDEOGRAPH-4995     # 
+
+2F9F2 ;        49E6 ;  SA      # ( 䧦 → 䧦 ) CJK COMPATIBILITY IDEOGRAPH-2F9F2 → CJK UNIFIED IDEOGRAPH-49E6     # 
+
+2F9F8 ;        4A6E ;  SA      # ( 䩮 → 䩮 ) CJK COMPATIBILITY IDEOGRAPH-2F9F8 → CJK UNIFIED IDEOGRAPH-4A6E     # 
+
+2F9F9 ;        4A76 ;  SA      # ( 䩶 → 䩶 ) CJK COMPATIBILITY IDEOGRAPH-2F9F9 → CJK UNIFIED IDEOGRAPH-4A76     # 
+
+2F9FC ;        4AB2 ;  SA      # ( 䪲 → 䪲 ) CJK COMPATIBILITY IDEOGRAPH-2F9FC → CJK UNIFIED IDEOGRAPH-4AB2     # 
+
+2FA03 ;        4B33 ;  SA      # ( 䬳 → 䬳 ) CJK COMPATIBILITY IDEOGRAPH-2FA03 → CJK UNIFIED IDEOGRAPH-4B33     # 
+
+2FA08 ;        4BCE ;  SA      # ( 䯎 → 䯎 ) CJK COMPATIBILITY IDEOGRAPH-2FA08 → CJK UNIFIED IDEOGRAPH-4BCE     # 
+
+2FA0D ;        4CCE ;  SA      # ( 䳎 → 䳎 ) CJK COMPATIBILITY IDEOGRAPH-2FA0D → CJK UNIFIED IDEOGRAPH-4CCE     # 
+
+2FA0E ;        4CED ;  SA      # ( 䳭 → 䳭 ) CJK COMPATIBILITY IDEOGRAPH-2FA0E → CJK UNIFIED IDEOGRAPH-4CED     # 
+
+2FA11 ;        4CF8 ;  SA      # ( 䳸 → 䳸 ) CJK COMPATIBILITY IDEOGRAPH-2FA11 → CJK UNIFIED IDEOGRAPH-4CF8     # 
+
+2FA16 ;        4D56 ;  SA      # ( 䵖 → 䵖 ) CJK COMPATIBILITY IDEOGRAPH-2FA16 → CJK UNIFIED IDEOGRAPH-4D56     # 
+
+2F803 ;        20122 ; SA      # ( 𠄢 → 𠄢 ) CJK COMPATIBILITY IDEOGRAPH-2F803 → CJK UNIFIED IDEOGRAPH-20122   # 
+
+2F812 ;        2051C ; SA      # ( 𠔜 → 𠔜 ) CJK COMPATIBILITY IDEOGRAPH-2F812 → CJK UNIFIED IDEOGRAPH-2051C   # 
+
+2F91B ;        20525 ; SA      # ( 𠔥 → 𠔥 ) CJK COMPATIBILITY IDEOGRAPH-2F91B → CJK UNIFIED IDEOGRAPH-20525   # 
+
+2F816 ;        2054B ; SA      # ( 𠕋 → 𠕋 ) CJK COMPATIBILITY IDEOGRAPH-2F816 → CJK UNIFIED IDEOGRAPH-2054B   # 
+
+2F80D ;        2063A ; SA      # ( 𠘺 → 𠘺 ) CJK COMPATIBILITY IDEOGRAPH-2F80D → CJK UNIFIED IDEOGRAPH-2063A   # 
+
+2F9D9 ;        20804 ; SA      # ( 𠠄 → 𠠄 ) CJK COMPATIBILITY IDEOGRAPH-2F9D9 → CJK UNIFIED IDEOGRAPH-20804   # 
+
+2F9DD ;        208DE ; SA      # ( 𠣞 → 𠣞 ) CJK COMPATIBILITY IDEOGRAPH-2F9DD → CJK UNIFIED IDEOGRAPH-208DE   # 
+
+2F834 ;        20A2C ; SA      # ( 𠨬 → 𠨬 ) CJK COMPATIBILITY IDEOGRAPH-2F834 → CJK UNIFIED IDEOGRAPH-20A2C   # 
+
+2F838 ;        20B63 ; SA      # ( 𠭣 → 𠭣 ) CJK COMPATIBILITY IDEOGRAPH-2F838 → CJK UNIFIED IDEOGRAPH-20B63   # 
+
+2F859 ;        214E4 ; SA      # ( 𡓤 → 𡓤 ) CJK COMPATIBILITY IDEOGRAPH-2F859 → CJK UNIFIED IDEOGRAPH-214E4   # 
+
+2F860 ;        216A8 ; SA      # ( 𡚨 → 𡚨 ) CJK COMPATIBILITY IDEOGRAPH-2F860 → CJK UNIFIED IDEOGRAPH-216A8   # 
+
+2F861 ;        216EA ; SA      # ( 𡛪 → 𡛪 ) CJK COMPATIBILITY IDEOGRAPH-2F861 → CJK UNIFIED IDEOGRAPH-216EA   # 
+
+2F86C ;        219C8 ; SA      # ( 𡧈 → 𡧈 ) CJK COMPATIBILITY IDEOGRAPH-2F86C → CJK UNIFIED IDEOGRAPH-219C8   # 
+
+2F871 ;        21B18 ; SA      # ( 𡬘 → 𡬘 ) CJK COMPATIBILITY IDEOGRAPH-2F871 → CJK UNIFIED IDEOGRAPH-21B18   # 
+
+2F8F8 ;        21D0B ; SA      # ( 𡴋 → 𡴋 ) CJK COMPATIBILITY IDEOGRAPH-2F8F8 → CJK UNIFIED IDEOGRAPH-21D0B   # 
+
+2F87B ;        21DE4 ; SA      # ( 𡷤 → 𡷤 ) CJK COMPATIBILITY IDEOGRAPH-2F87B → CJK UNIFIED IDEOGRAPH-21DE4   # 
+
+2F87D ;        21DE6 ; SA      # ( 𡷦 → 𡷦 ) CJK COMPATIBILITY IDEOGRAPH-2F87D → CJK UNIFIED IDEOGRAPH-21DE6   # 
+
+2F889 ;        22183 ; SA      # ( 𢆃 → 𢆃 ) CJK COMPATIBILITY IDEOGRAPH-2F889 → CJK UNIFIED IDEOGRAPH-22183   # 
+
+2F939 ;        2219F ; SA      # ( 𢆟 → 𢆟 ) CJK COMPATIBILITY IDEOGRAPH-2F939 → CJK UNIFIED IDEOGRAPH-2219F   # 
+
+2F891 ;        22331 ; SA      # ( 𢌱 → 𢌱 ) CJK COMPATIBILITY IDEOGRAPH-2F891 → CJK UNIFIED IDEOGRAPH-22331   # 
+2F892 ;        22331 ; SA      # ( 𢌱 → 𢌱 ) CJK COMPATIBILITY IDEOGRAPH-2F892 → CJK UNIFIED IDEOGRAPH-22331   # 
+
+2F8A4 ;        226D4 ; SA      # ( 𢛔 → 𢛔 ) CJK COMPATIBILITY IDEOGRAPH-2F8A4 → CJK UNIFIED IDEOGRAPH-226D4   # 
+
+FAD0 ; 22844 ; SA      # ( 𢡄 → 𢡄 ) CJK COMPATIBILITY IDEOGRAPH-FAD0 → CJK UNIFIED IDEOGRAPH-22844     # 
+
+FACF ; 2284A ; SA      # ( 𢡊 → 𢡊 ) CJK COMPATIBILITY IDEOGRAPH-FACF → CJK UNIFIED IDEOGRAPH-2284A     # 
+
+2F8B8 ;        22B0C ; SA      # ( 𢬌 → 𢬌 ) CJK COMPATIBILITY IDEOGRAPH-2F8B8 → CJK UNIFIED IDEOGRAPH-22B0C   # 
+
+2F8BE ;        22BF1 ; SA      # ( 𢯱 → 𢯱 ) CJK COMPATIBILITY IDEOGRAPH-2F8BE → CJK UNIFIED IDEOGRAPH-22BF1   # 
+
+2F8CA ;        2300A ; SA      # ( 𣀊 → 𣀊 ) CJK COMPATIBILITY IDEOGRAPH-2F8CA → CJK UNIFIED IDEOGRAPH-2300A   # 
+
+2F897 ;        232B8 ; SA      # ( 𣊸 → 𣊸 ) CJK COMPATIBILITY IDEOGRAPH-2F897 → CJK UNIFIED IDEOGRAPH-232B8   # 
+
+2F980 ;        2335F ; SA      # ( 𣍟 → 𣍟 ) CJK COMPATIBILITY IDEOGRAPH-2F980 → CJK UNIFIED IDEOGRAPH-2335F   # 
+
+2F989 ;        23393 ; SA      # ( 𣎓 → 𣎓 ) CJK COMPATIBILITY IDEOGRAPH-2F989 → CJK UNIFIED IDEOGRAPH-23393   # 
+
+2F98A ;        2339C ; SA      # ( 𣎜 → 𣎜 ) CJK COMPATIBILITY IDEOGRAPH-2F98A → CJK UNIFIED IDEOGRAPH-2339C   # 
+
+2F8DD ;        233C3 ; SA      # ( 𣏃 → 𣏃 ) CJK COMPATIBILITY IDEOGRAPH-2F8DD → CJK UNIFIED IDEOGRAPH-233C3   # 
+
+FAD1 ; 233D5 ; SA      # ( 𣏕 → 𣏕 ) CJK COMPATIBILITY IDEOGRAPH-FAD1 → CJK UNIFIED IDEOGRAPH-233D5     # 
+
+2F8E3 ;        2346D ; SA      # ( 𣑭 → 𣑭 ) CJK COMPATIBILITY IDEOGRAPH-2F8E3 → CJK UNIFIED IDEOGRAPH-2346D   # 
+
+2F8EC ;        236A3 ; SA      # ( 𣚣 → 𣚣 ) CJK COMPATIBILITY IDEOGRAPH-2F8EC → CJK UNIFIED IDEOGRAPH-236A3   # 
+
+2F8F0 ;        238A7 ; SA      # ( 𣢧 → 𣢧 ) CJK COMPATIBILITY IDEOGRAPH-2F8F0 → CJK UNIFIED IDEOGRAPH-238A7   # 
+
+2F8F7 ;        23A8D ; SA      # ( 𣪍 → 𣪍 ) CJK COMPATIBILITY IDEOGRAPH-2F8F7 → CJK UNIFIED IDEOGRAPH-23A8D   # 
+
+2F8F9 ;        23AFA ; SA      # ( 𣫺 → 𣫺 ) CJK COMPATIBILITY IDEOGRAPH-2F8F9 → CJK UNIFIED IDEOGRAPH-23AFA   # 
+
+2F8FB ;        23CBC ; SA      # ( 𣲼 → 𣲼 ) CJK COMPATIBILITY IDEOGRAPH-2F8FB → CJK UNIFIED IDEOGRAPH-23CBC   # 
+
+2F906 ;        23D1E ; SA      # ( 𣴞 → 𣴞 ) CJK COMPATIBILITY IDEOGRAPH-2F906 → CJK UNIFIED IDEOGRAPH-23D1E   # 
+
+2F90D ;        23ED1 ; SA      # ( 𣻑 → 𣻑 ) CJK COMPATIBILITY IDEOGRAPH-2F90D → CJK UNIFIED IDEOGRAPH-23ED1   # 
+
+2F910 ;        23F5E ; SA      # ( 𣽞 → 𣽞 ) CJK COMPATIBILITY IDEOGRAPH-2F910 → CJK UNIFIED IDEOGRAPH-23F5E   # 
+
+2F911 ;        23F8E ; SA      # ( 𣾎 → 𣾎 ) CJK COMPATIBILITY IDEOGRAPH-2F911 → CJK UNIFIED IDEOGRAPH-23F8E   # 
+
+2F91D ;        24263 ; SA      # ( 𤉣 → 𤉣 ) CJK COMPATIBILITY IDEOGRAPH-2F91D → CJK UNIFIED IDEOGRAPH-24263   # 
+
+FA6C ; 242EE ; SA      # ( 𤋮 → 𤋮 ) CJK COMPATIBILITY IDEOGRAPH-FA6C → CJK UNIFIED IDEOGRAPH-242EE     # 
+
+2F91F ;        243AB ; SA      # ( 𤎫 → 𤎫 ) CJK COMPATIBILITY IDEOGRAPH-2F91F → CJK UNIFIED IDEOGRAPH-243AB   # 
+
+2F923 ;        24608 ; SA      # ( 𤘈 → 𤘈 ) CJK COMPATIBILITY IDEOGRAPH-2F923 → CJK UNIFIED IDEOGRAPH-24608   # 
+
+2F926 ;        24735 ; SA      # ( 𤜵 → 𤜵 ) CJK COMPATIBILITY IDEOGRAPH-2F926 → CJK UNIFIED IDEOGRAPH-24735   # 
+
+2F927 ;        24814 ; SA      # ( 𤠔 → 𤠔 ) CJK COMPATIBILITY IDEOGRAPH-2F927 → CJK UNIFIED IDEOGRAPH-24814   # 
+
+2F935 ;        24C36 ; SA      # ( 𤰶 → 𤰶 ) CJK COMPATIBILITY IDEOGRAPH-2F935 → CJK UNIFIED IDEOGRAPH-24C36   # 
+
+2F937 ;        24C92 ; SA      # ( 𤲒 → 𤲒 ) CJK COMPATIBILITY IDEOGRAPH-2F937 → CJK UNIFIED IDEOGRAPH-24C92   # 
+
+2F93B ;        24FA1 ; SA      # ( 𤾡 → 𤾡 ) CJK COMPATIBILITY IDEOGRAPH-2F93B → CJK UNIFIED IDEOGRAPH-24FA1   # 
+
+2F93C ;        24FB8 ; SA      # ( 𤾸 → 𤾸 ) CJK COMPATIBILITY IDEOGRAPH-2F93C → CJK UNIFIED IDEOGRAPH-24FB8   # 
+
+2F93D ;        25044 ; SA      # ( 𥁄 → 𥁄 ) CJK COMPATIBILITY IDEOGRAPH-2F93D → CJK UNIFIED IDEOGRAPH-25044   # 
+
+2F942 ;        250F2 ; SA      # ( 𥃲 → 𥃲 ) CJK COMPATIBILITY IDEOGRAPH-2F942 → CJK UNIFIED IDEOGRAPH-250F2   # 
+
+2F941 ;        250F3 ; SA      # ( 𥃳 → 𥃳 ) CJK COMPATIBILITY IDEOGRAPH-2F941 → CJK UNIFIED IDEOGRAPH-250F3   # 
+
+2F943 ;        25119 ; SA      # ( 𥄙 → 𥄙 ) CJK COMPATIBILITY IDEOGRAPH-2F943 → CJK UNIFIED IDEOGRAPH-25119   # 
+
+2F944 ;        25133 ; SA      # ( 𥄳 → 𥄳 ) CJK COMPATIBILITY IDEOGRAPH-2F944 → CJK UNIFIED IDEOGRAPH-25133   # 
+
+FAD5 ; 25249 ; SA      # ( 𥉉 → 𥉉 ) CJK COMPATIBILITY IDEOGRAPH-FAD5 → CJK UNIFIED IDEOGRAPH-25249     # 
+
+2F94D ;        2541D ; SA      # ( 𥐝 → 𥐝 ) CJK COMPATIBILITY IDEOGRAPH-2F94D → CJK UNIFIED IDEOGRAPH-2541D   # 
+
+2F952 ;        25626 ; SA      # ( 𥘦 → 𥘦 ) CJK COMPATIBILITY IDEOGRAPH-2F952 → CJK UNIFIED IDEOGRAPH-25626   # 
+
+2F954 ;        2569A ; SA      # ( 𥚚 → 𥚚 ) CJK COMPATIBILITY IDEOGRAPH-2F954 → CJK UNIFIED IDEOGRAPH-2569A   # 
+
+2F955 ;        256C5 ; SA      # ( 𥛅 → 𥛅 ) CJK COMPATIBILITY IDEOGRAPH-2F955 → CJK UNIFIED IDEOGRAPH-256C5   # 
+
+2F95C ;        2597C ; SA      # ( 𥥼 → 𥥼 ) CJK COMPATIBILITY IDEOGRAPH-2F95C → CJK UNIFIED IDEOGRAPH-2597C   # 
+
+2F95D ;        25AA7 ; SA      # ( 𥪧 → 𥪧 ) CJK COMPATIBILITY IDEOGRAPH-2F95D → CJK UNIFIED IDEOGRAPH-25AA7   # 
+2F95E ;        25AA7 ; SA      # ( 𥪧 → 𥪧 ) CJK COMPATIBILITY IDEOGRAPH-2F95E → CJK UNIFIED IDEOGRAPH-25AA7   # 
+
+2F961 ;        25BAB ; SA      # ( 𥮫 → 𥮫 ) CJK COMPATIBILITY IDEOGRAPH-2F961 → CJK UNIFIED IDEOGRAPH-25BAB   # 
+
+2F965 ;        25C80 ; SA      # ( 𥲀 → 𥲀 ) CJK COMPATIBILITY IDEOGRAPH-2F965 → CJK UNIFIED IDEOGRAPH-25C80   # 
+
+FAD6 ; 25CD0 ; SA      # ( 𥳐 → 𥳐 ) CJK COMPATIBILITY IDEOGRAPH-FAD6 → CJK UNIFIED IDEOGRAPH-25CD0     # 
+
+2F96B ;        25F86 ; SA      # ( 𥾆 → 𥾆 ) CJK COMPATIBILITY IDEOGRAPH-2F96B → CJK UNIFIED IDEOGRAPH-25F86   # 
+
+2F898 ;        261DA ; SA      # ( 𦇚 → 𦇚 ) CJK COMPATIBILITY IDEOGRAPH-2F898 → CJK UNIFIED IDEOGRAPH-261DA   # 
+
+2F972 ;        26228 ; SA      # ( 𦈨 → 𦈨 ) CJK COMPATIBILITY IDEOGRAPH-2F972 → CJK UNIFIED IDEOGRAPH-26228   # 
+
+2F973 ;        26247 ; SA      # ( 𦉇 → 𦉇 ) CJK COMPATIBILITY IDEOGRAPH-2F973 → CJK UNIFIED IDEOGRAPH-26247   # 
+
+2F975 ;        262D9 ; SA      # ( 𦋙 → 𦋙 ) CJK COMPATIBILITY IDEOGRAPH-2F975 → CJK UNIFIED IDEOGRAPH-262D9   # 
+
+2F977 ;        2633E ; SA      # ( 𦌾 → 𦌾 ) CJK COMPATIBILITY IDEOGRAPH-2F977 → CJK UNIFIED IDEOGRAPH-2633E   # 
+
+2F97B ;        264DA ; SA      # ( 𦓚 → 𦓚 ) CJK COMPATIBILITY IDEOGRAPH-2F97B → CJK UNIFIED IDEOGRAPH-264DA   # 
+
+2F97C ;        26523 ; SA      # ( 𦔣 → 𦔣 ) CJK COMPATIBILITY IDEOGRAPH-2F97C → CJK UNIFIED IDEOGRAPH-26523   # 
+
+2F97E ;        265A8 ; SA      # ( 𦖨 → 𦖨 ) CJK COMPATIBILITY IDEOGRAPH-2F97E → CJK UNIFIED IDEOGRAPH-265A8   # 
+
+2F987 ;        267A7 ; SA      # ( 𦞧 → 𦞧 ) CJK COMPATIBILITY IDEOGRAPH-2F987 → CJK UNIFIED IDEOGRAPH-267A7   # 
+
+2F988 ;        267B5 ; SA      # ( 𦞵 → 𦞵 ) CJK COMPATIBILITY IDEOGRAPH-2F988 → CJK UNIFIED IDEOGRAPH-267B5   # 
+
+2F997 ;        26B3C ; SA      # ( 𦬼 → 𦬼 ) CJK COMPATIBILITY IDEOGRAPH-2F997 → CJK UNIFIED IDEOGRAPH-26B3C   # 
+
+2F9A4 ;        26C36 ; SA      # ( 𦰶 → 𦰶 ) CJK COMPATIBILITY IDEOGRAPH-2F9A4 → CJK UNIFIED IDEOGRAPH-26C36   # 
+
+2F9A6 ;        26CD5 ; SA      # ( 𦳕 → 𦳕 ) CJK COMPATIBILITY IDEOGRAPH-2F9A6 → CJK UNIFIED IDEOGRAPH-26CD5   # 
+
+2F9A5 ;        26D6B ; SA      # ( 𦵫 → 𦵫 ) CJK COMPATIBILITY IDEOGRAPH-2F9A5 → CJK UNIFIED IDEOGRAPH-26D6B   # 
+
+2F9AD ;        26F2C ; SA      # ( 𦼬 → 𦼬 ) CJK COMPATIBILITY IDEOGRAPH-2F9AD → CJK UNIFIED IDEOGRAPH-26F2C   # 
+
+2F9B0 ;        26FB1 ; SA      # ( 𦾱 → 𦾱 ) CJK COMPATIBILITY IDEOGRAPH-2F9B0 → CJK UNIFIED IDEOGRAPH-26FB1   # 
+
+2F9B1 ;        270D2 ; SA      # ( 𧃒 → 𧃒 ) CJK COMPATIBILITY IDEOGRAPH-2F9B1 → CJK UNIFIED IDEOGRAPH-270D2   # 
+
+2F9AB ;        273CA ; SA      # ( 𧏊 → 𧏊 ) CJK COMPATIBILITY IDEOGRAPH-2F9AB → CJK UNIFIED IDEOGRAPH-273CA   # 
+
+2F9C5 ;        27667 ; SA      # ( 𧙧 → 𧙧 ) CJK COMPATIBILITY IDEOGRAPH-2F9C5 → CJK UNIFIED IDEOGRAPH-27667   # 
+
+2F9CB ;        278AE ; SA      # ( 𧢮 → 𧢮 ) CJK COMPATIBILITY IDEOGRAPH-2F9CB → CJK UNIFIED IDEOGRAPH-278AE   # 
+
+2F9CC ;        27966 ; SA      # ( 𧥦 → 𧥦 ) CJK COMPATIBILITY IDEOGRAPH-2F9CC → CJK UNIFIED IDEOGRAPH-27966   # 
+
+2F9D3 ;        27CA8 ; SA      # ( 𧲨 → 𧲨 ) CJK COMPATIBILITY IDEOGRAPH-2F9D3 → CJK UNIFIED IDEOGRAPH-27CA8   # 
+
+FAD7 ; 27ED3 ; SA      # ( 𧻓 → 𧻓 ) CJK COMPATIBILITY IDEOGRAPH-FAD7 → CJK UNIFIED IDEOGRAPH-27ED3     # 
+
+2F9D8 ;        27F2F ; SA      # ( 𧼯 → 𧼯 ) CJK COMPATIBILITY IDEOGRAPH-2F9D8 → CJK UNIFIED IDEOGRAPH-27F2F   # 
+
+2F9E0 ;        285D2 ; SA      # ( 𨗒 → 𨗒 ) CJK COMPATIBILITY IDEOGRAPH-2F9E0 → CJK UNIFIED IDEOGRAPH-285D2   # 
+
+2F9E1 ;        285ED ; SA      # ( 𨗭 → 𨗭 ) CJK COMPATIBILITY IDEOGRAPH-2F9E1 → CJK UNIFIED IDEOGRAPH-285ED   # 
+
+2F9E5 ;        2872E ; SA      # ( 𨜮 → 𨜮 ) CJK COMPATIBILITY IDEOGRAPH-2F9E5 → CJK UNIFIED IDEOGRAPH-2872E   # 
+
+2F9ED ;        28BFA ; SA      # ( 𨯺 → 𨯺 ) CJK COMPATIBILITY IDEOGRAPH-2F9ED → CJK UNIFIED IDEOGRAPH-28BFA   # 
+
+2F9F1 ;        28D77 ; SA      # ( 𨵷 → 𨵷 ) CJK COMPATIBILITY IDEOGRAPH-2F9F1 → CJK UNIFIED IDEOGRAPH-28D77   # 
+
+2F9F6 ;        29145 ; SA      # ( 𩅅 → 𩅅 ) CJK COMPATIBILITY IDEOGRAPH-2F9F6 → CJK UNIFIED IDEOGRAPH-29145   # 
+
+2F81C ;        291DF ; SA      # ( 𩇟 → 𩇟 ) CJK COMPATIBILITY IDEOGRAPH-2F81C → CJK UNIFIED IDEOGRAPH-291DF   # 
+
+2F9F7 ;        2921A ; SA      # ( 𩈚 → 𩈚 ) CJK COMPATIBILITY IDEOGRAPH-2F9F7 → CJK UNIFIED IDEOGRAPH-2921A   # 
+
+2F9FB ;        2940A ; SA      # ( 𩐊 → 𩐊 ) CJK COMPATIBILITY IDEOGRAPH-2F9FB → CJK UNIFIED IDEOGRAPH-2940A   # 
+
+2F9FD ;        29496 ; SA      # ( 𩒖 → 𩒖 ) CJK COMPATIBILITY IDEOGRAPH-2F9FD → CJK UNIFIED IDEOGRAPH-29496   # 
+
+2FA01 ;        295B6 ; SA      # ( 𩖶 → 𩖶 ) CJK COMPATIBILITY IDEOGRAPH-2FA01 → CJK UNIFIED IDEOGRAPH-295B6   # 
+
+2FA09 ;        29B30 ; SA      # ( 𩬰 → 𩬰 ) CJK COMPATIBILITY IDEOGRAPH-2FA09 → CJK UNIFIED IDEOGRAPH-29B30   # 
+
+2FA10 ;        2A0CE ; SA      # ( 𪃎 → 𪃎 ) CJK COMPATIBILITY IDEOGRAPH-2FA10 → CJK UNIFIED IDEOGRAPH-2A0CE   # 
+
+2FA12 ;        2A105 ; SA      # ( 𪄅 → 𪄅 ) CJK COMPATIBILITY IDEOGRAPH-2FA12 → CJK UNIFIED IDEOGRAPH-2A105   # 
+
+2FA13 ;        2A20E ; SA      # ( 𪈎 → 𪈎 ) CJK COMPATIBILITY IDEOGRAPH-2FA13 → CJK UNIFIED IDEOGRAPH-2A20E   # 
+
+2FA14 ;        2A291 ; SA      # ( 𪊑 → 𪊑 ) CJK COMPATIBILITY IDEOGRAPH-2FA14 → CJK UNIFIED IDEOGRAPH-2A291   # 
+
+2F88F ;        2A392 ; SA      # ( 𪎒 → 𪎒 ) CJK COMPATIBILITY IDEOGRAPH-2F88F → CJK UNIFIED IDEOGRAPH-2A392   # 
+
+2FA1D ;        2A600 ; SA      # ( 𪘀 → 𪘀 ) CJK COMPATIBILITY IDEOGRAPH-2FA1D → CJK UNIFIED IDEOGRAPH-2A600   # 
+
+# total for (SA): 4999
+
+
+# Mixed-Script, Lowercase Confusables
+
+05AD ; 0596 ;  ML      # ( ֭ → ֖ ) HEBREW ACCENT DEHI → HEBREW ACCENT TIPEHA     # 
+
+05AE ; 0598 ;  ML      # ( ֮ → ֘ ) HEBREW ACCENT ZINOR → HEBREW ACCENT ZARQA     # 
+
+05A8 ; 0599 ;  ML      # ( ֨ → ֙ ) HEBREW ACCENT QADMA → HEBREW ACCENT PASHTA    # 
+
+05A4 ; 059A ;  ML      # ( ֤ → ֚ ) HEBREW ACCENT MAHAPAKH → HEBREW ACCENT YETIV  # 
+
+06EC ; 06DF ;  ML      # ( ۬ → ۟ ) ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE → ARABIC SMALL HIGH ROUNDED ZERO  # 
+
+0619 ; 0313 ;  ML      # ( ؙ → ̓ ) ARABIC SMALL DAMMA → COMBINING COMMA ABOVE    # →ُ→
+0343 ; 0313 ;  ML      # ( ̓ → ̓ ) COMBINING GREEK KORONIS → COMBINING COMMA ABOVE       # 
+0315 ; 0313 ;  ML      # ( ̕ → ̓ ) COMBINING COMMA ABOVE RIGHT → COMBINING COMMA ABOVE   # 
+064F ; 0313 ;  ML      # ( ُ → ̓ ) ARABIC DAMMA → COMBINING COMMA ABOVE  # 
+
+059C ; 0301 ;  ML      # ( ֜ → ́ ) HEBREW ACCENT GERESH → COMBINING ACUTE ACCENT # 
+059D ; 0301 ;  ML      # ( ֝ → ́ ) HEBREW ACCENT GERESH MUQDAM → COMBINING ACUTE ACCENT  # →֜→
+0747 ; 0301 ;  ML      # ( ݇ → ́ ) SYRIAC OBLIQUE LINE ABOVE → COMBINING ACUTE ACCENT    # 
+0341 ; 0301 ;  ML      # ( ́ → ́ ) COMBINING ACUTE TONE MARK → COMBINING ACUTE ACCENT    # 
+0954 ; 0301 ;  ML      # ( ॔ → ́ ) DEVANAGARI ACUTE ACCENT → COMBINING ACUTE ACCENT     # 
+
+0340 ; 0300 ;  ML      # ( ̀ → ̀ ) COMBINING GRAVE TONE MARK → COMBINING GRAVE ACCENT    # 
+0953 ; 0300 ;  ML      # ( ॓ → ̀ ) DEVANAGARI GRAVE ACCENT → COMBINING GRAVE ACCENT     # 
+
+030C ; 0306 ;  ML      # ( ̌ → ̆ ) COMBINING CARON → COMBINING BREVE     # 
+036E ; 0306 ;  ML      # ( ͮ → ̆ ) COMBINING LATIN SMALL LETTER V → COMBINING BREVE      # →̌→
+
+0310 ; 0306 0307 ;     ML      # ( ̐ → ̆̇ ) COMBINING CANDRABINDU → COMBINING BREVE, COMBINING DOT ABOVE        # 
+0901 ; 0306 0307 ;     ML      # ( ँ → ̆̇ ) DEVANAGARI SIGN CANDRABINDU → COMBINING BREVE, COMBINING DOT ABOVE # →̐→
+0981 ; 0306 0307 ;     ML      # ( ঁ → ̆̇ ) BENGALI SIGN CANDRABINDU → COMBINING BREVE, COMBINING DOT ABOVE    # →̐→
+0A81 ; 0306 0307 ;     ML      # ( ઁ → ̆̇ ) GUJARATI SIGN CANDRABINDU → COMBINING BREVE, COMBINING DOT ABOVE   # →̐→
+0B01 ; 0306 0307 ;     ML      # ( ଁ → ̆̇ ) ORIYA SIGN CANDRABINDU → COMBINING BREVE, COMBINING DOT ABOVE      # →̐→
+
+0311 ; 0302 ;  ML      # ( ̑ → ̂ ) COMBINING INVERTED BREVE → COMBINING CIRCUMFLEX ACCENT        # 
+07EE ; 0302 ;  ML      # ( ߮ → ̂ ) NKO COMBINING LONG DESCENDING TONE → COMBINING CIRCUMFLEX ACCENT      # 
+
+05AF ; 030A ;  ML      # ( ֯ → ̊ ) HEBREW MARK MASORA CIRCLE → COMBINING RING ABOVE      # 
+17D3 ; 030A ;  ML      # ( ៓ → ̊ ) KHMER SIGN BATHAMASAT → COMBINING RING ABOVE # 
+0B82 ; 030A ;  ML      # ( ஂ → ̊ ) TAMIL SIGN ANUSVARA → COMBINING RING ABOVE   # 
+0E4D ; 030A ;  ML      # ( ํ → ̊ ) THAI CHARACTER NIKHAHIT → COMBINING RING ABOVE       # 
+0ECD ; 030A ;  ML      # ( ໍ → ̊ ) LAO NIGGAHITA → COMBINING RING ABOVE # 
+1036 ; 030A ;  ML      # ( ံ → ̊ ) MYANMAR SIGN ANUSVARA → COMBINING RING ABOVE # 
+17C6 ; 030A ;  ML      # ( ំ → ̊ ) KHMER SIGN NIKAHIT → COMBINING RING ABOVE    # 
+309A ; 030A ;  ML      # ( ゚ → ̊ ) COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK → COMBINING RING ABOVE    # 
+0366 ; 030A ;  ML      # ( ͦ → ̊ ) COMBINING LATIN SMALL LETTER O → COMBINING RING ABOVE # 
+
+07F3 ; 0308 ;  ML      # ( ߳ → ̈ ) NKO COMBINING DOUBLE DOT ABOVE → COMBINING DIAERESIS  # 
+
+0342 ; 0303 ;  ML      # ( ͂ → ̃ ) COMBINING GREEK PERISPOMENI → COMBINING TILDE # 
+
+05C4 ; 0307 ;  ML      # ( ׄ → ̇ ) HEBREW MARK UPPER DOT → COMBINING DOT ABOVE   # 
+0740 ; 0307 ;  ML      # ( ݀ → ̇ ) SYRIAC FEMININE DOT → COMBINING DOT ABOVE     # →݁→
+0741 ; 0307 ;  ML      # ( ݁ → ̇ ) SYRIAC QUSHSHAYA → COMBINING DOT ABOVE        # 
+0358 ; 0307 ;  ML      # ( ͘ → ̇ ) COMBINING DOT ABOVE RIGHT → COMBINING DOT ABOVE       # 
+05B9 ; 0307 ;  ML      # ( ֹ → ̇ ) HEBREW POINT HOLAM → COMBINING DOT ABOVE      # 
+05BA ; 0307 ;  ML      # ( ֺ → ̇ ) HEBREW POINT HOLAM HASER FOR VAV → COMBINING DOT ABOVE        # →ׁ→
+05C2 ; 0307 ;  ML      # ( ׂ → ̇ ) HEBREW POINT SIN DOT → COMBINING DOT ABOVE    # 
+05C1 ; 0307 ;  ML      # ( ׁ → ̇ ) HEBREW POINT SHIN DOT → COMBINING DOT ABOVE   # 
+07ED ; 0307 ;  ML      # ( ߭ → ̇ ) NKO COMBINING SHORT RISING TONE → COMBINING DOT ABOVE # 
+0902 ; 0307 ;  ML      # ( ं → ̇ ) DEVANAGARI SIGN ANUSVARA → COMBINING DOT ABOVE       # 
+0A02 ; 0307 ;  ML      # ( ਂ → ̇ ) GURMUKHI SIGN BINDI → COMBINING DOT ABOVE    # 
+0A82 ; 0307 ;  ML      # ( ં → ̇ ) GUJARATI SIGN ANUSVARA → COMBINING DOT ABOVE # 
+0BCD ; 0307 ;  ML      # ( ் → ̇ ) TAMIL SIGN VIRAMA → COMBINING DOT ABOVE      # 
+
+0337 ; 0338 ;  ML      # ( ̷ → ̸ ) COMBINING SHORT SOLIDUS OVERLAY → COMBINING LONG SOLIDUS OVERLAY      # 
+
+0322 ; 0328 ;  ML      # ( ̢ → ̨ ) COMBINING RETROFLEX HOOK BELOW → COMBINING OGONEK     # 
+
+0305 ; 0304 ;  ML      # ( ̅ → ̄ ) COMBINING OVERLINE → COMBINING MACRON # 
+07EB ; 0304 ;  ML      # ( ߫ → ̄ ) NKO COMBINING SHORT HIGH TONE → COMBINING MACRON      # 
+
+0347 ; 0333 ;  ML      # ( ͇ → ̳ ) COMBINING EQUALS SIGN BELOW → COMBINING DOUBLE LOW LINE       # 
+
+302C ; 0309 ;  ML      # ( 〬 → ̉ ) IDEOGRAPHIC DEPARTING TONE MARK → COMBINING HOOK ABOVE       # 
+
+05C5 ; 0323 ;  ML      # ( ׅ → ̣ ) HEBREW MARK LOWER DOT → COMBINING DOT BELOW   # 
+05B4 ; 0323 ;  ML      # ( ִ → ̣ ) HEBREW POINT HIRIQ → COMBINING DOT BELOW      # 
+093C ; 0323 ;  ML      # ( ़ → ̣ ) DEVANAGARI SIGN NUKTA → COMBINING DOT BELOW  # 
+09BC ; 0323 ;  ML      # ( ় → ̣ ) BENGALI SIGN NUKTA → COMBINING DOT BELOW     # 
+0A3C ; 0323 ;  ML      # ( ਼ → ̣ ) GURMUKHI SIGN NUKTA → COMBINING DOT BELOW    # 
+0ABC ; 0323 ;  ML      # ( ઼ → ̣ ) GUJARATI SIGN NUKTA → COMBINING DOT BELOW    # 
+0B3C ; 0323 ;  ML      # ( ଼ → ̣ ) ORIYA SIGN NUKTA → COMBINING DOT BELOW       # 
+10A3A ;        0323 ;  ML      # ( 𐨺 → ̣ ) KHAROSHTHI SIGN DOT BELOW → COMBINING DOT BELOW     # 
+
+302D ; 0325 ;  ML      # ( 〭 → ̥ ) IDEOGRAPHIC ENTERING TONE MARK → COMBINING RING BELOW        # 
+
+0327 ; 0326 ;  ML      # ( ̧ → ̦ ) COMBINING CEDILLA → COMBINING COMMA BELOW     # →̡→
+0321 ; 0326 ;  ML      # ( ̡ → ̦ ) COMBINING PALATALIZED HOOK BELOW → COMBINING COMMA BELOW      # 
+0339 ; 0326 ;  ML      # ( ̹ → ̦ ) COMBINING RIGHT HALF RING BELOW → COMBINING COMMA BELOW       # →̧→→̡→
+
+0952 ; 0331 ;  ML      # ( ॒ → ̱ ) DEVANAGARI STRESS SIGN ANUDATTA → COMBINING MACRON BELOW     # 
+0320 ; 0331 ;  ML      # ( ̠ → ̱ ) COMBINING MINUS SIGN BELOW → COMBINING MACRON BELOW   # 
+
+0336 ; 0335 ;  ML      # ( ̶ → ̵ ) COMBINING LONG STROKE OVERLAY → COMBINING SHORT STROKE OVERLAY        # 
+
+FC5E ; FE72 0651 ;     ML      #* ( ‎ﱞ‎ → ‎ﹲّ‎ ) ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM → ARABIC DAMMATAN ISOLATED FORM, ARABIC SHADDA    # 
+
+FC5F ; FE74 0651 ;     ML      #* ( ‎ﱟ‎ → ‎ﹴّ‎ ) ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM → ARABIC KASRATAN ISOLATED FORM, ARABIC SHADDA    # 
+
+0618 ; 064E ;  ML      # ( ؘ → َ ) ARABIC SMALL FATHA → ARABIC FATHA     # 
+
+FCF2 ; FE77 0651 ;     ML      # ( ‎ﳲ‎ → ‎ﹷّ‎ ) ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM → ARABIC FATHA MEDIAL FORM, ARABIC SHADDA       # 
+
+FC60 ; FE76 0651 ;     ML      #* ( ‎ﱠ‎ → ‎ﹶّ‎ ) ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM → ARABIC FATHA ISOLATED FORM, ARABIC SHADDA  # 
+FC62 ; FE76 0651 ;     ML      #* ( ‎ﱢ‎ → ‎ﹶّ‎ ) ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM → ARABIC FATHA ISOLATED FORM, ARABIC SHADDA  # →‎ﱠ‎→
+
+FCF3 ; FE79 0651 ;     ML      # ( ‎ﳳ‎ → ‎ﹹّ‎ ) ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM → ARABIC DAMMA MEDIAL FORM, ARABIC SHADDA       # 
+
+FC61 ; FE78 0651 ;     ML      #* ( ‎ﱡ‎ → ‎ﹸّ‎ ) ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM → ARABIC DAMMA ISOLATED FORM, ARABIC SHADDA  # 
+
+061A ; 0650 ;  ML      # ( ؚ → ِ ) ARABIC SMALL KASRA → ARABIC KASRA     # 
+
+FCF4 ; FE7B 0651 ;     ML      # ( ‎ﳴ‎ → ‎ﹻّ‎ ) ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM → ARABIC KASRA MEDIAL FORM, ARABIC SHADDA       # 
+
+FC63 ; FE7C 0670 ;     ML      #* ( ‎ﱣ‎ → ‎ﹼٰ‎ ) ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM → ARABIC SHADDA ISOLATED FORM, ARABIC LETTER SUPERSCRIPT ALEF     # 
+
+0742 ; 073C ;  ML      # ( ݂ → ܼ ) SYRIAC RUKKAKHA → SYRIAC HBASA-ESASA DOTTED   # 
+
+0A03 ; 0983 ;  ML      # ( ਃ → ঃ ) GURMUKHI SIGN VISARGA → BENGALI SIGN VISARGA        # 
+0C03 ; 0983 ;  ML      # ( ః → ঃ ) TELUGU SIGN VISARGA → BENGALI SIGN VISARGA  # →ਃ→
+0C83 ; 0983 ;  ML      # ( ಃ → ঃ ) KANNADA SIGN VISARGA → BENGALI SIGN VISARGA # →ః→→ਃ→
+0D03 ; 0983 ;  ML      # ( ഃ → ঃ ) MALAYALAM SIGN VISARGA → BENGALI SIGN VISARGA       # →ಃ→→ః→→ਃ→
+0D83 ; 0983 ;  ML      # ( ඃ → ঃ ) SINHALA SIGN VISARGAYA → BENGALI SIGN VISARGA       # →ഃ→→ಃ→→ః→→ਃ→
+1038 ; 0983 ;  ML      # ( း → ঃ ) MYANMAR SIGN VISARGA → BENGALI SIGN VISARGA # →ඃ→→ഃ→→ಃ→→ః→→ਃ→
+
+17CB ; 0E48 ;  ML      # ( ់ → ่ ) KHMER SIGN BANTOC → THAI CHARACTER MAI EK   # 
+0EC8 ; 0E48 ;  ML      # ( ່ → ่ ) LAO TONE MAI EK → THAI CHARACTER MAI EK     # 
+
+0EC9 ; 0E49 ;  ML      # ( ້ → ้ ) LAO TONE MAI THO → THAI CHARACTER MAI THO   # 
+
+0ECA ; 0E4A ;  ML      # ( ໊ → ๊ ) LAO TONE MAI TI → THAI CHARACTER MAI TRI    # 
+
+0ECB ; 0E4B ;  ML      # ( ໋ → ๋ ) LAO TONE MAI CATAWA → THAI CHARACTER MAI CHATTAWA   # 
+
+309B ; FF9E ;  ML      #* ( ゛ → ゙ ) KATAKANA-HIRAGANA VOICED SOUND MARK → HALFWIDTH KATAKANA VOICED SOUND MARK # 
+
+309C ; FF9F ;  ML      #* ( ゜ → ゚ ) KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK → HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK       # 
+
+180E ; 0020 ;  ML      #* ( ᠎ →   ) MONGOLIAN VOWEL SEPARATOR → SPACE    # 
+2028 ; 0020 ;  ML      #* (  →   ) LINE SEPARATOR → SPACE  # 
+2029 ; 0020 ;  ML      #* (  →   ) PARAGRAPH SEPARATOR → SPACE     # 
+2000 ; 0020 ;  ML      #* (   →   ) EN QUAD → SPACE      # 
+2001 ; 0020 ;  ML      #* (   →   ) EM QUAD → SPACE      # 
+2002 ; 0020 ;  ML      #* (   →   ) EN SPACE → SPACE     # 
+2003 ; 0020 ;  ML      #* (   →   ) EM SPACE → SPACE     # 
+2004 ; 0020 ;  ML      #* (   →   ) THREE-PER-EM SPACE → SPACE   # 
+2005 ; 0020 ;  ML      #* (   →   ) FOUR-PER-EM SPACE → SPACE    # 
+2006 ; 0020 ;  ML      #* (   →   ) SIX-PER-EM SPACE → SPACE     # 
+2008 ; 0020 ;  ML      #* (   →   ) PUNCTUATION SPACE → SPACE    # 
+2009 ; 0020 ;  ML      #* (   →   ) THIN SPACE → SPACE   # 
+200A ; 0020 ;  ML      #* (   →   ) HAIR SPACE → SPACE   # 
+205F ; 0020 ;  ML      #* (   →   ) MEDIUM MATHEMATICAL SPACE → SPACE    # 
+00A0 ; 0020 ;  ML      #* (   →   ) NO-BREAK SPACE → SPACE        # 
+2007 ; 0020 ;  ML      #* (   →   ) FIGURE SPACE → SPACE # 
+202F ; 0020 ;  ML      #* (   →   ) NARROW NO-BREAK SPACE → SPACE        # 
+1680 ; 0020 ;  ML      #* (   →   ) OGHAM SPACE MARK → SPACE     # 
+
+02C4 ; 005E ;  ML      #* ( ˄ → ^ ) MODIFIER LETTER UP ARROWHEAD → CIRCUMFLEX ACCENT      # 
+02C6 ; 005E ;  ML      # ( ˆ → ^ ) MODIFIER LETTER CIRCUMFLEX ACCENT → CIRCUMFLEX ACCENT  # 
+
+07FA ; 005F ;  ML      # ( ‎ߺ‎ → _ ) NKO LAJANYALAN → LOW LINE        # 
+FE4D ; 005F ;  ML      # ( ﹍ → _ ) DASHED LOW LINE → LOW LINE    # 
+FE4E ; 005F ;  ML      # ( ﹎ → _ ) CENTRELINE LOW LINE → LOW LINE        # 
+FE4F ; 005F ;  ML      # ( ﹏ → _ ) WAVY LOW LINE → LOW LINE      # 
+
+2307 ; FE34 ;  ML      #* ( ⌇ → ︴ ) WAVY LINE → PRESENTATION FORM FOR VERTICAL WAVY LOW LINE   # 
+
+2010 ; 002D ;  ML      #* ( ‐ → - ) HYPHEN → HYPHEN-MINUS        # 
+2011 ; 002D ;  ML      #* ( ‑ → - ) NON-BREAKING HYPHEN → HYPHEN-MINUS   # 
+2012 ; 002D ;  ML      #* ( ‒ → - ) FIGURE DASH → HYPHEN-MINUS   # 
+2013 ; 002D ;  ML      #* ( – → - ) EN DASH → HYPHEN-MINUS       # 
+FE58 ; 002D ;  ML      #* ( ﹘ → - ) SMALL EM DASH → HYPHEN-MINUS # 
+2043 ; 002D ;  ML      #* ( ⁃ → - ) HYPHEN BULLET → HYPHEN-MINUS # →‒→
+02D7 ; 002D ;  ML      #* ( ˗ → - ) MODIFIER LETTER MINUS SIGN → HYPHEN-MINUS     # 
+2212 ; 002D ;  ML      #* ( − → - ) MINUS SIGN → HYPHEN-MINUS    # 
+
+A4FE ; 002D 002E ;     ML      #* ( ꓾ → -. ) LISU PUNCTUATION COMMA → HYPHEN-MINUS, FULL STOP    # 
+
+FF5E ; 301C ;  ML      #* ( ~ → 〜 ) FULLWIDTH TILDE → WAVE DASH        # 
+
+00B8 ; 002C ;  ML      #* ( ¸ → , ) CEDILLA → COMMA       # 
+066B ; 002C ;  ML      #* ( ‎٫‎ → , ) ARABIC DECIMAL SEPARATOR → COMMA        # 
+201A ; 002C ;  ML      #* ( ‚ → , ) SINGLE LOW-9 QUOTATION MARK → COMMA  # 
+
+066C ; 060C ;  ML      #* ( ‎٬‎ → ، ) ARABIC THOUSANDS SEPARATOR → ARABIC COMMA      # 
+
+037E ; 003B ;  ML      #* ( ; → ; ) GREEK QUESTION MARK → SEMICOLON       # 
+
+0903 ; 003A ;  ML      # ( ः → : ) DEVANAGARI SIGN VISARGA → COLON       # 
+0A83 ; 003A ;  ML      # ( ઃ → : ) GUJARATI SIGN VISARGA → COLON # 
+FF1A ; 003A ;  ML      #* ( : → : ) FULLWIDTH COLON → COLON      # →︰→
+0589 ; 003A ;  ML      #* ( ։ → : ) ARMENIAN FULL STOP → COLON    # 
+0703 ; 003A ;  ML      #* ( ‎܃‎ → : ) SYRIAC SUPRALINEAR COLON → COLON        # 
+0704 ; 003A ;  ML      #* ( ‎܄‎ → : ) SYRIAC SUBLINEAR COLON → COLON  # 
+FE30 ; 003A ;  ML      #* ( ︰ → : ) PRESENTATION FORM FOR VERTICAL TWO DOT LEADER → COLON        # 
+1803 ; 003A ;  ML      #* ( ᠃ → : ) MONGOLIAN FULL STOP → COLON  # 
+1809 ; 003A ;  ML      #* ( ᠉ → : ) MONGOLIAN MANCHU FULL STOP → COLON   # 
+205A ; 003A ;  ML      #* ( ⁚ → : ) TWO DOT PUNCTUATION → COLON  # 
+05C3 ; 003A ;  ML      #* ( ‎׃‎ → : ) HEBREW PUNCTUATION SOF PASUQ → COLON    # 
+02F8 ; 003A ;  ML      #* ( ˸ → : ) MODIFIER LETTER RAISED COLON → COLON  # 
+A789 ; 003A ;  ML      #* ( ꞉ → : ) MODIFIER LETTER COLON → COLON        # 
+2236 ; 003A ;  ML      #* ( ∶ → : ) RATIO → COLON        # 
+02D0 ; 003A ;  ML      # ( ː → : ) MODIFIER LETTER TRIANGULAR COLON → COLON       # 
+A4FD ; 003A ;  ML      # ( ꓽ → : ) LISU LETTER TONE MYA JEU → COLON      # 
+
+2A74 ; 003A 003A 003D ;        ML      #* ( ⩴ → ::= ) DOUBLE COLON EQUAL → COLON, COLON, EQUALS SIGN     # 
+
+FF01 ; 0021 ;  ML      #* ( ! → ! ) FULLWIDTH EXCLAMATION MARK → EXCLAMATION MARK        # →ǃ→
+01C3 ; 0021 ;  ML      # ( ǃ → ! ) LATIN LETTER RETROFLEX CLICK → EXCLAMATION MARK        # 
+
+203C ; 0021 0021 ;     ML      #* ( ‼ → !! ) DOUBLE EXCLAMATION MARK → EXCLAMATION MARK, EXCLAMATION MARK        # 
+
+2049 ; 0021 003F ;     ML      #* ( ⁉ → !? ) EXCLAMATION QUESTION MARK → EXCLAMATION MARK, QUESTION MARK # 
+
+0294 ; 003F ;  ML      # ( ʔ → ? ) LATIN LETTER GLOTTAL STOP → QUESTION MARK      # 
+097D ; 003F ;  ML      # ( ॽ → ? ) DEVANAGARI LETTER GLOTTAL STOP → QUESTION MARK        # 
+
+2048 ; 003F 0021 ;     ML      #* ( ⁈ → ?! ) QUESTION EXCLAMATION MARK → QUESTION MARK, EXCLAMATION MARK # 
+
+2047 ; 003F 003F ;     ML      #* ( ⁇ → ?? ) DOUBLE QUESTION MARK → QUESTION MARK, QUESTION MARK # 
+
+1D16D ;        002E ;  ML      # ( 𝅭 → . ) MUSICAL SYMBOL COMBINING AUGMENTATION DOT → FULL STOP        # 
+2024 ; 002E ;  ML      #* ( ․ → . ) ONE DOT LEADER → FULL STOP   # 
+06D4 ; 002E ;  ML      #* ( ‎۔‎ → . ) ARABIC FULL STOP → FULL STOP    # 
+0701 ; 002E ;  ML      #* ( ‎܁‎ → . ) SYRIAC SUPRALINEAR FULL STOP → FULL STOP        # 
+0702 ; 002E ;  ML      #* ( ‎܂‎ → . ) SYRIAC SUBLINEAR FULL STOP → FULL STOP  # 
+A60E ; 002E ;  ML      #* ( ꘎ → . ) VAI FULL STOP → FULL STOP    # 
+10A50 ;        002E ;  ML      #* ( ‎𐩐‎ → . ) KHAROSHTHI PUNCTUATION DOT → FULL STOP        # 
+0660 ; 002E ;  ML      # ( ‎٠‎ → . ) ARABIC-INDIC DIGIT ZERO → FULL STOP      # 
+06F0 ; 002E ;  ML      # ( ۰ → . ) EXTENDED ARABIC-INDIC DIGIT ZERO → FULL STOP   # →‎٠‎→
+A4F8 ; 002E ;  ML      # ( ꓸ → . ) LISU LETTER TONE MYA TI → FULL STOP   # 
+A4FB ; 002E ;  ML      # ( ꓻ → . ) LISU LETTER TONE MYA BO → FULL STOP   # 
+
+2025 ; 002E 002E ;     ML      #* ( ‥ → .. ) TWO DOT LEADER → FULL STOP, FULL STOP       # 
+A4FA ; 002E 002E ;     ML      # ( ꓺ → .. ) LISU LETTER TONE MYA CYA → FULL STOP, FULL STOP      # 
+
+2026 ; 002E 002E 002E ;        ML      #* ( … → ... ) HORIZONTAL ELLIPSIS → FULL STOP, FULL STOP, FULL STOP      # 
+
+30FB ; 00B7 ;  ML      #* ( ・ → · ) KATAKANA MIDDLE DOT → MIDDLE DOT    # →•→
+FF65 ; 00B7 ;  ML      #* ( ・ → · ) HALFWIDTH KATAKANA MIDDLE DOT → MIDDLE DOT  # →•→
+0387 ; 00B7 ;  ML      # ( · → · ) GREEK ANO TELEIA → MIDDLE DOT # 
+10101 ;        00B7 ;  ML      #* ( 𐄁 → · ) AEGEAN WORD SEPARATOR DOT → MIDDLE DOT     # 
+2022 ; 00B7 ;  ML      #* ( • → · ) BULLET → MIDDLE DOT # 
+2027 ; 00B7 ;  ML      #* ( ‧ → · ) HYPHENATION POINT → MIDDLE DOT      # 
+2219 ; 00B7 ;  ML      #* ( ∙ → · ) BULLET OPERATOR → MIDDLE DOT        # 
+22C5 ; 00B7 ;  ML      #* ( ⋅ → · ) DOT OPERATOR → MIDDLE DOT   # 
+1427 ; 00B7 ;  ML      # ( ᐧ → · ) CANADIAN SYLLABICS FINAL MIDDLE DOT → MIDDLE DOT     # 
+
+22EF ; 00B7 00B7 00B7 ;        ML      #* ( ⋯ → ··· ) MIDLINE HORIZONTAL ELLIPSIS → MIDDLE DOT, MIDDLE DOT, MIDDLE DOT        # 
+
+152F ; 00B7 0034 ;     ML      # ( ᔯ → ·4 ) CANADIAN SYLLABICS YWE → MIDDLE DOT, DIGIT FOUR     # →ᐧ4→
+
+147A ; 00B7 0064 ;     ML      # ( ᑺ → ·d ) CANADIAN SYLLABICS KWO → MIDDLE DOT, LATIN SMALL LETTER D   # →ᐧᑯ→
+
+140C ; 00B7 1401 ;     ML      # ( ᐌ → ·ᐁ ) CANADIAN SYLLABICS WE → MIDDLE DOT, CANADIAN SYLLABICS E  # →ᐧᐁ→
+
+140E ; 00B7 1403 ;     ML      # ( ᐎ → ·ᐃ ) CANADIAN SYLLABICS WI → MIDDLE DOT, CANADIAN SYLLABICS I  # →ᐧᐃ→
+
+1410 ; 00B7 1404 ;     ML      # ( ᐐ → ·ᐄ ) CANADIAN SYLLABICS WII → MIDDLE DOT, CANADIAN SYLLABICS II        # →ᐧᐄ→
+
+1412 ; 00B7 1405 ;     ML      # ( ᐒ → ·ᐅ ) CANADIAN SYLLABICS WO → MIDDLE DOT, CANADIAN SYLLABICS O  # →ᐧᐅ→
+
+1414 ; 00B7 1406 ;     ML      # ( ᐔ → ·ᐆ ) CANADIAN SYLLABICS WOO → MIDDLE DOT, CANADIAN SYLLABICS OO        # →ᐧᐆ→
+
+1417 ; 00B7 140A ;     ML      # ( ᐗ → ·ᐊ ) CANADIAN SYLLABICS WA → MIDDLE DOT, CANADIAN SYLLABICS A  # →ᐧᐊ→
+
+1419 ; 00B7 140B ;     ML      # ( ᐙ → ·ᐋ ) CANADIAN SYLLABICS WAA → MIDDLE DOT, CANADIAN SYLLABICS AA        # →ᐧᐋ→
+
+2CFE ; 00B7 1433 ;     ML      #* ( ⳾ → ·ᐳ ) COPTIC FULL STOP → MIDDLE DOT, CANADIAN SYLLABICS PO     # →ᑀ→→ᐧᐳ→
+1437 ; 00B7 1433 ;     ML      # ( ᐷ → ·ᐳ ) CANADIAN SYLLABICS CARRIER HI → MIDDLE DOT, CANADIAN SYLLABICS PO # →ᑀ→→ᐧᐳ→
+1440 ; 00B7 1433 ;     ML      # ( ᑀ → ·ᐳ ) CANADIAN SYLLABICS PWO → MIDDLE DOT, CANADIAN SYLLABICS PO        # →ᐧᐳ→
+
+1442 ; 00B7 1434 ;     ML      # ( ᑂ → ·ᐴ ) CANADIAN SYLLABICS PWOO → MIDDLE DOT, CANADIAN SYLLABICS POO      # →ᐧᐴ→
+
+1444 ; 00B7 1438 ;     ML      # ( ᑄ → ·ᐸ ) CANADIAN SYLLABICS PWA → MIDDLE DOT, CANADIAN SYLLABICS PA        # →ᐧᐸ→
+
+1446 ; 00B7 1439 ;     ML      # ( ᑆ → ·ᐹ ) CANADIAN SYLLABICS PWAA → MIDDLE DOT, CANADIAN SYLLABICS PAA      # →ᐧᐹ→
+
+1457 ; 00B7 144C ;     ML      # ( ᑗ → ·ᑌ ) CANADIAN SYLLABICS TWE → MIDDLE DOT, CANADIAN SYLLABICS TE        # →ᐧᑌ→
+
+1459 ; 00B7 144E ;     ML      # ( ᑙ → ·ᑎ ) CANADIAN SYLLABICS TWI → MIDDLE DOT, CANADIAN SYLLABICS TI        # →ᐧᑎ→
+
+145B ; 00B7 144F ;     ML      # ( ᑛ → ·ᑏ ) CANADIAN SYLLABICS TWII → MIDDLE DOT, CANADIAN SYLLABICS TII      # →ᐧᑏ→
+
+1454 ; 00B7 1450 ;     ML      # ( ᑔ → ·ᑐ ) CANADIAN SYLLABICS CARRIER DI → MIDDLE DOT, CANADIAN SYLLABICS TO # →ᑝ→→ᐧᑐ→
+145D ; 00B7 1450 ;     ML      # ( ᑝ → ·ᑐ ) CANADIAN SYLLABICS TWO → MIDDLE DOT, CANADIAN SYLLABICS TO        # →ᐧᑐ→
+
+145F ; 00B7 1451 ;     ML      # ( ᑟ → ·ᑑ ) CANADIAN SYLLABICS TWOO → MIDDLE DOT, CANADIAN SYLLABICS TOO      # →ᐧᑑ→
+
+1461 ; 00B7 1455 ;     ML      # ( ᑡ → ·ᑕ ) CANADIAN SYLLABICS TWA → MIDDLE DOT, CANADIAN SYLLABICS TA        # →ᐧᑕ→
+
+1463 ; 00B7 1456 ;     ML      # ( ᑣ → ·ᑖ ) CANADIAN SYLLABICS TWAA → MIDDLE DOT, CANADIAN SYLLABICS TAA      # →ᐧᑖ→
+
+1474 ; 00B7 146B ;     ML      # ( ᑴ → ·ᑫ ) CANADIAN SYLLABICS KWE → MIDDLE DOT, CANADIAN SYLLABICS KE        # →ᐧᑫ→
+
+1478 ; 00B7 146E ;     ML      # ( ᑸ → ·ᑮ ) CANADIAN SYLLABICS KWII → MIDDLE DOT, CANADIAN SYLLABICS KII      # →ᐧᑮ→
+
+147C ; 00B7 1470 ;     ML      # ( ᑼ → ·ᑰ ) CANADIAN SYLLABICS KWOO → MIDDLE DOT, CANADIAN SYLLABICS KOO      # →ᐧᑰ→
+
+147E ; 00B7 1472 ;     ML      # ( ᑾ → ·ᑲ ) CANADIAN SYLLABICS KWA → MIDDLE DOT, CANADIAN SYLLABICS KA        # →ᐧᑲ→
+
+1480 ; 00B7 1473 ;     ML      # ( ᒀ → ·ᑳ ) CANADIAN SYLLABICS KWAA → MIDDLE DOT, CANADIAN SYLLABICS KAA      # →ᐧᑳ→
+
+1492 ; 00B7 1489 ;     ML      # ( ᒒ → ·ᒉ ) CANADIAN SYLLABICS CWE → MIDDLE DOT, CANADIAN SYLLABICS CE        # →ᐧᒉ→
+
+1494 ; 00B7 148B ;     ML      # ( ᒔ → ·ᒋ ) CANADIAN SYLLABICS CWI → MIDDLE DOT, CANADIAN SYLLABICS CI        # →ᐧᒋ→
+
+1496 ; 00B7 148C ;     ML      # ( ᒖ → ·ᒌ ) CANADIAN SYLLABICS CWII → MIDDLE DOT, CANADIAN SYLLABICS CII      # →ᐧᒌ→
+
+149A ; 00B7 148E ;     ML      # ( ᒚ → ·ᒎ ) CANADIAN SYLLABICS CWOO → MIDDLE DOT, CANADIAN SYLLABICS COO      # →ᐧᒎ→
+
+149C ; 00B7 1490 ;     ML      # ( ᒜ → ·ᒐ ) CANADIAN SYLLABICS CWA → MIDDLE DOT, CANADIAN SYLLABICS CA        # →ᐧᒐ→
+
+149E ; 00B7 1491 ;     ML      # ( ᒞ → ·ᒑ ) CANADIAN SYLLABICS CWAA → MIDDLE DOT, CANADIAN SYLLABICS CAA      # →ᐧᒑ→
+
+14AC ; 00B7 14A3 ;     ML      # ( ᒬ → ·ᒣ ) CANADIAN SYLLABICS MWE → MIDDLE DOT, CANADIAN SYLLABICS ME        # →ᐧᒣ→
+
+14AE ; 00B7 14A5 ;     ML      # ( ᒮ → ·ᒥ ) CANADIAN SYLLABICS MWI → MIDDLE DOT, CANADIAN SYLLABICS MI        # →ᐧᒥ→
+
+14B0 ; 00B7 14A6 ;     ML      # ( ᒰ → ·ᒦ ) CANADIAN SYLLABICS MWII → MIDDLE DOT, CANADIAN SYLLABICS MII      # →ᐧᒦ→
+
+14B2 ; 00B7 14A7 ;     ML      # ( ᒲ → ·ᒧ ) CANADIAN SYLLABICS MWO → MIDDLE DOT, CANADIAN SYLLABICS MO        # →ᐧᒧ→
+
+14B4 ; 00B7 14A8 ;     ML      # ( ᒴ → ·ᒨ ) CANADIAN SYLLABICS MWOO → MIDDLE DOT, CANADIAN SYLLABICS MOO      # →ᐧᒨ→
+
+14B6 ; 00B7 14AA ;     ML      # ( ᒶ → ·ᒪ ) CANADIAN SYLLABICS MWA → MIDDLE DOT, CANADIAN SYLLABICS MA        # →ᐧᒪ→
+
+14B8 ; 00B7 14AB ;     ML      # ( ᒸ → ·ᒫ ) CANADIAN SYLLABICS MWAA → MIDDLE DOT, CANADIAN SYLLABICS MAA      # →ᐧᒫ→
+
+14C9 ; 00B7 14C0 ;     ML      # ( ᓉ → ·ᓀ ) CANADIAN SYLLABICS NWE → MIDDLE DOT, CANADIAN SYLLABICS NE        # →ᐧᓀ→
+
+14CB ; 00B7 14C7 ;     ML      # ( ᓋ → ·ᓇ ) CANADIAN SYLLABICS NWA → MIDDLE DOT, CANADIAN SYLLABICS NA        # →ᐧᓇ→
+
+14CD ; 00B7 14C8 ;     ML      # ( ᓍ → ·ᓈ ) CANADIAN SYLLABICS NWAA → MIDDLE DOT, CANADIAN SYLLABICS NAA      # →ᐧᓈ→
+
+14DC ; 00B7 14D3 ;     ML      # ( ᓜ → ·ᓓ ) CANADIAN SYLLABICS LWE → MIDDLE DOT, CANADIAN SYLLABICS LE        # →ᐧᓓ→
+
+14DE ; 00B7 14D5 ;     ML      # ( ᓞ → ·ᓕ ) CANADIAN SYLLABICS LWI → MIDDLE DOT, CANADIAN SYLLABICS LI        # →ᐧᓕ→
+
+14E0 ; 00B7 14D6 ;     ML      # ( ᓠ → ·ᓖ ) CANADIAN SYLLABICS LWII → MIDDLE DOT, CANADIAN SYLLABICS LII      # →ᐧᓖ→
+
+14E2 ; 00B7 14D7 ;     ML      # ( ᓢ → ·ᓗ ) CANADIAN SYLLABICS LWO → MIDDLE DOT, CANADIAN SYLLABICS LO        # →ᐧᓗ→
+
+14E4 ; 00B7 14D8 ;     ML      # ( ᓤ → ·ᓘ ) CANADIAN SYLLABICS LWOO → MIDDLE DOT, CANADIAN SYLLABICS LOO      # →ᐧᓘ→
+
+14E6 ; 00B7 14DA ;     ML      # ( ᓦ → ·ᓚ ) CANADIAN SYLLABICS LWA → MIDDLE DOT, CANADIAN SYLLABICS LA        # →ᐧᓚ→
+
+14E8 ; 00B7 14DB ;     ML      # ( ᓨ → ·ᓛ ) CANADIAN SYLLABICS LWAA → MIDDLE DOT, CANADIAN SYLLABICS LAA      # →ᐧᓛ→
+
+14F6 ; 00B7 14ED ;     ML      # ( ᓶ → ·ᓭ ) CANADIAN SYLLABICS SWE → MIDDLE DOT, CANADIAN SYLLABICS SE        # →ᐧᓭ→
+
+14F8 ; 00B7 14EF ;     ML      # ( ᓸ → ·ᓯ ) CANADIAN SYLLABICS SWI → MIDDLE DOT, CANADIAN SYLLABICS SI        # →ᐧᓯ→
+
+14FA ; 00B7 14F0 ;     ML      # ( ᓺ → ·ᓰ ) CANADIAN SYLLABICS SWII → MIDDLE DOT, CANADIAN SYLLABICS SII      # →ᐧᓰ→
+
+14FC ; 00B7 14F1 ;     ML      # ( ᓼ → ·ᓱ ) CANADIAN SYLLABICS SWO → MIDDLE DOT, CANADIAN SYLLABICS SO        # →ᐧᓱ→
+
+14FE ; 00B7 14F2 ;     ML      # ( ᓾ → ·ᓲ ) CANADIAN SYLLABICS SWOO → MIDDLE DOT, CANADIAN SYLLABICS SOO      # →ᐧᓲ→
+
+1500 ; 00B7 14F4 ;     ML      # ( ᔀ → ·ᓴ ) CANADIAN SYLLABICS SWA → MIDDLE DOT, CANADIAN SYLLABICS SA        # →ᐧᓴ→
+
+1502 ; 00B7 14F5 ;     ML      # ( ᔂ → ·ᓵ ) CANADIAN SYLLABICS SWAA → MIDDLE DOT, CANADIAN SYLLABICS SAA      # →ᐧᓵ→
+
+1517 ; 00B7 1510 ;     ML      # ( ᔗ → ·ᔐ ) CANADIAN SYLLABICS SHWE → MIDDLE DOT, CANADIAN SYLLABICS SHE      # →ᐧᔐ→
+
+1519 ; 00B7 1511 ;     ML      # ( ᔙ → ·ᔑ ) CANADIAN SYLLABICS SHWI → MIDDLE DOT, CANADIAN SYLLABICS SHI      # →ᐧᔑ→
+
+151B ; 00B7 1512 ;     ML      # ( ᔛ → ·ᔒ ) CANADIAN SYLLABICS SHWII → MIDDLE DOT, CANADIAN SYLLABICS SHII    # →ᐧᔒ→
+
+151D ; 00B7 1513 ;     ML      # ( ᔝ → ·ᔓ ) CANADIAN SYLLABICS SHWO → MIDDLE DOT, CANADIAN SYLLABICS SHO      # →ᐧᔓ→
+
+151F ; 00B7 1514 ;     ML      # ( ᔟ → ·ᔔ ) CANADIAN SYLLABICS SHWOO → MIDDLE DOT, CANADIAN SYLLABICS SHOO    # →ᐧᔔ→
+
+1521 ; 00B7 1515 ;     ML      # ( ᔡ → ·ᔕ ) CANADIAN SYLLABICS SHWA → MIDDLE DOT, CANADIAN SYLLABICS SHA      # →ᐧᔕ→
+
+1523 ; 00B7 1516 ;     ML      # ( ᔣ → ·ᔖ ) CANADIAN SYLLABICS SHWAA → MIDDLE DOT, CANADIAN SYLLABICS SHAA    # →ᐧᔖ→
+
+1531 ; 00B7 1528 ;     ML      # ( ᔱ → ·ᔨ ) CANADIAN SYLLABICS YWI → MIDDLE DOT, CANADIAN SYLLABICS YI        # →ᐧᔨ→
+
+1533 ; 00B7 1529 ;     ML      # ( ᔳ → ·ᔩ ) CANADIAN SYLLABICS YWII → MIDDLE DOT, CANADIAN SYLLABICS YII      # →ᐧᔩ→
+
+1535 ; 00B7 152A ;     ML      # ( ᔵ → ·ᔪ ) CANADIAN SYLLABICS YWO → MIDDLE DOT, CANADIAN SYLLABICS YO        # →ᐧᔪ→
+
+1537 ; 00B7 152B ;     ML      # ( ᔷ → ·ᔫ ) CANADIAN SYLLABICS YWOO → MIDDLE DOT, CANADIAN SYLLABICS YOO      # →ᐧᔫ→
+
+1539 ; 00B7 152D ;     ML      # ( ᔹ → ·ᔭ ) CANADIAN SYLLABICS YWA → MIDDLE DOT, CANADIAN SYLLABICS YA        # →ᐧᔭ→
+
+153B ; 00B7 152E ;     ML      # ( ᔻ → ·ᔮ ) CANADIAN SYLLABICS YWAA → MIDDLE DOT, CANADIAN SYLLABICS YAA      # →ᐧᔮ→
+
+154E ; 00B7 154C ;     ML      # ( ᕎ → ·ᕌ ) CANADIAN SYLLABICS RWAA → MIDDLE DOT, CANADIAN SYLLABICS RAA      # →ᐧᕌ→
+
+155B ; 00B7 155A ;     ML      # ( ᕛ → ·ᕚ ) CANADIAN SYLLABICS FWAA → MIDDLE DOT, CANADIAN SYLLABICS FAA      # →ᐧᕚ→
+
+1568 ; 00B7 1567 ;     ML      # ( ᕨ → ·ᕧ ) CANADIAN SYLLABICS THWAA → MIDDLE DOT, CANADIAN SYLLABICS THAA    # →ᐧᕧ→
+
+FE19 ; 205D ;  ML      #* ( ︙ → ⁝ ) PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS → TRICOLON      # 
+22EE ; 205D ;  ML      #* ( ⋮ → ⁝ ) VERTICAL ELLIPSIS → TRICOLON       # →︙→
+
+0060 ; 0027 ;  ML      #* ( ` → ' ) GRAVE ACCENT → APOSTROPHE      # →ˋ→→`→→‘→
+1FEF ; 0027 ;  ML      #* ( ` → ' ) GREEK VARIA → APOSTROPHE     # →ˋ→→`→→‘→
+FF40 ; 0027 ;  ML      #* ( ` → ' ) FULLWIDTH GRAVE ACCENT → APOSTROPHE  # →‘→
+00B4 ; 0027 ;  ML      #* ( ´ → ' ) ACUTE ACCENT → APOSTROPHE     # →΄→→ʹ→
+0384 ; 0027 ;  ML      #* ( ΄ → ' ) GREEK TONOS → APOSTROPHE      # →ʹ→
+1FFD ; 0027 ;  ML      #* ( ´ → ' ) GREEK OXIA → APOSTROPHE      # →ˊ→→ʹ→→′→
+1FBD ; 0027 ;  ML      #* ( ᾽ → ' ) GREEK KORONIS → APOSTROPHE   # →’→
+1FBF ; 0027 ;  ML      #* ( ᾿ → ' ) GREEK PSILI → APOSTROPHE     # →’→
+1FFE ; 0027 ;  ML      #* ( ῾ → ' ) GREEK DASIA → APOSTROPHE     # →‛→→′→
+055D ; 0027 ;  ML      #* ( ՝ → ' ) ARMENIAN COMMA → APOSTROPHE   # →ˋ→→`→→‘→
+FF07 ; 0027 ;  ML      #* ( ' → ' ) FULLWIDTH APOSTROPHE → APOSTROPHE    # →’→
+2018 ; 0027 ;  ML      #* ( ‘ → ' ) LEFT SINGLE QUOTATION MARK → APOSTROPHE      # 
+2019 ; 0027 ;  ML      #* ( ’ → ' ) RIGHT SINGLE QUOTATION MARK → APOSTROPHE     # 
+201B ; 0027 ;  ML      #* ( ‛ → ' ) SINGLE HIGH-REVERSED-9 QUOTATION MARK → APOSTROPHE   # →′→
+2032 ; 0027 ;  ML      #* ( ′ → ' ) PRIME → APOSTROPHE   # 
+2035 ; 0027 ;  ML      #* ( ‵ → ' ) REVERSED PRIME → APOSTROPHE  # →ʽ→→‘→
+055A ; 0027 ;  ML      #* ( ՚ → ' ) ARMENIAN APOSTROPHE → APOSTROPHE      # →’→
+05F3 ; 0027 ;  ML      #* ( ‎׳‎ → ' ) HEBREW PUNCTUATION GERESH → APOSTROPHE  # 
+02B9 ; 0027 ;  ML      # ( ʹ → ' ) MODIFIER LETTER PRIME → APOSTROPHE     # 
+0374 ; 0027 ;  ML      # ( ʹ → ' ) GREEK NUMERAL SIGN → APOSTROPHE        # →′→
+02CA ; 0027 ;  ML      # ( ˊ → ' ) MODIFIER LETTER ACUTE ACCENT → APOSTROPHE      # →ʹ→→′→
+02CB ; 0027 ;  ML      # ( ˋ → ' ) MODIFIER LETTER GRAVE ACCENT → APOSTROPHE      # →`→→‘→
+02F4 ; 0027 ;  ML      #* ( ˴ → ' ) MODIFIER LETTER MIDDLE GRAVE ACCENT → APOSTROPHE      # →ˋ→→`→→‘→
+02BB ; 0027 ;  ML      # ( ʻ → ' ) MODIFIER LETTER TURNED COMMA → APOSTROPHE      # →‘→
+02BD ; 0027 ;  ML      # ( ʽ → ' ) MODIFIER LETTER REVERSED COMMA → APOSTROPHE    # →‘→
+02BC ; 0027 ;  ML      # ( ʼ → ' ) MODIFIER LETTER APOSTROPHE → APOSTROPHE        # →′→
+02BE ; 0027 ;  ML      # ( ʾ → ' ) MODIFIER LETTER RIGHT HALF RING → APOSTROPHE   # →ʼ→→′→
+A78C ; 0027 ;  ML      # ( ꞌ → ' ) LATIN SMALL LETTER SALTILLO → APOSTROPHE      # 
+05D9 ; 0027 ;  ML      # ( ‎י‎ → ' ) HEBREW LETTER YOD → APOSTROPHE   # 
+07F4 ; 0027 ;  ML      # ( ‎ߴ‎ → ' ) NKO HIGH TONE APOSTROPHE → APOSTROPHE    # →’→
+07F5 ; 0027 ;  ML      # ( ‎ߵ‎ → ' ) NKO LOW TONE APOSTROPHE → APOSTROPHE     # →‘→
+
+02DD ; 0027 0027 ;     ML      #* ( ˝ → '' ) DOUBLE ACUTE ACCENT → APOSTROPHE, APOSTROPHE # →"→
+0022 ; 0027 0027 ;     ML      #* ( " → '' ) QUOTATION MARK → APOSTROPHE, APOSTROPHE       # 
+FF02 ; 0027 0027 ;     ML      #* ( " → '' ) FULLWIDTH QUOTATION MARK → APOSTROPHE, APOSTROPHE   # →”→→"→
+201C ; 0027 0027 ;     ML      #* ( “ → '' ) LEFT DOUBLE QUOTATION MARK → APOSTROPHE, APOSTROPHE # →"→
+201D ; 0027 0027 ;     ML      #* ( ” → '' ) RIGHT DOUBLE QUOTATION MARK → APOSTROPHE, APOSTROPHE        # →"→
+201F ; 0027 0027 ;     ML      #* ( ‟ → '' ) DOUBLE HIGH-REVERSED-9 QUOTATION MARK → APOSTROPHE, APOSTROPHE      # →”→→"→
+2033 ; 0027 0027 ;     ML      #* ( ″ → '' ) DOUBLE PRIME → APOSTROPHE, APOSTROPHE       # →"→
+2036 ; 0027 0027 ;     ML      #* ( ‶ → '' ) REVERSED DOUBLE PRIME → APOSTROPHE, APOSTROPHE      # →‵‵→
+3003 ; 0027 0027 ;     ML      #* ( 〃 → '' ) DITTO MARK → APOSTROPHE, APOSTROPHE # →″→→"→
+05F4 ; 0027 0027 ;     ML      #* ( ‎״‎ → '' ) HEBREW PUNCTUATION GERSHAYIM → APOSTROPHE, APOSTROPHE  # →"→
+02BA ; 0027 0027 ;     ML      # ( ʺ → '' ) MODIFIER LETTER DOUBLE PRIME → APOSTROPHE, APOSTROPHE # →"→
+02F6 ; 0027 0027 ;     ML      #* ( ˶ → '' ) MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT → APOSTROPHE, APOSTROPHE  # →˝→→"→
+02EE ; 0027 0027 ;     ML      # ( ˮ → '' ) MODIFIER LETTER DOUBLE APOSTROPHE → APOSTROPHE, APOSTROPHE    # →″→→"→
+05F2 ; 0027 0027 ;     ML      # ( ‎ײ‎ → '' ) HEBREW LIGATURE YIDDISH DOUBLE YOD → APOSTROPHE, APOSTROPHE     # →‎יי‎→
+
+2034 ; 0027 0027 0027 ;        ML      #* ( ‴ → ''' ) TRIPLE PRIME → APOSTROPHE, APOSTROPHE, APOSTROPHE  # →′′′→
+2037 ; 0027 0027 0027 ;        ML      #* ( ‷ → ''' ) REVERSED TRIPLE PRIME → APOSTROPHE, APOSTROPHE, APOSTROPHE # →‵‵‵→
+
+2057 ; 0027 0027 0027 0027 ;   ML      #* ( ⁗ → '''' ) QUADRUPLE PRIME → APOSTROPHE, APOSTROPHE, APOSTROPHE, APOSTROPHE  # →′′′′→
+
+FF3B ; 0028 ;  ML      #* ( [ → ( ) FULLWIDTH LEFT SQUARE BRACKET → LEFT PARENTHESIS     # →〔→
+3014 ; 0028 ;  ML      #* ( 〔 → ( ) LEFT TORTOISE SHELL BRACKET → LEFT PARENTHESIS       # 
+FD3E ; 0028 ;  ML      #* ( ﴾ → ( ) ORNATE LEFT PARENTHESIS → LEFT PARENTHESIS   # 
+2768 ; 0028 ;  ML      #* ( ❨ → ( ) MEDIUM LEFT PARENTHESIS ORNAMENT → LEFT PARENTHESIS  # 
+2772 ; 0028 ;  ML      #* ( ❲ → ( ) LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT → LEFT PARENTHESIS        # →〔→
+
+3220 ; 0028 30FC 0029 ;        ML      #* ( ㈠ → (ー) ) PARENTHESIZED IDEOGRAPH ONE → LEFT PARENTHESIS, KATAKANA-HIRAGANA PROLONGED SOUND MARK, RIGHT PARENTHESIS        # →(一)→
+
+247D ; 0028 0031 0030 0029 ;   ML      #* ( ⑽ → (10) ) PARENTHESIZED NUMBER TEN → LEFT PARENTHESIS, DIGIT ONE, DIGIT ZERO, RIGHT PARENTHESIS     # 
+
+2475 ; 0028 0032 0029 ;        ML      #* ( ⑵ → (2) ) PARENTHESIZED DIGIT TWO → LEFT PARENTHESIS, DIGIT TWO, RIGHT PARENTHESIS   # 
+
+2487 ; 0028 0032 0030 0029 ;   ML      #* ( ⒇ → (20) ) PARENTHESIZED NUMBER TWENTY → LEFT PARENTHESIS, DIGIT TWO, DIGIT ZERO, RIGHT PARENTHESIS  # 
+
+2476 ; 0028 0033 0029 ;        ML      #* ( ⑶ → (3) ) PARENTHESIZED DIGIT THREE → LEFT PARENTHESIS, DIGIT THREE, RIGHT PARENTHESIS       # 
+
+2477 ; 0028 0034 0029 ;        ML      #* ( ⑷ → (4) ) PARENTHESIZED DIGIT FOUR → LEFT PARENTHESIS, DIGIT FOUR, RIGHT PARENTHESIS # 
+
+2478 ; 0028 0035 0029 ;        ML      #* ( ⑸ → (5) ) PARENTHESIZED DIGIT FIVE → LEFT PARENTHESIS, DIGIT FIVE, RIGHT PARENTHESIS # 
+
+2479 ; 0028 0036 0029 ;        ML      #* ( ⑹ → (6) ) PARENTHESIZED DIGIT SIX → LEFT PARENTHESIS, DIGIT SIX, RIGHT PARENTHESIS   # 
+
+247A ; 0028 0037 0029 ;        ML      #* ( ⑺ → (7) ) PARENTHESIZED DIGIT SEVEN → LEFT PARENTHESIS, DIGIT SEVEN, RIGHT PARENTHESIS       # 
+
+247B ; 0028 0038 0029 ;        ML      #* ( ⑻ → (8) ) PARENTHESIZED DIGIT EIGHT → LEFT PARENTHESIS, DIGIT EIGHT, RIGHT PARENTHESIS       # 
+
+247C ; 0028 0039 0029 ;        ML      #* ( ⑼ → (9) ) PARENTHESIZED DIGIT NINE → LEFT PARENTHESIS, DIGIT NINE, RIGHT PARENTHESIS # 
+
+249C ; 0028 0061 0029 ;        ML      #* ( ⒜ → (a) ) PARENTHESIZED LATIN SMALL LETTER A → LEFT PARENTHESIS, LATIN SMALL LETTER A, RIGHT PARENTHESIS     # 
+
+249D ; 0028 0062 0029 ;        ML      #* ( ⒝ → (b) ) PARENTHESIZED LATIN SMALL LETTER B → LEFT PARENTHESIS, LATIN SMALL LETTER B, RIGHT PARENTHESIS     # 
+
+249E ; 0028 0063 0029 ;        ML      #* ( ⒞ → (c) ) PARENTHESIZED LATIN SMALL LETTER C → LEFT PARENTHESIS, LATIN SMALL LETTER C, RIGHT PARENTHESIS     # 
+
+249F ; 0028 0064 0029 ;        ML      #* ( ⒟ → (d) ) PARENTHESIZED LATIN SMALL LETTER D → LEFT PARENTHESIS, LATIN SMALL LETTER D, RIGHT PARENTHESIS     # 
+
+24A0 ; 0028 0065 0029 ;        ML      #* ( ⒠ → (e) ) PARENTHESIZED LATIN SMALL LETTER E → LEFT PARENTHESIS, LATIN SMALL LETTER E, RIGHT PARENTHESIS     # 
+
+24A1 ; 0028 0066 0029 ;        ML      #* ( ⒡ → (f) ) PARENTHESIZED LATIN SMALL LETTER F → LEFT PARENTHESIS, LATIN SMALL LETTER F, RIGHT PARENTHESIS     # 
+
+24A2 ; 0028 0067 0029 ;        ML      #* ( ⒢ → (g) ) PARENTHESIZED LATIN SMALL LETTER G → LEFT PARENTHESIS, LATIN SMALL LETTER G, RIGHT PARENTHESIS     # 
+
+24A3 ; 0028 0068 0029 ;        ML      #* ( ⒣ → (h) ) PARENTHESIZED LATIN SMALL LETTER H → LEFT PARENTHESIS, LATIN SMALL LETTER H, RIGHT PARENTHESIS     # 
+
+24A4 ; 0028 0069 0029 ;        ML      #* ( ⒤ → (i) ) PARENTHESIZED LATIN SMALL LETTER I → LEFT PARENTHESIS, LATIN SMALL LETTER I, RIGHT PARENTHESIS     # 
+
+24A5 ; 0028 006A 0029 ;        ML      #* ( ⒥ → (j) ) PARENTHESIZED LATIN SMALL LETTER J → LEFT PARENTHESIS, LATIN SMALL LETTER J, RIGHT PARENTHESIS     # 
+
+24A6 ; 0028 006B 0029 ;        ML      #* ( ⒦ → (k) ) PARENTHESIZED LATIN SMALL LETTER K → LEFT PARENTHESIS, LATIN SMALL LETTER K, RIGHT PARENTHESIS     # 
+
+2474 ; 0028 006C 0029 ;        ML      #* ( ⑴ → (l) ) PARENTHESIZED DIGIT ONE → LEFT PARENTHESIS, LATIN SMALL LETTER L, RIGHT PARENTHESIS        # →(1)→
+1F118 ;        0028 006C 0029 ;        ML      #* ( 🄘 → (l) ) PARENTHESIZED LATIN CAPITAL LETTER I → LEFT PARENTHESIS, LATIN SMALL LETTER L, RIGHT PARENTHESIS  # →(I)→
+24A7 ; 0028 006C 0029 ;        ML      #* ( ⒧ → (l) ) PARENTHESIZED LATIN SMALL LETTER L → LEFT PARENTHESIS, LATIN SMALL LETTER L, RIGHT PARENTHESIS     # 
+
+247F ; 0028 006C 0032 0029 ;   ML      #* ( ⑿ → (l2) ) PARENTHESIZED NUMBER TWELVE → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT TWO, RIGHT PARENTHESIS        # →(12)→
+
+2480 ; 0028 006C 0033 0029 ;   ML      #* ( ⒀ → (l3) ) PARENTHESIZED NUMBER THIRTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT THREE, RIGHT PARENTHESIS    # →(13)→
+
+2481 ; 0028 006C 0034 0029 ;   ML      #* ( ⒁ → (l4) ) PARENTHESIZED NUMBER FOURTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT FOUR, RIGHT PARENTHESIS     # →(14)→
+
+2482 ; 0028 006C 0035 0029 ;   ML      #* ( ⒂ → (l5) ) PARENTHESIZED NUMBER FIFTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT FIVE, RIGHT PARENTHESIS      # →(15)→
+
+2483 ; 0028 006C 0036 0029 ;   ML      #* ( ⒃ → (l6) ) PARENTHESIZED NUMBER SIXTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT SIX, RIGHT PARENTHESIS       # →(16)→
+
+2484 ; 0028 006C 0037 0029 ;   ML      #* ( ⒄ → (l7) ) PARENTHESIZED NUMBER SEVENTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT SEVEN, RIGHT PARENTHESIS   # →(17)→
+
+2485 ; 0028 006C 0038 0029 ;   ML      #* ( ⒅ → (l8) ) PARENTHESIZED NUMBER EIGHTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT EIGHT, RIGHT PARENTHESIS    # →(18)→
+
+2486 ; 0028 006C 0039 0029 ;   ML      #* ( ⒆ → (l9) ) PARENTHESIZED NUMBER NINETEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT NINE, RIGHT PARENTHESIS     # →(19)→
+
+247E ; 0028 006C 006C 0029 ;   ML      #* ( ⑾ → (ll) ) PARENTHESIZED NUMBER ELEVEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, LATIN SMALL LETTER L, RIGHT PARENTHESIS     # →(11)→
+
+24A9 ; 0028 006E 0029 ;        ML      #* ( ⒩ → (n) ) PARENTHESIZED LATIN SMALL LETTER N → LEFT PARENTHESIS, LATIN SMALL LETTER N, RIGHT PARENTHESIS     # 
+
+24AA ; 0028 006F 0029 ;        ML      #* ( ⒪ → (o) ) PARENTHESIZED LATIN SMALL LETTER O → LEFT PARENTHESIS, LATIN SMALL LETTER O, RIGHT PARENTHESIS     # 
+
+24AB ; 0028 0070 0029 ;        ML      #* ( ⒫ → (p) ) PARENTHESIZED LATIN SMALL LETTER P → LEFT PARENTHESIS, LATIN SMALL LETTER P, RIGHT PARENTHESIS     # 
+
+24AC ; 0028 0071 0029 ;        ML      #* ( ⒬ → (q) ) PARENTHESIZED LATIN SMALL LETTER Q → LEFT PARENTHESIS, LATIN SMALL LETTER Q, RIGHT PARENTHESIS     # 
+
+24AD ; 0028 0072 0029 ;        ML      #* ( ⒭ → (r) ) PARENTHESIZED LATIN SMALL LETTER R → LEFT PARENTHESIS, LATIN SMALL LETTER R, RIGHT PARENTHESIS     # 
+
+24A8 ; 0028 0072 006E 0029 ;   ML      #* ( ⒨ → (rn) ) PARENTHESIZED LATIN SMALL LETTER M → LEFT PARENTHESIS, LATIN SMALL LETTER R, LATIN SMALL LETTER N, RIGHT PARENTHESIS      # →(m)→
+
+24AE ; 0028 0073 0029 ;        ML      #* ( ⒮ → (s) ) PARENTHESIZED LATIN SMALL LETTER S → LEFT PARENTHESIS, LATIN SMALL LETTER S, RIGHT PARENTHESIS     # 
+
+1F12A ;        1F122 ; ML      #* ( 🄪 → 🄢 ) TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S → PARENTHESIZED LATIN CAPITAL LETTER S   # →〔S〕→→(S)→
+
+24AF ; 0028 0074 0029 ;        ML      #* ( ⒯ → (t) ) PARENTHESIZED LATIN SMALL LETTER T → LEFT PARENTHESIS, LATIN SMALL LETTER T, RIGHT PARENTHESIS     # 
+
+24B0 ; 0028 0075 0029 ;        ML      #* ( ⒰ → (u) ) PARENTHESIZED LATIN SMALL LETTER U → LEFT PARENTHESIS, LATIN SMALL LETTER U, RIGHT PARENTHESIS     # 
+
+24B1 ; 0028 0076 0029 ;        ML      #* ( ⒱ → (v) ) PARENTHESIZED LATIN SMALL LETTER V → LEFT PARENTHESIS, LATIN SMALL LETTER V, RIGHT PARENTHESIS     # 
+
+24B2 ; 0028 0076 0076 0029 ;   ML      #* ( ⒲ → (vv) ) PARENTHESIZED LATIN SMALL LETTER W → LEFT PARENTHESIS, LATIN SMALL LETTER V, LATIN SMALL LETTER V, RIGHT PARENTHESIS      # →(w)→
+
+24B3 ; 0028 0078 0029 ;        ML      #* ( ⒳ → (x) ) PARENTHESIZED LATIN SMALL LETTER X → LEFT PARENTHESIS, LATIN SMALL LETTER X, RIGHT PARENTHESIS     # 
+
+24B4 ; 0028 0079 0029 ;        ML      #* ( ⒴ → (y) ) PARENTHESIZED LATIN SMALL LETTER Y → LEFT PARENTHESIS, LATIN SMALL LETTER Y, RIGHT PARENTHESIS     # 
+
+24B5 ; 0028 007A 0029 ;        ML      #* ( ⒵ → (z) ) PARENTHESIZED LATIN SMALL LETTER Z → LEFT PARENTHESIS, LATIN SMALL LETTER Z, RIGHT PARENTHESIS     # 
+
+3200 ; 0028 1100 0029 ;        ML      #* ( ㈀ → (ᄀ) ) PARENTHESIZED HANGUL KIYEOK → LEFT PARENTHESIS, HANGUL CHOSEONG KIYEOK, RIGHT PARENTHESIS        # 
+
+320E ; 0028 AC00 0029 ;        ML      #* ( ㈎ → (가) ) PARENTHESIZED HANGUL KIYEOK A → LEFT PARENTHESIS, HANGUL SYLLABLE GA, RIGHT PARENTHESIS  # 
+
+3201 ; 0028 1102 0029 ;        ML      #* ( ㈁ → (ᄂ) ) PARENTHESIZED HANGUL NIEUN → LEFT PARENTHESIS, HANGUL CHOSEONG NIEUN, RIGHT PARENTHESIS  # 
+
+320F ; 0028 B098 0029 ;        ML      #* ( ㈏ → (나) ) PARENTHESIZED HANGUL NIEUN A → LEFT PARENTHESIS, HANGUL SYLLABLE NA, RIGHT PARENTHESIS   # 
+
+3202 ; 0028 1103 0029 ;        ML      #* ( ㈂ → (ᄃ) ) PARENTHESIZED HANGUL TIKEUT → LEFT PARENTHESIS, HANGUL CHOSEONG TIKEUT, RIGHT PARENTHESIS        # 
+
+3210 ; 0028 B2E4 0029 ;        ML      #* ( ㈐ → (다) ) PARENTHESIZED HANGUL TIKEUT A → LEFT PARENTHESIS, HANGUL SYLLABLE DA, RIGHT PARENTHESIS  # 
+
+3203 ; 0028 1105 0029 ;        ML      #* ( ㈃ → (ᄅ) ) PARENTHESIZED HANGUL RIEUL → LEFT PARENTHESIS, HANGUL CHOSEONG RIEUL, RIGHT PARENTHESIS  # 
+
+3211 ; 0028 B77C 0029 ;        ML      #* ( ㈑ → (라) ) PARENTHESIZED HANGUL RIEUL A → LEFT PARENTHESIS, HANGUL SYLLABLE RA, RIGHT PARENTHESIS   # 
+
+3204 ; 0028 1106 0029 ;        ML      #* ( ㈄ → (ᄆ) ) PARENTHESIZED HANGUL MIEUM → LEFT PARENTHESIS, HANGUL CHOSEONG MIEUM, RIGHT PARENTHESIS  # 
+
+3212 ; 0028 B9C8 0029 ;        ML      #* ( ㈒ → (마) ) PARENTHESIZED HANGUL MIEUM A → LEFT PARENTHESIS, HANGUL SYLLABLE MA, RIGHT PARENTHESIS   # 
+
+3205 ; 0028 1107 0029 ;        ML      #* ( ㈅ → (ᄇ) ) PARENTHESIZED HANGUL PIEUP → LEFT PARENTHESIS, HANGUL CHOSEONG PIEUP, RIGHT PARENTHESIS  # 
+
+3213 ; 0028 BC14 0029 ;        ML      #* ( ㈓ → (바) ) PARENTHESIZED HANGUL PIEUP A → LEFT PARENTHESIS, HANGUL SYLLABLE BA, RIGHT PARENTHESIS   # 
+
+3206 ; 0028 1109 0029 ;        ML      #* ( ㈆ → (ᄉ) ) PARENTHESIZED HANGUL SIOS → LEFT PARENTHESIS, HANGUL CHOSEONG SIOS, RIGHT PARENTHESIS    # 
+
+3214 ; 0028 C0AC 0029 ;        ML      #* ( ㈔ → (사) ) PARENTHESIZED HANGUL SIOS A → LEFT PARENTHESIS, HANGUL SYLLABLE SA, RIGHT PARENTHESIS    # 
+
+3207 ; 0028 110B 0029 ;        ML      #* ( ㈇ → (ᄋ) ) PARENTHESIZED HANGUL IEUNG → LEFT PARENTHESIS, HANGUL CHOSEONG IEUNG, RIGHT PARENTHESIS  # 
+
+3215 ; 0028 C544 0029 ;        ML      #* ( ㈕ → (아) ) PARENTHESIZED HANGUL IEUNG A → LEFT PARENTHESIS, HANGUL SYLLABLE A, RIGHT PARENTHESIS    # 
+
+321D ; 0028 C624 C804 0029 ;   ML      #* ( ㈝ → (오전) ) PARENTHESIZED KOREAN CHARACTER OJEON → LEFT PARENTHESIS, HANGUL SYLLABLE O, HANGUL SYLLABLE JEON, RIGHT PARENTHESIS   # 
+
+321E ; 0028 C624 D6C4 0029 ;   ML      #* ( ㈞ → (오후) ) PARENTHESIZED KOREAN CHARACTER O HU → LEFT PARENTHESIS, HANGUL SYLLABLE O, HANGUL SYLLABLE HU, RIGHT PARENTHESIS      # 
+
+3208 ; 0028 110C 0029 ;        ML      #* ( ㈈ → (ᄌ) ) PARENTHESIZED HANGUL CIEUC → LEFT PARENTHESIS, HANGUL CHOSEONG CIEUC, RIGHT PARENTHESIS  # 
+
+3216 ; 0028 C790 0029 ;        ML      #* ( ㈖ → (자) ) PARENTHESIZED HANGUL CIEUC A → LEFT PARENTHESIS, HANGUL SYLLABLE JA, RIGHT PARENTHESIS   # 
+
+321C ; 0028 C8FC 0029 ;        ML      #* ( ㈜ → (주) ) PARENTHESIZED HANGUL CIEUC U → LEFT PARENTHESIS, HANGUL SYLLABLE JU, RIGHT PARENTHESIS   # 
+
+3209 ; 0028 110E 0029 ;        ML      #* ( ㈉ → (ᄎ) ) PARENTHESIZED HANGUL CHIEUCH → LEFT PARENTHESIS, HANGUL CHOSEONG CHIEUCH, RIGHT PARENTHESIS      # 
+
+3217 ; 0028 CC28 0029 ;        ML      #* ( ㈗ → (차) ) PARENTHESIZED HANGUL CHIEUCH A → LEFT PARENTHESIS, HANGUL SYLLABLE CA, RIGHT PARENTHESIS # 
+
+320A ; 0028 110F 0029 ;        ML      #* ( ㈊ → (ᄏ) ) PARENTHESIZED HANGUL KHIEUKH → LEFT PARENTHESIS, HANGUL CHOSEONG KHIEUKH, RIGHT PARENTHESIS      # 
+
+3218 ; 0028 CE74 0029 ;        ML      #* ( ㈘ → (카) ) PARENTHESIZED HANGUL KHIEUKH A → LEFT PARENTHESIS, HANGUL SYLLABLE KA, RIGHT PARENTHESIS # 
+
+320B ; 0028 1110 0029 ;        ML      #* ( ㈋ → (ᄐ) ) PARENTHESIZED HANGUL THIEUTH → LEFT PARENTHESIS, HANGUL CHOSEONG THIEUTH, RIGHT PARENTHESIS      # 
+
+3219 ; 0028 D0C0 0029 ;        ML      #* ( ㈙ → (타) ) PARENTHESIZED HANGUL THIEUTH A → LEFT PARENTHESIS, HANGUL SYLLABLE TA, RIGHT PARENTHESIS # 
+
+320C ; 0028 1111 0029 ;        ML      #* ( ㈌ → (ᄑ) ) PARENTHESIZED HANGUL PHIEUPH → LEFT PARENTHESIS, HANGUL CHOSEONG PHIEUPH, RIGHT PARENTHESIS      # 
+
+321A ; 0028 D30C 0029 ;        ML      #* ( ㈚ → (파) ) PARENTHESIZED HANGUL PHIEUPH A → LEFT PARENTHESIS, HANGUL SYLLABLE PA, RIGHT PARENTHESIS # 
+
+320D ; 0028 1112 0029 ;        ML      #* ( ㈍ → (ᄒ) ) PARENTHESIZED HANGUL HIEUH → LEFT PARENTHESIS, HANGUL CHOSEONG HIEUH, RIGHT PARENTHESIS  # 
+
+321B ; 0028 D558 0029 ;        ML      #* ( ㈛ → (하) ) PARENTHESIZED HANGUL HIEUH A → LEFT PARENTHESIS, HANGUL SYLLABLE HA, RIGHT PARENTHESIS   # 
+
+3226 ; 0028 4E03 0029 ;        ML      #* ( ㈦ → (七) ) PARENTHESIZED IDEOGRAPH SEVEN → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E03, RIGHT PARENTHESIS  # 
+
+3222 ; 0028 4E09 0029 ;        ML      #* ( ㈢ → (三) ) PARENTHESIZED IDEOGRAPH THREE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E09, RIGHT PARENTHESIS  # 
+1F241 ;        0028 4E09 0029 ;        ML      #* ( 🉁 → (三) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E09, RIGHT PARENTHESIS   # →〔三〕→
+
+3228 ; 0028 4E5D 0029 ;        ML      #* ( ㈨ → (九) ) PARENTHESIZED IDEOGRAPH NINE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E5D, RIGHT PARENTHESIS   # 
+
+3221 ; 0028 4E8C 0029 ;        ML      #* ( ㈡ → (二) ) PARENTHESIZED IDEOGRAPH TWO → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E8C, RIGHT PARENTHESIS    # 
+1F242 ;        0028 4E8C 0029 ;        ML      #* ( 🉂 → (二) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E8C, RIGHT PARENTHESIS   # →〔二〕→
+
+3224 ; 0028 4E94 0029 ;        ML      #* ( ㈤ → (五) ) PARENTHESIZED IDEOGRAPH FIVE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E94, RIGHT PARENTHESIS   # 
+
+3239 ; 0028 4EE3 0029 ;        ML      #* ( ㈹ → (代) ) PARENTHESIZED IDEOGRAPH REPRESENT → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4EE3, RIGHT PARENTHESIS      # 
+
+323D ; 0028 4F01 0029 ;        ML      #* ( ㈽ → (企) ) PARENTHESIZED IDEOGRAPH ENTERPRISE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4F01, RIGHT PARENTHESIS     # 
+
+3241 ; 0028 4F11 0029 ;        ML      #* ( ㉁ → (休) ) PARENTHESIZED IDEOGRAPH REST → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4F11, RIGHT PARENTHESIS   # 
+
+3227 ; 0028 516B 0029 ;        ML      #* ( ㈧ → (八) ) PARENTHESIZED IDEOGRAPH EIGHT → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-516B, RIGHT PARENTHESIS  # 
+
+3225 ; 0028 516D 0029 ;        ML      #* ( ㈥ → (六) ) PARENTHESIZED IDEOGRAPH SIX → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-516D, RIGHT PARENTHESIS    # 
+
+3238 ; 0028 52B4 0029 ;        ML      #* ( ㈸ → (労) ) PARENTHESIZED IDEOGRAPH LABOR → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-52B4, RIGHT PARENTHESIS  # 
+
+1F247 ;        0028 52DD 0029 ;        ML      #* ( 🉇 → (勝) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-52DD, RIGHT PARENTHESIS   # →〔勝〕→
+
+3229 ; 0028 5341 0029 ;        ML      #* ( ㈩ → (十) ) PARENTHESIZED IDEOGRAPH TEN → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-5341, RIGHT PARENTHESIS    # 
+
+323F ; 0028 5354 0029 ;        ML      #* ( ㈿ → (協) ) PARENTHESIZED IDEOGRAPH ALLIANCE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-5354, RIGHT PARENTHESIS       # 
+
+3234 ; 0028 540D 0029 ;        ML      #* ( ㈴ → (名) ) PARENTHESIZED IDEOGRAPH NAME → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-540D, RIGHT PARENTHESIS   # 
+
+323A ; 0028 547C 0029 ;        ML      #* ( ㈺ → (呼) ) PARENTHESIZED IDEOGRAPH CALL → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-547C, RIGHT PARENTHESIS   # 
+
+3223 ; 0028 56DB 0029 ;        ML      #* ( ㈣ → (四) ) PARENTHESIZED IDEOGRAPH FOUR → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-56DB, RIGHT PARENTHESIS   # 
+
+322F ; 0028 571F 0029 ;        ML      #* ( ㈯ → (土) ) PARENTHESIZED IDEOGRAPH EARTH → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-571F, RIGHT PARENTHESIS  # 
+
+323B ; 0028 5B66 0029 ;        ML      #* ( ㈻ → (学) ) PARENTHESIZED IDEOGRAPH STUDY → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-5B66, RIGHT PARENTHESIS  # 
+
+1F243 ;        0028 5B89 0029 ;        ML      #* ( 🉃 → (安) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-5B89, RIGHT PARENTHESIS   # →〔安〕→
+
+1F245 ;        0028 6253 0029 ;        ML      #* ( 🉅 → (打) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6253, RIGHT PARENTHESIS   # →〔打〕→
+
+1F248 ;        0028 6557 0029 ;        ML      #* ( 🉈 → (敗) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6557, RIGHT PARENTHESIS   # →〔敗〕→
+
+3230 ; 0028 65E5 0029 ;        ML      #* ( ㈰ → (日) ) PARENTHESIZED IDEOGRAPH SUN → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-65E5, RIGHT PARENTHESIS    # 
+
+322A ; 0028 6708 0029 ;        ML      #* ( ㈪ → (月) ) PARENTHESIZED IDEOGRAPH MOON → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6708, RIGHT PARENTHESIS   # 
+
+3232 ; 0028 6709 0029 ;        ML      #* ( ㈲ → (有) ) PARENTHESIZED IDEOGRAPH HAVE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6709, RIGHT PARENTHESIS   # 
+
+322D ; 0028 6728 0029 ;        ML      #* ( ㈭ → (木) ) PARENTHESIZED IDEOGRAPH WOOD → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6728, RIGHT PARENTHESIS   # 
+
+1F240 ;        0028 672C 0029 ;        ML      #* ( 🉀 → (本) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-672C, RIGHT PARENTHESIS   # →〔本〕→
+
+3231 ; 0028 682A 0029 ;        ML      #* ( ㈱ → (株) ) PARENTHESIZED IDEOGRAPH STOCK → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-682A, RIGHT PARENTHESIS  # 
+
+322C ; 0028 6C34 0029 ;        ML      #* ( ㈬ → (水) ) PARENTHESIZED IDEOGRAPH WATER → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6C34, RIGHT PARENTHESIS  # 
+
+322B ; 0028 706B 0029 ;        ML      #* ( ㈫ → (火) ) PARENTHESIZED IDEOGRAPH FIRE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-706B, RIGHT PARENTHESIS   # 
+
+1F244 ;        0028 70B9 0029 ;        ML      #* ( 🉄 → (点) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-70B9, RIGHT PARENTHESIS   # →〔点〕→
+
+3235 ; 0028 7279 0029 ;        ML      #* ( ㈵ → (特) ) PARENTHESIZED IDEOGRAPH SPECIAL → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-7279, RIGHT PARENTHESIS        # 
+
+1F246 ;        0028 76D7 0029 ;        ML      #* ( 🉆 → (盗) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-76D7, RIGHT PARENTHESIS   # →〔盗〕→
+
+323C ; 0028 76E3 0029 ;        ML      #* ( ㈼ → (監) ) PARENTHESIZED IDEOGRAPH SUPERVISE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-76E3, RIGHT PARENTHESIS      # 
+
+3233 ; 0028 793E 0029 ;        ML      #* ( ㈳ → (社) ) PARENTHESIZED IDEOGRAPH SOCIETY → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-793E, RIGHT PARENTHESIS        # 
+
+3237 ; 0028 795D 0029 ;        ML      #* ( ㈷ → (祝) ) PARENTHESIZED IDEOGRAPH CONGRATULATION → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-795D, RIGHT PARENTHESIS # 
+
+3240 ; 0028 796D 0029 ;        ML      #* ( ㉀ → (祭) ) PARENTHESIZED IDEOGRAPH FESTIVAL → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-796D, RIGHT PARENTHESIS       # 
+
+3242 ; 0028 81EA 0029 ;        ML      #* ( ㉂ → (自) ) PARENTHESIZED IDEOGRAPH SELF → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-81EA, RIGHT PARENTHESIS   # 
+
+3243 ; 0028 81F3 0029 ;        ML      #* ( ㉃ → (至) ) PARENTHESIZED IDEOGRAPH REACH → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-81F3, RIGHT PARENTHESIS  # 
+
+3236 ; 0028 8CA1 0029 ;        ML      #* ( ㈶ → (財) ) PARENTHESIZED IDEOGRAPH FINANCIAL → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-8CA1, RIGHT PARENTHESIS      # 
+
+323E ; 0028 8CC7 0029 ;        ML      #* ( ㈾ → (資) ) PARENTHESIZED IDEOGRAPH RESOURCE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-8CC7, RIGHT PARENTHESIS       # 
+
+322E ; 0028 91D1 0029 ;        ML      #* ( ㈮ → (金) ) PARENTHESIZED IDEOGRAPH METAL → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-91D1, RIGHT PARENTHESIS  # 
+
+FF3D ; 0029 ;  ML      #* ( ] → ) ) FULLWIDTH RIGHT SQUARE BRACKET → RIGHT PARENTHESIS   # →〕→
+3015 ; 0029 ;  ML      #* ( 〕 → ) ) RIGHT TORTOISE SHELL BRACKET → RIGHT PARENTHESIS     # 
+FD3F ; 0029 ;  ML      #* ( ﴿ → ) ) ORNATE RIGHT PARENTHESIS → RIGHT PARENTHESIS # 
+2769 ; 0029 ;  ML      #* ( ❩ → ) ) MEDIUM RIGHT PARENTHESIS ORNAMENT → RIGHT PARENTHESIS        # 
+2773 ; 0029 ;  ML      #* ( ❳ → ) ) LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT → RIGHT PARENTHESIS      # →〕→
+
+2774 ; 007B ;  ML      #* ( ❴ → { ) MEDIUM LEFT CURLY BRACKET ORNAMENT → LEFT CURLY BRACKET      # 
+
+2775 ; 007D ;  ML      #* ( ❵ → } ) MEDIUM RIGHT CURLY BRACKET ORNAMENT → RIGHT CURLY BRACKET    # 
+
+FF3E ; FE3F ;  ML      #* ( ^ → ︿ ) FULLWIDTH CIRCUMFLEX ACCENT → PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET    # 
+
+204E ; 002A ;  ML      #* ( ⁎ → * ) LOW ASTERISK → ASTERISK      # 
+066D ; 002A ;  ML      #* ( ‎٭‎ → * ) ARABIC FIVE POINTED STAR → ASTERISK     # 
+2217 ; 002A ;  ML      #* ( ∗ → * ) ASTERISK OPERATOR → ASTERISK # 
+
+1735 ; 002F ;  ML      #* ( ᜵ → / ) PHILIPPINE SINGLE PUNCTUATION → SOLIDUS      # 
+2044 ; 002F ;  ML      #* ( ⁄ → / ) FRACTION SLASH → SOLIDUS     # 
+2041 ; 002F ;  ML      #* ( ⁁ → / ) CARET INSERTION POINT → SOLIDUS      # 
+2215 ; 002F ;  ML      #* ( ∕ → / ) DIVISION SLASH → SOLIDUS     # 
+2571 ; 002F ;  ML      #* ( ╱ → / ) BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT → SOLIDUS      # 
+29F8 ; 002F ;  ML      #* ( ⧸ → / ) BIG SOLIDUS → SOLIDUS        # 
+31D3 ; 002F ;  ML      #* ( ㇓ → / ) CJK STROKE SP → SOLIDUS      # →⼃→
+3033 ; 002F ;  ML      # ( 〳 → / ) VERTICAL KANA REPEAT MARK UPPER HALF → SOLIDUS        # 
+4E3F ; 002F ;  ML      # ( 丿 → / ) CJK UNIFIED IDEOGRAPH-4E3F → SOLIDUS  # →⼃→
+2F03 ; 002F ;  ML      #* ( ⼃ → / ) KANGXI RADICAL SLASH → SOLIDUS       # 
+
+29F6 ; 002F 0304 ;     ML      #* ( ⧶ → /̄ ) SOLIDUS WITH OVERBAR → SOLIDUS, COMBINING MACRON   # 
+
+2AFD ; 002F 002F ;     ML      #* ( ⫽ → // ) DOUBLE SOLIDUS OPERATOR → SOLIDUS, SOLIDUS  # 
+
+2AFB ; 002F 002F 002F ;        ML      #* ( ⫻ → /// ) TRIPLE SOLIDUS BINARY RELATION → SOLIDUS, SOLIDUS, SOLIDUS # 
+
+FF3C ; 005C ;  ML      #* ( \ → \ ) FULLWIDTH REVERSE SOLIDUS → REVERSE SOLIDUS  # →∖→
+FE68 ; 005C ;  ML      #* ( ﹨ → \ ) SMALL REVERSE SOLIDUS → REVERSE SOLIDUS      # →∖→
+2216 ; 005C ;  ML      #* ( ∖ → \ ) SET MINUS → REVERSE SOLIDUS  # 
+29F5 ; 005C ;  ML      #* ( ⧵ → \ ) REVERSE SOLIDUS OPERATOR → REVERSE SOLIDUS   # 
+29F9 ; 005C ;  ML      #* ( ⧹ → \ ) BIG REVERSE SOLIDUS → REVERSE SOLIDUS        # 
+31D4 ; 005C ;  ML      #* ( ㇔ → \ ) CJK STROKE D → REVERSE SOLIDUS       # →⼂→
+4E36 ; 005C ;  ML      # ( 丶 → \ ) CJK UNIFIED IDEOGRAPH-4E36 → REVERSE SOLIDUS  # →⼂→
+2F02 ; 005C ;  ML      #* ( ⼂ → \ ) KANGXI RADICAL DOT → REVERSE SOLIDUS # 
+
+2CF9 ; 005C 005C ;     ML      #* ( ⳹ → \\ ) COPTIC OLD NUBIAN FULL STOP → REVERSE SOLIDUS, REVERSE SOLIDUS      # 
+244A ; 005C 005C ;     ML      #* ( ⑊ → \\ ) OCR DOUBLE BACKSLASH → REVERSE SOLIDUS, REVERSE SOLIDUS     # 
+
+A778 ; 0026 ;  ML      # ( ꝸ → & ) LATIN SMALL LETTER UM → AMPERSAND     # 
+
+110BB ;        0970 ;  ML      #* ( 𑂻 → ॰ ) KAITHI ABBREVIATION SIGN → DEVANAGARI ABBREVIATION SIGN   # 
+26AC ; 0970 ;  ML      #* ( ⚬ → ॰ ) MEDIUM SMALL WHITE CIRCLE → DEVANAGARI ABBREVIATION SIGN   # 
+
+17D5 ; 0E5A ;  ML      #* ( ៕ → ๚ ) KHMER SIGN BARIYOOSAN → THAI CHARACTER ANGKHANKHU  # 
+
+17DA ; 0E5B ;  ML      #* ( ៚ → ๛ ) KHMER SIGN KOOMUUT → THAI CHARACTER KHOMUT # 
+
+0F0C ; 0F0B ;  ML      #* ( ༌ → ་ ) TIBETAN MARK DELIMITER TSHEG BSTAR → TIBETAN MARK INTERSYLLABIC TSHEG      # 
+
+02D8 ; 02C7 ;  ML      #* ( ˘ → ˇ ) BREVE → CARON        # 
+A67E ; 02C7 ;  ML      #* ( ꙾ → ˇ ) CYRILLIC KAVYKA → CARON     # →˘→
+
+00AF ; 02C9 ;  ML      #* ( ¯ → ˉ ) MACRON → MODIFIER LETTER MACRON      # 
+FFE3 ; 02C9 ;  ML      #* (  ̄ → ˉ ) FULLWIDTH MACRON → MODIFIER LETTER MACRON   # →‾→
+203E ; 02C9 ;  ML      #* ( ‾ → ˉ ) OVERLINE → MODIFIER LETTER MACRON   # 
+FE49 ; 02C9 ;  ML      #* ( ﹉ → ˉ ) DASHED OVERLINE → MODIFIER LETTER MACRON    # →‾→
+FE4A ; 02C9 ;  ML      #* ( ﹊ → ˉ ) CENTRELINE OVERLINE → MODIFIER LETTER MACRON        # →‾→
+FE4B ; 02C9 ;  ML      #* ( ﹋ → ˉ ) WAVY OVERLINE → MODIFIER LETTER MACRON      # →‾→
+FE4C ; 02C9 ;  ML      #* ( ﹌ → ˉ ) DOUBLE WAVY OVERLINE → MODIFIER LETTER MACRON       # →‾→
+2594 ; 02C9 ;  ML      #* ( ▔ → ˉ ) UPPER ONE EIGHTH BLOCK → MODIFIER LETTER MACRON     # →¯→
+
+044A ; 02C9 0062 ;     ML      # ( ъ → ˉb ) CYRILLIC SMALL LETTER HARD SIGN → MODIFIER LETTER MACRON, LATIN SMALL LETTER B       # →¯b→
+
+0375 ; 02CF ;  ML      #* ( ͵ → ˏ ) GREEK LOWER NUMERAL SIGN → MODIFIER LETTER LOW ACUTE ACCENT  # 
+
+02FB ; 02EA ;  ML      #* ( ˻ → ˪ ) MODIFIER LETTER BEGIN LOW TONE → MODIFIER LETTER YIN DEPARTING TONE MARK     # 
+A716 ; 02EA ;  ML      #* ( ꜖ → ˪ ) MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR → MODIFIER LETTER YIN DEPARTING TONE MARK      # 
+
+A714 ; 02EB ;  ML      #* ( ꜔ → ˫ ) MODIFIER LETTER MID LEFT-STEM TONE BAR → MODIFIER LETTER YANG DEPARTING TONE MARK   # 
+
+2E30 ; 02F3 ;  ML      #* ( ⸰ → ˳ ) RING POINT → MODIFIER LETTER LOW RING       # 
+3002 ; 02F3 ;  ML      #* ( 。 → ˳ ) IDEOGRAPHIC FULL STOP → MODIFIER LETTER LOW RING    # 
+
+02DA ; 00B0 ;  ML      #* ( ˚ → ° ) RING ABOVE → DEGREE SIGN     # 
+2218 ; 00B0 ;  ML      #* ( ∘ → ° ) RING OPERATOR → DEGREE SIGN # 
+25CB ; 00B0 ;  ML      #* ( ○ → ° ) WHITE CIRCLE → DEGREE SIGN  # →◦→→∘→
+25E6 ; 00B0 ;  ML      #* ( ◦ → ° ) WHITE BULLET → DEGREE SIGN  # →∘→
+
+0BF5 ; 0BF3 ;  ML      #* ( ௵ → ௳ ) TAMIL YEAR SIGN → TAMIL DAY SIGN   # 
+
+17D9 ; 0E4F ;  ML      #* ( ៙ → ๏ ) KHMER SIGN PHNAEK MUAN → THAI CHARACTER FONGMAN    # 
+
+21B5 ; 21B2 ;  ML      #* ( ↵ → ↲ ) DOWNWARDS ARROW WITH CORNER LEFTWARDS → DOWNWARDS ARROW WITH TIP LEFTWARDS # 
+
+2A21 ; 21BE ;  ML      #* ( ⨡ → ↾ ) Z NOTATION SCHEMA PROJECTION → UPWARDS HARPOON WITH BARB RIGHTWARDS        # 
+
+1D6DB ;        2202 ;  ML      #* ( 𝛛 → ∂ ) MATHEMATICAL BOLD PARTIAL DIFFERENTIAL → PARTIAL DIFFERENTIAL     # 
+1D715 ;        2202 ;  ML      #* ( 𝜕 → ∂ ) MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL → PARTIAL DIFFERENTIAL   # 
+1D74F ;        2202 ;  ML      #* ( 𝝏 → ∂ ) MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL → PARTIAL DIFFERENTIAL      # 
+1D789 ;        2202 ;  ML      #* ( 𝞉 → ∂ ) MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL → PARTIAL DIFFERENTIAL  # 
+1D7C3 ;        2202 ;  ML      #* ( 𝟃 → ∂ ) MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL → PARTIAL DIFFERENTIAL   # 
+
+00F0 ; 2202 0335 ;     ML      # ( ð → ∂̵ ) LATIN SMALL LETTER ETH → PARTIAL DIFFERENTIAL, COMBINING SHORT STROKE OVERLAY      # 
+
+2300 ; 2205 ;  ML      #* ( ⌀ → ∅ ) DIAMETER SIGN → EMPTY SET  # 
+
+1D6C1 ;        2207 ;  ML      #* ( 𝛁 → ∇ ) MATHEMATICAL BOLD NABLA → NABLA   # 
+1D6FB ;        2207 ;  ML      #* ( 𝛻 → ∇ ) MATHEMATICAL ITALIC NABLA → NABLA # 
+1D735 ;        2207 ;  ML      #* ( 𝜵 → ∇ ) MATHEMATICAL BOLD ITALIC NABLA → NABLA    # 
+1D76F ;        2207 ;  ML      #* ( 𝝯 → ∇ ) MATHEMATICAL SANS-SERIF BOLD NABLA → NABLA        # 
+1D7A9 ;        2207 ;  ML      #* ( 𝞩 → ∇ ) MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA → NABLA # 
+
+2588 ; 220E ;  ML      #* ( █ → ∎ ) FULL BLOCK → END OF PROOF  # →■→
+25A0 ; 220E ;  ML      #* ( ■ → ∎ ) BLACK SQUARE → END OF PROOF        # 
+
+2A3F ; 2210 ;  ML      #* ( ⨿ → ∐ ) AMALGAMATION OR COPRODUCT → N-ARY COPRODUCT        # 
+
+FB29 ; 002B ;  ML      #* ( ﬩ → + ) HEBREW LETTER ALTERNATIVE PLUS SIGN → PLUS SIGN      # 
+
+2039 ; 003C ;  ML      #* ( ‹ → < ) SINGLE LEFT-POINTING ANGLE QUOTATION MARK → LESS-THAN SIGN   # 
+02C2 ; 003C ;  ML      #* ( ˂ → < ) MODIFIER LETTER LEFT ARROWHEAD → LESS-THAN SIGN       # 
+276E ; 003C ;  ML      #* ( ❮ → < ) HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT → LESS-THAN SIGN   # →‹→
+
+A4FF ; 003D ;  ML      #* ( ꓿ → = ) LISU PUNCTUATION FULL STOP → EQUALS SIGN     # 
+
+2A75 ; 003D 003D ;     ML      #* ( ⩵ → == ) TWO CONSECUTIVE EQUALS SIGNS → EQUALS SIGN, EQUALS SIGN     # 
+
+2A76 ; 003D 003D 003D ;        ML      #* ( ⩶ → === ) THREE CONSECUTIVE EQUALS SIGNS → EQUALS SIGN, EQUALS SIGN, EQUALS SIGN     # 
+
+203A ; 003E ;  ML      #* ( › → > ) SINGLE RIGHT-POINTING ANGLE QUOTATION MARK → GREATER-THAN SIGN       # 
+02C3 ; 003E ;  ML      #* ( ˃ → > ) MODIFIER LETTER RIGHT ARROWHEAD → GREATER-THAN SIGN   # 
+276F ; 003E ;  ML      #* ( ❯ → > ) HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT → GREATER-THAN SIGN       # →›→
+
+02DC ; 007E ;  ML      #* ( ˜ → ~ ) SMALL TILDE → TILDE   # 
+1FC0 ; 007E ;  ML      #* ( ῀ → ~ ) GREEK PERISPOMENI → TILDE    # →˜→
+2053 ; 007E ;  ML      #* ( ⁓ → ~ ) SWUNG DASH → TILDE   # 
+223C ; 007E ;  ML      #* ( ∼ → ~ ) TILDE OPERATOR → TILDE       # 
+
+22C0 ; 2227 ;  ML      #* ( ⋀ → ∧ ) N-ARY LOGICAL AND → LOGICAL AND    # 
+
+22C3 ; 222A ;  ML      #* ( ⋃ → ∪ ) N-ARY UNION → UNION        # 
+
+222F ; 222E 222E ;     ML      #* ( ∯ → ∮∮ ) SURFACE INTEGRAL → CONTOUR INTEGRAL, CONTOUR INTEGRAL   # 
+
+2230 ; 222E 222E 222E ;        ML      #* ( ∰ → ∮∮∮ ) VOLUME INTEGRAL → CONTOUR INTEGRAL, CONTOUR INTEGRAL, CONTOUR INTEGRAL       # 
+
+2263 ; 2261 ;  ML      #* ( ≣ → ≡ ) STRICTLY EQUIVALENT TO → IDENTICAL TO      # 
+
+2A20 ; 226B ;  ML      #* ( ⨠ → ≫ ) Z NOTATION SCHEMA PIPING → MUCH GREATER-THAN       # 
+
+2A03 ; 228D ;  ML      #* ( ⨃ → ⊍ ) N-ARY UNION OPERATOR WITH DOT → MULTISET MULTIPLICATION    # 
+
+2A04 ; 228E ;  ML      #* ( ⨄ → ⊎ ) N-ARY UNION OPERATOR WITH PLUS → MULTISET UNION    # 
+
+2A05 ; 2293 ;  ML      #* ( ⨅ → ⊓ ) N-ARY SQUARE INTERSECTION OPERATOR → SQUARE CAP    # 
+
+2A06 ; 2294 ;  ML      #* ( ⨆ → ⊔ ) N-ARY SQUARE UNION OPERATOR → SQUARE CUP   # 
+
+2641 ; 2295 ;  ML      #* ( ♁ → ⊕ ) EARTH → CIRCLED PLUS       # 
+2A01 ; 2295 ;  ML      #* ( ⨁ → ⊕ ) N-ARY CIRCLED PLUS OPERATOR → CIRCLED PLUS # 
+
+2A02 ; 2297 ;  ML      #* ( ⨂ → ⊗ ) N-ARY CIRCLED TIMES OPERATOR → CIRCLED TIMES       # 
+
+2609 ; 2299 ;  ML      #* ( ☉ → ⊙ ) SUN → CIRCLED DOT OPERATOR # 
+2A00 ; 2299 ;  ML      #* ( ⨀ → ⊙ ) N-ARY CIRCLED DOT OPERATOR → CIRCLED DOT OPERATOR  # 
+
+25B7 ; 22B2 ;  ML      #* ( ▷ → ⊲ ) WHITE RIGHT-POINTING TRIANGLE → NORMAL SUBGROUP OF # 
+
+25C7 ; 22C4 ;  ML      #* ( ◇ → ⋄ ) WHITE DIAMOND → DIAMOND OPERATOR   # 
+25CA ; 22C4 ;  ML      #* ( ◊ → ⋄ ) LOZENGE → DIAMOND OPERATOR # 
+2662 ; 22C4 ;  ML      #* ( ♢ → ⋄ ) WHITE DIAMOND SUIT → DIAMOND OPERATOR      # →◊→
+
+2A1D ; 22C8 ;  ML      #* ( ⨝ → ⋈ ) JOIN → BOWTIE      # 
+
+25E0 ; 2312 ;  ML      #* ( ◠ → ⌒ ) UPPER HALF CIRCLE → ARC    # 
+
+2A3D ; 2319 ;  ML      #* ( ⨽ → ⌙ ) RIGHTHAND INTERIOR PRODUCT → TURNED NOT SIGN       # 
+
+2325 ; 2324 ;  ML      #* ( ⌥ → ⌤ ) OPTION KEY → UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS      # 
+
+2638 ; 2388 ;  ML      #* ( ☸ → ⎈ ) WHEEL OF DHARMA → HELM SYMBOL      # 
+
+FE35 ; 23DC ;  ML      #* ( ︵ → ⏜ ) PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS → TOP PARENTHESIS  # 
+
+FE36 ; 23DD ;  ML      #* ( ︶ → ⏝ ) PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS → BOTTOM PARENTHESIS      # 
+
+FE37 ; 23DE ;  ML      #* ( ︷ → ⏞ ) PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET → TOP CURLY BRACKET      # 
+
+FE38 ; 23DF ;  ML      #* ( ︸ → ⏟ ) PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET → BOTTOM CURLY BRACKET  # 
+
+FE39 ; 23E0 ;  ML      #* ( ︹ → ⏠ ) PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET → TOP TORTOISE SHELL BRACKET    # 
+
+FE3A ; 23E1 ;  ML      #* ( ︺ → ⏡ ) PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET → BOTTOM TORTOISE SHELL BRACKET        # 
+
+25B1 ; 23E5 ;  ML      #* ( ▱ → ⏥ ) WHITE PARALLELOGRAM → FLATNESS     # 
+
+FE31 ; 2502 ;  ML      #* ( ︱ → │ ) PRESENTATION FORM FOR VERTICAL EM DASH → BOX DRAWINGS LIGHT VERTICAL       # →|→
+FF5C ; 2502 ;  ML      #* ( | → │ ) FULLWIDTH VERTICAL LINE → BOX DRAWINGS LIGHT VERTICAL      # 
+2503 ; 2502 ;  ML      #* ( ┃ → │ ) BOX DRAWINGS HEAVY VERTICAL → BOX DRAWINGS LIGHT VERTICAL  # 
+
+250F ; 250C ;  ML      #* ( ┏ → ┌ ) BOX DRAWINGS HEAVY DOWN AND RIGHT → BOX DRAWINGS LIGHT DOWN AND RIGHT      # 
+
+2523 ; 251C ;  ML      #* ( ┣ → ├ ) BOX DRAWINGS HEAVY VERTICAL AND RIGHT → BOX DRAWINGS LIGHT VERTICAL AND RIGHT      # 
+
+2590 ; 258C ;  ML      #* ( ▐ → ▌ ) RIGHT HALF BLOCK → LEFT HALF BLOCK # 
+
+2597 ; 2596 ;  ML      #* ( ▗ → ▖ ) QUADRANT LOWER RIGHT → QUADRANT LOWER LEFT # 
+
+259D ; 2598 ;  ML      #* ( ▝ → ▘ ) QUADRANT UPPER RIGHT → QUADRANT UPPER LEFT # 
+
+2610 ; 25A1 ;  ML      #* ( ☐ → □ ) BALLOT BOX → WHITE SQUARE  # 
+
+FFED ; 25AA ;  ML      #* ( ■ → ▪ ) HALFWIDTH BLACK SQUARE → BLACK SMALL SQUARE        # 
+
+25B8 ; 25B6 ;  ML      #* ( ▸ → ▶ ) BLACK RIGHT-POINTING SMALL TRIANGLE → BLACK RIGHT-POINTING TRIANGLE        # →►→
+25BA ; 25B6 ;  ML      #* ( ► → ▶ ) BLACK RIGHT-POINTING POINTER → BLACK RIGHT-POINTING TRIANGLE       # 
+
+29BE ; 25CE ;  ML      #* ( ⦾ → ◎ ) CIRCLED WHITE BULLET → BULLSEYE    # 
+
+2CE9 ; 2627 ;  ML      #* ( ⳩ → ☧ ) COPTIC SYMBOL KHI RO → CHI RHO     # 
+
+2329 ; 276C ;  ML      #* ( 〈 → ❬ ) LEFT-POINTING ANGLE BRACKET → MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT  # →〈→
+3008 ; 276C ;  ML      #* ( 〈 → ❬ ) LEFT ANGLE BRACKET → MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT   # 
+27E8 ; 276C ;  ML      #* ( ⟨ → ❬ ) MATHEMATICAL LEFT ANGLE BRACKET → MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT      # →〈→
+
+232A ; 276D ;  ML      #* ( 〉 → ❭ ) RIGHT-POINTING ANGLE BRACKET → MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT        # →〉→
+3009 ; 276D ;  ML      #* ( 〉 → ❭ ) RIGHT ANGLE BRACKET → MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT # 
+27E9 ; 276D ;  ML      #* ( ⟩ → ❭ ) MATHEMATICAL RIGHT ANGLE BRACKET → MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT    # →〉→
+
+301B ; 27E7 ;  ML      #* ( 〛 → ⟧ ) RIGHT WHITE SQUARE BRACKET → MATHEMATICAL RIGHT WHITE SQUARE BRACKET       # 
+
+29D9 ; 299A ;  ML      #* ( ⧙ → ⦚ ) RIGHT WIGGLY FENCE → VERTICAL ZIGZAG LINE  # 
+
+2A3E ; 2A1F ;  ML      #* ( ⨾ → ⨟ ) Z NOTATION RELATIONAL COMPOSITION → Z NOTATION SCHEMA COMPOSITION  # 
+
+3036 ; 3012 ;  ML      #* ( 〶 → 〒 ) CIRCLED POSTAL MARK → POSTAL MARK  # 
+
+02D9 ; 0971 ;  ML      #* ( ˙ → ॱ ) DOT ABOVE → DEVANAGARI SIGN HIGH SPACING DOT        # 
+
+FF0D ; 30FC ;  ML      #* ( - → ー ) FULLWIDTH HYPHEN-MINUS → KATAKANA-HIRAGANA PROLONGED SOUND MARK    # 
+2014 ; 30FC ;  ML      #* ( — → ー ) EM DASH → KATAKANA-HIRAGANA PROLONGED SOUND MARK   # →一→
+2015 ; 30FC ;  ML      #* ( ― → ー ) HORIZONTAL BAR → KATAKANA-HIRAGANA PROLONGED SOUND MARK    # →—→→一→
+2500 ; 30FC ;  ML      #* ( ─ → ー ) BOX DRAWINGS LIGHT HORIZONTAL → KATAKANA-HIRAGANA PROLONGED SOUND MARK     # →―→→—→→一→
+2501 ; 30FC ;  ML      #* ( ━ → ー ) BOX DRAWINGS HEAVY HORIZONTAL → KATAKANA-HIRAGANA PROLONGED SOUND MARK     # →—→→一→
+31D0 ; 30FC ;  ML      #* ( ㇐ → ー ) CJK STROKE H → KATAKANA-HIRAGANA PROLONGED SOUND MARK      # →一→
+1173 ; 30FC ;  ML      # ( ᅳ → ー ) HANGUL JUNGSEONG EU → KATAKANA-HIRAGANA PROLONGED SOUND MARK        # →ㅡ→→—→→一→
+3161 ; 30FC ;  ML      # ( ㅡ → ー ) HANGUL LETTER EU → KATAKANA-HIRAGANA PROLONGED SOUND MARK   # →—→→一→
+4E00 ; 30FC ;  ML      # ( 一 → ー ) CJK UNIFIED IDEOGRAPH-4E00 → KATAKANA-HIRAGANA PROLONGED SOUND MARK # 
+2F00 ; 30FC ;  ML      #* ( ⼀ → ー ) KANGXI RADICAL ONE → KATAKANA-HIRAGANA PROLONGED SOUND MARK        # →一→
+
+1196 ; 30FC 30FC ;     ML      # ( ᆖ → ーー ) HANGUL JUNGSEONG EU-EU → KATAKANA-HIRAGANA PROLONGED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK  # →ᅳᅳ→
+
+1174 ; 30FC 4E28 ;     ML      # ( ᅴ → ー丨 ) HANGUL JUNGSEONG YI → KATAKANA-HIRAGANA PROLONGED SOUND MARK, CJK UNIFIED IDEOGRAPH-4E28 # →ᅳᅵ→
+3162 ; 30FC 4E28 ;     ML      # ( ㅢ → ー丨 ) HANGUL LETTER YI → KATAKANA-HIRAGANA PROLONGED SOUND MARK, CJK UNIFIED IDEOGRAPH-4E28    # →ᅴ→→ᅳᅵ→
+
+20A4 ; 00A3 ;  ML      #* ( ₤ → £ ) LIRA SIGN → POUND SIGN      # 
+
+1D7CE ;        0030 ;  ML      # ( 𝟎 → 0 ) MATHEMATICAL BOLD DIGIT ZERO → DIGIT ZERO    # 
+1D7D8 ;        0030 ;  ML      # ( 𝟘 → 0 ) MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO → DIGIT ZERO   # 
+1D7E2 ;        0030 ;  ML      # ( 𝟢 → 0 ) MATHEMATICAL SANS-SERIF DIGIT ZERO → DIGIT ZERO      # 
+1D7EC ;        0030 ;  ML      # ( 𝟬 → 0 ) MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO → DIGIT ZERO # 
+1D7F6 ;        0030 ;  ML      # ( 𝟶 → 0 ) MATHEMATICAL MONOSPACE DIGIT ZERO → DIGIT ZERO       # 
+07C0 ; 0030 ;  ML      # ( ‎߀‎ → 0 ) NKO DIGIT ZERO → DIGIT ZERO      # 
+09E6 ; 0030 ;  ML      # ( ০ → 0 ) BENGALI DIGIT ZERO → DIGIT ZERO       # 
+0B66 ; 0030 ;  ML      # ( ୦ → 0 ) ORIYA DIGIT ZERO → DIGIT ZERO # 
+3007 ; 0030 ;  ML      # ( 〇 → 0 ) IDEOGRAPHIC NUMBER ZERO → DIGIT ZERO  # →O→
+1D40E ;        0030 ;  ML      # ( 𝐎 → 0 ) MATHEMATICAL BOLD CAPITAL O → DIGIT ZERO     # →O→
+1D442 ;        0030 ;  ML      # ( 𝑂 → 0 ) MATHEMATICAL ITALIC CAPITAL O → DIGIT ZERO   # →O→
+1D476 ;        0030 ;  ML      # ( 𝑶 → 0 ) MATHEMATICAL BOLD ITALIC CAPITAL O → DIGIT ZERO      # →O→
+1D4AA ;        0030 ;  ML      # ( 𝒪 → 0 ) MATHEMATICAL SCRIPT CAPITAL O → DIGIT ZERO   # →O→
+1D4DE ;        0030 ;  ML      # ( 𝓞 → 0 ) MATHEMATICAL BOLD SCRIPT CAPITAL O → DIGIT ZERO      # →O→
+1D512 ;        0030 ;  ML      # ( 𝔒 → 0 ) MATHEMATICAL FRAKTUR CAPITAL O → DIGIT ZERO  # →O→
+1D546 ;        0030 ;  ML      # ( 𝕆 → 0 ) MATHEMATICAL DOUBLE-STRUCK CAPITAL O → DIGIT ZERO    # →O→
+1D57A ;        0030 ;  ML      # ( 𝕺 → 0 ) MATHEMATICAL BOLD FRAKTUR CAPITAL O → DIGIT ZERO     # →O→
+1D5AE ;        0030 ;  ML      # ( 𝖮 → 0 ) MATHEMATICAL SANS-SERIF CAPITAL O → DIGIT ZERO       # →O→
+1D5E2 ;        0030 ;  ML      # ( 𝗢 → 0 ) MATHEMATICAL SANS-SERIF BOLD CAPITAL O → DIGIT ZERO  # →O→
+1D616 ;        0030 ;  ML      # ( 𝘖 → 0 ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL O → DIGIT ZERO        # →O→
+1D64A ;        0030 ;  ML      # ( 𝙊 → 0 ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O → DIGIT ZERO   # →O→
+1D67E ;        0030 ;  ML      # ( 𝙾 → 0 ) MATHEMATICAL MONOSPACE CAPITAL O → DIGIT ZERO        # →O→
+1D6B6 ;        0030 ;  ML      # ( 𝚶 → 0 ) MATHEMATICAL BOLD CAPITAL OMICRON → DIGIT ZERO       # →Ο→
+1D6F0 ;        0030 ;  ML      # ( 𝛰 → 0 ) MATHEMATICAL ITALIC CAPITAL OMICRON → DIGIT ZERO     # →Ο→
+1D72A ;        0030 ;  ML      # ( 𝜪 → 0 ) MATHEMATICAL BOLD ITALIC CAPITAL OMICRON → DIGIT ZERO        # →Ο→
+1D764 ;        0030 ;  ML      # ( 𝝤 → 0 ) MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON → DIGIT ZERO    # →Ο→
+1D79E ;        0030 ;  ML      # ( 𝞞 → 0 ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON → DIGIT ZERO     # →Ο→
+2D54 ; 0030 ;  ML      # ( ⵔ → 0 ) TIFINAGH LETTER YAR → DIGIT ZERO      # →Ο→
+0B20 ; 0030 ;  ML      # ( ଠ → 0 ) ORIYA LETTER TTHA → DIGIT ZERO        # →୦→
+0D20 ; 0030 ;  ML      # ( ഠ → 0 ) MALAYALAM LETTER TTHA → DIGIT ZERO    # 
+A4F3 ; 0030 ;  ML      # ( ꓳ → 0 ) LISU LETTER O → DIGIT ZERO    # →O→
+
+1B5C ; 1B50 ;  ML      #* ( ᭜ → ᭐ ) BALINESE WINDU → BALINESE DIGIT ZERO       # 
+
+A9C6 ; A9D0 ;  ML      #* ( ꧆ → ꧐ ) JAVANESE PADA WINDU → JAVANESE DIGIT ZERO  # 
+
+1F101 ;        0030 002C ;     ML      #* ( 🄁 → 0, ) DIGIT ZERO COMMA → DIGIT ZERO, COMMA       # 
+
+1F100 ;        0030 002E ;     ML      #* ( 🄀 → 0. ) DIGIT ZERO FULL STOP → DIGIT ZERO, FULL STOP       # 
+
+3358 ; 0030 70B9 ;     ML      #* ( ㍘ → 0点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO → DIGIT ZERO, CJK UNIFIED IDEOGRAPH-70B9       # 
+
+2460 ; 2780 ;  ML      #* ( ① → ➀ ) CIRCLED DIGIT ONE → DINGBAT CIRCLED SANS-SERIF DIGIT ONE   # 
+
+06F1 ; 0661 ;  ML      # ( ۱ → ‎١‎ ) EXTENDED ARABIC-INDIC DIGIT ONE → ARABIC-INDIC DIGIT ONE        # 
+
+0CE7 ; 0C67 ;  ML      # ( ೧ → ౧ ) KANNADA DIGIT ONE → TELUGU DIGIT ONE        # 
+
+1065 ; 1041 ;  ML      # ( ၥ → ၁ ) MYANMAR LETTER WESTERN PWO KAREN THA → MYANMAR DIGIT ONE    # 
+
+2469 ; 2789 ;  ML      #* ( ⑩ → ➉ ) CIRCLED NUMBER TEN → DINGBAT CIRCLED SANS-SERIF NUMBER TEN # 
+
+2491 ; 0031 0030 002E ;        ML      #* ( ⒑ → 10. ) NUMBER TEN FULL STOP → DIGIT ONE, DIGIT ZERO, FULL STOP    # 
+
+33E9 ; 0031 0030 65E5 ;        ML      #* ( ㏩ → 10日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN → DIGIT ONE, DIGIT ZERO, CJK UNIFIED IDEOGRAPH-65E5     # 
+
+32C9 ; 0031 0030 6708 ;        ML      #* ( ㋉ → 10月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER → DIGIT ONE, DIGIT ZERO, CJK UNIFIED IDEOGRAPH-6708     # 
+
+3362 ; 0031 0030 70B9 ;        ML      #* ( ㍢ → 10点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN → DIGIT ONE, DIGIT ZERO, CJK UNIFIED IDEOGRAPH-70B9    # 
+
+1D7D0 ;        0032 ;  ML      # ( 𝟐 → 2 ) MATHEMATICAL BOLD DIGIT TWO → DIGIT TWO      # 
+1D7DA ;        0032 ;  ML      # ( 𝟚 → 2 ) MATHEMATICAL DOUBLE-STRUCK DIGIT TWO → DIGIT TWO     # 
+1D7E4 ;        0032 ;  ML      # ( 𝟤 → 2 ) MATHEMATICAL SANS-SERIF DIGIT TWO → DIGIT TWO        # 
+1D7EE ;        0032 ;  ML      # ( 𝟮 → 2 ) MATHEMATICAL SANS-SERIF BOLD DIGIT TWO → DIGIT TWO   # 
+1D7F8 ;        0032 ;  ML      # ( 𝟸 → 2 ) MATHEMATICAL MONOSPACE DIGIT TWO → DIGIT TWO # 
+14BF ; 0032 ;  ML      # ( ᒿ → 2 ) CANADIAN SYLLABICS SAYISI M → DIGIT TWO       # 
+
+2461 ; 2781 ;  ML      #* ( ② → ➁ ) CIRCLED DIGIT TWO → DINGBAT CIRCLED SANS-SERIF DIGIT TWO   # 
+
+06F2 ; 0662 ;  ML      # ( ۲ → ‎٢‎ ) EXTENDED ARABIC-INDIC DIGIT TWO → ARABIC-INDIC DIGIT TWO        # 
+
+0AE8 ; 0968 ;  ML      # ( ૨ → २ ) GUJARATI DIGIT TWO → DEVANAGARI DIGIT TWO   # 
+
+0CE8 ; 0C68 ;  ML      # ( ೨ → ౨ ) KANNADA DIGIT TWO → TELUGU DIGIT TWO        # 
+
+1F103 ;        0032 002C ;     ML      #* ( 🄃 → 2, ) DIGIT TWO COMMA → DIGIT TWO, COMMA # 
+
+2489 ; 0032 002E ;     ML      #* ( ⒉ → 2. ) DIGIT TWO FULL STOP → DIGIT TWO, FULL STOP  # 
+
+249B ; 0032 0030 002E ;        ML      #* ( ⒛ → 20. ) NUMBER TWENTY FULL STOP → DIGIT TWO, DIGIT ZERO, FULL STOP # 
+
+33F3 ; 0032 0030 65E5 ;        ML      #* ( ㏳ → 20日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY → DIGIT TWO, DIGIT ZERO, CJK UNIFIED IDEOGRAPH-65E5  # 
+
+336C ; 0032 0030 70B9 ;        ML      #* ( ㍬ → 20点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY → DIGIT TWO, DIGIT ZERO, CJK UNIFIED IDEOGRAPH-70B9 # 
+
+33F5 ; 0032 0032 65E5 ;        ML      #* ( ㏵ → 22日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO → DIGIT TWO, DIGIT TWO, CJK UNIFIED IDEOGRAPH-65E5       # 
+
+336E ; 0032 0032 70B9 ;        ML      #* ( ㍮ → 22点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO → DIGIT TWO, DIGIT TWO, CJK UNIFIED IDEOGRAPH-70B9      # 
+
+33F6 ; 0032 0033 65E5 ;        ML      #* ( ㏶ → 23日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE → DIGIT TWO, DIGIT THREE, CJK UNIFIED IDEOGRAPH-65E5   # 
+
+336F ; 0032 0033 70B9 ;        ML      #* ( ㍯ → 23点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE → DIGIT TWO, DIGIT THREE, CJK UNIFIED IDEOGRAPH-70B9  # 
+
+33F7 ; 0032 0034 65E5 ;        ML      #* ( ㏷ → 24日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR → DIGIT TWO, DIGIT FOUR, CJK UNIFIED IDEOGRAPH-65E5     # 
+
+3370 ; 0032 0034 70B9 ;        ML      #* ( ㍰ → 24点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR → DIGIT TWO, DIGIT FOUR, CJK UNIFIED IDEOGRAPH-70B9    # 
+
+33F8 ; 0032 0035 65E5 ;        ML      #* ( ㏸ → 25日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE → DIGIT TWO, DIGIT FIVE, CJK UNIFIED IDEOGRAPH-65E5     # 
+
+33F9 ; 0032 0036 65E5 ;        ML      #* ( ㏹ → 26日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX → DIGIT TWO, DIGIT SIX, CJK UNIFIED IDEOGRAPH-65E5       # 
+
+33FA ; 0032 0037 65E5 ;        ML      #* ( ㏺ → 27日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN → DIGIT TWO, DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-65E5   # 
+
+33FB ; 0032 0038 65E5 ;        ML      #* ( ㏻ → 28日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT → DIGIT TWO, DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-65E5   # 
+
+33FC ; 0032 0039 65E5 ;        ML      #* ( ㏼ → 29日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE → DIGIT TWO, DIGIT NINE, CJK UNIFIED IDEOGRAPH-65E5     # 
+
+33F4 ; 0032 006C 65E5 ;        ML      #* ( ㏴ → 2l日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE → DIGIT TWO, LATIN SMALL LETTER L, CJK UNIFIED IDEOGRAPH-65E5    # →21日→
+
+336D ; 0032 006C 70B9 ;        ML      #* ( ㍭ → 2l点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE → DIGIT TWO, LATIN SMALL LETTER L, CJK UNIFIED IDEOGRAPH-70B9   # →21点→
+
+33E1 ; 0032 65E5 ;     ML      #* ( ㏡ → 2日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO → DIGIT TWO, CJK UNIFIED IDEOGRAPH-65E5  # 
+
+32C1 ; 0032 6708 ;     ML      #* ( ㋁ → 2月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY → DIGIT TWO, CJK UNIFIED IDEOGRAPH-6708 # 
+
+335A ; 0032 70B9 ;     ML      #* ( ㍚ → 2点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO → DIGIT TWO, CJK UNIFIED IDEOGRAPH-70B9 # 
+
+1D7D1 ;        0033 ;  ML      # ( 𝟑 → 3 ) MATHEMATICAL BOLD DIGIT THREE → DIGIT THREE  # 
+1D7DB ;        0033 ;  ML      # ( 𝟛 → 3 ) MATHEMATICAL DOUBLE-STRUCK DIGIT THREE → DIGIT THREE # 
+1D7E5 ;        0033 ;  ML      # ( 𝟥 → 3 ) MATHEMATICAL SANS-SERIF DIGIT THREE → DIGIT THREE    # 
+1D7EF ;        0033 ;  ML      # ( 𝟯 → 3 ) MATHEMATICAL SANS-SERIF BOLD DIGIT THREE → DIGIT THREE       # 
+1D7F9 ;        0033 ;  ML      # ( 𝟹 → 3 ) MATHEMATICAL MONOSPACE DIGIT THREE → DIGIT THREE     # 
+
+2462 ; 2782 ;  ML      #* ( ③ → ➂ ) CIRCLED DIGIT THREE → DINGBAT CIRCLED SANS-SERIF DIGIT THREE       # 
+
+06F3 ; 0663 ;  ML      # ( ۳ → ‎٣‎ ) EXTENDED ARABIC-INDIC DIGIT THREE → ARABIC-INDIC DIGIT THREE    # 
+
+0AE9 ; 0969 ;  ML      # ( ૩ → ३ ) GUJARATI DIGIT THREE → DEVANAGARI DIGIT THREE       # 
+
+1F104 ;        0033 002C ;     ML      #* ( 🄄 → 3, ) DIGIT THREE COMMA → DIGIT THREE, COMMA     # 
+
+248A ; 0033 002E ;     ML      #* ( ⒊ → 3. ) DIGIT THREE FULL STOP → DIGIT THREE, FULL STOP      # 
+
+33FD ; 0033 0030 65E5 ;        ML      #* ( ㏽ → 30日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY → DIGIT THREE, DIGIT ZERO, CJK UNIFIED IDEOGRAPH-65E5        # 
+
+33FE ; 0033 006C 65E5 ;        ML      #* ( ㏾ → 3l日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE → DIGIT THREE, LATIN SMALL LETTER L, CJK UNIFIED IDEOGRAPH-65E5  # →31日→
+
+33E2 ; 0033 65E5 ;     ML      #* ( ㏢ → 3日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE → DIGIT THREE, CJK UNIFIED IDEOGRAPH-65E5      # 
+
+32C2 ; 0033 6708 ;     ML      #* ( ㋂ → 3月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH → DIGIT THREE, CJK UNIFIED IDEOGRAPH-6708  # 
+
+335B ; 0033 70B9 ;     ML      #* ( ㍛ → 3点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE → DIGIT THREE, CJK UNIFIED IDEOGRAPH-70B9     # 
+
+1D7D2 ;        0034 ;  ML      # ( 𝟒 → 4 ) MATHEMATICAL BOLD DIGIT FOUR → DIGIT FOUR    # 
+1D7DC ;        0034 ;  ML      # ( 𝟜 → 4 ) MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR → DIGIT FOUR   # 
+1D7E6 ;        0034 ;  ML      # ( 𝟦 → 4 ) MATHEMATICAL SANS-SERIF DIGIT FOUR → DIGIT FOUR      # 
+1D7F0 ;        0034 ;  ML      # ( 𝟰 → 4 ) MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR → DIGIT FOUR # 
+1D7FA ;        0034 ;  ML      # ( 𝟺 → 4 ) MATHEMATICAL MONOSPACE DIGIT FOUR → DIGIT FOUR       # 
+13CE ; 0034 ;  ML      # ( Ꮞ → 4 ) CHEROKEE LETTER SE → DIGIT FOUR       # 
+
+2463 ; 2783 ;  ML      #* ( ④ → ➃ ) CIRCLED DIGIT FOUR → DINGBAT CIRCLED SANS-SERIF DIGIT FOUR # 
+
+0AEA ; 096A ;  ML      # ( ૪ → ४ ) GUJARATI DIGIT FOUR → DEVANAGARI DIGIT FOUR # 
+
+1F105 ;        0034 002C ;     ML      #* ( 🄅 → 4, ) DIGIT FOUR COMMA → DIGIT FOUR, COMMA       # 
+
+248B ; 0034 002E ;     ML      #* ( ⒋ → 4. ) DIGIT FOUR FULL STOP → DIGIT FOUR, FULL STOP        # 
+
+1530 ; 0034 00B7 ;     ML      # ( ᔰ → 4· ) CANADIAN SYLLABICS WEST-CREE YWE → DIGIT FOUR, MIDDLE DOT   # →4ᐧ→
+
+33E3 ; 0034 65E5 ;     ML      #* ( ㏣ → 4日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR → DIGIT FOUR, CJK UNIFIED IDEOGRAPH-65E5        # 
+
+32C3 ; 0034 6708 ;     ML      #* ( ㋃ → 4月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL → DIGIT FOUR, CJK UNIFIED IDEOGRAPH-6708   # 
+
+335C ; 0034 70B9 ;     ML      #* ( ㍜ → 4点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR → DIGIT FOUR, CJK UNIFIED IDEOGRAPH-70B9       # 
+
+1D7D3 ;        0035 ;  ML      # ( 𝟓 → 5 ) MATHEMATICAL BOLD DIGIT FIVE → DIGIT FIVE    # 
+1D7DD ;        0035 ;  ML      # ( 𝟝 → 5 ) MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE → DIGIT FIVE   # 
+1D7E7 ;        0035 ;  ML      # ( 𝟧 → 5 ) MATHEMATICAL SANS-SERIF DIGIT FIVE → DIGIT FIVE      # 
+1D7F1 ;        0035 ;  ML      # ( 𝟱 → 5 ) MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE → DIGIT FIVE # 
+1D7FB ;        0035 ;  ML      # ( 𝟻 → 5 ) MATHEMATICAL MONOSPACE DIGIT FIVE → DIGIT FIVE       # 
+
+2464 ; 2784 ;  ML      #* ( ⑤ → ➄ ) CIRCLED DIGIT FIVE → DINGBAT CIRCLED SANS-SERIF DIGIT FIVE # 
+
+1F106 ;        0035 002C ;     ML      #* ( 🄆 → 5, ) DIGIT FIVE COMMA → DIGIT FIVE, COMMA       # 
+
+248C ; 0035 002E ;     ML      #* ( ⒌ → 5. ) DIGIT FIVE FULL STOP → DIGIT FIVE, FULL STOP        # 
+
+33E4 ; 0035 65E5 ;     ML      #* ( ㏤ → 5日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE → DIGIT FIVE, CJK UNIFIED IDEOGRAPH-65E5        # 
+
+32C4 ; 0035 6708 ;     ML      #* ( ㋄ → 5月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY → DIGIT FIVE, CJK UNIFIED IDEOGRAPH-6708     # 
+
+335D ; 0035 70B9 ;     ML      #* ( ㍝ → 5点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE → DIGIT FIVE, CJK UNIFIED IDEOGRAPH-70B9       # 
+
+1D7D4 ;        0036 ;  ML      # ( 𝟔 → 6 ) MATHEMATICAL BOLD DIGIT SIX → DIGIT SIX      # 
+1D7DE ;        0036 ;  ML      # ( 𝟞 → 6 ) MATHEMATICAL DOUBLE-STRUCK DIGIT SIX → DIGIT SIX     # 
+1D7E8 ;        0036 ;  ML      # ( 𝟨 → 6 ) MATHEMATICAL SANS-SERIF DIGIT SIX → DIGIT SIX        # 
+1D7F2 ;        0036 ;  ML      # ( 𝟲 → 6 ) MATHEMATICAL SANS-SERIF BOLD DIGIT SIX → DIGIT SIX   # 
+1D7FC ;        0036 ;  ML      # ( 𝟼 → 6 ) MATHEMATICAL MONOSPACE DIGIT SIX → DIGIT SIX # 
+0431 ; 0036 ;  ML      # ( б → 6 ) CYRILLIC SMALL LETTER BE → DIGIT SIX   # 
+
+2465 ; 2785 ;  ML      #* ( ⑥ → ➅ ) CIRCLED DIGIT SIX → DINGBAT CIRCLED SANS-SERIF DIGIT SIX   # 
+
+1F107 ;        0036 002C ;     ML      #* ( 🄇 → 6, ) DIGIT SIX COMMA → DIGIT SIX, COMMA # 
+
+248D ; 0036 002E ;     ML      #* ( ⒍ → 6. ) DIGIT SIX FULL STOP → DIGIT SIX, FULL STOP  # 
+
+33E5 ; 0036 65E5 ;     ML      #* ( ㏥ → 6日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX → DIGIT SIX, CJK UNIFIED IDEOGRAPH-65E5  # 
+
+32C5 ; 0036 6708 ;     ML      #* ( ㋅ → 6月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE → DIGIT SIX, CJK UNIFIED IDEOGRAPH-6708     # 
+
+335E ; 0036 70B9 ;     ML      #* ( ㍞ → 6点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX → DIGIT SIX, CJK UNIFIED IDEOGRAPH-70B9 # 
+
+1D7D5 ;        0037 ;  ML      # ( 𝟕 → 7 ) MATHEMATICAL BOLD DIGIT SEVEN → DIGIT SEVEN  # 
+1D7DF ;        0037 ;  ML      # ( 𝟟 → 7 ) MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN → DIGIT SEVEN # 
+1D7E9 ;        0037 ;  ML      # ( 𝟩 → 7 ) MATHEMATICAL SANS-SERIF DIGIT SEVEN → DIGIT SEVEN    # 
+1D7F3 ;        0037 ;  ML      # ( 𝟳 → 7 ) MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN → DIGIT SEVEN       # 
+1D7FD ;        0037 ;  ML      # ( 𝟽 → 7 ) MATHEMATICAL MONOSPACE DIGIT SEVEN → DIGIT SEVEN     # 
+
+2466 ; 2786 ;  ML      #* ( ⑦ → ➆ ) CIRCLED DIGIT SEVEN → DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN       # 
+
+06F7 ; 0667 ;  ML      # ( ۷ → ‎٧‎ ) EXTENDED ARABIC-INDIC DIGIT SEVEN → ARABIC-INDIC DIGIT SEVEN    # 
+
+1F108 ;        0037 002C ;     ML      #* ( 🄈 → 7, ) DIGIT SEVEN COMMA → DIGIT SEVEN, COMMA     # 
+
+248E ; 0037 002E ;     ML      #* ( ⒎ → 7. ) DIGIT SEVEN FULL STOP → DIGIT SEVEN, FULL STOP      # 
+
+33E6 ; 0037 65E5 ;     ML      #* ( ㏦ → 7日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN → DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-65E5      # 
+
+32C6 ; 0037 6708 ;     ML      #* ( ㋆ → 7月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY → DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-6708   # 
+
+335F ; 0037 70B9 ;     ML      #* ( ㍟ → 7点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN → DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-70B9     # 
+
+0B03 ; 0038 ;  ML      # ( ଃ → 8 ) ORIYA SIGN VISARGA → DIGIT EIGHT      # 
+09EA ; 0038 ;  ML      # ( ৪ → 8 ) BENGALI DIGIT FOUR → DIGIT EIGHT      # 
+0A6A ; 0038 ;  ML      # ( ੪ → 8 ) GURMUKHI DIGIT FOUR → DIGIT EIGHT     # 
+1D7D6 ;        0038 ;  ML      # ( 𝟖 → 8 ) MATHEMATICAL BOLD DIGIT EIGHT → DIGIT EIGHT  # 
+1D7E0 ;        0038 ;  ML      # ( 𝟠 → 8 ) MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT → DIGIT EIGHT # 
+1D7EA ;        0038 ;  ML      # ( 𝟪 → 8 ) MATHEMATICAL SANS-SERIF DIGIT EIGHT → DIGIT EIGHT    # 
+1D7F4 ;        0038 ;  ML      # ( 𝟴 → 8 ) MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT → DIGIT EIGHT       # 
+1D7FE ;        0038 ;  ML      # ( 𝟾 → 8 ) MATHEMATICAL MONOSPACE DIGIT EIGHT → DIGIT EIGHT     # 
+0223 ; 0038 ;  ML      # ( ȣ → 8 ) LATIN SMALL LETTER OU → DIGIT EIGHT    # 
+
+2467 ; 2787 ;  ML      #* ( ⑧ → ➇ ) CIRCLED DIGIT EIGHT → DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT       # 
+
+06F8 ; 0668 ;  ML      # ( ۸ → ‎٨‎ ) EXTENDED ARABIC-INDIC DIGIT EIGHT → ARABIC-INDIC DIGIT EIGHT    # 
+
+0AEE ; 096E ;  ML      # ( ૮ → ८ ) GUJARATI DIGIT EIGHT → DEVANAGARI DIGIT EIGHT       # 
+
+1F109 ;        0038 002C ;     ML      #* ( 🄉 → 8, ) DIGIT EIGHT COMMA → DIGIT EIGHT, COMMA     # 
+
+248F ; 0038 002E ;     ML      #* ( ⒏ → 8. ) DIGIT EIGHT FULL STOP → DIGIT EIGHT, FULL STOP      # 
+
+33E7 ; 0038 65E5 ;     ML      #* ( ㏧ → 8日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT → DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-65E5      # 
+
+32C7 ; 0038 6708 ;     ML      #* ( ㋇ → 8月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST → DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-6708 # 
+
+3360 ; 0038 70B9 ;     ML      #* ( ㍠ → 8点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT → DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-70B9     # 
+
+0A67 ; 0039 ;  ML      # ( ੧ → 9 ) GURMUKHI DIGIT ONE → DIGIT NINE       # 
+0B68 ; 0039 ;  ML      # ( ୨ → 9 ) ORIYA DIGIT TWO → DIGIT NINE  # 
+09ED ; 0039 ;  ML      # ( ৭ → 9 ) BENGALI DIGIT SEVEN → DIGIT NINE      # 
+1D7D7 ;        0039 ;  ML      # ( 𝟗 → 9 ) MATHEMATICAL BOLD DIGIT NINE → DIGIT NINE    # 
+1D7E1 ;        0039 ;  ML      # ( 𝟡 → 9 ) MATHEMATICAL DOUBLE-STRUCK DIGIT NINE → DIGIT NINE   # 
+1D7EB ;        0039 ;  ML      # ( 𝟫 → 9 ) MATHEMATICAL SANS-SERIF DIGIT NINE → DIGIT NINE      # 
+1D7F5 ;        0039 ;  ML      # ( 𝟵 → 9 ) MATHEMATICAL SANS-SERIF BOLD DIGIT NINE → DIGIT NINE # 
+1D7FF ;        0039 ;  ML      # ( 𝟿 → 9 ) MATHEMATICAL MONOSPACE DIGIT NINE → DIGIT NINE       # 
+
+2468 ; 2788 ;  ML      #* ( ⑨ → ➈ ) CIRCLED DIGIT NINE → DINGBAT CIRCLED SANS-SERIF DIGIT NINE # 
+
+06F9 ; 0669 ;  ML      # ( ۹ → ‎٩‎ ) EXTENDED ARABIC-INDIC DIGIT NINE → ARABIC-INDIC DIGIT NINE      # 
+
+0CEF ; 0C6F ;  ML      # ( ೯ → ౯ ) KANNADA DIGIT NINE → TELUGU DIGIT NINE      # 
+
+1F10A ;        0039 002C ;     ML      #* ( 🄊 → 9, ) DIGIT NINE COMMA → DIGIT NINE, COMMA       # 
+
+2490 ; 0039 002E ;     ML      #* ( ⒐ → 9. ) DIGIT NINE FULL STOP → DIGIT NINE, FULL STOP        # 
+
+33E8 ; 0039 65E5 ;     ML      #* ( ㏨ → 9日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE → DIGIT NINE, CJK UNIFIED IDEOGRAPH-65E5        # 
+
+32C8 ; 0039 6708 ;     ML      #* ( ㋈ → 9月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER → DIGIT NINE, CJK UNIFIED IDEOGRAPH-6708       # 
+
+3361 ; 0039 70B9 ;     ML      #* ( ㍡ → 9点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE → DIGIT NINE, CJK UNIFIED IDEOGRAPH-70B9       # 
+
+237A ; 0061 ;  ML      #* ( ⍺ → a ) APL FUNCTIONAL SYMBOL ALPHA → LATIN SMALL LETTER A   # →α→
+FF41 ; 0061 ;  ML      # ( a → a ) FULLWIDTH LATIN SMALL LETTER A → LATIN SMALL LETTER A # →а→
+1D41A ;        0061 ;  ML      # ( 𝐚 → a ) MATHEMATICAL BOLD SMALL A → LATIN SMALL LETTER A     # 
+1D44E ;        0061 ;  ML      # ( 𝑎 → a ) MATHEMATICAL ITALIC SMALL A → LATIN SMALL LETTER A   # 
+1D482 ;        0061 ;  ML      # ( 𝒂 → a ) MATHEMATICAL BOLD ITALIC SMALL A → LATIN SMALL LETTER A      # 
+1D4B6 ;        0061 ;  ML      # ( 𝒶 → a ) MATHEMATICAL SCRIPT SMALL A → LATIN SMALL LETTER A   # 
+1D4EA ;        0061 ;  ML      # ( 𝓪 → a ) MATHEMATICAL BOLD SCRIPT SMALL A → LATIN SMALL LETTER A      # 
+1D51E ;        0061 ;  ML      # ( 𝔞 → a ) MATHEMATICAL FRAKTUR SMALL A → LATIN SMALL LETTER A  # 
+1D552 ;        0061 ;  ML      # ( 𝕒 → a ) MATHEMATICAL DOUBLE-STRUCK SMALL A → LATIN SMALL LETTER A    # 
+1D586 ;        0061 ;  ML      # ( 𝖆 → a ) MATHEMATICAL BOLD FRAKTUR SMALL A → LATIN SMALL LETTER A     # 
+1D5BA ;        0061 ;  ML      # ( 𝖺 → a ) MATHEMATICAL SANS-SERIF SMALL A → LATIN SMALL LETTER A       # 
+1D5EE ;        0061 ;  ML      # ( 𝗮 → a ) MATHEMATICAL SANS-SERIF BOLD SMALL A → LATIN SMALL LETTER A  # 
+1D622 ;        0061 ;  ML      # ( 𝘢 → a ) MATHEMATICAL SANS-SERIF ITALIC SMALL A → LATIN SMALL LETTER A        # 
+1D656 ;        0061 ;  ML      # ( 𝙖 → a ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A → LATIN SMALL LETTER A   # 
+1D68A ;        0061 ;  ML      # ( 𝚊 → a ) MATHEMATICAL MONOSPACE SMALL A → LATIN SMALL LETTER A        # 
+0251 ; 0061 ;  ML      # ( ɑ → a ) LATIN SMALL LETTER ALPHA → LATIN SMALL LETTER A        # 
+03B1 ; 0061 ;  ML      # ( α → a ) GREEK SMALL LETTER ALPHA → LATIN SMALL LETTER A        # 
+1D6C2 ;        0061 ;  ML      # ( 𝛂 → a ) MATHEMATICAL BOLD SMALL ALPHA → LATIN SMALL LETTER A # →α→
+1D6FC ;        0061 ;  ML      # ( 𝛼 → a ) MATHEMATICAL ITALIC SMALL ALPHA → LATIN SMALL LETTER A       # →α→
+1D736 ;        0061 ;  ML      # ( 𝜶 → a ) MATHEMATICAL BOLD ITALIC SMALL ALPHA → LATIN SMALL LETTER A  # →α→
+1D770 ;        0061 ;  ML      # ( 𝝰 → a ) MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA → LATIN SMALL LETTER A      # →α→
+1D7AA ;        0061 ;  ML      # ( 𝞪 → a ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA → LATIN SMALL LETTER A       # →α→
+0430 ; 0061 ;  ML      # ( а → a ) CYRILLIC SMALL LETTER A → LATIN SMALL LETTER A # 
+
+01CE ; 0103 ;  ML      # ( ǎ → ă ) LATIN SMALL LETTER A WITH CARON → LATIN SMALL LETTER A WITH BREVE     # 
+
+0227 ; 00E5 ;  ML      # ( ȧ → å ) LATIN SMALL LETTER A WITH DOT ABOVE → LATIN SMALL LETTER A WITH RING ABOVE    # 
+
+A733 ; 0061 0061 ;     ML      # ( ꜳ → aa ) LATIN SMALL LETTER AA → LATIN SMALL LETTER A, LATIN SMALL LETTER A   # 
+
+00E6 ; 0061 0065 ;     ML      # ( æ → ae ) LATIN SMALL LETTER AE → LATIN SMALL LETTER A, LATIN SMALL LETTER E    # 
+04D5 ; 0061 0065 ;     ML      # ( ӕ → ae ) CYRILLIC SMALL LIGATURE A IE → LATIN SMALL LETTER A, LATIN SMALL LETTER E     # →ае→
+
+A735 ; 0061 006F ;     ML      # ( ꜵ → ao ) LATIN SMALL LETTER AO → LATIN SMALL LETTER A, LATIN SMALL LETTER O   # 
+
+A737 ; 0061 0075 ;     ML      # ( ꜷ → au ) LATIN SMALL LETTER AU → LATIN SMALL LETTER A, LATIN SMALL LETTER U   # 
+
+A739 ; 0061 0076 ;     ML      # ( ꜹ → av ) LATIN SMALL LETTER AV → LATIN SMALL LETTER A, LATIN SMALL LETTER V   # 
+A73B ; 0061 0076 ;     ML      # ( ꜻ → av ) LATIN SMALL LETTER AV WITH HORIZONTAL BAR → LATIN SMALL LETTER A, LATIN SMALL LETTER V       # 
+
+A73D ; 0061 0079 ;     ML      # ( ꜽ → ay ) LATIN SMALL LETTER AY → LATIN SMALL LETTER A, LATIN SMALL LETTER Y   # 
+
+1D41B ;        0062 ;  ML      # ( 𝐛 → b ) MATHEMATICAL BOLD SMALL B → LATIN SMALL LETTER B     # 
+1D44F ;        0062 ;  ML      # ( 𝑏 → b ) MATHEMATICAL ITALIC SMALL B → LATIN SMALL LETTER B   # 
+1D483 ;        0062 ;  ML      # ( 𝒃 → b ) MATHEMATICAL BOLD ITALIC SMALL B → LATIN SMALL LETTER B      # 
+1D4B7 ;        0062 ;  ML      # ( 𝒷 → b ) MATHEMATICAL SCRIPT SMALL B → LATIN SMALL LETTER B   # 
+1D4EB ;        0062 ;  ML      # ( 𝓫 → b ) MATHEMATICAL BOLD SCRIPT SMALL B → LATIN SMALL LETTER B      # 
+1D51F ;        0062 ;  ML      # ( 𝔟 → b ) MATHEMATICAL FRAKTUR SMALL B → LATIN SMALL LETTER B  # 
+1D553 ;        0062 ;  ML      # ( 𝕓 → b ) MATHEMATICAL DOUBLE-STRUCK SMALL B → LATIN SMALL LETTER B    # 
+1D587 ;        0062 ;  ML      # ( 𝖇 → b ) MATHEMATICAL BOLD FRAKTUR SMALL B → LATIN SMALL LETTER B     # 
+1D5BB ;        0062 ;  ML      # ( 𝖻 → b ) MATHEMATICAL SANS-SERIF SMALL B → LATIN SMALL LETTER B       # 
+1D5EF ;        0062 ;  ML      # ( 𝗯 → b ) MATHEMATICAL SANS-SERIF BOLD SMALL B → LATIN SMALL LETTER B  # 
+1D623 ;        0062 ;  ML      # ( 𝘣 → b ) MATHEMATICAL SANS-SERIF ITALIC SMALL B → LATIN SMALL LETTER B        # 
+1D657 ;        0062 ;  ML      # ( 𝙗 → b ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B → LATIN SMALL LETTER B   # 
+1D68B ;        0062 ;  ML      # ( 𝚋 → b ) MATHEMATICAL MONOSPACE SMALL B → LATIN SMALL LETTER B        # 
+13CF ; 0062 ;  ML      # ( Ꮟ → b ) CHEROKEE LETTER SI → LATIN SMALL LETTER B     # 
+15AF ; 0062 ;  ML      # ( ᖯ → b ) CANADIAN SYLLABICS AIVILIK B → LATIN SMALL LETTER B   # 
+
+0253 ; 0062 0314 ;     ML      # ( ɓ → b̔ ) LATIN SMALL LETTER B WITH HOOK → LATIN SMALL LETTER B, COMBINING REVERSED COMMA ABOVE        # 
+
+0183 ; 0062 0304 ;     ML      # ( ƃ → b̄ ) LATIN SMALL LETTER B WITH TOPBAR → LATIN SMALL LETTER B, COMBINING MACRON    # 
+
+0180 ; 0062 0335 ;     ML      # ( ƀ → b̵ ) LATIN SMALL LETTER B WITH STROKE → LATIN SMALL LETTER B, COMBINING SHORT STROKE OVERLAY      # 
+048D ; 0062 0335 ;     ML      # ( ҍ → b̵ ) CYRILLIC SMALL LETTER SEMISOFT SIGN → LATIN SMALL LETTER B, COMBINING SHORT STROKE OVERLAY   # →ѣ→→Ь̵→
+0463 ; 0062 0335 ;     ML      # ( ѣ → b̵ ) CYRILLIC SMALL LETTER YAT → LATIN SMALL LETTER B, COMBINING SHORT STROKE OVERLAY     # →Ь̵→
+
+0432 ; 0299 ;  ML      # ( в → ʙ ) CYRILLIC SMALL LETTER VE → LATIN LETTER SMALL CAPITAL B       # 
+
+FF43 ; 0063 ;  ML      # ( c → c ) FULLWIDTH LATIN SMALL LETTER C → LATIN SMALL LETTER C # →ϲ→
+217D ; 0063 ;  ML      # ( ⅽ → c ) SMALL ROMAN NUMERAL ONE HUNDRED → LATIN SMALL LETTER C        # 
+1D41C ;        0063 ;  ML      # ( 𝐜 → c ) MATHEMATICAL BOLD SMALL C → LATIN SMALL LETTER C     # 
+1D450 ;        0063 ;  ML      # ( 𝑐 → c ) MATHEMATICAL ITALIC SMALL C → LATIN SMALL LETTER C   # 
+1D484 ;        0063 ;  ML      # ( 𝒄 → c ) MATHEMATICAL BOLD ITALIC SMALL C → LATIN SMALL LETTER C      # 
+1D4B8 ;        0063 ;  ML      # ( 𝒸 → c ) MATHEMATICAL SCRIPT SMALL C → LATIN SMALL LETTER C   # 
+1D4EC ;        0063 ;  ML      # ( 𝓬 → c ) MATHEMATICAL BOLD SCRIPT SMALL C → LATIN SMALL LETTER C      # 
+1D520 ;        0063 ;  ML      # ( 𝔠 → c ) MATHEMATICAL FRAKTUR SMALL C → LATIN SMALL LETTER C  # 
+1D554 ;        0063 ;  ML      # ( 𝕔 → c ) MATHEMATICAL DOUBLE-STRUCK SMALL C → LATIN SMALL LETTER C    # 
+1D588 ;        0063 ;  ML      # ( 𝖈 → c ) MATHEMATICAL BOLD FRAKTUR SMALL C → LATIN SMALL LETTER C     # 
+1D5BC ;        0063 ;  ML      # ( 𝖼 → c ) MATHEMATICAL SANS-SERIF SMALL C → LATIN SMALL LETTER C       # 
+1D5F0 ;        0063 ;  ML      # ( 𝗰 → c ) MATHEMATICAL SANS-SERIF BOLD SMALL C → LATIN SMALL LETTER C  # 
+1D624 ;        0063 ;  ML      # ( 𝘤 → c ) MATHEMATICAL SANS-SERIF ITALIC SMALL C → LATIN SMALL LETTER C        # 
+1D658 ;        0063 ;  ML      # ( 𝙘 → c ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C → LATIN SMALL LETTER C   # 
+1D68C ;        0063 ;  ML      # ( 𝚌 → c ) MATHEMATICAL MONOSPACE SMALL C → LATIN SMALL LETTER C        # 
+1D04 ; 0063 ;  ML      # ( ᴄ → c ) LATIN LETTER SMALL CAPITAL C → LATIN SMALL LETTER C   # 
+03F2 ; 0063 ;  ML      # ( ϲ → c ) GREEK LUNATE SIGMA SYMBOL → LATIN SMALL LETTER C       # 
+2CA5 ; 0063 ;  ML      # ( ⲥ → c ) COPTIC SMALL LETTER SIMA → LATIN SMALL LETTER C       # →ϲ→
+0441 ; 0063 ;  ML      # ( с → c ) CYRILLIC SMALL LETTER ES → LATIN SMALL LETTER C        # 
+
+00A2 ; 0063 0338 ;     ML      #* ( ¢ → c̸ ) CENT SIGN → LATIN SMALL LETTER C, COMBINING LONG SOLIDUS OVERLAY    # 
+
+00E7 ; 0063 0326 ;     ML      # ( ç → c̦ ) LATIN SMALL LETTER C WITH CEDILLA → LATIN SMALL LETTER C, COMBINING COMMA BELOW      # →ҫ→→с̡→
+04AB ; 0063 0326 ;     ML      # ( ҫ → c̦ ) CYRILLIC SMALL LETTER ES WITH DESCENDER → LATIN SMALL LETTER C, COMBINING COMMA BELOW        # →с̡→
+
+217E ; 0064 ;  ML      # ( ⅾ → d ) SMALL ROMAN NUMERAL FIVE HUNDRED → LATIN SMALL LETTER D       # 
+2146 ; 0064 ;  ML      # ( ⅆ → d ) DOUBLE-STRUCK ITALIC SMALL D → LATIN SMALL LETTER D   # 
+1D41D ;        0064 ;  ML      # ( 𝐝 → d ) MATHEMATICAL BOLD SMALL D → LATIN SMALL LETTER D     # 
+1D451 ;        0064 ;  ML      # ( 𝑑 → d ) MATHEMATICAL ITALIC SMALL D → LATIN SMALL LETTER D   # 
+1D485 ;        0064 ;  ML      # ( 𝒅 → d ) MATHEMATICAL BOLD ITALIC SMALL D → LATIN SMALL LETTER D      # 
+1D4B9 ;        0064 ;  ML      # ( 𝒹 → d ) MATHEMATICAL SCRIPT SMALL D → LATIN SMALL LETTER D   # 
+1D4ED ;        0064 ;  ML      # ( 𝓭 → d ) MATHEMATICAL BOLD SCRIPT SMALL D → LATIN SMALL LETTER D      # 
+1D521 ;        0064 ;  ML      # ( 𝔡 → d ) MATHEMATICAL FRAKTUR SMALL D → LATIN SMALL LETTER D  # 
+1D555 ;        0064 ;  ML      # ( 𝕕 → d ) MATHEMATICAL DOUBLE-STRUCK SMALL D → LATIN SMALL LETTER D    # 
+1D589 ;        0064 ;  ML      # ( 𝖉 → d ) MATHEMATICAL BOLD FRAKTUR SMALL D → LATIN SMALL LETTER D     # 
+1D5BD ;        0064 ;  ML      # ( 𝖽 → d ) MATHEMATICAL SANS-SERIF SMALL D → LATIN SMALL LETTER D       # 
+1D5F1 ;        0064 ;  ML      # ( 𝗱 → d ) MATHEMATICAL SANS-SERIF BOLD SMALL D → LATIN SMALL LETTER D  # 
+1D625 ;        0064 ;  ML      # ( 𝘥 → d ) MATHEMATICAL SANS-SERIF ITALIC SMALL D → LATIN SMALL LETTER D        # 
+1D659 ;        0064 ;  ML      # ( 𝙙 → d ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D → LATIN SMALL LETTER D   # 
+1D68D ;        0064 ;  ML      # ( 𝚍 → d ) MATHEMATICAL MONOSPACE SMALL D → LATIN SMALL LETTER D        # 
+0501 ; 0064 ;  ML      # ( ԁ → d ) CYRILLIC SMALL LETTER KOMI DE → LATIN SMALL LETTER D   # 
+146F ; 0064 ;  ML      # ( ᑯ → d ) CANADIAN SYLLABICS KO → LATIN SMALL LETTER D  # 
+A4D2 ; 0064 ;  ML      # ( ꓒ → d ) LISU LETTER PHA → LATIN SMALL LETTER D        # 
+
+0257 ; 0064 0314 ;     ML      # ( ɗ → d̔ ) LATIN SMALL LETTER D WITH HOOK → LATIN SMALL LETTER D, COMBINING REVERSED COMMA ABOVE        # 
+
+0256 ; 0064 0328 ;     ML      # ( ɖ → d̨ ) LATIN SMALL LETTER D WITH TAIL → LATIN SMALL LETTER D, COMBINING OGONEK      # →d̢→
+
+018C ; 0064 0304 ;     ML      # ( ƌ → d̄ ) LATIN SMALL LETTER D WITH TOPBAR → LATIN SMALL LETTER D, COMBINING MACRON    # 
+
+0111 ; 0064 0335 ;     ML      # ( đ → d̵ ) LATIN SMALL LETTER D WITH STROKE → LATIN SMALL LETTER D, COMBINING SHORT STROKE OVERLAY      # 
+
+20AB ; 0064 0335 0331 ;        ML      #* ( ₫ → ḏ̵ ) DONG SIGN → LATIN SMALL LETTER D, COMBINING SHORT STROKE OVERLAY, COMBINING MACRON BELOW # →đ̱→
+
+147B ; 0064 00B7 ;     ML      # ( ᑻ → d· ) CANADIAN SYLLABICS WEST-CREE KWO → LATIN SMALL LETTER D, MIDDLE DOT # →ᑯᐧ→
+
+01F3 ; 0064 007A ;     ML      # ( dz → dz ) LATIN SMALL LETTER DZ → LATIN SMALL LETTER D, LATIN SMALL LETTER Z    # 
+02A3 ; 0064 007A ;     ML      # ( ʣ → dz ) LATIN SMALL LETTER DZ DIGRAPH → LATIN SMALL LETTER D, LATIN SMALL LETTER Z    # 
+
+01C6 ; 0064 017E ;     ML      # ( dž → dž ) LATIN SMALL LETTER DZ WITH CARON → LATIN SMALL LETTER D, LATIN SMALL LETTER Z WITH CARON     # 
+
+02A5 ; 0064 0291 ;     ML      # ( ʥ → dʑ ) LATIN SMALL LETTER DZ DIGRAPH WITH CURL → LATIN SMALL LETTER D, LATIN SMALL LETTER Z WITH CURL       # 
+
+02A4 ; 0064 021D ;     ML      # ( ʤ → dȝ ) LATIN SMALL LETTER DEZH DIGRAPH → LATIN SMALL LETTER D, LATIN SMALL LETTER YOGH      # →dʒ→
+
+1487 ; 0064 144A ;     ML      # ( ᒇ → dᑊ ) CANADIAN SYLLABICS SOUTH-SLAVEY KOH → LATIN SMALL LETTER D, CANADIAN SYLLABICS WEST-CREE P # →ᑯᑊ→
+
+03B4 ; 1E9F ;  ML      # ( δ → ẟ ) GREEK SMALL LETTER DELTA → LATIN SMALL LETTER DELTA  # 
+1D6C5 ;        1E9F ;  ML      # ( 𝛅 → ẟ ) MATHEMATICAL BOLD SMALL DELTA → LATIN SMALL LETTER DELTA   # →δ→
+1D6FF ;        1E9F ;  ML      # ( 𝛿 → ẟ ) MATHEMATICAL ITALIC SMALL DELTA → LATIN SMALL LETTER DELTA # →δ→
+1D739 ;        1E9F ;  ML      # ( 𝜹 → ẟ ) MATHEMATICAL BOLD ITALIC SMALL DELTA → LATIN SMALL LETTER DELTA    # →δ→
+1D773 ;        1E9F ;  ML      # ( 𝝳 → ẟ ) MATHEMATICAL SANS-SERIF BOLD SMALL DELTA → LATIN SMALL LETTER DELTA        # →δ→
+1D7AD ;        1E9F ;  ML      # ( 𝞭 → ẟ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA → LATIN SMALL LETTER DELTA # →δ→
+056E ; 1E9F ;  ML      # ( ծ → ẟ ) ARMENIAN SMALL LETTER CA → LATIN SMALL LETTER DELTA  # →δ→
+1577 ; 1E9F ;  ML      # ( ᕷ → ẟ ) CANADIAN SYLLABICS NUNAVIK HO → LATIN SMALL LETTER DELTA    # →δ→
+
+212E ; 0065 ;  ML      # ( ℮ → e ) ESTIMATED SYMBOL → LATIN SMALL LETTER E       # 
+FF45 ; 0065 ;  ML      # ( e → e ) FULLWIDTH LATIN SMALL LETTER E → LATIN SMALL LETTER E # →е→
+212F ; 0065 ;  ML      # ( ℯ → e ) SCRIPT SMALL E → LATIN SMALL LETTER E # 
+2147 ; 0065 ;  ML      # ( ⅇ → e ) DOUBLE-STRUCK ITALIC SMALL E → LATIN SMALL LETTER E   # 
+1D41E ;        0065 ;  ML      # ( 𝐞 → e ) MATHEMATICAL BOLD SMALL E → LATIN SMALL LETTER E     # 
+1D452 ;        0065 ;  ML      # ( 𝑒 → e ) MATHEMATICAL ITALIC SMALL E → LATIN SMALL LETTER E   # 
+1D486 ;        0065 ;  ML      # ( 𝒆 → e ) MATHEMATICAL BOLD ITALIC SMALL E → LATIN SMALL LETTER E      # 
+1D4EE ;        0065 ;  ML      # ( 𝓮 → e ) MATHEMATICAL BOLD SCRIPT SMALL E → LATIN SMALL LETTER E      # 
+1D522 ;        0065 ;  ML      # ( 𝔢 → e ) MATHEMATICAL FRAKTUR SMALL E → LATIN SMALL LETTER E  # 
+1D556 ;        0065 ;  ML      # ( 𝕖 → e ) MATHEMATICAL DOUBLE-STRUCK SMALL E → LATIN SMALL LETTER E    # 
+1D58A ;        0065 ;  ML      # ( 𝖊 → e ) MATHEMATICAL BOLD FRAKTUR SMALL E → LATIN SMALL LETTER E     # 
+1D5BE ;        0065 ;  ML      # ( 𝖾 → e ) MATHEMATICAL SANS-SERIF SMALL E → LATIN SMALL LETTER E       # 
+1D5F2 ;        0065 ;  ML      # ( 𝗲 → e ) MATHEMATICAL SANS-SERIF BOLD SMALL E → LATIN SMALL LETTER E  # 
+1D626 ;        0065 ;  ML      # ( 𝘦 → e ) MATHEMATICAL SANS-SERIF ITALIC SMALL E → LATIN SMALL LETTER E        # 
+1D65A ;        0065 ;  ML      # ( 𝙚 → e ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E → LATIN SMALL LETTER E   # 
+1D68E ;        0065 ;  ML      # ( 𝚎 → e ) MATHEMATICAL MONOSPACE SMALL E → LATIN SMALL LETTER E        # 
+0435 ; 0065 ;  ML      # ( е → e ) CYRILLIC SMALL LETTER IE → LATIN SMALL LETTER E        # 
+
+011B ; 0115 ;  ML      # ( ě → ĕ ) LATIN SMALL LETTER E WITH CARON → LATIN SMALL LETTER E WITH BREVE     # 
+
+0259 ; 01DD ;  ML      # ( ə → ǝ ) LATIN SMALL LETTER SCHWA → LATIN SMALL LETTER TURNED E        # 
+04D9 ; 01DD ;  ML      # ( ә → ǝ ) CYRILLIC SMALL LETTER SCHWA → LATIN SMALL LETTER TURNED E     # 
+
+025A ; 01DD 02DE ;     ML      # ( ɚ → ǝ˞ ) LATIN SMALL LETTER SCHWA WITH HOOK → LATIN SMALL LETTER TURNED E, MODIFIER LETTER RHOTIC HOOK       # →ə˞→
+
+1D14 ; 01DD 006F ;     ML      # ( ᴔ → ǝo ) LATIN SMALL LETTER TURNED OE → LATIN SMALL LETTER TURNED E, LATIN SMALL LETTER O    # →əo→
+
+22F4 ; 025B ;  ML      #* ( ⋴ → ɛ ) SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE → LATIN SMALL LETTER OPEN E  # 
+03B5 ; 025B ;  ML      # ( ε → ɛ ) GREEK SMALL LETTER EPSILON → LATIN SMALL LETTER OPEN E        # 
+1D6C6 ;        025B ;  ML      # ( 𝛆 → ɛ ) MATHEMATICAL BOLD SMALL EPSILON → LATIN SMALL LETTER OPEN E # →ε→
+1D6DC ;        025B ;  ML      # ( 𝛜 → ɛ ) MATHEMATICAL BOLD EPSILON SYMBOL → LATIN SMALL LETTER OPEN E        # →ε→
+1D700 ;        025B ;  ML      # ( 𝜀 → ɛ ) MATHEMATICAL ITALIC SMALL EPSILON → LATIN SMALL LETTER OPEN E       # →ε→
+1D716 ;        025B ;  ML      # ( 𝜖 → ɛ ) MATHEMATICAL ITALIC EPSILON SYMBOL → LATIN SMALL LETTER OPEN E      # →ε→
+1D73A ;        025B ;  ML      # ( 𝜺 → ɛ ) MATHEMATICAL BOLD ITALIC SMALL EPSILON → LATIN SMALL LETTER OPEN E  # →ε→
+1D750 ;        025B ;  ML      # ( 𝝐 → ɛ ) MATHEMATICAL BOLD ITALIC EPSILON SYMBOL → LATIN SMALL LETTER OPEN E # →ε→
+1D774 ;        025B ;  ML      # ( 𝝴 → ɛ ) MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON → LATIN SMALL LETTER OPEN E      # →ε→
+1D78A ;        025B ;  ML      # ( 𝞊 → ɛ ) MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL → LATIN SMALL LETTER OPEN E     # →ε→
+1D7AE ;        025B ;  ML      # ( 𝞮 → ɛ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON → LATIN SMALL LETTER OPEN E       # →ε→
+1D7C4 ;        025B ;  ML      # ( 𝟄 → ɛ ) MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL → LATIN SMALL LETTER OPEN E      # →ε→
+2C89 ; 025B ;  ML      # ( ⲉ → ɛ ) COPTIC SMALL LETTER EIE → LATIN SMALL LETTER OPEN E  # →є→
+0454 ; 025B ;  ML      # ( є → ɛ ) CYRILLIC SMALL LETTER UKRAINIAN IE → LATIN SMALL LETTER OPEN E        # 
+0511 ; 025B ;  ML      # ( ԑ → ɛ ) CYRILLIC SMALL LETTER REVERSED ZE → LATIN SMALL LETTER OPEN E # 
+
+20AC ; 2107 ;  ML      #* ( € → ℇ ) EURO SIGN → EULER CONSTANT # →Є→
+
+1D9F ; 1D4B ;  ML      # ( ᶟ → ᵋ ) MODIFIER LETTER SMALL REVERSED OPEN E → MODIFIER LETTER SMALL OPEN E        # 
+
+1D08 ; 025C ;  ML      # ( ᴈ → ɜ ) LATIN SMALL LETTER TURNED OPEN E → LATIN SMALL LETTER REVERSED OPEN E        # 
+0437 ; 025C ;  ML      # ( з → ɜ ) CYRILLIC SMALL LETTER ZE → LATIN SMALL LETTER REVERSED OPEN E # 
+
+0499 ; 025C 0326 ;     ML      # ( ҙ → ɜ̦ ) CYRILLIC SMALL LETTER ZE WITH DESCENDER → LATIN SMALL LETTER REVERSED OPEN E, COMBINING COMMA BELOW # →з̡→
+
+1D41F ;        0066 ;  ML      # ( 𝐟 → f ) MATHEMATICAL BOLD SMALL F → LATIN SMALL LETTER F     # 
+1D453 ;        0066 ;  ML      # ( 𝑓 → f ) MATHEMATICAL ITALIC SMALL F → LATIN SMALL LETTER F   # 
+1D487 ;        0066 ;  ML      # ( 𝒇 → f ) MATHEMATICAL BOLD ITALIC SMALL F → LATIN SMALL LETTER F      # 
+1D4BB ;        0066 ;  ML      # ( 𝒻 → f ) MATHEMATICAL SCRIPT SMALL F → LATIN SMALL LETTER F   # 
+1D4EF ;        0066 ;  ML      # ( 𝓯 → f ) MATHEMATICAL BOLD SCRIPT SMALL F → LATIN SMALL LETTER F      # 
+1D523 ;        0066 ;  ML      # ( 𝔣 → f ) MATHEMATICAL FRAKTUR SMALL F → LATIN SMALL LETTER F  # 
+1D557 ;        0066 ;  ML      # ( 𝕗 → f ) MATHEMATICAL DOUBLE-STRUCK SMALL F → LATIN SMALL LETTER F    # 
+1D58B ;        0066 ;  ML      # ( 𝖋 → f ) MATHEMATICAL BOLD FRAKTUR SMALL F → LATIN SMALL LETTER F     # 
+1D5BF ;        0066 ;  ML      # ( 𝖿 → f ) MATHEMATICAL SANS-SERIF SMALL F → LATIN SMALL LETTER F       # 
+1D5F3 ;        0066 ;  ML      # ( 𝗳 → f ) MATHEMATICAL SANS-SERIF BOLD SMALL F → LATIN SMALL LETTER F  # 
+1D627 ;        0066 ;  ML      # ( 𝘧 → f ) MATHEMATICAL SANS-SERIF ITALIC SMALL F → LATIN SMALL LETTER F        # 
+1D65B ;        0066 ;  ML      # ( 𝙛 → f ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F → LATIN SMALL LETTER F   # 
+1D68F ;        0066 ;  ML      # ( 𝚏 → f ) MATHEMATICAL MONOSPACE SMALL F → LATIN SMALL LETTER F        # 
+1E9D ; 0066 ;  ML      # ( ẝ → f ) LATIN SMALL LETTER LONG S WITH HIGH STROKE → LATIN SMALL LETTER F     # 
+0584 ; 0066 ;  ML      # ( ք → f ) ARMENIAN SMALL LETTER KEH → LATIN SMALL LETTER F       # 
+
+0192 ; 0066 0326 ;     ML      # ( ƒ → f̦ ) LATIN SMALL LETTER F WITH HOOK → LATIN SMALL LETTER F, COMBINING COMMA BELOW # →f̡→
+
+02A9 ; 0066 014B ;     ML      # ( ʩ → fŋ ) LATIN SMALL LETTER FENG DIGRAPH → LATIN SMALL LETTER F, LATIN SMALL LETTER ENG       # 
+
+FF47 ; 0067 ;  ML      # ( g → g ) FULLWIDTH LATIN SMALL LETTER G → LATIN SMALL LETTER G # →ɡ→
+210A ; 0067 ;  ML      # ( ℊ → g ) SCRIPT SMALL G → LATIN SMALL LETTER G # 
+1D420 ;        0067 ;  ML      # ( 𝐠 → g ) MATHEMATICAL BOLD SMALL G → LATIN SMALL LETTER G     # 
+1D454 ;        0067 ;  ML      # ( 𝑔 → g ) MATHEMATICAL ITALIC SMALL G → LATIN SMALL LETTER G   # 
+1D488 ;        0067 ;  ML      # ( 𝒈 → g ) MATHEMATICAL BOLD ITALIC SMALL G → LATIN SMALL LETTER G      # 
+1D4F0 ;        0067 ;  ML      # ( 𝓰 → g ) MATHEMATICAL BOLD SCRIPT SMALL G → LATIN SMALL LETTER G      # 
+1D524 ;        0067 ;  ML      # ( 𝔤 → g ) MATHEMATICAL FRAKTUR SMALL G → LATIN SMALL LETTER G  # 
+1D558 ;        0067 ;  ML      # ( 𝕘 → g ) MATHEMATICAL DOUBLE-STRUCK SMALL G → LATIN SMALL LETTER G    # 
+1D58C ;        0067 ;  ML      # ( 𝖌 → g ) MATHEMATICAL BOLD FRAKTUR SMALL G → LATIN SMALL LETTER G     # 
+1D5C0 ;        0067 ;  ML      # ( 𝗀 → g ) MATHEMATICAL SANS-SERIF SMALL G → LATIN SMALL LETTER G       # 
+1D5F4 ;        0067 ;  ML      # ( 𝗴 → g ) MATHEMATICAL SANS-SERIF BOLD SMALL G → LATIN SMALL LETTER G  # 
+1D628 ;        0067 ;  ML      # ( 𝘨 → g ) MATHEMATICAL SANS-SERIF ITALIC SMALL G → LATIN SMALL LETTER G        # 
+1D65C ;        0067 ;  ML      # ( 𝙜 → g ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G → LATIN SMALL LETTER G   # 
+1D690 ;        0067 ;  ML      # ( 𝚐 → g ) MATHEMATICAL MONOSPACE SMALL G → LATIN SMALL LETTER G        # 
+0261 ; 0067 ;  ML      # ( ɡ → g ) LATIN SMALL LETTER SCRIPT G → LATIN SMALL LETTER G     # 
+1D83 ; 0067 ;  ML      # ( ᶃ → g ) LATIN SMALL LETTER G WITH PALATAL HOOK → LATIN SMALL LETTER G # 
+018D ; 0067 ;  ML      # ( ƍ → g ) LATIN SMALL LETTER TURNED DELTA → LATIN SMALL LETTER G # 
+0581 ; 0067 ;  ML      # ( ց → g ) ARMENIAN SMALL LETTER CO → LATIN SMALL LETTER G        # 
+
+1DA2 ; 1D4D ;  ML      # ( ᶢ → ᵍ ) MODIFIER LETTER SMALL SCRIPT G → MODIFIER LETTER SMALL G    # 
+
+0260 ; 0067 0314 ;     ML      # ( ɠ → g̔ ) LATIN SMALL LETTER G WITH HOOK → LATIN SMALL LETTER G, COMBINING REVERSED COMMA ABOVE        # 
+
+01E7 ; 011F ;  ML      # ( ǧ → ğ ) LATIN SMALL LETTER G WITH CARON → LATIN SMALL LETTER G WITH BREVE     # 
+
+01F5 ; 0123 ;  ML      # ( ǵ → ģ ) LATIN SMALL LETTER G WITH ACUTE → LATIN SMALL LETTER G WITH CEDILLA   # 
+
+01E5 ; 0067 0335 ;     ML      # ( ǥ → g̵ ) LATIN SMALL LETTER G WITH STROKE → LATIN SMALL LETTER G, COMBINING SHORT STROKE OVERLAY      # 
+
+050D ; 0262 ;  ML      # ( ԍ → ɢ ) CYRILLIC SMALL LETTER KOMI SJE → LATIN LETTER SMALL CAPITAL G # 
+
+FF48 ; 0068 ;  ML      # ( h → h ) FULLWIDTH LATIN SMALL LETTER H → LATIN SMALL LETTER H # →һ→
+210E ; 0068 ;  ML      # ( ℎ → h ) PLANCK CONSTANT → LATIN SMALL LETTER H        # 
+1D421 ;        0068 ;  ML      # ( 𝐡 → h ) MATHEMATICAL BOLD SMALL H → LATIN SMALL LETTER H     # 
+1D489 ;        0068 ;  ML      # ( 𝒉 → h ) MATHEMATICAL BOLD ITALIC SMALL H → LATIN SMALL LETTER H      # 
+1D4BD ;        0068 ;  ML      # ( 𝒽 → h ) MATHEMATICAL SCRIPT SMALL H → LATIN SMALL LETTER H   # 
+1D4F1 ;        0068 ;  ML      # ( 𝓱 → h ) MATHEMATICAL BOLD SCRIPT SMALL H → LATIN SMALL LETTER H      # 
+1D525 ;        0068 ;  ML      # ( 𝔥 → h ) MATHEMATICAL FRAKTUR SMALL H → LATIN SMALL LETTER H  # 
+1D559 ;        0068 ;  ML      # ( 𝕙 → h ) MATHEMATICAL DOUBLE-STRUCK SMALL H → LATIN SMALL LETTER H    # 
+1D58D ;        0068 ;  ML      # ( 𝖍 → h ) MATHEMATICAL BOLD FRAKTUR SMALL H → LATIN SMALL LETTER H     # 
+1D5C1 ;        0068 ;  ML      # ( 𝗁 → h ) MATHEMATICAL SANS-SERIF SMALL H → LATIN SMALL LETTER H       # 
+1D5F5 ;        0068 ;  ML      # ( 𝗵 → h ) MATHEMATICAL SANS-SERIF BOLD SMALL H → LATIN SMALL LETTER H  # 
+1D629 ;        0068 ;  ML      # ( 𝘩 → h ) MATHEMATICAL SANS-SERIF ITALIC SMALL H → LATIN SMALL LETTER H        # 
+1D65D ;        0068 ;  ML      # ( 𝙝 → h ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H → LATIN SMALL LETTER H   # 
+1D691 ;        0068 ;  ML      # ( 𝚑 → h ) MATHEMATICAL MONOSPACE SMALL H → LATIN SMALL LETTER H        # 
+04BB ; 0068 ;  ML      # ( һ → h ) CYRILLIC SMALL LETTER SHHA → LATIN SMALL LETTER H      # 
+0570 ; 0068 ;  ML      # ( հ → h ) ARMENIAN SMALL LETTER HO → LATIN SMALL LETTER H        # 
+13C2 ; 0068 ;  ML      # ( Ꮒ → h ) CHEROKEE LETTER NI → LATIN SMALL LETTER H     # 
+
+1D78 ; 1D34 ;  ML      # ( ᵸ → ᴴ ) MODIFIER LETTER CYRILLIC EN → MODIFIER LETTER CAPITAL H     # 
+
+0266 ; 0068 0314 ;     ML      # ( ɦ → h̔ ) LATIN SMALL LETTER H WITH HOOK → LATIN SMALL LETTER H, COMBINING REVERSED COMMA ABOVE        # 
+13F2 ; 0068 0314 ;     ML      # ( Ᏺ → h̔ ) CHEROKEE LETTER YO → LATIN SMALL LETTER H, COMBINING REVERSED COMMA ABOVE   # →ɦ→
+
+0127 ; 0068 0335 ;     ML      # ( ħ → h̵ ) LATIN SMALL LETTER H WITH STROKE → LATIN SMALL LETTER H, COMBINING SHORT STROKE OVERLAY      # 
+210F ; 0068 0335 ;     ML      # ( ℏ → h̵ ) PLANCK CONSTANT OVER TWO PI → LATIN SMALL LETTER H, COMBINING SHORT STROKE OVERLAY  # →ħ→
+045B ; 0068 0335 ;     ML      # ( ћ → h̵ ) CYRILLIC SMALL LETTER TSHE → LATIN SMALL LETTER H, COMBINING SHORT STROKE OVERLAY    # →ħ→
+
+043D ; 029C ;  ML      # ( н → ʜ ) CYRILLIC SMALL LETTER EN → LATIN LETTER SMALL CAPITAL H       # 
+
+04A3 ; 029C 0329 ;     ML      # ( ң → ʜ̩ ) CYRILLIC SMALL LETTER EN WITH DESCENDER → LATIN LETTER SMALL CAPITAL H, COMBINING VERTICAL LINE BELOW       # →н̩→
+
+04CA ; 029C 0326 ;     ML      # ( ӊ → ʜ̦ ) CYRILLIC SMALL LETTER EN WITH TAIL → LATIN LETTER SMALL CAPITAL H, COMBINING COMMA BELOW    # →н̡→
+04C8 ; 029C 0326 ;     ML      # ( ӈ → ʜ̦ ) CYRILLIC SMALL LETTER EN WITH HOOK → LATIN LETTER SMALL CAPITAL H, COMBINING COMMA BELOW    # →н̡→
+
+02DB ; 0069 ;  ML      #* ( ˛ → i ) OGONEK → LATIN SMALL LETTER I # →ͺ→→ι→→ι→
+2373 ; 0069 ;  ML      #* ( ⍳ → i ) APL FUNCTIONAL SYMBOL IOTA → LATIN SMALL LETTER I    # →ι→
+FF49 ; 0069 ;  ML      # ( i → i ) FULLWIDTH LATIN SMALL LETTER I → LATIN SMALL LETTER I # →і→
+2170 ; 0069 ;  ML      # ( ⅰ → i ) SMALL ROMAN NUMERAL ONE → LATIN SMALL LETTER I        # 
+2139 ; 0069 ;  ML      # ( ℹ → i ) INFORMATION SOURCE → LATIN SMALL LETTER I     # 
+2148 ; 0069 ;  ML      # ( ⅈ → i ) DOUBLE-STRUCK ITALIC SMALL I → LATIN SMALL LETTER I   # 
+1D422 ;        0069 ;  ML      # ( 𝐢 → i ) MATHEMATICAL BOLD SMALL I → LATIN SMALL LETTER I     # 
+1D456 ;        0069 ;  ML      # ( 𝑖 → i ) MATHEMATICAL ITALIC SMALL I → LATIN SMALL LETTER I   # 
+1D48A ;        0069 ;  ML      # ( 𝒊 → i ) MATHEMATICAL BOLD ITALIC SMALL I → LATIN SMALL LETTER I      # 
+1D4BE ;        0069 ;  ML      # ( 𝒾 → i ) MATHEMATICAL SCRIPT SMALL I → LATIN SMALL LETTER I   # 
+1D4F2 ;        0069 ;  ML      # ( 𝓲 → i ) MATHEMATICAL BOLD SCRIPT SMALL I → LATIN SMALL LETTER I      # 
+1D526 ;        0069 ;  ML      # ( 𝔦 → i ) MATHEMATICAL FRAKTUR SMALL I → LATIN SMALL LETTER I  # 
+1D55A ;        0069 ;  ML      # ( 𝕚 → i ) MATHEMATICAL DOUBLE-STRUCK SMALL I → LATIN SMALL LETTER I    # 
+1D58E ;        0069 ;  ML      # ( 𝖎 → i ) MATHEMATICAL BOLD FRAKTUR SMALL I → LATIN SMALL LETTER I     # 
+1D5C2 ;        0069 ;  ML      # ( 𝗂 → i ) MATHEMATICAL SANS-SERIF SMALL I → LATIN SMALL LETTER I       # 
+1D5F6 ;        0069 ;  ML      # ( 𝗶 → i ) MATHEMATICAL SANS-SERIF BOLD SMALL I → LATIN SMALL LETTER I  # 
+1D62A ;        0069 ;  ML      # ( 𝘪 → i ) MATHEMATICAL SANS-SERIF ITALIC SMALL I → LATIN SMALL LETTER I        # 
+1D65E ;        0069 ;  ML      # ( 𝙞 → i ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I → LATIN SMALL LETTER I   # 
+1D692 ;        0069 ;  ML      # ( 𝚒 → i ) MATHEMATICAL MONOSPACE SMALL I → LATIN SMALL LETTER I        # 
+0131 ; 0069 ;  ML      # ( ı → i ) LATIN SMALL LETTER DOTLESS I → LATIN SMALL LETTER I    # 
+1D6A4 ;        0069 ;  ML      # ( 𝚤 → i ) MATHEMATICAL ITALIC SMALL DOTLESS I → LATIN SMALL LETTER I   # →ı→
+026A ; 0069 ;  ML      # ( ɪ → i ) LATIN LETTER SMALL CAPITAL I → LATIN SMALL LETTER I    # →ı→
+0269 ; 0069 ;  ML      # ( ɩ → i ) LATIN SMALL LETTER IOTA → LATIN SMALL LETTER I # 
+03B9 ; 0069 ;  ML      # ( ι → i ) GREEK SMALL LETTER IOTA → LATIN SMALL LETTER I # 
+037A ; 0069 ;  ML      #* ( ͺ → i ) GREEK YPOGEGRAMMENI → LATIN SMALL LETTER I    # →ι→→ι→
+1D6CA ;        0069 ;  ML      # ( 𝛊 → i ) MATHEMATICAL BOLD SMALL IOTA → LATIN SMALL LETTER I  # →ι→
+1D704 ;        0069 ;  ML      # ( 𝜄 → i ) MATHEMATICAL ITALIC SMALL IOTA → LATIN SMALL LETTER I        # →ι→
+1D73E ;        0069 ;  ML      # ( 𝜾 → i ) MATHEMATICAL BOLD ITALIC SMALL IOTA → LATIN SMALL LETTER I   # →ι→
+1D778 ;        0069 ;  ML      # ( 𝝸 → i ) MATHEMATICAL SANS-SERIF BOLD SMALL IOTA → LATIN SMALL LETTER I       # →ι→
+1D7B2 ;        0069 ;  ML      # ( 𝞲 → i ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA → LATIN SMALL LETTER I        # →ι→
+0456 ; 0069 ;  ML      # ( і → i ) CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I → LATIN SMALL LETTER I  # 
+04CF ; 0069 ;  ML      # ( ӏ → i ) CYRILLIC SMALL LETTER PALOCHKA → LATIN SMALL LETTER I  # →ı→
+13A5 ; 0069 ;  ML      # ( Ꭵ → i ) CHEROKEE LETTER V → LATIN SMALL LETTER I      # 
+
+01D0 ; 012D ;  ML      # ( ǐ → ĭ ) LATIN SMALL LETTER I WITH CARON → LATIN SMALL LETTER I WITH BREVE     # 
+
+0268 ; 0069 0335 ;     ML      # ( ɨ → i̵ ) LATIN SMALL LETTER I WITH STROKE → LATIN SMALL LETTER I, COMBINING SHORT STROKE OVERLAY      # 
+
+2171 ; 0069 0069 ;     ML      # ( ⅱ → ii ) SMALL ROMAN NUMERAL TWO → LATIN SMALL LETTER I, LATIN SMALL LETTER I # 
+
+2172 ; 0069 0069 0069 ;        ML      # ( ⅲ → iii ) SMALL ROMAN NUMERAL THREE → LATIN SMALL LETTER I, LATIN SMALL LETTER I, LATIN SMALL LETTER I        # 
+
+0133 ; 0069 006A ;     ML      # ( ij → ij ) LATIN SMALL LIGATURE IJ → LATIN SMALL LETTER I, LATIN SMALL LETTER J  # 
+
+2173 ; 0069 0076 ;     ML      # ( ⅳ → iv ) SMALL ROMAN NUMERAL FOUR → LATIN SMALL LETTER I, LATIN SMALL LETTER V        # 
+
+2178 ; 0069 0078 ;     ML      # ( ⅸ → ix ) SMALL ROMAN NUMERAL NINE → LATIN SMALL LETTER I, LATIN SMALL LETTER X        # 
+
+FF4A ; 006A ;  ML      # ( j → j ) FULLWIDTH LATIN SMALL LETTER J → LATIN SMALL LETTER J # →ј→
+2149 ; 006A ;  ML      # ( ⅉ → j ) DOUBLE-STRUCK ITALIC SMALL J → LATIN SMALL LETTER J   # 
+1D423 ;        006A ;  ML      # ( 𝐣 → j ) MATHEMATICAL BOLD SMALL J → LATIN SMALL LETTER J     # 
+1D457 ;        006A ;  ML      # ( 𝑗 → j ) MATHEMATICAL ITALIC SMALL J → LATIN SMALL LETTER J   # 
+1D48B ;        006A ;  ML      # ( 𝒋 → j ) MATHEMATICAL BOLD ITALIC SMALL J → LATIN SMALL LETTER J      # 
+1D4BF ;        006A ;  ML      # ( 𝒿 → j ) MATHEMATICAL SCRIPT SMALL J → LATIN SMALL LETTER J   # 
+1D4F3 ;        006A ;  ML      # ( 𝓳 → j ) MATHEMATICAL BOLD SCRIPT SMALL J → LATIN SMALL LETTER J      # 
+1D527 ;        006A ;  ML      # ( 𝔧 → j ) MATHEMATICAL FRAKTUR SMALL J → LATIN SMALL LETTER J  # 
+1D55B ;        006A ;  ML      # ( 𝕛 → j ) MATHEMATICAL DOUBLE-STRUCK SMALL J → LATIN SMALL LETTER J    # 
+1D58F ;        006A ;  ML      # ( 𝖏 → j ) MATHEMATICAL BOLD FRAKTUR SMALL J → LATIN SMALL LETTER J     # 
+1D5C3 ;        006A ;  ML      # ( 𝗃 → j ) MATHEMATICAL SANS-SERIF SMALL J → LATIN SMALL LETTER J       # 
+1D5F7 ;        006A ;  ML      # ( 𝗷 → j ) MATHEMATICAL SANS-SERIF BOLD SMALL J → LATIN SMALL LETTER J  # 
+1D62B ;        006A ;  ML      # ( 𝘫 → j ) MATHEMATICAL SANS-SERIF ITALIC SMALL J → LATIN SMALL LETTER J        # 
+1D65F ;        006A ;  ML      # ( 𝙟 → j ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J → LATIN SMALL LETTER J   # 
+1D693 ;        006A ;  ML      # ( 𝚓 → j ) MATHEMATICAL MONOSPACE SMALL J → LATIN SMALL LETTER J        # 
+0237 ; 006A ;  ML      # ( ȷ → j ) LATIN SMALL LETTER DOTLESS J → LATIN SMALL LETTER J    # →յ→
+1D6A5 ;        006A ;  ML      # ( 𝚥 → j ) MATHEMATICAL ITALIC SMALL DOTLESS J → LATIN SMALL LETTER J   # →ȷ→→յ→
+03F3 ; 006A ;  ML      # ( ϳ → j ) GREEK LETTER YOT → LATIN SMALL LETTER J        # 
+0458 ; 006A ;  ML      # ( ј → j ) CYRILLIC SMALL LETTER JE → LATIN SMALL LETTER J        # 
+0575 ; 006A ;  ML      # ( յ → j ) ARMENIAN SMALL LETTER YI → LATIN SMALL LETTER J        # 
+
+1D424 ;        006B ;  ML      # ( 𝐤 → k ) MATHEMATICAL BOLD SMALL K → LATIN SMALL LETTER K     # 
+1D458 ;        006B ;  ML      # ( 𝑘 → k ) MATHEMATICAL ITALIC SMALL K → LATIN SMALL LETTER K   # 
+1D48C ;        006B ;  ML      # ( 𝒌 → k ) MATHEMATICAL BOLD ITALIC SMALL K → LATIN SMALL LETTER K      # 
+1D4C0 ;        006B ;  ML      # ( 𝓀 → k ) MATHEMATICAL SCRIPT SMALL K → LATIN SMALL LETTER K   # 
+1D4F4 ;        006B ;  ML      # ( 𝓴 → k ) MATHEMATICAL BOLD SCRIPT SMALL K → LATIN SMALL LETTER K      # 
+1D528 ;        006B ;  ML      # ( 𝔨 → k ) MATHEMATICAL FRAKTUR SMALL K → LATIN SMALL LETTER K  # 
+1D55C ;        006B ;  ML      # ( 𝕜 → k ) MATHEMATICAL DOUBLE-STRUCK SMALL K → LATIN SMALL LETTER K    # 
+1D590 ;        006B ;  ML      # ( 𝖐 → k ) MATHEMATICAL BOLD FRAKTUR SMALL K → LATIN SMALL LETTER K     # 
+1D5C4 ;        006B ;  ML      # ( 𝗄 → k ) MATHEMATICAL SANS-SERIF SMALL K → LATIN SMALL LETTER K       # 
+1D5F8 ;        006B ;  ML      # ( 𝗸 → k ) MATHEMATICAL SANS-SERIF BOLD SMALL K → LATIN SMALL LETTER K  # 
+1D62C ;        006B ;  ML      # ( 𝘬 → k ) MATHEMATICAL SANS-SERIF ITALIC SMALL K → LATIN SMALL LETTER K        # 
+1D660 ;        006B ;  ML      # ( 𝙠 → k ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K → LATIN SMALL LETTER K   # 
+1D694 ;        006B ;  ML      # ( 𝚔 → k ) MATHEMATICAL MONOSPACE SMALL K → LATIN SMALL LETTER K        # 
+1D0B ; 006B ;  ML      # ( ᴋ → k ) LATIN LETTER SMALL CAPITAL K → LATIN SMALL LETTER K   # →к→
+0138 ; 006B ;  ML      # ( ĸ → k ) LATIN SMALL LETTER KRA → LATIN SMALL LETTER K  # →к→
+03BA ; 006B ;  ML      # ( κ → k ) GREEK SMALL LETTER KAPPA → LATIN SMALL LETTER K        # →к→
+1D6CB ;        006B ;  ML      # ( 𝛋 → k ) MATHEMATICAL BOLD SMALL KAPPA → LATIN SMALL LETTER K # →κ→→к→
+1D6DE ;        006B ;  ML      # ( 𝛞 → k ) MATHEMATICAL BOLD KAPPA SYMBOL → LATIN SMALL LETTER K        # →κ→→к→
+1D705 ;        006B ;  ML      # ( 𝜅 → k ) MATHEMATICAL ITALIC SMALL KAPPA → LATIN SMALL LETTER K       # →κ→→к→
+1D718 ;        006B ;  ML      # ( 𝜘 → k ) MATHEMATICAL ITALIC KAPPA SYMBOL → LATIN SMALL LETTER K      # →κ→→к→
+1D73F ;        006B ;  ML      # ( 𝜿 → k ) MATHEMATICAL BOLD ITALIC SMALL KAPPA → LATIN SMALL LETTER K  # →κ→→к→
+1D752 ;        006B ;  ML      # ( 𝝒 → k ) MATHEMATICAL BOLD ITALIC KAPPA SYMBOL → LATIN SMALL LETTER K # →κ→→к→
+1D779 ;        006B ;  ML      # ( 𝝹 → k ) MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA → LATIN SMALL LETTER K      # →κ→→к→
+1D78C ;        006B ;  ML      # ( 𝞌 → k ) MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL → LATIN SMALL LETTER K     # →κ→→к→
+1D7B3 ;        006B ;  ML      # ( 𝞳 → k ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA → LATIN SMALL LETTER K       # →κ→→к→
+1D7C6 ;        006B ;  ML      # ( 𝟆 → k ) MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL → LATIN SMALL LETTER K      # →κ→→к→
+2C95 ; 006B ;  ML      # ( ⲕ → k ) COPTIC SMALL LETTER KAPA → LATIN SMALL LETTER K       # →κ→→к→
+043A ; 006B ;  ML      # ( к → k ) CYRILLIC SMALL LETTER KA → LATIN SMALL LETTER K        # 
+
+0199 ; 006B 0314 ;     ML      # ( ƙ → k̔ ) LATIN SMALL LETTER K WITH HOOK → LATIN SMALL LETTER K, COMBINING REVERSED COMMA ABOVE        # 
+
+049B ; 006B 0329 ;     ML      # ( қ → k̩ ) CYRILLIC SMALL LETTER KA WITH DESCENDER → LATIN SMALL LETTER K, COMBINING VERTICAL LINE BELOW        # →к̩→
+
+049F ; 006B 0335 ;     ML      # ( ҟ → k̵ ) CYRILLIC SMALL LETTER KA WITH STROKE → LATIN SMALL LETTER K, COMBINING SHORT STROKE OVERLAY  # →к̵→
+
+007C ; 006C ;  ML      #* ( | → l ) VERTICAL LINE → LATIN SMALL LETTER L   # 
+2223 ; 006C ;  ML      #* ( ∣ → l ) DIVIDES → LATIN SMALL LETTER L       # →|→
+FFE8 ; 006C ;  ML      #* ( │ → l ) HALFWIDTH FORMS LIGHT VERTICAL → LATIN SMALL LETTER L        # →|→
+0031 ; 006C ;  ML      # ( 1 → l ) DIGIT ONE → LATIN SMALL LETTER L        # 
+1D7CF ;        006C ;  ML      # ( 𝟏 → l ) MATHEMATICAL BOLD DIGIT ONE → LATIN SMALL LETTER L   # →1→
+1D7D9 ;        006C ;  ML      # ( 𝟙 → l ) MATHEMATICAL DOUBLE-STRUCK DIGIT ONE → LATIN SMALL LETTER L  # →1→
+1D7E3 ;        006C ;  ML      # ( 𝟣 → l ) MATHEMATICAL SANS-SERIF DIGIT ONE → LATIN SMALL LETTER L     # →1→
+1D7ED ;        006C ;  ML      # ( 𝟭 → l ) MATHEMATICAL SANS-SERIF BOLD DIGIT ONE → LATIN SMALL LETTER L        # →1→
+1D7F7 ;        006C ;  ML      # ( 𝟷 → l ) MATHEMATICAL MONOSPACE DIGIT ONE → LATIN SMALL LETTER L      # →1→
+2110 ; 006C ;  ML      # ( ℐ → l ) SCRIPT CAPITAL I → LATIN SMALL LETTER L       # →I→
+2111 ; 006C ;  ML      # ( ℑ → l ) BLACK-LETTER CAPITAL I → LATIN SMALL LETTER L # →I→
+1D408 ;        006C ;  ML      # ( 𝐈 → l ) MATHEMATICAL BOLD CAPITAL I → LATIN SMALL LETTER L   # →I→
+1D43C ;        006C ;  ML      # ( 𝐼 → l ) MATHEMATICAL ITALIC CAPITAL I → LATIN SMALL LETTER L # →I→
+1D470 ;        006C ;  ML      # ( 𝑰 → l ) MATHEMATICAL BOLD ITALIC CAPITAL I → LATIN SMALL LETTER L    # →I→
+1D4D8 ;        006C ;  ML      # ( 𝓘 → l ) MATHEMATICAL BOLD SCRIPT CAPITAL I → LATIN SMALL LETTER L    # →I→
+1D540 ;        006C ;  ML      # ( 𝕀 → l ) MATHEMATICAL DOUBLE-STRUCK CAPITAL I → LATIN SMALL LETTER L  # →I→
+1D574 ;        006C ;  ML      # ( 𝕴 → l ) MATHEMATICAL BOLD FRAKTUR CAPITAL I → LATIN SMALL LETTER L   # →I→
+1D5A8 ;        006C ;  ML      # ( 𝖨 → l ) MATHEMATICAL SANS-SERIF CAPITAL I → LATIN SMALL LETTER L     # →I→
+1D5DC ;        006C ;  ML      # ( 𝗜 → l ) MATHEMATICAL SANS-SERIF BOLD CAPITAL I → LATIN SMALL LETTER L        # →I→
+1D610 ;        006C ;  ML      # ( 𝘐 → l ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL I → LATIN SMALL LETTER L      # →I→
+1D644 ;        006C ;  ML      # ( 𝙄 → l ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I → LATIN SMALL LETTER L # →I→
+1D678 ;        006C ;  ML      # ( 𝙸 → l ) MATHEMATICAL MONOSPACE CAPITAL I → LATIN SMALL LETTER L      # →I→
+FF4C ; 006C ;  ML      # ( l → l ) FULLWIDTH LATIN SMALL LETTER L → LATIN SMALL LETTER L # →Ⅰ→→Ӏ→
+217C ; 006C ;  ML      # ( ⅼ → l ) SMALL ROMAN NUMERAL FIFTY → LATIN SMALL LETTER L      # 
+2113 ; 006C ;  ML      # ( ℓ → l ) SCRIPT SMALL L → LATIN SMALL LETTER L # 
+1D425 ;        006C ;  ML      # ( 𝐥 → l ) MATHEMATICAL BOLD SMALL L → LATIN SMALL LETTER L     # 
+1D459 ;        006C ;  ML      # ( 𝑙 → l ) MATHEMATICAL ITALIC SMALL L → LATIN SMALL LETTER L   # 
+1D48D ;        006C ;  ML      # ( 𝒍 → l ) MATHEMATICAL BOLD ITALIC SMALL L → LATIN SMALL LETTER L      # 
+1D4C1 ;        006C ;  ML      # ( 𝓁 → l ) MATHEMATICAL SCRIPT SMALL L → LATIN SMALL LETTER L   # 
+1D4F5 ;        006C ;  ML      # ( 𝓵 → l ) MATHEMATICAL BOLD SCRIPT SMALL L → LATIN SMALL LETTER L      # 
+1D529 ;        006C ;  ML      # ( 𝔩 → l ) MATHEMATICAL FRAKTUR SMALL L → LATIN SMALL LETTER L  # 
+1D55D ;        006C ;  ML      # ( 𝕝 → l ) MATHEMATICAL DOUBLE-STRUCK SMALL L → LATIN SMALL LETTER L    # 
+1D591 ;        006C ;  ML      # ( 𝖑 → l ) MATHEMATICAL BOLD FRAKTUR SMALL L → LATIN SMALL LETTER L     # 
+1D5C5 ;        006C ;  ML      # ( 𝗅 → l ) MATHEMATICAL SANS-SERIF SMALL L → LATIN SMALL LETTER L       # 
+1D5F9 ;        006C ;  ML      # ( 𝗹 → l ) MATHEMATICAL SANS-SERIF BOLD SMALL L → LATIN SMALL LETTER L  # 
+1D62D ;        006C ;  ML      # ( 𝘭 → l ) MATHEMATICAL SANS-SERIF ITALIC SMALL L → LATIN SMALL LETTER L        # 
+1D661 ;        006C ;  ML      # ( 𝙡 → l ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L → LATIN SMALL LETTER L   # 
+1D695 ;        006C ;  ML      # ( 𝚕 → l ) MATHEMATICAL MONOSPACE SMALL L → LATIN SMALL LETTER L        # 
+01C0 ; 006C ;  ML      # ( ǀ → l ) LATIN LETTER DENTAL CLICK → LATIN SMALL LETTER L       # 
+1D6B0 ;        006C ;  ML      # ( 𝚰 → l ) MATHEMATICAL BOLD CAPITAL IOTA → LATIN SMALL LETTER L        # →Ι→
+1D6EA ;        006C ;  ML      # ( 𝛪 → l ) MATHEMATICAL ITALIC CAPITAL IOTA → LATIN SMALL LETTER L      # →Ι→
+1D724 ;        006C ;  ML      # ( 𝜤 → l ) MATHEMATICAL BOLD ITALIC CAPITAL IOTA → LATIN SMALL LETTER L # →Ι→
+1D75E ;        006C ;  ML      # ( 𝝞 → l ) MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA → LATIN SMALL LETTER L     # →Ι→
+1D798 ;        006C ;  ML      # ( 𝞘 → l ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA → LATIN SMALL LETTER L      # →Ι→
+05D5 ; 006C ;  ML      # ( ‎ו‎ → l ) HEBREW LETTER VAV → LATIN SMALL LETTER L # 
+05DF ; 006C ;  ML      # ( ‎ן‎ → l ) HEBREW LETTER FINAL NUN → LATIN SMALL LETTER L   # 
+07CA ; 006C ;  ML      # ( ‎ߊ‎ → l ) NKO LETTER A → LATIN SMALL LETTER L      # →∣→→|→
+2D4F ; 006C ;  ML      # ( ⵏ → l ) TIFINAGH LETTER YAN → LATIN SMALL LETTER L    # →Ӏ→
+A4F2 ; 006C ;  ML      # ( ꓲ → l ) LISU LETTER I → LATIN SMALL LETTER L  # →I→
+
+0142 ; 006C 0338 ;     ML      # ( ł → l̸ ) LATIN SMALL LETTER L WITH STROKE → LATIN SMALL LETTER L, COMBINING LONG SOLIDUS OVERLAY      # →l̷→
+
+026D ; 006C 0328 ;     ML      # ( ɭ → l̨ ) LATIN SMALL LETTER L WITH RETROFLEX HOOK → LATIN SMALL LETTER L, COMBINING OGONEK    # →l̢→
+
+026B ; 006C 0334 ;     ML      # ( ɫ → l̴ ) LATIN SMALL LETTER L WITH MIDDLE TILDE → LATIN SMALL LETTER L, COMBINING TILDE OVERLAY       # 
+
+019A ; 006C 0335 ;     ML      # ( ƚ → l̵ ) LATIN SMALL LETTER L WITH BAR → LATIN SMALL LETTER L, COMBINING SHORT STROKE OVERLAY # 
+
+0140 ; 006C 00B7 ;     ML      # ( ŀ → l· ) LATIN SMALL LETTER L WITH MIDDLE DOT → LATIN SMALL LETTER L, MIDDLE DOT      # 
+14B7 ; 006C 00B7 ;     ML      # ( ᒷ → l· ) CANADIAN SYLLABICS WEST-CREE MWA → LATIN SMALL LETTER L, MIDDLE DOT # →1ᐧ→
+
+1F102 ;        006C 002C ;     ML      #* ( 🄂 → l, ) DIGIT ONE COMMA → LATIN SMALL LETTER L, COMMA      # →1,→
+
+2488 ; 006C 002E ;     ML      #* ( ⒈ → l. ) DIGIT ONE FULL STOP → LATIN SMALL LETTER L, FULL STOP       # →1.→
+
+05F1 ; 006C 0027 ;     ML      # ( ‎ױ‎ → l' ) HEBREW LIGATURE YIDDISH VAV YOD → LATIN SMALL LETTER L, APOSTROPHE      # →‎וי‎→
+
+2493 ; 006C 0032 002E ;        ML      #* ( ⒓ → l2. ) NUMBER TWELVE FULL STOP → LATIN SMALL LETTER L, DIGIT TWO, FULL STOP       # →12.→
+
+33EB ; 006C 0032 65E5 ;        ML      #* ( ㏫ → l2日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE → LATIN SMALL LETTER L, DIGIT TWO, CJK UNIFIED IDEOGRAPH-65E5        # →12日→
+
+32CB ; 006C 0032 6708 ;        ML      #* ( ㋋ → l2月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER → LATIN SMALL LETTER L, DIGIT TWO, CJK UNIFIED IDEOGRAPH-6708  # →12月→
+
+3364 ; 006C 0032 70B9 ;        ML      #* ( ㍤ → l2点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE → LATIN SMALL LETTER L, DIGIT TWO, CJK UNIFIED IDEOGRAPH-70B9       # →12点→
+
+2494 ; 006C 0033 002E ;        ML      #* ( ⒔ → l3. ) NUMBER THIRTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT THREE, FULL STOP   # →13.→
+
+33EC ; 006C 0033 65E5 ;        ML      #* ( ㏬ → l3日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN → LATIN SMALL LETTER L, DIGIT THREE, CJK UNIFIED IDEOGRAPH-65E5    # →13日→
+
+3365 ; 006C 0033 70B9 ;        ML      #* ( ㍥ → l3点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN → LATIN SMALL LETTER L, DIGIT THREE, CJK UNIFIED IDEOGRAPH-70B9   # →13点→
+
+2495 ; 006C 0034 002E ;        ML      #* ( ⒕ → l4. ) NUMBER FOURTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT FOUR, FULL STOP    # →14.→
+
+33ED ; 006C 0034 65E5 ;        ML      #* ( ㏭ → l4日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN → LATIN SMALL LETTER L, DIGIT FOUR, CJK UNIFIED IDEOGRAPH-65E5     # →14日→
+
+3366 ; 006C 0034 70B9 ;        ML      #* ( ㍦ → l4点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN → LATIN SMALL LETTER L, DIGIT FOUR, CJK UNIFIED IDEOGRAPH-70B9    # →14点→
+
+2496 ; 006C 0035 002E ;        ML      #* ( ⒖ → l5. ) NUMBER FIFTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT FIVE, FULL STOP     # →15.→
+
+33EE ; 006C 0035 65E5 ;        ML      #* ( ㏮ → l5日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN → LATIN SMALL LETTER L, DIGIT FIVE, CJK UNIFIED IDEOGRAPH-65E5      # →15日→
+
+3367 ; 006C 0035 70B9 ;        ML      #* ( ㍧ → l5点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN → LATIN SMALL LETTER L, DIGIT FIVE, CJK UNIFIED IDEOGRAPH-70B9     # →15点→
+
+2497 ; 006C 0036 002E ;        ML      #* ( ⒗ → l6. ) NUMBER SIXTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT SIX, FULL STOP      # →16.→
+
+33EF ; 006C 0036 65E5 ;        ML      #* ( ㏯ → l6日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN → LATIN SMALL LETTER L, DIGIT SIX, CJK UNIFIED IDEOGRAPH-65E5       # →16日→
+
+3368 ; 006C 0036 70B9 ;        ML      #* ( ㍨ → l6点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN → LATIN SMALL LETTER L, DIGIT SIX, CJK UNIFIED IDEOGRAPH-70B9      # →16点→
+
+2498 ; 006C 0037 002E ;        ML      #* ( ⒘ → l7. ) NUMBER SEVENTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT SEVEN, FULL STOP  # →17.→
+
+33F0 ; 006C 0037 65E5 ;        ML      #* ( ㏰ → l7日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN → LATIN SMALL LETTER L, DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-65E5   # →17日→
+
+3369 ; 006C 0037 70B9 ;        ML      #* ( ㍩ → l7点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN → LATIN SMALL LETTER L, DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-70B9  # →17点→
+
+2499 ; 006C 0038 002E ;        ML      #* ( ⒙ → l8. ) NUMBER EIGHTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT EIGHT, FULL STOP   # →18.→
+
+33F1 ; 006C 0038 65E5 ;        ML      #* ( ㏱ → l8日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN → LATIN SMALL LETTER L, DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-65E5    # →18日→
+
+336A ; 006C 0038 70B9 ;        ML      #* ( ㍪ → l8点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN → LATIN SMALL LETTER L, DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-70B9   # →18点→
+
+249A ; 006C 0039 002E ;        ML      #* ( ⒚ → l9. ) NUMBER NINETEEN FULL STOP → LATIN SMALL LETTER L, DIGIT NINE, FULL STOP    # →19.→
+
+33F2 ; 006C 0039 65E5 ;        ML      #* ( ㏲ → l9日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN → LATIN SMALL LETTER L, DIGIT NINE, CJK UNIFIED IDEOGRAPH-65E5     # →19日→
+
+336B ; 006C 0039 70B9 ;        ML      #* ( ㍫ → l9点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN → LATIN SMALL LETTER L, DIGIT NINE, CJK UNIFIED IDEOGRAPH-70B9    # →19点→
+
+01C9 ; 006C 006A ;     ML      # ( lj → lj ) LATIN SMALL LETTER LJ → LATIN SMALL LETTER L, LATIN SMALL LETTER J    # 
+
+2016 ; 006C 006C ;     ML      #* ( ‖ → ll ) DOUBLE VERTICAL LINE → LATIN SMALL LETTER L, LATIN SMALL LETTER L   # →∥→→||→
+2225 ; 006C 006C ;     ML      #* ( ∥ → ll ) PARALLEL TO → LATIN SMALL LETTER L, LATIN SMALL LETTER L    # →||→
+01C1 ; 006C 006C ;     ML      # ( ǁ → ll ) LATIN LETTER LATERAL CLICK → LATIN SMALL LETTER L, LATIN SMALL LETTER L       # →‖→→∥→→||→
+05F0 ; 006C 006C ;     ML      # ( ‎װ‎ → ll ) HEBREW LIGATURE YIDDISH DOUBLE VAV → LATIN SMALL LETTER L, LATIN SMALL LETTER L # →‎וו‎→
+
+2492 ; 006C 006C 002E ;        ML      #* ( ⒒ → ll. ) NUMBER ELEVEN FULL STOP → LATIN SMALL LETTER L, LATIN SMALL LETTER L, FULL STOP    # →11.→
+
+33EA ; 006C 006C 65E5 ;        ML      #* ( ㏪ → ll日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN → LATIN SMALL LETTER L, LATIN SMALL LETTER L, CJK UNIFIED IDEOGRAPH-65E5     # →11日→
+
+32CA ; 006C 006C 6708 ;        ML      #* ( ㋊ → ll月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER → LATIN SMALL LETTER L, LATIN SMALL LETTER L, CJK UNIFIED IDEOGRAPH-6708       # →11月→
+
+3363 ; 006C 006C 70B9 ;        ML      #* ( ㍣ → ll点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN → LATIN SMALL LETTER L, LATIN SMALL LETTER L, CJK UNIFIED IDEOGRAPH-70B9    # →11点→
+
+33E0 ; 006C 65E5 ;     ML      #* ( ㏠ → l日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE → LATIN SMALL LETTER L, CJK UNIFIED IDEOGRAPH-65E5       # →1日→
+
+32C0 ; 006C 6708 ;     ML      #* ( ㋀ → l月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY → LATIN SMALL LETTER L, CJK UNIFIED IDEOGRAPH-6708       # →1月→
+
+3359 ; 006C 70B9 ;     ML      #* ( ㍙ → l点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE → LATIN SMALL LETTER L, CJK UNIFIED IDEOGRAPH-70B9      # →1点→
+
+2CD1 ; 029F ;  ML      # ( ⳑ → ʟ ) COPTIC SMALL LETTER L-SHAPED HA → LATIN LETTER SMALL CAPITAL L       # 
+
+043C ; 1D0D ;  ML      # ( м → ᴍ ) CYRILLIC SMALL LETTER EM → LATIN LETTER SMALL CAPITAL M      # 
+
+04CE ; 1D0D 0326 ;     ML      # ( ӎ → ᴍ̦ ) CYRILLIC SMALL LETTER EM WITH TAIL → LATIN LETTER SMALL CAPITAL M, COMBINING COMMA BELOW   # →м̡→
+
+1D427 ;        006E ;  ML      # ( 𝐧 → n ) MATHEMATICAL BOLD SMALL N → LATIN SMALL LETTER N     # 
+1D45B ;        006E ;  ML      # ( 𝑛 → n ) MATHEMATICAL ITALIC SMALL N → LATIN SMALL LETTER N   # 
+1D48F ;        006E ;  ML      # ( 𝒏 → n ) MATHEMATICAL BOLD ITALIC SMALL N → LATIN SMALL LETTER N      # 
+1D4C3 ;        006E ;  ML      # ( 𝓃 → n ) MATHEMATICAL SCRIPT SMALL N → LATIN SMALL LETTER N   # 
+1D4F7 ;        006E ;  ML      # ( 𝓷 → n ) MATHEMATICAL BOLD SCRIPT SMALL N → LATIN SMALL LETTER N      # 
+1D52B ;        006E ;  ML      # ( 𝔫 → n ) MATHEMATICAL FRAKTUR SMALL N → LATIN SMALL LETTER N  # 
+1D55F ;        006E ;  ML      # ( 𝕟 → n ) MATHEMATICAL DOUBLE-STRUCK SMALL N → LATIN SMALL LETTER N    # 
+1D593 ;        006E ;  ML      # ( 𝖓 → n ) MATHEMATICAL BOLD FRAKTUR SMALL N → LATIN SMALL LETTER N     # 
+1D5C7 ;        006E ;  ML      # ( 𝗇 → n ) MATHEMATICAL SANS-SERIF SMALL N → LATIN SMALL LETTER N       # 
+1D5FB ;        006E ;  ML      # ( 𝗻 → n ) MATHEMATICAL SANS-SERIF BOLD SMALL N → LATIN SMALL LETTER N  # 
+1D62F ;        006E ;  ML      # ( 𝘯 → n ) MATHEMATICAL SANS-SERIF ITALIC SMALL N → LATIN SMALL LETTER N        # 
+1D663 ;        006E ;  ML      # ( 𝙣 → n ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N → LATIN SMALL LETTER N   # 
+1D697 ;        006E ;  ML      # ( 𝚗 → n ) MATHEMATICAL MONOSPACE SMALL N → LATIN SMALL LETTER N        # 
+03C0 ; 006E ;  ML      # ( π → n ) GREEK SMALL LETTER PI → LATIN SMALL LETTER N   # 
+213C ; 006E ;  ML      # ( ℼ → n ) DOUBLE-STRUCK SMALL PI → LATIN SMALL LETTER N # →π→
+1D6D1 ;        006E ;  ML      # ( 𝛑 → n ) MATHEMATICAL BOLD SMALL PI → LATIN SMALL LETTER N    # →π→
+1D6E1 ;        006E ;  ML      # ( 𝛡 → n ) MATHEMATICAL BOLD PI SYMBOL → LATIN SMALL LETTER N   # →π→
+1D70B ;        006E ;  ML      # ( 𝜋 → n ) MATHEMATICAL ITALIC SMALL PI → LATIN SMALL LETTER N  # →π→
+1D71B ;        006E ;  ML      # ( 𝜛 → n ) MATHEMATICAL ITALIC PI SYMBOL → LATIN SMALL LETTER N # →π→
+1D745 ;        006E ;  ML      # ( 𝝅 → n ) MATHEMATICAL BOLD ITALIC SMALL PI → LATIN SMALL LETTER N     # →π→
+1D755 ;        006E ;  ML      # ( 𝝕 → n ) MATHEMATICAL BOLD ITALIC PI SYMBOL → LATIN SMALL LETTER N    # →π→
+1D77F ;        006E ;  ML      # ( 𝝿 → n ) MATHEMATICAL SANS-SERIF BOLD SMALL PI → LATIN SMALL LETTER N # →π→
+1D78F ;        006E ;  ML      # ( 𝞏 → n ) MATHEMATICAL SANS-SERIF BOLD PI SYMBOL → LATIN SMALL LETTER N        # →π→
+1D7B9 ;        006E ;  ML      # ( 𝞹 → n ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI → LATIN SMALL LETTER N  # →π→
+1D7C9 ;        006E ;  ML      # ( 𝟉 → n ) MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL → LATIN SMALL LETTER N # →π→
+1D28 ; 006E ;  ML      # ( ᴨ → n ) GREEK LETTER SMALL CAPITAL PI → LATIN SMALL LETTER N  # →п→
+043F ; 006E ;  ML      # ( п → n ) CYRILLIC SMALL LETTER PE → LATIN SMALL LETTER N        # 
+0578 ; 006E ;  ML      # ( ո → n ) ARMENIAN SMALL LETTER VO → LATIN SMALL LETTER N        # 
+057C ; 006E ;  ML      # ( ռ → n ) ARMENIAN SMALL LETTER RA → LATIN SMALL LETTER N        # 
+
+0272 ; 0146 ;  ML      # ( ɲ → ņ ) LATIN SMALL LETTER N WITH LEFT HOOK → LATIN SMALL LETTER N WITH CEDILLA       # 
+
+0273 ; 006E 0328 ;     ML      # ( ɳ → n̨ ) LATIN SMALL LETTER N WITH RETROFLEX HOOK → LATIN SMALL LETTER N, COMBINING OGONEK    # →n̢→
+
+019E ; 006E 0329 ;     ML      # ( ƞ → n̩ ) LATIN SMALL LETTER N WITH LONG RIGHT LEG → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW       # 
+03B7 ; 006E 0329 ;     ML      # ( η → n̩ ) GREEK SMALL LETTER ETA → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW # →ƞ→
+1D6C8 ;        006E 0329 ;     ML      # ( 𝛈 → n̩ ) MATHEMATICAL BOLD SMALL ETA → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW  # →η→→ƞ→
+1D702 ;        006E 0329 ;     ML      # ( 𝜂 → n̩ ) MATHEMATICAL ITALIC SMALL ETA → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW        # →η→→ƞ→
+1D73C ;        006E 0329 ;     ML      # ( 𝜼 → n̩ ) MATHEMATICAL BOLD ITALIC SMALL ETA → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW   # →η→→ƞ→
+1D776 ;        006E 0329 ;     ML      # ( 𝝶 → n̩ ) MATHEMATICAL SANS-SERIF BOLD SMALL ETA → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW       # →η→→ƞ→
+1D7B0 ;        006E 0329 ;     ML      # ( 𝞰 → n̩ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW        # →η→→ƞ→
+
+01CC ; 006E 006A ;     ML      # ( nj → nj ) LATIN SMALL LETTER NJ → LATIN SMALL LETTER N, LATIN SMALL LETTER J    # 
+
+0438 ; 1D0E ;  ML      # ( и → ᴎ ) CYRILLIC SMALL LETTER I → LATIN LETTER SMALL CAPITAL REVERSED N      # 
+
+0C02 ; 006F ;  ML      # ( ం → o ) TELUGU SIGN ANUSVARA → LATIN SMALL LETTER O   # 
+0C82 ; 006F ;  ML      # ( ಂ → o ) KANNADA SIGN ANUSVARA → LATIN SMALL LETTER O  # 
+0D02 ; 006F ;  ML      # ( ം → o ) MALAYALAM SIGN ANUSVARA → LATIN SMALL LETTER O        # 
+0D82 ; 006F ;  ML      # ( ං → o ) SINHALA SIGN ANUSVARAYA → LATIN SMALL LETTER O        # 
+0966 ; 006F ;  ML      # ( ० → o ) DEVANAGARI DIGIT ZERO → LATIN SMALL LETTER O  # 
+0A66 ; 006F ;  ML      # ( ੦ → o ) GURMUKHI DIGIT ZERO → LATIN SMALL LETTER O    # 
+0AE6 ; 006F ;  ML      # ( ૦ → o ) GUJARATI DIGIT ZERO → LATIN SMALL LETTER O    # 
+0BE6 ; 006F ;  ML      # ( ௦ → o ) TAMIL DIGIT ZERO → LATIN SMALL LETTER O       # 
+0C66 ; 006F ;  ML      # ( ౦ → o ) TELUGU DIGIT ZERO → LATIN SMALL LETTER O      # 
+0CE6 ; 006F ;  ML      # ( ೦ → o ) KANNADA DIGIT ZERO → LATIN SMALL LETTER O     # →౦→
+0D66 ; 006F ;  ML      # ( ൦ → o ) MALAYALAM DIGIT ZERO → LATIN SMALL LETTER O   # 
+0E50 ; 006F ;  ML      # ( ๐ → o ) THAI DIGIT ZERO → LATIN SMALL LETTER O        # 
+0ED0 ; 006F ;  ML      # ( ໐ → o ) LAO DIGIT ZERO → LATIN SMALL LETTER O # 
+1040 ; 006F ;  ML      # ( ၀ → o ) MYANMAR DIGIT ZERO → LATIN SMALL LETTER O     # 
+0665 ; 006F ;  ML      # ( ‎٥‎ → o ) ARABIC-INDIC DIGIT FIVE → LATIN SMALL LETTER O   # 
+FF4F ; 006F ;  ML      # ( o → o ) FULLWIDTH LATIN SMALL LETTER O → LATIN SMALL LETTER O # →ο→
+2134 ; 006F ;  ML      # ( ℴ → o ) SCRIPT SMALL O → LATIN SMALL LETTER O # 
+1D428 ;        006F ;  ML      # ( 𝐨 → o ) MATHEMATICAL BOLD SMALL O → LATIN SMALL LETTER O     # 
+1D45C ;        006F ;  ML      # ( 𝑜 → o ) MATHEMATICAL ITALIC SMALL O → LATIN SMALL LETTER O   # 
+1D490 ;        006F ;  ML      # ( 𝒐 → o ) MATHEMATICAL BOLD ITALIC SMALL O → LATIN SMALL LETTER O      # 
+1D4F8 ;        006F ;  ML      # ( 𝓸 → o ) MATHEMATICAL BOLD SCRIPT SMALL O → LATIN SMALL LETTER O      # 
+1D52C ;        006F ;  ML      # ( 𝔬 → o ) MATHEMATICAL FRAKTUR SMALL O → LATIN SMALL LETTER O  # 
+1D560 ;        006F ;  ML      # ( 𝕠 → o ) MATHEMATICAL DOUBLE-STRUCK SMALL O → LATIN SMALL LETTER O    # 
+1D594 ;        006F ;  ML      # ( 𝖔 → o ) MATHEMATICAL BOLD FRAKTUR SMALL O → LATIN SMALL LETTER O     # 
+1D5C8 ;        006F ;  ML      # ( 𝗈 → o ) MATHEMATICAL SANS-SERIF SMALL O → LATIN SMALL LETTER O       # 
+1D5FC ;        006F ;  ML      # ( 𝗼 → o ) MATHEMATICAL SANS-SERIF BOLD SMALL O → LATIN SMALL LETTER O  # 
+1D630 ;        006F ;  ML      # ( 𝘰 → o ) MATHEMATICAL SANS-SERIF ITALIC SMALL O → LATIN SMALL LETTER O        # 
+1D664 ;        006F ;  ML      # ( 𝙤 → o ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O → LATIN SMALL LETTER O   # 
+1D698 ;        006F ;  ML      # ( 𝚘 → o ) MATHEMATICAL MONOSPACE SMALL O → LATIN SMALL LETTER O        # 
+1D0F ; 006F ;  ML      # ( ᴏ → o ) LATIN LETTER SMALL CAPITAL O → LATIN SMALL LETTER O   # 
+1D11 ; 006F ;  ML      # ( ᴑ → o ) LATIN SMALL LETTER SIDEWAYS O → LATIN SMALL LETTER O  # 
+03BF ; 006F ;  ML      # ( ο → o ) GREEK SMALL LETTER OMICRON → LATIN SMALL LETTER O      # 
+1D6D0 ;        006F ;  ML      # ( 𝛐 → o ) MATHEMATICAL BOLD SMALL OMICRON → LATIN SMALL LETTER O       # →ο→
+1D70A ;        006F ;  ML      # ( 𝜊 → o ) MATHEMATICAL ITALIC SMALL OMICRON → LATIN SMALL LETTER O     # →ο→
+1D744 ;        006F ;  ML      # ( 𝝄 → o ) MATHEMATICAL BOLD ITALIC SMALL OMICRON → LATIN SMALL LETTER O        # →ο→
+1D77E ;        006F ;  ML      # ( 𝝾 → o ) MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON → LATIN SMALL LETTER O    # →ο→
+1D7B8 ;        006F ;  ML      # ( 𝞸 → o ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON → LATIN SMALL LETTER O     # →ο→
+03C3 ; 006F ;  ML      # ( σ → o ) GREEK SMALL LETTER SIGMA → LATIN SMALL LETTER O        # 
+1D6D4 ;        006F ;  ML      # ( 𝛔 → o ) MATHEMATICAL BOLD SMALL SIGMA → LATIN SMALL LETTER O # →σ→
+1D70E ;        006F ;  ML      # ( 𝜎 → o ) MATHEMATICAL ITALIC SMALL SIGMA → LATIN SMALL LETTER O       # →σ→
+1D748 ;        006F ;  ML      # ( 𝝈 → o ) MATHEMATICAL BOLD ITALIC SMALL SIGMA → LATIN SMALL LETTER O  # →σ→
+1D782 ;        006F ;  ML      # ( 𝞂 → o ) MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA → LATIN SMALL LETTER O      # →σ→
+1D7BC ;        006F ;  ML      # ( 𝞼 → o ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA → LATIN SMALL LETTER O       # →σ→
+2C9F ; 006F ;  ML      # ( ⲟ → o ) COPTIC SMALL LETTER O → LATIN SMALL LETTER O  # 
+043E ; 006F ;  ML      # ( о → o ) CYRILLIC SMALL LETTER O → LATIN SMALL LETTER O # 
+0585 ; 006F ;  ML      # ( օ → o ) ARMENIAN SMALL LETTER OH → LATIN SMALL LETTER O        # 
+05E1 ; 006F ;  ML      # ( ‎ס‎ → o ) HEBREW LETTER SAMEKH → LATIN SMALL LETTER O      # 
+101D ; 006F ;  ML      # ( ဝ → o ) MYANMAR LETTER WA → LATIN SMALL LETTER O      # 
+
+2070 ; 00BA ;  ML      #* ( ⁰ → º ) SUPERSCRIPT ZERO → MASCULINE ORDINAL INDICATOR      # 
+1D52 ; 00BA ;  ML      # ( ᵒ → º ) MODIFIER LETTER SMALL O → MASCULINE ORDINAL INDICATOR        # →⁰→
+
+01D2 ; 014F ;  ML      # ( ǒ → ŏ ) LATIN SMALL LETTER O WITH CARON → LATIN SMALL LETTER O WITH BREVE     # 
+
+0629 ; 00F6 ;  ML      # ( ‎ة‎ → ö ) ARABIC LETTER TEH MARBUTA → LATIN SMALL LETTER O WITH DIAERESIS # 
+FE94 ; 00F6 ;  ML      # ( ‎ﺔ‎ → ö ) ARABIC LETTER TEH MARBUTA FINAL FORM → LATIN SMALL LETTER O WITH DIAERESIS     # →‎ة‎→
+FE93 ; 00F6 ;  ML      # ( ‎ﺓ‎ → ö ) ARABIC LETTER TEH MARBUTA ISOLATED FORM → LATIN SMALL LETTER O WITH DIAERESIS  # →‎ة‎→
+06C3 ; 00F6 ;  ML      # ( ‎ۃ‎ → ö ) ARABIC LETTER TEH MARBUTA GOAL → LATIN SMALL LETTER O WITH DIAERESIS    # 
+
+00F8 ; 006F 0338 ;     ML      # ( ø → o̸ ) LATIN SMALL LETTER O WITH STROKE → LATIN SMALL LETTER O, COMBINING LONG SOLIDUS OVERLAY      # →o̷→
+
+0275 ; 006F 0335 ;     ML      # ( ɵ → o̵ ) LATIN SMALL LETTER BARRED O → LATIN SMALL LETTER O, COMBINING SHORT STROKE OVERLAY   # 
+04E9 ; 006F 0335 ;     ML      # ( ө → o̵ ) CYRILLIC SMALL LETTER BARRED O → LATIN SMALL LETTER O, COMBINING SHORT STROKE OVERLAY        # →ɵ→
+0473 ; 006F 0335 ;     ML      # ( ѳ → o̵ ) CYRILLIC SMALL LETTER FITA → LATIN SMALL LETTER O, COMBINING SHORT STROKE OVERLAY    # 
+
+01A1 ; 006F 0027 ;     ML      # ( ơ → o' ) LATIN SMALL LETTER O WITH HORN → LATIN SMALL LETTER O, APOSTROPHE     # →oʼ→
+
+0025 ; 00BA 002F 2080 2080 ;   ML      #* ( % → º/₀₀ ) PERCENT SIGN → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO    # →‰→→⁰/₀₀→
+066A ; 00BA 002F 2080 2080 ;   ML      #* ( ٪ → º/₀₀ ) ARABIC PERCENT SIGN → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO    # →%→→‰→→⁰/₀₀→
+2030 ; 00BA 002F 2080 2080 ;   ML      #* ( ‰ → º/₀₀ ) PER MILLE SIGN → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO        # →⁰/₀₀→
+0609 ; 00BA 002F 2080 2080 ;   ML      #* ( ؉ → º/₀₀ ) ARABIC-INDIC PER MILLE SIGN → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO    # →%→→‰→→⁰/₀₀→
+060A ; 00BA 002F 2080 2080 ;   ML      #* ( ؊ → º/₀₀ ) ARABIC-INDIC PER TEN THOUSAND SIGN → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO     # →%→→‰→→⁰/₀₀→
+2052 ; 00BA 002F 2080 2080 ;   ML      #* ( ⁒ → º/₀₀ ) COMMERCIAL MINUS SIGN → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO # →%→→‰→→⁰/₀₀→
+2100 ; 00BA 002F 2080 2080 ;   ML      #* ( ℀ → º/₀₀ ) ACCOUNT OF → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO    # →%→→‰→→⁰/₀₀→
+2101 ; 00BA 002F 2080 2080 ;   ML      #* ( ℁ → º/₀₀ ) ADDRESSED TO THE SUBJECT → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO      # →%→→‰→→⁰/₀₀→
+2105 ; 00BA 002F 2080 2080 ;   ML      #* ( ℅ → º/₀₀ ) CARE OF → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO       # →%→→‰→→⁰/₀₀→
+2106 ; 00BA 002F 2080 2080 ;   ML      #* ( ℆ → º/₀₀ ) CADA UNA → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO      # →%→→‰→→⁰/₀₀→
+
+2031 ; 00BA 002F 2080 2080 2080 ;      ML      #* ( ‱ → º/₀₀₀ ) PER TEN THOUSAND SIGN → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO, SUBSCRIPT ZERO      # →⁰/₀₀₀→
+
+0153 ; 006F 0065 ;     ML      # ( œ → oe ) LATIN SMALL LIGATURE OE → LATIN SMALL LETTER O, LATIN SMALL LETTER E  # 
+
+0276 ; 006F 1D07 ;     ML      # ( ɶ → oᴇ ) LATIN LETTER SMALL CAPITAL OE → LATIN SMALL LETTER O, LATIN LETTER SMALL CAPITAL E  # 
+
+A74F ; 006F 006F ;     ML      # ( ꝏ → oo ) LATIN SMALL LETTER OO → LATIN SMALL LETTER O, LATIN SMALL LETTER O   # 
+
+2184 ; 0254 ;  ML      # ( ↄ → ɔ ) LATIN SMALL LETTER REVERSED C → LATIN SMALL LETTER OPEN O    # 
+1D10 ; 0254 ;  ML      # ( ᴐ → ɔ ) LATIN LETTER SMALL CAPITAL OPEN O → LATIN SMALL LETTER OPEN O        # 
+037B ; 0254 ;  ML      # ( ͻ → ɔ ) GREEK SMALL REVERSED LUNATE SIGMA SYMBOL → LATIN SMALL LETTER OPEN O  # 
+
+2374 ; 0070 ;  ML      #* ( ⍴ → p ) APL FUNCTIONAL SYMBOL RHO → LATIN SMALL LETTER P     # →ρ→
+FF50 ; 0070 ;  ML      # ( p → p ) FULLWIDTH LATIN SMALL LETTER P → LATIN SMALL LETTER P # →р→
+1D429 ;        0070 ;  ML      # ( 𝐩 → p ) MATHEMATICAL BOLD SMALL P → LATIN SMALL LETTER P     # 
+1D45D ;        0070 ;  ML      # ( 𝑝 → p ) MATHEMATICAL ITALIC SMALL P → LATIN SMALL LETTER P   # 
+1D491 ;        0070 ;  ML      # ( 𝒑 → p ) MATHEMATICAL BOLD ITALIC SMALL P → LATIN SMALL LETTER P      # 
+1D4C5 ;        0070 ;  ML      # ( 𝓅 → p ) MATHEMATICAL SCRIPT SMALL P → LATIN SMALL LETTER P   # 
+1D4F9 ;        0070 ;  ML      # ( 𝓹 → p ) MATHEMATICAL BOLD SCRIPT SMALL P → LATIN SMALL LETTER P      # 
+1D52D ;        0070 ;  ML      # ( 𝔭 → p ) MATHEMATICAL FRAKTUR SMALL P → LATIN SMALL LETTER P  # 
+1D561 ;        0070 ;  ML      # ( 𝕡 → p ) MATHEMATICAL DOUBLE-STRUCK SMALL P → LATIN SMALL LETTER P    # 
+1D595 ;        0070 ;  ML      # ( 𝖕 → p ) MATHEMATICAL BOLD FRAKTUR SMALL P → LATIN SMALL LETTER P     # 
+1D5C9 ;        0070 ;  ML      # ( 𝗉 → p ) MATHEMATICAL SANS-SERIF SMALL P → LATIN SMALL LETTER P       # 
+1D5FD ;        0070 ;  ML      # ( 𝗽 → p ) MATHEMATICAL SANS-SERIF BOLD SMALL P → LATIN SMALL LETTER P  # 
+1D631 ;        0070 ;  ML      # ( 𝘱 → p ) MATHEMATICAL SANS-SERIF ITALIC SMALL P → LATIN SMALL LETTER P        # 
+1D665 ;        0070 ;  ML      # ( 𝙥 → p ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P → LATIN SMALL LETTER P   # 
+1D699 ;        0070 ;  ML      # ( 𝚙 → p ) MATHEMATICAL MONOSPACE SMALL P → LATIN SMALL LETTER P        # 
+03C1 ; 0070 ;  ML      # ( ρ → p ) GREEK SMALL LETTER RHO → LATIN SMALL LETTER P  # 
+1D6D2 ;        0070 ;  ML      # ( 𝛒 → p ) MATHEMATICAL BOLD SMALL RHO → LATIN SMALL LETTER P   # →ρ→
+1D6E0 ;        0070 ;  ML      # ( 𝛠 → p ) MATHEMATICAL BOLD RHO SYMBOL → LATIN SMALL LETTER P  # →ρ→
+1D70C ;        0070 ;  ML      # ( 𝜌 → p ) MATHEMATICAL ITALIC SMALL RHO → LATIN SMALL LETTER P # →ρ→
+1D71A ;        0070 ;  ML      # ( 𝜚 → p ) MATHEMATICAL ITALIC RHO SYMBOL → LATIN SMALL LETTER P        # →ρ→
+1D746 ;        0070 ;  ML      # ( 𝝆 → p ) MATHEMATICAL BOLD ITALIC SMALL RHO → LATIN SMALL LETTER P    # →ρ→
+1D754 ;        0070 ;  ML      # ( 𝝔 → p ) MATHEMATICAL BOLD ITALIC RHO SYMBOL → LATIN SMALL LETTER P   # →ρ→
+1D780 ;        0070 ;  ML      # ( 𝞀 → p ) MATHEMATICAL SANS-SERIF BOLD SMALL RHO → LATIN SMALL LETTER P        # →ρ→
+1D78E ;        0070 ;  ML      # ( 𝞎 → p ) MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL → LATIN SMALL LETTER P       # →ρ→
+1D7BA ;        0070 ;  ML      # ( 𝞺 → p ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO → LATIN SMALL LETTER P # →ρ→
+1D7C8 ;        0070 ;  ML      # ( 𝟈 → p ) MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL → LATIN SMALL LETTER P        # →ρ→
+2CA3 ; 0070 ;  ML      # ( ⲣ → p ) COPTIC SMALL LETTER RO → LATIN SMALL LETTER P # →ρ→
+0440 ; 0070 ;  ML      # ( р → p ) CYRILLIC SMALL LETTER ER → LATIN SMALL LETTER P        # 
+
+01A5 ; 0070 0314 ;     ML      # ( ƥ → p̔ ) LATIN SMALL LETTER P WITH HOOK → LATIN SMALL LETTER P, COMBINING REVERSED COMMA ABOVE        # 
+
+1477 ; 0070 00B7 ;     ML      # ( ᑷ → p· ) CANADIAN SYLLABICS WEST-CREE KWI → LATIN SMALL LETTER P, MIDDLE DOT # →pᐧ→
+
+1D29 ; 1D18 ;  ML      # ( ᴩ → ᴘ ) GREEK LETTER SMALL CAPITAL RHO → LATIN LETTER SMALL CAPITAL P       # 
+
+03C6 ; 0278 ;  ML      # ( φ → ɸ ) GREEK SMALL LETTER PHI → LATIN SMALL LETTER PHI       # 
+1D6D7 ;        0278 ;  ML      # ( 𝛗 → ɸ ) MATHEMATICAL BOLD SMALL PHI → LATIN SMALL LETTER PHI        # →φ→
+1D6DF ;        0278 ;  ML      # ( 𝛟 → ɸ ) MATHEMATICAL BOLD PHI SYMBOL → LATIN SMALL LETTER PHI       # →φ→
+1D711 ;        0278 ;  ML      # ( 𝜑 → ɸ ) MATHEMATICAL ITALIC SMALL PHI → LATIN SMALL LETTER PHI      # →φ→
+1D719 ;        0278 ;  ML      # ( 𝜙 → ɸ ) MATHEMATICAL ITALIC PHI SYMBOL → LATIN SMALL LETTER PHI     # →φ→
+1D74B ;        0278 ;  ML      # ( 𝝋 → ɸ ) MATHEMATICAL BOLD ITALIC SMALL PHI → LATIN SMALL LETTER PHI # →φ→
+1D753 ;        0278 ;  ML      # ( 𝝓 → ɸ ) MATHEMATICAL BOLD ITALIC PHI SYMBOL → LATIN SMALL LETTER PHI        # →φ→
+1D785 ;        0278 ;  ML      # ( 𝞅 → ɸ ) MATHEMATICAL SANS-SERIF BOLD SMALL PHI → LATIN SMALL LETTER PHI     # →φ→
+1D78D ;        0278 ;  ML      # ( 𝞍 → ɸ ) MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL → LATIN SMALL LETTER PHI    # →φ→
+1D7BF ;        0278 ;  ML      # ( 𝞿 → ɸ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI → LATIN SMALL LETTER PHI      # →φ→
+1D7C7 ;        0278 ;  ML      # ( 𝟇 → ɸ ) MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL → LATIN SMALL LETTER PHI     # →φ→
+2CAB ; 0278 ;  ML      # ( ⲫ → ɸ ) COPTIC SMALL LETTER FI → LATIN SMALL LETTER PHI      # →ϕ→
+0444 ; 0278 ;  ML      # ( ф → ɸ ) CYRILLIC SMALL LETTER EF → LATIN SMALL LETTER PHI     # 
+
+1D42A ;        0071 ;  ML      # ( 𝐪 → q ) MATHEMATICAL BOLD SMALL Q → LATIN SMALL LETTER Q     # 
+1D45E ;        0071 ;  ML      # ( 𝑞 → q ) MATHEMATICAL ITALIC SMALL Q → LATIN SMALL LETTER Q   # 
+1D492 ;        0071 ;  ML      # ( 𝒒 → q ) MATHEMATICAL BOLD ITALIC SMALL Q → LATIN SMALL LETTER Q      # 
+1D4C6 ;        0071 ;  ML      # ( 𝓆 → q ) MATHEMATICAL SCRIPT SMALL Q → LATIN SMALL LETTER Q   # 
+1D4FA ;        0071 ;  ML      # ( 𝓺 → q ) MATHEMATICAL BOLD SCRIPT SMALL Q → LATIN SMALL LETTER Q      # 
+1D52E ;        0071 ;  ML      # ( 𝔮 → q ) MATHEMATICAL FRAKTUR SMALL Q → LATIN SMALL LETTER Q  # 
+1D562 ;        0071 ;  ML      # ( 𝕢 → q ) MATHEMATICAL DOUBLE-STRUCK SMALL Q → LATIN SMALL LETTER Q    # 
+1D596 ;        0071 ;  ML      # ( 𝖖 → q ) MATHEMATICAL BOLD FRAKTUR SMALL Q → LATIN SMALL LETTER Q     # 
+1D5CA ;        0071 ;  ML      # ( 𝗊 → q ) MATHEMATICAL SANS-SERIF SMALL Q → LATIN SMALL LETTER Q       # 
+1D5FE ;        0071 ;  ML      # ( 𝗾 → q ) MATHEMATICAL SANS-SERIF BOLD SMALL Q → LATIN SMALL LETTER Q  # 
+1D632 ;        0071 ;  ML      # ( 𝘲 → q ) MATHEMATICAL SANS-SERIF ITALIC SMALL Q → LATIN SMALL LETTER Q        # 
+1D666 ;        0071 ;  ML      # ( 𝙦 → q ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q → LATIN SMALL LETTER Q   # 
+1D69A ;        0071 ;  ML      # ( 𝚚 → q ) MATHEMATICAL MONOSPACE SMALL Q → LATIN SMALL LETTER Q        # 
+051B ; 0071 ;  ML      # ( ԛ → q ) CYRILLIC SMALL LETTER QA → LATIN SMALL LETTER Q        # 
+0563 ; 0071 ;  ML      # ( գ → q ) ARMENIAN SMALL LETTER GIM → LATIN SMALL LETTER Q       # 
+0566 ; 0071 ;  ML      # ( զ → q ) ARMENIAN SMALL LETTER ZA → LATIN SMALL LETTER Q        # 
+
+1D410 ;        211A ;  ML      # ( 𝐐 → ℚ ) MATHEMATICAL BOLD CAPITAL Q → DOUBLE-STRUCK CAPITAL Q      # →Q→
+1D444 ;        211A ;  ML      # ( 𝑄 → ℚ ) MATHEMATICAL ITALIC CAPITAL Q → DOUBLE-STRUCK CAPITAL Q    # →Q→
+1D478 ;        211A ;  ML      # ( 𝑸 → ℚ ) MATHEMATICAL BOLD ITALIC CAPITAL Q → DOUBLE-STRUCK CAPITAL Q       # →Q→
+1D4AC ;        211A ;  ML      # ( 𝒬 → ℚ ) MATHEMATICAL SCRIPT CAPITAL Q → DOUBLE-STRUCK CAPITAL Q    # →Q→
+1D4E0 ;        211A ;  ML      # ( 𝓠 → ℚ ) MATHEMATICAL BOLD SCRIPT CAPITAL Q → DOUBLE-STRUCK CAPITAL Q       # →Q→
+1D514 ;        211A ;  ML      # ( 𝔔 → ℚ ) MATHEMATICAL FRAKTUR CAPITAL Q → DOUBLE-STRUCK CAPITAL Q   # →Q→
+1D57C ;        211A ;  ML      # ( 𝕼 → ℚ ) MATHEMATICAL BOLD FRAKTUR CAPITAL Q → DOUBLE-STRUCK CAPITAL Q      # →Q→
+1D5B0 ;        211A ;  ML      # ( 𝖰 → ℚ ) MATHEMATICAL SANS-SERIF CAPITAL Q → DOUBLE-STRUCK CAPITAL Q        # →Q→
+1D5E4 ;        211A ;  ML      # ( 𝗤 → ℚ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL Q → DOUBLE-STRUCK CAPITAL Q   # →Q→
+1D618 ;        211A ;  ML      # ( 𝘘 → ℚ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q → DOUBLE-STRUCK CAPITAL Q # →Q→
+1D64C ;        211A ;  ML      # ( 𝙌 → ℚ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q → DOUBLE-STRUCK CAPITAL Q    # →Q→
+1D680 ;        211A ;  ML      # ( 𝚀 → ℚ ) MATHEMATICAL MONOSPACE CAPITAL Q → DOUBLE-STRUCK CAPITAL Q # →Q→
+
+02A0 ; 0071 0314 ;     ML      # ( ʠ → q̔ ) LATIN SMALL LETTER Q WITH HOOK → LATIN SMALL LETTER Q, COMBINING REVERSED COMMA ABOVE        # 
+
+1D42B ;        0072 ;  ML      # ( 𝐫 → r ) MATHEMATICAL BOLD SMALL R → LATIN SMALL LETTER R     # 
+1D45F ;        0072 ;  ML      # ( 𝑟 → r ) MATHEMATICAL ITALIC SMALL R → LATIN SMALL LETTER R   # 
+1D493 ;        0072 ;  ML      # ( 𝒓 → r ) MATHEMATICAL BOLD ITALIC SMALL R → LATIN SMALL LETTER R      # 
+1D4C7 ;        0072 ;  ML      # ( 𝓇 → r ) MATHEMATICAL SCRIPT SMALL R → LATIN SMALL LETTER R   # 
+1D4FB ;        0072 ;  ML      # ( 𝓻 → r ) MATHEMATICAL BOLD SCRIPT SMALL R → LATIN SMALL LETTER R      # 
+1D52F ;        0072 ;  ML      # ( 𝔯 → r ) MATHEMATICAL FRAKTUR SMALL R → LATIN SMALL LETTER R  # 
+1D563 ;        0072 ;  ML      # ( 𝕣 → r ) MATHEMATICAL DOUBLE-STRUCK SMALL R → LATIN SMALL LETTER R    # 
+1D597 ;        0072 ;  ML      # ( 𝖗 → r ) MATHEMATICAL BOLD FRAKTUR SMALL R → LATIN SMALL LETTER R     # 
+1D5CB ;        0072 ;  ML      # ( 𝗋 → r ) MATHEMATICAL SANS-SERIF SMALL R → LATIN SMALL LETTER R       # 
+1D5FF ;        0072 ;  ML      # ( 𝗿 → r ) MATHEMATICAL SANS-SERIF BOLD SMALL R → LATIN SMALL LETTER R  # 
+1D633 ;        0072 ;  ML      # ( 𝘳 → r ) MATHEMATICAL SANS-SERIF ITALIC SMALL R → LATIN SMALL LETTER R        # 
+1D667 ;        0072 ;  ML      # ( 𝙧 → r ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R → LATIN SMALL LETTER R   # 
+1D69B ;        0072 ;  ML      # ( 𝚛 → r ) MATHEMATICAL MONOSPACE SMALL R → LATIN SMALL LETTER R        # 
+1D26 ; 0072 ;  ML      # ( ᴦ → r ) GREEK LETTER SMALL CAPITAL GAMMA → LATIN SMALL LETTER R       # →г→
+2C85 ; 0072 ;  ML      # ( ⲅ → r ) COPTIC SMALL LETTER GAMMA → LATIN SMALL LETTER R      # →г→
+0433 ; 0072 ;  ML      # ( г → r ) CYRILLIC SMALL LETTER GHE → LATIN SMALL LETTER R       # 
+
+027D ; 0072 0328 ;     ML      # ( ɽ → r̨ ) LATIN SMALL LETTER R WITH TAIL → LATIN SMALL LETTER R, COMBINING OGONEK      # 
+
+027C ; 0072 0329 ;     ML      # ( ɼ → r̩ ) LATIN SMALL LETTER R WITH LONG LEG → LATIN SMALL LETTER R, COMBINING VERTICAL LINE BELOW     # 
+
+0493 ; 0072 0335 ;     ML      # ( ғ → r̵ ) CYRILLIC SMALL LETTER GHE WITH STROKE → LATIN SMALL LETTER R, COMBINING SHORT STROKE OVERLAY # →г̵→
+
+006D ; 0072 006E ;     ML      # ( m → rn ) LATIN SMALL LETTER M → LATIN SMALL LETTER R, LATIN SMALL LETTER N      # 
+217F ; 0072 006E ;     ML      # ( ⅿ → rn ) SMALL ROMAN NUMERAL ONE THOUSAND → LATIN SMALL LETTER R, LATIN SMALL LETTER N        # →m→
+1D426 ;        0072 006E ;     ML      # ( 𝐦 → rn ) MATHEMATICAL BOLD SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N      # →m→
+1D45A ;        0072 006E ;     ML      # ( 𝑚 → rn ) MATHEMATICAL ITALIC SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N    # →m→
+1D48E ;        0072 006E ;     ML      # ( 𝒎 → rn ) MATHEMATICAL BOLD ITALIC SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N       # →m→
+1D4C2 ;        0072 006E ;     ML      # ( 𝓂 → rn ) MATHEMATICAL SCRIPT SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N    # →m→
+1D4F6 ;        0072 006E ;     ML      # ( 𝓶 → rn ) MATHEMATICAL BOLD SCRIPT SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N       # →m→
+1D52A ;        0072 006E ;     ML      # ( 𝔪 → rn ) MATHEMATICAL FRAKTUR SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N   # →m→
+1D55E ;        0072 006E ;     ML      # ( 𝕞 → rn ) MATHEMATICAL DOUBLE-STRUCK SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N     # →m→
+1D592 ;        0072 006E ;     ML      # ( 𝖒 → rn ) MATHEMATICAL BOLD FRAKTUR SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N      # →m→
+1D5C6 ;        0072 006E ;     ML      # ( 𝗆 → rn ) MATHEMATICAL SANS-SERIF SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N        # →m→
+1D5FA ;        0072 006E ;     ML      # ( 𝗺 → rn ) MATHEMATICAL SANS-SERIF BOLD SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N   # →m→
+1D62E ;        0072 006E ;     ML      # ( 𝘮 → rn ) MATHEMATICAL SANS-SERIF ITALIC SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N # →m→
+1D662 ;        0072 006E ;     ML      # ( 𝙢 → rn ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N    # →m→
+1D696 ;        0072 006E ;     ML      # ( 𝚖 → rn ) MATHEMATICAL MONOSPACE SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N # →m→
+028D ; 0072 006E ;     ML      # ( ʍ → rn ) LATIN SMALL LETTER TURNED W → LATIN SMALL LETTER R, LATIN SMALL LETTER N      # →m→
+
+0271 ; 0072 006E 0326 ;        ML      # ( ɱ → rn̦ ) LATIN SMALL LETTER M WITH HOOK → LATIN SMALL LETTER R, LATIN SMALL LETTER N, COMBINING COMMA BELOW  # →m̡→
+
+0491 ; 0072 144A ;     ML      # ( ґ → rᑊ ) CYRILLIC SMALL LETTER GHE WITH UPTURN → LATIN SMALL LETTER R, CANADIAN SYLLABICS WEST-CREE P        # →гˈ→
+
+044F ; 1D19 ;  ML      # ( я → ᴙ ) CYRILLIC SMALL LETTER YA → LATIN LETTER SMALL CAPITAL REVERSED R     # 
+
+A4E4 ; 1D1A ;  ML      # ( ꓤ → ᴚ ) LISU LETTER ZA → LATIN LETTER SMALL CAPITAL TURNED R        # 
+
+2129 ; 027F ;  ML      #* ( ℩ → ɿ ) TURNED GREEK SMALL LETTER IOTA → LATIN SMALL LETTER REVERSED R WITH FISHHOOK        # 
+
+FF53 ; 0073 ;  ML      # ( s → s ) FULLWIDTH LATIN SMALL LETTER S → LATIN SMALL LETTER S # →ѕ→
+1D42C ;        0073 ;  ML      # ( 𝐬 → s ) MATHEMATICAL BOLD SMALL S → LATIN SMALL LETTER S     # 
+1D460 ;        0073 ;  ML      # ( 𝑠 → s ) MATHEMATICAL ITALIC SMALL S → LATIN SMALL LETTER S   # 
+1D494 ;        0073 ;  ML      # ( 𝒔 → s ) MATHEMATICAL BOLD ITALIC SMALL S → LATIN SMALL LETTER S      # 
+1D4C8 ;        0073 ;  ML      # ( 𝓈 → s ) MATHEMATICAL SCRIPT SMALL S → LATIN SMALL LETTER S   # 
+1D4FC ;        0073 ;  ML      # ( 𝓼 → s ) MATHEMATICAL BOLD SCRIPT SMALL S → LATIN SMALL LETTER S      # 
+1D530 ;        0073 ;  ML      # ( 𝔰 → s ) MATHEMATICAL FRAKTUR SMALL S → LATIN SMALL LETTER S  # 
+1D564 ;        0073 ;  ML      # ( 𝕤 → s ) MATHEMATICAL DOUBLE-STRUCK SMALL S → LATIN SMALL LETTER S    # 
+1D598 ;        0073 ;  ML      # ( 𝖘 → s ) MATHEMATICAL BOLD FRAKTUR SMALL S → LATIN SMALL LETTER S     # 
+1D5CC ;        0073 ;  ML      # ( 𝗌 → s ) MATHEMATICAL SANS-SERIF SMALL S → LATIN SMALL LETTER S       # 
+1D600 ;        0073 ;  ML      # ( 𝘀 → s ) MATHEMATICAL SANS-SERIF BOLD SMALL S → LATIN SMALL LETTER S  # 
+1D634 ;        0073 ;  ML      # ( 𝘴 → s ) MATHEMATICAL SANS-SERIF ITALIC SMALL S → LATIN SMALL LETTER S        # 
+1D668 ;        0073 ;  ML      # ( 𝙨 → s ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S → LATIN SMALL LETTER S   # 
+1D69C ;        0073 ;  ML      # ( 𝚜 → s ) MATHEMATICAL MONOSPACE SMALL S → LATIN SMALL LETTER S        # 
+A731 ; 0073 ;  ML      # ( ꜱ → s ) LATIN LETTER SMALL CAPITAL S → LATIN SMALL LETTER S   # 
+01BD ; 0073 ;  ML      # ( ƽ → s ) LATIN SMALL LETTER TONE FIVE → LATIN SMALL LETTER S    # 
+0455 ; 0073 ;  ML      # ( ѕ → s ) CYRILLIC SMALL LETTER DZE → LATIN SMALL LETTER S       # 
+
+0282 ; 0073 0328 ;     ML      # ( ʂ → s̨ ) LATIN SMALL LETTER S WITH HOOK → LATIN SMALL LETTER S, COMBINING OGONEK      # 
+
+222B ; 0283 ;  ML      #* ( ∫ → ʃ ) INTEGRAL → LATIN SMALL LETTER ESH   # 
+
+222C ; 0283 0283 ;     ML      #* ( ∬ → ʃʃ ) DOUBLE INTEGRAL → LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH  # →∫∫→
+
+222D ; 0283 0283 0283 ;        ML      #* ( ∭ → ʃʃʃ ) TRIPLE INTEGRAL → LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH        # →∫∫∫→
+
+2A0C ; 0283 0283 0283 0283 ;   ML      #* ( ⨌ → ʃʃʃʃ ) QUADRUPLE INTEGRAL OPERATOR → LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH  # →∫∫∫∫→
+
+1D42D ;        0074 ;  ML      # ( 𝐭 → t ) MATHEMATICAL BOLD SMALL T → LATIN SMALL LETTER T     # 
+1D461 ;        0074 ;  ML      # ( 𝑡 → t ) MATHEMATICAL ITALIC SMALL T → LATIN SMALL LETTER T   # 
+1D495 ;        0074 ;  ML      # ( 𝒕 → t ) MATHEMATICAL BOLD ITALIC SMALL T → LATIN SMALL LETTER T      # 
+1D4C9 ;        0074 ;  ML      # ( 𝓉 → t ) MATHEMATICAL SCRIPT SMALL T → LATIN SMALL LETTER T   # 
+1D4FD ;        0074 ;  ML      # ( 𝓽 → t ) MATHEMATICAL BOLD SCRIPT SMALL T → LATIN SMALL LETTER T      # 
+1D531 ;        0074 ;  ML      # ( 𝔱 → t ) MATHEMATICAL FRAKTUR SMALL T → LATIN SMALL LETTER T  # 
+1D565 ;        0074 ;  ML      # ( 𝕥 → t ) MATHEMATICAL DOUBLE-STRUCK SMALL T → LATIN SMALL LETTER T    # 
+1D599 ;        0074 ;  ML      # ( 𝖙 → t ) MATHEMATICAL BOLD FRAKTUR SMALL T → LATIN SMALL LETTER T     # 
+1D5CD ;        0074 ;  ML      # ( 𝗍 → t ) MATHEMATICAL SANS-SERIF SMALL T → LATIN SMALL LETTER T       # 
+1D601 ;        0074 ;  ML      # ( 𝘁 → t ) MATHEMATICAL SANS-SERIF BOLD SMALL T → LATIN SMALL LETTER T  # 
+1D635 ;        0074 ;  ML      # ( 𝘵 → t ) MATHEMATICAL SANS-SERIF ITALIC SMALL T → LATIN SMALL LETTER T        # 
+1D669 ;        0074 ;  ML      # ( 𝙩 → t ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T → LATIN SMALL LETTER T   # 
+1D69D ;        0074 ;  ML      # ( 𝚝 → t ) MATHEMATICAL MONOSPACE SMALL T → LATIN SMALL LETTER T        # 
+1D1B ; 0074 ;  ML      # ( ᴛ → t ) LATIN LETTER SMALL CAPITAL T → LATIN SMALL LETTER T   # →т→→τ→
+03C4 ; 0074 ;  ML      # ( τ → t ) GREEK SMALL LETTER TAU → LATIN SMALL LETTER T  # 
+1D6D5 ;        0074 ;  ML      # ( 𝛕 → t ) MATHEMATICAL BOLD SMALL TAU → LATIN SMALL LETTER T   # →τ→
+1D70F ;        0074 ;  ML      # ( 𝜏 → t ) MATHEMATICAL ITALIC SMALL TAU → LATIN SMALL LETTER T # →τ→
+1D749 ;        0074 ;  ML      # ( 𝝉 → t ) MATHEMATICAL BOLD ITALIC SMALL TAU → LATIN SMALL LETTER T    # →τ→
+1D783 ;        0074 ;  ML      # ( 𝞃 → t ) MATHEMATICAL SANS-SERIF BOLD SMALL TAU → LATIN SMALL LETTER T        # →τ→
+1D7BD ;        0074 ;  ML      # ( 𝞽 → t ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU → LATIN SMALL LETTER T # →τ→
+0442 ; 0074 ;  ML      # ( т → t ) CYRILLIC SMALL LETTER TE → LATIN SMALL LETTER T        # →τ→
+
+01AD ; 0074 0314 ;     ML      # ( ƭ → t̔ ) LATIN SMALL LETTER T WITH HOOK → LATIN SMALL LETTER T, COMBINING REVERSED COMMA ABOVE        # 
+
+021B ; 0163 ;  ML      # ( ț → ţ ) LATIN SMALL LETTER T WITH COMMA BELOW → LATIN SMALL LETTER T WITH CEDILLA     # 
+01AB ; 0163 ;  ML      # ( ƫ → ţ ) LATIN SMALL LETTER T WITH PALATAL HOOK → LATIN SMALL LETTER T WITH CEDILLA    # 
+
+04AD ; 0074 0329 ;     ML      # ( ҭ → t̩ ) CYRILLIC SMALL LETTER TE WITH DESCENDER → LATIN SMALL LETTER T, COMBINING VERTICAL LINE BELOW        # →т̩→
+
+0167 ; 0074 0335 ;     ML      # ( ŧ → t̵ ) LATIN SMALL LETTER T WITH STROKE → LATIN SMALL LETTER T, COMBINING SHORT STROKE OVERLAY      # 
+
+02A8 ; 0074 0255 ;     ML      # ( ʨ → tɕ ) LATIN SMALL LETTER TC DIGRAPH WITH CURL → LATIN SMALL LETTER T, LATIN SMALL LETTER C WITH CURL       # 
+
+A777 ; 0074 0066 ;     ML      # ( ꝷ → tf ) LATIN SMALL LETTER TUM → LATIN SMALL LETTER T, LATIN SMALL LETTER F  # 
+
+02A6 ; 0074 0073 ;     ML      # ( ʦ → ts ) LATIN SMALL LETTER TS DIGRAPH → LATIN SMALL LETTER T, LATIN SMALL LETTER S    # 
+
+02A7 ; 0074 0283 ;     ML      # ( ʧ → tʃ ) LATIN SMALL LETTER TESH DIGRAPH → LATIN SMALL LETTER T, LATIN SMALL LETTER ESH       # 
+
+A729 ; 0074 021D ;     ML      # ( ꜩ → tȝ ) LATIN SMALL LETTER TZ → LATIN SMALL LETTER T, LATIN SMALL LETTER YOGH       # 
+
+1D42E ;        0075 ;  ML      # ( 𝐮 → u ) MATHEMATICAL BOLD SMALL U → LATIN SMALL LETTER U     # 
+1D462 ;        0075 ;  ML      # ( 𝑢 → u ) MATHEMATICAL ITALIC SMALL U → LATIN SMALL LETTER U   # 
+1D496 ;        0075 ;  ML      # ( 𝒖 → u ) MATHEMATICAL BOLD ITALIC SMALL U → LATIN SMALL LETTER U      # 
+1D4CA ;        0075 ;  ML      # ( 𝓊 → u ) MATHEMATICAL SCRIPT SMALL U → LATIN SMALL LETTER U   # 
+1D4FE ;        0075 ;  ML      # ( 𝓾 → u ) MATHEMATICAL BOLD SCRIPT SMALL U → LATIN SMALL LETTER U      # 
+1D532 ;        0075 ;  ML      # ( 𝔲 → u ) MATHEMATICAL FRAKTUR SMALL U → LATIN SMALL LETTER U  # 
+1D566 ;        0075 ;  ML      # ( 𝕦 → u ) MATHEMATICAL DOUBLE-STRUCK SMALL U → LATIN SMALL LETTER U    # 
+1D59A ;        0075 ;  ML      # ( 𝖚 → u ) MATHEMATICAL BOLD FRAKTUR SMALL U → LATIN SMALL LETTER U     # 
+1D5CE ;        0075 ;  ML      # ( 𝗎 → u ) MATHEMATICAL SANS-SERIF SMALL U → LATIN SMALL LETTER U       # 
+1D602 ;        0075 ;  ML      # ( 𝘂 → u ) MATHEMATICAL SANS-SERIF BOLD SMALL U → LATIN SMALL LETTER U  # 
+1D636 ;        0075 ;  ML      # ( 𝘶 → u ) MATHEMATICAL SANS-SERIF ITALIC SMALL U → LATIN SMALL LETTER U        # 
+1D66A ;        0075 ;  ML      # ( 𝙪 → u ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U → LATIN SMALL LETTER U   # 
+1D69E ;        0075 ;  ML      # ( 𝚞 → u ) MATHEMATICAL MONOSPACE SMALL U → LATIN SMALL LETTER U        # 
+1D1C ; 0075 ;  ML      # ( ᴜ → u ) LATIN LETTER SMALL CAPITAL U → LATIN SMALL LETTER U   # 
+028B ; 0075 ;  ML      # ( ʋ → u ) LATIN SMALL LETTER V WITH HOOK → LATIN SMALL LETTER U  # 
+03C5 ; 0075 ;  ML      # ( υ → u ) GREEK SMALL LETTER UPSILON → LATIN SMALL LETTER U      # →ʋ→
+1D6D6 ;        0075 ;  ML      # ( 𝛖 → u ) MATHEMATICAL BOLD SMALL UPSILON → LATIN SMALL LETTER U       # →υ→→ʋ→
+1D710 ;        0075 ;  ML      # ( 𝜐 → u ) MATHEMATICAL ITALIC SMALL UPSILON → LATIN SMALL LETTER U     # →υ→→ʋ→
+1D74A ;        0075 ;  ML      # ( 𝝊 → u ) MATHEMATICAL BOLD ITALIC SMALL UPSILON → LATIN SMALL LETTER U        # →υ→→ʋ→
+1D784 ;        0075 ;  ML      # ( 𝞄 → u ) MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON → LATIN SMALL LETTER U    # →υ→→ʋ→
+1D7BE ;        0075 ;  ML      # ( 𝞾 → u ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON → LATIN SMALL LETTER U     # →υ→→ʋ→
+0446 ; 0075 ;  ML      # ( ц → u ) CYRILLIC SMALL LETTER TSE → LATIN SMALL LETTER U       # 
+057D ; 0075 ;  ML      # ( ս → u ) ARMENIAN SMALL LETTER SEH → LATIN SMALL LETTER U       # 
+
+01D4 ; 016D ;  ML      # ( ǔ → ŭ ) LATIN SMALL LETTER U WITH CARON → LATIN SMALL LETTER U WITH BREVE     # 
+
+057A ; 0270 ;  ML      # ( պ → ɰ ) ARMENIAN SMALL LETTER PEH → LATIN SMALL LETTER TURNED M WITH LONG LEG # 
+
+2228 ; 0076 ;  ML      #* ( ∨ → v ) LOGICAL OR → LATIN SMALL LETTER V    # 
+22C1 ; 0076 ;  ML      #* ( ⋁ → v ) N-ARY LOGICAL OR → LATIN SMALL LETTER V      # →∨→
+FF56 ; 0076 ;  ML      # ( v → v ) FULLWIDTH LATIN SMALL LETTER V → LATIN SMALL LETTER V # →ν→
+2174 ; 0076 ;  ML      # ( ⅴ → v ) SMALL ROMAN NUMERAL FIVE → LATIN SMALL LETTER V       # 
+1D42F ;        0076 ;  ML      # ( 𝐯 → v ) MATHEMATICAL BOLD SMALL V → LATIN SMALL LETTER V     # 
+1D463 ;        0076 ;  ML      # ( 𝑣 → v ) MATHEMATICAL ITALIC SMALL V → LATIN SMALL LETTER V   # 
+1D497 ;        0076 ;  ML      # ( 𝒗 → v ) MATHEMATICAL BOLD ITALIC SMALL V → LATIN SMALL LETTER V      # 
+1D4CB ;        0076 ;  ML      # ( 𝓋 → v ) MATHEMATICAL SCRIPT SMALL V → LATIN SMALL LETTER V   # 
+1D4FF ;        0076 ;  ML      # ( 𝓿 → v ) MATHEMATICAL BOLD SCRIPT SMALL V → LATIN SMALL LETTER V      # 
+1D533 ;        0076 ;  ML      # ( 𝔳 → v ) MATHEMATICAL FRAKTUR SMALL V → LATIN SMALL LETTER V  # 
+1D567 ;        0076 ;  ML      # ( 𝕧 → v ) MATHEMATICAL DOUBLE-STRUCK SMALL V → LATIN SMALL LETTER V    # 
+1D59B ;        0076 ;  ML      # ( 𝖛 → v ) MATHEMATICAL BOLD FRAKTUR SMALL V → LATIN SMALL LETTER V     # 
+1D5CF ;        0076 ;  ML      # ( 𝗏 → v ) MATHEMATICAL SANS-SERIF SMALL V → LATIN SMALL LETTER V       # 
+1D603 ;        0076 ;  ML      # ( 𝘃 → v ) MATHEMATICAL SANS-SERIF BOLD SMALL V → LATIN SMALL LETTER V  # 
+1D637 ;        0076 ;  ML      # ( 𝘷 → v ) MATHEMATICAL SANS-SERIF ITALIC SMALL V → LATIN SMALL LETTER V        # 
+1D66B ;        0076 ;  ML      # ( 𝙫 → v ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V → LATIN SMALL LETTER V   # 
+1D69F ;        0076 ;  ML      # ( 𝚟 → v ) MATHEMATICAL MONOSPACE SMALL V → LATIN SMALL LETTER V        # 
+1D20 ; 0076 ;  ML      # ( ᴠ → v ) LATIN LETTER SMALL CAPITAL V → LATIN SMALL LETTER V   # 
+03BD ; 0076 ;  ML      # ( ν → v ) GREEK SMALL LETTER NU → LATIN SMALL LETTER V   # 
+1D6CE ;        0076 ;  ML      # ( 𝛎 → v ) MATHEMATICAL BOLD SMALL NU → LATIN SMALL LETTER V    # →ν→
+1D708 ;        0076 ;  ML      # ( 𝜈 → v ) MATHEMATICAL ITALIC SMALL NU → LATIN SMALL LETTER V  # →ν→
+1D742 ;        0076 ;  ML      # ( 𝝂 → v ) MATHEMATICAL BOLD ITALIC SMALL NU → LATIN SMALL LETTER V     # →ν→
+1D77C ;        0076 ;  ML      # ( 𝝼 → v ) MATHEMATICAL SANS-SERIF BOLD SMALL NU → LATIN SMALL LETTER V # →ν→
+1D7B6 ;        0076 ;  ML      # ( 𝞶 → v ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU → LATIN SMALL LETTER V  # →ν→
+0475 ; 0076 ;  ML      # ( ѵ → v ) CYRILLIC SMALL LETTER IZHITSA → LATIN SMALL LETTER V   # 
+05D8 ; 0076 ;  ML      # ( ‎ט‎ → v ) HEBREW LETTER TET → LATIN SMALL LETTER V # 
+
+2175 ; 0076 0069 ;     ML      # ( ⅵ → vi ) SMALL ROMAN NUMERAL SIX → LATIN SMALL LETTER V, LATIN SMALL LETTER I # 
+
+2176 ; 0076 0069 0069 ;        ML      # ( ⅶ → vii ) SMALL ROMAN NUMERAL SEVEN → LATIN SMALL LETTER V, LATIN SMALL LETTER I, LATIN SMALL LETTER I        # 
+
+2177 ; 0076 0069 0069 0069 ;   ML      # ( ⅷ → viii ) SMALL ROMAN NUMERAL EIGHT → LATIN SMALL LETTER V, LATIN SMALL LETTER I, LATIN SMALL LETTER I, LATIN SMALL LETTER I # 
+
+026F ; 0076 0076 ;     ML      # ( ɯ → vv ) LATIN SMALL LETTER TURNED M → LATIN SMALL LETTER V, LATIN SMALL LETTER V      # →w→
+0077 ; 0076 0076 ;     ML      # ( w → vv ) LATIN SMALL LETTER W → LATIN SMALL LETTER V, LATIN SMALL LETTER V      # 
+1D430 ;        0076 0076 ;     ML      # ( 𝐰 → vv ) MATHEMATICAL BOLD SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V      # →w→
+1D464 ;        0076 0076 ;     ML      # ( 𝑤 → vv ) MATHEMATICAL ITALIC SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V    # →w→
+1D498 ;        0076 0076 ;     ML      # ( 𝒘 → vv ) MATHEMATICAL BOLD ITALIC SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V       # →w→
+1D4CC ;        0076 0076 ;     ML      # ( 𝓌 → vv ) MATHEMATICAL SCRIPT SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V    # →w→
+1D500 ;        0076 0076 ;     ML      # ( 𝔀 → vv ) MATHEMATICAL BOLD SCRIPT SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V       # →w→
+1D534 ;        0076 0076 ;     ML      # ( 𝔴 → vv ) MATHEMATICAL FRAKTUR SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V   # →w→
+1D568 ;        0076 0076 ;     ML      # ( 𝕨 → vv ) MATHEMATICAL DOUBLE-STRUCK SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V     # →w→
+1D59C ;        0076 0076 ;     ML      # ( 𝖜 → vv ) MATHEMATICAL BOLD FRAKTUR SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V      # →w→
+1D5D0 ;        0076 0076 ;     ML      # ( 𝗐 → vv ) MATHEMATICAL SANS-SERIF SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V        # →w→
+1D604 ;        0076 0076 ;     ML      # ( 𝘄 → vv ) MATHEMATICAL SANS-SERIF BOLD SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V   # →w→
+1D638 ;        0076 0076 ;     ML      # ( 𝘸 → vv ) MATHEMATICAL SANS-SERIF ITALIC SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V # →w→
+1D66C ;        0076 0076 ;     ML      # ( 𝙬 → vv ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V    # →w→
+1D6A0 ;        0076 0076 ;     ML      # ( 𝚠 → vv ) MATHEMATICAL MONOSPACE SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V # →w→
+1D21 ; 0076 0076 ;     ML      # ( ᴡ → vv ) LATIN LETTER SMALL CAPITAL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V    # →w→
+0461 ; 0076 0076 ;     ML      # ( ѡ → vv ) CYRILLIC SMALL LETTER OMEGA → LATIN SMALL LETTER V, LATIN SMALL LETTER V      # →w→
+051D ; 0076 0076 ;     ML      # ( ԝ → vv ) CYRILLIC SMALL LETTER WE → LATIN SMALL LETTER V, LATIN SMALL LETTER V # →w→
+0561 ; 0076 0076 ;     ML      # ( ա → vv ) ARMENIAN SMALL LETTER AYB → LATIN SMALL LETTER V, LATIN SMALL LETTER V        # →ɯ→→w→
+
+047D ; 0076 0076 0483 ;        ML      # ( ѽ → vv҃ ) CYRILLIC SMALL LETTER OMEGA WITH TITLO → LATIN SMALL LETTER V, LATIN SMALL LETTER V, COMBINING CYRILLIC TITLO       # →ѡ҃→
+
+A761 ; 0076 0079 ;     ML      # ( ꝡ → vy ) LATIN SMALL LETTER VY → LATIN SMALL LETTER V, LATIN SMALL LETTER Y   # 
+
+1D27 ; 028C ;  ML      # ( ᴧ → ʌ ) GREEK LETTER SMALL CAPITAL LAMDA → LATIN SMALL LETTER TURNED V       # 
+
+166E ; 0078 ;  ML      #* ( ᙮ → x ) CANADIAN SYLLABICS FULL STOP → LATIN SMALL LETTER X  # 
+00D7 ; 0078 ;  ML      #* ( × → x ) MULTIPLICATION SIGN → LATIN SMALL LETTER X    # 
+2573 ; 0078 ;  ML      #* ( ╳ → x ) BOX DRAWINGS LIGHT DIAGONAL CROSS → LATIN SMALL LETTER X     # 
+292B ; 0078 ;  ML      #* ( ⤫ → x ) RISING DIAGONAL CROSSING FALLING DIAGONAL → LATIN SMALL LETTER X     # 
+292C ; 0078 ;  ML      #* ( ⤬ → x ) FALLING DIAGONAL CROSSING RISING DIAGONAL → LATIN SMALL LETTER X     # 
+2A2F ; 0078 ;  ML      #* ( ⨯ → x ) VECTOR OR CROSS PRODUCT → LATIN SMALL LETTER X       # →×→
+FF58 ; 0078 ;  ML      # ( x → x ) FULLWIDTH LATIN SMALL LETTER X → LATIN SMALL LETTER X # →х→
+2179 ; 0078 ;  ML      # ( ⅹ → x ) SMALL ROMAN NUMERAL TEN → LATIN SMALL LETTER X        # 
+1D431 ;        0078 ;  ML      # ( 𝐱 → x ) MATHEMATICAL BOLD SMALL X → LATIN SMALL LETTER X     # 
+1D465 ;        0078 ;  ML      # ( 𝑥 → x ) MATHEMATICAL ITALIC SMALL X → LATIN SMALL LETTER X   # 
+1D499 ;        0078 ;  ML      # ( 𝒙 → x ) MATHEMATICAL BOLD ITALIC SMALL X → LATIN SMALL LETTER X      # 
+1D4CD ;        0078 ;  ML      # ( 𝓍 → x ) MATHEMATICAL SCRIPT SMALL X → LATIN SMALL LETTER X   # 
+1D501 ;        0078 ;  ML      # ( 𝔁 → x ) MATHEMATICAL BOLD SCRIPT SMALL X → LATIN SMALL LETTER X      # 
+1D535 ;        0078 ;  ML      # ( 𝔵 → x ) MATHEMATICAL FRAKTUR SMALL X → LATIN SMALL LETTER X  # 
+1D569 ;        0078 ;  ML      # ( 𝕩 → x ) MATHEMATICAL DOUBLE-STRUCK SMALL X → LATIN SMALL LETTER X    # 
+1D59D ;        0078 ;  ML      # ( 𝖝 → x ) MATHEMATICAL BOLD FRAKTUR SMALL X → LATIN SMALL LETTER X     # 
+1D5D1 ;        0078 ;  ML      # ( 𝗑 → x ) MATHEMATICAL SANS-SERIF SMALL X → LATIN SMALL LETTER X       # 
+1D605 ;        0078 ;  ML      # ( 𝘅 → x ) MATHEMATICAL SANS-SERIF BOLD SMALL X → LATIN SMALL LETTER X  # 
+1D639 ;        0078 ;  ML      # ( 𝘹 → x ) MATHEMATICAL SANS-SERIF ITALIC SMALL X → LATIN SMALL LETTER X        # 
+1D66D ;        0078 ;  ML      # ( 𝙭 → x ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X → LATIN SMALL LETTER X   # 
+1D6A1 ;        0078 ;  ML      # ( 𝚡 → x ) MATHEMATICAL MONOSPACE SMALL X → LATIN SMALL LETTER X        # 
+0445 ; 0078 ;  ML      # ( х → x ) CYRILLIC SMALL LETTER HA → LATIN SMALL LETTER X        # 
+1541 ; 0078 ;  ML      # ( ᕁ → x ) CANADIAN SYLLABICS SAYISI YI → LATIN SMALL LETTER X   # →᙮→
+157D ; 0078 ;  ML      # ( ᕽ → x ) CANADIAN SYLLABICS HK → LATIN SMALL LETTER X  # →ᕁ→→᙮→
+
+2A30 ; 0078 0307 ;     ML      #* ( ⨰ → ẋ ) MULTIPLICATION SIGN WITH DOT ABOVE → LATIN SMALL LETTER X, COMBINING DOT ABOVE     # →×̇→
+
+217A ; 0078 0069 ;     ML      # ( ⅺ → xi ) SMALL ROMAN NUMERAL ELEVEN → LATIN SMALL LETTER X, LATIN SMALL LETTER I      # 
+
+217B ; 0078 0069 0069 ;        ML      # ( ⅻ → xii ) SMALL ROMAN NUMERAL TWELVE → LATIN SMALL LETTER X, LATIN SMALL LETTER I, LATIN SMALL LETTER I       # 
+
+1D8C ; 0079 ;  ML      # ( ᶌ → y ) LATIN SMALL LETTER V WITH PALATAL HOOK → LATIN SMALL LETTER Y # 
+FF59 ; 0079 ;  ML      # ( y → y ) FULLWIDTH LATIN SMALL LETTER Y → LATIN SMALL LETTER Y # →у→
+1D432 ;        0079 ;  ML      # ( 𝐲 → y ) MATHEMATICAL BOLD SMALL Y → LATIN SMALL LETTER Y     # 
+1D466 ;        0079 ;  ML      # ( 𝑦 → y ) MATHEMATICAL ITALIC SMALL Y → LATIN SMALL LETTER Y   # 
+1D49A ;        0079 ;  ML      # ( 𝒚 → y ) MATHEMATICAL BOLD ITALIC SMALL Y → LATIN SMALL LETTER Y      # 
+1D4CE ;        0079 ;  ML      # ( 𝓎 → y ) MATHEMATICAL SCRIPT SMALL Y → LATIN SMALL LETTER Y   # 
+1D502 ;        0079 ;  ML      # ( 𝔂 → y ) MATHEMATICAL BOLD SCRIPT SMALL Y → LATIN SMALL LETTER Y      # 
+1D536 ;        0079 ;  ML      # ( 𝔶 → y ) MATHEMATICAL FRAKTUR SMALL Y → LATIN SMALL LETTER Y  # 
+1D56A ;        0079 ;  ML      # ( 𝕪 → y ) MATHEMATICAL DOUBLE-STRUCK SMALL Y → LATIN SMALL LETTER Y    # 
+1D59E ;        0079 ;  ML      # ( 𝖞 → y ) MATHEMATICAL BOLD FRAKTUR SMALL Y → LATIN SMALL LETTER Y     # 
+1D5D2 ;        0079 ;  ML      # ( 𝗒 → y ) MATHEMATICAL SANS-SERIF SMALL Y → LATIN SMALL LETTER Y       # 
+1D606 ;        0079 ;  ML      # ( 𝘆 → y ) MATHEMATICAL SANS-SERIF BOLD SMALL Y → LATIN SMALL LETTER Y  # 
+1D63A ;        0079 ;  ML      # ( 𝘺 → y ) MATHEMATICAL SANS-SERIF ITALIC SMALL Y → LATIN SMALL LETTER Y        # 
+1D66E ;        0079 ;  ML      # ( 𝙮 → y ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y → LATIN SMALL LETTER Y   # 
+1D6A2 ;        0079 ;  ML      # ( 𝚢 → y ) MATHEMATICAL MONOSPACE SMALL Y → LATIN SMALL LETTER Y        # 
+028F ; 0079 ;  ML      # ( ʏ → y ) LATIN LETTER SMALL CAPITAL Y → LATIN SMALL LETTER Y    # →ү→→у→
+1EFF ; 0079 ;  ML      # ( ỿ → y ) LATIN SMALL LETTER Y WITH LOOP → LATIN SMALL LETTER Y # 
+03B3 ; 0079 ;  ML      # ( γ → y ) GREEK SMALL LETTER GAMMA → LATIN SMALL LETTER Y        # 
+213D ; 0079 ;  ML      # ( ℽ → y ) DOUBLE-STRUCK SMALL GAMMA → LATIN SMALL LETTER Y      # →γ→
+1D6C4 ;        0079 ;  ML      # ( 𝛄 → y ) MATHEMATICAL BOLD SMALL GAMMA → LATIN SMALL LETTER Y # →γ→
+1D6FE ;        0079 ;  ML      # ( 𝛾 → y ) MATHEMATICAL ITALIC SMALL GAMMA → LATIN SMALL LETTER Y       # →γ→
+1D738 ;        0079 ;  ML      # ( 𝜸 → y ) MATHEMATICAL BOLD ITALIC SMALL GAMMA → LATIN SMALL LETTER Y  # →γ→
+1D772 ;        0079 ;  ML      # ( 𝝲 → y ) MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA → LATIN SMALL LETTER Y      # →γ→
+1D7AC ;        0079 ;  ML      # ( 𝞬 → y ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA → LATIN SMALL LETTER Y       # →γ→
+0443 ; 0079 ;  ML      # ( у → y ) CYRILLIC SMALL LETTER U → LATIN SMALL LETTER Y # 
+04AF ; 0079 ;  ML      # ( ү → y ) CYRILLIC SMALL LETTER STRAIGHT U → LATIN SMALL LETTER Y        # →у→
+10E7 ; 0079 ;  ML      # ( ყ → y ) GEORGIAN LETTER QAR → LATIN SMALL LETTER Y    # 
+
+01B4 ; 0079 0314 ;     ML      # ( ƴ → y̔ ) LATIN SMALL LETTER Y WITH HOOK → LATIN SMALL LETTER Y, COMBINING REVERSED COMMA ABOVE        # 
+
+04B1 ; 0079 0335 ;     ML      # ( ұ → y̵ ) CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE → LATIN SMALL LETTER Y, COMBINING SHORT STROKE OVERLAY  # →ү̵→
+
+1D433 ;        007A ;  ML      # ( 𝐳 → z ) MATHEMATICAL BOLD SMALL Z → LATIN SMALL LETTER Z     # 
+1D467 ;        007A ;  ML      # ( 𝑧 → z ) MATHEMATICAL ITALIC SMALL Z → LATIN SMALL LETTER Z   # 
+1D49B ;        007A ;  ML      # ( 𝒛 → z ) MATHEMATICAL BOLD ITALIC SMALL Z → LATIN SMALL LETTER Z      # 
+1D4CF ;        007A ;  ML      # ( 𝓏 → z ) MATHEMATICAL SCRIPT SMALL Z → LATIN SMALL LETTER Z   # 
+1D503 ;        007A ;  ML      # ( 𝔃 → z ) MATHEMATICAL BOLD SCRIPT SMALL Z → LATIN SMALL LETTER Z      # 
+1D537 ;        007A ;  ML      # ( 𝔷 → z ) MATHEMATICAL FRAKTUR SMALL Z → LATIN SMALL LETTER Z  # 
+1D56B ;        007A ;  ML      # ( 𝕫 → z ) MATHEMATICAL DOUBLE-STRUCK SMALL Z → LATIN SMALL LETTER Z    # 
+1D59F ;        007A ;  ML      # ( 𝖟 → z ) MATHEMATICAL BOLD FRAKTUR SMALL Z → LATIN SMALL LETTER Z     # 
+1D5D3 ;        007A ;  ML      # ( 𝗓 → z ) MATHEMATICAL SANS-SERIF SMALL Z → LATIN SMALL LETTER Z       # 
+1D607 ;        007A ;  ML      # ( 𝘇 → z ) MATHEMATICAL SANS-SERIF BOLD SMALL Z → LATIN SMALL LETTER Z  # 
+1D63B ;        007A ;  ML      # ( 𝘻 → z ) MATHEMATICAL SANS-SERIF ITALIC SMALL Z → LATIN SMALL LETTER Z        # 
+1D66F ;        007A ;  ML      # ( 𝙯 → z ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z → LATIN SMALL LETTER Z   # 
+1D6A3 ;        007A ;  ML      # ( 𝚣 → z ) MATHEMATICAL MONOSPACE SMALL Z → LATIN SMALL LETTER Z        # 
+1D22 ; 007A ;  ML      # ( ᴢ → z ) LATIN LETTER SMALL CAPITAL Z → LATIN SMALL LETTER Z   # 
+
+0290 ; 007A 0328 ;     ML      # ( ʐ → z̨ ) LATIN SMALL LETTER Z WITH RETROFLEX HOOK → LATIN SMALL LETTER Z, COMBINING OGONEK    # →z̢→
+
+0225 ; 007A 0326 ;     ML      # ( ȥ → z̦ ) LATIN SMALL LETTER Z WITH HOOK → LATIN SMALL LETTER Z, COMBINING COMMA BELOW # →z̡→
+
+01B6 ; 007A 0335 ;     ML      # ( ƶ → z̵ ) LATIN SMALL LETTER Z WITH STROKE → LATIN SMALL LETTER Z, COMBINING SHORT STROKE OVERLAY      # 
+
+0292 ; 021D ;  ML      # ( ʒ → ȝ ) LATIN SMALL LETTER EZH → LATIN SMALL LETTER YOGH      # 
+A76B ; 021D ;  ML      # ( ꝫ → ȝ ) LATIN SMALL LETTER ET → LATIN SMALL LETTER YOGH      # 
+2CCD ; 021D ;  ML      # ( ⳍ → ȝ ) COPTIC SMALL LETTER OLD COPTIC HORI → LATIN SMALL LETTER YOGH        # 
+04E1 ; 021D ;  ML      # ( ӡ → ȝ ) CYRILLIC SMALL LETTER ABKHASIAN DZE → LATIN SMALL LETTER YOGH # →ʒ→
+10F3 ; 021D ;  ML      # ( ჳ → ȝ ) GEORGIAN LETTER WE → LATIN SMALL LETTER YOGH # →ʒ→
+
+01BF ; 00FE ;  ML      # ( ƿ → þ ) LATIN LETTER WYNN → LATIN SMALL LETTER THORN  # 
+03F8 ; 00FE ;  ML      # ( ϸ → þ ) GREEK SMALL LETTER SHO → LATIN SMALL LETTER THORN     # 
+
+1D24 ; 01A8 ;  ML      # ( ᴤ → ƨ ) LATIN LETTER VOICED LARYNGEAL SPIRANT → LATIN SMALL LETTER TONE TWO  # 
+03E9 ; 01A8 ;  ML      # ( ϩ → ƨ ) COPTIC SMALL LETTER HORI → LATIN SMALL LETTER TONE TWO        # 
+A645 ; 01A8 ;  ML      # ( ꙅ → ƨ ) CYRILLIC SMALL LETTER REVERSED DZE → LATIN SMALL LETTER TONE TWO     # 
+
+044C ; 0185 ;  ML      # ( ь → ƅ ) CYRILLIC SMALL LETTER SOFT SIGN → LATIN SMALL LETTER TONE SIX # 
+
+02C1 ; 02E4 ;  ML      # ( ˁ → ˤ ) MODIFIER LETTER REVERSED GLOTTAL STOP → MODIFIER LETTER SMALL REVERSED GLOTTAL STOP   # 
+
+1D6C3 ;        03B2 ;  ML      # ( 𝛃 → β ) MATHEMATICAL BOLD SMALL BETA → GREEK SMALL LETTER BETA      # 
+1D6FD ;        03B2 ;  ML      # ( 𝛽 → β ) MATHEMATICAL ITALIC SMALL BETA → GREEK SMALL LETTER BETA    # 
+1D737 ;        03B2 ;  ML      # ( 𝜷 → β ) MATHEMATICAL BOLD ITALIC SMALL BETA → GREEK SMALL LETTER BETA       # 
+1D771 ;        03B2 ;  ML      # ( 𝝱 → β ) MATHEMATICAL SANS-SERIF BOLD SMALL BETA → GREEK SMALL LETTER BETA   # 
+1D7AB ;        03B2 ;  ML      # ( 𝞫 → β ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA → GREEK SMALL LETTER BETA    # 
+
+1D7CB ;        03DD ;  ML      # ( 𝟋 → ϝ ) MATHEMATICAL BOLD SMALL DIGAMMA → GREEK SMALL LETTER DIGAMMA        # 
+
+1D6C7 ;        03B6 ;  ML      # ( 𝛇 → ζ ) MATHEMATICAL BOLD SMALL ZETA → GREEK SMALL LETTER ZETA      # 
+1D701 ;        03B6 ;  ML      # ( 𝜁 → ζ ) MATHEMATICAL ITALIC SMALL ZETA → GREEK SMALL LETTER ZETA    # 
+1D73B ;        03B6 ;  ML      # ( 𝜻 → ζ ) MATHEMATICAL BOLD ITALIC SMALL ZETA → GREEK SMALL LETTER ZETA       # 
+1D775 ;        03B6 ;  ML      # ( 𝝵 → ζ ) MATHEMATICAL SANS-SERIF BOLD SMALL ZETA → GREEK SMALL LETTER ZETA   # 
+1D7AF ;        03B6 ;  ML      # ( 𝞯 → ζ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA → GREEK SMALL LETTER ZETA    # 
+
+2296 ; 03B8 ;  ML      #* ( ⊖ → θ ) CIRCLED MINUS → GREEK SMALL LETTER THETA    # 
+229D ; 03B8 ;  ML      #* ( ⊝ → θ ) CIRCLED DASH → GREEK SMALL LETTER THETA     # →⊖→
+236C ; 03B8 ;  ML      #* ( ⍬ → θ ) APL FUNCTIONAL SYMBOL ZILDE → GREEK SMALL LETTER THETA      # 
+1D6C9 ;        03B8 ;  ML      # ( 𝛉 → θ ) MATHEMATICAL BOLD SMALL THETA → GREEK SMALL LETTER THETA    # 
+1D6DD ;        03B8 ;  ML      # ( 𝛝 → θ ) MATHEMATICAL BOLD THETA SYMBOL → GREEK SMALL LETTER THETA   # 
+1D703 ;        03B8 ;  ML      # ( 𝜃 → θ ) MATHEMATICAL ITALIC SMALL THETA → GREEK SMALL LETTER THETA  # 
+1D717 ;        03B8 ;  ML      # ( 𝜗 → θ ) MATHEMATICAL ITALIC THETA SYMBOL → GREEK SMALL LETTER THETA # 
+1D73D ;        03B8 ;  ML      # ( 𝜽 → θ ) MATHEMATICAL BOLD ITALIC SMALL THETA → GREEK SMALL LETTER THETA     # 
+1D751 ;        03B8 ;  ML      # ( 𝝑 → θ ) MATHEMATICAL BOLD ITALIC THETA SYMBOL → GREEK SMALL LETTER THETA    # 
+1D777 ;        03B8 ;  ML      # ( 𝝷 → θ ) MATHEMATICAL SANS-SERIF BOLD SMALL THETA → GREEK SMALL LETTER THETA # 
+1D78B ;        03B8 ;  ML      # ( 𝞋 → θ ) MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL → GREEK SMALL LETTER THETA        # 
+1D7B1 ;        03B8 ;  ML      # ( 𝞱 → θ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA → GREEK SMALL LETTER THETA  # 
+1D7C5 ;        03B8 ;  ML      # ( 𝟅 → θ ) MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL → GREEK SMALL LETTER THETA # 
+1D6AF ;        03B8 ;  ML      # ( 𝚯 → θ ) MATHEMATICAL BOLD CAPITAL THETA → GREEK SMALL LETTER THETA  # →Θ→→⊖→
+1D6B9 ;        03B8 ;  ML      # ( 𝚹 → θ ) MATHEMATICAL BOLD CAPITAL THETA SYMBOL → GREEK SMALL LETTER THETA   # →Θ→→⊖→
+1D6E9 ;        03B8 ;  ML      # ( 𝛩 → θ ) MATHEMATICAL ITALIC CAPITAL THETA → GREEK SMALL LETTER THETA        # →Θ→→⊖→
+1D6F3 ;        03B8 ;  ML      # ( 𝛳 → θ ) MATHEMATICAL ITALIC CAPITAL THETA SYMBOL → GREEK SMALL LETTER THETA # →Θ→→⊖→
+1D723 ;        03B8 ;  ML      # ( 𝜣 → θ ) MATHEMATICAL BOLD ITALIC CAPITAL THETA → GREEK SMALL LETTER THETA   # →Θ→→⊖→
+1D72D ;        03B8 ;  ML      # ( 𝜭 → θ ) MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL → GREEK SMALL LETTER THETA    # →Θ→→⊖→
+1D75D ;        03B8 ;  ML      # ( 𝝝 → θ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA → GREEK SMALL LETTER THETA       # →Θ→→⊖→
+1D767 ;        03B8 ;  ML      # ( 𝝧 → θ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL → GREEK SMALL LETTER THETA        # →Θ→→⊖→
+1D797 ;        03B8 ;  ML      # ( 𝞗 → θ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA → GREEK SMALL LETTER THETA        # →Θ→→⊖→
+1D7A1 ;        03B8 ;  ML      # ( 𝞡 → θ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL → GREEK SMALL LETTER THETA # →Θ→→⊖→
+2D31 ; 03B8 ;  ML      # ( ⴱ → θ ) TIFINAGH LETTER YAB → GREEK SMALL LETTER THETA       # →Ɵ→→Θ→→⊖→
+13BE ; 03B8 ;  ML      # ( Ꮎ → θ ) CHEROKEE LETTER NA → GREEK SMALL LETTER THETA        # →O̵→→O̶→→Ɵ→→Θ→→⊖→
+
+2CE4 ; 03D7 ;  ML      # ( ⳤ → ϗ ) COPTIC SYMBOL KAI → GREEK KAI SYMBOL # 
+
+1D6CC ;        03BB ;  ML      # ( 𝛌 → λ ) MATHEMATICAL BOLD SMALL LAMDA → GREEK SMALL LETTER LAMDA    # 
+1D706 ;        03BB ;  ML      # ( 𝜆 → λ ) MATHEMATICAL ITALIC SMALL LAMDA → GREEK SMALL LETTER LAMDA  # 
+1D740 ;        03BB ;  ML      # ( 𝝀 → λ ) MATHEMATICAL BOLD ITALIC SMALL LAMDA → GREEK SMALL LETTER LAMDA     # 
+1D77A ;        03BB ;  ML      # ( 𝝺 → λ ) MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA → GREEK SMALL LETTER LAMDA # 
+1D7B4 ;        03BB ;  ML      # ( 𝞴 → λ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA → GREEK SMALL LETTER LAMDA  # 
+
+1D6CD ;        03BC ;  ML      # ( 𝛍 → μ ) MATHEMATICAL BOLD SMALL MU → GREEK SMALL LETTER MU  # 
+1D707 ;        03BC ;  ML      # ( 𝜇 → μ ) MATHEMATICAL ITALIC SMALL MU → GREEK SMALL LETTER MU        # 
+1D741 ;        03BC ;  ML      # ( 𝝁 → μ ) MATHEMATICAL BOLD ITALIC SMALL MU → GREEK SMALL LETTER MU   # 
+1D77B ;        03BC ;  ML      # ( 𝝻 → μ ) MATHEMATICAL SANS-SERIF BOLD SMALL MU → GREEK SMALL LETTER MU       # 
+1D7B5 ;        03BC ;  ML      # ( 𝞵 → μ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU → GREEK SMALL LETTER MU        # 
+
+1D6CF ;        03BE ;  ML      # ( 𝛏 → ξ ) MATHEMATICAL BOLD SMALL XI → GREEK SMALL LETTER XI  # 
+1D709 ;        03BE ;  ML      # ( 𝜉 → ξ ) MATHEMATICAL ITALIC SMALL XI → GREEK SMALL LETTER XI        # 
+1D743 ;        03BE ;  ML      # ( 𝝃 → ξ ) MATHEMATICAL BOLD ITALIC SMALL XI → GREEK SMALL LETTER XI   # 
+1D77D ;        03BE ;  ML      # ( 𝝽 → ξ ) MATHEMATICAL SANS-SERIF BOLD SMALL XI → GREEK SMALL LETTER XI       # 
+1D7B7 ;        03BE ;  ML      # ( 𝞷 → ξ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI → GREEK SMALL LETTER XI        # 
+
+1D6EF ;        1D6B5 ; ML      # ( 𝛯 → 𝚵 ) MATHEMATICAL ITALIC CAPITAL XI → MATHEMATICAL BOLD CAPITAL XI     # →Ξ→
+1D729 ;        1D6B5 ; ML      # ( 𝜩 → 𝚵 ) MATHEMATICAL BOLD ITALIC CAPITAL XI → MATHEMATICAL BOLD CAPITAL XI        # →Ξ→
+1D763 ;        1D6B5 ; ML      # ( 𝝣 → 𝚵 ) MATHEMATICAL SANS-SERIF BOLD CAPITAL XI → MATHEMATICAL BOLD CAPITAL XI    # →Ξ→
+1D79D ;        1D6B5 ; ML      # ( 𝞝 → 𝚵 ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI → MATHEMATICAL BOLD CAPITAL XI     # →Ξ→
+
+220F ; 213F ;  ML      #* ( ∏ → ℿ ) N-ARY PRODUCT → DOUBLE-STRUCK CAPITAL PI   # →Π→
+1D6B7 ;        213F ;  ML      # ( 𝚷 → ℿ ) MATHEMATICAL BOLD CAPITAL PI → DOUBLE-STRUCK CAPITAL PI    # →Π→
+1D6F1 ;        213F ;  ML      # ( 𝛱 → ℿ ) MATHEMATICAL ITALIC CAPITAL PI → DOUBLE-STRUCK CAPITAL PI  # →Π→
+1D72B ;        213F ;  ML      # ( 𝜫 → ℿ ) MATHEMATICAL BOLD ITALIC CAPITAL PI → DOUBLE-STRUCK CAPITAL PI     # →Π→
+1D765 ;        213F ;  ML      # ( 𝝥 → ℿ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL PI → DOUBLE-STRUCK CAPITAL PI # →Π→
+1D79F ;        213F ;  ML      # ( 𝞟 → ℿ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI → DOUBLE-STRUCK CAPITAL PI  # →Π→
+
+1D70D ;        1D6D3 ; ML      # ( 𝜍 → 𝛓 ) MATHEMATICAL ITALIC SMALL FINAL SIGMA → MATHEMATICAL BOLD SMALL FINAL SIGMA       # →ς→
+1D747 ;        1D6D3 ; ML      # ( 𝝇 → 𝛓 ) MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA → MATHEMATICAL BOLD SMALL FINAL SIGMA  # →ς→
+1D781 ;        1D6D3 ; ML      # ( 𝞁 → 𝛓 ) MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA → MATHEMATICAL BOLD SMALL FINAL SIGMA      # →ς→
+1D7BB ;        1D6D3 ; ML      # ( 𝞻 → 𝛓 ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA → MATHEMATICAL BOLD SMALL FINAL SIGMA       # →ς→
+
+1D6F7 ;        1D6BD ; ML      # ( 𝛷 → 𝚽 ) MATHEMATICAL ITALIC CAPITAL PHI → MATHEMATICAL BOLD CAPITAL PHI   # →Φ→
+1D731 ;        1D6BD ; ML      # ( 𝜱 → 𝚽 ) MATHEMATICAL BOLD ITALIC CAPITAL PHI → MATHEMATICAL BOLD CAPITAL PHI      # →Φ→
+1D76B ;        1D6BD ; ML      # ( 𝝫 → 𝚽 ) MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI → MATHEMATICAL BOLD CAPITAL PHI  # →Φ→
+1D7A5 ;        1D6BD ; ML      # ( 𝞥 → 𝚽 ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI → MATHEMATICAL BOLD CAPITAL PHI   # →Φ→
+
+1D6D8 ;        03C7 ;  ML      # ( 𝛘 → χ ) MATHEMATICAL BOLD SMALL CHI → GREEK SMALL LETTER CHI        # 
+1D712 ;        03C7 ;  ML      # ( 𝜒 → χ ) MATHEMATICAL ITALIC SMALL CHI → GREEK SMALL LETTER CHI      # 
+1D74C ;        03C7 ;  ML      # ( 𝝌 → χ ) MATHEMATICAL BOLD ITALIC SMALL CHI → GREEK SMALL LETTER CHI # 
+1D786 ;        03C7 ;  ML      # ( 𝞆 → χ ) MATHEMATICAL SANS-SERIF BOLD SMALL CHI → GREEK SMALL LETTER CHI     # 
+1D7C0 ;        03C7 ;  ML      # ( 𝟀 → χ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI → GREEK SMALL LETTER CHI      # 
+2CAD ; 03C7 ;  ML      # ( ⲭ → χ ) COPTIC SMALL LETTER KHI → GREEK SMALL LETTER CHI     # 
+
+1D6D9 ;        03C8 ;  ML      # ( 𝛙 → ψ ) MATHEMATICAL BOLD SMALL PSI → GREEK SMALL LETTER PSI        # 
+1D713 ;        03C8 ;  ML      # ( 𝜓 → ψ ) MATHEMATICAL ITALIC SMALL PSI → GREEK SMALL LETTER PSI      # 
+1D74D ;        03C8 ;  ML      # ( 𝝍 → ψ ) MATHEMATICAL BOLD ITALIC SMALL PSI → GREEK SMALL LETTER PSI # 
+1D787 ;        03C8 ;  ML      # ( 𝞇 → ψ ) MATHEMATICAL SANS-SERIF BOLD SMALL PSI → GREEK SMALL LETTER PSI     # 
+1D7C1 ;        03C8 ;  ML      # ( 𝟁 → ψ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI → GREEK SMALL LETTER PSI      # 
+0471 ; 03C8 ;  ML      # ( ѱ → ψ ) CYRILLIC SMALL LETTER PSI → GREEK SMALL LETTER PSI    # 
+
+1D6F9 ;        1D6BF ; ML      # ( 𝛹 → 𝚿 ) MATHEMATICAL ITALIC CAPITAL PSI → MATHEMATICAL BOLD CAPITAL PSI   # →Ψ→
+1D733 ;        1D6BF ; ML      # ( 𝜳 → 𝚿 ) MATHEMATICAL BOLD ITALIC CAPITAL PSI → MATHEMATICAL BOLD CAPITAL PSI      # →Ψ→
+1D76D ;        1D6BF ; ML      # ( 𝝭 → 𝚿 ) MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI → MATHEMATICAL BOLD CAPITAL PSI  # →Ψ→
+1D7A7 ;        1D6BF ; ML      # ( 𝞧 → 𝚿 ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI → MATHEMATICAL BOLD CAPITAL PSI   # →Ψ→
+
+2375 ; 03C9 ;  ML      #* ( ⍵ → ω ) APL FUNCTIONAL SYMBOL OMEGA → GREEK SMALL LETTER OMEGA      # 
+1D6DA ;        03C9 ;  ML      # ( 𝛚 → ω ) MATHEMATICAL BOLD SMALL OMEGA → GREEK SMALL LETTER OMEGA    # 
+1D714 ;        03C9 ;  ML      # ( 𝜔 → ω ) MATHEMATICAL ITALIC SMALL OMEGA → GREEK SMALL LETTER OMEGA  # 
+1D74E ;        03C9 ;  ML      # ( 𝝎 → ω ) MATHEMATICAL BOLD ITALIC SMALL OMEGA → GREEK SMALL LETTER OMEGA     # 
+1D788 ;        03C9 ;  ML      # ( 𝞈 → ω ) MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA → GREEK SMALL LETTER OMEGA # 
+1D7C2 ;        03C9 ;  ML      # ( 𝟂 → ω ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA → GREEK SMALL LETTER OMEGA  # 
+2CB1 ; 03C9 ;  ML      # ( ⲱ → ω ) COPTIC SMALL LETTER OOU → GREEK SMALL LETTER OMEGA   # 
+
+0497 ; 0436 0329 ;     ML      # ( җ → ж̩ ) CYRILLIC SMALL LETTER ZHE WITH DESCENDER → CYRILLIC SMALL LETTER ZHE, COMBINING VERTICAL LINE BELOW # 
+
+045D ; 0439 ;  ML      # ( ѝ → й ) CYRILLIC SMALL LETTER I WITH GRAVE → CYRILLIC SMALL LETTER SHORT I    # 
+
+048B ; 0439 0326 ;     ML      # ( ҋ → й̦ ) CYRILLIC SMALL LETTER SHORT I WITH TAIL → CYRILLIC SMALL LETTER SHORT I, COMBINING COMMA BELOW      # →й̡→
+
+1D2B ; 043B ;  ML      # ( ᴫ → л ) CYRILLIC LETTER SMALL CAPITAL EL → CYRILLIC SMALL LETTER EL  # 
+
+04C6 ; 043B 0326 ;     ML      # ( ӆ → л̦ ) CYRILLIC SMALL LETTER EL WITH TAIL → CYRILLIC SMALL LETTER EL, COMBINING COMMA BELOW        # →л̡→
+
+04CC ; 04B7 ;  ML      # ( ӌ → ҷ ) CYRILLIC SMALL LETTER KHAKASSIAN CHE → CYRILLIC SMALL LETTER CHE WITH DESCENDER       # 
+
+04BF ; 04BD 0328 ;     ML      # ( ҿ → ҽ̨ ) CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER → CYRILLIC SMALL LETTER ABKHASIAN CHE, COMBINING OGONEK  # →ҽ̢→
+
+2CBD ; 0448 ;  ML      # ( ⲽ → ш ) COPTIC SMALL LETTER CRYPTOGRAMMIC NI → CYRILLIC SMALL LETTER SHA     # 
+
+044B ; 044C 0131 ;     ML      # ( ы → ьı ) CYRILLIC SMALL LETTER YERU → CYRILLIC SMALL LETTER SOFT SIGN, LATIN SMALL LETTER DOTLESS I  # 
+
+02D3 ; 0559 ;  ML      #* ( ˓ → ՙ ) MODIFIER LETTER CENTRED LEFT HALF RING → ARMENIAN MODIFIER LETTER LEFT HALF RING     # 
+02BF ; 0559 ;  ML      # ( ʿ → ՙ ) MODIFIER LETTER LEFT HALF RING → ARMENIAN MODIFIER LETTER LEFT HALF RING      # 
+
+2135 ; 05D0 ;  ML      # ( ℵ → ‎א‎ ) ALEF SYMBOL → HEBREW LETTER ALEF       # 
+FB21 ; 05D0 ;  ML      # ( ‎ﬡ‎ → ‎א‎ ) HEBREW LETTER WIDE ALEF → HEBREW LETTER ALEF     # 
+
+FB2F ; FB2E ;  ML      # ( ‎אָ‎ → ‎אַ‎ ) HEBREW LETTER ALEF WITH QAMATS → HEBREW LETTER ALEF WITH PATAH  # 
+FB30 ; FB2E ;  ML      # ( ‎אּ‎ → ‎אַ‎ ) HEBREW LETTER ALEF WITH MAPIQ → HEBREW LETTER ALEF WITH PATAH   # 
+
+FB4F ; 05D0 05DC ;     ML      # ( ‎ﭏ‎ → ‎אל‎ ) HEBREW LIGATURE ALEF LAMED → HEBREW LETTER ALEF, HEBREW LETTER LAMED   # 
+
+2136 ; 05D1 ;  ML      # ( ℶ → ‎ב‎ ) BET SYMBOL → HEBREW LETTER BET # 
+
+2137 ; 05D2 ;  ML      # ( ℷ → ‎ג‎ ) GIMEL SYMBOL → HEBREW LETTER GIMEL     # 
+
+2138 ; 05D3 ;  ML      # ( ℸ → ‎ד‎ ) DALET SYMBOL → HEBREW LETTER DALET     # 
+FB22 ; 05D3 ;  ML      # ( ‎ﬢ‎ → ‎ד‎ ) HEBREW LETTER WIDE DALET → HEBREW LETTER DALET   # 
+
+FB23 ; 05D4 ;  ML      # ( ‎ﬣ‎ → ‎ה‎ ) HEBREW LETTER WIDE HE → HEBREW LETTER HE # 
+
+FB39 ; FB1D ;  ML      # ( ‎יּ‎ → ‎יִ‎ ) HEBREW LETTER YOD WITH DAGESH → HEBREW LETTER YOD WITH HIRIQ    # 
+
+FB24 ; 05DB ;  ML      # ( ‎ﬤ‎ → ‎כ‎ ) HEBREW LETTER WIDE KAF → HEBREW LETTER KAF       # 
+
+FB25 ; 05DC ;  ML      # ( ‎ﬥ‎ → ‎ל‎ ) HEBREW LETTER WIDE LAMED → HEBREW LETTER LAMED   # 
+
+FB26 ; 05DD ;  ML      # ( ‎ﬦ‎ → ‎ם‎ ) HEBREW LETTER WIDE FINAL MEM → HEBREW LETTER FINAL MEM   # 
+
+FB20 ; 05E2 ;  ML      # ( ‎ﬠ‎ → ‎ע‎ ) HEBREW LETTER ALTERNATIVE AYIN → HEBREW LETTER AYIN      # 
+
+FB27 ; 05E8 ;  ML      # ( ‎ﬧ‎ → ‎ר‎ ) HEBREW LETTER WIDE RESH → HEBREW LETTER RESH     # 
+
+FB2B ; FB2A ;  ML      # ( ‎שׂ‎ → ‎שׁ‎ ) HEBREW LETTER SHIN WITH SIN DOT → HEBREW LETTER SHIN WITH SHIN DOT      # 
+FB49 ; FB2A ;  ML      # ( ‎שּ‎ → ‎שׁ‎ ) HEBREW LETTER SHIN WITH DAGESH → HEBREW LETTER SHIN WITH SHIN DOT       # 
+
+FB2D ; FB2C ;  ML      # ( ‎שּׂ‎ → ‎שּׁ‎ ) HEBREW LETTER SHIN WITH DAGESH AND SIN DOT → HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT        # 
+
+FB28 ; 05EA ;  ML      # ( ‎ﬨ‎ → ‎ת‎ ) HEBREW LETTER WIDE TAV → HEBREW LETTER TAV       # 
+
+FE80 ; 0621 ;  ML      # ( ‎ﺀ‎ → ‎ء‎ ) ARABIC LETTER HAMZA ISOLATED FORM → ARABIC LETTER HAMZA  # 
+
+FE82 ; 0622 ;  ML      # ( ‎ﺂ‎ → ‎آ‎ ) ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM → ARABIC LETTER ALEF WITH MADDA ABOVE     # 
+FE81 ; 0622 ;  ML      # ( ‎ﺁ‎ → ‎آ‎ ) ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM → ARABIC LETTER ALEF WITH MADDA ABOVE  # 
+
+FB51 ; 0671 ;  ML      # ( ‎ﭑ‎ → ‎ٱ‎ ) ARABIC LETTER ALEF WASLA FINAL FORM → ARABIC LETTER ALEF WASLA   # 
+FB50 ; 0671 ;  ML      # ( ‎ﭐ‎ → ‎ٱ‎ ) ARABIC LETTER ALEF WASLA ISOLATED FORM → ARABIC LETTER ALEF WASLA        # 
+
+FE88 ; 0625 ;  ML      # ( ‎ﺈ‎ → ‎إ‎ ) ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM → ARABIC LETTER ALEF WITH HAMZA BELOW     # 
+FE87 ; 0625 ;  ML      # ( ‎ﺇ‎ → ‎إ‎ ) ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM → ARABIC LETTER ALEF WITH HAMZA BELOW  # 
+
+FE8E ; 0627 ;  ML      # ( ‎ﺎ‎ → ‎ا‎ ) ARABIC LETTER ALEF FINAL FORM → ARABIC LETTER ALEF       # 
+FE8D ; 0627 ;  ML      # ( ‎ﺍ‎ → ‎ا‎ ) ARABIC LETTER ALEF ISOLATED FORM → ARABIC LETTER ALEF    # 
+
+FD3C ; 0627 064B ;     ML      # ( ‎ﴼ‎ → ‎اً‎ ) ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM → ARABIC LETTER ALEF, ARABIC FATHATAN    # 
+FD3D ; 0627 064B ;     ML      # ( ‎ﴽ‎ → ‎اً‎ ) ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM → ARABIC LETTER ALEF, ARABIC FATHATAN # 
+
+0623 ; 0627 0674 ;     ML      # ( ‎أ‎ → ‎اٴ‎ ) ARABIC LETTER ALEF WITH HAMZA ABOVE → ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA      # →‎ٵ‎→
+FE84 ; 0627 0674 ;     ML      # ( ‎ﺄ‎ → ‎اٴ‎ ) ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM → ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA  # →‎أ‎→→‎ٵ‎→
+FE83 ; 0627 0674 ;     ML      # ( ‎ﺃ‎ → ‎اٴ‎ ) ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA       # →‎ٵ‎→
+0675 ; 0627 0674 ;     ML      # ( ‎ٵ‎ → ‎اٴ‎ ) ARABIC LETTER HIGH HAMZA ALEF → ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA    # 
+
+FDF3 ; 0627 0643 0628 0631 ;   ML      # ( ‎ﷳ‎ → ‎اكبر‎ ) ARABIC LIGATURE AKBAR ISOLATED FORM → ARABIC LETTER ALEF, ARABIC LETTER KAF, ARABIC LETTER BEH, ARABIC LETTER REH  # 
+
+FDF2 ; 0627 0644 0644 0647 ;   ML      # ( ‎ﷲ‎ → ‎الله‎ ) ARABIC LIGATURE ALLAH ISOLATED FORM → ARABIC LETTER ALEF, ARABIC LETTER LAM, ARABIC LETTER LAM, ARABIC LETTER HEH  # 
+
+FE91 ; 0628 ;  ML      # ( ‎ﺑ‎ → ‎ب‎ ) ARABIC LETTER BEH INITIAL FORM → ARABIC LETTER BEH       # 
+FE92 ; 0628 ;  ML      # ( ‎ﺒ‎ → ‎ب‎ ) ARABIC LETTER BEH MEDIAL FORM → ARABIC LETTER BEH        # 
+FE90 ; 0628 ;  ML      # ( ‎ﺐ‎ → ‎ب‎ ) ARABIC LETTER BEH FINAL FORM → ARABIC LETTER BEH # 
+FE8F ; 0628 ;  ML      # ( ‎ﺏ‎ → ‎ب‎ ) ARABIC LETTER BEH ISOLATED FORM → ARABIC LETTER BEH      # 
+0646 ; 0628 ;  ML      # ( ‎ن‎ → ‎ب‎ ) ARABIC LETTER NOON → ARABIC LETTER BEH    # →‎ﻨ‎→→‎ﺒ‎→
+FEE7 ; 0628 ;  ML      # ( ‎ﻧ‎ → ‎ب‎ ) ARABIC LETTER NOON INITIAL FORM → ARABIC LETTER BEH      # →‎ﺒ‎→
+FEE8 ; 0628 ;  ML      # ( ‎ﻨ‎ → ‎ب‎ ) ARABIC LETTER NOON MEDIAL FORM → ARABIC LETTER BEH       # →‎ﺒ‎→
+FEE6 ; 0628 ;  ML      # ( ‎ﻦ‎ → ‎ب‎ ) ARABIC LETTER NOON FINAL FORM → ARABIC LETTER BEH        # →‎ن‎→→‎ﻨ‎→→‎ﺒ‎→
+FEE5 ; 0628 ;  ML      # ( ‎ﻥ‎ → ‎ب‎ ) ARABIC LETTER NOON ISOLATED FORM → ARABIC LETTER BEH     # →‎ن‎→→‎ﻨ‎→→‎ﺒ‎→
+
+FC6D ; 0628 0628 ;     ML      # ( ‎ﱭ‎ → ‎بب‎ ) ARABIC LIGATURE BEH WITH NOON FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER BEH        # →‎بن‎→
+FC8D ; 0628 0628 ;     ML      # ( ‎ﲍ‎ → ‎بب‎ ) ARABIC LIGATURE NOON WITH NOON FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER BEH       # →‎نن‎→
+
+FC9C ; 0628 062C ;     ML      # ( ‎ﲜ‎ → ‎بج‎ ) ARABIC LIGATURE BEH WITH JEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM     # 
+FC05 ; 0628 062C ;     ML      # ( ‎ﰅ‎ → ‎بج‎ ) ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM    # 
+FC9E ; 0628 062C ;     ML      # ( ‎ﲞ‎ → ‎بج‎ ) ARABIC LIGATURE BEH WITH KHAH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM     # →‎بخ‎→→‎ﰇ‎→→‎ﰅ‎→
+FC07 ; 0628 062C ;     ML      # ( ‎ﰇ‎ → ‎بج‎ ) ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM    # →‎ﰅ‎→
+FCD2 ; 0628 062C ;     ML      # ( ‎ﳒ‎ → ‎بج‎ ) ARABIC LIGATURE NOON WITH JEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM    # →‎ﲞ‎→→‎بخ‎→→‎ﰇ‎→→‎ﰅ‎→
+FC4B ; 0628 062C ;     ML      # ( ‎ﱋ‎ → ‎بج‎ ) ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM   # →‎نج‎→→‎ﳒ‎→→‎ﲞ‎→→‎بخ‎→→‎ﰇ‎→→‎ﰅ‎→
+FCD4 ; 0628 062C ;     ML      # ( ‎ﳔ‎ → ‎بج‎ ) ARABIC LIGATURE NOON WITH KHAH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM    # →‎نخ‎→→‎ﱍ‎→→‎ﱋ‎→→‎نج‎→→‎ﳒ‎→→‎ﲞ‎→→‎بخ‎→→‎ﰇ‎→→‎ﰅ‎→
+FC4D ; 0628 062C ;     ML      # ( ‎ﱍ‎ → ‎بج‎ ) ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM   # →‎ﱋ‎→→‎نج‎→→‎ﳒ‎→→‎ﲞ‎→→‎بخ‎→→‎ﰇ‎→→‎ﰅ‎→
+
+FDB8 ; 0628 062C 062D ;        ML      # ( ‎ﶸ‎ → ‎بجح‎ ) ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER HAH      # →‎نجح‎→
+FDBD ; 0628 062C 062D ;        ML      # ( ‎ﶽ‎ → ‎بجح‎ ) ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER HAH        # →‎نجح‎→
+
+FD98 ; 0628 062C 0645 ;        ML      # ( ‎ﶘ‎ → ‎بجم‎ ) ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM    # →‎نجم‎→
+FD97 ; 0628 062C 0645 ;        ML      # ( ‎ﶗ‎ → ‎بجم‎ ) ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM      # →‎نجم‎→
+
+FD9E ; 0628 062C 0649 ;        ML      # ( ‎ﶞ‎ → ‎بجى‎ ) ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA        # →‎بخي‎→
+FD99 ; 0628 062C 0649 ;        ML      # ( ‎ﶙ‎ → ‎بجى‎ ) ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎نجى‎→
+FDC7 ; 0628 062C 0649 ;        ML      # ( ‎ﷇ‎ → ‎بجى‎ ) ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA       # →‎نجي‎→
+
+FC9D ; 0628 062D ;     ML      # ( ‎ﲝ‎ → ‎بح‎ ) ARABIC LIGATURE BEH WITH HAH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH       # 
+FC06 ; 0628 062D ;     ML      # ( ‎ﰆ‎ → ‎بح‎ ) ARABIC LIGATURE BEH WITH HAH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER HAH      # 
+FCD3 ; 0628 062D ;     ML      # ( ‎ﳓ‎ → ‎بح‎ ) ARABIC LIGATURE NOON WITH HAH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH      # →‎نح‎→
+FC4C ; 0628 062D ;     ML      # ( ‎ﱌ‎ → ‎بح‎ ) ARABIC LIGATURE NOON WITH HAH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER HAH     # →‎نح‎→
+
+FD95 ; 0628 062D 0645 ;        ML      # ( ‎ﶕ‎ → ‎بحم‎ ) ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH, ARABIC LETTER MEEM      # →‎نحم‎→
+
+FDC2 ; 0628 062D 0649 ;        ML      # ( ‎ﷂ‎ → ‎بحى‎ ) ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA  # →‎بحي‎→
+FD96 ; 0628 062D 0649 ;        ML      # ( ‎ﶖ‎ → ‎بحى‎ ) ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA        # →‎نحى‎→
+FDB3 ; 0628 062D 0649 ;        ML      # ( ‎ﶳ‎ → ‎بحى‎ ) ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA # →‎نحي‎→
+
+FC6A ; 0628 0631 ;     ML      # ( ‎ﱪ‎ → ‎بر‎ ) ARABIC LIGATURE BEH WITH REH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER REH # 
+FC8A ; 0628 0631 ;     ML      # ( ‎ﲊ‎ → ‎بر‎ ) ARABIC LIGATURE NOON WITH REH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER REH        # →‎نر‎→
+
+FC6B ; 0628 0632 ;     ML      # ( ‎ﱫ‎ → ‎بز‎ ) ARABIC LIGATURE BEH WITH ZAIN FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ZAIN       # 
+FC8B ; 0628 0632 ;     ML      # ( ‎ﲋ‎ → ‎بز‎ ) ARABIC LIGATURE NOON WITH ZAIN FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ZAIN      # →‎نز‎→
+
+FC9F ; 0628 0645 ;     ML      # ( ‎ﲟ‎ → ‎بم‎ ) ARABIC LIGATURE BEH WITH MEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM     # 
+FCE1 ; 0628 0645 ;     ML      # ( ‎ﳡ‎ → ‎بم‎ ) ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM      # 
+FC6C ; 0628 0645 ;     ML      # ( ‎ﱬ‎ → ‎بم‎ ) ARABIC LIGATURE BEH WITH MEEM FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM       # 
+FC08 ; 0628 0645 ;     ML      # ( ‎ﰈ‎ → ‎بم‎ ) ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM    # 
+FCD5 ; 0628 0645 ;     ML      # ( ‎ﳕ‎ → ‎بم‎ ) ARABIC LIGATURE NOON WITH MEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM    # →‎نم‎→
+FCEE ; 0628 0645 ;     ML      # ( ‎ﳮ‎ → ‎بم‎ ) ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM     # →‎نم‎→
+FC8C ; 0628 0645 ;     ML      # ( ‎ﲌ‎ → ‎بم‎ ) ARABIC LIGATURE NOON WITH MEEM FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM      # →‎نم‎→
+FC4E ; 0628 0645 ;     ML      # ( ‎ﱎ‎ → ‎بم‎ ) ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM   # →‎نم‎→
+
+FD9B ; 0628 0645 0649 ;        ML      # ( ‎ﶛ‎ → ‎بمى‎ ) ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA      # →‎نمى‎→
+FD9A ; 0628 0645 0649 ;        ML      # ( ‎ﶚ‎ → ‎بمى‎ ) ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA       # →‎نمي‎→
+
+FCA0 ; 0628 0647 ;     ML      # ( ‎ﲠ‎ → ‎به‎ ) ARABIC LIGATURE BEH WITH HEH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HEH       # 
+FCE2 ; 0628 0647 ;     ML      # ( ‎ﳢ‎ → ‎به‎ ) ARABIC LIGATURE BEH WITH HEH MEDIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HEH        # 
+FCD6 ; 0628 0647 ;     ML      # ( ‎ﳖ‎ → ‎به‎ ) ARABIC LIGATURE NOON WITH HEH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HEH      # →‎نه‎→
+FCEF ; 0628 0647 ;     ML      # ( ‎ﳯ‎ → ‎به‎ ) ARABIC LIGATURE NOON WITH HEH MEDIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HEH       # →‎نه‎→
+
+FC6E ; 0628 0649 ;     ML      # ( ‎ﱮ‎ → ‎بى‎ ) ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA       # 
+FC09 ; 0628 0649 ;     ML      # ( ‎ﰉ‎ → ‎بى‎ ) ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA    # 
+FC6F ; 0628 0649 ;     ML      # ( ‎ﱯ‎ → ‎بى‎ ) ARABIC LIGATURE BEH WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA        # →‎بي‎→
+FC0A ; 0628 0649 ;     ML      # ( ‎ﰊ‎ → ‎بى‎ ) ARABIC LIGATURE BEH WITH YEH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA     # →‎بي‎→
+FC8E ; 0628 0649 ;     ML      # ( ‎ﲎ‎ → ‎بى‎ ) ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA      # →‎نى‎→
+FC4F ; 0628 0649 ;     ML      # ( ‎ﱏ‎ → ‎بى‎ ) ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA   # →‎نى‎→
+FC8F ; 0628 0649 ;     ML      # ( ‎ﲏ‎ → ‎بى‎ ) ARABIC LIGATURE NOON WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA       # →‎ني‎→
+FC50 ; 0628 0649 ;     ML      # ( ‎ﱐ‎ → ‎بى‎ ) ARABIC LIGATURE NOON WITH YEH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA    # →‎ني‎→
+
+FB58 ; 067E ;  ML      # ( ‎ﭘ‎ → ‎پ‎ ) ARABIC LETTER PEH INITIAL FORM → ARABIC LETTER PEH       # 
+FB59 ; 067E ;  ML      # ( ‎ﭙ‎ → ‎پ‎ ) ARABIC LETTER PEH MEDIAL FORM → ARABIC LETTER PEH        # 
+FB57 ; 067E ;  ML      # ( ‎ﭗ‎ → ‎پ‎ ) ARABIC LETTER PEH FINAL FORM → ARABIC LETTER PEH # 
+FB56 ; 067E ;  ML      # ( ‎ﭖ‎ → ‎پ‎ ) ARABIC LETTER PEH ISOLATED FORM → ARABIC LETTER PEH      # 
+
+FE97 ; 062A ;  ML      # ( ‎ﺗ‎ → ‎ت‎ ) ARABIC LETTER TEH INITIAL FORM → ARABIC LETTER TEH       # 
+FE98 ; 062A ;  ML      # ( ‎ﺘ‎ → ‎ت‎ ) ARABIC LETTER TEH MEDIAL FORM → ARABIC LETTER TEH        # 
+FE96 ; 062A ;  ML      # ( ‎ﺖ‎ → ‎ت‎ ) ARABIC LETTER TEH FINAL FORM → ARABIC LETTER TEH # 
+FE95 ; 062A ;  ML      # ( ‎ﺕ‎ → ‎ت‎ ) ARABIC LETTER TEH ISOLATED FORM → ARABIC LETTER TEH      # 
+
+FC73 ; 062A 0628 ;     ML      # ( ‎ﱳ‎ → ‎تب‎ ) ARABIC LIGATURE TEH WITH NOON FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER BEH        # →‎تن‎→
+
+FCA1 ; 062A 062C ;     ML      # ( ‎ﲡ‎ → ‎تج‎ ) ARABIC LIGATURE TEH WITH JEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM     # 
+FC0B ; 062A 062C ;     ML      # ( ‎ﰋ‎ → ‎تج‎ ) ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM    # 
+FCA3 ; 062A 062C ;     ML      # ( ‎ﲣ‎ → ‎تج‎ ) ARABIC LIGATURE TEH WITH KHAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM     # →‎تخ‎→→‎ﰍ‎→→‎ﰋ‎→
+FC0D ; 062A 062C ;     ML      # ( ‎ﰍ‎ → ‎تج‎ ) ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM    # →‎ﰋ‎→
+FCDA ; 062A 062C ;     ML      # ( ‎ﳚ‎ → ‎تج‎ ) ARABIC LIGATURE YEH WITH JEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM     # →‎ﲡ‎→
+FC55 ; 062A 062C ;     ML      # ( ‎ﱕ‎ → ‎تج‎ ) ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM    # →‎يج‎→→‎ﳚ‎→→‎ﲡ‎→
+FCDC ; 062A 062C ;     ML      # ( ‎ﳜ‎ → ‎تج‎ ) ARABIC LIGATURE YEH WITH KHAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM     # →‎ﲣ‎→→‎تخ‎→→‎ﰍ‎→→‎ﰋ‎→
+FC57 ; 062A 062C ;     ML      # ( ‎ﱗ‎ → ‎تج‎ ) ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM    # →‎ﱕ‎→→‎يج‎→→‎ﳚ‎→→‎ﲡ‎→
+
+FD50 ; 062A 062C 0645 ;        ML      # ( ‎ﵐ‎ → ‎تجم‎ ) ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # 
+FD54 ; 062A 062C 0645 ;        ML      # ( ‎ﵔ‎ → ‎تجم‎ ) ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # →‎تخم‎→
+
+FDA0 ; 062A 062C 0649 ;        ML      # ( ‎ﶠ‎ → ‎تجى‎ ) ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA       # 
+FD9F ; 062A 062C 0649 ;        ML      # ( ‎ﶟ‎ → ‎تجى‎ ) ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA        # →‎تجي‎→
+FDA2 ; 062A 062C 0649 ;        ML      # ( ‎ﶢ‎ → ‎تجى‎ ) ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA       # →‎تخى‎→
+FDA1 ; 062A 062C 0649 ;        ML      # ( ‎ﶡ‎ → ‎تجى‎ ) ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA        # →‎تخي‎→
+
+FCA2 ; 062A 062D ;     ML      # ( ‎ﲢ‎ → ‎تح‎ ) ARABIC LIGATURE TEH WITH HAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HAH       # 
+FC0C ; 062A 062D ;     ML      # ( ‎ﰌ‎ → ‎تح‎ ) ARABIC LIGATURE TEH WITH HAH ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER HAH      # 
+FCDB ; 062A 062D ;     ML      # ( ‎ﳛ‎ → ‎تح‎ ) ARABIC LIGATURE YEH WITH HAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HAH       # →‎ﲢ‎→
+FC56 ; 062A 062D ;     ML      # ( ‎ﱖ‎ → ‎تح‎ ) ARABIC LIGATURE YEH WITH HAH ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER HAH      # →‎يح‎→→‎ﳛ‎→→‎ﲢ‎→
+
+FD52 ; 062A 062D 062C ;        ML      # ( ‎ﵒ‎ → ‎تحج‎ ) ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HAH, ARABIC LETTER JEEM       # 
+FD51 ; 062A 062D 062C ;        ML      # ( ‎ﵑ‎ → ‎تحج‎ ) ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER HAH, ARABIC LETTER JEEM # 
+
+FD53 ; 062A 062D 0645 ;        ML      # ( ‎ﵓ‎ → ‎تحم‎ ) ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HAH, ARABIC LETTER MEEM       # 
+
+FC70 ; 062A 0631 ;     ML      # ( ‎ﱰ‎ → ‎تر‎ ) ARABIC LIGATURE TEH WITH REH FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER REH # 
+
+FC71 ; 062A 0632 ;     ML      # ( ‎ﱱ‎ → ‎تز‎ ) ARABIC LIGATURE TEH WITH ZAIN FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER ZAIN       # 
+
+FCA4 ; 062A 0645 ;     ML      # ( ‎ﲤ‎ → ‎تم‎ ) ARABIC LIGATURE TEH WITH MEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM     # 
+FCE3 ; 062A 0645 ;     ML      # ( ‎ﳣ‎ → ‎تم‎ ) ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM      # 
+FC72 ; 062A 0645 ;     ML      # ( ‎ﱲ‎ → ‎تم‎ ) ARABIC LIGATURE TEH WITH MEEM FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM       # 
+FC0E ; 062A 0645 ;     ML      # ( ‎ﰎ‎ → ‎تم‎ ) ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM    # 
+
+FD55 ; 062A 0645 062C ;        ML      # ( ‎ﵕ‎ → ‎تمج‎ ) ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM, ARABIC LETTER JEEM     # 
+FD57 ; 062A 0645 062C ;        ML      # ( ‎ﵗ‎ → ‎تمج‎ ) ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM, ARABIC LETTER JEEM     # →‎تمخ‎→
+
+FD56 ; 062A 0645 062D ;        ML      # ( ‎ﵖ‎ → ‎تمح‎ ) ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+
+FDA4 ; 062A 0645 0649 ;        ML      # ( ‎ﶤ‎ → ‎تمى‎ ) ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA       # 
+FDA3 ; 062A 0645 0649 ;        ML      # ( ‎ﶣ‎ → ‎تمى‎ ) ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎تمي‎→
+
+FCA5 ; 062A 0647 ;     ML      # ( ‎ﲥ‎ → ‎ته‎ ) ARABIC LIGATURE TEH WITH HEH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HEH       # 
+FCE4 ; 062A 0647 ;     ML      # ( ‎ﳤ‎ → ‎ته‎ ) ARABIC LIGATURE TEH WITH HEH MEDIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HEH        # 
+
+FC74 ; 062A 0649 ;     ML      # ( ‎ﱴ‎ → ‎تى‎ ) ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER ALEF MAKSURA       # 
+FC0F ; 062A 0649 ;     ML      # ( ‎ﰏ‎ → ‎تى‎ ) ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER ALEF MAKSURA    # 
+FC75 ; 062A 0649 ;     ML      # ( ‎ﱵ‎ → ‎تى‎ ) ARABIC LIGATURE TEH WITH YEH FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER ALEF MAKSURA        # →‎تي‎→
+FC10 ; 062A 0649 ;     ML      # ( ‎ﰐ‎ → ‎تى‎ ) ARABIC LIGATURE TEH WITH YEH ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER ALEF MAKSURA     # →‎تي‎→
+
+FE9B ; 062B ;  ML      # ( ‎ﺛ‎ → ‎ث‎ ) ARABIC LETTER THEH INITIAL FORM → ARABIC LETTER THEH     # 
+FE9C ; 062B ;  ML      # ( ‎ﺜ‎ → ‎ث‎ ) ARABIC LETTER THEH MEDIAL FORM → ARABIC LETTER THEH      # 
+FE9A ; 062B ;  ML      # ( ‎ﺚ‎ → ‎ث‎ ) ARABIC LETTER THEH FINAL FORM → ARABIC LETTER THEH       # 
+FE99 ; 062B ;  ML      # ( ‎ﺙ‎ → ‎ث‎ ) ARABIC LETTER THEH ISOLATED FORM → ARABIC LETTER THEH    # 
+
+FC79 ; 062B 0628 ;     ML      # ( ‎ﱹ‎ → ‎ثب‎ ) ARABIC LIGATURE THEH WITH NOON FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER BEH      # →‎ثن‎→
+
+FC11 ; 062B 062C ;     ML      # ( ‎ﰑ‎ → ‎ثج‎ ) ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM → ARABIC LETTER THEH, ARABIC LETTER JEEM  # 
+
+FC76 ; 062B 0631 ;     ML      # ( ‎ﱶ‎ → ‎ثر‎ ) ARABIC LIGATURE THEH WITH REH FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER REH       # 
+
+FC77 ; 062B 0632 ;     ML      # ( ‎ﱷ‎ → ‎ثز‎ ) ARABIC LIGATURE THEH WITH ZAIN FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER ZAIN     # 
+
+FCA6 ; 062B 0645 ;     ML      # ( ‎ﲦ‎ → ‎ثم‎ ) ARABIC LIGATURE THEH WITH MEEM INITIAL FORM → ARABIC LETTER THEH, ARABIC LETTER MEEM   # 
+FCE5 ; 062B 0645 ;     ML      # ( ‎ﳥ‎ → ‎ثم‎ ) ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM → ARABIC LETTER THEH, ARABIC LETTER MEEM    # 
+FC78 ; 062B 0645 ;     ML      # ( ‎ﱸ‎ → ‎ثم‎ ) ARABIC LIGATURE THEH WITH MEEM FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER MEEM     # 
+FC12 ; 062B 0645 ;     ML      # ( ‎ﰒ‎ → ‎ثم‎ ) ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM → ARABIC LETTER THEH, ARABIC LETTER MEEM  # 
+
+FCE6 ; 062B 0647 ;     ML      # ( ‎ﳦ‎ → ‎ثه‎ ) ARABIC LIGATURE THEH WITH HEH MEDIAL FORM → ARABIC LETTER THEH, ARABIC LETTER HEH      # 
+
+FC7A ; 062B 0649 ;     ML      # ( ‎ﱺ‎ → ‎ثى‎ ) ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER ALEF MAKSURA     # 
+FC13 ; 062B 0649 ;     ML      # ( ‎ﰓ‎ → ‎ثى‎ ) ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER THEH, ARABIC LETTER ALEF MAKSURA  # 
+FC7B ; 062B 0649 ;     ML      # ( ‎ﱻ‎ → ‎ثى‎ ) ARABIC LIGATURE THEH WITH YEH FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER ALEF MAKSURA      # →‎ثي‎→
+FC14 ; 062B 0649 ;     ML      # ( ‎ﰔ‎ → ‎ثى‎ ) ARABIC LIGATURE THEH WITH YEH ISOLATED FORM → ARABIC LETTER THEH, ARABIC LETTER ALEF MAKSURA   # →‎ثي‎→
+
+FB68 ; 0679 ;  ML      # ( ‎ﭨ‎ → ‎ٹ‎ ) ARABIC LETTER TTEH INITIAL FORM → ARABIC LETTER TTEH     # 
+FB69 ; 0679 ;  ML      # ( ‎ﭩ‎ → ‎ٹ‎ ) ARABIC LETTER TTEH MEDIAL FORM → ARABIC LETTER TTEH      # 
+FB67 ; 0679 ;  ML      # ( ‎ﭧ‎ → ‎ٹ‎ ) ARABIC LETTER TTEH FINAL FORM → ARABIC LETTER TTEH       # 
+FB66 ; 0679 ;  ML      # ( ‎ﭦ‎ → ‎ٹ‎ ) ARABIC LETTER TTEH ISOLATED FORM → ARABIC LETTER TTEH    # 
+06BB ; 0679 ;  ML      # ( ‎ڻ‎ → ‎ٹ‎ ) ARABIC LETTER RNOON → ARABIC LETTER TTEH  # →‎ﮢ‎→→‎ﭩ‎→
+FBA2 ; 0679 ;  ML      # ( ‎ﮢ‎ → ‎ٹ‎ ) ARABIC LETTER RNOON INITIAL FORM → ARABIC LETTER TTEH    # →‎ﭩ‎→
+FBA3 ; 0679 ;  ML      # ( ‎ﮣ‎ → ‎ٹ‎ ) ARABIC LETTER RNOON MEDIAL FORM → ARABIC LETTER TTEH     # →‎ﭩ‎→
+FBA1 ; 0679 ;  ML      # ( ‎ﮡ‎ → ‎ٹ‎ ) ARABIC LETTER RNOON FINAL FORM → ARABIC LETTER TTEH      # →‎ڻ‎→→‎ﮢ‎→→‎ﭩ‎→
+FBA0 ; 0679 ;  ML      # ( ‎ﮠ‎ → ‎ٹ‎ ) ARABIC LETTER RNOON ISOLATED FORM → ARABIC LETTER TTEH   # →‎ڻ‎→→‎ﮢ‎→→‎ﭩ‎→
+
+067B ; 067A ;  ML      # ( ‎ٻ‎ → ‎ٺ‎ ) ARABIC LETTER BEEH → ARABIC LETTER TTEHEH # →‎ﭞ‎→
+FB54 ; 067A ;  ML      # ( ‎ﭔ‎ → ‎ٺ‎ ) ARABIC LETTER BEEH INITIAL FORM → ARABIC LETTER TTEHEH   # →‎ﭡ‎→
+FB55 ; 067A ;  ML      # ( ‎ﭕ‎ → ‎ٺ‎ ) ARABIC LETTER BEEH MEDIAL FORM → ARABIC LETTER TTEHEH    # →‎ﭡ‎→
+FB53 ; 067A ;  ML      # ( ‎ﭓ‎ → ‎ٺ‎ ) ARABIC LETTER BEEH FINAL FORM → ARABIC LETTER TTEHEH     # 
+FB52 ; 067A ;  ML      # ( ‎ﭒ‎ → ‎ٺ‎ ) ARABIC LETTER BEEH ISOLATED FORM → ARABIC LETTER TTEHEH  # 
+FB60 ; 067A ;  ML      # ( ‎ﭠ‎ → ‎ٺ‎ ) ARABIC LETTER TTEHEH INITIAL FORM → ARABIC LETTER TTEHEH # 
+FB61 ; 067A ;  ML      # ( ‎ﭡ‎ → ‎ٺ‎ ) ARABIC LETTER TTEHEH MEDIAL FORM → ARABIC LETTER TTEHEH  # 
+FB5F ; 067A ;  ML      # ( ‎ﭟ‎ → ‎ٺ‎ ) ARABIC LETTER TTEHEH FINAL FORM → ARABIC LETTER TTEHEH   # 
+FB5E ; 067A ;  ML      # ( ‎ﭞ‎ → ‎ٺ‎ ) ARABIC LETTER TTEHEH ISOLATED FORM → ARABIC LETTER TTEHEH        # 
+06D0 ; 067A ;  ML      # ( ‎ې‎ → ‎ٺ‎ ) ARABIC LETTER E → ARABIC LETTER TTEHEH    # →‎ﯦ‎→→‎ﭡ‎→
+FBE6 ; 067A ;  ML      # ( ‎ﯦ‎ → ‎ٺ‎ ) ARABIC LETTER E INITIAL FORM → ARABIC LETTER TTEHEH      # →‎ﭡ‎→
+FBE7 ; 067A ;  ML      # ( ‎ﯧ‎ → ‎ٺ‎ ) ARABIC LETTER E MEDIAL FORM → ARABIC LETTER TTEHEH       # →‎ﭡ‎→
+FBE5 ; 067A ;  ML      # ( ‎ﯥ‎ → ‎ٺ‎ ) ARABIC LETTER E FINAL FORM → ARABIC LETTER TTEHEH        # →‎ې‎→→‎ﯦ‎→→‎ﭡ‎→
+FBE4 ; 067A ;  ML      # ( ‎ﯤ‎ → ‎ٺ‎ ) ARABIC LETTER E ISOLATED FORM → ARABIC LETTER TTEHEH     # →‎ې‎→→‎ﯦ‎→→‎ﭡ‎→
+
+0680 ; 067F ;  ML      # ( ‎ڀ‎ → ‎ٿ‎ ) ARABIC LETTER BEHEH → ARABIC LETTER TEHEH # →‎ﭚ‎→
+FB5C ; 067F ;  ML      # ( ‎ﭜ‎ → ‎ٿ‎ ) ARABIC LETTER BEHEH INITIAL FORM → ARABIC LETTER TEHEH   # →‎ﭥ‎→
+FB5D ; 067F ;  ML      # ( ‎ﭝ‎ → ‎ٿ‎ ) ARABIC LETTER BEHEH MEDIAL FORM → ARABIC LETTER TEHEH    # →‎ﭥ‎→
+FB5B ; 067F ;  ML      # ( ‎ﭛ‎ → ‎ٿ‎ ) ARABIC LETTER BEHEH FINAL FORM → ARABIC LETTER TEHEH     # 
+FB5A ; 067F ;  ML      # ( ‎ﭚ‎ → ‎ٿ‎ ) ARABIC LETTER BEHEH ISOLATED FORM → ARABIC LETTER TEHEH  # 
+FB64 ; 067F ;  ML      # ( ‎ﭤ‎ → ‎ٿ‎ ) ARABIC LETTER TEHEH INITIAL FORM → ARABIC LETTER TEHEH   # 
+FB65 ; 067F ;  ML      # ( ‎ﭥ‎ → ‎ٿ‎ ) ARABIC LETTER TEHEH MEDIAL FORM → ARABIC LETTER TEHEH    # 
+FB63 ; 067F ;  ML      # ( ‎ﭣ‎ → ‎ٿ‎ ) ARABIC LETTER TEHEH FINAL FORM → ARABIC LETTER TEHEH     # 
+FB62 ; 067F ;  ML      # ( ‎ﭢ‎ → ‎ٿ‎ ) ARABIC LETTER TEHEH ISOLATED FORM → ARABIC LETTER TEHEH  # 
+
+FE9F ; 062C ;  ML      # ( ‎ﺟ‎ → ‎ج‎ ) ARABIC LETTER JEEM INITIAL FORM → ARABIC LETTER JEEM     # 
+FEA0 ; 062C ;  ML      # ( ‎ﺠ‎ → ‎ج‎ ) ARABIC LETTER JEEM MEDIAL FORM → ARABIC LETTER JEEM      # 
+FE9E ; 062C ;  ML      # ( ‎ﺞ‎ → ‎ج‎ ) ARABIC LETTER JEEM FINAL FORM → ARABIC LETTER JEEM       # 
+FE9D ; 062C ;  ML      # ( ‎ﺝ‎ → ‎ج‎ ) ARABIC LETTER JEEM ISOLATED FORM → ARABIC LETTER JEEM    # 
+062E ; 062C ;  ML      # ( ‎خ‎ → ‎ج‎ ) ARABIC LETTER KHAH → ARABIC LETTER JEEM   # 
+FEA7 ; 062C ;  ML      # ( ‎ﺧ‎ → ‎ج‎ ) ARABIC LETTER KHAH INITIAL FORM → ARABIC LETTER JEEM     # →‎خ‎→
+FEA8 ; 062C ;  ML      # ( ‎ﺨ‎ → ‎ج‎ ) ARABIC LETTER KHAH MEDIAL FORM → ARABIC LETTER JEEM      # →‎خ‎→
+FEA6 ; 062C ;  ML      # ( ‎ﺦ‎ → ‎ج‎ ) ARABIC LETTER KHAH FINAL FORM → ARABIC LETTER JEEM       # →‎خ‎→
+FEA5 ; 062C ;  ML      # ( ‎ﺥ‎ → ‎ج‎ ) ARABIC LETTER KHAH ISOLATED FORM → ARABIC LETTER JEEM    # 
+
+FCAB ; 062C 062C ;     ML      # ( ‎ﲫ‎ → ‎جج‎ ) ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM → ARABIC LETTER JEEM, ARABIC LETTER JEEM   # →‎خج‎→
+FC19 ; 062C 062C ;     ML      # ( ‎ﰙ‎ → ‎جج‎ ) ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER JEEM  # →‎خج‎→
+
+FCA7 ; 062C 062D ;     ML      # ( ‎ﲧ‎ → ‎جح‎ ) ARABIC LIGATURE JEEM WITH HAH INITIAL FORM → ARABIC LETTER JEEM, ARABIC LETTER HAH     # 
+FC15 ; 062C 062D ;     ML      # ( ‎ﰕ‎ → ‎جح‎ ) ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER HAH    # 
+FC1A ; 062C 062D ;     ML      # ( ‎ﰚ‎ → ‎جح‎ ) ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER HAH    # →‎ﰕ‎→
+
+FDA6 ; 062C 062D 0649 ;        ML      # ( ‎ﶦ‎ → ‎جحى‎ ) ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA       # 
+FDBE ; 062C 062D 0649 ;        ML      # ( ‎ﶾ‎ → ‎جحى‎ ) ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA        # →‎جحي‎→
+
+FDFB ; 062C 0644 0020 062C 0644 0627 0644 0647 ;       ML      #* ( ‎ﷻ‎ → ‎جل جلاله‎ ) ARABIC LIGATURE JALLAJALALOUHOU → ARABIC LETTER JEEM, ARABIC LETTER LAM, SPACE, ARABIC LETTER JEEM, ARABIC LETTER LAM, ARABIC LETTER ALEF, ARABIC LETTER LAM, ARABIC LETTER HEH    # 
+
+FCA8 ; 062C 0645 ;     ML      # ( ‎ﲨ‎ → ‎جم‎ ) ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM   # 
+FC16 ; 062C 0645 ;     ML      # ( ‎ﰖ‎ → ‎جم‎ ) ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM  # 
+FCAC ; 062C 0645 ;     ML      # ( ‎ﲬ‎ → ‎جم‎ ) ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM   # →‎ﲨ‎→
+FC1B ; 062C 0645 ;     ML      # ( ‎ﰛ‎ → ‎جم‎ ) ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM  # →‎ﰖ‎→
+
+FD59 ; 062C 0645 062D ;        ML      # ( ‎ﵙ‎ → ‎جمح‎ ) ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM, ARABIC LETTER HAH     # 
+FD58 ; 062C 0645 062D ;        ML      # ( ‎ﵘ‎ → ‎جمح‎ ) ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+
+FDA7 ; 062C 0645 0649 ;        ML      # ( ‎ﶧ‎ → ‎جمى‎ ) ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA     # 
+FDA5 ; 062C 0645 0649 ;        ML      # ( ‎ﶥ‎ → ‎جمى‎ ) ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA      # →‎جمي‎→
+
+FD1D ; 062C 0649 ;     ML      # ( ‎ﴝ‎ → ‎جى‎ ) ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA     # 
+FD01 ; 062C 0649 ;     ML      # ( ‎ﴁ‎ → ‎جى‎ ) ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA  # 
+FD1E ; 062C 0649 ;     ML      # ( ‎ﴞ‎ → ‎جى‎ ) ARABIC LIGATURE JEEM WITH YEH FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎جي‎→
+FD02 ; 062C 0649 ;     ML      # ( ‎ﴂ‎ → ‎جى‎ ) ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA   # →‎جي‎→
+FD1F ; 062C 0649 ;     ML      # ( ‎ﴟ‎ → ‎جى‎ ) ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA     # →‎خى‎→→‎ﴃ‎→→‎ﴁ‎→
+FD03 ; 062C 0649 ;     ML      # ( ‎ﴃ‎ → ‎جى‎ ) ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA  # →‎ﴁ‎→
+FD20 ; 062C 0649 ;     ML      # ( ‎ﴠ‎ → ‎جى‎ ) ARABIC LIGATURE KHAH WITH YEH FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎خي‎→→‎ﴄ‎→→‎ﴂ‎→→‎جي‎→
+FD04 ; 062C 0649 ;     ML      # ( ‎ﴄ‎ → ‎جى‎ ) ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA   # →‎ﴂ‎→→‎جي‎→
+
+FB78 ; 0683 ;  ML      # ( ‎ﭸ‎ → ‎ڃ‎ ) ARABIC LETTER NYEH INITIAL FORM → ARABIC LETTER NYEH     # 
+FB79 ; 0683 ;  ML      # ( ‎ﭹ‎ → ‎ڃ‎ ) ARABIC LETTER NYEH MEDIAL FORM → ARABIC LETTER NYEH      # 
+FB77 ; 0683 ;  ML      # ( ‎ﭷ‎ → ‎ڃ‎ ) ARABIC LETTER NYEH FINAL FORM → ARABIC LETTER NYEH       # 
+FB76 ; 0683 ;  ML      # ( ‎ﭶ‎ → ‎ڃ‎ ) ARABIC LETTER NYEH ISOLATED FORM → ARABIC LETTER NYEH    # 
+
+FB7C ; 0686 ;  ML      # ( ‎ﭼ‎ → ‎چ‎ ) ARABIC LETTER TCHEH INITIAL FORM → ARABIC LETTER TCHEH   # 
+FB7D ; 0686 ;  ML      # ( ‎ﭽ‎ → ‎چ‎ ) ARABIC LETTER TCHEH MEDIAL FORM → ARABIC LETTER TCHEH    # 
+FB7B ; 0686 ;  ML      # ( ‎ﭻ‎ → ‎چ‎ ) ARABIC LETTER TCHEH FINAL FORM → ARABIC LETTER TCHEH     # 
+FB7A ; 0686 ;  ML      # ( ‎ﭺ‎ → ‎چ‎ ) ARABIC LETTER TCHEH ISOLATED FORM → ARABIC LETTER TCHEH  # 
+
+FB80 ; 0687 ;  ML      # ( ‎ﮀ‎ → ‎ڇ‎ ) ARABIC LETTER TCHEHEH INITIAL FORM → ARABIC LETTER TCHEHEH       # 
+FB81 ; 0687 ;  ML      # ( ‎ﮁ‎ → ‎ڇ‎ ) ARABIC LETTER TCHEHEH MEDIAL FORM → ARABIC LETTER TCHEHEH        # 
+FB7F ; 0687 ;  ML      # ( ‎ﭿ‎ → ‎ڇ‎ ) ARABIC LETTER TCHEHEH FINAL FORM → ARABIC LETTER TCHEHEH # 
+FB7E ; 0687 ;  ML      # ( ‎ﭾ‎ → ‎ڇ‎ ) ARABIC LETTER TCHEHEH ISOLATED FORM → ARABIC LETTER TCHEHEH      # 
+
+FEA3 ; 062D ;  ML      # ( ‎ﺣ‎ → ‎ح‎ ) ARABIC LETTER HAH INITIAL FORM → ARABIC LETTER HAH       # 
+FEA4 ; 062D ;  ML      # ( ‎ﺤ‎ → ‎ح‎ ) ARABIC LETTER HAH MEDIAL FORM → ARABIC LETTER HAH        # 
+FEA2 ; 062D ;  ML      # ( ‎ﺢ‎ → ‎ح‎ ) ARABIC LETTER HAH FINAL FORM → ARABIC LETTER HAH # 
+FEA1 ; 062D ;  ML      # ( ‎ﺡ‎ → ‎ح‎ ) ARABIC LETTER HAH ISOLATED FORM → ARABIC LETTER HAH      # 
+
+FCA9 ; 062D 062C ;     ML      # ( ‎ﲩ‎ → ‎حج‎ ) ARABIC LIGATURE HAH WITH JEEM INITIAL FORM → ARABIC LETTER HAH, ARABIC LETTER JEEM     # 
+FC17 ; 062D 062C ;     ML      # ( ‎ﰗ‎ → ‎حج‎ ) ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM → ARABIC LETTER HAH, ARABIC LETTER JEEM    # 
+
+FDBF ; 062D 062C 0649 ;        ML      # ( ‎ﶿ‎ → ‎حجى‎ ) ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER HAH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA        # →‎حجي‎→
+
+FCAA ; 062D 0645 ;     ML      # ( ‎ﲪ‎ → ‎حم‎ ) ARABIC LIGATURE HAH WITH MEEM INITIAL FORM → ARABIC LETTER HAH, ARABIC LETTER MEEM     # 
+FC18 ; 062D 0645 ;     ML      # ( ‎ﰘ‎ → ‎حم‎ ) ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM → ARABIC LETTER HAH, ARABIC LETTER MEEM    # 
+
+FD5B ; 062D 0645 0649 ;        ML      # ( ‎ﵛ‎ → ‎حمى‎ ) ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER HAH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA       # 
+FD5A ; 062D 0645 0649 ;        ML      # ( ‎ﵚ‎ → ‎حمى‎ ) ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER HAH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎حمي‎→
+
+FD1B ; 062D 0649 ;     ML      # ( ‎ﴛ‎ → ‎حى‎ ) ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA       # 
+FCFF ; 062D 0649 ;     ML      # ( ‎ﳿ‎ → ‎حى‎ ) ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA    # 
+FD1C ; 062D 0649 ;     ML      # ( ‎ﴜ‎ → ‎حى‎ ) ARABIC LIGATURE HAH WITH YEH FINAL FORM → ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA        # →‎حي‎→
+FD00 ; 062D 0649 ;     ML      # ( ‎ﴀ‎ → ‎حى‎ ) ARABIC LIGATURE HAH WITH YEH ISOLATED FORM → ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA     # →‎حي‎→
+
+0684 ; 0682 ;  ML      # ( ‎ڄ‎ → ‎ڂ‎ ) ARABIC LETTER DYEH → ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE       # 
+FB74 ; 0682 ;  ML      # ( ‎ﭴ‎ → ‎ڂ‎ ) ARABIC LETTER DYEH INITIAL FORM → ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE # →‎ڄ‎→
+FB75 ; 0682 ;  ML      # ( ‎ﭵ‎ → ‎ڂ‎ ) ARABIC LETTER DYEH MEDIAL FORM → ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE  # →‎ڄ‎→
+FB73 ; 0682 ;  ML      # ( ‎ﭳ‎ → ‎ڂ‎ ) ARABIC LETTER DYEH FINAL FORM → ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE   # →‎ڄ‎→
+FB72 ; 0682 ;  ML      # ( ‎ﭲ‎ → ‎ڂ‎ ) ARABIC LETTER DYEH ISOLATED FORM → ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE        # 
+
+FEAA ; 062F ;  ML      # ( ‎ﺪ‎ → ‎د‎ ) ARABIC LETTER DAL FINAL FORM → ARABIC LETTER DAL # 
+FEA9 ; 062F ;  ML      # ( ‎ﺩ‎ → ‎د‎ ) ARABIC LETTER DAL ISOLATED FORM → ARABIC LETTER DAL      # 
+
+FEAC ; 0630 ;  ML      # ( ‎ﺬ‎ → ‎ذ‎ ) ARABIC LETTER THAL FINAL FORM → ARABIC LETTER THAL       # 
+FEAB ; 0630 ;  ML      # ( ‎ﺫ‎ → ‎ذ‎ ) ARABIC LETTER THAL ISOLATED FORM → ARABIC LETTER THAL    # 
+
+FC5B ; 0630 0670 ;     ML      # ( ‎ﱛ‎ → ‎ذٰ‎ ) ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM → ARABIC LETTER THAL, ARABIC LETTER SUPERSCRIPT ALEF  # 
+
+FB89 ; 0688 ;  ML      # ( ‎ﮉ‎ → ‎ڈ‎ ) ARABIC LETTER DDAL FINAL FORM → ARABIC LETTER DDAL       # 
+FB88 ; 0688 ;  ML      # ( ‎ﮈ‎ → ‎ڈ‎ ) ARABIC LETTER DDAL ISOLATED FORM → ARABIC LETTER DDAL    # 
+
+FB85 ; 068C ;  ML      # ( ‎ﮅ‎ → ‎ڌ‎ ) ARABIC LETTER DAHAL FINAL FORM → ARABIC LETTER DAHAL     # 
+FB84 ; 068C ;  ML      # ( ‎ﮄ‎ → ‎ڌ‎ ) ARABIC LETTER DAHAL ISOLATED FORM → ARABIC LETTER DAHAL  # 
+
+FB83 ; 068D ;  ML      # ( ‎ﮃ‎ → ‎ڍ‎ ) ARABIC LETTER DDAHAL FINAL FORM → ARABIC LETTER DDAHAL   # 
+FB82 ; 068D ;  ML      # ( ‎ﮂ‎ → ‎ڍ‎ ) ARABIC LETTER DDAHAL ISOLATED FORM → ARABIC LETTER DDAHAL        # 
+
+FB87 ; 068E ;  ML      # ( ‎ﮇ‎ → ‎ڎ‎ ) ARABIC LETTER DUL FINAL FORM → ARABIC LETTER DUL # 
+FB86 ; 068E ;  ML      # ( ‎ﮆ‎ → ‎ڎ‎ ) ARABIC LETTER DUL ISOLATED FORM → ARABIC LETTER DUL      # 
+
+FEAE ; 0631 ;  ML      # ( ‎ﺮ‎ → ‎ر‎ ) ARABIC LETTER REH FINAL FORM → ARABIC LETTER REH # 
+FEAD ; 0631 ;  ML      # ( ‎ﺭ‎ → ‎ر‎ ) ARABIC LETTER REH ISOLATED FORM → ARABIC LETTER REH      # 
+
+FC5C ; 0631 0670 ;     ML      # ( ‎ﱜ‎ → ‎رٰ‎ ) ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM → ARABIC LETTER REH, ARABIC LETTER SUPERSCRIPT ALEF    # 
+
+FDF6 ; 0631 0633 0648 0644 ;   ML      # ( ‎ﷶ‎ → ‎رسول‎ ) ARABIC LIGATURE RASOUL ISOLATED FORM → ARABIC LETTER REH, ARABIC LETTER SEEN, ARABIC LETTER WAW, ARABIC LETTER LAM # 
+
+FDFC ; 0631 0649 0627 0644 ;   ML      #* ( ‎﷼‎ → ‎رىال‎ ) RIAL SIGN → ARABIC LETTER REH, ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ALEF, ARABIC LETTER LAM  # →‎ریال‎→
+
+FEB0 ; 0632 ;  ML      # ( ‎ﺰ‎ → ‎ز‎ ) ARABIC LETTER ZAIN FINAL FORM → ARABIC LETTER ZAIN       # 
+FEAF ; 0632 ;  ML      # ( ‎ﺯ‎ → ‎ز‎ ) ARABIC LETTER ZAIN ISOLATED FORM → ARABIC LETTER ZAIN    # 
+0694 ; 0632 ;  ML      # ( ‎ڔ‎ → ‎ز‎ ) ARABIC LETTER REH WITH DOT BELOW → ARABIC LETTER ZAIN     # 
+
+FB8D ; 0691 ;  ML      # ( ‎ﮍ‎ → ‎ڑ‎ ) ARABIC LETTER RREH FINAL FORM → ARABIC LETTER RREH       # 
+FB8C ; 0691 ;  ML      # ( ‎ﮌ‎ → ‎ڑ‎ ) ARABIC LETTER RREH ISOLATED FORM → ARABIC LETTER RREH    # 
+
+FB8B ; 0698 ;  ML      # ( ‎ﮋ‎ → ‎ژ‎ ) ARABIC LETTER JEH FINAL FORM → ARABIC LETTER JEH # 
+FB8A ; 0698 ;  ML      # ( ‎ﮊ‎ → ‎ژ‎ ) ARABIC LETTER JEH ISOLATED FORM → ARABIC LETTER JEH      # 
+
+FEB3 ; 0633 ;  ML      # ( ‎ﺳ‎ → ‎س‎ ) ARABIC LETTER SEEN INITIAL FORM → ARABIC LETTER SEEN     # 
+FEB4 ; 0633 ;  ML      # ( ‎ﺴ‎ → ‎س‎ ) ARABIC LETTER SEEN MEDIAL FORM → ARABIC LETTER SEEN      # 
+FEB2 ; 0633 ;  ML      # ( ‎ﺲ‎ → ‎س‎ ) ARABIC LETTER SEEN FINAL FORM → ARABIC LETTER SEEN       # 
+FEB1 ; 0633 ;  ML      # ( ‎ﺱ‎ → ‎س‎ ) ARABIC LETTER SEEN ISOLATED FORM → ARABIC LETTER SEEN    # 
+
+FCAD ; 0633 062C ;     ML      # ( ‎ﲭ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM   # 
+FD34 ; 0633 062C ;     ML      # ( ‎ﴴ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM    # 
+FC1C ; 0633 062C ;     ML      # ( ‎ﰜ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM  # 
+FCAF ; 0633 062C ;     ML      # ( ‎ﲯ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM   # →‎سخ‎→→‎ﰞ‎→→‎ﰜ‎→
+FD36 ; 0633 062C ;     ML      # ( ‎ﴶ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM    # →‎سخ‎→→‎ﰞ‎→→‎ﰜ‎→
+FC1E ; 0633 062C ;     ML      # ( ‎ﰞ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM  # →‎ﰜ‎→
+
+FD5D ; 0633 062C 062D ;        ML      # ( ‎ﵝ‎ → ‎سجح‎ ) ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM, ARABIC LETTER HAH     # 
+
+FD5E ; 0633 062C 0649 ;        ML      # ( ‎ﵞ‎ → ‎سجى‎ ) ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA     # 
+FDA8 ; 0633 062C 0649 ;        ML      # ( ‎ﶨ‎ → ‎سجى‎ ) ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA     # →‎سخى‎→
+FDC6 ; 0633 062C 0649 ;        ML      # ( ‎ﷆ‎ → ‎سجى‎ ) ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎سخي‎→
+
+FCAE ; 0633 062D ;     ML      # ( ‎ﲮ‎ → ‎سح‎ ) ARABIC LIGATURE SEEN WITH HAH INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER HAH     # 
+FD35 ; 0633 062D ;     ML      # ( ‎ﴵ‎ → ‎سح‎ ) ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER HAH      # 
+FC1D ; 0633 062D ;     ML      # ( ‎ﰝ‎ → ‎سح‎ ) ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER HAH    # 
+
+FD5C ; 0633 062D 062C ;        ML      # ( ‎ﵜ‎ → ‎سحج‎ ) ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER HAH, ARABIC LETTER JEEM     # 
+
+FD2A ; 0633 0631 ;     ML      # ( ‎ﴪ‎ → ‎سر‎ ) ARABIC LIGATURE SEEN WITH REH FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER REH       # 
+FD0E ; 0633 0631 ;     ML      # ( ‎ﴎ‎ → ‎سر‎ ) ARABIC LIGATURE SEEN WITH REH ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER REH    # 
+
+FCB0 ; 0633 0645 ;     ML      # ( ‎ﲰ‎ → ‎سم‎ ) ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM   # 
+FCE7 ; 0633 0645 ;     ML      # ( ‎ﳧ‎ → ‎سم‎ ) ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM    # 
+FC1F ; 0633 0645 ;     ML      # ( ‎ﰟ‎ → ‎سم‎ ) ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM  # 
+
+FD61 ; 0633 0645 062C ;        ML      # ( ‎ﵡ‎ → ‎سمج‎ ) ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM, ARABIC LETTER JEEM   # 
+
+FD60 ; 0633 0645 062D ;        ML      # ( ‎ﵠ‎ → ‎سمح‎ ) ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM, ARABIC LETTER HAH     # 
+FD5F ; 0633 0645 062D ;        ML      # ( ‎ﵟ‎ → ‎سمح‎ ) ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+
+FD63 ; 0633 0645 0645 ;        ML      # ( ‎ﵣ‎ → ‎سمم‎ ) ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM, ARABIC LETTER MEEM   # 
+FD62 ; 0633 0645 0645 ;        ML      # ( ‎ﵢ‎ → ‎سمم‎ ) ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+
+FD31 ; 0633 0647 ;     ML      # ( ‎ﴱ‎ → ‎سه‎ ) ARABIC LIGATURE SEEN WITH HEH INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER HEH     # 
+FCE8 ; 0633 0647 ;     ML      # ( ‎ﳨ‎ → ‎سه‎ ) ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER HEH      # 
+
+FD17 ; 0633 0649 ;     ML      # ( ‎ﴗ‎ → ‎سى‎ ) ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER ALEF MAKSURA     # 
+FCFB ; 0633 0649 ;     ML      # ( ‎ﳻ‎ → ‎سى‎ ) ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER ALEF MAKSURA  # 
+FD18 ; 0633 0649 ;     ML      # ( ‎ﴘ‎ → ‎سى‎ ) ARABIC LIGATURE SEEN WITH YEH FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER ALEF MAKSURA      # →‎سي‎→
+FCFC ; 0633 0649 ;     ML      # ( ‎ﳼ‎ → ‎سى‎ ) ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER ALEF MAKSURA   # →‎سي‎→
+
+FEB7 ; 0634 ;  ML      # ( ‎ﺷ‎ → ‎ش‎ ) ARABIC LETTER SHEEN INITIAL FORM → ARABIC LETTER SHEEN   # 
+FEB8 ; 0634 ;  ML      # ( ‎ﺸ‎ → ‎ش‎ ) ARABIC LETTER SHEEN MEDIAL FORM → ARABIC LETTER SHEEN    # 
+FEB6 ; 0634 ;  ML      # ( ‎ﺶ‎ → ‎ش‎ ) ARABIC LETTER SHEEN FINAL FORM → ARABIC LETTER SHEEN     # 
+FEB5 ; 0634 ;  ML      # ( ‎ﺵ‎ → ‎ش‎ ) ARABIC LETTER SHEEN ISOLATED FORM → ARABIC LETTER SHEEN  # 
+
+FD2D ; 0634 062C ;     ML      # ( ‎ﴭ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM # 
+FD37 ; 0634 062C ;     ML      # ( ‎ﴷ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM  # 
+FD25 ; 0634 062C ;     ML      # ( ‎ﴥ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM   # 
+FD09 ; 0634 062C ;     ML      # ( ‎ﴉ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM        # 
+FD2F ; 0634 062C ;     ML      # ( ‎ﴯ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM # →‎شخ‎→→‎ﴧ‎→→‎ﴥ‎→
+FD39 ; 0634 062C ;     ML      # ( ‎ﴹ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM  # →‎شخ‎→→‎ﴧ‎→→‎ﴥ‎→
+FD27 ; 0634 062C ;     ML      # ( ‎ﴧ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM   # →‎ﴥ‎→
+FD0B ; 0634 062C ;     ML      # ( ‎ﴋ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM        # →‎ﴉ‎→
+
+FD69 ; 0634 062C 0649 ;        ML      # ( ‎ﵩ‎ → ‎شجى‎ ) ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA    # →‎شجي‎→
+
+FD2E ; 0634 062D ;     ML      # ( ‎ﴮ‎ → ‎شح‎ ) ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH   # 
+FD38 ; 0634 062D ;     ML      # ( ‎ﴸ‎ → ‎شح‎ ) ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH    # 
+FD26 ; 0634 062D ;     ML      # ( ‎ﴦ‎ → ‎شح‎ ) ARABIC LIGATURE SHEEN WITH HAH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH     # 
+FD0A ; 0634 062D ;     ML      # ( ‎ﴊ‎ → ‎شح‎ ) ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH  # 
+
+FD68 ; 0634 062D 0645 ;        ML      # ( ‎ﵨ‎ → ‎شحم‎ ) ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH, ARABIC LETTER MEEM   # 
+FD67 ; 0634 062D 0645 ;        ML      # ( ‎ﵧ‎ → ‎شحم‎ ) ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH, ARABIC LETTER MEEM     # 
+
+FDAA ; 0634 062D 0649 ;        ML      # ( ‎ﶪ‎ → ‎شحى‎ ) ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA      # →‎شحي‎→
+
+FD29 ; 0634 0631 ;     ML      # ( ‎ﴩ‎ → ‎شر‎ ) ARABIC LIGATURE SHEEN WITH REH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER REH     # 
+FD0D ; 0634 0631 ;     ML      # ( ‎ﴍ‎ → ‎شر‎ ) ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER REH  # 
+
+FD30 ; 0634 0645 ;     ML      # ( ‎ﴰ‎ → ‎شم‎ ) ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM # 
+FCE9 ; 0634 0645 ;     ML      # ( ‎ﳩ‎ → ‎شم‎ ) ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM  # 
+FD28 ; 0634 0645 ;     ML      # ( ‎ﴨ‎ → ‎شم‎ ) ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM   # 
+FD0C ; 0634 0645 ;     ML      # ( ‎ﴌ‎ → ‎شم‎ ) ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM        # 
+
+FD6B ; 0634 0645 062C ;        ML      # ( ‎ﵫ‎ → ‎شمج‎ ) ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM, ARABIC LETTER JEEM # →‎شمخ‎→
+FD6A ; 0634 0645 062C ;        ML      # ( ‎ﵪ‎ → ‎شمج‎ ) ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM, ARABIC LETTER JEEM   # →‎شمخ‎→
+
+FD6D ; 0634 0645 0645 ;        ML      # ( ‎ﵭ‎ → ‎شمم‎ ) ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM, ARABIC LETTER MEEM # 
+FD6C ; 0634 0645 0645 ;        ML      # ( ‎ﵬ‎ → ‎شمم‎ ) ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM, ARABIC LETTER MEEM   # 
+
+FD32 ; 0634 0647 ;     ML      # ( ‎ﴲ‎ → ‎شه‎ ) ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HEH   # 
+FCEA ; 0634 0647 ;     ML      # ( ‎ﳪ‎ → ‎شه‎ ) ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HEH    # 
+
+FD19 ; 0634 0649 ;     ML      # ( ‎ﴙ‎ → ‎شى‎ ) ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER ALEF MAKSURA   # 
+FCFD ; 0634 0649 ;     ML      # ( ‎ﳽ‎ → ‎شى‎ ) ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER ALEF MAKSURA        # 
+FD1A ; 0634 0649 ;     ML      # ( ‎ﴚ‎ → ‎شى‎ ) ARABIC LIGATURE SHEEN WITH YEH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER ALEF MAKSURA    # →‎شي‎→
+FCFE ; 0634 0649 ;     ML      # ( ‎ﳾ‎ → ‎شى‎ ) ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER ALEF MAKSURA # →‎شي‎→
+
+FEBB ; 0635 ;  ML      # ( ‎ﺻ‎ → ‎ص‎ ) ARABIC LETTER SAD INITIAL FORM → ARABIC LETTER SAD       # 
+FEBC ; 0635 ;  ML      # ( ‎ﺼ‎ → ‎ص‎ ) ARABIC LETTER SAD MEDIAL FORM → ARABIC LETTER SAD        # 
+FEBA ; 0635 ;  ML      # ( ‎ﺺ‎ → ‎ص‎ ) ARABIC LETTER SAD FINAL FORM → ARABIC LETTER SAD # 
+FEB9 ; 0635 ;  ML      # ( ‎ﺹ‎ → ‎ص‎ ) ARABIC LETTER SAD ISOLATED FORM → ARABIC LETTER SAD      # 
+
+FCB2 ; 0635 062C ;     ML      # ( ‎ﲲ‎ → ‎صج‎ ) ARABIC LIGATURE SAD WITH KHAH INITIAL FORM → ARABIC LETTER SAD, ARABIC LETTER JEEM     # →‎صخ‎→
+
+FCB1 ; 0635 062D ;     ML      # ( ‎ﲱ‎ → ‎صح‎ ) ARABIC LIGATURE SAD WITH HAH INITIAL FORM → ARABIC LETTER SAD, ARABIC LETTER HAH       # 
+FC20 ; 0635 062D ;     ML      # ( ‎ﰠ‎ → ‎صح‎ ) ARABIC LIGATURE SAD WITH HAH ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER HAH      # 
+
+FD65 ; 0635 062D 062D ;        ML      # ( ‎ﵥ‎ → ‎صحح‎ ) ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM → ARABIC LETTER SAD, ARABIC LETTER HAH, ARABIC LETTER HAH # 
+FD64 ; 0635 062D 062D ;        ML      # ( ‎ﵤ‎ → ‎صحح‎ ) ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER HAH, ARABIC LETTER HAH   # 
+
+FDA9 ; 0635 062D 0649 ;        ML      # ( ‎ﶩ‎ → ‎صحى‎ ) ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA  # →‎صحي‎→
+
+FD2B ; 0635 0631 ;     ML      # ( ‎ﴫ‎ → ‎صر‎ ) ARABIC LIGATURE SAD WITH REH FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER REH # 
+FD0F ; 0635 0631 ;     ML      # ( ‎ﴏ‎ → ‎صر‎ ) ARABIC LIGATURE SAD WITH REH ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER REH      # 
+
+FDF5 ; 0635 0644 0639 0645 ;   ML      # ( ‎ﷵ‎ → ‎صلعم‎ ) ARABIC LIGATURE SALAM ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER LAM, ARABIC LETTER AIN, ARABIC LETTER MEEM  # 
+
+FDF9 ; 0635 0644 0649 ;        ML      # ( ‎ﷹ‎ → ‎صلى‎ ) ARABIC LIGATURE SALLA ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA       # 
+
+FDFA ; 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 0649 0647 0020 0648 0633 0644 0645 ;     ML      #* ( ‎ﷺ‎ → ‎صلى الله علىه وسلم‎ ) ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM → ARABIC LETTER SAD, ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA, SPACE, ARABIC LETTER ALEF, ARABIC LETTER LAM, ARABIC LETTER LAM, ARABIC LETTER HEH, SPACE, ARABIC LETTER AIN, ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HEH, SPACE, ARABIC LETTER WAW, ARABIC LETTER SEEN, ARABIC LETTER LAM, ARABIC LETTER MEEM      # →‎صلى الله عليه وسلم‎→
+
+FDF0 ; 0635 0644 06D2 ;        ML      # ( ‎ﷰ‎ → ‎صلے‎ ) ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER LAM, ARABIC LETTER YEH BARREE       # 
+
+FCB3 ; 0635 0645 ;     ML      # ( ‎ﲳ‎ → ‎صم‎ ) ARABIC LIGATURE SAD WITH MEEM INITIAL FORM → ARABIC LETTER SAD, ARABIC LETTER MEEM     # 
+FC21 ; 0635 0645 ;     ML      # ( ‎ﰡ‎ → ‎صم‎ ) ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER MEEM    # 
+
+FDC5 ; 0635 0645 0645 ;        ML      # ( ‎ﷅ‎ → ‎صمم‎ ) ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER SAD, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+FD66 ; 0635 0645 0645 ;        ML      # ( ‎ﵦ‎ → ‎صمم‎ ) ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER MEEM, ARABIC LETTER MEEM       # 
+
+FD21 ; 0635 0649 ;     ML      # ( ‎ﴡ‎ → ‎صى‎ ) ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER ALEF MAKSURA       # 
+FD05 ; 0635 0649 ;     ML      # ( ‎ﴅ‎ → ‎صى‎ ) ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER ALEF MAKSURA    # 
+FD22 ; 0635 0649 ;     ML      # ( ‎ﴢ‎ → ‎صى‎ ) ARABIC LIGATURE SAD WITH YEH FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER ALEF MAKSURA        # →‎صي‎→
+FD06 ; 0635 0649 ;     ML      # ( ‎ﴆ‎ → ‎صى‎ ) ARABIC LIGATURE SAD WITH YEH ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER ALEF MAKSURA     # →‎صي‎→
+
+FEBF ; 0636 ;  ML      # ( ‎ﺿ‎ → ‎ض‎ ) ARABIC LETTER DAD INITIAL FORM → ARABIC LETTER DAD       # 
+FEC0 ; 0636 ;  ML      # ( ‎ﻀ‎ → ‎ض‎ ) ARABIC LETTER DAD MEDIAL FORM → ARABIC LETTER DAD        # 
+FEBE ; 0636 ;  ML      # ( ‎ﺾ‎ → ‎ض‎ ) ARABIC LETTER DAD FINAL FORM → ARABIC LETTER DAD # 
+FEBD ; 0636 ;  ML      # ( ‎ﺽ‎ → ‎ض‎ ) ARABIC LETTER DAD ISOLATED FORM → ARABIC LETTER DAD      # 
+
+FCB4 ; 0636 062C ;     ML      # ( ‎ﲴ‎ → ‎ضج‎ ) ARABIC LIGATURE DAD WITH JEEM INITIAL FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM     # 
+FC22 ; 0636 062C ;     ML      # ( ‎ﰢ‎ → ‎ضج‎ ) ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM    # 
+FCB6 ; 0636 062C ;     ML      # ( ‎ﲶ‎ → ‎ضج‎ ) ARABIC LIGATURE DAD WITH KHAH INITIAL FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM     # →‎ضخ‎→→‎ﰤ‎→→‎ﰢ‎→
+FC24 ; 0636 062C ;     ML      # ( ‎ﰤ‎ → ‎ضج‎ ) ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM    # →‎ﰢ‎→
+
+FD70 ; 0636 062C 0645 ;        ML      # ( ‎ﵰ‎ → ‎ضجم‎ ) ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # →‎ضخم‎→
+FD6F ; 0636 062C 0645 ;        ML      # ( ‎ﵯ‎ → ‎ضجم‎ ) ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM, ARABIC LETTER MEEM       # →‎ضخم‎→
+
+FCB5 ; 0636 062D ;     ML      # ( ‎ﲵ‎ → ‎ضح‎ ) ARABIC LIGATURE DAD WITH HAH INITIAL FORM → ARABIC LETTER DAD, ARABIC LETTER HAH       # 
+FC23 ; 0636 062D ;     ML      # ( ‎ﰣ‎ → ‎ضح‎ ) ARABIC LIGATURE DAD WITH HAH ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER HAH      # 
+
+FD6E ; 0636 062D 0649 ;        ML      # ( ‎ﵮ‎ → ‎ضحى‎ ) ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA # 
+FDAB ; 0636 062D 0649 ;        ML      # ( ‎ﶫ‎ → ‎ضحى‎ ) ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA  # →‎ضحي‎→
+
+FD2C ; 0636 0631 ;     ML      # ( ‎ﴬ‎ → ‎ضر‎ ) ARABIC LIGATURE DAD WITH REH FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER REH # 
+FD10 ; 0636 0631 ;     ML      # ( ‎ﴐ‎ → ‎ضر‎ ) ARABIC LIGATURE DAD WITH REH ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER REH      # 
+
+FCB7 ; 0636 0645 ;     ML      # ( ‎ﲷ‎ → ‎ضم‎ ) ARABIC LIGATURE DAD WITH MEEM INITIAL FORM → ARABIC LETTER DAD, ARABIC LETTER MEEM     # 
+FC25 ; 0636 0645 ;     ML      # ( ‎ﰥ‎ → ‎ضم‎ ) ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER MEEM    # 
+
+FD23 ; 0636 0649 ;     ML      # ( ‎ﴣ‎ → ‎ضى‎ ) ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER ALEF MAKSURA       # 
+FD07 ; 0636 0649 ;     ML      # ( ‎ﴇ‎ → ‎ضى‎ ) ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER ALEF MAKSURA    # 
+FD24 ; 0636 0649 ;     ML      # ( ‎ﴤ‎ → ‎ضى‎ ) ARABIC LIGATURE DAD WITH YEH FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER ALEF MAKSURA        # →‎ضي‎→
+FD08 ; 0636 0649 ;     ML      # ( ‎ﴈ‎ → ‎ضى‎ ) ARABIC LIGATURE DAD WITH YEH ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER ALEF MAKSURA     # →‎ضي‎→
+
+FEC3 ; 0637 ;  ML      # ( ‎ﻃ‎ → ‎ط‎ ) ARABIC LETTER TAH INITIAL FORM → ARABIC LETTER TAH       # 
+FEC4 ; 0637 ;  ML      # ( ‎ﻄ‎ → ‎ط‎ ) ARABIC LETTER TAH MEDIAL FORM → ARABIC LETTER TAH        # 
+FEC2 ; 0637 ;  ML      # ( ‎ﻂ‎ → ‎ط‎ ) ARABIC LETTER TAH FINAL FORM → ARABIC LETTER TAH # 
+FEC1 ; 0637 ;  ML      # ( ‎ﻁ‎ → ‎ط‎ ) ARABIC LETTER TAH ISOLATED FORM → ARABIC LETTER TAH      # 
+
+FCB8 ; 0637 062D ;     ML      # ( ‎ﲸ‎ → ‎طح‎ ) ARABIC LIGATURE TAH WITH HAH INITIAL FORM → ARABIC LETTER TAH, ARABIC LETTER HAH       # 
+FC26 ; 0637 062D ;     ML      # ( ‎ﰦ‎ → ‎طح‎ ) ARABIC LIGATURE TAH WITH HAH ISOLATED FORM → ARABIC LETTER TAH, ARABIC LETTER HAH      # 
+
+FD33 ; 0637 0645 ;     ML      # ( ‎ﴳ‎ → ‎طم‎ ) ARABIC LIGATURE TAH WITH MEEM INITIAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM     # 
+FD3A ; 0637 0645 ;     ML      # ( ‎ﴺ‎ → ‎طم‎ ) ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM      # 
+FC27 ; 0637 0645 ;     ML      # ( ‎ﰧ‎ → ‎طم‎ ) ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM    # 
+
+FD72 ; 0637 0645 062D ;        ML      # ( ‎ﵲ‎ → ‎طمح‎ ) ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+FD71 ; 0637 0645 062D ;        ML      # ( ‎ﵱ‎ → ‎طمح‎ ) ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM, ARABIC LETTER HAH # 
+
+FD73 ; 0637 0645 0645 ;        ML      # ( ‎ﵳ‎ → ‎طمم‎ ) ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+
+FD74 ; 0637 0645 0649 ;        ML      # ( ‎ﵴ‎ → ‎طمى‎ ) ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎طمي‎→
+
+FD11 ; 0637 0649 ;     ML      # ( ‎ﴑ‎ → ‎طى‎ ) ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER TAH, ARABIC LETTER ALEF MAKSURA       # 
+FCF5 ; 0637 0649 ;     ML      # ( ‎ﳵ‎ → ‎طى‎ ) ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER TAH, ARABIC LETTER ALEF MAKSURA    # 
+FD12 ; 0637 0649 ;     ML      # ( ‎ﴒ‎ → ‎طى‎ ) ARABIC LIGATURE TAH WITH YEH FINAL FORM → ARABIC LETTER TAH, ARABIC LETTER ALEF MAKSURA        # →‎طي‎→
+FCF6 ; 0637 0649 ;     ML      # ( ‎ﳶ‎ → ‎طى‎ ) ARABIC LIGATURE TAH WITH YEH ISOLATED FORM → ARABIC LETTER TAH, ARABIC LETTER ALEF MAKSURA     # →‎طي‎→
+
+FEC7 ; 0638 ;  ML      # ( ‎ﻇ‎ → ‎ظ‎ ) ARABIC LETTER ZAH INITIAL FORM → ARABIC LETTER ZAH       # 
+FEC8 ; 0638 ;  ML      # ( ‎ﻈ‎ → ‎ظ‎ ) ARABIC LETTER ZAH MEDIAL FORM → ARABIC LETTER ZAH        # 
+FEC6 ; 0638 ;  ML      # ( ‎ﻆ‎ → ‎ظ‎ ) ARABIC LETTER ZAH FINAL FORM → ARABIC LETTER ZAH # 
+FEC5 ; 0638 ;  ML      # ( ‎ﻅ‎ → ‎ظ‎ ) ARABIC LETTER ZAH ISOLATED FORM → ARABIC LETTER ZAH      # 
+
+FCB9 ; 0638 0645 ;     ML      # ( ‎ﲹ‎ → ‎ظم‎ ) ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM → ARABIC LETTER ZAH, ARABIC LETTER MEEM     # 
+FD3B ; 0638 0645 ;     ML      # ( ‎ﴻ‎ → ‎ظم‎ ) ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM → ARABIC LETTER ZAH, ARABIC LETTER MEEM      # 
+FC28 ; 0638 0645 ;     ML      # ( ‎ﰨ‎ → ‎ظم‎ ) ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM → ARABIC LETTER ZAH, ARABIC LETTER MEEM    # 
+
+FECB ; 0639 ;  ML      # ( ‎ﻋ‎ → ‎ع‎ ) ARABIC LETTER AIN INITIAL FORM → ARABIC LETTER AIN       # 
+FECC ; 0639 ;  ML      # ( ‎ﻌ‎ → ‎ع‎ ) ARABIC LETTER AIN MEDIAL FORM → ARABIC LETTER AIN        # 
+FECA ; 0639 ;  ML      # ( ‎ﻊ‎ → ‎ع‎ ) ARABIC LETTER AIN FINAL FORM → ARABIC LETTER AIN # 
+FEC9 ; 0639 ;  ML      # ( ‎ﻉ‎ → ‎ع‎ ) ARABIC LETTER AIN ISOLATED FORM → ARABIC LETTER AIN      # 
+
+FCBA ; 0639 062C ;     ML      # ( ‎ﲺ‎ → ‎عج‎ ) ARABIC LIGATURE AIN WITH JEEM INITIAL FORM → ARABIC LETTER AIN, ARABIC LETTER JEEM     # 
+FC29 ; 0639 062C ;     ML      # ( ‎ﰩ‎ → ‎عج‎ ) ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM → ARABIC LETTER AIN, ARABIC LETTER JEEM    # 
+
+FDC4 ; 0639 062C 0645 ;        ML      # ( ‎ﷄ‎ → ‎عجم‎ ) ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM → ARABIC LETTER AIN, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # 
+FD75 ; 0639 062C 0645 ;        ML      # ( ‎ﵵ‎ → ‎عجم‎ ) ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER JEEM, ARABIC LETTER MEEM       # 
+
+FDF7 ; 0639 0644 0649 0647 ;   ML      # ( ‎ﷷ‎ → ‎علىه‎ ) ARABIC LIGATURE ALAYHE ISOLATED FORM → ARABIC LETTER AIN, ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HEH # →‎عليه‎→
+
+FCBB ; 0639 0645 ;     ML      # ( ‎ﲻ‎ → ‎عم‎ ) ARABIC LIGATURE AIN WITH MEEM INITIAL FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM     # 
+FC2A ; 0639 0645 ;     ML      # ( ‎ﰪ‎ → ‎عم‎ ) ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM    # 
+
+FD77 ; 0639 0645 0645 ;        ML      # ( ‎ﵷ‎ → ‎عمم‎ ) ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+FD76 ; 0639 0645 0645 ;        ML      # ( ‎ﵶ‎ → ‎عمم‎ ) ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM, ARABIC LETTER MEEM       # 
+
+FD78 ; 0639 0645 0649 ;        ML      # ( ‎ﵸ‎ → ‎عمى‎ ) ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA       # 
+FDB6 ; 0639 0645 0649 ;        ML      # ( ‎ﶶ‎ → ‎عمى‎ ) ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎عمي‎→
+
+FD13 ; 0639 0649 ;     ML      # ( ‎ﴓ‎ → ‎عى‎ ) ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER ALEF MAKSURA       # 
+FCF7 ; 0639 0649 ;     ML      # ( ‎ﳷ‎ → ‎عى‎ ) ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER AIN, ARABIC LETTER ALEF MAKSURA    # 
+FD14 ; 0639 0649 ;     ML      # ( ‎ﴔ‎ → ‎عى‎ ) ARABIC LIGATURE AIN WITH YEH FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER ALEF MAKSURA        # →‎عي‎→
+FCF8 ; 0639 0649 ;     ML      # ( ‎ﳸ‎ → ‎عى‎ ) ARABIC LIGATURE AIN WITH YEH ISOLATED FORM → ARABIC LETTER AIN, ARABIC LETTER ALEF MAKSURA     # →‎عي‎→
+
+FECF ; 063A ;  ML      # ( ‎ﻏ‎ → ‎غ‎ ) ARABIC LETTER GHAIN INITIAL FORM → ARABIC LETTER GHAIN   # 
+FED0 ; 063A ;  ML      # ( ‎ﻐ‎ → ‎غ‎ ) ARABIC LETTER GHAIN MEDIAL FORM → ARABIC LETTER GHAIN    # 
+FECE ; 063A ;  ML      # ( ‎ﻎ‎ → ‎غ‎ ) ARABIC LETTER GHAIN FINAL FORM → ARABIC LETTER GHAIN     # 
+FECD ; 063A ;  ML      # ( ‎ﻍ‎ → ‎غ‎ ) ARABIC LETTER GHAIN ISOLATED FORM → ARABIC LETTER GHAIN  # 
+
+FCBC ; 063A 062C ;     ML      # ( ‎ﲼ‎ → ‎غج‎ ) ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER JEEM # 
+FC2B ; 063A 062C ;     ML      # ( ‎ﰫ‎ → ‎غج‎ ) ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM → ARABIC LETTER GHAIN, ARABIC LETTER JEEM        # 
+
+FCBD ; 063A 0645 ;     ML      # ( ‎ﲽ‎ → ‎غم‎ ) ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER MEEM # 
+FC2C ; 063A 0645 ;     ML      # ( ‎ﰬ‎ → ‎غم‎ ) ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM → ARABIC LETTER GHAIN, ARABIC LETTER MEEM        # 
+
+FD79 ; 063A 0645 0645 ;        ML      # ( ‎ﵹ‎ → ‎غمم‎ ) ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER MEEM, ARABIC LETTER MEEM   # 
+
+FD7B ; 063A 0645 0649 ;        ML      # ( ‎ﵻ‎ → ‎غمى‎ ) ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA   # 
+FD7A ; 063A 0645 0649 ;        ML      # ( ‎ﵺ‎ → ‎غمى‎ ) ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA    # →‎غمي‎→
+
+FD15 ; 063A 0649 ;     ML      # ( ‎ﴕ‎ → ‎غى‎ ) ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER ALEF MAKSURA   # 
+FCF9 ; 063A 0649 ;     ML      # ( ‎ﳹ‎ → ‎غى‎ ) ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER GHAIN, ARABIC LETTER ALEF MAKSURA        # 
+FD16 ; 063A 0649 ;     ML      # ( ‎ﴖ‎ → ‎غى‎ ) ARABIC LIGATURE GHAIN WITH YEH FINAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER ALEF MAKSURA    # →‎غي‎→
+FCFA ; 063A 0649 ;     ML      # ( ‎ﳺ‎ → ‎غى‎ ) ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM → ARABIC LETTER GHAIN, ARABIC LETTER ALEF MAKSURA # →‎غي‎→
+
+FED3 ; 0641 ;  ML      # ( ‎ﻓ‎ → ‎ف‎ ) ARABIC LETTER FEH INITIAL FORM → ARABIC LETTER FEH       # 
+FED4 ; 0641 ;  ML      # ( ‎ﻔ‎ → ‎ف‎ ) ARABIC LETTER FEH MEDIAL FORM → ARABIC LETTER FEH        # 
+FED2 ; 0641 ;  ML      # ( ‎ﻒ‎ → ‎ف‎ ) ARABIC LETTER FEH FINAL FORM → ARABIC LETTER FEH # 
+FED1 ; 0641 ;  ML      # ( ‎ﻑ‎ → ‎ف‎ ) ARABIC LETTER FEH ISOLATED FORM → ARABIC LETTER FEH      # 
+
+FCBE ; 0641 062C ;     ML      # ( ‎ﲾ‎ → ‎فج‎ ) ARABIC LIGATURE FEH WITH JEEM INITIAL FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM     # 
+FC2D ; 0641 062C ;     ML      # ( ‎ﰭ‎ → ‎فج‎ ) ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM    # 
+FCC0 ; 0641 062C ;     ML      # ( ‎ﳀ‎ → ‎فج‎ ) ARABIC LIGATURE FEH WITH KHAH INITIAL FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM     # →‎فخ‎→→‎ﰯ‎→→‎ﰭ‎→
+FC2F ; 0641 062C ;     ML      # ( ‎ﰯ‎ → ‎فج‎ ) ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM    # →‎ﰭ‎→
+
+FD7D ; 0641 062C 0645 ;        ML      # ( ‎ﵽ‎ → ‎فجم‎ ) ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # →‎فخم‎→
+FD7C ; 0641 062C 0645 ;        ML      # ( ‎ﵼ‎ → ‎فجم‎ ) ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM       # →‎فخم‎→
+
+FCBF ; 0641 062D ;     ML      # ( ‎ﲿ‎ → ‎فح‎ ) ARABIC LIGATURE FEH WITH HAH INITIAL FORM → ARABIC LETTER FEH, ARABIC LETTER HAH       # 
+FC2E ; 0641 062D ;     ML      # ( ‎ﰮ‎ → ‎فح‎ ) ARABIC LIGATURE FEH WITH HAH ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER HAH      # 
+
+FCC1 ; 0641 0645 ;     ML      # ( ‎ﳁ‎ → ‎فم‎ ) ARABIC LIGATURE FEH WITH MEEM INITIAL FORM → ARABIC LETTER FEH, ARABIC LETTER MEEM     # 
+FC30 ; 0641 0645 ;     ML      # ( ‎ﰰ‎ → ‎فم‎ ) ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER MEEM    # 
+
+FDC1 ; 0641 0645 0649 ;        ML      # ( ‎ﷁ‎ → ‎فمى‎ ) ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER FEH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎فمي‎→
+
+FC7C ; 0641 0649 ;     ML      # ( ‎ﱼ‎ → ‎فى‎ ) ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER FEH, ARABIC LETTER ALEF MAKSURA       # 
+FC31 ; 0641 0649 ;     ML      # ( ‎ﰱ‎ → ‎فى‎ ) ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER ALEF MAKSURA    # 
+FC7D ; 0641 0649 ;     ML      # ( ‎ﱽ‎ → ‎فى‎ ) ARABIC LIGATURE FEH WITH YEH FINAL FORM → ARABIC LETTER FEH, ARABIC LETTER ALEF MAKSURA        # →‎في‎→
+FC32 ; 0641 0649 ;     ML      # ( ‎ﰲ‎ → ‎فى‎ ) ARABIC LIGATURE FEH WITH YEH ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER ALEF MAKSURA     # →‎في‎→
+
+FB6C ; 06A4 ;  ML      # ( ‎ﭬ‎ → ‎ڤ‎ ) ARABIC LETTER VEH INITIAL FORM → ARABIC LETTER VEH       # 
+FB6D ; 06A4 ;  ML      # ( ‎ﭭ‎ → ‎ڤ‎ ) ARABIC LETTER VEH MEDIAL FORM → ARABIC LETTER VEH        # 
+FB6B ; 06A4 ;  ML      # ( ‎ﭫ‎ → ‎ڤ‎ ) ARABIC LETTER VEH FINAL FORM → ARABIC LETTER VEH # 
+FB6A ; 06A4 ;  ML      # ( ‎ﭪ‎ → ‎ڤ‎ ) ARABIC LETTER VEH ISOLATED FORM → ARABIC LETTER VEH      # 
+
+FB70 ; 06A6 ;  ML      # ( ‎ﭰ‎ → ‎ڦ‎ ) ARABIC LETTER PEHEH INITIAL FORM → ARABIC LETTER PEHEH   # 
+FB71 ; 06A6 ;  ML      # ( ‎ﭱ‎ → ‎ڦ‎ ) ARABIC LETTER PEHEH MEDIAL FORM → ARABIC LETTER PEHEH    # 
+FB6F ; 06A6 ;  ML      # ( ‎ﭯ‎ → ‎ڦ‎ ) ARABIC LETTER PEHEH FINAL FORM → ARABIC LETTER PEHEH     # 
+FB6E ; 06A6 ;  ML      # ( ‎ﭮ‎ → ‎ڦ‎ ) ARABIC LETTER PEHEH ISOLATED FORM → ARABIC LETTER PEHEH  # 
+
+FED7 ; 0642 ;  ML      # ( ‎ﻗ‎ → ‎ق‎ ) ARABIC LETTER QAF INITIAL FORM → ARABIC LETTER QAF       # 
+FED8 ; 0642 ;  ML      # ( ‎ﻘ‎ → ‎ق‎ ) ARABIC LETTER QAF MEDIAL FORM → ARABIC LETTER QAF        # 
+FED6 ; 0642 ;  ML      # ( ‎ﻖ‎ → ‎ق‎ ) ARABIC LETTER QAF FINAL FORM → ARABIC LETTER QAF # 
+FED5 ; 0642 ;  ML      # ( ‎ﻕ‎ → ‎ق‎ ) ARABIC LETTER QAF ISOLATED FORM → ARABIC LETTER QAF      # 
+
+FCC2 ; 0642 062D ;     ML      # ( ‎ﳂ‎ → ‎قح‎ ) ARABIC LIGATURE QAF WITH HAH INITIAL FORM → ARABIC LETTER QAF, ARABIC LETTER HAH       # 
+FC33 ; 0642 062D ;     ML      # ( ‎ﰳ‎ → ‎قح‎ ) ARABIC LIGATURE QAF WITH HAH ISOLATED FORM → ARABIC LETTER QAF, ARABIC LETTER HAH      # 
+
+FDF1 ; 0642 0644 06D2 ;        ML      # ( ‎ﷱ‎ → ‎قلے‎ ) ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM → ARABIC LETTER QAF, ARABIC LETTER LAM, ARABIC LETTER YEH BARREE        # 
+
+FCC3 ; 0642 0645 ;     ML      # ( ‎ﳃ‎ → ‎قم‎ ) ARABIC LIGATURE QAF WITH MEEM INITIAL FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM     # 
+FC34 ; 0642 0645 ;     ML      # ( ‎ﰴ‎ → ‎قم‎ ) ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM    # 
+
+FDB4 ; 0642 0645 062D ;        ML      # ( ‎ﶴ‎ → ‎قمح‎ ) ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+FD7E ; 0642 0645 062D ;        ML      # ( ‎ﵾ‎ → ‎قمح‎ ) ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM, ARABIC LETTER HAH # 
+
+FD7F ; 0642 0645 0645 ;        ML      # ( ‎ﵿ‎ → ‎قمم‎ ) ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM, ARABIC LETTER MEEM       # 
+
+FDB2 ; 0642 0645 0649 ;        ML      # ( ‎ﶲ‎ → ‎قمى‎ ) ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎قمي‎→
+
+FC7E ; 0642 0649 ;     ML      # ( ‎ﱾ‎ → ‎قى‎ ) ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER QAF, ARABIC LETTER ALEF MAKSURA       # 
+FC35 ; 0642 0649 ;     ML      # ( ‎ﰵ‎ → ‎قى‎ ) ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER QAF, ARABIC LETTER ALEF MAKSURA    # 
+FC7F ; 0642 0649 ;     ML      # ( ‎ﱿ‎ → ‎قى‎ ) ARABIC LIGATURE QAF WITH YEH FINAL FORM → ARABIC LETTER QAF, ARABIC LETTER ALEF MAKSURA        # →‎قي‎→
+FC36 ; 0642 0649 ;     ML      # ( ‎ﰶ‎ → ‎قى‎ ) ARABIC LIGATURE QAF WITH YEH ISOLATED FORM → ARABIC LETTER QAF, ARABIC LETTER ALEF MAKSURA     # →‎قي‎→
+
+FEDB ; 0643 ;  ML      # ( ‎ﻛ‎ → ‎ك‎ ) ARABIC LETTER KAF INITIAL FORM → ARABIC LETTER KAF       # 
+FEDC ; 0643 ;  ML      # ( ‎ﻜ‎ → ‎ك‎ ) ARABIC LETTER KAF MEDIAL FORM → ARABIC LETTER KAF        # 
+FEDA ; 0643 ;  ML      # ( ‎ﻚ‎ → ‎ك‎ ) ARABIC LETTER KAF FINAL FORM → ARABIC LETTER KAF # 
+FED9 ; 0643 ;  ML      # ( ‎ﻙ‎ → ‎ك‎ ) ARABIC LETTER KAF ISOLATED FORM → ARABIC LETTER KAF      # 
+06A9 ; 0643 ;  ML      # ( ‎ک‎ → ‎ك‎ ) ARABIC LETTER KEHEH → ARABIC LETTER KAF   # 
+FB90 ; 0643 ;  ML      # ( ‎ﮐ‎ → ‎ك‎ ) ARABIC LETTER KEHEH INITIAL FORM → ARABIC LETTER KAF     # →‎ﻜ‎→
+FB91 ; 0643 ;  ML      # ( ‎ﮑ‎ → ‎ك‎ ) ARABIC LETTER KEHEH MEDIAL FORM → ARABIC LETTER KAF      # →‎ﻜ‎→
+FB8F ; 0643 ;  ML      # ( ‎ﮏ‎ → ‎ك‎ ) ARABIC LETTER KEHEH FINAL FORM → ARABIC LETTER KAF       # →‎ﻚ‎→
+FB8E ; 0643 ;  ML      # ( ‎ﮎ‎ → ‎ك‎ ) ARABIC LETTER KEHEH ISOLATED FORM → ARABIC LETTER KAF    # →‎ک‎→
+
+FC80 ; 0643 0627 ;     ML      # ( ‎ﲀ‎ → ‎كا‎ ) ARABIC LIGATURE KAF WITH ALEF FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF       # 
+FC37 ; 0643 0627 ;     ML      # ( ‎ﰷ‎ → ‎كا‎ ) ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF    # 
+
+FCC4 ; 0643 062C ;     ML      # ( ‎ﳄ‎ → ‎كج‎ ) ARABIC LIGATURE KAF WITH JEEM INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER JEEM     # 
+FC38 ; 0643 062C ;     ML      # ( ‎ﰸ‎ → ‎كج‎ ) ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER JEEM    # 
+FCC6 ; 0643 062C ;     ML      # ( ‎ﳆ‎ → ‎كج‎ ) ARABIC LIGATURE KAF WITH KHAH INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER JEEM     # →‎كخ‎→→‎ﰺ‎→→‎ﰸ‎→
+FC3A ; 0643 062C ;     ML      # ( ‎ﰺ‎ → ‎كج‎ ) ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER JEEM    # →‎ﰸ‎→
+
+FCC5 ; 0643 062D ;     ML      # ( ‎ﳅ‎ → ‎كح‎ ) ARABIC LIGATURE KAF WITH HAH INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER HAH       # 
+FC39 ; 0643 062D ;     ML      # ( ‎ﰹ‎ → ‎كح‎ ) ARABIC LIGATURE KAF WITH HAH ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER HAH      # 
+
+FCC7 ; 0643 0644 ;     ML      # ( ‎ﳇ‎ → ‎كل‎ ) ARABIC LIGATURE KAF WITH LAM INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER LAM       # 
+FCEB ; 0643 0644 ;     ML      # ( ‎ﳫ‎ → ‎كل‎ ) ARABIC LIGATURE KAF WITH LAM MEDIAL FORM → ARABIC LETTER KAF, ARABIC LETTER LAM        # 
+FC81 ; 0643 0644 ;     ML      # ( ‎ﲁ‎ → ‎كل‎ ) ARABIC LIGATURE KAF WITH LAM FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER LAM # 
+FC3B ; 0643 0644 ;     ML      # ( ‎ﰻ‎ → ‎كل‎ ) ARABIC LIGATURE KAF WITH LAM ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER LAM      # 
+
+FCC8 ; 0643 0645 ;     ML      # ( ‎ﳈ‎ → ‎كم‎ ) ARABIC LIGATURE KAF WITH MEEM INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM     # 
+FCEC ; 0643 0645 ;     ML      # ( ‎ﳬ‎ → ‎كم‎ ) ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM      # 
+FC82 ; 0643 0645 ;     ML      # ( ‎ﲂ‎ → ‎كم‎ ) ARABIC LIGATURE KAF WITH MEEM FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM       # 
+FC3C ; 0643 0645 ;     ML      # ( ‎ﰼ‎ → ‎كم‎ ) ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM    # 
+
+FDC3 ; 0643 0645 0645 ;        ML      # ( ‎ﷃ‎ → ‎كمم‎ ) ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+FDBB ; 0643 0645 0645 ;        ML      # ( ‎ﶻ‎ → ‎كمم‎ ) ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM, ARABIC LETTER MEEM       # 
+
+FDB7 ; 0643 0645 0649 ;        ML      # ( ‎ﶷ‎ → ‎كمى‎ ) ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎كمي‎→
+
+FC83 ; 0643 0649 ;     ML      # ( ‎ﲃ‎ → ‎كى‎ ) ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF MAKSURA       # 
+FC3D ; 0643 0649 ;     ML      # ( ‎ﰽ‎ → ‎كى‎ ) ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF MAKSURA    # 
+FC84 ; 0643 0649 ;     ML      # ( ‎ﲄ‎ → ‎كى‎ ) ARABIC LIGATURE KAF WITH YEH FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF MAKSURA        # →‎كي‎→
+FC3E ; 0643 0649 ;     ML      # ( ‎ﰾ‎ → ‎كى‎ ) ARABIC LIGATURE KAF WITH YEH ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF MAKSURA     # →‎كي‎→
+
+FBD5 ; 06AD ;  ML      # ( ‎ﯕ‎ → ‎ڭ‎ ) ARABIC LETTER NG INITIAL FORM → ARABIC LETTER NG # 
+FBD6 ; 06AD ;  ML      # ( ‎ﯖ‎ → ‎ڭ‎ ) ARABIC LETTER NG MEDIAL FORM → ARABIC LETTER NG  # 
+FBD4 ; 06AD ;  ML      # ( ‎ﯔ‎ → ‎ڭ‎ ) ARABIC LETTER NG FINAL FORM → ARABIC LETTER NG   # 
+FBD3 ; 06AD ;  ML      # ( ‎ﯓ‎ → ‎ڭ‎ ) ARABIC LETTER NG ISOLATED FORM → ARABIC LETTER NG        # 
+
+FB94 ; 06AF ;  ML      # ( ‎ﮔ‎ → ‎گ‎ ) ARABIC LETTER GAF INITIAL FORM → ARABIC LETTER GAF       # 
+FB95 ; 06AF ;  ML      # ( ‎ﮕ‎ → ‎گ‎ ) ARABIC LETTER GAF MEDIAL FORM → ARABIC LETTER GAF        # 
+FB93 ; 06AF ;  ML      # ( ‎ﮓ‎ → ‎گ‎ ) ARABIC LETTER GAF FINAL FORM → ARABIC LETTER GAF # 
+FB92 ; 06AF ;  ML      # ( ‎ﮒ‎ → ‎گ‎ ) ARABIC LETTER GAF ISOLATED FORM → ARABIC LETTER GAF      # 
+
+FB9C ; 06B1 ;  ML      # ( ‎ﮜ‎ → ‎ڱ‎ ) ARABIC LETTER NGOEH INITIAL FORM → ARABIC LETTER NGOEH   # 
+FB9D ; 06B1 ;  ML      # ( ‎ﮝ‎ → ‎ڱ‎ ) ARABIC LETTER NGOEH MEDIAL FORM → ARABIC LETTER NGOEH    # 
+FB9B ; 06B1 ;  ML      # ( ‎ﮛ‎ → ‎ڱ‎ ) ARABIC LETTER NGOEH FINAL FORM → ARABIC LETTER NGOEH     # 
+FB9A ; 06B1 ;  ML      # ( ‎ﮚ‎ → ‎ڱ‎ ) ARABIC LETTER NGOEH ISOLATED FORM → ARABIC LETTER NGOEH  # 
+
+FB98 ; 06B3 ;  ML      # ( ‎ﮘ‎ → ‎ڳ‎ ) ARABIC LETTER GUEH INITIAL FORM → ARABIC LETTER GUEH     # 
+FB99 ; 06B3 ;  ML      # ( ‎ﮙ‎ → ‎ڳ‎ ) ARABIC LETTER GUEH MEDIAL FORM → ARABIC LETTER GUEH      # 
+FB97 ; 06B3 ;  ML      # ( ‎ﮗ‎ → ‎ڳ‎ ) ARABIC LETTER GUEH FINAL FORM → ARABIC LETTER GUEH       # 
+FB96 ; 06B3 ;  ML      # ( ‎ﮖ‎ → ‎ڳ‎ ) ARABIC LETTER GUEH ISOLATED FORM → ARABIC LETTER GUEH    # 
+
+FEDF ; 0644 ;  ML      # ( ‎ﻟ‎ → ‎ل‎ ) ARABIC LETTER LAM INITIAL FORM → ARABIC LETTER LAM       # 
+FEE0 ; 0644 ;  ML      # ( ‎ﻠ‎ → ‎ل‎ ) ARABIC LETTER LAM MEDIAL FORM → ARABIC LETTER LAM        # 
+FEDE ; 0644 ;  ML      # ( ‎ﻞ‎ → ‎ل‎ ) ARABIC LETTER LAM FINAL FORM → ARABIC LETTER LAM # 
+FEDD ; 0644 ;  ML      # ( ‎ﻝ‎ → ‎ل‎ ) ARABIC LETTER LAM ISOLATED FORM → ARABIC LETTER LAM      # 
+
+FEF6 ; 0644 0622 ;     ML      # ( ‎ﻶ‎ → ‎لآ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF WITH MADDA ABOVE     # 
+FEF5 ; 0644 0622 ;     ML      # ( ‎ﻵ‎ → ‎لآ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF WITH MADDA ABOVE  # 
+
+FEFA ; 0644 0625 ;     ML      # ( ‎ﻺ‎ → ‎لإ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF WITH HAMZA BELOW     # 
+FEF9 ; 0644 0625 ;     ML      # ( ‎ﻹ‎ → ‎لإ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF WITH HAMZA BELOW  # 
+
+FEFC ; 0644 0627 ;     ML      # ( ‎ﻼ‎ → ‎لا‎ ) ARABIC LIGATURE LAM WITH ALEF FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF       # 
+FEFB ; 0644 0627 ;     ML      # ( ‎ﻻ‎ → ‎لا‎ ) ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF    # 
+
+FEF8 ; 0644 0627 0674 ;        ML      # ( ‎ﻸ‎ → ‎لاٴ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA  # →‎لأ‎→
+FEF7 ; 0644 0627 0674 ;        ML      # ( ‎ﻷ‎ → ‎لاٴ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA       # →‎لأ‎→
+
+FCC9 ; 0644 062C ;     ML      # ( ‎ﳉ‎ → ‎لج‎ ) ARABIC LIGATURE LAM WITH JEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM     # 
+FC3F ; 0644 062C ;     ML      # ( ‎ﰿ‎ → ‎لج‎ ) ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM    # 
+FCCB ; 0644 062C ;     ML      # ( ‎ﳋ‎ → ‎لج‎ ) ARABIC LIGATURE LAM WITH KHAH INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM     # →‎لخ‎→→‎ﱁ‎→→‎ﰿ‎→
+FC41 ; 0644 062C ;     ML      # ( ‎ﱁ‎ → ‎لج‎ ) ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM    # →‎ﰿ‎→
+
+FD83 ; 0644 062C 062C ;        ML      # ( ‎ﶃ‎ → ‎لجج‎ ) ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER JEEM     # 
+FD84 ; 0644 062C 062C ;        ML      # ( ‎ﶄ‎ → ‎لجج‎ ) ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER JEEM       # 
+
+FDBA ; 0644 062C 0645 ;        ML      # ( ‎ﶺ‎ → ‎لجم‎ ) ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # 
+FDBC ; 0644 062C 0645 ;        ML      # ( ‎ﶼ‎ → ‎لجم‎ ) ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER MEEM       # 
+FD86 ; 0644 062C 0645 ;        ML      # ( ‎ﶆ‎ → ‎لجم‎ ) ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # →‎لخم‎→
+FD85 ; 0644 062C 0645 ;        ML      # ( ‎ﶅ‎ → ‎لجم‎ ) ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER MEEM       # →‎لخم‎→
+
+FDAC ; 0644 062C 0649 ;        ML      # ( ‎ﶬ‎ → ‎لجى‎ ) ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA        # →‎لجي‎→
+
+FCCA ; 0644 062D ;     ML      # ( ‎ﳊ‎ → ‎لح‎ ) ARABIC LIGATURE LAM WITH HAH INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER HAH       # 
+FC40 ; 0644 062D ;     ML      # ( ‎ﱀ‎ → ‎لح‎ ) ARABIC LIGATURE LAM WITH HAH ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER HAH      # 
+
+FDB5 ; 0644 062D 0645 ;        ML      # ( ‎ﶵ‎ → ‎لحم‎ ) ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER HAH, ARABIC LETTER MEEM       # 
+FD80 ; 0644 062D 0645 ;        ML      # ( ‎ﶀ‎ → ‎لحم‎ ) ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER HAH, ARABIC LETTER MEEM # 
+
+FD82 ; 0644 062D 0649 ;        ML      # ( ‎ﶂ‎ → ‎لحى‎ ) ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA # 
+FD81 ; 0644 062D 0649 ;        ML      # ( ‎ﶁ‎ → ‎لحى‎ ) ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA  # →‎لحي‎→
+
+FCCC ; 0644 0645 ;     ML      # ( ‎ﳌ‎ → ‎لم‎ ) ARABIC LIGATURE LAM WITH MEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM     # 
+FCED ; 0644 0645 ;     ML      # ( ‎ﳭ‎ → ‎لم‎ ) ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM      # 
+FC85 ; 0644 0645 ;     ML      # ( ‎ﲅ‎ → ‎لم‎ ) ARABIC LIGATURE LAM WITH MEEM FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM       # 
+FC42 ; 0644 0645 ;     ML      # ( ‎ﱂ‎ → ‎لم‎ ) ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM    # 
+
+FD88 ; 0644 0645 062D ;        ML      # ( ‎ﶈ‎ → ‎لمح‎ ) ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+FD87 ; 0644 0645 062D ;        ML      # ( ‎ﶇ‎ → ‎لمح‎ ) ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM, ARABIC LETTER HAH # 
+
+FDAD ; 0644 0645 0649 ;        ML      # ( ‎ﶭ‎ → ‎لمى‎ ) ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎لمي‎→
+
+FCCD ; 0644 0647 ;     ML      # ( ‎ﳍ‎ → ‎له‎ ) ARABIC LIGATURE LAM WITH HEH INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER HEH       # 
+
+FC86 ; 0644 0649 ;     ML      # ( ‎ﲆ‎ → ‎لى‎ ) ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA       # 
+FC43 ; 0644 0649 ;     ML      # ( ‎ﱃ‎ → ‎لى‎ ) ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA    # 
+FC87 ; 0644 0649 ;     ML      # ( ‎ﲇ‎ → ‎لى‎ ) ARABIC LIGATURE LAM WITH YEH FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA        # →‎لي‎→
+FC44 ; 0644 0649 ;     ML      # ( ‎ﱄ‎ → ‎لى‎ ) ARABIC LIGATURE LAM WITH YEH ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA     # →‎لي‎→
+
+FEE3 ; 0645 ;  ML      # ( ‎ﻣ‎ → ‎م‎ ) ARABIC LETTER MEEM INITIAL FORM → ARABIC LETTER MEEM     # 
+FEE4 ; 0645 ;  ML      # ( ‎ﻤ‎ → ‎م‎ ) ARABIC LETTER MEEM MEDIAL FORM → ARABIC LETTER MEEM      # 
+FEE2 ; 0645 ;  ML      # ( ‎ﻢ‎ → ‎م‎ ) ARABIC LETTER MEEM FINAL FORM → ARABIC LETTER MEEM       # 
+FEE1 ; 0645 ;  ML      # ( ‎ﻡ‎ → ‎م‎ ) ARABIC LETTER MEEM ISOLATED FORM → ARABIC LETTER MEEM    # 
+
+FC88 ; 0645 0627 ;     ML      # ( ‎ﲈ‎ → ‎ما‎ ) ARABIC LIGATURE MEEM WITH ALEF FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER ALEF     # 
+
+FCCE ; 0645 062C ;     ML      # ( ‎ﳎ‎ → ‎مج‎ ) ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM   # 
+FC45 ; 0645 062C ;     ML      # ( ‎ﱅ‎ → ‎مج‎ ) ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM  # 
+FCD0 ; 0645 062C ;     ML      # ( ‎ﳐ‎ → ‎مج‎ ) ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM   # →‎مخ‎→→‎ﱇ‎→→‎ﱅ‎→
+FC47 ; 0645 062C ;     ML      # ( ‎ﱇ‎ → ‎مج‎ ) ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM  # →‎ﱅ‎→
+
+FD92 ; 0645 062C 062C ;        ML      # ( ‎ﶒ‎ → ‎مجج‎ ) ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER JEEM   # →‎مجخ‎→
+FD8E ; 0645 062C 062C ;        ML      # ( ‎ﶎ‎ → ‎مجج‎ ) ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER JEEM   # →‎مخج‎→
+
+FD8C ; 0645 062C 062D ;        ML      # ( ‎ﶌ‎ → ‎مجح‎ ) ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER HAH     # 
+
+FD8D ; 0645 062C 0645 ;        ML      # ( ‎ﶍ‎ → ‎مجم‎ ) ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER MEEM   # 
+FD8F ; 0645 062C 0645 ;        ML      # ( ‎ﶏ‎ → ‎مجم‎ ) ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER MEEM   # →‎مخم‎→
+
+FDC0 ; 0645 062C 0649 ;        ML      # ( ‎ﷀ‎ → ‎مجى‎ ) ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎مجي‎→
+FDB9 ; 0645 062C 0649 ;        ML      # ( ‎ﶹ‎ → ‎مجى‎ ) ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎مخي‎→
+
+FCCF ; 0645 062D ;     ML      # ( ‎ﳏ‎ → ‎مح‎ ) ARABIC LIGATURE MEEM WITH HAH INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH     # 
+FC46 ; 0645 062D ;     ML      # ( ‎ﱆ‎ → ‎مح‎ ) ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH    # 
+
+FD89 ; 0645 062D 062C ;        ML      # ( ‎ﶉ‎ → ‎محج‎ ) ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH, ARABIC LETTER JEEM     # 
+
+FD8A ; 0645 062D 0645 ;        ML      # ( ‎ﶊ‎ → ‎محم‎ ) ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH, ARABIC LETTER MEEM     # 
+
+FDF4 ; 0645 062D 0645 062F ;   ML      # ( ‎ﷴ‎ → ‎محمد‎ ) ARABIC LIGATURE MOHAMMAD ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH, ARABIC LETTER MEEM, ARABIC LETTER DAL      # 
+
+FD8B ; 0645 062D 0649 ;        ML      # ( ‎ﶋ‎ → ‎محى‎ ) ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA        # →‎محي‎→
+
+FCD1 ; 0645 0645 ;     ML      # ( ‎ﳑ‎ → ‎مم‎ ) ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER MEEM   # 
+FC89 ; 0645 0645 ;     ML      # ( ‎ﲉ‎ → ‎مم‎ ) ARABIC LIGATURE MEEM WITH MEEM FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+FC48 ; 0645 0645 ;     ML      # ( ‎ﱈ‎ → ‎مم‎ ) ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER MEEM  # 
+
+FDB1 ; 0645 0645 0649 ;        ML      # ( ‎ﶱ‎ → ‎ممى‎ ) ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA      # →‎ممي‎→
+
+FC49 ; 0645 0649 ;     ML      # ( ‎ﱉ‎ → ‎مى‎ ) ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA  # 
+FC4A ; 0645 0649 ;     ML      # ( ‎ﱊ‎ → ‎مى‎ ) ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA   # →‎مي‎→
+
+FB9F ; 06BA ;  ML      # ( ‎ﮟ‎ → ‎ں‎ ) ARABIC LETTER NOON GHUNNA FINAL FORM → ARABIC LETTER NOON GHUNNA # 
+FB9E ; 06BA ;  ML      # ( ‎ﮞ‎ → ‎ں‎ ) ARABIC LETTER NOON GHUNNA ISOLATED FORM → ARABIC LETTER NOON GHUNNA      # 
+
+FEEB ; 0647 ;  ML      # ( ‎ﻫ‎ → ‎ه‎ ) ARABIC LETTER HEH INITIAL FORM → ARABIC LETTER HEH       # 
+FEEC ; 0647 ;  ML      # ( ‎ﻬ‎ → ‎ه‎ ) ARABIC LETTER HEH MEDIAL FORM → ARABIC LETTER HEH        # 
+FEEA ; 0647 ;  ML      # ( ‎ﻪ‎ → ‎ه‎ ) ARABIC LETTER HEH FINAL FORM → ARABIC LETTER HEH # 
+FEE9 ; 0647 ;  ML      # ( ‎ﻩ‎ → ‎ه‎ ) ARABIC LETTER HEH ISOLATED FORM → ARABIC LETTER HEH      # 
+06BE ; 0647 ;  ML      # ( ‎ھ‎ → ‎ه‎ ) ARABIC LETTER HEH DOACHASHMEE → ARABIC LETTER HEH # 
+FBAC ; 0647 ;  ML      # ( ‎ﮬ‎ → ‎ه‎ ) ARABIC LETTER HEH DOACHASHMEE INITIAL FORM → ARABIC LETTER HEH   # →‎ﻫ‎→
+FBAD ; 0647 ;  ML      # ( ‎ﮭ‎ → ‎ه‎ ) ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM → ARABIC LETTER HEH    # →‎ﻬ‎→
+FBAB ; 0647 ;  ML      # ( ‎ﮫ‎ → ‎ه‎ ) ARABIC LETTER HEH DOACHASHMEE FINAL FORM → ARABIC LETTER HEH     # →‎ﻬ‎→
+FBAA ; 0647 ;  ML      # ( ‎ﮪ‎ → ‎ه‎ ) ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM → ARABIC LETTER HEH  # 
+06C1 ; 0647 ;  ML      # ( ‎ہ‎ → ‎ه‎ ) ARABIC LETTER HEH GOAL → ARABIC LETTER HEH        # →‎ﮦ‎→
+FBA8 ; 0647 ;  ML      # ( ‎ﮨ‎ → ‎ه‎ ) ARABIC LETTER HEH GOAL INITIAL FORM → ARABIC LETTER HEH  # →‎ہ‎→→‎ﮦ‎→
+FBA9 ; 0647 ;  ML      # ( ‎ﮩ‎ → ‎ه‎ ) ARABIC LETTER HEH GOAL MEDIAL FORM → ARABIC LETTER HEH   # →‎ہ‎→→‎ﮦ‎→
+FBA7 ; 0647 ;  ML      # ( ‎ﮧ‎ → ‎ه‎ ) ARABIC LETTER HEH GOAL FINAL FORM → ARABIC LETTER HEH    # →‎ہ‎→→‎ﮦ‎→
+FBA6 ; 0647 ;  ML      # ( ‎ﮦ‎ → ‎ه‎ ) ARABIC LETTER HEH GOAL ISOLATED FORM → ARABIC LETTER HEH # 
+06D5 ; 0647 ;  ML      # ( ‎ە‎ → ‎ه‎ ) ARABIC LETTER AE → ARABIC LETTER HEH      # 
+
+FCD9 ; 0647 0670 ;     ML      # ( ‎ﳙ‎ → ‎هٰ‎ ) ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM → ARABIC LETTER HEH, ARABIC LETTER SUPERSCRIPT ALEF     # 
+
+FCD7 ; 0647 062C ;     ML      # ( ‎ﳗ‎ → ‎هج‎ ) ARABIC LIGATURE HEH WITH JEEM INITIAL FORM → ARABIC LETTER HEH, ARABIC LETTER JEEM     # 
+FC51 ; 0647 062C ;     ML      # ( ‎ﱑ‎ → ‎هج‎ ) ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM → ARABIC LETTER HEH, ARABIC LETTER JEEM    # 
+
+FCD8 ; 0647 0645 ;     ML      # ( ‎ﳘ‎ → ‎هم‎ ) ARABIC LIGATURE HEH WITH MEEM INITIAL FORM → ARABIC LETTER HEH, ARABIC LETTER MEEM     # 
+FC52 ; 0647 0645 ;     ML      # ( ‎ﱒ‎ → ‎هم‎ ) ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM → ARABIC LETTER HEH, ARABIC LETTER MEEM    # 
+
+FD93 ; 0647 0645 062C ;        ML      # ( ‎ﶓ‎ → ‎همج‎ ) ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM → ARABIC LETTER HEH, ARABIC LETTER MEEM, ARABIC LETTER JEEM     # 
+
+FD94 ; 0647 0645 0645 ;        ML      # ( ‎ﶔ‎ → ‎همم‎ ) ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER HEH, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+
+FC53 ; 0647 0649 ;     ML      # ( ‎ﱓ‎ → ‎هى‎ ) ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER HEH, ARABIC LETTER ALEF MAKSURA    # 
+FC54 ; 0647 0649 ;     ML      # ( ‎ﱔ‎ → ‎هى‎ ) ARABIC LIGATURE HEH WITH YEH ISOLATED FORM → ARABIC LETTER HEH, ARABIC LETTER ALEF MAKSURA     # →‎هي‎→
+
+06C2 ; 06C0 ;  ML      # ( ‎ۂ‎ → ‎ۀ‎ ) ARABIC LETTER HEH GOAL WITH HAMZA ABOVE → ARABIC LETTER HEH WITH YEH ABOVE        # →‎ﮤ‎→
+FBA5 ; 06C0 ;  ML      # ( ‎ﮥ‎ → ‎ۀ‎ ) ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM → ARABIC LETTER HEH WITH YEH ABOVE   # 
+FBA4 ; 06C0 ;  ML      # ( ‎ﮤ‎ → ‎ۀ‎ ) ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM → ARABIC LETTER HEH WITH YEH ABOVE        # 
+
+FEEE ; 0648 ;  ML      # ( ‎ﻮ‎ → ‎و‎ ) ARABIC LETTER WAW FINAL FORM → ARABIC LETTER WAW # 
+FEED ; 0648 ;  ML      # ( ‎ﻭ‎ → ‎و‎ ) ARABIC LETTER WAW ISOLATED FORM → ARABIC LETTER WAW      # 
+
+0624 ; 0648 0674 ;     ML      # ( ‎ؤ‎ → ‎وٴ‎ ) ARABIC LETTER WAW WITH HAMZA ABOVE → ARABIC LETTER WAW, ARABIC LETTER HIGH HAMZA        # →‎ٶ‎→
+FE86 ; 0648 0674 ;     ML      # ( ‎ﺆ‎ → ‎وٴ‎ ) ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM → ARABIC LETTER WAW, ARABIC LETTER HIGH HAMZA    # →‎ٶ‎→
+FE85 ; 0648 0674 ;     ML      # ( ‎ﺅ‎ → ‎وٴ‎ ) ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER WAW, ARABIC LETTER HIGH HAMZA # →‎ٶ‎→
+0676 ; 0648 0674 ;     ML      # ( ‎ٶ‎ → ‎وٴ‎ ) ARABIC LETTER HIGH HAMZA WAW → ARABIC LETTER WAW, ARABIC LETTER HIGH HAMZA      # 
+
+FDF8 ; 0648 0633 0644 0645 ;   ML      # ( ‎ﷸ‎ → ‎وسلم‎ ) ARABIC LIGATURE WASALLAM ISOLATED FORM → ARABIC LETTER WAW, ARABIC LETTER SEEN, ARABIC LETTER LAM, ARABIC LETTER MEEM      # 
+
+FBE1 ; 06C5 ;  ML      # ( ‎ﯡ‎ → ‎ۅ‎ ) ARABIC LETTER KIRGHIZ OE FINAL FORM → ARABIC LETTER KIRGHIZ OE   # 
+FBE0 ; 06C5 ;  ML      # ( ‎ﯠ‎ → ‎ۅ‎ ) ARABIC LETTER KIRGHIZ OE ISOLATED FORM → ARABIC LETTER KIRGHIZ OE        # 
+
+FBDA ; 06C6 ;  ML      # ( ‎ﯚ‎ → ‎ۆ‎ ) ARABIC LETTER OE FINAL FORM → ARABIC LETTER OE   # 
+FBD9 ; 06C6 ;  ML      # ( ‎ﯙ‎ → ‎ۆ‎ ) ARABIC LETTER OE ISOLATED FORM → ARABIC LETTER OE        # 
+
+FBD8 ; 06C7 ;  ML      # ( ‎ﯘ‎ → ‎ۇ‎ ) ARABIC LETTER U FINAL FORM → ARABIC LETTER U     # 
+FBD7 ; 06C7 ;  ML      # ( ‎ﯗ‎ → ‎ۇ‎ ) ARABIC LETTER U ISOLATED FORM → ARABIC LETTER U  # 
+
+0677 ; 06C7 0674 ;     ML      # ( ‎ٷ‎ → ‎ۇٴ‎ ) ARABIC LETTER U WITH HAMZA ABOVE → ARABIC LETTER U, ARABIC LETTER HIGH HAMZA    # 
+FBDD ; 06C7 0674 ;     ML      # ( ‎ﯝ‎ → ‎ۇٴ‎ ) ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER U, ARABIC LETTER HIGH HAMZA     # 
+
+FBDC ; 06C8 ;  ML      # ( ‎ﯜ‎ → ‎ۈ‎ ) ARABIC LETTER YU FINAL FORM → ARABIC LETTER YU   # 
+FBDB ; 06C8 ;  ML      # ( ‎ﯛ‎ → ‎ۈ‎ ) ARABIC LETTER YU ISOLATED FORM → ARABIC LETTER YU        # 
+
+FBE3 ; 06C9 ;  ML      # ( ‎ﯣ‎ → ‎ۉ‎ ) ARABIC LETTER KIRGHIZ YU FINAL FORM → ARABIC LETTER KIRGHIZ YU   # 
+FBE2 ; 06C9 ;  ML      # ( ‎ﯢ‎ → ‎ۉ‎ ) ARABIC LETTER KIRGHIZ YU ISOLATED FORM → ARABIC LETTER KIRGHIZ YU        # 
+
+FBDF ; 06CB ;  ML      # ( ‎ﯟ‎ → ‎ۋ‎ ) ARABIC LETTER VE FINAL FORM → ARABIC LETTER VE   # 
+FBDE ; 06CB ;  ML      # ( ‎ﯞ‎ → ‎ۋ‎ ) ARABIC LETTER VE ISOLATED FORM → ARABIC LETTER VE        # 
+
+FBE8 ; 0649 ;  ML      # ( ‎ﯨ‎ → ‎ى‎ ) ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM → ARABIC LETTER ALEF MAKSURA       # 
+FBE9 ; 0649 ;  ML      # ( ‎ﯩ‎ → ‎ى‎ ) ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM → ARABIC LETTER ALEF MAKSURA        # 
+FEF0 ; 0649 ;  ML      # ( ‎ﻰ‎ → ‎ى‎ ) ARABIC LETTER ALEF MAKSURA FINAL FORM → ARABIC LETTER ALEF MAKSURA       # 
+FEEF ; 0649 ;  ML      # ( ‎ﻯ‎ → ‎ى‎ ) ARABIC LETTER ALEF MAKSURA ISOLATED FORM → ARABIC LETTER ALEF MAKSURA    # 
+064A ; 0649 ;  ML      # ( ‎ي‎ → ‎ى‎ ) ARABIC LETTER YEH → ARABIC LETTER ALEF MAKSURA    # →‎ﻴ‎→→‎ﯿ‎→→‎ی‎→
+FEF3 ; 0649 ;  ML      # ( ‎ﻳ‎ → ‎ى‎ ) ARABIC LETTER YEH INITIAL FORM → ARABIC LETTER ALEF MAKSURA      # →‎ﯿ‎→→‎ی‎→
+FEF4 ; 0649 ;  ML      # ( ‎ﻴ‎ → ‎ى‎ ) ARABIC LETTER YEH MEDIAL FORM → ARABIC LETTER ALEF MAKSURA       # →‎ﯿ‎→→‎ی‎→
+FEF2 ; 0649 ;  ML      # ( ‎ﻲ‎ → ‎ى‎ ) ARABIC LETTER YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA        # →‎ي‎→→‎ﻴ‎→→‎ﯿ‎→→‎ی‎→
+FEF1 ; 0649 ;  ML      # ( ‎ﻱ‎ → ‎ى‎ ) ARABIC LETTER YEH ISOLATED FORM → ARABIC LETTER ALEF MAKSURA     # →‎ي‎→→‎ﻴ‎→→‎ﯿ‎→→‎ی‎→
+06CC ; 0649 ;  ML      # ( ‎ی‎ → ‎ى‎ ) ARABIC LETTER FARSI YEH → ARABIC LETTER ALEF MAKSURA      # 
+FBFE ; 0649 ;  ML      # ( ‎ﯾ‎ → ‎ى‎ ) ARABIC LETTER FARSI YEH INITIAL FORM → ARABIC LETTER ALEF MAKSURA        # →‎ی‎→
+FBFF ; 0649 ;  ML      # ( ‎ﯿ‎ → ‎ى‎ ) ARABIC LETTER FARSI YEH MEDIAL FORM → ARABIC LETTER ALEF MAKSURA # →‎ی‎→
+FBFD ; 0649 ;  ML      # ( ‎ﯽ‎ → ‎ى‎ ) ARABIC LETTER FARSI YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA  # →‎ی‎→
+FBFC ; 0649 ;  ML      # ( ‎ﯼ‎ → ‎ى‎ ) ARABIC LETTER FARSI YEH ISOLATED FORM → ARABIC LETTER ALEF MAKSURA       # 
+
+FC90 ; 0649 0670 ;     ML      # ( ‎ﲐ‎ → ‎ىٰ‎ ) ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER SUPERSCRIPT ALEF     # 
+FC5D ; 0649 0670 ;     ML      # ( ‎ﱝ‎ → ‎ىٰ‎ ) ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER SUPERSCRIPT ALEF  # 
+
+0626 ; 0649 0674 ;     ML      # ( ‎ئ‎ → ‎ىٴ‎ ) ARABIC LETTER YEH WITH HAMZA ABOVE → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA       # →‎ٸ‎→→‎يٴ‎→
+FE8B ; 0649 0674 ;     ML      # ( ‎ﺋ‎ → ‎ىٴ‎ ) ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA # →‎ئ‎→→‎ٸ‎→→‎يٴ‎→
+FE8C ; 0649 0674 ;     ML      # ( ‎ﺌ‎ → ‎ىٴ‎ ) ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA  # →‎ئ‎→→‎ٸ‎→→‎يٴ‎→
+FE8A ; 0649 0674 ;     ML      # ( ‎ﺊ‎ → ‎ىٴ‎ ) ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA   # →‎ئ‎→→‎ٸ‎→→‎يٴ‎→
+FE89 ; 0649 0674 ;     ML      # ( ‎ﺉ‎ → ‎ىٴ‎ ) ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA        # →‎ٸ‎→→‎يٴ‎→
+0678 ; 0649 0674 ;     ML      # ( ‎ٸ‎ → ‎ىٴ‎ ) ARABIC LETTER HIGH HAMZA YEH → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA     # →‎يٴ‎→
+
+FBEB ; 0649 0674 0627 ;        ML      # ( ‎ﯫ‎ → ‎ىٴا‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF # →‎ئا‎→
+FBEA ; 0649 0674 0627 ;        ML      # ( ‎ﯪ‎ → ‎ىٴا‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF      # →‎ئا‎→
+
+FC67 ; 0649 0674 0628 ;        ML      # ( ‎ﱧ‎ → ‎ىٴب‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER BEH  # →‎ئن‎→
+
+FBF8 ; 0649 0674 067A ;        ML      # ( ‎ﯸ‎ → ‎ىٴٺ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER TTEHEH        # →‎ئې‎→
+FBF7 ; 0649 0674 067A ;        ML      # ( ‎ﯷ‎ → ‎ىٴٺ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER TTEHEH  # →‎ئې‎→
+FBF6 ; 0649 0674 067A ;        ML      # ( ‎ﯶ‎ → ‎ىٴٺ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER TTEHEH       # →‎ئې‎→
+
+FC97 ; 0649 0674 062C ;        ML      # ( ‎ﲗ‎ → ‎ىٴج‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER JEEM       # →‎ئج‎→
+FC00 ; 0649 0674 062C ;        ML      # ( ‎ﰀ‎ → ‎ىٴج‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER JEEM      # →‎ئج‎→
+FC99 ; 0649 0674 062C ;        ML      # ( ‎ﲙ‎ → ‎ىٴج‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER JEEM       # →‎ئخ‎→→‎يٴج‎→→‎ئج‎→
+
+FC98 ; 0649 0674 062D ;        ML      # ( ‎ﲘ‎ → ‎ىٴح‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HAH # →‎ئح‎→
+FC01 ; 0649 0674 062D ;        ML      # ( ‎ﰁ‎ → ‎ىٴح‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HAH        # →‎ئح‎→
+
+FC64 ; 0649 0674 0631 ;        ML      # ( ‎ﱤ‎ → ‎ىٴر‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER REH   # →‎ئر‎→
+
+FC65 ; 0649 0674 0632 ;        ML      # ( ‎ﱥ‎ → ‎ىٴز‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ZAIN # →‎ئز‎→
+
+FC9A ; 0649 0674 0645 ;        ML      # ( ‎ﲚ‎ → ‎ىٴم‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER MEEM       # →‎ئم‎→
+FCDF ; 0649 0674 0645 ;        ML      # ( ‎ﳟ‎ → ‎ىٴم‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER MEEM        # →‎ئم‎→
+FC66 ; 0649 0674 0645 ;        ML      # ( ‎ﱦ‎ → ‎ىٴم‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER MEEM # →‎ئم‎→
+FC02 ; 0649 0674 0645 ;        ML      # ( ‎ﰂ‎ → ‎ىٴم‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER MEEM      # →‎ئم‎→
+
+FC9B ; 0649 0674 0647 ;        ML      # ( ‎ﲛ‎ → ‎ىٴه‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HEH # →‎ئه‎→
+FCE0 ; 0649 0674 0647 ;        ML      # ( ‎ﳠ‎ → ‎ىٴه‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HEH  # →‎ئه‎→
+FBED ; 0649 0674 0647 ;        ML      # ( ‎ﯭ‎ → ‎ىٴه‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HEH    # →‎ئە‎→→‎يٴه‎→→‎ئه‎→
+FBEC ; 0649 0674 0647 ;        ML      # ( ‎ﯬ‎ → ‎ىٴه‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HEH # →‎ئە‎→→‎يٴه‎→→‎ئه‎→
+
+FBEF ; 0649 0674 0648 ;        ML      # ( ‎ﯯ‎ → ‎ىٴو‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER WAW   # →‎ئو‎→
+FBEE ; 0649 0674 0648 ;        ML      # ( ‎ﯮ‎ → ‎ىٴو‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER WAW        # →‎ئو‎→
+
+FBF3 ; 0649 0674 06C6 ;        ML      # ( ‎ﯳ‎ → ‎ىٴۆ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER OE     # →‎ئۆ‎→
+FBF2 ; 0649 0674 06C6 ;        ML      # ( ‎ﯲ‎ → ‎ىٴۆ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER OE  # →‎ئۆ‎→
+
+FBF1 ; 0649 0674 06C7 ;        ML      # ( ‎ﯱ‎ → ‎ىٴۇ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER U       # →‎ئۇ‎→
+FBF0 ; 0649 0674 06C7 ;        ML      # ( ‎ﯰ‎ → ‎ىٴۇ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER U    # →‎ئۇ‎→
+
+FBF5 ; 0649 0674 06C8 ;        ML      # ( ‎ﯵ‎ → ‎ىٴۈ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER YU     # →‎ئۈ‎→
+FBF4 ; 0649 0674 06C8 ;        ML      # ( ‎ﯴ‎ → ‎ىٴۈ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER YU  # →‎ئۈ‎→
+
+FBFB ; 0649 0674 0649 ;        ML      # ( ‎ﯻ‎ → ‎ىٴى‎ ) ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA        # →‎ئى‎→
+FBFA ; 0649 0674 0649 ;        ML      # ( ‎ﯺ‎ → ‎ىٴى‎ ) ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA  # →‎ئى‎→
+FC68 ; 0649 0674 0649 ;        ML      # ( ‎ﱨ‎ → ‎ىٴى‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA # →‎ئى‎→
+FBF9 ; 0649 0674 0649 ;        ML      # ( ‎ﯹ‎ → ‎ىٴى‎ ) ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA       # →‎ئى‎→
+FC03 ; 0649 0674 0649 ;        ML      # ( ‎ﰃ‎ → ‎ىٴى‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA      # →‎ئى‎→
+FC69 ; 0649 0674 0649 ;        ML      # ( ‎ﱩ‎ → ‎ىٴى‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA  # →‎ئي‎→→‎يٴى‎→→‎ئى‎→
+FC04 ; 0649 0674 0649 ;        ML      # ( ‎ﰄ‎ → ‎ىٴى‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA       # →‎ئي‎→→‎يٴى‎→→‎ئى‎→
+
+FC94 ; 0649 0628 ;     ML      # ( ‎ﲔ‎ → ‎ىب‎ ) ARABIC LIGATURE YEH WITH NOON FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER BEH       # →‎ين‎→
+
+FDAF ; 0649 062C 0649 ;        ML      # ( ‎ﶯ‎ → ‎ىجى‎ ) ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA       # →‎يجي‎→
+
+FDAE ; 0649 062D 0649 ;        ML      # ( ‎ﶮ‎ → ‎ىحى‎ ) ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA # →‎يحي‎→
+
+FC91 ; 0649 0631 ;     ML      # ( ‎ﲑ‎ → ‎ىر‎ ) ARABIC LIGATURE YEH WITH REH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER REH        # →‎ير‎→
+
+FC92 ; 0649 0632 ;     ML      # ( ‎ﲒ‎ → ‎ىز‎ ) ARABIC LIGATURE YEH WITH ZAIN FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ZAIN      # →‎يز‎→
+
+FCDD ; 0649 0645 ;     ML      # ( ‎ﳝ‎ → ‎ىم‎ ) ARABIC LIGATURE YEH WITH MEEM INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM    # →‎يم‎→
+FCF0 ; 0649 0645 ;     ML      # ( ‎ﳰ‎ → ‎ىم‎ ) ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM     # →‎يم‎→
+FC93 ; 0649 0645 ;     ML      # ( ‎ﲓ‎ → ‎ىم‎ ) ARABIC LIGATURE YEH WITH MEEM FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM      # →‎يم‎→
+FC58 ; 0649 0645 ;     ML      # ( ‎ﱘ‎ → ‎ىم‎ ) ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM   # →‎يم‎→
+
+FD9D ; 0649 0645 0645 ;        ML      # ( ‎ﶝ‎ → ‎ىمم‎ ) ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM, ARABIC LETTER MEEM    # →‎يمم‎→
+FD9C ; 0649 0645 0645 ;        ML      # ( ‎ﶜ‎ → ‎ىمم‎ ) ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM, ARABIC LETTER MEEM      # →‎يمم‎→
+
+FDB0 ; 0649 0645 0649 ;        ML      # ( ‎ﶰ‎ → ‎ىمى‎ ) ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA       # →‎يمي‎→
+
+FCDE ; 0649 0647 ;     ML      # ( ‎ﳞ‎ → ‎ىه‎ ) ARABIC LIGATURE YEH WITH HEH INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HEH      # →‎يه‎→
+FCF1 ; 0649 0647 ;     ML      # ( ‎ﳱ‎ → ‎ىه‎ ) ARABIC LIGATURE YEH WITH HEH MEDIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HEH       # →‎يه‎→
+
+FC95 ; 0649 0649 ;     ML      # ( ‎ﲕ‎ → ‎ىى‎ ) ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ALEF MAKSURA      # →‎يى‎→
+FC59 ; 0649 0649 ;     ML      # ( ‎ﱙ‎ → ‎ىى‎ ) ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ALEF MAKSURA   # →‎يى‎→
+FC96 ; 0649 0649 ;     ML      # ( ‎ﲖ‎ → ‎ىى‎ ) ARABIC LIGATURE YEH WITH YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ALEF MAKSURA       # →‎يي‎→
+FC5A ; 0649 0649 ;     ML      # ( ‎ﱚ‎ → ‎ىى‎ ) ARABIC LIGATURE YEH WITH YEH ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ALEF MAKSURA    # →‎يي‎→
+
+FBAF ; 06D2 ;  ML      # ( ‎ﮯ‎ → ‎ے‎ ) ARABIC LETTER YEH BARREE FINAL FORM → ARABIC LETTER YEH BARREE   # 
+FBAE ; 06D2 ;  ML      # ( ‎ﮮ‎ → ‎ے‎ ) ARABIC LETTER YEH BARREE ISOLATED FORM → ARABIC LETTER YEH BARREE        # 
+
+FBB1 ; 06D3 ;  ML      # ( ‎ﮱ‎ → ‎ۓ‎ ) ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM → ARABIC LETTER YEH BARREE WITH HAMZA ABOVE # 
+FBB0 ; 06D3 ;  ML      # ( ‎ﮰ‎ → ‎ۓ‎ ) ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER YEH BARREE WITH HAMZA ABOVE      # 
+
+079A ; 0799 ;  ML      # ( ‎ޚ‎ → ‎ޙ‎ ) THAANA LETTER KHAA → THAANA LETTER HHAA   # 
+
+07A3 ; 07A2 ;  ML      # ( ‎ޣ‎ → ‎ޢ‎ ) THAANA LETTER GHAINU → THAANA LETTER AINU # 
+
+07A1 ; 07A0 ;  ML      # ( ‎ޡ‎ → ‎ޠ‎ ) THAANA LETTER ZO → THAANA LETTER TO       # 
+
+079F ; 079E ;  ML      # ( ‎ޟ‎ → ‎ޞ‎ ) THAANA LETTER DAADHU → THAANA LETTER SAADHU       # 
+
+22FF ; 2D39 ;  ML      #* ( ⋿ → ⴹ ) Z NOTATION BAG MEMBERSHIP → TIFINAGH LETTER YADD   # 
+2130 ; 2D39 ;  ML      # ( ℰ → ⴹ ) SCRIPT CAPITAL E → TIFINAGH LETTER YADD     # →E→
+1D404 ;        2D39 ;  ML      # ( 𝐄 → ⴹ ) MATHEMATICAL BOLD CAPITAL E → TIFINAGH LETTER YADD # →E→
+1D438 ;        2D39 ;  ML      # ( 𝐸 → ⴹ ) MATHEMATICAL ITALIC CAPITAL E → TIFINAGH LETTER YADD       # →E→
+1D46C ;        2D39 ;  ML      # ( 𝑬 → ⴹ ) MATHEMATICAL BOLD ITALIC CAPITAL E → TIFINAGH LETTER YADD  # →E→
+1D4D4 ;        2D39 ;  ML      # ( 𝓔 → ⴹ ) MATHEMATICAL BOLD SCRIPT CAPITAL E → TIFINAGH LETTER YADD  # →E→
+1D508 ;        2D39 ;  ML      # ( 𝔈 → ⴹ ) MATHEMATICAL FRAKTUR CAPITAL E → TIFINAGH LETTER YADD      # →E→
+1D53C ;        2D39 ;  ML      # ( 𝔼 → ⴹ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL E → TIFINAGH LETTER YADD        # →E→
+1D570 ;        2D39 ;  ML      # ( 𝕰 → ⴹ ) MATHEMATICAL BOLD FRAKTUR CAPITAL E → TIFINAGH LETTER YADD # →E→
+1D5A4 ;        2D39 ;  ML      # ( 𝖤 → ⴹ ) MATHEMATICAL SANS-SERIF CAPITAL E → TIFINAGH LETTER YADD   # →E→
+1D5D8 ;        2D39 ;  ML      # ( 𝗘 → ⴹ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL E → TIFINAGH LETTER YADD      # →E→
+1D60C ;        2D39 ;  ML      # ( 𝘌 → ⴹ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL E → TIFINAGH LETTER YADD    # →E→
+1D640 ;        2D39 ;  ML      # ( 𝙀 → ⴹ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E → TIFINAGH LETTER YADD       # →E→
+1D674 ;        2D39 ;  ML      # ( 𝙴 → ⴹ ) MATHEMATICAL MONOSPACE CAPITAL E → TIFINAGH LETTER YADD    # →E→
+1D6AC ;        2D39 ;  ML      # ( 𝚬 → ⴹ ) MATHEMATICAL BOLD CAPITAL EPSILON → TIFINAGH LETTER YADD   # →Ε→
+1D6E6 ;        2D39 ;  ML      # ( 𝛦 → ⴹ ) MATHEMATICAL ITALIC CAPITAL EPSILON → TIFINAGH LETTER YADD # →Ε→
+1D720 ;        2D39 ;  ML      # ( 𝜠 → ⴹ ) MATHEMATICAL BOLD ITALIC CAPITAL EPSILON → TIFINAGH LETTER YADD    # →Ε→
+1D75A ;        2D39 ;  ML      # ( 𝝚 → ⴹ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON → TIFINAGH LETTER YADD        # →Ε→
+1D794 ;        2D39 ;  ML      # ( 𝞔 → ⴹ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON → TIFINAGH LETTER YADD # →Ε→
+13AC ; 2D39 ;  ML      # ( Ꭼ → ⴹ ) CHEROKEE LETTER GV → TIFINAGH LETTER YADD   # →E→
+A4F0 ; 2D39 ;  ML      # ( ꓰ → ⴹ ) LISU LETTER E → TIFINAGH LETTER YADD        # →E→
+
+2203 ; 2D3A ;  ML      #* ( ∃ → ⴺ ) THERE EXISTS → TIFINAGH LETTER YADDH       # 
+A4F1 ; 2D3A ;  ML      # ( ꓱ → ⴺ ) LISU LETTER EU → TIFINAGH LETTER YADDH      # →Ǝ→
+
+2211 ; 2D49 ;  ML      #* ( ∑ → ⵉ ) N-ARY SUMMATION → TIFINAGH LETTER YI       # →Ʃ→
+2140 ; 2D49 ;  ML      #* ( ⅀ → ⵉ ) DOUBLE-STRUCK N-ARY SUMMATION → TIFINAGH LETTER YI # →∑→→Ʃ→
+1D6BA ;        2D49 ;  ML      # ( 𝚺 → ⵉ ) MATHEMATICAL BOLD CAPITAL SIGMA → TIFINAGH LETTER YI       # →Σ→
+1D6F4 ;        2D49 ;  ML      # ( 𝛴 → ⵉ ) MATHEMATICAL ITALIC CAPITAL SIGMA → TIFINAGH LETTER YI     # →Σ→
+1D72E ;        2D49 ;  ML      # ( 𝜮 → ⵉ ) MATHEMATICAL BOLD ITALIC CAPITAL SIGMA → TIFINAGH LETTER YI        # →Σ→
+1D768 ;        2D49 ;  ML      # ( 𝝨 → ⵉ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA → TIFINAGH LETTER YI    # →Σ→
+1D7A2 ;        2D49 ;  ML      # ( 𝞢 → ⵉ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA → TIFINAGH LETTER YI     # →Σ→
+
+166D ; 2D5D ;  ML      #* ( ᙭ → ⵝ ) CANADIAN SYLLABICS CHI SIGN → TIFINAGH LETTER YATH # →X→
+1D417 ;        2D5D ;  ML      # ( 𝐗 → ⵝ ) MATHEMATICAL BOLD CAPITAL X → TIFINAGH LETTER YATH # →X→
+1D44B ;        2D5D ;  ML      # ( 𝑋 → ⵝ ) MATHEMATICAL ITALIC CAPITAL X → TIFINAGH LETTER YATH       # →X→
+1D47F ;        2D5D ;  ML      # ( 𝑿 → ⵝ ) MATHEMATICAL BOLD ITALIC CAPITAL X → TIFINAGH LETTER YATH  # →X→
+1D4B3 ;        2D5D ;  ML      # ( 𝒳 → ⵝ ) MATHEMATICAL SCRIPT CAPITAL X → TIFINAGH LETTER YATH       # →X→
+1D4E7 ;        2D5D ;  ML      # ( 𝓧 → ⵝ ) MATHEMATICAL BOLD SCRIPT CAPITAL X → TIFINAGH LETTER YATH  # →X→
+1D51B ;        2D5D ;  ML      # ( 𝔛 → ⵝ ) MATHEMATICAL FRAKTUR CAPITAL X → TIFINAGH LETTER YATH      # →X→
+1D54F ;        2D5D ;  ML      # ( 𝕏 → ⵝ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL X → TIFINAGH LETTER YATH        # →X→
+1D583 ;        2D5D ;  ML      # ( 𝖃 → ⵝ ) MATHEMATICAL BOLD FRAKTUR CAPITAL X → TIFINAGH LETTER YATH # →X→
+1D5B7 ;        2D5D ;  ML      # ( 𝖷 → ⵝ ) MATHEMATICAL SANS-SERIF CAPITAL X → TIFINAGH LETTER YATH   # →X→
+1D5EB ;        2D5D ;  ML      # ( 𝗫 → ⵝ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL X → TIFINAGH LETTER YATH      # →X→
+1D61F ;        2D5D ;  ML      # ( 𝘟 → ⵝ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL X → TIFINAGH LETTER YATH    # →X→
+1D653 ;        2D5D ;  ML      # ( 𝙓 → ⵝ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X → TIFINAGH LETTER YATH       # →X→
+1D687 ;        2D5D ;  ML      # ( 𝚇 → ⵝ ) MATHEMATICAL MONOSPACE CAPITAL X → TIFINAGH LETTER YATH    # →X→
+1D6BE ;        2D5D ;  ML      # ( 𝚾 → ⵝ ) MATHEMATICAL BOLD CAPITAL CHI → TIFINAGH LETTER YATH       # →Χ→
+1D6F8 ;        2D5D ;  ML      # ( 𝛸 → ⵝ ) MATHEMATICAL ITALIC CAPITAL CHI → TIFINAGH LETTER YATH     # →Χ→
+1D732 ;        2D5D ;  ML      # ( 𝜲 → ⵝ ) MATHEMATICAL BOLD ITALIC CAPITAL CHI → TIFINAGH LETTER YATH        # →Χ→
+1D76C ;        2D5D ;  ML      # ( 𝝬 → ⵝ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI → TIFINAGH LETTER YATH    # →Χ→
+1D7A6 ;        2D5D ;  ML      # ( 𝞦 → ⵝ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI → TIFINAGH LETTER YATH     # →Χ→
+A4EB ; 2D5D ;  ML      # ( ꓫ → ⵝ ) LISU LETTER SHA → TIFINAGH LETTER YATH      # →X→
+
+0906 ; 0905 093E ;     ML      # ( आ → अा ) DEVANAGARI LETTER AA → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN AA     # 
+
+0912 ; 0905 093E 0946 ;        ML      # ( ऒ → अाॆ ) DEVANAGARI LETTER SHORT O → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN AA, DEVANAGARI VOWEL SIGN SHORT E      # →अॊ→→आॆ→
+
+0913 ; 0905 093E 0947 ;        ML      # ( ओ → अाे ) DEVANAGARI LETTER O → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN AA, DEVANAGARI VOWEL SIGN E  # →अो→→आे→
+
+0914 ; 0905 093E 0948 ;        ML      # ( औ → अाै ) DEVANAGARI LETTER AU → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN AA, DEVANAGARI VOWEL SIGN AI        # →अौ→→आै→
+
+0904 ; 0905 0946 ;     ML      # ( ऄ → अॆ ) DEVANAGARI LETTER SHORT A → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN SHORT E   # 
+
+0911 ; 0905 0949 ;     ML      # ( ऑ → अॉ ) DEVANAGARI LETTER CANDRA O → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN CANDRA O # 
+
+090D ; 090F 0945 ;     ML      # ( ऍ → एॅ ) DEVANAGARI LETTER CANDRA E → DEVANAGARI LETTER E, DEVANAGARI VOWEL SIGN CANDRA E # 
+
+090E ; 090F 0946 ;     ML      # ( ऎ → एॆ ) DEVANAGARI LETTER SHORT E → DEVANAGARI LETTER E, DEVANAGARI VOWEL SIGN SHORT E   # 
+
+0910 ; 090F 0947 ;     ML      # ( ऐ → एे ) DEVANAGARI LETTER AI → DEVANAGARI LETTER E, DEVANAGARI VOWEL SIGN E      # 
+
+0908 ; 0930 094D 0907 ;        ML      # ( ई → र्इ ) DEVANAGARI LETTER II → DEVANAGARI LETTER RA, DEVANAGARI SIGN VIRAMA, DEVANAGARI LETTER I      # 
+
+0ABD ; 093D ;  ML      # ( ઽ → ऽ ) GUJARATI SIGN AVAGRAHA → DEVANAGARI SIGN AVAGRAHA   # 
+
+0AC1 ; 0941 ;  ML      # ( ુ → ु ) GUJARATI VOWEL SIGN U → DEVANAGARI VOWEL SIGN U     # 
+
+0AC2 ; 0942 ;  ML      # ( ૂ → ू ) GUJARATI VOWEL SIGN UU → DEVANAGARI VOWEL SIGN UU   # 
+
+0A4B ; 0946 ;  ML      # ( ੋ → ॆ ) GURMUKHI VOWEL SIGN OO → DEVANAGARI VOWEL SIGN SHORT E      # 
+
+0A4D ; 094D ;  ML      # ( ੍ → ् ) GURMUKHI SIGN VIRAMA → DEVANAGARI SIGN VIRAMA       # 
+0ACD ; 094D ;  ML      # ( ્ → ् ) GUJARATI SIGN VIRAMA → DEVANAGARI SIGN VIRAMA       # 
+
+0986 ; 0985 09BE ;     ML      # ( আ → অা ) BENGALI LETTER AA → BENGALI LETTER A, BENGALI VOWEL SIGN AA      # 
+
+09E0 ; 098B 09C3 ;     ML      # ( ৠ → ঋৃ ) BENGALI LETTER VOCALIC RR → BENGALI LETTER VOCALIC R, BENGALI VOWEL SIGN VOCALIC R       # 
+09E1 ; 098B 09C3 ;     ML      # ( ৡ → ঋৃ ) BENGALI LETTER VOCALIC LL → BENGALI LETTER VOCALIC R, BENGALI VOWEL SIGN VOCALIC R       # →ঌৢ→→ৠ→
+
+0A09 ; 0A73 0A41 ;     ML      # ( ਉ → ੳੁ ) GURMUKHI LETTER U → GURMUKHI URA, GURMUKHI VOWEL SIGN U  # 
+
+0A0A ; 0A73 0A42 ;     ML      # ( ਊ → ੳੂ ) GURMUKHI LETTER UU → GURMUKHI URA, GURMUKHI VOWEL SIGN UU        # 
+
+0A06 ; 0A05 0A3E ;     ML      # ( ਆ → ਅਾ ) GURMUKHI LETTER AA → GURMUKHI LETTER A, GURMUKHI VOWEL SIGN AA   # 
+
+0A10 ; 0A05 0A48 ;     ML      # ( ਐ → ਅੈ ) GURMUKHI LETTER AI → GURMUKHI LETTER A, GURMUKHI VOWEL SIGN AI   # 
+
+0A14 ; 0A05 0A4C ;     ML      # ( ਔ → ਅੌ ) GURMUKHI LETTER AU → GURMUKHI LETTER A, GURMUKHI VOWEL SIGN AU   # 
+
+0A07 ; 0A72 0A3F ;     ML      # ( ਇ → ੲਿ ) GURMUKHI LETTER I → GURMUKHI IRI, GURMUKHI VOWEL SIGN I  # 
+
+0A08 ; 0A72 0A40 ;     ML      # ( ਈ → ੲੀ ) GURMUKHI LETTER II → GURMUKHI IRI, GURMUKHI VOWEL SIGN II        # 
+
+0A0F ; 0A72 0A47 ;     ML      # ( ਏ → ੲੇ ) GURMUKHI LETTER EE → GURMUKHI IRI, GURMUKHI VOWEL SIGN EE        # 
+
+0A86 ; 0A85 0ABE ;     ML      # ( આ → અા ) GUJARATI LETTER AA → GUJARATI LETTER A, GUJARATI VOWEL SIGN AA   # 
+
+0A91 ; 0A85 0ABE 0AC5 ;        ML      # ( ઑ → અાૅ ) GUJARATI VOWEL CANDRA O → GUJARATI LETTER A, GUJARATI VOWEL SIGN AA, GUJARATI VOWEL SIGN CANDRA E     # →અૉ→→આૅ→
+
+0A93 ; 0A85 0ABE 0AC7 ;        ML      # ( ઓ → અાે ) GUJARATI LETTER O → GUJARATI LETTER A, GUJARATI VOWEL SIGN AA, GUJARATI VOWEL SIGN E  # →અો→→આે→
+
+0A94 ; 0A85 0ABE 0AC8 ;        ML      # ( ઔ → અાૈ ) GUJARATI LETTER AU → GUJARATI LETTER A, GUJARATI VOWEL SIGN AA, GUJARATI VOWEL SIGN AI        # →અૌ→→આૈ→
+
+0A8D ; 0A85 0AC5 ;     ML      # ( ઍ → અૅ ) GUJARATI VOWEL CANDRA E → GUJARATI LETTER A, GUJARATI VOWEL SIGN CANDRA E        # 
+
+0A8F ; 0A85 0AC7 ;     ML      # ( એ → અે ) GUJARATI LETTER E → GUJARATI LETTER A, GUJARATI VOWEL SIGN E     # 
+
+0A90 ; 0A85 0AC8 ;     ML      # ( ઐ → અૈ ) GUJARATI LETTER AI → GUJARATI LETTER A, GUJARATI VOWEL SIGN AI   # 
+
+0B06 ; 0B05 0B3E ;     ML      # ( ଆ → ଅା ) ORIYA LETTER AA → ORIYA LETTER A, ORIYA VOWEL SIGN AA    # 
+
+2102 ; 0BD0 ;  ML      # ( ℂ → ௐ ) DOUBLE-STRUCK CAPITAL C → TAMIL OM  # →C→→С→
+212D ; 0BD0 ;  ML      # ( ℭ → ௐ ) BLACK-LETTER CAPITAL C → TAMIL OM   # →C→→С→
+1D402 ;        0BD0 ;  ML      # ( 𝐂 → ௐ ) MATHEMATICAL BOLD CAPITAL C → TAMIL OM     # →C→→С→
+1D436 ;        0BD0 ;  ML      # ( 𝐶 → ௐ ) MATHEMATICAL ITALIC CAPITAL C → TAMIL OM   # →C→→С→
+1D46A ;        0BD0 ;  ML      # ( 𝑪 → ௐ ) MATHEMATICAL BOLD ITALIC CAPITAL C → TAMIL OM      # →C→→С→
+1D49E ;        0BD0 ;  ML      # ( 𝒞 → ௐ ) MATHEMATICAL SCRIPT CAPITAL C → TAMIL OM   # →C→→С→
+1D4D2 ;        0BD0 ;  ML      # ( 𝓒 → ௐ ) MATHEMATICAL BOLD SCRIPT CAPITAL C → TAMIL OM      # →C→→С→
+1D56E ;        0BD0 ;  ML      # ( 𝕮 → ௐ ) MATHEMATICAL BOLD FRAKTUR CAPITAL C → TAMIL OM     # →C→→С→
+1D5A2 ;        0BD0 ;  ML      # ( 𝖢 → ௐ ) MATHEMATICAL SANS-SERIF CAPITAL C → TAMIL OM       # →C→→С→
+1D5D6 ;        0BD0 ;  ML      # ( 𝗖 → ௐ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL C → TAMIL OM  # →C→→С→
+1D60A ;        0BD0 ;  ML      # ( 𝘊 → ௐ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL C → TAMIL OM        # →C→→С→
+1D63E ;        0BD0 ;  ML      # ( 𝘾 → ௐ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C → TAMIL OM   # →C→→С→
+1D672 ;        0BD0 ;  ML      # ( 𝙲 → ௐ ) MATHEMATICAL MONOSPACE CAPITAL C → TAMIL OM        # →C→→С→
+13DF ; 0BD0 ;  ML      # ( Ꮯ → ௐ ) CHEROKEE LETTER TLI → TAMIL OM      # →C→→С→
+A4DA ; 0BD0 ;  ML      # ( ꓚ → ௐ ) LISU LETTER CA → TAMIL OM   # →C→→С→
+
+0BEE ; 0B85 ;  ML      # ( ௮ → அ ) TAMIL DIGIT EIGHT → TAMIL LETTER A  # 
+
+0BB0 ; 0B88 ;  ML      # ( ர → ஈ ) TAMIL LETTER RA → TAMIL LETTER II   # →ா→
+0BBE ; 0B88 ;  ML      # ( ா → ஈ ) TAMIL VOWEL SIGN AA → TAMIL LETTER II       # 
+
+0BEB ; 0B88 0BC1 ;     ML      # ( ௫ → ஈு ) TAMIL DIGIT FIVE → TAMIL LETTER II, TAMIL VOWEL SIGN U   # →ரு→
+
+0BE8 ; 0B89 ;  ML      # ( ௨ → உ ) TAMIL DIGIT TWO → TAMIL LETTER U    # 
+0D09 ; 0B89 ;  ML      # ( ഉ → உ ) MALAYALAM LETTER U → TAMIL LETTER U # 
+
+0B8A ; 0B89 0BB3 ;     ML      # ( ஊ → உள ) TAMIL LETTER UU → TAMIL LETTER U, TAMIL LETTER LLA       # 
+
+0D0A ; 0B89 0D57 ;     ML      # ( ഊ → உൗ ) MALAYALAM LETTER UU → TAMIL LETTER U, MALAYALAM AU LENGTH MARK   # →ഉൗ→
+
+0BED ; 0B8E ;  ML      # ( ௭ → எ ) TAMIL DIGIT SEVEN → TAMIL LETTER E  # 
+
+0BF7 ; 0B8E 0BB5 ;     ML      #* ( ௷ → எவ ) TAMIL CREDIT SIGN → TAMIL LETTER E, TAMIL LETTER VA     # 
+
+0B9C ; 0B90 ;  ML      # ( ஜ → ஐ ) TAMIL LETTER JA → TAMIL LETTER AI   # 
+0D1C ; 0B90 ;  ML      # ( ജ → ஐ ) MALAYALAM LETTER JA → TAMIL LETTER AI       # →ஜ→
+
+0BE7 ; 0B95 ;  ML      # ( ௧ → க ) TAMIL DIGIT ONE → TAMIL LETTER KA   # 
+
+0BEA ; 0B9A ;  ML      # ( ௪ → ச ) TAMIL DIGIT FOUR → TAMIL LETTER CA  # 
+
+0BEC ; 0B9A 0BC1 ;     ML      # ( ௬ → சு ) TAMIL DIGIT SIX → TAMIL LETTER CA, TAMIL VOWEL SIGN U    # 
+
+0BF2 ; 0B9A 0BC2 ;     ML      #* ( ௲ → சூ ) TAMIL NUMBER ONE THOUSAND → TAMIL LETTER CA, TAMIL VOWEL SIGN UU        # 
+
+0D23 ; 0BA3 ;  ML      # ( ണ → ண ) MALAYALAM LETTER NNA → TAMIL LETTER NNA     # 
+
+0BFA ; 0BA8 0BC0 ;     ML      #* ( ௺ → நீ ) TAMIL NUMBER SIGN → TAMIL LETTER NA, TAMIL VOWEL SIGN II        # 
+
+0BF4 ; 0BAE 0BC0 ;     ML      #* ( ௴ → மீ ) TAMIL MONTH SIGN → TAMIL LETTER MA, TAMIL VOWEL SIGN II # 
+
+0BF0 ; 0BAF ;  ML      #* ( ௰ → ய ) TAMIL NUMBER TEN → TAMIL LETTER YA # 
+
+0D34 ; 0BB4 ;  ML      # ( ഴ → ழ ) MALAYALAM LETTER LLLA → TAMIL LETTER LLLA   # 
+
+0BD7 ; 0BB3 ;  ML      # ( ௗ → ள ) TAMIL AU LENGTH MARK → TAMIL LETTER LLA     # 
+
+0BC8 ; 0BA9 ;  ML      # ( ை → ன ) TAMIL VOWEL SIGN AI → TAMIL LETTER NNNA     # 
+
+0D36 ; 0BB6 ;  ML      # ( ശ → ஶ ) MALAYALAM LETTER SHA → TAMIL LETTER SHA     # 
+
+0BF8 ; 0BB7 ;  ML      #* ( ௸ → ஷ ) TAMIL AS ABOVE SIGN → TAMIL LETTER SSA     # 
+
+0D3F ; 0BBF ;  ML      # ( ി → ி ) MALAYALAM VOWEL SIGN I → TAMIL VOWEL SIGN I # 
+0D40 ; 0BBF ;  ML      # ( ീ → ி ) MALAYALAM VOWEL SIGN II → TAMIL VOWEL SIGN I        # 
+
+0BCA ; 0BC6 0B88 ;     ML      # ( ொ → ெஈ ) TAMIL VOWEL SIGN O → TAMIL VOWEL SIGN E, TAMIL LETTER II # →ெர→
+
+0BCC ; 0BC6 0BB3 ;     ML      # ( ௌ → ெள ) TAMIL VOWEL SIGN AU → TAMIL VOWEL SIGN E, TAMIL LETTER LLA       # 
+
+0BCB ; 0BC7 0B88 ;     ML      # ( ோ → ேஈ ) TAMIL VOWEL SIGN OO → TAMIL VOWEL SIGN EE, TAMIL LETTER II       # →ேர→
+
+0C85 ; 0C05 ;  ML      # ( ಅ → అ ) KANNADA LETTER A → TELUGU LETTER A  # 
+
+0C86 ; 0C06 ;  ML      # ( ಆ → ఆ ) KANNADA LETTER AA → TELUGU LETTER AA        # 
+
+0C87 ; 0C07 ;  ML      # ( ಇ → ఇ ) KANNADA LETTER I → TELUGU LETTER I  # 
+
+0C60 ; 0C0B 0C3E ;     ML      # ( ౠ → ఋా ) TELUGU LETTER VOCALIC RR → TELUGU LETTER VOCALIC R, TELUGU VOWEL SIGN AA # 
+
+0C61 ; 0C0C 0C3E ;     ML      # ( ౡ → ఌా ) TELUGU LETTER VOCALIC LL → TELUGU LETTER VOCALIC L, TELUGU VOWEL SIGN AA # 
+
+0C92 ; 0C12 ;  ML      # ( ಒ → ఒ ) KANNADA LETTER O → TELUGU LETTER O  # 
+
+0C14 ; 0C12 0C4C ;     ML      # ( ఔ → ఒౌ ) TELUGU LETTER AU → TELUGU LETTER O, TELUGU VOWEL SIGN AU # 
+0C94 ; 0C12 0C4C ;     ML      # ( ಔ → ఒౌ ) KANNADA LETTER AU → TELUGU LETTER O, TELUGU VOWEL SIGN AU        # →ఔ→
+
+0C13 ; 0C12 0C55 ;     ML      # ( ఓ → ఒౕ ) TELUGU LETTER OO → TELUGU LETTER O, TELUGU LENGTH MARK   # 
+0C93 ; 0C12 0C55 ;     ML      # ( ಓ → ఒౕ ) KANNADA LETTER OO → TELUGU LETTER O, TELUGU LENGTH MARK  # →ఓ→
+
+0C9C ; 0C1C ;  ML      # ( ಜ → జ ) KANNADA LETTER JA → TELUGU LETTER JA        # 
+
+0C9E ; 0C1E ;  ML      # ( ಞ → ఞ ) KANNADA LETTER NYA → TELUGU LETTER NYA      # 
+
+0C22 ; 0C21 0323 ;     ML      # ( ఢ → డ̣ ) TELUGU LETTER DDHA → TELUGU LETTER DDA, COMBINING DOT BELOW       # 
+
+0CA3 ; 0C23 ;  ML      # ( ಣ → ణ ) KANNADA LETTER NNA → TELUGU LETTER NNA      # 
+
+0C25 ; 0C27 05BC ;     ML      # ( థ → ధּ ) TELUGU LETTER THA → TELUGU LETTER DHA, HEBREW POINT DAGESH OR MAPIQ       # 
+
+0C2D ; 0C2C 0323 ;     ML      # ( భ → బ̣ ) TELUGU LETTER BHA → TELUGU LETTER BA, COMBINING DOT BELOW # 
+
+0CAF ; 0C2F ;  ML      # ( ಯ → య ) KANNADA LETTER YA → TELUGU LETTER YA        # 
+
+0C20 ; 0C30 05BC ;     ML      # ( ఠ → రּ ) TELUGU LETTER TTHA → TELUGU LETTER RA, HEBREW POINT DAGESH OR MAPIQ       # 
+
+0CB1 ; 0C31 ;  ML      # ( ಱ → ఱ ) KANNADA LETTER RRA → TELUGU LETTER RRA      # 
+
+0CB2 ; 0C32 ;  ML      # ( ಲ → ల ) KANNADA LETTER LA → TELUGU LETTER LA        # 
+
+0C37 ; 0C35 0323 ;     ML      # ( ష → వ̣ ) TELUGU LETTER SSA → TELUGU LETTER VA, COMBINING DOT BELOW # 
+
+0C39 ; 0C35 0C3E ;     ML      # ( హ → వా ) TELUGU LETTER HA → TELUGU LETTER VA, TELUGU VOWEL SIGN AA        # 
+
+0C2E ; 0C35 0C41 ;     ML      # ( మ → వు ) TELUGU LETTER MA → TELUGU LETTER VA, TELUGU VOWEL SIGN U # 
+
+0C42 ; 0C41 0C3E ;     ML      # ( ూ → ుా ) TELUGU VOWEL SIGN UU → TELUGU VOWEL SIGN U, TELUGU VOWEL SIGN AA # 
+
+0C44 ; 0C43 0C3E ;     ML      # ( ౄ → ృా ) TELUGU VOWEL SIGN VOCALIC RR → TELUGU VOWEL SIGN VOCALIC R, TELUGU VOWEL SIGN AA # 
+
+0CE1 ; 0C8C 0CBE ;     ML      # ( ೡ → ಌಾ ) KANNADA LETTER VOCALIC LL → KANNADA LETTER VOCALIC L, KANNADA VOWEL SIGN AA      # 
+
+0D08 ; 0D07 0D57 ;     ML      # ( ഈ → ഇൗ ) MALAYALAM LETTER II → MALAYALAM LETTER I, MALAYALAM AU LENGTH MARK       # 
+
+0D10 ; 0D0E 0D46 ;     ML      # ( ഐ → എെ ) MALAYALAM LETTER AI → MALAYALAM LETTER E, MALAYALAM VOWEL SIGN E # 
+
+0D13 ; 0D12 0D3E ;     ML      # ( ഓ → ഒാ ) MALAYALAM LETTER OO → MALAYALAM LETTER O, MALAYALAM VOWEL SIGN AA        # 
+
+0D14 ; 0D12 0D57 ;     ML      # ( ഔ → ഒൗ ) MALAYALAM LETTER AU → MALAYALAM LETTER O, MALAYALAM AU LENGTH MARK       # 
+
+0D61 ; 0D1E ;  ML      # ( ൡ → ഞ ) MALAYALAM LETTER VOCALIC LL → MALAYALAM LETTER NYA  # 
+
+0D6B ; 0D26 0D4D 0D30 ;        ML      # ( ൫ → ദ്ര ) MALAYALAM DIGIT FIVE → MALAYALAM LETTER DA, MALAYALAM SIGN VIRAMA, MALAYALAM LETTER RA        # 
+
+0D0C ; 0D28 0D41 ;     ML      # ( ഌ → നു ) MALAYALAM LETTER VOCALIC L → MALAYALAM LETTER NA, MALAYALAM VOWEL SIGN U # 
+0D19 ; 0D28 0D41 ;     ML      # ( ങ → നു ) MALAYALAM LETTER NGA → MALAYALAM LETTER NA, MALAYALAM VOWEL SIGN U       # →ഌ→
+
+0D6F ; 0D28 0D4D ;     ML      # ( ൯ → ന് ) MALAYALAM DIGIT NINE → MALAYALAM LETTER NA, MALAYALAM SIGN VIRAMA        # 
+
+0D8C ; 0D28 0D4D 0D28 ;        ML      # ( ඌ → ന്ന ) SINHALA LETTER UUYANNA → MALAYALAM LETTER NA, MALAYALAM SIGN VIRAMA, MALAYALAM LETTER NA      # 
+
+0D31 ; 0D30 ;  ML      # ( റ → ര ) MALAYALAM LETTER RRA → MALAYALAM LETTER RA  # 
+
+0D6A ; 0D30 0D4D ;     ML      # ( ൪ → ര് ) MALAYALAM DIGIT FOUR → MALAYALAM LETTER RA, MALAYALAM SIGN VIRAMA        # 
+
+0D6E ; 0D35 0D4D ;     ML      # ( ൮ → വ് ) MALAYALAM DIGIT EIGHT → MALAYALAM LETTER VA, MALAYALAM SIGN VIRAMA       # 
+
+0D42 ; 0D41 ;  ML      # ( ൂ → ു ) MALAYALAM VOWEL SIGN UU → MALAYALAM VOWEL SIGN U    # 
+0D43 ; 0D41 ;  ML      # ( ൃ → ു ) MALAYALAM VOWEL SIGN VOCALIC R → MALAYALAM VOWEL SIGN U     # →ൂ→
+
+0D48 ; 0D46 0D46 ;     ML      # ( ൈ → െെ ) MALAYALAM VOWEL SIGN AI → MALAYALAM VOWEL SIGN E, MALAYALAM VOWEL SIGN E # 
+
+0E03 ; 0E02 ;  ML      # ( ฃ → ข ) THAI CHARACTER KHO KHUAT → THAI CHARACTER KHO KHAI  # 
+
+0E14 ; 0E04 ;  ML      # ( ด → ค ) THAI CHARACTER DO DEK → THAI CHARACTER KHO KHWAI    # 
+0E15 ; 0E04 ;  ML      # ( ต → ค ) THAI CHARACTER TO TAO → THAI CHARACTER KHO KHWAI    # →ด→
+
+0E21 ; 0E06 ;  ML      # ( ม → ฆ ) THAI CHARACTER MO MA → THAI CHARACTER KHO RAKHANG   # 
+
+0E88 ; 0E08 ;  ML      # ( ຈ → จ ) LAO LETTER CO → THAI CHARACTER CHO CHAN     # 
+
+0E0B ; 0E0A ;  ML      # ( ซ → ช ) THAI CHARACTER SO SO → THAI CHARACTER CHO CHANG     # 
+
+0E0F ; 0E0E ;  ML      # ( ฏ → ฎ ) THAI CHARACTER TO PATAK → THAI CHARACTER DO CHADA   # 
+
+0E17 ; 0E11 ;  ML      # ( ท → ฑ ) THAI CHARACTER THO THAHAN → THAI CHARACTER THO NANGMONTHO   # 
+
+0E9A ; 0E1A ;  ML      # ( ບ → บ ) LAO LETTER BO → THAI CHARACTER BO BAIMAI    # 
+
+0E9B ; 0E1B ;  ML      # ( ປ → ป ) LAO LETTER PO → THAI CHARACTER PO PLA       # 
+
+0E9D ; 0E1D ;  ML      # ( ຝ → ฝ ) LAO LETTER FO TAM → THAI CHARACTER FO FA    # 
+
+0E9E ; 0E1E ;  ML      # ( ພ → พ ) LAO LETTER PHO TAM → THAI CHARACTER PHO PHAN        # 
+
+0E9F ; 0E1F ;  ML      # ( ຟ → ฟ ) LAO LETTER FO SUNG → THAI CHARACTER FO FAN  # 
+
+0E26 ; 0E20 ;  ML      # ( ฦ → ภ ) THAI CHARACTER LU → THAI CHARACTER PHO SAMPHAO      # 
+
+0E8D ; 0E22 ;  ML      # ( ຍ → ย ) LAO LETTER NYO → THAI CHARACTER YO YAK      # 
+
+17D4 ; 0E2F ;  ML      #* ( ។ → ฯ ) KHMER SIGN KHAN → THAI CHARACTER PAIYANNOI # 
+
+0E45 ; 0E32 ;  ML      # ( ๅ → า ) THAI CHARACTER LAKKHANGYAO → THAI CHARACTER SARA AA # 
+
+0E33 ; 030A 0E32 ;     ML      # ( ำ → ̊า ) THAI CHARACTER SARA AM → COMBINING RING ABOVE, THAI CHARACTER SARA AA     # →ํา→
+
+17B7 ; 0E34 ;  ML      # ( ិ → ิ ) KHMER VOWEL SIGN I → THAI CHARACTER SARA I  # 
+
+17B8 ; 0E35 ;  ML      # ( ី → ี ) KHMER VOWEL SIGN II → THAI CHARACTER SARA II        # 
+
+17B9 ; 0E36 ;  ML      # ( ឹ → ึ ) KHMER VOWEL SIGN Y → THAI CHARACTER SARA UE # 
+
+17BA ; 0E37 ;  ML      # ( ឺ → ื ) KHMER VOWEL SIGN YY → THAI CHARACTER SARA UEE       # 
+
+0EB8 ; 0E38 ;  ML      # ( ຸ → ุ ) LAO VOWEL SIGN U → THAI CHARACTER SARA U    # 
+
+0EB9 ; 0E39 ;  ML      # ( ູ → ู ) LAO VOWEL SIGN UU → THAI CHARACTER SARA UU  # 
+
+0E41 ; 0E40 0E40 ;     ML      # ( แ → เเ ) THAI CHARACTER SARA AE → THAI CHARACTER SARA E, THAI CHARACTER SARA E    # 
+
+0EDC ; 0EAB 0E99 ;     ML      # ( ໜ → ຫນ ) LAO HO NO → LAO LETTER HO SUNG, LAO LETTER NO    # 
+
+0EDD ; 0EAB 0EA1 ;     ML      # ( ໝ → ຫມ ) LAO HO MO → LAO LETTER HO SUNG, LAO LETTER MO    # 
+
+0EB3 ; 030A 0EB2 ;     ML      # ( ຳ → ̊າ ) LAO VOWEL SIGN AM → COMBINING RING ABOVE, LAO VOWEL SIGN AA       # →ໍາ→
+
+0F6A ; 0F62 ;  ML      # ( ཪ → ར ) TIBETAN LETTER FIXED-FORM RA → TIBETAN LETTER RA    # 
+
+0F77 ; 0FB2 0F71 0F80 ;        ML      # ( ཷ → ྲཱྀ ) TIBETAN VOWEL SIGN VOCALIC RR → TIBETAN SUBJOINED LETTER RA, TIBETAN VOWEL SIGN AA, TIBETAN VOWEL SIGN REVERSED I     # 
+
+0F79 ; 0FB3 0F71 0F80 ;        ML      # ( ཹ → ླཱྀ ) TIBETAN VOWEL SIGN VOCALIC LL → TIBETAN SUBJOINED LETTER LA, TIBETAN VOWEL SIGN AA, TIBETAN VOWEL SIGN REVERSED I     # 
+
+17A3 ; 17A2 ;  ML      # ( ឣ → អ ) KHMER INDEPENDENT VOWEL QAQ → KHMER LETTER QA       # 
+
+19D0 ; 199E ;  ML      # ( ᧐ → ᦞ ) NEW TAI LUE DIGIT ZERO → NEW TAI LUE LETTER LOW VA  # 
+
+19D1 ; 19B1 ;  ML      # ( ᧑ → ᦱ ) NEW TAI LUE DIGIT ONE → NEW TAI LUE VOWEL SIGN AA   # 
+
+1A80 ; 1A45 ;  ML      # ( ᪀ → ᩅ ) TAI THAM HORA DIGIT ZERO → TAI THAM LETTER WA       # 
+1A90 ; 1A45 ;  ML      # ( ᪐ → ᩅ ) TAI THAM THAM DIGIT ZERO → TAI THAM LETTER WA       # 
+
+AA53 ; AA01 ;  ML      # ( ꩓ → ꨁ ) CHAM DIGIT THREE → CHAM LETTER I    # 
+
+AA56 ; AA23 ;  ML      # ( ꩖ → ꨣ ) CHAM DIGIT SIX → CHAM LETTER RA     # 
+
+1B52 ; 1B0D ;  ML      # ( ᭒ → ᬍ ) BALINESE DIGIT TWO → BALINESE LETTER LA LENGA       # 
+
+1B53 ; 1B11 ;  ML      # ( ᭓ → ᬑ ) BALINESE DIGIT THREE → BALINESE LETTER OKARA        # 
+
+1B58 ; 1B28 ;  ML      # ( ᭘ → ᬨ ) BALINESE DIGIT EIGHT → BALINESE LETTER PA KAPAL     # 
+
+1896 ; 185C ;  ML      # ( ᢖ → ᡜ ) MONGOLIAN LETTER ALI GALI ZA → MONGOLIAN LETTER TODO DZA    # 
+
+1855 ; 1835 ;  ML      # ( ᡕ → ᠵ ) MONGOLIAN LETTER TODO YA → MONGOLIAN LETTER JA      # 
+
+27D9 ; 13A2 ;  ML      #* ( ⟙ → Ꭲ ) LARGE DOWN TACK → CHEROKEE LETTER I        # →T→
+1D413 ;        13A2 ;  ML      # ( 𝐓 → Ꭲ ) MATHEMATICAL BOLD CAPITAL T → CHEROKEE LETTER I    # →T→
+1D447 ;        13A2 ;  ML      # ( 𝑇 → Ꭲ ) MATHEMATICAL ITALIC CAPITAL T → CHEROKEE LETTER I  # →T→
+1D47B ;        13A2 ;  ML      # ( 𝑻 → Ꭲ ) MATHEMATICAL BOLD ITALIC CAPITAL T → CHEROKEE LETTER I     # →T→
+1D4AF ;        13A2 ;  ML      # ( 𝒯 → Ꭲ ) MATHEMATICAL SCRIPT CAPITAL T → CHEROKEE LETTER I  # →T→
+1D4E3 ;        13A2 ;  ML      # ( 𝓣 → Ꭲ ) MATHEMATICAL BOLD SCRIPT CAPITAL T → CHEROKEE LETTER I     # →T→
+1D517 ;        13A2 ;  ML      # ( 𝔗 → Ꭲ ) MATHEMATICAL FRAKTUR CAPITAL T → CHEROKEE LETTER I # →T→
+1D54B ;        13A2 ;  ML      # ( 𝕋 → Ꭲ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL T → CHEROKEE LETTER I   # →T→
+1D57F ;        13A2 ;  ML      # ( 𝕿 → Ꭲ ) MATHEMATICAL BOLD FRAKTUR CAPITAL T → CHEROKEE LETTER I    # →T→
+1D5B3 ;        13A2 ;  ML      # ( 𝖳 → Ꭲ ) MATHEMATICAL SANS-SERIF CAPITAL T → CHEROKEE LETTER I      # →T→
+1D5E7 ;        13A2 ;  ML      # ( 𝗧 → Ꭲ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL T → CHEROKEE LETTER I # →T→
+1D61B ;        13A2 ;  ML      # ( 𝘛 → Ꭲ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL T → CHEROKEE LETTER I       # →T→
+1D64F ;        13A2 ;  ML      # ( 𝙏 → Ꭲ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T → CHEROKEE LETTER I  # →T→
+1D683 ;        13A2 ;  ML      # ( 𝚃 → Ꭲ ) MATHEMATICAL MONOSPACE CAPITAL T → CHEROKEE LETTER I       # →T→
+1D6BB ;        13A2 ;  ML      # ( 𝚻 → Ꭲ ) MATHEMATICAL BOLD CAPITAL TAU → CHEROKEE LETTER I  # →Τ→
+1D6F5 ;        13A2 ;  ML      # ( 𝛵 → Ꭲ ) MATHEMATICAL ITALIC CAPITAL TAU → CHEROKEE LETTER I        # →Τ→
+1D72F ;        13A2 ;  ML      # ( 𝜯 → Ꭲ ) MATHEMATICAL BOLD ITALIC CAPITAL TAU → CHEROKEE LETTER I   # →Τ→
+1D769 ;        13A2 ;  ML      # ( 𝝩 → Ꭲ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU → CHEROKEE LETTER I       # →Τ→
+1D7A3 ;        13A2 ;  ML      # ( 𝞣 → Ꭲ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU → CHEROKEE LETTER I        # →Τ→
+A4D4 ; 13A2 ;  ML      # ( ꓔ → Ꭲ ) LISU LETTER TA → CHEROKEE LETTER I  # →T→
+
+1D418 ;        13A9 ;  ML      # ( 𝐘 → Ꭹ ) MATHEMATICAL BOLD CAPITAL Y → CHEROKEE LETTER GI   # →Y→
+1D44C ;        13A9 ;  ML      # ( 𝑌 → Ꭹ ) MATHEMATICAL ITALIC CAPITAL Y → CHEROKEE LETTER GI # →Y→
+1D480 ;        13A9 ;  ML      # ( 𝒀 → Ꭹ ) MATHEMATICAL BOLD ITALIC CAPITAL Y → CHEROKEE LETTER GI    # →Y→
+1D4B4 ;        13A9 ;  ML      # ( 𝒴 → Ꭹ ) MATHEMATICAL SCRIPT CAPITAL Y → CHEROKEE LETTER GI # →Y→
+1D4E8 ;        13A9 ;  ML      # ( 𝓨 → Ꭹ ) MATHEMATICAL BOLD SCRIPT CAPITAL Y → CHEROKEE LETTER GI    # →Y→
+1D51C ;        13A9 ;  ML      # ( 𝔜 → Ꭹ ) MATHEMATICAL FRAKTUR CAPITAL Y → CHEROKEE LETTER GI        # →Y→
+1D550 ;        13A9 ;  ML      # ( 𝕐 → Ꭹ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL Y → CHEROKEE LETTER GI  # →Y→
+1D584 ;        13A9 ;  ML      # ( 𝖄 → Ꭹ ) MATHEMATICAL BOLD FRAKTUR CAPITAL Y → CHEROKEE LETTER GI   # →Y→
+1D5B8 ;        13A9 ;  ML      # ( 𝖸 → Ꭹ ) MATHEMATICAL SANS-SERIF CAPITAL Y → CHEROKEE LETTER GI     # →Y→
+1D5EC ;        13A9 ;  ML      # ( 𝗬 → Ꭹ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL Y → CHEROKEE LETTER GI        # →Y→
+1D620 ;        13A9 ;  ML      # ( 𝘠 → Ꭹ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y → CHEROKEE LETTER GI      # →Y→
+1D654 ;        13A9 ;  ML      # ( 𝙔 → Ꭹ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y → CHEROKEE LETTER GI # →Y→
+1D688 ;        13A9 ;  ML      # ( 𝚈 → Ꭹ ) MATHEMATICAL MONOSPACE CAPITAL Y → CHEROKEE LETTER GI      # →Y→
+03D2 ; 13A9 ;  ML      # ( ϒ → Ꭹ ) GREEK UPSILON WITH HOOK SYMBOL → CHEROKEE LETTER GI  # →Y→
+1D6BC ;        13A9 ;  ML      # ( 𝚼 → Ꭹ ) MATHEMATICAL BOLD CAPITAL UPSILON → CHEROKEE LETTER GI     # →Υ→→Y→
+1D6F6 ;        13A9 ;  ML      # ( 𝛶 → Ꭹ ) MATHEMATICAL ITALIC CAPITAL UPSILON → CHEROKEE LETTER GI   # →Υ→→Y→
+1D730 ;        13A9 ;  ML      # ( 𝜰 → Ꭹ ) MATHEMATICAL BOLD ITALIC CAPITAL UPSILON → CHEROKEE LETTER GI      # →Υ→→Y→
+1D76A ;        13A9 ;  ML      # ( 𝝪 → Ꭹ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON → CHEROKEE LETTER GI  # →Υ→→Y→
+1D7A4 ;        13A9 ;  ML      # ( 𝞤 → Ꭹ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON → CHEROKEE LETTER GI   # →Υ→→Y→
+13BD ; 13A9 ;  ML      # ( Ꮍ → Ꭹ ) CHEROKEE LETTER MU → CHEROKEE LETTER GI     # 
+A4EC ; 13A9 ;  ML      # ( ꓬ → Ꭹ ) LISU LETTER YA → CHEROKEE LETTER GI # →Y→
+
+1D416 ;        13B3 ;  ML      # ( 𝐖 → Ꮃ ) MATHEMATICAL BOLD CAPITAL W → CHEROKEE LETTER LA   # →W→
+1D44A ;        13B3 ;  ML      # ( 𝑊 → Ꮃ ) MATHEMATICAL ITALIC CAPITAL W → CHEROKEE LETTER LA # →W→
+1D47E ;        13B3 ;  ML      # ( 𝑾 → Ꮃ ) MATHEMATICAL BOLD ITALIC CAPITAL W → CHEROKEE LETTER LA    # →W→
+1D4B2 ;        13B3 ;  ML      # ( 𝒲 → Ꮃ ) MATHEMATICAL SCRIPT CAPITAL W → CHEROKEE LETTER LA # →W→
+1D4E6 ;        13B3 ;  ML      # ( 𝓦 → Ꮃ ) MATHEMATICAL BOLD SCRIPT CAPITAL W → CHEROKEE LETTER LA    # →W→
+1D51A ;        13B3 ;  ML      # ( 𝔚 → Ꮃ ) MATHEMATICAL FRAKTUR CAPITAL W → CHEROKEE LETTER LA        # →W→
+1D54E ;        13B3 ;  ML      # ( 𝕎 → Ꮃ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL W → CHEROKEE LETTER LA  # →W→
+1D582 ;        13B3 ;  ML      # ( 𝖂 → Ꮃ ) MATHEMATICAL BOLD FRAKTUR CAPITAL W → CHEROKEE LETTER LA   # →W→
+1D5B6 ;        13B3 ;  ML      # ( 𝖶 → Ꮃ ) MATHEMATICAL SANS-SERIF CAPITAL W → CHEROKEE LETTER LA     # →W→
+1D5EA ;        13B3 ;  ML      # ( 𝗪 → Ꮃ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL W → CHEROKEE LETTER LA        # →W→
+1D61E ;        13B3 ;  ML      # ( 𝘞 → Ꮃ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL W → CHEROKEE LETTER LA      # →W→
+1D652 ;        13B3 ;  ML      # ( 𝙒 → Ꮃ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W → CHEROKEE LETTER LA # →W→
+1D686 ;        13B3 ;  ML      # ( 𝚆 → Ꮃ ) MATHEMATICAL MONOSPACE CAPITAL W → CHEROKEE LETTER LA      # →W→
+13D4 ; 13B3 ;  ML      # ( Ꮤ → Ꮃ ) CHEROKEE LETTER TA → CHEROKEE LETTER LA     # 
+A4EA ; 13B3 ;  ML      # ( ꓪ → Ꮃ ) LISU LETTER WA → CHEROKEE LETTER LA # →W→
+
+1D406 ;        13C0 ;  ML      # ( 𝐆 → Ꮐ ) MATHEMATICAL BOLD CAPITAL G → CHEROKEE LETTER NAH  # →G→
+1D43A ;        13C0 ;  ML      # ( 𝐺 → Ꮐ ) MATHEMATICAL ITALIC CAPITAL G → CHEROKEE LETTER NAH        # →G→
+1D46E ;        13C0 ;  ML      # ( 𝑮 → Ꮐ ) MATHEMATICAL BOLD ITALIC CAPITAL G → CHEROKEE LETTER NAH   # →G→
+1D4A2 ;        13C0 ;  ML      # ( 𝒢 → Ꮐ ) MATHEMATICAL SCRIPT CAPITAL G → CHEROKEE LETTER NAH        # →G→
+1D4D6 ;        13C0 ;  ML      # ( 𝓖 → Ꮐ ) MATHEMATICAL BOLD SCRIPT CAPITAL G → CHEROKEE LETTER NAH   # →G→
+1D50A ;        13C0 ;  ML      # ( 𝔊 → Ꮐ ) MATHEMATICAL FRAKTUR CAPITAL G → CHEROKEE LETTER NAH       # →G→
+1D53E ;        13C0 ;  ML      # ( 𝔾 → Ꮐ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL G → CHEROKEE LETTER NAH # →G→
+1D572 ;        13C0 ;  ML      # ( 𝕲 → Ꮐ ) MATHEMATICAL BOLD FRAKTUR CAPITAL G → CHEROKEE LETTER NAH  # →G→
+1D5A6 ;        13C0 ;  ML      # ( 𝖦 → Ꮐ ) MATHEMATICAL SANS-SERIF CAPITAL G → CHEROKEE LETTER NAH    # →G→
+1D5DA ;        13C0 ;  ML      # ( 𝗚 → Ꮐ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL G → CHEROKEE LETTER NAH       # →G→
+1D60E ;        13C0 ;  ML      # ( 𝘎 → Ꮐ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL G → CHEROKEE LETTER NAH     # →G→
+1D642 ;        13C0 ;  ML      # ( 𝙂 → Ꮐ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G → CHEROKEE LETTER NAH        # →G→
+1D676 ;        13C0 ;  ML      # ( 𝙶 → Ꮐ ) MATHEMATICAL MONOSPACE CAPITAL G → CHEROKEE LETTER NAH     # →G→
+13F3 ; 13C0 ;  ML      # ( Ᏻ → Ꮐ ) CHEROKEE LETTER YU → CHEROKEE LETTER NAH    # 
+A4D6 ; 13C0 ;  ML      # ( ꓖ → Ꮐ ) LISU LETTER GA → CHEROKEE LETTER NAH        # →G→
+
+2124 ; 13C3 ;  ML      # ( ℤ → Ꮓ ) DOUBLE-STRUCK CAPITAL Z → CHEROKEE LETTER NO        # →Z→
+2128 ; 13C3 ;  ML      # ( ℨ → Ꮓ ) BLACK-LETTER CAPITAL Z → CHEROKEE LETTER NO # →Z→
+1D419 ;        13C3 ;  ML      # ( 𝐙 → Ꮓ ) MATHEMATICAL BOLD CAPITAL Z → CHEROKEE LETTER NO   # →Z→
+1D44D ;        13C3 ;  ML      # ( 𝑍 → Ꮓ ) MATHEMATICAL ITALIC CAPITAL Z → CHEROKEE LETTER NO # →Z→
+1D481 ;        13C3 ;  ML      # ( 𝒁 → Ꮓ ) MATHEMATICAL BOLD ITALIC CAPITAL Z → CHEROKEE LETTER NO    # →Z→
+1D4B5 ;        13C3 ;  ML      # ( 𝒵 → Ꮓ ) MATHEMATICAL SCRIPT CAPITAL Z → CHEROKEE LETTER NO # →Z→
+1D4E9 ;        13C3 ;  ML      # ( 𝓩 → Ꮓ ) MATHEMATICAL BOLD SCRIPT CAPITAL Z → CHEROKEE LETTER NO    # →Z→
+1D585 ;        13C3 ;  ML      # ( 𝖅 → Ꮓ ) MATHEMATICAL BOLD FRAKTUR CAPITAL Z → CHEROKEE LETTER NO   # →Z→
+1D5B9 ;        13C3 ;  ML      # ( 𝖹 → Ꮓ ) MATHEMATICAL SANS-SERIF CAPITAL Z → CHEROKEE LETTER NO     # →Z→
+1D5ED ;        13C3 ;  ML      # ( 𝗭 → Ꮓ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL Z → CHEROKEE LETTER NO        # →Z→
+1D621 ;        13C3 ;  ML      # ( 𝘡 → Ꮓ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z → CHEROKEE LETTER NO      # →Z→
+1D655 ;        13C3 ;  ML      # ( 𝙕 → Ꮓ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z → CHEROKEE LETTER NO # →Z→
+1D689 ;        13C3 ;  ML      # ( 𝚉 → Ꮓ ) MATHEMATICAL MONOSPACE CAPITAL Z → CHEROKEE LETTER NO      # →Z→
+1D6AD ;        13C3 ;  ML      # ( 𝚭 → Ꮓ ) MATHEMATICAL BOLD CAPITAL ZETA → CHEROKEE LETTER NO        # →Ζ→
+1D6E7 ;        13C3 ;  ML      # ( 𝛧 → Ꮓ ) MATHEMATICAL ITALIC CAPITAL ZETA → CHEROKEE LETTER NO      # →Ζ→
+1D721 ;        13C3 ;  ML      # ( 𝜡 → Ꮓ ) MATHEMATICAL BOLD ITALIC CAPITAL ZETA → CHEROKEE LETTER NO # →Ζ→
+1D75B ;        13C3 ;  ML      # ( 𝝛 → Ꮓ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA → CHEROKEE LETTER NO     # →Ζ→
+1D795 ;        13C3 ;  ML      # ( 𝞕 → Ꮓ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA → CHEROKEE LETTER NO      # →Ζ→
+A4DC ; 13C3 ;  ML      # ( ꓜ → Ꮓ ) LISU LETTER DZA → CHEROKEE LETTER NO        # →Z→
+
+1D412 ;        13D5 ;  ML      # ( 𝐒 → Ꮥ ) MATHEMATICAL BOLD CAPITAL S → CHEROKEE LETTER DE   # →S→→Ꮪ→
+1D446 ;        13D5 ;  ML      # ( 𝑆 → Ꮥ ) MATHEMATICAL ITALIC CAPITAL S → CHEROKEE LETTER DE # →S→→Ꮪ→
+1D47A ;        13D5 ;  ML      # ( 𝑺 → Ꮥ ) MATHEMATICAL BOLD ITALIC CAPITAL S → CHEROKEE LETTER DE    # →S→→Ꮪ→
+1D4AE ;        13D5 ;  ML      # ( 𝒮 → Ꮥ ) MATHEMATICAL SCRIPT CAPITAL S → CHEROKEE LETTER DE # →S→→Ꮪ→
+1D4E2 ;        13D5 ;  ML      # ( 𝓢 → Ꮥ ) MATHEMATICAL BOLD SCRIPT CAPITAL S → CHEROKEE LETTER DE    # →S→→Ꮪ→
+1D516 ;        13D5 ;  ML      # ( 𝔖 → Ꮥ ) MATHEMATICAL FRAKTUR CAPITAL S → CHEROKEE LETTER DE        # →S→→Ꮪ→
+1D54A ;        13D5 ;  ML      # ( 𝕊 → Ꮥ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL S → CHEROKEE LETTER DE  # →S→→Ꮪ→
+1D57E ;        13D5 ;  ML      # ( 𝕾 → Ꮥ ) MATHEMATICAL BOLD FRAKTUR CAPITAL S → CHEROKEE LETTER DE   # →S→→Ꮪ→
+1D5B2 ;        13D5 ;  ML      # ( 𝖲 → Ꮥ ) MATHEMATICAL SANS-SERIF CAPITAL S → CHEROKEE LETTER DE     # →S→→Ꮪ→
+1D5E6 ;        13D5 ;  ML      # ( 𝗦 → Ꮥ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL S → CHEROKEE LETTER DE        # →S→→Ꮪ→
+1D61A ;        13D5 ;  ML      # ( 𝘚 → Ꮥ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL S → CHEROKEE LETTER DE      # →S→→Ꮪ→
+1D64E ;        13D5 ;  ML      # ( 𝙎 → Ꮥ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S → CHEROKEE LETTER DE # →S→→Ꮪ→
+1D682 ;        13D5 ;  ML      # ( 𝚂 → Ꮥ ) MATHEMATICAL MONOSPACE CAPITAL S → CHEROKEE LETTER DE      # →S→→Ꮪ→
+13DA ; 13D5 ;  ML      # ( Ꮪ → Ꮥ ) CHEROKEE LETTER DU → CHEROKEE LETTER DE     # 
+A4E2 ; 13D5 ;  ML      # ( ꓢ → Ꮥ ) LISU LETTER SA → CHEROKEE LETTER DE # →S→→Ꮪ→
+
+1D40A ;        13E6 ;  ML      # ( 𝐊 → Ꮶ ) MATHEMATICAL BOLD CAPITAL K → CHEROKEE LETTER TSO  # →K→
+1D43E ;        13E6 ;  ML      # ( 𝐾 → Ꮶ ) MATHEMATICAL ITALIC CAPITAL K → CHEROKEE LETTER TSO        # →K→
+1D472 ;        13E6 ;  ML      # ( 𝑲 → Ꮶ ) MATHEMATICAL BOLD ITALIC CAPITAL K → CHEROKEE LETTER TSO   # →K→
+1D4A6 ;        13E6 ;  ML      # ( 𝒦 → Ꮶ ) MATHEMATICAL SCRIPT CAPITAL K → CHEROKEE LETTER TSO        # →K→
+1D4DA ;        13E6 ;  ML      # ( 𝓚 → Ꮶ ) MATHEMATICAL BOLD SCRIPT CAPITAL K → CHEROKEE LETTER TSO   # →K→
+1D50E ;        13E6 ;  ML      # ( 𝔎 → Ꮶ ) MATHEMATICAL FRAKTUR CAPITAL K → CHEROKEE LETTER TSO       # →K→
+1D542 ;        13E6 ;  ML      # ( 𝕂 → Ꮶ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL K → CHEROKEE LETTER TSO # →K→
+1D576 ;        13E6 ;  ML      # ( 𝕶 → Ꮶ ) MATHEMATICAL BOLD FRAKTUR CAPITAL K → CHEROKEE LETTER TSO  # →K→
+1D5AA ;        13E6 ;  ML      # ( 𝖪 → Ꮶ ) MATHEMATICAL SANS-SERIF CAPITAL K → CHEROKEE LETTER TSO    # →K→
+1D5DE ;        13E6 ;  ML      # ( 𝗞 → Ꮶ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL K → CHEROKEE LETTER TSO       # →K→
+1D612 ;        13E6 ;  ML      # ( 𝘒 → Ꮶ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL K → CHEROKEE LETTER TSO     # →K→
+1D646 ;        13E6 ;  ML      # ( 𝙆 → Ꮶ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K → CHEROKEE LETTER TSO        # →K→
+1D67A ;        13E6 ;  ML      # ( 𝙺 → Ꮶ ) MATHEMATICAL MONOSPACE CAPITAL K → CHEROKEE LETTER TSO     # →K→
+1D6B1 ;        13E6 ;  ML      # ( 𝚱 → Ꮶ ) MATHEMATICAL BOLD CAPITAL KAPPA → CHEROKEE LETTER TSO      # →Κ→→K→
+1D6EB ;        13E6 ;  ML      # ( 𝛫 → Ꮶ ) MATHEMATICAL ITALIC CAPITAL KAPPA → CHEROKEE LETTER TSO    # →Κ→→K→
+1D725 ;        13E6 ;  ML      # ( 𝜥 → Ꮶ ) MATHEMATICAL BOLD ITALIC CAPITAL KAPPA → CHEROKEE LETTER TSO       # →Κ→→K→
+1D75F ;        13E6 ;  ML      # ( 𝝟 → Ꮶ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA → CHEROKEE LETTER TSO   # →Κ→→K→
+1D799 ;        13E6 ;  ML      # ( 𝞙 → Ꮶ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA → CHEROKEE LETTER TSO    # →Κ→→K→
+A4D7 ; 13E6 ;  ML      # ( ꓗ → Ꮶ ) LISU LETTER KA → CHEROKEE LETTER TSO        # →K→
+
+140D ; 1401 00B7 ;     ML      # ( ᐍ → ᐁ· ) CANADIAN SYLLABICS WEST-CREE WE → CANADIAN SYLLABICS E, MIDDLE DOT        # →ᐁᐧ→
+
+2206 ; 1403 ;  ML      #* ( ∆ → ᐃ ) INCREMENT → CANADIAN SYLLABICS I   # →Δ→
+1D6AB ;        1403 ;  ML      # ( 𝚫 → ᐃ ) MATHEMATICAL BOLD CAPITAL DELTA → CANADIAN SYLLABICS I     # →Δ→
+1D6E5 ;        1403 ;  ML      # ( 𝛥 → ᐃ ) MATHEMATICAL ITALIC CAPITAL DELTA → CANADIAN SYLLABICS I   # →Δ→
+1D71F ;        1403 ;  ML      # ( 𝜟 → ᐃ ) MATHEMATICAL BOLD ITALIC CAPITAL DELTA → CANADIAN SYLLABICS I      # →Δ→
+1D759 ;        1403 ;  ML      # ( 𝝙 → ᐃ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA → CANADIAN SYLLABICS I  # →Δ→
+1D793 ;        1403 ;  ML      # ( 𝞓 → ᐃ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA → CANADIAN SYLLABICS I   # →Δ→
+2D60 ; 1403 ;  ML      # ( ⵠ → ᐃ ) TIFINAGH LETTER YAV → CANADIAN SYLLABICS I  # 
+
+140F ; 1403 00B7 ;     ML      # ( ᐏ → ᐃ· ) CANADIAN SYLLABICS WEST-CREE WI → CANADIAN SYLLABICS I, MIDDLE DOT        # →ᐃᐧ→
+
+1411 ; 1404 00B7 ;     ML      # ( ᐑ → ᐄ· ) CANADIAN SYLLABICS WEST-CREE WII → CANADIAN SYLLABICS II, MIDDLE DOT      # →ᐄᐧ→
+
+1413 ; 1405 00B7 ;     ML      # ( ᐓ → ᐅ· ) CANADIAN SYLLABICS WEST-CREE WO → CANADIAN SYLLABICS O, MIDDLE DOT        # →ᐅᐧ→
+
+1415 ; 1406 00B7 ;     ML      # ( ᐕ → ᐆ· ) CANADIAN SYLLABICS WEST-CREE WOO → CANADIAN SYLLABICS OO, MIDDLE DOT      # →ᐆᐧ→
+
+1418 ; 140A 00B7 ;     ML      # ( ᐘ → ᐊ· ) CANADIAN SYLLABICS WEST-CREE WA → CANADIAN SYLLABICS A, MIDDLE DOT        # →ᐊᐧ→
+
+141A ; 140B 00B7 ;     ML      # ( ᐚ → ᐋ· ) CANADIAN SYLLABICS WEST-CREE WAA → CANADIAN SYLLABICS AA, MIDDLE DOT      # →ᐋᐧ→
+
+14D1 ; 1421 ;  ML      # ( ᓑ → ᐡ ) CANADIAN SYLLABICS CARRIER NG → CANADIAN SYLLABICS FINAL BOTTOM HALF RING   # 
+
+1476 ; 1427 146D ;     ML      # ( ᑶ → ᐧᑭ ) CANADIAN SYLLABICS KWI → CANADIAN SYLLABICS FINAL MIDDLE DOT, CANADIAN SYLLABICS KI      # 
+
+1498 ; 1427 148D ;     ML      # ( ᒘ → ᐧᒍ ) CANADIAN SYLLABICS CWO → CANADIAN SYLLABICS FINAL MIDDLE DOT, CANADIAN SYLLABICS CO      # 
+
+1540 ; 1429 ;  ML      # ( ᕀ → ᐩ ) CANADIAN SYLLABICS WEST-CREE Y → CANADIAN SYLLABICS FINAL PLUS      # 
+
+1D415 ;        142F ;  ML      # ( 𝐕 → ᐯ ) MATHEMATICAL BOLD CAPITAL V → CANADIAN SYLLABICS PE        # →V→
+1D449 ;        142F ;  ML      # ( 𝑉 → ᐯ ) MATHEMATICAL ITALIC CAPITAL V → CANADIAN SYLLABICS PE      # →V→
+1D47D ;        142F ;  ML      # ( 𝑽 → ᐯ ) MATHEMATICAL BOLD ITALIC CAPITAL V → CANADIAN SYLLABICS PE # →V→
+1D4B1 ;        142F ;  ML      # ( 𝒱 → ᐯ ) MATHEMATICAL SCRIPT CAPITAL V → CANADIAN SYLLABICS PE      # →V→
+1D4E5 ;        142F ;  ML      # ( 𝓥 → ᐯ ) MATHEMATICAL BOLD SCRIPT CAPITAL V → CANADIAN SYLLABICS PE # →V→
+1D519 ;        142F ;  ML      # ( 𝔙 → ᐯ ) MATHEMATICAL FRAKTUR CAPITAL V → CANADIAN SYLLABICS PE     # →V→
+1D54D ;        142F ;  ML      # ( 𝕍 → ᐯ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL V → CANADIAN SYLLABICS PE       # →V→
+1D581 ;        142F ;  ML      # ( 𝖁 → ᐯ ) MATHEMATICAL BOLD FRAKTUR CAPITAL V → CANADIAN SYLLABICS PE        # →V→
+1D5B5 ;        142F ;  ML      # ( 𝖵 → ᐯ ) MATHEMATICAL SANS-SERIF CAPITAL V → CANADIAN SYLLABICS PE  # →V→
+1D5E9 ;        142F ;  ML      # ( 𝗩 → ᐯ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL V → CANADIAN SYLLABICS PE     # →V→
+1D61D ;        142F ;  ML      # ( 𝘝 → ᐯ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL V → CANADIAN SYLLABICS PE   # →V→
+1D651 ;        142F ;  ML      # ( 𝙑 → ᐯ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V → CANADIAN SYLLABICS PE      # →V→
+1D685 ;        142F ;  ML      # ( 𝚅 → ᐯ ) MATHEMATICAL MONOSPACE CAPITAL V → CANADIAN SYLLABICS PE   # →V→
+2D38 ; 142F ;  ML      # ( ⴸ → ᐯ ) TIFINAGH LETTER YADH → CANADIAN SYLLABICS PE        # 
+13D9 ; 142F ;  ML      # ( Ꮩ → ᐯ ) CHEROKEE LETTER DO → CANADIAN SYLLABICS PE  # →V→
+A4E6 ; 142F ;  ML      # ( ꓦ → ᐯ ) LISU LETTER HA → CANADIAN SYLLABICS PE      # →V→
+
+1D6B2 ;        1431 ;  ML      # ( 𝚲 → ᐱ ) MATHEMATICAL BOLD CAPITAL LAMDA → CANADIAN SYLLABICS PI    # →Λ→
+1D6EC ;        1431 ;  ML      # ( 𝛬 → ᐱ ) MATHEMATICAL ITALIC CAPITAL LAMDA → CANADIAN SYLLABICS PI  # →Λ→
+1D726 ;        1431 ;  ML      # ( 𝜦 → ᐱ ) MATHEMATICAL BOLD ITALIC CAPITAL LAMDA → CANADIAN SYLLABICS PI     # →Λ→
+1D760 ;        1431 ;  ML      # ( 𝝠 → ᐱ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA → CANADIAN SYLLABICS PI # →Λ→
+1D79A ;        1431 ;  ML      # ( 𝞚 → ᐱ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA → CANADIAN SYLLABICS PI  # →Λ→
+2D37 ; 1431 ;  ML      # ( ⴷ → ᐱ ) TIFINAGH LETTER YAD → CANADIAN SYLLABICS PI # 
+A4E5 ; 1431 ;  ML      # ( ꓥ → ᐱ ) LISU LETTER NGA → CANADIAN SYLLABICS PI     # →Ʌ→
+
+1441 ; 1433 00B7 ;     ML      # ( ᑁ → ᐳ· ) CANADIAN SYLLABICS WEST-CREE PWO → CANADIAN SYLLABICS PO, MIDDLE DOT      # →ᐳᐧ→
+
+1443 ; 1434 00B7 ;     ML      # ( ᑃ → ᐴ· ) CANADIAN SYLLABICS WEST-CREE PWOO → CANADIAN SYLLABICS POO, MIDDLE DOT    # →ᐴᐧ→
+
+1445 ; 1438 00B7 ;     ML      # ( ᑅ → ᐸ· ) CANADIAN SYLLABICS WEST-CREE PWA → CANADIAN SYLLABICS PA, MIDDLE DOT      # →ᐸᐧ→
+
+1447 ; 1439 00B7 ;     ML      # ( ᑇ → ᐹ· ) CANADIAN SYLLABICS WEST-CREE PWAA → CANADIAN SYLLABICS PAA, MIDDLE DOT    # →ᐹᐧ→
+
+02C8 ; 144A ;  ML      # ( ˈ → ᑊ ) MODIFIER LETTER VERTICAL LINE → CANADIAN SYLLABICS WEST-CREE P       # 
+
+1D414 ;        144C ;  ML      # ( 𝐔 → ᑌ ) MATHEMATICAL BOLD CAPITAL U → CANADIAN SYLLABICS TE        # →U→
+1D448 ;        144C ;  ML      # ( 𝑈 → ᑌ ) MATHEMATICAL ITALIC CAPITAL U → CANADIAN SYLLABICS TE      # →U→
+1D47C ;        144C ;  ML      # ( 𝑼 → ᑌ ) MATHEMATICAL BOLD ITALIC CAPITAL U → CANADIAN SYLLABICS TE # →U→
+1D4B0 ;        144C ;  ML      # ( 𝒰 → ᑌ ) MATHEMATICAL SCRIPT CAPITAL U → CANADIAN SYLLABICS TE      # →U→
+1D4E4 ;        144C ;  ML      # ( 𝓤 → ᑌ ) MATHEMATICAL BOLD SCRIPT CAPITAL U → CANADIAN SYLLABICS TE # →U→
+1D518 ;        144C ;  ML      # ( 𝔘 → ᑌ ) MATHEMATICAL FRAKTUR CAPITAL U → CANADIAN SYLLABICS TE     # →U→
+1D54C ;        144C ;  ML      # ( 𝕌 → ᑌ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL U → CANADIAN SYLLABICS TE       # →U→
+1D580 ;        144C ;  ML      # ( 𝖀 → ᑌ ) MATHEMATICAL BOLD FRAKTUR CAPITAL U → CANADIAN SYLLABICS TE        # →U→
+1D5B4 ;        144C ;  ML      # ( 𝖴 → ᑌ ) MATHEMATICAL SANS-SERIF CAPITAL U → CANADIAN SYLLABICS TE  # →U→
+1D5E8 ;        144C ;  ML      # ( 𝗨 → ᑌ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL U → CANADIAN SYLLABICS TE     # →U→
+1D61C ;        144C ;  ML      # ( 𝘜 → ᑌ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL U → CANADIAN SYLLABICS TE   # →U→
+1D650 ;        144C ;  ML      # ( 𝙐 → ᑌ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U → CANADIAN SYLLABICS TE      # →U→
+1D684 ;        144C ;  ML      # ( 𝚄 → ᑌ ) MATHEMATICAL MONOSPACE CAPITAL U → CANADIAN SYLLABICS TE   # →U→
+A4F4 ; 144C ;  ML      # ( ꓴ → ᑌ ) LISU LETTER U → CANADIAN SYLLABICS TE       # →U→
+
+1458 ; 144C 00B7 ;     ML      # ( ᑘ → ᑌ· ) CANADIAN SYLLABICS WEST-CREE TWE → CANADIAN SYLLABICS TE, MIDDLE DOT      # →ᑌᐧ→
+
+1467 ; 144C 144A ;     ML      # ( ᑧ → ᑌᑊ ) CANADIAN SYLLABICS TTE → CANADIAN SYLLABICS TE, CANADIAN SYLLABICS WEST-CREE P   # 
+
+145A ; 144E 00B7 ;     ML      # ( ᑚ → ᑎ· ) CANADIAN SYLLABICS WEST-CREE TWI → CANADIAN SYLLABICS TI, MIDDLE DOT      # →ᑎᐧ→
+
+1468 ; 144E 144A ;     ML      # ( ᑨ → ᑎᑊ ) CANADIAN SYLLABICS TTI → CANADIAN SYLLABICS TI, CANADIAN SYLLABICS WEST-CREE P   # 
+
+145C ; 144F 00B7 ;     ML      # ( ᑜ → ᑏ· ) CANADIAN SYLLABICS WEST-CREE TWII → CANADIAN SYLLABICS TII, MIDDLE DOT    # →ᑏᐧ→
+
+145E ; 1450 00B7 ;     ML      # ( ᑞ → ᑐ· ) CANADIAN SYLLABICS WEST-CREE TWO → CANADIAN SYLLABICS TO, MIDDLE DOT      # →ᑐᐧ→
+
+1469 ; 1450 144A ;     ML      # ( ᑩ → ᑐᑊ ) CANADIAN SYLLABICS TTO → CANADIAN SYLLABICS TO, CANADIAN SYLLABICS WEST-CREE P   # 
+
+1460 ; 1451 00B7 ;     ML      # ( ᑠ → ᑑ· ) CANADIAN SYLLABICS WEST-CREE TWOO → CANADIAN SYLLABICS TOO, MIDDLE DOT    # →ᑑᐧ→
+
+1462 ; 1455 00B7 ;     ML      # ( ᑢ → ᑕ· ) CANADIAN SYLLABICS WEST-CREE TWA → CANADIAN SYLLABICS TA, MIDDLE DOT      # →ᑕᐧ→
+
+146A ; 1455 144A ;     ML      # ( ᑪ → ᑕᑊ ) CANADIAN SYLLABICS TTA → CANADIAN SYLLABICS TA, CANADIAN SYLLABICS WEST-CREE P   # 
+
+1464 ; 1456 00B7 ;     ML      # ( ᑤ → ᑖ· ) CANADIAN SYLLABICS WEST-CREE TWAA → CANADIAN SYLLABICS TAA, MIDDLE DOT    # →ᑖᐧ→
+
+1475 ; 146B 00B7 ;     ML      # ( ᑵ → ᑫ· ) CANADIAN SYLLABICS WEST-CREE KWE → CANADIAN SYLLABICS KE, MIDDLE DOT      # →ᑫᐧ→
+
+1485 ; 146B 144A ;     ML      # ( ᒅ → ᑫᑊ ) CANADIAN SYLLABICS SOUTH-SLAVEY KEH → CANADIAN SYLLABICS KE, CANADIAN SYLLABICS WEST-CREE P      # 
+
+2119 ; 146D ;  ML      # ( ℙ → ᑭ ) DOUBLE-STRUCK CAPITAL P → CANADIAN SYLLABICS KI     # →P→
+1D40F ;        146D ;  ML      # ( 𝐏 → ᑭ ) MATHEMATICAL BOLD CAPITAL P → CANADIAN SYLLABICS KI        # →P→
+1D443 ;        146D ;  ML      # ( 𝑃 → ᑭ ) MATHEMATICAL ITALIC CAPITAL P → CANADIAN SYLLABICS KI      # →P→
+1D477 ;        146D ;  ML      # ( 𝑷 → ᑭ ) MATHEMATICAL BOLD ITALIC CAPITAL P → CANADIAN SYLLABICS KI # →P→
+1D4AB ;        146D ;  ML      # ( 𝒫 → ᑭ ) MATHEMATICAL SCRIPT CAPITAL P → CANADIAN SYLLABICS KI      # →P→
+1D4DF ;        146D ;  ML      # ( 𝓟 → ᑭ ) MATHEMATICAL BOLD SCRIPT CAPITAL P → CANADIAN SYLLABICS KI # →P→
+1D513 ;        146D ;  ML      # ( 𝔓 → ᑭ ) MATHEMATICAL FRAKTUR CAPITAL P → CANADIAN SYLLABICS KI     # →P→
+1D57B ;        146D ;  ML      # ( 𝕻 → ᑭ ) MATHEMATICAL BOLD FRAKTUR CAPITAL P → CANADIAN SYLLABICS KI        # →P→
+1D5AF ;        146D ;  ML      # ( 𝖯 → ᑭ ) MATHEMATICAL SANS-SERIF CAPITAL P → CANADIAN SYLLABICS KI  # →P→
+1D5E3 ;        146D ;  ML      # ( 𝗣 → ᑭ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL P → CANADIAN SYLLABICS KI     # →P→
+1D617 ;        146D ;  ML      # ( 𝘗 → ᑭ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL P → CANADIAN SYLLABICS KI   # →P→
+1D64B ;        146D ;  ML      # ( 𝙋 → ᑭ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P → CANADIAN SYLLABICS KI      # →P→
+1D67F ;        146D ;  ML      # ( 𝙿 → ᑭ ) MATHEMATICAL MONOSPACE CAPITAL P → CANADIAN SYLLABICS KI   # →P→
+1D6B8 ;        146D ;  ML      # ( 𝚸 → ᑭ ) MATHEMATICAL BOLD CAPITAL RHO → CANADIAN SYLLABICS KI      # →𝐏→→P→
+1D6F2 ;        146D ;  ML      # ( 𝛲 → ᑭ ) MATHEMATICAL ITALIC CAPITAL RHO → CANADIAN SYLLABICS KI    # →𝑃→→P→
+1D72C ;        146D ;  ML      # ( 𝜬 → ᑭ ) MATHEMATICAL BOLD ITALIC CAPITAL RHO → CANADIAN SYLLABICS KI       # →𝑷→→P→
+1D766 ;        146D ;  ML      # ( 𝝦 → ᑭ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO → CANADIAN SYLLABICS KI   # →Ρ→→P→
+1D7A0 ;        146D ;  ML      # ( 𝞠 → ᑭ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO → CANADIAN SYLLABICS KI    # →Ρ→→P→
+13E2 ; 146D ;  ML      # ( Ꮲ → ᑭ ) CHEROKEE LETTER TLV → CANADIAN SYLLABICS KI # →P→
+A4D1 ; 146D ;  ML      # ( ꓑ → ᑭ ) LISU LETTER PA → CANADIAN SYLLABICS KI      # →P→
+
+1486 ; 146D 144A ;     ML      # ( ᒆ → ᑭᑊ ) CANADIAN SYLLABICS SOUTH-SLAVEY KIH → CANADIAN SYLLABICS KI, CANADIAN SYLLABICS WEST-CREE P      # 
+
+1479 ; 146E 00B7 ;     ML      # ( ᑹ → ᑮ· ) CANADIAN SYLLABICS WEST-CREE KWII → CANADIAN SYLLABICS KII, MIDDLE DOT    # →ᑮᐧ→
+
+147D ; 1470 00B7 ;     ML      # ( ᑽ → ᑰ· ) CANADIAN SYLLABICS WEST-CREE KWOO → CANADIAN SYLLABICS KOO, MIDDLE DOT    # →ᑰᐧ→
+
+147F ; 1472 00B7 ;     ML      # ( ᑿ → ᑲ· ) CANADIAN SYLLABICS WEST-CREE KWA → CANADIAN SYLLABICS KA, MIDDLE DOT      # →ᑲᐧ→
+
+1488 ; 1472 144A ;     ML      # ( ᒈ → ᑲᑊ ) CANADIAN SYLLABICS SOUTH-SLAVEY KAH → CANADIAN SYLLABICS KA, CANADIAN SYLLABICS WEST-CREE P      # 
+
+1481 ; 1473 00B7 ;     ML      # ( ᒁ → ᑳ· ) CANADIAN SYLLABICS WEST-CREE KWAA → CANADIAN SYLLABICS KAA, MIDDLE DOT    # →ᑳᐧ→
+
+1603 ; 1489 ;  ML      # ( ᘃ → ᒉ ) CANADIAN SYLLABICS CARRIER NO → CANADIAN SYLLABICS CE       # 
+
+1493 ; 1489 00B7 ;     ML      # ( ᒓ → ᒉ· ) CANADIAN SYLLABICS WEST-CREE CWE → CANADIAN SYLLABICS CE, MIDDLE DOT      # →ᒉᐧ→
+
+1495 ; 148B 00B7 ;     ML      # ( ᒕ → ᒋ· ) CANADIAN SYLLABICS WEST-CREE CWI → CANADIAN SYLLABICS CI, MIDDLE DOT      # →ᒋᐧ→
+
+1497 ; 148C 00B7 ;     ML      # ( ᒗ → ᒌ· ) CANADIAN SYLLABICS WEST-CREE CWII → CANADIAN SYLLABICS CII, MIDDLE DOT    # →ᒌᐧ→
+
+1D409 ;        148D ;  ML      # ( 𝐉 → ᒍ ) MATHEMATICAL BOLD CAPITAL J → CANADIAN SYLLABICS CO        # →J→
+1D43D ;        148D ;  ML      # ( 𝐽 → ᒍ ) MATHEMATICAL ITALIC CAPITAL J → CANADIAN SYLLABICS CO      # →J→
+1D471 ;        148D ;  ML      # ( 𝑱 → ᒍ ) MATHEMATICAL BOLD ITALIC CAPITAL J → CANADIAN SYLLABICS CO # →J→
+1D4A5 ;        148D ;  ML      # ( 𝒥 → ᒍ ) MATHEMATICAL SCRIPT CAPITAL J → CANADIAN SYLLABICS CO      # →J→
+1D4D9 ;        148D ;  ML      # ( 𝓙 → ᒍ ) MATHEMATICAL BOLD SCRIPT CAPITAL J → CANADIAN SYLLABICS CO # →J→
+1D50D ;        148D ;  ML      # ( 𝔍 → ᒍ ) MATHEMATICAL FRAKTUR CAPITAL J → CANADIAN SYLLABICS CO     # →J→
+1D541 ;        148D ;  ML      # ( 𝕁 → ᒍ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL J → CANADIAN SYLLABICS CO       # →J→
+1D575 ;        148D ;  ML      # ( 𝕵 → ᒍ ) MATHEMATICAL BOLD FRAKTUR CAPITAL J → CANADIAN SYLLABICS CO        # →J→
+1D5A9 ;        148D ;  ML      # ( 𝖩 → ᒍ ) MATHEMATICAL SANS-SERIF CAPITAL J → CANADIAN SYLLABICS CO  # →J→
+1D5DD ;        148D ;  ML      # ( 𝗝 → ᒍ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL J → CANADIAN SYLLABICS CO     # →J→
+1D611 ;        148D ;  ML      # ( 𝘑 → ᒍ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL J → CANADIAN SYLLABICS CO   # →J→
+1D645 ;        148D ;  ML      # ( 𝙅 → ᒍ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J → CANADIAN SYLLABICS CO      # →J→
+1D679 ;        148D ;  ML      # ( 𝙹 → ᒍ ) MATHEMATICAL MONOSPACE CAPITAL J → CANADIAN SYLLABICS CO   # →J→
+13AB ; 148D ;  ML      # ( Ꭻ → ᒍ ) CHEROKEE LETTER GU → CANADIAN SYLLABICS CO  # →J→
+13E7 ; 148D ;  ML      # ( Ꮷ → ᒍ ) CHEROKEE LETTER TSU → CANADIAN SYLLABICS CO # →J→
+A4D9 ; 148D ;  ML      # ( ꓙ → ᒍ ) LISU LETTER JA → CANADIAN SYLLABICS CO      # →J→
+
+1499 ; 148D 1427 ;     ML      # ( ᒙ → ᒍᐧ ) CANADIAN SYLLABICS WEST-CREE CWO → CANADIAN SYLLABICS CO, CANADIAN SYLLABICS FINAL MIDDLE DOT    # 
+
+149B ; 148E 00B7 ;     ML      # ( ᒛ → ᒎ· ) CANADIAN SYLLABICS WEST-CREE CWOO → CANADIAN SYLLABICS COO, MIDDLE DOT    # →ᒎᐧ→
+
+1602 ; 1490 ;  ML      # ( ᘂ → ᒐ ) CANADIAN SYLLABICS CARRIER NU → CANADIAN SYLLABICS CA       # 
+
+149D ; 1490 00B7 ;     ML      # ( ᒝ → ᒐ· ) CANADIAN SYLLABICS WEST-CREE CWA → CANADIAN SYLLABICS CA, MIDDLE DOT      # →ᒐᐧ→
+
+149F ; 1491 00B7 ;     ML      # ( ᒟ → ᒑ· ) CANADIAN SYLLABICS WEST-CREE CWAA → CANADIAN SYLLABICS CAA, MIDDLE DOT    # →ᒑᐧ→
+
+14AD ; 14A3 00B7 ;     ML      # ( ᒭ → ᒣ· ) CANADIAN SYLLABICS WEST-CREE MWE → CANADIAN SYLLABICS ME, MIDDLE DOT      # →ᒣᐧ→
+
+213E ; 14A5 ;  ML      # ( ℾ → ᒥ ) DOUBLE-STRUCK CAPITAL GAMMA → CANADIAN SYLLABICS MI # →Γ→
+1D6AA ;        14A5 ;  ML      # ( 𝚪 → ᒥ ) MATHEMATICAL BOLD CAPITAL GAMMA → CANADIAN SYLLABICS MI    # →Γ→
+1D6E4 ;        14A5 ;  ML      # ( 𝛤 → ᒥ ) MATHEMATICAL ITALIC CAPITAL GAMMA → CANADIAN SYLLABICS MI  # →Γ→
+1D71E ;        14A5 ;  ML      # ( 𝜞 → ᒥ ) MATHEMATICAL BOLD ITALIC CAPITAL GAMMA → CANADIAN SYLLABICS MI     # →Γ→
+1D758 ;        14A5 ;  ML      # ( 𝝘 → ᒥ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA → CANADIAN SYLLABICS MI # →Γ→
+1D792 ;        14A5 ;  ML      # ( 𝞒 → ᒥ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA → CANADIAN SYLLABICS MI  # →Γ→
+13B1 ; 14A5 ;  ML      # ( Ꮁ → ᒥ ) CHEROKEE LETTER HU → CANADIAN SYLLABICS MI  # →Γ→
+
+14AF ; 14A5 00B7 ;     ML      # ( ᒯ → ᒥ· ) CANADIAN SYLLABICS WEST-CREE MWI → CANADIAN SYLLABICS MI, MIDDLE DOT      # →ᒥᐧ→
+
+14B1 ; 14A6 00B7 ;     ML      # ( ᒱ → ᒦ· ) CANADIAN SYLLABICS WEST-CREE MWII → CANADIAN SYLLABICS MII, MIDDLE DOT    # →ᒦᐧ→
+
+14B3 ; 14A7 00B7 ;     ML      # ( ᒳ → ᒧ· ) CANADIAN SYLLABICS WEST-CREE MWO → CANADIAN SYLLABICS MO, MIDDLE DOT      # →ᒧᐧ→
+
+14B5 ; 14A8 00B7 ;     ML      # ( ᒵ → ᒨ· ) CANADIAN SYLLABICS WEST-CREE MWOO → CANADIAN SYLLABICS MOO, MIDDLE DOT    # →ᒨᐧ→
+
+2112 ; 14AA ;  ML      # ( ℒ → ᒪ ) SCRIPT CAPITAL L → CANADIAN SYLLABICS MA    # →L→
+1D40B ;        14AA ;  ML      # ( 𝐋 → ᒪ ) MATHEMATICAL BOLD CAPITAL L → CANADIAN SYLLABICS MA        # →L→
+1D43F ;        14AA ;  ML      # ( 𝐿 → ᒪ ) MATHEMATICAL ITALIC CAPITAL L → CANADIAN SYLLABICS MA      # →L→
+1D473 ;        14AA ;  ML      # ( 𝑳 → ᒪ ) MATHEMATICAL BOLD ITALIC CAPITAL L → CANADIAN SYLLABICS MA # →L→
+1D4DB ;        14AA ;  ML      # ( 𝓛 → ᒪ ) MATHEMATICAL BOLD SCRIPT CAPITAL L → CANADIAN SYLLABICS MA # →L→
+1D50F ;        14AA ;  ML      # ( 𝔏 → ᒪ ) MATHEMATICAL FRAKTUR CAPITAL L → CANADIAN SYLLABICS MA     # →L→
+1D543 ;        14AA ;  ML      # ( 𝕃 → ᒪ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL L → CANADIAN SYLLABICS MA       # →L→
+1D577 ;        14AA ;  ML      # ( 𝕷 → ᒪ ) MATHEMATICAL BOLD FRAKTUR CAPITAL L → CANADIAN SYLLABICS MA        # →L→
+1D5AB ;        14AA ;  ML      # ( 𝖫 → ᒪ ) MATHEMATICAL SANS-SERIF CAPITAL L → CANADIAN SYLLABICS MA  # →L→
+1D5DF ;        14AA ;  ML      # ( 𝗟 → ᒪ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL L → CANADIAN SYLLABICS MA     # →L→
+1D613 ;        14AA ;  ML      # ( 𝘓 → ᒪ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL L → CANADIAN SYLLABICS MA   # →L→
+1D647 ;        14AA ;  ML      # ( 𝙇 → ᒪ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L → CANADIAN SYLLABICS MA      # →L→
+1D67B ;        14AA ;  ML      # ( 𝙻 → ᒪ ) MATHEMATICAL MONOSPACE CAPITAL L → CANADIAN SYLLABICS MA   # →L→
+13DE ; 14AA ;  ML      # ( Ꮮ → ᒪ ) CHEROKEE LETTER TLE → CANADIAN SYLLABICS MA # →L→
+A4E1 ; 14AA ;  ML      # ( ꓡ → ᒪ ) LISU LETTER LA → CANADIAN SYLLABICS MA      # →L→
+
+14B9 ; 14AB 00B7 ;     ML      # ( ᒹ → ᒫ· ) CANADIAN SYLLABICS WEST-CREE MWAA → CANADIAN SYLLABICS MAA, MIDDLE DOT    # →ᒫᐧ→
+
+14CA ; 14C0 00B7 ;     ML      # ( ᓊ → ᓀ· ) CANADIAN SYLLABICS WEST-CREE NWE → CANADIAN SYLLABICS NE, MIDDLE DOT      # →ᓀᐧ→
+
+14CC ; 14C7 00B7 ;     ML      # ( ᓌ → ᓇ· ) CANADIAN SYLLABICS WEST-CREE NWA → CANADIAN SYLLABICS NA, MIDDLE DOT      # →ᓇᐧ→
+
+14CE ; 14C8 14AB ;     ML      # ( ᓎ → ᓈᒫ ) CANADIAN SYLLABICS WEST-CREE NWAA → CANADIAN SYLLABICS NAA, CANADIAN SYLLABICS MAA       # 
+
+1604 ; 14D3 ;  ML      # ( ᘄ → ᓓ ) CANADIAN SYLLABICS CARRIER NE → CANADIAN SYLLABICS LE       # 
+
+14DD ; 14D3 00B7 ;     ML      # ( ᓝ → ᓓ· ) CANADIAN SYLLABICS WEST-CREE LWE → CANADIAN SYLLABICS LE, MIDDLE DOT      # →ᓓᐧ→
+
+14DF ; 14D5 00B7 ;     ML      # ( ᓟ → ᓕ· ) CANADIAN SYLLABICS WEST-CREE LWI → CANADIAN SYLLABICS LI, MIDDLE DOT      # →ᓕᐧ→
+
+14E1 ; 14D6 00B7 ;     ML      # ( ᓡ → ᓖ· ) CANADIAN SYLLABICS WEST-CREE LWII → CANADIAN SYLLABICS LII, MIDDLE DOT    # →ᓖᐧ→
+
+14E3 ; 14D7 00B7 ;     ML      # ( ᓣ → ᓗ· ) CANADIAN SYLLABICS WEST-CREE LWO → CANADIAN SYLLABICS LO, MIDDLE DOT      # →ᓗᐧ→
+
+14E5 ; 14D8 00B7 ;     ML      # ( ᓥ → ᓘ· ) CANADIAN SYLLABICS WEST-CREE LWOO → CANADIAN SYLLABICS LOO, MIDDLE DOT    # →ᓘᐧ→
+
+1607 ; 14DA ;  ML      # ( ᘇ → ᓚ ) CANADIAN SYLLABICS CARRIER NA → CANADIAN SYLLABICS LA       # 
+
+14E7 ; 14DA 00B7 ;     ML      # ( ᓧ → ᓚ· ) CANADIAN SYLLABICS WEST-CREE LWA → CANADIAN SYLLABICS LA, MIDDLE DOT      # →ᓚᐧ→
+
+14E9 ; 14DB 00B7 ;     ML      # ( ᓩ → ᓛ· ) CANADIAN SYLLABICS WEST-CREE LWAA → CANADIAN SYLLABICS LAA, MIDDLE DOT    # →ᓛᐧ→
+
+14F7 ; 14ED 00B7 ;     ML      # ( ᓷ → ᓭ· ) CANADIAN SYLLABICS WEST-CREE SWE → CANADIAN SYLLABICS SE, MIDDLE DOT      # →ᓭᐧ→
+
+14F9 ; 14EF 00B7 ;     ML      # ( ᓹ → ᓯ· ) CANADIAN SYLLABICS WEST-CREE SWI → CANADIAN SYLLABICS SI, MIDDLE DOT      # →ᓯᐧ→
+
+14FB ; 14F0 00B7 ;     ML      # ( ᓻ → ᓰ· ) CANADIAN SYLLABICS WEST-CREE SWII → CANADIAN SYLLABICS SII, MIDDLE DOT    # →ᓰᐧ→
+
+14FD ; 14F1 00B7 ;     ML      # ( ᓽ → ᓱ· ) CANADIAN SYLLABICS WEST-CREE SWO → CANADIAN SYLLABICS SO, MIDDLE DOT      # →ᓱᐧ→
+
+14FF ; 14F2 00B7 ;     ML      # ( ᓿ → ᓲ· ) CANADIAN SYLLABICS WEST-CREE SWOO → CANADIAN SYLLABICS SOO, MIDDLE DOT    # →ᓲᐧ→
+
+1501 ; 14F4 00B7 ;     ML      # ( ᔁ → ᓴ· ) CANADIAN SYLLABICS WEST-CREE SWA → CANADIAN SYLLABICS SA, MIDDLE DOT      # →ᓴᐧ→
+
+1503 ; 14F5 00B7 ;     ML      # ( ᔃ → ᓵ· ) CANADIAN SYLLABICS WEST-CREE SWAA → CANADIAN SYLLABICS SAA, MIDDLE DOT    # →ᓵᐧ→
+
+150C ; 150B 1438 ;     ML      # ( ᔌ → ᔋᐸ ) CANADIAN SYLLABICS NASKAPI SPWA → CANADIAN SYLLABICS NASKAPI S-W, CANADIAN SYLLABICS PA  # 
+
+150D ; 150B 1455 ;     ML      # ( ᔍ → ᔋᑕ ) CANADIAN SYLLABICS NASKAPI STWA → CANADIAN SYLLABICS NASKAPI S-W, CANADIAN SYLLABICS TA  # 
+
+150E ; 150B 1472 ;     ML      # ( ᔎ → ᔋᑲ ) CANADIAN SYLLABICS NASKAPI SKWA → CANADIAN SYLLABICS NASKAPI S-W, CANADIAN SYLLABICS KA  # 
+
+150F ; 150B 1490 ;     ML      # ( ᔏ → ᔋᒐ ) CANADIAN SYLLABICS NASKAPI SCWA → CANADIAN SYLLABICS NASKAPI S-W, CANADIAN SYLLABICS CA  # 
+
+1518 ; 1510 00B7 ;     ML      # ( ᔘ → ᔐ· ) CANADIAN SYLLABICS WEST-CREE SHWE → CANADIAN SYLLABICS SHE, MIDDLE DOT    # →ᔐᐧ→
+
+151A ; 1511 00B7 ;     ML      # ( ᔚ → ᔑ· ) CANADIAN SYLLABICS WEST-CREE SHWI → CANADIAN SYLLABICS SHI, MIDDLE DOT    # →ᔑᐧ→
+
+151C ; 1512 00B7 ;     ML      # ( ᔜ → ᔒ· ) CANADIAN SYLLABICS WEST-CREE SHWII → CANADIAN SYLLABICS SHII, MIDDLE DOT  # →ᔒᐧ→
+
+151E ; 1513 00B7 ;     ML      # ( ᔞ → ᔓ· ) CANADIAN SYLLABICS WEST-CREE SHWO → CANADIAN SYLLABICS SHO, MIDDLE DOT    # →ᔓᐧ→
+
+1520 ; 1514 00B7 ;     ML      # ( ᔠ → ᔔ· ) CANADIAN SYLLABICS WEST-CREE SHWOO → CANADIAN SYLLABICS SHOO, MIDDLE DOT  # →ᔔᐧ→
+
+1522 ; 1515 00B7 ;     ML      # ( ᔢ → ᔕ· ) CANADIAN SYLLABICS WEST-CREE SHWA → CANADIAN SYLLABICS SHA, MIDDLE DOT    # →ᔕᐧ→
+
+1524 ; 1516 00B7 ;     ML      # ( ᔤ → ᔖ· ) CANADIAN SYLLABICS WEST-CREE SHWAA → CANADIAN SYLLABICS SHAA, MIDDLE DOT  # →ᔖᐧ→
+
+1532 ; 1528 00B7 ;     ML      # ( ᔲ → ᔨ· ) CANADIAN SYLLABICS WEST-CREE YWI → CANADIAN SYLLABICS YI, MIDDLE DOT      # →ᔨᐧ→
+
+1534 ; 1529 00B7 ;     ML      # ( ᔴ → ᔩ· ) CANADIAN SYLLABICS WEST-CREE YWII → CANADIAN SYLLABICS YII, MIDDLE DOT    # →ᔩᐧ→
+
+1536 ; 152A 00B7 ;     ML      # ( ᔶ → ᔪ· ) CANADIAN SYLLABICS WEST-CREE YWO → CANADIAN SYLLABICS YO, MIDDLE DOT      # →ᔪᐧ→
+
+1538 ; 152B 00B7 ;     ML      # ( ᔸ → ᔫ· ) CANADIAN SYLLABICS WEST-CREE YWOO → CANADIAN SYLLABICS YOO, MIDDLE DOT    # →ᔫᐧ→
+
+153A ; 152D 00B7 ;     ML      # ( ᔺ → ᔭ· ) CANADIAN SYLLABICS WEST-CREE YWA → CANADIAN SYLLABICS YA, MIDDLE DOT      # →ᔭᐧ→
+
+153C ; 152E 00B7 ;     ML      # ( ᔼ → ᔮ· ) CANADIAN SYLLABICS WEST-CREE YWAA → CANADIAN SYLLABICS YAA, MIDDLE DOT    # →ᔮᐧ→
+
+1622 ; 1543 ;  ML      # ( ᘢ → ᕃ ) CANADIAN SYLLABICS CARRIER LU → CANADIAN SYLLABICS R-CREE RE        # 
+
+1623 ; 1546 ;  ML      # ( ᘣ → ᕆ ) CANADIAN SYLLABICS CARRIER LO → CANADIAN SYLLABICS RI       # 
+
+1624 ; 154A ;  ML      # ( ᘤ → ᕊ ) CANADIAN SYLLABICS CARRIER LE → CANADIAN SYLLABICS WEST-CREE LO     # 
+
+154F ; 154C 00B7 ;     ML      # ( ᕏ → ᕌ· ) CANADIAN SYLLABICS WEST-CREE RWAA → CANADIAN SYLLABICS RAA, MIDDLE DOT    # →ᕌᐧ→
+
+1581 ; 1550 0064 ;     ML      # ( ᖁ → ᕐd ) CANADIAN SYLLABICS QO → CANADIAN SYLLABICS R, LATIN SMALL LETTER D # →ᕐᑯ→
+
+166F ; 1550 146B ;     ML      # ( ᙯ → ᕐᑫ ) CANADIAN SYLLABICS QAI → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KE     # 
+
+157E ; 1550 146C ;     ML      # ( ᕾ → ᕐᑬ ) CANADIAN SYLLABICS QAAI → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KAAI  # 
+
+157F ; 1550 146D ;     ML      # ( ᕿ → ᕐᑭ ) CANADIAN SYLLABICS QI → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KI      # 
+
+1580 ; 1550 146E ;     ML      # ( ᖀ → ᕐᑮ ) CANADIAN SYLLABICS QII → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KII    # 
+
+1582 ; 1550 1470 ;     ML      # ( ᖂ → ᕐᑰ ) CANADIAN SYLLABICS QOO → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KOO    # 
+
+1583 ; 1550 1472 ;     ML      # ( ᖃ → ᕐᑲ ) CANADIAN SYLLABICS QA → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KA      # 
+
+1584 ; 1550 1473 ;     ML      # ( ᖄ → ᕐᑳ ) CANADIAN SYLLABICS QAA → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KAA    # 
+
+1585 ; 1550 1483 ;     ML      # ( ᖅ → ᕐᒃ ) CANADIAN SYLLABICS Q → CANADIAN SYLLABICS R, CANADIAN SYLLABICS K        # 
+
+155C ; 155A 00B7 ;     ML      # ( ᕜ → ᕚ· ) CANADIAN SYLLABICS WEST-CREE FWAA → CANADIAN SYLLABICS FAA, MIDDLE DOT    # →ᕚᐧ→
+
+1569 ; 1567 00B7 ;     ML      # ( ᕩ → ᕧ· ) CANADIAN SYLLABICS WEST-CREE THWAA → CANADIAN SYLLABICS THAA, MIDDLE DOT  # →ᕧᐧ→
+
+211B ; 1587 ;  ML      # ( ℛ → ᖇ ) SCRIPT CAPITAL R → CANADIAN SYLLABICS TLHI  # →R→
+211C ; 1587 ;  ML      # ( ℜ → ᖇ ) BLACK-LETTER CAPITAL R → CANADIAN SYLLABICS TLHI    # →R→
+211D ; 1587 ;  ML      # ( ℝ → ᖇ ) DOUBLE-STRUCK CAPITAL R → CANADIAN SYLLABICS TLHI   # →R→
+1D411 ;        1587 ;  ML      # ( 𝐑 → ᖇ ) MATHEMATICAL BOLD CAPITAL R → CANADIAN SYLLABICS TLHI      # →R→
+1D445 ;        1587 ;  ML      # ( 𝑅 → ᖇ ) MATHEMATICAL ITALIC CAPITAL R → CANADIAN SYLLABICS TLHI    # →R→
+1D479 ;        1587 ;  ML      # ( 𝑹 → ᖇ ) MATHEMATICAL BOLD ITALIC CAPITAL R → CANADIAN SYLLABICS TLHI       # →R→
+1D4E1 ;        1587 ;  ML      # ( 𝓡 → ᖇ ) MATHEMATICAL BOLD SCRIPT CAPITAL R → CANADIAN SYLLABICS TLHI       # →R→
+1D57D ;        1587 ;  ML      # ( 𝕽 → ᖇ ) MATHEMATICAL BOLD FRAKTUR CAPITAL R → CANADIAN SYLLABICS TLHI      # →R→
+1D5B1 ;        1587 ;  ML      # ( 𝖱 → ᖇ ) MATHEMATICAL SANS-SERIF CAPITAL R → CANADIAN SYLLABICS TLHI        # →R→
+1D5E5 ;        1587 ;  ML      # ( 𝗥 → ᖇ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL R → CANADIAN SYLLABICS TLHI   # →R→
+1D619 ;        1587 ;  ML      # ( 𝘙 → ᖇ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL R → CANADIAN SYLLABICS TLHI # →R→
+1D64D ;        1587 ;  ML      # ( 𝙍 → ᖇ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R → CANADIAN SYLLABICS TLHI    # →R→
+1D681 ;        1587 ;  ML      # ( 𝚁 → ᖇ ) MATHEMATICAL MONOSPACE CAPITAL R → CANADIAN SYLLABICS TLHI # →R→
+13A1 ; 1587 ;  ML      # ( Ꭱ → ᖇ ) CHEROKEE LETTER E → CANADIAN SYLLABICS TLHI # →R→
+13D2 ; 1587 ;  ML      # ( Ꮢ → ᖇ ) CHEROKEE LETTER SV → CANADIAN SYLLABICS TLHI        # →Ꭱ→→R→
+A4E3 ; 1587 ;  ML      # ( ꓣ → ᖇ ) LISU LETTER ZHA → CANADIAN SYLLABICS TLHI   # →R→
+
+1670 ; 1595 1489 ;     ML      # ( ᙰ → ᖕᒉ ) CANADIAN SYLLABICS NGAI → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CE   # 
+
+158E ; 1595 148A ;     ML      # ( ᖎ → ᖕᒊ ) CANADIAN SYLLABICS NGAAI → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CAAI        # 
+
+158F ; 1595 148B ;     ML      # ( ᖏ → ᖕᒋ ) CANADIAN SYLLABICS NGI → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CI    # 
+
+1590 ; 1595 148C ;     ML      # ( ᖐ → ᖕᒌ ) CANADIAN SYLLABICS NGII → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CII  # 
+
+1591 ; 1595 148D ;     ML      # ( ᖑ → ᖕᒍ ) CANADIAN SYLLABICS NGO → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CO    # 
+
+1592 ; 1595 148E ;     ML      # ( ᖒ → ᖕᒎ ) CANADIAN SYLLABICS NGOO → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS COO  # 
+
+1593 ; 1595 1490 ;     ML      # ( ᖓ → ᖕᒐ ) CANADIAN SYLLABICS NGA → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CA    # 
+
+1594 ; 1595 1491 ;     ML      # ( ᖔ → ᖕᒑ ) CANADIAN SYLLABICS NGAA → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CAA  # 
+
+1671 ; 1596 148B ;     ML      # ( ᙱ → ᖖᒋ ) CANADIAN SYLLABICS NNGI → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS CI  # 
+
+1672 ; 1596 148C ;     ML      # ( ᙲ → ᖖᒌ ) CANADIAN SYLLABICS NNGII → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS CII        # 
+
+1673 ; 1596 148D ;     ML      # ( ᙳ → ᖖᒍ ) CANADIAN SYLLABICS NNGO → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS CO  # 
+
+1674 ; 1596 148E ;     ML      # ( ᙴ → ᖖᒎ ) CANADIAN SYLLABICS NNGOO → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS COO        # 
+
+1675 ; 1596 1490 ;     ML      # ( ᙵ → ᖖᒐ ) CANADIAN SYLLABICS NNGA → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS CA  # 
+
+1676 ; 1596 1491 ;     ML      # ( ᙶ → ᖖᒑ ) CANADIAN SYLLABICS NNGAA → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS CAA        # 
+
+210B ; 157C ;  ML      # ( ℋ → ᕼ ) SCRIPT CAPITAL H → CANADIAN SYLLABICS NUNAVUT H     # →H→
+210C ; 157C ;  ML      # ( ℌ → ᕼ ) BLACK-LETTER CAPITAL H → CANADIAN SYLLABICS NUNAVUT H       # →H→
+210D ; 157C ;  ML      # ( ℍ → ᕼ ) DOUBLE-STRUCK CAPITAL H → CANADIAN SYLLABICS NUNAVUT H      # →H→
+1D407 ;        157C ;  ML      # ( 𝐇 → ᕼ ) MATHEMATICAL BOLD CAPITAL H → CANADIAN SYLLABICS NUNAVUT H # →H→
+1D43B ;        157C ;  ML      # ( 𝐻 → ᕼ ) MATHEMATICAL ITALIC CAPITAL H → CANADIAN SYLLABICS NUNAVUT H       # →H→
+1D46F ;        157C ;  ML      # ( 𝑯 → ᕼ ) MATHEMATICAL BOLD ITALIC CAPITAL H → CANADIAN SYLLABICS NUNAVUT H  # →H→
+1D4D7 ;        157C ;  ML      # ( 𝓗 → ᕼ ) MATHEMATICAL BOLD SCRIPT CAPITAL H → CANADIAN SYLLABICS NUNAVUT H  # →H→
+1D573 ;        157C ;  ML      # ( 𝕳 → ᕼ ) MATHEMATICAL BOLD FRAKTUR CAPITAL H → CANADIAN SYLLABICS NUNAVUT H # →H→
+1D5A7 ;        157C ;  ML      # ( 𝖧 → ᕼ ) MATHEMATICAL SANS-SERIF CAPITAL H → CANADIAN SYLLABICS NUNAVUT H   # →H→
+1D5DB ;        157C ;  ML      # ( 𝗛 → ᕼ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL H → CANADIAN SYLLABICS NUNAVUT H      # →H→
+1D60F ;        157C ;  ML      # ( 𝘏 → ᕼ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL H → CANADIAN SYLLABICS NUNAVUT H    # →H→
+1D643 ;        157C ;  ML      # ( 𝙃 → ᕼ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H → CANADIAN SYLLABICS NUNAVUT H       # →H→
+1D677 ;        157C ;  ML      # ( 𝙷 → ᕼ ) MATHEMATICAL MONOSPACE CAPITAL H → CANADIAN SYLLABICS NUNAVUT H    # →H→
+1D6AE ;        157C ;  ML      # ( 𝚮 → ᕼ ) MATHEMATICAL BOLD CAPITAL ETA → CANADIAN SYLLABICS NUNAVUT H       # →Η→
+1D6E8 ;        157C ;  ML      # ( 𝛨 → ᕼ ) MATHEMATICAL ITALIC CAPITAL ETA → CANADIAN SYLLABICS NUNAVUT H     # →Η→
+1D722 ;        157C ;  ML      # ( 𝜢 → ᕼ ) MATHEMATICAL BOLD ITALIC CAPITAL ETA → CANADIAN SYLLABICS NUNAVUT H        # →Η→
+1D75C ;        157C ;  ML      # ( 𝝜 → ᕼ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA → CANADIAN SYLLABICS NUNAVUT H    # →Η→
+1D796 ;        157C ;  ML      # ( 𝞖 → ᕼ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA → CANADIAN SYLLABICS NUNAVUT H     # →Η→
+13BB ; 157C ;  ML      # ( Ꮋ → ᕼ ) CHEROKEE LETTER MI → CANADIAN SYLLABICS NUNAVUT H   # →H→
+A4E7 ; 157C ;  ML      # ( ꓧ → ᕼ ) LISU LETTER XA → CANADIAN SYLLABICS NUNAVUT H       # →H→
+
+2131 ; 15B4 ;  ML      # ( ℱ → ᖴ ) SCRIPT CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE  # →F→
+1D405 ;        15B4 ;  ML      # ( 𝐅 → ᖴ ) MATHEMATICAL BOLD CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE      # →F→
+1D439 ;        15B4 ;  ML      # ( 𝐹 → ᖴ ) MATHEMATICAL ITALIC CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE    # →F→
+1D46D ;        15B4 ;  ML      # ( 𝑭 → ᖴ ) MATHEMATICAL BOLD ITALIC CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE       # →F→
+1D4D5 ;        15B4 ;  ML      # ( 𝓕 → ᖴ ) MATHEMATICAL BOLD SCRIPT CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE       # →F→
+1D509 ;        15B4 ;  ML      # ( 𝔉 → ᖴ ) MATHEMATICAL FRAKTUR CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE   # →F→
+1D53D ;        15B4 ;  ML      # ( 𝔽 → ᖴ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE     # →F→
+1D571 ;        15B4 ;  ML      # ( 𝕱 → ᖴ ) MATHEMATICAL BOLD FRAKTUR CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE      # →F→
+1D5A5 ;        15B4 ;  ML      # ( 𝖥 → ᖴ ) MATHEMATICAL SANS-SERIF CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE        # →F→
+1D5D9 ;        15B4 ;  ML      # ( 𝗙 → ᖴ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE   # →F→
+1D60D ;        15B4 ;  ML      # ( 𝘍 → ᖴ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE # →F→
+1D641 ;        15B4 ;  ML      # ( 𝙁 → ᖴ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE    # →F→
+1D675 ;        15B4 ;  ML      # ( 𝙵 → ᖴ ) MATHEMATICAL MONOSPACE CAPITAL F → CANADIAN SYLLABICS BLACKFOOT WE # →F→
+1D7CA ;        15B4 ;  ML      # ( 𝟊 → ᖴ ) MATHEMATICAL BOLD CAPITAL DIGAMMA → CANADIAN SYLLABICS BLACKFOOT WE        # →Ϝ→→F→
+A4DD ; 15B4 ;  ML      # ( ꓝ → ᖴ ) LISU LETTER TSA → CANADIAN SYLLABICS BLACKFOOT WE   # →F→
+
+1D400 ;        15C5 ;  ML      # ( 𝐀 → ᗅ ) MATHEMATICAL BOLD CAPITAL A → CANADIAN SYLLABICS CARRIER GHO       # →A→
+1D434 ;        15C5 ;  ML      # ( 𝐴 → ᗅ ) MATHEMATICAL ITALIC CAPITAL A → CANADIAN SYLLABICS CARRIER GHO     # →A→
+1D468 ;        15C5 ;  ML      # ( 𝑨 → ᗅ ) MATHEMATICAL BOLD ITALIC CAPITAL A → CANADIAN SYLLABICS CARRIER GHO        # →A→
+1D49C ;        15C5 ;  ML      # ( 𝒜 → ᗅ ) MATHEMATICAL SCRIPT CAPITAL A → CANADIAN SYLLABICS CARRIER GHO     # →A→
+1D4D0 ;        15C5 ;  ML      # ( 𝓐 → ᗅ ) MATHEMATICAL BOLD SCRIPT CAPITAL A → CANADIAN SYLLABICS CARRIER GHO        # →A→
+1D504 ;        15C5 ;  ML      # ( 𝔄 → ᗅ ) MATHEMATICAL FRAKTUR CAPITAL A → CANADIAN SYLLABICS CARRIER GHO    # →A→
+1D538 ;        15C5 ;  ML      # ( 𝔸 → ᗅ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL A → CANADIAN SYLLABICS CARRIER GHO      # →A→
+1D56C ;        15C5 ;  ML      # ( 𝕬 → ᗅ ) MATHEMATICAL BOLD FRAKTUR CAPITAL A → CANADIAN SYLLABICS CARRIER GHO       # →A→
+1D5A0 ;        15C5 ;  ML      # ( 𝖠 → ᗅ ) MATHEMATICAL SANS-SERIF CAPITAL A → CANADIAN SYLLABICS CARRIER GHO # →A→
+1D5D4 ;        15C5 ;  ML      # ( 𝗔 → ᗅ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL A → CANADIAN SYLLABICS CARRIER GHO    # →A→
+1D608 ;        15C5 ;  ML      # ( 𝘈 → ᗅ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL A → CANADIAN SYLLABICS CARRIER GHO  # →A→
+1D63C ;        15C5 ;  ML      # ( 𝘼 → ᗅ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A → CANADIAN SYLLABICS CARRIER GHO     # →A→
+1D670 ;        15C5 ;  ML      # ( 𝙰 → ᗅ ) MATHEMATICAL MONOSPACE CAPITAL A → CANADIAN SYLLABICS CARRIER GHO  # →A→
+1D6A8 ;        15C5 ;  ML      # ( 𝚨 → ᗅ ) MATHEMATICAL BOLD CAPITAL ALPHA → CANADIAN SYLLABICS CARRIER GHO   # →𝐀→→A→
+1D6E2 ;        15C5 ;  ML      # ( 𝛢 → ᗅ ) MATHEMATICAL ITALIC CAPITAL ALPHA → CANADIAN SYLLABICS CARRIER GHO # →𝐴→→A→
+1D71C ;        15C5 ;  ML      # ( 𝜜 → ᗅ ) MATHEMATICAL BOLD ITALIC CAPITAL ALPHA → CANADIAN SYLLABICS CARRIER GHO    # →𝑨→→A→
+1D756 ;        15C5 ;  ML      # ( 𝝖 → ᗅ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA → CANADIAN SYLLABICS CARRIER GHO        # →Α→→A→
+1D790 ;        15C5 ;  ML      # ( 𝞐 → ᗅ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA → CANADIAN SYLLABICS CARRIER GHO # →Α→→A→
+13AA ; 15C5 ;  ML      # ( Ꭺ → ᗅ ) CHEROKEE LETTER GO → CANADIAN SYLLABICS CARRIER GHO # →A→
+A4EE ; 15C5 ;  ML      # ( ꓮ → ᗅ ) LISU LETTER A → CANADIAN SYLLABICS CARRIER GHO      # →A→
+
+2145 ; 15DE ;  ML      # ( ⅅ → ᗞ ) DOUBLE-STRUCK ITALIC CAPITAL D → CANADIAN SYLLABICS CARRIER THE     # →D→
+1D403 ;        15DE ;  ML      # ( 𝐃 → ᗞ ) MATHEMATICAL BOLD CAPITAL D → CANADIAN SYLLABICS CARRIER THE       # →D→
+1D437 ;        15DE ;  ML      # ( 𝐷 → ᗞ ) MATHEMATICAL ITALIC CAPITAL D → CANADIAN SYLLABICS CARRIER THE     # →D→
+1D46B ;        15DE ;  ML      # ( 𝑫 → ᗞ ) MATHEMATICAL BOLD ITALIC CAPITAL D → CANADIAN SYLLABICS CARRIER THE        # →D→
+1D49F ;        15DE ;  ML      # ( 𝒟 → ᗞ ) MATHEMATICAL SCRIPT CAPITAL D → CANADIAN SYLLABICS CARRIER THE     # →D→
+1D4D3 ;        15DE ;  ML      # ( 𝓓 → ᗞ ) MATHEMATICAL BOLD SCRIPT CAPITAL D → CANADIAN SYLLABICS CARRIER THE        # →D→
+1D507 ;        15DE ;  ML      # ( 𝔇 → ᗞ ) MATHEMATICAL FRAKTUR CAPITAL D → CANADIAN SYLLABICS CARRIER THE    # →D→
+1D53B ;        15DE ;  ML      # ( 𝔻 → ᗞ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL D → CANADIAN SYLLABICS CARRIER THE      # →D→
+1D56F ;        15DE ;  ML      # ( 𝕯 → ᗞ ) MATHEMATICAL BOLD FRAKTUR CAPITAL D → CANADIAN SYLLABICS CARRIER THE       # →D→
+1D5A3 ;        15DE ;  ML      # ( 𝖣 → ᗞ ) MATHEMATICAL SANS-SERIF CAPITAL D → CANADIAN SYLLABICS CARRIER THE # →D→
+1D5D7 ;        15DE ;  ML      # ( 𝗗 → ᗞ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL D → CANADIAN SYLLABICS CARRIER THE    # →D→
+1D60B ;        15DE ;  ML      # ( 𝘋 → ᗞ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL D → CANADIAN SYLLABICS CARRIER THE  # →D→
+1D63F ;        15DE ;  ML      # ( 𝘿 → ᗞ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D → CANADIAN SYLLABICS CARRIER THE     # →D→
+1D673 ;        15DE ;  ML      # ( 𝙳 → ᗞ ) MATHEMATICAL MONOSPACE CAPITAL D → CANADIAN SYLLABICS CARRIER THE  # →D→
+13A0 ; 15DE ;  ML      # ( Ꭰ → ᗞ ) CHEROKEE LETTER A → CANADIAN SYLLABICS CARRIER THE  # →D→
+15EA ; 15DE ;  ML      # ( ᗪ → ᗞ ) CANADIAN SYLLABICS CARRIER PE → CANADIAN SYLLABICS CARRIER THE      # 
+A4D3 ; 15DE ;  ML      # ( ꓓ → ᗞ ) LISU LETTER DA → CANADIAN SYLLABICS CARRIER THE     # →D→
+
+A4F7 ; 15E1 ;  ML      # ( ꓷ → ᗡ ) LISU LETTER OE → CANADIAN SYLLABICS CARRIER THA     # 
+
+2133 ; 15F0 ;  ML      # ( ℳ → ᗰ ) SCRIPT CAPITAL M → CANADIAN SYLLABICS CARRIER GO    # →M→
+1D40C ;        15F0 ;  ML      # ( 𝐌 → ᗰ ) MATHEMATICAL BOLD CAPITAL M → CANADIAN SYLLABICS CARRIER GO        # →M→
+1D440 ;        15F0 ;  ML      # ( 𝑀 → ᗰ ) MATHEMATICAL ITALIC CAPITAL M → CANADIAN SYLLABICS CARRIER GO      # →M→
+1D474 ;        15F0 ;  ML      # ( 𝑴 → ᗰ ) MATHEMATICAL BOLD ITALIC CAPITAL M → CANADIAN SYLLABICS CARRIER GO # →M→
+1D4DC ;        15F0 ;  ML      # ( 𝓜 → ᗰ ) MATHEMATICAL BOLD SCRIPT CAPITAL M → CANADIAN SYLLABICS CARRIER GO # →M→
+1D510 ;        15F0 ;  ML      # ( 𝔐 → ᗰ ) MATHEMATICAL FRAKTUR CAPITAL M → CANADIAN SYLLABICS CARRIER GO     # →M→
+1D544 ;        15F0 ;  ML      # ( 𝕄 → ᗰ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL M → CANADIAN SYLLABICS CARRIER GO       # →M→
+1D578 ;        15F0 ;  ML      # ( 𝕸 → ᗰ ) MATHEMATICAL BOLD FRAKTUR CAPITAL M → CANADIAN SYLLABICS CARRIER GO        # →M→
+1D5AC ;        15F0 ;  ML      # ( 𝖬 → ᗰ ) MATHEMATICAL SANS-SERIF CAPITAL M → CANADIAN SYLLABICS CARRIER GO  # →M→
+1D5E0 ;        15F0 ;  ML      # ( 𝗠 → ᗰ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL M → CANADIAN SYLLABICS CARRIER GO     # →M→
+1D614 ;        15F0 ;  ML      # ( 𝘔 → ᗰ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL M → CANADIAN SYLLABICS CARRIER GO   # →M→
+1D648 ;        15F0 ;  ML      # ( 𝙈 → ᗰ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M → CANADIAN SYLLABICS CARRIER GO      # →M→
+1D67C ;        15F0 ;  ML      # ( 𝙼 → ᗰ ) MATHEMATICAL MONOSPACE CAPITAL M → CANADIAN SYLLABICS CARRIER GO   # →M→
+1D6B3 ;        15F0 ;  ML      # ( 𝚳 → ᗰ ) MATHEMATICAL BOLD CAPITAL MU → CANADIAN SYLLABICS CARRIER GO       # →Μ→→M→
+1D6ED ;        15F0 ;  ML      # ( 𝛭 → ᗰ ) MATHEMATICAL ITALIC CAPITAL MU → CANADIAN SYLLABICS CARRIER GO     # →Μ→→M→
+1D727 ;        15F0 ;  ML      # ( 𝜧 → ᗰ ) MATHEMATICAL BOLD ITALIC CAPITAL MU → CANADIAN SYLLABICS CARRIER GO        # →Μ→→M→
+1D761 ;        15F0 ;  ML      # ( 𝝡 → ᗰ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL MU → CANADIAN SYLLABICS CARRIER GO    # →Μ→→M→
+1D79B ;        15F0 ;  ML      # ( 𝞛 → ᗰ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU → CANADIAN SYLLABICS CARRIER GO     # →Μ→→M→
+13B7 ; 15F0 ;  ML      # ( Ꮇ → ᗰ ) CHEROKEE LETTER LU → CANADIAN SYLLABICS CARRIER GO  # →M→
+A4DF ; 15F0 ;  ML      # ( ꓟ → ᗰ ) LISU LETTER MA → CANADIAN SYLLABICS CARRIER GO      # →M→
+
+212C ; 15F7 ;  ML      # ( ℬ → ᗷ ) SCRIPT CAPITAL B → CANADIAN SYLLABICS CARRIER KHE   # →B→
+1D401 ;        15F7 ;  ML      # ( 𝐁 → ᗷ ) MATHEMATICAL BOLD CAPITAL B → CANADIAN SYLLABICS CARRIER KHE       # →B→
+1D435 ;        15F7 ;  ML      # ( 𝐵 → ᗷ ) MATHEMATICAL ITALIC CAPITAL B → CANADIAN SYLLABICS CARRIER KHE     # →B→
+1D469 ;        15F7 ;  ML      # ( 𝑩 → ᗷ ) MATHEMATICAL BOLD ITALIC CAPITAL B → CANADIAN SYLLABICS CARRIER KHE        # →B→
+1D4D1 ;        15F7 ;  ML      # ( 𝓑 → ᗷ ) MATHEMATICAL BOLD SCRIPT CAPITAL B → CANADIAN SYLLABICS CARRIER KHE        # →B→
+1D505 ;        15F7 ;  ML      # ( 𝔅 → ᗷ ) MATHEMATICAL FRAKTUR CAPITAL B → CANADIAN SYLLABICS CARRIER KHE    # →B→
+1D539 ;        15F7 ;  ML      # ( 𝔹 → ᗷ ) MATHEMATICAL DOUBLE-STRUCK CAPITAL B → CANADIAN SYLLABICS CARRIER KHE      # →B→
+1D56D ;        15F7 ;  ML      # ( 𝕭 → ᗷ ) MATHEMATICAL BOLD FRAKTUR CAPITAL B → CANADIAN SYLLABICS CARRIER KHE       # →B→
+1D5A1 ;        15F7 ;  ML      # ( 𝖡 → ᗷ ) MATHEMATICAL SANS-SERIF CAPITAL B → CANADIAN SYLLABICS CARRIER KHE # →B→
+1D5D5 ;        15F7 ;  ML      # ( 𝗕 → ᗷ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL B → CANADIAN SYLLABICS CARRIER KHE    # →B→
+1D609 ;        15F7 ;  ML      # ( 𝘉 → ᗷ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL B → CANADIAN SYLLABICS CARRIER KHE  # →B→
+1D63D ;        15F7 ;  ML      # ( 𝘽 → ᗷ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B → CANADIAN SYLLABICS CARRIER KHE     # →B→
+1D671 ;        15F7 ;  ML      # ( 𝙱 → ᗷ ) MATHEMATICAL MONOSPACE CAPITAL B → CANADIAN SYLLABICS CARRIER KHE  # →B→
+1D6A9 ;        15F7 ;  ML      # ( 𝚩 → ᗷ ) MATHEMATICAL BOLD CAPITAL BETA → CANADIAN SYLLABICS CARRIER KHE    # →𝐁→→B→
+1D6E3 ;        15F7 ;  ML      # ( 𝛣 → ᗷ ) MATHEMATICAL ITALIC CAPITAL BETA → CANADIAN SYLLABICS CARRIER KHE  # →𝐵→→B→
+1D71D ;        15F7 ;  ML      # ( 𝜝 → ᗷ ) MATHEMATICAL BOLD ITALIC CAPITAL BETA → CANADIAN SYLLABICS CARRIER KHE     # →𝑩→→B→
+1D757 ;        15F7 ;  ML      # ( 𝝗 → ᗷ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA → CANADIAN SYLLABICS CARRIER KHE # →Β→→B→
+1D791 ;        15F7 ;  ML      # ( 𝞑 → ᗷ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA → CANADIAN SYLLABICS CARRIER KHE  # →Β→→B→
+13F4 ; 15F7 ;  ML      # ( Ᏼ → ᗷ ) CHEROKEE LETTER YV → CANADIAN SYLLABICS CARRIER KHE # →B→
+A4D0 ; 15F7 ;  ML      # ( ꓐ → ᗷ ) LISU LETTER BA → CANADIAN SYLLABICS CARRIER KHE     # →B→
+
+2127 ; 162E ;  ML      #* ( ℧ → ᘮ ) INVERTED OHM SIGN → CANADIAN SYLLABICS CARRIER LHU # 
+1634 ; 162E ;  ML      # ( ᘴ → ᘮ ) CANADIAN SYLLABICS CARRIER TLHU → CANADIAN SYLLABICS CARRIER LHU    # 
+
+1D6C0 ;        162F ;  ML      # ( 𝛀 → ᘯ ) MATHEMATICAL BOLD CAPITAL OMEGA → CANADIAN SYLLABICS CARRIER LHO   # →Ω→
+1D6FA ;        162F ;  ML      # ( 𝛺 → ᘯ ) MATHEMATICAL ITALIC CAPITAL OMEGA → CANADIAN SYLLABICS CARRIER LHO # →Ω→
+1D734 ;        162F ;  ML      # ( 𝜴 → ᘯ ) MATHEMATICAL BOLD ITALIC CAPITAL OMEGA → CANADIAN SYLLABICS CARRIER LHO    # →Ω→
+1D76E ;        162F ;  ML      # ( 𝝮 → ᘯ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA → CANADIAN SYLLABICS CARRIER LHO        # →Ω→
+1D7A8 ;        162F ;  ML      # ( 𝞨 → ᘯ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA → CANADIAN SYLLABICS CARRIER LHO # →Ω→
+1635 ; 162F ;  ML      # ( ᘵ → ᘯ ) CANADIAN SYLLABICS CARRIER TLHO → CANADIAN SYLLABICS CARRIER LHO    # 
+
+A4ED ; 1660 ;  ML      # ( ꓭ → ᙠ ) LISU LETTER GHA → CANADIAN SYLLABICS CARRIER TSA    # 
+
+3131 ; 1100 ;  ML      # ( ㄱ → ᄀ ) HANGUL LETTER KIYEOK → HANGUL CHOSEONG KIYEOK       # 
+11A8 ; 1100 ;  ML      # ( ᆨ → ᄀ ) HANGUL JONGSEONG KIYEOK → HANGUL CHOSEONG KIYEOK    # 
+
+1101 ; 1100 1100 ;     ML      # ( ᄁ → ᄀᄀ ) HANGUL CHOSEONG SSANGKIYEOK → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK     # 
+3132 ; 1100 1100 ;     ML      # ( ㄲ → ᄀᄀ ) HANGUL LETTER SSANGKIYEOK → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK       # →ᄁ→
+11A9 ; 1100 1100 ;     ML      # ( ᆩ → ᄀᄀ ) HANGUL JONGSEONG SSANGKIYEOK → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK    # →ᄁ→
+
+11FA ; 1100 1102 ;     ML      # ( ᇺ → ᄀᄂ ) HANGUL JONGSEONG KIYEOK-NIEUN → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG NIEUN    # →ᆨᆫ→
+
+115A ; 1100 1103 ;     ML      # ( ᅚ → ᄀᄃ ) HANGUL CHOSEONG KIYEOK-TIKEUT → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG TIKEUT   # 
+
+11C3 ; 1100 1105 ;     ML      # ( ᇃ → ᄀᄅ ) HANGUL JONGSEONG KIYEOK-RIEUL → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG RIEUL    # →ᆨᆯ→
+
+11FB ; 1100 1107 ;     ML      # ( ᇻ → ᄀᄇ ) HANGUL JONGSEONG KIYEOK-PIEUP → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG PIEUP    # →ᆨᆸ→
+
+11AA ; 1100 1109 ;     ML      # ( ᆪ → ᄀᄉ ) HANGUL JONGSEONG KIYEOK-SIOS → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG SIOS      # →ᆨᆺ→
+3133 ; 1100 1109 ;     ML      # ( ㄳ → ᄀᄉ ) HANGUL LETTER KIYEOK-SIOS → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG SIOS # →ᆪ→→ᆨᆺ→
+
+11C4 ; 1100 1109 1100 ;        ML      # ( ᇄ → ᄀᄉᄀ ) HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK    # →ᆨᆺᆨ→
+
+11FC ; 1100 110E ;     ML      # ( ᇼ → ᄀᄎ ) HANGUL JONGSEONG KIYEOK-CHIEUCH → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG CHIEUCH        # →ᆨᆾ→
+
+11FD ; 1100 110F ;     ML      # ( ᇽ → ᄀᄏ ) HANGUL JONGSEONG KIYEOK-KHIEUKH → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KHIEUKH        # →ᆨᆿ→
+
+11FE ; 1100 1112 ;     ML      # ( ᇾ → ᄀᄒ ) HANGUL JONGSEONG KIYEOK-HIEUH → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG HIEUH    # →ᆨᇂ→
+
+3134 ; 1102 ;  ML      # ( ㄴ → ᄂ ) HANGUL LETTER NIEUN → HANGUL CHOSEONG NIEUN # 
+11AB ; 1102 ;  ML      # ( ᆫ → ᄂ ) HANGUL JONGSEONG NIEUN → HANGUL CHOSEONG NIEUN      # 
+
+1113 ; 1102 1100 ;     ML      # ( ᄓ → ᄂᄀ ) HANGUL CHOSEONG NIEUN-KIYEOK → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG KIYEOK     # 
+11C5 ; 1102 1100 ;     ML      # ( ᇅ → ᄂᄀ ) HANGUL JONGSEONG NIEUN-KIYEOK → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG KIYEOK    # →ᄓ→
+
+1114 ; 1102 1102 ;     ML      # ( ᄔ → ᄂᄂ ) HANGUL CHOSEONG SSANGNIEUN → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG NIEUN        # 
+3165 ; 1102 1102 ;     ML      # ( ㅥ → ᄂᄂ ) HANGUL LETTER SSANGNIEUN → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG NIEUN  # →ᄔ→
+11FF ; 1102 1102 ;     ML      # ( ᇿ → ᄂᄂ ) HANGUL JONGSEONG SSANGNIEUN → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG NIEUN       # →ᆫᆫ→
+
+1115 ; 1102 1103 ;     ML      # ( ᄕ → ᄂᄃ ) HANGUL CHOSEONG NIEUN-TIKEUT → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG TIKEUT     # 
+3166 ; 1102 1103 ;     ML      # ( ㅦ → ᄂᄃ ) HANGUL LETTER NIEUN-TIKEUT → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG TIKEUT       # →ᄕ→
+11C6 ; 1102 1103 ;     ML      # ( ᇆ → ᄂᄃ ) HANGUL JONGSEONG NIEUN-TIKEUT → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG TIKEUT    # →ᄕ→
+
+D7CB ; 1102 1105 ;     ML      # ( ퟋ → ᄂᄅ ) HANGUL JONGSEONG NIEUN-RIEUL → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG RIEUL      # →ᆫᆯ→
+
+1116 ; 1102 1107 ;     ML      # ( ᄖ → ᄂᄇ ) HANGUL CHOSEONG NIEUN-PIEUP → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG PIEUP       # 
+
+115B ; 1102 1109 ;     ML      # ( ᅛ → ᄂᄉ ) HANGUL CHOSEONG NIEUN-SIOS → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG SIOS # 
+11C7 ; 1102 1109 ;     ML      # ( ᇇ → ᄂᄉ ) HANGUL JONGSEONG NIEUN-SIOS → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG SIOS        # →ᆫᆺ→
+3167 ; 1102 1109 ;     ML      # ( ㅧ → ᄂᄉ ) HANGUL LETTER NIEUN-SIOS → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG SIOS   # →ᇇ→→ᆫᆺ→
+
+115C ; 1102 110C ;     ML      # ( ᅜ → ᄂᄌ ) HANGUL CHOSEONG NIEUN-CIEUC → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG CIEUC       # 
+11AC ; 1102 110C ;     ML      # ( ᆬ → ᄂᄌ ) HANGUL JONGSEONG NIEUN-CIEUC → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG CIEUC      # →ᆫᆽ→
+3135 ; 1102 110C ;     ML      # ( ㄵ → ᄂᄌ ) HANGUL LETTER NIEUN-CIEUC → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG CIEUC # →ᆬ→→ᆫᆽ→
+
+D7CC ; 1102 110E ;     ML      # ( ퟌ → ᄂᄎ ) HANGUL JONGSEONG NIEUN-CHIEUCH → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG CHIEUCH  # →ᆫᆾ→
+
+11C9 ; 1102 1110 ;     ML      # ( ᇉ → ᄂᄐ ) HANGUL JONGSEONG NIEUN-THIEUTH → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG THIEUTH  # →ᆫᇀ→
+
+115D ; 1102 1112 ;     ML      # ( ᅝ → ᄂᄒ ) HANGUL CHOSEONG NIEUN-HIEUH → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG HIEUH       # 
+11AD ; 1102 1112 ;     ML      # ( ᆭ → ᄂᄒ ) HANGUL JONGSEONG NIEUN-HIEUH → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG HIEUH      # →ᆫᇂ→
+3136 ; 1102 1112 ;     ML      # ( ㄶ → ᄂᄒ ) HANGUL LETTER NIEUN-HIEUH → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG HIEUH # →ᆭ→→ᆫᇂ→
+
+11C8 ; 1102 1140 ;     ML      # ( ᇈ → ᄂᅀ ) HANGUL JONGSEONG NIEUN-PANSIOS → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG PANSIOS  # →ᆫᇫ→
+3168 ; 1102 1140 ;     ML      # ( ㅨ → ᄂᅀ ) HANGUL LETTER NIEUN-PANSIOS → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG PANSIOS     # →ᇈ→→ᆫᇫ→
+
+3137 ; 1103 ;  ML      # ( ㄷ → ᄃ ) HANGUL LETTER TIKEUT → HANGUL CHOSEONG TIKEUT       # 
+11AE ; 1103 ;  ML      # ( ᆮ → ᄃ ) HANGUL JONGSEONG TIKEUT → HANGUL CHOSEONG TIKEUT    # 
+
+1117 ; 1103 1100 ;     ML      # ( ᄗ → ᄃᄀ ) HANGUL CHOSEONG TIKEUT-KIYEOK → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG KIYEOK   # 
+11CA ; 1103 1100 ;     ML      # ( ᇊ → ᄃᄀ ) HANGUL JONGSEONG TIKEUT-KIYEOK → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG KIYEOK  # →ᄗ→
+
+1104 ; 1103 1103 ;     ML      # ( ᄄ → ᄃᄃ ) HANGUL CHOSEONG SSANGTIKEUT → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG TIKEUT     # 
+3138 ; 1103 1103 ;     ML      # ( ㄸ → ᄃᄃ ) HANGUL LETTER SSANGTIKEUT → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG TIKEUT       # →ᄄ→
+D7CD ; 1103 1103 ;     ML      # ( ퟍ → ᄃᄃ ) HANGUL JONGSEONG SSANGTIKEUT → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG TIKEUT    # →ᆮᆮ→
+
+D7CE ; 1103 1103 1107 ;        ML      # ( ퟎ → ᄃᄃᄇ ) HANGUL JONGSEONG SSANGTIKEUT-PIEUP → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG PIEUP    # →ᆮᆮᆸ→
+
+115E ; 1103 1105 ;     ML      # ( ᅞ → ᄃᄅ ) HANGUL CHOSEONG TIKEUT-RIEUL → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG RIEUL     # 
+11CB ; 1103 1105 ;     ML      # ( ᇋ → ᄃᄅ ) HANGUL JONGSEONG TIKEUT-RIEUL → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG RIEUL    # →ᆮᆯ→
+
+A960 ; 1103 1106 ;     ML      # ( ꥠ → ᄃᄆ ) HANGUL CHOSEONG TIKEUT-MIEUM → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG MIEUM     # 
+
+A961 ; 1103 1107 ;     ML      # ( ꥡ → ᄃᄇ ) HANGUL CHOSEONG TIKEUT-PIEUP → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG PIEUP     # 
+D7CF ; 1103 1107 ;     ML      # ( ퟏ → ᄃᄇ ) HANGUL JONGSEONG TIKEUT-PIEUP → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG PIEUP    # →ᆮᆸ→
+
+A962 ; 1103 1109 ;     ML      # ( ꥢ → ᄃᄉ ) HANGUL CHOSEONG TIKEUT-SIOS → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG SIOS       # 
+D7D0 ; 1103 1109 ;     ML      # ( ퟐ → ᄃᄉ ) HANGUL JONGSEONG TIKEUT-SIOS → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG SIOS      # →ᆮᆺ→
+
+D7D1 ; 1103 1109 1100 ;        ML      # ( ퟑ → ᄃᄉᄀ ) HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK    # →ᆮᆺᆨ→
+
+A963 ; 1103 110C ;     ML      # ( ꥣ → ᄃᄌ ) HANGUL CHOSEONG TIKEUT-CIEUC → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG CIEUC     # 
+D7D2 ; 1103 110C ;     ML      # ( ퟒ → ᄃᄌ ) HANGUL JONGSEONG TIKEUT-CIEUC → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG CIEUC    # →ᆮᆽ→
+
+D7D3 ; 1103 110E ;     ML      # ( ퟓ → ᄃᄎ ) HANGUL JONGSEONG TIKEUT-CHIEUCH → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG CHIEUCH        # →ᆮᆾ→
+
+D7D4 ; 1103 1110 ;     ML      # ( ퟔ → ᄃᄐ ) HANGUL JONGSEONG TIKEUT-THIEUTH → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG THIEUTH        # →ᆮᇀ→
+
+3139 ; 1105 ;  ML      # ( ㄹ → ᄅ ) HANGUL LETTER RIEUL → HANGUL CHOSEONG RIEUL # 
+11AF ; 1105 ;  ML      # ( ᆯ → ᄅ ) HANGUL JONGSEONG RIEUL → HANGUL CHOSEONG RIEUL      # 
+
+A964 ; 1105 1100 ;     ML      # ( ꥤ → ᄅᄀ ) HANGUL CHOSEONG RIEUL-KIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK     # 
+11B0 ; 1105 1100 ;     ML      # ( ᆰ → ᄅᄀ ) HANGUL JONGSEONG RIEUL-KIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK    # →ᆯᆨ→
+313A ; 1105 1100 ;     ML      # ( ㄺ → ᄅᄀ ) HANGUL LETTER RIEUL-KIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK       # →ᆰ→→ᆯᆨ→
+
+A965 ; 1105 1100 1100 ;        ML      # ( ꥥ → ᄅᄀᄀ ) HANGUL CHOSEONG RIEUL-SSANGKIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK     # 
+D7D5 ; 1105 1100 1100 ;        ML      # ( ퟕ → ᄅᄀᄀ ) HANGUL JONGSEONG RIEUL-SSANGKIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK    # →ᆯᆨᆨ→
+
+11CC ; 1105 1100 1109 ;        ML      # ( ᇌ → ᄅᄀᄉ ) HANGUL JONGSEONG RIEUL-KIYEOK-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG SIOS      # →ᆯᆨᆺ→
+3169 ; 1105 1100 1109 ;        ML      # ( ㅩ → ᄅᄀᄉ ) HANGUL LETTER RIEUL-KIYEOK-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG SIOS # →ᇌ→→ᆯᆨᆺ→
+
+D7D6 ; 1105 1100 1112 ;        ML      # ( ퟖ → ᄅᄀᄒ ) HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG HIEUH    # →ᆯᆨᇂ→
+
+1118 ; 1105 1102 ;     ML      # ( ᄘ → ᄅᄂ ) HANGUL CHOSEONG RIEUL-NIEUN → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG NIEUN       # 
+11CD ; 1105 1102 ;     ML      # ( ᇍ → ᄅᄂ ) HANGUL JONGSEONG RIEUL-NIEUN → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG NIEUN      # →ᄘ→
+
+A966 ; 1105 1103 ;     ML      # ( ꥦ → ᄅᄃ ) HANGUL CHOSEONG RIEUL-TIKEUT → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG TIKEUT     # 
+11CE ; 1105 1103 ;     ML      # ( ᇎ → ᄅᄃ ) HANGUL JONGSEONG RIEUL-TIKEUT → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG TIKEUT    # →ᆯᆮ→
+316A ; 1105 1103 ;     ML      # ( ㅪ → ᄅᄃ ) HANGUL LETTER RIEUL-TIKEUT → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG TIKEUT       # →ᇎ→→ᆯᆮ→
+
+A967 ; 1105 1103 1103 ;        ML      # ( ꥧ → ᄅᄃᄃ ) HANGUL CHOSEONG RIEUL-SSANGTIKEUT → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG TIKEUT     # 
+
+11CF ; 1105 1103 1112 ;        ML      # ( ᇏ → ᄅᄃᄒ ) HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG HIEUH    # →ᆯᆮᇂ→
+
+1119 ; 1105 1105 ;     ML      # ( ᄙ → ᄅᄅ ) HANGUL CHOSEONG SSANGRIEUL → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG RIEUL        # 
+11D0 ; 1105 1105 ;     ML      # ( ᇐ → ᄅᄅ ) HANGUL JONGSEONG SSANGRIEUL → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG RIEUL       # →ᄙ→
+
+D7D7 ; 1105 1105 110F ;        ML      # ( ퟗ → ᄅᄅᄏ ) HANGUL JONGSEONG SSANGRIEUL-KHIEUKH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KHIEUKH   # →ᆯᆯᆿ→
+
+A968 ; 1105 1106 ;     ML      # ( ꥨ → ᄅᄆ ) HANGUL CHOSEONG RIEUL-MIEUM → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM       # 
+11B1 ; 1105 1106 ;     ML      # ( ᆱ → ᄅᄆ ) HANGUL JONGSEONG RIEUL-MIEUM → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM      # →ᆯᆷ→
+313B ; 1105 1106 ;     ML      # ( ㄻ → ᄅᄆ ) HANGUL LETTER RIEUL-MIEUM → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM # →ᆱ→→ᆯᆷ→
+
+11D1 ; 1105 1106 1100 ;        ML      # ( ᇑ → ᄅᄆᄀ ) HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG KIYEOK    # →ᆯᆷᆨ→
+
+11D2 ; 1105 1106 1109 ;        ML      # ( ᇒ → ᄅᄆᄉ ) HANGUL JONGSEONG RIEUL-MIEUM-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG SIOS        # →ᆯᆷᆺ→
+
+D7D8 ; 1105 1106 1112 ;        ML      # ( ퟘ → ᄅᄆᄒ ) HANGUL JONGSEONG RIEUL-MIEUM-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG HIEUH      # →ᆯᆷᇂ→
+
+A969 ; 1105 1107 ;     ML      # ( ꥩ → ᄅᄇ ) HANGUL CHOSEONG RIEUL-PIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP       # 
+11B2 ; 1105 1107 ;     ML      # ( ᆲ → ᄅᄇ ) HANGUL JONGSEONG RIEUL-PIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP      # →ᆯᆸ→
+313C ; 1105 1107 ;     ML      # ( ㄼ → ᄅᄇ ) HANGUL LETTER RIEUL-PIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP # →ᆲ→→ᆯᆸ→
+
+D7D9 ; 1105 1107 1103 ;        ML      # ( ퟙ → ᄅᄇᄃ ) HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG TIKEUT    # →ᆯᆸᆮ→
+
+A96A ; 1105 1107 1107 ;        ML      # ( ꥪ → ᄅᄇᄇ ) HANGUL CHOSEONG RIEUL-SSANGPIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP        # 
+
+11D3 ; 1105 1107 1109 ;        ML      # ( ᇓ → ᄅᄇᄉ ) HANGUL JONGSEONG RIEUL-PIEUP-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS        # →ᆯᆸᆺ→
+316B ; 1105 1107 1109 ;        ML      # ( ㅫ → ᄅᄇᄉ ) HANGUL LETTER RIEUL-PIEUP-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS   # →ᇓ→→ᆯᆸᆺ→
+
+A96B ; 1105 1107 110B ;        ML      # ( ꥫ → ᄅᄇᄋ ) HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG     # 
+11D5 ; 1105 1107 110B ;        ML      # ( ᇕ → ᄅᄇᄋ ) HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG    # →ᆯᆸᆼ→
+
+D7DA ; 1105 1107 1111 ;        ML      # ( ퟚ → ᄅᄇᄑ ) HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PHIEUPH  # →ᆯᆸᇁ→
+
+11D4 ; 1105 1107 1112 ;        ML      # ( ᇔ → ᄅᄇᄒ ) HANGUL JONGSEONG RIEUL-PIEUP-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG HIEUH      # →ᆯᆸᇂ→
+
+A96C ; 1105 1109 ;     ML      # ( ꥬ → ᄅᄉ ) HANGUL CHOSEONG RIEUL-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG SIOS # 
+11B3 ; 1105 1109 ;     ML      # ( ᆳ → ᄅᄉ ) HANGUL JONGSEONG RIEUL-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG SIOS        # →ᆯᆺ→
+313D ; 1105 1109 ;     ML      # ( ㄽ → ᄅᄉ ) HANGUL LETTER RIEUL-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG SIOS   # →ᆳ→→ᆯᆺ→
+
+11D6 ; 1105 1109 1109 ;        ML      # ( ᇖ → ᄅᄉᄉ ) HANGUL JONGSEONG RIEUL-SSANGSIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS  # →ᆯᆺᆺ→
+
+111B ; 1105 110B ;     ML      # ( ᄛ → ᄅᄋ ) HANGUL CHOSEONG KAPYEOUNRIEUL → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG IEUNG     # 
+D7DD ; 1105 110B ;     ML      # ( ퟝ → ᄅᄋ ) HANGUL JONGSEONG KAPYEOUNRIEUL → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG IEUNG    # →ᆯᆼ→
+
+A96D ; 1105 110C ;     ML      # ( ꥭ → ᄅᄌ ) HANGUL CHOSEONG RIEUL-CIEUC → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG CIEUC       # 
+
+A96E ; 1105 110F ;     ML      # ( ꥮ → ᄅᄏ ) HANGUL CHOSEONG RIEUL-KHIEUKH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KHIEUKH   # 
+11D8 ; 1105 110F ;     ML      # ( ᇘ → ᄅᄏ ) HANGUL JONGSEONG RIEUL-KHIEUKH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KHIEUKH  # →ᆯᆿ→
+
+11B4 ; 1105 1110 ;     ML      # ( ᆴ → ᄅᄐ ) HANGUL JONGSEONG RIEUL-THIEUTH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG THIEUTH  # →ᆯᇀ→
+313E ; 1105 1110 ;     ML      # ( ㄾ → ᄅᄐ ) HANGUL LETTER RIEUL-THIEUTH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG THIEUTH     # →ᆴ→→ᆯᇀ→
+
+11B5 ; 1105 1111 ;     ML      # ( ᆵ → ᄅᄑ ) HANGUL JONGSEONG RIEUL-PHIEUPH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PHIEUPH  # →ᆯᇁ→
+313F ; 1105 1111 ;     ML      # ( ㄿ → ᄅᄑ ) HANGUL LETTER RIEUL-PHIEUPH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PHIEUPH     # →ᆵ→→ᆯᇁ→
+
+111A ; 1105 1112 ;     ML      # ( ᄚ → ᄅᄒ ) HANGUL CHOSEONG RIEUL-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG HIEUH       # 
+3140 ; 1105 1112 ;     ML      # ( ㅀ → ᄅᄒ ) HANGUL LETTER RIEUL-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG HIEUH # →ᄚ→
+113B ; 1105 1112 ;     ML      # ( ᄻ → ᄅᄒ ) HANGUL CHOSEONG SIOS-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG HIEUH        # →ᄚ→
+11B6 ; 1105 1112 ;     ML      # ( ᆶ → ᄅᄒ ) HANGUL JONGSEONG RIEUL-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG HIEUH      # →ᄚ→
+D7F2 ; 1105 1112 ;     ML      # ( ퟲ → ᄅᄒ ) HANGUL JONGSEONG SIOS-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG HIEUH       # →ᆺᇂ→→ᄉᄒ→→ᄻ→→ᄚ→
+
+11D7 ; 1105 1140 ;     ML      # ( ᇗ → ᄅᅀ ) HANGUL JONGSEONG RIEUL-PANSIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PANSIOS  # →ᆯᇫ→
+316C ; 1105 1140 ;     ML      # ( ㅬ → ᄅᅀ ) HANGUL LETTER RIEUL-PANSIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PANSIOS     # →ᇗ→→ᆯᇫ→
+
+D7DB ; 1105 114C ;     ML      # ( ퟛ → ᄅᅌ ) HANGUL JONGSEONG RIEUL-YESIEUNG → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG YESIEUNG        # →ᆯᇰ→
+
+11D9 ; 1105 1159 ;     ML      # ( ᇙ → ᄅᅙ ) HANGUL JONGSEONG RIEUL-YEORINHIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG YEORINHIEUH  # →ᆯᇹ→
+316D ; 1105 1159 ;     ML      # ( ㅭ → ᄅᅙ ) HANGUL LETTER RIEUL-YEORINHIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG YEORINHIEUH     # →ᇙ→→ᆯᇹ→
+
+D7DC ; 1105 1159 1112 ;        ML      # ( ퟜ → ᄅᅙᄒ ) HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG YEORINHIEUH, HANGUL CHOSEONG HIEUH  # →ᆯᇹᇂ→
+
+3141 ; 1106 ;  ML      # ( ㅁ → ᄆ ) HANGUL LETTER MIEUM → HANGUL CHOSEONG MIEUM # 
+11B7 ; 1106 ;  ML      # ( ᆷ → ᄆ ) HANGUL JONGSEONG MIEUM → HANGUL CHOSEONG MIEUM      # 
+
+A96F ; 1106 1100 ;     ML      # ( ꥯ → ᄆᄀ ) HANGUL CHOSEONG MIEUM-KIYEOK → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG KIYEOK     # 
+11DA ; 1106 1100 ;     ML      # ( ᇚ → ᄆᄀ ) HANGUL JONGSEONG MIEUM-KIYEOK → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG KIYEOK    # →ᆷᆨ→
+
+D7DE ; 1106 1102 ;     ML      # ( ퟞ → ᄆᄂ ) HANGUL JONGSEONG MIEUM-NIEUN → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG NIEUN      # →ᆷᆫ→
+
+D7DF ; 1106 1102 1102 ;        ML      # ( ퟟ → ᄆᄂᄂ ) HANGUL JONGSEONG MIEUM-SSANGNIEUN → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG NIEUN       # →ᆷᆫᆫ→
+
+A970 ; 1106 1103 ;     ML      # ( ꥰ → ᄆᄃ ) HANGUL CHOSEONG MIEUM-TIKEUT → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG TIKEUT     # 
+
+11DB ; 1106 1105 ;     ML      # ( ᇛ → ᄆᄅ ) HANGUL JONGSEONG MIEUM-RIEUL → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG RIEUL      # →ᆷᆯ→
+
+D7E0 ; 1106 1106 ;     ML      # ( ퟠ → ᄆᄆ ) HANGUL JONGSEONG SSANGMIEUM → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG MIEUM       # →ᆷᆷ→
+
+111C ; 1106 1107 ;     ML      # ( ᄜ → ᄆᄇ ) HANGUL CHOSEONG MIEUM-PIEUP → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PIEUP       # 
+316E ; 1106 1107 ;     ML      # ( ㅮ → ᄆᄇ ) HANGUL LETTER MIEUM-PIEUP → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PIEUP # →ᄜ→
+11DC ; 1106 1107 ;     ML      # ( ᇜ → ᄆᄇ ) HANGUL JONGSEONG MIEUM-PIEUP → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PIEUP      # →ᄜ→
+
+D7E1 ; 1106 1107 1109 ;        ML      # ( ퟡ → ᄆᄇᄉ ) HANGUL JONGSEONG MIEUM-PIEUP-SIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS        # →ᆷᆸᆺ→
+
+A971 ; 1106 1109 ;     ML      # ( ꥱ → ᄆᄉ ) HANGUL CHOSEONG MIEUM-SIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG SIOS # 
+11DD ; 1106 1109 ;     ML      # ( ᇝ → ᄆᄉ ) HANGUL JONGSEONG MIEUM-SIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG SIOS        # →ᆷᆺ→
+316F ; 1106 1109 ;     ML      # ( ㅯ → ᄆᄉ ) HANGUL LETTER MIEUM-SIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG SIOS   # →ᇝ→→ᆷᆺ→
+
+11DE ; 1106 1109 1109 ;        ML      # ( ᇞ → ᄆᄉᄉ ) HANGUL JONGSEONG MIEUM-SSANGSIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS  # →ᆷᆺᆺ→
+
+111D ; 1106 110B ;     ML      # ( ᄝ → ᄆᄋ ) HANGUL CHOSEONG KAPYEOUNMIEUM → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG IEUNG     # 
+3171 ; 1106 110B ;     ML      # ( ㅱ → ᄆᄋ ) HANGUL LETTER KAPYEOUNMIEUM → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG IEUNG       # →ᄝ→
+11E2 ; 1106 110B ;     ML      # ( ᇢ → ᄆᄋ ) HANGUL JONGSEONG KAPYEOUNMIEUM → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG IEUNG    # →ᄝ→
+
+D7E2 ; 1106 110C ;     ML      # ( ퟢ → ᄆᄌ ) HANGUL JONGSEONG MIEUM-CIEUC → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG CIEUC      # →ᆷᆽ→
+
+11E0 ; 1106 110E ;     ML      # ( ᇠ → ᄆᄎ ) HANGUL JONGSEONG MIEUM-CHIEUCH → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG CHIEUCH  # →ᆷᆾ→
+
+11E1 ; 1106 1112 ;     ML      # ( ᇡ → ᄆᄒ ) HANGUL JONGSEONG MIEUM-HIEUH → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG HIEUH      # →ᆷᇂ→
+
+11DF ; 1106 1140 ;     ML      # ( ᇟ → ᄆᅀ ) HANGUL JONGSEONG MIEUM-PANSIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PANSIOS  # →ᆷᇫ→
+3170 ; 1106 1140 ;     ML      # ( ㅰ → ᄆᅀ ) HANGUL LETTER MIEUM-PANSIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PANSIOS     # →ᇟ→→ᆷᇫ→
+
+3142 ; 1107 ;  ML      # ( ㅂ → ᄇ ) HANGUL LETTER PIEUP → HANGUL CHOSEONG PIEUP # 
+11B8 ; 1107 ;  ML      # ( ᆸ → ᄇ ) HANGUL JONGSEONG PIEUP → HANGUL CHOSEONG PIEUP      # 
+
+111E ; 1107 1100 ;     ML      # ( ᄞ → ᄇᄀ ) HANGUL CHOSEONG PIEUP-KIYEOK → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG KIYEOK     # 
+3172 ; 1107 1100 ;     ML      # ( ㅲ → ᄇᄀ ) HANGUL LETTER PIEUP-KIYEOK → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG KIYEOK       # →ᄞ→
+
+111F ; 1107 1102 ;     ML      # ( ᄟ → ᄇᄂ ) HANGUL CHOSEONG PIEUP-NIEUN → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG NIEUN       # 
+
+1120 ; 1107 1103 ;     ML      # ( ᄠ → ᄇᄃ ) HANGUL CHOSEONG PIEUP-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG TIKEUT     # 
+3173 ; 1107 1103 ;     ML      # ( ㅳ → ᄇᄃ ) HANGUL LETTER PIEUP-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG TIKEUT       # →ᄠ→
+D7E3 ; 1107 1103 ;     ML      # ( ퟣ → ᄇᄃ ) HANGUL JONGSEONG PIEUP-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG TIKEUT    # →ᆸᆮ→
+
+11E3 ; 1107 1105 ;     ML      # ( ᇣ → ᄇᄅ ) HANGUL JONGSEONG PIEUP-RIEUL → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG RIEUL      # →ᆸᆯ→
+
+D7E4 ; 1107 1105 1111 ;        ML      # ( ퟤ → ᄇᄅᄑ ) HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PHIEUPH  # →ᆸᆯᇁ→
+
+D7E5 ; 1107 1106 ;     ML      # ( ퟥ → ᄇᄆ ) HANGUL JONGSEONG PIEUP-MIEUM → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG MIEUM      # →ᆸᆷ→
+
+1108 ; 1107 1107 ;     ML      # ( ᄈ → ᄇᄇ ) HANGUL CHOSEONG SSANGPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP        # 
+3143 ; 1107 1107 ;     ML      # ( ㅃ → ᄇᄇ ) HANGUL LETTER SSANGPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP  # →ᄈ→
+D7E6 ; 1107 1107 ;     ML      # ( ퟦ → ᄇᄇ ) HANGUL JONGSEONG SSANGPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP       # →ᆸᆸ→
+
+112C ; 1107 1107 110B ;        ML      # ( ᄬ → ᄇᄇᄋ ) HANGUL CHOSEONG KAPYEOUNSSANGPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG      # 
+3179 ; 1107 1107 110B ;        ML      # ( ㅹ → ᄇᄇᄋ ) HANGUL LETTER KAPYEOUNSSANGPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG        # →ᄬ→
+
+1121 ; 1107 1109 ;     ML      # ( ᄡ → ᄇᄉ ) HANGUL CHOSEONG PIEUP-SIOS → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS # 
+3144 ; 1107 1109 ;     ML      # ( ㅄ → ᄇᄉ ) HANGUL LETTER PIEUP-SIOS → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS   # →ᄡ→
+11B9 ; 1107 1109 ;     ML      # ( ᆹ → ᄇᄉ ) HANGUL JONGSEONG PIEUP-SIOS → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS        # →ᄡ→
+
+1122 ; 1107 1109 1100 ;        ML      # ( ᄢ → ᄇᄉᄀ ) HANGUL CHOSEONG PIEUP-SIOS-KIYEOK → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK       # 
+3174 ; 1107 1109 1100 ;        ML      # ( ㅴ → ᄇᄉᄀ ) HANGUL LETTER PIEUP-SIOS-KIYEOK → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK # →ᄢ→
+
+1123 ; 1107 1109 1103 ;        ML      # ( ᄣ → ᄇᄉᄃ ) HANGUL CHOSEONG PIEUP-SIOS-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT       # 
+3175 ; 1107 1109 1103 ;        ML      # ( ㅵ → ᄇᄉᄃ ) HANGUL LETTER PIEUP-SIOS-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT # →ᄣ→
+D7E7 ; 1107 1109 1103 ;        ML      # ( ퟧ → ᄇᄉᄃ ) HANGUL JONGSEONG PIEUP-SIOS-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT      # →ᆸᆺᆮ→
+
+1124 ; 1107 1109 1107 ;        ML      # ( ᄤ → ᄇᄉᄇ ) HANGUL CHOSEONG PIEUP-SIOS-PIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP # 
+
+1125 ; 1107 1109 1109 ;        ML      # ( ᄥ → ᄇᄉᄉ ) HANGUL CHOSEONG PIEUP-SSANGSIOS → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS   # 
+
+1126 ; 1107 1109 110C ;        ML      # ( ᄦ → ᄇᄉᄌ ) HANGUL CHOSEONG PIEUP-SIOS-CIEUC → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CIEUC # 
+
+A972 ; 1107 1109 1110 ;        ML      # ( ꥲ → ᄇᄉᄐ ) HANGUL CHOSEONG PIEUP-SIOS-THIEUTH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG THIEUTH     # 
+
+112B ; 1107 110B ;     ML      # ( ᄫ → ᄇᄋ ) HANGUL CHOSEONG KAPYEOUNPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG     # 
+3178 ; 1107 110B ;     ML      # ( ㅸ → ᄇᄋ ) HANGUL LETTER KAPYEOUNPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG       # →ᄫ→
+11E6 ; 1107 110B ;     ML      # ( ᇦ → ᄇᄋ ) HANGUL JONGSEONG KAPYEOUNPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG    # →ᄫ→
+
+1127 ; 1107 110C ;     ML      # ( ᄧ → ᄇᄌ ) HANGUL CHOSEONG PIEUP-CIEUC → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG CIEUC       # 
+3176 ; 1107 110C ;     ML      # ( ㅶ → ᄇᄌ ) HANGUL LETTER PIEUP-CIEUC → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG CIEUC # →ᄧ→
+D7E8 ; 1107 110C ;     ML      # ( ퟨ → ᄇᄌ ) HANGUL JONGSEONG PIEUP-CIEUC → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG CIEUC      # →ᆸᆽ→
+
+1128 ; 1107 110E ;     ML      # ( ᄨ → ᄇᄎ ) HANGUL CHOSEONG PIEUP-CHIEUCH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG CHIEUCH   # 
+D7E9 ; 1107 110E ;     ML      # ( ퟩ → ᄇᄎ ) HANGUL JONGSEONG PIEUP-CHIEUCH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG CHIEUCH  # →ᆸᆾ→
+
+A973 ; 1107 110F ;     ML      # ( ꥳ → ᄇᄏ ) HANGUL CHOSEONG PIEUP-KHIEUKH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG KHIEUKH   # 
+
+1129 ; 1107 1110 ;     ML      # ( ᄩ → ᄇᄐ ) HANGUL CHOSEONG PIEUP-THIEUTH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG THIEUTH   # 
+3177 ; 1107 1110 ;     ML      # ( ㅷ → ᄇᄐ ) HANGUL LETTER PIEUP-THIEUTH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG THIEUTH     # →ᄩ→
+
+112A ; 1107 1111 ;     ML      # ( ᄪ → ᄇᄑ ) HANGUL CHOSEONG PIEUP-PHIEUPH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PHIEUPH   # 
+11E4 ; 1107 1111 ;     ML      # ( ᇤ → ᄇᄑ ) HANGUL JONGSEONG PIEUP-PHIEUPH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PHIEUPH  # →ᆸᇁ→
+
+A974 ; 1107 1112 ;     ML      # ( ꥴ → ᄇᄒ ) HANGUL CHOSEONG PIEUP-HIEUH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG HIEUH       # 
+11E5 ; 1107 1112 ;     ML      # ( ᇥ → ᄇᄒ ) HANGUL JONGSEONG PIEUP-HIEUH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG HIEUH      # →ᆸᇂ→
+
+3145 ; 1109 ;  ML      # ( ㅅ → ᄉ ) HANGUL LETTER SIOS → HANGUL CHOSEONG SIOS   # 
+11BA ; 1109 ;  ML      # ( ᆺ → ᄉ ) HANGUL JONGSEONG SIOS → HANGUL CHOSEONG SIOS        # 
+
+112D ; 1109 1100 ;     ML      # ( ᄭ → ᄉᄀ ) HANGUL CHOSEONG SIOS-KIYEOK → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK       # 
+317A ; 1109 1100 ;     ML      # ( ㅺ → ᄉᄀ ) HANGUL LETTER SIOS-KIYEOK → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK # →ᄭ→
+11E7 ; 1109 1100 ;     ML      # ( ᇧ → ᄉᄀ ) HANGUL JONGSEONG SIOS-KIYEOK → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK      # →ᄭ→
+
+112E ; 1109 1102 ;     ML      # ( ᄮ → ᄉᄂ ) HANGUL CHOSEONG SIOS-NIEUN → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG NIEUN # 
+317B ; 1109 1102 ;     ML      # ( ㅻ → ᄉᄂ ) HANGUL LETTER SIOS-NIEUN → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG NIEUN   # →ᄮ→
+
+112F ; 1109 1103 ;     ML      # ( ᄯ → ᄉᄃ ) HANGUL CHOSEONG SIOS-TIKEUT → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT       # 
+317C ; 1109 1103 ;     ML      # ( ㅼ → ᄉᄃ ) HANGUL LETTER SIOS-TIKEUT → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT # →ᄯ→
+11E8 ; 1109 1103 ;     ML      # ( ᇨ → ᄉᄃ ) HANGUL JONGSEONG SIOS-TIKEUT → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT      # →ᄯ→
+
+1130 ; 1109 1105 ;     ML      # ( ᄰ → ᄉᄅ ) HANGUL CHOSEONG SIOS-RIEUL → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG RIEUL # 
+11E9 ; 1109 1105 ;     ML      # ( ᇩ → ᄉᄅ ) HANGUL JONGSEONG SIOS-RIEUL → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG RIEUL        # →ᄰ→
+
+1131 ; 1109 1106 ;     ML      # ( ᄱ → ᄉᄆ ) HANGUL CHOSEONG SIOS-MIEUM → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG MIEUM # 
+D7EA ; 1109 1106 ;     ML      # ( ퟪ → ᄉᄆ ) HANGUL JONGSEONG SIOS-MIEUM → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG MIEUM        # →ᆺᆷ→
+
+1132 ; 1109 1107 ;     ML      # ( ᄲ → ᄉᄇ ) HANGUL CHOSEONG SIOS-PIEUP → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP # 
+317D ; 1109 1107 ;     ML      # ( ㅽ → ᄉᄇ ) HANGUL LETTER SIOS-PIEUP → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP   # →ᄲ→
+11EA ; 1109 1107 ;     ML      # ( ᇪ → ᄉᄇ ) HANGUL JONGSEONG SIOS-PIEUP → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP        # →ᄲ→
+
+1133 ; 1109 1107 1100 ;        ML      # ( ᄳ → ᄉᄇᄀ ) HANGUL CHOSEONG SIOS-PIEUP-KIYEOK → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG KIYEOK       # 
+
+D7EB ; 1109 1107 110B ;        ML      # ( ퟫ → ᄉᄇᄋ ) HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG      # →ᆺᆸᆼ→
+
+110A ; 1109 1109 ;     ML      # ( ᄊ → ᄉᄉ ) HANGUL CHOSEONG SSANGSIOS → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS   # 
+3146 ; 1109 1109 ;     ML      # ( ㅆ → ᄉᄉ ) HANGUL LETTER SSANGSIOS → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS     # →ᄊ→
+11BB ; 1109 1109 ;     ML      # ( ᆻ → ᄉᄉ ) HANGUL JONGSEONG SSANGSIOS → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS  # →ᄊ→
+
+D7EC ; 1109 1109 1100 ;        ML      # ( ퟬ → ᄉᄉᄀ ) HANGUL JONGSEONG SSANGSIOS-KIYEOK → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK        # →ᆺᆺᆨ→
+
+D7ED ; 1109 1109 1103 ;        ML      # ( ퟭ → ᄉᄉᄃ ) HANGUL JONGSEONG SSANGSIOS-TIKEUT → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT        # →ᆺᆺᆮ→
+
+A975 ; 1109 1109 1107 ;        ML      # ( ꥵ → ᄉᄉᄇ ) HANGUL CHOSEONG SSANGSIOS-PIEUP → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP   # 
+
+1134 ; 1109 1109 1109 ;        ML      # ( ᄴ → ᄉᄉᄉ ) HANGUL CHOSEONG SIOS-SSANGSIOS → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS     # 
+
+1135 ; 1109 110B ;     ML      # ( ᄵ → ᄉᄋ ) HANGUL CHOSEONG SIOS-IEUNG → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG IEUNG # 
+
+1136 ; 1109 110C ;     ML      # ( ᄶ → ᄉᄌ ) HANGUL CHOSEONG SIOS-CIEUC → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CIEUC # 
+317E ; 1109 110C ;     ML      # ( ㅾ → ᄉᄌ ) HANGUL LETTER SIOS-CIEUC → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CIEUC   # →ᄶ→
+D7EF ; 1109 110C ;     ML      # ( ퟯ → ᄉᄌ ) HANGUL JONGSEONG SIOS-CIEUC → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CIEUC        # →ᆺᆽ→
+
+1137 ; 1109 110E ;     ML      # ( ᄷ → ᄉᄎ ) HANGUL CHOSEONG SIOS-CHIEUCH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CHIEUCH     # 
+D7F0 ; 1109 110E ;     ML      # ( ퟰ → ᄉᄎ ) HANGUL JONGSEONG SIOS-CHIEUCH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CHIEUCH    # →ᆺᆾ→
+
+1138 ; 1109 110F ;     ML      # ( ᄸ → ᄉᄏ ) HANGUL CHOSEONG SIOS-KHIEUKH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KHIEUKH     # 
+
+1139 ; 1109 1110 ;     ML      # ( ᄹ → ᄉᄐ ) HANGUL CHOSEONG SIOS-THIEUTH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG THIEUTH     # 
+D7F1 ; 1109 1110 ;     ML      # ( ퟱ → ᄉᄐ ) HANGUL JONGSEONG SIOS-THIEUTH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG THIEUTH    # →ᆺᇀ→
+
+113A ; 1109 1111 ;     ML      # ( ᄺ → ᄉᄑ ) HANGUL CHOSEONG SIOS-PHIEUPH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PHIEUPH     # 
+
+D7EE ; 1109 1140 ;     ML      # ( ퟮ → ᄉᅀ ) HANGUL JONGSEONG SIOS-PANSIOS → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PANSIOS    # →ᆺᇫ→
+
+3147 ; 110B ;  ML      # ( ㅇ → ᄋ ) HANGUL LETTER IEUNG → HANGUL CHOSEONG IEUNG # 
+11BC ; 110B ;  ML      # ( ᆼ → ᄋ ) HANGUL JONGSEONG IEUNG → HANGUL CHOSEONG IEUNG      # 
+
+1141 ; 110B 1100 ;     ML      # ( ᅁ → ᄋᄀ ) HANGUL CHOSEONG IEUNG-KIYEOK → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG KIYEOK     # 
+11EC ; 110B 1100 ;     ML      # ( ᇬ → ᄋᄀ ) HANGUL JONGSEONG IEUNG-KIYEOK → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG KIYEOK    # →ᅁ→
+
+11ED ; 110B 1100 1100 ;        ML      # ( ᇭ → ᄋᄀᄀ ) HANGUL JONGSEONG IEUNG-SSANGKIYEOK → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK    # →ᆼᆨᆨ→
+
+1142 ; 110B 1103 ;     ML      # ( ᅂ → ᄋᄃ ) HANGUL CHOSEONG IEUNG-TIKEUT → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG TIKEUT     # 
+
+A976 ; 110B 1105 ;     ML      # ( ꥶ → ᄋᄅ ) HANGUL CHOSEONG IEUNG-RIEUL → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG RIEUL       # 
+
+1143 ; 110B 1106 ;     ML      # ( ᅃ → ᄋᄆ ) HANGUL CHOSEONG IEUNG-MIEUM → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG MIEUM       # 
+
+1144 ; 110B 1107 ;     ML      # ( ᅄ → ᄋᄇ ) HANGUL CHOSEONG IEUNG-PIEUP → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG PIEUP       # 
+
+1145 ; 110B 1109 ;     ML      # ( ᅅ → ᄋᄉ ) HANGUL CHOSEONG IEUNG-SIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG SIOS # 
+11F1 ; 110B 1109 ;     ML      # ( ᇱ → ᄋᄉ ) HANGUL JONGSEONG YESIEUNG-SIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG SIOS     # →ᅅ→
+3182 ; 110B 1109 ;     ML      # ( ㆂ → ᄋᄉ ) HANGUL LETTER YESIEUNG-SIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG SIOS        # →ᇱ→→ᅅ→
+
+1147 ; 110B 110B ;     ML      # ( ᅇ → ᄋᄋ ) HANGUL CHOSEONG SSANGIEUNG → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG IEUNG        # 
+3180 ; 110B 110B ;     ML      # ( ㆀ → ᄋᄋ ) HANGUL LETTER SSANGIEUNG → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG IEUNG  # →ᅇ→
+11EE ; 110B 110B ;     ML      # ( ᇮ → ᄋᄋ ) HANGUL JONGSEONG SSANGIEUNG → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG IEUNG       # →ᅇ→
+
+1148 ; 110B 110C ;     ML      # ( ᅈ → ᄋᄌ ) HANGUL CHOSEONG IEUNG-CIEUC → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG CIEUC       # 
+
+1149 ; 110B 110E ;     ML      # ( ᅉ → ᄋᄎ ) HANGUL CHOSEONG IEUNG-CHIEUCH → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG CHIEUCH   # 
+
+11EF ; 110B 110F ;     ML      # ( ᇯ → ᄋᄏ ) HANGUL JONGSEONG IEUNG-KHIEUKH → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG KHIEUKH  # →ᆼᆿ→
+
+114A ; 110B 1110 ;     ML      # ( ᅊ → ᄋᄐ ) HANGUL CHOSEONG IEUNG-THIEUTH → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG THIEUTH   # 
+
+114B ; 110B 1111 ;     ML      # ( ᅋ → ᄋᄑ ) HANGUL CHOSEONG IEUNG-PHIEUPH → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG PHIEUPH   # 
+
+A977 ; 110B 1112 ;     ML      # ( ꥷ → ᄋᄒ ) HANGUL CHOSEONG IEUNG-HIEUH → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG HIEUH       # 
+
+1146 ; 110B 1140 ;     ML      # ( ᅆ → ᄋᅀ ) HANGUL CHOSEONG IEUNG-PANSIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG PANSIOS   # 
+11F2 ; 110B 1140 ;     ML      # ( ᇲ → ᄋᅀ ) HANGUL JONGSEONG YESIEUNG-PANSIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG PANSIOS       # →ᅆ→
+3183 ; 110B 1140 ;     ML      # ( ㆃ → ᄋᅀ ) HANGUL LETTER YESIEUNG-PANSIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG PANSIOS  # →ᇲ→→ᅆ→
+
+3148 ; 110C ;  ML      # ( ㅈ → ᄌ ) HANGUL LETTER CIEUC → HANGUL CHOSEONG CIEUC # 
+11BD ; 110C ;  ML      # ( ᆽ → ᄌ ) HANGUL JONGSEONG CIEUC → HANGUL CHOSEONG CIEUC      # 
+
+D7F7 ; 110C 1107 ;     ML      # ( ퟷ → ᄌᄇ ) HANGUL JONGSEONG CIEUC-PIEUP → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG PIEUP      # →ᆽᆸ→
+
+D7F8 ; 110C 1107 1107 ;        ML      # ( ퟸ → ᄌᄇᄇ ) HANGUL JONGSEONG CIEUC-SSANGPIEUP → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP       # →ᆽᆸᆸ→
+
+114D ; 110C 110B ;     ML      # ( ᅍ → ᄌᄋ ) HANGUL CHOSEONG CIEUC-IEUNG → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG IEUNG       # 
+
+110D ; 110C 110C ;     ML      # ( ᄍ → ᄌᄌ ) HANGUL CHOSEONG SSANGCIEUC → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG CIEUC        # 
+3149 ; 110C 110C ;     ML      # ( ㅉ → ᄌᄌ ) HANGUL LETTER SSANGCIEUC → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG CIEUC  # →ᄍ→
+D7F9 ; 110C 110C ;     ML      # ( ퟹ → ᄌᄌ ) HANGUL JONGSEONG SSANGCIEUC → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG CIEUC       # →ᆽᆽ→
+
+A978 ; 110C 110C 1112 ;        ML      # ( ꥸ → ᄌᄌᄒ ) HANGUL CHOSEONG SSANGCIEUC-HIEUH → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG HIEUH        # 
+
+314A ; 110E ;  ML      # ( ㅊ → ᄎ ) HANGUL LETTER CHIEUCH → HANGUL CHOSEONG CHIEUCH     # 
+11BE ; 110E ;  ML      # ( ᆾ → ᄎ ) HANGUL JONGSEONG CHIEUCH → HANGUL CHOSEONG CHIEUCH  # 
+
+1152 ; 110E 110F ;     ML      # ( ᅒ → ᄎᄏ ) HANGUL CHOSEONG CHIEUCH-KHIEUKH → HANGUL CHOSEONG CHIEUCH, HANGUL CHOSEONG KHIEUKH       # 
+
+1153 ; 110E 1112 ;     ML      # ( ᅓ → ᄎᄒ ) HANGUL CHOSEONG CHIEUCH-HIEUH → HANGUL CHOSEONG CHIEUCH, HANGUL CHOSEONG HIEUH   # 
+
+314B ; 110F ;  ML      # ( ㅋ → ᄏ ) HANGUL LETTER KHIEUKH → HANGUL CHOSEONG KHIEUKH     # 
+11BF ; 110F ;  ML      # ( ᆿ → ᄏ ) HANGUL JONGSEONG KHIEUKH → HANGUL CHOSEONG KHIEUKH  # 
+
+314C ; 1110 ;  ML      # ( ㅌ → ᄐ ) HANGUL LETTER THIEUTH → HANGUL CHOSEONG THIEUTH     # 
+11C0 ; 1110 ;  ML      # ( ᇀ → ᄐ ) HANGUL JONGSEONG THIEUTH → HANGUL CHOSEONG THIEUTH  # 
+
+A979 ; 1110 1110 ;     ML      # ( ꥹ → ᄐᄐ ) HANGUL CHOSEONG SSANGTHIEUTH → HANGUL CHOSEONG THIEUTH, HANGUL CHOSEONG THIEUTH  # 
+
+314D ; 1111 ;  ML      # ( ㅍ → ᄑ ) HANGUL LETTER PHIEUPH → HANGUL CHOSEONG PHIEUPH     # 
+11C1 ; 1111 ;  ML      # ( ᇁ → ᄑ ) HANGUL JONGSEONG PHIEUPH → HANGUL CHOSEONG PHIEUPH  # 
+
+1156 ; 1111 1107 ;     ML      # ( ᅖ → ᄑᄇ ) HANGUL CHOSEONG PHIEUPH-PIEUP → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG PIEUP   # 
+11F3 ; 1111 1107 ;     ML      # ( ᇳ → ᄑᄇ ) HANGUL JONGSEONG PHIEUPH-PIEUP → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG PIEUP  # →ᅖ→
+
+D7FA ; 1111 1109 ;     ML      # ( ퟺ → ᄑᄉ ) HANGUL JONGSEONG PHIEUPH-SIOS → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG SIOS    # →ᇁᆺ→
+
+1157 ; 1111 110B ;     ML      # ( ᅗ → ᄑᄋ ) HANGUL CHOSEONG KAPYEOUNPHIEUPH → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG IEUNG # 
+3184 ; 1111 110B ;     ML      # ( ㆄ → ᄑᄋ ) HANGUL LETTER KAPYEOUNPHIEUPH → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG IEUNG   # →ᅗ→
+11F4 ; 1111 110B ;     ML      # ( ᇴ → ᄑᄋ ) HANGUL JONGSEONG KAPYEOUNPHIEUPH → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG IEUNG        # →ᅗ→
+
+D7FB ; 1111 1110 ;     ML      # ( ퟻ → ᄑᄐ ) HANGUL JONGSEONG PHIEUPH-THIEUTH → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG THIEUTH      # →ᇁᇀ→
+
+A97A ; 1111 1112 ;     ML      # ( ꥺ → ᄑᄒ ) HANGUL CHOSEONG PHIEUPH-HIEUH → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG HIEUH   # 
+
+314E ; 1112 ;  ML      # ( ㅎ → ᄒ ) HANGUL LETTER HIEUH → HANGUL CHOSEONG HIEUH # 
+11C2 ; 1112 ;  ML      # ( ᇂ → ᄒ ) HANGUL JONGSEONG HIEUH → HANGUL CHOSEONG HIEUH      # 
+
+11F5 ; 1112 1102 ;     ML      # ( ᇵ → ᄒᄂ ) HANGUL JONGSEONG HIEUH-NIEUN → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG NIEUN      # →ᇂᆫ→
+
+11F6 ; 1112 1105 ;     ML      # ( ᇶ → ᄒᄅ ) HANGUL JONGSEONG HIEUH-RIEUL → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG RIEUL      # →ᇂᆯ→
+
+11F7 ; 1112 1106 ;     ML      # ( ᇷ → ᄒᄆ ) HANGUL JONGSEONG HIEUH-MIEUM → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG MIEUM      # →ᇂᆷ→
+
+11F8 ; 1112 1107 ;     ML      # ( ᇸ → ᄒᄇ ) HANGUL JONGSEONG HIEUH-PIEUP → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG PIEUP      # →ᇂᆸ→
+
+A97B ; 1112 1109 ;     ML      # ( ꥻ → ᄒᄉ ) HANGUL CHOSEONG HIEUH-SIOS → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG SIOS # 
+
+1158 ; 1112 1112 ;     ML      # ( ᅘ → ᄒᄒ ) HANGUL CHOSEONG SSANGHIEUH → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG HIEUH        # 
+3185 ; 1112 1112 ;     ML      # ( ㆅ → ᄒᄒ ) HANGUL LETTER SSANGHIEUH → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG HIEUH  # →ᅘ→
+
+113D ; 113C 113C ;     ML      # ( ᄽ → ᄼᄼ ) HANGUL CHOSEONG CHITUEUMSSANGSIOS → HANGUL CHOSEONG CHITUEUMSIOS, HANGUL CHOSEONG CHITUEUMSIOS   # 
+
+113F ; 113E 113E ;     ML      # ( ᄿ → ᄾᄾ ) HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS → HANGUL CHOSEONG CEONGCHIEUMSIOS, HANGUL CHOSEONG CEONGCHIEUMSIOS  # 
+
+317F ; 1140 ;  ML      # ( ㅿ → ᅀ ) HANGUL LETTER PANSIOS → HANGUL CHOSEONG PANSIOS     # 
+11EB ; 1140 ;  ML      # ( ᇫ → ᅀ ) HANGUL JONGSEONG PANSIOS → HANGUL CHOSEONG PANSIOS  # 
+
+D7F3 ; 1140 1107 ;     ML      # ( ퟳ → ᅀᄇ ) HANGUL JONGSEONG PANSIOS-PIEUP → HANGUL CHOSEONG PANSIOS, HANGUL CHOSEONG PIEUP  # →ᇫᆸ→
+
+D7F4 ; 1140 1107 110B ;        ML      # ( ퟴ → ᅀᄇᄋ ) HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP → HANGUL CHOSEONG PANSIOS, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG        # →ᇫᆸᆼ→
+
+3181 ; 114C ;  ML      # ( ㆁ → ᅌ ) HANGUL LETTER YESIEUNG → HANGUL CHOSEONG YESIEUNG   # 
+11F0 ; 114C ;  ML      # ( ᇰ → ᅌ ) HANGUL JONGSEONG YESIEUNG → HANGUL CHOSEONG YESIEUNG        # 
+
+D7F5 ; 114C 1106 ;     ML      # ( ퟵ → ᅌᄆ ) HANGUL JONGSEONG YESIEUNG-MIEUM → HANGUL CHOSEONG YESIEUNG, HANGUL CHOSEONG MIEUM        # →ᇰᆷ→
+
+D7F6 ; 114C 1112 ;     ML      # ( ퟶ → ᅌᄒ ) HANGUL JONGSEONG YESIEUNG-HIEUH → HANGUL CHOSEONG YESIEUNG, HANGUL CHOSEONG HIEUH        # →ᇰᇂ→
+
+114F ; 114E 114E ;     ML      # ( ᅏ → ᅎᅎ ) HANGUL CHOSEONG CHITUEUMSSANGCIEUC → HANGUL CHOSEONG CHITUEUMCIEUC, HANGUL CHOSEONG CHITUEUMCIEUC        # 
+
+1151 ; 1150 1150 ;     ML      # ( ᅑ → ᅐᅐ ) HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC → HANGUL CHOSEONG CEONGCHIEUMCIEUC, HANGUL CHOSEONG CEONGCHIEUMCIEUC       # 
+
+3186 ; 1159 ;  ML      # ( ㆆ → ᅙ ) HANGUL LETTER YEORINHIEUH → HANGUL CHOSEONG YEORINHIEUH     # 
+11F9 ; 1159 ;  ML      # ( ᇹ → ᅙ ) HANGUL JONGSEONG YEORINHIEUH → HANGUL CHOSEONG YEORINHIEUH  # 
+
+A97C ; 1159 1159 ;     ML      # ( ꥼ → ᅙᅙ ) HANGUL CHOSEONG SSANGYEORINHIEUH → HANGUL CHOSEONG YEORINHIEUH, HANGUL CHOSEONG YEORINHIEUH      # 
+
+3164 ; 1160 ;  ML      # (  →  ) HANGUL FILLER → HANGUL JUNGSEONG FILLER   # 
+
+314F ; 1161 ;  ML      # ( ㅏ → ᅡ ) HANGUL LETTER A → HANGUL JUNGSEONG A        # 
+
+1176 ; 1161 1169 ;     ML      # ( ᅶ → ᅡᅩ ) HANGUL JUNGSEONG A-O → HANGUL JUNGSEONG A, HANGUL JUNGSEONG O    # 
+
+1177 ; 1161 116E ;     ML      # ( ᅷ → ᅡᅮ ) HANGUL JUNGSEONG A-U → HANGUL JUNGSEONG A, HANGUL JUNGSEONG U    # 
+
+11A3 ; 1161 1173 ;     ML      # ( ᆣ → ᅡᅳ ) HANGUL JUNGSEONG A-EU → HANGUL JUNGSEONG A, HANGUL JUNGSEONG EU  # 
+
+1162 ; 1161 1175 ;     ML      # ( ᅢ → ᅡᅵ ) HANGUL JUNGSEONG AE → HANGUL JUNGSEONG A, HANGUL JUNGSEONG I     # 
+3150 ; 1161 1175 ;     ML      # ( ㅐ → ᅡᅵ ) HANGUL LETTER AE → HANGUL JUNGSEONG A, HANGUL JUNGSEONG I        # →ᅢ→
+
+3151 ; 1163 ;  ML      # ( ㅑ → ᅣ ) HANGUL LETTER YA → HANGUL JUNGSEONG YA      # 
+
+1178 ; 1163 1169 ;     ML      # ( ᅸ → ᅣᅩ ) HANGUL JUNGSEONG YA-O → HANGUL JUNGSEONG YA, HANGUL JUNGSEONG O  # 
+
+1179 ; 1163 116D ;     ML      # ( ᅹ → ᅣᅭ ) HANGUL JUNGSEONG YA-YO → HANGUL JUNGSEONG YA, HANGUL JUNGSEONG YO        # 
+
+11A4 ; 1163 116E ;     ML      # ( ᆤ → ᅣᅮ ) HANGUL JUNGSEONG YA-U → HANGUL JUNGSEONG YA, HANGUL JUNGSEONG U  # 
+
+1164 ; 1163 1175 ;     ML      # ( ᅤ → ᅣᅵ ) HANGUL JUNGSEONG YAE → HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I   # 
+3152 ; 1163 1175 ;     ML      # ( ㅒ → ᅣᅵ ) HANGUL LETTER YAE → HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I      # →ᅤ→
+
+3153 ; 1165 ;  ML      # ( ㅓ → ᅥ ) HANGUL LETTER EO → HANGUL JUNGSEONG EO      # 
+
+117A ; 1165 1169 ;     ML      # ( ᅺ → ᅥᅩ ) HANGUL JUNGSEONG EO-O → HANGUL JUNGSEONG EO, HANGUL JUNGSEONG O  # 
+
+117B ; 1165 116E ;     ML      # ( ᅻ → ᅥᅮ ) HANGUL JUNGSEONG EO-U → HANGUL JUNGSEONG EO, HANGUL JUNGSEONG U  # 
+
+117C ; 1165 1173 ;     ML      # ( ᅼ → ᅥᅳ ) HANGUL JUNGSEONG EO-EU → HANGUL JUNGSEONG EO, HANGUL JUNGSEONG EU        # 
+
+1166 ; 1165 1175 ;     ML      # ( ᅦ → ᅥᅵ ) HANGUL JUNGSEONG E → HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I     # 
+3154 ; 1165 1175 ;     ML      # ( ㅔ → ᅥᅵ ) HANGUL LETTER E → HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I        # →ᅦ→
+
+3155 ; 1167 ;  ML      # ( ㅕ → ᅧ ) HANGUL LETTER YEO → HANGUL JUNGSEONG YEO    # 
+
+11A5 ; 1167 1163 ;     ML      # ( ᆥ → ᅧᅣ ) HANGUL JUNGSEONG YEO-YA → HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG YA      # 
+
+117D ; 1167 1169 ;     ML      # ( ᅽ → ᅧᅩ ) HANGUL JUNGSEONG YEO-O → HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG O        # 
+
+117E ; 1167 116E ;     ML      # ( ᅾ → ᅧᅮ ) HANGUL JUNGSEONG YEO-U → HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG U        # 
+
+1168 ; 1167 1175 ;     ML      # ( ᅨ → ᅧᅵ ) HANGUL JUNGSEONG YE → HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I   # 
+3156 ; 1167 1175 ;     ML      # ( ㅖ → ᅧᅵ ) HANGUL LETTER YE → HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I      # →ᅨ→
+
+3157 ; 1169 ;  ML      # ( ㅗ → ᅩ ) HANGUL LETTER O → HANGUL JUNGSEONG O        # 
+
+116A ; 1169 1161 ;     ML      # ( ᅪ → ᅩᅡ ) HANGUL JUNGSEONG WA → HANGUL JUNGSEONG O, HANGUL JUNGSEONG A     # 
+3158 ; 1169 1161 ;     ML      # ( ㅘ → ᅩᅡ ) HANGUL LETTER WA → HANGUL JUNGSEONG O, HANGUL JUNGSEONG A        # →ᅪ→
+
+116B ; 1169 1161 1175 ;        ML      # ( ᅫ → ᅩᅡᅵ ) HANGUL JUNGSEONG WAE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG A, HANGUL JUNGSEONG I     # 
+3159 ; 1169 1161 1175 ;        ML      # ( ㅙ → ᅩᅡᅵ ) HANGUL LETTER WAE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG A, HANGUL JUNGSEONG I        # →ᅫ→
+
+11A6 ; 1169 1163 ;     ML      # ( ᆦ → ᅩᅣ ) HANGUL JUNGSEONG O-YA → HANGUL JUNGSEONG O, HANGUL JUNGSEONG YA  # 
+
+11A7 ; 1169 1163 1175 ;        ML      # ( ᆧ → ᅩᅣᅵ ) HANGUL JUNGSEONG O-YAE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I  # 
+
+117F ; 1169 1165 ;     ML      # ( ᅿ → ᅩᅥ ) HANGUL JUNGSEONG O-EO → HANGUL JUNGSEONG O, HANGUL JUNGSEONG EO  # 
+
+1180 ; 1169 1165 1175 ;        ML      # ( ᆀ → ᅩᅥᅵ ) HANGUL JUNGSEONG O-E → HANGUL JUNGSEONG O, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I    # 
+
+D7B0 ; 1169 1167 ;     ML      # ( ힰ → ᅩᅧ ) HANGUL JUNGSEONG O-YEO → HANGUL JUNGSEONG O, HANGUL JUNGSEONG YEO        # 
+
+1181 ; 1169 1167 1175 ;        ML      # ( ᆁ → ᅩᅧᅵ ) HANGUL JUNGSEONG O-YE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I  # 
+
+1182 ; 1169 1169 ;     ML      # ( ᆂ → ᅩᅩ ) HANGUL JUNGSEONG O-O → HANGUL JUNGSEONG O, HANGUL JUNGSEONG O    # 
+
+D7B1 ; 1169 1169 1175 ;        ML      # ( ힱ → ᅩᅩᅵ ) HANGUL JUNGSEONG O-O-I → HANGUL JUNGSEONG O, HANGUL JUNGSEONG O, HANGUL JUNGSEONG I   # 
+
+1183 ; 1169 116E ;     ML      # ( ᆃ → ᅩᅮ ) HANGUL JUNGSEONG O-U → HANGUL JUNGSEONG O, HANGUL JUNGSEONG U    # 
+
+116C ; 1169 1175 ;     ML      # ( ᅬ → ᅩᅵ ) HANGUL JUNGSEONG OE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG I     # 
+315A ; 1169 1175 ;     ML      # ( ㅚ → ᅩᅵ ) HANGUL LETTER OE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG I        # →ᅬ→
+
+315B ; 116D ;  ML      # ( ㅛ → ᅭ ) HANGUL LETTER YO → HANGUL JUNGSEONG YO      # 
+
+D7B2 ; 116D 1161 ;     ML      # ( ힲ → ᅭᅡ ) HANGUL JUNGSEONG YO-A → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG A  # 
+
+D7B3 ; 116D 1161 1175 ;        ML      # ( ힳ → ᅭᅡᅵ ) HANGUL JUNGSEONG YO-AE → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG A, HANGUL JUNGSEONG I  # 
+
+1184 ; 116D 1163 ;     ML      # ( ᆄ → ᅭᅣ ) HANGUL JUNGSEONG YO-YA → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG YA        # 
+3187 ; 116D 1163 ;     ML      # ( ㆇ → ᅭᅣ ) HANGUL LETTER YO-YA → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG YA   # →ᆄ→
+1186 ; 116D 1163 ;     ML      # ( ᆆ → ᅭᅣ ) HANGUL JUNGSEONG YO-YEO → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG YA       # →ᆄ→
+
+1185 ; 116D 1163 1175 ;        ML      # ( ᆅ → ᅭᅣᅵ ) HANGUL JUNGSEONG YO-YAE → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I        # 
+3188 ; 116D 1163 1175 ;        ML      # ( ㆈ → ᅭᅣᅵ ) HANGUL LETTER YO-YAE → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I   # →ᆅ→
+
+D7B4 ; 116D 1165 ;     ML      # ( ힴ → ᅭᅥ ) HANGUL JUNGSEONG YO-EO → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG EO        # 
+
+1187 ; 116D 1169 ;     ML      # ( ᆇ → ᅭᅩ ) HANGUL JUNGSEONG YO-O → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG O  # 
+
+1188 ; 116D 1175 ;     ML      # ( ᆈ → ᅭᅵ ) HANGUL JUNGSEONG YO-I → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG I  # 
+3189 ; 116D 1175 ;     ML      # ( ㆉ → ᅭᅵ ) HANGUL LETTER YO-I → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG I     # →ᆈ→
+
+315C ; 116E ;  ML      # ( ㅜ → ᅮ ) HANGUL LETTER U → HANGUL JUNGSEONG U        # 
+
+1189 ; 116E 1161 ;     ML      # ( ᆉ → ᅮᅡ ) HANGUL JUNGSEONG U-A → HANGUL JUNGSEONG U, HANGUL JUNGSEONG A    # 
+
+118A ; 116E 1161 1175 ;        ML      # ( ᆊ → ᅮᅡᅵ ) HANGUL JUNGSEONG U-AE → HANGUL JUNGSEONG U, HANGUL JUNGSEONG A, HANGUL JUNGSEONG I    # 
+
+116F ; 116E 1165 ;     ML      # ( ᅯ → ᅮᅥ ) HANGUL JUNGSEONG WEO → HANGUL JUNGSEONG U, HANGUL JUNGSEONG EO   # 
+315D ; 116E 1165 ;     ML      # ( ㅝ → ᅮᅥ ) HANGUL LETTER WEO → HANGUL JUNGSEONG U, HANGUL JUNGSEONG EO      # →ᅯ→
+
+118B ; 116E 1165 1173 ;        ML      # ( ᆋ → ᅮᅥᅳ ) HANGUL JUNGSEONG U-EO-EU → HANGUL JUNGSEONG U, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG EU       # 
+
+1170 ; 116E 1165 1175 ;        ML      # ( ᅰ → ᅮᅥᅵ ) HANGUL JUNGSEONG WE → HANGUL JUNGSEONG U, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I     # 
+315E ; 116E 1165 1175 ;        ML      # ( ㅞ → ᅮᅥᅵ ) HANGUL LETTER WE → HANGUL JUNGSEONG U, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I        # →ᅰ→
+
+D7B5 ; 116E 1167 ;     ML      # ( ힵ → ᅮᅧ ) HANGUL JUNGSEONG U-YEO → HANGUL JUNGSEONG U, HANGUL JUNGSEONG YEO        # 
+
+118C ; 116E 1167 1175 ;        ML      # ( ᆌ → ᅮᅧᅵ ) HANGUL JUNGSEONG U-YE → HANGUL JUNGSEONG U, HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I  # 
+
+118D ; 116E 116E ;     ML      # ( ᆍ → ᅮᅮ ) HANGUL JUNGSEONG U-U → HANGUL JUNGSEONG U, HANGUL JUNGSEONG U    # 
+
+1171 ; 116E 1175 ;     ML      # ( ᅱ → ᅮᅵ ) HANGUL JUNGSEONG WI → HANGUL JUNGSEONG U, HANGUL JUNGSEONG I     # 
+315F ; 116E 1175 ;     ML      # ( ㅟ → ᅮᅵ ) HANGUL LETTER WI → HANGUL JUNGSEONG U, HANGUL JUNGSEONG I        # →ᅱ→
+
+D7B6 ; 116E 1175 1175 ;        ML      # ( ힶ → ᅮᅵᅵ ) HANGUL JUNGSEONG U-I-I → HANGUL JUNGSEONG U, HANGUL JUNGSEONG I, HANGUL JUNGSEONG I   # 
+
+3160 ; 1172 ;  ML      # ( ㅠ → ᅲ ) HANGUL LETTER YU → HANGUL JUNGSEONG YU      # 
+
+118E ; 1172 1161 ;     ML      # ( ᆎ → ᅲᅡ ) HANGUL JUNGSEONG YU-A → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG A  # 
+
+D7B7 ; 1172 1161 1175 ;        ML      # ( ힷ → ᅲᅡᅵ ) HANGUL JUNGSEONG YU-AE → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG A, HANGUL JUNGSEONG I  # 
+
+118F ; 1172 1165 ;     ML      # ( ᆏ → ᅲᅥ ) HANGUL JUNGSEONG YU-EO → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG EO        # 
+
+1190 ; 1172 1165 1175 ;        ML      # ( ᆐ → ᅲᅥᅵ ) HANGUL JUNGSEONG YU-E → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I  # 
+
+1191 ; 1172 1167 ;     ML      # ( ᆑ → ᅲᅧ ) HANGUL JUNGSEONG YU-YEO → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG YEO      # 
+318A ; 1172 1167 ;     ML      # ( ㆊ → ᅲᅧ ) HANGUL LETTER YU-YEO → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG YEO # →ᆑ→
+
+1192 ; 1172 1167 1175 ;        ML      # ( ᆒ → ᅲᅧᅵ ) HANGUL JUNGSEONG YU-YE → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I        # 
+318B ; 1172 1167 1175 ;        ML      # ( ㆋ → ᅲᅧᅵ ) HANGUL LETTER YU-YE → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I   # →ᆒ→
+
+D7B8 ; 1172 1169 ;     ML      # ( ힸ → ᅲᅩ ) HANGUL JUNGSEONG YU-O → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG O  # 
+
+1193 ; 1172 116E ;     ML      # ( ᆓ → ᅲᅮ ) HANGUL JUNGSEONG YU-U → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG U  # 
+
+1194 ; 1172 1175 ;     ML      # ( ᆔ → ᅲᅵ ) HANGUL JUNGSEONG YU-I → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG I  # 
+318C ; 1172 1175 ;     ML      # ( ㆌ → ᅲᅵ ) HANGUL LETTER YU-I → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG I     # →ᆔ→
+
+D7B9 ; 1173 1161 ;     ML      # ( ힹ → ᅳᅡ ) HANGUL JUNGSEONG EU-A → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG A  # 
+
+D7BA ; 1173 1165 ;     ML      # ( ힺ → ᅳᅥ ) HANGUL JUNGSEONG EU-EO → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG EO        # 
+
+D7BB ; 1173 1165 1175 ;        ML      # ( ힻ → ᅳᅥᅵ ) HANGUL JUNGSEONG EU-E → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I  # 
+
+D7BC ; 1173 1169 ;     ML      # ( ힼ → ᅳᅩ ) HANGUL JUNGSEONG EU-O → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG O  # 
+
+1195 ; 1173 116E ;     ML      # ( ᆕ → ᅳᅮ ) HANGUL JUNGSEONG EU-U → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG U  # 
+
+1197 ; 1173 1175 116E ;        ML      # ( ᆗ → ᅳᅵᅮ ) HANGUL JUNGSEONG YI-U → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG I, HANGUL JUNGSEONG U   # 
+
+1198 ; 1175 1161 ;     ML      # ( ᆘ → ᅵᅡ ) HANGUL JUNGSEONG I-A → HANGUL JUNGSEONG I, HANGUL JUNGSEONG A    # 
+
+1199 ; 1175 1163 ;     ML      # ( ᆙ → ᅵᅣ ) HANGUL JUNGSEONG I-YA → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YA  # 
+
+D7BD ; 1175 1163 1169 ;        ML      # ( ힽ → ᅵᅣᅩ ) HANGUL JUNGSEONG I-YA-O → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YA, HANGUL JUNGSEONG O # 
+
+D7BE ; 1175 1163 1175 ;        ML      # ( ힾ → ᅵᅣᅵ ) HANGUL JUNGSEONG I-YAE → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I  # 
+
+D7BF ; 1175 1167 ;     ML      # ( ힿ → ᅵᅧ ) HANGUL JUNGSEONG I-YEO → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YEO        # 
+
+D7C0 ; 1175 1167 1175 ;        ML      # ( ퟀ → ᅵᅧᅵ ) HANGUL JUNGSEONG I-YE → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I  # 
+
+119A ; 1175 1169 ;     ML      # ( ᆚ → ᅵᅩ ) HANGUL JUNGSEONG I-O → HANGUL JUNGSEONG I, HANGUL JUNGSEONG O    # 
+
+D7C1 ; 1175 1169 1175 ;        ML      # ( ퟁ → ᅵᅩᅵ ) HANGUL JUNGSEONG I-O-I → HANGUL JUNGSEONG I, HANGUL JUNGSEONG O, HANGUL JUNGSEONG I   # 
+
+D7C2 ; 1175 116D ;     ML      # ( ퟂ → ᅵᅭ ) HANGUL JUNGSEONG I-YO → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YO  # 
+
+119B ; 1175 116E ;     ML      # ( ᆛ → ᅵᅮ ) HANGUL JUNGSEONG I-U → HANGUL JUNGSEONG I, HANGUL JUNGSEONG U    # 
+
+D7C3 ; 1175 1172 ;     ML      # ( ퟃ → ᅵᅲ ) HANGUL JUNGSEONG I-YU → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YU  # 
+
+119D ; 1175 119E ;     ML      # ( ᆝ → ᅵᆞ ) HANGUL JUNGSEONG I-ARAEA → HANGUL JUNGSEONG I, HANGUL JUNGSEONG ARAEA    # 
+
+318D ; 119E ;  ML      # ( ㆍ → ᆞ ) HANGUL LETTER ARAEA → HANGUL JUNGSEONG ARAEA        # 
+
+D7C5 ; 119E 1161 ;     ML      # ( ퟅ → ᆞᅡ ) HANGUL JUNGSEONG ARAEA-A → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG A    # 
+
+119F ; 119E 1165 ;     ML      # ( ᆟ → ᆞᅥ ) HANGUL JUNGSEONG ARAEA-EO → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG EO  # 
+
+D7C6 ; 119E 1165 1175 ;        ML      # ( ퟆ → ᆞᅥᅵ ) HANGUL JUNGSEONG ARAEA-E → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I    # 
+
+11A0 ; 119E 116E ;     ML      # ( ᆠ → ᆞᅮ ) HANGUL JUNGSEONG ARAEA-U → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG U    # 
+
+11A1 ; 119E 1175 ;     ML      # ( ᆡ → ᆞᅵ ) HANGUL JUNGSEONG ARAEA-I → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG I    # 
+318E ; 119E 1175 ;     ML      # ( ㆎ → ᆞᅵ ) HANGUL LETTER ARAEAE → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG I        # →ᆡ→
+
+11A2 ; 119E 119E ;     ML      # ( ᆢ → ᆞᆞ ) HANGUL JUNGSEONG SSANGARAEA → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG ARAEA     # 
+
+30D8 ; 3078 ;  ML      # ( ヘ → へ ) KATAKANA LETTER HE → HIRAGANA LETTER HE     # 
+
+29C4 ; 303C ;  ML      #* ( ⧄ → 〼 ) SQUARED RISING DIAGONAL SLASH → MASU MARK  # 
+
+A49E ; A04A ;  ML      #* ( ꒞ → ꁊ ) YI RADICAL PUT → YI SYLLABLE PUT   # 
+
+A4AC ; A050 ;  ML      #* ( ꒬ → ꁐ ) YI RADICAL PYT → YI SYLLABLE PYT   # 
+
+A49C ; A0C0 ;  ML      #* ( ꒜ → ꃀ ) YI RADICAL MOP → YI SYLLABLE MOP   # 
+
+A4A8 ; A132 ;  ML      #* ( ꒨ → ꄲ ) YI RADICAL TU → YI SYLLABLE TU     # 
+
+A4BF ; A259 ;  ML      #* ( ꒿ → ꉙ ) YI RADICAL HXOP → YI SYLLABLE HXOP # 
+
+A4BE ; A2B1 ;  ML      #* ( ꒾ → ꊱ ) YI RADICAL CIP → YI SYLLABLE CIP   # 
+
+A494 ; A2CD ;  ML      #* ( ꒔ → ꋍ ) YI RADICAL CYP → YI SYLLABLE CYP   # 
+
+A4C0 ; A3AB ;  ML      #* ( ꓀ → ꎫ ) YI RADICAL SHAT → YI SYLLABLE SHAT # 
+
+A4C2 ; A3B5 ;  ML      #* ( ꓂ → ꎵ ) YI RADICAL SHOP → YI SYLLABLE SHOP # 
+
+A4BA ; A3BF ;  ML      #* ( ꒺ → ꎿ ) YI RADICAL SHUR → YI SYLLABLE SHUR # 
+
+A4B0 ; A3C2 ;  ML      #* ( ꒰ → ꏂ ) YI RADICAL SHY → YI SYLLABLE SHY   # 
+
+A4A7 ; A458 ;  ML      #* ( ꒧ → ꑘ ) YI RADICAL NYOP → YI SYLLABLE NYOP # 
+
+22A5 ; A4D5 ;  ML      #* ( ⊥ → ꓕ ) UP TACK → LISU LETTER THA  # 
+27C2 ; A4D5 ;  ML      #* ( ⟂ → ꓕ ) PERPENDICULAR → LISU LETTER THA    # →⊥→
+
+2115 ; A4E0 ;  ML      # ( ℕ → ꓠ ) DOUBLE-STRUCK CAPITAL N → LISU LETTER NA    # →N→
+1D40D ;        A4E0 ;  ML      # ( 𝐍 → ꓠ ) MATHEMATICAL BOLD CAPITAL N → LISU LETTER NA       # →N→
+1D441 ;        A4E0 ;  ML      # ( 𝑁 → ꓠ ) MATHEMATICAL ITALIC CAPITAL N → LISU LETTER NA     # →N→
+1D475 ;        A4E0 ;  ML      # ( 𝑵 → ꓠ ) MATHEMATICAL BOLD ITALIC CAPITAL N → LISU LETTER NA        # →N→
+1D4A9 ;        A4E0 ;  ML      # ( 𝒩 → ꓠ ) MATHEMATICAL SCRIPT CAPITAL N → LISU LETTER NA     # →N→
+1D4DD ;        A4E0 ;  ML      # ( 𝓝 → ꓠ ) MATHEMATICAL BOLD SCRIPT CAPITAL N → LISU LETTER NA        # →N→
+1D511 ;        A4E0 ;  ML      # ( 𝔑 → ꓠ ) MATHEMATICAL FRAKTUR CAPITAL N → LISU LETTER NA    # →N→
+1D579 ;        A4E0 ;  ML      # ( 𝕹 → ꓠ ) MATHEMATICAL BOLD FRAKTUR CAPITAL N → LISU LETTER NA       # →N→
+1D5AD ;        A4E0 ;  ML      # ( 𝖭 → ꓠ ) MATHEMATICAL SANS-SERIF CAPITAL N → LISU LETTER NA # →N→
+1D5E1 ;        A4E0 ;  ML      # ( 𝗡 → ꓠ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL N → LISU LETTER NA    # →N→
+1D615 ;        A4E0 ;  ML      # ( 𝘕 → ꓠ ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL N → LISU LETTER NA  # →N→
+1D649 ;        A4E0 ;  ML      # ( 𝙉 → ꓠ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N → LISU LETTER NA     # →N→
+1D67D ;        A4E0 ;  ML      # ( 𝙽 → ꓠ ) MATHEMATICAL MONOSPACE CAPITAL N → LISU LETTER NA  # →N→
+1D6B4 ;        A4E0 ;  ML      # ( 𝚴 → ꓠ ) MATHEMATICAL BOLD CAPITAL NU → LISU LETTER NA      # →𝐍→→N→
+1D6EE ;        A4E0 ;  ML      # ( 𝛮 → ꓠ ) MATHEMATICAL ITALIC CAPITAL NU → LISU LETTER NA    # →Ν→→N→
+1D728 ;        A4E0 ;  ML      # ( 𝜨 → ꓠ ) MATHEMATICAL BOLD ITALIC CAPITAL NU → LISU LETTER NA       # →𝑵→→N→
+1D762 ;        A4E0 ;  ML      # ( 𝝢 → ꓠ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL NU → LISU LETTER NA   # →Ν→→N→
+1D79C ;        A4E0 ;  ML      # ( 𝞜 → ꓠ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU → LISU LETTER NA    # →Ν→→N→
+
+2141 ; A4E8 ;  ML      #* ( ⅁ → ꓨ ) TURNED SANS-SERIF CAPITAL G → LISU LETTER HHA      # 
+
+2200 ; A4EF ;  ML      #* ( ∀ → ꓯ ) FOR ALL → LISU LETTER AE   # 
+
+2229 ; A4F5 ;  ML      #* ( ∩ → ꓵ ) INTERSECTION → LISU LETTER UE      # 
+22C2 ; A4F5 ;  ML      #* ( ⋂ → ꓵ ) N-ARY INTERSECTION → LISU LETTER UE        # →∩→
+
+2142 ; A4F6 ;  ML      #* ( ⅂ → ꓶ ) TURNED SANS-SERIF CAPITAL L → LISU LETTER UH       # 
+
+104A0 ;        10486 ; ML      # ( 𐒠 → 𐒆 ) OSMANYA DIGIT ZERO → OSMANYA LETTER DEEL  # 
+
+103D1 ;        10382 ; ML      # ( 𐏑 → 𐎂 ) OLD PERSIAN NUMBER ONE → UGARITIC LETTER GAMLA    # 
+
+103D3 ;        10393 ; ML      # ( 𐏓 → 𐎓 ) OLD PERSIAN NUMBER TEN → UGARITIC LETTER AIN      # 
+
+12038 ;        1039A ; ML      # ( 𒀸 → 𐎚 ) CUNEIFORM SIGN ASH → UGARITIC LETTER TO   # 
+
+F967 ; 4E0D ;  ML      # ( 不 → 不 ) CJK COMPATIBILITY IDEOGRAPH-F967 → CJK UNIFIED IDEOGRAPH-4E0D       # 
+
+FA70 ; 4E26 ;  ML      # ( 並 → 並 ) CJK COMPATIBILITY IDEOGRAPH-FA70 → CJK UNIFIED IDEOGRAPH-4E26       # 
+
+239C ; 4E28 ;  ML      #* ( ⎜ → 丨 ) LEFT PARENTHESIS EXTENSION → CJK UNIFIED IDEOGRAPH-4E28    # →⎥→→⎮→
+239F ; 4E28 ;  ML      #* ( ⎟ → 丨 ) RIGHT PARENTHESIS EXTENSION → CJK UNIFIED IDEOGRAPH-4E28   # →⎥→→⎮→
+23A2 ; 4E28 ;  ML      #* ( ⎢ → 丨 ) LEFT SQUARE BRACKET EXTENSION → CJK UNIFIED IDEOGRAPH-4E28 # →⎥→→⎮→
+23A5 ; 4E28 ;  ML      #* ( ⎥ → 丨 ) RIGHT SQUARE BRACKET EXTENSION → CJK UNIFIED IDEOGRAPH-4E28        # →⎮→
+23AA ; 4E28 ;  ML      #* ( ⎪ → 丨 ) CURLY BRACKET EXTENSION → CJK UNIFIED IDEOGRAPH-4E28       # →⎥→→⎮→
+23AE ; 4E28 ;  ML      #* ( ⎮ → 丨 ) INTEGRAL EXTENSION → CJK UNIFIED IDEOGRAPH-4E28    # 
+31D1 ; 4E28 ;  ML      #* ( ㇑ → 丨 ) CJK STROKE S → CJK UNIFIED IDEOGRAPH-4E28  # 
+1175 ; 4E28 ;  ML      # ( ᅵ → 丨 ) HANGUL JUNGSEONG I → CJK UNIFIED IDEOGRAPH-4E28     # →ㅣ→
+3163 ; 4E28 ;  ML      # ( ㅣ → 丨 ) HANGUL LETTER I → CJK UNIFIED IDEOGRAPH-4E28        # 
+2F01 ; 4E28 ;  ML      #* ( ⼁ → 丨 ) KANGXI RADICAL LINE → CJK UNIFIED IDEOGRAPH-4E28   # 
+
+119C ; 4E28 30FC ;     ML      # ( ᆜ → 丨ー ) HANGUL JUNGSEONG I-EU → CJK UNIFIED IDEOGRAPH-4E28, KATAKANA-HIRAGANA PROLONGED SOUND MARK       # →ᅵᅳ→
+
+D7C4 ; 4E28 4E28 ;     ML      # ( ퟄ → 丨丨 ) HANGUL JUNGSEONG I-I → CJK UNIFIED IDEOGRAPH-4E28, CJK UNIFIED IDEOGRAPH-4E28    # →ᅵᅵ→
+
+2EA6 ; 4E2C ;  ML      #* ( ⺦ → 丬 ) CJK RADICAL SIMPLIFIED HALF TREE TRUNK → CJK UNIFIED IDEOGRAPH-4E2C        # 
+
+F905 ; 4E32 ;  ML      # ( 串 → 串 ) CJK COMPATIBILITY IDEOGRAPH-F905 → CJK UNIFIED IDEOGRAPH-4E32       # 
+
+2F801 ;        4E38 ;  ML      # ( 丸 → 丸 ) CJK COMPATIBILITY IDEOGRAPH-2F801 → CJK UNIFIED IDEOGRAPH-4E38     # 
+
+F95E ; 4E39 ;  ML      # ( 丹 → 丹 ) CJK COMPATIBILITY IDEOGRAPH-F95E → CJK UNIFIED IDEOGRAPH-4E39       # 
+
+2F800 ;        4E3D ;  ML      # ( 丽 → 丽 ) CJK COMPATIBILITY IDEOGRAPH-2F800 → CJK UNIFIED IDEOGRAPH-4E3D     # 
+
+2F802 ;        4E41 ;  ML      # ( 乁 → 乁 ) CJK COMPATIBILITY IDEOGRAPH-2F802 → CJK UNIFIED IDEOGRAPH-4E41     # 
+
+31E0 ; 4E59 ;  ML      #* ( ㇠ → 乙 ) CJK STROKE HXWG → CJK UNIFIED IDEOGRAPH-4E59       # 
+2F04 ; 4E59 ;  ML      #* ( ⼄ → 乙 ) KANGXI RADICAL SECOND → CJK UNIFIED IDEOGRAPH-4E59 # 
+
+31DF ; 4E5A ;  ML      #* ( ㇟ → 乚 ) CJK STROKE SWG → CJK UNIFIED IDEOGRAPH-4E5A        # 
+2E83 ; 4E5A ;  ML      #* ( ⺃ → 乚 ) CJK RADICAL SECOND TWO → CJK UNIFIED IDEOGRAPH-4E5A        # 
+
+31D6 ; 4E5B ;  ML      #* ( ㇖ → 乛 ) CJK STROKE HG → CJK UNIFIED IDEOGRAPH-4E5B # 
+
+2EF2 ; 4E80 ;  ML      #* ( ⻲ → 亀 ) CJK RADICAL J-SIMPLIFIED TURTLE → CJK UNIFIED IDEOGRAPH-4E80       # 
+
+F91B ; 4E82 ;  ML      # ( 亂 → 亂 ) CJK COMPATIBILITY IDEOGRAPH-F91B → CJK UNIFIED IDEOGRAPH-4E82       # 
+
+31DA ; 4E85 ;  ML      #* ( ㇚ → 亅 ) CJK STROKE SG → CJK UNIFIED IDEOGRAPH-4E85 # 
+2F05 ; 4E85 ;  ML      #* ( ⼅ → 亅 ) KANGXI RADICAL HOOK → CJK UNIFIED IDEOGRAPH-4E85   # 
+
+F9BA ; 4E86 ;  ML      # ( 了 → 了 ) CJK COMPATIBILITY IDEOGRAPH-F9BA → CJK UNIFIED IDEOGRAPH-4E86       # 
+
+2F06 ; 4E8C ;  ML      #* ( ⼆ → 二 ) KANGXI RADICAL TWO → CJK UNIFIED IDEOGRAPH-4E8C    # 
+
+2F07 ; 4EA0 ;  ML      #* ( ⼇ → 亠 ) KANGXI RADICAL LID → CJK UNIFIED IDEOGRAPH-4EA0    # 
+
+F977 ; 4EAE ;  ML      # ( 亮 → 亮 ) CJK COMPATIBILITY IDEOGRAPH-F977 → CJK UNIFIED IDEOGRAPH-4EAE       # 
+
+2F08 ; 4EBA ;  ML      #* ( ⼈ → 人 ) KANGXI RADICAL MAN → CJK UNIFIED IDEOGRAPH-4EBA    # 
+
+2E85 ; 4EBB ;  ML      #* ( ⺅ → 亻 ) CJK RADICAL PERSON → CJK UNIFIED IDEOGRAPH-4EBB    # 
+
+F9FD ; 4EC0 ;  ML      # ( 什 → 什 ) CJK COMPATIBILITY IDEOGRAPH-F9FD → CJK UNIFIED IDEOGRAPH-4EC0       # 
+
+2F819 ;        4ECC ;  ML      # ( 仌 → 仌 ) CJK COMPATIBILITY IDEOGRAPH-2F819 → CJK UNIFIED IDEOGRAPH-4ECC     # 
+
+F9A8 ; 4EE4 ;  ML      # ( 令 → 令 ) CJK COMPATIBILITY IDEOGRAPH-F9A8 → CJK UNIFIED IDEOGRAPH-4EE4       # 
+
+2F804 ;        4F60 ;  ML      # ( 你 → 你 ) CJK COMPATIBILITY IDEOGRAPH-2F804 → CJK UNIFIED IDEOGRAPH-4F60     # 
+
+5002 ; 4F75 ;  ML      # ( 倂 → 併 ) CJK UNIFIED IDEOGRAPH-5002 → CJK UNIFIED IDEOGRAPH-4F75     # 
+2F807 ;        4F75 ;  ML      # ( 倂 → 併 ) CJK COMPATIBILITY IDEOGRAPH-2F807 → CJK UNIFIED IDEOGRAPH-4F75     # →倂→
+
+FA73 ; 4F80 ;  ML      # ( 侀 → 侀 ) CJK COMPATIBILITY IDEOGRAPH-FA73 → CJK UNIFIED IDEOGRAPH-4F80       # 
+
+F92D ; 4F86 ;  ML      # ( 來 → 來 ) CJK COMPATIBILITY IDEOGRAPH-F92D → CJK UNIFIED IDEOGRAPH-4F86       # 
+
+F9B5 ; 4F8B ;  ML      # ( 例 → 例 ) CJK COMPATIBILITY IDEOGRAPH-F9B5 → CJK UNIFIED IDEOGRAPH-4F8B       # 
+
+FA30 ; 4FAE ;  ML      # ( 侮 → 侮 ) CJK COMPATIBILITY IDEOGRAPH-FA30 → CJK UNIFIED IDEOGRAPH-4FAE       # 
+2F805 ;        4FAE ;  ML      # ( 侮 → 侮 ) CJK COMPATIBILITY IDEOGRAPH-2F805 → CJK UNIFIED IDEOGRAPH-4FAE     # 
+
+2F806 ;        4FBB ;  ML      # ( 侻 → 侻 ) CJK COMPATIBILITY IDEOGRAPH-2F806 → CJK UNIFIED IDEOGRAPH-4FBB     # 
+
+F965 ; 4FBF ;  ML      # ( 便 → 便 ) CJK COMPATIBILITY IDEOGRAPH-F965 → CJK UNIFIED IDEOGRAPH-4FBF       # 
+
+503C ; 5024 ;  ML      # ( 值 → 値 ) CJK UNIFIED IDEOGRAPH-503C → CJK UNIFIED IDEOGRAPH-5024     # 
+
+F9D4 ; 502B ;  ML      # ( 倫 → 倫 ) CJK COMPATIBILITY IDEOGRAPH-F9D4 → CJK UNIFIED IDEOGRAPH-502B       # 
+
+2F808 ;        507A ;  ML      # ( 偺 → 偺 ) CJK COMPATIBILITY IDEOGRAPH-2F808 → CJK UNIFIED IDEOGRAPH-507A     # 
+
+2F809 ;        5099 ;  ML      # ( 備 → 備 ) CJK COMPATIBILITY IDEOGRAPH-2F809 → CJK UNIFIED IDEOGRAPH-5099     # 
+
+2F80B ;        50CF ;  ML      # ( 像 → 像 ) CJK COMPATIBILITY IDEOGRAPH-2F80B → CJK UNIFIED IDEOGRAPH-50CF     # 
+
+F9BB ; 50DA ;  ML      # ( 僚 → 僚 ) CJK COMPATIBILITY IDEOGRAPH-F9BB → CJK UNIFIED IDEOGRAPH-50DA       # 
+
+FA31 ; 50E7 ;  ML      # ( 僧 → 僧 ) CJK COMPATIBILITY IDEOGRAPH-FA31 → CJK UNIFIED IDEOGRAPH-50E7       # 
+2F80A ;        50E7 ;  ML      # ( 僧 → 僧 ) CJK COMPATIBILITY IDEOGRAPH-2F80A → CJK UNIFIED IDEOGRAPH-50E7     # 
+
+2F09 ; 513F ;  ML      #* ( ⼉ → 儿 ) KANGXI RADICAL LEGS → CJK UNIFIED IDEOGRAPH-513F   # 
+
+FA0C ; 5140 ;  ML      # ( 兀 → 兀 ) CJK COMPATIBILITY IDEOGRAPH-FA0C → CJK UNIFIED IDEOGRAPH-5140       # 
+2E8E ; 5140 ;  ML      #* ( ⺎ → 兀 ) CJK RADICAL LAME ONE → CJK UNIFIED IDEOGRAPH-5140  # 
+
+FA74 ; 5145 ;  ML      # ( 充 → 充 ) CJK COMPATIBILITY IDEOGRAPH-FA74 → CJK UNIFIED IDEOGRAPH-5145       # 
+
+FA32 ; 514D ;  ML      # ( 免 → 免 ) CJK COMPATIBILITY IDEOGRAPH-FA32 → CJK UNIFIED IDEOGRAPH-514D       # 
+2F80E ;        514D ;  ML      # ( 免 → 免 ) CJK COMPATIBILITY IDEOGRAPH-2F80E → CJK UNIFIED IDEOGRAPH-514D     # 
+
+2F80F ;        5154 ;  ML      # ( 兔 → 兔 ) CJK COMPATIBILITY IDEOGRAPH-2F80F → CJK UNIFIED IDEOGRAPH-5154     # 
+
+2F810 ;        5164 ;  ML      # ( 兤 → 兤 ) CJK COMPATIBILITY IDEOGRAPH-2F810 → CJK UNIFIED IDEOGRAPH-5164     # 
+
+2F0A ; 5165 ;  ML      #* ( ⼊ → 入 ) KANGXI RADICAL ENTER → CJK UNIFIED IDEOGRAPH-5165  # 
+
+2F814 ;        5167 ;  ML      # ( 內 → 內 ) CJK COMPATIBILITY IDEOGRAPH-2F814 → CJK UNIFIED IDEOGRAPH-5167     # 
+
+FA72 ; 5168 ;  ML      # ( 全 → 全 ) CJK COMPATIBILITY IDEOGRAPH-FA72 → CJK UNIFIED IDEOGRAPH-5168       # 
+
+F978 ; 5169 ;  ML      # ( 兩 → 兩 ) CJK COMPATIBILITY IDEOGRAPH-F978 → CJK UNIFIED IDEOGRAPH-5169       # 
+
+2F0B ; 516B ;  ML      #* ( ⼋ → 八 ) KANGXI RADICAL EIGHT → CJK UNIFIED IDEOGRAPH-516B  # 
+
+F9D1 ; 516D ;  ML      # ( 六 → 六 ) CJK COMPATIBILITY IDEOGRAPH-F9D1 → CJK UNIFIED IDEOGRAPH-516D       # 
+
+2F811 ;        5177 ;  ML      # ( 具 → 具 ) CJK COMPATIBILITY IDEOGRAPH-2F811 → CJK UNIFIED IDEOGRAPH-5177     # 
+
+FA75 ; 5180 ;  ML      # ( 冀 → 冀 ) CJK COMPATIBILITY IDEOGRAPH-FA75 → CJK UNIFIED IDEOGRAPH-5180       # 
+
+2F0C ; 5182 ;  ML      #* ( ⼌ → 冂 ) KANGXI RADICAL DOWN BOX → CJK UNIFIED IDEOGRAPH-5182       # 
+
+2F815 ;        518D ;  ML      # ( 再 → 再 ) CJK COMPATIBILITY IDEOGRAPH-2F815 → CJK UNIFIED IDEOGRAPH-518D     # 
+
+2F8D2 ;        5192 ;  ML      # ( 冒 → 冒 ) CJK COMPATIBILITY IDEOGRAPH-2F8D2 → CJK UNIFIED IDEOGRAPH-5192     # 
+
+2F8D3 ;        5195 ;  ML      # ( 冕 → 冕 ) CJK COMPATIBILITY IDEOGRAPH-2F8D3 → CJK UNIFIED IDEOGRAPH-5195     # 
+
+2F0D ; 5196 ;  ML      #* ( ⼍ → 冖 ) KANGXI RADICAL COVER → CJK UNIFIED IDEOGRAPH-5196  # 
+
+2F817 ;        5197 ;  ML      # ( 冗 → 冗 ) CJK COMPATIBILITY IDEOGRAPH-2F817 → CJK UNIFIED IDEOGRAPH-5197     # 
+
+2F818 ;        51A4 ;  ML      # ( 冤 → 冤 ) CJK COMPATIBILITY IDEOGRAPH-2F818 → CJK UNIFIED IDEOGRAPH-51A4     # 
+
+2F0E ; 51AB ;  ML      #* ( ⼎ → 冫 ) KANGXI RADICAL ICE → CJK UNIFIED IDEOGRAPH-51AB    # 
+
+2F81A ;        51AC ;  ML      # ( 冬 → 冬 ) CJK COMPATIBILITY IDEOGRAPH-2F81A → CJK UNIFIED IDEOGRAPH-51AC     # 
+
+FA71 ; 51B5 ;  ML      # ( 况 → 况 ) CJK COMPATIBILITY IDEOGRAPH-FA71 → CJK UNIFIED IDEOGRAPH-51B5       # 
+2F81B ;        51B5 ;  ML      # ( 况 → 况 ) CJK COMPATIBILITY IDEOGRAPH-2F81B → CJK UNIFIED IDEOGRAPH-51B5     # 
+
+F92E ; 51B7 ;  ML      # ( 冷 → 冷 ) CJK COMPATIBILITY IDEOGRAPH-F92E → CJK UNIFIED IDEOGRAPH-51B7       # 
+
+F979 ; 51C9 ;  ML      # ( 凉 → 凉 ) CJK COMPATIBILITY IDEOGRAPH-F979 → CJK UNIFIED IDEOGRAPH-51C9       # 
+
+F955 ; 51CC ;  ML      # ( 凌 → 凌 ) CJK COMPATIBILITY IDEOGRAPH-F955 → CJK UNIFIED IDEOGRAPH-51CC       # 
+
+F954 ; 51DC ;  ML      # ( 凜 → 凜 ) CJK COMPATIBILITY IDEOGRAPH-F954 → CJK UNIFIED IDEOGRAPH-51DC       # 
+
+FA15 ; 51DE ;  ML      # ( 凞 → 凞 ) CJK COMPATIBILITY IDEOGRAPH-FA15 → CJK UNIFIED IDEOGRAPH-51DE       # 
+
+2F0F ; 51E0 ;  ML      #* ( ⼏ → 几 ) KANGXI RADICAL TABLE → CJK UNIFIED IDEOGRAPH-51E0  # 
+
+2F81D ;        51F5 ;  ML      # ( 凵 → 凵 ) CJK COMPATIBILITY IDEOGRAPH-2F81D → CJK UNIFIED IDEOGRAPH-51F5     # 
+2F10 ; 51F5 ;  ML      #* ( ⼐ → 凵 ) KANGXI RADICAL OPEN BOX → CJK UNIFIED IDEOGRAPH-51F5       # 
+
+2F11 ; 5200 ;  ML      #* ( ⼑ → 刀 ) KANGXI RADICAL KNIFE → CJK UNIFIED IDEOGRAPH-5200  # 
+
+2E89 ; 5202 ;  ML      #* ( ⺉ → 刂 ) CJK RADICAL KNIFE TWO → CJK UNIFIED IDEOGRAPH-5202 # 
+
+2F81E ;        5203 ;  ML      # ( 刃 → 刃 ) CJK COMPATIBILITY IDEOGRAPH-2F81E → CJK UNIFIED IDEOGRAPH-5203     # 
+
+FA00 ; 5207 ;  ML      # ( 切 → 切 ) CJK COMPATIBILITY IDEOGRAPH-FA00 → CJK UNIFIED IDEOGRAPH-5207       # 
+2F850 ;        5207 ;  ML      # ( 切 → 切 ) CJK COMPATIBILITY IDEOGRAPH-2F850 → CJK UNIFIED IDEOGRAPH-5207     # 
+
+F99C ; 5217 ;  ML      # ( 列 → 列 ) CJK COMPATIBILITY IDEOGRAPH-F99C → CJK UNIFIED IDEOGRAPH-5217       # 
+
+F9DD ; 5229 ;  ML      # ( 利 → 利 ) CJK COMPATIBILITY IDEOGRAPH-F9DD → CJK UNIFIED IDEOGRAPH-5229       # 
+
+F9FF ; 523A ;  ML      # ( 刺 → 刺 ) CJK COMPATIBILITY IDEOGRAPH-F9FF → CJK UNIFIED IDEOGRAPH-523A       # 
+
+2F820 ;        523B ;  ML      # ( 刻 → 刻 ) CJK COMPATIBILITY IDEOGRAPH-2F820 → CJK UNIFIED IDEOGRAPH-523B     # 
+
+2F821 ;        5246 ;  ML      # ( 剆 → 剆 ) CJK COMPATIBILITY IDEOGRAPH-2F821 → CJK UNIFIED IDEOGRAPH-5246     # 
+
+2F822 ;        5272 ;  ML      # ( 割 → 割 ) CJK COMPATIBILITY IDEOGRAPH-2F822 → CJK UNIFIED IDEOGRAPH-5272     # 
+
+2F823 ;        5277 ;  ML      # ( 剷 → 剷 ) CJK COMPATIBILITY IDEOGRAPH-2F823 → CJK UNIFIED IDEOGRAPH-5277     # 
+
+F9C7 ; 5289 ;  ML      # ( 劉 → 劉 ) CJK COMPATIBILITY IDEOGRAPH-F9C7 → CJK UNIFIED IDEOGRAPH-5289       # 
+
+F98A ; 529B ;  ML      # ( 力 → 力 ) CJK COMPATIBILITY IDEOGRAPH-F98A → CJK UNIFIED IDEOGRAPH-529B       # 
+2F12 ; 529B ;  ML      #* ( ⼒ → 力 ) KANGXI RADICAL POWER → CJK UNIFIED IDEOGRAPH-529B  # 
+
+F99D ; 52A3 ;  ML      # ( 劣 → 劣 ) CJK COMPATIBILITY IDEOGRAPH-F99D → CJK UNIFIED IDEOGRAPH-52A3       # 
+
+2F992 ;        52B3 ;  ML      # ( 劳 → 劳 ) CJK COMPATIBILITY IDEOGRAPH-2F992 → CJK UNIFIED IDEOGRAPH-52B3     # 
+
+FA76 ; 52C7 ;  ML      # ( 勇 → 勇 ) CJK COMPATIBILITY IDEOGRAPH-FA76 → CJK UNIFIED IDEOGRAPH-52C7       # 
+2F825 ;        52C7 ;  ML      # ( 勇 → 勇 ) CJK COMPATIBILITY IDEOGRAPH-2F825 → CJK UNIFIED IDEOGRAPH-52C7     # 
+
+FA33 ; 52C9 ;  ML      # ( 勉 → 勉 ) CJK COMPATIBILITY IDEOGRAPH-FA33 → CJK UNIFIED IDEOGRAPH-52C9       # 
+2F826 ;        52C9 ;  ML      # ( 勉 → 勉 ) CJK COMPATIBILITY IDEOGRAPH-2F826 → CJK UNIFIED IDEOGRAPH-52C9     # 
+
+F952 ; 52D2 ;  ML      # ( 勒 → 勒 ) CJK COMPATIBILITY IDEOGRAPH-F952 → CJK UNIFIED IDEOGRAPH-52D2       # 
+
+F92F ; 52DE ;  ML      # ( 勞 → 勞 ) CJK COMPATIBILITY IDEOGRAPH-F92F → CJK UNIFIED IDEOGRAPH-52DE       # 
+
+FA34 ; 52E4 ;  ML      # ( 勤 → 勤 ) CJK COMPATIBILITY IDEOGRAPH-FA34 → CJK UNIFIED IDEOGRAPH-52E4       # 
+2F827 ;        52E4 ;  ML      # ( 勤 → 勤 ) CJK COMPATIBILITY IDEOGRAPH-2F827 → CJK UNIFIED IDEOGRAPH-52E4     # 
+
+F97F ; 52F5 ;  ML      # ( 勵 → 勵 ) CJK COMPATIBILITY IDEOGRAPH-F97F → CJK UNIFIED IDEOGRAPH-52F5       # 
+
+2F13 ; 52F9 ;  ML      #* ( ⼓ → 勹 ) KANGXI RADICAL WRAP → CJK UNIFIED IDEOGRAPH-52F9   # 
+
+FA77 ; 52FA ;  ML      # ( 勺 → 勺 ) CJK COMPATIBILITY IDEOGRAPH-FA77 → CJK UNIFIED IDEOGRAPH-52FA       # 
+2F828 ;        52FA ;  ML      # ( 勺 → 勺 ) CJK COMPATIBILITY IDEOGRAPH-2F828 → CJK UNIFIED IDEOGRAPH-52FA     # 
+
+2F829 ;        5305 ;  ML      # ( 包 → 包 ) CJK COMPATIBILITY IDEOGRAPH-2F829 → CJK UNIFIED IDEOGRAPH-5305     # 
+
+2F82A ;        5306 ;  ML      # ( 匆 → 匆 ) CJK COMPATIBILITY IDEOGRAPH-2F82A → CJK UNIFIED IDEOGRAPH-5306     # 
+
+2F14 ; 5315 ;  ML      #* ( ⼔ → 匕 ) KANGXI RADICAL SPOON → CJK UNIFIED IDEOGRAPH-5315  # 
+
+F963 ; 5317 ;  ML      # ( 北 → 北 ) CJK COMPATIBILITY IDEOGRAPH-F963 → CJK UNIFIED IDEOGRAPH-5317       # 
+2F82B ;        5317 ;  ML      # ( 北 → 北 ) CJK COMPATIBILITY IDEOGRAPH-2F82B → CJK UNIFIED IDEOGRAPH-5317     # 
+
+2F15 ; 531A ;  ML      #* ( ⼕ → 匚 ) KANGXI RADICAL RIGHT OPEN BOX → CJK UNIFIED IDEOGRAPH-531A # 
+
+2F16 ; 5338 ;  ML      #* ( ⼖ → 匸 ) KANGXI RADICAL HIDING ENCLOSURE → CJK UNIFIED IDEOGRAPH-5338       # 
+
+F9EB ; 533F ;  ML      # ( 匿 → 匿 ) CJK COMPATIBILITY IDEOGRAPH-F9EB → CJK UNIFIED IDEOGRAPH-533F       # 
+
+2F17 ; 5341 ;  ML      #* ( ⼗ → 十 ) KANGXI RADICAL TEN → CJK UNIFIED IDEOGRAPH-5341    # 
+3038 ; 5341 ;  ML      # ( 〸 → 十 ) HANGZHOU NUMERAL TEN → CJK UNIFIED IDEOGRAPH-5341   # 
+
+3039 ; 5344 ;  ML      # ( 〹 → 卄 ) HANGZHOU NUMERAL TWENTY → CJK UNIFIED IDEOGRAPH-5344        # 
+
+303A ; 5345 ;  ML      # ( 〺 → 卅 ) HANGZHOU NUMERAL THIRTY → CJK UNIFIED IDEOGRAPH-5345        # 
+
+2F82C ;        5349 ;  ML      # ( 卉 → 卉 ) CJK COMPATIBILITY IDEOGRAPH-2F82C → CJK UNIFIED IDEOGRAPH-5349     # 
+
+FA35 ; 5351 ;  ML      # ( 卑 → 卑 ) CJK COMPATIBILITY IDEOGRAPH-FA35 → CJK UNIFIED IDEOGRAPH-5351       # 
+2F82D ;        5351 ;  ML      # ( 卑 → 卑 ) CJK COMPATIBILITY IDEOGRAPH-2F82D → CJK UNIFIED IDEOGRAPH-5351     # 
+
+2F82E ;        535A ;  ML      # ( 博 → 博 ) CJK COMPATIBILITY IDEOGRAPH-2F82E → CJK UNIFIED IDEOGRAPH-535A     # 
+
+2F18 ; 535C ;  ML      #* ( ⼘ → 卜 ) KANGXI RADICAL DIVINATION → CJK UNIFIED IDEOGRAPH-535C     # 
+
+2F19 ; 5369 ;  ML      #* ( ⼙ → 卩 ) KANGXI RADICAL SEAL → CJK UNIFIED IDEOGRAPH-5369   # 
+
+2F82F ;        5373 ;  ML      # ( 即 → 即 ) CJK COMPATIBILITY IDEOGRAPH-2F82F → CJK UNIFIED IDEOGRAPH-5373     # 
+
+F91C ; 5375 ;  ML      # ( 卵 → 卵 ) CJK COMPATIBILITY IDEOGRAPH-F91C → CJK UNIFIED IDEOGRAPH-5375       # 
+
+2F830 ;        537D ;  ML      # ( 卽 → 卽 ) CJK COMPATIBILITY IDEOGRAPH-2F830 → CJK UNIFIED IDEOGRAPH-537D     # 
+
+2F831 ;        537F ;  ML      # ( 卿 → 卿 ) CJK COMPATIBILITY IDEOGRAPH-2F831 → CJK UNIFIED IDEOGRAPH-537F     # 
+2F832 ;        537F ;  ML      # ( 卿 → 卿 ) CJK COMPATIBILITY IDEOGRAPH-2F832 → CJK UNIFIED IDEOGRAPH-537F     # 
+2F833 ;        537F ;  ML      # ( 卿 → 卿 ) CJK COMPATIBILITY IDEOGRAPH-2F833 → CJK UNIFIED IDEOGRAPH-537F     # 
+
+2F1A ; 5382 ;  ML      #* ( ⼚ → 厂 ) KANGXI RADICAL CLIFF → CJK UNIFIED IDEOGRAPH-5382  # 
+
+2F1B ; 53B6 ;  ML      #* ( ⼛ → 厶 ) KANGXI RADICAL PRIVATE → CJK UNIFIED IDEOGRAPH-53B6        # 
+
+F96B ; 53C3 ;  ML      # ( 參 → 參 ) CJK COMPATIBILITY IDEOGRAPH-F96B → CJK UNIFIED IDEOGRAPH-53C3       # 
+
+2F1C ; 53C8 ;  ML      #* ( ⼜ → 又 ) KANGXI RADICAL AGAIN → CJK UNIFIED IDEOGRAPH-53C8  # 
+
+2F836 ;        53CA ;  ML      # ( 及 → 及 ) CJK COMPATIBILITY IDEOGRAPH-2F836 → CJK UNIFIED IDEOGRAPH-53CA     # 
+
+2F837 ;        53DF ;  ML      # ( 叟 → 叟 ) CJK COMPATIBILITY IDEOGRAPH-2F837 → CJK UNIFIED IDEOGRAPH-53DF     # 
+
+2F1D ; 53E3 ;  ML      #* ( ⼝ → 口 ) KANGXI RADICAL MOUTH → CJK UNIFIED IDEOGRAPH-53E3  # 
+
+F906 ; 53E5 ;  ML      # ( 句 → 句 ) CJK COMPATIBILITY IDEOGRAPH-F906 → CJK UNIFIED IDEOGRAPH-53E5       # 
+
+2F839 ;        53EB ;  ML      # ( 叫 → 叫 ) CJK COMPATIBILITY IDEOGRAPH-2F839 → CJK UNIFIED IDEOGRAPH-53EB     # 
+
+2F83A ;        53F1 ;  ML      # ( 叱 → 叱 ) CJK COMPATIBILITY IDEOGRAPH-2F83A → CJK UNIFIED IDEOGRAPH-53F1     # 
+
+2F83B ;        5406 ;  ML      # ( 吆 → 吆 ) CJK COMPATIBILITY IDEOGRAPH-2F83B → CJK UNIFIED IDEOGRAPH-5406     # 
+
+F9DE ; 540F ;  ML      # ( 吏 → 吏 ) CJK COMPATIBILITY IDEOGRAPH-F9DE → CJK UNIFIED IDEOGRAPH-540F       # 
+
+F9ED ; 541D ;  ML      # ( 吝 → 吝 ) CJK COMPATIBILITY IDEOGRAPH-F9ED → CJK UNIFIED IDEOGRAPH-541D       # 
+
+2F83D ;        5438 ;  ML      # ( 吸 → 吸 ) CJK COMPATIBILITY IDEOGRAPH-2F83D → CJK UNIFIED IDEOGRAPH-5438     # 
+
+F980 ; 5442 ;  ML      # ( 呂 → 呂 ) CJK COMPATIBILITY IDEOGRAPH-F980 → CJK UNIFIED IDEOGRAPH-5442       # 
+
+2F83E ;        5448 ;  ML      # ( 呈 → 呈 ) CJK COMPATIBILITY IDEOGRAPH-2F83E → CJK UNIFIED IDEOGRAPH-5448     # 
+
+2F83F ;        5468 ;  ML      # ( 周 → 周 ) CJK COMPATIBILITY IDEOGRAPH-2F83F → CJK UNIFIED IDEOGRAPH-5468     # 
+
+2F83C ;        549E ;  ML      # ( 咞 → 咞 ) CJK COMPATIBILITY IDEOGRAPH-2F83C → CJK UNIFIED IDEOGRAPH-549E     # 
+
+2F840 ;        54A2 ;  ML      # ( 咢 → 咢 ) CJK COMPATIBILITY IDEOGRAPH-2F840 → CJK UNIFIED IDEOGRAPH-54A2     # 
+
+F99E ; 54BD ;  ML      # ( 咽 → 咽 ) CJK COMPATIBILITY IDEOGRAPH-F99E → CJK UNIFIED IDEOGRAPH-54BD       # 
+
+2F841 ;        54F6 ;  ML      # ( 哶 → 哶 ) CJK COMPATIBILITY IDEOGRAPH-2F841 → CJK UNIFIED IDEOGRAPH-54F6     # 
+
+2F842 ;        5510 ;  ML      # ( 唐 → 唐 ) CJK COMPATIBILITY IDEOGRAPH-2F842 → CJK UNIFIED IDEOGRAPH-5510     # 
+
+2F843 ;        5553 ;  ML      # ( 啓 → 啓 ) CJK COMPATIBILITY IDEOGRAPH-2F843 → CJK UNIFIED IDEOGRAPH-5553     # 
+555F ; 5553 ;  ML      # ( 啟 → 啓 ) CJK UNIFIED IDEOGRAPH-555F → CJK UNIFIED IDEOGRAPH-5553     # 
+
+FA79 ; 5555 ;  ML      # ( 啕 → 啕 ) CJK COMPATIBILITY IDEOGRAPH-FA79 → CJK UNIFIED IDEOGRAPH-5555       # 
+
+2F844 ;        5563 ;  ML      # ( 啣 → 啣 ) CJK COMPATIBILITY IDEOGRAPH-2F844 → CJK UNIFIED IDEOGRAPH-5563     # 
+
+2F845 ;        5584 ;  ML      # ( 善 → 善 ) CJK COMPATIBILITY IDEOGRAPH-2F845 → CJK UNIFIED IDEOGRAPH-5584     # 
+2F846 ;        5584 ;  ML      # ( 善 → 善 ) CJK COMPATIBILITY IDEOGRAPH-2F846 → CJK UNIFIED IDEOGRAPH-5584     # 
+
+F90B ; 5587 ;  ML      # ( 喇 → 喇 ) CJK COMPATIBILITY IDEOGRAPH-F90B → CJK UNIFIED IDEOGRAPH-5587       # 
+
+FA7A ; 5599 ;  ML      # ( 喙 → 喙 ) CJK COMPATIBILITY IDEOGRAPH-FA7A → CJK UNIFIED IDEOGRAPH-5599       # 
+2F847 ;        5599 ;  ML      # ( 喙 → 喙 ) CJK COMPATIBILITY IDEOGRAPH-2F847 → CJK UNIFIED IDEOGRAPH-5599     # 
+
+FA36 ; 559D ;  ML      # ( 喝 → 喝 ) CJK COMPATIBILITY IDEOGRAPH-FA36 → CJK UNIFIED IDEOGRAPH-559D       # 
+FA78 ; 559D ;  ML      # ( 喝 → 喝 ) CJK COMPATIBILITY IDEOGRAPH-FA78 → CJK UNIFIED IDEOGRAPH-559D       # 
+
+2F848 ;        55AB ;  ML      # ( 喫 → 喫 ) CJK COMPATIBILITY IDEOGRAPH-2F848 → CJK UNIFIED IDEOGRAPH-55AB     # 
+
+2F849 ;        55B3 ;  ML      # ( 喳 → 喳 ) CJK COMPATIBILITY IDEOGRAPH-2F849 → CJK UNIFIED IDEOGRAPH-55B3     # 
+
+FA0D ; 55C0 ;  ML      # ( 嗀 → 嗀 ) CJK COMPATIBILITY IDEOGRAPH-FA0D → CJK UNIFIED IDEOGRAPH-55C0       # 
+
+2F84A ;        55C2 ;  ML      # ( 嗂 → 嗂 ) CJK COMPATIBILITY IDEOGRAPH-2F84A → CJK UNIFIED IDEOGRAPH-55C2     # 
+
+FA7B ; 55E2 ;  ML      # ( 嗢 → 嗢 ) CJK COMPATIBILITY IDEOGRAPH-FA7B → CJK UNIFIED IDEOGRAPH-55E2       # 
+
+FA37 ; 5606 ;  ML      # ( 嘆 → 嘆 ) CJK COMPATIBILITY IDEOGRAPH-FA37 → CJK UNIFIED IDEOGRAPH-5606       # 
+2F84C ;        5606 ;  ML      # ( 嘆 → 嘆 ) CJK COMPATIBILITY IDEOGRAPH-2F84C → CJK UNIFIED IDEOGRAPH-5606     # 
+
+2F84E ;        5651 ;  ML      # ( 噑 → 噑 ) CJK COMPATIBILITY IDEOGRAPH-2F84E → CJK UNIFIED IDEOGRAPH-5651     # 
+
+FA38 ; 5668 ;  ML      # ( 器 → 器 ) CJK COMPATIBILITY IDEOGRAPH-FA38 → CJK UNIFIED IDEOGRAPH-5668       # 
+
+2F84F ;        5674 ;  ML      # ( 噴 → 噴 ) CJK COMPATIBILITY IDEOGRAPH-2F84F → CJK UNIFIED IDEOGRAPH-5674     # 
+
+2F1E ; 56D7 ;  ML      #* ( ⼞ → 囗 ) KANGXI RADICAL ENCLOSURE → CJK UNIFIED IDEOGRAPH-56D7      # 
+
+F9A9 ; 56F9 ;  ML      # ( 囹 → 囹 ) CJK COMPATIBILITY IDEOGRAPH-F9A9 → CJK UNIFIED IDEOGRAPH-56F9       # 
+
+2F84B ;        5716 ;  ML      # ( 圖 → 圖 ) CJK COMPATIBILITY IDEOGRAPH-2F84B → CJK UNIFIED IDEOGRAPH-5716     # 
+
+2F84D ;        5717 ;  ML      # ( 圗 → 圗 ) CJK COMPATIBILITY IDEOGRAPH-2F84D → CJK UNIFIED IDEOGRAPH-5717     # 
+
+2F1F ; 571F ;  ML      #* ( ⼟ → 土 ) KANGXI RADICAL EARTH → CJK UNIFIED IDEOGRAPH-571F  # 
+
+2F855 ;        578B ;  ML      # ( 型 → 型 ) CJK COMPATIBILITY IDEOGRAPH-2F855 → CJK UNIFIED IDEOGRAPH-578B     # 
+
+2F852 ;        57CE ;  ML      # ( 城 → 城 ) CJK COMPATIBILITY IDEOGRAPH-2F852 → CJK UNIFIED IDEOGRAPH-57CE     # 
+
+2F853 ;        57F4 ;  ML      # ( 埴 → 埴 ) CJK COMPATIBILITY IDEOGRAPH-2F853 → CJK UNIFIED IDEOGRAPH-57F4     # 
+
+2F854 ;        580D ;  ML      # ( 堍 → 堍 ) CJK COMPATIBILITY IDEOGRAPH-2F854 → CJK UNIFIED IDEOGRAPH-580D     # 
+
+2F857 ;        5831 ;  ML      # ( 報 → 報 ) CJK COMPATIBILITY IDEOGRAPH-2F857 → CJK UNIFIED IDEOGRAPH-5831     # 
+
+2F856 ;        5832 ;  ML      # ( 堲 → 堲 ) CJK COMPATIBILITY IDEOGRAPH-2F856 → CJK UNIFIED IDEOGRAPH-5832     # 
+
+FA39 ; 5840 ;  ML      # ( 塀 → 塀 ) CJK COMPATIBILITY IDEOGRAPH-FA39 → CJK UNIFIED IDEOGRAPH-5840       # 
+
+FA10 ; 585A ;  ML      # ( 塚 → 塚 ) CJK COMPATIBILITY IDEOGRAPH-FA10 → CJK UNIFIED IDEOGRAPH-585A       # 
+FA7C ; 585A ;  ML      # ( 塚 → 塚 ) CJK COMPATIBILITY IDEOGRAPH-FA7C → CJK UNIFIED IDEOGRAPH-585A       # 
+
+F96C ; 585E ;  ML      # ( 塞 → 塞 ) CJK COMPATIBILITY IDEOGRAPH-F96C → CJK UNIFIED IDEOGRAPH-585E       # 
+
+586B ; 5861 ;  ML      # ( 填 → 塡 ) CJK UNIFIED IDEOGRAPH-586B → CJK UNIFIED IDEOGRAPH-5861     # 
+
+FA3A ; 58A8 ;  ML      # ( 墨 → 墨 ) CJK COMPATIBILITY IDEOGRAPH-FA3A → CJK UNIFIED IDEOGRAPH-58A8       # 
+
+58FF ; 58AB ;  ML      # ( 壿 → 墫 ) CJK UNIFIED IDEOGRAPH-58FF → CJK UNIFIED IDEOGRAPH-58AB     # 
+
+2F858 ;        58AC ;  ML      # ( 墬 → 墬 ) CJK COMPATIBILITY IDEOGRAPH-2F858 → CJK UNIFIED IDEOGRAPH-58AC     # 
+
+FA7D ; 58B3 ;  ML      # ( 墳 → 墳 ) CJK COMPATIBILITY IDEOGRAPH-FA7D → CJK UNIFIED IDEOGRAPH-58B3       # 
+
+F94A ; 58D8 ;  ML      # ( 壘 → 壘 ) CJK COMPATIBILITY IDEOGRAPH-F94A → CJK UNIFIED IDEOGRAPH-58D8       # 
+
+F942 ; 58DF ;  ML      # ( 壟 → 壟 ) CJK COMPATIBILITY IDEOGRAPH-F942 → CJK UNIFIED IDEOGRAPH-58DF       # 
+
+2F20 ; 58EB ;  ML      #* ( ⼠ → 士 ) KANGXI RADICAL SCHOLAR → CJK UNIFIED IDEOGRAPH-58EB        # 
+
+2F851 ;        58EE ;  ML      # ( 壮 → 壮 ) CJK COMPATIBILITY IDEOGRAPH-2F851 → CJK UNIFIED IDEOGRAPH-58EE     # 
+
+2F85A ;        58F2 ;  ML      # ( 売 → 売 ) CJK COMPATIBILITY IDEOGRAPH-2F85A → CJK UNIFIED IDEOGRAPH-58F2     # 
+
+2F85B ;        58F7 ;  ML      # ( 壷 → 壷 ) CJK COMPATIBILITY IDEOGRAPH-2F85B → CJK UNIFIED IDEOGRAPH-58F7     # 
+
+2F21 ; 5902 ;  ML      #* ( ⼡ → 夂 ) KANGXI RADICAL GO → CJK UNIFIED IDEOGRAPH-5902     # 
+
+2F85C ;        5906 ;  ML      # ( 夆 → 夆 ) CJK COMPATIBILITY IDEOGRAPH-2F85C → CJK UNIFIED IDEOGRAPH-5906     # 
+
+2F22 ; 590A ;  ML      #* ( ⼢ → 夊 ) KANGXI RADICAL GO SLOWLY → CJK UNIFIED IDEOGRAPH-590A      # 
+
+2F23 ; 5915 ;  ML      #* ( ⼣ → 夕 ) KANGXI RADICAL EVENING → CJK UNIFIED IDEOGRAPH-5915        # 
+
+2F85D ;        591A ;  ML      # ( 多 → 多 ) CJK COMPATIBILITY IDEOGRAPH-2F85D → CJK UNIFIED IDEOGRAPH-591A     # 
+
+2F85E ;        5922 ;  ML      # ( 夢 → 夢 ) CJK COMPATIBILITY IDEOGRAPH-2F85E → CJK UNIFIED IDEOGRAPH-5922     # 
+
+2F24 ; 5927 ;  ML      #* ( ⼤ → 大 ) KANGXI RADICAL BIG → CJK UNIFIED IDEOGRAPH-5927    # 
+
+FA7E ; 5944 ;  ML      # ( 奄 → 奄 ) CJK COMPATIBILITY IDEOGRAPH-FA7E → CJK UNIFIED IDEOGRAPH-5944       # 
+
+F90C ; 5948 ;  ML      # ( 奈 → 奈 ) CJK COMPATIBILITY IDEOGRAPH-F90C → CJK UNIFIED IDEOGRAPH-5948       # 
+
+F909 ; 5951 ;  ML      # ( 契 → 契 ) CJK COMPATIBILITY IDEOGRAPH-F909 → CJK UNIFIED IDEOGRAPH-5951       # 
+
+FA7F ; 5954 ;  ML      # ( 奔 → 奔 ) CJK COMPATIBILITY IDEOGRAPH-FA7F → CJK UNIFIED IDEOGRAPH-5954       # 
+
+2F85F ;        5962 ;  ML      # ( 奢 → 奢 ) CJK COMPATIBILITY IDEOGRAPH-2F85F → CJK UNIFIED IDEOGRAPH-5962     # 
+
+F981 ; 5973 ;  ML      # ( 女 → 女 ) CJK COMPATIBILITY IDEOGRAPH-F981 → CJK UNIFIED IDEOGRAPH-5973       # 
+2F25 ; 5973 ;  ML      #* ( ⼥ → 女 ) KANGXI RADICAL WOMAN → CJK UNIFIED IDEOGRAPH-5973  # 
+
+2F865 ;        59D8 ;  ML      # ( 姘 → 姘 ) CJK COMPATIBILITY IDEOGRAPH-2F865 → CJK UNIFIED IDEOGRAPH-59D8     # 
+
+2F862 ;        59EC ;  ML      # ( 姬 → 姬 ) CJK COMPATIBILITY IDEOGRAPH-2F862 → CJK UNIFIED IDEOGRAPH-59EC     # 
+
+2F863 ;        5A1B ;  ML      # ( 娛 → 娛 ) CJK COMPATIBILITY IDEOGRAPH-2F863 → CJK UNIFIED IDEOGRAPH-5A1B     # 
+
+2F864 ;        5A27 ;  ML      # ( 娧 → 娧 ) CJK COMPATIBILITY IDEOGRAPH-2F864 → CJK UNIFIED IDEOGRAPH-5A27     # 
+
+FA80 ; 5A62 ;  ML      # ( 婢 → 婢 ) CJK COMPATIBILITY IDEOGRAPH-FA80 → CJK UNIFIED IDEOGRAPH-5A62       # 
+
+2F866 ;        5A66 ;  ML      # ( 婦 → 婦 ) CJK COMPATIBILITY IDEOGRAPH-2F866 → CJK UNIFIED IDEOGRAPH-5A66     # 
+
+5B00 ; 5AAF ;  ML      # ( 嬀 → 媯 ) CJK UNIFIED IDEOGRAPH-5B00 → CJK UNIFIED IDEOGRAPH-5AAF     # 
+
+2F986 ;        5AB5 ;  ML      # ( 媵 → 媵 ) CJK COMPATIBILITY IDEOGRAPH-2F986 → CJK UNIFIED IDEOGRAPH-5AB5     # 
+
+2F869 ;        5B08 ;  ML      # ( 嬈 → 嬈 ) CJK COMPATIBILITY IDEOGRAPH-2F869 → CJK UNIFIED IDEOGRAPH-5B08     # 
+
+FA81 ; 5B28 ;  ML      # ( 嬨 → 嬨 ) CJK COMPATIBILITY IDEOGRAPH-FA81 → CJK UNIFIED IDEOGRAPH-5B28       # 
+
+2F86A ;        5B3E ;  ML      # ( 嬾 → 嬾 ) CJK COMPATIBILITY IDEOGRAPH-2F86A → CJK UNIFIED IDEOGRAPH-5B3E     # 
+2F86B ;        5B3E ;  ML      # ( 嬾 → 嬾 ) CJK COMPATIBILITY IDEOGRAPH-2F86B → CJK UNIFIED IDEOGRAPH-5B3E     # 
+
+2F26 ; 5B50 ;  ML      #* ( ⼦ → 子 ) KANGXI RADICAL CHILD → CJK UNIFIED IDEOGRAPH-5B50  # 
+
+2F27 ; 5B80 ;  ML      #* ( ⼧ → 宀 ) KANGXI RADICAL ROOF → CJK UNIFIED IDEOGRAPH-5B80   # 
+
+FA04 ; 5B85 ;  ML      # ( 宅 → 宅 ) CJK COMPATIBILITY IDEOGRAPH-FA04 → CJK UNIFIED IDEOGRAPH-5B85       # 
+
+2F86D ;        5BC3 ;  ML      # ( 寃 → 寃 ) CJK COMPATIBILITY IDEOGRAPH-2F86D → CJK UNIFIED IDEOGRAPH-5BC3     # 
+
+2F86E ;        5BD8 ;  ML      # ( 寘 → 寘 ) CJK COMPATIBILITY IDEOGRAPH-2F86E → CJK UNIFIED IDEOGRAPH-5BD8     # 
+
+F95F ; 5BE7 ;  ML      # ( 寧 → 寧 ) CJK COMPATIBILITY IDEOGRAPH-F95F → CJK UNIFIED IDEOGRAPH-5BE7       # 
+F9AA ; 5BE7 ;  ML      # ( 寧 → 寧 ) CJK COMPATIBILITY IDEOGRAPH-F9AA → CJK UNIFIED IDEOGRAPH-5BE7       # 
+2F86F ;        5BE7 ;  ML      # ( 寧 → 寧 ) CJK COMPATIBILITY IDEOGRAPH-2F86F → CJK UNIFIED IDEOGRAPH-5BE7     # 
+
+F9BC ; 5BEE ;  ML      # ( 寮 → 寮 ) CJK COMPATIBILITY IDEOGRAPH-F9BC → CJK UNIFIED IDEOGRAPH-5BEE       # 
+
+2F870 ;        5BF3 ;  ML      # ( 寳 → 寳 ) CJK COMPATIBILITY IDEOGRAPH-2F870 → CJK UNIFIED IDEOGRAPH-5BF3     # 
+
+2F28 ; 5BF8 ;  ML      #* ( ⼨ → 寸 ) KANGXI RADICAL INCH → CJK UNIFIED IDEOGRAPH-5BF8   # 
+
+2F872 ;        5BFF ;  ML      # ( 寿 → 寿 ) CJK COMPATIBILITY IDEOGRAPH-2F872 → CJK UNIFIED IDEOGRAPH-5BFF     # 
+
+2F873 ;        5C06 ;  ML      # ( 将 → 将 ) CJK COMPATIBILITY IDEOGRAPH-2F873 → CJK UNIFIED IDEOGRAPH-5C06     # 
+
+2F29 ; 5C0F ;  ML      #* ( ⼩ → 小 ) KANGXI RADICAL SMALL → CJK UNIFIED IDEOGRAPH-5C0F  # 
+
+2F875 ;        5C22 ;  ML      # ( 尢 → 尢 ) CJK COMPATIBILITY IDEOGRAPH-2F875 → CJK UNIFIED IDEOGRAPH-5C22     # 
+2E90 ; 5C22 ;  ML      #* ( ⺐ → 尢 ) CJK RADICAL LAME THREE → CJK UNIFIED IDEOGRAPH-5C22        # 
+2F2A ; 5C22 ;  ML      #* ( ⼪ → 尢 ) KANGXI RADICAL LAME → CJK UNIFIED IDEOGRAPH-5C22   # 
+
+2E8F ; 5C23 ;  ML      #* ( ⺏ → 尣 ) CJK RADICAL LAME TWO → CJK UNIFIED IDEOGRAPH-5C23  # 
+
+2F2B ; 5C38 ;  ML      #* ( ⼫ → 尸 ) KANGXI RADICAL CORPSE → CJK UNIFIED IDEOGRAPH-5C38 # 
+
+F9BD ; 5C3F ;  ML      # ( 尿 → 尿 ) CJK COMPATIBILITY IDEOGRAPH-F9BD → CJK UNIFIED IDEOGRAPH-5C3F       # 
+
+2F877 ;        5C60 ;  ML      # ( 屠 → 屠 ) CJK COMPATIBILITY IDEOGRAPH-2F877 → CJK UNIFIED IDEOGRAPH-5C60     # 
+
+F94B ; 5C62 ;  ML      # ( 屢 → 屢 ) CJK COMPATIBILITY IDEOGRAPH-F94B → CJK UNIFIED IDEOGRAPH-5C62       # 
+
+FA3B ; 5C64 ;  ML      # ( 層 → 層 ) CJK COMPATIBILITY IDEOGRAPH-FA3B → CJK UNIFIED IDEOGRAPH-5C64       # 
+
+F9DF ; 5C65 ;  ML      # ( 履 → 履 ) CJK COMPATIBILITY IDEOGRAPH-F9DF → CJK UNIFIED IDEOGRAPH-5C65       # 
+
+FA3C ; 5C6E ;  ML      # ( 屮 → 屮 ) CJK COMPATIBILITY IDEOGRAPH-FA3C → CJK UNIFIED IDEOGRAPH-5C6E       # 
+2F878 ;        5C6E ;  ML      # ( 屮 → 屮 ) CJK COMPATIBILITY IDEOGRAPH-2F878 → CJK UNIFIED IDEOGRAPH-5C6E     # 
+2F2C ; 5C6E ;  ML      #* ( ⼬ → 屮 ) KANGXI RADICAL SPROUT → CJK UNIFIED IDEOGRAPH-5C6E # 
+
+2F2D ; 5C71 ;  ML      #* ( ⼭ → 山 ) KANGXI RADICAL MOUNTAIN → CJK UNIFIED IDEOGRAPH-5C71       # 
+
+2F87A ;        5C8D ;  ML      # ( 岍 → 岍 ) CJK COMPATIBILITY IDEOGRAPH-2F87A → CJK UNIFIED IDEOGRAPH-5C8D     # 
+
+2F879 ;        5CC0 ;  ML      # ( 峀 → 峀 ) CJK COMPATIBILITY IDEOGRAPH-2F879 → CJK UNIFIED IDEOGRAPH-5CC0     # 
+
+F9D5 ; 5D19 ;  ML      # ( 崙 → 崙 ) CJK COMPATIBILITY IDEOGRAPH-F9D5 → CJK UNIFIED IDEOGRAPH-5D19       # 
+
+2F87C ;        5D43 ;  ML      # ( 嵃 → 嵃 ) CJK COMPATIBILITY IDEOGRAPH-2F87C → CJK UNIFIED IDEOGRAPH-5D43     # 
+
+F921 ; 5D50 ;  ML      # ( 嵐 → 嵐 ) CJK COMPATIBILITY IDEOGRAPH-F921 → CJK UNIFIED IDEOGRAPH-5D50       # 
+
+2F87F ;        5D6B ;  ML      # ( 嵫 → 嵫 ) CJK COMPATIBILITY IDEOGRAPH-2F87F → CJK UNIFIED IDEOGRAPH-5D6B     # 
+
+2F87E ;        5D6E ;  ML      # ( 嵮 → 嵮 ) CJK COMPATIBILITY IDEOGRAPH-2F87E → CJK UNIFIED IDEOGRAPH-5D6E     # 
+
+2F880 ;        5D7C ;  ML      # ( 嵼 → 嵼 ) CJK COMPATIBILITY IDEOGRAPH-2F880 → CJK UNIFIED IDEOGRAPH-5D7C     # 
+
+2F9F4 ;        5DB2 ;  ML      # ( 嶲 → 嶲 ) CJK COMPATIBILITY IDEOGRAPH-2F9F4 → CJK UNIFIED IDEOGRAPH-5DB2     # 
+
+F9AB ; 5DBA ;  ML      # ( 嶺 → 嶺 ) CJK COMPATIBILITY IDEOGRAPH-F9AB → CJK UNIFIED IDEOGRAPH-5DBA       # 
+
+2F2E ; 5DDB ;  ML      #* ( ⼮ → 巛 ) KANGXI RADICAL RIVER → CJK UNIFIED IDEOGRAPH-5DDB  # 
+
+2F881 ;        5DE1 ;  ML      # ( 巡 → 巡 ) CJK COMPATIBILITY IDEOGRAPH-2F881 → CJK UNIFIED IDEOGRAPH-5DE1     # 
+
+2F882 ;        5DE2 ;  ML      # ( 巢 → 巢 ) CJK COMPATIBILITY IDEOGRAPH-2F882 → CJK UNIFIED IDEOGRAPH-5DE2     # 
+
+2F2F ; 5DE5 ;  ML      #* ( ⼯ → 工 ) KANGXI RADICAL WORK → CJK UNIFIED IDEOGRAPH-5DE5   # 
+
+2F30 ; 5DF1 ;  ML      #* ( ⼰ → 己 ) KANGXI RADICAL ONESELF → CJK UNIFIED IDEOGRAPH-5DF1        # 
+
+2E92 ; 5DF3 ;  ML      #* ( ⺒ → 巳 ) CJK RADICAL SNAKE → CJK UNIFIED IDEOGRAPH-5DF3     # 
+
+2F884 ;        5DFD ;  ML      # ( 巽 → 巽 ) CJK COMPATIBILITY IDEOGRAPH-2F884 → CJK UNIFIED IDEOGRAPH-5DFD     # 
+
+2F31 ; 5DFE ;  ML      #* ( ⼱ → 巾 ) KANGXI RADICAL TURBAN → CJK UNIFIED IDEOGRAPH-5DFE # 
+
+5E32 ; 5E21 ;  ML      # ( 帲 → 帡 ) CJK UNIFIED IDEOGRAPH-5E32 → CJK UNIFIED IDEOGRAPH-5E21     # 
+
+2F885 ;        5E28 ;  ML      # ( 帨 → 帨 ) CJK COMPATIBILITY IDEOGRAPH-2F885 → CJK UNIFIED IDEOGRAPH-5E28     # 
+
+2F886 ;        5E3D ;  ML      # ( 帽 → 帽 ) CJK COMPATIBILITY IDEOGRAPH-2F886 → CJK UNIFIED IDEOGRAPH-5E3D     # 
+
+2F887 ;        5E69 ;  ML      # ( 幩 → 幩 ) CJK COMPATIBILITY IDEOGRAPH-2F887 → CJK UNIFIED IDEOGRAPH-5E69     # 
+
+2F32 ; 5E72 ;  ML      #* ( ⼲ → 干 ) KANGXI RADICAL DRY → CJK UNIFIED IDEOGRAPH-5E72    # 
+
+F98E ; 5E74 ;  ML      # ( 年 → 年 ) CJK COMPATIBILITY IDEOGRAPH-F98E → CJK UNIFIED IDEOGRAPH-5E74       # 
+
+2E93 ; 5E7A ;  ML      #* ( ⺓ → 幺 ) CJK RADICAL THREAD → CJK UNIFIED IDEOGRAPH-5E7A    # 
+2F33 ; 5E7A ;  ML      #* ( ⼳ → 幺 ) KANGXI RADICAL SHORT THREAD → CJK UNIFIED IDEOGRAPH-5E7A   # 
+
+2F34 ; 5E7F ;  ML      #* ( ⼴ → 广 ) KANGXI RADICAL DOTTED CLIFF → CJK UNIFIED IDEOGRAPH-5E7F   # 
+
+FA01 ; 5EA6 ;  ML      # ( 度 → 度 ) CJK COMPATIBILITY IDEOGRAPH-FA01 → CJK UNIFIED IDEOGRAPH-5EA6       # 
+
+2F88B ;        5EB0 ;  ML      # ( 庰 → 庰 ) CJK COMPATIBILITY IDEOGRAPH-2F88B → CJK UNIFIED IDEOGRAPH-5EB0     # 
+
+2F88C ;        5EB3 ;  ML      # ( 庳 → 庳 ) CJK COMPATIBILITY IDEOGRAPH-2F88C → CJK UNIFIED IDEOGRAPH-5EB3     # 
+
+2F88D ;        5EB6 ;  ML      # ( 庶 → 庶 ) CJK COMPATIBILITY IDEOGRAPH-2F88D → CJK UNIFIED IDEOGRAPH-5EB6     # 
+
+F9A2 ; 5EC9 ;  ML      # ( 廉 → 廉 ) CJK COMPATIBILITY IDEOGRAPH-F9A2 → CJK UNIFIED IDEOGRAPH-5EC9       # 
+
+F928 ; 5ECA ;  ML      # ( 廊 → 廊 ) CJK COMPATIBILITY IDEOGRAPH-F928 → CJK UNIFIED IDEOGRAPH-5ECA       # 
+2F88E ;        5ECA ;  ML      # ( 廊 → 廊 ) CJK COMPATIBILITY IDEOGRAPH-2F88E → CJK UNIFIED IDEOGRAPH-5ECA     # 
+
+FA82 ; 5ED2 ;  ML      # ( 廒 → 廒 ) CJK COMPATIBILITY IDEOGRAPH-FA82 → CJK UNIFIED IDEOGRAPH-5ED2       # 
+
+FA0B ; 5ED3 ;  ML      # ( 廓 → 廓 ) CJK COMPATIBILITY IDEOGRAPH-FA0B → CJK UNIFIED IDEOGRAPH-5ED3       # 
+
+FA83 ; 5ED9 ;  ML      # ( 廙 → 廙 ) CJK COMPATIBILITY IDEOGRAPH-FA83 → CJK UNIFIED IDEOGRAPH-5ED9       # 
+
+F982 ; 5EEC ;  ML      # ( 廬 → 廬 ) CJK COMPATIBILITY IDEOGRAPH-F982 → CJK UNIFIED IDEOGRAPH-5EEC       # 
+
+2F35 ; 5EF4 ;  ML      #* ( ⼵ → 廴 ) KANGXI RADICAL LONG STRIDE → CJK UNIFIED IDEOGRAPH-5EF4    # 
+
+2F890 ;        5EFE ;  ML      # ( 廾 → 廾 ) CJK COMPATIBILITY IDEOGRAPH-2F890 → CJK UNIFIED IDEOGRAPH-5EFE     # 
+2F36 ; 5EFE ;  ML      #* ( ⼶ → 廾 ) KANGXI RADICAL TWO HANDS → CJK UNIFIED IDEOGRAPH-5EFE      # 
+
+F943 ; 5F04 ;  ML      # ( 弄 → 弄 ) CJK COMPATIBILITY IDEOGRAPH-F943 → CJK UNIFIED IDEOGRAPH-5F04       # 
+
+2F37 ; 5F0B ;  ML      #* ( ⼷ → 弋 ) KANGXI RADICAL SHOOT → CJK UNIFIED IDEOGRAPH-5F0B  # 
+
+2F38 ; 5F13 ;  ML      #* ( ⼸ → 弓 ) KANGXI RADICAL BOW → CJK UNIFIED IDEOGRAPH-5F13    # 
+
+2F894 ;        5F22 ;  ML      # ( 弢 → 弢 ) CJK COMPATIBILITY IDEOGRAPH-2F894 → CJK UNIFIED IDEOGRAPH-5F22     # 
+2F895 ;        5F22 ;  ML      # ( 弢 → 弢 ) CJK COMPATIBILITY IDEOGRAPH-2F895 → CJK UNIFIED IDEOGRAPH-5F22     # 
+
+2F39 ; 5F50 ;  ML      #* ( ⼹ → 彐 ) KANGXI RADICAL SNOUT → CJK UNIFIED IDEOGRAPH-5F50  # 
+
+2E94 ; 5F51 ;  ML      #* ( ⺔ → 彑 ) CJK RADICAL SNOUT ONE → CJK UNIFIED IDEOGRAPH-5F51 # 
+
+2F874 ;        5F53 ;  ML      # ( 当 → 当 ) CJK COMPATIBILITY IDEOGRAPH-2F874 → CJK UNIFIED IDEOGRAPH-5F53     # 
+
+2F3A ; 5F61 ;  ML      #* ( ⼺ → 彡 ) KANGXI RADICAL BRISTLE → CJK UNIFIED IDEOGRAPH-5F61        # 
+
+2F899 ;        5F62 ;  ML      # ( 形 → 形 ) CJK COMPATIBILITY IDEOGRAPH-2F899 → CJK UNIFIED IDEOGRAPH-5F62     # 
+
+FA84 ; 5F69 ;  ML      # ( 彩 → 彩 ) CJK COMPATIBILITY IDEOGRAPH-FA84 → CJK UNIFIED IDEOGRAPH-5F69       # 
+
+2F89A ;        5F6B ;  ML      # ( 彫 → 彫 ) CJK COMPATIBILITY IDEOGRAPH-2F89A → CJK UNIFIED IDEOGRAPH-5F6B     # 
+
+2F3B ; 5F73 ;  ML      #* ( ⼻ → 彳 ) KANGXI RADICAL STEP → CJK UNIFIED IDEOGRAPH-5F73   # 
+
+F9D8 ; 5F8B ;  ML      # ( 律 → 律 ) CJK COMPATIBILITY IDEOGRAPH-F9D8 → CJK UNIFIED IDEOGRAPH-5F8B       # 
+
+2F89C ;        5F9A ;  ML      # ( 徚 → 徚 ) CJK COMPATIBILITY IDEOGRAPH-2F89C → CJK UNIFIED IDEOGRAPH-5F9A     # 
+
+F966 ; 5FA9 ;  ML      # ( 復 → 復 ) CJK COMPATIBILITY IDEOGRAPH-F966 → CJK UNIFIED IDEOGRAPH-5FA9       # 
+
+FA85 ; 5FAD ;  ML      # ( 徭 → 徭 ) CJK COMPATIBILITY IDEOGRAPH-FA85 → CJK UNIFIED IDEOGRAPH-5FAD       # 
+
+2F3C ; 5FC3 ;  ML      #* ( ⼼ → 心 ) KANGXI RADICAL HEART → CJK UNIFIED IDEOGRAPH-5FC3  # 
+
+2E96 ; 5FC4 ;  ML      #* ( ⺖ → 忄 ) CJK RADICAL HEART ONE → CJK UNIFIED IDEOGRAPH-5FC4 # 
+
+2F89D ;        5FCD ;  ML      # ( 忍 → 忍 ) CJK COMPATIBILITY IDEOGRAPH-2F89D → CJK UNIFIED IDEOGRAPH-5FCD     # 
+
+2F89E ;        5FD7 ;  ML      # ( 志 → 志 ) CJK COMPATIBILITY IDEOGRAPH-2F89E → CJK UNIFIED IDEOGRAPH-5FD7     # 
+
+F9A3 ; 5FF5 ;  ML      # ( 念 → 念 ) CJK COMPATIBILITY IDEOGRAPH-F9A3 → CJK UNIFIED IDEOGRAPH-5FF5       # 
+
+2F89F ;        5FF9 ;  ML      # ( 忹 → 忹 ) CJK COMPATIBILITY IDEOGRAPH-2F89F → CJK UNIFIED IDEOGRAPH-5FF9     # 
+
+F960 ; 6012 ;  ML      # ( 怒 → 怒 ) CJK COMPATIBILITY IDEOGRAPH-F960 → CJK UNIFIED IDEOGRAPH-6012       # 
+
+F9AC ; 601C ;  ML      # ( 怜 → 怜 ) CJK COMPATIBILITY IDEOGRAPH-F9AC → CJK UNIFIED IDEOGRAPH-601C       # 
+
+FA6B ; 6075 ;  ML      # ( 恵 → 恵 ) CJK COMPATIBILITY IDEOGRAPH-FA6B → CJK UNIFIED IDEOGRAPH-6075       # 
+
+2F8A0 ;        6081 ;  ML      # ( 悁 → 悁 ) CJK COMPATIBILITY IDEOGRAPH-2F8A0 → CJK UNIFIED IDEOGRAPH-6081     # 
+
+FA3D ; 6094 ;  ML      # ( 悔 → 悔 ) CJK COMPATIBILITY IDEOGRAPH-FA3D → CJK UNIFIED IDEOGRAPH-6094       # 
+2F8A3 ;        6094 ;  ML      # ( 悔 → 悔 ) CJK COMPATIBILITY IDEOGRAPH-2F8A3 → CJK UNIFIED IDEOGRAPH-6094     # 
+
+2F8A5 ;        60C7 ;  ML      # ( 惇 → 惇 ) CJK COMPATIBILITY IDEOGRAPH-2F8A5 → CJK UNIFIED IDEOGRAPH-60C7     # 
+
+FA86 ; 60D8 ;  ML      # ( 惘 → 惘 ) CJK COMPATIBILITY IDEOGRAPH-FA86 → CJK UNIFIED IDEOGRAPH-60D8       # 
+
+F9B9 ; 60E1 ;  ML      # ( 惡 → 惡 ) CJK COMPATIBILITY IDEOGRAPH-F9B9 → CJK UNIFIED IDEOGRAPH-60E1       # 
+
+FA88 ; 6108 ;  ML      # ( 愈 → 愈 ) CJK COMPATIBILITY IDEOGRAPH-FA88 → CJK UNIFIED IDEOGRAPH-6108       # 
+
+F9D9 ; 6144 ;  ML      # ( 慄 → 慄 ) CJK COMPATIBILITY IDEOGRAPH-F9D9 → CJK UNIFIED IDEOGRAPH-6144       # 
+
+2F8A6 ;        6148 ;  ML      # ( 慈 → 慈 ) CJK COMPATIBILITY IDEOGRAPH-2F8A6 → CJK UNIFIED IDEOGRAPH-6148     # 
+
+2F8A7 ;        614C ;  ML      # ( 慌 → 慌 ) CJK COMPATIBILITY IDEOGRAPH-2F8A7 → CJK UNIFIED IDEOGRAPH-614C     # 
+2F8A9 ;        614C ;  ML      # ( 慌 → 慌 ) CJK COMPATIBILITY IDEOGRAPH-2F8A9 → CJK UNIFIED IDEOGRAPH-614C     # 
+
+FA87 ; 614E ;  ML      # ( 慎 → 慎 ) CJK COMPATIBILITY IDEOGRAPH-FA87 → CJK UNIFIED IDEOGRAPH-614E       # 
+2F8A8 ;        614E ;  ML      # ( 慎 → 慎 ) CJK COMPATIBILITY IDEOGRAPH-2F8A8 → CJK UNIFIED IDEOGRAPH-614E     # 
+
+FA8A ; 6160 ;  ML      # ( 慠 → 慠 ) CJK COMPATIBILITY IDEOGRAPH-FA8A → CJK UNIFIED IDEOGRAPH-6160       # 
+
+FA3E ; 6168 ;  ML      # ( 慨 → 慨 ) CJK COMPATIBILITY IDEOGRAPH-FA3E → CJK UNIFIED IDEOGRAPH-6168       # 
+
+2F8AA ;        617A ;  ML      # ( 慺 → 慺 ) CJK COMPATIBILITY IDEOGRAPH-2F8AA → CJK UNIFIED IDEOGRAPH-617A     # 
+
+FA3F ; 618E ;  ML      # ( 憎 → 憎 ) CJK COMPATIBILITY IDEOGRAPH-FA3F → CJK UNIFIED IDEOGRAPH-618E       # 
+FA89 ; 618E ;  ML      # ( 憎 → 憎 ) CJK COMPATIBILITY IDEOGRAPH-FA89 → CJK UNIFIED IDEOGRAPH-618E       # 
+2F8AB ;        618E ;  ML      # ( 憎 → 憎 ) CJK COMPATIBILITY IDEOGRAPH-2F8AB → CJK UNIFIED IDEOGRAPH-618E     # 
+
+F98F ; 6190 ;  ML      # ( 憐 → 憐 ) CJK COMPATIBILITY IDEOGRAPH-F98F → CJK UNIFIED IDEOGRAPH-6190       # 
+
+2F8AD ;        61A4 ;  ML      # ( 憤 → 憤 ) CJK COMPATIBILITY IDEOGRAPH-2F8AD → CJK UNIFIED IDEOGRAPH-61A4     # 
+
+2F8AE ;        61AF ;  ML      # ( 憯 → 憯 ) CJK COMPATIBILITY IDEOGRAPH-2F8AE → CJK UNIFIED IDEOGRAPH-61AF     # 
+
+2F8AC ;        61B2 ;  ML      # ( 憲 → 憲 ) CJK COMPATIBILITY IDEOGRAPH-2F8AC → CJK UNIFIED IDEOGRAPH-61B2     # 
+
+2F8AF ;        61DE ;  ML      # ( 懞 → 懞 ) CJK COMPATIBILITY IDEOGRAPH-2F8AF → CJK UNIFIED IDEOGRAPH-61DE     # 
+
+FA40 ; 61F2 ;  ML      # ( 懲 → 懲 ) CJK COMPATIBILITY IDEOGRAPH-FA40 → CJK UNIFIED IDEOGRAPH-61F2       # 
+FA8B ; 61F2 ;  ML      # ( 懲 → 懲 ) CJK COMPATIBILITY IDEOGRAPH-FA8B → CJK UNIFIED IDEOGRAPH-61F2       # 
+2F8B0 ;        61F2 ;  ML      # ( 懲 → 懲 ) CJK COMPATIBILITY IDEOGRAPH-2F8B0 → CJK UNIFIED IDEOGRAPH-61F2     # 
+
+F90D ; 61F6 ;  ML      # ( 懶 → 懶 ) CJK COMPATIBILITY IDEOGRAPH-F90D → CJK UNIFIED IDEOGRAPH-61F6       # 
+2F8B1 ;        61F6 ;  ML      # ( 懶 → 懶 ) CJK COMPATIBILITY IDEOGRAPH-2F8B1 → CJK UNIFIED IDEOGRAPH-61F6     # 
+
+F990 ; 6200 ;  ML      # ( 戀 → 戀 ) CJK COMPATIBILITY IDEOGRAPH-F990 → CJK UNIFIED IDEOGRAPH-6200       # 
+
+2F3D ; 6208 ;  ML      #* ( ⼽ → 戈 ) KANGXI RADICAL HALBERD → CJK UNIFIED IDEOGRAPH-6208        # 
+
+2F8B2 ;        6210 ;  ML      # ( 成 → 成 ) CJK COMPATIBILITY IDEOGRAPH-2F8B2 → CJK UNIFIED IDEOGRAPH-6210     # 
+
+2F8B3 ;        621B ;  ML      # ( 戛 → 戛 ) CJK COMPATIBILITY IDEOGRAPH-2F8B3 → CJK UNIFIED IDEOGRAPH-621B     # 
+
+F9D2 ; 622E ;  ML      # ( 戮 → 戮 ) CJK COMPATIBILITY IDEOGRAPH-F9D2 → CJK UNIFIED IDEOGRAPH-622E       # 
+
+FA8C ; 6234 ;  ML      # ( 戴 → 戴 ) CJK COMPATIBILITY IDEOGRAPH-FA8C → CJK UNIFIED IDEOGRAPH-6234       # 
+
+2F3E ; 6236 ;  ML      #* ( ⼾ → 戶 ) KANGXI RADICAL DOOR → CJK UNIFIED IDEOGRAPH-6236   # 
+6238 ; 6236 ;  ML      # ( 戸 → 戶 ) CJK UNIFIED IDEOGRAPH-6238 → CJK UNIFIED IDEOGRAPH-6236     # →⼾→
+
+2F3F ; 624B ;  ML      #* ( ⼿ → 手 ) KANGXI RADICAL HAND → CJK UNIFIED IDEOGRAPH-624B   # 
+
+2E98 ; 624C ;  ML      #* ( ⺘ → 扌 ) CJK RADICAL HAND → CJK UNIFIED IDEOGRAPH-624C      # 
+
+2F8B4 ;        625D ;  ML      # ( 扝 → 扝 ) CJK COMPATIBILITY IDEOGRAPH-2F8B4 → CJK UNIFIED IDEOGRAPH-625D     # 
+
+2F8B5 ;        62B1 ;  ML      # ( 抱 → 抱 ) CJK COMPATIBILITY IDEOGRAPH-2F8B5 → CJK UNIFIED IDEOGRAPH-62B1     # 
+
+F925 ; 62C9 ;  ML      # ( 拉 → 拉 ) CJK COMPATIBILITY IDEOGRAPH-F925 → CJK UNIFIED IDEOGRAPH-62C9       # 
+
+F95B ; 62CF ;  ML      # ( 拏 → 拏 ) CJK COMPATIBILITY IDEOGRAPH-F95B → CJK UNIFIED IDEOGRAPH-62CF       # 
+
+FA02 ; 62D3 ;  ML      # ( 拓 → 拓 ) CJK COMPATIBILITY IDEOGRAPH-FA02 → CJK UNIFIED IDEOGRAPH-62D3       # 
+
+2F8B6 ;        62D4 ;  ML      # ( 拔 → 拔 ) CJK COMPATIBILITY IDEOGRAPH-2F8B6 → CJK UNIFIED IDEOGRAPH-62D4     # 
+
+2F8BA ;        62FC ;  ML      # ( 拼 → 拼 ) CJK COMPATIBILITY IDEOGRAPH-2F8BA → CJK UNIFIED IDEOGRAPH-62FC     # 
+
+F973 ; 62FE ;  ML      # ( 拾 → 拾 ) CJK COMPATIBILITY IDEOGRAPH-F973 → CJK UNIFIED IDEOGRAPH-62FE       # 
+
+2F8B9 ;        633D ;  ML      # ( 挽 → 挽 ) CJK COMPATIBILITY IDEOGRAPH-2F8B9 → CJK UNIFIED IDEOGRAPH-633D     # 
+
+2F8B7 ;        6350 ;  ML      # ( 捐 → 捐 ) CJK COMPATIBILITY IDEOGRAPH-2F8B7 → CJK UNIFIED IDEOGRAPH-6350     # 
+
+2F8BB ;        6368 ;  ML      # ( 捨 → 捨 ) CJK COMPATIBILITY IDEOGRAPH-2F8BB → CJK UNIFIED IDEOGRAPH-6368     # 
+
+F9A4 ; 637B ;  ML      # ( 捻 → 捻 ) CJK COMPATIBILITY IDEOGRAPH-F9A4 → CJK UNIFIED IDEOGRAPH-637B       # 
+
+2F8BC ;        6383 ;  ML      # ( 掃 → 掃 ) CJK COMPATIBILITY IDEOGRAPH-2F8BC → CJK UNIFIED IDEOGRAPH-6383     # 
+
+F975 ; 63A0 ;  ML      # ( 掠 → 掠 ) CJK COMPATIBILITY IDEOGRAPH-F975 → CJK UNIFIED IDEOGRAPH-63A0       # 
+
+2F8C1 ;        63A9 ;  ML      # ( 掩 → 掩 ) CJK COMPATIBILITY IDEOGRAPH-2F8C1 → CJK UNIFIED IDEOGRAPH-63A9     # 
+
+FA8D ; 63C4 ;  ML      # ( 揄 → 揄 ) CJK COMPATIBILITY IDEOGRAPH-FA8D → CJK UNIFIED IDEOGRAPH-63C4       # 
+
+2F8C0 ;        63C5 ;  ML      # ( 揅 → 揅 ) CJK COMPATIBILITY IDEOGRAPH-2F8C0 → CJK UNIFIED IDEOGRAPH-63C5     # 
+
+2F8BD ;        63E4 ;  ML      # ( 揤 → 揤 ) CJK COMPATIBILITY IDEOGRAPH-2F8BD → CJK UNIFIED IDEOGRAPH-63E4     # 
+
+FA8E ; 641C ;  ML      # ( 搜 → 搜 ) CJK COMPATIBILITY IDEOGRAPH-FA8E → CJK UNIFIED IDEOGRAPH-641C       # 
+
+2F8BF ;        6422 ;  ML      # ( 搢 → 搢 ) CJK COMPATIBILITY IDEOGRAPH-2F8BF → CJK UNIFIED IDEOGRAPH-6422     # 
+
+FA8F ; 6452 ;  ML      # ( 摒 → 摒 ) CJK COMPATIBILITY IDEOGRAPH-FA8F → CJK UNIFIED IDEOGRAPH-6452       # 
+
+2F8C3 ;        6469 ;  ML      # ( 摩 → 摩 ) CJK COMPATIBILITY IDEOGRAPH-2F8C3 → CJK UNIFIED IDEOGRAPH-6469     # 
+
+2F8C6 ;        6477 ;  ML      # ( 摷 → 摷 ) CJK COMPATIBILITY IDEOGRAPH-2F8C6 → CJK UNIFIED IDEOGRAPH-6477     # 
+
+2F8C4 ;        647E ;  ML      # ( 摾 → 摾 ) CJK COMPATIBILITY IDEOGRAPH-2F8C4 → CJK UNIFIED IDEOGRAPH-647E     # 
+
+F991 ; 649A ;  ML      # ( 撚 → 撚 ) CJK COMPATIBILITY IDEOGRAPH-F991 → CJK UNIFIED IDEOGRAPH-649A       # 
+
+2F8C5 ;        649D ;  ML      # ( 撝 → 撝 ) CJK COMPATIBILITY IDEOGRAPH-2F8C5 → CJK UNIFIED IDEOGRAPH-649D     # 
+
+F930 ; 64C4 ;  ML      # ( 擄 → 擄 ) CJK COMPATIBILITY IDEOGRAPH-F930 → CJK UNIFIED IDEOGRAPH-64C4       # 
+
+2F40 ; 652F ;  ML      #* ( ⽀ → 支 ) KANGXI RADICAL BRANCH → CJK UNIFIED IDEOGRAPH-652F # 
+
+2F41 ; 6534 ;  ML      #* ( ⽁ → 攴 ) KANGXI RADICAL RAP → CJK UNIFIED IDEOGRAPH-6534    # 
+
+2E99 ; 6535 ;  ML      #* ( ⺙ → 攵 ) CJK RADICAL RAP → CJK UNIFIED IDEOGRAPH-6535       # 
+
+FA41 ; 654F ;  ML      # ( 敏 → 敏 ) CJK COMPATIBILITY IDEOGRAPH-FA41 → CJK UNIFIED IDEOGRAPH-654F       # 
+2F8C8 ;        654F ;  ML      # ( 敏 → 敏 ) CJK COMPATIBILITY IDEOGRAPH-2F8C8 → CJK UNIFIED IDEOGRAPH-654F     # 
+
+FA90 ; 6556 ;  ML      # ( 敖 → 敖 ) CJK COMPATIBILITY IDEOGRAPH-FA90 → CJK UNIFIED IDEOGRAPH-6556       # 
+
+2F8C9 ;        656C ;  ML      # ( 敬 → 敬 ) CJK COMPATIBILITY IDEOGRAPH-2F8C9 → CJK UNIFIED IDEOGRAPH-656C     # 
+
+F969 ; 6578 ;  ML      # ( 數 → 數 ) CJK COMPATIBILITY IDEOGRAPH-F969 → CJK UNIFIED IDEOGRAPH-6578       # 
+
+2F42 ; 6587 ;  ML      #* ( ⽂ → 文 ) KANGXI RADICAL SCRIPT → CJK UNIFIED IDEOGRAPH-6587 # 
+
+2EEB ; 6589 ;  ML      #* ( ⻫ → 斉 ) CJK RADICAL J-SIMPLIFIED EVEN → CJK UNIFIED IDEOGRAPH-6589 # 
+
+2F43 ; 6597 ;  ML      #* ( ⽃ → 斗 ) KANGXI RADICAL DIPPER → CJK UNIFIED IDEOGRAPH-6597 # 
+
+F9BE ; 6599 ;  ML      # ( 料 → 料 ) CJK COMPATIBILITY IDEOGRAPH-F9BE → CJK UNIFIED IDEOGRAPH-6599       # 
+
+2F44 ; 65A4 ;  ML      #* ( ⽄ → 斤 ) KANGXI RADICAL AXE → CJK UNIFIED IDEOGRAPH-65A4    # 
+
+2F45 ; 65B9 ;  ML      #* ( ⽅ → 方 ) KANGXI RADICAL SQUARE → CJK UNIFIED IDEOGRAPH-65B9 # 
+
+F983 ; 65C5 ;  ML      # ( 旅 → 旅 ) CJK COMPATIBILITY IDEOGRAPH-F983 → CJK UNIFIED IDEOGRAPH-65C5       # 
+
+2F46 ; 65E0 ;  ML      #* ( ⽆ → 无 ) KANGXI RADICAL NOT → CJK UNIFIED IDEOGRAPH-65E0    # 
+
+2E9B ; 65E1 ;  ML      #* ( ⺛ → 旡 ) CJK RADICAL CHOKE → CJK UNIFIED IDEOGRAPH-65E1     # 
+
+FA42 ; 65E2 ;  ML      # ( 既 → 既 ) CJK COMPATIBILITY IDEOGRAPH-FA42 → CJK UNIFIED IDEOGRAPH-65E2       # 
+
+2F8CB ;        65E3 ;  ML      # ( 旣 → 旣 ) CJK COMPATIBILITY IDEOGRAPH-2F8CB → CJK UNIFIED IDEOGRAPH-65E3     # 
+
+2F47 ; 65E5 ;  ML      #* ( ⽇ → 日 ) KANGXI RADICAL SUN → CJK UNIFIED IDEOGRAPH-65E5    # 
+
+F9E0 ; 6613 ;  ML      # ( 易 → 易 ) CJK COMPATIBILITY IDEOGRAPH-F9E0 → CJK UNIFIED IDEOGRAPH-6613       # 
+
+2F8CD ;        6649 ;  ML      # ( 晉 → 晉 ) CJK COMPATIBILITY IDEOGRAPH-2F8CD → CJK UNIFIED IDEOGRAPH-6649     # 
+
+6669 ; 665A ;  ML      # ( 晩 → 晚 ) CJK UNIFIED IDEOGRAPH-6669 → CJK UNIFIED IDEOGRAPH-665A     # 
+
+FA12 ; 6674 ;  ML      # ( 晴 → 晴 ) CJK COMPATIBILITY IDEOGRAPH-FA12 → CJK UNIFIED IDEOGRAPH-6674       # 
+FA91 ; 6674 ;  ML      # ( 晴 → 晴 ) CJK COMPATIBILITY IDEOGRAPH-FA91 → CJK UNIFIED IDEOGRAPH-6674       # 
+
+F9C5 ; 6688 ;  ML      # ( 暈 → 暈 ) CJK COMPATIBILITY IDEOGRAPH-F9C5 → CJK UNIFIED IDEOGRAPH-6688       # 
+
+FA43 ; 6691 ;  ML      # ( 暑 → 暑 ) CJK COMPATIBILITY IDEOGRAPH-FA43 → CJK UNIFIED IDEOGRAPH-6691       # 
+2F8CF ;        6691 ;  ML      # ( 暑 → 暑 ) CJK COMPATIBILITY IDEOGRAPH-2F8CF → CJK UNIFIED IDEOGRAPH-6691     # 
+
+2F8D5 ;        669C ;  ML      # ( 暜 → 暜 ) CJK COMPATIBILITY IDEOGRAPH-2F8D5 → CJK UNIFIED IDEOGRAPH-669C     # 
+
+FA06 ; 66B4 ;  ML      # ( 暴 → 暴 ) CJK COMPATIBILITY IDEOGRAPH-FA06 → CJK UNIFIED IDEOGRAPH-66B4       # 
+
+F98B ; 66C6 ;  ML      # ( 曆 → 曆 ) CJK COMPATIBILITY IDEOGRAPH-F98B → CJK UNIFIED IDEOGRAPH-66C6       # 
+
+2F48 ; 66F0 ;  ML      #* ( ⽈ → 曰 ) KANGXI RADICAL SAY → CJK UNIFIED IDEOGRAPH-66F0    # 
+
+F901 ; 66F4 ;  ML      # ( 更 → 更 ) CJK COMPATIBILITY IDEOGRAPH-F901 → CJK UNIFIED IDEOGRAPH-66F4       # 
+
+2F8CC ;        66F8 ;  ML      # ( 書 → 書 ) CJK COMPATIBILITY IDEOGRAPH-2F8CC → CJK UNIFIED IDEOGRAPH-66F8     # 
+
+2F8D4 ;        6700 ;  ML      # ( 最 → 最 ) CJK COMPATIBILITY IDEOGRAPH-2F8D4 → CJK UNIFIED IDEOGRAPH-6700     # 
+
+2F49 ; 6708 ;  ML      #* ( ⽉ → 月 ) KANGXI RADICAL MOON → CJK UNIFIED IDEOGRAPH-6708   # 
+
+80A6 ; 670C ;  ML      # ( 肦 → 朌 ) CJK UNIFIED IDEOGRAPH-80A6 → CJK UNIFIED IDEOGRAPH-670C     # 
+
+80D0 ; 670F ;  ML      # ( 胐 → 朏 ) CJK UNIFIED IDEOGRAPH-80D0 → CJK UNIFIED IDEOGRAPH-670F     # 
+
+80CA ; 6710 ;  ML      # ( 胊 → 朐 ) CJK UNIFIED IDEOGRAPH-80CA → CJK UNIFIED IDEOGRAPH-6710     # 
+
+8101 ; 6713 ;  ML      # ( 脁 → 朓 ) CJK UNIFIED IDEOGRAPH-8101 → CJK UNIFIED IDEOGRAPH-6713     # 
+
+F929 ; 6717 ;  ML      # ( 朗 → 朗 ) CJK COMPATIBILITY IDEOGRAPH-F929 → CJK UNIFIED IDEOGRAPH-6717       # 
+FA92 ; 6717 ;  ML      # ( 朗 → 朗 ) CJK COMPATIBILITY IDEOGRAPH-FA92 → CJK UNIFIED IDEOGRAPH-6717       # 
+2F8D8 ;        6717 ;  ML      # ( 朗 → 朗 ) CJK COMPATIBILITY IDEOGRAPH-2F8D8 → CJK UNIFIED IDEOGRAPH-6717     # 
+
+8127 ; 6718 ;  ML      # ( 脧 → 朘 ) CJK UNIFIED IDEOGRAPH-8127 → CJK UNIFIED IDEOGRAPH-6718     # 
+
+FA93 ; 671B ;  ML      # ( 望 → 望 ) CJK COMPATIBILITY IDEOGRAPH-FA93 → CJK UNIFIED IDEOGRAPH-671B       # 
+2F8D9 ;        671B ;  ML      # ( 望 → 望 ) CJK COMPATIBILITY IDEOGRAPH-2F8D9 → CJK UNIFIED IDEOGRAPH-671B     # 
+
+2F8DA ;        6721 ;  ML      # ( 朡 → 朡 ) CJK COMPATIBILITY IDEOGRAPH-2F8DA → CJK UNIFIED IDEOGRAPH-6721     # 
+
+81A7 ; 6723 ;  ML      # ( 膧 → 朣 ) CJK UNIFIED IDEOGRAPH-81A7 → CJK UNIFIED IDEOGRAPH-6723     # 
+
+2F4A ; 6728 ;  ML      #* ( ⽊ → 木 ) KANGXI RADICAL TREE → CJK UNIFIED IDEOGRAPH-6728   # 
+
+F9E1 ; 674E ;  ML      # ( 李 → 李 ) CJK COMPATIBILITY IDEOGRAPH-F9E1 → CJK UNIFIED IDEOGRAPH-674E       # 
+
+2F8DC ;        6753 ;  ML      # ( 杓 → 杓 ) CJK COMPATIBILITY IDEOGRAPH-2F8DC → CJK UNIFIED IDEOGRAPH-6753     # 
+
+FA94 ; 6756 ;  ML      # ( 杖 → 杖 ) CJK COMPATIBILITY IDEOGRAPH-FA94 → CJK UNIFIED IDEOGRAPH-6756       # 
+
+2F8DB ;        675E ;  ML      # ( 杞 → 杞 ) CJK COMPATIBILITY IDEOGRAPH-2F8DB → CJK UNIFIED IDEOGRAPH-675E     # 
+
+67FF ; 676E ;  ML      # ( 柿 → 杮 ) CJK UNIFIED IDEOGRAPH-67FF → CJK UNIFIED IDEOGRAPH-676E     # 
+
+F9C8 ; 677B ;  ML      # ( 杻 → 杻 ) CJK COMPATIBILITY IDEOGRAPH-F9C8 → CJK UNIFIED IDEOGRAPH-677B       # 
+
+2F8E0 ;        6785 ;  ML      # ( 枅 → 枅 ) CJK COMPATIBILITY IDEOGRAPH-2F8E0 → CJK UNIFIED IDEOGRAPH-6785     # 
+
+F9F4 ; 6797 ;  ML      # ( 林 → 林 ) CJK COMPATIBILITY IDEOGRAPH-F9F4 → CJK UNIFIED IDEOGRAPH-6797       # 
+
+F9C9 ; 67F3 ;  ML      # ( 柳 → 柳 ) CJK COMPATIBILITY IDEOGRAPH-F9C9 → CJK UNIFIED IDEOGRAPH-67F3       # 
+
+2F8DF ;        67FA ;  ML      # ( 柺 → 柺 ) CJK COMPATIBILITY IDEOGRAPH-2F8DF → CJK UNIFIED IDEOGRAPH-67FA     # 
+
+F9DA ; 6817 ;  ML      # ( 栗 → 栗 ) CJK COMPATIBILITY IDEOGRAPH-F9DA → CJK UNIFIED IDEOGRAPH-6817       # 
+
+2F8E5 ;        681F ;  ML      # ( 栟 → 栟 ) CJK COMPATIBILITY IDEOGRAPH-2F8E5 → CJK UNIFIED IDEOGRAPH-681F     # 
+
+2F8E1 ;        6852 ;  ML      # ( 桒 → 桒 ) CJK COMPATIBILITY IDEOGRAPH-2F8E1 → CJK UNIFIED IDEOGRAPH-6852     # 
+
+F97A ; 6881 ;  ML      # ( 梁 → 梁 ) CJK COMPATIBILITY IDEOGRAPH-F97A → CJK UNIFIED IDEOGRAPH-6881       # 
+
+FA44 ; 6885 ;  ML      # ( 梅 → 梅 ) CJK COMPATIBILITY IDEOGRAPH-FA44 → CJK UNIFIED IDEOGRAPH-6885       # 
+2F8E2 ;        6885 ;  ML      # ( 梅 → 梅 ) CJK COMPATIBILITY IDEOGRAPH-2F8E2 → CJK UNIFIED IDEOGRAPH-6885     # 
+
+2F8E4 ;        688E ;  ML      # ( 梎 → 梎 ) CJK COMPATIBILITY IDEOGRAPH-2F8E4 → CJK UNIFIED IDEOGRAPH-688E     # 
+
+F9E2 ; 68A8 ;  ML      # ( 梨 → 梨 ) CJK COMPATIBILITY IDEOGRAPH-F9E2 → CJK UNIFIED IDEOGRAPH-68A8       # 
+
+2F8E6 ;        6914 ;  ML      # ( 椔 → 椔 ) CJK COMPATIBILITY IDEOGRAPH-2F8E6 → CJK UNIFIED IDEOGRAPH-6914     # 
+
+2F8E8 ;        6942 ;  ML      # ( 楂 → 楂 ) CJK COMPATIBILITY IDEOGRAPH-2F8E8 → CJK UNIFIED IDEOGRAPH-6942     # 
+
+6A27 ; 699D ;  ML      # ( 樧 → 榝 ) CJK UNIFIED IDEOGRAPH-6A27 → CJK UNIFIED IDEOGRAPH-699D     # 
+
+2F8E9 ;        69A3 ;  ML      # ( 榣 → 榣 ) CJK COMPATIBILITY IDEOGRAPH-2F8E9 → CJK UNIFIED IDEOGRAPH-69A3     # 
+
+2F8EA ;        69EA ;  ML      # ( 槪 → 槪 ) CJK COMPATIBILITY IDEOGRAPH-2F8EA → CJK UNIFIED IDEOGRAPH-69EA     # 
+
+F914 ; 6A02 ;  ML      # ( 樂 → 樂 ) CJK COMPATIBILITY IDEOGRAPH-F914 → CJK UNIFIED IDEOGRAPH-6A02       # 
+F95C ; 6A02 ;  ML      # ( 樂 → 樂 ) CJK COMPATIBILITY IDEOGRAPH-F95C → CJK UNIFIED IDEOGRAPH-6A02       # 
+F9BF ; 6A02 ;  ML      # ( 樂 → 樂 ) CJK COMPATIBILITY IDEOGRAPH-F9BF → CJK UNIFIED IDEOGRAPH-6A02       # 
+
+F94C ; 6A13 ;  ML      # ( 樓 → 樓 ) CJK COMPATIBILITY IDEOGRAPH-F94C → CJK UNIFIED IDEOGRAPH-6A13       # 
+
+2F8EB ;        6AA8 ;  ML      # ( 檨 → 檨 ) CJK COMPATIBILITY IDEOGRAPH-2F8EB → CJK UNIFIED IDEOGRAPH-6AA8     # 
+
+F931 ; 6AD3 ;  ML      # ( 櫓 → 櫓 ) CJK COMPATIBILITY IDEOGRAPH-F931 → CJK UNIFIED IDEOGRAPH-6AD3       # 
+
+2F8ED ;        6ADB ;  ML      # ( 櫛 → 櫛 ) CJK COMPATIBILITY IDEOGRAPH-2F8ED → CJK UNIFIED IDEOGRAPH-6ADB     # 
+
+F91D ; 6B04 ;  ML      # ( 欄 → 欄 ) CJK COMPATIBILITY IDEOGRAPH-F91D → CJK UNIFIED IDEOGRAPH-6B04       # 
+
+2F4B ; 6B20 ;  ML      #* ( ⽋ → 欠 ) KANGXI RADICAL LACK → CJK UNIFIED IDEOGRAPH-6B20   # 
+
+2F8EF ;        6B21 ;  ML      # ( 次 → 次 ) CJK COMPATIBILITY IDEOGRAPH-2F8EF → CJK UNIFIED IDEOGRAPH-6B21     # 
+
+2F8F1 ;        6B54 ;  ML      # ( 歔 → 歔 ) CJK COMPATIBILITY IDEOGRAPH-2F8F1 → CJK UNIFIED IDEOGRAPH-6B54     # 
+
+2F4C ; 6B62 ;  ML      #* ( ⽌ → 止 ) KANGXI RADICAL STOP → CJK UNIFIED IDEOGRAPH-6B62   # 
+
+2EED ; 6B6F ;  ML      #* ( ⻭ → 歯 ) CJK RADICAL J-SIMPLIFIED TOOTH → CJK UNIFIED IDEOGRAPH-6B6F        # 
+
+2F8F3 ;        6B72 ;  ML      # ( 歲 → 歲 ) CJK COMPATIBILITY IDEOGRAPH-2F8F3 → CJK UNIFIED IDEOGRAPH-6B72     # 
+
+F98C ; 6B77 ;  ML      # ( 歷 → 歷 ) CJK COMPATIBILITY IDEOGRAPH-F98C → CJK UNIFIED IDEOGRAPH-6B77       # 
+
+FA95 ; 6B79 ;  ML      # ( 歹 → 歹 ) CJK COMPATIBILITY IDEOGRAPH-FA95 → CJK UNIFIED IDEOGRAPH-6B79       # 
+2F4D ; 6B79 ;  ML      #* ( ⽍ → 歹 ) KANGXI RADICAL DEATH → CJK UNIFIED IDEOGRAPH-6B79  # 
+
+2E9E ; 6B7A ;  ML      #* ( ⺞ → 歺 ) CJK RADICAL DEATH → CJK UNIFIED IDEOGRAPH-6B7A     # 
+
+2F8F4 ;        6B9F ;  ML      # ( 殟 → 殟 ) CJK COMPATIBILITY IDEOGRAPH-2F8F4 → CJK UNIFIED IDEOGRAPH-6B9F     # 
+
+F9A5 ; 6BAE ;  ML      # ( 殮 → 殮 ) CJK COMPATIBILITY IDEOGRAPH-F9A5 → CJK UNIFIED IDEOGRAPH-6BAE       # 
+
+2F4E ; 6BB3 ;  ML      #* ( ⽎ → 殳 ) KANGXI RADICAL WEAPON → CJK UNIFIED IDEOGRAPH-6BB3 # 
+
+F970 ; 6BBA ;  ML      # ( 殺 → 殺 ) CJK COMPATIBILITY IDEOGRAPH-F970 → CJK UNIFIED IDEOGRAPH-6BBA       # 
+FA96 ; 6BBA ;  ML      # ( 殺 → 殺 ) CJK COMPATIBILITY IDEOGRAPH-FA96 → CJK UNIFIED IDEOGRAPH-6BBA       # 
+2F8F5 ;        6BBA ;  ML      # ( 殺 → 殺 ) CJK COMPATIBILITY IDEOGRAPH-2F8F5 → CJK UNIFIED IDEOGRAPH-6BBA     # 
+
+2F8F6 ;        6BBB ;  ML      # ( 殻 → 殻 ) CJK COMPATIBILITY IDEOGRAPH-2F8F6 → CJK UNIFIED IDEOGRAPH-6BBB     # 
+
+2F4F ; 6BCB ;  ML      #* ( ⽏ → 毋 ) KANGXI RADICAL DO NOT → CJK UNIFIED IDEOGRAPH-6BCB # 
+
+2E9F ; 6BCD ;  ML      #* ( ⺟ → 母 ) CJK RADICAL MOTHER → CJK UNIFIED IDEOGRAPH-6BCD    # 
+
+2F50 ; 6BD4 ;  ML      #* ( ⽐ → 比 ) KANGXI RADICAL COMPARE → CJK UNIFIED IDEOGRAPH-6BD4        # 
+
+2F51 ; 6BDB ;  ML      #* ( ⽑ → 毛 ) KANGXI RADICAL FUR → CJK UNIFIED IDEOGRAPH-6BDB    # 
+
+2F52 ; 6C0F ;  ML      #* ( ⽒ → 氏 ) KANGXI RADICAL CLAN → CJK UNIFIED IDEOGRAPH-6C0F   # 
+
+2EA0 ; 6C11 ;  ML      #* ( ⺠ → 民 ) CJK RADICAL CIVILIAN → CJK UNIFIED IDEOGRAPH-6C11  # 
+
+2F53 ; 6C14 ;  ML      #* ( ⽓ → 气 ) KANGXI RADICAL STEAM → CJK UNIFIED IDEOGRAPH-6C14  # 
+
+2F54 ; 6C34 ;  ML      #* ( ⽔ → 水 ) KANGXI RADICAL WATER → CJK UNIFIED IDEOGRAPH-6C34  # 
+
+2EA1 ; 6C35 ;  ML      #* ( ⺡ → 氵 ) CJK RADICAL WATER ONE → CJK UNIFIED IDEOGRAPH-6C35 # 
+
+2EA2 ; 6C3A ;  ML      #* ( ⺢ → 氺 ) CJK RADICAL WATER TWO → CJK UNIFIED IDEOGRAPH-6C3A # 
+
+2F8FA ;        6C4E ;  ML      # ( 汎 → 汎 ) CJK COMPATIBILITY IDEOGRAPH-2F8FA → CJK UNIFIED IDEOGRAPH-6C4E     # 
+
+2F8FE ;        6C67 ;  ML      # ( 汧 → 汧 ) CJK COMPATIBILITY IDEOGRAPH-2F8FE → CJK UNIFIED IDEOGRAPH-6C67     # 
+
+F972 ; 6C88 ;  ML      # ( 沈 → 沈 ) CJK COMPATIBILITY IDEOGRAPH-F972 → CJK UNIFIED IDEOGRAPH-6C88       # 
+
+2F8FC ;        6CBF ;  ML      # ( 沿 → 沿 ) CJK COMPATIBILITY IDEOGRAPH-2F8FC → CJK UNIFIED IDEOGRAPH-6CBF     # 
+
+F968 ; 6CCC ;  ML      # ( 泌 → 泌 ) CJK COMPATIBILITY IDEOGRAPH-F968 → CJK UNIFIED IDEOGRAPH-6CCC       # 
+
+2F8FD ;        6CCD ;  ML      # ( 泍 → 泍 ) CJK COMPATIBILITY IDEOGRAPH-2F8FD → CJK UNIFIED IDEOGRAPH-6CCD     # 
+
+F9E3 ; 6CE5 ;  ML      # ( 泥 → 泥 ) CJK COMPATIBILITY IDEOGRAPH-F9E3 → CJK UNIFIED IDEOGRAPH-6CE5       # 
+
+2F8FF ;        6D16 ;  ML      # ( 洖 → 洖 ) CJK COMPATIBILITY IDEOGRAPH-2F8FF → CJK UNIFIED IDEOGRAPH-6D16     # 
+
+F915 ; 6D1B ;  ML      # ( 洛 → 洛 ) CJK COMPATIBILITY IDEOGRAPH-F915 → CJK UNIFIED IDEOGRAPH-6D1B       # 
+
+FA05 ; 6D1E ;  ML      # ( 洞 → 洞 ) CJK COMPATIBILITY IDEOGRAPH-FA05 → CJK UNIFIED IDEOGRAPH-6D1E       # 
+
+2F907 ;        6D34 ;  ML      # ( 洴 → 洴 ) CJK COMPATIBILITY IDEOGRAPH-2F907 → CJK UNIFIED IDEOGRAPH-6D34     # 
+
+2F900 ;        6D3E ;  ML      # ( 派 → 派 ) CJK COMPATIBILITY IDEOGRAPH-2F900 → CJK UNIFIED IDEOGRAPH-6D3E     # 
+
+F9CA ; 6D41 ;  ML      # ( 流 → 流 ) CJK COMPATIBILITY IDEOGRAPH-F9CA → CJK UNIFIED IDEOGRAPH-6D41       # 
+FA97 ; 6D41 ;  ML      # ( 流 → 流 ) CJK COMPATIBILITY IDEOGRAPH-FA97 → CJK UNIFIED IDEOGRAPH-6D41       # 
+2F902 ;        6D41 ;  ML      # ( 流 → 流 ) CJK COMPATIBILITY IDEOGRAPH-2F902 → CJK UNIFIED IDEOGRAPH-6D41     # 
+
+2F903 ;        6D69 ;  ML      # ( 浩 → 浩 ) CJK COMPATIBILITY IDEOGRAPH-2F903 → CJK UNIFIED IDEOGRAPH-6D69     # 
+
+F92A ; 6D6A ;  ML      # ( 浪 → 浪 ) CJK COMPATIBILITY IDEOGRAPH-F92A → CJK UNIFIED IDEOGRAPH-6D6A       # 
+
+FA45 ; 6D77 ;  ML      # ( 海 → 海 ) CJK COMPATIBILITY IDEOGRAPH-FA45 → CJK UNIFIED IDEOGRAPH-6D77       # 
+2F901 ;        6D77 ;  ML      # ( 海 → 海 ) CJK COMPATIBILITY IDEOGRAPH-2F901 → CJK UNIFIED IDEOGRAPH-6D77     # 
+
+2F904 ;        6D78 ;  ML      # ( 浸 → 浸 ) CJK COMPATIBILITY IDEOGRAPH-2F904 → CJK UNIFIED IDEOGRAPH-6D78     # 
+
+2F905 ;        6D85 ;  ML      # ( 涅 → 涅 ) CJK COMPATIBILITY IDEOGRAPH-2F905 → CJK UNIFIED IDEOGRAPH-6D85     # 
+
+F9F5 ; 6DCB ;  ML      # ( 淋 → 淋 ) CJK COMPATIBILITY IDEOGRAPH-F9F5 → CJK UNIFIED IDEOGRAPH-6DCB       # 
+
+F94D ; 6DDA ;  ML      # ( 淚 → 淚 ) CJK COMPATIBILITY IDEOGRAPH-F94D → CJK UNIFIED IDEOGRAPH-6DDA       # 
+
+F9D6 ; 6DEA ;  ML      # ( 淪 → 淪 ) CJK COMPATIBILITY IDEOGRAPH-F9D6 → CJK UNIFIED IDEOGRAPH-6DEA       # 
+
+2F90E ;        6DF9 ;  ML      # ( 淹 → 淹 ) CJK COMPATIBILITY IDEOGRAPH-2F90E → CJK UNIFIED IDEOGRAPH-6DF9     # 
+
+FA46 ; 6E1A ;  ML      # ( 渚 → 渚 ) CJK COMPATIBILITY IDEOGRAPH-FA46 → CJK UNIFIED IDEOGRAPH-6E1A       # 
+
+2F908 ;        6E2F ;  ML      # ( 港 → 港 ) CJK COMPATIBILITY IDEOGRAPH-2F908 → CJK UNIFIED IDEOGRAPH-6E2F     # 
+
+2F909 ;        6E6E ;  ML      # ( 湮 → 湮 ) CJK COMPATIBILITY IDEOGRAPH-2F909 → CJK UNIFIED IDEOGRAPH-6E6E     # 
+
+6F59 ; 6E88 ;  ML      # ( 潙 → 溈 ) CJK UNIFIED IDEOGRAPH-6F59 → CJK UNIFIED IDEOGRAPH-6E88     # 
+
+F9CB ; 6E9C ;  ML      # ( 溜 → 溜 ) CJK COMPATIBILITY IDEOGRAPH-F9CB → CJK UNIFIED IDEOGRAPH-6E9C       # 
+
+F9EC ; 6EBA ;  ML      # ( 溺 → 溺 ) CJK COMPATIBILITY IDEOGRAPH-F9EC → CJK UNIFIED IDEOGRAPH-6EBA       # 
+
+2F90C ;        6EC7 ;  ML      # ( 滇 → 滇 ) CJK COMPATIBILITY IDEOGRAPH-2F90C → CJK UNIFIED IDEOGRAPH-6EC7     # 
+
+FA99 ; 6ECB ;  ML      # ( 滋 → 滋 ) CJK COMPATIBILITY IDEOGRAPH-FA99 → CJK UNIFIED IDEOGRAPH-6ECB       # 
+2F90B ;        6ECB ;  ML      # ( 滋 → 滋 ) CJK COMPATIBILITY IDEOGRAPH-2F90B → CJK UNIFIED IDEOGRAPH-6ECB     # 
+
+F904 ; 6ED1 ;  ML      # ( 滑 → 滑 ) CJK COMPATIBILITY IDEOGRAPH-F904 → CJK UNIFIED IDEOGRAPH-6ED1       # 
+
+FA98 ; 6EDB ;  ML      # ( 滛 → 滛 ) CJK COMPATIBILITY IDEOGRAPH-FA98 → CJK UNIFIED IDEOGRAPH-6EDB       # 
+
+F94E ; 6F0F ;  ML      # ( 漏 → 漏 ) CJK COMPATIBILITY IDEOGRAPH-F94E → CJK UNIFIED IDEOGRAPH-6F0F       # 
+
+FA47 ; 6F22 ;  ML      # ( 漢 → 漢 ) CJK COMPATIBILITY IDEOGRAPH-FA47 → CJK UNIFIED IDEOGRAPH-6F22       # 
+FA9A ; 6F22 ;  ML      # ( 漢 → 漢 ) CJK COMPATIBILITY IDEOGRAPH-FA9A → CJK UNIFIED IDEOGRAPH-6F22       # 
+
+F992 ; 6F23 ;  ML      # ( 漣 → 漣 ) CJK COMPATIBILITY IDEOGRAPH-F992 → CJK UNIFIED IDEOGRAPH-6F23       # 
+
+2F90F ;        6F6E ;  ML      # ( 潮 → 潮 ) CJK COMPATIBILITY IDEOGRAPH-2F90F → CJK UNIFIED IDEOGRAPH-6F6E     # 
+
+2F912 ;        6FC6 ;  ML      # ( 濆 → 濆 ) CJK COMPATIBILITY IDEOGRAPH-2F912 → CJK UNIFIED IDEOGRAPH-6FC6     # 
+
+F922 ; 6FEB ;  ML      # ( 濫 → 濫 ) CJK COMPATIBILITY IDEOGRAPH-F922 → CJK UNIFIED IDEOGRAPH-6FEB       # 
+
+F984 ; 6FFE ;  ML      # ( 濾 → 濾 ) CJK COMPATIBILITY IDEOGRAPH-F984 → CJK UNIFIED IDEOGRAPH-6FFE       # 
+
+2F915 ;        701B ;  ML      # ( 瀛 → 瀛 ) CJK COMPATIBILITY IDEOGRAPH-2F915 → CJK UNIFIED IDEOGRAPH-701B     # 
+
+FA9B ; 701E ;  ML      # ( 瀞 → 瀞 ) CJK COMPATIBILITY IDEOGRAPH-FA9B → CJK UNIFIED IDEOGRAPH-701E       # 
+2F914 ;        701E ;  ML      # ( 瀞 → 瀞 ) CJK COMPATIBILITY IDEOGRAPH-2F914 → CJK UNIFIED IDEOGRAPH-701E     # 
+
+2F913 ;        7039 ;  ML      # ( 瀹 → 瀹 ) CJK COMPATIBILITY IDEOGRAPH-2F913 → CJK UNIFIED IDEOGRAPH-7039     # 
+
+2F917 ;        704A ;  ML      # ( 灊 → 灊 ) CJK COMPATIBILITY IDEOGRAPH-2F917 → CJK UNIFIED IDEOGRAPH-704A     # 
+
+2F55 ; 706B ;  ML      #* ( ⽕ → 火 ) KANGXI RADICAL FIRE → CJK UNIFIED IDEOGRAPH-706B   # 
+
+2EA3 ; 706C ;  ML      #* ( ⺣ → 灬 ) CJK RADICAL FIRE → CJK UNIFIED IDEOGRAPH-706C      # 
+
+2F835 ;        7070 ;  ML      # ( 灰 → 灰 ) CJK COMPATIBILITY IDEOGRAPH-2F835 → CJK UNIFIED IDEOGRAPH-7070     # 
+
+2F919 ;        7077 ;  ML      # ( 灷 → 灷 ) CJK COMPATIBILITY IDEOGRAPH-2F919 → CJK UNIFIED IDEOGRAPH-7077     # 
+
+2F918 ;        707D ;  ML      # ( 災 → 災 ) CJK COMPATIBILITY IDEOGRAPH-2F918 → CJK UNIFIED IDEOGRAPH-707D     # 
+
+F9FB ; 7099 ;  ML      # ( 炙 → 炙 ) CJK COMPATIBILITY IDEOGRAPH-F9FB → CJK UNIFIED IDEOGRAPH-7099       # 
+
+2F91A ;        70AD ;  ML      # ( 炭 → 炭 ) CJK COMPATIBILITY IDEOGRAPH-2F91A → CJK UNIFIED IDEOGRAPH-70AD     # 
+
+F99F ; 70C8 ;  ML      # ( 烈 → 烈 ) CJK COMPATIBILITY IDEOGRAPH-F99F → CJK UNIFIED IDEOGRAPH-70C8       # 
+
+F916 ; 70D9 ;  ML      # ( 烙 → 烙 ) CJK COMPATIBILITY IDEOGRAPH-F916 → CJK UNIFIED IDEOGRAPH-70D9       # 
+
+2F91C ;        7145 ;  ML      # ( 煅 → 煅 ) CJK COMPATIBILITY IDEOGRAPH-2F91C → CJK UNIFIED IDEOGRAPH-7145     # 
+
+F993 ; 7149 ;  ML      # ( 煉 → 煉 ) CJK COMPATIBILITY IDEOGRAPH-F993 → CJK UNIFIED IDEOGRAPH-7149       # 
+
+FA48 ; 716E ;  ML      # ( 煮 → 煮 ) CJK COMPATIBILITY IDEOGRAPH-FA48 → CJK UNIFIED IDEOGRAPH-716E       # 
+FA9C ; 716E ;  ML      # ( 煮 → 煮 ) CJK COMPATIBILITY IDEOGRAPH-FA9C → CJK UNIFIED IDEOGRAPH-716E       # 
+
+2F91E ;        719C ;  ML      # ( 熜 → 熜 ) CJK COMPATIBILITY IDEOGRAPH-2F91E → CJK UNIFIED IDEOGRAPH-719C     # 
+
+F9C0 ; 71CE ;  ML      # ( 燎 → 燎 ) CJK COMPATIBILITY IDEOGRAPH-F9C0 → CJK UNIFIED IDEOGRAPH-71CE       # 
+
+F9EE ; 71D0 ;  ML      # ( 燐 → 燐 ) CJK COMPATIBILITY IDEOGRAPH-F9EE → CJK UNIFIED IDEOGRAPH-71D0       # 
+
+F932 ; 7210 ;  ML      # ( 爐 → 爐 ) CJK COMPATIBILITY IDEOGRAPH-F932 → CJK UNIFIED IDEOGRAPH-7210       # 
+
+F91E ; 721B ;  ML      # ( 爛 → 爛 ) CJK COMPATIBILITY IDEOGRAPH-F91E → CJK UNIFIED IDEOGRAPH-721B       # 
+
+2F920 ;        7228 ;  ML      # ( 爨 → 爨 ) CJK COMPATIBILITY IDEOGRAPH-2F920 → CJK UNIFIED IDEOGRAPH-7228     # 
+
+2F56 ; 722A ;  ML      #* ( ⽖ → 爪 ) KANGXI RADICAL CLAW → CJK UNIFIED IDEOGRAPH-722A   # 
+
+FA49 ; 722B ;  ML      # ( 爫 → 爫 ) CJK COMPATIBILITY IDEOGRAPH-FA49 → CJK UNIFIED IDEOGRAPH-722B       # 
+2EA4 ; 722B ;  ML      #* ( ⺤ → 爫 ) CJK RADICAL PAW ONE → CJK UNIFIED IDEOGRAPH-722B   # 
+
+FA9E ; 7235 ;  ML      # ( 爵 → 爵 ) CJK COMPATIBILITY IDEOGRAPH-FA9E → CJK UNIFIED IDEOGRAPH-7235       # 
+2F921 ;        7235 ;  ML      # ( 爵 → 爵 ) CJK COMPATIBILITY IDEOGRAPH-2F921 → CJK UNIFIED IDEOGRAPH-7235     # 
+
+2F57 ; 7236 ;  ML      #* ( ⽗ → 父 ) KANGXI RADICAL FATHER → CJK UNIFIED IDEOGRAPH-7236 # 
+
+2F58 ; 723B ;  ML      #* ( ⽘ → 爻 ) KANGXI RADICAL DOUBLE X → CJK UNIFIED IDEOGRAPH-723B       # 
+
+2F59 ; 723F ;  ML      #* ( ⽙ → 爿 ) KANGXI RADICAL HALF TREE TRUNK → CJK UNIFIED IDEOGRAPH-723F        # 
+
+2F5A ; 7247 ;  ML      #* ( ⽚ → 片 ) KANGXI RADICAL SLICE → CJK UNIFIED IDEOGRAPH-7247  # 
+
+2F922 ;        7250 ;  ML      # ( 牐 → 牐 ) CJK COMPATIBILITY IDEOGRAPH-2F922 → CJK UNIFIED IDEOGRAPH-7250     # 
+
+2F5B ; 7259 ;  ML      #* ( ⽛ → 牙 ) KANGXI RADICAL FANG → CJK UNIFIED IDEOGRAPH-7259   # 
+
+2F5C ; 725B ;  ML      #* ( ⽜ → 牛 ) KANGXI RADICAL COW → CJK UNIFIED IDEOGRAPH-725B    # 
+
+F946 ; 7262 ;  ML      # ( 牢 → 牢 ) CJK COMPATIBILITY IDEOGRAPH-F946 → CJK UNIFIED IDEOGRAPH-7262       # 
+
+2F924 ;        7280 ;  ML      # ( 犀 → 犀 ) CJK COMPATIBILITY IDEOGRAPH-2F924 → CJK UNIFIED IDEOGRAPH-7280     # 
+
+2F925 ;        7295 ;  ML      # ( 犕 → 犕 ) CJK COMPATIBILITY IDEOGRAPH-2F925 → CJK UNIFIED IDEOGRAPH-7295     # 
+
+2F5D ; 72AC ;  ML      #* ( ⽝ → 犬 ) KANGXI RADICAL DOG → CJK UNIFIED IDEOGRAPH-72AC    # 
+
+2EA8 ; 72AD ;  ML      #* ( ⺨ → 犭 ) CJK RADICAL DOG → CJK UNIFIED IDEOGRAPH-72AD       # 
+
+FA9F ; 72AF ;  ML      # ( 犯 → 犯 ) CJK COMPATIBILITY IDEOGRAPH-FA9F → CJK UNIFIED IDEOGRAPH-72AF       # 
+
+F9FA ; 72C0 ;  ML      # ( 狀 → 狀 ) CJK COMPATIBILITY IDEOGRAPH-F9FA → CJK UNIFIED IDEOGRAPH-72C0       # 
+
+F92B ; 72FC ;  ML      # ( 狼 → 狼 ) CJK COMPATIBILITY IDEOGRAPH-F92B → CJK UNIFIED IDEOGRAPH-72FC       # 
+
+FA16 ; 732A ;  ML      # ( 猪 → 猪 ) CJK COMPATIBILITY IDEOGRAPH-FA16 → CJK UNIFIED IDEOGRAPH-732A       # 
+FAA0 ; 732A ;  ML      # ( 猪 → 猪 ) CJK COMPATIBILITY IDEOGRAPH-FAA0 → CJK UNIFIED IDEOGRAPH-732A       # 
+
+F9A7 ; 7375 ;  ML      # ( 獵 → 獵 ) CJK COMPATIBILITY IDEOGRAPH-F9A7 → CJK UNIFIED IDEOGRAPH-7375       # 
+
+2F928 ;        737A ;  ML      # ( 獺 → 獺 ) CJK COMPATIBILITY IDEOGRAPH-2F928 → CJK UNIFIED IDEOGRAPH-737A     # 
+
+2F5E ; 7384 ;  ML      #* ( ⽞ → 玄 ) KANGXI RADICAL PROFOUND → CJK UNIFIED IDEOGRAPH-7384       # 
+
+F961 ; 7387 ;  ML      # ( 率 → 率 ) CJK COMPATIBILITY IDEOGRAPH-F961 → CJK UNIFIED IDEOGRAPH-7387       # 
+F9DB ; 7387 ;  ML      # ( 率 → 率 ) CJK COMPATIBILITY IDEOGRAPH-F9DB → CJK UNIFIED IDEOGRAPH-7387       # 
+
+2F5F ; 7389 ;  ML      #* ( ⽟ → 玉 ) KANGXI RADICAL JADE → CJK UNIFIED IDEOGRAPH-7389   # 
+
+2F929 ;        738B ;  ML      # ( 王 → 王 ) CJK COMPATIBILITY IDEOGRAPH-2F929 → CJK UNIFIED IDEOGRAPH-738B     # 
+
+2F92B ;        73A5 ;  ML      # ( 玥 → 玥 ) CJK COMPATIBILITY IDEOGRAPH-2F92B → CJK UNIFIED IDEOGRAPH-73A5     # 
+
+F9AD ; 73B2 ;  ML      # ( 玲 → 玲 ) CJK COMPATIBILITY IDEOGRAPH-F9AD → CJK UNIFIED IDEOGRAPH-73B2       # 
+
+F917 ; 73DE ;  ML      # ( 珞 → 珞 ) CJK COMPATIBILITY IDEOGRAPH-F917 → CJK UNIFIED IDEOGRAPH-73DE       # 
+
+F9E4 ; 7406 ;  ML      # ( 理 → 理 ) CJK COMPATIBILITY IDEOGRAPH-F9E4 → CJK UNIFIED IDEOGRAPH-7406       # 
+
+F9CC ; 7409 ;  ML      # ( 琉 → 琉 ) CJK COMPATIBILITY IDEOGRAPH-F9CC → CJK UNIFIED IDEOGRAPH-7409       # 
+
+FA4A ; 7422 ;  ML      # ( 琢 → 琢 ) CJK COMPATIBILITY IDEOGRAPH-FA4A → CJK UNIFIED IDEOGRAPH-7422       # 
+
+2F92E ;        7447 ;  ML      # ( 瑇 → 瑇 ) CJK COMPATIBILITY IDEOGRAPH-2F92E → CJK UNIFIED IDEOGRAPH-7447     # 
+
+2F92F ;        745C ;  ML      # ( 瑜 → 瑜 ) CJK COMPATIBILITY IDEOGRAPH-2F92F → CJK UNIFIED IDEOGRAPH-745C     # 
+
+F9AE ; 7469 ;  ML      # ( 瑩 → 瑩 ) CJK COMPATIBILITY IDEOGRAPH-F9AE → CJK UNIFIED IDEOGRAPH-7469       # 
+
+FAA1 ; 7471 ;  ML      # ( 瑱 → 瑱 ) CJK COMPATIBILITY IDEOGRAPH-FAA1 → CJK UNIFIED IDEOGRAPH-7471       # 
+2F930 ;        7471 ;  ML      # ( 瑱 → 瑱 ) CJK COMPATIBILITY IDEOGRAPH-2F930 → CJK UNIFIED IDEOGRAPH-7471     # 
+
+2F931 ;        7485 ;  ML      # ( 璅 → 璅 ) CJK COMPATIBILITY IDEOGRAPH-2F931 → CJK UNIFIED IDEOGRAPH-7485     # 
+
+F994 ; 7489 ;  ML      # ( 璉 → 璉 ) CJK COMPATIBILITY IDEOGRAPH-F994 → CJK UNIFIED IDEOGRAPH-7489       # 
+
+F9EF ; 7498 ;  ML      # ( 璘 → 璘 ) CJK COMPATIBILITY IDEOGRAPH-F9EF → CJK UNIFIED IDEOGRAPH-7498       # 
+
+2F932 ;        74CA ;  ML      # ( 瓊 → 瓊 ) CJK COMPATIBILITY IDEOGRAPH-2F932 → CJK UNIFIED IDEOGRAPH-74CA     # 
+
+2F60 ; 74DC ;  ML      #* ( ⽠ → 瓜 ) KANGXI RADICAL MELON → CJK UNIFIED IDEOGRAPH-74DC  # 
+
+2F61 ; 74E6 ;  ML      #* ( ⽡ → 瓦 ) KANGXI RADICAL TILE → CJK UNIFIED IDEOGRAPH-74E6   # 
+
+FAA2 ; 7506 ;  ML      # ( 甆 → 甆 ) CJK COMPATIBILITY IDEOGRAPH-FAA2 → CJK UNIFIED IDEOGRAPH-7506       # 
+
+2F62 ; 7518 ;  ML      #* ( ⽢ → 甘 ) KANGXI RADICAL SWEET → CJK UNIFIED IDEOGRAPH-7518  # 
+
+2F63 ; 751F ;  ML      #* ( ⽣ → 生 ) KANGXI RADICAL LIFE → CJK UNIFIED IDEOGRAPH-751F   # 
+
+2F934 ;        7524 ;  ML      # ( 甤 → 甤 ) CJK COMPATIBILITY IDEOGRAPH-2F934 → CJK UNIFIED IDEOGRAPH-7524     # 
+
+2F64 ; 7528 ;  ML      #* ( ⽤ → 用 ) KANGXI RADICAL USE → CJK UNIFIED IDEOGRAPH-7528    # 
+
+2F65 ; 7530 ;  ML      #* ( ⽥ → 田 ) KANGXI RADICAL FIELD → CJK UNIFIED IDEOGRAPH-7530  # 
+
+FAA3 ; 753B ;  ML      # ( 画 → 画 ) CJK COMPATIBILITY IDEOGRAPH-FAA3 → CJK UNIFIED IDEOGRAPH-753B       # 
+
+2F936 ;        753E ;  ML      # ( 甾 → 甾 ) CJK COMPATIBILITY IDEOGRAPH-2F936 → CJK UNIFIED IDEOGRAPH-753E     # 
+
+F9CD ; 7559 ;  ML      # ( 留 → 留 ) CJK COMPATIBILITY IDEOGRAPH-F9CD → CJK UNIFIED IDEOGRAPH-7559       # 
+
+F976 ; 7565 ;  ML      # ( 略 → 略 ) CJK COMPATIBILITY IDEOGRAPH-F976 → CJK UNIFIED IDEOGRAPH-7565       # 
+
+F962 ; 7570 ;  ML      # ( 異 → 異 ) CJK COMPATIBILITY IDEOGRAPH-F962 → CJK UNIFIED IDEOGRAPH-7570       # 
+2F938 ;        7570 ;  ML      # ( 異 → 異 ) CJK COMPATIBILITY IDEOGRAPH-2F938 → CJK UNIFIED IDEOGRAPH-7570     # 
+
+2F66 ; 758B ;  ML      #* ( ⽦ → 疋 ) KANGXI RADICAL BOLT OF CLOTH → CJK UNIFIED IDEOGRAPH-758B  # 
+
+2F67 ; 7592 ;  ML      #* ( ⽧ → 疒 ) KANGXI RADICAL SICKNESS → CJK UNIFIED IDEOGRAPH-7592       # 
+
+F9E5 ; 75E2 ;  ML      # ( 痢 → 痢 ) CJK COMPATIBILITY IDEOGRAPH-F9E5 → CJK UNIFIED IDEOGRAPH-75E2       # 
+
+2F93A ;        7610 ;  ML      # ( 瘐 → 瘐 ) CJK COMPATIBILITY IDEOGRAPH-2F93A → CJK UNIFIED IDEOGRAPH-7610     # 
+
+FAA4 ; 761D ;  ML      # ( 瘝 → 瘝 ) CJK COMPATIBILITY IDEOGRAPH-FAA4 → CJK UNIFIED IDEOGRAPH-761D       # 
+
+FAA5 ; 761F ;  ML      # ( 瘟 → 瘟 ) CJK COMPATIBILITY IDEOGRAPH-FAA5 → CJK UNIFIED IDEOGRAPH-761F       # 
+
+F9C1 ; 7642 ;  ML      # ( 療 → 療 ) CJK COMPATIBILITY IDEOGRAPH-F9C1 → CJK UNIFIED IDEOGRAPH-7642       # 
+
+F90E ; 7669 ;  ML      # ( 癩 → 癩 ) CJK COMPATIBILITY IDEOGRAPH-F90E → CJK UNIFIED IDEOGRAPH-7669       # 
+
+2F68 ; 7676 ;  ML      #* ( ⽨ → 癶 ) KANGXI RADICAL DOTTED TENT → CJK UNIFIED IDEOGRAPH-7676    # 
+
+2F69 ; 767D ;  ML      #* ( ⽩ → 白 ) KANGXI RADICAL WHITE → CJK UNIFIED IDEOGRAPH-767D  # 
+
+2F6A ; 76AE ;  ML      #* ( ⽪ → 皮 ) KANGXI RADICAL SKIN → CJK UNIFIED IDEOGRAPH-76AE   # 
+
+2F6B ; 76BF ;  ML      #* ( ⽫ → 皿 ) KANGXI RADICAL DISH → CJK UNIFIED IDEOGRAPH-76BF   # 
+
+FA17 ; 76CA ;  ML      # ( 益 → 益 ) CJK COMPATIBILITY IDEOGRAPH-FA17 → CJK UNIFIED IDEOGRAPH-76CA       # 
+FAA6 ; 76CA ;  ML      # ( 益 → 益 ) CJK COMPATIBILITY IDEOGRAPH-FAA6 → CJK UNIFIED IDEOGRAPH-76CA       # 
+
+FAA7 ; 76DB ;  ML      # ( 盛 → 盛 ) CJK COMPATIBILITY IDEOGRAPH-FAA7 → CJK UNIFIED IDEOGRAPH-76DB       # 
+
+F933 ; 76E7 ;  ML      # ( 盧 → 盧 ) CJK COMPATIBILITY IDEOGRAPH-F933 → CJK UNIFIED IDEOGRAPH-76E7       # 
+
+2F6C ; 76EE ;  ML      #* ( ⽬ → 目 ) KANGXI RADICAL EYE → CJK UNIFIED IDEOGRAPH-76EE    # 
+
+FAA8 ; 76F4 ;  ML      # ( 直 → 直 ) CJK COMPATIBILITY IDEOGRAPH-FAA8 → CJK UNIFIED IDEOGRAPH-76F4       # 
+2F940 ;        76F4 ;  ML      # ( 直 → 直 ) CJK COMPATIBILITY IDEOGRAPH-2F940 → CJK UNIFIED IDEOGRAPH-76F4     # 
+
+F96D ; 7701 ;  ML      # ( 省 → 省 ) CJK COMPATIBILITY IDEOGRAPH-F96D → CJK UNIFIED IDEOGRAPH-7701       # 
+
+2F945 ;        771E ;  ML      # ( 眞 → 眞 ) CJK COMPATIBILITY IDEOGRAPH-2F945 → CJK UNIFIED IDEOGRAPH-771E     # 
+
+2F946 ;        771F ;  ML      # ( 真 → 真 ) CJK COMPATIBILITY IDEOGRAPH-2F946 → CJK UNIFIED IDEOGRAPH-771F     # 
+2F947 ;        771F ;  ML      # ( 真 → 真 ) CJK COMPATIBILITY IDEOGRAPH-2F947 → CJK UNIFIED IDEOGRAPH-771F     # 
+
+FAAA ; 7740 ;  ML      # ( 着 → 着 ) CJK COMPATIBILITY IDEOGRAPH-FAAA → CJK UNIFIED IDEOGRAPH-7740       # 
+
+FAA9 ; 774A ;  ML      # ( 睊 → 睊 ) CJK COMPATIBILITY IDEOGRAPH-FAA9 → CJK UNIFIED IDEOGRAPH-774A       # 
+2F948 ;        774A ;  ML      # ( 睊 → 睊 ) CJK COMPATIBILITY IDEOGRAPH-2F948 → CJK UNIFIED IDEOGRAPH-774A     # 
+
+2F94A ;        778B ;  ML      # ( 瞋 → 瞋 ) CJK COMPATIBILITY IDEOGRAPH-2F94A → CJK UNIFIED IDEOGRAPH-778B     # 
+
+FA9D ; 77A7 ;  ML      # ( 瞧 → 瞧 ) CJK COMPATIBILITY IDEOGRAPH-FA9D → CJK UNIFIED IDEOGRAPH-77A7       # 
+
+2F6D ; 77DB ;  ML      #* ( ⽭ → 矛 ) KANGXI RADICAL SPEAR → CJK UNIFIED IDEOGRAPH-77DB  # 
+
+2F6E ; 77E2 ;  ML      #* ( ⽮ → 矢 ) KANGXI RADICAL ARROW → CJK UNIFIED IDEOGRAPH-77E2  # 
+
+2F6F ; 77F3 ;  ML      #* ( ⽯ → 石 ) KANGXI RADICAL STONE → CJK UNIFIED IDEOGRAPH-77F3  # 
+
+784F ; 7814 ;  ML      # ( 硏 → 研 ) CJK UNIFIED IDEOGRAPH-784F → CJK UNIFIED IDEOGRAPH-7814     # 
+
+2F94E ;        784E ;  ML      # ( 硎 → 硎 ) CJK COMPATIBILITY IDEOGRAPH-2F94E → CJK UNIFIED IDEOGRAPH-784E     # 
+
+F9CE ; 786B ;  ML      # ( 硫 → 硫 ) CJK COMPATIBILITY IDEOGRAPH-F9CE → CJK UNIFIED IDEOGRAPH-786B       # 
+
+F93B ; 788C ;  ML      # ( 碌 → 碌 ) CJK COMPATIBILITY IDEOGRAPH-F93B → CJK UNIFIED IDEOGRAPH-788C       # 
+2F94F ;        788C ;  ML      # ( 碌 → 碌 ) CJK COMPATIBILITY IDEOGRAPH-2F94F → CJK UNIFIED IDEOGRAPH-788C     # 
+
+FA4B ; 7891 ;  ML      # ( 碑 → 碑 ) CJK COMPATIBILITY IDEOGRAPH-FA4B → CJK UNIFIED IDEOGRAPH-7891       # 
+
+F947 ; 78CA ;  ML      # ( 磊 → 磊 ) CJK COMPATIBILITY IDEOGRAPH-F947 → CJK UNIFIED IDEOGRAPH-78CA       # 
+
+FAAB ; 78CC ;  ML      # ( 磌 → 磌 ) CJK COMPATIBILITY IDEOGRAPH-FAAB → CJK UNIFIED IDEOGRAPH-78CC       # 
+2F950 ;        78CC ;  ML      # ( 磌 → 磌 ) CJK COMPATIBILITY IDEOGRAPH-2F950 → CJK UNIFIED IDEOGRAPH-78CC     # 
+
+F964 ; 78FB ;  ML      # ( 磻 → 磻 ) CJK COMPATIBILITY IDEOGRAPH-F964 → CJK UNIFIED IDEOGRAPH-78FB       # 
+
+F985 ; 792A ;  ML      # ( 礪 → 礪 ) CJK COMPATIBILITY IDEOGRAPH-F985 → CJK UNIFIED IDEOGRAPH-792A       # 
+
+2F70 ; 793A ;  ML      #* ( ⽰ → 示 ) KANGXI RADICAL SPIRIT → CJK UNIFIED IDEOGRAPH-793A # 
+
+2EAD ; 793B ;  ML      #* ( ⺭ → 礻 ) CJK RADICAL SPIRIT TWO → CJK UNIFIED IDEOGRAPH-793B        # 
+
+FA18 ; 793C ;  ML      # ( 礼 → 礼 ) CJK COMPATIBILITY IDEOGRAPH-FA18 → CJK UNIFIED IDEOGRAPH-793C       # 
+
+FA4C ; 793E ;  ML      # ( 社 → 社 ) CJK COMPATIBILITY IDEOGRAPH-FA4C → CJK UNIFIED IDEOGRAPH-793E       # 
+
+FA4E ; 7948 ;  ML      # ( 祈 → 祈 ) CJK COMPATIBILITY IDEOGRAPH-FA4E → CJK UNIFIED IDEOGRAPH-7948       # 
+
+FA4D ; 7949 ;  ML      # ( 祉 → 祉 ) CJK COMPATIBILITY IDEOGRAPH-FA4D → CJK UNIFIED IDEOGRAPH-7949       # 
+
+FA4F ; 7950 ;  ML      # ( 祐 → 祐 ) CJK COMPATIBILITY IDEOGRAPH-FA4F → CJK UNIFIED IDEOGRAPH-7950       # 
+
+FA50 ; 7956 ;  ML      # ( 祖 → 祖 ) CJK COMPATIBILITY IDEOGRAPH-FA50 → CJK UNIFIED IDEOGRAPH-7956       # 
+2F953 ;        7956 ;  ML      # ( 祖 → 祖 ) CJK COMPATIBILITY IDEOGRAPH-2F953 → CJK UNIFIED IDEOGRAPH-7956     # 
+
+FA51 ; 795D ;  ML      # ( 祝 → 祝 ) CJK COMPATIBILITY IDEOGRAPH-FA51 → CJK UNIFIED IDEOGRAPH-795D       # 
+
+FA19 ; 795E ;  ML      # ( 神 → 神 ) CJK COMPATIBILITY IDEOGRAPH-FA19 → CJK UNIFIED IDEOGRAPH-795E       # 
+
+FA1A ; 7965 ;  ML      # ( 祥 → 祥 ) CJK COMPATIBILITY IDEOGRAPH-FA1A → CJK UNIFIED IDEOGRAPH-7965       # 
+
+F93C ; 797F ;  ML      # ( 祿 → 祿 ) CJK COMPATIBILITY IDEOGRAPH-F93C → CJK UNIFIED IDEOGRAPH-797F       # 
+
+FA52 ; 798D ;  ML      # ( 禍 → 禍 ) CJK COMPATIBILITY IDEOGRAPH-FA52 → CJK UNIFIED IDEOGRAPH-798D       # 
+
+FA53 ; 798E ;  ML      # ( 禎 → 禎 ) CJK COMPATIBILITY IDEOGRAPH-FA53 → CJK UNIFIED IDEOGRAPH-798E       # 
+
+FA1B ; 798F ;  ML      # ( 福 → 福 ) CJK COMPATIBILITY IDEOGRAPH-FA1B → CJK UNIFIED IDEOGRAPH-798F       # 
+2F956 ;        798F ;  ML      # ( 福 → 福 ) CJK COMPATIBILITY IDEOGRAPH-2F956 → CJK UNIFIED IDEOGRAPH-798F     # 
+
+F9B6 ; 79AE ;  ML      # ( 禮 → 禮 ) CJK COMPATIBILITY IDEOGRAPH-F9B6 → CJK UNIFIED IDEOGRAPH-79AE       # 
+
+2F71 ; 79B8 ;  ML      #* ( ⽱ → 禸 ) KANGXI RADICAL TRACK → CJK UNIFIED IDEOGRAPH-79B8  # 
+
+2F72 ; 79BE ;  ML      #* ( ⽲ → 禾 ) KANGXI RADICAL GRAIN → CJK UNIFIED IDEOGRAPH-79BE  # 
+
+F995 ; 79CA ;  ML      # ( 秊 → 秊 ) CJK COMPATIBILITY IDEOGRAPH-F995 → CJK UNIFIED IDEOGRAPH-79CA       # 
+
+2F957 ;        79EB ;  ML      # ( 秫 → 秫 ) CJK COMPATIBILITY IDEOGRAPH-2F957 → CJK UNIFIED IDEOGRAPH-79EB     # 
+
+F956 ; 7A1C ;  ML      # ( 稜 → 稜 ) CJK COMPATIBILITY IDEOGRAPH-F956 → CJK UNIFIED IDEOGRAPH-7A1C       # 
+
+FA54 ; 7A40 ;  ML      # ( 穀 → 穀 ) CJK COMPATIBILITY IDEOGRAPH-FA54 → CJK UNIFIED IDEOGRAPH-7A40       # 
+2F959 ;        7A40 ;  ML      # ( 穀 → 穀 ) CJK COMPATIBILITY IDEOGRAPH-2F959 → CJK UNIFIED IDEOGRAPH-7A40     # 
+
+2F95A ;        7A4A ;  ML      # ( 穊 → 穊 ) CJK COMPATIBILITY IDEOGRAPH-2F95A → CJK UNIFIED IDEOGRAPH-7A4A     # 
+
+2F95B ;        7A4F ;  ML      # ( 穏 → 穏 ) CJK COMPATIBILITY IDEOGRAPH-2F95B → CJK UNIFIED IDEOGRAPH-7A4F     # 
+
+2F73 ; 7A74 ;  ML      #* ( ⽳ → 穴 ) KANGXI RADICAL CAVE → CJK UNIFIED IDEOGRAPH-7A74   # 
+
+FA55 ; 7A81 ;  ML      # ( 突 → 突 ) CJK COMPATIBILITY IDEOGRAPH-FA55 → CJK UNIFIED IDEOGRAPH-7A81       # 
+
+FAAC ; 7AB1 ;  ML      # ( 窱 → 窱 ) CJK COMPATIBILITY IDEOGRAPH-FAAC → CJK UNIFIED IDEOGRAPH-7AB1       # 
+
+F9F7 ; 7ACB ;  ML      # ( 立 → 立 ) CJK COMPATIBILITY IDEOGRAPH-F9F7 → CJK UNIFIED IDEOGRAPH-7ACB       # 
+2F74 ; 7ACB ;  ML      #* ( ⽴ → 立 ) KANGXI RADICAL STAND → CJK UNIFIED IDEOGRAPH-7ACB  # 
+
+2EEF ; 7ADC ;  ML      #* ( ⻯ → 竜 ) CJK RADICAL J-SIMPLIFIED DRAGON → CJK UNIFIED IDEOGRAPH-7ADC       # 
+
+2F95F ;        7AEE ;  ML      # ( 竮 → 竮 ) CJK COMPATIBILITY IDEOGRAPH-2F95F → CJK UNIFIED IDEOGRAPH-7AEE     # 
+
+2F75 ; 7AF9 ;  ML      #* ( ⽵ → 竹 ) KANGXI RADICAL BAMBOO → CJK UNIFIED IDEOGRAPH-7AF9 # 
+
+F9F8 ; 7B20 ;  ML      # ( 笠 → 笠 ) CJK COMPATIBILITY IDEOGRAPH-F9F8 → CJK UNIFIED IDEOGRAPH-7B20       # 
+
+FA56 ; 7BC0 ;  ML      # ( 節 → 節 ) CJK COMPATIBILITY IDEOGRAPH-FA56 → CJK UNIFIED IDEOGRAPH-7BC0       # 
+FAAD ; 7BC0 ;  ML      # ( 節 → 節 ) CJK COMPATIBILITY IDEOGRAPH-FAAD → CJK UNIFIED IDEOGRAPH-7BC0       # 
+
+2F962 ;        7BC6 ;  ML      # ( 篆 → 篆 ) CJK COMPATIBILITY IDEOGRAPH-2F962 → CJK UNIFIED IDEOGRAPH-7BC6     # 
+
+2F963 ;        7BC9 ;  ML      # ( 築 → 築 ) CJK COMPATIBILITY IDEOGRAPH-2F963 → CJK UNIFIED IDEOGRAPH-7BC9     # 
+
+F9A6 ; 7C3E ;  ML      # ( 簾 → 簾 ) CJK COMPATIBILITY IDEOGRAPH-F9A6 → CJK UNIFIED IDEOGRAPH-7C3E       # 
+
+F944 ; 7C60 ;  ML      # ( 籠 → 籠 ) CJK COMPATIBILITY IDEOGRAPH-F944 → CJK UNIFIED IDEOGRAPH-7C60       # 
+
+2F76 ; 7C73 ;  ML      #* ( ⽶ → 米 ) KANGXI RADICAL RICE → CJK UNIFIED IDEOGRAPH-7C73   # 
+
+FAAE ; 7C7B ;  ML      # ( 类 → 类 ) CJK COMPATIBILITY IDEOGRAPH-FAAE → CJK UNIFIED IDEOGRAPH-7C7B       # 
+
+F9F9 ; 7C92 ;  ML      # ( 粒 → 粒 ) CJK COMPATIBILITY IDEOGRAPH-F9F9 → CJK UNIFIED IDEOGRAPH-7C92       # 
+
+FA1D ; 7CBE ;  ML      # ( 精 → 精 ) CJK COMPATIBILITY IDEOGRAPH-FA1D → CJK UNIFIED IDEOGRAPH-7CBE       # 
+
+2F966 ;        7CD2 ;  ML      # ( 糒 → 糒 ) CJK COMPATIBILITY IDEOGRAPH-2F966 → CJK UNIFIED IDEOGRAPH-7CD2     # 
+
+FA03 ; 7CD6 ;  ML      # ( 糖 → 糖 ) CJK COMPATIBILITY IDEOGRAPH-FA03 → CJK UNIFIED IDEOGRAPH-7CD6       # 
+
+2F969 ;        7CE3 ;  ML      # ( 糣 → 糣 ) CJK COMPATIBILITY IDEOGRAPH-2F969 → CJK UNIFIED IDEOGRAPH-7CE3     # 
+
+F97B ; 7CE7 ;  ML      # ( 糧 → 糧 ) CJK COMPATIBILITY IDEOGRAPH-F97B → CJK UNIFIED IDEOGRAPH-7CE7       # 
+
+2F968 ;        7CE8 ;  ML      # ( 糨 → 糨 ) CJK COMPATIBILITY IDEOGRAPH-2F968 → CJK UNIFIED IDEOGRAPH-7CE8     # 
+
+2F77 ; 7CF8 ;  ML      #* ( ⽷ → 糸 ) KANGXI RADICAL SILK → CJK UNIFIED IDEOGRAPH-7CF8   # 
+
+2EAF ; 7CF9 ;  ML      #* ( ⺯ → 糹 ) CJK RADICAL SILK → CJK UNIFIED IDEOGRAPH-7CF9      # 
+
+2F96A ;        7D00 ;  ML      # ( 紀 → 紀 ) CJK COMPATIBILITY IDEOGRAPH-2F96A → CJK UNIFIED IDEOGRAPH-7D00     # 
+
+F9CF ; 7D10 ;  ML      # ( 紐 → 紐 ) CJK COMPATIBILITY IDEOGRAPH-F9CF → CJK UNIFIED IDEOGRAPH-7D10       # 
+
+F96A ; 7D22 ;  ML      # ( 索 → 索 ) CJK COMPATIBILITY IDEOGRAPH-F96A → CJK UNIFIED IDEOGRAPH-7D22       # 
+
+F94F ; 7D2F ;  ML      # ( 累 → 累 ) CJK COMPATIBILITY IDEOGRAPH-F94F → CJK UNIFIED IDEOGRAPH-7D2F       # 
+
+7D76 ; 7D55 ;  ML      # ( 絶 → 絕 ) CJK UNIFIED IDEOGRAPH-7D76 → CJK UNIFIED IDEOGRAPH-7D55     # 
+
+FAAF ; 7D5B ;  ML      # ( 絛 → 絛 ) CJK COMPATIBILITY IDEOGRAPH-FAAF → CJK UNIFIED IDEOGRAPH-7D5B       # 
+
+2F96C ;        7D63 ;  ML      # ( 絣 → 絣 ) CJK COMPATIBILITY IDEOGRAPH-2F96C → CJK UNIFIED IDEOGRAPH-7D63     # 
+
+F93D ; 7DA0 ;  ML      # ( 綠 → 綠 ) CJK COMPATIBILITY IDEOGRAPH-F93D → CJK UNIFIED IDEOGRAPH-7DA0       # 
+
+F957 ; 7DBE ;  ML      # ( 綾 → 綾 ) CJK COMPATIBILITY IDEOGRAPH-F957 → CJK UNIFIED IDEOGRAPH-7DBE       # 
+
+2F96E ;        7DC7 ;  ML      # ( 緇 → 緇 ) CJK COMPATIBILITY IDEOGRAPH-2F96E → CJK UNIFIED IDEOGRAPH-7DC7     # 
+
+F996 ; 7DF4 ;  ML      # ( 練 → 練 ) CJK COMPATIBILITY IDEOGRAPH-F996 → CJK UNIFIED IDEOGRAPH-7DF4       # 
+FA57 ; 7DF4 ;  ML      # ( 練 → 練 ) CJK COMPATIBILITY IDEOGRAPH-FA57 → CJK UNIFIED IDEOGRAPH-7DF4       # 
+FAB0 ; 7DF4 ;  ML      # ( 練 → 練 ) CJK COMPATIBILITY IDEOGRAPH-FAB0 → CJK UNIFIED IDEOGRAPH-7DF4       # 
+
+2F96F ;        7E02 ;  ML      # ( 縂 → 縂 ) CJK COMPATIBILITY IDEOGRAPH-2F96F → CJK UNIFIED IDEOGRAPH-7E02     # 
+
+FA58 ; 7E09 ;  ML      # ( 縉 → 縉 ) CJK COMPATIBILITY IDEOGRAPH-FA58 → CJK UNIFIED IDEOGRAPH-7E09       # 
+
+F950 ; 7E37 ;  ML      # ( 縷 → 縷 ) CJK COMPATIBILITY IDEOGRAPH-F950 → CJK UNIFIED IDEOGRAPH-7E37       # 
+
+FA59 ; 7E41 ;  ML      # ( 繁 → 繁 ) CJK COMPATIBILITY IDEOGRAPH-FA59 → CJK UNIFIED IDEOGRAPH-7E41       # 
+
+2F970 ;        7E45 ;  ML      # ( 繅 → 繅 ) CJK COMPATIBILITY IDEOGRAPH-2F970 → CJK UNIFIED IDEOGRAPH-7E45     # 
+
+2F78 ; 7F36 ;  ML      #* ( ⽸ → 缶 ) KANGXI RADICAL JAR → CJK UNIFIED IDEOGRAPH-7F36    # 
+
+FAB1 ; 7F3E ;  ML      # ( 缾 → 缾 ) CJK COMPATIBILITY IDEOGRAPH-FAB1 → CJK UNIFIED IDEOGRAPH-7F3E       # 
+
+2F79 ; 7F51 ;  ML      #* ( ⽹ → 网 ) KANGXI RADICAL NET → CJK UNIFIED IDEOGRAPH-7F51    # 
+
+2EAB ; 7F52 ;  ML      #* ( ⺫ → 罒 ) CJK RADICAL EYE → CJK UNIFIED IDEOGRAPH-7F52       # 
+2EB2 ; 7F52 ;  ML      #* ( ⺲ → 罒 ) CJK RADICAL NET TWO → CJK UNIFIED IDEOGRAPH-7F52   # 
+
+2EB1 ; 7F53 ;  ML      #* ( ⺱ → 罓 ) CJK RADICAL NET ONE → CJK UNIFIED IDEOGRAPH-7F53   # 
+
+FA5A ; 7F72 ;  ML      # ( 署 → 署 ) CJK COMPATIBILITY IDEOGRAPH-FA5A → CJK UNIFIED IDEOGRAPH-7F72       # 
+
+F9E6 ; 7F79 ;  ML      # ( 罹 → 罹 ) CJK COMPATIBILITY IDEOGRAPH-F9E6 → CJK UNIFIED IDEOGRAPH-7F79       # 
+
+2F976 ;        7F7A ;  ML      # ( 罺 → 罺 ) CJK COMPATIBILITY IDEOGRAPH-2F976 → CJK UNIFIED IDEOGRAPH-7F7A     # 
+
+F90F ; 7F85 ;  ML      # ( 羅 → 羅 ) CJK COMPATIBILITY IDEOGRAPH-F90F → CJK UNIFIED IDEOGRAPH-7F85       # 
+
+2F7A ; 7F8A ;  ML      #* ( ⽺ → 羊 ) KANGXI RADICAL SHEEP → CJK UNIFIED IDEOGRAPH-7F8A  # 
+
+2F978 ;        7F95 ;  ML      # ( 羕 → 羕 ) CJK COMPATIBILITY IDEOGRAPH-2F978 → CJK UNIFIED IDEOGRAPH-7F95     # 
+
+F9AF ; 7F9A ;  ML      # ( 羚 → 羚 ) CJK COMPATIBILITY IDEOGRAPH-F9AF → CJK UNIFIED IDEOGRAPH-7F9A       # 
+
+FA1E ; 7FBD ;  ML      # ( 羽 → 羽 ) CJK COMPATIBILITY IDEOGRAPH-FA1E → CJK UNIFIED IDEOGRAPH-7FBD       # 
+2F7B ; 7FBD ;  ML      #* ( ⽻ → 羽 ) KANGXI RADICAL FEATHER → CJK UNIFIED IDEOGRAPH-7FBD        # 
+
+2F979 ;        7FFA ;  ML      # ( 翺 → 翺 ) CJK COMPATIBILITY IDEOGRAPH-2F979 → CJK UNIFIED IDEOGRAPH-7FFA     # 
+
+F934 ; 8001 ;  ML      # ( 老 → 老 ) CJK COMPATIBILITY IDEOGRAPH-F934 → CJK UNIFIED IDEOGRAPH-8001       # 
+2F7C ; 8001 ;  ML      #* ( ⽼ → 老 ) KANGXI RADICAL OLD → CJK UNIFIED IDEOGRAPH-8001    # 
+
+2EB9 ; 8002 ;  ML      #* ( ⺹ → 耂 ) CJK RADICAL OLD → CJK UNIFIED IDEOGRAPH-8002       # 
+
+FA5B ; 8005 ;  ML      # ( 者 → 者 ) CJK COMPATIBILITY IDEOGRAPH-FA5B → CJK UNIFIED IDEOGRAPH-8005       # 
+FAB2 ; 8005 ;  ML      # ( 者 → 者 ) CJK COMPATIBILITY IDEOGRAPH-FAB2 → CJK UNIFIED IDEOGRAPH-8005       # 
+2F97A ;        8005 ;  ML      # ( 者 → 者 ) CJK COMPATIBILITY IDEOGRAPH-2F97A → CJK UNIFIED IDEOGRAPH-8005     # 
+
+2F7D ; 800C ;  ML      #* ( ⽽ → 而 ) KANGXI RADICAL AND → CJK UNIFIED IDEOGRAPH-800C    # 
+
+2F7E ; 8012 ;  ML      #* ( ⽾ → 耒 ) KANGXI RADICAL PLOW → CJK UNIFIED IDEOGRAPH-8012   # 
+
+2F7F ; 8033 ;  ML      #* ( ⽿ → 耳 ) KANGXI RADICAL EAR → CJK UNIFIED IDEOGRAPH-8033    # 
+
+F9B0 ; 8046 ;  ML      # ( 聆 → 聆 ) CJK COMPATIBILITY IDEOGRAPH-F9B0 → CJK UNIFIED IDEOGRAPH-8046       # 
+
+2F97D ;        8060 ;  ML      # ( 聠 → 聠 ) CJK COMPATIBILITY IDEOGRAPH-2F97D → CJK UNIFIED IDEOGRAPH-8060     # 
+
+F997 ; 806F ;  ML      # ( 聯 → 聯 ) CJK COMPATIBILITY IDEOGRAPH-F997 → CJK UNIFIED IDEOGRAPH-806F       # 
+
+2F97F ;        8070 ;  ML      # ( 聰 → 聰 ) CJK COMPATIBILITY IDEOGRAPH-2F97F → CJK UNIFIED IDEOGRAPH-8070     # 
+
+F945 ; 807E ;  ML      # ( 聾 → 聾 ) CJK COMPATIBILITY IDEOGRAPH-F945 → CJK UNIFIED IDEOGRAPH-807E       # 
+
+2F80 ; 807F ;  ML      #* ( ⾀ → 聿 ) KANGXI RADICAL BRUSH → CJK UNIFIED IDEOGRAPH-807F  # 
+
+2EBA ; 8080 ;  ML      #* ( ⺺ → 肀 ) CJK RADICAL BRUSH ONE → CJK UNIFIED IDEOGRAPH-8080 # 
+
+2F81 ; 8089 ;  ML      #* ( ⾁ → 肉 ) KANGXI RADICAL MEAT → CJK UNIFIED IDEOGRAPH-8089   # 
+
+F953 ; 808B ;  ML      # ( 肋 → 肋 ) CJK COMPATIBILITY IDEOGRAPH-F953 → CJK UNIFIED IDEOGRAPH-808B       # 
+
+2F8D6 ;        80AD ;  ML      # ( 肭 → 肭 ) CJK COMPATIBILITY IDEOGRAPH-2F8D6 → CJK UNIFIED IDEOGRAPH-80AD     # 
+
+2F982 ;        80B2 ;  ML      # ( 育 → 育 ) CJK COMPATIBILITY IDEOGRAPH-2F982 → CJK UNIFIED IDEOGRAPH-80B2     # 
+
+8141 ; 80FC ;  ML      # ( 腁 → 胼 ) CJK UNIFIED IDEOGRAPH-8141 → CJK UNIFIED IDEOGRAPH-80FC     # 
+
+2F983 ;        8103 ;  ML      # ( 脃 → 脃 ) CJK COMPATIBILITY IDEOGRAPH-2F983 → CJK UNIFIED IDEOGRAPH-8103     # 
+
+2F985 ;        813E ;  ML      # ( 脾 → 脾 ) CJK COMPATIBILITY IDEOGRAPH-2F985 → CJK UNIFIED IDEOGRAPH-813E     # 
+
+F926 ; 81D8 ;  ML      # ( 臘 → 臘 ) CJK COMPATIBILITY IDEOGRAPH-F926 → CJK UNIFIED IDEOGRAPH-81D8       # 
+
+2F82 ; 81E3 ;  ML      #* ( ⾂ → 臣 ) KANGXI RADICAL MINISTER → CJK UNIFIED IDEOGRAPH-81E3       # 
+
+F9F6 ; 81E8 ;  ML      # ( 臨 → 臨 ) CJK COMPATIBILITY IDEOGRAPH-F9F6 → CJK UNIFIED IDEOGRAPH-81E8       # 
+
+2F83 ; 81EA ;  ML      #* ( ⾃ → 自 ) KANGXI RADICAL SELF → CJK UNIFIED IDEOGRAPH-81EA   # 
+
+FA5C ; 81ED ;  ML      # ( 臭 → 臭 ) CJK COMPATIBILITY IDEOGRAPH-FA5C → CJK UNIFIED IDEOGRAPH-81ED       # 
+
+2F84 ; 81F3 ;  ML      #* ( ⾄ → 至 ) KANGXI RADICAL ARRIVE → CJK UNIFIED IDEOGRAPH-81F3 # 
+
+2F85 ; 81FC ;  ML      #* ( ⾅ → 臼 ) KANGXI RADICAL MORTAR → CJK UNIFIED IDEOGRAPH-81FC # 
+
+2F893 ;        8201 ;  ML      # ( 舁 → 舁 ) CJK COMPATIBILITY IDEOGRAPH-2F893 → CJK UNIFIED IDEOGRAPH-8201     # 
+2F98B ;        8201 ;  ML      # ( 舁 → 舁 ) CJK COMPATIBILITY IDEOGRAPH-2F98B → CJK UNIFIED IDEOGRAPH-8201     # 
+
+2F98C ;        8204 ;  ML      # ( 舄 → 舄 ) CJK COMPATIBILITY IDEOGRAPH-2F98C → CJK UNIFIED IDEOGRAPH-8204     # 
+
+2F86 ; 820C ;  ML      #* ( ⾆ → 舌 ) KANGXI RADICAL TONGUE → CJK UNIFIED IDEOGRAPH-820C # 
+
+FA6D ; 8218 ;  ML      # ( 舘 → 舘 ) CJK COMPATIBILITY IDEOGRAPH-FA6D → CJK UNIFIED IDEOGRAPH-8218       # 
+
+2F87 ; 821B ;  ML      #* ( ⾇ → 舛 ) KANGXI RADICAL OPPOSE → CJK UNIFIED IDEOGRAPH-821B # 
+
+2F88 ; 821F ;  ML      #* ( ⾈ → 舟 ) KANGXI RADICAL BOAT → CJK UNIFIED IDEOGRAPH-821F   # 
+
+2F89 ; 826E ;  ML      #* ( ⾉ → 艮 ) KANGXI RADICAL STOPPING → CJK UNIFIED IDEOGRAPH-826E       # 
+
+F97C ; 826F ;  ML      # ( 良 → 良 ) CJK COMPATIBILITY IDEOGRAPH-F97C → CJK UNIFIED IDEOGRAPH-826F       # 
+
+2F8A ; 8272 ;  ML      #* ( ⾊ → 色 ) KANGXI RADICAL COLOR → CJK UNIFIED IDEOGRAPH-8272  # 
+
+2F8B ; 8278 ;  ML      #* ( ⾋ → 艸 ) KANGXI RADICAL GRASS → CJK UNIFIED IDEOGRAPH-8278  # 
+
+FA5D ; 8279 ;  ML      # ( 艹 → 艹 ) CJK COMPATIBILITY IDEOGRAPH-FA5D → CJK UNIFIED IDEOGRAPH-8279       # 
+FA5E ; 8279 ;  ML      # ( 艹 → 艹 ) CJK COMPATIBILITY IDEOGRAPH-FA5E → CJK UNIFIED IDEOGRAPH-8279       # 
+2EBE ; 8279 ;  ML      #* ( ⺾ → 艹 ) CJK RADICAL GRASS ONE → CJK UNIFIED IDEOGRAPH-8279 # 
+2EBF ; 8279 ;  ML      #* ( ⺿ → 艹 ) CJK RADICAL GRASS TWO → CJK UNIFIED IDEOGRAPH-8279 # →艹→
+2EC0 ; 8279 ;  ML      #* ( ⻀ → 艹 ) CJK RADICAL GRASS THREE → CJK UNIFIED IDEOGRAPH-8279       # →艹→
+
+2F990 ;        828B ;  ML      # ( 芋 → 芋 ) CJK COMPATIBILITY IDEOGRAPH-2F990 → CJK UNIFIED IDEOGRAPH-828B     # 
+
+2F98F ;        8291 ;  ML      # ( 芑 → 芑 ) CJK COMPATIBILITY IDEOGRAPH-2F98F → CJK UNIFIED IDEOGRAPH-8291     # 
+
+2F991 ;        829D ;  ML      # ( 芝 → 芝 ) CJK COMPATIBILITY IDEOGRAPH-2F991 → CJK UNIFIED IDEOGRAPH-829D     # 
+
+2F993 ;        82B1 ;  ML      # ( 花 → 花 ) CJK COMPATIBILITY IDEOGRAPH-2F993 → CJK UNIFIED IDEOGRAPH-82B1     # 
+
+2F994 ;        82B3 ;  ML      # ( 芳 → 芳 ) CJK COMPATIBILITY IDEOGRAPH-2F994 → CJK UNIFIED IDEOGRAPH-82B3     # 
+
+2F995 ;        82BD ;  ML      # ( 芽 → 芽 ) CJK COMPATIBILITY IDEOGRAPH-2F995 → CJK UNIFIED IDEOGRAPH-82BD     # 
+
+F974 ; 82E5 ;  ML      # ( 若 → 若 ) CJK COMPATIBILITY IDEOGRAPH-F974 → CJK UNIFIED IDEOGRAPH-82E5       # 
+2F998 ;        82E5 ;  ML      # ( 若 → 若 ) CJK COMPATIBILITY IDEOGRAPH-2F998 → CJK UNIFIED IDEOGRAPH-82E5     # 
+
+2F996 ;        82E6 ;  ML      # ( 苦 → 苦 ) CJK COMPATIBILITY IDEOGRAPH-2F996 → CJK UNIFIED IDEOGRAPH-82E6     # 
+
+2F999 ;        831D ;  ML      # ( 茝 → 茝 ) CJK COMPATIBILITY IDEOGRAPH-2F999 → CJK UNIFIED IDEOGRAPH-831D     # 
+
+2F99C ;        8323 ;  ML      # ( 茣 → 茣 ) CJK COMPATIBILITY IDEOGRAPH-2F99C → CJK UNIFIED IDEOGRAPH-8323     # 
+
+F9FE ; 8336 ;  ML      # ( 茶 → 茶 ) CJK COMPATIBILITY IDEOGRAPH-F9FE → CJK UNIFIED IDEOGRAPH-8336       # 
+
+FAB3 ; 8352 ;  ML      # ( 荒 → 荒 ) CJK COMPATIBILITY IDEOGRAPH-FAB3 → CJK UNIFIED IDEOGRAPH-8352       # 
+
+2F9A0 ;        8353 ;  ML      # ( 荓 → 荓 ) CJK COMPATIBILITY IDEOGRAPH-2F9A0 → CJK UNIFIED IDEOGRAPH-8353     # 
+
+2F99A ;        8363 ;  ML      # ( 荣 → 荣 ) CJK COMPATIBILITY IDEOGRAPH-2F99A → CJK UNIFIED IDEOGRAPH-8363     # 
+
+2F99B ;        83AD ;  ML      # ( 莭 → 莭 ) CJK COMPATIBILITY IDEOGRAPH-2F99B → CJK UNIFIED IDEOGRAPH-83AD     # 
+
+2F99D ;        83BD ;  ML      # ( 莽 → 莽 ) CJK COMPATIBILITY IDEOGRAPH-2F99D → CJK UNIFIED IDEOGRAPH-83BD     # 
+
+F93E ; 83C9 ;  ML      # ( 菉 → 菉 ) CJK COMPATIBILITY IDEOGRAPH-F93E → CJK UNIFIED IDEOGRAPH-83C9       # 
+
+2F9A1 ;        83CA ;  ML      # ( 菊 → 菊 ) CJK COMPATIBILITY IDEOGRAPH-2F9A1 → CJK UNIFIED IDEOGRAPH-83CA     # 
+
+2F9A2 ;        83CC ;  ML      # ( 菌 → 菌 ) CJK COMPATIBILITY IDEOGRAPH-2F9A2 → CJK UNIFIED IDEOGRAPH-83CC     # 
+
+2F9A3 ;        83DC ;  ML      # ( 菜 → 菜 ) CJK COMPATIBILITY IDEOGRAPH-2F9A3 → CJK UNIFIED IDEOGRAPH-83DC     # 
+
+2F99E ;        83E7 ;  ML      # ( 菧 → 菧 ) CJK COMPATIBILITY IDEOGRAPH-2F99E → CJK UNIFIED IDEOGRAPH-83E7     # 
+
+FAB4 ; 83EF ;  ML      # ( 華 → 華 ) CJK COMPATIBILITY IDEOGRAPH-FAB4 → CJK UNIFIED IDEOGRAPH-83EF       # 
+
+F958 ; 83F1 ;  ML      # ( 菱 → 菱 ) CJK COMPATIBILITY IDEOGRAPH-F958 → CJK UNIFIED IDEOGRAPH-83F1       # 
+
+F918 ; 843D ;  ML      # ( 落 → 落 ) CJK COMPATIBILITY IDEOGRAPH-F918 → CJK UNIFIED IDEOGRAPH-843D       # 
+
+F96E ; 8449 ;  ML      # ( 葉 → 葉 ) CJK COMPATIBILITY IDEOGRAPH-F96E → CJK UNIFIED IDEOGRAPH-8449       # 
+
+FA5F ; 8457 ;  ML      # ( 著 → 著 ) CJK COMPATIBILITY IDEOGRAPH-FA5F → CJK UNIFIED IDEOGRAPH-8457       # 
+2F99F ;        8457 ;  ML      # ( 著 → 著 ) CJK COMPATIBILITY IDEOGRAPH-2F99F → CJK UNIFIED IDEOGRAPH-8457     # 
+
+853F ; 848D ;  ML      # ( 蔿 → 蒍 ) CJK UNIFIED IDEOGRAPH-853F → CJK UNIFIED IDEOGRAPH-848D     # 
+
+F999 ; 84EE ;  ML      # ( 蓮 → 蓮 ) CJK COMPATIBILITY IDEOGRAPH-F999 → CJK UNIFIED IDEOGRAPH-84EE       # 
+
+2F9A8 ;        84F1 ;  ML      # ( 蓱 → 蓱 ) CJK COMPATIBILITY IDEOGRAPH-2F9A8 → CJK UNIFIED IDEOGRAPH-84F1     # 
+
+2F9A9 ;        84F3 ;  ML      # ( 蓳 → 蓳 ) CJK COMPATIBILITY IDEOGRAPH-2F9A9 → CJK UNIFIED IDEOGRAPH-84F3     # 
+
+F9C2 ; 84FC ;  ML      # ( 蓼 → 蓼 ) CJK COMPATIBILITY IDEOGRAPH-F9C2 → CJK UNIFIED IDEOGRAPH-84FC       # 
+
+2F9AA ;        8516 ;  ML      # ( 蔖 → 蔖 ) CJK COMPATIBILITY IDEOGRAPH-2F9AA → CJK UNIFIED IDEOGRAPH-8516     # 
+
+2F9AC ;        8564 ;  ML      # ( 蕤 → 蕤 ) CJK COMPATIBILITY IDEOGRAPH-2F9AC → CJK UNIFIED IDEOGRAPH-8564     # 
+
+F923 ; 85CD ;  ML      # ( 藍 → 藍 ) CJK COMPATIBILITY IDEOGRAPH-F923 → CJK UNIFIED IDEOGRAPH-85CD       # 
+
+F9F0 ; 85FA ;  ML      # ( 藺 → 藺 ) CJK COMPATIBILITY IDEOGRAPH-F9F0 → CJK UNIFIED IDEOGRAPH-85FA       # 
+
+F935 ; 8606 ;  ML      # ( 蘆 → 蘆 ) CJK COMPATIBILITY IDEOGRAPH-F935 → CJK UNIFIED IDEOGRAPH-8606       # 
+
+FA20 ; 8612 ;  ML      # ( 蘒 → 蘒 ) CJK COMPATIBILITY IDEOGRAPH-FA20 → CJK UNIFIED IDEOGRAPH-8612       # 
+
+F91F ; 862D ;  ML      # ( 蘭 → 蘭 ) CJK COMPATIBILITY IDEOGRAPH-F91F → CJK UNIFIED IDEOGRAPH-862D       # 
+
+8641 ; 8637 ;  ML      # ( 虁 → 蘷 ) CJK UNIFIED IDEOGRAPH-8641 → CJK UNIFIED IDEOGRAPH-8637     # 
+
+F910 ; 863F ;  ML      # ( 蘿 → 蘿 ) CJK COMPATIBILITY IDEOGRAPH-F910 → CJK UNIFIED IDEOGRAPH-863F       # 
+
+2F8C ; 864D ;  ML      #* ( ⾌ → 虍 ) KANGXI RADICAL TIGER → CJK UNIFIED IDEOGRAPH-864D  # 
+
+2EC1 ; 864E ;  ML      #* ( ⻁ → 虎 ) CJK RADICAL TIGER → CJK UNIFIED IDEOGRAPH-864E     # 
+
+2F9B3 ;        8650 ;  ML      # ( 虐 → 虐 ) CJK COMPATIBILITY IDEOGRAPH-2F9B3 → CJK UNIFIED IDEOGRAPH-8650     # 
+
+F936 ; 865C ;  ML      # ( 虜 → 虜 ) CJK COMPATIBILITY IDEOGRAPH-F936 → CJK UNIFIED IDEOGRAPH-865C       # 
+2F9B4 ;        865C ;  ML      # ( 虜 → 虜 ) CJK COMPATIBILITY IDEOGRAPH-2F9B4 → CJK UNIFIED IDEOGRAPH-865C     # 
+
+2F9B5 ;        8667 ;  ML      # ( 虧 → 虧 ) CJK COMPATIBILITY IDEOGRAPH-2F9B5 → CJK UNIFIED IDEOGRAPH-8667     # 
+
+2F9B6 ;        8669 ;  ML      # ( 虩 → 虩 ) CJK COMPATIBILITY IDEOGRAPH-2F9B6 → CJK UNIFIED IDEOGRAPH-8669     # 
+
+2F8D ; 866B ;  ML      #* ( ⾍ → 虫 ) KANGXI RADICAL INSECT → CJK UNIFIED IDEOGRAPH-866B # 
+
+2F9B8 ;        8688 ;  ML      # ( 蚈 → 蚈 ) CJK COMPATIBILITY IDEOGRAPH-2F9B8 → CJK UNIFIED IDEOGRAPH-8688     # 
+
+2F9B7 ;        86A9 ;  ML      # ( 蚩 → 蚩 ) CJK COMPATIBILITY IDEOGRAPH-2F9B7 → CJK UNIFIED IDEOGRAPH-86A9     # 
+
+2F9BA ;        86E2 ;  ML      # ( 蛢 → 蛢 ) CJK COMPATIBILITY IDEOGRAPH-2F9BA → CJK UNIFIED IDEOGRAPH-86E2     # 
+
+2F9B9 ;        870E ;  ML      # ( 蜎 → 蜎 ) CJK COMPATIBILITY IDEOGRAPH-2F9B9 → CJK UNIFIED IDEOGRAPH-870E     # 
+
+2F9BC ;        8728 ;  ML      # ( 蜨 → 蜨 ) CJK COMPATIBILITY IDEOGRAPH-2F9BC → CJK UNIFIED IDEOGRAPH-8728     # 
+
+2F9BD ;        876B ;  ML      # ( 蝫 → 蝫 ) CJK COMPATIBILITY IDEOGRAPH-2F9BD → CJK UNIFIED IDEOGRAPH-876B     # 
+
+FAB5 ; 8779 ;  ML      # ( 蝹 → 蝹 ) CJK COMPATIBILITY IDEOGRAPH-FAB5 → CJK UNIFIED IDEOGRAPH-8779       # 
+2F9BB ;        8779 ;  ML      # ( 蝹 → 蝹 ) CJK COMPATIBILITY IDEOGRAPH-2F9BB → CJK UNIFIED IDEOGRAPH-8779     # 
+
+2F9BE ;        8786 ;  ML      # ( 螆 → 螆 ) CJK COMPATIBILITY IDEOGRAPH-2F9BE → CJK UNIFIED IDEOGRAPH-8786     # 
+
+F911 ; 87BA ;  ML      # ( 螺 → 螺 ) CJK COMPATIBILITY IDEOGRAPH-F911 → CJK UNIFIED IDEOGRAPH-87BA       # 
+
+2F9C0 ;        87E1 ;  ML      # ( 蟡 → 蟡 ) CJK COMPATIBILITY IDEOGRAPH-2F9C0 → CJK UNIFIED IDEOGRAPH-87E1     # 
+
+2F9C1 ;        8801 ;  ML      # ( 蠁 → 蠁 ) CJK COMPATIBILITY IDEOGRAPH-2F9C1 → CJK UNIFIED IDEOGRAPH-8801     # 
+
+F927 ; 881F ;  ML      # ( 蠟 → 蠟 ) CJK COMPATIBILITY IDEOGRAPH-F927 → CJK UNIFIED IDEOGRAPH-881F       # 
+
+2F8E ; 8840 ;  ML      #* ( ⾎ → 血 ) KANGXI RADICAL BLOOD → CJK UNIFIED IDEOGRAPH-8840  # 
+
+FA08 ; 884C ;  ML      # ( 行 → 行 ) CJK COMPATIBILITY IDEOGRAPH-FA08 → CJK UNIFIED IDEOGRAPH-884C       # 
+2F8F ; 884C ;  ML      #* ( ⾏ → 行 ) KANGXI RADICAL WALK ENCLOSURE → CJK UNIFIED IDEOGRAPH-884C # 
+
+2F9C3 ;        8860 ;  ML      # ( 衠 → 衠 ) CJK COMPATIBILITY IDEOGRAPH-2F9C3 → CJK UNIFIED IDEOGRAPH-8860     # 
+
+2F9C4 ;        8863 ;  ML      # ( 衣 → 衣 ) CJK COMPATIBILITY IDEOGRAPH-2F9C4 → CJK UNIFIED IDEOGRAPH-8863     # 
+2F90 ; 8863 ;  ML      #* ( ⾐ → 衣 ) KANGXI RADICAL CLOTHES → CJK UNIFIED IDEOGRAPH-8863        # 
+
+2EC2 ; 8864 ;  ML      #* ( ⻂ → 衤 ) CJK RADICAL CLOTHES → CJK UNIFIED IDEOGRAPH-8864   # 
+
+F9A0 ; 88C2 ;  ML      # ( 裂 → 裂 ) CJK COMPATIBILITY IDEOGRAPH-F9A0 → CJK UNIFIED IDEOGRAPH-88C2       # 
+
+F9E7 ; 88CF ;  ML      # ( 裏 → 裏 ) CJK COMPATIBILITY IDEOGRAPH-F9E7 → CJK UNIFIED IDEOGRAPH-88CF       # 
+
+2F9C6 ;        88D7 ;  ML      # ( 裗 → 裗 ) CJK COMPATIBILITY IDEOGRAPH-2F9C6 → CJK UNIFIED IDEOGRAPH-88D7     # 
+
+2F9C7 ;        88DE ;  ML      # ( 裞 → 裞 ) CJK COMPATIBILITY IDEOGRAPH-2F9C7 → CJK UNIFIED IDEOGRAPH-88DE     # 
+
+F9E8 ; 88E1 ;  ML      # ( 裡 → 裡 ) CJK COMPATIBILITY IDEOGRAPH-F9E8 → CJK UNIFIED IDEOGRAPH-88E1       # 
+
+F912 ; 88F8 ;  ML      # ( 裸 → 裸 ) CJK COMPATIBILITY IDEOGRAPH-F912 → CJK UNIFIED IDEOGRAPH-88F8       # 
+
+2F9C9 ;        88FA ;  ML      # ( 裺 → 裺 ) CJK COMPATIBILITY IDEOGRAPH-2F9C9 → CJK UNIFIED IDEOGRAPH-88FA     # 
+
+FA60 ; 8910 ;  ML      # ( 褐 → 褐 ) CJK COMPATIBILITY IDEOGRAPH-FA60 → CJK UNIFIED IDEOGRAPH-8910       # 
+
+FAB6 ; 8941 ;  ML      # ( 襁 → 襁 ) CJK COMPATIBILITY IDEOGRAPH-FAB6 → CJK UNIFIED IDEOGRAPH-8941       # 
+
+F924 ; 8964 ;  ML      # ( 襤 → 襤 ) CJK COMPATIBILITY IDEOGRAPH-F924 → CJK UNIFIED IDEOGRAPH-8964       # 
+
+2F91 ; 897E ;  ML      #* ( ⾑ → 襾 ) KANGXI RADICAL WEST → CJK UNIFIED IDEOGRAPH-897E   # 
+
+2EC4 ; 897F ;  ML      #* ( ⻄ → 西 ) CJK RADICAL WEST TWO → CJK UNIFIED IDEOGRAPH-897F  # 
+
+2EC3 ; 8980 ;  ML      #* ( ⻃ → 覀 ) CJK RADICAL WEST ONE → CJK UNIFIED IDEOGRAPH-8980  # 
+
+FAB7 ; 8986 ;  ML      # ( 覆 → 覆 ) CJK COMPATIBILITY IDEOGRAPH-FAB7 → CJK UNIFIED IDEOGRAPH-8986       # 
+
+FA0A ; 898B ;  ML      # ( 見 → 見 ) CJK COMPATIBILITY IDEOGRAPH-FA0A → CJK UNIFIED IDEOGRAPH-898B       # 
+2F92 ; 898B ;  ML      #* ( ⾒ → 見 ) KANGXI RADICAL SEE → CJK UNIFIED IDEOGRAPH-898B    # 
+
+FA61 ; 8996 ;  ML      # ( 視 → 視 ) CJK COMPATIBILITY IDEOGRAPH-FA61 → CJK UNIFIED IDEOGRAPH-8996       # 
+FAB8 ; 8996 ;  ML      # ( 視 → 視 ) CJK COMPATIBILITY IDEOGRAPH-FAB8 → CJK UNIFIED IDEOGRAPH-8996       # 
+
+2EC5 ; 89C1 ;  ML      #* ( ⻅ → 见 ) CJK RADICAL C-SIMPLIFIED SEE → CJK UNIFIED IDEOGRAPH-89C1  # 
+
+2F93 ; 89D2 ;  ML      #* ( ⾓ → 角 ) KANGXI RADICAL HORN → CJK UNIFIED IDEOGRAPH-89D2   # 
+
+2F94 ; 8A00 ;  ML      #* ( ⾔ → 言 ) KANGXI RADICAL SPEECH → CJK UNIFIED IDEOGRAPH-8A00 # 
+
+8A7D ; 8A2E ;  ML      # ( 詽 → 訮 ) CJK UNIFIED IDEOGRAPH-8A7D → CJK UNIFIED IDEOGRAPH-8A2E     # 
+
+2F9CF ;        8AA0 ;  ML      # ( 誠 → 誠 ) CJK COMPATIBILITY IDEOGRAPH-2F9CF → CJK UNIFIED IDEOGRAPH-8AA0     # 
+
+F96F ; 8AAA ;  ML      # ( 說 → 說 ) CJK COMPATIBILITY IDEOGRAPH-F96F → CJK UNIFIED IDEOGRAPH-8AAA       # 
+F9A1 ; 8AAA ;  ML      # ( 說 → 說 ) CJK COMPATIBILITY IDEOGRAPH-F9A1 → CJK UNIFIED IDEOGRAPH-8AAA       # 
+
+FAB9 ; 8ABF ;  ML      # ( 調 → 調 ) CJK COMPATIBILITY IDEOGRAPH-FAB9 → CJK UNIFIED IDEOGRAPH-8ABF       # 
+
+FABB ; 8ACB ;  ML      # ( 請 → 請 ) CJK COMPATIBILITY IDEOGRAPH-FABB → CJK UNIFIED IDEOGRAPH-8ACB       # 
+
+F97D ; 8AD2 ;  ML      # ( 諒 → 諒 ) CJK COMPATIBILITY IDEOGRAPH-F97D → CJK UNIFIED IDEOGRAPH-8AD2       # 
+
+F941 ; 8AD6 ;  ML      # ( 論 → 論 ) CJK COMPATIBILITY IDEOGRAPH-F941 → CJK UNIFIED IDEOGRAPH-8AD6       # 
+
+FABE ; 8AED ;  ML      # ( 諭 → 諭 ) CJK COMPATIBILITY IDEOGRAPH-FABE → CJK UNIFIED IDEOGRAPH-8AED       # 
+2F9D0 ;        8AED ;  ML      # ( 諭 → 諭 ) CJK COMPATIBILITY IDEOGRAPH-2F9D0 → CJK UNIFIED IDEOGRAPH-8AED     # 
+
+FA22 ; 8AF8 ;  ML      # ( 諸 → 諸 ) CJK COMPATIBILITY IDEOGRAPH-FA22 → CJK UNIFIED IDEOGRAPH-8AF8       # 
+FABA ; 8AF8 ;  ML      # ( 諸 → 諸 ) CJK COMPATIBILITY IDEOGRAPH-FABA → CJK UNIFIED IDEOGRAPH-8AF8       # 
+
+F95D ; 8AFE ;  ML      # ( 諾 → 諾 ) CJK COMPATIBILITY IDEOGRAPH-F95D → CJK UNIFIED IDEOGRAPH-8AFE       # 
+FABD ; 8AFE ;  ML      # ( 諾 → 諾 ) CJK COMPATIBILITY IDEOGRAPH-FABD → CJK UNIFIED IDEOGRAPH-8AFE       # 
+
+FA62 ; 8B01 ;  ML      # ( 謁 → 謁 ) CJK COMPATIBILITY IDEOGRAPH-FA62 → CJK UNIFIED IDEOGRAPH-8B01       # 
+FABC ; 8B01 ;  ML      # ( 謁 → 謁 ) CJK COMPATIBILITY IDEOGRAPH-FABC → CJK UNIFIED IDEOGRAPH-8B01       # 
+
+FA63 ; 8B39 ;  ML      # ( 謹 → 謹 ) CJK COMPATIBILITY IDEOGRAPH-FA63 → CJK UNIFIED IDEOGRAPH-8B39       # 
+FABF ; 8B39 ;  ML      # ( 謹 → 謹 ) CJK COMPATIBILITY IDEOGRAPH-FABF → CJK UNIFIED IDEOGRAPH-8B39       # 
+
+F9FC ; 8B58 ;  ML      # ( 識 → 識 ) CJK COMPATIBILITY IDEOGRAPH-F9FC → CJK UNIFIED IDEOGRAPH-8B58       # 
+
+F95A ; 8B80 ;  ML      # ( 讀 → 讀 ) CJK COMPATIBILITY IDEOGRAPH-F95A → CJK UNIFIED IDEOGRAPH-8B80       # 
+
+8B8F ; 8B86 ;  ML      # ( 讏 → 讆 ) CJK UNIFIED IDEOGRAPH-8B8F → CJK UNIFIED IDEOGRAPH-8B86     # 
+
+FAC0 ; 8B8A ;  ML      # ( 變 → 變 ) CJK COMPATIBILITY IDEOGRAPH-FAC0 → CJK UNIFIED IDEOGRAPH-8B8A       # 
+2F9D1 ;        8B8A ;  ML      # ( 變 → 變 ) CJK COMPATIBILITY IDEOGRAPH-2F9D1 → CJK UNIFIED IDEOGRAPH-8B8A     # 
+
+2EC8 ; 8BA0 ;  ML      #* ( ⻈ → 讠 ) CJK RADICAL C-SIMPLIFIED SPEECH → CJK UNIFIED IDEOGRAPH-8BA0       # 
+
+2F95 ; 8C37 ;  ML      #* ( ⾕ → 谷 ) KANGXI RADICAL VALLEY → CJK UNIFIED IDEOGRAPH-8C37 # 
+
+2F96 ; 8C46 ;  ML      #* ( ⾖ → 豆 ) KANGXI RADICAL BEAN → CJK UNIFIED IDEOGRAPH-8C46   # 
+
+F900 ; 8C48 ;  ML      # ( 豈 → 豈 ) CJK COMPATIBILITY IDEOGRAPH-F900 → CJK UNIFIED IDEOGRAPH-8C48       # 
+
+2F9D2 ;        8C55 ;  ML      # ( 豕 → 豕 ) CJK COMPATIBILITY IDEOGRAPH-2F9D2 → CJK UNIFIED IDEOGRAPH-8C55     # 
+2F97 ; 8C55 ;  ML      #* ( ⾗ → 豕 ) KANGXI RADICAL PIG → CJK UNIFIED IDEOGRAPH-8C55    # 
+
+8C63 ; 8C5C ;  ML      # ( 豣 → 豜 ) CJK UNIFIED IDEOGRAPH-8C63 → CJK UNIFIED IDEOGRAPH-8C5C     # 
+
+2F98 ; 8C78 ;  ML      #* ( ⾘ → 豸 ) KANGXI RADICAL BADGER → CJK UNIFIED IDEOGRAPH-8C78 # 
+
+2F99 ; 8C9D ;  ML      #* ( ⾙ → 貝 ) KANGXI RADICAL SHELL → CJK UNIFIED IDEOGRAPH-8C9D  # 
+
+2F9D4 ;        8CAB ;  ML      # ( 貫 → 貫 ) CJK COMPATIBILITY IDEOGRAPH-2F9D4 → CJK UNIFIED IDEOGRAPH-8CAB     # 
+
+2F9D5 ;        8CC1 ;  ML      # ( 賁 → 賁 ) CJK COMPATIBILITY IDEOGRAPH-2F9D5 → CJK UNIFIED IDEOGRAPH-8CC1     # 
+
+F948 ; 8CC2 ;  ML      # ( 賂 → 賂 ) CJK COMPATIBILITY IDEOGRAPH-F948 → CJK UNIFIED IDEOGRAPH-8CC2       # 
+
+F903 ; 8CC8 ;  ML      # ( 賈 → 賈 ) CJK COMPATIBILITY IDEOGRAPH-F903 → CJK UNIFIED IDEOGRAPH-8CC8       # 
+
+FA64 ; 8CD3 ;  ML      # ( 賓 → 賓 ) CJK COMPATIBILITY IDEOGRAPH-FA64 → CJK UNIFIED IDEOGRAPH-8CD3       # 
+
+FA65 ; 8D08 ;  ML      # ( 贈 → 贈 ) CJK COMPATIBILITY IDEOGRAPH-FA65 → CJK UNIFIED IDEOGRAPH-8D08       # 
+FAC1 ; 8D08 ;  ML      # ( 贈 → 贈 ) CJK COMPATIBILITY IDEOGRAPH-FAC1 → CJK UNIFIED IDEOGRAPH-8D08       # 
+
+2F9D6 ;        8D1B ;  ML      # ( 贛 → 贛 ) CJK COMPATIBILITY IDEOGRAPH-2F9D6 → CJK UNIFIED IDEOGRAPH-8D1B     # 
+
+2EC9 ; 8D1D ;  ML      #* ( ⻉ → 贝 ) CJK RADICAL C-SIMPLIFIED SHELL → CJK UNIFIED IDEOGRAPH-8D1D        # 
+
+2F9A ; 8D64 ;  ML      #* ( ⾚ → 赤 ) KANGXI RADICAL RED → CJK UNIFIED IDEOGRAPH-8D64    # 
+
+2F9B ; 8D70 ;  ML      #* ( ⾛ → 走 ) KANGXI RADICAL RUN → CJK UNIFIED IDEOGRAPH-8D70    # 
+
+2F9D7 ;        8D77 ;  ML      # ( 起 → 起 ) CJK COMPATIBILITY IDEOGRAPH-2F9D7 → CJK UNIFIED IDEOGRAPH-8D77     # 
+
+8D86 ; 8D7F ;  ML      # ( 趆 → 赿 ) CJK UNIFIED IDEOGRAPH-8D86 → CJK UNIFIED IDEOGRAPH-8D7F     # 
+
+2F9C ; 8DB3 ;  ML      #* ( ⾜ → 足 ) KANGXI RADICAL FOOT → CJK UNIFIED IDEOGRAPH-8DB3   # 
+
+2F9DB ;        8DBC ;  ML      # ( 趼 → 趼 ) CJK COMPATIBILITY IDEOGRAPH-2F9DB → CJK UNIFIED IDEOGRAPH-8DBC     # 
+
+2F9DA ;        8DCB ;  ML      # ( 跋 → 跋 ) CJK COMPATIBILITY IDEOGRAPH-2F9DA → CJK UNIFIED IDEOGRAPH-8DCB     # 
+
+8DFA ; 8DE5 ;  ML      # ( 跺 → 跥 ) CJK UNIFIED IDEOGRAPH-8DFA → CJK UNIFIED IDEOGRAPH-8DE5     # 
+
+F937 ; 8DEF ;  ML      # ( 路 → 路 ) CJK COMPATIBILITY IDEOGRAPH-F937 → CJK UNIFIED IDEOGRAPH-8DEF       # 
+
+2F9DC ;        8DF0 ;  ML      # ( 跰 → 跰 ) CJK COMPATIBILITY IDEOGRAPH-2F9DC → CJK UNIFIED IDEOGRAPH-8DF0     # 
+
+8E9B ; 8E97 ;  ML      # ( 躛 → 躗 ) CJK UNIFIED IDEOGRAPH-8E9B → CJK UNIFIED IDEOGRAPH-8E97     # 
+
+2F9D ; 8EAB ;  ML      #* ( ⾝ → 身 ) KANGXI RADICAL BODY → CJK UNIFIED IDEOGRAPH-8EAB   # 
+
+F902 ; 8ECA ;  ML      # ( 車 → 車 ) CJK COMPATIBILITY IDEOGRAPH-F902 → CJK UNIFIED IDEOGRAPH-8ECA       # 
+2F9E ; 8ECA ;  ML      #* ( ⾞ → 車 ) KANGXI RADICAL CART → CJK UNIFIED IDEOGRAPH-8ECA   # 
+
+2F9DE ;        8ED4 ;  ML      # ( 軔 → 軔 ) CJK COMPATIBILITY IDEOGRAPH-2F9DE → CJK UNIFIED IDEOGRAPH-8ED4     # 
+
+8F27 ; 8EFF ;  ML      # ( 輧 → 軿 ) CJK UNIFIED IDEOGRAPH-8F27 → CJK UNIFIED IDEOGRAPH-8EFF     # 
+
+F998 ; 8F26 ;  ML      # ( 輦 → 輦 ) CJK COMPATIBILITY IDEOGRAPH-F998 → CJK UNIFIED IDEOGRAPH-8F26       # 
+
+F9D7 ; 8F2A ;  ML      # ( 輪 → 輪 ) CJK COMPATIBILITY IDEOGRAPH-F9D7 → CJK UNIFIED IDEOGRAPH-8F2A       # 
+
+FAC2 ; 8F38 ;  ML      # ( 輸 → 輸 ) CJK COMPATIBILITY IDEOGRAPH-FAC2 → CJK UNIFIED IDEOGRAPH-8F38       # 
+2F9DF ;        8F38 ;  ML      # ( 輸 → 輸 ) CJK COMPATIBILITY IDEOGRAPH-2F9DF → CJK UNIFIED IDEOGRAPH-8F38     # 
+
+FA07 ; 8F3B ;  ML      # ( 輻 → 輻 ) CJK COMPATIBILITY IDEOGRAPH-FA07 → CJK UNIFIED IDEOGRAPH-8F3B       # 
+
+F98D ; 8F62 ;  ML      # ( 轢 → 轢 ) CJK COMPATIBILITY IDEOGRAPH-F98D → CJK UNIFIED IDEOGRAPH-8F62       # 
+
+2ECB ; 8F66 ;  ML      #* ( ⻋ → 车 ) CJK RADICAL C-SIMPLIFIED CART → CJK UNIFIED IDEOGRAPH-8F66 # 
+
+2F9F ; 8F9B ;  ML      #* ( ⾟ → 辛 ) KANGXI RADICAL BITTER → CJK UNIFIED IDEOGRAPH-8F9B # 
+
+2F98D ;        8F9E ;  ML      # ( 辞 → 辞 ) CJK COMPATIBILITY IDEOGRAPH-2F98D → CJK UNIFIED IDEOGRAPH-8F9E     # 
+
+F971 ; 8FB0 ;  ML      # ( 辰 → 辰 ) CJK COMPATIBILITY IDEOGRAPH-F971 → CJK UNIFIED IDEOGRAPH-8FB0       # 
+2FA0 ; 8FB0 ;  ML      #* ( ⾠ → 辰 ) KANGXI RADICAL MORNING → CJK UNIFIED IDEOGRAPH-8FB0        # 
+
+2FA1 ; 8FB5 ;  ML      #* ( ⾡ → 辵 ) KANGXI RADICAL WALK → CJK UNIFIED IDEOGRAPH-8FB5   # 
+
+FA66 ; 8FB6 ;  ML      # ( 辶 → 辶 ) CJK COMPATIBILITY IDEOGRAPH-FA66 → CJK UNIFIED IDEOGRAPH-8FB6       # 
+2ECC ; 8FB6 ;  ML      #* ( ⻌ → 辶 ) CJK RADICAL SIMPLIFIED WALK → CJK UNIFIED IDEOGRAPH-8FB6   # 
+2ECD ; 8FB6 ;  ML      #* ( ⻍ → 辶 ) CJK RADICAL WALK ONE → CJK UNIFIED IDEOGRAPH-8FB6  # 
+
+F99A ; 9023 ;  ML      # ( 連 → 連 ) CJK COMPATIBILITY IDEOGRAPH-F99A → CJK UNIFIED IDEOGRAPH-9023       # 
+
+FA25 ; 9038 ;  ML      # ( 逸 → 逸 ) CJK COMPATIBILITY IDEOGRAPH-FA25 → CJK UNIFIED IDEOGRAPH-9038       # 
+FA67 ; 9038 ;  ML      # ( 逸 → 逸 ) CJK COMPATIBILITY IDEOGRAPH-FA67 → CJK UNIFIED IDEOGRAPH-9038       # 
+
+FAC3 ; 9072 ;  ML      # ( 遲 → 遲 ) CJK COMPATIBILITY IDEOGRAPH-FAC3 → CJK UNIFIED IDEOGRAPH-9072       # 
+
+F9C3 ; 907C ;  ML      # ( 遼 → 遼 ) CJK COMPATIBILITY IDEOGRAPH-F9C3 → CJK UNIFIED IDEOGRAPH-907C       # 
+
+F913 ; 908F ;  ML      # ( 邏 → 邏 ) CJK COMPATIBILITY IDEOGRAPH-F913 → CJK UNIFIED IDEOGRAPH-908F       # 
+
+2FA2 ; 9091 ;  ML      #* ( ⾢ → 邑 ) KANGXI RADICAL CITY → CJK UNIFIED IDEOGRAPH-9091   # 
+
+2F9E2 ;        9094 ;  ML      # ( 邔 → 邔 ) CJK COMPATIBILITY IDEOGRAPH-2F9E2 → CJK UNIFIED IDEOGRAPH-9094     # 
+
+F92C ; 90CE ;  ML      # ( 郎 → 郎 ) CJK COMPATIBILITY IDEOGRAPH-F92C → CJK UNIFIED IDEOGRAPH-90CE       # 
+90DE ; 90CE ;  ML      # ( 郞 → 郎 ) CJK UNIFIED IDEOGRAPH-90DE → CJK UNIFIED IDEOGRAPH-90CE     # →郎→
+
+2F9E3 ;        90F1 ;  ML      # ( 郱 → 郱 ) CJK COMPATIBILITY IDEOGRAPH-2F9E3 → CJK UNIFIED IDEOGRAPH-90F1     # 
+
+FA26 ; 90FD ;  ML      # ( 都 → 都 ) CJK COMPATIBILITY IDEOGRAPH-FA26 → CJK UNIFIED IDEOGRAPH-90FD       # 
+
+2F9E4 ;        9111 ;  ML      # ( 鄑 → 鄑 ) CJK COMPATIBILITY IDEOGRAPH-2F9E4 → CJK UNIFIED IDEOGRAPH-9111     # 
+
+2F9E6 ;        911B ;  ML      # ( 鄛 → 鄛 ) CJK COMPATIBILITY IDEOGRAPH-2F9E6 → CJK UNIFIED IDEOGRAPH-911B     # 
+
+2FA3 ; 9149 ;  ML      #* ( ⾣ → 酉 ) KANGXI RADICAL WINE → CJK UNIFIED IDEOGRAPH-9149   # 
+
+F919 ; 916A ;  ML      # ( 酪 → 酪 ) CJK COMPATIBILITY IDEOGRAPH-F919 → CJK UNIFIED IDEOGRAPH-916A       # 
+
+FAC4 ; 9199 ;  ML      # ( 醙 → 醙 ) CJK COMPATIBILITY IDEOGRAPH-FAC4 → CJK UNIFIED IDEOGRAPH-9199       # 
+
+F9B7 ; 91B4 ;  ML      # ( 醴 → 醴 ) CJK COMPATIBILITY IDEOGRAPH-F9B7 → CJK UNIFIED IDEOGRAPH-91B4       # 
+
+2FA4 ; 91C6 ;  ML      #* ( ⾤ → 釆 ) KANGXI RADICAL DISTINGUISH → CJK UNIFIED IDEOGRAPH-91C6    # 
+
+F9E9 ; 91CC ;  ML      # ( 里 → 里 ) CJK COMPATIBILITY IDEOGRAPH-F9E9 → CJK UNIFIED IDEOGRAPH-91CC       # 
+2FA5 ; 91CC ;  ML      #* ( ⾥ → 里 ) KANGXI RADICAL VILLAGE → CJK UNIFIED IDEOGRAPH-91CC        # 
+
+F97E ; 91CF ;  ML      # ( 量 → 量 ) CJK COMPATIBILITY IDEOGRAPH-F97E → CJK UNIFIED IDEOGRAPH-91CF       # 
+
+F90A ; 91D1 ;  ML      # ( 金 → 金 ) CJK COMPATIBILITY IDEOGRAPH-F90A → CJK UNIFIED IDEOGRAPH-91D1       # 
+2FA6 ; 91D1 ;  ML      #* ( ⾦ → 金 ) KANGXI RADICAL GOLD → CJK UNIFIED IDEOGRAPH-91D1   # 
+
+F9B1 ; 9234 ;  ML      # ( 鈴 → 鈴 ) CJK COMPATIBILITY IDEOGRAPH-F9B1 → CJK UNIFIED IDEOGRAPH-9234       # 
+
+2F9E7 ;        9238 ;  ML      # ( 鈸 → 鈸 ) CJK COMPATIBILITY IDEOGRAPH-2F9E7 → CJK UNIFIED IDEOGRAPH-9238     # 
+
+FAC5 ; 9276 ;  ML      # ( 鉶 → 鉶 ) CJK COMPATIBILITY IDEOGRAPH-FAC5 → CJK UNIFIED IDEOGRAPH-9276       # 
+
+2F9EA ;        927C ;  ML      # ( 鉼 → 鉼 ) CJK COMPATIBILITY IDEOGRAPH-2F9EA → CJK UNIFIED IDEOGRAPH-927C     # 
+
+2F9E8 ;        92D7 ;  ML      # ( 鋗 → 鋗 ) CJK COMPATIBILITY IDEOGRAPH-2F9E8 → CJK UNIFIED IDEOGRAPH-92D7     # 
+
+2F9E9 ;        92D8 ;  ML      # ( 鋘 → 鋘 ) CJK COMPATIBILITY IDEOGRAPH-2F9E9 → CJK UNIFIED IDEOGRAPH-92D8     # 
+
+F93F ; 9304 ;  ML      # ( 錄 → 錄 ) CJK COMPATIBILITY IDEOGRAPH-F93F → CJK UNIFIED IDEOGRAPH-9304       # 
+
+F99B ; 934A ;  ML      # ( 鍊 → 鍊 ) CJK COMPATIBILITY IDEOGRAPH-F99B → CJK UNIFIED IDEOGRAPH-934A       # 
+
+93AE ; 93AD ;  ML      # ( 鎮 → 鎭 ) CJK UNIFIED IDEOGRAPH-93AE → CJK UNIFIED IDEOGRAPH-93AD     # 
+
+2F9EB ;        93F9 ;  ML      # ( 鏹 → 鏹 ) CJK COMPATIBILITY IDEOGRAPH-2F9EB → CJK UNIFIED IDEOGRAPH-93F9     # 
+
+2F9EC ;        9415 ;  ML      # ( 鐕 → 鐕 ) CJK COMPATIBILITY IDEOGRAPH-2F9EC → CJK UNIFIED IDEOGRAPH-9415     # 
+
+2ED0 ; 9485 ;  ML      #* ( ⻐ → 钅 ) CJK RADICAL C-SIMPLIFIED GOLD → CJK UNIFIED IDEOGRAPH-9485 # 
+
+2ED1 ; 9577 ;  ML      #* ( ⻑ → 長 ) CJK RADICAL LONG ONE → CJK UNIFIED IDEOGRAPH-9577  # 
+2FA7 ; 9577 ;  ML      #* ( ⾧ → 長 ) KANGXI RADICAL LONG → CJK UNIFIED IDEOGRAPH-9577   # 
+
+2ED2 ; 9578 ;  ML      #* ( ⻒ → 镸 ) CJK RADICAL LONG TWO → CJK UNIFIED IDEOGRAPH-9578  # 
+
+2ED3 ; 957F ;  ML      #* ( ⻓ → 长 ) CJK RADICAL C-SIMPLIFIED LONG → CJK UNIFIED IDEOGRAPH-957F # 
+
+2FA8 ; 9580 ;  ML      #* ( ⾨ → 門 ) KANGXI RADICAL GATE → CJK UNIFIED IDEOGRAPH-9580   # 
+
+2F9EE ;        958B ;  ML      # ( 開 → 開 ) CJK COMPATIBILITY IDEOGRAPH-2F9EE → CJK UNIFIED IDEOGRAPH-958B     # 
+
+F986 ; 95AD ;  ML      # ( 閭 → 閭 ) CJK COMPATIBILITY IDEOGRAPH-F986 → CJK UNIFIED IDEOGRAPH-95AD       # 
+
+2F9F0 ;        95B7 ;  ML      # ( 閷 → 閷 ) CJK COMPATIBILITY IDEOGRAPH-2F9F0 → CJK UNIFIED IDEOGRAPH-95B7     # 
+
+2ED4 ; 95E8 ;  ML      #* ( ⻔ → 门 ) CJK RADICAL C-SIMPLIFIED GATE → CJK UNIFIED IDEOGRAPH-95E8 # 
+
+2FA9 ; 961C ;  ML      #* ( ⾩ → 阜 ) KANGXI RADICAL MOUND → CJK UNIFIED IDEOGRAPH-961C  # 
+
+2ECF ; 961D ;  ML      #* ( ⻏ → 阝 ) CJK RADICAL CITY → CJK UNIFIED IDEOGRAPH-961D      # 
+2ED6 ; 961D ;  ML      #* ( ⻖ → 阝 ) CJK RADICAL MOUND TWO → CJK UNIFIED IDEOGRAPH-961D # 
+
+F9C6 ; 962E ;  ML      # ( 阮 → 阮 ) CJK COMPATIBILITY IDEOGRAPH-F9C6 → CJK UNIFIED IDEOGRAPH-962E       # 
+
+F951 ; 964B ;  ML      # ( 陋 → 陋 ) CJK COMPATIBILITY IDEOGRAPH-F951 → CJK UNIFIED IDEOGRAPH-964B       # 
+
+FA09 ; 964D ;  ML      # ( 降 → 降 ) CJK COMPATIBILITY IDEOGRAPH-FA09 → CJK UNIFIED IDEOGRAPH-964D       # 
+
+F959 ; 9675 ;  ML      # ( 陵 → 陵 ) CJK COMPATIBILITY IDEOGRAPH-F959 → CJK UNIFIED IDEOGRAPH-9675       # 
+
+F9D3 ; 9678 ;  ML      # ( 陸 → 陸 ) CJK COMPATIBILITY IDEOGRAPH-F9D3 → CJK UNIFIED IDEOGRAPH-9678       # 
+
+FAC6 ; 967C ;  ML      # ( 陼 → 陼 ) CJK COMPATIBILITY IDEOGRAPH-FAC6 → CJK UNIFIED IDEOGRAPH-967C       # 
+
+F9DC ; 9686 ;  ML      # ( 隆 → 隆 ) CJK COMPATIBILITY IDEOGRAPH-F9DC → CJK UNIFIED IDEOGRAPH-9686       # 
+
+F9F1 ; 96A3 ;  ML      # ( 隣 → 隣 ) CJK COMPATIBILITY IDEOGRAPH-F9F1 → CJK UNIFIED IDEOGRAPH-96A3       # 
+
+2FAA ; 96B6 ;  ML      #* ( ⾪ → 隶 ) KANGXI RADICAL SLAVE → CJK UNIFIED IDEOGRAPH-96B6  # 
+
+96B8 ; 96B7 ;  ML      # ( 隸 → 隷 ) CJK UNIFIED IDEOGRAPH-96B8 → CJK UNIFIED IDEOGRAPH-96B7     # →隸→
+F9B8 ; 96B7 ;  ML      # ( 隸 → 隷 ) CJK COMPATIBILITY IDEOGRAPH-F9B8 → CJK UNIFIED IDEOGRAPH-96B7       # 
+
+2FAB ; 96B9 ;  ML      #* ( ⾫ → 隹 ) KANGXI RADICAL SHORT TAILED BIRD → CJK UNIFIED IDEOGRAPH-96B9      # 
+
+2F9F3 ;        96C3 ;  ML      # ( 雃 → 雃 ) CJK COMPATIBILITY IDEOGRAPH-2F9F3 → CJK UNIFIED IDEOGRAPH-96C3     # 
+
+F9EA ; 96E2 ;  ML      # ( 離 → 離 ) CJK COMPATIBILITY IDEOGRAPH-F9EA → CJK UNIFIED IDEOGRAPH-96E2       # 
+
+FA68 ; 96E3 ;  ML      # ( 難 → 難 ) CJK COMPATIBILITY IDEOGRAPH-FA68 → CJK UNIFIED IDEOGRAPH-96E3       # 
+FAC7 ; 96E3 ;  ML      # ( 難 → 難 ) CJK COMPATIBILITY IDEOGRAPH-FAC7 → CJK UNIFIED IDEOGRAPH-96E3       # 
+
+2FAC ; 96E8 ;  ML      #* ( ⾬ → 雨 ) KANGXI RADICAL RAIN → CJK UNIFIED IDEOGRAPH-96E8   # 
+
+F9B2 ; 96F6 ;  ML      # ( 零 → 零 ) CJK COMPATIBILITY IDEOGRAPH-F9B2 → CJK UNIFIED IDEOGRAPH-96F6       # 
+
+F949 ; 96F7 ;  ML      # ( 雷 → 雷 ) CJK COMPATIBILITY IDEOGRAPH-F949 → CJK UNIFIED IDEOGRAPH-96F7       # 
+
+2F9F5 ;        9723 ;  ML      # ( 霣 → 霣 ) CJK COMPATIBILITY IDEOGRAPH-2F9F5 → CJK UNIFIED IDEOGRAPH-9723     # 
+
+F938 ; 9732 ;  ML      # ( 露 → 露 ) CJK COMPATIBILITY IDEOGRAPH-F938 → CJK UNIFIED IDEOGRAPH-9732       # 
+
+F9B3 ; 9748 ;  ML      # ( 靈 → 靈 ) CJK COMPATIBILITY IDEOGRAPH-F9B3 → CJK UNIFIED IDEOGRAPH-9748       # 
+
+2FAD ; 9751 ;  ML      #* ( ⾭ → 靑 ) KANGXI RADICAL BLUE → CJK UNIFIED IDEOGRAPH-9751   # 
+
+2ED8 ; 9752 ;  ML      #* ( ⻘ → 青 ) CJK RADICAL BLUE → CJK UNIFIED IDEOGRAPH-9752      # 
+
+FA1C ; 9756 ;  ML      # ( 靖 → 靖 ) CJK COMPATIBILITY IDEOGRAPH-FA1C → CJK UNIFIED IDEOGRAPH-9756       # 
+FAC8 ; 9756 ;  ML      # ( 靖 → 靖 ) CJK COMPATIBILITY IDEOGRAPH-FAC8 → CJK UNIFIED IDEOGRAPH-9756       # 
+
+2FAE ; 975E ;  ML      #* ( ⾮ → 非 ) KANGXI RADICAL WRONG → CJK UNIFIED IDEOGRAPH-975E  # 
+
+2FAF ; 9762 ;  ML      #* ( ⾯ → 面 ) KANGXI RADICAL FACE → CJK UNIFIED IDEOGRAPH-9762   # 
+
+2FB0 ; 9769 ;  ML      #* ( ⾰ → 革 ) KANGXI RADICAL LEATHER → CJK UNIFIED IDEOGRAPH-9769        # 
+
+2FB1 ; 97CB ;  ML      #* ( ⾱ → 韋 ) KANGXI RADICAL TANNED LEATHER → CJK UNIFIED IDEOGRAPH-97CB # 
+
+FAC9 ; 97DB ;  ML      # ( 韛 → 韛 ) CJK COMPATIBILITY IDEOGRAPH-FAC9 → CJK UNIFIED IDEOGRAPH-97DB       # 
+
+2F9FA ;        97E0 ;  ML      # ( 韠 → 韠 ) CJK COMPATIBILITY IDEOGRAPH-2F9FA → CJK UNIFIED IDEOGRAPH-97E0     # 
+
+2ED9 ; 97E6 ;  ML      #* ( ⻙ → 韦 ) CJK RADICAL C-SIMPLIFIED TANNED LEATHER → CJK UNIFIED IDEOGRAPH-97E6       # 
+
+2FB2 ; 97ED ;  ML      #* ( ⾲ → 韭 ) KANGXI RADICAL LEEK → CJK UNIFIED IDEOGRAPH-97ED   # 
+
+2FB3 ; 97F3 ;  ML      #* ( ⾳ → 音 ) KANGXI RADICAL SOUND → CJK UNIFIED IDEOGRAPH-97F3  # 
+
+FA69 ; 97FF ;  ML      # ( 響 → 響 ) CJK COMPATIBILITY IDEOGRAPH-FA69 → CJK UNIFIED IDEOGRAPH-97FF       # 
+FACA ; 97FF ;  ML      # ( 響 → 響 ) CJK COMPATIBILITY IDEOGRAPH-FACA → CJK UNIFIED IDEOGRAPH-97FF       # 
+
+2FB4 ; 9801 ;  ML      #* ( ⾴ → 頁 ) KANGXI RADICAL LEAF → CJK UNIFIED IDEOGRAPH-9801   # 
+
+FACB ; 980B ;  ML      # ( 頋 → 頋 ) CJK COMPATIBILITY IDEOGRAPH-FACB → CJK UNIFIED IDEOGRAPH-980B       # 
+2F9FE ;        980B ;  ML      # ( 頋 → 頋 ) CJK COMPATIBILITY IDEOGRAPH-2F9FE → CJK UNIFIED IDEOGRAPH-980B     # 
+2F9FF ;        980B ;  ML      # ( 頋 → 頋 ) CJK COMPATIBILITY IDEOGRAPH-2F9FF → CJK UNIFIED IDEOGRAPH-980B     # 
+
+F9B4 ; 9818 ;  ML      # ( 領 → 領 ) CJK COMPATIBILITY IDEOGRAPH-F9B4 → CJK UNIFIED IDEOGRAPH-9818       # 
+
+2FA00 ;        9829 ;  ML      # ( 頩 → 頩 ) CJK COMPATIBILITY IDEOGRAPH-2FA00 → CJK UNIFIED IDEOGRAPH-9829     # 
+
+FA6A ; 983B ;  ML      # ( 頻 → 頻 ) CJK COMPATIBILITY IDEOGRAPH-FA6A → CJK UNIFIED IDEOGRAPH-983B       # 
+FACC ; 983B ;  ML      # ( 頻 → 頻 ) CJK COMPATIBILITY IDEOGRAPH-FACC → CJK UNIFIED IDEOGRAPH-983B       # 
+
+F9D0 ; 985E ;  ML      # ( 類 → 類 ) CJK COMPATIBILITY IDEOGRAPH-F9D0 → CJK UNIFIED IDEOGRAPH-985E       # 
+
+2EDA ; 9875 ;  ML      #* ( ⻚ → 页 ) CJK RADICAL C-SIMPLIFIED LEAF → CJK UNIFIED IDEOGRAPH-9875 # 
+
+2FB5 ; 98A8 ;  ML      #* ( ⾵ → 風 ) KANGXI RADICAL WIND → CJK UNIFIED IDEOGRAPH-98A8   # 
+
+2EDB ; 98CE ;  ML      #* ( ⻛ → 风 ) CJK RADICAL C-SIMPLIFIED WIND → CJK UNIFIED IDEOGRAPH-98CE # 
+
+2FB6 ; 98DB ;  ML      #* ( ⾶ → 飛 ) KANGXI RADICAL FLY → CJK UNIFIED IDEOGRAPH-98DB    # 
+
+2EDC ; 98DE ;  ML      #* ( ⻜ → 飞 ) CJK RADICAL C-SIMPLIFIED FLY → CJK UNIFIED IDEOGRAPH-98DE  # 
+
+2EDD ; 98DF ;  ML      #* ( ⻝ → 食 ) CJK RADICAL EAT ONE → CJK UNIFIED IDEOGRAPH-98DF   # 
+2FB7 ; 98DF ;  ML      #* ( ⾷ → 食 ) KANGXI RADICAL EAT → CJK UNIFIED IDEOGRAPH-98DF    # 
+
+2EDF ; 98E0 ;  ML      #* ( ⻟ → 飠 ) CJK RADICAL EAT THREE → CJK UNIFIED IDEOGRAPH-98E0 # 
+
+2FA02 ;        98E2 ;  ML      # ( 飢 → 飢 ) CJK COMPATIBILITY IDEOGRAPH-2FA02 → CJK UNIFIED IDEOGRAPH-98E2     # 
+
+FA2A ; 98EF ;  ML      # ( 飯 → 飯 ) CJK COMPATIBILITY IDEOGRAPH-FA2A → CJK UNIFIED IDEOGRAPH-98EF       # 
+
+FA2B ; 98FC ;  ML      # ( 飼 → 飼 ) CJK COMPATIBILITY IDEOGRAPH-FA2B → CJK UNIFIED IDEOGRAPH-98FC       # 
+
+FA2C ; 9928 ;  ML      # ( 館 → 館 ) CJK COMPATIBILITY IDEOGRAPH-FA2C → CJK UNIFIED IDEOGRAPH-9928       # 
+
+2FA04 ;        9929 ;  ML      # ( 餩 → 餩 ) CJK COMPATIBILITY IDEOGRAPH-2FA04 → CJK UNIFIED IDEOGRAPH-9929     # 
+
+2EE0 ; 9963 ;  ML      #* ( ⻠ → 饣 ) CJK RADICAL C-SIMPLIFIED EAT → CJK UNIFIED IDEOGRAPH-9963  # 
+
+2FB8 ; 9996 ;  ML      #* ( ⾸ → 首 ) KANGXI RADICAL HEAD → CJK UNIFIED IDEOGRAPH-9996   # 
+
+2FB9 ; 9999 ;  ML      #* ( ⾹ → 香 ) KANGXI RADICAL FRAGRANT → CJK UNIFIED IDEOGRAPH-9999       # 
+
+2FA05 ;        99A7 ;  ML      # ( 馧 → 馧 ) CJK COMPATIBILITY IDEOGRAPH-2FA05 → CJK UNIFIED IDEOGRAPH-99A7     # 
+
+2FBA ; 99AC ;  ML      #* ( ⾺ → 馬 ) KANGXI RADICAL HORSE → CJK UNIFIED IDEOGRAPH-99AC  # 
+
+2FA06 ;        99C2 ;  ML      # ( 駂 → 駂 ) CJK COMPATIBILITY IDEOGRAPH-2FA06 → CJK UNIFIED IDEOGRAPH-99C2     # 
+
+F91A ; 99F1 ;  ML      # ( 駱 → 駱 ) CJK COMPATIBILITY IDEOGRAPH-F91A → CJK UNIFIED IDEOGRAPH-99F1       # 
+
+2FA07 ;        99FE ;  ML      # ( 駾 → 駾 ) CJK COMPATIBILITY IDEOGRAPH-2FA07 → CJK UNIFIED IDEOGRAPH-99FE     # 
+
+F987 ; 9A6A ;  ML      # ( 驪 → 驪 ) CJK COMPATIBILITY IDEOGRAPH-F987 → CJK UNIFIED IDEOGRAPH-9A6A       # 
+
+2EE2 ; 9A6C ;  ML      #* ( ⻢ → 马 ) CJK RADICAL C-SIMPLIFIED HORSE → CJK UNIFIED IDEOGRAPH-9A6C        # 
+
+2FBB ; 9AA8 ;  ML      #* ( ⾻ → 骨 ) KANGXI RADICAL BONE → CJK UNIFIED IDEOGRAPH-9AA8   # 
+
+2FBC ; 9AD8 ;  ML      #* ( ⾼ → 高 ) KANGXI RADICAL TALL → CJK UNIFIED IDEOGRAPH-9AD8   # 
+
+2FBD ; 9ADF ;  ML      #* ( ⾽ → 髟 ) KANGXI RADICAL HAIR → CJK UNIFIED IDEOGRAPH-9ADF   # 
+
+FACD ; 9B12 ;  ML      # ( 鬒 → 鬒 ) CJK COMPATIBILITY IDEOGRAPH-FACD → CJK UNIFIED IDEOGRAPH-9B12       # 
+2FA0A ;        9B12 ;  ML      # ( 鬒 → 鬒 ) CJK COMPATIBILITY IDEOGRAPH-2FA0A → CJK UNIFIED IDEOGRAPH-9B12     # 
+
+2FBE ; 9B25 ;  ML      #* ( ⾾ → 鬥 ) KANGXI RADICAL FIGHT → CJK UNIFIED IDEOGRAPH-9B25  # 
+
+2FBF ; 9B2F ;  ML      #* ( ⾿ → 鬯 ) KANGXI RADICAL SACRIFICIAL WINE → CJK UNIFIED IDEOGRAPH-9B2F       # 
+
+2FC0 ; 9B32 ;  ML      #* ( ⿀ → 鬲 ) KANGXI RADICAL CAULDRON → CJK UNIFIED IDEOGRAPH-9B32       # 
+
+2FC1 ; 9B3C ;  ML      #* ( ⿁ → 鬼 ) KANGXI RADICAL GHOST → CJK UNIFIED IDEOGRAPH-9B3C  # 
+2EE4 ; 9B3C ;  ML      #* ( ⻤ → 鬼 ) CJK RADICAL GHOST → CJK UNIFIED IDEOGRAPH-9B3C     # 
+
+2FC2 ; 9B5A ;  ML      #* ( ⿂ → 魚 ) KANGXI RADICAL FISH → CJK UNIFIED IDEOGRAPH-9B5A   # 
+
+F939 ; 9B6F ;  ML      # ( 魯 → 魯 ) CJK COMPATIBILITY IDEOGRAPH-F939 → CJK UNIFIED IDEOGRAPH-9B6F       # 
+
+2FA0B ;        9C40 ;  ML      # ( 鱀 → 鱀 ) CJK COMPATIBILITY IDEOGRAPH-2FA0B → CJK UNIFIED IDEOGRAPH-9C40     # 
+
+F9F2 ; 9C57 ;  ML      # ( 鱗 → 鱗 ) CJK COMPATIBILITY IDEOGRAPH-F9F2 → CJK UNIFIED IDEOGRAPH-9C57       # 
+
+2EE5 ; 9C7C ;  ML      #* ( ⻥ → 鱼 ) CJK RADICAL C-SIMPLIFIED FISH → CJK UNIFIED IDEOGRAPH-9C7C # 
+
+2FC3 ; 9CE5 ;  ML      #* ( ⿃ → 鳥 ) KANGXI RADICAL BIRD → CJK UNIFIED IDEOGRAPH-9CE5   # 
+
+2FA0C ;        9CFD ;  ML      # ( 鳽 → 鳽 ) CJK COMPATIBILITY IDEOGRAPH-2FA0C → CJK UNIFIED IDEOGRAPH-9CFD     # 
+
+2FA0F ;        9D67 ;  ML      # ( 鵧 → 鵧 ) CJK COMPATIBILITY IDEOGRAPH-2FA0F → CJK UNIFIED IDEOGRAPH-9D67     # 
+
+FA2D ; 9DB4 ;  ML      # ( 鶴 → 鶴 ) CJK COMPATIBILITY IDEOGRAPH-FA2D → CJK UNIFIED IDEOGRAPH-9DB4       # 
+
+F93A ; 9DFA ;  ML      # ( 鷺 → 鷺 ) CJK COMPATIBILITY IDEOGRAPH-F93A → CJK UNIFIED IDEOGRAPH-9DFA       # 
+
+F920 ; 9E1E ;  ML      # ( 鸞 → 鸞 ) CJK COMPATIBILITY IDEOGRAPH-F920 → CJK UNIFIED IDEOGRAPH-9E1E       # 
+
+9E43 ; 9E42 ;  ML      # ( 鹃 → 鹂 ) CJK UNIFIED IDEOGRAPH-9E43 → CJK UNIFIED IDEOGRAPH-9E42     # 
+
+2FC4 ; 9E75 ;  ML      #* ( ⿄ → 鹵 ) KANGXI RADICAL SALT → CJK UNIFIED IDEOGRAPH-9E75   # 
+
+F940 ; 9E7F ;  ML      # ( 鹿 → 鹿 ) CJK COMPATIBILITY IDEOGRAPH-F940 → CJK UNIFIED IDEOGRAPH-9E7F       # 
+2FC5 ; 9E7F ;  ML      #* ( ⿅ → 鹿 ) KANGXI RADICAL DEER → CJK UNIFIED IDEOGRAPH-9E7F   # 
+
+F988 ; 9E97 ;  ML      # ( 麗 → 麗 ) CJK COMPATIBILITY IDEOGRAPH-F988 → CJK UNIFIED IDEOGRAPH-9E97       # 
+
+F9F3 ; 9E9F ;  ML      # ( 麟 → 麟 ) CJK COMPATIBILITY IDEOGRAPH-F9F3 → CJK UNIFIED IDEOGRAPH-9E9F       # 
+
+2FC6 ; 9EA5 ;  ML      #* ( ⿆ → 麥 ) KANGXI RADICAL WHEAT → CJK UNIFIED IDEOGRAPH-9EA5  # 
+
+2EE8 ; 9EA6 ;  ML      #* ( ⻨ → 麦 ) CJK RADICAL SIMPLIFIED WHEAT → CJK UNIFIED IDEOGRAPH-9EA6  # 
+
+2FA15 ;        9EBB ;  ML      # ( 麻 → 麻 ) CJK COMPATIBILITY IDEOGRAPH-2FA15 → CJK UNIFIED IDEOGRAPH-9EBB     # 
+2FC7 ; 9EBB ;  ML      #* ( ⿇ → 麻 ) KANGXI RADICAL HEMP → CJK UNIFIED IDEOGRAPH-9EBB   # 
+
+2FC8 ; 9EC3 ;  ML      #* ( ⿈ → 黃 ) KANGXI RADICAL YELLOW → CJK UNIFIED IDEOGRAPH-9EC3 # 
+
+2EE9 ; 9EC4 ;  ML      #* ( ⻩ → 黄 ) CJK RADICAL SIMPLIFIED YELLOW → CJK UNIFIED IDEOGRAPH-9EC4 # 
+
+2FC9 ; 9ECD ;  ML      #* ( ⿉ → 黍 ) KANGXI RADICAL MILLET → CJK UNIFIED IDEOGRAPH-9ECD # 
+
+F989 ; 9ECE ;  ML      # ( 黎 → 黎 ) CJK COMPATIBILITY IDEOGRAPH-F989 → CJK UNIFIED IDEOGRAPH-9ECE       # 
+
+2FCA ; 9ED1 ;  ML      #* ( ⿊ → 黑 ) KANGXI RADICAL BLACK → CJK UNIFIED IDEOGRAPH-9ED1  # 
+9ED2 ; 9ED1 ;  ML      # ( 黒 → 黑 ) CJK UNIFIED IDEOGRAPH-9ED2 → CJK UNIFIED IDEOGRAPH-9ED1     # →⿊→
+
+2FA17 ;        9EF9 ;  ML      # ( 黹 → 黹 ) CJK COMPATIBILITY IDEOGRAPH-2FA17 → CJK UNIFIED IDEOGRAPH-9EF9     # 
+2FCB ; 9EF9 ;  ML      #* ( ⿋ → 黹 ) KANGXI RADICAL EMBROIDERY → CJK UNIFIED IDEOGRAPH-9EF9     # 
+
+2FCC ; 9EFD ;  ML      #* ( ⿌ → 黽 ) KANGXI RADICAL FROG → CJK UNIFIED IDEOGRAPH-9EFD   # 
+
+2FA18 ;        9EFE ;  ML      # ( 黾 → 黾 ) CJK COMPATIBILITY IDEOGRAPH-2FA18 → CJK UNIFIED IDEOGRAPH-9EFE     # 
+
+2FA19 ;        9F05 ;  ML      # ( 鼅 → 鼅 ) CJK COMPATIBILITY IDEOGRAPH-2FA19 → CJK UNIFIED IDEOGRAPH-9F05     # 
+
+2FCD ; 9F0E ;  ML      #* ( ⿍ → 鼎 ) KANGXI RADICAL TRIPOD → CJK UNIFIED IDEOGRAPH-9F0E # 
+
+2FA1A ;        9F0F ;  ML      # ( 鼏 → 鼏 ) CJK COMPATIBILITY IDEOGRAPH-2FA1A → CJK UNIFIED IDEOGRAPH-9F0F     # 
+
+2FCE ; 9F13 ;  ML      #* ( ⿎ → 鼓 ) KANGXI RADICAL DRUM → CJK UNIFIED IDEOGRAPH-9F13   # 
+
+2FA1B ;        9F16 ;  ML      # ( 鼖 → 鼖 ) CJK COMPATIBILITY IDEOGRAPH-2FA1B → CJK UNIFIED IDEOGRAPH-9F16     # 
+
+2FCF ; 9F20 ;  ML      #* ( ⿏ → 鼠 ) KANGXI RADICAL RAT → CJK UNIFIED IDEOGRAPH-9F20    # 
+
+2FA1C ;        9F3B ;  ML      # ( 鼻 → 鼻 ) CJK COMPATIBILITY IDEOGRAPH-2FA1C → CJK UNIFIED IDEOGRAPH-9F3B     # 
+2FD0 ; 9F3B ;  ML      #* ( ⿐ → 鼻 ) KANGXI RADICAL NOSE → CJK UNIFIED IDEOGRAPH-9F3B   # 
+
+FAD8 ; 9F43 ;  ML      # ( 齃 → 齃 ) CJK COMPATIBILITY IDEOGRAPH-FAD8 → CJK UNIFIED IDEOGRAPH-9F43       # 
+
+2FD1 ; 9F4A ;  ML      #* ( ⿑ → 齊 ) KANGXI RADICAL EVEN → CJK UNIFIED IDEOGRAPH-9F4A   # 
+
+2EEC ; 9F50 ;  ML      #* ( ⻬ → 齐 ) CJK RADICAL C-SIMPLIFIED EVEN → CJK UNIFIED IDEOGRAPH-9F50 # 
+
+2FD2 ; 9F52 ;  ML      #* ( ⿒ → 齒 ) KANGXI RADICAL TOOTH → CJK UNIFIED IDEOGRAPH-9F52  # 
+
+2EEE ; 9F7F ;  ML      #* ( ⻮ → 齿 ) CJK RADICAL C-SIMPLIFIED TOOTH → CJK UNIFIED IDEOGRAPH-9F7F        # 
+
+F9C4 ; 9F8D ;  ML      # ( 龍 → 龍 ) CJK COMPATIBILITY IDEOGRAPH-F9C4 → CJK UNIFIED IDEOGRAPH-9F8D       # 
+2FD3 ; 9F8D ;  ML      #* ( ⿓ → 龍 ) KANGXI RADICAL DRAGON → CJK UNIFIED IDEOGRAPH-9F8D # 
+
+FAD9 ; 9F8E ;  ML      # ( 龎 → 龎 ) CJK COMPATIBILITY IDEOGRAPH-FAD9 → CJK UNIFIED IDEOGRAPH-9F8E       # 
+
+2EF0 ; 9F99 ;  ML      #* ( ⻰ → 龙 ) CJK RADICAL C-SIMPLIFIED DRAGON → CJK UNIFIED IDEOGRAPH-9F99       # 
+
+F907 ; 9F9C ;  ML      # ( 龜 → 龜 ) CJK COMPATIBILITY IDEOGRAPH-F907 → CJK UNIFIED IDEOGRAPH-9F9C       # 
+F908 ; 9F9C ;  ML      # ( 龜 → 龜 ) CJK COMPATIBILITY IDEOGRAPH-F908 → CJK UNIFIED IDEOGRAPH-9F9C       # 
+FACE ; 9F9C ;  ML      # ( 龜 → 龜 ) CJK COMPATIBILITY IDEOGRAPH-FACE → CJK UNIFIED IDEOGRAPH-9F9C       # 
+2FD4 ; 9F9C ;  ML      #* ( ⿔ → 龜 ) KANGXI RADICAL TURTLE → CJK UNIFIED IDEOGRAPH-9F9C # 
+
+2EF3 ; 9F9F ;  ML      #* ( ⻳ → 龟 ) CJK RADICAL C-SIMPLIFIED TURTLE → CJK UNIFIED IDEOGRAPH-9F9F       # 
+
+2FD5 ; 9FA0 ;  ML      #* ( ⿕ → 龠 ) KANGXI RADICAL FLUTE → CJK UNIFIED IDEOGRAPH-9FA0  # 
+
+2F80C ;        349E ;  ML      # ( 㒞 → 㒞 ) CJK COMPATIBILITY IDEOGRAPH-2F80C → CJK UNIFIED IDEOGRAPH-349E     # 
+
+2F813 ;        34B9 ;  ML      # ( 㒹 → 㒹 ) CJK COMPATIBILITY IDEOGRAPH-2F813 → CJK UNIFIED IDEOGRAPH-34B9     # 
+
+2F9CA ;        34BB ;  ML      # ( 㒻 → 㒻 ) CJK COMPATIBILITY IDEOGRAPH-2F9CA → CJK UNIFIED IDEOGRAPH-34BB     # 
+
+2F81F ;        34DF ;  ML      # ( 㓟 → 㓟 ) CJK COMPATIBILITY IDEOGRAPH-2F81F → CJK UNIFIED IDEOGRAPH-34DF     # 
+
+2F824 ;        3515 ;  ML      # ( 㔕 → 㔕 ) CJK COMPATIBILITY IDEOGRAPH-2F824 → CJK UNIFIED IDEOGRAPH-3515     # 
+
+2E8B ; 353E ;  ML      #* ( ⺋ → 㔾 ) CJK RADICAL SEAL → CJK UNIFIED IDEOGRAPH-353E      # 
+
+439B ; 3588 ;  ML      # ( 䎛 → 㖈 ) CJK UNIFIED IDEOGRAPH-439B → CJK UNIFIED IDEOGRAPH-3588     # 
+
+39B3 ; 363D ;  ML      # ( 㦳 → 㘽 ) CJK UNIFIED IDEOGRAPH-39B3 → CJK UNIFIED IDEOGRAPH-363D     # 
+
+2F867 ;        36EE ;  ML      # ( 㛮 → 㛮 ) CJK COMPATIBILITY IDEOGRAPH-2F867 → CJK UNIFIED IDEOGRAPH-36EE     # 
+
+2F868 ;        36FC ;  ML      # ( 㛼 → 㛼 ) CJK COMPATIBILITY IDEOGRAPH-2F868 → CJK UNIFIED IDEOGRAPH-36FC     # 
+
+2F876 ;        3781 ;  ML      # ( 㞁 → 㞁 ) CJK COMPATIBILITY IDEOGRAPH-2F876 → CJK UNIFIED IDEOGRAPH-3781     # 
+
+2F883 ;        382F ;  ML      # ( 㠯 → 㠯 ) CJK COMPATIBILITY IDEOGRAPH-2F883 → CJK UNIFIED IDEOGRAPH-382F     # 
+
+2F888 ;        3862 ;  ML      # ( 㡢 → 㡢 ) CJK COMPATIBILITY IDEOGRAPH-2F888 → CJK UNIFIED IDEOGRAPH-3862     # 
+
+2F88A ;        387C ;  ML      # ( 㡼 → 㡼 ) CJK COMPATIBILITY IDEOGRAPH-2F88A → CJK UNIFIED IDEOGRAPH-387C     # 
+
+2F896 ;        38C7 ;  ML      # ( 㣇 → 㣇 ) CJK COMPATIBILITY IDEOGRAPH-2F896 → CJK UNIFIED IDEOGRAPH-38C7     # 
+
+2F89B ;        38E3 ;  ML      # ( 㣣 → 㣣 ) CJK COMPATIBILITY IDEOGRAPH-2F89B → CJK UNIFIED IDEOGRAPH-38E3     # 
+
+2E97 ; 38FA ;  ML      #* ( ⺗ → 㣺 ) CJK RADICAL HEART TWO → CJK UNIFIED IDEOGRAPH-38FA # 
+
+2F8A2 ;        391C ;  ML      # ( 㤜 → 㤜 ) CJK COMPATIBILITY IDEOGRAPH-2F8A2 → CJK UNIFIED IDEOGRAPH-391C     # 
+
+2F8A1 ;        393A ;  ML      # ( 㤺 → 㤺 ) CJK COMPATIBILITY IDEOGRAPH-2F8A1 → CJK UNIFIED IDEOGRAPH-393A     # 
+
+2F8C2 ;        3A2E ;  ML      # ( 㨮 → 㨮 ) CJK COMPATIBILITY IDEOGRAPH-2F8C2 → CJK UNIFIED IDEOGRAPH-3A2E     # 
+
+6409 ; 3A41 ;  ML      # ( 搉 → 㩁 ) CJK UNIFIED IDEOGRAPH-6409 → CJK UNIFIED IDEOGRAPH-3A41     # 
+
+2F8C7 ;        3A6C ;  ML      # ( 㩬 → 㩬 ) CJK COMPATIBILITY IDEOGRAPH-2F8C7 → CJK UNIFIED IDEOGRAPH-3A6C     # 
+
+66F6 ; 3ADA ;  ML      # ( 曶 → 㫚 ) CJK UNIFIED IDEOGRAPH-66F6 → CJK UNIFIED IDEOGRAPH-3ADA     # 
+
+2F8D1 ;        3AE4 ;  ML      # ( 㫤 → 㫤 ) CJK COMPATIBILITY IDEOGRAPH-2F8D1 → CJK UNIFIED IDEOGRAPH-3AE4     # 
+
+2F8D0 ;        3B08 ;  ML      # ( 㬈 → 㬈 ) CJK COMPATIBILITY IDEOGRAPH-2F8D0 → CJK UNIFIED IDEOGRAPH-3B08     # 
+
+2F8CE ;        3B19 ;  ML      # ( 㬙 → 㬙 ) CJK COMPATIBILITY IDEOGRAPH-2F8CE → CJK UNIFIED IDEOGRAPH-3B19     # 
+
+80F6 ; 3B35 ;  ML      # ( 胶 → 㬵 ) CJK UNIFIED IDEOGRAPH-80F6 → CJK UNIFIED IDEOGRAPH-3B35     # 
+
+5E50 ; 3B3A ;  ML      # ( 幐 → 㬺 ) CJK UNIFIED IDEOGRAPH-5E50 → CJK UNIFIED IDEOGRAPH-3B3A     # 
+
+4420 ; 3B3B ;  ML      # ( 䐠 → 㬻 ) CJK UNIFIED IDEOGRAPH-4420 → CJK UNIFIED IDEOGRAPH-3B3B     # 
+
+2F8DE ;        3B49 ;  ML      # ( 㭉 → 㭉 ) CJK COMPATIBILITY IDEOGRAPH-2F8DE → CJK UNIFIED IDEOGRAPH-3B49     # 
+
+FAD2 ; 3B9D ;  ML      # ( 㮝 → 㮝 ) CJK COMPATIBILITY IDEOGRAPH-FAD2 → CJK UNIFIED IDEOGRAPH-3B9D       # 
+2F8E7 ;        3B9D ;  ML      # ( 㮝 → 㮝 ) CJK COMPATIBILITY IDEOGRAPH-2F8E7 → CJK UNIFIED IDEOGRAPH-3B9D     # 
+
+69E9 ; 3BA3 ;  ML      # ( 槩 → 㮣 ) CJK UNIFIED IDEOGRAPH-69E9 → CJK UNIFIED IDEOGRAPH-3BA3     # 
+
+2F8EE ;        3C18 ;  ML      # ( 㰘 → 㰘 ) CJK COMPATIBILITY IDEOGRAPH-2F8EE → CJK UNIFIED IDEOGRAPH-3C18     # 
+
+2F8F2 ;        3C4E ;  ML      # ( 㱎 → 㱎 ) CJK COMPATIBILITY IDEOGRAPH-2F8F2 → CJK UNIFIED IDEOGRAPH-3C4E     # 
+
+2F90A ;        3D33 ;  ML      # ( 㴳 → 㴳 ) CJK COMPATIBILITY IDEOGRAPH-2F90A → CJK UNIFIED IDEOGRAPH-3D33     # 
+
+2F916 ;        3D96 ;  ML      # ( 㶖 → 㶖 ) CJK COMPATIBILITY IDEOGRAPH-2F916 → CJK UNIFIED IDEOGRAPH-3D96     # 
+
+2F92A ;        3EAC ;  ML      # ( 㺬 → 㺬 ) CJK COMPATIBILITY IDEOGRAPH-2F92A → CJK UNIFIED IDEOGRAPH-3EAC     # 
+
+2F92C ;        3EB8 ;  ML      # ( 㺸 → 㺸 ) CJK COMPATIBILITY IDEOGRAPH-2F92C → CJK UNIFIED IDEOGRAPH-3EB8     # 
+2F92D ;        3EB8 ;  ML      # ( 㺸 → 㺸 ) CJK COMPATIBILITY IDEOGRAPH-2F92D → CJK UNIFIED IDEOGRAPH-3EB8     # 
+
+2F933 ;        3F1B ;  ML      # ( 㼛 → 㼛 ) CJK COMPATIBILITY IDEOGRAPH-2F933 → CJK UNIFIED IDEOGRAPH-3F1B     # 
+
+2F93E ;        3FFC ;  ML      # ( 㿼 → 㿼 ) CJK COMPATIBILITY IDEOGRAPH-2F93E → CJK UNIFIED IDEOGRAPH-3FFC     # 
+
+2F93F ;        4008 ;  ML      # ( 䀈 → 䀈 ) CJK COMPATIBILITY IDEOGRAPH-2F93F → CJK UNIFIED IDEOGRAPH-4008     # 
+
+FAD3 ; 4018 ;  ML      # ( 䀘 → 䀘 ) CJK COMPATIBILITY IDEOGRAPH-FAD3 → CJK UNIFIED IDEOGRAPH-4018       # 
+
+9FC3 ; 4039 ;  ML      # ( 鿃 → 䀹 ) CJK UNIFIED IDEOGRAPH-9FC3 → CJK UNIFIED IDEOGRAPH-4039     # →䀹→
+FAD4 ; 4039 ;  ML      # ( 䀹 → 䀹 ) CJK COMPATIBILITY IDEOGRAPH-FAD4 → CJK UNIFIED IDEOGRAPH-4039       # 
+2F949 ;        4039 ;  ML      # ( 䀹 → 䀹 ) CJK COMPATIBILITY IDEOGRAPH-2F949 → CJK UNIFIED IDEOGRAPH-4039     # 
+
+6663 ; 403F ;  ML      # ( 晣 → 䀿 ) CJK UNIFIED IDEOGRAPH-6663 → CJK UNIFIED IDEOGRAPH-403F     # 
+
+2F94B ;        4046 ;  ML      # ( 䁆 → 䁆 ) CJK COMPATIBILITY IDEOGRAPH-2F94B → CJK UNIFIED IDEOGRAPH-4046     # 
+
+2F94C ;        4096 ;  ML      # ( 䂖 → 䂖 ) CJK COMPATIBILITY IDEOGRAPH-2F94C → CJK UNIFIED IDEOGRAPH-4096     # 
+
+2F951 ;        40E3 ;  ML      # ( 䃣 → 䃣 ) CJK COMPATIBILITY IDEOGRAPH-2F951 → CJK UNIFIED IDEOGRAPH-40E3     # 
+
+2F958 ;        412F ;  ML      # ( 䄯 → 䄯 ) CJK COMPATIBILITY IDEOGRAPH-2F958 → CJK UNIFIED IDEOGRAPH-412F     # 
+
+2F960 ;        4202 ;  ML      # ( 䈂 → 䈂 ) CJK COMPATIBILITY IDEOGRAPH-2F960 → CJK UNIFIED IDEOGRAPH-4202     # 
+
+2F964 ;        4227 ;  ML      # ( 䈧 → 䈧 ) CJK COMPATIBILITY IDEOGRAPH-2F964 → CJK UNIFIED IDEOGRAPH-4227     # 
+
+2F967 ;        42A0 ;  ML      # ( 䊠 → 䊠 ) CJK COMPATIBILITY IDEOGRAPH-2F967 → CJK UNIFIED IDEOGRAPH-42A0     # 
+
+2F96D ;        4301 ;  ML      # ( 䌁 → 䌁 ) CJK COMPATIBILITY IDEOGRAPH-2F96D → CJK UNIFIED IDEOGRAPH-4301     # 
+
+2F971 ;        4334 ;  ML      # ( 䌴 → 䌴 ) CJK COMPATIBILITY IDEOGRAPH-2F971 → CJK UNIFIED IDEOGRAPH-4334     # 
+
+2F974 ;        4359 ;  ML      # ( 䍙 → 䍙 ) CJK COMPATIBILITY IDEOGRAPH-2F974 → CJK UNIFIED IDEOGRAPH-4359     # 
+
+2F981 ;        43D5 ;  ML      # ( 䏕 → 䏕 ) CJK COMPATIBILITY IDEOGRAPH-2F981 → CJK UNIFIED IDEOGRAPH-43D5     # 
+
+2F8D7 ;        43D9 ;  ML      # ( 䏙 → 䏙 ) CJK COMPATIBILITY IDEOGRAPH-2F8D7 → CJK UNIFIED IDEOGRAPH-43D9     # 
+
+2F984 ;        440B ;  ML      # ( 䐋 → 䐋 ) CJK COMPATIBILITY IDEOGRAPH-2F984 → CJK UNIFIED IDEOGRAPH-440B     # 
+
+6726 ; 4443 ;  ML      # ( 朦 → 䑃 ) CJK UNIFIED IDEOGRAPH-6726 → CJK UNIFIED IDEOGRAPH-4443     # 
+
+2F98E ;        446B ;  ML      # ( 䑫 → 䑫 ) CJK COMPATIBILITY IDEOGRAPH-2F98E → CJK UNIFIED IDEOGRAPH-446B     # 
+
+2F9A7 ;        452B ;  ML      # ( 䔫 → 䔫 ) CJK COMPATIBILITY IDEOGRAPH-2F9A7 → CJK UNIFIED IDEOGRAPH-452B     # 
+
+2F9AE ;        455D ;  ML      # ( 䕝 → 䕝 ) CJK COMPATIBILITY IDEOGRAPH-2F9AE → CJK UNIFIED IDEOGRAPH-455D     # 
+
+2F9AF ;        4561 ;  ML      # ( 䕡 → 䕡 ) CJK COMPATIBILITY IDEOGRAPH-2F9AF → CJK UNIFIED IDEOGRAPH-4561     # 
+
+2F9B2 ;        456B ;  ML      # ( 䕫 → 䕫 ) CJK COMPATIBILITY IDEOGRAPH-2F9B2 → CJK UNIFIED IDEOGRAPH-456B     # 
+
+2F9BF ;        45D7 ;  ML      # ( 䗗 → 䗗 ) CJK COMPATIBILITY IDEOGRAPH-2F9BF → CJK UNIFIED IDEOGRAPH-45D7     # 
+
+2F9C2 ;        45F9 ;  ML      # ( 䗹 → 䗹 ) CJK COMPATIBILITY IDEOGRAPH-2F9C2 → CJK UNIFIED IDEOGRAPH-45F9     # 
+
+2F9C8 ;        4635 ;  ML      # ( 䘵 → 䘵 ) CJK COMPATIBILITY IDEOGRAPH-2F9C8 → CJK UNIFIED IDEOGRAPH-4635     # 
+
+8A1E ; 46B6 ;  ML      # ( 訞 → 䚶 ) CJK UNIFIED IDEOGRAPH-8A1E → CJK UNIFIED IDEOGRAPH-46B6     # 
+
+2F9CD ;        46BE ;  ML      # ( 䚾 → 䚾 ) CJK COMPATIBILITY IDEOGRAPH-2F9CD → CJK UNIFIED IDEOGRAPH-46BE     # 
+
+2F9CE ;        46C7 ;  ML      # ( 䛇 → 䛇 ) CJK COMPATIBILITY IDEOGRAPH-2F9CE → CJK UNIFIED IDEOGRAPH-46C7     # 
+
+2F9EF ;        4995 ;  ML      # ( 䦕 → 䦕 ) CJK COMPATIBILITY IDEOGRAPH-2F9EF → CJK UNIFIED IDEOGRAPH-4995     # 
+
+2F9F2 ;        49E6 ;  ML      # ( 䧦 → 䧦 ) CJK COMPATIBILITY IDEOGRAPH-2F9F2 → CJK UNIFIED IDEOGRAPH-49E6     # 
+
+2F9F8 ;        4A6E ;  ML      # ( 䩮 → 䩮 ) CJK COMPATIBILITY IDEOGRAPH-2F9F8 → CJK UNIFIED IDEOGRAPH-4A6E     # 
+
+2F9F9 ;        4A76 ;  ML      # ( 䩶 → 䩶 ) CJK COMPATIBILITY IDEOGRAPH-2F9F9 → CJK UNIFIED IDEOGRAPH-4A76     # 
+
+2F9FC ;        4AB2 ;  ML      # ( 䪲 → 䪲 ) CJK COMPATIBILITY IDEOGRAPH-2F9FC → CJK UNIFIED IDEOGRAPH-4AB2     # 
+
+2FA03 ;        4B33 ;  ML      # ( 䬳 → 䬳 ) CJK COMPATIBILITY IDEOGRAPH-2FA03 → CJK UNIFIED IDEOGRAPH-4B33     # 
+
+2FA08 ;        4BCE ;  ML      # ( 䯎 → 䯎 ) CJK COMPATIBILITY IDEOGRAPH-2FA08 → CJK UNIFIED IDEOGRAPH-4BCE     # 
+
+2FA0D ;        4CCE ;  ML      # ( 䳎 → 䳎 ) CJK COMPATIBILITY IDEOGRAPH-2FA0D → CJK UNIFIED IDEOGRAPH-4CCE     # 
+
+2FA0E ;        4CED ;  ML      # ( 䳭 → 䳭 ) CJK COMPATIBILITY IDEOGRAPH-2FA0E → CJK UNIFIED IDEOGRAPH-4CED     # 
+
+2FA11 ;        4CF8 ;  ML      # ( 䳸 → 䳸 ) CJK COMPATIBILITY IDEOGRAPH-2FA11 → CJK UNIFIED IDEOGRAPH-4CF8     # 
+
+2FA16 ;        4D56 ;  ML      # ( 䵖 → 䵖 ) CJK COMPATIBILITY IDEOGRAPH-2FA16 → CJK UNIFIED IDEOGRAPH-4D56     # 
+
+2F803 ;        20122 ; ML      # ( 𠄢 → 𠄢 ) CJK COMPATIBILITY IDEOGRAPH-2F803 → CJK UNIFIED IDEOGRAPH-20122   # 
+
+2F812 ;        2051C ; ML      # ( 𠔜 → 𠔜 ) CJK COMPATIBILITY IDEOGRAPH-2F812 → CJK UNIFIED IDEOGRAPH-2051C   # 
+
+2F91B ;        20525 ; ML      # ( 𠔥 → 𠔥 ) CJK COMPATIBILITY IDEOGRAPH-2F91B → CJK UNIFIED IDEOGRAPH-20525   # 
+
+2F816 ;        2054B ; ML      # ( 𠕋 → 𠕋 ) CJK COMPATIBILITY IDEOGRAPH-2F816 → CJK UNIFIED IDEOGRAPH-2054B   # 
+
+2F80D ;        2063A ; ML      # ( 𠘺 → 𠘺 ) CJK COMPATIBILITY IDEOGRAPH-2F80D → CJK UNIFIED IDEOGRAPH-2063A   # 
+
+2F9D9 ;        20804 ; ML      # ( 𠠄 → 𠠄 ) CJK COMPATIBILITY IDEOGRAPH-2F9D9 → CJK UNIFIED IDEOGRAPH-20804   # 
+
+2F9DD ;        208DE ; ML      # ( 𠣞 → 𠣞 ) CJK COMPATIBILITY IDEOGRAPH-2F9DD → CJK UNIFIED IDEOGRAPH-208DE   # 
+
+2F834 ;        20A2C ; ML      # ( 𠨬 → 𠨬 ) CJK COMPATIBILITY IDEOGRAPH-2F834 → CJK UNIFIED IDEOGRAPH-20A2C   # 
+
+2F838 ;        20B63 ; ML      # ( 𠭣 → 𠭣 ) CJK COMPATIBILITY IDEOGRAPH-2F838 → CJK UNIFIED IDEOGRAPH-20B63   # 
+
+2F859 ;        214E4 ; ML      # ( 𡓤 → 𡓤 ) CJK COMPATIBILITY IDEOGRAPH-2F859 → CJK UNIFIED IDEOGRAPH-214E4   # 
+
+2F860 ;        216A8 ; ML      # ( 𡚨 → 𡚨 ) CJK COMPATIBILITY IDEOGRAPH-2F860 → CJK UNIFIED IDEOGRAPH-216A8   # 
+
+2F861 ;        216EA ; ML      # ( 𡛪 → 𡛪 ) CJK COMPATIBILITY IDEOGRAPH-2F861 → CJK UNIFIED IDEOGRAPH-216EA   # 
+
+2F86C ;        219C8 ; ML      # ( 𡧈 → 𡧈 ) CJK COMPATIBILITY IDEOGRAPH-2F86C → CJK UNIFIED IDEOGRAPH-219C8   # 
+
+2F871 ;        21B18 ; ML      # ( 𡬘 → 𡬘 ) CJK COMPATIBILITY IDEOGRAPH-2F871 → CJK UNIFIED IDEOGRAPH-21B18   # 
+
+2F8F8 ;        21D0B ; ML      # ( 𡴋 → 𡴋 ) CJK COMPATIBILITY IDEOGRAPH-2F8F8 → CJK UNIFIED IDEOGRAPH-21D0B   # 
+
+2F87B ;        21DE4 ; ML      # ( 𡷤 → 𡷤 ) CJK COMPATIBILITY IDEOGRAPH-2F87B → CJK UNIFIED IDEOGRAPH-21DE4   # 
+
+2F87D ;        21DE6 ; ML      # ( 𡷦 → 𡷦 ) CJK COMPATIBILITY IDEOGRAPH-2F87D → CJK UNIFIED IDEOGRAPH-21DE6   # 
+
+2F889 ;        22183 ; ML      # ( 𢆃 → 𢆃 ) CJK COMPATIBILITY IDEOGRAPH-2F889 → CJK UNIFIED IDEOGRAPH-22183   # 
+
+2F939 ;        2219F ; ML      # ( 𢆟 → 𢆟 ) CJK COMPATIBILITY IDEOGRAPH-2F939 → CJK UNIFIED IDEOGRAPH-2219F   # 
+
+2F891 ;        22331 ; ML      # ( 𢌱 → 𢌱 ) CJK COMPATIBILITY IDEOGRAPH-2F891 → CJK UNIFIED IDEOGRAPH-22331   # 
+2F892 ;        22331 ; ML      # ( 𢌱 → 𢌱 ) CJK COMPATIBILITY IDEOGRAPH-2F892 → CJK UNIFIED IDEOGRAPH-22331   # 
+
+2F8A4 ;        226D4 ; ML      # ( 𢛔 → 𢛔 ) CJK COMPATIBILITY IDEOGRAPH-2F8A4 → CJK UNIFIED IDEOGRAPH-226D4   # 
+
+FAD0 ; 22844 ; ML      # ( 𢡄 → 𢡄 ) CJK COMPATIBILITY IDEOGRAPH-FAD0 → CJK UNIFIED IDEOGRAPH-22844     # 
+
+FACF ; 2284A ; ML      # ( 𢡊 → 𢡊 ) CJK COMPATIBILITY IDEOGRAPH-FACF → CJK UNIFIED IDEOGRAPH-2284A     # 
+
+2F8B8 ;        22B0C ; ML      # ( 𢬌 → 𢬌 ) CJK COMPATIBILITY IDEOGRAPH-2F8B8 → CJK UNIFIED IDEOGRAPH-22B0C   # 
+
+2F8BE ;        22BF1 ; ML      # ( 𢯱 → 𢯱 ) CJK COMPATIBILITY IDEOGRAPH-2F8BE → CJK UNIFIED IDEOGRAPH-22BF1   # 
+
+2F8CA ;        2300A ; ML      # ( 𣀊 → 𣀊 ) CJK COMPATIBILITY IDEOGRAPH-2F8CA → CJK UNIFIED IDEOGRAPH-2300A   # 
+
+2F897 ;        232B8 ; ML      # ( 𣊸 → 𣊸 ) CJK COMPATIBILITY IDEOGRAPH-2F897 → CJK UNIFIED IDEOGRAPH-232B8   # 
+
+2F980 ;        2335F ; ML      # ( 𣍟 → 𣍟 ) CJK COMPATIBILITY IDEOGRAPH-2F980 → CJK UNIFIED IDEOGRAPH-2335F   # 
+
+2F989 ;        23393 ; ML      # ( 𣎓 → 𣎓 ) CJK COMPATIBILITY IDEOGRAPH-2F989 → CJK UNIFIED IDEOGRAPH-23393   # 
+
+2F98A ;        2339C ; ML      # ( 𣎜 → 𣎜 ) CJK COMPATIBILITY IDEOGRAPH-2F98A → CJK UNIFIED IDEOGRAPH-2339C   # 
+
+2F8DD ;        233C3 ; ML      # ( 𣏃 → 𣏃 ) CJK COMPATIBILITY IDEOGRAPH-2F8DD → CJK UNIFIED IDEOGRAPH-233C3   # 
+
+FAD1 ; 233D5 ; ML      # ( 𣏕 → 𣏕 ) CJK COMPATIBILITY IDEOGRAPH-FAD1 → CJK UNIFIED IDEOGRAPH-233D5     # 
+
+2F8E3 ;        2346D ; ML      # ( 𣑭 → 𣑭 ) CJK COMPATIBILITY IDEOGRAPH-2F8E3 → CJK UNIFIED IDEOGRAPH-2346D   # 
+
+2F8EC ;        236A3 ; ML      # ( 𣚣 → 𣚣 ) CJK COMPATIBILITY IDEOGRAPH-2F8EC → CJK UNIFIED IDEOGRAPH-236A3   # 
+
+2F8F0 ;        238A7 ; ML      # ( 𣢧 → 𣢧 ) CJK COMPATIBILITY IDEOGRAPH-2F8F0 → CJK UNIFIED IDEOGRAPH-238A7   # 
+
+2F8F7 ;        23A8D ; ML      # ( 𣪍 → 𣪍 ) CJK COMPATIBILITY IDEOGRAPH-2F8F7 → CJK UNIFIED IDEOGRAPH-23A8D   # 
+
+2F8F9 ;        23AFA ; ML      # ( 𣫺 → 𣫺 ) CJK COMPATIBILITY IDEOGRAPH-2F8F9 → CJK UNIFIED IDEOGRAPH-23AFA   # 
+
+2F8FB ;        23CBC ; ML      # ( 𣲼 → 𣲼 ) CJK COMPATIBILITY IDEOGRAPH-2F8FB → CJK UNIFIED IDEOGRAPH-23CBC   # 
+
+2F906 ;        23D1E ; ML      # ( 𣴞 → 𣴞 ) CJK COMPATIBILITY IDEOGRAPH-2F906 → CJK UNIFIED IDEOGRAPH-23D1E   # 
+
+2F90D ;        23ED1 ; ML      # ( 𣻑 → 𣻑 ) CJK COMPATIBILITY IDEOGRAPH-2F90D → CJK UNIFIED IDEOGRAPH-23ED1   # 
+
+2F910 ;        23F5E ; ML      # ( 𣽞 → 𣽞 ) CJK COMPATIBILITY IDEOGRAPH-2F910 → CJK UNIFIED IDEOGRAPH-23F5E   # 
+
+2F911 ;        23F8E ; ML      # ( 𣾎 → 𣾎 ) CJK COMPATIBILITY IDEOGRAPH-2F911 → CJK UNIFIED IDEOGRAPH-23F8E   # 
+
+2F91D ;        24263 ; ML      # ( 𤉣 → 𤉣 ) CJK COMPATIBILITY IDEOGRAPH-2F91D → CJK UNIFIED IDEOGRAPH-24263   # 
+
+FA6C ; 242EE ; ML      # ( 𤋮 → 𤋮 ) CJK COMPATIBILITY IDEOGRAPH-FA6C → CJK UNIFIED IDEOGRAPH-242EE     # 
+
+2F91F ;        243AB ; ML      # ( 𤎫 → 𤎫 ) CJK COMPATIBILITY IDEOGRAPH-2F91F → CJK UNIFIED IDEOGRAPH-243AB   # 
+
+2F923 ;        24608 ; ML      # ( 𤘈 → 𤘈 ) CJK COMPATIBILITY IDEOGRAPH-2F923 → CJK UNIFIED IDEOGRAPH-24608   # 
+
+2F926 ;        24735 ; ML      # ( 𤜵 → 𤜵 ) CJK COMPATIBILITY IDEOGRAPH-2F926 → CJK UNIFIED IDEOGRAPH-24735   # 
+
+2F927 ;        24814 ; ML      # ( 𤠔 → 𤠔 ) CJK COMPATIBILITY IDEOGRAPH-2F927 → CJK UNIFIED IDEOGRAPH-24814   # 
+
+2F935 ;        24C36 ; ML      # ( 𤰶 → 𤰶 ) CJK COMPATIBILITY IDEOGRAPH-2F935 → CJK UNIFIED IDEOGRAPH-24C36   # 
+
+2F937 ;        24C92 ; ML      # ( 𤲒 → 𤲒 ) CJK COMPATIBILITY IDEOGRAPH-2F937 → CJK UNIFIED IDEOGRAPH-24C92   # 
+
+2F93B ;        24FA1 ; ML      # ( 𤾡 → 𤾡 ) CJK COMPATIBILITY IDEOGRAPH-2F93B → CJK UNIFIED IDEOGRAPH-24FA1   # 
+
+2F93C ;        24FB8 ; ML      # ( 𤾸 → 𤾸 ) CJK COMPATIBILITY IDEOGRAPH-2F93C → CJK UNIFIED IDEOGRAPH-24FB8   # 
+
+2F93D ;        25044 ; ML      # ( 𥁄 → 𥁄 ) CJK COMPATIBILITY IDEOGRAPH-2F93D → CJK UNIFIED IDEOGRAPH-25044   # 
+
+2F942 ;        250F2 ; ML      # ( 𥃲 → 𥃲 ) CJK COMPATIBILITY IDEOGRAPH-2F942 → CJK UNIFIED IDEOGRAPH-250F2   # 
+
+2F941 ;        250F3 ; ML      # ( 𥃳 → 𥃳 ) CJK COMPATIBILITY IDEOGRAPH-2F941 → CJK UNIFIED IDEOGRAPH-250F3   # 
+
+2F943 ;        25119 ; ML      # ( 𥄙 → 𥄙 ) CJK COMPATIBILITY IDEOGRAPH-2F943 → CJK UNIFIED IDEOGRAPH-25119   # 
+
+2F944 ;        25133 ; ML      # ( 𥄳 → 𥄳 ) CJK COMPATIBILITY IDEOGRAPH-2F944 → CJK UNIFIED IDEOGRAPH-25133   # 
+
+FAD5 ; 25249 ; ML      # ( 𥉉 → 𥉉 ) CJK COMPATIBILITY IDEOGRAPH-FAD5 → CJK UNIFIED IDEOGRAPH-25249     # 
+
+2F94D ;        2541D ; ML      # ( 𥐝 → 𥐝 ) CJK COMPATIBILITY IDEOGRAPH-2F94D → CJK UNIFIED IDEOGRAPH-2541D   # 
+
+2F952 ;        25626 ; ML      # ( 𥘦 → 𥘦 ) CJK COMPATIBILITY IDEOGRAPH-2F952 → CJK UNIFIED IDEOGRAPH-25626   # 
+
+2F954 ;        2569A ; ML      # ( 𥚚 → 𥚚 ) CJK COMPATIBILITY IDEOGRAPH-2F954 → CJK UNIFIED IDEOGRAPH-2569A   # 
+
+2F955 ;        256C5 ; ML      # ( 𥛅 → 𥛅 ) CJK COMPATIBILITY IDEOGRAPH-2F955 → CJK UNIFIED IDEOGRAPH-256C5   # 
+
+2F95C ;        2597C ; ML      # ( 𥥼 → 𥥼 ) CJK COMPATIBILITY IDEOGRAPH-2F95C → CJK UNIFIED IDEOGRAPH-2597C   # 
+
+2F95D ;        25AA7 ; ML      # ( 𥪧 → 𥪧 ) CJK COMPATIBILITY IDEOGRAPH-2F95D → CJK UNIFIED IDEOGRAPH-25AA7   # 
+2F95E ;        25AA7 ; ML      # ( 𥪧 → 𥪧 ) CJK COMPATIBILITY IDEOGRAPH-2F95E → CJK UNIFIED IDEOGRAPH-25AA7   # 
+
+2F961 ;        25BAB ; ML      # ( 𥮫 → 𥮫 ) CJK COMPATIBILITY IDEOGRAPH-2F961 → CJK UNIFIED IDEOGRAPH-25BAB   # 
+
+2F965 ;        25C80 ; ML      # ( 𥲀 → 𥲀 ) CJK COMPATIBILITY IDEOGRAPH-2F965 → CJK UNIFIED IDEOGRAPH-25C80   # 
+
+FAD6 ; 25CD0 ; ML      # ( 𥳐 → 𥳐 ) CJK COMPATIBILITY IDEOGRAPH-FAD6 → CJK UNIFIED IDEOGRAPH-25CD0     # 
+
+2F96B ;        25F86 ; ML      # ( 𥾆 → 𥾆 ) CJK COMPATIBILITY IDEOGRAPH-2F96B → CJK UNIFIED IDEOGRAPH-25F86   # 
+
+2F898 ;        261DA ; ML      # ( 𦇚 → 𦇚 ) CJK COMPATIBILITY IDEOGRAPH-2F898 → CJK UNIFIED IDEOGRAPH-261DA   # 
+
+2F972 ;        26228 ; ML      # ( 𦈨 → 𦈨 ) CJK COMPATIBILITY IDEOGRAPH-2F972 → CJK UNIFIED IDEOGRAPH-26228   # 
+
+2F973 ;        26247 ; ML      # ( 𦉇 → 𦉇 ) CJK COMPATIBILITY IDEOGRAPH-2F973 → CJK UNIFIED IDEOGRAPH-26247   # 
+
+2F975 ;        262D9 ; ML      # ( 𦋙 → 𦋙 ) CJK COMPATIBILITY IDEOGRAPH-2F975 → CJK UNIFIED IDEOGRAPH-262D9   # 
+
+2F977 ;        2633E ; ML      # ( 𦌾 → 𦌾 ) CJK COMPATIBILITY IDEOGRAPH-2F977 → CJK UNIFIED IDEOGRAPH-2633E   # 
+
+2F97B ;        264DA ; ML      # ( 𦓚 → 𦓚 ) CJK COMPATIBILITY IDEOGRAPH-2F97B → CJK UNIFIED IDEOGRAPH-264DA   # 
+
+2F97C ;        26523 ; ML      # ( 𦔣 → 𦔣 ) CJK COMPATIBILITY IDEOGRAPH-2F97C → CJK UNIFIED IDEOGRAPH-26523   # 
+
+2F97E ;        265A8 ; ML      # ( 𦖨 → 𦖨 ) CJK COMPATIBILITY IDEOGRAPH-2F97E → CJK UNIFIED IDEOGRAPH-265A8   # 
+
+2F987 ;        267A7 ; ML      # ( 𦞧 → 𦞧 ) CJK COMPATIBILITY IDEOGRAPH-2F987 → CJK UNIFIED IDEOGRAPH-267A7   # 
+
+2F988 ;        267B5 ; ML      # ( 𦞵 → 𦞵 ) CJK COMPATIBILITY IDEOGRAPH-2F988 → CJK UNIFIED IDEOGRAPH-267B5   # 
+
+2F997 ;        26B3C ; ML      # ( 𦬼 → 𦬼 ) CJK COMPATIBILITY IDEOGRAPH-2F997 → CJK UNIFIED IDEOGRAPH-26B3C   # 
+
+2F9A4 ;        26C36 ; ML      # ( 𦰶 → 𦰶 ) CJK COMPATIBILITY IDEOGRAPH-2F9A4 → CJK UNIFIED IDEOGRAPH-26C36   # 
+
+2F9A6 ;        26CD5 ; ML      # ( 𦳕 → 𦳕 ) CJK COMPATIBILITY IDEOGRAPH-2F9A6 → CJK UNIFIED IDEOGRAPH-26CD5   # 
+
+2F9A5 ;        26D6B ; ML      # ( 𦵫 → 𦵫 ) CJK COMPATIBILITY IDEOGRAPH-2F9A5 → CJK UNIFIED IDEOGRAPH-26D6B   # 
+
+2F9AD ;        26F2C ; ML      # ( 𦼬 → 𦼬 ) CJK COMPATIBILITY IDEOGRAPH-2F9AD → CJK UNIFIED IDEOGRAPH-26F2C   # 
+
+2F9B0 ;        26FB1 ; ML      # ( 𦾱 → 𦾱 ) CJK COMPATIBILITY IDEOGRAPH-2F9B0 → CJK UNIFIED IDEOGRAPH-26FB1   # 
+
+2F9B1 ;        270D2 ; ML      # ( 𧃒 → 𧃒 ) CJK COMPATIBILITY IDEOGRAPH-2F9B1 → CJK UNIFIED IDEOGRAPH-270D2   # 
+
+2F9AB ;        273CA ; ML      # ( 𧏊 → 𧏊 ) CJK COMPATIBILITY IDEOGRAPH-2F9AB → CJK UNIFIED IDEOGRAPH-273CA   # 
+
+2F9C5 ;        27667 ; ML      # ( 𧙧 → 𧙧 ) CJK COMPATIBILITY IDEOGRAPH-2F9C5 → CJK UNIFIED IDEOGRAPH-27667   # 
+
+2F9CB ;        278AE ; ML      # ( 𧢮 → 𧢮 ) CJK COMPATIBILITY IDEOGRAPH-2F9CB → CJK UNIFIED IDEOGRAPH-278AE   # 
+
+2F9CC ;        27966 ; ML      # ( 𧥦 → 𧥦 ) CJK COMPATIBILITY IDEOGRAPH-2F9CC → CJK UNIFIED IDEOGRAPH-27966   # 
+
+2F9D3 ;        27CA8 ; ML      # ( 𧲨 → 𧲨 ) CJK COMPATIBILITY IDEOGRAPH-2F9D3 → CJK UNIFIED IDEOGRAPH-27CA8   # 
+
+FAD7 ; 27ED3 ; ML      # ( 𧻓 → 𧻓 ) CJK COMPATIBILITY IDEOGRAPH-FAD7 → CJK UNIFIED IDEOGRAPH-27ED3     # 
+
+2F9D8 ;        27F2F ; ML      # ( 𧼯 → 𧼯 ) CJK COMPATIBILITY IDEOGRAPH-2F9D8 → CJK UNIFIED IDEOGRAPH-27F2F   # 
+
+2F9E0 ;        285D2 ; ML      # ( 𨗒 → 𨗒 ) CJK COMPATIBILITY IDEOGRAPH-2F9E0 → CJK UNIFIED IDEOGRAPH-285D2   # 
+
+2F9E1 ;        285ED ; ML      # ( 𨗭 → 𨗭 ) CJK COMPATIBILITY IDEOGRAPH-2F9E1 → CJK UNIFIED IDEOGRAPH-285ED   # 
+
+2F9E5 ;        2872E ; ML      # ( 𨜮 → 𨜮 ) CJK COMPATIBILITY IDEOGRAPH-2F9E5 → CJK UNIFIED IDEOGRAPH-2872E   # 
+
+2F9ED ;        28BFA ; ML      # ( 𨯺 → 𨯺 ) CJK COMPATIBILITY IDEOGRAPH-2F9ED → CJK UNIFIED IDEOGRAPH-28BFA   # 
+
+2F9F1 ;        28D77 ; ML      # ( 𨵷 → 𨵷 ) CJK COMPATIBILITY IDEOGRAPH-2F9F1 → CJK UNIFIED IDEOGRAPH-28D77   # 
+
+2F9F6 ;        29145 ; ML      # ( 𩅅 → 𩅅 ) CJK COMPATIBILITY IDEOGRAPH-2F9F6 → CJK UNIFIED IDEOGRAPH-29145   # 
+
+2F81C ;        291DF ; ML      # ( 𩇟 → 𩇟 ) CJK COMPATIBILITY IDEOGRAPH-2F81C → CJK UNIFIED IDEOGRAPH-291DF   # 
+
+2F9F7 ;        2921A ; ML      # ( 𩈚 → 𩈚 ) CJK COMPATIBILITY IDEOGRAPH-2F9F7 → CJK UNIFIED IDEOGRAPH-2921A   # 
+
+2F9FB ;        2940A ; ML      # ( 𩐊 → 𩐊 ) CJK COMPATIBILITY IDEOGRAPH-2F9FB → CJK UNIFIED IDEOGRAPH-2940A   # 
+
+2F9FD ;        29496 ; ML      # ( 𩒖 → 𩒖 ) CJK COMPATIBILITY IDEOGRAPH-2F9FD → CJK UNIFIED IDEOGRAPH-29496   # 
+
+2FA01 ;        295B6 ; ML      # ( 𩖶 → 𩖶 ) CJK COMPATIBILITY IDEOGRAPH-2FA01 → CJK UNIFIED IDEOGRAPH-295B6   # 
+
+2FA09 ;        29B30 ; ML      # ( 𩬰 → 𩬰 ) CJK COMPATIBILITY IDEOGRAPH-2FA09 → CJK UNIFIED IDEOGRAPH-29B30   # 
+
+2FA10 ;        2A0CE ; ML      # ( 𪃎 → 𪃎 ) CJK COMPATIBILITY IDEOGRAPH-2FA10 → CJK UNIFIED IDEOGRAPH-2A0CE   # 
+
+2FA12 ;        2A105 ; ML      # ( 𪄅 → 𪄅 ) CJK COMPATIBILITY IDEOGRAPH-2FA12 → CJK UNIFIED IDEOGRAPH-2A105   # 
+
+2FA13 ;        2A20E ; ML      # ( 𪈎 → 𪈎 ) CJK COMPATIBILITY IDEOGRAPH-2FA13 → CJK UNIFIED IDEOGRAPH-2A20E   # 
+
+2FA14 ;        2A291 ; ML      # ( 𪊑 → 𪊑 ) CJK COMPATIBILITY IDEOGRAPH-2FA14 → CJK UNIFIED IDEOGRAPH-2A291   # 
+
+2F88F ;        2A392 ; ML      # ( 𪎒 → 𪎒 ) CJK COMPATIBILITY IDEOGRAPH-2F88F → CJK UNIFIED IDEOGRAPH-2A392   # 
+
+2FA1D ;        2A600 ; ML      # ( 𪘀 → 𪘀 ) CJK COMPATIBILITY IDEOGRAPH-2FA1D → CJK UNIFIED IDEOGRAPH-2A600   # 
+
+# total for (ML): 4980
+
+
+# Mixed-Script, Anycase Confusables
+
+05AD ; 0596 ;  MA      # ( ֭ → ֖ ) HEBREW ACCENT DEHI → HEBREW ACCENT TIPEHA     # 
+
+05AE ; 0598 ;  MA      # ( ֮ → ֘ ) HEBREW ACCENT ZINOR → HEBREW ACCENT ZARQA     # 
+
+05A8 ; 0599 ;  MA      # ( ֨ → ֙ ) HEBREW ACCENT QADMA → HEBREW ACCENT PASHTA    # 
+
+05A4 ; 059A ;  MA      # ( ֤ → ֚ ) HEBREW ACCENT MAHAPAKH → HEBREW ACCENT YETIV  # 
+
+06EC ; 06DF ;  MA      # ( ۬ → ۟ ) ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE → ARABIC SMALL HIGH ROUNDED ZERO  # 
+
+0619 ; 0313 ;  MA      # ( ؙ → ̓ ) ARABIC SMALL DAMMA → COMBINING COMMA ABOVE    # →ُ→
+0343 ; 0313 ;  MA      # ( ̓ → ̓ ) COMBINING GREEK KORONIS → COMBINING COMMA ABOVE       # 
+0315 ; 0313 ;  MA      # ( ̕ → ̓ ) COMBINING COMMA ABOVE RIGHT → COMBINING COMMA ABOVE   # 
+064F ; 0313 ;  MA      # ( ُ → ̓ ) ARABIC DAMMA → COMBINING COMMA ABOVE  # 
+
+059C ; 0301 ;  MA      # ( ֜ → ́ ) HEBREW ACCENT GERESH → COMBINING ACUTE ACCENT # 
+059D ; 0301 ;  MA      # ( ֝ → ́ ) HEBREW ACCENT GERESH MUQDAM → COMBINING ACUTE ACCENT  # →֜→
+0747 ; 0301 ;  MA      # ( ݇ → ́ ) SYRIAC OBLIQUE LINE ABOVE → COMBINING ACUTE ACCENT    # 
+0341 ; 0301 ;  MA      # ( ́ → ́ ) COMBINING ACUTE TONE MARK → COMBINING ACUTE ACCENT    # 
+0954 ; 0301 ;  MA      # ( ॔ → ́ ) DEVANAGARI ACUTE ACCENT → COMBINING ACUTE ACCENT     # 
+
+0340 ; 0300 ;  MA      # ( ̀ → ̀ ) COMBINING GRAVE TONE MARK → COMBINING GRAVE ACCENT    # 
+0953 ; 0300 ;  MA      # ( ॓ → ̀ ) DEVANAGARI GRAVE ACCENT → COMBINING GRAVE ACCENT     # 
+
+030C ; 0306 ;  MA      # ( ̌ → ̆ ) COMBINING CARON → COMBINING BREVE     # 
+036E ; 0306 ;  MA      # ( ͮ → ̆ ) COMBINING LATIN SMALL LETTER V → COMBINING BREVE      # →̌→
+
+0310 ; 0306 0307 ;     MA      # ( ̐ → ̆̇ ) COMBINING CANDRABINDU → COMBINING BREVE, COMBINING DOT ABOVE        # 
+0901 ; 0306 0307 ;     MA      # ( ँ → ̆̇ ) DEVANAGARI SIGN CANDRABINDU → COMBINING BREVE, COMBINING DOT ABOVE # →̐→
+0981 ; 0306 0307 ;     MA      # ( ঁ → ̆̇ ) BENGALI SIGN CANDRABINDU → COMBINING BREVE, COMBINING DOT ABOVE    # →̐→
+0A81 ; 0306 0307 ;     MA      # ( ઁ → ̆̇ ) GUJARATI SIGN CANDRABINDU → COMBINING BREVE, COMBINING DOT ABOVE   # →̐→
+0B01 ; 0306 0307 ;     MA      # ( ଁ → ̆̇ ) ORIYA SIGN CANDRABINDU → COMBINING BREVE, COMBINING DOT ABOVE      # →̐→
+
+0311 ; 0302 ;  MA      # ( ̑ → ̂ ) COMBINING INVERTED BREVE → COMBINING CIRCUMFLEX ACCENT        # 
+07EE ; 0302 ;  MA      # ( ߮ → ̂ ) NKO COMBINING LONG DESCENDING TONE → COMBINING CIRCUMFLEX ACCENT      # 
+
+05AF ; 030A ;  MA      # ( ֯ → ̊ ) HEBREW MARK MASORA CIRCLE → COMBINING RING ABOVE      # 
+17D3 ; 030A ;  MA      # ( ៓ → ̊ ) KHMER SIGN BATHAMASAT → COMBINING RING ABOVE # 
+0B82 ; 030A ;  MA      # ( ஂ → ̊ ) TAMIL SIGN ANUSVARA → COMBINING RING ABOVE   # 
+0E4D ; 030A ;  MA      # ( ํ → ̊ ) THAI CHARACTER NIKHAHIT → COMBINING RING ABOVE       # 
+0ECD ; 030A ;  MA      # ( ໍ → ̊ ) LAO NIGGAHITA → COMBINING RING ABOVE # 
+1036 ; 030A ;  MA      # ( ံ → ̊ ) MYANMAR SIGN ANUSVARA → COMBINING RING ABOVE # 
+17C6 ; 030A ;  MA      # ( ំ → ̊ ) KHMER SIGN NIKAHIT → COMBINING RING ABOVE    # 
+309A ; 030A ;  MA      # ( ゚ → ̊ ) COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK → COMBINING RING ABOVE    # 
+0366 ; 030A ;  MA      # ( ͦ → ̊ ) COMBINING LATIN SMALL LETTER O → COMBINING RING ABOVE # 
+
+07F3 ; 0308 ;  MA      # ( ߳ → ̈ ) NKO COMBINING DOUBLE DOT ABOVE → COMBINING DIAERESIS  # 
+
+0342 ; 0303 ;  MA      # ( ͂ → ̃ ) COMBINING GREEK PERISPOMENI → COMBINING TILDE # 
+
+05C4 ; 0307 ;  MA      # ( ׄ → ̇ ) HEBREW MARK UPPER DOT → COMBINING DOT ABOVE   # 
+0740 ; 0307 ;  MA      # ( ݀ → ̇ ) SYRIAC FEMININE DOT → COMBINING DOT ABOVE     # →݁→
+0741 ; 0307 ;  MA      # ( ݁ → ̇ ) SYRIAC QUSHSHAYA → COMBINING DOT ABOVE        # 
+0358 ; 0307 ;  MA      # ( ͘ → ̇ ) COMBINING DOT ABOVE RIGHT → COMBINING DOT ABOVE       # 
+05B9 ; 0307 ;  MA      # ( ֹ → ̇ ) HEBREW POINT HOLAM → COMBINING DOT ABOVE      # 
+05BA ; 0307 ;  MA      # ( ֺ → ̇ ) HEBREW POINT HOLAM HASER FOR VAV → COMBINING DOT ABOVE        # →ׁ→
+05C2 ; 0307 ;  MA      # ( ׂ → ̇ ) HEBREW POINT SIN DOT → COMBINING DOT ABOVE    # 
+05C1 ; 0307 ;  MA      # ( ׁ → ̇ ) HEBREW POINT SHIN DOT → COMBINING DOT ABOVE   # 
+07ED ; 0307 ;  MA      # ( ߭ → ̇ ) NKO COMBINING SHORT RISING TONE → COMBINING DOT ABOVE # 
+0902 ; 0307 ;  MA      # ( ं → ̇ ) DEVANAGARI SIGN ANUSVARA → COMBINING DOT ABOVE       # 
+0A02 ; 0307 ;  MA      # ( ਂ → ̇ ) GURMUKHI SIGN BINDI → COMBINING DOT ABOVE    # 
+0A82 ; 0307 ;  MA      # ( ં → ̇ ) GUJARATI SIGN ANUSVARA → COMBINING DOT ABOVE # 
+0BCD ; 0307 ;  MA      # ( ் → ̇ ) TAMIL SIGN VIRAMA → COMBINING DOT ABOVE      # 
+
+0337 ; 0338 ;  MA      # ( ̷ → ̸ ) COMBINING SHORT SOLIDUS OVERLAY → COMBINING LONG SOLIDUS OVERLAY      # 
+
+0322 ; 0328 ;  MA      # ( ̢ → ̨ ) COMBINING RETROFLEX HOOK BELOW → COMBINING OGONEK     # 
+0345 ; 0328 ;  MA      # ( ͅ → ̨ ) COMBINING GREEK YPOGEGRAMMENI → COMBINING OGONEK      # 
+
+0305 ; 0304 ;  MA      # ( ̅ → ̄ ) COMBINING OVERLINE → COMBINING MACRON # 
+07EB ; 0304 ;  MA      # ( ߫ → ̄ ) NKO COMBINING SHORT HIGH TONE → COMBINING MACRON      # 
+
+0347 ; 0333 ;  MA      # ( ͇ → ̳ ) COMBINING EQUALS SIGN BELOW → COMBINING DOUBLE LOW LINE       # 
+
+302C ; 0309 ;  MA      # ( 〬 → ̉ ) IDEOGRAPHIC DEPARTING TONE MARK → COMBINING HOOK ABOVE       # 
+
+05C5 ; 0323 ;  MA      # ( ׅ → ̣ ) HEBREW MARK LOWER DOT → COMBINING DOT BELOW   # 
+05B4 ; 0323 ;  MA      # ( ִ → ̣ ) HEBREW POINT HIRIQ → COMBINING DOT BELOW      # 
+093C ; 0323 ;  MA      # ( ़ → ̣ ) DEVANAGARI SIGN NUKTA → COMBINING DOT BELOW  # 
+09BC ; 0323 ;  MA      # ( ় → ̣ ) BENGALI SIGN NUKTA → COMBINING DOT BELOW     # 
+0A3C ; 0323 ;  MA      # ( ਼ → ̣ ) GURMUKHI SIGN NUKTA → COMBINING DOT BELOW    # 
+0ABC ; 0323 ;  MA      # ( ઼ → ̣ ) GUJARATI SIGN NUKTA → COMBINING DOT BELOW    # 
+0B3C ; 0323 ;  MA      # ( ଼ → ̣ ) ORIYA SIGN NUKTA → COMBINING DOT BELOW       # 
+10A3A ;        0323 ;  MA      # ( 𐨺 → ̣ ) KHAROSHTHI SIGN DOT BELOW → COMBINING DOT BELOW     # 
+
+302D ; 0325 ;  MA      # ( 〭 → ̥ ) IDEOGRAPHIC ENTERING TONE MARK → COMBINING RING BELOW        # 
+
+0327 ; 0326 ;  MA      # ( ̧ → ̦ ) COMBINING CEDILLA → COMBINING COMMA BELOW     # →̡→
+0321 ; 0326 ;  MA      # ( ̡ → ̦ ) COMBINING PALATALIZED HOOK BELOW → COMBINING COMMA BELOW      # 
+0339 ; 0326 ;  MA      # ( ̹ → ̦ ) COMBINING RIGHT HALF RING BELOW → COMBINING COMMA BELOW       # →̧→→̡→
+
+0952 ; 0331 ;  MA      # ( ॒ → ̱ ) DEVANAGARI STRESS SIGN ANUDATTA → COMBINING MACRON BELOW     # 
+0320 ; 0331 ;  MA      # ( ̠ → ̱ ) COMBINING MINUS SIGN BELOW → COMBINING MACRON BELOW   # 
+
+0336 ; 0335 ;  MA      # ( ̶ → ̵ ) COMBINING LONG STROKE OVERLAY → COMBINING SHORT STROKE OVERLAY        # 
+
+FC5E ; FE72 0651 ;     MA      #* ( ‎ﱞ‎ → ‎ﹲّ‎ ) ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM → ARABIC DAMMATAN ISOLATED FORM, ARABIC SHADDA    # 
+
+FC5F ; FE74 0651 ;     MA      #* ( ‎ﱟ‎ → ‎ﹴّ‎ ) ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM → ARABIC KASRATAN ISOLATED FORM, ARABIC SHADDA    # 
+
+0618 ; 064E ;  MA      # ( ؘ → َ ) ARABIC SMALL FATHA → ARABIC FATHA     # 
+
+FCF2 ; FE77 0651 ;     MA      # ( ‎ﳲ‎ → ‎ﹷّ‎ ) ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM → ARABIC FATHA MEDIAL FORM, ARABIC SHADDA       # 
+
+FC60 ; FE76 0651 ;     MA      #* ( ‎ﱠ‎ → ‎ﹶّ‎ ) ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM → ARABIC FATHA ISOLATED FORM, ARABIC SHADDA  # 
+FC62 ; FE76 0651 ;     MA      #* ( ‎ﱢ‎ → ‎ﹶّ‎ ) ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM → ARABIC FATHA ISOLATED FORM, ARABIC SHADDA  # →‎ﱠ‎→
+
+FCF3 ; FE79 0651 ;     MA      # ( ‎ﳳ‎ → ‎ﹹّ‎ ) ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM → ARABIC DAMMA MEDIAL FORM, ARABIC SHADDA       # 
+
+FC61 ; FE78 0651 ;     MA      #* ( ‎ﱡ‎ → ‎ﹸّ‎ ) ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM → ARABIC DAMMA ISOLATED FORM, ARABIC SHADDA  # 
+
+061A ; 0650 ;  MA      # ( ؚ → ِ ) ARABIC SMALL KASRA → ARABIC KASRA     # 
+
+FCF4 ; FE7B 0651 ;     MA      # ( ‎ﳴ‎ → ‎ﹻّ‎ ) ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM → ARABIC KASRA MEDIAL FORM, ARABIC SHADDA       # 
+
+FC63 ; FE7C 0670 ;     MA      #* ( ‎ﱣ‎ → ‎ﹼٰ‎ ) ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM → ARABIC SHADDA ISOLATED FORM, ARABIC LETTER SUPERSCRIPT ALEF     # 
+
+0742 ; 073C ;  MA      # ( ݂ → ܼ ) SYRIAC RUKKAKHA → SYRIAC HBASA-ESASA DOTTED   # 
+
+0A03 ; 0983 ;  MA      # ( ਃ → ঃ ) GURMUKHI SIGN VISARGA → BENGALI SIGN VISARGA        # 
+0C03 ; 0983 ;  MA      # ( ః → ঃ ) TELUGU SIGN VISARGA → BENGALI SIGN VISARGA  # →ਃ→
+0C83 ; 0983 ;  MA      # ( ಃ → ঃ ) KANNADA SIGN VISARGA → BENGALI SIGN VISARGA # →ః→→ਃ→
+0D03 ; 0983 ;  MA      # ( ഃ → ঃ ) MALAYALAM SIGN VISARGA → BENGALI SIGN VISARGA       # →ಃ→→ః→→ਃ→
+0D83 ; 0983 ;  MA      # ( ඃ → ঃ ) SINHALA SIGN VISARGAYA → BENGALI SIGN VISARGA       # →ഃ→→ಃ→→ః→→ਃ→
+1038 ; 0983 ;  MA      # ( း → ঃ ) MYANMAR SIGN VISARGA → BENGALI SIGN VISARGA # →ඃ→→ഃ→→ಃ→→ః→→ਃ→
+
+17CB ; 0E48 ;  MA      # ( ់ → ่ ) KHMER SIGN BANTOC → THAI CHARACTER MAI EK   # 
+0EC8 ; 0E48 ;  MA      # ( ່ → ่ ) LAO TONE MAI EK → THAI CHARACTER MAI EK     # 
+
+0EC9 ; 0E49 ;  MA      # ( ້ → ้ ) LAO TONE MAI THO → THAI CHARACTER MAI THO   # 
+
+0ECA ; 0E4A ;  MA      # ( ໊ → ๊ ) LAO TONE MAI TI → THAI CHARACTER MAI TRI    # 
+
+0ECB ; 0E4B ;  MA      # ( ໋ → ๋ ) LAO TONE MAI CATAWA → THAI CHARACTER MAI CHATTAWA   # 
+
+309B ; FF9E ;  MA      #* ( ゛ → ゙ ) KATAKANA-HIRAGANA VOICED SOUND MARK → HALFWIDTH KATAKANA VOICED SOUND MARK # 
+
+309C ; FF9F ;  MA      #* ( ゜ → ゚ ) KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK → HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK       # 
+
+180E ; 0020 ;  MA      #* ( ᠎ →   ) MONGOLIAN VOWEL SEPARATOR → SPACE    # 
+2028 ; 0020 ;  MA      #* (  →   ) LINE SEPARATOR → SPACE  # 
+2029 ; 0020 ;  MA      #* (  →   ) PARAGRAPH SEPARATOR → SPACE     # 
+2000 ; 0020 ;  MA      #* (   →   ) EN QUAD → SPACE      # 
+2001 ; 0020 ;  MA      #* (   →   ) EM QUAD → SPACE      # 
+2002 ; 0020 ;  MA      #* (   →   ) EN SPACE → SPACE     # 
+2003 ; 0020 ;  MA      #* (   →   ) EM SPACE → SPACE     # 
+2004 ; 0020 ;  MA      #* (   →   ) THREE-PER-EM SPACE → SPACE   # 
+2005 ; 0020 ;  MA      #* (   →   ) FOUR-PER-EM SPACE → SPACE    # 
+2006 ; 0020 ;  MA      #* (   →   ) SIX-PER-EM SPACE → SPACE     # 
+2008 ; 0020 ;  MA      #* (   →   ) PUNCTUATION SPACE → SPACE    # 
+2009 ; 0020 ;  MA      #* (   →   ) THIN SPACE → SPACE   # 
+200A ; 0020 ;  MA      #* (   →   ) HAIR SPACE → SPACE   # 
+205F ; 0020 ;  MA      #* (   →   ) MEDIUM MATHEMATICAL SPACE → SPACE    # 
+00A0 ; 0020 ;  MA      #* (   →   ) NO-BREAK SPACE → SPACE        # 
+2007 ; 0020 ;  MA      #* (   →   ) FIGURE SPACE → SPACE # 
+202F ; 0020 ;  MA      #* (   →   ) NARROW NO-BREAK SPACE → SPACE        # 
+1680 ; 0020 ;  MA      #* (   →   ) OGHAM SPACE MARK → SPACE     # 
+
+02C4 ; 005E ;  MA      #* ( ˄ → ^ ) MODIFIER LETTER UP ARROWHEAD → CIRCUMFLEX ACCENT      # 
+02C6 ; 005E ;  MA      # ( ˆ → ^ ) MODIFIER LETTER CIRCUMFLEX ACCENT → CIRCUMFLEX ACCENT  # 
+
+07FA ; 005F ;  MA      # ( ‎ߺ‎ → _ ) NKO LAJANYALAN → LOW LINE        # 
+FE4D ; 005F ;  MA      # ( ﹍ → _ ) DASHED LOW LINE → LOW LINE    # 
+FE4E ; 005F ;  MA      # ( ﹎ → _ ) CENTRELINE LOW LINE → LOW LINE        # 
+FE4F ; 005F ;  MA      # ( ﹏ → _ ) WAVY LOW LINE → LOW LINE      # 
+
+2307 ; FE34 ;  MA      #* ( ⌇ → ︴ ) WAVY LINE → PRESENTATION FORM FOR VERTICAL WAVY LOW LINE   # 
+
+2010 ; 002D ;  MA      #* ( ‐ → - ) HYPHEN → HYPHEN-MINUS        # 
+2011 ; 002D ;  MA      #* ( ‑ → - ) NON-BREAKING HYPHEN → HYPHEN-MINUS   # 
+2012 ; 002D ;  MA      #* ( ‒ → - ) FIGURE DASH → HYPHEN-MINUS   # 
+2013 ; 002D ;  MA      #* ( – → - ) EN DASH → HYPHEN-MINUS       # 
+FE58 ; 002D ;  MA      #* ( ﹘ → - ) SMALL EM DASH → HYPHEN-MINUS # 
+2043 ; 002D ;  MA      #* ( ⁃ → - ) HYPHEN BULLET → HYPHEN-MINUS # →‒→
+02D7 ; 002D ;  MA      #* ( ˗ → - ) MODIFIER LETTER MINUS SIGN → HYPHEN-MINUS     # 
+2212 ; 002D ;  MA      #* ( − → - ) MINUS SIGN → HYPHEN-MINUS    # 
+2CBA ; 002D ;  MA      # ( Ⲻ → - ) COPTIC CAPITAL LETTER DIALECT-P NI → HYPHEN-MINUS     # →‒→
+
+A4FE ; 002D 002E ;     MA      #* ( ꓾ → -. ) LISU PUNCTUATION COMMA → HYPHEN-MINUS, FULL STOP    # 
+
+FF5E ; 301C ;  MA      #* ( ~ → 〜 ) FULLWIDTH TILDE → WAVE DASH        # 
+
+00B8 ; 002C ;  MA      #* ( ¸ → , ) CEDILLA → COMMA       # 
+066B ; 002C ;  MA      #* ( ‎٫‎ → , ) ARABIC DECIMAL SEPARATOR → COMMA        # 
+201A ; 002C ;  MA      #* ( ‚ → , ) SINGLE LOW-9 QUOTATION MARK → COMMA  # 
+
+066C ; 060C ;  MA      #* ( ‎٬‎ → ، ) ARABIC THOUSANDS SEPARATOR → ARABIC COMMA      # 
+
+037E ; 003B ;  MA      #* ( ; → ; ) GREEK QUESTION MARK → SEMICOLON       # 
+
+0903 ; 003A ;  MA      # ( ः → : ) DEVANAGARI SIGN VISARGA → COLON       # 
+0A83 ; 003A ;  MA      # ( ઃ → : ) GUJARATI SIGN VISARGA → COLON # 
+FF1A ; 003A ;  MA      #* ( : → : ) FULLWIDTH COLON → COLON      # →︰→
+0589 ; 003A ;  MA      #* ( ։ → : ) ARMENIAN FULL STOP → COLON    # 
+0703 ; 003A ;  MA      #* ( ‎܃‎ → : ) SYRIAC SUPRALINEAR COLON → COLON        # 
+0704 ; 003A ;  MA      #* ( ‎܄‎ → : ) SYRIAC SUBLINEAR COLON → COLON  # 
+FE30 ; 003A ;  MA      #* ( ︰ → : ) PRESENTATION FORM FOR VERTICAL TWO DOT LEADER → COLON        # 
+1803 ; 003A ;  MA      #* ( ᠃ → : ) MONGOLIAN FULL STOP → COLON  # 
+1809 ; 003A ;  MA      #* ( ᠉ → : ) MONGOLIAN MANCHU FULL STOP → COLON   # 
+205A ; 003A ;  MA      #* ( ⁚ → : ) TWO DOT PUNCTUATION → COLON  # 
+05C3 ; 003A ;  MA      #* ( ‎׃‎ → : ) HEBREW PUNCTUATION SOF PASUQ → COLON    # 
+02F8 ; 003A ;  MA      #* ( ˸ → : ) MODIFIER LETTER RAISED COLON → COLON  # 
+A789 ; 003A ;  MA      #* ( ꞉ → : ) MODIFIER LETTER COLON → COLON        # 
+2236 ; 003A ;  MA      #* ( ∶ → : ) RATIO → COLON        # 
+02D0 ; 003A ;  MA      # ( ː → : ) MODIFIER LETTER TRIANGULAR COLON → COLON       # 
+A4FD ; 003A ;  MA      # ( ꓽ → : ) LISU LETTER TONE MYA JEU → COLON      # 
+
+2A74 ; 003A 003A 003D ;        MA      #* ( ⩴ → ::= ) DOUBLE COLON EQUAL → COLON, COLON, EQUALS SIGN     # 
+
+FF01 ; 0021 ;  MA      #* ( ! → ! ) FULLWIDTH EXCLAMATION MARK → EXCLAMATION MARK        # →ǃ→
+01C3 ; 0021 ;  MA      # ( ǃ → ! ) LATIN LETTER RETROFLEX CLICK → EXCLAMATION MARK        # 
+
+203C ; 0021 0021 ;     MA      #* ( ‼ → !! ) DOUBLE EXCLAMATION MARK → EXCLAMATION MARK, EXCLAMATION MARK        # 
+
+2049 ; 0021 003F ;     MA      #* ( ⁉ → !? ) EXCLAMATION QUESTION MARK → EXCLAMATION MARK, QUESTION MARK # 
+
+0294 ; 003F ;  MA      # ( ʔ → ? ) LATIN LETTER GLOTTAL STOP → QUESTION MARK      # 
+0241 ; 003F ;  MA      # ( Ɂ → ? ) LATIN CAPITAL LETTER GLOTTAL STOP → QUESTION MARK      # →ʔ→
+097D ; 003F ;  MA      # ( ॽ → ? ) DEVANAGARI LETTER GLOTTAL STOP → QUESTION MARK        # 
+
+2048 ; 003F 0021 ;     MA      #* ( ⁈ → ?! ) QUESTION EXCLAMATION MARK → QUESTION MARK, EXCLAMATION MARK # 
+
+2047 ; 003F 003F ;     MA      #* ( ⁇ → ?? ) DOUBLE QUESTION MARK → QUESTION MARK, QUESTION MARK # 
+
+1D16D ;        002E ;  MA      # ( 𝅭 → . ) MUSICAL SYMBOL COMBINING AUGMENTATION DOT → FULL STOP        # 
+2024 ; 002E ;  MA      #* ( ․ → . ) ONE DOT LEADER → FULL STOP   # 
+06D4 ; 002E ;  MA      #* ( ‎۔‎ → . ) ARABIC FULL STOP → FULL STOP    # 
+0701 ; 002E ;  MA      #* ( ‎܁‎ → . ) SYRIAC SUPRALINEAR FULL STOP → FULL STOP        # 
+0702 ; 002E ;  MA      #* ( ‎܂‎ → . ) SYRIAC SUBLINEAR FULL STOP → FULL STOP  # 
+A60E ; 002E ;  MA      #* ( ꘎ → . ) VAI FULL STOP → FULL STOP    # 
+10A50 ;        002E ;  MA      #* ( ‎𐩐‎ → . ) KHAROSHTHI PUNCTUATION DOT → FULL STOP        # 
+0660 ; 002E ;  MA      # ( ‎٠‎ → . ) ARABIC-INDIC DIGIT ZERO → FULL STOP      # 
+06F0 ; 002E ;  MA      # ( ۰ → . ) EXTENDED ARABIC-INDIC DIGIT ZERO → FULL STOP   # →‎٠‎→
+A4F8 ; 002E ;  MA      # ( ꓸ → . ) LISU LETTER TONE MYA TI → FULL STOP   # 
+A4FB ; 002E ;  MA      # ( ꓻ → . ) LISU LETTER TONE MYA BO → FULL STOP   # 
+
+2025 ; 002E 002E ;     MA      #* ( ‥ → .. ) TWO DOT LEADER → FULL STOP, FULL STOP       # 
+A4FA ; 002E 002E ;     MA      # ( ꓺ → .. ) LISU LETTER TONE MYA CYA → FULL STOP, FULL STOP      # 
+
+2026 ; 002E 002E 002E ;        MA      #* ( … → ... ) HORIZONTAL ELLIPSIS → FULL STOP, FULL STOP, FULL STOP      # 
+
+30FB ; 00B7 ;  MA      #* ( ・ → · ) KATAKANA MIDDLE DOT → MIDDLE DOT    # →•→
+FF65 ; 00B7 ;  MA      #* ( ・ → · ) HALFWIDTH KATAKANA MIDDLE DOT → MIDDLE DOT  # →•→
+0387 ; 00B7 ;  MA      # ( · → · ) GREEK ANO TELEIA → MIDDLE DOT # 
+10101 ;        00B7 ;  MA      #* ( 𐄁 → · ) AEGEAN WORD SEPARATOR DOT → MIDDLE DOT     # 
+2022 ; 00B7 ;  MA      #* ( • → · ) BULLET → MIDDLE DOT # 
+2027 ; 00B7 ;  MA      #* ( ‧ → · ) HYPHENATION POINT → MIDDLE DOT      # 
+2219 ; 00B7 ;  MA      #* ( ∙ → · ) BULLET OPERATOR → MIDDLE DOT        # 
+22C5 ; 00B7 ;  MA      #* ( ⋅ → · ) DOT OPERATOR → MIDDLE DOT   # 
+1427 ; 00B7 ;  MA      # ( ᐧ → · ) CANADIAN SYLLABICS FINAL MIDDLE DOT → MIDDLE DOT     # 
+
+22EF ; 00B7 00B7 00B7 ;        MA      #* ( ⋯ → ··· ) MIDLINE HORIZONTAL ELLIPSIS → MIDDLE DOT, MIDDLE DOT, MIDDLE DOT        # 
+
+152F ; 00B7 0034 ;     MA      # ( ᔯ → ·4 ) CANADIAN SYLLABICS YWE → MIDDLE DOT, DIGIT FOUR     # →ᐧ4→
+
+147A ; 00B7 0064 ;     MA      # ( ᑺ → ·d ) CANADIAN SYLLABICS KWO → MIDDLE DOT, LATIN SMALL LETTER D   # →ᐧᑯ→
+
+1498 ; 00B7 004A ;     MA      # ( ᒘ → ·J ) CANADIAN SYLLABICS CWO → MIDDLE DOT, LATIN CAPITAL LETTER J # →ᐧᒍ→
+
+14B6 ; 00B7 004C ;     MA      # ( ᒶ → ·L ) CANADIAN SYLLABICS MWA → MIDDLE DOT, LATIN CAPITAL LETTER L # →ᐧL→
+
+1476 ; 00B7 0050 ;     MA      # ( ᑶ → ·P ) CANADIAN SYLLABICS KWI → MIDDLE DOT, LATIN CAPITAL LETTER P # →ᐧᑭ→
+
+1457 ; 00B7 0055 ;     MA      # ( ᑗ → ·U ) CANADIAN SYLLABICS TWE → MIDDLE DOT, LATIN CAPITAL LETTER U # →ᐧᑌ→→·ᑌ→
+
+140C ; 00B7 1401 ;     MA      # ( ᐌ → ·ᐁ ) CANADIAN SYLLABICS WE → MIDDLE DOT, CANADIAN SYLLABICS E  # →ᐧᐁ→
+
+140E ; 00B7 1403 ;     MA      # ( ᐎ → ·ᐃ ) CANADIAN SYLLABICS WI → MIDDLE DOT, CANADIAN SYLLABICS I  # →ᐧᐃ→
+
+1410 ; 00B7 1404 ;     MA      # ( ᐐ → ·ᐄ ) CANADIAN SYLLABICS WII → MIDDLE DOT, CANADIAN SYLLABICS II        # →ᐧᐄ→
+
+1412 ; 00B7 1405 ;     MA      # ( ᐒ → ·ᐅ ) CANADIAN SYLLABICS WO → MIDDLE DOT, CANADIAN SYLLABICS O  # →ᐧᐅ→
+
+1414 ; 00B7 1406 ;     MA      # ( ᐔ → ·ᐆ ) CANADIAN SYLLABICS WOO → MIDDLE DOT, CANADIAN SYLLABICS OO        # →ᐧᐆ→
+
+1417 ; 00B7 140A ;     MA      # ( ᐗ → ·ᐊ ) CANADIAN SYLLABICS WA → MIDDLE DOT, CANADIAN SYLLABICS A  # →ᐧᐊ→
+
+1419 ; 00B7 140B ;     MA      # ( ᐙ → ·ᐋ ) CANADIAN SYLLABICS WAA → MIDDLE DOT, CANADIAN SYLLABICS AA        # →ᐧᐋ→
+
+2CFE ; 00B7 1433 ;     MA      #* ( ⳾ → ·ᐳ ) COPTIC FULL STOP → MIDDLE DOT, CANADIAN SYLLABICS PO     # →ᑀ→→ᐧᐳ→
+1437 ; 00B7 1433 ;     MA      # ( ᐷ → ·ᐳ ) CANADIAN SYLLABICS CARRIER HI → MIDDLE DOT, CANADIAN SYLLABICS PO # →ᑀ→→ᐧᐳ→
+1440 ; 00B7 1433 ;     MA      # ( ᑀ → ·ᐳ ) CANADIAN SYLLABICS PWO → MIDDLE DOT, CANADIAN SYLLABICS PO        # →ᐧᐳ→
+
+1442 ; 00B7 1434 ;     MA      # ( ᑂ → ·ᐴ ) CANADIAN SYLLABICS PWOO → MIDDLE DOT, CANADIAN SYLLABICS POO      # →ᐧᐴ→
+
+1444 ; 00B7 1438 ;     MA      # ( ᑄ → ·ᐸ ) CANADIAN SYLLABICS PWA → MIDDLE DOT, CANADIAN SYLLABICS PA        # →ᐧᐸ→
+
+1446 ; 00B7 1439 ;     MA      # ( ᑆ → ·ᐹ ) CANADIAN SYLLABICS PWAA → MIDDLE DOT, CANADIAN SYLLABICS PAA      # →ᐧᐹ→
+
+1459 ; 00B7 144E ;     MA      # ( ᑙ → ·ᑎ ) CANADIAN SYLLABICS TWI → MIDDLE DOT, CANADIAN SYLLABICS TI        # →ᐧᑎ→
+
+145B ; 00B7 144F ;     MA      # ( ᑛ → ·ᑏ ) CANADIAN SYLLABICS TWII → MIDDLE DOT, CANADIAN SYLLABICS TII      # →ᐧᑏ→
+
+1454 ; 00B7 1450 ;     MA      # ( ᑔ → ·ᑐ ) CANADIAN SYLLABICS CARRIER DI → MIDDLE DOT, CANADIAN SYLLABICS TO # →ᑝ→→ᐧᑐ→
+145D ; 00B7 1450 ;     MA      # ( ᑝ → ·ᑐ ) CANADIAN SYLLABICS TWO → MIDDLE DOT, CANADIAN SYLLABICS TO        # →ᐧᑐ→
+
+145F ; 00B7 1451 ;     MA      # ( ᑟ → ·ᑑ ) CANADIAN SYLLABICS TWOO → MIDDLE DOT, CANADIAN SYLLABICS TOO      # →ᐧᑑ→
+
+1461 ; 00B7 1455 ;     MA      # ( ᑡ → ·ᑕ ) CANADIAN SYLLABICS TWA → MIDDLE DOT, CANADIAN SYLLABICS TA        # →ᐧᑕ→
+
+1463 ; 00B7 1456 ;     MA      # ( ᑣ → ·ᑖ ) CANADIAN SYLLABICS TWAA → MIDDLE DOT, CANADIAN SYLLABICS TAA      # →ᐧᑖ→
+
+1474 ; 00B7 146B ;     MA      # ( ᑴ → ·ᑫ ) CANADIAN SYLLABICS KWE → MIDDLE DOT, CANADIAN SYLLABICS KE        # →ᐧᑫ→
+
+1478 ; 00B7 146E ;     MA      # ( ᑸ → ·ᑮ ) CANADIAN SYLLABICS KWII → MIDDLE DOT, CANADIAN SYLLABICS KII      # →ᐧᑮ→
+
+147C ; 00B7 1470 ;     MA      # ( ᑼ → ·ᑰ ) CANADIAN SYLLABICS KWOO → MIDDLE DOT, CANADIAN SYLLABICS KOO      # →ᐧᑰ→
+
+147E ; 00B7 1472 ;     MA      # ( ᑾ → ·ᑲ ) CANADIAN SYLLABICS KWA → MIDDLE DOT, CANADIAN SYLLABICS KA        # →ᐧᑲ→
+
+1480 ; 00B7 1473 ;     MA      # ( ᒀ → ·ᑳ ) CANADIAN SYLLABICS KWAA → MIDDLE DOT, CANADIAN SYLLABICS KAA      # →ᐧᑳ→
+
+1492 ; 00B7 1489 ;     MA      # ( ᒒ → ·ᒉ ) CANADIAN SYLLABICS CWE → MIDDLE DOT, CANADIAN SYLLABICS CE        # →ᐧᒉ→
+
+1494 ; 00B7 148B ;     MA      # ( ᒔ → ·ᒋ ) CANADIAN SYLLABICS CWI → MIDDLE DOT, CANADIAN SYLLABICS CI        # →ᐧᒋ→
+
+1496 ; 00B7 148C ;     MA      # ( ᒖ → ·ᒌ ) CANADIAN SYLLABICS CWII → MIDDLE DOT, CANADIAN SYLLABICS CII      # →ᐧᒌ→
+
+149A ; 00B7 148E ;     MA      # ( ᒚ → ·ᒎ ) CANADIAN SYLLABICS CWOO → MIDDLE DOT, CANADIAN SYLLABICS COO      # →ᐧᒎ→
+
+149C ; 00B7 1490 ;     MA      # ( ᒜ → ·ᒐ ) CANADIAN SYLLABICS CWA → MIDDLE DOT, CANADIAN SYLLABICS CA        # →ᐧᒐ→
+
+149E ; 00B7 1491 ;     MA      # ( ᒞ → ·ᒑ ) CANADIAN SYLLABICS CWAA → MIDDLE DOT, CANADIAN SYLLABICS CAA      # →ᐧᒑ→
+
+14AC ; 00B7 14A3 ;     MA      # ( ᒬ → ·ᒣ ) CANADIAN SYLLABICS MWE → MIDDLE DOT, CANADIAN SYLLABICS ME        # →ᐧᒣ→
+
+14AE ; 00B7 14A5 ;     MA      # ( ᒮ → ·ᒥ ) CANADIAN SYLLABICS MWI → MIDDLE DOT, CANADIAN SYLLABICS MI        # →ᐧᒥ→
+
+14B0 ; 00B7 14A6 ;     MA      # ( ᒰ → ·ᒦ ) CANADIAN SYLLABICS MWII → MIDDLE DOT, CANADIAN SYLLABICS MII      # →ᐧᒦ→
+
+14B2 ; 00B7 14A7 ;     MA      # ( ᒲ → ·ᒧ ) CANADIAN SYLLABICS MWO → MIDDLE DOT, CANADIAN SYLLABICS MO        # →ᐧᒧ→
+
+14B4 ; 00B7 14A8 ;     MA      # ( ᒴ → ·ᒨ ) CANADIAN SYLLABICS MWOO → MIDDLE DOT, CANADIAN SYLLABICS MOO      # →ᐧᒨ→
+
+14B8 ; 00B7 14AB ;     MA      # ( ᒸ → ·ᒫ ) CANADIAN SYLLABICS MWAA → MIDDLE DOT, CANADIAN SYLLABICS MAA      # →ᐧᒫ→
+
+14C9 ; 00B7 14C0 ;     MA      # ( ᓉ → ·ᓀ ) CANADIAN SYLLABICS NWE → MIDDLE DOT, CANADIAN SYLLABICS NE        # →ᐧᓀ→
+
+14CB ; 00B7 14C7 ;     MA      # ( ᓋ → ·ᓇ ) CANADIAN SYLLABICS NWA → MIDDLE DOT, CANADIAN SYLLABICS NA        # →ᐧᓇ→
+
+14CD ; 00B7 14C8 ;     MA      # ( ᓍ → ·ᓈ ) CANADIAN SYLLABICS NWAA → MIDDLE DOT, CANADIAN SYLLABICS NAA      # →ᐧᓈ→
+
+14DC ; 00B7 14D3 ;     MA      # ( ᓜ → ·ᓓ ) CANADIAN SYLLABICS LWE → MIDDLE DOT, CANADIAN SYLLABICS LE        # →ᐧᓓ→
+
+14DE ; 00B7 14D5 ;     MA      # ( ᓞ → ·ᓕ ) CANADIAN SYLLABICS LWI → MIDDLE DOT, CANADIAN SYLLABICS LI        # →ᐧᓕ→
+
+14E0 ; 00B7 14D6 ;     MA      # ( ᓠ → ·ᓖ ) CANADIAN SYLLABICS LWII → MIDDLE DOT, CANADIAN SYLLABICS LII      # →ᐧᓖ→
+
+14E2 ; 00B7 14D7 ;     MA      # ( ᓢ → ·ᓗ ) CANADIAN SYLLABICS LWO → MIDDLE DOT, CANADIAN SYLLABICS LO        # →ᐧᓗ→
+
+14E4 ; 00B7 14D8 ;     MA      # ( ᓤ → ·ᓘ ) CANADIAN SYLLABICS LWOO → MIDDLE DOT, CANADIAN SYLLABICS LOO      # →ᐧᓘ→
+
+14E6 ; 00B7 14DA ;     MA      # ( ᓦ → ·ᓚ ) CANADIAN SYLLABICS LWA → MIDDLE DOT, CANADIAN SYLLABICS LA        # →ᐧᓚ→
+
+14E8 ; 00B7 14DB ;     MA      # ( ᓨ → ·ᓛ ) CANADIAN SYLLABICS LWAA → MIDDLE DOT, CANADIAN SYLLABICS LAA      # →ᐧᓛ→
+
+14F6 ; 00B7 14ED ;     MA      # ( ᓶ → ·ᓭ ) CANADIAN SYLLABICS SWE → MIDDLE DOT, CANADIAN SYLLABICS SE        # →ᐧᓭ→
+
+14F8 ; 00B7 14EF ;     MA      # ( ᓸ → ·ᓯ ) CANADIAN SYLLABICS SWI → MIDDLE DOT, CANADIAN SYLLABICS SI        # →ᐧᓯ→
+
+14FA ; 00B7 14F0 ;     MA      # ( ᓺ → ·ᓰ ) CANADIAN SYLLABICS SWII → MIDDLE DOT, CANADIAN SYLLABICS SII      # →ᐧᓰ→
+
+14FC ; 00B7 14F1 ;     MA      # ( ᓼ → ·ᓱ ) CANADIAN SYLLABICS SWO → MIDDLE DOT, CANADIAN SYLLABICS SO        # →ᐧᓱ→
+
+14FE ; 00B7 14F2 ;     MA      # ( ᓾ → ·ᓲ ) CANADIAN SYLLABICS SWOO → MIDDLE DOT, CANADIAN SYLLABICS SOO      # →ᐧᓲ→
+
+1500 ; 00B7 14F4 ;     MA      # ( ᔀ → ·ᓴ ) CANADIAN SYLLABICS SWA → MIDDLE DOT, CANADIAN SYLLABICS SA        # →ᐧᓴ→
+
+1502 ; 00B7 14F5 ;     MA      # ( ᔂ → ·ᓵ ) CANADIAN SYLLABICS SWAA → MIDDLE DOT, CANADIAN SYLLABICS SAA      # →ᐧᓵ→
+
+1517 ; 00B7 1510 ;     MA      # ( ᔗ → ·ᔐ ) CANADIAN SYLLABICS SHWE → MIDDLE DOT, CANADIAN SYLLABICS SHE      # →ᐧᔐ→
+
+1519 ; 00B7 1511 ;     MA      # ( ᔙ → ·ᔑ ) CANADIAN SYLLABICS SHWI → MIDDLE DOT, CANADIAN SYLLABICS SHI      # →ᐧᔑ→
+
+151B ; 00B7 1512 ;     MA      # ( ᔛ → ·ᔒ ) CANADIAN SYLLABICS SHWII → MIDDLE DOT, CANADIAN SYLLABICS SHII    # →ᐧᔒ→
+
+151D ; 00B7 1513 ;     MA      # ( ᔝ → ·ᔓ ) CANADIAN SYLLABICS SHWO → MIDDLE DOT, CANADIAN SYLLABICS SHO      # →ᐧᔓ→
+
+151F ; 00B7 1514 ;     MA      # ( ᔟ → ·ᔔ ) CANADIAN SYLLABICS SHWOO → MIDDLE DOT, CANADIAN SYLLABICS SHOO    # →ᐧᔔ→
+
+1521 ; 00B7 1515 ;     MA      # ( ᔡ → ·ᔕ ) CANADIAN SYLLABICS SHWA → MIDDLE DOT, CANADIAN SYLLABICS SHA      # →ᐧᔕ→
+
+1523 ; 00B7 1516 ;     MA      # ( ᔣ → ·ᔖ ) CANADIAN SYLLABICS SHWAA → MIDDLE DOT, CANADIAN SYLLABICS SHAA    # →ᐧᔖ→
+
+1531 ; 00B7 1528 ;     MA      # ( ᔱ → ·ᔨ ) CANADIAN SYLLABICS YWI → MIDDLE DOT, CANADIAN SYLLABICS YI        # →ᐧᔨ→
+
+1533 ; 00B7 1529 ;     MA      # ( ᔳ → ·ᔩ ) CANADIAN SYLLABICS YWII → MIDDLE DOT, CANADIAN SYLLABICS YII      # →ᐧᔩ→
+
+1535 ; 00B7 152A ;     MA      # ( ᔵ → ·ᔪ ) CANADIAN SYLLABICS YWO → MIDDLE DOT, CANADIAN SYLLABICS YO        # →ᐧᔪ→
+
+1537 ; 00B7 152B ;     MA      # ( ᔷ → ·ᔫ ) CANADIAN SYLLABICS YWOO → MIDDLE DOT, CANADIAN SYLLABICS YOO      # →ᐧᔫ→
+
+1539 ; 00B7 152D ;     MA      # ( ᔹ → ·ᔭ ) CANADIAN SYLLABICS YWA → MIDDLE DOT, CANADIAN SYLLABICS YA        # →ᐧᔭ→
+
+153B ; 00B7 152E ;     MA      # ( ᔻ → ·ᔮ ) CANADIAN SYLLABICS YWAA → MIDDLE DOT, CANADIAN SYLLABICS YAA      # →ᐧᔮ→
+
+154E ; 00B7 154C ;     MA      # ( ᕎ → ·ᕌ ) CANADIAN SYLLABICS RWAA → MIDDLE DOT, CANADIAN SYLLABICS RAA      # →ᐧᕌ→
+
+155B ; 00B7 155A ;     MA      # ( ᕛ → ·ᕚ ) CANADIAN SYLLABICS FWAA → MIDDLE DOT, CANADIAN SYLLABICS FAA      # →ᐧᕚ→
+
+1568 ; 00B7 1567 ;     MA      # ( ᕨ → ·ᕧ ) CANADIAN SYLLABICS THWAA → MIDDLE DOT, CANADIAN SYLLABICS THAA    # →ᐧᕧ→
+
+FE19 ; 205D ;  MA      #* ( ︙ → ⁝ ) PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS → TRICOLON      # 
+22EE ; 205D ;  MA      #* ( ⋮ → ⁝ ) VERTICAL ELLIPSIS → TRICOLON       # →︙→
+
+0060 ; 0027 ;  MA      #* ( ` → ' ) GRAVE ACCENT → APOSTROPHE      # →ˋ→→`→→‘→
+1FEF ; 0027 ;  MA      #* ( ` → ' ) GREEK VARIA → APOSTROPHE     # →ˋ→→`→→‘→
+FF40 ; 0027 ;  MA      #* ( ` → ' ) FULLWIDTH GRAVE ACCENT → APOSTROPHE  # →‘→
+00B4 ; 0027 ;  MA      #* ( ´ → ' ) ACUTE ACCENT → APOSTROPHE     # →΄→→ʹ→
+0384 ; 0027 ;  MA      #* ( ΄ → ' ) GREEK TONOS → APOSTROPHE      # →ʹ→
+1FFD ; 0027 ;  MA      #* ( ´ → ' ) GREEK OXIA → APOSTROPHE      # →ˊ→→ʹ→→′→
+1FBD ; 0027 ;  MA      #* ( ᾽ → ' ) GREEK KORONIS → APOSTROPHE   # →’→
+1FBF ; 0027 ;  MA      #* ( ᾿ → ' ) GREEK PSILI → APOSTROPHE     # →’→
+1FFE ; 0027 ;  MA      #* ( ῾ → ' ) GREEK DASIA → APOSTROPHE     # →‛→→′→
+055D ; 0027 ;  MA      #* ( ՝ → ' ) ARMENIAN COMMA → APOSTROPHE   # →ˋ→→`→→‘→
+FF07 ; 0027 ;  MA      #* ( ' → ' ) FULLWIDTH APOSTROPHE → APOSTROPHE    # →’→
+2018 ; 0027 ;  MA      #* ( ‘ → ' ) LEFT SINGLE QUOTATION MARK → APOSTROPHE      # 
+2019 ; 0027 ;  MA      #* ( ’ → ' ) RIGHT SINGLE QUOTATION MARK → APOSTROPHE     # 
+201B ; 0027 ;  MA      #* ( ‛ → ' ) SINGLE HIGH-REVERSED-9 QUOTATION MARK → APOSTROPHE   # →′→
+2032 ; 0027 ;  MA      #* ( ′ → ' ) PRIME → APOSTROPHE   # 
+2035 ; 0027 ;  MA      #* ( ‵ → ' ) REVERSED PRIME → APOSTROPHE  # →ʽ→→‘→
+055A ; 0027 ;  MA      #* ( ՚ → ' ) ARMENIAN APOSTROPHE → APOSTROPHE      # →’→
+05F3 ; 0027 ;  MA      #* ( ‎׳‎ → ' ) HEBREW PUNCTUATION GERESH → APOSTROPHE  # 
+02B9 ; 0027 ;  MA      # ( ʹ → ' ) MODIFIER LETTER PRIME → APOSTROPHE     # 
+0374 ; 0027 ;  MA      # ( ʹ → ' ) GREEK NUMERAL SIGN → APOSTROPHE        # →′→
+02CA ; 0027 ;  MA      # ( ˊ → ' ) MODIFIER LETTER ACUTE ACCENT → APOSTROPHE      # →ʹ→→′→
+02CB ; 0027 ;  MA      # ( ˋ → ' ) MODIFIER LETTER GRAVE ACCENT → APOSTROPHE      # →`→→‘→
+02F4 ; 0027 ;  MA      #* ( ˴ → ' ) MODIFIER LETTER MIDDLE GRAVE ACCENT → APOSTROPHE      # →ˋ→→`→→‘→
+02BB ; 0027 ;  MA      # ( ʻ → ' ) MODIFIER LETTER TURNED COMMA → APOSTROPHE      # →‘→
+02BD ; 0027 ;  MA      # ( ʽ → ' ) MODIFIER LETTER REVERSED COMMA → APOSTROPHE    # →‘→
+02BC ; 0027 ;  MA      # ( ʼ → ' ) MODIFIER LETTER APOSTROPHE → APOSTROPHE        # →′→
+02BE ; 0027 ;  MA      # ( ʾ → ' ) MODIFIER LETTER RIGHT HALF RING → APOSTROPHE   # →ʼ→→′→
+A78C ; 0027 ;  MA      # ( ꞌ → ' ) LATIN SMALL LETTER SALTILLO → APOSTROPHE      # 
+05D9 ; 0027 ;  MA      # ( ‎י‎ → ' ) HEBREW LETTER YOD → APOSTROPHE   # 
+07F4 ; 0027 ;  MA      # ( ‎ߴ‎ → ' ) NKO HIGH TONE APOSTROPHE → APOSTROPHE    # →’→
+07F5 ; 0027 ;  MA      # ( ‎ߵ‎ → ' ) NKO LOW TONE APOSTROPHE → APOSTROPHE     # →‘→
+
+02DD ; 0027 0027 ;     MA      #* ( ˝ → '' ) DOUBLE ACUTE ACCENT → APOSTROPHE, APOSTROPHE # →"→
+0022 ; 0027 0027 ;     MA      #* ( " → '' ) QUOTATION MARK → APOSTROPHE, APOSTROPHE       # 
+FF02 ; 0027 0027 ;     MA      #* ( " → '' ) FULLWIDTH QUOTATION MARK → APOSTROPHE, APOSTROPHE   # →”→→"→
+201C ; 0027 0027 ;     MA      #* ( “ → '' ) LEFT DOUBLE QUOTATION MARK → APOSTROPHE, APOSTROPHE # →"→
+201D ; 0027 0027 ;     MA      #* ( ” → '' ) RIGHT DOUBLE QUOTATION MARK → APOSTROPHE, APOSTROPHE        # →"→
+201F ; 0027 0027 ;     MA      #* ( ‟ → '' ) DOUBLE HIGH-REVERSED-9 QUOTATION MARK → APOSTROPHE, APOSTROPHE      # →”→→"→
+2033 ; 0027 0027 ;     MA      #* ( ″ → '' ) DOUBLE PRIME → APOSTROPHE, APOSTROPHE       # →"→
+2036 ; 0027 0027 ;     MA      #* ( ‶ → '' ) REVERSED DOUBLE PRIME → APOSTROPHE, APOSTROPHE      # →‵‵→
+3003 ; 0027 0027 ;     MA      #* ( 〃 → '' ) DITTO MARK → APOSTROPHE, APOSTROPHE # →″→→"→
+05F4 ; 0027 0027 ;     MA      #* ( ‎״‎ → '' ) HEBREW PUNCTUATION GERSHAYIM → APOSTROPHE, APOSTROPHE  # →"→
+02BA ; 0027 0027 ;     MA      # ( ʺ → '' ) MODIFIER LETTER DOUBLE PRIME → APOSTROPHE, APOSTROPHE # →"→
+02F6 ; 0027 0027 ;     MA      #* ( ˶ → '' ) MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT → APOSTROPHE, APOSTROPHE  # →˝→→"→
+02EE ; 0027 0027 ;     MA      # ( ˮ → '' ) MODIFIER LETTER DOUBLE APOSTROPHE → APOSTROPHE, APOSTROPHE    # →″→→"→
+05F2 ; 0027 0027 ;     MA      # ( ‎ײ‎ → '' ) HEBREW LIGATURE YIDDISH DOUBLE YOD → APOSTROPHE, APOSTROPHE     # →‎יי‎→
+
+2034 ; 0027 0027 0027 ;        MA      #* ( ‴ → ''' ) TRIPLE PRIME → APOSTROPHE, APOSTROPHE, APOSTROPHE  # →′′′→
+2037 ; 0027 0027 0027 ;        MA      #* ( ‷ → ''' ) REVERSED TRIPLE PRIME → APOSTROPHE, APOSTROPHE, APOSTROPHE # →‵‵‵→
+
+2057 ; 0027 0027 0027 0027 ;   MA      #* ( ⁗ → '''' ) QUADRUPLE PRIME → APOSTROPHE, APOSTROPHE, APOSTROPHE, APOSTROPHE  # →′′′′→
+
+0181 ; 0027 0042 ;     MA      # ( Ɓ → 'B ) LATIN CAPITAL LETTER B WITH HOOK → APOSTROPHE, LATIN CAPITAL LETTER B # →ʽB→
+
+018A ; 0027 0044 ;     MA      # ( Ɗ → 'D ) LATIN CAPITAL LETTER D WITH HOOK → APOSTROPHE, LATIN CAPITAL LETTER D # →ʽD→
+
+0149 ; 0027 006E ;     MA      # ( ʼn → 'n ) LATIN SMALL LETTER N PRECEDED BY APOSTROPHE → APOSTROPHE, LATIN SMALL LETTER N        # →ʼn→
+
+01A4 ; 0027 0050 ;     MA      # ( Ƥ → 'P ) LATIN CAPITAL LETTER P WITH HOOK → APOSTROPHE, LATIN CAPITAL LETTER P # →ʽP→
+
+01AC ; 0027 0054 ;     MA      # ( Ƭ → 'T ) LATIN CAPITAL LETTER T WITH HOOK → APOSTROPHE, LATIN CAPITAL LETTER T # →ʽT→
+
+01B3 ; 0027 0059 ;     MA      # ( Ƴ → 'Y ) LATIN CAPITAL LETTER Y WITH HOOK → APOSTROPHE, LATIN CAPITAL LETTER Y # →ʽY→
+
+FF3B ; 0028 ;  MA      #* ( [ → ( ) FULLWIDTH LEFT SQUARE BRACKET → LEFT PARENTHESIS     # →〔→
+3014 ; 0028 ;  MA      #* ( 〔 → ( ) LEFT TORTOISE SHELL BRACKET → LEFT PARENTHESIS       # 
+FD3E ; 0028 ;  MA      #* ( ﴾ → ( ) ORNATE LEFT PARENTHESIS → LEFT PARENTHESIS   # 
+2768 ; 0028 ;  MA      #* ( ❨ → ( ) MEDIUM LEFT PARENTHESIS ORNAMENT → LEFT PARENTHESIS  # 
+2772 ; 0028 ;  MA      #* ( ❲ → ( ) LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT → LEFT PARENTHESIS        # →〔→
+
+3220 ; 0028 30FC 0029 ;        MA      #* ( ㈠ → (ー) ) PARENTHESIZED IDEOGRAPH ONE → LEFT PARENTHESIS, KATAKANA-HIRAGANA PROLONGED SOUND MARK, RIGHT PARENTHESIS        # →(一)→
+
+2475 ; 0028 0032 0029 ;        MA      #* ( ⑵ → (2) ) PARENTHESIZED DIGIT TWO → LEFT PARENTHESIS, DIGIT TWO, RIGHT PARENTHESIS   # 
+
+2487 ; 0028 0032 004F 0029 ;   MA      #* ( ⒇ → (2O) ) PARENTHESIZED NUMBER TWENTY → LEFT PARENTHESIS, DIGIT TWO, LATIN CAPITAL LETTER O, RIGHT PARENTHESIS      # →(20)→
+
+2476 ; 0028 0033 0029 ;        MA      #* ( ⑶ → (3) ) PARENTHESIZED DIGIT THREE → LEFT PARENTHESIS, DIGIT THREE, RIGHT PARENTHESIS       # 
+
+2477 ; 0028 0034 0029 ;        MA      #* ( ⑷ → (4) ) PARENTHESIZED DIGIT FOUR → LEFT PARENTHESIS, DIGIT FOUR, RIGHT PARENTHESIS # 
+
+2478 ; 0028 0035 0029 ;        MA      #* ( ⑸ → (5) ) PARENTHESIZED DIGIT FIVE → LEFT PARENTHESIS, DIGIT FIVE, RIGHT PARENTHESIS # 
+
+2479 ; 0028 0036 0029 ;        MA      #* ( ⑹ → (6) ) PARENTHESIZED DIGIT SIX → LEFT PARENTHESIS, DIGIT SIX, RIGHT PARENTHESIS   # 
+
+247A ; 0028 0037 0029 ;        MA      #* ( ⑺ → (7) ) PARENTHESIZED DIGIT SEVEN → LEFT PARENTHESIS, DIGIT SEVEN, RIGHT PARENTHESIS       # 
+
+247B ; 0028 0038 0029 ;        MA      #* ( ⑻ → (8) ) PARENTHESIZED DIGIT EIGHT → LEFT PARENTHESIS, DIGIT EIGHT, RIGHT PARENTHESIS       # 
+
+247C ; 0028 0039 0029 ;        MA      #* ( ⑼ → (9) ) PARENTHESIZED DIGIT NINE → LEFT PARENTHESIS, DIGIT NINE, RIGHT PARENTHESIS # 
+
+249C ; 0028 0061 0029 ;        MA      #* ( ⒜ → (a) ) PARENTHESIZED LATIN SMALL LETTER A → LEFT PARENTHESIS, LATIN SMALL LETTER A, RIGHT PARENTHESIS     # 
+
+1F110 ;        0028 0041 0029 ;        MA      #* ( 🄐 → (A) ) PARENTHESIZED LATIN CAPITAL LETTER A → LEFT PARENTHESIS, LATIN CAPITAL LETTER A, RIGHT PARENTHESIS        # 
+
+249D ; 0028 0062 0029 ;        MA      #* ( ⒝ → (b) ) PARENTHESIZED LATIN SMALL LETTER B → LEFT PARENTHESIS, LATIN SMALL LETTER B, RIGHT PARENTHESIS     # 
+
+1F111 ;        0028 0042 0029 ;        MA      #* ( 🄑 → (B) ) PARENTHESIZED LATIN CAPITAL LETTER B → LEFT PARENTHESIS, LATIN CAPITAL LETTER B, RIGHT PARENTHESIS        # 
+
+249E ; 0028 0063 0029 ;        MA      #* ( ⒞ → (c) ) PARENTHESIZED LATIN SMALL LETTER C → LEFT PARENTHESIS, LATIN SMALL LETTER C, RIGHT PARENTHESIS     # 
+
+1F112 ;        0028 0043 0029 ;        MA      #* ( 🄒 → (C) ) PARENTHESIZED LATIN CAPITAL LETTER C → LEFT PARENTHESIS, LATIN CAPITAL LETTER C, RIGHT PARENTHESIS        # 
+
+249F ; 0028 0064 0029 ;        MA      #* ( ⒟ → (d) ) PARENTHESIZED LATIN SMALL LETTER D → LEFT PARENTHESIS, LATIN SMALL LETTER D, RIGHT PARENTHESIS     # 
+
+1F113 ;        0028 0044 0029 ;        MA      #* ( 🄓 → (D) ) PARENTHESIZED LATIN CAPITAL LETTER D → LEFT PARENTHESIS, LATIN CAPITAL LETTER D, RIGHT PARENTHESIS        # 
+
+24A0 ; 0028 0065 0029 ;        MA      #* ( ⒠ → (e) ) PARENTHESIZED LATIN SMALL LETTER E → LEFT PARENTHESIS, LATIN SMALL LETTER E, RIGHT PARENTHESIS     # 
+
+1F114 ;        0028 0045 0029 ;        MA      #* ( 🄔 → (E) ) PARENTHESIZED LATIN CAPITAL LETTER E → LEFT PARENTHESIS, LATIN CAPITAL LETTER E, RIGHT PARENTHESIS        # 
+
+24A1 ; 0028 0066 0029 ;        MA      #* ( ⒡ → (f) ) PARENTHESIZED LATIN SMALL LETTER F → LEFT PARENTHESIS, LATIN SMALL LETTER F, RIGHT PARENTHESIS     # 
+
+1F115 ;        0028 0046 0029 ;        MA      #* ( 🄕 → (F) ) PARENTHESIZED LATIN CAPITAL LETTER F → LEFT PARENTHESIS, LATIN CAPITAL LETTER F, RIGHT PARENTHESIS        # 
+
+24A2 ; 0028 0067 0029 ;        MA      #* ( ⒢ → (g) ) PARENTHESIZED LATIN SMALL LETTER G → LEFT PARENTHESIS, LATIN SMALL LETTER G, RIGHT PARENTHESIS     # 
+
+1F116 ;        0028 0047 0029 ;        MA      #* ( 🄖 → (G) ) PARENTHESIZED LATIN CAPITAL LETTER G → LEFT PARENTHESIS, LATIN CAPITAL LETTER G, RIGHT PARENTHESIS        # 
+
+24A3 ; 0028 0068 0029 ;        MA      #* ( ⒣ → (h) ) PARENTHESIZED LATIN SMALL LETTER H → LEFT PARENTHESIS, LATIN SMALL LETTER H, RIGHT PARENTHESIS     # 
+
+1F117 ;        0028 0048 0029 ;        MA      #* ( 🄗 → (H) ) PARENTHESIZED LATIN CAPITAL LETTER H → LEFT PARENTHESIS, LATIN CAPITAL LETTER H, RIGHT PARENTHESIS        # 
+
+24A4 ; 0028 0069 0029 ;        MA      #* ( ⒤ → (i) ) PARENTHESIZED LATIN SMALL LETTER I → LEFT PARENTHESIS, LATIN SMALL LETTER I, RIGHT PARENTHESIS     # 
+
+2474 ; 0028 0049 0029 ;        MA      #* ( ⑴ → (I) ) PARENTHESIZED DIGIT ONE → LEFT PARENTHESIS, LATIN CAPITAL LETTER I, RIGHT PARENTHESIS      # →(1)→→(l)→
+1F118 ;        0028 0049 0029 ;        MA      #* ( 🄘 → (I) ) PARENTHESIZED LATIN CAPITAL LETTER I → LEFT PARENTHESIS, LATIN CAPITAL LETTER I, RIGHT PARENTHESIS        # 
+24A7 ; 0028 0049 0029 ;        MA      #* ( ⒧ → (I) ) PARENTHESIZED LATIN SMALL LETTER L → LEFT PARENTHESIS, LATIN CAPITAL LETTER I, RIGHT PARENTHESIS   # →(l)→
+
+24A5 ; 0028 006A 0029 ;        MA      #* ( ⒥ → (j) ) PARENTHESIZED LATIN SMALL LETTER J → LEFT PARENTHESIS, LATIN SMALL LETTER J, RIGHT PARENTHESIS     # 
+
+1F119 ;        0028 004A 0029 ;        MA      #* ( 🄙 → (J) ) PARENTHESIZED LATIN CAPITAL LETTER J → LEFT PARENTHESIS, LATIN CAPITAL LETTER J, RIGHT PARENTHESIS        # 
+
+24A6 ; 0028 006B 0029 ;        MA      #* ( ⒦ → (k) ) PARENTHESIZED LATIN SMALL LETTER K → LEFT PARENTHESIS, LATIN SMALL LETTER K, RIGHT PARENTHESIS     # 
+
+1F11A ;        0028 004B 0029 ;        MA      #* ( 🄚 → (K) ) PARENTHESIZED LATIN CAPITAL LETTER K → LEFT PARENTHESIS, LATIN CAPITAL LETTER K, RIGHT PARENTHESIS        # 
+
+1F11B ;        0028 004C 0029 ;        MA      #* ( 🄛 → (L) ) PARENTHESIZED LATIN CAPITAL LETTER L → LEFT PARENTHESIS, LATIN CAPITAL LETTER L, RIGHT PARENTHESIS        # 
+
+247F ; 0028 006C 0032 0029 ;   MA      #* ( ⑿ → (l2) ) PARENTHESIZED NUMBER TWELVE → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT TWO, RIGHT PARENTHESIS        # →(12)→
+
+2480 ; 0028 006C 0033 0029 ;   MA      #* ( ⒀ → (l3) ) PARENTHESIZED NUMBER THIRTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT THREE, RIGHT PARENTHESIS    # →(13)→
+
+2481 ; 0028 006C 0034 0029 ;   MA      #* ( ⒁ → (l4) ) PARENTHESIZED NUMBER FOURTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT FOUR, RIGHT PARENTHESIS     # →(14)→
+
+2482 ; 0028 006C 0035 0029 ;   MA      #* ( ⒂ → (l5) ) PARENTHESIZED NUMBER FIFTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT FIVE, RIGHT PARENTHESIS      # →(15)→
+
+2483 ; 0028 006C 0036 0029 ;   MA      #* ( ⒃ → (l6) ) PARENTHESIZED NUMBER SIXTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT SIX, RIGHT PARENTHESIS       # →(16)→
+
+2484 ; 0028 006C 0037 0029 ;   MA      #* ( ⒄ → (l7) ) PARENTHESIZED NUMBER SEVENTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT SEVEN, RIGHT PARENTHESIS   # →(17)→
+
+2485 ; 0028 006C 0038 0029 ;   MA      #* ( ⒅ → (l8) ) PARENTHESIZED NUMBER EIGHTEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT EIGHT, RIGHT PARENTHESIS    # →(18)→
+
+2486 ; 0028 006C 0039 0029 ;   MA      #* ( ⒆ → (l9) ) PARENTHESIZED NUMBER NINETEEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, DIGIT NINE, RIGHT PARENTHESIS     # →(19)→
+
+247E ; 0028 006C 006C 0029 ;   MA      #* ( ⑾ → (ll) ) PARENTHESIZED NUMBER ELEVEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, LATIN SMALL LETTER L, RIGHT PARENTHESIS     # →(11)→
+
+247D ; 0028 006C 004F 0029 ;   MA      #* ( ⑽ → (lO) ) PARENTHESIZED NUMBER TEN → LEFT PARENTHESIS, LATIN SMALL LETTER L, LATIN CAPITAL LETTER O, RIGHT PARENTHESIS      # →(10)→
+
+1F11C ;        0028 004D 0029 ;        MA      #* ( 🄜 → (M) ) PARENTHESIZED LATIN CAPITAL LETTER M → LEFT PARENTHESIS, LATIN CAPITAL LETTER M, RIGHT PARENTHESIS        # 
+
+24A9 ; 0028 006E 0029 ;        MA      #* ( ⒩ → (n) ) PARENTHESIZED LATIN SMALL LETTER N → LEFT PARENTHESIS, LATIN SMALL LETTER N, RIGHT PARENTHESIS     # 
+
+1F11D ;        0028 004E 0029 ;        MA      #* ( 🄝 → (N) ) PARENTHESIZED LATIN CAPITAL LETTER N → LEFT PARENTHESIS, LATIN CAPITAL LETTER N, RIGHT PARENTHESIS        # 
+
+24AA ; 0028 006F 0029 ;        MA      #* ( ⒪ → (o) ) PARENTHESIZED LATIN SMALL LETTER O → LEFT PARENTHESIS, LATIN SMALL LETTER O, RIGHT PARENTHESIS     # 
+
+1F11E ;        0028 004F 0029 ;        MA      #* ( 🄞 → (O) ) PARENTHESIZED LATIN CAPITAL LETTER O → LEFT PARENTHESIS, LATIN CAPITAL LETTER O, RIGHT PARENTHESIS        # 
+
+24AB ; 0028 0070 0029 ;        MA      #* ( ⒫ → (p) ) PARENTHESIZED LATIN SMALL LETTER P → LEFT PARENTHESIS, LATIN SMALL LETTER P, RIGHT PARENTHESIS     # 
+
+1F11F ;        0028 0050 0029 ;        MA      #* ( 🄟 → (P) ) PARENTHESIZED LATIN CAPITAL LETTER P → LEFT PARENTHESIS, LATIN CAPITAL LETTER P, RIGHT PARENTHESIS        # 
+
+24AC ; 0028 0071 0029 ;        MA      #* ( ⒬ → (q) ) PARENTHESIZED LATIN SMALL LETTER Q → LEFT PARENTHESIS, LATIN SMALL LETTER Q, RIGHT PARENTHESIS     # 
+
+1F120 ;        0028 0051 0029 ;        MA      #* ( 🄠 → (Q) ) PARENTHESIZED LATIN CAPITAL LETTER Q → LEFT PARENTHESIS, LATIN CAPITAL LETTER Q, RIGHT PARENTHESIS        # 
+
+24AD ; 0028 0072 0029 ;        MA      #* ( ⒭ → (r) ) PARENTHESIZED LATIN SMALL LETTER R → LEFT PARENTHESIS, LATIN SMALL LETTER R, RIGHT PARENTHESIS     # 
+
+1F121 ;        0028 0052 0029 ;        MA      #* ( 🄡 → (R) ) PARENTHESIZED LATIN CAPITAL LETTER R → LEFT PARENTHESIS, LATIN CAPITAL LETTER R, RIGHT PARENTHESIS        # 
+
+24A8 ; 0028 0072 006E 0029 ;   MA      #* ( ⒨ → (rn) ) PARENTHESIZED LATIN SMALL LETTER M → LEFT PARENTHESIS, LATIN SMALL LETTER R, LATIN SMALL LETTER N, RIGHT PARENTHESIS      # →(m)→
+
+24AE ; 0028 0073 0029 ;        MA      #* ( ⒮ → (s) ) PARENTHESIZED LATIN SMALL LETTER S → LEFT PARENTHESIS, LATIN SMALL LETTER S, RIGHT PARENTHESIS     # 
+
+1F122 ;        0028 0053 0029 ;        MA      #* ( 🄢 → (S) ) PARENTHESIZED LATIN CAPITAL LETTER S → LEFT PARENTHESIS, LATIN CAPITAL LETTER S, RIGHT PARENTHESIS        # 
+1F12A ;        0028 0053 0029 ;        MA      #* ( 🄪 → (S) ) TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S → LEFT PARENTHESIS, LATIN CAPITAL LETTER S, RIGHT PARENTHESIS     # →〔S〕→
+
+24AF ; 0028 0074 0029 ;        MA      #* ( ⒯ → (t) ) PARENTHESIZED LATIN SMALL LETTER T → LEFT PARENTHESIS, LATIN SMALL LETTER T, RIGHT PARENTHESIS     # 
+
+1F123 ;        0028 0054 0029 ;        MA      #* ( 🄣 → (T) ) PARENTHESIZED LATIN CAPITAL LETTER T → LEFT PARENTHESIS, LATIN CAPITAL LETTER T, RIGHT PARENTHESIS        # 
+
+24B0 ; 0028 0075 0029 ;        MA      #* ( ⒰ → (u) ) PARENTHESIZED LATIN SMALL LETTER U → LEFT PARENTHESIS, LATIN SMALL LETTER U, RIGHT PARENTHESIS     # 
+
+1F124 ;        0028 0055 0029 ;        MA      #* ( 🄤 → (U) ) PARENTHESIZED LATIN CAPITAL LETTER U → LEFT PARENTHESIS, LATIN CAPITAL LETTER U, RIGHT PARENTHESIS        # 
+
+24B1 ; 0028 0076 0029 ;        MA      #* ( ⒱ → (v) ) PARENTHESIZED LATIN SMALL LETTER V → LEFT PARENTHESIS, LATIN SMALL LETTER V, RIGHT PARENTHESIS     # 
+
+1F125 ;        0028 0056 0029 ;        MA      #* ( 🄥 → (V) ) PARENTHESIZED LATIN CAPITAL LETTER V → LEFT PARENTHESIS, LATIN CAPITAL LETTER V, RIGHT PARENTHESIS        # 
+
+24B2 ; 0028 0076 0076 0029 ;   MA      #* ( ⒲ → (vv) ) PARENTHESIZED LATIN SMALL LETTER W → LEFT PARENTHESIS, LATIN SMALL LETTER V, LATIN SMALL LETTER V, RIGHT PARENTHESIS      # →(w)→
+
+1F126 ;        0028 0057 0029 ;        MA      #* ( 🄦 → (W) ) PARENTHESIZED LATIN CAPITAL LETTER W → LEFT PARENTHESIS, LATIN CAPITAL LETTER W, RIGHT PARENTHESIS        # 
+
+24B3 ; 0028 0078 0029 ;        MA      #* ( ⒳ → (x) ) PARENTHESIZED LATIN SMALL LETTER X → LEFT PARENTHESIS, LATIN SMALL LETTER X, RIGHT PARENTHESIS     # 
+
+1F127 ;        0028 0058 0029 ;        MA      #* ( 🄧 → (X) ) PARENTHESIZED LATIN CAPITAL LETTER X → LEFT PARENTHESIS, LATIN CAPITAL LETTER X, RIGHT PARENTHESIS        # 
+
+24B4 ; 0028 0079 0029 ;        MA      #* ( ⒴ → (y) ) PARENTHESIZED LATIN SMALL LETTER Y → LEFT PARENTHESIS, LATIN SMALL LETTER Y, RIGHT PARENTHESIS     # 
+
+1F128 ;        0028 0059 0029 ;        MA      #* ( 🄨 → (Y) ) PARENTHESIZED LATIN CAPITAL LETTER Y → LEFT PARENTHESIS, LATIN CAPITAL LETTER Y, RIGHT PARENTHESIS        # 
+
+24B5 ; 0028 007A 0029 ;        MA      #* ( ⒵ → (z) ) PARENTHESIZED LATIN SMALL LETTER Z → LEFT PARENTHESIS, LATIN SMALL LETTER Z, RIGHT PARENTHESIS     # 
+
+1F129 ;        0028 005A 0029 ;        MA      #* ( 🄩 → (Z) ) PARENTHESIZED LATIN CAPITAL LETTER Z → LEFT PARENTHESIS, LATIN CAPITAL LETTER Z, RIGHT PARENTHESIS        # 
+
+3200 ; 0028 1100 0029 ;        MA      #* ( ㈀ → (ᄀ) ) PARENTHESIZED HANGUL KIYEOK → LEFT PARENTHESIS, HANGUL CHOSEONG KIYEOK, RIGHT PARENTHESIS        # 
+
+320E ; 0028 AC00 0029 ;        MA      #* ( ㈎ → (가) ) PARENTHESIZED HANGUL KIYEOK A → LEFT PARENTHESIS, HANGUL SYLLABLE GA, RIGHT PARENTHESIS  # 
+
+3201 ; 0028 1102 0029 ;        MA      #* ( ㈁ → (ᄂ) ) PARENTHESIZED HANGUL NIEUN → LEFT PARENTHESIS, HANGUL CHOSEONG NIEUN, RIGHT PARENTHESIS  # 
+
+320F ; 0028 B098 0029 ;        MA      #* ( ㈏ → (나) ) PARENTHESIZED HANGUL NIEUN A → LEFT PARENTHESIS, HANGUL SYLLABLE NA, RIGHT PARENTHESIS   # 
+
+3202 ; 0028 1103 0029 ;        MA      #* ( ㈂ → (ᄃ) ) PARENTHESIZED HANGUL TIKEUT → LEFT PARENTHESIS, HANGUL CHOSEONG TIKEUT, RIGHT PARENTHESIS        # 
+
+3210 ; 0028 B2E4 0029 ;        MA      #* ( ㈐ → (다) ) PARENTHESIZED HANGUL TIKEUT A → LEFT PARENTHESIS, HANGUL SYLLABLE DA, RIGHT PARENTHESIS  # 
+
+3203 ; 0028 1105 0029 ;        MA      #* ( ㈃ → (ᄅ) ) PARENTHESIZED HANGUL RIEUL → LEFT PARENTHESIS, HANGUL CHOSEONG RIEUL, RIGHT PARENTHESIS  # 
+
+3211 ; 0028 B77C 0029 ;        MA      #* ( ㈑ → (라) ) PARENTHESIZED HANGUL RIEUL A → LEFT PARENTHESIS, HANGUL SYLLABLE RA, RIGHT PARENTHESIS   # 
+
+3204 ; 0028 1106 0029 ;        MA      #* ( ㈄ → (ᄆ) ) PARENTHESIZED HANGUL MIEUM → LEFT PARENTHESIS, HANGUL CHOSEONG MIEUM, RIGHT PARENTHESIS  # 
+
+3212 ; 0028 B9C8 0029 ;        MA      #* ( ㈒ → (마) ) PARENTHESIZED HANGUL MIEUM A → LEFT PARENTHESIS, HANGUL SYLLABLE MA, RIGHT PARENTHESIS   # 
+
+3205 ; 0028 1107 0029 ;        MA      #* ( ㈅ → (ᄇ) ) PARENTHESIZED HANGUL PIEUP → LEFT PARENTHESIS, HANGUL CHOSEONG PIEUP, RIGHT PARENTHESIS  # 
+
+3213 ; 0028 BC14 0029 ;        MA      #* ( ㈓ → (바) ) PARENTHESIZED HANGUL PIEUP A → LEFT PARENTHESIS, HANGUL SYLLABLE BA, RIGHT PARENTHESIS   # 
+
+3206 ; 0028 1109 0029 ;        MA      #* ( ㈆ → (ᄉ) ) PARENTHESIZED HANGUL SIOS → LEFT PARENTHESIS, HANGUL CHOSEONG SIOS, RIGHT PARENTHESIS    # 
+
+3214 ; 0028 C0AC 0029 ;        MA      #* ( ㈔ → (사) ) PARENTHESIZED HANGUL SIOS A → LEFT PARENTHESIS, HANGUL SYLLABLE SA, RIGHT PARENTHESIS    # 
+
+3207 ; 0028 110B 0029 ;        MA      #* ( ㈇ → (ᄋ) ) PARENTHESIZED HANGUL IEUNG → LEFT PARENTHESIS, HANGUL CHOSEONG IEUNG, RIGHT PARENTHESIS  # 
+
+3215 ; 0028 C544 0029 ;        MA      #* ( ㈕ → (아) ) PARENTHESIZED HANGUL IEUNG A → LEFT PARENTHESIS, HANGUL SYLLABLE A, RIGHT PARENTHESIS    # 
+
+321D ; 0028 C624 C804 0029 ;   MA      #* ( ㈝ → (오전) ) PARENTHESIZED KOREAN CHARACTER OJEON → LEFT PARENTHESIS, HANGUL SYLLABLE O, HANGUL SYLLABLE JEON, RIGHT PARENTHESIS   # 
+
+321E ; 0028 C624 D6C4 0029 ;   MA      #* ( ㈞ → (오후) ) PARENTHESIZED KOREAN CHARACTER O HU → LEFT PARENTHESIS, HANGUL SYLLABLE O, HANGUL SYLLABLE HU, RIGHT PARENTHESIS      # 
+
+3208 ; 0028 110C 0029 ;        MA      #* ( ㈈ → (ᄌ) ) PARENTHESIZED HANGUL CIEUC → LEFT PARENTHESIS, HANGUL CHOSEONG CIEUC, RIGHT PARENTHESIS  # 
+
+3216 ; 0028 C790 0029 ;        MA      #* ( ㈖ → (자) ) PARENTHESIZED HANGUL CIEUC A → LEFT PARENTHESIS, HANGUL SYLLABLE JA, RIGHT PARENTHESIS   # 
+
+321C ; 0028 C8FC 0029 ;        MA      #* ( ㈜ → (주) ) PARENTHESIZED HANGUL CIEUC U → LEFT PARENTHESIS, HANGUL SYLLABLE JU, RIGHT PARENTHESIS   # 
+
+3209 ; 0028 110E 0029 ;        MA      #* ( ㈉ → (ᄎ) ) PARENTHESIZED HANGUL CHIEUCH → LEFT PARENTHESIS, HANGUL CHOSEONG CHIEUCH, RIGHT PARENTHESIS      # 
+
+3217 ; 0028 CC28 0029 ;        MA      #* ( ㈗ → (차) ) PARENTHESIZED HANGUL CHIEUCH A → LEFT PARENTHESIS, HANGUL SYLLABLE CA, RIGHT PARENTHESIS # 
+
+320A ; 0028 110F 0029 ;        MA      #* ( ㈊ → (ᄏ) ) PARENTHESIZED HANGUL KHIEUKH → LEFT PARENTHESIS, HANGUL CHOSEONG KHIEUKH, RIGHT PARENTHESIS      # 
+
+3218 ; 0028 CE74 0029 ;        MA      #* ( ㈘ → (카) ) PARENTHESIZED HANGUL KHIEUKH A → LEFT PARENTHESIS, HANGUL SYLLABLE KA, RIGHT PARENTHESIS # 
+
+320B ; 0028 1110 0029 ;        MA      #* ( ㈋ → (ᄐ) ) PARENTHESIZED HANGUL THIEUTH → LEFT PARENTHESIS, HANGUL CHOSEONG THIEUTH, RIGHT PARENTHESIS      # 
+
+3219 ; 0028 D0C0 0029 ;        MA      #* ( ㈙ → (타) ) PARENTHESIZED HANGUL THIEUTH A → LEFT PARENTHESIS, HANGUL SYLLABLE TA, RIGHT PARENTHESIS # 
+
+320C ; 0028 1111 0029 ;        MA      #* ( ㈌ → (ᄑ) ) PARENTHESIZED HANGUL PHIEUPH → LEFT PARENTHESIS, HANGUL CHOSEONG PHIEUPH, RIGHT PARENTHESIS      # 
+
+321A ; 0028 D30C 0029 ;        MA      #* ( ㈚ → (파) ) PARENTHESIZED HANGUL PHIEUPH A → LEFT PARENTHESIS, HANGUL SYLLABLE PA, RIGHT PARENTHESIS # 
+
+320D ; 0028 1112 0029 ;        MA      #* ( ㈍ → (ᄒ) ) PARENTHESIZED HANGUL HIEUH → LEFT PARENTHESIS, HANGUL CHOSEONG HIEUH, RIGHT PARENTHESIS  # 
+
+321B ; 0028 D558 0029 ;        MA      #* ( ㈛ → (하) ) PARENTHESIZED HANGUL HIEUH A → LEFT PARENTHESIS, HANGUL SYLLABLE HA, RIGHT PARENTHESIS   # 
+
+3226 ; 0028 4E03 0029 ;        MA      #* ( ㈦ → (七) ) PARENTHESIZED IDEOGRAPH SEVEN → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E03, RIGHT PARENTHESIS  # 
+
+3222 ; 0028 4E09 0029 ;        MA      #* ( ㈢ → (三) ) PARENTHESIZED IDEOGRAPH THREE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E09, RIGHT PARENTHESIS  # 
+1F241 ;        0028 4E09 0029 ;        MA      #* ( 🉁 → (三) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E09, RIGHT PARENTHESIS   # →〔三〕→
+
+3228 ; 0028 4E5D 0029 ;        MA      #* ( ㈨ → (九) ) PARENTHESIZED IDEOGRAPH NINE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E5D, RIGHT PARENTHESIS   # 
+
+3221 ; 0028 4E8C 0029 ;        MA      #* ( ㈡ → (二) ) PARENTHESIZED IDEOGRAPH TWO → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E8C, RIGHT PARENTHESIS    # 
+1F242 ;        0028 4E8C 0029 ;        MA      #* ( 🉂 → (二) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E8C, RIGHT PARENTHESIS   # →〔二〕→
+
+3224 ; 0028 4E94 0029 ;        MA      #* ( ㈤ → (五) ) PARENTHESIZED IDEOGRAPH FIVE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4E94, RIGHT PARENTHESIS   # 
+
+3239 ; 0028 4EE3 0029 ;        MA      #* ( ㈹ → (代) ) PARENTHESIZED IDEOGRAPH REPRESENT → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4EE3, RIGHT PARENTHESIS      # 
+
+323D ; 0028 4F01 0029 ;        MA      #* ( ㈽ → (企) ) PARENTHESIZED IDEOGRAPH ENTERPRISE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4F01, RIGHT PARENTHESIS     # 
+
+3241 ; 0028 4F11 0029 ;        MA      #* ( ㉁ → (休) ) PARENTHESIZED IDEOGRAPH REST → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-4F11, RIGHT PARENTHESIS   # 
+
+3227 ; 0028 516B 0029 ;        MA      #* ( ㈧ → (八) ) PARENTHESIZED IDEOGRAPH EIGHT → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-516B, RIGHT PARENTHESIS  # 
+
+3225 ; 0028 516D 0029 ;        MA      #* ( ㈥ → (六) ) PARENTHESIZED IDEOGRAPH SIX → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-516D, RIGHT PARENTHESIS    # 
+
+3238 ; 0028 52B4 0029 ;        MA      #* ( ㈸ → (労) ) PARENTHESIZED IDEOGRAPH LABOR → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-52B4, RIGHT PARENTHESIS  # 
+
+1F247 ;        0028 52DD 0029 ;        MA      #* ( 🉇 → (勝) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-52DD, RIGHT PARENTHESIS   # →〔勝〕→
+
+3229 ; 0028 5341 0029 ;        MA      #* ( ㈩ → (十) ) PARENTHESIZED IDEOGRAPH TEN → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-5341, RIGHT PARENTHESIS    # 
+
+323F ; 0028 5354 0029 ;        MA      #* ( ㈿ → (協) ) PARENTHESIZED IDEOGRAPH ALLIANCE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-5354, RIGHT PARENTHESIS       # 
+
+3234 ; 0028 540D 0029 ;        MA      #* ( ㈴ → (名) ) PARENTHESIZED IDEOGRAPH NAME → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-540D, RIGHT PARENTHESIS   # 
+
+323A ; 0028 547C 0029 ;        MA      #* ( ㈺ → (呼) ) PARENTHESIZED IDEOGRAPH CALL → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-547C, RIGHT PARENTHESIS   # 
+
+3223 ; 0028 56DB 0029 ;        MA      #* ( ㈣ → (四) ) PARENTHESIZED IDEOGRAPH FOUR → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-56DB, RIGHT PARENTHESIS   # 
+
+322F ; 0028 571F 0029 ;        MA      #* ( ㈯ → (土) ) PARENTHESIZED IDEOGRAPH EARTH → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-571F, RIGHT PARENTHESIS  # 
+
+323B ; 0028 5B66 0029 ;        MA      #* ( ㈻ → (学) ) PARENTHESIZED IDEOGRAPH STUDY → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-5B66, RIGHT PARENTHESIS  # 
+
+1F243 ;        0028 5B89 0029 ;        MA      #* ( 🉃 → (安) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-5B89, RIGHT PARENTHESIS   # →〔安〕→
+
+1F245 ;        0028 6253 0029 ;        MA      #* ( 🉅 → (打) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6253, RIGHT PARENTHESIS   # →〔打〕→
+
+1F248 ;        0028 6557 0029 ;        MA      #* ( 🉈 → (敗) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6557, RIGHT PARENTHESIS   # →〔敗〕→
+
+3230 ; 0028 65E5 0029 ;        MA      #* ( ㈰ → (日) ) PARENTHESIZED IDEOGRAPH SUN → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-65E5, RIGHT PARENTHESIS    # 
+
+322A ; 0028 6708 0029 ;        MA      #* ( ㈪ → (月) ) PARENTHESIZED IDEOGRAPH MOON → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6708, RIGHT PARENTHESIS   # 
+
+3232 ; 0028 6709 0029 ;        MA      #* ( ㈲ → (有) ) PARENTHESIZED IDEOGRAPH HAVE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6709, RIGHT PARENTHESIS   # 
+
+322D ; 0028 6728 0029 ;        MA      #* ( ㈭ → (木) ) PARENTHESIZED IDEOGRAPH WOOD → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6728, RIGHT PARENTHESIS   # 
+
+1F240 ;        0028 672C 0029 ;        MA      #* ( 🉀 → (本) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-672C, RIGHT PARENTHESIS   # →〔本〕→
+
+3231 ; 0028 682A 0029 ;        MA      #* ( ㈱ → (株) ) PARENTHESIZED IDEOGRAPH STOCK → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-682A, RIGHT PARENTHESIS  # 
+
+322C ; 0028 6C34 0029 ;        MA      #* ( ㈬ → (水) ) PARENTHESIZED IDEOGRAPH WATER → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-6C34, RIGHT PARENTHESIS  # 
+
+322B ; 0028 706B 0029 ;        MA      #* ( ㈫ → (火) ) PARENTHESIZED IDEOGRAPH FIRE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-706B, RIGHT PARENTHESIS   # 
+
+1F244 ;        0028 70B9 0029 ;        MA      #* ( 🉄 → (点) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-70B9, RIGHT PARENTHESIS   # →〔点〕→
+
+3235 ; 0028 7279 0029 ;        MA      #* ( ㈵ → (特) ) PARENTHESIZED IDEOGRAPH SPECIAL → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-7279, RIGHT PARENTHESIS        # 
+
+1F246 ;        0028 76D7 0029 ;        MA      #* ( 🉆 → (盗) ) TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7 → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-76D7, RIGHT PARENTHESIS   # →〔盗〕→
+
+323C ; 0028 76E3 0029 ;        MA      #* ( ㈼ → (監) ) PARENTHESIZED IDEOGRAPH SUPERVISE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-76E3, RIGHT PARENTHESIS      # 
+
+3233 ; 0028 793E 0029 ;        MA      #* ( ㈳ → (社) ) PARENTHESIZED IDEOGRAPH SOCIETY → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-793E, RIGHT PARENTHESIS        # 
+
+3237 ; 0028 795D 0029 ;        MA      #* ( ㈷ → (祝) ) PARENTHESIZED IDEOGRAPH CONGRATULATION → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-795D, RIGHT PARENTHESIS # 
+
+3240 ; 0028 796D 0029 ;        MA      #* ( ㉀ → (祭) ) PARENTHESIZED IDEOGRAPH FESTIVAL → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-796D, RIGHT PARENTHESIS       # 
+
+3242 ; 0028 81EA 0029 ;        MA      #* ( ㉂ → (自) ) PARENTHESIZED IDEOGRAPH SELF → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-81EA, RIGHT PARENTHESIS   # 
+
+3243 ; 0028 81F3 0029 ;        MA      #* ( ㉃ → (至) ) PARENTHESIZED IDEOGRAPH REACH → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-81F3, RIGHT PARENTHESIS  # 
+
+3236 ; 0028 8CA1 0029 ;        MA      #* ( ㈶ → (財) ) PARENTHESIZED IDEOGRAPH FINANCIAL → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-8CA1, RIGHT PARENTHESIS      # 
+
+323E ; 0028 8CC7 0029 ;        MA      #* ( ㈾ → (資) ) PARENTHESIZED IDEOGRAPH RESOURCE → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-8CC7, RIGHT PARENTHESIS       # 
+
+322E ; 0028 91D1 0029 ;        MA      #* ( ㈮ → (金) ) PARENTHESIZED IDEOGRAPH METAL → LEFT PARENTHESIS, CJK UNIFIED IDEOGRAPH-91D1, RIGHT PARENTHESIS  # 
+
+FF3D ; 0029 ;  MA      #* ( ] → ) ) FULLWIDTH RIGHT SQUARE BRACKET → RIGHT PARENTHESIS   # →〕→
+3015 ; 0029 ;  MA      #* ( 〕 → ) ) RIGHT TORTOISE SHELL BRACKET → RIGHT PARENTHESIS     # 
+FD3F ; 0029 ;  MA      #* ( ﴿ → ) ) ORNATE RIGHT PARENTHESIS → RIGHT PARENTHESIS # 
+2769 ; 0029 ;  MA      #* ( ❩ → ) ) MEDIUM RIGHT PARENTHESIS ORNAMENT → RIGHT PARENTHESIS        # 
+2773 ; 0029 ;  MA      #* ( ❳ → ) ) LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT → RIGHT PARENTHESIS      # →〕→
+
+2774 ; 007B ;  MA      #* ( ❴ → { ) MEDIUM LEFT CURLY BRACKET ORNAMENT → LEFT CURLY BRACKET      # 
+
+2775 ; 007D ;  MA      #* ( ❵ → } ) MEDIUM RIGHT CURLY BRACKET ORNAMENT → RIGHT CURLY BRACKET    # 
+
+FF3E ; FE3F ;  MA      #* ( ^ → ︿ ) FULLWIDTH CIRCUMFLEX ACCENT → PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET    # 
+
+204E ; 002A ;  MA      #* ( ⁎ → * ) LOW ASTERISK → ASTERISK      # 
+066D ; 002A ;  MA      #* ( ‎٭‎ → * ) ARABIC FIVE POINTED STAR → ASTERISK     # 
+2217 ; 002A ;  MA      #* ( ∗ → * ) ASTERISK OPERATOR → ASTERISK # 
+
+1735 ; 002F ;  MA      #* ( ᜵ → / ) PHILIPPINE SINGLE PUNCTUATION → SOLIDUS      # 
+2044 ; 002F ;  MA      #* ( ⁄ → / ) FRACTION SLASH → SOLIDUS     # 
+2041 ; 002F ;  MA      #* ( ⁁ → / ) CARET INSERTION POINT → SOLIDUS      # 
+2215 ; 002F ;  MA      #* ( ∕ → / ) DIVISION SLASH → SOLIDUS     # 
+2571 ; 002F ;  MA      #* ( ╱ → / ) BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT → SOLIDUS      # 
+29F8 ; 002F ;  MA      #* ( ⧸ → / ) BIG SOLIDUS → SOLIDUS        # 
+31D3 ; 002F ;  MA      #* ( ㇓ → / ) CJK STROKE SP → SOLIDUS      # →⼃→
+3033 ; 002F ;  MA      # ( 〳 → / ) VERTICAL KANA REPEAT MARK UPPER HALF → SOLIDUS        # 
+2CC6 ; 002F ;  MA      # ( Ⳇ → / ) COPTIC CAPITAL LETTER OLD COPTIC ESH → SOLIDUS        # 
+4E3F ; 002F ;  MA      # ( 丿 → / ) CJK UNIFIED IDEOGRAPH-4E3F → SOLIDUS  # →⼃→
+2F03 ; 002F ;  MA      #* ( ⼃ → / ) KANGXI RADICAL SLASH → SOLIDUS       # 
+
+29F6 ; 002F 0304 ;     MA      #* ( ⧶ → /̄ ) SOLIDUS WITH OVERBAR → SOLIDUS, COMBINING MACRON   # 
+
+2AFD ; 002F 002F ;     MA      #* ( ⫽ → // ) DOUBLE SOLIDUS OPERATOR → SOLIDUS, SOLIDUS  # 
+
+2AFB ; 002F 002F 002F ;        MA      #* ( ⫻ → /// ) TRIPLE SOLIDUS BINARY RELATION → SOLIDUS, SOLIDUS, SOLIDUS # 
+
+FF3C ; 005C ;  MA      #* ( \ → \ ) FULLWIDTH REVERSE SOLIDUS → REVERSE SOLIDUS  # →∖→
+FE68 ; 005C ;  MA      #* ( ﹨ → \ ) SMALL REVERSE SOLIDUS → REVERSE SOLIDUS      # →∖→
+2216 ; 005C ;  MA      #* ( ∖ → \ ) SET MINUS → REVERSE SOLIDUS  # 
+29F5 ; 005C ;  MA      #* ( ⧵ → \ ) REVERSE SOLIDUS OPERATOR → REVERSE SOLIDUS   # 
+29F9 ; 005C ;  MA      #* ( ⧹ → \ ) BIG REVERSE SOLIDUS → REVERSE SOLIDUS        # 
+31D4 ; 005C ;  MA      #* ( ㇔ → \ ) CJK STROKE D → REVERSE SOLIDUS       # →⼂→
+4E36 ; 005C ;  MA      # ( 丶 → \ ) CJK UNIFIED IDEOGRAPH-4E36 → REVERSE SOLIDUS  # →⼂→
+2F02 ; 005C ;  MA      #* ( ⼂ → \ ) KANGXI RADICAL DOT → REVERSE SOLIDUS # 
+
+2CF9 ; 005C 005C ;     MA      #* ( ⳹ → \\ ) COPTIC OLD NUBIAN FULL STOP → REVERSE SOLIDUS, REVERSE SOLIDUS      # 
+244A ; 005C 005C ;     MA      #* ( ⑊ → \\ ) OCR DOUBLE BACKSLASH → REVERSE SOLIDUS, REVERSE SOLIDUS     # 
+
+A778 ; 0026 ;  MA      # ( ꝸ → & ) LATIN SMALL LETTER UM → AMPERSAND     # 
+
+110BB ;        0970 ;  MA      #* ( 𑂻 → ॰ ) KAITHI ABBREVIATION SIGN → DEVANAGARI ABBREVIATION SIGN   # 
+26AC ; 0970 ;  MA      #* ( ⚬ → ॰ ) MEDIUM SMALL WHITE CIRCLE → DEVANAGARI ABBREVIATION SIGN   # 
+
+17D5 ; 0E5A ;  MA      #* ( ៕ → ๚ ) KHMER SIGN BARIYOOSAN → THAI CHARACTER ANGKHANKHU  # 
+
+17DA ; 0E5B ;  MA      #* ( ៚ → ๛ ) KHMER SIGN KOOMUUT → THAI CHARACTER KHOMUT # 
+
+0F0C ; 0F0B ;  MA      #* ( ༌ → ་ ) TIBETAN MARK DELIMITER TSHEG BSTAR → TIBETAN MARK INTERSYLLABIC TSHEG      # 
+
+02D8 ; 02C7 ;  MA      #* ( ˘ → ˇ ) BREVE → CARON        # 
+A67E ; 02C7 ;  MA      #* ( ꙾ → ˇ ) CYRILLIC KAVYKA → CARON     # →˘→
+
+00AF ; 02C9 ;  MA      #* ( ¯ → ˉ ) MACRON → MODIFIER LETTER MACRON      # 
+FFE3 ; 02C9 ;  MA      #* (  ̄ → ˉ ) FULLWIDTH MACRON → MODIFIER LETTER MACRON   # →‾→
+203E ; 02C9 ;  MA      #* ( ‾ → ˉ ) OVERLINE → MODIFIER LETTER MACRON   # 
+FE49 ; 02C9 ;  MA      #* ( ﹉ → ˉ ) DASHED OVERLINE → MODIFIER LETTER MACRON    # →‾→
+FE4A ; 02C9 ;  MA      #* ( ﹊ → ˉ ) CENTRELINE OVERLINE → MODIFIER LETTER MACRON        # →‾→
+FE4B ; 02C9 ;  MA      #* ( ﹋ → ˉ ) WAVY OVERLINE → MODIFIER LETTER MACRON      # →‾→
+FE4C ; 02C9 ;  MA      #* ( ﹌ → ˉ ) DOUBLE WAVY OVERLINE → MODIFIER LETTER MACRON       # →‾→
+2594 ; 02C9 ;  MA      #* ( ▔ → ˉ ) UPPER ONE EIGHTH BLOCK → MODIFIER LETTER MACRON     # →¯→
+
+044A ; 02C9 0062 ;     MA      # ( ъ → ˉb ) CYRILLIC SMALL LETTER HARD SIGN → MODIFIER LETTER MACRON, LATIN SMALL LETTER B       # →¯b→
+
+0375 ; 02CF ;  MA      #* ( ͵ → ˏ ) GREEK LOWER NUMERAL SIGN → MODIFIER LETTER LOW ACUTE ACCENT  # 
+
+02FB ; 02EA ;  MA      #* ( ˻ → ˪ ) MODIFIER LETTER BEGIN LOW TONE → MODIFIER LETTER YIN DEPARTING TONE MARK     # 
+A716 ; 02EA ;  MA      #* ( ꜖ → ˪ ) MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR → MODIFIER LETTER YIN DEPARTING TONE MARK      # 
+
+A714 ; 02EB ;  MA      #* ( ꜔ → ˫ ) MODIFIER LETTER MID LEFT-STEM TONE BAR → MODIFIER LETTER YANG DEPARTING TONE MARK   # 
+
+2E30 ; 02F3 ;  MA      #* ( ⸰ → ˳ ) RING POINT → MODIFIER LETTER LOW RING       # 
+3002 ; 02F3 ;  MA      #* ( 。 → ˳ ) IDEOGRAPHIC FULL STOP → MODIFIER LETTER LOW RING    # 
+
+02DA ; 00B0 ;  MA      #* ( ˚ → ° ) RING ABOVE → DEGREE SIGN     # 
+2218 ; 00B0 ;  MA      #* ( ∘ → ° ) RING OPERATOR → DEGREE SIGN # 
+25CB ; 00B0 ;  MA      #* ( ○ → ° ) WHITE CIRCLE → DEGREE SIGN  # →◦→→∘→
+25E6 ; 00B0 ;  MA      #* ( ◦ → ° ) WHITE BULLET → DEGREE SIGN  # →∘→
+
+2103 ; 00B0 0043 ;     MA      #* ( ℃ → °C ) DEGREE CELSIUS → DEGREE SIGN, LATIN CAPITAL LETTER C       # 
+
+2109 ; 00B0 0046 ;     MA      #* ( ℉ → °F ) DEGREE FAHRENHEIT → DEGREE SIGN, LATIN CAPITAL LETTER F    # 
+
+0BF5 ; 0BF3 ;  MA      #* ( ௵ → ௳ ) TAMIL YEAR SIGN → TAMIL DAY SIGN   # 
+
+17D9 ; 0E4F ;  MA      #* ( ៙ → ๏ ) KHMER SIGN PHNAEK MUAN → THAI CHARACTER FONGMAN    # 
+
+24C5 ; 2117 ;  MA      #* ( Ⓟ → ℗ ) CIRCLED LATIN CAPITAL LETTER P → SOUND RECORDING COPYRIGHT # 
+
+21B5 ; 21B2 ;  MA      #* ( ↵ → ↲ ) DOWNWARDS ARROW WITH CORNER LEFTWARDS → DOWNWARDS ARROW WITH TIP LEFTWARDS # 
+
+2A21 ; 21BE ;  MA      #* ( ⨡ → ↾ ) Z NOTATION SCHEMA PROJECTION → UPWARDS HARPOON WITH BARB RIGHTWARDS        # 
+
+1D6DB ;        2202 ;  MA      #* ( 𝛛 → ∂ ) MATHEMATICAL BOLD PARTIAL DIFFERENTIAL → PARTIAL DIFFERENTIAL     # 
+1D715 ;        2202 ;  MA      #* ( 𝜕 → ∂ ) MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL → PARTIAL DIFFERENTIAL   # 
+1D74F ;        2202 ;  MA      #* ( 𝝏 → ∂ ) MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL → PARTIAL DIFFERENTIAL      # 
+1D789 ;        2202 ;  MA      #* ( 𝞉 → ∂ ) MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL → PARTIAL DIFFERENTIAL  # 
+1D7C3 ;        2202 ;  MA      #* ( 𝟃 → ∂ ) MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL → PARTIAL DIFFERENTIAL   # 
+
+00F0 ; 2202 0335 ;     MA      # ( ð → ∂̵ ) LATIN SMALL LETTER ETH → PARTIAL DIFFERENTIAL, COMBINING SHORT STROKE OVERLAY      # 
+
+2300 ; 2205 ;  MA      #* ( ⌀ → ∅ ) DIAMETER SIGN → EMPTY SET  # 
+
+1D6C1 ;        2207 ;  MA      #* ( 𝛁 → ∇ ) MATHEMATICAL BOLD NABLA → NABLA   # 
+1D6FB ;        2207 ;  MA      #* ( 𝛻 → ∇ ) MATHEMATICAL ITALIC NABLA → NABLA # 
+1D735 ;        2207 ;  MA      #* ( 𝜵 → ∇ ) MATHEMATICAL BOLD ITALIC NABLA → NABLA    # 
+1D76F ;        2207 ;  MA      #* ( 𝝯 → ∇ ) MATHEMATICAL SANS-SERIF BOLD NABLA → NABLA        # 
+1D7A9 ;        2207 ;  MA      #* ( 𝞩 → ∇ ) MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA → NABLA # 
+
+2588 ; 220E ;  MA      #* ( █ → ∎ ) FULL BLOCK → END OF PROOF  # →■→
+25A0 ; 220E ;  MA      #* ( ■ → ∎ ) BLACK SQUARE → END OF PROOF        # 
+
+2A3F ; 2210 ;  MA      #* ( ⨿ → ∐ ) AMALGAMATION OR COPRODUCT → N-ARY COPRODUCT        # 
+
+FB29 ; 002B ;  MA      #* ( ﬩ → + ) HEBREW LETTER ALTERNATIVE PLUS SIGN → PLUS SIGN      # 
+
+2039 ; 003C ;  MA      #* ( ‹ → < ) SINGLE LEFT-POINTING ANGLE QUOTATION MARK → LESS-THAN SIGN   # 
+02C2 ; 003C ;  MA      #* ( ˂ → < ) MODIFIER LETTER LEFT ARROWHEAD → LESS-THAN SIGN       # 
+276E ; 003C ;  MA      #* ( ❮ → < ) HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT → LESS-THAN SIGN   # →‹→
+
+A4FF ; 003D ;  MA      #* ( ꓿ → = ) LISU PUNCTUATION FULL STOP → EQUALS SIGN     # 
+
+2A75 ; 003D 003D ;     MA      #* ( ⩵ → == ) TWO CONSECUTIVE EQUALS SIGNS → EQUALS SIGN, EQUALS SIGN     # 
+
+2A76 ; 003D 003D 003D ;        MA      #* ( ⩶ → === ) THREE CONSECUTIVE EQUALS SIGNS → EQUALS SIGN, EQUALS SIGN, EQUALS SIGN     # 
+
+203A ; 003E ;  MA      #* ( › → > ) SINGLE RIGHT-POINTING ANGLE QUOTATION MARK → GREATER-THAN SIGN       # 
+02C3 ; 003E ;  MA      #* ( ˃ → > ) MODIFIER LETTER RIGHT ARROWHEAD → GREATER-THAN SIGN   # 
+276F ; 003E ;  MA      #* ( ❯ → > ) HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT → GREATER-THAN SIGN       # →›→
+
+02DC ; 007E ;  MA      #* ( ˜ → ~ ) SMALL TILDE → TILDE   # 
+1FC0 ; 007E ;  MA      #* ( ῀ → ~ ) GREEK PERISPOMENI → TILDE    # →˜→
+2053 ; 007E ;  MA      #* ( ⁓ → ~ ) SWUNG DASH → TILDE   # 
+223C ; 007E ;  MA      #* ( ∼ → ~ ) TILDE OPERATOR → TILDE       # 
+
+22C0 ; 2227 ;  MA      #* ( ⋀ → ∧ ) N-ARY LOGICAL AND → LOGICAL AND    # 
+
+22C3 ; 222A ;  MA      #* ( ⋃ → ∪ ) N-ARY UNION → UNION        # 
+
+222F ; 222E 222E ;     MA      #* ( ∯ → ∮∮ ) SURFACE INTEGRAL → CONTOUR INTEGRAL, CONTOUR INTEGRAL   # 
+
+2230 ; 222E 222E 222E ;        MA      #* ( ∰ → ∮∮∮ ) VOLUME INTEGRAL → CONTOUR INTEGRAL, CONTOUR INTEGRAL, CONTOUR INTEGRAL       # 
+
+2263 ; 2261 ;  MA      #* ( ≣ → ≡ ) STRICTLY EQUIVALENT TO → IDENTICAL TO      # 
+
+2A20 ; 226B ;  MA      #* ( ⨠ → ≫ ) Z NOTATION SCHEMA PIPING → MUCH GREATER-THAN       # 
+
+2A03 ; 228D ;  MA      #* ( ⨃ → ⊍ ) N-ARY UNION OPERATOR WITH DOT → MULTISET MULTIPLICATION    # 
+
+2A04 ; 228E ;  MA      #* ( ⨄ → ⊎ ) N-ARY UNION OPERATOR WITH PLUS → MULTISET UNION    # 
+
+2A05 ; 2293 ;  MA      #* ( ⨅ → ⊓ ) N-ARY SQUARE INTERSECTION OPERATOR → SQUARE CAP    # 
+
+2A06 ; 2294 ;  MA      #* ( ⨆ → ⊔ ) N-ARY SQUARE UNION OPERATOR → SQUARE CUP   # 
+
+2641 ; 2295 ;  MA      #* ( ♁ → ⊕ ) EARTH → CIRCLED PLUS       # 
+2A01 ; 2295 ;  MA      #* ( ⨁ → ⊕ ) N-ARY CIRCLED PLUS OPERATOR → CIRCLED PLUS # 
+
+2A02 ; 2297 ;  MA      #* ( ⨂ → ⊗ ) N-ARY CIRCLED TIMES OPERATOR → CIRCLED TIMES       # 
+
+2609 ; 2299 ;  MA      #* ( ☉ → ⊙ ) SUN → CIRCLED DOT OPERATOR # 
+2A00 ; 2299 ;  MA      #* ( ⨀ → ⊙ ) N-ARY CIRCLED DOT OPERATOR → CIRCLED DOT OPERATOR  # 
+
+25B7 ; 22B2 ;  MA      #* ( ▷ → ⊲ ) WHITE RIGHT-POINTING TRIANGLE → NORMAL SUBGROUP OF # 
+
+25C7 ; 22C4 ;  MA      #* ( ◇ → ⋄ ) WHITE DIAMOND → DIAMOND OPERATOR   # 
+25CA ; 22C4 ;  MA      #* ( ◊ → ⋄ ) LOZENGE → DIAMOND OPERATOR # 
+2662 ; 22C4 ;  MA      #* ( ♢ → ⋄ ) WHITE DIAMOND SUIT → DIAMOND OPERATOR      # →◊→
+
+2A1D ; 22C8 ;  MA      #* ( ⨝ → ⋈ ) JOIN → BOWTIE      # 
+
+25E0 ; 2312 ;  MA      #* ( ◠ → ⌒ ) UPPER HALF CIRCLE → ARC    # 
+
+2A3D ; 2319 ;  MA      #* ( ⨽ → ⌙ ) RIGHTHAND INTERIOR PRODUCT → TURNED NOT SIGN       # 
+
+2325 ; 2324 ;  MA      #* ( ⌥ → ⌤ ) OPTION KEY → UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS      # 
+
+2638 ; 2388 ;  MA      #* ( ☸ → ⎈ ) WHEEL OF DHARMA → HELM SYMBOL      # 
+
+FE35 ; 23DC ;  MA      #* ( ︵ → ⏜ ) PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS → TOP PARENTHESIS  # 
+
+FE36 ; 23DD ;  MA      #* ( ︶ → ⏝ ) PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS → BOTTOM PARENTHESIS      # 
+
+FE37 ; 23DE ;  MA      #* ( ︷ → ⏞ ) PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET → TOP CURLY BRACKET      # 
+
+FE38 ; 23DF ;  MA      #* ( ︸ → ⏟ ) PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET → BOTTOM CURLY BRACKET  # 
+
+FE39 ; 23E0 ;  MA      #* ( ︹ → ⏠ ) PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET → TOP TORTOISE SHELL BRACKET    # 
+
+FE3A ; 23E1 ;  MA      #* ( ︺ → ⏡ ) PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET → BOTTOM TORTOISE SHELL BRACKET        # 
+
+25B1 ; 23E5 ;  MA      #* ( ▱ → ⏥ ) WHITE PARALLELOGRAM → FLATNESS     # 
+
+FE31 ; 2502 ;  MA      #* ( ︱ → │ ) PRESENTATION FORM FOR VERTICAL EM DASH → BOX DRAWINGS LIGHT VERTICAL       # →|→
+FF5C ; 2502 ;  MA      #* ( | → │ ) FULLWIDTH VERTICAL LINE → BOX DRAWINGS LIGHT VERTICAL      # 
+2503 ; 2502 ;  MA      #* ( ┃ → │ ) BOX DRAWINGS HEAVY VERTICAL → BOX DRAWINGS LIGHT VERTICAL  # 
+
+250F ; 250C ;  MA      #* ( ┏ → ┌ ) BOX DRAWINGS HEAVY DOWN AND RIGHT → BOX DRAWINGS LIGHT DOWN AND RIGHT      # 
+
+2523 ; 251C ;  MA      #* ( ┣ → ├ ) BOX DRAWINGS HEAVY VERTICAL AND RIGHT → BOX DRAWINGS LIGHT VERTICAL AND RIGHT      # 
+
+2590 ; 258C ;  MA      #* ( ▐ → ▌ ) RIGHT HALF BLOCK → LEFT HALF BLOCK # 
+
+2597 ; 2596 ;  MA      #* ( ▗ → ▖ ) QUADRANT LOWER RIGHT → QUADRANT LOWER LEFT # 
+
+259D ; 2598 ;  MA      #* ( ▝ → ▘ ) QUADRANT UPPER RIGHT → QUADRANT UPPER LEFT # 
+
+2610 ; 25A1 ;  MA      #* ( ☐ → □ ) BALLOT BOX → WHITE SQUARE  # 
+
+FFED ; 25AA ;  MA      #* ( ■ → ▪ ) HALFWIDTH BLACK SQUARE → BLACK SMALL SQUARE        # 
+
+25B8 ; 25B6 ;  MA      #* ( ▸ → ▶ ) BLACK RIGHT-POINTING SMALL TRIANGLE → BLACK RIGHT-POINTING TRIANGLE        # →►→
+25BA ; 25B6 ;  MA      #* ( ► → ▶ ) BLACK RIGHT-POINTING POINTER → BLACK RIGHT-POINTING TRIANGLE       # 
+
+29BE ; 25CE ;  MA      #* ( ⦾ → ◎ ) CIRCLED WHITE BULLET → BULLSEYE    # 
+
+2CE9 ; 2627 ;  MA      #* ( ⳩ → ☧ ) COPTIC SYMBOL KHI RO → CHI RHO     # 
+
+2329 ; 276C ;  MA      #* ( 〈 → ❬ ) LEFT-POINTING ANGLE BRACKET → MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT  # →〈→
+3008 ; 276C ;  MA      #* ( 〈 → ❬ ) LEFT ANGLE BRACKET → MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT   # 
+27E8 ; 276C ;  MA      #* ( ⟨ → ❬ ) MATHEMATICAL LEFT ANGLE BRACKET → MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT      # →〈→
+
+232A ; 276D ;  MA      #* ( 〉 → ❭ ) RIGHT-POINTING ANGLE BRACKET → MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT        # →〉→
+3009 ; 276D ;  MA      #* ( 〉 → ❭ ) RIGHT ANGLE BRACKET → MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT # 
+27E9 ; 276D ;  MA      #* ( ⟩ → ❭ ) MATHEMATICAL RIGHT ANGLE BRACKET → MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT    # →〉→
+
+301B ; 27E7 ;  MA      #* ( 〛 → ⟧ ) RIGHT WHITE SQUARE BRACKET → MATHEMATICAL RIGHT WHITE SQUARE BRACKET       # 
+
+29D9 ; 299A ;  MA      #* ( ⧙ → ⦚ ) RIGHT WIGGLY FENCE → VERTICAL ZIGZAG LINE  # 
+
+2A3E ; 2A1F ;  MA      #* ( ⨾ → ⨟ ) Z NOTATION RELATIONAL COMPOSITION → Z NOTATION SCHEMA COMPOSITION  # 
+
+3036 ; 3012 ;  MA      #* ( 〶 → 〒 ) CIRCLED POSTAL MARK → POSTAL MARK  # 
+
+02D9 ; 0971 ;  MA      #* ( ˙ → ॱ ) DOT ABOVE → DEVANAGARI SIGN HIGH SPACING DOT        # 
+
+FF0D ; 30FC ;  MA      #* ( - → ー ) FULLWIDTH HYPHEN-MINUS → KATAKANA-HIRAGANA PROLONGED SOUND MARK    # 
+2014 ; 30FC ;  MA      #* ( — → ー ) EM DASH → KATAKANA-HIRAGANA PROLONGED SOUND MARK   # →一→
+2015 ; 30FC ;  MA      #* ( ― → ー ) HORIZONTAL BAR → KATAKANA-HIRAGANA PROLONGED SOUND MARK    # →—→→一→
+2500 ; 30FC ;  MA      #* ( ─ → ー ) BOX DRAWINGS LIGHT HORIZONTAL → KATAKANA-HIRAGANA PROLONGED SOUND MARK     # →―→→—→→一→
+2501 ; 30FC ;  MA      #* ( ━ → ー ) BOX DRAWINGS HEAVY HORIZONTAL → KATAKANA-HIRAGANA PROLONGED SOUND MARK     # →—→→一→
+31D0 ; 30FC ;  MA      #* ( ㇐ → ー ) CJK STROKE H → KATAKANA-HIRAGANA PROLONGED SOUND MARK      # →一→
+1173 ; 30FC ;  MA      # ( ᅳ → ー ) HANGUL JUNGSEONG EU → KATAKANA-HIRAGANA PROLONGED SOUND MARK        # →ㅡ→→—→→一→
+3161 ; 30FC ;  MA      # ( ㅡ → ー ) HANGUL LETTER EU → KATAKANA-HIRAGANA PROLONGED SOUND MARK   # →—→→一→
+4E00 ; 30FC ;  MA      # ( 一 → ー ) CJK UNIFIED IDEOGRAPH-4E00 → KATAKANA-HIRAGANA PROLONGED SOUND MARK # 
+2F00 ; 30FC ;  MA      #* ( ⼀ → ー ) KANGXI RADICAL ONE → KATAKANA-HIRAGANA PROLONGED SOUND MARK        # →一→
+
+1196 ; 30FC 30FC ;     MA      # ( ᆖ → ーー ) HANGUL JUNGSEONG EU-EU → KATAKANA-HIRAGANA PROLONGED SOUND MARK, KATAKANA-HIRAGANA PROLONGED SOUND MARK  # →ᅳᅳ→
+
+1174 ; 30FC 4E28 ;     MA      # ( ᅴ → ー丨 ) HANGUL JUNGSEONG YI → KATAKANA-HIRAGANA PROLONGED SOUND MARK, CJK UNIFIED IDEOGRAPH-4E28 # →ᅳᅵ→
+3162 ; 30FC 4E28 ;     MA      # ( ㅢ → ー丨 ) HANGUL LETTER YI → KATAKANA-HIRAGANA PROLONGED SOUND MARK, CJK UNIFIED IDEOGRAPH-4E28    # →ᅴ→→ᅳᅵ→
+
+20A4 ; 00A3 ;  MA      #* ( ₤ → £ ) LIRA SIGN → POUND SIGN      # 
+
+1B5C ; 1B50 ;  MA      #* ( ᭜ → ᭐ ) BALINESE WINDU → BALINESE DIGIT ZERO       # 
+
+A9C6 ; A9D0 ;  MA      #* ( ꧆ → ꧐ ) JAVANESE PADA WINDU → JAVANESE DIGIT ZERO  # 
+
+2460 ; 2780 ;  MA      #* ( ① → ➀ ) CIRCLED DIGIT ONE → DINGBAT CIRCLED SANS-SERIF DIGIT ONE   # 
+
+06F1 ; 0661 ;  MA      # ( ۱ → ‎١‎ ) EXTENDED ARABIC-INDIC DIGIT ONE → ARABIC-INDIC DIGIT ONE        # 
+
+0CE7 ; 0C67 ;  MA      # ( ೧ → ౧ ) KANNADA DIGIT ONE → TELUGU DIGIT ONE        # 
+
+1065 ; 1041 ;  MA      # ( ၥ → ၁ ) MYANMAR LETTER WESTERN PWO KAREN THA → MYANMAR DIGIT ONE    # 
+
+2469 ; 2789 ;  MA      #* ( ⑩ → ➉ ) CIRCLED NUMBER TEN → DINGBAT CIRCLED SANS-SERIF NUMBER TEN # 
+
+1D7D0 ;        0032 ;  MA      # ( 𝟐 → 2 ) MATHEMATICAL BOLD DIGIT TWO → DIGIT TWO      # 
+1D7DA ;        0032 ;  MA      # ( 𝟚 → 2 ) MATHEMATICAL DOUBLE-STRUCK DIGIT TWO → DIGIT TWO     # 
+1D7E4 ;        0032 ;  MA      # ( 𝟤 → 2 ) MATHEMATICAL SANS-SERIF DIGIT TWO → DIGIT TWO        # 
+1D7EE ;        0032 ;  MA      # ( 𝟮 → 2 ) MATHEMATICAL SANS-SERIF BOLD DIGIT TWO → DIGIT TWO   # 
+1D7F8 ;        0032 ;  MA      # ( 𝟸 → 2 ) MATHEMATICAL MONOSPACE DIGIT TWO → DIGIT TWO # 
+A75A ; 0032 ;  MA      # ( Ꝛ → 2 ) LATIN CAPITAL LETTER R ROTUNDA → DIGIT TWO    # 
+01A7 ; 0032 ;  MA      # ( Ƨ → 2 ) LATIN CAPITAL LETTER TONE TWO → DIGIT TWO      # 
+03E8 ; 0032 ;  MA      # ( Ϩ → 2 ) COPTIC CAPITAL LETTER HORI → DIGIT TWO # →Ƨ→
+A644 ; 0032 ;  MA      # ( Ꙅ → 2 ) CYRILLIC CAPITAL LETTER REVERSED DZE → DIGIT TWO      # →Ƨ→
+14BF ; 0032 ;  MA      # ( ᒿ → 2 ) CANADIAN SYLLABICS SAYISI M → DIGIT TWO       # 
+
+2461 ; 2781 ;  MA      #* ( ② → ➁ ) CIRCLED DIGIT TWO → DINGBAT CIRCLED SANS-SERIF DIGIT TWO   # 
+
+06F2 ; 0662 ;  MA      # ( ۲ → ‎٢‎ ) EXTENDED ARABIC-INDIC DIGIT TWO → ARABIC-INDIC DIGIT TWO        # 
+
+0AE8 ; 0968 ;  MA      # ( ૨ → २ ) GUJARATI DIGIT TWO → DEVANAGARI DIGIT TWO   # 
+
+0CE8 ; 0C68 ;  MA      # ( ೨ → ౨ ) KANNADA DIGIT TWO → TELUGU DIGIT TWO        # 
+
+1F103 ;        0032 002C ;     MA      #* ( 🄃 → 2, ) DIGIT TWO COMMA → DIGIT TWO, COMMA # 
+
+2489 ; 0032 002E ;     MA      #* ( ⒉ → 2. ) DIGIT TWO FULL STOP → DIGIT TWO, FULL STOP  # 
+
+33F5 ; 0032 0032 65E5 ;        MA      #* ( ㏵ → 22日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO → DIGIT TWO, DIGIT TWO, CJK UNIFIED IDEOGRAPH-65E5       # 
+
+336E ; 0032 0032 70B9 ;        MA      #* ( ㍮ → 22点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO → DIGIT TWO, DIGIT TWO, CJK UNIFIED IDEOGRAPH-70B9      # 
+
+33F6 ; 0032 0033 65E5 ;        MA      #* ( ㏶ → 23日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE → DIGIT TWO, DIGIT THREE, CJK UNIFIED IDEOGRAPH-65E5   # 
+
+336F ; 0032 0033 70B9 ;        MA      #* ( ㍯ → 23点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE → DIGIT TWO, DIGIT THREE, CJK UNIFIED IDEOGRAPH-70B9  # 
+
+33F7 ; 0032 0034 65E5 ;        MA      #* ( ㏷ → 24日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR → DIGIT TWO, DIGIT FOUR, CJK UNIFIED IDEOGRAPH-65E5     # 
+
+3370 ; 0032 0034 70B9 ;        MA      #* ( ㍰ → 24点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR → DIGIT TWO, DIGIT FOUR, CJK UNIFIED IDEOGRAPH-70B9    # 
+
+33F8 ; 0032 0035 65E5 ;        MA      #* ( ㏸ → 25日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE → DIGIT TWO, DIGIT FIVE, CJK UNIFIED IDEOGRAPH-65E5     # 
+
+33F9 ; 0032 0036 65E5 ;        MA      #* ( ㏹ → 26日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX → DIGIT TWO, DIGIT SIX, CJK UNIFIED IDEOGRAPH-65E5       # 
+
+33FA ; 0032 0037 65E5 ;        MA      #* ( ㏺ → 27日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN → DIGIT TWO, DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-65E5   # 
+
+33FB ; 0032 0038 65E5 ;        MA      #* ( ㏻ → 28日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT → DIGIT TWO, DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-65E5   # 
+
+33FC ; 0032 0039 65E5 ;        MA      #* ( ㏼ → 29日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE → DIGIT TWO, DIGIT NINE, CJK UNIFIED IDEOGRAPH-65E5     # 
+
+33F4 ; 0032 006C 65E5 ;        MA      #* ( ㏴ → 2l日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE → DIGIT TWO, LATIN SMALL LETTER L, CJK UNIFIED IDEOGRAPH-65E5    # →21日→
+
+336D ; 0032 006C 70B9 ;        MA      #* ( ㍭ → 2l点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE → DIGIT TWO, LATIN SMALL LETTER L, CJK UNIFIED IDEOGRAPH-70B9   # →21点→
+
+249B ; 0032 004F 002E ;        MA      #* ( ⒛ → 2O. ) NUMBER TWENTY FULL STOP → DIGIT TWO, LATIN CAPITAL LETTER O, FULL STOP     # →20.→
+
+33F3 ; 0032 004F 65E5 ;        MA      #* ( ㏳ → 2O日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY → DIGIT TWO, LATIN CAPITAL LETTER O, CJK UNIFIED IDEOGRAPH-65E5      # →20日→
+
+336C ; 0032 004F 70B9 ;        MA      #* ( ㍬ → 2O点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY → DIGIT TWO, LATIN CAPITAL LETTER O, CJK UNIFIED IDEOGRAPH-70B9     # →20点→
+
+33E1 ; 0032 65E5 ;     MA      #* ( ㏡ → 2日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO → DIGIT TWO, CJK UNIFIED IDEOGRAPH-65E5  # 
+
+32C1 ; 0032 6708 ;     MA      #* ( ㋁ → 2月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY → DIGIT TWO, CJK UNIFIED IDEOGRAPH-6708 # 
+
+335A ; 0032 70B9 ;     MA      #* ( ㍚ → 2点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO → DIGIT TWO, CJK UNIFIED IDEOGRAPH-70B9 # 
+
+1D7D1 ;        0033 ;  MA      # ( 𝟑 → 3 ) MATHEMATICAL BOLD DIGIT THREE → DIGIT THREE  # 
+1D7DB ;        0033 ;  MA      # ( 𝟛 → 3 ) MATHEMATICAL DOUBLE-STRUCK DIGIT THREE → DIGIT THREE # 
+1D7E5 ;        0033 ;  MA      # ( 𝟥 → 3 ) MATHEMATICAL SANS-SERIF DIGIT THREE → DIGIT THREE    # 
+1D7EF ;        0033 ;  MA      # ( 𝟯 → 3 ) MATHEMATICAL SANS-SERIF BOLD DIGIT THREE → DIGIT THREE       # 
+1D7F9 ;        0033 ;  MA      # ( 𝟹 → 3 ) MATHEMATICAL MONOSPACE DIGIT THREE → DIGIT THREE     # 
+01B7 ; 0033 ;  MA      # ( Ʒ → 3 ) LATIN CAPITAL LETTER EZH → DIGIT THREE # 
+021C ; 0033 ;  MA      # ( Ȝ → 3 ) LATIN CAPITAL LETTER YOGH → DIGIT THREE        # →Ʒ→
+A76A ; 0033 ;  MA      # ( Ꝫ → 3 ) LATIN CAPITAL LETTER ET → DIGIT THREE # 
+2CCC ; 0033 ;  MA      # ( Ⳍ → 3 ) COPTIC CAPITAL LETTER OLD COPTIC HORI → DIGIT THREE   # →Ȝ→→Ʒ→
+0417 ; 0033 ;  MA      # ( З → 3 ) CYRILLIC CAPITAL LETTER ZE → DIGIT THREE       # 
+04E0 ; 0033 ;  MA      # ( Ӡ → 3 ) CYRILLIC CAPITAL LETTER ABKHASIAN DZE → DIGIT THREE    # →Ʒ→
+0545 ; 0033 ;  MA      # ( Յ → 3 ) ARMENIAN CAPITAL LETTER YI → DIGIT THREE       # 
+
+2462 ; 2782 ;  MA      #* ( ③ → ➂ ) CIRCLED DIGIT THREE → DINGBAT CIRCLED SANS-SERIF DIGIT THREE       # 
+
+0498 ; 0033 0326 ;     MA      # ( Ҙ → 3̦ ) CYRILLIC CAPITAL LETTER ZE WITH DESCENDER → DIGIT THREE, COMBINING COMMA BELOW       # →З̧→
+
+06F3 ; 0663 ;  MA      # ( ۳ → ‎٣‎ ) EXTENDED ARABIC-INDIC DIGIT THREE → ARABIC-INDIC DIGIT THREE    # 
+
+0AE9 ; 0969 ;  MA      # ( ૩ → ३ ) GUJARATI DIGIT THREE → DEVANAGARI DIGIT THREE       # 
+
+1F104 ;        0033 002C ;     MA      #* ( 🄄 → 3, ) DIGIT THREE COMMA → DIGIT THREE, COMMA     # 
+
+248A ; 0033 002E ;     MA      #* ( ⒊ → 3. ) DIGIT THREE FULL STOP → DIGIT THREE, FULL STOP      # 
+
+33FE ; 0033 006C 65E5 ;        MA      #* ( ㏾ → 3l日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE → DIGIT THREE, LATIN SMALL LETTER L, CJK UNIFIED IDEOGRAPH-65E5  # →31日→
+
+33FD ; 0033 004F 65E5 ;        MA      #* ( ㏽ → 3O日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY → DIGIT THREE, LATIN CAPITAL LETTER O, CJK UNIFIED IDEOGRAPH-65E5    # →30日→
+
+33E2 ; 0033 65E5 ;     MA      #* ( ㏢ → 3日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE → DIGIT THREE, CJK UNIFIED IDEOGRAPH-65E5      # 
+
+32C2 ; 0033 6708 ;     MA      #* ( ㋂ → 3月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH → DIGIT THREE, CJK UNIFIED IDEOGRAPH-6708  # 
+
+335B ; 0033 70B9 ;     MA      #* ( ㍛ → 3点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE → DIGIT THREE, CJK UNIFIED IDEOGRAPH-70B9     # 
+
+1D7D2 ;        0034 ;  MA      # ( 𝟒 → 4 ) MATHEMATICAL BOLD DIGIT FOUR → DIGIT FOUR    # 
+1D7DC ;        0034 ;  MA      # ( 𝟜 → 4 ) MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR → DIGIT FOUR   # 
+1D7E6 ;        0034 ;  MA      # ( 𝟦 → 4 ) MATHEMATICAL SANS-SERIF DIGIT FOUR → DIGIT FOUR      # 
+1D7F0 ;        0034 ;  MA      # ( 𝟰 → 4 ) MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR → DIGIT FOUR # 
+1D7FA ;        0034 ;  MA      # ( 𝟺 → 4 ) MATHEMATICAL MONOSPACE DIGIT FOUR → DIGIT FOUR       # 
+13CE ; 0034 ;  MA      # ( Ꮞ → 4 ) CHEROKEE LETTER SE → DIGIT FOUR       # 
+
+2463 ; 2783 ;  MA      #* ( ④ → ➃ ) CIRCLED DIGIT FOUR → DINGBAT CIRCLED SANS-SERIF DIGIT FOUR # 
+
+0AEA ; 096A ;  MA      # ( ૪ → ४ ) GUJARATI DIGIT FOUR → DEVANAGARI DIGIT FOUR # 
+
+1F105 ;        0034 002C ;     MA      #* ( 🄅 → 4, ) DIGIT FOUR COMMA → DIGIT FOUR, COMMA       # 
+
+248B ; 0034 002E ;     MA      #* ( ⒋ → 4. ) DIGIT FOUR FULL STOP → DIGIT FOUR, FULL STOP        # 
+
+1530 ; 0034 00B7 ;     MA      # ( ᔰ → 4· ) CANADIAN SYLLABICS WEST-CREE YWE → DIGIT FOUR, MIDDLE DOT   # →4ᐧ→
+
+33E3 ; 0034 65E5 ;     MA      #* ( ㏣ → 4日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR → DIGIT FOUR, CJK UNIFIED IDEOGRAPH-65E5        # 
+
+32C3 ; 0034 6708 ;     MA      #* ( ㋃ → 4月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL → DIGIT FOUR, CJK UNIFIED IDEOGRAPH-6708   # 
+
+335C ; 0034 70B9 ;     MA      #* ( ㍜ → 4点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR → DIGIT FOUR, CJK UNIFIED IDEOGRAPH-70B9       # 
+
+1D7D3 ;        0035 ;  MA      # ( 𝟓 → 5 ) MATHEMATICAL BOLD DIGIT FIVE → DIGIT FIVE    # 
+1D7DD ;        0035 ;  MA      # ( 𝟝 → 5 ) MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE → DIGIT FIVE   # 
+1D7E7 ;        0035 ;  MA      # ( 𝟧 → 5 ) MATHEMATICAL SANS-SERIF DIGIT FIVE → DIGIT FIVE      # 
+1D7F1 ;        0035 ;  MA      # ( 𝟱 → 5 ) MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE → DIGIT FIVE # 
+1D7FB ;        0035 ;  MA      # ( 𝟻 → 5 ) MATHEMATICAL MONOSPACE DIGIT FIVE → DIGIT FIVE       # 
+01BC ; 0035 ;  MA      # ( Ƽ → 5 ) LATIN CAPITAL LETTER TONE FIVE → DIGIT FIVE    # 
+
+2464 ; 2784 ;  MA      #* ( ⑤ → ➄ ) CIRCLED DIGIT FIVE → DINGBAT CIRCLED SANS-SERIF DIGIT FIVE # 
+
+1F106 ;        0035 002C ;     MA      #* ( 🄆 → 5, ) DIGIT FIVE COMMA → DIGIT FIVE, COMMA       # 
+
+248C ; 0035 002E ;     MA      #* ( ⒌ → 5. ) DIGIT FIVE FULL STOP → DIGIT FIVE, FULL STOP        # 
+
+33E4 ; 0035 65E5 ;     MA      #* ( ㏤ → 5日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE → DIGIT FIVE, CJK UNIFIED IDEOGRAPH-65E5        # 
+
+32C4 ; 0035 6708 ;     MA      #* ( ㋄ → 5月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY → DIGIT FIVE, CJK UNIFIED IDEOGRAPH-6708     # 
+
+335D ; 0035 70B9 ;     MA      #* ( ㍝ → 5点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE → DIGIT FIVE, CJK UNIFIED IDEOGRAPH-70B9       # 
+
+1D7D4 ;        0036 ;  MA      # ( 𝟔 → 6 ) MATHEMATICAL BOLD DIGIT SIX → DIGIT SIX      # 
+1D7DE ;        0036 ;  MA      # ( 𝟞 → 6 ) MATHEMATICAL DOUBLE-STRUCK DIGIT SIX → DIGIT SIX     # 
+1D7E8 ;        0036 ;  MA      # ( 𝟨 → 6 ) MATHEMATICAL SANS-SERIF DIGIT SIX → DIGIT SIX        # 
+1D7F2 ;        0036 ;  MA      # ( 𝟲 → 6 ) MATHEMATICAL SANS-SERIF BOLD DIGIT SIX → DIGIT SIX   # 
+1D7FC ;        0036 ;  MA      # ( 𝟼 → 6 ) MATHEMATICAL MONOSPACE DIGIT SIX → DIGIT SIX # 
+2CD2 ; 0036 ;  MA      # ( Ⳓ → 6 ) COPTIC CAPITAL LETTER OLD COPTIC HEI → DIGIT SIX      # 
+0431 ; 0036 ;  MA      # ( б → 6 ) CYRILLIC SMALL LETTER BE → DIGIT SIX   # 
+
+2465 ; 2785 ;  MA      #* ( ⑥ → ➅ ) CIRCLED DIGIT SIX → DINGBAT CIRCLED SANS-SERIF DIGIT SIX   # 
+
+1F107 ;        0036 002C ;     MA      #* ( 🄇 → 6, ) DIGIT SIX COMMA → DIGIT SIX, COMMA # 
+
+248D ; 0036 002E ;     MA      #* ( ⒍ → 6. ) DIGIT SIX FULL STOP → DIGIT SIX, FULL STOP  # 
+
+33E5 ; 0036 65E5 ;     MA      #* ( ㏥ → 6日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX → DIGIT SIX, CJK UNIFIED IDEOGRAPH-65E5  # 
+
+32C5 ; 0036 6708 ;     MA      #* ( ㋅ → 6月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE → DIGIT SIX, CJK UNIFIED IDEOGRAPH-6708     # 
+
+335E ; 0036 70B9 ;     MA      #* ( ㍞ → 6点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX → DIGIT SIX, CJK UNIFIED IDEOGRAPH-70B9 # 
+
+1D7D5 ;        0037 ;  MA      # ( 𝟕 → 7 ) MATHEMATICAL BOLD DIGIT SEVEN → DIGIT SEVEN  # 
+1D7DF ;        0037 ;  MA      # ( 𝟟 → 7 ) MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN → DIGIT SEVEN # 
+1D7E9 ;        0037 ;  MA      # ( 𝟩 → 7 ) MATHEMATICAL SANS-SERIF DIGIT SEVEN → DIGIT SEVEN    # 
+1D7F3 ;        0037 ;  MA      # ( 𝟳 → 7 ) MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN → DIGIT SEVEN       # 
+1D7FD ;        0037 ;  MA      # ( 𝟽 → 7 ) MATHEMATICAL MONOSPACE DIGIT SEVEN → DIGIT SEVEN     # 
+
+2466 ; 2786 ;  MA      #* ( ⑦ → ➆ ) CIRCLED DIGIT SEVEN → DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN       # 
+
+06F7 ; 0667 ;  MA      # ( ۷ → ‎٧‎ ) EXTENDED ARABIC-INDIC DIGIT SEVEN → ARABIC-INDIC DIGIT SEVEN    # 
+
+1F108 ;        0037 002C ;     MA      #* ( 🄈 → 7, ) DIGIT SEVEN COMMA → DIGIT SEVEN, COMMA     # 
+
+248E ; 0037 002E ;     MA      #* ( ⒎ → 7. ) DIGIT SEVEN FULL STOP → DIGIT SEVEN, FULL STOP      # 
+
+33E6 ; 0037 65E5 ;     MA      #* ( ㏦ → 7日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN → DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-65E5      # 
+
+32C6 ; 0037 6708 ;     MA      #* ( ㋆ → 7月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY → DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-6708   # 
+
+335F ; 0037 70B9 ;     MA      #* ( ㍟ → 7点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN → DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-70B9     # 
+
+0B03 ; 0038 ;  MA      # ( ଃ → 8 ) ORIYA SIGN VISARGA → DIGIT EIGHT      # 
+09EA ; 0038 ;  MA      # ( ৪ → 8 ) BENGALI DIGIT FOUR → DIGIT EIGHT      # 
+0A6A ; 0038 ;  MA      # ( ੪ → 8 ) GURMUKHI DIGIT FOUR → DIGIT EIGHT     # 
+1D7D6 ;        0038 ;  MA      # ( 𝟖 → 8 ) MATHEMATICAL BOLD DIGIT EIGHT → DIGIT EIGHT  # 
+1D7E0 ;        0038 ;  MA      # ( 𝟠 → 8 ) MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT → DIGIT EIGHT # 
+1D7EA ;        0038 ;  MA      # ( 𝟪 → 8 ) MATHEMATICAL SANS-SERIF DIGIT EIGHT → DIGIT EIGHT    # 
+1D7F4 ;        0038 ;  MA      # ( 𝟴 → 8 ) MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT → DIGIT EIGHT       # 
+1D7FE ;        0038 ;  MA      # ( 𝟾 → 8 ) MATHEMATICAL MONOSPACE DIGIT EIGHT → DIGIT EIGHT     # 
+0223 ; 0038 ;  MA      # ( ȣ → 8 ) LATIN SMALL LETTER OU → DIGIT EIGHT    # 
+0222 ; 0038 ;  MA      # ( Ȣ → 8 ) LATIN CAPITAL LETTER OU → DIGIT EIGHT  # 
+
+2467 ; 2787 ;  MA      #* ( ⑧ → ➇ ) CIRCLED DIGIT EIGHT → DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT       # 
+
+06F8 ; 0668 ;  MA      # ( ۸ → ‎٨‎ ) EXTENDED ARABIC-INDIC DIGIT EIGHT → ARABIC-INDIC DIGIT EIGHT    # 
+
+0AEE ; 096E ;  MA      # ( ૮ → ८ ) GUJARATI DIGIT EIGHT → DEVANAGARI DIGIT EIGHT       # 
+
+1F109 ;        0038 002C ;     MA      #* ( 🄉 → 8, ) DIGIT EIGHT COMMA → DIGIT EIGHT, COMMA     # 
+
+248F ; 0038 002E ;     MA      #* ( ⒏ → 8. ) DIGIT EIGHT FULL STOP → DIGIT EIGHT, FULL STOP      # 
+
+33E7 ; 0038 65E5 ;     MA      #* ( ㏧ → 8日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT → DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-65E5      # 
+
+32C7 ; 0038 6708 ;     MA      #* ( ㋇ → 8月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST → DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-6708 # 
+
+3360 ; 0038 70B9 ;     MA      #* ( ㍠ → 8点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT → DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-70B9     # 
+
+0A67 ; 0039 ;  MA      # ( ੧ → 9 ) GURMUKHI DIGIT ONE → DIGIT NINE       # 
+0B68 ; 0039 ;  MA      # ( ୨ → 9 ) ORIYA DIGIT TWO → DIGIT NINE  # 
+09ED ; 0039 ;  MA      # ( ৭ → 9 ) BENGALI DIGIT SEVEN → DIGIT NINE      # 
+1D7D7 ;        0039 ;  MA      # ( 𝟗 → 9 ) MATHEMATICAL BOLD DIGIT NINE → DIGIT NINE    # 
+1D7E1 ;        0039 ;  MA      # ( 𝟡 → 9 ) MATHEMATICAL DOUBLE-STRUCK DIGIT NINE → DIGIT NINE   # 
+1D7EB ;        0039 ;  MA      # ( 𝟫 → 9 ) MATHEMATICAL SANS-SERIF DIGIT NINE → DIGIT NINE      # 
+1D7F5 ;        0039 ;  MA      # ( 𝟵 → 9 ) MATHEMATICAL SANS-SERIF BOLD DIGIT NINE → DIGIT NINE # 
+1D7FF ;        0039 ;  MA      # ( 𝟿 → 9 ) MATHEMATICAL MONOSPACE DIGIT NINE → DIGIT NINE       # 
+A76E ; 0039 ;  MA      # ( Ꝯ → 9 ) LATIN CAPITAL LETTER CON → DIGIT NINE # 
+2CCA ; 0039 ;  MA      # ( Ⳋ → 9 ) COPTIC CAPITAL LETTER DIALECT-P HORI → DIGIT NINE     # 
+
+2468 ; 2788 ;  MA      #* ( ⑨ → ➈ ) CIRCLED DIGIT NINE → DINGBAT CIRCLED SANS-SERIF DIGIT NINE # 
+
+06F9 ; 0669 ;  MA      # ( ۹ → ‎٩‎ ) EXTENDED ARABIC-INDIC DIGIT NINE → ARABIC-INDIC DIGIT NINE      # 
+
+0CEF ; 0C6F ;  MA      # ( ೯ → ౯ ) KANNADA DIGIT NINE → TELUGU DIGIT NINE      # 
+
+1F10A ;        0039 002C ;     MA      #* ( 🄊 → 9, ) DIGIT NINE COMMA → DIGIT NINE, COMMA       # 
+
+2490 ; 0039 002E ;     MA      #* ( ⒐ → 9. ) DIGIT NINE FULL STOP → DIGIT NINE, FULL STOP        # 
+
+33E8 ; 0039 65E5 ;     MA      #* ( ㏨ → 9日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE → DIGIT NINE, CJK UNIFIED IDEOGRAPH-65E5        # 
+
+32C8 ; 0039 6708 ;     MA      #* ( ㋈ → 9月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER → DIGIT NINE, CJK UNIFIED IDEOGRAPH-6708       # 
+
+3361 ; 0039 70B9 ;     MA      #* ( ㍡ → 9点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE → DIGIT NINE, CJK UNIFIED IDEOGRAPH-70B9       # 
+
+237A ; 0061 ;  MA      #* ( ⍺ → a ) APL FUNCTIONAL SYMBOL ALPHA → LATIN SMALL LETTER A   # →α→
+FF41 ; 0061 ;  MA      # ( a → a ) FULLWIDTH LATIN SMALL LETTER A → LATIN SMALL LETTER A # →а→
+1D41A ;        0061 ;  MA      # ( 𝐚 → a ) MATHEMATICAL BOLD SMALL A → LATIN SMALL LETTER A     # 
+1D44E ;        0061 ;  MA      # ( 𝑎 → a ) MATHEMATICAL ITALIC SMALL A → LATIN SMALL LETTER A   # 
+1D482 ;        0061 ;  MA      # ( 𝒂 → a ) MATHEMATICAL BOLD ITALIC SMALL A → LATIN SMALL LETTER A      # 
+1D4B6 ;        0061 ;  MA      # ( 𝒶 → a ) MATHEMATICAL SCRIPT SMALL A → LATIN SMALL LETTER A   # 
+1D4EA ;        0061 ;  MA      # ( 𝓪 → a ) MATHEMATICAL BOLD SCRIPT SMALL A → LATIN SMALL LETTER A      # 
+1D51E ;        0061 ;  MA      # ( 𝔞 → a ) MATHEMATICAL FRAKTUR SMALL A → LATIN SMALL LETTER A  # 
+1D552 ;        0061 ;  MA      # ( 𝕒 → a ) MATHEMATICAL DOUBLE-STRUCK SMALL A → LATIN SMALL LETTER A    # 
+1D586 ;        0061 ;  MA      # ( 𝖆 → a ) MATHEMATICAL BOLD FRAKTUR SMALL A → LATIN SMALL LETTER A     # 
+1D5BA ;        0061 ;  MA      # ( 𝖺 → a ) MATHEMATICAL SANS-SERIF SMALL A → LATIN SMALL LETTER A       # 
+1D5EE ;        0061 ;  MA      # ( 𝗮 → a ) MATHEMATICAL SANS-SERIF BOLD SMALL A → LATIN SMALL LETTER A  # 
+1D622 ;        0061 ;  MA      # ( 𝘢 → a ) MATHEMATICAL SANS-SERIF ITALIC SMALL A → LATIN SMALL LETTER A        # 
+1D656 ;        0061 ;  MA      # ( 𝙖 → a ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A → LATIN SMALL LETTER A   # 
+1D68A ;        0061 ;  MA      # ( 𝚊 → a ) MATHEMATICAL MONOSPACE SMALL A → LATIN SMALL LETTER A        # 
+0251 ; 0061 ;  MA      # ( ɑ → a ) LATIN SMALL LETTER ALPHA → LATIN SMALL LETTER A        # 
+03B1 ; 0061 ;  MA      # ( α → a ) GREEK SMALL LETTER ALPHA → LATIN SMALL LETTER A        # 
+1D6C2 ;        0061 ;  MA      # ( 𝛂 → a ) MATHEMATICAL BOLD SMALL ALPHA → LATIN SMALL LETTER A # →α→
+1D6FC ;        0061 ;  MA      # ( 𝛼 → a ) MATHEMATICAL ITALIC SMALL ALPHA → LATIN SMALL LETTER A       # →α→
+1D736 ;        0061 ;  MA      # ( 𝜶 → a ) MATHEMATICAL BOLD ITALIC SMALL ALPHA → LATIN SMALL LETTER A  # →α→
+1D770 ;        0061 ;  MA      # ( 𝝰 → a ) MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA → LATIN SMALL LETTER A      # →α→
+1D7AA ;        0061 ;  MA      # ( 𝞪 → a ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA → LATIN SMALL LETTER A       # →α→
+0430 ; 0061 ;  MA      # ( а → a ) CYRILLIC SMALL LETTER A → LATIN SMALL LETTER A # 
+
+FF21 ; 0041 ;  MA      # ( A → A ) FULLWIDTH LATIN CAPITAL LETTER A → LATIN CAPITAL LETTER A     # →А→
+1D400 ;        0041 ;  MA      # ( 𝐀 → A ) MATHEMATICAL BOLD CAPITAL A → LATIN CAPITAL LETTER A # 
+1D434 ;        0041 ;  MA      # ( 𝐴 → A ) MATHEMATICAL ITALIC CAPITAL A → LATIN CAPITAL LETTER A       # 
+1D468 ;        0041 ;  MA      # ( 𝑨 → A ) MATHEMATICAL BOLD ITALIC CAPITAL A → LATIN CAPITAL LETTER A  # 
+1D49C ;        0041 ;  MA      # ( 𝒜 → A ) MATHEMATICAL SCRIPT CAPITAL A → LATIN CAPITAL LETTER A       # 
+1D4D0 ;        0041 ;  MA      # ( 𝓐 → A ) MATHEMATICAL BOLD SCRIPT CAPITAL A → LATIN CAPITAL LETTER A  # 
+1D504 ;        0041 ;  MA      # ( 𝔄 → A ) MATHEMATICAL FRAKTUR CAPITAL A → LATIN CAPITAL LETTER A      # 
+1D538 ;        0041 ;  MA      # ( 𝔸 → A ) MATHEMATICAL DOUBLE-STRUCK CAPITAL A → LATIN CAPITAL LETTER A        # 
+1D56C ;        0041 ;  MA      # ( 𝕬 → A ) MATHEMATICAL BOLD FRAKTUR CAPITAL A → LATIN CAPITAL LETTER A # 
+1D5A0 ;        0041 ;  MA      # ( 𝖠 → A ) MATHEMATICAL SANS-SERIF CAPITAL A → LATIN CAPITAL LETTER A   # 
+1D5D4 ;        0041 ;  MA      # ( 𝗔 → A ) MATHEMATICAL SANS-SERIF BOLD CAPITAL A → LATIN CAPITAL LETTER A      # 
+1D608 ;        0041 ;  MA      # ( 𝘈 → A ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL A → LATIN CAPITAL LETTER A    # 
+1D63C ;        0041 ;  MA      # ( 𝘼 → A ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A → LATIN CAPITAL LETTER A       # 
+1D670 ;        0041 ;  MA      # ( 𝙰 → A ) MATHEMATICAL MONOSPACE CAPITAL A → LATIN CAPITAL LETTER A    # 
+0391 ; 0041 ;  MA      # ( Α → A ) GREEK CAPITAL LETTER ALPHA → LATIN CAPITAL LETTER A    # 
+1D6A8 ;        0041 ;  MA      # ( 𝚨 → A ) MATHEMATICAL BOLD CAPITAL ALPHA → LATIN CAPITAL LETTER A     # →𝐀→
+1D6E2 ;        0041 ;  MA      # ( 𝛢 → A ) MATHEMATICAL ITALIC CAPITAL ALPHA → LATIN CAPITAL LETTER A   # →𝐴→
+1D71C ;        0041 ;  MA      # ( 𝜜 → A ) MATHEMATICAL BOLD ITALIC CAPITAL ALPHA → LATIN CAPITAL LETTER A      # →𝑨→
+1D756 ;        0041 ;  MA      # ( 𝝖 → A ) MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA → LATIN CAPITAL LETTER A  # →Α→
+1D790 ;        0041 ;  MA      # ( 𝞐 → A ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA → LATIN CAPITAL LETTER A   # →Α→
+0410 ; 0041 ;  MA      # ( А → A ) CYRILLIC CAPITAL LETTER A → LATIN CAPITAL LETTER A     # 
+13AA ; 0041 ;  MA      # ( Ꭺ → A ) CHEROKEE LETTER GO → LATIN CAPITAL LETTER A   # 
+15C5 ; 0041 ;  MA      # ( ᗅ → A ) CANADIAN SYLLABICS CARRIER GHO → LATIN CAPITAL LETTER A       # 
+A4EE ; 0041 ;  MA      # ( ꓮ → A ) LISU LETTER A → LATIN CAPITAL LETTER A        # 
+
+01CE ; 0103 ;  MA      # ( ǎ → ă ) LATIN SMALL LETTER A WITH CARON → LATIN SMALL LETTER A WITH BREVE     # 
+
+01CD ; 0102 ;  MA      # ( Ǎ → Ă ) LATIN CAPITAL LETTER A WITH CARON → LATIN CAPITAL LETTER A WITH BREVE # 
+
+0227 ; 00E5 ;  MA      # ( ȧ → å ) LATIN SMALL LETTER A WITH DOT ABOVE → LATIN SMALL LETTER A WITH RING ABOVE    # 
+
+0226 ; 00C5 ;  MA      # ( Ȧ → Å ) LATIN CAPITAL LETTER A WITH DOT ABOVE → LATIN CAPITAL LETTER A WITH RING ABOVE        # 
+
+1E9A ; 1EA3 ;  MA      # ( ẚ → ả ) LATIN SMALL LETTER A WITH RIGHT HALF RING → LATIN SMALL LETTER A WITH HOOK ABOVE    # 
+
+A733 ; 0061 0061 ;     MA      # ( ꜳ → aa ) LATIN SMALL LETTER AA → LATIN SMALL LETTER A, LATIN SMALL LETTER A   # 
+
+A732 ; 0041 0041 ;     MA      # ( Ꜳ → AA ) LATIN CAPITAL LETTER AA → LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER A     # 
+
+00E6 ; 0061 0065 ;     MA      # ( æ → ae ) LATIN SMALL LETTER AE → LATIN SMALL LETTER A, LATIN SMALL LETTER E    # 
+04D5 ; 0061 0065 ;     MA      # ( ӕ → ae ) CYRILLIC SMALL LIGATURE A IE → LATIN SMALL LETTER A, LATIN SMALL LETTER E     # →ае→
+
+00C6 ; 0041 0045 ;     MA      # ( Æ → AE ) LATIN CAPITAL LETTER AE → LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER E      # 
+04D4 ; 0041 0045 ;     MA      # ( Ӕ → AE ) CYRILLIC CAPITAL LIGATURE A IE → LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER E       # →Æ→
+
+A735 ; 0061 006F ;     MA      # ( ꜵ → ao ) LATIN SMALL LETTER AO → LATIN SMALL LETTER A, LATIN SMALL LETTER O   # 
+
+A734 ; 0041 004F ;     MA      # ( Ꜵ → AO ) LATIN CAPITAL LETTER AO → LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER O     # 
+
+A737 ; 0061 0075 ;     MA      # ( ꜷ → au ) LATIN SMALL LETTER AU → LATIN SMALL LETTER A, LATIN SMALL LETTER U   # 
+
+A736 ; 0041 0055 ;     MA      # ( Ꜷ → AU ) LATIN CAPITAL LETTER AU → LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER U     # 
+
+A739 ; 0061 0076 ;     MA      # ( ꜹ → av ) LATIN SMALL LETTER AV → LATIN SMALL LETTER A, LATIN SMALL LETTER V   # 
+A73B ; 0061 0076 ;     MA      # ( ꜻ → av ) LATIN SMALL LETTER AV WITH HORIZONTAL BAR → LATIN SMALL LETTER A, LATIN SMALL LETTER V       # 
+
+A738 ; 0041 0056 ;     MA      # ( Ꜹ → AV ) LATIN CAPITAL LETTER AV → LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER V     # 
+A73A ; 0041 0056 ;     MA      # ( Ꜻ → AV ) LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR → LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER V # 
+
+A73D ; 0061 0079 ;     MA      # ( ꜽ → ay ) LATIN SMALL LETTER AY → LATIN SMALL LETTER A, LATIN SMALL LETTER Y   # 
+
+A73C ; 0041 0059 ;     MA      # ( Ꜽ → AY ) LATIN CAPITAL LETTER AY → LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER Y     # 
+
+1D41B ;        0062 ;  MA      # ( 𝐛 → b ) MATHEMATICAL BOLD SMALL B → LATIN SMALL LETTER B     # 
+1D44F ;        0062 ;  MA      # ( 𝑏 → b ) MATHEMATICAL ITALIC SMALL B → LATIN SMALL LETTER B   # 
+1D483 ;        0062 ;  MA      # ( 𝒃 → b ) MATHEMATICAL BOLD ITALIC SMALL B → LATIN SMALL LETTER B      # 
+1D4B7 ;        0062 ;  MA      # ( 𝒷 → b ) MATHEMATICAL SCRIPT SMALL B → LATIN SMALL LETTER B   # 
+1D4EB ;        0062 ;  MA      # ( 𝓫 → b ) MATHEMATICAL BOLD SCRIPT SMALL B → LATIN SMALL LETTER B      # 
+1D51F ;        0062 ;  MA      # ( 𝔟 → b ) MATHEMATICAL FRAKTUR SMALL B → LATIN SMALL LETTER B  # 
+1D553 ;        0062 ;  MA      # ( 𝕓 → b ) MATHEMATICAL DOUBLE-STRUCK SMALL B → LATIN SMALL LETTER B    # 
+1D587 ;        0062 ;  MA      # ( 𝖇 → b ) MATHEMATICAL BOLD FRAKTUR SMALL B → LATIN SMALL LETTER B     # 
+1D5BB ;        0062 ;  MA      # ( 𝖻 → b ) MATHEMATICAL SANS-SERIF SMALL B → LATIN SMALL LETTER B       # 
+1D5EF ;        0062 ;  MA      # ( 𝗯 → b ) MATHEMATICAL SANS-SERIF BOLD SMALL B → LATIN SMALL LETTER B  # 
+1D623 ;        0062 ;  MA      # ( 𝘣 → b ) MATHEMATICAL SANS-SERIF ITALIC SMALL B → LATIN SMALL LETTER B        # 
+1D657 ;        0062 ;  MA      # ( 𝙗 → b ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B → LATIN SMALL LETTER B   # 
+1D68B ;        0062 ;  MA      # ( 𝚋 → b ) MATHEMATICAL MONOSPACE SMALL B → LATIN SMALL LETTER B        # 
+0184 ; 0062 ;  MA      # ( Ƅ → b ) LATIN CAPITAL LETTER TONE SIX → LATIN SMALL LETTER B   # 
+042C ; 0062 ;  MA      # ( Ь → b ) CYRILLIC CAPITAL LETTER SOFT SIGN → LATIN SMALL LETTER B       # →Ƅ→
+13CF ; 0062 ;  MA      # ( Ꮟ → b ) CHEROKEE LETTER SI → LATIN SMALL LETTER B     # 
+15AF ; 0062 ;  MA      # ( ᖯ → b ) CANADIAN SYLLABICS AIVILIK B → LATIN SMALL LETTER B   # 
+
+FF22 ; 0042 ;  MA      # ( B → B ) FULLWIDTH LATIN CAPITAL LETTER B → LATIN CAPITAL LETTER B     # →В→
+212C ; 0042 ;  MA      # ( ℬ → B ) SCRIPT CAPITAL B → LATIN CAPITAL LETTER B     # 
+1D401 ;        0042 ;  MA      # ( 𝐁 → B ) MATHEMATICAL BOLD CAPITAL B → LATIN CAPITAL LETTER B # 
+1D435 ;        0042 ;  MA      # ( 𝐵 → B ) MATHEMATICAL ITALIC CAPITAL B → LATIN CAPITAL LETTER B       # 
+1D469 ;        0042 ;  MA      # ( 𝑩 → B ) MATHEMATICAL BOLD ITALIC CAPITAL B → LATIN CAPITAL LETTER B  # 
+1D4D1 ;        0042 ;  MA      # ( 𝓑 → B ) MATHEMATICAL BOLD SCRIPT CAPITAL B → LATIN CAPITAL LETTER B  # 
+1D505 ;        0042 ;  MA      # ( 𝔅 → B ) MATHEMATICAL FRAKTUR CAPITAL B → LATIN CAPITAL LETTER B      # 
+1D539 ;        0042 ;  MA      # ( 𝔹 → B ) MATHEMATICAL DOUBLE-STRUCK CAPITAL B → LATIN CAPITAL LETTER B        # 
+1D56D ;        0042 ;  MA      # ( 𝕭 → B ) MATHEMATICAL BOLD FRAKTUR CAPITAL B → LATIN CAPITAL LETTER B # 
+1D5A1 ;        0042 ;  MA      # ( 𝖡 → B ) MATHEMATICAL SANS-SERIF CAPITAL B → LATIN CAPITAL LETTER B   # 
+1D5D5 ;        0042 ;  MA      # ( 𝗕 → B ) MATHEMATICAL SANS-SERIF BOLD CAPITAL B → LATIN CAPITAL LETTER B      # 
+1D609 ;        0042 ;  MA      # ( 𝘉 → B ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL B → LATIN CAPITAL LETTER B    # 
+1D63D ;        0042 ;  MA      # ( 𝘽 → B ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B → LATIN CAPITAL LETTER B       # 
+1D671 ;        0042 ;  MA      # ( 𝙱 → B ) MATHEMATICAL MONOSPACE CAPITAL B → LATIN CAPITAL LETTER B    # 
+0392 ; 0042 ;  MA      # ( Β → B ) GREEK CAPITAL LETTER BETA → LATIN CAPITAL LETTER B     # 
+1D6A9 ;        0042 ;  MA      # ( 𝚩 → B ) MATHEMATICAL BOLD CAPITAL BETA → LATIN CAPITAL LETTER B      # →𝐁→
+1D6E3 ;        0042 ;  MA      # ( 𝛣 → B ) MATHEMATICAL ITALIC CAPITAL BETA → LATIN CAPITAL LETTER B    # →𝐵→
+1D71D ;        0042 ;  MA      # ( 𝜝 → B ) MATHEMATICAL BOLD ITALIC CAPITAL BETA → LATIN CAPITAL LETTER B       # →𝑩→
+1D757 ;        0042 ;  MA      # ( 𝝗 → B ) MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA → LATIN CAPITAL LETTER B   # →Β→
+1D791 ;        0042 ;  MA      # ( 𝞑 → B ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA → LATIN CAPITAL LETTER B    # →Β→
+0412 ; 0042 ;  MA      # ( В → B ) CYRILLIC CAPITAL LETTER VE → LATIN CAPITAL LETTER B    # 
+13F4 ; 0042 ;  MA      # ( Ᏼ → B ) CHEROKEE LETTER YV → LATIN CAPITAL LETTER B   # 
+15F7 ; 0042 ;  MA      # ( ᗷ → B ) CANADIAN SYLLABICS CARRIER KHE → LATIN CAPITAL LETTER B       # 
+A4D0 ; 0042 ;  MA      # ( ꓐ → B ) LISU LETTER BA → LATIN CAPITAL LETTER B       # 
+
+0253 ; 0062 0314 ;     MA      # ( ɓ → b̔ ) LATIN SMALL LETTER B WITH HOOK → LATIN SMALL LETTER B, COMBINING REVERSED COMMA ABOVE        # 
+
+0183 ; 0062 0304 ;     MA      # ( ƃ → b̄ ) LATIN SMALL LETTER B WITH TOPBAR → LATIN SMALL LETTER B, COMBINING MACRON    # 
+0182 ; 0062 0304 ;     MA      # ( Ƃ → b̄ ) LATIN CAPITAL LETTER B WITH TOPBAR → LATIN SMALL LETTER B, COMBINING MACRON  # 
+0411 ; 0062 0304 ;     MA      # ( Б → b̄ ) CYRILLIC CAPITAL LETTER BE → LATIN SMALL LETTER B, COMBINING MACRON  # →Ƃ→
+
+0180 ; 0062 0335 ;     MA      # ( ƀ → b̵ ) LATIN SMALL LETTER B WITH STROKE → LATIN SMALL LETTER B, COMBINING SHORT STROKE OVERLAY      # 
+048D ; 0062 0335 ;     MA      # ( ҍ → b̵ ) CYRILLIC SMALL LETTER SEMISOFT SIGN → LATIN SMALL LETTER B, COMBINING SHORT STROKE OVERLAY   # →ѣ→→Ь̵→
+048C ; 0062 0335 ;     MA      # ( Ҍ → b̵ ) CYRILLIC CAPITAL LETTER SEMISOFT SIGN → LATIN SMALL LETTER B, COMBINING SHORT STROKE OVERLAY # →Ѣ→→Ь̵→
+0463 ; 0062 0335 ;     MA      # ( ѣ → b̵ ) CYRILLIC SMALL LETTER YAT → LATIN SMALL LETTER B, COMBINING SHORT STROKE OVERLAY     # →Ь̵→
+0462 ; 0062 0335 ;     MA      # ( Ѣ → b̵ ) CYRILLIC CAPITAL LETTER YAT → LATIN SMALL LETTER B, COMBINING SHORT STROKE OVERLAY   # →Ь̵→
+
+042B ; 0062 006C ;     MA      # ( Ы → bl ) CYRILLIC CAPITAL LETTER YERU → LATIN SMALL LETTER B, LATIN SMALL LETTER L     # →ЬІ→→Ьl→
+
+0432 ; 0299 ;  MA      # ( в → ʙ ) CYRILLIC SMALL LETTER VE → LATIN LETTER SMALL CAPITAL B       # 
+
+FF43 ; 0063 ;  MA      # ( c → c ) FULLWIDTH LATIN SMALL LETTER C → LATIN SMALL LETTER C # →ϲ→
+217D ; 0063 ;  MA      # ( ⅽ → c ) SMALL ROMAN NUMERAL ONE HUNDRED → LATIN SMALL LETTER C        # 
+1D41C ;        0063 ;  MA      # ( 𝐜 → c ) MATHEMATICAL BOLD SMALL C → LATIN SMALL LETTER C     # 
+1D450 ;        0063 ;  MA      # ( 𝑐 → c ) MATHEMATICAL ITALIC SMALL C → LATIN SMALL LETTER C   # 
+1D484 ;        0063 ;  MA      # ( 𝒄 → c ) MATHEMATICAL BOLD ITALIC SMALL C → LATIN SMALL LETTER C      # 
+1D4B8 ;        0063 ;  MA      # ( 𝒸 → c ) MATHEMATICAL SCRIPT SMALL C → LATIN SMALL LETTER C   # 
+1D4EC ;        0063 ;  MA      # ( 𝓬 → c ) MATHEMATICAL BOLD SCRIPT SMALL C → LATIN SMALL LETTER C      # 
+1D520 ;        0063 ;  MA      # ( 𝔠 → c ) MATHEMATICAL FRAKTUR SMALL C → LATIN SMALL LETTER C  # 
+1D554 ;        0063 ;  MA      # ( 𝕔 → c ) MATHEMATICAL DOUBLE-STRUCK SMALL C → LATIN SMALL LETTER C    # 
+1D588 ;        0063 ;  MA      # ( 𝖈 → c ) MATHEMATICAL BOLD FRAKTUR SMALL C → LATIN SMALL LETTER C     # 
+1D5BC ;        0063 ;  MA      # ( 𝖼 → c ) MATHEMATICAL SANS-SERIF SMALL C → LATIN SMALL LETTER C       # 
+1D5F0 ;        0063 ;  MA      # ( 𝗰 → c ) MATHEMATICAL SANS-SERIF BOLD SMALL C → LATIN SMALL LETTER C  # 
+1D624 ;        0063 ;  MA      # ( 𝘤 → c ) MATHEMATICAL SANS-SERIF ITALIC SMALL C → LATIN SMALL LETTER C        # 
+1D658 ;        0063 ;  MA      # ( 𝙘 → c ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C → LATIN SMALL LETTER C   # 
+1D68C ;        0063 ;  MA      # ( 𝚌 → c ) MATHEMATICAL MONOSPACE SMALL C → LATIN SMALL LETTER C        # 
+1D04 ; 0063 ;  MA      # ( ᴄ → c ) LATIN LETTER SMALL CAPITAL C → LATIN SMALL LETTER C   # 
+03F2 ; 0063 ;  MA      # ( ϲ → c ) GREEK LUNATE SIGMA SYMBOL → LATIN SMALL LETTER C       # 
+2CA5 ; 0063 ;  MA      # ( ⲥ → c ) COPTIC SMALL LETTER SIMA → LATIN SMALL LETTER C       # →ϲ→
+0441 ; 0063 ;  MA      # ( с → c ) CYRILLIC SMALL LETTER ES → LATIN SMALL LETTER C        # 
+
+FF23 ; 0043 ;  MA      # ( C → C ) FULLWIDTH LATIN CAPITAL LETTER C → LATIN CAPITAL LETTER C     # →С→
+216D ; 0043 ;  MA      # ( Ⅽ → C ) ROMAN NUMERAL ONE HUNDRED → LATIN CAPITAL LETTER C    # 
+2102 ; 0043 ;  MA      # ( ℂ → C ) DOUBLE-STRUCK CAPITAL C → LATIN CAPITAL LETTER C      # 
+212D ; 0043 ;  MA      # ( ℭ → C ) BLACK-LETTER CAPITAL C → LATIN CAPITAL LETTER C       # 
+1D402 ;        0043 ;  MA      # ( 𝐂 → C ) MATHEMATICAL BOLD CAPITAL C → LATIN CAPITAL LETTER C # 
+1D436 ;        0043 ;  MA      # ( 𝐶 → C ) MATHEMATICAL ITALIC CAPITAL C → LATIN CAPITAL LETTER C       # 
+1D46A ;        0043 ;  MA      # ( 𝑪 → C ) MATHEMATICAL BOLD ITALIC CAPITAL C → LATIN CAPITAL LETTER C  # 
+1D49E ;        0043 ;  MA      # ( 𝒞 → C ) MATHEMATICAL SCRIPT CAPITAL C → LATIN CAPITAL LETTER C       # 
+1D4D2 ;        0043 ;  MA      # ( 𝓒 → C ) MATHEMATICAL BOLD SCRIPT CAPITAL C → LATIN CAPITAL LETTER C  # 
+1D56E ;        0043 ;  MA      # ( 𝕮 → C ) MATHEMATICAL BOLD FRAKTUR CAPITAL C → LATIN CAPITAL LETTER C # 
+1D5A2 ;        0043 ;  MA      # ( 𝖢 → C ) MATHEMATICAL SANS-SERIF CAPITAL C → LATIN CAPITAL LETTER C   # 
+1D5D6 ;        0043 ;  MA      # ( 𝗖 → C ) MATHEMATICAL SANS-SERIF BOLD CAPITAL C → LATIN CAPITAL LETTER C      # 
+1D60A ;        0043 ;  MA      # ( 𝘊 → C ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL C → LATIN CAPITAL LETTER C    # 
+1D63E ;        0043 ;  MA      # ( 𝘾 → C ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C → LATIN CAPITAL LETTER C       # 
+1D672 ;        0043 ;  MA      # ( 𝙲 → C ) MATHEMATICAL MONOSPACE CAPITAL C → LATIN CAPITAL LETTER C    # 
+03F9 ; 0043 ;  MA      # ( Ϲ → C ) GREEK CAPITAL LUNATE SIGMA SYMBOL → LATIN CAPITAL LETTER C     # 
+2CA4 ; 0043 ;  MA      # ( Ⲥ → C ) COPTIC CAPITAL LETTER SIMA → LATIN CAPITAL LETTER C   # →Ϲ→
+0421 ; 0043 ;  MA      # ( С → C ) CYRILLIC CAPITAL LETTER ES → LATIN CAPITAL LETTER C    # 
+0BD0 ; 0043 ;  MA      # ( ௐ → C ) TAMIL OM → LATIN CAPITAL LETTER C     # →С→
+13DF ; 0043 ;  MA      # ( Ꮯ → C ) CHEROKEE LETTER TLI → LATIN CAPITAL LETTER C  # 
+A4DA ; 0043 ;  MA      # ( ꓚ → C ) LISU LETTER CA → LATIN CAPITAL LETTER C       # 
+
+00A2 ; 0063 0338 ;     MA      #* ( ¢ → c̸ ) CENT SIGN → LATIN SMALL LETTER C, COMBINING LONG SOLIDUS OVERLAY    # 
+
+00E7 ; 0063 0326 ;     MA      # ( ç → c̦ ) LATIN SMALL LETTER C WITH CEDILLA → LATIN SMALL LETTER C, COMBINING COMMA BELOW      # →ҫ→→с̡→
+04AB ; 0063 0326 ;     MA      # ( ҫ → c̦ ) CYRILLIC SMALL LETTER ES WITH DESCENDER → LATIN SMALL LETTER C, COMBINING COMMA BELOW        # →с̡→
+
+00C7 ; 0043 0326 ;     MA      # ( Ç → C̦ ) LATIN CAPITAL LETTER C WITH CEDILLA → LATIN CAPITAL LETTER C, COMBINING COMMA BELOW  # →Ҫ→→С̡→
+04AA ; 0043 0326 ;     MA      # ( Ҫ → C̦ ) CYRILLIC CAPITAL LETTER ES WITH DESCENDER → LATIN CAPITAL LETTER C, COMBINING COMMA BELOW    # →С̡→
+
+0187 ; 0043 0027 ;     MA      # ( Ƈ → C' ) LATIN CAPITAL LETTER C WITH HOOK → LATIN CAPITAL LETTER C, APOSTROPHE # →Cʽ→
+
+217E ; 0064 ;  MA      # ( ⅾ → d ) SMALL ROMAN NUMERAL FIVE HUNDRED → LATIN SMALL LETTER D       # 
+2146 ; 0064 ;  MA      # ( ⅆ → d ) DOUBLE-STRUCK ITALIC SMALL D → LATIN SMALL LETTER D   # 
+1D41D ;        0064 ;  MA      # ( 𝐝 → d ) MATHEMATICAL BOLD SMALL D → LATIN SMALL LETTER D     # 
+1D451 ;        0064 ;  MA      # ( 𝑑 → d ) MATHEMATICAL ITALIC SMALL D → LATIN SMALL LETTER D   # 
+1D485 ;        0064 ;  MA      # ( 𝒅 → d ) MATHEMATICAL BOLD ITALIC SMALL D → LATIN SMALL LETTER D      # 
+1D4B9 ;        0064 ;  MA      # ( 𝒹 → d ) MATHEMATICAL SCRIPT SMALL D → LATIN SMALL LETTER D   # 
+1D4ED ;        0064 ;  MA      # ( 𝓭 → d ) MATHEMATICAL BOLD SCRIPT SMALL D → LATIN SMALL LETTER D      # 
+1D521 ;        0064 ;  MA      # ( 𝔡 → d ) MATHEMATICAL FRAKTUR SMALL D → LATIN SMALL LETTER D  # 
+1D555 ;        0064 ;  MA      # ( 𝕕 → d ) MATHEMATICAL DOUBLE-STRUCK SMALL D → LATIN SMALL LETTER D    # 
+1D589 ;        0064 ;  MA      # ( 𝖉 → d ) MATHEMATICAL BOLD FRAKTUR SMALL D → LATIN SMALL LETTER D     # 
+1D5BD ;        0064 ;  MA      # ( 𝖽 → d ) MATHEMATICAL SANS-SERIF SMALL D → LATIN SMALL LETTER D       # 
+1D5F1 ;        0064 ;  MA      # ( 𝗱 → d ) MATHEMATICAL SANS-SERIF BOLD SMALL D → LATIN SMALL LETTER D  # 
+1D625 ;        0064 ;  MA      # ( 𝘥 → d ) MATHEMATICAL SANS-SERIF ITALIC SMALL D → LATIN SMALL LETTER D        # 
+1D659 ;        0064 ;  MA      # ( 𝙙 → d ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D → LATIN SMALL LETTER D   # 
+1D68D ;        0064 ;  MA      # ( 𝚍 → d ) MATHEMATICAL MONOSPACE SMALL D → LATIN SMALL LETTER D        # 
+0501 ; 0064 ;  MA      # ( ԁ → d ) CYRILLIC SMALL LETTER KOMI DE → LATIN SMALL LETTER D   # 
+146F ; 0064 ;  MA      # ( ᑯ → d ) CANADIAN SYLLABICS KO → LATIN SMALL LETTER D  # 
+A4D2 ; 0064 ;  MA      # ( ꓒ → d ) LISU LETTER PHA → LATIN SMALL LETTER D        # 
+
+216E ; 0044 ;  MA      # ( Ⅾ → D ) ROMAN NUMERAL FIVE HUNDRED → LATIN CAPITAL LETTER D   # 
+2145 ; 0044 ;  MA      # ( ⅅ → D ) DOUBLE-STRUCK ITALIC CAPITAL D → LATIN CAPITAL LETTER D       # 
+1D403 ;        0044 ;  MA      # ( 𝐃 → D ) MATHEMATICAL BOLD CAPITAL D → LATIN CAPITAL LETTER D # 
+1D437 ;        0044 ;  MA      # ( 𝐷 → D ) MATHEMATICAL ITALIC CAPITAL D → LATIN CAPITAL LETTER D       # 
+1D46B ;        0044 ;  MA      # ( 𝑫 → D ) MATHEMATICAL BOLD ITALIC CAPITAL D → LATIN CAPITAL LETTER D  # 
+1D49F ;        0044 ;  MA      # ( 𝒟 → D ) MATHEMATICAL SCRIPT CAPITAL D → LATIN CAPITAL LETTER D       # 
+1D4D3 ;        0044 ;  MA      # ( 𝓓 → D ) MATHEMATICAL BOLD SCRIPT CAPITAL D → LATIN CAPITAL LETTER D  # 
+1D507 ;        0044 ;  MA      # ( 𝔇 → D ) MATHEMATICAL FRAKTUR CAPITAL D → LATIN CAPITAL LETTER D      # 
+1D53B ;        0044 ;  MA      # ( 𝔻 → D ) MATHEMATICAL DOUBLE-STRUCK CAPITAL D → LATIN CAPITAL LETTER D        # 
+1D56F ;        0044 ;  MA      # ( 𝕯 → D ) MATHEMATICAL BOLD FRAKTUR CAPITAL D → LATIN CAPITAL LETTER D # 
+1D5A3 ;        0044 ;  MA      # ( 𝖣 → D ) MATHEMATICAL SANS-SERIF CAPITAL D → LATIN CAPITAL LETTER D   # 
+1D5D7 ;        0044 ;  MA      # ( 𝗗 → D ) MATHEMATICAL SANS-SERIF BOLD CAPITAL D → LATIN CAPITAL LETTER D      # 
+1D60B ;        0044 ;  MA      # ( 𝘋 → D ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL D → LATIN CAPITAL LETTER D    # 
+1D63F ;        0044 ;  MA      # ( 𝘿 → D ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D → LATIN CAPITAL LETTER D       # 
+1D673 ;        0044 ;  MA      # ( 𝙳 → D ) MATHEMATICAL MONOSPACE CAPITAL D → LATIN CAPITAL LETTER D    # 
+13A0 ; 0044 ;  MA      # ( Ꭰ → D ) CHEROKEE LETTER A → LATIN CAPITAL LETTER D    # 
+15DE ; 0044 ;  MA      # ( ᗞ → D ) CANADIAN SYLLABICS CARRIER THE → LATIN CAPITAL LETTER D       # 
+15EA ; 0044 ;  MA      # ( ᗪ → D ) CANADIAN SYLLABICS CARRIER PE → LATIN CAPITAL LETTER D        # →ᗞ→
+A4D3 ; 0044 ;  MA      # ( ꓓ → D ) LISU LETTER DA → LATIN CAPITAL LETTER D       # 
+
+0257 ; 0064 0314 ;     MA      # ( ɗ → d̔ ) LATIN SMALL LETTER D WITH HOOK → LATIN SMALL LETTER D, COMBINING REVERSED COMMA ABOVE        # 
+
+0256 ; 0064 0328 ;     MA      # ( ɖ → d̨ ) LATIN SMALL LETTER D WITH TAIL → LATIN SMALL LETTER D, COMBINING OGONEK      # →d̢→
+
+018C ; 0064 0304 ;     MA      # ( ƌ → d̄ ) LATIN SMALL LETTER D WITH TOPBAR → LATIN SMALL LETTER D, COMBINING MACRON    # 
+
+0111 ; 0064 0335 ;     MA      # ( đ → d̵ ) LATIN SMALL LETTER D WITH STROKE → LATIN SMALL LETTER D, COMBINING SHORT STROKE OVERLAY      # 
+
+0110 ; 0044 0335 ;     MA      # ( Đ → D̵ ) LATIN CAPITAL LETTER D WITH STROKE → LATIN CAPITAL LETTER D, COMBINING SHORT STROKE OVERLAY  # 
+00D0 ; 0044 0335 ;     MA      # ( Ð → D̵ ) LATIN CAPITAL LETTER ETH → LATIN CAPITAL LETTER D, COMBINING SHORT STROKE OVERLAY    # →Đ→
+0189 ; 0044 0335 ;     MA      # ( Ɖ → D̵ ) LATIN CAPITAL LETTER AFRICAN D → LATIN CAPITAL LETTER D, COMBINING SHORT STROKE OVERLAY      # →Đ→
+
+20AB ; 0064 0335 0331 ;        MA      #* ( ₫ → ḏ̵ ) DONG SIGN → LATIN SMALL LETTER D, COMBINING SHORT STROKE OVERLAY, COMBINING MACRON BELOW # →đ̱→
+
+A77A ; A779 ;  MA      # ( ꝺ → Ꝺ ) LATIN SMALL LETTER INSULAR D → LATIN CAPITAL LETTER INSULAR D       # 
+
+147B ; 0064 00B7 ;     MA      # ( ᑻ → d· ) CANADIAN SYLLABICS WEST-CREE KWO → LATIN SMALL LETTER D, MIDDLE DOT # →ᑯᐧ→
+
+01F3 ; 0064 007A ;     MA      # ( dz → dz ) LATIN SMALL LETTER DZ → LATIN SMALL LETTER D, LATIN SMALL LETTER Z    # 
+02A3 ; 0064 007A ;     MA      # ( ʣ → dz ) LATIN SMALL LETTER DZ DIGRAPH → LATIN SMALL LETTER D, LATIN SMALL LETTER Z    # 
+
+01F2 ; 0044 007A ;     MA      # ( Dz → Dz ) LATIN CAPITAL LETTER D WITH SMALL LETTER Z → LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z     # 
+
+01F1 ; 0044 005A ;     MA      # ( DZ → DZ ) LATIN CAPITAL LETTER DZ → LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z      # 
+
+01C6 ; 0064 017E ;     MA      # ( dž → dž ) LATIN SMALL LETTER DZ WITH CARON → LATIN SMALL LETTER D, LATIN SMALL LETTER Z WITH CARON     # 
+
+01C5 ; 0044 017E ;     MA      # ( Dž → Dž ) LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON → LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z WITH CARON      # 
+
+01C4 ; 0044 017D ;     MA      # ( DŽ → DŽ ) LATIN CAPITAL LETTER DZ WITH CARON → LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z WITH CARON       # 
+
+02A5 ; 0064 0291 ;     MA      # ( ʥ → dʑ ) LATIN SMALL LETTER DZ DIGRAPH WITH CURL → LATIN SMALL LETTER D, LATIN SMALL LETTER Z WITH CURL       # 
+
+02A4 ; 0064 021D ;     MA      # ( ʤ → dȝ ) LATIN SMALL LETTER DEZH DIGRAPH → LATIN SMALL LETTER D, LATIN SMALL LETTER YOGH      # →dʒ→
+
+1487 ; 0064 144A ;     MA      # ( ᒇ → dᑊ ) CANADIAN SYLLABICS SOUTH-SLAVEY KOH → LATIN SMALL LETTER D, CANADIAN SYLLABICS WEST-CREE P # →ᑯᑊ→
+
+03B4 ; 1E9F ;  MA      # ( δ → ẟ ) GREEK SMALL LETTER DELTA → LATIN SMALL LETTER DELTA  # 
+1D6C5 ;        1E9F ;  MA      # ( 𝛅 → ẟ ) MATHEMATICAL BOLD SMALL DELTA → LATIN SMALL LETTER DELTA   # →δ→
+1D6FF ;        1E9F ;  MA      # ( 𝛿 → ẟ ) MATHEMATICAL ITALIC SMALL DELTA → LATIN SMALL LETTER DELTA # →δ→
+1D739 ;        1E9F ;  MA      # ( 𝜹 → ẟ ) MATHEMATICAL BOLD ITALIC SMALL DELTA → LATIN SMALL LETTER DELTA    # →δ→
+1D773 ;        1E9F ;  MA      # ( 𝝳 → ẟ ) MATHEMATICAL SANS-SERIF BOLD SMALL DELTA → LATIN SMALL LETTER DELTA        # →δ→
+1D7AD ;        1E9F ;  MA      # ( 𝞭 → ẟ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA → LATIN SMALL LETTER DELTA # →δ→
+056E ; 1E9F ;  MA      # ( ծ → ẟ ) ARMENIAN SMALL LETTER CA → LATIN SMALL LETTER DELTA  # →δ→
+1577 ; 1E9F ;  MA      # ( ᕷ → ẟ ) CANADIAN SYLLABICS NUNAVIK HO → LATIN SMALL LETTER DELTA    # →δ→
+
+212E ; 0065 ;  MA      # ( ℮ → e ) ESTIMATED SYMBOL → LATIN SMALL LETTER E       # 
+FF45 ; 0065 ;  MA      # ( e → e ) FULLWIDTH LATIN SMALL LETTER E → LATIN SMALL LETTER E # →е→
+212F ; 0065 ;  MA      # ( ℯ → e ) SCRIPT SMALL E → LATIN SMALL LETTER E # 
+2147 ; 0065 ;  MA      # ( ⅇ → e ) DOUBLE-STRUCK ITALIC SMALL E → LATIN SMALL LETTER E   # 
+1D41E ;        0065 ;  MA      # ( 𝐞 → e ) MATHEMATICAL BOLD SMALL E → LATIN SMALL LETTER E     # 
+1D452 ;        0065 ;  MA      # ( 𝑒 → e ) MATHEMATICAL ITALIC SMALL E → LATIN SMALL LETTER E   # 
+1D486 ;        0065 ;  MA      # ( 𝒆 → e ) MATHEMATICAL BOLD ITALIC SMALL E → LATIN SMALL LETTER E      # 
+1D4EE ;        0065 ;  MA      # ( 𝓮 → e ) MATHEMATICAL BOLD SCRIPT SMALL E → LATIN SMALL LETTER E      # 
+1D522 ;        0065 ;  MA      # ( 𝔢 → e ) MATHEMATICAL FRAKTUR SMALL E → LATIN SMALL LETTER E  # 
+1D556 ;        0065 ;  MA      # ( 𝕖 → e ) MATHEMATICAL DOUBLE-STRUCK SMALL E → LATIN SMALL LETTER E    # 
+1D58A ;        0065 ;  MA      # ( 𝖊 → e ) MATHEMATICAL BOLD FRAKTUR SMALL E → LATIN SMALL LETTER E     # 
+1D5BE ;        0065 ;  MA      # ( 𝖾 → e ) MATHEMATICAL SANS-SERIF SMALL E → LATIN SMALL LETTER E       # 
+1D5F2 ;        0065 ;  MA      # ( 𝗲 → e ) MATHEMATICAL SANS-SERIF BOLD SMALL E → LATIN SMALL LETTER E  # 
+1D626 ;        0065 ;  MA      # ( 𝘦 → e ) MATHEMATICAL SANS-SERIF ITALIC SMALL E → LATIN SMALL LETTER E        # 
+1D65A ;        0065 ;  MA      # ( 𝙚 → e ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E → LATIN SMALL LETTER E   # 
+1D68E ;        0065 ;  MA      # ( 𝚎 → e ) MATHEMATICAL MONOSPACE SMALL E → LATIN SMALL LETTER E        # 
+0435 ; 0065 ;  MA      # ( е → e ) CYRILLIC SMALL LETTER IE → LATIN SMALL LETTER E        # 
+
+22FF ; 0045 ;  MA      #* ( ⋿ → E ) Z NOTATION BAG MEMBERSHIP → LATIN CAPITAL LETTER E   # 
+FF25 ; 0045 ;  MA      # ( E → E ) FULLWIDTH LATIN CAPITAL LETTER E → LATIN CAPITAL LETTER E     # →Ε→
+2130 ; 0045 ;  MA      # ( ℰ → E ) SCRIPT CAPITAL E → LATIN CAPITAL LETTER E     # 
+1D404 ;        0045 ;  MA      # ( 𝐄 → E ) MATHEMATICAL BOLD CAPITAL E → LATIN CAPITAL LETTER E # 
+1D438 ;        0045 ;  MA      # ( 𝐸 → E ) MATHEMATICAL ITALIC CAPITAL E → LATIN CAPITAL LETTER E       # 
+1D46C ;        0045 ;  MA      # ( 𝑬 → E ) MATHEMATICAL BOLD ITALIC CAPITAL E → LATIN CAPITAL LETTER E  # 
+1D4D4 ;        0045 ;  MA      # ( 𝓔 → E ) MATHEMATICAL BOLD SCRIPT CAPITAL E → LATIN CAPITAL LETTER E  # 
+1D508 ;        0045 ;  MA      # ( 𝔈 → E ) MATHEMATICAL FRAKTUR CAPITAL E → LATIN CAPITAL LETTER E      # 
+1D53C ;        0045 ;  MA      # ( 𝔼 → E ) MATHEMATICAL DOUBLE-STRUCK CAPITAL E → LATIN CAPITAL LETTER E        # 
+1D570 ;        0045 ;  MA      # ( 𝕰 → E ) MATHEMATICAL BOLD FRAKTUR CAPITAL E → LATIN CAPITAL LETTER E # 
+1D5A4 ;        0045 ;  MA      # ( 𝖤 → E ) MATHEMATICAL SANS-SERIF CAPITAL E → LATIN CAPITAL LETTER E   # 
+1D5D8 ;        0045 ;  MA      # ( 𝗘 → E ) MATHEMATICAL SANS-SERIF BOLD CAPITAL E → LATIN CAPITAL LETTER E      # 
+1D60C ;        0045 ;  MA      # ( 𝘌 → E ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL E → LATIN CAPITAL LETTER E    # 
+1D640 ;        0045 ;  MA      # ( 𝙀 → E ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E → LATIN CAPITAL LETTER E       # 
+1D674 ;        0045 ;  MA      # ( 𝙴 → E ) MATHEMATICAL MONOSPACE CAPITAL E → LATIN CAPITAL LETTER E    # 
+0395 ; 0045 ;  MA      # ( Ε → E ) GREEK CAPITAL LETTER EPSILON → LATIN CAPITAL LETTER E  # 
+1D6AC ;        0045 ;  MA      # ( 𝚬 → E ) MATHEMATICAL BOLD CAPITAL EPSILON → LATIN CAPITAL LETTER E   # →𝐄→
+1D6E6 ;        0045 ;  MA      # ( 𝛦 → E ) MATHEMATICAL ITALIC CAPITAL EPSILON → LATIN CAPITAL LETTER E # →𝐸→
+1D720 ;        0045 ;  MA      # ( 𝜠 → E ) MATHEMATICAL BOLD ITALIC CAPITAL EPSILON → LATIN CAPITAL LETTER E    # →𝑬→
+1D75A ;        0045 ;  MA      # ( 𝝚 → E ) MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON → LATIN CAPITAL LETTER E        # →Ε→
+1D794 ;        0045 ;  MA      # ( 𝞔 → E ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON → LATIN CAPITAL LETTER E # →Ε→
+0415 ; 0045 ;  MA      # ( Е → E ) CYRILLIC CAPITAL LETTER IE → LATIN CAPITAL LETTER E    # 
+2D39 ; 0045 ;  MA      # ( ⴹ → E ) TIFINAGH LETTER YADD → LATIN CAPITAL LETTER E # 
+13AC ; 0045 ;  MA      # ( Ꭼ → E ) CHEROKEE LETTER GV → LATIN CAPITAL LETTER E   # 
+A4F0 ; 0045 ;  MA      # ( ꓰ → E ) LISU LETTER E → LATIN CAPITAL LETTER E        # 
+
+011B ; 0115 ;  MA      # ( ě → ĕ ) LATIN SMALL LETTER E WITH CARON → LATIN SMALL LETTER E WITH BREVE     # 
+
+011A ; 0114 ;  MA      # ( Ě → Ĕ ) LATIN CAPITAL LETTER E WITH CARON → LATIN CAPITAL LETTER E WITH BREVE # 
+
+0259 ; 01DD ;  MA      # ( ə → ǝ ) LATIN SMALL LETTER SCHWA → LATIN SMALL LETTER TURNED E        # 
+04D9 ; 01DD ;  MA      # ( ә → ǝ ) CYRILLIC SMALL LETTER SCHWA → LATIN SMALL LETTER TURNED E     # 
+
+2203 ; 018E ;  MA      #* ( ∃ → Ǝ ) THERE EXISTS → LATIN CAPITAL LETTER REVERSED E      # 
+2D3A ; 018E ;  MA      # ( ⴺ → Ǝ ) TIFINAGH LETTER YADDH → LATIN CAPITAL LETTER REVERSED E      # 
+A4F1 ; 018E ;  MA      # ( ꓱ → Ǝ ) LISU LETTER EU → LATIN CAPITAL LETTER REVERSED E     # 
+
+025A ; 01DD 02DE ;     MA      # ( ɚ → ǝ˞ ) LATIN SMALL LETTER SCHWA WITH HOOK → LATIN SMALL LETTER TURNED E, MODIFIER LETTER RHOTIC HOOK       # →ə˞→
+
+1D14 ; 01DD 006F ;     MA      # ( ᴔ → ǝo ) LATIN SMALL LETTER TURNED OE → LATIN SMALL LETTER TURNED E, LATIN SMALL LETTER O    # →əo→
+
+04D8 ; 018F ;  MA      # ( Ә → Ə ) CYRILLIC CAPITAL LETTER SCHWA → LATIN CAPITAL LETTER SCHWA    # 
+
+22F4 ; 025B ;  MA      #* ( ⋴ → ɛ ) SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE → LATIN SMALL LETTER OPEN E  # 
+03B5 ; 025B ;  MA      # ( ε → ɛ ) GREEK SMALL LETTER EPSILON → LATIN SMALL LETTER OPEN E        # 
+03F5 ; 025B ;  MA      # ( ϵ → ɛ ) GREEK LUNATE EPSILON SYMBOL → LATIN SMALL LETTER OPEN E       # →ε→
+1D6C6 ;        025B ;  MA      # ( 𝛆 → ɛ ) MATHEMATICAL BOLD SMALL EPSILON → LATIN SMALL LETTER OPEN E # →ε→
+1D6DC ;        025B ;  MA      # ( 𝛜 → ɛ ) MATHEMATICAL BOLD EPSILON SYMBOL → LATIN SMALL LETTER OPEN E        # →ε→
+1D700 ;        025B ;  MA      # ( 𝜀 → ɛ ) MATHEMATICAL ITALIC SMALL EPSILON → LATIN SMALL LETTER OPEN E       # →ε→
+1D716 ;        025B ;  MA      # ( 𝜖 → ɛ ) MATHEMATICAL ITALIC EPSILON SYMBOL → LATIN SMALL LETTER OPEN E      # →ε→
+1D73A ;        025B ;  MA      # ( 𝜺 → ɛ ) MATHEMATICAL BOLD ITALIC SMALL EPSILON → LATIN SMALL LETTER OPEN E  # →ε→
+1D750 ;        025B ;  MA      # ( 𝝐 → ɛ ) MATHEMATICAL BOLD ITALIC EPSILON SYMBOL → LATIN SMALL LETTER OPEN E # →ε→
+1D774 ;        025B ;  MA      # ( 𝝴 → ɛ ) MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON → LATIN SMALL LETTER OPEN E      # →ε→
+1D78A ;        025B ;  MA      # ( 𝞊 → ɛ ) MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL → LATIN SMALL LETTER OPEN E     # →ε→
+1D7AE ;        025B ;  MA      # ( 𝞮 → ɛ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON → LATIN SMALL LETTER OPEN E       # →ε→
+1D7C4 ;        025B ;  MA      # ( 𝟄 → ɛ ) MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL → LATIN SMALL LETTER OPEN E      # →ε→
+2C89 ; 025B ;  MA      # ( ⲉ → ɛ ) COPTIC SMALL LETTER EIE → LATIN SMALL LETTER OPEN E  # →є→
+0454 ; 025B ;  MA      # ( є → ɛ ) CYRILLIC SMALL LETTER UKRAINIAN IE → LATIN SMALL LETTER OPEN E        # 
+0511 ; 025B ;  MA      # ( ԑ → ɛ ) CYRILLIC SMALL LETTER REVERSED ZE → LATIN SMALL LETTER OPEN E # 
+
+20AC ; 0190 ;  MA      #* ( € → Ɛ ) EURO SIGN → LATIN CAPITAL LETTER OPEN E     # →Є→
+2107 ; 0190 ;  MA      # ( ℇ → Ɛ ) EULER CONSTANT → LATIN CAPITAL LETTER OPEN E # 
+2C88 ; 0190 ;  MA      # ( Ⲉ → Ɛ ) COPTIC CAPITAL LETTER EIE → LATIN CAPITAL LETTER OPEN E      # →Є→
+0404 ; 0190 ;  MA      # ( Є → Ɛ ) CYRILLIC CAPITAL LETTER UKRAINIAN IE → LATIN CAPITAL LETTER OPEN E    # 
+0510 ; 0190 ;  MA      # ( Ԑ → Ɛ ) CYRILLIC CAPITAL LETTER REVERSED ZE → LATIN CAPITAL LETTER OPEN E     # 
+
+1D9F ; 1D4B ;  MA      # ( ᶟ → ᵋ ) MODIFIER LETTER SMALL REVERSED OPEN E → MODIFIER LETTER SMALL OPEN E        # 
+
+1D08 ; 025C ;  MA      # ( ᴈ → ɜ ) LATIN SMALL LETTER TURNED OPEN E → LATIN SMALL LETTER REVERSED OPEN E        # 
+0437 ; 025C ;  MA      # ( з → ɜ ) CYRILLIC SMALL LETTER ZE → LATIN SMALL LETTER REVERSED OPEN E # 
+
+0499 ; 025C 0326 ;     MA      # ( ҙ → ɜ̦ ) CYRILLIC SMALL LETTER ZE WITH DESCENDER → LATIN SMALL LETTER REVERSED OPEN E, COMBINING COMMA BELOW # →з̡→
+
+1D41F ;        0066 ;  MA      # ( 𝐟 → f ) MATHEMATICAL BOLD SMALL F → LATIN SMALL LETTER F     # 
+1D453 ;        0066 ;  MA      # ( 𝑓 → f ) MATHEMATICAL ITALIC SMALL F → LATIN SMALL LETTER F   # 
+1D487 ;        0066 ;  MA      # ( 𝒇 → f ) MATHEMATICAL BOLD ITALIC SMALL F → LATIN SMALL LETTER F      # 
+1D4BB ;        0066 ;  MA      # ( 𝒻 → f ) MATHEMATICAL SCRIPT SMALL F → LATIN SMALL LETTER F   # 
+1D4EF ;        0066 ;  MA      # ( 𝓯 → f ) MATHEMATICAL BOLD SCRIPT SMALL F → LATIN SMALL LETTER F      # 
+1D523 ;        0066 ;  MA      # ( 𝔣 → f ) MATHEMATICAL FRAKTUR SMALL F → LATIN SMALL LETTER F  # 
+1D557 ;        0066 ;  MA      # ( 𝕗 → f ) MATHEMATICAL DOUBLE-STRUCK SMALL F → LATIN SMALL LETTER F    # 
+1D58B ;        0066 ;  MA      # ( 𝖋 → f ) MATHEMATICAL BOLD FRAKTUR SMALL F → LATIN SMALL LETTER F     # 
+1D5BF ;        0066 ;  MA      # ( 𝖿 → f ) MATHEMATICAL SANS-SERIF SMALL F → LATIN SMALL LETTER F       # 
+1D5F3 ;        0066 ;  MA      # ( 𝗳 → f ) MATHEMATICAL SANS-SERIF BOLD SMALL F → LATIN SMALL LETTER F  # 
+1D627 ;        0066 ;  MA      # ( 𝘧 → f ) MATHEMATICAL SANS-SERIF ITALIC SMALL F → LATIN SMALL LETTER F        # 
+1D65B ;        0066 ;  MA      # ( 𝙛 → f ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F → LATIN SMALL LETTER F   # 
+1D68F ;        0066 ;  MA      # ( 𝚏 → f ) MATHEMATICAL MONOSPACE SMALL F → LATIN SMALL LETTER F        # 
+017F ; 0066 ;  MA      # ( ſ → f ) LATIN SMALL LETTER LONG S → LATIN SMALL LETTER F       # 
+1E9D ; 0066 ;  MA      # ( ẝ → f ) LATIN SMALL LETTER LONG S WITH HIGH STROKE → LATIN SMALL LETTER F     # 
+0584 ; 0066 ;  MA      # ( ք → f ) ARMENIAN SMALL LETTER KEH → LATIN SMALL LETTER F       # 
+
+2131 ; 0046 ;  MA      # ( ℱ → F ) SCRIPT CAPITAL F → LATIN CAPITAL LETTER F     # 
+1D405 ;        0046 ;  MA      # ( 𝐅 → F ) MATHEMATICAL BOLD CAPITAL F → LATIN CAPITAL LETTER F # 
+1D439 ;        0046 ;  MA      # ( 𝐹 → F ) MATHEMATICAL ITALIC CAPITAL F → LATIN CAPITAL LETTER F       # 
+1D46D ;        0046 ;  MA      # ( 𝑭 → F ) MATHEMATICAL BOLD ITALIC CAPITAL F → LATIN CAPITAL LETTER F  # 
+1D4D5 ;        0046 ;  MA      # ( 𝓕 → F ) MATHEMATICAL BOLD SCRIPT CAPITAL F → LATIN CAPITAL LETTER F  # 
+1D509 ;        0046 ;  MA      # ( 𝔉 → F ) MATHEMATICAL FRAKTUR CAPITAL F → LATIN CAPITAL LETTER F      # 
+1D53D ;        0046 ;  MA      # ( 𝔽 → F ) MATHEMATICAL DOUBLE-STRUCK CAPITAL F → LATIN CAPITAL LETTER F        # 
+1D571 ;        0046 ;  MA      # ( 𝕱 → F ) MATHEMATICAL BOLD FRAKTUR CAPITAL F → LATIN CAPITAL LETTER F # 
+1D5A5 ;        0046 ;  MA      # ( 𝖥 → F ) MATHEMATICAL SANS-SERIF CAPITAL F → LATIN CAPITAL LETTER F   # 
+1D5D9 ;        0046 ;  MA      # ( 𝗙 → F ) MATHEMATICAL SANS-SERIF BOLD CAPITAL F → LATIN CAPITAL LETTER F      # 
+1D60D ;        0046 ;  MA      # ( 𝘍 → F ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL F → LATIN CAPITAL LETTER F    # 
+1D641 ;        0046 ;  MA      # ( 𝙁 → F ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F → LATIN CAPITAL LETTER F       # 
+1D675 ;        0046 ;  MA      # ( 𝙵 → F ) MATHEMATICAL MONOSPACE CAPITAL F → LATIN CAPITAL LETTER F    # 
+03DC ; 0046 ;  MA      # ( Ϝ → F ) GREEK LETTER DIGAMMA → LATIN CAPITAL LETTER F  # 
+1D7CA ;        0046 ;  MA      # ( 𝟊 → F ) MATHEMATICAL BOLD CAPITAL DIGAMMA → LATIN CAPITAL LETTER F   # →Ϝ→
+15B4 ; 0046 ;  MA      # ( ᖴ → F ) CANADIAN SYLLABICS BLACKFOOT WE → LATIN CAPITAL LETTER F      # 
+A4DD ; 0046 ;  MA      # ( ꓝ → F ) LISU LETTER TSA → LATIN CAPITAL LETTER F      # 
+
+0192 ; 0066 0326 ;     MA      # ( ƒ → f̦ ) LATIN SMALL LETTER F WITH HOOK → LATIN SMALL LETTER F, COMBINING COMMA BELOW # →f̡→
+
+0191 ; 0046 0326 ;     MA      # ( Ƒ → F̦ ) LATIN CAPITAL LETTER F WITH HOOK → LATIN CAPITAL LETTER F, COMBINING COMMA BELOW     # →F̡→
+
+213B ; 0046 0041 0058 ;        MA      #* ( ℻ → FAX ) FACSIMILE SIGN → LATIN CAPITAL LETTER F, LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER X    # 
+
+FB00 ; 0066 0066 ;     MA      # ( ff → ff ) LATIN SMALL LIGATURE FF → LATIN SMALL LETTER F, LATIN SMALL LETTER F # 
+
+FB03 ; 0066 0066 0069 ;        MA      # ( ffi → ffi ) LATIN SMALL LIGATURE FFI → LATIN SMALL LETTER F, LATIN SMALL LETTER F, LATIN SMALL LETTER I # 
+
+FB04 ; 0066 0066 006C ;        MA      # ( ffl → ffl ) LATIN SMALL LIGATURE FFL → LATIN SMALL LETTER F, LATIN SMALL LETTER F, LATIN SMALL LETTER L # 
+
+FB01 ; 0066 0069 ;     MA      # ( fi → fi ) LATIN SMALL LIGATURE FI → LATIN SMALL LETTER F, LATIN SMALL LETTER I # 
+
+FB02 ; 0066 006C ;     MA      # ( fl → fl ) LATIN SMALL LIGATURE FL → LATIN SMALL LETTER F, LATIN SMALL LETTER L # 
+
+02A9 ; 0066 014B ;     MA      # ( ʩ → fŋ ) LATIN SMALL LETTER FENG DIGRAPH → LATIN SMALL LETTER F, LATIN SMALL LETTER ENG       # 
+
+A4DE ; 2132 ;  MA      # ( ꓞ → Ⅎ ) LISU LETTER TSHA → TURNED CAPITAL F # 
+
+FF47 ; 0067 ;  MA      # ( g → g ) FULLWIDTH LATIN SMALL LETTER G → LATIN SMALL LETTER G # →ɡ→
+210A ; 0067 ;  MA      # ( ℊ → g ) SCRIPT SMALL G → LATIN SMALL LETTER G # 
+1D420 ;        0067 ;  MA      # ( 𝐠 → g ) MATHEMATICAL BOLD SMALL G → LATIN SMALL LETTER G     # 
+1D454 ;        0067 ;  MA      # ( 𝑔 → g ) MATHEMATICAL ITALIC SMALL G → LATIN SMALL LETTER G   # 
+1D488 ;        0067 ;  MA      # ( 𝒈 → g ) MATHEMATICAL BOLD ITALIC SMALL G → LATIN SMALL LETTER G      # 
+1D4F0 ;        0067 ;  MA      # ( 𝓰 → g ) MATHEMATICAL BOLD SCRIPT SMALL G → LATIN SMALL LETTER G      # 
+1D524 ;        0067 ;  MA      # ( 𝔤 → g ) MATHEMATICAL FRAKTUR SMALL G → LATIN SMALL LETTER G  # 
+1D558 ;        0067 ;  MA      # ( 𝕘 → g ) MATHEMATICAL DOUBLE-STRUCK SMALL G → LATIN SMALL LETTER G    # 
+1D58C ;        0067 ;  MA      # ( 𝖌 → g ) MATHEMATICAL BOLD FRAKTUR SMALL G → LATIN SMALL LETTER G     # 
+1D5C0 ;        0067 ;  MA      # ( 𝗀 → g ) MATHEMATICAL SANS-SERIF SMALL G → LATIN SMALL LETTER G       # 
+1D5F4 ;        0067 ;  MA      # ( 𝗴 → g ) MATHEMATICAL SANS-SERIF BOLD SMALL G → LATIN SMALL LETTER G  # 
+1D628 ;        0067 ;  MA      # ( 𝘨 → g ) MATHEMATICAL SANS-SERIF ITALIC SMALL G → LATIN SMALL LETTER G        # 
+1D65C ;        0067 ;  MA      # ( 𝙜 → g ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G → LATIN SMALL LETTER G   # 
+1D690 ;        0067 ;  MA      # ( 𝚐 → g ) MATHEMATICAL MONOSPACE SMALL G → LATIN SMALL LETTER G        # 
+0261 ; 0067 ;  MA      # ( ɡ → g ) LATIN SMALL LETTER SCRIPT G → LATIN SMALL LETTER G     # 
+1D83 ; 0067 ;  MA      # ( ᶃ → g ) LATIN SMALL LETTER G WITH PALATAL HOOK → LATIN SMALL LETTER G # 
+018D ; 0067 ;  MA      # ( ƍ → g ) LATIN SMALL LETTER TURNED DELTA → LATIN SMALL LETTER G # 
+0581 ; 0067 ;  MA      # ( ց → g ) ARMENIAN SMALL LETTER CO → LATIN SMALL LETTER G        # 
+
+1D406 ;        0047 ;  MA      # ( 𝐆 → G ) MATHEMATICAL BOLD CAPITAL G → LATIN CAPITAL LETTER G # 
+1D43A ;        0047 ;  MA      # ( 𝐺 → G ) MATHEMATICAL ITALIC CAPITAL G → LATIN CAPITAL LETTER G       # 
+1D46E ;        0047 ;  MA      # ( 𝑮 → G ) MATHEMATICAL BOLD ITALIC CAPITAL G → LATIN CAPITAL LETTER G  # 
+1D4A2 ;        0047 ;  MA      # ( 𝒢 → G ) MATHEMATICAL SCRIPT CAPITAL G → LATIN CAPITAL LETTER G       # 
+1D4D6 ;        0047 ;  MA      # ( 𝓖 → G ) MATHEMATICAL BOLD SCRIPT CAPITAL G → LATIN CAPITAL LETTER G  # 
+1D50A ;        0047 ;  MA      # ( 𝔊 → G ) MATHEMATICAL FRAKTUR CAPITAL G → LATIN CAPITAL LETTER G      # 
+1D53E ;        0047 ;  MA      # ( 𝔾 → G ) MATHEMATICAL DOUBLE-STRUCK CAPITAL G → LATIN CAPITAL LETTER G        # 
+1D572 ;        0047 ;  MA      # ( 𝕲 → G ) MATHEMATICAL BOLD FRAKTUR CAPITAL G → LATIN CAPITAL LETTER G # 
+1D5A6 ;        0047 ;  MA      # ( 𝖦 → G ) MATHEMATICAL SANS-SERIF CAPITAL G → LATIN CAPITAL LETTER G   # 
+1D5DA ;        0047 ;  MA      # ( 𝗚 → G ) MATHEMATICAL SANS-SERIF BOLD CAPITAL G → LATIN CAPITAL LETTER G      # 
+1D60E ;        0047 ;  MA      # ( 𝘎 → G ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL G → LATIN CAPITAL LETTER G    # 
+1D642 ;        0047 ;  MA      # ( 𝙂 → G ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G → LATIN CAPITAL LETTER G       # 
+1D676 ;        0047 ;  MA      # ( 𝙶 → G ) MATHEMATICAL MONOSPACE CAPITAL G → LATIN CAPITAL LETTER G    # 
+050C ; 0047 ;  MA      # ( Ԍ → G ) CYRILLIC CAPITAL LETTER KOMI SJE → LATIN CAPITAL LETTER G      # 
+13C0 ; 0047 ;  MA      # ( Ꮐ → G ) CHEROKEE LETTER NAH → LATIN CAPITAL LETTER G  # 
+13F3 ; 0047 ;  MA      # ( Ᏻ → G ) CHEROKEE LETTER YU → LATIN CAPITAL LETTER G   # →Ꮐ→
+A4D6 ; 0047 ;  MA      # ( ꓖ → G ) LISU LETTER GA → LATIN CAPITAL LETTER G       # 
+
+1DA2 ; 1D4D ;  MA      # ( ᶢ → ᵍ ) MODIFIER LETTER SMALL SCRIPT G → MODIFIER LETTER SMALL G    # 
+
+0260 ; 0067 0314 ;     MA      # ( ɠ → g̔ ) LATIN SMALL LETTER G WITH HOOK → LATIN SMALL LETTER G, COMBINING REVERSED COMMA ABOVE        # 
+
+01E7 ; 011F ;  MA      # ( ǧ → ğ ) LATIN SMALL LETTER G WITH CARON → LATIN SMALL LETTER G WITH BREVE     # 
+
+01E6 ; 011E ;  MA      # ( Ǧ → Ğ ) LATIN CAPITAL LETTER G WITH CARON → LATIN CAPITAL LETTER G WITH BREVE # 
+
+01F5 ; 0123 ;  MA      # ( ǵ → ģ ) LATIN SMALL LETTER G WITH ACUTE → LATIN SMALL LETTER G WITH CEDILLA   # 
+
+01E5 ; 0067 0335 ;     MA      # ( ǥ → g̵ ) LATIN SMALL LETTER G WITH STROKE → LATIN SMALL LETTER G, COMBINING SHORT STROKE OVERLAY      # 
+
+01E4 ; 0047 0335 ;     MA      # ( Ǥ → G̵ ) LATIN CAPITAL LETTER G WITH STROKE → LATIN CAPITAL LETTER G, COMBINING SHORT STROKE OVERLAY  # 
+
+0193 ; 0047 0027 ;     MA      # ( Ɠ → G' ) LATIN CAPITAL LETTER G WITH HOOK → LATIN CAPITAL LETTER G, APOSTROPHE # →Gʽ→
+
+050D ; 0262 ;  MA      # ( ԍ → ɢ ) CYRILLIC SMALL LETTER KOMI SJE → LATIN LETTER SMALL CAPITAL G # 
+
+FF48 ; 0068 ;  MA      # ( h → h ) FULLWIDTH LATIN SMALL LETTER H → LATIN SMALL LETTER H # →һ→
+210E ; 0068 ;  MA      # ( ℎ → h ) PLANCK CONSTANT → LATIN SMALL LETTER H        # 
+1D421 ;        0068 ;  MA      # ( 𝐡 → h ) MATHEMATICAL BOLD SMALL H → LATIN SMALL LETTER H     # 
+1D489 ;        0068 ;  MA      # ( 𝒉 → h ) MATHEMATICAL BOLD ITALIC SMALL H → LATIN SMALL LETTER H      # 
+1D4BD ;        0068 ;  MA      # ( 𝒽 → h ) MATHEMATICAL SCRIPT SMALL H → LATIN SMALL LETTER H   # 
+1D4F1 ;        0068 ;  MA      # ( 𝓱 → h ) MATHEMATICAL BOLD SCRIPT SMALL H → LATIN SMALL LETTER H      # 
+1D525 ;        0068 ;  MA      # ( 𝔥 → h ) MATHEMATICAL FRAKTUR SMALL H → LATIN SMALL LETTER H  # 
+1D559 ;        0068 ;  MA      # ( 𝕙 → h ) MATHEMATICAL DOUBLE-STRUCK SMALL H → LATIN SMALL LETTER H    # 
+1D58D ;        0068 ;  MA      # ( 𝖍 → h ) MATHEMATICAL BOLD FRAKTUR SMALL H → LATIN SMALL LETTER H     # 
+1D5C1 ;        0068 ;  MA      # ( 𝗁 → h ) MATHEMATICAL SANS-SERIF SMALL H → LATIN SMALL LETTER H       # 
+1D5F5 ;        0068 ;  MA      # ( 𝗵 → h ) MATHEMATICAL SANS-SERIF BOLD SMALL H → LATIN SMALL LETTER H  # 
+1D629 ;        0068 ;  MA      # ( 𝘩 → h ) MATHEMATICAL SANS-SERIF ITALIC SMALL H → LATIN SMALL LETTER H        # 
+1D65D ;        0068 ;  MA      # ( 𝙝 → h ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H → LATIN SMALL LETTER H   # 
+1D691 ;        0068 ;  MA      # ( 𝚑 → h ) MATHEMATICAL MONOSPACE SMALL H → LATIN SMALL LETTER H        # 
+04BB ; 0068 ;  MA      # ( һ → h ) CYRILLIC SMALL LETTER SHHA → LATIN SMALL LETTER H      # 
+0570 ; 0068 ;  MA      # ( հ → h ) ARMENIAN SMALL LETTER HO → LATIN SMALL LETTER H        # 
+13C2 ; 0068 ;  MA      # ( Ꮒ → h ) CHEROKEE LETTER NI → LATIN SMALL LETTER H     # 
+
+FF28 ; 0048 ;  MA      # ( H → H ) FULLWIDTH LATIN CAPITAL LETTER H → LATIN CAPITAL LETTER H     # →Н→
+210B ; 0048 ;  MA      # ( ℋ → H ) SCRIPT CAPITAL H → LATIN CAPITAL LETTER H     # 
+210C ; 0048 ;  MA      # ( ℌ → H ) BLACK-LETTER CAPITAL H → LATIN CAPITAL LETTER H       # 
+210D ; 0048 ;  MA      # ( ℍ → H ) DOUBLE-STRUCK CAPITAL H → LATIN CAPITAL LETTER H      # 
+1D407 ;        0048 ;  MA      # ( 𝐇 → H ) MATHEMATICAL BOLD CAPITAL H → LATIN CAPITAL LETTER H # 
+1D43B ;        0048 ;  MA      # ( 𝐻 → H ) MATHEMATICAL ITALIC CAPITAL H → LATIN CAPITAL LETTER H       # 
+1D46F ;        0048 ;  MA      # ( 𝑯 → H ) MATHEMATICAL BOLD ITALIC CAPITAL H → LATIN CAPITAL LETTER H  # 
+1D4D7 ;        0048 ;  MA      # ( 𝓗 → H ) MATHEMATICAL BOLD SCRIPT CAPITAL H → LATIN CAPITAL LETTER H  # 
+1D573 ;        0048 ;  MA      # ( 𝕳 → H ) MATHEMATICAL BOLD FRAKTUR CAPITAL H → LATIN CAPITAL LETTER H # 
+1D5A7 ;        0048 ;  MA      # ( 𝖧 → H ) MATHEMATICAL SANS-SERIF CAPITAL H → LATIN CAPITAL LETTER H   # 
+1D5DB ;        0048 ;  MA      # ( 𝗛 → H ) MATHEMATICAL SANS-SERIF BOLD CAPITAL H → LATIN CAPITAL LETTER H      # 
+1D60F ;        0048 ;  MA      # ( 𝘏 → H ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL H → LATIN CAPITAL LETTER H    # 
+1D643 ;        0048 ;  MA      # ( 𝙃 → H ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H → LATIN CAPITAL LETTER H       # 
+1D677 ;        0048 ;  MA      # ( 𝙷 → H ) MATHEMATICAL MONOSPACE CAPITAL H → LATIN CAPITAL LETTER H    # 
+0397 ; 0048 ;  MA      # ( Η → H ) GREEK CAPITAL LETTER ETA → LATIN CAPITAL LETTER H      # 
+1D6AE ;        0048 ;  MA      # ( 𝚮 → H ) MATHEMATICAL BOLD CAPITAL ETA → LATIN CAPITAL LETTER H       # →𝐇→
+1D6E8 ;        0048 ;  MA      # ( 𝛨 → H ) MATHEMATICAL ITALIC CAPITAL ETA → LATIN CAPITAL LETTER H     # →𝐻→
+1D722 ;        0048 ;  MA      # ( 𝜢 → H ) MATHEMATICAL BOLD ITALIC CAPITAL ETA → LATIN CAPITAL LETTER H        # →Η→
+1D75C ;        0048 ;  MA      # ( 𝝜 → H ) MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA → LATIN CAPITAL LETTER H    # →Η→
+1D796 ;        0048 ;  MA      # ( 𝞖 → H ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA → LATIN CAPITAL LETTER H     # →Η→
+2C8E ; 0048 ;  MA      # ( Ⲏ → H ) COPTIC CAPITAL LETTER HATE → LATIN CAPITAL LETTER H   # →Η→
+041D ; 0048 ;  MA      # ( Н → H ) CYRILLIC CAPITAL LETTER EN → LATIN CAPITAL LETTER H    # 
+13BB ; 0048 ;  MA      # ( Ꮋ → H ) CHEROKEE LETTER MI → LATIN CAPITAL LETTER H   # 
+157C ; 0048 ;  MA      # ( ᕼ → H ) CANADIAN SYLLABICS NUNAVUT H → LATIN CAPITAL LETTER H # 
+A4E7 ; 0048 ;  MA      # ( ꓧ → H ) LISU LETTER XA → LATIN CAPITAL LETTER H       # 
+
+1D78 ; 1D34 ;  MA      # ( ᵸ → ᴴ ) MODIFIER LETTER CYRILLIC EN → MODIFIER LETTER CAPITAL H     # 
+
+0266 ; 0068 0314 ;     MA      # ( ɦ → h̔ ) LATIN SMALL LETTER H WITH HOOK → LATIN SMALL LETTER H, COMBINING REVERSED COMMA ABOVE        # 
+13F2 ; 0068 0314 ;     MA      # ( Ᏺ → h̔ ) CHEROKEE LETTER YO → LATIN SMALL LETTER H, COMBINING REVERSED COMMA ABOVE   # →ɦ→
+
+2C67 ; 0048 0329 ;     MA      # ( Ⱨ → H̩ ) LATIN CAPITAL LETTER H WITH DESCENDER → LATIN CAPITAL LETTER H, COMBINING VERTICAL LINE BELOW       # →Ң→→Н̩→
+04A2 ; 0048 0329 ;     MA      # ( Ң → H̩ ) CYRILLIC CAPITAL LETTER EN WITH DESCENDER → LATIN CAPITAL LETTER H, COMBINING VERTICAL LINE BELOW    # →Н̩→
+
+04C9 ; 0048 0326 ;     MA      # ( Ӊ → H̦ ) CYRILLIC CAPITAL LETTER EN WITH TAIL → LATIN CAPITAL LETTER H, COMBINING COMMA BELOW # →Н̡→
+04C7 ; 0048 0326 ;     MA      # ( Ӈ → H̦ ) CYRILLIC CAPITAL LETTER EN WITH HOOK → LATIN CAPITAL LETTER H, COMBINING COMMA BELOW # →Н̡→
+
+0127 ; 0068 0335 ;     MA      # ( ħ → h̵ ) LATIN SMALL LETTER H WITH STROKE → LATIN SMALL LETTER H, COMBINING SHORT STROKE OVERLAY      # 
+210F ; 0068 0335 ;     MA      # ( ℏ → h̵ ) PLANCK CONSTANT OVER TWO PI → LATIN SMALL LETTER H, COMBINING SHORT STROKE OVERLAY  # →ħ→
+045B ; 0068 0335 ;     MA      # ( ћ → h̵ ) CYRILLIC SMALL LETTER TSHE → LATIN SMALL LETTER H, COMBINING SHORT STROKE OVERLAY    # →ħ→
+
+0126 ; 0048 0335 ;     MA      # ( Ħ → H̵ ) LATIN CAPITAL LETTER H WITH STROKE → LATIN CAPITAL LETTER H, COMBINING SHORT STROKE OVERLAY  # 
+
+043D ; 029C ;  MA      # ( н → ʜ ) CYRILLIC SMALL LETTER EN → LATIN LETTER SMALL CAPITAL H       # 
+
+04A3 ; 029C 0329 ;     MA      # ( ң → ʜ̩ ) CYRILLIC SMALL LETTER EN WITH DESCENDER → LATIN LETTER SMALL CAPITAL H, COMBINING VERTICAL LINE BELOW       # →н̩→
+
+04CA ; 029C 0326 ;     MA      # ( ӊ → ʜ̦ ) CYRILLIC SMALL LETTER EN WITH TAIL → LATIN LETTER SMALL CAPITAL H, COMBINING COMMA BELOW    # →н̡→
+04C8 ; 029C 0326 ;     MA      # ( ӈ → ʜ̦ ) CYRILLIC SMALL LETTER EN WITH HOOK → LATIN LETTER SMALL CAPITAL H, COMBINING COMMA BELOW    # →н̡→
+
+050A ; 01F6 ;  MA      # ( Ԋ → Ƕ ) CYRILLIC CAPITAL LETTER KOMI NJE → LATIN CAPITAL LETTER HWAIR # 
+
+13B0 ; 2C75 ;  MA      # ( Ꮀ → Ⱶ ) CHEROKEE LETTER HO → LATIN CAPITAL LETTER HALF H    # 
+
+02DB ; 0069 ;  MA      #* ( ˛ → i ) OGONEK → LATIN SMALL LETTER I # →ͺ→→ι→→ι→
+2373 ; 0069 ;  MA      #* ( ⍳ → i ) APL FUNCTIONAL SYMBOL IOTA → LATIN SMALL LETTER I    # →ι→
+FF49 ; 0069 ;  MA      # ( i → i ) FULLWIDTH LATIN SMALL LETTER I → LATIN SMALL LETTER I # →і→
+2170 ; 0069 ;  MA      # ( ⅰ → i ) SMALL ROMAN NUMERAL ONE → LATIN SMALL LETTER I        # 
+2139 ; 0069 ;  MA      # ( ℹ → i ) INFORMATION SOURCE → LATIN SMALL LETTER I     # 
+2148 ; 0069 ;  MA      # ( ⅈ → i ) DOUBLE-STRUCK ITALIC SMALL I → LATIN SMALL LETTER I   # 
+1D422 ;        0069 ;  MA      # ( 𝐢 → i ) MATHEMATICAL BOLD SMALL I → LATIN SMALL LETTER I     # 
+1D456 ;        0069 ;  MA      # ( 𝑖 → i ) MATHEMATICAL ITALIC SMALL I → LATIN SMALL LETTER I   # 
+1D48A ;        0069 ;  MA      # ( 𝒊 → i ) MATHEMATICAL BOLD ITALIC SMALL I → LATIN SMALL LETTER I      # 
+1D4BE ;        0069 ;  MA      # ( 𝒾 → i ) MATHEMATICAL SCRIPT SMALL I → LATIN SMALL LETTER I   # 
+1D4F2 ;        0069 ;  MA      # ( 𝓲 → i ) MATHEMATICAL BOLD SCRIPT SMALL I → LATIN SMALL LETTER I      # 
+1D526 ;        0069 ;  MA      # ( 𝔦 → i ) MATHEMATICAL FRAKTUR SMALL I → LATIN SMALL LETTER I  # 
+1D55A ;        0069 ;  MA      # ( 𝕚 → i ) MATHEMATICAL DOUBLE-STRUCK SMALL I → LATIN SMALL LETTER I    # 
+1D58E ;        0069 ;  MA      # ( 𝖎 → i ) MATHEMATICAL BOLD FRAKTUR SMALL I → LATIN SMALL LETTER I     # 
+1D5C2 ;        0069 ;  MA      # ( 𝗂 → i ) MATHEMATICAL SANS-SERIF SMALL I → LATIN SMALL LETTER I       # 
+1D5F6 ;        0069 ;  MA      # ( 𝗶 → i ) MATHEMATICAL SANS-SERIF BOLD SMALL I → LATIN SMALL LETTER I  # 
+1D62A ;        0069 ;  MA      # ( 𝘪 → i ) MATHEMATICAL SANS-SERIF ITALIC SMALL I → LATIN SMALL LETTER I        # 
+1D65E ;        0069 ;  MA      # ( 𝙞 → i ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I → LATIN SMALL LETTER I   # 
+1D692 ;        0069 ;  MA      # ( 𝚒 → i ) MATHEMATICAL MONOSPACE SMALL I → LATIN SMALL LETTER I        # 
+0131 ; 0069 ;  MA      # ( ı → i ) LATIN SMALL LETTER DOTLESS I → LATIN SMALL LETTER I    # 
+1D6A4 ;        0069 ;  MA      # ( 𝚤 → i ) MATHEMATICAL ITALIC SMALL DOTLESS I → LATIN SMALL LETTER I   # →ı→
+026A ; 0069 ;  MA      # ( ɪ → i ) LATIN LETTER SMALL CAPITAL I → LATIN SMALL LETTER I    # →ı→
+0269 ; 0069 ;  MA      # ( ɩ → i ) LATIN SMALL LETTER IOTA → LATIN SMALL LETTER I # 
+03B9 ; 0069 ;  MA      # ( ι → i ) GREEK SMALL LETTER IOTA → LATIN SMALL LETTER I # 
+1FBE ; 0069 ;  MA      # ( ι → i ) GREEK PROSGEGRAMMENI → LATIN SMALL LETTER I   # →ι→
+037A ; 0069 ;  MA      #* ( ͺ → i ) GREEK YPOGEGRAMMENI → LATIN SMALL LETTER I    # →ι→→ι→
+1D6CA ;        0069 ;  MA      # ( 𝛊 → i ) MATHEMATICAL BOLD SMALL IOTA → LATIN SMALL LETTER I  # →ι→
+1D704 ;        0069 ;  MA      # ( 𝜄 → i ) MATHEMATICAL ITALIC SMALL IOTA → LATIN SMALL LETTER I        # →ι→
+1D73E ;        0069 ;  MA      # ( 𝜾 → i ) MATHEMATICAL BOLD ITALIC SMALL IOTA → LATIN SMALL LETTER I   # →ι→
+1D778 ;        0069 ;  MA      # ( 𝝸 → i ) MATHEMATICAL SANS-SERIF BOLD SMALL IOTA → LATIN SMALL LETTER I       # →ι→
+1D7B2 ;        0069 ;  MA      # ( 𝞲 → i ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA → LATIN SMALL LETTER I        # →ι→
+0456 ; 0069 ;  MA      # ( і → i ) CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I → LATIN SMALL LETTER I  # 
+04CF ; 0069 ;  MA      # ( ӏ → i ) CYRILLIC SMALL LETTER PALOCHKA → LATIN SMALL LETTER I  # →ı→
+13A5 ; 0069 ;  MA      # ( Ꭵ → i ) CHEROKEE LETTER V → LATIN SMALL LETTER I      # 
+
+24DB ; 24BE ;  MA      #* ( ⓛ → Ⓘ ) CIRCLED LATIN SMALL LETTER L → CIRCLED LATIN CAPITAL LETTER I      # 
+
+01D0 ; 012D ;  MA      # ( ǐ → ĭ ) LATIN SMALL LETTER I WITH CARON → LATIN SMALL LETTER I WITH BREVE     # 
+
+01CF ; 012C ;  MA      # ( Ǐ → Ĭ ) LATIN CAPITAL LETTER I WITH CARON → LATIN CAPITAL LETTER I WITH BREVE # 
+
+0268 ; 0069 0335 ;     MA      # ( ɨ → i̵ ) LATIN SMALL LETTER I WITH STROKE → LATIN SMALL LETTER I, COMBINING SHORT STROKE OVERLAY      # 
+
+2171 ; 0069 0069 ;     MA      # ( ⅱ → ii ) SMALL ROMAN NUMERAL TWO → LATIN SMALL LETTER I, LATIN SMALL LETTER I # 
+
+2172 ; 0069 0069 0069 ;        MA      # ( ⅲ → iii ) SMALL ROMAN NUMERAL THREE → LATIN SMALL LETTER I, LATIN SMALL LETTER I, LATIN SMALL LETTER I        # 
+
+0133 ; 0069 006A ;     MA      # ( ij → ij ) LATIN SMALL LIGATURE IJ → LATIN SMALL LETTER I, LATIN SMALL LETTER J  # 
+
+0132 ; 0049 004A ;     MA      # ( IJ → IJ ) LATIN CAPITAL LIGATURE IJ → LATIN CAPITAL LETTER I, LATIN CAPITAL LETTER J    # 
+
+2173 ; 0069 0076 ;     MA      # ( ⅳ → iv ) SMALL ROMAN NUMERAL FOUR → LATIN SMALL LETTER I, LATIN SMALL LETTER V        # 
+
+2163 ; 0049 0056 ;     MA      # ( Ⅳ → IV ) ROMAN NUMERAL FOUR → LATIN CAPITAL LETTER I, LATIN CAPITAL LETTER V  # 
+
+2178 ; 0069 0078 ;     MA      # ( ⅸ → ix ) SMALL ROMAN NUMERAL NINE → LATIN SMALL LETTER I, LATIN SMALL LETTER X        # 
+
+2168 ; 0049 0058 ;     MA      # ( Ⅸ → IX ) ROMAN NUMERAL NINE → LATIN CAPITAL LETTER I, LATIN CAPITAL LETTER X  # 
+
+FF4A ; 006A ;  MA      # ( j → j ) FULLWIDTH LATIN SMALL LETTER J → LATIN SMALL LETTER J # →ј→
+2149 ; 006A ;  MA      # ( ⅉ → j ) DOUBLE-STRUCK ITALIC SMALL J → LATIN SMALL LETTER J   # 
+1D423 ;        006A ;  MA      # ( 𝐣 → j ) MATHEMATICAL BOLD SMALL J → LATIN SMALL LETTER J     # 
+1D457 ;        006A ;  MA      # ( 𝑗 → j ) MATHEMATICAL ITALIC SMALL J → LATIN SMALL LETTER J   # 
+1D48B ;        006A ;  MA      # ( 𝒋 → j ) MATHEMATICAL BOLD ITALIC SMALL J → LATIN SMALL LETTER J      # 
+1D4BF ;        006A ;  MA      # ( 𝒿 → j ) MATHEMATICAL SCRIPT SMALL J → LATIN SMALL LETTER J   # 
+1D4F3 ;        006A ;  MA      # ( 𝓳 → j ) MATHEMATICAL BOLD SCRIPT SMALL J → LATIN SMALL LETTER J      # 
+1D527 ;        006A ;  MA      # ( 𝔧 → j ) MATHEMATICAL FRAKTUR SMALL J → LATIN SMALL LETTER J  # 
+1D55B ;        006A ;  MA      # ( 𝕛 → j ) MATHEMATICAL DOUBLE-STRUCK SMALL J → LATIN SMALL LETTER J    # 
+1D58F ;        006A ;  MA      # ( 𝖏 → j ) MATHEMATICAL BOLD FRAKTUR SMALL J → LATIN SMALL LETTER J     # 
+1D5C3 ;        006A ;  MA      # ( 𝗃 → j ) MATHEMATICAL SANS-SERIF SMALL J → LATIN SMALL LETTER J       # 
+1D5F7 ;        006A ;  MA      # ( 𝗷 → j ) MATHEMATICAL SANS-SERIF BOLD SMALL J → LATIN SMALL LETTER J  # 
+1D62B ;        006A ;  MA      # ( 𝘫 → j ) MATHEMATICAL SANS-SERIF ITALIC SMALL J → LATIN SMALL LETTER J        # 
+1D65F ;        006A ;  MA      # ( 𝙟 → j ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J → LATIN SMALL LETTER J   # 
+1D693 ;        006A ;  MA      # ( 𝚓 → j ) MATHEMATICAL MONOSPACE SMALL J → LATIN SMALL LETTER J        # 
+0237 ; 006A ;  MA      # ( ȷ → j ) LATIN SMALL LETTER DOTLESS J → LATIN SMALL LETTER J    # →յ→
+1D6A5 ;        006A ;  MA      # ( 𝚥 → j ) MATHEMATICAL ITALIC SMALL DOTLESS J → LATIN SMALL LETTER J   # →ȷ→→յ→
+03F3 ; 006A ;  MA      # ( ϳ → j ) GREEK LETTER YOT → LATIN SMALL LETTER J        # 
+0458 ; 006A ;  MA      # ( ј → j ) CYRILLIC SMALL LETTER JE → LATIN SMALL LETTER J        # 
+0575 ; 006A ;  MA      # ( յ → j ) ARMENIAN SMALL LETTER YI → LATIN SMALL LETTER J        # 
+
+FF2A ; 004A ;  MA      # ( J → J ) FULLWIDTH LATIN CAPITAL LETTER J → LATIN CAPITAL LETTER J     # →Ј→
+1D409 ;        004A ;  MA      # ( 𝐉 → J ) MATHEMATICAL BOLD CAPITAL J → LATIN CAPITAL LETTER J # 
+1D43D ;        004A ;  MA      # ( 𝐽 → J ) MATHEMATICAL ITALIC CAPITAL J → LATIN CAPITAL LETTER J       # 
+1D471 ;        004A ;  MA      # ( 𝑱 → J ) MATHEMATICAL BOLD ITALIC CAPITAL J → LATIN CAPITAL LETTER J  # 
+1D4A5 ;        004A ;  MA      # ( 𝒥 → J ) MATHEMATICAL SCRIPT CAPITAL J → LATIN CAPITAL LETTER J       # 
+1D4D9 ;        004A ;  MA      # ( 𝓙 → J ) MATHEMATICAL BOLD SCRIPT CAPITAL J → LATIN CAPITAL LETTER J  # 
+1D50D ;        004A ;  MA      # ( 𝔍 → J ) MATHEMATICAL FRAKTUR CAPITAL J → LATIN CAPITAL LETTER J      # 
+1D541 ;        004A ;  MA      # ( 𝕁 → J ) MATHEMATICAL DOUBLE-STRUCK CAPITAL J → LATIN CAPITAL LETTER J        # 
+1D575 ;        004A ;  MA      # ( 𝕵 → J ) MATHEMATICAL BOLD FRAKTUR CAPITAL J → LATIN CAPITAL LETTER J # 
+1D5A9 ;        004A ;  MA      # ( 𝖩 → J ) MATHEMATICAL SANS-SERIF CAPITAL J → LATIN CAPITAL LETTER J   # 
+1D5DD ;        004A ;  MA      # ( 𝗝 → J ) MATHEMATICAL SANS-SERIF BOLD CAPITAL J → LATIN CAPITAL LETTER J      # 
+1D611 ;        004A ;  MA      # ( 𝘑 → J ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL J → LATIN CAPITAL LETTER J    # 
+1D645 ;        004A ;  MA      # ( 𝙅 → J ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J → LATIN CAPITAL LETTER J       # 
+1D679 ;        004A ;  MA      # ( 𝙹 → J ) MATHEMATICAL MONOSPACE CAPITAL J → LATIN CAPITAL LETTER J    # 
+0408 ; 004A ;  MA      # ( Ј → J ) CYRILLIC CAPITAL LETTER JE → LATIN CAPITAL LETTER J    # 
+13AB ; 004A ;  MA      # ( Ꭻ → J ) CHEROKEE LETTER GU → LATIN CAPITAL LETTER J   # 
+13E7 ; 004A ;  MA      # ( Ꮷ → J ) CHEROKEE LETTER TSU → LATIN CAPITAL LETTER J  # 
+148D ; 004A ;  MA      # ( ᒍ → J ) CANADIAN SYLLABICS CO → LATIN CAPITAL LETTER J        # 
+A4D9 ; 004A ;  MA      # ( ꓙ → J ) LISU LETTER JA → LATIN CAPITAL LETTER J       # 
+
+1499 ; 004A 00B7 ;     MA      # ( ᒙ → J· ) CANADIAN SYLLABICS WEST-CREE CWO → LATIN CAPITAL LETTER J, MIDDLE DOT       # →ᒍᐧ→
+
+1D424 ;        006B ;  MA      # ( 𝐤 → k ) MATHEMATICAL BOLD SMALL K → LATIN SMALL LETTER K     # 
+1D458 ;        006B ;  MA      # ( 𝑘 → k ) MATHEMATICAL ITALIC SMALL K → LATIN SMALL LETTER K   # 
+1D48C ;        006B ;  MA      # ( 𝒌 → k ) MATHEMATICAL BOLD ITALIC SMALL K → LATIN SMALL LETTER K      # 
+1D4C0 ;        006B ;  MA      # ( 𝓀 → k ) MATHEMATICAL SCRIPT SMALL K → LATIN SMALL LETTER K   # 
+1D4F4 ;        006B ;  MA      # ( 𝓴 → k ) MATHEMATICAL BOLD SCRIPT SMALL K → LATIN SMALL LETTER K      # 
+1D528 ;        006B ;  MA      # ( 𝔨 → k ) MATHEMATICAL FRAKTUR SMALL K → LATIN SMALL LETTER K  # 
+1D55C ;        006B ;  MA      # ( 𝕜 → k ) MATHEMATICAL DOUBLE-STRUCK SMALL K → LATIN SMALL LETTER K    # 
+1D590 ;        006B ;  MA      # ( 𝖐 → k ) MATHEMATICAL BOLD FRAKTUR SMALL K → LATIN SMALL LETTER K     # 
+1D5C4 ;        006B ;  MA      # ( 𝗄 → k ) MATHEMATICAL SANS-SERIF SMALL K → LATIN SMALL LETTER K       # 
+1D5F8 ;        006B ;  MA      # ( 𝗸 → k ) MATHEMATICAL SANS-SERIF BOLD SMALL K → LATIN SMALL LETTER K  # 
+1D62C ;        006B ;  MA      # ( 𝘬 → k ) MATHEMATICAL SANS-SERIF ITALIC SMALL K → LATIN SMALL LETTER K        # 
+1D660 ;        006B ;  MA      # ( 𝙠 → k ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K → LATIN SMALL LETTER K   # 
+1D694 ;        006B ;  MA      # ( 𝚔 → k ) MATHEMATICAL MONOSPACE SMALL K → LATIN SMALL LETTER K        # 
+1D0B ; 006B ;  MA      # ( ᴋ → k ) LATIN LETTER SMALL CAPITAL K → LATIN SMALL LETTER K   # →к→
+0138 ; 006B ;  MA      # ( ĸ → k ) LATIN SMALL LETTER KRA → LATIN SMALL LETTER K  # →к→
+03BA ; 006B ;  MA      # ( κ → k ) GREEK SMALL LETTER KAPPA → LATIN SMALL LETTER K        # →к→
+03F0 ; 006B ;  MA      # ( ϰ → k ) GREEK KAPPA SYMBOL → LATIN SMALL LETTER K      # →κ→→к→
+1D6CB ;        006B ;  MA      # ( 𝛋 → k ) MATHEMATICAL BOLD SMALL KAPPA → LATIN SMALL LETTER K # →κ→→к→
+1D6DE ;        006B ;  MA      # ( 𝛞 → k ) MATHEMATICAL BOLD KAPPA SYMBOL → LATIN SMALL LETTER K        # →κ→→к→
+1D705 ;        006B ;  MA      # ( 𝜅 → k ) MATHEMATICAL ITALIC SMALL KAPPA → LATIN SMALL LETTER K       # →κ→→к→
+1D718 ;        006B ;  MA      # ( 𝜘 → k ) MATHEMATICAL ITALIC KAPPA SYMBOL → LATIN SMALL LETTER K      # →κ→→к→
+1D73F ;        006B ;  MA      # ( 𝜿 → k ) MATHEMATICAL BOLD ITALIC SMALL KAPPA → LATIN SMALL LETTER K  # →κ→→к→
+1D752 ;        006B ;  MA      # ( 𝝒 → k ) MATHEMATICAL BOLD ITALIC KAPPA SYMBOL → LATIN SMALL LETTER K # →κ→→к→
+1D779 ;        006B ;  MA      # ( 𝝹 → k ) MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA → LATIN SMALL LETTER K      # →κ→→к→
+1D78C ;        006B ;  MA      # ( 𝞌 → k ) MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL → LATIN SMALL LETTER K     # →κ→→к→
+1D7B3 ;        006B ;  MA      # ( 𝞳 → k ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA → LATIN SMALL LETTER K       # →κ→→к→
+1D7C6 ;        006B ;  MA      # ( 𝟆 → k ) MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL → LATIN SMALL LETTER K      # →κ→→к→
+2C95 ; 006B ;  MA      # ( ⲕ → k ) COPTIC SMALL LETTER KAPA → LATIN SMALL LETTER K       # →κ→→к→
+043A ; 006B ;  MA      # ( к → k ) CYRILLIC SMALL LETTER KA → LATIN SMALL LETTER K        # 
+
+212A ; 004B ;  MA      # ( K → K ) KELVIN SIGN → LATIN CAPITAL LETTER K  # 
+FF2B ; 004B ;  MA      # ( K → K ) FULLWIDTH LATIN CAPITAL LETTER K → LATIN CAPITAL LETTER K     # →Κ→
+1D40A ;        004B ;  MA      # ( 𝐊 → K ) MATHEMATICAL BOLD CAPITAL K → LATIN CAPITAL LETTER K # 
+1D43E ;        004B ;  MA      # ( 𝐾 → K ) MATHEMATICAL ITALIC CAPITAL K → LATIN CAPITAL LETTER K       # 
+1D472 ;        004B ;  MA      # ( 𝑲 → K ) MATHEMATICAL BOLD ITALIC CAPITAL K → LATIN CAPITAL LETTER K  # 
+1D4A6 ;        004B ;  MA      # ( 𝒦 → K ) MATHEMATICAL SCRIPT CAPITAL K → LATIN CAPITAL LETTER K       # 
+1D4DA ;        004B ;  MA      # ( 𝓚 → K ) MATHEMATICAL BOLD SCRIPT CAPITAL K → LATIN CAPITAL LETTER K  # 
+1D50E ;        004B ;  MA      # ( 𝔎 → K ) MATHEMATICAL FRAKTUR CAPITAL K → LATIN CAPITAL LETTER K      # 
+1D542 ;        004B ;  MA      # ( 𝕂 → K ) MATHEMATICAL DOUBLE-STRUCK CAPITAL K → LATIN CAPITAL LETTER K        # 
+1D576 ;        004B ;  MA      # ( 𝕶 → K ) MATHEMATICAL BOLD FRAKTUR CAPITAL K → LATIN CAPITAL LETTER K # 
+1D5AA ;        004B ;  MA      # ( 𝖪 → K ) MATHEMATICAL SANS-SERIF CAPITAL K → LATIN CAPITAL LETTER K   # 
+1D5DE ;        004B ;  MA      # ( 𝗞 → K ) MATHEMATICAL SANS-SERIF BOLD CAPITAL K → LATIN CAPITAL LETTER K      # 
+1D612 ;        004B ;  MA      # ( 𝘒 → K ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL K → LATIN CAPITAL LETTER K    # 
+1D646 ;        004B ;  MA      # ( 𝙆 → K ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K → LATIN CAPITAL LETTER K       # 
+1D67A ;        004B ;  MA      # ( 𝙺 → K ) MATHEMATICAL MONOSPACE CAPITAL K → LATIN CAPITAL LETTER K    # 
+039A ; 004B ;  MA      # ( Κ → K ) GREEK CAPITAL LETTER KAPPA → LATIN CAPITAL LETTER K    # 
+1D6B1 ;        004B ;  MA      # ( 𝚱 → K ) MATHEMATICAL BOLD CAPITAL KAPPA → LATIN CAPITAL LETTER K     # →Κ→
+1D6EB ;        004B ;  MA      # ( 𝛫 → K ) MATHEMATICAL ITALIC CAPITAL KAPPA → LATIN CAPITAL LETTER K   # →Κ→
+1D725 ;        004B ;  MA      # ( 𝜥 → K ) MATHEMATICAL BOLD ITALIC CAPITAL KAPPA → LATIN CAPITAL LETTER K      # →Κ→
+1D75F ;        004B ;  MA      # ( 𝝟 → K ) MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA → LATIN CAPITAL LETTER K  # →Κ→
+1D799 ;        004B ;  MA      # ( 𝞙 → K ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA → LATIN CAPITAL LETTER K   # →Κ→
+2C94 ; 004B ;  MA      # ( Ⲕ → K ) COPTIC CAPITAL LETTER KAPA → LATIN CAPITAL LETTER K   # →Κ→
+041A ; 004B ;  MA      # ( К → K ) CYRILLIC CAPITAL LETTER KA → LATIN CAPITAL LETTER K    # 
+13E6 ; 004B ;  MA      # ( Ꮶ → K ) CHEROKEE LETTER TSO → LATIN CAPITAL LETTER K  # 
+A4D7 ; 004B ;  MA      # ( ꓗ → K ) LISU LETTER KA → LATIN CAPITAL LETTER K       # 
+
+0199 ; 006B 0314 ;     MA      # ( ƙ → k̔ ) LATIN SMALL LETTER K WITH HOOK → LATIN SMALL LETTER K, COMBINING REVERSED COMMA ABOVE        # 
+
+049B ; 006B 0329 ;     MA      # ( қ → k̩ ) CYRILLIC SMALL LETTER KA WITH DESCENDER → LATIN SMALL LETTER K, COMBINING VERTICAL LINE BELOW        # →к̩→
+
+2C69 ; 004B 0329 ;     MA      # ( Ⱪ → K̩ ) LATIN CAPITAL LETTER K WITH DESCENDER → LATIN CAPITAL LETTER K, COMBINING VERTICAL LINE BELOW       # →Қ→→К̩→
+049A ; 004B 0329 ;     MA      # ( Қ → K̩ ) CYRILLIC CAPITAL LETTER KA WITH DESCENDER → LATIN CAPITAL LETTER K, COMBINING VERTICAL LINE BELOW    # →К̩→
+
+049F ; 006B 0335 ;     MA      # ( ҟ → k̵ ) CYRILLIC SMALL LETTER KA WITH STROKE → LATIN SMALL LETTER K, COMBINING SHORT STROKE OVERLAY  # →к̵→
+
+049E ; 004B 0335 ;     MA      # ( Ҟ → K̵ ) CYRILLIC CAPITAL LETTER KA WITH STROKE → LATIN CAPITAL LETTER K, COMBINING SHORT STROKE OVERLAY      # →К̵→
+
+0198 ; 004B 0027 ;     MA      # ( Ƙ → K' ) LATIN CAPITAL LETTER K WITH HOOK → LATIN CAPITAL LETTER K, APOSTROPHE # →Kʽ→
+
+007C ; 006C ;  MA      #* ( | → l ) VERTICAL LINE → LATIN SMALL LETTER L   # 
+2223 ; 006C ;  MA      #* ( ∣ → l ) DIVIDES → LATIN SMALL LETTER L       # →|→
+FFE8 ; 006C ;  MA      #* ( │ → l ) HALFWIDTH FORMS LIGHT VERTICAL → LATIN SMALL LETTER L        # →|→
+0031 ; 006C ;  MA      # ( 1 → l ) DIGIT ONE → LATIN SMALL LETTER L        # 
+1D7CF ;        006C ;  MA      # ( 𝟏 → l ) MATHEMATICAL BOLD DIGIT ONE → LATIN SMALL LETTER L   # →1→
+1D7D9 ;        006C ;  MA      # ( 𝟙 → l ) MATHEMATICAL DOUBLE-STRUCK DIGIT ONE → LATIN SMALL LETTER L  # →1→
+1D7E3 ;        006C ;  MA      # ( 𝟣 → l ) MATHEMATICAL SANS-SERIF DIGIT ONE → LATIN SMALL LETTER L     # →1→
+1D7ED ;        006C ;  MA      # ( 𝟭 → l ) MATHEMATICAL SANS-SERIF BOLD DIGIT ONE → LATIN SMALL LETTER L        # →1→
+1D7F7 ;        006C ;  MA      # ( 𝟷 → l ) MATHEMATICAL MONOSPACE DIGIT ONE → LATIN SMALL LETTER L      # →1→
+0049 ; 006C ;  MA      # ( I → l ) LATIN CAPITAL LETTER I → LATIN SMALL LETTER L   # 
+FF29 ; 006C ;  MA      # ( I → l ) FULLWIDTH LATIN CAPITAL LETTER I → LATIN SMALL LETTER L       # →Ӏ→
+2160 ; 006C ;  MA      # ( Ⅰ → l ) ROMAN NUMERAL ONE → LATIN SMALL LETTER L      # →Ӏ→
+2110 ; 006C ;  MA      # ( ℐ → l ) SCRIPT CAPITAL I → LATIN SMALL LETTER L       # →I→
+2111 ; 006C ;  MA      # ( ℑ → l ) BLACK-LETTER CAPITAL I → LATIN SMALL LETTER L # →I→
+1D408 ;        006C ;  MA      # ( 𝐈 → l ) MATHEMATICAL BOLD CAPITAL I → LATIN SMALL LETTER L   # →I→
+1D43C ;        006C ;  MA      # ( 𝐼 → l ) MATHEMATICAL ITALIC CAPITAL I → LATIN SMALL LETTER L # →I→
+1D470 ;        006C ;  MA      # ( 𝑰 → l ) MATHEMATICAL BOLD ITALIC CAPITAL I → LATIN SMALL LETTER L    # →I→
+1D4D8 ;        006C ;  MA      # ( 𝓘 → l ) MATHEMATICAL BOLD SCRIPT CAPITAL I → LATIN SMALL LETTER L    # →I→
+1D540 ;        006C ;  MA      # ( 𝕀 → l ) MATHEMATICAL DOUBLE-STRUCK CAPITAL I → LATIN SMALL LETTER L  # →I→
+1D574 ;        006C ;  MA      # ( 𝕴 → l ) MATHEMATICAL BOLD FRAKTUR CAPITAL I → LATIN SMALL LETTER L   # →I→
+1D5A8 ;        006C ;  MA      # ( 𝖨 → l ) MATHEMATICAL SANS-SERIF CAPITAL I → LATIN SMALL LETTER L     # →I→
+1D5DC ;        006C ;  MA      # ( 𝗜 → l ) MATHEMATICAL SANS-SERIF BOLD CAPITAL I → LATIN SMALL LETTER L        # →I→
+1D610 ;        006C ;  MA      # ( 𝘐 → l ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL I → LATIN SMALL LETTER L      # →I→
+1D644 ;        006C ;  MA      # ( 𝙄 → l ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I → LATIN SMALL LETTER L # →I→
+1D678 ;        006C ;  MA      # ( 𝙸 → l ) MATHEMATICAL MONOSPACE CAPITAL I → LATIN SMALL LETTER L      # →I→
+0196 ; 006C ;  MA      # ( Ɩ → l ) LATIN CAPITAL LETTER IOTA → LATIN SMALL LETTER L       # 
+FF4C ; 006C ;  MA      # ( l → l ) FULLWIDTH LATIN SMALL LETTER L → LATIN SMALL LETTER L # →Ⅰ→→Ӏ→
+217C ; 006C ;  MA      # ( ⅼ → l ) SMALL ROMAN NUMERAL FIFTY → LATIN SMALL LETTER L      # 
+2113 ; 006C ;  MA      # ( ℓ → l ) SCRIPT SMALL L → LATIN SMALL LETTER L # 
+1D425 ;        006C ;  MA      # ( 𝐥 → l ) MATHEMATICAL BOLD SMALL L → LATIN SMALL LETTER L     # 
+1D459 ;        006C ;  MA      # ( 𝑙 → l ) MATHEMATICAL ITALIC SMALL L → LATIN SMALL LETTER L   # 
+1D48D ;        006C ;  MA      # ( 𝒍 → l ) MATHEMATICAL BOLD ITALIC SMALL L → LATIN SMALL LETTER L      # 
+1D4C1 ;        006C ;  MA      # ( 𝓁 → l ) MATHEMATICAL SCRIPT SMALL L → LATIN SMALL LETTER L   # 
+1D4F5 ;        006C ;  MA      # ( 𝓵 → l ) MATHEMATICAL BOLD SCRIPT SMALL L → LATIN SMALL LETTER L      # 
+1D529 ;        006C ;  MA      # ( 𝔩 → l ) MATHEMATICAL FRAKTUR SMALL L → LATIN SMALL LETTER L  # 
+1D55D ;        006C ;  MA      # ( 𝕝 → l ) MATHEMATICAL DOUBLE-STRUCK SMALL L → LATIN SMALL LETTER L    # 
+1D591 ;        006C ;  MA      # ( 𝖑 → l ) MATHEMATICAL BOLD FRAKTUR SMALL L → LATIN SMALL LETTER L     # 
+1D5C5 ;        006C ;  MA      # ( 𝗅 → l ) MATHEMATICAL SANS-SERIF SMALL L → LATIN SMALL LETTER L       # 
+1D5F9 ;        006C ;  MA      # ( 𝗹 → l ) MATHEMATICAL SANS-SERIF BOLD SMALL L → LATIN SMALL LETTER L  # 
+1D62D ;        006C ;  MA      # ( 𝘭 → l ) MATHEMATICAL SANS-SERIF ITALIC SMALL L → LATIN SMALL LETTER L        # 
+1D661 ;        006C ;  MA      # ( 𝙡 → l ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L → LATIN SMALL LETTER L   # 
+1D695 ;        006C ;  MA      # ( 𝚕 → l ) MATHEMATICAL MONOSPACE SMALL L → LATIN SMALL LETTER L        # 
+01C0 ; 006C ;  MA      # ( ǀ → l ) LATIN LETTER DENTAL CLICK → LATIN SMALL LETTER L       # 
+0399 ; 006C ;  MA      # ( Ι → l ) GREEK CAPITAL LETTER IOTA → LATIN SMALL LETTER L       # 
+1D6B0 ;        006C ;  MA      # ( 𝚰 → l ) MATHEMATICAL BOLD CAPITAL IOTA → LATIN SMALL LETTER L        # →Ι→
+1D6EA ;        006C ;  MA      # ( 𝛪 → l ) MATHEMATICAL ITALIC CAPITAL IOTA → LATIN SMALL LETTER L      # →Ι→
+1D724 ;        006C ;  MA      # ( 𝜤 → l ) MATHEMATICAL BOLD ITALIC CAPITAL IOTA → LATIN SMALL LETTER L # →Ι→
+1D75E ;        006C ;  MA      # ( 𝝞 → l ) MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA → LATIN SMALL LETTER L     # →Ι→
+1D798 ;        006C ;  MA      # ( 𝞘 → l ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA → LATIN SMALL LETTER L      # →Ι→
+2C92 ; 006C ;  MA      # ( Ⲓ → l ) COPTIC CAPITAL LETTER IAUDA → LATIN SMALL LETTER L    # →Ӏ→
+0406 ; 006C ;  MA      # ( І → l ) CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I → LATIN SMALL LETTER L        # 
+04C0 ; 006C ;  MA      # ( Ӏ → l ) CYRILLIC LETTER PALOCHKA → LATIN SMALL LETTER L        # 
+05D5 ; 006C ;  MA      # ( ‎ו‎ → l ) HEBREW LETTER VAV → LATIN SMALL LETTER L # 
+05DF ; 006C ;  MA      # ( ‎ן‎ → l ) HEBREW LETTER FINAL NUN → LATIN SMALL LETTER L   # 
+07CA ; 006C ;  MA      # ( ‎ߊ‎ → l ) NKO LETTER A → LATIN SMALL LETTER L      # →∣→→|→
+2D4F ; 006C ;  MA      # ( ⵏ → l ) TIFINAGH LETTER YAN → LATIN SMALL LETTER L    # →Ӏ→
+A4F2 ; 006C ;  MA      # ( ꓲ → l ) LISU LETTER I → LATIN SMALL LETTER L  # →I→
+
+216C ; 004C ;  MA      # ( Ⅼ → L ) ROMAN NUMERAL FIFTY → LATIN CAPITAL LETTER L  # 
+2112 ; 004C ;  MA      # ( ℒ → L ) SCRIPT CAPITAL L → LATIN CAPITAL LETTER L     # 
+1D40B ;        004C ;  MA      # ( 𝐋 → L ) MATHEMATICAL BOLD CAPITAL L → LATIN CAPITAL LETTER L # 
+1D43F ;        004C ;  MA      # ( 𝐿 → L ) MATHEMATICAL ITALIC CAPITAL L → LATIN CAPITAL LETTER L       # 
+1D473 ;        004C ;  MA      # ( 𝑳 → L ) MATHEMATICAL BOLD ITALIC CAPITAL L → LATIN CAPITAL LETTER L  # 
+1D4DB ;        004C ;  MA      # ( 𝓛 → L ) MATHEMATICAL BOLD SCRIPT CAPITAL L → LATIN CAPITAL LETTER L  # 
+1D50F ;        004C ;  MA      # ( 𝔏 → L ) MATHEMATICAL FRAKTUR CAPITAL L → LATIN CAPITAL LETTER L      # 
+1D543 ;        004C ;  MA      # ( 𝕃 → L ) MATHEMATICAL DOUBLE-STRUCK CAPITAL L → LATIN CAPITAL LETTER L        # 
+1D577 ;        004C ;  MA      # ( 𝕷 → L ) MATHEMATICAL BOLD FRAKTUR CAPITAL L → LATIN CAPITAL LETTER L # 
+1D5AB ;        004C ;  MA      # ( 𝖫 → L ) MATHEMATICAL SANS-SERIF CAPITAL L → LATIN CAPITAL LETTER L   # 
+1D5DF ;        004C ;  MA      # ( 𝗟 → L ) MATHEMATICAL SANS-SERIF BOLD CAPITAL L → LATIN CAPITAL LETTER L      # 
+1D613 ;        004C ;  MA      # ( 𝘓 → L ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL L → LATIN CAPITAL LETTER L    # 
+1D647 ;        004C ;  MA      # ( 𝙇 → L ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L → LATIN CAPITAL LETTER L       # 
+1D67B ;        004C ;  MA      # ( 𝙻 → L ) MATHEMATICAL MONOSPACE CAPITAL L → LATIN CAPITAL LETTER L    # 
+2CD0 ; 004C ;  MA      # ( Ⳑ → L ) COPTIC CAPITAL LETTER L-SHAPED HA → LATIN CAPITAL LETTER L    # 
+13DE ; 004C ;  MA      # ( Ꮮ → L ) CHEROKEE LETTER TLE → LATIN CAPITAL LETTER L  # 
+14AA ; 004C ;  MA      # ( ᒪ → L ) CANADIAN SYLLABICS MA → LATIN CAPITAL LETTER L        # 
+A4E1 ; 004C ;  MA      # ( ꓡ → L ) LISU LETTER LA → LATIN CAPITAL LETTER L       # 
+
+0142 ; 006C 0338 ;     MA      # ( ł → l̸ ) LATIN SMALL LETTER L WITH STROKE → LATIN SMALL LETTER L, COMBINING LONG SOLIDUS OVERLAY      # →l̷→
+
+0141 ; 004C 0338 ;     MA      # ( Ł → L̸ ) LATIN CAPITAL LETTER L WITH STROKE → LATIN CAPITAL LETTER L, COMBINING LONG SOLIDUS OVERLAY  # →L̷→
+
+026D ; 006C 0328 ;     MA      # ( ɭ → l̨ ) LATIN SMALL LETTER L WITH RETROFLEX HOOK → LATIN SMALL LETTER L, COMBINING OGONEK    # →l̢→
+
+026B ; 006C 0334 ;     MA      # ( ɫ → l̴ ) LATIN SMALL LETTER L WITH MIDDLE TILDE → LATIN SMALL LETTER L, COMBINING TILDE OVERLAY       # 
+
+0197 ; 006C 0335 ;     MA      # ( Ɨ → l̵ ) LATIN CAPITAL LETTER I WITH STROKE → LATIN SMALL LETTER L, COMBINING SHORT STROKE OVERLAY    # →ƚ→
+019A ; 006C 0335 ;     MA      # ( ƚ → l̵ ) LATIN SMALL LETTER L WITH BAR → LATIN SMALL LETTER L, COMBINING SHORT STROKE OVERLAY # 
+
+0140 ; 006C 00B7 ;     MA      # ( ŀ → l· ) LATIN SMALL LETTER L WITH MIDDLE DOT → LATIN SMALL LETTER L, MIDDLE DOT      # 
+013F ; 006C 00B7 ;     MA      # ( Ŀ → l· ) LATIN CAPITAL LETTER L WITH MIDDLE DOT → LATIN SMALL LETTER L, MIDDLE DOT    # →L·→→ᒪ·→→ᒪᐧ→→ᒷ→→1ᐧ→
+14B7 ; 006C 00B7 ;     MA      # ( ᒷ → l· ) CANADIAN SYLLABICS WEST-CREE MWA → LATIN SMALL LETTER L, MIDDLE DOT # →1ᐧ→
+
+1F102 ;        006C 002C ;     MA      #* ( 🄂 → l, ) DIGIT ONE COMMA → LATIN SMALL LETTER L, COMMA      # →1,→
+
+2488 ; 006C 002E ;     MA      #* ( ⒈ → l. ) DIGIT ONE FULL STOP → LATIN SMALL LETTER L, FULL STOP       # →1.→
+
+05F1 ; 006C 0027 ;     MA      # ( ‎ױ‎ → l' ) HEBREW LIGATURE YIDDISH VAV YOD → LATIN SMALL LETTER L, APOSTROPHE      # →‎וי‎→
+
+2493 ; 006C 0032 002E ;        MA      #* ( ⒓ → l2. ) NUMBER TWELVE FULL STOP → LATIN SMALL LETTER L, DIGIT TWO, FULL STOP       # →12.→
+
+33EB ; 006C 0032 65E5 ;        MA      #* ( ㏫ → l2日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE → LATIN SMALL LETTER L, DIGIT TWO, CJK UNIFIED IDEOGRAPH-65E5        # →12日→
+
+32CB ; 006C 0032 6708 ;        MA      #* ( ㋋ → l2月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER → LATIN SMALL LETTER L, DIGIT TWO, CJK UNIFIED IDEOGRAPH-6708  # →12月→
+
+3364 ; 006C 0032 70B9 ;        MA      #* ( ㍤ → l2点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE → LATIN SMALL LETTER L, DIGIT TWO, CJK UNIFIED IDEOGRAPH-70B9       # →12点→
+
+2494 ; 006C 0033 002E ;        MA      #* ( ⒔ → l3. ) NUMBER THIRTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT THREE, FULL STOP   # →13.→
+
+33EC ; 006C 0033 65E5 ;        MA      #* ( ㏬ → l3日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN → LATIN SMALL LETTER L, DIGIT THREE, CJK UNIFIED IDEOGRAPH-65E5    # →13日→
+
+3365 ; 006C 0033 70B9 ;        MA      #* ( ㍥ → l3点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN → LATIN SMALL LETTER L, DIGIT THREE, CJK UNIFIED IDEOGRAPH-70B9   # →13点→
+
+2495 ; 006C 0034 002E ;        MA      #* ( ⒕ → l4. ) NUMBER FOURTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT FOUR, FULL STOP    # →14.→
+
+33ED ; 006C 0034 65E5 ;        MA      #* ( ㏭ → l4日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN → LATIN SMALL LETTER L, DIGIT FOUR, CJK UNIFIED IDEOGRAPH-65E5     # →14日→
+
+3366 ; 006C 0034 70B9 ;        MA      #* ( ㍦ → l4点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN → LATIN SMALL LETTER L, DIGIT FOUR, CJK UNIFIED IDEOGRAPH-70B9    # →14点→
+
+2496 ; 006C 0035 002E ;        MA      #* ( ⒖ → l5. ) NUMBER FIFTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT FIVE, FULL STOP     # →15.→
+
+33EE ; 006C 0035 65E5 ;        MA      #* ( ㏮ → l5日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN → LATIN SMALL LETTER L, DIGIT FIVE, CJK UNIFIED IDEOGRAPH-65E5      # →15日→
+
+3367 ; 006C 0035 70B9 ;        MA      #* ( ㍧ → l5点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN → LATIN SMALL LETTER L, DIGIT FIVE, CJK UNIFIED IDEOGRAPH-70B9     # →15点→
+
+2497 ; 006C 0036 002E ;        MA      #* ( ⒗ → l6. ) NUMBER SIXTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT SIX, FULL STOP      # →16.→
+
+33EF ; 006C 0036 65E5 ;        MA      #* ( ㏯ → l6日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN → LATIN SMALL LETTER L, DIGIT SIX, CJK UNIFIED IDEOGRAPH-65E5       # →16日→
+
+3368 ; 006C 0036 70B9 ;        MA      #* ( ㍨ → l6点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN → LATIN SMALL LETTER L, DIGIT SIX, CJK UNIFIED IDEOGRAPH-70B9      # →16点→
+
+2498 ; 006C 0037 002E ;        MA      #* ( ⒘ → l7. ) NUMBER SEVENTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT SEVEN, FULL STOP  # →17.→
+
+33F0 ; 006C 0037 65E5 ;        MA      #* ( ㏰ → l7日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN → LATIN SMALL LETTER L, DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-65E5   # →17日→
+
+3369 ; 006C 0037 70B9 ;        MA      #* ( ㍩ → l7点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN → LATIN SMALL LETTER L, DIGIT SEVEN, CJK UNIFIED IDEOGRAPH-70B9  # →17点→
+
+2499 ; 006C 0038 002E ;        MA      #* ( ⒙ → l8. ) NUMBER EIGHTEEN FULL STOP → LATIN SMALL LETTER L, DIGIT EIGHT, FULL STOP   # →18.→
+
+33F1 ; 006C 0038 65E5 ;        MA      #* ( ㏱ → l8日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN → LATIN SMALL LETTER L, DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-65E5    # →18日→
+
+336A ; 006C 0038 70B9 ;        MA      #* ( ㍪ → l8点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN → LATIN SMALL LETTER L, DIGIT EIGHT, CJK UNIFIED IDEOGRAPH-70B9   # →18点→
+
+249A ; 006C 0039 002E ;        MA      #* ( ⒚ → l9. ) NUMBER NINETEEN FULL STOP → LATIN SMALL LETTER L, DIGIT NINE, FULL STOP    # →19.→
+
+33F2 ; 006C 0039 65E5 ;        MA      #* ( ㏲ → l9日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN → LATIN SMALL LETTER L, DIGIT NINE, CJK UNIFIED IDEOGRAPH-65E5     # →19日→
+
+336B ; 006C 0039 70B9 ;        MA      #* ( ㍫ → l9点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN → LATIN SMALL LETTER L, DIGIT NINE, CJK UNIFIED IDEOGRAPH-70B9    # →19点→
+
+01C9 ; 006C 006A ;     MA      # ( lj → lj ) LATIN SMALL LETTER LJ → LATIN SMALL LETTER L, LATIN SMALL LETTER J    # 
+
+01C8 ; 004C 006A ;     MA      # ( Lj → Lj ) LATIN CAPITAL LETTER L WITH SMALL LETTER J → LATIN CAPITAL LETTER L, LATIN SMALL LETTER J     # 
+
+01C7 ; 004C 004A ;     MA      # ( LJ → LJ ) LATIN CAPITAL LETTER LJ → LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER J      # 
+
+2016 ; 006C 006C ;     MA      #* ( ‖ → ll ) DOUBLE VERTICAL LINE → LATIN SMALL LETTER L, LATIN SMALL LETTER L   # →∥→→||→
+2225 ; 006C 006C ;     MA      #* ( ∥ → ll ) PARALLEL TO → LATIN SMALL LETTER L, LATIN SMALL LETTER L    # →||→
+2161 ; 006C 006C ;     MA      # ( Ⅱ → ll ) ROMAN NUMERAL TWO → LATIN SMALL LETTER L, LATIN SMALL LETTER L       # →II→
+01C1 ; 006C 006C ;     MA      # ( ǁ → ll ) LATIN LETTER LATERAL CLICK → LATIN SMALL LETTER L, LATIN SMALL LETTER L       # →‖→→∥→→||→
+05F0 ; 006C 006C ;     MA      # ( ‎װ‎ → ll ) HEBREW LIGATURE YIDDISH DOUBLE VAV → LATIN SMALL LETTER L, LATIN SMALL LETTER L # →‎וו‎→
+
+2492 ; 006C 006C 002E ;        MA      #* ( ⒒ → ll. ) NUMBER ELEVEN FULL STOP → LATIN SMALL LETTER L, LATIN SMALL LETTER L, FULL STOP    # →11.→
+
+2162 ; 006C 006C 006C ;        MA      # ( Ⅲ → lll ) ROMAN NUMERAL THREE → LATIN SMALL LETTER L, LATIN SMALL LETTER L, LATIN SMALL LETTER L      # →III→
+
+33EA ; 006C 006C 65E5 ;        MA      #* ( ㏪ → ll日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN → LATIN SMALL LETTER L, LATIN SMALL LETTER L, CJK UNIFIED IDEOGRAPH-65E5     # →11日→
+
+32CA ; 006C 006C 6708 ;        MA      #* ( ㋊ → ll月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER → LATIN SMALL LETTER L, LATIN SMALL LETTER L, CJK UNIFIED IDEOGRAPH-6708       # →11月→
+
+3363 ; 006C 006C 70B9 ;        MA      #* ( ㍣ → ll点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN → LATIN SMALL LETTER L, LATIN SMALL LETTER L, CJK UNIFIED IDEOGRAPH-70B9    # →11点→
+
+2491 ; 006C 004F 002E ;        MA      #* ( ⒑ → lO. ) NUMBER TEN FULL STOP → LATIN SMALL LETTER L, LATIN CAPITAL LETTER O, FULL STOP     # →10.→
+
+33E9 ; 006C 004F 65E5 ;        MA      #* ( ㏩ → lO日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN → LATIN SMALL LETTER L, LATIN CAPITAL LETTER O, CJK UNIFIED IDEOGRAPH-65E5      # →10日→
+
+32C9 ; 006C 004F 6708 ;        MA      #* ( ㋉ → lO月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER → LATIN SMALL LETTER L, LATIN CAPITAL LETTER O, CJK UNIFIED IDEOGRAPH-6708      # →10月→
+
+3362 ; 006C 004F 70B9 ;        MA      #* ( ㍢ → lO点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN → LATIN SMALL LETTER L, LATIN CAPITAL LETTER O, CJK UNIFIED IDEOGRAPH-70B9     # →10点→
+
+33E0 ; 006C 65E5 ;     MA      #* ( ㏠ → l日 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE → LATIN SMALL LETTER L, CJK UNIFIED IDEOGRAPH-65E5       # →1日→
+
+32C0 ; 006C 6708 ;     MA      #* ( ㋀ → l月 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY → LATIN SMALL LETTER L, CJK UNIFIED IDEOGRAPH-6708       # →1月→
+
+3359 ; 006C 70B9 ;     MA      #* ( ㍙ → l点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE → LATIN SMALL LETTER L, CJK UNIFIED IDEOGRAPH-70B9      # →1点→
+
+2CD1 ; 029F ;  MA      # ( ⳑ → ʟ ) COPTIC SMALL LETTER L-SHAPED HA → LATIN LETTER SMALL CAPITAL L       # 
+
+FF2D ; 004D ;  MA      # ( M → M ) FULLWIDTH LATIN CAPITAL LETTER M → LATIN CAPITAL LETTER M     # →Μ→
+216F ; 004D ;  MA      # ( Ⅿ → M ) ROMAN NUMERAL ONE THOUSAND → LATIN CAPITAL LETTER M   # 
+2133 ; 004D ;  MA      # ( ℳ → M ) SCRIPT CAPITAL M → LATIN CAPITAL LETTER M     # 
+1D40C ;        004D ;  MA      # ( 𝐌 → M ) MATHEMATICAL BOLD CAPITAL M → LATIN CAPITAL LETTER M # 
+1D440 ;        004D ;  MA      # ( 𝑀 → M ) MATHEMATICAL ITALIC CAPITAL M → LATIN CAPITAL LETTER M       # 
+1D474 ;        004D ;  MA      # ( 𝑴 → M ) MATHEMATICAL BOLD ITALIC CAPITAL M → LATIN CAPITAL LETTER M  # 
+1D4DC ;        004D ;  MA      # ( 𝓜 → M ) MATHEMATICAL BOLD SCRIPT CAPITAL M → LATIN CAPITAL LETTER M  # 
+1D510 ;        004D ;  MA      # ( 𝔐 → M ) MATHEMATICAL FRAKTUR CAPITAL M → LATIN CAPITAL LETTER M      # 
+1D544 ;        004D ;  MA      # ( 𝕄 → M ) MATHEMATICAL DOUBLE-STRUCK CAPITAL M → LATIN CAPITAL LETTER M        # 
+1D578 ;        004D ;  MA      # ( 𝕸 → M ) MATHEMATICAL BOLD FRAKTUR CAPITAL M → LATIN CAPITAL LETTER M # 
+1D5AC ;        004D ;  MA      # ( 𝖬 → M ) MATHEMATICAL SANS-SERIF CAPITAL M → LATIN CAPITAL LETTER M   # 
+1D5E0 ;        004D ;  MA      # ( 𝗠 → M ) MATHEMATICAL SANS-SERIF BOLD CAPITAL M → LATIN CAPITAL LETTER M      # 
+1D614 ;        004D ;  MA      # ( 𝘔 → M ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL M → LATIN CAPITAL LETTER M    # 
+1D648 ;        004D ;  MA      # ( 𝙈 → M ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M → LATIN CAPITAL LETTER M       # 
+1D67C ;        004D ;  MA      # ( 𝙼 → M ) MATHEMATICAL MONOSPACE CAPITAL M → LATIN CAPITAL LETTER M    # 
+039C ; 004D ;  MA      # ( Μ → M ) GREEK CAPITAL LETTER MU → LATIN CAPITAL LETTER M       # 
+1D6B3 ;        004D ;  MA      # ( 𝚳 → M ) MATHEMATICAL BOLD CAPITAL MU → LATIN CAPITAL LETTER M        # →Μ→
+1D6ED ;        004D ;  MA      # ( 𝛭 → M ) MATHEMATICAL ITALIC CAPITAL MU → LATIN CAPITAL LETTER M      # →Μ→
+1D727 ;        004D ;  MA      # ( 𝜧 → M ) MATHEMATICAL BOLD ITALIC CAPITAL MU → LATIN CAPITAL LETTER M # →Μ→
+1D761 ;        004D ;  MA      # ( 𝝡 → M ) MATHEMATICAL SANS-SERIF BOLD CAPITAL MU → LATIN CAPITAL LETTER M     # →Μ→
+1D79B ;        004D ;  MA      # ( 𝞛 → M ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU → LATIN CAPITAL LETTER M      # →Μ→
+03FA ; 004D ;  MA      # ( Ϻ → M ) GREEK CAPITAL LETTER SAN → LATIN CAPITAL LETTER M      # 
+2C98 ; 004D ;  MA      # ( Ⲙ → M ) COPTIC CAPITAL LETTER MI → LATIN CAPITAL LETTER M     # 
+041C ; 004D ;  MA      # ( М → M ) CYRILLIC CAPITAL LETTER EM → LATIN CAPITAL LETTER M    # 
+13B7 ; 004D ;  MA      # ( Ꮇ → M ) CHEROKEE LETTER LU → LATIN CAPITAL LETTER M   # 
+15F0 ; 004D ;  MA      # ( ᗰ → M ) CANADIAN SYLLABICS CARRIER GO → LATIN CAPITAL LETTER M        # 
+A4DF ; 004D ;  MA      # ( ꓟ → M ) LISU LETTER MA → LATIN CAPITAL LETTER M       # 
+
+04CD ; 004D 0326 ;     MA      # ( Ӎ → M̦ ) CYRILLIC CAPITAL LETTER EM WITH TAIL → LATIN CAPITAL LETTER M, COMBINING COMMA BELOW # →М̡→
+
+043C ; 1D0D ;  MA      # ( м → ᴍ ) CYRILLIC SMALL LETTER EM → LATIN LETTER SMALL CAPITAL M      # 
+
+04CE ; 1D0D 0326 ;     MA      # ( ӎ → ᴍ̦ ) CYRILLIC SMALL LETTER EM WITH TAIL → LATIN LETTER SMALL CAPITAL M, COMBINING COMMA BELOW   # →м̡→
+
+1D427 ;        006E ;  MA      # ( 𝐧 → n ) MATHEMATICAL BOLD SMALL N → LATIN SMALL LETTER N     # 
+1D45B ;        006E ;  MA      # ( 𝑛 → n ) MATHEMATICAL ITALIC SMALL N → LATIN SMALL LETTER N   # 
+1D48F ;        006E ;  MA      # ( 𝒏 → n ) MATHEMATICAL BOLD ITALIC SMALL N → LATIN SMALL LETTER N      # 
+1D4C3 ;        006E ;  MA      # ( 𝓃 → n ) MATHEMATICAL SCRIPT SMALL N → LATIN SMALL LETTER N   # 
+1D4F7 ;        006E ;  MA      # ( 𝓷 → n ) MATHEMATICAL BOLD SCRIPT SMALL N → LATIN SMALL LETTER N      # 
+1D52B ;        006E ;  MA      # ( 𝔫 → n ) MATHEMATICAL FRAKTUR SMALL N → LATIN SMALL LETTER N  # 
+1D55F ;        006E ;  MA      # ( 𝕟 → n ) MATHEMATICAL DOUBLE-STRUCK SMALL N → LATIN SMALL LETTER N    # 
+1D593 ;        006E ;  MA      # ( 𝖓 → n ) MATHEMATICAL BOLD FRAKTUR SMALL N → LATIN SMALL LETTER N     # 
+1D5C7 ;        006E ;  MA      # ( 𝗇 → n ) MATHEMATICAL SANS-SERIF SMALL N → LATIN SMALL LETTER N       # 
+1D5FB ;        006E ;  MA      # ( 𝗻 → n ) MATHEMATICAL SANS-SERIF BOLD SMALL N → LATIN SMALL LETTER N  # 
+1D62F ;        006E ;  MA      # ( 𝘯 → n ) MATHEMATICAL SANS-SERIF ITALIC SMALL N → LATIN SMALL LETTER N        # 
+1D663 ;        006E ;  MA      # ( 𝙣 → n ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N → LATIN SMALL LETTER N   # 
+1D697 ;        006E ;  MA      # ( 𝚗 → n ) MATHEMATICAL MONOSPACE SMALL N → LATIN SMALL LETTER N        # 
+03C0 ; 006E ;  MA      # ( π → n ) GREEK SMALL LETTER PI → LATIN SMALL LETTER N   # 
+03D6 ; 006E ;  MA      # ( ϖ → n ) GREEK PI SYMBOL → LATIN SMALL LETTER N # →π→
+213C ; 006E ;  MA      # ( ℼ → n ) DOUBLE-STRUCK SMALL PI → LATIN SMALL LETTER N # →π→
+1D6D1 ;        006E ;  MA      # ( 𝛑 → n ) MATHEMATICAL BOLD SMALL PI → LATIN SMALL LETTER N    # →π→
+1D6E1 ;        006E ;  MA      # ( 𝛡 → n ) MATHEMATICAL BOLD PI SYMBOL → LATIN SMALL LETTER N   # →π→
+1D70B ;        006E ;  MA      # ( 𝜋 → n ) MATHEMATICAL ITALIC SMALL PI → LATIN SMALL LETTER N  # →π→
+1D71B ;        006E ;  MA      # ( 𝜛 → n ) MATHEMATICAL ITALIC PI SYMBOL → LATIN SMALL LETTER N # →π→
+1D745 ;        006E ;  MA      # ( 𝝅 → n ) MATHEMATICAL BOLD ITALIC SMALL PI → LATIN SMALL LETTER N     # →π→
+1D755 ;        006E ;  MA      # ( 𝝕 → n ) MATHEMATICAL BOLD ITALIC PI SYMBOL → LATIN SMALL LETTER N    # →π→
+1D77F ;        006E ;  MA      # ( 𝝿 → n ) MATHEMATICAL SANS-SERIF BOLD SMALL PI → LATIN SMALL LETTER N # →π→
+1D78F ;        006E ;  MA      # ( 𝞏 → n ) MATHEMATICAL SANS-SERIF BOLD PI SYMBOL → LATIN SMALL LETTER N        # →π→
+1D7B9 ;        006E ;  MA      # ( 𝞹 → n ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI → LATIN SMALL LETTER N  # →π→
+1D7C9 ;        006E ;  MA      # ( 𝟉 → n ) MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL → LATIN SMALL LETTER N # →π→
+1D28 ; 006E ;  MA      # ( ᴨ → n ) GREEK LETTER SMALL CAPITAL PI → LATIN SMALL LETTER N  # →п→
+043F ; 006E ;  MA      # ( п → n ) CYRILLIC SMALL LETTER PE → LATIN SMALL LETTER N        # 
+0578 ; 006E ;  MA      # ( ո → n ) ARMENIAN SMALL LETTER VO → LATIN SMALL LETTER N        # 
+057C ; 006E ;  MA      # ( ռ → n ) ARMENIAN SMALL LETTER RA → LATIN SMALL LETTER N        # 
+
+FF2E ; 004E ;  MA      # ( N → N ) FULLWIDTH LATIN CAPITAL LETTER N → LATIN CAPITAL LETTER N     # →Ν→
+2115 ; 004E ;  MA      # ( ℕ → N ) DOUBLE-STRUCK CAPITAL N → LATIN CAPITAL LETTER N      # 
+1D40D ;        004E ;  MA      # ( 𝐍 → N ) MATHEMATICAL BOLD CAPITAL N → LATIN CAPITAL LETTER N # 
+1D441 ;        004E ;  MA      # ( 𝑁 → N ) MATHEMATICAL ITALIC CAPITAL N → LATIN CAPITAL LETTER N       # 
+1D475 ;        004E ;  MA      # ( 𝑵 → N ) MATHEMATICAL BOLD ITALIC CAPITAL N → LATIN CAPITAL LETTER N  # 
+1D4A9 ;        004E ;  MA      # ( 𝒩 → N ) MATHEMATICAL SCRIPT CAPITAL N → LATIN CAPITAL LETTER N       # 
+1D4DD ;        004E ;  MA      # ( 𝓝 → N ) MATHEMATICAL BOLD SCRIPT CAPITAL N → LATIN CAPITAL LETTER N  # 
+1D511 ;        004E ;  MA      # ( 𝔑 → N ) MATHEMATICAL FRAKTUR CAPITAL N → LATIN CAPITAL LETTER N      # 
+1D579 ;        004E ;  MA      # ( 𝕹 → N ) MATHEMATICAL BOLD FRAKTUR CAPITAL N → LATIN CAPITAL LETTER N # 
+1D5AD ;        004E ;  MA      # ( 𝖭 → N ) MATHEMATICAL SANS-SERIF CAPITAL N → LATIN CAPITAL LETTER N   # 
+1D5E1 ;        004E ;  MA      # ( 𝗡 → N ) MATHEMATICAL SANS-SERIF BOLD CAPITAL N → LATIN CAPITAL LETTER N      # 
+1D615 ;        004E ;  MA      # ( 𝘕 → N ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL N → LATIN CAPITAL LETTER N    # 
+1D649 ;        004E ;  MA      # ( 𝙉 → N ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N → LATIN CAPITAL LETTER N       # 
+1D67D ;        004E ;  MA      # ( 𝙽 → N ) MATHEMATICAL MONOSPACE CAPITAL N → LATIN CAPITAL LETTER N    # 
+039D ; 004E ;  MA      # ( Ν → N ) GREEK CAPITAL LETTER NU → LATIN CAPITAL LETTER N       # 
+1D6B4 ;        004E ;  MA      # ( 𝚴 → N ) MATHEMATICAL BOLD CAPITAL NU → LATIN CAPITAL LETTER N        # →𝐍→
+1D6EE ;        004E ;  MA      # ( 𝛮 → N ) MATHEMATICAL ITALIC CAPITAL NU → LATIN CAPITAL LETTER N      # →Ν→
+1D728 ;        004E ;  MA      # ( 𝜨 → N ) MATHEMATICAL BOLD ITALIC CAPITAL NU → LATIN CAPITAL LETTER N # →𝑵→
+1D762 ;        004E ;  MA      # ( 𝝢 → N ) MATHEMATICAL SANS-SERIF BOLD CAPITAL NU → LATIN CAPITAL LETTER N     # →Ν→
+1D79C ;        004E ;  MA      # ( 𝞜 → N ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU → LATIN CAPITAL LETTER N      # →Ν→
+2C9A ; 004E ;  MA      # ( Ⲛ → N ) COPTIC CAPITAL LETTER NI → LATIN CAPITAL LETTER N     # 
+A4E0 ; 004E ;  MA      # ( ꓠ → N ) LISU LETTER NA → LATIN CAPITAL LETTER N       # 
+
+0272 ; 0146 ;  MA      # ( ɲ → ņ ) LATIN SMALL LETTER N WITH LEFT HOOK → LATIN SMALL LETTER N WITH CEDILLA       # 
+
+0273 ; 006E 0328 ;     MA      # ( ɳ → n̨ ) LATIN SMALL LETTER N WITH RETROFLEX HOOK → LATIN SMALL LETTER N, COMBINING OGONEK    # →n̢→
+
+019E ; 006E 0329 ;     MA      # ( ƞ → n̩ ) LATIN SMALL LETTER N WITH LONG RIGHT LEG → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW       # 
+03B7 ; 006E 0329 ;     MA      # ( η → n̩ ) GREEK SMALL LETTER ETA → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW # →ƞ→
+1D6C8 ;        006E 0329 ;     MA      # ( 𝛈 → n̩ ) MATHEMATICAL BOLD SMALL ETA → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW  # →η→→ƞ→
+1D702 ;        006E 0329 ;     MA      # ( 𝜂 → n̩ ) MATHEMATICAL ITALIC SMALL ETA → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW        # →η→→ƞ→
+1D73C ;        006E 0329 ;     MA      # ( 𝜼 → n̩ ) MATHEMATICAL BOLD ITALIC SMALL ETA → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW   # →η→→ƞ→
+1D776 ;        006E 0329 ;     MA      # ( 𝝶 → n̩ ) MATHEMATICAL SANS-SERIF BOLD SMALL ETA → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW       # →η→→ƞ→
+1D7B0 ;        006E 0329 ;     MA      # ( 𝞰 → n̩ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA → LATIN SMALL LETTER N, COMBINING VERTICAL LINE BELOW        # →η→→ƞ→
+
+019D ; 004E 0326 ;     MA      # ( Ɲ → N̦ ) LATIN CAPITAL LETTER N WITH LEFT HOOK → LATIN CAPITAL LETTER N, COMBINING COMMA BELOW        # →N̡→
+
+01CC ; 006E 006A ;     MA      # ( nj → nj ) LATIN SMALL LETTER NJ → LATIN SMALL LETTER N, LATIN SMALL LETTER J    # 
+
+01CB ; 004E 006A ;     MA      # ( Nj → Nj ) LATIN CAPITAL LETTER N WITH SMALL LETTER J → LATIN CAPITAL LETTER N, LATIN SMALL LETTER J     # 
+
+01CA ; 004E 004A ;     MA      # ( NJ → NJ ) LATIN CAPITAL LETTER NJ → LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER J      # 
+
+2116 ; 004E 006F ;     MA      #* ( № → No ) NUMERO SIGN → LATIN CAPITAL LETTER N, LATIN SMALL LETTER O  # 
+
+0438 ; 1D0E ;  MA      # ( и → ᴎ ) CYRILLIC SMALL LETTER I → LATIN LETTER SMALL CAPITAL REVERSED N      # 
+
+0C02 ; 006F ;  MA      # ( ం → o ) TELUGU SIGN ANUSVARA → LATIN SMALL LETTER O   # 
+0C82 ; 006F ;  MA      # ( ಂ → o ) KANNADA SIGN ANUSVARA → LATIN SMALL LETTER O  # 
+0D02 ; 006F ;  MA      # ( ം → o ) MALAYALAM SIGN ANUSVARA → LATIN SMALL LETTER O        # 
+0D82 ; 006F ;  MA      # ( ං → o ) SINHALA SIGN ANUSVARAYA → LATIN SMALL LETTER O        # 
+0966 ; 006F ;  MA      # ( ० → o ) DEVANAGARI DIGIT ZERO → LATIN SMALL LETTER O  # 
+0A66 ; 006F ;  MA      # ( ੦ → o ) GURMUKHI DIGIT ZERO → LATIN SMALL LETTER O    # 
+0AE6 ; 006F ;  MA      # ( ૦ → o ) GUJARATI DIGIT ZERO → LATIN SMALL LETTER O    # 
+0BE6 ; 006F ;  MA      # ( ௦ → o ) TAMIL DIGIT ZERO → LATIN SMALL LETTER O       # 
+0C66 ; 006F ;  MA      # ( ౦ → o ) TELUGU DIGIT ZERO → LATIN SMALL LETTER O      # 
+0CE6 ; 006F ;  MA      # ( ೦ → o ) KANNADA DIGIT ZERO → LATIN SMALL LETTER O     # →౦→
+0D66 ; 006F ;  MA      # ( ൦ → o ) MALAYALAM DIGIT ZERO → LATIN SMALL LETTER O   # 
+0E50 ; 006F ;  MA      # ( ๐ → o ) THAI DIGIT ZERO → LATIN SMALL LETTER O        # 
+0ED0 ; 006F ;  MA      # ( ໐ → o ) LAO DIGIT ZERO → LATIN SMALL LETTER O # 
+1040 ; 006F ;  MA      # ( ၀ → o ) MYANMAR DIGIT ZERO → LATIN SMALL LETTER O     # 
+0665 ; 006F ;  MA      # ( ‎٥‎ → o ) ARABIC-INDIC DIGIT FIVE → LATIN SMALL LETTER O   # 
+FF4F ; 006F ;  MA      # ( o → o ) FULLWIDTH LATIN SMALL LETTER O → LATIN SMALL LETTER O # →ο→
+2134 ; 006F ;  MA      # ( ℴ → o ) SCRIPT SMALL O → LATIN SMALL LETTER O # 
+1D428 ;        006F ;  MA      # ( 𝐨 → o ) MATHEMATICAL BOLD SMALL O → LATIN SMALL LETTER O     # 
+1D45C ;        006F ;  MA      # ( 𝑜 → o ) MATHEMATICAL ITALIC SMALL O → LATIN SMALL LETTER O   # 
+1D490 ;        006F ;  MA      # ( 𝒐 → o ) MATHEMATICAL BOLD ITALIC SMALL O → LATIN SMALL LETTER O      # 
+1D4F8 ;        006F ;  MA      # ( 𝓸 → o ) MATHEMATICAL BOLD SCRIPT SMALL O → LATIN SMALL LETTER O      # 
+1D52C ;        006F ;  MA      # ( 𝔬 → o ) MATHEMATICAL FRAKTUR SMALL O → LATIN SMALL LETTER O  # 
+1D560 ;        006F ;  MA      # ( 𝕠 → o ) MATHEMATICAL DOUBLE-STRUCK SMALL O → LATIN SMALL LETTER O    # 
+1D594 ;        006F ;  MA      # ( 𝖔 → o ) MATHEMATICAL BOLD FRAKTUR SMALL O → LATIN SMALL LETTER O     # 
+1D5C8 ;        006F ;  MA      # ( 𝗈 → o ) MATHEMATICAL SANS-SERIF SMALL O → LATIN SMALL LETTER O       # 
+1D5FC ;        006F ;  MA      # ( 𝗼 → o ) MATHEMATICAL SANS-SERIF BOLD SMALL O → LATIN SMALL LETTER O  # 
+1D630 ;        006F ;  MA      # ( 𝘰 → o ) MATHEMATICAL SANS-SERIF ITALIC SMALL O → LATIN SMALL LETTER O        # 
+1D664 ;        006F ;  MA      # ( 𝙤 → o ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O → LATIN SMALL LETTER O   # 
+1D698 ;        006F ;  MA      # ( 𝚘 → o ) MATHEMATICAL MONOSPACE SMALL O → LATIN SMALL LETTER O        # 
+1D0F ; 006F ;  MA      # ( ᴏ → o ) LATIN LETTER SMALL CAPITAL O → LATIN SMALL LETTER O   # 
+1D11 ; 006F ;  MA      # ( ᴑ → o ) LATIN SMALL LETTER SIDEWAYS O → LATIN SMALL LETTER O  # 
+03BF ; 006F ;  MA      # ( ο → o ) GREEK SMALL LETTER OMICRON → LATIN SMALL LETTER O      # 
+1D6D0 ;        006F ;  MA      # ( 𝛐 → o ) MATHEMATICAL BOLD SMALL OMICRON → LATIN SMALL LETTER O       # →ο→
+1D70A ;        006F ;  MA      # ( 𝜊 → o ) MATHEMATICAL ITALIC SMALL OMICRON → LATIN SMALL LETTER O     # →ο→
+1D744 ;        006F ;  MA      # ( 𝝄 → o ) MATHEMATICAL BOLD ITALIC SMALL OMICRON → LATIN SMALL LETTER O        # →ο→
+1D77E ;        006F ;  MA      # ( 𝝾 → o ) MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON → LATIN SMALL LETTER O    # →ο→
+1D7B8 ;        006F ;  MA      # ( 𝞸 → o ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON → LATIN SMALL LETTER O     # →ο→
+03C3 ; 006F ;  MA      # ( σ → o ) GREEK SMALL LETTER SIGMA → LATIN SMALL LETTER O        # 
+1D6D4 ;        006F ;  MA      # ( 𝛔 → o ) MATHEMATICAL BOLD SMALL SIGMA → LATIN SMALL LETTER O # →σ→
+1D70E ;        006F ;  MA      # ( 𝜎 → o ) MATHEMATICAL ITALIC SMALL SIGMA → LATIN SMALL LETTER O       # →σ→
+1D748 ;        006F ;  MA      # ( 𝝈 → o ) MATHEMATICAL BOLD ITALIC SMALL SIGMA → LATIN SMALL LETTER O  # →σ→
+1D782 ;        006F ;  MA      # ( 𝞂 → o ) MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA → LATIN SMALL LETTER O      # →σ→
+1D7BC ;        006F ;  MA      # ( 𝞼 → o ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA → LATIN SMALL LETTER O       # →σ→
+2C9F ; 006F ;  MA      # ( ⲟ → o ) COPTIC SMALL LETTER O → LATIN SMALL LETTER O  # 
+043E ; 006F ;  MA      # ( о → o ) CYRILLIC SMALL LETTER O → LATIN SMALL LETTER O # 
+0585 ; 006F ;  MA      # ( օ → o ) ARMENIAN SMALL LETTER OH → LATIN SMALL LETTER O        # 
+05E1 ; 006F ;  MA      # ( ‎ס‎ → o ) HEBREW LETTER SAMEKH → LATIN SMALL LETTER O      # 
+101D ; 006F ;  MA      # ( ဝ → o ) MYANMAR LETTER WA → LATIN SMALL LETTER O      # 
+
+0030 ; 004F ;  MA      # ( 0 → O ) DIGIT ZERO → LATIN CAPITAL LETTER O     # 
+1D7CE ;        004F ;  MA      # ( 𝟎 → O ) MATHEMATICAL BOLD DIGIT ZERO → LATIN CAPITAL LETTER O        # →0→
+1D7D8 ;        004F ;  MA      # ( 𝟘 → O ) MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO → LATIN CAPITAL LETTER O       # →0→
+1D7E2 ;        004F ;  MA      # ( 𝟢 → O ) MATHEMATICAL SANS-SERIF DIGIT ZERO → LATIN CAPITAL LETTER O  # →0→
+1D7EC ;        004F ;  MA      # ( 𝟬 → O ) MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO → LATIN CAPITAL LETTER O     # →0→
+1D7F6 ;        004F ;  MA      # ( 𝟶 → O ) MATHEMATICAL MONOSPACE DIGIT ZERO → LATIN CAPITAL LETTER O   # →0→
+07C0 ; 004F ;  MA      # ( ‎߀‎ → O ) NKO DIGIT ZERO → LATIN CAPITAL LETTER O  # →0→
+09E6 ; 004F ;  MA      # ( ০ → O ) BENGALI DIGIT ZERO → LATIN CAPITAL LETTER O   # →0→
+0B66 ; 004F ;  MA      # ( ୦ → O ) ORIYA DIGIT ZERO → LATIN CAPITAL LETTER O     # →0→
+3007 ; 004F ;  MA      # ( 〇 → O ) IDEOGRAPHIC NUMBER ZERO → LATIN CAPITAL LETTER O      # 
+FF2F ; 004F ;  MA      # ( O → O ) FULLWIDTH LATIN CAPITAL LETTER O → LATIN CAPITAL LETTER O     # →Ο→
+1D40E ;        004F ;  MA      # ( 𝐎 → O ) MATHEMATICAL BOLD CAPITAL O → LATIN CAPITAL LETTER O # 
+1D442 ;        004F ;  MA      # ( 𝑂 → O ) MATHEMATICAL ITALIC CAPITAL O → LATIN CAPITAL LETTER O       # 
+1D476 ;        004F ;  MA      # ( 𝑶 → O ) MATHEMATICAL BOLD ITALIC CAPITAL O → LATIN CAPITAL LETTER O  # 
+1D4AA ;        004F ;  MA      # ( 𝒪 → O ) MATHEMATICAL SCRIPT CAPITAL O → LATIN CAPITAL LETTER O       # 
+1D4DE ;        004F ;  MA      # ( 𝓞 → O ) MATHEMATICAL BOLD SCRIPT CAPITAL O → LATIN CAPITAL LETTER O  # 
+1D512 ;        004F ;  MA      # ( 𝔒 → O ) MATHEMATICAL FRAKTUR CAPITAL O → LATIN CAPITAL LETTER O      # 
+1D546 ;        004F ;  MA      # ( 𝕆 → O ) MATHEMATICAL DOUBLE-STRUCK CAPITAL O → LATIN CAPITAL LETTER O        # 
+1D57A ;        004F ;  MA      # ( 𝕺 → O ) MATHEMATICAL BOLD FRAKTUR CAPITAL O → LATIN CAPITAL LETTER O # 
+1D5AE ;        004F ;  MA      # ( 𝖮 → O ) MATHEMATICAL SANS-SERIF CAPITAL O → LATIN CAPITAL LETTER O   # 
+1D5E2 ;        004F ;  MA      # ( 𝗢 → O ) MATHEMATICAL SANS-SERIF BOLD CAPITAL O → LATIN CAPITAL LETTER O      # 
+1D616 ;        004F ;  MA      # ( 𝘖 → O ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL O → LATIN CAPITAL LETTER O    # 
+1D64A ;        004F ;  MA      # ( 𝙊 → O ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O → LATIN CAPITAL LETTER O       # 
+1D67E ;        004F ;  MA      # ( 𝙾 → O ) MATHEMATICAL MONOSPACE CAPITAL O → LATIN CAPITAL LETTER O    # 
+039F ; 004F ;  MA      # ( Ο → O ) GREEK CAPITAL LETTER OMICRON → LATIN CAPITAL LETTER O  # 
+1D6B6 ;        004F ;  MA      # ( 𝚶 → O ) MATHEMATICAL BOLD CAPITAL OMICRON → LATIN CAPITAL LETTER O   # →Ο→
+1D6F0 ;        004F ;  MA      # ( 𝛰 → O ) MATHEMATICAL ITALIC CAPITAL OMICRON → LATIN CAPITAL LETTER O # →Ο→
+1D72A ;        004F ;  MA      # ( 𝜪 → O ) MATHEMATICAL BOLD ITALIC CAPITAL OMICRON → LATIN CAPITAL LETTER O    # →Ο→
+1D764 ;        004F ;  MA      # ( 𝝤 → O ) MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON → LATIN CAPITAL LETTER O        # →Ο→
+1D79E ;        004F ;  MA      # ( 𝞞 → O ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON → LATIN CAPITAL LETTER O # →Ο→
+2C9E ; 004F ;  MA      # ( Ⲟ → O ) COPTIC CAPITAL LETTER O → LATIN CAPITAL LETTER O      # 
+041E ; 004F ;  MA      # ( О → O ) CYRILLIC CAPITAL LETTER O → LATIN CAPITAL LETTER O     # 
+0555 ; 004F ;  MA      # ( Օ → O ) ARMENIAN CAPITAL LETTER OH → LATIN CAPITAL LETTER O    # 
+2D54 ; 004F ;  MA      # ( ⵔ → O ) TIFINAGH LETTER YAR → LATIN CAPITAL LETTER O  # 
+0B20 ; 004F ;  MA      # ( ଠ → O ) ORIYA LETTER TTHA → LATIN CAPITAL LETTER O    # →୦→→0→
+0D20 ; 004F ;  MA      # ( ഠ → O ) MALAYALAM LETTER TTHA → LATIN CAPITAL LETTER O        # 
+A4F3 ; 004F ;  MA      # ( ꓳ → O ) LISU LETTER O → LATIN CAPITAL LETTER O        # 
+
+2070 ; 00BA ;  MA      #* ( ⁰ → º ) SUPERSCRIPT ZERO → MASCULINE ORDINAL INDICATOR      # 
+1D52 ; 00BA ;  MA      # ( ᵒ → º ) MODIFIER LETTER SMALL O → MASCULINE ORDINAL INDICATOR        # →⁰→
+
+01D2 ; 014F ;  MA      # ( ǒ → ŏ ) LATIN SMALL LETTER O WITH CARON → LATIN SMALL LETTER O WITH BREVE     # 
+
+01D1 ; 014E ;  MA      # ( Ǒ → Ŏ ) LATIN CAPITAL LETTER O WITH CARON → LATIN CAPITAL LETTER O WITH BREVE # 
+
+0629 ; 00F6 ;  MA      # ( ‎ة‎ → ö ) ARABIC LETTER TEH MARBUTA → LATIN SMALL LETTER O WITH DIAERESIS # 
+FE94 ; 00F6 ;  MA      # ( ‎ﺔ‎ → ö ) ARABIC LETTER TEH MARBUTA FINAL FORM → LATIN SMALL LETTER O WITH DIAERESIS     # →‎ة‎→
+FE93 ; 00F6 ;  MA      # ( ‎ﺓ‎ → ö ) ARABIC LETTER TEH MARBUTA ISOLATED FORM → LATIN SMALL LETTER O WITH DIAERESIS  # →‎ة‎→
+06C3 ; 00F6 ;  MA      # ( ‎ۃ‎ → ö ) ARABIC LETTER TEH MARBUTA GOAL → LATIN SMALL LETTER O WITH DIAERESIS    # 
+
+0150 ; 00D6 ;  MA      # ( Ő → Ö ) LATIN CAPITAL LETTER O WITH DOUBLE ACUTE → LATIN CAPITAL LETTER O WITH DIAERESIS      # 
+
+00F8 ; 006F 0338 ;     MA      # ( ø → o̸ ) LATIN SMALL LETTER O WITH STROKE → LATIN SMALL LETTER O, COMBINING LONG SOLIDUS OVERLAY      # →o̷→
+
+00D8 ; 004F 0338 ;     MA      # ( Ø → O̸ ) LATIN CAPITAL LETTER O WITH STROKE → LATIN CAPITAL LETTER O, COMBINING LONG SOLIDUS OVERLAY  # 
+
+01FE ; 004F 0338 0301 ;        MA      # ( Ǿ → Ó̸ ) LATIN CAPITAL LETTER O WITH STROKE AND ACUTE → LATIN CAPITAL LETTER O, COMBINING LONG SOLIDUS OVERLAY, COMBINING ACUTE ACCENT      # 
+
+0275 ; 006F 0335 ;     MA      # ( ɵ → o̵ ) LATIN SMALL LETTER BARRED O → LATIN SMALL LETTER O, COMBINING SHORT STROKE OVERLAY   # 
+04E9 ; 006F 0335 ;     MA      # ( ө → o̵ ) CYRILLIC SMALL LETTER BARRED O → LATIN SMALL LETTER O, COMBINING SHORT STROKE OVERLAY        # →ɵ→
+0473 ; 006F 0335 ;     MA      # ( ѳ → o̵ ) CYRILLIC SMALL LETTER FITA → LATIN SMALL LETTER O, COMBINING SHORT STROKE OVERLAY    # 
+
+2296 ; 004F 0335 ;     MA      #* ( ⊖ → O̵ ) CIRCLED MINUS → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY     # →Θ→→Ɵ→→O̶→
+229D ; 004F 0335 ;     MA      #* ( ⊝ → O̵ ) CIRCLED DASH → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY      # →⊖→→Θ→→Ɵ→→O̶→
+236C ; 004F 0335 ;     MA      #* ( ⍬ → O̵ ) APL FUNCTIONAL SYMBOL ZILDE → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY       # →θ→→⊖→→Θ→→Ɵ→→O̶→
+019F ; 004F 0335 ;     MA      # ( Ɵ → O̵ ) LATIN CAPITAL LETTER O WITH MIDDLE TILDE → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY    # →O̶→
+03B8 ; 004F 0335 ;     MA      # ( θ → O̵ ) GREEK SMALL LETTER THETA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY    # →⊖→→Θ→→Ɵ→→O̶→
+03D1 ; 004F 0335 ;     MA      # ( ϑ → O̵ ) GREEK THETA SYMBOL → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY  # →⊖→→Θ→→Ɵ→→O̶→
+1D6C9 ;        004F 0335 ;     MA      # ( 𝛉 → O̵ ) MATHEMATICAL BOLD SMALL THETA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY     # →θ→→⊖→→Θ→→Ɵ→→O̶→
+1D6DD ;        004F 0335 ;     MA      # ( 𝛝 → O̵ ) MATHEMATICAL BOLD THETA SYMBOL → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY    # →θ→→⊖→→Θ→→Ɵ→→O̶→
+1D703 ;        004F 0335 ;     MA      # ( 𝜃 → O̵ ) MATHEMATICAL ITALIC SMALL THETA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY   # →θ→→⊖→→Θ→→Ɵ→→O̶→
+1D717 ;        004F 0335 ;     MA      # ( 𝜗 → O̵ ) MATHEMATICAL ITALIC THETA SYMBOL → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY  # →θ→→⊖→→Θ→→Ɵ→→O̶→
+1D73D ;        004F 0335 ;     MA      # ( 𝜽 → O̵ ) MATHEMATICAL BOLD ITALIC SMALL THETA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY      # →θ→→⊖→→Θ→→Ɵ→→O̶→
+1D751 ;        004F 0335 ;     MA      # ( 𝝑 → O̵ ) MATHEMATICAL BOLD ITALIC THETA SYMBOL → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY     # →θ→→⊖→→Θ→→Ɵ→→O̶→
+1D777 ;        004F 0335 ;     MA      # ( 𝝷 → O̵ ) MATHEMATICAL SANS-SERIF BOLD SMALL THETA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY  # →θ→→⊖→→Θ→→Ɵ→→O̶→
+1D78B ;        004F 0335 ;     MA      # ( 𝞋 → O̵ ) MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY # →θ→→⊖→→Θ→→Ɵ→→O̶→
+1D7B1 ;        004F 0335 ;     MA      # ( 𝞱 → O̵ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY   # →θ→→⊖→→Θ→→Ɵ→→O̶→
+1D7C5 ;        004F 0335 ;     MA      # ( 𝟅 → O̵ ) MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY  # →θ→→⊖→→Θ→→Ɵ→→O̶→
+0398 ; 004F 0335 ;     MA      # ( Θ → O̵ ) GREEK CAPITAL LETTER THETA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY  # →Ɵ→→O̶→
+03F4 ; 004F 0335 ;     MA      # ( ϴ → O̵ ) GREEK CAPITAL THETA SYMBOL → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY  # →Ɵ→→O̶→
+1D6AF ;        004F 0335 ;     MA      # ( 𝚯 → O̵ ) MATHEMATICAL BOLD CAPITAL THETA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY   # →Θ→→Ɵ→→O̶→
+1D6B9 ;        004F 0335 ;     MA      # ( 𝚹 → O̵ ) MATHEMATICAL BOLD CAPITAL THETA SYMBOL → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY    # →Θ→→Ɵ→→O̶→
+1D6E9 ;        004F 0335 ;     MA      # ( 𝛩 → O̵ ) MATHEMATICAL ITALIC CAPITAL THETA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY # →Θ→→Ɵ→→O̶→
+1D6F3 ;        004F 0335 ;     MA      # ( 𝛳 → O̵ ) MATHEMATICAL ITALIC CAPITAL THETA SYMBOL → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY  # →Θ→→Ɵ→→O̶→
+1D723 ;        004F 0335 ;     MA      # ( 𝜣 → O̵ ) MATHEMATICAL BOLD ITALIC CAPITAL THETA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY    # →Θ→→Ɵ→→O̶→
+1D72D ;        004F 0335 ;     MA      # ( 𝜭 → O̵ ) MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY     # →Θ→→Ɵ→→O̶→
+1D75D ;        004F 0335 ;     MA      # ( 𝝝 → O̵ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY        # →Θ→→Ɵ→→O̶→
+1D767 ;        004F 0335 ;     MA      # ( 𝝧 → O̵ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY # →Θ→→Ɵ→→O̶→
+1D797 ;        004F 0335 ;     MA      # ( 𝞗 → O̵ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY # →Θ→→Ɵ→→O̶→
+1D7A1 ;        004F 0335 ;     MA      # ( 𝞡 → O̵ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY  # →Θ→→Ɵ→→O̶→
+04E8 ; 004F 0335 ;     MA      # ( Ө → O̵ ) CYRILLIC CAPITAL LETTER BARRED O → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY    # →Ɵ→→O̶→
+0472 ; 004F 0335 ;     MA      # ( Ѳ → O̵ ) CYRILLIC CAPITAL LETTER FITA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY        # →О̵→
+2D31 ; 004F 0335 ;     MA      # ( ⴱ → O̵ ) TIFINAGH LETTER YAB → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY        # →Ɵ→→O̶→
+13BE ; 004F 0335 ;     MA      # ( Ꮎ → O̵ ) CHEROKEE LETTER NA → LATIN CAPITAL LETTER O, COMBINING SHORT STROKE OVERLAY # 
+
+1F101 ;        004F 002C ;     MA      #* ( 🄁 → O, ) DIGIT ZERO COMMA → LATIN CAPITAL LETTER O, COMMA   # →0,→
+
+1F100 ;        004F 002E ;     MA      #* ( 🄀 → O. ) DIGIT ZERO FULL STOP → LATIN CAPITAL LETTER O, FULL STOP   # →0.→
+
+01A1 ; 006F 0027 ;     MA      # ( ơ → o' ) LATIN SMALL LETTER O WITH HORN → LATIN SMALL LETTER O, APOSTROPHE     # →oʼ→
+
+01A0 ; 004F 0027 ;     MA      # ( Ơ → O' ) LATIN CAPITAL LETTER O WITH HORN → LATIN CAPITAL LETTER O, APOSTROPHE # →Oʼ→
+
+0025 ; 00BA 002F 2080 2080 ;   MA      #* ( % → º/₀₀ ) PERCENT SIGN → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO    # →‰→→⁰/₀₀→
+066A ; 00BA 002F 2080 2080 ;   MA      #* ( ٪ → º/₀₀ ) ARABIC PERCENT SIGN → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO    # →%→→‰→→⁰/₀₀→
+2030 ; 00BA 002F 2080 2080 ;   MA      #* ( ‰ → º/₀₀ ) PER MILLE SIGN → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO        # →⁰/₀₀→
+0609 ; 00BA 002F 2080 2080 ;   MA      #* ( ؉ → º/₀₀ ) ARABIC-INDIC PER MILLE SIGN → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO    # →%→→‰→→⁰/₀₀→
+060A ; 00BA 002F 2080 2080 ;   MA      #* ( ؊ → º/₀₀ ) ARABIC-INDIC PER TEN THOUSAND SIGN → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO     # →%→→‰→→⁰/₀₀→
+2052 ; 00BA 002F 2080 2080 ;   MA      #* ( ⁒ → º/₀₀ ) COMMERCIAL MINUS SIGN → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO # →%→→‰→→⁰/₀₀→
+2100 ; 00BA 002F 2080 2080 ;   MA      #* ( ℀ → º/₀₀ ) ACCOUNT OF → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO    # →%→→‰→→⁰/₀₀→
+2101 ; 00BA 002F 2080 2080 ;   MA      #* ( ℁ → º/₀₀ ) ADDRESSED TO THE SUBJECT → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO      # →%→→‰→→⁰/₀₀→
+2105 ; 00BA 002F 2080 2080 ;   MA      #* ( ℅ → º/₀₀ ) CARE OF → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO       # →%→→‰→→⁰/₀₀→
+2106 ; 00BA 002F 2080 2080 ;   MA      #* ( ℆ → º/₀₀ ) CADA UNA → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO      # →%→→‰→→⁰/₀₀→
+
+2031 ; 00BA 002F 2080 2080 2080 ;      MA      #* ( ‱ → º/₀₀₀ ) PER TEN THOUSAND SIGN → MASCULINE ORDINAL INDICATOR, SOLIDUS, SUBSCRIPT ZERO, SUBSCRIPT ZERO, SUBSCRIPT ZERO      # →⁰/₀₀₀→
+
+0153 ; 006F 0065 ;     MA      # ( œ → oe ) LATIN SMALL LIGATURE OE → LATIN SMALL LETTER O, LATIN SMALL LETTER E  # 
+
+0152 ; 004F 0045 ;     MA      # ( Œ → OE ) LATIN CAPITAL LIGATURE OE → LATIN CAPITAL LETTER O, LATIN CAPITAL LETTER E    # 
+
+0276 ; 006F 1D07 ;     MA      # ( ɶ → oᴇ ) LATIN LETTER SMALL CAPITAL OE → LATIN SMALL LETTER O, LATIN LETTER SMALL CAPITAL E  # 
+
+A74F ; 006F 006F ;     MA      # ( ꝏ → oo ) LATIN SMALL LETTER OO → LATIN SMALL LETTER O, LATIN SMALL LETTER O   # 
+
+A74E ; 004F 004F ;     MA      # ( Ꝏ → OO ) LATIN CAPITAL LETTER OO → LATIN CAPITAL LETTER O, LATIN CAPITAL LETTER O     # 
+
+3358 ; 004F 70B9 ;     MA      #* ( ㍘ → O点 ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO → LATIN CAPITAL LETTER O, CJK UNIFIED IDEOGRAPH-70B9   # →0点→
+
+2184 ; 0254 ;  MA      # ( ↄ → ɔ ) LATIN SMALL LETTER REVERSED C → LATIN SMALL LETTER OPEN O    # 
+1D10 ; 0254 ;  MA      # ( ᴐ → ɔ ) LATIN LETTER SMALL CAPITAL OPEN O → LATIN SMALL LETTER OPEN O        # 
+037B ; 0254 ;  MA      # ( ͻ → ɔ ) GREEK SMALL REVERSED LUNATE SIGMA SYMBOL → LATIN SMALL LETTER OPEN O  # 
+
+2183 ; 0186 ;  MA      # ( Ↄ → Ɔ ) ROMAN NUMERAL REVERSED ONE HUNDRED → LATIN CAPITAL LETTER OPEN O     # 
+03FD ; 0186 ;  MA      # ( Ͻ → Ɔ ) GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL → LATIN CAPITAL LETTER OPEN O      # 
+A4DB ; 0186 ;  MA      # ( ꓛ → Ɔ ) LISU LETTER CHA → LATIN CAPITAL LETTER OPEN O        # 
+
+2374 ; 0070 ;  MA      #* ( ⍴ → p ) APL FUNCTIONAL SYMBOL RHO → LATIN SMALL LETTER P     # →ρ→
+FF50 ; 0070 ;  MA      # ( p → p ) FULLWIDTH LATIN SMALL LETTER P → LATIN SMALL LETTER P # →р→
+1D429 ;        0070 ;  MA      # ( 𝐩 → p ) MATHEMATICAL BOLD SMALL P → LATIN SMALL LETTER P     # 
+1D45D ;        0070 ;  MA      # ( 𝑝 → p ) MATHEMATICAL ITALIC SMALL P → LATIN SMALL LETTER P   # 
+1D491 ;        0070 ;  MA      # ( 𝒑 → p ) MATHEMATICAL BOLD ITALIC SMALL P → LATIN SMALL LETTER P      # 
+1D4C5 ;        0070 ;  MA      # ( 𝓅 → p ) MATHEMATICAL SCRIPT SMALL P → LATIN SMALL LETTER P   # 
+1D4F9 ;        0070 ;  MA      # ( 𝓹 → p ) MATHEMATICAL BOLD SCRIPT SMALL P → LATIN SMALL LETTER P      # 
+1D52D ;        0070 ;  MA      # ( 𝔭 → p ) MATHEMATICAL FRAKTUR SMALL P → LATIN SMALL LETTER P  # 
+1D561 ;        0070 ;  MA      # ( 𝕡 → p ) MATHEMATICAL DOUBLE-STRUCK SMALL P → LATIN SMALL LETTER P    # 
+1D595 ;        0070 ;  MA      # ( 𝖕 → p ) MATHEMATICAL BOLD FRAKTUR SMALL P → LATIN SMALL LETTER P     # 
+1D5C9 ;        0070 ;  MA      # ( 𝗉 → p ) MATHEMATICAL SANS-SERIF SMALL P → LATIN SMALL LETTER P       # 
+1D5FD ;        0070 ;  MA      # ( 𝗽 → p ) MATHEMATICAL SANS-SERIF BOLD SMALL P → LATIN SMALL LETTER P  # 
+1D631 ;        0070 ;  MA      # ( 𝘱 → p ) MATHEMATICAL SANS-SERIF ITALIC SMALL P → LATIN SMALL LETTER P        # 
+1D665 ;        0070 ;  MA      # ( 𝙥 → p ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P → LATIN SMALL LETTER P   # 
+1D699 ;        0070 ;  MA      # ( 𝚙 → p ) MATHEMATICAL MONOSPACE SMALL P → LATIN SMALL LETTER P        # 
+03C1 ; 0070 ;  MA      # ( ρ → p ) GREEK SMALL LETTER RHO → LATIN SMALL LETTER P  # 
+03F1 ; 0070 ;  MA      # ( ϱ → p ) GREEK RHO SYMBOL → LATIN SMALL LETTER P        # →ρ→
+1D6D2 ;        0070 ;  MA      # ( 𝛒 → p ) MATHEMATICAL BOLD SMALL RHO → LATIN SMALL LETTER P   # →ρ→
+1D6E0 ;        0070 ;  MA      # ( 𝛠 → p ) MATHEMATICAL BOLD RHO SYMBOL → LATIN SMALL LETTER P  # →ρ→
+1D70C ;        0070 ;  MA      # ( 𝜌 → p ) MATHEMATICAL ITALIC SMALL RHO → LATIN SMALL LETTER P # →ρ→
+1D71A ;        0070 ;  MA      # ( 𝜚 → p ) MATHEMATICAL ITALIC RHO SYMBOL → LATIN SMALL LETTER P        # →ρ→
+1D746 ;        0070 ;  MA      # ( 𝝆 → p ) MATHEMATICAL BOLD ITALIC SMALL RHO → LATIN SMALL LETTER P    # →ρ→
+1D754 ;        0070 ;  MA      # ( 𝝔 → p ) MATHEMATICAL BOLD ITALIC RHO SYMBOL → LATIN SMALL LETTER P   # →ρ→
+1D780 ;        0070 ;  MA      # ( 𝞀 → p ) MATHEMATICAL SANS-SERIF BOLD SMALL RHO → LATIN SMALL LETTER P        # →ρ→
+1D78E ;        0070 ;  MA      # ( 𝞎 → p ) MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL → LATIN SMALL LETTER P       # →ρ→
+1D7BA ;        0070 ;  MA      # ( 𝞺 → p ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO → LATIN SMALL LETTER P # →ρ→
+1D7C8 ;        0070 ;  MA      # ( 𝟈 → p ) MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL → LATIN SMALL LETTER P        # →ρ→
+2CA3 ; 0070 ;  MA      # ( ⲣ → p ) COPTIC SMALL LETTER RO → LATIN SMALL LETTER P # →ρ→
+0440 ; 0070 ;  MA      # ( р → p ) CYRILLIC SMALL LETTER ER → LATIN SMALL LETTER P        # 
+
+FF30 ; 0050 ;  MA      # ( P → P ) FULLWIDTH LATIN CAPITAL LETTER P → LATIN CAPITAL LETTER P     # →Р→
+2119 ; 0050 ;  MA      # ( ℙ → P ) DOUBLE-STRUCK CAPITAL P → LATIN CAPITAL LETTER P      # 
+1D40F ;        0050 ;  MA      # ( 𝐏 → P ) MATHEMATICAL BOLD CAPITAL P → LATIN CAPITAL LETTER P # 
+1D443 ;        0050 ;  MA      # ( 𝑃 → P ) MATHEMATICAL ITALIC CAPITAL P → LATIN CAPITAL LETTER P       # 
+1D477 ;        0050 ;  MA      # ( 𝑷 → P ) MATHEMATICAL BOLD ITALIC CAPITAL P → LATIN CAPITAL LETTER P  # 
+1D4AB ;        0050 ;  MA      # ( 𝒫 → P ) MATHEMATICAL SCRIPT CAPITAL P → LATIN CAPITAL LETTER P       # 
+1D4DF ;        0050 ;  MA      # ( 𝓟 → P ) MATHEMATICAL BOLD SCRIPT CAPITAL P → LATIN CAPITAL LETTER P  # 
+1D513 ;        0050 ;  MA      # ( 𝔓 → P ) MATHEMATICAL FRAKTUR CAPITAL P → LATIN CAPITAL LETTER P      # 
+1D57B ;        0050 ;  MA      # ( 𝕻 → P ) MATHEMATICAL BOLD FRAKTUR CAPITAL P → LATIN CAPITAL LETTER P # 
+1D5AF ;        0050 ;  MA      # ( 𝖯 → P ) MATHEMATICAL SANS-SERIF CAPITAL P → LATIN CAPITAL LETTER P   # 
+1D5E3 ;        0050 ;  MA      # ( 𝗣 → P ) MATHEMATICAL SANS-SERIF BOLD CAPITAL P → LATIN CAPITAL LETTER P      # 
+1D617 ;        0050 ;  MA      # ( 𝘗 → P ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL P → LATIN CAPITAL LETTER P    # 
+1D64B ;        0050 ;  MA      # ( 𝙋 → P ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P → LATIN CAPITAL LETTER P       # 
+1D67F ;        0050 ;  MA      # ( 𝙿 → P ) MATHEMATICAL MONOSPACE CAPITAL P → LATIN CAPITAL LETTER P    # 
+03A1 ; 0050 ;  MA      # ( Ρ → P ) GREEK CAPITAL LETTER RHO → LATIN CAPITAL LETTER P      # 
+1D6B8 ;        0050 ;  MA      # ( 𝚸 → P ) MATHEMATICAL BOLD CAPITAL RHO → LATIN CAPITAL LETTER P       # →𝐏→
+1D6F2 ;        0050 ;  MA      # ( 𝛲 → P ) MATHEMATICAL ITALIC CAPITAL RHO → LATIN CAPITAL LETTER P     # →𝑃→
+1D72C ;        0050 ;  MA      # ( 𝜬 → P ) MATHEMATICAL BOLD ITALIC CAPITAL RHO → LATIN CAPITAL LETTER P        # →𝑷→
+1D766 ;        0050 ;  MA      # ( 𝝦 → P ) MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO → LATIN CAPITAL LETTER P    # →Ρ→
+1D7A0 ;        0050 ;  MA      # ( 𝞠 → P ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO → LATIN CAPITAL LETTER P     # →Ρ→
+2CA2 ; 0050 ;  MA      # ( Ⲣ → P ) COPTIC CAPITAL LETTER RO → LATIN CAPITAL LETTER P     # 
+0420 ; 0050 ;  MA      # ( Р → P ) CYRILLIC CAPITAL LETTER ER → LATIN CAPITAL LETTER P    # 
+13E2 ; 0050 ;  MA      # ( Ꮲ → P ) CHEROKEE LETTER TLV → LATIN CAPITAL LETTER P  # 
+146D ; 0050 ;  MA      # ( ᑭ → P ) CANADIAN SYLLABICS KI → LATIN CAPITAL LETTER P        # 
+A4D1 ; 0050 ;  MA      # ( ꓑ → P ) LISU LETTER PA → LATIN CAPITAL LETTER P       # 
+
+01A5 ; 0070 0314 ;     MA      # ( ƥ → p̔ ) LATIN SMALL LETTER P WITH HOOK → LATIN SMALL LETTER P, COMBINING REVERSED COMMA ABOVE        # 
+
+1477 ; 0070 00B7 ;     MA      # ( ᑷ → p· ) CANADIAN SYLLABICS WEST-CREE KWI → LATIN SMALL LETTER P, MIDDLE DOT # →pᐧ→
+
+1486 ; 0050 144A ;     MA      # ( ᒆ → Pᑊ ) CANADIAN SYLLABICS SOUTH-SLAVEY KIH → LATIN CAPITAL LETTER P, CANADIAN SYLLABICS WEST-CREE P       # →ᑭᑊ→
+
+1D29 ; 1D18 ;  MA      # ( ᴩ → ᴘ ) GREEK LETTER SMALL CAPITAL RHO → LATIN LETTER SMALL CAPITAL P       # 
+
+03C6 ; 0278 ;  MA      # ( φ → ɸ ) GREEK SMALL LETTER PHI → LATIN SMALL LETTER PHI       # 
+03D5 ; 0278 ;  MA      # ( ϕ → ɸ ) GREEK PHI SYMBOL → LATIN SMALL LETTER PHI     # 
+1D6D7 ;        0278 ;  MA      # ( 𝛗 → ɸ ) MATHEMATICAL BOLD SMALL PHI → LATIN SMALL LETTER PHI        # →φ→
+1D6DF ;        0278 ;  MA      # ( 𝛟 → ɸ ) MATHEMATICAL BOLD PHI SYMBOL → LATIN SMALL LETTER PHI       # →φ→
+1D711 ;        0278 ;  MA      # ( 𝜑 → ɸ ) MATHEMATICAL ITALIC SMALL PHI → LATIN SMALL LETTER PHI      # →φ→
+1D719 ;        0278 ;  MA      # ( 𝜙 → ɸ ) MATHEMATICAL ITALIC PHI SYMBOL → LATIN SMALL LETTER PHI     # →φ→
+1D74B ;        0278 ;  MA      # ( 𝝋 → ɸ ) MATHEMATICAL BOLD ITALIC SMALL PHI → LATIN SMALL LETTER PHI # →φ→
+1D753 ;        0278 ;  MA      # ( 𝝓 → ɸ ) MATHEMATICAL BOLD ITALIC PHI SYMBOL → LATIN SMALL LETTER PHI        # →φ→
+1D785 ;        0278 ;  MA      # ( 𝞅 → ɸ ) MATHEMATICAL SANS-SERIF BOLD SMALL PHI → LATIN SMALL LETTER PHI     # →φ→
+1D78D ;        0278 ;  MA      # ( 𝞍 → ɸ ) MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL → LATIN SMALL LETTER PHI    # →φ→
+1D7BF ;        0278 ;  MA      # ( 𝞿 → ɸ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI → LATIN SMALL LETTER PHI      # →φ→
+1D7C7 ;        0278 ;  MA      # ( 𝟇 → ɸ ) MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL → LATIN SMALL LETTER PHI     # →φ→
+2CAB ; 0278 ;  MA      # ( ⲫ → ɸ ) COPTIC SMALL LETTER FI → LATIN SMALL LETTER PHI      # →ϕ→
+0444 ; 0278 ;  MA      # ( ф → ɸ ) CYRILLIC SMALL LETTER EF → LATIN SMALL LETTER PHI     # 
+
+1D42A ;        0071 ;  MA      # ( 𝐪 → q ) MATHEMATICAL BOLD SMALL Q → LATIN SMALL LETTER Q     # 
+1D45E ;        0071 ;  MA      # ( 𝑞 → q ) MATHEMATICAL ITALIC SMALL Q → LATIN SMALL LETTER Q   # 
+1D492 ;        0071 ;  MA      # ( 𝒒 → q ) MATHEMATICAL BOLD ITALIC SMALL Q → LATIN SMALL LETTER Q      # 
+1D4C6 ;        0071 ;  MA      # ( 𝓆 → q ) MATHEMATICAL SCRIPT SMALL Q → LATIN SMALL LETTER Q   # 
+1D4FA ;        0071 ;  MA      # ( 𝓺 → q ) MATHEMATICAL BOLD SCRIPT SMALL Q → LATIN SMALL LETTER Q      # 
+1D52E ;        0071 ;  MA      # ( 𝔮 → q ) MATHEMATICAL FRAKTUR SMALL Q → LATIN SMALL LETTER Q  # 
+1D562 ;        0071 ;  MA      # ( 𝕢 → q ) MATHEMATICAL DOUBLE-STRUCK SMALL Q → LATIN SMALL LETTER Q    # 
+1D596 ;        0071 ;  MA      # ( 𝖖 → q ) MATHEMATICAL BOLD FRAKTUR SMALL Q → LATIN SMALL LETTER Q     # 
+1D5CA ;        0071 ;  MA      # ( 𝗊 → q ) MATHEMATICAL SANS-SERIF SMALL Q → LATIN SMALL LETTER Q       # 
+1D5FE ;        0071 ;  MA      # ( 𝗾 → q ) MATHEMATICAL SANS-SERIF BOLD SMALL Q → LATIN SMALL LETTER Q  # 
+1D632 ;        0071 ;  MA      # ( 𝘲 → q ) MATHEMATICAL SANS-SERIF ITALIC SMALL Q → LATIN SMALL LETTER Q        # 
+1D666 ;        0071 ;  MA      # ( 𝙦 → q ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q → LATIN SMALL LETTER Q   # 
+1D69A ;        0071 ;  MA      # ( 𝚚 → q ) MATHEMATICAL MONOSPACE SMALL Q → LATIN SMALL LETTER Q        # 
+051B ; 0071 ;  MA      # ( ԛ → q ) CYRILLIC SMALL LETTER QA → LATIN SMALL LETTER Q        # 
+0563 ; 0071 ;  MA      # ( գ → q ) ARMENIAN SMALL LETTER GIM → LATIN SMALL LETTER Q       # 
+0566 ; 0071 ;  MA      # ( զ → q ) ARMENIAN SMALL LETTER ZA → LATIN SMALL LETTER Q        # 
+
+211A ; 0051 ;  MA      # ( ℚ → Q ) DOUBLE-STRUCK CAPITAL Q → LATIN CAPITAL LETTER Q      # 
+1D410 ;        0051 ;  MA      # ( 𝐐 → Q ) MATHEMATICAL BOLD CAPITAL Q → LATIN CAPITAL LETTER Q # 
+1D444 ;        0051 ;  MA      # ( 𝑄 → Q ) MATHEMATICAL ITALIC CAPITAL Q → LATIN CAPITAL LETTER Q       # 
+1D478 ;        0051 ;  MA      # ( 𝑸 → Q ) MATHEMATICAL BOLD ITALIC CAPITAL Q → LATIN CAPITAL LETTER Q  # 
+1D4AC ;        0051 ;  MA      # ( 𝒬 → Q ) MATHEMATICAL SCRIPT CAPITAL Q → LATIN CAPITAL LETTER Q       # 
+1D4E0 ;        0051 ;  MA      # ( 𝓠 → Q ) MATHEMATICAL BOLD SCRIPT CAPITAL Q → LATIN CAPITAL LETTER Q  # 
+1D514 ;        0051 ;  MA      # ( 𝔔 → Q ) MATHEMATICAL FRAKTUR CAPITAL Q → LATIN CAPITAL LETTER Q      # 
+1D57C ;        0051 ;  MA      # ( 𝕼 → Q ) MATHEMATICAL BOLD FRAKTUR CAPITAL Q → LATIN CAPITAL LETTER Q # 
+1D5B0 ;        0051 ;  MA      # ( 𝖰 → Q ) MATHEMATICAL SANS-SERIF CAPITAL Q → LATIN CAPITAL LETTER Q   # 
+1D5E4 ;        0051 ;  MA      # ( 𝗤 → Q ) MATHEMATICAL SANS-SERIF BOLD CAPITAL Q → LATIN CAPITAL LETTER Q      # 
+1D618 ;        0051 ;  MA      # ( 𝘘 → Q ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q → LATIN CAPITAL LETTER Q    # 
+1D64C ;        0051 ;  MA      # ( 𝙌 → Q ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q → LATIN CAPITAL LETTER Q       # 
+1D680 ;        0051 ;  MA      # ( 𝚀 → Q ) MATHEMATICAL MONOSPACE CAPITAL Q → LATIN CAPITAL LETTER Q    # 
+
+02A0 ; 0071 0314 ;     MA      # ( ʠ → q̔ ) LATIN SMALL LETTER Q WITH HOOK → LATIN SMALL LETTER Q, COMBINING REVERSED COMMA ABOVE        # 
+
+1D42B ;        0072 ;  MA      # ( 𝐫 → r ) MATHEMATICAL BOLD SMALL R → LATIN SMALL LETTER R     # 
+1D45F ;        0072 ;  MA      # ( 𝑟 → r ) MATHEMATICAL ITALIC SMALL R → LATIN SMALL LETTER R   # 
+1D493 ;        0072 ;  MA      # ( 𝒓 → r ) MATHEMATICAL BOLD ITALIC SMALL R → LATIN SMALL LETTER R      # 
+1D4C7 ;        0072 ;  MA      # ( 𝓇 → r ) MATHEMATICAL SCRIPT SMALL R → LATIN SMALL LETTER R   # 
+1D4FB ;        0072 ;  MA      # ( 𝓻 → r ) MATHEMATICAL BOLD SCRIPT SMALL R → LATIN SMALL LETTER R      # 
+1D52F ;        0072 ;  MA      # ( 𝔯 → r ) MATHEMATICAL FRAKTUR SMALL R → LATIN SMALL LETTER R  # 
+1D563 ;        0072 ;  MA      # ( 𝕣 → r ) MATHEMATICAL DOUBLE-STRUCK SMALL R → LATIN SMALL LETTER R    # 
+1D597 ;        0072 ;  MA      # ( 𝖗 → r ) MATHEMATICAL BOLD FRAKTUR SMALL R → LATIN SMALL LETTER R     # 
+1D5CB ;        0072 ;  MA      # ( 𝗋 → r ) MATHEMATICAL SANS-SERIF SMALL R → LATIN SMALL LETTER R       # 
+1D5FF ;        0072 ;  MA      # ( 𝗿 → r ) MATHEMATICAL SANS-SERIF BOLD SMALL R → LATIN SMALL LETTER R  # 
+1D633 ;        0072 ;  MA      # ( 𝘳 → r ) MATHEMATICAL SANS-SERIF ITALIC SMALL R → LATIN SMALL LETTER R        # 
+1D667 ;        0072 ;  MA      # ( 𝙧 → r ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R → LATIN SMALL LETTER R   # 
+1D69B ;        0072 ;  MA      # ( 𝚛 → r ) MATHEMATICAL MONOSPACE SMALL R → LATIN SMALL LETTER R        # 
+1D26 ; 0072 ;  MA      # ( ᴦ → r ) GREEK LETTER SMALL CAPITAL GAMMA → LATIN SMALL LETTER R       # →г→
+2C85 ; 0072 ;  MA      # ( ⲅ → r ) COPTIC SMALL LETTER GAMMA → LATIN SMALL LETTER R      # →г→
+0433 ; 0072 ;  MA      # ( г → r ) CYRILLIC SMALL LETTER GHE → LATIN SMALL LETTER R       # 
+
+211B ; 0052 ;  MA      # ( ℛ → R ) SCRIPT CAPITAL R → LATIN CAPITAL LETTER R     # 
+211C ; 0052 ;  MA      # ( ℜ → R ) BLACK-LETTER CAPITAL R → LATIN CAPITAL LETTER R       # 
+211D ; 0052 ;  MA      # ( ℝ → R ) DOUBLE-STRUCK CAPITAL R → LATIN CAPITAL LETTER R      # 
+1D411 ;        0052 ;  MA      # ( 𝐑 → R ) MATHEMATICAL BOLD CAPITAL R → LATIN CAPITAL LETTER R # 
+1D445 ;        0052 ;  MA      # ( 𝑅 → R ) MATHEMATICAL ITALIC CAPITAL R → LATIN CAPITAL LETTER R       # 
+1D479 ;        0052 ;  MA      # ( 𝑹 → R ) MATHEMATICAL BOLD ITALIC CAPITAL R → LATIN CAPITAL LETTER R  # 
+1D4E1 ;        0052 ;  MA      # ( 𝓡 → R ) MATHEMATICAL BOLD SCRIPT CAPITAL R → LATIN CAPITAL LETTER R  # 
+1D57D ;        0052 ;  MA      # ( 𝕽 → R ) MATHEMATICAL BOLD FRAKTUR CAPITAL R → LATIN CAPITAL LETTER R # 
+1D5B1 ;        0052 ;  MA      # ( 𝖱 → R ) MATHEMATICAL SANS-SERIF CAPITAL R → LATIN CAPITAL LETTER R   # 
+1D5E5 ;        0052 ;  MA      # ( 𝗥 → R ) MATHEMATICAL SANS-SERIF BOLD CAPITAL R → LATIN CAPITAL LETTER R      # 
+1D619 ;        0052 ;  MA      # ( 𝘙 → R ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL R → LATIN CAPITAL LETTER R    # 
+1D64D ;        0052 ;  MA      # ( 𝙍 → R ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R → LATIN CAPITAL LETTER R       # 
+1D681 ;        0052 ;  MA      # ( 𝚁 → R ) MATHEMATICAL MONOSPACE CAPITAL R → LATIN CAPITAL LETTER R    # 
+01A6 ; 0052 ;  MA      # ( Ʀ → R ) LATIN LETTER YR → LATIN CAPITAL LETTER R       # 
+13A1 ; 0052 ;  MA      # ( Ꭱ → R ) CHEROKEE LETTER E → LATIN CAPITAL LETTER R    # 
+13D2 ; 0052 ;  MA      # ( Ꮢ → R ) CHEROKEE LETTER SV → LATIN CAPITAL LETTER R   # →Ꭱ→
+1587 ; 0052 ;  MA      # ( ᖇ → R ) CANADIAN SYLLABICS TLHI → LATIN CAPITAL LETTER R      # 
+A4E3 ; 0052 ;  MA      # ( ꓣ → R ) LISU LETTER ZHA → LATIN CAPITAL LETTER R      # 
+
+027D ; 0072 0328 ;     MA      # ( ɽ → r̨ ) LATIN SMALL LETTER R WITH TAIL → LATIN SMALL LETTER R, COMBINING OGONEK      # 
+
+027C ; 0072 0329 ;     MA      # ( ɼ → r̩ ) LATIN SMALL LETTER R WITH LONG LEG → LATIN SMALL LETTER R, COMBINING VERTICAL LINE BELOW     # 
+
+0493 ; 0072 0335 ;     MA      # ( ғ → r̵ ) CYRILLIC SMALL LETTER GHE WITH STROKE → LATIN SMALL LETTER R, COMBINING SHORT STROKE OVERLAY # →г̵→
+
+006D ; 0072 006E ;     MA      # ( m → rn ) LATIN SMALL LETTER M → LATIN SMALL LETTER R, LATIN SMALL LETTER N      # 
+217F ; 0072 006E ;     MA      # ( ⅿ → rn ) SMALL ROMAN NUMERAL ONE THOUSAND → LATIN SMALL LETTER R, LATIN SMALL LETTER N        # →m→
+1D426 ;        0072 006E ;     MA      # ( 𝐦 → rn ) MATHEMATICAL BOLD SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N      # →m→
+1D45A ;        0072 006E ;     MA      # ( 𝑚 → rn ) MATHEMATICAL ITALIC SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N    # →m→
+1D48E ;        0072 006E ;     MA      # ( 𝒎 → rn ) MATHEMATICAL BOLD ITALIC SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N       # →m→
+1D4C2 ;        0072 006E ;     MA      # ( 𝓂 → rn ) MATHEMATICAL SCRIPT SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N    # →m→
+1D4F6 ;        0072 006E ;     MA      # ( 𝓶 → rn ) MATHEMATICAL BOLD SCRIPT SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N       # →m→
+1D52A ;        0072 006E ;     MA      # ( 𝔪 → rn ) MATHEMATICAL FRAKTUR SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N   # →m→
+1D55E ;        0072 006E ;     MA      # ( 𝕞 → rn ) MATHEMATICAL DOUBLE-STRUCK SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N     # →m→
+1D592 ;        0072 006E ;     MA      # ( 𝖒 → rn ) MATHEMATICAL BOLD FRAKTUR SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N      # →m→
+1D5C6 ;        0072 006E ;     MA      # ( 𝗆 → rn ) MATHEMATICAL SANS-SERIF SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N        # →m→
+1D5FA ;        0072 006E ;     MA      # ( 𝗺 → rn ) MATHEMATICAL SANS-SERIF BOLD SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N   # →m→
+1D62E ;        0072 006E ;     MA      # ( 𝘮 → rn ) MATHEMATICAL SANS-SERIF ITALIC SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N # →m→
+1D662 ;        0072 006E ;     MA      # ( 𝙢 → rn ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N    # →m→
+1D696 ;        0072 006E ;     MA      # ( 𝚖 → rn ) MATHEMATICAL MONOSPACE SMALL M → LATIN SMALL LETTER R, LATIN SMALL LETTER N # →m→
+028D ; 0072 006E ;     MA      # ( ʍ → rn ) LATIN SMALL LETTER TURNED W → LATIN SMALL LETTER R, LATIN SMALL LETTER N      # →m→
+
+0271 ; 0072 006E 0326 ;        MA      # ( ɱ → rn̦ ) LATIN SMALL LETTER M WITH HOOK → LATIN SMALL LETTER R, LATIN SMALL LETTER N, COMBINING COMMA BELOW  # →m̡→
+
+20A8 ; 0052 0073 ;     MA      #* ( ₨ → Rs ) RUPEE SIGN → LATIN CAPITAL LETTER R, LATIN SMALL LETTER S   # 
+
+0491 ; 0072 144A ;     MA      # ( ґ → rᑊ ) CYRILLIC SMALL LETTER GHE WITH UPTURN → LATIN SMALL LETTER R, CANADIAN SYLLABICS WEST-CREE P        # →гˈ→
+
+044F ; 1D19 ;  MA      # ( я → ᴙ ) CYRILLIC SMALL LETTER YA → LATIN LETTER SMALL CAPITAL REVERSED R     # 
+
+A4E4 ; 1D1A ;  MA      # ( ꓤ → ᴚ ) LISU LETTER ZA → LATIN LETTER SMALL CAPITAL TURNED R        # 
+
+2129 ; 027F ;  MA      #* ( ℩ → ɿ ) TURNED GREEK SMALL LETTER IOTA → LATIN SMALL LETTER REVERSED R WITH FISHHOOK        # 
+
+FF53 ; 0073 ;  MA      # ( s → s ) FULLWIDTH LATIN SMALL LETTER S → LATIN SMALL LETTER S # →ѕ→
+1D42C ;        0073 ;  MA      # ( 𝐬 → s ) MATHEMATICAL BOLD SMALL S → LATIN SMALL LETTER S     # 
+1D460 ;        0073 ;  MA      # ( 𝑠 → s ) MATHEMATICAL ITALIC SMALL S → LATIN SMALL LETTER S   # 
+1D494 ;        0073 ;  MA      # ( 𝒔 → s ) MATHEMATICAL BOLD ITALIC SMALL S → LATIN SMALL LETTER S      # 
+1D4C8 ;        0073 ;  MA      # ( 𝓈 → s ) MATHEMATICAL SCRIPT SMALL S → LATIN SMALL LETTER S   # 
+1D4FC ;        0073 ;  MA      # ( 𝓼 → s ) MATHEMATICAL BOLD SCRIPT SMALL S → LATIN SMALL LETTER S      # 
+1D530 ;        0073 ;  MA      # ( 𝔰 → s ) MATHEMATICAL FRAKTUR SMALL S → LATIN SMALL LETTER S  # 
+1D564 ;        0073 ;  MA      # ( 𝕤 → s ) MATHEMATICAL DOUBLE-STRUCK SMALL S → LATIN SMALL LETTER S    # 
+1D598 ;        0073 ;  MA      # ( 𝖘 → s ) MATHEMATICAL BOLD FRAKTUR SMALL S → LATIN SMALL LETTER S     # 
+1D5CC ;        0073 ;  MA      # ( 𝗌 → s ) MATHEMATICAL SANS-SERIF SMALL S → LATIN SMALL LETTER S       # 
+1D600 ;        0073 ;  MA      # ( 𝘀 → s ) MATHEMATICAL SANS-SERIF BOLD SMALL S → LATIN SMALL LETTER S  # 
+1D634 ;        0073 ;  MA      # ( 𝘴 → s ) MATHEMATICAL SANS-SERIF ITALIC SMALL S → LATIN SMALL LETTER S        # 
+1D668 ;        0073 ;  MA      # ( 𝙨 → s ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S → LATIN SMALL LETTER S   # 
+1D69C ;        0073 ;  MA      # ( 𝚜 → s ) MATHEMATICAL MONOSPACE SMALL S → LATIN SMALL LETTER S        # 
+A731 ; 0073 ;  MA      # ( ꜱ → s ) LATIN LETTER SMALL CAPITAL S → LATIN SMALL LETTER S   # 
+01BD ; 0073 ;  MA      # ( ƽ → s ) LATIN SMALL LETTER TONE FIVE → LATIN SMALL LETTER S    # 
+0455 ; 0073 ;  MA      # ( ѕ → s ) CYRILLIC SMALL LETTER DZE → LATIN SMALL LETTER S       # 
+
+FF33 ; 0053 ;  MA      # ( S → S ) FULLWIDTH LATIN CAPITAL LETTER S → LATIN CAPITAL LETTER S     # →Ѕ→
+1D412 ;        0053 ;  MA      # ( 𝐒 → S ) MATHEMATICAL BOLD CAPITAL S → LATIN CAPITAL LETTER S # 
+1D446 ;        0053 ;  MA      # ( 𝑆 → S ) MATHEMATICAL ITALIC CAPITAL S → LATIN CAPITAL LETTER S       # 
+1D47A ;        0053 ;  MA      # ( 𝑺 → S ) MATHEMATICAL BOLD ITALIC CAPITAL S → LATIN CAPITAL LETTER S  # 
+1D4AE ;        0053 ;  MA      # ( 𝒮 → S ) MATHEMATICAL SCRIPT CAPITAL S → LATIN CAPITAL LETTER S       # 
+1D4E2 ;        0053 ;  MA      # ( 𝓢 → S ) MATHEMATICAL BOLD SCRIPT CAPITAL S → LATIN CAPITAL LETTER S  # 
+1D516 ;        0053 ;  MA      # ( 𝔖 → S ) MATHEMATICAL FRAKTUR CAPITAL S → LATIN CAPITAL LETTER S      # 
+1D54A ;        0053 ;  MA      # ( 𝕊 → S ) MATHEMATICAL DOUBLE-STRUCK CAPITAL S → LATIN CAPITAL LETTER S        # 
+1D57E ;        0053 ;  MA      # ( 𝕾 → S ) MATHEMATICAL BOLD FRAKTUR CAPITAL S → LATIN CAPITAL LETTER S # 
+1D5B2 ;        0053 ;  MA      # ( 𝖲 → S ) MATHEMATICAL SANS-SERIF CAPITAL S → LATIN CAPITAL LETTER S   # 
+1D5E6 ;        0053 ;  MA      # ( 𝗦 → S ) MATHEMATICAL SANS-SERIF BOLD CAPITAL S → LATIN CAPITAL LETTER S      # 
+1D61A ;        0053 ;  MA      # ( 𝘚 → S ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL S → LATIN CAPITAL LETTER S    # 
+1D64E ;        0053 ;  MA      # ( 𝙎 → S ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S → LATIN CAPITAL LETTER S       # 
+1D682 ;        0053 ;  MA      # ( 𝚂 → S ) MATHEMATICAL MONOSPACE CAPITAL S → LATIN CAPITAL LETTER S    # 
+0405 ; 0053 ;  MA      # ( Ѕ → S ) CYRILLIC CAPITAL LETTER DZE → LATIN CAPITAL LETTER S   # 
+054F ; 0053 ;  MA      # ( Տ → S ) ARMENIAN CAPITAL LETTER TIWN → LATIN CAPITAL LETTER S  # 
+13D5 ; 0053 ;  MA      # ( Ꮥ → S ) CHEROKEE LETTER DE → LATIN CAPITAL LETTER S   # →Ꮪ→
+13DA ; 0053 ;  MA      # ( Ꮪ → S ) CHEROKEE LETTER DU → LATIN CAPITAL LETTER S   # 
+A4E2 ; 0053 ;  MA      # ( ꓢ → S ) LISU LETTER SA → LATIN CAPITAL LETTER S       # 
+
+0282 ; 0073 0328 ;     MA      # ( ʂ → s̨ ) LATIN SMALL LETTER S WITH HOOK → LATIN SMALL LETTER S, COMBINING OGONEK      # 
+
+03B2 ; 00DF ;  MA      # ( β → ß ) GREEK SMALL LETTER BETA → LATIN SMALL LETTER SHARP S  # 
+03D0 ; 00DF ;  MA      # ( ϐ → ß ) GREEK BETA SYMBOL → LATIN SMALL LETTER SHARP S        # →β→
+1D6C3 ;        00DF ;  MA      # ( 𝛃 → ß ) MATHEMATICAL BOLD SMALL BETA → LATIN SMALL LETTER SHARP S   # →β→
+1D6FD ;        00DF ;  MA      # ( 𝛽 → ß ) MATHEMATICAL ITALIC SMALL BETA → LATIN SMALL LETTER SHARP S # →β→
+1D737 ;        00DF ;  MA      # ( 𝜷 → ß ) MATHEMATICAL BOLD ITALIC SMALL BETA → LATIN SMALL LETTER SHARP S    # →β→
+1D771 ;        00DF ;  MA      # ( 𝝱 → ß ) MATHEMATICAL SANS-SERIF BOLD SMALL BETA → LATIN SMALL LETTER SHARP S        # →β→
+1D7AB ;        00DF ;  MA      # ( 𝞫 → ß ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA → LATIN SMALL LETTER SHARP S # →β→
+
+FB06 ; 0073 0074 ;     MA      # ( st → st ) LATIN SMALL LIGATURE ST → LATIN SMALL LETTER S, LATIN SMALL LETTER T # 
+
+222B ; 0283 ;  MA      #* ( ∫ → ʃ ) INTEGRAL → LATIN SMALL LETTER ESH   # 
+
+2211 ; 01A9 ;  MA      #* ( ∑ → Ʃ ) N-ARY SUMMATION → LATIN CAPITAL LETTER ESH  # 
+2140 ; 01A9 ;  MA      #* ( ⅀ → Ʃ ) DOUBLE-STRUCK N-ARY SUMMATION → LATIN CAPITAL LETTER ESH    # →∑→
+03A3 ; 01A9 ;  MA      # ( Σ → Ʃ ) GREEK CAPITAL LETTER SIGMA → LATIN CAPITAL LETTER ESH # 
+1D6BA ;        01A9 ;  MA      # ( 𝚺 → Ʃ ) MATHEMATICAL BOLD CAPITAL SIGMA → LATIN CAPITAL LETTER ESH  # →Σ→
+1D6F4 ;        01A9 ;  MA      # ( 𝛴 → Ʃ ) MATHEMATICAL ITALIC CAPITAL SIGMA → LATIN CAPITAL LETTER ESH        # →Σ→
+1D72E ;        01A9 ;  MA      # ( 𝜮 → Ʃ ) MATHEMATICAL BOLD ITALIC CAPITAL SIGMA → LATIN CAPITAL LETTER ESH   # →Σ→
+1D768 ;        01A9 ;  MA      # ( 𝝨 → Ʃ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA → LATIN CAPITAL LETTER ESH       # →Σ→
+1D7A2 ;        01A9 ;  MA      # ( 𝞢 → Ʃ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA → LATIN CAPITAL LETTER ESH        # →Σ→
+2D49 ; 01A9 ;  MA      # ( ⵉ → Ʃ ) TIFINAGH LETTER YI → LATIN CAPITAL LETTER ESH        # 
+
+222C ; 0283 0283 ;     MA      #* ( ∬ → ʃʃ ) DOUBLE INTEGRAL → LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH  # →∫∫→
+
+222D ; 0283 0283 0283 ;        MA      #* ( ∭ → ʃʃʃ ) TRIPLE INTEGRAL → LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH        # →∫∫∫→
+
+2A0C ; 0283 0283 0283 0283 ;   MA      #* ( ⨌ → ʃʃʃʃ ) QUADRUPLE INTEGRAL OPERATOR → LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH, LATIN SMALL LETTER ESH  # →∫∫∫∫→
+
+1D42D ;        0074 ;  MA      # ( 𝐭 → t ) MATHEMATICAL BOLD SMALL T → LATIN SMALL LETTER T     # 
+1D461 ;        0074 ;  MA      # ( 𝑡 → t ) MATHEMATICAL ITALIC SMALL T → LATIN SMALL LETTER T   # 
+1D495 ;        0074 ;  MA      # ( 𝒕 → t ) MATHEMATICAL BOLD ITALIC SMALL T → LATIN SMALL LETTER T      # 
+1D4C9 ;        0074 ;  MA      # ( 𝓉 → t ) MATHEMATICAL SCRIPT SMALL T → LATIN SMALL LETTER T   # 
+1D4FD ;        0074 ;  MA      # ( 𝓽 → t ) MATHEMATICAL BOLD SCRIPT SMALL T → LATIN SMALL LETTER T      # 
+1D531 ;        0074 ;  MA      # ( 𝔱 → t ) MATHEMATICAL FRAKTUR SMALL T → LATIN SMALL LETTER T  # 
+1D565 ;        0074 ;  MA      # ( 𝕥 → t ) MATHEMATICAL DOUBLE-STRUCK SMALL T → LATIN SMALL LETTER T    # 
+1D599 ;        0074 ;  MA      # ( 𝖙 → t ) MATHEMATICAL BOLD FRAKTUR SMALL T → LATIN SMALL LETTER T     # 
+1D5CD ;        0074 ;  MA      # ( 𝗍 → t ) MATHEMATICAL SANS-SERIF SMALL T → LATIN SMALL LETTER T       # 
+1D601 ;        0074 ;  MA      # ( 𝘁 → t ) MATHEMATICAL SANS-SERIF BOLD SMALL T → LATIN SMALL LETTER T  # 
+1D635 ;        0074 ;  MA      # ( 𝘵 → t ) MATHEMATICAL SANS-SERIF ITALIC SMALL T → LATIN SMALL LETTER T        # 
+1D669 ;        0074 ;  MA      # ( 𝙩 → t ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T → LATIN SMALL LETTER T   # 
+1D69D ;        0074 ;  MA      # ( 𝚝 → t ) MATHEMATICAL MONOSPACE SMALL T → LATIN SMALL LETTER T        # 
+1D1B ; 0074 ;  MA      # ( ᴛ → t ) LATIN LETTER SMALL CAPITAL T → LATIN SMALL LETTER T   # →т→→τ→
+03C4 ; 0074 ;  MA      # ( τ → t ) GREEK SMALL LETTER TAU → LATIN SMALL LETTER T  # 
+1D6D5 ;        0074 ;  MA      # ( 𝛕 → t ) MATHEMATICAL BOLD SMALL TAU → LATIN SMALL LETTER T   # →τ→
+1D70F ;        0074 ;  MA      # ( 𝜏 → t ) MATHEMATICAL ITALIC SMALL TAU → LATIN SMALL LETTER T # →τ→
+1D749 ;        0074 ;  MA      # ( 𝝉 → t ) MATHEMATICAL BOLD ITALIC SMALL TAU → LATIN SMALL LETTER T    # →τ→
+1D783 ;        0074 ;  MA      # ( 𝞃 → t ) MATHEMATICAL SANS-SERIF BOLD SMALL TAU → LATIN SMALL LETTER T        # →τ→
+1D7BD ;        0074 ;  MA      # ( 𝞽 → t ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU → LATIN SMALL LETTER T # →τ→
+0442 ; 0074 ;  MA      # ( т → t ) CYRILLIC SMALL LETTER TE → LATIN SMALL LETTER T        # →τ→
+
+27D9 ; 0054 ;  MA      #* ( ⟙ → T ) LARGE DOWN TACK → LATIN CAPITAL LETTER T     # 
+FF34 ; 0054 ;  MA      # ( T → T ) FULLWIDTH LATIN CAPITAL LETTER T → LATIN CAPITAL LETTER T     # →Т→
+1D413 ;        0054 ;  MA      # ( 𝐓 → T ) MATHEMATICAL BOLD CAPITAL T → LATIN CAPITAL LETTER T # 
+1D447 ;        0054 ;  MA      # ( 𝑇 → T ) MATHEMATICAL ITALIC CAPITAL T → LATIN CAPITAL LETTER T       # 
+1D47B ;        0054 ;  MA      # ( 𝑻 → T ) MATHEMATICAL BOLD ITALIC CAPITAL T → LATIN CAPITAL LETTER T  # 
+1D4AF ;        0054 ;  MA      # ( 𝒯 → T ) MATHEMATICAL SCRIPT CAPITAL T → LATIN CAPITAL LETTER T       # 
+1D4E3 ;        0054 ;  MA      # ( 𝓣 → T ) MATHEMATICAL BOLD SCRIPT CAPITAL T → LATIN CAPITAL LETTER T  # 
+1D517 ;        0054 ;  MA      # ( 𝔗 → T ) MATHEMATICAL FRAKTUR CAPITAL T → LATIN CAPITAL LETTER T      # 
+1D54B ;        0054 ;  MA      # ( 𝕋 → T ) MATHEMATICAL DOUBLE-STRUCK CAPITAL T → LATIN CAPITAL LETTER T        # 
+1D57F ;        0054 ;  MA      # ( 𝕿 → T ) MATHEMATICAL BOLD FRAKTUR CAPITAL T → LATIN CAPITAL LETTER T # 
+1D5B3 ;        0054 ;  MA      # ( 𝖳 → T ) MATHEMATICAL SANS-SERIF CAPITAL T → LATIN CAPITAL LETTER T   # 
+1D5E7 ;        0054 ;  MA      # ( 𝗧 → T ) MATHEMATICAL SANS-SERIF BOLD CAPITAL T → LATIN CAPITAL LETTER T      # 
+1D61B ;        0054 ;  MA      # ( 𝘛 → T ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL T → LATIN CAPITAL LETTER T    # 
+1D64F ;        0054 ;  MA      # ( 𝙏 → T ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T → LATIN CAPITAL LETTER T       # 
+1D683 ;        0054 ;  MA      # ( 𝚃 → T ) MATHEMATICAL MONOSPACE CAPITAL T → LATIN CAPITAL LETTER T    # 
+03A4 ; 0054 ;  MA      # ( Τ → T ) GREEK CAPITAL LETTER TAU → LATIN CAPITAL LETTER T      # 
+1D6BB ;        0054 ;  MA      # ( 𝚻 → T ) MATHEMATICAL BOLD CAPITAL TAU → LATIN CAPITAL LETTER T       # →𝐓→
+1D6F5 ;        0054 ;  MA      # ( 𝛵 → T ) MATHEMATICAL ITALIC CAPITAL TAU → LATIN CAPITAL LETTER T     # →𝑇→
+1D72F ;        0054 ;  MA      # ( 𝜯 → T ) MATHEMATICAL BOLD ITALIC CAPITAL TAU → LATIN CAPITAL LETTER T        # →𝑻→
+1D769 ;        0054 ;  MA      # ( 𝝩 → T ) MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU → LATIN CAPITAL LETTER T    # →Τ→
+1D7A3 ;        0054 ;  MA      # ( 𝞣 → T ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU → LATIN CAPITAL LETTER T     # →Τ→
+2CA6 ; 0054 ;  MA      # ( Ⲧ → T ) COPTIC CAPITAL LETTER TAU → LATIN CAPITAL LETTER T    # 
+0422 ; 0054 ;  MA      # ( Т → T ) CYRILLIC CAPITAL LETTER TE → LATIN CAPITAL LETTER T    # 
+13A2 ; 0054 ;  MA      # ( Ꭲ → T ) CHEROKEE LETTER I → LATIN CAPITAL LETTER T    # 
+A4D4 ; 0054 ;  MA      # ( ꓔ → T ) LISU LETTER TA → LATIN CAPITAL LETTER T       # 
+
+01AD ; 0074 0314 ;     MA      # ( ƭ → t̔ ) LATIN SMALL LETTER T WITH HOOK → LATIN SMALL LETTER T, COMBINING REVERSED COMMA ABOVE        # 
+
+021B ; 0163 ;  MA      # ( ț → ţ ) LATIN SMALL LETTER T WITH COMMA BELOW → LATIN SMALL LETTER T WITH CEDILLA     # 
+01AB ; 0163 ;  MA      # ( ƫ → ţ ) LATIN SMALL LETTER T WITH PALATAL HOOK → LATIN SMALL LETTER T WITH CEDILLA    # 
+
+021A ; 0162 ;  MA      # ( Ț → Ţ ) LATIN CAPITAL LETTER T WITH COMMA BELOW → LATIN CAPITAL LETTER T WITH CEDILLA # 
+
+01AE ; 0054 0328 ;     MA      # ( Ʈ → T̨ ) LATIN CAPITAL LETTER T WITH RETROFLEX HOOK → LATIN CAPITAL LETTER T, COMBINING OGONEK        # 
+
+04AD ; 0074 0329 ;     MA      # ( ҭ → t̩ ) CYRILLIC SMALL LETTER TE WITH DESCENDER → LATIN SMALL LETTER T, COMBINING VERTICAL LINE BELOW        # →т̩→
+
+04AC ; 0054 0329 ;     MA      # ( Ҭ → T̩ ) CYRILLIC CAPITAL LETTER TE WITH DESCENDER → LATIN CAPITAL LETTER T, COMBINING VERTICAL LINE BELOW    # →Т̩→
+
+0167 ; 0074 0335 ;     MA      # ( ŧ → t̵ ) LATIN SMALL LETTER T WITH STROKE → LATIN SMALL LETTER T, COMBINING SHORT STROKE OVERLAY      # 
+
+0166 ; 0054 0335 ;     MA      # ( Ŧ → T̵ ) LATIN CAPITAL LETTER T WITH STROKE → LATIN CAPITAL LETTER T, COMBINING SHORT STROKE OVERLAY  # 
+
+10A0 ; A786 ;  MA      # ( Ⴀ → Ꞇ ) GEORGIAN CAPITAL LETTER AN → LATIN CAPITAL LETTER INSULAR T # 
+
+A728 ; 0054 0033 ;     MA      # ( Ꜩ → T3 ) LATIN CAPITAL LETTER TZ → LATIN CAPITAL LETTER T, DIGIT THREE        # →TƷ→
+
+02A8 ; 0074 0255 ;     MA      # ( ʨ → tɕ ) LATIN SMALL LETTER TC DIGRAPH WITH CURL → LATIN SMALL LETTER T, LATIN SMALL LETTER C WITH CURL       # 
+
+2121 ; 0054 0045 004C ;        MA      #* ( ℡ → TEL ) TELEPHONE SIGN → LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER E, LATIN CAPITAL LETTER L    # 
+
+A777 ; 0074 0066 ;     MA      # ( ꝷ → tf ) LATIN SMALL LETTER TUM → LATIN SMALL LETTER T, LATIN SMALL LETTER F  # 
+
+02A6 ; 0074 0073 ;     MA      # ( ʦ → ts ) LATIN SMALL LETTER TS DIGRAPH → LATIN SMALL LETTER T, LATIN SMALL LETTER S    # 
+
+02A7 ; 0074 0283 ;     MA      # ( ʧ → tʃ ) LATIN SMALL LETTER TESH DIGRAPH → LATIN SMALL LETTER T, LATIN SMALL LETTER ESH       # 
+
+A729 ; 0074 021D ;     MA      # ( ꜩ → tȝ ) LATIN SMALL LETTER TZ → LATIN SMALL LETTER T, LATIN SMALL LETTER YOGH       # 
+
+1D42E ;        0075 ;  MA      # ( 𝐮 → u ) MATHEMATICAL BOLD SMALL U → LATIN SMALL LETTER U     # 
+1D462 ;        0075 ;  MA      # ( 𝑢 → u ) MATHEMATICAL ITALIC SMALL U → LATIN SMALL LETTER U   # 
+1D496 ;        0075 ;  MA      # ( 𝒖 → u ) MATHEMATICAL BOLD ITALIC SMALL U → LATIN SMALL LETTER U      # 
+1D4CA ;        0075 ;  MA      # ( 𝓊 → u ) MATHEMATICAL SCRIPT SMALL U → LATIN SMALL LETTER U   # 
+1D4FE ;        0075 ;  MA      # ( 𝓾 → u ) MATHEMATICAL BOLD SCRIPT SMALL U → LATIN SMALL LETTER U      # 
+1D532 ;        0075 ;  MA      # ( 𝔲 → u ) MATHEMATICAL FRAKTUR SMALL U → LATIN SMALL LETTER U  # 
+1D566 ;        0075 ;  MA      # ( 𝕦 → u ) MATHEMATICAL DOUBLE-STRUCK SMALL U → LATIN SMALL LETTER U    # 
+1D59A ;        0075 ;  MA      # ( 𝖚 → u ) MATHEMATICAL BOLD FRAKTUR SMALL U → LATIN SMALL LETTER U     # 
+1D5CE ;        0075 ;  MA      # ( 𝗎 → u ) MATHEMATICAL SANS-SERIF SMALL U → LATIN SMALL LETTER U       # 
+1D602 ;        0075 ;  MA      # ( 𝘂 → u ) MATHEMATICAL SANS-SERIF BOLD SMALL U → LATIN SMALL LETTER U  # 
+1D636 ;        0075 ;  MA      # ( 𝘶 → u ) MATHEMATICAL SANS-SERIF ITALIC SMALL U → LATIN SMALL LETTER U        # 
+1D66A ;        0075 ;  MA      # ( 𝙪 → u ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U → LATIN SMALL LETTER U   # 
+1D69E ;        0075 ;  MA      # ( 𝚞 → u ) MATHEMATICAL MONOSPACE SMALL U → LATIN SMALL LETTER U        # 
+1D1C ; 0075 ;  MA      # ( ᴜ → u ) LATIN LETTER SMALL CAPITAL U → LATIN SMALL LETTER U   # 
+028B ; 0075 ;  MA      # ( ʋ → u ) LATIN SMALL LETTER V WITH HOOK → LATIN SMALL LETTER U  # 
+03C5 ; 0075 ;  MA      # ( υ → u ) GREEK SMALL LETTER UPSILON → LATIN SMALL LETTER U      # →ʋ→
+1D6D6 ;        0075 ;  MA      # ( 𝛖 → u ) MATHEMATICAL BOLD SMALL UPSILON → LATIN SMALL LETTER U       # →υ→→ʋ→
+1D710 ;        0075 ;  MA      # ( 𝜐 → u ) MATHEMATICAL ITALIC SMALL UPSILON → LATIN SMALL LETTER U     # →υ→→ʋ→
+1D74A ;        0075 ;  MA      # ( 𝝊 → u ) MATHEMATICAL BOLD ITALIC SMALL UPSILON → LATIN SMALL LETTER U        # →υ→→ʋ→
+1D784 ;        0075 ;  MA      # ( 𝞄 → u ) MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON → LATIN SMALL LETTER U    # →υ→→ʋ→
+1D7BE ;        0075 ;  MA      # ( 𝞾 → u ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON → LATIN SMALL LETTER U     # →υ→→ʋ→
+0446 ; 0075 ;  MA      # ( ц → u ) CYRILLIC SMALL LETTER TSE → LATIN SMALL LETTER U       # 
+057D ; 0075 ;  MA      # ( ս → u ) ARMENIAN SMALL LETTER SEH → LATIN SMALL LETTER U       # 
+
+1D414 ;        0055 ;  MA      # ( 𝐔 → U ) MATHEMATICAL BOLD CAPITAL U → LATIN CAPITAL LETTER U # 
+1D448 ;        0055 ;  MA      # ( 𝑈 → U ) MATHEMATICAL ITALIC CAPITAL U → LATIN CAPITAL LETTER U       # 
+1D47C ;        0055 ;  MA      # ( 𝑼 → U ) MATHEMATICAL BOLD ITALIC CAPITAL U → LATIN CAPITAL LETTER U  # 
+1D4B0 ;        0055 ;  MA      # ( 𝒰 → U ) MATHEMATICAL SCRIPT CAPITAL U → LATIN CAPITAL LETTER U       # 
+1D4E4 ;        0055 ;  MA      # ( 𝓤 → U ) MATHEMATICAL BOLD SCRIPT CAPITAL U → LATIN CAPITAL LETTER U  # 
+1D518 ;        0055 ;  MA      # ( 𝔘 → U ) MATHEMATICAL FRAKTUR CAPITAL U → LATIN CAPITAL LETTER U      # 
+1D54C ;        0055 ;  MA      # ( 𝕌 → U ) MATHEMATICAL DOUBLE-STRUCK CAPITAL U → LATIN CAPITAL LETTER U        # 
+1D580 ;        0055 ;  MA      # ( 𝖀 → U ) MATHEMATICAL BOLD FRAKTUR CAPITAL U → LATIN CAPITAL LETTER U # 
+1D5B4 ;        0055 ;  MA      # ( 𝖴 → U ) MATHEMATICAL SANS-SERIF CAPITAL U → LATIN CAPITAL LETTER U   # 
+1D5E8 ;        0055 ;  MA      # ( 𝗨 → U ) MATHEMATICAL SANS-SERIF BOLD CAPITAL U → LATIN CAPITAL LETTER U      # 
+1D61C ;        0055 ;  MA      # ( 𝘜 → U ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL U → LATIN CAPITAL LETTER U    # 
+1D650 ;        0055 ;  MA      # ( 𝙐 → U ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U → LATIN CAPITAL LETTER U       # 
+1D684 ;        0055 ;  MA      # ( 𝚄 → U ) MATHEMATICAL MONOSPACE CAPITAL U → LATIN CAPITAL LETTER U    # 
+054D ; 0055 ;  MA      # ( Ս → U ) ARMENIAN CAPITAL LETTER SEH → LATIN CAPITAL LETTER U   # 
+144C ; 0055 ;  MA      # ( ᑌ → U ) CANADIAN SYLLABICS TE → LATIN CAPITAL LETTER U        # 
+A4F4 ; 0055 ;  MA      # ( ꓴ → U ) LISU LETTER U → LATIN CAPITAL LETTER U        # 
+
+01D4 ; 016D ;  MA      # ( ǔ → ŭ ) LATIN SMALL LETTER U WITH CARON → LATIN SMALL LETTER U WITH BREVE     # 
+
+01D3 ; 016C ;  MA      # ( Ǔ → Ŭ ) LATIN CAPITAL LETTER U WITH CARON → LATIN CAPITAL LETTER U WITH BREVE # 
+
+1458 ; 0055 00B7 ;     MA      # ( ᑘ → U· ) CANADIAN SYLLABICS WEST-CREE TWE → LATIN CAPITAL LETTER U, MIDDLE DOT       # →ᑌᐧ→→ᑌ·→
+
+1467 ; 0055 144A ;     MA      # ( ᑧ → Uᑊ ) CANADIAN SYLLABICS TTE → LATIN CAPITAL LETTER U, CANADIAN SYLLABICS WEST-CREE P    # →ᑌᑊ→
+
+057A ; 0270 ;  MA      # ( պ → ɰ ) ARMENIAN SMALL LETTER PEH → LATIN SMALL LETTER TURNED M WITH LONG LEG # 
+
+2127 ; 01B1 ;  MA      #* ( ℧ → Ʊ ) INVERTED OHM SIGN → LATIN CAPITAL LETTER UPSILON    # 
+162E ; 01B1 ;  MA      # ( ᘮ → Ʊ ) CANADIAN SYLLABICS CARRIER LHU → LATIN CAPITAL LETTER UPSILON        # →℧→
+1634 ; 01B1 ;  MA      # ( ᘴ → Ʊ ) CANADIAN SYLLABICS CARRIER TLHU → LATIN CAPITAL LETTER UPSILON       # →ᘮ→→℧→
+
+2228 ; 0076 ;  MA      #* ( ∨ → v ) LOGICAL OR → LATIN SMALL LETTER V    # 
+22C1 ; 0076 ;  MA      #* ( ⋁ → v ) N-ARY LOGICAL OR → LATIN SMALL LETTER V      # →∨→
+FF56 ; 0076 ;  MA      # ( v → v ) FULLWIDTH LATIN SMALL LETTER V → LATIN SMALL LETTER V # →ν→
+2174 ; 0076 ;  MA      # ( ⅴ → v ) SMALL ROMAN NUMERAL FIVE → LATIN SMALL LETTER V       # 
+1D42F ;        0076 ;  MA      # ( 𝐯 → v ) MATHEMATICAL BOLD SMALL V → LATIN SMALL LETTER V     # 
+1D463 ;        0076 ;  MA      # ( 𝑣 → v ) MATHEMATICAL ITALIC SMALL V → LATIN SMALL LETTER V   # 
+1D497 ;        0076 ;  MA      # ( 𝒗 → v ) MATHEMATICAL BOLD ITALIC SMALL V → LATIN SMALL LETTER V      # 
+1D4CB ;        0076 ;  MA      # ( 𝓋 → v ) MATHEMATICAL SCRIPT SMALL V → LATIN SMALL LETTER V   # 
+1D4FF ;        0076 ;  MA      # ( 𝓿 → v ) MATHEMATICAL BOLD SCRIPT SMALL V → LATIN SMALL LETTER V      # 
+1D533 ;        0076 ;  MA      # ( 𝔳 → v ) MATHEMATICAL FRAKTUR SMALL V → LATIN SMALL LETTER V  # 
+1D567 ;        0076 ;  MA      # ( 𝕧 → v ) MATHEMATICAL DOUBLE-STRUCK SMALL V → LATIN SMALL LETTER V    # 
+1D59B ;        0076 ;  MA      # ( 𝖛 → v ) MATHEMATICAL BOLD FRAKTUR SMALL V → LATIN SMALL LETTER V     # 
+1D5CF ;        0076 ;  MA      # ( 𝗏 → v ) MATHEMATICAL SANS-SERIF SMALL V → LATIN SMALL LETTER V       # 
+1D603 ;        0076 ;  MA      # ( 𝘃 → v ) MATHEMATICAL SANS-SERIF BOLD SMALL V → LATIN SMALL LETTER V  # 
+1D637 ;        0076 ;  MA      # ( 𝘷 → v ) MATHEMATICAL SANS-SERIF ITALIC SMALL V → LATIN SMALL LETTER V        # 
+1D66B ;        0076 ;  MA      # ( 𝙫 → v ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V → LATIN SMALL LETTER V   # 
+1D69F ;        0076 ;  MA      # ( 𝚟 → v ) MATHEMATICAL MONOSPACE SMALL V → LATIN SMALL LETTER V        # 
+1D20 ; 0076 ;  MA      # ( ᴠ → v ) LATIN LETTER SMALL CAPITAL V → LATIN SMALL LETTER V   # 
+03BD ; 0076 ;  MA      # ( ν → v ) GREEK SMALL LETTER NU → LATIN SMALL LETTER V   # 
+1D6CE ;        0076 ;  MA      # ( 𝛎 → v ) MATHEMATICAL BOLD SMALL NU → LATIN SMALL LETTER V    # →ν→
+1D708 ;        0076 ;  MA      # ( 𝜈 → v ) MATHEMATICAL ITALIC SMALL NU → LATIN SMALL LETTER V  # →ν→
+1D742 ;        0076 ;  MA      # ( 𝝂 → v ) MATHEMATICAL BOLD ITALIC SMALL NU → LATIN SMALL LETTER V     # →ν→
+1D77C ;        0076 ;  MA      # ( 𝝼 → v ) MATHEMATICAL SANS-SERIF BOLD SMALL NU → LATIN SMALL LETTER V # →ν→
+1D7B6 ;        0076 ;  MA      # ( 𝞶 → v ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU → LATIN SMALL LETTER V  # →ν→
+0475 ; 0076 ;  MA      # ( ѵ → v ) CYRILLIC SMALL LETTER IZHITSA → LATIN SMALL LETTER V   # 
+05D8 ; 0076 ;  MA      # ( ‎ט‎ → v ) HEBREW LETTER TET → LATIN SMALL LETTER V # 
+
+2164 ; 0056 ;  MA      # ( Ⅴ → V ) ROMAN NUMERAL FIVE → LATIN CAPITAL LETTER V   # 
+1D415 ;        0056 ;  MA      # ( 𝐕 → V ) MATHEMATICAL BOLD CAPITAL V → LATIN CAPITAL LETTER V # 
+1D449 ;        0056 ;  MA      # ( 𝑉 → V ) MATHEMATICAL ITALIC CAPITAL V → LATIN CAPITAL LETTER V       # 
+1D47D ;        0056 ;  MA      # ( 𝑽 → V ) MATHEMATICAL BOLD ITALIC CAPITAL V → LATIN CAPITAL LETTER V  # 
+1D4B1 ;        0056 ;  MA      # ( 𝒱 → V ) MATHEMATICAL SCRIPT CAPITAL V → LATIN CAPITAL LETTER V       # 
+1D4E5 ;        0056 ;  MA      # ( 𝓥 → V ) MATHEMATICAL BOLD SCRIPT CAPITAL V → LATIN CAPITAL LETTER V  # 
+1D519 ;        0056 ;  MA      # ( 𝔙 → V ) MATHEMATICAL FRAKTUR CAPITAL V → LATIN CAPITAL LETTER V      # 
+1D54D ;        0056 ;  MA      # ( 𝕍 → V ) MATHEMATICAL DOUBLE-STRUCK CAPITAL V → LATIN CAPITAL LETTER V        # 
+1D581 ;        0056 ;  MA      # ( 𝖁 → V ) MATHEMATICAL BOLD FRAKTUR CAPITAL V → LATIN CAPITAL LETTER V # 
+1D5B5 ;        0056 ;  MA      # ( 𝖵 → V ) MATHEMATICAL SANS-SERIF CAPITAL V → LATIN CAPITAL LETTER V   # 
+1D5E9 ;        0056 ;  MA      # ( 𝗩 → V ) MATHEMATICAL SANS-SERIF BOLD CAPITAL V → LATIN CAPITAL LETTER V      # 
+1D61D ;        0056 ;  MA      # ( 𝘝 → V ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL V → LATIN CAPITAL LETTER V    # 
+1D651 ;        0056 ;  MA      # ( 𝙑 → V ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V → LATIN CAPITAL LETTER V       # 
+1D685 ;        0056 ;  MA      # ( 𝚅 → V ) MATHEMATICAL MONOSPACE CAPITAL V → LATIN CAPITAL LETTER V    # 
+0474 ; 0056 ;  MA      # ( Ѵ → V ) CYRILLIC CAPITAL LETTER IZHITSA → LATIN CAPITAL LETTER V       # 
+2D38 ; 0056 ;  MA      # ( ⴸ → V ) TIFINAGH LETTER YADH → LATIN CAPITAL LETTER V # 
+13D9 ; 0056 ;  MA      # ( Ꮩ → V ) CHEROKEE LETTER DO → LATIN CAPITAL LETTER V   # 
+142F ; 0056 ;  MA      # ( ᐯ → V ) CANADIAN SYLLABICS PE → LATIN CAPITAL LETTER V        # 
+A4E6 ; 0056 ;  MA      # ( ꓦ → V ) LISU LETTER HA → LATIN CAPITAL LETTER V       # 
+
+2175 ; 0076 0069 ;     MA      # ( ⅵ → vi ) SMALL ROMAN NUMERAL SIX → LATIN SMALL LETTER V, LATIN SMALL LETTER I # 
+
+2165 ; 0056 0049 ;     MA      # ( Ⅵ → VI ) ROMAN NUMERAL SIX → LATIN CAPITAL LETTER V, LATIN CAPITAL LETTER I   # 
+
+2176 ; 0076 0069 0069 ;        MA      # ( ⅶ → vii ) SMALL ROMAN NUMERAL SEVEN → LATIN SMALL LETTER V, LATIN SMALL LETTER I, LATIN SMALL LETTER I        # 
+
+2166 ; 0056 0049 0049 ;        MA      # ( Ⅶ → VII ) ROMAN NUMERAL SEVEN → LATIN CAPITAL LETTER V, LATIN CAPITAL LETTER I, LATIN CAPITAL LETTER I        # 
+
+2177 ; 0076 0069 0069 0069 ;   MA      # ( ⅷ → viii ) SMALL ROMAN NUMERAL EIGHT → LATIN SMALL LETTER V, LATIN SMALL LETTER I, LATIN SMALL LETTER I, LATIN SMALL LETTER I # 
+
+2167 ; 0056 0049 0049 0049 ;   MA      # ( Ⅷ → VIII ) ROMAN NUMERAL EIGHT → LATIN CAPITAL LETTER V, LATIN CAPITAL LETTER I, LATIN CAPITAL LETTER I, LATIN CAPITAL LETTER I       # 
+
+026F ; 0076 0076 ;     MA      # ( ɯ → vv ) LATIN SMALL LETTER TURNED M → LATIN SMALL LETTER V, LATIN SMALL LETTER V      # →w→
+0077 ; 0076 0076 ;     MA      # ( w → vv ) LATIN SMALL LETTER W → LATIN SMALL LETTER V, LATIN SMALL LETTER V      # 
+1D430 ;        0076 0076 ;     MA      # ( 𝐰 → vv ) MATHEMATICAL BOLD SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V      # →w→
+1D464 ;        0076 0076 ;     MA      # ( 𝑤 → vv ) MATHEMATICAL ITALIC SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V    # →w→
+1D498 ;        0076 0076 ;     MA      # ( 𝒘 → vv ) MATHEMATICAL BOLD ITALIC SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V       # →w→
+1D4CC ;        0076 0076 ;     MA      # ( 𝓌 → vv ) MATHEMATICAL SCRIPT SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V    # →w→
+1D500 ;        0076 0076 ;     MA      # ( 𝔀 → vv ) MATHEMATICAL BOLD SCRIPT SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V       # →w→
+1D534 ;        0076 0076 ;     MA      # ( 𝔴 → vv ) MATHEMATICAL FRAKTUR SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V   # →w→
+1D568 ;        0076 0076 ;     MA      # ( 𝕨 → vv ) MATHEMATICAL DOUBLE-STRUCK SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V     # →w→
+1D59C ;        0076 0076 ;     MA      # ( 𝖜 → vv ) MATHEMATICAL BOLD FRAKTUR SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V      # →w→
+1D5D0 ;        0076 0076 ;     MA      # ( 𝗐 → vv ) MATHEMATICAL SANS-SERIF SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V        # →w→
+1D604 ;        0076 0076 ;     MA      # ( 𝘄 → vv ) MATHEMATICAL SANS-SERIF BOLD SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V   # →w→
+1D638 ;        0076 0076 ;     MA      # ( 𝘸 → vv ) MATHEMATICAL SANS-SERIF ITALIC SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V # →w→
+1D66C ;        0076 0076 ;     MA      # ( 𝙬 → vv ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V    # →w→
+1D6A0 ;        0076 0076 ;     MA      # ( 𝚠 → vv ) MATHEMATICAL MONOSPACE SMALL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V # →w→
+1D21 ; 0076 0076 ;     MA      # ( ᴡ → vv ) LATIN LETTER SMALL CAPITAL W → LATIN SMALL LETTER V, LATIN SMALL LETTER V    # →w→
+0461 ; 0076 0076 ;     MA      # ( ѡ → vv ) CYRILLIC SMALL LETTER OMEGA → LATIN SMALL LETTER V, LATIN SMALL LETTER V      # →w→
+051D ; 0076 0076 ;     MA      # ( ԝ → vv ) CYRILLIC SMALL LETTER WE → LATIN SMALL LETTER V, LATIN SMALL LETTER V # →w→
+0561 ; 0076 0076 ;     MA      # ( ա → vv ) ARMENIAN SMALL LETTER AYB → LATIN SMALL LETTER V, LATIN SMALL LETTER V        # →ɯ→→w→
+
+047D ; 0076 0076 0483 ;        MA      # ( ѽ → vv҃ ) CYRILLIC SMALL LETTER OMEGA WITH TITLO → LATIN SMALL LETTER V, LATIN SMALL LETTER V, COMBINING CYRILLIC TITLO       # →ѡ҃→
+
+A761 ; 0076 0079 ;     MA      # ( ꝡ → vy ) LATIN SMALL LETTER VY → LATIN SMALL LETTER V, LATIN SMALL LETTER Y   # 
+
+1D27 ; 028C ;  MA      # ( ᴧ → ʌ ) GREEK LETTER SMALL CAPITAL LAMDA → LATIN SMALL LETTER TURNED V       # 
+
+039B ; 0245 ;  MA      # ( Λ → Ʌ ) GREEK CAPITAL LETTER LAMDA → LATIN CAPITAL LETTER TURNED V    # 
+1D6B2 ;        0245 ;  MA      # ( 𝚲 → Ʌ ) MATHEMATICAL BOLD CAPITAL LAMDA → LATIN CAPITAL LETTER TURNED V     # →Λ→
+1D6EC ;        0245 ;  MA      # ( 𝛬 → Ʌ ) MATHEMATICAL ITALIC CAPITAL LAMDA → LATIN CAPITAL LETTER TURNED V   # →Λ→
+1D726 ;        0245 ;  MA      # ( 𝜦 → Ʌ ) MATHEMATICAL BOLD ITALIC CAPITAL LAMDA → LATIN CAPITAL LETTER TURNED V      # →Λ→
+1D760 ;        0245 ;  MA      # ( 𝝠 → Ʌ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA → LATIN CAPITAL LETTER TURNED V  # →Λ→
+1D79A ;        0245 ;  MA      # ( 𝞚 → Ʌ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA → LATIN CAPITAL LETTER TURNED V   # →Λ→
+041B ; 0245 ;  MA      # ( Л → Ʌ ) CYRILLIC CAPITAL LETTER EL → LATIN CAPITAL LETTER TURNED V    # →Λ→
+2D37 ; 0245 ;  MA      # ( ⴷ → Ʌ ) TIFINAGH LETTER YAD → LATIN CAPITAL LETTER TURNED V  # 
+1431 ; 0245 ;  MA      # ( ᐱ → Ʌ ) CANADIAN SYLLABICS PI → LATIN CAPITAL LETTER TURNED V        # 
+A4E5 ; 0245 ;  MA      # ( ꓥ → Ʌ ) LISU LETTER NGA → LATIN CAPITAL LETTER TURNED V      # 
+
+04C5 ; 0245 0326 ;     MA      # ( Ӆ → Ʌ̦ ) CYRILLIC CAPITAL LETTER EL WITH TAIL → LATIN CAPITAL LETTER TURNED V, COMBINING COMMA BELOW # →Л̡→
+
+1D416 ;        0057 ;  MA      # ( 𝐖 → W ) MATHEMATICAL BOLD CAPITAL W → LATIN CAPITAL LETTER W # 
+1D44A ;        0057 ;  MA      # ( 𝑊 → W ) MATHEMATICAL ITALIC CAPITAL W → LATIN CAPITAL LETTER W       # 
+1D47E ;        0057 ;  MA      # ( 𝑾 → W ) MATHEMATICAL BOLD ITALIC CAPITAL W → LATIN CAPITAL LETTER W  # 
+1D4B2 ;        0057 ;  MA      # ( 𝒲 → W ) MATHEMATICAL SCRIPT CAPITAL W → LATIN CAPITAL LETTER W       # 
+1D4E6 ;        0057 ;  MA      # ( 𝓦 → W ) MATHEMATICAL BOLD SCRIPT CAPITAL W → LATIN CAPITAL LETTER W  # 
+1D51A ;        0057 ;  MA      # ( 𝔚 → W ) MATHEMATICAL FRAKTUR CAPITAL W → LATIN CAPITAL LETTER W      # 
+1D54E ;        0057 ;  MA      # ( 𝕎 → W ) MATHEMATICAL DOUBLE-STRUCK CAPITAL W → LATIN CAPITAL LETTER W        # 
+1D582 ;        0057 ;  MA      # ( 𝖂 → W ) MATHEMATICAL BOLD FRAKTUR CAPITAL W → LATIN CAPITAL LETTER W # 
+1D5B6 ;        0057 ;  MA      # ( 𝖶 → W ) MATHEMATICAL SANS-SERIF CAPITAL W → LATIN CAPITAL LETTER W   # 
+1D5EA ;        0057 ;  MA      # ( 𝗪 → W ) MATHEMATICAL SANS-SERIF BOLD CAPITAL W → LATIN CAPITAL LETTER W      # 
+1D61E ;        0057 ;  MA      # ( 𝘞 → W ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL W → LATIN CAPITAL LETTER W    # 
+1D652 ;        0057 ;  MA      # ( 𝙒 → W ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W → LATIN CAPITAL LETTER W       # 
+1D686 ;        0057 ;  MA      # ( 𝚆 → W ) MATHEMATICAL MONOSPACE CAPITAL W → LATIN CAPITAL LETTER W    # 
+051C ; 0057 ;  MA      # ( Ԝ → W ) CYRILLIC CAPITAL LETTER WE → LATIN CAPITAL LETTER W    # 
+13B3 ; 0057 ;  MA      # ( Ꮃ → W ) CHEROKEE LETTER LA → LATIN CAPITAL LETTER W   # 
+13D4 ; 0057 ;  MA      # ( Ꮤ → W ) CHEROKEE LETTER TA → LATIN CAPITAL LETTER W   # →Ꮃ→
+A4EA ; 0057 ;  MA      # ( ꓪ → W ) LISU LETTER WA → LATIN CAPITAL LETTER W       # 
+
+20A9 ; 0057 0335 ;     MA      #* ( ₩ → W̵ ) WON SIGN → LATIN CAPITAL LETTER W, COMBINING SHORT STROKE OVERLAY  # 
+
+166E ; 0078 ;  MA      #* ( ᙮ → x ) CANADIAN SYLLABICS FULL STOP → LATIN SMALL LETTER X  # 
+00D7 ; 0078 ;  MA      #* ( × → x ) MULTIPLICATION SIGN → LATIN SMALL LETTER X    # 
+2573 ; 0078 ;  MA      #* ( ╳ → x ) BOX DRAWINGS LIGHT DIAGONAL CROSS → LATIN SMALL LETTER X     # 
+292B ; 0078 ;  MA      #* ( ⤫ → x ) RISING DIAGONAL CROSSING FALLING DIAGONAL → LATIN SMALL LETTER X     # 
+292C ; 0078 ;  MA      #* ( ⤬ → x ) FALLING DIAGONAL CROSSING RISING DIAGONAL → LATIN SMALL LETTER X     # 
+2A2F ; 0078 ;  MA      #* ( ⨯ → x ) VECTOR OR CROSS PRODUCT → LATIN SMALL LETTER X       # →×→
+FF58 ; 0078 ;  MA      # ( x → x ) FULLWIDTH LATIN SMALL LETTER X → LATIN SMALL LETTER X # →х→
+2179 ; 0078 ;  MA      # ( ⅹ → x ) SMALL ROMAN NUMERAL TEN → LATIN SMALL LETTER X        # 
+1D431 ;        0078 ;  MA      # ( 𝐱 → x ) MATHEMATICAL BOLD SMALL X → LATIN SMALL LETTER X     # 
+1D465 ;        0078 ;  MA      # ( 𝑥 → x ) MATHEMATICAL ITALIC SMALL X → LATIN SMALL LETTER X   # 
+1D499 ;        0078 ;  MA      # ( 𝒙 → x ) MATHEMATICAL BOLD ITALIC SMALL X → LATIN SMALL LETTER X      # 
+1D4CD ;        0078 ;  MA      # ( 𝓍 → x ) MATHEMATICAL SCRIPT SMALL X → LATIN SMALL LETTER X   # 
+1D501 ;        0078 ;  MA      # ( 𝔁 → x ) MATHEMATICAL BOLD SCRIPT SMALL X → LATIN SMALL LETTER X      # 
+1D535 ;        0078 ;  MA      # ( 𝔵 → x ) MATHEMATICAL FRAKTUR SMALL X → LATIN SMALL LETTER X  # 
+1D569 ;        0078 ;  MA      # ( 𝕩 → x ) MATHEMATICAL DOUBLE-STRUCK SMALL X → LATIN SMALL LETTER X    # 
+1D59D ;        0078 ;  MA      # ( 𝖝 → x ) MATHEMATICAL BOLD FRAKTUR SMALL X → LATIN SMALL LETTER X     # 
+1D5D1 ;        0078 ;  MA      # ( 𝗑 → x ) MATHEMATICAL SANS-SERIF SMALL X → LATIN SMALL LETTER X       # 
+1D605 ;        0078 ;  MA      # ( 𝘅 → x ) MATHEMATICAL SANS-SERIF BOLD SMALL X → LATIN SMALL LETTER X  # 
+1D639 ;        0078 ;  MA      # ( 𝘹 → x ) MATHEMATICAL SANS-SERIF ITALIC SMALL X → LATIN SMALL LETTER X        # 
+1D66D ;        0078 ;  MA      # ( 𝙭 → x ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X → LATIN SMALL LETTER X   # 
+1D6A1 ;        0078 ;  MA      # ( 𝚡 → x ) MATHEMATICAL MONOSPACE SMALL X → LATIN SMALL LETTER X        # 
+0445 ; 0078 ;  MA      # ( х → x ) CYRILLIC SMALL LETTER HA → LATIN SMALL LETTER X        # 
+1541 ; 0078 ;  MA      # ( ᕁ → x ) CANADIAN SYLLABICS SAYISI YI → LATIN SMALL LETTER X   # →᙮→
+157D ; 0078 ;  MA      # ( ᕽ → x ) CANADIAN SYLLABICS HK → LATIN SMALL LETTER X  # →ᕁ→→᙮→
+
+166D ; 0058 ;  MA      #* ( ᙭ → X ) CANADIAN SYLLABICS CHI SIGN → LATIN CAPITAL LETTER X # 
+FF38 ; 0058 ;  MA      # ( X → X ) FULLWIDTH LATIN CAPITAL LETTER X → LATIN CAPITAL LETTER X     # →Χ→
+2169 ; 0058 ;  MA      # ( Ⅹ → X ) ROMAN NUMERAL TEN → LATIN CAPITAL LETTER X    # 
+1D417 ;        0058 ;  MA      # ( 𝐗 → X ) MATHEMATICAL BOLD CAPITAL X → LATIN CAPITAL LETTER X # 
+1D44B ;        0058 ;  MA      # ( 𝑋 → X ) MATHEMATICAL ITALIC CAPITAL X → LATIN CAPITAL LETTER X       # 
+1D47F ;        0058 ;  MA      # ( 𝑿 → X ) MATHEMATICAL BOLD ITALIC CAPITAL X → LATIN CAPITAL LETTER X  # 
+1D4B3 ;        0058 ;  MA      # ( 𝒳 → X ) MATHEMATICAL SCRIPT CAPITAL X → LATIN CAPITAL LETTER X       # 
+1D4E7 ;        0058 ;  MA      # ( 𝓧 → X ) MATHEMATICAL BOLD SCRIPT CAPITAL X → LATIN CAPITAL LETTER X  # 
+1D51B ;        0058 ;  MA      # ( 𝔛 → X ) MATHEMATICAL FRAKTUR CAPITAL X → LATIN CAPITAL LETTER X      # 
+1D54F ;        0058 ;  MA      # ( 𝕏 → X ) MATHEMATICAL DOUBLE-STRUCK CAPITAL X → LATIN CAPITAL LETTER X        # 
+1D583 ;        0058 ;  MA      # ( 𝖃 → X ) MATHEMATICAL BOLD FRAKTUR CAPITAL X → LATIN CAPITAL LETTER X # 
+1D5B7 ;        0058 ;  MA      # ( 𝖷 → X ) MATHEMATICAL SANS-SERIF CAPITAL X → LATIN CAPITAL LETTER X   # 
+1D5EB ;        0058 ;  MA      # ( 𝗫 → X ) MATHEMATICAL SANS-SERIF BOLD CAPITAL X → LATIN CAPITAL LETTER X      # 
+1D61F ;        0058 ;  MA      # ( 𝘟 → X ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL X → LATIN CAPITAL LETTER X    # 
+1D653 ;        0058 ;  MA      # ( 𝙓 → X ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X → LATIN CAPITAL LETTER X       # 
+1D687 ;        0058 ;  MA      # ( 𝚇 → X ) MATHEMATICAL MONOSPACE CAPITAL X → LATIN CAPITAL LETTER X    # 
+03A7 ; 0058 ;  MA      # ( Χ → X ) GREEK CAPITAL LETTER CHI → LATIN CAPITAL LETTER X      # 
+1D6BE ;        0058 ;  MA      # ( 𝚾 → X ) MATHEMATICAL BOLD CAPITAL CHI → LATIN CAPITAL LETTER X       # →𝐗→
+1D6F8 ;        0058 ;  MA      # ( 𝛸 → X ) MATHEMATICAL ITALIC CAPITAL CHI → LATIN CAPITAL LETTER X     # →𝑋→
+1D732 ;        0058 ;  MA      # ( 𝜲 → X ) MATHEMATICAL BOLD ITALIC CAPITAL CHI → LATIN CAPITAL LETTER X        # →𝑿→
+1D76C ;        0058 ;  MA      # ( 𝝬 → X ) MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI → LATIN CAPITAL LETTER X    # →Χ→
+1D7A6 ;        0058 ;  MA      # ( 𝞦 → X ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI → LATIN CAPITAL LETTER X     # →Χ→
+2CAC ; 0058 ;  MA      # ( Ⲭ → X ) COPTIC CAPITAL LETTER KHI → LATIN CAPITAL LETTER X    # →Χ→
+0425 ; 0058 ;  MA      # ( Х → X ) CYRILLIC CAPITAL LETTER HA → LATIN CAPITAL LETTER X    # 
+2D5D ; 0058 ;  MA      # ( ⵝ → X ) TIFINAGH LETTER YATH → LATIN CAPITAL LETTER X # 
+A4EB ; 0058 ;  MA      # ( ꓫ → X ) LISU LETTER SHA → LATIN CAPITAL LETTER X      # 
+
+2A30 ; 0078 0307 ;     MA      #* ( ⨰ → ẋ ) MULTIPLICATION SIGN WITH DOT ABOVE → LATIN SMALL LETTER X, COMBINING DOT ABOVE     # →×̇→
+
+04B2 ; 0058 0329 ;     MA      # ( Ҳ → X̩ ) CYRILLIC CAPITAL LETTER HA WITH DESCENDER → LATIN CAPITAL LETTER X, COMBINING VERTICAL LINE BELOW    # →Х̩→
+
+217A ; 0078 0069 ;     MA      # ( ⅺ → xi ) SMALL ROMAN NUMERAL ELEVEN → LATIN SMALL LETTER X, LATIN SMALL LETTER I      # 
+
+216A ; 0058 0049 ;     MA      # ( Ⅺ → XI ) ROMAN NUMERAL ELEVEN → LATIN CAPITAL LETTER X, LATIN CAPITAL LETTER I        # 
+
+217B ; 0078 0069 0069 ;        MA      # ( ⅻ → xii ) SMALL ROMAN NUMERAL TWELVE → LATIN SMALL LETTER X, LATIN SMALL LETTER I, LATIN SMALL LETTER I       # 
+
+216B ; 0058 0049 0049 ;        MA      # ( Ⅻ → XII ) ROMAN NUMERAL TWELVE → LATIN CAPITAL LETTER X, LATIN CAPITAL LETTER I, LATIN CAPITAL LETTER I       # 
+
+1D8C ; 0079 ;  MA      # ( ᶌ → y ) LATIN SMALL LETTER V WITH PALATAL HOOK → LATIN SMALL LETTER Y # 
+FF59 ; 0079 ;  MA      # ( y → y ) FULLWIDTH LATIN SMALL LETTER Y → LATIN SMALL LETTER Y # →у→
+1D432 ;        0079 ;  MA      # ( 𝐲 → y ) MATHEMATICAL BOLD SMALL Y → LATIN SMALL LETTER Y     # 
+1D466 ;        0079 ;  MA      # ( 𝑦 → y ) MATHEMATICAL ITALIC SMALL Y → LATIN SMALL LETTER Y   # 
+1D49A ;        0079 ;  MA      # ( 𝒚 → y ) MATHEMATICAL BOLD ITALIC SMALL Y → LATIN SMALL LETTER Y      # 
+1D4CE ;        0079 ;  MA      # ( 𝓎 → y ) MATHEMATICAL SCRIPT SMALL Y → LATIN SMALL LETTER Y   # 
+1D502 ;        0079 ;  MA      # ( 𝔂 → y ) MATHEMATICAL BOLD SCRIPT SMALL Y → LATIN SMALL LETTER Y      # 
+1D536 ;        0079 ;  MA      # ( 𝔶 → y ) MATHEMATICAL FRAKTUR SMALL Y → LATIN SMALL LETTER Y  # 
+1D56A ;        0079 ;  MA      # ( 𝕪 → y ) MATHEMATICAL DOUBLE-STRUCK SMALL Y → LATIN SMALL LETTER Y    # 
+1D59E ;        0079 ;  MA      # ( 𝖞 → y ) MATHEMATICAL BOLD FRAKTUR SMALL Y → LATIN SMALL LETTER Y     # 
+1D5D2 ;        0079 ;  MA      # ( 𝗒 → y ) MATHEMATICAL SANS-SERIF SMALL Y → LATIN SMALL LETTER Y       # 
+1D606 ;        0079 ;  MA      # ( 𝘆 → y ) MATHEMATICAL SANS-SERIF BOLD SMALL Y → LATIN SMALL LETTER Y  # 
+1D63A ;        0079 ;  MA      # ( 𝘺 → y ) MATHEMATICAL SANS-SERIF ITALIC SMALL Y → LATIN SMALL LETTER Y        # 
+1D66E ;        0079 ;  MA      # ( 𝙮 → y ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y → LATIN SMALL LETTER Y   # 
+1D6A2 ;        0079 ;  MA      # ( 𝚢 → y ) MATHEMATICAL MONOSPACE SMALL Y → LATIN SMALL LETTER Y        # 
+028F ; 0079 ;  MA      # ( ʏ → y ) LATIN LETTER SMALL CAPITAL Y → LATIN SMALL LETTER Y    # →ү→→у→
+1EFF ; 0079 ;  MA      # ( ỿ → y ) LATIN SMALL LETTER Y WITH LOOP → LATIN SMALL LETTER Y # 
+03B3 ; 0079 ;  MA      # ( γ → y ) GREEK SMALL LETTER GAMMA → LATIN SMALL LETTER Y        # 
+213D ; 0079 ;  MA      # ( ℽ → y ) DOUBLE-STRUCK SMALL GAMMA → LATIN SMALL LETTER Y      # →γ→
+1D6C4 ;        0079 ;  MA      # ( 𝛄 → y ) MATHEMATICAL BOLD SMALL GAMMA → LATIN SMALL LETTER Y # →γ→
+1D6FE ;        0079 ;  MA      # ( 𝛾 → y ) MATHEMATICAL ITALIC SMALL GAMMA → LATIN SMALL LETTER Y       # →γ→
+1D738 ;        0079 ;  MA      # ( 𝜸 → y ) MATHEMATICAL BOLD ITALIC SMALL GAMMA → LATIN SMALL LETTER Y  # →γ→
+1D772 ;        0079 ;  MA      # ( 𝝲 → y ) MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA → LATIN SMALL LETTER Y      # →γ→
+1D7AC ;        0079 ;  MA      # ( 𝞬 → y ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA → LATIN SMALL LETTER Y       # →γ→
+0443 ; 0079 ;  MA      # ( у → y ) CYRILLIC SMALL LETTER U → LATIN SMALL LETTER Y # 
+04AF ; 0079 ;  MA      # ( ү → y ) CYRILLIC SMALL LETTER STRAIGHT U → LATIN SMALL LETTER Y        # →у→
+10E7 ; 0079 ;  MA      # ( ყ → y ) GEORGIAN LETTER QAR → LATIN SMALL LETTER Y    # 
+
+FF39 ; 0059 ;  MA      # ( Y → Y ) FULLWIDTH LATIN CAPITAL LETTER Y → LATIN CAPITAL LETTER Y     # →Υ→
+1D418 ;        0059 ;  MA      # ( 𝐘 → Y ) MATHEMATICAL BOLD CAPITAL Y → LATIN CAPITAL LETTER Y # 
+1D44C ;        0059 ;  MA      # ( 𝑌 → Y ) MATHEMATICAL ITALIC CAPITAL Y → LATIN CAPITAL LETTER Y       # 
+1D480 ;        0059 ;  MA      # ( 𝒀 → Y ) MATHEMATICAL BOLD ITALIC CAPITAL Y → LATIN CAPITAL LETTER Y  # 
+1D4B4 ;        0059 ;  MA      # ( 𝒴 → Y ) MATHEMATICAL SCRIPT CAPITAL Y → LATIN CAPITAL LETTER Y       # 
+1D4E8 ;        0059 ;  MA      # ( 𝓨 → Y ) MATHEMATICAL BOLD SCRIPT CAPITAL Y → LATIN CAPITAL LETTER Y  # 
+1D51C ;        0059 ;  MA      # ( 𝔜 → Y ) MATHEMATICAL FRAKTUR CAPITAL Y → LATIN CAPITAL LETTER Y      # 
+1D550 ;        0059 ;  MA      # ( 𝕐 → Y ) MATHEMATICAL DOUBLE-STRUCK CAPITAL Y → LATIN CAPITAL LETTER Y        # 
+1D584 ;        0059 ;  MA      # ( 𝖄 → Y ) MATHEMATICAL BOLD FRAKTUR CAPITAL Y → LATIN CAPITAL LETTER Y # 
+1D5B8 ;        0059 ;  MA      # ( 𝖸 → Y ) MATHEMATICAL SANS-SERIF CAPITAL Y → LATIN CAPITAL LETTER Y   # 
+1D5EC ;        0059 ;  MA      # ( 𝗬 → Y ) MATHEMATICAL SANS-SERIF BOLD CAPITAL Y → LATIN CAPITAL LETTER Y      # 
+1D620 ;        0059 ;  MA      # ( 𝘠 → Y ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y → LATIN CAPITAL LETTER Y    # 
+1D654 ;        0059 ;  MA      # ( 𝙔 → Y ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y → LATIN CAPITAL LETTER Y       # 
+1D688 ;        0059 ;  MA      # ( 𝚈 → Y ) MATHEMATICAL MONOSPACE CAPITAL Y → LATIN CAPITAL LETTER Y    # 
+03A5 ; 0059 ;  MA      # ( Υ → Y ) GREEK CAPITAL LETTER UPSILON → LATIN CAPITAL LETTER Y  # 
+03D2 ; 0059 ;  MA      # ( ϒ → Y ) GREEK UPSILON WITH HOOK SYMBOL → LATIN CAPITAL LETTER Y        # 
+1D6BC ;        0059 ;  MA      # ( 𝚼 → Y ) MATHEMATICAL BOLD CAPITAL UPSILON → LATIN CAPITAL LETTER Y   # →Υ→
+1D6F6 ;        0059 ;  MA      # ( 𝛶 → Y ) MATHEMATICAL ITALIC CAPITAL UPSILON → LATIN CAPITAL LETTER Y # →Υ→
+1D730 ;        0059 ;  MA      # ( 𝜰 → Y ) MATHEMATICAL BOLD ITALIC CAPITAL UPSILON → LATIN CAPITAL LETTER Y    # →Υ→
+1D76A ;        0059 ;  MA      # ( 𝝪 → Y ) MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON → LATIN CAPITAL LETTER Y        # →Υ→
+1D7A4 ;        0059 ;  MA      # ( 𝞤 → Y ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON → LATIN CAPITAL LETTER Y # →Υ→
+2CA8 ; 0059 ;  MA      # ( Ⲩ → Y ) COPTIC CAPITAL LETTER UA → LATIN CAPITAL LETTER Y     # 
+04AE ; 0059 ;  MA      # ( Ү → Y ) CYRILLIC CAPITAL LETTER STRAIGHT U → LATIN CAPITAL LETTER Y    # 
+13A9 ; 0059 ;  MA      # ( Ꭹ → Y ) CHEROKEE LETTER GI → LATIN CAPITAL LETTER Y   # 
+13BD ; 0059 ;  MA      # ( Ꮍ → Y ) CHEROKEE LETTER MU → LATIN CAPITAL LETTER Y   # →Ꭹ→
+A4EC ; 0059 ;  MA      # ( ꓬ → Y ) LISU LETTER YA → LATIN CAPITAL LETTER Y       # 
+
+01B4 ; 0079 0314 ;     MA      # ( ƴ → y̔ ) LATIN SMALL LETTER Y WITH HOOK → LATIN SMALL LETTER Y, COMBINING REVERSED COMMA ABOVE        # 
+
+04B1 ; 0079 0335 ;     MA      # ( ұ → y̵ ) CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE → LATIN SMALL LETTER Y, COMBINING SHORT STROKE OVERLAY  # →ү̵→
+
+00A5 ; 0059 0335 ;     MA      #* ( ¥ → Y̵ ) YEN SIGN → LATIN CAPITAL LETTER Y, COMBINING SHORT STROKE OVERLAY   # 
+04B0 ; 0059 0335 ;     MA      # ( Ұ → Y̵ ) CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE → LATIN CAPITAL LETTER Y, COMBINING SHORT STROKE OVERLAY      # →Ү̵→
+
+1D433 ;        007A ;  MA      # ( 𝐳 → z ) MATHEMATICAL BOLD SMALL Z → LATIN SMALL LETTER Z     # 
+1D467 ;        007A ;  MA      # ( 𝑧 → z ) MATHEMATICAL ITALIC SMALL Z → LATIN SMALL LETTER Z   # 
+1D49B ;        007A ;  MA      # ( 𝒛 → z ) MATHEMATICAL BOLD ITALIC SMALL Z → LATIN SMALL LETTER Z      # 
+1D4CF ;        007A ;  MA      # ( 𝓏 → z ) MATHEMATICAL SCRIPT SMALL Z → LATIN SMALL LETTER Z   # 
+1D503 ;        007A ;  MA      # ( 𝔃 → z ) MATHEMATICAL BOLD SCRIPT SMALL Z → LATIN SMALL LETTER Z      # 
+1D537 ;        007A ;  MA      # ( 𝔷 → z ) MATHEMATICAL FRAKTUR SMALL Z → LATIN SMALL LETTER Z  # 
+1D56B ;        007A ;  MA      # ( 𝕫 → z ) MATHEMATICAL DOUBLE-STRUCK SMALL Z → LATIN SMALL LETTER Z    # 
+1D59F ;        007A ;  MA      # ( 𝖟 → z ) MATHEMATICAL BOLD FRAKTUR SMALL Z → LATIN SMALL LETTER Z     # 
+1D5D3 ;        007A ;  MA      # ( 𝗓 → z ) MATHEMATICAL SANS-SERIF SMALL Z → LATIN SMALL LETTER Z       # 
+1D607 ;        007A ;  MA      # ( 𝘇 → z ) MATHEMATICAL SANS-SERIF BOLD SMALL Z → LATIN SMALL LETTER Z  # 
+1D63B ;        007A ;  MA      # ( 𝘻 → z ) MATHEMATICAL SANS-SERIF ITALIC SMALL Z → LATIN SMALL LETTER Z        # 
+1D66F ;        007A ;  MA      # ( 𝙯 → z ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z → LATIN SMALL LETTER Z   # 
+1D6A3 ;        007A ;  MA      # ( 𝚣 → z ) MATHEMATICAL MONOSPACE SMALL Z → LATIN SMALL LETTER Z        # 
+1D22 ; 007A ;  MA      # ( ᴢ → z ) LATIN LETTER SMALL CAPITAL Z → LATIN SMALL LETTER Z   # 
+
+FF3A ; 005A ;  MA      # ( Z → Z ) FULLWIDTH LATIN CAPITAL LETTER Z → LATIN CAPITAL LETTER Z     # →Ζ→
+2124 ; 005A ;  MA      # ( ℤ → Z ) DOUBLE-STRUCK CAPITAL Z → LATIN CAPITAL LETTER Z      # 
+2128 ; 005A ;  MA      # ( ℨ → Z ) BLACK-LETTER CAPITAL Z → LATIN CAPITAL LETTER Z       # 
+1D419 ;        005A ;  MA      # ( 𝐙 → Z ) MATHEMATICAL BOLD CAPITAL Z → LATIN CAPITAL LETTER Z # 
+1D44D ;        005A ;  MA      # ( 𝑍 → Z ) MATHEMATICAL ITALIC CAPITAL Z → LATIN CAPITAL LETTER Z       # 
+1D481 ;        005A ;  MA      # ( 𝒁 → Z ) MATHEMATICAL BOLD ITALIC CAPITAL Z → LATIN CAPITAL LETTER Z  # 
+1D4B5 ;        005A ;  MA      # ( 𝒵 → Z ) MATHEMATICAL SCRIPT CAPITAL Z → LATIN CAPITAL LETTER Z       # 
+1D4E9 ;        005A ;  MA      # ( 𝓩 → Z ) MATHEMATICAL BOLD SCRIPT CAPITAL Z → LATIN CAPITAL LETTER Z  # 
+1D585 ;        005A ;  MA      # ( 𝖅 → Z ) MATHEMATICAL BOLD FRAKTUR CAPITAL Z → LATIN CAPITAL LETTER Z # 
+1D5B9 ;        005A ;  MA      # ( 𝖹 → Z ) MATHEMATICAL SANS-SERIF CAPITAL Z → LATIN CAPITAL LETTER Z   # 
+1D5ED ;        005A ;  MA      # ( 𝗭 → Z ) MATHEMATICAL SANS-SERIF BOLD CAPITAL Z → LATIN CAPITAL LETTER Z      # 
+1D621 ;        005A ;  MA      # ( 𝘡 → Z ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z → LATIN CAPITAL LETTER Z    # 
+1D655 ;        005A ;  MA      # ( 𝙕 → Z ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z → LATIN CAPITAL LETTER Z       # 
+1D689 ;        005A ;  MA      # ( 𝚉 → Z ) MATHEMATICAL MONOSPACE CAPITAL Z → LATIN CAPITAL LETTER Z    # 
+0396 ; 005A ;  MA      # ( Ζ → Z ) GREEK CAPITAL LETTER ZETA → LATIN CAPITAL LETTER Z     # 
+1D6AD ;        005A ;  MA      # ( 𝚭 → Z ) MATHEMATICAL BOLD CAPITAL ZETA → LATIN CAPITAL LETTER Z      # →𝐙→
+1D6E7 ;        005A ;  MA      # ( 𝛧 → Z ) MATHEMATICAL ITALIC CAPITAL ZETA → LATIN CAPITAL LETTER Z    # →Ζ→
+1D721 ;        005A ;  MA      # ( 𝜡 → Z ) MATHEMATICAL BOLD ITALIC CAPITAL ZETA → LATIN CAPITAL LETTER Z       # →Ζ→
+1D75B ;        005A ;  MA      # ( 𝝛 → Z ) MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA → LATIN CAPITAL LETTER Z   # →Ζ→
+1D795 ;        005A ;  MA      # ( 𝞕 → Z ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA → LATIN CAPITAL LETTER Z    # →Ζ→
+13C3 ; 005A ;  MA      # ( Ꮓ → Z ) CHEROKEE LETTER NO → LATIN CAPITAL LETTER Z   # 
+A4DC ; 005A ;  MA      # ( ꓜ → Z ) LISU LETTER DZA → LATIN CAPITAL LETTER Z      # 
+
+0290 ; 007A 0328 ;     MA      # ( ʐ → z̨ ) LATIN SMALL LETTER Z WITH RETROFLEX HOOK → LATIN SMALL LETTER Z, COMBINING OGONEK    # →z̢→
+
+0225 ; 007A 0326 ;     MA      # ( ȥ → z̦ ) LATIN SMALL LETTER Z WITH HOOK → LATIN SMALL LETTER Z, COMBINING COMMA BELOW # →z̡→
+
+0224 ; 005A 0326 ;     MA      # ( Ȥ → Z̦ ) LATIN CAPITAL LETTER Z WITH HOOK → LATIN CAPITAL LETTER Z, COMBINING COMMA BELOW     # →Z̧→
+
+01B6 ; 007A 0335 ;     MA      # ( ƶ → z̵ ) LATIN SMALL LETTER Z WITH STROKE → LATIN SMALL LETTER Z, COMBINING SHORT STROKE OVERLAY      # 
+
+01B5 ; 005A 0335 ;     MA      # ( Ƶ → Z̵ ) LATIN CAPITAL LETTER Z WITH STROKE → LATIN CAPITAL LETTER Z, COMBINING SHORT STROKE OVERLAY  # 
+
+0292 ; 021D ;  MA      # ( ʒ → ȝ ) LATIN SMALL LETTER EZH → LATIN SMALL LETTER YOGH      # 
+A76B ; 021D ;  MA      # ( ꝫ → ȝ ) LATIN SMALL LETTER ET → LATIN SMALL LETTER YOGH      # 
+2CCD ; 021D ;  MA      # ( ⳍ → ȝ ) COPTIC SMALL LETTER OLD COPTIC HORI → LATIN SMALL LETTER YOGH        # 
+04E1 ; 021D ;  MA      # ( ӡ → ȝ ) CYRILLIC SMALL LETTER ABKHASIAN DZE → LATIN SMALL LETTER YOGH # →ʒ→
+10F3 ; 021D ;  MA      # ( ჳ → ȝ ) GEORGIAN LETTER WE → LATIN SMALL LETTER YOGH # →ʒ→
+
+01BF ; 00FE ;  MA      # ( ƿ → þ ) LATIN LETTER WYNN → LATIN SMALL LETTER THORN  # 
+03F8 ; 00FE ;  MA      # ( ϸ → þ ) GREEK SMALL LETTER SHO → LATIN SMALL LETTER THORN     # 
+
+03F7 ; 00DE ;  MA      # ( Ϸ → Þ ) GREEK CAPITAL LETTER SHO → LATIN CAPITAL LETTER THORN # 
+
+1D24 ; 01A8 ;  MA      # ( ᴤ → ƨ ) LATIN LETTER VOICED LARYNGEAL SPIRANT → LATIN SMALL LETTER TONE TWO  # 
+03E9 ; 01A8 ;  MA      # ( ϩ → ƨ ) COPTIC SMALL LETTER HORI → LATIN SMALL LETTER TONE TWO        # 
+A645 ; 01A8 ;  MA      # ( ꙅ → ƨ ) CYRILLIC SMALL LETTER REVERSED DZE → LATIN SMALL LETTER TONE TWO     # 
+
+044C ; 0185 ;  MA      # ( ь → ƅ ) CYRILLIC SMALL LETTER SOFT SIGN → LATIN SMALL LETTER TONE SIX # 
+
+02C1 ; 02E4 ;  MA      # ( ˁ → ˤ ) MODIFIER LETTER REVERSED GLOTTAL STOP → MODIFIER LETTER SMALL REVERSED GLOTTAL STOP   # 
+
+1D7CB ;        03DD ;  MA      # ( 𝟋 → ϝ ) MATHEMATICAL BOLD SMALL DIGAMMA → GREEK SMALL LETTER DIGAMMA        # 
+
+1D6C7 ;        03B6 ;  MA      # ( 𝛇 → ζ ) MATHEMATICAL BOLD SMALL ZETA → GREEK SMALL LETTER ZETA      # 
+1D701 ;        03B6 ;  MA      # ( 𝜁 → ζ ) MATHEMATICAL ITALIC SMALL ZETA → GREEK SMALL LETTER ZETA    # 
+1D73B ;        03B6 ;  MA      # ( 𝜻 → ζ ) MATHEMATICAL BOLD ITALIC SMALL ZETA → GREEK SMALL LETTER ZETA       # 
+1D775 ;        03B6 ;  MA      # ( 𝝵 → ζ ) MATHEMATICAL SANS-SERIF BOLD SMALL ZETA → GREEK SMALL LETTER ZETA   # 
+1D7AF ;        03B6 ;  MA      # ( 𝞯 → ζ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA → GREEK SMALL LETTER ZETA    # 
+
+2CE4 ; 03D7 ;  MA      # ( ⳤ → ϗ ) COPTIC SYMBOL KAI → GREEK KAI SYMBOL # 
+
+1D6CC ;        03BB ;  MA      # ( 𝛌 → λ ) MATHEMATICAL BOLD SMALL LAMDA → GREEK SMALL LETTER LAMDA    # 
+1D706 ;        03BB ;  MA      # ( 𝜆 → λ ) MATHEMATICAL ITALIC SMALL LAMDA → GREEK SMALL LETTER LAMDA  # 
+1D740 ;        03BB ;  MA      # ( 𝝀 → λ ) MATHEMATICAL BOLD ITALIC SMALL LAMDA → GREEK SMALL LETTER LAMDA     # 
+1D77A ;        03BB ;  MA      # ( 𝝺 → λ ) MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA → GREEK SMALL LETTER LAMDA # 
+1D7B4 ;        03BB ;  MA      # ( 𝞴 → λ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA → GREEK SMALL LETTER LAMDA  # 
+2C96 ; 03BB ;  MA      # ( Ⲗ → λ ) COPTIC CAPITAL LETTER LAULA → GREEK SMALL LETTER LAMDA       # 
+
+00B5 ; 03BC ;  MA      # ( µ → μ ) MICRO SIGN → GREEK SMALL LETTER MU    # 
+1D6CD ;        03BC ;  MA      # ( 𝛍 → μ ) MATHEMATICAL BOLD SMALL MU → GREEK SMALL LETTER MU  # 
+1D707 ;        03BC ;  MA      # ( 𝜇 → μ ) MATHEMATICAL ITALIC SMALL MU → GREEK SMALL LETTER MU        # 
+1D741 ;        03BC ;  MA      # ( 𝝁 → μ ) MATHEMATICAL BOLD ITALIC SMALL MU → GREEK SMALL LETTER MU   # 
+1D77B ;        03BC ;  MA      # ( 𝝻 → μ ) MATHEMATICAL SANS-SERIF BOLD SMALL MU → GREEK SMALL LETTER MU       # 
+1D7B5 ;        03BC ;  MA      # ( 𝞵 → μ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU → GREEK SMALL LETTER MU        # 
+
+1D6CF ;        03BE ;  MA      # ( 𝛏 → ξ ) MATHEMATICAL BOLD SMALL XI → GREEK SMALL LETTER XI  # 
+1D709 ;        03BE ;  MA      # ( 𝜉 → ξ ) MATHEMATICAL ITALIC SMALL XI → GREEK SMALL LETTER XI        # 
+1D743 ;        03BE ;  MA      # ( 𝝃 → ξ ) MATHEMATICAL BOLD ITALIC SMALL XI → GREEK SMALL LETTER XI   # 
+1D77D ;        03BE ;  MA      # ( 𝝽 → ξ ) MATHEMATICAL SANS-SERIF BOLD SMALL XI → GREEK SMALL LETTER XI       # 
+1D7B7 ;        03BE ;  MA      # ( 𝞷 → ξ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI → GREEK SMALL LETTER XI        # 
+
+1D6B5 ;        039E ;  MA      # ( 𝚵 → Ξ ) MATHEMATICAL BOLD CAPITAL XI → GREEK CAPITAL LETTER XI      # 
+1D6EF ;        039E ;  MA      # ( 𝛯 → Ξ ) MATHEMATICAL ITALIC CAPITAL XI → GREEK CAPITAL LETTER XI    # 
+1D729 ;        039E ;  MA      # ( 𝜩 → Ξ ) MATHEMATICAL BOLD ITALIC CAPITAL XI → GREEK CAPITAL LETTER XI       # 
+1D763 ;        039E ;  MA      # ( 𝝣 → Ξ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL XI → GREEK CAPITAL LETTER XI   # 
+1D79D ;        039E ;  MA      # ( 𝞝 → Ξ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI → GREEK CAPITAL LETTER XI    # 
+
+220F ; 03A0 ;  MA      #* ( ∏ → Π ) N-ARY PRODUCT → GREEK CAPITAL LETTER PI     # 
+213F ; 03A0 ;  MA      # ( ℿ → Π ) DOUBLE-STRUCK CAPITAL PI → GREEK CAPITAL LETTER PI   # 
+1D6B7 ;        03A0 ;  MA      # ( 𝚷 → Π ) MATHEMATICAL BOLD CAPITAL PI → GREEK CAPITAL LETTER PI      # 
+1D6F1 ;        03A0 ;  MA      # ( 𝛱 → Π ) MATHEMATICAL ITALIC CAPITAL PI → GREEK CAPITAL LETTER PI    # 
+1D72B ;        03A0 ;  MA      # ( 𝜫 → Π ) MATHEMATICAL BOLD ITALIC CAPITAL PI → GREEK CAPITAL LETTER PI       # 
+1D765 ;        03A0 ;  MA      # ( 𝝥 → Π ) MATHEMATICAL SANS-SERIF BOLD CAPITAL PI → GREEK CAPITAL LETTER PI   # 
+1D79F ;        03A0 ;  MA      # ( 𝞟 → Π ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI → GREEK CAPITAL LETTER PI    # 
+2CA0 ; 03A0 ;  MA      # ( Ⲡ → Π ) COPTIC CAPITAL LETTER PI → GREEK CAPITAL LETTER PI   # 
+041F ; 03A0 ;  MA      # ( П → Π ) CYRILLIC CAPITAL LETTER PE → GREEK CAPITAL LETTER PI  # 
+
+1D6D3 ;        03C2 ;  MA      # ( 𝛓 → ς ) MATHEMATICAL BOLD SMALL FINAL SIGMA → GREEK SMALL LETTER FINAL SIGMA        # 
+1D70D ;        03C2 ;  MA      # ( 𝜍 → ς ) MATHEMATICAL ITALIC SMALL FINAL SIGMA → GREEK SMALL LETTER FINAL SIGMA      # 
+1D747 ;        03C2 ;  MA      # ( 𝝇 → ς ) MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA → GREEK SMALL LETTER FINAL SIGMA # 
+1D781 ;        03C2 ;  MA      # ( 𝞁 → ς ) MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA → GREEK SMALL LETTER FINAL SIGMA     # 
+1D7BB ;        03C2 ;  MA      # ( 𝞻 → ς ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA → GREEK SMALL LETTER FINAL SIGMA      # 
+
+1D6BD ;        03A6 ;  MA      # ( 𝚽 → Φ ) MATHEMATICAL BOLD CAPITAL PHI → GREEK CAPITAL LETTER PHI    # 
+1D6F7 ;        03A6 ;  MA      # ( 𝛷 → Φ ) MATHEMATICAL ITALIC CAPITAL PHI → GREEK CAPITAL LETTER PHI  # 
+1D731 ;        03A6 ;  MA      # ( 𝜱 → Φ ) MATHEMATICAL BOLD ITALIC CAPITAL PHI → GREEK CAPITAL LETTER PHI     # 
+1D76B ;        03A6 ;  MA      # ( 𝝫 → Φ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI → GREEK CAPITAL LETTER PHI # 
+1D7A5 ;        03A6 ;  MA      # ( 𝞥 → Φ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI → GREEK CAPITAL LETTER PHI  # 
+2CAA ; 03A6 ;  MA      # ( Ⲫ → Φ ) COPTIC CAPITAL LETTER FI → GREEK CAPITAL LETTER PHI  # 
+0424 ; 03A6 ;  MA      # ( Ф → Φ ) CYRILLIC CAPITAL LETTER EF → GREEK CAPITAL LETTER PHI # 
+0553 ; 03A6 ;  MA      # ( Փ → Φ ) ARMENIAN CAPITAL LETTER PIWR → GREEK CAPITAL LETTER PHI       # 
+
+1D6D8 ;        03C7 ;  MA      # ( 𝛘 → χ ) MATHEMATICAL BOLD SMALL CHI → GREEK SMALL LETTER CHI        # 
+1D712 ;        03C7 ;  MA      # ( 𝜒 → χ ) MATHEMATICAL ITALIC SMALL CHI → GREEK SMALL LETTER CHI      # 
+1D74C ;        03C7 ;  MA      # ( 𝝌 → χ ) MATHEMATICAL BOLD ITALIC SMALL CHI → GREEK SMALL LETTER CHI # 
+1D786 ;        03C7 ;  MA      # ( 𝞆 → χ ) MATHEMATICAL SANS-SERIF BOLD SMALL CHI → GREEK SMALL LETTER CHI     # 
+1D7C0 ;        03C7 ;  MA      # ( 𝟀 → χ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI → GREEK SMALL LETTER CHI      # 
+2CAD ; 03C7 ;  MA      # ( ⲭ → χ ) COPTIC SMALL LETTER KHI → GREEK SMALL LETTER CHI     # 
+
+1D6D9 ;        03C8 ;  MA      # ( 𝛙 → ψ ) MATHEMATICAL BOLD SMALL PSI → GREEK SMALL LETTER PSI        # 
+1D713 ;        03C8 ;  MA      # ( 𝜓 → ψ ) MATHEMATICAL ITALIC SMALL PSI → GREEK SMALL LETTER PSI      # 
+1D74D ;        03C8 ;  MA      # ( 𝝍 → ψ ) MATHEMATICAL BOLD ITALIC SMALL PSI → GREEK SMALL LETTER PSI # 
+1D787 ;        03C8 ;  MA      # ( 𝞇 → ψ ) MATHEMATICAL SANS-SERIF BOLD SMALL PSI → GREEK SMALL LETTER PSI     # 
+1D7C1 ;        03C8 ;  MA      # ( 𝟁 → ψ ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI → GREEK SMALL LETTER PSI      # 
+0471 ; 03C8 ;  MA      # ( ѱ → ψ ) CYRILLIC SMALL LETTER PSI → GREEK SMALL LETTER PSI    # 
+
+1D6BF ;        03A8 ;  MA      # ( 𝚿 → Ψ ) MATHEMATICAL BOLD CAPITAL PSI → GREEK CAPITAL LETTER PSI    # 
+1D6F9 ;        03A8 ;  MA      # ( 𝛹 → Ψ ) MATHEMATICAL ITALIC CAPITAL PSI → GREEK CAPITAL LETTER PSI  # 
+1D733 ;        03A8 ;  MA      # ( 𝜳 → Ψ ) MATHEMATICAL BOLD ITALIC CAPITAL PSI → GREEK CAPITAL LETTER PSI     # 
+1D76D ;        03A8 ;  MA      # ( 𝝭 → Ψ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI → GREEK CAPITAL LETTER PSI # 
+1D7A7 ;        03A8 ;  MA      # ( 𝞧 → Ψ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI → GREEK CAPITAL LETTER PSI  # 
+2CAE ; 03A8 ;  MA      # ( Ⲯ → Ψ ) COPTIC CAPITAL LETTER PSI → GREEK CAPITAL LETTER PSI # 
+0470 ; 03A8 ;  MA      # ( Ѱ → Ψ ) CYRILLIC CAPITAL LETTER PSI → GREEK CAPITAL LETTER PSI        # 
+
+2375 ; 03C9 ;  MA      #* ( ⍵ → ω ) APL FUNCTIONAL SYMBOL OMEGA → GREEK SMALL LETTER OMEGA      # 
+1D6DA ;        03C9 ;  MA      # ( 𝛚 → ω ) MATHEMATICAL BOLD SMALL OMEGA → GREEK SMALL LETTER OMEGA    # 
+1D714 ;        03C9 ;  MA      # ( 𝜔 → ω ) MATHEMATICAL ITALIC SMALL OMEGA → GREEK SMALL LETTER OMEGA  # 
+1D74E ;        03C9 ;  MA      # ( 𝝎 → ω ) MATHEMATICAL BOLD ITALIC SMALL OMEGA → GREEK SMALL LETTER OMEGA     # 
+1D788 ;        03C9 ;  MA      # ( 𝞈 → ω ) MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA → GREEK SMALL LETTER OMEGA # 
+1D7C2 ;        03C9 ;  MA      # ( 𝟂 → ω ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA → GREEK SMALL LETTER OMEGA  # 
+2CB1 ; 03C9 ;  MA      # ( ⲱ → ω ) COPTIC SMALL LETTER OOU → GREEK SMALL LETTER OMEGA   # 
+
+1F7D ; 1FF4 ;  MA      # ( ώ → ῴ ) GREEK SMALL LETTER OMEGA WITH OXIA → GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI   # 
+
+2630 ; 2CB6 ;  MA      #* ( ☰ → Ⲷ ) TRIGRAM FOR HEAVEN → COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE       # 
+
+2CDC ; 03EC ;  MA      # ( Ⳝ → Ϭ ) COPTIC CAPITAL LETTER OLD NUBIAN SHIMA → COPTIC CAPITAL LETTER SHIMA # 
+
+0497 ; 0436 0329 ;     MA      # ( җ → ж̩ ) CYRILLIC SMALL LETTER ZHE WITH DESCENDER → CYRILLIC SMALL LETTER ZHE, COMBINING VERTICAL LINE BELOW # 
+
+0496 ; 0416 0329 ;     MA      # ( Җ → Ж̩ ) CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER → CYRILLIC CAPITAL LETTER ZHE, COMBINING VERTICAL LINE BELOW     # 
+
+0419 ; 040D ;  MA      # ( Й → Ѝ ) CYRILLIC CAPITAL LETTER SHORT I → CYRILLIC CAPITAL LETTER I WITH GRAVE        # 
+
+048A ; 040D 0326 ;     MA      # ( Ҋ → Ѝ̦ ) CYRILLIC CAPITAL LETTER SHORT I WITH TAIL → CYRILLIC CAPITAL LETTER I WITH GRAVE, COMBINING COMMA BELOW     # →Й̡→
+
+045D ; 0439 ;  MA      # ( ѝ → й ) CYRILLIC SMALL LETTER I WITH GRAVE → CYRILLIC SMALL LETTER SHORT I    # 
+
+048B ; 0439 0326 ;     MA      # ( ҋ → й̦ ) CYRILLIC SMALL LETTER SHORT I WITH TAIL → CYRILLIC SMALL LETTER SHORT I, COMBINING COMMA BELOW      # →й̡→
+
+1D2B ; 043B ;  MA      # ( ᴫ → л ) CYRILLIC LETTER SMALL CAPITAL EL → CYRILLIC SMALL LETTER EL  # 
+
+04C6 ; 043B 0326 ;     MA      # ( ӆ → л̦ ) CYRILLIC SMALL LETTER EL WITH TAIL → CYRILLIC SMALL LETTER EL, COMBINING COMMA BELOW        # →л̡→
+
+047C ; 0460 0483 ;     MA      # ( Ѽ → Ѡ҃ ) CYRILLIC CAPITAL LETTER OMEGA WITH TITLO → CYRILLIC CAPITAL LETTER OMEGA, COMBINING CYRILLIC TITLO  # 
+
+04CC ; 04B7 ;  MA      # ( ӌ → ҷ ) CYRILLIC SMALL LETTER KHAKASSIAN CHE → CYRILLIC SMALL LETTER CHE WITH DESCENDER       # 
+
+04CB ; 04B6 ;  MA      # ( Ӌ → Ҷ ) CYRILLIC CAPITAL LETTER KHAKASSIAN CHE → CYRILLIC CAPITAL LETTER CHE WITH DESCENDER   # 
+
+04BF ; 04BD 0328 ;     MA      # ( ҿ → ҽ̨ ) CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER → CYRILLIC SMALL LETTER ABKHASIAN CHE, COMBINING OGONEK  # →ҽ̢→
+
+04BE ; 04BC 0328 ;     MA      # ( Ҿ → Ҽ̨ ) CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER → CYRILLIC CAPITAL LETTER ABKHASIAN CHE, COMBINING OGONEK      # 
+
+2CBD ; 0448 ;  MA      # ( ⲽ → ш ) COPTIC SMALL LETTER CRYPTOGRAMMIC NI → CYRILLIC SMALL LETTER SHA     # 
+
+2CBC ; 0428 ;  MA      # ( Ⲽ → Ш ) COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI → CYRILLIC CAPITAL LETTER SHA # 
+
+044B ; 044C 0131 ;     MA      # ( ы → ьı ) CYRILLIC SMALL LETTER YERU → CYRILLIC SMALL LETTER SOFT SIGN, LATIN SMALL LETTER DOTLESS I  # 
+
+2108 ; 042D ;  MA      #* ( ℈ → Э ) SCRUPLE → CYRILLIC CAPITAL LETTER E # 
+
+0587 ; 0565 0582 ;     MA      # ( և → եւ ) ARMENIAN SMALL LIGATURE ECH YIWN → ARMENIAN SMALL LETTER ECH, ARMENIAN SMALL LETTER YIWN    # 
+
+FB14 ; 0574 0565 ;     MA      # ( ﬔ → մե ) ARMENIAN SMALL LIGATURE MEN ECH → ARMENIAN SMALL LETTER MEN, ARMENIAN SMALL LETTER ECH     # 
+
+FB15 ; 0574 056B ;     MA      # ( ﬕ → մի ) ARMENIAN SMALL LIGATURE MEN INI → ARMENIAN SMALL LETTER MEN, ARMENIAN SMALL LETTER INI     # 
+
+FB17 ; 0574 056D ;     MA      # ( ﬗ → մխ ) ARMENIAN SMALL LIGATURE MEN XEH → ARMENIAN SMALL LETTER MEN, ARMENIAN SMALL LETTER XEH     # 
+
+FB13 ; 0574 0576 ;     MA      # ( ﬓ → մն ) ARMENIAN SMALL LIGATURE MEN NOW → ARMENIAN SMALL LETTER MEN, ARMENIAN SMALL LETTER NOW     # 
+
+FB16 ; 057E 0576 ;     MA      # ( ﬖ → վն ) ARMENIAN SMALL LIGATURE VEW NOW → ARMENIAN SMALL LETTER VEW, ARMENIAN SMALL LETTER NOW     # 
+
+02D3 ; 0559 ;  MA      #* ( ˓ → ՙ ) MODIFIER LETTER CENTRED LEFT HALF RING → ARMENIAN MODIFIER LETTER LEFT HALF RING     # 
+02BF ; 0559 ;  MA      # ( ʿ → ՙ ) MODIFIER LETTER LEFT HALF RING → ARMENIAN MODIFIER LETTER LEFT HALF RING      # 
+
+2135 ; 05D0 ;  MA      # ( ℵ → ‎א‎ ) ALEF SYMBOL → HEBREW LETTER ALEF       # 
+FB21 ; 05D0 ;  MA      # ( ‎ﬡ‎ → ‎א‎ ) HEBREW LETTER WIDE ALEF → HEBREW LETTER ALEF     # 
+
+FB2F ; FB2E ;  MA      # ( ‎אָ‎ → ‎אַ‎ ) HEBREW LETTER ALEF WITH QAMATS → HEBREW LETTER ALEF WITH PATAH  # 
+FB30 ; FB2E ;  MA      # ( ‎אּ‎ → ‎אַ‎ ) HEBREW LETTER ALEF WITH MAPIQ → HEBREW LETTER ALEF WITH PATAH   # 
+
+FB4F ; 05D0 05DC ;     MA      # ( ‎ﭏ‎ → ‎אל‎ ) HEBREW LIGATURE ALEF LAMED → HEBREW LETTER ALEF, HEBREW LETTER LAMED   # 
+
+2136 ; 05D1 ;  MA      # ( ℶ → ‎ב‎ ) BET SYMBOL → HEBREW LETTER BET # 
+
+2137 ; 05D2 ;  MA      # ( ℷ → ‎ג‎ ) GIMEL SYMBOL → HEBREW LETTER GIMEL     # 
+
+2138 ; 05D3 ;  MA      # ( ℸ → ‎ד‎ ) DALET SYMBOL → HEBREW LETTER DALET     # 
+FB22 ; 05D3 ;  MA      # ( ‎ﬢ‎ → ‎ד‎ ) HEBREW LETTER WIDE DALET → HEBREW LETTER DALET   # 
+
+FB23 ; 05D4 ;  MA      # ( ‎ﬣ‎ → ‎ה‎ ) HEBREW LETTER WIDE HE → HEBREW LETTER HE # 
+
+FB39 ; FB1D ;  MA      # ( ‎יּ‎ → ‎יִ‎ ) HEBREW LETTER YOD WITH DAGESH → HEBREW LETTER YOD WITH HIRIQ    # 
+
+FB24 ; 05DB ;  MA      # ( ‎ﬤ‎ → ‎כ‎ ) HEBREW LETTER WIDE KAF → HEBREW LETTER KAF       # 
+
+FB25 ; 05DC ;  MA      # ( ‎ﬥ‎ → ‎ל‎ ) HEBREW LETTER WIDE LAMED → HEBREW LETTER LAMED   # 
+
+FB26 ; 05DD ;  MA      # ( ‎ﬦ‎ → ‎ם‎ ) HEBREW LETTER WIDE FINAL MEM → HEBREW LETTER FINAL MEM   # 
+
+FB20 ; 05E2 ;  MA      # ( ‎ﬠ‎ → ‎ע‎ ) HEBREW LETTER ALTERNATIVE AYIN → HEBREW LETTER AYIN      # 
+
+FB27 ; 05E8 ;  MA      # ( ‎ﬧ‎ → ‎ר‎ ) HEBREW LETTER WIDE RESH → HEBREW LETTER RESH     # 
+
+FB2B ; FB2A ;  MA      # ( ‎שׂ‎ → ‎שׁ‎ ) HEBREW LETTER SHIN WITH SIN DOT → HEBREW LETTER SHIN WITH SHIN DOT      # 
+FB49 ; FB2A ;  MA      # ( ‎שּ‎ → ‎שׁ‎ ) HEBREW LETTER SHIN WITH DAGESH → HEBREW LETTER SHIN WITH SHIN DOT       # 
+
+FB2D ; FB2C ;  MA      # ( ‎שּׂ‎ → ‎שּׁ‎ ) HEBREW LETTER SHIN WITH DAGESH AND SIN DOT → HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT        # 
+
+FB28 ; 05EA ;  MA      # ( ‎ﬨ‎ → ‎ת‎ ) HEBREW LETTER WIDE TAV → HEBREW LETTER TAV       # 
+
+FE80 ; 0621 ;  MA      # ( ‎ﺀ‎ → ‎ء‎ ) ARABIC LETTER HAMZA ISOLATED FORM → ARABIC LETTER HAMZA  # 
+
+FE82 ; 0622 ;  MA      # ( ‎ﺂ‎ → ‎آ‎ ) ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM → ARABIC LETTER ALEF WITH MADDA ABOVE     # 
+FE81 ; 0622 ;  MA      # ( ‎ﺁ‎ → ‎آ‎ ) ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM → ARABIC LETTER ALEF WITH MADDA ABOVE  # 
+
+FB51 ; 0671 ;  MA      # ( ‎ﭑ‎ → ‎ٱ‎ ) ARABIC LETTER ALEF WASLA FINAL FORM → ARABIC LETTER ALEF WASLA   # 
+FB50 ; 0671 ;  MA      # ( ‎ﭐ‎ → ‎ٱ‎ ) ARABIC LETTER ALEF WASLA ISOLATED FORM → ARABIC LETTER ALEF WASLA        # 
+
+FE88 ; 0625 ;  MA      # ( ‎ﺈ‎ → ‎إ‎ ) ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM → ARABIC LETTER ALEF WITH HAMZA BELOW     # 
+FE87 ; 0625 ;  MA      # ( ‎ﺇ‎ → ‎إ‎ ) ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM → ARABIC LETTER ALEF WITH HAMZA BELOW  # 
+
+FE8E ; 0627 ;  MA      # ( ‎ﺎ‎ → ‎ا‎ ) ARABIC LETTER ALEF FINAL FORM → ARABIC LETTER ALEF       # 
+FE8D ; 0627 ;  MA      # ( ‎ﺍ‎ → ‎ا‎ ) ARABIC LETTER ALEF ISOLATED FORM → ARABIC LETTER ALEF    # 
+
+FD3C ; 0627 064B ;     MA      # ( ‎ﴼ‎ → ‎اً‎ ) ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM → ARABIC LETTER ALEF, ARABIC FATHATAN    # 
+FD3D ; 0627 064B ;     MA      # ( ‎ﴽ‎ → ‎اً‎ ) ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM → ARABIC LETTER ALEF, ARABIC FATHATAN # 
+
+0623 ; 0627 0674 ;     MA      # ( ‎أ‎ → ‎اٴ‎ ) ARABIC LETTER ALEF WITH HAMZA ABOVE → ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA      # →‎ٵ‎→
+FE84 ; 0627 0674 ;     MA      # ( ‎ﺄ‎ → ‎اٴ‎ ) ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM → ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA  # →‎أ‎→→‎ٵ‎→
+FE83 ; 0627 0674 ;     MA      # ( ‎ﺃ‎ → ‎اٴ‎ ) ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA       # →‎ٵ‎→
+0675 ; 0627 0674 ;     MA      # ( ‎ٵ‎ → ‎اٴ‎ ) ARABIC LETTER HIGH HAMZA ALEF → ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA    # 
+
+FDF3 ; 0627 0643 0628 0631 ;   MA      # ( ‎ﷳ‎ → ‎اكبر‎ ) ARABIC LIGATURE AKBAR ISOLATED FORM → ARABIC LETTER ALEF, ARABIC LETTER KAF, ARABIC LETTER BEH, ARABIC LETTER REH  # 
+
+FDF2 ; 0627 0644 0644 0647 ;   MA      # ( ‎ﷲ‎ → ‎الله‎ ) ARABIC LIGATURE ALLAH ISOLATED FORM → ARABIC LETTER ALEF, ARABIC LETTER LAM, ARABIC LETTER LAM, ARABIC LETTER HEH  # 
+
+FE91 ; 0628 ;  MA      # ( ‎ﺑ‎ → ‎ب‎ ) ARABIC LETTER BEH INITIAL FORM → ARABIC LETTER BEH       # 
+FE92 ; 0628 ;  MA      # ( ‎ﺒ‎ → ‎ب‎ ) ARABIC LETTER BEH MEDIAL FORM → ARABIC LETTER BEH        # 
+FE90 ; 0628 ;  MA      # ( ‎ﺐ‎ → ‎ب‎ ) ARABIC LETTER BEH FINAL FORM → ARABIC LETTER BEH # 
+FE8F ; 0628 ;  MA      # ( ‎ﺏ‎ → ‎ب‎ ) ARABIC LETTER BEH ISOLATED FORM → ARABIC LETTER BEH      # 
+0646 ; 0628 ;  MA      # ( ‎ن‎ → ‎ب‎ ) ARABIC LETTER NOON → ARABIC LETTER BEH    # →‎ﻨ‎→→‎ﺒ‎→
+FEE7 ; 0628 ;  MA      # ( ‎ﻧ‎ → ‎ب‎ ) ARABIC LETTER NOON INITIAL FORM → ARABIC LETTER BEH      # →‎ﺒ‎→
+FEE8 ; 0628 ;  MA      # ( ‎ﻨ‎ → ‎ب‎ ) ARABIC LETTER NOON MEDIAL FORM → ARABIC LETTER BEH       # →‎ﺒ‎→
+FEE6 ; 0628 ;  MA      # ( ‎ﻦ‎ → ‎ب‎ ) ARABIC LETTER NOON FINAL FORM → ARABIC LETTER BEH        # →‎ن‎→→‎ﻨ‎→→‎ﺒ‎→
+FEE5 ; 0628 ;  MA      # ( ‎ﻥ‎ → ‎ب‎ ) ARABIC LETTER NOON ISOLATED FORM → ARABIC LETTER BEH     # →‎ن‎→→‎ﻨ‎→→‎ﺒ‎→
+
+FC6D ; 0628 0628 ;     MA      # ( ‎ﱭ‎ → ‎بب‎ ) ARABIC LIGATURE BEH WITH NOON FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER BEH        # →‎بن‎→
+FC8D ; 0628 0628 ;     MA      # ( ‎ﲍ‎ → ‎بب‎ ) ARABIC LIGATURE NOON WITH NOON FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER BEH       # →‎نن‎→
+
+FC9C ; 0628 062C ;     MA      # ( ‎ﲜ‎ → ‎بج‎ ) ARABIC LIGATURE BEH WITH JEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM     # 
+FC05 ; 0628 062C ;     MA      # ( ‎ﰅ‎ → ‎بج‎ ) ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM    # 
+FC9E ; 0628 062C ;     MA      # ( ‎ﲞ‎ → ‎بج‎ ) ARABIC LIGATURE BEH WITH KHAH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM     # →‎بخ‎→→‎ﰇ‎→→‎ﰅ‎→
+FC07 ; 0628 062C ;     MA      # ( ‎ﰇ‎ → ‎بج‎ ) ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM    # →‎ﰅ‎→
+FCD2 ; 0628 062C ;     MA      # ( ‎ﳒ‎ → ‎بج‎ ) ARABIC LIGATURE NOON WITH JEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM    # →‎ﲞ‎→→‎بخ‎→→‎ﰇ‎→→‎ﰅ‎→
+FC4B ; 0628 062C ;     MA      # ( ‎ﱋ‎ → ‎بج‎ ) ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM   # →‎نج‎→→‎ﳒ‎→→‎ﲞ‎→→‎بخ‎→→‎ﰇ‎→→‎ﰅ‎→
+FCD4 ; 0628 062C ;     MA      # ( ‎ﳔ‎ → ‎بج‎ ) ARABIC LIGATURE NOON WITH KHAH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM    # →‎نخ‎→→‎ﱍ‎→→‎ﱋ‎→→‎نج‎→→‎ﳒ‎→→‎ﲞ‎→→‎بخ‎→→‎ﰇ‎→→‎ﰅ‎→
+FC4D ; 0628 062C ;     MA      # ( ‎ﱍ‎ → ‎بج‎ ) ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM   # →‎ﱋ‎→→‎نج‎→→‎ﳒ‎→→‎ﲞ‎→→‎بخ‎→→‎ﰇ‎→→‎ﰅ‎→
+
+FDB8 ; 0628 062C 062D ;        MA      # ( ‎ﶸ‎ → ‎بجح‎ ) ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER HAH      # →‎نجح‎→
+FDBD ; 0628 062C 062D ;        MA      # ( ‎ﶽ‎ → ‎بجح‎ ) ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER HAH        # →‎نجح‎→
+
+FD98 ; 0628 062C 0645 ;        MA      # ( ‎ﶘ‎ → ‎بجم‎ ) ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM    # →‎نجم‎→
+FD97 ; 0628 062C 0645 ;        MA      # ( ‎ﶗ‎ → ‎بجم‎ ) ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM      # →‎نجم‎→
+
+FD9E ; 0628 062C 0649 ;        MA      # ( ‎ﶞ‎ → ‎بجى‎ ) ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA        # →‎بخي‎→
+FD99 ; 0628 062C 0649 ;        MA      # ( ‎ﶙ‎ → ‎بجى‎ ) ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎نجى‎→
+FDC7 ; 0628 062C 0649 ;        MA      # ( ‎ﷇ‎ → ‎بجى‎ ) ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA       # →‎نجي‎→
+
+FC9D ; 0628 062D ;     MA      # ( ‎ﲝ‎ → ‎بح‎ ) ARABIC LIGATURE BEH WITH HAH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH       # 
+FC06 ; 0628 062D ;     MA      # ( ‎ﰆ‎ → ‎بح‎ ) ARABIC LIGATURE BEH WITH HAH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER HAH      # 
+FCD3 ; 0628 062D ;     MA      # ( ‎ﳓ‎ → ‎بح‎ ) ARABIC LIGATURE NOON WITH HAH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH      # →‎نح‎→
+FC4C ; 0628 062D ;     MA      # ( ‎ﱌ‎ → ‎بح‎ ) ARABIC LIGATURE NOON WITH HAH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER HAH     # →‎نح‎→
+
+FD95 ; 0628 062D 0645 ;        MA      # ( ‎ﶕ‎ → ‎بحم‎ ) ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH, ARABIC LETTER MEEM      # →‎نحم‎→
+
+FDC2 ; 0628 062D 0649 ;        MA      # ( ‎ﷂ‎ → ‎بحى‎ ) ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA  # →‎بحي‎→
+FD96 ; 0628 062D 0649 ;        MA      # ( ‎ﶖ‎ → ‎بحى‎ ) ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA        # →‎نحى‎→
+FDB3 ; 0628 062D 0649 ;        MA      # ( ‎ﶳ‎ → ‎بحى‎ ) ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA # →‎نحي‎→
+
+FC6A ; 0628 0631 ;     MA      # ( ‎ﱪ‎ → ‎بر‎ ) ARABIC LIGATURE BEH WITH REH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER REH # 
+FC8A ; 0628 0631 ;     MA      # ( ‎ﲊ‎ → ‎بر‎ ) ARABIC LIGATURE NOON WITH REH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER REH        # →‎نر‎→
+
+FC6B ; 0628 0632 ;     MA      # ( ‎ﱫ‎ → ‎بز‎ ) ARABIC LIGATURE BEH WITH ZAIN FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ZAIN       # 
+FC8B ; 0628 0632 ;     MA      # ( ‎ﲋ‎ → ‎بز‎ ) ARABIC LIGATURE NOON WITH ZAIN FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ZAIN      # →‎نز‎→
+
+FC9F ; 0628 0645 ;     MA      # ( ‎ﲟ‎ → ‎بم‎ ) ARABIC LIGATURE BEH WITH MEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM     # 
+FCE1 ; 0628 0645 ;     MA      # ( ‎ﳡ‎ → ‎بم‎ ) ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM      # 
+FC6C ; 0628 0645 ;     MA      # ( ‎ﱬ‎ → ‎بم‎ ) ARABIC LIGATURE BEH WITH MEEM FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM       # 
+FC08 ; 0628 0645 ;     MA      # ( ‎ﰈ‎ → ‎بم‎ ) ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM    # 
+FCD5 ; 0628 0645 ;     MA      # ( ‎ﳕ‎ → ‎بم‎ ) ARABIC LIGATURE NOON WITH MEEM INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM    # →‎نم‎→
+FCEE ; 0628 0645 ;     MA      # ( ‎ﳮ‎ → ‎بم‎ ) ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM     # →‎نم‎→
+FC8C ; 0628 0645 ;     MA      # ( ‎ﲌ‎ → ‎بم‎ ) ARABIC LIGATURE NOON WITH MEEM FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM      # →‎نم‎→
+FC4E ; 0628 0645 ;     MA      # ( ‎ﱎ‎ → ‎بم‎ ) ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM   # →‎نم‎→
+
+FD9B ; 0628 0645 0649 ;        MA      # ( ‎ﶛ‎ → ‎بمى‎ ) ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA      # →‎نمى‎→
+FD9A ; 0628 0645 0649 ;        MA      # ( ‎ﶚ‎ → ‎بمى‎ ) ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA       # →‎نمي‎→
+
+FCA0 ; 0628 0647 ;     MA      # ( ‎ﲠ‎ → ‎به‎ ) ARABIC LIGATURE BEH WITH HEH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HEH       # 
+FCE2 ; 0628 0647 ;     MA      # ( ‎ﳢ‎ → ‎به‎ ) ARABIC LIGATURE BEH WITH HEH MEDIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HEH        # 
+FCD6 ; 0628 0647 ;     MA      # ( ‎ﳖ‎ → ‎به‎ ) ARABIC LIGATURE NOON WITH HEH INITIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HEH      # →‎نه‎→
+FCEF ; 0628 0647 ;     MA      # ( ‎ﳯ‎ → ‎به‎ ) ARABIC LIGATURE NOON WITH HEH MEDIAL FORM → ARABIC LETTER BEH, ARABIC LETTER HEH       # →‎نه‎→
+
+FC6E ; 0628 0649 ;     MA      # ( ‎ﱮ‎ → ‎بى‎ ) ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA       # 
+FC09 ; 0628 0649 ;     MA      # ( ‎ﰉ‎ → ‎بى‎ ) ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA    # 
+FC6F ; 0628 0649 ;     MA      # ( ‎ﱯ‎ → ‎بى‎ ) ARABIC LIGATURE BEH WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA        # →‎بي‎→
+FC0A ; 0628 0649 ;     MA      # ( ‎ﰊ‎ → ‎بى‎ ) ARABIC LIGATURE BEH WITH YEH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA     # →‎بي‎→
+FC8E ; 0628 0649 ;     MA      # ( ‎ﲎ‎ → ‎بى‎ ) ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA      # →‎نى‎→
+FC4F ; 0628 0649 ;     MA      # ( ‎ﱏ‎ → ‎بى‎ ) ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA   # →‎نى‎→
+FC8F ; 0628 0649 ;     MA      # ( ‎ﲏ‎ → ‎بى‎ ) ARABIC LIGATURE NOON WITH YEH FINAL FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA       # →‎ني‎→
+FC50 ; 0628 0649 ;     MA      # ( ‎ﱐ‎ → ‎بى‎ ) ARABIC LIGATURE NOON WITH YEH ISOLATED FORM → ARABIC LETTER BEH, ARABIC LETTER ALEF MAKSURA    # →‎ني‎→
+
+FB58 ; 067E ;  MA      # ( ‎ﭘ‎ → ‎پ‎ ) ARABIC LETTER PEH INITIAL FORM → ARABIC LETTER PEH       # 
+FB59 ; 067E ;  MA      # ( ‎ﭙ‎ → ‎پ‎ ) ARABIC LETTER PEH MEDIAL FORM → ARABIC LETTER PEH        # 
+FB57 ; 067E ;  MA      # ( ‎ﭗ‎ → ‎پ‎ ) ARABIC LETTER PEH FINAL FORM → ARABIC LETTER PEH # 
+FB56 ; 067E ;  MA      # ( ‎ﭖ‎ → ‎پ‎ ) ARABIC LETTER PEH ISOLATED FORM → ARABIC LETTER PEH      # 
+
+FE97 ; 062A ;  MA      # ( ‎ﺗ‎ → ‎ت‎ ) ARABIC LETTER TEH INITIAL FORM → ARABIC LETTER TEH       # 
+FE98 ; 062A ;  MA      # ( ‎ﺘ‎ → ‎ت‎ ) ARABIC LETTER TEH MEDIAL FORM → ARABIC LETTER TEH        # 
+FE96 ; 062A ;  MA      # ( ‎ﺖ‎ → ‎ت‎ ) ARABIC LETTER TEH FINAL FORM → ARABIC LETTER TEH # 
+FE95 ; 062A ;  MA      # ( ‎ﺕ‎ → ‎ت‎ ) ARABIC LETTER TEH ISOLATED FORM → ARABIC LETTER TEH      # 
+
+FC73 ; 062A 0628 ;     MA      # ( ‎ﱳ‎ → ‎تب‎ ) ARABIC LIGATURE TEH WITH NOON FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER BEH        # →‎تن‎→
+
+FCA1 ; 062A 062C ;     MA      # ( ‎ﲡ‎ → ‎تج‎ ) ARABIC LIGATURE TEH WITH JEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM     # 
+FC0B ; 062A 062C ;     MA      # ( ‎ﰋ‎ → ‎تج‎ ) ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM    # 
+FCA3 ; 062A 062C ;     MA      # ( ‎ﲣ‎ → ‎تج‎ ) ARABIC LIGATURE TEH WITH KHAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM     # →‎تخ‎→→‎ﰍ‎→→‎ﰋ‎→
+FC0D ; 062A 062C ;     MA      # ( ‎ﰍ‎ → ‎تج‎ ) ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM    # →‎ﰋ‎→
+FCDA ; 062A 062C ;     MA      # ( ‎ﳚ‎ → ‎تج‎ ) ARABIC LIGATURE YEH WITH JEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM     # →‎ﲡ‎→
+FC55 ; 062A 062C ;     MA      # ( ‎ﱕ‎ → ‎تج‎ ) ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM    # →‎يج‎→→‎ﳚ‎→→‎ﲡ‎→
+FCDC ; 062A 062C ;     MA      # ( ‎ﳜ‎ → ‎تج‎ ) ARABIC LIGATURE YEH WITH KHAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM     # →‎ﲣ‎→→‎تخ‎→→‎ﰍ‎→→‎ﰋ‎→
+FC57 ; 062A 062C ;     MA      # ( ‎ﱗ‎ → ‎تج‎ ) ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM    # →‎ﱕ‎→→‎يج‎→→‎ﳚ‎→→‎ﲡ‎→
+
+FD50 ; 062A 062C 0645 ;        MA      # ( ‎ﵐ‎ → ‎تجم‎ ) ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # 
+FD54 ; 062A 062C 0645 ;        MA      # ( ‎ﵔ‎ → ‎تجم‎ ) ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # →‎تخم‎→
+
+FDA0 ; 062A 062C 0649 ;        MA      # ( ‎ﶠ‎ → ‎تجى‎ ) ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA       # 
+FD9F ; 062A 062C 0649 ;        MA      # ( ‎ﶟ‎ → ‎تجى‎ ) ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA        # →‎تجي‎→
+FDA2 ; 062A 062C 0649 ;        MA      # ( ‎ﶢ‎ → ‎تجى‎ ) ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA       # →‎تخى‎→
+FDA1 ; 062A 062C 0649 ;        MA      # ( ‎ﶡ‎ → ‎تجى‎ ) ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA        # →‎تخي‎→
+
+FCA2 ; 062A 062D ;     MA      # ( ‎ﲢ‎ → ‎تح‎ ) ARABIC LIGATURE TEH WITH HAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HAH       # 
+FC0C ; 062A 062D ;     MA      # ( ‎ﰌ‎ → ‎تح‎ ) ARABIC LIGATURE TEH WITH HAH ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER HAH      # 
+FCDB ; 062A 062D ;     MA      # ( ‎ﳛ‎ → ‎تح‎ ) ARABIC LIGATURE YEH WITH HAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HAH       # →‎ﲢ‎→
+FC56 ; 062A 062D ;     MA      # ( ‎ﱖ‎ → ‎تح‎ ) ARABIC LIGATURE YEH WITH HAH ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER HAH      # →‎يح‎→→‎ﳛ‎→→‎ﲢ‎→
+
+FD52 ; 062A 062D 062C ;        MA      # ( ‎ﵒ‎ → ‎تحج‎ ) ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HAH, ARABIC LETTER JEEM       # 
+FD51 ; 062A 062D 062C ;        MA      # ( ‎ﵑ‎ → ‎تحج‎ ) ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER HAH, ARABIC LETTER JEEM # 
+
+FD53 ; 062A 062D 0645 ;        MA      # ( ‎ﵓ‎ → ‎تحم‎ ) ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HAH, ARABIC LETTER MEEM       # 
+
+FC70 ; 062A 0631 ;     MA      # ( ‎ﱰ‎ → ‎تر‎ ) ARABIC LIGATURE TEH WITH REH FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER REH # 
+
+FC71 ; 062A 0632 ;     MA      # ( ‎ﱱ‎ → ‎تز‎ ) ARABIC LIGATURE TEH WITH ZAIN FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER ZAIN       # 
+
+FCA4 ; 062A 0645 ;     MA      # ( ‎ﲤ‎ → ‎تم‎ ) ARABIC LIGATURE TEH WITH MEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM     # 
+FCE3 ; 062A 0645 ;     MA      # ( ‎ﳣ‎ → ‎تم‎ ) ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM      # 
+FC72 ; 062A 0645 ;     MA      # ( ‎ﱲ‎ → ‎تم‎ ) ARABIC LIGATURE TEH WITH MEEM FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM       # 
+FC0E ; 062A 0645 ;     MA      # ( ‎ﰎ‎ → ‎تم‎ ) ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM    # 
+
+FD55 ; 062A 0645 062C ;        MA      # ( ‎ﵕ‎ → ‎تمج‎ ) ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM, ARABIC LETTER JEEM     # 
+FD57 ; 062A 0645 062C ;        MA      # ( ‎ﵗ‎ → ‎تمج‎ ) ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM, ARABIC LETTER JEEM     # →‎تمخ‎→
+
+FD56 ; 062A 0645 062D ;        MA      # ( ‎ﵖ‎ → ‎تمح‎ ) ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+
+FDA4 ; 062A 0645 0649 ;        MA      # ( ‎ﶤ‎ → ‎تمى‎ ) ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA       # 
+FDA3 ; 062A 0645 0649 ;        MA      # ( ‎ﶣ‎ → ‎تمى‎ ) ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎تمي‎→
+
+FCA5 ; 062A 0647 ;     MA      # ( ‎ﲥ‎ → ‎ته‎ ) ARABIC LIGATURE TEH WITH HEH INITIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HEH       # 
+FCE4 ; 062A 0647 ;     MA      # ( ‎ﳤ‎ → ‎ته‎ ) ARABIC LIGATURE TEH WITH HEH MEDIAL FORM → ARABIC LETTER TEH, ARABIC LETTER HEH        # 
+
+FC74 ; 062A 0649 ;     MA      # ( ‎ﱴ‎ → ‎تى‎ ) ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER ALEF MAKSURA       # 
+FC0F ; 062A 0649 ;     MA      # ( ‎ﰏ‎ → ‎تى‎ ) ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER ALEF MAKSURA    # 
+FC75 ; 062A 0649 ;     MA      # ( ‎ﱵ‎ → ‎تى‎ ) ARABIC LIGATURE TEH WITH YEH FINAL FORM → ARABIC LETTER TEH, ARABIC LETTER ALEF MAKSURA        # →‎تي‎→
+FC10 ; 062A 0649 ;     MA      # ( ‎ﰐ‎ → ‎تى‎ ) ARABIC LIGATURE TEH WITH YEH ISOLATED FORM → ARABIC LETTER TEH, ARABIC LETTER ALEF MAKSURA     # →‎تي‎→
+
+FE9B ; 062B ;  MA      # ( ‎ﺛ‎ → ‎ث‎ ) ARABIC LETTER THEH INITIAL FORM → ARABIC LETTER THEH     # 
+FE9C ; 062B ;  MA      # ( ‎ﺜ‎ → ‎ث‎ ) ARABIC LETTER THEH MEDIAL FORM → ARABIC LETTER THEH      # 
+FE9A ; 062B ;  MA      # ( ‎ﺚ‎ → ‎ث‎ ) ARABIC LETTER THEH FINAL FORM → ARABIC LETTER THEH       # 
+FE99 ; 062B ;  MA      # ( ‎ﺙ‎ → ‎ث‎ ) ARABIC LETTER THEH ISOLATED FORM → ARABIC LETTER THEH    # 
+
+FC79 ; 062B 0628 ;     MA      # ( ‎ﱹ‎ → ‎ثب‎ ) ARABIC LIGATURE THEH WITH NOON FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER BEH      # →‎ثن‎→
+
+FC11 ; 062B 062C ;     MA      # ( ‎ﰑ‎ → ‎ثج‎ ) ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM → ARABIC LETTER THEH, ARABIC LETTER JEEM  # 
+
+FC76 ; 062B 0631 ;     MA      # ( ‎ﱶ‎ → ‎ثر‎ ) ARABIC LIGATURE THEH WITH REH FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER REH       # 
+
+FC77 ; 062B 0632 ;     MA      # ( ‎ﱷ‎ → ‎ثز‎ ) ARABIC LIGATURE THEH WITH ZAIN FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER ZAIN     # 
+
+FCA6 ; 062B 0645 ;     MA      # ( ‎ﲦ‎ → ‎ثم‎ ) ARABIC LIGATURE THEH WITH MEEM INITIAL FORM → ARABIC LETTER THEH, ARABIC LETTER MEEM   # 
+FCE5 ; 062B 0645 ;     MA      # ( ‎ﳥ‎ → ‎ثم‎ ) ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM → ARABIC LETTER THEH, ARABIC LETTER MEEM    # 
+FC78 ; 062B 0645 ;     MA      # ( ‎ﱸ‎ → ‎ثم‎ ) ARABIC LIGATURE THEH WITH MEEM FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER MEEM     # 
+FC12 ; 062B 0645 ;     MA      # ( ‎ﰒ‎ → ‎ثم‎ ) ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM → ARABIC LETTER THEH, ARABIC LETTER MEEM  # 
+
+FCE6 ; 062B 0647 ;     MA      # ( ‎ﳦ‎ → ‎ثه‎ ) ARABIC LIGATURE THEH WITH HEH MEDIAL FORM → ARABIC LETTER THEH, ARABIC LETTER HEH      # 
+
+FC7A ; 062B 0649 ;     MA      # ( ‎ﱺ‎ → ‎ثى‎ ) ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER ALEF MAKSURA     # 
+FC13 ; 062B 0649 ;     MA      # ( ‎ﰓ‎ → ‎ثى‎ ) ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER THEH, ARABIC LETTER ALEF MAKSURA  # 
+FC7B ; 062B 0649 ;     MA      # ( ‎ﱻ‎ → ‎ثى‎ ) ARABIC LIGATURE THEH WITH YEH FINAL FORM → ARABIC LETTER THEH, ARABIC LETTER ALEF MAKSURA      # →‎ثي‎→
+FC14 ; 062B 0649 ;     MA      # ( ‎ﰔ‎ → ‎ثى‎ ) ARABIC LIGATURE THEH WITH YEH ISOLATED FORM → ARABIC LETTER THEH, ARABIC LETTER ALEF MAKSURA   # →‎ثي‎→
+
+FB68 ; 0679 ;  MA      # ( ‎ﭨ‎ → ‎ٹ‎ ) ARABIC LETTER TTEH INITIAL FORM → ARABIC LETTER TTEH     # 
+FB69 ; 0679 ;  MA      # ( ‎ﭩ‎ → ‎ٹ‎ ) ARABIC LETTER TTEH MEDIAL FORM → ARABIC LETTER TTEH      # 
+FB67 ; 0679 ;  MA      # ( ‎ﭧ‎ → ‎ٹ‎ ) ARABIC LETTER TTEH FINAL FORM → ARABIC LETTER TTEH       # 
+FB66 ; 0679 ;  MA      # ( ‎ﭦ‎ → ‎ٹ‎ ) ARABIC LETTER TTEH ISOLATED FORM → ARABIC LETTER TTEH    # 
+06BB ; 0679 ;  MA      # ( ‎ڻ‎ → ‎ٹ‎ ) ARABIC LETTER RNOON → ARABIC LETTER TTEH  # →‎ﮢ‎→→‎ﭩ‎→
+FBA2 ; 0679 ;  MA      # ( ‎ﮢ‎ → ‎ٹ‎ ) ARABIC LETTER RNOON INITIAL FORM → ARABIC LETTER TTEH    # →‎ﭩ‎→
+FBA3 ; 0679 ;  MA      # ( ‎ﮣ‎ → ‎ٹ‎ ) ARABIC LETTER RNOON MEDIAL FORM → ARABIC LETTER TTEH     # →‎ﭩ‎→
+FBA1 ; 0679 ;  MA      # ( ‎ﮡ‎ → ‎ٹ‎ ) ARABIC LETTER RNOON FINAL FORM → ARABIC LETTER TTEH      # →‎ڻ‎→→‎ﮢ‎→→‎ﭩ‎→
+FBA0 ; 0679 ;  MA      # ( ‎ﮠ‎ → ‎ٹ‎ ) ARABIC LETTER RNOON ISOLATED FORM → ARABIC LETTER TTEH   # →‎ڻ‎→→‎ﮢ‎→→‎ﭩ‎→
+
+067B ; 067A ;  MA      # ( ‎ٻ‎ → ‎ٺ‎ ) ARABIC LETTER BEEH → ARABIC LETTER TTEHEH # →‎ﭞ‎→
+FB54 ; 067A ;  MA      # ( ‎ﭔ‎ → ‎ٺ‎ ) ARABIC LETTER BEEH INITIAL FORM → ARABIC LETTER TTEHEH   # →‎ﭡ‎→
+FB55 ; 067A ;  MA      # ( ‎ﭕ‎ → ‎ٺ‎ ) ARABIC LETTER BEEH MEDIAL FORM → ARABIC LETTER TTEHEH    # →‎ﭡ‎→
+FB53 ; 067A ;  MA      # ( ‎ﭓ‎ → ‎ٺ‎ ) ARABIC LETTER BEEH FINAL FORM → ARABIC LETTER TTEHEH     # 
+FB52 ; 067A ;  MA      # ( ‎ﭒ‎ → ‎ٺ‎ ) ARABIC LETTER BEEH ISOLATED FORM → ARABIC LETTER TTEHEH  # 
+FB60 ; 067A ;  MA      # ( ‎ﭠ‎ → ‎ٺ‎ ) ARABIC LETTER TTEHEH INITIAL FORM → ARABIC LETTER TTEHEH # 
+FB61 ; 067A ;  MA      # ( ‎ﭡ‎ → ‎ٺ‎ ) ARABIC LETTER TTEHEH MEDIAL FORM → ARABIC LETTER TTEHEH  # 
+FB5F ; 067A ;  MA      # ( ‎ﭟ‎ → ‎ٺ‎ ) ARABIC LETTER TTEHEH FINAL FORM → ARABIC LETTER TTEHEH   # 
+FB5E ; 067A ;  MA      # ( ‎ﭞ‎ → ‎ٺ‎ ) ARABIC LETTER TTEHEH ISOLATED FORM → ARABIC LETTER TTEHEH        # 
+06D0 ; 067A ;  MA      # ( ‎ې‎ → ‎ٺ‎ ) ARABIC LETTER E → ARABIC LETTER TTEHEH    # →‎ﯦ‎→→‎ﭡ‎→
+FBE6 ; 067A ;  MA      # ( ‎ﯦ‎ → ‎ٺ‎ ) ARABIC LETTER E INITIAL FORM → ARABIC LETTER TTEHEH      # →‎ﭡ‎→
+FBE7 ; 067A ;  MA      # ( ‎ﯧ‎ → ‎ٺ‎ ) ARABIC LETTER E MEDIAL FORM → ARABIC LETTER TTEHEH       # →‎ﭡ‎→
+FBE5 ; 067A ;  MA      # ( ‎ﯥ‎ → ‎ٺ‎ ) ARABIC LETTER E FINAL FORM → ARABIC LETTER TTEHEH        # →‎ې‎→→‎ﯦ‎→→‎ﭡ‎→
+FBE4 ; 067A ;  MA      # ( ‎ﯤ‎ → ‎ٺ‎ ) ARABIC LETTER E ISOLATED FORM → ARABIC LETTER TTEHEH     # →‎ې‎→→‎ﯦ‎→→‎ﭡ‎→
+
+0680 ; 067F ;  MA      # ( ‎ڀ‎ → ‎ٿ‎ ) ARABIC LETTER BEHEH → ARABIC LETTER TEHEH # →‎ﭚ‎→
+FB5C ; 067F ;  MA      # ( ‎ﭜ‎ → ‎ٿ‎ ) ARABIC LETTER BEHEH INITIAL FORM → ARABIC LETTER TEHEH   # →‎ﭥ‎→
+FB5D ; 067F ;  MA      # ( ‎ﭝ‎ → ‎ٿ‎ ) ARABIC LETTER BEHEH MEDIAL FORM → ARABIC LETTER TEHEH    # →‎ﭥ‎→
+FB5B ; 067F ;  MA      # ( ‎ﭛ‎ → ‎ٿ‎ ) ARABIC LETTER BEHEH FINAL FORM → ARABIC LETTER TEHEH     # 
+FB5A ; 067F ;  MA      # ( ‎ﭚ‎ → ‎ٿ‎ ) ARABIC LETTER BEHEH ISOLATED FORM → ARABIC LETTER TEHEH  # 
+FB64 ; 067F ;  MA      # ( ‎ﭤ‎ → ‎ٿ‎ ) ARABIC LETTER TEHEH INITIAL FORM → ARABIC LETTER TEHEH   # 
+FB65 ; 067F ;  MA      # ( ‎ﭥ‎ → ‎ٿ‎ ) ARABIC LETTER TEHEH MEDIAL FORM → ARABIC LETTER TEHEH    # 
+FB63 ; 067F ;  MA      # ( ‎ﭣ‎ → ‎ٿ‎ ) ARABIC LETTER TEHEH FINAL FORM → ARABIC LETTER TEHEH     # 
+FB62 ; 067F ;  MA      # ( ‎ﭢ‎ → ‎ٿ‎ ) ARABIC LETTER TEHEH ISOLATED FORM → ARABIC LETTER TEHEH  # 
+
+FE9F ; 062C ;  MA      # ( ‎ﺟ‎ → ‎ج‎ ) ARABIC LETTER JEEM INITIAL FORM → ARABIC LETTER JEEM     # 
+FEA0 ; 062C ;  MA      # ( ‎ﺠ‎ → ‎ج‎ ) ARABIC LETTER JEEM MEDIAL FORM → ARABIC LETTER JEEM      # 
+FE9E ; 062C ;  MA      # ( ‎ﺞ‎ → ‎ج‎ ) ARABIC LETTER JEEM FINAL FORM → ARABIC LETTER JEEM       # 
+FE9D ; 062C ;  MA      # ( ‎ﺝ‎ → ‎ج‎ ) ARABIC LETTER JEEM ISOLATED FORM → ARABIC LETTER JEEM    # 
+062E ; 062C ;  MA      # ( ‎خ‎ → ‎ج‎ ) ARABIC LETTER KHAH → ARABIC LETTER JEEM   # 
+FEA7 ; 062C ;  MA      # ( ‎ﺧ‎ → ‎ج‎ ) ARABIC LETTER KHAH INITIAL FORM → ARABIC LETTER JEEM     # →‎خ‎→
+FEA8 ; 062C ;  MA      # ( ‎ﺨ‎ → ‎ج‎ ) ARABIC LETTER KHAH MEDIAL FORM → ARABIC LETTER JEEM      # →‎خ‎→
+FEA6 ; 062C ;  MA      # ( ‎ﺦ‎ → ‎ج‎ ) ARABIC LETTER KHAH FINAL FORM → ARABIC LETTER JEEM       # →‎خ‎→
+FEA5 ; 062C ;  MA      # ( ‎ﺥ‎ → ‎ج‎ ) ARABIC LETTER KHAH ISOLATED FORM → ARABIC LETTER JEEM    # 
+
+FCAB ; 062C 062C ;     MA      # ( ‎ﲫ‎ → ‎جج‎ ) ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM → ARABIC LETTER JEEM, ARABIC LETTER JEEM   # →‎خج‎→
+FC19 ; 062C 062C ;     MA      # ( ‎ﰙ‎ → ‎جج‎ ) ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER JEEM  # →‎خج‎→
+
+FCA7 ; 062C 062D ;     MA      # ( ‎ﲧ‎ → ‎جح‎ ) ARABIC LIGATURE JEEM WITH HAH INITIAL FORM → ARABIC LETTER JEEM, ARABIC LETTER HAH     # 
+FC15 ; 062C 062D ;     MA      # ( ‎ﰕ‎ → ‎جح‎ ) ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER HAH    # 
+FC1A ; 062C 062D ;     MA      # ( ‎ﰚ‎ → ‎جح‎ ) ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER HAH    # →‎ﰕ‎→
+
+FDA6 ; 062C 062D 0649 ;        MA      # ( ‎ﶦ‎ → ‎جحى‎ ) ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA       # 
+FDBE ; 062C 062D 0649 ;        MA      # ( ‎ﶾ‎ → ‎جحى‎ ) ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA        # →‎جحي‎→
+
+FDFB ; 062C 0644 0020 062C 0644 0627 0644 0647 ;       MA      #* ( ‎ﷻ‎ → ‎جل جلاله‎ ) ARABIC LIGATURE JALLAJALALOUHOU → ARABIC LETTER JEEM, ARABIC LETTER LAM, SPACE, ARABIC LETTER JEEM, ARABIC LETTER LAM, ARABIC LETTER ALEF, ARABIC LETTER LAM, ARABIC LETTER HEH    # 
+
+FCA8 ; 062C 0645 ;     MA      # ( ‎ﲨ‎ → ‎جم‎ ) ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM   # 
+FC16 ; 062C 0645 ;     MA      # ( ‎ﰖ‎ → ‎جم‎ ) ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM  # 
+FCAC ; 062C 0645 ;     MA      # ( ‎ﲬ‎ → ‎جم‎ ) ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM   # →‎ﲨ‎→
+FC1B ; 062C 0645 ;     MA      # ( ‎ﰛ‎ → ‎جم‎ ) ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM  # →‎ﰖ‎→
+
+FD59 ; 062C 0645 062D ;        MA      # ( ‎ﵙ‎ → ‎جمح‎ ) ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM, ARABIC LETTER HAH     # 
+FD58 ; 062C 0645 062D ;        MA      # ( ‎ﵘ‎ → ‎جمح‎ ) ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+
+FDA7 ; 062C 0645 0649 ;        MA      # ( ‎ﶧ‎ → ‎جمى‎ ) ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA     # 
+FDA5 ; 062C 0645 0649 ;        MA      # ( ‎ﶥ‎ → ‎جمى‎ ) ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA      # →‎جمي‎→
+
+FD1D ; 062C 0649 ;     MA      # ( ‎ﴝ‎ → ‎جى‎ ) ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA     # 
+FD01 ; 062C 0649 ;     MA      # ( ‎ﴁ‎ → ‎جى‎ ) ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA  # 
+FD1E ; 062C 0649 ;     MA      # ( ‎ﴞ‎ → ‎جى‎ ) ARABIC LIGATURE JEEM WITH YEH FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎جي‎→
+FD02 ; 062C 0649 ;     MA      # ( ‎ﴂ‎ → ‎جى‎ ) ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA   # →‎جي‎→
+FD1F ; 062C 0649 ;     MA      # ( ‎ﴟ‎ → ‎جى‎ ) ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA     # →‎خى‎→→‎ﴃ‎→→‎ﴁ‎→
+FD03 ; 062C 0649 ;     MA      # ( ‎ﴃ‎ → ‎جى‎ ) ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA  # →‎ﴁ‎→
+FD20 ; 062C 0649 ;     MA      # ( ‎ﴠ‎ → ‎جى‎ ) ARABIC LIGATURE KHAH WITH YEH FINAL FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎خي‎→→‎ﴄ‎→→‎ﴂ‎→→‎جي‎→
+FD04 ; 062C 0649 ;     MA      # ( ‎ﴄ‎ → ‎جى‎ ) ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM → ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA   # →‎ﴂ‎→→‎جي‎→
+
+FB78 ; 0683 ;  MA      # ( ‎ﭸ‎ → ‎ڃ‎ ) ARABIC LETTER NYEH INITIAL FORM → ARABIC LETTER NYEH     # 
+FB79 ; 0683 ;  MA      # ( ‎ﭹ‎ → ‎ڃ‎ ) ARABIC LETTER NYEH MEDIAL FORM → ARABIC LETTER NYEH      # 
+FB77 ; 0683 ;  MA      # ( ‎ﭷ‎ → ‎ڃ‎ ) ARABIC LETTER NYEH FINAL FORM → ARABIC LETTER NYEH       # 
+FB76 ; 0683 ;  MA      # ( ‎ﭶ‎ → ‎ڃ‎ ) ARABIC LETTER NYEH ISOLATED FORM → ARABIC LETTER NYEH    # 
+
+FB7C ; 0686 ;  MA      # ( ‎ﭼ‎ → ‎چ‎ ) ARABIC LETTER TCHEH INITIAL FORM → ARABIC LETTER TCHEH   # 
+FB7D ; 0686 ;  MA      # ( ‎ﭽ‎ → ‎چ‎ ) ARABIC LETTER TCHEH MEDIAL FORM → ARABIC LETTER TCHEH    # 
+FB7B ; 0686 ;  MA      # ( ‎ﭻ‎ → ‎چ‎ ) ARABIC LETTER TCHEH FINAL FORM → ARABIC LETTER TCHEH     # 
+FB7A ; 0686 ;  MA      # ( ‎ﭺ‎ → ‎چ‎ ) ARABIC LETTER TCHEH ISOLATED FORM → ARABIC LETTER TCHEH  # 
+
+FB80 ; 0687 ;  MA      # ( ‎ﮀ‎ → ‎ڇ‎ ) ARABIC LETTER TCHEHEH INITIAL FORM → ARABIC LETTER TCHEHEH       # 
+FB81 ; 0687 ;  MA      # ( ‎ﮁ‎ → ‎ڇ‎ ) ARABIC LETTER TCHEHEH MEDIAL FORM → ARABIC LETTER TCHEHEH        # 
+FB7F ; 0687 ;  MA      # ( ‎ﭿ‎ → ‎ڇ‎ ) ARABIC LETTER TCHEHEH FINAL FORM → ARABIC LETTER TCHEHEH # 
+FB7E ; 0687 ;  MA      # ( ‎ﭾ‎ → ‎ڇ‎ ) ARABIC LETTER TCHEHEH ISOLATED FORM → ARABIC LETTER TCHEHEH      # 
+
+FEA3 ; 062D ;  MA      # ( ‎ﺣ‎ → ‎ح‎ ) ARABIC LETTER HAH INITIAL FORM → ARABIC LETTER HAH       # 
+FEA4 ; 062D ;  MA      # ( ‎ﺤ‎ → ‎ح‎ ) ARABIC LETTER HAH MEDIAL FORM → ARABIC LETTER HAH        # 
+FEA2 ; 062D ;  MA      # ( ‎ﺢ‎ → ‎ح‎ ) ARABIC LETTER HAH FINAL FORM → ARABIC LETTER HAH # 
+FEA1 ; 062D ;  MA      # ( ‎ﺡ‎ → ‎ح‎ ) ARABIC LETTER HAH ISOLATED FORM → ARABIC LETTER HAH      # 
+
+FCA9 ; 062D 062C ;     MA      # ( ‎ﲩ‎ → ‎حج‎ ) ARABIC LIGATURE HAH WITH JEEM INITIAL FORM → ARABIC LETTER HAH, ARABIC LETTER JEEM     # 
+FC17 ; 062D 062C ;     MA      # ( ‎ﰗ‎ → ‎حج‎ ) ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM → ARABIC LETTER HAH, ARABIC LETTER JEEM    # 
+
+FDBF ; 062D 062C 0649 ;        MA      # ( ‎ﶿ‎ → ‎حجى‎ ) ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER HAH, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA        # →‎حجي‎→
+
+FCAA ; 062D 0645 ;     MA      # ( ‎ﲪ‎ → ‎حم‎ ) ARABIC LIGATURE HAH WITH MEEM INITIAL FORM → ARABIC LETTER HAH, ARABIC LETTER MEEM     # 
+FC18 ; 062D 0645 ;     MA      # ( ‎ﰘ‎ → ‎حم‎ ) ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM → ARABIC LETTER HAH, ARABIC LETTER MEEM    # 
+
+FD5B ; 062D 0645 0649 ;        MA      # ( ‎ﵛ‎ → ‎حمى‎ ) ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER HAH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA       # 
+FD5A ; 062D 0645 0649 ;        MA      # ( ‎ﵚ‎ → ‎حمى‎ ) ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER HAH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎حمي‎→
+
+FD1B ; 062D 0649 ;     MA      # ( ‎ﴛ‎ → ‎حى‎ ) ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA       # 
+FCFF ; 062D 0649 ;     MA      # ( ‎ﳿ‎ → ‎حى‎ ) ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA    # 
+FD1C ; 062D 0649 ;     MA      # ( ‎ﴜ‎ → ‎حى‎ ) ARABIC LIGATURE HAH WITH YEH FINAL FORM → ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA        # →‎حي‎→
+FD00 ; 062D 0649 ;     MA      # ( ‎ﴀ‎ → ‎حى‎ ) ARABIC LIGATURE HAH WITH YEH ISOLATED FORM → ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA     # →‎حي‎→
+
+0684 ; 0682 ;  MA      # ( ‎ڄ‎ → ‎ڂ‎ ) ARABIC LETTER DYEH → ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE       # 
+FB74 ; 0682 ;  MA      # ( ‎ﭴ‎ → ‎ڂ‎ ) ARABIC LETTER DYEH INITIAL FORM → ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE # →‎ڄ‎→
+FB75 ; 0682 ;  MA      # ( ‎ﭵ‎ → ‎ڂ‎ ) ARABIC LETTER DYEH MEDIAL FORM → ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE  # →‎ڄ‎→
+FB73 ; 0682 ;  MA      # ( ‎ﭳ‎ → ‎ڂ‎ ) ARABIC LETTER DYEH FINAL FORM → ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE   # →‎ڄ‎→
+FB72 ; 0682 ;  MA      # ( ‎ﭲ‎ → ‎ڂ‎ ) ARABIC LETTER DYEH ISOLATED FORM → ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE        # 
+
+FEAA ; 062F ;  MA      # ( ‎ﺪ‎ → ‎د‎ ) ARABIC LETTER DAL FINAL FORM → ARABIC LETTER DAL # 
+FEA9 ; 062F ;  MA      # ( ‎ﺩ‎ → ‎د‎ ) ARABIC LETTER DAL ISOLATED FORM → ARABIC LETTER DAL      # 
+
+FEAC ; 0630 ;  MA      # ( ‎ﺬ‎ → ‎ذ‎ ) ARABIC LETTER THAL FINAL FORM → ARABIC LETTER THAL       # 
+FEAB ; 0630 ;  MA      # ( ‎ﺫ‎ → ‎ذ‎ ) ARABIC LETTER THAL ISOLATED FORM → ARABIC LETTER THAL    # 
+
+FC5B ; 0630 0670 ;     MA      # ( ‎ﱛ‎ → ‎ذٰ‎ ) ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM → ARABIC LETTER THAL, ARABIC LETTER SUPERSCRIPT ALEF  # 
+
+FB89 ; 0688 ;  MA      # ( ‎ﮉ‎ → ‎ڈ‎ ) ARABIC LETTER DDAL FINAL FORM → ARABIC LETTER DDAL       # 
+FB88 ; 0688 ;  MA      # ( ‎ﮈ‎ → ‎ڈ‎ ) ARABIC LETTER DDAL ISOLATED FORM → ARABIC LETTER DDAL    # 
+
+FB85 ; 068C ;  MA      # ( ‎ﮅ‎ → ‎ڌ‎ ) ARABIC LETTER DAHAL FINAL FORM → ARABIC LETTER DAHAL     # 
+FB84 ; 068C ;  MA      # ( ‎ﮄ‎ → ‎ڌ‎ ) ARABIC LETTER DAHAL ISOLATED FORM → ARABIC LETTER DAHAL  # 
+
+FB83 ; 068D ;  MA      # ( ‎ﮃ‎ → ‎ڍ‎ ) ARABIC LETTER DDAHAL FINAL FORM → ARABIC LETTER DDAHAL   # 
+FB82 ; 068D ;  MA      # ( ‎ﮂ‎ → ‎ڍ‎ ) ARABIC LETTER DDAHAL ISOLATED FORM → ARABIC LETTER DDAHAL        # 
+
+FB87 ; 068E ;  MA      # ( ‎ﮇ‎ → ‎ڎ‎ ) ARABIC LETTER DUL FINAL FORM → ARABIC LETTER DUL # 
+FB86 ; 068E ;  MA      # ( ‎ﮆ‎ → ‎ڎ‎ ) ARABIC LETTER DUL ISOLATED FORM → ARABIC LETTER DUL      # 
+
+FEAE ; 0631 ;  MA      # ( ‎ﺮ‎ → ‎ر‎ ) ARABIC LETTER REH FINAL FORM → ARABIC LETTER REH # 
+FEAD ; 0631 ;  MA      # ( ‎ﺭ‎ → ‎ر‎ ) ARABIC LETTER REH ISOLATED FORM → ARABIC LETTER REH      # 
+
+FC5C ; 0631 0670 ;     MA      # ( ‎ﱜ‎ → ‎رٰ‎ ) ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM → ARABIC LETTER REH, ARABIC LETTER SUPERSCRIPT ALEF    # 
+
+FDF6 ; 0631 0633 0648 0644 ;   MA      # ( ‎ﷶ‎ → ‎رسول‎ ) ARABIC LIGATURE RASOUL ISOLATED FORM → ARABIC LETTER REH, ARABIC LETTER SEEN, ARABIC LETTER WAW, ARABIC LETTER LAM # 
+
+FDFC ; 0631 0649 0627 0644 ;   MA      #* ( ‎﷼‎ → ‎رىال‎ ) RIAL SIGN → ARABIC LETTER REH, ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ALEF, ARABIC LETTER LAM  # →‎ریال‎→
+
+FEB0 ; 0632 ;  MA      # ( ‎ﺰ‎ → ‎ز‎ ) ARABIC LETTER ZAIN FINAL FORM → ARABIC LETTER ZAIN       # 
+FEAF ; 0632 ;  MA      # ( ‎ﺯ‎ → ‎ز‎ ) ARABIC LETTER ZAIN ISOLATED FORM → ARABIC LETTER ZAIN    # 
+0694 ; 0632 ;  MA      # ( ‎ڔ‎ → ‎ز‎ ) ARABIC LETTER REH WITH DOT BELOW → ARABIC LETTER ZAIN     # 
+
+FB8D ; 0691 ;  MA      # ( ‎ﮍ‎ → ‎ڑ‎ ) ARABIC LETTER RREH FINAL FORM → ARABIC LETTER RREH       # 
+FB8C ; 0691 ;  MA      # ( ‎ﮌ‎ → ‎ڑ‎ ) ARABIC LETTER RREH ISOLATED FORM → ARABIC LETTER RREH    # 
+
+FB8B ; 0698 ;  MA      # ( ‎ﮋ‎ → ‎ژ‎ ) ARABIC LETTER JEH FINAL FORM → ARABIC LETTER JEH # 
+FB8A ; 0698 ;  MA      # ( ‎ﮊ‎ → ‎ژ‎ ) ARABIC LETTER JEH ISOLATED FORM → ARABIC LETTER JEH      # 
+
+FEB3 ; 0633 ;  MA      # ( ‎ﺳ‎ → ‎س‎ ) ARABIC LETTER SEEN INITIAL FORM → ARABIC LETTER SEEN     # 
+FEB4 ; 0633 ;  MA      # ( ‎ﺴ‎ → ‎س‎ ) ARABIC LETTER SEEN MEDIAL FORM → ARABIC LETTER SEEN      # 
+FEB2 ; 0633 ;  MA      # ( ‎ﺲ‎ → ‎س‎ ) ARABIC LETTER SEEN FINAL FORM → ARABIC LETTER SEEN       # 
+FEB1 ; 0633 ;  MA      # ( ‎ﺱ‎ → ‎س‎ ) ARABIC LETTER SEEN ISOLATED FORM → ARABIC LETTER SEEN    # 
+
+FCAD ; 0633 062C ;     MA      # ( ‎ﲭ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM   # 
+FD34 ; 0633 062C ;     MA      # ( ‎ﴴ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM    # 
+FC1C ; 0633 062C ;     MA      # ( ‎ﰜ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM  # 
+FCAF ; 0633 062C ;     MA      # ( ‎ﲯ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM   # →‎سخ‎→→‎ﰞ‎→→‎ﰜ‎→
+FD36 ; 0633 062C ;     MA      # ( ‎ﴶ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM    # →‎سخ‎→→‎ﰞ‎→→‎ﰜ‎→
+FC1E ; 0633 062C ;     MA      # ( ‎ﰞ‎ → ‎سج‎ ) ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM  # →‎ﰜ‎→
+
+FD5D ; 0633 062C 062D ;        MA      # ( ‎ﵝ‎ → ‎سجح‎ ) ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM, ARABIC LETTER HAH     # 
+
+FD5E ; 0633 062C 0649 ;        MA      # ( ‎ﵞ‎ → ‎سجى‎ ) ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA     # 
+FDA8 ; 0633 062C 0649 ;        MA      # ( ‎ﶨ‎ → ‎سجى‎ ) ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA     # →‎سخى‎→
+FDC6 ; 0633 062C 0649 ;        MA      # ( ‎ﷆ‎ → ‎سجى‎ ) ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎سخي‎→
+
+FCAE ; 0633 062D ;     MA      # ( ‎ﲮ‎ → ‎سح‎ ) ARABIC LIGATURE SEEN WITH HAH INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER HAH     # 
+FD35 ; 0633 062D ;     MA      # ( ‎ﴵ‎ → ‎سح‎ ) ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER HAH      # 
+FC1D ; 0633 062D ;     MA      # ( ‎ﰝ‎ → ‎سح‎ ) ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER HAH    # 
+
+FD5C ; 0633 062D 062C ;        MA      # ( ‎ﵜ‎ → ‎سحج‎ ) ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER HAH, ARABIC LETTER JEEM     # 
+
+FD2A ; 0633 0631 ;     MA      # ( ‎ﴪ‎ → ‎سر‎ ) ARABIC LIGATURE SEEN WITH REH FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER REH       # 
+FD0E ; 0633 0631 ;     MA      # ( ‎ﴎ‎ → ‎سر‎ ) ARABIC LIGATURE SEEN WITH REH ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER REH    # 
+
+FCB0 ; 0633 0645 ;     MA      # ( ‎ﲰ‎ → ‎سم‎ ) ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM   # 
+FCE7 ; 0633 0645 ;     MA      # ( ‎ﳧ‎ → ‎سم‎ ) ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM    # 
+FC1F ; 0633 0645 ;     MA      # ( ‎ﰟ‎ → ‎سم‎ ) ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM  # 
+
+FD61 ; 0633 0645 062C ;        MA      # ( ‎ﵡ‎ → ‎سمج‎ ) ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM, ARABIC LETTER JEEM   # 
+
+FD60 ; 0633 0645 062D ;        MA      # ( ‎ﵠ‎ → ‎سمح‎ ) ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM, ARABIC LETTER HAH     # 
+FD5F ; 0633 0645 062D ;        MA      # ( ‎ﵟ‎ → ‎سمح‎ ) ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+
+FD63 ; 0633 0645 0645 ;        MA      # ( ‎ﵣ‎ → ‎سمم‎ ) ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM, ARABIC LETTER MEEM   # 
+FD62 ; 0633 0645 0645 ;        MA      # ( ‎ﵢ‎ → ‎سمم‎ ) ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+
+FD31 ; 0633 0647 ;     MA      # ( ‎ﴱ‎ → ‎سه‎ ) ARABIC LIGATURE SEEN WITH HEH INITIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER HEH     # 
+FCE8 ; 0633 0647 ;     MA      # ( ‎ﳨ‎ → ‎سه‎ ) ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM → ARABIC LETTER SEEN, ARABIC LETTER HEH      # 
+
+FD17 ; 0633 0649 ;     MA      # ( ‎ﴗ‎ → ‎سى‎ ) ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER ALEF MAKSURA     # 
+FCFB ; 0633 0649 ;     MA      # ( ‎ﳻ‎ → ‎سى‎ ) ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER ALEF MAKSURA  # 
+FD18 ; 0633 0649 ;     MA      # ( ‎ﴘ‎ → ‎سى‎ ) ARABIC LIGATURE SEEN WITH YEH FINAL FORM → ARABIC LETTER SEEN, ARABIC LETTER ALEF MAKSURA      # →‎سي‎→
+FCFC ; 0633 0649 ;     MA      # ( ‎ﳼ‎ → ‎سى‎ ) ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM → ARABIC LETTER SEEN, ARABIC LETTER ALEF MAKSURA   # →‎سي‎→
+
+FEB7 ; 0634 ;  MA      # ( ‎ﺷ‎ → ‎ش‎ ) ARABIC LETTER SHEEN INITIAL FORM → ARABIC LETTER SHEEN   # 
+FEB8 ; 0634 ;  MA      # ( ‎ﺸ‎ → ‎ش‎ ) ARABIC LETTER SHEEN MEDIAL FORM → ARABIC LETTER SHEEN    # 
+FEB6 ; 0634 ;  MA      # ( ‎ﺶ‎ → ‎ش‎ ) ARABIC LETTER SHEEN FINAL FORM → ARABIC LETTER SHEEN     # 
+FEB5 ; 0634 ;  MA      # ( ‎ﺵ‎ → ‎ش‎ ) ARABIC LETTER SHEEN ISOLATED FORM → ARABIC LETTER SHEEN  # 
+
+FD2D ; 0634 062C ;     MA      # ( ‎ﴭ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM # 
+FD37 ; 0634 062C ;     MA      # ( ‎ﴷ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM  # 
+FD25 ; 0634 062C ;     MA      # ( ‎ﴥ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM   # 
+FD09 ; 0634 062C ;     MA      # ( ‎ﴉ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM        # 
+FD2F ; 0634 062C ;     MA      # ( ‎ﴯ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM # →‎شخ‎→→‎ﴧ‎→→‎ﴥ‎→
+FD39 ; 0634 062C ;     MA      # ( ‎ﴹ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM  # →‎شخ‎→→‎ﴧ‎→→‎ﴥ‎→
+FD27 ; 0634 062C ;     MA      # ( ‎ﴧ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM   # →‎ﴥ‎→
+FD0B ; 0634 062C ;     MA      # ( ‎ﴋ‎ → ‎شج‎ ) ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM        # →‎ﴉ‎→
+
+FD69 ; 0634 062C 0649 ;        MA      # ( ‎ﵩ‎ → ‎شجى‎ ) ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA    # →‎شجي‎→
+
+FD2E ; 0634 062D ;     MA      # ( ‎ﴮ‎ → ‎شح‎ ) ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH   # 
+FD38 ; 0634 062D ;     MA      # ( ‎ﴸ‎ → ‎شح‎ ) ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH    # 
+FD26 ; 0634 062D ;     MA      # ( ‎ﴦ‎ → ‎شح‎ ) ARABIC LIGATURE SHEEN WITH HAH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH     # 
+FD0A ; 0634 062D ;     MA      # ( ‎ﴊ‎ → ‎شح‎ ) ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH  # 
+
+FD68 ; 0634 062D 0645 ;        MA      # ( ‎ﵨ‎ → ‎شحم‎ ) ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH, ARABIC LETTER MEEM   # 
+FD67 ; 0634 062D 0645 ;        MA      # ( ‎ﵧ‎ → ‎شحم‎ ) ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH, ARABIC LETTER MEEM     # 
+
+FDAA ; 0634 062D 0649 ;        MA      # ( ‎ﶪ‎ → ‎شحى‎ ) ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA      # →‎شحي‎→
+
+FD29 ; 0634 0631 ;     MA      # ( ‎ﴩ‎ → ‎شر‎ ) ARABIC LIGATURE SHEEN WITH REH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER REH     # 
+FD0D ; 0634 0631 ;     MA      # ( ‎ﴍ‎ → ‎شر‎ ) ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER REH  # 
+
+FD30 ; 0634 0645 ;     MA      # ( ‎ﴰ‎ → ‎شم‎ ) ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM # 
+FCE9 ; 0634 0645 ;     MA      # ( ‎ﳩ‎ → ‎شم‎ ) ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM  # 
+FD28 ; 0634 0645 ;     MA      # ( ‎ﴨ‎ → ‎شم‎ ) ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM   # 
+FD0C ; 0634 0645 ;     MA      # ( ‎ﴌ‎ → ‎شم‎ ) ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM        # 
+
+FD6B ; 0634 0645 062C ;        MA      # ( ‎ﵫ‎ → ‎شمج‎ ) ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM, ARABIC LETTER JEEM # →‎شمخ‎→
+FD6A ; 0634 0645 062C ;        MA      # ( ‎ﵪ‎ → ‎شمج‎ ) ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM, ARABIC LETTER JEEM   # →‎شمخ‎→
+
+FD6D ; 0634 0645 0645 ;        MA      # ( ‎ﵭ‎ → ‎شمم‎ ) ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM, ARABIC LETTER MEEM # 
+FD6C ; 0634 0645 0645 ;        MA      # ( ‎ﵬ‎ → ‎شمم‎ ) ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER MEEM, ARABIC LETTER MEEM   # 
+
+FD32 ; 0634 0647 ;     MA      # ( ‎ﴲ‎ → ‎شه‎ ) ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HEH   # 
+FCEA ; 0634 0647 ;     MA      # ( ‎ﳪ‎ → ‎شه‎ ) ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER HEH    # 
+
+FD19 ; 0634 0649 ;     MA      # ( ‎ﴙ‎ → ‎شى‎ ) ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER ALEF MAKSURA   # 
+FCFD ; 0634 0649 ;     MA      # ( ‎ﳽ‎ → ‎شى‎ ) ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER ALEF MAKSURA        # 
+FD1A ; 0634 0649 ;     MA      # ( ‎ﴚ‎ → ‎شى‎ ) ARABIC LIGATURE SHEEN WITH YEH FINAL FORM → ARABIC LETTER SHEEN, ARABIC LETTER ALEF MAKSURA    # →‎شي‎→
+FCFE ; 0634 0649 ;     MA      # ( ‎ﳾ‎ → ‎شى‎ ) ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM → ARABIC LETTER SHEEN, ARABIC LETTER ALEF MAKSURA # →‎شي‎→
+
+FEBB ; 0635 ;  MA      # ( ‎ﺻ‎ → ‎ص‎ ) ARABIC LETTER SAD INITIAL FORM → ARABIC LETTER SAD       # 
+FEBC ; 0635 ;  MA      # ( ‎ﺼ‎ → ‎ص‎ ) ARABIC LETTER SAD MEDIAL FORM → ARABIC LETTER SAD        # 
+FEBA ; 0635 ;  MA      # ( ‎ﺺ‎ → ‎ص‎ ) ARABIC LETTER SAD FINAL FORM → ARABIC LETTER SAD # 
+FEB9 ; 0635 ;  MA      # ( ‎ﺹ‎ → ‎ص‎ ) ARABIC LETTER SAD ISOLATED FORM → ARABIC LETTER SAD      # 
+
+FCB2 ; 0635 062C ;     MA      # ( ‎ﲲ‎ → ‎صج‎ ) ARABIC LIGATURE SAD WITH KHAH INITIAL FORM → ARABIC LETTER SAD, ARABIC LETTER JEEM     # →‎صخ‎→
+
+FCB1 ; 0635 062D ;     MA      # ( ‎ﲱ‎ → ‎صح‎ ) ARABIC LIGATURE SAD WITH HAH INITIAL FORM → ARABIC LETTER SAD, ARABIC LETTER HAH       # 
+FC20 ; 0635 062D ;     MA      # ( ‎ﰠ‎ → ‎صح‎ ) ARABIC LIGATURE SAD WITH HAH ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER HAH      # 
+
+FD65 ; 0635 062D 062D ;        MA      # ( ‎ﵥ‎ → ‎صحح‎ ) ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM → ARABIC LETTER SAD, ARABIC LETTER HAH, ARABIC LETTER HAH # 
+FD64 ; 0635 062D 062D ;        MA      # ( ‎ﵤ‎ → ‎صحح‎ ) ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER HAH, ARABIC LETTER HAH   # 
+
+FDA9 ; 0635 062D 0649 ;        MA      # ( ‎ﶩ‎ → ‎صحى‎ ) ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA  # →‎صحي‎→
+
+FD2B ; 0635 0631 ;     MA      # ( ‎ﴫ‎ → ‎صر‎ ) ARABIC LIGATURE SAD WITH REH FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER REH # 
+FD0F ; 0635 0631 ;     MA      # ( ‎ﴏ‎ → ‎صر‎ ) ARABIC LIGATURE SAD WITH REH ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER REH      # 
+
+FDF5 ; 0635 0644 0639 0645 ;   MA      # ( ‎ﷵ‎ → ‎صلعم‎ ) ARABIC LIGATURE SALAM ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER LAM, ARABIC LETTER AIN, ARABIC LETTER MEEM  # 
+
+FDF9 ; 0635 0644 0649 ;        MA      # ( ‎ﷹ‎ → ‎صلى‎ ) ARABIC LIGATURE SALLA ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA       # 
+
+FDFA ; 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 0649 0647 0020 0648 0633 0644 0645 ;     MA      #* ( ‎ﷺ‎ → ‎صلى الله علىه وسلم‎ ) ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM → ARABIC LETTER SAD, ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA, SPACE, ARABIC LETTER ALEF, ARABIC LETTER LAM, ARABIC LETTER LAM, ARABIC LETTER HEH, SPACE, ARABIC LETTER AIN, ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HEH, SPACE, ARABIC LETTER WAW, ARABIC LETTER SEEN, ARABIC LETTER LAM, ARABIC LETTER MEEM      # →‎صلى الله عليه وسلم‎→
+
+FDF0 ; 0635 0644 06D2 ;        MA      # ( ‎ﷰ‎ → ‎صلے‎ ) ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER LAM, ARABIC LETTER YEH BARREE       # 
+
+FCB3 ; 0635 0645 ;     MA      # ( ‎ﲳ‎ → ‎صم‎ ) ARABIC LIGATURE SAD WITH MEEM INITIAL FORM → ARABIC LETTER SAD, ARABIC LETTER MEEM     # 
+FC21 ; 0635 0645 ;     MA      # ( ‎ﰡ‎ → ‎صم‎ ) ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER MEEM    # 
+
+FDC5 ; 0635 0645 0645 ;        MA      # ( ‎ﷅ‎ → ‎صمم‎ ) ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER SAD, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+FD66 ; 0635 0645 0645 ;        MA      # ( ‎ﵦ‎ → ‎صمم‎ ) ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER MEEM, ARABIC LETTER MEEM       # 
+
+FD21 ; 0635 0649 ;     MA      # ( ‎ﴡ‎ → ‎صى‎ ) ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER ALEF MAKSURA       # 
+FD05 ; 0635 0649 ;     MA      # ( ‎ﴅ‎ → ‎صى‎ ) ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER ALEF MAKSURA    # 
+FD22 ; 0635 0649 ;     MA      # ( ‎ﴢ‎ → ‎صى‎ ) ARABIC LIGATURE SAD WITH YEH FINAL FORM → ARABIC LETTER SAD, ARABIC LETTER ALEF MAKSURA        # →‎صي‎→
+FD06 ; 0635 0649 ;     MA      # ( ‎ﴆ‎ → ‎صى‎ ) ARABIC LIGATURE SAD WITH YEH ISOLATED FORM → ARABIC LETTER SAD, ARABIC LETTER ALEF MAKSURA     # →‎صي‎→
+
+FEBF ; 0636 ;  MA      # ( ‎ﺿ‎ → ‎ض‎ ) ARABIC LETTER DAD INITIAL FORM → ARABIC LETTER DAD       # 
+FEC0 ; 0636 ;  MA      # ( ‎ﻀ‎ → ‎ض‎ ) ARABIC LETTER DAD MEDIAL FORM → ARABIC LETTER DAD        # 
+FEBE ; 0636 ;  MA      # ( ‎ﺾ‎ → ‎ض‎ ) ARABIC LETTER DAD FINAL FORM → ARABIC LETTER DAD # 
+FEBD ; 0636 ;  MA      # ( ‎ﺽ‎ → ‎ض‎ ) ARABIC LETTER DAD ISOLATED FORM → ARABIC LETTER DAD      # 
+
+FCB4 ; 0636 062C ;     MA      # ( ‎ﲴ‎ → ‎ضج‎ ) ARABIC LIGATURE DAD WITH JEEM INITIAL FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM     # 
+FC22 ; 0636 062C ;     MA      # ( ‎ﰢ‎ → ‎ضج‎ ) ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM    # 
+FCB6 ; 0636 062C ;     MA      # ( ‎ﲶ‎ → ‎ضج‎ ) ARABIC LIGATURE DAD WITH KHAH INITIAL FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM     # →‎ضخ‎→→‎ﰤ‎→→‎ﰢ‎→
+FC24 ; 0636 062C ;     MA      # ( ‎ﰤ‎ → ‎ضج‎ ) ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM    # →‎ﰢ‎→
+
+FD70 ; 0636 062C 0645 ;        MA      # ( ‎ﵰ‎ → ‎ضجم‎ ) ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # →‎ضخم‎→
+FD6F ; 0636 062C 0645 ;        MA      # ( ‎ﵯ‎ → ‎ضجم‎ ) ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER JEEM, ARABIC LETTER MEEM       # →‎ضخم‎→
+
+FCB5 ; 0636 062D ;     MA      # ( ‎ﲵ‎ → ‎ضح‎ ) ARABIC LIGATURE DAD WITH HAH INITIAL FORM → ARABIC LETTER DAD, ARABIC LETTER HAH       # 
+FC23 ; 0636 062D ;     MA      # ( ‎ﰣ‎ → ‎ضح‎ ) ARABIC LIGATURE DAD WITH HAH ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER HAH      # 
+
+FD6E ; 0636 062D 0649 ;        MA      # ( ‎ﵮ‎ → ‎ضحى‎ ) ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA # 
+FDAB ; 0636 062D 0649 ;        MA      # ( ‎ﶫ‎ → ‎ضحى‎ ) ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA  # →‎ضحي‎→
+
+FD2C ; 0636 0631 ;     MA      # ( ‎ﴬ‎ → ‎ضر‎ ) ARABIC LIGATURE DAD WITH REH FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER REH # 
+FD10 ; 0636 0631 ;     MA      # ( ‎ﴐ‎ → ‎ضر‎ ) ARABIC LIGATURE DAD WITH REH ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER REH      # 
+
+FCB7 ; 0636 0645 ;     MA      # ( ‎ﲷ‎ → ‎ضم‎ ) ARABIC LIGATURE DAD WITH MEEM INITIAL FORM → ARABIC LETTER DAD, ARABIC LETTER MEEM     # 
+FC25 ; 0636 0645 ;     MA      # ( ‎ﰥ‎ → ‎ضم‎ ) ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER MEEM    # 
+
+FD23 ; 0636 0649 ;     MA      # ( ‎ﴣ‎ → ‎ضى‎ ) ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER ALEF MAKSURA       # 
+FD07 ; 0636 0649 ;     MA      # ( ‎ﴇ‎ → ‎ضى‎ ) ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER ALEF MAKSURA    # 
+FD24 ; 0636 0649 ;     MA      # ( ‎ﴤ‎ → ‎ضى‎ ) ARABIC LIGATURE DAD WITH YEH FINAL FORM → ARABIC LETTER DAD, ARABIC LETTER ALEF MAKSURA        # →‎ضي‎→
+FD08 ; 0636 0649 ;     MA      # ( ‎ﴈ‎ → ‎ضى‎ ) ARABIC LIGATURE DAD WITH YEH ISOLATED FORM → ARABIC LETTER DAD, ARABIC LETTER ALEF MAKSURA     # →‎ضي‎→
+
+FEC3 ; 0637 ;  MA      # ( ‎ﻃ‎ → ‎ط‎ ) ARABIC LETTER TAH INITIAL FORM → ARABIC LETTER TAH       # 
+FEC4 ; 0637 ;  MA      # ( ‎ﻄ‎ → ‎ط‎ ) ARABIC LETTER TAH MEDIAL FORM → ARABIC LETTER TAH        # 
+FEC2 ; 0637 ;  MA      # ( ‎ﻂ‎ → ‎ط‎ ) ARABIC LETTER TAH FINAL FORM → ARABIC LETTER TAH # 
+FEC1 ; 0637 ;  MA      # ( ‎ﻁ‎ → ‎ط‎ ) ARABIC LETTER TAH ISOLATED FORM → ARABIC LETTER TAH      # 
+
+FCB8 ; 0637 062D ;     MA      # ( ‎ﲸ‎ → ‎طح‎ ) ARABIC LIGATURE TAH WITH HAH INITIAL FORM → ARABIC LETTER TAH, ARABIC LETTER HAH       # 
+FC26 ; 0637 062D ;     MA      # ( ‎ﰦ‎ → ‎طح‎ ) ARABIC LIGATURE TAH WITH HAH ISOLATED FORM → ARABIC LETTER TAH, ARABIC LETTER HAH      # 
+
+FD33 ; 0637 0645 ;     MA      # ( ‎ﴳ‎ → ‎طم‎ ) ARABIC LIGATURE TAH WITH MEEM INITIAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM     # 
+FD3A ; 0637 0645 ;     MA      # ( ‎ﴺ‎ → ‎طم‎ ) ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM      # 
+FC27 ; 0637 0645 ;     MA      # ( ‎ﰧ‎ → ‎طم‎ ) ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM    # 
+
+FD72 ; 0637 0645 062D ;        MA      # ( ‎ﵲ‎ → ‎طمح‎ ) ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+FD71 ; 0637 0645 062D ;        MA      # ( ‎ﵱ‎ → ‎طمح‎ ) ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM, ARABIC LETTER HAH # 
+
+FD73 ; 0637 0645 0645 ;        MA      # ( ‎ﵳ‎ → ‎طمم‎ ) ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+
+FD74 ; 0637 0645 0649 ;        MA      # ( ‎ﵴ‎ → ‎طمى‎ ) ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER TAH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎طمي‎→
+
+FD11 ; 0637 0649 ;     MA      # ( ‎ﴑ‎ → ‎طى‎ ) ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER TAH, ARABIC LETTER ALEF MAKSURA       # 
+FCF5 ; 0637 0649 ;     MA      # ( ‎ﳵ‎ → ‎طى‎ ) ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER TAH, ARABIC LETTER ALEF MAKSURA    # 
+FD12 ; 0637 0649 ;     MA      # ( ‎ﴒ‎ → ‎طى‎ ) ARABIC LIGATURE TAH WITH YEH FINAL FORM → ARABIC LETTER TAH, ARABIC LETTER ALEF MAKSURA        # →‎طي‎→
+FCF6 ; 0637 0649 ;     MA      # ( ‎ﳶ‎ → ‎طى‎ ) ARABIC LIGATURE TAH WITH YEH ISOLATED FORM → ARABIC LETTER TAH, ARABIC LETTER ALEF MAKSURA     # →‎طي‎→
+
+FEC7 ; 0638 ;  MA      # ( ‎ﻇ‎ → ‎ظ‎ ) ARABIC LETTER ZAH INITIAL FORM → ARABIC LETTER ZAH       # 
+FEC8 ; 0638 ;  MA      # ( ‎ﻈ‎ → ‎ظ‎ ) ARABIC LETTER ZAH MEDIAL FORM → ARABIC LETTER ZAH        # 
+FEC6 ; 0638 ;  MA      # ( ‎ﻆ‎ → ‎ظ‎ ) ARABIC LETTER ZAH FINAL FORM → ARABIC LETTER ZAH # 
+FEC5 ; 0638 ;  MA      # ( ‎ﻅ‎ → ‎ظ‎ ) ARABIC LETTER ZAH ISOLATED FORM → ARABIC LETTER ZAH      # 
+
+FCB9 ; 0638 0645 ;     MA      # ( ‎ﲹ‎ → ‎ظم‎ ) ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM → ARABIC LETTER ZAH, ARABIC LETTER MEEM     # 
+FD3B ; 0638 0645 ;     MA      # ( ‎ﴻ‎ → ‎ظم‎ ) ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM → ARABIC LETTER ZAH, ARABIC LETTER MEEM      # 
+FC28 ; 0638 0645 ;     MA      # ( ‎ﰨ‎ → ‎ظم‎ ) ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM → ARABIC LETTER ZAH, ARABIC LETTER MEEM    # 
+
+FECB ; 0639 ;  MA      # ( ‎ﻋ‎ → ‎ع‎ ) ARABIC LETTER AIN INITIAL FORM → ARABIC LETTER AIN       # 
+FECC ; 0639 ;  MA      # ( ‎ﻌ‎ → ‎ع‎ ) ARABIC LETTER AIN MEDIAL FORM → ARABIC LETTER AIN        # 
+FECA ; 0639 ;  MA      # ( ‎ﻊ‎ → ‎ع‎ ) ARABIC LETTER AIN FINAL FORM → ARABIC LETTER AIN # 
+FEC9 ; 0639 ;  MA      # ( ‎ﻉ‎ → ‎ع‎ ) ARABIC LETTER AIN ISOLATED FORM → ARABIC LETTER AIN      # 
+
+FCBA ; 0639 062C ;     MA      # ( ‎ﲺ‎ → ‎عج‎ ) ARABIC LIGATURE AIN WITH JEEM INITIAL FORM → ARABIC LETTER AIN, ARABIC LETTER JEEM     # 
+FC29 ; 0639 062C ;     MA      # ( ‎ﰩ‎ → ‎عج‎ ) ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM → ARABIC LETTER AIN, ARABIC LETTER JEEM    # 
+
+FDC4 ; 0639 062C 0645 ;        MA      # ( ‎ﷄ‎ → ‎عجم‎ ) ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM → ARABIC LETTER AIN, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # 
+FD75 ; 0639 062C 0645 ;        MA      # ( ‎ﵵ‎ → ‎عجم‎ ) ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER JEEM, ARABIC LETTER MEEM       # 
+
+FDF7 ; 0639 0644 0649 0647 ;   MA      # ( ‎ﷷ‎ → ‎علىه‎ ) ARABIC LIGATURE ALAYHE ISOLATED FORM → ARABIC LETTER AIN, ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HEH # →‎عليه‎→
+
+FCBB ; 0639 0645 ;     MA      # ( ‎ﲻ‎ → ‎عم‎ ) ARABIC LIGATURE AIN WITH MEEM INITIAL FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM     # 
+FC2A ; 0639 0645 ;     MA      # ( ‎ﰪ‎ → ‎عم‎ ) ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM    # 
+
+FD77 ; 0639 0645 0645 ;        MA      # ( ‎ﵷ‎ → ‎عمم‎ ) ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+FD76 ; 0639 0645 0645 ;        MA      # ( ‎ﵶ‎ → ‎عمم‎ ) ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM, ARABIC LETTER MEEM       # 
+
+FD78 ; 0639 0645 0649 ;        MA      # ( ‎ﵸ‎ → ‎عمى‎ ) ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA       # 
+FDB6 ; 0639 0645 0649 ;        MA      # ( ‎ﶶ‎ → ‎عمى‎ ) ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎عمي‎→
+
+FD13 ; 0639 0649 ;     MA      # ( ‎ﴓ‎ → ‎عى‎ ) ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER ALEF MAKSURA       # 
+FCF7 ; 0639 0649 ;     MA      # ( ‎ﳷ‎ → ‎عى‎ ) ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER AIN, ARABIC LETTER ALEF MAKSURA    # 
+FD14 ; 0639 0649 ;     MA      # ( ‎ﴔ‎ → ‎عى‎ ) ARABIC LIGATURE AIN WITH YEH FINAL FORM → ARABIC LETTER AIN, ARABIC LETTER ALEF MAKSURA        # →‎عي‎→
+FCF8 ; 0639 0649 ;     MA      # ( ‎ﳸ‎ → ‎عى‎ ) ARABIC LIGATURE AIN WITH YEH ISOLATED FORM → ARABIC LETTER AIN, ARABIC LETTER ALEF MAKSURA     # →‎عي‎→
+
+FECF ; 063A ;  MA      # ( ‎ﻏ‎ → ‎غ‎ ) ARABIC LETTER GHAIN INITIAL FORM → ARABIC LETTER GHAIN   # 
+FED0 ; 063A ;  MA      # ( ‎ﻐ‎ → ‎غ‎ ) ARABIC LETTER GHAIN MEDIAL FORM → ARABIC LETTER GHAIN    # 
+FECE ; 063A ;  MA      # ( ‎ﻎ‎ → ‎غ‎ ) ARABIC LETTER GHAIN FINAL FORM → ARABIC LETTER GHAIN     # 
+FECD ; 063A ;  MA      # ( ‎ﻍ‎ → ‎غ‎ ) ARABIC LETTER GHAIN ISOLATED FORM → ARABIC LETTER GHAIN  # 
+
+FCBC ; 063A 062C ;     MA      # ( ‎ﲼ‎ → ‎غج‎ ) ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER JEEM # 
+FC2B ; 063A 062C ;     MA      # ( ‎ﰫ‎ → ‎غج‎ ) ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM → ARABIC LETTER GHAIN, ARABIC LETTER JEEM        # 
+
+FCBD ; 063A 0645 ;     MA      # ( ‎ﲽ‎ → ‎غم‎ ) ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER MEEM # 
+FC2C ; 063A 0645 ;     MA      # ( ‎ﰬ‎ → ‎غم‎ ) ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM → ARABIC LETTER GHAIN, ARABIC LETTER MEEM        # 
+
+FD79 ; 063A 0645 0645 ;        MA      # ( ‎ﵹ‎ → ‎غمم‎ ) ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER MEEM, ARABIC LETTER MEEM   # 
+
+FD7B ; 063A 0645 0649 ;        MA      # ( ‎ﵻ‎ → ‎غمى‎ ) ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA   # 
+FD7A ; 063A 0645 0649 ;        MA      # ( ‎ﵺ‎ → ‎غمى‎ ) ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA    # →‎غمي‎→
+
+FD15 ; 063A 0649 ;     MA      # ( ‎ﴕ‎ → ‎غى‎ ) ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER ALEF MAKSURA   # 
+FCF9 ; 063A 0649 ;     MA      # ( ‎ﳹ‎ → ‎غى‎ ) ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER GHAIN, ARABIC LETTER ALEF MAKSURA        # 
+FD16 ; 063A 0649 ;     MA      # ( ‎ﴖ‎ → ‎غى‎ ) ARABIC LIGATURE GHAIN WITH YEH FINAL FORM → ARABIC LETTER GHAIN, ARABIC LETTER ALEF MAKSURA    # →‎غي‎→
+FCFA ; 063A 0649 ;     MA      # ( ‎ﳺ‎ → ‎غى‎ ) ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM → ARABIC LETTER GHAIN, ARABIC LETTER ALEF MAKSURA # →‎غي‎→
+
+FED3 ; 0641 ;  MA      # ( ‎ﻓ‎ → ‎ف‎ ) ARABIC LETTER FEH INITIAL FORM → ARABIC LETTER FEH       # 
+FED4 ; 0641 ;  MA      # ( ‎ﻔ‎ → ‎ف‎ ) ARABIC LETTER FEH MEDIAL FORM → ARABIC LETTER FEH        # 
+FED2 ; 0641 ;  MA      # ( ‎ﻒ‎ → ‎ف‎ ) ARABIC LETTER FEH FINAL FORM → ARABIC LETTER FEH # 
+FED1 ; 0641 ;  MA      # ( ‎ﻑ‎ → ‎ف‎ ) ARABIC LETTER FEH ISOLATED FORM → ARABIC LETTER FEH      # 
+
+FCBE ; 0641 062C ;     MA      # ( ‎ﲾ‎ → ‎فج‎ ) ARABIC LIGATURE FEH WITH JEEM INITIAL FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM     # 
+FC2D ; 0641 062C ;     MA      # ( ‎ﰭ‎ → ‎فج‎ ) ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM    # 
+FCC0 ; 0641 062C ;     MA      # ( ‎ﳀ‎ → ‎فج‎ ) ARABIC LIGATURE FEH WITH KHAH INITIAL FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM     # →‎فخ‎→→‎ﰯ‎→→‎ﰭ‎→
+FC2F ; 0641 062C ;     MA      # ( ‎ﰯ‎ → ‎فج‎ ) ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM    # →‎ﰭ‎→
+
+FD7D ; 0641 062C 0645 ;        MA      # ( ‎ﵽ‎ → ‎فجم‎ ) ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # →‎فخم‎→
+FD7C ; 0641 062C 0645 ;        MA      # ( ‎ﵼ‎ → ‎فجم‎ ) ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM → ARABIC LETTER FEH, ARABIC LETTER JEEM, ARABIC LETTER MEEM       # →‎فخم‎→
+
+FCBF ; 0641 062D ;     MA      # ( ‎ﲿ‎ → ‎فح‎ ) ARABIC LIGATURE FEH WITH HAH INITIAL FORM → ARABIC LETTER FEH, ARABIC LETTER HAH       # 
+FC2E ; 0641 062D ;     MA      # ( ‎ﰮ‎ → ‎فح‎ ) ARABIC LIGATURE FEH WITH HAH ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER HAH      # 
+
+FCC1 ; 0641 0645 ;     MA      # ( ‎ﳁ‎ → ‎فم‎ ) ARABIC LIGATURE FEH WITH MEEM INITIAL FORM → ARABIC LETTER FEH, ARABIC LETTER MEEM     # 
+FC30 ; 0641 0645 ;     MA      # ( ‎ﰰ‎ → ‎فم‎ ) ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER MEEM    # 
+
+FDC1 ; 0641 0645 0649 ;        MA      # ( ‎ﷁ‎ → ‎فمى‎ ) ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER FEH, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎فمي‎→
+
+FC7C ; 0641 0649 ;     MA      # ( ‎ﱼ‎ → ‎فى‎ ) ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER FEH, ARABIC LETTER ALEF MAKSURA       # 
+FC31 ; 0641 0649 ;     MA      # ( ‎ﰱ‎ → ‎فى‎ ) ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER ALEF MAKSURA    # 
+FC7D ; 0641 0649 ;     MA      # ( ‎ﱽ‎ → ‎فى‎ ) ARABIC LIGATURE FEH WITH YEH FINAL FORM → ARABIC LETTER FEH, ARABIC LETTER ALEF MAKSURA        # →‎في‎→
+FC32 ; 0641 0649 ;     MA      # ( ‎ﰲ‎ → ‎فى‎ ) ARABIC LIGATURE FEH WITH YEH ISOLATED FORM → ARABIC LETTER FEH, ARABIC LETTER ALEF MAKSURA     # →‎في‎→
+
+FB6C ; 06A4 ;  MA      # ( ‎ﭬ‎ → ‎ڤ‎ ) ARABIC LETTER VEH INITIAL FORM → ARABIC LETTER VEH       # 
+FB6D ; 06A4 ;  MA      # ( ‎ﭭ‎ → ‎ڤ‎ ) ARABIC LETTER VEH MEDIAL FORM → ARABIC LETTER VEH        # 
+FB6B ; 06A4 ;  MA      # ( ‎ﭫ‎ → ‎ڤ‎ ) ARABIC LETTER VEH FINAL FORM → ARABIC LETTER VEH # 
+FB6A ; 06A4 ;  MA      # ( ‎ﭪ‎ → ‎ڤ‎ ) ARABIC LETTER VEH ISOLATED FORM → ARABIC LETTER VEH      # 
+
+FB70 ; 06A6 ;  MA      # ( ‎ﭰ‎ → ‎ڦ‎ ) ARABIC LETTER PEHEH INITIAL FORM → ARABIC LETTER PEHEH   # 
+FB71 ; 06A6 ;  MA      # ( ‎ﭱ‎ → ‎ڦ‎ ) ARABIC LETTER PEHEH MEDIAL FORM → ARABIC LETTER PEHEH    # 
+FB6F ; 06A6 ;  MA      # ( ‎ﭯ‎ → ‎ڦ‎ ) ARABIC LETTER PEHEH FINAL FORM → ARABIC LETTER PEHEH     # 
+FB6E ; 06A6 ;  MA      # ( ‎ﭮ‎ → ‎ڦ‎ ) ARABIC LETTER PEHEH ISOLATED FORM → ARABIC LETTER PEHEH  # 
+
+FED7 ; 0642 ;  MA      # ( ‎ﻗ‎ → ‎ق‎ ) ARABIC LETTER QAF INITIAL FORM → ARABIC LETTER QAF       # 
+FED8 ; 0642 ;  MA      # ( ‎ﻘ‎ → ‎ق‎ ) ARABIC LETTER QAF MEDIAL FORM → ARABIC LETTER QAF        # 
+FED6 ; 0642 ;  MA      # ( ‎ﻖ‎ → ‎ق‎ ) ARABIC LETTER QAF FINAL FORM → ARABIC LETTER QAF # 
+FED5 ; 0642 ;  MA      # ( ‎ﻕ‎ → ‎ق‎ ) ARABIC LETTER QAF ISOLATED FORM → ARABIC LETTER QAF      # 
+
+FCC2 ; 0642 062D ;     MA      # ( ‎ﳂ‎ → ‎قح‎ ) ARABIC LIGATURE QAF WITH HAH INITIAL FORM → ARABIC LETTER QAF, ARABIC LETTER HAH       # 
+FC33 ; 0642 062D ;     MA      # ( ‎ﰳ‎ → ‎قح‎ ) ARABIC LIGATURE QAF WITH HAH ISOLATED FORM → ARABIC LETTER QAF, ARABIC LETTER HAH      # 
+
+FDF1 ; 0642 0644 06D2 ;        MA      # ( ‎ﷱ‎ → ‎قلے‎ ) ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM → ARABIC LETTER QAF, ARABIC LETTER LAM, ARABIC LETTER YEH BARREE        # 
+
+FCC3 ; 0642 0645 ;     MA      # ( ‎ﳃ‎ → ‎قم‎ ) ARABIC LIGATURE QAF WITH MEEM INITIAL FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM     # 
+FC34 ; 0642 0645 ;     MA      # ( ‎ﰴ‎ → ‎قم‎ ) ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM    # 
+
+FDB4 ; 0642 0645 062D ;        MA      # ( ‎ﶴ‎ → ‎قمح‎ ) ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+FD7E ; 0642 0645 062D ;        MA      # ( ‎ﵾ‎ → ‎قمح‎ ) ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM, ARABIC LETTER HAH # 
+
+FD7F ; 0642 0645 0645 ;        MA      # ( ‎ﵿ‎ → ‎قمم‎ ) ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM, ARABIC LETTER MEEM       # 
+
+FDB2 ; 0642 0645 0649 ;        MA      # ( ‎ﶲ‎ → ‎قمى‎ ) ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER QAF, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎قمي‎→
+
+FC7E ; 0642 0649 ;     MA      # ( ‎ﱾ‎ → ‎قى‎ ) ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER QAF, ARABIC LETTER ALEF MAKSURA       # 
+FC35 ; 0642 0649 ;     MA      # ( ‎ﰵ‎ → ‎قى‎ ) ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER QAF, ARABIC LETTER ALEF MAKSURA    # 
+FC7F ; 0642 0649 ;     MA      # ( ‎ﱿ‎ → ‎قى‎ ) ARABIC LIGATURE QAF WITH YEH FINAL FORM → ARABIC LETTER QAF, ARABIC LETTER ALEF MAKSURA        # →‎قي‎→
+FC36 ; 0642 0649 ;     MA      # ( ‎ﰶ‎ → ‎قى‎ ) ARABIC LIGATURE QAF WITH YEH ISOLATED FORM → ARABIC LETTER QAF, ARABIC LETTER ALEF MAKSURA     # →‎قي‎→
+
+FEDB ; 0643 ;  MA      # ( ‎ﻛ‎ → ‎ك‎ ) ARABIC LETTER KAF INITIAL FORM → ARABIC LETTER KAF       # 
+FEDC ; 0643 ;  MA      # ( ‎ﻜ‎ → ‎ك‎ ) ARABIC LETTER KAF MEDIAL FORM → ARABIC LETTER KAF        # 
+FEDA ; 0643 ;  MA      # ( ‎ﻚ‎ → ‎ك‎ ) ARABIC LETTER KAF FINAL FORM → ARABIC LETTER KAF # 
+FED9 ; 0643 ;  MA      # ( ‎ﻙ‎ → ‎ك‎ ) ARABIC LETTER KAF ISOLATED FORM → ARABIC LETTER KAF      # 
+06A9 ; 0643 ;  MA      # ( ‎ک‎ → ‎ك‎ ) ARABIC LETTER KEHEH → ARABIC LETTER KAF   # 
+FB90 ; 0643 ;  MA      # ( ‎ﮐ‎ → ‎ك‎ ) ARABIC LETTER KEHEH INITIAL FORM → ARABIC LETTER KAF     # →‎ﻜ‎→
+FB91 ; 0643 ;  MA      # ( ‎ﮑ‎ → ‎ك‎ ) ARABIC LETTER KEHEH MEDIAL FORM → ARABIC LETTER KAF      # →‎ﻜ‎→
+FB8F ; 0643 ;  MA      # ( ‎ﮏ‎ → ‎ك‎ ) ARABIC LETTER KEHEH FINAL FORM → ARABIC LETTER KAF       # →‎ﻚ‎→
+FB8E ; 0643 ;  MA      # ( ‎ﮎ‎ → ‎ك‎ ) ARABIC LETTER KEHEH ISOLATED FORM → ARABIC LETTER KAF    # →‎ک‎→
+
+FC80 ; 0643 0627 ;     MA      # ( ‎ﲀ‎ → ‎كا‎ ) ARABIC LIGATURE KAF WITH ALEF FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF       # 
+FC37 ; 0643 0627 ;     MA      # ( ‎ﰷ‎ → ‎كا‎ ) ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF    # 
+
+FCC4 ; 0643 062C ;     MA      # ( ‎ﳄ‎ → ‎كج‎ ) ARABIC LIGATURE KAF WITH JEEM INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER JEEM     # 
+FC38 ; 0643 062C ;     MA      # ( ‎ﰸ‎ → ‎كج‎ ) ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER JEEM    # 
+FCC6 ; 0643 062C ;     MA      # ( ‎ﳆ‎ → ‎كج‎ ) ARABIC LIGATURE KAF WITH KHAH INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER JEEM     # →‎كخ‎→→‎ﰺ‎→→‎ﰸ‎→
+FC3A ; 0643 062C ;     MA      # ( ‎ﰺ‎ → ‎كج‎ ) ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER JEEM    # →‎ﰸ‎→
+
+FCC5 ; 0643 062D ;     MA      # ( ‎ﳅ‎ → ‎كح‎ ) ARABIC LIGATURE KAF WITH HAH INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER HAH       # 
+FC39 ; 0643 062D ;     MA      # ( ‎ﰹ‎ → ‎كح‎ ) ARABIC LIGATURE KAF WITH HAH ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER HAH      # 
+
+FCC7 ; 0643 0644 ;     MA      # ( ‎ﳇ‎ → ‎كل‎ ) ARABIC LIGATURE KAF WITH LAM INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER LAM       # 
+FCEB ; 0643 0644 ;     MA      # ( ‎ﳫ‎ → ‎كل‎ ) ARABIC LIGATURE KAF WITH LAM MEDIAL FORM → ARABIC LETTER KAF, ARABIC LETTER LAM        # 
+FC81 ; 0643 0644 ;     MA      # ( ‎ﲁ‎ → ‎كل‎ ) ARABIC LIGATURE KAF WITH LAM FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER LAM # 
+FC3B ; 0643 0644 ;     MA      # ( ‎ﰻ‎ → ‎كل‎ ) ARABIC LIGATURE KAF WITH LAM ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER LAM      # 
+
+FCC8 ; 0643 0645 ;     MA      # ( ‎ﳈ‎ → ‎كم‎ ) ARABIC LIGATURE KAF WITH MEEM INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM     # 
+FCEC ; 0643 0645 ;     MA      # ( ‎ﳬ‎ → ‎كم‎ ) ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM      # 
+FC82 ; 0643 0645 ;     MA      # ( ‎ﲂ‎ → ‎كم‎ ) ARABIC LIGATURE KAF WITH MEEM FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM       # 
+FC3C ; 0643 0645 ;     MA      # ( ‎ﰼ‎ → ‎كم‎ ) ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM    # 
+
+FDC3 ; 0643 0645 0645 ;        MA      # ( ‎ﷃ‎ → ‎كمم‎ ) ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+FDBB ; 0643 0645 0645 ;        MA      # ( ‎ﶻ‎ → ‎كمم‎ ) ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM, ARABIC LETTER MEEM       # 
+
+FDB7 ; 0643 0645 0649 ;        MA      # ( ‎ﶷ‎ → ‎كمى‎ ) ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎كمي‎→
+
+FC83 ; 0643 0649 ;     MA      # ( ‎ﲃ‎ → ‎كى‎ ) ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF MAKSURA       # 
+FC3D ; 0643 0649 ;     MA      # ( ‎ﰽ‎ → ‎كى‎ ) ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF MAKSURA    # 
+FC84 ; 0643 0649 ;     MA      # ( ‎ﲄ‎ → ‎كى‎ ) ARABIC LIGATURE KAF WITH YEH FINAL FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF MAKSURA        # →‎كي‎→
+FC3E ; 0643 0649 ;     MA      # ( ‎ﰾ‎ → ‎كى‎ ) ARABIC LIGATURE KAF WITH YEH ISOLATED FORM → ARABIC LETTER KAF, ARABIC LETTER ALEF MAKSURA     # →‎كي‎→
+
+FBD5 ; 06AD ;  MA      # ( ‎ﯕ‎ → ‎ڭ‎ ) ARABIC LETTER NG INITIAL FORM → ARABIC LETTER NG # 
+FBD6 ; 06AD ;  MA      # ( ‎ﯖ‎ → ‎ڭ‎ ) ARABIC LETTER NG MEDIAL FORM → ARABIC LETTER NG  # 
+FBD4 ; 06AD ;  MA      # ( ‎ﯔ‎ → ‎ڭ‎ ) ARABIC LETTER NG FINAL FORM → ARABIC LETTER NG   # 
+FBD3 ; 06AD ;  MA      # ( ‎ﯓ‎ → ‎ڭ‎ ) ARABIC LETTER NG ISOLATED FORM → ARABIC LETTER NG        # 
+
+FB94 ; 06AF ;  MA      # ( ‎ﮔ‎ → ‎گ‎ ) ARABIC LETTER GAF INITIAL FORM → ARABIC LETTER GAF       # 
+FB95 ; 06AF ;  MA      # ( ‎ﮕ‎ → ‎گ‎ ) ARABIC LETTER GAF MEDIAL FORM → ARABIC LETTER GAF        # 
+FB93 ; 06AF ;  MA      # ( ‎ﮓ‎ → ‎گ‎ ) ARABIC LETTER GAF FINAL FORM → ARABIC LETTER GAF # 
+FB92 ; 06AF ;  MA      # ( ‎ﮒ‎ → ‎گ‎ ) ARABIC LETTER GAF ISOLATED FORM → ARABIC LETTER GAF      # 
+
+FB9C ; 06B1 ;  MA      # ( ‎ﮜ‎ → ‎ڱ‎ ) ARABIC LETTER NGOEH INITIAL FORM → ARABIC LETTER NGOEH   # 
+FB9D ; 06B1 ;  MA      # ( ‎ﮝ‎ → ‎ڱ‎ ) ARABIC LETTER NGOEH MEDIAL FORM → ARABIC LETTER NGOEH    # 
+FB9B ; 06B1 ;  MA      # ( ‎ﮛ‎ → ‎ڱ‎ ) ARABIC LETTER NGOEH FINAL FORM → ARABIC LETTER NGOEH     # 
+FB9A ; 06B1 ;  MA      # ( ‎ﮚ‎ → ‎ڱ‎ ) ARABIC LETTER NGOEH ISOLATED FORM → ARABIC LETTER NGOEH  # 
+
+FB98 ; 06B3 ;  MA      # ( ‎ﮘ‎ → ‎ڳ‎ ) ARABIC LETTER GUEH INITIAL FORM → ARABIC LETTER GUEH     # 
+FB99 ; 06B3 ;  MA      # ( ‎ﮙ‎ → ‎ڳ‎ ) ARABIC LETTER GUEH MEDIAL FORM → ARABIC LETTER GUEH      # 
+FB97 ; 06B3 ;  MA      # ( ‎ﮗ‎ → ‎ڳ‎ ) ARABIC LETTER GUEH FINAL FORM → ARABIC LETTER GUEH       # 
+FB96 ; 06B3 ;  MA      # ( ‎ﮖ‎ → ‎ڳ‎ ) ARABIC LETTER GUEH ISOLATED FORM → ARABIC LETTER GUEH    # 
+
+FEDF ; 0644 ;  MA      # ( ‎ﻟ‎ → ‎ل‎ ) ARABIC LETTER LAM INITIAL FORM → ARABIC LETTER LAM       # 
+FEE0 ; 0644 ;  MA      # ( ‎ﻠ‎ → ‎ل‎ ) ARABIC LETTER LAM MEDIAL FORM → ARABIC LETTER LAM        # 
+FEDE ; 0644 ;  MA      # ( ‎ﻞ‎ → ‎ل‎ ) ARABIC LETTER LAM FINAL FORM → ARABIC LETTER LAM # 
+FEDD ; 0644 ;  MA      # ( ‎ﻝ‎ → ‎ل‎ ) ARABIC LETTER LAM ISOLATED FORM → ARABIC LETTER LAM      # 
+
+FEF6 ; 0644 0622 ;     MA      # ( ‎ﻶ‎ → ‎لآ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF WITH MADDA ABOVE     # 
+FEF5 ; 0644 0622 ;     MA      # ( ‎ﻵ‎ → ‎لآ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF WITH MADDA ABOVE  # 
+
+FEFA ; 0644 0625 ;     MA      # ( ‎ﻺ‎ → ‎لإ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF WITH HAMZA BELOW     # 
+FEF9 ; 0644 0625 ;     MA      # ( ‎ﻹ‎ → ‎لإ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF WITH HAMZA BELOW  # 
+
+FEFC ; 0644 0627 ;     MA      # ( ‎ﻼ‎ → ‎لا‎ ) ARABIC LIGATURE LAM WITH ALEF FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF       # 
+FEFB ; 0644 0627 ;     MA      # ( ‎ﻻ‎ → ‎لا‎ ) ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF    # 
+
+FEF8 ; 0644 0627 0674 ;        MA      # ( ‎ﻸ‎ → ‎لاٴ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA  # →‎لأ‎→
+FEF7 ; 0644 0627 0674 ;        MA      # ( ‎ﻷ‎ → ‎لاٴ‎ ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF, ARABIC LETTER HIGH HAMZA       # →‎لأ‎→
+
+FCC9 ; 0644 062C ;     MA      # ( ‎ﳉ‎ → ‎لج‎ ) ARABIC LIGATURE LAM WITH JEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM     # 
+FC3F ; 0644 062C ;     MA      # ( ‎ﰿ‎ → ‎لج‎ ) ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM    # 
+FCCB ; 0644 062C ;     MA      # ( ‎ﳋ‎ → ‎لج‎ ) ARABIC LIGATURE LAM WITH KHAH INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM     # →‎لخ‎→→‎ﱁ‎→→‎ﰿ‎→
+FC41 ; 0644 062C ;     MA      # ( ‎ﱁ‎ → ‎لج‎ ) ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM    # →‎ﰿ‎→
+
+FD83 ; 0644 062C 062C ;        MA      # ( ‎ﶃ‎ → ‎لجج‎ ) ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER JEEM     # 
+FD84 ; 0644 062C 062C ;        MA      # ( ‎ﶄ‎ → ‎لجج‎ ) ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER JEEM       # 
+
+FDBA ; 0644 062C 0645 ;        MA      # ( ‎ﶺ‎ → ‎لجم‎ ) ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # 
+FDBC ; 0644 062C 0645 ;        MA      # ( ‎ﶼ‎ → ‎لجم‎ ) ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER MEEM       # 
+FD86 ; 0644 062C 0645 ;        MA      # ( ‎ﶆ‎ → ‎لجم‎ ) ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER MEEM     # →‎لخم‎→
+FD85 ; 0644 062C 0645 ;        MA      # ( ‎ﶅ‎ → ‎لجم‎ ) ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER MEEM       # →‎لخم‎→
+
+FDAC ; 0644 062C 0649 ;        MA      # ( ‎ﶬ‎ → ‎لجى‎ ) ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA        # →‎لجي‎→
+
+FCCA ; 0644 062D ;     MA      # ( ‎ﳊ‎ → ‎لح‎ ) ARABIC LIGATURE LAM WITH HAH INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER HAH       # 
+FC40 ; 0644 062D ;     MA      # ( ‎ﱀ‎ → ‎لح‎ ) ARABIC LIGATURE LAM WITH HAH ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER HAH      # 
+
+FDB5 ; 0644 062D 0645 ;        MA      # ( ‎ﶵ‎ → ‎لحم‎ ) ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER HAH, ARABIC LETTER MEEM       # 
+FD80 ; 0644 062D 0645 ;        MA      # ( ‎ﶀ‎ → ‎لحم‎ ) ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER HAH, ARABIC LETTER MEEM # 
+
+FD82 ; 0644 062D 0649 ;        MA      # ( ‎ﶂ‎ → ‎لحى‎ ) ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA # 
+FD81 ; 0644 062D 0649 ;        MA      # ( ‎ﶁ‎ → ‎لحى‎ ) ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA  # →‎لحي‎→
+
+FCCC ; 0644 0645 ;     MA      # ( ‎ﳌ‎ → ‎لم‎ ) ARABIC LIGATURE LAM WITH MEEM INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM     # 
+FCED ; 0644 0645 ;     MA      # ( ‎ﳭ‎ → ‎لم‎ ) ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM      # 
+FC85 ; 0644 0645 ;     MA      # ( ‎ﲅ‎ → ‎لم‎ ) ARABIC LIGATURE LAM WITH MEEM FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM       # 
+FC42 ; 0644 0645 ;     MA      # ( ‎ﱂ‎ → ‎لم‎ ) ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM    # 
+
+FD88 ; 0644 0645 062D ;        MA      # ( ‎ﶈ‎ → ‎لمح‎ ) ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM, ARABIC LETTER HAH       # 
+FD87 ; 0644 0645 062D ;        MA      # ( ‎ﶇ‎ → ‎لمح‎ ) ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM, ARABIC LETTER HAH # 
+
+FDAD ; 0644 0645 0649 ;        MA      # ( ‎ﶭ‎ → ‎لمى‎ ) ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA        # →‎لمي‎→
+
+FCCD ; 0644 0647 ;     MA      # ( ‎ﳍ‎ → ‎له‎ ) ARABIC LIGATURE LAM WITH HEH INITIAL FORM → ARABIC LETTER LAM, ARABIC LETTER HEH       # 
+
+FC86 ; 0644 0649 ;     MA      # ( ‎ﲆ‎ → ‎لى‎ ) ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA       # 
+FC43 ; 0644 0649 ;     MA      # ( ‎ﱃ‎ → ‎لى‎ ) ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA    # 
+FC87 ; 0644 0649 ;     MA      # ( ‎ﲇ‎ → ‎لى‎ ) ARABIC LIGATURE LAM WITH YEH FINAL FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA        # →‎لي‎→
+FC44 ; 0644 0649 ;     MA      # ( ‎ﱄ‎ → ‎لى‎ ) ARABIC LIGATURE LAM WITH YEH ISOLATED FORM → ARABIC LETTER LAM, ARABIC LETTER ALEF MAKSURA     # →‎لي‎→
+
+FEE3 ; 0645 ;  MA      # ( ‎ﻣ‎ → ‎م‎ ) ARABIC LETTER MEEM INITIAL FORM → ARABIC LETTER MEEM     # 
+FEE4 ; 0645 ;  MA      # ( ‎ﻤ‎ → ‎م‎ ) ARABIC LETTER MEEM MEDIAL FORM → ARABIC LETTER MEEM      # 
+FEE2 ; 0645 ;  MA      # ( ‎ﻢ‎ → ‎م‎ ) ARABIC LETTER MEEM FINAL FORM → ARABIC LETTER MEEM       # 
+FEE1 ; 0645 ;  MA      # ( ‎ﻡ‎ → ‎م‎ ) ARABIC LETTER MEEM ISOLATED FORM → ARABIC LETTER MEEM    # 
+
+FC88 ; 0645 0627 ;     MA      # ( ‎ﲈ‎ → ‎ما‎ ) ARABIC LIGATURE MEEM WITH ALEF FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER ALEF     # 
+
+FCCE ; 0645 062C ;     MA      # ( ‎ﳎ‎ → ‎مج‎ ) ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM   # 
+FC45 ; 0645 062C ;     MA      # ( ‎ﱅ‎ → ‎مج‎ ) ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM  # 
+FCD0 ; 0645 062C ;     MA      # ( ‎ﳐ‎ → ‎مج‎ ) ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM   # →‎مخ‎→→‎ﱇ‎→→‎ﱅ‎→
+FC47 ; 0645 062C ;     MA      # ( ‎ﱇ‎ → ‎مج‎ ) ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM  # →‎ﱅ‎→
+
+FD92 ; 0645 062C 062C ;        MA      # ( ‎ﶒ‎ → ‎مجج‎ ) ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER JEEM   # →‎مجخ‎→
+FD8E ; 0645 062C 062C ;        MA      # ( ‎ﶎ‎ → ‎مجج‎ ) ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER JEEM   # →‎مخج‎→
+
+FD8C ; 0645 062C 062D ;        MA      # ( ‎ﶌ‎ → ‎مجح‎ ) ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER HAH     # 
+
+FD8D ; 0645 062C 0645 ;        MA      # ( ‎ﶍ‎ → ‎مجم‎ ) ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER MEEM   # 
+FD8F ; 0645 062C 0645 ;        MA      # ( ‎ﶏ‎ → ‎مجم‎ ) ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER MEEM   # →‎مخم‎→
+
+FDC0 ; 0645 062C 0649 ;        MA      # ( ‎ﷀ‎ → ‎مجى‎ ) ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎مجي‎→
+FDB9 ; 0645 062C 0649 ;        MA      # ( ‎ﶹ‎ → ‎مجى‎ ) ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA      # →‎مخي‎→
+
+FCCF ; 0645 062D ;     MA      # ( ‎ﳏ‎ → ‎مح‎ ) ARABIC LIGATURE MEEM WITH HAH INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH     # 
+FC46 ; 0645 062D ;     MA      # ( ‎ﱆ‎ → ‎مح‎ ) ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH    # 
+
+FD89 ; 0645 062D 062C ;        MA      # ( ‎ﶉ‎ → ‎محج‎ ) ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH, ARABIC LETTER JEEM     # 
+
+FD8A ; 0645 062D 0645 ;        MA      # ( ‎ﶊ‎ → ‎محم‎ ) ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH, ARABIC LETTER MEEM     # 
+
+FDF4 ; 0645 062D 0645 062F ;   MA      # ( ‎ﷴ‎ → ‎محمد‎ ) ARABIC LIGATURE MOHAMMAD ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH, ARABIC LETTER MEEM, ARABIC LETTER DAL      # 
+
+FD8B ; 0645 062D 0649 ;        MA      # ( ‎ﶋ‎ → ‎محى‎ ) ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA        # →‎محي‎→
+
+FCD1 ; 0645 0645 ;     MA      # ( ‎ﳑ‎ → ‎مم‎ ) ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM → ARABIC LETTER MEEM, ARABIC LETTER MEEM   # 
+FC89 ; 0645 0645 ;     MA      # ( ‎ﲉ‎ → ‎مم‎ ) ARABIC LIGATURE MEEM WITH MEEM FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+FC48 ; 0645 0645 ;     MA      # ( ‎ﱈ‎ → ‎مم‎ ) ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER MEEM  # 
+
+FDB1 ; 0645 0645 0649 ;        MA      # ( ‎ﶱ‎ → ‎ممى‎ ) ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER MEEM, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA      # →‎ممي‎→
+
+FC49 ; 0645 0649 ;     MA      # ( ‎ﱉ‎ → ‎مى‎ ) ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA  # 
+FC4A ; 0645 0649 ;     MA      # ( ‎ﱊ‎ → ‎مى‎ ) ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM → ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA   # →‎مي‎→
+
+FB9F ; 06BA ;  MA      # ( ‎ﮟ‎ → ‎ں‎ ) ARABIC LETTER NOON GHUNNA FINAL FORM → ARABIC LETTER NOON GHUNNA # 
+FB9E ; 06BA ;  MA      # ( ‎ﮞ‎ → ‎ں‎ ) ARABIC LETTER NOON GHUNNA ISOLATED FORM → ARABIC LETTER NOON GHUNNA      # 
+
+FEEB ; 0647 ;  MA      # ( ‎ﻫ‎ → ‎ه‎ ) ARABIC LETTER HEH INITIAL FORM → ARABIC LETTER HEH       # 
+FEEC ; 0647 ;  MA      # ( ‎ﻬ‎ → ‎ه‎ ) ARABIC LETTER HEH MEDIAL FORM → ARABIC LETTER HEH        # 
+FEEA ; 0647 ;  MA      # ( ‎ﻪ‎ → ‎ه‎ ) ARABIC LETTER HEH FINAL FORM → ARABIC LETTER HEH # 
+FEE9 ; 0647 ;  MA      # ( ‎ﻩ‎ → ‎ه‎ ) ARABIC LETTER HEH ISOLATED FORM → ARABIC LETTER HEH      # 
+06BE ; 0647 ;  MA      # ( ‎ھ‎ → ‎ه‎ ) ARABIC LETTER HEH DOACHASHMEE → ARABIC LETTER HEH # 
+FBAC ; 0647 ;  MA      # ( ‎ﮬ‎ → ‎ه‎ ) ARABIC LETTER HEH DOACHASHMEE INITIAL FORM → ARABIC LETTER HEH   # →‎ﻫ‎→
+FBAD ; 0647 ;  MA      # ( ‎ﮭ‎ → ‎ه‎ ) ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM → ARABIC LETTER HEH    # →‎ﻬ‎→
+FBAB ; 0647 ;  MA      # ( ‎ﮫ‎ → ‎ه‎ ) ARABIC LETTER HEH DOACHASHMEE FINAL FORM → ARABIC LETTER HEH     # →‎ﻬ‎→
+FBAA ; 0647 ;  MA      # ( ‎ﮪ‎ → ‎ه‎ ) ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM → ARABIC LETTER HEH  # 
+06C1 ; 0647 ;  MA      # ( ‎ہ‎ → ‎ه‎ ) ARABIC LETTER HEH GOAL → ARABIC LETTER HEH        # →‎ﮦ‎→
+FBA8 ; 0647 ;  MA      # ( ‎ﮨ‎ → ‎ه‎ ) ARABIC LETTER HEH GOAL INITIAL FORM → ARABIC LETTER HEH  # →‎ہ‎→→‎ﮦ‎→
+FBA9 ; 0647 ;  MA      # ( ‎ﮩ‎ → ‎ه‎ ) ARABIC LETTER HEH GOAL MEDIAL FORM → ARABIC LETTER HEH   # →‎ہ‎→→‎ﮦ‎→
+FBA7 ; 0647 ;  MA      # ( ‎ﮧ‎ → ‎ه‎ ) ARABIC LETTER HEH GOAL FINAL FORM → ARABIC LETTER HEH    # →‎ہ‎→→‎ﮦ‎→
+FBA6 ; 0647 ;  MA      # ( ‎ﮦ‎ → ‎ه‎ ) ARABIC LETTER HEH GOAL ISOLATED FORM → ARABIC LETTER HEH # 
+06D5 ; 0647 ;  MA      # ( ‎ە‎ → ‎ه‎ ) ARABIC LETTER AE → ARABIC LETTER HEH      # 
+
+FCD9 ; 0647 0670 ;     MA      # ( ‎ﳙ‎ → ‎هٰ‎ ) ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM → ARABIC LETTER HEH, ARABIC LETTER SUPERSCRIPT ALEF     # 
+
+FCD7 ; 0647 062C ;     MA      # ( ‎ﳗ‎ → ‎هج‎ ) ARABIC LIGATURE HEH WITH JEEM INITIAL FORM → ARABIC LETTER HEH, ARABIC LETTER JEEM     # 
+FC51 ; 0647 062C ;     MA      # ( ‎ﱑ‎ → ‎هج‎ ) ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM → ARABIC LETTER HEH, ARABIC LETTER JEEM    # 
+
+FCD8 ; 0647 0645 ;     MA      # ( ‎ﳘ‎ → ‎هم‎ ) ARABIC LIGATURE HEH WITH MEEM INITIAL FORM → ARABIC LETTER HEH, ARABIC LETTER MEEM     # 
+FC52 ; 0647 0645 ;     MA      # ( ‎ﱒ‎ → ‎هم‎ ) ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM → ARABIC LETTER HEH, ARABIC LETTER MEEM    # 
+
+FD93 ; 0647 0645 062C ;        MA      # ( ‎ﶓ‎ → ‎همج‎ ) ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM → ARABIC LETTER HEH, ARABIC LETTER MEEM, ARABIC LETTER JEEM     # 
+
+FD94 ; 0647 0645 0645 ;        MA      # ( ‎ﶔ‎ → ‎همم‎ ) ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER HEH, ARABIC LETTER MEEM, ARABIC LETTER MEEM     # 
+
+FC53 ; 0647 0649 ;     MA      # ( ‎ﱓ‎ → ‎هى‎ ) ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER HEH, ARABIC LETTER ALEF MAKSURA    # 
+FC54 ; 0647 0649 ;     MA      # ( ‎ﱔ‎ → ‎هى‎ ) ARABIC LIGATURE HEH WITH YEH ISOLATED FORM → ARABIC LETTER HEH, ARABIC LETTER ALEF MAKSURA     # →‎هي‎→
+
+06C2 ; 06C0 ;  MA      # ( ‎ۂ‎ → ‎ۀ‎ ) ARABIC LETTER HEH GOAL WITH HAMZA ABOVE → ARABIC LETTER HEH WITH YEH ABOVE        # →‎ﮤ‎→
+FBA5 ; 06C0 ;  MA      # ( ‎ﮥ‎ → ‎ۀ‎ ) ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM → ARABIC LETTER HEH WITH YEH ABOVE   # 
+FBA4 ; 06C0 ;  MA      # ( ‎ﮤ‎ → ‎ۀ‎ ) ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM → ARABIC LETTER HEH WITH YEH ABOVE        # 
+
+FEEE ; 0648 ;  MA      # ( ‎ﻮ‎ → ‎و‎ ) ARABIC LETTER WAW FINAL FORM → ARABIC LETTER WAW # 
+FEED ; 0648 ;  MA      # ( ‎ﻭ‎ → ‎و‎ ) ARABIC LETTER WAW ISOLATED FORM → ARABIC LETTER WAW      # 
+
+0624 ; 0648 0674 ;     MA      # ( ‎ؤ‎ → ‎وٴ‎ ) ARABIC LETTER WAW WITH HAMZA ABOVE → ARABIC LETTER WAW, ARABIC LETTER HIGH HAMZA        # →‎ٶ‎→
+FE86 ; 0648 0674 ;     MA      # ( ‎ﺆ‎ → ‎وٴ‎ ) ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM → ARABIC LETTER WAW, ARABIC LETTER HIGH HAMZA    # →‎ٶ‎→
+FE85 ; 0648 0674 ;     MA      # ( ‎ﺅ‎ → ‎وٴ‎ ) ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER WAW, ARABIC LETTER HIGH HAMZA # →‎ٶ‎→
+0676 ; 0648 0674 ;     MA      # ( ‎ٶ‎ → ‎وٴ‎ ) ARABIC LETTER HIGH HAMZA WAW → ARABIC LETTER WAW, ARABIC LETTER HIGH HAMZA      # 
+
+FDF8 ; 0648 0633 0644 0645 ;   MA      # ( ‎ﷸ‎ → ‎وسلم‎ ) ARABIC LIGATURE WASALLAM ISOLATED FORM → ARABIC LETTER WAW, ARABIC LETTER SEEN, ARABIC LETTER LAM, ARABIC LETTER MEEM      # 
+
+FBE1 ; 06C5 ;  MA      # ( ‎ﯡ‎ → ‎ۅ‎ ) ARABIC LETTER KIRGHIZ OE FINAL FORM → ARABIC LETTER KIRGHIZ OE   # 
+FBE0 ; 06C5 ;  MA      # ( ‎ﯠ‎ → ‎ۅ‎ ) ARABIC LETTER KIRGHIZ OE ISOLATED FORM → ARABIC LETTER KIRGHIZ OE        # 
+
+FBDA ; 06C6 ;  MA      # ( ‎ﯚ‎ → ‎ۆ‎ ) ARABIC LETTER OE FINAL FORM → ARABIC LETTER OE   # 
+FBD9 ; 06C6 ;  MA      # ( ‎ﯙ‎ → ‎ۆ‎ ) ARABIC LETTER OE ISOLATED FORM → ARABIC LETTER OE        # 
+
+FBD8 ; 06C7 ;  MA      # ( ‎ﯘ‎ → ‎ۇ‎ ) ARABIC LETTER U FINAL FORM → ARABIC LETTER U     # 
+FBD7 ; 06C7 ;  MA      # ( ‎ﯗ‎ → ‎ۇ‎ ) ARABIC LETTER U ISOLATED FORM → ARABIC LETTER U  # 
+
+0677 ; 06C7 0674 ;     MA      # ( ‎ٷ‎ → ‎ۇٴ‎ ) ARABIC LETTER U WITH HAMZA ABOVE → ARABIC LETTER U, ARABIC LETTER HIGH HAMZA    # 
+FBDD ; 06C7 0674 ;     MA      # ( ‎ﯝ‎ → ‎ۇٴ‎ ) ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER U, ARABIC LETTER HIGH HAMZA     # 
+
+FBDC ; 06C8 ;  MA      # ( ‎ﯜ‎ → ‎ۈ‎ ) ARABIC LETTER YU FINAL FORM → ARABIC LETTER YU   # 
+FBDB ; 06C8 ;  MA      # ( ‎ﯛ‎ → ‎ۈ‎ ) ARABIC LETTER YU ISOLATED FORM → ARABIC LETTER YU        # 
+
+FBE3 ; 06C9 ;  MA      # ( ‎ﯣ‎ → ‎ۉ‎ ) ARABIC LETTER KIRGHIZ YU FINAL FORM → ARABIC LETTER KIRGHIZ YU   # 
+FBE2 ; 06C9 ;  MA      # ( ‎ﯢ‎ → ‎ۉ‎ ) ARABIC LETTER KIRGHIZ YU ISOLATED FORM → ARABIC LETTER KIRGHIZ YU        # 
+
+FBDF ; 06CB ;  MA      # ( ‎ﯟ‎ → ‎ۋ‎ ) ARABIC LETTER VE FINAL FORM → ARABIC LETTER VE   # 
+FBDE ; 06CB ;  MA      # ( ‎ﯞ‎ → ‎ۋ‎ ) ARABIC LETTER VE ISOLATED FORM → ARABIC LETTER VE        # 
+
+FBE8 ; 0649 ;  MA      # ( ‎ﯨ‎ → ‎ى‎ ) ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM → ARABIC LETTER ALEF MAKSURA       # 
+FBE9 ; 0649 ;  MA      # ( ‎ﯩ‎ → ‎ى‎ ) ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM → ARABIC LETTER ALEF MAKSURA        # 
+FEF0 ; 0649 ;  MA      # ( ‎ﻰ‎ → ‎ى‎ ) ARABIC LETTER ALEF MAKSURA FINAL FORM → ARABIC LETTER ALEF MAKSURA       # 
+FEEF ; 0649 ;  MA      # ( ‎ﻯ‎ → ‎ى‎ ) ARABIC LETTER ALEF MAKSURA ISOLATED FORM → ARABIC LETTER ALEF MAKSURA    # 
+064A ; 0649 ;  MA      # ( ‎ي‎ → ‎ى‎ ) ARABIC LETTER YEH → ARABIC LETTER ALEF MAKSURA    # →‎ﻴ‎→→‎ﯿ‎→→‎ی‎→
+FEF3 ; 0649 ;  MA      # ( ‎ﻳ‎ → ‎ى‎ ) ARABIC LETTER YEH INITIAL FORM → ARABIC LETTER ALEF MAKSURA      # →‎ﯿ‎→→‎ی‎→
+FEF4 ; 0649 ;  MA      # ( ‎ﻴ‎ → ‎ى‎ ) ARABIC LETTER YEH MEDIAL FORM → ARABIC LETTER ALEF MAKSURA       # →‎ﯿ‎→→‎ی‎→
+FEF2 ; 0649 ;  MA      # ( ‎ﻲ‎ → ‎ى‎ ) ARABIC LETTER YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA        # →‎ي‎→→‎ﻴ‎→→‎ﯿ‎→→‎ی‎→
+FEF1 ; 0649 ;  MA      # ( ‎ﻱ‎ → ‎ى‎ ) ARABIC LETTER YEH ISOLATED FORM → ARABIC LETTER ALEF MAKSURA     # →‎ي‎→→‎ﻴ‎→→‎ﯿ‎→→‎ی‎→
+06CC ; 0649 ;  MA      # ( ‎ی‎ → ‎ى‎ ) ARABIC LETTER FARSI YEH → ARABIC LETTER ALEF MAKSURA      # 
+FBFE ; 0649 ;  MA      # ( ‎ﯾ‎ → ‎ى‎ ) ARABIC LETTER FARSI YEH INITIAL FORM → ARABIC LETTER ALEF MAKSURA        # →‎ی‎→
+FBFF ; 0649 ;  MA      # ( ‎ﯿ‎ → ‎ى‎ ) ARABIC LETTER FARSI YEH MEDIAL FORM → ARABIC LETTER ALEF MAKSURA # →‎ی‎→
+FBFD ; 0649 ;  MA      # ( ‎ﯽ‎ → ‎ى‎ ) ARABIC LETTER FARSI YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA  # →‎ی‎→
+FBFC ; 0649 ;  MA      # ( ‎ﯼ‎ → ‎ى‎ ) ARABIC LETTER FARSI YEH ISOLATED FORM → ARABIC LETTER ALEF MAKSURA       # 
+
+FC90 ; 0649 0670 ;     MA      # ( ‎ﲐ‎ → ‎ىٰ‎ ) ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER SUPERSCRIPT ALEF     # 
+FC5D ; 0649 0670 ;     MA      # ( ‎ﱝ‎ → ‎ىٰ‎ ) ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER SUPERSCRIPT ALEF  # 
+
+0626 ; 0649 0674 ;     MA      # ( ‎ئ‎ → ‎ىٴ‎ ) ARABIC LETTER YEH WITH HAMZA ABOVE → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA       # →‎ٸ‎→→‎يٴ‎→
+FE8B ; 0649 0674 ;     MA      # ( ‎ﺋ‎ → ‎ىٴ‎ ) ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA # →‎ئ‎→→‎ٸ‎→→‎يٴ‎→
+FE8C ; 0649 0674 ;     MA      # ( ‎ﺌ‎ → ‎ىٴ‎ ) ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA  # →‎ئ‎→→‎ٸ‎→→‎يٴ‎→
+FE8A ; 0649 0674 ;     MA      # ( ‎ﺊ‎ → ‎ىٴ‎ ) ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA   # →‎ئ‎→→‎ٸ‎→→‎يٴ‎→
+FE89 ; 0649 0674 ;     MA      # ( ‎ﺉ‎ → ‎ىٴ‎ ) ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA        # →‎ٸ‎→→‎يٴ‎→
+0678 ; 0649 0674 ;     MA      # ( ‎ٸ‎ → ‎ىٴ‎ ) ARABIC LETTER HIGH HAMZA YEH → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA     # →‎يٴ‎→
+
+FBEB ; 0649 0674 0627 ;        MA      # ( ‎ﯫ‎ → ‎ىٴا‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF # →‎ئا‎→
+FBEA ; 0649 0674 0627 ;        MA      # ( ‎ﯪ‎ → ‎ىٴا‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF      # →‎ئا‎→
+
+FC67 ; 0649 0674 0628 ;        MA      # ( ‎ﱧ‎ → ‎ىٴب‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER BEH  # →‎ئن‎→
+
+FBF8 ; 0649 0674 067A ;        MA      # ( ‎ﯸ‎ → ‎ىٴٺ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER TTEHEH        # →‎ئې‎→
+FBF7 ; 0649 0674 067A ;        MA      # ( ‎ﯷ‎ → ‎ىٴٺ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER TTEHEH  # →‎ئې‎→
+FBF6 ; 0649 0674 067A ;        MA      # ( ‎ﯶ‎ → ‎ىٴٺ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER TTEHEH       # →‎ئې‎→
+
+FC97 ; 0649 0674 062C ;        MA      # ( ‎ﲗ‎ → ‎ىٴج‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER JEEM       # →‎ئج‎→
+FC00 ; 0649 0674 062C ;        MA      # ( ‎ﰀ‎ → ‎ىٴج‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER JEEM      # →‎ئج‎→
+FC99 ; 0649 0674 062C ;        MA      # ( ‎ﲙ‎ → ‎ىٴج‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER JEEM       # →‎ئخ‎→→‎يٴج‎→→‎ئج‎→
+
+FC98 ; 0649 0674 062D ;        MA      # ( ‎ﲘ‎ → ‎ىٴح‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HAH # →‎ئح‎→
+FC01 ; 0649 0674 062D ;        MA      # ( ‎ﰁ‎ → ‎ىٴح‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HAH        # →‎ئح‎→
+
+FC64 ; 0649 0674 0631 ;        MA      # ( ‎ﱤ‎ → ‎ىٴر‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER REH   # →‎ئر‎→
+
+FC65 ; 0649 0674 0632 ;        MA      # ( ‎ﱥ‎ → ‎ىٴز‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ZAIN # →‎ئز‎→
+
+FC9A ; 0649 0674 0645 ;        MA      # ( ‎ﲚ‎ → ‎ىٴم‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER MEEM       # →‎ئم‎→
+FCDF ; 0649 0674 0645 ;        MA      # ( ‎ﳟ‎ → ‎ىٴم‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER MEEM        # →‎ئم‎→
+FC66 ; 0649 0674 0645 ;        MA      # ( ‎ﱦ‎ → ‎ىٴم‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER MEEM # →‎ئم‎→
+FC02 ; 0649 0674 0645 ;        MA      # ( ‎ﰂ‎ → ‎ىٴم‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER MEEM      # →‎ئم‎→
+
+FC9B ; 0649 0674 0647 ;        MA      # ( ‎ﲛ‎ → ‎ىٴه‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HEH # →‎ئه‎→
+FCE0 ; 0649 0674 0647 ;        MA      # ( ‎ﳠ‎ → ‎ىٴه‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HEH  # →‎ئه‎→
+FBED ; 0649 0674 0647 ;        MA      # ( ‎ﯭ‎ → ‎ىٴه‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HEH    # →‎ئە‎→→‎يٴه‎→→‎ئه‎→
+FBEC ; 0649 0674 0647 ;        MA      # ( ‎ﯬ‎ → ‎ىٴه‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER HEH # →‎ئە‎→→‎يٴه‎→→‎ئه‎→
+
+FBEF ; 0649 0674 0648 ;        MA      # ( ‎ﯯ‎ → ‎ىٴو‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER WAW   # →‎ئو‎→
+FBEE ; 0649 0674 0648 ;        MA      # ( ‎ﯮ‎ → ‎ىٴو‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER WAW        # →‎ئو‎→
+
+FBF3 ; 0649 0674 06C6 ;        MA      # ( ‎ﯳ‎ → ‎ىٴۆ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER OE     # →‎ئۆ‎→
+FBF2 ; 0649 0674 06C6 ;        MA      # ( ‎ﯲ‎ → ‎ىٴۆ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER OE  # →‎ئۆ‎→
+
+FBF1 ; 0649 0674 06C7 ;        MA      # ( ‎ﯱ‎ → ‎ىٴۇ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER U       # →‎ئۇ‎→
+FBF0 ; 0649 0674 06C7 ;        MA      # ( ‎ﯰ‎ → ‎ىٴۇ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER U    # →‎ئۇ‎→
+
+FBF5 ; 0649 0674 06C8 ;        MA      # ( ‎ﯵ‎ → ‎ىٴۈ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER YU     # →‎ئۈ‎→
+FBF4 ; 0649 0674 06C8 ;        MA      # ( ‎ﯴ‎ → ‎ىٴۈ‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER YU  # →‎ئۈ‎→
+
+FBFB ; 0649 0674 0649 ;        MA      # ( ‎ﯻ‎ → ‎ىٴى‎ ) ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA        # →‎ئى‎→
+FBFA ; 0649 0674 0649 ;        MA      # ( ‎ﯺ‎ → ‎ىٴى‎ ) ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA  # →‎ئى‎→
+FC68 ; 0649 0674 0649 ;        MA      # ( ‎ﱨ‎ → ‎ىٴى‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA # →‎ئى‎→
+FBF9 ; 0649 0674 0649 ;        MA      # ( ‎ﯹ‎ → ‎ىٴى‎ ) ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA       # →‎ئى‎→
+FC03 ; 0649 0674 0649 ;        MA      # ( ‎ﰃ‎ → ‎ىٴى‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA      # →‎ئى‎→
+FC69 ; 0649 0674 0649 ;        MA      # ( ‎ﱩ‎ → ‎ىٴى‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA  # →‎ئي‎→→‎يٴى‎→→‎ئى‎→
+FC04 ; 0649 0674 0649 ;        MA      # ( ‎ﰄ‎ → ‎ىٴى‎ ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HIGH HAMZA, ARABIC LETTER ALEF MAKSURA       # →‎ئي‎→→‎يٴى‎→→‎ئى‎→
+
+FC94 ; 0649 0628 ;     MA      # ( ‎ﲔ‎ → ‎ىب‎ ) ARABIC LIGATURE YEH WITH NOON FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER BEH       # →‎ين‎→
+
+FDAF ; 0649 062C 0649 ;        MA      # ( ‎ﶯ‎ → ‎ىجى‎ ) ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER JEEM, ARABIC LETTER ALEF MAKSURA       # →‎يجي‎→
+
+FDAE ; 0649 062D 0649 ;        MA      # ( ‎ﶮ‎ → ‎ىحى‎ ) ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HAH, ARABIC LETTER ALEF MAKSURA # →‎يحي‎→
+
+FC91 ; 0649 0631 ;     MA      # ( ‎ﲑ‎ → ‎ىر‎ ) ARABIC LIGATURE YEH WITH REH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER REH        # →‎ير‎→
+
+FC92 ; 0649 0632 ;     MA      # ( ‎ﲒ‎ → ‎ىز‎ ) ARABIC LIGATURE YEH WITH ZAIN FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ZAIN      # →‎يز‎→
+
+FCDD ; 0649 0645 ;     MA      # ( ‎ﳝ‎ → ‎ىم‎ ) ARABIC LIGATURE YEH WITH MEEM INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM    # →‎يم‎→
+FCF0 ; 0649 0645 ;     MA      # ( ‎ﳰ‎ → ‎ىم‎ ) ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM     # →‎يم‎→
+FC93 ; 0649 0645 ;     MA      # ( ‎ﲓ‎ → ‎ىم‎ ) ARABIC LIGATURE YEH WITH MEEM FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM      # →‎يم‎→
+FC58 ; 0649 0645 ;     MA      # ( ‎ﱘ‎ → ‎ىم‎ ) ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM   # →‎يم‎→
+
+FD9D ; 0649 0645 0645 ;        MA      # ( ‎ﶝ‎ → ‎ىمم‎ ) ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM, ARABIC LETTER MEEM    # →‎يمم‎→
+FD9C ; 0649 0645 0645 ;        MA      # ( ‎ﶜ‎ → ‎ىمم‎ ) ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM, ARABIC LETTER MEEM      # →‎يمم‎→
+
+FDB0 ; 0649 0645 0649 ;        MA      # ( ‎ﶰ‎ → ‎ىمى‎ ) ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER MEEM, ARABIC LETTER ALEF MAKSURA       # →‎يمي‎→
+
+FCDE ; 0649 0647 ;     MA      # ( ‎ﳞ‎ → ‎ىه‎ ) ARABIC LIGATURE YEH WITH HEH INITIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HEH      # →‎يه‎→
+FCF1 ; 0649 0647 ;     MA      # ( ‎ﳱ‎ → ‎ىه‎ ) ARABIC LIGATURE YEH WITH HEH MEDIAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER HEH       # →‎يه‎→
+
+FC95 ; 0649 0649 ;     MA      # ( ‎ﲕ‎ → ‎ىى‎ ) ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ALEF MAKSURA      # →‎يى‎→
+FC59 ; 0649 0649 ;     MA      # ( ‎ﱙ‎ → ‎ىى‎ ) ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ALEF MAKSURA   # →‎يى‎→
+FC96 ; 0649 0649 ;     MA      # ( ‎ﲖ‎ → ‎ىى‎ ) ARABIC LIGATURE YEH WITH YEH FINAL FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ALEF MAKSURA       # →‎يي‎→
+FC5A ; 0649 0649 ;     MA      # ( ‎ﱚ‎ → ‎ىى‎ ) ARABIC LIGATURE YEH WITH YEH ISOLATED FORM → ARABIC LETTER ALEF MAKSURA, ARABIC LETTER ALEF MAKSURA    # →‎يي‎→
+
+FBAF ; 06D2 ;  MA      # ( ‎ﮯ‎ → ‎ے‎ ) ARABIC LETTER YEH BARREE FINAL FORM → ARABIC LETTER YEH BARREE   # 
+FBAE ; 06D2 ;  MA      # ( ‎ﮮ‎ → ‎ے‎ ) ARABIC LETTER YEH BARREE ISOLATED FORM → ARABIC LETTER YEH BARREE        # 
+
+FBB1 ; 06D3 ;  MA      # ( ‎ﮱ‎ → ‎ۓ‎ ) ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM → ARABIC LETTER YEH BARREE WITH HAMZA ABOVE # 
+FBB0 ; 06D3 ;  MA      # ( ‎ﮰ‎ → ‎ۓ‎ ) ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM → ARABIC LETTER YEH BARREE WITH HAMZA ABOVE      # 
+
+079A ; 0799 ;  MA      # ( ‎ޚ‎ → ‎ޙ‎ ) THAANA LETTER KHAA → THAANA LETTER HHAA   # 
+
+07A3 ; 07A2 ;  MA      # ( ‎ޣ‎ → ‎ޢ‎ ) THAANA LETTER GHAINU → THAANA LETTER AINU # 
+
+07A1 ; 07A0 ;  MA      # ( ‎ޡ‎ → ‎ޠ‎ ) THAANA LETTER ZO → THAANA LETTER TO       # 
+
+079F ; 079E ;  MA      # ( ‎ޟ‎ → ‎ޞ‎ ) THAANA LETTER DAADHU → THAANA LETTER SAADHU       # 
+
+0418 ; 2D4D ;  MA      # ( И → ⵍ ) CYRILLIC CAPITAL LETTER I → TIFINAGH LETTER YAL      # 
+
+0906 ; 0905 093E ;     MA      # ( आ → अा ) DEVANAGARI LETTER AA → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN AA     # 
+
+0912 ; 0905 093E 0946 ;        MA      # ( ऒ → अाॆ ) DEVANAGARI LETTER SHORT O → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN AA, DEVANAGARI VOWEL SIGN SHORT E      # →अॊ→→आॆ→
+
+0913 ; 0905 093E 0947 ;        MA      # ( ओ → अाे ) DEVANAGARI LETTER O → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN AA, DEVANAGARI VOWEL SIGN E  # →अो→→आे→
+
+0914 ; 0905 093E 0948 ;        MA      # ( औ → अाै ) DEVANAGARI LETTER AU → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN AA, DEVANAGARI VOWEL SIGN AI        # →अौ→→आै→
+
+0904 ; 0905 0946 ;     MA      # ( ऄ → अॆ ) DEVANAGARI LETTER SHORT A → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN SHORT E   # 
+
+0911 ; 0905 0949 ;     MA      # ( ऑ → अॉ ) DEVANAGARI LETTER CANDRA O → DEVANAGARI LETTER A, DEVANAGARI VOWEL SIGN CANDRA O # 
+
+090D ; 090F 0945 ;     MA      # ( ऍ → एॅ ) DEVANAGARI LETTER CANDRA E → DEVANAGARI LETTER E, DEVANAGARI VOWEL SIGN CANDRA E # 
+
+090E ; 090F 0946 ;     MA      # ( ऎ → एॆ ) DEVANAGARI LETTER SHORT E → DEVANAGARI LETTER E, DEVANAGARI VOWEL SIGN SHORT E   # 
+
+0910 ; 090F 0947 ;     MA      # ( ऐ → एे ) DEVANAGARI LETTER AI → DEVANAGARI LETTER E, DEVANAGARI VOWEL SIGN E      # 
+
+0908 ; 0930 094D 0907 ;        MA      # ( ई → र्इ ) DEVANAGARI LETTER II → DEVANAGARI LETTER RA, DEVANAGARI SIGN VIRAMA, DEVANAGARI LETTER I      # 
+
+0ABD ; 093D ;  MA      # ( ઽ → ऽ ) GUJARATI SIGN AVAGRAHA → DEVANAGARI SIGN AVAGRAHA   # 
+
+0AC1 ; 0941 ;  MA      # ( ુ → ु ) GUJARATI VOWEL SIGN U → DEVANAGARI VOWEL SIGN U     # 
+
+0AC2 ; 0942 ;  MA      # ( ૂ → ू ) GUJARATI VOWEL SIGN UU → DEVANAGARI VOWEL SIGN UU   # 
+
+0A4B ; 0946 ;  MA      # ( ੋ → ॆ ) GURMUKHI VOWEL SIGN OO → DEVANAGARI VOWEL SIGN SHORT E      # 
+
+0A4D ; 094D ;  MA      # ( ੍ → ् ) GURMUKHI SIGN VIRAMA → DEVANAGARI SIGN VIRAMA       # 
+0ACD ; 094D ;  MA      # ( ્ → ् ) GUJARATI SIGN VIRAMA → DEVANAGARI SIGN VIRAMA       # 
+
+0986 ; 0985 09BE ;     MA      # ( আ → অা ) BENGALI LETTER AA → BENGALI LETTER A, BENGALI VOWEL SIGN AA      # 
+
+09E0 ; 098B 09C3 ;     MA      # ( ৠ → ঋৃ ) BENGALI LETTER VOCALIC RR → BENGALI LETTER VOCALIC R, BENGALI VOWEL SIGN VOCALIC R       # 
+09E1 ; 098B 09C3 ;     MA      # ( ৡ → ঋৃ ) BENGALI LETTER VOCALIC LL → BENGALI LETTER VOCALIC R, BENGALI VOWEL SIGN VOCALIC R       # →ঌৢ→→ৠ→
+
+0A09 ; 0A73 0A41 ;     MA      # ( ਉ → ੳੁ ) GURMUKHI LETTER U → GURMUKHI URA, GURMUKHI VOWEL SIGN U  # 
+
+0A0A ; 0A73 0A42 ;     MA      # ( ਊ → ੳੂ ) GURMUKHI LETTER UU → GURMUKHI URA, GURMUKHI VOWEL SIGN UU        # 
+
+0A06 ; 0A05 0A3E ;     MA      # ( ਆ → ਅਾ ) GURMUKHI LETTER AA → GURMUKHI LETTER A, GURMUKHI VOWEL SIGN AA   # 
+
+0A10 ; 0A05 0A48 ;     MA      # ( ਐ → ਅੈ ) GURMUKHI LETTER AI → GURMUKHI LETTER A, GURMUKHI VOWEL SIGN AI   # 
+
+0A14 ; 0A05 0A4C ;     MA      # ( ਔ → ਅੌ ) GURMUKHI LETTER AU → GURMUKHI LETTER A, GURMUKHI VOWEL SIGN AU   # 
+
+0A07 ; 0A72 0A3F ;     MA      # ( ਇ → ੲਿ ) GURMUKHI LETTER I → GURMUKHI IRI, GURMUKHI VOWEL SIGN I  # 
+
+0A08 ; 0A72 0A40 ;     MA      # ( ਈ → ੲੀ ) GURMUKHI LETTER II → GURMUKHI IRI, GURMUKHI VOWEL SIGN II        # 
+
+0A0F ; 0A72 0A47 ;     MA      # ( ਏ → ੲੇ ) GURMUKHI LETTER EE → GURMUKHI IRI, GURMUKHI VOWEL SIGN EE        # 
+
+0A86 ; 0A85 0ABE ;     MA      # ( આ → અા ) GUJARATI LETTER AA → GUJARATI LETTER A, GUJARATI VOWEL SIGN AA   # 
+
+0A91 ; 0A85 0ABE 0AC5 ;        MA      # ( ઑ → અાૅ ) GUJARATI VOWEL CANDRA O → GUJARATI LETTER A, GUJARATI VOWEL SIGN AA, GUJARATI VOWEL SIGN CANDRA E     # →અૉ→→આૅ→
+
+0A93 ; 0A85 0ABE 0AC7 ;        MA      # ( ઓ → અાે ) GUJARATI LETTER O → GUJARATI LETTER A, GUJARATI VOWEL SIGN AA, GUJARATI VOWEL SIGN E  # →અો→→આે→
+
+0A94 ; 0A85 0ABE 0AC8 ;        MA      # ( ઔ → અાૈ ) GUJARATI LETTER AU → GUJARATI LETTER A, GUJARATI VOWEL SIGN AA, GUJARATI VOWEL SIGN AI        # →અૌ→→આૈ→
+
+0A8D ; 0A85 0AC5 ;     MA      # ( ઍ → અૅ ) GUJARATI VOWEL CANDRA E → GUJARATI LETTER A, GUJARATI VOWEL SIGN CANDRA E        # 
+
+0A8F ; 0A85 0AC7 ;     MA      # ( એ → અે ) GUJARATI LETTER E → GUJARATI LETTER A, GUJARATI VOWEL SIGN E     # 
+
+0A90 ; 0A85 0AC8 ;     MA      # ( ઐ → અૈ ) GUJARATI LETTER AI → GUJARATI LETTER A, GUJARATI VOWEL SIGN AI   # 
+
+0B06 ; 0B05 0B3E ;     MA      # ( ଆ → ଅା ) ORIYA LETTER AA → ORIYA LETTER A, ORIYA VOWEL SIGN AA    # 
+
+0BEE ; 0B85 ;  MA      # ( ௮ → அ ) TAMIL DIGIT EIGHT → TAMIL LETTER A  # 
+
+0BB0 ; 0B88 ;  MA      # ( ர → ஈ ) TAMIL LETTER RA → TAMIL LETTER II   # →ா→
+0BBE ; 0B88 ;  MA      # ( ா → ஈ ) TAMIL VOWEL SIGN AA → TAMIL LETTER II       # 
+
+0BEB ; 0B88 0BC1 ;     MA      # ( ௫ → ஈு ) TAMIL DIGIT FIVE → TAMIL LETTER II, TAMIL VOWEL SIGN U   # →ரு→
+
+0BE8 ; 0B89 ;  MA      # ( ௨ → உ ) TAMIL DIGIT TWO → TAMIL LETTER U    # 
+0D09 ; 0B89 ;  MA      # ( ഉ → உ ) MALAYALAM LETTER U → TAMIL LETTER U # 
+
+0B8A ; 0B89 0BB3 ;     MA      # ( ஊ → உள ) TAMIL LETTER UU → TAMIL LETTER U, TAMIL LETTER LLA       # 
+
+0D0A ; 0B89 0D57 ;     MA      # ( ഊ → உൗ ) MALAYALAM LETTER UU → TAMIL LETTER U, MALAYALAM AU LENGTH MARK   # →ഉൗ→
+
+0BED ; 0B8E ;  MA      # ( ௭ → எ ) TAMIL DIGIT SEVEN → TAMIL LETTER E  # 
+
+0BF7 ; 0B8E 0BB5 ;     MA      #* ( ௷ → எவ ) TAMIL CREDIT SIGN → TAMIL LETTER E, TAMIL LETTER VA     # 
+
+0B9C ; 0B90 ;  MA      # ( ஜ → ஐ ) TAMIL LETTER JA → TAMIL LETTER AI   # 
+0D1C ; 0B90 ;  MA      # ( ജ → ஐ ) MALAYALAM LETTER JA → TAMIL LETTER AI       # →ஜ→
+
+0BE7 ; 0B95 ;  MA      # ( ௧ → க ) TAMIL DIGIT ONE → TAMIL LETTER KA   # 
+
+0BEA ; 0B9A ;  MA      # ( ௪ → ச ) TAMIL DIGIT FOUR → TAMIL LETTER CA  # 
+
+0BEC ; 0B9A 0BC1 ;     MA      # ( ௬ → சு ) TAMIL DIGIT SIX → TAMIL LETTER CA, TAMIL VOWEL SIGN U    # 
+
+0BF2 ; 0B9A 0BC2 ;     MA      #* ( ௲ → சூ ) TAMIL NUMBER ONE THOUSAND → TAMIL LETTER CA, TAMIL VOWEL SIGN UU        # 
+
+0D23 ; 0BA3 ;  MA      # ( ണ → ண ) MALAYALAM LETTER NNA → TAMIL LETTER NNA     # 
+
+0BFA ; 0BA8 0BC0 ;     MA      #* ( ௺ → நீ ) TAMIL NUMBER SIGN → TAMIL LETTER NA, TAMIL VOWEL SIGN II        # 
+
+0BF4 ; 0BAE 0BC0 ;     MA      #* ( ௴ → மீ ) TAMIL MONTH SIGN → TAMIL LETTER MA, TAMIL VOWEL SIGN II # 
+
+0BF0 ; 0BAF ;  MA      #* ( ௰ → ய ) TAMIL NUMBER TEN → TAMIL LETTER YA # 
+
+0D34 ; 0BB4 ;  MA      # ( ഴ → ழ ) MALAYALAM LETTER LLLA → TAMIL LETTER LLLA   # 
+
+0BD7 ; 0BB3 ;  MA      # ( ௗ → ள ) TAMIL AU LENGTH MARK → TAMIL LETTER LLA     # 
+
+0BC8 ; 0BA9 ;  MA      # ( ை → ன ) TAMIL VOWEL SIGN AI → TAMIL LETTER NNNA     # 
+
+0D36 ; 0BB6 ;  MA      # ( ശ → ஶ ) MALAYALAM LETTER SHA → TAMIL LETTER SHA     # 
+
+0BF8 ; 0BB7 ;  MA      #* ( ௸ → ஷ ) TAMIL AS ABOVE SIGN → TAMIL LETTER SSA     # 
+
+0D3F ; 0BBF ;  MA      # ( ി → ி ) MALAYALAM VOWEL SIGN I → TAMIL VOWEL SIGN I # 
+0D40 ; 0BBF ;  MA      # ( ീ → ி ) MALAYALAM VOWEL SIGN II → TAMIL VOWEL SIGN I        # 
+
+0BCA ; 0BC6 0B88 ;     MA      # ( ொ → ெஈ ) TAMIL VOWEL SIGN O → TAMIL VOWEL SIGN E, TAMIL LETTER II # →ெர→
+
+0BCC ; 0BC6 0BB3 ;     MA      # ( ௌ → ெள ) TAMIL VOWEL SIGN AU → TAMIL VOWEL SIGN E, TAMIL LETTER LLA       # 
+
+0BCB ; 0BC7 0B88 ;     MA      # ( ோ → ேஈ ) TAMIL VOWEL SIGN OO → TAMIL VOWEL SIGN EE, TAMIL LETTER II       # →ேர→
+
+0C85 ; 0C05 ;  MA      # ( ಅ → అ ) KANNADA LETTER A → TELUGU LETTER A  # 
+
+0C86 ; 0C06 ;  MA      # ( ಆ → ఆ ) KANNADA LETTER AA → TELUGU LETTER AA        # 
+
+0C87 ; 0C07 ;  MA      # ( ಇ → ఇ ) KANNADA LETTER I → TELUGU LETTER I  # 
+
+0C60 ; 0C0B 0C3E ;     MA      # ( ౠ → ఋా ) TELUGU LETTER VOCALIC RR → TELUGU LETTER VOCALIC R, TELUGU VOWEL SIGN AA # 
+
+0C61 ; 0C0C 0C3E ;     MA      # ( ౡ → ఌా ) TELUGU LETTER VOCALIC LL → TELUGU LETTER VOCALIC L, TELUGU VOWEL SIGN AA # 
+
+0C92 ; 0C12 ;  MA      # ( ಒ → ఒ ) KANNADA LETTER O → TELUGU LETTER O  # 
+
+0C14 ; 0C12 0C4C ;     MA      # ( ఔ → ఒౌ ) TELUGU LETTER AU → TELUGU LETTER O, TELUGU VOWEL SIGN AU # 
+0C94 ; 0C12 0C4C ;     MA      # ( ಔ → ఒౌ ) KANNADA LETTER AU → TELUGU LETTER O, TELUGU VOWEL SIGN AU        # →ఔ→
+
+0C13 ; 0C12 0C55 ;     MA      # ( ఓ → ఒౕ ) TELUGU LETTER OO → TELUGU LETTER O, TELUGU LENGTH MARK   # 
+0C93 ; 0C12 0C55 ;     MA      # ( ಓ → ఒౕ ) KANNADA LETTER OO → TELUGU LETTER O, TELUGU LENGTH MARK  # →ఓ→
+
+0C9C ; 0C1C ;  MA      # ( ಜ → జ ) KANNADA LETTER JA → TELUGU LETTER JA        # 
+
+0C9E ; 0C1E ;  MA      # ( ಞ → ఞ ) KANNADA LETTER NYA → TELUGU LETTER NYA      # 
+
+0C22 ; 0C21 0323 ;     MA      # ( ఢ → డ̣ ) TELUGU LETTER DDHA → TELUGU LETTER DDA, COMBINING DOT BELOW       # 
+
+0CA3 ; 0C23 ;  MA      # ( ಣ → ణ ) KANNADA LETTER NNA → TELUGU LETTER NNA      # 
+
+0C25 ; 0C27 05BC ;     MA      # ( థ → ధּ ) TELUGU LETTER THA → TELUGU LETTER DHA, HEBREW POINT DAGESH OR MAPIQ       # 
+
+0C2D ; 0C2C 0323 ;     MA      # ( భ → బ̣ ) TELUGU LETTER BHA → TELUGU LETTER BA, COMBINING DOT BELOW # 
+
+0CAF ; 0C2F ;  MA      # ( ಯ → య ) KANNADA LETTER YA → TELUGU LETTER YA        # 
+
+0C20 ; 0C30 05BC ;     MA      # ( ఠ → రּ ) TELUGU LETTER TTHA → TELUGU LETTER RA, HEBREW POINT DAGESH OR MAPIQ       # 
+
+0CB1 ; 0C31 ;  MA      # ( ಱ → ఱ ) KANNADA LETTER RRA → TELUGU LETTER RRA      # 
+
+0CB2 ; 0C32 ;  MA      # ( ಲ → ల ) KANNADA LETTER LA → TELUGU LETTER LA        # 
+
+0C37 ; 0C35 0323 ;     MA      # ( ష → వ̣ ) TELUGU LETTER SSA → TELUGU LETTER VA, COMBINING DOT BELOW # 
+
+0C39 ; 0C35 0C3E ;     MA      # ( హ → వా ) TELUGU LETTER HA → TELUGU LETTER VA, TELUGU VOWEL SIGN AA        # 
+
+0C2E ; 0C35 0C41 ;     MA      # ( మ → వు ) TELUGU LETTER MA → TELUGU LETTER VA, TELUGU VOWEL SIGN U # 
+
+0C42 ; 0C41 0C3E ;     MA      # ( ూ → ుా ) TELUGU VOWEL SIGN UU → TELUGU VOWEL SIGN U, TELUGU VOWEL SIGN AA # 
+
+0C44 ; 0C43 0C3E ;     MA      # ( ౄ → ృా ) TELUGU VOWEL SIGN VOCALIC RR → TELUGU VOWEL SIGN VOCALIC R, TELUGU VOWEL SIGN AA # 
+
+0CE1 ; 0C8C 0CBE ;     MA      # ( ೡ → ಌಾ ) KANNADA LETTER VOCALIC LL → KANNADA LETTER VOCALIC L, KANNADA VOWEL SIGN AA      # 
+
+0D08 ; 0D07 0D57 ;     MA      # ( ഈ → ഇൗ ) MALAYALAM LETTER II → MALAYALAM LETTER I, MALAYALAM AU LENGTH MARK       # 
+
+0D10 ; 0D0E 0D46 ;     MA      # ( ഐ → എെ ) MALAYALAM LETTER AI → MALAYALAM LETTER E, MALAYALAM VOWEL SIGN E # 
+
+0D13 ; 0D12 0D3E ;     MA      # ( ഓ → ഒാ ) MALAYALAM LETTER OO → MALAYALAM LETTER O, MALAYALAM VOWEL SIGN AA        # 
+
+0D14 ; 0D12 0D57 ;     MA      # ( ഔ → ഒൗ ) MALAYALAM LETTER AU → MALAYALAM LETTER O, MALAYALAM AU LENGTH MARK       # 
+
+0D61 ; 0D1E ;  MA      # ( ൡ → ഞ ) MALAYALAM LETTER VOCALIC LL → MALAYALAM LETTER NYA  # 
+
+0D6B ; 0D26 0D4D 0D30 ;        MA      # ( ൫ → ദ്ര ) MALAYALAM DIGIT FIVE → MALAYALAM LETTER DA, MALAYALAM SIGN VIRAMA, MALAYALAM LETTER RA        # 
+
+0D0C ; 0D28 0D41 ;     MA      # ( ഌ → നു ) MALAYALAM LETTER VOCALIC L → MALAYALAM LETTER NA, MALAYALAM VOWEL SIGN U # 
+0D19 ; 0D28 0D41 ;     MA      # ( ങ → നു ) MALAYALAM LETTER NGA → MALAYALAM LETTER NA, MALAYALAM VOWEL SIGN U       # →ഌ→
+
+0D6F ; 0D28 0D4D ;     MA      # ( ൯ → ന് ) MALAYALAM DIGIT NINE → MALAYALAM LETTER NA, MALAYALAM SIGN VIRAMA        # 
+
+0D8C ; 0D28 0D4D 0D28 ;        MA      # ( ඌ → ന്ന ) SINHALA LETTER UUYANNA → MALAYALAM LETTER NA, MALAYALAM SIGN VIRAMA, MALAYALAM LETTER NA      # 
+
+0D31 ; 0D30 ;  MA      # ( റ → ര ) MALAYALAM LETTER RRA → MALAYALAM LETTER RA  # 
+
+0D6A ; 0D30 0D4D ;     MA      # ( ൪ → ര് ) MALAYALAM DIGIT FOUR → MALAYALAM LETTER RA, MALAYALAM SIGN VIRAMA        # 
+
+0D6E ; 0D35 0D4D ;     MA      # ( ൮ → വ് ) MALAYALAM DIGIT EIGHT → MALAYALAM LETTER VA, MALAYALAM SIGN VIRAMA       # 
+
+0D42 ; 0D41 ;  MA      # ( ൂ → ു ) MALAYALAM VOWEL SIGN UU → MALAYALAM VOWEL SIGN U    # 
+0D43 ; 0D41 ;  MA      # ( ൃ → ു ) MALAYALAM VOWEL SIGN VOCALIC R → MALAYALAM VOWEL SIGN U     # →ൂ→
+
+0D48 ; 0D46 0D46 ;     MA      # ( ൈ → െെ ) MALAYALAM VOWEL SIGN AI → MALAYALAM VOWEL SIGN E, MALAYALAM VOWEL SIGN E # 
+
+0E03 ; 0E02 ;  MA      # ( ฃ → ข ) THAI CHARACTER KHO KHUAT → THAI CHARACTER KHO KHAI  # 
+
+0E14 ; 0E04 ;  MA      # ( ด → ค ) THAI CHARACTER DO DEK → THAI CHARACTER KHO KHWAI    # 
+0E15 ; 0E04 ;  MA      # ( ต → ค ) THAI CHARACTER TO TAO → THAI CHARACTER KHO KHWAI    # →ด→
+
+0E21 ; 0E06 ;  MA      # ( ม → ฆ ) THAI CHARACTER MO MA → THAI CHARACTER KHO RAKHANG   # 
+
+0E88 ; 0E08 ;  MA      # ( ຈ → จ ) LAO LETTER CO → THAI CHARACTER CHO CHAN     # 
+
+0E0B ; 0E0A ;  MA      # ( ซ → ช ) THAI CHARACTER SO SO → THAI CHARACTER CHO CHANG     # 
+
+0E0F ; 0E0E ;  MA      # ( ฏ → ฎ ) THAI CHARACTER TO PATAK → THAI CHARACTER DO CHADA   # 
+
+0E17 ; 0E11 ;  MA      # ( ท → ฑ ) THAI CHARACTER THO THAHAN → THAI CHARACTER THO NANGMONTHO   # 
+
+0E9A ; 0E1A ;  MA      # ( ບ → บ ) LAO LETTER BO → THAI CHARACTER BO BAIMAI    # 
+
+0E9B ; 0E1B ;  MA      # ( ປ → ป ) LAO LETTER PO → THAI CHARACTER PO PLA       # 
+
+0E9D ; 0E1D ;  MA      # ( ຝ → ฝ ) LAO LETTER FO TAM → THAI CHARACTER FO FA    # 
+
+0E9E ; 0E1E ;  MA      # ( ພ → พ ) LAO LETTER PHO TAM → THAI CHARACTER PHO PHAN        # 
+
+0E9F ; 0E1F ;  MA      # ( ຟ → ฟ ) LAO LETTER FO SUNG → THAI CHARACTER FO FAN  # 
+
+0E26 ; 0E20 ;  MA      # ( ฦ → ภ ) THAI CHARACTER LU → THAI CHARACTER PHO SAMPHAO      # 
+
+0E8D ; 0E22 ;  MA      # ( ຍ → ย ) LAO LETTER NYO → THAI CHARACTER YO YAK      # 
+
+17D4 ; 0E2F ;  MA      #* ( ។ → ฯ ) KHMER SIGN KHAN → THAI CHARACTER PAIYANNOI # 
+
+0E45 ; 0E32 ;  MA      # ( ๅ → า ) THAI CHARACTER LAKKHANGYAO → THAI CHARACTER SARA AA # 
+
+0E33 ; 030A 0E32 ;     MA      # ( ำ → ̊า ) THAI CHARACTER SARA AM → COMBINING RING ABOVE, THAI CHARACTER SARA AA     # →ํา→
+
+17B7 ; 0E34 ;  MA      # ( ិ → ิ ) KHMER VOWEL SIGN I → THAI CHARACTER SARA I  # 
+
+17B8 ; 0E35 ;  MA      # ( ី → ี ) KHMER VOWEL SIGN II → THAI CHARACTER SARA II        # 
+
+17B9 ; 0E36 ;  MA      # ( ឹ → ึ ) KHMER VOWEL SIGN Y → THAI CHARACTER SARA UE # 
+
+17BA ; 0E37 ;  MA      # ( ឺ → ื ) KHMER VOWEL SIGN YY → THAI CHARACTER SARA UEE       # 
+
+0EB8 ; 0E38 ;  MA      # ( ຸ → ุ ) LAO VOWEL SIGN U → THAI CHARACTER SARA U    # 
+
+0EB9 ; 0E39 ;  MA      # ( ູ → ู ) LAO VOWEL SIGN UU → THAI CHARACTER SARA UU  # 
+
+0E41 ; 0E40 0E40 ;     MA      # ( แ → เเ ) THAI CHARACTER SARA AE → THAI CHARACTER SARA E, THAI CHARACTER SARA E    # 
+
+0EDC ; 0EAB 0E99 ;     MA      # ( ໜ → ຫນ ) LAO HO NO → LAO LETTER HO SUNG, LAO LETTER NO    # 
+
+0EDD ; 0EAB 0EA1 ;     MA      # ( ໝ → ຫມ ) LAO HO MO → LAO LETTER HO SUNG, LAO LETTER MO    # 
+
+0EB3 ; 030A 0EB2 ;     MA      # ( ຳ → ̊າ ) LAO VOWEL SIGN AM → COMBINING RING ABOVE, LAO VOWEL SIGN AA       # →ໍາ→
+
+0F6A ; 0F62 ;  MA      # ( ཪ → ར ) TIBETAN LETTER FIXED-FORM RA → TIBETAN LETTER RA    # 
+
+0F77 ; 0FB2 0F71 0F80 ;        MA      # ( ཷ → ྲཱྀ ) TIBETAN VOWEL SIGN VOCALIC RR → TIBETAN SUBJOINED LETTER RA, TIBETAN VOWEL SIGN AA, TIBETAN VOWEL SIGN REVERSED I     # 
+
+0F79 ; 0FB3 0F71 0F80 ;        MA      # ( ཹ → ླཱྀ ) TIBETAN VOWEL SIGN VOCALIC LL → TIBETAN SUBJOINED LETTER LA, TIBETAN VOWEL SIGN AA, TIBETAN VOWEL SIGN REVERSED I     # 
+
+17A3 ; 17A2 ;  MA      # ( ឣ → អ ) KHMER INDEPENDENT VOWEL QAQ → KHMER LETTER QA       # 
+
+19D0 ; 199E ;  MA      # ( ᧐ → ᦞ ) NEW TAI LUE DIGIT ZERO → NEW TAI LUE LETTER LOW VA  # 
+
+19D1 ; 19B1 ;  MA      # ( ᧑ → ᦱ ) NEW TAI LUE DIGIT ONE → NEW TAI LUE VOWEL SIGN AA   # 
+
+1A80 ; 1A45 ;  MA      # ( ᪀ → ᩅ ) TAI THAM HORA DIGIT ZERO → TAI THAM LETTER WA       # 
+1A90 ; 1A45 ;  MA      # ( ᪐ → ᩅ ) TAI THAM THAM DIGIT ZERO → TAI THAM LETTER WA       # 
+
+AA53 ; AA01 ;  MA      # ( ꩓ → ꨁ ) CHAM DIGIT THREE → CHAM LETTER I    # 
+
+AA56 ; AA23 ;  MA      # ( ꩖ → ꨣ ) CHAM DIGIT SIX → CHAM LETTER RA     # 
+
+1B52 ; 1B0D ;  MA      # ( ᭒ → ᬍ ) BALINESE DIGIT TWO → BALINESE LETTER LA LENGA       # 
+
+1B53 ; 1B11 ;  MA      # ( ᭓ → ᬑ ) BALINESE DIGIT THREE → BALINESE LETTER OKARA        # 
+
+1B58 ; 1B28 ;  MA      # ( ᭘ → ᬨ ) BALINESE DIGIT EIGHT → BALINESE LETTER PA KAPAL     # 
+
+1896 ; 185C ;  MA      # ( ᢖ → ᡜ ) MONGOLIAN LETTER ALI GALI ZA → MONGOLIAN LETTER TODO DZA    # 
+
+1855 ; 1835 ;  MA      # ( ᡕ → ᠵ ) MONGOLIAN LETTER TODO YA → MONGOLIAN LETTER JA      # 
+
+140D ; 1401 00B7 ;     MA      # ( ᐍ → ᐁ· ) CANADIAN SYLLABICS WEST-CREE WE → CANADIAN SYLLABICS E, MIDDLE DOT        # →ᐁᐧ→
+
+2206 ; 1403 ;  MA      #* ( ∆ → ᐃ ) INCREMENT → CANADIAN SYLLABICS I   # →Δ→
+0394 ; 1403 ;  MA      # ( Δ → ᐃ ) GREEK CAPITAL LETTER DELTA → CANADIAN SYLLABICS I    # 
+1D6AB ;        1403 ;  MA      # ( 𝚫 → ᐃ ) MATHEMATICAL BOLD CAPITAL DELTA → CANADIAN SYLLABICS I     # →Δ→
+1D6E5 ;        1403 ;  MA      # ( 𝛥 → ᐃ ) MATHEMATICAL ITALIC CAPITAL DELTA → CANADIAN SYLLABICS I   # →Δ→
+1D71F ;        1403 ;  MA      # ( 𝜟 → ᐃ ) MATHEMATICAL BOLD ITALIC CAPITAL DELTA → CANADIAN SYLLABICS I      # →Δ→
+1D759 ;        1403 ;  MA      # ( 𝝙 → ᐃ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA → CANADIAN SYLLABICS I  # →Δ→
+1D793 ;        1403 ;  MA      # ( 𝞓 → ᐃ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA → CANADIAN SYLLABICS I   # →Δ→
+2C86 ; 1403 ;  MA      # ( Ⲇ → ᐃ ) COPTIC CAPITAL LETTER DALDA → CANADIAN SYLLABICS I  # →Δ→
+2D60 ; 1403 ;  MA      # ( ⵠ → ᐃ ) TIFINAGH LETTER YAV → CANADIAN SYLLABICS I  # 
+
+140F ; 1403 00B7 ;     MA      # ( ᐏ → ᐃ· ) CANADIAN SYLLABICS WEST-CREE WI → CANADIAN SYLLABICS I, MIDDLE DOT        # →ᐃᐧ→
+
+1411 ; 1404 00B7 ;     MA      # ( ᐑ → ᐄ· ) CANADIAN SYLLABICS WEST-CREE WII → CANADIAN SYLLABICS II, MIDDLE DOT      # →ᐄᐧ→
+
+1413 ; 1405 00B7 ;     MA      # ( ᐓ → ᐅ· ) CANADIAN SYLLABICS WEST-CREE WO → CANADIAN SYLLABICS O, MIDDLE DOT        # →ᐅᐧ→
+
+1415 ; 1406 00B7 ;     MA      # ( ᐕ → ᐆ· ) CANADIAN SYLLABICS WEST-CREE WOO → CANADIAN SYLLABICS OO, MIDDLE DOT      # →ᐆᐧ→
+
+1418 ; 140A 00B7 ;     MA      # ( ᐘ → ᐊ· ) CANADIAN SYLLABICS WEST-CREE WA → CANADIAN SYLLABICS A, MIDDLE DOT        # →ᐊᐧ→
+
+141A ; 140B 00B7 ;     MA      # ( ᐚ → ᐋ· ) CANADIAN SYLLABICS WEST-CREE WAA → CANADIAN SYLLABICS AA, MIDDLE DOT      # →ᐋᐧ→
+
+14D1 ; 1421 ;  MA      # ( ᓑ → ᐡ ) CANADIAN SYLLABICS CARRIER NG → CANADIAN SYLLABICS FINAL BOTTOM HALF RING   # 
+
+1540 ; 1429 ;  MA      # ( ᕀ → ᐩ ) CANADIAN SYLLABICS WEST-CREE Y → CANADIAN SYLLABICS FINAL PLUS      # 
+
+1441 ; 1433 00B7 ;     MA      # ( ᑁ → ᐳ· ) CANADIAN SYLLABICS WEST-CREE PWO → CANADIAN SYLLABICS PO, MIDDLE DOT      # →ᐳᐧ→
+
+1443 ; 1434 00B7 ;     MA      # ( ᑃ → ᐴ· ) CANADIAN SYLLABICS WEST-CREE PWOO → CANADIAN SYLLABICS POO, MIDDLE DOT    # →ᐴᐧ→
+
+2CB4 ; 1438 00B7 ;     MA      # ( Ⲵ → ᐸ· ) COPTIC CAPITAL LETTER OLD COPTIC AIN → CANADIAN SYLLABICS PA, MIDDLE DOT  # →ᑅ→→ᐸᐧ→
+1445 ; 1438 00B7 ;     MA      # ( ᑅ → ᐸ· ) CANADIAN SYLLABICS WEST-CREE PWA → CANADIAN SYLLABICS PA, MIDDLE DOT      # →ᐸᐧ→
+
+1447 ; 1439 00B7 ;     MA      # ( ᑇ → ᐹ· ) CANADIAN SYLLABICS WEST-CREE PWAA → CANADIAN SYLLABICS PAA, MIDDLE DOT    # →ᐹᐧ→
+
+02C8 ; 144A ;  MA      # ( ˈ → ᑊ ) MODIFIER LETTER VERTICAL LINE → CANADIAN SYLLABICS WEST-CREE P       # 
+
+0548 ; 144E ;  MA      # ( Ո → ᑎ ) ARMENIAN CAPITAL LETTER VO → CANADIAN SYLLABICS TI   # 
+
+145A ; 144E 00B7 ;     MA      # ( ᑚ → ᑎ· ) CANADIAN SYLLABICS WEST-CREE TWI → CANADIAN SYLLABICS TI, MIDDLE DOT      # →ᑎᐧ→
+
+1468 ; 144E 144A ;     MA      # ( ᑨ → ᑎᑊ ) CANADIAN SYLLABICS TTI → CANADIAN SYLLABICS TI, CANADIAN SYLLABICS WEST-CREE P   # 
+
+145C ; 144F 00B7 ;     MA      # ( ᑜ → ᑏ· ) CANADIAN SYLLABICS WEST-CREE TWII → CANADIAN SYLLABICS TII, MIDDLE DOT    # →ᑏᐧ→
+
+145E ; 1450 00B7 ;     MA      # ( ᑞ → ᑐ· ) CANADIAN SYLLABICS WEST-CREE TWO → CANADIAN SYLLABICS TO, MIDDLE DOT      # →ᑐᐧ→
+
+1469 ; 1450 144A ;     MA      # ( ᑩ → ᑐᑊ ) CANADIAN SYLLABICS TTO → CANADIAN SYLLABICS TO, CANADIAN SYLLABICS WEST-CREE P   # 
+
+1460 ; 1451 00B7 ;     MA      # ( ᑠ → ᑑ· ) CANADIAN SYLLABICS WEST-CREE TWOO → CANADIAN SYLLABICS TOO, MIDDLE DOT    # →ᑑᐧ→
+
+1462 ; 1455 00B7 ;     MA      # ( ᑢ → ᑕ· ) CANADIAN SYLLABICS WEST-CREE TWA → CANADIAN SYLLABICS TA, MIDDLE DOT      # →ᑕᐧ→
+
+146A ; 1455 144A ;     MA      # ( ᑪ → ᑕᑊ ) CANADIAN SYLLABICS TTA → CANADIAN SYLLABICS TA, CANADIAN SYLLABICS WEST-CREE P   # 
+
+1464 ; 1456 00B7 ;     MA      # ( ᑤ → ᑖ· ) CANADIAN SYLLABICS WEST-CREE TWAA → CANADIAN SYLLABICS TAA, MIDDLE DOT    # →ᑖᐧ→
+
+1475 ; 146B 00B7 ;     MA      # ( ᑵ → ᑫ· ) CANADIAN SYLLABICS WEST-CREE KWE → CANADIAN SYLLABICS KE, MIDDLE DOT      # →ᑫᐧ→
+
+1485 ; 146B 144A ;     MA      # ( ᒅ → ᑫᑊ ) CANADIAN SYLLABICS SOUTH-SLAVEY KEH → CANADIAN SYLLABICS KE, CANADIAN SYLLABICS WEST-CREE P      # 
+
+1479 ; 146E 00B7 ;     MA      # ( ᑹ → ᑮ· ) CANADIAN SYLLABICS WEST-CREE KWII → CANADIAN SYLLABICS KII, MIDDLE DOT    # →ᑮᐧ→
+
+147D ; 1470 00B7 ;     MA      # ( ᑽ → ᑰ· ) CANADIAN SYLLABICS WEST-CREE KWOO → CANADIAN SYLLABICS KOO, MIDDLE DOT    # →ᑰᐧ→
+
+147F ; 1472 00B7 ;     MA      # ( ᑿ → ᑲ· ) CANADIAN SYLLABICS WEST-CREE KWA → CANADIAN SYLLABICS KA, MIDDLE DOT      # →ᑲᐧ→
+
+1488 ; 1472 144A ;     MA      # ( ᒈ → ᑲᑊ ) CANADIAN SYLLABICS SOUTH-SLAVEY KAH → CANADIAN SYLLABICS KA, CANADIAN SYLLABICS WEST-CREE P      # 
+
+1481 ; 1473 00B7 ;     MA      # ( ᒁ → ᑳ· ) CANADIAN SYLLABICS WEST-CREE KWAA → CANADIAN SYLLABICS KAA, MIDDLE DOT    # →ᑳᐧ→
+
+1603 ; 1489 ;  MA      # ( ᘃ → ᒉ ) CANADIAN SYLLABICS CARRIER NO → CANADIAN SYLLABICS CE       # 
+
+1493 ; 1489 00B7 ;     MA      # ( ᒓ → ᒉ· ) CANADIAN SYLLABICS WEST-CREE CWE → CANADIAN SYLLABICS CE, MIDDLE DOT      # →ᒉᐧ→
+
+1495 ; 148B 00B7 ;     MA      # ( ᒕ → ᒋ· ) CANADIAN SYLLABICS WEST-CREE CWI → CANADIAN SYLLABICS CI, MIDDLE DOT      # →ᒋᐧ→
+
+1497 ; 148C 00B7 ;     MA      # ( ᒗ → ᒌ· ) CANADIAN SYLLABICS WEST-CREE CWII → CANADIAN SYLLABICS CII, MIDDLE DOT    # →ᒌᐧ→
+
+149B ; 148E 00B7 ;     MA      # ( ᒛ → ᒎ· ) CANADIAN SYLLABICS WEST-CREE CWOO → CANADIAN SYLLABICS COO, MIDDLE DOT    # →ᒎᐧ→
+
+1602 ; 1490 ;  MA      # ( ᘂ → ᒐ ) CANADIAN SYLLABICS CARRIER NU → CANADIAN SYLLABICS CA       # 
+
+149D ; 1490 00B7 ;     MA      # ( ᒝ → ᒐ· ) CANADIAN SYLLABICS WEST-CREE CWA → CANADIAN SYLLABICS CA, MIDDLE DOT      # →ᒐᐧ→
+
+149F ; 1491 00B7 ;     MA      # ( ᒟ → ᒑ· ) CANADIAN SYLLABICS WEST-CREE CWAA → CANADIAN SYLLABICS CAA, MIDDLE DOT    # →ᒑᐧ→
+
+14AD ; 14A3 00B7 ;     MA      # ( ᒭ → ᒣ· ) CANADIAN SYLLABICS WEST-CREE MWE → CANADIAN SYLLABICS ME, MIDDLE DOT      # →ᒣᐧ→
+
+0393 ; 14A5 ;  MA      # ( Γ → ᒥ ) GREEK CAPITAL LETTER GAMMA → CANADIAN SYLLABICS MI   # 
+213E ; 14A5 ;  MA      # ( ℾ → ᒥ ) DOUBLE-STRUCK CAPITAL GAMMA → CANADIAN SYLLABICS MI # →Γ→
+1D6AA ;        14A5 ;  MA      # ( 𝚪 → ᒥ ) MATHEMATICAL BOLD CAPITAL GAMMA → CANADIAN SYLLABICS MI    # →Γ→
+1D6E4 ;        14A5 ;  MA      # ( 𝛤 → ᒥ ) MATHEMATICAL ITALIC CAPITAL GAMMA → CANADIAN SYLLABICS MI  # →Γ→
+1D71E ;        14A5 ;  MA      # ( 𝜞 → ᒥ ) MATHEMATICAL BOLD ITALIC CAPITAL GAMMA → CANADIAN SYLLABICS MI     # →Γ→
+1D758 ;        14A5 ;  MA      # ( 𝝘 → ᒥ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA → CANADIAN SYLLABICS MI # →Γ→
+1D792 ;        14A5 ;  MA      # ( 𝞒 → ᒥ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA → CANADIAN SYLLABICS MI  # →Γ→
+2C84 ; 14A5 ;  MA      # ( Ⲅ → ᒥ ) COPTIC CAPITAL LETTER GAMMA → CANADIAN SYLLABICS MI # →Г→
+0413 ; 14A5 ;  MA      # ( Г → ᒥ ) CYRILLIC CAPITAL LETTER GHE → CANADIAN SYLLABICS MI  # 
+13B1 ; 14A5 ;  MA      # ( Ꮁ → ᒥ ) CHEROKEE LETTER HU → CANADIAN SYLLABICS MI  # →Γ→
+
+0492 ; 14A5 0335 ;     MA      # ( Ғ → ᒥ̵ ) CYRILLIC CAPITAL LETTER GHE WITH STROKE → CANADIAN SYLLABICS MI, COMBINING SHORT STROKE OVERLAY    # →Г̵→→Γ̵→
+
+14AF ; 14A5 00B7 ;     MA      # ( ᒯ → ᒥ· ) CANADIAN SYLLABICS WEST-CREE MWI → CANADIAN SYLLABICS MI, MIDDLE DOT      # →ᒥᐧ→
+
+0490 ; 14A5 144A ;     MA      # ( Ґ → ᒥᑊ ) CYRILLIC CAPITAL LETTER GHE WITH UPTURN → CANADIAN SYLLABICS MI, CANADIAN SYLLABICS WEST-CREE P   # →Гˈ→→Γᑊ→
+
+14B1 ; 14A6 00B7 ;     MA      # ( ᒱ → ᒦ· ) CANADIAN SYLLABICS WEST-CREE MWII → CANADIAN SYLLABICS MII, MIDDLE DOT    # →ᒦᐧ→
+
+14B3 ; 14A7 00B7 ;     MA      # ( ᒳ → ᒧ· ) CANADIAN SYLLABICS WEST-CREE MWO → CANADIAN SYLLABICS MO, MIDDLE DOT      # →ᒧᐧ→
+
+14B5 ; 14A8 00B7 ;     MA      # ( ᒵ → ᒨ· ) CANADIAN SYLLABICS WEST-CREE MWOO → CANADIAN SYLLABICS MOO, MIDDLE DOT    # →ᒨᐧ→
+
+14B9 ; 14AB 00B7 ;     MA      # ( ᒹ → ᒫ· ) CANADIAN SYLLABICS WEST-CREE MWAA → CANADIAN SYLLABICS MAA, MIDDLE DOT    # →ᒫᐧ→
+
+14CA ; 14C0 00B7 ;     MA      # ( ᓊ → ᓀ· ) CANADIAN SYLLABICS WEST-CREE NWE → CANADIAN SYLLABICS NE, MIDDLE DOT      # →ᓀᐧ→
+
+14CC ; 14C7 00B7 ;     MA      # ( ᓌ → ᓇ· ) CANADIAN SYLLABICS WEST-CREE NWA → CANADIAN SYLLABICS NA, MIDDLE DOT      # →ᓇᐧ→
+
+14CE ; 14C8 14AB ;     MA      # ( ᓎ → ᓈᒫ ) CANADIAN SYLLABICS WEST-CREE NWAA → CANADIAN SYLLABICS NAA, CANADIAN SYLLABICS MAA       # 
+
+1604 ; 14D3 ;  MA      # ( ᘄ → ᓓ ) CANADIAN SYLLABICS CARRIER NE → CANADIAN SYLLABICS LE       # 
+
+14DD ; 14D3 00B7 ;     MA      # ( ᓝ → ᓓ· ) CANADIAN SYLLABICS WEST-CREE LWE → CANADIAN SYLLABICS LE, MIDDLE DOT      # →ᓓᐧ→
+
+14DF ; 14D5 00B7 ;     MA      # ( ᓟ → ᓕ· ) CANADIAN SYLLABICS WEST-CREE LWI → CANADIAN SYLLABICS LI, MIDDLE DOT      # →ᓕᐧ→
+
+14E1 ; 14D6 00B7 ;     MA      # ( ᓡ → ᓖ· ) CANADIAN SYLLABICS WEST-CREE LWII → CANADIAN SYLLABICS LII, MIDDLE DOT    # →ᓖᐧ→
+
+14E3 ; 14D7 00B7 ;     MA      # ( ᓣ → ᓗ· ) CANADIAN SYLLABICS WEST-CREE LWO → CANADIAN SYLLABICS LO, MIDDLE DOT      # →ᓗᐧ→
+
+14E5 ; 14D8 00B7 ;     MA      # ( ᓥ → ᓘ· ) CANADIAN SYLLABICS WEST-CREE LWOO → CANADIAN SYLLABICS LOO, MIDDLE DOT    # →ᓘᐧ→
+
+1607 ; 14DA ;  MA      # ( ᘇ → ᓚ ) CANADIAN SYLLABICS CARRIER NA → CANADIAN SYLLABICS LA       # 
+
+14E7 ; 14DA 00B7 ;     MA      # ( ᓧ → ᓚ· ) CANADIAN SYLLABICS WEST-CREE LWA → CANADIAN SYLLABICS LA, MIDDLE DOT      # →ᓚᐧ→
+
+14E9 ; 14DB 00B7 ;     MA      # ( ᓩ → ᓛ· ) CANADIAN SYLLABICS WEST-CREE LWAA → CANADIAN SYLLABICS LAA, MIDDLE DOT    # →ᓛᐧ→
+
+14F7 ; 14ED 00B7 ;     MA      # ( ᓷ → ᓭ· ) CANADIAN SYLLABICS WEST-CREE SWE → CANADIAN SYLLABICS SE, MIDDLE DOT      # →ᓭᐧ→
+
+14F9 ; 14EF 00B7 ;     MA      # ( ᓹ → ᓯ· ) CANADIAN SYLLABICS WEST-CREE SWI → CANADIAN SYLLABICS SI, MIDDLE DOT      # →ᓯᐧ→
+
+14FB ; 14F0 00B7 ;     MA      # ( ᓻ → ᓰ· ) CANADIAN SYLLABICS WEST-CREE SWII → CANADIAN SYLLABICS SII, MIDDLE DOT    # →ᓰᐧ→
+
+14FD ; 14F1 00B7 ;     MA      # ( ᓽ → ᓱ· ) CANADIAN SYLLABICS WEST-CREE SWO → CANADIAN SYLLABICS SO, MIDDLE DOT      # →ᓱᐧ→
+
+14FF ; 14F2 00B7 ;     MA      # ( ᓿ → ᓲ· ) CANADIAN SYLLABICS WEST-CREE SWOO → CANADIAN SYLLABICS SOO, MIDDLE DOT    # →ᓲᐧ→
+
+1501 ; 14F4 00B7 ;     MA      # ( ᔁ → ᓴ· ) CANADIAN SYLLABICS WEST-CREE SWA → CANADIAN SYLLABICS SA, MIDDLE DOT      # →ᓴᐧ→
+
+1503 ; 14F5 00B7 ;     MA      # ( ᔃ → ᓵ· ) CANADIAN SYLLABICS WEST-CREE SWAA → CANADIAN SYLLABICS SAA, MIDDLE DOT    # →ᓵᐧ→
+
+150C ; 150B 1438 ;     MA      # ( ᔌ → ᔋᐸ ) CANADIAN SYLLABICS NASKAPI SPWA → CANADIAN SYLLABICS NASKAPI S-W, CANADIAN SYLLABICS PA  # 
+
+150D ; 150B 1455 ;     MA      # ( ᔍ → ᔋᑕ ) CANADIAN SYLLABICS NASKAPI STWA → CANADIAN SYLLABICS NASKAPI S-W, CANADIAN SYLLABICS TA  # 
+
+150E ; 150B 1472 ;     MA      # ( ᔎ → ᔋᑲ ) CANADIAN SYLLABICS NASKAPI SKWA → CANADIAN SYLLABICS NASKAPI S-W, CANADIAN SYLLABICS KA  # 
+
+150F ; 150B 1490 ;     MA      # ( ᔏ → ᔋᒐ ) CANADIAN SYLLABICS NASKAPI SCWA → CANADIAN SYLLABICS NASKAPI S-W, CANADIAN SYLLABICS CA  # 
+
+1518 ; 1510 00B7 ;     MA      # ( ᔘ → ᔐ· ) CANADIAN SYLLABICS WEST-CREE SHWE → CANADIAN SYLLABICS SHE, MIDDLE DOT    # →ᔐᐧ→
+
+151A ; 1511 00B7 ;     MA      # ( ᔚ → ᔑ· ) CANADIAN SYLLABICS WEST-CREE SHWI → CANADIAN SYLLABICS SHI, MIDDLE DOT    # →ᔑᐧ→
+
+151C ; 1512 00B7 ;     MA      # ( ᔜ → ᔒ· ) CANADIAN SYLLABICS WEST-CREE SHWII → CANADIAN SYLLABICS SHII, MIDDLE DOT  # →ᔒᐧ→
+
+151E ; 1513 00B7 ;     MA      # ( ᔞ → ᔓ· ) CANADIAN SYLLABICS WEST-CREE SHWO → CANADIAN SYLLABICS SHO, MIDDLE DOT    # →ᔓᐧ→
+
+1520 ; 1514 00B7 ;     MA      # ( ᔠ → ᔔ· ) CANADIAN SYLLABICS WEST-CREE SHWOO → CANADIAN SYLLABICS SHOO, MIDDLE DOT  # →ᔔᐧ→
+
+1522 ; 1515 00B7 ;     MA      # ( ᔢ → ᔕ· ) CANADIAN SYLLABICS WEST-CREE SHWA → CANADIAN SYLLABICS SHA, MIDDLE DOT    # →ᔕᐧ→
+
+1524 ; 1516 00B7 ;     MA      # ( ᔤ → ᔖ· ) CANADIAN SYLLABICS WEST-CREE SHWAA → CANADIAN SYLLABICS SHAA, MIDDLE DOT  # →ᔖᐧ→
+
+1532 ; 1528 00B7 ;     MA      # ( ᔲ → ᔨ· ) CANADIAN SYLLABICS WEST-CREE YWI → CANADIAN SYLLABICS YI, MIDDLE DOT      # →ᔨᐧ→
+
+1534 ; 1529 00B7 ;     MA      # ( ᔴ → ᔩ· ) CANADIAN SYLLABICS WEST-CREE YWII → CANADIAN SYLLABICS YII, MIDDLE DOT    # →ᔩᐧ→
+
+1536 ; 152A 00B7 ;     MA      # ( ᔶ → ᔪ· ) CANADIAN SYLLABICS WEST-CREE YWO → CANADIAN SYLLABICS YO, MIDDLE DOT      # →ᔪᐧ→
+
+1538 ; 152B 00B7 ;     MA      # ( ᔸ → ᔫ· ) CANADIAN SYLLABICS WEST-CREE YWOO → CANADIAN SYLLABICS YOO, MIDDLE DOT    # →ᔫᐧ→
+
+153A ; 152D 00B7 ;     MA      # ( ᔺ → ᔭ· ) CANADIAN SYLLABICS WEST-CREE YWA → CANADIAN SYLLABICS YA, MIDDLE DOT      # →ᔭᐧ→
+
+153C ; 152E 00B7 ;     MA      # ( ᔼ → ᔮ· ) CANADIAN SYLLABICS WEST-CREE YWAA → CANADIAN SYLLABICS YAA, MIDDLE DOT    # →ᔮᐧ→
+
+1622 ; 1543 ;  MA      # ( ᘢ → ᕃ ) CANADIAN SYLLABICS CARRIER LU → CANADIAN SYLLABICS R-CREE RE        # 
+
+1623 ; 1546 ;  MA      # ( ᘣ → ᕆ ) CANADIAN SYLLABICS CARRIER LO → CANADIAN SYLLABICS RI       # 
+
+1624 ; 154A ;  MA      # ( ᘤ → ᕊ ) CANADIAN SYLLABICS CARRIER LE → CANADIAN SYLLABICS WEST-CREE LO     # 
+
+154F ; 154C 00B7 ;     MA      # ( ᕏ → ᕌ· ) CANADIAN SYLLABICS WEST-CREE RWAA → CANADIAN SYLLABICS RAA, MIDDLE DOT    # →ᕌᐧ→
+
+1581 ; 1550 0064 ;     MA      # ( ᖁ → ᕐd ) CANADIAN SYLLABICS QO → CANADIAN SYLLABICS R, LATIN SMALL LETTER D # →ᕐᑯ→
+
+157F ; 1550 0050 ;     MA      # ( ᕿ → ᕐP ) CANADIAN SYLLABICS QI → CANADIAN SYLLABICS R, LATIN CAPITAL LETTER P       # →ᕐᑭ→
+
+166F ; 1550 146B ;     MA      # ( ᙯ → ᕐᑫ ) CANADIAN SYLLABICS QAI → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KE     # 
+
+157E ; 1550 146C ;     MA      # ( ᕾ → ᕐᑬ ) CANADIAN SYLLABICS QAAI → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KAAI  # 
+
+1580 ; 1550 146E ;     MA      # ( ᖀ → ᕐᑮ ) CANADIAN SYLLABICS QII → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KII    # 
+
+1582 ; 1550 1470 ;     MA      # ( ᖂ → ᕐᑰ ) CANADIAN SYLLABICS QOO → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KOO    # 
+
+1583 ; 1550 1472 ;     MA      # ( ᖃ → ᕐᑲ ) CANADIAN SYLLABICS QA → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KA      # 
+
+1584 ; 1550 1473 ;     MA      # ( ᖄ → ᕐᑳ ) CANADIAN SYLLABICS QAA → CANADIAN SYLLABICS R, CANADIAN SYLLABICS KAA    # 
+
+1585 ; 1550 1483 ;     MA      # ( ᖅ → ᕐᒃ ) CANADIAN SYLLABICS Q → CANADIAN SYLLABICS R, CANADIAN SYLLABICS K        # 
+
+155C ; 155A 00B7 ;     MA      # ( ᕜ → ᕚ· ) CANADIAN SYLLABICS WEST-CREE FWAA → CANADIAN SYLLABICS FAA, MIDDLE DOT    # →ᕚᐧ→
+
+1569 ; 1567 00B7 ;     MA      # ( ᕩ → ᕧ· ) CANADIAN SYLLABICS WEST-CREE THWAA → CANADIAN SYLLABICS THAA, MIDDLE DOT  # →ᕧᐧ→
+
+1591 ; 1595 004A ;     MA      # ( ᖑ → ᖕJ ) CANADIAN SYLLABICS NGO → CANADIAN SYLLABICS NG, LATIN CAPITAL LETTER J     # →ᖕᒍ→
+
+1670 ; 1595 1489 ;     MA      # ( ᙰ → ᖕᒉ ) CANADIAN SYLLABICS NGAI → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CE   # 
+
+158E ; 1595 148A ;     MA      # ( ᖎ → ᖕᒊ ) CANADIAN SYLLABICS NGAAI → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CAAI        # 
+
+158F ; 1595 148B ;     MA      # ( ᖏ → ᖕᒋ ) CANADIAN SYLLABICS NGI → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CI    # 
+
+1590 ; 1595 148C ;     MA      # ( ᖐ → ᖕᒌ ) CANADIAN SYLLABICS NGII → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CII  # 
+
+1592 ; 1595 148E ;     MA      # ( ᖒ → ᖕᒎ ) CANADIAN SYLLABICS NGOO → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS COO  # 
+
+1593 ; 1595 1490 ;     MA      # ( ᖓ → ᖕᒐ ) CANADIAN SYLLABICS NGA → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CA    # 
+
+1594 ; 1595 1491 ;     MA      # ( ᖔ → ᖕᒑ ) CANADIAN SYLLABICS NGAA → CANADIAN SYLLABICS NG, CANADIAN SYLLABICS CAA  # 
+
+1673 ; 1596 004A ;     MA      # ( ᙳ → ᖖJ ) CANADIAN SYLLABICS NNGO → CANADIAN SYLLABICS NNG, LATIN CAPITAL LETTER J   # →ᖖᒍ→
+
+1671 ; 1596 148B ;     MA      # ( ᙱ → ᖖᒋ ) CANADIAN SYLLABICS NNGI → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS CI  # 
+
+1672 ; 1596 148C ;     MA      # ( ᙲ → ᖖᒌ ) CANADIAN SYLLABICS NNGII → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS CII        # 
+
+1674 ; 1596 148E ;     MA      # ( ᙴ → ᖖᒎ ) CANADIAN SYLLABICS NNGOO → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS COO        # 
+
+1675 ; 1596 1490 ;     MA      # ( ᙵ → ᖖᒐ ) CANADIAN SYLLABICS NNGA → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS CA  # 
+
+1676 ; 1596 1491 ;     MA      # ( ᙶ → ᖖᒑ ) CANADIAN SYLLABICS NNGAA → CANADIAN SYLLABICS NNG, CANADIAN SYLLABICS CAA        # 
+
+A4F7 ; 15E1 ;  MA      # ( ꓷ → ᗡ ) LISU LETTER OE → CANADIAN SYLLABICS CARRIER THA     # 
+
+0460 ; 15EF ;  MA      # ( Ѡ → ᗯ ) CYRILLIC CAPITAL LETTER OMEGA → CANADIAN SYLLABICS CARRIER GU        # 
+
+03A9 ; 162F ;  MA      # ( Ω → ᘯ ) GREEK CAPITAL LETTER OMEGA → CANADIAN SYLLABICS CARRIER LHO  # 
+2126 ; 162F ;  MA      # ( Ω → ᘯ ) OHM SIGN → CANADIAN SYLLABICS CARRIER LHO   # →Ω→
+1D6C0 ;        162F ;  MA      # ( 𝛀 → ᘯ ) MATHEMATICAL BOLD CAPITAL OMEGA → CANADIAN SYLLABICS CARRIER LHO   # →Ω→
+1D6FA ;        162F ;  MA      # ( 𝛺 → ᘯ ) MATHEMATICAL ITALIC CAPITAL OMEGA → CANADIAN SYLLABICS CARRIER LHO # →Ω→
+1D734 ;        162F ;  MA      # ( 𝜴 → ᘯ ) MATHEMATICAL BOLD ITALIC CAPITAL OMEGA → CANADIAN SYLLABICS CARRIER LHO    # →Ω→
+1D76E ;        162F ;  MA      # ( 𝝮 → ᘯ ) MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA → CANADIAN SYLLABICS CARRIER LHO        # →Ω→
+1D7A8 ;        162F ;  MA      # ( 𝞨 → ᘯ ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA → CANADIAN SYLLABICS CARRIER LHO # →Ω→
+1635 ; 162F ;  MA      # ( ᘵ → ᘯ ) CANADIAN SYLLABICS CARRIER TLHO → CANADIAN SYLLABICS CARRIER LHO    # 
+
+A4ED ; 1660 ;  MA      # ( ꓭ → ᙠ ) LISU LETTER GHA → CANADIAN SYLLABICS CARRIER TSA    # 
+
+3131 ; 1100 ;  MA      # ( ㄱ → ᄀ ) HANGUL LETTER KIYEOK → HANGUL CHOSEONG KIYEOK       # 
+11A8 ; 1100 ;  MA      # ( ᆨ → ᄀ ) HANGUL JONGSEONG KIYEOK → HANGUL CHOSEONG KIYEOK    # 
+
+1101 ; 1100 1100 ;     MA      # ( ᄁ → ᄀᄀ ) HANGUL CHOSEONG SSANGKIYEOK → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK     # 
+3132 ; 1100 1100 ;     MA      # ( ㄲ → ᄀᄀ ) HANGUL LETTER SSANGKIYEOK → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK       # →ᄁ→
+11A9 ; 1100 1100 ;     MA      # ( ᆩ → ᄀᄀ ) HANGUL JONGSEONG SSANGKIYEOK → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK    # →ᄁ→
+
+11FA ; 1100 1102 ;     MA      # ( ᇺ → ᄀᄂ ) HANGUL JONGSEONG KIYEOK-NIEUN → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG NIEUN    # →ᆨᆫ→
+
+115A ; 1100 1103 ;     MA      # ( ᅚ → ᄀᄃ ) HANGUL CHOSEONG KIYEOK-TIKEUT → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG TIKEUT   # 
+
+11C3 ; 1100 1105 ;     MA      # ( ᇃ → ᄀᄅ ) HANGUL JONGSEONG KIYEOK-RIEUL → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG RIEUL    # →ᆨᆯ→
+
+11FB ; 1100 1107 ;     MA      # ( ᇻ → ᄀᄇ ) HANGUL JONGSEONG KIYEOK-PIEUP → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG PIEUP    # →ᆨᆸ→
+
+11AA ; 1100 1109 ;     MA      # ( ᆪ → ᄀᄉ ) HANGUL JONGSEONG KIYEOK-SIOS → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG SIOS      # →ᆨᆺ→
+3133 ; 1100 1109 ;     MA      # ( ㄳ → ᄀᄉ ) HANGUL LETTER KIYEOK-SIOS → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG SIOS # →ᆪ→→ᆨᆺ→
+
+11C4 ; 1100 1109 1100 ;        MA      # ( ᇄ → ᄀᄉᄀ ) HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK    # →ᆨᆺᆨ→
+
+11FC ; 1100 110E ;     MA      # ( ᇼ → ᄀᄎ ) HANGUL JONGSEONG KIYEOK-CHIEUCH → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG CHIEUCH        # →ᆨᆾ→
+
+11FD ; 1100 110F ;     MA      # ( ᇽ → ᄀᄏ ) HANGUL JONGSEONG KIYEOK-KHIEUKH → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KHIEUKH        # →ᆨᆿ→
+
+11FE ; 1100 1112 ;     MA      # ( ᇾ → ᄀᄒ ) HANGUL JONGSEONG KIYEOK-HIEUH → HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG HIEUH    # →ᆨᇂ→
+
+3134 ; 1102 ;  MA      # ( ㄴ → ᄂ ) HANGUL LETTER NIEUN → HANGUL CHOSEONG NIEUN # 
+11AB ; 1102 ;  MA      # ( ᆫ → ᄂ ) HANGUL JONGSEONG NIEUN → HANGUL CHOSEONG NIEUN      # 
+
+1113 ; 1102 1100 ;     MA      # ( ᄓ → ᄂᄀ ) HANGUL CHOSEONG NIEUN-KIYEOK → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG KIYEOK     # 
+11C5 ; 1102 1100 ;     MA      # ( ᇅ → ᄂᄀ ) HANGUL JONGSEONG NIEUN-KIYEOK → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG KIYEOK    # →ᄓ→
+
+1114 ; 1102 1102 ;     MA      # ( ᄔ → ᄂᄂ ) HANGUL CHOSEONG SSANGNIEUN → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG NIEUN        # 
+3165 ; 1102 1102 ;     MA      # ( ㅥ → ᄂᄂ ) HANGUL LETTER SSANGNIEUN → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG NIEUN  # →ᄔ→
+11FF ; 1102 1102 ;     MA      # ( ᇿ → ᄂᄂ ) HANGUL JONGSEONG SSANGNIEUN → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG NIEUN       # →ᆫᆫ→
+
+1115 ; 1102 1103 ;     MA      # ( ᄕ → ᄂᄃ ) HANGUL CHOSEONG NIEUN-TIKEUT → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG TIKEUT     # 
+3166 ; 1102 1103 ;     MA      # ( ㅦ → ᄂᄃ ) HANGUL LETTER NIEUN-TIKEUT → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG TIKEUT       # →ᄕ→
+11C6 ; 1102 1103 ;     MA      # ( ᇆ → ᄂᄃ ) HANGUL JONGSEONG NIEUN-TIKEUT → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG TIKEUT    # →ᄕ→
+
+D7CB ; 1102 1105 ;     MA      # ( ퟋ → ᄂᄅ ) HANGUL JONGSEONG NIEUN-RIEUL → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG RIEUL      # →ᆫᆯ→
+
+1116 ; 1102 1107 ;     MA      # ( ᄖ → ᄂᄇ ) HANGUL CHOSEONG NIEUN-PIEUP → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG PIEUP       # 
+
+115B ; 1102 1109 ;     MA      # ( ᅛ → ᄂᄉ ) HANGUL CHOSEONG NIEUN-SIOS → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG SIOS # 
+11C7 ; 1102 1109 ;     MA      # ( ᇇ → ᄂᄉ ) HANGUL JONGSEONG NIEUN-SIOS → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG SIOS        # →ᆫᆺ→
+3167 ; 1102 1109 ;     MA      # ( ㅧ → ᄂᄉ ) HANGUL LETTER NIEUN-SIOS → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG SIOS   # →ᇇ→→ᆫᆺ→
+
+115C ; 1102 110C ;     MA      # ( ᅜ → ᄂᄌ ) HANGUL CHOSEONG NIEUN-CIEUC → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG CIEUC       # 
+11AC ; 1102 110C ;     MA      # ( ᆬ → ᄂᄌ ) HANGUL JONGSEONG NIEUN-CIEUC → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG CIEUC      # →ᆫᆽ→
+3135 ; 1102 110C ;     MA      # ( ㄵ → ᄂᄌ ) HANGUL LETTER NIEUN-CIEUC → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG CIEUC # →ᆬ→→ᆫᆽ→
+
+D7CC ; 1102 110E ;     MA      # ( ퟌ → ᄂᄎ ) HANGUL JONGSEONG NIEUN-CHIEUCH → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG CHIEUCH  # →ᆫᆾ→
+
+11C9 ; 1102 1110 ;     MA      # ( ᇉ → ᄂᄐ ) HANGUL JONGSEONG NIEUN-THIEUTH → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG THIEUTH  # →ᆫᇀ→
+
+115D ; 1102 1112 ;     MA      # ( ᅝ → ᄂᄒ ) HANGUL CHOSEONG NIEUN-HIEUH → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG HIEUH       # 
+11AD ; 1102 1112 ;     MA      # ( ᆭ → ᄂᄒ ) HANGUL JONGSEONG NIEUN-HIEUH → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG HIEUH      # →ᆫᇂ→
+3136 ; 1102 1112 ;     MA      # ( ㄶ → ᄂᄒ ) HANGUL LETTER NIEUN-HIEUH → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG HIEUH # →ᆭ→→ᆫᇂ→
+
+11C8 ; 1102 1140 ;     MA      # ( ᇈ → ᄂᅀ ) HANGUL JONGSEONG NIEUN-PANSIOS → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG PANSIOS  # →ᆫᇫ→
+3168 ; 1102 1140 ;     MA      # ( ㅨ → ᄂᅀ ) HANGUL LETTER NIEUN-PANSIOS → HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG PANSIOS     # →ᇈ→→ᆫᇫ→
+
+3137 ; 1103 ;  MA      # ( ㄷ → ᄃ ) HANGUL LETTER TIKEUT → HANGUL CHOSEONG TIKEUT       # 
+11AE ; 1103 ;  MA      # ( ᆮ → ᄃ ) HANGUL JONGSEONG TIKEUT → HANGUL CHOSEONG TIKEUT    # 
+
+1117 ; 1103 1100 ;     MA      # ( ᄗ → ᄃᄀ ) HANGUL CHOSEONG TIKEUT-KIYEOK → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG KIYEOK   # 
+11CA ; 1103 1100 ;     MA      # ( ᇊ → ᄃᄀ ) HANGUL JONGSEONG TIKEUT-KIYEOK → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG KIYEOK  # →ᄗ→
+
+1104 ; 1103 1103 ;     MA      # ( ᄄ → ᄃᄃ ) HANGUL CHOSEONG SSANGTIKEUT → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG TIKEUT     # 
+3138 ; 1103 1103 ;     MA      # ( ㄸ → ᄃᄃ ) HANGUL LETTER SSANGTIKEUT → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG TIKEUT       # →ᄄ→
+D7CD ; 1103 1103 ;     MA      # ( ퟍ → ᄃᄃ ) HANGUL JONGSEONG SSANGTIKEUT → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG TIKEUT    # →ᆮᆮ→
+
+D7CE ; 1103 1103 1107 ;        MA      # ( ퟎ → ᄃᄃᄇ ) HANGUL JONGSEONG SSANGTIKEUT-PIEUP → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG PIEUP    # →ᆮᆮᆸ→
+
+115E ; 1103 1105 ;     MA      # ( ᅞ → ᄃᄅ ) HANGUL CHOSEONG TIKEUT-RIEUL → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG RIEUL     # 
+11CB ; 1103 1105 ;     MA      # ( ᇋ → ᄃᄅ ) HANGUL JONGSEONG TIKEUT-RIEUL → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG RIEUL    # →ᆮᆯ→
+
+A960 ; 1103 1106 ;     MA      # ( ꥠ → ᄃᄆ ) HANGUL CHOSEONG TIKEUT-MIEUM → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG MIEUM     # 
+
+A961 ; 1103 1107 ;     MA      # ( ꥡ → ᄃᄇ ) HANGUL CHOSEONG TIKEUT-PIEUP → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG PIEUP     # 
+D7CF ; 1103 1107 ;     MA      # ( ퟏ → ᄃᄇ ) HANGUL JONGSEONG TIKEUT-PIEUP → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG PIEUP    # →ᆮᆸ→
+
+A962 ; 1103 1109 ;     MA      # ( ꥢ → ᄃᄉ ) HANGUL CHOSEONG TIKEUT-SIOS → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG SIOS       # 
+D7D0 ; 1103 1109 ;     MA      # ( ퟐ → ᄃᄉ ) HANGUL JONGSEONG TIKEUT-SIOS → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG SIOS      # →ᆮᆺ→
+
+D7D1 ; 1103 1109 1100 ;        MA      # ( ퟑ → ᄃᄉᄀ ) HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK    # →ᆮᆺᆨ→
+
+A963 ; 1103 110C ;     MA      # ( ꥣ → ᄃᄌ ) HANGUL CHOSEONG TIKEUT-CIEUC → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG CIEUC     # 
+D7D2 ; 1103 110C ;     MA      # ( ퟒ → ᄃᄌ ) HANGUL JONGSEONG TIKEUT-CIEUC → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG CIEUC    # →ᆮᆽ→
+
+D7D3 ; 1103 110E ;     MA      # ( ퟓ → ᄃᄎ ) HANGUL JONGSEONG TIKEUT-CHIEUCH → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG CHIEUCH        # →ᆮᆾ→
+
+D7D4 ; 1103 1110 ;     MA      # ( ퟔ → ᄃᄐ ) HANGUL JONGSEONG TIKEUT-THIEUTH → HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG THIEUTH        # →ᆮᇀ→
+
+3139 ; 1105 ;  MA      # ( ㄹ → ᄅ ) HANGUL LETTER RIEUL → HANGUL CHOSEONG RIEUL # 
+11AF ; 1105 ;  MA      # ( ᆯ → ᄅ ) HANGUL JONGSEONG RIEUL → HANGUL CHOSEONG RIEUL      # 
+
+A964 ; 1105 1100 ;     MA      # ( ꥤ → ᄅᄀ ) HANGUL CHOSEONG RIEUL-KIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK     # 
+11B0 ; 1105 1100 ;     MA      # ( ᆰ → ᄅᄀ ) HANGUL JONGSEONG RIEUL-KIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK    # →ᆯᆨ→
+313A ; 1105 1100 ;     MA      # ( ㄺ → ᄅᄀ ) HANGUL LETTER RIEUL-KIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK       # →ᆰ→→ᆯᆨ→
+
+A965 ; 1105 1100 1100 ;        MA      # ( ꥥ → ᄅᄀᄀ ) HANGUL CHOSEONG RIEUL-SSANGKIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK     # 
+D7D5 ; 1105 1100 1100 ;        MA      # ( ퟕ → ᄅᄀᄀ ) HANGUL JONGSEONG RIEUL-SSANGKIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK    # →ᆯᆨᆨ→
+
+11CC ; 1105 1100 1109 ;        MA      # ( ᇌ → ᄅᄀᄉ ) HANGUL JONGSEONG RIEUL-KIYEOK-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG SIOS      # →ᆯᆨᆺ→
+3169 ; 1105 1100 1109 ;        MA      # ( ㅩ → ᄅᄀᄉ ) HANGUL LETTER RIEUL-KIYEOK-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG SIOS # →ᇌ→→ᆯᆨᆺ→
+
+D7D6 ; 1105 1100 1112 ;        MA      # ( ퟖ → ᄅᄀᄒ ) HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG HIEUH    # →ᆯᆨᇂ→
+
+1118 ; 1105 1102 ;     MA      # ( ᄘ → ᄅᄂ ) HANGUL CHOSEONG RIEUL-NIEUN → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG NIEUN       # 
+11CD ; 1105 1102 ;     MA      # ( ᇍ → ᄅᄂ ) HANGUL JONGSEONG RIEUL-NIEUN → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG NIEUN      # →ᄘ→
+
+A966 ; 1105 1103 ;     MA      # ( ꥦ → ᄅᄃ ) HANGUL CHOSEONG RIEUL-TIKEUT → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG TIKEUT     # 
+11CE ; 1105 1103 ;     MA      # ( ᇎ → ᄅᄃ ) HANGUL JONGSEONG RIEUL-TIKEUT → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG TIKEUT    # →ᆯᆮ→
+316A ; 1105 1103 ;     MA      # ( ㅪ → ᄅᄃ ) HANGUL LETTER RIEUL-TIKEUT → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG TIKEUT       # →ᇎ→→ᆯᆮ→
+
+A967 ; 1105 1103 1103 ;        MA      # ( ꥧ → ᄅᄃᄃ ) HANGUL CHOSEONG RIEUL-SSANGTIKEUT → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG TIKEUT     # 
+
+11CF ; 1105 1103 1112 ;        MA      # ( ᇏ → ᄅᄃᄒ ) HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG TIKEUT, HANGUL CHOSEONG HIEUH    # →ᆯᆮᇂ→
+
+1119 ; 1105 1105 ;     MA      # ( ᄙ → ᄅᄅ ) HANGUL CHOSEONG SSANGRIEUL → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG RIEUL        # 
+11D0 ; 1105 1105 ;     MA      # ( ᇐ → ᄅᄅ ) HANGUL JONGSEONG SSANGRIEUL → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG RIEUL       # →ᄙ→
+
+D7D7 ; 1105 1105 110F ;        MA      # ( ퟗ → ᄅᄅᄏ ) HANGUL JONGSEONG SSANGRIEUL-KHIEUKH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KHIEUKH   # →ᆯᆯᆿ→
+
+A968 ; 1105 1106 ;     MA      # ( ꥨ → ᄅᄆ ) HANGUL CHOSEONG RIEUL-MIEUM → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM       # 
+11B1 ; 1105 1106 ;     MA      # ( ᆱ → ᄅᄆ ) HANGUL JONGSEONG RIEUL-MIEUM → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM      # →ᆯᆷ→
+313B ; 1105 1106 ;     MA      # ( ㄻ → ᄅᄆ ) HANGUL LETTER RIEUL-MIEUM → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM # →ᆱ→→ᆯᆷ→
+
+11D1 ; 1105 1106 1100 ;        MA      # ( ᇑ → ᄅᄆᄀ ) HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG KIYEOK    # →ᆯᆷᆨ→
+
+11D2 ; 1105 1106 1109 ;        MA      # ( ᇒ → ᄅᄆᄉ ) HANGUL JONGSEONG RIEUL-MIEUM-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG SIOS        # →ᆯᆷᆺ→
+
+D7D8 ; 1105 1106 1112 ;        MA      # ( ퟘ → ᄅᄆᄒ ) HANGUL JONGSEONG RIEUL-MIEUM-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG HIEUH      # →ᆯᆷᇂ→
+
+A969 ; 1105 1107 ;     MA      # ( ꥩ → ᄅᄇ ) HANGUL CHOSEONG RIEUL-PIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP       # 
+11B2 ; 1105 1107 ;     MA      # ( ᆲ → ᄅᄇ ) HANGUL JONGSEONG RIEUL-PIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP      # →ᆯᆸ→
+313C ; 1105 1107 ;     MA      # ( ㄼ → ᄅᄇ ) HANGUL LETTER RIEUL-PIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP # →ᆲ→→ᆯᆸ→
+
+D7D9 ; 1105 1107 1103 ;        MA      # ( ퟙ → ᄅᄇᄃ ) HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG TIKEUT    # →ᆯᆸᆮ→
+
+A96A ; 1105 1107 1107 ;        MA      # ( ꥪ → ᄅᄇᄇ ) HANGUL CHOSEONG RIEUL-SSANGPIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP        # 
+
+11D3 ; 1105 1107 1109 ;        MA      # ( ᇓ → ᄅᄇᄉ ) HANGUL JONGSEONG RIEUL-PIEUP-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS        # →ᆯᆸᆺ→
+316B ; 1105 1107 1109 ;        MA      # ( ㅫ → ᄅᄇᄉ ) HANGUL LETTER RIEUL-PIEUP-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS   # →ᇓ→→ᆯᆸᆺ→
+
+A96B ; 1105 1107 110B ;        MA      # ( ꥫ → ᄅᄇᄋ ) HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG     # 
+11D5 ; 1105 1107 110B ;        MA      # ( ᇕ → ᄅᄇᄋ ) HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG    # →ᆯᆸᆼ→
+
+D7DA ; 1105 1107 1111 ;        MA      # ( ퟚ → ᄅᄇᄑ ) HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PHIEUPH  # →ᆯᆸᇁ→
+
+11D4 ; 1105 1107 1112 ;        MA      # ( ᇔ → ᄅᄇᄒ ) HANGUL JONGSEONG RIEUL-PIEUP-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG HIEUH      # →ᆯᆸᇂ→
+
+A96C ; 1105 1109 ;     MA      # ( ꥬ → ᄅᄉ ) HANGUL CHOSEONG RIEUL-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG SIOS # 
+11B3 ; 1105 1109 ;     MA      # ( ᆳ → ᄅᄉ ) HANGUL JONGSEONG RIEUL-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG SIOS        # →ᆯᆺ→
+313D ; 1105 1109 ;     MA      # ( ㄽ → ᄅᄉ ) HANGUL LETTER RIEUL-SIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG SIOS   # →ᆳ→→ᆯᆺ→
+
+11D6 ; 1105 1109 1109 ;        MA      # ( ᇖ → ᄅᄉᄉ ) HANGUL JONGSEONG RIEUL-SSANGSIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS  # →ᆯᆺᆺ→
+
+111B ; 1105 110B ;     MA      # ( ᄛ → ᄅᄋ ) HANGUL CHOSEONG KAPYEOUNRIEUL → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG IEUNG     # 
+D7DD ; 1105 110B ;     MA      # ( ퟝ → ᄅᄋ ) HANGUL JONGSEONG KAPYEOUNRIEUL → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG IEUNG    # →ᆯᆼ→
+
+A96D ; 1105 110C ;     MA      # ( ꥭ → ᄅᄌ ) HANGUL CHOSEONG RIEUL-CIEUC → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG CIEUC       # 
+
+A96E ; 1105 110F ;     MA      # ( ꥮ → ᄅᄏ ) HANGUL CHOSEONG RIEUL-KHIEUKH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KHIEUKH   # 
+11D8 ; 1105 110F ;     MA      # ( ᇘ → ᄅᄏ ) HANGUL JONGSEONG RIEUL-KHIEUKH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG KHIEUKH  # →ᆯᆿ→
+
+11B4 ; 1105 1110 ;     MA      # ( ᆴ → ᄅᄐ ) HANGUL JONGSEONG RIEUL-THIEUTH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG THIEUTH  # →ᆯᇀ→
+313E ; 1105 1110 ;     MA      # ( ㄾ → ᄅᄐ ) HANGUL LETTER RIEUL-THIEUTH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG THIEUTH     # →ᆴ→→ᆯᇀ→
+
+11B5 ; 1105 1111 ;     MA      # ( ᆵ → ᄅᄑ ) HANGUL JONGSEONG RIEUL-PHIEUPH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PHIEUPH  # →ᆯᇁ→
+313F ; 1105 1111 ;     MA      # ( ㄿ → ᄅᄑ ) HANGUL LETTER RIEUL-PHIEUPH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PHIEUPH     # →ᆵ→→ᆯᇁ→
+
+111A ; 1105 1112 ;     MA      # ( ᄚ → ᄅᄒ ) HANGUL CHOSEONG RIEUL-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG HIEUH       # 
+3140 ; 1105 1112 ;     MA      # ( ㅀ → ᄅᄒ ) HANGUL LETTER RIEUL-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG HIEUH # →ᄚ→
+113B ; 1105 1112 ;     MA      # ( ᄻ → ᄅᄒ ) HANGUL CHOSEONG SIOS-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG HIEUH        # →ᄚ→
+11B6 ; 1105 1112 ;     MA      # ( ᆶ → ᄅᄒ ) HANGUL JONGSEONG RIEUL-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG HIEUH      # →ᄚ→
+D7F2 ; 1105 1112 ;     MA      # ( ퟲ → ᄅᄒ ) HANGUL JONGSEONG SIOS-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG HIEUH       # →ᆺᇂ→→ᄉᄒ→→ᄻ→→ᄚ→
+
+11D7 ; 1105 1140 ;     MA      # ( ᇗ → ᄅᅀ ) HANGUL JONGSEONG RIEUL-PANSIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PANSIOS  # →ᆯᇫ→
+316C ; 1105 1140 ;     MA      # ( ㅬ → ᄅᅀ ) HANGUL LETTER RIEUL-PANSIOS → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PANSIOS     # →ᇗ→→ᆯᇫ→
+
+D7DB ; 1105 114C ;     MA      # ( ퟛ → ᄅᅌ ) HANGUL JONGSEONG RIEUL-YESIEUNG → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG YESIEUNG        # →ᆯᇰ→
+
+11D9 ; 1105 1159 ;     MA      # ( ᇙ → ᄅᅙ ) HANGUL JONGSEONG RIEUL-YEORINHIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG YEORINHIEUH  # →ᆯᇹ→
+316D ; 1105 1159 ;     MA      # ( ㅭ → ᄅᅙ ) HANGUL LETTER RIEUL-YEORINHIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG YEORINHIEUH     # →ᇙ→→ᆯᇹ→
+
+D7DC ; 1105 1159 1112 ;        MA      # ( ퟜ → ᄅᅙᄒ ) HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH → HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG YEORINHIEUH, HANGUL CHOSEONG HIEUH  # →ᆯᇹᇂ→
+
+3141 ; 1106 ;  MA      # ( ㅁ → ᄆ ) HANGUL LETTER MIEUM → HANGUL CHOSEONG MIEUM # 
+11B7 ; 1106 ;  MA      # ( ᆷ → ᄆ ) HANGUL JONGSEONG MIEUM → HANGUL CHOSEONG MIEUM      # 
+
+A96F ; 1106 1100 ;     MA      # ( ꥯ → ᄆᄀ ) HANGUL CHOSEONG MIEUM-KIYEOK → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG KIYEOK     # 
+11DA ; 1106 1100 ;     MA      # ( ᇚ → ᄆᄀ ) HANGUL JONGSEONG MIEUM-KIYEOK → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG KIYEOK    # →ᆷᆨ→
+
+D7DE ; 1106 1102 ;     MA      # ( ퟞ → ᄆᄂ ) HANGUL JONGSEONG MIEUM-NIEUN → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG NIEUN      # →ᆷᆫ→
+
+D7DF ; 1106 1102 1102 ;        MA      # ( ퟟ → ᄆᄂᄂ ) HANGUL JONGSEONG MIEUM-SSANGNIEUN → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG NIEUN, HANGUL CHOSEONG NIEUN       # →ᆷᆫᆫ→
+
+A970 ; 1106 1103 ;     MA      # ( ꥰ → ᄆᄃ ) HANGUL CHOSEONG MIEUM-TIKEUT → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG TIKEUT     # 
+
+11DB ; 1106 1105 ;     MA      # ( ᇛ → ᄆᄅ ) HANGUL JONGSEONG MIEUM-RIEUL → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG RIEUL      # →ᆷᆯ→
+
+D7E0 ; 1106 1106 ;     MA      # ( ퟠ → ᄆᄆ ) HANGUL JONGSEONG SSANGMIEUM → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG MIEUM       # →ᆷᆷ→
+
+111C ; 1106 1107 ;     MA      # ( ᄜ → ᄆᄇ ) HANGUL CHOSEONG MIEUM-PIEUP → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PIEUP       # 
+316E ; 1106 1107 ;     MA      # ( ㅮ → ᄆᄇ ) HANGUL LETTER MIEUM-PIEUP → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PIEUP # →ᄜ→
+11DC ; 1106 1107 ;     MA      # ( ᇜ → ᄆᄇ ) HANGUL JONGSEONG MIEUM-PIEUP → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PIEUP      # →ᄜ→
+
+D7E1 ; 1106 1107 1109 ;        MA      # ( ퟡ → ᄆᄇᄉ ) HANGUL JONGSEONG MIEUM-PIEUP-SIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS        # →ᆷᆸᆺ→
+
+A971 ; 1106 1109 ;     MA      # ( ꥱ → ᄆᄉ ) HANGUL CHOSEONG MIEUM-SIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG SIOS # 
+11DD ; 1106 1109 ;     MA      # ( ᇝ → ᄆᄉ ) HANGUL JONGSEONG MIEUM-SIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG SIOS        # →ᆷᆺ→
+316F ; 1106 1109 ;     MA      # ( ㅯ → ᄆᄉ ) HANGUL LETTER MIEUM-SIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG SIOS   # →ᇝ→→ᆷᆺ→
+
+11DE ; 1106 1109 1109 ;        MA      # ( ᇞ → ᄆᄉᄉ ) HANGUL JONGSEONG MIEUM-SSANGSIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS  # →ᆷᆺᆺ→
+
+111D ; 1106 110B ;     MA      # ( ᄝ → ᄆᄋ ) HANGUL CHOSEONG KAPYEOUNMIEUM → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG IEUNG     # 
+3171 ; 1106 110B ;     MA      # ( ㅱ → ᄆᄋ ) HANGUL LETTER KAPYEOUNMIEUM → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG IEUNG       # →ᄝ→
+11E2 ; 1106 110B ;     MA      # ( ᇢ → ᄆᄋ ) HANGUL JONGSEONG KAPYEOUNMIEUM → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG IEUNG    # →ᄝ→
+
+D7E2 ; 1106 110C ;     MA      # ( ퟢ → ᄆᄌ ) HANGUL JONGSEONG MIEUM-CIEUC → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG CIEUC      # →ᆷᆽ→
+
+11E0 ; 1106 110E ;     MA      # ( ᇠ → ᄆᄎ ) HANGUL JONGSEONG MIEUM-CHIEUCH → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG CHIEUCH  # →ᆷᆾ→
+
+11E1 ; 1106 1112 ;     MA      # ( ᇡ → ᄆᄒ ) HANGUL JONGSEONG MIEUM-HIEUH → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG HIEUH      # →ᆷᇂ→
+
+11DF ; 1106 1140 ;     MA      # ( ᇟ → ᄆᅀ ) HANGUL JONGSEONG MIEUM-PANSIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PANSIOS  # →ᆷᇫ→
+3170 ; 1106 1140 ;     MA      # ( ㅰ → ᄆᅀ ) HANGUL LETTER MIEUM-PANSIOS → HANGUL CHOSEONG MIEUM, HANGUL CHOSEONG PANSIOS     # →ᇟ→→ᆷᇫ→
+
+3142 ; 1107 ;  MA      # ( ㅂ → ᄇ ) HANGUL LETTER PIEUP → HANGUL CHOSEONG PIEUP # 
+11B8 ; 1107 ;  MA      # ( ᆸ → ᄇ ) HANGUL JONGSEONG PIEUP → HANGUL CHOSEONG PIEUP      # 
+
+111E ; 1107 1100 ;     MA      # ( ᄞ → ᄇᄀ ) HANGUL CHOSEONG PIEUP-KIYEOK → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG KIYEOK     # 
+3172 ; 1107 1100 ;     MA      # ( ㅲ → ᄇᄀ ) HANGUL LETTER PIEUP-KIYEOK → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG KIYEOK       # →ᄞ→
+
+111F ; 1107 1102 ;     MA      # ( ᄟ → ᄇᄂ ) HANGUL CHOSEONG PIEUP-NIEUN → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG NIEUN       # 
+
+1120 ; 1107 1103 ;     MA      # ( ᄠ → ᄇᄃ ) HANGUL CHOSEONG PIEUP-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG TIKEUT     # 
+3173 ; 1107 1103 ;     MA      # ( ㅳ → ᄇᄃ ) HANGUL LETTER PIEUP-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG TIKEUT       # →ᄠ→
+D7E3 ; 1107 1103 ;     MA      # ( ퟣ → ᄇᄃ ) HANGUL JONGSEONG PIEUP-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG TIKEUT    # →ᆸᆮ→
+
+11E3 ; 1107 1105 ;     MA      # ( ᇣ → ᄇᄅ ) HANGUL JONGSEONG PIEUP-RIEUL → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG RIEUL      # →ᆸᆯ→
+
+D7E4 ; 1107 1105 1111 ;        MA      # ( ퟤ → ᄇᄅᄑ ) HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG RIEUL, HANGUL CHOSEONG PHIEUPH  # →ᆸᆯᇁ→
+
+D7E5 ; 1107 1106 ;     MA      # ( ퟥ → ᄇᄆ ) HANGUL JONGSEONG PIEUP-MIEUM → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG MIEUM      # →ᆸᆷ→
+
+1108 ; 1107 1107 ;     MA      # ( ᄈ → ᄇᄇ ) HANGUL CHOSEONG SSANGPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP        # 
+3143 ; 1107 1107 ;     MA      # ( ㅃ → ᄇᄇ ) HANGUL LETTER SSANGPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP  # →ᄈ→
+D7E6 ; 1107 1107 ;     MA      # ( ퟦ → ᄇᄇ ) HANGUL JONGSEONG SSANGPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP       # →ᆸᆸ→
+
+112C ; 1107 1107 110B ;        MA      # ( ᄬ → ᄇᄇᄋ ) HANGUL CHOSEONG KAPYEOUNSSANGPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG      # 
+3179 ; 1107 1107 110B ;        MA      # ( ㅹ → ᄇᄇᄋ ) HANGUL LETTER KAPYEOUNSSANGPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG        # →ᄬ→
+
+1121 ; 1107 1109 ;     MA      # ( ᄡ → ᄇᄉ ) HANGUL CHOSEONG PIEUP-SIOS → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS # 
+3144 ; 1107 1109 ;     MA      # ( ㅄ → ᄇᄉ ) HANGUL LETTER PIEUP-SIOS → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS   # →ᄡ→
+11B9 ; 1107 1109 ;     MA      # ( ᆹ → ᄇᄉ ) HANGUL JONGSEONG PIEUP-SIOS → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS        # →ᄡ→
+
+1122 ; 1107 1109 1100 ;        MA      # ( ᄢ → ᄇᄉᄀ ) HANGUL CHOSEONG PIEUP-SIOS-KIYEOK → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK       # 
+3174 ; 1107 1109 1100 ;        MA      # ( ㅴ → ᄇᄉᄀ ) HANGUL LETTER PIEUP-SIOS-KIYEOK → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK # →ᄢ→
+
+1123 ; 1107 1109 1103 ;        MA      # ( ᄣ → ᄇᄉᄃ ) HANGUL CHOSEONG PIEUP-SIOS-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT       # 
+3175 ; 1107 1109 1103 ;        MA      # ( ㅵ → ᄇᄉᄃ ) HANGUL LETTER PIEUP-SIOS-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT # →ᄣ→
+D7E7 ; 1107 1109 1103 ;        MA      # ( ퟧ → ᄇᄉᄃ ) HANGUL JONGSEONG PIEUP-SIOS-TIKEUT → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT      # →ᆸᆺᆮ→
+
+1124 ; 1107 1109 1107 ;        MA      # ( ᄤ → ᄇᄉᄇ ) HANGUL CHOSEONG PIEUP-SIOS-PIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP # 
+
+1125 ; 1107 1109 1109 ;        MA      # ( ᄥ → ᄇᄉᄉ ) HANGUL CHOSEONG PIEUP-SSANGSIOS → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS   # 
+
+1126 ; 1107 1109 110C ;        MA      # ( ᄦ → ᄇᄉᄌ ) HANGUL CHOSEONG PIEUP-SIOS-CIEUC → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CIEUC # 
+
+A972 ; 1107 1109 1110 ;        MA      # ( ꥲ → ᄇᄉᄐ ) HANGUL CHOSEONG PIEUP-SIOS-THIEUTH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG THIEUTH     # 
+
+112B ; 1107 110B ;     MA      # ( ᄫ → ᄇᄋ ) HANGUL CHOSEONG KAPYEOUNPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG     # 
+3178 ; 1107 110B ;     MA      # ( ㅸ → ᄇᄋ ) HANGUL LETTER KAPYEOUNPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG       # →ᄫ→
+11E6 ; 1107 110B ;     MA      # ( ᇦ → ᄇᄋ ) HANGUL JONGSEONG KAPYEOUNPIEUP → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG    # →ᄫ→
+
+1127 ; 1107 110C ;     MA      # ( ᄧ → ᄇᄌ ) HANGUL CHOSEONG PIEUP-CIEUC → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG CIEUC       # 
+3176 ; 1107 110C ;     MA      # ( ㅶ → ᄇᄌ ) HANGUL LETTER PIEUP-CIEUC → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG CIEUC # →ᄧ→
+D7E8 ; 1107 110C ;     MA      # ( ퟨ → ᄇᄌ ) HANGUL JONGSEONG PIEUP-CIEUC → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG CIEUC      # →ᆸᆽ→
+
+1128 ; 1107 110E ;     MA      # ( ᄨ → ᄇᄎ ) HANGUL CHOSEONG PIEUP-CHIEUCH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG CHIEUCH   # 
+D7E9 ; 1107 110E ;     MA      # ( ퟩ → ᄇᄎ ) HANGUL JONGSEONG PIEUP-CHIEUCH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG CHIEUCH  # →ᆸᆾ→
+
+A973 ; 1107 110F ;     MA      # ( ꥳ → ᄇᄏ ) HANGUL CHOSEONG PIEUP-KHIEUKH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG KHIEUKH   # 
+
+1129 ; 1107 1110 ;     MA      # ( ᄩ → ᄇᄐ ) HANGUL CHOSEONG PIEUP-THIEUTH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG THIEUTH   # 
+3177 ; 1107 1110 ;     MA      # ( ㅷ → ᄇᄐ ) HANGUL LETTER PIEUP-THIEUTH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG THIEUTH     # →ᄩ→
+
+112A ; 1107 1111 ;     MA      # ( ᄪ → ᄇᄑ ) HANGUL CHOSEONG PIEUP-PHIEUPH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PHIEUPH   # 
+11E4 ; 1107 1111 ;     MA      # ( ᇤ → ᄇᄑ ) HANGUL JONGSEONG PIEUP-PHIEUPH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PHIEUPH  # →ᆸᇁ→
+
+A974 ; 1107 1112 ;     MA      # ( ꥴ → ᄇᄒ ) HANGUL CHOSEONG PIEUP-HIEUH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG HIEUH       # 
+11E5 ; 1107 1112 ;     MA      # ( ᇥ → ᄇᄒ ) HANGUL JONGSEONG PIEUP-HIEUH → HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG HIEUH      # →ᆸᇂ→
+
+3145 ; 1109 ;  MA      # ( ㅅ → ᄉ ) HANGUL LETTER SIOS → HANGUL CHOSEONG SIOS   # 
+11BA ; 1109 ;  MA      # ( ᆺ → ᄉ ) HANGUL JONGSEONG SIOS → HANGUL CHOSEONG SIOS        # 
+
+112D ; 1109 1100 ;     MA      # ( ᄭ → ᄉᄀ ) HANGUL CHOSEONG SIOS-KIYEOK → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK       # 
+317A ; 1109 1100 ;     MA      # ( ㅺ → ᄉᄀ ) HANGUL LETTER SIOS-KIYEOK → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK # →ᄭ→
+11E7 ; 1109 1100 ;     MA      # ( ᇧ → ᄉᄀ ) HANGUL JONGSEONG SIOS-KIYEOK → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK      # →ᄭ→
+
+112E ; 1109 1102 ;     MA      # ( ᄮ → ᄉᄂ ) HANGUL CHOSEONG SIOS-NIEUN → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG NIEUN # 
+317B ; 1109 1102 ;     MA      # ( ㅻ → ᄉᄂ ) HANGUL LETTER SIOS-NIEUN → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG NIEUN   # →ᄮ→
+
+112F ; 1109 1103 ;     MA      # ( ᄯ → ᄉᄃ ) HANGUL CHOSEONG SIOS-TIKEUT → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT       # 
+317C ; 1109 1103 ;     MA      # ( ㅼ → ᄉᄃ ) HANGUL LETTER SIOS-TIKEUT → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT # →ᄯ→
+11E8 ; 1109 1103 ;     MA      # ( ᇨ → ᄉᄃ ) HANGUL JONGSEONG SIOS-TIKEUT → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT      # →ᄯ→
+
+1130 ; 1109 1105 ;     MA      # ( ᄰ → ᄉᄅ ) HANGUL CHOSEONG SIOS-RIEUL → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG RIEUL # 
+11E9 ; 1109 1105 ;     MA      # ( ᇩ → ᄉᄅ ) HANGUL JONGSEONG SIOS-RIEUL → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG RIEUL        # →ᄰ→
+
+1131 ; 1109 1106 ;     MA      # ( ᄱ → ᄉᄆ ) HANGUL CHOSEONG SIOS-MIEUM → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG MIEUM # 
+D7EA ; 1109 1106 ;     MA      # ( ퟪ → ᄉᄆ ) HANGUL JONGSEONG SIOS-MIEUM → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG MIEUM        # →ᆺᆷ→
+
+1132 ; 1109 1107 ;     MA      # ( ᄲ → ᄉᄇ ) HANGUL CHOSEONG SIOS-PIEUP → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP # 
+317D ; 1109 1107 ;     MA      # ( ㅽ → ᄉᄇ ) HANGUL LETTER SIOS-PIEUP → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP   # →ᄲ→
+11EA ; 1109 1107 ;     MA      # ( ᇪ → ᄉᄇ ) HANGUL JONGSEONG SIOS-PIEUP → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP        # →ᄲ→
+
+1133 ; 1109 1107 1100 ;        MA      # ( ᄳ → ᄉᄇᄀ ) HANGUL CHOSEONG SIOS-PIEUP-KIYEOK → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG KIYEOK       # 
+
+D7EB ; 1109 1107 110B ;        MA      # ( ퟫ → ᄉᄇᄋ ) HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG      # →ᆺᆸᆼ→
+
+110A ; 1109 1109 ;     MA      # ( ᄊ → ᄉᄉ ) HANGUL CHOSEONG SSANGSIOS → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS   # 
+3146 ; 1109 1109 ;     MA      # ( ㅆ → ᄉᄉ ) HANGUL LETTER SSANGSIOS → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS     # →ᄊ→
+11BB ; 1109 1109 ;     MA      # ( ᆻ → ᄉᄉ ) HANGUL JONGSEONG SSANGSIOS → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS  # →ᄊ→
+
+D7EC ; 1109 1109 1100 ;        MA      # ( ퟬ → ᄉᄉᄀ ) HANGUL JONGSEONG SSANGSIOS-KIYEOK → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KIYEOK        # →ᆺᆺᆨ→
+
+D7ED ; 1109 1109 1103 ;        MA      # ( ퟭ → ᄉᄉᄃ ) HANGUL JONGSEONG SSANGSIOS-TIKEUT → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG TIKEUT        # →ᆺᆺᆮ→
+
+A975 ; 1109 1109 1107 ;        MA      # ( ꥵ → ᄉᄉᄇ ) HANGUL CHOSEONG SSANGSIOS-PIEUP → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PIEUP   # 
+
+1134 ; 1109 1109 1109 ;        MA      # ( ᄴ → ᄉᄉᄉ ) HANGUL CHOSEONG SIOS-SSANGSIOS → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS, HANGUL CHOSEONG SIOS     # 
+
+1135 ; 1109 110B ;     MA      # ( ᄵ → ᄉᄋ ) HANGUL CHOSEONG SIOS-IEUNG → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG IEUNG # 
+
+1136 ; 1109 110C ;     MA      # ( ᄶ → ᄉᄌ ) HANGUL CHOSEONG SIOS-CIEUC → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CIEUC # 
+317E ; 1109 110C ;     MA      # ( ㅾ → ᄉᄌ ) HANGUL LETTER SIOS-CIEUC → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CIEUC   # →ᄶ→
+D7EF ; 1109 110C ;     MA      # ( ퟯ → ᄉᄌ ) HANGUL JONGSEONG SIOS-CIEUC → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CIEUC        # →ᆺᆽ→
+
+1137 ; 1109 110E ;     MA      # ( ᄷ → ᄉᄎ ) HANGUL CHOSEONG SIOS-CHIEUCH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CHIEUCH     # 
+D7F0 ; 1109 110E ;     MA      # ( ퟰ → ᄉᄎ ) HANGUL JONGSEONG SIOS-CHIEUCH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG CHIEUCH    # →ᆺᆾ→
+
+1138 ; 1109 110F ;     MA      # ( ᄸ → ᄉᄏ ) HANGUL CHOSEONG SIOS-KHIEUKH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG KHIEUKH     # 
+
+1139 ; 1109 1110 ;     MA      # ( ᄹ → ᄉᄐ ) HANGUL CHOSEONG SIOS-THIEUTH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG THIEUTH     # 
+D7F1 ; 1109 1110 ;     MA      # ( ퟱ → ᄉᄐ ) HANGUL JONGSEONG SIOS-THIEUTH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG THIEUTH    # →ᆺᇀ→
+
+113A ; 1109 1111 ;     MA      # ( ᄺ → ᄉᄑ ) HANGUL CHOSEONG SIOS-PHIEUPH → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PHIEUPH     # 
+
+D7EE ; 1109 1140 ;     MA      # ( ퟮ → ᄉᅀ ) HANGUL JONGSEONG SIOS-PANSIOS → HANGUL CHOSEONG SIOS, HANGUL CHOSEONG PANSIOS    # →ᆺᇫ→
+
+3147 ; 110B ;  MA      # ( ㅇ → ᄋ ) HANGUL LETTER IEUNG → HANGUL CHOSEONG IEUNG # 
+11BC ; 110B ;  MA      # ( ᆼ → ᄋ ) HANGUL JONGSEONG IEUNG → HANGUL CHOSEONG IEUNG      # 
+
+1141 ; 110B 1100 ;     MA      # ( ᅁ → ᄋᄀ ) HANGUL CHOSEONG IEUNG-KIYEOK → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG KIYEOK     # 
+11EC ; 110B 1100 ;     MA      # ( ᇬ → ᄋᄀ ) HANGUL JONGSEONG IEUNG-KIYEOK → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG KIYEOK    # →ᅁ→
+
+11ED ; 110B 1100 1100 ;        MA      # ( ᇭ → ᄋᄀᄀ ) HANGUL JONGSEONG IEUNG-SSANGKIYEOK → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG KIYEOK, HANGUL CHOSEONG KIYEOK    # →ᆼᆨᆨ→
+
+1142 ; 110B 1103 ;     MA      # ( ᅂ → ᄋᄃ ) HANGUL CHOSEONG IEUNG-TIKEUT → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG TIKEUT     # 
+
+A976 ; 110B 1105 ;     MA      # ( ꥶ → ᄋᄅ ) HANGUL CHOSEONG IEUNG-RIEUL → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG RIEUL       # 
+
+1143 ; 110B 1106 ;     MA      # ( ᅃ → ᄋᄆ ) HANGUL CHOSEONG IEUNG-MIEUM → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG MIEUM       # 
+
+1144 ; 110B 1107 ;     MA      # ( ᅄ → ᄋᄇ ) HANGUL CHOSEONG IEUNG-PIEUP → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG PIEUP       # 
+
+1145 ; 110B 1109 ;     MA      # ( ᅅ → ᄋᄉ ) HANGUL CHOSEONG IEUNG-SIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG SIOS # 
+11F1 ; 110B 1109 ;     MA      # ( ᇱ → ᄋᄉ ) HANGUL JONGSEONG YESIEUNG-SIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG SIOS     # →ᅅ→
+3182 ; 110B 1109 ;     MA      # ( ㆂ → ᄋᄉ ) HANGUL LETTER YESIEUNG-SIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG SIOS        # →ᇱ→→ᅅ→
+
+1147 ; 110B 110B ;     MA      # ( ᅇ → ᄋᄋ ) HANGUL CHOSEONG SSANGIEUNG → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG IEUNG        # 
+3180 ; 110B 110B ;     MA      # ( ㆀ → ᄋᄋ ) HANGUL LETTER SSANGIEUNG → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG IEUNG  # →ᅇ→
+11EE ; 110B 110B ;     MA      # ( ᇮ → ᄋᄋ ) HANGUL JONGSEONG SSANGIEUNG → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG IEUNG       # →ᅇ→
+
+1148 ; 110B 110C ;     MA      # ( ᅈ → ᄋᄌ ) HANGUL CHOSEONG IEUNG-CIEUC → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG CIEUC       # 
+
+1149 ; 110B 110E ;     MA      # ( ᅉ → ᄋᄎ ) HANGUL CHOSEONG IEUNG-CHIEUCH → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG CHIEUCH   # 
+
+11EF ; 110B 110F ;     MA      # ( ᇯ → ᄋᄏ ) HANGUL JONGSEONG IEUNG-KHIEUKH → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG KHIEUKH  # →ᆼᆿ→
+
+114A ; 110B 1110 ;     MA      # ( ᅊ → ᄋᄐ ) HANGUL CHOSEONG IEUNG-THIEUTH → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG THIEUTH   # 
+
+114B ; 110B 1111 ;     MA      # ( ᅋ → ᄋᄑ ) HANGUL CHOSEONG IEUNG-PHIEUPH → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG PHIEUPH   # 
+
+A977 ; 110B 1112 ;     MA      # ( ꥷ → ᄋᄒ ) HANGUL CHOSEONG IEUNG-HIEUH → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG HIEUH       # 
+
+1146 ; 110B 1140 ;     MA      # ( ᅆ → ᄋᅀ ) HANGUL CHOSEONG IEUNG-PANSIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG PANSIOS   # 
+11F2 ; 110B 1140 ;     MA      # ( ᇲ → ᄋᅀ ) HANGUL JONGSEONG YESIEUNG-PANSIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG PANSIOS       # →ᅆ→
+3183 ; 110B 1140 ;     MA      # ( ㆃ → ᄋᅀ ) HANGUL LETTER YESIEUNG-PANSIOS → HANGUL CHOSEONG IEUNG, HANGUL CHOSEONG PANSIOS  # →ᇲ→→ᅆ→
+
+3148 ; 110C ;  MA      # ( ㅈ → ᄌ ) HANGUL LETTER CIEUC → HANGUL CHOSEONG CIEUC # 
+11BD ; 110C ;  MA      # ( ᆽ → ᄌ ) HANGUL JONGSEONG CIEUC → HANGUL CHOSEONG CIEUC      # 
+
+D7F7 ; 110C 1107 ;     MA      # ( ퟷ → ᄌᄇ ) HANGUL JONGSEONG CIEUC-PIEUP → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG PIEUP      # →ᆽᆸ→
+
+D7F8 ; 110C 1107 1107 ;        MA      # ( ퟸ → ᄌᄇᄇ ) HANGUL JONGSEONG CIEUC-SSANGPIEUP → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG PIEUP       # →ᆽᆸᆸ→
+
+114D ; 110C 110B ;     MA      # ( ᅍ → ᄌᄋ ) HANGUL CHOSEONG CIEUC-IEUNG → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG IEUNG       # 
+
+110D ; 110C 110C ;     MA      # ( ᄍ → ᄌᄌ ) HANGUL CHOSEONG SSANGCIEUC → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG CIEUC        # 
+3149 ; 110C 110C ;     MA      # ( ㅉ → ᄌᄌ ) HANGUL LETTER SSANGCIEUC → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG CIEUC  # →ᄍ→
+D7F9 ; 110C 110C ;     MA      # ( ퟹ → ᄌᄌ ) HANGUL JONGSEONG SSANGCIEUC → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG CIEUC       # →ᆽᆽ→
+
+A978 ; 110C 110C 1112 ;        MA      # ( ꥸ → ᄌᄌᄒ ) HANGUL CHOSEONG SSANGCIEUC-HIEUH → HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG CIEUC, HANGUL CHOSEONG HIEUH        # 
+
+314A ; 110E ;  MA      # ( ㅊ → ᄎ ) HANGUL LETTER CHIEUCH → HANGUL CHOSEONG CHIEUCH     # 
+11BE ; 110E ;  MA      # ( ᆾ → ᄎ ) HANGUL JONGSEONG CHIEUCH → HANGUL CHOSEONG CHIEUCH  # 
+
+1152 ; 110E 110F ;     MA      # ( ᅒ → ᄎᄏ ) HANGUL CHOSEONG CHIEUCH-KHIEUKH → HANGUL CHOSEONG CHIEUCH, HANGUL CHOSEONG KHIEUKH       # 
+
+1153 ; 110E 1112 ;     MA      # ( ᅓ → ᄎᄒ ) HANGUL CHOSEONG CHIEUCH-HIEUH → HANGUL CHOSEONG CHIEUCH, HANGUL CHOSEONG HIEUH   # 
+
+314B ; 110F ;  MA      # ( ㅋ → ᄏ ) HANGUL LETTER KHIEUKH → HANGUL CHOSEONG KHIEUKH     # 
+11BF ; 110F ;  MA      # ( ᆿ → ᄏ ) HANGUL JONGSEONG KHIEUKH → HANGUL CHOSEONG KHIEUKH  # 
+
+314C ; 1110 ;  MA      # ( ㅌ → ᄐ ) HANGUL LETTER THIEUTH → HANGUL CHOSEONG THIEUTH     # 
+11C0 ; 1110 ;  MA      # ( ᇀ → ᄐ ) HANGUL JONGSEONG THIEUTH → HANGUL CHOSEONG THIEUTH  # 
+
+A979 ; 1110 1110 ;     MA      # ( ꥹ → ᄐᄐ ) HANGUL CHOSEONG SSANGTHIEUTH → HANGUL CHOSEONG THIEUTH, HANGUL CHOSEONG THIEUTH  # 
+
+314D ; 1111 ;  MA      # ( ㅍ → ᄑ ) HANGUL LETTER PHIEUPH → HANGUL CHOSEONG PHIEUPH     # 
+11C1 ; 1111 ;  MA      # ( ᇁ → ᄑ ) HANGUL JONGSEONG PHIEUPH → HANGUL CHOSEONG PHIEUPH  # 
+
+1156 ; 1111 1107 ;     MA      # ( ᅖ → ᄑᄇ ) HANGUL CHOSEONG PHIEUPH-PIEUP → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG PIEUP   # 
+11F3 ; 1111 1107 ;     MA      # ( ᇳ → ᄑᄇ ) HANGUL JONGSEONG PHIEUPH-PIEUP → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG PIEUP  # →ᅖ→
+
+D7FA ; 1111 1109 ;     MA      # ( ퟺ → ᄑᄉ ) HANGUL JONGSEONG PHIEUPH-SIOS → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG SIOS    # →ᇁᆺ→
+
+1157 ; 1111 110B ;     MA      # ( ᅗ → ᄑᄋ ) HANGUL CHOSEONG KAPYEOUNPHIEUPH → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG IEUNG # 
+3184 ; 1111 110B ;     MA      # ( ㆄ → ᄑᄋ ) HANGUL LETTER KAPYEOUNPHIEUPH → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG IEUNG   # →ᅗ→
+11F4 ; 1111 110B ;     MA      # ( ᇴ → ᄑᄋ ) HANGUL JONGSEONG KAPYEOUNPHIEUPH → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG IEUNG        # →ᅗ→
+
+D7FB ; 1111 1110 ;     MA      # ( ퟻ → ᄑᄐ ) HANGUL JONGSEONG PHIEUPH-THIEUTH → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG THIEUTH      # →ᇁᇀ→
+
+A97A ; 1111 1112 ;     MA      # ( ꥺ → ᄑᄒ ) HANGUL CHOSEONG PHIEUPH-HIEUH → HANGUL CHOSEONG PHIEUPH, HANGUL CHOSEONG HIEUH   # 
+
+314E ; 1112 ;  MA      # ( ㅎ → ᄒ ) HANGUL LETTER HIEUH → HANGUL CHOSEONG HIEUH # 
+11C2 ; 1112 ;  MA      # ( ᇂ → ᄒ ) HANGUL JONGSEONG HIEUH → HANGUL CHOSEONG HIEUH      # 
+
+11F5 ; 1112 1102 ;     MA      # ( ᇵ → ᄒᄂ ) HANGUL JONGSEONG HIEUH-NIEUN → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG NIEUN      # →ᇂᆫ→
+
+11F6 ; 1112 1105 ;     MA      # ( ᇶ → ᄒᄅ ) HANGUL JONGSEONG HIEUH-RIEUL → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG RIEUL      # →ᇂᆯ→
+
+11F7 ; 1112 1106 ;     MA      # ( ᇷ → ᄒᄆ ) HANGUL JONGSEONG HIEUH-MIEUM → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG MIEUM      # →ᇂᆷ→
+
+11F8 ; 1112 1107 ;     MA      # ( ᇸ → ᄒᄇ ) HANGUL JONGSEONG HIEUH-PIEUP → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG PIEUP      # →ᇂᆸ→
+
+A97B ; 1112 1109 ;     MA      # ( ꥻ → ᄒᄉ ) HANGUL CHOSEONG HIEUH-SIOS → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG SIOS # 
+
+1158 ; 1112 1112 ;     MA      # ( ᅘ → ᄒᄒ ) HANGUL CHOSEONG SSANGHIEUH → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG HIEUH        # 
+3185 ; 1112 1112 ;     MA      # ( ㆅ → ᄒᄒ ) HANGUL LETTER SSANGHIEUH → HANGUL CHOSEONG HIEUH, HANGUL CHOSEONG HIEUH  # →ᅘ→
+
+113D ; 113C 113C ;     MA      # ( ᄽ → ᄼᄼ ) HANGUL CHOSEONG CHITUEUMSSANGSIOS → HANGUL CHOSEONG CHITUEUMSIOS, HANGUL CHOSEONG CHITUEUMSIOS   # 
+
+113F ; 113E 113E ;     MA      # ( ᄿ → ᄾᄾ ) HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS → HANGUL CHOSEONG CEONGCHIEUMSIOS, HANGUL CHOSEONG CEONGCHIEUMSIOS  # 
+
+317F ; 1140 ;  MA      # ( ㅿ → ᅀ ) HANGUL LETTER PANSIOS → HANGUL CHOSEONG PANSIOS     # 
+11EB ; 1140 ;  MA      # ( ᇫ → ᅀ ) HANGUL JONGSEONG PANSIOS → HANGUL CHOSEONG PANSIOS  # 
+
+D7F3 ; 1140 1107 ;     MA      # ( ퟳ → ᅀᄇ ) HANGUL JONGSEONG PANSIOS-PIEUP → HANGUL CHOSEONG PANSIOS, HANGUL CHOSEONG PIEUP  # →ᇫᆸ→
+
+D7F4 ; 1140 1107 110B ;        MA      # ( ퟴ → ᅀᄇᄋ ) HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP → HANGUL CHOSEONG PANSIOS, HANGUL CHOSEONG PIEUP, HANGUL CHOSEONG IEUNG        # →ᇫᆸᆼ→
+
+3181 ; 114C ;  MA      # ( ㆁ → ᅌ ) HANGUL LETTER YESIEUNG → HANGUL CHOSEONG YESIEUNG   # 
+11F0 ; 114C ;  MA      # ( ᇰ → ᅌ ) HANGUL JONGSEONG YESIEUNG → HANGUL CHOSEONG YESIEUNG        # 
+
+D7F5 ; 114C 1106 ;     MA      # ( ퟵ → ᅌᄆ ) HANGUL JONGSEONG YESIEUNG-MIEUM → HANGUL CHOSEONG YESIEUNG, HANGUL CHOSEONG MIEUM        # →ᇰᆷ→
+
+D7F6 ; 114C 1112 ;     MA      # ( ퟶ → ᅌᄒ ) HANGUL JONGSEONG YESIEUNG-HIEUH → HANGUL CHOSEONG YESIEUNG, HANGUL CHOSEONG HIEUH        # →ᇰᇂ→
+
+114F ; 114E 114E ;     MA      # ( ᅏ → ᅎᅎ ) HANGUL CHOSEONG CHITUEUMSSANGCIEUC → HANGUL CHOSEONG CHITUEUMCIEUC, HANGUL CHOSEONG CHITUEUMCIEUC        # 
+
+1151 ; 1150 1150 ;     MA      # ( ᅑ → ᅐᅐ ) HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC → HANGUL CHOSEONG CEONGCHIEUMCIEUC, HANGUL CHOSEONG CEONGCHIEUMCIEUC       # 
+
+3186 ; 1159 ;  MA      # ( ㆆ → ᅙ ) HANGUL LETTER YEORINHIEUH → HANGUL CHOSEONG YEORINHIEUH     # 
+11F9 ; 1159 ;  MA      # ( ᇹ → ᅙ ) HANGUL JONGSEONG YEORINHIEUH → HANGUL CHOSEONG YEORINHIEUH  # 
+
+A97C ; 1159 1159 ;     MA      # ( ꥼ → ᅙᅙ ) HANGUL CHOSEONG SSANGYEORINHIEUH → HANGUL CHOSEONG YEORINHIEUH, HANGUL CHOSEONG YEORINHIEUH      # 
+
+3164 ; 1160 ;  MA      # (  →  ) HANGUL FILLER → HANGUL JUNGSEONG FILLER   # 
+
+314F ; 1161 ;  MA      # ( ㅏ → ᅡ ) HANGUL LETTER A → HANGUL JUNGSEONG A        # 
+
+1176 ; 1161 1169 ;     MA      # ( ᅶ → ᅡᅩ ) HANGUL JUNGSEONG A-O → HANGUL JUNGSEONG A, HANGUL JUNGSEONG O    # 
+
+1177 ; 1161 116E ;     MA      # ( ᅷ → ᅡᅮ ) HANGUL JUNGSEONG A-U → HANGUL JUNGSEONG A, HANGUL JUNGSEONG U    # 
+
+11A3 ; 1161 1173 ;     MA      # ( ᆣ → ᅡᅳ ) HANGUL JUNGSEONG A-EU → HANGUL JUNGSEONG A, HANGUL JUNGSEONG EU  # 
+
+1162 ; 1161 1175 ;     MA      # ( ᅢ → ᅡᅵ ) HANGUL JUNGSEONG AE → HANGUL JUNGSEONG A, HANGUL JUNGSEONG I     # 
+3150 ; 1161 1175 ;     MA      # ( ㅐ → ᅡᅵ ) HANGUL LETTER AE → HANGUL JUNGSEONG A, HANGUL JUNGSEONG I        # →ᅢ→
+
+3151 ; 1163 ;  MA      # ( ㅑ → ᅣ ) HANGUL LETTER YA → HANGUL JUNGSEONG YA      # 
+
+1178 ; 1163 1169 ;     MA      # ( ᅸ → ᅣᅩ ) HANGUL JUNGSEONG YA-O → HANGUL JUNGSEONG YA, HANGUL JUNGSEONG O  # 
+
+1179 ; 1163 116D ;     MA      # ( ᅹ → ᅣᅭ ) HANGUL JUNGSEONG YA-YO → HANGUL JUNGSEONG YA, HANGUL JUNGSEONG YO        # 
+
+11A4 ; 1163 116E ;     MA      # ( ᆤ → ᅣᅮ ) HANGUL JUNGSEONG YA-U → HANGUL JUNGSEONG YA, HANGUL JUNGSEONG U  # 
+
+1164 ; 1163 1175 ;     MA      # ( ᅤ → ᅣᅵ ) HANGUL JUNGSEONG YAE → HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I   # 
+3152 ; 1163 1175 ;     MA      # ( ㅒ → ᅣᅵ ) HANGUL LETTER YAE → HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I      # →ᅤ→
+
+3153 ; 1165 ;  MA      # ( ㅓ → ᅥ ) HANGUL LETTER EO → HANGUL JUNGSEONG EO      # 
+
+117A ; 1165 1169 ;     MA      # ( ᅺ → ᅥᅩ ) HANGUL JUNGSEONG EO-O → HANGUL JUNGSEONG EO, HANGUL JUNGSEONG O  # 
+
+117B ; 1165 116E ;     MA      # ( ᅻ → ᅥᅮ ) HANGUL JUNGSEONG EO-U → HANGUL JUNGSEONG EO, HANGUL JUNGSEONG U  # 
+
+117C ; 1165 1173 ;     MA      # ( ᅼ → ᅥᅳ ) HANGUL JUNGSEONG EO-EU → HANGUL JUNGSEONG EO, HANGUL JUNGSEONG EU        # 
+
+1166 ; 1165 1175 ;     MA      # ( ᅦ → ᅥᅵ ) HANGUL JUNGSEONG E → HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I     # 
+3154 ; 1165 1175 ;     MA      # ( ㅔ → ᅥᅵ ) HANGUL LETTER E → HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I        # →ᅦ→
+
+3155 ; 1167 ;  MA      # ( ㅕ → ᅧ ) HANGUL LETTER YEO → HANGUL JUNGSEONG YEO    # 
+
+11A5 ; 1167 1163 ;     MA      # ( ᆥ → ᅧᅣ ) HANGUL JUNGSEONG YEO-YA → HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG YA      # 
+
+117D ; 1167 1169 ;     MA      # ( ᅽ → ᅧᅩ ) HANGUL JUNGSEONG YEO-O → HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG O        # 
+
+117E ; 1167 116E ;     MA      # ( ᅾ → ᅧᅮ ) HANGUL JUNGSEONG YEO-U → HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG U        # 
+
+1168 ; 1167 1175 ;     MA      # ( ᅨ → ᅧᅵ ) HANGUL JUNGSEONG YE → HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I   # 
+3156 ; 1167 1175 ;     MA      # ( ㅖ → ᅧᅵ ) HANGUL LETTER YE → HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I      # →ᅨ→
+
+3157 ; 1169 ;  MA      # ( ㅗ → ᅩ ) HANGUL LETTER O → HANGUL JUNGSEONG O        # 
+
+116A ; 1169 1161 ;     MA      # ( ᅪ → ᅩᅡ ) HANGUL JUNGSEONG WA → HANGUL JUNGSEONG O, HANGUL JUNGSEONG A     # 
+3158 ; 1169 1161 ;     MA      # ( ㅘ → ᅩᅡ ) HANGUL LETTER WA → HANGUL JUNGSEONG O, HANGUL JUNGSEONG A        # →ᅪ→
+
+116B ; 1169 1161 1175 ;        MA      # ( ᅫ → ᅩᅡᅵ ) HANGUL JUNGSEONG WAE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG A, HANGUL JUNGSEONG I     # 
+3159 ; 1169 1161 1175 ;        MA      # ( ㅙ → ᅩᅡᅵ ) HANGUL LETTER WAE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG A, HANGUL JUNGSEONG I        # →ᅫ→
+
+11A6 ; 1169 1163 ;     MA      # ( ᆦ → ᅩᅣ ) HANGUL JUNGSEONG O-YA → HANGUL JUNGSEONG O, HANGUL JUNGSEONG YA  # 
+
+11A7 ; 1169 1163 1175 ;        MA      # ( ᆧ → ᅩᅣᅵ ) HANGUL JUNGSEONG O-YAE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I  # 
+
+117F ; 1169 1165 ;     MA      # ( ᅿ → ᅩᅥ ) HANGUL JUNGSEONG O-EO → HANGUL JUNGSEONG O, HANGUL JUNGSEONG EO  # 
+
+1180 ; 1169 1165 1175 ;        MA      # ( ᆀ → ᅩᅥᅵ ) HANGUL JUNGSEONG O-E → HANGUL JUNGSEONG O, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I    # 
+
+D7B0 ; 1169 1167 ;     MA      # ( ힰ → ᅩᅧ ) HANGUL JUNGSEONG O-YEO → HANGUL JUNGSEONG O, HANGUL JUNGSEONG YEO        # 
+
+1181 ; 1169 1167 1175 ;        MA      # ( ᆁ → ᅩᅧᅵ ) HANGUL JUNGSEONG O-YE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I  # 
+
+1182 ; 1169 1169 ;     MA      # ( ᆂ → ᅩᅩ ) HANGUL JUNGSEONG O-O → HANGUL JUNGSEONG O, HANGUL JUNGSEONG O    # 
+
+D7B1 ; 1169 1169 1175 ;        MA      # ( ힱ → ᅩᅩᅵ ) HANGUL JUNGSEONG O-O-I → HANGUL JUNGSEONG O, HANGUL JUNGSEONG O, HANGUL JUNGSEONG I   # 
+
+1183 ; 1169 116E ;     MA      # ( ᆃ → ᅩᅮ ) HANGUL JUNGSEONG O-U → HANGUL JUNGSEONG O, HANGUL JUNGSEONG U    # 
+
+116C ; 1169 1175 ;     MA      # ( ᅬ → ᅩᅵ ) HANGUL JUNGSEONG OE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG I     # 
+315A ; 1169 1175 ;     MA      # ( ㅚ → ᅩᅵ ) HANGUL LETTER OE → HANGUL JUNGSEONG O, HANGUL JUNGSEONG I        # →ᅬ→
+
+315B ; 116D ;  MA      # ( ㅛ → ᅭ ) HANGUL LETTER YO → HANGUL JUNGSEONG YO      # 
+
+D7B2 ; 116D 1161 ;     MA      # ( ힲ → ᅭᅡ ) HANGUL JUNGSEONG YO-A → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG A  # 
+
+D7B3 ; 116D 1161 1175 ;        MA      # ( ힳ → ᅭᅡᅵ ) HANGUL JUNGSEONG YO-AE → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG A, HANGUL JUNGSEONG I  # 
+
+1184 ; 116D 1163 ;     MA      # ( ᆄ → ᅭᅣ ) HANGUL JUNGSEONG YO-YA → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG YA        # 
+3187 ; 116D 1163 ;     MA      # ( ㆇ → ᅭᅣ ) HANGUL LETTER YO-YA → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG YA   # →ᆄ→
+1186 ; 116D 1163 ;     MA      # ( ᆆ → ᅭᅣ ) HANGUL JUNGSEONG YO-YEO → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG YA       # →ᆄ→
+
+1185 ; 116D 1163 1175 ;        MA      # ( ᆅ → ᅭᅣᅵ ) HANGUL JUNGSEONG YO-YAE → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I        # 
+3188 ; 116D 1163 1175 ;        MA      # ( ㆈ → ᅭᅣᅵ ) HANGUL LETTER YO-YAE → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I   # →ᆅ→
+
+D7B4 ; 116D 1165 ;     MA      # ( ힴ → ᅭᅥ ) HANGUL JUNGSEONG YO-EO → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG EO        # 
+
+1187 ; 116D 1169 ;     MA      # ( ᆇ → ᅭᅩ ) HANGUL JUNGSEONG YO-O → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG O  # 
+
+1188 ; 116D 1175 ;     MA      # ( ᆈ → ᅭᅵ ) HANGUL JUNGSEONG YO-I → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG I  # 
+3189 ; 116D 1175 ;     MA      # ( ㆉ → ᅭᅵ ) HANGUL LETTER YO-I → HANGUL JUNGSEONG YO, HANGUL JUNGSEONG I     # →ᆈ→
+
+315C ; 116E ;  MA      # ( ㅜ → ᅮ ) HANGUL LETTER U → HANGUL JUNGSEONG U        # 
+
+1189 ; 116E 1161 ;     MA      # ( ᆉ → ᅮᅡ ) HANGUL JUNGSEONG U-A → HANGUL JUNGSEONG U, HANGUL JUNGSEONG A    # 
+
+118A ; 116E 1161 1175 ;        MA      # ( ᆊ → ᅮᅡᅵ ) HANGUL JUNGSEONG U-AE → HANGUL JUNGSEONG U, HANGUL JUNGSEONG A, HANGUL JUNGSEONG I    # 
+
+116F ; 116E 1165 ;     MA      # ( ᅯ → ᅮᅥ ) HANGUL JUNGSEONG WEO → HANGUL JUNGSEONG U, HANGUL JUNGSEONG EO   # 
+315D ; 116E 1165 ;     MA      # ( ㅝ → ᅮᅥ ) HANGUL LETTER WEO → HANGUL JUNGSEONG U, HANGUL JUNGSEONG EO      # →ᅯ→
+
+118B ; 116E 1165 1173 ;        MA      # ( ᆋ → ᅮᅥᅳ ) HANGUL JUNGSEONG U-EO-EU → HANGUL JUNGSEONG U, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG EU       # 
+
+1170 ; 116E 1165 1175 ;        MA      # ( ᅰ → ᅮᅥᅵ ) HANGUL JUNGSEONG WE → HANGUL JUNGSEONG U, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I     # 
+315E ; 116E 1165 1175 ;        MA      # ( ㅞ → ᅮᅥᅵ ) HANGUL LETTER WE → HANGUL JUNGSEONG U, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I        # →ᅰ→
+
+D7B5 ; 116E 1167 ;     MA      # ( ힵ → ᅮᅧ ) HANGUL JUNGSEONG U-YEO → HANGUL JUNGSEONG U, HANGUL JUNGSEONG YEO        # 
+
+118C ; 116E 1167 1175 ;        MA      # ( ᆌ → ᅮᅧᅵ ) HANGUL JUNGSEONG U-YE → HANGUL JUNGSEONG U, HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I  # 
+
+118D ; 116E 116E ;     MA      # ( ᆍ → ᅮᅮ ) HANGUL JUNGSEONG U-U → HANGUL JUNGSEONG U, HANGUL JUNGSEONG U    # 
+
+1171 ; 116E 1175 ;     MA      # ( ᅱ → ᅮᅵ ) HANGUL JUNGSEONG WI → HANGUL JUNGSEONG U, HANGUL JUNGSEONG I     # 
+315F ; 116E 1175 ;     MA      # ( ㅟ → ᅮᅵ ) HANGUL LETTER WI → HANGUL JUNGSEONG U, HANGUL JUNGSEONG I        # →ᅱ→
+
+D7B6 ; 116E 1175 1175 ;        MA      # ( ힶ → ᅮᅵᅵ ) HANGUL JUNGSEONG U-I-I → HANGUL JUNGSEONG U, HANGUL JUNGSEONG I, HANGUL JUNGSEONG I   # 
+
+3160 ; 1172 ;  MA      # ( ㅠ → ᅲ ) HANGUL LETTER YU → HANGUL JUNGSEONG YU      # 
+
+118E ; 1172 1161 ;     MA      # ( ᆎ → ᅲᅡ ) HANGUL JUNGSEONG YU-A → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG A  # 
+
+D7B7 ; 1172 1161 1175 ;        MA      # ( ힷ → ᅲᅡᅵ ) HANGUL JUNGSEONG YU-AE → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG A, HANGUL JUNGSEONG I  # 
+
+118F ; 1172 1165 ;     MA      # ( ᆏ → ᅲᅥ ) HANGUL JUNGSEONG YU-EO → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG EO        # 
+
+1190 ; 1172 1165 1175 ;        MA      # ( ᆐ → ᅲᅥᅵ ) HANGUL JUNGSEONG YU-E → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I  # 
+
+1191 ; 1172 1167 ;     MA      # ( ᆑ → ᅲᅧ ) HANGUL JUNGSEONG YU-YEO → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG YEO      # 
+318A ; 1172 1167 ;     MA      # ( ㆊ → ᅲᅧ ) HANGUL LETTER YU-YEO → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG YEO # →ᆑ→
+
+1192 ; 1172 1167 1175 ;        MA      # ( ᆒ → ᅲᅧᅵ ) HANGUL JUNGSEONG YU-YE → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I        # 
+318B ; 1172 1167 1175 ;        MA      # ( ㆋ → ᅲᅧᅵ ) HANGUL LETTER YU-YE → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I   # →ᆒ→
+
+D7B8 ; 1172 1169 ;     MA      # ( ힸ → ᅲᅩ ) HANGUL JUNGSEONG YU-O → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG O  # 
+
+1193 ; 1172 116E ;     MA      # ( ᆓ → ᅲᅮ ) HANGUL JUNGSEONG YU-U → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG U  # 
+
+1194 ; 1172 1175 ;     MA      # ( ᆔ → ᅲᅵ ) HANGUL JUNGSEONG YU-I → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG I  # 
+318C ; 1172 1175 ;     MA      # ( ㆌ → ᅲᅵ ) HANGUL LETTER YU-I → HANGUL JUNGSEONG YU, HANGUL JUNGSEONG I     # →ᆔ→
+
+D7B9 ; 1173 1161 ;     MA      # ( ힹ → ᅳᅡ ) HANGUL JUNGSEONG EU-A → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG A  # 
+
+D7BA ; 1173 1165 ;     MA      # ( ힺ → ᅳᅥ ) HANGUL JUNGSEONG EU-EO → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG EO        # 
+
+D7BB ; 1173 1165 1175 ;        MA      # ( ힻ → ᅳᅥᅵ ) HANGUL JUNGSEONG EU-E → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I  # 
+
+D7BC ; 1173 1169 ;     MA      # ( ힼ → ᅳᅩ ) HANGUL JUNGSEONG EU-O → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG O  # 
+
+1195 ; 1173 116E ;     MA      # ( ᆕ → ᅳᅮ ) HANGUL JUNGSEONG EU-U → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG U  # 
+
+1197 ; 1173 1175 116E ;        MA      # ( ᆗ → ᅳᅵᅮ ) HANGUL JUNGSEONG YI-U → HANGUL JUNGSEONG EU, HANGUL JUNGSEONG I, HANGUL JUNGSEONG U   # 
+
+1198 ; 1175 1161 ;     MA      # ( ᆘ → ᅵᅡ ) HANGUL JUNGSEONG I-A → HANGUL JUNGSEONG I, HANGUL JUNGSEONG A    # 
+
+1199 ; 1175 1163 ;     MA      # ( ᆙ → ᅵᅣ ) HANGUL JUNGSEONG I-YA → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YA  # 
+
+D7BD ; 1175 1163 1169 ;        MA      # ( ힽ → ᅵᅣᅩ ) HANGUL JUNGSEONG I-YA-O → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YA, HANGUL JUNGSEONG O # 
+
+D7BE ; 1175 1163 1175 ;        MA      # ( ힾ → ᅵᅣᅵ ) HANGUL JUNGSEONG I-YAE → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YA, HANGUL JUNGSEONG I  # 
+
+D7BF ; 1175 1167 ;     MA      # ( ힿ → ᅵᅧ ) HANGUL JUNGSEONG I-YEO → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YEO        # 
+
+D7C0 ; 1175 1167 1175 ;        MA      # ( ퟀ → ᅵᅧᅵ ) HANGUL JUNGSEONG I-YE → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YEO, HANGUL JUNGSEONG I  # 
+
+119A ; 1175 1169 ;     MA      # ( ᆚ → ᅵᅩ ) HANGUL JUNGSEONG I-O → HANGUL JUNGSEONG I, HANGUL JUNGSEONG O    # 
+
+D7C1 ; 1175 1169 1175 ;        MA      # ( ퟁ → ᅵᅩᅵ ) HANGUL JUNGSEONG I-O-I → HANGUL JUNGSEONG I, HANGUL JUNGSEONG O, HANGUL JUNGSEONG I   # 
+
+D7C2 ; 1175 116D ;     MA      # ( ퟂ → ᅵᅭ ) HANGUL JUNGSEONG I-YO → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YO  # 
+
+119B ; 1175 116E ;     MA      # ( ᆛ → ᅵᅮ ) HANGUL JUNGSEONG I-U → HANGUL JUNGSEONG I, HANGUL JUNGSEONG U    # 
+
+D7C3 ; 1175 1172 ;     MA      # ( ퟃ → ᅵᅲ ) HANGUL JUNGSEONG I-YU → HANGUL JUNGSEONG I, HANGUL JUNGSEONG YU  # 
+
+119D ; 1175 119E ;     MA      # ( ᆝ → ᅵᆞ ) HANGUL JUNGSEONG I-ARAEA → HANGUL JUNGSEONG I, HANGUL JUNGSEONG ARAEA    # 
+
+318D ; 119E ;  MA      # ( ㆍ → ᆞ ) HANGUL LETTER ARAEA → HANGUL JUNGSEONG ARAEA        # 
+
+D7C5 ; 119E 1161 ;     MA      # ( ퟅ → ᆞᅡ ) HANGUL JUNGSEONG ARAEA-A → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG A    # 
+
+119F ; 119E 1165 ;     MA      # ( ᆟ → ᆞᅥ ) HANGUL JUNGSEONG ARAEA-EO → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG EO  # 
+
+D7C6 ; 119E 1165 1175 ;        MA      # ( ퟆ → ᆞᅥᅵ ) HANGUL JUNGSEONG ARAEA-E → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG EO, HANGUL JUNGSEONG I    # 
+
+11A0 ; 119E 116E ;     MA      # ( ᆠ → ᆞᅮ ) HANGUL JUNGSEONG ARAEA-U → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG U    # 
+
+11A1 ; 119E 1175 ;     MA      # ( ᆡ → ᆞᅵ ) HANGUL JUNGSEONG ARAEA-I → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG I    # 
+318E ; 119E 1175 ;     MA      # ( ㆎ → ᆞᅵ ) HANGUL LETTER ARAEAE → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG I        # →ᆡ→
+
+11A2 ; 119E 119E ;     MA      # ( ᆢ → ᆞᆞ ) HANGUL JUNGSEONG SSANGARAEA → HANGUL JUNGSEONG ARAEA, HANGUL JUNGSEONG ARAEA     # 
+
+30D8 ; 3078 ;  MA      # ( ヘ → へ ) KATAKANA LETTER HE → HIRAGANA LETTER HE     # 
+
+29C4 ; 303C ;  MA      #* ( ⧄ → 〼 ) SQUARED RISING DIAGONAL SLASH → MASU MARK  # 
+
+A49E ; A04A ;  MA      #* ( ꒞ → ꁊ ) YI RADICAL PUT → YI SYLLABLE PUT   # 
+
+A4AC ; A050 ;  MA      #* ( ꒬ → ꁐ ) YI RADICAL PYT → YI SYLLABLE PYT   # 
+
+A49C ; A0C0 ;  MA      #* ( ꒜ → ꃀ ) YI RADICAL MOP → YI SYLLABLE MOP   # 
+
+A4A8 ; A132 ;  MA      #* ( ꒨ → ꄲ ) YI RADICAL TU → YI SYLLABLE TU     # 
+
+A4BF ; A259 ;  MA      #* ( ꒿ → ꉙ ) YI RADICAL HXOP → YI SYLLABLE HXOP # 
+
+A4BE ; A2B1 ;  MA      #* ( ꒾ → ꊱ ) YI RADICAL CIP → YI SYLLABLE CIP   # 
+
+A494 ; A2CD ;  MA      #* ( ꒔ → ꋍ ) YI RADICAL CYP → YI SYLLABLE CYP   # 
+
+A4C0 ; A3AB ;  MA      #* ( ꓀ → ꎫ ) YI RADICAL SHAT → YI SYLLABLE SHAT # 
+
+A4C2 ; A3B5 ;  MA      #* ( ꓂ → ꎵ ) YI RADICAL SHOP → YI SYLLABLE SHOP # 
+
+A4BA ; A3BF ;  MA      #* ( ꒺ → ꎿ ) YI RADICAL SHUR → YI SYLLABLE SHUR # 
+
+A4B0 ; A3C2 ;  MA      #* ( ꒰ → ꏂ ) YI RADICAL SHY → YI SYLLABLE SHY   # 
+
+A4A7 ; A458 ;  MA      #* ( ꒧ → ꑘ ) YI RADICAL NYOP → YI SYLLABLE NYOP # 
+
+22A5 ; A4D5 ;  MA      #* ( ⊥ → ꓕ ) UP TACK → LISU LETTER THA  # 
+27C2 ; A4D5 ;  MA      #* ( ⟂ → ꓕ ) PERPENDICULAR → LISU LETTER THA    # →⊥→
+
+2141 ; A4E8 ;  MA      #* ( ⅁ → ꓨ ) TURNED SANS-SERIF CAPITAL G → LISU LETTER HHA      # 
+
+2200 ; A4EF ;  MA      #* ( ∀ → ꓯ ) FOR ALL → LISU LETTER AE   # 
+
+2229 ; A4F5 ;  MA      #* ( ∩ → ꓵ ) INTERSECTION → LISU LETTER UE      # 
+22C2 ; A4F5 ;  MA      #* ( ⋂ → ꓵ ) N-ARY INTERSECTION → LISU LETTER UE        # →∩→
+
+2142 ; A4F6 ;  MA      #* ( ⅂ → ꓶ ) TURNED SANS-SERIF CAPITAL L → LISU LETTER UH       # 
+
+104A0 ;        10486 ; MA      # ( 𐒠 → 𐒆 ) OSMANYA DIGIT ZERO → OSMANYA LETTER DEEL  # 
+
+103D1 ;        10382 ; MA      # ( 𐏑 → 𐎂 ) OLD PERSIAN NUMBER ONE → UGARITIC LETTER GAMLA    # 
+
+103D3 ;        10393 ; MA      # ( 𐏓 → 𐎓 ) OLD PERSIAN NUMBER TEN → UGARITIC LETTER AIN      # 
+
+12038 ;        1039A ; MA      # ( 𒀸 → 𐎚 ) CUNEIFORM SIGN ASH → UGARITIC LETTER TO   # 
+
+F967 ; 4E0D ;  MA      # ( 不 → 不 ) CJK COMPATIBILITY IDEOGRAPH-F967 → CJK UNIFIED IDEOGRAPH-4E0D       # 
+
+FA70 ; 4E26 ;  MA      # ( 並 → 並 ) CJK COMPATIBILITY IDEOGRAPH-FA70 → CJK UNIFIED IDEOGRAPH-4E26       # 
+
+239C ; 4E28 ;  MA      #* ( ⎜ → 丨 ) LEFT PARENTHESIS EXTENSION → CJK UNIFIED IDEOGRAPH-4E28    # →⎥→→⎮→
+239F ; 4E28 ;  MA      #* ( ⎟ → 丨 ) RIGHT PARENTHESIS EXTENSION → CJK UNIFIED IDEOGRAPH-4E28   # →⎥→→⎮→
+23A2 ; 4E28 ;  MA      #* ( ⎢ → 丨 ) LEFT SQUARE BRACKET EXTENSION → CJK UNIFIED IDEOGRAPH-4E28 # →⎥→→⎮→
+23A5 ; 4E28 ;  MA      #* ( ⎥ → 丨 ) RIGHT SQUARE BRACKET EXTENSION → CJK UNIFIED IDEOGRAPH-4E28        # →⎮→
+23AA ; 4E28 ;  MA      #* ( ⎪ → 丨 ) CURLY BRACKET EXTENSION → CJK UNIFIED IDEOGRAPH-4E28       # →⎥→→⎮→
+23AE ; 4E28 ;  MA      #* ( ⎮ → 丨 ) INTEGRAL EXTENSION → CJK UNIFIED IDEOGRAPH-4E28    # 
+31D1 ; 4E28 ;  MA      #* ( ㇑ → 丨 ) CJK STROKE S → CJK UNIFIED IDEOGRAPH-4E28  # 
+1175 ; 4E28 ;  MA      # ( ᅵ → 丨 ) HANGUL JUNGSEONG I → CJK UNIFIED IDEOGRAPH-4E28     # →ㅣ→
+3163 ; 4E28 ;  MA      # ( ㅣ → 丨 ) HANGUL LETTER I → CJK UNIFIED IDEOGRAPH-4E28        # 
+2F01 ; 4E28 ;  MA      #* ( ⼁ → 丨 ) KANGXI RADICAL LINE → CJK UNIFIED IDEOGRAPH-4E28   # 
+
+119C ; 4E28 30FC ;     MA      # ( ᆜ → 丨ー ) HANGUL JUNGSEONG I-EU → CJK UNIFIED IDEOGRAPH-4E28, KATAKANA-HIRAGANA PROLONGED SOUND MARK       # →ᅵᅳ→
+
+D7C4 ; 4E28 4E28 ;     MA      # ( ퟄ → 丨丨 ) HANGUL JUNGSEONG I-I → CJK UNIFIED IDEOGRAPH-4E28, CJK UNIFIED IDEOGRAPH-4E28    # →ᅵᅵ→
+
+2EA6 ; 4E2C ;  MA      #* ( ⺦ → 丬 ) CJK RADICAL SIMPLIFIED HALF TREE TRUNK → CJK UNIFIED IDEOGRAPH-4E2C        # 
+
+F905 ; 4E32 ;  MA      # ( 串 → 串 ) CJK COMPATIBILITY IDEOGRAPH-F905 → CJK UNIFIED IDEOGRAPH-4E32       # 
+
+2F801 ;        4E38 ;  MA      # ( 丸 → 丸 ) CJK COMPATIBILITY IDEOGRAPH-2F801 → CJK UNIFIED IDEOGRAPH-4E38     # 
+
+F95E ; 4E39 ;  MA      # ( 丹 → 丹 ) CJK COMPATIBILITY IDEOGRAPH-F95E → CJK UNIFIED IDEOGRAPH-4E39       # 
+
+2F800 ;        4E3D ;  MA      # ( 丽 → 丽 ) CJK COMPATIBILITY IDEOGRAPH-2F800 → CJK UNIFIED IDEOGRAPH-4E3D     # 
+
+2F802 ;        4E41 ;  MA      # ( 乁 → 乁 ) CJK COMPATIBILITY IDEOGRAPH-2F802 → CJK UNIFIED IDEOGRAPH-4E41     # 
+
+31E0 ; 4E59 ;  MA      #* ( ㇠ → 乙 ) CJK STROKE HXWG → CJK UNIFIED IDEOGRAPH-4E59       # 
+2F04 ; 4E59 ;  MA      #* ( ⼄ → 乙 ) KANGXI RADICAL SECOND → CJK UNIFIED IDEOGRAPH-4E59 # 
+
+31DF ; 4E5A ;  MA      #* ( ㇟ → 乚 ) CJK STROKE SWG → CJK UNIFIED IDEOGRAPH-4E5A        # 
+2E83 ; 4E5A ;  MA      #* ( ⺃ → 乚 ) CJK RADICAL SECOND TWO → CJK UNIFIED IDEOGRAPH-4E5A        # 
+
+31D6 ; 4E5B ;  MA      #* ( ㇖ → 乛 ) CJK STROKE HG → CJK UNIFIED IDEOGRAPH-4E5B # 
+
+2EF2 ; 4E80 ;  MA      #* ( ⻲ → 亀 ) CJK RADICAL J-SIMPLIFIED TURTLE → CJK UNIFIED IDEOGRAPH-4E80       # 
+
+F91B ; 4E82 ;  MA      # ( 亂 → 亂 ) CJK COMPATIBILITY IDEOGRAPH-F91B → CJK UNIFIED IDEOGRAPH-4E82       # 
+
+31DA ; 4E85 ;  MA      #* ( ㇚ → 亅 ) CJK STROKE SG → CJK UNIFIED IDEOGRAPH-4E85 # 
+2F05 ; 4E85 ;  MA      #* ( ⼅ → 亅 ) KANGXI RADICAL HOOK → CJK UNIFIED IDEOGRAPH-4E85   # 
+
+F9BA ; 4E86 ;  MA      # ( 了 → 了 ) CJK COMPATIBILITY IDEOGRAPH-F9BA → CJK UNIFIED IDEOGRAPH-4E86       # 
+
+2F06 ; 4E8C ;  MA      #* ( ⼆ → 二 ) KANGXI RADICAL TWO → CJK UNIFIED IDEOGRAPH-4E8C    # 
+
+2F07 ; 4EA0 ;  MA      #* ( ⼇ → 亠 ) KANGXI RADICAL LID → CJK UNIFIED IDEOGRAPH-4EA0    # 
+
+F977 ; 4EAE ;  MA      # ( 亮 → 亮 ) CJK COMPATIBILITY IDEOGRAPH-F977 → CJK UNIFIED IDEOGRAPH-4EAE       # 
+
+2F08 ; 4EBA ;  MA      #* ( ⼈ → 人 ) KANGXI RADICAL MAN → CJK UNIFIED IDEOGRAPH-4EBA    # 
+
+2E85 ; 4EBB ;  MA      #* ( ⺅ → 亻 ) CJK RADICAL PERSON → CJK UNIFIED IDEOGRAPH-4EBB    # 
+
+F9FD ; 4EC0 ;  MA      # ( 什 → 什 ) CJK COMPATIBILITY IDEOGRAPH-F9FD → CJK UNIFIED IDEOGRAPH-4EC0       # 
+
+2F819 ;        4ECC ;  MA      # ( 仌 → 仌 ) CJK COMPATIBILITY IDEOGRAPH-2F819 → CJK UNIFIED IDEOGRAPH-4ECC     # 
+
+F9A8 ; 4EE4 ;  MA      # ( 令 → 令 ) CJK COMPATIBILITY IDEOGRAPH-F9A8 → CJK UNIFIED IDEOGRAPH-4EE4       # 
+
+2F804 ;        4F60 ;  MA      # ( 你 → 你 ) CJK COMPATIBILITY IDEOGRAPH-2F804 → CJK UNIFIED IDEOGRAPH-4F60     # 
+
+5002 ; 4F75 ;  MA      # ( 倂 → 併 ) CJK UNIFIED IDEOGRAPH-5002 → CJK UNIFIED IDEOGRAPH-4F75     # 
+2F807 ;        4F75 ;  MA      # ( 倂 → 併 ) CJK COMPATIBILITY IDEOGRAPH-2F807 → CJK UNIFIED IDEOGRAPH-4F75     # →倂→
+
+FA73 ; 4F80 ;  MA      # ( 侀 → 侀 ) CJK COMPATIBILITY IDEOGRAPH-FA73 → CJK UNIFIED IDEOGRAPH-4F80       # 
+
+F92D ; 4F86 ;  MA      # ( 來 → 來 ) CJK COMPATIBILITY IDEOGRAPH-F92D → CJK UNIFIED IDEOGRAPH-4F86       # 
+
+F9B5 ; 4F8B ;  MA      # ( 例 → 例 ) CJK COMPATIBILITY IDEOGRAPH-F9B5 → CJK UNIFIED IDEOGRAPH-4F8B       # 
+
+FA30 ; 4FAE ;  MA      # ( 侮 → 侮 ) CJK COMPATIBILITY IDEOGRAPH-FA30 → CJK UNIFIED IDEOGRAPH-4FAE       # 
+2F805 ;        4FAE ;  MA      # ( 侮 → 侮 ) CJK COMPATIBILITY IDEOGRAPH-2F805 → CJK UNIFIED IDEOGRAPH-4FAE     # 
+
+2F806 ;        4FBB ;  MA      # ( 侻 → 侻 ) CJK COMPATIBILITY IDEOGRAPH-2F806 → CJK UNIFIED IDEOGRAPH-4FBB     # 
+
+F965 ; 4FBF ;  MA      # ( 便 → 便 ) CJK COMPATIBILITY IDEOGRAPH-F965 → CJK UNIFIED IDEOGRAPH-4FBF       # 
+
+503C ; 5024 ;  MA      # ( 值 → 値 ) CJK UNIFIED IDEOGRAPH-503C → CJK UNIFIED IDEOGRAPH-5024     # 
+
+F9D4 ; 502B ;  MA      # ( 倫 → 倫 ) CJK COMPATIBILITY IDEOGRAPH-F9D4 → CJK UNIFIED IDEOGRAPH-502B       # 
+
+2F808 ;        507A ;  MA      # ( 偺 → 偺 ) CJK COMPATIBILITY IDEOGRAPH-2F808 → CJK UNIFIED IDEOGRAPH-507A     # 
+
+2F809 ;        5099 ;  MA      # ( 備 → 備 ) CJK COMPATIBILITY IDEOGRAPH-2F809 → CJK UNIFIED IDEOGRAPH-5099     # 
+
+2F80B ;        50CF ;  MA      # ( 像 → 像 ) CJK COMPATIBILITY IDEOGRAPH-2F80B → CJK UNIFIED IDEOGRAPH-50CF     # 
+
+F9BB ; 50DA ;  MA      # ( 僚 → 僚 ) CJK COMPATIBILITY IDEOGRAPH-F9BB → CJK UNIFIED IDEOGRAPH-50DA       # 
+
+FA31 ; 50E7 ;  MA      # ( 僧 → 僧 ) CJK COMPATIBILITY IDEOGRAPH-FA31 → CJK UNIFIED IDEOGRAPH-50E7       # 
+2F80A ;        50E7 ;  MA      # ( 僧 → 僧 ) CJK COMPATIBILITY IDEOGRAPH-2F80A → CJK UNIFIED IDEOGRAPH-50E7     # 
+
+2F09 ; 513F ;  MA      #* ( ⼉ → 儿 ) KANGXI RADICAL LEGS → CJK UNIFIED IDEOGRAPH-513F   # 
+
+FA0C ; 5140 ;  MA      # ( 兀 → 兀 ) CJK COMPATIBILITY IDEOGRAPH-FA0C → CJK UNIFIED IDEOGRAPH-5140       # 
+2E8E ; 5140 ;  MA      #* ( ⺎ → 兀 ) CJK RADICAL LAME ONE → CJK UNIFIED IDEOGRAPH-5140  # 
+
+FA74 ; 5145 ;  MA      # ( 充 → 充 ) CJK COMPATIBILITY IDEOGRAPH-FA74 → CJK UNIFIED IDEOGRAPH-5145       # 
+
+FA32 ; 514D ;  MA      # ( 免 → 免 ) CJK COMPATIBILITY IDEOGRAPH-FA32 → CJK UNIFIED IDEOGRAPH-514D       # 
+2F80E ;        514D ;  MA      # ( 免 → 免 ) CJK COMPATIBILITY IDEOGRAPH-2F80E → CJK UNIFIED IDEOGRAPH-514D     # 
+
+2F80F ;        5154 ;  MA      # ( 兔 → 兔 ) CJK COMPATIBILITY IDEOGRAPH-2F80F → CJK UNIFIED IDEOGRAPH-5154     # 
+
+2F810 ;        5164 ;  MA      # ( 兤 → 兤 ) CJK COMPATIBILITY IDEOGRAPH-2F810 → CJK UNIFIED IDEOGRAPH-5164     # 
+
+2F0A ; 5165 ;  MA      #* ( ⼊ → 入 ) KANGXI RADICAL ENTER → CJK UNIFIED IDEOGRAPH-5165  # 
+
+2F814 ;        5167 ;  MA      # ( 內 → 內 ) CJK COMPATIBILITY IDEOGRAPH-2F814 → CJK UNIFIED IDEOGRAPH-5167     # 
+
+FA72 ; 5168 ;  MA      # ( 全 → 全 ) CJK COMPATIBILITY IDEOGRAPH-FA72 → CJK UNIFIED IDEOGRAPH-5168       # 
+
+F978 ; 5169 ;  MA      # ( 兩 → 兩 ) CJK COMPATIBILITY IDEOGRAPH-F978 → CJK UNIFIED IDEOGRAPH-5169       # 
+
+2F0B ; 516B ;  MA      #* ( ⼋ → 八 ) KANGXI RADICAL EIGHT → CJK UNIFIED IDEOGRAPH-516B  # 
+
+F9D1 ; 516D ;  MA      # ( 六 → 六 ) CJK COMPATIBILITY IDEOGRAPH-F9D1 → CJK UNIFIED IDEOGRAPH-516D       # 
+
+2F811 ;        5177 ;  MA      # ( 具 → 具 ) CJK COMPATIBILITY IDEOGRAPH-2F811 → CJK UNIFIED IDEOGRAPH-5177     # 
+
+FA75 ; 5180 ;  MA      # ( 冀 → 冀 ) CJK COMPATIBILITY IDEOGRAPH-FA75 → CJK UNIFIED IDEOGRAPH-5180       # 
+
+2F0C ; 5182 ;  MA      #* ( ⼌ → 冂 ) KANGXI RADICAL DOWN BOX → CJK UNIFIED IDEOGRAPH-5182       # 
+
+2F815 ;        518D ;  MA      # ( 再 → 再 ) CJK COMPATIBILITY IDEOGRAPH-2F815 → CJK UNIFIED IDEOGRAPH-518D     # 
+
+2F8D2 ;        5192 ;  MA      # ( 冒 → 冒 ) CJK COMPATIBILITY IDEOGRAPH-2F8D2 → CJK UNIFIED IDEOGRAPH-5192     # 
+
+2F8D3 ;        5195 ;  MA      # ( 冕 → 冕 ) CJK COMPATIBILITY IDEOGRAPH-2F8D3 → CJK UNIFIED IDEOGRAPH-5195     # 
+
+2F0D ; 5196 ;  MA      #* ( ⼍ → 冖 ) KANGXI RADICAL COVER → CJK UNIFIED IDEOGRAPH-5196  # 
+
+2F817 ;        5197 ;  MA      # ( 冗 → 冗 ) CJK COMPATIBILITY IDEOGRAPH-2F817 → CJK UNIFIED IDEOGRAPH-5197     # 
+
+2F818 ;        51A4 ;  MA      # ( 冤 → 冤 ) CJK COMPATIBILITY IDEOGRAPH-2F818 → CJK UNIFIED IDEOGRAPH-51A4     # 
+
+2F0E ; 51AB ;  MA      #* ( ⼎ → 冫 ) KANGXI RADICAL ICE → CJK UNIFIED IDEOGRAPH-51AB    # 
+
+2F81A ;        51AC ;  MA      # ( 冬 → 冬 ) CJK COMPATIBILITY IDEOGRAPH-2F81A → CJK UNIFIED IDEOGRAPH-51AC     # 
+
+FA71 ; 51B5 ;  MA      # ( 况 → 况 ) CJK COMPATIBILITY IDEOGRAPH-FA71 → CJK UNIFIED IDEOGRAPH-51B5       # 
+2F81B ;        51B5 ;  MA      # ( 况 → 况 ) CJK COMPATIBILITY IDEOGRAPH-2F81B → CJK UNIFIED IDEOGRAPH-51B5     # 
+
+F92E ; 51B7 ;  MA      # ( 冷 → 冷 ) CJK COMPATIBILITY IDEOGRAPH-F92E → CJK UNIFIED IDEOGRAPH-51B7       # 
+
+F979 ; 51C9 ;  MA      # ( 凉 → 凉 ) CJK COMPATIBILITY IDEOGRAPH-F979 → CJK UNIFIED IDEOGRAPH-51C9       # 
+
+F955 ; 51CC ;  MA      # ( 凌 → 凌 ) CJK COMPATIBILITY IDEOGRAPH-F955 → CJK UNIFIED IDEOGRAPH-51CC       # 
+
+F954 ; 51DC ;  MA      # ( 凜 → 凜 ) CJK COMPATIBILITY IDEOGRAPH-F954 → CJK UNIFIED IDEOGRAPH-51DC       # 
+
+FA15 ; 51DE ;  MA      # ( 凞 → 凞 ) CJK COMPATIBILITY IDEOGRAPH-FA15 → CJK UNIFIED IDEOGRAPH-51DE       # 
+
+2F0F ; 51E0 ;  MA      #* ( ⼏ → 几 ) KANGXI RADICAL TABLE → CJK UNIFIED IDEOGRAPH-51E0  # 
+
+2F81D ;        51F5 ;  MA      # ( 凵 → 凵 ) CJK COMPATIBILITY IDEOGRAPH-2F81D → CJK UNIFIED IDEOGRAPH-51F5     # 
+2F10 ; 51F5 ;  MA      #* ( ⼐ → 凵 ) KANGXI RADICAL OPEN BOX → CJK UNIFIED IDEOGRAPH-51F5       # 
+
+2F11 ; 5200 ;  MA      #* ( ⼑ → 刀 ) KANGXI RADICAL KNIFE → CJK UNIFIED IDEOGRAPH-5200  # 
+
+2E89 ; 5202 ;  MA      #* ( ⺉ → 刂 ) CJK RADICAL KNIFE TWO → CJK UNIFIED IDEOGRAPH-5202 # 
+
+2F81E ;        5203 ;  MA      # ( 刃 → 刃 ) CJK COMPATIBILITY IDEOGRAPH-2F81E → CJK UNIFIED IDEOGRAPH-5203     # 
+
+FA00 ; 5207 ;  MA      # ( 切 → 切 ) CJK COMPATIBILITY IDEOGRAPH-FA00 → CJK UNIFIED IDEOGRAPH-5207       # 
+2F850 ;        5207 ;  MA      # ( 切 → 切 ) CJK COMPATIBILITY IDEOGRAPH-2F850 → CJK UNIFIED IDEOGRAPH-5207     # 
+
+F99C ; 5217 ;  MA      # ( 列 → 列 ) CJK COMPATIBILITY IDEOGRAPH-F99C → CJK UNIFIED IDEOGRAPH-5217       # 
+
+F9DD ; 5229 ;  MA      # ( 利 → 利 ) CJK COMPATIBILITY IDEOGRAPH-F9DD → CJK UNIFIED IDEOGRAPH-5229       # 
+
+F9FF ; 523A ;  MA      # ( 刺 → 刺 ) CJK COMPATIBILITY IDEOGRAPH-F9FF → CJK UNIFIED IDEOGRAPH-523A       # 
+
+2F820 ;        523B ;  MA      # ( 刻 → 刻 ) CJK COMPATIBILITY IDEOGRAPH-2F820 → CJK UNIFIED IDEOGRAPH-523B     # 
+
+2F821 ;        5246 ;  MA      # ( 剆 → 剆 ) CJK COMPATIBILITY IDEOGRAPH-2F821 → CJK UNIFIED IDEOGRAPH-5246     # 
+
+2F822 ;        5272 ;  MA      # ( 割 → 割 ) CJK COMPATIBILITY IDEOGRAPH-2F822 → CJK UNIFIED IDEOGRAPH-5272     # 
+
+2F823 ;        5277 ;  MA      # ( 剷 → 剷 ) CJK COMPATIBILITY IDEOGRAPH-2F823 → CJK UNIFIED IDEOGRAPH-5277     # 
+
+F9C7 ; 5289 ;  MA      # ( 劉 → 劉 ) CJK COMPATIBILITY IDEOGRAPH-F9C7 → CJK UNIFIED IDEOGRAPH-5289       # 
+
+F98A ; 529B ;  MA      # ( 力 → 力 ) CJK COMPATIBILITY IDEOGRAPH-F98A → CJK UNIFIED IDEOGRAPH-529B       # 
+2F12 ; 529B ;  MA      #* ( ⼒ → 力 ) KANGXI RADICAL POWER → CJK UNIFIED IDEOGRAPH-529B  # 
+
+F99D ; 52A3 ;  MA      # ( 劣 → 劣 ) CJK COMPATIBILITY IDEOGRAPH-F99D → CJK UNIFIED IDEOGRAPH-52A3       # 
+
+2F992 ;        52B3 ;  MA      # ( 劳 → 劳 ) CJK COMPATIBILITY IDEOGRAPH-2F992 → CJK UNIFIED IDEOGRAPH-52B3     # 
+
+FA76 ; 52C7 ;  MA      # ( 勇 → 勇 ) CJK COMPATIBILITY IDEOGRAPH-FA76 → CJK UNIFIED IDEOGRAPH-52C7       # 
+2F825 ;        52C7 ;  MA      # ( 勇 → 勇 ) CJK COMPATIBILITY IDEOGRAPH-2F825 → CJK UNIFIED IDEOGRAPH-52C7     # 
+
+FA33 ; 52C9 ;  MA      # ( 勉 → 勉 ) CJK COMPATIBILITY IDEOGRAPH-FA33 → CJK UNIFIED IDEOGRAPH-52C9       # 
+2F826 ;        52C9 ;  MA      # ( 勉 → 勉 ) CJK COMPATIBILITY IDEOGRAPH-2F826 → CJK UNIFIED IDEOGRAPH-52C9     # 
+
+F952 ; 52D2 ;  MA      # ( 勒 → 勒 ) CJK COMPATIBILITY IDEOGRAPH-F952 → CJK UNIFIED IDEOGRAPH-52D2       # 
+
+F92F ; 52DE ;  MA      # ( 勞 → 勞 ) CJK COMPATIBILITY IDEOGRAPH-F92F → CJK UNIFIED IDEOGRAPH-52DE       # 
+
+FA34 ; 52E4 ;  MA      # ( 勤 → 勤 ) CJK COMPATIBILITY IDEOGRAPH-FA34 → CJK UNIFIED IDEOGRAPH-52E4       # 
+2F827 ;        52E4 ;  MA      # ( 勤 → 勤 ) CJK COMPATIBILITY IDEOGRAPH-2F827 → CJK UNIFIED IDEOGRAPH-52E4     # 
+
+F97F ; 52F5 ;  MA      # ( 勵 → 勵 ) CJK COMPATIBILITY IDEOGRAPH-F97F → CJK UNIFIED IDEOGRAPH-52F5       # 
+
+2F13 ; 52F9 ;  MA      #* ( ⼓ → 勹 ) KANGXI RADICAL WRAP → CJK UNIFIED IDEOGRAPH-52F9   # 
+
+FA77 ; 52FA ;  MA      # ( 勺 → 勺 ) CJK COMPATIBILITY IDEOGRAPH-FA77 → CJK UNIFIED IDEOGRAPH-52FA       # 
+2F828 ;        52FA ;  MA      # ( 勺 → 勺 ) CJK COMPATIBILITY IDEOGRAPH-2F828 → CJK UNIFIED IDEOGRAPH-52FA     # 
+
+2F829 ;        5305 ;  MA      # ( 包 → 包 ) CJK COMPATIBILITY IDEOGRAPH-2F829 → CJK UNIFIED IDEOGRAPH-5305     # 
+
+2F82A ;        5306 ;  MA      # ( 匆 → 匆 ) CJK COMPATIBILITY IDEOGRAPH-2F82A → CJK UNIFIED IDEOGRAPH-5306     # 
+
+2F14 ; 5315 ;  MA      #* ( ⼔ → 匕 ) KANGXI RADICAL SPOON → CJK UNIFIED IDEOGRAPH-5315  # 
+
+F963 ; 5317 ;  MA      # ( 北 → 北 ) CJK COMPATIBILITY IDEOGRAPH-F963 → CJK UNIFIED IDEOGRAPH-5317       # 
+2F82B ;        5317 ;  MA      # ( 北 → 北 ) CJK COMPATIBILITY IDEOGRAPH-2F82B → CJK UNIFIED IDEOGRAPH-5317     # 
+
+2F15 ; 531A ;  MA      #* ( ⼕ → 匚 ) KANGXI RADICAL RIGHT OPEN BOX → CJK UNIFIED IDEOGRAPH-531A # 
+
+2F16 ; 5338 ;  MA      #* ( ⼖ → 匸 ) KANGXI RADICAL HIDING ENCLOSURE → CJK UNIFIED IDEOGRAPH-5338       # 
+
+F9EB ; 533F ;  MA      # ( 匿 → 匿 ) CJK COMPATIBILITY IDEOGRAPH-F9EB → CJK UNIFIED IDEOGRAPH-533F       # 
+
+2F17 ; 5341 ;  MA      #* ( ⼗ → 十 ) KANGXI RADICAL TEN → CJK UNIFIED IDEOGRAPH-5341    # 
+3038 ; 5341 ;  MA      # ( 〸 → 十 ) HANGZHOU NUMERAL TEN → CJK UNIFIED IDEOGRAPH-5341   # 
+
+3039 ; 5344 ;  MA      # ( 〹 → 卄 ) HANGZHOU NUMERAL TWENTY → CJK UNIFIED IDEOGRAPH-5344        # 
+
+303A ; 5345 ;  MA      # ( 〺 → 卅 ) HANGZHOU NUMERAL THIRTY → CJK UNIFIED IDEOGRAPH-5345        # 
+
+2F82C ;        5349 ;  MA      # ( 卉 → 卉 ) CJK COMPATIBILITY IDEOGRAPH-2F82C → CJK UNIFIED IDEOGRAPH-5349     # 
+
+FA35 ; 5351 ;  MA      # ( 卑 → 卑 ) CJK COMPATIBILITY IDEOGRAPH-FA35 → CJK UNIFIED IDEOGRAPH-5351       # 
+2F82D ;        5351 ;  MA      # ( 卑 → 卑 ) CJK COMPATIBILITY IDEOGRAPH-2F82D → CJK UNIFIED IDEOGRAPH-5351     # 
+
+2F82E ;        535A ;  MA      # ( 博 → 博 ) CJK COMPATIBILITY IDEOGRAPH-2F82E → CJK UNIFIED IDEOGRAPH-535A     # 
+
+2F18 ; 535C ;  MA      #* ( ⼘ → 卜 ) KANGXI RADICAL DIVINATION → CJK UNIFIED IDEOGRAPH-535C     # 
+
+2F19 ; 5369 ;  MA      #* ( ⼙ → 卩 ) KANGXI RADICAL SEAL → CJK UNIFIED IDEOGRAPH-5369   # 
+
+2F82F ;        5373 ;  MA      # ( 即 → 即 ) CJK COMPATIBILITY IDEOGRAPH-2F82F → CJK UNIFIED IDEOGRAPH-5373     # 
+
+F91C ; 5375 ;  MA      # ( 卵 → 卵 ) CJK COMPATIBILITY IDEOGRAPH-F91C → CJK UNIFIED IDEOGRAPH-5375       # 
+
+2F830 ;        537D ;  MA      # ( 卽 → 卽 ) CJK COMPATIBILITY IDEOGRAPH-2F830 → CJK UNIFIED IDEOGRAPH-537D     # 
+
+2F831 ;        537F ;  MA      # ( 卿 → 卿 ) CJK COMPATIBILITY IDEOGRAPH-2F831 → CJK UNIFIED IDEOGRAPH-537F     # 
+2F832 ;        537F ;  MA      # ( 卿 → 卿 ) CJK COMPATIBILITY IDEOGRAPH-2F832 → CJK UNIFIED IDEOGRAPH-537F     # 
+2F833 ;        537F ;  MA      # ( 卿 → 卿 ) CJK COMPATIBILITY IDEOGRAPH-2F833 → CJK UNIFIED IDEOGRAPH-537F     # 
+
+2F1A ; 5382 ;  MA      #* ( ⼚ → 厂 ) KANGXI RADICAL CLIFF → CJK UNIFIED IDEOGRAPH-5382  # 
+
+2F1B ; 53B6 ;  MA      #* ( ⼛ → 厶 ) KANGXI RADICAL PRIVATE → CJK UNIFIED IDEOGRAPH-53B6        # 
+
+F96B ; 53C3 ;  MA      # ( 參 → 參 ) CJK COMPATIBILITY IDEOGRAPH-F96B → CJK UNIFIED IDEOGRAPH-53C3       # 
+
+2F1C ; 53C8 ;  MA      #* ( ⼜ → 又 ) KANGXI RADICAL AGAIN → CJK UNIFIED IDEOGRAPH-53C8  # 
+
+2F836 ;        53CA ;  MA      # ( 及 → 及 ) CJK COMPATIBILITY IDEOGRAPH-2F836 → CJK UNIFIED IDEOGRAPH-53CA     # 
+
+2F837 ;        53DF ;  MA      # ( 叟 → 叟 ) CJK COMPATIBILITY IDEOGRAPH-2F837 → CJK UNIFIED IDEOGRAPH-53DF     # 
+
+2F1D ; 53E3 ;  MA      #* ( ⼝ → 口 ) KANGXI RADICAL MOUTH → CJK UNIFIED IDEOGRAPH-53E3  # 
+
+F906 ; 53E5 ;  MA      # ( 句 → 句 ) CJK COMPATIBILITY IDEOGRAPH-F906 → CJK UNIFIED IDEOGRAPH-53E5       # 
+
+2F839 ;        53EB ;  MA      # ( 叫 → 叫 ) CJK COMPATIBILITY IDEOGRAPH-2F839 → CJK UNIFIED IDEOGRAPH-53EB     # 
+
+2F83A ;        53F1 ;  MA      # ( 叱 → 叱 ) CJK COMPATIBILITY IDEOGRAPH-2F83A → CJK UNIFIED IDEOGRAPH-53F1     # 
+
+2F83B ;        5406 ;  MA      # ( 吆 → 吆 ) CJK COMPATIBILITY IDEOGRAPH-2F83B → CJK UNIFIED IDEOGRAPH-5406     # 
+
+F9DE ; 540F ;  MA      # ( 吏 → 吏 ) CJK COMPATIBILITY IDEOGRAPH-F9DE → CJK UNIFIED IDEOGRAPH-540F       # 
+
+F9ED ; 541D ;  MA      # ( 吝 → 吝 ) CJK COMPATIBILITY IDEOGRAPH-F9ED → CJK UNIFIED IDEOGRAPH-541D       # 
+
+2F83D ;        5438 ;  MA      # ( 吸 → 吸 ) CJK COMPATIBILITY IDEOGRAPH-2F83D → CJK UNIFIED IDEOGRAPH-5438     # 
+
+F980 ; 5442 ;  MA      # ( 呂 → 呂 ) CJK COMPATIBILITY IDEOGRAPH-F980 → CJK UNIFIED IDEOGRAPH-5442       # 
+
+2F83E ;        5448 ;  MA      # ( 呈 → 呈 ) CJK COMPATIBILITY IDEOGRAPH-2F83E → CJK UNIFIED IDEOGRAPH-5448     # 
+
+2F83F ;        5468 ;  MA      # ( 周 → 周 ) CJK COMPATIBILITY IDEOGRAPH-2F83F → CJK UNIFIED IDEOGRAPH-5468     # 
+
+2F83C ;        549E ;  MA      # ( 咞 → 咞 ) CJK COMPATIBILITY IDEOGRAPH-2F83C → CJK UNIFIED IDEOGRAPH-549E     # 
+
+2F840 ;        54A2 ;  MA      # ( 咢 → 咢 ) CJK COMPATIBILITY IDEOGRAPH-2F840 → CJK UNIFIED IDEOGRAPH-54A2     # 
+
+F99E ; 54BD ;  MA      # ( 咽 → 咽 ) CJK COMPATIBILITY IDEOGRAPH-F99E → CJK UNIFIED IDEOGRAPH-54BD       # 
+
+2F841 ;        54F6 ;  MA      # ( 哶 → 哶 ) CJK COMPATIBILITY IDEOGRAPH-2F841 → CJK UNIFIED IDEOGRAPH-54F6     # 
+
+2F842 ;        5510 ;  MA      # ( 唐 → 唐 ) CJK COMPATIBILITY IDEOGRAPH-2F842 → CJK UNIFIED IDEOGRAPH-5510     # 
+
+2F843 ;        5553 ;  MA      # ( 啓 → 啓 ) CJK COMPATIBILITY IDEOGRAPH-2F843 → CJK UNIFIED IDEOGRAPH-5553     # 
+555F ; 5553 ;  MA      # ( 啟 → 啓 ) CJK UNIFIED IDEOGRAPH-555F → CJK UNIFIED IDEOGRAPH-5553     # 
+
+FA79 ; 5555 ;  MA      # ( 啕 → 啕 ) CJK COMPATIBILITY IDEOGRAPH-FA79 → CJK UNIFIED IDEOGRAPH-5555       # 
+
+2F844 ;        5563 ;  MA      # ( 啣 → 啣 ) CJK COMPATIBILITY IDEOGRAPH-2F844 → CJK UNIFIED IDEOGRAPH-5563     # 
+
+2F845 ;        5584 ;  MA      # ( 善 → 善 ) CJK COMPATIBILITY IDEOGRAPH-2F845 → CJK UNIFIED IDEOGRAPH-5584     # 
+2F846 ;        5584 ;  MA      # ( 善 → 善 ) CJK COMPATIBILITY IDEOGRAPH-2F846 → CJK UNIFIED IDEOGRAPH-5584     # 
+
+F90B ; 5587 ;  MA      # ( 喇 → 喇 ) CJK COMPATIBILITY IDEOGRAPH-F90B → CJK UNIFIED IDEOGRAPH-5587       # 
+
+FA7A ; 5599 ;  MA      # ( 喙 → 喙 ) CJK COMPATIBILITY IDEOGRAPH-FA7A → CJK UNIFIED IDEOGRAPH-5599       # 
+2F847 ;        5599 ;  MA      # ( 喙 → 喙 ) CJK COMPATIBILITY IDEOGRAPH-2F847 → CJK UNIFIED IDEOGRAPH-5599     # 
+
+FA36 ; 559D ;  MA      # ( 喝 → 喝 ) CJK COMPATIBILITY IDEOGRAPH-FA36 → CJK UNIFIED IDEOGRAPH-559D       # 
+FA78 ; 559D ;  MA      # ( 喝 → 喝 ) CJK COMPATIBILITY IDEOGRAPH-FA78 → CJK UNIFIED IDEOGRAPH-559D       # 
+
+2F848 ;        55AB ;  MA      # ( 喫 → 喫 ) CJK COMPATIBILITY IDEOGRAPH-2F848 → CJK UNIFIED IDEOGRAPH-55AB     # 
+
+2F849 ;        55B3 ;  MA      # ( 喳 → 喳 ) CJK COMPATIBILITY IDEOGRAPH-2F849 → CJK UNIFIED IDEOGRAPH-55B3     # 
+
+FA0D ; 55C0 ;  MA      # ( 嗀 → 嗀 ) CJK COMPATIBILITY IDEOGRAPH-FA0D → CJK UNIFIED IDEOGRAPH-55C0       # 
+
+2F84A ;        55C2 ;  MA      # ( 嗂 → 嗂 ) CJK COMPATIBILITY IDEOGRAPH-2F84A → CJK UNIFIED IDEOGRAPH-55C2     # 
+
+FA7B ; 55E2 ;  MA      # ( 嗢 → 嗢 ) CJK COMPATIBILITY IDEOGRAPH-FA7B → CJK UNIFIED IDEOGRAPH-55E2       # 
+
+FA37 ; 5606 ;  MA      # ( 嘆 → 嘆 ) CJK COMPATIBILITY IDEOGRAPH-FA37 → CJK UNIFIED IDEOGRAPH-5606       # 
+2F84C ;        5606 ;  MA      # ( 嘆 → 嘆 ) CJK COMPATIBILITY IDEOGRAPH-2F84C → CJK UNIFIED IDEOGRAPH-5606     # 
+
+2F84E ;        5651 ;  MA      # ( 噑 → 噑 ) CJK COMPATIBILITY IDEOGRAPH-2F84E → CJK UNIFIED IDEOGRAPH-5651     # 
+
+FA38 ; 5668 ;  MA      # ( 器 → 器 ) CJK COMPATIBILITY IDEOGRAPH-FA38 → CJK UNIFIED IDEOGRAPH-5668       # 
+
+2F84F ;        5674 ;  MA      # ( 噴 → 噴 ) CJK COMPATIBILITY IDEOGRAPH-2F84F → CJK UNIFIED IDEOGRAPH-5674     # 
+
+2F1E ; 56D7 ;  MA      #* ( ⼞ → 囗 ) KANGXI RADICAL ENCLOSURE → CJK UNIFIED IDEOGRAPH-56D7      # 
+
+F9A9 ; 56F9 ;  MA      # ( 囹 → 囹 ) CJK COMPATIBILITY IDEOGRAPH-F9A9 → CJK UNIFIED IDEOGRAPH-56F9       # 
+
+2F84B ;        5716 ;  MA      # ( 圖 → 圖 ) CJK COMPATIBILITY IDEOGRAPH-2F84B → CJK UNIFIED IDEOGRAPH-5716     # 
+
+2F84D ;        5717 ;  MA      # ( 圗 → 圗 ) CJK COMPATIBILITY IDEOGRAPH-2F84D → CJK UNIFIED IDEOGRAPH-5717     # 
+
+2F1F ; 571F ;  MA      #* ( ⼟ → 土 ) KANGXI RADICAL EARTH → CJK UNIFIED IDEOGRAPH-571F  # 
+
+2F855 ;        578B ;  MA      # ( 型 → 型 ) CJK COMPATIBILITY IDEOGRAPH-2F855 → CJK UNIFIED IDEOGRAPH-578B     # 
+
+2F852 ;        57CE ;  MA      # ( 城 → 城 ) CJK COMPATIBILITY IDEOGRAPH-2F852 → CJK UNIFIED IDEOGRAPH-57CE     # 
+
+2F853 ;        57F4 ;  MA      # ( 埴 → 埴 ) CJK COMPATIBILITY IDEOGRAPH-2F853 → CJK UNIFIED IDEOGRAPH-57F4     # 
+
+2F854 ;        580D ;  MA      # ( 堍 → 堍 ) CJK COMPATIBILITY IDEOGRAPH-2F854 → CJK UNIFIED IDEOGRAPH-580D     # 
+
+2F857 ;        5831 ;  MA      # ( 報 → 報 ) CJK COMPATIBILITY IDEOGRAPH-2F857 → CJK UNIFIED IDEOGRAPH-5831     # 
+
+2F856 ;        5832 ;  MA      # ( 堲 → 堲 ) CJK COMPATIBILITY IDEOGRAPH-2F856 → CJK UNIFIED IDEOGRAPH-5832     # 
+
+FA39 ; 5840 ;  MA      # ( 塀 → 塀 ) CJK COMPATIBILITY IDEOGRAPH-FA39 → CJK UNIFIED IDEOGRAPH-5840       # 
+
+FA10 ; 585A ;  MA      # ( 塚 → 塚 ) CJK COMPATIBILITY IDEOGRAPH-FA10 → CJK UNIFIED IDEOGRAPH-585A       # 
+FA7C ; 585A ;  MA      # ( 塚 → 塚 ) CJK COMPATIBILITY IDEOGRAPH-FA7C → CJK UNIFIED IDEOGRAPH-585A       # 
+
+F96C ; 585E ;  MA      # ( 塞 → 塞 ) CJK COMPATIBILITY IDEOGRAPH-F96C → CJK UNIFIED IDEOGRAPH-585E       # 
+
+586B ; 5861 ;  MA      # ( 填 → 塡 ) CJK UNIFIED IDEOGRAPH-586B → CJK UNIFIED IDEOGRAPH-5861     # 
+
+FA3A ; 58A8 ;  MA      # ( 墨 → 墨 ) CJK COMPATIBILITY IDEOGRAPH-FA3A → CJK UNIFIED IDEOGRAPH-58A8       # 
+
+58FF ; 58AB ;  MA      # ( 壿 → 墫 ) CJK UNIFIED IDEOGRAPH-58FF → CJK UNIFIED IDEOGRAPH-58AB     # 
+
+2F858 ;        58AC ;  MA      # ( 墬 → 墬 ) CJK COMPATIBILITY IDEOGRAPH-2F858 → CJK UNIFIED IDEOGRAPH-58AC     # 
+
+FA7D ; 58B3 ;  MA      # ( 墳 → 墳 ) CJK COMPATIBILITY IDEOGRAPH-FA7D → CJK UNIFIED IDEOGRAPH-58B3       # 
+
+F94A ; 58D8 ;  MA      # ( 壘 → 壘 ) CJK COMPATIBILITY IDEOGRAPH-F94A → CJK UNIFIED IDEOGRAPH-58D8       # 
+
+F942 ; 58DF ;  MA      # ( 壟 → 壟 ) CJK COMPATIBILITY IDEOGRAPH-F942 → CJK UNIFIED IDEOGRAPH-58DF       # 
+
+2F20 ; 58EB ;  MA      #* ( ⼠ → 士 ) KANGXI RADICAL SCHOLAR → CJK UNIFIED IDEOGRAPH-58EB        # 
+
+2F851 ;        58EE ;  MA      # ( 壮 → 壮 ) CJK COMPATIBILITY IDEOGRAPH-2F851 → CJK UNIFIED IDEOGRAPH-58EE     # 
+
+2F85A ;        58F2 ;  MA      # ( 売 → 売 ) CJK COMPATIBILITY IDEOGRAPH-2F85A → CJK UNIFIED IDEOGRAPH-58F2     # 
+
+2F85B ;        58F7 ;  MA      # ( 壷 → 壷 ) CJK COMPATIBILITY IDEOGRAPH-2F85B → CJK UNIFIED IDEOGRAPH-58F7     # 
+
+2F21 ; 5902 ;  MA      #* ( ⼡ → 夂 ) KANGXI RADICAL GO → CJK UNIFIED IDEOGRAPH-5902     # 
+
+2F85C ;        5906 ;  MA      # ( 夆 → 夆 ) CJK COMPATIBILITY IDEOGRAPH-2F85C → CJK UNIFIED IDEOGRAPH-5906     # 
+
+2F22 ; 590A ;  MA      #* ( ⼢ → 夊 ) KANGXI RADICAL GO SLOWLY → CJK UNIFIED IDEOGRAPH-590A      # 
+
+2F23 ; 5915 ;  MA      #* ( ⼣ → 夕 ) KANGXI RADICAL EVENING → CJK UNIFIED IDEOGRAPH-5915        # 
+
+2F85D ;        591A ;  MA      # ( 多 → 多 ) CJK COMPATIBILITY IDEOGRAPH-2F85D → CJK UNIFIED IDEOGRAPH-591A     # 
+
+2F85E ;        5922 ;  MA      # ( 夢 → 夢 ) CJK COMPATIBILITY IDEOGRAPH-2F85E → CJK UNIFIED IDEOGRAPH-5922     # 
+
+2F24 ; 5927 ;  MA      #* ( ⼤ → 大 ) KANGXI RADICAL BIG → CJK UNIFIED IDEOGRAPH-5927    # 
+
+FA7E ; 5944 ;  MA      # ( 奄 → 奄 ) CJK COMPATIBILITY IDEOGRAPH-FA7E → CJK UNIFIED IDEOGRAPH-5944       # 
+
+F90C ; 5948 ;  MA      # ( 奈 → 奈 ) CJK COMPATIBILITY IDEOGRAPH-F90C → CJK UNIFIED IDEOGRAPH-5948       # 
+
+F909 ; 5951 ;  MA      # ( 契 → 契 ) CJK COMPATIBILITY IDEOGRAPH-F909 → CJK UNIFIED IDEOGRAPH-5951       # 
+
+FA7F ; 5954 ;  MA      # ( 奔 → 奔 ) CJK COMPATIBILITY IDEOGRAPH-FA7F → CJK UNIFIED IDEOGRAPH-5954       # 
+
+2F85F ;        5962 ;  MA      # ( 奢 → 奢 ) CJK COMPATIBILITY IDEOGRAPH-2F85F → CJK UNIFIED IDEOGRAPH-5962     # 
+
+F981 ; 5973 ;  MA      # ( 女 → 女 ) CJK COMPATIBILITY IDEOGRAPH-F981 → CJK UNIFIED IDEOGRAPH-5973       # 
+2F25 ; 5973 ;  MA      #* ( ⼥ → 女 ) KANGXI RADICAL WOMAN → CJK UNIFIED IDEOGRAPH-5973  # 
+
+2F865 ;        59D8 ;  MA      # ( 姘 → 姘 ) CJK COMPATIBILITY IDEOGRAPH-2F865 → CJK UNIFIED IDEOGRAPH-59D8     # 
+
+2F862 ;        59EC ;  MA      # ( 姬 → 姬 ) CJK COMPATIBILITY IDEOGRAPH-2F862 → CJK UNIFIED IDEOGRAPH-59EC     # 
+
+2F863 ;        5A1B ;  MA      # ( 娛 → 娛 ) CJK COMPATIBILITY IDEOGRAPH-2F863 → CJK UNIFIED IDEOGRAPH-5A1B     # 
+
+2F864 ;        5A27 ;  MA      # ( 娧 → 娧 ) CJK COMPATIBILITY IDEOGRAPH-2F864 → CJK UNIFIED IDEOGRAPH-5A27     # 
+
+FA80 ; 5A62 ;  MA      # ( 婢 → 婢 ) CJK COMPATIBILITY IDEOGRAPH-FA80 → CJK UNIFIED IDEOGRAPH-5A62       # 
+
+2F866 ;        5A66 ;  MA      # ( 婦 → 婦 ) CJK COMPATIBILITY IDEOGRAPH-2F866 → CJK UNIFIED IDEOGRAPH-5A66     # 
+
+5B00 ; 5AAF ;  MA      # ( 嬀 → 媯 ) CJK UNIFIED IDEOGRAPH-5B00 → CJK UNIFIED IDEOGRAPH-5AAF     # 
+
+2F986 ;        5AB5 ;  MA      # ( 媵 → 媵 ) CJK COMPATIBILITY IDEOGRAPH-2F986 → CJK UNIFIED IDEOGRAPH-5AB5     # 
+
+2F869 ;        5B08 ;  MA      # ( 嬈 → 嬈 ) CJK COMPATIBILITY IDEOGRAPH-2F869 → CJK UNIFIED IDEOGRAPH-5B08     # 
+
+FA81 ; 5B28 ;  MA      # ( 嬨 → 嬨 ) CJK COMPATIBILITY IDEOGRAPH-FA81 → CJK UNIFIED IDEOGRAPH-5B28       # 
+
+2F86A ;        5B3E ;  MA      # ( 嬾 → 嬾 ) CJK COMPATIBILITY IDEOGRAPH-2F86A → CJK UNIFIED IDEOGRAPH-5B3E     # 
+2F86B ;        5B3E ;  MA      # ( 嬾 → 嬾 ) CJK COMPATIBILITY IDEOGRAPH-2F86B → CJK UNIFIED IDEOGRAPH-5B3E     # 
+
+2F26 ; 5B50 ;  MA      #* ( ⼦ → 子 ) KANGXI RADICAL CHILD → CJK UNIFIED IDEOGRAPH-5B50  # 
+
+2F27 ; 5B80 ;  MA      #* ( ⼧ → 宀 ) KANGXI RADICAL ROOF → CJK UNIFIED IDEOGRAPH-5B80   # 
+
+FA04 ; 5B85 ;  MA      # ( 宅 → 宅 ) CJK COMPATIBILITY IDEOGRAPH-FA04 → CJK UNIFIED IDEOGRAPH-5B85       # 
+
+2F86D ;        5BC3 ;  MA      # ( 寃 → 寃 ) CJK COMPATIBILITY IDEOGRAPH-2F86D → CJK UNIFIED IDEOGRAPH-5BC3     # 
+
+2F86E ;        5BD8 ;  MA      # ( 寘 → 寘 ) CJK COMPATIBILITY IDEOGRAPH-2F86E → CJK UNIFIED IDEOGRAPH-5BD8     # 
+
+F95F ; 5BE7 ;  MA      # ( 寧 → 寧 ) CJK COMPATIBILITY IDEOGRAPH-F95F → CJK UNIFIED IDEOGRAPH-5BE7       # 
+F9AA ; 5BE7 ;  MA      # ( 寧 → 寧 ) CJK COMPATIBILITY IDEOGRAPH-F9AA → CJK UNIFIED IDEOGRAPH-5BE7       # 
+2F86F ;        5BE7 ;  MA      # ( 寧 → 寧 ) CJK COMPATIBILITY IDEOGRAPH-2F86F → CJK UNIFIED IDEOGRAPH-5BE7     # 
+
+F9BC ; 5BEE ;  MA      # ( 寮 → 寮 ) CJK COMPATIBILITY IDEOGRAPH-F9BC → CJK UNIFIED IDEOGRAPH-5BEE       # 
+
+2F870 ;        5BF3 ;  MA      # ( 寳 → 寳 ) CJK COMPATIBILITY IDEOGRAPH-2F870 → CJK UNIFIED IDEOGRAPH-5BF3     # 
+
+2F28 ; 5BF8 ;  MA      #* ( ⼨ → 寸 ) KANGXI RADICAL INCH → CJK UNIFIED IDEOGRAPH-5BF8   # 
+
+2F872 ;        5BFF ;  MA      # ( 寿 → 寿 ) CJK COMPATIBILITY IDEOGRAPH-2F872 → CJK UNIFIED IDEOGRAPH-5BFF     # 
+
+2F873 ;        5C06 ;  MA      # ( 将 → 将 ) CJK COMPATIBILITY IDEOGRAPH-2F873 → CJK UNIFIED IDEOGRAPH-5C06     # 
+
+2F29 ; 5C0F ;  MA      #* ( ⼩ → 小 ) KANGXI RADICAL SMALL → CJK UNIFIED IDEOGRAPH-5C0F  # 
+
+2F875 ;        5C22 ;  MA      # ( 尢 → 尢 ) CJK COMPATIBILITY IDEOGRAPH-2F875 → CJK UNIFIED IDEOGRAPH-5C22     # 
+2E90 ; 5C22 ;  MA      #* ( ⺐ → 尢 ) CJK RADICAL LAME THREE → CJK UNIFIED IDEOGRAPH-5C22        # 
+2F2A ; 5C22 ;  MA      #* ( ⼪ → 尢 ) KANGXI RADICAL LAME → CJK UNIFIED IDEOGRAPH-5C22   # 
+
+2E8F ; 5C23 ;  MA      #* ( ⺏ → 尣 ) CJK RADICAL LAME TWO → CJK UNIFIED IDEOGRAPH-5C23  # 
+
+2F2B ; 5C38 ;  MA      #* ( ⼫ → 尸 ) KANGXI RADICAL CORPSE → CJK UNIFIED IDEOGRAPH-5C38 # 
+
+F9BD ; 5C3F ;  MA      # ( 尿 → 尿 ) CJK COMPATIBILITY IDEOGRAPH-F9BD → CJK UNIFIED IDEOGRAPH-5C3F       # 
+
+2F877 ;        5C60 ;  MA      # ( 屠 → 屠 ) CJK COMPATIBILITY IDEOGRAPH-2F877 → CJK UNIFIED IDEOGRAPH-5C60     # 
+
+F94B ; 5C62 ;  MA      # ( 屢 → 屢 ) CJK COMPATIBILITY IDEOGRAPH-F94B → CJK UNIFIED IDEOGRAPH-5C62       # 
+
+FA3B ; 5C64 ;  MA      # ( 層 → 層 ) CJK COMPATIBILITY IDEOGRAPH-FA3B → CJK UNIFIED IDEOGRAPH-5C64       # 
+
+F9DF ; 5C65 ;  MA      # ( 履 → 履 ) CJK COMPATIBILITY IDEOGRAPH-F9DF → CJK UNIFIED IDEOGRAPH-5C65       # 
+
+FA3C ; 5C6E ;  MA      # ( 屮 → 屮 ) CJK COMPATIBILITY IDEOGRAPH-FA3C → CJK UNIFIED IDEOGRAPH-5C6E       # 
+2F878 ;        5C6E ;  MA      # ( 屮 → 屮 ) CJK COMPATIBILITY IDEOGRAPH-2F878 → CJK UNIFIED IDEOGRAPH-5C6E     # 
+2F2C ; 5C6E ;  MA      #* ( ⼬ → 屮 ) KANGXI RADICAL SPROUT → CJK UNIFIED IDEOGRAPH-5C6E # 
+
+2F2D ; 5C71 ;  MA      #* ( ⼭ → 山 ) KANGXI RADICAL MOUNTAIN → CJK UNIFIED IDEOGRAPH-5C71       # 
+
+2F87A ;        5C8D ;  MA      # ( 岍 → 岍 ) CJK COMPATIBILITY IDEOGRAPH-2F87A → CJK UNIFIED IDEOGRAPH-5C8D     # 
+
+2F879 ;        5CC0 ;  MA      # ( 峀 → 峀 ) CJK COMPATIBILITY IDEOGRAPH-2F879 → CJK UNIFIED IDEOGRAPH-5CC0     # 
+
+F9D5 ; 5D19 ;  MA      # ( 崙 → 崙 ) CJK COMPATIBILITY IDEOGRAPH-F9D5 → CJK UNIFIED IDEOGRAPH-5D19       # 
+
+2F87C ;        5D43 ;  MA      # ( 嵃 → 嵃 ) CJK COMPATIBILITY IDEOGRAPH-2F87C → CJK UNIFIED IDEOGRAPH-5D43     # 
+
+F921 ; 5D50 ;  MA      # ( 嵐 → 嵐 ) CJK COMPATIBILITY IDEOGRAPH-F921 → CJK UNIFIED IDEOGRAPH-5D50       # 
+
+2F87F ;        5D6B ;  MA      # ( 嵫 → 嵫 ) CJK COMPATIBILITY IDEOGRAPH-2F87F → CJK UNIFIED IDEOGRAPH-5D6B     # 
+
+2F87E ;        5D6E ;  MA      # ( 嵮 → 嵮 ) CJK COMPATIBILITY IDEOGRAPH-2F87E → CJK UNIFIED IDEOGRAPH-5D6E     # 
+
+2F880 ;        5D7C ;  MA      # ( 嵼 → 嵼 ) CJK COMPATIBILITY IDEOGRAPH-2F880 → CJK UNIFIED IDEOGRAPH-5D7C     # 
+
+2F9F4 ;        5DB2 ;  MA      # ( 嶲 → 嶲 ) CJK COMPATIBILITY IDEOGRAPH-2F9F4 → CJK UNIFIED IDEOGRAPH-5DB2     # 
+
+F9AB ; 5DBA ;  MA      # ( 嶺 → 嶺 ) CJK COMPATIBILITY IDEOGRAPH-F9AB → CJK UNIFIED IDEOGRAPH-5DBA       # 
+
+2F2E ; 5DDB ;  MA      #* ( ⼮ → 巛 ) KANGXI RADICAL RIVER → CJK UNIFIED IDEOGRAPH-5DDB  # 
+
+2F881 ;        5DE1 ;  MA      # ( 巡 → 巡 ) CJK COMPATIBILITY IDEOGRAPH-2F881 → CJK UNIFIED IDEOGRAPH-5DE1     # 
+
+2F882 ;        5DE2 ;  MA      # ( 巢 → 巢 ) CJK COMPATIBILITY IDEOGRAPH-2F882 → CJK UNIFIED IDEOGRAPH-5DE2     # 
+
+2F2F ; 5DE5 ;  MA      #* ( ⼯ → 工 ) KANGXI RADICAL WORK → CJK UNIFIED IDEOGRAPH-5DE5   # 
+
+2F30 ; 5DF1 ;  MA      #* ( ⼰ → 己 ) KANGXI RADICAL ONESELF → CJK UNIFIED IDEOGRAPH-5DF1        # 
+
+2E92 ; 5DF3 ;  MA      #* ( ⺒ → 巳 ) CJK RADICAL SNAKE → CJK UNIFIED IDEOGRAPH-5DF3     # 
+
+2F884 ;        5DFD ;  MA      # ( 巽 → 巽 ) CJK COMPATIBILITY IDEOGRAPH-2F884 → CJK UNIFIED IDEOGRAPH-5DFD     # 
+
+2F31 ; 5DFE ;  MA      #* ( ⼱ → 巾 ) KANGXI RADICAL TURBAN → CJK UNIFIED IDEOGRAPH-5DFE # 
+
+5E32 ; 5E21 ;  MA      # ( 帲 → 帡 ) CJK UNIFIED IDEOGRAPH-5E32 → CJK UNIFIED IDEOGRAPH-5E21     # 
+
+2F885 ;        5E28 ;  MA      # ( 帨 → 帨 ) CJK COMPATIBILITY IDEOGRAPH-2F885 → CJK UNIFIED IDEOGRAPH-5E28     # 
+
+2F886 ;        5E3D ;  MA      # ( 帽 → 帽 ) CJK COMPATIBILITY IDEOGRAPH-2F886 → CJK UNIFIED IDEOGRAPH-5E3D     # 
+
+2F887 ;        5E69 ;  MA      # ( 幩 → 幩 ) CJK COMPATIBILITY IDEOGRAPH-2F887 → CJK UNIFIED IDEOGRAPH-5E69     # 
+
+2F32 ; 5E72 ;  MA      #* ( ⼲ → 干 ) KANGXI RADICAL DRY → CJK UNIFIED IDEOGRAPH-5E72    # 
+
+F98E ; 5E74 ;  MA      # ( 年 → 年 ) CJK COMPATIBILITY IDEOGRAPH-F98E → CJK UNIFIED IDEOGRAPH-5E74       # 
+
+2E93 ; 5E7A ;  MA      #* ( ⺓ → 幺 ) CJK RADICAL THREAD → CJK UNIFIED IDEOGRAPH-5E7A    # 
+2F33 ; 5E7A ;  MA      #* ( ⼳ → 幺 ) KANGXI RADICAL SHORT THREAD → CJK UNIFIED IDEOGRAPH-5E7A   # 
+
+2F34 ; 5E7F ;  MA      #* ( ⼴ → 广 ) KANGXI RADICAL DOTTED CLIFF → CJK UNIFIED IDEOGRAPH-5E7F   # 
+
+FA01 ; 5EA6 ;  MA      # ( 度 → 度 ) CJK COMPATIBILITY IDEOGRAPH-FA01 → CJK UNIFIED IDEOGRAPH-5EA6       # 
+
+2F88B ;        5EB0 ;  MA      # ( 庰 → 庰 ) CJK COMPATIBILITY IDEOGRAPH-2F88B → CJK UNIFIED IDEOGRAPH-5EB0     # 
+
+2F88C ;        5EB3 ;  MA      # ( 庳 → 庳 ) CJK COMPATIBILITY IDEOGRAPH-2F88C → CJK UNIFIED IDEOGRAPH-5EB3     # 
+
+2F88D ;        5EB6 ;  MA      # ( 庶 → 庶 ) CJK COMPATIBILITY IDEOGRAPH-2F88D → CJK UNIFIED IDEOGRAPH-5EB6     # 
+
+F9A2 ; 5EC9 ;  MA      # ( 廉 → 廉 ) CJK COMPATIBILITY IDEOGRAPH-F9A2 → CJK UNIFIED IDEOGRAPH-5EC9       # 
+
+F928 ; 5ECA ;  MA      # ( 廊 → 廊 ) CJK COMPATIBILITY IDEOGRAPH-F928 → CJK UNIFIED IDEOGRAPH-5ECA       # 
+2F88E ;        5ECA ;  MA      # ( 廊 → 廊 ) CJK COMPATIBILITY IDEOGRAPH-2F88E → CJK UNIFIED IDEOGRAPH-5ECA     # 
+
+FA82 ; 5ED2 ;  MA      # ( 廒 → 廒 ) CJK COMPATIBILITY IDEOGRAPH-FA82 → CJK UNIFIED IDEOGRAPH-5ED2       # 
+
+FA0B ; 5ED3 ;  MA      # ( 廓 → 廓 ) CJK COMPATIBILITY IDEOGRAPH-FA0B → CJK UNIFIED IDEOGRAPH-5ED3       # 
+
+FA83 ; 5ED9 ;  MA      # ( 廙 → 廙 ) CJK COMPATIBILITY IDEOGRAPH-FA83 → CJK UNIFIED IDEOGRAPH-5ED9       # 
+
+F982 ; 5EEC ;  MA      # ( 廬 → 廬 ) CJK COMPATIBILITY IDEOGRAPH-F982 → CJK UNIFIED IDEOGRAPH-5EEC       # 
+
+2F35 ; 5EF4 ;  MA      #* ( ⼵ → 廴 ) KANGXI RADICAL LONG STRIDE → CJK UNIFIED IDEOGRAPH-5EF4    # 
+
+2F890 ;        5EFE ;  MA      # ( 廾 → 廾 ) CJK COMPATIBILITY IDEOGRAPH-2F890 → CJK UNIFIED IDEOGRAPH-5EFE     # 
+2F36 ; 5EFE ;  MA      #* ( ⼶ → 廾 ) KANGXI RADICAL TWO HANDS → CJK UNIFIED IDEOGRAPH-5EFE      # 
+
+F943 ; 5F04 ;  MA      # ( 弄 → 弄 ) CJK COMPATIBILITY IDEOGRAPH-F943 → CJK UNIFIED IDEOGRAPH-5F04       # 
+
+2F37 ; 5F0B ;  MA      #* ( ⼷ → 弋 ) KANGXI RADICAL SHOOT → CJK UNIFIED IDEOGRAPH-5F0B  # 
+
+2F38 ; 5F13 ;  MA      #* ( ⼸ → 弓 ) KANGXI RADICAL BOW → CJK UNIFIED IDEOGRAPH-5F13    # 
+
+2F894 ;        5F22 ;  MA      # ( 弢 → 弢 ) CJK COMPATIBILITY IDEOGRAPH-2F894 → CJK UNIFIED IDEOGRAPH-5F22     # 
+2F895 ;        5F22 ;  MA      # ( 弢 → 弢 ) CJK COMPATIBILITY IDEOGRAPH-2F895 → CJK UNIFIED IDEOGRAPH-5F22     # 
+
+2F39 ; 5F50 ;  MA      #* ( ⼹ → 彐 ) KANGXI RADICAL SNOUT → CJK UNIFIED IDEOGRAPH-5F50  # 
+
+2E94 ; 5F51 ;  MA      #* ( ⺔ → 彑 ) CJK RADICAL SNOUT ONE → CJK UNIFIED IDEOGRAPH-5F51 # 
+
+2F874 ;        5F53 ;  MA      # ( 当 → 当 ) CJK COMPATIBILITY IDEOGRAPH-2F874 → CJK UNIFIED IDEOGRAPH-5F53     # 
+
+2F3A ; 5F61 ;  MA      #* ( ⼺ → 彡 ) KANGXI RADICAL BRISTLE → CJK UNIFIED IDEOGRAPH-5F61        # 
+
+2F899 ;        5F62 ;  MA      # ( 形 → 形 ) CJK COMPATIBILITY IDEOGRAPH-2F899 → CJK UNIFIED IDEOGRAPH-5F62     # 
+
+FA84 ; 5F69 ;  MA      # ( 彩 → 彩 ) CJK COMPATIBILITY IDEOGRAPH-FA84 → CJK UNIFIED IDEOGRAPH-5F69       # 
+
+2F89A ;        5F6B ;  MA      # ( 彫 → 彫 ) CJK COMPATIBILITY IDEOGRAPH-2F89A → CJK UNIFIED IDEOGRAPH-5F6B     # 
+
+2F3B ; 5F73 ;  MA      #* ( ⼻ → 彳 ) KANGXI RADICAL STEP → CJK UNIFIED IDEOGRAPH-5F73   # 
+
+F9D8 ; 5F8B ;  MA      # ( 律 → 律 ) CJK COMPATIBILITY IDEOGRAPH-F9D8 → CJK UNIFIED IDEOGRAPH-5F8B       # 
+
+2F89C ;        5F9A ;  MA      # ( 徚 → 徚 ) CJK COMPATIBILITY IDEOGRAPH-2F89C → CJK UNIFIED IDEOGRAPH-5F9A     # 
+
+F966 ; 5FA9 ;  MA      # ( 復 → 復 ) CJK COMPATIBILITY IDEOGRAPH-F966 → CJK UNIFIED IDEOGRAPH-5FA9       # 
+
+FA85 ; 5FAD ;  MA      # ( 徭 → 徭 ) CJK COMPATIBILITY IDEOGRAPH-FA85 → CJK UNIFIED IDEOGRAPH-5FAD       # 
+
+2F3C ; 5FC3 ;  MA      #* ( ⼼ → 心 ) KANGXI RADICAL HEART → CJK UNIFIED IDEOGRAPH-5FC3  # 
+
+2E96 ; 5FC4 ;  MA      #* ( ⺖ → 忄 ) CJK RADICAL HEART ONE → CJK UNIFIED IDEOGRAPH-5FC4 # 
+
+2F89D ;        5FCD ;  MA      # ( 忍 → 忍 ) CJK COMPATIBILITY IDEOGRAPH-2F89D → CJK UNIFIED IDEOGRAPH-5FCD     # 
+
+2F89E ;        5FD7 ;  MA      # ( 志 → 志 ) CJK COMPATIBILITY IDEOGRAPH-2F89E → CJK UNIFIED IDEOGRAPH-5FD7     # 
+
+F9A3 ; 5FF5 ;  MA      # ( 念 → 念 ) CJK COMPATIBILITY IDEOGRAPH-F9A3 → CJK UNIFIED IDEOGRAPH-5FF5       # 
+
+2F89F ;        5FF9 ;  MA      # ( 忹 → 忹 ) CJK COMPATIBILITY IDEOGRAPH-2F89F → CJK UNIFIED IDEOGRAPH-5FF9     # 
+
+F960 ; 6012 ;  MA      # ( 怒 → 怒 ) CJK COMPATIBILITY IDEOGRAPH-F960 → CJK UNIFIED IDEOGRAPH-6012       # 
+
+F9AC ; 601C ;  MA      # ( 怜 → 怜 ) CJK COMPATIBILITY IDEOGRAPH-F9AC → CJK UNIFIED IDEOGRAPH-601C       # 
+
+FA6B ; 6075 ;  MA      # ( 恵 → 恵 ) CJK COMPATIBILITY IDEOGRAPH-FA6B → CJK UNIFIED IDEOGRAPH-6075       # 
+
+2F8A0 ;        6081 ;  MA      # ( 悁 → 悁 ) CJK COMPATIBILITY IDEOGRAPH-2F8A0 → CJK UNIFIED IDEOGRAPH-6081     # 
+
+FA3D ; 6094 ;  MA      # ( 悔 → 悔 ) CJK COMPATIBILITY IDEOGRAPH-FA3D → CJK UNIFIED IDEOGRAPH-6094       # 
+2F8A3 ;        6094 ;  MA      # ( 悔 → 悔 ) CJK COMPATIBILITY IDEOGRAPH-2F8A3 → CJK UNIFIED IDEOGRAPH-6094     # 
+
+2F8A5 ;        60C7 ;  MA      # ( 惇 → 惇 ) CJK COMPATIBILITY IDEOGRAPH-2F8A5 → CJK UNIFIED IDEOGRAPH-60C7     # 
+
+FA86 ; 60D8 ;  MA      # ( 惘 → 惘 ) CJK COMPATIBILITY IDEOGRAPH-FA86 → CJK UNIFIED IDEOGRAPH-60D8       # 
+
+F9B9 ; 60E1 ;  MA      # ( 惡 → 惡 ) CJK COMPATIBILITY IDEOGRAPH-F9B9 → CJK UNIFIED IDEOGRAPH-60E1       # 
+
+FA88 ; 6108 ;  MA      # ( 愈 → 愈 ) CJK COMPATIBILITY IDEOGRAPH-FA88 → CJK UNIFIED IDEOGRAPH-6108       # 
+
+F9D9 ; 6144 ;  MA      # ( 慄 → 慄 ) CJK COMPATIBILITY IDEOGRAPH-F9D9 → CJK UNIFIED IDEOGRAPH-6144       # 
+
+2F8A6 ;        6148 ;  MA      # ( 慈 → 慈 ) CJK COMPATIBILITY IDEOGRAPH-2F8A6 → CJK UNIFIED IDEOGRAPH-6148     # 
+
+2F8A7 ;        614C ;  MA      # ( 慌 → 慌 ) CJK COMPATIBILITY IDEOGRAPH-2F8A7 → CJK UNIFIED IDEOGRAPH-614C     # 
+2F8A9 ;        614C ;  MA      # ( 慌 → 慌 ) CJK COMPATIBILITY IDEOGRAPH-2F8A9 → CJK UNIFIED IDEOGRAPH-614C     # 
+
+FA87 ; 614E ;  MA      # ( 慎 → 慎 ) CJK COMPATIBILITY IDEOGRAPH-FA87 → CJK UNIFIED IDEOGRAPH-614E       # 
+2F8A8 ;        614E ;  MA      # ( 慎 → 慎 ) CJK COMPATIBILITY IDEOGRAPH-2F8A8 → CJK UNIFIED IDEOGRAPH-614E     # 
+
+FA8A ; 6160 ;  MA      # ( 慠 → 慠 ) CJK COMPATIBILITY IDEOGRAPH-FA8A → CJK UNIFIED IDEOGRAPH-6160       # 
+
+FA3E ; 6168 ;  MA      # ( 慨 → 慨 ) CJK COMPATIBILITY IDEOGRAPH-FA3E → CJK UNIFIED IDEOGRAPH-6168       # 
+
+2F8AA ;        617A ;  MA      # ( 慺 → 慺 ) CJK COMPATIBILITY IDEOGRAPH-2F8AA → CJK UNIFIED IDEOGRAPH-617A     # 
+
+FA3F ; 618E ;  MA      # ( 憎 → 憎 ) CJK COMPATIBILITY IDEOGRAPH-FA3F → CJK UNIFIED IDEOGRAPH-618E       # 
+FA89 ; 618E ;  MA      # ( 憎 → 憎 ) CJK COMPATIBILITY IDEOGRAPH-FA89 → CJK UNIFIED IDEOGRAPH-618E       # 
+2F8AB ;        618E ;  MA      # ( 憎 → 憎 ) CJK COMPATIBILITY IDEOGRAPH-2F8AB → CJK UNIFIED IDEOGRAPH-618E     # 
+
+F98F ; 6190 ;  MA      # ( 憐 → 憐 ) CJK COMPATIBILITY IDEOGRAPH-F98F → CJK UNIFIED IDEOGRAPH-6190       # 
+
+2F8AD ;        61A4 ;  MA      # ( 憤 → 憤 ) CJK COMPATIBILITY IDEOGRAPH-2F8AD → CJK UNIFIED IDEOGRAPH-61A4     # 
+
+2F8AE ;        61AF ;  MA      # ( 憯 → 憯 ) CJK COMPATIBILITY IDEOGRAPH-2F8AE → CJK UNIFIED IDEOGRAPH-61AF     # 
+
+2F8AC ;        61B2 ;  MA      # ( 憲 → 憲 ) CJK COMPATIBILITY IDEOGRAPH-2F8AC → CJK UNIFIED IDEOGRAPH-61B2     # 
+
+2F8AF ;        61DE ;  MA      # ( 懞 → 懞 ) CJK COMPATIBILITY IDEOGRAPH-2F8AF → CJK UNIFIED IDEOGRAPH-61DE     # 
+
+FA40 ; 61F2 ;  MA      # ( 懲 → 懲 ) CJK COMPATIBILITY IDEOGRAPH-FA40 → CJK UNIFIED IDEOGRAPH-61F2       # 
+FA8B ; 61F2 ;  MA      # ( 懲 → 懲 ) CJK COMPATIBILITY IDEOGRAPH-FA8B → CJK UNIFIED IDEOGRAPH-61F2       # 
+2F8B0 ;        61F2 ;  MA      # ( 懲 → 懲 ) CJK COMPATIBILITY IDEOGRAPH-2F8B0 → CJK UNIFIED IDEOGRAPH-61F2     # 
+
+F90D ; 61F6 ;  MA      # ( 懶 → 懶 ) CJK COMPATIBILITY IDEOGRAPH-F90D → CJK UNIFIED IDEOGRAPH-61F6       # 
+2F8B1 ;        61F6 ;  MA      # ( 懶 → 懶 ) CJK COMPATIBILITY IDEOGRAPH-2F8B1 → CJK UNIFIED IDEOGRAPH-61F6     # 
+
+F990 ; 6200 ;  MA      # ( 戀 → 戀 ) CJK COMPATIBILITY IDEOGRAPH-F990 → CJK UNIFIED IDEOGRAPH-6200       # 
+
+2F3D ; 6208 ;  MA      #* ( ⼽ → 戈 ) KANGXI RADICAL HALBERD → CJK UNIFIED IDEOGRAPH-6208        # 
+
+2F8B2 ;        6210 ;  MA      # ( 成 → 成 ) CJK COMPATIBILITY IDEOGRAPH-2F8B2 → CJK UNIFIED IDEOGRAPH-6210     # 
+
+2F8B3 ;        621B ;  MA      # ( 戛 → 戛 ) CJK COMPATIBILITY IDEOGRAPH-2F8B3 → CJK UNIFIED IDEOGRAPH-621B     # 
+
+F9D2 ; 622E ;  MA      # ( 戮 → 戮 ) CJK COMPATIBILITY IDEOGRAPH-F9D2 → CJK UNIFIED IDEOGRAPH-622E       # 
+
+FA8C ; 6234 ;  MA      # ( 戴 → 戴 ) CJK COMPATIBILITY IDEOGRAPH-FA8C → CJK UNIFIED IDEOGRAPH-6234       # 
+
+2F3E ; 6236 ;  MA      #* ( ⼾ → 戶 ) KANGXI RADICAL DOOR → CJK UNIFIED IDEOGRAPH-6236   # 
+6238 ; 6236 ;  MA      # ( 戸 → 戶 ) CJK UNIFIED IDEOGRAPH-6238 → CJK UNIFIED IDEOGRAPH-6236     # →⼾→
+
+2F3F ; 624B ;  MA      #* ( ⼿ → 手 ) KANGXI RADICAL HAND → CJK UNIFIED IDEOGRAPH-624B   # 
+
+2E98 ; 624C ;  MA      #* ( ⺘ → 扌 ) CJK RADICAL HAND → CJK UNIFIED IDEOGRAPH-624C      # 
+
+2F8B4 ;        625D ;  MA      # ( 扝 → 扝 ) CJK COMPATIBILITY IDEOGRAPH-2F8B4 → CJK UNIFIED IDEOGRAPH-625D     # 
+
+2F8B5 ;        62B1 ;  MA      # ( 抱 → 抱 ) CJK COMPATIBILITY IDEOGRAPH-2F8B5 → CJK UNIFIED IDEOGRAPH-62B1     # 
+
+F925 ; 62C9 ;  MA      # ( 拉 → 拉 ) CJK COMPATIBILITY IDEOGRAPH-F925 → CJK UNIFIED IDEOGRAPH-62C9       # 
+
+F95B ; 62CF ;  MA      # ( 拏 → 拏 ) CJK COMPATIBILITY IDEOGRAPH-F95B → CJK UNIFIED IDEOGRAPH-62CF       # 
+
+FA02 ; 62D3 ;  MA      # ( 拓 → 拓 ) CJK COMPATIBILITY IDEOGRAPH-FA02 → CJK UNIFIED IDEOGRAPH-62D3       # 
+
+2F8B6 ;        62D4 ;  MA      # ( 拔 → 拔 ) CJK COMPATIBILITY IDEOGRAPH-2F8B6 → CJK UNIFIED IDEOGRAPH-62D4     # 
+
+2F8BA ;        62FC ;  MA      # ( 拼 → 拼 ) CJK COMPATIBILITY IDEOGRAPH-2F8BA → CJK UNIFIED IDEOGRAPH-62FC     # 
+
+F973 ; 62FE ;  MA      # ( 拾 → 拾 ) CJK COMPATIBILITY IDEOGRAPH-F973 → CJK UNIFIED IDEOGRAPH-62FE       # 
+
+2F8B9 ;        633D ;  MA      # ( 挽 → 挽 ) CJK COMPATIBILITY IDEOGRAPH-2F8B9 → CJK UNIFIED IDEOGRAPH-633D     # 
+
+2F8B7 ;        6350 ;  MA      # ( 捐 → 捐 ) CJK COMPATIBILITY IDEOGRAPH-2F8B7 → CJK UNIFIED IDEOGRAPH-6350     # 
+
+2F8BB ;        6368 ;  MA      # ( 捨 → 捨 ) CJK COMPATIBILITY IDEOGRAPH-2F8BB → CJK UNIFIED IDEOGRAPH-6368     # 
+
+F9A4 ; 637B ;  MA      # ( 捻 → 捻 ) CJK COMPATIBILITY IDEOGRAPH-F9A4 → CJK UNIFIED IDEOGRAPH-637B       # 
+
+2F8BC ;        6383 ;  MA      # ( 掃 → 掃 ) CJK COMPATIBILITY IDEOGRAPH-2F8BC → CJK UNIFIED IDEOGRAPH-6383     # 
+
+F975 ; 63A0 ;  MA      # ( 掠 → 掠 ) CJK COMPATIBILITY IDEOGRAPH-F975 → CJK UNIFIED IDEOGRAPH-63A0       # 
+
+2F8C1 ;        63A9 ;  MA      # ( 掩 → 掩 ) CJK COMPATIBILITY IDEOGRAPH-2F8C1 → CJK UNIFIED IDEOGRAPH-63A9     # 
+
+FA8D ; 63C4 ;  MA      # ( 揄 → 揄 ) CJK COMPATIBILITY IDEOGRAPH-FA8D → CJK UNIFIED IDEOGRAPH-63C4       # 
+
+2F8C0 ;        63C5 ;  MA      # ( 揅 → 揅 ) CJK COMPATIBILITY IDEOGRAPH-2F8C0 → CJK UNIFIED IDEOGRAPH-63C5     # 
+
+2F8BD ;        63E4 ;  MA      # ( 揤 → 揤 ) CJK COMPATIBILITY IDEOGRAPH-2F8BD → CJK UNIFIED IDEOGRAPH-63E4     # 
+
+FA8E ; 641C ;  MA      # ( 搜 → 搜 ) CJK COMPATIBILITY IDEOGRAPH-FA8E → CJK UNIFIED IDEOGRAPH-641C       # 
+
+2F8BF ;        6422 ;  MA      # ( 搢 → 搢 ) CJK COMPATIBILITY IDEOGRAPH-2F8BF → CJK UNIFIED IDEOGRAPH-6422     # 
+
+FA8F ; 6452 ;  MA      # ( 摒 → 摒 ) CJK COMPATIBILITY IDEOGRAPH-FA8F → CJK UNIFIED IDEOGRAPH-6452       # 
+
+2F8C3 ;        6469 ;  MA      # ( 摩 → 摩 ) CJK COMPATIBILITY IDEOGRAPH-2F8C3 → CJK UNIFIED IDEOGRAPH-6469     # 
+
+2F8C6 ;        6477 ;  MA      # ( 摷 → 摷 ) CJK COMPATIBILITY IDEOGRAPH-2F8C6 → CJK UNIFIED IDEOGRAPH-6477     # 
+
+2F8C4 ;        647E ;  MA      # ( 摾 → 摾 ) CJK COMPATIBILITY IDEOGRAPH-2F8C4 → CJK UNIFIED IDEOGRAPH-647E     # 
+
+F991 ; 649A ;  MA      # ( 撚 → 撚 ) CJK COMPATIBILITY IDEOGRAPH-F991 → CJK UNIFIED IDEOGRAPH-649A       # 
+
+2F8C5 ;        649D ;  MA      # ( 撝 → 撝 ) CJK COMPATIBILITY IDEOGRAPH-2F8C5 → CJK UNIFIED IDEOGRAPH-649D     # 
+
+F930 ; 64C4 ;  MA      # ( 擄 → 擄 ) CJK COMPATIBILITY IDEOGRAPH-F930 → CJK UNIFIED IDEOGRAPH-64C4       # 
+
+2F40 ; 652F ;  MA      #* ( ⽀ → 支 ) KANGXI RADICAL BRANCH → CJK UNIFIED IDEOGRAPH-652F # 
+
+2F41 ; 6534 ;  MA      #* ( ⽁ → 攴 ) KANGXI RADICAL RAP → CJK UNIFIED IDEOGRAPH-6534    # 
+
+2E99 ; 6535 ;  MA      #* ( ⺙ → 攵 ) CJK RADICAL RAP → CJK UNIFIED IDEOGRAPH-6535       # 
+
+FA41 ; 654F ;  MA      # ( 敏 → 敏 ) CJK COMPATIBILITY IDEOGRAPH-FA41 → CJK UNIFIED IDEOGRAPH-654F       # 
+2F8C8 ;        654F ;  MA      # ( 敏 → 敏 ) CJK COMPATIBILITY IDEOGRAPH-2F8C8 → CJK UNIFIED IDEOGRAPH-654F     # 
+
+FA90 ; 6556 ;  MA      # ( 敖 → 敖 ) CJK COMPATIBILITY IDEOGRAPH-FA90 → CJK UNIFIED IDEOGRAPH-6556       # 
+
+2F8C9 ;        656C ;  MA      # ( 敬 → 敬 ) CJK COMPATIBILITY IDEOGRAPH-2F8C9 → CJK UNIFIED IDEOGRAPH-656C     # 
+
+F969 ; 6578 ;  MA      # ( 數 → 數 ) CJK COMPATIBILITY IDEOGRAPH-F969 → CJK UNIFIED IDEOGRAPH-6578       # 
+
+2F42 ; 6587 ;  MA      #* ( ⽂ → 文 ) KANGXI RADICAL SCRIPT → CJK UNIFIED IDEOGRAPH-6587 # 
+
+2EEB ; 6589 ;  MA      #* ( ⻫ → 斉 ) CJK RADICAL J-SIMPLIFIED EVEN → CJK UNIFIED IDEOGRAPH-6589 # 
+
+2F43 ; 6597 ;  MA      #* ( ⽃ → 斗 ) KANGXI RADICAL DIPPER → CJK UNIFIED IDEOGRAPH-6597 # 
+
+F9BE ; 6599 ;  MA      # ( 料 → 料 ) CJK COMPATIBILITY IDEOGRAPH-F9BE → CJK UNIFIED IDEOGRAPH-6599       # 
+
+2F44 ; 65A4 ;  MA      #* ( ⽄ → 斤 ) KANGXI RADICAL AXE → CJK UNIFIED IDEOGRAPH-65A4    # 
+
+2F45 ; 65B9 ;  MA      #* ( ⽅ → 方 ) KANGXI RADICAL SQUARE → CJK UNIFIED IDEOGRAPH-65B9 # 
+
+F983 ; 65C5 ;  MA      # ( 旅 → 旅 ) CJK COMPATIBILITY IDEOGRAPH-F983 → CJK UNIFIED IDEOGRAPH-65C5       # 
+
+2F46 ; 65E0 ;  MA      #* ( ⽆ → 无 ) KANGXI RADICAL NOT → CJK UNIFIED IDEOGRAPH-65E0    # 
+
+2E9B ; 65E1 ;  MA      #* ( ⺛ → 旡 ) CJK RADICAL CHOKE → CJK UNIFIED IDEOGRAPH-65E1     # 
+
+FA42 ; 65E2 ;  MA      # ( 既 → 既 ) CJK COMPATIBILITY IDEOGRAPH-FA42 → CJK UNIFIED IDEOGRAPH-65E2       # 
+
+2F8CB ;        65E3 ;  MA      # ( 旣 → 旣 ) CJK COMPATIBILITY IDEOGRAPH-2F8CB → CJK UNIFIED IDEOGRAPH-65E3     # 
+
+2F47 ; 65E5 ;  MA      #* ( ⽇ → 日 ) KANGXI RADICAL SUN → CJK UNIFIED IDEOGRAPH-65E5    # 
+
+F9E0 ; 6613 ;  MA      # ( 易 → 易 ) CJK COMPATIBILITY IDEOGRAPH-F9E0 → CJK UNIFIED IDEOGRAPH-6613       # 
+
+2F8CD ;        6649 ;  MA      # ( 晉 → 晉 ) CJK COMPATIBILITY IDEOGRAPH-2F8CD → CJK UNIFIED IDEOGRAPH-6649     # 
+
+6669 ; 665A ;  MA      # ( 晩 → 晚 ) CJK UNIFIED IDEOGRAPH-6669 → CJK UNIFIED IDEOGRAPH-665A     # 
+
+FA12 ; 6674 ;  MA      # ( 晴 → 晴 ) CJK COMPATIBILITY IDEOGRAPH-FA12 → CJK UNIFIED IDEOGRAPH-6674       # 
+FA91 ; 6674 ;  MA      # ( 晴 → 晴 ) CJK COMPATIBILITY IDEOGRAPH-FA91 → CJK UNIFIED IDEOGRAPH-6674       # 
+
+F9C5 ; 6688 ;  MA      # ( 暈 → 暈 ) CJK COMPATIBILITY IDEOGRAPH-F9C5 → CJK UNIFIED IDEOGRAPH-6688       # 
+
+FA43 ; 6691 ;  MA      # ( 暑 → 暑 ) CJK COMPATIBILITY IDEOGRAPH-FA43 → CJK UNIFIED IDEOGRAPH-6691       # 
+2F8CF ;        6691 ;  MA      # ( 暑 → 暑 ) CJK COMPATIBILITY IDEOGRAPH-2F8CF → CJK UNIFIED IDEOGRAPH-6691     # 
+
+2F8D5 ;        669C ;  MA      # ( 暜 → 暜 ) CJK COMPATIBILITY IDEOGRAPH-2F8D5 → CJK UNIFIED IDEOGRAPH-669C     # 
+
+FA06 ; 66B4 ;  MA      # ( 暴 → 暴 ) CJK COMPATIBILITY IDEOGRAPH-FA06 → CJK UNIFIED IDEOGRAPH-66B4       # 
+
+F98B ; 66C6 ;  MA      # ( 曆 → 曆 ) CJK COMPATIBILITY IDEOGRAPH-F98B → CJK UNIFIED IDEOGRAPH-66C6       # 
+
+2F48 ; 66F0 ;  MA      #* ( ⽈ → 曰 ) KANGXI RADICAL SAY → CJK UNIFIED IDEOGRAPH-66F0    # 
+
+F901 ; 66F4 ;  MA      # ( 更 → 更 ) CJK COMPATIBILITY IDEOGRAPH-F901 → CJK UNIFIED IDEOGRAPH-66F4       # 
+
+2F8CC ;        66F8 ;  MA      # ( 書 → 書 ) CJK COMPATIBILITY IDEOGRAPH-2F8CC → CJK UNIFIED IDEOGRAPH-66F8     # 
+
+2F8D4 ;        6700 ;  MA      # ( 最 → 最 ) CJK COMPATIBILITY IDEOGRAPH-2F8D4 → CJK UNIFIED IDEOGRAPH-6700     # 
+
+2F49 ; 6708 ;  MA      #* ( ⽉ → 月 ) KANGXI RADICAL MOON → CJK UNIFIED IDEOGRAPH-6708   # 
+
+80A6 ; 670C ;  MA      # ( 肦 → 朌 ) CJK UNIFIED IDEOGRAPH-80A6 → CJK UNIFIED IDEOGRAPH-670C     # 
+
+80D0 ; 670F ;  MA      # ( 胐 → 朏 ) CJK UNIFIED IDEOGRAPH-80D0 → CJK UNIFIED IDEOGRAPH-670F     # 
+
+80CA ; 6710 ;  MA      # ( 胊 → 朐 ) CJK UNIFIED IDEOGRAPH-80CA → CJK UNIFIED IDEOGRAPH-6710     # 
+
+8101 ; 6713 ;  MA      # ( 脁 → 朓 ) CJK UNIFIED IDEOGRAPH-8101 → CJK UNIFIED IDEOGRAPH-6713     # 
+
+F929 ; 6717 ;  MA      # ( 朗 → 朗 ) CJK COMPATIBILITY IDEOGRAPH-F929 → CJK UNIFIED IDEOGRAPH-6717       # 
+FA92 ; 6717 ;  MA      # ( 朗 → 朗 ) CJK COMPATIBILITY IDEOGRAPH-FA92 → CJK UNIFIED IDEOGRAPH-6717       # 
+2F8D8 ;        6717 ;  MA      # ( 朗 → 朗 ) CJK COMPATIBILITY IDEOGRAPH-2F8D8 → CJK UNIFIED IDEOGRAPH-6717     # 
+
+8127 ; 6718 ;  MA      # ( 脧 → 朘 ) CJK UNIFIED IDEOGRAPH-8127 → CJK UNIFIED IDEOGRAPH-6718     # 
+
+FA93 ; 671B ;  MA      # ( 望 → 望 ) CJK COMPATIBILITY IDEOGRAPH-FA93 → CJK UNIFIED IDEOGRAPH-671B       # 
+2F8D9 ;        671B ;  MA      # ( 望 → 望 ) CJK COMPATIBILITY IDEOGRAPH-2F8D9 → CJK UNIFIED IDEOGRAPH-671B     # 
+
+2F8DA ;        6721 ;  MA      # ( 朡 → 朡 ) CJK COMPATIBILITY IDEOGRAPH-2F8DA → CJK UNIFIED IDEOGRAPH-6721     # 
+
+81A7 ; 6723 ;  MA      # ( 膧 → 朣 ) CJK UNIFIED IDEOGRAPH-81A7 → CJK UNIFIED IDEOGRAPH-6723     # 
+
+2F4A ; 6728 ;  MA      #* ( ⽊ → 木 ) KANGXI RADICAL TREE → CJK UNIFIED IDEOGRAPH-6728   # 
+
+F9E1 ; 674E ;  MA      # ( 李 → 李 ) CJK COMPATIBILITY IDEOGRAPH-F9E1 → CJK UNIFIED IDEOGRAPH-674E       # 
+
+2F8DC ;        6753 ;  MA      # ( 杓 → 杓 ) CJK COMPATIBILITY IDEOGRAPH-2F8DC → CJK UNIFIED IDEOGRAPH-6753     # 
+
+FA94 ; 6756 ;  MA      # ( 杖 → 杖 ) CJK COMPATIBILITY IDEOGRAPH-FA94 → CJK UNIFIED IDEOGRAPH-6756       # 
+
+2F8DB ;        675E ;  MA      # ( 杞 → 杞 ) CJK COMPATIBILITY IDEOGRAPH-2F8DB → CJK UNIFIED IDEOGRAPH-675E     # 
+
+67FF ; 676E ;  MA      # ( 柿 → 杮 ) CJK UNIFIED IDEOGRAPH-67FF → CJK UNIFIED IDEOGRAPH-676E     # 
+
+F9C8 ; 677B ;  MA      # ( 杻 → 杻 ) CJK COMPATIBILITY IDEOGRAPH-F9C8 → CJK UNIFIED IDEOGRAPH-677B       # 
+
+2F8E0 ;        6785 ;  MA      # ( 枅 → 枅 ) CJK COMPATIBILITY IDEOGRAPH-2F8E0 → CJK UNIFIED IDEOGRAPH-6785     # 
+
+F9F4 ; 6797 ;  MA      # ( 林 → 林 ) CJK COMPATIBILITY IDEOGRAPH-F9F4 → CJK UNIFIED IDEOGRAPH-6797       # 
+
+F9C9 ; 67F3 ;  MA      # ( 柳 → 柳 ) CJK COMPATIBILITY IDEOGRAPH-F9C9 → CJK UNIFIED IDEOGRAPH-67F3       # 
+
+2F8DF ;        67FA ;  MA      # ( 柺 → 柺 ) CJK COMPATIBILITY IDEOGRAPH-2F8DF → CJK UNIFIED IDEOGRAPH-67FA     # 
+
+F9DA ; 6817 ;  MA      # ( 栗 → 栗 ) CJK COMPATIBILITY IDEOGRAPH-F9DA → CJK UNIFIED IDEOGRAPH-6817       # 
+
+2F8E5 ;        681F ;  MA      # ( 栟 → 栟 ) CJK COMPATIBILITY IDEOGRAPH-2F8E5 → CJK UNIFIED IDEOGRAPH-681F     # 
+
+2F8E1 ;        6852 ;  MA      # ( 桒 → 桒 ) CJK COMPATIBILITY IDEOGRAPH-2F8E1 → CJK UNIFIED IDEOGRAPH-6852     # 
+
+F97A ; 6881 ;  MA      # ( 梁 → 梁 ) CJK COMPATIBILITY IDEOGRAPH-F97A → CJK UNIFIED IDEOGRAPH-6881       # 
+
+FA44 ; 6885 ;  MA      # ( 梅 → 梅 ) CJK COMPATIBILITY IDEOGRAPH-FA44 → CJK UNIFIED IDEOGRAPH-6885       # 
+2F8E2 ;        6885 ;  MA      # ( 梅 → 梅 ) CJK COMPATIBILITY IDEOGRAPH-2F8E2 → CJK UNIFIED IDEOGRAPH-6885     # 
+
+2F8E4 ;        688E ;  MA      # ( 梎 → 梎 ) CJK COMPATIBILITY IDEOGRAPH-2F8E4 → CJK UNIFIED IDEOGRAPH-688E     # 
+
+F9E2 ; 68A8 ;  MA      # ( 梨 → 梨 ) CJK COMPATIBILITY IDEOGRAPH-F9E2 → CJK UNIFIED IDEOGRAPH-68A8       # 
+
+2F8E6 ;        6914 ;  MA      # ( 椔 → 椔 ) CJK COMPATIBILITY IDEOGRAPH-2F8E6 → CJK UNIFIED IDEOGRAPH-6914     # 
+
+2F8E8 ;        6942 ;  MA      # ( 楂 → 楂 ) CJK COMPATIBILITY IDEOGRAPH-2F8E8 → CJK UNIFIED IDEOGRAPH-6942     # 
+
+6A27 ; 699D ;  MA      # ( 樧 → 榝 ) CJK UNIFIED IDEOGRAPH-6A27 → CJK UNIFIED IDEOGRAPH-699D     # 
+
+2F8E9 ;        69A3 ;  MA      # ( 榣 → 榣 ) CJK COMPATIBILITY IDEOGRAPH-2F8E9 → CJK UNIFIED IDEOGRAPH-69A3     # 
+
+2F8EA ;        69EA ;  MA      # ( 槪 → 槪 ) CJK COMPATIBILITY IDEOGRAPH-2F8EA → CJK UNIFIED IDEOGRAPH-69EA     # 
+
+F914 ; 6A02 ;  MA      # ( 樂 → 樂 ) CJK COMPATIBILITY IDEOGRAPH-F914 → CJK UNIFIED IDEOGRAPH-6A02       # 
+F95C ; 6A02 ;  MA      # ( 樂 → 樂 ) CJK COMPATIBILITY IDEOGRAPH-F95C → CJK UNIFIED IDEOGRAPH-6A02       # 
+F9BF ; 6A02 ;  MA      # ( 樂 → 樂 ) CJK COMPATIBILITY IDEOGRAPH-F9BF → CJK UNIFIED IDEOGRAPH-6A02       # 
+
+F94C ; 6A13 ;  MA      # ( 樓 → 樓 ) CJK COMPATIBILITY IDEOGRAPH-F94C → CJK UNIFIED IDEOGRAPH-6A13       # 
+
+2F8EB ;        6AA8 ;  MA      # ( 檨 → 檨 ) CJK COMPATIBILITY IDEOGRAPH-2F8EB → CJK UNIFIED IDEOGRAPH-6AA8     # 
+
+F931 ; 6AD3 ;  MA      # ( 櫓 → 櫓 ) CJK COMPATIBILITY IDEOGRAPH-F931 → CJK UNIFIED IDEOGRAPH-6AD3       # 
+
+2F8ED ;        6ADB ;  MA      # ( 櫛 → 櫛 ) CJK COMPATIBILITY IDEOGRAPH-2F8ED → CJK UNIFIED IDEOGRAPH-6ADB     # 
+
+F91D ; 6B04 ;  MA      # ( 欄 → 欄 ) CJK COMPATIBILITY IDEOGRAPH-F91D → CJK UNIFIED IDEOGRAPH-6B04       # 
+
+2F4B ; 6B20 ;  MA      #* ( ⽋ → 欠 ) KANGXI RADICAL LACK → CJK UNIFIED IDEOGRAPH-6B20   # 
+
+2F8EF ;        6B21 ;  MA      # ( 次 → 次 ) CJK COMPATIBILITY IDEOGRAPH-2F8EF → CJK UNIFIED IDEOGRAPH-6B21     # 
+
+2F8F1 ;        6B54 ;  MA      # ( 歔 → 歔 ) CJK COMPATIBILITY IDEOGRAPH-2F8F1 → CJK UNIFIED IDEOGRAPH-6B54     # 
+
+2F4C ; 6B62 ;  MA      #* ( ⽌ → 止 ) KANGXI RADICAL STOP → CJK UNIFIED IDEOGRAPH-6B62   # 
+
+2EED ; 6B6F ;  MA      #* ( ⻭ → 歯 ) CJK RADICAL J-SIMPLIFIED TOOTH → CJK UNIFIED IDEOGRAPH-6B6F        # 
+
+2F8F3 ;        6B72 ;  MA      # ( 歲 → 歲 ) CJK COMPATIBILITY IDEOGRAPH-2F8F3 → CJK UNIFIED IDEOGRAPH-6B72     # 
+
+F98C ; 6B77 ;  MA      # ( 歷 → 歷 ) CJK COMPATIBILITY IDEOGRAPH-F98C → CJK UNIFIED IDEOGRAPH-6B77       # 
+
+FA95 ; 6B79 ;  MA      # ( 歹 → 歹 ) CJK COMPATIBILITY IDEOGRAPH-FA95 → CJK UNIFIED IDEOGRAPH-6B79       # 
+2F4D ; 6B79 ;  MA      #* ( ⽍ → 歹 ) KANGXI RADICAL DEATH → CJK UNIFIED IDEOGRAPH-6B79  # 
+
+2E9E ; 6B7A ;  MA      #* ( ⺞ → 歺 ) CJK RADICAL DEATH → CJK UNIFIED IDEOGRAPH-6B7A     # 
+
+2F8F4 ;        6B9F ;  MA      # ( 殟 → 殟 ) CJK COMPATIBILITY IDEOGRAPH-2F8F4 → CJK UNIFIED IDEOGRAPH-6B9F     # 
+
+F9A5 ; 6BAE ;  MA      # ( 殮 → 殮 ) CJK COMPATIBILITY IDEOGRAPH-F9A5 → CJK UNIFIED IDEOGRAPH-6BAE       # 
+
+2F4E ; 6BB3 ;  MA      #* ( ⽎ → 殳 ) KANGXI RADICAL WEAPON → CJK UNIFIED IDEOGRAPH-6BB3 # 
+
+F970 ; 6BBA ;  MA      # ( 殺 → 殺 ) CJK COMPATIBILITY IDEOGRAPH-F970 → CJK UNIFIED IDEOGRAPH-6BBA       # 
+FA96 ; 6BBA ;  MA      # ( 殺 → 殺 ) CJK COMPATIBILITY IDEOGRAPH-FA96 → CJK UNIFIED IDEOGRAPH-6BBA       # 
+2F8F5 ;        6BBA ;  MA      # ( 殺 → 殺 ) CJK COMPATIBILITY IDEOGRAPH-2F8F5 → CJK UNIFIED IDEOGRAPH-6BBA     # 
+
+2F8F6 ;        6BBB ;  MA      # ( 殻 → 殻 ) CJK COMPATIBILITY IDEOGRAPH-2F8F6 → CJK UNIFIED IDEOGRAPH-6BBB     # 
+
+2F4F ; 6BCB ;  MA      #* ( ⽏ → 毋 ) KANGXI RADICAL DO NOT → CJK UNIFIED IDEOGRAPH-6BCB # 
+
+2E9F ; 6BCD ;  MA      #* ( ⺟ → 母 ) CJK RADICAL MOTHER → CJK UNIFIED IDEOGRAPH-6BCD    # 
+
+2F50 ; 6BD4 ;  MA      #* ( ⽐ → 比 ) KANGXI RADICAL COMPARE → CJK UNIFIED IDEOGRAPH-6BD4        # 
+
+2F51 ; 6BDB ;  MA      #* ( ⽑ → 毛 ) KANGXI RADICAL FUR → CJK UNIFIED IDEOGRAPH-6BDB    # 
+
+2F52 ; 6C0F ;  MA      #* ( ⽒ → 氏 ) KANGXI RADICAL CLAN → CJK UNIFIED IDEOGRAPH-6C0F   # 
+
+2EA0 ; 6C11 ;  MA      #* ( ⺠ → 民 ) CJK RADICAL CIVILIAN → CJK UNIFIED IDEOGRAPH-6C11  # 
+
+2F53 ; 6C14 ;  MA      #* ( ⽓ → 气 ) KANGXI RADICAL STEAM → CJK UNIFIED IDEOGRAPH-6C14  # 
+
+2F54 ; 6C34 ;  MA      #* ( ⽔ → 水 ) KANGXI RADICAL WATER → CJK UNIFIED IDEOGRAPH-6C34  # 
+
+2EA1 ; 6C35 ;  MA      #* ( ⺡ → 氵 ) CJK RADICAL WATER ONE → CJK UNIFIED IDEOGRAPH-6C35 # 
+
+2EA2 ; 6C3A ;  MA      #* ( ⺢ → 氺 ) CJK RADICAL WATER TWO → CJK UNIFIED IDEOGRAPH-6C3A # 
+
+2F8FA ;        6C4E ;  MA      # ( 汎 → 汎 ) CJK COMPATIBILITY IDEOGRAPH-2F8FA → CJK UNIFIED IDEOGRAPH-6C4E     # 
+
+2F8FE ;        6C67 ;  MA      # ( 汧 → 汧 ) CJK COMPATIBILITY IDEOGRAPH-2F8FE → CJK UNIFIED IDEOGRAPH-6C67     # 
+
+F972 ; 6C88 ;  MA      # ( 沈 → 沈 ) CJK COMPATIBILITY IDEOGRAPH-F972 → CJK UNIFIED IDEOGRAPH-6C88       # 
+
+2F8FC ;        6CBF ;  MA      # ( 沿 → 沿 ) CJK COMPATIBILITY IDEOGRAPH-2F8FC → CJK UNIFIED IDEOGRAPH-6CBF     # 
+
+F968 ; 6CCC ;  MA      # ( 泌 → 泌 ) CJK COMPATIBILITY IDEOGRAPH-F968 → CJK UNIFIED IDEOGRAPH-6CCC       # 
+
+2F8FD ;        6CCD ;  MA      # ( 泍 → 泍 ) CJK COMPATIBILITY IDEOGRAPH-2F8FD → CJK UNIFIED IDEOGRAPH-6CCD     # 
+
+F9E3 ; 6CE5 ;  MA      # ( 泥 → 泥 ) CJK COMPATIBILITY IDEOGRAPH-F9E3 → CJK UNIFIED IDEOGRAPH-6CE5       # 
+
+2F8FF ;        6D16 ;  MA      # ( 洖 → 洖 ) CJK COMPATIBILITY IDEOGRAPH-2F8FF → CJK UNIFIED IDEOGRAPH-6D16     # 
+
+F915 ; 6D1B ;  MA      # ( 洛 → 洛 ) CJK COMPATIBILITY IDEOGRAPH-F915 → CJK UNIFIED IDEOGRAPH-6D1B       # 
+
+FA05 ; 6D1E ;  MA      # ( 洞 → 洞 ) CJK COMPATIBILITY IDEOGRAPH-FA05 → CJK UNIFIED IDEOGRAPH-6D1E       # 
+
+2F907 ;        6D34 ;  MA      # ( 洴 → 洴 ) CJK COMPATIBILITY IDEOGRAPH-2F907 → CJK UNIFIED IDEOGRAPH-6D34     # 
+
+2F900 ;        6D3E ;  MA      # ( 派 → 派 ) CJK COMPATIBILITY IDEOGRAPH-2F900 → CJK UNIFIED IDEOGRAPH-6D3E     # 
+
+F9CA ; 6D41 ;  MA      # ( 流 → 流 ) CJK COMPATIBILITY IDEOGRAPH-F9CA → CJK UNIFIED IDEOGRAPH-6D41       # 
+FA97 ; 6D41 ;  MA      # ( 流 → 流 ) CJK COMPATIBILITY IDEOGRAPH-FA97 → CJK UNIFIED IDEOGRAPH-6D41       # 
+2F902 ;        6D41 ;  MA      # ( 流 → 流 ) CJK COMPATIBILITY IDEOGRAPH-2F902 → CJK UNIFIED IDEOGRAPH-6D41     # 
+
+2F903 ;        6D69 ;  MA      # ( 浩 → 浩 ) CJK COMPATIBILITY IDEOGRAPH-2F903 → CJK UNIFIED IDEOGRAPH-6D69     # 
+
+F92A ; 6D6A ;  MA      # ( 浪 → 浪 ) CJK COMPATIBILITY IDEOGRAPH-F92A → CJK UNIFIED IDEOGRAPH-6D6A       # 
+
+FA45 ; 6D77 ;  MA      # ( 海 → 海 ) CJK COMPATIBILITY IDEOGRAPH-FA45 → CJK UNIFIED IDEOGRAPH-6D77       # 
+2F901 ;        6D77 ;  MA      # ( 海 → 海 ) CJK COMPATIBILITY IDEOGRAPH-2F901 → CJK UNIFIED IDEOGRAPH-6D77     # 
+
+2F904 ;        6D78 ;  MA      # ( 浸 → 浸 ) CJK COMPATIBILITY IDEOGRAPH-2F904 → CJK UNIFIED IDEOGRAPH-6D78     # 
+
+2F905 ;        6D85 ;  MA      # ( 涅 → 涅 ) CJK COMPATIBILITY IDEOGRAPH-2F905 → CJK UNIFIED IDEOGRAPH-6D85     # 
+
+F9F5 ; 6DCB ;  MA      # ( 淋 → 淋 ) CJK COMPATIBILITY IDEOGRAPH-F9F5 → CJK UNIFIED IDEOGRAPH-6DCB       # 
+
+F94D ; 6DDA ;  MA      # ( 淚 → 淚 ) CJK COMPATIBILITY IDEOGRAPH-F94D → CJK UNIFIED IDEOGRAPH-6DDA       # 
+
+F9D6 ; 6DEA ;  MA      # ( 淪 → 淪 ) CJK COMPATIBILITY IDEOGRAPH-F9D6 → CJK UNIFIED IDEOGRAPH-6DEA       # 
+
+2F90E ;        6DF9 ;  MA      # ( 淹 → 淹 ) CJK COMPATIBILITY IDEOGRAPH-2F90E → CJK UNIFIED IDEOGRAPH-6DF9     # 
+
+FA46 ; 6E1A ;  MA      # ( 渚 → 渚 ) CJK COMPATIBILITY IDEOGRAPH-FA46 → CJK UNIFIED IDEOGRAPH-6E1A       # 
+
+2F908 ;        6E2F ;  MA      # ( 港 → 港 ) CJK COMPATIBILITY IDEOGRAPH-2F908 → CJK UNIFIED IDEOGRAPH-6E2F     # 
+
+2F909 ;        6E6E ;  MA      # ( 湮 → 湮 ) CJK COMPATIBILITY IDEOGRAPH-2F909 → CJK UNIFIED IDEOGRAPH-6E6E     # 
+
+6F59 ; 6E88 ;  MA      # ( 潙 → 溈 ) CJK UNIFIED IDEOGRAPH-6F59 → CJK UNIFIED IDEOGRAPH-6E88     # 
+
+F9CB ; 6E9C ;  MA      # ( 溜 → 溜 ) CJK COMPATIBILITY IDEOGRAPH-F9CB → CJK UNIFIED IDEOGRAPH-6E9C       # 
+
+F9EC ; 6EBA ;  MA      # ( 溺 → 溺 ) CJK COMPATIBILITY IDEOGRAPH-F9EC → CJK UNIFIED IDEOGRAPH-6EBA       # 
+
+2F90C ;        6EC7 ;  MA      # ( 滇 → 滇 ) CJK COMPATIBILITY IDEOGRAPH-2F90C → CJK UNIFIED IDEOGRAPH-6EC7     # 
+
+FA99 ; 6ECB ;  MA      # ( 滋 → 滋 ) CJK COMPATIBILITY IDEOGRAPH-FA99 → CJK UNIFIED IDEOGRAPH-6ECB       # 
+2F90B ;        6ECB ;  MA      # ( 滋 → 滋 ) CJK COMPATIBILITY IDEOGRAPH-2F90B → CJK UNIFIED IDEOGRAPH-6ECB     # 
+
+F904 ; 6ED1 ;  MA      # ( 滑 → 滑 ) CJK COMPATIBILITY IDEOGRAPH-F904 → CJK UNIFIED IDEOGRAPH-6ED1       # 
+
+FA98 ; 6EDB ;  MA      # ( 滛 → 滛 ) CJK COMPATIBILITY IDEOGRAPH-FA98 → CJK UNIFIED IDEOGRAPH-6EDB       # 
+
+F94E ; 6F0F ;  MA      # ( 漏 → 漏 ) CJK COMPATIBILITY IDEOGRAPH-F94E → CJK UNIFIED IDEOGRAPH-6F0F       # 
+
+FA47 ; 6F22 ;  MA      # ( 漢 → 漢 ) CJK COMPATIBILITY IDEOGRAPH-FA47 → CJK UNIFIED IDEOGRAPH-6F22       # 
+FA9A ; 6F22 ;  MA      # ( 漢 → 漢 ) CJK COMPATIBILITY IDEOGRAPH-FA9A → CJK UNIFIED IDEOGRAPH-6F22       # 
+
+F992 ; 6F23 ;  MA      # ( 漣 → 漣 ) CJK COMPATIBILITY IDEOGRAPH-F992 → CJK UNIFIED IDEOGRAPH-6F23       # 
+
+2F90F ;        6F6E ;  MA      # ( 潮 → 潮 ) CJK COMPATIBILITY IDEOGRAPH-2F90F → CJK UNIFIED IDEOGRAPH-6F6E     # 
+
+2F912 ;        6FC6 ;  MA      # ( 濆 → 濆 ) CJK COMPATIBILITY IDEOGRAPH-2F912 → CJK UNIFIED IDEOGRAPH-6FC6     # 
+
+F922 ; 6FEB ;  MA      # ( 濫 → 濫 ) CJK COMPATIBILITY IDEOGRAPH-F922 → CJK UNIFIED IDEOGRAPH-6FEB       # 
+
+F984 ; 6FFE ;  MA      # ( 濾 → 濾 ) CJK COMPATIBILITY IDEOGRAPH-F984 → CJK UNIFIED IDEOGRAPH-6FFE       # 
+
+2F915 ;        701B ;  MA      # ( 瀛 → 瀛 ) CJK COMPATIBILITY IDEOGRAPH-2F915 → CJK UNIFIED IDEOGRAPH-701B     # 
+
+FA9B ; 701E ;  MA      # ( 瀞 → 瀞 ) CJK COMPATIBILITY IDEOGRAPH-FA9B → CJK UNIFIED IDEOGRAPH-701E       # 
+2F914 ;        701E ;  MA      # ( 瀞 → 瀞 ) CJK COMPATIBILITY IDEOGRAPH-2F914 → CJK UNIFIED IDEOGRAPH-701E     # 
+
+2F913 ;        7039 ;  MA      # ( 瀹 → 瀹 ) CJK COMPATIBILITY IDEOGRAPH-2F913 → CJK UNIFIED IDEOGRAPH-7039     # 
+
+2F917 ;        704A ;  MA      # ( 灊 → 灊 ) CJK COMPATIBILITY IDEOGRAPH-2F917 → CJK UNIFIED IDEOGRAPH-704A     # 
+
+2F55 ; 706B ;  MA      #* ( ⽕ → 火 ) KANGXI RADICAL FIRE → CJK UNIFIED IDEOGRAPH-706B   # 
+
+2EA3 ; 706C ;  MA      #* ( ⺣ → 灬 ) CJK RADICAL FIRE → CJK UNIFIED IDEOGRAPH-706C      # 
+
+2F835 ;        7070 ;  MA      # ( 灰 → 灰 ) CJK COMPATIBILITY IDEOGRAPH-2F835 → CJK UNIFIED IDEOGRAPH-7070     # 
+
+2F919 ;        7077 ;  MA      # ( 灷 → 灷 ) CJK COMPATIBILITY IDEOGRAPH-2F919 → CJK UNIFIED IDEOGRAPH-7077     # 
+
+2F918 ;        707D ;  MA      # ( 災 → 災 ) CJK COMPATIBILITY IDEOGRAPH-2F918 → CJK UNIFIED IDEOGRAPH-707D     # 
+
+F9FB ; 7099 ;  MA      # ( 炙 → 炙 ) CJK COMPATIBILITY IDEOGRAPH-F9FB → CJK UNIFIED IDEOGRAPH-7099       # 
+
+2F91A ;        70AD ;  MA      # ( 炭 → 炭 ) CJK COMPATIBILITY IDEOGRAPH-2F91A → CJK UNIFIED IDEOGRAPH-70AD     # 
+
+F99F ; 70C8 ;  MA      # ( 烈 → 烈 ) CJK COMPATIBILITY IDEOGRAPH-F99F → CJK UNIFIED IDEOGRAPH-70C8       # 
+
+F916 ; 70D9 ;  MA      # ( 烙 → 烙 ) CJK COMPATIBILITY IDEOGRAPH-F916 → CJK UNIFIED IDEOGRAPH-70D9       # 
+
+2F91C ;        7145 ;  MA      # ( 煅 → 煅 ) CJK COMPATIBILITY IDEOGRAPH-2F91C → CJK UNIFIED IDEOGRAPH-7145     # 
+
+F993 ; 7149 ;  MA      # ( 煉 → 煉 ) CJK COMPATIBILITY IDEOGRAPH-F993 → CJK UNIFIED IDEOGRAPH-7149       # 
+
+FA48 ; 716E ;  MA      # ( 煮 → 煮 ) CJK COMPATIBILITY IDEOGRAPH-FA48 → CJK UNIFIED IDEOGRAPH-716E       # 
+FA9C ; 716E ;  MA      # ( 煮 → 煮 ) CJK COMPATIBILITY IDEOGRAPH-FA9C → CJK UNIFIED IDEOGRAPH-716E       # 
+
+2F91E ;        719C ;  MA      # ( 熜 → 熜 ) CJK COMPATIBILITY IDEOGRAPH-2F91E → CJK UNIFIED IDEOGRAPH-719C     # 
+
+F9C0 ; 71CE ;  MA      # ( 燎 → 燎 ) CJK COMPATIBILITY IDEOGRAPH-F9C0 → CJK UNIFIED IDEOGRAPH-71CE       # 
+
+F9EE ; 71D0 ;  MA      # ( 燐 → 燐 ) CJK COMPATIBILITY IDEOGRAPH-F9EE → CJK UNIFIED IDEOGRAPH-71D0       # 
+
+F932 ; 7210 ;  MA      # ( 爐 → 爐 ) CJK COMPATIBILITY IDEOGRAPH-F932 → CJK UNIFIED IDEOGRAPH-7210       # 
+
+F91E ; 721B ;  MA      # ( 爛 → 爛 ) CJK COMPATIBILITY IDEOGRAPH-F91E → CJK UNIFIED IDEOGRAPH-721B       # 
+
+2F920 ;        7228 ;  MA      # ( 爨 → 爨 ) CJK COMPATIBILITY IDEOGRAPH-2F920 → CJK UNIFIED IDEOGRAPH-7228     # 
+
+2F56 ; 722A ;  MA      #* ( ⽖ → 爪 ) KANGXI RADICAL CLAW → CJK UNIFIED IDEOGRAPH-722A   # 
+
+FA49 ; 722B ;  MA      # ( 爫 → 爫 ) CJK COMPATIBILITY IDEOGRAPH-FA49 → CJK UNIFIED IDEOGRAPH-722B       # 
+2EA4 ; 722B ;  MA      #* ( ⺤ → 爫 ) CJK RADICAL PAW ONE → CJK UNIFIED IDEOGRAPH-722B   # 
+
+FA9E ; 7235 ;  MA      # ( 爵 → 爵 ) CJK COMPATIBILITY IDEOGRAPH-FA9E → CJK UNIFIED IDEOGRAPH-7235       # 
+2F921 ;        7235 ;  MA      # ( 爵 → 爵 ) CJK COMPATIBILITY IDEOGRAPH-2F921 → CJK UNIFIED IDEOGRAPH-7235     # 
+
+2F57 ; 7236 ;  MA      #* ( ⽗ → 父 ) KANGXI RADICAL FATHER → CJK UNIFIED IDEOGRAPH-7236 # 
+
+2F58 ; 723B ;  MA      #* ( ⽘ → 爻 ) KANGXI RADICAL DOUBLE X → CJK UNIFIED IDEOGRAPH-723B       # 
+
+2F59 ; 723F ;  MA      #* ( ⽙ → 爿 ) KANGXI RADICAL HALF TREE TRUNK → CJK UNIFIED IDEOGRAPH-723F        # 
+
+2F5A ; 7247 ;  MA      #* ( ⽚ → 片 ) KANGXI RADICAL SLICE → CJK UNIFIED IDEOGRAPH-7247  # 
+
+2F922 ;        7250 ;  MA      # ( 牐 → 牐 ) CJK COMPATIBILITY IDEOGRAPH-2F922 → CJK UNIFIED IDEOGRAPH-7250     # 
+
+2F5B ; 7259 ;  MA      #* ( ⽛ → 牙 ) KANGXI RADICAL FANG → CJK UNIFIED IDEOGRAPH-7259   # 
+
+2F5C ; 725B ;  MA      #* ( ⽜ → 牛 ) KANGXI RADICAL COW → CJK UNIFIED IDEOGRAPH-725B    # 
+
+F946 ; 7262 ;  MA      # ( 牢 → 牢 ) CJK COMPATIBILITY IDEOGRAPH-F946 → CJK UNIFIED IDEOGRAPH-7262       # 
+
+2F924 ;        7280 ;  MA      # ( 犀 → 犀 ) CJK COMPATIBILITY IDEOGRAPH-2F924 → CJK UNIFIED IDEOGRAPH-7280     # 
+
+2F925 ;        7295 ;  MA      # ( 犕 → 犕 ) CJK COMPATIBILITY IDEOGRAPH-2F925 → CJK UNIFIED IDEOGRAPH-7295     # 
+
+2F5D ; 72AC ;  MA      #* ( ⽝ → 犬 ) KANGXI RADICAL DOG → CJK UNIFIED IDEOGRAPH-72AC    # 
+
+2EA8 ; 72AD ;  MA      #* ( ⺨ → 犭 ) CJK RADICAL DOG → CJK UNIFIED IDEOGRAPH-72AD       # 
+
+FA9F ; 72AF ;  MA      # ( 犯 → 犯 ) CJK COMPATIBILITY IDEOGRAPH-FA9F → CJK UNIFIED IDEOGRAPH-72AF       # 
+
+F9FA ; 72C0 ;  MA      # ( 狀 → 狀 ) CJK COMPATIBILITY IDEOGRAPH-F9FA → CJK UNIFIED IDEOGRAPH-72C0       # 
+
+F92B ; 72FC ;  MA      # ( 狼 → 狼 ) CJK COMPATIBILITY IDEOGRAPH-F92B → CJK UNIFIED IDEOGRAPH-72FC       # 
+
+FA16 ; 732A ;  MA      # ( 猪 → 猪 ) CJK COMPATIBILITY IDEOGRAPH-FA16 → CJK UNIFIED IDEOGRAPH-732A       # 
+FAA0 ; 732A ;  MA      # ( 猪 → 猪 ) CJK COMPATIBILITY IDEOGRAPH-FAA0 → CJK UNIFIED IDEOGRAPH-732A       # 
+
+F9A7 ; 7375 ;  MA      # ( 獵 → 獵 ) CJK COMPATIBILITY IDEOGRAPH-F9A7 → CJK UNIFIED IDEOGRAPH-7375       # 
+
+2F928 ;        737A ;  MA      # ( 獺 → 獺 ) CJK COMPATIBILITY IDEOGRAPH-2F928 → CJK UNIFIED IDEOGRAPH-737A     # 
+
+2F5E ; 7384 ;  MA      #* ( ⽞ → 玄 ) KANGXI RADICAL PROFOUND → CJK UNIFIED IDEOGRAPH-7384       # 
+
+F961 ; 7387 ;  MA      # ( 率 → 率 ) CJK COMPATIBILITY IDEOGRAPH-F961 → CJK UNIFIED IDEOGRAPH-7387       # 
+F9DB ; 7387 ;  MA      # ( 率 → 率 ) CJK COMPATIBILITY IDEOGRAPH-F9DB → CJK UNIFIED IDEOGRAPH-7387       # 
+
+2F5F ; 7389 ;  MA      #* ( ⽟ → 玉 ) KANGXI RADICAL JADE → CJK UNIFIED IDEOGRAPH-7389   # 
+
+2F929 ;        738B ;  MA      # ( 王 → 王 ) CJK COMPATIBILITY IDEOGRAPH-2F929 → CJK UNIFIED IDEOGRAPH-738B     # 
+
+2F92B ;        73A5 ;  MA      # ( 玥 → 玥 ) CJK COMPATIBILITY IDEOGRAPH-2F92B → CJK UNIFIED IDEOGRAPH-73A5     # 
+
+F9AD ; 73B2 ;  MA      # ( 玲 → 玲 ) CJK COMPATIBILITY IDEOGRAPH-F9AD → CJK UNIFIED IDEOGRAPH-73B2       # 
+
+F917 ; 73DE ;  MA      # ( 珞 → 珞 ) CJK COMPATIBILITY IDEOGRAPH-F917 → CJK UNIFIED IDEOGRAPH-73DE       # 
+
+F9E4 ; 7406 ;  MA      # ( 理 → 理 ) CJK COMPATIBILITY IDEOGRAPH-F9E4 → CJK UNIFIED IDEOGRAPH-7406       # 
+
+F9CC ; 7409 ;  MA      # ( 琉 → 琉 ) CJK COMPATIBILITY IDEOGRAPH-F9CC → CJK UNIFIED IDEOGRAPH-7409       # 
+
+FA4A ; 7422 ;  MA      # ( 琢 → 琢 ) CJK COMPATIBILITY IDEOGRAPH-FA4A → CJK UNIFIED IDEOGRAPH-7422       # 
+
+2F92E ;        7447 ;  MA      # ( 瑇 → 瑇 ) CJK COMPATIBILITY IDEOGRAPH-2F92E → CJK UNIFIED IDEOGRAPH-7447     # 
+
+2F92F ;        745C ;  MA      # ( 瑜 → 瑜 ) CJK COMPATIBILITY IDEOGRAPH-2F92F → CJK UNIFIED IDEOGRAPH-745C     # 
+
+F9AE ; 7469 ;  MA      # ( 瑩 → 瑩 ) CJK COMPATIBILITY IDEOGRAPH-F9AE → CJK UNIFIED IDEOGRAPH-7469       # 
+
+FAA1 ; 7471 ;  MA      # ( 瑱 → 瑱 ) CJK COMPATIBILITY IDEOGRAPH-FAA1 → CJK UNIFIED IDEOGRAPH-7471       # 
+2F930 ;        7471 ;  MA      # ( 瑱 → 瑱 ) CJK COMPATIBILITY IDEOGRAPH-2F930 → CJK UNIFIED IDEOGRAPH-7471     # 
+
+2F931 ;        7485 ;  MA      # ( 璅 → 璅 ) CJK COMPATIBILITY IDEOGRAPH-2F931 → CJK UNIFIED IDEOGRAPH-7485     # 
+
+F994 ; 7489 ;  MA      # ( 璉 → 璉 ) CJK COMPATIBILITY IDEOGRAPH-F994 → CJK UNIFIED IDEOGRAPH-7489       # 
+
+F9EF ; 7498 ;  MA      # ( 璘 → 璘 ) CJK COMPATIBILITY IDEOGRAPH-F9EF → CJK UNIFIED IDEOGRAPH-7498       # 
+
+2F932 ;        74CA ;  MA      # ( 瓊 → 瓊 ) CJK COMPATIBILITY IDEOGRAPH-2F932 → CJK UNIFIED IDEOGRAPH-74CA     # 
+
+2F60 ; 74DC ;  MA      #* ( ⽠ → 瓜 ) KANGXI RADICAL MELON → CJK UNIFIED IDEOGRAPH-74DC  # 
+
+2F61 ; 74E6 ;  MA      #* ( ⽡ → 瓦 ) KANGXI RADICAL TILE → CJK UNIFIED IDEOGRAPH-74E6   # 
+
+FAA2 ; 7506 ;  MA      # ( 甆 → 甆 ) CJK COMPATIBILITY IDEOGRAPH-FAA2 → CJK UNIFIED IDEOGRAPH-7506       # 
+
+2F62 ; 7518 ;  MA      #* ( ⽢ → 甘 ) KANGXI RADICAL SWEET → CJK UNIFIED IDEOGRAPH-7518  # 
+
+2F63 ; 751F ;  MA      #* ( ⽣ → 生 ) KANGXI RADICAL LIFE → CJK UNIFIED IDEOGRAPH-751F   # 
+
+2F934 ;        7524 ;  MA      # ( 甤 → 甤 ) CJK COMPATIBILITY IDEOGRAPH-2F934 → CJK UNIFIED IDEOGRAPH-7524     # 
+
+2F64 ; 7528 ;  MA      #* ( ⽤ → 用 ) KANGXI RADICAL USE → CJK UNIFIED IDEOGRAPH-7528    # 
+
+2F65 ; 7530 ;  MA      #* ( ⽥ → 田 ) KANGXI RADICAL FIELD → CJK UNIFIED IDEOGRAPH-7530  # 
+
+FAA3 ; 753B ;  MA      # ( 画 → 画 ) CJK COMPATIBILITY IDEOGRAPH-FAA3 → CJK UNIFIED IDEOGRAPH-753B       # 
+
+2F936 ;        753E ;  MA      # ( 甾 → 甾 ) CJK COMPATIBILITY IDEOGRAPH-2F936 → CJK UNIFIED IDEOGRAPH-753E     # 
+
+F9CD ; 7559 ;  MA      # ( 留 → 留 ) CJK COMPATIBILITY IDEOGRAPH-F9CD → CJK UNIFIED IDEOGRAPH-7559       # 
+
+F976 ; 7565 ;  MA      # ( 略 → 略 ) CJK COMPATIBILITY IDEOGRAPH-F976 → CJK UNIFIED IDEOGRAPH-7565       # 
+
+F962 ; 7570 ;  MA      # ( 異 → 異 ) CJK COMPATIBILITY IDEOGRAPH-F962 → CJK UNIFIED IDEOGRAPH-7570       # 
+2F938 ;        7570 ;  MA      # ( 異 → 異 ) CJK COMPATIBILITY IDEOGRAPH-2F938 → CJK UNIFIED IDEOGRAPH-7570     # 
+
+2F66 ; 758B ;  MA      #* ( ⽦ → 疋 ) KANGXI RADICAL BOLT OF CLOTH → CJK UNIFIED IDEOGRAPH-758B  # 
+
+2F67 ; 7592 ;  MA      #* ( ⽧ → 疒 ) KANGXI RADICAL SICKNESS → CJK UNIFIED IDEOGRAPH-7592       # 
+
+F9E5 ; 75E2 ;  MA      # ( 痢 → 痢 ) CJK COMPATIBILITY IDEOGRAPH-F9E5 → CJK UNIFIED IDEOGRAPH-75E2       # 
+
+2F93A ;        7610 ;  MA      # ( 瘐 → 瘐 ) CJK COMPATIBILITY IDEOGRAPH-2F93A → CJK UNIFIED IDEOGRAPH-7610     # 
+
+FAA4 ; 761D ;  MA      # ( 瘝 → 瘝 ) CJK COMPATIBILITY IDEOGRAPH-FAA4 → CJK UNIFIED IDEOGRAPH-761D       # 
+
+FAA5 ; 761F ;  MA      # ( 瘟 → 瘟 ) CJK COMPATIBILITY IDEOGRAPH-FAA5 → CJK UNIFIED IDEOGRAPH-761F       # 
+
+F9C1 ; 7642 ;  MA      # ( 療 → 療 ) CJK COMPATIBILITY IDEOGRAPH-F9C1 → CJK UNIFIED IDEOGRAPH-7642       # 
+
+F90E ; 7669 ;  MA      # ( 癩 → 癩 ) CJK COMPATIBILITY IDEOGRAPH-F90E → CJK UNIFIED IDEOGRAPH-7669       # 
+
+2F68 ; 7676 ;  MA      #* ( ⽨ → 癶 ) KANGXI RADICAL DOTTED TENT → CJK UNIFIED IDEOGRAPH-7676    # 
+
+2F69 ; 767D ;  MA      #* ( ⽩ → 白 ) KANGXI RADICAL WHITE → CJK UNIFIED IDEOGRAPH-767D  # 
+
+2F6A ; 76AE ;  MA      #* ( ⽪ → 皮 ) KANGXI RADICAL SKIN → CJK UNIFIED IDEOGRAPH-76AE   # 
+
+2F6B ; 76BF ;  MA      #* ( ⽫ → 皿 ) KANGXI RADICAL DISH → CJK UNIFIED IDEOGRAPH-76BF   # 
+
+FA17 ; 76CA ;  MA      # ( 益 → 益 ) CJK COMPATIBILITY IDEOGRAPH-FA17 → CJK UNIFIED IDEOGRAPH-76CA       # 
+FAA6 ; 76CA ;  MA      # ( 益 → 益 ) CJK COMPATIBILITY IDEOGRAPH-FAA6 → CJK UNIFIED IDEOGRAPH-76CA       # 
+
+FAA7 ; 76DB ;  MA      # ( 盛 → 盛 ) CJK COMPATIBILITY IDEOGRAPH-FAA7 → CJK UNIFIED IDEOGRAPH-76DB       # 
+
+F933 ; 76E7 ;  MA      # ( 盧 → 盧 ) CJK COMPATIBILITY IDEOGRAPH-F933 → CJK UNIFIED IDEOGRAPH-76E7       # 
+
+2F6C ; 76EE ;  MA      #* ( ⽬ → 目 ) KANGXI RADICAL EYE → CJK UNIFIED IDEOGRAPH-76EE    # 
+
+FAA8 ; 76F4 ;  MA      # ( 直 → 直 ) CJK COMPATIBILITY IDEOGRAPH-FAA8 → CJK UNIFIED IDEOGRAPH-76F4       # 
+2F940 ;        76F4 ;  MA      # ( 直 → 直 ) CJK COMPATIBILITY IDEOGRAPH-2F940 → CJK UNIFIED IDEOGRAPH-76F4     # 
+
+F96D ; 7701 ;  MA      # ( 省 → 省 ) CJK COMPATIBILITY IDEOGRAPH-F96D → CJK UNIFIED IDEOGRAPH-7701       # 
+
+2F945 ;        771E ;  MA      # ( 眞 → 眞 ) CJK COMPATIBILITY IDEOGRAPH-2F945 → CJK UNIFIED IDEOGRAPH-771E     # 
+
+2F946 ;        771F ;  MA      # ( 真 → 真 ) CJK COMPATIBILITY IDEOGRAPH-2F946 → CJK UNIFIED IDEOGRAPH-771F     # 
+2F947 ;        771F ;  MA      # ( 真 → 真 ) CJK COMPATIBILITY IDEOGRAPH-2F947 → CJK UNIFIED IDEOGRAPH-771F     # 
+
+FAAA ; 7740 ;  MA      # ( 着 → 着 ) CJK COMPATIBILITY IDEOGRAPH-FAAA → CJK UNIFIED IDEOGRAPH-7740       # 
+
+FAA9 ; 774A ;  MA      # ( 睊 → 睊 ) CJK COMPATIBILITY IDEOGRAPH-FAA9 → CJK UNIFIED IDEOGRAPH-774A       # 
+2F948 ;        774A ;  MA      # ( 睊 → 睊 ) CJK COMPATIBILITY IDEOGRAPH-2F948 → CJK UNIFIED IDEOGRAPH-774A     # 
+
+2F94A ;        778B ;  MA      # ( 瞋 → 瞋 ) CJK COMPATIBILITY IDEOGRAPH-2F94A → CJK UNIFIED IDEOGRAPH-778B     # 
+
+FA9D ; 77A7 ;  MA      # ( 瞧 → 瞧 ) CJK COMPATIBILITY IDEOGRAPH-FA9D → CJK UNIFIED IDEOGRAPH-77A7       # 
+
+2F6D ; 77DB ;  MA      #* ( ⽭ → 矛 ) KANGXI RADICAL SPEAR → CJK UNIFIED IDEOGRAPH-77DB  # 
+
+2F6E ; 77E2 ;  MA      #* ( ⽮ → 矢 ) KANGXI RADICAL ARROW → CJK UNIFIED IDEOGRAPH-77E2  # 
+
+2F6F ; 77F3 ;  MA      #* ( ⽯ → 石 ) KANGXI RADICAL STONE → CJK UNIFIED IDEOGRAPH-77F3  # 
+
+784F ; 7814 ;  MA      # ( 硏 → 研 ) CJK UNIFIED IDEOGRAPH-784F → CJK UNIFIED IDEOGRAPH-7814     # 
+
+2F94E ;        784E ;  MA      # ( 硎 → 硎 ) CJK COMPATIBILITY IDEOGRAPH-2F94E → CJK UNIFIED IDEOGRAPH-784E     # 
+
+F9CE ; 786B ;  MA      # ( 硫 → 硫 ) CJK COMPATIBILITY IDEOGRAPH-F9CE → CJK UNIFIED IDEOGRAPH-786B       # 
+
+F93B ; 788C ;  MA      # ( 碌 → 碌 ) CJK COMPATIBILITY IDEOGRAPH-F93B → CJK UNIFIED IDEOGRAPH-788C       # 
+2F94F ;        788C ;  MA      # ( 碌 → 碌 ) CJK COMPATIBILITY IDEOGRAPH-2F94F → CJK UNIFIED IDEOGRAPH-788C     # 
+
+FA4B ; 7891 ;  MA      # ( 碑 → 碑 ) CJK COMPATIBILITY IDEOGRAPH-FA4B → CJK UNIFIED IDEOGRAPH-7891       # 
+
+F947 ; 78CA ;  MA      # ( 磊 → 磊 ) CJK COMPATIBILITY IDEOGRAPH-F947 → CJK UNIFIED IDEOGRAPH-78CA       # 
+
+FAAB ; 78CC ;  MA      # ( 磌 → 磌 ) CJK COMPATIBILITY IDEOGRAPH-FAAB → CJK UNIFIED IDEOGRAPH-78CC       # 
+2F950 ;        78CC ;  MA      # ( 磌 → 磌 ) CJK COMPATIBILITY IDEOGRAPH-2F950 → CJK UNIFIED IDEOGRAPH-78CC     # 
+
+F964 ; 78FB ;  MA      # ( 磻 → 磻 ) CJK COMPATIBILITY IDEOGRAPH-F964 → CJK UNIFIED IDEOGRAPH-78FB       # 
+
+F985 ; 792A ;  MA      # ( 礪 → 礪 ) CJK COMPATIBILITY IDEOGRAPH-F985 → CJK UNIFIED IDEOGRAPH-792A       # 
+
+2F70 ; 793A ;  MA      #* ( ⽰ → 示 ) KANGXI RADICAL SPIRIT → CJK UNIFIED IDEOGRAPH-793A # 
+
+2EAD ; 793B ;  MA      #* ( ⺭ → 礻 ) CJK RADICAL SPIRIT TWO → CJK UNIFIED IDEOGRAPH-793B        # 
+
+FA18 ; 793C ;  MA      # ( 礼 → 礼 ) CJK COMPATIBILITY IDEOGRAPH-FA18 → CJK UNIFIED IDEOGRAPH-793C       # 
+
+FA4C ; 793E ;  MA      # ( 社 → 社 ) CJK COMPATIBILITY IDEOGRAPH-FA4C → CJK UNIFIED IDEOGRAPH-793E       # 
+
+FA4E ; 7948 ;  MA      # ( 祈 → 祈 ) CJK COMPATIBILITY IDEOGRAPH-FA4E → CJK UNIFIED IDEOGRAPH-7948       # 
+
+FA4D ; 7949 ;  MA      # ( 祉 → 祉 ) CJK COMPATIBILITY IDEOGRAPH-FA4D → CJK UNIFIED IDEOGRAPH-7949       # 
+
+FA4F ; 7950 ;  MA      # ( 祐 → 祐 ) CJK COMPATIBILITY IDEOGRAPH-FA4F → CJK UNIFIED IDEOGRAPH-7950       # 
+
+FA50 ; 7956 ;  MA      # ( 祖 → 祖 ) CJK COMPATIBILITY IDEOGRAPH-FA50 → CJK UNIFIED IDEOGRAPH-7956       # 
+2F953 ;        7956 ;  MA      # ( 祖 → 祖 ) CJK COMPATIBILITY IDEOGRAPH-2F953 → CJK UNIFIED IDEOGRAPH-7956     # 
+
+FA51 ; 795D ;  MA      # ( 祝 → 祝 ) CJK COMPATIBILITY IDEOGRAPH-FA51 → CJK UNIFIED IDEOGRAPH-795D       # 
+
+FA19 ; 795E ;  MA      # ( 神 → 神 ) CJK COMPATIBILITY IDEOGRAPH-FA19 → CJK UNIFIED IDEOGRAPH-795E       # 
+
+FA1A ; 7965 ;  MA      # ( 祥 → 祥 ) CJK COMPATIBILITY IDEOGRAPH-FA1A → CJK UNIFIED IDEOGRAPH-7965       # 
+
+F93C ; 797F ;  MA      # ( 祿 → 祿 ) CJK COMPATIBILITY IDEOGRAPH-F93C → CJK UNIFIED IDEOGRAPH-797F       # 
+
+FA52 ; 798D ;  MA      # ( 禍 → 禍 ) CJK COMPATIBILITY IDEOGRAPH-FA52 → CJK UNIFIED IDEOGRAPH-798D       # 
+
+FA53 ; 798E ;  MA      # ( 禎 → 禎 ) CJK COMPATIBILITY IDEOGRAPH-FA53 → CJK UNIFIED IDEOGRAPH-798E       # 
+
+FA1B ; 798F ;  MA      # ( 福 → 福 ) CJK COMPATIBILITY IDEOGRAPH-FA1B → CJK UNIFIED IDEOGRAPH-798F       # 
+2F956 ;        798F ;  MA      # ( 福 → 福 ) CJK COMPATIBILITY IDEOGRAPH-2F956 → CJK UNIFIED IDEOGRAPH-798F     # 
+
+F9B6 ; 79AE ;  MA      # ( 禮 → 禮 ) CJK COMPATIBILITY IDEOGRAPH-F9B6 → CJK UNIFIED IDEOGRAPH-79AE       # 
+
+2F71 ; 79B8 ;  MA      #* ( ⽱ → 禸 ) KANGXI RADICAL TRACK → CJK UNIFIED IDEOGRAPH-79B8  # 
+
+2F72 ; 79BE ;  MA      #* ( ⽲ → 禾 ) KANGXI RADICAL GRAIN → CJK UNIFIED IDEOGRAPH-79BE  # 
+
+F995 ; 79CA ;  MA      # ( 秊 → 秊 ) CJK COMPATIBILITY IDEOGRAPH-F995 → CJK UNIFIED IDEOGRAPH-79CA       # 
+
+2F957 ;        79EB ;  MA      # ( 秫 → 秫 ) CJK COMPATIBILITY IDEOGRAPH-2F957 → CJK UNIFIED IDEOGRAPH-79EB     # 
+
+F956 ; 7A1C ;  MA      # ( 稜 → 稜 ) CJK COMPATIBILITY IDEOGRAPH-F956 → CJK UNIFIED IDEOGRAPH-7A1C       # 
+
+FA54 ; 7A40 ;  MA      # ( 穀 → 穀 ) CJK COMPATIBILITY IDEOGRAPH-FA54 → CJK UNIFIED IDEOGRAPH-7A40       # 
+2F959 ;        7A40 ;  MA      # ( 穀 → 穀 ) CJK COMPATIBILITY IDEOGRAPH-2F959 → CJK UNIFIED IDEOGRAPH-7A40     # 
+
+2F95A ;        7A4A ;  MA      # ( 穊 → 穊 ) CJK COMPATIBILITY IDEOGRAPH-2F95A → CJK UNIFIED IDEOGRAPH-7A4A     # 
+
+2F95B ;        7A4F ;  MA      # ( 穏 → 穏 ) CJK COMPATIBILITY IDEOGRAPH-2F95B → CJK UNIFIED IDEOGRAPH-7A4F     # 
+
+2F73 ; 7A74 ;  MA      #* ( ⽳ → 穴 ) KANGXI RADICAL CAVE → CJK UNIFIED IDEOGRAPH-7A74   # 
+
+FA55 ; 7A81 ;  MA      # ( 突 → 突 ) CJK COMPATIBILITY IDEOGRAPH-FA55 → CJK UNIFIED IDEOGRAPH-7A81       # 
+
+FAAC ; 7AB1 ;  MA      # ( 窱 → 窱 ) CJK COMPATIBILITY IDEOGRAPH-FAAC → CJK UNIFIED IDEOGRAPH-7AB1       # 
+
+F9F7 ; 7ACB ;  MA      # ( 立 → 立 ) CJK COMPATIBILITY IDEOGRAPH-F9F7 → CJK UNIFIED IDEOGRAPH-7ACB       # 
+2F74 ; 7ACB ;  MA      #* ( ⽴ → 立 ) KANGXI RADICAL STAND → CJK UNIFIED IDEOGRAPH-7ACB  # 
+
+2EEF ; 7ADC ;  MA      #* ( ⻯ → 竜 ) CJK RADICAL J-SIMPLIFIED DRAGON → CJK UNIFIED IDEOGRAPH-7ADC       # 
+
+2F95F ;        7AEE ;  MA      # ( 竮 → 竮 ) CJK COMPATIBILITY IDEOGRAPH-2F95F → CJK UNIFIED IDEOGRAPH-7AEE     # 
+
+2F75 ; 7AF9 ;  MA      #* ( ⽵ → 竹 ) KANGXI RADICAL BAMBOO → CJK UNIFIED IDEOGRAPH-7AF9 # 
+
+F9F8 ; 7B20 ;  MA      # ( 笠 → 笠 ) CJK COMPATIBILITY IDEOGRAPH-F9F8 → CJK UNIFIED IDEOGRAPH-7B20       # 
+
+FA56 ; 7BC0 ;  MA      # ( 節 → 節 ) CJK COMPATIBILITY IDEOGRAPH-FA56 → CJK UNIFIED IDEOGRAPH-7BC0       # 
+FAAD ; 7BC0 ;  MA      # ( 節 → 節 ) CJK COMPATIBILITY IDEOGRAPH-FAAD → CJK UNIFIED IDEOGRAPH-7BC0       # 
+
+2F962 ;        7BC6 ;  MA      # ( 篆 → 篆 ) CJK COMPATIBILITY IDEOGRAPH-2F962 → CJK UNIFIED IDEOGRAPH-7BC6     # 
+
+2F963 ;        7BC9 ;  MA      # ( 築 → 築 ) CJK COMPATIBILITY IDEOGRAPH-2F963 → CJK UNIFIED IDEOGRAPH-7BC9     # 
+
+F9A6 ; 7C3E ;  MA      # ( 簾 → 簾 ) CJK COMPATIBILITY IDEOGRAPH-F9A6 → CJK UNIFIED IDEOGRAPH-7C3E       # 
+
+F944 ; 7C60 ;  MA      # ( 籠 → 籠 ) CJK COMPATIBILITY IDEOGRAPH-F944 → CJK UNIFIED IDEOGRAPH-7C60       # 
+
+2F76 ; 7C73 ;  MA      #* ( ⽶ → 米 ) KANGXI RADICAL RICE → CJK UNIFIED IDEOGRAPH-7C73   # 
+
+FAAE ; 7C7B ;  MA      # ( 类 → 类 ) CJK COMPATIBILITY IDEOGRAPH-FAAE → CJK UNIFIED IDEOGRAPH-7C7B       # 
+
+F9F9 ; 7C92 ;  MA      # ( 粒 → 粒 ) CJK COMPATIBILITY IDEOGRAPH-F9F9 → CJK UNIFIED IDEOGRAPH-7C92       # 
+
+FA1D ; 7CBE ;  MA      # ( 精 → 精 ) CJK COMPATIBILITY IDEOGRAPH-FA1D → CJK UNIFIED IDEOGRAPH-7CBE       # 
+
+2F966 ;        7CD2 ;  MA      # ( 糒 → 糒 ) CJK COMPATIBILITY IDEOGRAPH-2F966 → CJK UNIFIED IDEOGRAPH-7CD2     # 
+
+FA03 ; 7CD6 ;  MA      # ( 糖 → 糖 ) CJK COMPATIBILITY IDEOGRAPH-FA03 → CJK UNIFIED IDEOGRAPH-7CD6       # 
+
+2F969 ;        7CE3 ;  MA      # ( 糣 → 糣 ) CJK COMPATIBILITY IDEOGRAPH-2F969 → CJK UNIFIED IDEOGRAPH-7CE3     # 
+
+F97B ; 7CE7 ;  MA      # ( 糧 → 糧 ) CJK COMPATIBILITY IDEOGRAPH-F97B → CJK UNIFIED IDEOGRAPH-7CE7       # 
+
+2F968 ;        7CE8 ;  MA      # ( 糨 → 糨 ) CJK COMPATIBILITY IDEOGRAPH-2F968 → CJK UNIFIED IDEOGRAPH-7CE8     # 
+
+2F77 ; 7CF8 ;  MA      #* ( ⽷ → 糸 ) KANGXI RADICAL SILK → CJK UNIFIED IDEOGRAPH-7CF8   # 
+
+2EAF ; 7CF9 ;  MA      #* ( ⺯ → 糹 ) CJK RADICAL SILK → CJK UNIFIED IDEOGRAPH-7CF9      # 
+
+2F96A ;        7D00 ;  MA      # ( 紀 → 紀 ) CJK COMPATIBILITY IDEOGRAPH-2F96A → CJK UNIFIED IDEOGRAPH-7D00     # 
+
+F9CF ; 7D10 ;  MA      # ( 紐 → 紐 ) CJK COMPATIBILITY IDEOGRAPH-F9CF → CJK UNIFIED IDEOGRAPH-7D10       # 
+
+F96A ; 7D22 ;  MA      # ( 索 → 索 ) CJK COMPATIBILITY IDEOGRAPH-F96A → CJK UNIFIED IDEOGRAPH-7D22       # 
+
+F94F ; 7D2F ;  MA      # ( 累 → 累 ) CJK COMPATIBILITY IDEOGRAPH-F94F → CJK UNIFIED IDEOGRAPH-7D2F       # 
+
+7D76 ; 7D55 ;  MA      # ( 絶 → 絕 ) CJK UNIFIED IDEOGRAPH-7D76 → CJK UNIFIED IDEOGRAPH-7D55     # 
+
+FAAF ; 7D5B ;  MA      # ( 絛 → 絛 ) CJK COMPATIBILITY IDEOGRAPH-FAAF → CJK UNIFIED IDEOGRAPH-7D5B       # 
+
+2F96C ;        7D63 ;  MA      # ( 絣 → 絣 ) CJK COMPATIBILITY IDEOGRAPH-2F96C → CJK UNIFIED IDEOGRAPH-7D63     # 
+
+F93D ; 7DA0 ;  MA      # ( 綠 → 綠 ) CJK COMPATIBILITY IDEOGRAPH-F93D → CJK UNIFIED IDEOGRAPH-7DA0       # 
+
+F957 ; 7DBE ;  MA      # ( 綾 → 綾 ) CJK COMPATIBILITY IDEOGRAPH-F957 → CJK UNIFIED IDEOGRAPH-7DBE       # 
+
+2F96E ;        7DC7 ;  MA      # ( 緇 → 緇 ) CJK COMPATIBILITY IDEOGRAPH-2F96E → CJK UNIFIED IDEOGRAPH-7DC7     # 
+
+F996 ; 7DF4 ;  MA      # ( 練 → 練 ) CJK COMPATIBILITY IDEOGRAPH-F996 → CJK UNIFIED IDEOGRAPH-7DF4       # 
+FA57 ; 7DF4 ;  MA      # ( 練 → 練 ) CJK COMPATIBILITY IDEOGRAPH-FA57 → CJK UNIFIED IDEOGRAPH-7DF4       # 
+FAB0 ; 7DF4 ;  MA      # ( 練 → 練 ) CJK COMPATIBILITY IDEOGRAPH-FAB0 → CJK UNIFIED IDEOGRAPH-7DF4       # 
+
+2F96F ;        7E02 ;  MA      # ( 縂 → 縂 ) CJK COMPATIBILITY IDEOGRAPH-2F96F → CJK UNIFIED IDEOGRAPH-7E02     # 
+
+FA58 ; 7E09 ;  MA      # ( 縉 → 縉 ) CJK COMPATIBILITY IDEOGRAPH-FA58 → CJK UNIFIED IDEOGRAPH-7E09       # 
+
+F950 ; 7E37 ;  MA      # ( 縷 → 縷 ) CJK COMPATIBILITY IDEOGRAPH-F950 → CJK UNIFIED IDEOGRAPH-7E37       # 
+
+FA59 ; 7E41 ;  MA      # ( 繁 → 繁 ) CJK COMPATIBILITY IDEOGRAPH-FA59 → CJK UNIFIED IDEOGRAPH-7E41       # 
+
+2F970 ;        7E45 ;  MA      # ( 繅 → 繅 ) CJK COMPATIBILITY IDEOGRAPH-2F970 → CJK UNIFIED IDEOGRAPH-7E45     # 
+
+2F78 ; 7F36 ;  MA      #* ( ⽸ → 缶 ) KANGXI RADICAL JAR → CJK UNIFIED IDEOGRAPH-7F36    # 
+
+FAB1 ; 7F3E ;  MA      # ( 缾 → 缾 ) CJK COMPATIBILITY IDEOGRAPH-FAB1 → CJK UNIFIED IDEOGRAPH-7F3E       # 
+
+2F79 ; 7F51 ;  MA      #* ( ⽹ → 网 ) KANGXI RADICAL NET → CJK UNIFIED IDEOGRAPH-7F51    # 
+
+2EAB ; 7F52 ;  MA      #* ( ⺫ → 罒 ) CJK RADICAL EYE → CJK UNIFIED IDEOGRAPH-7F52       # 
+2EB2 ; 7F52 ;  MA      #* ( ⺲ → 罒 ) CJK RADICAL NET TWO → CJK UNIFIED IDEOGRAPH-7F52   # 
+
+2EB1 ; 7F53 ;  MA      #* ( ⺱ → 罓 ) CJK RADICAL NET ONE → CJK UNIFIED IDEOGRAPH-7F53   # 
+
+FA5A ; 7F72 ;  MA      # ( 署 → 署 ) CJK COMPATIBILITY IDEOGRAPH-FA5A → CJK UNIFIED IDEOGRAPH-7F72       # 
+
+F9E6 ; 7F79 ;  MA      # ( 罹 → 罹 ) CJK COMPATIBILITY IDEOGRAPH-F9E6 → CJK UNIFIED IDEOGRAPH-7F79       # 
+
+2F976 ;        7F7A ;  MA      # ( 罺 → 罺 ) CJK COMPATIBILITY IDEOGRAPH-2F976 → CJK UNIFIED IDEOGRAPH-7F7A     # 
+
+F90F ; 7F85 ;  MA      # ( 羅 → 羅 ) CJK COMPATIBILITY IDEOGRAPH-F90F → CJK UNIFIED IDEOGRAPH-7F85       # 
+
+2F7A ; 7F8A ;  MA      #* ( ⽺ → 羊 ) KANGXI RADICAL SHEEP → CJK UNIFIED IDEOGRAPH-7F8A  # 
+
+2F978 ;        7F95 ;  MA      # ( 羕 → 羕 ) CJK COMPATIBILITY IDEOGRAPH-2F978 → CJK UNIFIED IDEOGRAPH-7F95     # 
+
+F9AF ; 7F9A ;  MA      # ( 羚 → 羚 ) CJK COMPATIBILITY IDEOGRAPH-F9AF → CJK UNIFIED IDEOGRAPH-7F9A       # 
+
+FA1E ; 7FBD ;  MA      # ( 羽 → 羽 ) CJK COMPATIBILITY IDEOGRAPH-FA1E → CJK UNIFIED IDEOGRAPH-7FBD       # 
+2F7B ; 7FBD ;  MA      #* ( ⽻ → 羽 ) KANGXI RADICAL FEATHER → CJK UNIFIED IDEOGRAPH-7FBD        # 
+
+2F979 ;        7FFA ;  MA      # ( 翺 → 翺 ) CJK COMPATIBILITY IDEOGRAPH-2F979 → CJK UNIFIED IDEOGRAPH-7FFA     # 
+
+F934 ; 8001 ;  MA      # ( 老 → 老 ) CJK COMPATIBILITY IDEOGRAPH-F934 → CJK UNIFIED IDEOGRAPH-8001       # 
+2F7C ; 8001 ;  MA      #* ( ⽼ → 老 ) KANGXI RADICAL OLD → CJK UNIFIED IDEOGRAPH-8001    # 
+
+2EB9 ; 8002 ;  MA      #* ( ⺹ → 耂 ) CJK RADICAL OLD → CJK UNIFIED IDEOGRAPH-8002       # 
+
+FA5B ; 8005 ;  MA      # ( 者 → 者 ) CJK COMPATIBILITY IDEOGRAPH-FA5B → CJK UNIFIED IDEOGRAPH-8005       # 
+FAB2 ; 8005 ;  MA      # ( 者 → 者 ) CJK COMPATIBILITY IDEOGRAPH-FAB2 → CJK UNIFIED IDEOGRAPH-8005       # 
+2F97A ;        8005 ;  MA      # ( 者 → 者 ) CJK COMPATIBILITY IDEOGRAPH-2F97A → CJK UNIFIED IDEOGRAPH-8005     # 
+
+2F7D ; 800C ;  MA      #* ( ⽽ → 而 ) KANGXI RADICAL AND → CJK UNIFIED IDEOGRAPH-800C    # 
+
+2F7E ; 8012 ;  MA      #* ( ⽾ → 耒 ) KANGXI RADICAL PLOW → CJK UNIFIED IDEOGRAPH-8012   # 
+
+2F7F ; 8033 ;  MA      #* ( ⽿ → 耳 ) KANGXI RADICAL EAR → CJK UNIFIED IDEOGRAPH-8033    # 
+
+F9B0 ; 8046 ;  MA      # ( 聆 → 聆 ) CJK COMPATIBILITY IDEOGRAPH-F9B0 → CJK UNIFIED IDEOGRAPH-8046       # 
+
+2F97D ;        8060 ;  MA      # ( 聠 → 聠 ) CJK COMPATIBILITY IDEOGRAPH-2F97D → CJK UNIFIED IDEOGRAPH-8060     # 
+
+F997 ; 806F ;  MA      # ( 聯 → 聯 ) CJK COMPATIBILITY IDEOGRAPH-F997 → CJK UNIFIED IDEOGRAPH-806F       # 
+
+2F97F ;        8070 ;  MA      # ( 聰 → 聰 ) CJK COMPATIBILITY IDEOGRAPH-2F97F → CJK UNIFIED IDEOGRAPH-8070     # 
+
+F945 ; 807E ;  MA      # ( 聾 → 聾 ) CJK COMPATIBILITY IDEOGRAPH-F945 → CJK UNIFIED IDEOGRAPH-807E       # 
+
+2F80 ; 807F ;  MA      #* ( ⾀ → 聿 ) KANGXI RADICAL BRUSH → CJK UNIFIED IDEOGRAPH-807F  # 
+
+2EBA ; 8080 ;  MA      #* ( ⺺ → 肀 ) CJK RADICAL BRUSH ONE → CJK UNIFIED IDEOGRAPH-8080 # 
+
+2F81 ; 8089 ;  MA      #* ( ⾁ → 肉 ) KANGXI RADICAL MEAT → CJK UNIFIED IDEOGRAPH-8089   # 
+
+F953 ; 808B ;  MA      # ( 肋 → 肋 ) CJK COMPATIBILITY IDEOGRAPH-F953 → CJK UNIFIED IDEOGRAPH-808B       # 
+
+2F8D6 ;        80AD ;  MA      # ( 肭 → 肭 ) CJK COMPATIBILITY IDEOGRAPH-2F8D6 → CJK UNIFIED IDEOGRAPH-80AD     # 
+
+2F982 ;        80B2 ;  MA      # ( 育 → 育 ) CJK COMPATIBILITY IDEOGRAPH-2F982 → CJK UNIFIED IDEOGRAPH-80B2     # 
+
+8141 ; 80FC ;  MA      # ( 腁 → 胼 ) CJK UNIFIED IDEOGRAPH-8141 → CJK UNIFIED IDEOGRAPH-80FC     # 
+
+2F983 ;        8103 ;  MA      # ( 脃 → 脃 ) CJK COMPATIBILITY IDEOGRAPH-2F983 → CJK UNIFIED IDEOGRAPH-8103     # 
+
+2F985 ;        813E ;  MA      # ( 脾 → 脾 ) CJK COMPATIBILITY IDEOGRAPH-2F985 → CJK UNIFIED IDEOGRAPH-813E     # 
+
+F926 ; 81D8 ;  MA      # ( 臘 → 臘 ) CJK COMPATIBILITY IDEOGRAPH-F926 → CJK UNIFIED IDEOGRAPH-81D8       # 
+
+2F82 ; 81E3 ;  MA      #* ( ⾂ → 臣 ) KANGXI RADICAL MINISTER → CJK UNIFIED IDEOGRAPH-81E3       # 
+
+F9F6 ; 81E8 ;  MA      # ( 臨 → 臨 ) CJK COMPATIBILITY IDEOGRAPH-F9F6 → CJK UNIFIED IDEOGRAPH-81E8       # 
+
+2F83 ; 81EA ;  MA      #* ( ⾃ → 自 ) KANGXI RADICAL SELF → CJK UNIFIED IDEOGRAPH-81EA   # 
+
+FA5C ; 81ED ;  MA      # ( 臭 → 臭 ) CJK COMPATIBILITY IDEOGRAPH-FA5C → CJK UNIFIED IDEOGRAPH-81ED       # 
+
+2F84 ; 81F3 ;  MA      #* ( ⾄ → 至 ) KANGXI RADICAL ARRIVE → CJK UNIFIED IDEOGRAPH-81F3 # 
+
+2F85 ; 81FC ;  MA      #* ( ⾅ → 臼 ) KANGXI RADICAL MORTAR → CJK UNIFIED IDEOGRAPH-81FC # 
+
+2F893 ;        8201 ;  MA      # ( 舁 → 舁 ) CJK COMPATIBILITY IDEOGRAPH-2F893 → CJK UNIFIED IDEOGRAPH-8201     # 
+2F98B ;        8201 ;  MA      # ( 舁 → 舁 ) CJK COMPATIBILITY IDEOGRAPH-2F98B → CJK UNIFIED IDEOGRAPH-8201     # 
+
+2F98C ;        8204 ;  MA      # ( 舄 → 舄 ) CJK COMPATIBILITY IDEOGRAPH-2F98C → CJK UNIFIED IDEOGRAPH-8204     # 
+
+2F86 ; 820C ;  MA      #* ( ⾆ → 舌 ) KANGXI RADICAL TONGUE → CJK UNIFIED IDEOGRAPH-820C # 
+
+FA6D ; 8218 ;  MA      # ( 舘 → 舘 ) CJK COMPATIBILITY IDEOGRAPH-FA6D → CJK UNIFIED IDEOGRAPH-8218       # 
+
+2F87 ; 821B ;  MA      #* ( ⾇ → 舛 ) KANGXI RADICAL OPPOSE → CJK UNIFIED IDEOGRAPH-821B # 
+
+2F88 ; 821F ;  MA      #* ( ⾈ → 舟 ) KANGXI RADICAL BOAT → CJK UNIFIED IDEOGRAPH-821F   # 
+
+2F89 ; 826E ;  MA      #* ( ⾉ → 艮 ) KANGXI RADICAL STOPPING → CJK UNIFIED IDEOGRAPH-826E       # 
+
+F97C ; 826F ;  MA      # ( 良 → 良 ) CJK COMPATIBILITY IDEOGRAPH-F97C → CJK UNIFIED IDEOGRAPH-826F       # 
+
+2F8A ; 8272 ;  MA      #* ( ⾊ → 色 ) KANGXI RADICAL COLOR → CJK UNIFIED IDEOGRAPH-8272  # 
+
+2F8B ; 8278 ;  MA      #* ( ⾋ → 艸 ) KANGXI RADICAL GRASS → CJK UNIFIED IDEOGRAPH-8278  # 
+
+FA5D ; 8279 ;  MA      # ( 艹 → 艹 ) CJK COMPATIBILITY IDEOGRAPH-FA5D → CJK UNIFIED IDEOGRAPH-8279       # 
+FA5E ; 8279 ;  MA      # ( 艹 → 艹 ) CJK COMPATIBILITY IDEOGRAPH-FA5E → CJK UNIFIED IDEOGRAPH-8279       # 
+2EBE ; 8279 ;  MA      #* ( ⺾ → 艹 ) CJK RADICAL GRASS ONE → CJK UNIFIED IDEOGRAPH-8279 # 
+2EBF ; 8279 ;  MA      #* ( ⺿ → 艹 ) CJK RADICAL GRASS TWO → CJK UNIFIED IDEOGRAPH-8279 # →艹→
+2EC0 ; 8279 ;  MA      #* ( ⻀ → 艹 ) CJK RADICAL GRASS THREE → CJK UNIFIED IDEOGRAPH-8279       # →艹→
+
+2F990 ;        828B ;  MA      # ( 芋 → 芋 ) CJK COMPATIBILITY IDEOGRAPH-2F990 → CJK UNIFIED IDEOGRAPH-828B     # 
+
+2F98F ;        8291 ;  MA      # ( 芑 → 芑 ) CJK COMPATIBILITY IDEOGRAPH-2F98F → CJK UNIFIED IDEOGRAPH-8291     # 
+
+2F991 ;        829D ;  MA      # ( 芝 → 芝 ) CJK COMPATIBILITY IDEOGRAPH-2F991 → CJK UNIFIED IDEOGRAPH-829D     # 
+
+2F993 ;        82B1 ;  MA      # ( 花 → 花 ) CJK COMPATIBILITY IDEOGRAPH-2F993 → CJK UNIFIED IDEOGRAPH-82B1     # 
+
+2F994 ;        82B3 ;  MA      # ( 芳 → 芳 ) CJK COMPATIBILITY IDEOGRAPH-2F994 → CJK UNIFIED IDEOGRAPH-82B3     # 
+
+2F995 ;        82BD ;  MA      # ( 芽 → 芽 ) CJK COMPATIBILITY IDEOGRAPH-2F995 → CJK UNIFIED IDEOGRAPH-82BD     # 
+
+F974 ; 82E5 ;  MA      # ( 若 → 若 ) CJK COMPATIBILITY IDEOGRAPH-F974 → CJK UNIFIED IDEOGRAPH-82E5       # 
+2F998 ;        82E5 ;  MA      # ( 若 → 若 ) CJK COMPATIBILITY IDEOGRAPH-2F998 → CJK UNIFIED IDEOGRAPH-82E5     # 
+
+2F996 ;        82E6 ;  MA      # ( 苦 → 苦 ) CJK COMPATIBILITY IDEOGRAPH-2F996 → CJK UNIFIED IDEOGRAPH-82E6     # 
+
+2F999 ;        831D ;  MA      # ( 茝 → 茝 ) CJK COMPATIBILITY IDEOGRAPH-2F999 → CJK UNIFIED IDEOGRAPH-831D     # 
+
+2F99C ;        8323 ;  MA      # ( 茣 → 茣 ) CJK COMPATIBILITY IDEOGRAPH-2F99C → CJK UNIFIED IDEOGRAPH-8323     # 
+
+F9FE ; 8336 ;  MA      # ( 茶 → 茶 ) CJK COMPATIBILITY IDEOGRAPH-F9FE → CJK UNIFIED IDEOGRAPH-8336       # 
+
+FAB3 ; 8352 ;  MA      # ( 荒 → 荒 ) CJK COMPATIBILITY IDEOGRAPH-FAB3 → CJK UNIFIED IDEOGRAPH-8352       # 
+
+2F9A0 ;        8353 ;  MA      # ( 荓 → 荓 ) CJK COMPATIBILITY IDEOGRAPH-2F9A0 → CJK UNIFIED IDEOGRAPH-8353     # 
+
+2F99A ;        8363 ;  MA      # ( 荣 → 荣 ) CJK COMPATIBILITY IDEOGRAPH-2F99A → CJK UNIFIED IDEOGRAPH-8363     # 
+
+2F99B ;        83AD ;  MA      # ( 莭 → 莭 ) CJK COMPATIBILITY IDEOGRAPH-2F99B → CJK UNIFIED IDEOGRAPH-83AD     # 
+
+2F99D ;        83BD ;  MA      # ( 莽 → 莽 ) CJK COMPATIBILITY IDEOGRAPH-2F99D → CJK UNIFIED IDEOGRAPH-83BD     # 
+
+F93E ; 83C9 ;  MA      # ( 菉 → 菉 ) CJK COMPATIBILITY IDEOGRAPH-F93E → CJK UNIFIED IDEOGRAPH-83C9       # 
+
+2F9A1 ;        83CA ;  MA      # ( 菊 → 菊 ) CJK COMPATIBILITY IDEOGRAPH-2F9A1 → CJK UNIFIED IDEOGRAPH-83CA     # 
+
+2F9A2 ;        83CC ;  MA      # ( 菌 → 菌 ) CJK COMPATIBILITY IDEOGRAPH-2F9A2 → CJK UNIFIED IDEOGRAPH-83CC     # 
+
+2F9A3 ;        83DC ;  MA      # ( 菜 → 菜 ) CJK COMPATIBILITY IDEOGRAPH-2F9A3 → CJK UNIFIED IDEOGRAPH-83DC     # 
+
+2F99E ;        83E7 ;  MA      # ( 菧 → 菧 ) CJK COMPATIBILITY IDEOGRAPH-2F99E → CJK UNIFIED IDEOGRAPH-83E7     # 
+
+FAB4 ; 83EF ;  MA      # ( 華 → 華 ) CJK COMPATIBILITY IDEOGRAPH-FAB4 → CJK UNIFIED IDEOGRAPH-83EF       # 
+
+F958 ; 83F1 ;  MA      # ( 菱 → 菱 ) CJK COMPATIBILITY IDEOGRAPH-F958 → CJK UNIFIED IDEOGRAPH-83F1       # 
+
+F918 ; 843D ;  MA      # ( 落 → 落 ) CJK COMPATIBILITY IDEOGRAPH-F918 → CJK UNIFIED IDEOGRAPH-843D       # 
+
+F96E ; 8449 ;  MA      # ( 葉 → 葉 ) CJK COMPATIBILITY IDEOGRAPH-F96E → CJK UNIFIED IDEOGRAPH-8449       # 
+
+FA5F ; 8457 ;  MA      # ( 著 → 著 ) CJK COMPATIBILITY IDEOGRAPH-FA5F → CJK UNIFIED IDEOGRAPH-8457       # 
+2F99F ;        8457 ;  MA      # ( 著 → 著 ) CJK COMPATIBILITY IDEOGRAPH-2F99F → CJK UNIFIED IDEOGRAPH-8457     # 
+
+853F ; 848D ;  MA      # ( 蔿 → 蒍 ) CJK UNIFIED IDEOGRAPH-853F → CJK UNIFIED IDEOGRAPH-848D     # 
+
+F999 ; 84EE ;  MA      # ( 蓮 → 蓮 ) CJK COMPATIBILITY IDEOGRAPH-F999 → CJK UNIFIED IDEOGRAPH-84EE       # 
+
+2F9A8 ;        84F1 ;  MA      # ( 蓱 → 蓱 ) CJK COMPATIBILITY IDEOGRAPH-2F9A8 → CJK UNIFIED IDEOGRAPH-84F1     # 
+
+2F9A9 ;        84F3 ;  MA      # ( 蓳 → 蓳 ) CJK COMPATIBILITY IDEOGRAPH-2F9A9 → CJK UNIFIED IDEOGRAPH-84F3     # 
+
+F9C2 ; 84FC ;  MA      # ( 蓼 → 蓼 ) CJK COMPATIBILITY IDEOGRAPH-F9C2 → CJK UNIFIED IDEOGRAPH-84FC       # 
+
+2F9AA ;        8516 ;  MA      # ( 蔖 → 蔖 ) CJK COMPATIBILITY IDEOGRAPH-2F9AA → CJK UNIFIED IDEOGRAPH-8516     # 
+
+2F9AC ;        8564 ;  MA      # ( 蕤 → 蕤 ) CJK COMPATIBILITY IDEOGRAPH-2F9AC → CJK UNIFIED IDEOGRAPH-8564     # 
+
+F923 ; 85CD ;  MA      # ( 藍 → 藍 ) CJK COMPATIBILITY IDEOGRAPH-F923 → CJK UNIFIED IDEOGRAPH-85CD       # 
+
+F9F0 ; 85FA ;  MA      # ( 藺 → 藺 ) CJK COMPATIBILITY IDEOGRAPH-F9F0 → CJK UNIFIED IDEOGRAPH-85FA       # 
+
+F935 ; 8606 ;  MA      # ( 蘆 → 蘆 ) CJK COMPATIBILITY IDEOGRAPH-F935 → CJK UNIFIED IDEOGRAPH-8606       # 
+
+FA20 ; 8612 ;  MA      # ( 蘒 → 蘒 ) CJK COMPATIBILITY IDEOGRAPH-FA20 → CJK UNIFIED IDEOGRAPH-8612       # 
+
+F91F ; 862D ;  MA      # ( 蘭 → 蘭 ) CJK COMPATIBILITY IDEOGRAPH-F91F → CJK UNIFIED IDEOGRAPH-862D       # 
+
+8641 ; 8637 ;  MA      # ( 虁 → 蘷 ) CJK UNIFIED IDEOGRAPH-8641 → CJK UNIFIED IDEOGRAPH-8637     # 
+
+F910 ; 863F ;  MA      # ( 蘿 → 蘿 ) CJK COMPATIBILITY IDEOGRAPH-F910 → CJK UNIFIED IDEOGRAPH-863F       # 
+
+2F8C ; 864D ;  MA      #* ( ⾌ → 虍 ) KANGXI RADICAL TIGER → CJK UNIFIED IDEOGRAPH-864D  # 
+
+2EC1 ; 864E ;  MA      #* ( ⻁ → 虎 ) CJK RADICAL TIGER → CJK UNIFIED IDEOGRAPH-864E     # 
+
+2F9B3 ;        8650 ;  MA      # ( 虐 → 虐 ) CJK COMPATIBILITY IDEOGRAPH-2F9B3 → CJK UNIFIED IDEOGRAPH-8650     # 
+
+F936 ; 865C ;  MA      # ( 虜 → 虜 ) CJK COMPATIBILITY IDEOGRAPH-F936 → CJK UNIFIED IDEOGRAPH-865C       # 
+2F9B4 ;        865C ;  MA      # ( 虜 → 虜 ) CJK COMPATIBILITY IDEOGRAPH-2F9B4 → CJK UNIFIED IDEOGRAPH-865C     # 
+
+2F9B5 ;        8667 ;  MA      # ( 虧 → 虧 ) CJK COMPATIBILITY IDEOGRAPH-2F9B5 → CJK UNIFIED IDEOGRAPH-8667     # 
+
+2F9B6 ;        8669 ;  MA      # ( 虩 → 虩 ) CJK COMPATIBILITY IDEOGRAPH-2F9B6 → CJK UNIFIED IDEOGRAPH-8669     # 
+
+2F8D ; 866B ;  MA      #* ( ⾍ → 虫 ) KANGXI RADICAL INSECT → CJK UNIFIED IDEOGRAPH-866B # 
+
+2F9B8 ;        8688 ;  MA      # ( 蚈 → 蚈 ) CJK COMPATIBILITY IDEOGRAPH-2F9B8 → CJK UNIFIED IDEOGRAPH-8688     # 
+
+2F9B7 ;        86A9 ;  MA      # ( 蚩 → 蚩 ) CJK COMPATIBILITY IDEOGRAPH-2F9B7 → CJK UNIFIED IDEOGRAPH-86A9     # 
+
+2F9BA ;        86E2 ;  MA      # ( 蛢 → 蛢 ) CJK COMPATIBILITY IDEOGRAPH-2F9BA → CJK UNIFIED IDEOGRAPH-86E2     # 
+
+2F9B9 ;        870E ;  MA      # ( 蜎 → 蜎 ) CJK COMPATIBILITY IDEOGRAPH-2F9B9 → CJK UNIFIED IDEOGRAPH-870E     # 
+
+2F9BC ;        8728 ;  MA      # ( 蜨 → 蜨 ) CJK COMPATIBILITY IDEOGRAPH-2F9BC → CJK UNIFIED IDEOGRAPH-8728     # 
+
+2F9BD ;        876B ;  MA      # ( 蝫 → 蝫 ) CJK COMPATIBILITY IDEOGRAPH-2F9BD → CJK UNIFIED IDEOGRAPH-876B     # 
+
+FAB5 ; 8779 ;  MA      # ( 蝹 → 蝹 ) CJK COMPATIBILITY IDEOGRAPH-FAB5 → CJK UNIFIED IDEOGRAPH-8779       # 
+2F9BB ;        8779 ;  MA      # ( 蝹 → 蝹 ) CJK COMPATIBILITY IDEOGRAPH-2F9BB → CJK UNIFIED IDEOGRAPH-8779     # 
+
+2F9BE ;        8786 ;  MA      # ( 螆 → 螆 ) CJK COMPATIBILITY IDEOGRAPH-2F9BE → CJK UNIFIED IDEOGRAPH-8786     # 
+
+F911 ; 87BA ;  MA      # ( 螺 → 螺 ) CJK COMPATIBILITY IDEOGRAPH-F911 → CJK UNIFIED IDEOGRAPH-87BA       # 
+
+2F9C0 ;        87E1 ;  MA      # ( 蟡 → 蟡 ) CJK COMPATIBILITY IDEOGRAPH-2F9C0 → CJK UNIFIED IDEOGRAPH-87E1     # 
+
+2F9C1 ;        8801 ;  MA      # ( 蠁 → 蠁 ) CJK COMPATIBILITY IDEOGRAPH-2F9C1 → CJK UNIFIED IDEOGRAPH-8801     # 
+
+F927 ; 881F ;  MA      # ( 蠟 → 蠟 ) CJK COMPATIBILITY IDEOGRAPH-F927 → CJK UNIFIED IDEOGRAPH-881F       # 
+
+2F8E ; 8840 ;  MA      #* ( ⾎ → 血 ) KANGXI RADICAL BLOOD → CJK UNIFIED IDEOGRAPH-8840  # 
+
+FA08 ; 884C ;  MA      # ( 行 → 行 ) CJK COMPATIBILITY IDEOGRAPH-FA08 → CJK UNIFIED IDEOGRAPH-884C       # 
+2F8F ; 884C ;  MA      #* ( ⾏ → 行 ) KANGXI RADICAL WALK ENCLOSURE → CJK UNIFIED IDEOGRAPH-884C # 
+
+2F9C3 ;        8860 ;  MA      # ( 衠 → 衠 ) CJK COMPATIBILITY IDEOGRAPH-2F9C3 → CJK UNIFIED IDEOGRAPH-8860     # 
+
+2F9C4 ;        8863 ;  MA      # ( 衣 → 衣 ) CJK COMPATIBILITY IDEOGRAPH-2F9C4 → CJK UNIFIED IDEOGRAPH-8863     # 
+2F90 ; 8863 ;  MA      #* ( ⾐ → 衣 ) KANGXI RADICAL CLOTHES → CJK UNIFIED IDEOGRAPH-8863        # 
+
+2EC2 ; 8864 ;  MA      #* ( ⻂ → 衤 ) CJK RADICAL CLOTHES → CJK UNIFIED IDEOGRAPH-8864   # 
+
+F9A0 ; 88C2 ;  MA      # ( 裂 → 裂 ) CJK COMPATIBILITY IDEOGRAPH-F9A0 → CJK UNIFIED IDEOGRAPH-88C2       # 
+
+F9E7 ; 88CF ;  MA      # ( 裏 → 裏 ) CJK COMPATIBILITY IDEOGRAPH-F9E7 → CJK UNIFIED IDEOGRAPH-88CF       # 
+
+2F9C6 ;        88D7 ;  MA      # ( 裗 → 裗 ) CJK COMPATIBILITY IDEOGRAPH-2F9C6 → CJK UNIFIED IDEOGRAPH-88D7     # 
+
+2F9C7 ;        88DE ;  MA      # ( 裞 → 裞 ) CJK COMPATIBILITY IDEOGRAPH-2F9C7 → CJK UNIFIED IDEOGRAPH-88DE     # 
+
+F9E8 ; 88E1 ;  MA      # ( 裡 → 裡 ) CJK COMPATIBILITY IDEOGRAPH-F9E8 → CJK UNIFIED IDEOGRAPH-88E1       # 
+
+F912 ; 88F8 ;  MA      # ( 裸 → 裸 ) CJK COMPATIBILITY IDEOGRAPH-F912 → CJK UNIFIED IDEOGRAPH-88F8       # 
+
+2F9C9 ;        88FA ;  MA      # ( 裺 → 裺 ) CJK COMPATIBILITY IDEOGRAPH-2F9C9 → CJK UNIFIED IDEOGRAPH-88FA     # 
+
+FA60 ; 8910 ;  MA      # ( 褐 → 褐 ) CJK COMPATIBILITY IDEOGRAPH-FA60 → CJK UNIFIED IDEOGRAPH-8910       # 
+
+FAB6 ; 8941 ;  MA      # ( 襁 → 襁 ) CJK COMPATIBILITY IDEOGRAPH-FAB6 → CJK UNIFIED IDEOGRAPH-8941       # 
+
+F924 ; 8964 ;  MA      # ( 襤 → 襤 ) CJK COMPATIBILITY IDEOGRAPH-F924 → CJK UNIFIED IDEOGRAPH-8964       # 
+
+2F91 ; 897E ;  MA      #* ( ⾑ → 襾 ) KANGXI RADICAL WEST → CJK UNIFIED IDEOGRAPH-897E   # 
+
+2EC4 ; 897F ;  MA      #* ( ⻄ → 西 ) CJK RADICAL WEST TWO → CJK UNIFIED IDEOGRAPH-897F  # 
+
+2EC3 ; 8980 ;  MA      #* ( ⻃ → 覀 ) CJK RADICAL WEST ONE → CJK UNIFIED IDEOGRAPH-8980  # 
+
+FAB7 ; 8986 ;  MA      # ( 覆 → 覆 ) CJK COMPATIBILITY IDEOGRAPH-FAB7 → CJK UNIFIED IDEOGRAPH-8986       # 
+
+FA0A ; 898B ;  MA      # ( 見 → 見 ) CJK COMPATIBILITY IDEOGRAPH-FA0A → CJK UNIFIED IDEOGRAPH-898B       # 
+2F92 ; 898B ;  MA      #* ( ⾒ → 見 ) KANGXI RADICAL SEE → CJK UNIFIED IDEOGRAPH-898B    # 
+
+FA61 ; 8996 ;  MA      # ( 視 → 視 ) CJK COMPATIBILITY IDEOGRAPH-FA61 → CJK UNIFIED IDEOGRAPH-8996       # 
+FAB8 ; 8996 ;  MA      # ( 視 → 視 ) CJK COMPATIBILITY IDEOGRAPH-FAB8 → CJK UNIFIED IDEOGRAPH-8996       # 
+
+2EC5 ; 89C1 ;  MA      #* ( ⻅ → 见 ) CJK RADICAL C-SIMPLIFIED SEE → CJK UNIFIED IDEOGRAPH-89C1  # 
+
+2F93 ; 89D2 ;  MA      #* ( ⾓ → 角 ) KANGXI RADICAL HORN → CJK UNIFIED IDEOGRAPH-89D2   # 
+
+2F94 ; 8A00 ;  MA      #* ( ⾔ → 言 ) KANGXI RADICAL SPEECH → CJK UNIFIED IDEOGRAPH-8A00 # 
+
+8A7D ; 8A2E ;  MA      # ( 詽 → 訮 ) CJK UNIFIED IDEOGRAPH-8A7D → CJK UNIFIED IDEOGRAPH-8A2E     # 
+
+2F9CF ;        8AA0 ;  MA      # ( 誠 → 誠 ) CJK COMPATIBILITY IDEOGRAPH-2F9CF → CJK UNIFIED IDEOGRAPH-8AA0     # 
+
+F96F ; 8AAA ;  MA      # ( 說 → 說 ) CJK COMPATIBILITY IDEOGRAPH-F96F → CJK UNIFIED IDEOGRAPH-8AAA       # 
+F9A1 ; 8AAA ;  MA      # ( 說 → 說 ) CJK COMPATIBILITY IDEOGRAPH-F9A1 → CJK UNIFIED IDEOGRAPH-8AAA       # 
+
+FAB9 ; 8ABF ;  MA      # ( 調 → 調 ) CJK COMPATIBILITY IDEOGRAPH-FAB9 → CJK UNIFIED IDEOGRAPH-8ABF       # 
+
+FABB ; 8ACB ;  MA      # ( 請 → 請 ) CJK COMPATIBILITY IDEOGRAPH-FABB → CJK UNIFIED IDEOGRAPH-8ACB       # 
+
+F97D ; 8AD2 ;  MA      # ( 諒 → 諒 ) CJK COMPATIBILITY IDEOGRAPH-F97D → CJK UNIFIED IDEOGRAPH-8AD2       # 
+
+F941 ; 8AD6 ;  MA      # ( 論 → 論 ) CJK COMPATIBILITY IDEOGRAPH-F941 → CJK UNIFIED IDEOGRAPH-8AD6       # 
+
+FABE ; 8AED ;  MA      # ( 諭 → 諭 ) CJK COMPATIBILITY IDEOGRAPH-FABE → CJK UNIFIED IDEOGRAPH-8AED       # 
+2F9D0 ;        8AED ;  MA      # ( 諭 → 諭 ) CJK COMPATIBILITY IDEOGRAPH-2F9D0 → CJK UNIFIED IDEOGRAPH-8AED     # 
+
+FA22 ; 8AF8 ;  MA      # ( 諸 → 諸 ) CJK COMPATIBILITY IDEOGRAPH-FA22 → CJK UNIFIED IDEOGRAPH-8AF8       # 
+FABA ; 8AF8 ;  MA      # ( 諸 → 諸 ) CJK COMPATIBILITY IDEOGRAPH-FABA → CJK UNIFIED IDEOGRAPH-8AF8       # 
+
+F95D ; 8AFE ;  MA      # ( 諾 → 諾 ) CJK COMPATIBILITY IDEOGRAPH-F95D → CJK UNIFIED IDEOGRAPH-8AFE       # 
+FABD ; 8AFE ;  MA      # ( 諾 → 諾 ) CJK COMPATIBILITY IDEOGRAPH-FABD → CJK UNIFIED IDEOGRAPH-8AFE       # 
+
+FA62 ; 8B01 ;  MA      # ( 謁 → 謁 ) CJK COMPATIBILITY IDEOGRAPH-FA62 → CJK UNIFIED IDEOGRAPH-8B01       # 
+FABC ; 8B01 ;  MA      # ( 謁 → 謁 ) CJK COMPATIBILITY IDEOGRAPH-FABC → CJK UNIFIED IDEOGRAPH-8B01       # 
+
+FA63 ; 8B39 ;  MA      # ( 謹 → 謹 ) CJK COMPATIBILITY IDEOGRAPH-FA63 → CJK UNIFIED IDEOGRAPH-8B39       # 
+FABF ; 8B39 ;  MA      # ( 謹 → 謹 ) CJK COMPATIBILITY IDEOGRAPH-FABF → CJK UNIFIED IDEOGRAPH-8B39       # 
+
+F9FC ; 8B58 ;  MA      # ( 識 → 識 ) CJK COMPATIBILITY IDEOGRAPH-F9FC → CJK UNIFIED IDEOGRAPH-8B58       # 
+
+F95A ; 8B80 ;  MA      # ( 讀 → 讀 ) CJK COMPATIBILITY IDEOGRAPH-F95A → CJK UNIFIED IDEOGRAPH-8B80       # 
+
+8B8F ; 8B86 ;  MA      # ( 讏 → 讆 ) CJK UNIFIED IDEOGRAPH-8B8F → CJK UNIFIED IDEOGRAPH-8B86     # 
+
+FAC0 ; 8B8A ;  MA      # ( 變 → 變 ) CJK COMPATIBILITY IDEOGRAPH-FAC0 → CJK UNIFIED IDEOGRAPH-8B8A       # 
+2F9D1 ;        8B8A ;  MA      # ( 變 → 變 ) CJK COMPATIBILITY IDEOGRAPH-2F9D1 → CJK UNIFIED IDEOGRAPH-8B8A     # 
+
+2EC8 ; 8BA0 ;  MA      #* ( ⻈ → 讠 ) CJK RADICAL C-SIMPLIFIED SPEECH → CJK UNIFIED IDEOGRAPH-8BA0       # 
+
+2F95 ; 8C37 ;  MA      #* ( ⾕ → 谷 ) KANGXI RADICAL VALLEY → CJK UNIFIED IDEOGRAPH-8C37 # 
+
+2F96 ; 8C46 ;  MA      #* ( ⾖ → 豆 ) KANGXI RADICAL BEAN → CJK UNIFIED IDEOGRAPH-8C46   # 
+
+F900 ; 8C48 ;  MA      # ( 豈 → 豈 ) CJK COMPATIBILITY IDEOGRAPH-F900 → CJK UNIFIED IDEOGRAPH-8C48       # 
+
+2F9D2 ;        8C55 ;  MA      # ( 豕 → 豕 ) CJK COMPATIBILITY IDEOGRAPH-2F9D2 → CJK UNIFIED IDEOGRAPH-8C55     # 
+2F97 ; 8C55 ;  MA      #* ( ⾗ → 豕 ) KANGXI RADICAL PIG → CJK UNIFIED IDEOGRAPH-8C55    # 
+
+8C63 ; 8C5C ;  MA      # ( 豣 → 豜 ) CJK UNIFIED IDEOGRAPH-8C63 → CJK UNIFIED IDEOGRAPH-8C5C     # 
+
+2F98 ; 8C78 ;  MA      #* ( ⾘ → 豸 ) KANGXI RADICAL BADGER → CJK UNIFIED IDEOGRAPH-8C78 # 
+
+2F99 ; 8C9D ;  MA      #* ( ⾙ → 貝 ) KANGXI RADICAL SHELL → CJK UNIFIED IDEOGRAPH-8C9D  # 
+
+2F9D4 ;        8CAB ;  MA      # ( 貫 → 貫 ) CJK COMPATIBILITY IDEOGRAPH-2F9D4 → CJK UNIFIED IDEOGRAPH-8CAB     # 
+
+2F9D5 ;        8CC1 ;  MA      # ( 賁 → 賁 ) CJK COMPATIBILITY IDEOGRAPH-2F9D5 → CJK UNIFIED IDEOGRAPH-8CC1     # 
+
+F948 ; 8CC2 ;  MA      # ( 賂 → 賂 ) CJK COMPATIBILITY IDEOGRAPH-F948 → CJK UNIFIED IDEOGRAPH-8CC2       # 
+
+F903 ; 8CC8 ;  MA      # ( 賈 → 賈 ) CJK COMPATIBILITY IDEOGRAPH-F903 → CJK UNIFIED IDEOGRAPH-8CC8       # 
+
+FA64 ; 8CD3 ;  MA      # ( 賓 → 賓 ) CJK COMPATIBILITY IDEOGRAPH-FA64 → CJK UNIFIED IDEOGRAPH-8CD3       # 
+
+FA65 ; 8D08 ;  MA      # ( 贈 → 贈 ) CJK COMPATIBILITY IDEOGRAPH-FA65 → CJK UNIFIED IDEOGRAPH-8D08       # 
+FAC1 ; 8D08 ;  MA      # ( 贈 → 贈 ) CJK COMPATIBILITY IDEOGRAPH-FAC1 → CJK UNIFIED IDEOGRAPH-8D08       # 
+
+2F9D6 ;        8D1B ;  MA      # ( 贛 → 贛 ) CJK COMPATIBILITY IDEOGRAPH-2F9D6 → CJK UNIFIED IDEOGRAPH-8D1B     # 
+
+2EC9 ; 8D1D ;  MA      #* ( ⻉ → 贝 ) CJK RADICAL C-SIMPLIFIED SHELL → CJK UNIFIED IDEOGRAPH-8D1D        # 
+
+2F9A ; 8D64 ;  MA      #* ( ⾚ → 赤 ) KANGXI RADICAL RED → CJK UNIFIED IDEOGRAPH-8D64    # 
+
+2F9B ; 8D70 ;  MA      #* ( ⾛ → 走 ) KANGXI RADICAL RUN → CJK UNIFIED IDEOGRAPH-8D70    # 
+
+2F9D7 ;        8D77 ;  MA      # ( 起 → 起 ) CJK COMPATIBILITY IDEOGRAPH-2F9D7 → CJK UNIFIED IDEOGRAPH-8D77     # 
+
+8D86 ; 8D7F ;  MA      # ( 趆 → 赿 ) CJK UNIFIED IDEOGRAPH-8D86 → CJK UNIFIED IDEOGRAPH-8D7F     # 
+
+2F9C ; 8DB3 ;  MA      #* ( ⾜ → 足 ) KANGXI RADICAL FOOT → CJK UNIFIED IDEOGRAPH-8DB3   # 
+
+2F9DB ;        8DBC ;  MA      # ( 趼 → 趼 ) CJK COMPATIBILITY IDEOGRAPH-2F9DB → CJK UNIFIED IDEOGRAPH-8DBC     # 
+
+2F9DA ;        8DCB ;  MA      # ( 跋 → 跋 ) CJK COMPATIBILITY IDEOGRAPH-2F9DA → CJK UNIFIED IDEOGRAPH-8DCB     # 
+
+8DFA ; 8DE5 ;  MA      # ( 跺 → 跥 ) CJK UNIFIED IDEOGRAPH-8DFA → CJK UNIFIED IDEOGRAPH-8DE5     # 
+
+F937 ; 8DEF ;  MA      # ( 路 → 路 ) CJK COMPATIBILITY IDEOGRAPH-F937 → CJK UNIFIED IDEOGRAPH-8DEF       # 
+
+2F9DC ;        8DF0 ;  MA      # ( 跰 → 跰 ) CJK COMPATIBILITY IDEOGRAPH-2F9DC → CJK UNIFIED IDEOGRAPH-8DF0     # 
+
+8E9B ; 8E97 ;  MA      # ( 躛 → 躗 ) CJK UNIFIED IDEOGRAPH-8E9B → CJK UNIFIED IDEOGRAPH-8E97     # 
+
+2F9D ; 8EAB ;  MA      #* ( ⾝ → 身 ) KANGXI RADICAL BODY → CJK UNIFIED IDEOGRAPH-8EAB   # 
+
+F902 ; 8ECA ;  MA      # ( 車 → 車 ) CJK COMPATIBILITY IDEOGRAPH-F902 → CJK UNIFIED IDEOGRAPH-8ECA       # 
+2F9E ; 8ECA ;  MA      #* ( ⾞ → 車 ) KANGXI RADICAL CART → CJK UNIFIED IDEOGRAPH-8ECA   # 
+
+2F9DE ;        8ED4 ;  MA      # ( 軔 → 軔 ) CJK COMPATIBILITY IDEOGRAPH-2F9DE → CJK UNIFIED IDEOGRAPH-8ED4     # 
+
+8F27 ; 8EFF ;  MA      # ( 輧 → 軿 ) CJK UNIFIED IDEOGRAPH-8F27 → CJK UNIFIED IDEOGRAPH-8EFF     # 
+
+F998 ; 8F26 ;  MA      # ( 輦 → 輦 ) CJK COMPATIBILITY IDEOGRAPH-F998 → CJK UNIFIED IDEOGRAPH-8F26       # 
+
+F9D7 ; 8F2A ;  MA      # ( 輪 → 輪 ) CJK COMPATIBILITY IDEOGRAPH-F9D7 → CJK UNIFIED IDEOGRAPH-8F2A       # 
+
+FAC2 ; 8F38 ;  MA      # ( 輸 → 輸 ) CJK COMPATIBILITY IDEOGRAPH-FAC2 → CJK UNIFIED IDEOGRAPH-8F38       # 
+2F9DF ;        8F38 ;  MA      # ( 輸 → 輸 ) CJK COMPATIBILITY IDEOGRAPH-2F9DF → CJK UNIFIED IDEOGRAPH-8F38     # 
+
+FA07 ; 8F3B ;  MA      # ( 輻 → 輻 ) CJK COMPATIBILITY IDEOGRAPH-FA07 → CJK UNIFIED IDEOGRAPH-8F3B       # 
+
+F98D ; 8F62 ;  MA      # ( 轢 → 轢 ) CJK COMPATIBILITY IDEOGRAPH-F98D → CJK UNIFIED IDEOGRAPH-8F62       # 
+
+2ECB ; 8F66 ;  MA      #* ( ⻋ → 车 ) CJK RADICAL C-SIMPLIFIED CART → CJK UNIFIED IDEOGRAPH-8F66 # 
+
+2F9F ; 8F9B ;  MA      #* ( ⾟ → 辛 ) KANGXI RADICAL BITTER → CJK UNIFIED IDEOGRAPH-8F9B # 
+
+2F98D ;        8F9E ;  MA      # ( 辞 → 辞 ) CJK COMPATIBILITY IDEOGRAPH-2F98D → CJK UNIFIED IDEOGRAPH-8F9E     # 
+
+F971 ; 8FB0 ;  MA      # ( 辰 → 辰 ) CJK COMPATIBILITY IDEOGRAPH-F971 → CJK UNIFIED IDEOGRAPH-8FB0       # 
+2FA0 ; 8FB0 ;  MA      #* ( ⾠ → 辰 ) KANGXI RADICAL MORNING → CJK UNIFIED IDEOGRAPH-8FB0        # 
+
+2FA1 ; 8FB5 ;  MA      #* ( ⾡ → 辵 ) KANGXI RADICAL WALK → CJK UNIFIED IDEOGRAPH-8FB5   # 
+
+FA66 ; 8FB6 ;  MA      # ( 辶 → 辶 ) CJK COMPATIBILITY IDEOGRAPH-FA66 → CJK UNIFIED IDEOGRAPH-8FB6       # 
+2ECC ; 8FB6 ;  MA      #* ( ⻌ → 辶 ) CJK RADICAL SIMPLIFIED WALK → CJK UNIFIED IDEOGRAPH-8FB6   # 
+2ECD ; 8FB6 ;  MA      #* ( ⻍ → 辶 ) CJK RADICAL WALK ONE → CJK UNIFIED IDEOGRAPH-8FB6  # 
+
+F99A ; 9023 ;  MA      # ( 連 → 連 ) CJK COMPATIBILITY IDEOGRAPH-F99A → CJK UNIFIED IDEOGRAPH-9023       # 
+
+FA25 ; 9038 ;  MA      # ( 逸 → 逸 ) CJK COMPATIBILITY IDEOGRAPH-FA25 → CJK UNIFIED IDEOGRAPH-9038       # 
+FA67 ; 9038 ;  MA      # ( 逸 → 逸 ) CJK COMPATIBILITY IDEOGRAPH-FA67 → CJK UNIFIED IDEOGRAPH-9038       # 
+
+FAC3 ; 9072 ;  MA      # ( 遲 → 遲 ) CJK COMPATIBILITY IDEOGRAPH-FAC3 → CJK UNIFIED IDEOGRAPH-9072       # 
+
+F9C3 ; 907C ;  MA      # ( 遼 → 遼 ) CJK COMPATIBILITY IDEOGRAPH-F9C3 → CJK UNIFIED IDEOGRAPH-907C       # 
+
+F913 ; 908F ;  MA      # ( 邏 → 邏 ) CJK COMPATIBILITY IDEOGRAPH-F913 → CJK UNIFIED IDEOGRAPH-908F       # 
+
+2FA2 ; 9091 ;  MA      #* ( ⾢ → 邑 ) KANGXI RADICAL CITY → CJK UNIFIED IDEOGRAPH-9091   # 
+
+2F9E2 ;        9094 ;  MA      # ( 邔 → 邔 ) CJK COMPATIBILITY IDEOGRAPH-2F9E2 → CJK UNIFIED IDEOGRAPH-9094     # 
+
+F92C ; 90CE ;  MA      # ( 郎 → 郎 ) CJK COMPATIBILITY IDEOGRAPH-F92C → CJK UNIFIED IDEOGRAPH-90CE       # 
+90DE ; 90CE ;  MA      # ( 郞 → 郎 ) CJK UNIFIED IDEOGRAPH-90DE → CJK UNIFIED IDEOGRAPH-90CE     # →郎→
+
+2F9E3 ;        90F1 ;  MA      # ( 郱 → 郱 ) CJK COMPATIBILITY IDEOGRAPH-2F9E3 → CJK UNIFIED IDEOGRAPH-90F1     # 
+
+FA26 ; 90FD ;  MA      # ( 都 → 都 ) CJK COMPATIBILITY IDEOGRAPH-FA26 → CJK UNIFIED IDEOGRAPH-90FD       # 
+
+2F9E4 ;        9111 ;  MA      # ( 鄑 → 鄑 ) CJK COMPATIBILITY IDEOGRAPH-2F9E4 → CJK UNIFIED IDEOGRAPH-9111     # 
+
+2F9E6 ;        911B ;  MA      # ( 鄛 → 鄛 ) CJK COMPATIBILITY IDEOGRAPH-2F9E6 → CJK UNIFIED IDEOGRAPH-911B     # 
+
+2FA3 ; 9149 ;  MA      #* ( ⾣ → 酉 ) KANGXI RADICAL WINE → CJK UNIFIED IDEOGRAPH-9149   # 
+
+F919 ; 916A ;  MA      # ( 酪 → 酪 ) CJK COMPATIBILITY IDEOGRAPH-F919 → CJK UNIFIED IDEOGRAPH-916A       # 
+
+FAC4 ; 9199 ;  MA      # ( 醙 → 醙 ) CJK COMPATIBILITY IDEOGRAPH-FAC4 → CJK UNIFIED IDEOGRAPH-9199       # 
+
+F9B7 ; 91B4 ;  MA      # ( 醴 → 醴 ) CJK COMPATIBILITY IDEOGRAPH-F9B7 → CJK UNIFIED IDEOGRAPH-91B4       # 
+
+2FA4 ; 91C6 ;  MA      #* ( ⾤ → 釆 ) KANGXI RADICAL DISTINGUISH → CJK UNIFIED IDEOGRAPH-91C6    # 
+
+F9E9 ; 91CC ;  MA      # ( 里 → 里 ) CJK COMPATIBILITY IDEOGRAPH-F9E9 → CJK UNIFIED IDEOGRAPH-91CC       # 
+2FA5 ; 91CC ;  MA      #* ( ⾥ → 里 ) KANGXI RADICAL VILLAGE → CJK UNIFIED IDEOGRAPH-91CC        # 
+
+F97E ; 91CF ;  MA      # ( 量 → 量 ) CJK COMPATIBILITY IDEOGRAPH-F97E → CJK UNIFIED IDEOGRAPH-91CF       # 
+
+F90A ; 91D1 ;  MA      # ( 金 → 金 ) CJK COMPATIBILITY IDEOGRAPH-F90A → CJK UNIFIED IDEOGRAPH-91D1       # 
+2FA6 ; 91D1 ;  MA      #* ( ⾦ → 金 ) KANGXI RADICAL GOLD → CJK UNIFIED IDEOGRAPH-91D1   # 
+
+F9B1 ; 9234 ;  MA      # ( 鈴 → 鈴 ) CJK COMPATIBILITY IDEOGRAPH-F9B1 → CJK UNIFIED IDEOGRAPH-9234       # 
+
+2F9E7 ;        9238 ;  MA      # ( 鈸 → 鈸 ) CJK COMPATIBILITY IDEOGRAPH-2F9E7 → CJK UNIFIED IDEOGRAPH-9238     # 
+
+FAC5 ; 9276 ;  MA      # ( 鉶 → 鉶 ) CJK COMPATIBILITY IDEOGRAPH-FAC5 → CJK UNIFIED IDEOGRAPH-9276       # 
+
+2F9EA ;        927C ;  MA      # ( 鉼 → 鉼 ) CJK COMPATIBILITY IDEOGRAPH-2F9EA → CJK UNIFIED IDEOGRAPH-927C     # 
+
+2F9E8 ;        92D7 ;  MA      # ( 鋗 → 鋗 ) CJK COMPATIBILITY IDEOGRAPH-2F9E8 → CJK UNIFIED IDEOGRAPH-92D7     # 
+
+2F9E9 ;        92D8 ;  MA      # ( 鋘 → 鋘 ) CJK COMPATIBILITY IDEOGRAPH-2F9E9 → CJK UNIFIED IDEOGRAPH-92D8     # 
+
+F93F ; 9304 ;  MA      # ( 錄 → 錄 ) CJK COMPATIBILITY IDEOGRAPH-F93F → CJK UNIFIED IDEOGRAPH-9304       # 
+
+F99B ; 934A ;  MA      # ( 鍊 → 鍊 ) CJK COMPATIBILITY IDEOGRAPH-F99B → CJK UNIFIED IDEOGRAPH-934A       # 
+
+93AE ; 93AD ;  MA      # ( 鎮 → 鎭 ) CJK UNIFIED IDEOGRAPH-93AE → CJK UNIFIED IDEOGRAPH-93AD     # 
+
+2F9EB ;        93F9 ;  MA      # ( 鏹 → 鏹 ) CJK COMPATIBILITY IDEOGRAPH-2F9EB → CJK UNIFIED IDEOGRAPH-93F9     # 
+
+2F9EC ;        9415 ;  MA      # ( 鐕 → 鐕 ) CJK COMPATIBILITY IDEOGRAPH-2F9EC → CJK UNIFIED IDEOGRAPH-9415     # 
+
+2ED0 ; 9485 ;  MA      #* ( ⻐ → 钅 ) CJK RADICAL C-SIMPLIFIED GOLD → CJK UNIFIED IDEOGRAPH-9485 # 
+
+2ED1 ; 9577 ;  MA      #* ( ⻑ → 長 ) CJK RADICAL LONG ONE → CJK UNIFIED IDEOGRAPH-9577  # 
+2FA7 ; 9577 ;  MA      #* ( ⾧ → 長 ) KANGXI RADICAL LONG → CJK UNIFIED IDEOGRAPH-9577   # 
+
+2ED2 ; 9578 ;  MA      #* ( ⻒ → 镸 ) CJK RADICAL LONG TWO → CJK UNIFIED IDEOGRAPH-9578  # 
+
+2ED3 ; 957F ;  MA      #* ( ⻓ → 长 ) CJK RADICAL C-SIMPLIFIED LONG → CJK UNIFIED IDEOGRAPH-957F # 
+
+2FA8 ; 9580 ;  MA      #* ( ⾨ → 門 ) KANGXI RADICAL GATE → CJK UNIFIED IDEOGRAPH-9580   # 
+
+2F9EE ;        958B ;  MA      # ( 開 → 開 ) CJK COMPATIBILITY IDEOGRAPH-2F9EE → CJK UNIFIED IDEOGRAPH-958B     # 
+
+F986 ; 95AD ;  MA      # ( 閭 → 閭 ) CJK COMPATIBILITY IDEOGRAPH-F986 → CJK UNIFIED IDEOGRAPH-95AD       # 
+
+2F9F0 ;        95B7 ;  MA      # ( 閷 → 閷 ) CJK COMPATIBILITY IDEOGRAPH-2F9F0 → CJK UNIFIED IDEOGRAPH-95B7     # 
+
+2ED4 ; 95E8 ;  MA      #* ( ⻔ → 门 ) CJK RADICAL C-SIMPLIFIED GATE → CJK UNIFIED IDEOGRAPH-95E8 # 
+
+2FA9 ; 961C ;  MA      #* ( ⾩ → 阜 ) KANGXI RADICAL MOUND → CJK UNIFIED IDEOGRAPH-961C  # 
+
+2ECF ; 961D ;  MA      #* ( ⻏ → 阝 ) CJK RADICAL CITY → CJK UNIFIED IDEOGRAPH-961D      # 
+2ED6 ; 961D ;  MA      #* ( ⻖ → 阝 ) CJK RADICAL MOUND TWO → CJK UNIFIED IDEOGRAPH-961D # 
+
+F9C6 ; 962E ;  MA      # ( 阮 → 阮 ) CJK COMPATIBILITY IDEOGRAPH-F9C6 → CJK UNIFIED IDEOGRAPH-962E       # 
+
+F951 ; 964B ;  MA      # ( 陋 → 陋 ) CJK COMPATIBILITY IDEOGRAPH-F951 → CJK UNIFIED IDEOGRAPH-964B       # 
+
+FA09 ; 964D ;  MA      # ( 降 → 降 ) CJK COMPATIBILITY IDEOGRAPH-FA09 → CJK UNIFIED IDEOGRAPH-964D       # 
+
+F959 ; 9675 ;  MA      # ( 陵 → 陵 ) CJK COMPATIBILITY IDEOGRAPH-F959 → CJK UNIFIED IDEOGRAPH-9675       # 
+
+F9D3 ; 9678 ;  MA      # ( 陸 → 陸 ) CJK COMPATIBILITY IDEOGRAPH-F9D3 → CJK UNIFIED IDEOGRAPH-9678       # 
+
+FAC6 ; 967C ;  MA      # ( 陼 → 陼 ) CJK COMPATIBILITY IDEOGRAPH-FAC6 → CJK UNIFIED IDEOGRAPH-967C       # 
+
+F9DC ; 9686 ;  MA      # ( 隆 → 隆 ) CJK COMPATIBILITY IDEOGRAPH-F9DC → CJK UNIFIED IDEOGRAPH-9686       # 
+
+F9F1 ; 96A3 ;  MA      # ( 隣 → 隣 ) CJK COMPATIBILITY IDEOGRAPH-F9F1 → CJK UNIFIED IDEOGRAPH-96A3       # 
+
+2FAA ; 96B6 ;  MA      #* ( ⾪ → 隶 ) KANGXI RADICAL SLAVE → CJK UNIFIED IDEOGRAPH-96B6  # 
+
+96B8 ; 96B7 ;  MA      # ( 隸 → 隷 ) CJK UNIFIED IDEOGRAPH-96B8 → CJK UNIFIED IDEOGRAPH-96B7     # →隸→
+F9B8 ; 96B7 ;  MA      # ( 隸 → 隷 ) CJK COMPATIBILITY IDEOGRAPH-F9B8 → CJK UNIFIED IDEOGRAPH-96B7       # 
+
+2FAB ; 96B9 ;  MA      #* ( ⾫ → 隹 ) KANGXI RADICAL SHORT TAILED BIRD → CJK UNIFIED IDEOGRAPH-96B9      # 
+
+2F9F3 ;        96C3 ;  MA      # ( 雃 → 雃 ) CJK COMPATIBILITY IDEOGRAPH-2F9F3 → CJK UNIFIED IDEOGRAPH-96C3     # 
+
+F9EA ; 96E2 ;  MA      # ( 離 → 離 ) CJK COMPATIBILITY IDEOGRAPH-F9EA → CJK UNIFIED IDEOGRAPH-96E2       # 
+
+FA68 ; 96E3 ;  MA      # ( 難 → 難 ) CJK COMPATIBILITY IDEOGRAPH-FA68 → CJK UNIFIED IDEOGRAPH-96E3       # 
+FAC7 ; 96E3 ;  MA      # ( 難 → 難 ) CJK COMPATIBILITY IDEOGRAPH-FAC7 → CJK UNIFIED IDEOGRAPH-96E3       # 
+
+2FAC ; 96E8 ;  MA      #* ( ⾬ → 雨 ) KANGXI RADICAL RAIN → CJK UNIFIED IDEOGRAPH-96E8   # 
+
+F9B2 ; 96F6 ;  MA      # ( 零 → 零 ) CJK COMPATIBILITY IDEOGRAPH-F9B2 → CJK UNIFIED IDEOGRAPH-96F6       # 
+
+F949 ; 96F7 ;  MA      # ( 雷 → 雷 ) CJK COMPATIBILITY IDEOGRAPH-F949 → CJK UNIFIED IDEOGRAPH-96F7       # 
+
+2F9F5 ;        9723 ;  MA      # ( 霣 → 霣 ) CJK COMPATIBILITY IDEOGRAPH-2F9F5 → CJK UNIFIED IDEOGRAPH-9723     # 
+
+F938 ; 9732 ;  MA      # ( 露 → 露 ) CJK COMPATIBILITY IDEOGRAPH-F938 → CJK UNIFIED IDEOGRAPH-9732       # 
+
+F9B3 ; 9748 ;  MA      # ( 靈 → 靈 ) CJK COMPATIBILITY IDEOGRAPH-F9B3 → CJK UNIFIED IDEOGRAPH-9748       # 
+
+2FAD ; 9751 ;  MA      #* ( ⾭ → 靑 ) KANGXI RADICAL BLUE → CJK UNIFIED IDEOGRAPH-9751   # 
+
+2ED8 ; 9752 ;  MA      #* ( ⻘ → 青 ) CJK RADICAL BLUE → CJK UNIFIED IDEOGRAPH-9752      # 
+
+FA1C ; 9756 ;  MA      # ( 靖 → 靖 ) CJK COMPATIBILITY IDEOGRAPH-FA1C → CJK UNIFIED IDEOGRAPH-9756       # 
+FAC8 ; 9756 ;  MA      # ( 靖 → 靖 ) CJK COMPATIBILITY IDEOGRAPH-FAC8 → CJK UNIFIED IDEOGRAPH-9756       # 
+
+2FAE ; 975E ;  MA      #* ( ⾮ → 非 ) KANGXI RADICAL WRONG → CJK UNIFIED IDEOGRAPH-975E  # 
+
+2FAF ; 9762 ;  MA      #* ( ⾯ → 面 ) KANGXI RADICAL FACE → CJK UNIFIED IDEOGRAPH-9762   # 
+
+2FB0 ; 9769 ;  MA      #* ( ⾰ → 革 ) KANGXI RADICAL LEATHER → CJK UNIFIED IDEOGRAPH-9769        # 
+
+2FB1 ; 97CB ;  MA      #* ( ⾱ → 韋 ) KANGXI RADICAL TANNED LEATHER → CJK UNIFIED IDEOGRAPH-97CB # 
+
+FAC9 ; 97DB ;  MA      # ( 韛 → 韛 ) CJK COMPATIBILITY IDEOGRAPH-FAC9 → CJK UNIFIED IDEOGRAPH-97DB       # 
+
+2F9FA ;        97E0 ;  MA      # ( 韠 → 韠 ) CJK COMPATIBILITY IDEOGRAPH-2F9FA → CJK UNIFIED IDEOGRAPH-97E0     # 
+
+2ED9 ; 97E6 ;  MA      #* ( ⻙ → 韦 ) CJK RADICAL C-SIMPLIFIED TANNED LEATHER → CJK UNIFIED IDEOGRAPH-97E6       # 
+
+2FB2 ; 97ED ;  MA      #* ( ⾲ → 韭 ) KANGXI RADICAL LEEK → CJK UNIFIED IDEOGRAPH-97ED   # 
+
+2FB3 ; 97F3 ;  MA      #* ( ⾳ → 音 ) KANGXI RADICAL SOUND → CJK UNIFIED IDEOGRAPH-97F3  # 
+
+FA69 ; 97FF ;  MA      # ( 響 → 響 ) CJK COMPATIBILITY IDEOGRAPH-FA69 → CJK UNIFIED IDEOGRAPH-97FF       # 
+FACA ; 97FF ;  MA      # ( 響 → 響 ) CJK COMPATIBILITY IDEOGRAPH-FACA → CJK UNIFIED IDEOGRAPH-97FF       # 
+
+2FB4 ; 9801 ;  MA      #* ( ⾴ → 頁 ) KANGXI RADICAL LEAF → CJK UNIFIED IDEOGRAPH-9801   # 
+
+FACB ; 980B ;  MA      # ( 頋 → 頋 ) CJK COMPATIBILITY IDEOGRAPH-FACB → CJK UNIFIED IDEOGRAPH-980B       # 
+2F9FE ;        980B ;  MA      # ( 頋 → 頋 ) CJK COMPATIBILITY IDEOGRAPH-2F9FE → CJK UNIFIED IDEOGRAPH-980B     # 
+2F9FF ;        980B ;  MA      # ( 頋 → 頋 ) CJK COMPATIBILITY IDEOGRAPH-2F9FF → CJK UNIFIED IDEOGRAPH-980B     # 
+
+F9B4 ; 9818 ;  MA      # ( 領 → 領 ) CJK COMPATIBILITY IDEOGRAPH-F9B4 → CJK UNIFIED IDEOGRAPH-9818       # 
+
+2FA00 ;        9829 ;  MA      # ( 頩 → 頩 ) CJK COMPATIBILITY IDEOGRAPH-2FA00 → CJK UNIFIED IDEOGRAPH-9829     # 
+
+FA6A ; 983B ;  MA      # ( 頻 → 頻 ) CJK COMPATIBILITY IDEOGRAPH-FA6A → CJK UNIFIED IDEOGRAPH-983B       # 
+FACC ; 983B ;  MA      # ( 頻 → 頻 ) CJK COMPATIBILITY IDEOGRAPH-FACC → CJK UNIFIED IDEOGRAPH-983B       # 
+
+F9D0 ; 985E ;  MA      # ( 類 → 類 ) CJK COMPATIBILITY IDEOGRAPH-F9D0 → CJK UNIFIED IDEOGRAPH-985E       # 
+
+2EDA ; 9875 ;  MA      #* ( ⻚ → 页 ) CJK RADICAL C-SIMPLIFIED LEAF → CJK UNIFIED IDEOGRAPH-9875 # 
+
+2FB5 ; 98A8 ;  MA      #* ( ⾵ → 風 ) KANGXI RADICAL WIND → CJK UNIFIED IDEOGRAPH-98A8   # 
+
+2EDB ; 98CE ;  MA      #* ( ⻛ → 风 ) CJK RADICAL C-SIMPLIFIED WIND → CJK UNIFIED IDEOGRAPH-98CE # 
+
+2FB6 ; 98DB ;  MA      #* ( ⾶ → 飛 ) KANGXI RADICAL FLY → CJK UNIFIED IDEOGRAPH-98DB    # 
+
+2EDC ; 98DE ;  MA      #* ( ⻜ → 飞 ) CJK RADICAL C-SIMPLIFIED FLY → CJK UNIFIED IDEOGRAPH-98DE  # 
+
+2EDD ; 98DF ;  MA      #* ( ⻝ → 食 ) CJK RADICAL EAT ONE → CJK UNIFIED IDEOGRAPH-98DF   # 
+2FB7 ; 98DF ;  MA      #* ( ⾷ → 食 ) KANGXI RADICAL EAT → CJK UNIFIED IDEOGRAPH-98DF    # 
+
+2EDF ; 98E0 ;  MA      #* ( ⻟ → 飠 ) CJK RADICAL EAT THREE → CJK UNIFIED IDEOGRAPH-98E0 # 
+
+2FA02 ;        98E2 ;  MA      # ( 飢 → 飢 ) CJK COMPATIBILITY IDEOGRAPH-2FA02 → CJK UNIFIED IDEOGRAPH-98E2     # 
+
+FA2A ; 98EF ;  MA      # ( 飯 → 飯 ) CJK COMPATIBILITY IDEOGRAPH-FA2A → CJK UNIFIED IDEOGRAPH-98EF       # 
+
+FA2B ; 98FC ;  MA      # ( 飼 → 飼 ) CJK COMPATIBILITY IDEOGRAPH-FA2B → CJK UNIFIED IDEOGRAPH-98FC       # 
+
+FA2C ; 9928 ;  MA      # ( 館 → 館 ) CJK COMPATIBILITY IDEOGRAPH-FA2C → CJK UNIFIED IDEOGRAPH-9928       # 
+
+2FA04 ;        9929 ;  MA      # ( 餩 → 餩 ) CJK COMPATIBILITY IDEOGRAPH-2FA04 → CJK UNIFIED IDEOGRAPH-9929     # 
+
+2EE0 ; 9963 ;  MA      #* ( ⻠ → 饣 ) CJK RADICAL C-SIMPLIFIED EAT → CJK UNIFIED IDEOGRAPH-9963  # 
+
+2FB8 ; 9996 ;  MA      #* ( ⾸ → 首 ) KANGXI RADICAL HEAD → CJK UNIFIED IDEOGRAPH-9996   # 
+
+2FB9 ; 9999 ;  MA      #* ( ⾹ → 香 ) KANGXI RADICAL FRAGRANT → CJK UNIFIED IDEOGRAPH-9999       # 
+
+2FA05 ;        99A7 ;  MA      # ( 馧 → 馧 ) CJK COMPATIBILITY IDEOGRAPH-2FA05 → CJK UNIFIED IDEOGRAPH-99A7     # 
+
+2FBA ; 99AC ;  MA      #* ( ⾺ → 馬 ) KANGXI RADICAL HORSE → CJK UNIFIED IDEOGRAPH-99AC  # 
+
+2FA06 ;        99C2 ;  MA      # ( 駂 → 駂 ) CJK COMPATIBILITY IDEOGRAPH-2FA06 → CJK UNIFIED IDEOGRAPH-99C2     # 
+
+F91A ; 99F1 ;  MA      # ( 駱 → 駱 ) CJK COMPATIBILITY IDEOGRAPH-F91A → CJK UNIFIED IDEOGRAPH-99F1       # 
+
+2FA07 ;        99FE ;  MA      # ( 駾 → 駾 ) CJK COMPATIBILITY IDEOGRAPH-2FA07 → CJK UNIFIED IDEOGRAPH-99FE     # 
+
+F987 ; 9A6A ;  MA      # ( 驪 → 驪 ) CJK COMPATIBILITY IDEOGRAPH-F987 → CJK UNIFIED IDEOGRAPH-9A6A       # 
+
+2EE2 ; 9A6C ;  MA      #* ( ⻢ → 马 ) CJK RADICAL C-SIMPLIFIED HORSE → CJK UNIFIED IDEOGRAPH-9A6C        # 
+
+2FBB ; 9AA8 ;  MA      #* ( ⾻ → 骨 ) KANGXI RADICAL BONE → CJK UNIFIED IDEOGRAPH-9AA8   # 
+
+2FBC ; 9AD8 ;  MA      #* ( ⾼ → 高 ) KANGXI RADICAL TALL → CJK UNIFIED IDEOGRAPH-9AD8   # 
+
+2FBD ; 9ADF ;  MA      #* ( ⾽ → 髟 ) KANGXI RADICAL HAIR → CJK UNIFIED IDEOGRAPH-9ADF   # 
+
+FACD ; 9B12 ;  MA      # ( 鬒 → 鬒 ) CJK COMPATIBILITY IDEOGRAPH-FACD → CJK UNIFIED IDEOGRAPH-9B12       # 
+2FA0A ;        9B12 ;  MA      # ( 鬒 → 鬒 ) CJK COMPATIBILITY IDEOGRAPH-2FA0A → CJK UNIFIED IDEOGRAPH-9B12     # 
+
+2FBE ; 9B25 ;  MA      #* ( ⾾ → 鬥 ) KANGXI RADICAL FIGHT → CJK UNIFIED IDEOGRAPH-9B25  # 
+
+2FBF ; 9B2F ;  MA      #* ( ⾿ → 鬯 ) KANGXI RADICAL SACRIFICIAL WINE → CJK UNIFIED IDEOGRAPH-9B2F       # 
+
+2FC0 ; 9B32 ;  MA      #* ( ⿀ → 鬲 ) KANGXI RADICAL CAULDRON → CJK UNIFIED IDEOGRAPH-9B32       # 
+
+2FC1 ; 9B3C ;  MA      #* ( ⿁ → 鬼 ) KANGXI RADICAL GHOST → CJK UNIFIED IDEOGRAPH-9B3C  # 
+2EE4 ; 9B3C ;  MA      #* ( ⻤ → 鬼 ) CJK RADICAL GHOST → CJK UNIFIED IDEOGRAPH-9B3C     # 
+
+2FC2 ; 9B5A ;  MA      #* ( ⿂ → 魚 ) KANGXI RADICAL FISH → CJK UNIFIED IDEOGRAPH-9B5A   # 
+
+F939 ; 9B6F ;  MA      # ( 魯 → 魯 ) CJK COMPATIBILITY IDEOGRAPH-F939 → CJK UNIFIED IDEOGRAPH-9B6F       # 
+
+2FA0B ;        9C40 ;  MA      # ( 鱀 → 鱀 ) CJK COMPATIBILITY IDEOGRAPH-2FA0B → CJK UNIFIED IDEOGRAPH-9C40     # 
+
+F9F2 ; 9C57 ;  MA      # ( 鱗 → 鱗 ) CJK COMPATIBILITY IDEOGRAPH-F9F2 → CJK UNIFIED IDEOGRAPH-9C57       # 
+
+2EE5 ; 9C7C ;  MA      #* ( ⻥ → 鱼 ) CJK RADICAL C-SIMPLIFIED FISH → CJK UNIFIED IDEOGRAPH-9C7C # 
+
+2FC3 ; 9CE5 ;  MA      #* ( ⿃ → 鳥 ) KANGXI RADICAL BIRD → CJK UNIFIED IDEOGRAPH-9CE5   # 
+
+2FA0C ;        9CFD ;  MA      # ( 鳽 → 鳽 ) CJK COMPATIBILITY IDEOGRAPH-2FA0C → CJK UNIFIED IDEOGRAPH-9CFD     # 
+
+2FA0F ;        9D67 ;  MA      # ( 鵧 → 鵧 ) CJK COMPATIBILITY IDEOGRAPH-2FA0F → CJK UNIFIED IDEOGRAPH-9D67     # 
+
+FA2D ; 9DB4 ;  MA      # ( 鶴 → 鶴 ) CJK COMPATIBILITY IDEOGRAPH-FA2D → CJK UNIFIED IDEOGRAPH-9DB4       # 
+
+F93A ; 9DFA ;  MA      # ( 鷺 → 鷺 ) CJK COMPATIBILITY IDEOGRAPH-F93A → CJK UNIFIED IDEOGRAPH-9DFA       # 
+
+F920 ; 9E1E ;  MA      # ( 鸞 → 鸞 ) CJK COMPATIBILITY IDEOGRAPH-F920 → CJK UNIFIED IDEOGRAPH-9E1E       # 
+
+9E43 ; 9E42 ;  MA      # ( 鹃 → 鹂 ) CJK UNIFIED IDEOGRAPH-9E43 → CJK UNIFIED IDEOGRAPH-9E42     # 
+
+2FC4 ; 9E75 ;  MA      #* ( ⿄ → 鹵 ) KANGXI RADICAL SALT → CJK UNIFIED IDEOGRAPH-9E75   # 
+
+F940 ; 9E7F ;  MA      # ( 鹿 → 鹿 ) CJK COMPATIBILITY IDEOGRAPH-F940 → CJK UNIFIED IDEOGRAPH-9E7F       # 
+2FC5 ; 9E7F ;  MA      #* ( ⿅ → 鹿 ) KANGXI RADICAL DEER → CJK UNIFIED IDEOGRAPH-9E7F   # 
+
+F988 ; 9E97 ;  MA      # ( 麗 → 麗 ) CJK COMPATIBILITY IDEOGRAPH-F988 → CJK UNIFIED IDEOGRAPH-9E97       # 
+
+F9F3 ; 9E9F ;  MA      # ( 麟 → 麟 ) CJK COMPATIBILITY IDEOGRAPH-F9F3 → CJK UNIFIED IDEOGRAPH-9E9F       # 
+
+2FC6 ; 9EA5 ;  MA      #* ( ⿆ → 麥 ) KANGXI RADICAL WHEAT → CJK UNIFIED IDEOGRAPH-9EA5  # 
+
+2EE8 ; 9EA6 ;  MA      #* ( ⻨ → 麦 ) CJK RADICAL SIMPLIFIED WHEAT → CJK UNIFIED IDEOGRAPH-9EA6  # 
+
+2FA15 ;        9EBB ;  MA      # ( 麻 → 麻 ) CJK COMPATIBILITY IDEOGRAPH-2FA15 → CJK UNIFIED IDEOGRAPH-9EBB     # 
+2FC7 ; 9EBB ;  MA      #* ( ⿇ → 麻 ) KANGXI RADICAL HEMP → CJK UNIFIED IDEOGRAPH-9EBB   # 
+
+2FC8 ; 9EC3 ;  MA      #* ( ⿈ → 黃 ) KANGXI RADICAL YELLOW → CJK UNIFIED IDEOGRAPH-9EC3 # 
+
+2EE9 ; 9EC4 ;  MA      #* ( ⻩ → 黄 ) CJK RADICAL SIMPLIFIED YELLOW → CJK UNIFIED IDEOGRAPH-9EC4 # 
+
+2FC9 ; 9ECD ;  MA      #* ( ⿉ → 黍 ) KANGXI RADICAL MILLET → CJK UNIFIED IDEOGRAPH-9ECD # 
+
+F989 ; 9ECE ;  MA      # ( 黎 → 黎 ) CJK COMPATIBILITY IDEOGRAPH-F989 → CJK UNIFIED IDEOGRAPH-9ECE       # 
+
+2FCA ; 9ED1 ;  MA      #* ( ⿊ → 黑 ) KANGXI RADICAL BLACK → CJK UNIFIED IDEOGRAPH-9ED1  # 
+9ED2 ; 9ED1 ;  MA      # ( 黒 → 黑 ) CJK UNIFIED IDEOGRAPH-9ED2 → CJK UNIFIED IDEOGRAPH-9ED1     # →⿊→
+
+2FA17 ;        9EF9 ;  MA      # ( 黹 → 黹 ) CJK COMPATIBILITY IDEOGRAPH-2FA17 → CJK UNIFIED IDEOGRAPH-9EF9     # 
+2FCB ; 9EF9 ;  MA      #* ( ⿋ → 黹 ) KANGXI RADICAL EMBROIDERY → CJK UNIFIED IDEOGRAPH-9EF9     # 
+
+2FCC ; 9EFD ;  MA      #* ( ⿌ → 黽 ) KANGXI RADICAL FROG → CJK UNIFIED IDEOGRAPH-9EFD   # 
+
+2FA18 ;        9EFE ;  MA      # ( 黾 → 黾 ) CJK COMPATIBILITY IDEOGRAPH-2FA18 → CJK UNIFIED IDEOGRAPH-9EFE     # 
+
+2FA19 ;        9F05 ;  MA      # ( 鼅 → 鼅 ) CJK COMPATIBILITY IDEOGRAPH-2FA19 → CJK UNIFIED IDEOGRAPH-9F05     # 
+
+2FCD ; 9F0E ;  MA      #* ( ⿍ → 鼎 ) KANGXI RADICAL TRIPOD → CJK UNIFIED IDEOGRAPH-9F0E # 
+
+2FA1A ;        9F0F ;  MA      # ( 鼏 → 鼏 ) CJK COMPATIBILITY IDEOGRAPH-2FA1A → CJK UNIFIED IDEOGRAPH-9F0F     # 
+
+2FCE ; 9F13 ;  MA      #* ( ⿎ → 鼓 ) KANGXI RADICAL DRUM → CJK UNIFIED IDEOGRAPH-9F13   # 
+
+2FA1B ;        9F16 ;  MA      # ( 鼖 → 鼖 ) CJK COMPATIBILITY IDEOGRAPH-2FA1B → CJK UNIFIED IDEOGRAPH-9F16     # 
+
+2FCF ; 9F20 ;  MA      #* ( ⿏ → 鼠 ) KANGXI RADICAL RAT → CJK UNIFIED IDEOGRAPH-9F20    # 
+
+2FA1C ;        9F3B ;  MA      # ( 鼻 → 鼻 ) CJK COMPATIBILITY IDEOGRAPH-2FA1C → CJK UNIFIED IDEOGRAPH-9F3B     # 
+2FD0 ; 9F3B ;  MA      #* ( ⿐ → 鼻 ) KANGXI RADICAL NOSE → CJK UNIFIED IDEOGRAPH-9F3B   # 
+
+FAD8 ; 9F43 ;  MA      # ( 齃 → 齃 ) CJK COMPATIBILITY IDEOGRAPH-FAD8 → CJK UNIFIED IDEOGRAPH-9F43       # 
+
+2FD1 ; 9F4A ;  MA      #* ( ⿑ → 齊 ) KANGXI RADICAL EVEN → CJK UNIFIED IDEOGRAPH-9F4A   # 
+
+2EEC ; 9F50 ;  MA      #* ( ⻬ → 齐 ) CJK RADICAL C-SIMPLIFIED EVEN → CJK UNIFIED IDEOGRAPH-9F50 # 
+
+2FD2 ; 9F52 ;  MA      #* ( ⿒ → 齒 ) KANGXI RADICAL TOOTH → CJK UNIFIED IDEOGRAPH-9F52  # 
+
+2EEE ; 9F7F ;  MA      #* ( ⻮ → 齿 ) CJK RADICAL C-SIMPLIFIED TOOTH → CJK UNIFIED IDEOGRAPH-9F7F        # 
+
+F9C4 ; 9F8D ;  MA      # ( 龍 → 龍 ) CJK COMPATIBILITY IDEOGRAPH-F9C4 → CJK UNIFIED IDEOGRAPH-9F8D       # 
+2FD3 ; 9F8D ;  MA      #* ( ⿓ → 龍 ) KANGXI RADICAL DRAGON → CJK UNIFIED IDEOGRAPH-9F8D # 
+
+FAD9 ; 9F8E ;  MA      # ( 龎 → 龎 ) CJK COMPATIBILITY IDEOGRAPH-FAD9 → CJK UNIFIED IDEOGRAPH-9F8E       # 
+
+2EF0 ; 9F99 ;  MA      #* ( ⻰ → 龙 ) CJK RADICAL C-SIMPLIFIED DRAGON → CJK UNIFIED IDEOGRAPH-9F99       # 
+
+F907 ; 9F9C ;  MA      # ( 龜 → 龜 ) CJK COMPATIBILITY IDEOGRAPH-F907 → CJK UNIFIED IDEOGRAPH-9F9C       # 
+F908 ; 9F9C ;  MA      # ( 龜 → 龜 ) CJK COMPATIBILITY IDEOGRAPH-F908 → CJK UNIFIED IDEOGRAPH-9F9C       # 
+FACE ; 9F9C ;  MA      # ( 龜 → 龜 ) CJK COMPATIBILITY IDEOGRAPH-FACE → CJK UNIFIED IDEOGRAPH-9F9C       # 
+2FD4 ; 9F9C ;  MA      #* ( ⿔ → 龜 ) KANGXI RADICAL TURTLE → CJK UNIFIED IDEOGRAPH-9F9C # 
+
+2EF3 ; 9F9F ;  MA      #* ( ⻳ → 龟 ) CJK RADICAL C-SIMPLIFIED TURTLE → CJK UNIFIED IDEOGRAPH-9F9F       # 
+
+2FD5 ; 9FA0 ;  MA      #* ( ⿕ → 龠 ) KANGXI RADICAL FLUTE → CJK UNIFIED IDEOGRAPH-9FA0  # 
+
+2F80C ;        349E ;  MA      # ( 㒞 → 㒞 ) CJK COMPATIBILITY IDEOGRAPH-2F80C → CJK UNIFIED IDEOGRAPH-349E     # 
+
+2F813 ;        34B9 ;  MA      # ( 㒹 → 㒹 ) CJK COMPATIBILITY IDEOGRAPH-2F813 → CJK UNIFIED IDEOGRAPH-34B9     # 
+
+2F9CA ;        34BB ;  MA      # ( 㒻 → 㒻 ) CJK COMPATIBILITY IDEOGRAPH-2F9CA → CJK UNIFIED IDEOGRAPH-34BB     # 
+
+2F81F ;        34DF ;  MA      # ( 㓟 → 㓟 ) CJK COMPATIBILITY IDEOGRAPH-2F81F → CJK UNIFIED IDEOGRAPH-34DF     # 
+
+2F824 ;        3515 ;  MA      # ( 㔕 → 㔕 ) CJK COMPATIBILITY IDEOGRAPH-2F824 → CJK UNIFIED IDEOGRAPH-3515     # 
+
+2E8B ; 353E ;  MA      #* ( ⺋ → 㔾 ) CJK RADICAL SEAL → CJK UNIFIED IDEOGRAPH-353E      # 
+
+439B ; 3588 ;  MA      # ( 䎛 → 㖈 ) CJK UNIFIED IDEOGRAPH-439B → CJK UNIFIED IDEOGRAPH-3588     # 
+
+39B3 ; 363D ;  MA      # ( 㦳 → 㘽 ) CJK UNIFIED IDEOGRAPH-39B3 → CJK UNIFIED IDEOGRAPH-363D     # 
+
+2F867 ;        36EE ;  MA      # ( 㛮 → 㛮 ) CJK COMPATIBILITY IDEOGRAPH-2F867 → CJK UNIFIED IDEOGRAPH-36EE     # 
+
+2F868 ;        36FC ;  MA      # ( 㛼 → 㛼 ) CJK COMPATIBILITY IDEOGRAPH-2F868 → CJK UNIFIED IDEOGRAPH-36FC     # 
+
+2F876 ;        3781 ;  MA      # ( 㞁 → 㞁 ) CJK COMPATIBILITY IDEOGRAPH-2F876 → CJK UNIFIED IDEOGRAPH-3781     # 
+
+2F883 ;        382F ;  MA      # ( 㠯 → 㠯 ) CJK COMPATIBILITY IDEOGRAPH-2F883 → CJK UNIFIED IDEOGRAPH-382F     # 
+
+2F888 ;        3862 ;  MA      # ( 㡢 → 㡢 ) CJK COMPATIBILITY IDEOGRAPH-2F888 → CJK UNIFIED IDEOGRAPH-3862     # 
+
+2F88A ;        387C ;  MA      # ( 㡼 → 㡼 ) CJK COMPATIBILITY IDEOGRAPH-2F88A → CJK UNIFIED IDEOGRAPH-387C     # 
+
+2F896 ;        38C7 ;  MA      # ( 㣇 → 㣇 ) CJK COMPATIBILITY IDEOGRAPH-2F896 → CJK UNIFIED IDEOGRAPH-38C7     # 
+
+2F89B ;        38E3 ;  MA      # ( 㣣 → 㣣 ) CJK COMPATIBILITY IDEOGRAPH-2F89B → CJK UNIFIED IDEOGRAPH-38E3     # 
+
+2E97 ; 38FA ;  MA      #* ( ⺗ → 㣺 ) CJK RADICAL HEART TWO → CJK UNIFIED IDEOGRAPH-38FA # 
+
+2F8A2 ;        391C ;  MA      # ( 㤜 → 㤜 ) CJK COMPATIBILITY IDEOGRAPH-2F8A2 → CJK UNIFIED IDEOGRAPH-391C     # 
+
+2F8A1 ;        393A ;  MA      # ( 㤺 → 㤺 ) CJK COMPATIBILITY IDEOGRAPH-2F8A1 → CJK UNIFIED IDEOGRAPH-393A     # 
+
+2F8C2 ;        3A2E ;  MA      # ( 㨮 → 㨮 ) CJK COMPATIBILITY IDEOGRAPH-2F8C2 → CJK UNIFIED IDEOGRAPH-3A2E     # 
+
+6409 ; 3A41 ;  MA      # ( 搉 → 㩁 ) CJK UNIFIED IDEOGRAPH-6409 → CJK UNIFIED IDEOGRAPH-3A41     # 
+
+2F8C7 ;        3A6C ;  MA      # ( 㩬 → 㩬 ) CJK COMPATIBILITY IDEOGRAPH-2F8C7 → CJK UNIFIED IDEOGRAPH-3A6C     # 
+
+66F6 ; 3ADA ;  MA      # ( 曶 → 㫚 ) CJK UNIFIED IDEOGRAPH-66F6 → CJK UNIFIED IDEOGRAPH-3ADA     # 
+
+2F8D1 ;        3AE4 ;  MA      # ( 㫤 → 㫤 ) CJK COMPATIBILITY IDEOGRAPH-2F8D1 → CJK UNIFIED IDEOGRAPH-3AE4     # 
+
+2F8D0 ;        3B08 ;  MA      # ( 㬈 → 㬈 ) CJK COMPATIBILITY IDEOGRAPH-2F8D0 → CJK UNIFIED IDEOGRAPH-3B08     # 
+
+2F8CE ;        3B19 ;  MA      # ( 㬙 → 㬙 ) CJK COMPATIBILITY IDEOGRAPH-2F8CE → CJK UNIFIED IDEOGRAPH-3B19     # 
+
+80F6 ; 3B35 ;  MA      # ( 胶 → 㬵 ) CJK UNIFIED IDEOGRAPH-80F6 → CJK UNIFIED IDEOGRAPH-3B35     # 
+
+5E50 ; 3B3A ;  MA      # ( 幐 → 㬺 ) CJK UNIFIED IDEOGRAPH-5E50 → CJK UNIFIED IDEOGRAPH-3B3A     # 
+
+4420 ; 3B3B ;  MA      # ( 䐠 → 㬻 ) CJK UNIFIED IDEOGRAPH-4420 → CJK UNIFIED IDEOGRAPH-3B3B     # 
+
+2F8DE ;        3B49 ;  MA      # ( 㭉 → 㭉 ) CJK COMPATIBILITY IDEOGRAPH-2F8DE → CJK UNIFIED IDEOGRAPH-3B49     # 
+
+FAD2 ; 3B9D ;  MA      # ( 㮝 → 㮝 ) CJK COMPATIBILITY IDEOGRAPH-FAD2 → CJK UNIFIED IDEOGRAPH-3B9D       # 
+2F8E7 ;        3B9D ;  MA      # ( 㮝 → 㮝 ) CJK COMPATIBILITY IDEOGRAPH-2F8E7 → CJK UNIFIED IDEOGRAPH-3B9D     # 
+
+69E9 ; 3BA3 ;  MA      # ( 槩 → 㮣 ) CJK UNIFIED IDEOGRAPH-69E9 → CJK UNIFIED IDEOGRAPH-3BA3     # 
+
+2F8EE ;        3C18 ;  MA      # ( 㰘 → 㰘 ) CJK COMPATIBILITY IDEOGRAPH-2F8EE → CJK UNIFIED IDEOGRAPH-3C18     # 
+
+2F8F2 ;        3C4E ;  MA      # ( 㱎 → 㱎 ) CJK COMPATIBILITY IDEOGRAPH-2F8F2 → CJK UNIFIED IDEOGRAPH-3C4E     # 
+
+2F90A ;        3D33 ;  MA      # ( 㴳 → 㴳 ) CJK COMPATIBILITY IDEOGRAPH-2F90A → CJK UNIFIED IDEOGRAPH-3D33     # 
+
+2F916 ;        3D96 ;  MA      # ( 㶖 → 㶖 ) CJK COMPATIBILITY IDEOGRAPH-2F916 → CJK UNIFIED IDEOGRAPH-3D96     # 
+
+2F92A ;        3EAC ;  MA      # ( 㺬 → 㺬 ) CJK COMPATIBILITY IDEOGRAPH-2F92A → CJK UNIFIED IDEOGRAPH-3EAC     # 
+
+2F92C ;        3EB8 ;  MA      # ( 㺸 → 㺸 ) CJK COMPATIBILITY IDEOGRAPH-2F92C → CJK UNIFIED IDEOGRAPH-3EB8     # 
+2F92D ;        3EB8 ;  MA      # ( 㺸 → 㺸 ) CJK COMPATIBILITY IDEOGRAPH-2F92D → CJK UNIFIED IDEOGRAPH-3EB8     # 
+
+2F933 ;        3F1B ;  MA      # ( 㼛 → 㼛 ) CJK COMPATIBILITY IDEOGRAPH-2F933 → CJK UNIFIED IDEOGRAPH-3F1B     # 
+
+2F93E ;        3FFC ;  MA      # ( 㿼 → 㿼 ) CJK COMPATIBILITY IDEOGRAPH-2F93E → CJK UNIFIED IDEOGRAPH-3FFC     # 
+
+2F93F ;        4008 ;  MA      # ( 䀈 → 䀈 ) CJK COMPATIBILITY IDEOGRAPH-2F93F → CJK UNIFIED IDEOGRAPH-4008     # 
+
+FAD3 ; 4018 ;  MA      # ( 䀘 → 䀘 ) CJK COMPATIBILITY IDEOGRAPH-FAD3 → CJK UNIFIED IDEOGRAPH-4018       # 
+
+9FC3 ; 4039 ;  MA      # ( 鿃 → 䀹 ) CJK UNIFIED IDEOGRAPH-9FC3 → CJK UNIFIED IDEOGRAPH-4039     # →䀹→
+FAD4 ; 4039 ;  MA      # ( 䀹 → 䀹 ) CJK COMPATIBILITY IDEOGRAPH-FAD4 → CJK UNIFIED IDEOGRAPH-4039       # 
+2F949 ;        4039 ;  MA      # ( 䀹 → 䀹 ) CJK COMPATIBILITY IDEOGRAPH-2F949 → CJK UNIFIED IDEOGRAPH-4039     # 
+
+6663 ; 403F ;  MA      # ( 晣 → 䀿 ) CJK UNIFIED IDEOGRAPH-6663 → CJK UNIFIED IDEOGRAPH-403F     # 
+
+2F94B ;        4046 ;  MA      # ( 䁆 → 䁆 ) CJK COMPATIBILITY IDEOGRAPH-2F94B → CJK UNIFIED IDEOGRAPH-4046     # 
+
+2F94C ;        4096 ;  MA      # ( 䂖 → 䂖 ) CJK COMPATIBILITY IDEOGRAPH-2F94C → CJK UNIFIED IDEOGRAPH-4096     # 
+
+2F951 ;        40E3 ;  MA      # ( 䃣 → 䃣 ) CJK COMPATIBILITY IDEOGRAPH-2F951 → CJK UNIFIED IDEOGRAPH-40E3     # 
+
+2F958 ;        412F ;  MA      # ( 䄯 → 䄯 ) CJK COMPATIBILITY IDEOGRAPH-2F958 → CJK UNIFIED IDEOGRAPH-412F     # 
+
+2F960 ;        4202 ;  MA      # ( 䈂 → 䈂 ) CJK COMPATIBILITY IDEOGRAPH-2F960 → CJK UNIFIED IDEOGRAPH-4202     # 
+
+2F964 ;        4227 ;  MA      # ( 䈧 → 䈧 ) CJK COMPATIBILITY IDEOGRAPH-2F964 → CJK UNIFIED IDEOGRAPH-4227     # 
+
+2F967 ;        42A0 ;  MA      # ( 䊠 → 䊠 ) CJK COMPATIBILITY IDEOGRAPH-2F967 → CJK UNIFIED IDEOGRAPH-42A0     # 
+
+2F96D ;        4301 ;  MA      # ( 䌁 → 䌁 ) CJK COMPATIBILITY IDEOGRAPH-2F96D → CJK UNIFIED IDEOGRAPH-4301     # 
+
+2F971 ;        4334 ;  MA      # ( 䌴 → 䌴 ) CJK COMPATIBILITY IDEOGRAPH-2F971 → CJK UNIFIED IDEOGRAPH-4334     # 
+
+2F974 ;        4359 ;  MA      # ( 䍙 → 䍙 ) CJK COMPATIBILITY IDEOGRAPH-2F974 → CJK UNIFIED IDEOGRAPH-4359     # 
+
+2F981 ;        43D5 ;  MA      # ( 䏕 → 䏕 ) CJK COMPATIBILITY IDEOGRAPH-2F981 → CJK UNIFIED IDEOGRAPH-43D5     # 
+
+2F8D7 ;        43D9 ;  MA      # ( 䏙 → 䏙 ) CJK COMPATIBILITY IDEOGRAPH-2F8D7 → CJK UNIFIED IDEOGRAPH-43D9     # 
+
+2F984 ;        440B ;  MA      # ( 䐋 → 䐋 ) CJK COMPATIBILITY IDEOGRAPH-2F984 → CJK UNIFIED IDEOGRAPH-440B     # 
+
+6726 ; 4443 ;  MA      # ( 朦 → 䑃 ) CJK UNIFIED IDEOGRAPH-6726 → CJK UNIFIED IDEOGRAPH-4443     # 
+
+2F98E ;        446B ;  MA      # ( 䑫 → 䑫 ) CJK COMPATIBILITY IDEOGRAPH-2F98E → CJK UNIFIED IDEOGRAPH-446B     # 
+
+2F9A7 ;        452B ;  MA      # ( 䔫 → 䔫 ) CJK COMPATIBILITY IDEOGRAPH-2F9A7 → CJK UNIFIED IDEOGRAPH-452B     # 
+
+2F9AE ;        455D ;  MA      # ( 䕝 → 䕝 ) CJK COMPATIBILITY IDEOGRAPH-2F9AE → CJK UNIFIED IDEOGRAPH-455D     # 
+
+2F9AF ;        4561 ;  MA      # ( 䕡 → 䕡 ) CJK COMPATIBILITY IDEOGRAPH-2F9AF → CJK UNIFIED IDEOGRAPH-4561     # 
+
+2F9B2 ;        456B ;  MA      # ( 䕫 → 䕫 ) CJK COMPATIBILITY IDEOGRAPH-2F9B2 → CJK UNIFIED IDEOGRAPH-456B     # 
+
+2F9BF ;        45D7 ;  MA      # ( 䗗 → 䗗 ) CJK COMPATIBILITY IDEOGRAPH-2F9BF → CJK UNIFIED IDEOGRAPH-45D7     # 
+
+2F9C2 ;        45F9 ;  MA      # ( 䗹 → 䗹 ) CJK COMPATIBILITY IDEOGRAPH-2F9C2 → CJK UNIFIED IDEOGRAPH-45F9     # 
+
+2F9C8 ;        4635 ;  MA      # ( 䘵 → 䘵 ) CJK COMPATIBILITY IDEOGRAPH-2F9C8 → CJK UNIFIED IDEOGRAPH-4635     # 
+
+8A1E ; 46B6 ;  MA      # ( 訞 → 䚶 ) CJK UNIFIED IDEOGRAPH-8A1E → CJK UNIFIED IDEOGRAPH-46B6     # 
+
+2F9CD ;        46BE ;  MA      # ( 䚾 → 䚾 ) CJK COMPATIBILITY IDEOGRAPH-2F9CD → CJK UNIFIED IDEOGRAPH-46BE     # 
+
+2F9CE ;        46C7 ;  MA      # ( 䛇 → 䛇 ) CJK COMPATIBILITY IDEOGRAPH-2F9CE → CJK UNIFIED IDEOGRAPH-46C7     # 
+
+2F9EF ;        4995 ;  MA      # ( 䦕 → 䦕 ) CJK COMPATIBILITY IDEOGRAPH-2F9EF → CJK UNIFIED IDEOGRAPH-4995     # 
+
+2F9F2 ;        49E6 ;  MA      # ( 䧦 → 䧦 ) CJK COMPATIBILITY IDEOGRAPH-2F9F2 → CJK UNIFIED IDEOGRAPH-49E6     # 
+
+2F9F8 ;        4A6E ;  MA      # ( 䩮 → 䩮 ) CJK COMPATIBILITY IDEOGRAPH-2F9F8 → CJK UNIFIED IDEOGRAPH-4A6E     # 
+
+2F9F9 ;        4A76 ;  MA      # ( 䩶 → 䩶 ) CJK COMPATIBILITY IDEOGRAPH-2F9F9 → CJK UNIFIED IDEOGRAPH-4A76     # 
+
+2F9FC ;        4AB2 ;  MA      # ( 䪲 → 䪲 ) CJK COMPATIBILITY IDEOGRAPH-2F9FC → CJK UNIFIED IDEOGRAPH-4AB2     # 
+
+2FA03 ;        4B33 ;  MA      # ( 䬳 → 䬳 ) CJK COMPATIBILITY IDEOGRAPH-2FA03 → CJK UNIFIED IDEOGRAPH-4B33     # 
+
+2FA08 ;        4BCE ;  MA      # ( 䯎 → 䯎 ) CJK COMPATIBILITY IDEOGRAPH-2FA08 → CJK UNIFIED IDEOGRAPH-4BCE     # 
+
+2FA0D ;        4CCE ;  MA      # ( 䳎 → 䳎 ) CJK COMPATIBILITY IDEOGRAPH-2FA0D → CJK UNIFIED IDEOGRAPH-4CCE     # 
+
+2FA0E ;        4CED ;  MA      # ( 䳭 → 䳭 ) CJK COMPATIBILITY IDEOGRAPH-2FA0E → CJK UNIFIED IDEOGRAPH-4CED     # 
+
+2FA11 ;        4CF8 ;  MA      # ( 䳸 → 䳸 ) CJK COMPATIBILITY IDEOGRAPH-2FA11 → CJK UNIFIED IDEOGRAPH-4CF8     # 
+
+2FA16 ;        4D56 ;  MA      # ( 䵖 → 䵖 ) CJK COMPATIBILITY IDEOGRAPH-2FA16 → CJK UNIFIED IDEOGRAPH-4D56     # 
+
+2F803 ;        20122 ; MA      # ( 𠄢 → 𠄢 ) CJK COMPATIBILITY IDEOGRAPH-2F803 → CJK UNIFIED IDEOGRAPH-20122   # 
+
+2F812 ;        2051C ; MA      # ( 𠔜 → 𠔜 ) CJK COMPATIBILITY IDEOGRAPH-2F812 → CJK UNIFIED IDEOGRAPH-2051C   # 
+
+2F91B ;        20525 ; MA      # ( 𠔥 → 𠔥 ) CJK COMPATIBILITY IDEOGRAPH-2F91B → CJK UNIFIED IDEOGRAPH-20525   # 
+
+2F816 ;        2054B ; MA      # ( 𠕋 → 𠕋 ) CJK COMPATIBILITY IDEOGRAPH-2F816 → CJK UNIFIED IDEOGRAPH-2054B   # 
+
+2F80D ;        2063A ; MA      # ( 𠘺 → 𠘺 ) CJK COMPATIBILITY IDEOGRAPH-2F80D → CJK UNIFIED IDEOGRAPH-2063A   # 
+
+2F9D9 ;        20804 ; MA      # ( 𠠄 → 𠠄 ) CJK COMPATIBILITY IDEOGRAPH-2F9D9 → CJK UNIFIED IDEOGRAPH-20804   # 
+
+2F9DD ;        208DE ; MA      # ( 𠣞 → 𠣞 ) CJK COMPATIBILITY IDEOGRAPH-2F9DD → CJK UNIFIED IDEOGRAPH-208DE   # 
+
+2F834 ;        20A2C ; MA      # ( 𠨬 → 𠨬 ) CJK COMPATIBILITY IDEOGRAPH-2F834 → CJK UNIFIED IDEOGRAPH-20A2C   # 
+
+2F838 ;        20B63 ; MA      # ( 𠭣 → 𠭣 ) CJK COMPATIBILITY IDEOGRAPH-2F838 → CJK UNIFIED IDEOGRAPH-20B63   # 
+
+2F859 ;        214E4 ; MA      # ( 𡓤 → 𡓤 ) CJK COMPATIBILITY IDEOGRAPH-2F859 → CJK UNIFIED IDEOGRAPH-214E4   # 
+
+2F860 ;        216A8 ; MA      # ( 𡚨 → 𡚨 ) CJK COMPATIBILITY IDEOGRAPH-2F860 → CJK UNIFIED IDEOGRAPH-216A8   # 
+
+2F861 ;        216EA ; MA      # ( 𡛪 → 𡛪 ) CJK COMPATIBILITY IDEOGRAPH-2F861 → CJK UNIFIED IDEOGRAPH-216EA   # 
+
+2F86C ;        219C8 ; MA      # ( 𡧈 → 𡧈 ) CJK COMPATIBILITY IDEOGRAPH-2F86C → CJK UNIFIED IDEOGRAPH-219C8   # 
+
+2F871 ;        21B18 ; MA      # ( 𡬘 → 𡬘 ) CJK COMPATIBILITY IDEOGRAPH-2F871 → CJK UNIFIED IDEOGRAPH-21B18   # 
+
+2F8F8 ;        21D0B ; MA      # ( 𡴋 → 𡴋 ) CJK COMPATIBILITY IDEOGRAPH-2F8F8 → CJK UNIFIED IDEOGRAPH-21D0B   # 
+
+2F87B ;        21DE4 ; MA      # ( 𡷤 → 𡷤 ) CJK COMPATIBILITY IDEOGRAPH-2F87B → CJK UNIFIED IDEOGRAPH-21DE4   # 
+
+2F87D ;        21DE6 ; MA      # ( 𡷦 → 𡷦 ) CJK COMPATIBILITY IDEOGRAPH-2F87D → CJK UNIFIED IDEOGRAPH-21DE6   # 
+
+2F889 ;        22183 ; MA      # ( 𢆃 → 𢆃 ) CJK COMPATIBILITY IDEOGRAPH-2F889 → CJK UNIFIED IDEOGRAPH-22183   # 
+
+2F939 ;        2219F ; MA      # ( 𢆟 → 𢆟 ) CJK COMPATIBILITY IDEOGRAPH-2F939 → CJK UNIFIED IDEOGRAPH-2219F   # 
+
+2F891 ;        22331 ; MA      # ( 𢌱 → 𢌱 ) CJK COMPATIBILITY IDEOGRAPH-2F891 → CJK UNIFIED IDEOGRAPH-22331   # 
+2F892 ;        22331 ; MA      # ( 𢌱 → 𢌱 ) CJK COMPATIBILITY IDEOGRAPH-2F892 → CJK UNIFIED IDEOGRAPH-22331   # 
+
+2F8A4 ;        226D4 ; MA      # ( 𢛔 → 𢛔 ) CJK COMPATIBILITY IDEOGRAPH-2F8A4 → CJK UNIFIED IDEOGRAPH-226D4   # 
+
+FAD0 ; 22844 ; MA      # ( 𢡄 → 𢡄 ) CJK COMPATIBILITY IDEOGRAPH-FAD0 → CJK UNIFIED IDEOGRAPH-22844     # 
+
+FACF ; 2284A ; MA      # ( 𢡊 → 𢡊 ) CJK COMPATIBILITY IDEOGRAPH-FACF → CJK UNIFIED IDEOGRAPH-2284A     # 
+
+2F8B8 ;        22B0C ; MA      # ( 𢬌 → 𢬌 ) CJK COMPATIBILITY IDEOGRAPH-2F8B8 → CJK UNIFIED IDEOGRAPH-22B0C   # 
+
+2F8BE ;        22BF1 ; MA      # ( 𢯱 → 𢯱 ) CJK COMPATIBILITY IDEOGRAPH-2F8BE → CJK UNIFIED IDEOGRAPH-22BF1   # 
+
+2F8CA ;        2300A ; MA      # ( 𣀊 → 𣀊 ) CJK COMPATIBILITY IDEOGRAPH-2F8CA → CJK UNIFIED IDEOGRAPH-2300A   # 
+
+2F897 ;        232B8 ; MA      # ( 𣊸 → 𣊸 ) CJK COMPATIBILITY IDEOGRAPH-2F897 → CJK UNIFIED IDEOGRAPH-232B8   # 
+
+2F980 ;        2335F ; MA      # ( 𣍟 → 𣍟 ) CJK COMPATIBILITY IDEOGRAPH-2F980 → CJK UNIFIED IDEOGRAPH-2335F   # 
+
+2F989 ;        23393 ; MA      # ( 𣎓 → 𣎓 ) CJK COMPATIBILITY IDEOGRAPH-2F989 → CJK UNIFIED IDEOGRAPH-23393   # 
+
+2F98A ;        2339C ; MA      # ( 𣎜 → 𣎜 ) CJK COMPATIBILITY IDEOGRAPH-2F98A → CJK UNIFIED IDEOGRAPH-2339C   # 
+
+2F8DD ;        233C3 ; MA      # ( 𣏃 → 𣏃 ) CJK COMPATIBILITY IDEOGRAPH-2F8DD → CJK UNIFIED IDEOGRAPH-233C3   # 
+
+FAD1 ; 233D5 ; MA      # ( 𣏕 → 𣏕 ) CJK COMPATIBILITY IDEOGRAPH-FAD1 → CJK UNIFIED IDEOGRAPH-233D5     # 
+
+2F8E3 ;        2346D ; MA      # ( 𣑭 → 𣑭 ) CJK COMPATIBILITY IDEOGRAPH-2F8E3 → CJK UNIFIED IDEOGRAPH-2346D   # 
+
+2F8EC ;        236A3 ; MA      # ( 𣚣 → 𣚣 ) CJK COMPATIBILITY IDEOGRAPH-2F8EC → CJK UNIFIED IDEOGRAPH-236A3   # 
+
+2F8F0 ;        238A7 ; MA      # ( 𣢧 → 𣢧 ) CJK COMPATIBILITY IDEOGRAPH-2F8F0 → CJK UNIFIED IDEOGRAPH-238A7   # 
+
+2F8F7 ;        23A8D ; MA      # ( 𣪍 → 𣪍 ) CJK COMPATIBILITY IDEOGRAPH-2F8F7 → CJK UNIFIED IDEOGRAPH-23A8D   # 
+
+2F8F9 ;        23AFA ; MA      # ( 𣫺 → 𣫺 ) CJK COMPATIBILITY IDEOGRAPH-2F8F9 → CJK UNIFIED IDEOGRAPH-23AFA   # 
+
+2F8FB ;        23CBC ; MA      # ( 𣲼 → 𣲼 ) CJK COMPATIBILITY IDEOGRAPH-2F8FB → CJK UNIFIED IDEOGRAPH-23CBC   # 
+
+2F906 ;        23D1E ; MA      # ( 𣴞 → 𣴞 ) CJK COMPATIBILITY IDEOGRAPH-2F906 → CJK UNIFIED IDEOGRAPH-23D1E   # 
+
+2F90D ;        23ED1 ; MA      # ( 𣻑 → 𣻑 ) CJK COMPATIBILITY IDEOGRAPH-2F90D → CJK UNIFIED IDEOGRAPH-23ED1   # 
+
+2F910 ;        23F5E ; MA      # ( 𣽞 → 𣽞 ) CJK COMPATIBILITY IDEOGRAPH-2F910 → CJK UNIFIED IDEOGRAPH-23F5E   # 
+
+2F911 ;        23F8E ; MA      # ( 𣾎 → 𣾎 ) CJK COMPATIBILITY IDEOGRAPH-2F911 → CJK UNIFIED IDEOGRAPH-23F8E   # 
+
+2F91D ;        24263 ; MA      # ( 𤉣 → 𤉣 ) CJK COMPATIBILITY IDEOGRAPH-2F91D → CJK UNIFIED IDEOGRAPH-24263   # 
+
+FA6C ; 242EE ; MA      # ( 𤋮 → 𤋮 ) CJK COMPATIBILITY IDEOGRAPH-FA6C → CJK UNIFIED IDEOGRAPH-242EE     # 
+
+2F91F ;        243AB ; MA      # ( 𤎫 → 𤎫 ) CJK COMPATIBILITY IDEOGRAPH-2F91F → CJK UNIFIED IDEOGRAPH-243AB   # 
+
+2F923 ;        24608 ; MA      # ( 𤘈 → 𤘈 ) CJK COMPATIBILITY IDEOGRAPH-2F923 → CJK UNIFIED IDEOGRAPH-24608   # 
+
+2F926 ;        24735 ; MA      # ( 𤜵 → 𤜵 ) CJK COMPATIBILITY IDEOGRAPH-2F926 → CJK UNIFIED IDEOGRAPH-24735   # 
+
+2F927 ;        24814 ; MA      # ( 𤠔 → 𤠔 ) CJK COMPATIBILITY IDEOGRAPH-2F927 → CJK UNIFIED IDEOGRAPH-24814   # 
+
+2F935 ;        24C36 ; MA      # ( 𤰶 → 𤰶 ) CJK COMPATIBILITY IDEOGRAPH-2F935 → CJK UNIFIED IDEOGRAPH-24C36   # 
+
+2F937 ;        24C92 ; MA      # ( 𤲒 → 𤲒 ) CJK COMPATIBILITY IDEOGRAPH-2F937 → CJK UNIFIED IDEOGRAPH-24C92   # 
+
+2F93B ;        24FA1 ; MA      # ( 𤾡 → 𤾡 ) CJK COMPATIBILITY IDEOGRAPH-2F93B → CJK UNIFIED IDEOGRAPH-24FA1   # 
+
+2F93C ;        24FB8 ; MA      # ( 𤾸 → 𤾸 ) CJK COMPATIBILITY IDEOGRAPH-2F93C → CJK UNIFIED IDEOGRAPH-24FB8   # 
+
+2F93D ;        25044 ; MA      # ( 𥁄 → 𥁄 ) CJK COMPATIBILITY IDEOGRAPH-2F93D → CJK UNIFIED IDEOGRAPH-25044   # 
+
+2F942 ;        250F2 ; MA      # ( 𥃲 → 𥃲 ) CJK COMPATIBILITY IDEOGRAPH-2F942 → CJK UNIFIED IDEOGRAPH-250F2   # 
+
+2F941 ;        250F3 ; MA      # ( 𥃳 → 𥃳 ) CJK COMPATIBILITY IDEOGRAPH-2F941 → CJK UNIFIED IDEOGRAPH-250F3   # 
+
+2F943 ;        25119 ; MA      # ( 𥄙 → 𥄙 ) CJK COMPATIBILITY IDEOGRAPH-2F943 → CJK UNIFIED IDEOGRAPH-25119   # 
+
+2F944 ;        25133 ; MA      # ( 𥄳 → 𥄳 ) CJK COMPATIBILITY IDEOGRAPH-2F944 → CJK UNIFIED IDEOGRAPH-25133   # 
+
+FAD5 ; 25249 ; MA      # ( 𥉉 → 𥉉 ) CJK COMPATIBILITY IDEOGRAPH-FAD5 → CJK UNIFIED IDEOGRAPH-25249     # 
+
+2F94D ;        2541D ; MA      # ( 𥐝 → 𥐝 ) CJK COMPATIBILITY IDEOGRAPH-2F94D → CJK UNIFIED IDEOGRAPH-2541D   # 
+
+2F952 ;        25626 ; MA      # ( 𥘦 → 𥘦 ) CJK COMPATIBILITY IDEOGRAPH-2F952 → CJK UNIFIED IDEOGRAPH-25626   # 
+
+2F954 ;        2569A ; MA      # ( 𥚚 → 𥚚 ) CJK COMPATIBILITY IDEOGRAPH-2F954 → CJK UNIFIED IDEOGRAPH-2569A   # 
+
+2F955 ;        256C5 ; MA      # ( 𥛅 → 𥛅 ) CJK COMPATIBILITY IDEOGRAPH-2F955 → CJK UNIFIED IDEOGRAPH-256C5   # 
+
+2F95C ;        2597C ; MA      # ( 𥥼 → 𥥼 ) CJK COMPATIBILITY IDEOGRAPH-2F95C → CJK UNIFIED IDEOGRAPH-2597C   # 
+
+2F95D ;        25AA7 ; MA      # ( 𥪧 → 𥪧 ) CJK COMPATIBILITY IDEOGRAPH-2F95D → CJK UNIFIED IDEOGRAPH-25AA7   # 
+2F95E ;        25AA7 ; MA      # ( 𥪧 → 𥪧 ) CJK COMPATIBILITY IDEOGRAPH-2F95E → CJK UNIFIED IDEOGRAPH-25AA7   # 
+
+2F961 ;        25BAB ; MA      # ( 𥮫 → 𥮫 ) CJK COMPATIBILITY IDEOGRAPH-2F961 → CJK UNIFIED IDEOGRAPH-25BAB   # 
+
+2F965 ;        25C80 ; MA      # ( 𥲀 → 𥲀 ) CJK COMPATIBILITY IDEOGRAPH-2F965 → CJK UNIFIED IDEOGRAPH-25C80   # 
+
+FAD6 ; 25CD0 ; MA      # ( 𥳐 → 𥳐 ) CJK COMPATIBILITY IDEOGRAPH-FAD6 → CJK UNIFIED IDEOGRAPH-25CD0     # 
+
+2F96B ;        25F86 ; MA      # ( 𥾆 → 𥾆 ) CJK COMPATIBILITY IDEOGRAPH-2F96B → CJK UNIFIED IDEOGRAPH-25F86   # 
+
+2F898 ;        261DA ; MA      # ( 𦇚 → 𦇚 ) CJK COMPATIBILITY IDEOGRAPH-2F898 → CJK UNIFIED IDEOGRAPH-261DA   # 
+
+2F972 ;        26228 ; MA      # ( 𦈨 → 𦈨 ) CJK COMPATIBILITY IDEOGRAPH-2F972 → CJK UNIFIED IDEOGRAPH-26228   # 
+
+2F973 ;        26247 ; MA      # ( 𦉇 → 𦉇 ) CJK COMPATIBILITY IDEOGRAPH-2F973 → CJK UNIFIED IDEOGRAPH-26247   # 
+
+2F975 ;        262D9 ; MA      # ( 𦋙 → 𦋙 ) CJK COMPATIBILITY IDEOGRAPH-2F975 → CJK UNIFIED IDEOGRAPH-262D9   # 
+
+2F977 ;        2633E ; MA      # ( 𦌾 → 𦌾 ) CJK COMPATIBILITY IDEOGRAPH-2F977 → CJK UNIFIED IDEOGRAPH-2633E   # 
+
+2F97B ;        264DA ; MA      # ( 𦓚 → 𦓚 ) CJK COMPATIBILITY IDEOGRAPH-2F97B → CJK UNIFIED IDEOGRAPH-264DA   # 
+
+2F97C ;        26523 ; MA      # ( 𦔣 → 𦔣 ) CJK COMPATIBILITY IDEOGRAPH-2F97C → CJK UNIFIED IDEOGRAPH-26523   # 
+
+2F97E ;        265A8 ; MA      # ( 𦖨 → 𦖨 ) CJK COMPATIBILITY IDEOGRAPH-2F97E → CJK UNIFIED IDEOGRAPH-265A8   # 
+
+2F987 ;        267A7 ; MA      # ( 𦞧 → 𦞧 ) CJK COMPATIBILITY IDEOGRAPH-2F987 → CJK UNIFIED IDEOGRAPH-267A7   # 
+
+2F988 ;        267B5 ; MA      # ( 𦞵 → 𦞵 ) CJK COMPATIBILITY IDEOGRAPH-2F988 → CJK UNIFIED IDEOGRAPH-267B5   # 
+
+2F997 ;        26B3C ; MA      # ( 𦬼 → 𦬼 ) CJK COMPATIBILITY IDEOGRAPH-2F997 → CJK UNIFIED IDEOGRAPH-26B3C   # 
+
+2F9A4 ;        26C36 ; MA      # ( 𦰶 → 𦰶 ) CJK COMPATIBILITY IDEOGRAPH-2F9A4 → CJK UNIFIED IDEOGRAPH-26C36   # 
+
+2F9A6 ;        26CD5 ; MA      # ( 𦳕 → 𦳕 ) CJK COMPATIBILITY IDEOGRAPH-2F9A6 → CJK UNIFIED IDEOGRAPH-26CD5   # 
+
+2F9A5 ;        26D6B ; MA      # ( 𦵫 → 𦵫 ) CJK COMPATIBILITY IDEOGRAPH-2F9A5 → CJK UNIFIED IDEOGRAPH-26D6B   # 
+
+2F9AD ;        26F2C ; MA      # ( 𦼬 → 𦼬 ) CJK COMPATIBILITY IDEOGRAPH-2F9AD → CJK UNIFIED IDEOGRAPH-26F2C   # 
+
+2F9B0 ;        26FB1 ; MA      # ( 𦾱 → 𦾱 ) CJK COMPATIBILITY IDEOGRAPH-2F9B0 → CJK UNIFIED IDEOGRAPH-26FB1   # 
+
+2F9B1 ;        270D2 ; MA      # ( 𧃒 → 𧃒 ) CJK COMPATIBILITY IDEOGRAPH-2F9B1 → CJK UNIFIED IDEOGRAPH-270D2   # 
+
+2F9AB ;        273CA ; MA      # ( 𧏊 → 𧏊 ) CJK COMPATIBILITY IDEOGRAPH-2F9AB → CJK UNIFIED IDEOGRAPH-273CA   # 
+
+2F9C5 ;        27667 ; MA      # ( 𧙧 → 𧙧 ) CJK COMPATIBILITY IDEOGRAPH-2F9C5 → CJK UNIFIED IDEOGRAPH-27667   # 
+
+2F9CB ;        278AE ; MA      # ( 𧢮 → 𧢮 ) CJK COMPATIBILITY IDEOGRAPH-2F9CB → CJK UNIFIED IDEOGRAPH-278AE   # 
+
+2F9CC ;        27966 ; MA      # ( 𧥦 → 𧥦 ) CJK COMPATIBILITY IDEOGRAPH-2F9CC → CJK UNIFIED IDEOGRAPH-27966   # 
+
+2F9D3 ;        27CA8 ; MA      # ( 𧲨 → 𧲨 ) CJK COMPATIBILITY IDEOGRAPH-2F9D3 → CJK UNIFIED IDEOGRAPH-27CA8   # 
+
+FAD7 ; 27ED3 ; MA      # ( 𧻓 → 𧻓 ) CJK COMPATIBILITY IDEOGRAPH-FAD7 → CJK UNIFIED IDEOGRAPH-27ED3     # 
+
+2F9D8 ;        27F2F ; MA      # ( 𧼯 → 𧼯 ) CJK COMPATIBILITY IDEOGRAPH-2F9D8 → CJK UNIFIED IDEOGRAPH-27F2F   # 
+
+2F9E0 ;        285D2 ; MA      # ( 𨗒 → 𨗒 ) CJK COMPATIBILITY IDEOGRAPH-2F9E0 → CJK UNIFIED IDEOGRAPH-285D2   # 
+
+2F9E1 ;        285ED ; MA      # ( 𨗭 → 𨗭 ) CJK COMPATIBILITY IDEOGRAPH-2F9E1 → CJK UNIFIED IDEOGRAPH-285ED   # 
+
+2F9E5 ;        2872E ; MA      # ( 𨜮 → 𨜮 ) CJK COMPATIBILITY IDEOGRAPH-2F9E5 → CJK UNIFIED IDEOGRAPH-2872E   # 
+
+2F9ED ;        28BFA ; MA      # ( 𨯺 → 𨯺 ) CJK COMPATIBILITY IDEOGRAPH-2F9ED → CJK UNIFIED IDEOGRAPH-28BFA   # 
+
+2F9F1 ;        28D77 ; MA      # ( 𨵷 → 𨵷 ) CJK COMPATIBILITY IDEOGRAPH-2F9F1 → CJK UNIFIED IDEOGRAPH-28D77   # 
+
+2F9F6 ;        29145 ; MA      # ( 𩅅 → 𩅅 ) CJK COMPATIBILITY IDEOGRAPH-2F9F6 → CJK UNIFIED IDEOGRAPH-29145   # 
+
+2F81C ;        291DF ; MA      # ( 𩇟 → 𩇟 ) CJK COMPATIBILITY IDEOGRAPH-2F81C → CJK UNIFIED IDEOGRAPH-291DF   # 
+
+2F9F7 ;        2921A ; MA      # ( 𩈚 → 𩈚 ) CJK COMPATIBILITY IDEOGRAPH-2F9F7 → CJK UNIFIED IDEOGRAPH-2921A   # 
+
+2F9FB ;        2940A ; MA      # ( 𩐊 → 𩐊 ) CJK COMPATIBILITY IDEOGRAPH-2F9FB → CJK UNIFIED IDEOGRAPH-2940A   # 
+
+2F9FD ;        29496 ; MA      # ( 𩒖 → 𩒖 ) CJK COMPATIBILITY IDEOGRAPH-2F9FD → CJK UNIFIED IDEOGRAPH-29496   # 
+
+2FA01 ;        295B6 ; MA      # ( 𩖶 → 𩖶 ) CJK COMPATIBILITY IDEOGRAPH-2FA01 → CJK UNIFIED IDEOGRAPH-295B6   # 
+
+2FA09 ;        29B30 ; MA      # ( 𩬰 → 𩬰 ) CJK COMPATIBILITY IDEOGRAPH-2FA09 → CJK UNIFIED IDEOGRAPH-29B30   # 
+
+2FA10 ;        2A0CE ; MA      # ( 𪃎 → 𪃎 ) CJK COMPATIBILITY IDEOGRAPH-2FA10 → CJK UNIFIED IDEOGRAPH-2A0CE   # 
+
+2FA12 ;        2A105 ; MA      # ( 𪄅 → 𪄅 ) CJK COMPATIBILITY IDEOGRAPH-2FA12 → CJK UNIFIED IDEOGRAPH-2A105   # 
+
+2FA13 ;        2A20E ; MA      # ( 𪈎 → 𪈎 ) CJK COMPATIBILITY IDEOGRAPH-2FA13 → CJK UNIFIED IDEOGRAPH-2A20E   # 
+
+2FA14 ;        2A291 ; MA      # ( 𪊑 → 𪊑 ) CJK COMPATIBILITY IDEOGRAPH-2FA14 → CJK UNIFIED IDEOGRAPH-2A291   # 
+
+2F88F ;        2A392 ; MA      # ( 𪎒 → 𪎒 ) CJK COMPATIBILITY IDEOGRAPH-2F88F → CJK UNIFIED IDEOGRAPH-2A392   # 
+
+2FA1D ;        2A600 ; MA      # ( 𪘀 → 𪘀 ) CJK COMPATIBILITY IDEOGRAPH-2FA1D → CJK UNIFIED IDEOGRAPH-2A600   # 
+
+# total for (MA): 5313
+
diff --git a/packages/uni-confusables/gen-confusables.el b/packages/uni-confusables/gen-confusables.el
new file mode 100644 (file)
index 0000000..b3c2f02
--- /dev/null
@@ -0,0 +1,110 @@
+;;; gen-confusables.el --- generate uni-confusables.el from confusables.txt
+
+;; Copyright (C) 2011, 2012  Free Software Foundation, Inc.
+
+;; Author: Teodor Zlatanov <tzz@lifelogs.com>
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'cl)
+
+(defvar gen-confusables-char-table-single)
+(defvar gen-confusables-char-table-multiple)
+
+(defun gen-confusables-read (file)
+  (interactive "fConfusables filename: \n")
+  (flet ((reader (h) (string-to-number h 16)))
+    (let ((stable (make-char-table 'confusables-single-script))
+          (mtable (make-char-table 'confusables-multiple-script))
+          (count 0)
+          (confusable-line-regexp (concat "^\\([[:xdigit:]]+\\)" ; \x+
+                                          " ;\t"
+                                          ;; \x+ separated by spaces
+                                          "\\([[:space:][:xdigit:]]+\\)"
+                                          " ;\t"
+                                          "\\([SM]\\)[LA]"))) ; SL, SA, ML, MA
+      (setq gen-confusables-char-table-single stable)
+      (setq gen-confusables-char-table-multiple mtable)
+      (with-temp-buffer
+        (insert-file-contents file)
+        (goto-char (point-min))
+        (while (re-search-forward confusable-line-regexp nil t)
+          (incf count)
+          (when (and (called-interactively-p)
+                     (zerop (mod count 100)))
+            (message "processed %d lines" count))
+          (let* ((from (match-string 1))
+                 (to (match-string 2))
+                 (class (match-string 3))
+                 (table (if (string-equal "S" class) stable mtable)))
+            (set-char-table-range
+             table
+             (reader from)
+             (concat (mapcar 'reader (split-string to))))))))))
+
+(defun gen-confusables-write (file)
+  (interactive "FDumped filename: \n")
+  (let ((coding-system-for-write 'utf-8-emacs))
+    (with-temp-file file
+      (insert ";; Copyright (C) 1991-2009, 2010 Unicode, Inc.
+;; This file was generated from the Unicode confusables list at
+;; http://www.unicode.org/Public/security/revision-04/confusables.txt.
+;; See lisp/international/README in the Emacs trunk
+;; for the copyright and permission notice.\n\n")
+      (dolist (type '(single multiple))
+        (let* ((tablesym (intern (format "uni-confusables-char-table-%s" type)))
+               (oursym (intern (format "gen-confusables-char-table-%s" type)))
+               (ourtable (symbol-value oursym))
+               (ourtablename (symbol-name oursym))
+               (tablename (symbol-name tablesym))
+               (prop (format "confusables-%s-script" type))
+               props)
+          (insert (format "(defvar %s (make-char-table '%s))\n\n"
+                          tablename prop))
+          (map-char-table
+           (lambda (k v) (setq props (cons k (cons v props))))
+           ourtable)
+
+          (insert (format "(let ((k nil) (v nil) (ranges '%S))\n" props))
+          (insert (format "
+  (while ranges
+     (setq k (pop ranges)
+           v (pop ranges))
+     (set-char-table-range %s k v)))\n\n" tablename))
+
+          (insert (format "(ert-deftest uni-confusables-test-%s ()\n" type))
+
+          (dolist (offset '(100 200 800 3000 3500))
+            (insert (format "
+  (should (string-equal
+           (char-table-range %s %d)
+           %S))\n"
+                            tablename
+                            (nth (* 2 offset) props)
+                            (nth (1+ (* 2 offset)) props))))
+          (insert ")\n\n")))
+      (insert "
+;; Local Variables:
+;; coding: utf-8
+;; no-byte-compile: t
+;; End:
+
+;; uni-confusables.el ends here"))))
+
+(provide 'gen-confusables)
+;;; gen-confusables.el ends here
diff --git a/packages/uni-confusables/uni-confusables-pkg.el b/packages/uni-confusables/uni-confusables-pkg.el
new file mode 100644 (file)
index 0000000..53a0295
--- /dev/null
@@ -0,0 +1 @@
+(define-package "uni-confusables" "0.1" "Unicode confusables table")
diff --git a/packages/uni-confusables/uni-confusables.el b/packages/uni-confusables/uni-confusables.el
new file mode 100644 (file)
index 0000000..b324f46
--- /dev/null
@@ -0,0 +1,77 @@
+;; Copyright (C) 1991-2009, 2010 Unicode, Inc.
+;; This file was generated from the Unicode confusables list at
+;; http://www.unicode.org/Public/security/revision-04/confusables.txt.
+;; See lisp/international/README in the Emacs trunk
+;; for the copyright and permission notice.
+
+(defvar uni-confusables-char-table-single (make-char-table 'confusables-single-script))
+
+(let ((k nil) (v nil) (ranges '(195101 "𪘀" 195100 "鼻" 195099 "鼖" 195098 "鼏" 195097 "鼅" 195096 "黾" 195095 "黹" 195094 "䵖" 195093 "麻" 195092 "𪊑" 195091 "𪈎" 195090 "𪄅" 195089 "䳸" 195088 "𪃎" 195087 "鵧" 195086 "䳭" 195085 "䳎" 195084 "鳽" 195083 "鱀" 195082 "鬒" 195081 "𩬰" 195080 "䯎" 195079 "駾" 195078 "駂" 195077 "馧" 195076 "餩" 195075 "䬳" 195074 "飢" 195073 "𩖶" 195072 "頩" 195071 "頋" 195070 "頋" 195069 "𩒖" 195068 "䪲" 195067 "𩐊" 195066 "韠" 195065 "䩶" 195064 "䩮" 195063 "𩈚" 195062 "𩅅" 195061 "霣" 195060 "嶲" 195059 "雃" 195058 "䧦" 195057 "𨵷" 195056 "閷" 195055 "䦕" 195054 "開" 195053 "𨯺" 195052 "鐕" 195051 "鏹" 195050 "鉼" 195049 "鋘" 195048 "鋗" 195047 "鈸" 195046 "鄛" 195045 "𨜮" 195044 "鄑" 195043 "郱" 195042 "邔" 195041 "𨗭" 195040 "𨗒" 195039 "輸" 195038 "軔" 195037 "𠣞" 195036 "跰" 195035 "趼" 195034 "跋" 195033 "𠠄" 195032 "𧼯" 195031 "起" 195030 "贛" 195029 "賁" 195028 "貫" 195027 "𧲨" 195026 "豕" 195025 "變" 195024 "諭" 195023 "誠" 195022 "䛇" 195021 "䚾" 195020 "𧥦" 195019 "𧢮" 195018 "㒻" 195017 "裺" 195016 "䘵" 195015 "裞" 195014 "裗" 195013 "𧙧" 195012 "衣" 195011 "衠" 195010 "䗹" 195009 "蠁" 195008 "蟡" 195007 "䗗" 195006 "螆" 195005 "蝫" 195004 "蜨" 195003 "蝹" 195002 "蛢" 195001 "蜎" 195000 "蚈" 194999 "蚩" 194998 "虩" 194997 "虧" 194996 "虜" 194995 "虐" 194994 "䕫" 194993 "𧃒" 194992 "𦾱" 194991 "䕡" 194990 "䕝" 194989 "𦼬" 194988 "蕤" 194987 "𧏊" 194986 "蔖" 194985 "蓳" 194984 "蓱" 194983 "䔫" 194982 "𦳕" 194981 "𦵫" 194980 "𦰶" 194979 "菜" 194978 "菌" 194977 "菊" 194976 "荓" 194975 "著" 194974 "菧" 194973 "莽" 194972 "茣" 194971 "莭" 194970 "荣" 194969 "茝" 194968 "若" 194967 "𦬼" 194966 "苦" 194965 "芽" 194964 "芳" 194963 "花" 194962 "劳" 194961 "芝" 194960 "芋" 194959 "芑" 194958 "䑫" 194957 "辞" 194956 "舄" 194955 "舁" 194954 "𣎜" 194953 "𣎓" 194952 "𦞵" 194951 "𦞧" 194950 "媵" 194949 "脾" 194948 "䐋" 194947 "脃" 194946 "育" 194945 "䏕" 194944 "𣍟" 194943 "聰" 194942 "𦖨" 194941 "聠" 194940 "𦔣" 194939 "𦓚" 194938 "者" 194937 "翺" 194936 "羕" 194935 "𦌾" 194934 "罺" 194933 "𦋙" 194932 "䍙" 194931 "𦉇" 194930 "𦈨" 194929 "䌴" 194928 "繅" 194927 "縂" 194926 "緇" 194925 "䌁" 194924 "絣" 194923 "𥾆" 194922 "紀" 194921 "糣" 194920 "糨" 194919 "䊠" 194918 "糒" 194917 "𥲀" 194916 "䈧" 194915 "築" 194914 "篆" 194913 "𥮫" 194912 "䈂" 194911 "竮" 194910 "𥪧" 194909 "𥪧" 194908 "𥥼" 194907 "穏" 194906 "穊" 194905 "穀" 194904 "䄯" 194903 "秫" 194902 "福" 194901 "𥛅" 194900 "𥚚" 194899 "祖" 194898 "𥘦" 194897 "䃣" 194896 "磌" 194895 "碌" 194894 "硎" 194893 "𥐝" 194892 "䂖" 194891 "䁆" 194890 "瞋" 194889 "䀹" 194888 "睊" 194887 "真" 194886 "真" 194885 "眞" 194884 "𥄳" 194883 "𥄙" 194882 "𥃲" 194881 "𥃳" 194880 "直" 194879 "䀈" 194878 "㿼" 194877 "𥁄" 194876 "𤾸" 194875 "𤾡" 194874 "瘐" 194873 "𢆟" 194872 "異" 194871 "𤲒" 194870 "甾" 194869 "𤰶" 194868 "甤" 194867 "㼛" 194866 "瓊" 194865 "璅" 194864 "瑱" 194863 "瑜" 194862 "瑇" 194861 "㺸" 194860 "㺸" 194859 "玥" 194858 "㺬" 194857 "王" 194856 "獺" 194855 "𤠔" 194854 "𤜵" 194853 "犕" 194852 "犀" 194851 "𤘈" 194850 "牐" 194849 "爵" 194848 "爨" 194847 "𤎫" 194846 "熜" 194845 "𤉣" 194844 "煅" 194843 "𠔥" 194842 "炭" 194841 "灷" 194840 "災" 194839 "灊" 194838 "㶖" 194837 "瀛" 194836 "瀞" 194835 "瀹" 194834 "濆" 194833 "𣾎" 194832 "𣽞" 194831 "潮" 194830 "淹" 194829 "𣻑" 194828 "滇" 194827 "滋" 194826 "㴳" 194825 "湮" 194824 "港" 194823 "洴" 194822 "𣴞" 194821 "涅" 194820 "浸" 194819 "浩" 194818 "流" 194817 "海" 194816 "派" 194815 "洖" 194814 "汧" 194813 "泍" 194812 "沿" 194811 "𣲼" 194810 "汎" 194809 "𣫺" 194808 "𡴋" 194807 "𣪍" 194806 "殻" 194805 "殺" 194804 "殟" 194803 "歲" 194802 "㱎" 194801 "歔" 194800 "𣢧" 194799 "次" 194798 "㰘" 194797 "櫛" 194796 "𣚣" 194795 "檨" 194794 "槪" 194793 "榣" 194792 "楂" 194791 "㮝" 194790 "椔" 194789 "栟" 194788 "梎" 194787 "𣑭" 194786 "梅" 194785 "桒" 194784 "枅" 194783 "柺" 194782 "㭉" 194781 "𣏃" 194780 "杓" 194779 "杞" 194778 "朡" 194777 "望" 194776 "朗" 194775 "䏙" 194774 "肭" 194773 "暜" 194772 "最" 194771 "冕" 194770 "冒" 194769 "㫤" 194768 "㬈" 194767 "暑" 194766 "㬙" 194765 "晉" 194764 "書" 194763 "旣" 194762 "𣀊" 194761 "敬" 194760 "敏" 194759 "㩬" 194758 "摷" 194757 "撝" 194756 "摾" 194755 "摩" 194754 "㨮" 194753 "掩" 194752 "揅" 194751 "搢" 194750 "𢯱" 194749 "揤" 194748 "掃" 194747 "捨" 194746 "拼" 194745 "挽" 194744 "𢬌" 194743 "捐" 194742 "拔" 194741 "抱" 194740 "扝" 194739 "戛" 194738 "成" 194737 "懶" 194736 "懲" 194735 "懞" 194734 "憯" 194733 "憤" 194732 "憲" 194731 "憎" 194730 "慺" 194729 "慌" 194728 "慎" 194727 "慌" 194726 "慈" 194725 "惇" 194724 "𢛔" 194723 "悔" 194722 "㤜" 194721 "㤺" 194720 "悁" 194719 "忹" 194718 "志" 194717 "忍" 194716 "徚" 194715 "㣣" 194714 "彫" 194713 "形" 194712 "𦇚" 194711 "𣊸" 194710 "㣇" 194709 "弢" 194708 "弢" 194707 "舁" 194706 "𢌱" 194705 "𢌱" 194704 "廾" 194703 "𪎒" 194702 "廊" 194701 "庶" 194700 "庳" 194699 "庰" 194698 "㡼" 194697 "𢆃" 194696 "㡢" 194695 "幩" 194694 "帽" 194693 "帨" 194692 "巽" 194691 "㠯" 194690 "巢" 194689 "巡" 194688 "嵼" 194687 "嵫" 194686 "嵮" 194685 "𡷦" 194684 "嵃" 194683 "𡷤" 194682 "岍" 194681 "峀" 194680 "屮" 194679 "屠" 194678 "㞁" 194677 "尢" 194676 "当" 194675 "将" 194674 "寿" 194673 "𡬘" 194672 "寳" 194671 "寧" 194670 "寘" 194669 "寃" 194668 "𡧈" 194667 "嬾" 194666 "嬾" 194665 "嬈" 194664 "㛼" 194663 "㛮" 194662 "婦" 194661 "姘" 194660 "娧" 194659 "娛" 194658 "姬" 194657 "𡛪" 194656 "𡚨" 194655 "奢" 194654 "夢" 194653 "多" 194652 "夆" 194651 "壷" 194650 "売" 194649 "𡓤" 194648 "墬" 194647 "報" 194646 "堲" 194645 "型" 194644 "堍" 194643 "埴" 194642 "城" 194641 "壮" 194640 "切" 194639 "噴" 194638 "噑" 194637 "圗" 194636 "嘆" 194635 "圖" 194634 "嗂" 194633 "喳" 194632 "喫" 194631 "喙" 194630 "善" 194629 "善" 194628 "啣" 194627 "啓" 194626 "唐" 194625 "哶" 194624 "咢" 194623 "周" 194622 "呈" 194621 "吸" 194620 "咞" 194619 "吆" 194618 "叱" 194617 "叫" 194616 "𠭣" 194615 "叟" 194614 "及" 194613 "灰" 194612 "𠨬" 194611 "卿" 194610 "卿" 194609 "卿" 194608 "卽" 194607 "即" 194606 "博" 194605 "卑" 194604 "卉" 194603 "北" 194602 "匆" 194601 "包" 194600 "勺" 194599 "勤" 194598 "勉" 194597 "勇" 194596 "㔕" 194595 "剷" 194594 "割" 194593 "剆" 194592 "刻" 194591 "㓟" 194590 "刃" 194589 "凵" 194588 "𩇟" 194587 "况" 194586 "冬" 194585 "仌" 194584 "冤" 194583 "冗" 194582 "𠕋" 194581 "再" 194580 "內" 194579 "㒹" 194578 "𠔜" 194577 "具" 194576 "兤" 194575 "兔" 194574 "免" 194573 "𠘺" 194572 "㒞" 194571 "像" 194570 "僧" 194569 "備" 194568 "偺" 194567 "併" 194566 "侻" 194565 "侮" 194564 "你" 194563 "𠄢" 194562 "乁" 194561 "丸" 194560 "丽" 127560 "(敗)" 127559 "(勝)" 127558 "(盗)" 127557 "(打)" 127556 "(点)" 127555 "(安)" 127554 "(二)" 127553 "(三)" 127552 "(本)" 127274 "(S)" 127273 "(Z)" 127272 "(Y)" 127271 "(X)" 127270 "(W)" 127269 "(V)" 127268 "(U)" 127267 "(T)" 127266 "(S)" 127265 "(R)" 127264 "(Q)" 127263 "(P)" 127262 "(O)" 127261 "(N)" 127260 "(M)" 127259 "(L)" 127258 "(K)" 127257 "(J)" 127256 "(I)" 127255 "(H)" 127254 "(G)" 127253 "(F)" 127252 "(E)" 127251 "(D)" 127250 "(C)" 127249 "(B)" 127248 "(A)" 127242 "9," 127241 "8," 127240 "7," 127239 "6," 127238 "5," 127237 "4," 127236 "3," 127235 "2," 127234 "l," 127233 "O," 127232 "O." 120831 "9" 120830 "8" 120829 "7" 120828 "6" 120827 "5" 120826 "4" 120825 "3" 120824 "2" 120823 "l" 120822 "O" 120821 "9" 120820 "8" 120819 "7" 120818 "6" 120817 "5" 120816 "4" 120815 "3" 120814 "2" 120813 "l" 120812 "O" 120811 "9" 120810 "8" 120809 "7" 120808 "6" 120807 "5" 120806 "4" 120805 "3" 120804 "2" 120803 "l" 120802 "O" 120801 "9" 120800 "8" 120799 "7" 120798 "6" 120797 "5" 120796 "4" 120795 "3" 120794 "2" 120793 "l" 120792 "O" 120791 "9" 120790 "8" 120789 "7" 120788 "6" 120787 "5" 120786 "4" 120785 "3" 120784 "2" 120783 "l" 120782 "O" 120779 "ϝ" 120778 "F" 120777 "n" 120776 "p" 120775 "ɸ" 120774 "k" 120773 "O̵" 120772 "ɛ" 120771 "∂" 120770 "ω" 120769 "ψ" 120768 "χ" 120767 "ɸ" 120766 "u" 120765 "t" 120764 "o" 120763 "ς" 120762 "p" 120761 "n" 120760 "o" 120759 "ξ" 120758 "v" 120757 "μ" 120756 "λ" 120755 "k" 120754 "i" 120753 "O̵" 120752 "n̩" 120751 "ζ" 120750 "ɛ" 120749 "ẟ" 120748 "y" 120747 "ß" 120746 "a" 120745 "∇" 120744 "ᘯ" 120743 "Ψ" 120742 "X" 120741 "Φ" 120740 "Y" 120739 "T" 120738 "Ʃ" 120737 "O̵" 120736 "P" 120735 "Π" 120734 "O" 120733 "Ξ" 120732 "N" 120731 "M" 120730 "Ʌ" 120729 "K" 120728 "l" 120727 "O̵" 120726 "H" 120725 "Z" 120724 "E" 120723 "ᐃ" 120722 "ᒥ" 120721 "B" 120720 "A" 120719 "n" 120718 "p" 120717 "ɸ" 120716 "k" 120715 "O̵" 120714 "ɛ" 120713 "∂" 120712 "ω" 120711 "ψ" 120710 "χ" 120709 "ɸ" 120708 "u" 120707 "t" 120706 "o" 120705 "ς" 120704 "p" 120703 "n" 120702 "o" 120701 "ξ" 120700 "v" 120699 "μ" 120698 "λ" 120697 "k" 120696 "i" 120695 "O̵" 120694 "n̩" 120693 "ζ" 120692 "ɛ" 120691 "ẟ" 120690 "y" 120689 "ß" 120688 "a" 120687 "∇" 120686 "ᘯ" 120685 "Ψ" 120684 "X" 120683 "Φ" 120682 "Y" 120681 "T" 120680 "Ʃ" 120679 "O̵" 120678 "P" 120677 "Π" 120676 "O" 120675 "Ξ" 120674 "N" 120673 "M" 120672 "Ʌ" 120671 "K" 120670 "l" 120669 "O̵" 120668 "H" 120667 "Z" 120666 "E" 120665 "ᐃ" 120664 "ᒥ" 120663 "B" 120662 "A" 120661 "n" 120660 "p" 120659 "ɸ" 120658 "k" 120657 "O̵" 120656 "ɛ" 120655 "∂" 120654 "ω" 120653 "ψ" 120652 "χ" 120651 "ɸ" 120650 "u" 120649 "t" 120648 "o" 120647 "ς" 120646 "p" 120645 "n" 120644 "o" 120643 "ξ" 120642 "v" 120641 "μ" 120640 "λ" 120639 "k" 120638 "i" 120637 "O̵" 120636 "n̩" 120635 "ζ" 120634 "ɛ" 120633 "ẟ" 120632 "y" 120631 "ß" 120630 "a" 120629 "∇" 120628 "ᘯ" 120627 "Ψ" 120626 "X" 120625 "Φ" 120624 "Y" 120623 "T" 120622 "Ʃ" 120621 "O̵" 120620 "P" 120619 "Π" 120618 "O" 120617 "Ξ" 120616 "N" 120615 "M" 120614 "Ʌ" 120613 "K" 120612 "l" 120611 "O̵" 120610 "H" 120609 "Z" 120608 "E" 120607 "ᐃ" 120606 "ᒥ" 120605 "B" 120604 "A" 120603 "n" 120602 "p" 120601 "ɸ" 120600 "k" 120599 "O̵" 120598 "ɛ" 120597 "∂" 120596 "ω" 120595 "ψ" 120594 "χ" 120593 "ɸ" 120592 "u" 120591 "t" 120590 "o" 120589 "ς" 120588 "p" 120587 "n" 120586 "o" 120585 "ξ" 120584 "v" 120583 "μ" 120582 "λ" 120581 "k" 120580 "i" 120579 "O̵" 120578 "n̩" 120577 "ζ" 120576 "ɛ" 120575 "ẟ" 120574 "y" 120573 "ß" 120572 "a" 120571 "∇" 120570 "ᘯ" 120569 "Ψ" 120568 "X" 120567 "Φ" 120566 "Y" 120565 "T" 120564 "Ʃ" 120563 "O̵" 120562 "P" 120561 "Π" 120560 "O" 120559 "Ξ" 120558 "N" 120557 "M" 120556 "Ʌ" 120555 "K" 120554 "l" 120553 "O̵" 120552 "H" 120551 "Z" 120550 "E" 120549 "ᐃ" 120548 "ᒥ" 120547 "B" 120546 "A" 120545 "n" 120544 "p" 120543 "ɸ" 120542 "k" 120541 "O̵" 120540 "ɛ" 120539 "∂" 120538 "ω" 120537 "ψ" 120536 "χ" 120535 "ɸ" 120534 "u" 120533 "t" 120532 "o" 120531 "ς" 120530 "p" 120529 "n" 120528 "o" 120527 "ξ" 120526 "v" 120525 "μ" 120524 "λ" 120523 "k" 120522 "i" 120521 "O̵" 120520 "n̩" 120519 "ζ" 120518 "ɛ" 120517 "ẟ" 120516 "y" 120515 "ß" 120514 "a" 120513 "∇" 120512 "ᘯ" 120511 "Ψ" 120510 "X" 120509 "Φ" 120508 "Y" 120507 "T" 120506 "Ʃ" 120505 "O̵" 120504 "P" 120503 "Π" 120502 "O" 120501 "Ξ" 120500 "N" 120499 "M" 120498 "Ʌ" 120497 "K" 120496 "l" 120495 "O̵" 120494 "H" 120493 "Z" 120492 "E" 120491 "ᐃ" 120490 "ᒥ" 120489 "B" 120488 "A" 120485 "j" 120484 "i" 120483 "z" 120482 "y" 120481 "x" 120480 "vv" 120479 "v" 120478 "u" 120477 "t" 120476 "s" 120475 "r" 120474 "q" 120473 "p" 120472 "o" 120471 "n" 120470 "rn" 120469 "l" 120468 "k" 120467 "j" 120466 "i" 120465 "h" 120464 "g" 120463 "f" 120462 "e" 120461 "d" 120460 "c" 120459 "b" 120458 "a" 120457 "Z" 120456 "Y" 120455 "X" 120454 "W" 120453 "V" 120452 "U" 120451 "T" 120450 "S" 120449 "R" 120448 "Q" 120447 "P" 120446 "O" 120445 "N" 120444 "M" 120443 "L" 120442 "K" 120441 "J" 120440 "l" 120439 "H" 120438 "G" 120437 "F" 120436 "E" 120435 "D" 120434 "C" 120433 "B" 120432 "A" 120431 "z" 120430 "y" 120429 "x" 120428 "vv" 120427 "v" 120426 "u" 120425 "t" 120424 "s" 120423 "r" 120422 "q" 120421 "p" 120420 "o" 120419 "n" 120418 "rn" 120417 "l" 120416 "k" 120415 "j" 120414 "i" 120413 "h" 120412 "g" 120411 "f" 120410 "e" 120409 "d" 120408 "c" 120407 "b" 120406 "a" 120405 "Z" 120404 "Y" 120403 "X" 120402 "W" 120401 "V" 120400 "U" 120399 "T" 120398 "S" 120397 "R" 120396 "Q" 120395 "P" 120394 "O" 120393 "N" 120392 "M" 120391 "L" 120390 "K" 120389 "J" 120388 "l" 120387 "H" 120386 "G" 120385 "F" 120384 "E" 120383 "D" 120382 "C" 120381 "B" 120380 "A" 120379 "z" 120378 "y" 120377 "x" 120376 "vv" 120375 "v" 120374 "u" 120373 "t" 120372 "s" 120371 "r" 120370 "q" 120369 "p" 120368 "o" 120367 "n" 120366 "rn" 120365 "l" 120364 "k" 120363 "j" 120362 "i" 120361 "h" 120360 "g" 120359 "f" 120358 "e" 120357 "d" 120356 "c" 120355 "b" 120354 "a" 120353 "Z" 120352 "Y" 120351 "X" 120350 "W" 120349 "V" 120348 "U" 120347 "T" 120346 "S" 120345 "R" 120344 "Q" 120343 "P" 120342 "O" 120341 "N" 120340 "M" 120339 "L" 120338 "K" 120337 "J" 120336 "l" 120335 "H" 120334 "G" 120333 "F" 120332 "E" 120331 "D" 120330 "C" 120329 "B" 120328 "A" 120327 "z" 120326 "y" 120325 "x" 120324 "vv" 120323 "v" 120322 "u" 120321 "t" 120320 "s" 120319 "r" 120318 "q" 120317 "p" 120316 "o" 120315 "n" 120314 "rn" 120313 "l" 120312 "k" 120311 "j" 120310 "i" 120309 "h" 120308 "g" 120307 "f" 120306 "e" 120305 "d" 120304 "c" 120303 "b" 120302 "a" 120301 "Z" 120300 "Y" 120299 "X" 120298 "W" 120297 "V" 120296 "U" 120295 "T" 120294 "S" 120293 "R" 120292 "Q" 120291 "P" 120290 "O" 120289 "N" 120288 "M" 120287 "L" 120286 "K" 120285 "J" 120284 "l" 120283 "H" 120282 "G" 120281 "F" 120280 "E" 120279 "D" 120278 "C" 120277 "B" 120276 "A" 120275 "z" 120274 "y" 120273 "x" 120272 "vv" 120271 "v" 120270 "u" 120269 "t" 120268 "s" 120267 "r" 120266 "q" 120265 "p" 120264 "o" 120263 "n" 120262 "rn" 120261 "l" 120260 "k" 120259 "j" 120258 "i" 120257 "h" 120256 "g" 120255 "f" 120254 "e" 120253 "d" 120252 "c" 120251 "b" 120250 "a" 120249 "Z" 120248 "Y" 120247 "X" 120246 "W" 120245 "V" 120244 "U" 120243 "T" 120242 "S" 120241 "R" 120240 "Q" 120239 "P" 120238 "O" 120237 "N" 120236 "M" 120235 "L" 120234 "K" 120233 "J" 120232 "l" 120231 "H" 120230 "G" 120229 "F" 120228 "E" 120227 "D" 120226 "C" 120225 "B" 120224 "A" 120223 "z" 120222 "y" 120221 "x" 120220 "vv" 120219 "v" 120218 "u" 120217 "t" 120216 "s" 120215 "r" 120214 "q" 120213 "p" 120212 "o" 120211 "n" 120210 "rn" 120209 "l" 120208 "k" 120207 "j" 120206 "i" 120205 "h" 120204 "g" 120203 "f" 120202 "e" 120201 "d" 120200 "c" 120199 "b" 120198 "a" 120197 "Z" 120196 "Y" 120195 "X" 120194 "W" 120193 "V" 120192 "U" 120191 "T" 120190 "S" 120189 "R" 120188 "Q" 120187 "P" 120186 "O" 120185 "N" 120184 "M" 120183 "L" 120182 "K" 120181 "J" 120180 "l" 120179 "H" 120178 "G" 120177 "F" 120176 "E" 120175 "D" 120174 "C" 120173 "B" 120172 "A" 120171 "z" 120170 "y" 120169 "x" 120168 "vv" 120167 "v" 120166 "u" 120165 "t" 120164 "s" 120163 "r" 120162 "q" 120161 "p" 120160 "o" 120159 "n" 120158 "rn" 120157 "l" 120156 "k" 120155 "j" 120154 "i" 120153 "h" 120152 "g" 120151 "f" 120150 "e" 120149 "d" 120148 "c" 120147 "b" 120146 "a" 120144 "Y" 120143 "X" 120142 "W" 120141 "V" 120140 "U" 120139 "T" 120138 "S" 120134 "O" 120132 "M" 120131 "L" 120130 "K" 120129 "J" 120128 "l" 120126 "G" 120125 "F" 120124 "E" 120123 "D" 120121 "B" 120120 "A" 120119 "z" 120118 "y" 120117 "x" 120116 "vv" 120115 "v" 120114 "u" 120113 "t" 120112 "s" 120111 "r" 120110 "q" 120109 "p" 120108 "o" 120107 "n" 120106 "rn" 120105 "l" 120104 "k" 120103 "j" 120102 "i" 120101 "h" 120100 "g" 120099 "f" 120098 "e" 120097 "d" 120096 "c" 120095 "b" 120094 "a" 120092 "Y" 120091 "X" 120090 "W" 120089 "V" 120088 "U" 120087 "T" 120086 "S" 120084 "Q" 120083 "P" 120082 "O" 120081 "N" 120080 "M" 120079 "L" 120078 "K" 120077 "J" 120074 "G" 120073 "F" 120072 "E" 120071 "D" 120069 "B" 120068 "A" 120067 "z" 120066 "y" 120065 "x" 120064 "vv" 120063 "v" 120062 "u" 120061 "t" 120060 "s" 120059 "r" 120058 "q" 120057 "p" 120056 "o" 120055 "n" 120054 "rn" 120053 "l" 120052 "k" 120051 "j" 120050 "i" 120049 "h" 120048 "g" 120047 "f" 120046 "e" 120045 "d" 120044 "c" 120043 "b" 120042 "a" 120041 "Z" 120040 "Y" 120039 "X" 120038 "W" 120037 "V" 120036 "U" 120035 "T" 120034 "S" 120033 "R" 120032 "Q" 120031 "P" 120030 "O" 120029 "N" 120028 "M" 120027 "L" 120026 "K" 120025 "J" 120024 "l" 120023 "H" 120022 "G" 120021 "F" 120020 "E" 120019 "D" 120018 "C" 120017 "B" 120016 "A" 120015 "z" 120014 "y" 120013 "x" 120012 "vv" 120011 "v" 120010 "u" 120009 "t" 120008 "s" 120007 "r" 120006 "q" 120005 "p" 120003 "n" 120002 "rn" 120001 "l" 120000 "k" 119999 "j" 119998 "i" 119997 "h" 119995 "f" 119993 "d" 119992 "c" 119991 "b" 119990 "a" 119989 "Z" 119988 "Y" 119987 "X" 119986 "W" 119985 "V" 119984 "U" 119983 "T" 119982 "S" 119980 "Q" 119979 "P" 119978 "O" 119977 "N" 119974 "K" 119973 "J" 119970 "G" 119967 "D" 119966 "C" 119964 "A" 119963 "z" 119962 "y" 119961 "x" 119960 "vv" 119959 "v" 119958 "u" 119957 "t" 119956 "s" 119955 "r" 119954 "q" 119953 "p" 119952 "o" 119951 "n" 119950 "rn" 119949 "l" 119948 "k" 119947 "j" 119946 "i" 119945 "h" 119944 "g" 119943 "f" 119942 "e" 119941 "d" 119940 "c" 119939 "b" 119938 "a" 119937 "Z" 119936 "Y" 119935 "X" 119934 "W" 119933 "V" 119932 "U" 119931 "T" 119930 "S" 119929 "R" 119928 "Q" 119927 "P" 119926 "O" 119925 "N" 119924 "M" 119923 "L" 119922 "K" 119921 "J" 119920 "l" 119919 "H" 119918 "G" 119917 "F" 119916 "E" 119915 "D" 119914 "C" 119913 "B" 119912 "A" 119911 "z" 119910 "y" 119909 "x" 119908 "vv" 119907 "v" 119906 "u" 119905 "t" 119904 "s" 119903 "r" 119902 "q" 119901 "p" 119900 "o" 119899 "n" 119898 "rn" 119897 "l" 119896 "k" 119895 "j" 119894 "i" 119892 "g" 119891 "f" 119890 "e" 119889 "d" 119888 "c" 119887 "b" 119886 "a" 119885 "Z" 119884 "Y" 119883 "X" 119882 "W" 119881 "V" 119880 "U" 119879 "T" 119878 "S" 119877 "R" 119876 "Q" 119875 "P" 119874 "O" 119873 "N" 119872 "M" 119871 "L" 119870 "K" 119869 "J" 119868 "l" 119867 "H" 119866 "G" 119865 "F" 119864 "E" 119863 "D" 119862 "C" 119861 "B" 119860 "A" 119859 "z" 119858 "y" 119857 "x" 119856 "vv" 119855 "v" 119854 "u" 119853 "t" 119852 "s" 119851 "r" 119850 "q" 119849 "p" 119848 "o" 119847 "n" 119846 "rn" 119845 "l" 119844 "k" 119843 "j" 119842 "i" 119841 "h" 119840 "g" 119839 "f" 119838 "e" 119837 "d" 119836 "c" 119835 "b" 119834 "a" 119833 "Z" 119832 "Y" 119831 "X" 119830 "W" 119829 "V" 119828 "U" 119827 "T" 119826 "S" 119825 "R" 119824 "Q" 119823 "P" 119822 "O" 119821 "N" 119820 "M" 119819 "L" 119818 "K" 119817 "J" 119816 "l" 119815 "H" 119814 "G" 119813 "F" 119812 "E" 119811 "D" 119810 "C" 119809 "B" 119808 "A" 119149 "." 69819 "॰" 68176 "." 68154 "̣" 66720 "𐒆" 65793 "·" 65517 "▪" 65512 "l" 65507 "ˉ" 65381 "·" 65374 "〜" 65372 "│" 65369 "y" 65368 "x" 65366 "v" 65363 "s" 65360 "p" 65359 "o" 65356 "l" 65354 "j" 65353 "i" 65352 "h" 65351 "g" 65349 "e" 65347 "c" 65345 "a" 65344 "'" 65342 "︿" 65341 ")" 65340 "\\" 65339 "(" 65338 "Z" 65337 "Y" 65336 "X" 65332 "T" 65331 "S" 65328 "P" 65327 "O" 65326 "N" 65325 "M" 65323 "K" 65322 "J" 65321 "l" 65320 "H" 65317 "E" 65315 "C" 65314 "B" 65313 "A" 65306 ":" 65293 "ー" 65287 "'" 65282 "''" 65281 "!" 65276 "لا" 65275 "لا" 65274 "لإ" 65273 "لإ" 65272 "لاٴ" 65271 "لاٴ" 65270 "لآ" 65269 "لآ" 65268 "ى" 65267 "ى" 65266 "ى" 65265 "ى" 65264 "ى" 65263 "ى" 65262 "و" 65261 "و" 65260 "ه" 65259 "ه" 65258 "ه" 65257 "ه" 65256 "ب" 65255 "ب" 65254 "ب" 65253 "ب" 65252 "م" 65251 "م" 65250 "م" 65249 "م" 65248 "ل" 65247 "ل" 65246 "ل" 65245 "ل" 65244 "ك" 65243 "ك" 65242 "ك" 65241 "ك" 65240 "ق" 65239 "ق" 65238 "ق" 65237 "ق" 65236 "ف" 65235 "ف" 65234 "ف" 65233 "ف" 65232 "غ" 65231 "غ" 65230 "غ" 65229 "غ" 65228 "ع" 65227 "ع" 65226 "ع" 65225 "ع" 65224 "ظ" 65223 "ظ" 65222 "ظ" 65221 "ظ" 65220 "ط" 65219 "ط" 65218 "ط" 65217 "ط" 65216 "ض" 65215 "ض" 65214 "ض" 65213 "ض" 65212 "ص" 65211 "ص" 65210 "ص" 65209 "ص" 65208 "ش" 65207 "ش" 65206 "ش" 65205 "ش" 65204 "س" 65203 "س" 65202 "س" 65201 "س" 65200 "ز" 65199 "ز" 65198 "ر" 65197 "ر" 65196 "ذ" 65195 "ذ" 65194 "د" 65193 "د" 65192 "ج" 65191 "ج" 65190 "ج" 65189 "ج" 65188 "ح" 65187 "ح" 65186 "ح" 65185 "ح" 65184 "ج" 65183 "ج" 65182 "ج" 65181 "ج" 65180 "ث" 65179 "ث" 65178 "ث" 65177 "ث" 65176 "ت" 65175 "ت" 65174 "ت" 65173 "ت" 65172 "ة" 65171 "ة" 65170 "ب" 65169 "ب" 65168 "ب" 65167 "ب" 65166 "ا" 65165 "ا" 65164 "ىٴ" 65163 "ىٴ" 65162 "ىٴ" 65161 "ىٴ" 65160 "إ" 65159 "إ" 65158 "وٴ" 65157 "وٴ" 65156 "اٴ" 65155 "اٴ" 65154 "آ" 65153 "آ" 65152 "ء" 65128 "\\" 65112 "-" 65103 "_" 65102 "_" 65101 "_" 65100 "ˉ" 65099 "ˉ" 65098 "ˉ" 65097 "ˉ" 65082 "⏡" 65081 "⏠" 65080 "⏟" 65079 "⏞" 65078 "⏝" 65077 "⏜" 65073 "│" 65072 ":" 65049 "⁝" 65020 "رىال" 65019 "جل جلاله" 65018 "صلى الله علىه وسلم" 65017 "صلى" 65016 "وسلم" 65015 "علىه" 65014 "رسول" 65013 "صلعم" 65012 "محمد" 65011 "اكبر" 65010 "الله" 65009 "قلے" 65008 "صلے" 64967 "بجى" 64966 "سجى" 64965 "صمم" 64964 "عجم" 64963 "كمم" 64962 "بحى" 64961 "فمى" 64960 "مجى" 64959 "حجى" 64958 "جحى" 64957 "بجح" 64956 "لجم" 64955 "كمم" 64954 "لجم" 64953 "مجى" 64952 "بجح" 64951 "كمى" 64950 "عمى" 64949 "لحم" 64948 "قمح" 64947 "بحى" 64946 "قمى" 64945 "ممى" 64944 "ىمى" 64943 "ىجى" 64942 "ىحى" 64941 "لمى" 64940 "لجى" 64939 "ضحى" 64938 "شحى" 64937 "صحى" 64936 "سجى" 64935 "جمى" 64934 "جحى" 64933 "جمى" 64932 "تمى" 64931 "تمى" 64930 "تجى" 64929 "تجى" 64928 "تجى" 64927 "تجى" 64926 "بجى" 64925 "ىمم" 64924 "ىمم" 64923 "بمى" 64922 "بمى" 64921 "بجى" 64920 "بجم" 64919 "بجم" 64918 "بحى" 64917 "بحم" 64916 "همم" 64915 "همج" 64914 "مجج" 64911 "مجم" 64910 "مجج" 64909 "مجم" 64908 "مجح" 64907 "محى" 64906 "محم" 64905 "محج" 64904 "لمح" 64903 "لمح" 64902 "لجم" 64901 "لجم" 64900 "لجج" 64899 "لجج" 64898 "لحى" 64897 "لحى" 64896 "لحم" 64895 "قمم" 64894 "قمح" 64893 "فجم" 64892 "فجم" 64891 "غمى" 64890 "غمى" 64889 "غمم" 64888 "عمى" 64887 "عمم" 64886 "عمم" 64885 "عجم" 64884 "طمى" 64883 "طمم" 64882 "طمح" 64881 "طمح" 64880 "ضجم" 64879 "ضجم" 64878 "ضحى" 64877 "شمم" 64876 "شمم" 64875 "شمج" 64874 "شمج" 64873 "شجى" 64872 "شحم" 64871 "شحم" 64870 "صمم" 64869 "صحح" 64868 "صحح" 64867 "سمم" 64866 "سمم" 64865 "سمج" 64864 "سمح" 64863 "سمح" 64862 "سجى" 64861 "سجح" 64860 "سحج" 64859 "حمى" 64858 "حمى" 64857 "جمح" 64856 "جمح" 64855 "تمج" 64854 "تمح" 64853 "تمج" 64852 "تجم" 64851 "تحم" 64850 "تحج" 64849 "تحج" 64848 "تجم" 64831 ")" 64830 "(" 64829 "اً" 64828 "اً" 64827 "ظم" 64826 "طم" 64825 "شج" 64824 "شح" 64823 "شج" 64822 "سج" 64821 "سح" 64820 "سج" 64819 "طم" 64818 "شه" 64817 "سه" 64816 "شم" 64815 "شج" 64814 "شح" 64813 "شج" 64812 "ضر" 64811 "صر" 64810 "سر" 64809 "شر" 64808 "شم" 64807 "شج" 64806 "شح" 64805 "شج" 64804 "ضى" 64803 "ضى" 64802 "صى" 64801 "صى" 64800 "جى" 64799 "جى" 64798 "جى" 64797 "جى" 64796 "حى" 64795 "حى" 64794 "شى" 64793 "شى" 64792 "سى" 64791 "سى" 64790 "غى" 64789 "غى" 64788 "عى" 64787 "عى" 64786 "طى" 64785 "طى" 64784 "ضر" 64783 "صر" 64782 "سر" 64781 "شر" 64780 "شم" 64779 "شج" 64778 "شح" 64777 "شج" 64776 "ضى" 64775 "ضى" 64774 "صى" 64773 "صى" 64772 "جى" 64771 "جى" 64770 "جى" 64769 "جى" 64768 "حى" 64767 "حى" 64766 "شى" 64765 "شى" 64764 "سى" 64763 "سى" 64762 "غى" 64761 "غى" 64760 "عى" 64759 "عى" 64758 "طى" 64757 "طى" 64756 "ﹻّ" 64755 "ﹹّ" 64754 "ﹷّ" 64753 "ىه" 64752 "ىم" 64751 "به" 64750 "بم" 64749 "لم" 64748 "كم" 64747 "كل" 64746 "شه" 64745 "شم" 64744 "سه" 64743 "سم" 64742 "ثه" 64741 "ثم" 64740 "ته" 64739 "تم" 64738 "به" 64737 "بم" 64736 "ىٴه" 64735 "ىٴم" 64734 "ىه" 64733 "ىم" 64732 "تج" 64731 "تح" 64730 "تج" 64729 "هٰ" 64728 "هم" 64727 "هج" 64726 "به" 64725 "بم" 64724 "بج" 64723 "بح" 64722 "بج" 64721 "مم" 64720 "مج" 64719 "مح" 64718 "مج" 64717 "له" 64716 "لم" 64715 "لج" 64714 "لح" 64713 "لج" 64712 "كم" 64711 "كل" 64710 "كج" 64709 "كح" 64708 "كج" 64707 "قم" 64706 "قح" 64705 "فم" 64704 "فج" 64703 "فح" 64702 "فج" 64701 "غم" 64700 "غج" 64699 "عم" 64698 "عج" 64697 "ظم" 64696 "طح" 64695 "ضم" 64694 "ضج" 64693 "ضح" 64692 "ضج" 64691 "صم" 64690 "صج" 64689 "صح" 64688 "سم" 64687 "سج" 64686 "سح" 64685 "سج" 64684 "جم" 64683 "جج" 64682 "حم" 64681 "حج" 64680 "جم" 64679 "جح" 64678 "ثم" 64677 "ته" 64676 "تم" 64675 "تج" 64674 "تح" 64673 "تج" 64672 "به" 64671 "بم" 64670 "بج" 64669 "بح" 64668 "بج" 64667 "ىٴه" 64666 "ىٴم" 64665 "ىٴج" 64664 "ىٴح" 64663 "ىٴج" 64662 "ىى" 64661 "ىى" 64660 "ىب" 64659 "ىم" 64658 "ىز" 64657 "ىر" 64656 "ىٰ" 64655 "بى" 64654 "بى" 64653 "بب" 64652 "بم" 64651 "بز" 64650 "بر" 64649 "مم" 64648 "ما" 64647 "لى" 64646 "لى" 64645 "لم" 64644 "كى" 64643 "كى" 64642 "كم" 64641 "كل" 64640 "كا" 64639 "قى" 64638 "قى" 64637 "فى" 64636 "فى" 64635 "ثى" 64634 "ثى" 64633 "ثب" 64632 "ثم" 64631 "ثز" 64630 "ثر" 64629 "تى" 64628 "تى" 64627 "تب" 64626 "تم" 64625 "تز" 64624 "تر" 64623 "بى" 64622 "بى" 64621 "بب" 64620 "بم" 64619 "بز" 64618 "بر" 64617 "ىٴى" 64616 "ىٴى" 64615 "ىٴب" 64614 "ىٴم" 64613 "ىٴز" 64612 "ىٴر" 64611 "ﹼٰ" 64610 "ﹶّ" 64609 "ﹸّ" 64608 "ﹶّ" 64607 "ﹴّ" 64606 "ﹲّ" 64605 "ىٰ" 64604 "رٰ" 64603 "ذٰ" 64602 "ىى" 64601 "ىى" 64600 "ىم" 64599 "تج" 64598 "تح" 64597 "تج" 64596 "هى" 64595 "هى" 64594 "هم" 64593 "هج" 64592 "بى" 64591 "بى" 64590 "بم" 64589 "بج" 64588 "بح" 64587 "بج" 64586 "مى" 64585 "مى" 64584 "مم" 64583 "مج" 64582 "مح" 64581 "مج" 64580 "لى" 64579 "لى" 64578 "لم" 64577 "لج" 64576 "لح" 64575 "لج" 64574 "كى" 64573 "كى" 64572 "كم" 64571 "كل" 64570 "كج" 64569 "كح" 64568 "كج" 64567 "كا" 64566 "قى" 64565 "قى" 64564 "قم" 64563 "قح" 64562 "فى" 64561 "فى" 64560 "فم" 64559 "فج" 64558 "فح" 64557 "فج" 64556 "غم" 64555 "غج" 64554 "عم" 64553 "عج" 64552 "ظم" 64551 "طم" 64550 "طح" 64549 "ضم" 64548 "ضج" 64547 "ضح" 64546 "ضج" 64545 "صم" 64544 "صح" 64543 "سم" 64542 "سج" 64541 "سح" 64540 "سج" 64539 "جم" 64538 "جح" 64537 "جج" 64536 "حم" 64535 "حج" 64534 "جم" 64533 "جح" 64532 "ثى" 64531 "ثى" 64530 "ثم" 64529 "ثج" 64528 "تى" 64527 "تى" 64526 "تم" 64525 "تج" 64524 "تح" 64523 "تج" 64522 "بى" 64521 "بى" 64520 "بم" 64519 "بج" 64518 "بح" 64517 "بج" 64516 "ىٴى" 64515 "ىٴى" 64514 "ىٴم" 64513 "ىٴح" 64512 "ىٴج" 64511 "ى" 64510 "ى" 64509 "ى" 64508 "ى" 64507 "ىٴى" 64506 "ىٴى" 64505 "ىٴى" 64504 "ىٴٺ" 64503 "ىٴٺ" 64502 "ىٴٺ" 64501 "ىٴۈ" 64500 "ىٴۈ" 64499 "ىٴۆ" 64498 "ىٴۆ" 64497 "ىٴۇ" 64496 "ىٴۇ" 64495 "ىٴو" 64494 "ىٴو" 64493 "ىٴه" 64492 "ىٴه" 64491 "ىٴا" 64490 "ىٴا" 64489 "ى" 64488 "ى" 64487 "ٺ" 64486 "ٺ" 64485 "ٺ" 64484 "ٺ" 64483 "ۉ" 64482 "ۉ" 64481 "ۅ" 64480 "ۅ" 64479 "ۋ" 64478 "ۋ" 64477 "ۇٴ" 64476 "ۈ" 64475 "ۈ" 64474 "ۆ" 64473 "ۆ" 64472 "ۇ" 64471 "ۇ" 64470 "ڭ" 64469 "ڭ" 64468 "ڭ" 64467 "ڭ" 64433 "ۓ" 64432 "ۓ" 64431 "ے" 64430 "ے" 64429 "ه" 64428 "ه" 64427 "ه" 64426 "ه" 64425 "ه" 64424 "ه" 64423 "ه" 64422 "ه" 64421 "ۀ" 64420 "ۀ" 64419 "ٹ" 64418 "ٹ" 64417 "ٹ" 64416 "ٹ" 64415 "ں" 64414 "ں" 64413 "ڱ" 64412 "ڱ" 64411 "ڱ" 64410 "ڱ" 64409 "ڳ" 64408 "ڳ" 64407 "ڳ" 64406 "ڳ" 64405 "گ" 64404 "گ" 64403 "گ" 64402 "گ" 64401 "ك" 64400 "ك" 64399 "ك" 64398 "ك" 64397 "ڑ" 64396 "ڑ" 64395 "ژ" 64394 "ژ" 64393 "ڈ" 64392 "ڈ" 64391 "ڎ" 64390 "ڎ" 64389 "ڌ" 64388 "ڌ" 64387 "ڍ" 64386 "ڍ" 64385 "ڇ" 64384 "ڇ" 64383 "ڇ" 64382 "ڇ" 64381 "چ" 64380 "چ" 64379 "چ" 64378 "چ" 64377 "ڃ" 64376 "ڃ" 64375 "ڃ" 64374 "ڃ" 64373 "ڂ" 64372 "ڂ" 64371 "ڂ" 64370 "ڂ" 64369 "ڦ" 64368 "ڦ" 64367 "ڦ" 64366 "ڦ" 64365 "ڤ" 64364 "ڤ" 64363 "ڤ" 64362 "ڤ" 64361 "ٹ" 64360 "ٹ" 64359 "ٹ" 64358 "ٹ" 64357 "ٿ" 64356 "ٿ" 64355 "ٿ" 64354 "ٿ" 64353 "ٺ" 64352 "ٺ" 64351 "ٺ" 64350 "ٺ" 64349 "ٿ" 64348 "ٿ" 64347 "ٿ" 64346 "ٿ" 64345 "پ" 64344 "پ" 64343 "پ" 64342 "پ" 64341 "ٺ" 64340 "ٺ" 64339 "ٺ" 64338 "ٺ" 64337 "ٱ" 64336 "ٱ" 64335 "אל" 64329 "שׁ" 64313 "יִ" 64304 "אַ" 64303 "אַ" 64301 "שּׁ" 64299 "שׁ" 64297 "+" 64296 "ת" 64295 "ר" 64294 "ם" 64293 "ל" 64292 "כ" 64291 "ה" 64290 "ד" 64289 "א" 64288 "ע" 64279 "մխ" 64278 "վն" 64277 "մի" 64276 "մե" 64275 "մն" 64262 "st" 64260 "ffl" 64259 "ffi" 64258 "fl" 64257 "fi" 64256 "ff" 64217 "龎" 64216 "齃" 64215 "𧻓" 64214 "𥳐" 64213 "𥉉" 64212 "䀹" 64211 "䀘" 64210 "㮝" 64209 "𣏕" 64208 "𢡄" 64207 "𢡊" 64206 "龜" 64205 "鬒" 64204 "頻" 64203 "頋" 64202 "響" 64201 "韛" 64200 "靖" 64199 "難" 64198 "陼" 64197 "鉶" 64196 "醙" 64195 "遲" 64194 "輸" 64193 "贈" 64192 "變" 64191 "謹" 64190 "諭" 64189 "諾" 64188 "謁" 64187 "請" 64186 "諸" 64185 "調" 64184 "視" 64183 "覆" 64182 "襁" 64181 "蝹" 64180 "華" 64179 "荒" 64178 "者" 64177 "缾" 64176 "練" 64175 "絛" 64174 "类" 64173 "節" 64172 "窱" 64171 "磌" 64170 "着" 64169 "睊" 64168 "直" 64167 "盛" 64166 "益" 64165 "瘟" 64164 "瘝" 64163 "画" 64162 "甆" 64161 "瑱" 64160 "猪" 64159 "犯" 64158 "爵" 64157 "瞧" 64156 "煮" 64155 "瀞" 64154 "漢" 64153 "滋" 64152 "滛" 64151 "流" 64150 "殺" 64149 "歹" 64148 "杖" 64147 "望" 64146 "朗" 64145 "晴" 64144 "敖" 64143 "摒" 64142 "搜" 64141 "揄" 64140 "戴" 64139 "懲" 64138 "慠" 64137 "憎" 64136 "愈" 64135 "慎" 64134 "惘" 64133 "徭" 64132 "彩" 64131 "廙" 64130 "廒" 64129 "嬨" 64128 "婢" 64127 "奔" 64126 "奄" 64125 "墳" 64124 "塚" 64123 "嗢" 64122 "喙" 64121 "啕" 64120 "喝" 64119 "勺" 64118 "勇" 64117 "冀" 64116 "充" 64115 "侀" 64114 "全" 64113 "况" 64112 "並" 64109 "舘" 64108 "𤋮" 64107 "恵" 64106 "頻" 64105 "響" 64104 "難" 64103 "逸" 64102 "辶" 64101 "贈" 64100 "賓" 64099 "謹" 64098 "謁" 64097 "視" 64096 "褐" 64095 "著" 64094 "艹" 64093 "艹" 64092 "臭" 64091 "者" 64090 "署" 64089 "繁" 64088 "縉" 64087 "練" 64086 "節" 64085 "突" 64084 "穀" 64083 "禎" 64082 "禍" 64081 "祝" 64080 "祖" 64079 "祐" 64078 "祈" 64077 "祉" 64076 "社" 64075 "碑" 64074 "琢" 64073 "爫" 64072 "煮" 64071 "漢" 64070 "渚" 64069 "海" 64068 "梅" 64067 "暑" 64066 "既" 64065 "敏" 64064 "懲" 64063 "憎" 64062 "慨" 64061 "悔" 64060 "屮" 64059 "層" 64058 "墨" 64057 "塀" 64056 "器" 64055 "嘆" 64054 "喝" 64053 "卑" 64052 "勤" 64051 "勉" 64050 "免" 64049 "僧" 64048 "侮" 64045 "鶴" 64044 "館" 64043 "飼" 64042 "飯" 64038 "都" 64037 "逸" 64034 "諸" 64032 "蘒" 64030 "羽" 64029 "精" 64028 "靖" 64027 "福" 64026 "祥" 64025 "神" 64024 "礼" 64023 "益" 64022 "猪" 64021 "凞" 64018 "晴" 64016 "塚" 64013 "嗀" 64012 "兀" 64011 "廓" 64010 "見" 64009 "降" 64008 "行" 64007 "輻" 64006 "暴" 64005 "洞" 64004 "宅" 64003 "糖" 64002 "拓" 64001 "度" 64000 "切" 63999 "刺" 63998 "茶" 63997 "什" 63996 "識" 63995 "炙" 63994 "狀" 63993 "粒" 63992 "笠" 63991 "立" 63990 "臨" 63989 "淋" 63988 "林" 63987 "麟" 63986 "鱗" 63985 "隣" 63984 "藺" 63983 "璘" 63982 "燐" 63981 "吝" 63980 "溺" 63979 "匿" 63978 "離" 63977 "里" 63976 "裡" 63975 "裏" 63974 "罹" 63973 "痢" 63972 "理" 63971 "泥" 63970 "梨" 63969 "李" 63968 "易" 63967 "履" 63966 "吏" 63965 "利" 63964 "隆" 63963 "率" 63962 "栗" 63961 "慄" 63960 "律" 63959 "輪" 63958 "淪" 63957 "崙" 63956 "倫" 63955 "陸" 63954 "戮" 63953 "六" 63952 "類" 63951 "紐" 63950 "硫" 63949 "留" 63948 "琉" 63947 "溜" 63946 "流" 63945 "柳" 63944 "杻" 63943 "劉" 63942 "阮" 63941 "暈" 63940 "龍" 63939 "遼" 63938 "蓼" 63937 "療" 63936 "燎" 63935 "樂" 63934 "料" 63933 "尿" 63932 "寮" 63931 "僚" 63930 "了" 63929 "惡" 63928 "隷" 63927 "醴" 63926 "禮" 63925 "例" 63924 "領" 63923 "靈" 63922 "零" 63921 "鈴" 63920 "聆" 63919 "羚" 63918 "瑩" 63917 "玲" 63916 "怜" 63915 "嶺" 63914 "寧" 63913 "囹" 63912 "令" 63911 "獵" 63910 "簾" 63909 "殮" 63908 "捻" 63907 "念" 63906 "廉" 63905 "說" 63904 "裂" 63903 "烈" 63902 "咽" 63901 "劣" 63900 "列" 63899 "鍊" 63898 "連" 63897 "蓮" 63896 "輦" 63895 "聯" 63894 "練" 63893 "秊" 63892 "璉" 63891 "煉" 63890 "漣" 63889 "撚" 63888 "戀" 63887 "憐" 63886 "年" 63885 "轢" 63884 "歷" 63883 "曆" 63882 "力" 63881 "黎" 63880 "麗" 63879 "驪" 63878 "閭" 63877 "礪" 63876 "濾" 63875 "旅" 63874 "廬" 63873 "女" 63872 "呂" 63871 "勵" 63870 "量" 63869 "諒" 63868 "良" 63867 "糧" 63866 "梁" 63865 "凉" 63864 "兩" 63863 "亮" 63862 "略" 63861 "掠" 63860 "若" 63859 "拾" 63858 "沈" 63857 "辰" 63856 "殺" 63855 "說" 63854 "葉" 63853 "省" 63852 "塞" 63851 "參" 63850 "索" 63849 "數" 63848 "泌" 63847 "不" 63846 "復" 63845 "便" 63844 "磻" 63843 "北" 63842 "異" 63841 "率" 63840 "怒" 63839 "寧" 63838 "丹" 63837 "諾" 63836 "樂" 63835 "拏" 63834 "讀" 63833 "陵" 63832 "菱" 63831 "綾" 63830 "稜" 63829 "凌" 63828 "凜" 63827 "肋" 63826 "勒" 63825 "陋" 63824 "縷" 63823 "累" 63822 "漏" 63821 "淚" 63820 "樓" 63819 "屢" 63818 "壘" 63817 "雷" 63816 "賂" 63815 "磊" 63814 "牢" 63813 "聾" 63812 "籠" 63811 "弄" 63810 "壟" 63809 "論" 63808 "鹿" 63807 "錄" 63806 "菉" 63805 "綠" 63804 "祿" 63803 "碌" 63802 "鷺" 63801 "魯" 63800 "露" 63799 "路" 63798 "虜" 63797 "蘆" 63796 "老" 63795 "盧" 63794 "爐" 63793 "櫓" 63792 "擄" 63791 "勞" 63790 "冷" 63789 "來" 63788 "郎" 63787 "狼" 63786 "浪" 63785 "朗" 63784 "廊" 63783 "蠟" 63782 "臘" 63781 "拉" 63780 "襤" 63779 "藍" 63778 "濫" 63777 "嵐" 63776 "鸞" 63775 "蘭" 63774 "爛" 63773 "欄" 63772 "卵" 63771 "亂" 63770 "駱" 63769 "酪" 63768 "落" 63767 "珞" 63766 "烙" 63765 "洛" 63764 "樂" 63763 "邏" 63762 "裸" 63761 "螺" 63760 "蘿" 63759 "羅" 63758 "癩" 63757 "懶" 63756 "奈" 63755 "喇" 63754 "金" 63753 "契" 63752 "龜" 63751 "龜" 63750 "句" 63749 "串" 63748 "滑" 63747 "賈" 63746 "車" 63745 "更" 63744 "豈" 55291 "ᄑᄐ" 55290 "ᄑᄉ" 55289 "ᄌᄌ" 55288 "ᄌᄇᄇ" 55287 "ᄌᄇ" 55286 "ᅌᄒ" 55285 "ᅌᄆ" 55284 "ᅀᄇᄋ" 55283 "ᅀᄇ" 55282 "ᄅᄒ" 55281 "ᄉᄐ" 55280 "ᄉᄎ" 55279 "ᄉᄌ" 55278 "ᄉᅀ" 55277 "ᄉᄉᄃ" 55276 "ᄉᄉᄀ" 55275 "ᄉᄇᄋ" 55274 "ᄉᄆ" 55273 "ᄇᄎ" 55272 "ᄇᄌ" 55271 "ᄇᄉᄃ" 55270 "ᄇᄇ" 55269 "ᄇᄆ" 55268 "ᄇᄅᄑ" 55267 "ᄇᄃ" 55266 "ᄆᄌ" 55265 "ᄆᄇᄉ" 55264 "ᄆᄆ" 55263 "ᄆᄂᄂ" 55262 "ᄆᄂ" 55261 "ᄅᄋ" 55260 "ᄅᅙᄒ" 55259 "ᄅᅌ" 55258 "ᄅᄇᄑ" 55257 "ᄅᄇᄃ" 55256 "ᄅᄆᄒ" 55255 "ᄅᄅᄏ" 55254 "ᄅᄀᄒ" 55253 "ᄅᄀᄀ" 55252 "ᄃᄐ" 55251 "ᄃᄎ" 55250 "ᄃᄌ" 55249 "ᄃᄉᄀ" 55248 "ᄃᄉ" 55247 "ᄃᄇ" 55246 "ᄃᄃᄇ" 55245 "ᄃᄃ" 55244 "ᄂᄎ" 55243 "ᄂᄅ" 55238 "ᆞᅥᅵ" 55237 "ᆞᅡ" 55236 "ᅵᅵ" 55235 "ᅵᅲ" 55234 "ᅵᅭ" 55233 "ᅵᅩᅵ" 55232 "ᅵᅧᅵ" 55231 "ᅵᅧ" 55230 "ᅵᅣᅵ" 55229 "ᅵᅣᅩ" 55228 "ᅳᅩ" 55227 "ᅳᅥᅵ" 55226 "ᅳᅥ" 55225 "ᅳᅡ" 55224 "ᅲᅩ" 55223 "ᅲᅡᅵ" 55222 "ᅮᅵᅵ" 55221 "ᅮᅧ" 55220 "ᅭᅥ" 55219 "ᅭᅡᅵ" 55218 "ᅭᅡ" 55217 "ᅩᅩᅵ" 55216 "ᅩᅧ" 43606 "ꨣ" 43603 "ꨁ" 43462 "꧐" 43388 "ᅙᅙ" 43387 "ᄒᄉ" 43386 "ᄑᄒ" 43385 "ᄐᄐ" 43384 "ᄌᄌᄒ" 43383 "ᄋᄒ" 43382 "ᄋᄅ" 43381 "ᄉᄉᄇ" 43380 "ᄇᄒ" 43379 "ᄇᄏ" 43378 "ᄇᄉᄐ" 43377 "ᄆᄉ" 43376 "ᄆᄃ" 43375 "ᄆᄀ" 43374 "ᄅᄏ" 43373 "ᄅᄌ" 43372 "ᄅᄉ" 43371 "ᄅᄇᄋ" 43370 "ᄅᄇᄇ" 43369 "ᄅᄇ" 43368 "ᄅᄆ" 43367 "ᄅᄃᄃ" 43366 "ᄅᄃ" 43365 "ᄅᄀᄀ" 43364 "ᄅᄀ" 43363 "ᄃᄌ" 43362 "ᄃᄉ" 43361 "ᄃᄇ" 43360 "ᄃᄆ" 42892 "'" 42889 ":" 42874 "Ꝺ" 42872 "&" 42871 "tf" 42862 "9" 42859 "ȝ" 42858 "3" 42849 "vy" 42842 "2" 42831 "oo" 42830 "OO" 42813 "ay" 42812 "AY" 42811 "av" 42810 "AV" 42809 "av" 42808 "AV" 42807 "au" 42806 "AU" 42805 "ao" 42804 "AO" 42803 "aa" 42802 "AA" 42801 "s" 42793 "tȝ" 42792 "T3" 42774 "˪" 42772 "˫" 42622 "ˇ" 42564 "2" 42510 "." 42239 "=" 42238 "-." 42237 ":" 42235 "." 42234 ".." 42232 "." 42227 "0" 42226 "1" 42178 "ꎵ" 42176 "ꎫ" 42175 "ꉙ" 42174 "ꊱ" 42170 "ꎿ" 42160 "ꏂ" 42156 "ꁐ" 42152 "ꄲ" 42151 "ꑘ" 42142 "ꁊ" 42140 "ꃀ" 42132 "ꋍ" 40899 "䀹" 40658 "黑" 40515 "鹂" 38584 "隷" 37806 "鎭" 37086 "郎" 36647 "軿" 36507 "躗" 36346 "跥" 36230 "赿" 35939 "豜" 35727 "讆" 35453 "訮" 35358 "䚶" 34369 "蘷" 34111 "蒍" 33191 "朣" 33089 "胼" 33063 "朘" 33025 "朓" 33014 "㬵" 32976 "朏" 32970 "朐" 32934 "朌" 32118 "絕" 30799 "研" 28505 "溈" 27175 "榝" 27113 "㮣" 26623 "杮" 26406 "䑃" 26358 "㫚" 26217 "晚" 26211 "䀿" 25609 "㩁" 25144 "戶" 24144 "㬺" 24114 "帡" 23296 "媯" 22783 "墫" 22635 "塡" 21855 "啓" 20540 "値" 20482 "併" 20031 "/" 20022 "\\" 19968 "ー" 17440 "㬻" 17307 "㖈" 14771 "㘽" 13310 "31日" 13309 "30日" 13308 "29日" 13307 "28日" 13306 "27日" 13305 "26日" 13304 "25日" 13303 "24日" 13302 "23日" 13301 "22日" 13300 "21日" 13299 "20日" 13298 "19日" 13297 "18日" 13296 "17日" 13295 "16日" 13294 "15日" 13293 "14日" 13292 "13日" 13291 "12日" 13290 "11日" 13289 "10日" 13288 "9日" 13287 "8日" 13286 "7日" 13285 "6日" 13284 "5日" 13283 "4日" 13282 "3日" 13281 "2日" 13280 "1日" 13168 "24点" 13167 "23点" 13166 "22点" 13165 "21点" 13164 "20点" 13163 "19点" 13162 "18点" 13161 "17点" 13160 "16点" 13159 "15点" 13158 "14点" 13157 "13点" 13156 "12点" 13155 "11点" 13154 "10点" 13153 "9点" 13152 "8点" 13151 "7点" 13150 "6点" 13149 "5点" 13148 "4点" 13147 "3点" 13146 "2点" 13145 "1点" 13144 "0点" 13003 "12月" 13002 "11月" 13001 "10月" 13000 "9月" 12999 "8月" 12998 "7月" 12997 "6月" 12996 "5月" 12995 "4月" 12994 "3月" 12993 "2月" 12992 "1月" 12867 "(至)" 12866 "(自)" 12865 "(休)" 12864 "(祭)" 12863 "(協)" 12862 "(資)" 12861 "(企)" 12860 "(監)" 12859 "(学)" 12858 "(呼)" 12857 "(代)" 12856 "(労)" 12855 "(祝)" 12854 "(財)" 12853 "(特)" 12852 "(名)" 12851 "(社)" 12850 "(有)" 12849 "(株)" 12848 "(日)" 12847 "(土)" 12846 "(金)" 12845 "(木)" 12844 "(水)" 12843 "(火)" 12842 "(月)" 12841 "(十)" 12840 "(九)" 12839 "(八)" 12838 "(七)" 12837 "(六)" 12836 "(五)" 12835 "(四)" 12834 "(三)" 12833 "(二)" 12832 "(ー)" 12830 "(오후)" 12829 "(오전)" 12828 "(주)" 12827 "(하)" 12826 "(파)" 12825 "(타)" 12824 "(카)" 12823 "(차)" 12822 "(자)" 12821 "(아)" 12820 "(사)" 12819 "(바)" 12818 "(마)" 12817 "(라)" 12816 "(다)" 12815 "(나)" 12814 "(가)" 12813 "(ᄒ)" 12812 "(ᄑ)" 12811 "(ᄐ)" 12810 "(ᄏ)" 12809 "(ᄎ)" 12808 "(ᄌ)" 12807 "(ᄋ)" 12806 "(ᄉ)" 12805 "(ᄇ)" 12804 "(ᄆ)" 12803 "(ᄅ)" 12802 "(ᄃ)" 12801 "(ᄂ)" 12800 "(ᄀ)" 12768 "乙" 12767 "乚" 12762 "亅" 12758 "乛" 12756 "\\" 12755 "/" 12753 "丨" 12752 "ー" 12686 "ᆞᅵ" 12685 "ᆞ" 12684 "ᅲᅵ" 12683 "ᅲᅧᅵ" 12682 "ᅲᅧ" 12681 "ᅭᅵ" 12680 "ᅭᅣᅵ" 12679 "ᅭᅣ" 12678 "ᅙ" 12677 "ᄒᄒ" 12676 "ᄑᄋ" 12675 "ᄋᅀ" 12674 "ᄋᄉ" 12673 "ᅌ" 12672 "ᄋᄋ" 12671 "ᅀ" 12670 "ᄉᄌ" 12669 "ᄉᄇ" 12668 "ᄉᄃ" 12667 "ᄉᄂ" 12666 "ᄉᄀ" 12665 "ᄇᄇᄋ" 12664 "ᄇᄋ" 12663 "ᄇᄐ" 12662 "ᄇᄌ" 12661 "ᄇᄉᄃ" 12660 "ᄇᄉᄀ" 12659 "ᄇᄃ" 12658 "ᄇᄀ" 12657 "ᄆᄋ" 12656 "ᄆᅀ" 12655 "ᄆᄉ" 12654 "ᄆᄇ" 12653 "ᄅᅙ" 12652 "ᄅᅀ" 12651 "ᄅᄇᄉ" 12650 "ᄅᄃ" 12649 "ᄅᄀᄉ" 12648 "ᄂᅀ" 12647 "ᄂᄉ" 12646 "ᄂᄃ" 12645 "ᄂᄂ" 12644 "ᅠ" 12643 "ᅵ" 12642 "ᅳᅵ" 12641 "ー" 12640 "ᅲ" 12639 "ᅮᅵ" 12638 "ᅮᅥᅵ" 12637 "ᅮᅥ" 12636 "ᅮ" 12635 "ᅭ" 12634 "ᅩᅵ" 12633 "ᅩᅡᅵ" 12632 "ᅩᅡ" 12631 "ᅩ" 12630 "ᅧᅵ" 12629 "ᅧ" 12628 "ᅥᅵ" 12627 "ᅥ" 12626 "ᅣᅵ" 12625 "ᅣ" 12624 "ᅡᅵ" 12623 "ᅡ" 12622 "ᄒ" 12621 "ᄑ" 12620 "ᄐ" 12619 "ᄏ" 12618 "ᄎ" 12617 "ᄌᄌ" 12616 "ᄌ" 12615 "ᄋ" 12614 "ᄉᄉ" 12613 "ᄉ" 12612 "ᄇᄉ" 12611 "ᄇᄇ" 12610 "ᄇ" 12609 "ᄆ" 12608 "ᄅᄒ" 12607 "ᄅᄑ" 12606 "ᄅᄐ" 12605 "ᄅᄉ" 12604 "ᄅᄇ" 12603 "ᄅᄆ" 12602 "ᄅᄀ" 12601 "ᄅ" 12600 "ᄃᄃ" 12599 "ᄃ" 12598 "ᄂᄒ" 12597 "ᄂᄌ" 12596 "ᄂ" 12595 "ᄀᄉ" 12594 "ᄀᄀ" 12593 "ᄀ" 12539 "·" 12444 "゚" 12443 "゙" 12442 "̊" 12346 "卅" 12345 "卄" 12344 "十" 12342 "〒" 12339 "/" 12333 "̥" 12332 "̉" 12315 "⟧" 12309 ")" 12308 "(" 12297 "❭" 12296 "❬" 12295 "0" 12291 "''" 12290 "˳" 12245 "龠" 12244 "龜" 12243 "龍" 12242 "齒" 12241 "齊" 12240 "鼻" 12239 "鼠" 12238 "鼓" 12237 "鼎" 12236 "黽" 12235 "黹" 12234 "黑" 12233 "黍" 12232 "黃" 12231 "麻" 12230 "麥" 12229 "鹿" 12228 "鹵" 12227 "鳥" 12226 "魚" 12225 "鬼" 12224 "鬲" 12223 "鬯" 12222 "鬥" 12221 "髟" 12220 "高" 12219 "骨" 12218 "馬" 12217 "香" 12216 "首" 12215 "食" 12214 "飛" 12213 "風" 12212 "頁" 12211 "音" 12210 "韭" 12209 "韋" 12208 "革" 12207 "面" 12206 "非" 12205 "靑" 12204 "雨" 12203 "隹" 12202 "隶" 12201 "阜" 12200 "門" 12199 "長" 12198 "金" 12197 "里" 12196 "釆" 12195 "酉" 12194 "邑" 12193 "辵" 12192 "辰" 12191 "辛" 12190 "車" 12189 "身" 12188 "足" 12187 "走" 12186 "赤" 12185 "貝" 12184 "豸" 12183 "豕" 12182 "豆" 12181 "谷" 12180 "言" 12179 "角" 12178 "見" 12177 "襾" 12176 "衣" 12175 "行" 12174 "血" 12173 "虫" 12172 "虍" 12171 "艸" 12170 "色" 12169 "艮" 12168 "舟" 12167 "舛" 12166 "舌" 12165 "臼" 12164 "至" 12163 "自" 12162 "臣" 12161 "肉" 12160 "聿" 12159 "耳" 12158 "耒" 12157 "而" 12156 "老" 12155 "羽" 12154 "羊" 12153 "网" 12152 "缶" 12151 "糸" 12150 "米" 12149 "竹" 12148 "立" 12147 "穴" 12146 "禾" 12145 "禸" 12144 "示" 12143 "石" 12142 "矢" 12141 "矛" 12140 "目" 12139 "皿" 12138 "皮" 12137 "白" 12136 "癶" 12135 "疒" 12134 "疋" 12133 "田" 12132 "用" 12131 "生" 12130 "甘" 12129 "瓦" 12128 "瓜" 12127 "玉" 12126 "玄" 12125 "犬" 12124 "牛" 12123 "牙" 12122 "片" 12121 "爿" 12120 "爻" 12119 "父" 12118 "爪" 12117 "火" 12116 "水" 12115 "气" 12114 "氏" 12113 "毛" 12112 "比" 12111 "毋" 12110 "殳" 12109 "歹" 12108 "止" 12107 "欠" 12106 "木" 12105 "月" 12104 "曰" 12103 "日" 12102 "无" 12101 "方" 12100 "斤" 12099 "斗" 12098 "文" 12097 "攴" 12096 "支" 12095 "手" 12094 "戶" 12093 "戈" 12092 "心" 12091 "彳" 12090 "彡" 12089 "彐" 12088 "弓" 12087 "弋" 12086 "廾" 12085 "廴" 12084 "广" 12083 "幺" 12082 "干" 12081 "巾" 12080 "己" 12079 "工" 12078 "巛" 12077 "山" 12076 "屮" 12075 "尸" 12074 "尢" 12073 "小" 12072 "寸" 12071 "宀" 12070 "子" 12069 "女" 12068 "大" 12067 "夕" 12066 "夊" 12065 "夂" 12064 "士" 12063 "土" 12062 "囗" 12061 "口" 12060 "又" 12059 "厶" 12058 "厂" 12057 "卩" 12056 "卜" 12055 "十" 12054 "匸" 12053 "匚" 12052 "匕" 12051 "勹" 12050 "力" 12049 "刀" 12048 "凵" 12047 "几" 12046 "冫" 12045 "冖" 12044 "冂" 12043 "八" 12042 "入" 12041 "儿" 12040 "人" 12039 "亠" 12038 "二" 12037 "亅" 12036 "乙" 12035 "/" 12034 "\\" 12033 "丨" 12032 "ー" 12019 "龟" 12018 "亀" 12016 "龙" 12015 "竜" 12014 "齿" 12013 "歯" 12012 "齐" 12011 "斉" 12009 "黄" 12008 "麦" 12005 "鱼" 12004 "鬼" 12002 "马" 12000 "饣" 11999 "飠" 11997 "食" 11996 "飞" 11995 "风" 11994 "页" 11993 "韦" 11992 "青" 11990 "阝" 11988 "门" 11987 "长" 11986 "镸" 11985 "長" 11984 "钅" 11983 "阝" 11981 "辶" 11980 "辶" 11979 "车" 11977 "贝" 11976 "讠" 11973 "见" 11972 "西" 11971 "覀" 11970 "衤" 11969 "虎" 11968 "艹" 11967 "艹" 11966 "艹" 11962 "肀" 11961 "耂" 11954 "罒" 11953 "罓" 11951 "糹" 11949 "礻" 11947 "罒" 11944 "犭" 11942 "丬" 11940 "爫" 11939 "灬" 11938 "氺" 11937 "氵" 11936 "民" 11935 "母" 11934 "歺" 11931 "旡" 11929 "攵" 11928 "扌" 11927 "㣺" 11926 "忄" 11924 "彑" 11923 "幺" 11922 "巳" 11920 "尢" 11919 "尣" 11918 "兀" 11915 "㔾" 11913 "刂" 11909 "亻" 11907 "乚" 11824 "˳" 11604 "0" 11599 "1" 11513 "\\\\" 11497 "☧" 11484 "Ϭ" 11474 "6" 11468 "3" 11466 "9" 11462 "/" 11450 "-" 11423 "٥" 11422 "0" 11410 "1" 11369 "K̩" 11367 "H̩" 11005 "//" 11003 "///" 10870 "===" 10869 "==" 10868 "::=" 10815 "∐" 10814 "⨟" 10813 "⌙" 10800 "ẋ" 10799 "x" 10785 "↾" 10784 "≫" 10781 "⋈" 10764 "ʃʃʃʃ" 10758 "⊔" 10757 "⊓" 10756 "⊎" 10755 "⊍" 10754 "⊗" 10753 "⊕" 10752 "⊙" 10745 "\\" 10744 "/" 10742 "/̄" 10741 "\\" 10713 "⦚" 10692 "〼" 10686 "◎" 10540 "x" 10539 "x" 10217 "❭" 10216 "❬" 10201 "T" 10178 "ꓕ" 10101 "}" 10100 "{" 10099 ")" 10098 "(" 10095 ">" 10094 "<" 10089 ")" 10088 "(" 9900 "॰" 9826 "⋄" 9793 "⊕" 9784 "⎈" 9776 "Ⲷ" 9744 "□" 9737 "⊙" 9702 "°" 9696 "⌒" 9675 "°" 9674 "⋄" 9671 "⋄" 9658 "▶" 9656 "▶" 9655 "⊲" 9649 "⏥" 9632 "∎" 9629 "▘" 9623 "▖" 9620 "ˉ" 9616 "▌" 9608 "∎" 9587 "x" 9585 "/" 9507 "├" 9487 "┌" 9475 "│" 9473 "ー" 9472 "ー" 9435 "Ⓘ" 9413 "℗" 9397 "(z)" 9396 "(y)" 9395 "(x)" 9394 "(vv)" 9393 "(v)" 9392 "(u)" 9391 "(t)" 9390 "(s)" 9389 "(r)" 9388 "(q)" 9387 "(p)" 9386 "(o)" 9385 "(n)" 9384 "(rn)" 9383 "(I)" 9382 "(k)" 9381 "(j)" 9380 "(i)" 9379 "(h)" 9378 "(g)" 9377 "(f)" 9376 "(e)" 9375 "(d)" 9374 "(c)" 9373 "(b)" 9372 "(a)" 9371 "2O." 9370 "l9." 9369 "l8." 9368 "l7." 9367 "l6." 9366 "l5." 9365 "l4." 9364 "l3." 9363 "l2." 9362 "ll." 9361 "lO." 9360 "9." 9359 "8." 9358 "7." 9357 "6." 9356 "5." 9355 "4." 9354 "3." 9353 "2." 9352 "l." 9351 "(2O)" 9350 "(l9)" 9349 "(l8)" 9348 "(l7)" 9347 "(l6)" 9346 "(l5)" 9345 "(l4)" 9344 "(l3)" 9343 "(l2)" 9342 "(ll)" 9341 "(lO)" 9340 "(9)" 9339 "(8)" 9338 "(7)" 9337 "(6)" 9336 "(5)" 9335 "(4)" 9334 "(3)" 9333 "(2)" 9332 "(I)" 9321 "➉" 9320 "➈" 9319 "➇" 9318 "➆" 9317 "➅" 9316 "➄" 9315 "➃" 9314 "➂" 9313 "➁" 9312 "➀" 9290 "\\\\" 9134 "丨" 9130 "丨" 9125 "丨" 9122 "丨" 9119 "丨" 9116 "丨" 9082 "a" 9077 "ω" 9076 "p" 9075 "i" 9068 "O̵" 9002 "❭" 9001 "❬" 8997 "⌤" 8967 "︴" 8960 "∅" 8959 "E" 8948 "ɛ" 8943 "···" 8942 "⁝" 8901 "·" 8899 "∪" 8898 "ꓵ" 8897 "v" 8896 "∧" 8869 "ꓕ" 8861 "O̵" 8854 "O̵" 8803 "≡" 8764 "~" 8758 ":" 8752 "∮∮∮" 8751 "∮∮" 8749 "ʃʃʃ" 8748 "ʃʃ" 8747 "ʃ" 8745 "ꓵ" 8744 "v" 8741 "ll" 8739 "l" 8729 "·" 8728 "°" 8727 "*" 8726 "\\" 8725 "/" 8722 "-" 8721 "Ʃ" 8719 "Π" 8710 "ᐃ" 8707 "Ǝ" 8704 "ꓯ" 8629 "↲" 8580 "ɔ" 8579 "Ɔ" 8575 "rn" 8574 "d" 8573 "c" 8572 "l" 8571 "xii" 8570 "xi" 8569 "x" 8568 "ix" 8567 "viii" 8566 "vii" 8565 "vi" 8564 "v" 8563 "iv" 8562 "iii" 8561 "ii" 8560 "i" 8559 "M" 8558 "D" 8557 "C" 8556 "L" 8555 "XII" 8554 "XI" 8553 "X" 8552 "IX" 8551 "VIII" 8550 "VII" 8549 "VI" 8548 "V" 8547 "IV" 8546 "lll" 8545 "ll" 8544 "l" 8521 "j" 8520 "i" 8519 "e" 8518 "d" 8517 "D" 8514 "ꓶ" 8513 "ꓨ" 8512 "Ʃ" 8511 "Π" 8510 "ᒥ" 8509 "y" 8508 "n" 8507 "FAX" 8505 "i" 8504 "ד" 8503 "ג" 8502 "ב" 8501 "א" 8500 "o" 8499 "M" 8497 "F" 8496 "E" 8495 "e" 8494 "e" 8493 "C" 8492 "B" 8490 "K" 8489 "ɿ" 8488 "Z" 8487 "Ʊ" 8486 "Ω" 8484 "Z" 8481 "TEL" 8477 "R" 8476 "R" 8475 "R" 8474 "Q" 8473 "P" 8470 "No" 8469 "N" 8467 "l" 8466 "L" 8465 "l" 8464 "l" 8463 "h̵" 8462 "h" 8461 "H" 8460 "H" 8459 "H" 8458 "g" 8457 "°F" 8456 "Э" 8455 "Ɛ" 8454 "º/₀₀" 8453 "º/₀₀" 8451 "°C" 8450 "C" 8449 "º/₀₀" 8448 "º/₀₀" 8364 "Ɛ" 8363 "ḏ̵" 8361 "W̵" 8360 "Rs" 8356 "£" 8304 "º" 8287 " " 8282 ":" 8279 "''''" 8275 "~" 8274 "º/₀₀" 8270 "*" 8265 "!?" 8264 "?!" 8263 "??" 8260 "/" 8259 "-" 8257 "/" 8254 "ˉ" 8252 "!!" 8250 ">" 8249 "<" 8247 "'''" 8246 "''" 8245 "'" 8244 "'''" 8243 "''" 8242 "'" 8241 "º/₀₀₀" 8240 "º/₀₀" 8239 " " 8233 " " 8232 " " 8231 "·" 8230 "..." 8229 ".." 8228 "." 8226 "·" 8223 "''" 8221 "''" 8220 "''" 8219 "'" 8218 "," 8217 "'" 8216 "'" 8214 "ll" 8213 "ー" 8212 "ー" 8211 "-" 8210 "-" 8209 "-" 8208 "-" 8202 " " 8201 " " 8200 " " 8199 " " 8198 " " 8197 " " 8196 " " 8195 " " 8194 " " 8193 " " 8192 " " 8190 "'" 8189 "'" 8175 "'" 8128 "~" 8127 "'" 8126 "ι" 8125 "'" 8061 "ῴ" 7935 "y" 7837 "f" 7834 "ả" 7586 "ᵍ" 7583 "ᵋ" 7564 "y" 7555 "g" 7506 "º" 7467 "л" 7464 "π" 7460 "ƨ" 7458 "z" 7457 "vv" 7456 "v" 7452 "u" 7451 "t" 7444 "ǝo" 7441 "o" 7440 "ɔ" 7439 "o" 7435 "k" 7432 "ɜ" 7428 "c" 7004 "᭐" 7000 "ᬨ" 6995 "ᬑ" 6994 "ᬍ" 6800 "ᩅ" 6784 "ᩅ" 6609 "ᦱ" 6608 "ᦞ" 6294 "ᡜ" 6229 "ᠵ" 6158 " " 6153 ":" 6147 ":" 6099 "̊" 6086 "̊" 6051 "អ" 5941 "/" 5760 " " 5750 "ᖖᒑ" 5749 "ᖖᒐ" 5748 "ᖖᒎ" 5747 "ᖖᒍ" 5746 "ᖖᒌ" 5745 "ᖖᒋ" 5744 "ᖕᒉ" 5743 "ᕐᑫ" 5742 "ᕁ" 5741 "𝐗" 5685 "ᘯ" 5684 "ᘮ" 5668 "ᕊ" 5667 "ᕆ" 5666 "ᕃ" 5639 "ᓚ" 5636 "ᓓ" 5635 "ᒉ" 5634 "ᒐ" 5610 "ᗞ" 5524 "ᖕᒑ" 5523 "ᖕᒐ" 5522 "ᖕᒎ" 5521 "ᖕᒍ" 5520 "ᖕᒌ" 5519 "ᖕᒋ" 5518 "ᖕᒊ" 5509 "ᕐᒃ" 5508 "ᕐᑳ" 5507 "ᕐᑲ" 5506 "ᕐᑰ" 5505 "ᕐᑯ" 5504 "ᕐᑮ" 5503 "ᕐᑭ" 5502 "ᕐᑬ" 5501 "ᕁ" 5481 "ᕧ·" 5480 "·ᕧ" 5468 "ᕚ·" 5467 "·ᕚ" 5455 "ᕌ·" 5454 "·ᕌ" 5440 "ᐩ" 5436 "ᔮ·" 5435 "·ᔮ" 5434 "ᔭ·" 5433 "·ᔭ" 5432 "ᔫ·" 5431 "·ᔫ" 5430 "ᔪ·" 5429 "·ᔪ" 5428 "ᔩ·" 5427 "·ᔩ" 5426 "ᔨ·" 5425 "·ᔨ" 5424 "4·" 5423 "·4" 5412 "ᔖ·" 5411 "·ᔖ" 5410 "ᔕ·" 5409 "·ᔕ" 5408 "ᔔ·" 5407 "·ᔔ" 5406 "ᔓ·" 5405 "·ᔓ" 5404 "ᔒ·" 5403 "·ᔒ" 5402 "ᔑ·" 5401 "·ᔑ" 5400 "ᔐ·" 5399 "·ᔐ" 5391 "ᔋᒐ" 5390 "ᔋᑲ" 5389 "ᔋᑕ" 5388 "ᔋᐸ" 5379 "ᓵ·" 5378 "·ᓵ" 5377 "ᓴ·" 5376 "·ᓴ" 5375 "ᓲ·" 5374 "·ᓲ" 5373 "ᓱ·" 5372 "·ᓱ" 5371 "ᓰ·" 5370 "·ᓰ" 5369 "ᓯ·" 5368 "·ᓯ" 5367 "ᓭ·" 5366 "·ᓭ" 5353 "ᓛ·" 5352 "·ᓛ" 5351 "ᓚ·" 5350 "·ᓚ" 5349 "ᓘ·" 5348 "·ᓘ" 5347 "ᓗ·" 5346 "·ᓗ" 5345 "ᓖ·" 5344 "·ᓖ" 5343 "ᓕ·" 5342 "·ᓕ" 5341 "ᓓ·" 5340 "·ᓓ" 5329 "ᐡ" 5326 "ᓈᒫ" 5325 "·ᓈ" 5324 "ᓇ·" 5323 "·ᓇ" 5322 "ᓀ·" 5321 "·ᓀ" 5311 "2" 5305 "ᒫ·" 5304 "·ᒫ" 5303 "1ᐧ" 5302 "·ᒪ" 5301 "ᒨ·" 5300 "·ᒨ" 5299 "ᒧ·" 5298 "·ᒧ" 5297 "ᒦ·" 5296 "·ᒦ" 5295 "ᒥ·" 5294 "·ᒥ" 5293 "ᒣ·" 5292 "·ᒣ" 5279 "ᒑ·" 5278 "·ᒑ" 5277 "ᒐ·" 5276 "·ᒐ" 5275 "ᒎ·" 5274 "·ᒎ" 5273 "ᒍᐧ" 5272 "ᐧᒍ" 5271 "ᒌ·" 5270 "·ᒌ" 5269 "ᒋ·" 5268 "·ᒋ" 5267 "ᒉ·" 5266 "·ᒉ" 5256 "ᑲᑊ" 5255 "ᑯᑊ" 5254 "ᑭᑊ" 5253 "ᑫᑊ" 5249 "ᑳ·" 5248 "·ᑳ" 5247 "ᑲ·" 5246 "·ᑲ" 5245 "ᑰ·" 5244 "·ᑰ" 5243 "ᑯᐧ" 5242 "ᐧᑯ" 5241 "ᑮ·" 5240 "·ᑮ" 5239 "ᑭᐧ" 5238 "ᐧᑭ" 5237 "ᑫ·" 5236 "·ᑫ" 5226 "ᑕᑊ" 5225 "ᑐᑊ" 5224 "ᑎᑊ" 5223 "ᑌᑊ" 5220 "ᑖ·" 5219 "·ᑖ" 5218 "ᑕ·" 5217 "·ᑕ" 5216 "ᑑ·" 5215 "·ᑑ" 5214 "ᑐ·" 5213 "·ᑐ" 5212 "ᑏ·" 5211 "·ᑏ" 5210 "ᑎ·" 5209 "·ᑎ" 5208 "ᑌ·" 5207 "·ᑌ" 5204 "·ᑐ" 5191 "ᐹ·" 5190 "·ᐹ" 5189 "ᐸ·" 5188 "·ᐸ" 5187 "ᐴ·" 5186 "·ᐴ" 5185 "ᐳ·" 5184 "·ᐳ" 5175 "·ᐳ" 5159 "·" 5146 "ᐋ·" 5145 "·ᐋ" 5144 "ᐊ·" 5143 "·ᐊ" 5141 "ᐆ·" 5140 "·ᐆ" 5139 "ᐅ·" 5138 "·ᐅ" 5137 "ᐄ·" 5136 "·ᐄ" 5135 "ᐃ·" 5134 "·ᐃ" 5133 "ᐁ·" 5132 "·ᐁ" 5107 "Ꮐ" 5095 "Ꭻ" 5082 "Ꮥ" 5076 "Ꮃ" 5074 "Ꭱ" 5070 "4" 5053 "Ꭹ" 4607 "ᄂᄂ" 4606 "ᄀᄒ" 4605 "ᄀᄏ" 4604 "ᄀᄎ" 4603 "ᄀᄇ" 4602 "ᄀᄂ" 4601 "ᅙ" 4600 "ᄒᄇ" 4599 "ᄒᄆ" 4598 "ᄒᄅ" 4597 "ᄒᄂ" 4596 "ᄑᄋ" 4595 "ᄑᄇ" 4594 "ᄋᅀ" 4593 "ᄋᄉ" 4592 "ᅌ" 4591 "ᄋᄏ" 4590 "ᄋᄋ" 4589 "ᄋᄀᄀ" 4588 "ᄋᄀ" 4587 "ᅀ" 4586 "ᄉᄇ" 4585 "ᄉᄅ" 4584 "ᄉᄃ" 4583 "ᄉᄀ" 4582 "ᄇᄋ" 4581 "ᄇᄒ" 4580 "ᄇᄑ" 4579 "ᄇᄅ" 4578 "ᄆᄋ" 4577 "ᄆᄒ" 4576 "ᄆᄎ" 4575 "ᄆᅀ" 4574 "ᄆᄉᄉ" 4573 "ᄆᄉ" 4572 "ᄆᄇ" 4571 "ᄆᄅ" 4570 "ᄆᄀ" 4569 "ᄅᅙ" 4568 "ᄅᄏ" 4567 "ᄅᅀ" 4566 "ᄅᄉᄉ" 4565 "ᄅᄇᄋ" 4564 "ᄅᄇᄒ" 4563 "ᄅᄇᄉ" 4562 "ᄅᄆᄉ" 4561 "ᄅᄆᄀ" 4560 "ᄅᄅ" 4559 "ᄅᄃᄒ" 4558 "ᄅᄃ" 4557 "ᄅᄂ" 4556 "ᄅᄀᄉ" 4555 "ᄃᄅ" 4554 "ᄃᄀ" 4553 "ᄂᄐ" 4552 "ᄂᅀ" 4551 "ᄂᄉ" 4550 "ᄂᄃ" 4549 "ᄂᄀ" 4548 "ᄀᄉᄀ" 4547 "ᄀᄅ" 4546 "ᄒ" 4545 "ᄑ" 4544 "ᄐ" 4543 "ᄏ" 4542 "ᄎ" 4541 "ᄌ" 4540 "ᄋ" 4539 "ᄉᄉ" 4538 "ᄉ" 4537 "ᄇᄉ" 4536 "ᄇ" 4535 "ᄆ" 4534 "ᄅᄒ" 4533 "ᄅᄑ" 4532 "ᄅᄐ" 4531 "ᄅᄉ" 4530 "ᄅᄇ" 4529 "ᄅᄆ" 4528 "ᄅᄀ" 4527 "ᄅ" 4526 "ᄃ" 4525 "ᄂᄒ" 4524 "ᄂᄌ" 4523 "ᄂ" 4522 "ᄀᄉ" 4521 "ᄀᄀ" 4520 "ᄀ" 4519 "ᅩᅣᅵ" 4518 "ᅩᅣ" 4517 "ᅧᅣ" 4516 "ᅣᅮ" 4515 "ᅡᅳ" 4514 "ᆞᆞ" 4513 "ᆞᅵ" 4512 "ᆞᅮ" 4511 "ᆞᅥ" 4509 "ᅵᆞ" 4508 "ᅵᅳ" 4507 "ᅵᅮ" 4506 "ᅵᅩ" 4505 "ᅵᅣ" 4504 "ᅵᅡ" 4503 "ᅳᅵᅮ" 4502 "ーー" 4501 "ᅳᅮ" 4500 "ᅲᅵ" 4499 "ᅲᅮ" 4498 "ᅲᅧᅵ" 4497 "ᅲᅧ" 4496 "ᅲᅥᅵ" 4495 "ᅲᅥ" 4494 "ᅲᅡ" 4493 "ᅮᅮ" 4492 "ᅮᅧᅵ" 4491 "ᅮᅥᅳ" 4490 "ᅮᅡᅵ" 4489 "ᅮᅡ" 4488 "ᅭᅵ" 4487 "ᅭᅩ" 4486 "ᅭᅣ" 4485 "ᅭᅣᅵ" 4484 "ᅭᅣ" 4483 "ᅩᅮ" 4482 "ᅩᅩ" 4481 "ᅩᅧᅵ" 4480 "ᅩᅥᅵ" 4479 "ᅩᅥ" 4478 "ᅧᅮ" 4477 "ᅧᅩ" 4476 "ᅥᅳ" 4475 "ᅥᅮ" 4474 "ᅥᅩ" 4473 "ᅣᅭ" 4472 "ᅣᅩ" 4471 "ᅡᅮ" 4470 "ᅡᅩ" 4468 "ᅳᅵ" 4467 "ー" 4465 "ᅮᅵ" 4464 "ᅮᅥᅵ" 4463 "ᅮᅥ" 4460 "ᅩᅵ" 4459 "ᅩᅡᅵ" 4458 "ᅩᅡ" 4456 "ᅧᅵ" 4454 "ᅥᅵ" 4452 "ᅣᅵ" 4450 "ᅡᅵ" 4446 "ᄃᄅ" 4445 "ᄂᄒ" 4444 "ᄂᄌ" 4443 "ᄂᄉ" 4442 "ᄀᄃ" 4440 "ᄒᄒ" 4439 "ᄑᄋ" 4438 "ᄑᄇ" 4435 "ᄎᄒ" 4434 "ᄎᄏ" 4433 "ᅐᅐ" 4431 "ᅎᅎ" 4429 "ᄌᄋ" 4427 "ᄋᄑ" 4426 "ᄋᄐ" 4425 "ᄋᄎ" 4424 "ᄋᄌ" 4423 "ᄋᄋ" 4422 "ᄋᅀ" 4421 "ᄋᄉ" 4420 "ᄋᄇ" 4419 "ᄋᄆ" 4418 "ᄋᄃ" 4417 "ᄋᄀ" 4415 "ᄾᄾ" 4413 "ᄼᄼ" 4411 "ᄅᄒ" 4410 "ᄉᄑ" 4409 "ᄉᄐ" 4408 "ᄉᄏ" 4407 "ᄉᄎ" 4406 "ᄉᄌ" 4405 "ᄉᄋ" 4404 "ᄉᄉᄉ" 4403 "ᄉᄇᄀ" 4402 "ᄉᄇ" 4401 "ᄉᄆ" 4400 "ᄉᄅ" 4399 "ᄉᄃ" 4398 "ᄉᄂ" 4397 "ᄉᄀ" 4396 "ᄇᄇᄋ" 4395 "ᄇᄋ" 4394 "ᄇᄑ" 4393 "ᄇᄐ" 4392 "ᄇᄎ" 4391 "ᄇᄌ" 4390 "ᄇᄉᄌ" 4389 "ᄇᄉᄉ" 4388 "ᄇᄉᄇ" 4387 "ᄇᄉᄃ" 4386 "ᄇᄉᄀ" 4385 "ᄇᄉ" 4384 "ᄇᄃ" 4383 "ᄇᄂ" 4382 "ᄇᄀ" 4381 "ᄆᄋ" 4380 "ᄆᄇ" 4379 "ᄅᄋ" 4378 "ᄅᄒ" 4377 "ᄅᄅ" 4376 "ᄅᄂ" 4375 "ᄃᄀ" 4374 "ᄂᄇ" 4373 "ᄂᄃ" 4372 "ᄂᄂ" 4371 "ᄂᄀ" 4365 "ᄌᄌ" 4362 "ᄉᄉ" 4360 "ᄇᄇ" 4356 "ᄃᄃ" 4353 "ᄀᄀ" 4197 "၁" 4160 "٥" 4150 "̊" 4125 "٥" 3961 "ླཱྀ" 3959 "ྲཱྀ" 3946 "ར" 3852 "་" 3805 "ຫມ" 3804 "ຫນ" 3792 "٥" 3789 "̊" 3763 "̊າ" 3664 "٥" 3661 "̊" 3653 "า" 3649 "เเ" 3635 "̊า" 3622 "ภ" 3617 "ฆ" 3607 "ฑ" 3605 "ค" 3604 "ค" 3599 "ฎ" 3595 "ช" 3587 "ข" 3458 "٥" 3439 "ന്" 3438 "വ്" 3435 "ദ്ര" 3434 "ര്" 3430 "٥" 3425 "ഞ" 3400 "െെ" 3395 "ു" 3394 "ു" 3392 "ി" 3377 "ര" 3360 "0" 3353 "നു" 3348 "ഒൗ" 3347 "ഒാ" 3344 "എെ" 3340 "നു" 3338 "ഉൗ" 3336 "ഇൗ" 3330 "٥" 3302 "٥" 3297 "ಌಾ" 3220 "ಒೌ" 3202 "٥" 3174 "٥" 3169 "ఌా" 3168 "ఋా" 3140 "ృా" 3138 "ుా" 3129 "వా" 3127 "వ̣" 3118 "వు" 3117 "బ̣" 3106 "డ̣" 3092 "ఒౌ" 3091 "ఒౕ" 3074 "٥" 3066 "நீ" 3064 "ஷ" 3063 "எவ" 3061 "௳" 3060 "மீ" 3058 "சூ" 3056 "ய" 3054 "அ" 3053 "எ" 3052 "சு" 3051 "ஈு" 3050 "ச" 3048 "உ" 3047 "க" 3046 "٥" 3031 "ள" 3021 "̇" 3020 "ெள" 3019 "ேஈ" 3018 "ெஈ" 3016 "ன" 3006 "ஈ" 2992 "ஈ" 2972 "ஐ" 2954 "உள" 2946 "̊" 2920 "9" 2918 "0" 2876 "̣" 2848 "0" 2822 "ଅା" 2819 "8" 2817 "̆̇" 2790 "٥" 2748 "̣" 2708 "અાૈ" 2707 "અાે" 2705 "અાૅ" 2704 "અૈ" 2703 "અે" 2701 "અૅ" 2694 "અા" 2691 ":" 2690 "̇" 2689 "̆̇" 2666 "8" 2663 "9" 2662 "٥" 2620 "̣" 2580 "ਅੌ" 2576 "ਅੈ" 2575 "ੲੇ" 2570 "ੳੂ" 2569 "ੳੁ" 2568 "ੲੀ" 2567 "ੲਿ" 2566 "ਅਾ" 2562 "̇" 2541 "9" 2538 "8" 2534 "0" 2529 "ঋৃ" 2528 "ঋৃ" 2492 "̣" 2438 "অা" 2433 "̆̇" 2429 "?" 2406 "٥" 2388 "́" 2387 "̀" 2386 "̱" 2364 "̣" 2324 "अाै" 2323 "अाे" 2322 "अाॆ" 2321 "अॉ" 2320 "एे" 2318 "एॆ" 2317 "एॅ" 2312 "र्इ" 2310 "अा" 2308 "अॆ" 2307 ":" 2306 "̇" 2305 "̆̇" 2042 "_" 2037 "'" 2036 "'" 2035 "̈" 2030 "̂" 2029 "̇" 2027 "̄" 1994 "1" 1984 "0" 1955 "ޢ" 1953 "ޠ" 1951 "ޞ" 1946 "ޙ" 1863 "́" 1858 "ܼ" 1857 "̇" 1856 "̇" 1796 ":" 1795 ":" 1794 "." 1793 "." 1785 "٩" 1784 "٨" 1783 "٧" 1779 "٣" 1778 "٢" 1777 "١" 1776 "." 1772 "۟" 1749 "ه" 1748 "." 1744 "ٺ" 1740 "ى" 1731 "ة" 1730 "ۀ" 1729 "ه" 1726 "ه" 1723 "ٹ" 1705 "ك" 1684 "ز" 1668 "ڂ" 1664 "ٿ" 1659 "ٺ" 1656 "ىٴ" 1655 "ۇٴ" 1654 "وٴ" 1653 "اٴ" 1645 "*" 1644 "،" 1643 "," 1642 "⁰/₀₀" 1637 "o" 1632 "." 1615 "̓" 1610 "ى" 1606 "ب" 1582 "ج" 1574 "ىٴ" 1572 "وٴ" 1571 "اٴ" 1562 "ِ" 1561 "̓" 1560 "َ" 1546 "⁰/₀₀" 1545 "⁰/₀₀" 1524 "''" 1523 "'" 1522 "''" 1521 "וי" 1520 "||" 1503 "1" 1497 "'" 1493 "1" 1477 "̣" 1476 "̇" 1475 ":" 1474 "̇" 1473 "̇" 1466 "̇" 1465 "̇" 1460 "̣" 1455 "̊" 1454 "֘" 1453 "֖" 1448 "֙" 1444 "֚" 1437 "́" 1436 "́" 1417 ":" 1415 "եւ" 1404 "ո" 1382 "գ" 1373 "'" 1370 "'" 1365 "0" 1349 "3" 1297 "є" 1296 "Є" 1257 "о̵" 1256 "О̵" 1248 "3" 1237 "ае" 1231 "і" 1230 "м̡" 1229 "М̡" 1228 "ҷ" 1227 "Ҷ" 1226 "н̡" 1225 "Н̡" 1224 "н̡" 1223 "Н̡" 1222 "л̦" 1221 "Л̦" 1216 "1" 1215 "ҽ̨" 1214 "Ҽ̨" 1202 "Х̩" 1201 "ү̵" 1200 "Ү̵" 1199 "у" 1197 "т̩" 1196 "Т̩" 1195 "с̡" 1194 "С̡" 1187 "н̩" 1186 "Н̩" 1183 "к̵" 1182 "К̵" 1179 "к̩" 1178 "К̩" 1177 "з̡" 1176 "3̦" 1175 "ж̩" 1174 "Ж̩" 1171 "г̵" 1170 "Г̵" 1169 "гˈ" 1168 "Гˈ" 1165 "Ь̵" 1164 "Ь̵" 1163 "й̦" 1162 "Ѝ̦" 1149 "ѡ҃" 1148 "Ѡ҃" 1139 "о̵" 1138 "О̵" 1123 "Ь̵" 1122 "Ь̵" 1121 "ԝ" 1117 "й" 1115 "һ̵" 1073 "6" 1067 "ЬІ" 1054 "0" 1049 "Ѝ" 1047 "3" 1030 "1" 1018 "Μ" 1013 "ε" 1012 "θ" 1009 "ρ" 1008 "κ" 1000 "2" 982 "π" 981 "φ" 978 "Υ" 977 "θ" 976 "β" 963 "ο" 927 "0" 921 "1" 920 "θ" 903 "·" 900 "'" 894 ";" 890 "ι" 885 "ˏ" 884 "'" 878 "̆" 870 "̊" 856 "̇" 839 "̳" 837 "̨" 835 "̓" 834 "̃" 833 "́" 832 "̀" 825 "̦" 823 "̸" 822 "̵" 807 "̦" 802 "̨" 801 "̦" 800 "̱" 789 "̓" 785 "̂" 784 "̆̇" 780 "̆" 773 "̄" 763 "˪" 760 ":" 758 "''" 756 "'" 750 "''" 733 "''" 732 "~" 731 "i" 730 "°" 729 "ॱ" 728 "ˇ" 727 "-" 723 "ՙ" 720 ":" 715 "'" 714 "'" 712 "ᑊ" 710 "^" 708 "^" 707 ">" 706 "<" 705 "ˤ" 703 "ՙ" 702 "'" 701 "'" 700 "'" 699 "'" 698 "''" 697 "'" 681 "fŋ" 680 "tɕ" 679 "tʃ" 678 "ts" 677 "dʑ" 676 "dȝ" 675 "dz" 672 "q̔" 660 "?" 658 "ȝ" 656 "z̨" 655 "y" 653 "rn" 651 "u" 642 "s̨" 637 "r̨" 636 "r̩" 630 "oᴇ" 629 "o̵" 627 "n̨" 626 "ņ" 625 "rn̦" 623 "vv" 621 "l̨" 619 "l̴" 618 "i" 617 "i" 616 "i̵" 614 "h̔" 609 "g" 608 "g̔" 602 "ǝ˞" 601 "ǝ" 599 "d̔" 598 "d̨" 595 "b̔" 593 "a" 577 "?" 567 "j" 551 "å" 550 "Å" 549 "z̦" 548 "Z̦" 547 "8" 546 "8" 540 "3" 539 "ţ" 538 "Ţ" 510 "Ó̸" 501 "ģ" 499 "dz" 498 "Dz" 497 "DZ" 487 "ğ" 486 "Ğ" 485 "g̵" 484 "G̵" 468 "ŭ" 467 "Ŭ" 466 "ŏ" 465 "Ŏ" 464 "ĭ" 463 "Ĭ" 462 "ă" 461 "Ă" 460 "nj" 459 "Nj" 458 "NJ" 457 "lj" 456 "Lj" 455 "LJ" 454 "dž" 453 "Dž" 452 "DŽ" 451 "!" 449 "ll" 448 "l" 447 "þ" 445 "s" 444 "5" 439 "3" 438 "z̵" 437 "Z̵" 436 "y̔" 435 "'Y" 430 "T̨" 429 "t̔" 428 "'T" 427 "ţ" 423 "2" 422 "R" 421 "p̔" 420 "'P" 417 "o'" 416 "O'" 415 "O̵" 414 "n̩" 413 "N̦" 410 "l̵" 409 "k̔" 408 "K'" 407 "l̵" 406 "l" 403 "G'" 402 "f̦" 401 "F̦" 397 "g" 396 "d̄" 394 "'D" 393 "D̵" 391 "C'" 388 "b" 387 "b̄" 386 "b̄" 385 "'B" 384 "b̵" 383 "f" 359 "t̵" 358 "T̵" 339 "oe" 338 "OE" 336 "Ö" 329 "'n" 322 "l̸" 321 "L̸" 320 "l·" 319 "l·" 312 "k" 307 "ij" 306 "IJ" 305 "i" 295 "h̵" 294 "H̵" 283 "ĕ" 282 "Ĕ" 273 "d̵" 272 "D̵" 248 "o̸" 240 "∂̵" 231 "c̦" 230 "ae" 216 "O̸" 215 "x" 208 "D̵" 199 "C̦" 198 "AE" 184 "," 181 "μ" 180 "'" 175 "ˉ" 165 "Y̵" 162 "c̸" 160 " " 124 "l" 119 "vv" 109 "rn" 96 "'" 73 "l" 49 "l" 48 "O" 37 "º/₀₀" 34 "''")))
+
+  (while ranges
+     (setq k (pop ranges)
+           v (pop ranges))
+     (set-char-table-range uni-confusables-char-table-single k v)))
+
+(ert-deftest uni-confusables-test-single ()
+
+  (should (string-equal
+           (char-table-range uni-confusables-char-table-single 195001)
+           "蜎"))
+
+  (should (string-equal
+           (char-table-range uni-confusables-char-table-single 194901)
+           "𥛅"))
+
+  (should (string-equal
+           (char-table-range uni-confusables-char-table-single 120618)
+           "O"))
+
+  (should (string-equal
+           (char-table-range uni-confusables-char-table-single 42235)
+           "."))
+
+  (should (string-equal
+           (char-table-range uni-confusables-char-table-single 12068)
+           "大"))
+)
+
+(defvar uni-confusables-char-table-multiple (make-char-table 'confusables-multiple-script))
+
+(let ((k nil) (v nil) (ranges '(195101 "𪘀" 195100 "鼻" 195099 "鼖" 195098 "鼏" 195097 "鼅" 195096 "黾" 195095 "黹" 195094 "䵖" 195093 "麻" 195092 "𪊑" 195091 "𪈎" 195090 "𪄅" 195089 "䳸" 195088 "𪃎" 195087 "鵧" 195086 "䳭" 195085 "䳎" 195084 "鳽" 195083 "鱀" 195082 "鬒" 195081 "𩬰" 195080 "䯎" 195079 "駾" 195078 "駂" 195077 "馧" 195076 "餩" 195075 "䬳" 195074 "飢" 195073 "𩖶" 195072 "頩" 195071 "頋" 195070 "頋" 195069 "𩒖" 195068 "䪲" 195067 "𩐊" 195066 "韠" 195065 "䩶" 195064 "䩮" 195063 "𩈚" 195062 "𩅅" 195061 "霣" 195060 "嶲" 195059 "雃" 195058 "䧦" 195057 "𨵷" 195056 "閷" 195055 "䦕" 195054 "開" 195053 "𨯺" 195052 "鐕" 195051 "鏹" 195050 "鉼" 195049 "鋘" 195048 "鋗" 195047 "鈸" 195046 "鄛" 195045 "𨜮" 195044 "鄑" 195043 "郱" 195042 "邔" 195041 "𨗭" 195040 "𨗒" 195039 "輸" 195038 "軔" 195037 "𠣞" 195036 "跰" 195035 "趼" 195034 "跋" 195033 "𠠄" 195032 "𧼯" 195031 "起" 195030 "贛" 195029 "賁" 195028 "貫" 195027 "𧲨" 195026 "豕" 195025 "變" 195024 "諭" 195023 "誠" 195022 "䛇" 195021 "䚾" 195020 "𧥦" 195019 "𧢮" 195018 "㒻" 195017 "裺" 195016 "䘵" 195015 "裞" 195014 "裗" 195013 "𧙧" 195012 "衣" 195011 "衠" 195010 "䗹" 195009 "蠁" 195008 "蟡" 195007 "䗗" 195006 "螆" 195005 "蝫" 195004 "蜨" 195003 "蝹" 195002 "蛢" 195001 "蜎" 195000 "蚈" 194999 "蚩" 194998 "虩" 194997 "虧" 194996 "虜" 194995 "虐" 194994 "䕫" 194993 "𧃒" 194992 "𦾱" 194991 "䕡" 194990 "䕝" 194989 "𦼬" 194988 "蕤" 194987 "𧏊" 194986 "蔖" 194985 "蓳" 194984 "蓱" 194983 "䔫" 194982 "𦳕" 194981 "𦵫" 194980 "𦰶" 194979 "菜" 194978 "菌" 194977 "菊" 194976 "荓" 194975 "著" 194974 "菧" 194973 "莽" 194972 "茣" 194971 "莭" 194970 "荣" 194969 "茝" 194968 "若" 194967 "𦬼" 194966 "苦" 194965 "芽" 194964 "芳" 194963 "花" 194962 "劳" 194961 "芝" 194960 "芋" 194959 "芑" 194958 "䑫" 194957 "辞" 194956 "舄" 194955 "舁" 194954 "𣎜" 194953 "𣎓" 194952 "𦞵" 194951 "𦞧" 194950 "媵" 194949 "脾" 194948 "䐋" 194947 "脃" 194946 "育" 194945 "䏕" 194944 "𣍟" 194943 "聰" 194942 "𦖨" 194941 "聠" 194940 "𦔣" 194939 "𦓚" 194938 "者" 194937 "翺" 194936 "羕" 194935 "𦌾" 194934 "罺" 194933 "𦋙" 194932 "䍙" 194931 "𦉇" 194930 "𦈨" 194929 "䌴" 194928 "繅" 194927 "縂" 194926 "緇" 194925 "䌁" 194924 "絣" 194923 "𥾆" 194922 "紀" 194921 "糣" 194920 "糨" 194919 "䊠" 194918 "糒" 194917 "𥲀" 194916 "䈧" 194915 "築" 194914 "篆" 194913 "𥮫" 194912 "䈂" 194911 "竮" 194910 "𥪧" 194909 "𥪧" 194908 "𥥼" 194907 "穏" 194906 "穊" 194905 "穀" 194904 "䄯" 194903 "秫" 194902 "福" 194901 "𥛅" 194900 "𥚚" 194899 "祖" 194898 "𥘦" 194897 "䃣" 194896 "磌" 194895 "碌" 194894 "硎" 194893 "𥐝" 194892 "䂖" 194891 "䁆" 194890 "瞋" 194889 "䀹" 194888 "睊" 194887 "真" 194886 "真" 194885 "眞" 194884 "𥄳" 194883 "𥄙" 194882 "𥃲" 194881 "𥃳" 194880 "直" 194879 "䀈" 194878 "㿼" 194877 "𥁄" 194876 "𤾸" 194875 "𤾡" 194874 "瘐" 194873 "𢆟" 194872 "異" 194871 "𤲒" 194870 "甾" 194869 "𤰶" 194868 "甤" 194867 "㼛" 194866 "瓊" 194865 "璅" 194864 "瑱" 194863 "瑜" 194862 "瑇" 194861 "㺸" 194860 "㺸" 194859 "玥" 194858 "㺬" 194857 "王" 194856 "獺" 194855 "𤠔" 194854 "𤜵" 194853 "犕" 194852 "犀" 194851 "𤘈" 194850 "牐" 194849 "爵" 194848 "爨" 194847 "𤎫" 194846 "熜" 194845 "𤉣" 194844 "煅" 194843 "𠔥" 194842 "炭" 194841 "灷" 194840 "災" 194839 "灊" 194838 "㶖" 194837 "瀛" 194836 "瀞" 194835 "瀹" 194834 "濆" 194833 "𣾎" 194832 "𣽞" 194831 "潮" 194830 "淹" 194829 "𣻑" 194828 "滇" 194827 "滋" 194826 "㴳" 194825 "湮" 194824 "港" 194823 "洴" 194822 "𣴞" 194821 "涅" 194820 "浸" 194819 "浩" 194818 "流" 194817 "海" 194816 "派" 194815 "洖" 194814 "汧" 194813 "泍" 194812 "沿" 194811 "𣲼" 194810 "汎" 194809 "𣫺" 194808 "𡴋" 194807 "𣪍" 194806 "殻" 194805 "殺" 194804 "殟" 194803 "歲" 194802 "㱎" 194801 "歔" 194800 "𣢧" 194799 "次" 194798 "㰘" 194797 "櫛" 194796 "𣚣" 194795 "檨" 194794 "槪" 194793 "榣" 194792 "楂" 194791 "㮝" 194790 "椔" 194789 "栟" 194788 "梎" 194787 "𣑭" 194786 "梅" 194785 "桒" 194784 "枅" 194783 "柺" 194782 "㭉" 194781 "𣏃" 194780 "杓" 194779 "杞" 194778 "朡" 194777 "望" 194776 "朗" 194775 "䏙" 194774 "肭" 194773 "暜" 194772 "最" 194771 "冕" 194770 "冒" 194769 "㫤" 194768 "㬈" 194767 "暑" 194766 "㬙" 194765 "晉" 194764 "書" 194763 "旣" 194762 "𣀊" 194761 "敬" 194760 "敏" 194759 "㩬" 194758 "摷" 194757 "撝" 194756 "摾" 194755 "摩" 194754 "㨮" 194753 "掩" 194752 "揅" 194751 "搢" 194750 "𢯱" 194749 "揤" 194748 "掃" 194747 "捨" 194746 "拼" 194745 "挽" 194744 "𢬌" 194743 "捐" 194742 "拔" 194741 "抱" 194740 "扝" 194739 "戛" 194738 "成" 194737 "懶" 194736 "懲" 194735 "懞" 194734 "憯" 194733 "憤" 194732 "憲" 194731 "憎" 194730 "慺" 194729 "慌" 194728 "慎" 194727 "慌" 194726 "慈" 194725 "惇" 194724 "𢛔" 194723 "悔" 194722 "㤜" 194721 "㤺" 194720 "悁" 194719 "忹" 194718 "志" 194717 "忍" 194716 "徚" 194715 "㣣" 194714 "彫" 194713 "形" 194712 "𦇚" 194711 "𣊸" 194710 "㣇" 194709 "弢" 194708 "弢" 194707 "舁" 194706 "𢌱" 194705 "𢌱" 194704 "廾" 194703 "𪎒" 194702 "廊" 194701 "庶" 194700 "庳" 194699 "庰" 194698 "㡼" 194697 "𢆃" 194696 "㡢" 194695 "幩" 194694 "帽" 194693 "帨" 194692 "巽" 194691 "㠯" 194690 "巢" 194689 "巡" 194688 "嵼" 194687 "嵫" 194686 "嵮" 194685 "𡷦" 194684 "嵃" 194683 "𡷤" 194682 "岍" 194681 "峀" 194680 "屮" 194679 "屠" 194678 "㞁" 194677 "尢" 194676 "当" 194675 "将" 194674 "寿" 194673 "𡬘" 194672 "寳" 194671 "寧" 194670 "寘" 194669 "寃" 194668 "𡧈" 194667 "嬾" 194666 "嬾" 194665 "嬈" 194664 "㛼" 194663 "㛮" 194662 "婦" 194661 "姘" 194660 "娧" 194659 "娛" 194658 "姬" 194657 "𡛪" 194656 "𡚨" 194655 "奢" 194654 "夢" 194653 "多" 194652 "夆" 194651 "壷" 194650 "売" 194649 "𡓤" 194648 "墬" 194647 "報" 194646 "堲" 194645 "型" 194644 "堍" 194643 "埴" 194642 "城" 194641 "壮" 194640 "切" 194639 "噴" 194638 "噑" 194637 "圗" 194636 "嘆" 194635 "圖" 194634 "嗂" 194633 "喳" 194632 "喫" 194631 "喙" 194630 "善" 194629 "善" 194628 "啣" 194627 "啓" 194626 "唐" 194625 "哶" 194624 "咢" 194623 "周" 194622 "呈" 194621 "吸" 194620 "咞" 194619 "吆" 194618 "叱" 194617 "叫" 194616 "𠭣" 194615 "叟" 194614 "及" 194613 "灰" 194612 "𠨬" 194611 "卿" 194610 "卿" 194609 "卿" 194608 "卽" 194607 "即" 194606 "博" 194605 "卑" 194604 "卉" 194603 "北" 194602 "匆" 194601 "包" 194600 "勺" 194599 "勤" 194598 "勉" 194597 "勇" 194596 "㔕" 194595 "剷" 194594 "割" 194593 "剆" 194592 "刻" 194591 "㓟" 194590 "刃" 194589 "凵" 194588 "𩇟" 194587 "况" 194586 "冬" 194585 "仌" 194584 "冤" 194583 "冗" 194582 "𠕋" 194581 "再" 194580 "內" 194579 "㒹" 194578 "𠔜" 194577 "具" 194576 "兤" 194575 "兔" 194574 "免" 194573 "𠘺" 194572 "㒞" 194571 "像" 194570 "僧" 194569 "備" 194568 "偺" 194567 "併" 194566 "侻" 194565 "侮" 194564 "你" 194563 "𠄢" 194562 "乁" 194561 "丸" 194560 "丽" 127560 "(敗)" 127559 "(勝)" 127558 "(盗)" 127557 "(打)" 127556 "(点)" 127555 "(安)" 127554 "(二)" 127553 "(三)" 127552 "(本)" 127274 "(S)" 127273 "(Z)" 127272 "(Y)" 127271 "(X)" 127270 "(W)" 127269 "(V)" 127268 "(U)" 127267 "(T)" 127266 "(S)" 127265 "(R)" 127264 "(Q)" 127263 "(P)" 127262 "(O)" 127261 "(N)" 127260 "(M)" 127259 "(L)" 127258 "(K)" 127257 "(J)" 127256 "(I)" 127255 "(H)" 127254 "(G)" 127253 "(F)" 127252 "(E)" 127251 "(D)" 127250 "(C)" 127249 "(B)" 127248 "(A)" 127242 "9," 127241 "8," 127240 "7," 127239 "6," 127238 "5," 127237 "4," 127236 "3," 127235 "2," 127234 "l," 127233 "O," 127232 "O." 120831 "9" 120830 "8" 120829 "7" 120828 "6" 120827 "5" 120826 "4" 120825 "3" 120824 "2" 120823 "l" 120822 "O" 120821 "9" 120820 "8" 120819 "7" 120818 "6" 120817 "5" 120816 "4" 120815 "3" 120814 "2" 120813 "l" 120812 "O" 120811 "9" 120810 "8" 120809 "7" 120808 "6" 120807 "5" 120806 "4" 120805 "3" 120804 "2" 120803 "l" 120802 "O" 120801 "9" 120800 "8" 120799 "7" 120798 "6" 120797 "5" 120796 "4" 120795 "3" 120794 "2" 120793 "l" 120792 "O" 120791 "9" 120790 "8" 120789 "7" 120788 "6" 120787 "5" 120786 "4" 120785 "3" 120784 "2" 120783 "l" 120782 "O" 120779 "ϝ" 120778 "F" 120777 "n" 120776 "p" 120775 "ɸ" 120774 "k" 120773 "O̵" 120772 "ɛ" 120771 "∂" 120770 "ω" 120769 "ψ" 120768 "χ" 120767 "ɸ" 120766 "u" 120765 "t" 120764 "o" 120763 "ς" 120762 "p" 120761 "n" 120760 "o" 120759 "ξ" 120758 "v" 120757 "μ" 120756 "λ" 120755 "k" 120754 "i" 120753 "O̵" 120752 "n̩" 120751 "ζ" 120750 "ɛ" 120749 "ẟ" 120748 "y" 120747 "ß" 120746 "a" 120745 "∇" 120744 "ᘯ" 120743 "Ψ" 120742 "X" 120741 "Φ" 120740 "Y" 120739 "T" 120738 "Ʃ" 120737 "O̵" 120736 "P" 120735 "Π" 120734 "O" 120733 "Ξ" 120732 "N" 120731 "M" 120730 "Ʌ" 120729 "K" 120728 "l" 120727 "O̵" 120726 "H" 120725 "Z" 120724 "E" 120723 "ᐃ" 120722 "ᒥ" 120721 "B" 120720 "A" 120719 "n" 120718 "p" 120717 "ɸ" 120716 "k" 120715 "O̵" 120714 "ɛ" 120713 "∂" 120712 "ω" 120711 "ψ" 120710 "χ" 120709 "ɸ" 120708 "u" 120707 "t" 120706 "o" 120705 "ς" 120704 "p" 120703 "n" 120702 "o" 120701 "ξ" 120700 "v" 120699 "μ" 120698 "λ" 120697 "k" 120696 "i" 120695 "O̵" 120694 "n̩" 120693 "ζ" 120692 "ɛ" 120691 "ẟ" 120690 "y" 120689 "ß" 120688 "a" 120687 "∇" 120686 "ᘯ" 120685 "Ψ" 120684 "X" 120683 "Φ" 120682 "Y" 120681 "T" 120680 "Ʃ" 120679 "O̵" 120678 "P" 120677 "Π" 120676 "O" 120675 "Ξ" 120674 "N" 120673 "M" 120672 "Ʌ" 120671 "K" 120670 "l" 120669 "O̵" 120668 "H" 120667 "Z" 120666 "E" 120665 "ᐃ" 120664 "ᒥ" 120663 "B" 120662 "A" 120661 "n" 120660 "p" 120659 "ɸ" 120658 "k" 120657 "O̵" 120656 "ɛ" 120655 "∂" 120654 "ω" 120653 "ψ" 120652 "χ" 120651 "ɸ" 120650 "u" 120649 "t" 120648 "o" 120647 "ς" 120646 "p" 120645 "n" 120644 "o" 120643 "ξ" 120642 "v" 120641 "μ" 120640 "λ" 120639 "k" 120638 "i" 120637 "O̵" 120636 "n̩" 120635 "ζ" 120634 "ɛ" 120633 "ẟ" 120632 "y" 120631 "ß" 120630 "a" 120629 "∇" 120628 "ᘯ" 120627 "Ψ" 120626 "X" 120625 "Φ" 120624 "Y" 120623 "T" 120622 "Ʃ" 120621 "O̵" 120620 "P" 120619 "Π" 120618 "O" 120617 "Ξ" 120616 "N" 120615 "M" 120614 "Ʌ" 120613 "K" 120612 "l" 120611 "O̵" 120610 "H" 120609 "Z" 120608 "E" 120607 "ᐃ" 120606 "ᒥ" 120605 "B" 120604 "A" 120603 "n" 120602 "p" 120601 "ɸ" 120600 "k" 120599 "O̵" 120598 "ɛ" 120597 "∂" 120596 "ω" 120595 "ψ" 120594 "χ" 120593 "ɸ" 120592 "u" 120591 "t" 120590 "o" 120589 "ς" 120588 "p" 120587 "n" 120586 "o" 120585 "ξ" 120584 "v" 120583 "μ" 120582 "λ" 120581 "k" 120580 "i" 120579 "O̵" 120578 "n̩" 120577 "ζ" 120576 "ɛ" 120575 "ẟ" 120574 "y" 120573 "ß" 120572 "a" 120571 "∇" 120570 "ᘯ" 120569 "Ψ" 120568 "X" 120567 "Φ" 120566 "Y" 120565 "T" 120564 "Ʃ" 120563 "O̵" 120562 "P" 120561 "Π" 120560 "O" 120559 "Ξ" 120558 "N" 120557 "M" 120556 "Ʌ" 120555 "K" 120554 "l" 120553 "O̵" 120552 "H" 120551 "Z" 120550 "E" 120549 "ᐃ" 120548 "ᒥ" 120547 "B" 120546 "A" 120545 "n" 120544 "p" 120543 "ɸ" 120542 "k" 120541 "O̵" 120540 "ɛ" 120539 "∂" 120538 "ω" 120537 "ψ" 120536 "χ" 120535 "ɸ" 120534 "u" 120533 "t" 120532 "o" 120531 "ς" 120530 "p" 120529 "n" 120528 "o" 120527 "ξ" 120526 "v" 120525 "μ" 120524 "λ" 120523 "k" 120522 "i" 120521 "O̵" 120520 "n̩" 120519 "ζ" 120518 "ɛ" 120517 "ẟ" 120516 "y" 120515 "ß" 120514 "a" 120513 "∇" 120512 "ᘯ" 120511 "Ψ" 120510 "X" 120509 "Φ" 120508 "Y" 120507 "T" 120506 "Ʃ" 120505 "O̵" 120504 "P" 120503 "Π" 120502 "O" 120501 "Ξ" 120500 "N" 120499 "M" 120498 "Ʌ" 120497 "K" 120496 "l" 120495 "O̵" 120494 "H" 120493 "Z" 120492 "E" 120491 "ᐃ" 120490 "ᒥ" 120489 "B" 120488 "A" 120485 "j" 120484 "i" 120483 "z" 120482 "y" 120481 "x" 120480 "vv" 120479 "v" 120478 "u" 120477 "t" 120476 "s" 120475 "r" 120474 "q" 120473 "p" 120472 "o" 120471 "n" 120470 "rn" 120469 "l" 120468 "k" 120467 "j" 120466 "i" 120465 "h" 120464 "g" 120463 "f" 120462 "e" 120461 "d" 120460 "c" 120459 "b" 120458 "a" 120457 "Z" 120456 "Y" 120455 "X" 120454 "W" 120453 "V" 120452 "U" 120451 "T" 120450 "S" 120449 "R" 120448 "Q" 120447 "P" 120446 "O" 120445 "N" 120444 "M" 120443 "L" 120442 "K" 120441 "J" 120440 "l" 120439 "H" 120438 "G" 120437 "F" 120436 "E" 120435 "D" 120434 "C" 120433 "B" 120432 "A" 120431 "z" 120430 "y" 120429 "x" 120428 "vv" 120427 "v" 120426 "u" 120425 "t" 120424 "s" 120423 "r" 120422 "q" 120421 "p" 120420 "o" 120419 "n" 120418 "rn" 120417 "l" 120416 "k" 120415 "j" 120414 "i" 120413 "h" 120412 "g" 120411 "f" 120410 "e" 120409 "d" 120408 "c" 120407 "b" 120406 "a" 120405 "Z" 120404 "Y" 120403 "X" 120402 "W" 120401 "V" 120400 "U" 120399 "T" 120398 "S" 120397 "R" 120396 "Q" 120395 "P" 120394 "O" 120393 "N" 120392 "M" 120391 "L" 120390 "K" 120389 "J" 120388 "l" 120387 "H" 120386 "G" 120385 "F" 120384 "E" 120383 "D" 120382 "C" 120381 "B" 120380 "A" 120379 "z" 120378 "y" 120377 "x" 120376 "vv" 120375 "v" 120374 "u" 120373 "t" 120372 "s" 120371 "r" 120370 "q" 120369 "p" 120368 "o" 120367 "n" 120366 "rn" 120365 "l" 120364 "k" 120363 "j" 120362 "i" 120361 "h" 120360 "g" 120359 "f" 120358 "e" 120357 "d" 120356 "c" 120355 "b" 120354 "a" 120353 "Z" 120352 "Y" 120351 "X" 120350 "W" 120349 "V" 120348 "U" 120347 "T" 120346 "S" 120345 "R" 120344 "Q" 120343 "P" 120342 "O" 120341 "N" 120340 "M" 120339 "L" 120338 "K" 120337 "J" 120336 "l" 120335 "H" 120334 "G" 120333 "F" 120332 "E" 120331 "D" 120330 "C" 120329 "B" 120328 "A" 120327 "z" 120326 "y" 120325 "x" 120324 "vv" 120323 "v" 120322 "u" 120321 "t" 120320 "s" 120319 "r" 120318 "q" 120317 "p" 120316 "o" 120315 "n" 120314 "rn" 120313 "l" 120312 "k" 120311 "j" 120310 "i" 120309 "h" 120308 "g" 120307 "f" 120306 "e" 120305 "d" 120304 "c" 120303 "b" 120302 "a" 120301 "Z" 120300 "Y" 120299 "X" 120298 "W" 120297 "V" 120296 "U" 120295 "T" 120294 "S" 120293 "R" 120292 "Q" 120291 "P" 120290 "O" 120289 "N" 120288 "M" 120287 "L" 120286 "K" 120285 "J" 120284 "l" 120283 "H" 120282 "G" 120281 "F" 120280 "E" 120279 "D" 120278 "C" 120277 "B" 120276 "A" 120275 "z" 120274 "y" 120273 "x" 120272 "vv" 120271 "v" 120270 "u" 120269 "t" 120268 "s" 120267 "r" 120266 "q" 120265 "p" 120264 "o" 120263 "n" 120262 "rn" 120261 "l" 120260 "k" 120259 "j" 120258 "i" 120257 "h" 120256 "g" 120255 "f" 120254 "e" 120253 "d" 120252 "c" 120251 "b" 120250 "a" 120249 "Z" 120248 "Y" 120247 "X" 120246 "W" 120245 "V" 120244 "U" 120243 "T" 120242 "S" 120241 "R" 120240 "Q" 120239 "P" 120238 "O" 120237 "N" 120236 "M" 120235 "L" 120234 "K" 120233 "J" 120232 "l" 120231 "H" 120230 "G" 120229 "F" 120228 "E" 120227 "D" 120226 "C" 120225 "B" 120224 "A" 120223 "z" 120222 "y" 120221 "x" 120220 "vv" 120219 "v" 120218 "u" 120217 "t" 120216 "s" 120215 "r" 120214 "q" 120213 "p" 120212 "o" 120211 "n" 120210 "rn" 120209 "l" 120208 "k" 120207 "j" 120206 "i" 120205 "h" 120204 "g" 120203 "f" 120202 "e" 120201 "d" 120200 "c" 120199 "b" 120198 "a" 120197 "Z" 120196 "Y" 120195 "X" 120194 "W" 120193 "V" 120192 "U" 120191 "T" 120190 "S" 120189 "R" 120188 "Q" 120187 "P" 120186 "O" 120185 "N" 120184 "M" 120183 "L" 120182 "K" 120181 "J" 120180 "l" 120179 "H" 120178 "G" 120177 "F" 120176 "E" 120175 "D" 120174 "C" 120173 "B" 120172 "A" 120171 "z" 120170 "y" 120169 "x" 120168 "vv" 120167 "v" 120166 "u" 120165 "t" 120164 "s" 120163 "r" 120162 "q" 120161 "p" 120160 "o" 120159 "n" 120158 "rn" 120157 "l" 120156 "k" 120155 "j" 120154 "i" 120153 "h" 120152 "g" 120151 "f" 120150 "e" 120149 "d" 120148 "c" 120147 "b" 120146 "a" 120144 "Y" 120143 "X" 120142 "W" 120141 "V" 120140 "U" 120139 "T" 120138 "S" 120134 "O" 120132 "M" 120131 "L" 120130 "K" 120129 "J" 120128 "l" 120126 "G" 120125 "F" 120124 "E" 120123 "D" 120121 "B" 120120 "A" 120119 "z" 120118 "y" 120117 "x" 120116 "vv" 120115 "v" 120114 "u" 120113 "t" 120112 "s" 120111 "r" 120110 "q" 120109 "p" 120108 "o" 120107 "n" 120106 "rn" 120105 "l" 120104 "k" 120103 "j" 120102 "i" 120101 "h" 120100 "g" 120099 "f" 120098 "e" 120097 "d" 120096 "c" 120095 "b" 120094 "a" 120092 "Y" 120091 "X" 120090 "W" 120089 "V" 120088 "U" 120087 "T" 120086 "S" 120084 "Q" 120083 "P" 120082 "O" 120081 "N" 120080 "M" 120079 "L" 120078 "K" 120077 "J" 120074 "G" 120073 "F" 120072 "E" 120071 "D" 120069 "B" 120068 "A" 120067 "z" 120066 "y" 120065 "x" 120064 "vv" 120063 "v" 120062 "u" 120061 "t" 120060 "s" 120059 "r" 120058 "q" 120057 "p" 120056 "o" 120055 "n" 120054 "rn" 120053 "l" 120052 "k" 120051 "j" 120050 "i" 120049 "h" 120048 "g" 120047 "f" 120046 "e" 120045 "d" 120044 "c" 120043 "b" 120042 "a" 120041 "Z" 120040 "Y" 120039 "X" 120038 "W" 120037 "V" 120036 "U" 120035 "T" 120034 "S" 120033 "R" 120032 "Q" 120031 "P" 120030 "O" 120029 "N" 120028 "M" 120027 "L" 120026 "K" 120025 "J" 120024 "l" 120023 "H" 120022 "G" 120021 "F" 120020 "E" 120019 "D" 120018 "C" 120017 "B" 120016 "A" 120015 "z" 120014 "y" 120013 "x" 120012 "vv" 120011 "v" 120010 "u" 120009 "t" 120008 "s" 120007 "r" 120006 "q" 120005 "p" 120003 "n" 120002 "rn" 120001 "l" 120000 "k" 119999 "j" 119998 "i" 119997 "h" 119995 "f" 119993 "d" 119992 "c" 119991 "b" 119990 "a" 119989 "Z" 119988 "Y" 119987 "X" 119986 "W" 119985 "V" 119984 "U" 119983 "T" 119982 "S" 119980 "Q" 119979 "P" 119978 "O" 119977 "N" 119974 "K" 119973 "J" 119970 "G" 119967 "D" 119966 "C" 119964 "A" 119963 "z" 119962 "y" 119961 "x" 119960 "vv" 119959 "v" 119958 "u" 119957 "t" 119956 "s" 119955 "r" 119954 "q" 119953 "p" 119952 "o" 119951 "n" 119950 "rn" 119949 "l" 119948 "k" 119947 "j" 119946 "i" 119945 "h" 119944 "g" 119943 "f" 119942 "e" 119941 "d" 119940 "c" 119939 "b" 119938 "a" 119937 "Z" 119936 "Y" 119935 "X" 119934 "W" 119933 "V" 119932 "U" 119931 "T" 119930 "S" 119929 "R" 119928 "Q" 119927 "P" 119926 "O" 119925 "N" 119924 "M" 119923 "L" 119922 "K" 119921 "J" 119920 "l" 119919 "H" 119918 "G" 119917 "F" 119916 "E" 119915 "D" 119914 "C" 119913 "B" 119912 "A" 119911 "z" 119910 "y" 119909 "x" 119908 "vv" 119907 "v" 119906 "u" 119905 "t" 119904 "s" 119903 "r" 119902 "q" 119901 "p" 119900 "o" 119899 "n" 119898 "rn" 119897 "l" 119896 "k" 119895 "j" 119894 "i" 119892 "g" 119891 "f" 119890 "e" 119889 "d" 119888 "c" 119887 "b" 119886 "a" 119885 "Z" 119884 "Y" 119883 "X" 119882 "W" 119881 "V" 119880 "U" 119879 "T" 119878 "S" 119877 "R" 119876 "Q" 119875 "P" 119874 "O" 119873 "N" 119872 "M" 119871 "L" 119870 "K" 119869 "J" 119868 "l" 119867 "H" 119866 "G" 119865 "F" 119864 "E" 119863 "D" 119862 "C" 119861 "B" 119860 "A" 119859 "z" 119858 "y" 119857 "x" 119856 "vv" 119855 "v" 119854 "u" 119853 "t" 119852 "s" 119851 "r" 119850 "q" 119849 "p" 119848 "o" 119847 "n" 119846 "rn" 119845 "l" 119844 "k" 119843 "j" 119842 "i" 119841 "h" 119840 "g" 119839 "f" 119838 "e" 119837 "d" 119836 "c" 119835 "b" 119834 "a" 119833 "Z" 119832 "Y" 119831 "X" 119830 "W" 119829 "V" 119828 "U" 119827 "T" 119826 "S" 119825 "R" 119824 "Q" 119823 "P" 119822 "O" 119821 "N" 119820 "M" 119819 "L" 119818 "K" 119817 "J" 119816 "l" 119815 "H" 119814 "G" 119813 "F" 119812 "E" 119811 "D" 119810 "C" 119809 "B" 119808 "A" 119149 "." 73784 "𐎚" 69819 "॰" 68176 "." 68154 "̣" 66720 "𐒆" 66515 "𐎓" 66513 "𐎂" 65793 "·" 65517 "▪" 65512 "l" 65507 "ˉ" 65381 "·" 65374 "〜" 65372 "│" 65369 "y" 65368 "x" 65366 "v" 65363 "s" 65360 "p" 65359 "o" 65356 "l" 65354 "j" 65353 "i" 65352 "h" 65351 "g" 65349 "e" 65347 "c" 65345 "a" 65344 "'" 65342 "︿" 65341 ")" 65340 "\\" 65339 "(" 65338 "Z" 65337 "Y" 65336 "X" 65332 "T" 65331 "S" 65328 "P" 65327 "O" 65326 "N" 65325 "M" 65323 "K" 65322 "J" 65321 "l" 65320 "H" 65317 "E" 65315 "C" 65314 "B" 65313 "A" 65306 ":" 65293 "ー" 65287 "'" 65282 "''" 65281 "!" 65276 "لا" 65275 "لا" 65274 "لإ" 65273 "لإ" 65272 "لاٴ" 65271 "لاٴ" 65270 "لآ" 65269 "لآ" 65268 "ى" 65267 "ى" 65266 "ى" 65265 "ى" 65264 "ى" 65263 "ى" 65262 "و" 65261 "و" 65260 "ه" 65259 "ه" 65258 "ه" 65257 "ه" 65256 "ب" 65255 "ب" 65254 "ب" 65253 "ب" 65252 "م" 65251 "م" 65250 "م" 65249 "م" 65248 "ل" 65247 "ل" 65246 "ل" 65245 "ل" 65244 "ك" 65243 "ك" 65242 "ك" 65241 "ك" 65240 "ق" 65239 "ق" 65238 "ق" 65237 "ق" 65236 "ف" 65235 "ف" 65234 "ف" 65233 "ف" 65232 "غ" 65231 "غ" 65230 "غ" 65229 "غ" 65228 "ع" 65227 "ع" 65226 "ع" 65225 "ع" 65224 "ظ" 65223 "ظ" 65222 "ظ" 65221 "ظ" 65220 "ط" 65219 "ط" 65218 "ط" 65217 "ط" 65216 "ض" 65215 "ض" 65214 "ض" 65213 "ض" 65212 "ص" 65211 "ص" 65210 "ص" 65209 "ص" 65208 "ش" 65207 "ش" 65206 "ش" 65205 "ش" 65204 "س" 65203 "س" 65202 "س" 65201 "س" 65200 "ز" 65199 "ز" 65198 "ر" 65197 "ر" 65196 "ذ" 65195 "ذ" 65194 "د" 65193 "د" 65192 "ج" 65191 "ج" 65190 "ج" 65189 "ج" 65188 "ح" 65187 "ح" 65186 "ح" 65185 "ح" 65184 "ج" 65183 "ج" 65182 "ج" 65181 "ج" 65180 "ث" 65179 "ث" 65178 "ث" 65177 "ث" 65176 "ت" 65175 "ت" 65174 "ت" 65173 "ت" 65172 "ö" 65171 "ö" 65170 "ب" 65169 "ب" 65168 "ب" 65167 "ب" 65166 "ا" 65165 "ا" 65164 "ىٴ" 65163 "ىٴ" 65162 "ىٴ" 65161 "ىٴ" 65160 "إ" 65159 "إ" 65158 "وٴ" 65157 "وٴ" 65156 "اٴ" 65155 "اٴ" 65154 "آ" 65153 "آ" 65152 "ء" 65128 "\\" 65112 "-" 65103 "_" 65102 "_" 65101 "_" 65100 "ˉ" 65099 "ˉ" 65098 "ˉ" 65097 "ˉ" 65082 "⏡" 65081 "⏠" 65080 "⏟" 65079 "⏞" 65078 "⏝" 65077 "⏜" 65073 "│" 65072 ":" 65049 "⁝" 65020 "رىال" 65019 "جل جلاله" 65018 "صلى الله علىه وسلم" 65017 "صلى" 65016 "وسلم" 65015 "علىه" 65014 "رسول" 65013 "صلعم" 65012 "محمد" 65011 "اكبر" 65010 "الله" 65009 "قلے" 65008 "صلے" 64967 "بجى" 64966 "سجى" 64965 "صمم" 64964 "عجم" 64963 "كمم" 64962 "بحى" 64961 "فمى" 64960 "مجى" 64959 "حجى" 64958 "جحى" 64957 "بجح" 64956 "لجم" 64955 "كمم" 64954 "لجم" 64953 "مجى" 64952 "بجح" 64951 "كمى" 64950 "عمى" 64949 "لحم" 64948 "قمح" 64947 "بحى" 64946 "قمى" 64945 "ممى" 64944 "ىمى" 64943 "ىجى" 64942 "ىحى" 64941 "لمى" 64940 "لجى" 64939 "ضحى" 64938 "شحى" 64937 "صحى" 64936 "سجى" 64935 "جمى" 64934 "جحى" 64933 "جمى" 64932 "تمى" 64931 "تمى" 64930 "تجى" 64929 "تجى" 64928 "تجى" 64927 "تجى" 64926 "بجى" 64925 "ىمم" 64924 "ىمم" 64923 "بمى" 64922 "بمى" 64921 "بجى" 64920 "بجم" 64919 "بجم" 64918 "بحى" 64917 "بحم" 64916 "همم" 64915 "همج" 64914 "مجج" 64911 "مجم" 64910 "مجج" 64909 "مجم" 64908 "مجح" 64907 "محى" 64906 "محم" 64905 "محج" 64904 "لمح" 64903 "لمح" 64902 "لجم" 64901 "لجم" 64900 "لجج" 64899 "لجج" 64898 "لحى" 64897 "لحى" 64896 "لحم" 64895 "قمم" 64894 "قمح" 64893 "فجم" 64892 "فجم" 64891 "غمى" 64890 "غمى" 64889 "غمم" 64888 "عمى" 64887 "عمم" 64886 "عمم" 64885 "عجم" 64884 "طمى" 64883 "طمم" 64882 "طمح" 64881 "طمح" 64880 "ضجم" 64879 "ضجم" 64878 "ضحى" 64877 "شمم" 64876 "شمم" 64875 "شمج" 64874 "شمج" 64873 "شجى" 64872 "شحم" 64871 "شحم" 64870 "صمم" 64869 "صحح" 64868 "صحح" 64867 "سمم" 64866 "سمم" 64865 "سمج" 64864 "سمح" 64863 "سمح" 64862 "سجى" 64861 "سجح" 64860 "سحج" 64859 "حمى" 64858 "حمى" 64857 "جمح" 64856 "جمح" 64855 "تمج" 64854 "تمح" 64853 "تمج" 64852 "تجم" 64851 "تحم" 64850 "تحج" 64849 "تحج" 64848 "تجم" 64831 ")" 64830 "(" 64829 "اً" 64828 "اً" 64827 "ظم" 64826 "طم" 64825 "شج" 64824 "شح" 64823 "شج" 64822 "سج" 64821 "سح" 64820 "سج" 64819 "طم" 64818 "شه" 64817 "سه" 64816 "شم" 64815 "شج" 64814 "شح" 64813 "شج" 64812 "ضر" 64811 "صر" 64810 "سر" 64809 "شر" 64808 "شم" 64807 "شج" 64806 "شح" 64805 "شج" 64804 "ضى" 64803 "ضى" 64802 "صى" 64801 "صى" 64800 "جى" 64799 "جى" 64798 "جى" 64797 "جى" 64796 "حى" 64795 "حى" 64794 "شى" 64793 "شى" 64792 "سى" 64791 "سى" 64790 "غى" 64789 "غى" 64788 "عى" 64787 "عى" 64786 "طى" 64785 "طى" 64784 "ضر" 64783 "صر" 64782 "سر" 64781 "شر" 64780 "شم" 64779 "شج" 64778 "شح" 64777 "شج" 64776 "ضى" 64775 "ضى" 64774 "صى" 64773 "صى" 64772 "جى" 64771 "جى" 64770 "جى" 64769 "جى" 64768 "حى" 64767 "حى" 64766 "شى" 64765 "شى" 64764 "سى" 64763 "سى" 64762 "غى" 64761 "غى" 64760 "عى" 64759 "عى" 64758 "طى" 64757 "طى" 64756 "ﹻّ" 64755 "ﹹّ" 64754 "ﹷّ" 64753 "ىه" 64752 "ىم" 64751 "به" 64750 "بم" 64749 "لم" 64748 "كم" 64747 "كل" 64746 "شه" 64745 "شم" 64744 "سه" 64743 "سم" 64742 "ثه" 64741 "ثم" 64740 "ته" 64739 "تم" 64738 "به" 64737 "بم" 64736 "ىٴه" 64735 "ىٴم" 64734 "ىه" 64733 "ىم" 64732 "تج" 64731 "تح" 64730 "تج" 64729 "هٰ" 64728 "هم" 64727 "هج" 64726 "به" 64725 "بم" 64724 "بج" 64723 "بح" 64722 "بج" 64721 "مم" 64720 "مج" 64719 "مح" 64718 "مج" 64717 "له" 64716 "لم" 64715 "لج" 64714 "لح" 64713 "لج" 64712 "كم" 64711 "كل" 64710 "كج" 64709 "كح" 64708 "كج" 64707 "قم" 64706 "قح" 64705 "فم" 64704 "فج" 64703 "فح" 64702 "فج" 64701 "غم" 64700 "غج" 64699 "عم" 64698 "عج" 64697 "ظم" 64696 "طح" 64695 "ضم" 64694 "ضج" 64693 "ضح" 64692 "ضج" 64691 "صم" 64690 "صج" 64689 "صح" 64688 "سم" 64687 "سج" 64686 "سح" 64685 "سج" 64684 "جم" 64683 "جج" 64682 "حم" 64681 "حج" 64680 "جم" 64679 "جح" 64678 "ثم" 64677 "ته" 64676 "تم" 64675 "تج" 64674 "تح" 64673 "تج" 64672 "به" 64671 "بم" 64670 "بج" 64669 "بح" 64668 "بج" 64667 "ىٴه" 64666 "ىٴم" 64665 "ىٴج" 64664 "ىٴح" 64663 "ىٴج" 64662 "ىى" 64661 "ىى" 64660 "ىب" 64659 "ىم" 64658 "ىز" 64657 "ىر" 64656 "ىٰ" 64655 "بى" 64654 "بى" 64653 "بب" 64652 "بم" 64651 "بز" 64650 "بر" 64649 "مم" 64648 "ما" 64647 "لى" 64646 "لى" 64645 "لم" 64644 "كى" 64643 "كى" 64642 "كم" 64641 "كل" 64640 "كا" 64639 "قى" 64638 "قى" 64637 "فى" 64636 "فى" 64635 "ثى" 64634 "ثى" 64633 "ثب" 64632 "ثم" 64631 "ثز" 64630 "ثر" 64629 "تى" 64628 "تى" 64627 "تب" 64626 "تم" 64625 "تز" 64624 "تر" 64623 "بى" 64622 "بى" 64621 "بب" 64620 "بم" 64619 "بز" 64618 "بر" 64617 "ىٴى" 64616 "ىٴى" 64615 "ىٴب" 64614 "ىٴم" 64613 "ىٴز" 64612 "ىٴر" 64611 "ﹼٰ" 64610 "ﹶّ" 64609 "ﹸّ" 64608 "ﹶّ" 64607 "ﹴّ" 64606 "ﹲّ" 64605 "ىٰ" 64604 "رٰ" 64603 "ذٰ" 64602 "ىى" 64601 "ىى" 64600 "ىم" 64599 "تج" 64598 "تح" 64597 "تج" 64596 "هى" 64595 "هى" 64594 "هم" 64593 "هج" 64592 "بى" 64591 "بى" 64590 "بم" 64589 "بج" 64588 "بح" 64587 "بج" 64586 "مى" 64585 "مى" 64584 "مم" 64583 "مج" 64582 "مح" 64581 "مج" 64580 "لى" 64579 "لى" 64578 "لم" 64577 "لج" 64576 "لح" 64575 "لج" 64574 "كى" 64573 "كى" 64572 "كم" 64571 "كل" 64570 "كج" 64569 "كح" 64568 "كج" 64567 "كا" 64566 "قى" 64565 "قى" 64564 "قم" 64563 "قح" 64562 "فى" 64561 "فى" 64560 "فم" 64559 "فج" 64558 "فح" 64557 "فج" 64556 "غم" 64555 "غج" 64554 "عم" 64553 "عج" 64552 "ظم" 64551 "طم" 64550 "طح" 64549 "ضم" 64548 "ضج" 64547 "ضح" 64546 "ضج" 64545 "صم" 64544 "صح" 64543 "سم" 64542 "سج" 64541 "سح" 64540 "سج" 64539 "جم" 64538 "جح" 64537 "جج" 64536 "حم" 64535 "حج" 64534 "جم" 64533 "جح" 64532 "ثى" 64531 "ثى" 64530 "ثم" 64529 "ثج" 64528 "تى" 64527 "تى" 64526 "تم" 64525 "تج" 64524 "تح" 64523 "تج" 64522 "بى" 64521 "بى" 64520 "بم" 64519 "بج" 64518 "بح" 64517 "بج" 64516 "ىٴى" 64515 "ىٴى" 64514 "ىٴم" 64513 "ىٴح" 64512 "ىٴج" 64511 "ى" 64510 "ى" 64509 "ى" 64508 "ى" 64507 "ىٴى" 64506 "ىٴى" 64505 "ىٴى" 64504 "ىٴٺ" 64503 "ىٴٺ" 64502 "ىٴٺ" 64501 "ىٴۈ" 64500 "ىٴۈ" 64499 "ىٴۆ" 64498 "ىٴۆ" 64497 "ىٴۇ" 64496 "ىٴۇ" 64495 "ىٴو" 64494 "ىٴو" 64493 "ىٴه" 64492 "ىٴه" 64491 "ىٴا" 64490 "ىٴا" 64489 "ى" 64488 "ى" 64487 "ٺ" 64486 "ٺ" 64485 "ٺ" 64484 "ٺ" 64483 "ۉ" 64482 "ۉ" 64481 "ۅ" 64480 "ۅ" 64479 "ۋ" 64478 "ۋ" 64477 "ۇٴ" 64476 "ۈ" 64475 "ۈ" 64474 "ۆ" 64473 "ۆ" 64472 "ۇ" 64471 "ۇ" 64470 "ڭ" 64469 "ڭ" 64468 "ڭ" 64467 "ڭ" 64433 "ۓ" 64432 "ۓ" 64431 "ے" 64430 "ے" 64429 "ه" 64428 "ه" 64427 "ه" 64426 "ه" 64425 "ه" 64424 "ه" 64423 "ه" 64422 "ه" 64421 "ۀ" 64420 "ۀ" 64419 "ٹ" 64418 "ٹ" 64417 "ٹ" 64416 "ٹ" 64415 "ں" 64414 "ں" 64413 "ڱ" 64412 "ڱ" 64411 "ڱ" 64410 "ڱ" 64409 "ڳ" 64408 "ڳ" 64407 "ڳ" 64406 "ڳ" 64405 "گ" 64404 "گ" 64403 "گ" 64402 "گ" 64401 "ك" 64400 "ك" 64399 "ك" 64398 "ك" 64397 "ڑ" 64396 "ڑ" 64395 "ژ" 64394 "ژ" 64393 "ڈ" 64392 "ڈ" 64391 "ڎ" 64390 "ڎ" 64389 "ڌ" 64388 "ڌ" 64387 "ڍ" 64386 "ڍ" 64385 "ڇ" 64384 "ڇ" 64383 "ڇ" 64382 "ڇ" 64381 "چ" 64380 "چ" 64379 "چ" 64378 "چ" 64377 "ڃ" 64376 "ڃ" 64375 "ڃ" 64374 "ڃ" 64373 "ڂ" 64372 "ڂ" 64371 "ڂ" 64370 "ڂ" 64369 "ڦ" 64368 "ڦ" 64367 "ڦ" 64366 "ڦ" 64365 "ڤ" 64364 "ڤ" 64363 "ڤ" 64362 "ڤ" 64361 "ٹ" 64360 "ٹ" 64359 "ٹ" 64358 "ٹ" 64357 "ٿ" 64356 "ٿ" 64355 "ٿ" 64354 "ٿ" 64353 "ٺ" 64352 "ٺ" 64351 "ٺ" 64350 "ٺ" 64349 "ٿ" 64348 "ٿ" 64347 "ٿ" 64346 "ٿ" 64345 "پ" 64344 "پ" 64343 "پ" 64342 "پ" 64341 "ٺ" 64340 "ٺ" 64339 "ٺ" 64338 "ٺ" 64337 "ٱ" 64336 "ٱ" 64335 "אל" 64329 "שׁ" 64313 "יִ" 64304 "אַ" 64303 "אַ" 64301 "שּׁ" 64299 "שׁ" 64297 "+" 64296 "ת" 64295 "ר" 64294 "ם" 64293 "ל" 64292 "כ" 64291 "ה" 64290 "ד" 64289 "א" 64288 "ע" 64279 "մխ" 64278 "վն" 64277 "մի" 64276 "մե" 64275 "մն" 64262 "st" 64260 "ffl" 64259 "ffi" 64258 "fl" 64257 "fi" 64256 "ff" 64217 "龎" 64216 "齃" 64215 "𧻓" 64214 "𥳐" 64213 "𥉉" 64212 "䀹" 64211 "䀘" 64210 "㮝" 64209 "𣏕" 64208 "𢡄" 64207 "𢡊" 64206 "龜" 64205 "鬒" 64204 "頻" 64203 "頋" 64202 "響" 64201 "韛" 64200 "靖" 64199 "難" 64198 "陼" 64197 "鉶" 64196 "醙" 64195 "遲" 64194 "輸" 64193 "贈" 64192 "變" 64191 "謹" 64190 "諭" 64189 "諾" 64188 "謁" 64187 "請" 64186 "諸" 64185 "調" 64184 "視" 64183 "覆" 64182 "襁" 64181 "蝹" 64180 "華" 64179 "荒" 64178 "者" 64177 "缾" 64176 "練" 64175 "絛" 64174 "类" 64173 "節" 64172 "窱" 64171 "磌" 64170 "着" 64169 "睊" 64168 "直" 64167 "盛" 64166 "益" 64165 "瘟" 64164 "瘝" 64163 "画" 64162 "甆" 64161 "瑱" 64160 "猪" 64159 "犯" 64158 "爵" 64157 "瞧" 64156 "煮" 64155 "瀞" 64154 "漢" 64153 "滋" 64152 "滛" 64151 "流" 64150 "殺" 64149 "歹" 64148 "杖" 64147 "望" 64146 "朗" 64145 "晴" 64144 "敖" 64143 "摒" 64142 "搜" 64141 "揄" 64140 "戴" 64139 "懲" 64138 "慠" 64137 "憎" 64136 "愈" 64135 "慎" 64134 "惘" 64133 "徭" 64132 "彩" 64131 "廙" 64130 "廒" 64129 "嬨" 64128 "婢" 64127 "奔" 64126 "奄" 64125 "墳" 64124 "塚" 64123 "嗢" 64122 "喙" 64121 "啕" 64120 "喝" 64119 "勺" 64118 "勇" 64117 "冀" 64116 "充" 64115 "侀" 64114 "全" 64113 "况" 64112 "並" 64109 "舘" 64108 "𤋮" 64107 "恵" 64106 "頻" 64105 "響" 64104 "難" 64103 "逸" 64102 "辶" 64101 "贈" 64100 "賓" 64099 "謹" 64098 "謁" 64097 "視" 64096 "褐" 64095 "著" 64094 "艹" 64093 "艹" 64092 "臭" 64091 "者" 64090 "署" 64089 "繁" 64088 "縉" 64087 "練" 64086 "節" 64085 "突" 64084 "穀" 64083 "禎" 64082 "禍" 64081 "祝" 64080 "祖" 64079 "祐" 64078 "祈" 64077 "祉" 64076 "社" 64075 "碑" 64074 "琢" 64073 "爫" 64072 "煮" 64071 "漢" 64070 "渚" 64069 "海" 64068 "梅" 64067 "暑" 64066 "既" 64065 "敏" 64064 "懲" 64063 "憎" 64062 "慨" 64061 "悔" 64060 "屮" 64059 "層" 64058 "墨" 64057 "塀" 64056 "器" 64055 "嘆" 64054 "喝" 64053 "卑" 64052 "勤" 64051 "勉" 64050 "免" 64049 "僧" 64048 "侮" 64045 "鶴" 64044 "館" 64043 "飼" 64042 "飯" 64038 "都" 64037 "逸" 64034 "諸" 64032 "蘒" 64030 "羽" 64029 "精" 64028 "靖" 64027 "福" 64026 "祥" 64025 "神" 64024 "礼" 64023 "益" 64022 "猪" 64021 "凞" 64018 "晴" 64016 "塚" 64013 "嗀" 64012 "兀" 64011 "廓" 64010 "見" 64009 "降" 64008 "行" 64007 "輻" 64006 "暴" 64005 "洞" 64004 "宅" 64003 "糖" 64002 "拓" 64001 "度" 64000 "切" 63999 "刺" 63998 "茶" 63997 "什" 63996 "識" 63995 "炙" 63994 "狀" 63993 "粒" 63992 "笠" 63991 "立" 63990 "臨" 63989 "淋" 63988 "林" 63987 "麟" 63986 "鱗" 63985 "隣" 63984 "藺" 63983 "璘" 63982 "燐" 63981 "吝" 63980 "溺" 63979 "匿" 63978 "離" 63977 "里" 63976 "裡" 63975 "裏" 63974 "罹" 63973 "痢" 63972 "理" 63971 "泥" 63970 "梨" 63969 "李" 63968 "易" 63967 "履" 63966 "吏" 63965 "利" 63964 "隆" 63963 "率" 63962 "栗" 63961 "慄" 63960 "律" 63959 "輪" 63958 "淪" 63957 "崙" 63956 "倫" 63955 "陸" 63954 "戮" 63953 "六" 63952 "類" 63951 "紐" 63950 "硫" 63949 "留" 63948 "琉" 63947 "溜" 63946 "流" 63945 "柳" 63944 "杻" 63943 "劉" 63942 "阮" 63941 "暈" 63940 "龍" 63939 "遼" 63938 "蓼" 63937 "療" 63936 "燎" 63935 "樂" 63934 "料" 63933 "尿" 63932 "寮" 63931 "僚" 63930 "了" 63929 "惡" 63928 "隷" 63927 "醴" 63926 "禮" 63925 "例" 63924 "領" 63923 "靈" 63922 "零" 63921 "鈴" 63920 "聆" 63919 "羚" 63918 "瑩" 63917 "玲" 63916 "怜" 63915 "嶺" 63914 "寧" 63913 "囹" 63912 "令" 63911 "獵" 63910 "簾" 63909 "殮" 63908 "捻" 63907 "念" 63906 "廉" 63905 "說" 63904 "裂" 63903 "烈" 63902 "咽" 63901 "劣" 63900 "列" 63899 "鍊" 63898 "連" 63897 "蓮" 63896 "輦" 63895 "聯" 63894 "練" 63893 "秊" 63892 "璉" 63891 "煉" 63890 "漣" 63889 "撚" 63888 "戀" 63887 "憐" 63886 "年" 63885 "轢" 63884 "歷" 63883 "曆" 63882 "力" 63881 "黎" 63880 "麗" 63879 "驪" 63878 "閭" 63877 "礪" 63876 "濾" 63875 "旅" 63874 "廬" 63873 "女" 63872 "呂" 63871 "勵" 63870 "量" 63869 "諒" 63868 "良" 63867 "糧" 63866 "梁" 63865 "凉" 63864 "兩" 63863 "亮" 63862 "略" 63861 "掠" 63860 "若" 63859 "拾" 63858 "沈" 63857 "辰" 63856 "殺" 63855 "說" 63854 "葉" 63853 "省" 63852 "塞" 63851 "參" 63850 "索" 63849 "數" 63848 "泌" 63847 "不" 63846 "復" 63845 "便" 63844 "磻" 63843 "北" 63842 "異" 63841 "率" 63840 "怒" 63839 "寧" 63838 "丹" 63837 "諾" 63836 "樂" 63835 "拏" 63834 "讀" 63833 "陵" 63832 "菱" 63831 "綾" 63830 "稜" 63829 "凌" 63828 "凜" 63827 "肋" 63826 "勒" 63825 "陋" 63824 "縷" 63823 "累" 63822 "漏" 63821 "淚" 63820 "樓" 63819 "屢" 63818 "壘" 63817 "雷" 63816 "賂" 63815 "磊" 63814 "牢" 63813 "聾" 63812 "籠" 63811 "弄" 63810 "壟" 63809 "論" 63808 "鹿" 63807 "錄" 63806 "菉" 63805 "綠" 63804 "祿" 63803 "碌" 63802 "鷺" 63801 "魯" 63800 "露" 63799 "路" 63798 "虜" 63797 "蘆" 63796 "老" 63795 "盧" 63794 "爐" 63793 "櫓" 63792 "擄" 63791 "勞" 63790 "冷" 63789 "來" 63788 "郎" 63787 "狼" 63786 "浪" 63785 "朗" 63784 "廊" 63783 "蠟" 63782 "臘" 63781 "拉" 63780 "襤" 63779 "藍" 63778 "濫" 63777 "嵐" 63776 "鸞" 63775 "蘭" 63774 "爛" 63773 "欄" 63772 "卵" 63771 "亂" 63770 "駱" 63769 "酪" 63768 "落" 63767 "珞" 63766 "烙" 63765 "洛" 63764 "樂" 63763 "邏" 63762 "裸" 63761 "螺" 63760 "蘿" 63759 "羅" 63758 "癩" 63757 "懶" 63756 "奈" 63755 "喇" 63754 "金" 63753 "契" 63752 "龜" 63751 "龜" 63750 "句" 63749 "串" 63748 "滑" 63747 "賈" 63746 "車" 63745 "更" 63744 "豈" 55291 "ᄑᄐ" 55290 "ᄑᄉ" 55289 "ᄌᄌ" 55288 "ᄌᄇᄇ" 55287 "ᄌᄇ" 55286 "ᅌᄒ" 55285 "ᅌᄆ" 55284 "ᅀᄇᄋ" 55283 "ᅀᄇ" 55282 "ᄅᄒ" 55281 "ᄉᄐ" 55280 "ᄉᄎ" 55279 "ᄉᄌ" 55278 "ᄉᅀ" 55277 "ᄉᄉᄃ" 55276 "ᄉᄉᄀ" 55275 "ᄉᄇᄋ" 55274 "ᄉᄆ" 55273 "ᄇᄎ" 55272 "ᄇᄌ" 55271 "ᄇᄉᄃ" 55270 "ᄇᄇ" 55269 "ᄇᄆ" 55268 "ᄇᄅᄑ" 55267 "ᄇᄃ" 55266 "ᄆᄌ" 55265 "ᄆᄇᄉ" 55264 "ᄆᄆ" 55263 "ᄆᄂᄂ" 55262 "ᄆᄂ" 55261 "ᄅᄋ" 55260 "ᄅᅙᄒ" 55259 "ᄅᅌ" 55258 "ᄅᄇᄑ" 55257 "ᄅᄇᄃ" 55256 "ᄅᄆᄒ" 55255 "ᄅᄅᄏ" 55254 "ᄅᄀᄒ" 55253 "ᄅᄀᄀ" 55252 "ᄃᄐ" 55251 "ᄃᄎ" 55250 "ᄃᄌ" 55249 "ᄃᄉᄀ" 55248 "ᄃᄉ" 55247 "ᄃᄇ" 55246 "ᄃᄃᄇ" 55245 "ᄃᄃ" 55244 "ᄂᄎ" 55243 "ᄂᄅ" 55238 "ᆞᅥᅵ" 55237 "ᆞᅡ" 55236 "丨丨" 55235 "ᅵᅲ" 55234 "ᅵᅭ" 55233 "ᅵᅩᅵ" 55232 "ᅵᅧᅵ" 55231 "ᅵᅧ" 55230 "ᅵᅣᅵ" 55229 "ᅵᅣᅩ" 55228 "ᅳᅩ" 55227 "ᅳᅥᅵ" 55226 "ᅳᅥ" 55225 "ᅳᅡ" 55224 "ᅲᅩ" 55223 "ᅲᅡᅵ" 55222 "ᅮᅵᅵ" 55221 "ᅮᅧ" 55220 "ᅭᅥ" 55219 "ᅭᅡᅵ" 55218 "ᅭᅡ" 55217 "ᅩᅩᅵ" 55216 "ᅩᅧ" 43606 "ꨣ" 43603 "ꨁ" 43462 "꧐" 43388 "ᅙᅙ" 43387 "ᄒᄉ" 43386 "ᄑᄒ" 43385 "ᄐᄐ" 43384 "ᄌᄌᄒ" 43383 "ᄋᄒ" 43382 "ᄋᄅ" 43381 "ᄉᄉᄇ" 43380 "ᄇᄒ" 43379 "ᄇᄏ" 43378 "ᄇᄉᄐ" 43377 "ᄆᄉ" 43376 "ᄆᄃ" 43375 "ᄆᄀ" 43374 "ᄅᄏ" 43373 "ᄅᄌ" 43372 "ᄅᄉ" 43371 "ᄅᄇᄋ" 43370 "ᄅᄇᄇ" 43369 "ᄅᄇ" 43368 "ᄅᄆ" 43367 "ᄅᄃᄃ" 43366 "ᄅᄃ" 43365 "ᄅᄀᄀ" 43364 "ᄅᄀ" 43363 "ᄃᄌ" 43362 "ᄃᄉ" 43361 "ᄃᄇ" 43360 "ᄃᄆ" 42892 "'" 42889 ":" 42874 "Ꝺ" 42872 "&" 42871 "tf" 42862 "9" 42859 "ȝ" 42858 "3" 42849 "vy" 42842 "2" 42831 "oo" 42830 "OO" 42813 "ay" 42812 "AY" 42811 "av" 42810 "AV" 42809 "av" 42808 "AV" 42807 "au" 42806 "AU" 42805 "ao" 42804 "AO" 42803 "aa" 42802 "AA" 42801 "s" 42793 "tȝ" 42792 "T3" 42774 "˪" 42772 "˫" 42622 "ˇ" 42565 "ƨ" 42564 "2" 42510 "." 42239 "=" 42238 "-." 42237 ":" 42235 "." 42234 ".." 42232 "." 42231 "ᗡ" 42228 "U" 42227 "O" 42226 "l" 42225 "Ǝ" 42224 "E" 42222 "A" 42221 "ᙠ" 42220 "Y" 42219 "X" 42218 "W" 42215 "H" 42214 "V" 42213 "Ʌ" 42212 "ᴚ" 42211 "R" 42210 "S" 42209 "L" 42208 "N" 42207 "M" 42206 "Ⅎ" 42205 "F" 42204 "Z" 42203 "Ɔ" 42202 "C" 42201 "J" 42199 "K" 42198 "G" 42196 "T" 42195 "D" 42194 "d" 42193 "P" 42192 "B" 42178 "ꎵ" 42176 "ꎫ" 42175 "ꉙ" 42174 "ꊱ" 42170 "ꎿ" 42160 "ꏂ" 42156 "ꁐ" 42152 "ꄲ" 42151 "ꑘ" 42142 "ꁊ" 42140 "ꃀ" 42132 "ꋍ" 40899 "䀹" 40658 "黑" 40515 "鹂" 38584 "隷" 37806 "鎭" 37086 "郎" 36647 "軿" 36507 "躗" 36346 "跥" 36230 "赿" 35939 "豜" 35727 "讆" 35453 "訮" 35358 "䚶" 34369 "蘷" 34111 "蒍" 33191 "朣" 33089 "胼" 33063 "朘" 33025 "朓" 33014 "㬵" 32976 "朏" 32970 "朐" 32934 "朌" 32118 "絕" 30799 "研" 28505 "溈" 27175 "榝" 27113 "㮣" 26623 "杮" 26406 "䑃" 26358 "㫚" 26217 "晚" 26211 "䀿" 25609 "㩁" 25144 "戶" 24144 "㬺" 24114 "帡" 23296 "媯" 22783 "墫" 22635 "塡" 21855 "啓" 20540 "値" 20482 "併" 20031 "/" 20022 "\\" 19968 "ー" 17440 "㬻" 17307 "㖈" 14771 "㘽" 13310 "3l日" 13309 "3O日" 13308 "29日" 13307 "28日" 13306 "27日" 13305 "26日" 13304 "25日" 13303 "24日" 13302 "23日" 13301 "22日" 13300 "2l日" 13299 "2O日" 13298 "l9日" 13297 "l8日" 13296 "l7日" 13295 "l6日" 13294 "l5日" 13293 "l4日" 13292 "l3日" 13291 "l2日" 13290 "ll日" 13289 "lO日" 13288 "9日" 13287 "8日" 13286 "7日" 13285 "6日" 13284 "5日" 13283 "4日" 13282 "3日" 13281 "2日" 13280 "l日" 13168 "24点" 13167 "23点" 13166 "22点" 13165 "2l点" 13164 "2O点" 13163 "l9点" 13162 "l8点" 13161 "l7点" 13160 "l6点" 13159 "l5点" 13158 "l4点" 13157 "l3点" 13156 "l2点" 13155 "ll点" 13154 "lO点" 13153 "9点" 13152 "8点" 13151 "7点" 13150 "6点" 13149 "5点" 13148 "4点" 13147 "3点" 13146 "2点" 13145 "l点" 13144 "O点" 13003 "l2月" 13002 "ll月" 13001 "lO月" 13000 "9月" 12999 "8月" 12998 "7月" 12997 "6月" 12996 "5月" 12995 "4月" 12994 "3月" 12993 "2月" 12992 "l月" 12867 "(至)" 12866 "(自)" 12865 "(休)" 12864 "(祭)" 12863 "(協)" 12862 "(資)" 12861 "(企)" 12860 "(監)" 12859 "(学)" 12858 "(呼)" 12857 "(代)" 12856 "(労)" 12855 "(祝)" 12854 "(財)" 12853 "(特)" 12852 "(名)" 12851 "(社)" 12850 "(有)" 12849 "(株)" 12848 "(日)" 12847 "(土)" 12846 "(金)" 12845 "(木)" 12844 "(水)" 12843 "(火)" 12842 "(月)" 12841 "(十)" 12840 "(九)" 12839 "(八)" 12838 "(七)" 12837 "(六)" 12836 "(五)" 12835 "(四)" 12834 "(三)" 12833 "(二)" 12832 "(ー)" 12830 "(오후)" 12829 "(오전)" 12828 "(주)" 12827 "(하)" 12826 "(파)" 12825 "(타)" 12824 "(카)" 12823 "(차)" 12822 "(자)" 12821 "(아)" 12820 "(사)" 12819 "(바)" 12818 "(마)" 12817 "(라)" 12816 "(다)" 12815 "(나)" 12814 "(가)" 12813 "(ᄒ)" 12812 "(ᄑ)" 12811 "(ᄐ)" 12810 "(ᄏ)" 12809 "(ᄎ)" 12808 "(ᄌ)" 12807 "(ᄋ)" 12806 "(ᄉ)" 12805 "(ᄇ)" 12804 "(ᄆ)" 12803 "(ᄅ)" 12802 "(ᄃ)" 12801 "(ᄂ)" 12800 "(ᄀ)" 12768 "乙" 12767 "乚" 12762 "亅" 12758 "乛" 12756 "\\" 12755 "/" 12753 "丨" 12752 "ー" 12686 "ᆞᅵ" 12685 "ᆞ" 12684 "ᅲᅵ" 12683 "ᅲᅧᅵ" 12682 "ᅲᅧ" 12681 "ᅭᅵ" 12680 "ᅭᅣᅵ" 12679 "ᅭᅣ" 12678 "ᅙ" 12677 "ᄒᄒ" 12676 "ᄑᄋ" 12675 "ᄋᅀ" 12674 "ᄋᄉ" 12673 "ᅌ" 12672 "ᄋᄋ" 12671 "ᅀ" 12670 "ᄉᄌ" 12669 "ᄉᄇ" 12668 "ᄉᄃ" 12667 "ᄉᄂ" 12666 "ᄉᄀ" 12665 "ᄇᄇᄋ" 12664 "ᄇᄋ" 12663 "ᄇᄐ" 12662 "ᄇᄌ" 12661 "ᄇᄉᄃ" 12660 "ᄇᄉᄀ" 12659 "ᄇᄃ" 12658 "ᄇᄀ" 12657 "ᄆᄋ" 12656 "ᄆᅀ" 12655 "ᄆᄉ" 12654 "ᄆᄇ" 12653 "ᄅᅙ" 12652 "ᄅᅀ" 12651 "ᄅᄇᄉ" 12650 "ᄅᄃ" 12649 "ᄅᄀᄉ" 12648 "ᄂᅀ" 12647 "ᄂᄉ" 12646 "ᄂᄃ" 12645 "ᄂᄂ" 12644 "ᅠ" 12643 "丨" 12642 "ー丨" 12641 "ー" 12640 "ᅲ" 12639 "ᅮᅵ" 12638 "ᅮᅥᅵ" 12637 "ᅮᅥ" 12636 "ᅮ" 12635 "ᅭ" 12634 "ᅩᅵ" 12633 "ᅩᅡᅵ" 12632 "ᅩᅡ" 12631 "ᅩ" 12630 "ᅧᅵ" 12629 "ᅧ" 12628 "ᅥᅵ" 12627 "ᅥ" 12626 "ᅣᅵ" 12625 "ᅣ" 12624 "ᅡᅵ" 12623 "ᅡ" 12622 "ᄒ" 12621 "ᄑ" 12620 "ᄐ" 12619 "ᄏ" 12618 "ᄎ" 12617 "ᄌᄌ" 12616 "ᄌ" 12615 "ᄋ" 12614 "ᄉᄉ" 12613 "ᄉ" 12612 "ᄇᄉ" 12611 "ᄇᄇ" 12610 "ᄇ" 12609 "ᄆ" 12608 "ᄅᄒ" 12607 "ᄅᄑ" 12606 "ᄅᄐ" 12605 "ᄅᄉ" 12604 "ᄅᄇ" 12603 "ᄅᄆ" 12602 "ᄅᄀ" 12601 "ᄅ" 12600 "ᄃᄃ" 12599 "ᄃ" 12598 "ᄂᄒ" 12597 "ᄂᄌ" 12596 "ᄂ" 12595 "ᄀᄉ" 12594 "ᄀᄀ" 12593 "ᄀ" 12539 "·" 12504 "へ" 12444 "゚" 12443 "゙" 12442 "̊" 12346 "卅" 12345 "卄" 12344 "十" 12342 "〒" 12339 "/" 12333 "̥" 12332 "̉" 12315 "⟧" 12309 ")" 12308 "(" 12297 "❭" 12296 "❬" 12295 "O" 12291 "''" 12290 "˳" 12245 "龠" 12244 "龜" 12243 "龍" 12242 "齒" 12241 "齊" 12240 "鼻" 12239 "鼠" 12238 "鼓" 12237 "鼎" 12236 "黽" 12235 "黹" 12234 "黑" 12233 "黍" 12232 "黃" 12231 "麻" 12230 "麥" 12229 "鹿" 12228 "鹵" 12227 "鳥" 12226 "魚" 12225 "鬼" 12224 "鬲" 12223 "鬯" 12222 "鬥" 12221 "髟" 12220 "高" 12219 "骨" 12218 "馬" 12217 "香" 12216 "首" 12215 "食" 12214 "飛" 12213 "風" 12212 "頁" 12211 "音" 12210 "韭" 12209 "韋" 12208 "革" 12207 "面" 12206 "非" 12205 "靑" 12204 "雨" 12203 "隹" 12202 "隶" 12201 "阜" 12200 "門" 12199 "長" 12198 "金" 12197 "里" 12196 "釆" 12195 "酉" 12194 "邑" 12193 "辵" 12192 "辰" 12191 "辛" 12190 "車" 12189 "身" 12188 "足" 12187 "走" 12186 "赤" 12185 "貝" 12184 "豸" 12183 "豕" 12182 "豆" 12181 "谷" 12180 "言" 12179 "角" 12178 "見" 12177 "襾" 12176 "衣" 12175 "行" 12174 "血" 12173 "虫" 12172 "虍" 12171 "艸" 12170 "色" 12169 "艮" 12168 "舟" 12167 "舛" 12166 "舌" 12165 "臼" 12164 "至" 12163 "自" 12162 "臣" 12161 "肉" 12160 "聿" 12159 "耳" 12158 "耒" 12157 "而" 12156 "老" 12155 "羽" 12154 "羊" 12153 "网" 12152 "缶" 12151 "糸" 12150 "米" 12149 "竹" 12148 "立" 12147 "穴" 12146 "禾" 12145 "禸" 12144 "示" 12143 "石" 12142 "矢" 12141 "矛" 12140 "目" 12139 "皿" 12138 "皮" 12137 "白" 12136 "癶" 12135 "疒" 12134 "疋" 12133 "田" 12132 "用" 12131 "生" 12130 "甘" 12129 "瓦" 12128 "瓜" 12127 "玉" 12126 "玄" 12125 "犬" 12124 "牛" 12123 "牙" 12122 "片" 12121 "爿" 12120 "爻" 12119 "父" 12118 "爪" 12117 "火" 12116 "水" 12115 "气" 12114 "氏" 12113 "毛" 12112 "比" 12111 "毋" 12110 "殳" 12109 "歹" 12108 "止" 12107 "欠" 12106 "木" 12105 "月" 12104 "曰" 12103 "日" 12102 "无" 12101 "方" 12100 "斤" 12099 "斗" 12098 "文" 12097 "攴" 12096 "支" 12095 "手" 12094 "戶" 12093 "戈" 12092 "心" 12091 "彳" 12090 "彡" 12089 "彐" 12088 "弓" 12087 "弋" 12086 "廾" 12085 "廴" 12084 "广" 12083 "幺" 12082 "干" 12081 "巾" 12080 "己" 12079 "工" 12078 "巛" 12077 "山" 12076 "屮" 12075 "尸" 12074 "尢" 12073 "小" 12072 "寸" 12071 "宀" 12070 "子" 12069 "女" 12068 "大" 12067 "夕" 12066 "夊" 12065 "夂" 12064 "士" 12063 "土" 12062 "囗" 12061 "口" 12060 "又" 12059 "厶" 12058 "厂" 12057 "卩" 12056 "卜" 12055 "十" 12054 "匸" 12053 "匚" 12052 "匕" 12051 "勹" 12050 "力" 12049 "刀" 12048 "凵" 12047 "几" 12046 "冫" 12045 "冖" 12044 "冂" 12043 "八" 12042 "入" 12041 "儿" 12040 "人" 12039 "亠" 12038 "二" 12037 "亅" 12036 "乙" 12035 "/" 12034 "\\" 12033 "丨" 12032 "ー" 12019 "龟" 12018 "亀" 12016 "龙" 12015 "竜" 12014 "齿" 12013 "歯" 12012 "齐" 12011 "斉" 12009 "黄" 12008 "麦" 12005 "鱼" 12004 "鬼" 12002 "马" 12000 "饣" 11999 "飠" 11997 "食" 11996 "飞" 11995 "风" 11994 "页" 11993 "韦" 11992 "青" 11990 "阝" 11988 "门" 11987 "长" 11986 "镸" 11985 "長" 11984 "钅" 11983 "阝" 11981 "辶" 11980 "辶" 11979 "车" 11977 "贝" 11976 "讠" 11973 "见" 11972 "西" 11971 "覀" 11970 "衤" 11969 "虎" 11968 "艹" 11967 "艹" 11966 "艹" 11962 "肀" 11961 "耂" 11954 "罒" 11953 "罓" 11951 "糹" 11949 "礻" 11947 "罒" 11944 "犭" 11942 "丬" 11940 "爫" 11939 "灬" 11938 "氺" 11937 "氵" 11936 "民" 11935 "母" 11934 "歺" 11931 "旡" 11929 "攵" 11928 "扌" 11927 "㣺" 11926 "忄" 11924 "彑" 11923 "幺" 11922 "巳" 11920 "尢" 11919 "尣" 11918 "兀" 11915 "㔾" 11913 "刂" 11909 "亻" 11907 "乚" 11824 "˳" 11616 "ᐃ" 11613 "X" 11604 "O" 11599 "l" 11593 "Ʃ" 11578 "Ǝ" 11577 "E" 11576 "V" 11575 "Ʌ" 11569 "O̵" 11518 "·ᐳ" 11513 "\\\\" 11497 "☧" 11492 "ϗ" 11484 "Ϭ" 11474 "6" 11473 "ʟ" 11472 "L" 11469 "ȝ" 11468 "3" 11466 "9" 11462 "/" 11453 "ш" 11452 "Ш" 11450 "-" 11444 "ᐸ·" 11441 "ω" 11438 "Ψ" 11437 "χ" 11436 "X" 11435 "ɸ" 11434 "Φ" 11432 "Y" 11430 "T" 11429 "c" 11428 "C" 11427 "p" 11426 "P" 11424 "Π" 11423 "o" 11422 "O" 11418 "N" 11416 "M" 11414 "λ" 11413 "k" 11412 "K" 11410 "l" 11406 "H" 11401 "ɛ" 11400 "Ɛ" 11398 "ᐃ" 11397 "r" 11396 "ᒥ" 11369 "K̩" 11367 "H̩" 11005 "//" 11003 "///" 10870 "===" 10869 "==" 10868 "::=" 10815 "∐" 10814 "⨟" 10813 "⌙" 10800 "ẋ" 10799 "x" 10785 "↾" 10784 "≫" 10781 "⋈" 10764 "ʃʃʃʃ" 10758 "⊔" 10757 "⊓" 10756 "⊎" 10755 "⊍" 10754 "⊗" 10753 "⊕" 10752 "⊙" 10745 "\\" 10744 "/" 10742 "/̄" 10741 "\\" 10713 "⦚" 10692 "〼" 10686 "◎" 10540 "x" 10539 "x" 10217 "❭" 10216 "❬" 10201 "T" 10178 "ꓕ" 10101 "}" 10100 "{" 10099 ")" 10098 "(" 10095 ">" 10094 "<" 10089 ")" 10088 "(" 9900 "॰" 9826 "⋄" 9793 "⊕" 9784 "⎈" 9776 "Ⲷ" 9744 "□" 9737 "⊙" 9702 "°" 9696 "⌒" 9675 "°" 9674 "⋄" 9671 "⋄" 9658 "▶" 9656 "▶" 9655 "⊲" 9649 "⏥" 9632 "∎" 9629 "▘" 9623 "▖" 9620 "ˉ" 9616 "▌" 9608 "∎" 9587 "x" 9585 "/" 9507 "├" 9487 "┌" 9475 "│" 9473 "ー" 9472 "ー" 9435 "Ⓘ" 9413 "℗" 9397 "(z)" 9396 "(y)" 9395 "(x)" 9394 "(vv)" 9393 "(v)" 9392 "(u)" 9391 "(t)" 9390 "(s)" 9389 "(r)" 9388 "(q)" 9387 "(p)" 9386 "(o)" 9385 "(n)" 9384 "(rn)" 9383 "(I)" 9382 "(k)" 9381 "(j)" 9380 "(i)" 9379 "(h)" 9378 "(g)" 9377 "(f)" 9376 "(e)" 9375 "(d)" 9374 "(c)" 9373 "(b)" 9372 "(a)" 9371 "2O." 9370 "l9." 9369 "l8." 9368 "l7." 9367 "l6." 9366 "l5." 9365 "l4." 9364 "l3." 9363 "l2." 9362 "ll." 9361 "lO." 9360 "9." 9359 "8." 9358 "7." 9357 "6." 9356 "5." 9355 "4." 9354 "3." 9353 "2." 9352 "l." 9351 "(2O)" 9350 "(l9)" 9349 "(l8)" 9348 "(l7)" 9347 "(l6)" 9346 "(l5)" 9345 "(l4)" 9344 "(l3)" 9343 "(l2)" 9342 "(ll)" 9341 "(lO)" 9340 "(9)" 9339 "(8)" 9338 "(7)" 9337 "(6)" 9336 "(5)" 9335 "(4)" 9334 "(3)" 9333 "(2)" 9332 "(I)" 9321 "➉" 9320 "➈" 9319 "➇" 9318 "➆" 9317 "➅" 9316 "➄" 9315 "➃" 9314 "➂" 9313 "➁" 9312 "➀" 9290 "\\\\" 9134 "丨" 9130 "丨" 9125 "丨" 9122 "丨" 9119 "丨" 9116 "丨" 9082 "a" 9077 "ω" 9076 "p" 9075 "i" 9068 "O̵" 9002 "❭" 9001 "❬" 8997 "⌤" 8967 "︴" 8960 "∅" 8959 "E" 8948 "ɛ" 8943 "···" 8942 "⁝" 8901 "·" 8899 "∪" 8898 "ꓵ" 8897 "v" 8896 "∧" 8869 "ꓕ" 8861 "O̵" 8854 "O̵" 8803 "≡" 8764 "~" 8758 ":" 8752 "∮∮∮" 8751 "∮∮" 8749 "ʃʃʃ" 8748 "ʃʃ" 8747 "ʃ" 8745 "ꓵ" 8744 "v" 8741 "ll" 8739 "l" 8729 "·" 8728 "°" 8727 "*" 8726 "\\" 8725 "/" 8722 "-" 8721 "Ʃ" 8719 "Π" 8710 "ᐃ" 8707 "Ǝ" 8704 "ꓯ" 8629 "↲" 8580 "ɔ" 8579 "Ɔ" 8575 "rn" 8574 "d" 8573 "c" 8572 "l" 8571 "xii" 8570 "xi" 8569 "x" 8568 "ix" 8567 "viii" 8566 "vii" 8565 "vi" 8564 "v" 8563 "iv" 8562 "iii" 8561 "ii" 8560 "i" 8559 "M" 8558 "D" 8557 "C" 8556 "L" 8555 "XII" 8554 "XI" 8553 "X" 8552 "IX" 8551 "VIII" 8550 "VII" 8549 "VI" 8548 "V" 8547 "IV" 8546 "lll" 8545 "ll" 8544 "l" 8521 "j" 8520 "i" 8519 "e" 8518 "d" 8517 "D" 8514 "ꓶ" 8513 "ꓨ" 8512 "Ʃ" 8511 "Π" 8510 "ᒥ" 8509 "y" 8508 "n" 8507 "FAX" 8505 "i" 8504 "ד" 8503 "ג" 8502 "ב" 8501 "א" 8500 "o" 8499 "M" 8497 "F" 8496 "E" 8495 "e" 8494 "e" 8493 "C" 8492 "B" 8490 "K" 8489 "ɿ" 8488 "Z" 8487 "Ʊ" 8486 "ᘯ" 8484 "Z" 8481 "TEL" 8477 "R" 8476 "R" 8475 "R" 8474 "Q" 8473 "P" 8470 "No" 8469 "N" 8467 "l" 8466 "L" 8465 "l" 8464 "l" 8463 "h̵" 8462 "h" 8461 "H" 8460 "H" 8459 "H" 8458 "g" 8457 "°F" 8456 "Э" 8455 "Ɛ" 8454 "º/₀₀" 8453 "º/₀₀" 8451 "°C" 8450 "C" 8449 "º/₀₀" 8448 "º/₀₀" 8364 "Ɛ" 8363 "ḏ̵" 8361 "W̵" 8360 "Rs" 8356 "£" 8304 "º" 8287 " " 8282 ":" 8279 "''''" 8275 "~" 8274 "º/₀₀" 8270 "*" 8265 "!?" 8264 "?!" 8263 "??" 8260 "/" 8259 "-" 8257 "/" 8254 "ˉ" 8252 "!!" 8250 ">" 8249 "<" 8247 "'''" 8246 "''" 8245 "'" 8244 "'''" 8243 "''" 8242 "'" 8241 "º/₀₀₀" 8240 "º/₀₀" 8239 " " 8233 " " 8232 " " 8231 "·" 8230 "..." 8229 ".." 8228 "." 8226 "·" 8223 "''" 8221 "''" 8220 "''" 8219 "'" 8218 "," 8217 "'" 8216 "'" 8214 "ll" 8213 "ー" 8212 "ー" 8211 "-" 8210 "-" 8209 "-" 8208 "-" 8202 " " 8201 " " 8200 " " 8199 " " 8198 " " 8197 " " 8196 " " 8195 " " 8194 " " 8193 " " 8192 " " 8190 "'" 8189 "'" 8175 "'" 8128 "~" 8127 "'" 8126 "i" 8125 "'" 8061 "ῴ" 7935 "y" 7837 "f" 7834 "ả" 7586 "ᵍ" 7583 "ᵋ" 7564 "y" 7555 "g" 7544 "ᴴ" 7506 "º" 7467 "л" 7465 "ᴘ" 7464 "n" 7463 "ʌ" 7462 "r" 7460 "ƨ" 7458 "z" 7457 "vv" 7456 "v" 7452 "u" 7451 "t" 7444 "ǝo" 7441 "o" 7440 "ɔ" 7439 "o" 7435 "k" 7432 "ɜ" 7428 "c" 7004 "᭐" 7000 "ᬨ" 6995 "ᬑ" 6994 "ᬍ" 6800 "ᩅ" 6784 "ᩅ" 6609 "ᦱ" 6608 "ᦞ" 6294 "ᡜ" 6229 "ᠵ" 6158 " " 6153 ":" 6147 ":" 6106 "๛" 6105 "๏" 6101 "๚" 6100 "ฯ" 6099 "̊" 6091 "่" 6086 "̊" 6074 "ื" 6073 "ึ" 6072 "ี" 6071 "ิ" 6051 "អ" 5941 "/" 5760 " " 5750 "ᖖᒑ" 5749 "ᖖᒐ" 5748 "ᖖᒎ" 5747 "ᖖJ" 5746 "ᖖᒌ" 5745 "ᖖᒋ" 5744 "ᖕᒉ" 5743 "ᕐᑫ" 5742 "x" 5741 "X" 5685 "ᘯ" 5684 "Ʊ" 5678 "Ʊ" 5668 "ᕊ" 5667 "ᕆ" 5666 "ᕃ" 5639 "ᓚ" 5636 "ᓓ" 5635 "ᒉ" 5634 "ᒐ" 5623 "B" 5616 "M" 5610 "D" 5598 "D" 5573 "A" 5556 "F" 5551 "b" 5524 "ᖕᒑ" 5523 "ᖕᒐ" 5522 "ᖕᒎ" 5521 "ᖕJ" 5520 "ᖕᒌ" 5519 "ᖕᒋ" 5518 "ᖕᒊ" 5511 "R" 5509 "ᕐᒃ" 5508 "ᕐᑳ" 5507 "ᕐᑲ" 5506 "ᕐᑰ" 5505 "ᕐd" 5504 "ᕐᑮ" 5503 "ᕐP" 5502 "ᕐᑬ" 5501 "x" 5500 "H" 5495 "ẟ" 5481 "ᕧ·" 5480 "·ᕧ" 5468 "ᕚ·" 5467 "·ᕚ" 5455 "ᕌ·" 5454 "·ᕌ" 5441 "x" 5440 "ᐩ" 5436 "ᔮ·" 5435 "·ᔮ" 5434 "ᔭ·" 5433 "·ᔭ" 5432 "ᔫ·" 5431 "·ᔫ" 5430 "ᔪ·" 5429 "·ᔪ" 5428 "ᔩ·" 5427 "·ᔩ" 5426 "ᔨ·" 5425 "·ᔨ" 5424 "4·" 5423 "·4" 5412 "ᔖ·" 5411 "·ᔖ" 5410 "ᔕ·" 5409 "·ᔕ" 5408 "ᔔ·" 5407 "·ᔔ" 5406 "ᔓ·" 5405 "·ᔓ" 5404 "ᔒ·" 5403 "·ᔒ" 5402 "ᔑ·" 5401 "·ᔑ" 5400 "ᔐ·" 5399 "·ᔐ" 5391 "ᔋᒐ" 5390 "ᔋᑲ" 5389 "ᔋᑕ" 5388 "ᔋᐸ" 5379 "ᓵ·" 5378 "·ᓵ" 5377 "ᓴ·" 5376 "·ᓴ" 5375 "ᓲ·" 5374 "·ᓲ" 5373 "ᓱ·" 5372 "·ᓱ" 5371 "ᓰ·" 5370 "·ᓰ" 5369 "ᓯ·" 5368 "·ᓯ" 5367 "ᓭ·" 5366 "·ᓭ" 5353 "ᓛ·" 5352 "·ᓛ" 5351 "ᓚ·" 5350 "·ᓚ" 5349 "ᓘ·" 5348 "·ᓘ" 5347 "ᓗ·" 5346 "·ᓗ" 5345 "ᓖ·" 5344 "·ᓖ" 5343 "ᓕ·" 5342 "·ᓕ" 5341 "ᓓ·" 5340 "·ᓓ" 5329 "ᐡ" 5326 "ᓈᒫ" 5325 "·ᓈ" 5324 "ᓇ·" 5323 "·ᓇ" 5322 "ᓀ·" 5321 "·ᓀ" 5311 "2" 5305 "ᒫ·" 5304 "·ᒫ" 5303 "l·" 5302 "·L" 5301 "ᒨ·" 5300 "·ᒨ" 5299 "ᒧ·" 5298 "·ᒧ" 5297 "ᒦ·" 5296 "·ᒦ" 5295 "ᒥ·" 5294 "·ᒥ" 5293 "ᒣ·" 5292 "·ᒣ" 5290 "L" 5279 "ᒑ·" 5278 "·ᒑ" 5277 "ᒐ·" 5276 "·ᒐ" 5275 "ᒎ·" 5274 "·ᒎ" 5273 "J·" 5272 "·J" 5271 "ᒌ·" 5270 "·ᒌ" 5269 "ᒋ·" 5268 "·ᒋ" 5267 "ᒉ·" 5266 "·ᒉ" 5261 "J" 5256 "ᑲᑊ" 5255 "dᑊ" 5254 "Pᑊ" 5253 "ᑫᑊ" 5249 "ᑳ·" 5248 "·ᑳ" 5247 "ᑲ·" 5246 "·ᑲ" 5245 "ᑰ·" 5244 "·ᑰ" 5243 "d·" 5242 "·d" 5241 "ᑮ·" 5240 "·ᑮ" 5239 "p·" 5238 "·P" 5237 "ᑫ·" 5236 "·ᑫ" 5231 "d" 5229 "P" 5226 "ᑕᑊ" 5225 "ᑐᑊ" 5224 "ᑎᑊ" 5223 "Uᑊ" 5220 "ᑖ·" 5219 "·ᑖ" 5218 "ᑕ·" 5217 "·ᑕ" 5216 "ᑑ·" 5215 "·ᑑ" 5214 "ᑐ·" 5213 "·ᑐ" 5212 "ᑏ·" 5211 "·ᑏ" 5210 "ᑎ·" 5209 "·ᑎ" 5208 "U·" 5207 "·U" 5204 "·ᑐ" 5196 "U" 5191 "ᐹ·" 5190 "·ᐹ" 5189 "ᐸ·" 5188 "·ᐸ" 5187 "ᐴ·" 5186 "·ᐴ" 5185 "ᐳ·" 5184 "·ᐳ" 5175 "·ᐳ" 5169 "Ʌ" 5167 "V" 5159 "·" 5146 "ᐋ·" 5145 "·ᐋ" 5144 "ᐊ·" 5143 "·ᐊ" 5141 "ᐆ·" 5140 "·ᐆ" 5139 "ᐅ·" 5138 "·ᐅ" 5137 "ᐄ·" 5136 "·ᐄ" 5135 "ᐃ·" 5134 "·ᐃ" 5133 "ᐁ·" 5132 "·ᐁ" 5108 "B" 5107 "G" 5106 "h̔" 5095 "J" 5094 "K" 5090 "P" 5087 "C" 5086 "L" 5082 "S" 5081 "V" 5077 "S" 5076 "W" 5074 "R" 5071 "b" 5070 "4" 5059 "Z" 5058 "h" 5056 "G" 5054 "O̵" 5053 "Y" 5051 "H" 5047 "M" 5043 "W" 5041 "ᒥ" 5040 "Ⱶ" 5036 "E" 5035 "J" 5034 "A" 5033 "Y" 5029 "i" 5026 "T" 5025 "R" 5024 "D" 4607 "ᄂᄂ" 4606 "ᄀᄒ" 4605 "ᄀᄏ" 4604 "ᄀᄎ" 4603 "ᄀᄇ" 4602 "ᄀᄂ" 4601 "ᅙ" 4600 "ᄒᄇ" 4599 "ᄒᄆ" 4598 "ᄒᄅ" 4597 "ᄒᄂ" 4596 "ᄑᄋ" 4595 "ᄑᄇ" 4594 "ᄋᅀ" 4593 "ᄋᄉ" 4592 "ᅌ" 4591 "ᄋᄏ" 4590 "ᄋᄋ" 4589 "ᄋᄀᄀ" 4588 "ᄋᄀ" 4587 "ᅀ" 4586 "ᄉᄇ" 4585 "ᄉᄅ" 4584 "ᄉᄃ" 4583 "ᄉᄀ" 4582 "ᄇᄋ" 4581 "ᄇᄒ" 4580 "ᄇᄑ" 4579 "ᄇᄅ" 4578 "ᄆᄋ" 4577 "ᄆᄒ" 4576 "ᄆᄎ" 4575 "ᄆᅀ" 4574 "ᄆᄉᄉ" 4573 "ᄆᄉ" 4572 "ᄆᄇ" 4571 "ᄆᄅ" 4570 "ᄆᄀ" 4569 "ᄅᅙ" 4568 "ᄅᄏ" 4567 "ᄅᅀ" 4566 "ᄅᄉᄉ" 4565 "ᄅᄇᄋ" 4564 "ᄅᄇᄒ" 4563 "ᄅᄇᄉ" 4562 "ᄅᄆᄉ" 4561 "ᄅᄆᄀ" 4560 "ᄅᄅ" 4559 "ᄅᄃᄒ" 4558 "ᄅᄃ" 4557 "ᄅᄂ" 4556 "ᄅᄀᄉ" 4555 "ᄃᄅ" 4554 "ᄃᄀ" 4553 "ᄂᄐ" 4552 "ᄂᅀ" 4551 "ᄂᄉ" 4550 "ᄂᄃ" 4549 "ᄂᄀ" 4548 "ᄀᄉᄀ" 4547 "ᄀᄅ" 4546 "ᄒ" 4545 "ᄑ" 4544 "ᄐ" 4543 "ᄏ" 4542 "ᄎ" 4541 "ᄌ" 4540 "ᄋ" 4539 "ᄉᄉ" 4538 "ᄉ" 4537 "ᄇᄉ" 4536 "ᄇ" 4535 "ᄆ" 4534 "ᄅᄒ" 4533 "ᄅᄑ" 4532 "ᄅᄐ" 4531 "ᄅᄉ" 4530 "ᄅᄇ" 4529 "ᄅᄆ" 4528 "ᄅᄀ" 4527 "ᄅ" 4526 "ᄃ" 4525 "ᄂᄒ" 4524 "ᄂᄌ" 4523 "ᄂ" 4522 "ᄀᄉ" 4521 "ᄀᄀ" 4520 "ᄀ" 4519 "ᅩᅣᅵ" 4518 "ᅩᅣ" 4517 "ᅧᅣ" 4516 "ᅣᅮ" 4515 "ᅡᅳ" 4514 "ᆞᆞ" 4513 "ᆞᅵ" 4512 "ᆞᅮ" 4511 "ᆞᅥ" 4509 "ᅵᆞ" 4508 "丨ー" 4507 "ᅵᅮ" 4506 "ᅵᅩ" 4505 "ᅵᅣ" 4504 "ᅵᅡ" 4503 "ᅳᅵᅮ" 4502 "ーー" 4501 "ᅳᅮ" 4500 "ᅲᅵ" 4499 "ᅲᅮ" 4498 "ᅲᅧᅵ" 4497 "ᅲᅧ" 4496 "ᅲᅥᅵ" 4495 "ᅲᅥ" 4494 "ᅲᅡ" 4493 "ᅮᅮ" 4492 "ᅮᅧᅵ" 4491 "ᅮᅥᅳ" 4490 "ᅮᅡᅵ" 4489 "ᅮᅡ" 4488 "ᅭᅵ" 4487 "ᅭᅩ" 4486 "ᅭᅣ" 4485 "ᅭᅣᅵ" 4484 "ᅭᅣ" 4483 "ᅩᅮ" 4482 "ᅩᅩ" 4481 "ᅩᅧᅵ" 4480 "ᅩᅥᅵ" 4479 "ᅩᅥ" 4478 "ᅧᅮ" 4477 "ᅧᅩ" 4476 "ᅥᅳ" 4475 "ᅥᅮ" 4474 "ᅥᅩ" 4473 "ᅣᅭ" 4472 "ᅣᅩ" 4471 "ᅡᅮ" 4470 "ᅡᅩ" 4469 "丨" 4468 "ー丨" 4467 "ー" 4465 "ᅮᅵ" 4464 "ᅮᅥᅵ" 4463 "ᅮᅥ" 4460 "ᅩᅵ" 4459 "ᅩᅡᅵ" 4458 "ᅩᅡ" 4456 "ᅧᅵ" 4454 "ᅥᅵ" 4452 "ᅣᅵ" 4450 "ᅡᅵ" 4446 "ᄃᄅ" 4445 "ᄂᄒ" 4444 "ᄂᄌ" 4443 "ᄂᄉ" 4442 "ᄀᄃ" 4440 "ᄒᄒ" 4439 "ᄑᄋ" 4438 "ᄑᄇ" 4435 "ᄎᄒ" 4434 "ᄎᄏ" 4433 "ᅐᅐ" 4431 "ᅎᅎ" 4429 "ᄌᄋ" 4427 "ᄋᄑ" 4426 "ᄋᄐ" 4425 "ᄋᄎ" 4424 "ᄋᄌ" 4423 "ᄋᄋ" 4422 "ᄋᅀ" 4421 "ᄋᄉ" 4420 "ᄋᄇ" 4419 "ᄋᄆ" 4418 "ᄋᄃ" 4417 "ᄋᄀ" 4415 "ᄾᄾ" 4413 "ᄼᄼ" 4411 "ᄅᄒ" 4410 "ᄉᄑ" 4409 "ᄉᄐ" 4408 "ᄉᄏ" 4407 "ᄉᄎ" 4406 "ᄉᄌ" 4405 "ᄉᄋ" 4404 "ᄉᄉᄉ" 4403 "ᄉᄇᄀ" 4402 "ᄉᄇ" 4401 "ᄉᄆ" 4400 "ᄉᄅ" 4399 "ᄉᄃ" 4398 "ᄉᄂ" 4397 "ᄉᄀ" 4396 "ᄇᄇᄋ" 4395 "ᄇᄋ" 4394 "ᄇᄑ" 4393 "ᄇᄐ" 4392 "ᄇᄎ" 4391 "ᄇᄌ" 4390 "ᄇᄉᄌ" 4389 "ᄇᄉᄉ" 4388 "ᄇᄉᄇ" 4387 "ᄇᄉᄃ" 4386 "ᄇᄉᄀ" 4385 "ᄇᄉ" 4384 "ᄇᄃ" 4383 "ᄇᄂ" 4382 "ᄇᄀ" 4381 "ᄆᄋ" 4380 "ᄆᄇ" 4379 "ᄅᄋ" 4378 "ᄅᄒ" 4377 "ᄅᄅ" 4376 "ᄅᄂ" 4375 "ᄃᄀ" 4374 "ᄂᄇ" 4373 "ᄂᄃ" 4372 "ᄂᄂ" 4371 "ᄂᄀ" 4365 "ᄌᄌ" 4362 "ᄉᄉ" 4360 "ᄇᄇ" 4356 "ᄃᄃ" 4353 "ᄀᄀ" 4339 "ȝ" 4327 "y" 4256 "Ꞇ" 4197 "၁" 4160 "o" 4152 "ঃ" 4150 "̊" 4125 "o" 3961 "ླཱྀ" 3959 "ྲཱྀ" 3946 "ར" 3852 "་" 3805 "ຫມ" 3804 "ຫນ" 3792 "o" 3789 "̊" 3787 "๋" 3786 "๊" 3785 "้" 3784 "่" 3769 "ู" 3768 "ุ" 3763 "̊າ" 3743 "ฟ" 3742 "พ" 3741 "ฝ" 3739 "ป" 3738 "บ" 3725 "ย" 3720 "จ" 3664 "o" 3661 "̊" 3653 "า" 3649 "เเ" 3635 "̊า" 3622 "ภ" 3617 "ฆ" 3607 "ฑ" 3605 "ค" 3604 "ค" 3599 "ฎ" 3595 "ช" 3587 "ข" 3468 "ന്ന" 3459 "ঃ" 3458 "o" 3439 "ന്" 3438 "വ്" 3435 "ദ്ര" 3434 "ര്" 3430 "o" 3425 "ഞ" 3400 "െെ" 3395 "ു" 3394 "ു" 3392 "ி" 3391 "ி" 3382 "ஶ" 3380 "ழ" 3377 "ര" 3363 "ண" 3360 "O" 3356 "ஐ" 3353 "നു" 3348 "ഒൗ" 3347 "ഒാ" 3344 "എെ" 3340 "നു" 3338 "உൗ" 3337 "உ" 3336 "ഇൗ" 3331 "ঃ" 3330 "o" 3311 "౯" 3304 "౨" 3303 "౧" 3302 "o" 3297 "ಌಾ" 3250 "ల" 3249 "ఱ" 3247 "య" 3235 "ణ" 3230 "ఞ" 3228 "జ" 3220 "ఒౌ" 3219 "ఒౕ" 3218 "ఒ" 3207 "ఇ" 3206 "ఆ" 3205 "అ" 3203 "ঃ" 3202 "o" 3174 "o" 3169 "ఌా" 3168 "ఋా" 3140 "ృా" 3138 "ుా" 3129 "వా" 3127 "వ̣" 3118 "వు" 3117 "బ̣" 3109 "ధּ" 3106 "డ̣" 3104 "రּ" 3092 "ఒౌ" 3091 "ఒౕ" 3075 "ঃ" 3074 "o" 3066 "நீ" 3064 "ஷ" 3063 "எவ" 3061 "௳" 3060 "மீ" 3058 "சூ" 3056 "ய" 3054 "அ" 3053 "எ" 3052 "சு" 3051 "ஈு" 3050 "ச" 3048 "உ" 3047 "க" 3046 "o" 3031 "ள" 3024 "C" 3021 "̇" 3020 "ெள" 3019 "ேஈ" 3018 "ெஈ" 3016 "ன" 3006 "ஈ" 2992 "ஈ" 2972 "ஐ" 2954 "உள" 2946 "̊" 2920 "9" 2918 "O" 2876 "̣" 2848 "O" 2822 "ଅା" 2819 "8" 2817 "̆̇" 2798 "८" 2794 "४" 2793 "३" 2792 "२" 2790 "o" 2765 "्" 2754 "ू" 2753 "ु" 2749 "ऽ" 2748 "̣" 2708 "અાૈ" 2707 "અાે" 2705 "અાૅ" 2704 "અૈ" 2703 "અે" 2701 "અૅ" 2694 "અા" 2691 ":" 2690 "̇" 2689 "̆̇" 2666 "8" 2663 "9" 2662 "o" 2637 "्" 2635 "ॆ" 2620 "̣" 2580 "ਅੌ" 2576 "ਅੈ" 2575 "ੲੇ" 2570 "ੳੂ" 2569 "ੳੁ" 2568 "ੲੀ" 2567 "ੲਿ" 2566 "ਅਾ" 2563 "ঃ" 2562 "̇" 2541 "9" 2538 "8" 2534 "O" 2529 "ঋৃ" 2528 "ঋৃ" 2492 "̣" 2438 "অা" 2433 "̆̇" 2429 "?" 2406 "o" 2388 "́" 2387 "̀" 2386 "̱" 2364 "̣" 2324 "अाै" 2323 "अाे" 2322 "अाॆ" 2321 "अॉ" 2320 "एे" 2318 "एॆ" 2317 "एॅ" 2312 "र्इ" 2310 "अा" 2308 "अॆ" 2307 ":" 2306 "̇" 2305 "̆̇" 2042 "_" 2037 "'" 2036 "'" 2035 "̈" 2030 "̂" 2029 "̇" 2027 "̄" 1994 "l" 1984 "O" 1955 "ޢ" 1953 "ޠ" 1951 "ޞ" 1946 "ޙ" 1863 "́" 1858 "ܼ" 1857 "̇" 1856 "̇" 1796 ":" 1795 ":" 1794 "." 1793 "." 1785 "٩" 1784 "٨" 1783 "٧" 1779 "٣" 1778 "٢" 1777 "١" 1776 "." 1772 "۟" 1749 "ه" 1748 "." 1744 "ٺ" 1740 "ى" 1731 "ö" 1730 "ۀ" 1729 "ه" 1726 "ه" 1723 "ٹ" 1705 "ك" 1684 "ز" 1668 "ڂ" 1664 "ٿ" 1659 "ٺ" 1656 "ىٴ" 1655 "ۇٴ" 1654 "وٴ" 1653 "اٴ" 1645 "*" 1644 "،" 1643 "," 1642 "º/₀₀" 1637 "o" 1632 "." 1615 "̓" 1610 "ى" 1606 "ب" 1582 "ج" 1577 "ö" 1574 "ىٴ" 1572 "وٴ" 1571 "اٴ" 1562 "ِ" 1561 "̓" 1560 "َ" 1546 "º/₀₀" 1545 "º/₀₀" 1524 "''" 1523 "'" 1522 "''" 1521 "l'" 1520 "ll" 1505 "o" 1503 "l" 1497 "'" 1496 "v" 1493 "l" 1477 "̣" 1476 "̇" 1475 ":" 1474 "̇" 1473 "̇" 1466 "̇" 1465 "̇" 1460 "̣" 1455 "̊" 1454 "֘" 1453 "֖" 1448 "֙" 1444 "֚" 1437 "́" 1436 "́" 1417 ":" 1415 "եւ" 1413 "o" 1412 "f" 1409 "g" 1405 "u" 1404 "n" 1402 "ɰ" 1400 "n" 1397 "j" 1392 "h" 1390 "ẟ" 1382 "q" 1379 "q" 1377 "vv" 1373 "'" 1370 "'" 1365 "O" 1363 "Φ" 1359 "S" 1357 "U" 1352 "ᑎ" 1349 "3" 1309 "vv" 1308 "W" 1307 "q" 1297 "ɛ" 1296 "Ɛ" 1293 "ɢ" 1292 "G" 1290 "Ƕ" 1281 "d" 1257 "o̵" 1256 "O̵" 1249 "ȝ" 1248 "3" 1241 "ǝ" 1240 "Ə" 1237 "ae" 1236 "AE" 1231 "i" 1230 "ᴍ̦" 1229 "M̦" 1228 "ҷ" 1227 "Ҷ" 1226 "ʜ̦" 1225 "H̦" 1224 "ʜ̦" 1223 "H̦" 1222 "л̦" 1221 "Ʌ̦" 1216 "l" 1215 "ҽ̨" 1214 "Ҽ̨" 1211 "h" 1202 "X̩" 1201 "y̵" 1200 "Y̵" 1199 "y" 1198 "Y" 1197 "t̩" 1196 "T̩" 1195 "c̦" 1194 "C̦" 1187 "ʜ̩" 1186 "H̩" 1183 "k̵" 1182 "K̵" 1179 "k̩" 1178 "K̩" 1177 "ɜ̦" 1176 "3̦" 1175 "ж̩" 1174 "Ж̩" 1171 "r̵" 1170 "ᒥ̵" 1169 "rᑊ" 1168 "ᒥᑊ" 1165 "b̵" 1164 "b̵" 1163 "й̦" 1162 "Ѝ̦" 1149 "vv҃" 1148 "Ѡ҃" 1141 "v" 1140 "V" 1139 "o̵" 1138 "O̵" 1137 "ψ" 1136 "Ψ" 1123 "b̵" 1122 "b̵" 1121 "vv" 1120 "ᗯ" 1117 "й" 1115 "h̵" 1112 "j" 1110 "i" 1109 "s" 1108 "ɛ" 1103 "ᴙ" 1100 "ƅ" 1099 "ьı" 1098 "ˉb" 1094 "u" 1093 "x" 1092 "ɸ" 1091 "y" 1090 "t" 1089 "c" 1088 "p" 1087 "n" 1086 "o" 1085 "ʜ" 1084 "ᴍ" 1082 "k" 1080 "ᴎ" 1079 "ɜ" 1077 "e" 1075 "r" 1074 "ʙ" 1073 "6" 1072 "a" 1068 "b" 1067 "bl" 1061 "X" 1060 "Φ" 1058 "T" 1057 "C" 1056 "P" 1055 "Π" 1054 "O" 1053 "H" 1052 "M" 1051 "Ʌ" 1050 "K" 1049 "Ѝ" 1048 "ⵍ" 1047 "3" 1045 "E" 1043 "ᒥ" 1042 "B" 1041 "b̄" 1040 "A" 1032 "J" 1030 "l" 1029 "S" 1028 "Ɛ" 1021 "Ɔ" 1018 "M" 1017 "C" 1016 "þ" 1015 "Þ" 1013 "ɛ" 1012 "O̵" 1011 "j" 1010 "c" 1009 "p" 1008 "k" 1001 "ƨ" 1000 "2" 988 "F" 982 "n" 981 "ɸ" 978 "Y" 977 "O̵" 976 "ß" 966 "ɸ" 965 "u" 964 "t" 963 "o" 961 "p" 960 "n" 959 "o" 957 "v" 954 "k" 953 "i" 952 "O̵" 951 "n̩" 949 "ɛ" 948 "ẟ" 947 "y" 946 "ß" 945 "a" 937 "ᘯ" 935 "X" 933 "Y" 932 "T" 931 "Ʃ" 929 "P" 927 "O" 925 "N" 924 "M" 923 "Ʌ" 922 "K" 921 "l" 920 "O̵" 919 "H" 918 "Z" 917 "E" 916 "ᐃ" 915 "ᒥ" 914 "B" 913 "A" 903 "·" 900 "'" 894 ";" 891 "ɔ" 890 "i" 885 "ˏ" 884 "'" 878 "̆" 870 "̊" 856 "̇" 839 "̳" 837 "̨" 835 "̓" 834 "̃" 833 "́" 832 "̀" 825 "̦" 823 "̸" 822 "̵" 807 "̦" 802 "̨" 801 "̦" 800 "̱" 789 "̓" 785 "̂" 784 "̆̇" 780 "̆" 773 "̄" 763 "˪" 760 ":" 758 "''" 756 "'" 750 "''" 733 "''" 732 "~" 731 "i" 730 "°" 729 "ॱ" 728 "ˇ" 727 "-" 723 "ՙ" 720 ":" 715 "'" 714 "'" 712 "ᑊ" 710 "^" 708 "^" 707 ">" 706 "<" 705 "ˤ" 703 "ՙ" 702 "'" 701 "'" 700 "'" 699 "'" 698 "''" 697 "'" 681 "fŋ" 680 "tɕ" 679 "tʃ" 678 "ts" 677 "dʑ" 676 "dȝ" 675 "dz" 672 "q̔" 660 "?" 658 "ȝ" 656 "z̨" 655 "y" 653 "rn" 651 "u" 642 "s̨" 637 "r̨" 636 "r̩" 630 "oᴇ" 629 "o̵" 627 "n̨" 626 "ņ" 625 "rn̦" 623 "vv" 621 "l̨" 619 "l̴" 618 "i" 617 "i" 616 "i̵" 614 "h̔" 609 "g" 608 "g̔" 602 "ǝ˞" 601 "ǝ" 599 "d̔" 598 "d̨" 595 "b̔" 593 "a" 577 "?" 567 "j" 551 "å" 550 "Å" 549 "z̦" 548 "Z̦" 547 "8" 546 "8" 540 "3" 539 "ţ" 538 "Ţ" 510 "Ó̸" 501 "ģ" 499 "dz" 498 "Dz" 497 "DZ" 487 "ğ" 486 "Ğ" 485 "g̵" 484 "G̵" 468 "ŭ" 467 "Ŭ" 466 "ŏ" 465 "Ŏ" 464 "ĭ" 463 "Ĭ" 462 "ă" 461 "Ă" 460 "nj" 459 "Nj" 458 "NJ" 457 "lj" 456 "Lj" 455 "LJ" 454 "dž" 453 "Dž" 452 "DŽ" 451 "!" 449 "ll" 448 "l" 447 "þ" 445 "s" 444 "5" 439 "3" 438 "z̵" 437 "Z̵" 436 "y̔" 435 "'Y" 430 "T̨" 429 "t̔" 428 "'T" 427 "ţ" 423 "2" 422 "R" 421 "p̔" 420 "'P" 417 "o'" 416 "O'" 415 "O̵" 414 "n̩" 413 "N̦" 410 "l̵" 409 "k̔" 408 "K'" 407 "l̵" 406 "l" 403 "G'" 402 "f̦" 401 "F̦" 397 "g" 396 "d̄" 394 "'D" 393 "D̵" 391 "C'" 388 "b" 387 "b̄" 386 "b̄" 385 "'B" 384 "b̵" 383 "f" 359 "t̵" 358 "T̵" 339 "oe" 338 "OE" 336 "Ö" 329 "'n" 322 "l̸" 321 "L̸" 320 "l·" 319 "l·" 312 "k" 307 "ij" 306 "IJ" 305 "i" 295 "h̵" 294 "H̵" 283 "ĕ" 282 "Ĕ" 273 "d̵" 272 "D̵" 248 "o̸" 240 "∂̵" 231 "c̦" 230 "ae" 216 "O̸" 215 "x" 208 "D̵" 199 "C̦" 198 "AE" 184 "," 181 "μ" 180 "'" 175 "ˉ" 165 "Y̵" 162 "c̸" 160 " " 124 "l" 119 "vv" 109 "rn" 96 "'" 73 "l" 49 "l" 48 "O" 37 "º/₀₀" 34 "''")))
+
+  (while ranges
+     (setq k (pop ranges)
+           v (pop ranges))
+     (set-char-table-range uni-confusables-char-table-multiple k v)))
+
+(ert-deftest uni-confusables-test-multiple ()
+
+  (should (string-equal
+           (char-table-range uni-confusables-char-table-multiple 195001)
+           "蜎"))
+
+  (should (string-equal
+           (char-table-range uni-confusables-char-table-multiple 194901)
+           "𥛅"))
+
+  (should (string-equal
+           (char-table-range uni-confusables-char-table-multiple 120618)
+           "O"))
+
+  (should (string-equal
+           (char-table-range uni-confusables-char-table-multiple 42510)
+           "."))
+
+  (should (string-equal
+           (char-table-range uni-confusables-char-table-multiple 12104)
+           "曰"))
+)
+
+
+;; Local Variables:
+;; coding: utf-8
+;; no-byte-compile: t
+;; End:
+
+;; uni-confusables.el ends here
\ No newline at end of file
diff --git a/packages/vlf/vlf.el b/packages/vlf/vlf.el
new file mode 100644 (file)
index 0000000..28b65f1
--- /dev/null
@@ -0,0 +1,874 @@
+;;; vlf.el --- View Large Files  -*- lexical-binding: t -*-
+
+;; Copyright (C) 2006, 2012, 2013  Free Software Foundation, Inc.
+
+;; Version: 0.9.1
+;; Keywords: large files, utilities
+;; Maintainer: Andrey Kotlarski <m00naticus@gmail.com>
+;; Authors: 2006 Mathias Dahl <mathias.dahl@gmail.com>
+;;          2012 Sam Steingold <sds@gnu.org>
+;;          2013 Andrey Kotlarski <m00naticus@gmail.com>
+;; URL: https://github.com/m00natic/vlfi
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; This package provides the M-x vlf command, which visits part of a
+;; large file without loading the entire file.
+;; The buffer uses VLF mode, which defines several commands for
+;; moving around, searching and editing selected part of file.
+
+;; This package was inspired by a snippet posted by Kevin Rodgers,
+;; showing how to use `insert-file-contents' to extract part of a
+;; file.
+
+;;; Code:
+
+(defgroup vlf nil
+  "View Large Files in Emacs."
+  :prefix "vlf-"
+  :group 'files)
+
+(defcustom vlf-batch-size 1024
+  "Defines how large each batch of file data is (in bytes)."
+  :type 'integer
+  :group 'vlf)
+(put 'vlf-batch-size 'permanent-local t)
+
+;;; Keep track of file position.
+(defvar vlf-start-pos 0
+  "Absolute position of the visible chunk start.")
+(put 'vlf-start-pos 'permanent-local t)
+
+(defvar vlf-end-pos 0 "Absolute position of the visible chunk end.")
+(put 'vlf-end-pos 'permanent-local t)
+
+(defvar vlf-file-size 0 "Total size of presented file.")
+(put 'vlf-file-size 'permanent-local t)
+
+(defvar vlf-encode-size 0 "Size in bytes of current batch decoded.")
+(put 'vlf-encode-size 'permanent-local t)
+
+(defvar vlf-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [M-next] 'vlf-next-batch)
+    (define-key map [M-prior] 'vlf-prev-batch)
+    (define-key map "+" 'vlf-change-batch-size)
+    (define-key map "-"
+      (lambda () "Decrease vlf batch size by factor of 2."
+        (interactive)
+        (vlf-change-batch-size t)))
+    (define-key map "s" 'vlf-re-search-forward)
+    (define-key map "r" 'vlf-re-search-backward)
+    (define-key map "o" 'vlf-occur)
+    (define-key map "[" 'vlf-beginning-of-file)
+    (define-key map "]" 'vlf-end-of-file)
+    (define-key map "e" 'vlf-edit-mode)
+    (define-key map "j" 'vlf-jump-to-chunk)
+    (define-key map "l" 'vlf-goto-line)
+    map)
+  "Keymap for `vlf-mode'.")
+
+(define-derived-mode vlf-mode special-mode "VLF"
+  "Mode to browse large files in."
+  (setq buffer-read-only t)
+  (set-buffer-modified-p nil)
+  (buffer-disable-undo)
+  (add-hook 'write-file-functions 'vlf-write nil t)
+  (make-local-variable 'revert-buffer-function)
+  (setq revert-buffer-function 'vlf-revert)
+  (make-local-variable 'vlf-batch-size)
+  (make-local-variable 'vlf-start-pos)
+  (make-local-variable 'vlf-end-pos)
+  (make-local-variable 'vlf-file-size)
+  (make-local-variable 'vlf-encode-size))
+
+;;;###autoload
+(defun vlf (file)
+  "View Large FILE.
+Batches of the file data from FILE will be displayed in a read-only
+buffer.  You can customize number of bytes displayed by customizing
+`vlf-batch-size'."
+  (interactive "fFile to open: ")
+  (with-current-buffer (generate-new-buffer "*vlf*")
+    (set-visited-file-name file)
+    (vlf-mode)
+    (setq vlf-file-size (vlf-get-file-size buffer-file-name))
+    (vlf-insert-file)
+    (switch-to-buffer (current-buffer))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; integration with other packages
+
+;;;###autoload
+(defun dired-vlf ()
+  "In Dired, visit the file on this line in VLF mode."
+  (interactive)
+  (vlf (dired-get-file-for-visit)))
+
+;;;###autoload
+(eval-after-load "dired"
+  '(define-key dired-mode-map "V" 'dired-vlf))
+
+;;;###autoload
+(defadvice abort-if-file-too-large (around vlf-if-file-too-large
+                                           (size op-type
+                                                 &optional filename)
+                                           compile activate)
+  "If file SIZE larger than `large-file-warning-threshold', \
+allow user to view file with `vlf', open it normally, or abort.
+OP-TYPE specifies the file operation being performed over FILENAME."
+  (and large-file-warning-threshold size
+       (> size large-file-warning-threshold)
+       (let ((char nil))
+         (while (not (memq (setq char
+                                 (read-event
+                                  (propertize
+                                   (format
+                                    "File %s is large (%s): \
+%s normally (o), %s with vlf (v) or abort (a)"
+                                    (if filename
+                                        (file-name-nondirectory filename)
+                                      "")
+                                    (file-size-human-readable size)
+                                    op-type op-type)
+                                   'face 'minibuffer-prompt)))
+                           '(?o ?O ?v ?V ?a ?A))))
+         (cond ((memq char '(?o ?O)))
+               ((memq char '(?v ?V))
+                (vlf filename)
+                (error ""))
+               ((memq char '(?a ?A))
+                (error "Aborted"))))))
+
+
+;; scroll auto batching
+(defadvice scroll-up (around vlf-scroll-up
+                             activate compile)
+  "Slide to next batch if at end of buffer in `vlf-mode'."
+  (if (and (derived-mode-p 'vlf-mode)
+           (eobp))
+      (progn (vlf-next-batch 1)
+             (goto-char (point-min)))
+    ad-do-it))
+
+(defadvice scroll-down (around vlf-scroll-down
+                               activate compile)
+  "Slide to previous batch if at beginning of buffer  in `vlf-mode'."
+  (if (and (derived-mode-p 'vlf-mode)
+           (bobp))
+      (progn (vlf-prev-batch 1)
+             (goto-char (point-max)))
+    ad-do-it))
+
+;; non-recent Emacs
+;;;###autoload
+(unless (fboundp 'file-size-human-readable)
+  (defun file-size-human-readable (file-size)
+    "Print FILE-SIZE in MB."
+    (format "%.1fMB" (/ file-size 1048576.0))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; utilities
+
+(defun vlf-change-batch-size (decrease)
+  "Change the buffer-local value of `vlf-batch-size'.
+Normally, the value is doubled;
+with the prefix argument DECREASE it is halved."
+  (interactive "P")
+  (setq vlf-batch-size (if decrease
+                            (/ vlf-batch-size 2)
+                          (* vlf-batch-size 2)))
+  (vlf-move-to-batch vlf-start-pos))
+
+(defun vlf-format-buffer-name ()
+  "Return format for vlf buffer name."
+  (format "%s(%s)[%d/%d](%d)"
+          (file-name-nondirectory buffer-file-name)
+          (file-size-human-readable vlf-file-size)
+          (/ vlf-end-pos vlf-batch-size)
+          (/ vlf-file-size vlf-batch-size)
+          vlf-batch-size))
+
+(defun vlf-update-buffer-name ()
+  "Update the current buffer name."
+  (rename-buffer (vlf-format-buffer-name) t))
+
+(defun vlf-get-file-size (file)
+  "Get size in bytes of FILE."
+  (nth 7 (file-attributes file)))
+
+(defun vlf-verify-size ()
+  "Update file size information if necessary and visited file time."
+  (unless (verify-visited-file-modtime (current-buffer))
+    (setq vlf-file-size (vlf-get-file-size buffer-file-name))
+    (set-visited-file-modtime)))
+
+(defun vlf-insert-file (&optional from-end)
+  "Insert first chunk of current file contents in current buffer.
+With FROM-END prefix, start from the back."
+  (if from-end
+      (setq vlf-start-pos (max 0 (- vlf-file-size vlf-batch-size))
+            vlf-end-pos vlf-file-size)
+    (setq vlf-start-pos 0
+          vlf-end-pos (min vlf-batch-size vlf-file-size)))
+  (vlf-move-to-chunk vlf-start-pos vlf-end-pos))
+
+(defun vlf-beginning-of-file ()
+  "Jump to beginning of file content."
+  (interactive)
+  (vlf-insert-file))
+
+(defun vlf-end-of-file ()
+  "Jump to end of file content."
+  (interactive)
+  (vlf-insert-file t))
+
+(defun vlf-revert (&optional _ignore-auto noconfirm)
+  "Revert current chunk.  Ignore _IGNORE-AUTO.
+Ask for confirmation if NOCONFIRM is nil."
+  (if (or noconfirm
+          (yes-or-no-p (format "Revert buffer from file %s? "
+                               buffer-file-name)))
+      (vlf-move-to-chunk vlf-start-pos vlf-end-pos)))
+
+(defun vlf-jump-to-chunk (n)
+  "Go to to chunk N."
+  (interactive "nGoto to chunk: ")
+  (vlf-move-to-batch (* (1- n) vlf-batch-size)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; batch movement
+
+(defun vlf-next-batch (append)
+  "Display the next batch of file data.
+When prefix argument is supplied and positive
+ jump over APPEND number of batches.
+When prefix argument is negative
+ append next APPEND number of batches to the existing buffer."
+  (interactive "p")
+  (vlf-verify-size)
+  (let ((end (min (+ vlf-end-pos (* vlf-batch-size
+                                     (abs append)))
+                  vlf-file-size)))
+    (let ((inhibit-read-only t)
+          (do-append (< append 0))
+          (pos (position-bytes (point))))
+      (if do-append
+          (goto-char (point-max))
+        (setq vlf-start-pos (- end vlf-batch-size))
+        (erase-buffer))
+      (insert-file-contents buffer-file-name nil (if do-append
+                                                     vlf-end-pos
+                                                   vlf-start-pos)
+                            end)
+      (setq vlf-end-pos end)
+      (goto-char (or (byte-to-position (+ pos (vlf-adjust-chunk)))
+                     (point-max)))))
+  (set-visited-file-modtime)
+  (set-buffer-modified-p nil)
+  (vlf-update-buffer-name))
+
+(defun vlf-prev-batch (prepend)
+  "Display the previous batch of file data.
+When prefix argument is supplied and positive
+ jump over PREPEND number of batches.
+When prefix argument is negative
+ append previous PREPEND number of batches to the existing buffer."
+  (interactive "p")
+  (if (zerop vlf-start-pos)
+      (error "Already at BOF"))
+  (vlf-verify-size)
+  (let ((inhibit-read-only t)
+        (start (max 0 (- vlf-start-pos (* vlf-batch-size
+                                           (abs prepend)))))
+        (do-prepend (< prepend 0))
+        (pos (- (position-bytes (point-max))
+                (position-bytes (point)))))
+    (if do-prepend
+        (goto-char (point-min))
+      (setq vlf-end-pos (min (+ start vlf-batch-size)
+                              vlf-file-size))
+      (erase-buffer))
+    (insert-file-contents buffer-file-name nil start
+                          (if do-prepend
+                              vlf-start-pos
+                            vlf-end-pos))
+    (setq vlf-start-pos start
+          pos (+ pos (vlf-adjust-chunk)))
+    (goto-char (or (byte-to-position (- (position-bytes (point-max))
+                                        pos))
+                   (point-max))))
+  (set-visited-file-modtime)
+  (set-buffer-modified-p nil)
+  (vlf-update-buffer-name))
+
+(defun vlf-move-to-batch (start &optional minimal)
+  "Move to batch determined by START.
+Adjust according to file start/end and show `vlf-batch-size' bytes.
+When given MINIMAL flag, skip non important operations."
+  (vlf-verify-size)
+  (setq vlf-start-pos (max 0 start)
+        vlf-end-pos (min (+ vlf-start-pos vlf-batch-size)
+                          vlf-file-size))
+  (if (= vlf-file-size vlf-end-pos)   ; re-check file size
+      (setq vlf-start-pos (max 0 (- vlf-end-pos vlf-batch-size))))
+  (let ((inhibit-read-only t)
+        (pos (position-bytes (point))))
+    (erase-buffer)
+    (insert-file-contents buffer-file-name nil
+                          vlf-start-pos vlf-end-pos)
+    (goto-char (or (byte-to-position (+ pos (vlf-adjust-chunk)))
+                   (point-max))))
+  (set-buffer-modified-p nil)
+  (set-visited-file-modtime)
+  (or minimal(vlf-update-buffer-name)))
+
+(defun vlf-move-to-chunk (start end &optional minimal)
+  "Move to chunk determined by START END.
+When given MINIMAL flag, skip non important operations."
+  (vlf-verify-size)
+  (setq vlf-start-pos (max 0 start)
+        vlf-end-pos (min end vlf-file-size))
+  (let ((inhibit-read-only t)
+        (pos (position-bytes (point))))
+    (erase-buffer)
+    (insert-file-contents buffer-file-name nil
+                          vlf-start-pos vlf-end-pos)
+    (goto-char (or (byte-to-position (+ pos (vlf-adjust-chunk)))
+                   (point-max))))
+  (set-buffer-modified-p nil)
+  (set-visited-file-modtime)
+  (or minimal (vlf-update-buffer-name)))
+
+(defun vlf-adjust-chunk ()
+  "Adjust chunk beginning until content can be properly decoded.
+Set `vlf-encode-size' to size of buffer when encoded.
+Return number of bytes moved back for this to happen."
+  (let ((shift 0)
+        (chunk-size (- vlf-end-pos vlf-start-pos)))
+    (while (and (< shift 4)
+                (< 4 (abs (- chunk-size
+                             (setq vlf-encode-size
+                                   (length (encode-coding-region
+                                            (point-min) (point-max)
+                                            buffer-file-coding-system
+                                            t))))))
+                (not (zerop vlf-start-pos)))
+      (setq shift (1+ shift)
+            vlf-start-pos (1- vlf-start-pos)
+            chunk-size (1+ chunk-size))
+      (let ((inhibit-read-only t))
+        (erase-buffer)
+        (insert-file-contents buffer-file-name nil
+                              vlf-start-pos vlf-end-pos)))
+    (set-buffer-modified-p nil)
+    shift))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; search
+
+(defun vlf-re-search (regexp count backward batch-step)
+  "Search for REGEXP COUNT number of times forward or BACKWARD.
+BATCH-STEP is amount of overlap between successive chunks."
+  (assert (< 0 count))
+  (let* ((match-chunk-start vlf-start-pos)
+         (match-chunk-end vlf-end-pos)
+         (match-start-pos (+ vlf-start-pos (position-bytes (point))))
+         (match-end-pos match-start-pos)
+         (to-find count)
+         (reporter (make-progress-reporter
+                    (concat "Searching for " regexp "...")
+                    (if backward
+                        (- vlf-file-size vlf-end-pos)
+                      vlf-start-pos)
+                    vlf-file-size)))
+    (unwind-protect
+        (catch 'end-of-file
+          (if backward
+              (while (not (zerop to-find))
+                (cond ((re-search-backward regexp nil t)
+                       (setq to-find (1- to-find)
+                             match-chunk-start vlf-start-pos
+                             match-chunk-end vlf-end-pos
+                             match-start-pos (+ vlf-start-pos
+                                                (position-bytes
+                                                 (match-beginning 0)))
+                             match-end-pos (+ vlf-start-pos
+                                              (position-bytes
+                                               (match-end 0)))))
+                      ((zerop vlf-start-pos)
+                       (throw 'end-of-file nil))
+                      (t (let ((batch-move (- vlf-start-pos
+                                              (- vlf-batch-size
+                                                 batch-step))))
+                           (vlf-move-to-batch
+                            (if (< match-start-pos batch-move)
+                                (- match-start-pos vlf-batch-size)
+                              batch-move) t))
+                         (goto-char (if (< match-start-pos
+                                           vlf-end-pos)
+                                        (or (byte-to-position
+                                             (- match-start-pos
+                                                vlf-start-pos))
+                                            (point-max))
+                                      (point-max)))
+                         (progress-reporter-update
+                          reporter (- vlf-file-size
+                                      vlf-start-pos)))))
+            (while (not (zerop to-find))
+              (cond ((re-search-forward regexp nil t)
+                     (setq to-find (1- to-find)
+                           match-chunk-start vlf-start-pos
+                           match-chunk-end vlf-end-pos
+                           match-start-pos (+ vlf-start-pos
+                                              (position-bytes
+                                               (match-beginning 0)))
+                           match-end-pos (+ vlf-start-pos
+                                            (position-bytes
+                                             (match-end 0)))))
+                    ((= vlf-end-pos vlf-file-size)
+                     (throw 'end-of-file nil))
+                    (t (let ((batch-move (- vlf-end-pos batch-step)))
+                         (vlf-move-to-batch
+                          (if (< batch-move match-end-pos)
+                              match-end-pos
+                            batch-move) t))
+                       (goto-char (if (< vlf-start-pos match-end-pos)
+                                      (or (byte-to-position
+                                           (- match-end-pos
+                                              vlf-start-pos))
+                                          (point-min))
+                                    (point-min)))
+                       (progress-reporter-update reporter
+                                                 vlf-end-pos)))))
+          (progress-reporter-done reporter))
+      (if backward
+          (vlf-goto-match match-chunk-start match-chunk-end
+                           match-end-pos match-start-pos
+                           count to-find)
+        (vlf-goto-match match-chunk-start match-chunk-end
+                         match-start-pos match-end-pos
+                         count to-find)))))
+
+(defun vlf-goto-match (match-chunk-start match-chunk-end
+                                          match-pos-start
+                                          match-pos-end
+                                          count to-find)
+  "Move to MATCH-CHUNK-START MATCH-CHUNK-END surrounding \
+MATCH-POS-START and MATCH-POS-END.
+According to COUNT and left TO-FIND, show if search has been
+successful.  Return nil if nothing found."
+  (if (= count to-find)
+      (progn (vlf-move-to-chunk match-chunk-start match-chunk-end)
+             (goto-char (or (byte-to-position (- match-pos-start
+                                                 vlf-start-pos))
+                            (point-max)))
+             (message "Not found")
+             nil)
+    (let ((success (zerop to-find)))
+      (if success
+          (vlf-update-buffer-name)
+        (vlf-move-to-chunk match-chunk-start match-chunk-end))
+      (let* ((match-end (or (byte-to-position (- match-pos-end
+                                                 vlf-start-pos))
+                            (point-max)))
+             (overlay (make-overlay (byte-to-position
+                                     (- match-pos-start
+                                        vlf-start-pos))
+                                    match-end)))
+        (overlay-put overlay 'face 'match)
+        (unless success
+          (goto-char match-end)
+          (message "Moved to the %d match which is last"
+                   (- count to-find)))
+        (sit-for 0.1)
+        (delete-overlay overlay)
+        t))))
+
+(defun vlf-re-search-forward (regexp count)
+  "Search forward for REGEXP prefix COUNT number of times.
+Search is performed chunk by chunk in `vlf-batch-size' memory."
+  (interactive (list (read-regexp "Search whole file"
+                                  (if regexp-history
+                                      (car regexp-history)))
+                     (or current-prefix-arg 1)))
+  (vlf-re-search regexp count nil (/ vlf-batch-size 8)))
+
+(defun vlf-re-search-backward (regexp count)
+  "Search backward for REGEXP prefix COUNT number of times.
+Search is performed chunk by chunk in `vlf-batch-size' memory."
+  (interactive (list (read-regexp "Search whole file backward"
+                                  (if regexp-history
+                                      (car regexp-history)))
+                     (or current-prefix-arg 1)))
+  (vlf-re-search regexp count t (/ vlf-batch-size 8)))
+
+(defun vlf-goto-line (n)
+  "Go to line N.  If N is negative, count from the end of file."
+  (interactive "nGo to line: ")
+  (let ((start-pos vlf-start-pos)
+        (end-pos vlf-end-pos)
+        (pos (point))
+        (success nil))
+    (unwind-protect
+        (if (< 0 n)
+            (progn (vlf-beginning-of-file)
+                   (goto-char (point-min))
+                   (setq success (vlf-re-search "[\n\C-m]" (1- n)
+                                                 nil 0)))
+          (vlf-end-of-file)
+          (goto-char (point-max))
+          (setq success (vlf-re-search "[\n\C-m]" (- n) t 0)))
+      (if success
+          (message "Onto line %s" n)
+        (vlf-move-to-chunk start-pos end-pos)
+        (goto-char pos)))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; occur
+
+(defvar vlf-occur-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map "n" 'vlf-occur-next-match)
+    (define-key map "p" 'vlf-occur-prev-match)
+    (define-key map "\C-m" 'vlf-occur-visit)
+    (define-key map [mouse-1] 'vlf-occur-visit)
+    (define-key map "o" 'vlf-occur-show)
+    map)
+  "Keymap for command `vlf-occur-mode'.")
+
+(define-derived-mode vlf-occur-mode special-mode "VLF[occur]"
+  "Major mode for showing occur matches of VLF opened files.")
+
+(defun vlf-occur-next-match ()
+  "Move cursor to next match."
+  (interactive)
+  (if (eq (get-char-property (point) 'face) 'match)
+      (goto-char (next-single-property-change (point) 'face)))
+  (goto-char (or (text-property-any (point) (point-max) 'face 'match)
+                 (text-property-any (point-min) (point)
+                                    'face 'match))))
+
+(defun vlf-occur-prev-match ()
+  "Move cursor to previous match."
+  (interactive)
+  (if (eq (get-char-property (point) 'face) 'match)
+      (goto-char (previous-single-property-change (point) 'face)))
+  (while (not (eq (get-char-property (point) 'face) 'match))
+    (goto-char (or (previous-single-property-change (point) 'face)
+                   (point-max)))))
+
+(defun vlf-occur-show (&optional event)
+  "Visit current `vlf-occur' link in a vlf buffer but stay in the \
+occur buffer.  If original VLF buffer has been killed,
+open new VLF session each time.
+EVENT may hold details of the invocation."
+  (interactive (list last-nonmenu-event))
+  (let ((occur-buffer (if event
+                          (window-buffer (posn-window
+                                          (event-end event)))
+                        (current-buffer))))
+    (vlf-occur-visit event)
+    (pop-to-buffer occur-buffer)))
+
+(defun vlf-occur-visit (&optional event)
+  "Visit current `vlf-occur' link in a vlf buffer.
+If original VLF buffer has been killed,
+open new VLF session each time.
+EVENT may hold details of the invocation."
+  (interactive (list last-nonmenu-event))
+  (when event
+    (set-buffer (window-buffer (posn-window (event-end event))))
+    (goto-char (posn-point (event-end event))))
+  (let* ((pos (point))
+         (pos-relative (- pos (line-beginning-position) 1))
+         (file (get-char-property pos 'file)))
+    (if file
+        (let ((chunk-start (get-char-property pos 'chunk-start))
+              (chunk-end (get-char-property pos 'chunk-end))
+              (buffer (get-char-property pos 'buffer))
+              (match-pos (+ (get-char-property pos 'line-pos)
+                            pos-relative)))
+          (or (buffer-live-p buffer)
+              (let ((occur-buffer (current-buffer)))
+                (setq buffer (vlf file))
+                (switch-to-buffer occur-buffer)))
+          (pop-to-buffer buffer)
+          (if (buffer-modified-p)
+              (cond ((and (= vlf-start-pos chunk-start)
+                          (= vlf-end-pos chunk-end))
+                     (goto-char match-pos))
+                    ((y-or-n-p "VLF buffer has been modified.  \
+Really jump to new chunk? ")
+                     (vlf-move-to-chunk chunk-start chunk-end)
+                     (goto-char match-pos)))
+            (vlf-move-to-chunk chunk-start chunk-end)
+            (goto-char match-pos))))))
+
+(defun vlf-occur (regexp)
+  "Make whole file occur style index for REGEXP.
+Prematurely ending indexing will still show what's found so far."
+  (interactive (list (read-regexp "List lines matching regexp"
+                                  (if regexp-history
+                                      (car regexp-history)))))
+  (let ((start-pos vlf-start-pos)
+        (end-pos vlf-end-pos)
+        (pos (point)))
+    (vlf-beginning-of-file)
+    (goto-char (point-min))
+    (unwind-protect (vlf-build-occur regexp)
+      (vlf-move-to-chunk start-pos end-pos)
+      (goto-char pos))))
+
+(defun vlf-build-occur (regexp)
+  "Build occur style index for REGEXP."
+  (let ((line 1)
+        (last-match-line 0)
+        (last-line-pos (point-min))
+        (file buffer-file-name)
+        (total-matches 0)
+        (match-end-pos (+ vlf-start-pos (position-bytes (point))))
+        (occur-buffer (generate-new-buffer
+                       (concat "*VLF-occur " (file-name-nondirectory
+                                               buffer-file-name)
+                               "*")))
+        (line-regexp (concat "\\(?5:[\n\C-m]\\)\\|\\(?10:"
+                             regexp "\\)"))
+        (batch-step (/ vlf-batch-size 8))
+        (end-of-file nil)
+        (reporter (make-progress-reporter
+                   (concat "Building index for " regexp "...")
+                   vlf-start-pos vlf-file-size)))
+    (unwind-protect
+        (progn
+          (while (not end-of-file)
+            (if (re-search-forward line-regexp nil t)
+                (progn
+                  (setq match-end-pos (+ vlf-start-pos
+                                         (position-bytes
+                                          (match-end 0))))
+                  (if (match-string 5)
+                      (setq line (1+ line) ; line detected
+                            last-line-pos (point))
+                    (let* ((chunk-start vlf-start-pos)
+                           (chunk-end vlf-end-pos)
+                           (vlf-buffer (current-buffer))
+                           (line-pos (line-beginning-position))
+                           (line-text (buffer-substring
+                                       line-pos (line-end-position))))
+                      (with-current-buffer occur-buffer
+                        (unless (= line last-match-line) ;new match line
+                          (insert "\n:") ; insert line number
+                          (let* ((overlay-pos (1- (point)))
+                                 (overlay (make-overlay
+                                           overlay-pos
+                                           (1+ overlay-pos))))
+                            (overlay-put overlay 'before-string
+                                         (propertize
+                                          (number-to-string line)
+                                          'face 'shadow)))
+                          (insert (propertize line-text ; insert line
+                                              'file file
+                                              'buffer vlf-buffer
+                                              'chunk-start chunk-start
+                                              'chunk-end chunk-end
+                                              'mouse-face '(highlight)
+                                              'line-pos line-pos
+                                              'help-echo
+                                              (format "Move to line %d"
+                                                      line))))
+                        (setq last-match-line line
+                              total-matches (1+ total-matches))
+                        (let ((line-start (1+
+                                           (line-beginning-position)))
+                              (match-pos (match-beginning 10)))
+                          (add-text-properties ; mark match
+                           (+ line-start match-pos (- last-line-pos))
+                           (+ line-start (match-end 10)
+                              (- last-line-pos))
+                           (list 'face 'match
+                                 'help-echo
+                                 (format "Move to match %d"
+                                         total-matches))))))))
+              (setq end-of-file (= vlf-end-pos vlf-file-size))
+              (unless end-of-file
+                (let ((batch-move (- vlf-end-pos batch-step)))
+                  (vlf-move-to-batch (if (< batch-move match-end-pos)
+                                          match-end-pos
+                                        batch-move) t))
+                (goto-char (if (< vlf-start-pos match-end-pos)
+                               (or (byte-to-position (- match-end-pos
+                                                        vlf-start-pos))
+                                   (point-min))
+                             (point-min)))
+                (setq last-match-line 0
+                      last-line-pos (line-beginning-position))
+                (progress-reporter-update reporter vlf-end-pos))))
+          (progress-reporter-done reporter))
+      (if (zerop total-matches)
+          (progn (with-current-buffer occur-buffer
+                   (set-buffer-modified-p nil))
+                 (kill-buffer occur-buffer)
+                 (message "No matches for \"%s\"" regexp))
+        (with-current-buffer occur-buffer
+          (goto-char (point-min))
+          (insert (propertize
+                   (format "%d matches from %d lines for \"%s\" \
+in file: %s" total-matches line regexp file)
+                   'face 'underline))
+          (set-buffer-modified-p nil)
+          (forward-char 2)
+          (vlf-occur-mode))
+        (display-buffer occur-buffer)))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; editing
+
+(defvar vlf-edit-mode-map
+  (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map text-mode-map)
+    (define-key map "\C-c\C-c" 'vlf-write)
+    (define-key map "\C-c\C-q" 'vlf-discard-edit)
+    (define-key map "\C-v" vlf-mode-map)
+    map)
+  "Keymap for command `vlf-edit-mode'.")
+
+(define-derived-mode vlf-edit-mode vlf-mode "VLF[edit]"
+  "Major mode for editing large file chunks."
+  (setq buffer-read-only nil)
+  (buffer-enable-undo)
+  (message (substitute-command-keys
+            "Editing: Type \\[vlf-write] to write chunk \
+or \\[vlf-discard-edit] to discard changes.")))
+
+(defun vlf-discard-edit ()
+  "Discard edit and refresh chunk from file."
+  (interactive)
+  (set-buffer-modified-p nil)
+  (vlf-move-to-chunk vlf-start-pos vlf-end-pos)
+  (vlf-mode)
+  (message "Switched to VLF mode."))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; saving
+
+(defun vlf-write ()
+  "Write current chunk to file.  Always return true to disable save.
+If changing size of chunk, shift remaining file content."
+  (interactive)
+  (when (and (buffer-modified-p)
+             (or (verify-visited-file-modtime (current-buffer))
+                 (y-or-n-p "File has changed since visited or saved.  \
+Save anyway? ")))
+    (let ((pos (point))
+          (size-change (- vlf-encode-size
+                          (setq vlf-encode-size
+                                (length (encode-coding-region
+                                         (point-min) (point-max)
+                                         buffer-file-coding-system
+                                         t))))))
+      (cond ((zerop size-change)
+             (write-region nil nil buffer-file-name vlf-start-pos t))
+            ((< 0 size-change)
+             (vlf-file-shift-back size-change))
+            (t (vlf-file-shift-forward (- size-change))))
+      (vlf-move-to-chunk vlf-start-pos vlf-end-pos)
+      (goto-char pos))
+    (vlf-mode))
+  t)
+
+(defun vlf-file-shift-back (size-change)
+  "Shift file contents SIZE-CHANGE bytes back."
+  (write-region nil nil buffer-file-name vlf-start-pos t)
+  (buffer-disable-undo)
+  (let ((read-start-pos vlf-end-pos)
+        (coding-system-for-write 'no-conversion)
+        (reporter (make-progress-reporter "Adjusting file content..."
+                                          vlf-end-pos
+                                          vlf-file-size)))
+    (while (vlf-shift-batch read-start-pos (- read-start-pos
+                                               size-change))
+      (setq read-start-pos (+ read-start-pos vlf-batch-size))
+      (progress-reporter-update reporter read-start-pos))
+    ;; pad end with space
+    (erase-buffer)
+    (vlf-verify-size)
+    (insert-char 32 size-change)
+    (write-region nil nil buffer-file-name (- vlf-file-size
+                                              size-change) t)
+    (progress-reporter-done reporter)))
+
+(defun vlf-shift-batch (read-pos write-pos)
+  "Read `vlf-batch-size' bytes from READ-POS and write them \
+back at WRITE-POS.  Return nil if EOF is reached, t otherwise."
+  (erase-buffer)
+  (vlf-verify-size)
+  (let ((read-end (+ read-pos vlf-batch-size)))
+    (insert-file-contents-literally buffer-file-name nil
+                                    read-pos
+                                    (min vlf-file-size read-end))
+    (write-region nil nil buffer-file-name write-pos 0)
+    (< read-end vlf-file-size)))
+
+(defun vlf-file-shift-forward (size-change)
+  "Shift file contents SIZE-CHANGE bytes forward.
+Done by saving content up front and then writing previous batch."
+  (buffer-disable-undo)
+  (let ((size (+ vlf-batch-size size-change))
+        (read-pos vlf-end-pos)
+        (write-pos vlf-start-pos)
+        (reporter (make-progress-reporter "Adjusting file content..."
+                                          vlf-start-pos
+                                          vlf-file-size)))
+    (when (vlf-shift-batches size read-pos write-pos t)
+      (setq write-pos (+ read-pos size-change)
+            read-pos (+ read-pos size))
+      (progress-reporter-update reporter write-pos)
+      (let ((coding-system-for-write 'no-conversion))
+        (while (vlf-shift-batches size read-pos write-pos nil)
+          (setq write-pos (+ read-pos size-change)
+                read-pos (+ read-pos size))
+          (progress-reporter-update reporter write-pos))))
+    (progress-reporter-done reporter)))
+
+(defun vlf-shift-batches (size read-pos write-pos hide-read)
+  "Append SIZE bytes of file starting at READ-POS.
+Then write initial buffer content to file at WRITE-POS.
+If HIDE-READ is non nil, temporarily hide literal read content.
+Return nil if EOF is reached, t otherwise."
+  (vlf-verify-size)
+  (let ((read-more (< read-pos vlf-file-size))
+        (start-write-pos (point-min))
+        (end-write-pos (point-max)))
+    (when read-more
+      (goto-char end-write-pos)
+      (insert-file-contents-literally buffer-file-name nil read-pos
+                                      (min vlf-file-size (+ read-pos
+                                                             size))))
+    ;; write
+    (if hide-read ; hide literal region if user has to choose encoding
+        (narrow-to-region start-write-pos end-write-pos))
+    (write-region start-write-pos end-write-pos
+                  buffer-file-name write-pos 0)
+    (delete-region start-write-pos end-write-pos)
+    (if hide-read (widen))
+    read-more))
+
+(provide 'vlf)
+
+;;; vlf.el ends here
diff --git a/packages/websocket/COPYING b/packages/websocket/COPYING
new file mode 100644 (file)
index 0000000..ecbc059
--- /dev/null
@@ -0,0 +1,339 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
\ No newline at end of file
diff --git a/packages/websocket/README.org b/packages/websocket/README.org
new file mode 100644 (file)
index 0000000..ee20381
--- /dev/null
@@ -0,0 +1,31 @@
+* Description
+This is a elisp library for websocket clients to talk to websocket
+servers, and for websocket servers to accept connections from
+websocket clients. This library is designed to be used by other
+library writers, to write apps that use websockets, and is not useful
+by itself.
+
+An example of how to use the library is in the
+[[https://github.com/ahyatt/emacs-websocket/blob/master/websocket-functional-test.el][websocket-functional-test.el]] file.
+
+This library is compatible with emacs 23 and 24, although only emacs
+24 support secure websockets.
+
+* Version release checklist
+
+Each version that is released should be checked with this checklist:
+
+- [ ] All ert test passing
+- [ ] Functional test passing on emacs 23 and 24
+- [ ] websocket.el byte compiling cleanly.
+
+* Existing clients:
+
+- [[https://github.com/tkf/emacs-ipython-notebook][Emacs IPython Notebook]]
+- [[https://github.com/syohex/emacs-realtime-markdown-viewer][Emacs Realtime Markdown Viewer]]
+- [[https://github.com/jscheid/kite][Kite]]
+
+If you are using this module for your own emacs package, please let me
+know by editing this file, adding your project, and sending a pull
+request to this repository.
+
diff --git a/packages/websocket/testserver.py b/packages/websocket/testserver.py
new file mode 100644 (file)
index 0000000..5cfcb96
--- /dev/null
@@ -0,0 +1,34 @@
+import logging
+import tornado
+import tornado.web
+from tornado import httpserver
+from tornado import ioloop
+from tornado import websocket
+
+
+class EchoWebSocket(websocket.WebSocketHandler):
+
+    def open(self):
+        logging.info("OPEN")
+
+    def on_message(self, message):
+        logging.info(u"ON_MESSAGE: {0}".format(message))
+        self.write_message(u"You said: {0}".format(message))
+
+    def on_close(self):
+        logging.info("ON_CLOSE")
+
+    def allow_draft76(self):
+        return False
+
+
+if __name__ == "__main__":
+    import tornado.options
+    tornado.options.parse_command_line()
+    application = tornado.web.Application([
+        (r"/", EchoWebSocket),
+    ])
+    server = httpserver.HTTPServer(application)
+    server.listen(9999)
+    logging.info("STARTED: Server start listening")
+    ioloop.IOLoop.instance().start()
diff --git a/packages/websocket/websocket-functional-test.el b/packages/websocket/websocket-functional-test.el
new file mode 100644 (file)
index 0000000..6a9481f
--- /dev/null
@@ -0,0 +1,152 @@
+;;; websocket-functional-test.el --- Simple functional testing
+
+;; Copyright (c) 2013  Free Software Foundation, Inc.
+
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as
+;; published by the Free Software Foundation; either version 3 of the
+;; License, or (at your option) any later version.
+;;
+;; This program is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Usage: emacs -batch -Q -L . -l websocket-functional-test.el
+;;
+;; Note: this functional tests requires that you have python with the
+;; Tornado web server.  See http://www.tornadoweb.org/en/stable/ for
+;; information on aquiring.
+
+(require 'tls)   ;; tests a particular bug we had on emacs 23
+(setq debug-on-error t)
+(require 'websocket)
+(eval-when-compile (require 'cl))
+
+;;;;;;;;;;;;;;;;;;;;;;;
+;; Local server test ;;
+;;;;;;;;;;;;;;;;;;;;;;;
+
+(message "Testing with local server")
+
+(setq websocket-debug t)
+
+(defvar wstest-server-buffer (get-buffer-create "*wstest-server*"))
+(defvar wstest-server-name "wstest-server")
+(defvar wstest-server-proc
+  (start-process wstest-server-name wstest-server-buffer
+                 "python" "testserver.py" "--log_to_stderr" "--logging=debug"))
+(sleep-for 1)
+
+(defvar wstest-msgs nil)
+(defvar wstest-closed nil)
+
+(message "Opening the websocket")
+
+(defvar wstest-ws
+  (websocket-open
+   "ws://127.0.0.1:9999"
+   :on-message (lambda (websocket frame)
+                 (push (websocket-frame-payload frame) wstest-msgs)
+                 (message "ws frame: %S" (websocket-frame-payload frame))
+                 (error "Test error (expected)"))
+   :on-close (lambda (websocket) (setq wstest-closed t))))
+
+(defun wstest-pop-to-debug ()
+  "Open websocket log buffer. Not used in testing. Just for debugging."
+  (interactive)
+  (pop-to-buffer (websocket-get-debug-buffer-create wstest-ws)))
+
+(sleep-for 0.1)
+(assert (websocket-openp wstest-ws))
+
+(assert (null wstest-msgs))
+
+(websocket-send-text wstest-ws "Hi!")
+
+(sleep-for 0.1)
+(assert (equal (car wstest-msgs) "You said: Hi!"))
+(setf (websocket-on-error wstest-ws) (lambda (ws type err)))
+(websocket-send-text wstest-ws "Hi after error!")
+(sleep-for 0.1)
+(assert (equal (car wstest-msgs) "You said: Hi after error!"))
+
+(websocket-close wstest-ws)
+(assert (null (websocket-openp wstest-ws)))
+
+(stop-process wstest-server-proc)
+(kill-process wstest-server-proc)
+
+;; Make sure the processes are closed.  This happens asynchronously,
+;; so let's wait for it.
+(sleep-for 1)
+(assert (null (process-list)) t)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Remote server test, with wss ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(when (>= (string-to-int (substring emacs-version 0 2)) 24)
+  (message "Testing with wss://echo.websocket.org")
+  (setq wstest-ws
+        (websocket-open
+         "wss://echo.websocket.org"
+         :on-open (lambda (websocket)
+                    (message "Websocket opened"))
+         :on-message (lambda (websocket frame)
+                       (push (websocket-frame-payload frame) wstest-msgs)
+                       (message "ws frame: %S" (websocket-frame-payload frame)))
+         :on-close (lambda (websocket)
+                     (message "Websocket closed")
+                     (setq wstest-closed t)))
+        wstest-msgs nil)
+  (sleep-for 0.3)
+  (assert (websocket-openp wstest-ws))
+  (assert (eq 'open (websocket-ready-state wstest-ws)))
+  (assert (null wstest-msgs))
+  (websocket-send-text wstest-ws "Hi!")
+  (sleep-for 1)
+  (assert (equal (car wstest-msgs) "Hi!"))
+  (websocket-close wstest-ws))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Local client and server ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(message "Testing with emacs websocket server.")
+(message "If this does not pass, make sure your firewall allows the connection.")
+(setq wstest-closed nil)
+(setq server-conn (websocket-server
+                   9998
+                   :on-message (lambda (ws frame)
+                                 (message "Server received text!")
+                                 (websocket-send-text ws
+                                  (websocket-frame-payload frame)))
+                   :on-open (lambda (websocket) "Client connection opened!")
+                   :on-close (lambda (websocket)
+                               (setq wstest-closed t))))
+
+(setq wstest-msgs nil
+      wstest-ws
+      (websocket-open
+       "ws://localhost:9998"
+       :on-message (lambda (websocket frame)
+                     (push (websocket-frame-payload frame) wstest-msgs)
+                     (message "ws frame: %S" (websocket-frame-payload frame)))))
+
+(assert (websocket-openp wstest-ws))
+(websocket-send-text wstest-ws "Hi to self!")
+(sleep-for 0.3)
+(assert (equal (car wstest-msgs) "Hi to self!"))
+(websocket-server-close server-conn)
+(assert wstest-closed)
+(websocket-close wstest-ws)
+
+(sleep-for 1)
+(assert (null (process-list)) t)
+(message "\nAll tests passed!\n")
diff --git a/packages/websocket/websocket-test.el b/packages/websocket/websocket-test.el
new file mode 100644 (file)
index 0000000..5de21d3
--- /dev/null
@@ -0,0 +1,593 @@
+;;; websocket-test.el --- Unit tests for the websocket layer
+
+;; Copyright (c) 2013  Free Software Foundation, Inc.
+;;
+;; Author: Andrew Hyatt <ahyatt at gmail dot com>
+;; Maintainer: Andrew Hyatt <ahyatt at gmail dot com>
+;;
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as
+;; published by the Free Software Foundation; either version 3 of the
+;; License, or (at your option) any later version.
+;;
+;; This program is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; This defines and runs ert unit tests.  You can download ert from:
+;; http://github.com/ohler/ert, it also comes with Emacs 24 and above.
+
+(require 'ert)
+(require 'websocket)
+(eval-when-compile (require 'cl))
+
+(ert-deftest websocket-genbytes-length ()
+  (loop repeat 100
+        do (should (= (string-bytes (websocket-genbytes 16)) 16))))
+
+(ert-deftest websocket-calculate-accept ()
+  ;; This example comes straight from RFC 6455
+  (should
+   (equal "s3pPLMBiTxaQ9kYGzzhZRbK+xOo="
+          (websocket-calculate-accept "dGhlIHNhbXBsZSBub25jZQ=="))))
+
+(defconst websocket-test-hello "\x81\x05\x48\x65\x6c\x6c\x6f"
+  "'Hello' string example, taken from the RFC.")
+
+(defconst websocket-test-masked-hello
+  "\x81\x85\x37\xfa\x21\x3d\x7f\x9f\x4d\x51\x58"
+  "'Hello' masked string example, taken from the RFC.")
+
+(ert-deftest websocket-get-bytes ()
+  (should (equal #x5 (websocket-get-bytes "\x5" 1)))
+  (should (equal #x101 (websocket-get-bytes "\x1\x1" 2)))
+  (should (equal #xffffff
+                 (websocket-get-bytes "\x0\x0\x0\x0\x0\xFF\xFF\xFF" 8)))
+  (should-error (websocket-get-bytes "\x0\x0\x0\x1\x0\x0\x0\x1" 8)
+                :type 'websocket-unparseable-frame)
+  (should-error (websocket-get-bytes "\x0\x0\x0" 3))
+  (should-error (websocket-get-bytes "\x0" 2) :type 'websocket-unparseable-frame))
+
+(ert-deftest websocket-get-opcode ()
+  (should (equal 'text (websocket-get-opcode websocket-test-hello))))
+
+(ert-deftest websocket-get-payload-len ()
+  (should (equal '(5 . 1)
+                 (websocket-get-payload-len
+                  (substring websocket-test-hello 1))))
+  (should (equal '(200 . 3)
+                 (websocket-get-payload-len
+                  (bindat-pack '((:len u8) (:val u16))
+                               `((:len . 126)
+                                 (:val . 200))))))
+  ;; we don't want to hit up any limits even on strange emacs builds,
+  ;; so this test has a pretty small test value
+  (should (equal '(70000 . 9)
+                 (websocket-get-payload-len
+                  (bindat-pack '((:len u8) (:val vec 2 u32))
+                               `((:len . 127)
+                                 (:val . [0 70000])))))))
+
+(ert-deftest websocket-read-frame ()
+  (should (equal (make-websocket-frame :opcode 'text :payload "Hello"
+                                       :length (length websocket-test-hello)
+                                       :completep t)
+                 (websocket-read-frame websocket-test-hello)))
+  (should (equal (make-websocket-frame :opcode 'text :payload "Hello"
+                                       :length (length websocket-test-hello)
+                                       :completep t)
+                 (websocket-read-frame (concat websocket-test-hello
+                                               "should-not-be-read"))))
+  (should (equal (make-websocket-frame :opcode 'text :payload "Hello"
+                                       :length (length websocket-test-masked-hello)
+                                       :completep t)
+                 (websocket-read-frame websocket-test-masked-hello)))
+  (should (equal (make-websocket-frame :opcode 'text :payload "Hello"
+                                       :length (length websocket-test-hello)
+                                       :completep nil)
+                 (websocket-read-frame
+                  (concat (unibyte-string
+                           (logand (string-to-char
+                                    (substring websocket-test-hello 0 1))
+                                   127))
+                          (substring websocket-test-hello 1)))))
+  (dotimes (i (- (length websocket-test-hello) 1))
+    (should-not (websocket-read-frame
+                 (substring websocket-test-hello 0
+                            (- (length websocket-test-hello) (+ i 1))))))
+  (dotimes (i (- (length websocket-test-masked-hello) 1))
+    (should-not (websocket-read-frame
+                 (substring websocket-test-masked-hello 0
+                            (- (length websocket-test-masked-hello) (+ i 1)))))))
+
+(defun websocket-test-header-with-lines (&rest lines)
+  (mapconcat 'identity (append lines '("\r\n")) "\r\n"))
+
+(ert-deftest websocket-verify-response-code ()
+  (should (websocket-verify-response-code "HTTP/1.1 101"))
+  (should
+   (eq 400 (cdr (should-error (websocket-verify-response-code "HTTP/1.1 400")
+                          :type 'websocket-received-error-http-response))))
+  (should
+   (eq 200 (cdr (should-error (websocket-verify-response-code "HTTP/1.1 200"))))))
+
+(ert-deftest websocket-verify-headers ()
+  (let ((accept "Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=")
+        (invalid-accept "Sec-WebSocket-Accept: bad")
+        (upgrade "Upgrade: websocket")
+        (connection "Connection: upgrade")
+        (ws (websocket-inner-create
+             :conn "fake-conn" :url "ws://foo/bar"
+             :accept-string "s3pPLMBiTxaQ9kYGzzhZRbK+xOo="))
+        (ws-with-protocol
+         (websocket-inner-create
+             :conn "fake-conn" :url "ws://foo/bar"
+             :accept-string "s3pPLMBiTxaQ9kYGzzhZRbK+xOo="
+             :protocols '("myprotocol")))
+        (ws-with-extensions
+         (websocket-inner-create
+             :conn "fake-conn" :url "ws://foo/bar"
+             :accept-string "s3pPLMBiTxaQ9kYGzzhZRbK+xOo="
+             :extensions '("ext1" "ext2"))))
+    (should (websocket-verify-headers
+             ws
+             (websocket-test-header-with-lines accept upgrade connection)))
+    (should-error
+     (websocket-verify-headers
+      ws
+      (websocket-test-header-with-lines invalid-accept upgrade connection))
+     :type 'websocket-invalid-header)
+    (should-error (websocket-verify-headers
+                   ws
+                   (websocket-test-header-with-lines upgrade connection))
+                  :type 'websocket-invalid-header)
+    (should-error (websocket-verify-headers
+                   ws
+                   (websocket-test-header-with-lines accept connection))
+                  :type 'websocket-invalid-header)
+    (should-error (websocket-verify-headers
+                   ws
+                   (websocket-test-header-with-lines accept upgrade))
+                  :type 'websocket-invalid-header)
+    (should-error (websocket-verify-headers
+                   ws-with-protocol
+                   (websocket-test-header-with-lines accept upgrade connection))
+                  :type 'websocket-invalid-header)
+    (should-error
+     (websocket-verify-headers
+      ws-with-protocol
+      (websocket-test-header-with-lines accept upgrade connection
+                                        "Sec-Websocket-Protocol: foo"))
+     :type 'websocket-invalid-header)
+    (should
+     (websocket-verify-headers
+      ws-with-protocol
+      (websocket-test-header-with-lines accept upgrade connection
+                                        "Sec-Websocket-Protocol: myprotocol")))
+    (should (equal '("myprotocol")
+                   (websocket-negotiated-protocols ws-with-protocol)))
+    (should-error
+     (websocket-verify-headers
+      ws-with-extensions
+      (websocket-test-header-with-lines accept upgrade connection
+                                        "Sec-Websocket-Extensions: foo")))
+    (should
+     (websocket-verify-headers
+      ws-with-extensions
+      (websocket-test-header-with-lines
+       accept upgrade connection "Sec-Websocket-Extensions: ext1, ext2; a=1")))
+    (should (equal '("ext1" "ext2; a=1")
+                   (websocket-negotiated-extensions ws-with-extensions)))
+    (should
+     (websocket-verify-headers
+      ws-with-extensions
+      (websocket-test-header-with-lines accept upgrade connection
+                                        "Sec-Websocket-Extensions: ext1"
+                                        "Sec-Websocket-Extensions: ext2; a=1")))
+    (should (equal '("ext1" "ext2; a=1")
+                   (websocket-negotiated-extensions ws-with-extensions)))))
+
+(ert-deftest websocket-create-headers ()
+  (let ((system-name "mysystem")
+        (base-headers (concat "Host: www.example.com\r\n"
+                              "Upgrade: websocket\r\n"
+                              "Connection: Upgrade\r\n"
+                              "Sec-WebSocket-Key: key\r\n"
+                              "Origin: mysystem\r\n"
+                              "Sec-WebSocket-Version: 13\r\n")))
+    (should (equal (concat base-headers "\r\n")
+                   (websocket-create-headers "ws://www.example.com/path"
+                                             "key" nil nil)))
+    (should (equal (concat base-headers
+                           "Sec-WebSocket-Protocol: protocol\r\n\r\n")
+                   (websocket-create-headers "ws://www.example.com/path"
+                                             "key" '("protocol") nil)))
+    (should (equal
+             (concat base-headers
+                     "Sec-WebSocket-Extensions: ext1; a; b=2, ext2\r\n\r\n")
+             (websocket-create-headers "ws://www.example.com/path"
+                                       "key" nil
+                                       '(("ext1" . ("a" "b=2"))
+                                         ("ext2")))))))
+
+(ert-deftest websocket-process-frame ()
+  (let* ((sent)
+         (processed)
+         (deleted)
+         (websocket (websocket-inner-create
+                     :conn t :url t
+                     :on-message (lambda (websocket frame)
+                                   (setq
+                                    processed
+                                    (websocket-frame-payload frame)))
+                     :accept-string t)))
+    (dolist (opcode '(text binary continuation))
+      (setq processed nil)
+      (should (equal
+               "hello"
+               (progn
+                 (funcall (websocket-process-frame
+                   websocket
+                   (make-websocket-frame :opcode opcode :payload "hello")))
+                 processed))))
+    (setq sent nil)
+    (flet ((websocket-send (websocket content) (setq sent content)))
+      (should (equal
+               (make-websocket-frame :opcode 'pong :completep t)
+               (progn
+                 (funcall (websocket-process-frame websocket
+                                           (make-websocket-frame :opcode 'ping)))
+                 sent))))
+    (flet ((delete-process (conn) (setq deleted t)))
+      (should (progn
+                (funcall
+                 (websocket-process-frame websocket
+                                          (make-websocket-frame :opcode 'close)))
+                deleted)))))
+
+(ert-deftest websocket-process-frame-error-handling ()
+  (let* ((error-called)
+         (websocket (websocket-inner-create
+                     :conn t :url t :accept-string t
+                     :on-message (lambda (websocket frame)
+                                   (message "In on-message")
+                                   (error "err"))
+                     :on-error (lambda (ws type err)
+                                 (should (eq 'on-message type))
+                                 (setq error-called t)))))
+    (funcall (websocket-process-frame websocket
+                                      (make-websocket-frame :opcode 'text
+                                                            :payload "hello")))
+    (should error-called)))
+
+(ert-deftest websocket-to-bytes ()
+  ;; We've tested websocket-get-bytes by itself, now we can use it to
+  ;; help test websocket-to-bytes.
+  (should (equal 30 (websocket-get-bytes (websocket-to-bytes 30 1) 1)))
+  (should (equal 300 (websocket-get-bytes (websocket-to-bytes 300 2) 2)))
+  (should (equal 70000 (websocket-get-bytes (websocket-to-bytes 70000 8) 8)))
+  (should-error (websocket-to-bytes 536870912 8) :type 'websocket-frame-too-large)
+  (should-error (websocket-to-bytes 30 3))
+  (should-error (websocket-to-bytes 300 1))
+  ;; I'd like to test the error for 32-byte systems on 8-byte lengths,
+  ;; but elisp does not allow us to temporarily set constants such as
+  ;; most-positive-fixnum.
+  )
+
+(ert-deftest websocket-encode-frame ()
+  ;; We've tested websocket-read-frame, now we can use that to help
+  ;; test websocket-encode-frame.
+  (should (equal
+             websocket-test-hello
+             (websocket-encode-frame
+              (make-websocket-frame :opcode 'text :payload "Hello" :completep t) nil)))
+  (dolist (len '(200 70000))
+        (let ((long-string (make-string len ?x)))
+          (should (equal long-string
+                         (websocket-frame-payload
+                          (websocket-read-frame
+                           (websocket-encode-frame
+                            (make-websocket-frame :opcode 'text
+                                                  :payload long-string) t)))))))
+  (flet ((websocket-genbytes (n) (substring websocket-test-masked-hello 2 6)))
+      (should (equal websocket-test-masked-hello
+                     (websocket-encode-frame
+                      (make-websocket-frame :opcode 'text :payload "Hello"
+                                            :completep t) t))))
+  (should-not
+   (websocket-frame-completep
+    (websocket-read-frame
+     (websocket-encode-frame (make-websocket-frame :opcode 'text
+                                                   :payload "Hello"
+                                                   :completep nil) t))))
+  (dolist (opcode '(close ping pong))
+    (should (equal
+             opcode
+             (websocket-frame-opcode
+              (websocket-read-frame
+               (websocket-encode-frame (make-websocket-frame :opcode opcode
+                                                             :completep t) t)))))))
+
+(ert-deftest websocket-close ()
+  (let ((sent-frames)
+        (processes-deleted))
+    (flet ((websocket-send (websocket frame) (push frame sent-frames))
+           (websocket-openp (websocket) t)
+           (kill-buffer (buffer))
+           (delete-process (proc))
+           (process-buffer (conn) (add-to-list 'processes-deleted conn)))
+      (websocket-close (websocket-inner-create
+                        :conn "fake-conn"
+                        :url t
+                        :accept-string t
+                        :on-close 'identity))
+      (should (equal sent-frames (list
+                                  (make-websocket-frame :opcode 'close
+                                                        :completep t))))
+      (should (equal processes-deleted '("fake-conn"))))))
+
+(ert-deftest websocket-outer-filter ()
+  (let* ((fake-ws (websocket-inner-create
+                   :conn t :url t :accept-string t
+                   :on-open (lambda (websocket)
+                              (should (eq (websocket-ready-state websocket)
+                                          'open))
+                              (setq open-callback-called t)
+                              (error "Ignore me!"))
+                   :on-error (lambda (ws type err))))
+         (processed-frames)
+         (frame1 (make-websocket-frame :opcode 'text :payload "foo" :completep t
+                                       :length 9))
+         (frame2 (make-websocket-frame :opcode 'text :payload "bar" :completep t
+                                       :length 9))
+         (open-callback-called)
+         (websocket-frames
+          (concat
+           (websocket-encode-frame frame1 t)
+           (websocket-encode-frame frame2 t))))
+    (flet ((websocket-process-frame
+            (websocket frame)
+            (lexical-let ((frame frame))
+              (lambda () (push frame processed-frames))))
+           (websocket-verify-response-code (output) t)
+           (websocket-verify-headers (websocket output) t))
+      (websocket-outer-filter fake-ws "Sec-")
+      (should (eq (websocket-ready-state fake-ws) 'connecting))
+      (should-not open-callback-called)
+      (websocket-outer-filter fake-ws "WebSocket-Accept: acceptstring")
+      (should-not open-callback-called)
+      (websocket-outer-filter fake-ws (concat
+                                       "\r\n\r\n"
+                                       (substring websocket-frames 0 2)))
+      (should open-callback-called)
+      (websocket-outer-filter fake-ws (substring websocket-frames 2))
+      (should (equal (list frame2 frame1) processed-frames))
+      (should-not (websocket-inflight-input fake-ws)))
+    (flet ((websocket-close (websocket)))
+      (setf (websocket-ready-state fake-ws) 'connecting)
+      (should (eq 500 (cdr (should-error
+                                (websocket-outer-filter fake-ws "HTTP/1.1 500\r\n\r\n")
+                                :type 'websocket-received-error-http-response)))))))
+
+(ert-deftest websocket-outer-filter-bad-connection ()
+  (let* ((on-open-calledp)
+         (websocket-closed-calledp)
+         (fake-ws (websocket-inner-create
+                   :conn t :url t :accept-string t
+                   :on-open (lambda (websocket)
+                              (setq on-open-calledp t)))))
+    (flet ((websocket-verify-response-code (output) t)
+           (websocket-verify-headers (websocket output) (error "Bad headers!"))
+           (websocket-close (websocket) (setq websocket-closed-calledp t)))
+      (condition-case err
+          (progn (websocket-outer-filter fake-ws "HTTP/1.1 101\r\n\r\n")
+                 (error "Should have thrown an error!"))
+        (error
+         (should-not on-open-calledp)
+         (should websocket-closed-calledp))))))
+
+(ert-deftest websocket-send-text ()
+  (flet ((websocket-send (ws frame)
+                         (should (equal
+                                  (websocket-frame-payload frame)
+                                  "\344\275\240\345\245\275"))))
+    (websocket-send-text nil "你好")))
+
+(ert-deftest websocket-send ()
+  (let ((ws (websocket-inner-create :conn t :url t :accept-string t)))
+    (flet ((websocket-ensure-connected (websocket))
+           (websocket-openp (websocket) t)
+           (process-send-string (conn string)))
+      ;; Just make sure there is no error.
+      (websocket-send ws (make-websocket-frame :opcode 'ping
+                                                       :completep t)))
+    (should-error (websocket-send ws
+                                  (make-websocket-frame :opcode 'text)))
+    (should-error (websocket-send ws
+                                  (make-websocket-frame :opcode 'close
+                                                        :payload "bye!"
+                                                        :completep t))
+                  :type 'websocket-illegal-frame)
+    (should-error (websocket-send ws
+                                  (make-websocket-frame :opcode :close))
+                  :type 'websocket-illegal-frame)))
+
+(ert-deftest websocket-verify-client-headers ()
+  (let* ((http "HTTP/1.1")
+         (host "Host: authority")
+         (upgrade "Upgrade: websocket")
+         (key (format "Sec-Websocket-Key: %s" "key"))
+         (version "Sec-Websocket-Version: 13")
+         (origin "Origin: origin")
+         (protocol "Sec-Websocket-Protocol: protocol")
+         (extensions1 "Sec-Websocket-Extensions: foo")
+         (extensions2 "Sec-Websocket-Extensions: bar; baz=2")
+         (all-required-headers (list host upgrade key version)))
+    ;; Test that all these headers are necessary
+    (should (equal
+             '(:key "key" :protocols ("protocol") :extensions ("foo" "bar; baz=2"))
+             (websocket-verify-client-headers
+              (mapconcat 'identity (append (list http "" protocol extensions1 extensions2)
+                                           all-required-headers) "\r\n"))))
+    (should (websocket-verify-client-headers
+              (mapconcat 'identity
+                         (mapcar 'upcase
+                                 (append (list http "" protocol extensions1 extensions2)
+                                         all-required-headers)) "\r\n")))
+    (dolist (header all-required-headers)
+      (should-not (websocket-verify-client-headers
+                   (mapconcat 'identity (append (list http "")
+                                                (remove header all-required-headers))
+                              "\r\n"))))
+    (should-not (websocket-verify-client-headers
+                 (mapconcat 'identity (append (list "HTTP/1.0" "") all-required-headers)
+                            "\r\n")))))
+
+(ert-deftest websocket-intersect ()
+  (should (equal '(2) (websocket-intersect '(1 2) '(2 3))))
+  (should (equal nil (websocket-intersect '(1 2) '(3 4))))
+  (should (equal '(1 2) (websocket-intersect '(1 2) '(1 2)))))
+
+(ert-deftest websocket-get-server-response ()
+  (let ((ws (websocket-inner-create :conn t :url t :accept-string "key"
+                                    :protocols '("spa" "spb")
+                                    :extensions '("sea" "seb"))))
+    (should (equal (concat
+                    "HTTP/1.1 101 Switching Protocols\r\n"
+                    "Upgrade: websocket\r\n"
+                    "Connection: Upgrade\r\n"
+                    "Sec-WebSocket-Accept: key\r\n\r\n")
+                   (websocket-get-server-response ws nil nil)))
+    (should (string-match "Sec-Websocket-Protocol: spb\r\n"
+                          (websocket-get-server-response ws '("spb" "spc") nil)))
+    (should-not (string-match "Sec-Websocket-Protocol:"
+                              (websocket-get-server-response ws '("spc") nil)))
+    (let ((output (websocket-get-server-response ws '("spa" "spb") nil)))
+      (should (string-match "Sec-Websocket-Protocol: spa\r\n" output))
+      (should (string-match "Sec-Websocket-Protocol: spb\r\n" output)))
+    (should (string-match "Sec-Websocket-Extensions: sea"
+                          (websocket-get-server-response ws nil '("sea" "sec"))))
+    (should-not (string-match "Sec-Websocket-Extensions:"
+                              (websocket-get-server-response ws nil '("sec"))))
+    (let ((output (websocket-get-server-response ws nil '("sea" "seb"))))
+      (should (string-match "Sec-Websocket-Extensions: sea\r\n" output))
+      (should (string-match "Sec-Websocket-Extensions: seb\r\n" output)))))
+
+(ert-deftest websocket-server-filter ()
+  (let ((on-open-called)
+        (ws (websocket-inner-create :conn t :url t :accept-string "key"
+                                    :on-open (lambda (ws) (setq on-open-called t))))
+        (closed)
+        (response)
+        (processed))
+    (flet ((process-send-string (p text) (setq response text))
+           (websocket-close (ws) (setq closed t))
+           (process-get (process sym) ws))
+     ;; Bad request, in two parts
+     (flet ((websocket-verify-client-headers (text) nil))
+       (websocket-server-filter nil "HTTP/1.0 GET /foo \r\n")
+       (should-not closed)
+       (websocket-server-filter nil "\r\n")
+       (should (equal response "HTTP/1.1 400 Bad Request\r\n\r\n"))
+       (should-not (websocket-inflight-input ws)))
+    ;; Good request, followed by packet
+     (setq closed nil
+           response nil)
+     (setf (websocket-inflight-input ws) nil)
+     (flet ((websocket-verify-client-headers (text) t)
+            (websocket-get-server-response (ws protocols extensions)
+                                           "response")
+            (websocket-process-input-on-open-ws (ws text)
+                                                (setq processed t)
+                                                (should
+                                                 (equal text websocket-test-hello))))
+       (websocket-server-filter nil
+                                (concat "\r\n\r\n" websocket-test-hello))
+       (should (equal (websocket-ready-state ws) 'open))
+       (should-not closed)
+       (should (equal response "response"))
+       (should processed)))))
+
+(ert-deftest websocket-complete-server-response-test ()
+  ;; Example taken from RFC
+  (should (equal
+           (concat "HTTP/1.1 101 Switching Protocols\r\n"
+                   "Upgrade: websocket\r\n"
+                   "Connection: Upgrade\r\n"
+                   "Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=\r\n"
+                   "Sec-WebSocket-Protocol: chat\r\n\r\n"
+                   )
+           (let ((header-info
+                          (websocket-verify-client-headers
+                           (concat "GET /chat HTTP/1.1\r\n"
+                                   "Host: server.example.com\r\n"
+                                   "Upgrade: websocket\r\n"
+                                   "Connection: Upgrade\r\n"
+                                   "Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r\n"
+                                   "Origin: http://example.com\r\n"
+                                   "Sec-WebSocket-Protocol: chat, superchat\r\n"
+                                   "Sec-WebSocket-Version: 13\r\n"))))
+                     (should header-info)
+                     (let ((ws (websocket-inner-create
+                                :conn t :url t
+                                :accept-string (websocket-calculate-accept
+                                                (plist-get header-info :key))
+                                :protocols '("chat"))))
+                       (websocket-get-server-response
+                        ws
+                        (plist-get header-info :protocols)
+                        (plist-get header-info :extension)))))))
+
+(ert-deftest websocket-server-close ()
+  (let ((websocket-server-websockets
+         (list (websocket-inner-create :conn 'conn-a :url t :accept-string t
+                                       :server-conn 'a
+                                       :ready-state 'open)
+               (websocket-inner-create :conn 'conn-b :url t :accept-string t
+                                       :server-conn 'b
+                                       :ready-state 'open)
+               (websocket-inner-create :conn 'conn-c :url t :accept-string t
+                                       :server-conn 'b
+                                       :ready-state 'closed)))
+        (deleted-processes)
+        (closed-websockets))
+    (flet ((delete-process (conn) (add-to-list 'deleted-processes conn))
+           (websocket-close (ws)
+                            ;; we always remove on closing in the
+                            ;; actual code.
+                            (setq websocket-server-websockets
+                                  (remove ws websocket-server-websockets))
+                            (should-not (eq (websocket-ready-state ws) 'closed))
+                            (add-to-list 'closed-websockets ws)))
+      (websocket-server-close 'b))
+    (should (equal deleted-processes '(b)))
+    (should (eq 1 (length closed-websockets)))
+    (should (eq 'conn-b (websocket-conn (car closed-websockets))))
+    (should (eq 1 (length websocket-server-websockets)))
+    (should (eq 'conn-a (websocket-conn (car websocket-server-websockets))))))
+
+(ert-deftest websocket-default-error-handler ()
+  (flet ((try-error
+          (callback-type err expected-message)
+          (flet ((display-warning
+                  (type message &optional level buffer-name)
+                  (should (eq type 'websocket))
+                  (should (eq level :error))
+                  (should (string= message expected-message))))
+            (websocket-default-error-handler nil
+                                             callback-type
+                                             err))))
+    (try-error
+     'on-message
+     '(end-of-buffer)
+     "in callback `on-message': End of buffer")
+
+    (try-error
+     'on-close
+     '(wrong-number-of-arguments 1 2)
+     "in callback `on-close': Wrong number of arguments: 1, 2")))
diff --git a/packages/websocket/websocket.el b/packages/websocket/websocket.el
new file mode 100644 (file)
index 0000000..2390615
--- /dev/null
@@ -0,0 +1,989 @@
+;;; websocket.el --- Emacs WebSocket client and server
+
+;; Copyright (c) 2013  Free Software Foundation, Inc.
+
+;; Author: Andrew Hyatt <ahyatt at gmail dot com>
+;; Maintainer: Andrew Hyatt <ahyatt at gmail dot com>
+;; Keywords: Communication, Websocket, Server
+;; Version: 1.1
+;;
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as
+;; published by the Free Software Foundation; either version 3 of the
+;; License, or (at your option) any later version.
+;;
+;; This program is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; This implements RFC 6455, which can be found at
+;; http://tools.ietf.org/html/rfc6455.
+;;
+;; This library contains code to connect Emacs as a client to a
+;; websocket server, and for Emacs to act as a server for websocket
+;; connections.
+;;
+;; Websockets clients are created by calling `websocket-open', which
+;; returns a `websocket' struct.  Users of this library use the
+;; websocket struct, and can call methods `websocket-send-text', which
+;; sends text over the websocket, or `websocket-send', which sends a
+;; `websocket-frame' struct, enabling finer control of what is sent.
+;; A callback is passed to `websocket-open' that will retrieve
+;; websocket frames called from the websocket.  Websockets are
+;; eventually closed with `websocket-close'.
+;;
+;; Server functionality is similar.  A server is started with
+;; `websocket-server' called with a port and the callbacks to use,
+;; which returns a process.  The process can later be closed with
+;; `websocket-server-close'.  A `websocket' struct is also created
+;; for every connection, and is exposed through the callbacks.
+
+(require 'bindat)
+(require 'url-parse)
+(eval-when-compile (require 'cl))
+
+;;; Code:
+
+(defstruct (websocket
+            (:constructor nil)
+            (:constructor websocket-inner-create))
+  "A websocket structure.
+This follows the W3C Websocket API, except translated to elisp
+idioms.  The API is implemented in both the websocket struct and
+additional methods.  Due to how defstruct slots are accessed, all
+API methods are prefixed with \"websocket-\" and take a websocket
+as an argument, so the distrinction between the struct API and
+the additional helper APIs are not visible to the caller.
+
+A websocket struct is created with `websocket-open'.
+
+`ready-state' contains one of 'connecting, 'open, or
+'closed, depending on the state of the websocket.
+
+The W3C API \"bufferedAmount\" call is not currently implemented,
+since there is no elisp API to get the buffered amount from the
+subprocess.  There may, in fact, be output data buffered,
+however, when the `on-message' or `on-close' callbacks are
+called.
+
+`on-open', `on-message', `on-close', and `on-error' are described
+in `websocket-open'.
+
+The `negotiated-extensions' slot lists the extensions accepted by
+both the client and server, and `negotiated-protocols' does the
+same for the protocols.
+"
+  ;; API
+  (ready-state 'connecting)
+  client-data
+  on-open
+  on-message
+  on-close
+  on-error
+  negotiated-protocols
+  negotiated-extensions
+  (server-p nil :read-only t)
+
+  ;; Other data - clients should not have to access this.
+  (url (assert nil) :read-only t)
+  (protocols nil :read-only t)
+  (extensions nil :read-only t)
+  (conn (assert nil) :read-only t)
+  ;; Only populated for servers, this is the server connection.
+  server-conn
+  accept-string
+  (inflight-input nil))
+
+(defvar websocket-version "1.2"
+  "Version numbers of this version of websocket.el.")
+
+(defvar websocket-debug nil
+  "Set to true to output debugging info to a per-websocket buffer.
+The buffer is ` *websocket URL debug*' where URL is the
+URL of the connection.")
+
+(defconst websocket-guid "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
+  "The websocket GUID as defined in RFC 6455.
+Do not change unless the RFC changes.")
+
+(defvar websocket-callback-debug-on-error nil
+  "If true, when an error happens in a client callback, invoke the debugger.
+Having this on can cause issues with missing frames if the debugger is
+exited by quitting instead of continuing, so it's best to have this set
+to nil unless it is especially needed.")
+
+(defmacro websocket-document-function (function docstring)
+  "Document FUNCTION with DOCSTRING.  Use this for defstruct accessor etc."
+  (declare (indent defun)
+           (doc-string 2))
+  `(put ',function 'function-documentation ,docstring))
+
+(websocket-document-function websocket-on-open
+  "Accessor for websocket on-open callback.
+See `websocket-open' for details.
+
+\(fn WEBSOCKET)")
+
+(websocket-document-function websocket-on-message
+  "Accessor for websocket on-message callback.
+See `websocket-open' for details.
+
+\(fn WEBSOCKET)")
+
+(websocket-document-function websocket-on-close
+  "Accessor for websocket on-close callback.
+See `websocket-open' for details.
+
+\(fn WEBSOCKET)")
+
+(websocket-document-function websocket-on-error
+  "Accessor for websocket on-error callback.
+See `websocket-open' for details.
+
+\(fn WEBSOCKET)")
+
+(defun websocket-genbytes (nbytes)
+  "Generate NBYTES random bytes."
+  (let ((s (make-string nbytes ?\s)))
+    (dotimes (i nbytes)
+      (aset s i (random 256)))
+    s))
+
+(defun websocket-try-callback (websocket-callback callback-type websocket
+                                                  &rest rest)
+  "Invoke function WEBSOCKET-CALLBACK with WEBSOCKET and REST args.
+If an error happens, it is handled according to
+`websocket-callback-debug-on-error'."
+  ;; This looks like it should be able to done more efficiently, but
+  ;; I'm not sure that's the case.  We can't do it as a macro, since
+  ;; we want it to change whenever websocket-callback-debug-on-error
+  ;; changes.
+  (let ((args rest)
+        (debug-on-error websocket-callback-debug-on-error))
+    (push websocket args)
+    (if websocket-callback-debug-on-error
+        (condition-case err
+            (apply (funcall websocket-callback websocket) args)
+          ((debug error) (funcall (websocket-on-error websocket)
+                                  websocket callback-type err)))
+      (condition-case err
+          (apply (funcall websocket-callback websocket) args)
+        (error (funcall (websocket-on-error websocket) websocket
+                        callback-type err))))))
+
+(defun websocket-genkey ()
+  "Generate a key suitable for the websocket handshake."
+  (base64-encode-string (websocket-genbytes 16)))
+
+(defun websocket-calculate-accept (key)
+  "Calculate the expect value of the accept header.
+This is based on the KEY from the Sec-WebSocket-Key header."
+  (base64-encode-string
+   (sha1 (concat key websocket-guid) nil nil t)))
+
+(defun websocket-get-bytes (s n)
+  "From string S, retrieve the value of N bytes.
+Return the value as an unsigned integer.  The value N must be a
+power of 2, up to 8.
+
+We support getting frames up to 536870911 bytes (2^29 - 1),
+approximately 537M long."
+  (if (= n 8)
+    (let* ((32-bit-parts
+            (bindat-get-field (bindat-unpack '((:val vec 2 u32)) s) :val))
+           (cval
+            (logior (lsh (aref 32-bit-parts 0) 32) (aref 32-bit-parts 1))))
+      (if (and (= (aref 32-bit-parts 0) 0)
+               (= (lsh (aref 32-bit-parts 1) -29) 0))
+          cval
+        (signal 'websocket-unparseable-frame
+                "Frame value found too large to parse!")))
+    ;; n is not 8
+    (bindat-get-field
+     (condition-case _
+         (bindat-unpack
+          `((:val
+             ,(cond ((= n 1) 'u8)
+                    ((= n 2) 'u16)
+                    ((= n 4) 'u32)
+                    ;; This is an error with the library,
+                    ;; not a user-facing, meaningful error.
+                    (t (error
+                        "websocket-get-bytes: Unknown N: %s" n)))))
+          s)
+       (args-out-of-range (signal 'websocket-unparseable-frame
+                                  (format "Frame unexpectedly shortly: %s" s))))
+     :val)))
+
+(defun websocket-to-bytes (val nbytes)
+  "Encode the integer VAL in NBYTES of data.
+NBYTES much be a power of 2, up to 8.
+
+This supports encoding values up to 536870911 bytes (2^29 - 1),
+approximately 537M long."
+  (when (and (< nbytes 8)
+             (> val (expt 2 (* 8 nbytes))))
+    ;; not a user-facing error, this must be caused from an error in
+    ;; this library
+    (error "websocket-to-bytes: Value %d could not be expressed in %d bytes"
+           val nbytes))
+  (if (= nbytes 8)
+      (progn
+        (let ((hi-32bits (lsh val -32))
+              (low-32bits (logand #xffffffff val)))
+          (when (or (> hi-32bits 0) (> (lsh low-32bits -29) 0))
+            (signal 'websocket-frame-too-large val))
+          (bindat-pack `((:val vec 2 u32))
+                       `((:val . [,hi-32bits ,low-32bits])))))
+    (bindat-pack
+     `((:val ,(cond ((= nbytes 1) 'u8)
+                    ((= nbytes 2) 'u16)
+                    ((= nbytes 4) 'u32)
+                    ;; Library error, not system error
+                    (t (error "websocket-to-bytes: Unknown NBYTES: %s" nbytes)))))
+     `((:val . ,val)))))
+
+(defun websocket-get-opcode (s)
+  "Retrieve the opcode from first byte of string S."
+  (websocket-ensure-length s 1)
+  (let ((opcode (logand #xf (websocket-get-bytes s 1))))
+    (cond ((= opcode 0) 'continuation)
+          ((= opcode 1) 'text)
+          ((= opcode 2) 'binary)
+          ((= opcode 8) 'close)
+          ((= opcode 9) 'ping)
+          ((= opcode 10) 'pong))))
+
+(defun websocket-get-payload-len (s)
+  "Parse out the payload length from the string S.
+We start at position 0, and return a cons of the payload length and how
+many bytes were consumed from the string."
+  (websocket-ensure-length s 1)
+  (let* ((initial-val (logand 127 (websocket-get-bytes s 1))))
+    (cond ((= initial-val 127)
+           (websocket-ensure-length s 9)
+           (cons (websocket-get-bytes (substring s 1) 8) 9))
+          ((= initial-val 126)
+           (websocket-ensure-length s 3)
+           (cons (websocket-get-bytes (substring s 1) 2) 3))
+          (t (cons initial-val 1)))))
+
+(defstruct websocket-frame opcode payload length completep)
+
+(defun websocket-mask (key data)
+  "Using string KEY, mask string DATA according to the RFC.
+This is used to both mask and unmask data."
+  (apply
+   'string
+   (loop for b across data
+         for i from 0 to (length data)
+         collect (logxor (websocket-get-bytes (substring key (mod i 4)) 1) b))))
+
+(defun websocket-ensure-length (s n)
+  "Ensure the string S has at most N bytes.
+Otherwise we throw the error `websocket-incomplete-frame'."
+  (when (< (length s) n)
+    (throw 'websocket-incomplete-frame nil)))
+
+(defun websocket-encode-frame (frame should-mask)
+  "Encode the FRAME struct to the binary representation.
+We mask the frame or not, depending on SHOULD-MASK."
+  (let* ((opcode (websocket-frame-opcode frame))
+         (payload (websocket-frame-payload frame))
+         (fin (websocket-frame-completep frame))
+         (payloadp (memq opcode '(continuation text binary)))
+         (mask-key (when should-mask (websocket-genbytes 4))))
+    (apply 'unibyte-string
+           (append (list
+                    (logior (cond ((eq opcode 'continuation) 0)
+                                  ((eq opcode 'text) 1)
+                                  ((eq opcode 'binary) 2)
+                                  ((eq opcode 'close) 8)
+                                  ((eq opcode 'ping) 9)
+                                  ((eq opcode 'pong) 10))
+                            (if fin 128 0)))
+                   (when payloadp
+                     (list
+                      (logior
+                       (if should-mask 128 0)
+                       (cond ((< (length payload) 126) (length payload))
+                             ((< (length payload) 65536) 126)
+                             (t 127)))))
+                   (when (and payloadp (>= (length payload) 126))
+                     (append (websocket-to-bytes (length payload)
+                                          (cond ((< (length payload) 126) 1)
+                                                ((< (length payload) 65536) 2)
+                                                (t 8))) nil))
+                   (when (and payloadp should-mask)
+                     (append mask-key nil))
+                   (when payloadp
+                     (append (if should-mask (websocket-mask mask-key payload)
+                               payload)
+                             nil))))))
+
+(defun websocket-read-frame (s)
+  "Read from string S a `websocket-frame' struct with the contents.
+This only gets complete frames.  Partial frames need to wait until
+the frame finishes.  If the frame is not completed, return NIL."
+  (catch 'websocket-incomplete-frame
+    (websocket-ensure-length s 1)
+    (let* ((opcode (websocket-get-opcode s))
+           (fin (logand 128 (websocket-get-bytes s 1)))
+           (payloadp (memq opcode '(continuation text binary)))
+           (payload-len (when payloadp
+                          (websocket-get-payload-len (substring s 1))))
+           (maskp (and
+                   payloadp
+                   (= 128 (logand 128 (websocket-get-bytes (substring s 1) 1)))))
+           (payload-start (when payloadp (+ (if maskp 5 1) (cdr payload-len))))
+           (payload-end (when payloadp (+ payload-start (car payload-len))))
+           (unmasked-payload (when payloadp
+                               (websocket-ensure-length s payload-end)
+                               (substring s payload-start payload-end))))
+      (make-websocket-frame
+       :opcode opcode
+       :payload
+       (if maskp
+           (let ((masking-key (substring s (+ 1 (cdr payload-len))
+                                         (+ 5 (cdr payload-len)))))
+             (websocket-mask masking-key unmasked-payload))
+         unmasked-payload)
+       :length (if payloadp payload-end 1)
+       :completep (> fin 0)))))
+
+(defun websocket-format-error (err)
+  "Format an error message like command level does.
+ERR should be a cons of error symbol and error data."
+
+  ;; Formatting code adapted from `edebug-report-error'
+  (concat (or (get (car err) 'error-message)
+              (format "peculiar error (%s)" (car err)))
+          (when (cdr err)
+            (format ": %s"
+                    (mapconcat #'prin1-to-string
+                               (cdr err) ", ")))))
+
+(defun websocket-default-error-handler (_websocket type err)
+  "The default error handler used to handle errors in callbacks."
+  (display-warning 'websocket
+                   (format "in callback `%S': %s"
+                           type
+                           (websocket-format-error err))
+                   :error))
+
+;; Error symbols in use by the library
+(put 'websocket-unsupported-protocol 'error-conditions
+     '(error websocket-error websocket-unsupported-protocol))
+(put 'websocket-unsupported-protocol 'error-message "Unsupported websocket protocol")
+(put 'websocket-wss-needs-emacs-24 'error-conditions
+     '(error websocket-error websocket-unsupported-protocol
+             websocket-wss-needs-emacs-24))
+(put 'websocket-wss-needs-emacs-24 'error-message
+     "wss protocol is not supported for Emacs before version 24.")
+(put 'websocket-received-error-http-response 'error-conditions
+     '(error websocket-error websocket-received-error-http-response))
+(put 'websocket-received-error-http-response 'error-message
+     "Error response received from websocket server")
+(put 'websocket-invalid-header 'error-conditions
+     '(error websocket-error websocket-invalid-header))
+(put 'websocket-invalid-header 'error-message
+     "Invalid HTTP header sent")
+(put 'websocket-illegal-frame 'error-conditions
+     '(error websocket-error websocket-illegal-frame))
+(put 'websocket-illegal-frame 'error-message
+     "Cannot send illegal frame to websocket")
+(put 'websocket-closed 'error-conditions
+     '(error websocket-error websocket-closed))
+(put 'websocket-closed 'error-message
+     "Cannot send message to a closed websocket")
+(put 'websocket-unparseable-frame 'error-conditions
+     '(error websocket-error websocket-unparseable-frame))
+(put 'websocket-unparseable-frame 'error-message
+     "Received an unparseable frame")
+(put 'websocket-frame-too-large 'error-conditions
+     '(error websocket-error websocket-frame-too-large))
+(put 'websocket-frame-too-large 'error-message
+     "The frame being sent is too large for this emacs to handle")
+
+(defun websocket-intersect (a b)
+  "Simple list intersection, should function like Common Lisp's `intersection'."
+  (let ((result))
+    (dolist (elem a (nreverse result))
+      (when (member elem b)
+        (push elem result)))))
+
+(defun websocket-get-debug-buffer-create (websocket)
+  "Get or create the buffer corresponding to WEBSOCKET."
+  (let ((buf (get-buffer-create (format "*websocket %s debug*"
+                                    (websocket-url websocket)))))
+    (when (= 0 (buffer-size buf))
+      (buffer-disable-undo buf))
+    buf))
+
+(defun websocket-debug (websocket msg &rest args)
+  "In the WEBSOCKET's debug buffer, send MSG, with format ARGS."
+  (when websocket-debug
+    (let ((buf (websocket-get-debug-buffer-create websocket)))
+      (save-excursion
+        (with-current-buffer buf
+          (goto-char (point-max))
+          (insert "[WS] ")
+          (insert (apply 'format (append (list msg) args)))
+          (insert "\n"))))))
+
+(defun websocket-verify-response-code (output)
+  "Verify that OUTPUT contains a valid HTTP response code.
+The only acceptable one to websocket is responce code 101.
+A t value will be returned on success, and an error thrown
+if not."
+  (string-match "HTTP/1.1 \\([[:digit:]]+\\)" output)
+  (unless (equal "101" (match-string 1 output))
+       (signal 'websocket-received-error-http-response
+               (string-to-number (match-string 1 output))))
+  t)
+
+(defun websocket-parse-repeated-field (output field)
+  "From header-containing OUTPUT, parse out the list from a
+possibly repeated field."
+  (let ((pos 0)
+        (extensions))
+    (while (and pos
+                (string-match (format "\r\n%s: \\(.*\\)\r\n" field)
+                              output pos))
+      (when (setq pos (match-end 1))
+        (setq extensions (append extensions (split-string
+                                             (match-string 1 output) ", ?")))))
+    extensions))
+
+(defun websocket-process-frame (websocket frame)
+  "Using the WEBSOCKET's filter and connection, process the FRAME.
+This returns a lambda that should be executed when all frames have
+been processed.  If the frame has a payload, the lambda has the frame
+passed to the filter slot of WEBSOCKET.  If the frame is a ping,
+the lambda has a reply with a pong.  If the frame is a close, the lambda
+has connection termination."
+  (let ((opcode (websocket-frame-opcode frame)))
+    (lexical-let ((lex-ws websocket)
+                  (lex-frame frame))
+      (cond ((memq opcode '(continuation text binary))
+             (lambda () (websocket-try-callback 'websocket-on-message 'on-message
+                                           lex-ws lex-frame)))
+            ((eq opcode 'ping)
+             (lambda () (websocket-send lex-ws
+                                   (make-websocket-frame :opcode 'pong :completep t))))
+            ((eq opcode 'close)
+             (lambda () (delete-process (websocket-conn lex-ws))))
+            (t (lambda ()))))))
+
+(defun websocket-process-input-on-open-ws (websocket text)
+  "This handles input processing for both the client and server filters."
+  (let ((current-frame)
+        (processing-queue)
+        (start-point 0))
+    (while (setq current-frame (websocket-read-frame
+                                (substring text start-point)))
+      (push (websocket-process-frame websocket current-frame) processing-queue)
+      (incf start-point (websocket-frame-length current-frame)))
+    (when (> (length text) start-point)
+      (setf (websocket-inflight-input websocket)
+            (substring text start-point)))
+    (dolist (to-process (nreverse processing-queue))
+      (funcall to-process))))
+
+(defun websocket-send-text (websocket text)
+  "To the WEBSOCKET, send TEXT as a complete frame."
+  (websocket-send
+   websocket
+   (make-websocket-frame :opcode 'text
+                         :payload (encode-coding-string
+                                   text 'raw-text)
+                         :completep t)))
+
+(defun websocket-check (frame)
+  "Check FRAME for correctness, returning true if correct."
+  (and (equal (not (memq (websocket-frame-opcode frame)
+                         '(continuation text binary)))
+              (and (not (websocket-frame-payload frame))
+                   (websocket-frame-completep frame)))))
+
+(defun websocket-send (websocket frame)
+  "To the WEBSOCKET server, send the FRAME.
+This will raise an error if the frame is illegal.
+
+The error signaled may be of type `websocket-illegal-frame' if
+the frame is malformed in some way, also having the condition
+type of `websocket-error'.  The data associated with the signal
+is the frame being sent.
+
+If the websocket is closed a signal `websocket-closed' is sent,
+also with `websocket-error' condition.  The data in the signal is
+also the frame.
+
+The frame may be too large for this buid of Emacs, in which case
+`websocket-frame-too-large' is returned, with the data of the
+size of the frame which was too large to process.  This also has
+the `websocket-error' condition."
+  (unless (websocket-check frame)
+    (signal 'websocket-illegal-frame frame))
+  (websocket-debug websocket "Sending frame, opcode: %s payload: %s"
+                   (websocket-frame-opcode frame)
+                   (websocket-frame-payload frame))
+  (websocket-ensure-connected websocket)
+  (unless (websocket-openp websocket)
+    (signal 'websocket-closed frame))
+  (process-send-string (websocket-conn websocket)
+                       ;; We mask only when we're a client, following the spec.
+                       (websocket-encode-frame frame (not (websocket-server-p websocket)))))
+
+(defun websocket-openp (websocket)
+  "Check WEBSOCKET and return non-nil if it is open, and either
+connecting or open."
+  (and websocket
+       (not (eq 'close (websocket-ready-state websocket)))
+       (member (process-status (websocket-conn websocket)) '(open run))))
+
+(defun websocket-close (websocket)
+  "Close WEBSOCKET and erase all the old websocket data."
+  (websocket-debug websocket "Closing websocket")
+  (websocket-try-callback 'websocket-on-close 'on-close websocket)
+  (when (websocket-openp websocket)
+    (websocket-send websocket
+                    (make-websocket-frame :opcode 'close
+                                          :completep t))
+    (setf (websocket-ready-state websocket) 'closed))
+  (let ((buf (process-buffer (websocket-conn websocket))))
+    (delete-process (websocket-conn websocket))
+    (kill-buffer buf)))
+
+(defun websocket-ensure-connected (websocket)
+  "If the WEBSOCKET connection is closed, open it."
+  (unless (and (websocket-conn websocket)
+               (ecase (process-status (websocket-conn websocket))
+                 ((run open listen) t)
+                 ((stop exit signal closed connect failed nil) nil)))
+    (websocket-close websocket)
+    (websocket-open (websocket-url websocket)
+                    :protocols (websocket-protocols websocket)
+                    :extensions (websocket-extensions websocket)
+                    :on-open (websocket-on-open websocket)
+                    :on-message (websocket-on-message websocket)
+                    :on-close (websocket-on-close websocket)
+                    :on-error (websocket-on-error websocket))))
+
+;;;;;;;;;;;;;;;;;;;;;;
+;; Websocket client ;;
+;;;;;;;;;;;;;;;;;;;;;;
+
+(defun* websocket-open (url &key protocols extensions (on-open 'identity)
+                            (on-message (lambda (_w _f))) (on-close 'identity)
+                            (on-error 'websocket-default-error-handler))
+  "Open a websocket connection to URL, returning the `websocket' struct.
+The PROTOCOL argument is optional, and setting it will declare to
+the server that this client supports the protocols in the list
+given.  We will require that the server also has to support that
+protocols.
+
+Similar logic applies to EXTENSIONS, which is a list of conses,
+the car of which is a string naming the extension, and the cdr of
+which is the list of parameter strings to use for that extension.
+The parameter strings are of the form \"key=value\" or \"value\".
+EXTENSIONS can be NIL if none are in use.  An example value would
+be '(\"deflate-stream\" . (\"mux\" \"max-channels=4\")).
+
+Optionally you can specify
+ON-OPEN, ON-MESSAGE and ON-CLOSE callbacks as well.
+
+The ON-OPEN callback is called after the connection is
+established with the websocket as the only argument.  The return
+value is unused.
+
+The ON-MESSAGE callback is called after receiving a frame, and is
+called with the websocket as the first argument and
+`websocket-frame' struct as the second.  The return value is
+unused.
+
+The ON-CLOSE callback is called after the connection is closed, or
+failed to open.  It is called with the websocket as the only
+argument, and the return value is unused.
+
+The ON-ERROR callback is called when any of the other callbacks
+have an error.  It takes the websocket as the first argument, and
+a symbol as the second argument either `on-open', `on-message',
+or `on-close', and the error as the third argument. Do NOT
+rethrow the error, or else you may miss some websocket messages.
+You similarly must not generate any other errors in this method.
+If you want to debug errors, set
+`websocket-callback-debug-on-error' to `t', but this also can be
+dangerous is the debugger is quit out of.  If not specified,
+`websocket-default-error-handler' is used.
+
+For each of these event handlers, the client code can store
+arbitrary data in the `client-data' slot in the returned
+websocket.
+
+The following errors might be thrown in this method or in
+websocket processing, all of them having the error-condition
+`websocket-error' in addition to their own symbol:
+
+`websocket-unsupported-protocol': Data in the error signal is the
+protocol that is unsupported.  For example, giving a URL starting
+with http by mistake raises this error.
+
+`websocket-wss-needs-emacs-24': Trying to connect wss protocol
+using Emacs < 24 raises this error.  You can catch this error
+also by `websocket-unsupported-protocol'.
+
+`websocket-received-error-http-response': Data in the error
+signal is the integer error number.
+
+`websocket-invalid-header': Data in the error is a string
+describing the invalid header received from the server.
+
+`websocket-unparseable-frame': Data in the error is a string
+describing the problem with the frame.
+"
+  (let* ((name (format "websocket to %s" url))
+         (url-struct (url-generic-parse-url url))
+         (key (websocket-genkey))
+         (buf-name (format " *%s*" name))
+         (coding-system-for-read 'binary)
+         (coding-system-for-write 'binary)
+         (conn (if (member (url-type url-struct) '("ws" "wss"))
+                   (let* ((type (if (equal (url-type url-struct) "ws")
+                                    'plain 'tls))
+                          (port (if (= 0 (url-port url-struct))
+                                    (if (eq type 'tls) 443 80)
+                                  (url-port url-struct)))
+                          (host (url-host url-struct))
+                          (buf (get-buffer-create buf-name)))
+                       (if (eq type 'plain)
+                           (make-network-process :name name :buffer buf :host host
+                                                 :service port :nowait nil)
+                         (condition-case-unless-debug nil
+                             (open-network-stream name buf host port :type type :nowait nil)
+                           (wrong-number-of-arguments
+                            (signal 'websocket-wss-needs-emacs-24 "wss")))))
+                 (signal 'websocket-unsupported-protocol (url-type url-struct))))
+         (websocket (websocket-inner-create
+                     :conn conn
+                     :url url
+                     :on-open on-open
+                     :on-message on-message
+                     :on-close on-close
+                     :on-error on-error
+                     :protocols protocols
+                     :extensions (mapcar 'car extensions)
+                     :accept-string
+                     (websocket-calculate-accept key))))
+    (process-put conn :websocket websocket)
+    (set-process-filter conn
+                        (lambda (process output)
+                          (let ((websocket (process-get process :websocket)))
+                            (websocket-outer-filter websocket output))))
+    (set-process-sentinel
+     conn
+     (lambda (process change)
+       (let ((websocket (process-get process :websocket)))
+         (websocket-debug websocket "State change to %s" change)
+         (when (and
+                (member (process-status process) '(closed failed exit signal))
+                (not (eq 'closed (websocket-ready-state websocket))))
+           (websocket-try-callback 'websocket-on-close 'on-close websocket)))))
+    (set-process-query-on-exit-flag conn nil)
+    (process-send-string conn
+                         (format "GET %s HTTP/1.1\r\n"
+                                 (let ((path (url-filename url-struct)))
+                                   (if (> (length path) 0) path "/"))))
+    (websocket-debug websocket "Sending handshake, key: %s, acceptance: %s"
+                     key (websocket-accept-string websocket))
+    (process-send-string conn
+                         (websocket-create-headers url key protocols extensions))
+    (websocket-debug websocket "Websocket opened")
+    websocket))
+
+(defun websocket-outer-filter (websocket output)
+  "Filter the WEBSOCKET server's OUTPUT.
+This will parse headers and process frames repeatedly until there
+is no more output or the connection closes.  If the websocket
+connection is invalid, the connection will be closed."
+  (websocket-debug websocket "Received: %s" output)
+  (let ((start-point)
+        (text (concat (websocket-inflight-input websocket) output))
+        (header-end-pos))
+    (setf (websocket-inflight-input websocket) nil)
+    ;; If we've received the complete header, check to see if we've
+    ;; received the desired handshake.
+    (when (and (eq 'connecting (websocket-ready-state websocket))
+               (setq header-end-pos (string-match "\r\n\r\n" text))
+               (setq start-point (+ 4 header-end-pos)))
+      (condition-case err
+          (progn
+            (websocket-verify-response-code text)
+            (websocket-verify-headers websocket text))
+        (error
+         (websocket-close websocket)
+         (signal (car err) (cdr err))))
+      (setf (websocket-ready-state websocket) 'open)
+      (websocket-try-callback 'websocket-on-open 'on-open websocket))
+    (when (eq 'open (websocket-ready-state websocket))
+      (websocket-process-input-on-open-ws
+       websocket (substring text (or start-point 0))))))
+
+(defun websocket-verify-headers (websocket output)
+  "Based on WEBSOCKET's data, ensure the headers in OUTPUT are valid.
+The output is assumed to have complete headers.  This function
+will either return t or call `error'.  This has the side-effect
+of populating the list of server extensions to WEBSOCKET."
+  (let ((accept-string
+         (concat "Sec-WebSocket-Accept: " (websocket-accept-string websocket))))
+    (websocket-debug websocket "Checking for accept header: %s" accept-string)
+    (unless (string-match (regexp-quote accept-string) output)
+      (signal 'websocket-invalid-header
+              "Incorrect handshake from websocket: is this really a websocket connection?")))
+  (let ((case-fold-search t))
+    (websocket-debug websocket "Checking for upgrade header")
+    (unless (string-match "\r\nUpgrade: websocket\r\n" output)
+      (signal 'websocket-invalid-header
+              "No 'Upgrade: websocket' header found"))
+    (websocket-debug websocket "Checking for connection header")
+    (unless (string-match "\r\nConnection: upgrade\r\n" output)
+      (signal 'websocket-invalid-header
+              "No 'Connection: upgrade' header found"))
+    (when (websocket-protocols websocket)
+      (dolist (protocol (websocket-protocols websocket))
+        (websocket-debug websocket "Checking for protocol match: %s"
+                         protocol)
+        (let ((protocols
+               (if (string-match (format "\r\nSec-Websocket-Protocol: %s\r\n"
+                                         protocol)
+                                 output)
+                   (list protocol)
+                 (signal 'websocket-invalid-header
+                         "Incorrect or missing protocol returned by the server."))))
+          (setf (websocket-negotiated-protocols websocket) protocols))))
+    (let* ((extensions (websocket-parse-repeated-field
+                        output
+                        "Sec-WebSocket-Extensions"))
+           (extra-extensions))
+      (dolist (ext extensions)
+        (let ((x (first (split-string ext "; ?"))))
+          (unless (or (member x (websocket-extensions websocket))
+                      (member x extra-extensions))
+            (push x extra-extensions))))
+      (when extra-extensions
+        (signal 'websocket-invalid-header
+                (format "Non-requested extensions returned by server: %S"
+                        extra-extensions)))
+      (setf (websocket-negotiated-extensions websocket) extensions)))
+  t)
+
+;;;;;;;;;;;;;;;;;;;;;;
+;; Websocket server ;;
+;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar websocket-server-websockets nil
+  "A list of current websockets live on any server.")
+
+(defun* websocket-server (port &rest plist)
+  "Open a websocket server on PORT.
+This also takes a plist of callbacks: `:on-open', `:on-message',
+`:on-close' and `:on-error', which operate exactly as documented
+in the websocket client function `websocket-open'.  Returns the
+connection, which should be kept in order to pass to
+`websocket-server-close'."
+  (let* ((conn (make-network-process
+                :name (format "websocket server on port %d" port)
+                :server t
+                :family 'ipv4
+                :log 'websocket-server-accept
+                :filter-multibyte nil
+                :plist plist
+                :service port)))
+    conn))
+
+(defun websocket-server-close (conn)
+  "Closes the websocket, as well as all open websockets for this server."
+  (let ((to-delete))
+    (dolist (ws websocket-server-websockets)
+      (when (eq (websocket-server-conn ws) conn)
+        (if (eq (websocket-ready-state ws) 'closed)
+            (unless (member ws to-delete)
+              (push ws to-delete))
+          (websocket-close ws))))
+    (dolist (ws to-delete)
+      (setq websocket-server-websockets (remove ws websocket-server-websockets))))
+  (delete-process conn))
+
+(defun websocket-server-accept (server client message)
+  "Accept a new websocket connection from a client."
+  (let ((ws (websocket-inner-create
+             :server-conn server
+             :conn client
+             :url client
+             :server-p t
+             :on-open (or (process-get server :on-open) 'identity)
+             :on-message (or (process-get server :on-message) (lambda (_ws _frame)))
+             :on-close (lexical-let ((user-method
+                                      (or (process-get server :on-close) 'identity)))
+                         (lambda (ws)
+                           (setq websocket-server-websockets
+                                 (remove ws websocket-server-websockets))
+                           (funcall user-method ws)))
+             :on-error (or (process-get server :on-error)
+                           'websocket-default-error-handler)
+             :protocols (process-get server :protocol)
+             :extensions (mapcar 'car (process-get server :extensions)))))
+    (unless (member ws websocket-server-websockets)
+      (push ws websocket-server-websockets))
+    (set-process-coding-system client 'unix 'unix)
+    (process-put client :websocket ws)
+    (set-process-filter client 'websocket-server-filter)
+    (set-process-coding-system client 'binary)
+    (set-process-sentinel client
+     (lambda (process change)
+       (let ((websocket (process-get process :websocket)))
+         (websocket-debug websocket "State change to %s" change)
+         (when (and
+                (member (process-status process) '(closed failed exit signal))
+                (not (eq 'closed (websocket-ready-state websocket))))
+           (websocket-try-callback 'websocket-on-close 'on-close websocket)))))))
+
+(defun websocket-create-headers (url key protocol extensions)
+  "Create connections headers for the given URL, KEY, PROTOCOL and EXTENSIONS.
+These are defined as in `websocket-open'."
+  (format (concat "Host: %s\r\n"
+                  "Upgrade: websocket\r\n"
+                  "Connection: Upgrade\r\n"
+                  "Sec-WebSocket-Key: %s\r\n"
+                  "Origin: %s\r\n"
+                  "Sec-WebSocket-Version: 13\r\n"
+                  (when protocol
+                    (concat
+                     (mapconcat (lambda (protocol)
+                                  (format "Sec-WebSocket-Protocol: %s" protocol))
+                                protocol "\r\n")
+                     "\r\n"))
+                  (when extensions
+                    (format "Sec-WebSocket-Extensions: %s\r\n"
+                            (mapconcat
+                             (lambda (ext)
+                               (concat (car ext)
+                                       (when (cdr ext) "; ")
+                                       (when (cdr ext)
+                                         (mapconcat 'identity (cdr ext) "; "))))
+                             extensions ", ")))
+                  "\r\n")
+          (url-host (url-generic-parse-url url))
+          key
+          system-name
+          protocol))
+
+(defun websocket-get-server-response (websocket client-protocols client-extensions)
+  "Get the websocket response from client WEBSOCKET."
+  (let ((separator "\r\n"))
+      (concat "HTTP/1.1 101 Switching Protocols" separator
+              "Upgrade: websocket" separator
+              "Connection: Upgrade" separator
+              "Sec-WebSocket-Accept: "
+              (websocket-accept-string websocket) separator
+              (let ((protocols
+                         (websocket-intersect client-protocols
+                                              (websocket-protocols websocket))))
+                    (when protocols
+                      (concat
+                       (mapconcat
+                        (lambda (protocol) (format "Sec-WebSocket-Protocol: %s"
+                                              protocol)) protocols separator)
+                       separator)))
+              (let ((extensions (websocket-intersect
+                                   client-extensions
+                                   (websocket-extensions websocket))))
+                  (when extensions
+                    (concat
+                     (mapconcat
+                      (lambda (extension) (format "Sec-Websocket-Extensions: %s"
+                                             extension)) extensions separator)
+                     separator)))
+              separator)))
+
+(defun websocket-server-filter (process output)
+  "This acts on all OUTPUT from websocket clients PROCESS."
+  (let* ((ws (process-get process :websocket))
+         (text (concat (websocket-inflight-input ws) output)))
+    (setf (websocket-inflight-input ws) nil)
+    (cond ((eq (websocket-ready-state ws) 'connecting)
+           ;; check for connection string
+           (let ((end-of-header-pos
+                  (let ((pos (string-match "\r\n\r\n" text)))
+                    (when pos (+ 4 pos)))))
+               (if end-of-header-pos
+                   (progn
+                     (let ((header-info (websocket-verify-client-headers text)))
+                       (if header-info
+                           (progn (setf (websocket-accept-string ws)
+                                        (websocket-calculate-accept
+                                         (plist-get header-info :key)))
+                                  (process-send-string
+                                   process
+                                   (websocket-get-server-response
+                                    ws (plist-get header-info :protocols)
+                                    (plist-get header-info :extensions)))
+                                  (setf (websocket-ready-state ws) 'open)
+                                  (websocket-try-callback 'websocket-on-open
+                                                          'on-open ws))
+                         (message "Invalid client headers found in: %s" output)
+                         (process-send-string process "HTTP/1.1 400 Bad Request\r\n\r\n")
+                         (websocket-close ws)))
+                     (when (> (length text) (+ 1 end-of-header-pos))
+                       (websocket-server-filter process (substring
+                                                           text
+                                                           end-of-header-pos))))
+                 (setf (websocket-inflight-input ws) text))))
+          ((eq (websocket-ready-state ws) 'open)
+           (websocket-process-input-on-open-ws ws text))
+          ((eq (websocket-ready-state ws) 'closed)
+           (message "WARNING: Should not have received further input on closed websocket")))))
+
+(defun websocket-verify-client-headers (output)
+  "Verify the headers from the WEBSOCKET client connection in OUTPUT.
+Unlike `websocket-verify-headers', this is a quieter routine.  We
+don't want to error due to a bad client, so we just print out
+messages and a plist containing `:key', the websocket key,
+`:protocols' and `:extensions'."
+  (block nil
+    (let ((case-fold-search t)
+          (plist))
+      (unless (string-match "HTTP/1.1" output)
+        (message "Websocket client connection: HTTP/1.1 not found")
+        (return nil))
+      (unless (string-match "^Host: " output)
+        (message "Websocket client connection: Host header not found")
+        (return nil))
+      (unless (string-match "^Upgrade: websocket\r\n" output)
+        (message "Websocket client connection: Upgrade: websocket not found")
+        (return nil))
+      (if (string-match "^Sec-WebSocket-Key: \\([[:graph:]]+\\)\r\n" output)
+          (setq plist (plist-put plist :key (match-string 1 output)))
+        (message "Websocket client connect: No key sent")
+        (return nil))
+      (unless (string-match "^Sec-WebSocket-Version: 13" output)
+        (message "Websocket client connect: Websocket version 13 not found")
+        (return nil))
+      (when (string-match "^Sec-WebSocket-Protocol:" output)
+        (setq plist (plist-put plist :protocols (websocket-parse-repeated-field
+                                                 output
+                                                 "Sec-Websocket-Protocol"))))
+      (when (string-match "^Sec-WebSocket-Extensions:" output)
+        (setq plist (plist-put plist :extensions (websocket-parse-repeated-field
+                                                  output
+                                                  "Sec-Websocket-Extensions"))))
+      plist)))
+
+(provide 'websocket)
+
+;;; websocket.el ends here
diff --git a/packages/windresize/windresize.el b/packages/windresize/windresize.el
new file mode 100755 (executable)
index 0000000..e13dd3f
--- /dev/null
@@ -0,0 +1,939 @@
+;;; windresize.el --- Resize windows interactively
+;;
+;; Copyright (C) 2011  Free Software Foundation, Inc.
+;;
+;; Filename: windresize.el
+;; Author: Bastien <bzg AT altern DOT org>
+;; Maintainer: Bastien <bzg AT altern DOT org>
+;; Keywords: window
+;; Description: Set window configuration with keystrokes
+;; Version: 0.1
+;;
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program; if not, write to the Free Software
+;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+;;
+;; This is not part of GNU Emacs.
+
+;;; Commentary:
+
+;; This mode lets you edit the window configuration interactively just
+;; by using the keyboard.
+;;
+;; To use it, type M-x windresize; this puts Emacs in a state
+;; where the up/down and left/right arrow keys resize the window
+;; dimensions.  To return Emacs to its ordinary state, type RET.
+;;
+;; See the docstring of `windresize' for a detailed description of the
+;; other commands that are available while windresize is active.
+
+;;; History:
+;;
+;; This was largely inspired by Hirose Yuuji and Bob Wiener original
+;; `resize-window' as posted on the emacs-devel mailing list by Juanma.
+;; This was also inspired by Lennart Borgman's bw-interactive.el (now
+;; winsize.el). See related discussions on the emacs-devel mailing
+;; list. Special thanks to Drew Adams, Juri Linkov, Stefan Monnier and
+;; JunJie Nan for useful suggestions.
+;;
+;; Also check http://www.emacswiki.org/cgi-bin/wiki/WindowResize for
+;; general hints on window resizing.
+;;
+;; Put this file into your load-path and the following into your
+;;   ~/.emacs: (require 'windresize)
+;;
+;;; Todo:
+;;
+;; - better help window
+;; - register key sequences as macros
+;; - maybe add numbers to window configurations in the ring
+;;
+;;; Code:
+
+(require 'ring)      ; for storing window configuration
+(require 'windmove)  ; for selecting adjacent window
+
+;;; User variables:
+
+(defconst windresize-version "0.6"
+  "The version number of the file windresize.el.")
+
+(defcustom windresize-move-borders t
+  "Default method for resizing windows.
+\\<windresize-map>Non-nil means that windresize will move borders.
+For example, \\[windresize-left] will move the first movable border to the
+left, trying to move the right border then the left border.  \\[windresize-up]
+will move the first movable border up, trying to move the bottom border then
+the upper border.
+
+Nil means that it will shrink or enlarge the window instead.
+\\[windresize-down] and  \\[windresize-up] will shrink and enlarge the window
+vertically.  \\[windresize-left] and \\[windresize-right] will shrink and
+enlarge the window horizontally."
+  :type 'boolean
+  :group 'convenience)
+
+(defcustom windresize-default-increment 1
+  "The default number of lines for resizing windows."
+  :type 'integer
+  :group 'convenience)
+
+(defcustom windresize-verbose 2
+  "Integer that say how verbose Windresize should be.
+The higher the number, the more feedback Windresize will give.
+A value of 0 will prevent any message to be displayed.
+A value of 1 will display errors only.
+A value of 2 will display errors and messages."
+  :type 'integer
+  :group 'convenience)
+
+(defcustom windresize-ring-size 10
+  "The size of the ring for storing window configurations."
+  :type 'integer
+  :group 'convenience)
+
+(defcustom windresize-windmove-relative-to-point 0
+  "Nil means select adjacent window relatively to the point position.
+Non-nil means select adjacent window relatively to the window
+edges.  See the docstring of `windmove-up' for details."
+  :group 'convenience
+  :type 'integer)
+
+(defcustom windresize-modifiers '((meta shift) meta
+                                 (control meta) control)
+  "A list of modifiers for arrow keys commands.
+Each element can be a modifier or a list of modifiers.
+
+The first modifier is for selecting windows with `windmove'.
+The second modifier is for moving the up/left border instead of
+the bottom/right border when there are two movable borders.
+The third modifier is to move borders and keep the width/height
+size fixed.
+The fourth modifier is to move boder or resize window while
+temporarily negating the increment value.
+
+Make sure the four elements of this list are distinct to avoid
+conflicts between keybindings."
+  :group 'convenience
+  :type '(list
+         (choice :tag "Modifier for selecting the adjacent windows"
+                 (symbol :tag "Single modifier")
+                 (repeat :tag "Multiple modifiers"
+                         (symbol :tag "Modifier")))
+         (choice :tag "Modifier for moving the left/up border instead of the right/bottom border"
+                 (symbol :tag "Single modifier")
+                 (repeat :tag "Multiple modifiers"
+                         (symbol :tag "Modifier")))
+         (choice :tag "Modifier for moving borders with fixed width/height"
+                 (symbol :tag "Single modifier")
+                 (repeat :tag "Multiple modifiers"
+                         (symbol :tag "Modifier")))
+         (choice :tag "Modifier for negating increment temporarily"
+                 (symbol :tag "Single modifier")
+                 (repeat :tag "Multiple modifiers"
+                         (symbol :tag "Modifier")))))
+
+;;; Variables and keymap:
+
+(defvar windresize-msg '("" . 0))
+(defvar windresize-buffer nil)
+(defvar windresize-increment nil)
+(defvar windresize-resizing nil)
+(defvar windresize-configuration-ring nil)
+(defvar windresize-window-configuration-0 nil)
+(defvar windresize-overriding-terminal-local-map-0 nil)
+(defvar windresize-overriding-menu-flag-0 nil)
+
+(defvar windresize-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [remap self-insert-command] 'windresize-other-char)
+    (define-key map (kbd "M-x") 'windresize-other-char)
+    (define-key map (kbd "C-h") 'windresize-other-char)
+    ;; move borders outwards or shrink/enlarge
+    (define-key map [left] 'windresize-left)
+    (define-key map [right] 'windresize-right)
+    (define-key map [up] 'windresize-up)
+    (define-key map [down] 'windresize-down)
+    ;; Use windmove to select adjacent window. The default keybindings
+    ;; in `windresize-modifiers' should match those of windmove
+    (let ((mod (nth 0 windresize-modifiers)))
+      (if (symbolp mod) (setq mod (list mod)))
+      (define-key map (vector (append mod '(left))) 'windresize-select-left)
+      (define-key map (vector (append mod '(right))) 'windresize-select-right)
+      (define-key map (vector (append mod '(up))) 'windresize-select-up)
+      (define-key map (vector (append mod '(down))) 'windresize-select-down))
+    ;; Move the up/left border instead of bottom/right when there are
+    ;; two movable borders
+    (let ((mod (nth 1 windresize-modifiers)))
+      (if (symbolp mod) (setq mod (list mod)))
+      (define-key map (vector (append mod '(left))) 'windresize-left-force-left)
+      (define-key map (vector (append mod '(right))) 'windresize-right-force-left)
+      (define-key map (vector (append mod '(up))) 'windresize-up-force-up)
+      (define-key map (vector (append mod '(down))) 'windresize-down-force-up))
+    ;; Move borders with fixed width/height
+    (let ((mod (nth 2 windresize-modifiers)))
+      (if (symbolp mod) (setq mod (list mod)))
+      (define-key map (vector (append mod '(left))) 'windresize-left-fixed)
+      (define-key map (vector (append mod '(right))) 'windresize-right-fixed)
+      (define-key map (vector (append mod '(up))) 'windresize-up-fixed)
+      (define-key map (vector (append mod '(down))) 'windresize-down-fixed))
+    ;; Negate increment temporarily
+    (let ((mod (nth 3 windresize-modifiers)))
+      (if (symbolp mod) (setq mod (list mod)))
+      (define-key map (vector (append mod '(left))) 'windresize-left-minus)
+      (define-key map (vector (append mod '(right))) 'windresize-right-minus)
+      (define-key map (vector (append mod '(up))) 'windresize-up-minus)
+      (define-key map (vector (append mod '(down))) 'windresize-down-minus))
+    ;; Set the increment
+    (define-key map "~" 'windresize-negate-increment)
+    (define-key map "+" 'windresize-increase-increment)
+    (define-key map "-" 'windresize-decrease-increment)
+    ;; FIXME
+    (define-key map "i" 'windresize-set-increment)
+    ;; other keys
+    (define-key map " " 'windresize-toggle-method)
+    (define-key map "s" 'windresize-save-window-configuration)
+    (define-key map "r" 'windresize-restore-window-configuration)
+    ;; shorcut keys for manipulating windows
+    (define-key map "0" 'delete-window)
+    (define-key map "o" 'windresize-other-window)
+    (define-key map "n" 'windresize-next-window)
+    (define-key map "p" 'windresize-previous-window)
+    (define-key map "/" 'windresize-bottom-right)
+    (define-key map "\M-/" 'windresize-up-left)
+    (define-key map (kbd "\\") 'windresize-up-right)
+    (define-key map (kbd "M-\\") 'windresize-bottom-left)
+    (define-key map "1" 'windresize-delete-other-windows)
+    (define-key map "2" 'windresize-split-window-vertically)
+    (define-key map "3" 'windresize-split-window-horizontally)
+    (define-key map "=" 'windresize-balance-windows)
+    (define-key map "\C-xo" 'windresize-other-window)
+    (define-key map "\C-x0" 'windresize-delete-window)
+    (define-key map "\C-x1" 'windresize-delete-other-windows)
+    (define-key map "\C-x2" 'windresize-split-window-vertically)
+    (define-key map "\C-x3" 'windresize-split-window-horizontally)
+    (define-key map "\C-x+" 'windresize-balance-windows)
+    (define-key map (kbd "C-a")
+      (lambda() (interactive) (move-beginning-of-line 1)))
+    (define-key map (kbd "C-e")
+      (lambda() (interactive) (move-end-of-line 1)))
+    (define-key map "=" 'windresize-balance-windows)
+    (define-key map [mouse-1] 'mouse-set-point)
+    ;; help, save and exit
+    (define-key map (kbd "RET") 'windresize-exit)
+    (define-key map "x" 'windresize-exit)
+    (define-key map "\C-c\C-c" 'windresize-exit)
+    (define-key map "?" 'windresize-help)
+    (define-key map "q" 'windresize-cancel-and-quit)
+    (define-key map "c" 'windresize-cancel-and-quit)
+    (define-key map (kbd "C-g") 'windresize-cancel-and-quit)
+    map)
+  "Keymap for `windresize'.")
+
+(defun windresize-other-char ()
+  "Show a message instead of processing `self-insert-command'."
+  (interactive)
+  (let* ((key (if current-prefix-arg
+                 (substring (this-command-keys)
+                            universal-argument-num-events)
+               (this-command-keys))))
+    (cond ((vectorp key) (ding))
+         ((stringp key)
+          ;; send warning for only no warning for complex keys and
+          ;; mouse events
+          (setq windresize-msg
+                (cons (format "[`%s' not bound]" key) 1))))))
+
+;;; Aliases:
+
+(defun windresize-other-window ()
+  "Select other window."
+  (interactive)
+  (if (one-window-p)
+      (setq windresize-msg (cons "[No other window]" 1))
+    (other-window 1)
+    (setq windresize-msg (cons (format "Now in %s" (buffer-name)) 2))))
+
+(defalias 'windresize-next-window 'windresize-other-window)
+
+(defun windresize-previous-window ()
+  "Select the previous window."
+  (interactive)
+  (if (one-window-p)
+      (setq windresize-msg (cons "[No previous window]" 1))
+    (other-window -1)
+    (setq windresize-msg (cons (format "Now in %s" (buffer-name)) 2))))
+
+(defun windresize-delete-window ()
+  "Delete window."
+  (interactive)
+  (if (one-window-p)
+      (setq windresize-msg (cons "[Can't delete sole window]" 1))
+    (other-window 1)
+    (setq windresize-msg (cons "Window deleted" 2))))
+
+(defun windresize-delete-other-windows ()
+  "Delete other windows."
+  (interactive)
+  (if (one-window-p)
+      (setq windresize-msg (cons "[No other window]" 1))
+    (delete-other-windows)
+    (setq windresize-msg (cons "Windows deleted" 2))))
+
+(defun windresize-split-window-horizontally ()
+  "Split window horizontally."
+  (interactive)
+  (split-window-horizontally)
+  (setq windresize-msg (cons "Window horizontally split" 2)))
+
+(defun windresize-split-window-vertically ()
+  "Split window vertically."
+  (interactive)
+  (split-window-vertically)
+  (setq windresize-msg (cons "Window vertically split" 2)))
+
+(defun windresize-balance-windows ()
+  "Balance windows."
+  (interactive)
+  (balance-windows)
+  (setq windresize-msg (cons "Windows balanced" 2)))
+
+;;; Windresize:
+
+;;;###autoload
+(defun windresize (&optional increment)
+  "Resize windows interactively.
+INCREMENT is the number of lines by which borders should move.
+
+By default, the method for resizing is by moving the borders.
+The left/right key will move the only movable vertical border to
+the left/right and the up/down key will move the only horizontal
+movable border up/down.  If there are two movable borders, the
+right and the bottom border will have priority over the left and
+upper border.  You can reverse this priority by using \\[windresize-left-force-left],
+\\[windresize-right-force-left], etc.
+
+Resizing can also be done by increasing/decreasing the window
+width and height.  The up and down arrow keys will enlarge or
+shrink the window vertically and the right and left arrow keys
+will enlarge or shrink the window horizontally.
+
+You can toggle the method with \\[windresize-toggle-method].
+
+You can set the number of line by which a border should move by
+calling \\[windresize-set-increment] with a numeric prefix.
+You can temporarily negate the number of lines by which the
+windows are resized by using \\[windresize-left-minus], \\[windresize-right-minus], etc.
+If you want to permanently negate this increment value,
+use `\\[windresize-negate-increment]' instead.
+
+You can also save window configurations with `\\[windresize-save-window-configuration]' in a ring,
+and restore them with `\\[windresize-restore-window-configuration]'.
+
+`\\[windresize-cancel-and-quit]' will quit `windresize' and cancel any change.  `\\[windresize-exit]'
+will set the new window configuration and exit.
+
+\\{windresize-map}"
+  (interactive "P")
+  (if windresize-resizing
+      (windresize-exit)
+    ;; FIXME shall we exit we calling again `windresize'?
+;;       (progn (windresize-message '("[Already resizing]" . 0))
+;;          (sit-for 2))
+    (setq windresize-overriding-terminal-local-map-0
+         overriding-terminal-local-map)
+    (setq windresize-overriding-menu-flag-0
+         overriding-local-map-menu-flag)
+    (setq windresize-window-configuration-0
+         (current-window-configuration))
+    ;; set increment, window configuration ring, initial buffer
+    (setq windresize-increment windresize-default-increment)
+    (setq windresize-configuration-ring
+       (make-ring windresize-ring-size))
+    (ring-insert windresize-configuration-ring
+                (current-window-configuration))
+    (setq windresize-buffer (current-buffer))
+    ;; set overriding map and pre/post-command hooks
+    (setq overriding-terminal-local-map windresize-map)
+    (setq overriding-local-map-menu-flag t)
+    (windresize-add-command-hooks)
+    ;; set the initial message
+    (setq windresize-msg
+         (if (one-window-p)
+             (setq windresize-msg (cons "Split window with [23]" 2))
+           (setq windresize-msg (cons "" 0))))
+    (setq windresize-resizing t)
+    (windresize-message)))
+
+(defun windresize-message (&optional msg)
+  "Display a message at the bottom of the screen.
+If MSG is nil, use `windresize-msg' instead."
+  (let* ((msg0 (or msg windresize-msg))
+        (msg-l (cdr msg0))
+        (msg-t (car msg0))
+        (method (if windresize-move-borders
+                    "move borders " "resize window")))
+    (cond ((< msg-l 2) ; information
+          (add-text-properties 0 (length msg-t) '(face bold) msg-t))
+         ((< msg-l 3) ; warnings
+          (add-text-properties 0 (length msg-t) '(face shadow) msg-t)))
+    (add-text-properties 0 (length method) '(face bold) method)
+    (message "Use arrow keys to %s by %d %s  RET:set  ?:help  %s"
+            method windresize-increment
+            (if (not (equal (abs windresize-increment) 1))
+                "lines" "line ")
+            (if (<= (cdr windresize-msg) windresize-verbose)
+                msg-t ""))))
+
+(defun windresize-add-command-hooks ()
+  "Add hooks to commands when entering `windresize'."
+  (add-hook 'pre-command-hook 'windresize-pre-command)
+  (add-hook 'post-command-hook 'windresize-post-command))
+
+(defun windresize-remove-command-hooks ()
+  "Remove hooks to commands when exiting `windresize'."
+  (remove-hook 'pre-command-hook 'windresize-pre-command)
+  (remove-hook 'post-command-hook 'windresize-post-command))
+
+(defun windresize-pre-command ()
+  "Pre-command in `windresize'."
+  (setq windresize-msg (cons "" 0)))
+
+(defun windresize-post-command ()
+  "Post-command in `windresize'."
+  (windresize-message))
+
+(defun windresize-toggle-method ()
+  "Toggle resizing method."
+  (interactive)
+  (setq windresize-move-borders
+       (not windresize-move-borders))
+  (setq windresize-msg
+       (cons (format
+              "Method: %s"
+              (if (not windresize-move-borders)
+                  "resize window" "move borders")) 2)))
+
+;;; Use windmove to select the adjacent window:
+
+(defun windresize-select-down (&optional arg)
+  "Select the window below the current one.
+If ARG is nil or zero, select the window relatively to the point
+position.  If ARG is positive, select relatively to the left edge
+and select relatively to the right edge otherwise."
+  (interactive "P")
+  (condition-case nil
+      (windmove-down
+       (or arg windresize-windmove-relative-to-point))
+    (error (setq windresize-msg
+                (cons "[Can't select window below this one]" 1)))))
+
+(defun windresize-select-up (&optional arg)
+  "Select the window above the current one.
+If ARG is nil or zero, select the window relatively to the point
+position.  If ARG is positive, select relatively to the left edge
+and select relatively to the right edge otherwise."
+  (interactive "P")
+  (condition-case nil
+      (windmove-up
+       (or arg windresize-windmove-relative-to-point))
+    (error (setq windresize-msg
+                (cons "[Can't select window above this one]" 1)))))
+
+(defun windresize-select-left (&optional arg)
+  "Select the window to the left of the current one.
+If ARG is nil or zero, select the window relatively to the point
+position.  If ARG is positive, select relatively to the top edge
+and select relatively to the bottom edge otherwise."
+  (interactive "P")
+  (condition-case nil
+      (windmove-left
+       (or arg windresize-windmove-relative-to-point))
+    (error (setq windresize-msg
+                (cons "[Can't select window left this one]" 1)))))
+
+(defun windresize-select-right (&optional arg)
+  "Select the window to the right of the current one.
+If ARG is nil or zero, select the window relatively to the point
+position.  If ARG is positive, select relatively to the top edge
+and select relatively to the bottom edge otherwise."
+  (interactive "P")
+  (condition-case nil
+      (windmove-right
+       (or arg windresize-windmove-relative-to-point))
+    (error (setq windresize-msg
+                (cons "[Can't select window right this one]" 1)))))
+
+;;; Increase/decrease/set the increment value:
+
+(defun windresize-set-increment (&optional n)
+  "Set the increment value to N."
+  (interactive "p")
+  (setq windresize-increment n)
+  (setq windresize-msg (cons "Increment set" 2)))
+
+(defun windresize-negate-increment (&optional silent)
+  "Negate the increment value.
+If SILENT, dont output a message."
+  (interactive)
+  (setq windresize-increment (- windresize-increment))
+  (unless silent (setq windresize-msg (cons "Negated increment" 2))))
+
+(defun windresize-increase-increment (&optional silent)
+  "Increase the increment.
+If SILENT is non-nil, don't output a message."
+  (interactive)
+  (let ((i windresize-increment))
+    (if (eq i -1) (setq i (- i)) (setq i (1+ i)))
+    (setq windresize-increment i))
+  (unless silent (setq windresize-msg (cons "Increased increment" 2))))
+
+(defun windresize-decrease-increment (&optional silent)
+  "Decrease the increment.
+If SILENT is non-nil, don't output a message."
+  (interactive)
+  (let ((i windresize-increment))
+    (if (eq i 1) (setq i (- 1)) (setq i (1- i)))
+    (setq windresize-increment i))
+  (unless silent (setq windresize-msg (cons "Decreased increment" 2))))
+
+;;; Window configuration ring:
+
+(defun windresize-save-window-configuration ()
+  "Save the current window configuration in the ring."
+  (interactive)
+  (if (equal (ring-ref windresize-configuration-ring 0)
+            (current-window-configuration))
+      (setq windresize-msg
+           (cons "[Same window configuration: not saved]" 1))
+    (ring-insert windresize-configuration-ring
+                (current-window-configuration))
+    (setq windresize-msg
+         (cons "Configuration saved -- use `r' to restore" 2))))
+
+(defun windresize-restore-window-configuration ()
+  "Restore the previous window configuration in the ring."
+  (interactive)
+  (let ((wcf (ring-remove windresize-configuration-ring 0)))
+    (set-window-configuration wcf)
+    (ring-insert-at-beginning windresize-configuration-ring wcf))
+  (setq windresize-msg (cons "Previous configuration restored" 2)))
+
+;;; Commands for arrow keys:
+
+(defun windresize-left (&optional n left-border fixed-width)
+  "Main function for handling left commands.
+N is the number of lines by which moving borders.
+In the move-border method, move the right border to the left.
+If LEFT-BORDER is non-nil, move the left border to the left.
+In the resize-window method, shrink the window horizontally.
+
+If FIXED-WIDTH is non-nil and both left and right borders are
+movable, move the window to the left and preserve its width."
+  (interactive "P")
+  (let* ((left-w (windmove-find-other-window 'left))
+        (right-w (windmove-find-other-window 'right))
+        (i (if n (prefix-numeric-value n) windresize-increment))
+        (shrink-ok (> (- (window-width) i) window-min-width))
+        (w (selected-window)))
+    (if (not windresize-move-borders)
+       (if (not shrink-ok)
+           (setq windresize-msg
+                 (cons "[Can't shrink window horizontally]" 1))
+         (condition-case nil
+             (if shrink-ok (shrink-window-horizontally i)
+               (error t))
+           (error (setq windresize-msg
+                        (cons "[Can't shrink window horizontally]" 1)))))
+      (cond ((equal (frame-width) (window-width))
+            (setq windresize-msg (cons "No vertical split" 2)))
+           ((and left-w right-w)
+            (if left-border
+                (progn (windmove-left windresize-windmove-relative-to-point)
+                       (adjust-window-trailing-edge (selected-window) (- i) t)
+                       (select-window w)
+                       (if fixed-width (windresize-left)))
+              (condition-case nil
+                  (progn (adjust-window-trailing-edge w (- i) t)
+                         (if fixed-width (windresize-left nil t)))
+                (error (setq windresize-msg
+                             (cons "[Can't move right border left]" 1))))))
+           (left-w
+            (condition-case nil
+                (adjust-window-trailing-edge left-w (- i) t)
+              (error (setq windresize-msg (cons "[Can't move left border left]" 1)))))
+           (right-w (windresize-left-inwards))
+           (t (setq windresize-msg (cons "[Can't move border]" 1)))))))
+
+(defun windresize-right (&optional n left-border fixed-width)
+  "Main function for handling right commands.
+N is the number of lines by which moving borders.
+In the move-border method, move the right border to the right.
+If LEFT-BORDER is non-nil, move the left border to the right.
+In the resize-window method, enlarge the window horizontally.
+
+If FIXED-WIDTH is non-nil and both left and right borders are
+movable, move the window to the right and preserve its width."
+  (interactive "P")
+  (let ((right-w (windmove-find-other-window 'right))
+       (left-w (windmove-find-other-window 'left))
+       (i (if n (prefix-numeric-value n) windresize-increment))
+       (wcf (current-window-configuration))
+       (w (selected-window)))
+    (if (not windresize-move-borders)
+       (progn (ignore-errors (enlarge-window-horizontally i))
+              (if (equal wcf (current-window-configuration))
+                  (setq windresize-msg
+                        (cons "[Can't enlarge window horizontally]" 1))))
+      (cond ((equal (frame-width) (window-width))
+            (setq windresize-msg (cons "No vertical split" 2)))
+           ((and right-w left-w left-border)
+            (progn (windmove-left windresize-windmove-relative-to-point)
+                   (adjust-window-trailing-edge left-w i t)
+                   (select-window w)
+                   (if fixed-width (windresize-right))))
+           (right-w
+            (condition-case nil
+                (adjust-window-trailing-edge w i t)
+              (error (setq windresize-msg
+                           (cons "[Can't move right border right]" 1)))))
+           (left-w (windresize-right-inwards))
+           (t (setq windresize-msg (cons "[Can't move border]" 1)))))))
+
+(defun windresize-up (&optional n upper-border fixed-height)
+  "Main function for handling up commands.
+N is the number of lines by which moving borders.
+In the move-border method, move the bottom border upwards.
+If UPPER-BORDER is non-nil, move the upper border upwards.
+In the resize-window method, enlarge the window vertically.
+
+If FIXED-HEIGHT is non-nil and both the upper and lower borders
+are movable, move the window up and preserve its height."
+  (interactive "P")
+  (let ((up-w (windmove-find-other-window 'up))
+       (down-w (windmove-find-other-window 'down))
+       (i (if n (prefix-numeric-value n) windresize-increment))
+       (wcf (current-window-configuration))
+       (w (selected-window)))
+    (if (not windresize-move-borders)
+       (progn (ignore-errors (enlarge-window i))
+              (if (equal wcf (current-window-configuration))
+                  (setq windresize-msg
+                        (cons "[Can't enlarge window vertically]" 1))))
+      (cond ((equal (frame-height) (1+ (window-height)))
+            (setq windresize-msg (cons "No horizontal split" 2)))
+           ((and up-w down-w (not (window-minibuffer-p down-w)))
+            (if upper-border
+                (progn (windmove-up windresize-windmove-relative-to-point)
+                       (adjust-window-trailing-edge (selected-window) (- i) nil)
+                       (select-window w)
+                       (if fixed-height (windresize-up)))
+              (condition-case nil
+                  (adjust-window-trailing-edge w (- i) nil)
+                (error
+                 (setq windresize-msg
+                       (cons "[Can't move bottom border up]" 1))))))
+           (up-w (condition-case nil
+                     (adjust-window-trailing-edge up-w (- i) nil)
+                   (error (setq windresize-msg
+                                (cons "[Can't move upper border up]" 1)))))
+           ((and down-w (not (window-minibuffer-p down-w)))
+            (windresize-up-inwards))
+           (t (setq windresize-msg (cons "[Can't move border]" 1)))))))
+
+(defun windresize-down (&optional n upper-border fixed-height)
+  "Main function for handling down commands.
+N is the number of lines by which moving borders.
+In the move-border method, move the bottom border down.
+If UPPER-BORDER is non-nil, move the upper border down.
+In the resize-window method, shrink the window vertically.
+
+If FIXED-HEIGHT is non-nil and both the upper and lower borders
+are movable, move the window down and preserve its height."
+  (interactive "P")
+  (let* ((down-w (windmove-find-other-window 'down))
+        (up-w (windmove-find-other-window 'up))
+        (i (if n (prefix-numeric-value n) windresize-increment))
+        (shrink-ok (> (- (window-width) i) window-min-width))
+        (wcf (current-window-configuration))
+        (w (selected-window)))
+    (if (not windresize-move-borders)
+       (if (or (and (window-minibuffer-p down-w) (not up-w))
+               (< (- (window-height) i) window-min-height))
+           (setq windresize-msg (cons "[Can't shrink window vertically]" 1))
+         (if shrink-ok (shrink-window i)
+             (setq windresize-msg (cons "[Can't shrink window vertically]" 1))))
+      (cond ((equal (frame-height) (1+ (window-height)))
+            (setq windresize-msg (cons "No horizontal split" 2)))
+           ((and up-w down-w (not (window-minibuffer-p down-w))
+                 upper-border)
+            (progn (windmove-up windresize-windmove-relative-to-point)
+                   (adjust-window-trailing-edge (selected-window) i nil)
+                   (select-window w)
+                   (if fixed-height (windresize-down))))
+           ((and down-w (not (window-minibuffer-p down-w)))
+            (condition-case nil
+                (adjust-window-trailing-edge w i nil)
+              (error (setq windresize-msg (cons "[Can't move bottom border down]" 1)))))
+           (up-w (windresize-down-inwards))
+           (t (setq windresize-msg (cons "[Can't move border]" 1)))))))
+
+;;; Moving the opposite border inwards:
+
+(defun windresize-left-inwards (&optional n)
+  "Move the right border left by N lines."
+  (interactive "P")
+  (let ((i (if n (prefix-numeric-value n) windresize-increment)))
+    (condition-case nil
+       (adjust-window-trailing-edge (selected-window) (- i) t)
+      (error (setq windresize-msg
+                  (cons "[Can't move right border to the left]" 1))))))
+
+(defun windresize-right-inwards (&optional n)
+  "Move the left border right by N lines."
+  (interactive "P")
+  (let ((i (if n (prefix-numeric-value n) windresize-increment))
+       (left-w (windmove-find-other-window 'left)))
+    (condition-case nil
+       (if left-w (adjust-window-trailing-edge left-w i t) (error t))
+      (error (setq windresize-msg
+                  (cons "[Can't move left border right]" 1))))))
+
+(defun windresize-up-inwards (&optional n)
+  "Move the bottom border up by N lines."
+  (interactive "P")
+  (let ((i (if n (prefix-numeric-value n) windresize-increment))
+       (down-w (windmove-find-other-window 'down)))
+    (condition-case nil
+       (progn (if (window-minibuffer-p down-w)
+                  (setq windresize-msg
+                        (cons "[Can't move bottom border up]" 1)))
+              (adjust-window-trailing-edge
+               (selected-window) (- i) nil))
+      (error (setq windresize-msg
+                  (cons "[Can't move bottom border up]" 1))))))
+
+(defun windresize-down-inwards (&optional n)
+  "Move the upper border down by N lines."
+  (interactive "P")
+  (let ((i (if n (prefix-numeric-value n) windresize-increment))
+       (wcf (current-window-configuration))
+       (up-w (windmove-find-other-window 'up)))
+    (condition-case nil
+       (if up-w (adjust-window-trailing-edge up-w i nil)
+         (error t))
+      (error (setq windresize-msg
+                  (cons "[Can't move upper border down]" 1))))))
+
+;;; Arrow keys temoporarily negating the increment value:
+
+(defun windresize-down-minus ()
+  "Same as `windresize-left' but negate `windresize-increment'."
+  (interactive)
+  (let ((i windresize-increment))
+    (windresize-decrease-increment t)
+    (windresize-down)
+    (windresize-increase-increment t)))
+
+(defun windresize-right-minus ()
+  "Same as `windresize-left' but negate `windresize-increment'."
+  (interactive)
+  (let ((i windresize-increment))
+    (windresize-decrease-increment t)
+    (windresize-right)
+    (windresize-increase-increment t)))
+
+(defun windresize-up-minus ()
+  "Same as `windresize-left' but negate `windresize-increment'."
+  (interactive)
+  (let ((i windresize-increment))
+    (windresize-decrease-increment t)
+    (windresize-up)
+    (windresize-increase-increment t)))
+
+(defun windresize-left-minus ()
+  "Same as `windresize-left' but negate `windresize-increment'."
+  (interactive)
+  (let ((i windresize-increment))
+    (windresize-decrease-increment t)
+    (windresize-left)
+    (windresize-increase-increment t)))
+
+;;; Let's left/up borders have priority over right/bottom borders:
+
+(defun windresize-left-force-left (&optional n)
+  "If two movable borders, move the left border.
+N is the number of lines by which moving borders."
+  (interactive "P")
+  (let ((i (if n (prefix-numeric-value n)
+            windresize-increment)))
+    (windresize-left i t)))
+
+(defun windresize-right-force-left (&optional n)
+  "If two movable borders, move the left border.
+N is the number of lines by which moving borders."
+  (interactive "P")
+  (let ((i (if n (prefix-numeric-value n)
+            windresize-increment)))
+    (windresize-right i t)))
+
+(defun windresize-up-force-up (n)
+  "If two movable borders, move the upper border.
+N is the number of lines by which moving borders."
+  (interactive "P")
+  (let ((i (if n (prefix-numeric-value n)
+            windresize-increment)))
+    (windresize-up i t)))
+
+(defun windresize-down-force-up (n)
+  "If two movable borders, move the upper border.
+N is the number of lines by which moving borders."
+  (interactive)
+  (let ((i (if n (prefix-numeric-value n)
+            windresize-increment)))
+    (windresize-down i t)))
+
+;;; Move the whole window, with fixed width/height:
+
+(defun windresize-left-fixed ()
+  "Move the window left, keeping its width constant."
+  (interactive)
+  (windresize-left nil t t))
+
+(defun windresize-right-fixed ()
+  "Move the window right, keeping its width constant."
+  (interactive)
+  (windresize-right nil t t))
+
+(defun windresize-up-fixed ()
+  "Move the window up, keeping its height constant."
+  (interactive)
+  (windresize-up nil t t))
+
+(defun windresize-down-fixed ()
+  "Move the window down, keeping its height constant."
+  (interactive)
+  (windresize-down nil t t))
+
+;;; Move edges:
+
+(defun windresize-bottom-right ()
+  "Call `windresize-right' and `windresize-down' successively.
+In move-borders method, move the bottom-right edge of the window
+outwards.  In resize-window method, enlarge the window
+horizontally and shrink it vertically."
+  (interactive)
+  (windresize-right)
+  (windresize-down))
+
+(defun windresize-up-left ()
+  "Call `windresize-left' and `windresize-up' successively.
+In move-borders method, move the upper-left edge of the window
+outwards.  In resize-window method, shrink the window
+horizontally and enlarge it vertically."
+  (interactive)
+  (windresize-left nil t)
+  (windresize-up nil t))
+
+(defun windresize-up-right ()
+  "Call `windresize-right' and `windresize-up' successively.
+In move-borders method, move the upper-right edge of the window
+outwards.  In resize-window method, enlarge the window both
+horizontally and horizontally."
+  (interactive)
+  (windresize-right)
+  (windresize-up nil t))
+
+(defun windresize-bottom-left ()
+  "Call `windresize-left' and `windresize-up' successively.
+In move-borders method, move the bottom-left edge of the window
+outwards.  In resize-window method, shrink the window both
+horizontally and vertically."
+  (interactive)
+  (windresize-left nil t)
+  (windresize-down))
+
+;;; Cancel, exit and help:
+
+(defun windresize-cancel-and-quit ()
+  "Cancel window resizing and quit `windresize'."
+  (interactive)
+  (if (derived-mode-p 'help-mode)
+      (progn (View-quit)
+            (setq windresize-msg '("Help quit" . 2)))
+    (switch-to-buffer windresize-buffer)
+    (set-window-configuration windresize-window-configuration-0)
+    (setq overriding-local-map-menu-flag
+         windresize-overriding-terminal-local-map-0)
+    (setq overriding-terminal-local-map
+         windresize-overriding-menu-flag-0)
+    (message "Window resizing quit (not saved)")
+    (windresize-remove-command-hooks)
+    (setq windresize-resizing nil)))
+
+(defun windresize-exit ()
+  "Keep this window configuration and exit `windresize'."
+  (interactive)
+  (setq overriding-local-map-menu-flag
+       windresize-overriding-terminal-local-map-0)
+  (setq overriding-terminal-local-map
+       windresize-overriding-menu-flag-0)
+  (message "Window configuration set")
+  (windresize-remove-command-hooks)
+  (setq windresize-resizing nil))
+
+(defun windresize-help ()
+  "Display a help window for `windresize'."
+  (interactive)
+  (let ((pop-up-frames nil) ; otherwise we exit the loop
+       (temp-buffer-show-hook
+        '(lambda ()
+           (fit-window-to-buffer)
+           (shrink-window-if-larger-than-buffer)
+           (goto-char (point-min))
+           (save-excursion
+             (while (re-search-forward
+                     "^[ M][^\n:]+:\\|[0123~=oq]:\\|RET:" nil t)
+               (add-text-properties (match-beginning 0)
+                                    (match-end 0) '(face bold))))))
+       (help
+"Use the arrow keys to move a border into the arrow direction.
+Right and bottom borders have priority over left and up borders.
+Press SPC to toggle between moving borders and resizing windows,
+where arrow keys mean shrink/enlarge.
+
+Here is a list of default keybindings:
+
+    arrows:  move border or resize windows         =:  balance windows
+M-S-arrows:  select adjacent window                o:  other-window
+C-M-arrows:  move window with fixed width/height   0:  delete current window
+  C-arrows:  temporarilly negate INCREMENT         ~:  negate INCREMENT
+  M-arrows:  move with priority to left/up         1:  delete other windows
+         i:  set INCREMENT (to numeric prefix)     2:  split window vertically
+       +/-:  increase/decrease INCREMENT           3:  split window horizontally
+         s:  save window configuration             q:  cancel and quit
+         r:  restore window configuration          ?:  show this help window
+       SPC:  toggle method: move border, resize  RET:  set and exit
+
+         /:  move right-bottom edge outwards or left-upper edge inwards
+       M-/:  move left-upper edge outwards or right-bottom edge inwards
+         \\:  move right-upper edge outwards or left-bottom edge inwards
+       M-\\:  move left-bottom edge outwards or right-upper edge inwards
+
+See the docstring of `windresize' for detailed description."))
+    (with-output-to-temp-buffer "*Help*"
+      (princ help))))
+
+(provide 'windresize)
+
+;;; windresize.el ends here
diff --git a/packages/xclip/xclip.el b/packages/xclip/xclip.el
new file mode 100644 (file)
index 0000000..fd1a748
--- /dev/null
@@ -0,0 +1,143 @@
+;;; xclip.el --- use xclip to copy&paste             -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2007, 2012, 2013  Free Software Foundation, Inc.
+
+;; Author: Leo Liu <sdl.web@gmail.com>
+;; Keywords: convenience, tools
+;; Created: 2007-12-30
+;; Version: 1.3
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This package allows emacs to copy to and paste from the X clipboard
+;; when running in xterm. It uses the external command-line tool xclip
+;; found on http://xclip.sourceforge.net.
+;;
+;; To use: (xclip-mode 1)
+
+;;; Code:
+
+(defcustom xclip-program "xclip"
+  "Name of the xclip program."
+  :type 'string
+  :group 'killing)
+
+(defcustom xclip-select-enable-clipboard t
+  "Non-nil means cutting and pasting uses the clipboard.
+This is in addition to, but in preference to, the primary selection."
+  :type 'boolean
+  :group 'killing)
+
+(defcustom xclip-use-pbcopy&paste (and xclip-select-enable-clipboard
+                                       (eq system-type 'darwin)
+                                       (executable-find "pbcopy")
+                                       t)
+  "Non-nil means using pbcopy and pbpaste instead of xclip.
+If non-nil `xclip-program' is ignored."
+  :type 'boolean
+  :group 'killing)
+
+(defvar xclip-last-selected-text-clipboard nil
+  "The value of the CLIPBOARD X selection from xclip.")
+
+(defvar xclip-last-selected-text-primary nil
+  "The value of the PRIMARY X selection from xclip.")
+
+(defun xclip-set-selection (type data)
+  "TYPE is a symbol: primary, secondary and clipboard.
+
+See also `x-set-selection'."
+  (let* ((process-connection-type nil)
+         (proc (cond
+                (xclip-use-pbcopy&paste
+                 (start-file-process "pbcopy" nil "pbcopy"))
+                ((getenv "DISPLAY")
+                 (start-file-process "xclip" nil xclip-program
+                                     "-selection" (symbol-name type))))))
+    (when proc
+      (process-send-string proc data)
+      (process-send-eof proc))
+    data))
+
+(defun xclip-select-text (text)
+  "See `x-select-text'."
+  (xclip-set-selection 'primary text)
+  (setq xclip-last-selected-text-primary text)
+  (when xclip-select-enable-clipboard
+    (xclip-set-selection 'clipboard text)
+    (setq xclip-last-selected-text-clipboard text)))
+
+(defun xclip-selection-value ()
+  "See `x-selection-value'."
+  (let ((clip-text (when xclip-select-enable-clipboard
+                     (with-output-to-string
+                       (cond
+                        (xclip-use-pbcopy&paste
+                         (process-file "pbpaste" nil standard-output nil))
+                        ((getenv "DISPLAY")
+                         (process-file xclip-program nil standard-output nil
+                                       "-o" "-selection" "clipboard")))))))
+    (setq clip-text
+          (cond                         ; Check clipboard selection.
+           ((or (not clip-text) (string= clip-text ""))
+            (setq xclip-last-selected-text-clipboard nil))
+           ((eq clip-text xclip-last-selected-text-clipboard)
+            nil)
+           ((string= clip-text xclip-last-selected-text-clipboard)
+            ;; Record the newer string so subsequent calls can use the
+            ;; `eq' test.
+            (setq xclip-last-selected-text-clipboard clip-text)
+            nil)
+           (t (setq xclip-last-selected-text-clipboard clip-text))))
+    (or clip-text
+        (when (and (not xclip-use-pbcopy&paste) (getenv "DISPLAY"))
+          (let ((primary-text (with-output-to-string
+                                (process-file xclip-program nil
+                                              standard-output nil "-o"))))
+            (setq primary-text
+                  (cond                 ; Check primary selection.
+                   ((or (not primary-text) (string= primary-text ""))
+                    (setq xclip-last-selected-text-primary nil))
+                   ((eq primary-text xclip-last-selected-text-primary)
+                    nil)
+                   ((string= primary-text xclip-last-selected-text-primary)
+                    ;; Record the newer string so subsequent calls can
+                    ;; use the `eq' test.
+                    (setq xclip-last-selected-text-primary primary-text)
+                    nil)
+                   (t (setq xclip-last-selected-text-primary primary-text))))
+            primary-text)))))
+
+(defun turn-on-xclip ()
+  (setq interprogram-cut-function 'xclip-select-text)
+  (setq interprogram-paste-function 'xclip-selection-value))
+
+;;;###autoload
+(define-minor-mode xclip-mode
+  "Minor mode to use the `xclip' program to copy&paste."
+  :global t
+  (if xclip-mode
+      (progn
+        (or xclip-use-pbcopy&paste
+            (executable-find xclip-program)
+            (signal 'file-error (list "Searching for program"
+                                      xclip-program "no such file")))
+        ;; NOTE: See `tty-run-terminal-initialization' and term/README
+        (add-hook 'terminal-init-xterm-hook 'turn-on-xclip))
+    (remove-hook 'terminal-init-xterm-hook 'turn-on-xclip)))
+
+(provide 'xclip)
+;;; xclip.el ends here
diff --git a/packages/yasnippet/.gitignore b/packages/yasnippet/.gitignore
new file mode 100644 (file)
index 0000000..c433a57
--- /dev/null
@@ -0,0 +1,10 @@
+authors.txt\r
+doc/gh-pages\r
+doc/*.html\r
+pkg/\r
+extras/imported/**\r
+!extras/imported/*/.yas-setup.el\r
+.yas-compiled-snippets.el\r
+*.elc\r
+ert-x.*\r
+ert.*\r
diff --git a/packages/yasnippet/.gitmodules b/packages/yasnippet/.gitmodules
new file mode 100644 (file)
index 0000000..3c942bf
--- /dev/null
@@ -0,0 +1,9 @@
+[submodule "extras/bundles/ruby-tmbundle"]
+       path = extras/bundles/ruby-tmbundle
+       url = http://github.com/drnic/ruby-tmbundle.git
+[submodule "extras/bundles/html-tmbundle"]
+       path = extras/bundles/html-tmbundle
+       url = http://github.com/drnic/html-tmbundle.git
+[submodule "extras/bundles/rails-tmbundle"]
+       path = extras/bundles/rails-tmbundle
+       url = http://github.com/drnic/ruby-on-rails-tmbundle.git
diff --git a/packages/yasnippet/README b/packages/yasnippet/README
new file mode 100644 (file)
index 0000000..2dd107b
--- /dev/null
@@ -0,0 +1,28 @@
+YASnippet is a code template system for Emacs.  To enable it in all
+buffers, add the following line to your init file:
+
+   (yas-global-mode 1)
+
+Alternatively, you can enable `yas-minor-mode' in individual buffers.
+When YASnippet is active, the following commands can be used:
+
+TAB (`yas-expand')
+   Attempt to expand a snippet before point.  For example, typing TAB
+   after `if' may expand a snippet beginning with `if', if one exists.
+   If no snippet expansion is possible, run the usual binding of TAB.
+
+`C-c & C-s' (`yas-insert-snippet')
+   Prompts for a snippet, and inserts it.
+
+`C-c & C-n' (`yas-new-snippet')
+   Opens a *new snippet* buffer where you can define a new snippet.
+   Typing C-c C-c in this buffer saves and invokes the definition.
+   The variable `yas-snippet-dirs' determines where snippet
+   definitions are stored.
+
+`C-c & C-v' (`yas-visit-snippet-file')
+   Prompt for, and visit an existing snippet definition.
+
+For more information and detailed usage, refer to the project page:
+
+     http://github.com/capitaomorte/yasnippet
diff --git a/packages/yasnippet/README.mdown b/packages/yasnippet/README.mdown
new file mode 100644 (file)
index 0000000..3289b1e
--- /dev/null
@@ -0,0 +1,171 @@
+# Intro
+
+**YASnippet** is a template system for Emacs. It allows you to
+type an abbreviation and automatically expand it into function
+templates. Bundled language templates include: C, C++, C#, Perl,
+Python, Ruby, SQL, LaTeX, HTML, CSS and more. The snippet syntax
+is inspired from [TextMate's][textmate-snippets] syntax, you can
+even [import][import-docs] most TextMate templates to
+YASnippet. Watch [a demo on YouTube][youtube-demo] or download a
+[higher resolution version][high-res-demo].
+
+[textmate-snippets]: http://manual.macromates.com/en/snippets
+[import-docs]: http://yasnippet.googlecode.com/svn/trunk/doc/snippet-development.html#importing-textmate-snippets
+[youtube-demo]: http://www.youtube.com/watch?v=ZCGmZK4V7Sg
+[high-res-demo]: http://yasnippet.googlecode.com/files/yas_demo.avi
+
+# Installation
+
+## Install the most recent version
+
+Clone this repository somewhere
+
+    $ cd ~/.emacs.d/plugins
+    $ git clone https://github.com/capitaomorte/yasnippet
+
+Add the following in your `.emacs` file:
+
+    (add-to-list 'load-path
+                  "~/.emacs.d/plugins/yasnippet")
+    (require 'yasnippet)
+    (yas-global-mode 1)
+
+Add your own snippets to `~/.emacs.d/snippets` by placing files there or invoking `yas-new-snippet`.
+
+## Install with `package-install`
+
+In a recent emacs `M-x list-packages` is the recommended way to list and install packages.
+[MELPA][melpa] keeps a very recent snapshot of YASnippet, see http://melpa.milkbox.net/#installing.
+
+## Install with el-get
+
+El-get is a nice way to get the most recent version, too. See
+https://github.com/dimitri/el-get for instructions. Be sure to install the
+"master" branch since the 3.x series still use the old googlecode code, base.
+Consider using this "local" recipe.
+
+    (push '(:name yasnippet
+                  :website "https://github.com/capitaomorte/yasnippet.git"
+                  :description "YASnippet is a template system for Emacs."
+                  :type github
+                  :pkgname "capitaomorte/yasnippet"
+                  :features "yasnippet"
+                  :compile "yasnippet.el")
+          el-get-sources)
+
+## Use `yas-minor-mode` on a per-buffer basis
+
+To use YASnippet as a non-global minor mode, replace `(yas-global-mode 1)` with
+`(yas-reload-all)` to load the snippet tables. Then add a call to
+`(yas-minor-mode)` to the major-modes where you to enable YASnippet.
+
+    (add-hook 'prog-mode-hook
+              '(lambda ()
+                 (yas-minor-mode)))
+
+# (NOT) Contributing snippets
+
+Please **do not** open pull requests or ask me to add snippets to
+YASnippet.
+
+The bundled collection under `/snippets` is considered frozen: **I
+will not add more snippets to it**.
+
+You can point `yas-snippet-dirs` to good snippet collections out
+there. If you have created snippets for a mode, or multiple modes,
+consider creating a repository to host them, then tell users that it
+should be added like this to `yas-snippet-dirs`:
+
+    (setq yas-snippet-dirs
+          '("~/.emacs.d/snippets"            ;; personal snippets
+            "/path/to/some/collection/"      ;; just some foo-mode snippets
+            "/path/to/some/othercollection/" ;; some more foo-mode and a complete baz-mode
+            "/path/to/yasnippet/snippets"    ;; the default collection
+            ))
+
+    (yas-global-mode 1) ;; or M-x yas-reload-all if you've started YASnippet already.
+
+# Importing TextMate snippets
+
+There is a tool `extras/textmate-import.rb` than can import many
+actual TextMate snippets. These can be quite complex so the
+`extras/imported/*-mode/.yas-setup.el` files help it with the more
+difficult importation.
+
+I'm focusing on developing `textmate-import.rb` tool and some
+`yas-setup.el` files. In the future `/snippets` snippets will be
+deprecated and might be replaced with `extras/imported`.
+
+## Example importation of rails snippets
+
+To start using [drnic's](https://github.com/drnic) snippets for rails
+development, follow this example. It will convert `ruby`, `rails` and
+`html` bundles from github repositories. The importation will be
+guided by the `.yas-setup.el` files.
+
+After cloning this repository to `~/.emacs.d/plugins/yasnippet`
+
+    cd ~/.emacs.d/plugins/yasnippet
+    git submodule init
+    git submodule update
+    gem install plist trollop
+    rake convert_bundles             # will convert ruby, rails and html bundles
+
+Then, in your `.emacs` file
+
+    (add-to-list 'load-path
+                  "~/.emacs.d/plugins/yasnippet")
+    (require 'yasnippet)
+    (setq yas-snippet-dirs '("~/.emacs.d/snippets" "~/.emacs.d/plugins/yasnippet/extras/imported"))
+    (yas-global-mode 1)
+
+Open some rails file (model, app, etc) and start using the textmate
+snippets.  Note that in the example above we have abandoned the
+default snippet collection on `~/.emacs.d/plugins/yasnippet/snippets`
+
+# Documentation, issues, etc
+
+Please refer to the comprehensive (albeit slightly outdated)
+[documentation][docs] for full customization
+and support.  If you find a bug, please report it on
+[the GitHub issue tracker][issues].  (please **do not** submit new issues to the old
+[googlecode tracker][googlecode tracker])
+
+## Important note regarding bug reporting
+If you think have found a bug, please report it clearly.  Yasnippet
+does have (lots of) bugs and your reports are very valuable. Here's 
+a  [great example](https://github.com/capitaomorte/yasnippet/issues/318) 
+of a bug report. It has everything needed for a sucessfull analysis and 
+speedy resolution:
+
+*Before* reporting try to reproduce the bug **without** your usual
+`.emacs` (or whatever startup file you use). Do so either by starting
+emacs from the command line with the `-Q` switch, or by temporarily
+moving away your `.emacs` and creating a new smaller one just for
+reproducing the bug. Paste that file in your bug report. Paste any sequence 
+of relevant shell commands before you launch Emacs.
+
+*Then*, describe steps taken to reproduce from an
+end-user perspective. Try to be as unambiguous as possible. 
+
+Also, don't forget to state the Emacs version (use `M-x emacs-version`) and
+the yasnippet version you are using (if using the latest from github,
+do `git log -1` in the dir).
+
+Any more info is welcome, but don't just paste a backtrace or an error
+message string you got. I'm not saying your analysis might not be
+useful but following the instructions above immediately gives me a
+clear picture of what is happening.
+
+There is also a [YASnippet google group][forum]. I will keep the group
+open for reference and for discussion among users, unfortunately I
+can't guarantee a timely response, so maybe creating a github issue
+clearly marking your intent (user support/bug/feature request).
+
+Finally, thank you very much for using YASnippet!
+
+[docs]: http://capitaomorte.github.com/yasnippet/
+[issues]: https://github.com/capitaomorte/yasnippet/issues
+[googlecode tracker]: http://code.google.com/p/yasnippet/issues/list
+[forum]: http://groups.google.com/group/smart-snippet
+[melpa]: http://melpa.milkbox.net/
diff --git a/packages/yasnippet/Rakefile b/packages/yasnippet/Rakefile
new file mode 100644 (file)
index 0000000..d133218
--- /dev/null
@@ -0,0 +1,95 @@
+# -*- Ruby -*-
+
+require 'fileutils'
+
+$EMACS=ENV["EMACS"] || "emacs"
+
+def find_version
+  File.read("yasnippet.el", :encoding => "UTF-8") =~ /;; Package-version: *([0-9.]+?) *$/
+  $version = $1
+end
+find_version
+FileUtils.mkdir_p('pkg')
+
+desc "run tests in batch mode"
+task :tests do
+  sh "#{$EMACS} -Q -L . -l yasnippet-tests.el -nw --batch -e yas/ert"
+end
+
+desc "convert some textmate bundles to yasnippets"
+task :convert_bundles do
+  Dir.glob "extras/bundles/*-tmbundle" do |bundle_dir|
+    puts "Converting from #{bundle_dir}"
+    mode_prefix = File.basename(bundle_dir).match(/[^-]*/)[0]
+    raise "Couldn't guess mode name for #{bundle_dir}" unless mode_prefix
+    output = "./extras/imported/#{mode_prefix}-mode"
+    FileUtils.mkdir_p output
+    sh "./extras/textmate_import.rb -d #{bundle_dir} -o #{output} -q"
+  end
+end
+
+desc "create a release package"
+task :package do
+  release_dir = "pkg/yasnippet-#{$version}"
+  FileUtils.mkdir_p(release_dir)
+  files = ['snippets', 'yasnippet.el', 'dropdown-list.el']
+  FileUtils.cp_r files, release_dir
+  File.open(File.join(release_dir,'yasnippet-pkg.el'), 'w') do |file|
+    file.puts <<END
+(define-package "yasnippet"
+                "#{$version}"
+                "A template system for Emacs")
+END
+  end
+  sh "git clean -f snippets"
+  FileUtils.cd 'pkg' do
+    sh "tar cf yasnippet-#{$version}.tar yasnippet-#{$version}"
+  end
+end
+
+desc "create a release package and upload it to google code"
+task :release => [:package, 'doc:archive'] do
+  raise "Not implemented for github yet!"
+end
+
+rule '.html' => '.rst' do |t|
+  sh "doc/compile-doc.py #{t.source} > #{t.name}"
+end
+desc "Generate document"
+task :doc => FileList['doc/*.rst'].ext('html')
+
+namespace :doc do
+  task :archive do
+    release_dir = "pkg/yasnippet-#{$version}"
+    FileUtils.mkdir_p(release_dir)
+    sh "tar cjf pkg/yasnippet-doc-#{$version}.tar.bz2 " +
+      "--exclude=doc/.svn --exclude=doc/images/.svn doc/*.html doc/images"
+  end
+
+  task :upload do
+    if File.exists? 'doc/gh-pages'
+      Dir.chdir 'doc/gh-pages' do
+        sh "git checkout gh-pages"
+      end
+      Dir.glob("doc/*.{html,css}").each do |file|
+        FileUtils.cp file, 'doc/gh-pages'
+      end
+      Dir.glob("doc/images/*").each do |file|
+        FileUtils.cp file, 'doc/gh-pages/images'
+      end
+      Dir.chdir 'doc/gh-pages' do
+        sh "git commit -a -m 'Automatic documentation update.'"
+        sh "git push"
+      end
+    end
+  end
+end
+
+desc "Compile yasnippet.el into yasnippet.elc"
+
+rule '.elc' => '.el' do |t|
+  sh "#{$EMACS} --batch -L . --eval \"(byte-compile-file \\\"#{t.source}\\\")\""
+end
+task :compile => FileList["yasnippet.el", "dropdown-list.el"].ext('elc')
+
+task :default => :doc
diff --git a/packages/yasnippet/doc/images/bg-content-left.png b/packages/yasnippet/doc/images/bg-content-left.png
new file mode 100644 (file)
index 0000000..a64b346
Binary files /dev/null and b/packages/yasnippet/doc/images/bg-content-left.png differ
diff --git a/packages/yasnippet/doc/images/bg-content-right.png b/packages/yasnippet/doc/images/bg-content-right.png
new file mode 100644 (file)
index 0000000..f07ebb5
Binary files /dev/null and b/packages/yasnippet/doc/images/bg-content-right.png differ
diff --git a/packages/yasnippet/doc/images/bg-content.png b/packages/yasnippet/doc/images/bg-content.png
new file mode 100644 (file)
index 0000000..d55828e
Binary files /dev/null and b/packages/yasnippet/doc/images/bg-content.png differ
diff --git a/packages/yasnippet/doc/images/bg-navigation-item-hover.png b/packages/yasnippet/doc/images/bg-navigation-item-hover.png
new file mode 100644 (file)
index 0000000..c783d71
Binary files /dev/null and b/packages/yasnippet/doc/images/bg-navigation-item-hover.png differ
diff --git a/packages/yasnippet/doc/images/bg-navigation-item.png b/packages/yasnippet/doc/images/bg-navigation-item.png
new file mode 100644 (file)
index 0000000..d2452ac
Binary files /dev/null and b/packages/yasnippet/doc/images/bg-navigation-item.png differ
diff --git a/packages/yasnippet/doc/images/bg-navigation.png b/packages/yasnippet/doc/images/bg-navigation.png
new file mode 100644 (file)
index 0000000..18b9559
Binary files /dev/null and b/packages/yasnippet/doc/images/bg-navigation.png differ
diff --git a/packages/yasnippet/doc/images/body.png b/packages/yasnippet/doc/images/body.png
new file mode 100644 (file)
index 0000000..b361e7b
Binary files /dev/null and b/packages/yasnippet/doc/images/body.png differ
diff --git a/packages/yasnippet/doc/images/customization-group.png b/packages/yasnippet/doc/images/customization-group.png
new file mode 100644 (file)
index 0000000..b10827f
Binary files /dev/null and b/packages/yasnippet/doc/images/customization-group.png differ
diff --git a/packages/yasnippet/doc/images/dropdown-menu.png b/packages/yasnippet/doc/images/dropdown-menu.png
new file mode 100644 (file)
index 0000000..57d482e
Binary files /dev/null and b/packages/yasnippet/doc/images/dropdown-menu.png differ
diff --git a/packages/yasnippet/doc/images/external.png b/packages/yasnippet/doc/images/external.png
new file mode 100644 (file)
index 0000000..419c06f
Binary files /dev/null and b/packages/yasnippet/doc/images/external.png differ
diff --git a/packages/yasnippet/doc/images/ido-menu.png b/packages/yasnippet/doc/images/ido-menu.png
new file mode 100644 (file)
index 0000000..df392c5
Binary files /dev/null and b/packages/yasnippet/doc/images/ido-menu.png differ
diff --git a/packages/yasnippet/doc/images/menu-1.png b/packages/yasnippet/doc/images/menu-1.png
new file mode 100644 (file)
index 0000000..d2e6a51
Binary files /dev/null and b/packages/yasnippet/doc/images/menu-1.png differ
diff --git a/packages/yasnippet/doc/images/menu-2.png b/packages/yasnippet/doc/images/menu-2.png
new file mode 100644 (file)
index 0000000..abb8a72
Binary files /dev/null and b/packages/yasnippet/doc/images/menu-2.png differ
diff --git a/packages/yasnippet/doc/images/menu-groups.png b/packages/yasnippet/doc/images/menu-groups.png
new file mode 100644 (file)
index 0000000..fcedda8
Binary files /dev/null and b/packages/yasnippet/doc/images/menu-groups.png differ
diff --git a/packages/yasnippet/doc/images/menu-parent.png b/packages/yasnippet/doc/images/menu-parent.png
new file mode 100644 (file)
index 0000000..f0fa10c
Binary files /dev/null and b/packages/yasnippet/doc/images/menu-parent.png differ
diff --git a/packages/yasnippet/doc/images/minor-mode-indicator.png b/packages/yasnippet/doc/images/minor-mode-indicator.png
new file mode 100644 (file)
index 0000000..3743455
Binary files /dev/null and b/packages/yasnippet/doc/images/minor-mode-indicator.png differ
diff --git a/packages/yasnippet/doc/images/x-menu.png b/packages/yasnippet/doc/images/x-menu.png
new file mode 100644 (file)
index 0000000..3bc9a15
Binary files /dev/null and b/packages/yasnippet/doc/images/x-menu.png differ
diff --git a/packages/yasnippet/doc/manual.mdown b/packages/yasnippet/doc/manual.mdown
new file mode 100644 (file)
index 0000000..aac0d89
--- /dev/null
@@ -0,0 +1,257 @@
+Quick start
+===========
+
+*YASnippet* is a template system for Emacs. It allows you to type an
+abbreviation and automatically expand it into function templates. Bundled
+language templates includes: C, C++, C#, Perl, Python, Ruby, SQL, LaTeX, HTML,
+CSS and more. The snippet syntax is inspired from TextMate's syntax, you can
+even [import most TextMate snippets](#import-textmate)
+
+YASnippet is an original creation of [pluskid][pluskid] who also wrote its predecessor
+[smart-snippet][smart-snippet].
+
+Watch a demo
+------------
+
+Do so on [youtube][youtube]
+
+Installation
+------------
+
+Clone this repository somewhere
+
+    $ cd ~/.emacs.d/plugins
+    $ git clone https://github.com/capitaomorte/yasnippet
+
+Add the following in your =.emacs= file:
+
+    (add-to-list 'load-path
+                  "~/.emacs.d/plugins/yasnippet")
+    (require 'yasnippet)
+    (yas/global-mode 1)
+
+Add your own snippets to `~/.emacs.d/snippets` by placing files there or
+invoking `yas-new-snippet`.
+
+Import textmate snippets (rails example)
+----------------------------------------
+
+YASnippet lets you use TextMate bundles directly:
+
+    $ cd ~/.emacs.d/plugins
+    $ git clone https://github.com/capitaomorte/yasnippet
+    $ cd yasnippet
+    $ git submodule init
+    $ git submodule update
+    $ gem install plist trollop
+    $ rake convert_bundles             # will convert ruby, rails and html bundles from drnic
+
+Then, in your `.emacs` file
+
+
+    (add-to-list 'load-path
+                  "~/.emacs.d/plugins/yasnippet")
+    (require 'yasnippet)
+    (setq yas/snippet-dirs '("~/.emacs.d/snippets" "~/.emacs.d/extras/imported"))
+    (yas/global-mode 1)
+
+Open some rails file (model, app, etc) and start using the textmate
+snippets. Consider that this is a work-in-progress and many snippets/commands
+might not work. Patches welcome!
+
+Contributing snippets
+---------------------
+
+Please *do not ask me* to add snippets to the default collection under
+`/snippets`. This collection is considered frozen. By customizing
+`yas-snippet-dirs` you can point yasnippet to good snippet collections out
+there.
+
+The `extras/textmate-import.rb` tool can import many actual Textmate snippets.
+I'm focusing on developing it and the accompanying `yas-setup.el` files that
+guide it with more difficult importations. The idea is to deprecate `/snippets=
+and replace it with =extras/imported`.
+
+Documentation, issues, etc
+--------------------------
+
+Please refer to the comprehensive [documentation](docs) for full
+customization and support.  If you think you've found a bug, please report it
+on [the GitHub issue tracker](issues).  (please **do not** submit new
+issues to the old [googlecode tracker](googlecode-tracker))
+
+If you run into problems using YASnippet, or have snippets to contribute,
+post to the [yasnippet forum](forum). Thank you very much for using
+YASnippet!
+
+Organizing snippets
+===================
+
+Basic structure
+---------------
+
+Snippet collections can be stored in plain text files. They are arranged by
+sub-directories naming *snippet tables*. These mostly name Emacs major names.
+
+    .
+    |-- c-mode
+    |   `-- printf
+    |-- java-mode
+    |   `-- println
+    `-- text-mode
+        |-- email
+        `-- time
+
+The collections are loaded into *snippet tables* which the triggering
+mechanism (see [Expanding snippets](#expand-snippets)) looks up and
+(hopefully) cause the right snippet to be expanded for you.
+
+Setting up `yas-snippet-dirs`
+-----------------------------
+
+The emacs variable `yas-snippet-dirs` tells YASnippet
+which collections to consider. It's used when you activate
+`yas-global-mode` or call
+`yas-reload-all` interactively.
+
+The default considers:
+
+ - a personal collection that lives in `~/.emacs.d/snippets`
+ - the bundled collection, taken as a relative path to `yasnippet.el` localtion
+
+When you come across other snippet collections, do the following to try them
+out:
+
+;; Develop in ~/emacs.d/mysnippets, but also
+;; try out snippets in ~/Downloads/interesting-snippets
+(setq yas/snippet-dirs '("~/emacs.d/mysnippets"
+                           "~/Downloads/interesting-snippets"))
+
+;; OR, keeping yasnippet's defaults try out ~/Downloads/interesting-snippets
+(setq yas/snippet-dirs (append yas/snippet-dirs
+                               '("~/Downloads/interesting-snippets")))
+
+Collections appearing earlier in the list shadow snippets with same names
+appearing in collections later in the list. `yas-new-snippet` always stores
+snippets in the first collection.
+
+The `.yas.parents` file
+-----------------------
+
+It's very useful to have certain modes share snippets between themselves. To do
+this, choose a mode subdirectory and place a `.yas-parents` containing a
+whitespace-separated list of other mode names. When you reload those modes
+become parents of the original mode.
+
+    .
+    |-- c-mode
+    |   |-- .yas-parents    # contains "cc-mode text-mode"
+    |   `-- printf
+    |-- cc-mode
+    |   |-- for
+    |   `-- while
+    |-- java-mode
+    |   |-- .yas-parents    # contains "cc-mode text-mode"
+    |   `-- println
+    `-- text-mode
+        |-- email
+        `-- time
+
+The `.yas-make-groups` file
+---------------------------
+
+If you place an empty plain text file `.yas-make-groups` inside one of the mode
+directories, the names of these sub-directories are considered groups of
+snippets and [the menu](snippet-menu) is organized much more cleanly:
+
+(TODO image)
+
+Another alternative way to achieve this is to place a `# group:` directive
+inside the snippet definition. See [Writing Snippets](#writing-snippets)
+
+
+    $ tree ruby-mode/
+    ruby-mode/
+    |-- .yas-make-groups
+    |-- collections
+    |   |-- each
+    |   `-- ...
+    |-- control structure
+    |   |-- forin
+    |   `-- ...
+    |-- definitions
+    |   `-- ...
+    `-- general
+       `-- ...
+
+
+Yet another way to create a nice snippet menu is to write into
+`.yas-make-groups` a menu definition. TODO
+
+TODO The `.yas-setup.el` file
+-----------------------------
+
+*** TODO
+
+TODO The `.yas-compiled-snippet.el` file
+----------------------------------------
+
+*** TODO
+
+The `.yas-skip` file
+--------------------
+
+Expanding Snippets
+==================
+
+This section describes how YASnippet chooses snippets for expansion at point.
+
+Maybe, you'll want some snippets to be expanded in a particular
+mode, or only under certain conditions, or be prompted using
+
+Triggering expansion
+--------------------
+
+To make a snippet expand after the cursor:
+
+* Type an the snippet's *trigger key* then press the key defined in
+  `yas-trigger-key`.
+
+* Use the snippet's *keybinding*.
+
+* Call [`yas-insert-snippet=](#yas-insert-snippet) (use `M-x
+  yas-insert-snippet`= or its keybinding =C-c & C-s`).
+
+* By expanding directly from the "YASnippet" menu in the menu-bar
+
+* Using hippie-expand
+
+* Use m2m's excellent [auto-complete](http://github.com/m2m/autocomplete)
+
+Reference
+=========
+
+    (yas--document-symbols 2 `("Interactive functions" . ,#'interactive-form)
+                             `("Customization variables" . ,#'(lambda (sym)
+                                                                (and (boundp sym)
+                                                                     (get sym 'standard-value))))
+                             `("Useful functions" . ,#'fboundp)
+                             `("Useful variables" . ,#'boundp))
+
+[smart-snippet]:      http://code.google.com/p/smart-snippet
+[pluskid]:            http://pluskid.lifegoo.org
+[screencast]:         http://www.youtube.com/watch?v=ZCGmZK4V7Sg
+[docs]:               http://capitaomorte.github.com/yasnippet
+[issues]:             https://github.com/capitaomorte/yasnippet/issues
+[googlecode-tracker]: http://code.google.com/p/yasnippet/issues/list
+[forum]:              http://groups.google.com/group/smart-snippet
+
+
+
+<!--
+ !-- Local Variables:
+ !-- mode: markdown
+ !-- fill-column: 80
+ !-- coding: utf-8
+ !-- End:
+ !-- -->
diff --git a/packages/yasnippet/doc/stylesheets/styles.css b/packages/yasnippet/doc/stylesheets/styles.css
new file mode 100644 (file)
index 0000000..a158012
--- /dev/null
@@ -0,0 +1,93 @@
+@media all\r
+{\r
+    body {\r
+        margin: 1em auto;\r
+        /*margin: 10px 18% 10px 18%;*/\r
+        font-family: Arial;\r
+        /*text-align: justify;*/\r
+        font-size: 14pt;\r
+        padding: 10px;\r
+        line-height: 1.2em;\r
+        max-width: 600pt;\r
+    }\r
+\r
+    div#table-of-contents {\r
+        position: fixed;\r
+        left: 0%;\r
+        right: 0%;\r
+        top: 0px;\r
+        z-index: 100;\r
+        background: black;\r
+    }\r
+\r
+    div#table-of-contents h2 {\r
+        display: none;\r
+    }\r
+\r
+    div#table-of-contents a {\r
+        text-decoration: none;\r
+        color: white;\r
+    }\r
+\r
+    div#table-of-contents a:visited {\r
+        color: white;\r
+    }\r
+\r
+    div#table-of-contents a:hover {\r
+        color: orange;\r
+    }\r
+\r
+    div.outline-2 h2{\r
+        padding-top: 50px;\r
+    }\r
+\r
+    div#text-table-of-contents {\r
+        text-color: white;\r
+        text-align: center;\r
+        margin-left: 30%;\r
+        margin-right: 30%;\r
+    }\r
+\r
+    div#text-table-of-contents ul {\r
+        height: 2em;\r
+        width: 500px;\r
+        list-style: none;\r
+        margin: auto;\r
+    }\r
+\r
+    div#text-table-of-contents ul li {\r
+        float: left;\r
+        margin-left:auto;\r
+        margin-right: auto;\r
+        padding-left: 10px;\r
+    }\r
+\r
+    div#postamble{\r
+        position: fixed;\r
+        width: 800px;\r
+        height: 250px;\r
+        left: 50%;\r
+        right: 50%;\r
+        margin:-75px 0 0 -400px;\r
+        bottom: -20px;\r
+        font-size: 10pt;\r
+        color: grey;\r
+        background: url('siscog-bottom-logo.png') no-repeat;\r
+        /* background-size: 100% 100%; */\r
+    }\r
+\r
+    div#postamble *{\r
+        display: none;\r
+    }\r
+\r
+    div#postamble p.date{\r
+        position: relative;\r
+        bottom: -200px;\r
+        text-align: center;\r
+        display: block;\r
+    }\r
+\r
+\r
+\r
+\r
+}
\ No newline at end of file
diff --git a/packages/yasnippet/doc/yas-doc-helper.el b/packages/yasnippet/doc/yas-doc-helper.el
new file mode 100755 (executable)
index 0000000..c575c0a
--- /dev/null
@@ -0,0 +1,102 @@
+;;; yas-doc-helper.el --- Help generate documentation for YASnippet
+
+;; Copyright (C) 2012, 2013  Free Software Foundation, Inc.
+
+;; Author: João Távora <joaotavora@gmail.com>
+;; Keywords: convenience
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Some functions to help generate YASnippet docs
+
+;;; Code:
+
+(defun yas--document-symbol (symbol level)
+  (flet ((concat-lines (&rest lines)
+                       (mapconcat #'identity lines "\n")))
+    (let* ((stars (make-string level ?*))
+           (heading (cond ((fboundp symbol)
+                           (format "%s =%s= (%s)"
+                                   stars
+                                   symbol
+                                   (mapconcat #'symbol-name
+                                              (help-function-arglist symbol t) " ")))
+                          (t
+                           (format "%s =%s=\n" stars symbol))))
+           (after-heading
+            (concat-lines ":PROPERTIES:"
+                          (format ":CUSTOM_ID: %s" symbol)
+                          ":END:"))
+           (body (or (cond ((boundp symbol)
+                            (documentation-property symbol 'variable-documentation t))
+                           ((fboundp symbol)
+                            (documentation-property symbol 'function-documentation t))
+                           (t
+                            (format "*WARNING*: no symbol named =%s=" symbol)))
+                     (format "*WARNING*: no doc for symbol =%s=" symbol)))
+           (case-fold-search nil))
+      ;; do some transformations on the body: FOO becomes /foo/ and
+      ;; `bar' becomes [[#bar][=bar=]]
+      (setq body (replace-regexp-in-string
+                  "[A-Z][A-Z-]+" #'(lambda (match)
+                                     (format "/%s/" (downcase match)))
+                  body)
+            body (replace-regexp-in-string "`\\([a-z-]+\\)'" #'(lambda (match)
+                                                                 (let* ((name (downcase (match-string 1 match)))
+                                                                        (sym (intern name)))
+                                                                   (if (and (or (boundp sym)
+                                                                                (fboundp sym))
+                                                                            (save-match-data
+                                                                              (string-match "^yas-" name)))
+                                                                       (format "[[#%s][=%s=]]"
+                                                                               name name)
+                                                                     (format "=%s=" name))))
+                                           body))
+      ;; output the paragraph
+      ;;
+      (concat-lines heading
+                    after-heading
+                    body))))
+
+(defun yas--document-symbols (level &rest names-and-predicates)
+  (let ((sym-lists (make-vector (length names-and-predicates) (list)))
+        (retval ""))
+    (loop for sym in yas--exported-syms
+          do (loop for test in (mapcar #'cdr names-and-predicates)
+                   for i from 0
+                   do (when (funcall test sym)
+                        (push sym (aref sym-lists i))
+                        (return))))
+    (loop for slist across sym-lists
+          for name in (mapcar #'car names-and-predicates)
+          do (progn
+               (setq retval
+                     (concat retval
+                             (format "\n** %s\n" name)
+                             (mapconcat #'yas--document-symbol slist "\n\n")))))
+    retval))
+
+(defun yas--internal-link-snippet ()
+  (interactive)
+  (yas-expand-snippet "[[#$1][=${1:`yas/selected-text`}=]]"))
+
+(define-key org-mode-map [M-f8] 'yas--internal-link-snippet)
+
+(provide 'yas-doc-helper)
+;;; yas-doc-helper.el ends here
+;; Local Variables:
+;; coding: utf-8
+;; End:
diff --git a/packages/yasnippet/extras/bundles/html-tmbundle b/packages/yasnippet/extras/bundles/html-tmbundle
new file mode 160000 (submodule)
index 0000000..0bab270
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 0bab270103ce27ebd896f80ba303859c549ad3c5
diff --git a/packages/yasnippet/extras/bundles/rails-tmbundle b/packages/yasnippet/extras/bundles/rails-tmbundle
new file mode 160000 (submodule)
index 0000000..683f6e6
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 683f6e652cc467e0007f80aa11f174a4d9189f3c
diff --git a/packages/yasnippet/extras/bundles/ruby-tmbundle b/packages/yasnippet/extras/bundles/ruby-tmbundle
new file mode 160000 (submodule)
index 0000000..74683ec
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 74683ecbb353bd39bb942a6f9c82026f82696cd6
diff --git a/packages/yasnippet/extras/imported/html-mode/.yas-setup.el b/packages/yasnippet/extras/imported/html-mode/.yas-setup.el
new file mode 100644 (file)
index 0000000..3607ec5
--- /dev/null
@@ -0,0 +1,707 @@
+;;; .yas-setup.el --- Setup for html-mode
+
+;; Copyright (C) 2013  Free Software Foundation, Inc.
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(defvar yas-html-default-tag "p")
+
+(defvar yas-html-xhtml-attr "")
+
+(defvar yas-html-just-like-tm nil
+  "Html-mode snippets behave as close to TextMate as possible.")
+
+(defun yas-html-activate ()
+  (add-to-list (make-local-variable 'yas-extra-modes) 'html-mode))
+
+(add-hook 'nxml-mode-hook 'yas-html-activate)
+(add-hook 'rhtml-mode-hook 'yas-html-activate)
+
+(defun yas-html-remove-preceding-word ()
+  (interactive)
+  (let (word-begin
+        word-end
+        (line-beginning-position (line-beginning-position))
+        (orig-point (point))
+        retval)
+    (save-excursion
+      (when (and (forward-word -1)
+                 (setq word-begin (point))
+                 (forward-word 1)
+                 (setq word-end (point))
+                 (< word-begin orig-point)
+                 (>= word-end orig-point)
+                 (<= (line-beginning-position) word-begin)
+                 ;; (not (string-match "^[\s\t]+$" "          "))
+                 )
+      (setq retval
+            (cons
+             (buffer-substring-no-properties word-begin orig-point)
+             (buffer-substring-no-properties word-end orig-point)))
+      (delete-region word-begin word-end)
+      retval))))
+
+
+(defun yas-html-first-word (string)
+  (replace-regexp-in-string "\\\W.*" "" string))
+
+(defun yas-html-insert-tag-pair-snippet ()
+  (let* ((tag-and-suffix (or (and yas-selected-text
+                                  (cons yas-selected-text nil))
+                             (yas-html-remove-preceding-word)))
+         (tag    (car tag-and-suffix))
+         (suffix (or (cdr tag-and-suffix) ""))
+         (single-no-arg "\\(br\\|hr\\)")
+         (single        "\\(img\\|meta\\|link\\|input\\|base\\|area\\|col\\|frame\\|param\\)"))
+    (cond ((null tag)
+           (yas-expand-snippet (format "<${1:%s}>%s</${1:$(yas-html-first-word yas-text)}>%s"
+                                       (or yas-html-default-tag
+                                           "p")
+                                       (if yas-html-just-like-tm "$2" "$0")
+                                       suffix)))
+          ((string-match single-no-arg tag)
+           (insert (format "<%s%s/>%s" tag yas-html-xhtml-attr suffix)))
+          ((string-match single tag)
+           (yas-expand-snippet (format "<%s $1%s/>%s" tag yas-html-xhtml-attr suffix)))
+          (t
+           (yas-expand-snippet (format "<%s>%s</%s>%s"
+                                       tag
+                                       (if yas-html-just-like-tm "$1" "$0")
+                                       (replace-regexp-in-string "\\\W.*" "" tag)
+                                       suffix))))))
+
+(defun yas-html-wrap-each-line-in-openclose-tag ()
+  (let* ((mirror "${1:$(yas-html-first-word yas-text)}")
+         (yas-html-wrap-newline (when (string-match "\n" yas-selected-text) "\n"))
+         (template (concat (format "<${1:%s}>" (or yas-html-default-tag "p"))
+                           yas-selected-text
+                           "</" mirror ">")))
+    (setq template (replace-regexp-in-string "\n" (concat "</" mirror ">\n<$1>") template))
+    (yas-expand-snippet template)))
+
+(defun yas-html-toggle-wrap (string wrap)
+  (or (and string
+           (string-match (format "<%s>\\(.*\\)</%s>" wrap wrap)
+                         string)
+           (match-string 1 string))
+      (concat wrap string wrap)))
+
+(defun yas-html-between-tag-pair-p ()
+  (save-excursion
+    (backward-word)
+    (looking-at "\\\w+></\\\w+>")))
+
+(defun yas-html-id-from-string (string)
+  (replace-regexp-in-string " " "_" (downcase string)))
+
+(defun yas-html-tidy ()
+  (interactive)
+  (let ((start (or (and mark-active
+                        (region-beginning))
+                   (point-min)))
+        (end (or (and mark-active
+                      (region-end))
+                 (point-max)))
+        (orig (point))
+        (orig-line (count-screen-lines (window-start) (line-beginning-position))))
+    (shell-command-on-region start end "tidy" (current-buffer) t (get-buffer-create "*tidy errors*") t)
+    (goto-char (min (point-max) orig))
+    (recenter (1- orig-line))))
+
+(defun yas-html-tag-description ()
+  (interactive)
+  (let* ((tag-at-point (sgml-beginning-of-tag))
+         (fragment (and tag-at-point
+                        (cdr (assoc (upcase tag-at-point) yas-html-tag-description-urls)))))
+    (if fragment
+        (browse-url (concat "http://www.w3.org/TR/html4/index/"
+                            fragment))
+      (if tag-at-point
+          (message "No documentation for " tag-at-point)
+        (message "Not on a HTML tag.")))))
+
+(defvar yas-html-tag-description-urls
+  '(("A"           . "../struct/links.html#edef-A")
+    ("ABBR"        . "../struct/text.html#edef-ABBR")
+    ("ACRONYM"     . "../struct/text.html#edef-ACRONYM")
+    ("ADDRESS"     . "../struct/global.html#edef-ADDRESS")
+    ("APPLET"      . "../struct/objects.html#edef-APPLET")
+    ("AREA"        . "../struct/objects.html#edef-AREA")
+    ("B"           . "../present/graphics.html#edef-B")
+    ("BASE"        . "../struct/links.html#edef-BASE")
+    ("BASEFONT"    . "../present/graphics.html#edef-BASEFONT")
+    ("BDO"         . "../struct/dirlang.html#edef-BDO")
+    ("BIG"         . "../present/graphics.html#edef-BIG")
+    ("BLOCKQUOTE"  . "../struct/text.html#edef-BLOCKQUOTE")
+    ("BODY"        . "../struct/global.html#edef-BODY")
+    ("BR"          . "../struct/text.html#edef-BR")
+    ("BUTTON"      . "../interact/forms.html#edef-BUTTON")
+    ("CAPTION"     . "../struct/tables.html#edef-CAPTION")
+    ("CENTER"      . "../present/graphics.html#edef-CENTER")
+    ("CITE"        . "../struct/text.html#edef-CITE")
+    ("CODE"        . "../struct/text.html#edef-CODE")
+    ("COL"         . "../struct/tables.html#edef-COL")
+    ("COLGROUP"    . "../struct/tables.html#edef-COLGROUP")
+    ("DD"          . "../struct/lists.html#edef-DD")
+    ("DEL"         . "../struct/text.html#edef-del")
+    ("DFN"         . "../struct/text.html#edef-DFN")
+    ("DIR"         . "../struct/lists.html#edef-DIR")
+    ("DIV"         . "../struct/global.html#edef-DIV")
+    ("DL"          . "../struct/lists.html#edef-DL")
+    ("DT"          . "../struct/lists.html#edef-DT")
+    ("EM"          . "../struct/text.html#edef-EM")
+    ("FIELDSET"    . "../interact/forms.html#edef-FIELDSET")
+    ("FONT"        . "../present/graphics.html#edef-FONT")
+    ("FORM"        . "../interact/forms.html#edef-FORM")
+    ("FRAME"       . "../present/frames.html#edef-FRAME")
+    ("FRAMESET"    . "../present/frames.html#edef-FRAMESET")
+    ("H1"          . "../struct/global.html#edef-H1")
+    ("H2"          . "../struct/global.html#edef-H2")
+    ("H3"          . "../struct/global.html#edef-H3")
+    ("H4"          . "../struct/global.html#edef-H4")
+    ("H5"          . "../struct/global.html#edef-H5")
+    ("H6"          . "../struct/global.html#edef-H6")
+    ("HEAD"        . "../struct/global.html#edef-HEAD")
+    ("HR"          . "../present/graphics.html#edef-HR")
+    ("HTML"        . "../struct/global.html#edef-HTML")
+    ("I"           . "../present/graphics.html#edef-I")
+    ("IFRAME"      . "../present/frames.html#edef-IFRAME")
+    ("IMG"         . "../struct/objects.html#edef-IMG")
+    ("INPUT"       . "../interact/forms.html#edef-INPUT")
+    ("INS"         . "../struct/text.html#edef-ins")
+    ("ISINDEX"     . "../interact/forms.html#edef-ISINDEX")
+    ("KBD"         . "../struct/text.html#edef-KBD")
+    ("LABEL"       . "../interact/forms.html#edef-LABEL")
+    ("LEGEND"      . "../interact/forms.html#edef-LEGEND")
+    ("LI"          . "../struct/lists.html#edef-LI")
+    ("LINK"        . "../struct/links.html#edef-LINK")
+    ("MAP"         . "../struct/objects.html#edef-MAP")
+    ("MENU"        . "../struct/lists.html#edef-MENU")
+    ("META"        . "../struct/global.html#edef-META")
+    ("NOFRAMES"    . "../present/frames.html#edef-NOFRAMES")
+    ("NOSCRIPT"    . "../interact/scripts.html#edef-NOSCRIPT")
+    ("OBJECT"      . "../struct/objects.html#edef-OBJECT")
+    ("OL"          . "../struct/lists.html#edef-OL")
+    ("OPTGROUP"    . "../interact/forms.html#edef-OPTGROUP")
+    ("OPTION"      . "../interact/forms.html#edef-OPTION")
+    ("P"           . "../struct/text.html#edef-P")
+    ("PARAM"       . "../struct/objects.html#edef-PARAM")
+    ("PRE"         . "../struct/text.html#edef-PRE")
+    ("Q"           . "../struct/text.html#edef-Q")
+    ("S"           . "../present/graphics.html#edef-S")
+    ("SAMP"        . "../struct/text.html#edef-SAMP")
+    ("SCRIPT"      . "../interact/scripts.html#edef-SCRIPT")
+    ("SELECT"      . "../interact/forms.html#edef-SELECT")
+    ("SMALL"       . "../present/graphics.html#edef-SMALL")
+    ("SPAN"        . "../struct/global.html#edef-SPAN")
+    ("STRIKE"      . "../present/graphics.html#edef-STRIKE")
+    ("STRONG"      . "../struct/text.html#edef-STRONG")
+    ("STYLE"       . "../present/styles.html#edef-STYLE")
+    ("SUB"         . "../struct/text.html#edef-SUB")
+    ("SUP"         . "../struct/text.html#edef-SUP")
+    ("TABLE"       . "../struct/tables.html#edef-TABLE")
+    ("TBODY"       . "../struct/tables.html#edef-TBODY")
+    ("TD"          . "../struct/tables.html#edef-TD")
+    ("TEXTAREA"    . "../interact/forms.html#edef-TEXTAREA")
+    ("TFOOT"       . "../struct/tables.html#edef-TFOOT")
+    ("TH"          . "../struct/tables.html#edef-TH")
+    ("THEAD"       . "../struct/tables.html#edef-THEAD")
+    ("TITLE"       . "../struct/global.html#edef-TITLE")
+    ("TR"          . "../struct/tables.html#edef-TR")
+    ("TT"          . "../present/graphics.html#edef-TT")
+    ("U"           . "../present/graphics.html#edef-U")
+    ("UL"          . "../struct/lists.html#edef-UL")
+    ("VAR"         . "../struct/text.html#edef-VAR")))
+
+;;
+;;
+;; Substitutions for: content
+;; # as in Snippets/Emphasize.yasnippet
+;; ${TM_SELECTED_TEXT/\A<em>(.*)<\/em>\z|.*/(?1:$1:<em>$0<\/em>)/m}                    =yyas> `(yas-html-toggle-wrap yas-selected-text "em")`
+;; ${TM_SELECTED_TEXT/\A<strong>(.*)<\/strong>\z|.*/(?1:$1:<strong>$0<\/strong>)/m}    =yyas> `(yas-html-toggle-wrap yas-selected-text "strong")`
+;; ${1/\s.*//}                                                                         =yyas> ${1:$(replace-regexp-in-string "[\s\t\n].*" "" yas-text)}
+;; ${1/[[:alpha:]]+|( )/(?1:_:\L$0)/g}                                                 =yyas> ${1:$(replace-regexp-in-string " " "_" (downcase yas-text))}
+;; ${TM_XHTML}                                                                         =yyas> `yas-html-xhtml-attr`
+
+
+;; # as in Commands/Preview in All Active Browsers.yasnippet
+;; 970EE6B4-A091-11D9-A5A2-000D93C8BE28                                                       =yyas> (browse-url-of-buffer)
+;; 637CEA2B-578C-429C-BB74-30E8D42BFA22                                                       =yyas> (yas-html-tag-description)
+;; 2ED44A32-C353-447F-BAE4-E3522DB6944D                                                       =yyas> (yas-html-insert-tag-pair-snippet)
+;; 991E7EBD-F3F5-469A-BA01-DC30E04AD472                                                       =yyas> (yas-html-wrap-each-line-in-openclose-tag)
+
+;; Substitutions for: binding
+;;
+;; # as in Snippets/Strong.yasnippet
+;; @b                                                                                         =yyas> s-b
+;;
+;; # as in Snippets/Emphasize.yasnippet
+;; ^@i                                                                                        =yyas>
+;; @i                                                                                         =yyas> s-i
+;;
+;; # as in Snippets/Wrap Selection In Tag.yasnippet
+;; ^W                                                                                         =yyas> C-c M-w
+;;
+;; # as in Commands/Insert Tag Pair.yasnippet
+;; ^<                                                                                         =yyas> C-<
+;;
+;; # as in Commands/Documentation for Tag.yasnippet
+;; ^h                                                                                         =yyas> C-c M-h
+;;
+;; # as in Commands/Wrap Each Selected Line in OpenClose Tag.yasnippet
+;; ^@W                                                                                        =yyas> C-c M-W
+;;
+;; # as in Snippets/XHTML &nbsp NonBreakingSpace.yasnippet
+;; ~                                                                                          =yyas> (yas-unknown)
+;;
+;; # as in Commands/Insert Entity.yasnippet
+;; @&                                                                                         =yyas> (yas-unknown)
+;;
+;; # as in Commands/Refresh All Active Browsers.yasnippet
+;; @r                                                                                         =yyas> (yas-unknown)
+;;
+;; # as in Commands/Persistent Include.yasnippet
+;; ^@i                                                                                        =yyas> (yas-unknown)
+;;
+;; # as in Commands/CodeCompletion HTML Tags.yasnippet
+;; ~\e                                                                                         =yyas> (yas-unknown)
+;;
+;; # as in Commands/Update Includes.yasnippet
+;; ^@u                                                                                        =yyas> (yas-unknown)
+;;
+;; # as in Macros/Delete whitespace between tags.yasnippet
+;; ^~                                                                                      =yyas> (yas-unknown)
+;;
+;; # as in Commands/Tidy.yasnippet
+;; ^H                                                                                         =yyas> (yas-unknown)
+;;
+;;
+;; --**--
+;; Automatically generated code, do not edit this part
+;;
+;; Translated menu
+;;
+(yas-define-menu 'html-mode
+                 '(;; Documentation for Tag
+                   (yas-item "637CEA2B-578C-429C-BB74-30E8D42BFA22")
+                   ;; Ignoring Validate Syntax (W3C)
+                   (yas-ignore-item "3F26240E-6E4A-11D9-B411-000D93589AF6")
+
+                   ;; Open Document in Running Browser(s)
+                   (yas-item "970EE6B4-A091-11D9-A5A2-000D93C8BE28")
+                   ;; Ignoring Refresh Running Browser(s)
+                   (yas-ignore-item "B8651C6E-A05E-11D9-86AC-000D93C8BE28")
+
+                   (yas-submenu "Entities"
+                                (;; Ignoring Convert Character / Selection to Entities
+                                 (yas-ignore-item "3DD8406C-A116-11D9-A5A2-000D93C8BE28")
+                                 ;; Ignoring Convert Character / Selection to Entities Excl. Tags
+                                 (yas-ignore-item "43C9E8AE-3E53-4B82-A1AF-56697BB3EF09")
+                                 ;; Ignoring Decode Entities in Line / Selection
+                                 (yas-ignore-item "C183920D-A126-11D9-A5A2-000D93C8BE28")
+
+                                 ;; Non-Breaking Space
+                                 (yas-item "73B40BAE-A295-11D9-87F7-000D93C8BE28")
+                                 ;; →
+                                 (yas-item "C70BB693-0954-4440-AEB4-F2ADD6D923F0")
+                                 ;; ←
+                                 (yas-item "C0418A4A-7E42-4D49-8F86-6E339296CB84")
+                                 ;; ⇤
+                                 (yas-item "7F102705-27D8-4029-BF61-2F042FB61E06")
+                                 ;; ⌅
+                                 (yas-item "7062316B-4236-4793-AD35-05E4A6577393")
+                                 ;; ⌃
+                                 (yas-item "B4987DA5-9C2F-4D2D-AC14-678115079205")
+                                 ;; ⌦
+                                 (yas-item "44E448B6-37CE-4BFE-8611-C5113593B74B")
+                                 ;; ↩
+                                 (yas-item "9B216475-D73D-4518-851F-CACD0066A909")
+                                 ;; ⇥
+                                 (yas-item "ADC78A82-40C2-4AAC-8968-93AF0ED98DF0")
+                                 ;; ⌫
+                                 (yas-item "38E50882-27AF-4246-A039-355C3E1A699E")
+                                 ;; ⌘
+                                 (yas-item "7214ACD1-93D9-4D3F-A428-8A7302E0A35E")
+                                 ;; ↓
+                                 (yas-item "35654B4E-2D76-4CD3-8FBB-2DA1F314BA19")
+                                 ;; →
+                                 (yas-item "AC15621A-8A16-40DD-A671-EA4C37637215")
+                                 ;; ↑
+                                 (yas-item "0E2F4A47-EADE-4A05-931E-FC874FA28FC3")
+                                 ;; ⇧
+                                 (yas-item "1B8D58B9-D9DB-484C-AACD-5D5DF5385308")
+                                 ;; ⎋
+                                 (yas-item "D7CC7C7C-CD01-4357-AF91-AEFFD914DF98")
+                                 ;; ⌥
+                                 (yas-item "980A8D39-CA8B-4EC2-9739-DC36A262F28E")
+                                 (yas-separator)
+                                 ;; Ignoring Insert Entity…
+                                 (yas-ignore-item "89E5CC0A-3EFF-4DEF-A299-2E9651DE6529")))
+                   (yas-submenu "URL Escapes"
+                                (;; Ignoring URL Escape Line / Selection
+                                 (yas-ignore-item "6B024865-6095-4CE3-8EDD-DC6F2230C2FF")
+                                 ;; Ignoring URL Unescape Line / Selection
+                                 (yas-ignore-item "2C4C9673-B166-432A-8938-75A5CA622481")))
+                   ;; Ignoring Encrypt Line / Selection (ROT 13)
+                   (yas-ignore-item "9B13543F-8356-443C-B6E7-D9259B604927")
+
+                   ;; Ignoring CodeCompletion HTML Attributes
+                   (yas-ignore-item "CBD82CF3-74E9-4E7A-B3F6-9348754EB5AA")
+                   ;; Insert Open/Close Tag (With Current Word)
+                   (yas-item "2ED44A32-C353-447F-BAE4-E3522DB6944D")
+                   ;; Ignoring Insert Close Tag
+                   (yas-ignore-item "0658019F-3635-462E-AAC2-74E4FE508A9B")
+                   (yas-submenu "Insert DocType"
+                                (;; HTML — 4.01 Strict
+                                 (yas-item "944F1410-188C-4D70-8340-CECAA56FC7F2")
+                                 ;; HTML — 4.01 Transitional
+                                 (yas-item "B2AAEE56-42D8-42C3-8F67-865473F50E8D")
+                                 (yas-separator)
+                                 ;; XHTML — 1.0 Frameset
+                                 (yas-item "9ED6ABBE-A802-11D9-BFC8-000D93C8BE28")
+                                 ;; XHTML — 1.0 Strict
+                                 (yas-item "C8B83564-A802-11D9-BFC8-000D93C8BE28")
+                                 ;; XHTML — 1.0 Transitional
+                                 (yas-item "7D8C2F74-A802-11D9-BFC8-000D93C8BE28")
+                                 ;; XHTML — 1.1
+                                 (yas-item "5CE8FC6E-A802-11D9-BFC8-000D93C8BE28")))
+                   (yas-submenu "Insert Tag"
+                                (;; Ignoring CodeCompletion HTML Tags
+                                 (yas-ignore-item "3463E85F-F500-49A0-8631-D78ED85F9D60")
+
+                                 ;; Base
+                                 (yas-item "4462A6B8-A08A-11D9-A5A2-000D93C8BE28")
+                                 ;; Body
+                                 (yas-item "4905D47B-A08B-11D9-A5A2-000D93C8BE28")
+                                 ;; Br
+                                 (yas-item "3E008E42-A5C9-11D9-9BCD-000D93C8BE28")
+                                 ;; Div
+                                 (yas-item "576036C0-A60E-11D9-ABD6-000D93C8BE28")
+                                 ;; Embed QT Movie
+                                 (yas-item "42F15753-9B6D-4DD8-984C-807B94363277")
+                                 ;; Fieldset
+                                 (yas-item "9BD2BE01-A854-4D55-B584-725D04C075C0")
+                                 ;; Form
+                                 (yas-item "232C2E8B-A08E-11D9-A5A2-000D93C8BE28")
+                                 ;; Head
+                                 (yas-item "9CF008C4-A086-11D9-A5A2-000D93C8BE28")
+                                 ;; Heading
+                                 (yas-item "65BA66DC-A07F-11D9-A5A2-000D93C8BE28")
+                                 ;; Input
+                                 (yas-item "44180979-A08E-11D9-A5A2-000D93C8BE28")
+                                 ;; Input with Label
+                                 (yas-item "D8DCCC81-749A-4E2A-B4BC-D109D5799CAA")
+                                 ;; Link
+                                 (yas-item "77BFD0C0-A08A-11D9-A5A2-000D93C8BE28")
+                                 ;; Mail Anchor
+                                 (yas-item "81DA4C74-A530-11D9-9BCD-000D93C8BE28")
+                                 ;; Meta
+                                 (yas-item "DA99AC44-A083-11D9-A5A2-000D93C8BE28")
+                                 ;; Option
+                                 (yas-item "5820372E-A093-4F38-B25C-B0CCC50A0FC4")
+                                 ;; Script
+                                 (yas-item "6592050A-A087-11D9-A5A2-000D93C8BE28")
+                                 ;; Script With External Source
+                                 (yas-item "7D676C4C-A087-11D9-A5A2-000D93C8BE28")
+                                 ;; Select Box
+                                 (yas-item "26023CFF-C73F-4EF5-9803-E4DBA2CBEADD")
+                                 ;; Style
+                                 (yas-item "3C518074-A088-11D9-A5A2-000D93C8BE28")
+                                 ;; Table
+                                 (yas-item "57176082-A12F-11D9-A5A2-000D93C8BE28")
+                                 ;; Text Area
+                                 (yas-item "AAC9D7B8-A12C-11D9-A5A2-000D93C8BE28")
+                                 ;; Title
+                                 (yas-item "B62ECABE-A086-11D9-A5A2-000D93C8BE28")))
+
+                   (yas-submenu "Includes"
+                                (;; Ignoring Add Persistent Include
+                                 (yas-ignore-item "0D814247-7A00-46EE-A2A4-45FBBF4B1181")
+                                 ;; Ignoring Update Document
+                                 (yas-ignore-item "4400BCE9-20E3-426E-B1D7-2C0BCA53BCF8")
+                                 ;; Ignoring Help: Persistent Includes
+                                 (yas-ignore-item "9AFDEB2C-D9F0-423E-8211-EBB089F51F0C")))
+                   (yas-submenu "Format"
+                                (;; Strong
+                                 (yas-item "4117D930-B6FA-4022-97E7-ECCAF4E70F63")
+                                 ;; Emphasize
+                                 (yas-item "EBB98620-3292-4621-BA38-D8A9A65D9551")))
+                   (yas-submenu "Conditional Comments"
+                                (;; IE Conditional Comment: Internet Explorer
+                                 (yas-item "0ED6DA73-F38F-4A65-B18F-3379D2BA9387")
+                                 ;; IE Conditional Comment: Internet Explorer 5.0 only
+                                 (yas-item "3A517A94-001E-464D-8184-1FE56D0D0D70")
+                                 ;; IE Conditional Comment: Internet Explorer 5.5 only
+                                 (yas-item "E3F8984E-7269-4981-9D30-967AB56A6ACE")
+                                 ;; IE Conditional Comment: Internet Explorer 5.x
+                                 (yas-item "F3512848-7889-45DA-993B-0547976C8E6D")
+                                 ;; IE Conditional Comment: Internet Explorer 6 and below
+                                 (yas-item "32BBB9AB-8732-4F91-A587-354941A27B69")
+                                 ;; IE Conditional Comment: Internet Explorer 6 only
+                                 (yas-item "48DF7485-52EA-49B3-88AF-3A41F933F325")
+                                 ;; IE Conditional Comment: Internet Explorer 7 and above
+                                 (yas-item "CBC24AF4-88E0-498B-BE50-934B9CF29EC7")
+                                 ;; IE Conditional Comment: NOT Internet Explorer
+                                 (yas-item "F00170EE-4A82-413F-A88B-85293E69A88B")))
+
+                   ;; Wrap Selection in Open/Close Tag
+                   (yas-item "BC8B8AE2-5F16-11D9-B9C3-000D93589AF6")
+                   ;; Wrap Each Selected Line in Open/Close Tag
+                   (yas-item "991E7EBD-F3F5-469A-BA01-DC30E04AD472")
+                   ;; Wrap in <?= … ?>
+                   (yas-item "912906A0-9A29-434B-AE98-E9DFDE6E48B4")
+                   (yas-separator)
+                   ;; Ignoring Strip HTML Tags from Document / Selection
+                   (yas-ignore-item "20D760B5-A127-11D9-A5A2-000D93C8BE28")
+                   ;; Ignoring Tidy
+                   (yas-ignore-item "45F92B81-6F0E-11D9-A1E4-000D9332809C"))
+                    '("7B7E945E-A112-11D9-A5A2-000D93C8BE28"
+                       "3C44EABE-8D6F-4B1B-AB91-F419FAD1A0AD"
+                       "9AFDEB2C-D9F0-423E-8211-EBB089F51F0C"
+                       "CBD82CF3-74E9-4E7A-B3F6-9348754EB5AA"
+                       "3463E85F-F500-49A0-8631-D78ED85F9D60"
+                       "9B13543F-8356-443C-B6E7-D9259B604927"
+                       "0D814247-7A00-46EE-A2A4-45FBBF4B1181"
+                       "4400BCE9-20E3-426E-B1D7-2C0BCA53BCF8"
+                       "6B024865-6095-4CE3-8EDD-DC6F2230C2FF"
+                       "3DD8406C-A116-11D9-A5A2-000D93C8BE28"
+                       "43C9E8AE-3E53-4B82-A1AF-56697BB3EF09"
+                       "C183920D-A126-11D9-A5A2-000D93C8BE28"
+                       "2C4C9673-B166-432A-8938-75A5CA622481"
+                       "0658019F-3635-462E-AAC2-74E4FE508A9B"
+                       "89E5CC0A-3EFF-4DEF-A299-2E9651DE6529"
+                       "B8651C6E-A05E-11D9-86AC-000D93C8BE28"
+                       "20D760B5-A127-11D9-A5A2-000D93C8BE28"
+                       "45F92B81-6F0E-11D9-A1E4-000D9332809C"
+                       "3F26240E-6E4A-11D9-B411-000D93589AF6"
+                       "B23D6E15-6B33-11D9-86C1-000D93589AF6"
+                       "C8B717C2-6B33-11D9-BB47-000D93589AF6"
+                       "CD6D2CC6-6B33-11D9-BDFD-000D93589AF6"
+                       "7B7E945E-A112-11D9-A5A2-000D93C8BE28"
+                       "04332FA8-8157-46C4-9854-8C190FFD96C6"
+                       "E6F19171-F664-4B4F-92DA-3E15E6CAD35C"
+                       "26068A55-4C84-409D-BA00-162B55AF6961"
+                       "EBEE6B51-29C7-4362-818F-A190CACD5296"
+                       "65D38039-6B0A-48E9-9E49-43832ECC4107"
+                       "CDE8EFD6-9DE2-4E8C-BB6A-52E8CCD2E977"))
+
+;; Unknown substitutions
+;;
+;; Substitutions for: content
+;;
+;; # as in Snippets/Emphasize.yasnippet
+;; `(yas-html-toggle-wrap yas-selected-text "em")`                                            =yyas> (yas-unknown)
+;;
+;; # as in Snippets/XHTML h1.yasnippet
+;; `yas-selected-text`                                                                        =yyas> (yas-unknown)
+;;
+;; # as in Snippets/IE Conditional Comment Internet Explorer 5_0 only.yasnippet
+;; `(or (yas-selected-text) "   IE Conditional Comment: Internet Explorer 5.0 only ")`        =yyas> (yas-unknown)
+;;
+;; # as in Snippets/IE Conditional Comment Internet Explorer 5_5 only.yasnippet
+;; `(or (yas-selected-text) "   IE Conditional Comment: Internet Explorer 5.5 only ")`        =yyas> (yas-unknown)
+;;
+;; # as in Snippets/IE Conditional Comment Internet Explorer 5_x.yasnippet
+;; `(or (yas-selected-text) "  IE Conditional Comment: Internet Explorer 5.x      ")`         =yyas> (yas-unknown)
+;;
+;; # as in Snippets/IE Conditional Comment Internet Explorer 6 and below.yasnippet
+;; `(or (yas-selected-text) " IE Conditional Comment: Internet Explorer 6 and below ")`       =yyas> (yas-unknown)
+;;
+;; # as in Snippets/IE Conditional Comment Internet Explorer 6 only.yasnippet
+;; `(or (yas-selected-text) "     IE Conditional Comment: Internet Explorer 6 only   ")`      =yyas> (yas-unknown)
+;;
+;; # as in Snippets/IE Conditional Comment Internet Explorer 7+.yasnippet
+;; `(or (yas-selected-text) " IE Conditional Comment: Internet Explorer 7 and above ")`       =yyas> (yas-unknown)
+;;
+;; # as in Snippets/IE Conditional Comment Internet Explorer.yasnippet
+;; `(or (yas-selected-text) "       IE Conditional Comment: Internet Explorer          ")`    =yyas> (yas-unknown)
+;;
+;; # as in Snippets/IE Conditional Comment NOT Internet Explorer.yasnippet
+;; `(or (yas-selected-text) "  IE Conditional Comment: NOT Internet Explorer      ")`         =yyas> (yas-unknown)
+;;
+;; # as in Snippets/XHTML meta.yasnippet
+;; `yas-html-xhtml-attr`                                                                      =yyas> (yas-unknown)
+;;
+;; # as in Snippets/Strong.yasnippet
+;; `(yas-html-toggle-wrap yas-selected-text "strong")`                                        =yyas> (yas-unknown)
+;;
+;; # as in Commands/About Persistent Includes.yasnippet
+;; 9AFDEB2C-D9F0-423E-8211-EBB089F51F0C                                                       =yyas> (yas-unknown)
+;;
+;; # as in Commands/CodeCompletion HTML Attributes.yasnippet
+;; CBD82CF3-74E9-4E7A-B3F6-9348754EB5AA                                                       =yyas> (yas-unknown)
+;;
+;; # as in Commands/CodeCompletion HTML Tags.yasnippet
+;; 3463E85F-F500-49A0-8631-D78ED85F9D60                                                       =yyas> (yas-unknown)
+;;
+;; # as in Commands/Encrypt Line Selection (ROT 13).yasnippet
+;; 9B13543F-8356-443C-B6E7-D9259B604927                                                       =yyas> (yas-unknown)
+;;
+;; # as in Commands/Persistent Include.yasnippet
+;; 0D814247-7A00-46EE-A2A4-45FBBF4B1181                                                       =yyas> (yas-unknown)
+;;
+;; # as in Commands/Update Includes.yasnippet
+;; 4400BCE9-20E3-426E-B1D7-2C0BCA53BCF8                                                       =yyas> (yas-unknown)
+;;
+;; # as in Commands/Convert Line Selection to URL Escapes.yasnippet
+;; 6B024865-6095-4CE3-8EDD-DC6F2230C2FF                                                       =yyas> (yas-unknown)
+;;
+;; # as in Commands/Convert to HTML Entities.yasnippet
+;; 3DD8406C-A116-11D9-A5A2-000D93C8BE28                                                       =yyas> (yas-unknown)
+;;
+;; # as in Commands/Convert to named entities excl tags.yasnippet
+;; 43C9E8AE-3E53-4B82-A1AF-56697BB3EF09                                                       =yyas> (yas-unknown)
+;;
+;; # as in Commands/Decode HTML Entities.yasnippet
+;; C183920D-A126-11D9-A5A2-000D93C8BE28                                                       =yyas> (yas-unknown)
+;;
+;; # as in Commands/Decode Numeric URL Escapes in Line Selection.yasnippet
+;; 2C4C9673-B166-432A-8938-75A5CA622481                                                       =yyas> (yas-unknown)
+;;
+;; # as in Commands/Insert Close Tag.yasnippet
+;; 0658019F-3635-462E-AAC2-74E4FE508A9B                                                       =yyas> (yas-unknown)
+;;
+;; # as in Commands/Insert Entity.yasnippet
+;; 89E5CC0A-3EFF-4DEF-A299-2E9651DE6529                                                       =yyas> (yas-unknown)
+;;
+;; # as in Commands/Refresh All Active Browsers.yasnippet
+;; B8651C6E-A05E-11D9-86AC-000D93C8BE28                                                       =yyas> (yas-unknown)
+;;
+;; # as in Commands/Strip HTML tags.yasnippet
+;; 20D760B5-A127-11D9-A5A2-000D93C8BE28                                                       =yyas> (yas-unknown)
+;;
+;; # as in Commands/Tidy.yasnippet
+;; 45F92B81-6F0E-11D9-A1E4-000D9332809C                                                       =yyas> (yas-unknown)
+;;
+;; # as in Commands/W3C validation.yasnippet
+;; 3F26240E-6E4A-11D9-B411-000D93589AF6                                                       =yyas> (yas-unknown)
+;;
+;; # as in DragCommands/Anchor Tag.yasnippet
+;; B23D6E15-6B33-11D9-86C1-000D93589AF6                                                       =yyas> (yas-unknown)
+;;
+;; # as in DragCommands/CSS Link.yasnippet
+;; C8B717C2-6B33-11D9-BB47-000D93589AF6                                                       =yyas> (yas-unknown)
+;;
+;; # as in DragCommands/Image Tag.yasnippet
+;; CD6D2CC6-6B33-11D9-BDFD-000D93589AF6                                                       =yyas> (yas-unknown)
+;;
+;; # as in Macros/Delete whitespace between tags.yasnippet
+;; 7B7E945E-A112-11D9-A5A2-000D93C8BE28                                                       =yyas> (yas-unknown)
+;;
+;; # as in Snippets/XHTML body.yasnippet
+;; ${TM_FILENAME/(.*)\..*/\L$1/}                                                              =yyas> (yas-unknown)
+;;
+;; # as in Snippets/XHTML form.yasnippet
+;; ${TM_FILENAME/(.*?)\..*/$1_submit/}                                                        =yyas> (yas-unknown)
+;;
+;; # as in Snippets/XHTML title.yasnippet
+;; ${TM_FILENAME/((.+)\..*)?/(?2:$2:Page Title)/}                                             =yyas> (yas-unknown)
+;;
+;; # as in Templates/HTML 4.0 Strict/info.yasnippet
+;; 04332FA8-8157-46C4-9854-8C190FFD96C6                                                       =yyas> (yas-unknown)
+;;
+;; # as in Templates/HTML 4.0 Transitional/info.yasnippet
+;; E6F19171-F664-4B4F-92DA-3E15E6CAD35C                                                       =yyas> (yas-unknown)
+;;
+;; # as in Templates/XHTML 1.0 Frameset/info.yasnippet
+;; 26068A55-4C84-409D-BA00-162B55AF6961                                                       =yyas> (yas-unknown)
+;;
+;; # as in Templates/XHTML 1.0 Strict/info.yasnippet
+;; EBEE6B51-29C7-4362-818F-A190CACD5296                                                       =yyas> (yas-unknown)
+;;
+;; # as in Templates/XHTML 1.0 Transitional/info.yasnippet
+;; 65D38039-6B0A-48E9-9E49-43832ECC4107                                                       =yyas> (yas-unknown)
+;;
+;; # as in Templates/XHTML 1.1/info.yasnippet
+;; CDE8EFD6-9DE2-4E8C-BB6A-52E8CCD2E977                                                       =yyas> (yas-unknown)
+;;
+;;
+
+;; Substitutions for: condition
+;;
+;; # as in Templates/XHTML 1.1/info.yasnippet
+;; text.html                                                                                  =yyas> (yas-unknown)
+;;
+;; # as in Commands/CodeCompletion HTML Attributes.yasnippet
+;; text.html punctuation.definition.tag -source, text.html meta.tag -entity.other.attribute-name -source  =yyas> (yas-unknown)
+;;
+;; # as in Commands/CodeCompletion HTML Tags.yasnippet
+;; text.html -entity.other.attribute-name -string.quoted, invalid.illegal.incomplete.html     =yyas> (yas-unknown)
+;;
+;; # as in Commands/Documentation for Tag.yasnippet
+;; text.html, text.html entity.name.tag                                                       =yyas> (yas-unknown)
+;;
+;; # as in Commands/Refresh All Active Browsers.yasnippet
+;; text.html, source.css                                                                      =yyas> (yas-unknown)
+;;
+;; # as in Snippets/Smart returnindent for tag pairs.yasnippet
+;; meta.scope.between-tag-pair                                                                =yyas> (yas-unknown)
+;;
+;; # as in Snippets/Wrap Selection In Tag.yasnippet
+;; text.html,                                                                                 =yyas> (yas-unknown)
+;;
+;; # as in Snippets/Wrap in =.yasnippet
+;; text.html string                                                                           =yyas> (yas-unknown)
+;;
+;; # as in Snippets/XHTML head.yasnippet
+;; text.html - text.html source                                                               =yyas> (yas-unknown)
+;;
+;; # as in Snippets/XHTML title.yasnippet
+;; text.html - text.blog                                                                      =yyas> (yas-unknown)
+;;
+;;
+
+;; Substitutions for: binding
+;;
+;; # as in Commands/CodeCompletion HTML Tags.yasnippet
+;; ~\e                                                                                         =yyas> (yas-unknown)
+;;
+;; # as in Commands/Insert Entity.yasnippet
+;; @&                                                                                         =yyas> (yas-unknown)
+;;
+;; # as in Commands/Persistent Include.yasnippet
+;;                                                                                            =yyas> (yas-unknown)
+;;
+;; # as in Commands/Update Includes.yasnippet
+;; ^@u                                                                                        =yyas> (yas-unknown)
+;;
+;; # as in Commands/Insert Close Tag.yasnippet
+;; ~@.                                                                                        =yyas> (yas-unknown)
+;;
+;; # as in Commands/Refresh All Active Browsers.yasnippet
+;; @r                                                                                         =yyas> (yas-unknown)
+;;
+;; # as in Commands/Tidy.yasnippet
+;; ^H                                                                                         =yyas> (yas-unknown)
+;;
+;; # as in Commands/W3C validation.yasnippet
+;; ^V                                                                                         =yyas> (yas-unknown)
+;;
+;; # as in Macros/Delete whitespace between tags.yasnippet
+;; ^~                                                                                        =yyas> (yas-unknown)
+;;
+;; # as in Snippets/Smart returnindent for tag pairs.yasnippet
+;; \r                                                                                          =yyas> (yas-unknown)
+;;
+;; # as in Snippets/XHTML &nbsp NonBreakingSpace.yasnippet
+;; ~                                                                                          =yyas> (yas-unknown)
+;;
+;; # as in Snippets/XHTML br.yasnippet
+;; ^\r                                                                                         =yyas> (yas-unknown)
+;;
+;;
+
+;; .yas-setup.el for html-mode ends here
diff --git a/packages/yasnippet/extras/imported/objc-mode/.yas-setup.el b/packages/yasnippet/extras/imported/objc-mode/.yas-setup.el
new file mode 100644 (file)
index 0000000..34b1a3b
--- /dev/null
@@ -0,0 +1,107 @@
+;;; .yas-setup.el --- Setup for objc-mode
+
+;; Copyright (C) 2013  Free Software Foundation, Inc.
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(defun yas-objc-docset-query (query)
+  
+  )
+(defvar yas-objc-method-names (make-vector 1023 0))
+(defvar yas-objc-class-names (make-vector 1023 0))
+
+(defvar yas-objc-languages (list))
+(defvar yas-objc-defkinds (list))
+
+
+(defun yas-objc-extract-super-list ()
+  (interactive)
+  (setq yas-objc-method-names (make-vector 1023 0)
+        yas-objc-class-names (make-vector 1023 0)
+        yas-objc-languages (list)
+        yas-objc-defkinds (list))
+  (with-temp-buffer
+    (shell-command
+     "/Developer/usr/bin/docsetutil dump -skip-text /Developer/Documentation/DocSets/com.apple.adc.documentation.AppleSnowLeopard.CoreReference.docset/"
+     (current-buffer))
+    (goto-char (point-min))
+    (search-forward-regexp "API index contains .* tokens")
+    (while (search-forward-regexp "^\\([^/]*\\)/\\([^/]*\\)/\\([^/]*\\)/\\([^/]*\\)$" nil 'noerror)
+      (intern (match-string 3) yas-objc-class-names)
+      (intern (match-string 4) yas-objc-method-names)
+      (add-to-list 'yas-objc-languages (match-string 1))
+      (add-to-list 'yas-objc-defkinds (match-string 2)))))
+
+;; (put (intern-soft (setq chosen (completing-read "Method: " yas-objc-method-names)) yas-objc-method-names)
+;;      'someshit
+;;      'someday)
+
+;; (completing-read "Class: " yas-objc-class-names)
+
+;; (get (intern-soft (setq chosen (completing-read "hey: " yas-objc-method-names)) yas-objc-method-names)
+;;      'someshit)
+
+(defun yas-objc-current-method-signature ()
+  (let ((orig-point (point))
+        (start-point nil)
+        sig
+        orig-ppss
+        ppss)
+    (save-excursion
+      (condition-case nil
+          (while (not (eq (point) (point-min))) (backward-sexp))
+        (error nil))
+      (when (eq (preceding-char) ?\[)
+        (setq orig-ppss (syntax-ppss))
+        (forward-sexp)
+        (skip-chars-forward " \t\n")
+        (setq ppss (syntax-ppss))
+        (while (and (>= (car ppss) (car orig-ppss))
+                    (search-forward-regexp "[[:alpha:]]+:" nil 'noerror))
+          (setq ppss (syntax-ppss))
+          (when (eq (car ppss) (car orig-ppss))
+            (setq sig
+                  (concat (or sig "") (match-string-no-properties 0)))))
+          sig))))
+
+(defun yas-objc-current-method-signature ()
+  (let ((orig-point (point))
+        (start-point nil)
+        sig
+        orig-ppss
+        ppss)
+    (save-excursion
+      (condition-case nil
+          (while (not (eq (point) (point-max))) (backward-sexp))
+        (error ))
+      (when (eq (preceding-char) ?\[)
+        (setq orig-ppss (syntax-ppss))
+        (forward-sexp)
+        (skip-chars-forward " \t\n")
+        (setq ppss (syntax-ppss))
+        (condition-case nil
+            (while (and (>= (car ppss) (car orig-ppss))
+                        (search-forward-regexp "[[:alpha:]]+:" orig-point 'noerror))
+              (setq ppss (syntax-ppss))
+              (when (eq (car ppss) (car orig-ppss))
+                (setq sig
+                      (concat (or sig "") (match-string-no-properties 0))))
+              (forward-sexp))
+          (error nil))
+        (save-excursion
+          (backward-word)
+          (concat sig (buffer-substring-no-properties (point) orig-point)))
+        sig))))
diff --git a/packages/yasnippet/extras/imported/objc-mode/Support/.yas-skip b/packages/yasnippet/extras/imported/objc-mode/Support/.yas-skip
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/packages/yasnippet/extras/imported/objc-mode/Support/alldefs.txt b/packages/yasnippet/extras/imported/objc-mode/Support/alldefs.txt
new file mode 100644 (file)
index 0000000..6eda973
--- /dev/null
@@ -0,0 +1,59477 @@
+API index contains 59476 tokens
+-/writerid/-/200
+-/writerid/-/201
+-/writerid/-/202
+-/writerid/-/203
+-/writerid/-/204
+-/writerid/-/205
+-/writerid/-/206
+-/writerid/-/207
+-/writerid/-/208
+-/writerid/-/209
+-/writerid/-/210
+-/writerid/-/211
+-/writerid/-/212
+-/writerid/-/213
+-/writerid/-/215
+-/writerid/-/220
+-/writerid/-/221
+-/writerid/-/222
+-/writerid/-/223
+-/writerid/-/224
+-/writerid/-/225
+-/writerid/-/230
+-/writerid/-/231
+-/writerid/-/232
+C/tag/-/__allocator
+C/tdef/-/__attribute__
+C/func/-/__declspec
+C/tdef/-/__double_complex_t
+C/tdef/-/__enable_if
+C/tdef/-/__float_complex_t
+C/func/-/__num_bitmaps
+C/func/-/__num_blocks
+C/data/-/__threads_enabled
+C/func/-/__xmlMalloc
+C/tdef/-/_ABPropertyType
+C/tdef/-/_Alloc_traits
+C/macro/-/_BALLOC_ALIGN_BYTES
+C/tdef/-/_CAConstraintAttribute
+C/macro/-/_DNS_SD_H
+C/func/-/_dyld_bind_fully_image_containing_address
+C/func/-/_dyld_bind_objc_module
+C/func/-/_dyld_func_lookup
+C/func/-/_dyld_get_image_header
+C/func/-/_dyld_get_image_name
+C/func/-/_dyld_get_image_vmaddr_slide
+C/func/-/_dyld_get_objc_module_sect_for_module
+C/func/-/_dyld_image_containing_address
+C/func/-/_dyld_image_count
+C/func/-/_dyld_launched_prebound
+C/func/-/_dyld_lookup_and_bind
+C/func/-/_dyld_lookup_and_bind_fully
+C/func/-/_dyld_lookup_and_bind_objc
+C/func/-/_dyld_lookup_and_bind_with_hint
+C/func/-/_dyld_moninit
+C/func/-/_dyld_present
+C/func/-/_dyld_register_func_for_add_image
+C/func/-/_dyld_register_func_for_link_module
+C/func/-/_dyld_register_func_for_remove_image
+C++/data/IOBlockStorageDriver/_ejectable
+C/func/-/_exit
+C/func/-/_Exit
+C/tag/-/_Hidden_type
+C/macro/-/_KAUTH_CRED_T
+C++/data/IOBlockStorageDriver/_lockable
+C/func/-/_longjmp
+C++/instm/IOWorkLoop/_maintRequest
+C++/data/IOBlockStorageDriver/_maxBlockNumber
+C++/data/IOBlockStorageDriver/_maxReadByteTransfer
+C++/data/IOBlockStorageDriver/_maxWriteByteTransfer
+C++/data/IOBlockStorageDriver/_mediaBlockSize
+C++/data/IOBlockStorageDriver/_mediaObject
+C++/data/IOBlockStorageDriver/_mediaPresent
+C++/data/IOBlockStorageDriver/_mediaStateLock
+C++/data/IOBlockStorageDriver/_mediaType
+C/func/-/_MPIsFullyInitialized
+C/func/-/_nc_free_and_exit
+C/func/-/_nc_freeall
+C/func/-/_nc_tracebits
+C/tag/-/_NSByteOrder
+C/func/-/_NSGetExecutablePath
+C/tdef/-/_ODAttributeType
+C/tdef/-/_ODAuthenticationType
+C/tdef/-/_ODRecordType
+C++/tdef/OSCollection/_OSCollectionFlags
+C/func/-/_OSReadInt16
+C/func/-/_OSReadInt32
+C/func/-/_OSReadInt64
+C/func/-/_OSWriteInt16
+C/func/-/_OSWriteInt32
+C/func/-/_OSWriteInt64
+C++/data/IOBlockStorageDriver/_pollIsExpensive
+C++/data/IOBlockStorageDriver/_pollIsRequired
+C/func/-/_rand48
+C++/data/IOBlockStorageDriver/_removable
+C/data/AudioHardwarePlugInInterface/_reserved
+C++/data/IOEthernetInterface/_reserved
+C++/data/IONetworkController/_reserved
+C++/data/IONetworkMedium/_reserved
+C++/data/IOEthernetController/_reserved
+C/data/-/_reserved
+C++/data/IOOutputQueue/_reserved
+C++/data/IOKernelDebugger/_reserved
+C++/data/IOHIDInterface/_reserved
+C++/data/IOHIDDevice/_reserved
+C++/data/IONetworkData/_reserved
+C++/data/IOSharedDataQueue/_reserved
+C++/data/IOPacketQueue/_reserved
+C/tdef/-/_Safe_bool
+C/func/-/_setjmp
+C/func/-/_Sp_counted_base_impl
+C/tag/-/_TidyBuffer
+C/func/-/_traceattr
+C/func/-/_traceattr2
+C/func/-/_tracechar
+C/func/-/_tracechtype
+C/func/-/_tracechtype2
+C/func/-/_tracedump
+C/func/-/_tracef
+C/func/-/_tracemouse
+C++/data/IOBlockStorageDriver/_writeProtected
+C/tag/-/_xmlParserCtxt
+C/tag/-/_xmlSAXLocator
+C/tag/-/_xmlSchema
+C/tag/-/_xmlSchemaFacet
+C/tag/-/_xmlSchemaType
+C/tag/-/_xmlXPathContext
+C/tag/-/_xmlXPathParserContext
+C/tag/-/_xsltElemPreComp
+JavaScript/data/SVGMatrix/a
+JavaScript/data/WebKitCSSMatrix/a
+C/func/-/a64l
+C/tdef/-/ABActionCallbacks
+C/tdef/-/ABActionCopyTitleCallback
+Objective-C/cat/-/ABActionDelegate
+C/tdef/-/ABActionEnabledCallback
+C/tdef/-/ABActionGetPropertyCallback
+C/tdef/-/ABActionSelectedCallback
+C/func/-/ABAddPropertiesAndTypes
+C/func/-/ABAddRecord
+Objective-C/cl/-/ABAddressBook
+C/tdef/-/ABAddressBookRef
+C/func/-/ABBeginLoadingImageDataForClient
+JavaScript/data/HTMLTableCellElement/abbr
+Objective-C/instm/NSTimeZone/abbreviation
+Objective-C/clm/NSTimeZone/abbreviationDictionary
+Objective-C/instm/NSTimeZone/abbreviationForDate:
+C/func/-/ABCancelLoadingImageDataForTag
+C/func/-/ABCopyArrayOfAllGroups
+C/func/-/ABCopyArrayOfAllPeople
+C/func/-/ABCopyArrayOfMatchingRecords
+C/func/-/ABCopyArrayOfPropertiesForRecordType
+C/func/-/ABCopyDefaultCountryCode
+C/func/-/ABCopyLocalizedPropertyOrLabel
+C/func/-/ABCopyRecordForUniqueId
+C/func/-/ABCopyRecordTypeFromUniqueId
+C/func/-/ABCreateFormattedAddressFromDictionary
+C/func/-/ABGetMe
+C/func/-/ABGetSharedAddressBook
+Objective-C/cl/-/ABGroup
+C/func/-/ABGroupAddGroup
+C/func/-/ABGroupAddMember
+C/func/-/ABGroupCopyArrayOfAllMembers
+C/func/-/ABGroupCopyArrayOfAllSubgroups
+C/func/-/ABGroupCopyDistributionIdentifier
+C/func/-/ABGroupCopyParentGroups
+C/func/-/ABGroupCreate
+C/func/-/ABGroupCreateSearchElement
+C/tdef/-/ABGroupRef
+C/func/-/ABGroupRemoveGroup
+C/func/-/ABGroupRemoveMember
+C/func/-/ABGroupSetDistributionIdentifier
+C/func/-/ABHasUnsavedChanges
+Objective-C/cl/-/ABIdentityPicker
+Objective-C/intf/-/ABImageClient
+C/tdef/-/ABImageClientCallback
+C/func/-/ABLocalizedPropertyOrLabel
+C/econst/-/ABMultipleValueSelection
+Objective-C/cl/-/ABMultiValue
+C/func/-/ABMultiValueAdd
+C/func/-/ABMultiValueCopyIdentifierAtIndex
+C/func/-/ABMultiValueCopyLabelAtIndex
+C/func/-/ABMultiValueCopyPrimaryIdentifier
+C/func/-/ABMultiValueCopyValueAtIndex
+C/func/-/ABMultiValueCount
+C/func/-/ABMultiValueCreate
+C/func/-/ABMultiValueCreateCopy
+C/func/-/ABMultiValueCreateMutable
+C/func/-/ABMultiValueCreateMutableCopy
+C/func/-/ABMultiValueIndexForIdentifier
+C/func/-/ABMultiValueInsert
+C/func/-/ABMultiValuePropertyType
+C/tdef/-/ABMultiValueRef
+C/func/-/ABMultiValueRemove
+C/func/-/ABMultiValueReplaceLabel
+C/func/-/ABMultiValueReplaceValue
+C/func/-/ABMultiValueSetPrimaryIdentifier
+Objective-C/cl/-/ABMutableMultiValue
+C/tdef/-/ABMutableMultiValueRef
+C/econst/-/ABNoValueSelection
+Objective-C/instm/DRBurn/abort
+C/func/-/abort
+C++/instm/IOUSBPipe/Abort
+JavaScript/instm/IDBRequest/abort
+JavaScript/instm/FileReader/abort
+JavaScript/instm/XMLHttpRequest/abort
+JavaScript/clconst/DOMCoreException/ABORT_ERR
+JavaScript/clconst/FileError/ABORT_ERR
+JavaScript/clconst/XMLHttpRequestException/ABORT_ERR
+C++/instm/IOSCSIProtocolInterface/AbortCommand
+Objective-C/instm/NSControl/abortEditing
+Objective-C/instm/NSApplication/abortModal
+Objective-C/instm/NSXMLParser/abortParsing
+C++/instm/IOUSBController/AbortPipe
+C++/instm/IOFireWireSerialBusProtocolTransport/AbortSCSICommand
+C++/instm/IOSCSIProtocolInterface/AbortTask
+C++/instm/IOSCSIProtocolInterface/AbortTaskSet
+C/data/-/ABPeoplePickerDisplayedPropertyDidChangeNotification
+C/data/-/ABPeoplePickerGroupSelectionDidChangeNotification
+C/data/-/ABPeoplePickerNameSelectionDidChangeNotification
+C/tdef/-/ABPeoplePickerSelectionBehavior
+C/data/-/ABPeoplePickerValueSelectionDidChangeNotification
+Objective-C/cl/-/ABPeoplePickerView
+Objective-C/cl/-/ABPerson
+C/func/-/ABPersonCopyImageData
+C/func/-/ABPersonCopyParentGroups
+C/func/-/ABPersonCopyVCardRepresentation
+C/func/-/ABPersonCreate
+C/func/-/ABPersonCreateSearchElement
+C/func/-/ABPersonCreateWithVCardRepresentation
+C/tdef/-/ABPersonRef
+C/func/-/ABPersonSetImageData
+C/func/-/ABPickerAddProperty
+C/tdef/-/ABPickerAttributes
+C/func/-/ABPickerChangeAttributes
+C/func/-/ABPickerClearSearchField
+C/func/-/ABPickerCopyColumnTitle
+C/func/-/ABPickerCopyDisplayedProperty
+C/func/-/ABPickerCopyProperties
+C/func/-/ABPickerCopySelectedGroups
+C/func/-/ABPickerCopySelectedIdentifiers
+C/func/-/ABPickerCopySelectedRecords
+C/func/-/ABPickerCopySelectedValues
+C/func/-/ABPickerCreate
+C/func/-/ABPickerDeselectAll
+C/func/-/ABPickerDeselectGroup
+C/func/-/ABPickerDeselectIdentifier
+C/func/-/ABPickerDeselectRecord
+C/func/-/ABPickerEditInAddressBook
+C/func/-/ABPickerGetAttributes
+C/func/-/ABPickerGetDelegate
+C/func/-/ABPickerGetFrame
+C/func/-/ABPickerIsVisible
+C/tdef/-/ABPickerRef
+C/func/-/ABPickerRemoveProperty
+C/func/-/ABPickerSelectGroup
+C/func/-/ABPickerSelectIdentifier
+C/func/-/ABPickerSelectInAddressBook
+C/func/-/ABPickerSelectRecord
+C/func/-/ABPickerSetColumnTitle
+C/func/-/ABPickerSetDelegate
+C/func/-/ABPickerSetDisplayedProperty
+C/func/-/ABPickerSetFrame
+C/func/-/ABPickerSetVisibility
+C/tdef/-/ABPropertyType
+Objective-C/cl/-/ABRecord
+C/func/-/ABRecordCopyRecordType
+C/func/-/ABRecordCopyUniqueId
+C/func/-/ABRecordCopyValue
+C/func/-/ABRecordCreateCopy
+C/func/-/ABRecordIsReadOnly
+C/tdef/-/ABRecordRef
+C/func/-/ABRecordRemoveValue
+C/func/-/ABRecordSetValue
+C/func/-/ABRemoveProperties
+C/func/-/ABRemoveRecord
+C/func/-/abs
+C/func/-/ABSave
+C/tdef/-/ABSearchComparison
+C/tdef/-/ABSearchConjunction
+Objective-C/cl/-/ABSearchElement
+C/func/-/ABSearchElementCreateWithConjunction
+C/func/-/ABSearchElementMatchesRecord
+C/tdef/-/ABSearchElementRef
+C/func/-/ABSetMe
+C/econst/-/ABSingleValueSelection
+Objective-C/instm/NSWorkspace/absolutePathForAppBundleWithIdentifier:
+Objective-C/instm/NSURL/absoluteString
+Objective-C/instm/CalAlarm/absoluteTrigger
+Objective-C/instp/CalAlarm/absoluteTrigger
+Objective-C/instm/NSURL/absoluteURL
+Objective-C/instm/NSEvent/absoluteX
+Objective-C/instm/NSEvent/absoluteY
+Objective-C/instm/NSEvent/absoluteZ
+C++/data/IOTimerEventSource/abstime
+JavaScript/cl/-/AbstractView
+JavaScript/cl/-/AbstractWorker
+C/func/-/ABTypeOfProperty
+C/func/-/accept
+JavaScript/data/HTMLInputElement/accept
+Objective-C/instm/NSTextView/acceptableDragTypes
+JavaScript/data/HTMLFormElement/acceptCharset
+Objective-C/instm/NSFileHandle/acceptConnectionInBackgroundAndNotify
+Objective-C/instm/NSFileHandle/acceptConnectionInBackgroundAndNotifyForModes:
+Objective-C/instm/NSRunLoop/acceptInputForMode:beforeDate:
+C++/instm/IOBlockStorageDriver/acceptNewMedia
+JavaScript/instm/NodeFilter/acceptNode
+Objective-C/instm/NSBrowser/acceptsArrowKeys
+Objective-C/instm/NSPrinter/acceptsBinary
+Objective-C/instm/NSSlider/acceptsFirstMouse:
+Objective-C/instm/NSMatrix/acceptsFirstMouse:
+Objective-C/instm/NSView/acceptsFirstMouse:
+Objective-C/instm/NSTextField/acceptsFirstResponder
+Objective-C/instm/NSResponder/acceptsFirstResponder
+Objective-C/instm/NSCell/acceptsFirstResponder
+Objective-C/instm/NSTextInputContext/acceptsGlyphInfo
+Objective-C/instp/NSTextInputContext/acceptsGlyphInfo
+Objective-C/instm/NSTextView/acceptsGlyphInfo
+Objective-C/instm/NSWindow/acceptsMouseMovedEvents
+Objective-C/intfm/QLPreviewPanelController/acceptsPreviewPanelControl:
+Objective-C/instm/NSView/acceptsTouchEvents
+C/func/-/access
+Objective-C/instm/NSObject/accessibilityActionDescription:
+Objective-C/instm/NSObject/accessibilityActionNames
+Objective-C/instm/NSObject/accessibilityArrayAttributeCount:
+Objective-C/instm/NSObject/accessibilityArrayAttributeValues:index:maxCount:
+Objective-C/instm/NSObject/accessibilityAttributeNames
+Objective-C/instm/NSObject/accessibilityAttributeValue:
+Objective-C/instm/NSObject/accessibilityAttributeValue:forParameter:
+Objective-C/instm/NSImage/accessibilityDescription
+Objective-C/instm/NSObject/accessibilityFocusedUIElement
+Objective-C/instm/NSObject/accessibilityHitTest:
+Objective-C/instm/NSObject/accessibilityIndexOfChild:
+Objective-C/instm/NSObject/accessibilityIsAttributeSettable:
+Objective-C/instm/NSObject/accessibilityIsIgnored
+Objective-C/instm/NSObject/accessibilityParameterizedAttributeNames
+Objective-C/instm/NSObject/accessibilityPerformAction:
+Objective-C/instm/NSObject/accessibilitySetOverrideValue:forAttribute:
+Objective-C/instm/NSObject/accessibilitySetValue:forAttribute:
+Objective-C/clm/NSObject/accessInstanceVariablesDirectly
+JavaScript/data/HTMLLabelElement/accessKey
+JavaScript/data/HTMLLegendElement/accessKey
+JavaScript/data/HTMLInputElement/accessKey
+JavaScript/data/HTMLTextAreaElement/accessKey
+JavaScript/data/HTMLButtonElement/accessKey
+JavaScript/data/HTMLAreaElement/accessKey
+JavaScript/data/HTMLAnchorElement/accessKey
+Objective-C/instm/NSPageLayout/accessoryControllers
+Objective-C/instm/NSPrintPanel/accessoryControllers
+Objective-C/instm/NSRulerView/accessoryView
+Objective-C/instm/NSPageLayout/accessoryView
+Objective-C/instm/NSColorPanel/accessoryView
+Objective-C/instm/NSPrintOperation/accessoryView
+Objective-C/instm/NSSavePanel/accessoryView
+Objective-C/instm/NSAlert/accessoryView
+Objective-C/instm/NSSpellChecker/accessoryView
+Objective-C/instm/NSPrintPanel/accessoryView
+Objective-C/instm/NSFontPanel/accessoryView
+Objective-C/instp/ABPeoplePickerView/accessoryView
+Objective-C/instm/ABPeoplePickerView/accessoryView
+C/tdef/-/AccessParam
+C/func/-/acct
+JavaScript/data/Coordinates/accuracy
+C++/instm/IOService/acknowledgePowerChange
+C++/instm/IOService/acknowledgeSetPowerState
+C/func/-/acl
+C/func/-/acl_add_flag_np
+C/func/-/acl_add_perm
+C/func/-/acl_clear_flags_np
+C/func/-/acl_clear_perms
+C/func/-/acl_copy_entry
+C/func/-/acl_create_entry
+C/func/-/acl_create_entry_np
+C/func/-/acl_delete_entry
+C/func/-/acl_delete_flag_np
+C/func/-/acl_delete_perm
+C/func/-/acl_dup
+C/func/-/acl_free
+C/func/-/acl_from_text
+C/func/-/acl_get
+C/func/-/acl_get_entry
+C/func/-/acl_get_fd
+C/func/-/acl_get_fd_np
+C/func/-/acl_get_file
+C/func/-/acl_get_flagset_np
+C/func/-/acl_get_link_np
+C/func/-/acl_get_perm_np
+C/func/-/acl_get_permset
+C/func/-/acl_get_qualifier
+C/func/-/acl_get_tag_type
+C/func/-/acl_init
+C/func/-/acl_set
+C/func/-/acl_set_fd
+C/func/-/acl_set_fd_np
+C/func/-/acl_set_file
+C/func/-/acl_set_flagset_np
+C/func/-/acl_set_link_np
+C/func/-/acl_set_permset
+C/func/-/acl_set_qualifier
+C/func/-/acl_set_tag_type
+C/func/-/acl_to_text
+C/func/-/acl_valid
+C/func/-/acl_valid_fd_np
+C/func/-/acl_valid_file_np
+C/func/-/acl_valid_link_np
+C/func/-/acos
+C/func/-/acosf
+C/func/-/acosh
+C/func/-/acoshf
+C/func/-/acoshl
+C/func/-/acosl
+C++/instm/IOUSBController/AcquireDeviceZero
+Objective-C/instm/DRDevice/acquireExclusiveAccess
+Objective-C/instp/NSPointerFunctions/acquireFunction
+Objective-C/instm/NSPointerFunctions/acquireFunction
+Objective-C/instm/DRDevice/acquireMediaReservation
+Objective-C/instm/NSToolbarItem/action
+Objective-C/intfm/NSValidatedUserInterfaceItem/action
+Objective-C/instm/NSActionCell/action
+Objective-C/instm/NSStatusItem/action
+Objective-C/instm/NSFontManager/action
+Objective-C/instm/PDFOutline/action
+Objective-C/instm/CalAlarm/action
+Objective-C/instp/CalAlarm/action
+Objective-C/instm/IMAVControl/action
+Objective-C/instm/NSMenuItem/action
+Objective-C/instm/NSControl/action
+Objective-C/instm/XGActionMonitor/action
+C++/tdef/IONetworkController/Action
+C++/tdef/IONetworkData/Action
+C++/data/IOEventSource/action
+C++/tdef/IOEventSource/Action
+C++/tdef/IOCommandGate/Action
+C++/tdef/IOInterruptEventSource/Action
+C++/tdef/IORegistryEntry/Action
+C++/tdef/IOTimerEventSource/Action
+C++/tdef/IOWorkLoop/Action
+Objective-C/instm/NSCell/action
+JavaScript/data/HTMLFormElement/action
+Objective-C/instm/XGActionMonitor/actionDidFail
+Objective-C/instm/XGActionMonitor/actionDidSucceed
+Objective-C/instm/NSTypesetter/actionForControlCharacterAtIndex:
+Objective-C/instm/CALayer/actionForKey:
+Objective-C/instm/NSObject/actionForLayer:forKey:
+Objective-C/instm/XGResource/actionMonitors
+Objective-C/clm/XGActionMonitor/actionMonitorWithResource:action:
+Objective-C/clm/XGActionMonitor/actionMonitorWithResource:action:parameters:
+Objective-C/instm/NSObject/actionProperty
+Objective-C/instm/AMWorkflow/actions
+Objective-C/instp/CALayer/actions
+Objective-C/instm/CALayer/actions
+C/tdef/-/ActionsProc
+C/tdef/-/ActionsUPP
+Objective-C/instm/SBApplication/activate
+Objective-C/instm/NSTextInputContext/activate
+C++/instm/IOFWAddressSpace/activate
+Objective-C/instm/NSColorWell/activate:
+C++/instm/IOAudioDevice/activateAudioEngine
+JavaScript/instm/InspectorBackend/activateBreakpoints
+Objective-C/instm/NSApplication/activateContextHelpMode:
+Objective-C/instm/AMAction/activated
+Objective-C/instm/NSWorkspace/activateFileViewerSelectingURLs:
+Objective-C/instm/NSApplication/activateIgnoringOtherApps:
+Objective-C/intfm/IMKStateSetting/activateServer:
+Objective-C/instm/NSRunningApplication/activateWithOptions:
+Objective-C/instp/NSRunningApplication/activationPolicy
+Objective-C/instm/NSRunningApplication/activationPolicy
+Objective-C/instm/NSApplication/activationPolicy
+Objective-C/instp/NSRunningApplication/active
+JavaScript/clconst/WebGLRenderingContext/ACTIVE_ATTRIBUTE_MAX_LENGTH
+JavaScript/clconst/WebGLRenderingContext/ACTIVE_ATTRIBUTES
+JavaScript/clconst/WebGLRenderingContext/ACTIVE_TEXTURE
+JavaScript/clconst/WebGLRenderingContext/ACTIVE_UNIFORM_MAX_LENGTH
+JavaScript/clconst/WebGLRenderingContext/ACTIVE_UNIFORMS
+Objective-C/instm/NSWorkspace/activeApplication
+Objective-C/instm/XGJob/activeCPUPower
+JavaScript/data/HTMLDocument/activeElement
+Objective-C/instm/NSProcessInfo/activeProcessorCount
+JavaScript/instm/WebGLRenderingContext/activeTexture
+C++/instm/IOService/activityTickle
+JavaScript/instm/DataGridColumnList/add
+JavaScript/instm/HTMLOptionsCollection/add
+JavaScript/instm/HTMLSelectElement/add
+Objective-C/instm/NSTreeController/add:
+Objective-C/instm/NSObjectController/add:
+Objective-C/instm/NSArrayController/add:
+Objective-C/instm/QTMovieView/add:
+C/func/-/add_mibdir
+C/func/-/add_module_replacement
+C/func/-/add_wch
+C/func/-/add_wchnstr
+C/func/-/add_wchstr
+Objective-C/instm/NSPageLayout/addAccessoryController:
+Objective-C/instm/NSPrintPanel/addAccessoryController:
+Objective-C/instm/AMWorkflow/addAction:
+Objective-C/instm/CalCalendarItem/addAlarm:
+Objective-C/instm/CalCalendarItem/addAlarms:
+Objective-C/instm/IOBluetoothServiceBrowserController/addAllowedUUID:
+Objective-C/instm/IOBluetoothDeviceSelectorController/addAllowedUUID:
+Objective-C/instm/IOBluetoothPairingController/addAllowedUUID:
+Objective-C/instm/IOBluetoothDeviceSelectorController/addAllowedUUIDArray:
+Objective-C/instm/IOBluetoothPairingController/addAllowedUUIDArray:
+Objective-C/instm/IOBluetoothServiceBrowserController/addAllowedUUIDArray:
+Objective-C/intfm/FxParameterCreationAPI/addAngleSliderWithName:parmId:defaultValue:parameterMin:parameterMax:parmFlags:
+Objective-C/instm/CALayer/addAnimation:forKey:
+Objective-C/instm/PDFPage/addAnnotation:
+Objective-C/instm/NSXMLElement/addAttribute:
+Objective-C/instm/NSMutableAttributedString/addAttribute:value:range:
+Objective-C/instm/NSMutableAttributedString/addAttributes:range:
+C++/instm/IOAudioPort/addAudioControl
+C++/instm/IOAudioEngine/addAudioStream
+Objective-C/instm/PDFAnnotationInk/addBezierPath:
+C++/instm/IOStream/addBuffer
+C++/instm/IOStream/addBuffers
+Objective-C/instm/NSAlert/addButtonWithTitle:
+Objective-C/instm/NSAtomicStore/addCacheNodes:
+C/func/-/addch
+Objective-C/instm/QTMovie/addChapters:withAttributes:error:
+C++/instm/OSSerialize/addChar
+Objective-C/instm/NSMutableCharacterSet/addCharactersInRange:
+Objective-C/instm/NSMutableCharacterSet/addCharactersInString:
+Objective-C/instm/NSXMLDocument/addChild:
+Objective-C/instm/NSTreeController/addChild:
+Objective-C/instm/NSXMLElement/addChild:
+Objective-C/instm/NSXMLDTD/addChild:
+Objective-C/instm/DRFolder(VirtualFolders)/addChild:
+Objective-C/instm/NSWindow/addChildWindow:ordered:
+C/func/-/addchnstr
+C/func/-/addchstr
+Objective-C/instm/NSURLHandle/addClient:
+Objective-C/instm/NSBezierPath/addClip
+C/func/-/AddClonedTrackToMovie
+Objective-C/instm/NSFontManager/addCollection:options:
+Objective-C/intfm/FxParameterCreationAPI/addColorParameterWithName:parmId:defaultRed:defaultGreen:defaultBlue:defaultAlpha:parmFlags:
+Objective-C/intfm/FxParameterCreationAPI/addColorParameterWithName:parmId:defaultRed:defaultGreen:defaultBlue:parmFlags:
+JavaScript/instm/CanvasGradient/addColorStop
+Objective-C/instm/NSMatrix/addColumn
+Objective-C/instm/NSBrowser/addColumn
+Objective-C/instm/NSMatrix/addColumnWithCells:
+Objective-C/instm/NSPort/addConnection:toRunLoop:forMode:
+Objective-C/instm/CALayer/addConstraint:
+Objective-C/instm/IMAVControlBar/addControl:
+Objective-C/instm/NSView/addCursorRect:cursor:
+Objective-C/intfm/ApertureEditManager/addCustomMetadata:toVersions:
+Objective-C/intfm/ApertureExportManager/addCustomMetadataKeyValues:toImageAtIndex:
+Objective-C/intfm/FxParameterCreationAPI/addCustomParameterWithName:parmId:defaultValue:parmFlags:
+C/func/-/AddDataBrowserItems
+C/func/-/AddDataBrowserListViewColumn
+Objective-C/instm/NSOperation/addDependency:
+Objective-C/instm/NSDocumentController/addDocument:
+C++/instm/IOCatalogue/addDrivers
+C/func/-/AddEmptyTrackToMovie
+Objective-C/instm/NSMutableDictionary/addEntriesFromDictionary:
+Objective-C/instm/NSForm/addEntry:
+JavaScript/instm/DOMApplicationCache/addEventListener
+JavaScript/instm/AbstractWorker/addEventListener
+JavaScript/instm/DOMWindow/addEventListener
+JavaScript/instm/EventTarget/addEventListener
+JavaScript/instm/IDBRequest/addEventListener
+JavaScript/instm/EventSource/addEventListener
+JavaScript/instm/svg/addEventListener
+JavaScript/instm/Notification/addEventListener
+JavaScript/instm/MessagePort/addEventListener
+JavaScript/instm/core/addEventListener
+JavaScript/instm/TestObj/addEventListener
+JavaScript/instm/XMLHttpRequest/addEventListener
+JavaScript/instm/WorkerContext/addEventListener
+JavaScript/instm/WebSocket/addEventListener
+JavaScript/instm/XMLHttpRequestUpload/addEventListener
+C++/instm/IOWorkLoop/addEventSource
+Objective-C/instm/NSBlockOperation/addExecutionBlock:
+C++/instm/IOCatalogue/addExtensionsFromArchive
+Objective-C/instm/PSClient/addFeed:
+Objective-C/instm/PSClient/addFeedWithURL:
+C/func/-/AddFilePreview
+Objective-C/instm/NSFileWrapper/addFileWithPath:
+Objective-C/instm/NSFileWrapper/addFileWrapper:
+Objective-C/intfm/FxParameterCreationAPI/addFloatSliderWithName:parmId:defaultValue:parameterMin:parameterMax:sliderMin:sliderMax:delta:parmFlags:
+Objective-C/instm/NSFontManager/addFontDescriptors:toCollection:
+Objective-C/instm/NSFontManager/addFontTrait:
+Objective-C/clm/NSEvent/addGlobalMonitorForEventsMatchingMask:handler:
+Objective-C/intfm/FxOptionalParameterCreationAPI/addGradientWithName:parmId:parmFlags:
+Objective-C/intfm/ApertureExportManager/addHierarchicalKeywords:toImageAtIndex:
+Objective-C/intfm/ApertureEditManager/addHierarchicalKeywords:toVersions:
+Objective-C/intfm/FxOptionalParameterCreationAPI/addHistogramWithName:parmId:parmFlags:
+Objective-C/instm/QTTrack/addImage:forDuration:withAttributes:
+Objective-C/instm/QTMovie/addImage:forDuration:withAttributes:
+C/func/-/AddImageDescriptionExtension
+Objective-C/intfm/FxParameterCreationAPI/addImageReferenceWithName:parmId:parmFlags:
+Objective-C/instm/NSMutableIndexSet/addIndex:
+Objective-C/instm/NSMutableIndexSet/addIndexes:
+Objective-C/instm/NSMutableIndexSet/addIndexesInRange:
+Objective-C/instm/QTCaptureSession/addInput:error:
+Objective-C/instm/QCPlugIn/addInputPortWithType:forKey:withAttributes:
+Objective-C/intfm/FxParameterCreationAPI/addIntSliderWithName:parmId:defaultValue:parameterMin:parameterMax:sliderMin:sliderMax:delta:parmFlags:
+Objective-C/instm/WebBackForwardList/addItem:
+Objective-C/instm/NSMenu/addItem:
+Objective-C/instm/WebHistory/addItems:
+Objective-C/instm/NSComboBox/addItemsWithObjectValues:
+Objective-C/instm/NSComboBoxCell/addItemsWithObjectValues:
+Objective-C/instm/NSPopUpButton/addItemsWithTitles:
+Objective-C/instm/NSPopUpButtonCell/addItemsWithTitles:
+Objective-C/instm/NSComboBox/addItemWithObjectValue:
+Objective-C/instm/NSComboBoxCell/addItemWithObjectValue:
+Objective-C/instm/NSPopUpButtonCell/addItemWithTitle:
+Objective-C/instm/NSPopUpButton/addItemWithTitle:
+Objective-C/instm/NSMenu/addItemWithTitle:action:keyEquivalent:
+JavaScript/clconst/MutationEvent/ADDITION
+Objective-C/instp/CAPropertyAnimation/additive
+Objective-C/intfm/ApertureExportManager/addKeywords:toImageAtIndex:
+Objective-C/instm/NSTextStorage/addLayoutManager:
+Objective-C/clm/NSEvent/addLocalMonitorForEventsMatchingMask:handler:
+C++/clm/IOService/addLocation
+Objective-C/instm/NSRulerView/addMarker:
+C++/clm/IOService/addMatchingNotification
+C/econst/-/addMax
+C/func/-/AddMediaSample
+C/func/-/AddMediaSample2
+C/func/-/AddMediaSampleFromEncodedFrame
+C/func/-/AddMediaSampleReference
+C/func/-/AddMediaSampleReferences
+C/func/-/AddMediaSampleReferences64
+C++/clm/IONetworkMedium/addMedium
+Objective-C/instm/ABGroup/addMember:
+Objective-C/instm/ODRecord/addMemberRecord:error:
+C/func/-/AddMovieSelection
+Objective-C/instm/NSXMLElement/addNamespace:
+C++/instm/IONetworkInterface/addNetworkData
+JavaScript/instm/InjectedScriptHost/addNodesToSearchResult
+C++/clm/IOService/addNotification
+C/func/-/addnstr
+C/func/-/addnwstr
+Objective-C/instm/NSMutableSet/addObject:
+Objective-C/instm/NSHashTable/addObject:
+Objective-C/instm/NSObjectController/addObject:
+Objective-C/clm/NSAutoreleasePool/addObject:
+Objective-C/instm/NSAutoreleasePool/addObject:
+Objective-C/instm/NSCountedSet/addObject:
+Objective-C/instm/NSArrayController/addObject:
+Objective-C/instm/NSMutableArray/addObject:
+Objective-C/instm/IBDocument/addObject:toParent:
+Objective-C/instm/NSArrayController/addObjects:
+Objective-C/instm/NSMutableSet/addObjectsFromArray:
+Objective-C/instm/NSMutableArray/addObjectsFromArray:
+C++/instm/TestRun/addObserver
+Objective-C/instm/NSSet/addObserver:forKeyPath:options:context:
+Objective-C/instm/NSObject/addObserver:forKeyPath:options:context:
+Objective-C/instm/NSArray/addObserver:forKeyPath:options:context:
+Objective-C/instm/NSDistributedNotificationCenter/addObserver:selector:name:object:
+Objective-C/instm/DRNotificationCenter/addObserver:selector:name:object:
+Objective-C/instm/NSServerNotificationCenter/addObserver:selector:name:object:
+Objective-C/instm/NSNotificationCenter/addObserver:selector:name:object:
+Objective-C/instm/NSDistributedNotificationCenter/addObserver:selector:name:object:suspensionBehavior:
+Objective-C/instm/NSArray/addObserver:toObjectsAtIndexes:forKeyPath:options:context:
+Objective-C/instm/NSNotificationCenter/addObserverForName:object:queue:usingBlock:
+Objective-C/instm/NSOperationQueue/addOperation:
+Objective-C/instm/NSOperationQueue/addOperations:waitUntilFinished:
+Objective-C/instm/NSOperationQueue/addOperationWithBlock:
+Objective-C/instm/QTCaptureSession/addOutput:error:
+Objective-C/instm/QCPlugIn/addOutputPortWithType:forKey:withAttributes:
+C/econst/-/addOver
+Objective-C/intfm/FxBaseEffect/addParameters
+Objective-C/instm/NSPersistentStoreCoordinator/addPersistentStoreWithType:configuration:URL:options:error:
+C/econst/-/addPin
+Objective-C/instm/NSPointerArray/addPointer:
+Objective-C/intfm/FxParameterCreationAPI/addPointParameterWithName:parmId:defaultX:defaultY:parmFlags:
+Objective-C/intfm/FxParameterCreationAPI/addPopupMenuWithName:parmId:defaultValue:menuEntries:parmFlags:
+Objective-C/instm/NSRunLoop/addPort:forMode:
+C++/instm/IOService/addPowerChild
+Objective-C/instm/NSAnimation/addProgressMark:
+Objective-C/clm/ABGroup/addPropertiesAndTypes:
+Objective-C/clm/ABPerson/addPropertiesAndTypes:
+Objective-C/instm/ABPeoplePickerView/addProperty:
+C/func/-/addr
+C/func/-/addr2ascii
+JavaScript/instm/DOMSelection/addRange
+Objective-C/instm/ABAddressBook/addRecord:
+Objective-C/instm/NSFileWrapper/addRegularFileWithContents:preferredFilename:
+Objective-C/instm/NSImage/addRepresentation:
+Objective-C/instm/NSImage/addRepresentations:
+Objective-C/instm/ISyncManager/addRequestMode:
+Objective-C/instm/NSConnection/addRequestMode:
+C/econst/-/addResFailed
+C/func/-/AddResource
+Objective-C/instm/CalAttendee/address
+Objective-C/instp/CalAttendee/address
+Objective-C/instm/NSSocketPort/address
+Objective-C/instm/NSHost/address
+Objective-C/instm/IOBluetoothHostController/addressAsString
+Objective-C/clm/ABAddressBook/addressBook
+Objective-C/clm/NSTextCheckingResult/addressCheckingResultWithRange:components:
+Objective-C/instm/NSTextCheckingResult/addressComponents
+Objective-C/instp/NSTextCheckingResult/addressComponents
+Objective-C/instm/NSNetService/addresses
+Objective-C/instm/NSHost/addresses
+Objective-C/instm/NSMatrix/addRow
+Objective-C/instm/NSRuleEditor/addRow:
+Objective-C/instm/NSMatrix/addRowWithCells:
+JavaScript/instm/CSSStyleSheet/addRule
+JavaScript/instm/InspectorBackend/addRule
+Objective-C/instm/NSConnection/addRunLoop:
+C/func/-/AddSampleTableToMedia
+Objective-C/instm/IKSaveOptions/addSaveOptionsAccessoryViewToSavePanel:
+Objective-C/instm/QTMovieView/addScaled:
+JavaScript/instm/InspectorBackend/addScriptToEvaluateOnLoad
+Objective-C/instm/NSArrayController/addSelectedObjects:
+Objective-C/instm/PDFSelection/addSelection:
+Objective-C/instm/NSArrayController/addSelectionIndexes:
+Objective-C/instm/NSTreeController/addSelectionIndexPaths:
+Objective-C/instm/PDFSelection/addSelections:
+Objective-C/instm/NSSpeechSynthesizer/addSpeechDictionary:
+C/func/-/addstr
+C++/instm/OSSerialize/addString
+Objective-C/intfm/FxParameterCreationAPI_v2/addStringParameterWithName:parmId:defaultValue:parmFlags:
+Objective-C/instm/ABGroup/addSubgroup:
+Objective-C/instm/CALayer/addSublayer:
+Objective-C/instm/WebDataSource/addSubresource:
+Objective-C/instm/NSView/addSubview:
+Objective-C/instm/NSView/addSubview:positioned:relativeTo:
+Objective-C/instm/NSUserDefaults/addSuiteNamed:
+Objective-C/instm/NSFileWrapper/addSymbolicLinkWithDestination:preferredFilename:
+Objective-C/instm/NSTableView/addTableColumn:
+Objective-C/instm/NSMutableParagraphStyle/addTabStop:
+Objective-C/instm/NSTabView/addTabViewItem:
+Objective-C/instm/NSLayoutManager/addTemporaryAttribute:value:forCharacterRange:
+Objective-C/instm/NSLayoutManager/addTemporaryAttributes:forCharacterRange:
+C++/instm/TestSuite/addTest
+Objective-C/instm/NSLayoutManager/addTextContainer:
+Objective-C/instm/NSDate/addTimeInterval:
+C++/instm/IOAudioEngine/addTimer
+Objective-C/instm/NSRunLoop/addTimer:forMode:
+C++/instm/IOAudioDevice/addTimerEvent
+C++/instm/IOBlockStorageDriver/addToBytesTransferred
+Objective-C/instm/IOBluetoothDevice/addToFavorites
+Objective-C/intfm/FxParameterCreationAPI/addToggleButtonWithName:parmId:defaultValue:parmFlags:
+Objective-C/instm/NSView/addToolTipRect:owner:userData:
+C/func/-/AddToRunLoop
+Objective-C/instm/NSView/addTrackingArea:
+Objective-C/instm/NSView/addTrackingRect:owner:userData:assumeInside:
+C/func/-/AddTrackReference
+C++/instm/IOFWAddressSpace/addTrustedNode
+Objective-C/instm/NSPasteboard/addTypes:owner:
+Objective-C/instm/CARenderer/addUpdateRect:
+C++/instm/IOAudioControl/addUserClient
+C++/clm/IOAudioControl/addUserClientAction
+C++/instm/OSNumber/addValue
+Objective-C/instm/NSMutableURLRequest/addValue:forHTTPHeaderField:
+Objective-C/instm/ODRecord/addValue:toAttribute:error:
+Objective-C/instm/ABMutableMultiValue/addValue:withLabel:
+Objective-C/instm/NSDocument/addWindowController:
+Objective-C/instm/NSApplication/addWindowsItem:title:filename:
+C/func/-/addwstr
+C++/instm/OSSerialize/addXMLEndTag
+C++/instm/OSSerialize/addXMLStartTag
+C/func/-/adjtime
+C++/instm/IOService/adjustBusy
+Objective-C/instm/NSView/adjustPageHeightNew:top:bottom:limit:
+Objective-C/instm/NSView/adjustPageWidthNew:left:right:limit:
+Objective-C/instm/NSView/adjustScroll:
+Objective-C/instm/NSSplitView/adjustSubviews
+C/econst/-/adMax
+C/econst/-/adMin
+Objective-C/clm/NSColorSpace/adobeRGB1998ColorSpace
+JavaScript/instm/Document/adoptNode
+Objective-C/instm/NSFont/advancementForGlyph:
+Objective-C/instm/NSAppleEventDescriptor/aeDesc
+Objective-C/instm/NSScriptSuiteRegistry/aeteResource:
+Objective-C/instm/NSFetchRequest/affectedStores
+Objective-C/instm/CALayer/affineTransform
+Objective-C/instm/NSFont/afmDictionary
+-/writerid/-/AFP_Catalog_Node_Names
+-/writerid/-/AFP_Date_And_Time_Format
+-/writerid/-/AFP_Directory_Access_Controls
+-/writerid/-/AFP_Reconnect_UAM
+-/writerid/-/AFP_Reconnecting_Sessions
+C/econst/-/afpAccessDenied
+C/econst/-/afpAlreadyLoggedInErr
+C/econst/-/afpAlreadyMounted
+C/tdef/-/AFPAlternateAddress
+C/econst/-/afpAuthContinue
+C/econst/-/afpBadDirIDType
+C/econst/-/afpBadIDErr
+C/econst/-/afpBadUAM
+C/econst/-/afpBadVersNum
+C/econst/-/afpBitmapErr
+C/econst/-/afpCallNotAllowed
+C/econst/-/afpCallNotSupported
+C/econst/-/afpCantMountMoreSrvre
+C/econst/-/afpCantMove
+C/econst/-/afpCantRename
+C/econst/-/afpCatalogChanged
+C/econst/-/afpContainsSharedErr
+C/econst/-/afpDenyConflict
+C/econst/-/afpDiffVolErr
+C/econst/-/afpDirNotEmpty
+C/econst/-/afpDirNotFound
+C/econst/-/afpDiskFull
+C/econst/-/afpEofError
+C/econst/-/afpFileBusy
+C/econst/-/afpFlatVol
+C/econst/-/afpIconTypeError
+C/econst/-/afpIDExists
+C/econst/-/afpIDNotFound
+C/econst/-/afpInsideSharedErr
+C/econst/-/afpInsideTrashErr
+C/econst/-/afpItemNotFound
+C/econst/-/afpLockErr
+C/econst/-/afpMiscErr
+C/econst/-/afpNoMoreLocks
+C/econst/-/afpNoServer
+C/econst/-/afpObjectExists
+C/econst/-/afpObjectLocked
+C/econst/-/afpObjectNotFound
+C/econst/-/afpObjectTypeErr
+C/econst/-/afpParmErr
+C/econst/-/afpPwdExpiredErr
+C/econst/-/afpPwdNeedsChangeErr
+C/econst/-/afpPwdPolicyErr
+C/econst/-/afpPwdSameErr
+C/econst/-/afpPwdTooShortErr
+C/econst/-/afpRangeNotLocked
+C/econst/-/afpRangeOverlap
+C/econst/-/afpSameNodeErr
+C/econst/-/afpSameObjectErr
+C/econst/-/afpServerGoingDown
+C/econst/-/afpSessClosed
+C/tdef/-/AFPTagData
+C/econst/-/afpTooManyFilesOpen
+C/econst/-/afpUserNotAuth
+C/econst/-/afpVolLocked
+C/tdef/-/AFPVolMountInfo
+C/tdef/-/AFPXVolMountInfo
+C/macro/-/AGL_0_BIT
+C/macro/-/AGL_10_BIT
+C/macro/-/AGL_128_BIT
+C/macro/-/AGL_12_BIT
+C/macro/-/AGL_16_BIT
+C/macro/-/AGL_1_BIT
+C/macro/-/AGL_24_BIT
+C/macro/-/AGL_2_BIT
+C/macro/-/AGL_32_BIT
+C/macro/-/AGL_3_BIT
+C/macro/-/AGL_48_BIT
+C/macro/-/AGL_4_BIT
+C/macro/-/AGL_5_BIT
+C/macro/-/AGL_64_BIT
+C/macro/-/AGL_6_BIT
+C/macro/-/AGL_8_BIT
+C/macro/-/AGL_96_BIT
+C/macro/-/AGL_ACCELERATED
+C/macro/-/AGL_ACCUM_ALPHA_SIZE
+C/macro/-/AGL_ACCUM_BLUE_SIZE
+C/macro/-/AGL_ACCUM_GREEN_SIZE
+C/macro/-/AGL_ACCUM_MODES
+C/macro/-/AGL_ACCUM_RED_SIZE
+C/macro/-/AGL_ALL_RENDERERS
+C/macro/-/AGL_ALPHA_SIZE
+C/macro/-/AGL_ARGB12121212_BIT
+C/macro/-/AGL_ARGB1555_BIT
+C/macro/-/AGL_ARGB16161616_BIT
+C/macro/-/AGL_ARGB2101010_BIT
+C/macro/-/AGL_ARGB4444_BIT
+C/macro/-/AGL_ARGB8888_BIT
+C/macro/-/AGL_AUX_BUFFERS
+C/macro/-/AGL_AUX_DEPTH_STENCIL
+C/macro/-/AGL_BACKING_STORE
+C/macro/-/AGL_BAD_ALLOC
+C/macro/-/AGL_BAD_ATTRIBUTE
+C/macro/-/AGL_BAD_CONNECTION
+C/macro/-/AGL_BAD_CONTEXT
+C/macro/-/AGL_BAD_DRAWABLE
+C/macro/-/AGL_BAD_ENUM
+C/macro/-/AGL_BAD_FULLSCREEN
+C/macro/-/AGL_BAD_GDEV
+C/macro/-/AGL_BAD_MATCH
+C/macro/-/AGL_BAD_MODULE
+C/macro/-/AGL_BAD_OFFSCREEN
+C/macro/-/AGL_BAD_PIXELFMT
+C/macro/-/AGL_BAD_POINTER
+C/macro/-/AGL_BAD_PROPERTY
+C/macro/-/AGL_BAD_RENDINFO
+C/macro/-/AGL_BAD_STATE
+C/macro/-/AGL_BAD_VALUE
+C/macro/-/AGL_BAD_WINDOW
+C/macro/-/AGL_BGR233_A8_BIT
+C/macro/-/AGL_BGR233_BIT
+C/macro/-/AGL_BLUE_SIZE
+C/macro/-/AGL_BUFFER_MODES
+C/macro/-/AGL_BUFFER_NAME
+C/macro/-/AGL_BUFFER_RECT
+C/macro/-/AGL_BUFFER_SIZE
+C/macro/-/AGL_CLEAR_FORMAT_CACHE
+C/macro/-/AGL_CLIP_REGION
+C/macro/-/AGL_CLOSEST_POLICY
+C/macro/-/AGL_COLOR_FLOAT
+C/macro/-/AGL_COLOR_MODES
+C/macro/-/AGL_COLORMAP_ENTRY
+C/macro/-/AGL_COLORMAP_TRACKING
+C/macro/-/AGL_COMPLIANT
+C/macro/-/AGL_CONTEXT_DISPLAY_ID
+C/macro/-/AGL_CONTEXT_SURFACE_ID
+C/macro/-/AGL_DEPTH_MODES
+C/macro/-/AGL_DEPTH_SIZE
+C/macro/-/AGL_DOUBLEBUFFER
+C/macro/-/AGL_DOUBLEBUFFER_BIT
+C/macro/-/AGL_ENABLE_SURFACE_BACKING_SIZE
+C/macro/-/AGL_FORMAT_CACHE_SIZE
+C/macro/-/AGL_FS_CAPTURE_SINGLE
+C/macro/-/AGL_FULLSCREEN
+C/macro/-/AGL_GREEN_SIZE
+C/macro/-/AGL_INDEX16_BIT
+C/macro/-/AGL_INDEX8_BIT
+C/macro/-/AGL_LEVEL
+C/macro/-/AGL_MAX_AUX_BUFFERS
+C/macro/-/AGL_MAX_LEVEL
+C/macro/-/AGL_MAXIMUM_POLICY
+C/macro/-/AGL_MIN_LEVEL
+C/macro/-/AGL_MINIMUM_POLICY
+C/macro/-/AGL_MONOSCOPIC_BIT
+C/macro/-/AGL_MP_SAFE
+C/macro/-/AGL_MULTISAMPLE
+C/macro/-/AGL_MULTISCREEN
+C/macro/-/AGL_NO_ERROR
+C/macro/-/AGL_NO_RECOVERY
+C/macro/-/AGL_NONE
+C/macro/-/AGL_OFFSCREEN
+C/macro/-/AGL_ORDER_CONTEXT_TO_FRONT
+C/macro/-/AGL_PBUFFER
+C/macro/-/AGL_PIXEL_SIZE
+C/macro/-/AGL_RASTERIZATION
+C/macro/-/AGL_RED_SIZE
+C/macro/-/AGL_REMOTE_PBUFFER
+C/macro/-/AGL_RENDERER_APPLE_SW_ID
+C/macro/-/AGL_RENDERER_ATI_RADEON_8500_ID
+C/macro/-/AGL_RENDERER_ATI_RADEON_9700_ID
+C/macro/-/AGL_RENDERER_ATI_RADEON_ID
+C/macro/-/AGL_RENDERER_ATI_RADEON_X1000_ID
+C/macro/-/AGL_RENDERER_ATI_RAGE_128_ID
+C/macro/-/AGL_RENDERER_ATI_RAGE_PRO_ID
+C/macro/-/AGL_RENDERER_COUNT
+C/macro/-/AGL_RENDERER_GENERIC_FLOAT_ID
+C/macro/-/AGL_RENDERER_GENERIC_ID
+C/macro/-/AGL_RENDERER_ID
+C/macro/-/AGL_RENDERER_INTEL_900_ID
+C/macro/-/AGL_RENDERER_MESA_3DFX_ID
+C/macro/-/AGL_RENDERER_NVIDIA_GEFORCE_2MX_ID
+C/macro/-/AGL_RENDERER_NVIDIA_GEFORCE_3_ID
+C/macro/-/AGL_RENDERER_NVIDIA_GEFORCE_FX_ID
+C/macro/-/AGL_RENDERER_VT_BLADE_XP2_ID
+C/macro/-/AGL_RETAIN_RENDERERS
+C/macro/-/AGL_RGB101010_A8_BIT
+C/macro/-/AGL_RGB101010_BIT
+C/macro/-/AGL_RGB121212_BIT
+C/macro/-/AGL_RGB161616_BIT
+C/macro/-/AGL_RGB332_A8_BIT
+C/macro/-/AGL_RGB332_BIT
+C/macro/-/AGL_RGB444_A8_BIT
+C/macro/-/AGL_RGB444_BIT
+C/macro/-/AGL_RGB555_A8_BIT
+C/macro/-/AGL_RGB555_BIT
+C/macro/-/AGL_RGB565_A8_BIT
+C/macro/-/AGL_RGB565_BIT
+C/macro/-/AGL_RGB888_A8_BIT
+C/macro/-/AGL_RGB888_BIT
+C/macro/-/AGL_RGB8_A8_BIT
+C/macro/-/AGL_RGB8_BIT
+C/macro/-/AGL_RGBA
+C/macro/-/AGL_RGBAFLOAT128_BIT
+C/macro/-/AGL_RGBAFLOAT256_BIT
+C/macro/-/AGL_RGBAFLOAT64_BIT
+C/macro/-/AGL_RGBFLOAT128_BIT
+C/macro/-/AGL_RGBFLOAT256_BIT
+C/macro/-/AGL_RGBFLOAT64_BIT
+C/macro/-/AGL_ROBUST
+C/macro/-/AGL_SAMPLE_ALPHA
+C/macro/-/AGL_SAMPLE_BUFFERS_ARB
+C/macro/-/AGL_SAMPLES_ARB
+C/macro/-/AGL_SINGLE_RENDERER
+C/macro/-/AGL_SINGLEBUFFER_BIT
+C/macro/-/AGL_STATE_VALIDATION
+C/macro/-/AGL_STENCIL_MODES
+C/macro/-/AGL_STENCIL_SIZE
+C/macro/-/AGL_STEREO
+C/macro/-/AGL_STEREOSCOPIC_BIT
+C/macro/-/AGL_SUPERSAMPLE
+C/macro/-/AGL_SURFACE_BACKING_SIZE
+C/macro/-/AGL_SURFACE_OPACITY
+C/macro/-/AGL_SURFACE_ORDER
+C/macro/-/AGL_SURFACE_VOLATILE
+C/macro/-/AGL_SWAP_INTERVAL
+C/macro/-/AGL_SWAP_LIMIT
+C/macro/-/AGL_SWAP_RECT
+C/macro/-/AGL_TEXTURE_MEMORY
+C/macro/-/AGL_VIDEO_MEMORY
+C/macro/-/AGL_VIRTUAL_SCREEN
+C/macro/-/AGL_WINDOW
+C/func/-/aglChoosePixelFormat
+C/func/-/aglConfigure
+C/tdef/-/AGLContext
+C/func/-/aglCopyContext
+C/func/-/aglCreateContext
+C/func/-/aglCreatePBuffer
+C/func/-/aglCreatePixelFormat
+C/func/-/aglDescribePBuffer
+C/func/-/aglDescribePixelFormat
+C/func/-/aglDescribeRenderer
+C/func/-/aglDestroyContext
+C/func/-/aglDestroyPBuffer
+C/func/-/aglDestroyPixelFormat
+C/func/-/aglDestroyRendererInfo
+C/tdef/-/AGLDevice
+C/func/-/aglDevicesOfPixelFormat
+C/func/-/aglDisable
+C/func/-/aglDisplaysOfPixelFormat
+C/tdef/-/AGLDrawable
+C/func/-/aglEnable
+C/func/-/aglErrorString
+C/func/-/aglGetCGLContext
+C/func/-/aglGetCGLPixelFormat
+C/func/-/aglGetCurrentContext
+C/func/-/aglGetDrawable
+C/func/-/aglGetError
+C/func/-/aglGetHIViewRef
+C/func/-/aglGetInteger
+C/func/-/aglGetPBuffer
+C/func/-/aglGetVersion
+C/func/-/aglGetVirtualScreen
+C/func/-/aglGetWindowRef
+C/func/-/aglIsEnabled
+C/func/-/aglNextPixelFormat
+C/func/-/aglNextRendererInfo
+C/tdef/-/AGLPbuffer
+C/tdef/-/AGLPixelFormat
+C/func/-/aglQueryRendererInfo
+C/func/-/aglQueryRendererInfoForCGDirectDisplayIDs
+C/tdef/-/AGLRendererInfo
+C/func/-/aglResetLibrary
+C/func/-/aglSetCurrentContext
+C/func/-/aglSetDrawable
+C/func/-/aglSetFullScreen
+C/func/-/aglSetHIViewRef
+C/func/-/aglSetInteger
+C/func/-/aglSetOffScreen
+C/func/-/aglSetPBuffer
+C/func/-/aglSetVirtualScreen
+C/func/-/aglSetWindowRef
+C/func/-/aglSurfaceTexture
+C/func/-/aglSwapBuffers
+C/func/-/aglTexImagePBuffer
+C/func/-/aglUpdateContext
+C/func/-/aglUseFont
+C/func/-/AHGotoMainTOC
+C/func/-/AHGotoPage
+C/func/-/AHLookupAnchor
+C/func/-/AHRegisterHelpBook
+C/func/-/AHSearch
+C/tdef/-/AHTOCType
+C/func/-/aio_cancel
+C/func/-/aio_error
+C/func/-/aio_read
+C/func/-/aio_return
+C/func/-/aio_suspend
+C/func/-/aio_write
+Objective-C/clm/CalAlarm/alarm
+C/func/-/alarm
+Objective-C/instm/CalCalendarItem/alarms
+Objective-C/instp/CalCalendarItem/alarms
+JavaScript/instm/DOMWindow/alert
+Objective-C/intfm/NSAlertDelegate/alertShowHelp:
+Objective-C/instm/NSAlert/alertStyle
+Objective-C/clm/NSAlert/alertWithError:
+Objective-C/clm/NSAlert/alertWithMessageText:defaultButton:alternateButton:otherButton:informativeTextWithFormat:
+JavaScript/clconst/WebGLRenderingContext/ALIASED_LINE_WIDTH_RANGE
+JavaScript/clconst/WebGLRenderingContext/ALIASED_POINT_SIZE_RANGE
+Objective-C/instm/CBIdentity/aliases
+C/tdef/-/AliasFilterProcPtr
+C/tdef/-/AliasFilterUPP
+C/tdef/-/AliasHandle
+C/tdef/-/AliasInfoType
+C/tdef/-/AliasPtr
+C/tdef/-/AliasRecord
+JavaScript/data/HTMLDivElement/align
+JavaScript/data/HTMLParagraphElement/align
+JavaScript/data/HTMLHRElement/align
+JavaScript/data/HTMLIFrameElement/align
+JavaScript/data/HTMLLegendElement/align
+JavaScript/data/HTMLHeadingElement/align
+JavaScript/data/HTMLTableCellElement/align
+JavaScript/data/HTMLEmbedElement/align
+JavaScript/data/HTMLObjectElement/align
+JavaScript/data/HTMLTableColElement/align
+JavaScript/data/HTMLTableRowElement/align
+JavaScript/data/HTMLTableSectionElement/align
+JavaScript/data/HTMLInputElement/align
+JavaScript/data/HTMLTableCaptionElement/align
+JavaScript/data/HTMLTableElement/align
+JavaScript/data/HTMLImageElement/align
+JavaScript/data/HTMLAppletElement/align
+JavaScript/data/SVGPreserveAspectRatio/align
+Objective-C/instm/WebView/alignCenter:
+Objective-C/instm/NSText/alignCenter:
+Objective-C/instm/NSTextView/alignJustified:
+Objective-C/instm/WebView/alignJustified:
+Objective-C/instm/WebView/alignLeft:
+Objective-C/instm/NSText/alignLeft:
+C++/data/IOMemoryCursor/alignMask
+Objective-C/instm/NSTextTab/alignment
+Objective-C/instm/PDFAnnotationFreeText/alignment
+Objective-C/instm/PDFAnnotationTextWidget/alignment
+Objective-C/instm/NSControl/alignment
+Objective-C/instm/NSParagraphStyle/alignment
+Objective-C/binding/NSComboBox/alignment
+Objective-C/instm/NSCell/alignment
+Objective-C/binding/NSSecureTextField/alignment
+Objective-C/binding/NSSearchField/alignment
+Objective-C/binding/NSTextField/alignment
+Objective-C/binding/NSTokenField/alignment
+Objective-C/instm/NSText/alignment
+Objective-C/instm/CATextLayer/alignmentMode
+Objective-C/instp/CATextLayer/alignmentMode
+Objective-C/instm/NSImage/alignmentRect
+Objective-C/instm/WebView/alignRight:
+Objective-C/instm/NSText/alignRight:
+C/func/-/AlignScreenRect
+C/func/-/AlignWindow
+JavaScript/data/HTMLBodyElement/aLink
+JavaScript/data/HTMLDocument/alinkColor
+JavaScript/data/HTMLDocument/all
+Objective-C/clm/NSBundle/allBundles
+Objective-C/clm/PSClient/allClientBundleIdentifiers
+Objective-C/instm/QCCompositionRepository/allCompositions
+Objective-C/clm/NSConnection/allConnections
+Objective-C/instm/NSURLCredentialStorage/allCredentials
+Objective-C/clm/NSBundle/allFrameworks
+Objective-C/instm/NSHTTPURLResponse/allHeaderFields
+Objective-C/instm/NSURLRequest/allHTTPHeaderFields
+Objective-C/instm/NSColorList/allKeys
+Objective-C/instm/NSDictionary/allKeys
+Objective-C/instm/NSDictionary/allKeysForObject:
+Objective-C/instm/NSOrthography/allLanguages
+Objective-C/instp/NSOrthography/allLanguages
+Objective-C/instm/NSHashTable/allObjects
+Objective-C/instm/NSEnumerator/allObjects
+Objective-C/instm/NSPointerArray/allObjects
+Objective-C/instm/NSSet/allObjects
+Objective-C/clm/NSProxy/alloc
+Objective-C/clm/NSObject/alloc
+C++/instm/OSMetaClass/alloc
+C/func/-/alloca
+C/func/-/Allocate
+C++/instm/IORangeAllocator/allocate
+C++/clm/IOATABusCommand/allocateCmd
+C++/instm/IOBlockStorageDriver/allocateContext
+Objective-C/instm/NSView/allocateGState
+C++/instm/IOFireWirePCRSpace/allocateInputPlug
+C++/instm/IOFireWirePCRSpace/allocateOutputPlug
+C++/instm/IONetworkController/allocatePacket
+C++/instm/IOFireWireSBP2ORB/allocatePageTable
+C++/instm/IORangeAllocator/allocateRange
+C++/instm/IOFireWireSerialBusProtocolTransport/AllocateResources
+C++/clm/OSMetaClass/allocClassWithName
+C++/instm/ATADeviceNub/allocCommand
+C++/instm/IOATADevice/allocCommand
+C/func/-/AllocContig
+Objective-C/clm/NSProxy/allocWithZone:
+Objective-C/clm/NSObject/allocWithZone:
+Objective-C/clm/NSPort/allocWithZone:
+Objective-C/instm/NSSavePanel/allowedFileTypes
+Objective-C/instm/NSTextInputContext/allowedInputSourceLocales
+Objective-C/instp/NSTextInputContext/allowedInputSourceLocales
+Objective-C/instm/NSTextView/allowedInputSourceLocales
+Objective-C/instm/NSTextFieldCell/allowedInputSourceLocales
+Objective-C/instm/NSPathCell/allowedTypes
+Objective-C/instm/WebPreferences/allowsAnimatedImageLooping
+Objective-C/instm/WebPreferences/allowsAnimatedImages
+Objective-C/instm/NSBrowser/allowsBranchSelection
+Objective-C/instm/NSTableView/allowsColumnReordering
+Objective-C/instm/NSTableView/allowsColumnResizing
+Objective-C/instm/NSTableView/allowsColumnSelection
+Objective-C/instm/NSWindow/allowsConcurrentViewDrawing
+Objective-C/instm/NSMenu/allowsContextMenuPlugIns
+Objective-C/instm/PDFDocument/allowsCopying
+Objective-C/instm/NSImageView/allowsCutCopyPaste
+Objective-C/instm/NSTextView/allowsDocumentBackgroundColorChange
+Objective-C/instm/PDFThumbnailView/allowsDragging
+Objective-C/instm/PDFView/allowsDragging
+Objective-C/instm/IKImageBrowserView/allowsDroppingOnItems
+Objective-C/instm/NSToolbarItem/allowsDuplicatesInToolbar
+Objective-C/instm/NSTextField/allowsEditingTextAttributes
+Objective-C/instm/NSCell/allowsEditingTextAttributes
+Objective-C/instm/QCCompositionPickerView/allowsEmptySelection
+Objective-C/instm/NSMatrix/allowsEmptySelection
+Objective-C/instm/NSBrowser/allowsEmptySelection
+Objective-C/instm/IKImageBrowserView/allowsEmptySelection
+Objective-C/instm/NSTableView/allowsEmptySelection
+Objective-C/instm/NSNumberFormatter/allowsFloats
+Objective-C/instm/ABPeoplePickerView/allowsGroupSelection
+Objective-C/instp/ABPeoplePickerView/allowsGroupSelection
+Objective-C/instm/NSTextView/allowsImageEditing
+Objective-C/instm/NSCoder/allowsKeyedCoding
+Objective-C/intfm/ApertureExportPlugIn/allowsMasterExport
+Objective-C/instm/NSButton/allowsMixedState
+Objective-C/instm/NSCell/allowsMixedState
+Objective-C/instm/ABIdentityPicker/allowsMultipleSelection
+Objective-C/instm/CBIdentityPicker/allowsMultipleSelection
+Objective-C/instm/PDFThumbnailView/allowsMultipleSelection
+Objective-C/instm/NSOpenPanel/allowsMultipleSelection
+Objective-C/instm/NSBrowser/allowsMultipleSelection
+Objective-C/instm/ABPeoplePickerView/allowsMultipleSelection
+Objective-C/instp/ABPeoplePickerView/allowsMultipleSelection
+Objective-C/instm/IKImageBrowserView/allowsMultipleSelection
+Objective-C/instm/NSCollectionView/allowsMultipleSelection
+Objective-C/instm/NSTableView/allowsMultipleSelection
+Objective-C/instm/NSDateFormatter/allowsNaturalLanguage
+Objective-C/instm/NSLayoutManager/allowsNonContiguousLayout
+Objective-C/intfm/ApertureExportPlugIn/allowsOnlyPlugInPresets
+Objective-C/instm/NSSavePanel/allowsOtherFileTypes
+Objective-C/instm/PDFDocument/allowsPrinting
+Objective-C/instm/IKImageBrowserView/allowsReordering
+Objective-C/clm/NSValueTransformer/allowsReverseTransformation
+Objective-C/instm/WebFrameView/allowsScrolling
+Objective-C/instm/NSSlider/allowsTickMarkValuesOnly
+Objective-C/instm/NSSliderCell/allowsTickMarkValuesOnly
+Objective-C/instm/PDFAnnotationButtonWidget/allowsToggleToOff
+Objective-C/instm/NSWindow/allowsToolTipsWhenApplicationIsInactive
+Objective-C/instm/NSTabView/allowsTruncatedLabels
+Objective-C/instm/NSBrowser/allowsTypeSelect
+Objective-C/instm/NSTableView/allowsTypeSelect
+Objective-C/instm/NSTextView/allowsUndo
+Objective-C/instm/NSCell/allowsUndo
+Objective-C/instm/NSToolbar/allowsUserCustomization
+Objective-C/intfm/ApertureExportPlugIn/allowsVersionExport
+C/func/-/AllPlanes
+Objective-C/instm/NSOrthography/allScripts
+Objective-C/instp/NSOrthography/allScripts
+Objective-C/clm/IMService/allServices
+C++/clm/TestSuite/allTests
+Objective-C/clm/CW8021XProfile/allUser8021XProfiles
+Objective-C/instm/NSDictionary/allValues
+Objective-C/instm/CIColor/alpha
+Objective-C/instm/NSColorPanel/alpha
+JavaScript/data/RGBColor/alpha
+JavaScript/data/WebGLContextAttributes/alpha
+JavaScript/clconst/WebGLRenderingContext/ALPHA
+JavaScript/clconst/WebGLRenderingContext/ALPHA_BITS
+Objective-C/instm/NSColor/alphaComponent
+Objective-C/intfm/NSColorPickingDefault/alphaControlAddedOrRemoved:
+Objective-C/clm/NSCharacterSet/alphanumericCharacterSet
+Objective-C/instm/CAEmitterCell/alphaRange
+Objective-C/instp/CAEmitterCell/alphaRange
+C/func/-/alphasort
+Objective-C/instm/CAEmitterCell/alphaSpeed
+Objective-C/instp/CAEmitterCell/alphaSpeed
+Objective-C/instm/NSWindow/alphaValue
+Objective-C/instm/NSView/alphaValue
+JavaScript/data/HTMLInputElement/alt
+JavaScript/data/HTMLAppletElement/alt
+JavaScript/data/HTMLAreaElement/alt
+JavaScript/data/HTMLImageElement/alt
+Objective-C/instm/NSButton/alternateImage
+Objective-C/instm/NSStatusItem/alternateImage
+Objective-C/instm/NSBrowserCell/alternateImage
+Objective-C/instm/NSButtonCell/alternateImage
+Objective-C/binding/NSButtonCell/alternateImage
+Objective-C/binding/NSButton/alternateImage
+Objective-C/instm/NSButtonCell/alternateMnemonic
+Objective-C/instm/NSButtonCell/alternateMnemonicLocation
+Objective-C/clm/NSColor/alternateSelectedControlColor
+Objective-C/clm/NSColor/alternateSelectedControlTextColor
+Objective-C/instm/NSButton/alternateTitle
+Objective-C/instm/WebHistoryItem/alternateTitle
+Objective-C/instm/NSButtonCell/alternateTitle
+Objective-C/binding/NSButton/alternateTitle
+Objective-C/binding/NSButtonCell/alternateTitle
+Objective-C/instp/PSEntry/alternateURL
+Objective-C/instp/PSFeed/alternateURL
+Objective-C/instm/NSPopUpButtonCell/altersStateOfSelectedItem
+JavaScript/data/KeyboardEvent/altGraphKey
+Objective-C/instm/NSSliderCell/altIncrementValue
+Objective-C/instm/NSSlider/altIncrementValue
+Objective-C/instm/CLLocation/altitude
+Objective-C/instp/CLLocation/altitude
+JavaScript/data/Coordinates/altitude
+JavaScript/data/Coordinates/altitudeAccuracy
+JavaScript/data/KeyboardEvent/altKey
+JavaScript/data/MouseEvent/altKey
+JavaScript/data/TouchEvent/altKey
+JavaScript/data/WheelEvent/altKey
+JavaScript/clconst/WebGLRenderingContext/ALWAYS
+JavaScript/clconst/DataGridColumn/ALWAYS_SORTED
+Objective-C/instp/CW8021XProfile/alwaysPromptForPassword
+Objective-C/instp/CWConfiguration/alwaysRememberNetworks
+Objective-C/instm/NSNumberFormatter/alwaysShowsDecimalSeparator
+Objective-C/instm/NSTreeController/alwaysUsesMultipleValuesMarker
+Objective-C/instm/NSArrayController/alwaysUsesMultipleValuesMarker
+Objective-C/cl/-/AMAction
+C/econst/-/AMActionApplicationResourceError
+C/econst/-/AMActionApplicationVersionResourceError
+C/econst/-/AMActionArchitectureMismatchError
+C/macro/-/AMActionErrorKey
+C/econst/-/AMActionExceptionError
+C/econst/-/AMActionExecutionError
+C/econst/-/AMActionFileResourceError
+C/econst/-/AMActionInitializationError
+C/econst/-/AMActionInsufficientDataError
+C/econst/-/AMActionIsDeprecatedError
+C/econst/-/AMActionLicenseResourceError
+C/econst/-/AMActionLinkError
+C/econst/-/AMActionLoadError
+C/econst/-/AMActionNotLoadableError
+C/econst/-/AMActionPropertyListInvalidError
+C/econst/-/AMActionRequiredActionResourceError
+C/econst/-/AMActionRuntimeMismatchError
+Objective-C/cl/-/AMAppleScriptAction
+C/macro/-/AMAutomatorErrorDomain
+Objective-C/cl/-/AMBundleAction
+C/econst/-/AMConversionFailedError
+C/econst/-/AMConversionNoDataError
+C/econst/-/AMConversionNotPossibleError
+C/econst/-/AMNoSuchActionError
+JavaScript/data/SVGComponentTransferFunctionElement/amplitude
+Objective-C/cl/-/AMShellScriptAction
+Objective-C/instm/NSDateFormatter/AMSymbol
+C/econst/-/AMUserCanceledError
+Objective-C/cl/-/AMWorkflow
+Objective-C/cl/-/AMWorkflowController
+C/econst/-/AMWorkflowNewerActionVersionError
+C/econst/-/AMWorkflowNewerVersionError
+C/econst/-/AMWorkflowOlderActionVersionError
+C/econst/-/AMWorkflowPropertyListInvalidError
+Objective-C/cl/-/AMWorkflowView
+Objective-C/instm/NSView/ancestorSharedWithView:
+C/econst/-/anchor
+JavaScript/data/DOMSelection/anchorNode
+JavaScript/data/DOMSelection/anchorOffset
+Objective-C/instm/CALayer/anchorPoint
+Objective-C/instp/CALayer/anchorPoint
+Objective-C/instm/CALayer/anchorPointZ
+Objective-C/instp/CALayer/anchorPointZ
+JavaScript/data/Document/anchors
+Objective-C/clm/NSCompoundPredicate/andPredicateWithSubpredicates:
+JavaScript/data/SVGPathSegArcAbs/angle
+JavaScript/data/SVGPathSegArcRel/angle
+JavaScript/data/SVGTransform/angle
+Objective-C/binding/NSProgressIndicator/animate
+Objective-C/instm/NSProgressIndicator/animate:
+JavaScript/data/SVGUseElement/animatedInstanceRoot
+JavaScript/data/SVGAnimatedPathData/animatedNormalizedPathSegList
+JavaScript/data/SVGAnimatedPathData/animatedPathSegList
+JavaScript/data/SVGAnimatedPoints/animatedPoints
+Objective-C/instm/ScreenSaverView/animateOneFrame
+Objective-C/instm/NSImageView/animates
+Objective-C/instm/IKImageBrowserView/animates
+Objective-C/clm/CAAnimation/animation
+Objective-C/intfm/NSAnimationDelegate/animation:didReachProgressMark:
+Objective-C/intfm/NSAnimationDelegate/animation:valueForProgress:
+Objective-C/instm/NSAnimation/animationBlockingMode
+Objective-C/instm/NSAnimation/animationCurve
+Objective-C/instm/NSProgressIndicator/animationDelay
+Objective-C/binding/NSProgressIndicator/animationDelay
+Objective-C/intfm/NSAnimationDelegate/animationDidEnd:
+Objective-C/instm/NSObject/animationDidStart:
+Objective-C/intfm/NSAnimationDelegate/animationDidStop:
+Objective-C/instm/NSObject/animationDidStop:finished:
+Objective-C/clm/CATransaction/animationDuration
+Objective-C/intfm/NSAnimatablePropertyContainer/animationForKey:
+Objective-C/instm/CALayer/animationForKey:
+Objective-C/instm/CALayer/animationKeys
+JavaScript/data/WebKitAnimationEvent/animationName
+Objective-C/instm/NSWindow/animationResizeTime:
+Objective-C/instp/CAAnimationGroup/animations
+Objective-C/instm/CAAnimationGroup/animations
+Objective-C/intfm/NSAnimatablePropertyContainer/animations
+Objective-C/intfm/NSAnimationDelegate/animationShouldStart:
+JavaScript/instm/SVGSVGElement/animationsPaused
+Objective-C/instm/ScreenSaverView/animationTimeInterval
+Objective-C/clm/CATransaction/animationTimingFunction
+Objective-C/clm/CAPropertyAnimation/animationWithKeyPath:
+Objective-C/intfm/NSAnimatablePropertyContainer/animator
+JavaScript/data/SVGAnimatedLength/animVal
+JavaScript/data/SVGAnimatedLengthList/animVal
+JavaScript/data/SVGAnimatedAngle/animVal
+JavaScript/data/SVGAnimatedEnumeration/animVal
+JavaScript/data/SVGAnimatedTransformList/animVal
+JavaScript/data/SVGAnimatedString/animVal
+JavaScript/data/SVGAnimatedRect/animVal
+JavaScript/data/SVGAnimatedPreserveAspectRatio/animVal
+JavaScript/data/SVGAnimatedNumberList/animVal
+JavaScript/data/SVGAnimatedInteger/animVal
+JavaScript/data/SVGAnimatedBoolean/animVal
+JavaScript/data/SVGAnimatedNumber/animVal
+Objective-C/instm/PDFPage/annotationAtPoint:
+Objective-C/instm/PDFPage/annotations
+Objective-C/instm/PDFView/annotationsChangedOnPage:
+Objective-C/instm/IMKInputController/annotationSelected:forCandidate:
+JavaScript/data/WebGLContextAttributes/antialias
+JavaScript/clconst/XPathResult/ANY_TYPE
+JavaScript/clconst/XPathResult/ANY_UNORDERED_NODE_TYPE
+Objective-C/instm/NSHashTable/anyObject
+Objective-C/instm/NSSet/anyObject
+Objective-C/intf/-/ApertureEditManager
+Objective-C/intf/-/ApertureEditPlugIn
+Objective-C/intf/-/ApertureExportManager
+Objective-C/intf/-/ApertureExportPlugIn
+C/tdef/-/ApertureExportProgress
+C/tdef/-/ApertureExportThumbnailSize
+Objective-C/instm/QTTrack/apertureModeDimensionsForMode:
+Objective-C/intfm/ApertureEditManager/apertureWindow
+JavaScript/data/Navigator/appCodeName
+JavaScript/instm/DOMFormData/append
+Objective-C/instm/DRBurn(PropertyConvenienceMethods)/appendable
+Objective-C/instm/DRBurnSetupPanel/appendable:
+Objective-C/instm/NSMutableAttributedString/appendAttributedString:
+Objective-C/instm/NSBezierPath/appendBezierPath:
+Objective-C/instm/NSBezierPath/appendBezierPathWithArcFromPoint:toPoint:radius:
+Objective-C/instm/NSBezierPath/appendBezierPathWithArcWithCenter:radius:startAngle:endAngle:
+Objective-C/instm/NSBezierPath/appendBezierPathWithArcWithCenter:radius:startAngle:endAngle:clockwise:
+Objective-C/instm/NSBezierPath/appendBezierPathWithGlyph:inFont:
+Objective-C/instm/NSBezierPath/appendBezierPathWithGlyphs:count:inFont:
+Objective-C/instm/NSBezierPath/appendBezierPathWithOvalInRect:
+Objective-C/instm/NSBezierPath/appendBezierPathWithPackedGlyphs:
+Objective-C/instm/NSBezierPath/appendBezierPathWithPoints:count:
+Objective-C/instm/NSBezierPath/appendBezierPathWithRect:
+Objective-C/instm/NSBezierPath/appendBezierPathWithRoundedRect:xRadius:yRadius:
+C++/instm/OSData/appendByte
+C++/instm/OSData/appendBytes
+Objective-C/instm/NSMutableData/appendBytes:length:
+JavaScript/instm/core/appendChild
+JavaScript/instm/CharacterData/appendData
+Objective-C/instm/NSMutableData/appendData:
+Objective-C/instm/NSMutableString/appendFormat:
+JavaScript/instm/SVGLengthList/appendItem
+JavaScript/instm/SVGNumberList/appendItem
+JavaScript/instm/SVGPointList/appendItem
+JavaScript/instm/SVGStringList/appendItem
+JavaScript/instm/SVGPathSegList/appendItem
+JavaScript/instm/SVGTransformList/appendItem
+JavaScript/instm/MediaList/appendMedium
+Objective-C/instm/QTMovie/appendSelectionFromMovie:
+Objective-C/instm/NSMutableString/appendString:
+Objective-C/instm/NSAffineTransform/appendTransform:
+C/econst/-/appIsDaemon
+Objective-C/instm/NSScriptCommand/appleEvent
+Objective-C/instm/NSScriptCommandDescription/appleEventClassCode
+Objective-C/instm/NSScriptClassDescription/appleEventCode
+Objective-C/instm/NSScriptCommandDescription/appleEventCode
+Objective-C/instm/NSScriptCommandDescription/appleEventCodeForArgumentWithName:
+Objective-C/instm/NSScriptClassDescription/appleEventCodeForKey:
+Objective-C/instm/NSScriptCommandDescription/appleEventCodeForReturnType
+Objective-C/instm/NSScriptSuiteRegistry/appleEventCodeForSuite:
+Objective-C/instm/NSAppleEventManager/appleEventForSuspensionID:
+Objective-C/clm/NSAppleEventDescriptor/appleEventWithEventClass:eventID:targetDescriptor:returnID:transactionID:
+JavaScript/data/Document/applets
+C/func/-/AppleWM
+JavaScript/cl/-/Application
+Objective-C/instm/NSObject/application:delegateHandlesKey:
+Objective-C/intfm/NSApplicationDelegate/application:openFile:
+Objective-C/intfm/NSApplicationDelegate/application:openFiles:
+Objective-C/intfm/NSApplicationDelegate/application:openFileWithoutUI:
+Objective-C/intfm/NSApplicationDelegate/application:openTempFile:
+Objective-C/intfm/NSApplicationDelegate/application:printFile:
+Objective-C/instm/NSObject/application:printFiles:
+Objective-C/intfm/NSApplicationDelegate/application:printFiles:withSettings:showPrintPanels:
+Objective-C/intfm/NSApplicationDelegate/application:willPresentError:
+JavaScript/data/DOMWindow/applicationCache
+Objective-C/clm/PSClient/applicationClient
+Objective-C/intfm/NSApplicationDelegate/applicationDidBecomeActive:
+Objective-C/intfm/NSApplicationDelegate/applicationDidChangeScreenParameters:
+Objective-C/intfm/NSApplicationDelegate/applicationDidFinishLaunching:
+Objective-C/intfm/NSApplicationDelegate/applicationDidHide:
+Objective-C/intfm/NSApplicationDelegate/applicationDidResignActive:
+Objective-C/intfm/NSApplicationDelegate/applicationDidUnhide:
+Objective-C/intfm/NSApplicationDelegate/applicationDidUpdate:
+Objective-C/intfm/NSApplicationDelegate/applicationDockMenu:
+Objective-C/instm/NSApplication/applicationIconImage
+Objective-C/instm/XGJob/applicationIdentifier
+Objective-C/instm/XGJob/applicationInfo
+Objective-C/instm/WebView/applicationNameForUserAgent
+Objective-C/intfm/NSApplicationDelegate/applicationOpenUntitledFile:
+Objective-C/intfm/NSApplicationDelegate/applicationShouldHandleReopen:hasVisibleWindows:
+Objective-C/intfm/NSApplicationDelegate/applicationShouldOpenUntitledFile:
+Objective-C/intfm/NSApplicationDelegate/applicationShouldTerminate:
+Objective-C/intfm/NSApplicationDelegate/applicationShouldTerminateAfterLastWindowClosed:
+Objective-C/intfm/NSApplicationDelegate/applicationWillBecomeActive:
+Objective-C/intfm/NSApplicationDelegate/applicationWillFinishLaunching:
+Objective-C/intfm/NSApplicationDelegate/applicationWillHide:
+Objective-C/intfm/NSApplicationDelegate/applicationWillResignActive:
+Objective-C/intfm/NSApplicationDelegate/applicationWillTerminate:
+Objective-C/intfm/NSApplicationDelegate/applicationWillUnhide:
+Objective-C/intfm/NSApplicationDelegate/applicationWillUpdate:
+Objective-C/clm/SBApplication/applicationWithBundleIdentifier:
+Objective-C/clm/SBApplication/applicationWithProcessIdentifier:
+Objective-C/clm/SBApplication/applicationWithURL:
+Objective-C/instm/NSUserDefaultsController/appliesImmediately
+Objective-C/instm/CIFilter/apply:
+Objective-C/instm/CIFilter/apply:arguments:options:
+Objective-C/instm/NSObject/applyChange:forEntityName:remappedRecordIdentifier:formattedRecord:error:
+Objective-C/instm/NSMutableAttributedString/applyFontTraits:range:
+Objective-C/instm/WebView/applyStyle:
+JavaScript/instm/InspectorBackend/applyStyleText
+C/econst/-/appMemFullErr
+C/econst/-/appModeErr
+JavaScript/data/Navigator/appName
+JavaScript/data/WorkerNavigator/appName
+C/tdef/-/AppParameters
+JavaScript/data/Navigator/appVersion
+JavaScript/data/WorkerNavigator/appVersion
+C/econst/-/appVersionTooOld
+JavaScript/instm/CanvasRenderingContext2D/arc
+C/func/-/arc4random
+C/func/-/arc4random_addrandom
+C/func/-/arc4random_stir
+C/func/-/arch
+JavaScript/data/HTMLObjectElement/archive
+JavaScript/data/HTMLAppletElement/archive
+Objective-C/clm/NSArchiver/archivedDataWithRootObject:
+Objective-C/clm/NSKeyedArchiver/archivedDataWithRootObject:
+Objective-C/intfm/NSKeyedArchiverDelegate/archiver:didEncodeObject:
+Objective-C/intfm/NSKeyedArchiverDelegate/archiver:willEncodeObject:
+Objective-C/intfm/NSKeyedArchiverDelegate/archiver:willReplaceObject:withObject:
+Objective-C/instm/NSArchiver/archiverData
+Objective-C/intfm/NSKeyedArchiverDelegate/archiverDidFinish:
+Objective-C/clm/NSArchiver/archiveRootObject:toFile:
+Objective-C/clm/NSKeyedArchiver/archiveRootObject:toFile:
+Objective-C/intfm/NSKeyedArchiverDelegate/archiverWillFinish:
+JavaScript/instm/CanvasRenderingContext2D/arcTo
+Objective-C/instm/PDFView/areaOfInterestForMouse:
+JavaScript/data/HTMLMapElement/areas
+Objective-C/instm/NSWindow/areCursorRectsEnabled
+Objective-C/instm/WebPreferences/arePlugInsEnabled
+Objective-C/instm/QTMovieView/areStepButtonsVisible
+Objective-C/instm/QTMovieView/areZoomButtonsVisible
+Objective-C/binding/NSButton/argument
+Objective-C/binding/NSButtonCell/argument
+Objective-C/instm/NSScriptCommandDescription/argumentNames
+Objective-C/instm/NSScriptCommand/arguments
+Objective-C/instm/NSProcessInfo/arguments
+Objective-C/instm/NSTask/arguments
+Objective-C/instm/NSExpression/arguments
+Objective-C/instm/NSInvocation/argumentsRetained
+Objective-C/instm/NSTreeController/arrangedObjects
+Objective-C/instm/NSDictionaryController/arrangedObjects
+Objective-C/instm/NSArrayController/arrangedObjects
+Objective-C/instm/NSApplication/arrangeInFront:
+Objective-C/instm/NSArrayController/arrangeObjects:
+Objective-C/clm/NSArray/array
+JavaScript/clconst/WebGLRenderingContext/ARRAY_BUFFER
+JavaScript/clconst/WebGLRenderingContext/ARRAY_BUFFER_BINDING
+JavaScript/data/DOMWindow/ArrayBuffer
+JavaScript/cl/-/ArrayBuffer
+JavaScript/cl/-/ArrayBufferView
+Objective-C/instm/NSArray/arrayByAddingObject:
+Objective-C/instm/NSArray/arrayByAddingObjectsFromArray:
+Objective-C/instm/SBElementArray/arrayByApplyingSelector:
+Objective-C/instm/SBElementArray/arrayByApplyingSelector:withObject:
+Objective-C/instm/NSUserDefaults/arrayForKey:
+C++/clm/IODeviceMemory/arrayFromList
+Objective-C/clm/DRCDTextBlock/arrayOfCDTextBlocksFromPacks:
+Objective-C/clm/NSArray/arrayWithArray:
+Objective-C/clm/NSMutableArray/arrayWithCapacity:
+Objective-C/clm/NSArray/arrayWithContentsOfFile:
+Objective-C/clm/NSArray/arrayWithContentsOfURL:
+Objective-C/clm/NSArray/arrayWithObject:
+Objective-C/clm/NSArray/arrayWithObjects:
+Objective-C/clm/NSArray/arrayWithObjects:count:
+Objective-C/clm/NSCursor/arrowCursor
+Objective-C/instm/NSPopUpButtonCell/arrowPosition
+Objective-C/instm/NSScroller/arrowsPosition
+Objective-C/instm/NSFont/ascender
+Objective-C/instm/NSSortDescriptor/ascending
+C/func/-/ascii2addr
+C/func/-/asctime
+C/func/-/asctime_r
+C/econst/-/asiAliasName
+C/func/-/asin
+C/func/-/asinf
+C/func/-/asinh
+C/func/-/asinhf
+C/func/-/asinhl
+C/func/-/asinl
+C/econst/-/asiParentName
+C/econst/-/asiServerName
+C/econst/-/asiVolumeName
+C/econst/-/asiZoneName
+C/func/-/asl
+C/func/-/asl_add_log_file
+C/func/-/asl_close
+C/func/-/asl_free
+C/func/-/asl_get
+C/func/-/asl_key
+C/func/-/asl_log
+C/func/-/asl_new
+C/func/-/asl_open
+C/func/-/asl_remove_log_file
+C/func/-/asl_search
+C/func/-/asl_send
+C/func/-/asl_set
+C/func/-/asl_set_filter
+C/func/-/asl_set_query
+C/func/-/asl_unset
+C/func/-/asl_vlog
+C/func/-/aslresponse_free
+C/func/-/aslresponse_next
+C/func/-/ASN1_add_oid_module
+C/func/-/ASN1_generate_nconf
+C/func/-/ASN1_generate_v3
+C/func/-/ASN1_OBJECT_free
+C/func/-/ASN1_OBJECT_new
+C/func/-/ASN1_STRING_cmp
+C/func/-/ASN1_STRING_data
+C/func/-/ASN1_STRING_dup
+C/func/-/ASN1_STRING_free
+C/func/-/ASN1_STRING_length
+C/func/-/ASN1_STRING_length_set
+C/func/-/ASN1_STRING_new
+C/func/-/ASN1_STRING_print_ex
+C/func/-/ASN1_STRING_print_ex_fp
+C/func/-/ASN1_STRING_set
+C/func/-/ASN1_STRING_to_UTF8
+C/func/-/ASN1_STRING_type
+C/func/-/ASN1_STRING_type_new
+Objective-C/instm/NSWindow/aspectRatio
+C/func/-/asprintf
+C/func/-/asprintf_l
+C/func/-/assert
+JavaScript/instm/Console/assert
+C/tag/-/Assertion
+JavaScript/instm/window/assign
+Objective-C/instm/NSPreferencePane/assignMainView
+Objective-C/instm/NSManagedObjectContext/assignObject:toPersistentStore:
+Objective-C/instm/NSMigrationManager/associateSourceInstance:withDestinationInstance:forEntityMapping:
+Objective-C/instm/CWInterface/associateToNetwork:parameters:error:
+C/func/-/assume_default_colors
+Objective-C/instm/CAOpenGLLayer/asynchronous
+Objective-C/instp/CAOpenGLLayer/asynchronous
+C++/data/IOAudioDevice/asyncPowerStateChangeInProgress
+JavaScript/clconst/Event/AT_TARGET
+C++/clm/IOATABusInfo/atabusinfo
+C++/clm/IOATADevConfig/atadevconfig
+C++/cl/-/ATADeviceNub
+C++/clm/ATADeviceNub/ataDeviceNub
+C/func/-/atan
+C/func/-/atan2
+C/func/-/atan2f
+C/func/-/atan2l
+C/func/-/atanf
+C/func/-/atanh
+C/func/-/atanhf
+C/func/-/atanhl
+C/func/-/atanl
+C/tdef/-/ATAPIClientData
+C/tag/-/ATAPIClientData
+C++/cl/-/ATATimerEventSource
+C++/clm/ATATimerEventSource/ataTimerEventSource
+C/func/-/atexit
+C/func/-/atexit_b
+C/econst/-/AtlasConj
+C/func/-/ATLU_DestroyThreadMemory
+JavaScript/instm/DOMWindow/atob
+C/func/-/atof
+C/func/-/atof_l
+C/func/-/atoi
+C/func/-/atoi_l
+C/func/-/atol
+C/func/-/atol_l
+C/func/-/atoll
+C/func/-/atoll_l
+C/func/-/atomic
+C++/instm/ATADeviceNub/attach
+C++/instm/IOService/attach
+C++/instm/IOAudioDevice/attachAudioPort
+Objective-C/instm/NSColorPanel/attachColorList:
+Objective-C/instm/NSColorPicker/attachColorList:
+Objective-C/intfm/NSColorPickingDefault/attachColorList:
+C++/instm/IONetworkController/attachDebuggerClient
+JavaScript/clconst/WebGLRenderingContext/ATTACHED_SHADERS
+Objective-C/instm/NSMenuView/attachedMenu
+Objective-C/instm/NSMenu/attachedMenu
+Objective-C/instm/NSMenuView/attachedMenuView
+Objective-C/instm/NSWindow/attachedSheet
+C++/instm/IONetworkController/attachInterface
+Objective-C/intfm/NSTextAttachmentCell/attachment
+Objective-C/instm/NSTextAttachment/attachmentCell
+Objective-C/instm/NSLayoutManager/attachmentSizeForGlyphAtIndex:
+Objective-C/instm/NSPopUpButtonCell/attachPopUpWithFrame:inView:
+JavaScript/instm/WebGLRenderingContext/attachShader
+Objective-C/instm/NSMenuView/attachSubmenuForItemAtIndex:
+C++/instm/IORegistryEntry/attachToChild
+Objective-C/instm/QTMovie/attachToCurrentThread
+C++/instm/IONetworkInterface/attachToDataLinkLayer
+C++/instm/IORegistryEntry/attachToParent
+C++/instm/IOCommandGate/attemptAction
+C/func/-/attemptckalloc
+C/func/-/attemptckrealloc
+C++/instm/IOCommandGate/attemptCommand
+Objective-C/instm/NSObject/attemptRecoveryFromError:optionIndex:
+Objective-C/instm/NSObject/attemptRecoveryFromError:optionIndex:delegate:didRecoverSelector:contextInfo:
+Objective-C/instm/CalEvent/attendees
+Objective-C/instp/CalEvent/attendees
+JavaScript/cl/-/Attr
+JavaScript/data/DOMWindow/Attr
+C/func/-/attr_get
+C/func/-/attr_off
+C/func/-/attr_on
+C/func/-/attr_set
+JavaScript/data/MutationEvent/attrChange
+Objective-C/instm/NSMetadataQueryAttributeValueTuple/attribute
+Objective-C/instm/NSMetadataQueryResultGroup/attribute
+Objective-C/instm/CAConstraint/attribute
+Objective-C/instp/CAConstraint/attribute
+Objective-C/instm/NSAttributedString/attribute:atIndex:effectiveRange:
+Objective-C/instm/NSAttributedString/attribute:atIndex:longestEffectiveRange:inRange:
+JavaScript/clconst/core/ATTRIBUTE_NODE
+Objective-C/instm/NSButton/attributedAlternateTitle
+Objective-C/instm/NSButtonCell/attributedAlternateTitle
+Objective-C/instm/NSXMLDTD/attributeDeclarationForName:elementName:
+C/tdef/-/attributeDeclSAXFunc
+Objective-C/instm/NSAppleEventDescriptor/attributeDescriptorForKeyword:
+Objective-C/instm/PDFPage/attributedString
+Objective-C/instm/PDFSelection/attributedString
+Objective-C/intfm/NSGlyphStorage/attributedString
+Objective-C/instm/NSATSTypesetter/attributedString
+Objective-C/intfm/NSTextInputClient/attributedString
+Objective-C/intfm/WebDocumentText/attributedString
+Objective-C/instm/NSLayoutManager/attributedString
+Objective-C/instm/NSTypesetter/attributedString
+Objective-C/binding/NSTextView/attributedString
+Objective-C/instm/NSObject/attributedStringForIdentityPropertiesWithNames:inRecord:comparisonRecords:firstLineAttributes:secondLineAttributes:
+Objective-C/instm/NSNumberFormatter/attributedStringForNil
+Objective-C/instm/NSNumberFormatter/attributedStringForNotANumber
+Objective-C/instm/NSFormatter/attributedStringForObjectValue:withDefaultAttributes:
+Objective-C/instm/NSObject/attributedStringForPropertiesWithNames:inRecord:comparisonRecords:defaultAttributes:
+Objective-C/instm/NSNumberFormatter/attributedStringForZero
+Objective-C/instm/NSControl/attributedStringValue
+Objective-C/instm/NSCell/attributedStringValue
+Objective-C/clm/NSAttributedString/attributedStringWithAttachment:
+Objective-C/intfm/NSTextInputClient/attributedSubstringForProposedRange:actualRange:
+Objective-C/intfm/IMKTextInput/attributedSubstringFromRange:
+Objective-C/intfm/NSTextInput/attributedSubstringFromRange:
+Objective-C/instm/NSAttributedString/attributedSubstringFromRange:
+Objective-C/instm/NSFormCell/attributedTitle
+Objective-C/instm/NSButton/attributedTitle
+Objective-C/instm/NSStatusItem/attributedTitle
+Objective-C/instm/NSButtonCell/attributedTitle
+Objective-C/instm/NSMenuItem/attributedTitle
+Objective-C/instm/QTCaptureConnection/attributeForKey:
+Objective-C/instm/QTFormatDescription/attributeForKey:
+Objective-C/instm/QTSampleBuffer/attributeForKey:
+Objective-C/instm/QTCaptureDevice/attributeForKey:
+Objective-C/instm/QTTrack/attributeForKey:
+Objective-C/instm/QTMedia/attributeForKey:
+Objective-C/instm/QTMovie/attributeForKey:
+Objective-C/instm/NSXMLElement/attributeForLocalName:URI:
+Objective-C/instm/NSXMLElement/attributeForName:
+Objective-C/instm/QTCaptureConnection/attributeIsReadOnly:
+Objective-C/instm/QTCaptureDevice/attributeIsReadOnly:
+Objective-C/instm/NSClassDescription/attributeKeys
+Objective-C/instm/NSObject/attributeKeys
+Objective-C/instm/NSEntityMapping/attributeMappings
+Objective-C/instm/NSTextStorage/attributeRuns
+Objective-C/instm/NSMetadataItem/attributes
+Objective-C/instm/QCComposition/attributes
+Objective-C/instm/NSXMLElement/attributes
+Objective-C/instm/IMKCandidates/attributes
+Objective-C/instm/CIFilter/attributes
+Objective-C/clm/QCPlugIn/attributes
+Objective-C/intfm/QCCompositionRenderer/attributes
+Objective-C/instm/NSGraphicsContext/attributes
+Objective-C/instm/NSOpenGLPixelFormat/attributes
+Objective-C/instp/IOBluetoothSDPServiceRecord/attributes
+JavaScript/data/core/attributes
+Objective-C/instm/NSAttributedString/attributesAtIndex:effectiveRange:
+Objective-C/instm/NSAttributedString/attributesAtIndex:longestEffectiveRange:inRange:
+C/tdef/-/attributeSAXFunc
+Objective-C/instm/NSEntityDescription/attributesByName
+Objective-C/intfm/IMKTextInput/attributesForCharacterIndex:lineHeightRectangle:
+Objective-C/instm/NSTypesetter/attributesForExtraLineFragment
+Objective-C/clm/QCPlugIn/attributesForPropertyPortWithKey:
+Objective-C/clm/NSSpeechSynthesizer/attributesForVoice:
+Objective-C/instm/NSFileManager/attributesOfFileSystemForPath:error:
+Objective-C/instm/NSFileManager/attributesOfItemAtPath:error:
+Objective-C/instm/NSAttributeDescription/attributeType
+Objective-C/instm/NSAttributeDescription/attributeValueClassName
+Objective-C/clm/NSXMLNode/attributeWithName:stringValue:
+Objective-C/clm/NSXMLNode/attributeWithName:URI:stringValue:
+JavaScript/data/MutationEvent/attrName
+C/func/-/attroff
+C/func/-/attron
+C/func/-/attrset
+JavaScript/data/TestObj/attrWithException
+JavaScript/data/TestObj/attrWithGetterException
+JavaScript/data/TestObj/attrWithSetterException
+C/func/-/au_bsm_to_domain
+C/func/-/au_bsm_to_errno
+C/func/-/au_bsm_to_fcntl_cmd
+C/func/-/au_bsm_to_socket_type
+C/func/-/au_class
+C/func/-/au_close
+C/func/-/au_close_buffer
+C/func/-/au_close_token
+C/func/-/au_control
+C/func/-/au_domain
+C/func/-/au_domain_to_bsm
+C/func/-/au_errno
+C/func/-/au_errno_to_bsm
+C/func/-/au_event
+C/func/-/au_fcntl_cmd
+C/func/-/au_fcntl_cmd_to_bsm
+C/func/-/au_fetch_tok
+C/func/-/au_free_token
+C/func/-/au_io
+C/func/-/au_mask
+C/func/-/au_open
+C/func/-/au_poltostr
+C/func/-/au_preselect
+C/func/-/au_print_tok
+C/func/-/au_read_rec
+C/func/-/au_socket_type
+C/func/-/au_socket_type_to_bsm
+C/func/-/au_strerror
+C/func/-/au_strtopol
+C/func/-/au_to_arg
+C/func/-/au_to_arg32
+C/func/-/au_to_arg64
+C/func/-/au_to_attr
+C/func/-/au_to_attr32
+C/func/-/au_to_attr64
+C/func/-/au_to_data
+C/func/-/au_to_exec_args
+C/func/-/au_to_exec_env
+C/func/-/au_to_exit
+C/func/-/au_to_file
+C/func/-/au_to_groups
+C/func/-/au_to_header
+C/func/-/au_to_header32
+C/func/-/au_to_header32_ex
+C/func/-/au_to_header64
+C/func/-/au_to_header_ex
+C/func/-/au_to_in_addr
+C/func/-/au_to_in_addr_ex
+C/func/-/au_to_ip
+C/func/-/au_to_ipc
+C/func/-/au_to_ipc_perm
+C/func/-/au_to_iport
+C/func/-/au_to_me
+C/func/-/au_to_newgroups
+C/func/-/au_to_opaque
+C/func/-/au_to_path
+C/func/-/au_to_process32
+C/func/-/au_to_process32_ex
+C/func/-/au_to_process64
+C/func/-/au_to_process64_ex
+C/func/-/au_to_return
+C/func/-/au_to_return32
+C/func/-/au_to_return64
+C/func/-/au_to_seq
+C/func/-/au_to_sock_inet128
+C/func/-/au_to_sock_inet32
+C/func/-/au_to_sock_int
+C/func/-/au_to_socket_ex
+C/func/-/au_to_subject
+C/func/-/au_to_subject32
+C/func/-/au_to_subject32_ex
+C/func/-/au_to_subject64
+C/func/-/au_to_subject64_ex
+C/func/-/au_to_subject_ex
+C/func/-/au_to_text
+C/func/-/au_to_trailer
+C/func/-/au_to_zonename
+C/func/-/au_token
+C/func/-/au_user
+C/func/-/au_user_mask
+C/func/-/au_write
+C/tag/-/AUChannelInfo
+C/tdef/-/AUChannelInfo
+Objective-C/intf/-/AUCustomViewPersistentData
+C/tag/-/AUDependentParameter
+C/tdef/-/AUDependentParameter
+JavaScript/data/DOMWindow/Audio
+C/tag/-/AudioAggregateDevice
+C/tdef/-/AudioBalanceFade
+C/tag/-/AudioBooleanControl
+C/tag/-/AudioBuffer
+C/tdef/-/AudioBuffer
+C/tag/-/AudioBufferList
+C/tdef/-/AudioBufferList
+Objective-C/instm/QTSampleBuffer/audioBufferListWithOptions:
+C/tdef/-/AudioBytePacketTranslation
+C/tag/-/AudioChannelDescription
+C/tdef/-/AudioChannelDescription
+C/tdef/-/AudioChannelLabel
+C/tag/-/AudioChannelLayout
+C/tdef/-/AudioChannelLayout
+C/tag/-/AudioChannelLayoutTag
+C/tdef/-/AudioChannelLayoutTag
+C/macro/-/AudioChannelLayoutTag_GetNumberOfChannels
+C/tag/-/AudioClassDescription
+C/tdef/-/AudioClassDescription
+C/tdef/-/AudioClassID
+C/tdef/-/AudioCodec
+C/func/-/AudioCodecAppendInputData
+C/func/-/AudioCodecGetProperty
+C/func/-/AudioCodecGetPropertyInfo
+C/func/-/AudioCodecInitialize
+C/tdef/-/AudioCodecMagicCookieInfo
+C/tdef/-/AudioCodecPrimeInfo
+C/func/-/AudioCodecProduceOutputPackets
+C/tdef/-/AudioCodecPropertyID
+C/func/-/AudioCodecReset
+C/func/-/AudioCodecSetProperty
+C/func/-/AudioCodecUninitialize
+C/tdef/-/AudioComponent
+C/func/-/AudioComponentCopyName
+C/func/-/AudioComponentCount
+C/tdef/-/AudioComponentDescription
+C/func/-/AudioComponentFindNext
+C/func/-/AudioComponentGetDescription
+C/func/-/AudioComponentGetVersion
+C/tdef/-/AudioComponentInstance
+C/func/-/AudioComponentInstanceCanDo
+C/func/-/AudioComponentInstanceDispose
+C/func/-/AudioComponentInstanceGetComponent
+C/func/-/AudioComponentInstanceNew
+C/tag/-/AudioControl
+C/tdef/-/AudioConverterComplexInputDataProc
+C/func/-/AudioConverterConvertBuffer
+C/func/-/AudioConverterDispose
+C/func/-/AudioConverterFillBuffer
+C/func/-/AudioConverterFillComplexBuffer
+C/func/-/AudioConverterGetProperty
+C/func/-/AudioConverterGetPropertyInfo
+C/tdef/-/AudioConverterInputDataProc
+C/func/-/AudioConverterNew
+C/func/-/AudioConverterNewSpecific
+C/tdef/-/AudioConverterPrimeInfo
+C/tdef/-/AudioConverterPropertyID
+C/tdef/-/AudioConverterRef
+C/func/-/AudioConverterReset
+C/func/-/AudioConverterSetProperty
+C/func/-/AudioConvertHostTimeToNanos
+C/func/-/AudioConvertNanosToHostTime
+C/tag/-/AudioDevice
+C++/data/IOAudioEngine/audioDevice
+C/func/-/AudioDeviceAddIOProc
+C/func/-/AudioDeviceAddPropertyListener
+Objective-C/instm/IMAVManager/audioDeviceChannels
+C/func/-/AudioDeviceGetCurrentTime
+C/func/-/AudioDeviceGetNearestStartTime
+C/func/-/AudioDeviceGetProperty
+C/func/-/AudioDeviceGetPropertyInfo
+C/tdef/-/AudioDeviceID
+C/tdef/-/AudioDeviceIOProc
+C/tdef/-/AudioDevicePropertyID
+C/tdef/-/AudioDevicePropertyListenerProc
+C/func/-/AudioDeviceRead
+C/func/-/AudioDeviceRemoveIOProc
+C/func/-/AudioDeviceRemovePropertyListener
+C/func/-/AudioDeviceSetProperty
+C/func/-/AudioDeviceStart
+C/func/-/AudioDeviceStartAtTime
+C/func/-/AudioDeviceStop
+C/func/-/AudioDeviceTranslateTime
+Objective-C/instm/IMAVManager/audioDeviceUID
+C/func/-/AudioDriverPlugInClose
+C/func/-/AudioDriverPlugInDeviceGetProperty
+C/func/-/AudioDriverPlugInDeviceGetPropertyInfo
+C/tdef/-/AudioDriverPlugInDevicePropertyChangedProc
+C/func/-/AudioDriverPlugInDeviceSetProperty
+C/tag/-/AudioDriverPlugInHostInfo
+C/func/-/AudioDriverPlugInOpen
+C/func/-/AudioDriverPlugInStreamGetProperty
+C/func/-/AudioDriverPlugInStreamGetPropertyInfo
+C/tdef/-/AudioDriverPlugInStreamPropertyChangedProc
+C/func/-/AudioDriverPlugInStreamSetProperty
+C++/data/IOAudioDevice/audioEngines
+C++/instm/IOAudioDevice/audioEngineStarting
+C++/instm/IOAudioDevice/audioEngineStopped
+C++/data/IOAudioEngine/audioEngineStopPosition
+C/tdef/-/AudioFile_GetSizeProc
+C/tdef/-/AudioFile_ReadProc
+C/tdef/-/AudioFile_SetSizeProc
+C/tdef/-/AudioFile_SMPTE_Time
+C/tdef/-/AudioFile_WriteProc
+C/func/-/AudioFileClose
+C/func/-/AudioFileCountUserData
+C/func/-/AudioFileCreate
+C/func/-/AudioFileCreateWithURL
+C/func/-/AudioFileGetGlobalInfo
+C/func/-/AudioFileGetGlobalInfoSize
+C/func/-/AudioFileGetProperty
+C/func/-/AudioFileGetPropertyInfo
+C/func/-/AudioFileGetUserData
+C/func/-/AudioFileGetUserDataSize
+C/tdef/-/AudioFileID
+C/func/-/AudioFileInitialize
+C/func/-/AudioFileInitializeWithCallbacks
+C/tdef/-/AudioFileMarker
+C/tdef/-/AudioFileMarkerList
+C/func/-/AudioFileOpen
+C/func/-/AudioFileOpenURL
+C/func/-/AudioFileOpenWithCallbacks
+C/func/-/AudioFileOptimize
+C/tdef/-/AudioFilePacketTableInfo
+C/tdef/-/AudioFilePropertyID
+C/func/-/AudioFileReadBytes
+C/func/-/AudioFileReadPacketData
+C/func/-/AudioFileReadPackets
+C/tdef/-/AudioFileRegion
+C/tdef/-/AudioFileRegionList
+C/func/-/AudioFileRemoveUserData
+C/func/-/AudioFileSetProperty
+C/func/-/AudioFileSetUserData
+C/tdef/-/AudioFileStream_PacketsProc
+C/tdef/-/AudioFileStream_PropertyListenerProc
+C/func/-/AudioFileStreamClose
+C/func/-/AudioFileStreamGetProperty
+C/func/-/AudioFileStreamGetPropertyInfo
+C/tdef/-/AudioFileStreamID
+C/func/-/AudioFileStreamOpen
+C/func/-/AudioFileStreamParseBytes
+C/tdef/-/AudioFileStreamPropertyID
+C/func/-/AudioFileStreamSeek
+C/func/-/AudioFileStreamSetProperty
+C/tdef/-/AudioFileTypeAndFormatID
+C/tdef/-/AudioFileTypeID
+C/func/-/AudioFileWriteBytes
+C/func/-/AudioFileWritePackets
+C/func/-/AudioFormatGetProperty
+C/func/-/AudioFormatGetPropertyInfo
+C/tdef/-/AudioFormatInfo
+C/tdef/-/AudioFormatListItem
+C/tdef/-/AudioFormatPropertyID
+C/tdef/-/AudioFramePacketTranslation
+C/func/-/AudioGetCurrentHostTime
+C/func/-/AudioGetHostClockFrequency
+C/func/-/AudioGetHostClockMinimumTimeDelta
+C/func/-/AudioHardwareAddPropertyListener
+C/func/-/AudioHardwareAddRunLoopSource
+C/func/-/AudioHardwareClaimAudioDeviceID
+C/func/-/AudioHardwareClaimAudioStreamID
+C/func/-/AudioHardwareDevicePropertyChanged
+C/func/-/AudioHardwareDevicesCreated
+C/func/-/AudioHardwareDevicesDied
+C/func/-/AudioHardwareGetProperty
+C/func/-/AudioHardwareGetPropertyInfo
+C/tag/-/AudioHardwareIOProcStreamUsage
+C/cl/-/AudioHardwarePlugInInterface
+C/tdef/-/AudioHardwarePlugInInterface
+C/tdef/-/AudioHardwarePlugInRef
+C/tdef/-/AudioHardwarePropertyID
+C/tdef/-/AudioHardwarePropertyListenerProc
+C/func/-/AudioHardwareRemovePropertyListener
+C/func/-/AudioHardwareRemoveRunLoopSource
+C/func/-/AudioHardwareServiceAddPropertyListener
+C/func/-/AudioHardwareServiceGetPropertyData
+C/func/-/AudioHardwareServiceGetPropertyDataSize
+C/func/-/AudioHardwareServiceHasProperty
+C/func/-/AudioHardwareServiceIsPropertySettable
+C/func/-/AudioHardwareServiceRemovePropertyListener
+C/func/-/AudioHardwareServiceSetPropertyData
+C/func/-/AudioHardwareSetProperty
+C/func/-/AudioHardwareStreamPropertyChanged
+C/func/-/AudioHardwareStreamsCreated
+C/func/-/AudioHardwareStreamsDied
+C/func/-/AudioHardwareUnload
+C/tag/-/AudioLevelControl
+C/tag/-/AudioObject
+C/func/-/AudioObjectAddPropertyListener
+C/func/-/AudioObjectCreate
+C/func/-/AudioObjectGetPropertyData
+C/func/-/AudioObjectGetPropertyDataSize
+C/func/-/AudioObjectHasProperty
+C/tdef/-/AudioObjectID
+C/func/-/AudioObjectIsPropertySettable
+C/func/-/AudioObjectPropertiesChanged
+C/tag/-/AudioObjectPropertyAddress
+C/tdef/-/AudioObjectPropertyElement
+C/tdef/-/AudioObjectPropertyListenerProc
+C/tdef/-/AudioObjectPropertyScope
+C/tdef/-/AudioObjectPropertySelector
+C/func/-/AudioObjectRemovePropertyListener
+C/func/-/AudioObjectSetPropertyData
+C/func/-/AudioObjectShow
+C/func/-/AudioObjectsPublishedAndDied
+C/func/-/AudioOutputUnitStart
+C/tdef/-/AudioOutputUnitStartAtTimeParams
+C/tag/-/AudioOutputUnitStartAtTimeParams
+C/func/-/AudioOutputUnitStop
+C/tdef/-/AudioPanningInfo
+C/tag/-/AudioPlugIn
+C++/data/IOAudioDevice/audioPorts
+C/func/-/AudioQueueAddPropertyListener
+C/func/-/AudioQueueAllocateBuffer
+C/func/-/AudioQueueAllocateBufferWithPacketDescriptions
+C/tdef/-/AudioQueueBuffer
+C/tdef/-/AudioQueueBufferRef
+C/func/-/AudioQueueCreateTimeline
+C/func/-/AudioQueueDeviceGetCurrentTime
+C/func/-/AudioQueueDeviceGetNearestStartTime
+C/func/-/AudioQueueDeviceTranslateTime
+C/func/-/AudioQueueDispose
+C/func/-/AudioQueueDisposeTimeline
+C/func/-/AudioQueueEnqueueBuffer
+C/func/-/AudioQueueEnqueueBufferWithParameters
+C/func/-/AudioQueueFlush
+C/func/-/AudioQueueFreeBuffer
+C/func/-/AudioQueueGetCurrentTime
+C/func/-/AudioQueueGetParameter
+C/func/-/AudioQueueGetProperty
+C/func/-/AudioQueueGetPropertySize
+C/tdef/-/AudioQueueInputCallback
+C/tdef/-/AudioQueueLevelMeterState
+C/func/-/AudioQueueNewInput
+C/func/-/AudioQueueNewOutput
+C/func/-/AudioQueueOfflineRender
+C/tdef/-/AudioQueueOutputCallback
+C/tdef/-/AudioQueueParameterEvent
+C/tdef/-/AudioQueueParameterID
+C/tdef/-/AudioQueueParameterValue
+C/func/-/AudioQueuePause
+C/func/-/AudioQueuePrime
+C/tdef/-/AudioQueuePropertyID
+C/tdef/-/AudioQueuePropertyListenerProc
+C/tdef/-/AudioQueueRef
+C/func/-/AudioQueueRemovePropertyListener
+C/func/-/AudioQueueReset
+C/func/-/AudioQueueSetOfflineRenderFormat
+C/func/-/AudioQueueSetParameter
+C/func/-/AudioQueueSetProperty
+C/func/-/AudioQueueStart
+C/func/-/AudioQueueStop
+C/tdef/-/AudioQueueTimelineRef
+C/tdef/-/AudioSampleType
+C/tag/-/AudioSelectorControl
+C/func/-/AudioServicesAddSystemSoundCompletion
+C/func/-/AudioServicesCreateSystemSoundID
+C/func/-/AudioServicesDisposeSystemSoundID
+C/func/-/AudioServicesGetProperty
+C/func/-/AudioServicesGetPropertyInfo
+C/func/-/AudioServicesPlayAlertSound
+C/func/-/AudioServicesPlaySystemSound
+C/tdef/-/AudioServicesPropertyID
+C/func/-/AudioServicesRemoveSystemSoundCompletion
+C/func/-/AudioServicesSetProperty
+C/tdef/-/AudioServicesSystemSoundCompletionProc
+C/tag/-/AudioStream
+C/func/-/AudioStreamAddPropertyListener
+C/tag/-/AudioStreamBasicDescription
+C/tdef/-/AudioStreamBasicDescription
+C/func/-/AudioStreamGetProperty
+C/func/-/AudioStreamGetPropertyInfo
+C/tdef/-/AudioStreamID
+C/tag/-/AudioStreamPacketDescription
+C/tdef/-/AudioStreamPacketDescription
+C/tdef/-/AudioStreamPropertyListenerProc
+C/tag/-/AudioStreamRangedDescription
+C/func/-/AudioStreamRemovePropertyListener
+C/func/-/AudioStreamSetProperty
+C/tag/-/AudioSubDevice
+C/tag/-/AudioSystemObject
+C/tag/-/AudioTimeStamp
+C/tdef/-/AudioTimeStamp
+Objective-C/instm/AUPannerView/audioUnit
+Objective-C/instm/AUGenericView/audioUnit
+C/tdef/-/AudioUnit
+C/func/-/AudioUnitAddPropertyListener
+C/func/-/AudioUnitAddRenderNotify
+C/tag/-/AudioUnitCocoaViewInfo
+C/tdef/-/AudioUnitCocoaViewInfo
+C/tag/-/AudioUnitConnection
+C/tdef/-/AudioUnitConnection
+C/macro/-/AudioUnitDisplayTypeIsCubed
+C/macro/-/AudioUnitDisplayTypeIsCubeRoot
+C/macro/-/AudioUnitDisplayTypeIsExponential
+C/macro/-/AudioUnitDisplayTypeIsLogarithmic
+C/macro/-/AudioUnitDisplayTypeIsSquared
+C/macro/-/AudioUnitDisplayTypeIsSquareRoot
+C/tdef/-/AudioUnitElement
+C/tdef/-/AudioUnitExternalBuffer
+C/tag/-/AudioUnitExternalBuffer
+C/tag/-/AudioUnitFrequencyResponseBin
+C/tdef/-/AudioUnitFrequencyResponseBin
+C/func/-/AudioUnitGetParameter
+C/func/-/AudioUnitGetProperty
+C/func/-/AudioUnitGetPropertyInfo
+C/func/-/AudioUnitInitialize
+C/tag/-/AudioUnitMeterClipping
+C/tdef/-/AudioUnitMeterClipping
+C/tdef/-/AudioUnitNodeConnection
+C/tdef/-/AudioUnitParameter
+C/tdef/-/AudioUnitParameterEvent
+C/tdef/-/AudioUnitParameterID
+C/tdef/-/AudioUnitParameterIDName
+C/tag/-/AudioUnitParameterInfo
+C/tdef/-/AudioUnitParameterInfo
+C/tag/-/AudioUnitParameterNameInfo
+C/tdef/-/AudioUnitParameterUnit
+C/tdef/-/AudioUnitParameterValue
+C/tdef/-/AudioUnitProperty
+C/tdef/-/AudioUnitPropertyID
+C/tdef/-/AudioUnitPropertyListenerProc
+C/func/-/AudioUnitRemovePropertyListener
+C/func/-/AudioUnitRemovePropertyListenerWithUserData
+C/func/-/AudioUnitRemoveRenderNotify
+C/func/-/AudioUnitRender
+C/tdef/-/AudioUnitRenderActionFlags
+C/func/-/AudioUnitReset
+C/tdef/-/AudioUnitSampleType
+C/func/-/AudioUnitScheduleParameters
+C/tdef/-/AudioUnitScope
+C/func/-/AudioUnitSetParameter
+C/func/-/AudioUnitSetProperty
+C/func/-/AudioUnitUninitialize
+C/tag/-/AudioValueRange
+C/tdef/-/AudioValueRange
+C/tag/-/AudioValueTranslation
+C/tdef/-/AudioValueTranslation
+C/func/-/audit
+C/func/-/audit_submit
+C/func/-/auditctl
+C/func/-/auditon
+Objective-C/cl/-/AUGenericView
+C/tdef/-/AUGraph
+C/func/-/AUGraphAddNode
+C/func/-/AUGraphAddRenderNotify
+C/func/-/AUGraphClearConnections
+C/func/-/AUGraphClose
+C/func/-/AUGraphConnectNodeInput
+C/func/-/AUGraphCountNodeConnections
+C/func/-/AUGraphCountNodeInteractions
+C/func/-/AUGraphDisconnectNodeInput
+C/func/-/AUGraphGetConnectionInfo
+C/func/-/AUGraphGetCPULoad
+C/func/-/AUGraphGetIndNode
+C/func/-/AUGraphGetInteractionInfo
+C/func/-/AUGraphGetMaxCPULoad
+C/func/-/AUGraphGetNodeConnections
+C/func/-/AUGraphGetNodeCount
+C/func/-/AUGraphGetNodeInfo
+C/func/-/AUGraphGetNodeInfoSubGraph
+C/func/-/AUGraphGetNodeInteractions
+C/func/-/AUGraphGetNumberOfConnections
+C/func/-/AUGraphGetNumberOfInteractions
+C/func/-/AUGraphInitialize
+C/func/-/AUGraphIsInitialized
+C/func/-/AUGraphIsNodeSubGraph
+C/func/-/AUGraphIsOpen
+C/func/-/AUGraphIsRunning
+C/func/-/AUGraphNewNode
+C/func/-/AUGraphNewNodeSubGraph
+C/func/-/AUGraphNodeInfo
+C/func/-/AUGraphOpen
+C/func/-/AUGraphRemoveNode
+C/func/-/AUGraphRemoveRenderNotification
+C/func/-/AUGraphRemoveRenderNotify
+C/func/-/AUGraphSetNodeInputCallback
+C/func/-/AUGraphSetRenderNotification
+C/func/-/AUGraphStart
+C/func/-/AUGraphStop
+C/func/-/AUGraphUninitialize
+C/func/-/AUGraphUpdate
+C/tdef/-/AUHostVersionIdentifier
+C/tag/-/AUHostVersionIdentifier
+C/tdef/-/AUInputSamplesInOutputCallback
+C/tdef/-/AUInputSamplesInOutputCallbackStruct
+C/tag/-/AUInputSamplesInOutputCallbackStruct
+C/tdef/-/AUMIDIOutputCallback
+C/tag/-/AUMIDIOutputCallbackStruct
+C/tdef/-/AUMIDIOutputCallbackStruct
+C/tdef/-/AUNode
+C/tdef/-/AUNodeInteraction
+C/tdef/-/AUNodeRenderCallback
+Objective-C/cl/-/AUPannerView
+Objective-C/clm/AUPannerView/AUPannerViewWithAudioUnit:
+C/tdef/-/AUParameterEventType
+C/tdef/-/AUPreset
+C/tag/-/AUPreset
+C/tdef/-/AUPresetEvent
+C/tdef/-/AURenderCallback
+C/tag/-/AURenderCallbackStruct
+C/tdef/-/AURenderCallbackStruct
+C/func/-/auth_destroy
+Objective-C/intfm/NSConnectionDelegate/authenticateComponents:withData:
+Objective-C/instm/CBUserIdentity/authenticateWithPassword:
+Objective-C/intfm/NSConnectionDelegate/authenticationDataForComponents:
+Objective-C/instm/NSURLProtectionSpace/authenticationMethod
+Objective-C/instm/XGConnection/authenticator
+Objective-C/instm/NSObject(XGAuthenticatorDelegate)/authenticatorDidAuthenticate:
+Objective-C/instm/NSObject(XGAuthenticatorDelegate)/authenticatorDidNotAuthenticate:
+C/func/-/authnone_create
+Objective-C/instm/CBIdentity/authority
+Objective-C/instm/SFAuthorizationView/authorization
+Objective-C/instp/CWInterface/authorization
+Objective-C/clm/SFAuthorization/authorization
+C/tdef/-/AuthorizationCallbacks
+C/tdef/-/AuthorizationContextFlags
+C/func/-/AuthorizationCopyInfo
+C/func/-/AuthorizationCopyPrivilegedReference
+C/func/-/AuthorizationCopyRights
+C/func/-/AuthorizationCreate
+C/func/-/AuthorizationCreateFromExternalForm
+C/tdef/-/AuthorizationEngineRef
+C/tdef/-/AuthorizationEnvironment
+C/func/-/AuthorizationExecuteWithPrivileges
+C/tag/-/AuthorizationExternalForm
+C/tdef/-/AuthorizationFlags
+C/func/-/AuthorizationFree
+C/func/-/AuthorizationFreeItemSet
+C/tdef/-/AuthorizationItem
+C/tdef/-/AuthorizationItemSet
+C/func/-/AuthorizationMakeExternalForm
+C/tdef/-/AuthorizationMechanismId
+C/tdef/-/AuthorizationMechanismRef
+C/tdef/-/AuthorizationPluginCreate
+C/tdef/-/AuthorizationPluginRef
+C/tdef/-/AuthorizationRef
+Objective-C/instm/SFAuthorization/authorizationRef
+C/tdef/-/AuthorizationResult
+C/func/-/AuthorizationRightGet
+C/func/-/AuthorizationRightRemove
+Objective-C/instm/SFAuthorizationView/authorizationRights
+C/tdef/-/AuthorizationRights
+C/func/-/AuthorizationRightSet
+C/tdef/-/AuthorizationSessionId
+Objective-C/instm/SFAuthorizationView/authorizationState
+C/tdef/-/AuthorizationString
+C/tdef/-/AuthorizationValue
+C/tdef/-/AuthorizationValueVector
+Objective-C/instm/NSObject/authorizationViewCreatedAuthorization:
+Objective-C/instm/NSObject/authorizationViewDidAuthorize:
+Objective-C/instm/NSObject/authorizationViewDidDeauthorize:
+Objective-C/instm/NSObject/authorizationViewReleasedAuthorization:
+Objective-C/instm/NSObject/authorizationViewShouldDeauthorize:
+Objective-C/clm/SFAuthorization/authorizationWithFlags:rights:environment:
+Objective-C/instm/SFAuthorizationView/authorize:
+Objective-C/instp/PSEntry/authors
+Objective-C/instp/PSEntry/authorsForDisplay
+C/func/-/authunix_create
+C/func/-/authunix_create_default
+Objective-C/instm/NSObject/autoContentAccessingProxy
+C++/data/IOInterruptEventSource/autoDisable
+Objective-C/instm/NSPopUpButtonCell/autoenablesItems
+Objective-C/instm/NSPopUpButton/autoenablesItems
+Objective-C/instm/NSMenu/autoenablesItems
+JavaScript/data/HTMLInputElement/autofocus
+JavaScript/data/HTMLTextAreaElement/autofocus
+JavaScript/data/HTMLDataGridElement/autofocus
+JavaScript/data/HTMLSelectElement/autofocus
+JavaScript/data/HTMLButtonElement/autofocus
+Objective-C/instm/NSBrowser/autohidesScroller
+Objective-C/instm/NSScrollView/autohidesScrollers
+Objective-C/instm/IKImageView/autohidesScrollers
+Objective-C/instp/IKImageView/autohidesScrollers
+Objective-C/instm/QTCaptureDecompressedVideoOutput/automaticallyDropsLateVideoFrames
+Objective-C/instm/NSSpellChecker/automaticallyIdentifiesLanguages
+Objective-C/clm/NSObject/automaticallyNotifiesObserversForKey:
+Objective-C/clm/NSManagedObject/automaticallyNotifiesObserversForKey:
+Objective-C/instm/NSObjectController/automaticallyPreparesContent
+Objective-C/instm/NSArrayController/automaticallyPreparesContent
+Objective-C/instm/NSArrayController/automaticallyRearrangesObjects
+Objective-C/instm/NSArrayController/automaticRearrangementKeyPaths
+Objective-C/instm/QTMovie/autoplay
+JavaScript/data/HTMLMediaElement/autoplay
+Objective-C/instp/IKSlideshow/autoPlayDelay
+Objective-C/instm/IKSlideshow/autoPlayDelay
+Objective-C/instm/NSWindow/autorecalculatesContentBorderThicknessForEdge:
+Objective-C/instm/NSWindow/autorecalculatesKeyViewLoop
+Objective-C/instm/NSAutoreleasePool/autorelease
+Objective-C/intfm/NSObject/autorelease
+Objective-C/instm/NSStepperCell/autorepeat
+Objective-C/instm/NSStepper/autorepeat
+Objective-C/instm/IKImageView/autoresizes
+Objective-C/instp/IKImageView/autoresizes
+Objective-C/instm/NSTableView/autoresizesAllColumnsToFit
+Objective-C/instm/NSOutlineView/autoresizesOutlineColumn
+Objective-C/instm/NSView/autoresizesSubviews
+Objective-C/instm/NSView/autoresizingMask
+Objective-C/instm/CALayer/autoresizingMask
+Objective-C/instp/CALayer/autoresizingMask
+Objective-C/intfp/CAMediaTiming/autoreverses
+Objective-C/intfm/CAMediaTiming/autoreverses
+Objective-C/instm/NSDocument/autosavedContentsFileURL
+Objective-C/instm/NSDocument/autosaveDocumentWithDelegate:didAutosaveSelector:contextInfo:
+Objective-C/instm/NSOutlineView/autosaveExpandedItems
+Objective-C/instp/ABPeoplePickerView/autosaveName
+Objective-C/instm/ABPeoplePickerView/autosaveName
+Objective-C/instm/NSSplitView/autosaveName
+Objective-C/instm/NSTableView/autosaveName
+Objective-C/instm/WebPreferences/autosaves
+Objective-C/instm/NSToolbar/autosavesConfiguration
+Objective-C/instm/NSTableView/autosaveTableColumns
+Objective-C/instm/NSPreferencePane/autoSaveTextFields
+Objective-C/instm/NSDocumentController/autosavingDelay
+Objective-C/instm/NSDocument/autosavingFileType
+Objective-C/instm/PDFView/autoScales
+Objective-C/instm/NSClipView/autoscroll:
+Objective-C/instm/NSView/autoscroll:
+C/func/-/AutoSizeDataBrowserListViewColumns
+Objective-C/instm/NSMatrix/autosizesCells
+Objective-C/instm/QCView/autostartsRendering
+Objective-C/clm/NSCalendar/autoupdatingCurrentCalendar
+Objective-C/clm/NSLocale/autoupdatingCurrentLocale
+Objective-C/instm/NSToolbarItem/autovalidates
+C/econst/-/AUViewParametersDisplayFlag
+C/econst/-/AUViewPropertiesDisplayFlag
+C/econst/-/AUViewTitleDisplayFlag
+Objective-C/clm/NSColorList/availableColorLists
+Objective-C/clm/NSColorSpace/availableColorSpacesWithModel:
+Objective-C/instm/NSFileHandle/availableData
+Objective-C/instm/NSFontManager/availableFontFamilies
+Objective-C/instm/NSFontManager/availableFontNamesMatchingFontDescriptor:
+Objective-C/instm/NSFontManager/availableFontNamesWithTraits:
+Objective-C/instm/NSFontManager/availableFonts
+Objective-C/instm/NSSpellChecker/availableLanguages
+Objective-C/clm/NSLocale/availableLocaleIdentifiers
+Objective-C/instm/NSFontManager/availableMembersOfFontFamily:
+Objective-C/instm/NSURLHandle/availableResourceData
+Objective-C/clm/NSString/availableStringEncodings
+Objective-C/instm/NSPasteboardItem/availableTypeFromArray:
+Objective-C/instm/NSPasteboard/availableTypeFromArray:
+Objective-C/instm/QTCaptureView/availableVideoPreviewConnections
+Objective-C/clm/NSSpeechSynthesizer/availableVoices
+JavaScript/data/Screen/availHeight
+JavaScript/data/Screen/availLeft
+JavaScript/data/Screen/availTop
+JavaScript/data/Screen/availWidth
+C++/instm/IOFireWireAVCSubUnit/AVCCommand
+C++/instm/IOFireWireAVCNub/AVCCommand
+C++/instm/IOFireWireAVCUnit/AVCCommand
+C++/cl/-/AVCCommandHandlerInfo
+C++/instm/IOFireWireAVCNub/AVCCommandInGeneration
+C++/instm/IOFireWireAVCUnit/AVCCommandInGeneration
+C++/instm/IOFireWireAVCSubUnit/AVCCommandInGeneration
+C++/cl/-/AVCConnectionRecord
+C++/cl/-/AVCSubunitInfo
+Objective-C/instm/NSTreeController/avoidsEmptySelection
+Objective-C/instm/NSArrayController/avoidsEmptySelection
+C/data/-/awaitingAck
+Objective-C/instm/NSObject/awakeAfterUsingCoder:
+Objective-C/instm/AMBundleAction/awakeFromBundle
+Objective-C/instm/NSManagedObject/awakeFromFetch
+Objective-C/instm/NSManagedObject/awakeFromInsert
+Objective-C/instm/NSObject/awakeFromNib
+Objective-C/instm/NSManagedObject/awakeFromSnapshotEvents:
+C/func/-/AXAPIEnabled
+C/tdef/-/AXCopyMultipleAttributeOptions
+C/macro/-/AXDescendingSortDirection
+JavaScript/data/HTMLTableCellElement/axis
+C/func/-/AXIsProcessTrusted
+C/func/-/AXMakeProcessTrusted
+C/func/-/AXNotificationHIObjectNotify
+C/func/-/AXObserverAddNotification
+C/tdef/-/AXObserverCallback
+C/func/-/AXObserverCreate
+C/func/-/AXObserverGetRunLoopSource
+C/func/-/AXObserverGetTypeID
+C/tdef/-/AXObserverRef
+C/func/-/AXObserverRemoveNotification
+C/func/-/AXUIElementCopyActionDescription
+C/func/-/AXUIElementCopyActionNames
+C/func/-/AXUIElementCopyAttributeNames
+C/func/-/AXUIElementCopyAttributeValue
+C/func/-/AXUIElementCopyAttributeValues
+C/func/-/AXUIElementCopyElementAtPosition
+C/func/-/AXUIElementCopyMultipleAttributeValues
+C/func/-/AXUIElementCopyParameterizedAttributeNames
+C/func/-/AXUIElementCopyParameterizedAttributeValue
+C/func/-/AXUIElementCreateApplication
+C/func/-/AXUIElementCreateSystemWide
+C/func/-/AXUIElementCreateWithDataBrowserAndItemInfo
+C/func/-/AXUIElementCreateWithHIObjectAndIdentifier
+C/func/-/AXUIElementGetAttributeValueCount
+C/func/-/AXUIElementGetDataBrowserItemInfo
+C/func/-/AXUIElementGetHIObject
+C/func/-/AXUIElementGetIdentifier
+C/func/-/AXUIElementGetPid
+C/func/-/AXUIElementGetTypeID
+C/func/-/AXUIElementIsAttributeSettable
+C/func/-/AXUIElementPerformAction
+C/func/-/AXUIElementPostKeyboardEvent
+C/tdef/-/AXUIElementRef
+C/func/-/AXUIElementSetAttributeValue
+C/func/-/AXUIElementSetMessagingTimeout
+C/func/-/AXValueCreate
+C/func/-/AXValueGetType
+C/func/-/AXValueGetTypeID
+C/func/-/AXValueGetValue
+C/tdef/-/AXValueRef
+C/tdef/-/AXValueType
+JavaScript/data/SVGFEDistantLightElement/azimuth
+JavaScript/data/SVGMatrix/b
+JavaScript/data/WebKitCSSMatrix/b
+C/econst/-/bAccessCntl
+JavaScript/instm/window/back
+JavaScript/clconst/WebGLRenderingContext/BACK
+Objective-C/instm/WebView/backForwardList
+JavaScript/data/HTMLBodyElement/background
+Objective-C/instm/NSClipView/backgroundColor
+Objective-C/instm/NSScrollView/backgroundColor
+Objective-C/instm/QCCompositionPickerView/backgroundColor
+Objective-C/instm/QCCompositionParameterView/backgroundColor
+Objective-C/instm/PDFThumbnailView/backgroundColor
+Objective-C/instm/PDFAnnotationChoiceWidget/backgroundColor
+Objective-C/instm/PDFView/backgroundColor
+Objective-C/instm/PDFAnnotationTextWidget/backgroundColor
+Objective-C/instm/PDFAnnotationButtonWidget/backgroundColor
+Objective-C/instm/NSDatePicker/backgroundColor
+Objective-C/instm/NSMatrix/backgroundColor
+Objective-C/instm/NSButtonCell/backgroundColor
+Objective-C/instm/NSDatePickerCell/backgroundColor
+Objective-C/instm/NSBrowser/backgroundColor
+Objective-C/instm/NSTextBlock/backgroundColor
+Objective-C/instm/NSPathCell/backgroundColor
+Objective-C/instm/NSTextField/backgroundColor
+Objective-C/instm/NSImage/backgroundColor
+Objective-C/instm/NSTextView/backgroundColor
+Objective-C/instm/NSWindow/backgroundColor
+Objective-C/instm/NSTableView/backgroundColor
+Objective-C/instm/NSPathControl/backgroundColor
+Objective-C/instm/NSTextFieldCell/backgroundColor
+Objective-C/instm/NSText/backgroundColor
+Objective-C/instp/CALayer/backgroundColor
+Objective-C/instm/IKImageView/backgroundColor
+Objective-C/instm/CALayer/backgroundColor
+Objective-C/instp/IKImageView/backgroundColor
+Objective-C/instm/NSCollectionView/backgroundColors
+Objective-C/instm/NSView/backgroundFilters
+Objective-C/instm/CALayer/backgroundFilters
+Objective-C/instp/CALayer/backgroundFilters
+Objective-C/instm/IKImageBrowserView/backgroundLayer
+Objective-C/instm/NSLayoutManager/backgroundLayoutEnabled
+Objective-C/instm/NSURLHandle/backgroundLoadDidFailWithReason:
+Objective-C/instm/NSCell/backgroundStyle
+Objective-C/instm/NSWindow/backingLocation
+Objective-C/clm/ScreenSaverView/backingStoreType
+Objective-C/instm/NSWindow/backingType
+Objective-C/instm/WebBackForwardList/backItem
+Objective-C/instm/WebBackForwardList/backListCount
+Objective-C/instm/WebBackForwardList/backListWithLimit:
+C/func/-/backtrace
+C/func/-/backtrace_symbols
+C/func/-/backtrace_symbols_fd
+Objective-C/clm/IMAVButton/backwardButton
+JavaScript/clconst/RangeException/BAD_BOUNDARYPOINTS_ERR
+C/macro/-/BAD_CAST
+C/econst/-/badCallOrderErr
+C/econst/-/badComponentInstance
+C/econst/-/badComponentSelector
+C/econst/-/badDepthErr
+C/econst/-/badDictFormat
+C/econst/-/badExtResource
+C/econst/-/badFCBErr
+C/econst/-/badFidErr
+Objective-C/instm/NSDockTile/badgeLabel
+C/econst/-/badInputText
+C/econst/-/badMDBErr
+C/econst/-/badMovErr
+C/econst/-/badPasteboardFlavorErr
+C/econst/-/badPasteboardIndexErr
+C/econst/-/badPasteboardItemErr
+C/econst/-/badPasteboardSyncErr
+C/econst/-/bAllowCDiDataHandler
+C/econst/-/bAncestorModDateChanges
+JavaScript/cl/-/BarInfo
+C/func/-/barrier
+C/macro/-/BASE_BUFFER_SIZE
+JavaScript/data/SVGFETurbulenceElement/baseFrequencyX
+JavaScript/data/SVGFETurbulenceElement/baseFrequencyY
+Objective-C/intfm/NSTextInputClient/baselineDeltaForCharacterAtIndex:
+Objective-C/instm/NSRulerView/baselineLocation
+Objective-C/instm/NSTypesetter/baselineOffsetInLayoutManager:glyphIndex:
+Objective-C/instm/DRFSObject/baseName
+C/func/-/basename
+JavaScript/data/DOMSelection/baseNode
+JavaScript/data/DOMSelection/baseOffset
+Objective-C/instm/NSRelativeSpecifier/baseSpecifier
+JavaScript/data/core/baseURI
+Objective-C/instp/PSEntry/baseURL
+Objective-C/instm/NSURL/baseURL
+JavaScript/data/SVGAnimatedAngle/baseVal
+JavaScript/data/SVGAnimatedNumberList/baseVal
+JavaScript/data/SVGAnimatedLength/baseVal
+JavaScript/data/SVGAnimatedTransformList/baseVal
+JavaScript/data/SVGAnimatedString/baseVal
+JavaScript/data/SVGAnimatedRect/baseVal
+JavaScript/data/SVGAnimatedPreserveAspectRatio/baseVal
+JavaScript/data/SVGAnimatedNumber/baseVal
+JavaScript/data/SVGAnimatedEnumeration/baseVal
+JavaScript/data/SVGAnimatedInteger/baseVal
+JavaScript/data/SVGAnimatedBoolean/baseVal
+JavaScript/data/SVGAnimatedLengthList/baseVal
+Objective-C/instm/NSControl/baseWritingDirection
+Objective-C/instm/NSParagraphStyle/baseWritingDirection
+Objective-C/instm/NSText/baseWritingDirection
+Objective-C/instm/NSCell/baseWritingDirection
+C++/cl/-/basic_ios
+C/func/-/baudrate
+C/func/-/bcmp
+C/func/-/bcopy
+C/econst/-/bdNamErr
+C/econst/-/bDoNotDisplay
+Objective-C/instm/NSTextView/becomeFirstResponder
+Objective-C/instm/NSResponder/becomeFirstResponder
+Objective-C/instm/NSWindow/becomeKeyWindow
+Objective-C/instm/NSWindow/becomeMainWindow
+Objective-C/instm/NSPanel/becomesKeyOnlyIfNeeded
+C/func/-/beep
+JavaScript/cl/-/BeforeLoadEvent
+JavaScript/data/DOMWindow/BeforeLoadEvent
+Objective-C/clm/CATransaction/begin
+Objective-C/instm/XGAuthenticator/beginAuthentication:
+C/func/-/BeginCGContextForApplicationDockTile
+Objective-C/intfm/NSDiscardableContent/beginContentAccess
+Objective-C/instm/NSView/beginDocument
+Objective-C/instm/NSMutableAttributedString/beginEditing
+Objective-C/intfm/ApertureEditPlugIn/beginEditSession
+JavaScript/instm/ElementTimeControl/beginElement
+JavaScript/instm/ElementTimeControl/beginElementAt
+Objective-C/instm/NSEntityMigrationPolicy/beginEntityMapping:manager:error:
+Objective-C/instm/PDFDocument/beginFindString:withOptions:
+Objective-C/instm/PDFDocument/beginFindStrings:withOptions:
+Objective-C/instm/NSOpenPanel/beginForDirectory:file:types:modelessDelegate:didEndSelector:contextInfo:
+Objective-C/instm/CARenderer/beginFrameAtTime:timeStamp:
+Objective-C/instm/NSResponder/beginGestureWithEvent:
+Objective-C/clm/NSAnimationContext/beginGrouping
+Objective-C/instm/NSTypesetter/beginLineWithGlyphAtIndex:
+Objective-C/instm/NSURLHandle/beginLoadInBackground
+Objective-C/instm/ABPerson/beginLoadingImageDataForClient:
+C/func/-/BeginMediaEdits
+Objective-C/instm/NSApplication/beginModalSessionForWindow:
+Objective-C/instm/NSApplication/beginModalSessionForWindow:relativeToWindow:
+Objective-C/instm/NSView/beginPageInRect:atPlacement:
+Objective-C/instm/NSTypesetter/beginParagraph
+JavaScript/instm/CanvasRenderingContext2D/beginPath
+Objective-C/instm/IKPictureTaker/beginPictureTakerSheetForWindow:withDelegate:didEndSelector:contextInfo:
+Objective-C/instm/IKPictureTaker/beginPictureTakerWithDelegate:didEndSelector:contextInfo:
+Objective-C/intfm/QLPreviewPanelController/beginPreviewPanelControl:
+Objective-C/instm/DRBurnProgressPanel/beginProgressPanelForBurn:layout:
+Objective-C/instm/DREraseProgressPanel/beginProgressPanelForErase:
+Objective-C/instm/DRBurnProgressPanel/beginProgressSheetForBurn:layout:modalForWindow:
+Objective-C/instm/DREraseProgressPanel/beginProgressSheetForErase:modalForWindow:
+C/func/-/BeginQDContextForApplicationDockTile
+Objective-C/clm/ISyncSession/beginSessionInBackgroundWithClient:entityNames:target:selector:
+Objective-C/clm/ISyncSession/beginSessionInBackgroundWithClient:entityNames:target:selector:lastAnchors:
+Objective-C/clm/ISyncSession/beginSessionWithClient:entityNames:beforeDate:
+Objective-C/clm/ISyncSession/beginSessionWithClient:entityNames:beforeDate:lastAnchors:
+Objective-C/instm/DRSetupPanel/beginSetupSheetForWindow:modalDelegate:didEndSelector:contextInfo:
+Objective-C/instm/NSApplication/beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:
+Objective-C/instm/SFKeychainSavePanel/beginSheetForDirectory:file:modalForWindow:modalDelegate:didEndSelector:contextInfo:
+Objective-C/instm/NSSavePanel/beginSheetForDirectory:file:modalForWindow:modalDelegate:didEndSelector:contextInfo:
+Objective-C/instm/NSOpenPanel/beginSheetForDirectory:file:types:modalForWindow:modalDelegate:didEndSelector:contextInfo:
+Objective-C/instm/SFCertificatePanel/beginSheetForWindow:modalDelegate:didEndSelector:contextInfo:certificates:showGroup:
+Objective-C/instm/SFChooseIdentityPanel/beginSheetForWindow:modalDelegate:didEndSelector:contextInfo:identities:message:
+Objective-C/instm/SFKeychainSettingsPanel/beginSheetForWindow:modalDelegate:didEndSelector:contextInfo:settings:keychain:
+Objective-C/instm/SFCertificateTrustPanel/beginSheetForWindow:modalDelegate:didEndSelector:contextInfo:trust:message:
+Objective-C/instm/NSSavePanel/beginSheetModalForWindow:completionHandler:
+Objective-C/instm/ABIdentityPicker/beginSheetModalForWindow:modalDelegate:didEndSelector:contextInfo:
+Objective-C/instm/NSAlert/beginSheetModalForWindow:modalDelegate:didEndSelector:contextInfo:
+Objective-C/instm/IOBluetoothServiceBrowserController/beginSheetModalForWindow:modalDelegate:didEndSelector:contextInfo:
+Objective-C/instm/IOBluetoothDeviceSelectorController/beginSheetModalForWindow:modalDelegate:didEndSelector:contextInfo:
+Objective-C/instm/IOBluetoothObjectPushUIController/beginSheetModalForWindow:modalDelegate:didEndSelector:contextInfo:
+Objective-C/instm/IKFilterBrowserPanel/beginSheetWithOptions:modalForWindow:modalDelegate:didEndSelector:contextInfo:
+Objective-C/instm/NSPageLayout/beginSheetWithPrintInfo:modalForWindow:delegate:didEndSelector:contextInfo:
+Objective-C/instm/NSPrintPanel/beginSheetWithPrintInfo:modalForWindow:delegate:didEndSelector:contextInfo:
+Objective-C/intfp/CAMediaTiming/beginTime
+Objective-C/intfm/CAMediaTiming/beginTime
+Objective-C/instm/NSUndoManager/beginUndoGrouping
+Objective-C/instm/NSSavePanel/beginWithCompletionHandler:
+Objective-C/instm/IKFilterBrowserPanel/beginWithOptions:modelessDelegate:didEndSelector:contextInfo:
+C/func/-/ber_alloc_t
+C/func/-/ber_bvarray_add
+C/func/-/ber_bvarray_free
+C/func/-/ber_bvdup
+C/func/-/ber_bvecadd
+C/func/-/ber_bvecfree
+C/func/-/ber_bvfree
+C/func/-/ber_bvstr
+C/func/-/ber_bvstrdup
+C/func/-/ber_dupbv
+C/func/-/ber_first_element
+C/func/-/ber_flush
+C/func/-/ber_flush2
+C/func/-/ber_free
+C/func/-/ber_get_bitstring
+C/func/-/ber_get_bitstringa
+C/func/-/ber_get_boolean
+C/func/-/ber_get_enum
+C/func/-/ber_get_int
+C/func/-/ber_get_next
+C/func/-/ber_get_null
+C/func/-/ber_get_stringa
+C/func/-/ber_get_stringal
+C/func/-/ber_get_stringb
+C/func/-/ber_get_stringbv
+C/func/-/ber_init
+C/func/-/ber_init2
+C/func/-/ber_memalloc
+C/func/-/ber_memcalloc
+C/func/-/ber_memfree
+C/func/-/ber_memrealloc
+C/func/-/ber_memvfree
+C/func/-/ber_next_element
+C/func/-/ber_peek_tag
+C/func/-/ber_printf
+C/func/-/ber_put_bitstring
+C/func/-/ber_put_boolean
+C/func/-/ber_put_enum
+C/func/-/ber_put_int
+C/func/-/ber_put_null
+C/func/-/ber_put_ostring
+C/func/-/ber_put_seq
+C/func/-/ber_put_set
+C/func/-/ber_put_string
+C/func/-/ber_scanf
+C/func/-/ber_skip_tag
+C/func/-/ber_sockbuf_add_io
+C/func/-/ber_sockbuf_alloc
+C/func/-/ber_sockbuf_ctrl
+C/func/-/ber_sockbuf_free
+C/func/-/ber_sockbuf_remove_io
+C/func/-/ber_start_seq
+C/func/-/ber_start_set
+C/func/-/ber_str2bv
+Objective-C/instm/NSImage/bestRepresentationForDevice:
+Objective-C/instm/NSImage/bestRepresentationForRect:context:hints:
+Objective-C/instm/NSButton/bezelStyle
+Objective-C/instm/NSButtonCell/bezelStyle
+Objective-C/instm/NSTextField/bezelStyle
+Objective-C/instm/NSTextFieldCell/bezelStyle
+JavaScript/instm/CanvasRenderingContext2D/bezierCurveTo
+Objective-C/clm/NSBezierPath/bezierPath
+Objective-C/instm/NSBezierPath/bezierPathByFlatteningPath
+Objective-C/instm/NSBezierPath/bezierPathByReversingPath
+Objective-C/clm/NSBezierPath/bezierPathWithOvalInRect:
+Objective-C/clm/NSBezierPath/bezierPathWithRect:
+Objective-C/clm/NSBezierPath/bezierPathWithRoundedRect:xRadius:yRadius:
+C/func/-/BF_cbc_encrypt
+C/func/-/BF_cfb64_encrypt
+C/func/-/BF_decrypt
+C/func/-/BF_ecb_encrypt
+C/func/-/BF_encrypt
+C/func/-/BF_ofb64_encrypt
+C/func/-/BF_options
+C/func/-/BF_set_key
+JavaScript/data/HTMLTableCellElement/bgColor
+JavaScript/data/HTMLTableElement/bgColor
+JavaScript/data/HTMLDocument/bgColor
+JavaScript/data/HTMLBodyElement/bgColor
+JavaScript/data/HTMLTableRowElement/bgColor
+C/econst/-/bHasBlankAccessPrivileges
+C/econst/-/bHasBTreeMgr
+C/econst/-/bHasCatSearch
+C/econst/-/bHasCopyFile
+C/econst/-/bHasDesktopMgr
+C/econst/-/bHasExtFSVol
+C/econst/-/bHasFileIDs
+C/econst/-/bHasFolderLock
+C/econst/-/bHasMoveRename
+C/econst/-/bHasOpenDeny
+C/econst/-/bHasPersonalAccessPrivileges
+C/econst/-/bHasShortName
+C/econst/-/bHasUserGroupList
+Objective-C/instm/NSATSTypesetter/bidiProcessingEnabled
+Objective-C/instm/NSTypesetter/bidiProcessingEnabled
+C/tdef/-/BigEndianFixed
+C/tdef/-/BigEndianLong
+C/tdef/-/BigEndianOStype
+C/tdef/-/BigEndianShort
+C/tdef/-/BigEndianUnsignedFixed
+C/tdef/-/BigEndianUnsignedLong
+C/tdef/-/BigEndianUnsignedShort
+C++/macro/-/bigOutputSegment
+C/tdef/-/BigSInt16
+C/tdef/-/BigSInt32
+C/tdef/-/BigSInt64
+C/tdef/-/BigUInt16
+C/tdef/-/BigUInt32
+C/tdef/-/BigUInt64
+Objective-C/instm/FxTexture/bind
+C/func/-/bind
+Objective-C/instm/NSObject/bind:toObject:withKeyPath:options:
+JavaScript/instm/WebGLRenderingContext/bindAttribLocation
+JavaScript/instm/WebGLRenderingContext/bindBuffer
+JavaScript/instm/WebGLRenderingContext/bindFramebuffer
+JavaScript/instm/WebGLRenderingContext/bindRenderbuffer
+C/func/-/bindresvport
+C/func/-/bindresvport_sa
+JavaScript/instm/WebGLRenderingContext/bindTexture
+Objective-C/intfm/QCPlugInInputImageSource/bindTextureRepresentationToCGLContext:textureUnit:normalizeCoordinates:
+C/func/-/bio
+C/func/-/BIO_append_filename
+C/func/-/BIO_callback_ctrl
+C/func/-/BIO_ctrl
+C/func/-/BIO_ctrl_get_read_request
+C/func/-/BIO_ctrl_get_write_guarantee
+C/func/-/BIO_ctrl_pending
+C/func/-/BIO_ctrl_reset_read_request
+C/func/-/BIO_ctrl_wpending
+C/func/-/BIO_debug_callback
+C/func/-/BIO_destroy_bio_pair
+C/func/-/BIO_do_accept
+C/func/-/BIO_do_connect
+C/func/-/BIO_eof
+C/func/-/BIO_f_base64
+C/func/-/BIO_f_buffer
+C/func/-/BIO_f_cipher
+C/func/-/BIO_f_md
+C/func/-/BIO_f_null
+C/func/-/BIO_f_ssl
+C/func/-/BIO_find_type
+C/func/-/BIO_flush
+C/func/-/BIO_free
+C/func/-/BIO_free_all
+C/func/-/BIO_get_accept_port
+C/func/-/BIO_get_bind_mode
+C/func/-/BIO_get_callback
+C/func/-/BIO_get_callback_arg
+C/func/-/BIO_get_cipher_ctx
+C/func/-/BIO_get_cipher_status
+C/func/-/BIO_get_close
+C/func/-/BIO_get_conn_hostname
+C/func/-/BIO_get_conn_int_port
+C/func/-/BIO_get_conn_ip
+C/func/-/BIO_get_conn_port
+C/func/-/BIO_get_fd
+C/func/-/BIO_get_fp
+C/func/-/BIO_get_info_callback
+C/func/-/BIO_get_md
+C/func/-/BIO_get_md_ctx
+C/func/-/BIO_get_mem_data
+C/func/-/BIO_get_mem_ptr
+C/func/-/BIO_get_num_renegotiates
+C/func/-/BIO_get_read_request
+C/func/-/BIO_get_retry_BIO
+C/func/-/BIO_get_retry_reason
+C/func/-/BIO_get_ssl
+C/func/-/BIO_get_write_buf_size
+C/func/-/BIO_get_write_guarantee
+C/func/-/BIO_gets
+C/func/-/BIO_int_ctrl
+C/func/-/BIO_make_bio_pair
+C/func/-/BIO_new
+C/func/-/BIO_new_accept
+C/func/-/BIO_new_bio_pair
+C/func/-/BIO_new_buffer_ssl_connect
+C/func/-/BIO_new_connect
+C/func/-/BIO_new_fd
+C/func/-/BIO_new_file
+C/func/-/BIO_new_fp
+C/func/-/BIO_new_mem_buf
+C/func/-/BIO_new_socket
+C/func/-/BIO_new_ssl
+C/func/-/BIO_new_ssl_connect
+C/func/-/BIO_next
+C/func/-/BIO_pending
+C/func/-/BIO_pop
+C/func/-/BIO_ptr_ctrl
+C/func/-/BIO_push
+C/func/-/BIO_puts
+C/func/-/BIO_read
+C/func/-/BIO_read_filename
+C/func/-/BIO_reset
+C/func/-/BIO_retry_type
+C/func/-/BIO_rw_filename
+C/func/-/BIO_s_accept
+C/func/-/BIO_s_bio
+C/func/-/BIO_s_connect
+C/func/-/BIO_s_fd
+C/func/-/BIO_s_file
+C/func/-/BIO_s_mem
+C/func/-/BIO_s_null
+C/func/-/BIO_s_socket
+C/func/-/BIO_seek
+C/func/-/BIO_set
+C/func/-/BIO_set_accept_bios
+C/func/-/BIO_set_accept_port
+C/func/-/BIO_set_bind_mode
+C/func/-/BIO_set_callback
+C/func/-/BIO_set_callback_arg
+C/func/-/BIO_set_cipher
+C/func/-/BIO_set_close
+C/func/-/BIO_set_conn_hostname
+C/func/-/BIO_set_conn_int_port
+C/func/-/BIO_set_conn_ip
+C/func/-/BIO_set_conn_port
+C/func/-/BIO_set_fd
+C/func/-/BIO_set_fp
+C/func/-/BIO_set_info_callback
+C/func/-/BIO_set_md
+C/func/-/BIO_set_mem_buf
+C/func/-/BIO_set_mem_eof_return
+C/func/-/BIO_set_nbio
+C/func/-/BIO_set_nbio_accept
+C/func/-/BIO_set_ssl
+C/func/-/BIO_set_ssl_mode
+C/func/-/BIO_set_ssl_renegotiate_bytes
+C/func/-/BIO_set_ssl_renegotiate_timeout
+C/func/-/BIO_set_write_buf_size
+C/func/-/BIO_should_io_special
+C/func/-/BIO_should_read
+C/func/-/BIO_should_retry
+C/func/-/BIO_should_write
+C/func/-/BIO_shutdown_wr
+C/func/-/BIO_ssl_copy_session_id
+C/func/-/BIO_ssl_shutdown
+C/func/-/BIO_tell
+C/func/-/BIO_vfree
+C/func/-/BIO_wpending
+C/func/-/BIO_write
+C/func/-/BIO_write_filename
+Objective-C/instp/CAEmitterCell/birthRate
+Objective-C/instm/CAEmitterLayer/birthRate
+Objective-C/instp/CAEmitterLayer/birthRate
+Objective-C/instm/CAEmitterCell/birthRate
+C/econst/-/bIsAutoMounted
+C/econst/-/bIsCasePreserving
+C/econst/-/bIsCaseSensitive
+C/econst/-/bIsEjectable
+C/econst/-/bIsOnExternalBus
+C/econst/-/bIsOnInternalBus
+C/econst/-/bIsRemovable
+C/func/-/bit_alloc
+C/func/-/bit_clear
+C/func/-/bit_decl
+C/func/-/bit_ffc
+C/func/-/bit_ffs
+C/func/-/bit_nclear
+C/func/-/bit_nset
+C/func/-/bit_set
+C/func/-/bit_test
+C/func/-/BitmapBitOrder
+Objective-C/instm/NSBitmapImageRep/bitmapData
+Objective-C/instm/NSBitmapImageRep/bitmapFormat
+Objective-C/instm/NSBitmapImageRep/bitmapImageRepByConvertingToColorSpace:renderingIntent:
+Objective-C/instm/NSBitmapImageRep/bitmapImageRepByRetaggingWithColorSpace:
+Objective-C/instm/NSView/bitmapImageRepForCachingDisplayInRect:
+C/func/-/BitmapPad
+Objective-C/instm/NSCharacterSet/bitmapRepresentation
+C/func/-/BitmapUnit
+C++/instm/IOATADevConfig/bitSigToNumeric
+Objective-C/instm/NSBitmapImageRep/bitsPerPixel
+Objective-C/instm/NSImageRep/bitsPerSample
+C/func/-/bitstr_size
+C/func/-/bitstring
+C/func/-/bkgd
+C/func/-/bkgdset
+C/func/-/bkgrnd
+C/func/-/bkgrndset
+C/econst/-/bL2PCanMapFileBlocks
+Objective-C/clm/NSColor/blackColor
+Objective-C/instm/NSColor/blackComponent
+C/func/-/BlackPixel
+C/func/-/BlackPixelOfScreen
+C/econst/-/blend
+JavaScript/clconst/WebGLRenderingContext/BLEND
+JavaScript/clconst/WebGLRenderingContext/BLEND_COLOR
+JavaScript/clconst/WebGLRenderingContext/BLEND_DST_ALPHA
+JavaScript/clconst/WebGLRenderingContext/BLEND_DST_RGB
+JavaScript/clconst/WebGLRenderingContext/BLEND_EQUATION
+JavaScript/clconst/WebGLRenderingContext/BLEND_EQUATION_ALPHA
+JavaScript/clconst/WebGLRenderingContext/BLEND_EQUATION_RGB
+JavaScript/clconst/WebGLRenderingContext/BLEND_SRC_ALPHA
+JavaScript/clconst/WebGLRenderingContext/BLEND_SRC_RGB
+JavaScript/instm/WebGLRenderingContext/blendColor
+Objective-C/instm/NSColor/blendedColorWithFraction:ofColor:
+JavaScript/instm/WebGLRenderingContext/blendEquation
+JavaScript/instm/WebGLRenderingContext/blendEquationSeparate
+JavaScript/instm/WebGLRenderingContext/blendFunc
+JavaScript/instm/WebGLRenderingContext/blendFuncSeparate
+C/econst/-/bLimitFCBs
+JavaScript/cl/-/Blob
+JavaScript/data/DOMWindow/Blob
+C/econst/-/bLocalWList
+Objective-C/clm/NSBlockOperation/blockOperationWithBlock:
+Objective-C/instm/NSSpeechRecognizer/blocksOtherRecognizers
+C/func/-/blowfish
+Objective-C/instm/CIColor/blue
+JavaScript/data/RGBColor/blue
+JavaScript/clconst/WebGLRenderingContext/BLUE_BITS
+Objective-C/clm/NSColor/blueColor
+Objective-C/instm/NSColor/blueComponent
+Objective-C/instm/CAEmitterCell/blueRange
+Objective-C/instp/CAEmitterCell/blueRange
+Objective-C/instm/CAEmitterCell/blueSpeed
+Objective-C/instp/CAEmitterCell/blueSpeed
+C/tag/-/BluetoothHCIUSBDeviceMatchingConstants
+JavaScript/instm/DOMWindow/blur
+JavaScript/clconst/Event/BLUR
+JavaScript/instm/Element/blur
+C/tag/-/bm12Cursor
+C/tag/-/bm18Cursor
+C/tag/-/bm34Cursor
+C/tag/-/bm38Cursor
+C/func/-/bn
+C/func/-/BN_add
+C/func/-/BN_add_word
+C/func/-/bn_add_words
+C/func/-/BN_bin2bn
+C/func/-/BN_BLINDING_convert
+C/func/-/BN_BLINDING_convert_ex
+C/func/-/BN_BLINDING_create_param
+C/func/-/BN_BLINDING_free
+C/func/-/BN_BLINDING_get_flags
+C/func/-/BN_BLINDING_get_thread_id
+C/func/-/BN_BLINDING_invert
+C/func/-/BN_BLINDING_invert_ex
+C/func/-/BN_BLINDING_new
+C/func/-/BN_BLINDING_set_flags
+C/func/-/BN_BLINDING_set_thread_id
+C/func/-/BN_BLINDING_update
+C/func/-/BN_bn2bin
+C/func/-/BN_bn2dec
+C/func/-/BN_bn2hex
+C/func/-/BN_bn2mpi
+C/func/-/bn_check_top
+C/func/-/BN_clear
+C/func/-/BN_clear_bit
+C/func/-/BN_clear_free
+C/func/-/BN_cmp
+C/func/-/bn_cmp_words
+C/func/-/BN_copy
+C/func/-/BN_CTX_end
+C/func/-/BN_CTX_free
+C/func/-/BN_CTX_get
+C/func/-/BN_CTX_init
+C/func/-/BN_CTX_new
+C/func/-/BN_CTX_start
+C/func/-/BN_dec2bn
+C/func/-/BN_div
+C/func/-/BN_div_recp
+C/func/-/BN_div_word
+C/func/-/bn_div_words
+C/func/-/bn_dump
+C/func/-/BN_dup
+C/func/-/BN_exp
+C/func/-/bn_expand
+C/func/-/bn_expand2
+C/func/-/bn_fix_top
+C/func/-/BN_free
+C/func/-/BN_from_montgomery
+C/func/-/BN_gcd
+C/func/-/BN_generate_prime
+C/func/-/BN_get_word
+C/func/-/BN_hex2bn
+C/func/-/BN_init
+C/func/-/bn_internal
+C/func/-/BN_is_bit_set
+C/func/-/BN_is_negative
+C/func/-/BN_is_odd
+C/func/-/BN_is_one
+C/func/-/BN_is_prime
+C/func/-/BN_is_prime_fasttest
+C/func/-/BN_is_word
+C/func/-/BN_is_zero
+C/func/-/BN_lshift
+C/func/-/BN_lshift1
+C/func/-/BN_mask_bits
+C/func/-/BN_mod
+C/func/-/BN_mod_add
+C/func/-/BN_mod_exp
+C/func/-/BN_mod_inverse
+C/func/-/BN_mod_mul
+C/func/-/BN_mod_mul_montgomery
+C/func/-/BN_mod_mul_reciprocal
+C/func/-/BN_mod_sqr
+C/func/-/BN_mod_sub
+C/func/-/BN_mod_word
+C/func/-/BN_MONT_CTX_copy
+C/func/-/BN_MONT_CTX_free
+C/func/-/BN_MONT_CTX_init
+C/func/-/BN_MONT_CTX_new
+C/func/-/BN_MONT_CTX_set
+C/func/-/BN_mpi2bn
+C/func/-/BN_mul
+C/func/-/bn_mul_add_words
+C/func/-/bn_mul_comba4
+C/func/-/bn_mul_comba8
+C/func/-/bn_mul_high
+C/func/-/bn_mul_low_normal
+C/func/-/bn_mul_low_recursive
+C/func/-/bn_mul_normal
+C/func/-/bn_mul_part_recursive
+C/func/-/bn_mul_recursive
+C/func/-/BN_mul_word
+C/func/-/bn_mul_words
+C/func/-/BN_new
+C/func/-/BN_nnmod
+C/func/-/BN_num_bits
+C/func/-/BN_num_bits_word
+C/func/-/BN_num_bytes
+C/func/-/BN_one
+C/func/-/BN_print
+C/func/-/BN_print_fp
+C/func/-/BN_pseudo_rand
+C/func/-/BN_pseudo_rand_range
+C/func/-/BN_rand
+C/func/-/BN_rand_range
+C/func/-/BN_RECP_CTX_free
+C/func/-/BN_RECP_CTX_init
+C/func/-/BN_RECP_CTX_new
+C/func/-/BN_RECP_CTX_set
+C/func/-/BN_rshift
+C/func/-/BN_rshift1
+C/func/-/BN_set_bit
+C/func/-/bn_set_high
+C/func/-/bn_set_low
+C/func/-/bn_set_max
+C/func/-/BN_set_negative
+C/func/-/BN_set_word
+C/func/-/BN_sqr
+C/func/-/bn_sqr_comba4
+C/func/-/bn_sqr_comba8
+C/func/-/bn_sqr_normal
+C/func/-/bn_sqr_recursive
+C/func/-/bn_sqr_words
+C/func/-/BN_sub
+C/func/-/BN_sub_word
+C/func/-/bn_sub_words
+C/func/-/BN_swap
+C/func/-/BN_to_montgomery
+C/func/-/BN_ucmp
+C/func/-/BN_value_one
+C/func/-/bn_wexpand
+C/func/-/BN_zero
+C/econst/-/bNoBootBlks
+C/econst/-/bNoDeskItems
+C/econst/-/bNoLclSync
+C/econst/-/bNoMiniFndr
+C/econst/-/bNoRootTimes
+C/econst/-/bNoSwitchTo
+C/econst/-/bNoSysDir
+C/econst/-/bNoVNEdit
+C/econst/-/bNoVolumeSizes
+JavaScript/data/Document/body
+Objective-C/clm/NSFont/boldSystemFontOfSize:
+Objective-C/clm/NSURL/bookmarkDataWithContentsOfURL:error:
+Objective-C/instm/NSURL/bookmarkDataWithOptions:includingResourceValuesForKeys:relativeToURL:error:
+C/tdef/-/BOOL
+JavaScript/clconst/WebGLRenderingContext/BOOL
+JavaScript/clconst/WebGLRenderingContext/BOOL_VEC2
+JavaScript/clconst/WebGLRenderingContext/BOOL_VEC3
+JavaScript/clconst/WebGLRenderingContext/BOOL_VEC4
+JavaScript/data/HTMLInputElement/boolean
+JavaScript/data/HTMLDataGridElement/boolean
+JavaScript/data/HTMLSelectElement/boolean
+JavaScript/clconst/XPathResult/BOOLEAN_TYPE
+Objective-C/instm/NSPrinter/booleanForKey:inTable:
+Objective-C/instm/NSAppleEventDescriptor/booleanValue
+JavaScript/data/XPathResult/booleanValue
+Objective-C/instm/NSUserDefaults/boolForKey:
+Objective-C/instm/NSNumber/boolValue
+Objective-C/instm/NSString/boolValue
+Objective-C/instm/PDFAnnotation/border
+C/func/-/border
+JavaScript/data/HTMLObjectElement/border
+JavaScript/data/HTMLTableElement/border
+JavaScript/data/HTMLImageElement/border
+C/func/-/border_set
+Objective-C/instm/NSBox/borderColor
+Objective-C/instm/CALayer/borderColor
+Objective-C/instp/CALayer/borderColor
+Objective-C/instm/NSTextBlock/borderColorForEdge:
+Objective-C/instm/NSBox/borderRect
+Objective-C/instm/NSScrollView/borderType
+Objective-C/instm/NSBox/borderType
+Objective-C/instm/NSBox/borderWidth
+Objective-C/instp/CALayer/borderWidth
+Objective-C/instm/CALayer/borderWidth
+JavaScript/clconst/OverflowEvent/BOTH
+JavaScript/data/ClientRect/bottom
+JavaScript/data/Rect/bottom
+Objective-C/instm/NSPrintInfo/bottomMargin
+Objective-C/instm/NSEPSImageRep/boundingBox
+Objective-C/instm/NSPICTImageRep/boundingBox
+Objective-C/instm/DOMNode/boundingBox
+Objective-C/instm/NSATSTypesetter/boundingBoxForControlGlyphAtIndex:forTextContainer:proposedLineFragment:glyphPosition:characterIndex:
+Objective-C/instm/NSTypesetter/boundingBoxForControlGlyphAtIndex:forTextContainer:proposedLineFragment:glyphPosition:characterIndex:
+Objective-C/instm/NSFont/boundingRectForFont
+Objective-C/instm/NSFont/boundingRectForGlyph:
+Objective-C/instm/NSLayoutManager/boundingRectForGlyphRange:inTextContainer:
+Objective-C/instm/NSAttributedString/boundingRectWithSize:options:
+Objective-C/instm/NSString/boundingRectWithSize:options:attributes:
+Objective-C/instm/NSBezierPath/bounds
+Objective-C/intfm/QCPlugInContext/bounds
+Objective-C/instm/NSPDFImageRep/bounds
+Objective-C/instm/PDFAnnotation/bounds
+Objective-C/instp/CARenderer/bounds
+Objective-C/instm/CARenderer/bounds
+Objective-C/instm/NSView/bounds
+Objective-C/instp/CALayer/bounds
+Objective-C/instm/CALayer/bounds
+Objective-C/instm/PDFPage/boundsForBox:
+Objective-C/instm/PDFSelection/boundsForPage:
+Objective-C/instm/NSTextTable/boundsRectForBlock:contentRect:inRect:textContainer:characterRange:
+Objective-C/instm/NSTextBlock/boundsRectForContentRect:inRect:textContainer:characterRange:
+Objective-C/instm/NSLayoutManager/boundsRectForTextBlock:atIndex:effectiveRange:
+Objective-C/instm/NSLayoutManager/boundsRectForTextBlock:glyphRange:
+Objective-C/instm/NSView/boundsRotation
+C/func/-/box
+C/func/-/box_set
+Objective-C/instm/NSBox/boxType
+C/econst/-/bParentModDateChanges
+C/tag/-/BPF
+C/func/-/bpf_attach
+C/tdef/-/BPF_FUNC
+C/econst/BPF/BPF_MODE_DISABLED
+C/econst/BPF/BPF_MODE_INPUT
+C/econst/BPF/BPF_MODE_INPUT_OUTPUT
+C/econst/BPF/BPF_MODE_OUTPUT
+C/tdef/-/bpf_packet_func
+C/tdef/-/bpf_send_func
+C/tdef/-/bpf_tap_func
+C/func/-/bpf_tap_in
+C/tdef/-/bpf_tap_mode
+C/func/-/bpf_tap_out
+C/func/-/bpfattach
+Objective-C/clm/NSBrowserCell/branchImage
+Objective-C/instm/NSDistributedLock/breakLock
+Objective-C/instm/NSTextView/breakUndoCoalescing
+C++/instm/IOBlockStorageDriver/breakUpRequest
+Objective-C/instm/NSColor/brightnessComponent
+JavaScript/instm/InspectorFrontendHost/bringToFront
+C/func/-/brk
+Objective-C/instm/NSCondition/broadcast
+Objective-C/clm/NSColor/brownColor
+Objective-C/clm/IOBluetoothServiceBrowserController/browseDevices:options:
+Objective-C/clm/IOBluetoothServiceBrowserController/browseDevicesAsSheetForWindow:options:window:
+Objective-C/intfm/NSBrowserDelegate/browser:acceptDrop:atRow:column:dropOperation:
+Objective-C/intfm/NSBrowserDelegate/browser:canDragRowsWithIndexes:inColumn:withEvent:
+Objective-C/intfm/NSBrowserDelegate/browser:child:ofItem:
+Objective-C/intfm/NSBrowserDelegate/browser:createRowsForColumn:inMatrix:
+Objective-C/intfm/NSBrowserDelegate/browser:didChangeLastColumn:toColumn:
+Objective-C/intfm/NSBrowserDelegate/browser:draggingImageForRowsWithIndexes:inColumn:withEvent:offset:
+Objective-C/intfm/NSBrowserDelegate/browser:headerViewControllerForItem:
+Objective-C/intfm/NSBrowserDelegate/browser:heightOfRow:inColumn:
+Objective-C/intfm/NSBrowserDelegate/browser:isColumnValid:
+Objective-C/intfm/NSBrowserDelegate/browser:isLeafItem:
+Objective-C/intfm/NSBrowserDelegate/browser:namesOfPromisedFilesDroppedAtDestination:forDraggedRowsWithIndexes:inColumn:
+Objective-C/intfm/NSBrowserDelegate/browser:nextTypeSelectMatchFromRow:toRow:inColumn:forString:
+Objective-C/intfm/NSBrowserDelegate/browser:numberOfChildrenOfItem:
+Objective-C/intfm/NSBrowserDelegate/browser:numberOfRowsInColumn:
+Objective-C/intfm/NSBrowserDelegate/browser:objectValueForItem:
+Objective-C/intfm/NSBrowserDelegate/browser:previewViewControllerForLeafItem:
+Objective-C/intfm/NSBrowserDelegate/browser:selectCellWithString:inColumn:
+Objective-C/intfm/NSBrowserDelegate/browser:selectionIndexesForProposedSelection:inColumn:
+Objective-C/intfm/NSBrowserDelegate/browser:selectRow:inColumn:
+Objective-C/intfm/NSBrowserDelegate/browser:setObjectValue:forItem:
+Objective-C/intfm/NSBrowserDelegate/browser:shouldEditItem:
+Objective-C/intfm/NSBrowserDelegate/browser:shouldShowCellExpansionForRow:column:
+Objective-C/intfm/NSBrowserDelegate/browser:shouldSizeColumn:forUserResize:toWidth:
+Objective-C/intfm/NSBrowserDelegate/browser:shouldTypeSelectForEvent:withCurrentSearchString:
+Objective-C/intfm/NSBrowserDelegate/browser:sizeToFitWidthOfColumn:
+Objective-C/intfm/NSBrowserDelegate/browser:titleOfColumn:
+Objective-C/intfm/NSBrowserDelegate/browser:typeSelectStringForRow:inColumn:
+Objective-C/intfm/NSBrowserDelegate/browser:validateDrop:proposedRow:column:dropOperation:
+Objective-C/intfm/NSBrowserDelegate/browser:willDisplayCell:atRow:column:
+Objective-C/intfm/NSBrowserDelegate/browser:writeRowsWithIndexes:inColumn:toPasteboard:
+Objective-C/intfm/NSBrowserDelegate/browserColumnConfigurationDidChange:
+Objective-C/intfm/NSBrowserDelegate/browserDidScroll:
+Objective-C/intfm/NSBrowserDelegate/browserWillScroll:
+C/func/-/bsd_signal
+Objective-C/instm/DRDevice(StatusConvenience)/bsdName
+C/func/-/bsearch
+C/func/-/bsearch_b
+Objective-C/instp/CWNetwork/bssid
+Objective-C/instp/CWInterface/bssid
+Objective-C/instp/CWInterface/bssidData
+Objective-C/instp/CWNetwork/bssidData
+C/func/-/bstring
+C/econst/-/bSupports2TBFiles
+C/econst/-/bSupportsAsyncRequests
+C/econst/-/bSupportsExclusiveLocks
+C/econst/-/bSupportsExtendedFileSecurity
+C/econst/-/bSupportsFSCatalogSearch
+C/econst/-/bSupportsFSExchangeObjects
+C/econst/-/bSupportsHFSPlusAPIs
+C/econst/-/bSupportsJournaling
+C/econst/-/bSupportsLongNames
+C/econst/-/bSupportsMultiScriptNames
+C/econst/-/bSupportsNamedForks
+C/econst/-/bSupportsSubtreeIterators
+C/econst/-/bSupportsSymbolicLinks
+C/econst/-/bSupportsTrashVolumeCache
+JavaScript/instm/DOMWindow/btoa
+C/func/-/btowc
+C/func/-/btowc_l
+C/func/-/btree
+C/econst/-/bTrshOffLine
+JavaScript/data/Event/bubbles
+JavaScript/clconst/Event/BUBBLING_PHASE
+C/func/-/buf_alloc
+C/func/-/buf_bawrite
+C/func/-/buf_bdwrite
+C/func/-/buf_biodone
+C/func/-/buf_biowait
+C/func/-/buf_blkno
+C/func/-/buf_bread
+C/func/-/buf_breadn
+C/func/-/buf_brelse
+C/func/-/buf_bwrite
+C/func/-/buf_callback
+C/func/-/buf_clear
+C/func/-/buf_clearflags
+C/func/-/buf_clone
+C/func/-/buf_count
+C/func/-/buf_dataptr
+C/func/-/buf_device
+C/func/-/buf_dirtyend
+C/func/-/buf_dirtyoff
+C/func/-/buf_drvdata
+C/func/-/buf_error
+C/func/-/buf_flags
+C/func/-/buf_flushdirtyblks
+C/func/-/buf_free
+C/func/-/buf_fromcache
+C/func/-/buf_fsprivate
+C/func/-/buf_fua
+C/func/-/buf_getblk
+C/func/-/buf_geteblk
+C/func/-/buf_invalblkno
+C/func/-/buf_invalidateblks
+C/func/-/buf_iterate
+C/func/-/buf_lblkno
+C/func/-/buf_map
+C/func/-/buf_markaged
+C/func/-/buf_markdelayed
+C/func/-/buf_markeintr
+C/func/-/buf_markfua
+C/func/-/buf_markinvalid
+C/func/-/BUF_MEM_free
+C/func/-/BUF_MEM_grow
+C/func/-/BUF_MEM_new
+C/func/-/buf_meta_bread
+C/func/-/buf_meta_breadn
+C/func/-/buf_proc
+C/func/-/buf_rcred
+C/func/-/buf_reset
+C/func/-/buf_resid
+C/func/-/buf_setblkno
+C/func/-/buf_setcallback
+C/func/-/buf_setcount
+C/func/-/buf_setdataptr
+C/func/-/buf_setdevice
+C/func/-/buf_setdirtyend
+C/func/-/buf_setdirtyoff
+C/func/-/buf_setdrvdata
+C/func/-/buf_seterror
+C/func/-/buf_setflags
+C/func/-/buf_setfsprivate
+C/func/-/buf_setlblkno
+C/func/-/buf_setresid
+C/func/-/buf_setsize
+C/func/-/buf_setupl
+C/func/-/buf_setvnode
+C/func/-/buf_size
+C/func/-/buf_strategy
+C/func/-/BUF_strdup
+C/func/-/buf_unmap
+C/func/-/buf_upl
+C/func/-/buf_uploffset
+C/func/-/buf_valid
+C/func/-/buf_vnode
+C/func/-/buf_wcred
+C/func/-/buffer
+JavaScript/data/ArrayBufferView/buffer
+JavaScript/clconst/WebGLRenderingContext/BUFFER_SIZE
+JavaScript/clconst/WebGLRenderingContext/BUFFER_USAGE
+Objective-C/intfm/QCPlugInInputImageSource/bufferBaseAddress
+Objective-C/intfm/QCPlugInInputImageSource/bufferBytesPerRow
+Objective-C/intfm/QCPlugInInputImageSource/bufferColorSpace
+JavaScript/instm/WebGLRenderingContext/bufferData
+JavaScript/data/HTMLMediaElement/buffered
+JavaScript/data/WebSocket/bufferedAmount
+Objective-C/intfm/QCPlugInInputImageSource/bufferPixelFormat
+Objective-C/intfm/QCPlugInInputImageSource/bufferPixelsHigh
+Objective-C/intfm/QCPlugInInputImageSource/bufferPixelsWide
+JavaScript/instm/WebGLRenderingContext/bufferSubData
+C/econst/-/bufTooSmall
+Objective-C/instm/NSBundle/builtInPlugInsPath
+Objective-C/instm/NSBundle/builtInPlugInsURL
+Objective-C/instm/NSPreferencePane/bundle
+Objective-C/instm/AMBundleAction/bundle
+Objective-C/instm/IMKServer/bundle
+Objective-C/clm/NSBundle/bundleForClass:
+Objective-C/instm/NSScriptSuiteRegistry/bundleForSuite:
+Objective-C/intfm/IMKTextInput/bundleIdentifier
+Objective-C/instm/NSRunningApplication/bundleIdentifier
+Objective-C/instp/NSRunningApplication/bundleIdentifier
+Objective-C/instm/NSBundle/bundleIdentifier
+Objective-C/instm/NSBundle/bundlePath
+Objective-C/instm/NSRunningApplication/bundleURL
+Objective-C/instp/NSRunningApplication/bundleURL
+Objective-C/instm/NSBundle/bundleURL
+Objective-C/clm/NSBundle/bundleWithIdentifier:
+Objective-C/clm/NSBundle/bundleWithPath:
+Objective-C/clm/NSBundle/bundleWithURL:
+Objective-C/clm/DRBurn/burnForDevice:
+Objective-C/instm/DRBurnSetupPanel/burnObject
+Objective-C/instm/NSObject(DRBurnProgressPanelDelegateMethods)/burnProgressPanel:burnDidFinish:
+Objective-C/instm/NSObject(DRBurnProgressPanelDelegateMethods)/burnProgressPanelDidFinish:
+Objective-C/instm/NSObject(DRBurnProgressPanelDelegateMethods)/burnProgressPanelWillBegin:
+Objective-C/instm/DRBurnSetupPanel/burnSpeed:
+C++/instm/IOATAController/busCanDispatch
+JavaScript/data/MouseEvent/button
+Objective-C/instm/NSEvent/buttonMask
+Objective-C/instm/NSEvent/buttonNumber
+Objective-C/instm/SFAuthorizationPluginView/buttonPressed:
+Objective-C/instm/NSAlert/buttons
+Objective-C/instm/NSColorPicker/buttonToolTip
+Objective-C/intfm/NSColorPickingDefault/buttonToolTip
+JavaScript/clconst/WebGLRenderingContext/BYTE
+C/tdef/-/ByteCount
+JavaScript/data/ArrayBufferView/byteLength
+JavaScript/data/ArrayBuffer/byteLength
+JavaScript/data/ArrayBufferView/byteOffset
+C/func/-/byteorder
+Objective-C/instm/FxImage/bytes
+Objective-C/instm/IOBluetoothSDPUUID/bytes
+Objective-C/instm/NSData/bytes
+Objective-C/instm/QTSampleBuffer/bytesForAllSamples
+Objective-C/instm/NSBitmapImageRep/bytesPerPlane
+Objective-C/instm/NSBitmapImageRep/bytesPerRow
+Objective-C/instp/CABasicAnimation/byValue
+Objective-C/instm/CABasicAnimation/byValue
+C/func/-/bzero
+JavaScript/data/SVGMatrix/c
+JavaScript/data/WebKitCSSMatrix/c
+Objective-C/intf/-/CAAction
+Objective-C/cl/-/CAAnimation
+Objective-C/cl/-/CAAnimationGroup
+C/tdef/-/CAAutoresizingMask
+Objective-C/cl/-/CABasicAnimation
+C/func/-/cabs
+C/func/-/cabsf
+C/func/-/cabsl
+C/func/-/cache
+Objective-C/intfm/NSCacheDelegate/cache:willEvictObject:
+C/tag/-/cache_attributes_s
+C/tdef/-/cache_attributes_t
+C/tdef/-/cache_cost_t
+C/func/-/cache_create
+C/func/-/cache_destroy
+C/func/-/cache_enter
+C/func/-/cache_get_and_retain
+C/tdef/-/cache_key_hash_cb_t
+C/tdef/-/cache_key_is_equal_cb_t
+C/tdef/-/cache_key_retain_cb_t
+C/func/-/cache_lookup
+C/func/-/cache_purge
+C/func/-/cache_purge_negatives
+C/tdef/-/cache_release_cb_t
+C/func/-/cache_release_value
+C/func/-/cache_remove
+C/func/-/cache_remove_all
+C/func/-/cache_set_and_retain
+C/tdef/-/cache_t
+C/tdef/-/cache_value_make_nonpurgeable_cb_t
+C/tdef/-/cache_value_make_purgeable_cb_t
+C/tdef/-/cache_value_retain_cb_t
+Objective-C/instm/NSImage/cacheDepthMatchesImageDepth
+Objective-C/clm/NSURLHandle/cachedHandleForURL:
+Objective-C/instm/NSView/cacheDisplayInRect:toBitmapImageRep:
+Objective-C/instm/NSURLProtocol/cachedResponse
+Objective-C/instm/NSURLCache/cachedResponseForRequest:
+Objective-C/instm/NSWindow/cacheImageInRect:
+Objective-C/instm/NSImage/cacheMode
+Objective-C/instm/WebPreferences/cacheModel
+Objective-C/instm/NSAtomicStore/cacheNodeForObjectID:
+Objective-C/instm/NSAtomicStore/cacheNodes
+Objective-C/instm/NSURLRequest/cachePolicy
+Objective-C/instm/NSBezierPath/cachesBezierPath
+Objective-C/cl/-/CAConstraint
+C/tdef/-/CAConstraintAttribute
+Objective-C/cl/-/CAConstraintLayoutManager
+C/func/-/cacos
+C/func/-/cacosf
+C/func/-/cacosh
+C/func/-/cacoshf
+C/func/-/cacoshl
+C/func/-/cacosl
+C/func/-/CACurrentMediaTime
+C/tdef/-/CAEdgeAntialiasingMask
+Objective-C/cl/-/CAEmitterCell
+Objective-C/cl/-/CAEmitterLayer
+Objective-C/cl/-/CAGradientLayer
+Objective-C/cl/-/CAKeyframeAnimation
+Objective-C/cl/-/CalAlarm
+C/data/-/CalAlarmActionDisplay
+C/data/-/CalAlarmActionEmail
+C/data/-/CalAlarmActionProcedure
+C/data/-/CalAlarmActionSound
+Objective-C/cl/-/CalAttendee
+C/data/-/CalAttendeeStatusAccepted
+C/data/-/CalAttendeeStatusDeclined
+C/data/-/CalAttendeeStatusNeedsAction
+C/data/-/CalAttendeeStatusTentative
+Objective-C/cl/-/CALayer
+Objective-C/cat/-/CALayoutManager
+Objective-C/cl/-/CalCalendar
+Objective-C/cl/-/CalCalendarItem
+C/econst/-/CalCalendarNotEditableError
+C/econst/-/CalCalendarNotInRepository
+C/data/-/CalCalendarsChangedExternallyNotification
+C/data/-/CalCalendarsChangedNotification
+Objective-C/cl/-/CalCalendarStore
+C/data/-/CalCalendarStoreErrorDomain
+C/econst/-/CalCalendarTitleNotUniqueError
+C/data/-/CalCalendarTypeBirthday
+C/data/-/CalCalendarTypeCalDAV
+C/data/-/CalCalendarTypeExchange
+C/data/-/CalCalendarTypeIMAP
+C/data/-/CalCalendarTypeLocal
+C/data/-/CalCalendarTypeSubscription
+Objective-C/instm/NSCell/calcDrawInfo:
+Objective-C/instm/NSMenuItemCell/calcSize
+Objective-C/instm/NSControl/calcSize
+C/func/-/CalculateLPCMFlags
+Objective-C/intfm/DRFileDataProduction/calculateSizeOfFile:fork:estimating:
+Objective-C/instm/CAKeyframeAnimation/calculationMode
+Objective-C/instp/CAKeyframeAnimation/calculationMode
+C/econst/-/CalDateInvalidError
+C/data/-/CalDefaultRecurrenceInterval
+C/data/-/CalDeletedRecordsKey
+Objective-C/instp/CalCalendarItem/calendar
+Objective-C/instm/CalCalendarItem/calendar
+Objective-C/instm/NSDatePicker/calendar
+Objective-C/clm/CalCalendar/calendar
+Objective-C/instm/NSDateFormatter/calendar
+Objective-C/instm/NSDatePickerCell/calendar
+Objective-C/instm/NSCalendar/calendarIdentifier
+Objective-C/instm/CalCalendarStore/calendars
+Objective-C/instm/CalCalendarStore/calendarWithUID:
+Objective-C/cl/-/CalEvent
+C/data/-/CalEventsChangedExternallyNotification
+C/data/-/CalEventsChangedNotification
+C/tdef/-/CalibratorInfo
+C/data/-/CalInsertedRecordsKey
+C/tag/-/CallBackRecord
+Objective-C/instm/SFAuthorizationPluginView/callbacks
+JavaScript/instm/TestCallback/callbackWithClass1Param
+JavaScript/instm/TestCallback/callbackWithClass2Param
+JavaScript/instm/TestCallback/callbackWithNonBoolReturnType
+C/func/-/CallComponentCanDo
+C/func/-/CallComponentClose
+C/func/-/CallComponentDispatch
+C/func/-/CallComponentFunction
+C/func/-/CallComponentFunctionWithStorage
+C/func/-/CallComponentFunctionWithStorageProcInfo
+C/func/-/CallComponentGetMPWorkFunction
+C/func/-/CallComponentGetPublicResource
+C/func/-/CallComponentOpen
+C/func/-/CallComponentRegister
+C/func/-/CallComponentTarget
+C/func/-/CallComponentUnregister
+C/func/-/CallComponentVersion
+JavaScript/data/JavaScriptCallFrame/caller
+C/func/-/calloc
+C++/data/IOTimerEventSource/calloutEntry
+C++/instm/IOService/callPlatformFunction
+C/func/-/callrpc
+Objective-C/instm/NSException/callStackReturnAddresses
+Objective-C/clm/NSThread/callStackReturnAddresses
+Objective-C/instm/NSException/callStackSymbols
+Objective-C/clm/NSThread/callStackSymbols
+JavaScript/data/ScriptProfileNode/callUID
+Objective-C/instm/WebScriptObject/callWebScriptMethod:withArguments:
+Objective-C/cl/-/CalNthWeekDay
+C/tdef/-/CalPriority
+C/econst/-/CalPriorityHigh
+C/econst/-/CalPriorityLow
+C/econst/-/CalPriorityMedium
+C/econst/-/CalPriorityNone
+C/econst/-/CalRecurrenceDaily
+Objective-C/cl/-/CalRecurrenceEnd
+C/econst/-/CalRecurrenceMonthly
+Objective-C/cl/-/CalRecurrenceRule
+C/tdef/-/CalRecurrenceType
+C/econst/-/CalRecurrenceWeekly
+C/econst/-/CalRecurrenceYearly
+C/data/-/CalSenderProcessIDKey
+C/tdef/-/CalSpan
+C/econst/-/CalSpanAllEvents
+C/econst/-/CalSpanFutureEvents
+C/econst/-/CalSpanThisEvent
+Objective-C/cl/-/CalTask
+C/data/-/CalTasksChangedExternallyNotification
+C/data/-/CalTasksChangedNotification
+C/data/-/CalUpdatedRecordsKey
+C/data/-/CalUserUIDKey
+Objective-C/intf/-/CAMediaTiming
+Objective-C/cl/-/CAMediaTimingFunction
+Objective-C/instm/IKCameraDeviceView/cameraDevice
+Objective-C/instp/IKCameraDeviceView/cameraDevice
+Objective-C/intfm/IKCameraDeviceViewDelegate/cameraDeviceView:didDownloadFile:location:fileData:error:
+Objective-C/intfm/IKCameraDeviceViewDelegate/cameraDeviceView:didEncounterError:
+Objective-C/intfm/IKCameraDeviceViewDelegate/cameraDeviceViewSelectionDidChange:
+Objective-C/intfm/Fx3DAPI/cameraMatrixAtTime:
+C/func/-/can_change_color
+Objective-C/instm/NSObjectController/canAdd
+Objective-C/instm/NSTreeController/canAddChild
+Objective-C/instm/NSView/canBecomeKeyView
+Objective-C/instm/NSWindow/canBecomeKeyWindow
+Objective-C/instm/NSWindow/canBecomeMainWindow
+Objective-C/instm/NSWindow/canBecomeVisibleWithoutLogin
+Objective-C/instm/NSBitmapImageRep/canBeCompressedUsing:
+Objective-C/instm/NSString/canBeConvertedToEncoding:
+Objective-C/instm/NSWindow/canBeVisibleOnAllSpaces
+Objective-C/instm/NSOperation/cancel
+Objective-C/instm/NSURLDownload/cancel
+Objective-C/instm/XGFileDownload/cancel
+Objective-C/intfm/WebOpenPanelResultListener/cancel
+Objective-C/instm/NSThread/cancel
+Objective-C/instm/NSURLConnection/cancel
+JavaScript/instm/Notification/cancel
+Objective-C/instm/NSSavePanel/cancel:
+Objective-C/instm/DRSetupPanel/cancel:
+JavaScript/data/Event/cancelable
+Objective-C/instm/NSOperationQueue/cancelAllOperations
+Objective-C/intfm/NSURLAuthenticationChallengeSender/cancelAuthenticationChallenge:
+JavaScript/data/Event/cancelBubble
+Objective-C/instm/NSSearchFieldCell/cancelButtonCell
+Objective-C/instm/NSSearchFieldCell/cancelButtonRectForBounds:
+Objective-C/instm/IMKInputController/cancelComposition
+Objective-C/intfm/ApertureEditManager/cancelEditSession
+Objective-C/instm/PDFDocument/cancelFindString
+Objective-C/instm/NSImage/cancelIncrementalLoad
+Objective-C/instm/NSURLHandle/cancelLoadInBackground
+Objective-C/clm/ABPerson/cancelLoadingImageDataForTag:
+Objective-C/instm/NSMigrationManager/cancelMigrationWithError:
+Objective-C/instm/NSResponder/cancelOperation:
+Objective-C/instm/NSRunLoop/cancelPerformSelector:target:argument:
+Objective-C/instm/NSRunLoop/cancelPerformSelectorsWithTarget:
+C/tdef/-/CancelPreviewGeneration
+Objective-C/clm/ISyncSession/cancelPreviousBeginSessionWithClient:
+Objective-C/clm/NSObject/cancelPreviousPerformRequestsWithTarget:
+Objective-C/clm/NSObject/cancelPreviousPerformRequestsWithTarget:selector:object:
+C++/instm/IOOutputQueue/cancelServiceThread
+Objective-C/instm/ISyncSession/cancelSyncing
+C/tdef/-/CancelThumbnailGeneration
+C++/instm/ATATimerEventSource/cancelTimeout
+C++/instm/IOTimerEventSource/cancelTimeout
+Objective-C/instm/NSMenu/cancelTracking
+Objective-C/instm/NSMenu/cancelTrackingWithoutAnimation
+Objective-C/instm/NSApplication/cancelUserAttentionRequest:
+Objective-C/instm/NSOpenPanel/canChooseDirectories
+Objective-C/instm/NSOpenPanel/canChooseFiles
+Objective-C/instm/NSDocument/canCloseDocument
+Objective-C/instm/NSDocument/canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:
+Objective-C/clm/NSDocument/canConcurrentlyReadDocumentsOfType:
+Objective-C/instm/IKImageBrowserView/canControlQuickLookPanel
+Objective-C/instm/NSSavePanel/canCreateDirectories
+Objective-C/instp/IKCameraDeviceView/canDeleteSelectedItems
+Objective-C/instm/IKCameraDeviceView/canDeleteSelectedItems
+Objective-C/instm/NSObject/candidates:
+Objective-C/instm/IMKInputController/candidateSelected:
+Objective-C/instm/IMKInputController/candidateSelectionChanged:
+Objective-C/instm/IKCameraDeviceView/canDownloadSelectedItems
+Objective-C/instp/IKCameraDeviceView/canDownloadSelectedItems
+Objective-C/instm/NSTableView/canDragRowsWithIndexes:atPoint:
+Objective-C/instm/NSBrowser/canDragRowsWithIndexes:inColumn:withEvent:
+Objective-C/instm/NSView/canDraw
+Objective-C/instm/NSView/canDrawConcurrently
+Objective-C/instm/CAOpenGLLayer/canDrawInCGLContext:pixelFormat:forLayerTime:displayTime:
+Objective-C/instm/NSOpenGLLayer/canDrawInOpenGLContext:pixelFormat:forLayerTime:displayTime:
+Objective-C/intfm/IKSlideshowDataSource/canExportSlideshowItemAtIndex:toApplication:
+Objective-C/clm/IKSlideshow/canExportToApplication:
+Objective-C/instm/PDFView/canGoBack
+Objective-C/instm/WebView/canGoBack
+Objective-C/instm/PDFView/canGoForward
+Objective-C/instm/WebView/canGoForward
+Objective-C/instm/PDFView/canGoToFirstPage
+Objective-C/instm/PDFView/canGoToLastPage
+Objective-C/instm/PDFView/canGoToNextPage
+Objective-C/instm/PDFView/canGoToPreviousPage
+Objective-C/clm/NSURLConnection/canHandleRequest:
+Objective-C/instm/NSWindow/canHide
+Objective-C/intfm/ApertureEditManager/canImport
+Objective-C/clm/NSImageRep/canInitWithData:
+Objective-C/clm/QTMovie/canInitWithDataReference:
+Objective-C/clm/QTMovie/canInitWithFile:
+Objective-C/clm/NSSound/canInitWithPasteboard:
+Objective-C/clm/NSImageRep/canInitWithPasteboard:
+Objective-C/clm/NSImage/canInitWithPasteboard:
+Objective-C/clm/QTMovie/canInitWithPasteboard:
+Objective-C/clm/NSURLProtocol/canInitWithRequest:
+Objective-C/clm/NSURLHandle/canInitWithURL:
+Objective-C/clm/QTMovie/canInitWithURL:
+Objective-C/instm/NSTreeController/canInsert
+Objective-C/instm/NSArrayController/canInsert
+Objective-C/instm/NSTreeController/canInsertChild
+Objective-C/instm/WebView/canMakeTextLarger
+Objective-C/instm/WebView/canMakeTextSmaller
+Objective-C/instm/WebView/canMakeTextStandardSize
+Objective-C/clm/NSLocale/canonicalLanguageIdentifierFromString:
+Objective-C/clm/NSLocale/canonicalLocaleIdentifierFromString:
+Objective-C/clm/NSURLProtocol/canonicalRequestForRequest:
+Objective-C/instm/NSXMLNode/canonicalXMLStringPreservingComments:
+JavaScript/instm/HTMLMediaElement/canPlayType
+Objective-C/instm/WebFrameView/canPrintHeadersAndFooters
+Objective-C/intfm/WebDocumentRepresentation/canProvideDocumentSource
+Objective-C/instm/ISyncClient/canPullChangesForEntityName:
+Objective-C/instm/ISyncClient/canPushChangesForEntityName:
+Objective-C/instm/NSPasteboard/canReadItemWithDataConformingToTypes:
+Objective-C/instm/NSPasteboard/canReadObjectForClasses:options:
+Objective-C/instm/NSUndoManager/canRedo
+Objective-C/instm/NSObjectController/canRemove
+Objective-C/instm/NSRuleEditor/canRemoveAllRows
+Objective-C/intfm/QCPlugInOutputImageProvider/canRenderWithCGLContext:
+Objective-C/clm/NSURLDownload/canResumeDownloadDecodedWithEncodingMIMEType:
+Objective-C/instm/IKCameraDeviceView/canRotateSelectedItemsLeft
+Objective-C/instp/IKCameraDeviceView/canRotateSelectedItemsLeft
+Objective-C/instm/IKCameraDeviceView/canRotateSelectedItemsRight
+Objective-C/instp/IKCameraDeviceView/canRotateSelectedItemsRight
+Objective-C/instm/AMWorkflowController/canRun
+Objective-C/instm/NSSavePanel/canSelectHiddenExtension
+Objective-C/instm/NSArrayController/canSelectNext
+Objective-C/instm/NSArrayController/canSelectPrevious
+Objective-C/clm/WebView/canShowMIMEType:
+Objective-C/clm/WebView/canShowMIMETypeAsHTML:
+Objective-C/instm/NSPrintOperation/canSpawnSeparateThread
+Objective-C/instm/NSWindow/canStoreColor
+C/econst/-/cantCreateSingleForkFile
+C/econst/-/CantDecompress
+Objective-C/instm/NSUndoManager/canUndo
+Objective-C/instm/QTMovie/canUpdateMovieFile
+JavaScript/data/CanvasRenderingContext/canvas
+JavaScript/cl/-/CanvasGradient
+JavaScript/cl/-/CanvasNumberArray
+JavaScript/cl/-/CanvasPattern
+JavaScript/cl/-/CanvasPixelArray
+JavaScript/cl/-/CanvasRenderingContext
+JavaScript/data/DOMWindow/CanvasRenderingContext2D
+JavaScript/cl/-/CanvasRenderingContext2D
+Objective-C/instm/PDFView/canZoomIn
+Objective-C/instm/PDFView/canZoomOut
+Objective-C/cl/-/CAOpenGLLayer
+Objective-C/instm/NSEvent/capabilityMask
+Objective-C/instm/WebBackForwardList/capacity
+Objective-C/instm/NSFont/capHeight
+Objective-C/clm/NSCharacterSet/capitalizedLetterCharacterSet
+Objective-C/instm/NSString/capitalizedString
+Objective-C/instm/NSResponder/capitalizeWord:
+Objective-C/cl/-/CAPropertyAnimation
+Objective-C/instm/PDFAnnotationButtonWidget/caption
+JavaScript/data/HTMLTableElement/caption
+C/func/-/CaptureComponent
+JavaScript/instm/DOMWindow/captureEvents
+JavaScript/instm/HTMLDocument/captureEvents
+Objective-C/instm/NSObject/captureOutput:didDropVideoFrameWithSampleBuffer:fromConnection:
+Objective-C/instm/QTCaptureFileOutput/captureOutput:didFinishRecordingToOutputFileAtURL:forConnections:dueToError:
+Objective-C/instm/NSObject/captureOutput:didOutputAudioSampleBuffer:fromConnection:
+Objective-C/instm/QTCaptureFileOutput/captureOutput:didOutputSampleBuffer:fromConnection:
+Objective-C/instm/NSObject/captureOutput:didOutputVideoFrame:withSampleBuffer:fromConnection:
+Objective-C/instm/QTCaptureFileOutput/captureOutput:didPauseRecordingToOutputFileAtURL:forConnections:
+Objective-C/instm/QTCaptureFileOutput/captureOutput:didResumeRecordingToOutputFileAtURL:forConnections:
+Objective-C/instm/QTCaptureFileOutput/captureOutput:didStartRecordingToOutputFileURL:forConnections:
+Objective-C/instm/QTCaptureFileOutput/captureOutput:mustChangeOutputFileAtURL:forConnections:dueToError:
+Objective-C/instm/QTCaptureFileOutput/captureOutput:shouldChangeOutputFileAtURL:forConnections:dueToError:
+Objective-C/instm/QTCaptureFileOutput/captureOutput:willFinishRecordingToOutputFileAtURL:forConnections:dueToError:
+Objective-C/instm/QTCaptureFileOutput/captureOutput:willStartRecordingToOutputFileURL:forConnections:
+Objective-C/instm/QTCaptureView/captureSession
+JavaScript/clconst/Event/CAPTURING_PHASE
+Objective-C/cl/-/CARenderer
+Objective-C/cl/-/CAReplicatorLayer
+JavaScript/instm/Document/caretRangeFromPoint
+C/func/-/carg
+C/func/-/cargf
+C/func/-/cargl
+Objective-C/instm/NSWindow/cascadeTopLeftFromPoint:
+Objective-C/cl/-/CAScrollLayer
+Objective-C/instm/NSString/caseInsensitiveCompare:
+Objective-C/instm/NSScanner/caseSensitive
+Objective-C/cl/-/CAShapeLayer
+C/func/-/CAShow
+C/func/-/CAShowFile
+C/func/-/casin
+C/func/-/casinf
+C/func/-/casinh
+C/func/-/casinhf
+C/func/-/casinhl
+C/func/-/casinl
+C/macro/-/CAST_TO_BOOLEAN
+C/macro/-/CAST_TO_NUMBER
+C/macro/-/CAST_TO_STRING
+Objective-C/instm/NSColor/catalogNameComponent
+C/func/-/catan
+C/func/-/catanf
+C/func/-/catanh
+C/func/-/catanhf
+C/func/-/catanhl
+C/func/-/catanl
+JavaScript/clconst/JavaScriptCallFrame/CATCH_SCOPE
+C/econst/-/catChangedErr
+C/func/-/catclose
+C/tdef/-/Category
+Objective-C/cl/-/CATextLayer
+C/func/-/catgets
+Objective-C/cl/-/CATiledLayer
+C/func/-/catlas_caxpby
+C/func/-/catlas_cset
+C/func/-/catlas_daxpby
+C/func/-/catlas_dset
+C/func/-/catlas_saxpby
+C/func/-/catlas_sset
+C/func/-/catlas_zaxpby
+C/func/-/catlas_zset
+C/func/-/CatMove
+C/func/-/catopen
+C/tdef/-/CatPositionRec
+Objective-C/cl/-/CATransaction
+C/tdef/-/CATransform3D
+C/tag/-/CATransform3D
+C/func/-/CATransform3DConcat
+C/func/-/CATransform3DEqualToTransform
+C/func/-/CATransform3DGetAffineTransform
+C/data/-/CATransform3DIdentity
+C/func/-/CATransform3DInvert
+C/func/-/CATransform3DIsAffine
+C/func/-/CATransform3DIsIdentity
+C/func/-/CATransform3DMakeAffineTransform
+C/func/-/CATransform3DMakeRotation
+C/func/-/CATransform3DMakeScale
+C/func/-/CATransform3DMakeTranslation
+C/func/-/CATransform3DRotate
+C/func/-/CATransform3DScale
+C/func/-/CATransform3DTranslate
+Objective-C/instm/NSValue/CATransform3DValue
+Objective-C/cl/-/CATransformLayer
+Objective-C/cl/-/CATransition
+C++/instm/IOService/causeInterrupt
+Objective-C/cl/-/CAValueFunction
+Objective-C/cl/-/CBGroupIdentity
+Objective-C/cl/-/CBIdentity
+Objective-C/cl/-/CBIdentityAuthority
+Objective-C/cl/-/CBIdentityPicker
+C/func/-/cblas_caxpy
+C/func/-/cblas_ccopy
+C/func/-/cblas_cdotc_sub
+C/func/-/cblas_cdotu_sub
+C/func/-/cblas_cgbmv
+C/func/-/cblas_cgemm
+C/func/-/cblas_cgemv
+C/func/-/cblas_cgerc
+C/func/-/cblas_cgeru
+C/func/-/cblas_chbmv
+C/func/-/cblas_chemm
+C/func/-/cblas_chemv
+C/func/-/cblas_cher
+C/func/-/cblas_cher2
+C/func/-/cblas_cher2k
+C/func/-/cblas_cherk
+C/func/-/cblas_chpmv
+C/func/-/cblas_chpr
+C/func/-/cblas_chpr2
+C/func/-/cblas_crotg
+C/func/-/cblas_cscal
+C/func/-/cblas_csrot
+C/func/-/cblas_csscal
+C/func/-/cblas_cswap
+C/func/-/cblas_csymm
+C/func/-/cblas_csyr2k
+C/func/-/cblas_csyrk
+C/func/-/cblas_ctbmv
+C/func/-/cblas_ctbsv
+C/func/-/cblas_ctpmv
+C/func/-/cblas_ctpsv
+C/func/-/cblas_ctrmm
+C/func/-/cblas_ctrmv
+C/func/-/cblas_ctrsm
+C/func/-/cblas_ctrsv
+C/func/-/cblas_dasum
+C/func/-/cblas_daxpy
+C/func/-/cblas_dcopy
+C/func/-/cblas_ddot
+C/func/-/cblas_dgbmv
+C/func/-/cblas_dgemm
+C/func/-/cblas_dgemv
+C/func/-/cblas_dger
+C/tdef/-/CBLAS_DIAG
+C/func/-/cblas_dnrm2
+C/func/-/cblas_drot
+C/func/-/cblas_drotg
+C/func/-/cblas_drotm
+C/func/-/cblas_drotmg
+C/func/-/cblas_dsbmv
+C/func/-/cblas_dscal
+C/func/-/cblas_dsdot
+C/func/-/cblas_dspmv
+C/func/-/cblas_dspr
+C/func/-/cblas_dspr2
+C/func/-/cblas_dswap
+C/func/-/cblas_dsymm
+C/func/-/cblas_dsymv
+C/func/-/cblas_dsyr
+C/func/-/cblas_dsyr2
+C/func/-/cblas_dsyr2k
+C/func/-/cblas_dsyrk
+C/func/-/cblas_dtbmv
+C/func/-/cblas_dtbsv
+C/func/-/cblas_dtpmv
+C/func/-/cblas_dtpsv
+C/func/-/cblas_dtrmm
+C/func/-/cblas_dtrmv
+C/func/-/cblas_dtrsm
+C/func/-/cblas_dtrsv
+C/func/-/cblas_dzasum
+C/func/-/cblas_dznrm2
+C/func/-/cblas_errprn
+C/func/-/cblas_icamax
+C/func/-/cblas_idamax
+C/func/-/cblas_isamax
+C/func/-/cblas_izamax
+C/tdef/-/CBLAS_ORDER
+C/func/-/cblas_sasum
+C/func/-/cblas_saxpy
+C/func/-/cblas_scasum
+C/func/-/cblas_scnrm2
+C/func/-/cblas_scopy
+C/func/-/cblas_sdot
+C/func/-/cblas_sdsdot
+C/func/-/cblas_sgbmv
+C/func/-/cblas_sgemm
+C/func/-/cblas_sgemv
+C/func/-/cblas_sger
+C/tdef/-/CBLAS_SIDE
+C/func/-/cblas_snrm2
+C/func/-/cblas_srot
+C/func/-/cblas_srotg
+C/func/-/cblas_srotm
+C/func/-/cblas_srotmg
+C/func/-/cblas_ssbmv
+C/func/-/cblas_sscal
+C/func/-/cblas_sspmv
+C/func/-/cblas_sspr
+C/func/-/cblas_sspr2
+C/func/-/cblas_sswap
+C/func/-/cblas_ssymm
+C/func/-/cblas_ssymv
+C/func/-/cblas_ssyr
+C/func/-/cblas_ssyr2
+C/func/-/cblas_ssyr2k
+C/func/-/cblas_ssyrk
+C/func/-/cblas_stbmv
+C/func/-/cblas_stbsv
+C/func/-/cblas_stpmv
+C/func/-/cblas_stpsv
+C/func/-/cblas_strmm
+C/func/-/cblas_strmv
+C/func/-/cblas_strsm
+C/func/-/cblas_strsv
+C/tdef/-/CBLAS_TRANSPOSE
+C/tdef/-/CBLAS_UPLO
+C/func/-/cblas_zaxpy
+C/func/-/cblas_zcopy
+C/func/-/cblas_zdotc_sub
+C/func/-/cblas_zdotu_sub
+C/func/-/cblas_zdrot
+C/func/-/cblas_zdscal
+C/func/-/cblas_zgbmv
+C/func/-/cblas_zgemm
+C/func/-/cblas_zgemv
+C/func/-/cblas_zgerc
+C/func/-/cblas_zgeru
+C/func/-/cblas_zhbmv
+C/func/-/cblas_zhemm
+C/func/-/cblas_zhemv
+C/func/-/cblas_zher
+C/func/-/cblas_zher2
+C/func/-/cblas_zher2k
+C/func/-/cblas_zherk
+C/func/-/cblas_zhpmv
+C/func/-/cblas_zhpr
+C/func/-/cblas_zhpr2
+C/func/-/cblas_zrotg
+C/func/-/cblas_zscal
+C/func/-/cblas_zswap
+C/func/-/cblas_zsymm
+C/func/-/cblas_zsyr2k
+C/func/-/cblas_zsyrk
+C/func/-/cblas_ztbmv
+C/func/-/cblas_ztbsv
+C/func/-/cblas_ztpmv
+C/func/-/cblas_ztpsv
+C/func/-/cblas_ztrmm
+C/func/-/cblas_ztrmv
+C/func/-/cblas_ztrsm
+C/func/-/cblas_ztrsv
+C/econst/-/CblasColMajor
+C/econst/-/CblasConjTrans
+C/econst/-/CblasLeft
+C/econst/-/CblasLower
+C/econst/-/CblasNonUnit
+C/econst/-/CblasNoTrans
+C/econst/-/CblasRight
+C/econst/-/CblasRowMajor
+C/econst/-/CblasTrans
+C/econst/-/CblasUnit
+C/econst/-/CblasUpper
+C/func/-/cbreak
+C/func/-/cbrt
+C/func/-/cbrtf
+C/func/-/cbrtl
+Objective-C/cl/-/CBUserIdentity
+C/func/-/CC_crypto
+C/func/-/CC_MD2
+C/func/-/CC_MD2_Final
+C/func/-/CC_MD2_Init
+C/func/-/CC_MD2_Update
+C/func/-/CC_MD4
+C/func/-/CC_MD4_Final
+C/func/-/CC_MD4_Init
+C/func/-/CC_MD4_Update
+C/func/-/CC_MD5
+C/func/-/CC_MD5_Final
+C/func/-/CC_MD5_Init
+C/func/-/CC_MD5_Update
+C/func/-/CC_SHA
+C/func/-/CC_SHA1
+C/func/-/CC_SHA1_Final
+C/func/-/CC_SHA1_Init
+C/func/-/CC_SHA1_Update
+C/func/-/CC_SHA224
+C/func/-/CC_SHA224_Final
+C/func/-/CC_SHA224_Init
+C/func/-/CC_SHA224_Update
+C/func/-/CC_SHA256
+C/func/-/CC_SHA256_Final
+C/func/-/CC_SHA256_Init
+C/func/-/CC_SHA256_Update
+C/func/-/CC_SHA384
+C/func/-/CC_SHA384_Final
+C/func/-/CC_SHA384_Init
+C/func/-/CC_SHA384_Update
+C/func/-/CC_SHA512
+C/func/-/CC_SHA512_Final
+C/func/-/CC_SHA512_Init
+C/func/-/CC_SHA512_Update
+C/func/-/CCCrypt
+C/func/-/CCCryptor
+C/func/-/CCCryptorCreate
+C/func/-/CCCryptorCreateFromData
+C/func/-/CCCryptorFinal
+C/func/-/CCCryptorGetOutputLength
+C/func/-/CCCryptorRelease
+C/func/-/CCCryptorReset
+C/func/-/CCCryptorUpdate
+C/func/-/CCHmac
+C/func/-/CCHmacFinal
+C/func/-/CCHmacInit
+C/func/-/CCHmacUpdate
+C/func/-/ccosh
+C/func/-/ccoshf
+C/func/-/ccoshl
+C/func/-/CCryptorCreateFromData
+JavaScript/clconst/WebGLRenderingContext/CCW
+JavaScript/clconst/core/CDATA_SECTION_NODE
+C/tdef/-/cdataBlockSAXFunc
+JavaScript/data/DOMWindow/CDATASection
+JavaScript/cl/-/CDATASection
+C/func/-/CDSequenceBusy
+C/func/-/CDSequenceChangedSourceData
+C/tag/-/CDSequenceDataSource
+C/tdef/-/CDSequenceDataSourcePtr
+C/func/-/CDSequenceDisposeDataSource
+C/func/-/CDSequenceDisposeMemory
+C/func/-/CDSequenceEnd
+C/func/-/CDSequenceEquivalentImageDescription
+C/func/-/CDSequenceEquivalentImageDescriptionS
+C/func/-/CDSequenceFlush
+C/func/-/CDSequenceGetDataSource
+C/func/-/CDSequenceInvalidate
+C/func/-/CDSequenceNewDataSource
+C/func/-/CDSequenceNewMemory
+C/func/-/CDSequenceSetSourceData
+C/func/-/CDSequenceSetSourceDataQueue
+C/func/-/CDSequenceSetTimeBase
+Objective-C/clm/DRCDTextBlock/cdTextBlockWithLanguage:encoding:
+C/func/-/ceil
+C/func/-/ceilf
+C/func/-/ceill
+Objective-C/instm/NSControl/cell
+Objective-C/instm/NSForm/cellAtIndex:
+Objective-C/instm/NSMatrix/cellAtRow:column:
+Objective-C/instm/NSCell/cellAttribute:
+Objective-C/instm/NSMatrix/cellBackgroundColor
+Objective-C/intfm/NSTextAttachmentCell/cellBaselineOffset
+Objective-C/instm/NSMatrix/cellClass
+Objective-C/clm/NSBrowser/cellClass
+Objective-C/clm/NSControl/cellClass
+Objective-C/instm/IKImageBrowserView/cellForItemAtIndex:
+Objective-C/instm/NSMatrix/cellFrameAtRow:column:
+Objective-C/intfm/NSTextAttachmentCell/cellFrameForTextContainer:proposedLineFragment:glyphPosition:characterIndex:
+JavaScript/data/HTMLTableCellElement/cellIndex
+JavaScript/data/HTMLTableElement/cellPadding
+Objective-C/instm/NSBrowser/cellPrototype
+Objective-C/instm/NSMatrix/cells
+JavaScript/data/HTMLTableRowElement/cells
+Objective-C/intfm/NSTextAttachmentCell/cellSize
+Objective-C/instm/NSMatrix/cellSize
+Objective-C/instm/IKImageBrowserView/cellSize
+Objective-C/instm/NSCell/cellSize
+Objective-C/instm/NSCell/cellSizeForBounds:
+C/func/-/CellsOfScreen
+JavaScript/data/HTMLTableElement/cellSpacing
+Objective-C/instm/IKImageBrowserView/cellsStyleMask
+Objective-C/instm/IKImageBrowserCell/cellState
+Objective-C/instm/NSMatrix/cellWithTag:
+Objective-C/instm/NSWindow/center
+Objective-C/clm/NSServerNotificationCenter/centerForService:
+Objective-C/instm/NSView/centerScanRect:
+Objective-C/instm/NSResponder/centerSelectionInVisibleArea:
+Objective-C/instm/SFCertificateView/certificate
+Objective-C/instm/CBUserIdentity/certificate
+Objective-C/instm/NSObject/certificatePanelShowHelp:
+Objective-C/instm/NSURLCredential/certificates
+C/func/-/cexp
+C/func/-/cexpf
+C/func/-/cexpl
+C/tdef/-/CFAbsoluteTime
+C/func/-/CFAbsoluteTimeAddGregorianUnits
+C/func/-/CFAbsoluteTimeGetCurrent
+C/func/-/CFAbsoluteTimeGetDayOfWeek
+C/func/-/CFAbsoluteTimeGetDayOfYear
+C/func/-/CFAbsoluteTimeGetDifferenceAsGregorianUnits
+C/func/-/CFAbsoluteTimeGetGregorianDate
+C/func/-/CFAbsoluteTimeGetWeekOfYear
+C/func/-/CFAllocatorAllocate
+C/tdef/-/CFAllocatorAllocateCallBack
+C/tdef/-/CFAllocatorContext
+C/tdef/-/CFAllocatorCopyDescriptionCallBack
+C/func/-/CFAllocatorCreate
+C/func/-/CFAllocatorDeallocate
+C/tdef/-/CFAllocatorDeallocateCallBack
+C/func/-/CFAllocatorGetContext
+C/func/-/CFAllocatorGetDefault
+C/func/-/CFAllocatorGetPreferredSizeForSize
+C/func/-/CFAllocatorGetTypeID
+C/tdef/-/CFAllocatorPreferredSizeCallBack
+C/func/-/CFAllocatorReallocate
+C/tdef/-/CFAllocatorReallocateCallBack
+C/tdef/-/CFAllocatorRef
+C/tdef/-/CFAllocatorReleaseCallBack
+C/tdef/-/CFAllocatorRetainCallBack
+C/func/-/CFAllocatorSetDefault
+C/func/-/CFArrayAppendArray
+C/func/-/CFArrayAppendValue
+C/tdef/-/CFArrayApplierFunction
+C/func/-/CFArrayApplyFunction
+C/func/-/CFArrayBSearchValues
+C/tdef/-/CFArrayCallBacks
+C/func/-/CFArrayContainsValue
+C/tdef/-/CFArrayCopyDescriptionCallBack
+C/func/-/CFArrayCreate
+C/func/-/CFArrayCreateCopy
+C/func/-/CFArrayCreateMutable
+C/func/-/CFArrayCreateMutableCopy
+C/tdef/-/CFArrayEqualCallBack
+C/func/-/CFArrayExchangeValuesAtIndices
+C/func/-/CFArrayGetCount
+C/func/-/CFArrayGetCountOfValue
+C/func/-/CFArrayGetFirstIndexOfValue
+C/func/-/CFArrayGetLastIndexOfValue
+C/func/-/CFArrayGetTypeID
+C/func/-/CFArrayGetValueAtIndex
+C/func/-/CFArrayGetValues
+C/func/-/CFArrayInsertValueAtIndex
+C/tdef/-/CFArrayRef
+C/tdef/-/CFArrayReleaseCallBack
+C/func/-/CFArrayRemoveAllValues
+C/func/-/CFArrayRemoveValueAtIndex
+C/func/-/CFArrayReplaceValues
+C/tdef/-/CFArrayRetainCallBack
+C/func/-/CFArraySetValueAtIndex
+C/func/-/CFArraySortValues
+C/func/-/CFAttributedStringBeginEditing
+C/func/-/CFAttributedStringCreate
+C/func/-/CFAttributedStringCreateCopy
+C/func/-/CFAttributedStringCreateMutable
+C/func/-/CFAttributedStringCreateMutableCopy
+C/func/-/CFAttributedStringCreateWithSubstring
+C/func/-/CFAttributedStringEndEditing
+C/func/-/CFAttributedStringGetAttribute
+C/func/-/CFAttributedStringGetAttributeAndLongestEffectiveRange
+C/func/-/CFAttributedStringGetAttributes
+C/func/-/CFAttributedStringGetAttributesAndLongestEffectiveRange
+C/func/-/CFAttributedStringGetLength
+C/func/-/CFAttributedStringGetMutableString
+C/func/-/CFAttributedStringGetString
+C/func/-/CFAttributedStringGetTypeID
+C/tdef/-/CFAttributedStringRef
+C/func/-/CFAttributedStringRemoveAttribute
+C/func/-/CFAttributedStringReplaceAttributedString
+C/func/-/CFAttributedStringReplaceString
+C/func/-/CFAttributedStringSetAttribute
+C/func/-/CFAttributedStringSetAttributes
+C/func/-/CFBagAddValue
+C/tdef/-/CFBagApplierFunction
+C/func/-/CFBagApplyFunction
+C/tdef/-/CFBagCallBacks
+C/func/-/CFBagContainsValue
+C/tdef/-/CFBagCopyDescriptionCallBack
+C/func/-/CFBagCreate
+C/func/-/CFBagCreateCopy
+C/func/-/CFBagCreateMutable
+C/func/-/CFBagCreateMutableCopy
+C/tdef/-/CFBagEqualCallBack
+C/func/-/CFBagGetCount
+C/func/-/CFBagGetCountOfValue
+C/func/-/CFBagGetTypeID
+C/func/-/CFBagGetValue
+C/func/-/CFBagGetValueIfPresent
+C/func/-/CFBagGetValues
+C/tdef/-/CFBagHashCallBack
+C/tdef/-/CFBagRef
+C/tdef/-/CFBagReleaseCallBack
+C/func/-/CFBagRemoveAllValues
+C/func/-/CFBagRemoveValue
+C/func/-/CFBagReplaceValue
+C/tdef/-/CFBagRetainCallBack
+C/func/-/CFBagSetValue
+C/func/-/CFBinaryHeapAddValue
+C/tdef/-/CFBinaryHeapApplierFunction
+C/func/-/CFBinaryHeapApplyFunction
+C/tdef/-/CFBinaryHeapCallBacks
+C/tdef/-/CFBinaryHeapCompareCallBack
+C/tdef/-/CFBinaryHeapCompareContext
+C/func/-/CFBinaryHeapContainsValue
+C/tdef/-/CFBinaryHeapCopyDescriptionCallBack
+C/func/-/CFBinaryHeapCreate
+C/func/-/CFBinaryHeapCreateCopy
+C/func/-/CFBinaryHeapGetCount
+C/func/-/CFBinaryHeapGetCountOfValue
+C/func/-/CFBinaryHeapGetMinimum
+C/func/-/CFBinaryHeapGetMinimumIfPresent
+C/func/-/CFBinaryHeapGetTypeID
+C/func/-/CFBinaryHeapGetValues
+C/tdef/-/CFBinaryHeapRef
+C/tdef/-/CFBinaryHeapReleaseCallBack
+C/func/-/CFBinaryHeapRemoveAllValues
+C/func/-/CFBinaryHeapRemoveMinimumValue
+C/tdef/-/CFBinaryHeapRetainCallBack
+C/tdef/-/CFBit
+C/func/-/CFBitVectorContainsBit
+C/func/-/CFBitVectorCreate
+C/func/-/CFBitVectorCreateCopy
+C/func/-/CFBitVectorCreateMutable
+C/func/-/CFBitVectorCreateMutableCopy
+C/func/-/CFBitVectorFlipBitAtIndex
+C/func/-/CFBitVectorFlipBits
+C/func/-/CFBitVectorGetBitAtIndex
+C/func/-/CFBitVectorGetBits
+C/func/-/CFBitVectorGetCount
+C/func/-/CFBitVectorGetCountOfBit
+C/func/-/CFBitVectorGetFirstIndexOfBit
+C/func/-/CFBitVectorGetLastIndexOfBit
+C/func/-/CFBitVectorGetTypeID
+C/tdef/-/CFBitVectorRef
+C/func/-/CFBitVectorSetAllBits
+C/func/-/CFBitVectorSetBitAtIndex
+C/func/-/CFBitVectorSetBits
+C/func/-/CFBitVectorSetCount
+C/func/-/CFBooleanGetTypeID
+C/func/-/CFBooleanGetValue
+C/tdef/-/CFBooleanRef
+C/func/-/CFBundleCloseBundleResourceMap
+C/func/-/CFBundleCopyAuxiliaryExecutableURL
+C/func/-/CFBundleCopyBuiltInPlugInsURL
+C/func/-/CFBundleCopyBundleLocalizations
+C/func/-/CFBundleCopyBundleURL
+C/func/-/CFBundleCopyExecutableArchitectures
+C/func/-/CFBundleCopyExecutableArchitecturesForURL
+C/func/-/CFBundleCopyExecutableURL
+C/func/-/CFBundleCopyInfoDictionaryForURL
+C/func/-/CFBundleCopyInfoDictionaryInDirectory
+C/func/-/CFBundleCopyLocalizationsForPreferences
+C/func/-/CFBundleCopyLocalizationsForURL
+C/func/-/CFBundleCopyLocalizedString
+C/func/-/CFBundleCopyPreferredLocalizationsFromArray
+C/func/-/CFBundleCopyPrivateFrameworksURL
+C/func/-/CFBundleCopyResourcesDirectoryURL
+C/func/-/CFBundleCopyResourceURL
+C/func/-/CFBundleCopyResourceURLForLocalization
+C/func/-/CFBundleCopyResourceURLInDirectory
+C/func/-/CFBundleCopyResourceURLsOfType
+C/func/-/CFBundleCopyResourceURLsOfTypeForLocalization
+C/func/-/CFBundleCopyResourceURLsOfTypeInDirectory
+C/func/-/CFBundleCopySharedFrameworksURL
+C/func/-/CFBundleCopySharedSupportURL
+C/func/-/CFBundleCopySupportFilesDirectoryURL
+C/func/-/CFBundleCreate
+C/func/-/CFBundleCreateBundlesFromDirectory
+C/func/-/CFBundleGetAllBundles
+C/func/-/CFBundleGetBundleWithIdentifier
+C/func/-/CFBundleGetDataPointerForName
+C/func/-/CFBundleGetDataPointersForNames
+C/func/-/CFBundleGetDevelopmentRegion
+C/func/-/CFBundleGetFunctionPointerForName
+C/func/-/CFBundleGetFunctionPointersForNames
+C/func/-/CFBundleGetIdentifier
+C/func/-/CFBundleGetInfoDictionary
+C/func/-/CFBundleGetLocalInfoDictionary
+C/func/-/CFBundleGetMainBundle
+C/func/-/CFBundleGetPackageInfo
+C/func/-/CFBundleGetPackageInfoInDirectory
+C/func/-/CFBundleGetPlugIn
+C/func/-/CFBundleGetTypeID
+C/func/-/CFBundleGetValueForInfoDictionaryKey
+C/func/-/CFBundleGetVersionNumber
+C/func/-/CFBundleIsExecutableLoaded
+C/func/-/CFBundleLoadExecutable
+C/func/-/CFBundleLoadExecutableAndReturnError
+C/func/-/CFBundleOpenBundleResourceFiles
+C/func/-/CFBundleOpenBundleResourceMap
+C/func/-/CFBundlePreflightExecutable
+C/tdef/-/CFBundleRef
+C/tdef/-/CFBundleRefNum
+C/func/-/CFBundleUnloadExecutable
+C/tdef/-/CFByteOrder
+C/econst/-/CFByteOrderBigEndian
+C/func/-/CFByteOrderGetCurrent
+C/econst/-/CFByteOrderLittleEndian
+C/econst/-/CFByteOrderUnknown
+C/func/-/CFCalendarAddComponents
+C/func/-/CFCalendarComposeAbsoluteTime
+C/func/-/CFCalendarCopyCurrent
+C/func/-/CFCalendarCopyLocale
+C/func/-/CFCalendarCopyTimeZone
+C/func/-/CFCalendarCreateWithIdentifier
+C/func/-/CFCalendarDecomposeAbsoluteTime
+C/func/-/CFCalendarGetComponentDifference
+C/func/-/CFCalendarGetFirstWeekday
+C/func/-/CFCalendarGetIdentifier
+C/func/-/CFCalendarGetMaximumRangeOfUnit
+C/func/-/CFCalendarGetMinimumDaysInFirstWeek
+C/func/-/CFCalendarGetMinimumRangeOfUnit
+C/func/-/CFCalendarGetOrdinalityOfUnit
+C/func/-/CFCalendarGetRangeOfUnit
+C/func/-/CFCalendarGetTimeRangeOfUnit
+C/func/-/CFCalendarGetTypeID
+C/tdef/-/CFCalendarRef
+C/func/-/CFCalendarSetFirstWeekday
+C/func/-/CFCalendarSetLocale
+C/func/-/CFCalendarSetMinimumDaysInFirstWeek
+C/func/-/CFCalendarSetTimeZone
+C/tdef/-/CFCalendarUnit
+C/func/-/CFCharacterSetAddCharactersInRange
+C/func/-/CFCharacterSetAddCharactersInString
+C/func/-/CFCharacterSetCreateBitmapRepresentation
+C/func/-/CFCharacterSetCreateCopy
+C/func/-/CFCharacterSetCreateInvertedSet
+C/func/-/CFCharacterSetCreateMutable
+C/func/-/CFCharacterSetCreateMutableCopy
+C/func/-/CFCharacterSetCreateWithBitmapRepresentation
+C/func/-/CFCharacterSetCreateWithCharactersInRange
+C/func/-/CFCharacterSetCreateWithCharactersInString
+C/func/-/CFCharacterSetGetPredefined
+C/func/-/CFCharacterSetGetTypeID
+C/func/-/CFCharacterSetHasMemberInPlane
+C/func/-/CFCharacterSetIntersect
+C/func/-/CFCharacterSetInvert
+C/func/-/CFCharacterSetIsCharacterMember
+C/func/-/CFCharacterSetIsLongCharacterMember
+C/func/-/CFCharacterSetIsSupersetOfSet
+C/tdef/-/CFCharacterSetPredefinedSet
+C/tdef/-/CFCharacterSetRef
+C/func/-/CFCharacterSetRemoveCharactersInRange
+C/func/-/CFCharacterSetRemoveCharactersInString
+C/func/-/CFCharacterSetUnion
+C/tdef/-/CFComparatorFunction
+C/tdef/-/CFComparisonResult
+C/func/-/CFConvertDoubleHostToSwapped
+C/func/-/CFConvertDoubleSwappedToHost
+C/func/-/CFConvertFloat32HostToSwapped
+C/func/-/CFConvertFloat32SwappedToHost
+C/func/-/CFConvertFloat64HostToSwapped
+C/func/-/CFConvertFloat64SwappedToHost
+C/func/-/CFConvertFloatHostToSwapped
+C/func/-/CFConvertFloatSwappedToHost
+C/func/-/CFCopyDescription
+C/macro/-/CFCopyLocalizedString
+C/macro/-/CFCopyLocalizedStringFromTable
+C/macro/-/CFCopyLocalizedStringFromTableInBundle
+C/macro/-/CFCopyLocalizedStringWithDefaultValue
+C/func/-/CFCopyTypeIDDescription
+-/writerid/-/cfCreateRule
+C/func/-/CFDataAppendBytes
+C/func/-/CFDataCreate
+C/func/-/CFDataCreateCopy
+C/func/-/CFDataCreateMutable
+C/func/-/CFDataCreateMutableCopy
+C/func/-/CFDataCreateWithBytesNoCopy
+C/func/-/CFDataDeleteBytes
+C/func/-/CFDataGetBytePtr
+C/func/-/CFDataGetBytes
+C/func/-/CFDataGetLength
+C/func/-/CFDataGetMutableBytePtr
+C/func/-/CFDataGetTypeID
+C/func/-/CFDataIncreaseLength
+C/tdef/-/CFDataRef
+C/func/-/CFDataReplaceBytes
+C/func/-/CFDataSetLength
+C/func/-/CFDateCompare
+C/func/-/CFDateCreate
+C/func/-/CFDateFormatterCopyProperty
+C/func/-/CFDateFormatterCreate
+C/func/-/CFDateFormatterCreateDateFormatFromTemplate
+C/func/-/CFDateFormatterCreateDateFromString
+C/func/-/CFDateFormatterCreateStringWithAbsoluteTime
+C/func/-/CFDateFormatterCreateStringWithDate
+C/func/-/CFDateFormatterGetAbsoluteTimeFromString
+C/func/-/CFDateFormatterGetDateStyle
+C/func/-/CFDateFormatterGetFormat
+C/func/-/CFDateFormatterGetLocale
+C/func/-/CFDateFormatterGetTimeStyle
+C/func/-/CFDateFormatterGetTypeID
+C/tdef/-/CFDateFormatterRef
+C/func/-/CFDateFormatterSetFormat
+C/func/-/CFDateFormatterSetProperty
+C/tdef/-/CFDateFormatterStyle
+C/func/-/CFDateGetAbsoluteTime
+C/func/-/CFDateGetTimeIntervalSinceDate
+C/func/-/CFDateGetTypeID
+C/tdef/-/CFDateRef
+C/func/-/CFDictionaryAddValue
+C/tdef/-/CFDictionaryApplierFunction
+C/func/-/CFDictionaryApplyFunction
+C/func/-/CFDictionaryContainsKey
+C/func/-/CFDictionaryContainsValue
+C/tdef/-/CFDictionaryCopyDescriptionCallBack
+C/func/-/CFDictionaryCreate
+C/func/-/CFDictionaryCreateCopy
+C/func/-/CFDictionaryCreateMutable
+C/func/-/CFDictionaryCreateMutableCopy
+C/tdef/-/CFDictionaryEqualCallBack
+C/func/-/CFDictionaryGetCount
+C/func/-/CFDictionaryGetCountOfKey
+C/func/-/CFDictionaryGetCountOfValue
+C/func/-/CFDictionaryGetKeysAndValues
+C/func/-/CFDictionaryGetTypeID
+C/func/-/CFDictionaryGetValue
+C/func/-/CFDictionaryGetValueIfPresent
+C/tdef/-/CFDictionaryHashCallBack
+C/tdef/-/CFDictionaryKeyCallBacks
+C/tdef/-/CFDictionaryRef
+C/tdef/-/CFDictionaryReleaseCallBack
+C/func/-/CFDictionaryRemoveAllValues
+C/func/-/CFDictionaryRemoveValue
+C/func/-/CFDictionaryReplaceValue
+C/tdef/-/CFDictionaryRetainCallBack
+C/func/-/CFDictionarySetValue
+C/tdef/-/CFDictionaryValueCallBacks
+C/func/-/CFEqual
+C/func/-/CFErrorCopyDescription
+C/func/-/CFErrorCopyFailureReason
+C/func/-/CFErrorCopyRecoverySuggestion
+C/func/-/CFErrorCopyUserInfo
+C/func/-/CFErrorCreate
+C/func/-/CFErrorCreateWithUserInfoKeysAndValues
+C/func/-/CFErrorGetCode
+C/func/-/CFErrorGetDomain
+C/func/-/CFErrorGetTypeID
+C/tdef/-/CFErrorRef
+C/tag/-/CFFileDescriptorCallBack
+C/tdef/-/CFFileDescriptorContext
+C/func/-/CFFileDescriptorCreate
+C/func/-/CFFileDescriptorCreateRunLoopSource
+C/func/-/CFFileDescriptorDisableCallBacks
+C/func/-/CFFileDescriptorEnableCallBacks
+C/func/-/CFFileDescriptorGetContext
+C/func/-/CFFileDescriptorGetNativeDescriptor
+C/func/-/CFFileDescriptorGetTypeID
+C/func/-/CFFileDescriptorInvalidate
+C/func/-/CFFileDescriptorIsValid
+C/tdef/-/CFFileDescriptorNativeDescriptor
+C/tdef/-/CFFileDescriptorRef
+C/func/-/CFFTPCreateParsedResourceListing
+C/func/-/CFGetAllocator
+C/func/-/cfgetispeed
+C/func/-/cfgetospeed
+C/func/-/CFGetRetainCount
+-/writerid/-/cfGetRule
+C/func/-/CFGetTypeID
+C/tdef/-/CFGregorianDate
+C/func/-/CFGregorianDateGetAbsoluteTime
+C/func/-/CFGregorianDateIsValid
+C/tdef/-/CFGregorianUnitFlags
+C/tdef/-/CFGregorianUnits
+C/func/-/CFHash
+C/tdef/-/CFHashCode
+C/func/-/CFHostCancelInfoResolution
+C/tdef/-/CFHostClientCallBack
+C/tdef/-/CFHostClientContext
+C/func/-/CFHostCreateCopy
+C/func/-/CFHostCreateWithAddress
+C/func/-/CFHostCreateWithName
+C/func/-/CFHostGetAddressing
+C/func/-/CFHostGetNames
+C/func/-/CFHostGetReachability
+C/func/-/CFHostGetTypeID
+C/tdef/-/CFHostInfoType
+C/tdef/-/CFHostRef
+C/func/-/CFHostScheduleWithRunLoop
+C/func/-/CFHostSetClient
+C/func/-/CFHostStartInfoResolution
+C/func/-/CFHostUnscheduleFromRunLoop
+C/func/-/CFHTTPAuthenticationAppliesToRequest
+C/func/-/CFHTTPAuthenticationCopyDomains
+C/func/-/CFHTTPAuthenticationCopyMethod
+C/func/-/CFHTTPAuthenticationCopyRealm
+C/func/-/CFHTTPAuthenticationCreateFromResponse
+C/func/-/CFHTTPAuthenticationGetTypeID
+C/func/-/CFHTTPAuthenticationIsValid
+C/tdef/-/CFHTTPAuthenticationRef
+C/func/-/CFHTTPAuthenticationRequiresAccountDomain
+C/func/-/CFHTTPAuthenticationRequiresOrderedRequests
+C/func/-/CFHTTPAuthenticationRequiresUserNameAndPassword
+C/func/-/CFHTTPMessageAddAuthentication
+C/func/-/CFHTTPMessageAppendBytes
+C/func/-/CFHTTPMessageApplyCredentialDictionary
+C/func/-/CFHTTPMessageApplyCredentials
+C/func/-/CFHTTPMessageCopyAllHeaderFields
+C/func/-/CFHTTPMessageCopyBody
+C/func/-/CFHTTPMessageCopyHeaderFieldValue
+C/func/-/CFHTTPMessageCopyRequestMethod
+C/func/-/CFHTTPMessageCopyRequestURL
+C/func/-/CFHTTPMessageCopyResponseStatusLine
+C/func/-/CFHTTPMessageCopySerializedMessage
+C/func/-/CFHTTPMessageCopyVersion
+C/func/-/CFHTTPMessageCreateCopy
+C/func/-/CFHTTPMessageCreateEmpty
+C/func/-/CFHTTPMessageCreateRequest
+C/func/-/CFHTTPMessageCreateResponse
+C/func/-/CFHTTPMessageGetResponseStatusCode
+C/func/-/CFHTTPMessageGetTypeID
+C/func/-/CFHTTPMessageIsHeaderComplete
+C/func/-/CFHTTPMessageIsRequest
+C/tdef/-/CFHTTPMessageRef
+C/func/-/CFHTTPMessageSetBody
+C/func/-/CFHTTPMessageSetHeaderFieldValue
+C/func/-/CFHTTPReadStreamSetProxy
+C/func/-/CFHTTPReadStreamSetRedirectsAutomatically
+C/tdef/-/CFIndex
+C/func/-/CFLocaleCopyAvailableLocaleIdentifiers
+C/func/-/CFLocaleCopyCommonISOCurrencyCodes
+C/func/-/CFLocaleCopyCurrent
+C/func/-/CFLocaleCopyDisplayNameForPropertyValue
+C/func/-/CFLocaleCopyISOCountryCodes
+C/func/-/CFLocaleCopyISOCurrencyCodes
+C/func/-/CFLocaleCopyISOLanguageCodes
+C/func/-/CFLocaleCopyPreferredLanguages
+C/func/-/CFLocaleCreate
+C/func/-/CFLocaleCreateCanonicalLanguageIdentifierFromString
+C/func/-/CFLocaleCreateCanonicalLocaleIdentifierFromScriptManagerCodes
+C/func/-/CFLocaleCreateCanonicalLocaleIdentifierFromString
+C/func/-/CFLocaleCreateComponentsFromLocaleIdentifier
+C/func/-/CFLocaleCreateCopy
+C/func/-/CFLocaleCreateLocaleIdentifierFromComponents
+C/func/-/CFLocaleCreateLocaleIdentifierFromWindowsLocaleCode
+C/func/-/CFLocaleGetIdentifier
+C/func/-/CFLocaleGetLanguageCharacterDirection
+C/func/-/CFLocaleGetLanguageLineDirection
+C/func/-/CFLocaleGetSystem
+C/func/-/CFLocaleGetTypeID
+C/func/-/CFLocaleGetValue
+C/func/-/CFLocaleGetWindowsLocaleCodeFromLocaleIdentifier
+C/tdef/-/CFLocaleRef
+C/tdef/-/CFMachPortCallBack
+C/tdef/-/CFMachPortContext
+C/func/-/CFMachPortCreate
+C/func/-/CFMachPortCreateRunLoopSource
+C/func/-/CFMachPortCreateWithPort
+C/func/-/CFMachPortGetContext
+C/func/-/CFMachPortGetInvalidationCallBack
+C/func/-/CFMachPortGetPort
+C/func/-/CFMachPortGetTypeID
+C/func/-/CFMachPortInvalidate
+C/tdef/-/CFMachPortInvalidationCallBack
+C/func/-/CFMachPortIsValid
+C/tdef/-/CFMachPortRef
+C/func/-/CFMachPortSetInvalidationCallBack
+C/func/-/CFMakeCollectable
+C/func/-/cfmakeraw
+C/tdef/-/CFMessagePortCallBack
+C/tdef/-/CFMessagePortContext
+C/func/-/CFMessagePortCreateLocal
+C/func/-/CFMessagePortCreateRemote
+C/func/-/CFMessagePortCreateRunLoopSource
+C/func/-/CFMessagePortGetContext
+C/func/-/CFMessagePortGetInvalidationCallBack
+C/func/-/CFMessagePortGetName
+C/func/-/CFMessagePortGetTypeID
+C/func/-/CFMessagePortInvalidate
+C/tdef/-/CFMessagePortInvalidationCallBack
+C/func/-/CFMessagePortIsRemote
+C/func/-/CFMessagePortIsValid
+C/tdef/-/CFMessagePortRef
+C/func/-/CFMessagePortSendRequest
+C/func/-/CFMessagePortSetInvalidationCallBack
+C/func/-/CFMessagePortSetName
+C/tdef/-/CFMutableArrayRef
+C/tdef/-/CFMutableAttributedStringRef
+C/tdef/-/CFMutableBagRef
+C/tdef/-/CFMutableBitVectorRef
+C/tdef/-/CFMutableCharacterSetRef
+C/tdef/-/CFMutableDataRef
+C/tdef/-/CFMutableDictionaryRef
+C/tdef/-/CFMutableSetRef
+C/tdef/-/CFMutableStringRef
+C/func/-/CFNetDiagnosticCopyNetworkStatusPassively
+C/func/-/CFNetDiagnosticCreateWithStreams
+C/func/-/CFNetDiagnosticCreateWithURL
+C/func/-/CFNetDiagnosticDiagnoseProblemInteractively
+C/tdef/-/CFNetDiagnosticRef
+C/func/-/CFNetDiagnosticSetName
+C/tdef/-/CFNetDiagnosticStatus
+C/tdef/-/CFNetDiagnosticStatusValues
+C/tdef/-/CFNetServiceBrowserClientCallBack
+C/func/-/CFNetServiceBrowserCreate
+C/func/-/CFNetServiceBrowserGetTypeID
+C/func/-/CFNetServiceBrowserInvalidate
+C/tdef/-/CFNetServiceBrowserRef
+C/func/-/CFNetServiceBrowserScheduleWithRunLoop
+C/func/-/CFNetServiceBrowserSearchForDomains
+C/func/-/CFNetServiceBrowserSearchForServices
+C/func/-/CFNetServiceBrowserStopSearch
+C/func/-/CFNetServiceBrowserUnscheduleFromRunLoop
+C/func/-/CFNetServiceCancel
+C/tdef/-/CFNetServiceClientCallBack
+C/tdef/-/CFNetServiceClientContext
+C/func/-/CFNetServiceCreate
+C/func/-/CFNetServiceCreateCopy
+C/func/-/CFNetServiceCreateDictionaryWithTXTData
+C/func/-/CFNetServiceCreateTXTDataWithDictionary
+C/func/-/CFNetServiceGetAddressing
+C/func/-/CFNetServiceGetDomain
+C/func/-/CFNetServiceGetName
+C/func/-/CFNetServiceGetPortNumber
+C/func/-/CFNetServiceGetProtocolSpecificInformation
+C/func/-/CFNetServiceGetTargetHost
+C/func/-/CFNetServiceGetTXTData
+C/func/-/CFNetServiceGetType
+C/func/-/CFNetServiceGetTypeID
+C/tdef/-/CFNetServiceMonitorClientCallBack
+C/func/-/CFNetServiceMonitorCreate
+C/func/-/CFNetServiceMonitorGetTypeID
+C/func/-/CFNetServiceMonitorInvalidate
+C/tdef/-/CFNetServiceMonitorRef
+C/func/-/CFNetServiceMonitorScheduleWithRunLoop
+C/func/-/CFNetServiceMonitorStart
+C/func/-/CFNetServiceMonitorStop
+C/tdef/-/CFNetServiceMonitorType
+C/func/-/CFNetServiceMonitorUnscheduleFromRunLoop
+C/tdef/-/CFNetServiceRef
+C/func/-/CFNetServiceRegister
+C/func/-/CFNetServiceRegisterWithOptions
+C/func/-/CFNetServiceResolve
+C/func/-/CFNetServiceResolveWithTimeout
+C/func/-/CFNetServiceScheduleWithRunLoop
+C/tdef/-/CFNetServicesError
+C/func/-/CFNetServiceSetClient
+C/func/-/CFNetServiceSetProtocolSpecificInformation
+C/func/-/CFNetServiceSetTXTData
+C/func/-/CFNetServiceUnscheduleFromRunLoop
+C/func/-/CFNetworkCopyProxiesForAutoConfigurationScript
+C/func/-/CFNetworkCopyProxiesForURL
+C/func/-/CFNetworkCopySystemProxySettings
+C/tdef/-/CFNetworkErrors
+C/func/-/CFNetworkExecuteProxyAutoConfigurationScript
+C/func/-/CFNetworkExecuteProxyAutoConfigurationURL
+C/tdef/-/CFNotificationCallback
+C/func/-/CFNotificationCenterAddObserver
+C/func/-/CFNotificationCenterGetDarwinNotifyCenter
+C/func/-/CFNotificationCenterGetDistributedCenter
+C/func/-/CFNotificationCenterGetLocalCenter
+C/func/-/CFNotificationCenterGetTypeID
+C/func/-/CFNotificationCenterPostNotification
+C/func/-/CFNotificationCenterPostNotificationWithOptions
+C/tdef/-/CFNotificationCenterRef
+C/func/-/CFNotificationCenterRemoveEveryObserver
+C/func/-/CFNotificationCenterRemoveObserver
+C/tdef/-/CFNotificationSuspensionBehavior
+C/econst/-/CFNotificationSuspensionBehaviorCoalesce
+C/econst/-/CFNotificationSuspensionBehaviorDeliverImmediately
+C/econst/-/CFNotificationSuspensionBehaviorDrop
+C/econst/-/CFNotificationSuspensionBehaviorHold
+C/func/-/CFNullGetTypeID
+C/tdef/-/CFNullRef
+C/func/-/CFNumberCompare
+C/func/-/CFNumberCreate
+C/func/-/CFNumberFormatterCopyProperty
+C/func/-/CFNumberFormatterCreate
+C/func/-/CFNumberFormatterCreateNumberFromString
+C/func/-/CFNumberFormatterCreateStringWithNumber
+C/func/-/CFNumberFormatterCreateStringWithValue
+C/func/-/CFNumberFormatterGetDecimalInfoForCurrencyCode
+C/func/-/CFNumberFormatterGetFormat
+C/func/-/CFNumberFormatterGetLocale
+C/func/-/CFNumberFormatterGetStyle
+C/func/-/CFNumberFormatterGetTypeID
+C/func/-/CFNumberFormatterGetValueFromString
+C/tdef/-/CFNumberFormatterOptionFlags
+C/tdef/-/CFNumberFormatterPadPosition
+C/tdef/-/CFNumberFormatterRef
+C/tdef/-/CFNumberFormatterRoundingMode
+C/func/-/CFNumberFormatterSetFormat
+C/func/-/CFNumberFormatterSetProperty
+C/tdef/-/CFNumberFormatterStyle
+C/func/-/CFNumberGetByteSize
+C/func/-/CFNumberGetType
+C/func/-/CFNumberGetTypeID
+C/func/-/CFNumberGetValue
+C/func/-/CFNumberIsFloatType
+C/tdef/-/CFNumberRef
+C/tdef/-/CFNumberType
+C/tdef/-/CFOptionFlags
+C/func/-/CFPlugInAddInstanceForFactory
+C/func/-/CFPlugInCreate
+C/tdef/-/CFPlugInDynamicRegisterFunction
+C/tdef/-/CFPlugInFactoryFunction
+C/func/-/CFPlugInFindFactoriesForPlugInType
+C/func/-/CFPlugInFindFactoriesForPlugInTypeInPlugIn
+C/func/-/CFPlugInGetBundle
+C/func/-/CFPlugInGetTypeID
+C/func/-/CFPlugInInstanceCreate
+C/func/-/CFPlugInInstanceCreateWithInstanceDataSize
+C/tdef/-/CFPlugInInstanceDeallocateInstanceDataFunction
+C/func/-/CFPlugInInstanceGetFactoryName
+C/func/-/CFPlugInInstanceGetInstanceData
+C/tdef/-/CFPlugInInstanceGetInterfaceFunction
+C/func/-/CFPlugInInstanceGetInterfaceFunctionTable
+C/func/-/CFPlugInInstanceGetTypeID
+C/tdef/-/CFPlugInInstanceRef
+C/func/-/CFPlugInIsLoadOnDemand
+C/tdef/-/CFPlugInRef
+C/func/-/CFPlugInRegisterFactoryFunction
+C/func/-/CFPlugInRegisterFactoryFunctionByName
+C/func/-/CFPlugInRegisterPlugInType
+C/func/-/CFPlugInRemoveInstanceForFactory
+C/func/-/CFPlugInSetLoadOnDemand
+C/tdef/-/CFPlugInUnloadFunction
+C/func/-/CFPlugInUnregisterFactory
+C/func/-/CFPlugInUnregisterPlugInType
+C/func/-/CFPreferencesAddSuitePreferencesToApp
+C/func/-/CFPreferencesAppSynchronize
+C/func/-/CFPreferencesAppValueIsForced
+C/func/-/CFPreferencesCopyApplicationList
+C/func/-/CFPreferencesCopyAppValue
+C/func/-/CFPreferencesCopyKeyList
+C/func/-/CFPreferencesCopyMultiple
+C/func/-/CFPreferencesCopyValue
+C/func/-/CFPreferencesGetAppBooleanValue
+C/func/-/CFPreferencesGetAppIntegerValue
+C/func/-/CFPreferencesRemoveSuitePreferencesFromApp
+C/func/-/CFPreferencesSetAppValue
+C/func/-/CFPreferencesSetMultiple
+C/func/-/CFPreferencesSetValue
+C/func/-/CFPreferencesSynchronize
+C/func/-/CFPropertyListCreateData
+C/func/-/CFPropertyListCreateDeepCopy
+C/func/-/CFPropertyListCreateFromStream
+C/func/-/CFPropertyListCreateFromXMLData
+C/func/-/CFPropertyListCreateWithData
+C/func/-/CFPropertyListCreateWithStream
+C/func/-/CFPropertyListCreateXMLData
+C/tdef/-/CFPropertyListFormat
+C/func/-/CFPropertyListIsValid
+C/tdef/-/CFPropertyListMutabilityOptions
+C/tdef/-/CFPropertyListRef
+C/func/-/CFPropertyListWrite
+C/func/-/CFPropertyListWriteToStream
+C/tdef/-/CFProxyAutoConfigurationResultCallback
+C/tdef/-/CFRange
+C/func/-/CFRangeMake
+C/tdef/-/CFReadStreamClientCallBack
+C/func/-/CFReadStreamClose
+C/func/-/CFReadStreamCopyError
+C/func/-/CFReadStreamCopyProperty
+C/func/-/CFReadStreamCreateForHTTPRequest
+C/func/-/CFReadStreamCreateForStreamedHTTPRequest
+C/func/-/CFReadStreamCreateWithBytesNoCopy
+C/func/-/CFReadStreamCreateWithFile
+C/func/-/CFReadStreamCreateWithFTPURL
+C/func/-/CFReadStreamGetBuffer
+C/func/-/CFReadStreamGetError
+C/func/-/CFReadStreamGetStatus
+C/func/-/CFReadStreamGetTypeID
+C/func/-/CFReadStreamHasBytesAvailable
+C/func/-/CFReadStreamOpen
+C/func/-/CFReadStreamRead
+C/tdef/-/CFReadStreamRef
+C/func/-/CFReadStreamScheduleWithRunLoop
+C/func/-/CFReadStreamSetClient
+C/func/-/CFReadStreamSetProperty
+C/func/-/CFReadStreamUnscheduleFromRunLoop
+C/func/-/CFRelease
+C/func/-/CFRetain
+C/tdef/-/CFRunLoopActivity
+C/func/-/CFRunLoopAddCommonMode
+C/func/-/CFRunLoopAddObserver
+C/func/-/CFRunLoopAddSource
+C/func/-/CFRunLoopAddTimer
+C/tdef/-/CFRunLoopCancelCallBack
+C/func/-/CFRunLoopContainsObserver
+C/func/-/CFRunLoopContainsSource
+C/func/-/CFRunLoopContainsTimer
+C/func/-/CFRunLoopCopyAllModes
+C/func/-/CFRunLoopCopyCurrentMode
+C/tdef/-/CFRunLoopEqualCallBack
+C/func/-/CFRunLoopGetCurrent
+C/func/-/CFRunLoopGetMain
+C/func/-/CFRunLoopGetNextTimerFireDate
+C/tdef/-/CFRunLoopGetPortCallBack
+C/func/-/CFRunLoopGetTypeID
+C/tdef/-/CFRunLoopHashCallBack
+C/func/-/CFRunLoopIsWaiting
+C/tdef/-/CFRunLoopMachPerformCallBack
+C/tdef/-/CFRunLoopObserverCallBack
+C/tdef/-/CFRunLoopObserverContext
+C/func/-/CFRunLoopObserverCreate
+C/func/-/CFRunLoopObserverDoesRepeat
+C/func/-/CFRunLoopObserverGetActivities
+C/func/-/CFRunLoopObserverGetContext
+C/func/-/CFRunLoopObserverGetOrder
+C/func/-/CFRunLoopObserverGetTypeID
+C/func/-/CFRunLoopObserverInvalidate
+C/func/-/CFRunLoopObserverIsValid
+C/tdef/-/CFRunLoopObserverRef
+C/func/-/CFRunLoopPerformBlock
+C/tdef/-/CFRunLoopPerformCallBack
+C/tdef/-/CFRunLoopRef
+C/func/-/CFRunLoopRemoveObserver
+C/func/-/CFRunLoopRemoveSource
+C/func/-/CFRunLoopRemoveTimer
+C/func/-/CFRunLoopRun
+C/func/-/CFRunLoopRunInMode
+C/tdef/-/CFRunLoopScheduleCallBack
+C/tdef/-/CFRunLoopSourceContext
+C/tdef/-/CFRunLoopSourceContext1
+C/func/-/CFRunLoopSourceCreate
+C/func/-/CFRunLoopSourceGetContext
+C/func/-/CFRunLoopSourceGetOrder
+C/func/-/CFRunLoopSourceGetTypeID
+C/func/-/CFRunLoopSourceInvalidate
+C/func/-/CFRunLoopSourceIsValid
+C/tdef/-/CFRunLoopSourceRef
+C/func/-/CFRunLoopSourceSignal
+C/func/-/CFRunLoopStop
+C/tdef/-/CFRunLoopTimerCallBack
+C/tdef/-/CFRunLoopTimerContext
+C/func/-/CFRunLoopTimerCreate
+C/func/-/CFRunLoopTimerDoesRepeat
+C/func/-/CFRunLoopTimerGetContext
+C/func/-/CFRunLoopTimerGetInterval
+C/func/-/CFRunLoopTimerGetNextFireDate
+C/func/-/CFRunLoopTimerGetOrder
+C/func/-/CFRunLoopTimerGetTypeID
+C/func/-/CFRunLoopTimerInvalidate
+C/func/-/CFRunLoopTimerIsValid
+C/tdef/-/CFRunLoopTimerRef
+C/func/-/CFRunLoopTimerSetNextFireDate
+C/func/-/CFRunLoopWakeUp
+C/func/-/CFSetAddValue
+C/tdef/-/CFSetApplierFunction
+C/func/-/CFSetApplyFunction
+C/tdef/-/CFSetCallBacks
+C/func/-/CFSetContainsValue
+C/tdef/-/CFSetCopyDescriptionCallBack
+C/func/-/CFSetCreate
+C/func/-/CFSetCreateCopy
+C/func/-/CFSetCreateMutable
+C/func/-/CFSetCreateMutableCopy
+C/tdef/-/CFSetEqualCallBack
+C/func/-/CFSetGetCount
+C/func/-/CFSetGetCountOfValue
+C/func/-/CFSetGetTypeID
+C/func/-/CFSetGetValue
+C/func/-/CFSetGetValueIfPresent
+C/func/-/CFSetGetValues
+C/tdef/-/CFSetHashCallBack
+C/func/-/cfsetispeed
+C/func/-/cfsetospeed
+C/tdef/-/CFSetRef
+C/tdef/-/CFSetReleaseCallBack
+C/func/-/CFSetRemoveAllValues
+C/func/-/CFSetRemoveValue
+C/func/-/CFSetReplaceValue
+C/tdef/-/CFSetRetainCallBack
+C/func/-/CFSetSetValue
+C/func/-/cfsetspeed
+C/func/-/CFShow
+C/func/-/CFShowStr
+C/tdef/-/CFSocketCallBack
+C/tdef/-/CFSocketCallBackType
+C/func/-/CFSocketConnectToAddress
+C/tdef/-/CFSocketContext
+C/func/-/CFSocketCopyAddress
+C/func/-/CFSocketCopyPeerAddress
+C/func/-/CFSocketCopyRegisteredSocketSignature
+C/func/-/CFSocketCopyRegisteredValue
+C/func/-/CFSocketCreate
+C/func/-/CFSocketCreateConnectedToSocketSignature
+C/func/-/CFSocketCreateRunLoopSource
+C/func/-/CFSocketCreateWithNative
+C/func/-/CFSocketCreateWithSocketSignature
+C/func/-/CFSocketDisableCallBacks
+C/func/-/CFSocketEnableCallBacks
+C/tdef/-/CFSocketError
+C/func/-/CFSocketGetContext
+C/func/-/CFSocketGetDefaultNameRegistryPortNumber
+C/func/-/CFSocketGetNative
+C/func/-/CFSocketGetSocketFlags
+C/func/-/CFSocketGetTypeID
+C/func/-/CFSocketInvalidate
+C/func/-/CFSocketIsValid
+C/tdef/-/CFSocketNativeHandle
+C/tdef/-/CFSocketRef
+C/func/-/CFSocketRegisterSocketSignature
+C/func/-/CFSocketRegisterValue
+C/func/-/CFSocketSendData
+C/func/-/CFSocketSetAddress
+C/func/-/CFSocketSetDefaultNameRegistryPortNumber
+C/func/-/CFSocketSetSocketFlags
+C/tdef/-/CFSocketSignature
+C/func/-/CFSocketStreamPairSetSecurityProtocol
+C/func/-/CFSocketStreamSOCKSGetError
+C/func/-/CFSocketStreamSOCKSGetErrorSubdomain
+C/func/-/CFSocketUnregister
+C/macro/-/CFSTR
+C/tag/-/CFStreamClientContext
+C/tdef/-/CFStreamClientContext
+C/func/-/CFStreamCreateBoundPair
+C/func/-/CFStreamCreatePairWithPeerSocketSignature
+C/func/-/CFStreamCreatePairWithSocket
+C/func/-/CFStreamCreatePairWithSocketToCFHost
+C/func/-/CFStreamCreatePairWithSocketToHost
+C/func/-/CFStreamCreatePairWithSocketToNetService
+C/tdef/-/CFStreamError
+C/tdef/-/CFStreamErrorDomain
+C/tdef/-/CFStreamErrorHTTP
+C/tdef/-/CFStreamErrorHTTPAuthentication
+C/tdef/-/CFStreamEventType
+C/tdef/-/CFStreamSocketSecurityProtocol
+C/tdef/-/CFStreamStatus
+C/func/-/CFStringAppend
+C/func/-/CFStringAppendCharacters
+C/func/-/CFStringAppendCString
+C/func/-/CFStringAppendFormat
+C/func/-/CFStringAppendFormatAndArguments
+C/func/-/CFStringAppendPascalString
+C/tdef/-/CFStringBuiltInEncodings
+C/func/-/CFStringCapitalize
+C/func/-/CFStringCompare
+C/tdef/-/CFStringCompareFlags
+C/func/-/CFStringCompareWithOptions
+C/func/-/CFStringCompareWithOptionsAndLocale
+C/func/-/CFStringConvertEncodingToIANACharSetName
+C/func/-/CFStringConvertEncodingToNSStringEncoding
+C/func/-/CFStringConvertEncodingToWindowsCodepage
+C/func/-/CFStringConvertIANACharSetNameToEncoding
+C/func/-/CFStringConvertNSStringEncodingToEncoding
+C/func/-/CFStringConvertWindowsCodepageToEncoding
+C/func/-/CFStringCreateArrayBySeparatingStrings
+C/func/-/CFStringCreateArrayWithFindResults
+C/func/-/CFStringCreateByCombiningStrings
+C/func/-/CFStringCreateCopy
+C/func/-/CFStringCreateExternalRepresentation
+C/func/-/CFStringCreateFromExternalRepresentation
+C/func/-/CFStringCreateMutable
+C/func/-/CFStringCreateMutableCopy
+C/func/-/CFStringCreateMutableWithExternalCharactersNoCopy
+C/func/-/CFStringCreateWithBytes
+C/func/-/CFStringCreateWithBytesNoCopy
+C/func/-/CFStringCreateWithCharacters
+C/func/-/CFStringCreateWithCharactersNoCopy
+C/func/-/CFStringCreateWithCString
+C/func/-/CFStringCreateWithCStringNoCopy
+C/func/-/CFStringCreateWithFileSystemRepresentation
+C/func/-/CFStringCreateWithFormat
+C/func/-/CFStringCreateWithFormatAndArguments
+C/func/-/CFStringCreateWithPascalString
+C/func/-/CFStringCreateWithPascalStringNoCopy
+C/func/-/CFStringCreateWithSubstring
+C/func/-/CFStringDelete
+C/tdef/-/CFStringEncoding
+C/tdef/-/CFStringEncodings
+C/func/-/CFStringFind
+C/func/-/CFStringFindAndReplace
+C/func/-/CFStringFindCharacterFromSet
+C/func/-/CFStringFindWithOptions
+C/func/-/CFStringFindWithOptionsAndLocale
+C/func/-/CFStringFold
+C/func/-/CFStringGetBytes
+C/func/-/CFStringGetCharacterAtIndex
+C/func/-/CFStringGetCharacterFromInlineBuffer
+C/func/-/CFStringGetCharacters
+C/func/-/CFStringGetCharactersPtr
+C/func/-/CFStringGetCString
+C/func/-/CFStringGetCStringPtr
+C/func/-/CFStringGetDoubleValue
+C/func/-/CFStringGetFastestEncoding
+C/func/-/CFStringGetFileSystemRepresentation
+C/func/-/CFStringGetIntValue
+C/func/-/CFStringGetLength
+C/func/-/CFStringGetLineBounds
+C/func/-/CFStringGetListOfAvailableEncodings
+C/func/-/CFStringGetLongCharacterForSurrogatePair
+C/func/-/CFStringGetMaximumSizeForEncoding
+C/func/-/CFStringGetMaximumSizeOfFileSystemRepresentation
+C/func/-/CFStringGetMostCompatibleMacStringEncoding
+C/func/-/CFStringGetNameOfEncoding
+C/func/-/CFStringGetParagraphBounds
+C/func/-/CFStringGetPascalString
+C/func/-/CFStringGetPascalStringPtr
+C/func/-/CFStringGetRangeOfComposedCharactersAtIndex
+C/func/-/CFStringGetSmallestEncoding
+C/func/-/CFStringGetSurrogatePairForLongCharacter
+C/func/-/CFStringGetSystemEncoding
+C/func/-/CFStringGetTypeID
+C/func/-/CFStringHasPrefix
+C/func/-/CFStringHasSuffix
+C/func/-/CFStringInitInlineBuffer
+C/tag/-/CFStringInlineBuffer
+C/func/-/CFStringInsert
+C/func/-/CFStringIsEncodingAvailable
+C/func/-/CFStringIsSurrogateHighCharacter
+C/func/-/CFStringIsSurrogateLowCharacter
+C/func/-/CFStringLowercase
+C/tdef/-/CFStringNormalizationForm
+C/func/-/CFStringNormalize
+C/func/-/CFStringPad
+C/tdef/-/CFStringRef
+C/func/-/CFStringReplace
+C/func/-/CFStringReplaceAll
+C/func/-/CFStringSetExternalCharactersNoCopy
+C/func/-/CFStringTokenizerAdvanceToNextToken
+C/func/-/CFStringTokenizerCopyBestStringLanguage
+C/func/-/CFStringTokenizerCopyCurrentTokenAttribute
+C/func/-/CFStringTokenizerCreate
+C/func/-/CFStringTokenizerGetCurrentSubTokens
+C/func/-/CFStringTokenizerGetCurrentTokenRange
+C/func/-/CFStringTokenizerGetTypeID
+C/func/-/CFStringTokenizerGoToTokenAtIndex
+C/tdef/-/CFStringTokenizerRef
+C/func/-/CFStringTokenizerSetString
+C/tdef/-/CFStringTokenizerTokenType
+C/func/-/CFStringTransform
+C/func/-/CFStringTrim
+C/func/-/CFStringTrimWhitespace
+C/func/-/CFStringUppercase
+C/func/-/CFSwapInt16
+C/func/-/CFSwapInt16BigToHost
+C/func/-/CFSwapInt16HostToBig
+C/func/-/CFSwapInt16HostToLittle
+C/func/-/CFSwapInt16LittleToHost
+C/func/-/CFSwapInt32
+C/func/-/CFSwapInt32BigToHost
+C/func/-/CFSwapInt32HostToBig
+C/func/-/CFSwapInt32HostToLittle
+C/func/-/CFSwapInt32LittleToHost
+C/func/-/CFSwapInt64
+C/func/-/CFSwapInt64BigToHost
+C/func/-/CFSwapInt64HostToBig
+C/func/-/CFSwapInt64HostToLittle
+C/func/-/CFSwapInt64LittleToHost
+C/tdef/-/CFSwappedFloat32
+C/tdef/-/CFSwappedFloat64
+C/tdef/-/CFTimeInterval
+C/func/-/CFTimeZoneCopyAbbreviation
+C/func/-/CFTimeZoneCopyAbbreviationDictionary
+C/func/-/CFTimeZoneCopyDefault
+C/func/-/CFTimeZoneCopyKnownNames
+C/func/-/CFTimeZoneCopyLocalizedName
+C/func/-/CFTimeZoneCopySystem
+C/func/-/CFTimeZoneCreate
+C/func/-/CFTimeZoneCreateWithName
+C/func/-/CFTimeZoneCreateWithTimeIntervalFromGMT
+C/func/-/CFTimeZoneGetData
+C/func/-/CFTimeZoneGetDaylightSavingTimeOffset
+C/func/-/CFTimeZoneGetName
+C/func/-/CFTimeZoneGetNextDaylightSavingTimeTransition
+C/func/-/CFTimeZoneGetSecondsFromGMT
+C/func/-/CFTimeZoneGetTypeID
+C/func/-/CFTimeZoneIsDaylightSavingTime
+C/tdef/-/CFTimeZoneNameStyle
+C/tdef/-/CFTimeZoneRef
+C/func/-/CFTimeZoneResetSystem
+C/func/-/CFTimeZoneSetAbbreviationDictionary
+C/func/-/CFTimeZoneSetDefault
+C/func/-/CFTreeAppendChild
+C/tdef/-/CFTreeApplierFunction
+C/func/-/CFTreeApplyFunctionToChildren
+C/tdef/-/CFTreeContext
+C/tdef/-/CFTreeCopyDescriptionCallBack
+C/func/-/CFTreeCreate
+C/func/-/CFTreeFindRoot
+C/func/-/CFTreeGetChildAtIndex
+C/func/-/CFTreeGetChildCount
+C/func/-/CFTreeGetChildren
+C/func/-/CFTreeGetContext
+C/func/-/CFTreeGetFirstChild
+C/func/-/CFTreeGetNextSibling
+C/func/-/CFTreeGetParent
+C/func/-/CFTreeGetTypeID
+C/func/-/CFTreeInsertSibling
+C/func/-/CFTreePrependChild
+C/tdef/-/CFTreeRef
+C/tdef/-/CFTreeReleaseCallBack
+C/func/-/CFTreeRemove
+C/func/-/CFTreeRemoveAllChildren
+C/tdef/-/CFTreeRetainCallBack
+C/func/-/CFTreeSetContext
+C/func/-/CFTreeSortChildren
+C/tdef/-/CFTypeID
+C/tdef/-/CFTypeRef
+C/tdef/-/CFURLBookmarkCreationOptions
+C/tdef/-/CFURLBookmarkFileCreationOptions
+C/tdef/-/CFURLBookmarkResolutionOptions
+C/func/-/CFURLCanBeDecomposed
+C/func/-/CFURLClearResourcePropertyCache
+C/func/-/CFURLClearResourcePropertyCacheForKey
+C/tdef/-/CFURLComponentType
+C/func/-/CFURLCopyAbsoluteURL
+C/func/-/CFURLCopyFileSystemPath
+C/func/-/CFURLCopyFragment
+C/func/-/CFURLCopyHostName
+C/func/-/CFURLCopyLastPathComponent
+C/func/-/CFURLCopyNetLocation
+C/func/-/CFURLCopyParameterString
+C/func/-/CFURLCopyPassword
+C/func/-/CFURLCopyPath
+C/func/-/CFURLCopyPathExtension
+C/func/-/CFURLCopyQueryString
+C/func/-/CFURLCopyResourcePropertiesForKeys
+C/func/-/CFURLCopyResourcePropertyForKey
+C/func/-/CFURLCopyResourceSpecifier
+C/func/-/CFURLCopyScheme
+C/func/-/CFURLCopyStrictPath
+C/func/-/CFURLCopyUserName
+C/func/-/CFURLCreateAbsoluteURLWithBytes
+C/func/-/CFURLCreateBookmarkData
+C/func/-/CFURLCreateBookmarkDataFromAliasRecord
+C/func/-/CFURLCreateBookmarkDataFromFile
+C/func/-/CFURLCreateByResolvingBookmarkData
+C/func/-/CFURLCreateCopyAppendingPathComponent
+C/func/-/CFURLCreateCopyAppendingPathExtension
+C/func/-/CFURLCreateCopyDeletingLastPathComponent
+C/func/-/CFURLCreateCopyDeletingPathExtension
+C/func/-/CFURLCreateData
+C/func/-/CFURLCreateDataAndPropertiesFromResource
+C/func/-/CFURLCreateFilePathURL
+C/func/-/CFURLCreateFileReferenceURL
+C/func/-/CFURLCreateFromFileSystemRepresentation
+C/func/-/CFURLCreateFromFileSystemRepresentationRelativeToBase
+C/func/-/CFURLCreateFromFSRef
+C/func/-/CFURLCreatePropertyFromResource
+C/func/-/CFURLCreateResourcePropertiesForKeysFromBookmarkData
+C/func/-/CFURLCreateResourcePropertyForKeyFromBookmarkData
+C/func/-/CFURLCreateStringByAddingPercentEscapes
+C/func/-/CFURLCreateStringByReplacingPercentEscapes
+C/func/-/CFURLCreateStringByReplacingPercentEscapesUsingEncoding
+C/func/-/CFURLCreateWithBytes
+C/func/-/CFURLCreateWithFileSystemPath
+C/func/-/CFURLCreateWithFileSystemPathRelativeToBase
+C/func/-/CFURLCreateWithString
+C/func/-/CFURLDestroyResource
+C/tdef/-/CFURLError
+C/func/-/CFURLGetBaseURL
+C/func/-/CFURLGetByteRangeForComponent
+C/func/-/CFURLGetBytes
+C/func/-/CFURLGetFileSystemRepresentation
+C/func/-/CFURLGetFSRef
+C/func/-/CFURLGetPortNumber
+C/func/-/CFURLGetString
+C/func/-/CFURLGetTypeID
+C/func/-/CFURLHasDirectoryPath
+C/tdef/-/CFURLPathStyle
+C/tdef/-/CFURLRef
+C/func/-/CFURLResourceIsReachable
+C/func/-/CFURLSetResourcePropertiesForKeys
+C/func/-/CFURLSetResourcePropertyForKey
+C/func/-/CFURLSetTemporaryResourcePropertyForKey
+C/func/-/CFURLWriteBookmarkDataToFile
+C/func/-/CFURLWriteDataAndPropertiesToResource
+C/tdef/-/CFUserNotificationCallBack
+C/func/-/CFUserNotificationCancel
+C/func/-/CFUserNotificationCheckBoxChecked
+C/func/-/CFUserNotificationCreate
+C/func/-/CFUserNotificationCreateRunLoopSource
+C/func/-/CFUserNotificationDisplayAlert
+C/func/-/CFUserNotificationDisplayNotice
+C/func/-/CFUserNotificationGetResponseDictionary
+C/func/-/CFUserNotificationGetResponseValue
+C/func/-/CFUserNotificationGetTypeID
+C/func/-/CFUserNotificationPopUpSelection
+C/func/-/CFUserNotificationReceiveResponse
+C/tdef/-/CFUserNotificationRef
+C/func/-/CFUserNotificationSecureTextField
+C/func/-/CFUserNotificationUpdate
+C/tdef/-/CFUUIDBytes
+C/func/-/CFUUIDCreate
+C/func/-/CFUUIDCreateFromString
+C/func/-/CFUUIDCreateFromUUIDBytes
+C/func/-/CFUUIDCreateString
+C/func/-/CFUUIDCreateWithBytes
+C/func/-/CFUUIDGetConstantUUIDWithBytes
+C/func/-/CFUUIDGetTypeID
+C/func/-/CFUUIDGetUUIDBytes
+C/tdef/-/CFUUIDRef
+C/func/-/CFWriteStreamCanAcceptBytes
+C/tdef/-/CFWriteStreamClientCallBack
+C/func/-/CFWriteStreamClose
+C/func/-/CFWriteStreamCopyError
+C/func/-/CFWriteStreamCopyProperty
+C/func/-/CFWriteStreamCreateWithAllocatedBuffers
+C/func/-/CFWriteStreamCreateWithBuffer
+C/func/-/CFWriteStreamCreateWithFile
+C/func/-/CFWriteStreamCreateWithFTPURL
+C/func/-/CFWriteStreamGetError
+C/func/-/CFWriteStreamGetStatus
+C/func/-/CFWriteStreamGetTypeID
+C/func/-/CFWriteStreamOpen
+C/tdef/-/CFWriteStreamRef
+C/func/-/CFWriteStreamScheduleWithRunLoop
+C/func/-/CFWriteStreamSetClient
+C/func/-/CFWriteStreamSetProperty
+C/func/-/CFWriteStreamUnscheduleFromRunLoop
+C/func/-/CFWriteStreamWrite
+C/tdef/-/CFXMLAttributeDeclarationInfo
+C/tdef/-/CFXMLAttributeListDeclarationInfo
+C/func/-/CFXMLCreateStringByEscapingEntities
+C/func/-/CFXMLCreateStringByUnescapingEntities
+C/tdef/-/CFXMLDocumentInfo
+C/tdef/-/CFXMLDocumentTypeInfo
+C/tdef/-/CFXMLElementInfo
+C/tdef/-/CFXMLElementTypeDeclarationInfo
+C/tdef/-/CFXMLEntityInfo
+C/tdef/-/CFXMLEntityReferenceInfo
+C/tdef/-/CFXMLEntityTypeCode
+C/tdef/-/CFXMLExternalID
+C/func/-/CFXMLNodeCreate
+C/func/-/CFXMLNodeCreateCopy
+C/func/-/CFXMLNodeGetInfoPtr
+C/func/-/CFXMLNodeGetString
+C/func/-/CFXMLNodeGetTypeCode
+C/func/-/CFXMLNodeGetTypeID
+C/func/-/CFXMLNodeGetVersion
+C/tdef/-/CFXMLNodeRef
+C/tdef/-/CFXMLNodeTypeCode
+C/tdef/-/CFXMLNotationInfo
+C/func/-/CFXMLParserAbort
+C/tdef/-/CFXMLParserAddChildCallBack
+C/tdef/-/CFXMLParserCallBacks
+C/tdef/-/CFXMLParserContext
+C/tdef/-/CFXMLParserCopyDescriptionCallBack
+C/func/-/CFXMLParserCopyErrorDescription
+C/func/-/CFXMLParserCreate
+C/func/-/CFXMLParserCreateWithDataFromURL
+C/tdef/-/CFXMLParserCreateXMLStructureCallBack
+C/tdef/-/CFXMLParserEndXMLStructureCallBack
+C/func/-/CFXMLParserGetCallBacks
+C/func/-/CFXMLParserGetContext
+C/func/-/CFXMLParserGetDocument
+C/func/-/CFXMLParserGetLineNumber
+C/func/-/CFXMLParserGetLocation
+C/func/-/CFXMLParserGetSourceURL
+C/func/-/CFXMLParserGetStatusCode
+C/func/-/CFXMLParserGetTypeID
+C/tdef/-/CFXMLParserHandleErrorCallBack
+C/tdef/-/CFXMLParserOptions
+C/func/-/CFXMLParserParse
+C/tdef/-/CFXMLParserRef
+C/tdef/-/CFXMLParserReleaseCallBack
+C/tdef/-/CFXMLParserResolveExternalEntityCallBack
+C/tdef/-/CFXMLParserRetainCallBack
+C/tdef/-/CFXMLParserStatusCode
+C/tdef/-/CFXMLProcessingInstructionInfo
+C/func/-/CFXMLTreeCreateFromData
+C/func/-/CFXMLTreeCreateFromDataWithError
+C/func/-/CFXMLTreeCreateWithDataFromURL
+C/func/-/CFXMLTreeCreateWithNode
+C/func/-/CFXMLTreeCreateXMLData
+C/func/-/CFXMLTreeGetNode
+C/tdef/-/CFXMLTreeRef
+C/func/-/CGAcquireDisplayFadeReservation
+C/tdef/-/CGAffineTransform
+C/func/-/CGAffineTransformConcat
+C/func/-/CGAffineTransformEqualToTransform
+C/data/-/CGAffineTransformIdentity
+C/func/-/CGAffineTransformInvert
+C/func/-/CGAffineTransformIsIdentity
+C/func/-/CGAffineTransformMake
+C/func/-/CGAffineTransformMakeRotation
+C/func/-/CGAffineTransformMakeScale
+C/func/-/CGAffineTransformMakeTranslation
+C/func/-/CGAffineTransformRotate
+C/func/-/CGAffineTransformScale
+C/func/-/CGAffineTransformTranslate
+C/func/-/CGAssociateMouseAndMouseCursorPosition
+C/tdef/-/CGBeamPosition
+C/func/-/CGBeginDisplayConfiguration
+C/func/-/CGBitmapContextCreate
+C/func/-/CGBitmapContextCreateImage
+C/func/-/CGBitmapContextCreateWithData
+C/func/-/CGBitmapContextGetAlphaInfo
+C/func/-/CGBitmapContextGetBitmapInfo
+C/func/-/CGBitmapContextGetBitsPerComponent
+C/func/-/CGBitmapContextGetBitsPerPixel
+C/func/-/CGBitmapContextGetBytesPerRow
+C/func/-/CGBitmapContextGetColorSpace
+C/func/-/CGBitmapContextGetData
+C/func/-/CGBitmapContextGetHeight
+C/func/-/CGBitmapContextGetWidth
+C/tdef/-/CGBitmapInfo
+C/tdef/-/CGBlendMode
+C/tdef/-/CGButtonCount
+C/tdef/-/CGByteValue
+C/func/-/CGCancelDisplayConfiguration
+C/func/-/CGCaptureAllDisplays
+C/func/-/CGCaptureAllDisplaysWithOptions
+C/tdef/-/CGCaptureOptions
+C/tdef/-/CGCharCode
+C/func/-/CGColorCreate
+C/func/-/CGColorCreateCopy
+C/func/-/CGColorCreateCopyWithAlpha
+C/func/-/CGColorCreateGenericCMYK
+C/func/-/CGColorCreateGenericGray
+C/func/-/CGColorCreateGenericRGB
+C/func/-/CGColorCreateWithPattern
+C/func/-/CGColorEqualToColor
+C/func/-/CGColorGetAlpha
+C/func/-/CGColorGetColorSpace
+C/func/-/CGColorGetComponents
+C/func/-/CGColorGetConstantColor
+C/func/-/CGColorGetNumberOfComponents
+C/func/-/CGColorGetPattern
+C/func/-/CGColorGetTypeID
+C/tdef/-/CGColorRef
+C/func/-/CGColorRelease
+C/tdef/-/CGColorRenderingIntent
+C/func/-/CGColorRetain
+Objective-C/instm/NSColorSpace/CGColorSpace
+C/func/-/CGColorSpaceCopyICCProfile
+C/func/-/CGColorSpaceCopyName
+C/func/-/CGColorSpaceCreateCalibratedGray
+C/func/-/CGColorSpaceCreateCalibratedRGB
+C/func/-/CGColorSpaceCreateDeviceCMYK
+C/func/-/CGColorSpaceCreateDeviceGray
+C/func/-/CGColorSpaceCreateDeviceRGB
+C/func/-/CGColorSpaceCreateICCBased
+C/func/-/CGColorSpaceCreateIndexed
+C/func/-/CGColorSpaceCreateLab
+C/func/-/CGColorSpaceCreatePattern
+C/func/-/CGColorSpaceCreateWithICCProfile
+C/func/-/CGColorSpaceCreateWithName
+C/func/-/CGColorSpaceCreateWithPlatformColorSpace
+C/func/-/CGColorSpaceGetBaseColorSpace
+C/func/-/CGColorSpaceGetColorTable
+C/func/-/CGColorSpaceGetColorTableCount
+C/func/-/CGColorSpaceGetModel
+C/func/-/CGColorSpaceGetNumberOfComponents
+C/func/-/CGColorSpaceGetTypeID
+C/tdef/-/CGColorSpaceModel
+C/tdef/-/CGColorSpaceRef
+C/func/-/CGColorSpaceRelease
+C/func/-/CGColorSpaceRetain
+C/func/-/CGCompleteDisplayConfiguration
+C/func/-/CGConfigureDisplayFadeEffect
+C/func/-/CGConfigureDisplayMirrorOfDisplay
+C/func/-/CGConfigureDisplayMode
+C/func/-/CGConfigureDisplayOrigin
+C/func/-/CGConfigureDisplayStereoOperation
+C/func/-/CGContextAddArc
+C/func/-/CGContextAddArcToPoint
+C/func/-/CGContextAddCurveToPoint
+C/func/-/CGContextAddEllipseInRect
+C/func/-/CGContextAddLines
+C/func/-/CGContextAddLineToPoint
+C/func/-/CGContextAddPath
+C/func/-/CGContextAddQuadCurveToPoint
+C/func/-/CGContextAddRect
+C/func/-/CGContextAddRects
+C/func/-/CGContextBeginPage
+C/func/-/CGContextBeginPath
+C/func/-/CGContextBeginTransparencyLayer
+C/func/-/CGContextBeginTransparencyLayerWithRect
+C/func/-/CGContextClearRect
+C/func/-/CGContextClip
+C/func/-/CGContextClipToMask
+C/func/-/CGContextClipToRect
+C/func/-/CGContextClipToRects
+C/func/-/CGContextClosePath
+C/func/-/CGContextConcatCTM
+C/func/-/CGContextConvertPointToDeviceSpace
+C/func/-/CGContextConvertPointToUserSpace
+C/func/-/CGContextConvertRectToDeviceSpace
+C/func/-/CGContextConvertRectToUserSpace
+C/func/-/CGContextConvertSizeToDeviceSpace
+C/func/-/CGContextConvertSizeToUserSpace
+C/func/-/CGContextCopyPath
+C/func/-/CGContextDrawImage
+C/func/-/CGContextDrawLayerAtPoint
+C/func/-/CGContextDrawLayerInRect
+C/func/-/CGContextDrawLinearGradient
+C/func/-/CGContextDrawPath
+C/func/-/CGContextDrawPDFDocument
+C/func/-/CGContextDrawPDFPage
+C/func/-/CGContextDrawRadialGradient
+C/func/-/CGContextDrawShading
+C/func/-/CGContextDrawTiledImage
+C/func/-/CGContextEndPage
+C/func/-/CGContextEndTransparencyLayer
+C/func/-/CGContextEOClip
+C/func/-/CGContextEOFillPath
+C/func/-/CGContextFillEllipseInRect
+C/func/-/CGContextFillPath
+C/func/-/CGContextFillRect
+C/func/-/CGContextFillRects
+C/func/-/CGContextFlush
+C/func/-/CGContextGetClipBoundingBox
+C/func/-/CGContextGetCTM
+C/func/-/CGContextGetInterpolationQuality
+C/func/-/CGContextGetPathBoundingBox
+C/func/-/CGContextGetPathCurrentPoint
+C/func/-/CGContextGetTextMatrix
+C/func/-/CGContextGetTextPosition
+C/func/-/CGContextGetTypeID
+C/func/-/CGContextGetUserSpaceToDeviceSpaceTransform
+C/func/-/CGContextIsPathEmpty
+C/func/-/CGContextMoveToPoint
+C/func/-/CGContextPathContainsPoint
+C/tdef/-/CGContextRef
+C/func/-/CGContextRelease
+C/func/-/CGContextReplacePathWithStrokedPath
+C/func/-/CGContextRestoreGState
+C/func/-/CGContextRetain
+C/func/-/CGContextRotateCTM
+C/func/-/CGContextSaveGState
+C/func/-/CGContextScaleCTM
+C/func/-/CGContextSelectFont
+C/func/-/CGContextSetAllowsAntialiasing
+C/func/-/CGContextSetAllowsFontSmoothing
+C/func/-/CGContextSetAllowsFontSubpixelPositioning
+C/func/-/CGContextSetAllowsFontSubpixelQuantization
+C/func/-/CGContextSetAlpha
+C/func/-/CGContextSetBlendMode
+C/func/-/CGContextSetCharacterSpacing
+C/func/-/CGContextSetCMYKFillColor
+C/func/-/CGContextSetCMYKStrokeColor
+C/func/-/CGContextSetFillColor
+C/func/-/CGContextSetFillColorSpace
+C/func/-/CGContextSetFillColorWithColor
+C/func/-/CGContextSetFillPattern
+C/func/-/CGContextSetFlatness
+C/func/-/CGContextSetFont
+C/func/-/CGContextSetFontSize
+C/func/-/CGContextSetGrayFillColor
+C/func/-/CGContextSetGrayStrokeColor
+C/func/-/CGContextSetInterpolationQuality
+C/func/-/CGContextSetLineCap
+C/func/-/CGContextSetLineDash
+C/func/-/CGContextSetLineJoin
+C/func/-/CGContextSetLineWidth
+C/func/-/CGContextSetMiterLimit
+C/func/-/CGContextSetPatternPhase
+C/func/-/CGContextSetRenderingIntent
+C/func/-/CGContextSetRGBFillColor
+C/func/-/CGContextSetRGBStrokeColor
+C/func/-/CGContextSetShadow
+C/func/-/CGContextSetShadowWithColor
+C/func/-/CGContextSetShouldAntialias
+C/func/-/CGContextSetShouldSmoothFonts
+C/func/-/CGContextSetShouldSubpixelPositionFonts
+C/func/-/CGContextSetShouldSubpixelQuantizeFonts
+C/func/-/CGContextSetStrokeColor
+C/func/-/CGContextSetStrokeColorSpace
+C/func/-/CGContextSetStrokeColorWithColor
+C/func/-/CGContextSetStrokePattern
+C/func/-/CGContextSetTextDrawingMode
+C/func/-/CGContextSetTextMatrix
+C/func/-/CGContextSetTextPosition
+C/func/-/CGContextShowGlyphs
+C/func/-/CGContextShowGlyphsAtPoint
+C/func/-/CGContextShowGlyphsAtPositions
+C/func/-/CGContextShowGlyphsWithAdvances
+C/func/-/CGContextShowText
+C/func/-/CGContextShowTextAtPoint
+C/func/-/CGContextStrokeEllipseInRect
+C/func/-/CGContextStrokeLineSegments
+C/func/-/CGContextStrokePath
+C/func/-/CGContextStrokeRect
+C/func/-/CGContextStrokeRectWithWidth
+C/func/-/CGContextSynchronize
+C/func/-/CGContextTranslateCTM
+C/func/-/CGCursorIsDrawnInFramebuffer
+C/func/-/CGCursorIsVisible
+C/tdef/-/CGDataConsumerCallbacks
+C/func/-/CGDataConsumerCreate
+C/func/-/CGDataConsumerCreateWithCFData
+C/func/-/CGDataConsumerCreateWithURL
+C/func/-/CGDataConsumerGetTypeID
+C/tdef/-/CGDataConsumerPutBytesCallback
+C/tdef/-/CGDataConsumerRef
+C/func/-/CGDataConsumerRelease
+C/tdef/-/CGDataConsumerReleaseInfoCallback
+C/func/-/CGDataConsumerRetain
+C/tdef/-/CGDataProviderCallbacks
+C/func/-/CGDataProviderCopyData
+C/func/-/CGDataProviderCreate
+C/func/-/CGDataProviderCreateDirect
+C/func/-/CGDataProviderCreateDirectAccess
+C/func/-/CGDataProviderCreateSequential
+C/func/-/CGDataProviderCreateWithCFData
+C/func/-/CGDataProviderCreateWithData
+C/func/-/CGDataProviderCreateWithFilename
+C/func/-/CGDataProviderCreateWithURL
+C/tdef/-/CGDataProviderDirectAccessCallbacks
+C/tdef/-/CGDataProviderDirectCallbacks
+C/tdef/-/CGDataProviderGetBytePointerCallback
+C/tdef/-/CGDataProviderGetBytesAtOffsetCallback
+C/tdef/-/CGDataProviderGetBytesAtPositionCallback
+C/tdef/-/CGDataProviderGetBytesCallback
+C/func/-/CGDataProviderGetTypeID
+C/tdef/-/CGDataProviderRef
+C/func/-/CGDataProviderRelease
+C/tdef/-/CGDataProviderReleaseBytePointerCallback
+C/tdef/-/CGDataProviderReleaseDataCallback
+C/tdef/-/CGDataProviderReleaseInfoCallback
+C/func/-/CGDataProviderRetain
+C/tdef/-/CGDataProviderRewindCallback
+C/tdef/-/CGDataProviderSequentialCallbacks
+C/tdef/-/CGDataProviderSkipBytesCallback
+C/tdef/-/CGDataProviderSkipForwardCallback
+C/tdef/-/CGDeviceByteColor
+C/tdef/-/CGDeviceColor
+C/tdef/-/CGDirectDisplayID
+C/tdef/-/CGDirectPaletteRef
+C/func/-/CGDisplayAddressForPosition
+C/func/-/CGDisplayAvailableModes
+C/func/-/CGDisplayBaseAddress
+C/func/-/CGDisplayBeamPosition
+C/func/-/CGDisplayBestModeForParameters
+C/func/-/CGDisplayBestModeForParametersAndRefreshRate
+C/func/-/CGDisplayBestModeForParametersAndRefreshRateWithProperty
+C/func/-/CGDisplayBitsPerPixel
+C/func/-/CGDisplayBitsPerSample
+C/tdef/-/CGDisplayBlendFraction
+C/func/-/CGDisplayBounds
+C/func/-/CGDisplayBytesPerRow
+C/func/-/CGDisplayCanSetPalette
+C/func/-/CGDisplayCapture
+C/func/-/CGDisplayCaptureWithOptions
+C/tdef/-/CGDisplayChangeSummaryFlags
+C/tdef/-/CGDisplayConfigRef
+C/tdef/-/CGDisplayCoord
+C/func/-/CGDisplayCopyColorSpace
+C/tdef/-/CGDisplayCount
+C/func/-/CGDisplayCurrentMode
+C/tdef/-/CGDisplayErr
+C/func/-/CGDisplayFade
+C/tdef/-/CGDisplayFadeInterval
+C/func/-/CGDisplayFadeOperationInProgress
+C/tdef/-/CGDisplayFadeReservationToken
+C/func/-/CGDisplayGammaTableCapacity
+C/func/-/CGDisplayGetDrawingContext
+C/func/-/CGDisplayHideCursor
+C/func/-/CGDisplayIDToOpenGLDisplayMask
+C/func/-/CGDisplayIOServicePort
+C/func/-/CGDisplayIsActive
+C/func/-/CGDisplayIsAlwaysInMirrorSet
+C/func/-/CGDisplayIsAsleep
+C/func/-/CGDisplayIsBuiltin
+C/func/-/CGDisplayIsCaptured
+C/func/-/CGDisplayIsInHWMirrorSet
+C/func/-/CGDisplayIsInMirrorSet
+C/func/-/CGDisplayIsMain
+C/func/-/CGDisplayIsOnline
+C/func/-/CGDisplayIsStereo
+C/func/-/CGDisplayMirrorsDisplay
+C/func/-/CGDisplayModelNumber
+C/func/-/CGDisplayMoveCursorToPoint
+C/func/-/CGDisplayPixelsHigh
+C/func/-/CGDisplayPixelsWide
+C/func/-/CGDisplayPrimaryDisplay
+C/tdef/-/CGDisplayReconfigurationCallBack
+C/func/-/CGDisplayRegisterReconfigurationCallback
+C/func/-/CGDisplayRelease
+C/func/-/CGDisplayRemoveReconfigurationCallback
+C/tdef/-/CGDisplayReservationInterval
+C/func/-/CGDisplayRestoreColorSyncSettings
+C/func/-/CGDisplayRotation
+C/func/-/CGDisplaySamplesPerPixel
+C/func/-/CGDisplayScreenSize
+C/func/-/CGDisplaySerialNumber
+C/func/-/CGDisplaySetPalette
+C/func/-/CGDisplaySetStereoOperation
+C/func/-/CGDisplayShowCursor
+C/func/-/CGDisplaySwitchToMode
+C/func/-/CGDisplayUnitNumber
+C/func/-/CGDisplayUsesOpenGLAcceleration
+C/func/-/CGDisplayVendorNumber
+C/func/-/CGDisplayWaitForBeamPositionOutsideLines
+C/func/-/CGEnableEventStateCombining
+C/tdef/-/CGError
+C/func/-/cgetcap
+C/func/-/cgetclose
+C/func/-/cgetent
+C/func/-/cgetfirst
+C/func/-/cgetmatch
+C/func/-/cgetnext
+C/func/-/cgetnum
+C/func/-/cgetset
+C/func/-/cgetstr
+C/func/-/cgetustr
+Objective-C/instm/NSEvent/CGEvent
+C/func/-/CGEventCreate
+C/func/-/CGEventCreateCopy
+C/func/-/CGEventCreateData
+C/func/-/CGEventCreateFromData
+C/func/-/CGEventCreateKeyboardEvent
+C/func/-/CGEventCreateMouseEvent
+C/func/-/CGEventCreateScrollWheelEvent
+C/func/-/CGEventCreateSourceFromEvent
+C/tdef/-/CGEventField
+C/tdef/-/CGEventFilterMask
+C/tdef/-/CGEventFlags
+C/func/-/CGEventGetDoubleValueField
+C/func/-/CGEventGetFlags
+C/func/-/CGEventGetIntegerValueField
+C/func/-/CGEventGetLocation
+C/func/-/CGEventGetSource
+C/func/-/CGEventGetTimestamp
+C/func/-/CGEventGetType
+C/func/-/CGEventGetTypeID
+C/func/-/CGEventGetUnflippedLocation
+C/func/-/CGEventKeyboardGetUnicodeString
+C/func/-/CGEventKeyboardSetUnicodeString
+C/tdef/-/CGEventMask
+C/macro/-/CGEventMaskBit
+C/tdef/-/CGEventMouseSubtype
+C/func/-/CGEventPost
+C/func/-/CGEventPostToPSN
+C/tdef/-/CGEventRef
+C/func/-/CGEventSetDoubleValueField
+C/func/-/CGEventSetFlags
+C/func/-/CGEventSetIntegerValueField
+C/func/-/CGEventSetLocation
+C/func/-/CGEventSetSource
+C/func/-/CGEventSetTimestamp
+C/func/-/CGEventSetType
+C/func/-/CGEventSourceButtonState
+C/func/-/CGEventSourceCounterForEventType
+C/func/-/CGEventSourceCreate
+C/func/-/CGEventSourceFlagsState
+C/func/-/CGEventSourceGetKeyboardType
+C/func/-/CGEventSourceGetLocalEventsFilterDuringSuppressionState
+C/func/-/CGEventSourceGetLocalEventsSuppressionInterval
+C/func/-/CGEventSourceGetPixelsPerLine
+C/func/-/CGEventSourceGetSourceStateID
+C/func/-/CGEventSourceGetTypeID
+C/func/-/CGEventSourceGetUserData
+C/tdef/-/CGEventSourceKeyboardType
+C/func/-/CGEventSourceKeyState
+C/tdef/-/CGEventSourceRef
+C/func/-/CGEventSourceSecondsSinceLastEventType
+C/func/-/CGEventSourceSetKeyboardType
+C/func/-/CGEventSourceSetLocalEventsFilterDuringSuppressionState
+C/func/-/CGEventSourceSetLocalEventsSuppressionInterval
+C/func/-/CGEventSourceSetPixelsPerLine
+C/func/-/CGEventSourceSetUserData
+C/tdef/-/CGEventSourceStateID
+C/tdef/-/CGEventSuppressionState
+C/tdef/-/CGEventTapCallBack
+C/func/-/CGEventTapCreate
+C/func/-/CGEventTapCreateForPSN
+C/func/-/CGEventTapEnable
+C/tdef/-/CGEventTapInformation
+C/func/-/CGEventTapIsEnabled
+C/tdef/-/CGEventTapLocation
+C/tdef/-/CGEventTapOptions
+C/tdef/-/CGEventTapPlacement
+C/func/-/CGEventTapPostEvent
+C/tdef/-/CGEventTapProxy
+C/tdef/-/CGEventTimestamp
+C/tdef/-/CGEventType
+C/tdef/-/CGFloat
+C/macro/-/CGFLOAT_IS_DOUBLE
+C/macro/-/CGFLOAT_MAX
+C/macro/-/CGFLOAT_MIN
+C/func/-/CGFontCanCreatePostScriptSubset
+C/func/-/CGFontCopyFullName
+C/func/-/CGFontCopyGlyphNameForGlyph
+C/func/-/CGFontCopyPostScriptName
+C/func/-/CGFontCopyTableForTag
+C/func/-/CGFontCopyTableTags
+C/func/-/CGFontCopyVariationAxes
+C/func/-/CGFontCopyVariations
+C/func/-/CGFontCreateCopyWithVariations
+C/func/-/CGFontCreatePostScriptEncoding
+C/func/-/CGFontCreatePostScriptSubset
+C/func/-/CGFontCreateWithDataProvider
+C/func/-/CGFontCreateWithFontName
+C/func/-/CGFontCreateWithPlatformFont
+C/func/-/CGFontGetAscent
+C/func/-/CGFontGetCapHeight
+C/func/-/CGFontGetDescent
+C/func/-/CGFontGetFontBBox
+C/func/-/CGFontGetGlyphAdvances
+C/func/-/CGFontGetGlyphBBoxes
+C/func/-/CGFontGetGlyphWithGlyphName
+C/func/-/CGFontGetItalicAngle
+C/func/-/CGFontGetLeading
+C/func/-/CGFontGetNumberOfGlyphs
+C/func/-/CGFontGetStemV
+C/func/-/CGFontGetTypeID
+C/func/-/CGFontGetUnitsPerEm
+C/func/-/CGFontGetXHeight
+C/tdef/-/CGFontIndex
+C/tdef/-/CGFontPostScriptFormat
+C/tdef/-/CGFontRef
+C/func/-/CGFontRelease
+C/func/-/CGFontRetain
+C/tdef/-/CGFunctionCallbacks
+C/func/-/CGFunctionCreate
+C/tdef/-/CGFunctionEvaluateCallback
+C/func/-/CGFunctionGetTypeID
+C/tdef/-/CGFunctionRef
+C/func/-/CGFunctionRelease
+C/tdef/-/CGFunctionReleaseInfoCallback
+C/func/-/CGFunctionRetain
+C/tdef/-/CGGammaValue
+C/func/-/CGGetActiveDisplayList
+C/func/-/CGGetDisplaysWithOpenGLDisplayMask
+C/func/-/CGGetDisplaysWithPoint
+C/func/-/CGGetDisplaysWithRect
+C/func/-/CGGetDisplayTransferByFormula
+C/func/-/CGGetDisplayTransferByTable
+C/func/-/CGGetEventTapList
+C/func/-/CGGetLastMouseDelta
+C/func/-/CGGetOnlineDisplayList
+C/func/-/CGGLContextCreate
+C/func/-/CGGLContextUpdateViewportSize
+C/tdef/-/CGGlyph
+C/econst/-/CGGlyphMax
+C/econst/-/CGGlyphMin
+C/func/-/CGGradientCreateWithColorComponents
+C/func/-/CGGradientCreateWithColors
+C/tdef/-/CGGradientDrawingOptions
+C/func/-/CGGradientGetTypeID
+C/tdef/-/CGGradientRef
+C/func/-/CGGradientRelease
+C/func/-/CGGradientRetain
+Objective-C/instm/NSBitmapImageRep/CGImage
+C/tdef/-/CGImageAlphaInfo
+C/func/-/CGImageCreate
+C/func/-/CGImageCreateCopy
+C/func/-/CGImageCreateCopyWithColorSpace
+C/func/-/CGImageCreateWithImageInRect
+C/func/-/CGImageCreateWithJPEGDataProvider
+C/func/-/CGImageCreateWithMask
+C/func/-/CGImageCreateWithMaskingColors
+C/func/-/CGImageCreateWithPNGDataProvider
+C/func/-/CGImageDestinationAddImage
+C/func/-/CGImageDestinationAddImageFromSource
+C/func/-/CGImageDestinationCopyTypeIdentifiers
+C/func/-/CGImageDestinationCreateWithData
+C/func/-/CGImageDestinationCreateWithDataConsumer
+C/func/-/CGImageDestinationCreateWithURL
+C/func/-/CGImageDestinationFinalize
+C/func/-/CGImageDestinationGetTypeID
+C/tdef/-/CGImageDestinationRef
+C/func/-/CGImageDestinationSetProperties
+Objective-C/instm/NSImageRep/CGImageForProposedRect:context:hints:
+Objective-C/instm/NSImage/CGImageForProposedRect:context:hints:
+C/func/-/CGImageGetAlphaInfo
+C/func/-/CGImageGetBitmapInfo
+C/func/-/CGImageGetBitsPerComponent
+C/func/-/CGImageGetBitsPerPixel
+C/func/-/CGImageGetBytesPerRow
+C/func/-/CGImageGetColorSpace
+C/func/-/CGImageGetDataProvider
+C/func/-/CGImageGetDecode
+C/func/-/CGImageGetHeight
+C/func/-/CGImageGetRenderingIntent
+C/func/-/CGImageGetShouldInterpolate
+C/func/-/CGImageGetTypeID
+C/func/-/CGImageGetWidth
+C/func/-/CGImageIsMask
+C/func/-/CGImageMaskCreate
+C/tdef/-/CGImageRef
+C/func/-/CGImageRelease
+C/func/-/CGImageRetain
+C/func/-/CGImageSourceCopyProperties
+C/func/-/CGImageSourceCopyPropertiesAtIndex
+C/func/-/CGImageSourceCopyTypeIdentifiers
+C/func/-/CGImageSourceCreateImageAtIndex
+C/func/-/CGImageSourceCreateIncremental
+C/func/-/CGImageSourceCreateThumbnailAtIndex
+C/func/-/CGImageSourceCreateWithData
+C/func/-/CGImageSourceCreateWithDataProvider
+C/func/-/CGImageSourceCreateWithURL
+C/func/-/CGImageSourceGetCount
+C/func/-/CGImageSourceGetStatus
+C/func/-/CGImageSourceGetStatusAtIndex
+C/func/-/CGImageSourceGetType
+C/func/-/CGImageSourceGetTypeID
+C/tdef/-/CGImageSourceRef
+C/tdef/-/CGImageSourceStatus
+C/func/-/CGImageSourceUpdateData
+C/func/-/CGImageSourceUpdateDataProvider
+C/func/-/CGInhibitLocalEvents
+C/tdef/-/CGInterpolationQuality
+C/tdef/-/CGKeyCode
+C/func/-/CGLayerCreateWithContext
+C/func/-/CGLayerGetContext
+C/func/-/CGLayerGetSize
+C/func/-/CGLayerGetTypeID
+C/tdef/-/CGLayerRef
+C/func/-/CGLayerRelease
+C/func/-/CGLayerRetain
+C/func/-/CGLChoosePixelFormat
+C/func/-/CGLClearDrawable
+C/tdef/-/CGLContextEnable
+Objective-C/intfm/QCPlugInContext/CGLContextObj
+Objective-C/instm/NSOpenGLContext/CGLContextObj
+C/tdef/-/CGLContextObj
+C/tdef/-/CGLContextParameter
+C/func/-/CGLCopyContext
+C/func/-/CGLCreateContext
+C/func/-/CGLCreatePBuffer
+C/func/-/CGLDescribePBuffer
+C/func/-/CGLDescribePixelFormat
+C/func/-/CGLDescribeRenderer
+C/func/-/CGLDestroyContext
+C/func/-/CGLDestroyPBuffer
+C/func/-/CGLDestroyPixelFormat
+C/func/-/CGLDestroyRendererInfo
+C/func/-/CGLDisable
+C/func/-/CGLEnable
+C/func/-/CGLErrorString
+C/func/-/CGLFlushDrawable
+C/func/-/CGLGetContextRetainCount
+C/func/-/CGLGetCurrentContext
+C/func/-/CGLGetGlobalOption
+C/func/-/CGLGetOffScreen
+C/func/-/CGLGetOption
+C/func/-/CGLGetParameter
+C/func/-/CGLGetPBuffer
+C/func/-/CGLGetPBufferRetainCount
+C/func/-/CGLGetPixelFormat
+C/func/-/CGLGetPixelFormatRetainCount
+C/func/-/CGLGetVersion
+C/func/-/CGLGetVirtualScreen
+C/tdef/-/CGLGlobalOption
+C/tdef/-/CGLineCap
+C/tdef/-/CGLineJoin
+C/func/-/CGLIsEnabled
+C/func/-/CGLLockContext
+Objective-C/instm/NSOpenGLPixelBuffer/CGLPBufferObj
+C/tdef/-/CGLPBufferObj
+C/tdef/-/CGLPixelFormatAttribute
+Objective-C/instm/NSOpenGLPixelFormat/CGLPixelFormatObj
+C/tdef/-/CGLPixelFormatObj
+C/func/-/CGLQueryRendererInfo
+C/func/-/CGLReleaseContext
+C/func/-/CGLReleasePBuffer
+C/func/-/CGLReleasePixelFormat
+C/tdef/-/CGLRendererInfoObj
+C/tdef/-/CGLRendererProperty
+C/func/-/CGLRetainContext
+C/func/-/CGLRetainPBuffer
+C/func/-/CGLRetainPixelFormat
+C/func/-/CGLSetCurrentContext
+C/func/-/CGLSetFullScreen
+C/func/-/CGLSetFullScreenOnDisplay
+C/func/-/CGLSetGlobalOption
+C/func/-/CGLSetOffScreen
+C/func/-/CGLSetOption
+C/func/-/CGLSetParameter
+C/func/-/CGLSetPBuffer
+C/func/-/CGLSetVirtualScreen
+C/func/-/CGLTexImagePBuffer
+C/func/-/CGLUnlockContext
+C/func/-/CGMainDisplayID
+C/tdef/-/CGMouseButton
+C/tdef/-/CGMouseDelta
+C/tdef/-/CGMutablePathRef
+C/tdef/-/CGOpenGLDisplayMask
+C/func/-/CGOpenGLDisplayMaskToDisplayID
+C/tdef/-/CGPaletteBlendFraction
+C/func/-/CGPaletteCreateCopy
+C/func/-/CGPaletteCreateDefaultColorPalette
+C/func/-/CGPaletteCreateFromPaletteBlendedWithColor
+C/func/-/CGPaletteCreateWithByteSamples
+C/func/-/CGPaletteCreateWithCapacity
+C/func/-/CGPaletteCreateWithDisplay
+C/func/-/CGPaletteCreateWithSamples
+C/func/-/CGPaletteGetColorAtIndex
+C/func/-/CGPaletteGetIndexForColor
+C/func/-/CGPaletteGetNumberOfSamples
+C/func/-/CGPaletteIsEqualToPalette
+C/func/-/CGPaletteRelease
+C/func/-/CGPaletteSetColorAtIndex
+C/func/-/CGPathAddArc
+C/func/-/CGPathAddArcToPoint
+C/func/-/CGPathAddCurveToPoint
+C/func/-/CGPathAddEllipseInRect
+C/func/-/CGPathAddLines
+C/func/-/CGPathAddLineToPoint
+C/func/-/CGPathAddPath
+C/func/-/CGPathAddQuadCurveToPoint
+C/func/-/CGPathAddRect
+C/func/-/CGPathAddRects
+C/tdef/-/CGPathApplierFunction
+C/func/-/CGPathApply
+C/func/-/CGPathCloseSubpath
+C/func/-/CGPathContainsPoint
+C/func/-/CGPathCreateCopy
+C/func/-/CGPathCreateMutable
+C/func/-/CGPathCreateMutableCopy
+C/tdef/-/CGPathDrawingMode
+C/tdef/-/CGPathElement
+C/tag/-/CGPathElement
+C/tdef/-/CGPathElementType
+C/func/-/CGPathEqualToPath
+C/func/-/CGPathGetBoundingBox
+C/func/-/CGPathGetCurrentPoint
+C/func/-/CGPathGetPathBoundingBox
+C/func/-/CGPathGetTypeID
+C/func/-/CGPathIsEmpty
+C/func/-/CGPathIsRect
+C/func/-/CGPathMoveToPoint
+C/tdef/-/CGPathRef
+C/func/-/CGPathRelease
+C/func/-/CGPathRetain
+C/tdef/-/CGPatternCallbacks
+C/func/-/CGPatternCreate
+C/tdef/-/CGPatternDrawPatternCallback
+C/func/-/CGPatternGetTypeID
+C/tdef/-/CGPatternRef
+C/func/-/CGPatternRelease
+C/tdef/-/CGPatternReleaseInfoCallback
+C/func/-/CGPatternRetain
+C/tdef/-/CGPatternTiling
+C/func/-/CGPDFArrayGetArray
+C/func/-/CGPDFArrayGetBoolean
+C/func/-/CGPDFArrayGetCount
+C/func/-/CGPDFArrayGetDictionary
+C/func/-/CGPDFArrayGetInteger
+C/func/-/CGPDFArrayGetName
+C/func/-/CGPDFArrayGetNull
+C/func/-/CGPDFArrayGetNumber
+C/func/-/CGPDFArrayGetObject
+C/func/-/CGPDFArrayGetStream
+C/func/-/CGPDFArrayGetString
+C/tdef/-/CGPDFArrayRef
+C/tdef/-/CGPDFBoolean
+C/tdef/-/CGPDFBox
+C/func/-/CGPDFContentStreamCreateWithPage
+C/func/-/CGPDFContentStreamCreateWithStream
+C/func/-/CGPDFContentStreamGetResource
+C/func/-/CGPDFContentStreamGetStreams
+C/tdef/-/CGPDFContentStreamRef
+C/func/-/CGPDFContentStreamRelease
+C/func/-/CGPDFContentStreamRetain
+C/func/-/CGPDFContextAddDestinationAtPoint
+C/func/-/CGPDFContextBeginPage
+C/func/-/CGPDFContextClose
+C/func/-/CGPDFContextCreate
+C/func/-/CGPDFContextCreateWithURL
+C/func/-/CGPDFContextEndPage
+C/func/-/CGPDFContextSetDestinationForRect
+C/func/-/CGPDFContextSetURLForRect
+C/tdef/-/CGPDFDataFormat
+C/econst/-/CGPDFDataFormatJPEG2000
+C/econst/-/CGPDFDataFormatJPEGEncoded
+C/econst/-/CGPDFDataFormatRaw
+C/tdef/-/CGPDFDictionaryApplierFunction
+C/func/-/CGPDFDictionaryApplyFunction
+C/func/-/CGPDFDictionaryGetArray
+C/func/-/CGPDFDictionaryGetBoolean
+C/func/-/CGPDFDictionaryGetCount
+C/func/-/CGPDFDictionaryGetDictionary
+C/func/-/CGPDFDictionaryGetInteger
+C/func/-/CGPDFDictionaryGetName
+C/func/-/CGPDFDictionaryGetNumber
+C/func/-/CGPDFDictionaryGetObject
+C/func/-/CGPDFDictionaryGetStream
+C/func/-/CGPDFDictionaryGetString
+C/tdef/-/CGPDFDictionaryRef
+C/func/-/CGPDFDocumentAllowsCopying
+C/func/-/CGPDFDocumentAllowsPrinting
+C/func/-/CGPDFDocumentCreateWithProvider
+C/func/-/CGPDFDocumentCreateWithURL
+C/func/-/CGPDFDocumentGetArtBox
+C/func/-/CGPDFDocumentGetBleedBox
+C/func/-/CGPDFDocumentGetCatalog
+C/func/-/CGPDFDocumentGetCropBox
+C/func/-/CGPDFDocumentGetID
+C/func/-/CGPDFDocumentGetInfo
+C/func/-/CGPDFDocumentGetMediaBox
+C/func/-/CGPDFDocumentGetNumberOfPages
+C/func/-/CGPDFDocumentGetPage
+C/func/-/CGPDFDocumentGetRotationAngle
+C/func/-/CGPDFDocumentGetTrimBox
+C/func/-/CGPDFDocumentGetTypeID
+C/func/-/CGPDFDocumentGetVersion
+C/func/-/CGPDFDocumentIsEncrypted
+C/func/-/CGPDFDocumentIsUnlocked
+C/tdef/-/CGPDFDocumentRef
+C/func/-/CGPDFDocumentRelease
+C/func/-/CGPDFDocumentRetain
+C/func/-/CGPDFDocumentUnlockWithPassword
+C/tdef/-/CGPDFInteger
+C/func/-/CGPDFObjectGetType
+C/func/-/CGPDFObjectGetValue
+C/tdef/-/CGPDFObjectRef
+C/tdef/-/CGPDFObjectType
+C/tdef/-/CGPDFOperatorCallback
+C/func/-/CGPDFOperatorTableCreate
+C/tdef/-/CGPDFOperatorTableRef
+C/func/-/CGPDFOperatorTableRelease
+C/func/-/CGPDFOperatorTableRetain
+C/func/-/CGPDFOperatorTableSetCallback
+C/func/-/CGPDFPageGetBoxRect
+C/func/-/CGPDFPageGetDictionary
+C/func/-/CGPDFPageGetDocument
+C/func/-/CGPDFPageGetDrawingTransform
+C/func/-/CGPDFPageGetPageNumber
+C/func/-/CGPDFPageGetRotationAngle
+C/func/-/CGPDFPageGetTypeID
+C/tdef/-/CGPDFPageRef
+C/func/-/CGPDFPageRelease
+C/func/-/CGPDFPageRetain
+C/tdef/-/CGPDFReal
+C/func/-/CGPDFScannerCreate
+C/func/-/CGPDFScannerGetContentStream
+C/func/-/CGPDFScannerPopArray
+C/func/-/CGPDFScannerPopBoolean
+C/func/-/CGPDFScannerPopDictionary
+C/func/-/CGPDFScannerPopInteger
+C/func/-/CGPDFScannerPopName
+C/func/-/CGPDFScannerPopNumber
+C/func/-/CGPDFScannerPopObject
+C/func/-/CGPDFScannerPopStream
+C/func/-/CGPDFScannerPopString
+C/tdef/-/CGPDFScannerRef
+C/func/-/CGPDFScannerRelease
+C/func/-/CGPDFScannerRetain
+C/func/-/CGPDFScannerScan
+C/func/-/CGPDFStreamCopyData
+C/func/-/CGPDFStreamGetDictionary
+C/tdef/-/CGPDFStreamRef
+C/func/-/CGPDFStringCopyDate
+C/func/-/CGPDFStringCopyTextString
+C/func/-/CGPDFStringGetBytePtr
+C/func/-/CGPDFStringGetLength
+C/tdef/-/CGPDFStringRef
+C/tdef/-/CGPoint
+C/func/-/CGPointApplyAffineTransform
+C/func/-/CGPointCreateDictionaryRepresentation
+C/func/-/CGPointEqualToPoint
+C/func/-/CGPointMake
+C/func/-/CGPointMakeWithDictionaryRepresentation
+C/data/-/CGPointZero
+C/func/-/CGPostKeyboardEvent
+C/func/-/CGPostMouseEvent
+C/func/-/CGPostScrollWheelEvent
+C/func/-/CGPSConverterAbort
+C/tdef/-/CGPSConverterBeginDocumentCallback
+C/tdef/-/CGPSConverterBeginPageCallback
+C/tdef/-/CGPSConverterCallbacks
+C/func/-/CGPSConverterConvert
+C/func/-/CGPSConverterCreate
+C/tdef/-/CGPSConverterEndDocumentCallback
+C/tdef/-/CGPSConverterEndPageCallback
+C/func/-/CGPSConverterGetTypeID
+C/func/-/CGPSConverterIsConverting
+C/tdef/-/CGPSConverterMessageCallback
+C/tdef/-/CGPSConverterProgressCallback
+C/tdef/-/CGPSConverterRef
+C/tdef/-/CGPSConverterReleaseInfoCallback
+C/tag/-/CGrafPort
+C/tdef/-/CGrafPtr
+C/tdef/-/CGRect
+C/func/-/CGRectApplyAffineTransform
+C/func/-/CGRectContainsPoint
+C/func/-/CGRectContainsRect
+C/tdef/-/CGRectCount
+C/func/-/CGRectCreateDictionaryRepresentation
+C/func/-/CGRectDivide
+C/tdef/-/CGRectEdge
+C/func/-/CGRectEqualToRect
+C/func/-/CGRectGetHeight
+C/func/-/CGRectGetMaxX
+C/func/-/CGRectGetMaxY
+C/func/-/CGRectGetMidX
+C/func/-/CGRectGetMidY
+C/func/-/CGRectGetMinX
+C/func/-/CGRectGetMinY
+C/func/-/CGRectGetWidth
+C/data/-/CGRectInfinite
+C/func/-/CGRectInset
+C/func/-/CGRectIntegral
+C/func/-/CGRectIntersection
+C/func/-/CGRectIntersectsRect
+C/func/-/CGRectIsEmpty
+C/func/-/CGRectIsInfinite
+C/func/-/CGRectIsNull
+C/func/-/CGRectMake
+C/func/-/CGRectMakeWithDictionaryRepresentation
+C/econst/-/CGRectMaxXEdge
+C/econst/-/CGRectMaxYEdge
+C/econst/-/CGRectMinXEdge
+C/econst/-/CGRectMinYEdge
+C/data/-/CGRectNull
+C/func/-/CGRectOffset
+C/func/-/CGRectStandardize
+C/func/-/CGRectUnion
+C/data/-/CGRectZero
+C/tdef/-/CGRefreshRate
+C/func/-/CGRegisterScreenRefreshCallback
+C/func/-/CGReleaseAllDisplays
+C/func/-/CGReleaseDisplayFadeReservation
+C/func/-/CGReleaseScreenRefreshRects
+C/func/-/CGRestorePermanentDisplayConfiguration
+C/tdef/-/CGScreenRefreshCallback
+C/func/-/CGScreenRegisterMoveCallback
+C/func/-/CGScreenUnregisterMoveCallback
+C/tdef/-/CGScreenUpdateMoveCallback
+C/tdef/-/CGScreenUpdateMoveDelta
+C/tdef/-/CGScreenUpdateOperation
+C/tdef/-/CGScrollEventUnit
+C/func/-/CGSessionCopyCurrentDictionary
+C/func/-/CGSetDisplayTransferByByteTable
+C/func/-/CGSetDisplayTransferByFormula
+C/func/-/CGSetDisplayTransferByTable
+C/func/-/CGSetLocalEventsFilterDuringSuppressionState
+C/func/-/CGSetLocalEventsSuppressionInterval
+C/func/-/CGShadingCreateAxial
+C/func/-/CGShadingCreateRadial
+C/func/-/CGShadingGetTypeID
+C/tdef/-/CGShadingRef
+C/func/-/CGShadingRelease
+C/func/-/CGShadingRetain
+C/func/-/CGShieldingWindowID
+C/func/-/CGShieldingWindowLevel
+C/tdef/-/CGSize
+C/func/-/CGSizeApplyAffineTransform
+C/func/-/CGSizeCreateDictionaryRepresentation
+C/func/-/CGSizeEqualToSize
+C/func/-/CGSizeMake
+C/func/-/CGSizeMakeWithDictionaryRepresentation
+C/data/-/CGSizeZero
+C/tdef/-/CGTableCount
+C/tdef/-/CGTextDrawingMode
+C/tdef/-/CGTextEncoding
+C/func/-/CGUnregisterScreenRefreshCallback
+C/func/-/CGWaitForScreenRefreshRects
+C/func/-/CGWaitForScreenUpdateRects
+C/func/-/CGWarpMouseCursorPosition
+C/tdef/-/CGWheelCount
+C/tdef/-/CGWindowBackingType
+C/tdef/-/CGWindowID
+C/tdef/-/CGWindowImageOption
+C/tdef/-/CGWindowLevel
+C/func/-/CGWindowLevelForKey
+C/tdef/-/CGWindowLevelKey
+C/func/-/CGWindowListCopyWindowInfo
+C/func/-/CGWindowListCreate
+C/func/-/CGWindowListCreateDescriptionFromArray
+C/func/-/CGWindowListCreateImage
+C/func/-/CGWindowListCreateImageFromArray
+C/tdef/-/CGWindowListOption
+C/func/-/CGWindowServerCFMachPort
+C/tdef/-/CGWindowSharingType
+JavaScript/data/HTMLTableColElement/ch
+JavaScript/data/HTMLTableSectionElement/ch
+JavaScript/data/HTMLTableCellElement/ch
+JavaScript/data/HTMLTableRowElement/ch
+JavaScript/clconst/Event/CHANGE
+Objective-C/instm/NSTextView/changeAttributes:
+Objective-C/instm/WebView/changeAttributes:
+Objective-C/instm/NSResponder/changeCaseOfLetter:
+Objective-C/instm/NSObject/changeColor:
+Objective-C/instm/NSTextView/changeColor:
+Objective-C/instm/WebView/changeColor:
+Objective-C/instm/NSPasteboard/changeCount
+Objective-C/instm/NSFileManager/changeCurrentDirectoryPath:
+Objective-C/instm/NSTextView/changeDocumentBackgroundColor:
+Objective-C/instm/WebView/changeDocumentBackgroundColor:
+Objective-C/instm/NSObject/changedRecordsForEntityName:moreComing:error:
+C/func/-/ChangedResource
+JavaScript/data/TouchEvent/changedTouches
+Objective-C/instm/NSManagedObject/changedValues
+Objective-C/instm/ISyncSession/changeEnumeratorForEntityNames:
+Objective-C/instm/NSFileManager/changeFileAttributes:atPath:
+Objective-C/instm/NSObject/changeFont:
+Objective-C/instm/WebView/changeFont:
+Objective-C/instm/NSText/changeFont:
+Objective-C/instm/NSTextStorage/changeInLength
+Objective-C/instm/ODRecord/changePassword:toPassword:error:
+C++/instm/IOService/changePowerStateTo
+C++/instm/IOService/changePowerStateToPriv
+Objective-C/instm/ISyncChange/changes
+Objective-C/instm/NSObject/changesForEntityName:moreComing:error:
+Objective-C/intfm/NSChangeSpelling/changeSpelling:
+JavaScript/instm/InspectorBackend/changeTagName
+C/func/-/ChangeTextToUnicodeInfo
+C/func/-/ChangeUnicodeToTextInfo
+JavaScript/instm/DatabaseSync/changeVersion
+JavaScript/instm/Database/changeVersion
+Objective-C/instm/NSApplication/changeWindowsItem:title:filename:
+Objective-C/clm/ISyncChange/changeWithType:recordIdentifier:changes:
+C/tag/-/Channel
+JavaScript/cl/-/Channel
+Objective-C/instp/CWInterface/channel
+Objective-C/instp/CWNetwork/channel
+C++/data/IOAudioControl/channelID
+Objective-C/instm/NSSound/channelMapping
+Objective-C/instm/QTMovie/chapterCount
+Objective-C/instm/QTMovie/chapterIndexForTime:
+Objective-C/instm/QTMovie/chapters
+Objective-C/instm/NSString/characterAtIndex:
+Objective-C/instm/PDFPage/characterBoundsAtIndex:
+Objective-C/instm/NSGlyphInfo/characterCollection
+JavaScript/cl/-/CharacterData
+JavaScript/data/DOMWindow/CharacterData
+Objective-C/clm/NSLocale/characterDirectionForLanguage:
+Objective-C/instm/NSXMLDocument/characterEncoding
+Objective-C/instm/NSGlyphInfo/characterIdentifier
+Objective-C/instm/PDFPage/characterIndexAtPoint:
+Objective-C/instm/NSLayoutManager/characterIndexForGlyphAtIndex:
+Objective-C/instm/NSTextView/characterIndexForInsertionAtPoint:
+Objective-C/intfm/NSTextInput/characterIndexForPoint:
+Objective-C/intfm/NSTextInputClient/characterIndexForPoint:
+Objective-C/instm/NSLayoutManager/characterIndexForPoint:inTextContainer:fractionOfDistanceBetweenInsertionPoints:
+Objective-C/intfm/IMKTextInput/characterIndexForPoint:tracking:inMarkedRange:
+Objective-C/instm/NSCharacterSet/characterIsMember:
+Objective-C/instm/NSATSTypesetter/characterRangeForGlyphRange:actualGlyphRange:
+Objective-C/instm/NSLayoutManager/characterRangeForGlyphRange:actualGlyphRange:
+Objective-C/instm/NSTypesetter/characterRangeForGlyphRange:actualGlyphRange:
+Objective-C/instm/NSTextStorage/characters
+Objective-C/instm/NSEvent/characters
+JavaScript/data/Document/characterSet
+Objective-C/clm/NSCharacterSet/characterSetWithBitmapRepresentation:
+Objective-C/clm/NSCharacterSet/characterSetWithCharactersInString:
+Objective-C/clm/NSCharacterSet/characterSetWithContentsOfFile:
+Objective-C/clm/NSCharacterSet/characterSetWithRange:
+Objective-C/instm/NSEvent/charactersIgnoringModifiers
+C/tdef/-/charactersSAXFunc
+Objective-C/instm/NSScanner/charactersToBeSkipped
+JavaScript/data/KeyboardEvent/charCode
+JavaScript/data/UIEvent/charCode
+JavaScript/data/Document/charset
+JavaScript/data/HTMLScriptElement/charset
+JavaScript/data/HTMLAnchorElement/charset
+JavaScript/data/HTMLLinkElement/charset
+JavaScript/clconst/CSSRule/CHARSET_RULE
+Objective-C/instm/NSNumber/charValue
+C/func/-/chdir
+C/macro/-/CHECK_ARITY
+C/macro/-/CHECK_ERROR
+C/macro/-/CHECK_ERROR0
+C/func/-/check_int32_add
+C/func/-/check_int32_div
+C/func/-/check_int32_mul
+C/func/-/check_int32_sub
+C/func/-/check_int64_add
+C/func/-/check_int64_div
+C/func/-/check_int64_mul
+C/func/-/check_int64_sub
+C/macro/-/CHECK_STOPPED
+C/macro/-/CHECK_STOPPED0
+C/macro/-/CHECK_STOPPEDE
+C/macro/-/CHECK_TYPE
+C/macro/-/CHECK_TYPE0
+C/func/-/check_uint32_add
+C/func/-/check_uint32_div
+C/func/-/check_uint32_mul
+C/func/-/check_uint32_sub
+C/func/-/check_uint64_add
+C/func/-/check_uint64_div
+C/func/-/check_uint64_mul
+C/func/-/check_uint64_sub
+JavaScript/data/HTMLDataGridCellElement/checked
+JavaScript/data/HTMLInputElement/checked
+JavaScript/instm/SVGSVGElement/checkEnclosure
+C++/instm/IOHIDDevice/checkEventDelivery
+C++/instm/IOBlockStorageDriver/checkForMedia
+Objective-C/instm/NSWorkspace/checkForRemovableMedia
+C++/instm/IOCommandGate/checkForWork
+C++/instm/IOEventSource/checkForWork
+C++/instm/IOInterruptEventSource/checkForWork
+C++/instm/IOTimerEventSource/checkForWork
+JavaScript/instm/WebGLRenderingContext/checkFramebufferStatus
+Objective-C/instm/NSSpellChecker/checkGrammarOfString:startingAt:language:wrap:inSpellDocumentWithTag:details:
+JavaScript/clconst/DOMApplicationCache/CHECKING
+C/func/-/checkint
+JavaScript/instm/SVGSVGElement/checkIntersection
+C++/instm/IOFWPhysicalAddressSpace/checkMemoryInRange
+C++/instm/OSMetaClass/checkMetaCast
+C++/clm/OSMetaClass/checkMetaCastWithName
+C++/clm/OSMetaClass/checkModLoad
+JavaScript/instm/NotificationCenter/checkPermission
+C++/instm/IOSCSIProtocolInterface/CheckPowerState
+Objective-C/instm/NSURL/checkResourceIsReachableAndReturnError:
+Objective-C/instm/NSScroller/checkSpaceForParts
+Objective-C/instm/WebView/checkSpelling:
+Objective-C/instm/NSText/checkSpelling:
+Objective-C/instm/NSSpellChecker/checkSpellingOfString:startingAt:
+Objective-C/instm/NSSpellChecker/checkSpellingOfString:startingAt:language:wrap:inSpellDocumentWithTag:wordCount:
+Objective-C/instm/NSSpellChecker/checkString:range:types:options:inSpellDocumentWithTag:orthography:wordCount:
+Objective-C/instm/NSTextView/checkTextInDocument:
+Objective-C/instm/NSTextView/checkTextInRange:types:options:
+Objective-C/instm/NSTextView/checkTextInSelection:
+C++/clm/OSMetaClassBase/checkTypeInst
+JavaScript/instm/HTMLTextAreaElement/checkValidity
+JavaScript/instm/HTMLFieldSetElement/checkValidity
+JavaScript/instm/HTMLButtonElement/checkValidity
+JavaScript/instm/HTMLInputElement/checkValidity
+JavaScript/instm/HTMLSelectElement/checkValidity
+JavaScript/instm/HTMLFormElement/checkValidity
+C/func/-/chflags
+C/func/-/chgat
+Objective-C/instm/PDFOutline/childAtIndex:
+Objective-C/instm/NSXMLNode/childAtIndex:
+Objective-C/instm/NSXMLNode/childCount
+JavaScript/data/Element/childElementCount
+Objective-C/instm/WebFrame/childFrames
+C++/instm/IORegistryEntry/childFromPath
+C/func/-/childHasRequestedPower
+Objective-C/instm/NSTreeNode/childNodes
+JavaScript/data/core/childNodes
+JavaScript/data/svg/childNodes
+Objective-C/instm/DRFolder(VirtualFolders)/children
+Objective-C/instm/NSXMLNode/children
+JavaScript/data/HTMLElement/children
+JavaScript/data/ScriptProfileNode/children
+Objective-C/instm/NSTreeController/childrenKeyPath
+Objective-C/instm/NSTreeController/childrenKeyPathForNode:
+Objective-C/instm/IBDocument/childrenOfObject:
+Objective-C/instm/NSScriptObjectSpecifier/childSpecifier
+Objective-C/instm/NSWindow/childWindows
+C/func/-/chmod
+JavaScript/data/HTMLTableRowElement/chOff
+JavaScript/data/HTMLTableColElement/chOff
+JavaScript/data/HTMLTableSectionElement/chOff
+JavaScript/data/HTMLTableCellElement/chOff
+Objective-C/instm/PDFAnnotationChoiceWidget/choices
+Objective-C/intfm/WebOpenPanelResultListener/chooseFilename:
+Objective-C/intfm/WebOpenPanelResultListener/chooseFilenames:
+Objective-C/instm/NSObject/chooseIdentityPanelShowHelp:
+C/func/-/chown
+C/func/-/chroot
+Objective-C/cl/-/CIColor
+Objective-C/cat/-/CIColor(AppKitAdditions)
+Objective-C/cl/-/CIContext
+Objective-C/instm/NSGraphicsContext/CIContext
+Objective-C/cl/-/CIFilter
+Objective-C/cat/-/CIFilter(CAFilterInfo)
+Objective-C/cat/-/CIFilter(IKFilterUIAddition)
+Objective-C/cl/-/CIFilterGenerator
+Objective-C/cl/-/CIFilterShape
+C/data/-/CIFormat
+Objective-C/cl/-/CIImage
+Objective-C/instm/NSCIImageRep/CIImage
+Objective-C/cat/-/CIImage(NSAppKitAdditions)
+Objective-C/cl/-/CIImageAccumulator
+Objective-C/cat/-/CIImageProvider
+Objective-C/cl/-/CIKernel
+C/tdef/-/CInfoPBRec
+Objective-C/cl/-/CIPlugIn
+Objective-C/intf/-/CIPlugInRegistration
+C/func/-/CIRCLEQ_ENTRY
+C/func/-/CIRCLEQ_HEAD
+C/func/-/CIRCLEQ_INIT
+C/func/-/CIRCLEQ_INSERT_AFTER
+C/func/-/CIRCLEQ_INSERT_BEFORE
+C/func/-/CIRCLEQ_INSERT_HEAD
+C/func/-/CIRCLEQ_INSERT_TAIL
+C/func/-/CIRCLEQ_REMOVE
+Objective-C/cl/-/CISampler
+JavaScript/data/HTMLQuoteElement/cite
+JavaScript/data/HTMLModElement/cite
+JavaScript/data/HTMLBlockquoteElement/cite
+Objective-C/cl/-/CIVector
+C/func/-/ckalloc
+C/func/-/ckfree
+C/func/-/ckrealloc
+JavaScript/clconst/WebGLRenderingContext/CLAMP_TO_EDGE
+C++/instm/IOService/clampPowerOn
+Objective-C/clm/NSProxy/class
+C/tdef/-/Class
+Objective-C/intfm/NSObject/class
+Objective-C/clm/NSObject/class
+C/func/-/class_addIvar
+C/func/-/class_addMethod
+C/func/-/class_addProtocol
+C/func/-/class_conformsToProtocol
+C/func/-/class_copyIvarList
+C/func/-/class_copyMethodList
+C/func/-/class_copyPropertyList
+C/func/-/class_copyProtocolList
+C/func/-/class_createInstance
+C/func/-/class_getClassMethod
+C/func/-/class_getClassVariable
+C/func/-/class_getInstanceMethod
+C/func/-/class_getInstanceSize
+C/func/-/class_getInstanceVariable
+C/func/-/class_getIvarLayout
+C/func/-/class_getMethodImplementation
+C/func/-/class_getMethodImplementation_stret
+C/func/-/class_getName
+C/func/-/class_getProperty
+C/func/-/class_getSuperclass
+C/func/-/class_getVersion
+C/func/-/class_getWeakIvarLayout
+C/func/-/class_isMetaClass
+C/func/-/class_replaceMethod
+C/func/-/class_respondsToSelector
+C/func/-/class_setIvarLayout
+C/func/-/class_setSuperclass
+C/func/-/class_setVersion
+C/func/-/class_setWeakIvarLayout
+Objective-C/instm/CIFilterGenerator/classAttributes
+Objective-C/instm/NSObject/classCode
+Objective-C/instm/NSObject/classDescription
+Objective-C/clm/NSScriptClassDescription/classDescriptionForClass:
+Objective-C/clm/NSClassDescription/classDescriptionForClass:
+Objective-C/instm/NSScriptClassDescription/classDescriptionForKey:
+Objective-C/instm/NSScriptSuiteRegistry/classDescriptionsInSuite:
+Objective-C/instm/NSScriptSuiteRegistry/classDescriptionWithAppleEventCode:
+Objective-C/clm/NSObject/classFallbacksForKeyedArchiver
+Objective-C/instm/NSObject/classForArchiver
+Objective-C/clm/NSKeyedUnarchiver/classForClassName:
+Objective-C/instm/NSKeyedUnarchiver/classForClassName:
+Objective-C/instm/NSObject/classForCoder
+Objective-C/instm/NSObject/classForKeyedArchiver
+Objective-C/clm/NSObject/classForKeyedUnarchiver
+Objective-C/instm/NSObject/classForPortCoder
+Objective-C/instm/SBApplication/classForScriptingClass:
+Objective-C/instm/NSScriptClassDescription/className
+Objective-C/instm/NSObject/className
+JavaScript/data/HTMLElement/className
+JavaScript/data/SVGStylable/className
+Objective-C/instm/NSBundle/classNamed:
+Objective-C/instm/NSUnarchiver/classNameDecodedForArchiveClassName:
+Objective-C/clm/NSUnarchiver/classNameDecodedForArchiveClassName:
+Objective-C/instm/NSArchiver/classNameEncodedForTrueClassName:
+Objective-C/instm/NSKeyedArchiver/classNameForClass:
+Objective-C/clm/NSKeyedArchiver/classNameForClass:
+Objective-C/instm/SBApplication/classNamesForCodes
+Objective-C/instm/IOBluetoothHostController/classOfDevice
+C++/instm/IOFireWireSerialBusProtocolTransport/cleanUp
+Objective-C/instm/NSTextView/cleanUpAfterDragOperation
+Objective-C/intfm/DRFileDataProduction/cleanupFileAfterBurn:
+C++/cl/-/CleanupFunction
+Objective-C/instm/NSPrintOperation/cleanUpOperation
+Objective-C/intfm/DRTrackDataProduction/cleanupTrackAfterBurn:
+Objective-C/intfm/DRTrackDataProduction/cleanupTrackAfterVerification:
+Objective-C/instm/CIImageAccumulator/clear
+C/func/-/clear
+JavaScript/instm/DataGridColumnList/clear
+JavaScript/data/HTMLBRElement/clear
+JavaScript/instm/HTMLDocument/clear
+JavaScript/instm/Storage/clear
+JavaScript/instm/SVGLengthList/clear
+JavaScript/instm/SVGNumberList/clear
+JavaScript/instm/SVGStringList/clear
+JavaScript/instm/SVGPathSegList/clear
+JavaScript/instm/SVGTransformList/clear
+JavaScript/instm/WebGLRenderingContext/clear
+JavaScript/instm/SVGPointList/clear
+C++/instm/IOSCSIProtocolInterface/ClearACA
+Objective-C/instm/IOBluetoothDeviceSelectorController/clearAllowedUUIDs
+Objective-C/instm/IOBluetoothServiceBrowserController/clearAllowedUUIDs
+Objective-C/instm/IOBluetoothPairingController/clearAllowedUUIDs
+C++/instm/IOFireWirePCRSpace/clearAllP2PConnections
+C++/instm/IOAudioEngine/clearAllSampleBuffers
+C++/instm/IONetworkData/clearBuffer
+Objective-C/instm/CIContext/clearCaches
+Objective-C/clm/NSColor/clearColor
+JavaScript/instm/WebGLRenderingContext/clearColor
+JavaScript/instm/InjectedScriptHost/clearConsoleMessages
+Objective-C/instm/NSPasteboard/clearContents
+Objective-C/clm/NSOpenGLContext/clearCurrentContext
+JavaScript/instm/Clipboard/clearData
+JavaScript/instm/WebGLRenderingContext/clearDepth
+Objective-C/instm/NSOpenGLContext/clearDrawable
+C/func/-/clearerr
+C/func/-/clearerr_unlocked
+Objective-C/instm/IOBluetoothDeviceInquiry/clearFoundDevices
+Objective-C/instm/NSOpenGLView/clearGLContext
+C++/instm/IONetworkInterface/clearInputQueue
+JavaScript/instm/DOMWindow/clearInterval
+JavaScript/instm/WorkerContext/clearInterval
+C++/instm/IODMACommand/clearMemoryDescriptor
+C++/instm/IOInterleavedMemoryDescriptor/clearMemoryDescriptors
+C/func/-/ClearMovieSelection
+C++/instm/IOFireWireDevice/clearNodeFlags
+C/func/-/clearok
+JavaScript/instm/XSLTProcessor/clearParameters
+C++/instm/IOUSBPipe/ClearPipeStall
+C++/instm/IOUSBController/ClearPipeStall
+Objective-C/instm/NSDocumentController/clearRecentDocuments:
+JavaScript/instm/CanvasRenderingContext2D/clearRect
+C++/instm/IOUSBController/ClearRootHubFeature
+C++/instm/IOUSBController/ClearRootHubPortFeature
+Objective-C/instm/ABPeoplePickerView/clearSearchField:
+Objective-C/instm/PDFView/clearSelection
+Objective-C/instm/NSArrayController/clearsFilterPredicateOnInsertion
+JavaScript/instm/CanvasRenderingContext2D/clearShadow
+C++/instm/IOUSBPipe/ClearStall
+Objective-C/instm/NSAnimation/clearStartAnimation
+JavaScript/instm/WebGLRenderingContext/clearStencil
+Objective-C/instm/NSAnimation/clearStopAnimation
+C++/instm/IOSCSIProtocolInterface/ClearTaskSet
+C++/instm/OSSerialize/clearText
+JavaScript/instm/DOMWindow/clearTimeout
+JavaScript/instm/WorkerContext/clearTimeout
+JavaScript/instm/HTMLButtonElement/click
+JavaScript/instm/HTMLInputElement/click
+JavaScript/clconst/Event/CLICK
+Objective-C/instm/NSEvent/clickCount
+Objective-C/instm/NSBrowser/clickedColumn
+Objective-C/instm/NSTableView/clickedColumn
+Objective-C/instm/NSTextView/clickedOnLink:atIndex:
+Objective-C/instm/NSPathCell/clickedPathComponentCell
+Objective-C/instm/NSPathControl/clickedPathComponentCell
+Objective-C/instm/NSBrowser/clickedRow
+Objective-C/instm/NSTableView/clickedRow
+Objective-C/instm/NSURLProtocol/client
+Objective-C/instm/IMKInputController/client
+Objective-C/instm/NSTextInputContext/client
+Objective-C/instp/NSTextInputContext/client
+Objective-C/instm/ISyncSessionDriver/client
+Objective-C/instp/PSFeed/client
+C/func/-/client_cert_cb
+Objective-C/instm/ISyncSession/clientAcceptedChangesForRecordWithIdentifier:formattedRecord:newRecordIdentifier:
+Objective-C/instm/ISyncSession/clientChangedRecordIdentifiers:
+C++/instm/IOAudioControl/clientClosed
+C++/instm/IOAudioEngine/clientClosed
+Objective-C/instm/ISyncSession/clientCommittedAcceptedChanges
+Objective-C/instm/ISyncSession/clientCommittedAcceptedChangesWithNextAnchors:
+Objective-C/instm/NSObject/clientDescriptionURL
+Objective-C/instm/ISyncSession/clientDidResetEntityNames:
+Objective-C/instm/ISyncSession/clientFinishedPushingChangesWithNextAnchors:
+Objective-C/clm/PSClient/clientForBundleIdentifier:
+Objective-C/instm/OBEXSession/clientHandleIncomingData:
+JavaScript/data/Element/clientHeight
+Objective-C/instm/ISyncClient/clientIdentifier
+Objective-C/instm/NSObject/clientIdentifier
+Objective-C/instm/ISyncSession/clientInfoForRecordWithIdentifier:
+JavaScript/data/DOMWindow/clientInformation
+JavaScript/data/Element/clientLeft
+Objective-C/instm/ISyncSession/clientLostRecordWithIdentifier:shouldReplaceOnNextSync:
+JavaScript/cl/-/ClientRect
+JavaScript/data/DOMWindow/ClientRect
+JavaScript/cl/-/ClientRectList
+JavaScript/data/DOMWindow/ClientRectList
+Objective-C/instm/ISyncSession/clientRefusedChangesForRecordWithIdentifier:
+JavaScript/data/Element/clientTop
+Objective-C/instm/ISyncClient/clientType
+Objective-C/instm/NSRulerView/clientView
+Objective-C/instm/ISyncSession/clientWantsToPushAllRecordsForEntityNames:
+C/func/-/ClientWhitePointOfCCC
+JavaScript/data/Element/clientWidth
+Objective-C/instm/ISyncManager/clientWithIdentifier:
+Objective-C/instm/ISyncManager/clientWithIdentifier:needsSyncing:
+JavaScript/data/MouseEvent/clientX
+JavaScript/data/Touch/clientX
+JavaScript/data/WheelEvent/clientX
+JavaScript/data/MouseEvent/clientY
+JavaScript/data/Touch/clientY
+JavaScript/data/WheelEvent/clientY
+JavaScript/instm/CanvasRenderingContext2D/clip
+JavaScript/data/DOMWindow/Clipboard
+JavaScript/cl/-/Clipboard
+JavaScript/data/Event/clipboardData
+JavaScript/data/SVGClipPathElement/clipPathUnits
+Objective-C/clm/NSBezierPath/clipRect:
+Objective-C/cl/-/CLLocation
+C/tdef/-/CLLocationAccuracy
+C/tdef/-/CLLocationCoordinate2D
+C/tdef/-/CLLocationDegrees
+C/tdef/-/CLLocationDirection
+C/tdef/-/CLLocationDistance
+Objective-C/cl/-/CLLocationManager
+Objective-C/intf/-/CLLocationManagerDelegate
+C/tdef/-/CLLocationSpeed
+C/func/-/clnt_broadcast
+C/func/-/clnt_call
+C/func/-/clnt_control
+C/func/-/clnt_create
+C/func/-/clnt_destroy
+C/func/-/clnt_freeres
+C/func/-/clnt_geterr
+C/func/-/clnt_pcreateerror
+C/func/-/clnt_perrno
+C/func/-/clnt_perror
+C/func/-/clnt_spcreateerror
+C/func/-/clnt_sperrno
+C/func/-/clnt_sperror
+C/func/-/clntraw_create
+C/func/-/clnttcp_create
+C/func/-/clntudp_bufcreate
+C/func/-/clntudp_create
+C/func/-/clock
+C/func/-/ClockCallMeWhen
+C/func/-/ClockCancelCallBack
+C/func/-/ClockDisposeCallBack
+C/func/-/ClockGetRate
+C/func/-/ClockGetRateChangeConstraints
+C/func/-/ClockGetTime
+C/func/-/ClockNewCallBack
+C/func/-/ClockRateChanged
+C/func/-/ClockSetTimeBase
+C/func/-/ClockStartStopChanged
+C/func/-/ClockTimeChanged
+C/func/-/clog
+C/func/-/clogf
+C/func/-/clogl
+C++/instm/IODMACommand/cloneCommand
+JavaScript/instm/Range/cloneContents
+JavaScript/instm/core/cloneNode
+JavaScript/instm/Range/cloneRange
+Objective-C/instm/NSWindowController/close
+Objective-C/instm/NSDocument/close
+Objective-C/instm/NSDrawer/close
+Objective-C/instm/NSStream/close
+Objective-C/instm/QTCaptureDevice/close
+Objective-C/instm/XGConnection/close
+C/func/-/Close
+Objective-C/instm/NSWindow/close
+C/func/-/close
+Objective-C/instm/WebView/close
+C++/instm/IOService/close
+JavaScript/instm/DOMWindow/close
+JavaScript/instm/EventSource/close
+JavaScript/instm/HTMLDocument/close
+JavaScript/instm/MessagePort/close
+JavaScript/instm/WorkerContext/close
+JavaScript/instm/WebSocket/close
+Objective-C/instm/NSDrawer/close:
+Objective-C/instm/DRSetupPanel/close:
+Objective-C/instm/NSDocumentController/closeAllDocumentsWithDelegate:didCloseAllSelector:contextInfo:
+Objective-C/instm/IOBluetoothRFCOMMChannel/closeChannel
+Objective-C/instm/IOBluetoothL2CAPChannel/closeChannel
+C/func/-/CloseComponent
+C/func/-/CloseComponentResFile
+Objective-C/instm/IOBluetoothDevice/closeConnection
+Objective-C/instm/AMAction/closed
+JavaScript/data/DOMWindow/closed
+JavaScript/clconst/EventSource/CLOSED
+JavaScript/clconst/WebSocket/CLOSED
+C/func/-/CloseDataBrowserContainer
+Objective-C/instm/IOBluetoothRFCOMMAudioController/closeDeviceConnection
+Objective-C/clm/NSCursor/closedHandCursor
+C/func/-/closedir
+Objective-C/instm/NSFileHandle/closeFile
+C/func/-/closelog
+Objective-C/instm/NSBezierPath/closePath
+JavaScript/instm/CanvasRenderingContext2D/closePath
+C++/instm/IOUSBController/ClosePipe
+C/func/-/CloseResFile
+Objective-C/instm/IOBluetoothRFCOMMAudioController/closeRFCOMMChannel
+Objective-C/instm/IOBluetoothRFCOMMAudioController/closeSCOConnection
+Objective-C/instm/NSSpellChecker/closeSpellDocumentWithTag:
+Objective-C/instm/NSSlider/closestTickMarkValueToValue:
+Objective-C/instm/NSSliderCell/closestTickMarkValueToValue:
+Objective-C/instm/IOBluetoothOBEXSession/closeTransportConnection
+Objective-C/instm/OBEXSession/closeTransportConnection
+Objective-C/instm/DRDevice/closeTray
+JavaScript/instm/InspectorFrontendHost/closeWindow
+JavaScript/clconst/JavaScriptCallFrame/CLOSURE_SCOPE
+C/func/-/clrtobot
+C/func/-/clrtoeol
+C/econst/-/cm10CLRData
+C/econst/-/cm11CLRData
+C/econst/-/cm12CLRData
+C/econst/-/cm13CLRData
+C/econst/-/cm14CLRData
+C/econst/-/cm15CLRData
+C/econst/-/cm16_8ColorPacking
+C/econst/-/cm24_8ColorPacking
+C/tdef/-/CM2Header
+C/tdef/-/CM2Profile
+C/econst/-/cm32_16ColorPacking
+C/econst/-/cm32_32ColorPacking
+C/econst/-/cm32_8ColorPacking
+C/econst/-/cm3CLRData
+C/econst/-/cm40_8ColorPacking
+C/econst/-/cm48_16ColorPacking
+C/econst/-/cm48_8ColorPacking
+C/econst/-/cm4CLRData
+C/tdef/-/CM4Header
+C/econst/-/cm56_8ColorPacking
+C/econst/-/cm5CLRData
+C/econst/-/cm64_16ColorPacking
+C/econst/-/cm64_8ColorPacking
+C/econst/-/cm6CLRData
+C/econst/-/cm7CLRData
+C/econst/-/cm8_8ColorPacking
+C/econst/-/cm8CLRData
+C/econst/-/cm9CLRData
+C/econst/-/cmAbortWriteAccess
+C/econst/-/cmAbsoluteColorimetric
+C/econst/-/cmAbstractClass
+C/tdef/-/CMAccelerationCalcData
+C/tdef/-/CMAccelerationCalcDataHdl
+C/tdef/-/CMAccelerationCalcDataPtr
+C/tdef/-/CMAccelerationTableData
+C/tdef/-/CMAccelerationTableDataHdl
+C/tdef/-/CMAccelerationTableDataPtr
+C/tdef/-/CMAdaptationMatrixType
+C/econst/-/cmAlphaFirstPacking
+C/econst/-/cmAlphaLastPacking
+C/econst/-/cmAlphaPmulSpace
+C/econst/-/cmAlphaSpace
+C/tdef/-/CMAppleProfileHeader
+C/econst/-/cmARGB32PmulSpace
+C/econst/-/cmARGB32Space
+C/econst/-/cmARGB64LPmulSpace
+C/econst/-/cmARGB64LSpace
+C/econst/-/cmARGB64PmulSpace
+C/econst/-/cmARGB64Space
+C/econst/-/cmAsciiData
+C/econst/-/cmAToB0Tag
+C/econst/-/cmAToB1Tag
+C/econst/-/cmAToB2Tag
+C/econst/-/cmBeginAccess
+C/econst/-/cmBeginProfile
+C/econst/-/cmBeginProfileSel
+C/econst/-/cmBestMode
+C/econst/-/cmBgResponse
+C/econst/-/cmBinaryData
+C/tdef/-/CMBitmap
+C/tdef/-/CMBitmapCallBackProc
+C/tdef/-/CMBitmapCallBackProcPtr
+C/tdef/-/CMBitmapCallBackUPP
+C/tdef/-/CMBitmapColorSpace
+C/econst/-/cmBlueColorantTag
+C/econst/-/cmBlueResponse
+C/econst/-/cmBlueTRCTag
+C/econst/-/cmBradfordChromaticAdaptation
+C/econst/-/cmBToA0Tag
+C/econst/-/cmBToA1Tag
+C/econst/-/cmBToA2Tag
+C/econst/-/cmBufferBasedProfile
+C/tdef/-/CMBufferLocation
+C/func/-/CMCalibrateDisplay
+C/econst/-/cmCalibrationDateTimeTag
+C/econst/-/cmCameraDeviceClass
+C/econst/-/cmCantConcatenateError
+C/econst/-/cmCantCopyModifiedV1Profile
+C/econst/-/cmCantDeleteElement
+C/econst/-/cmCantDeleteProfile
+C/econst/-/cmCantGamutCheckError
+C/econst/-/cmCantXYZ
+C/econst/-/cmCharTargetTag
+C/tdef/-/CMChromaticAdaptation
+C/econst/-/cmChromaticAdaptationTag
+C/func/-/CMCloneProfileRef
+C/econst/-/cmCloseAccess
+C/func/-/CMCloseProfile
+C/econst/-/cmCloseSpool
+C/econst/-/cmCMSReservedFlagsMask
+C/tdef/-/CMCMYColor
+C/econst/-/cmCMYData
+C/econst/-/cmCMYK32Space
+C/econst/-/cmCMYK64LSpace
+C/econst/-/cmCMYK64Space
+C/tdef/-/CMCMYKColor
+C/econst/-/cmCMYKData
+C/econst/-/cmCMYKSpace
+C/tdef/-/CMColor
+C/econst/-/cmColorimetricMatch
+C/econst/-/cmColorSpaceAlphaMask
+C/econst/-/cmColorSpaceClass
+C/econst/-/cmColorSpaceEncodingMask
+C/econst/-/cmColorSpacePackingMask
+C/econst/-/cmColorSpacePremulAlphaMask
+C/econst/-/cmColorSpaceReservedMask
+C/econst/-/cmColorSpaceSpaceAndAlphaMask
+C/econst/-/cmColorSpaceSpaceMask
+C/econst/-/cmComment
+C/tdef/-/CMConcatCallBackProcPtr
+C/tdef/-/CMConcatCallBackUPP
+C/tdef/-/CMConcatProfileSet
+C/econst/-/cmContinueProfileSel
+C/func/-/CMConvertFixedXYZToXYZ
+C/func/-/CMConvertHLSToRGB
+C/func/-/CMConvertHSVToRGB
+C/func/-/CMConvertLabToXYZ
+C/func/-/CMConvertLuvToXYZ
+C/func/-/CMConvertRGBToGray
+C/func/-/CMConvertRGBToHLS
+C/func/-/CMConvertRGBToHSV
+C/func/-/CMConvertXYZToFixedXYZ
+C/func/-/CMConvertXYZToLab
+C/func/-/CMConvertXYZToLuv
+C/func/-/CMConvertXYZToXYZ
+C/func/-/CMConvertXYZToYxy
+C/func/-/CMConvertYxyToXYZ
+C/func/-/CMCopyProfile
+C/func/-/CMCopyProfileDescriptionString
+C/func/-/CMCopyProfileLocalizedString
+C/func/-/CMCopyProfileLocalizedStringDictionary
+C/econst/-/cmCopyrightTag
+C/func/-/CMCountImageProfiles
+C/tdef/-/CMCountImageProfilesProcPtr
+C/func/-/CMCountProfileElements
+C/econst/-/cmCreateNewAccess
+C/func/-/CMCreateProfileIdentifier
+C/econst/-/cmCS1ChromTag
+C/econst/-/cmCS1CustTag
+C/econst/-/cmCS1NameTag
+C/econst/-/cmCS1ProfileVersion
+C/econst/-/cmCS1TRCTag
+C/econst/-/cmCS2ProfileVersion
+C/econst/-/cmCurrentDeviceInfoVersion
+C/econst/-/cmCurrentProfileInfoVersion
+C/econst/-/cmCurrentProfileLocationSize
+C/econst/-/cmCurrentProfileMajorVersion
+C/tdef/-/CMCurveType
+C/tdef/-/CMCWInfoRecord
+C/econst/-/cmCyanResponse
+C/tdef/-/CMDataType
+C/tdef/-/CMDateTime
+C/tdef/-/CMDateTimeType
+C/econst/-/cmDefaultDeviceID
+C/econst/-/cmDefaultProfileID
+C/econst/-/cmDeviceAlreadyRegistered
+C/tdef/-/CMDeviceClass
+C/tdef/-/CMDeviceData
+C/tdef/-/CMDeviceDataPtr
+C/econst/-/cmDeviceDBNotFoundErr
+C/tdef/-/CMDeviceID
+C/tdef/-/CMDeviceInfo
+C/econst/-/cmDeviceInfoVersion1
+C/econst/-/cmDeviceMfgDescTag
+C/econst/-/cmDeviceModelDescTag
+C/tdef/-/CMDeviceName
+C/tdef/-/CMDeviceNamePtr
+C/econst/-/cmDeviceNotRegistered
+C/tdef/-/CMDeviceProfileArray
+C/tdef/-/CMDeviceProfileID
+C/tdef/-/CMDeviceProfileInfo
+C/econst/-/cmDeviceProfileInfoVersion1
+C/econst/-/cmDeviceProfileInfoVersion2
+C/tdef/-/CMDeviceProfileScope
+C/econst/-/cmDeviceProfilesNotFound
+C/tdef/-/CMDeviceScope
+C/tdef/-/CMDeviceSpec
+C/tdef/-/CMDeviceSpecPtr
+C/tdef/-/CMDeviceState
+C/econst/-/cmDeviceStateAppleRsvdBits
+C/econst/-/cmDeviceStateBusy
+C/econst/-/cmDeviceStateDefault
+C/econst/-/cmDeviceStateDeviceRsvdBits
+C/econst/-/cmDeviceStateForceNotify
+C/econst/-/cmDeviceStateOffline
+C/econst/-/cmDisableMatching
+C/econst/-/cmDisplayClass
+C/econst/-/cmDisplayDeviceClass
+C/tdef/-/CMDisplayIDType
+C/econst/-/cmDisplayUse
+C/func/-/CMDisposeProfileSearch
+C/econst/-/cmDraftMode
+C/econst/-/cmElementTagNotFound
+C/econst/-/cmEmbeddedMask
+C/econst/-/cmEmbeddedProfile
+C/econst/-/cmEmbeddedUse
+C/econst/-/cmEmbeddedUseMask
+C/func/-/CMEmbedImage
+C/tdef/-/CMEmbedImageProcPtr
+C/econst/-/cmEmbedProfileIdentifier
+C/econst/-/cmEmbedWholeProfile
+C/econst/-/cmEnableMatching
+C/func/-/CMEnableMatchingComment
+C/econst/-/cmEndAccess
+C/func/-/CMEndMatching
+C/econst/-/cmEndProfile
+C/econst/-/cmEndProfileSel
+C/econst/-/cmErrIncompatibleProfile
+C/tdef/-/CMError
+C/econst/-/cmFatalProfileErr
+C/econst/-/cmFileBasedProfile
+C/tdef/-/CMFileLocation
+C/tdef/-/CMFixedXYColor
+C/tdef/-/CMFixedXYZColor
+C/econst/-/cmFlare0
+C/econst/-/cmFlare100
+C/tdef/-/CMFlattenProcPtr
+C/func/-/CMFlattenProfile
+C/tdef/-/CMFlattenUPP
+C/econst/-/cmGamutCheckingMask
+C/econst/-/cmGamutResult1Space
+C/econst/-/cmGamutResultSpace
+C/econst/-/cmGamutTag
+C/econst/-/cmGeometry045or450
+C/econst/-/cmGeometry0dord0
+C/econst/-/cmGeometryUnknown
+C/func/-/CMGetColorSyncFolderSpec
+C/func/-/CMGetColorSyncVersion
+C/func/-/CMGetCWInfo
+C/func/-/CMGetDefaultDevice
+C/func/-/CMGetDefaultProfileBySpace
+C/func/-/CMGetDefaultProfileByUse
+C/func/-/CMGetDeviceDefaultProfileID
+C/func/-/CMGetDeviceFactoryProfiles
+C/func/-/CMGetDeviceInfo
+C/func/-/CMGetDeviceProfile
+C/func/-/CMGetDeviceProfiles
+C/func/-/CMGetDeviceState
+C/func/-/CMGetGammaByAVID
+C/func/-/CMGetImageSpace
+C/tdef/-/CMGetImageSpaceProcPtr
+C/func/-/CMGetIndImageProfile
+C/tdef/-/CMGetIndImageProfileProcPtr
+C/func/-/CMGetIndNamedColorValue
+C/func/-/CMGetIndProfileElement
+C/func/-/CMGetIndProfileElementInfo
+C/func/-/CMGetNamedColorIndex
+C/func/-/CMGetNamedColorInfo
+C/func/-/CMGetNamedColorName
+C/func/-/CMGetNamedColorValue
+C/func/-/CMGetPartialProfileElement
+C/func/-/CMGetPreferredCMM
+C/func/-/CMGetProfileByAVID
+C/func/-/CMGetProfileDescriptions
+C/func/-/CMGetProfileElement
+C/func/-/CMGetProfileHeader
+C/func/-/CMGetProfileLocation
+C/func/-/CMGetProfileMD5
+C/func/-/CMGetProfileRefCount
+C/func/-/CMGetPS2ColorRendering
+C/func/-/CMGetPS2ColorRenderingIntent
+C/func/-/CMGetPS2ColorRenderingVMSize
+C/func/-/CMGetPS2ColorSpace
+C/func/-/CMGetScriptProfileDescription
+C/func/-/CMGetSystemProfile
+C/econst/-/cmGlossy
+C/econst/-/cmGlossyMatteMask
+C/econst/-/cmGray16LSpace
+C/econst/-/cmGray16Space
+C/econst/-/cmGray8Space
+C/econst/-/cmGrayA16PmulSpace
+C/econst/-/cmGrayA16Space
+C/econst/-/cmGrayA32LPmulSpace
+C/econst/-/cmGrayA32LSpace
+C/econst/-/cmGrayA32PmulSpace
+C/econst/-/cmGrayA32Space
+C/econst/-/cmGrayAPmulSpace
+C/econst/-/cmGrayASpace
+C/tdef/-/CMGrayColor
+C/econst/-/cmGrayData
+C/econst/-/cmGrayResponse
+C/econst/-/cmGraySpace
+C/econst/-/cmGrayTRCTag
+C/econst/-/cmGreenColorantTag
+C/econst/-/cmGreenResponse
+C/econst/-/cmGreenTRCTag
+C/econst/-/cmHandleBasedProfile
+C/tdef/-/CMHandleLocation
+C/tdef/-/CMHeader
+C/econst/-/cmHLS32Space
+C/tdef/-/CMHLSColor
+C/econst/-/cmHLSData
+C/econst/-/cmHLSSpace
+C/econst/-/cmHSV32Space
+C/tdef/-/CMHSVColor
+C/econst/-/cmHSVData
+C/econst/-/cmHSVSpace
+C/econst/-/cmICCProfileVersion2
+C/econst/-/cmICCProfileVersion21
+C/econst/-/cmICCProfileVersion4
+C/econst/-/cmICCReservedFlagsMask
+C/econst/-/cmIlluminantA
+C/econst/-/cmIlluminantD50
+C/econst/-/cmIlluminantD55
+C/econst/-/cmIlluminantD65
+C/econst/-/cmIlluminantD93
+C/econst/-/cmIlluminantEquiPower
+C/econst/-/cmIlluminantF2
+C/econst/-/cmIlluminantF8
+C/econst/-/cmIlluminantUnknown
+C/econst/-/cmIndexRangeErr
+C/econst/-/cmInputClass
+C/econst/-/cmInputUse
+C/tdef/-/CMIntentCRDVMSize
+C/econst/-/cmInternalCFErr
+C/econst/-/cmInterpolationMask
+C/econst/-/cmInvalidColorSpace
+C/econst/-/cmInvalidDstMap
+C/econst/-/cmInvalidProfile
+C/econst/-/cmInvalidProfileComment
+C/econst/-/cmInvalidProfileLocation
+C/econst/-/cmInvalidSearch
+C/econst/-/cmInvalidSrcMap
+C/tdef/-/CMIString
+C/econst/-/cmIterateAllDeviceProfiles
+C/func/-/CMIterateCMMInfo
+C/func/-/CMIterateColorDevices
+C/func/-/CMIterateColorSyncFolder
+C/econst/-/cmIterateCurrentDeviceProfiles
+C/econst/-/cmIterateCustomDeviceProfiles
+C/tdef/-/CMIterateDeviceInfoProcPtr
+C/tdef/-/CMIterateDeviceProfileProcPtr
+C/func/-/CMIterateDeviceProfiles
+C/econst/-/cmIterateDeviceProfilesMask
+C/econst/-/cmIterateFactoryDeviceProfiles
+C/econst/-/cmLAB24Space
+C/econst/-/cmLAB32Space
+C/econst/-/cmLAB48LSpace
+C/econst/-/cmLAB48Space
+C/tdef/-/CMLabColor
+C/econst/-/cmLabData
+C/econst/-/cmLABSpace
+C/func/-/CMLaunchControlPanel
+C/econst/-/cmLinearChromaticAdaptation
+C/econst/-/cmLinesPer
+C/econst/-/cmLinkClass
+C/func/-/CMLinkImage
+C/tdef/-/CMLinkImageProcPtr
+C/econst/-/cmLittleEndianPacking
+C/econst/-/cmLong10ColorPacking
+C/econst/-/cmLong8ColorPacking
+C/econst/-/cmLuminanceTag
+C/tdef/-/CMLut16Type
+C/tdef/-/CMLut8Type
+C/econst/-/cmLUV32Space
+C/tdef/-/CMLuvColor
+C/econst/-/cmLuvData
+C/econst/-/cmLUVSpace
+C/econst/-/cmMagentaResponse
+C/econst/-/cmMagicNumber
+C/tdef/-/CMMakeAndModel
+C/econst/-/cmMakeAndModelTag
+C/tdef/-/CMMakeAndModelType
+C/func/-/CMMakeProfile
+C/econst/-/cmMatchAnyProfile
+C/econst/-/cmMatchApplProfileVersion
+C/econst/-/cmMatchAttributes
+C/econst/-/cmMatchBlack
+C/econst/-/cmMatchCMMType
+C/econst/-/cmMatchDataColorSpace
+C/econst/-/cmMatchDataType
+C/econst/-/cmMatchDeviceAttributes
+C/econst/-/cmMatchDeviceManufacturer
+C/econst/-/cmMatchDeviceModel
+C/econst/-/cmMatchDeviceType
+C/tdef/-/CMMatchFlag
+C/econst/-/cmMatchFlags
+C/func/-/CMMatchImage
+C/tdef/-/CMMatchImageProcPtr
+C/econst/-/cmMatchManufacturer
+C/econst/-/cmMatchModel
+C/tdef/-/CMMatchOption
+C/econst/-/cmMatchOptions
+C/econst/-/cmMatchProfileClass
+C/econst/-/cmMatchProfileCMMType
+C/econst/-/cmMatchProfileConnectionSpace
+C/econst/-/cmMatchProfileFlags
+C/tdef/-/CMMatchRef
+C/econst/-/cmMatchWhite
+C/econst/-/cmMCEight8Space
+C/econst/-/cmMCEightSpace
+C/econst/-/cmMCFive8Space
+C/econst/-/cmMCFiveSpace
+C/econst/-/cmMCH5Data
+C/econst/-/cmMCH6Data
+C/econst/-/cmMCH7Data
+C/econst/-/cmMCH8Data
+C/econst/-/cmMCSeven8Space
+C/econst/-/cmMCSevenSpace
+C/econst/-/cmMCSix8Space
+C/econst/-/cmMCSixSpace
+C/econst/-/cmMeasurementTag
+C/tdef/-/CMMeasurementType
+C/econst/-/cmMediaBlackPointTag
+C/econst/-/cmMediaWhitePointTag
+C/econst/-/cmMethodError
+C/econst/-/cmMethodNotFound
+C/tdef/-/CMMInfo
+C/tdef/-/CMMInfoRecord
+C/econst/-/CMMInterfaceVersion
+C/tdef/-/CMMIterateProcPtr
+C/tdef/-/CMMIterateUPP
+C/econst/-/cmMonitorDevice
+C/tdef/-/CMMultichannel5Color
+C/tdef/-/CMMultichannel6Color
+C/tdef/-/CMMultichannel7Color
+C/tdef/-/CMMultichannel8Color
+C/tdef/-/CMMultiFunctCLUTType
+C/tdef/-/CMMultiFunctLutA2BType
+C/tdef/-/CMMultiFunctLutB2AType
+C/tdef/-/CMMultiFunctLutType
+C/tdef/-/CMMultiLocalizedUniCodeEntryRec
+C/tdef/-/CMMultiLocalizedUniCodeType
+C/tdef/-/CMNamedColor
+C/tdef/-/CMNamedColor2EntryType
+C/econst/-/cmNamedColor2Tag
+C/tdef/-/CMNamedColor2Type
+C/econst/-/cmNamedColorClass
+C/econst/-/cmNamedColorNotFound
+C/econst/-/cmNamedColorTag
+C/tdef/-/CMNamedColorType
+C/econst/-/cmNamedData
+C/econst/-/cmNamedIndexed32LSpace
+C/econst/-/cmNamedIndexed32Space
+C/econst/-/cmNamedIndexedSpace
+C/tdef/-/CMNativeDisplayInfo
+C/econst/-/cmNativeDisplayInfoTag
+C/tdef/-/CMNativeDisplayInfoType
+C/econst/-/cmNativeMatchingPreferred
+C/func/-/CMNewProfile
+C/func/-/CMNewProfileSearch
+C/econst/-/cmNoColorPacking
+C/econst/-/cmNoCurrentProfile
+C/econst/-/cmNoGDevicesError
+C/econst/-/cmNoProfileBase
+C/econst/-/cmNormalMode
+C/econst/-/cmNoSpace
+C/econst/-/cmNumHeaderElements
+C/econst/-/cmOneBitDirectPacking
+C/econst/-/cmOnePlusLastResponse
+C/func/-/CMOpenProfile
+C/econst/-/cmOpenReadAccess
+C/econst/-/cmOpenReadSpool
+C/econst/-/cmOpenWriteAccess
+C/econst/-/cmOpenWriteSpool
+C/econst/-/cmOriginalProfileLocationSize
+C/econst/-/cmOutputClass
+C/econst/-/cmOutputUse
+C/tdef/-/CMovePBRec
+C/econst/-/cmpAliasNoFlags
+C/econst/-/cmpAliasOnlyThisFile
+C/tdef/-/CMParametricCurveType
+C/econst/-/cmParametricType0
+C/econst/-/cmParametricType1
+C/econst/-/cmParametricType2
+C/econst/-/cmParametricType3
+C/econst/-/cmParametricType4
+C/econst/-/cmPathBasedProfile
+C/tdef/-/CMPathLocation
+C/econst/-/cmPerceptual
+C/econst/-/cmPerceptualMatch
+C/econst/-/cmpIsMissing
+C/econst/-/cmPreview0Tag
+C/econst/-/cmPreview1Tag
+C/econst/-/cmPreview2Tag
+C/econst/-/cmPrinterDevice
+C/econst/-/cmPrinterDeviceClass
+C/econst/-/cmProcedureBasedProfile
+C/tdef/-/CMProcedureLocation
+C/tdef/-/CMProfile
+C/tdef/-/CMProfileAccessProcPtr
+C/tdef/-/CMProfileAccessUPP
+C/tdef/-/CMProfileChromaticities
+C/econst/-/cmProfileDescriptionMLTag
+C/econst/-/cmProfileDescriptionTag
+C/func/-/CMProfileElementExists
+C/econst/-/cmProfileError
+C/tdef/-/CMProfileFilterProc
+C/tdef/-/CMProfileFilterProcPtr
+C/tdef/-/CMProfileFilterUPP
+C/tdef/-/CMProfileIdentifier
+C/func/-/CMProfileIdentifierFolderSearch
+C/func/-/CMProfileIdentifierListSearch
+C/econst/-/cmProfileIdentifierSel
+C/tdef/-/CMProfileIterateData
+C/econst/-/cmProfileIterateDataVersion1
+C/econst/-/cmProfileIterateDataVersion2
+C/econst/-/cmProfileIterateDataVersion3
+C/tdef/-/CMProfileIterateProcPtr
+C/tdef/-/CMProfileIterateUPP
+C/tdef/-/CMProfileLocation
+C/econst/-/cmProfileMajorVersionMask
+C/tdef/-/CMProfileMD5
+C/func/-/CMProfileModified
+C/tdef/-/CMProfileName
+C/tdef/-/CMProfileNamePtr
+C/econst/-/cmProfileNotFound
+C/tdef/-/CMProfileRef
+C/tdef/-/CMProfileResponse
+C/tdef/-/CMProfileSearchRecord
+C/tdef/-/CMProfileSearchRef
+C/econst/-/cmProfileSequenceDescTag
+C/tdef/-/CMProfileSequenceDescType
+C/econst/-/cmProfilesIdentical
+C/tdef/-/CMProfLoc
+C/econst/-/cmProofDeviceClass
+C/func/-/CMProofImage
+C/tdef/-/CMProofImageProcPtr
+C/econst/-/cmProofUse
+C/econst/-/cmPrtrDefaultScreens
+C/econst/-/cmPS2CRD0Tag
+C/econst/-/cmPS2CRD1Tag
+C/econst/-/cmPS2CRD2Tag
+C/econst/-/cmPS2CRD3Tag
+C/econst/-/cmPS2CRDVMSizeTag
+C/tdef/-/CMPS2CRDVMSizeType
+C/econst/-/cmPS2CSATag
+C/econst/-/cmPS2RenderingIntentTag
+C/econst/-/cmPS7bit
+C/econst/-/cmPS8bit
+C/econst/-/cmpThreadSafe
+C/econst/-/cmPtrBasedProfile
+C/tdef/-/CMPtrLocation
+C/econst/-/cmpWantsRegisterMessage
+C/econst/-/cmQualityMask
+C/econst/-/cmRangeOverFlow
+C/econst/-/cmReadAccess
+C/econst/-/cmReadSpool
+C/econst/-/cmRedColorantTag
+C/econst/-/cmRedResponse
+C/econst/-/cmRedTRCTag
+C/econst/-/cmReflective
+C/econst/-/cmReflectiveTransparentMask
+C/func/-/CMRegisterColorDevice
+C/econst/-/cmRelativeColorimetric
+C/func/-/CMRemoveProfileElement
+C/econst/-/cmReservedSpace1
+C/econst/-/cmReservedSpace2
+C/econst/-/cmReverseChannelPacking
+C/econst/-/cmRGB16LSpace
+C/econst/-/cmRGB16Space
+C/econst/-/cmRGB24Space
+C/econst/-/cmRGB32Space
+C/econst/-/cmRGB48LSpace
+C/econst/-/cmRGB48Space
+C/econst/-/cmRGB565LSpace
+C/econst/-/cmRGB565Space
+C/econst/-/cmRGBA32PmulSpace
+C/econst/-/cmRGBA32Space
+C/econst/-/cmRGBA64LPmulSpace
+C/econst/-/cmRGBA64LSpace
+C/econst/-/cmRGBA64PmulSpace
+C/econst/-/cmRGBA64Space
+C/econst/-/cmRGBAPmulSpace
+C/econst/-/cmRGBASpace
+C/tdef/-/CMRGBColor
+C/econst/-/cmRGBData
+C/econst/-/cmRGBSpace
+C/tdef/-/CMS15Fixed16ArrayType
+C/econst/-/cmSaturation
+C/econst/-/cmSaturationMatch
+C/econst/-/cmScannerDevice
+C/econst/-/cmScannerDeviceClass
+C/tdef/-/CMSCertificateChainMode
+C/tdef/-/CMScreeningChannelRec
+C/econst/-/cmScreeningDescTag
+C/econst/-/cmScreeningTag
+C/tdef/-/CMScreeningType
+C/func/-/CMSDecoderCopyAllCerts
+C/func/-/CMSDecoderCopyContent
+C/func/-/CMSDecoderCopyDetachedContent
+C/func/-/CMSDecoderCopyEncapsulatedContentType
+C/func/-/CMSDecoderCopySignerCert
+C/func/-/CMSDecoderCopySignerEmailAddress
+C/func/-/CMSDecoderCopySignerStatus
+C/func/-/CMSDecoderCreate
+C/func/-/CMSDecoderFinalizeMessage
+C/func/-/CMSDecoderGetNumSigners
+C/func/-/CMSDecoderGetTypeID
+C/func/-/CMSDecoderIsContentEncrypted
+C/tdef/-/CMSDecoderRef
+C/func/-/CMSDecoderSetDetachedContent
+C/func/-/CMSDecoderSetSearchKeychain
+C/func/-/CMSDecoderUpdateMessage
+C/econst/-/cmSearchError
+C/func/-/CMSearchGetIndProfile
+C/func/-/CMSearchGetIndProfileFileSpec
+C/tdef/-/CMSearchRecord
+C/func/-/CMSEncode
+C/func/-/CMSEncoderAddRecipients
+C/func/-/CMSEncoderAddSignedAttributes
+C/func/-/CMSEncoderAddSigners
+C/func/-/CMSEncoderAddSupportingCerts
+C/func/-/CMSEncoderCopyEncapsulatedContentType
+C/func/-/CMSEncoderCopyEncodedContent
+C/func/-/CMSEncoderCopyRecipients
+C/func/-/CMSEncoderCopySigners
+C/func/-/CMSEncoderCopySupportingCerts
+C/func/-/CMSEncoderCreate
+C/func/-/CMSEncoderGetCertificateChainMode
+C/func/-/CMSEncoderGetHasDetachedContent
+C/func/-/CMSEncoderGetTypeID
+C/tdef/-/CMSEncoderRef
+C/func/-/CMSEncoderSetCertificateChainMode
+C/func/-/CMSEncoderSetEncapsulatedContentType
+C/func/-/CMSEncoderSetHasDetachedContent
+C/func/-/CMSEncoderUpdateContent
+C/func/-/CMSetDefaultDevice
+C/func/-/CMSetDefaultProfileBySpace
+C/func/-/CMSetDefaultProfileByUse
+C/func/-/CMSetDeviceDefaultProfileID
+C/func/-/CMSetDeviceFactoryProfiles
+C/func/-/CMSetDeviceProfile
+C/func/-/CMSetDeviceProfiles
+C/func/-/CMSetDeviceState
+C/func/-/CMSetGammaByAVID
+C/func/-/CMSetIndImageProfile
+C/tdef/-/CMSetIndImageProfileProcPtr
+C/func/-/CMSetPartialProfileElement
+C/func/-/CMSetProfileByAVID
+C/func/-/CMSetProfileDescriptions
+C/func/-/CMSetProfileElement
+C/func/-/CMSetProfileElementReference
+C/func/-/CMSetProfileElementSize
+C/func/-/CMSetProfileHeader
+C/func/-/CMSetProfileLocalizedStringDictionary
+C/func/-/CMSetSystemProfile
+C/econst/-/cmSigCrdInfoType
+C/econst/-/cmSigCurveType
+C/econst/-/cmSigDataType
+C/econst/-/cmSigDateTimeType
+C/econst/-/cmSigLut16Type
+C/econst/-/cmSigLut8Type
+C/econst/-/cmSigMakeAndModelType
+C/econst/-/cmSigMeasurementType
+C/econst/-/cmSigMultiFunctA2BType
+C/econst/-/cmSigMultiFunctB2AType
+C/econst/-/cmSigMultiLocalizedUniCodeType
+C/econst/-/cmSigNamedColor2Type
+C/econst/-/cmSigNamedColorType
+C/econst/-/cmSigNativeDisplayInfoType
+C/tdef/-/CMSignatureType
+C/econst/-/cmSigParametricCurveType
+C/econst/-/cmSigProfileDescriptionType
+C/econst/-/cmSigProfileSequenceDescType
+C/econst/-/cmSigPS2CRDVMSizeType
+C/econst/-/cmSigS15Fixed16Type
+C/econst/-/cmSigScreeningType
+C/econst/-/cmSigSignatureType
+C/econst/-/cmSigTextType
+C/econst/-/cmSigU16Fixed16Type
+C/econst/-/cmSigU1Fixed15Type
+C/econst/-/cmSigUcrBgType
+C/econst/-/cmSigUInt16Type
+C/econst/-/cmSigUInt32Type
+C/econst/-/cmSigUInt64Type
+C/econst/-/cmSigUInt8Type
+C/econst/-/cmSigUnicodeTextType
+C/econst/-/cmSigVideoCardGammaType
+C/econst/-/cmSigViewingConditionsType
+C/econst/-/cmSigXYZType
+C/econst/-/cmspFavorEmbeddedMask
+C/econst/-/cmspInvalidImageFile
+C/econst/-/cmspInvalidImageSpace
+C/econst/-/cmspInvalidProfileDest
+C/econst/-/cmspInvalidProfileEmbed
+C/econst/-/cmspInvalidProfileLink
+C/econst/-/cmspInvalidProfileProof
+C/econst/-/cmspInvalidProfileSource
+C/econst/-/cmSpotFunctionCross
+C/econst/-/cmSpotFunctionDefault
+C/econst/-/cmSpotFunctionDiamond
+C/econst/-/cmSpotFunctionEllipse
+C/econst/-/cmSpotFunctionLine
+C/econst/-/cmSpotFunctionRound
+C/econst/-/cmSpotFunctionSquare
+C/econst/-/cmSpotFunctionUnknown
+C/econst/-/cmSRGB16ChannelEncoding
+C/econst/-/cmSRGBData
+C/tdef/-/CMSSignedAttributes
+C/tdef/-/CMSSignerStatus
+C/econst/-/cmStdobs1931TwoDegrees
+C/econst/-/cmStdobs1964TenDegrees
+C/econst/-/cmStdobsUnknown
+C/tdef/-/CMTagElemTable
+C/tdef/-/CMTagRecord
+C/econst/-/cmTechnologyAMDisplay
+C/econst/-/cmTechnologyCRTDisplay
+C/econst/-/cmTechnologyDigitalCamera
+C/econst/-/cmTechnologyDyeSublimationPrinter
+C/econst/-/cmTechnologyElectrophotographicPrinter
+C/econst/-/cmTechnologyElectrostaticPrinter
+C/econst/-/cmTechnologyFilmScanner
+C/econst/-/cmTechnologyFilmWriter
+C/econst/-/cmTechnologyFlexography
+C/econst/-/cmTechnologyGravure
+C/econst/-/cmTechnologyInkJetPrinter
+C/econst/-/cmTechnologyOffsetLithography
+C/econst/-/cmTechnologyPhotoCD
+C/econst/-/cmTechnologyPhotographicPaperPrinter
+C/econst/-/cmTechnologyPhotoImageSetter
+C/econst/-/cmTechnologyPMDisplay
+C/econst/-/cmTechnologyProjectionTelevision
+C/econst/-/cmTechnologyReflectiveScanner
+C/econst/-/cmTechnologySilkscreen
+C/econst/-/cmTechnologyTag
+C/econst/-/cmTechnologyThermalWaxPrinter
+C/econst/-/cmTechnologyVideoCamera
+C/econst/-/cmTechnologyVideoMonitor
+C/tdef/-/CMTextDescriptionType
+C/tdef/-/CMTextType
+C/econst/-/cmTrap
+C/econst/-/cmTurnOffCache
+C/tdef/-/CMU16Fixed16ArrayType
+C/econst/-/cmUcrBgTag
+C/tdef/-/CMUcrBgType
+C/econst/-/cmUcrResponse
+C/tdef/-/CMUInt16ArrayType
+C/tdef/-/CMUInt32ArrayType
+C/tdef/-/CMUInt64ArrayType
+C/tdef/-/CMUInt8ArrayType
+C/func/-/CMUnembedImage
+C/tdef/-/CMUnembedImageProcPtr
+C/tdef/-/CMUnicodeTextType
+C/func/-/CMUnregisterColorDevice
+C/econst/-/cmUnsupportedDataType
+C/func/-/CMUpdateProfile
+C/func/-/CMUpdateProfileSearch
+C/econst/-/cmUseDefaultChromaticAdaptation
+C/func/-/CMValidateProfile
+C/func/-/CMValidImage
+C/tdef/-/CMValidImageProcPtr
+C/tdef/-/CMVideoCardGamma
+C/tdef/-/CMVideoCardGammaFormula
+C/econst/-/cmVideoCardGammaFormulaType
+C/tdef/-/CMVideoCardGammaTable
+C/econst/-/cmVideoCardGammaTableType
+C/econst/-/cmVideoCardGammaTag
+C/tdef/-/CMVideoCardGammaType
+C/econst/-/cmViewingConditionsDescTag
+C/econst/-/cmViewingConditionsTag
+C/tdef/-/CMViewingConditionsType
+C/econst/-/cmVonKriesChromaticAdaptation
+C/econst/-/cmWord565ColorPacking
+C/econst/-/cmWord5ColorPacking
+C/tdef/-/CMWorldRef
+C/econst/-/cmWriteAccess
+C/econst/-/cmWriteSpool
+C/econst/-/cmXYZ24Space
+C/econst/-/cmXYZ32Space
+C/econst/-/cmXYZ48LSpace
+C/econst/-/cmXYZ48Space
+C/tdef/-/CMXYZColor
+C/tdef/-/CMXYZComponent
+C/econst/-/cmXYZData
+C/econst/-/cmXYZSpace
+C/tdef/-/CMXYZType
+C/econst/-/cmYCbCrData
+C/econst/-/cmYellowResponse
+C/tdef/-/CMYKColor
+C/econst/-/cmYXY32Space
+C/tdef/-/CMYxyColor
+C/econst/-/cmYxyData
+C/econst/-/cmYXYSpace
+C/tdef/-/CntrlParam
+C++/instm/IOFireWireSerialBusProtocolTransport/CoalesceSenseData
+JavaScript/instp/Error/code
+Objective-C/instm/NSError/code
+JavaScript/data/DOMCoreException/code
+JavaScript/data/IDBDatabaseError/code
+JavaScript/data/IDBErrorEvent/code
+JavaScript/data/FileError/code
+JavaScript/data/IDBDatabaseException/code
+JavaScript/data/HTMLAppletElement/code
+JavaScript/data/HTMLObjectElement/code
+JavaScript/data/EventException/code
+JavaScript/data/SQLError/code
+JavaScript/data/PositionError/code
+JavaScript/data/SVGException/code
+JavaScript/data/MediaError/code
+JavaScript/data/RangeException/code
+JavaScript/data/XMLHttpRequestException/code
+JavaScript/data/XPathException/code
+JavaScript/data/HTMLObjectElement/codeBase
+JavaScript/data/HTMLAppletElement/codeBase
+C/econst/-/codecCompletionDecoded
+C/econst/-/codecCompletionDest
+C/econst/-/codecCompletionDropped
+C/econst/-/codecCompletionForceChainFlush
+C/econst/-/codecCompletionNotDisplayable
+C/econst/-/codecCompletionNotDrawn
+C/econst/-/codecCompletionSource
+C/econst/-/codecCompletionUnlockBits
+C/econst/-/codecCompletionWentOffscreen
+C/tdef/-/CodecComponent
+C/tag/-/CodecCompressParams
+C/econst/-/codecConditionCatchUpDiff
+C/econst/-/codecConditionCodecChangedMask
+C/econst/-/codecConditionDoCursor
+C/econst/-/codecConditionFirstBand
+C/econst/-/codecConditionFirstFrame
+C/econst/-/codecConditionFirstScreen
+C/econst/-/codecConditionLastBand
+C/econst/-/codecConditionMaskMayBeChanged
+C/econst/-/codecConditionNewAccuracy
+C/econst/-/codecConditionNewClut
+C/econst/-/codecConditionNewDepth
+C/econst/-/codecConditionNewDestination
+C/econst/-/codecConditionNewMatte
+C/econst/-/codecConditionNewSrcRect
+C/econst/-/codecConditionNewTransferMode
+C/econst/-/codecConditionNewTransform
+C/econst/-/codecConditionToBuffer
+C/tag/-/CodecDecompressParams
+C/econst/-/codecDrawsHigherQualityScaled
+C/econst/-/codecFlagDiffFrame
+C/econst/-/codecFlagLiveGrab
+C/econst/-/codecFlagSupportDisable
+C/econst/-/codecFlagUpdatePrevious
+C/econst/-/codecFlagUpdatePreviousComp
+C/econst/-/codecFlagUsedImageBuffer
+C/econst/-/codecFlagWasCompressed
+C/econst/-/codecImageBufferIsInAGPMemory
+C/econst/-/codecImageBufferIsInPCIMemory
+C/econst/-/codecImageBufferIsOverlaySurface
+C/econst/-/codecImageBufferMemoryFlagsValid
+C/tag/-/CodecInfo
+C/econst/-/codecInfoDepth1
+C/econst/-/codecInfoDepth16
+C/econst/-/codecInfoDepth2
+C/econst/-/codecInfoDepth24
+C/econst/-/codecInfoDepth32
+C/econst/-/codecInfoDepth33
+C/econst/-/codecInfoDepth34
+C/econst/-/codecInfoDepth36
+C/econst/-/codecInfoDepth4
+C/econst/-/codecInfoDepth40
+C/econst/-/codecInfoDepth8
+C/econst/-/codecInfoDoes1
+C/econst/-/codecInfoDoes16
+C/econst/-/codecInfoDoes2
+C/econst/-/codecInfoDoes32
+C/econst/-/codecInfoDoes4
+C/econst/-/codecInfoDoes8
+C/econst/-/codecInfoDoesBlend
+C/econst/-/codecInfoDoesDither
+C/econst/-/codecInfoDoesDouble
+C/econst/-/codecInfoDoesHalf
+C/econst/-/codecInfoDoesHorizFlip
+C/econst/-/codecInfoDoesLossless
+C/econst/-/codecInfoDoesMask
+C/econst/-/codecInfoDoesMultiPass
+C/econst/-/codecInfoDoesQuad
+C/econst/-/codecInfoDoesQuarter
+C/econst/-/codecInfoDoesRecompress
+C/econst/-/codecInfoDoesReorder
+C/econst/-/codecInfoDoesRotate
+C/econst/-/codecInfoDoesShrink
+C/econst/-/codecInfoDoesSpool
+C/econst/-/codecInfoDoesStretch
+C/econst/-/codecInfoDoesTemporal
+C/econst/-/codecInfoDoesVertFlip
+C/econst/-/codecInfoDoesWarp
+C/econst/-/codecInfoHasEffectParameterList
+C/econst/-/codecInfoResourceType
+C/econst/-/codecInfoStoresClut
+C/econst/-/codecInterfaceVersion
+C/econst/-/codecLosslessQuality
+C/econst/-/codecLowQuality
+C/func/-/CodecManagerVersion
+C/econst/-/codecMaxQuality
+C/econst/-/codecMinQuality
+C/tag/-/CodecNameSpecList
+C/tdef/-/CodecNameSpecListPtr
+C/econst/-/codecNormalQuality
+C/tdef/-/CodecQ
+C/econst/-/codecSrcMustBeImageBuffer
+C/econst/-/codecSuggestedBufferSentinel
+C/econst/-/codecSupportsOutOfOrderDisplayTimes
+C/econst/-/codecSupportsScheduledBackwardsPlaybackWithDifferenceFrames
+C/tdef/-/CodecType
+C/econst/-/codecUsesOverlaySurface
+Objective-C/instm/SBApplication/codesForPropertyNames
+JavaScript/data/HTMLObjectElement/codeType
+Objective-C/instm/NSAppleEventDescriptor/coerceToDescriptorType:
+Objective-C/instm/NSObject/coerceValue:forKey:
+Objective-C/instm/NSScriptCoercionHandler/coerceValue:toClass:
+JavaScript/instm/DOMSelection/collapse
+JavaScript/instm/Range/collapse
+JavaScript/data/Range/collapsed
+Objective-C/instm/IKImageBrowserView/collapseGroupAtIndex:
+Objective-C/instm/NSOutlineView/collapseItem:
+Objective-C/instm/NSOutlineView/collapseItem:collapseChildren:
+Objective-C/instm/NSTextTable/collapsesBorders
+JavaScript/instm/DOMSelection/collapseToEnd
+JavaScript/instm/DOMSelection/collapseToStart
+C/tdef/-/CollatorRef
+Objective-C/instm/NSGarbageCollector/collectExhaustively
+Objective-C/instm/NSGarbageCollector/collectIfNeeded
+Objective-C/instm/NSExpression/collection
+Objective-C/instm/NSWindow/collectionBehavior
+Objective-C/instm/NSFontManager/collectionNames
+Objective-C/instm/NSCollectionViewItem/collectionView
+Objective-C/intfm/NSCollectionViewDelegate/collectionView:acceptDrop:index:dropOperation:
+Objective-C/intfm/NSCollectionViewDelegate/collectionView:canDragItemsAtIndexes:withEvent:
+Objective-C/intfm/NSCollectionViewDelegate/collectionView:draggingImageForItemsAtIndexes:withEvent:offset:
+Objective-C/intfm/NSCollectionViewDelegate/collectionView:namesOfPromisedFilesDroppedAtDestination:forDraggedItemsAtIndexes:
+Objective-C/intfm/NSCollectionViewDelegate/collectionView:validateDrop:proposedIndex:dropOperation:
+Objective-C/intfm/NSCollectionViewDelegate/collectionView:writeItemsAtIndexes:toPasteboard:
+Objective-C/instm/NSColorPanel/color
+Objective-C/instm/NSColorWell/color
+Objective-C/instm/PDFAnnotation/color
+Objective-C/instm/PDFSelection/color
+Objective-C/instm/CalCalendar/color
+Objective-C/instp/CalCalendar/color
+Objective-C/instm/CAEmitterCell/color
+Objective-C/instp/CAEmitterCell/color
+Objective-C/instm/NSTabViewItem/color
+JavaScript/data/HTMLBaseFontElement/color
+JavaScript/data/HTMLFontElement/color
+JavaScript/clconst/WebGLRenderingContext/COLOR_ATTACHMENT0
+JavaScript/clconst/WebGLRenderingContext/COLOR_BUFFER_BIT
+JavaScript/clconst/WebGLRenderingContext/COLOR_CLEAR_VALUE
+C/func/-/color_content
+C/func/-/COLOR_PAIR
+C/func/-/color_set
+JavaScript/clconst/WebGLRenderingContext/COLOR_WRITEMASK
+Objective-C/instm/NSBitmapImageRep/colorAtX:y:
+JavaScript/data/Screen/colorDepth
+Objective-C/clm/NSColor/colorForControlTint:
+Objective-C/clm/NSColor/colorFromPasteboard:
+Objective-C/instm/FxImage/colorInfo
+Objective-C/instm/NSBitmapImageRep/colorizeByMappingGray:toColor:blackMapping:whiteMapping:
+Objective-C/clm/NSColorList/colorListNamed:
+JavaScript/instm/WebGLRenderingContext/colorMask
+Objective-C/instm/NSColor/colorNameComponent
+Objective-C/instm/NSColorPicker/colorPanel
+Objective-C/instm/NSGraphicsContext/colorRenderingIntent
+Objective-C/instp/CAGradientLayer/colors
+Objective-C/instm/CAGradientLayer/colors
+Objective-C/intfm/QCPlugInContext/colorSpace
+Objective-C/instm/CIColor/colorSpace
+Objective-C/instm/NSColor/colorSpace
+Objective-C/instm/NSGradient/colorSpace
+Objective-C/instm/NSScreen/colorSpace
+Objective-C/instm/NSWindow/colorSpace
+Objective-C/instm/NSBitmapImageRep/colorSpace
+Objective-C/instm/NSColorSpace/colorSpaceModel
+Objective-C/instm/NSColor/colorSpaceName
+Objective-C/instm/NSImageRep/colorSpaceName
+Objective-C/instm/NSColorSpace/colorSyncProfile
+JavaScript/data/SVGColor/colorType
+Objective-C/instm/NSColor/colorUsingColorSpace:
+Objective-C/instm/NSColor/colorUsingColorSpaceName:
+Objective-C/instm/NSColor/colorUsingColorSpaceName:device:
+Objective-C/instm/NSColor/colorWithAlphaComponent:
+Objective-C/clm/NSColor/colorWithCalibratedHue:saturation:brightness:alpha:
+Objective-C/clm/NSColor/colorWithCalibratedRed:green:blue:alpha:
+Objective-C/clm/NSColor/colorWithCalibratedWhite:alpha:
+Objective-C/clm/NSColor/colorWithCatalogName:colorName:
+Objective-C/clm/CIColor/colorWithCGColor:
+Objective-C/clm/NSColor/colorWithCIColor:
+Objective-C/clm/NSColor/colorWithColorSpace:components:count:
+Objective-C/clm/NSColor/colorWithDeviceCyan:magenta:yellow:black:alpha:
+Objective-C/clm/NSColor/colorWithDeviceHue:saturation:brightness:alpha:
+Objective-C/clm/NSColor/colorWithDeviceRed:green:blue:alpha:
+Objective-C/clm/NSColor/colorWithDeviceWhite:alpha:
+Objective-C/instm/NSColorList/colorWithKey:
+Objective-C/clm/NSColor/colorWithPatternImage:
+Objective-C/clm/CIColor/colorWithRed:green:blue:
+Objective-C/clm/CIColor/colorWithRed:green:blue:alpha:
+Objective-C/clm/CIColor/colorWithString:
+JavaScript/data/HTMLFrameSetElement/cols
+JavaScript/data/HTMLTextAreaElement/cols
+JavaScript/data/HTMLTableCellElement/colSpan
+Objective-C/instm/NSTableHeaderView/columnAtPoint:
+Objective-C/instm/NSTableView/columnAtPoint:
+Objective-C/instm/NSTableView/columnAutoresizingStyle
+Objective-C/instm/NSBrowser/columnContentWidthForColumnWidth:
+Objective-C/instm/IKImageBrowserView/columnIndexesInRect:
+Objective-C/instm/NSTableView/columnIndexesInRect:
+Objective-C/instm/NSXMLParser/columnNumber
+Objective-C/instm/NSBrowser/columnOfMatrix:
+Objective-C/instm/NSBrowser/columnResizingType
+JavaScript/data/HTMLDataGridElement/columns
+Objective-C/instm/NSBrowser/columnsAutosaveName
+Objective-C/instm/NSTableView/columnsInRect:
+Objective-C/instm/NSTextTableBlock/columnSpan
+Objective-C/instm/ABPeoplePickerView/columnTitleForProperty:
+Objective-C/instm/NSBrowser/columnWidthForColumnContentWidth:
+Objective-C/instm/NSTableView/columnWithIdentifier:
+Objective-C/intfm/NSComboBoxDataSource/comboBox:completedString:
+Objective-C/intfm/NSComboBoxDataSource/comboBox:indexOfItemWithStringValue:
+Objective-C/intfm/NSComboBoxDataSource/comboBox:objectValueForItemAtIndex:
+Objective-C/intfm/NSComboBoxCellDataSource/comboBoxCell:completedString:
+Objective-C/intfm/NSComboBoxCellDataSource/comboBoxCell:indexOfItemWithStringValue:
+Objective-C/intfm/NSComboBoxCellDataSource/comboBoxCell:objectValueForItemAtIndex:
+Objective-C/intfm/NSComboBoxDelegate/comboBoxSelectionDidChange:
+Objective-C/intfm/NSComboBoxDelegate/comboBoxSelectionIsChanging:
+Objective-C/intfm/NSComboBoxDelegate/comboBoxWillDismiss:
+Objective-C/intfm/NSComboBoxDelegate/comboBoxWillPopUp:
+C++/instm/IOService/command_received
+Objective-C/instm/NSScriptCommandDescription/commandClassName
+Objective-C/instm/NSScriptCommand/commandDescription
+Objective-C/instm/NSScriptSuiteRegistry/commandDescriptionsInSuite:
+Objective-C/instm/NSScriptSuiteRegistry/commandDescriptionWithAppleEventClass:andAppleEventCode:
+C++/clm/IOCommandGate/commandGate
+C++/data/IOAudioDevice/commandGate
+C++/data/IOAudioEngine/commandGate
+C++/data/IOAudioControl/commandGate
+Objective-C/instm/NSScriptCommandDescription/commandName
+C++/instm/IOFireWireSerialBusProtocolTransport/CommandORBAccessor
+C++/clm/IOCommandPool/commandPool
+Objective-C/instm/NSSpeechRecognizer/commands
+C++/instm/IOCommandGate/commandSleep
+C++/instm/IOCommandGate/commandWakeup
+Objective-C/instm/NSHTTPCookie/comment
+JavaScript/cl/-/Comment
+JavaScript/data/DOMWindow/Comment
+JavaScript/clconst/core/COMMENT_NODE
+C/tdef/-/commentSAXFunc
+Objective-C/instm/NSHTTPCookie/commentURL
+Objective-C/clm/NSXMLNode/commentWithStringValue:
+Objective-C/clm/CATransaction/commit
+C++/instm/IOAGPDevice/commitAGPMemory
+Objective-C/instm/NSObject/commitComposition:
+Objective-C/instm/CWInterface/commitConfiguration:error:
+Objective-C/instm/NSController/commitEditing
+Objective-C/instm/NSViewController/commitEditing
+Objective-C/instm/NSObject/commitEditing
+Objective-C/instm/NSController/commitEditingWithDelegate:didCommitSelector:contextInfo:
+Objective-C/instm/NSViewController/commitEditingWithDelegate:didCommitSelector:contextInfo:
+Objective-C/instm/NSObject/commitEditingWithDelegate:didCommitSelector:contextInfo:
+Objective-C/instm/NSManagedObject/committedValuesForKeys:
+JavaScript/data/Range/commonAncestorContainer
+C/func/-/CommonCrypto
+Objective-C/clm/NSLocale/commonISOCurrencyCodes
+C/tag/-/Commonly
+Objective-C/instm/CalAttendee/commonName
+Objective-C/instp/CalAttendee/commonName
+Objective-C/instm/NSString/commonPrefixWithString:options:
+Objective-C/instm/NSPointerArray/compact
+JavaScript/data/HTMLUListElement/compact
+JavaScript/data/HTMLDirectoryElement/compact
+JavaScript/data/HTMLOListElement/compact
+JavaScript/data/HTMLMenuElement/compact
+JavaScript/data/HTMLDListElement/compact
+C/func/-/CompAdd
+Objective-C/instm/NSSortDescriptor/comparator
+Objective-C/instm/PDFDestination/compare:
+Objective-C/instm/NSDecimalNumber/compare:
+Objective-C/instm/NSNumber/compare:
+Objective-C/instm/NSIndexPath/compare:
+Objective-C/instm/NSString/compare:
+Objective-C/instm/NSCell/compare:
+Objective-C/instm/NSDate/compare:
+Objective-C/instm/NSString/compare:options:
+Objective-C/instm/NSString/compare:options:range:
+Objective-C/instm/NSString/compare:options:range:locale:
+JavaScript/instm/Range/compareBoundaryPoints
+JavaScript/instm/core/compareDocumentPosition
+C++/instm/IORegistryEntry/compareName
+C++/instm/IORegistryEntry/compareNames
+JavaScript/instm/Range/compareNode
+Objective-C/instm/NSSortDescriptor/compareObject:toObject:
+JavaScript/instm/Range/comparePoint
+C++/instm/IOService/compareProperties
+C++/instm/IOService/compareProperty
+Objective-C/instm/NSComparisonPredicate/comparisonPredicateModifier
+JavaScript/data/HTMLDocument/compatMode
+C/func/-/CompCompare
+C/func/-/CompDiv
+C/func/-/CompFixMul
+JavaScript/clconst/WebGLRenderingContext/COMPILE_STATUS
+Objective-C/instm/NSAppleScript/compileAndReturnError:
+JavaScript/instm/WebGLRenderingContext/compileShader
+C++/instm/IODMACommand/complete
+C++/instm/IOMultiMemoryDescriptor/complete
+C++/instm/IOMemoryDescriptor/complete
+C++/instm/IOInterleavedMemoryDescriptor/complete
+C++/instm/IOFWPhysicalAddressSpace/complete
+C++/clm/IOStorage/complete
+JavaScript/data/HTMLImageElement/complete
+Objective-C/instm/NSTextView/complete:
+Objective-C/instm/NSResponder/complete:
+Objective-C/instp/CalTask/completedDate
+Objective-C/instm/CalTask/completedDate
+Objective-C/instm/NSComboBoxCell/completedString:
+Objective-C/instm/XGJob/completedTaskCount
+C++/instm/IOSCSIParallelInterfaceController/CompleteParallelTask
+Objective-C/instm/NSString/completePathIntoString:caseSensitive:matchesIntoArray:filterTypes:
+C++/instm/IOAudioDevice/completePowerStateChange
+C++/clm/IOAudioDevice/completePowerStateChangeAction
+Objective-C/instm/NSComboBox/completes
+Objective-C/instm/NSComboBoxCell/completes
+C++/instm/IOFireWireSerialBusProtocolTransport/CompleteSCSITask
+Objective-C/instm/DRBurn(PropertyConvenienceMethods)/completionAction
+C++/tdef/IOHIDInterface/CompletionAction
+Objective-C/instm/DRBurnSetupPanel/completionAction:
+Objective-C/instm/NSOperation/completionBlock
+Objective-C/clm/CATransaction/completionBlock
+Objective-C/instm/NSTokenFieldCell/completionDelay
+Objective-C/instm/NSTokenField/completionDelay
+Objective-C/instm/NSTextView/completionsForPartialWordRange:indexOfSelectedItem:
+Objective-C/instm/NSSpellChecker/completionsForPartialWordRange:inString:language:inSpellDocumentWithTag:
+C/func/-/complex
+C/func/-/CompMul
+C/func/-/CompMulDiv
+C/func/-/CompMulDivTrunc
+C/func/-/CompNeg
+C/tdef/-/ComponentAliasResource
+C/econst/-/componentAutoVersionIncludeFlags
+C/tag/-/ComponentDependencyArray
+C/tdef/-/ComponentDescription
+C/econst/-/componentDllEntryNotFoundErr
+C/econst/-/componentDllLoadErr
+C/econst/-/componentDoAutoVersion
+C/econst/-/componentDontRegister
+C/func/-/ComponentFunctionImplemented
+C/tdef/-/ComponentFunctionUPP
+C/econst/-/componentHasMultiplePlatforms
+C/tdef/-/ComponentInstance
+C/tdef/-/ComponentInstanceRecord
+C/tag/-/ComponentInstanceRecord
+C/econst/-/componentLoadResident
+C/tdef/-/ComponentMPWorkFunctionHeaderRecord
+C/tdef/-/ComponentMPWorkFunctionProc
+C/tdef/-/ComponentMPWorkFunctionProcPtr
+C/tdef/-/ComponentMPWorkFunctionUPP
+C/econst/-/componentNotCaptured
+C/tdef/-/ComponentParameters
+C/tdef/-/ComponentPlatformInfo
+C/tdef/-/ComponentPlatformInfoArray
+C/tdef/-/ComponentRecord
+C/tdef/-/ComponentResource
+C/tdef/-/ComponentResourceExtension
+C/tdef/-/ComponentResult
+C/tdef/-/ComponentRoutineProcPtr
+C/tdef/-/ComponentRoutineUPP
+Objective-C/instm/CIColor/components
+Objective-C/instm/NSPortMessage/components
+Objective-C/instm/NSCalendar/components:fromDate:
+Objective-C/instm/NSCalendar/components:fromDate:toDate:options:
+C/func/-/ComponentSetTarget
+Objective-C/clm/NSLocale/componentsFromLocaleIdentifier:
+Objective-C/instm/NSArray/componentsJoinedByString:
+Objective-C/instm/NSString/componentsSeparatedByCharactersInSet:
+Objective-C/instm/NSString/componentsSeparatedByString:
+Objective-C/instm/NSFileManager/componentsToDisplayForPath:
+C/econst/-/componentWantsUnregister
+Objective-C/instm/NSObject/composedString:
+Objective-C/instm/NSImage/compositeToPoint:fromRect:operation:
+Objective-C/instm/NSImage/compositeToPoint:fromRect:operation:fraction:
+Objective-C/instm/NSImage/compositeToPoint:operation:
+Objective-C/instm/NSImage/compositeToPoint:operation:fraction:
+Objective-C/instm/NSView/compositingFilter
+Objective-C/instp/CALayer/compositingFilter
+Objective-C/instm/CALayer/compositingFilter
+Objective-C/instm/NSGraphicsContext/compositingOperation
+Objective-C/instm/QCRenderer/composition
+Objective-C/instm/QCCompositionLayer/composition
+Objective-C/instm/QCCompositionPickerView/compositionAspectRatio
+Objective-C/instm/IMKInputController/compositionAttributesAtRange:
+JavaScript/cl/-/CompositionEvent
+Objective-C/clm/QCCompositionLayer/compositionLayerWithComposition:
+Objective-C/clm/QCCompositionLayer/compositionLayerWithFile:
+Objective-C/instm/NSObject/compositionParameterView:shouldDisplayParameterWithKey:attributes:
+Objective-C/instm/QCCompositionPickerPanel/compositionPickerView
+Objective-C/instm/NSObject/compositionPickerView:didSelectComposition:
+Objective-C/instm/NSObject/compositionPickerViewDidStartAnimating:
+Objective-C/instm/NSObject/compositionPickerViewWillStopAnimating:
+Objective-C/instm/QCCompositionParameterView/compositionRenderer
+Objective-C/instm/QCCompositionPickerView/compositions
+Objective-C/instm/QCCompositionRepository/compositionsWithProtocols:andAttributes:
+Objective-C/clm/QCComposition/compositionWithData:
+Objective-C/clm/QCComposition/compositionWithFile:
+Objective-C/instm/QCCompositionRepository/compositionWithIdentifier:
+Objective-C/instm/NSCompoundPredicate/compoundPredicateType
+Objective-C/instm/NSPredicateEditorRowTemplate/compoundTypes
+JavaScript/clconst/WebGLRenderingContext/COMPRESSED_TEXTURE_FORMATS
+C/func/-/CompressImage
+Objective-C/instm/QTCaptureFileOutput/compressionOptionsForConnection:
+Objective-C/clm/QTCompressionOptions/compressionOptionsIdentifiersForMediaType:
+Objective-C/clm/QTCompressionOptions/compressionOptionsWithIdentifier:
+C/tdef/-/CompressorComponent
+C/func/-/CompressPicture
+C/func/-/CompressPictureFile
+C/func/-/CompressSequenceBegin
+C/func/-/CompressSequenceFrame
+C/func/-/CompShift
+C/func/-/CompSquareRoot
+C/func/-/CompSub
+Objective-C/instm/WebView/computedStyleForElement:pseudoElement:
+Objective-C/instm/NSAffineTransform/concat
+C/func/-/ConcatMatrix
+Objective-C/instm/NSObject/concludeDragOperation:
+C++/cl/-/ConcreteTestInvocation
+Objective-C/instm/NSConditionLock/condition
+C/func/-/CONF_modules_finish
+C/func/-/CONF_modules_free
+C/func/-/CONF_modules_load
+C/func/-/CONF_modules_load_file
+C/func/-/CONF_modules_unload
+C/func/-/config_perror
+C/func/-/config_pwarn
+C++/instm/IOPCIDevice/configRead16
+C++/instm/IOPCIDevice/configRead32
+C++/instm/IOPCIDevice/configRead8
+Objective-C/clm/CWConfiguration/configuration
+Objective-C/instp/CWInterface/configuration
+C++/data/IOAudioEngine/configurationChangeInProgress
+Objective-C/instm/NSToolbar/configurationDictionary
+Objective-C/instm/NSPersistentStore/configurationName
+Objective-C/instm/NSManagedObjectModel/configurations
+Objective-C/instm/NSRunLoop/configureAsServer
+C++/instm/IOUSBControllerV2/ConfigureDeviceZero
+C++/instm/IONetworkController/configureInterface
+Objective-C/instm/NSPersistentDocument/configurePersistentStoreCoordinatorForURL:ofType:error:
+Objective-C/instm/NSPersistentDocument/configurePersistentStoreCoordinatorForURL:ofType:modelConfiguration:storeOptions:error:
+Objective-C/instm/ScreenSaverView/configureSheet
+C++/instm/IOPCIDevice/configWrite16
+C++/instm/IOPCIDevice/configWrite32
+C++/instm/IOPCIDevice/configWrite8
+Objective-C/intfm/NSMenuDelegate/confinementRectForMenu:onScreen:
+JavaScript/instm/DOMWindow/confirm
+Objective-C/intfm/NSObject/conformsToProtocol:
+Objective-C/clm/NSObject/conformsToProtocol:
+C/func/-/confstr
+C/func/-/conj
+C/func/-/conjf
+C/func/-/conjl
+C/func/-/connect
+Objective-C/instm/IBDocument/connectAction:ofSourceObject:toDestinationObject:
+Objective-C/instm/IBDocument/connectBinding:ofSourceObject:toDestinationObject:keyPath:options:
+C++/instm/IOFramebuffer/connectFlags
+JavaScript/clconst/EventSource/CONNECTING
+JavaScript/clconst/WebSocket/CONNECTING
+Objective-C/instm/NSDistantObjectRequest/connection
+Objective-C/instm/NSPortCoder/connection
+Objective-C/instm/XGResource/connection
+Objective-C/instm/NSObject/connection:canAuthenticateAgainstProtectionSpace:
+Objective-C/instm/NSObject/connection:didCancelAuthenticationChallenge:
+Objective-C/instm/NSObject/connection:didFailWithError:
+Objective-C/instm/NSObject/connection:didReceiveAuthenticationChallenge:
+Objective-C/instm/NSObject/connection:didReceiveData:
+Objective-C/instm/NSObject/connection:didReceiveResponse:
+Objective-C/instm/NSObject/connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:
+Objective-C/intfm/NSConnectionDelegate/connection:handleRequest:
+Objective-C/intfm/NSConnectionDelegate/connection:shouldMakeNewConnection:
+Objective-C/instm/NSObject/connection:willCacheResponse:
+Objective-C/instm/NSObject/connection:willSendRequest:redirectResponse:
+Objective-C/instm/QTCaptureConnection/connectionAttributes
+Objective-C/instm/NSObject(XGConnectionDelegate)/connectionDidClose:
+Objective-C/instm/NSObject/connectionDidFinishLoading:
+Objective-C/instm/NSObject(XGConnectionDelegate)/connectionDidNotOpen:withError:
+Objective-C/instm/NSObject(XGConnectionDelegate)/connectionDidOpen:
+Objective-C/instm/NSDistantObject/connectionForProxy
+C/func/-/ConnectionNumber
+Objective-C/instm/QTCaptureOutput/connections
+Objective-C/instm/QTCaptureInput/connections
+Objective-C/instm/NSObject/connectionShouldUseCredentialStorage:
+Objective-C/clm/NSConnection/connectionWithReceivePort:sendPort:
+Objective-C/clm/NSConnection/connectionWithRegisteredName:host:
+Objective-C/clm/NSConnection/connectionWithRegisteredName:host:usingNameServer:
+Objective-C/clm/NSURLConnection/connectionWithRequest:delegate:
+Objective-C/instm/CIFilterGenerator/connectObject:withKey:toObject:withKey:
+Objective-C/instm/IBDocument/connectOutlet:ofSourceObject:toDestinationObject:
+C++/clm/OSMetaClass/considerUnloads
+JavaScript/data/DOMWindow/console
+JavaScript/cl/-/Console
+JavaScript/instm/SVGTransformList/consolidate
+C/func/-/const_pointer_cast
+C/data/-/Constant
+JavaScript/clconst/WebGLRenderingContext/CONSTANT_ALPHA
+JavaScript/clconst/WebGLRenderingContext/CONSTANT_COLOR
+Objective-C/instm/NSExpression/constantValue
+C/tdef/-/ConstCStrList
+C/tdef/-/ConstFSEventStreamRef
+C/tdef/-/ConstFSSpecPtr
+C/tdef/-/ConstHFSUniStr255Param
+C/tdef/-/ConstPMRectList
+C++/instm/IOBlockStorageDriver/constrainByteCount
+Objective-C/instm/NSWindow/constrainFrameRect:toScreen:
+Objective-C/instm/NSClipView/constrainScrollPoint:
+Objective-C/instm/IKImageBrowserView/constrainsToOriginalSize
+JavaScript/clconst/IDBDatabaseException/CONSTRAINT_ERR
+Objective-C/instm/CALayer/constraints
+Objective-C/instp/CALayer/constraints
+Objective-C/clm/CAConstraint/constraintWithAttribute:relativeTo:attribute:
+Objective-C/clm/CAConstraint/constraintWithAttribute:relativeTo:attribute:offset:
+Objective-C/clm/CAConstraint/constraintWithAttribute:relativeTo:attribute:scale:offset:
+C/tdef/-/ConstScriptCodeRunPtr
+C/tdef/-/ConstSInt32List
+C/tdef/-/ConstStr255Param
+C/tdef/-/ConstStrFileNameParam
+C/tdef/-/ConstTextEncodingRunPtr
+C/tdef/-/ConstTextPtr
+C/tdef/-/ConstTextToUnicodeInfo
+C/tdef/-/ConstUniCharArrayPtr
+C/tdef/-/ConstUnicodeMappingPtr
+C/tdef/-/ConstUnicodeToTextInfo
+Objective-C/intfm/ABImageClient/consumeImageData:forTag:
+C++/data/IOInterruptEventSource/consumerCount
+C/data/-/container
+Objective-C/instm/NSScriptObjectSpecifier/containerClassDescription
+Objective-C/instm/NSScriptObjectSpecifier/containerIsObjectBeingTested
+Objective-C/instm/NSScriptObjectSpecifier/containerIsRangeContainerObject
+Objective-C/instm/NSTextContainer/containerSize
+Objective-C/instm/NSScriptObjectSpecifier/containerSpecifier
+C++/instm/IOFWPseudoAddressSpace/contains
+C++/instm/IOFWAddressSpace/contains
+JavaScript/instm/Element/contains
+Objective-C/instm/NSAttributedString/containsAttachments
+Objective-C/instm/IOBluetoothSDPDataElement/containsDataElement:
+Objective-C/instm/NSIndexSet/containsIndex:
+Objective-C/instm/NSIndexSet/containsIndexes:
+Objective-C/instm/NSIndexSet/containsIndexesInRange:
+Objective-C/instm/WebBackForwardList/containsItem:
+JavaScript/instm/DOMSelection/containsNode
+C++/instm/OSOrderedSet/containsObject
+C++/instm/OSSet/containsObject
+Objective-C/instm/NSHashTable/containsObject:
+Objective-C/instm/NSSet/containsObject:
+Objective-C/instm/NSArray/containsObject:
+Objective-C/instm/NSTextContainer/containsPoint:
+Objective-C/instm/NSBezierPath/containsPoint:
+Objective-C/instm/CALayer/containsPoint:
+Objective-C/instm/FxImage/containsPointX:Y:
+Objective-C/instm/IOBluetoothSDPDataElement/containsValue:
+Objective-C/instm/NSCoder/containsValueForKey:
+Objective-C/instm/NSKeyedUnarchiver/containsValueForKey:
+Objective-C/instm/NSTreeController/content
+Objective-C/instm/NSObjectController/content
+Objective-C/instp/PSEntry/content
+Objective-C/instm/NSCollectionView/content
+Objective-C/binding/AMPathPopUpButton/content
+Objective-C/binding/NSMatrix/content
+Objective-C/binding/NSComboBox/content
+Objective-C/binding/NSCollectionView/content
+Objective-C/binding/NSComboBoxCell/content
+Objective-C/binding/NSBrowser/content
+Objective-C/binding/NSOutlineView/content
+Objective-C/binding/NSTableView/content
+Objective-C/binding/NSPopUpButtonCell/content
+Objective-C/binding/NSPopUpButton/content
+JavaScript/data/HTMLMetaElement/content
+Objective-C/binding/NSArrayController/contentArray
+Objective-C/binding/NSTreeController/contentArray
+Objective-C/binding/NSArrayController/contentArrayForMultipleSelection
+Objective-C/binding/NSTreeController/contentArrayForMultipleSelection
+Objective-C/instm/NSWindow/contentAspectRatio
+Objective-C/instm/NSWindow/contentBorderThicknessForEdge:
+Objective-C/binding/NSDictionaryController/contentDictionary
+JavaScript/data/HTMLFrameElement/contentDocument
+JavaScript/data/HTMLIFrameElement/contentDocument
+JavaScript/data/HTMLObjectElement/contentDocument
+JavaScript/data/HTMLElement/contentEditable
+Objective-C/instm/NSView/contentFilters
+Objective-C/instm/DOMHTMLObjectElement/contentFrame
+Objective-C/instm/DOMHTMLIFrameElement/contentFrame
+Objective-C/instm/DOMHTMLFrameElement/contentFrame
+Objective-C/binding/NSWindow/contentHeight
+Objective-C/binding/NSPanel/contentHeight
+Objective-C/instm/NSWindow/contentMaxSize
+Objective-C/instm/NSWindow/contentMinSize
+Objective-C/binding/NSArrayController/contentObject
+Objective-C/binding/NSObjectController/contentObject
+Objective-C/binding/NSTreeController/contentObject
+Objective-C/binding/AMPathPopUpButton/contentObjects
+Objective-C/binding/NSMatrix/contentObjects
+Objective-C/binding/NSPopUpButtonCell/contentObjects
+Objective-C/binding/NSPopUpButton/contentObjects
+Objective-C/instm/NSTabView/contentRect
+Objective-C/instm/NSWindow/contentRectForFrameRect:
+Objective-C/clm/NSWindow/contentRectForFrameRect:styleMask:
+Objective-C/instm/NSWindow/contentResizeIncrements
+Objective-C/instm/IKImageBrowserView/contentResizingMask
+Objective-C/instm/PDFAnnotation/contents
+Objective-C/instp/CAEmitterCell/contents
+Objective-C/instm/CAEmitterCell/contents
+Objective-C/instm/CALayer/contents
+Objective-C/instp/CALayer/contents
+Objective-C/instm/CALayer/contentsAreFlipped
+Objective-C/instm/NSFileManager/contentsAtPath:
+Objective-C/instm/CALayer/contentsCenter
+Objective-C/instp/CALayer/contentsCenter
+JavaScript/data/SVGSVGElement/contentScriptType
+Objective-C/instm/NSFileManager/contentsEqualAtPath:andPath:
+Objective-C/binding/NSArrayController/contentSet
+Objective-C/binding/NSTreeController/contentSet
+Objective-C/instm/CALayer/contentsGravity
+Objective-C/instp/CALayer/contentsGravity
+Objective-C/instm/NSScrollView/contentSize
+Objective-C/instm/NSDrawer/contentSize
+Objective-C/clm/NSScrollView/contentSizeForFrameSize:hasHorizontalScroller:hasVerticalScroller:borderType:
+Objective-C/instm/NSFileManager/contentsOfDirectoryAtPath:error:
+Objective-C/instm/NSFileManager/contentsOfDirectoryAtURL:includingPropertiesForKeys:options:error:
+Objective-C/instm/CAEmitterCell/contentsRect
+Objective-C/instp/CAEmitterCell/contentsRect
+Objective-C/instm/CALayer/contentsRect
+Objective-C/instp/CALayer/contentsRect
+JavaScript/data/SVGSVGElement/contentStyleType
+Objective-C/binding/NSBrowser/contentValues
+Objective-C/binding/NSMatrix/contentValues
+Objective-C/binding/NSComboBoxCell/contentValues
+Objective-C/binding/AMPathPopUpButton/contentValues
+Objective-C/binding/NSComboBox/contentValues
+Objective-C/binding/NSPopUpButton/contentValues
+Objective-C/binding/NSPopUpButtonCell/contentValues
+Objective-C/instm/NSScrollView/contentView
+Objective-C/instm/NSBox/contentView
+Objective-C/instm/NSDrawer/contentView
+Objective-C/instm/NSDockTile/contentView
+Objective-C/instm/NSWindow/contentView
+Objective-C/instm/NSBox/contentViewMargins
+Objective-C/instm/NSTextBlock/contentWidth
+Objective-C/binding/NSWindow/contentWidth
+Objective-C/binding/NSPanel/contentWidth
+Objective-C/instm/NSTextBlock/contentWidthValueType
+JavaScript/data/HTMLFrameElement/contentWindow
+JavaScript/data/HTMLIFrameElement/contentWindow
+Objective-C/instm/NSPrintOperation/context
+Objective-C/instm/NSEvent/context
+Objective-C/instm/NSApplication/context
+Objective-C/instm/NSFetchRequestExpression/contextExpression
+Objective-C/instm/NSBundle/contextHelpForKey:
+Objective-C/instm/NSHelpManager/contextHelpForObject:
+Objective-C/instm/NSMenu/contextMenuRepresentation
+Objective-C/clm/NSManagedObject/contextShouldIgnoreUnmodeledPropertyChanges
+Objective-C/clm/NSCursor/contextualMenuCursor
+Objective-C/clm/CIContext/contextWithCGContext:options:
+Objective-C/clm/CIContext/contextWithCGLContext:pixelFormat:options:
+Objective-C/instm/NSSpeechSynthesizer/continueSpeaking
+C/func/-/ContinueSpeech
+Objective-C/instm/NSCell/continueTracking:at:inView:
+Objective-C/intfm/NSURLAuthenticationChallengeSender/continueWithoutCredentialForAuthenticationChallenge:
+Objective-C/instp/PSEntry/contributors
+JavaScript/data/HTMLLabelElement/control
+Objective-C/intfm/NSControlTextEditingDelegate/control:didFailToFormatString:errorDescription:
+Objective-C/intfm/NSControlTextEditingDelegate/control:didFailToValidatePartialString:errorDescription:
+Objective-C/intfm/NSControlTextEditingDelegate/control:isValidObject:
+Objective-C/intfm/NSControlTextEditingDelegate/control:textShouldBeginEditing:
+Objective-C/intfm/NSControlTextEditingDelegate/control:textShouldEndEditing:
+Objective-C/intfm/NSControlTextEditingDelegate/control:textView:completions:forPartialWordRange:indexOfSelectedItem:
+Objective-C/intfm/NSControlTextEditingDelegate/control:textView:doCommandBySelector:
+Objective-C/clm/NSColor/controlAlternatingRowBackgroundColors
+Objective-C/clm/NSColor/controlBackgroundColor
+Objective-C/instm/IMAVManager/controlBar
+Objective-C/clm/NSCharacterSet/controlCharacterSet
+Objective-C/clm/NSColor/controlColor
+Objective-C/clm/NSFont/controlContentFontOfSize:
+Objective-C/clm/NSColor/controlDarkShadowColor
+C++/data/IOWorkLoop/controlG
+Objective-C/clm/NSColor/controlHighlightColor
+C++/data/IOAudioControl/controlID
+Objective-C/instm/XGResource/controller
+Objective-C/instm/QTMovieView/controllerBarHeight
+Objective-C/instm/NSObject(IOBluetoothHostControllerDelegate)/controllerClassOfDeviceReverted:
+C++/instm/IONetworkInterface/controllerDidChangePowerState
+C++/instm/IOEthernetInterface/controllerDidChangePowerState
+C++/instm/IOEthernetInterface/controllerDidOpen
+C++/instm/IONetworkInterface/controllerDidOpen
+Objective-C/binding/QTMovieView/controllerVisible
+C++/instm/IONetworkInterface/controllerWillChangePowerState
+C++/instm/IOEthernetInterface/controllerWillChangePowerState
+C++/instm/IONetworkInterface/controllerWillClose
+C++/instm/IOEthernetInterface/controllerWillClose
+Objective-C/clm/XGController(XGControllerCreation)/controllerWithHostname:portnumber:
+Objective-C/clm/XGController(XGControllerCreation)/controllerWithNetService:
+Objective-C/clm/NSColor/controlLightHighlightColor
+Objective-C/instm/NSBezierPath/controlPointBounds
+C++/instm/IOUSBPipe/ControlRequest
+Objective-C/instm/IMAVControlBar/controls
+JavaScript/data/HTMLMediaElement/controls
+Objective-C/clm/NSColor/controlShadowColor
+Objective-C/instm/NSScroller/controlSize
+Objective-C/instm/NSProgressIndicator/controlSize
+Objective-C/instm/NSTabView/controlSize
+Objective-C/instm/NSCell/controlSize
+Objective-C/clm/NSColor/controlTextColor
+Objective-C/instm/NSObject/controlTextDidBeginEditing:
+Objective-C/instm/NSObject/controlTextDidChange:
+Objective-C/instm/NSObject/controlTextDidEndEditing:
+Objective-C/instm/NSScroller/controlTint
+Objective-C/instm/NSProgressIndicator/controlTint
+Objective-C/instm/NSTabView/controlTint
+Objective-C/instm/NSCell/controlTint
+Objective-C/instm/PDFAnnotationButtonWidget/controlType
+Objective-C/instm/NSActionCell/controlView
+Objective-C/instm/NSCell/controlView
+C/func/-/conv
+C/func/-/convD
+Objective-C/instm/NSDistantObjectRequest/conversation
+Objective-C/intfm/NSTextInput/conversationIdentifier
+Objective-C/instm/NSFontManager/convertAttributes:
+Objective-C/instm/NSWindow/convertBaseToScreen:
+C++/instm/IOFramebuffer/convertCursorImage
+C/func/-/ConvertDataRefToMovieDataRef
+C/func/-/ConvertFileToMovieFile
+Objective-C/instm/NSFontManager/convertFont:
+Objective-C/instm/NSFontManager/convertFont:toFace:
+Objective-C/instm/NSFontManager/convertFont:toFamily:
+Objective-C/instm/NSFontManager/convertFont:toHaveTrait:
+Objective-C/instm/NSFontManager/convertFont:toNotHaveTrait:
+Objective-C/instm/NSFontManager/convertFont:toSize:
+Objective-C/instm/NSFontManager/convertFontTraits:
+C/func/-/ConvertFromPStringToUnicode
+C/func/-/ConvertFromTextToUnicode
+C/func/-/ConvertFromUnicodeToPString
+C/func/-/ConvertFromUnicodeToScriptCodeRun
+C/func/-/ConvertFromUnicodeToText
+C/func/-/ConvertFromUnicodeToTextRun
+C/func/-/ConvertImage
+Objective-C/instm/IKImageView/convertImagePointToViewPoint:
+Objective-C/instm/IKImageView/convertImageRectToViewRect:
+C++/instm/IOAudioEngine/convertInputSamplesVBR
+C/func/-/ConvertMovieToDataRef
+C/func/-/ConvertMovieToFile
+Objective-C/instm/CALayer/convertPoint:fromLayer:
+Objective-C/instm/PDFView/convertPoint:fromPage:
+Objective-C/instm/NSView/convertPoint:fromView:
+Objective-C/instm/CALayer/convertPoint:toLayer:
+Objective-C/instm/PDFView/convertPoint:toPage:
+Objective-C/instm/NSView/convertPoint:toView:
+Objective-C/instm/NSView/convertPointFromBase:
+Objective-C/intfm/FxOnScreenControlAPI/convertPointFromSpace:fromX:fromY:toSpace:toX:toY:
+Objective-C/instm/NSView/convertPointToBase:
+Objective-C/instm/CALayer/convertRect:fromLayer:
+Objective-C/instm/PDFView/convertRect:fromPage:
+Objective-C/instm/NSView/convertRect:fromView:
+Objective-C/instm/CALayer/convertRect:toLayer:
+Objective-C/instm/PDFView/convertRect:toPage:
+Objective-C/instm/NSView/convertRect:toView:
+Objective-C/instm/NSView/convertRectFromBase:
+Objective-C/instm/NSView/convertRectToBase:
+Objective-C/instm/NSWindow/convertScreenToBase:
+Objective-C/instm/NSView/convertSize:fromView:
+Objective-C/instm/NSView/convertSize:toView:
+Objective-C/instm/NSView/convertSizeFromBase:
+Objective-C/instm/NSView/convertSizeToBase:
+Objective-C/instm/CALayer/convertTime:fromLayer:
+Objective-C/instm/CALayer/convertTime:toLayer:
+JavaScript/instm/SVGAngle/convertToSpecifiedUnits
+JavaScript/instm/SVGLength/convertToSpecifiedUnits
+Objective-C/instm/IKImageView/convertViewPointToImagePoint:
+Objective-C/instm/IKImageView/convertViewRectToImageRect:
+Objective-C/instm/NSFontManager/convertWeight:ofFont:
+Objective-C/instm/NSHTTPCookieStorage/cookieAcceptPolicy
+JavaScript/data/Navigator/cookieEnabled
+Objective-C/instm/NSHTTPCookieStorage/cookies
+Objective-C/instm/NSHTTPCookieStorage/cookiesForURL:
+Objective-C/clm/NSHTTPCookie/cookiesWithResponseHeaderFields:forURL:
+Objective-C/clm/NSHTTPCookie/cookieWithProperties:
+Objective-C/instp/CLLocation/coordinate
+Objective-C/instm/CLLocation/coordinate
+JavaScript/cl/-/Coordinates
+JavaScript/data/HTMLAreaElement/coords
+JavaScript/data/HTMLAnchorElement/coords
+Objective-C/instm/NSClipView/copiesOnScroll
+Objective-C/instm/NSObject/copy
+Objective-C/instm/NSEntityDescription/copy
+Objective-C/instm/PDFView/copy:
+Objective-C/instm/QTMovieView/copy:
+Objective-C/instm/WebView/copy:
+Objective-C/instm/NSText/copy:
+Objective-C/instm/NSOpenGLContext/copyAttributesFromContext:withMask:
+Objective-C/instm/CAOpenGLLayer/copyCGLContextForPixelFormat:
+Objective-C/instm/CAOpenGLLayer/copyCGLPixelFormatForDisplayMask:
+C++/instm/IORegistryEntry/copyChildEntry
+C++/instm/IOService/copyClientWithCategory
+C++/instm/OSDictionary/copyCollection
+C++/instm/OSCollection/copyCollection
+C++/instm/OSArray/copyCollection
+C++/instm/OSOrderedSet/copyCollection
+C++/instm/OSSet/copyCollection
+C/func/-/CopyDataBrowserEditText
+C/func/-/copyfile
+C/func/-/copyfile_state_alloc
+C/func/-/copyfile_state_free
+C/func/-/copyfile_state_get
+C/func/-/copyfile_state_set
+Objective-C/instm/WebView/copyFont:
+Objective-C/instm/NSText/copyFont:
+Objective-C/instm/NSFileManager/copyItemAtPath:toPath:error:
+Objective-C/instm/NSFileManager/copyItemAtURL:toURL:error:
+C++/instm/IORegistryEntry/copyLocation
+C/func/-/CopyMatrix
+C/func/-/CopyMediaMutableSampleTable
+C++/instm/IONetworkController/copyMediumDictionary
+C/func/-/CopyMovieSelection
+C/func/-/CopyMovieSettings
+C++/instm/IORegistryEntry/copyName
+C/func/-/CopyNameFromSoundBank
+JavaScript/instm/InspectorBackend/copyNode
+C++/instm/IONetworkController/copyPacket
+C/tdef/-/CopyParam
+C++/instm/IORegistryEntry/copyParentEntry
+Objective-C/instm/NSFileManager/copyPath:toPath:handler:
+C/func/-/CopyPhonemesFromText
+C/func/-/copyPMSetting
+C/func/-/CopyProcessName
+C++/instm/IORegistryEntry/copyProperty
+Objective-C/intfm/QCPlugInOutputImageProvider/copyRenderedTextureForCGLContext:pixelFormat:bounds:isFlipped:
+Objective-C/instm/NSText/copyRuler:
+Objective-C/instm/NSObject/copyScriptingValue:forKey:withProperties:
+C/func/-/copysign
+C/func/-/copysignf
+C/func/-/copysignl
+C/func/-/CopySpeechProperty
+JavaScript/instm/WebGLRenderingContext/copyTexImage2D
+JavaScript/instm/WebGLRenderingContext/copyTexSubImage2D
+JavaScript/instm/InjectedScriptHost/copyText
+JavaScript/instm/InspectorFrontendHost/copyText
+C/func/-/CopyTrackSettings
+C/func/-/copywin
+Objective-C/intfm/NSCopying/copyWithZone:
+Objective-C/clm/NSObject/copyWithZone:
+C/func/-/CoreEndianFlipData
+C/tdef/-/CoreEndianFlipProc
+C/func/-/CoreEndianGetFlipper
+C/func/-/CoreEndianInstallFlipper
+Objective-C/instm/NSBox/cornerRadius
+Objective-C/instp/CALayer/cornerRadius
+Objective-C/instm/CALayer/cornerRadius
+Objective-C/instm/NSTableView/cornerView
+Objective-C/clm/NSTextCheckingResult/correctionCheckingResultWithRange:replacementString:
+JavaScript/data/svg/correspondingElement
+JavaScript/data/svg/correspondingUseElement
+C/func/-/cos
+C/func/-/cosf
+C/func/-/cosh
+C/func/-/coshf
+C/func/-/coshl
+C/func/-/cosl
+Objective-C/instm/NSHashTable/count
+Objective-C/instm/CIVector/count
+Objective-C/instm/NSMetadataQueryAttributeValueTuple/count
+Objective-C/instm/NSPointerArray/count
+Objective-C/instm/ABMultiValue/count
+Objective-C/instm/DRFolder(VirtualFolders)/count
+Objective-C/instm/NSSet/count
+Objective-C/instm/NSMapTable/count
+Objective-C/instm/NSDictionary/count
+Objective-C/instm/NSIndexSet/count
+Objective-C/instm/NSArray/count
+JavaScript/instm/Console/count
+C/func/-/Count1Resources
+C/func/-/Count1Types
+Objective-C/intfm/NSFastEnumeration/countByEnumeratingWithState:objects:count:
+C/func/-/CountComponentInstances
+C/func/-/CountComponents
+JavaScript/cl/-/Counter
+JavaScript/data/DOMWindow/Counter
+Objective-C/instm/NSManagedObjectContext/countForFetchRequest:error:
+Objective-C/instm/NSCountedSet/countForObject:
+C/func/-/CountImageDescriptionExtensionType
+C/tdef/-/CountImageProfilesProcPtr
+Objective-C/instm/NSTreeController/countKeyPath
+Objective-C/instm/NSTreeController/countKeyPathForNode:
+Objective-C/instm/NSCache/countLimit
+Objective-C/instm/NSIndexSet/countOfIndexesInRange:
+C/func/-/CountResources
+Objective-C/instp/CWInterface/countryCode
+C/func/-/CountTypes
+C/func/-/CountUnicodeMappings
+C/func/-/CountVoices
+Objective-C/instm/NSSpellChecker/countWordsInString:language:
+Objective-C/instp/CLLocation/course
+Objective-C/instm/CLLocation/course
+Objective-C/instm/NSFont/coveredCharacterSet
+C/macro/-/CPLUSTEST_EXPORT
+C/func/-/cpow
+C/func/-/cpowf
+C/func/-/cpowl
+C/func/-/cproj
+C/func/-/cprojf
+C/func/-/cprojl
+C/macro/-/CPTAssert
+C/func/-/creal
+C/func/-/crealf
+C/func/-/creall
+C/func/-/creat
+C++/clm/IOAudioToggleControl/create
+C++/clm/IOAudioLevelControl/create
+C/func/-/create_fftsetup
+C/func/-/create_fftsetupD
+C++/instm/IOAGPDevice/createAGPSpace
+C/func/-/CreateAsyncWakePort
+JavaScript/instm/Document/createAttribute
+JavaScript/instm/Document/createAttributeNS
+JavaScript/instm/WebGLRenderingContext/createBuffer
+JavaScript/instm/HTMLTableElement/createCaption
+JavaScript/instm/Document/createCDATASection
+Objective-C/instm/CIContext/createCGImage:fromRect:
+Objective-C/instm/CIContext/createCGImage:fromRect:format:colorSpace:
+C/func/-/CreateCGImageFromPixMaps
+Objective-C/instm/CIContext/createCGLayerWithSize:info:
+Objective-C/instm/NSCreateCommand/createClassDescription
+Objective-C/instm/NSScriptCommandDescription/createCommandInstance
+Objective-C/instm/NSScriptCommandDescription/createCommandInstanceWithZone:
+JavaScript/instm/Document/createComment
+Objective-C/instm/NSPrintOperation/createContext
+JavaScript/instm/Range/createContextualFragment
+Objective-C/intfm/NSConnectionDelegate/createConversationForConnection:
+JavaScript/instm/Document/createCSSStyleDeclaration
+JavaScript/instm/DOMImplementation/createCSSStyleSheet
+Objective-C/instm/FxTexture/createData:withType:
+C/func/-/CreateDataBrowserControl
+Objective-C/instm/NSEntityMigrationPolicy/createDestinationInstancesForSourceInstance:entityMapping:manager:error:
+C++/instm/IOUSBControllerV2/CreateDevice
+C++/instm/IOSCSIParallelInterfaceController/CreateDeviceInterrupt
+C++/clm/IOAudioEngine/createDictionaryFromSampleRate
+Objective-C/instm/NSFileManager/createDirectoryAtPath:attributes:
+Objective-C/instm/NSFileManager/createDirectoryAtPath:withIntermediateDirectories:attributes:error:
+JavaScript/instm/DOMImplementation/createDocument
+JavaScript/instm/Document/createDocumentFragment
+Objective-C/instm/DOMHTMLDocument/createDocumentFragmentWithMarkupString:baseURL:
+Objective-C/instm/DOMHTMLDocument/createDocumentFragmentWithText:
+JavaScript/instm/DOMImplementation/createDocumentType
+JavaScript/instm/Document/createElement
+JavaScript/instm/Document/createElementNS
+JavaScript/instm/Document/createEntityReference
+JavaScript/instm/Document/createEvent
+JavaScript/instm/SVGDocument/createEvent
+JavaScript/instm/Document/createExpression
+JavaScript/instm/XPathEvaluator/createExpression
+Objective-C/instm/NSFileManager/createFileAtPath:contents:attributes:
+JavaScript/instm/WebGLRenderingContext/createFramebuffer
+JavaScript/instm/DOMImplementation/createHTMLDocument
+JavaScript/instm/NotificationCenter/createHTMLNotification
+JavaScript/instm/CanvasRenderingContext2D/createImageData
+C++/instm/IOEthernetController/createInterface
+C++/instm/IONetworkController/createInterface
+C++/instm/IOUSBDevice/CreateInterfaceIterator
+JavaScript/instm/CanvasRenderingContext2D/createLinearGradient
+C++/instm/IOFireWireBus/createLocalIsochPort
+C++/instm/IOMemoryDescriptor/createMappingInTask
+C/econst/-/createMovieFileDontOpenFile
+JavaScript/instm/Document/createNodeIterator
+JavaScript/instm/NotificationCenter/createNotification
+JavaScript/instm/Document/createNSResolver
+JavaScript/instm/XPathEvaluator/createNSResolver
+JavaScript/instm/IDBDatabaseRequest/createObjectStore
+C++/instm/IONetworkController/createOutputQueue
+C++/clm/IOAudioToggleControl/createPassThruMuteControl
+JavaScript/instm/CanvasRenderingContext2D/createPattern
+C++/instm/IOFireWireDevice/createPhysicalAddressSpace
+JavaScript/instm/Document/createProcessingInstruction
+JavaScript/instm/WebGLRenderingContext/createProgram
+C++/instm/IOFireWireDevice/createPseudoAddressSpace
+C++/instm/IOStream/createQueues
+JavaScript/instm/CanvasRenderingContext2D/createRadialGradient
+JavaScript/instm/Document/createRange
+Objective-C/instm/ODNode/createRecordWithRecordType:name:attributes:error:
+Objective-C/instm/NSEntityMigrationPolicy/createRelationshipsForDestinationInstance:entityMapping:manager:error:
+JavaScript/instm/WebGLRenderingContext/createRenderbuffer
+C++/clm/IOAudioEngine/createSampleRateFromDictionary
+JavaScript/instm/WebGLRenderingContext/createShader
+Objective-C/instm/QCView/createSnapshotImageOfType:
+Objective-C/instm/QCRenderer/createSnapshotImageOfType:
+JavaScript/instm/SVGSVGElement/createSVGAngle
+JavaScript/instm/SVGSVGElement/createSVGLength
+JavaScript/instm/SVGSVGElement/createSVGMatrix
+JavaScript/instm/SVGSVGElement/createSVGNumber
+JavaScript/instm/SVGPathElement/createSVGPathSegArcAbs
+JavaScript/instm/SVGPathElement/createSVGPathSegArcRel
+JavaScript/instm/SVGPathElement/createSVGPathSegClosePath
+JavaScript/instm/SVGPathElement/createSVGPathSegCurvetoCubicAbs
+JavaScript/instm/SVGPathElement/createSVGPathSegCurvetoCubicRel
+JavaScript/instm/SVGPathElement/createSVGPathSegCurvetoCubicSmoothAbs
+JavaScript/instm/SVGPathElement/createSVGPathSegCurvetoCubicSmoothRel
+JavaScript/instm/SVGPathElement/createSVGPathSegCurvetoQuadraticAbs
+JavaScript/instm/SVGPathElement/createSVGPathSegCurvetoQuadraticRel
+JavaScript/instm/SVGPathElement/createSVGPathSegCurvetoQuadraticSmoothAbs
+JavaScript/instm/SVGPathElement/createSVGPathSegCurvetoQuadraticSmoothRel
+JavaScript/instm/SVGPathElement/createSVGPathSegLinetoAbs
+JavaScript/instm/SVGPathElement/createSVGPathSegLinetoHorizontalAbs
+JavaScript/instm/SVGPathElement/createSVGPathSegLinetoHorizontalRel
+JavaScript/instm/SVGPathElement/createSVGPathSegLinetoRel
+JavaScript/instm/SVGPathElement/createSVGPathSegLinetoVerticalAbs
+JavaScript/instm/SVGPathElement/createSVGPathSegLinetoVerticalRel
+JavaScript/instm/SVGPathElement/createSVGPathSegMovetoAbs
+JavaScript/instm/SVGPathElement/createSVGPathSegMovetoRel
+JavaScript/instm/SVGSVGElement/createSVGPoint
+JavaScript/instm/SVGSVGElement/createSVGRect
+JavaScript/instm/SVGSVGElement/createSVGTransform
+JavaScript/instm/SVGSVGElement/createSVGTransformFromMatrix
+JavaScript/instm/SVGTransformList/createSVGTransformFromMatrix
+Objective-C/instm/NSFileManager/createSymbolicLinkAtPath:pathContent:
+Objective-C/instm/NSFileManager/createSymbolicLinkAtPath:withDestinationPath:error:
+C++/instm/IOSCSIParallelInterfaceController/CreateTargetForID
+C/func/-/CreateTextEncoding
+JavaScript/instm/Document/createTextNode
+C/func/-/CreateTextToUnicodeInfo
+C/func/-/CreateTextToUnicodeInfoByEncoding
+JavaScript/instm/WebGLRenderingContext/createTexture
+Objective-C/instm/NSOpenGLContext/createTexture:fromView:internalFormat:
+JavaScript/instm/HTMLTableElement/createTFoot
+JavaScript/instm/HTMLTableElement/createTHead
+JavaScript/instm/Document/createTreeWalker
+C/func/-/CreateUnicodeToTextInfo
+C/func/-/CreateUnicodeToTextInfoByEncoding
+C/func/-/CreateUnicodeToTextRunInfo
+C/func/-/CreateUnicodeToTextRunInfoByEncoding
+C/func/-/CreateUnicodeToTextRunInfoByScriptCode
+C++/instm/IOAudioControl/createUserClient
+Objective-C/instm/QCPlugIn/createViewController
+Objective-C/intfm/FxCustomParameterViewHost/createViewForParm:
+C++/instm/IONetworkController/createWorkLoop
+Objective-C/clm/NSURLCredential/credentialForTrust:
+Objective-C/instm/NSURLCredentialStorage/credentialsForProtectionSpace:
+Objective-C/clm/NSURLCredential/credentialWithIdentity:certificates:persistence:
+Objective-C/clm/NSURLCredential/credentialWithUser:password:persistence:
+Objective-C/instm/NSRuleEditor/criteriaForRow:
+Objective-C/instm/NSRuleEditor/criteriaKeyPath
+C++/instm/IOFireWireSerialBusProtocolTransport/CriticalOrbSubmission
+Objective-C/instm/NSLevelIndicator/criticalValue
+Objective-C/instm/NSLevelIndicatorCell/criticalValue
+Objective-C/binding/NSLevelIndicator/criticalValue
+Objective-C/binding/NSLevelIndicatorCell/criticalValue
+Objective-C/instm/IKImageView/crop:
+Objective-C/clm/NSCursor/crosshairCursor
+C/func/-/crypt
+C/func/-/crypto
+JavaScript/data/DOMWindow/crypto
+C/func/-/CRYPTO_destroy_dynlockid
+C/func/-/CRYPTO_get_ex_data
+C/func/-/CRYPTO_get_new_dynlockid
+C/func/-/CRYPTO_lock
+C/func/-/CRYPTO_num_locks
+C/func/-/CRYPTO_set_dynlock_create_callback
+C/func/-/CRYPTO_set_dynlock_destroy_callback
+C/func/-/CRYPTO_set_dynlock_lock_callback
+C/func/-/CRYPTO_set_ex_data
+C/func/-/CRYPTO_set_id_callback
+C/func/-/CRYPTO_set_locking_callback
+C/econst/-/CS_MAX_PATH
+C/func/-/CSBackupIsItemExcluded
+C/func/-/CSBackupSetItemExcluded
+C/tdef/-/CSComponentsThreadMode
+C/func/-/CSGetComponentsThreadMode
+C/func/-/CSGetDefaultIdentityAuthority
+C/func/-/CSGetLocalIdentityAuthority
+C/func/-/CSGetManagedIdentityAuthority
+Objective-C/instm/CBIdentity/CSIdentity
+C/tag/-/CSIdentity
+C/func/-/CSIdentityAddAlias
+C/func/-/CSIdentityAddMember
+C/func/-/CSIdentityAuthenticateUsingPassword
+Objective-C/instm/CBIdentityAuthority/CSIdentityAuthority
+C/func/-/CSIdentityAuthorityCopyLocalizedName
+C/func/-/CSIdentityAuthorityGetTypeID
+C/tdef/-/CSIdentityAuthorityRef
+C/tag/-/CSIdentityClass
+C/tag/-/CSIdentityClientContext
+C/func/-/CSIdentityCommit
+C/func/-/CSIdentityCommitAsynchronously
+C/func/-/CSIdentityCreate
+C/func/-/CSIdentityCreateCopy
+C/func/-/CSIdentityCreateGroupMembershipQuery
+C/func/-/CSIdentityCreatePersistentReference
+C/func/-/CSIdentityDelete
+C/tag/-/CSIdentityFlags
+C/func/-/CSIdentityGetAliases
+C/func/-/CSIdentityGetAuthority
+C/func/-/CSIdentityGetCertificate
+C/func/-/CSIdentityGetClass
+C/func/-/CSIdentityGetEmailAddress
+C/func/-/CSIdentityGetFullName
+C/func/-/CSIdentityGetImageData
+C/func/-/CSIdentityGetImageDataType
+C/func/-/CSIdentityGetImageURL
+C/func/-/CSIdentityGetPosixID
+C/func/-/CSIdentityGetPosixName
+C/func/-/CSIdentityGetTypeID
+C/func/-/CSIdentityGetUUID
+C/func/-/CSIdentityIsCommitting
+C/func/-/CSIdentityIsEnabled
+C/func/-/CSIdentityIsHidden
+C/func/-/CSIdentityIsMemberOfGroup
+C/tag/-/CSIdentityQueryClientContext
+C/func/-/CSIdentityQueryCopyResults
+C/func/-/CSIdentityQueryCreate
+C/func/-/CSIdentityQueryCreateForCurrentUser
+C/func/-/CSIdentityQueryCreateForName
+C/func/-/CSIdentityQueryCreateForPersistentReference
+C/func/-/CSIdentityQueryCreateForPosixID
+C/func/-/CSIdentityQueryCreateForUUID
+C/tag/-/CSIdentityQueryEvent
+C/func/-/CSIdentityQueryExecute
+C/func/-/CSIdentityQueryExecuteAsynchronously
+C/tag/-/CSIdentityQueryFlags
+C/func/-/CSIdentityQueryGetTypeID
+C/tdef/-/CSIdentityQueryReceiveEventCallback
+C/tdef/-/CSIdentityQueryRef
+C/func/-/CSIdentityQueryStop
+C/tag/-/CSIdentityQueryStringComparisonMethod
+C/tdef/-/CSIdentityRef
+C/func/-/CSIdentityRemoveAlias
+C/func/-/CSIdentityRemoveClient
+C/func/-/CSIdentityRemoveMember
+C/func/-/CSIdentitySetCertificate
+C/func/-/CSIdentitySetEmailAddress
+C/func/-/CSIdentitySetFullName
+C/func/-/CSIdentitySetImageData
+C/func/-/CSIdentitySetImageURL
+C/func/-/CSIdentitySetIsEnabled
+C/func/-/CSIdentitySetPassword
+C/func/-/csin
+C/func/-/csinf
+C/func/-/csinh
+C/func/-/csinhf
+C/func/-/csinhl
+C/func/-/csinl
+C/tdef/-/CSParam
+C/func/-/csqrt
+C/func/-/csqrtf
+C/func/-/csqrtl
+JavaScript/clconst/CSSPrimitiveValue/CSS_ATTR
+JavaScript/clconst/CSSPrimitiveValue/CSS_CM
+JavaScript/clconst/CSSPrimitiveValue/CSS_COUNTER
+JavaScript/clconst/CSSValue/CSS_CUSTOM
+JavaScript/clconst/CSSPrimitiveValue/CSS_DEG
+JavaScript/clconst/CSSPrimitiveValue/CSS_DIMENSION
+JavaScript/clconst/CSSPrimitiveValue/CSS_EMS
+JavaScript/clconst/CSSPrimitiveValue/CSS_EXS
+JavaScript/clconst/CSSPrimitiveValue/CSS_GRAD
+JavaScript/clconst/CSSPrimitiveValue/CSS_HZ
+JavaScript/clconst/CSSPrimitiveValue/CSS_IDENT
+JavaScript/clconst/CSSPrimitiveValue/CSS_IN
+JavaScript/clconst/CSSValue/CSS_INHERIT
+JavaScript/clconst/CSSPrimitiveValue/CSS_KHZ
+JavaScript/clconst/WebKitCSSTransformValue/CSS_MATRIX
+JavaScript/clconst/WebKitCSSTransformValue/CSS_MATRIX3D
+JavaScript/clconst/CSSPrimitiveValue/CSS_MM
+JavaScript/clconst/CSSPrimitiveValue/CSS_MS
+JavaScript/clconst/CSSPrimitiveValue/CSS_NUMBER
+JavaScript/clconst/CSSPrimitiveValue/CSS_PC
+JavaScript/clconst/CSSPrimitiveValue/CSS_PERCENTAGE
+JavaScript/clconst/WebKitCSSTransformValue/CSS_PERSPECTIVE
+JavaScript/clconst/CSSValue/CSS_PRIMITIVE_VALUE
+JavaScript/clconst/CSSPrimitiveValue/CSS_PT
+JavaScript/clconst/CSSPrimitiveValue/CSS_PX
+JavaScript/clconst/CSSPrimitiveValue/CSS_RAD
+JavaScript/clconst/CSSPrimitiveValue/CSS_RECT
+JavaScript/clconst/CSSPrimitiveValue/CSS_RGBCOLOR
+JavaScript/clconst/WebKitCSSTransformValue/CSS_ROTATE
+JavaScript/clconst/WebKitCSSTransformValue/CSS_ROTATE3D
+JavaScript/clconst/WebKitCSSTransformValue/CSS_ROTATEX
+JavaScript/clconst/WebKitCSSTransformValue/CSS_ROTATEY
+JavaScript/clconst/WebKitCSSTransformValue/CSS_ROTATEZ
+JavaScript/clconst/CSSPrimitiveValue/CSS_S
+JavaScript/clconst/WebKitCSSTransformValue/CSS_SCALE
+JavaScript/clconst/WebKitCSSTransformValue/CSS_SCALE3D
+JavaScript/clconst/WebKitCSSTransformValue/CSS_SCALEX
+JavaScript/clconst/WebKitCSSTransformValue/CSS_SCALEY
+JavaScript/clconst/WebKitCSSTransformValue/CSS_SCALEZ
+JavaScript/clconst/WebKitCSSTransformValue/CSS_SKEW
+JavaScript/clconst/WebKitCSSTransformValue/CSS_SKEWX
+JavaScript/clconst/WebKitCSSTransformValue/CSS_SKEWY
+JavaScript/clconst/CSSPrimitiveValue/CSS_STRING
+JavaScript/clconst/WebKitCSSTransformValue/CSS_TRANSLATE
+JavaScript/clconst/WebKitCSSTransformValue/CSS_TRANSLATE3D
+JavaScript/clconst/WebKitCSSTransformValue/CSS_TRANSLATEX
+JavaScript/clconst/WebKitCSSTransformValue/CSS_TRANSLATEY
+JavaScript/clconst/WebKitCSSTransformValue/CSS_TRANSLATEZ
+JavaScript/clconst/CSSPrimitiveValue/CSS_UNKNOWN
+JavaScript/clconst/CSSPrimitiveValue/CSS_URI
+JavaScript/clconst/CSSValue/CSS_VALUE_LIST
+JavaScript/data/DOMWindow/CSSCharsetRule
+JavaScript/cl/-/CSSCharsetRule
+C/func/-/CSSetComponentsThreadMode
+JavaScript/cl/-/CSSFontFaceRule
+JavaScript/data/DOMWindow/CSSFontFaceRule
+JavaScript/data/DOMWindow/CSSImportRule
+JavaScript/cl/-/CSSImportRule
+C/econst/-/CSSM_ACL_AUTHORIZATION_ANY
+C/econst/-/CSSM_ACL_AUTHORIZATION_CHANGE_ACL
+C/econst/-/CSSM_ACL_AUTHORIZATION_CHANGE_OWNER
+C/econst/-/CSSM_ACL_AUTHORIZATION_DECRYPT
+C/econst/-/CSSM_ACL_AUTHORIZATION_DELETE
+C/econst/-/CSSM_ACL_AUTHORIZATION_DERIVE
+C/econst/-/CSSM_ACL_AUTHORIZATION_ENCRYPT
+C/econst/-/CSSM_ACL_AUTHORIZATION_EXPORT_CLEAR
+C/econst/-/CSSM_ACL_AUTHORIZATION_EXPORT_WRAPPED
+C/econst/-/CSSM_ACL_AUTHORIZATION_GENKEY
+C/econst/-/CSSM_ACL_AUTHORIZATION_IMPORT_CLEAR
+C/econst/-/CSSM_ACL_AUTHORIZATION_IMPORT_WRAPPED
+C/econst/-/CSSM_ACL_AUTHORIZATION_LOGIN
+C/econst/-/CSSM_ACL_AUTHORIZATION_MAC
+C/econst/-/CSSM_ACL_AUTHORIZATION_SIGN
+C/tdef/-/CSSM_ACL_AUTHORIZATION_TAG
+C/econst/-/CSSM_ACL_AUTHORIZATION_TAG_VENDOR_DEFINED_START
+C/tdef/-/CSSM_APPLE_TP_ACTION_FLAGS
+C/econst/-/CSSM_CERT_STATUS_EXPIRED
+C/econst/-/CSSM_CERT_STATUS_IS_FROM_NET
+C/econst/-/CSSM_CERT_STATUS_IS_IN_ANCHORS
+C/econst/-/CSSM_CERT_STATUS_IS_IN_INPUT_CERTS
+C/econst/-/CSSM_CERT_STATUS_IS_ROOT
+C/econst/-/CSSM_CERT_STATUS_NOT_VALID_YET
+C/econst/-/CSSM_DL_DB_RECORD_ALL_KEYS
+C/econst/-/CSSM_TP_ACTION_ALLOW_EXPIRED
+C/econst/-/CSSM_TP_ACTION_ALLOW_EXPIRED_ROOT
+C/econst/-/CSSM_TP_ACTION_FETCH_CERT_FROM_NET
+C/econst/-/CSSM_TP_ACTION_LEAF_IS_CA
+C/tdef/-/CSSM_TP_APPLE_CERT_STATUS
+C/tdef/-/CSSM_TP_APPLE_EVIDENCE_INFO
+JavaScript/cl/-/CSSMediaRule
+JavaScript/data/DOMWindow/CSSMediaRule
+JavaScript/cl/-/CSSPageRule
+JavaScript/data/DOMWindow/CSSPageRule
+JavaScript/data/DOMWindow/CSSPrimitiveValue
+JavaScript/cl/-/CSSPrimitiveValue
+JavaScript/data/DOMWindow/CSSRule
+JavaScript/cl/-/CSSRule
+JavaScript/cl/-/CSSRuleList
+JavaScript/data/DOMWindow/CSSRuleList
+JavaScript/data/CSSMediaRule/cssRules
+JavaScript/data/CSSStyleSheet/cssRules
+JavaScript/data/WebKitCSSKeyframesRule/cssRules
+JavaScript/data/DOMWindow/CSSStyleDeclaration
+JavaScript/cl/-/CSSStyleDeclaration
+JavaScript/cl/-/CSSStyleRule
+JavaScript/data/DOMWindow/CSSStyleRule
+JavaScript/data/DOMWindow/CSSStyleSheet
+JavaScript/cl/-/CSSStyleSheet
+JavaScript/data/CSSRule/cssText
+JavaScript/data/CSSStyleDeclaration/cssText
+JavaScript/data/CSSVariablesDeclaration/cssText
+JavaScript/data/CSSValue/cssText
+JavaScript/cl/-/CSSUnknownRule
+JavaScript/cl/-/CSSValue
+JavaScript/data/DOMWindow/CSSValue
+JavaScript/cl/-/CSSValueList
+JavaScript/data/DOMWindow/CSSValueList
+JavaScript/data/CSSValue/cssValueType
+JavaScript/data/DOMWindow/CSSVariablesDeclaration
+JavaScript/cl/-/CSSVariablesDeclaration
+JavaScript/cl/-/CSSVariablesRule
+JavaScript/data/DOMWindow/CSSVariablesRule
+Objective-C/instm/NSString/cString
+Objective-C/instm/NSString/cStringLength
+Objective-C/instm/NSString/cStringUsingEncoding:
+C/tdef/-/CStrList
+C/tdef/-/CTabHandle
+C/tdef/-/CTabPtr
+C/func/-/ctan
+C/func/-/ctanf
+C/func/-/ctanh
+C/func/-/ctanhf
+C/func/-/ctanhl
+C/func/-/ctanl
+C/tdef/-/CTCharacterCollection
+C/func/-/ctermid
+C/func/-/ctermid_r
+C/func/-/CTFontCollectionCreateCopyWithFontDescriptors
+C/func/-/CTFontCollectionCreateFromAvailableFonts
+C/func/-/CTFontCollectionCreateMatchingFontDescriptors
+C/func/-/CTFontCollectionCreateMatchingFontDescriptorsSortedWithCallback
+C/func/-/CTFontCollectionCreateWithFontDescriptors
+C/func/-/CTFontCollectionGetTypeID
+C/tdef/-/CTFontCollectionRef
+C/func/-/CTFontCopyAttribute
+C/func/-/CTFontCopyAvailableTables
+C/func/-/CTFontCopyCharacterSet
+C/func/-/CTFontCopyDisplayName
+C/func/-/CTFontCopyFamilyName
+C/func/-/CTFontCopyFeatures
+C/func/-/CTFontCopyFeatureSettings
+C/func/-/CTFontCopyFontDescriptor
+C/func/-/CTFontCopyFullName
+C/func/-/CTFontCopyGraphicsFont
+C/func/-/CTFontCopyLocalizedName
+C/func/-/CTFontCopyName
+C/func/-/CTFontCopyPostScriptName
+C/func/-/CTFontCopySupportedLanguages
+C/func/-/CTFontCopyTable
+C/func/-/CTFontCopyTraits
+C/func/-/CTFontCopyVariation
+C/func/-/CTFontCopyVariationAxes
+C/func/-/CTFontCreateCopyWithAttributes
+C/func/-/CTFontCreateCopyWithFamily
+C/func/-/CTFontCreateCopyWithSymbolicTraits
+C/func/-/CTFontCreateForString
+C/func/-/CTFontCreatePathForGlyph
+C/func/-/CTFontCreateUIFontForLanguage
+C/func/-/CTFontCreateWithFontDescriptor
+C/func/-/CTFontCreateWithFontDescriptorAndOptions
+C/func/-/CTFontCreateWithGraphicsFont
+C/func/-/CTFontCreateWithName
+C/func/-/CTFontCreateWithNameAndOptions
+C/func/-/CTFontCreateWithPlatformFont
+C/func/-/CTFontCreateWithQuickdrawInstance
+C/func/-/CTFontDescriptorCopyAttribute
+C/func/-/CTFontDescriptorCopyAttributes
+C/func/-/CTFontDescriptorCopyLocalizedAttribute
+C/func/-/CTFontDescriptorCreateCopyWithAttributes
+C/func/-/CTFontDescriptorCreateCopyWithFeature
+C/func/-/CTFontDescriptorCreateCopyWithVariation
+C/func/-/CTFontDescriptorCreateMatchingFontDescriptor
+C/func/-/CTFontDescriptorCreateMatchingFontDescriptors
+C/func/-/CTFontDescriptorCreateWithAttributes
+C/func/-/CTFontDescriptorCreateWithNameAndSize
+C/func/-/CTFontDescriptorGetTypeID
+C/tdef/-/CTFontDescriptorRef
+C/tdef/-/CTFontFormat
+C/func/-/CTFontGetAdvancesForGlyphs
+C/func/-/CTFontGetAscent
+C/func/-/CTFontGetBoundingBox
+C/func/-/CTFontGetBoundingRectsForGlyphs
+C/func/-/CTFontGetCapHeight
+C/func/-/CTFontGetDescent
+C/func/-/CTFontGetGlyphCount
+C/func/-/CTFontGetGlyphsForCharacters
+C/func/-/CTFontGetGlyphWithName
+C/func/-/CTFontGetLeading
+C/func/-/CTFontGetMatrix
+C/func/-/CTFontGetPlatformFont
+C/func/-/CTFontGetSize
+C/func/-/CTFontGetSlantAngle
+C/func/-/CTFontGetStringEncoding
+C/func/-/CTFontGetSymbolicTraits
+C/func/-/CTFontGetTypeID
+C/func/-/CTFontGetUnderlinePosition
+C/func/-/CTFontGetUnderlineThickness
+C/func/-/CTFontGetUnitsPerEm
+C/func/-/CTFontGetVerticalTranslationsForGlyphs
+C/func/-/CTFontGetXHeight
+C/tdef/-/CTFontManagerAutoActivationSetting
+C/func/-/CTFontManagerCompareFontFamilyNames
+C/func/-/CTFontManagerCopyAvailableFontFamilyNames
+C/func/-/CTFontManagerCopyAvailableFontURLs
+C/func/-/CTFontManagerCopyAvailablePostScriptNames
+C/func/-/CTFontManagerCreateFontDescriptorsFromURL
+C/func/-/CTFontManagerCreateFontRequestRunLoopSource
+C/func/-/CTFontManagerEnableFontDescriptors
+C/tdef/-/CTFontManagerError
+C/func/-/CTFontManagerGetAutoActivationSetting
+C/func/-/CTFontManagerGetScopeForURL
+C/func/-/CTFontManagerIsSupportedFontFile
+C/func/-/CTFontManagerRegisterFontsForURL
+C/func/-/CTFontManagerRegisterFontsForURLs
+C/tdef/-/CTFontManagerScope
+C/func/-/CTFontManagerSetAutoActivationSetting
+C/func/-/CTFontManagerUnregisterFontsForURL
+C/func/-/CTFontManagerUnregisterFontsForURLs
+C/tdef/-/CTFontOptions
+C/tdef/-/CTFontOrientation
+C/tdef/-/CTFontPriority
+C/tdef/-/CTFontRef
+C/tdef/-/CTFontStylisticClass
+C/tdef/-/CTFontSymbolicTraits
+C/tdef/-/CTFontTableOptions
+C/tdef/-/CTFontTableTag
+C/tdef/-/CTFontUIFontType
+C/func/-/CTFrameDraw
+C/func/-/CTFrameGetFrameAttributes
+C/func/-/CTFrameGetLineOrigins
+C/func/-/CTFrameGetLines
+C/func/-/CTFrameGetPath
+C/func/-/CTFrameGetStringRange
+C/func/-/CTFrameGetTypeID
+C/func/-/CTFrameGetVisibleStringRange
+C/tdef/-/CTFrameProgression
+C/tdef/-/CTFrameRef
+C/func/-/CTFramesetterCreateFrame
+C/func/-/CTFramesetterCreateWithAttributedString
+C/func/-/CTFramesetterGetTypeID
+C/func/-/CTFramesetterGetTypesetter
+C/tdef/-/CTFramesetterRef
+C/func/-/CTFramesetterSuggestFrameSizeWithConstraints
+C/func/-/CTGetCoreTextVersion
+C/func/-/CTGlyphInfoCreateWithCharacterIdentifier
+C/func/-/CTGlyphInfoCreateWithGlyph
+C/func/-/CTGlyphInfoCreateWithGlyphName
+C/func/-/CTGlyphInfoGetCharacterCollection
+C/func/-/CTGlyphInfoGetCharacterIdentifier
+C/func/-/CTGlyphInfoGetGlyphName
+C/func/-/CTGlyphInfoGetTypeID
+C/tdef/-/CTGlyphInfoRef
+C/func/-/ctime
+C/func/-/ctime_r
+C/tdef/-/ctl_connect_func
+C/macro/-/CTL_DATA_EOR
+C/macro/-/CTL_DATA_NOWAKEUP
+C/func/-/ctl_deregister
+C/tdef/-/ctl_disconnect_func
+C/func/-/ctl_enqueuedata
+C/func/-/ctl_enqueuembuf
+C/tag/-/ctl_event_data
+C/macro/-/CTL_FLAG_PRIVILEGED
+C/macro/-/CTL_FLAG_REG_ID_UNIT
+C/macro/-/CTL_FLAG_REG_SOCK_STREAM
+C/func/-/ctl_getenqueuespace
+C/tdef/-/ctl_getopt_func
+C/tag/-/ctl_info
+C/func/-/ctl_register
+C/tdef/-/ctl_send_func
+C/tdef/-/ctl_setopt_func
+C/tdef/-/CTLineBreakMode
+C/func/-/CTLineCreateJustifiedLine
+C/func/-/CTLineCreateTruncatedLine
+C/func/-/CTLineCreateWithAttributedString
+C/func/-/CTLineDraw
+C/func/-/CTLineGetGlyphCount
+C/func/-/CTLineGetGlyphRuns
+C/func/-/CTLineGetImageBounds
+C/func/-/CTLineGetOffsetForStringIndex
+C/func/-/CTLineGetPenOffsetForFlush
+C/func/-/CTLineGetStringIndexForPosition
+C/func/-/CTLineGetStringRange
+C/func/-/CTLineGetTrailingWhitespaceWidth
+C/func/-/CTLineGetTypeID
+C/func/-/CTLineGetTypographicBounds
+C/tdef/-/CTLineRef
+C/tdef/-/CTLineTruncationType
+C/macro/-/CTLIOCGCOUNT
+C/macro/-/CTLIOCGINFO
+C/func/-/ctoz
+C/func/-/ctozD
+C/func/-/CTParagraphStyleCreate
+C/func/-/CTParagraphStyleCreateCopy
+C/func/-/CTParagraphStyleGetTypeID
+C/func/-/CTParagraphStyleGetValueForSpecifier
+C/tdef/-/CTParagraphStyleRef
+C/tdef/-/CTParagraphStyleSetting
+C/tag/-/CTParagraphStyleSetting
+C/tdef/-/CTParagraphStyleSpecifier
+JavaScript/data/KeyboardEvent/ctrlKey
+JavaScript/data/MouseEvent/ctrlKey
+JavaScript/data/TouchEvent/ctrlKey
+JavaScript/data/WheelEvent/ctrlKey
+C/func/-/CTRunDraw
+C/func/-/CTRunGetAdvances
+C/func/-/CTRunGetAdvancesPtr
+C/func/-/CTRunGetAttributes
+C/func/-/CTRunGetGlyphCount
+C/func/-/CTRunGetGlyphs
+C/func/-/CTRunGetGlyphsPtr
+C/func/-/CTRunGetImageBounds
+C/func/-/CTRunGetPositions
+C/func/-/CTRunGetPositionsPtr
+C/func/-/CTRunGetStatus
+C/func/-/CTRunGetStringIndices
+C/func/-/CTRunGetStringIndicesPtr
+C/func/-/CTRunGetStringRange
+C/func/-/CTRunGetTextMatrix
+C/func/-/CTRunGetTypeID
+C/func/-/CTRunGetTypographicBounds
+C/tdef/-/CTRunRef
+C/tdef/-/CTRunStatus
+C/tdef/-/CTTextAlignment
+C/func/-/CTTextTabCreate
+C/func/-/CTTextTabGetAlignment
+C/func/-/CTTextTabGetLocation
+C/func/-/CTTextTabGetOptions
+C/func/-/CTTextTabGetTypeID
+C/tdef/-/CTTextTabRef
+C/func/-/CTTypesetterCreateLine
+C/func/-/CTTypesetterCreateWithAttributedString
+C/func/-/CTTypesetterCreateWithAttributedStringAndOptions
+C/func/-/CTTypesetterGetTypeID
+C/tdef/-/CTTypesetterRef
+C/func/-/CTTypesetterSuggestClusterBreak
+C/func/-/CTTypesetterSuggestLineBreak
+C/tdef/-/CTUnderlineStyle
+C/tdef/-/CTUnderlineStyleModifiers
+C/tdef/-/CTWritingDirection
+C/func/-/ctype
+C/func/-/ctype_l
+JavaScript/clconst/WebGLRenderingContext/CULL_FACE
+JavaScript/clconst/WebGLRenderingContext/CULL_FACE_MODE
+JavaScript/instm/WebGLRenderingContext/cullFace
+Objective-C/instp/CAPropertyAnimation/cumulative
+C/func/-/curl_easy_cleanup
+C/func/-/curl_easy_duphandle
+C/func/-/curl_easy_escape
+C/func/-/curl_easy_getinfo
+C/func/-/curl_easy_init
+C/func/-/curl_easy_pause
+C/func/-/curl_easy_perform
+C/func/-/curl_easy_recv
+C/func/-/curl_easy_reset
+C/func/-/curl_easy_send
+C/func/-/curl_easy_setopt
+C/func/-/curl_easy_strerror
+C/func/-/curl_easy_unescape
+C/func/-/curl_escape
+C/func/-/curl_formadd
+C/func/-/curl_formfree
+C/func/-/curl_formget
+C/func/-/curl_free
+C/func/-/curl_getdate
+C/func/-/curl_getenv
+C/func/-/curl_global_cleanup
+C/func/-/curl_global_init
+C/func/-/curl_global_init_mem
+C/func/-/curl_maprintf
+C/func/-/curl_mfprintf
+C/func/-/curl_mprintf
+C/func/-/curl_msnprintf
+C/func/-/curl_msprintf
+C/func/-/curl_multi_add_handle
+C/func/-/curl_multi_assign
+C/func/-/curl_multi_cleanup
+C/func/-/curl_multi_fdset
+C/func/-/curl_multi_info_read
+C/func/-/curl_multi_init
+C/func/-/curl_multi_perform
+C/func/-/curl_multi_remove_handle
+C/func/-/curl_multi_setopt
+C/func/-/curl_multi_socket
+C/func/-/curl_multi_socket_action
+C/func/-/curl_multi_socket_all
+C/func/-/curl_multi_strerror
+C/func/-/curl_multi_timeout
+C/func/-/curl_mvaprintf
+C/func/-/curl_mvfprintf
+C/func/-/curl_mvprintf
+C/func/-/curl_mvsnprintf
+C/func/-/curl_mvsprintf
+C/func/-/curl_share_cleanup
+C/func/-/curl_share_init
+C/func/-/curl_share_setopt
+C/func/-/curl_share_strerror
+C/func/-/curl_slist_append
+C/func/-/curl_slist_free_all
+C/func/-/curl_strenqual
+C/func/-/curl_strequal
+C/func/-/curl_unescape
+C/func/-/curl_version
+C/func/-/curl_version_info
+Objective-C/instm/NSNumberFormatter/currencyCode
+Objective-C/instm/NSNumberFormatter/currencyDecimalSeparator
+Objective-C/instm/NSNumberFormatter/currencyGroupingSeparator
+Objective-C/instm/NSNumberFormatter/currencySymbol
+Objective-C/instp/PSEntry/current
+JavaScript/clconst/WebGLRenderingContext/CURRENT_PROGRAM
+JavaScript/clconst/WebGLRenderingContext/CURRENT_VERTEX_ATTRIB
+Objective-C/instm/NSAppleEventManager/currentAppleEvent
+Objective-C/clm/NSRunningApplication/currentApplication
+Objective-C/clm/NSCalendar/currentCalendar
+JavaScript/instm/InjectedScriptHost/currentCallFrame
+C++/instm/IOService/currentCapability
+Objective-C/clm/NSScriptCommand/currentCommand
+Objective-C/clm/NSAnimationContext/currentContext
+Objective-C/clm/NSOpenGLContext/currentContext
+Objective-C/clm/NSGraphicsContext/currentContext
+Objective-C/clm/NSGraphicsContext/currentContextDrawingToScreen
+Objective-C/instp/QLPreviewPanel/currentController
+Objective-C/instm/QLPreviewPanel/currentController
+Objective-C/clm/NSColor/currentControlTint
+Objective-C/clm/NSConnection/currentConversation
+Objective-C/clm/NSCursor/currentCursor
+Objective-C/instm/PDFView/currentDestination
+Objective-C/instm/NSDocumentController/currentDirectory
+Objective-C/instm/NSTask/currentDirectoryPath
+Objective-C/instm/NSFileManager/currentDirectoryPath
+Objective-C/instm/NSURLCache/currentDiskUsage
+Objective-C/instm/NSDocumentController/currentDocument
+Objective-C/instm/NSControl/currentEditor
+Objective-C/instm/NSMigrationManager/currentEntityMapping
+Objective-C/instm/NSWindow/currentEvent
+Objective-C/instm/NSApplication/currentEvent
+Objective-C/instm/NSFontManager/currentFontAction
+Objective-C/instm/QTMovie/currentFrameImage
+Objective-C/clm/NSAssertionHandler/currentHandler
+Objective-C/clm/NSHost/currentHost
+Objective-C/clm/NSTextInputContext/currentInputContext
+Objective-C/instm/WebBackForwardList/currentItem
+Objective-C/clm/NSLocale/currentLocale
+Objective-C/instm/NSURLCache/currentMemoryUsage
+Objective-C/intfm/NSColorPickingCustom/currentMode
+Objective-C/instm/NSRunLoop/currentMode
+JavaScript/data/TreeWalker/currentNode
+Objective-C/clm/NSPrintOperation/currentOperation
+Objective-C/instm/NSPrintOperation/currentPage
+Objective-C/instm/NSPDFImageRep/currentPage
+Objective-C/instm/PDFView/currentPage
+Objective-C/instm/NSTypesetter/currentParagraphStyle
+Objective-C/instm/NSBezierPath/currentPoint
+C++/instm/IOService/currentPowerConsumption
+C/data/-/currentPowerFlags
+C++/data/IOAudioDevice/currentPowerState
+Objective-C/instp/QLPreviewPanel/currentPreviewItem
+Objective-C/instm/QLPreviewPanel/currentPreviewItem
+Objective-C/instp/QLPreviewPanel/currentPreviewItemIndex
+Objective-C/instm/QLPreviewPanel/currentPreviewItemIndex
+Objective-C/instm/NSAnimation/currentProgress
+Objective-C/clm/NSOperationQueue/currentQueue
+Objective-C/instm/NSAppleEventManager/currentReplyAppleEvent
+Objective-C/clm/NSRunLoop/currentRunLoop
+Objective-C/clm/DRNotificationCenter/currentRunLoopCenter
+JavaScript/data/SVGSVGElement/currentScale
+Objective-C/instm/PDFView/currentSelection
+JavaScript/data/HTMLMediaElement/currentSrc
+Objective-C/clm/NSCursor/currentSystemCursor
+Objective-C/instm/NSApplication/currentSystemPresentationOptions
+JavaScript/data/Event/currentTarget
+Objective-C/instm/NSATSTypesetter/currentTextContainer
+Objective-C/instm/NSTypesetter/currentTextContainer
+Objective-C/clm/NSThread/currentThread
+Objective-C/intfm/FxCustomParameterActionAPI/currentTime
+Objective-C/instm/NSSound/currentTime
+Objective-C/instm/QTMovie/currentTime
+JavaScript/data/HTMLMediaElement/currentTime
+Objective-C/instm/IKImageView/currentToolMode
+Objective-C/instp/IKImageView/currentToolMode
+JavaScript/data/SVGSVGElement/currentTranslate
+Objective-C/instm/NSAnimation/currentValue
+Objective-C/instm/NSOpenGLContext/currentVirtualScreen
+C/func/-/CurResFile
+C/func/-/curs_add_wch
+C/func/-/curs_add_wchstr
+C/func/-/curs_addch
+C/func/-/curs_addchstr
+C/func/-/curs_addstr
+C/func/-/curs_addwstr
+C/func/-/curs_attr
+C/func/-/curs_beep
+C/func/-/curs_bkgd
+C/func/-/curs_bkgrnd
+C/func/-/curs_border
+C/func/-/curs_border_set
+C/func/-/curs_clear
+C/func/-/curs_color
+C/func/-/curs_delch
+C/func/-/curs_deleteln
+C/func/-/curs_extend
+C/func/-/curs_get_wch
+C/func/-/curs_get_wstr
+C/func/-/curs_getcchar
+C/func/-/curs_getch
+C/func/-/curs_getstr
+C/func/-/curs_getyx
+C/func/-/curs_in_wch
+C/func/-/curs_in_wchstr
+C/func/-/curs_inch
+C/func/-/curs_inchstr
+C/func/-/curs_initscr
+C/func/-/curs_inopts
+C/func/-/curs_ins_wch
+C/func/-/curs_ins_wstr
+C/func/-/curs_insch
+C/func/-/curs_insstr
+C/func/-/curs_instr
+C/func/-/curs_inwstr
+C/func/-/curs_kernel
+C/func/-/curs_legacy
+C/func/-/curs_memleaks
+C/func/-/curs_mouse
+C/func/-/curs_move
+C/func/-/curs_opaque
+C/func/-/curs_outopts
+C/func/-/curs_overlay
+C/func/-/curs_pad
+C/func/-/curs_print
+C/func/-/curs_printw
+C/func/-/curs_refresh
+C/func/-/curs_scanw
+C/func/-/curs_scr_dump
+C/func/-/curs_scroll
+C/func/-/curs_set
+C/func/-/curs_slk
+C/func/-/curs_termattrs
+C/func/-/curs_termcap
+C/func/-/curs_terminfo
+C/func/-/curs_threads
+C/func/-/curs_touch
+C/func/-/curs_trace
+C/func/-/curs_util
+C/func/-/curs_window
+C/func/-/curses_version
+Objective-C/instm/WebPreferences/cursiveFontFamily
+C/macro/-/CURSORHEIGHT
+C/tag/-/CursorParameters
+Objective-C/instm/NSResponder/cursorUpdate:
+C/macro/-/CURSORWIDTH
+C/func/-/CurveAddAtomToVectorStream
+C/func/-/CurveAddPathAtomToVectorStream
+C/func/-/CurveAddZeroAtomToVectorStream
+C/func/-/CurveCountPointsInPath
+C/func/-/CurveCreateVectorStream
+C/func/-/CurveGetAtomDataFromVectorStream
+C/func/-/CurveGetLength
+C/func/-/CurveGetNearestPathPoint
+C/func/-/CurveGetPathPoint
+C/func/-/CurveInsertPointIntoPath
+C/func/-/CurveLengthToPoint
+C/func/-/CurveNewPath
+C/func/-/CurvePathPointToLength
+C/func/-/CurveSetPathPoint
+Objective-C/instm/NSBezierPath/curveToPoint:controlPoint1:controlPoint2:
+JavaScript/instm/TestObj/customArgsAndException
+JavaScript/data/TestObj/customAttr
+Objective-C/instm/ODNode/customCall:sendData:error:
+JavaScript/instm/TestCallback/customCallback
+JavaScript/data/ValidityState/customError
+JavaScript/cl/-/CustomEvent
+Objective-C/instm/NSToolbar/customizationPaletteIsRunning
+JavaScript/instm/TestObj/customMethod
+JavaScript/instm/TestObj/customMethodWithArgs
+Objective-C/instm/NSComparisonPredicate/customSelector
+Objective-C/instm/WebView/customTextEncodingName
+Objective-C/instm/WebView/customUserAgent
+Objective-C/intfm/AUCustomViewPersistentData/customViewPersistentData
+Objective-C/instm/QTMovieView/cut:
+Objective-C/instm/WebView/cut:
+Objective-C/instm/NSText/cut:
+C/func/-/CutMovieSelection
+C/tdef/-/CVAttachmentMode
+C/func/-/CVBufferGetAttachment
+C/func/-/CVBufferGetAttachments
+C/func/-/CVBufferPropagateAttachments
+C/tdef/-/CVBufferRef
+C/func/-/CVBufferRelease
+C/func/-/CVBufferRemoveAllAttachments
+C/func/-/CVBufferRemoveAttachment
+C/func/-/CVBufferRetain
+C/func/-/CVBufferSetAttachment
+C/func/-/CVBufferSetAttachments
+C/func/-/CVDisplayLinkCreateWithActiveCGDisplays
+C/func/-/CVDisplayLinkCreateWithCGDisplay
+C/func/-/CVDisplayLinkCreateWithCGDisplays
+C/func/-/CVDisplayLinkCreateWithOpenGLDisplayMask
+C/func/-/CVDisplayLinkGetActualOutputVideoRefreshPeriod
+C/func/-/CVDisplayLinkGetCurrentCGDisplay
+C/func/-/CVDisplayLinkGetCurrentTime
+C/func/-/CVDisplayLinkGetNominalOutputVideoRefreshPeriod
+C/func/-/CVDisplayLinkGetOutputVideoLatency
+C/func/-/CVDisplayLinkGetTypeID
+C/func/-/CVDisplayLinkIsRunning
+C/tdef/-/CVDisplayLinkOutputCallback
+C/tdef/-/CVDisplayLinkRef
+C/func/-/CVDisplayLinkRelease
+C/func/-/CVDisplayLinkRetain
+C/func/-/CVDisplayLinkSetCurrentCGDisplay
+C/func/-/CVDisplayLinkSetCurrentCGDisplayFromOpenGLContext
+C/func/-/CVDisplayLinkSetOutputCallback
+C/func/-/CVDisplayLinkStart
+C/func/-/CVDisplayLinkStop
+C/func/-/CVDisplayLinkTranslateTime
+C/tdef/-/CVFillExtendedPixelsCallBack
+C/tdef/-/CVFillExtendedPixelsCallBackData
+C/func/-/CVGetCurrentHostTime
+C/func/-/CVGetHostClockFrequency
+C/func/-/CVGetHostClockMinimumTimeDelta
+C/func/-/CVImageBufferGetCleanRect
+C/func/-/CVImageBufferGetColorSpace
+C/func/-/CVImageBufferGetDisplaySize
+C/func/-/CVImageBufferGetEncodedSize
+C/tdef/-/CVImageBufferRef
+C/func/-/CVOpenGLBufferAttach
+C/func/-/CVOpenGLBufferCreate
+C/func/-/CVOpenGLBufferGetAttributes
+C/func/-/CVOpenGLBufferGetTypeID
+C/func/-/CVOpenGLBufferPoolCreate
+C/func/-/CVOpenGLBufferPoolCreateOpenGLBuffer
+C/func/-/CVOpenGLBufferPoolGetAttributes
+C/func/-/CVOpenGLBufferPoolGetOpenGLBufferAttributes
+C/func/-/CVOpenGLBufferPoolGetTypeID
+C/tdef/-/CVOpenGLBufferPoolRef
+C/func/-/CVOpenGLBufferPoolRelease
+C/func/-/CVOpenGLBufferPoolRetain
+C/tdef/-/CVOpenGLBufferRef
+C/func/-/CVOpenGLBufferRelease
+C/func/-/CVOpenGLBufferRetain
+C/func/-/CVOpenGLTextureCacheCreate
+C/func/-/CVOpenGLTextureCacheCreateTextureFromImage
+C/func/-/CVOpenGLTextureCacheFlush
+C/func/-/CVOpenGLTextureCacheGetTypeID
+C/tdef/-/CVOpenGLTextureCacheRef
+C/func/-/CVOpenGLTextureCacheRelease
+C/func/-/CVOpenGLTextureCacheRetain
+C/func/-/CVOpenGLTextureGetCleanTexCoords
+C/func/-/CVOpenGLTextureGetName
+C/func/-/CVOpenGLTextureGetTarget
+C/func/-/CVOpenGLTextureGetTypeID
+C/func/-/CVOpenGLTextureIsFlipped
+C/tdef/-/CVOpenGLTextureRef
+C/func/-/CVOpenGLTextureRelease
+C/func/-/CVOpenGLTextureRetain
+C/tdef/-/CVOptionFlags
+C/func/-/CVPixelBufferCreate
+C/func/-/CVPixelBufferCreateResolvedAttributesDictionary
+C/func/-/CVPixelBufferCreateWithBytes
+C/func/-/CVPixelBufferCreateWithPlanarBytes
+C/func/-/CVPixelBufferFillExtendedPixels
+C/func/-/CVPixelBufferGetBaseAddress
+C/func/-/CVPixelBufferGetBaseAddressOfPlane
+C/func/-/CVPixelBufferGetBytesPerRow
+C/func/-/CVPixelBufferGetBytesPerRowOfPlane
+C/func/-/CVPixelBufferGetDataSize
+C/func/-/CVPixelBufferGetExtendedPixels
+C/func/-/CVPixelBufferGetHeight
+C/func/-/CVPixelBufferGetHeightOfPlane
+C/func/-/CVPixelBufferGetPixelFormatType
+C/func/-/CVPixelBufferGetPlaneCount
+C/func/-/CVPixelBufferGetTypeID
+C/func/-/CVPixelBufferGetWidth
+C/func/-/CVPixelBufferGetWidthOfPlane
+C/func/-/CVPixelBufferIsPlanar
+C/func/-/CVPixelBufferLockBaseAddress
+C/tdef/-/CVPixelBufferLockFlags
+C/func/-/CVPixelBufferPoolCreate
+C/func/-/CVPixelBufferPoolCreatePixelBuffer
+C/func/-/CVPixelBufferPoolGetAttributes
+C/func/-/CVPixelBufferPoolGetPixelBufferAttributes
+C/func/-/CVPixelBufferPoolGetTypeID
+C/tdef/-/CVPixelBufferPoolRef
+C/func/-/CVPixelBufferPoolRelease
+C/func/-/CVPixelBufferPoolRetain
+C/tdef/-/CVPixelBufferRef
+C/func/-/CVPixelBufferRelease
+C/tdef/-/CVPixelBufferReleaseBytesCallback
+C/tdef/-/CVPixelBufferReleasePlanarBytesCallback
+C/func/-/CVPixelBufferRetain
+C/func/-/CVPixelBufferUnlockBaseAddress
+C/func/-/CVPixelFormatDescriptionArrayCreateWithAllPixelFormatTypes
+C/func/-/CVPixelFormatDescriptionCreateWithPixelFormatType
+C/func/-/CVPixelFormatDescriptionRegisterDescriptionWithPixelFormatType
+C/tdef/-/CVPlanarComponentInfo
+C/tag/-/CVPlanarComponentInfo
+C/tag/-/CVPlanarPixelBufferInfo
+C/tdef/-/CVPlanarPixelBufferInfo
+C/tdef/-/CVPlanarPixelBufferInfo_YCbCrPlanar
+C/tag/-/CVPlanarPixelBufferInfo_YCbCrPlanar
+C/tdef/-/CVReturn
+C/tdef/-/CVSMPTETime
+C/tag/-/CVSMPTETime
+C/tdef/-/CVTime
+C/tdef/-/CVTimeStamp
+JavaScript/clconst/WebGLRenderingContext/CW
+Objective-C/cl/-/CW8021XProfile
+C/func/-/CWCheckBitmap
+C/func/-/CWCheckColors
+C/func/-/CWCheckPixMap
+C/func/-/CWConcatColorWorld
+Objective-C/cl/-/CWConfiguration
+C/func/-/CWDisposeColorWorld
+C/tdef/-/CWErr
+C/func/-/CWFillLookupTexture
+Objective-C/cl/-/CWInterface
+C/tdef/-/CWInterfaceState
+C/func/-/CWMatchBitmap
+C/func/-/CWMatchColors
+C/func/-/CWMatchPixMap
+Objective-C/cl/-/CWNetwork
+C/func/-/CWNewLinkProfile
+C/tdef/-/CWOpMode
+C/tdef/-/CWPHYMode
+C/tdef/-/CWScanType
+C/tdef/-/CWSecurityMode
+Objective-C/cl/-/CWWirelessProfile
+JavaScript/data/SVGCircleElement/cx
+JavaScript/data/SVGEllipseElement/cx
+JavaScript/data/SVGRadialGradientElement/cx
+JavaScript/data/SVGCircleElement/cy
+JavaScript/data/SVGEllipseElement/cy
+JavaScript/data/SVGRadialGradientElement/cy
+Objective-C/clm/NSColor/cyanColor
+Objective-C/instm/NSColor/cyanComponent
+JavaScript/data/SVGMatrix/d
+JavaScript/data/WebKitCSSMatrix/d
+C/func/-/d2i_509_CRL_fp
+C/func/-/d2i_ASN1_OBJECT
+C/func/-/d2i_DHparams
+C/func/-/d2i_DSA_PUBKEY
+C/func/-/d2i_DSA_SIG
+C/func/-/d2i_DSAparams
+C/func/-/d2i_DSAPrivateKey
+C/func/-/d2i_DSAPublicKey
+C/func/-/d2i_ECDSA_SIG
+C/func/-/d2i_Netscape_RSA
+C/func/-/d2i_PKCS8PrivateKey
+C/func/-/d2i_PKCS8PrivateKey_bio
+C/func/-/d2i_PKCS8PrivateKey_fp
+C/func/-/d2i_RSA_PUBKEY
+C/func/-/d2i_RSAPrivateKey
+C/func/-/d2i_RSAPublicKey
+C/func/-/d2i_SSL_SESSION
+C/func/-/d2i_X509
+C/func/-/d2i_X509_ALGOR
+C/func/-/d2i_X509_bio
+C/func/-/d2i_X509_CRL
+C/func/-/d2i_X509_CRL_bio
+C/func/-/d2i_X509_CRL_fp
+C/func/-/d2i_X509_fp
+C/func/-/d2i_X509_NAME
+C/func/-/d2i_X509_REQ
+C/func/-/d2i_X509_REQ_bio
+C/func/-/d2i_X509_REQ_fp
+C/func/-/d2i_X509_SIG
+C/func/-/DAApprovalSessionCreate
+C/func/-/DAApprovalSessionGetTypeID
+C/tdef/-/DAApprovalSessionRef
+C/func/-/DAApprovalSessionScheduleWithRunLoop
+C/func/-/DAApprovalSessionUnscheduleFromRunLoop
+C/tdef/-/DADiskAppearedCallback
+C/func/-/DADiskClaim
+C/tdef/-/DADiskClaimCallback
+C/tag/-/DADiskClaimOptions
+C/tdef/-/DADiskClaimReleaseCallback
+C/func/-/DADiskCopyDescription
+C/func/-/DADiskCopyIOMedia
+C/func/-/DADiskCopyWholeDisk
+C/func/-/DADiskCreateFromBSDName
+C/func/-/DADiskCreateFromIOMedia
+C/tdef/-/DADiskDescriptionChangedCallback
+C/tdef/-/DADiskDisappearedCallback
+C/func/-/DADiskEject
+C/tdef/-/DADiskEjectApprovalCallback
+C/tdef/-/DADiskEjectCallback
+C/tag/-/DADiskEjectOptions
+C/func/-/DADiskGetBSDName
+C/func/-/DADiskGetOptions
+C/func/-/DADiskGetTypeID
+C/func/-/DADiskIsClaimed
+C/func/-/DADiskMount
+C/tdef/-/DADiskMountApprovalCallback
+C/tdef/-/DADiskMountCallback
+C/tag/-/DADiskMountOptions
+C/func/-/DADiskMountWithArguments
+C/tag/-/DADiskOptions
+C/tdef/-/DADiskPeekCallback
+C/tdef/-/DADiskRef
+C/func/-/DADiskRename
+C/tdef/-/DADiskRenameCallback
+C/tag/-/DADiskRenameOptions
+C/func/-/DADiskSetOptions
+C/func/-/DADiskUnclaim
+C/func/-/DADiskUnmount
+C/tdef/-/DADiskUnmountApprovalCallback
+C/tdef/-/DADiskUnmountCallback
+C/tag/-/DADiskUnmountOptions
+C/func/-/DADissenterCreate
+C/func/-/DADissenterGetStatus
+C/func/-/DADissenterGetStatusString
+C/tdef/-/DADissenterRef
+C/func/-/daemon
+C/func/-/DARegisterDiskAppearedCallback
+C/func/-/DARegisterDiskDescriptionChangedCallback
+C/func/-/DARegisterDiskDisappearedCallback
+C/func/-/DARegisterDiskEjectApprovalCallback
+C/func/-/DARegisterDiskMountApprovalCallback
+C/func/-/DARegisterDiskPeekCallback
+C/func/-/DARegisterDiskUnmountApprovalCallback
+C/tag/-/DAReturn
+Objective-C/clm/NSColor/darkGrayColor
+C/tdef/-/DASDModeParameterBlockDescriptor
+C/func/-/DASessionCreate
+C/func/-/DASessionGetTypeID
+C/tdef/-/DASessionRef
+C/func/-/DASessionScheduleWithRunLoop
+C/func/-/DASessionUnscheduleFromRunLoop
+Objective-C/clm/NSTextCheckingResult/dashCheckingResultWithRange:replacementString:
+Objective-C/instm/PDFBorder/dashPattern
+Objective-C/instm/NSAppleEventDescriptor/data
+Objective-C/instm/NSCachedURLResponse/data
+Objective-C/instm/WebDataSource/data
+Objective-C/instm/WebResource/data
+Objective-C/instm/WebArchive/data
+Objective-C/instm/NSTimeZone/data
+Objective-C/instp/PSContent/data
+Objective-C/binding/NSImageCell/data
+Objective-C/binding/NSImageView/data
+Objective-C/binding/NSTextView/data
+C/tdef/-/data
+Objective-C/clm/NSData/data
+JavaScript/data/CompositionEvent/data
+JavaScript/data/CharacterData/data
+JavaScript/data/HTMLObjectElement/data
+JavaScript/data/ImageData/data
+JavaScript/data/MessageEvent/data
+JavaScript/data/ProcessingInstruction/data
+JavaScript/data/TextEvent/data
+Objective-C/instm/NSEvent/data1
+Objective-C/instm/NSEvent/data2
+JavaScript/clconst/IDBDatabaseException/DATA_ERR
+C/macro/-/DATA_QUEUE_ENTRY_HEADER_SIZE
+C/macro/-/DATA_QUEUE_MEMORY_APPENDIX_SIZE
+C/macro/-/DATA_QUEUE_MEMORY_HEADER_SIZE
+JavaScript/cl/-/Database
+JavaScript/cl/-/DatabaseCallback
+JavaScript/instm/InjectedScriptHost/databaseForId
+JavaScript/cl/-/DatabaseSync
+C/tdef/-/DataBrowserAcceptDragProcPtr
+C/tdef/-/DataBrowserAccessibilityInfoV0
+C/tdef/-/DataBrowserAccessibilityInfoV1
+C/tdef/-/DataBrowserAddDragItemProcPtr
+C/tdef/-/DataBrowserCallbacks
+C/func/-/DataBrowserChangeAttributes
+C/tdef/-/DataBrowserCustomCallbacks
+C/tdef/-/DataBrowserDragFlags
+C/tdef/-/DataBrowserDrawItemProcPtr
+C/tdef/-/DataBrowserEditCommand
+C/tdef/-/DataBrowserEditItemProcPtr
+C/func/-/DataBrowserGetAttributes
+C/tdef/-/DataBrowserGetContextualMenuProcPtr
+C/func/-/DataBrowserGetMetric
+C/tdef/-/DataBrowserHitTestProcPtr
+C/tdef/-/DataBrowserItemAcceptDragProcPtr
+C/tdef/-/DataBrowserItemCompareProcPtr
+C/tdef/-/DataBrowserItemDataProcPtr
+C/tdef/-/DataBrowserItemDataRef
+C/tdef/-/DataBrowserItemDragRgnProcPtr
+C/tdef/-/DataBrowserItemHelpContentProcPtr
+C/tdef/-/DataBrowserItemID
+C/tdef/-/DataBrowserItemNotification
+C/tdef/-/DataBrowserItemNotificationProcPtr
+C/tdef/-/DataBrowserItemNotificationWithItemProcPtr
+C/tdef/-/DataBrowserItemProcPtr
+C/tdef/-/DataBrowserItemReceiveDragProcPtr
+C/tdef/-/DataBrowserItemState
+C/tdef/-/DataBrowserListViewColumnDesc
+C/tdef/-/DataBrowserListViewHeaderDesc
+C/tdef/-/DataBrowserListViewPropertyFlags
+C/tdef/-/DataBrowserMetric
+C/tdef/-/DataBrowserPostProcessDragProcPtr
+C/tdef/-/DataBrowserPropertyDesc
+C/tdef/-/DataBrowserPropertyFlags
+C/tdef/-/DataBrowserPropertyID
+C/tdef/-/DataBrowserPropertyPart
+C/tdef/-/DataBrowserPropertyType
+C/tdef/-/DataBrowserReceiveDragProcPtr
+C/tdef/-/DataBrowserRevealOptions
+C/tdef/-/DataBrowserSelectContextualMenuProcPtr
+C/tdef/-/DataBrowserSelectionAnchorDirection
+C/tdef/-/DataBrowserSelectionFlags
+C/func/-/DataBrowserSetMetric
+C/tdef/-/DataBrowserSetOption
+C/tdef/-/DataBrowserSortOrder
+C/tdef/-/DataBrowserTableViewColumnDesc
+C/tdef/-/DataBrowserTableViewColumnID
+C/tdef/-/DataBrowserTableViewColumnIndex
+C/tdef/-/DataBrowserTableViewHiliteStyle
+C/tdef/-/DataBrowserTableViewPropertyFlags
+C/tdef/-/DataBrowserTableViewRowIndex
+C/tdef/-/DataBrowserTrackingProcPtr
+C/tdef/-/DataBrowserTrackingResult
+C/tdef/-/DataBrowserViewStyle
+Objective-C/instm/NSTableColumn/dataCell
+Objective-C/instm/NSTableColumn/dataCellForRow:
+C/func/-/DataCodecBeginInterruptSafe
+C/tdef/-/DataCodecComponent
+C/func/-/DataCodecCompress
+C/func/-/DataCodecCompressPartial
+C/func/-/DataCodecDecompress
+C/func/-/DataCodecDecompressPartial
+C/func/-/DataCodecEndInterruptSafe
+C/func/-/DataCodecGetCompressBufferSize
+Objective-C/instm/NSUserDefaults/dataForKey:
+Objective-C/instm/NSPasteboardItem/dataForType:
+Objective-C/instm/NSPasteboard/dataForType:
+Objective-C/clm/NSPropertyListSerialization/dataFromPropertyList:format:errorDescription:
+Objective-C/instm/NSAttributedString/dataFromRange:documentAttributes:error:
+Objective-C/clm/NSNetService/dataFromTXTRecordDictionary:
+JavaScript/cl/-/DataGridColumn
+JavaScript/cl/-/DataGridColumnList
+C/func/-/DataHAddMovie
+C/tdef/-/DataHandler
+C/tdef/-/DataHandlerComponent
+C/func/-/DataHAppend64
+C/func/-/DataHCanUseDataRef
+C/func/-/DataHCloseForRead
+C/func/-/DataHCloseForWrite
+C/func/-/DataHCompareDataRef
+C/tdef/-/DataHCompletionProc
+C/tdef/-/DataHCompletionUPP
+C/func/-/DataHCreateFile
+C/func/-/DataHCreateFileWithFlags
+C/func/-/DataHDeleteFile
+C/func/-/DataHDoesBuffer
+C/tdef/-/DataHFileTypeOrderingHandle
+C/tdef/-/DataHFileTypeOrderingPtr
+C/func/-/DataHFinishData
+C/func/-/DataHFlushCache
+C/func/-/DataHFlushData
+C/func/-/DataHGetAvailableFileSize
+C/func/-/DataHGetCacheSizeLimit
+C/func/-/DataHGetData
+C/func/-/DataHGetDataAvailability
+C/func/-/DataHGetDataInBuffer
+C/func/-/DataHGetDataRate
+C/func/-/DataHGetDataRef
+C/func/-/DataHGetDataRefAsType
+C/func/-/DataHGetDataRefExtension
+C/func/-/DataHGetDataRefWithAnchor
+C/func/-/DataHGetDeviceIndex
+C/func/-/DataHGetFileName
+C/func/-/DataHGetFileSize
+C/func/-/DataHGetFileSize64
+C/func/-/DataHGetFileSizeAsync
+C/func/-/DataHGetFileTypeOrdering
+C/func/-/DataHGetFreeSpace
+C/func/-/DataHGetFreeSpace64
+C/func/-/DataHGetInfo
+C/func/-/DataHGetInfoFlags
+C/func/-/DataHGetMacOSFileType
+C/func/-/DataHGetMIMEType
+C/func/-/DataHGetMIMETypeAsync
+C/func/-/DataHGetMovie
+C/func/-/DataHGetMovieWithFlags
+C/func/-/DataHGetPreferredBlockSize
+C/func/-/DataHGetScheduleAheadTime
+C/func/-/DataHGetTemporaryDataRefCapabilities
+C/func/-/DataHGetVolumeList
+C/func/-/DataHIsStreamingDataHandler
+C/func/-/DataHOpenForRead
+C/func/-/DataHOpenForWrite
+C/func/-/DataHPlaybackHints
+C/func/-/DataHPlaybackHints64
+C/func/-/DataHPollRead
+C/func/-/DataHPreextend
+C/func/-/DataHPreextend64
+C/func/-/DataHPutData
+C/func/-/DataHReadAsync
+C/func/-/DataHRenameFile
+C/func/-/DataHResolveDataRef
+C/func/-/DataHScheduleData
+C/func/-/DataHScheduleData64
+C/tdef/-/DataHSchedulePtr
+C/tag/-/DataHScheduleRecord
+C/func/-/DataHSetCacheSizeLimit
+C/func/-/DataHSetDataRef
+C/func/-/DataHSetDataRefExtension
+C/func/-/DataHSetDataRefWithAnchor
+C/func/-/DataHSetFileSize
+C/func/-/DataHSetFileSize64
+C/func/-/DataHSetIdleManager
+C/func/-/DataHSetMacOSFileType
+C/func/-/DataHSetMovieUsageFlags
+C/func/-/DataHSetTimeBase
+C/func/-/DataHSetTimeHints
+C/func/-/DataHTask
+C/func/-/DataHUpdateMovie
+C/func/-/DataHUseTemporaryDataRef
+C/tdef/-/DataHVolumeList
+C/tdef/-/DataHVolumeListPtr
+C/func/-/DataHWrite
+C/func/-/DataHWrite64
+Objective-C/instm/NSDocument/dataOfType:error:
+Objective-C/instm/FxBitmap/dataPtr
+Objective-C/instm/FxBitmap/dataPtrForPositionX:Y:
+C/tag/-/DataRateParams
+C/tdef/-/DataRateParamsPtr
+Objective-C/instm/QTDataReference/dataRef
+Objective-C/instm/QTDataReference/dataRefData
+Objective-C/clm/QTDataReference/dataReferenceWithDataRef:type:
+Objective-C/clm/QTDataReference/dataReferenceWithDataRefData:type:
+Objective-C/clm/QTDataReference/dataReferenceWithReferenceToData:
+Objective-C/clm/QTDataReference/dataReferenceWithReferenceToData:name:MIMEType:
+Objective-C/clm/QTDataReference/dataReferenceWithReferenceToFile:
+Objective-C/clm/QTDataReference/dataReferenceWithReferenceToURL:
+Objective-C/instm/QTDataReference/dataRefType
+Objective-C/instm/PDFPage/dataRepresentation
+Objective-C/instm/PDFDocument/dataRepresentation
+Objective-C/instm/NSDocument/dataRepresentationOfType:
+Objective-C/instm/ISyncSessionDriver/dataSource
+Objective-C/instm/NSComboBox/dataSource
+Objective-C/instm/WebFrame/dataSource
+Objective-C/instm/NSComboBoxCell/dataSource
+Objective-C/instp/QLPreviewPanel/dataSource
+Objective-C/instm/QLPreviewPanel/dataSource
+Objective-C/instm/IKImageBrowserView/dataSource
+Objective-C/instm/IKImageEditPanel/dataSource
+Objective-C/instp/IKImageEditPanel/dataSource
+Objective-C/instm/NSTableView/dataSource
+Objective-C/instm/NSOutlineView/dataSource
+JavaScript/data/HTMLDataGridElement/dataSource
+Objective-C/intfm/WebDocumentView/dataSourceUpdated:
+JavaScript/data/MouseEvent/dataTransfer
+Objective-C/instm/NSString/dataUsingEncoding:
+Objective-C/instm/NSString/dataUsingEncoding:allowLossyConversion:
+Objective-C/clm/NSData/dataWithBytes:length:
+Objective-C/clm/NSData/dataWithBytesNoCopy:length:
+Objective-C/clm/NSData/dataWithBytesNoCopy:length:freeWhenDone:
+Objective-C/clm/NSMutableData/dataWithCapacity:
+Objective-C/clm/NSData/dataWithContentsOfFile:
+Objective-C/clm/NSData/dataWithContentsOfFile:options:error:
+Objective-C/clm/NSData/dataWithContentsOfMappedFile:
+Objective-C/clm/NSData/dataWithContentsOfURL:
+Objective-C/clm/NSData/dataWithContentsOfURL:options:error:
+Objective-C/clm/NSData/dataWithData:
+Objective-C/instm/NSWindow/dataWithEPSInsideRect:
+Objective-C/instm/NSView/dataWithEPSInsideRect:
+Objective-C/clm/NSMutableData/dataWithLength:
+Objective-C/instm/NSWindow/dataWithPDFInsideRect:
+Objective-C/instm/NSView/dataWithPDFInsideRect:
+Objective-C/clm/NSPropertyListSerialization/dataWithPropertyList:format:options:error:
+Objective-C/instm/NSTextCheckingResult/date
+Objective-C/instp/NSTextCheckingResult/date
+Objective-C/clm/NSDate/date
+Objective-C/instm/NSCalendar/dateByAddingComponents:toDate:options:
+Objective-C/instm/NSDate/dateByAddingTimeInterval:
+Objective-C/clm/NSTextCheckingResult/dateCheckingResultWithRange:date:
+Objective-C/clm/NSTextCheckingResult/dateCheckingResultWithRange:date:timeZone:duration:
+Objective-C/instp/PSEntry/dateCreated
+Objective-C/instp/PSEntry/dateForDisplay
+Objective-C/instm/NSDateFormatter/dateFormat
+Objective-C/clm/NSDateFormatter/dateFormatFromTemplate:options:locale:
+Objective-C/instm/NSCalendar/dateFromComponents:
+Objective-C/instm/NSDateFormatter/dateFromString:
+Objective-C/instp/PSClient/dateLastUpdated
+Objective-C/intfm/NSDatePickerCellDelegate/datePickerCell:validateProposedDateValue:timeInterval:
+Objective-C/instm/NSDatePicker/datePickerElements
+Objective-C/instm/NSDatePickerCell/datePickerElements
+Objective-C/instm/NSDatePicker/datePickerMode
+Objective-C/instm/NSDatePickerCell/datePickerMode
+Objective-C/instm/NSDatePicker/datePickerStyle
+Objective-C/instm/NSDatePickerCell/datePickerStyle
+Objective-C/instp/PSEntry/datePublished
+Objective-C/instm/CalCalendarItem/dateStamp
+Objective-C/instp/CalCalendarItem/dateStamp
+Objective-C/instm/XGJob/dateStarted
+Objective-C/instm/XGJob/dateStopped
+Objective-C/instm/NSDateFormatter/dateStyle
+Objective-C/instm/XGJob/dateSubmitted
+JavaScript/data/HTMLModElement/dateTime
+Objective-C/instp/PSFeed/dateUpdated
+Objective-C/instp/PSEntry/dateUpdated
+Objective-C/instm/NSDatePicker/dateValue
+Objective-C/instm/NSDatePickerCell/dateValue
+Objective-C/instm/NSDate/dateWithCalendarFormat:timeZone:
+Objective-C/clm/NSDate/dateWithNaturalLanguageString:
+Objective-C/clm/NSDate/dateWithNaturalLanguageString:locale:
+Objective-C/clm/NSDate/dateWithString:
+Objective-C/clm/NSDate/dateWithTimeInterval:sinceDate:
+Objective-C/clm/NSDate/dateWithTimeIntervalSince1970:
+Objective-C/clm/NSDate/dateWithTimeIntervalSinceNow:
+Objective-C/clm/NSDate/dateWithTimeIntervalSinceReferenceDate:
+C/func/-/DAUnregisterApprovalCallback
+C/func/-/DAUnregisterCallback
+Objective-C/instm/NSDateComponents/day
+Objective-C/instm/NSTimeZone/daylightSavingTimeOffset
+Objective-C/instm/NSTimeZone/daylightSavingTimeOffsetForDate:
+Objective-C/instm/CalNthWeekDay/dayOfTheWeek
+Objective-C/instp/CalNthWeekDay/dayOfTheWeek
+Objective-C/instp/CalRecurrenceRule/daysOfTheMonth
+Objective-C/instm/CalRecurrenceRule/daysOfTheMonth
+Objective-C/instm/CalRecurrenceRule/daysOfTheWeek
+Objective-C/instp/CalRecurrenceRule/daysOfTheWeek
+C/func/-/db
+C++/macro/-/dbdmaOutputSegment
+C/func/-/DBE
+JavaScript/clconst/Event/DBLCLICK
+C/func/-/dbm
+C/func/-/dbm_clearerr
+C/func/-/dbm_close
+C/func/-/dbm_delete
+C/func/-/dbm_dirfno
+C/func/-/dbm_error
+C/func/-/dbm_fetch
+C/func/-/dbm_firstkey
+C/func/-/dbm_nextkey
+C/func/-/dbm_open
+C/func/-/dbm_store
+C/func/-/dbopen
+C/func/-/DCSCopyTextDefinition
+C/tdef/-/DCSDictionaryRef
+C/func/-/DCSGetTermRangeInString
+C/econst/-/dDSBeginPlugInCustom
+Objective-C/instm/NSColorWell/deactivate
+Objective-C/instm/NSTextInputContext/deactivate
+Objective-C/instm/NSApplication/deactivate
+C++/instm/IOFWAddressSpace/deactivate
+C++/instm/IOAudioDevice/deactivateAllAudioEngines
+C++/instm/IOAudioPort/deactivateAudioControls
+JavaScript/instm/InspectorBackend/deactivateBreakpoints
+Objective-C/intfm/IMKStateSetting/deactivateServer:
+JavaScript/clconst/IDBDatabaseException/DEADLOCK_ERR
+C++/clm/IORegistryEntry/dealiasPath
+Objective-C/instm/NSProxy/dealloc
+Objective-C/instm/NSObject/dealloc
+Objective-C/instm/NSManagedObject/dealloc
+C++/instm/IORangeAllocator/deallocate
+C++/instm/IOFireWireSBP2ORB/deallocatePageTable
+C++/instm/IOFireWireSerialBusProtocolTransport/DeallocateResources
+Objective-C/instm/SFAuthorizationView/deauthorize:
+C++/instm/IOBlockStorageDriver/deblockRequest
+JavaScript/instm/Console/debug
+C/macro/-/DEBUG_MEMORY
+C/macro/-/DEBUG_MEMORY_LOCATION
+C++/clm/IOKernelDebugger/debugger
+C/func/-/Debugger
+Objective-C/clm/NSCharacterSet/decimalDigitCharacterSet
+Objective-C/instm/NSDecimalNumber/decimalNumberByAdding:
+Objective-C/instm/NSDecimalNumber/decimalNumberByAdding:withBehavior:
+Objective-C/instm/NSDecimalNumber/decimalNumberByDividingBy:
+Objective-C/instm/NSDecimalNumber/decimalNumberByDividingBy:withBehavior:
+Objective-C/instm/NSDecimalNumber/decimalNumberByMultiplyingBy:
+Objective-C/instm/NSDecimalNumber/decimalNumberByMultiplyingBy:withBehavior:
+Objective-C/instm/NSDecimalNumber/decimalNumberByMultiplyingByPowerOf10:
+Objective-C/instm/NSDecimalNumber/decimalNumberByMultiplyingByPowerOf10:withBehavior:
+Objective-C/instm/NSDecimalNumber/decimalNumberByRaisingToPower:
+Objective-C/instm/NSDecimalNumber/decimalNumberByRaisingToPower:withBehavior:
+Objective-C/instm/NSDecimalNumber/decimalNumberByRoundingAccordingToBehavior:
+Objective-C/instm/NSDecimalNumber/decimalNumberBySubtracting:
+Objective-C/instm/NSDecimalNumber/decimalNumberBySubtracting:withBehavior:
+Objective-C/clm/NSDecimalNumberHandler/decimalNumberHandlerWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:
+Objective-C/clm/NSDecimalNumber/decimalNumberWithDecimal:
+Objective-C/clm/NSDecimalNumber/decimalNumberWithMantissa:exponent:isNegative:
+Objective-C/clm/NSDecimalNumber/decimalNumberWithString:
+Objective-C/clm/NSDecimalNumber/decimalNumberWithString:locale:
+Objective-C/instm/NSNumberFormatter/decimalSeparator
+Objective-C/instm/NSDecimalNumber/decimalValue
+Objective-C/instm/NSNumber/decimalValue
+JavaScript/data/HTMLObjectElement/declare
+Objective-C/instm/NSPasteboard/declareTypes:owner:
+Objective-C/instm/NSCoder/decodeArrayOfObjCType:count:at:
+Objective-C/instm/NSCoder/decodeBoolForKey:
+Objective-C/instm/NSKeyedUnarchiver/decodeBoolForKey:
+Objective-C/instm/NSCoder/decodeBytesForKey:returnedLength:
+Objective-C/instm/NSKeyedUnarchiver/decodeBytesForKey:returnedLength:
+Objective-C/instm/NSCoder/decodeBytesWithReturnedLength:
+Objective-C/clm/NSUnarchiver/decodeClassName:asClassName:
+Objective-C/instm/NSUnarchiver/decodeClassName:asClassName:
+Objective-C/instm/NSCoder/decodeDataObject
+Objective-C/instm/NSCoder/decodeDoubleForKey:
+Objective-C/instm/NSKeyedUnarchiver/decodeDoubleForKey:
+Objective-C/instm/NSCoder/decodeFloatForKey:
+Objective-C/instm/NSKeyedUnarchiver/decodeFloatForKey:
+Objective-C/instm/NSCoder/decodeInt32ForKey:
+Objective-C/instm/NSKeyedUnarchiver/decodeInt32ForKey:
+Objective-C/instm/NSCoder/decodeInt64ForKey:
+Objective-C/instm/NSKeyedUnarchiver/decodeInt64ForKey:
+Objective-C/instm/NSCoder/decodeIntegerForKey:
+Objective-C/instm/NSCoder/decodeIntForKey:
+Objective-C/instm/NSKeyedUnarchiver/decodeIntForKey:
+Objective-C/instm/NSCoder/decodeNXColor
+Objective-C/instm/NSCoder/decodeNXObject
+Objective-C/instm/NSCoder/decodeObject
+Objective-C/instm/NSCoder/decodeObjectForKey:
+Objective-C/instm/NSKeyedUnarchiver/decodeObjectForKey:
+Objective-C/instm/NSCoder/decodePoint
+Objective-C/instm/NSCoder/decodePointForKey:
+Objective-C/instm/NSPortCoder/decodePortObject
+Objective-C/instm/NSCoder/decodePropertyList
+Objective-C/instm/NSCoder/decodeQTTimeForKey:
+Objective-C/instm/NSCoder/decodeQTTimeRangeForKey:
+Objective-C/instm/NSCoder/decodeRect
+Objective-C/instm/NSCoder/decodeRectForKey:
+Objective-C/instm/NSCoder/decodeSize
+Objective-C/instm/NSCoder/decodeSizeForKey:
+Objective-C/instm/NSCoder/decodeSMPTETimeForKey:
+Objective-C/instm/QTSampleBuffer/decodeTime
+Objective-C/instm/NSCoder/decodeValueOfObjCType:at:
+Objective-C/instm/NSCoder/decodeValuesOfObjCTypes:
+C++/instm/IOBlockStorageDriver/decommissionMedia
+Objective-C/clm/NSCharacterSet/decomposableCharacterSet
+Objective-C/instm/NSString/decomposedStringWithCanonicalMapping
+Objective-C/instm/NSString/decomposedStringWithCompatibilityMapping
+C/func/-/DecompressImage
+C/tdef/-/DecompressorComponent
+C/func/-/DecompressSequenceBegin
+C/func/-/DecompressSequenceBeginS
+C/func/-/DecompressSequenceFrame
+C/func/-/DecompressSequenceFrameS
+C/func/-/DecompressSequenceFrameWhen
+JavaScript/clconst/WebGLRenderingContext/DECR
+JavaScript/clconst/WebGLRenderingContext/DECR_WRAP
+Objective-C/instm/QTSampleBuffer/decrementSampleUseCount
+JavaScript/cl/-/DedicatedWorkerContext
+Objective-C/clm/NSScreen/deepestScreen
+Objective-C/instm/NSWindow/deepestScreen
+C/func/-/def_prog_mode
+C/func/-/def_shell_mode
+C/func/-/default_colors
+C/func/-/default_store
+Objective-C/clm/CALayer/defaultActionForKey:
+Objective-C/intfcm/NSAnimatablePropertyContainer/defaultAnimationForKey:
+Objective-C/instm/NSLayoutManager/defaultAttachmentScaling
+C++/data/IOAudioEngine/defaultAudioControls
+Objective-C/instm/NSLayoutManager/defaultBaselineOffsetForFont:
+Objective-C/clm/NSDecimalNumber/defaultBehavior
+Objective-C/instm/NSWindow/defaultButtonCell
+Objective-C/instm/NSPrintPanel/defaultButtonTitle
+Objective-C/clm/CalCalendarStore/defaultCalendarStore
+Objective-C/clm/NSDistributedNotificationCenter/defaultCenter
+Objective-C/clm/NSNotificationCenter/defaultCenter
+JavaScript/data/Document/defaultCharset
+JavaScript/data/HTMLInputElement/defaultChecked
+Objective-C/clm/PSFeedSettings/defaultClientSettings
+Objective-C/clm/NSGarbageCollector/defaultCollector
+C/func/-/DefaultColormap
+C/func/-/DefaultColormapOfScreen
+Objective-C/instm/NSBrowser/defaultColumnWidth
+Objective-C/clm/NSTokenFieldCell/defaultCompletionDelay
+Objective-C/clm/NSTokenField/defaultCompletionDelay
+C/econst/-/defaultComponentAnyFlags
+C/econst/-/defaultComponentAnyFlagsAnyManufacturer
+C/econst/-/defaultComponentAnyFlagsAnyManufacturerAnySubType
+C/econst/-/defaultComponentAnyManufacturer
+C/econst/-/defaultComponentAnySubType
+C/econst/-/defaultComponentIdentical
+Objective-C/clm/NSConnection/defaultConnection
+Objective-C/clm/XGController(XGControllerCreation)/defaultController
+Objective-C/clm/IOBluetoothHostController/defaultController
+Objective-C/instm/ABAddressBook/defaultCountryCode
+Objective-C/instm/NSURLCredentialStorage/defaultCredentialForProtectionSpace:
+Objective-C/clm/NSString/defaultCStringEncoding
+Objective-C/instm/NSDateFormatter/defaultDate
+Objective-C/clm/NSDecimalNumberHandler/defaultDecimalNumberHandler
+C/func/-/DefaultDepth
+Objective-C/clm/NSWindow/defaultDepthLimit
+C/func/-/DefaultDepthOfScreen
+Objective-C/intfm/ApertureExportPlugIn/defaultDirectory
+Objective-C/clm/NSExceptionHandler/defaultExceptionHandler
+Objective-C/clm/PSFeedSettings/defaultFeedSettings
+Objective-C/instm/NSObjectController/defaultFetchRequest
+Objective-C/instm/WebPreferences/defaultFixedFontSize
+Objective-C/clm/NSBezierPath/defaultFlatness
+Objective-C/clm/NSView/defaultFocusRingType
+Objective-C/clm/NSCell/defaultFocusRingType
+Objective-C/instm/WebPreferences/defaultFontSize
+Objective-C/clm/NSDateFormatter/defaultFormatterBehavior
+Objective-C/clm/NSNumberFormatter/defaultFormatterBehavior
+C/func/-/DefaultGC
+C/func/-/DefaultGCOfScreen
+Objective-C/instm/XGController/defaultGrid
+Objective-C/clm/CBIdentityAuthority/defaultIdentityAuthority
+Objective-C/clm/QTCaptureDevice/defaultInputDeviceWithMediaType:
+Objective-C/clm/NSBezierPath/defaultLineCapStyle
+Objective-C/instm/NSFont/defaultLineHeightForFont
+Objective-C/instm/NSLayoutManager/defaultLineHeightForFont:
+Objective-C/clm/NSBezierPath/defaultLineJoinStyle
+Objective-C/clm/NSBezierPath/defaultLineWidth
+Objective-C/clm/NSFileManager/defaultManager
+Objective-C/clm/NSView/defaultMenu
+Objective-C/clm/NSCell/defaultMenu
+Objective-C/clm/NSBezierPath/defaultMiterLimit
+Objective-C/instm/ABAddressBook/defaultNameOrdering
+Objective-C/instm/NSSocketPortNameServer/defaultNameServerPortNumber
+Objective-C/clm/NSParagraphStyle/defaultParagraphStyle
+Objective-C/instm/NSTextView/defaultParagraphStyle
+Objective-C/clm/NSOpenGLView/defaultPixelFormat
+Objective-C/clm/NSObject/defaultPlaceholderForMarker:withBinding:
+JavaScript/data/HTMLMediaElement/defaultPlaybackRate
+JavaScript/data/Event/defaultPrevented
+Objective-C/clm/NSPrintInfo/defaultPrinter
+Objective-C/clm/NSNotificationQueue/defaultQueue
+C/func/-/DefaultRootWindow
+Objective-C/instm/NSUserDefaultsController/defaults
+C/func/-/DefaultScreen
+C/func/-/DefaultScreenOfDisplay
+JavaScript/data/HTMLOptionElement/defaultSelected
+Objective-C/clm/ODSession/defaultSession
+Objective-C/clm/ScreenSaverDefaults/defaultsForModuleWithName:
+JavaScript/data/DOMWindow/defaultStatus
+Objective-C/instm/NSScriptClassDescription/defaultSubcontainerAttributeKey
+Objective-C/instm/NSParagraphStyle/defaultTabInterval
+Objective-C/instm/WebPreferences/defaultTextEncodingName
+Objective-C/clm/NSTimeZone/defaultTimeZone
+Objective-C/clm/NSTokenFieldCell/defaultTokenizingCharacterSet
+Objective-C/clm/NSTokenField/defaultTokenizingCharacterSet
+Objective-C/instm/NSDocumentController/defaultType
+Objective-C/clm/NSTypesetter/defaultTypesetterBehavior
+Objective-C/instm/NSAttributeDescription/defaultValue
+JavaScript/data/HTMLTextAreaElement/defaultValue
+JavaScript/data/HTMLInputElement/defaultValue
+Objective-C/clm/CAAnimation/defaultValueForKey:
+Objective-C/clm/CAEmitterCell/defaultValueForKey:
+Objective-C/clm/CALayer/defaultValueForKey:
+JavaScript/data/Document/defaultView
+C/func/-/DefaultVisual
+C/func/-/DefaultVisualOfScreen
+Objective-C/clm/NSSpeechSynthesizer/defaultVoice
+Objective-C/clm/NSBezierPath/defaultWindingRule
+Objective-C/clm/NSParagraphStyle/defaultWritingDirectionForLanguage:
+JavaScript/data/HTMLScriptElement/defer
+C/func/-/define_key
+Objective-C/instm/CIImage/definition
+Objective-C/instm/CISampler/definition
+Objective-C/instm/AMAction/definition
+C/func/-/del_curterm
+C/func/-/delay_output
+C/func/-/delch
+Objective-C/instm/SFAuthorizationView/delegate
+Objective-C/instm/AMWorkflowController/delegate
+Objective-C/instm/QCCompositionPickerView/delegate
+Objective-C/instm/QCCompositionParameterView/delegate
+Objective-C/instm/NSCustomImageRep/delegate
+Objective-C/instm/NSExceptionHandler/delegate
+Objective-C/instm/SBApplication/delegate
+Objective-C/instm/NSFontManager/delegate
+Objective-C/instm/PDFDocument/delegate
+Objective-C/instm/PDFView/delegate
+Objective-C/instm/CAAnimation/delegate
+Objective-C/instp/CAAnimation/delegate
+Objective-C/instm/NSDatePicker/delegate
+Objective-C/instm/NSSavePanel/delegate
+Objective-C/instm/ISyncSessionDriver/delegate
+Objective-C/instm/QTCaptureDecompressedAudioOutput/delegate
+Objective-C/instm/NSComboBox/delegate
+Objective-C/instm/QTCaptureFileOutput/delegate
+Objective-C/instm/QTCaptureVideoPreviewOutput/delegate
+Objective-C/instm/NSAnimation/delegate
+Objective-C/instm/QTCaptureView/delegate
+Objective-C/instm/NSMatrix/delegate
+Objective-C/instm/NSDatePickerCell/delegate
+Objective-C/instm/NSDrawer/delegate
+Objective-C/instm/NSAlert/delegate
+Objective-C/instm/NSLayoutManager/delegate
+Objective-C/instm/NSStream/delegate
+Objective-C/instm/NSTokenFieldCell/delegate
+Objective-C/instm/NSMetadataQuery/delegate
+Objective-C/instm/NSTextStorage/delegate
+Objective-C/instm/NSSpellServer/delegate
+Objective-C/instm/NSSpeechRecognizer/delegate
+Objective-C/instm/NSNetServiceBrowser/delegate
+Objective-C/instm/NSTokenField/delegate
+Objective-C/instm/NSNetService/delegate
+Objective-C/instm/NSSpeechSynthesizer/delegate
+Objective-C/instm/NSBrowser/delegate
+Objective-C/instm/ODQuery/delegate
+Objective-C/instp/ODQuery/delegate
+Objective-C/instm/NSSound/delegate
+Objective-C/instm/NSPathCell/delegate
+Objective-C/instp/QLPreviewPanel/delegate
+Objective-C/instm/QLPreviewPanel/delegate
+Objective-C/instm/NSTabView/delegate
+Objective-C/instm/NSTextField/delegate
+Objective-C/instp/PSClient/delegate
+Objective-C/instm/XGAuthenticator/delegate
+Objective-C/instm/IKImageBrowserView/delegate
+Objective-C/instp/NSServerNotificationCenter/delegate
+Objective-C/instm/NSServerNotificationCenter/delegate
+Objective-C/instm/XGConnection/delegate
+Objective-C/instm/XGFileDownload/delegate
+Objective-C/instm/NSToolbar/delegate
+Objective-C/instm/NSConnection/delegate
+Objective-C/instm/NSCollectionView/delegate
+Objective-C/instm/NSRuleEditor/delegate
+Objective-C/instm/IOBluetoothHostController/delegate
+Objective-C/instm/OBEXFileTransferServices/delegate
+Objective-C/instm/IOBluetoothDeviceInquiry/delegate
+Objective-C/instm/NSSplitView/delegate
+Objective-C/instm/NSTextView/delegate
+Objective-C/instm/NSImage/delegate
+Objective-C/instm/NSTableView/delegate
+Objective-C/instm/NSWindow/delegate
+Objective-C/instm/NSPathControl/delegate
+Objective-C/instm/QTMovie/delegate
+Objective-C/instm/QTCaptureDecompressedVideoOutput/delegate
+Objective-C/instm/QTMovieView/delegate
+Objective-C/instp/IKCameraDeviceView/delegate
+Objective-C/instp/IKDeviceBrowserView/delegate
+Objective-C/instm/NSOutlineView/delegate
+Objective-C/instm/IKSaveOptions/delegate
+Objective-C/instm/IKScannerDeviceView/delegate
+Objective-C/instm/NSApplication/delegate
+Objective-C/instp/IKSaveOptions/delegate
+Objective-C/instm/IKDeviceBrowserView/delegate
+Objective-C/instp/IKScannerDeviceView/delegate
+Objective-C/instm/IKCameraDeviceView/delegate
+Objective-C/instm/NSMenu/delegate
+Objective-C/instm/NSText/delegate
+Objective-C/instp/CLLocationManager/delegate
+Objective-C/instm/CLLocationManager/delegate
+Objective-C/instm/NSKeyedArchiver/delegate
+Objective-C/instm/NSKeyedUnarchiver/delegate
+Objective-C/instm/NSPort/delegate
+Objective-C/instm/NSCache/delegate
+Objective-C/instm/NSMachPort/delegate
+Objective-C/instm/NSXMLParser/delegate
+Objective-C/instm/NSFileManager/delegate
+Objective-C/instm/IKImageView/delegate
+Objective-C/instp/CALayer/delegate
+Objective-C/instm/CALayer/delegate
+Objective-C/instp/IKImageView/delegate
+Objective-C/instm/IMKInputController/delegate;
+C/func/-/DelegateComponentCall
+Objective-C/instm/QTMovieView/delete:
+Objective-C/instm/WebView/delete:
+Objective-C/instm/NSText/delete:
+JavaScript/clconst/WebGLRenderingContext/DELETE_STATUS
+Objective-C/instm/NSObject/deleteAllRecordsForEntityName:error:
+Objective-C/instm/NSResponder/deleteBackward:
+Objective-C/instm/NSResponder/deleteBackwardByDecomposingPreviousCharacter:
+JavaScript/instm/WebGLRenderingContext/deleteBuffer
+JavaScript/instm/HTMLTableElement/deleteCaption
+JavaScript/instm/HTMLTableRowElement/deleteCell
+Objective-C/instm/NSMutableString/deleteCharactersInRange:
+Objective-C/instm/NSMutableAttributedString/deleteCharactersInRange:
+JavaScript/instm/Range/deleteContents
+C++/instm/IOBlockStorageDriver/deleteContext
+JavaScript/instm/InspectorBackend/deleteCookie
+Objective-C/instm/NSHTTPCookieStorage/deleteCookie:
+JavaScript/instm/CharacterData/deleteData
+Objective-C/instm/NSManagedObjectContext/deletedObjects
+Objective-C/instm/NSResponder/deleteForward:
+JavaScript/instm/WebGLRenderingContext/deleteFramebuffer
+JavaScript/instm/DOMSelection/deleteFromDocument
+C/func/-/DeleteGestaltValue
+Objective-C/instm/NSATSTypesetter/deleteGlyphsInRange:
+Objective-C/instm/NSLayoutManager/deleteGlyphsInRange:
+Objective-C/instm/NSTypesetter/deleteGlyphsInRange:
+C/func/-/deleteln
+JavaScript/instm/MediaList/deleteMedium
+C/func/-/DeleteMovieSegment
+Objective-C/instm/NSManagedObjectContext/deleteObject:
+JavaScript/instm/WebGLRenderingContext/deleteProgram
+Objective-C/instm/ODRecord/deleteRecordAndReturnError:
+Objective-C/instm/ISyncSession/deleteRecordWithIdentifier:
+JavaScript/instm/WebGLRenderingContext/deleteRenderbuffer
+JavaScript/instm/HTMLTableSectionElement/deleteRow
+JavaScript/instm/HTMLTableElement/deleteRow
+Objective-C/instm/NSRelationshipDescription/deleteRule
+JavaScript/instm/CSSMediaRule/deleteRule
+JavaScript/instm/CSSStyleSheet/deleteRule
+JavaScript/instm/WebKitCSSKeyframesRule/deleteRule
+Objective-C/instm/QTTrack/deleteSegment:
+Objective-C/instm/QTMovie/deleteSegment:
+Objective-C/instm/IKCameraDeviceView/deleteSelectedItems:
+Objective-C/instm/WebView/deleteSelection
+Objective-C/instm/NSURLDownload/deletesFileUponFailure
+JavaScript/instm/WebGLRenderingContext/deleteShader
+JavaScript/instm/WebGLRenderingContext/deleteTexture
+JavaScript/instm/HTMLTableElement/deleteTFoot
+JavaScript/instm/HTMLTableElement/deleteTHead
+Objective-C/instm/NSResponder/deleteToBeginningOfLine:
+Objective-C/instm/NSResponder/deleteToBeginningOfParagraph:
+Objective-C/instm/NSResponder/deleteToEndOfLine:
+Objective-C/instm/NSResponder/deleteToEndOfParagraph:
+Objective-C/instm/NSResponder/deleteToMark:
+C/func/-/DeleteTrackReference
+C/func/-/DeleteTrackSegment
+Objective-C/intfm/ApertureEditManager/deleteVersions:
+Objective-C/instm/NSResponder/deleteWordBackward:
+Objective-C/instm/NSResponder/deleteWordForward:
+C/tdef/-/DelimiterInfo
+Objective-C/instm/NSPrintOperation/deliverResult
+C/func/-/delscreen
+Objective-C/instm/NSEvent/deltaX
+Objective-C/instm/NSEvent/deltaY
+Objective-C/instm/NSEvent/deltaZ
+C/func/-/delwin
+Objective-C/instm/NSWindow/deminiaturize:
+Objective-C/instm/NSOperation/dependencies
+Objective-C/instm/FxImage/depth
+Objective-C/instm/NSScreen/depth
+JavaScript/data/WebGLContextAttributes/depth
+JavaScript/clconst/WebGLRenderingContext/DEPTH_ATTACHMENT
+JavaScript/clconst/WebGLRenderingContext/DEPTH_BITS
+JavaScript/clconst/WebGLRenderingContext/DEPTH_BUFFER_BIT
+JavaScript/clconst/WebGLRenderingContext/DEPTH_CLEAR_VALUE
+JavaScript/clconst/WebGLRenderingContext/DEPTH_COMPONENT
+JavaScript/clconst/WebGLRenderingContext/DEPTH_COMPONENT16
+JavaScript/clconst/WebGLRenderingContext/DEPTH_FUNC
+JavaScript/clconst/WebGLRenderingContext/DEPTH_RANGE
+JavaScript/clconst/WebGLRenderingContext/DEPTH_STENCIL
+JavaScript/clconst/WebGLRenderingContext/DEPTH_STENCIL_ATTACHMENT
+JavaScript/clconst/WebGLRenderingContext/DEPTH_TEST
+JavaScript/clconst/WebGLRenderingContext/DEPTH_WRITEMASK
+JavaScript/instm/WebGLRenderingContext/depthFunc
+Objective-C/instm/NSWindow/depthLimit
+JavaScript/instm/WebGLRenderingContext/depthMask
+JavaScript/instm/WebGLRenderingContext/depthRange
+C++/instm/IOSharedDataQueue/dequeue
+C++/instm/IOPacketQueue/dequeue
+C++/instm/IOPacketQueue/dequeueAll
+C++/instm/IOStream/dequeueInputEntry
+Objective-C/instm/NSNotificationQueue/dequeueNotificationsMatching:coalesceMask:
+C/func/-/DequeueOutputEntry
+C++/instm/IOService/deRegisterInterestedDriver
+C/func/-/derwin
+C/func/-/des
+C/func/-/DES_cbc_cksum
+C/func/-/DES_cfb64_encrypt
+C/func/-/DES_cfb_encrypt
+C/func/-/DES_crypt
+C/func/-/DES_ecb2_encrypt
+C/func/-/DES_ecb3_encrypt
+C/func/-/DES_ecb_encrypt
+C/func/-/DES_ede2_cbc_encrypt
+C/func/-/DES_ede2_cfb64_encrypt
+C/func/-/DES_ede2_ofb64_encrypt
+C/func/-/DES_ede3_cbc_encrypt
+C/func/-/DES_ede3_cbcm_encrypt
+C/func/-/DES_ede3_cfb64_encrypt
+C/func/-/DES_ede3_ofb64_encrypt
+C/func/-/DES_enc_read
+C/func/-/DES_enc_write
+C/func/-/DES_fcrypt
+C/func/-/DES_is_weak_key
+C/func/-/DES_key_sched
+C/func/-/DES_ncbc_encrypt
+C/func/-/DES_ofb64_encrypt
+C/func/-/DES_ofb_encrypt
+C/func/-/DES_pcbc_encrypt
+C/func/-/DES_quad_cksum
+C/func/-/DES_random_key
+C/func/-/des_read_2passwords
+C/func/-/des_read_password
+C/func/-/des_read_pw
+C/func/-/des_read_pw_string
+C/func/-/DES_set_key
+C/func/-/DES_set_key_checked
+C/func/-/DES_set_key_unchecked
+C/func/-/DES_set_odd_parity
+C/func/-/DES_string_to_2keys
+C/func/-/DES_string_to_key
+C/func/-/DES_xcbc_encrypt
+Objective-C/instm/NSTreeNode/descendantNodeAtIndexPath:
+Objective-C/instm/NSFont/descender
+Objective-C/instm/NSProxy/description
+Objective-C/instm/NSTimeZone/description
+Objective-C/instm/DREraseProgressPanel/description
+Objective-C/instm/DRBurnProgressPanel/description
+Objective-C/instm/DRMSF/description
+Objective-C/instm/NSDictionary/description
+Objective-C/instm/NSSet/description
+Objective-C/instm/NSXMLNode/description
+Objective-C/intfm/NSObject/description
+Objective-C/clm/NSObject/description
+Objective-C/instm/NSArray/description
+Objective-C/instm/NSString/description
+Objective-C/instm/NSDate/description
+Objective-C/instm/NSData/description
+Objective-C/instm/CLLocation/description
+JavaScript/data/MimeType/description
+JavaScript/data/Plugin/description
+Objective-C/instp/NSPointerFunctions/descriptionFunction
+Objective-C/instm/NSPointerFunctions/descriptionFunction
+Objective-C/instm/NSDictionary/descriptionInStringsFileFormat
+Objective-C/instm/NSDate/descriptionWithCalendarFormat:timeZone:locale:
+Objective-C/instm/DRMSF/descriptionWithFormat:
+Objective-C/instm/NSDecimalNumber/descriptionWithLocale:
+Objective-C/instm/NSNumber/descriptionWithLocale:
+Objective-C/instm/NSDictionary/descriptionWithLocale:
+Objective-C/instm/NSSet/descriptionWithLocale:
+Objective-C/instm/NSArray/descriptionWithLocale:
+Objective-C/instm/NSDate/descriptionWithLocale:
+Objective-C/instm/NSDictionary/descriptionWithLocale:indent:
+Objective-C/instm/NSArray/descriptionWithLocale:indent:
+Objective-C/instm/NSScriptObjectSpecifier/descriptor
+Objective-C/instm/NSAppleEventDescriptor/descriptorAtIndex:
+Objective-C/instm/NSAppleEventDescriptor/descriptorForKeyword:
+Objective-C/instm/NSAppleEventDescriptor/descriptorType
+Objective-C/clm/NSAppleEventDescriptor/descriptorWithBoolean:
+Objective-C/clm/NSAppleEventDescriptor/descriptorWithDescriptorType:bytes:length:
+Objective-C/clm/NSAppleEventDescriptor/descriptorWithDescriptorType:data:
+Objective-C/clm/NSAppleEventDescriptor/descriptorWithEnumCode:
+Objective-C/clm/NSAppleEventDescriptor/descriptorWithInt32:
+Objective-C/clm/NSAppleEventDescriptor/descriptorWithString:
+Objective-C/clm/NSAppleEventDescriptor/descriptorWithTypeCode:
+Objective-C/intfm/WebDocumentText/deselectAll
+JavaScript/instm/SVGSVGElement/deselectAll
+Objective-C/instm/ABPeoplePickerView/deselectAll:
+Objective-C/instm/NSTableView/deselectAll:
+Objective-C/instm/NSMatrix/deselectAllCells
+Objective-C/instm/NSTableView/deselectColumn:
+Objective-C/instm/ABPeoplePickerView/deselectGroup:
+Objective-C/instm/ABPeoplePickerView/deselectIdentifier:forPerson:
+Objective-C/instm/NSComboBox/deselectItemAtIndex:
+Objective-C/instm/NSComboBoxCell/deselectItemAtIndex:
+Objective-C/instm/ABPeoplePickerView/deselectRecord:
+Objective-C/instm/NSTableView/deselectRow:
+Objective-C/instm/NSMatrix/deselectSelectedCell
+Objective-C/intfm/NSObjCTypeSerializationCallBack/deserializeObjectAt:ofObjCType:fromData:atCursor:
+Objective-C/clm/NSDeserializer/deserializePropertyListFromData:atCursor:mutableContainers:
+Objective-C/clm/NSDeserializer/deserializePropertyListFromData:mutableContainers:
+Objective-C/clm/NSDeserializer/deserializePropertyListLazilyFromData:atCursor:length:mutableContainers:
+JavaScript/data/HTMLDocument/designMode
+Objective-C/instp/CLLocationManager/desiredAccuracy
+Objective-C/instm/CLLocationManager/desiredAccuracy
+C/data/-/desiredDomainState
+Objective-C/instm/NSWorkspace/desktopImageOptionsForScreen:
+Objective-C/instm/NSWorkspace/desktopImageURLForScreen:
+Objective-C/instm/PDFAnnotationLink/destination
+Objective-C/instm/NSNibConnector/destination
+Objective-C/instm/PDFOutline/destination
+Objective-C/instm/PDFActionGoTo/destination
+Objective-C/instm/XGFileDownload/destination
+Objective-C/instm/NSMigrationManager/destinationContext
+Objective-C/instm/NSRelationshipDescription/destinationEntity
+Objective-C/instm/NSMigrationManager/destinationEntityForEntityMapping:
+Objective-C/instm/NSEntityMapping/destinationEntityName
+Objective-C/instm/NSEntityMapping/destinationEntityVersionHash
+Objective-C/instm/NSMigrationManager/destinationInstancesForEntityMappingNamed:sourceInstances:
+Objective-C/instm/NSMigrationManager/destinationModel
+Objective-C/instm/NSFileManager/destinationOfSymbolicLinkAtPath:error:
+Objective-C/intfm/ApertureExportPlugIn/destinationPath
+C/func/-/destroy_fftsetup
+C/func/-/destroy_fftsetupD
+C++/instm/IOAGPDevice/destroyAGPSpace
+Objective-C/instm/NSPrintOperation/destroyContext
+C/func/-/DestroyEffect
+C++/instm/IOStream/destroyQueues
+C++/instm/IOSCSIParallelInterfaceController/DestroyTargetForID
+Objective-C/instm/NSXMLNode/detach
+C++/instm/IOService/detach
+JavaScript/instm/Range/detach
+JavaScript/instm/NodeIterator/detach
+C++/instm/IORegistryEntry/detachAbove
+C++/instm/IORegistryEntry/detachAll
+C++/instm/IOAudioDevice/detachAllAudioPorts
+Objective-C/instm/NSColorPicker/detachColorList:
+Objective-C/instm/NSColorPanel/detachColorList:
+Objective-C/intfm/NSColorPickingDefault/detachColorList:
+C++/instm/IONetworkController/detachDebuggerClient
+Objective-C/clm/NSApplication/detachDrawingThread:toTarget:withObject:
+C++/instm/IORegistryEntry/detachFromChild
+Objective-C/instm/QTMovie/detachFromCurrentThread
+C++/instm/IONetworkInterface/detachFromDataLinkLayer
+C++/instm/IORegistryEntry/detachFromParent
+C++/instm/IONetworkController/detachInterface
+Objective-C/clm/NSThread/detachNewThreadSelector:toTarget:withObject:
+C/func/-/DetachResource
+C/func/-/DetachResourceFile
+JavaScript/instm/WebGLRenderingContext/detachShader
+Objective-C/instm/NSMenuView/detachSubmenu
+C++/clm/IOAudioControl/detachUserClientsAction
+JavaScript/data/CustomEvent/detail
+JavaScript/data/UIEvent/detail
+Objective-C/instm/SFCertificateView/detailsDisplayed
+Objective-C/instm/NSManagedObjectContext/detectConflictsForObject:
+Objective-C/instm/NSBundle/developmentLocalization
+Objective-C/instp/NSTouch/device
+Objective-C/instm/QTCaptureDeviceInput/device
+Objective-C/instm/NSTouch/device
+Objective-C/instm/DRBurn/device
+Objective-C/instm/DRErase/device
+Objective-C/instm/IOBluetoothDevicePair/device
+Objective-C/instp/IOBluetoothSDPServiceRecord/device
+Objective-C/instm/QTCaptureDevice/deviceAttributes
+Objective-C/intfm/IKDeviceBrowserViewDelegate/deviceBrowserView:didEncounterError:
+Objective-C/intfm/IKDeviceBrowserViewDelegate/deviceBrowserView:selectionDidChange:
+Objective-C/clm/NSColorSpace/deviceCMYKColorSpace
+Objective-C/instm/NSPrinter/deviceDescription
+Objective-C/instm/NSScreen/deviceDescription
+Objective-C/instm/NSWindow/deviceDescription
+Objective-C/clm/DRDevice/deviceForBSDName:
+Objective-C/clm/DRDevice/deviceForIORegistryEntryPath:
+Objective-C/clm/NSColorSpace/deviceGrayColorSpace
+Objective-C/instm/NSEvent/deviceID
+Objective-C/clm/QTCaptureDeviceInput/deviceInputWithDevice:
+Objective-C/instm/NSObject(IOBluetoothDeviceInquiryDelegate)/deviceInquiryComplete:error:aborted:
+Objective-C/instm/NSObject(IOBluetoothDeviceInquiryDelegate)/deviceInquiryDeviceFound:device:
+Objective-C/instm/NSObject(IOBluetoothDeviceInquiryDelegate)/deviceInquiryDeviceNameUpdated:device:devicesRemaining:
+Objective-C/instm/NSObject(IOBluetoothDeviceInquiryDelegate)/deviceInquiryStarted:
+Objective-C/instm/NSObject(IOBluetoothDeviceInquiryDelegate)/deviceInquiryUpdatingDeviceNamesStarted:devicesRemaining:
+JavaScript/data/DOMWindow/devicePixelRatio
+C++/instm/IOUSBInterface/DeviceRequest
+C++/instm/IOUSBController/DeviceRequest
+C++/instm/IOUSBDevice/DeviceRequest
+Objective-C/clm/NSColorSpace/deviceRGBColorSpace
+Objective-C/clm/DRDevice/devices
+Objective-C/instm/DRSetupPanel/deviceSelectionChanged:
+Objective-C/clm/IOBluetoothDeviceSelectorController/deviceSelector
+Objective-C/instm/NSTouch/deviceSize
+Objective-C/instp/NSTouch/deviceSize
+C++/data/IOAudioEngine/deviceStartedAudioEngine
+Objective-C/clm/QTCaptureDevice/deviceWithUniqueID:
+C/func/-/devname
+C/func/-/devname_r
+C/econst/-/dfClipToTextBox
+C/econst/-/dfDontAutoScale
+C/econst/-/dfDontDisplay
+C/econst/-/dfHorizScroll
+C/econst/-/dfReverseScroll
+C/econst/-/dfScrollIn
+C/econst/-/dfScrollOut
+C/econst/-/dfShrinkTextBoxToFit
+C/econst/-/dfUseMovieBGColor
+C/func/-/dh
+C/func/-/DH_check
+C/func/-/DH_compute_key
+C/func/-/DH_free
+C/func/-/DH_generate_key
+C/func/-/DH_generate_parameters
+C/func/-/DH_get_default_method
+C/func/-/DH_get_ex_data
+C/func/-/DH_get_ex_new_index
+C/func/-/DH_new
+C/func/-/DH_new_method
+C/func/-/DH_OpenSSL
+C/func/-/DH_set_default_method
+C/func/-/DH_set_ex_data
+C/func/-/DH_set_method
+C/func/-/DH_size
+C/func/-/DHCPInfoGetLeaseStartTime
+C/func/-/DHCPInfoGetOptionData
+C/func/-/DHparams_print
+C/func/-/DHparams_print_fp
+C/tdef/-/DialogPtr
+C/tdef/-/DialogRef
+Objective-C/instm/NSPrintInfo/dictionary
+Objective-C/clm/NSDictionary/dictionary
+Objective-C/instm/NSUserDefaults/dictionaryForKey:
+Objective-C/clm/NSNetService/dictionaryFromTXTRecordData:
+Objective-C/instm/NSMapTable/dictionaryRepresentation
+Objective-C/instm/NSUserDefaults/dictionaryRepresentation
+Objective-C/clm/NSMutableDictionary/dictionaryWithCapacity:
+Objective-C/clm/NSDictionary/dictionaryWithContentsOfFile:
+Objective-C/clm/NSDictionary/dictionaryWithContentsOfURL:
+Objective-C/clm/NSDictionary/dictionaryWithDictionary:
+Objective-C/clm/NSDictionary/dictionaryWithObject:forKey:
+Objective-C/clm/NSDictionary/dictionaryWithObjects:forKeys:
+Objective-C/clm/NSDictionary/dictionaryWithObjects:forKeys:count:
+Objective-C/clm/NSDictionary/dictionaryWithObjectsAndKeys:
+C++/instm/IORegistryEntry/dictionaryWithProperties
+Objective-C/instm/NSObject/dictionaryWithValuesForKeys:
+Objective-C/instm/NSManagedObject/didAccessValueForKey:
+Objective-C/instm/SFAuthorizationPluginView/didActivate
+Objective-C/instm/NSView/didAddSubview:
+Objective-C/instm/NSPersistentStore/didAddToPersistentStoreCoordinator:
+Objective-C/instm/NSObject/didChange:valuesAtIndexes:forKey:
+Objective-C/instm/NSArrayController/didChangeArrangementCriteria
+Objective-C/instm/NSTextView/didChangeText
+Objective-C/instm/NSObject/didChangeValueForKey:
+Objective-C/instm/NSManagedObject/didChangeValueForKey:
+Objective-C/instm/NSObject/didChangeValueForKey:withSetMutation:usingObjects:
+Objective-C/instm/NSManagedObject/didChangeValueForKey:withSetMutation:usingObjects:
+Objective-C/instm/NSObject/didCommandBySelector:client:
+JavaScript/instm/InjectedScriptHost/didCreateWorker
+Objective-C/instm/SFAuthorizationPluginView/didDeactivate
+C/func/-/DidDeactivate
+JavaScript/instm/InjectedScriptHost/didDestroyWorker
+JavaScript/instm/InspectorBackend/didEvaluateForTestInFrontend
+Objective-C/instm/AMAction/didFinishRunningWithError:
+Objective-C/instm/IBPlugin/didLoad
+Objective-C/instm/NSURLHandle/didLoadBytes:loadComplete:
+Objective-C/instm/NSObject/didMatchString:
+Objective-C/instm/NSManagedObject/didSave
+Objective-C/instm/NSPreferencePane/didSelect
+C++/instm/IOService/didTerminate
+Objective-C/instm/NSManagedObject/didTurnIntoFault
+Objective-C/instm/NSPreferencePane/didUnselect
+Objective-C/instm/QCPlugIn/didValueForInputKeyChange:
+C++/instm/IOService/didYouWakeSystem
+C/func/-/difftime
+JavaScript/data/SVGFEDiffuseLightingElement/diffuseConstant
+C/econst/-/diffVolErr
+C/econst/-/digiInDoesBW
+C/econst/-/digiInDoesColor
+C/econst/-/digiInDoesComponent
+C/econst/-/digiInDoesComposite
+C/econst/-/digiInDoesGenLock
+C/econst/-/digiInDoesNTSC
+C/econst/-/digiInDoesPAL
+C/econst/-/digiInDoesSECAM
+C/econst/-/digiInSignalLock
+C/econst/-/digiInVTR_Broadcast
+C/econst/-/digiOutDoes1
+C/econst/-/digiOutDoes16
+C/econst/-/digiOutDoes2
+C/econst/-/digiOutDoes32
+C/econst/-/digiOutDoes4
+C/econst/-/digiOutDoes8
+C/econst/-/digiOutDoesAsyncGrabs
+C/econst/-/digiOutDoesBlend
+C/econst/-/digiOutDoesCompress
+C/econst/-/digiOutDoesCompressOnly
+C/econst/-/digiOutDoesDither
+C/econst/-/digiOutDoesDouble
+C/econst/-/digiOutDoesHorizFlip
+C/econst/-/digiOutDoesHWPlayThru
+C/econst/-/digiOutDoesILUT
+C/econst/-/digiOutDoesKeyColor
+C/econst/-/digiOutDoesMask
+C/econst/-/digiOutDoesPlayThruDuringCompress
+C/econst/-/digiOutDoesQuad
+C/econst/-/digiOutDoesQuarter
+C/econst/-/digiOutDoesRotate
+C/econst/-/digiOutDoesShrink
+C/econst/-/digiOutDoesSixteenth
+C/econst/-/digiOutDoesSkew
+C/econst/-/digiOutDoesStretch
+C/econst/-/digiOutDoesUnreadableScreenBits
+C/econst/-/digiOutDoesVertFlip
+C/econst/-/digiOutDoesWarp
+C/tag/-/DigitizerInfo
+C/func/-/digittoint
+C/func/-/digittoint_l
+C/econst/-/digiUnimpErr
+JavaScript/instm/Console/dir
+JavaScript/data/HTMLDocument/dir
+JavaScript/data/HTMLElement/dir
+C/func/-/DirCreate
+Objective-C/instm/NSSavePanel/directory
+C/func/-/directory
+Objective-C/instm/NSDirectoryEnumerator/directoryAttributes
+Objective-C/instm/NSFileManager/directoryContentsAtPath:
+Objective-C/instm/NSSavePanel/directoryURL
+Objective-C/instm/NSScriptCommand/directParameter
+C/func/-/dirfd
+C/econst/-/dirFulErr
+C/tdef/-/DirInfo
+C/func/-/dirname
+C/econst/-/dirNFErr
+JavaScript/instm/Console/dirxml
+Objective-C/instm/NSGarbageCollector/disable
+Objective-C/instm/FxTexture/disable
+C++/instm/IONetworkController/disable
+C++/instm/IOEventSource/disable
+C++/instm/ATATimerEventSource/disable
+C++/instm/IOCommandGate/disable
+C++/instm/IOInterruptEventSource/disable
+C++/instm/IONotifier/disable
+C++/instm/IOTimerEventSource/disable
+JavaScript/instm/WebGLRenderingContext/disable
+Objective-C/clm/CATransaction/disableActions
+C++/instm/IOWorkLoop/disableAllEventSources
+C++/instm/IOWorkLoop/disableAllInterrupts
+Objective-C/instm/NSGarbageCollector/disableCollectorForPointer:
+Objective-C/instm/NSWindow/disableCursorRects
+JavaScript/data/HTMLOptionElement/disabled
+JavaScript/data/HTMLStyleElement/disabled
+JavaScript/data/HTMLButtonElement/disabled
+JavaScript/data/HTMLTextAreaElement/disabled
+JavaScript/data/HTMLOptGroupElement/disabled
+JavaScript/data/HTMLDataGridElement/disabled
+JavaScript/data/HTMLSelectElement/disabled
+JavaScript/data/HTMLLinkElement/disabled
+JavaScript/data/HTMLInputElement/disabled
+JavaScript/data/StyleSheet/disabled
+Objective-C/clm/NSColor/disabledControlTextColor
+JavaScript/instm/InspectorBackend/disableDebugger
+Objective-C/instm/QCPlugIn/disableExecution:
+Objective-C/instm/NSWindow/disableFlushWindow
+C++/instm/IOSCSIParallelInterfaceController/DisableInterrupt
+C++/instm/IOService/disableInterrupt
+C++/instm/IOFilterInterruptEventSource/disableInterruptOccurred
+C++/instm/IOInterruptEventSource/disableInterruptOccurred
+Objective-C/instm/NSWindow/disableKeyEquivalentForDefaultButtonCell
+C++/instm/IOEthernetController/disablePacketFilter
+C++/instm/IONetworkController/disablePacketFilter
+JavaScript/instm/InspectorBackend/disableProfiler
+JavaScript/instm/InspectorBackend/disableResourceTracking
+Objective-C/instm/NSWindow/disableScreenUpdatesUntilFlush
+JavaScript/instm/InspectorBackend/disableSearchingForNode
+Objective-C/instm/NSProcessInfo/disableSuddenTermination
+Objective-C/instm/NSUndoManager/disableUndoRegistration
+Objective-C/instm/NSMetadataQuery/disableUpdates
+JavaScript/instm/WebGLRenderingContext/disableVertexAttribArray
+Objective-C/clm/NSCursor/disappearingItemCursor
+Objective-C/instm/CWInterface/disassociate
+C++/instm/IOFilterScheme/discard
+C++/instm/IOBlockStorageDriver/discard
+C++/instm/IOMedia/discard
+C++/instm/IOPartitionScheme/discard
+C++/instm/IOStorage/discard
+Objective-C/instm/NSWindow/discardCachedImage
+Objective-C/intfm/NSDiscardableContent/discardContentIfPossible
+Objective-C/instm/NSWindow/discardCursorRects
+Objective-C/instm/NSView/discardCursorRects
+Objective-C/instm/NSController/discardEditing
+Objective-C/instm/NSViewController/discardEditing
+Objective-C/instm/NSObject/discardEditing
+Objective-C/instm/NSWindow/discardEventsMatchingMask:beforeEvent:
+Objective-C/instm/NSApplication/discardEventsMatchingMask:beforeEvent:
+Objective-C/instm/NSTextInputContext/discardMarkedText
+Objective-C/instm/CIFilterGenerator/disconnectObject:withKey:toObject:withKey:
+Objective-C/instp/CWConfiguration/disconnectOnLogout
+Objective-C/instm/IOBluetoothServiceBrowserController/discover:
+Objective-C/instm/IOBluetoothServiceBrowserController/discoverAsSheetForWindow:withRecord:
+Objective-C/instm/IOBluetoothServiceBrowserController/discoverWithDeviceAttributes:serviceList:serviceRecord:
+Objective-C/instm/NSURLCache/diskCapacity
+Objective-C/instm/IMKCandidates/dismissesAutomatically
+Objective-C/instm/NSPopUpButtonCell/dismissPopUp
+Objective-C/instm/NSPortCoder/dispatch
+C/func/-/dispatch
+C/func/-/dispatch_after
+C/func/-/dispatch_after_f
+C/func/-/dispatch_api
+C/func/-/dispatch_apply
+C/func/-/dispatch_apply_f
+C/func/-/dispatch_async
+C/func/-/dispatch_async_f
+C/func/-/dispatch_debug
+C/func/-/dispatch_get_context
+C/func/-/dispatch_get_current_queue
+C/func/-/dispatch_get_global_queue
+C/func/-/dispatch_get_main_queue
+C/macro/-/dispatch_get_main_queue
+C/func/-/dispatch_group_async
+C/func/-/dispatch_group_async_f
+C/func/-/dispatch_group_create
+C/func/-/dispatch_group_enter
+C/func/-/dispatch_group_leave
+C/func/-/dispatch_group_notify
+C/func/-/dispatch_group_notify_f
+C/tdef/-/dispatch_group_t
+C/func/-/dispatch_group_wait
+C/econst/-/DISPATCH_MACH_SEND_DEAD
+C/func/-/dispatch_main
+C/func/-/dispatch_object
+C/func/-/dispatch_once
+C/func/-/dispatch_once_f
+C/tdef/-/dispatch_once_t
+C/econst/-/DISPATCH_PROC_EXEC
+C/econst/-/DISPATCH_PROC_EXIT
+C/econst/-/DISPATCH_PROC_FORK
+C/econst/-/DISPATCH_PROC_SIGNAL
+C/func/-/dispatch_queue_create
+C/func/-/dispatch_queue_get_label
+C/econst/-/DISPATCH_QUEUE_PRIORITY_DEFAULT
+C/econst/-/DISPATCH_QUEUE_PRIORITY_HIGH
+C/econst/-/DISPATCH_QUEUE_PRIORITY_LOW
+C/tdef/-/dispatch_queue_t
+C/func/-/dispatch_release
+C/func/-/dispatch_resume
+C/func/-/dispatch_retain
+C/func/-/dispatch_semaphore_create
+C/func/-/dispatch_semaphore_signal
+C/func/-/dispatch_semaphore_wait
+C/func/-/dispatch_set_context
+C/func/-/dispatch_set_finalizer_f
+C/func/-/dispatch_set_target_queue
+C/func/-/dispatch_source_cancel
+C/func/-/dispatch_source_create
+C/func/-/dispatch_source_get_data
+C/func/-/dispatch_source_get_handle
+C/func/-/dispatch_source_get_mask
+C/func/-/dispatch_source_merge_data
+C/func/-/dispatch_source_set_cancel_handler
+C/func/-/dispatch_source_set_cancel_handler_f
+C/func/-/dispatch_source_set_event_handler
+C/func/-/dispatch_source_set_event_handler_f
+C/func/-/dispatch_source_set_timer
+C/func/-/dispatch_source_testcancel
+C/macro/-/DISPATCH_SOURCE_TYPE_DATA_ADD
+C/macro/-/DISPATCH_SOURCE_TYPE_DATA_OR
+C/macro/-/DISPATCH_SOURCE_TYPE_MACH_RECV
+C/macro/-/DISPATCH_SOURCE_TYPE_MACH_SEND
+C/macro/-/DISPATCH_SOURCE_TYPE_PROC
+C/macro/-/DISPATCH_SOURCE_TYPE_READ
+C/macro/-/DISPATCH_SOURCE_TYPE_SIGNAL
+C/tdef/-/dispatch_source_type_t
+C/macro/-/DISPATCH_SOURCE_TYPE_TIMER
+C/macro/-/DISPATCH_SOURCE_TYPE_VNODE
+C/macro/-/DISPATCH_SOURCE_TYPE_WRITE
+C/func/-/dispatch_suspend
+C/func/-/dispatch_sync
+C/func/-/dispatch_sync_f
+C/func/-/dispatch_time
+C/macro/-/DISPATCH_TIME_FOREVER
+C/macro/-/DISPATCH_TIME_NOW
+C/tdef/-/dispatch_time_t
+C/econst/-/DISPATCH_VNODE_ATTRIB
+C/econst/-/DISPATCH_VNODE_DELETE
+C/econst/-/DISPATCH_VNODE_EXTEND
+C/econst/-/DISPATCH_VNODE_LINK
+C/econst/-/DISPATCH_VNODE_RENAME
+C/econst/-/DISPATCH_VNODE_REVOKE
+C/econst/-/DISPATCH_VNODE_WRITE
+C/func/-/dispatch_walltime
+JavaScript/instm/DOMWindow/dispatchEvent
+JavaScript/instm/DOMApplicationCache/dispatchEvent
+JavaScript/instm/AbstractWorker/dispatchEvent
+JavaScript/instm/EventTarget/dispatchEvent
+JavaScript/instm/IDBRequest/dispatchEvent
+JavaScript/instm/EventSource/dispatchEvent
+JavaScript/instm/svg/dispatchEvent
+JavaScript/instm/MessagePort/dispatchEvent
+JavaScript/instm/Notification/dispatchEvent
+JavaScript/instm/core/dispatchEvent
+JavaScript/instm/WebSocket/dispatchEvent
+JavaScript/instm/WorkerContext/dispatchEvent
+JavaScript/instm/XMLHttpRequest/dispatchEvent
+JavaScript/instm/XMLHttpRequestUpload/dispatchEvent
+C++/instm/IOATAController/dispatchNext
+JavaScript/instm/InspectorBackend/dispatchOnInjectedScript
+Objective-C/instm/NSAppleEventManager/dispatchRawAppleEvent:withRawReply:handlerRefCon:
+C++/instm/IOAudioDevice/dispatchTimerEvents
+Objective-C/instm/NSDockTile/display
+Objective-C/instm/NSWindow/display
+Objective-C/instm/NSView/display
+Objective-C/instm/CALayer/display
+Objective-C/instm/NSPredicateEditorRowTemplate/displayableSubpredicatesOfPredicate:
+Objective-C/instm/NSBrowser/displayAllColumns
+Objective-C/instm/PDFView/displayBox
+C/func/-/DisplayCells
+Objective-C/instm/NSBrowser/displayColumn:
+Objective-C/instm/NSSpeechRecognizer/displayedCommandsTitle
+Objective-C/instm/ABPeoplePickerView/displayedProperty
+Objective-C/instp/ABPeoplePickerView/displayedProperty
+C/func/-/DisplayHeight
+C/func/-/DisplayHeightMM
+Objective-C/instm/NSWindow/displayIfNeeded
+Objective-C/instm/NSView/displayIfNeeded
+Objective-C/instm/CALayer/displayIfNeeded
+Objective-C/instm/NSView/displayIfNeededIgnoringOpacity
+Objective-C/instm/NSView/displayIfNeededInRect:
+Objective-C/instm/NSView/displayIfNeededInRectIgnoringOpacity:
+Objective-C/instm/NSObject/displayLayer:
+Objective-C/instm/PDFView/displayMode
+Objective-C/instm/NSToolbar/displayMode
+Objective-C/instm/NSFont/displayName
+Objective-C/instm/NSDocument/displayName
+Objective-C/instm/ISyncClient/displayName
+Objective-C/instm/DRDevice(InfoConvenience)/displayName
+Objective-C/instm/NSFileManager/displayNameAtPath:
+Objective-C/instm/NSLocale/displayNameForKey:value:
+Objective-C/instm/NSDocumentController/displayNameForType:
+C/func/-/DisplayOfCCC
+C/func/-/DisplayOfScreen
+Objective-C/binding/NSBox/displayPatternTitle1
+Objective-C/binding/NSPanel/displayPatternTitle1
+Objective-C/binding/NSWindow/displayPatternTitle1
+Objective-C/binding/NSTextFieldCell/displayPatternValue1
+Objective-C/binding/NSTokenField/displayPatternValue1
+Objective-C/binding/NSSecureTextFieldCell/displayPatternValue1
+Objective-C/binding/NSTableColumn/displayPatternValue1
+Objective-C/binding/NSTextField/displayPatternValue1
+Objective-C/binding/NSSecureTextField/displayPatternValue1
+Objective-C/binding/NSTokenFieldCell/displayPatternValue1
+C/func/-/DisplayPlanes
+Objective-C/instm/NSView/displayRect:
+Objective-C/instm/NSView/displayRectIgnoringOpacity:
+Objective-C/instm/NSView/displayRectIgnoringOpacity:inContext:
+Objective-C/instm/PDFPage/displaysAnnotations
+Objective-C/instm/PDFView/displaysAsBook
+Objective-C/instm/IKScannerDeviceView/displaysDownloadsDirectoryControl
+Objective-C/instp/IKCameraDeviceView/displaysDownloadsDirectoryControl
+Objective-C/instp/IKScannerDeviceView/displaysDownloadsDirectoryControl
+Objective-C/instm/IKCameraDeviceView/displaysDownloadsDirectoryControl
+Objective-C/instm/NSTextView/displaysLinkToolTips
+Objective-C/instm/IKDeviceBrowserView/displaysLocalCameras
+Objective-C/instp/IKDeviceBrowserView/displaysLocalCameras
+Objective-C/instm/IKDeviceBrowserView/displaysLocalScanners
+Objective-C/instp/IKDeviceBrowserView/displaysLocalScanners
+Objective-C/instp/IKDeviceBrowserView/displaysNetworkCameras
+Objective-C/instm/IKDeviceBrowserView/displaysNetworkCameras
+Objective-C/instm/IKDeviceBrowserView/displaysNetworkScanners
+Objective-C/instp/IKDeviceBrowserView/displaysNetworkScanners
+Objective-C/instm/PDFView/displaysPageBreaks
+Objective-C/instm/IKCameraDeviceView/displaysPostProcessApplicationControl
+Objective-C/instp/IKCameraDeviceView/displaysPostProcessApplicationControl
+Objective-C/instp/IKScannerDeviceView/displaysPostProcessApplicationControl
+Objective-C/instm/IKScannerDeviceView/displaysPostProcessApplicationControl
+Objective-C/instp/QLPreviewPanel/displayState
+Objective-C/instm/QLPreviewPanel/displayState
+C/func/-/DisplayString
+Objective-C/instm/NSWindow/displaysWhenScreenProfileChanges
+C++/instm/IOUSBDevice/DisplayUserNotification
+Objective-C/instm/NSRuleEditor/displayValuesForRow:
+Objective-C/instm/NSRuleEditor/displayValuesKeyPath
+Objective-C/instm/SFAuthorizationPluginView/displayView
+C/func/-/DisplayWidth
+C/func/-/DisplayWidthMM
+C/func/-/DisposeAliasFilterUPP
+C/func/-/DisposeAUGraph
+C/func/-/DisposeCDataHandlerUPP
+C/func/-/DisposeCharDataHandlerUPP
+C/func/-/DisposeCMBitmapCallBackUPP
+C/func/-/DisposeCMConcatCallBackUPP
+C/func/-/DisposeCMFlattenUPP
+C/func/-/DisposeCMMIterateUPP
+C/func/-/DisposeCMProfileAccessUPP
+C/func/-/DisposeCMProfileFilterUPP
+C/func/-/DisposeCMProfileIterateUPP
+C/func/-/DisposeCodecNameList
+C/func/-/DisposeCommentHandlerUPP
+C/func/-/DisposeComponentFunctionUPP
+C/func/-/DisposeComponentMPWorkFunctionUPP
+C/func/-/DisposeComponentRoutineUPP
+C/func/-/DisposeDataBrowserAcceptDragUPP
+C/func/-/DisposeDataBrowserAddDragItemUPP
+C/func/-/DisposeDataBrowserDrawItemUPP
+C/func/-/DisposeDataBrowserEditItemUPP
+C/func/-/DisposeDataBrowserGetContextualMenuUPP
+C/func/-/DisposeDataBrowserHitTestUPP
+C/func/-/DisposeDataBrowserItemAcceptDragUPP
+C/func/-/DisposeDataBrowserItemCompareUPP
+C/func/-/DisposeDataBrowserItemDataUPP
+C/func/-/DisposeDataBrowserItemDragRgnUPP
+C/func/-/DisposeDataBrowserItemHelpContentUPP
+C/func/-/DisposeDataBrowserItemNotificationUPP
+C/func/-/DisposeDataBrowserItemNotificationWithItemUPP
+C/func/-/DisposeDataBrowserItemReceiveDragUPP
+C/func/-/DisposeDataBrowserItemUPP
+C/func/-/DisposeDataBrowserPostProcessDragUPP
+C/func/-/DisposeDataBrowserReceiveDragUPP
+C/func/-/DisposeDataBrowserSelectContextualMenuUPP
+C/func/-/DisposeDataBrowserTrackingUPP
+C/func/-/DisposeDataHCompletionUPP
+C/func/-/DisposeEndDocumentHandlerUPP
+C/func/-/DisposeEndElementHandlerUPP
+C/func/-/DisposeFNSubscriptionUPP
+C/func/-/DisposeFSVolumeEjectUPP
+C/func/-/DisposeFSVolumeMountUPP
+C/func/-/DisposeFSVolumeUnmountUPP
+C/func/-/DisposeGetMissingComponentResourceUPP
+C/func/-/DisposeImageCodecDrawBandCompleteUPP
+C/func/-/DisposeImageCodecMPDrawBandUPP
+C/func/-/DisposeImageCodecTimeTriggerUPP
+C/func/-/DisposeIOCompletionUPP
+C/func/-/DisposeMovieEditState
+C/func/-/DisposeMovieExportGetDataUPP
+C/func/-/DisposeMovieExportGetPropertyUPP
+C/func/-/DisposeMovieExportStageReachedCallbackUPP
+C/func/-/DisposeMovieTrack
+C/func/-/DisposeMusicEventIterator
+C/func/-/DisposeMusicPlayer
+C/func/-/DisposeMusicSequence
+C/func/-/DisposePMIdleUPP
+C/func/-/DisposePreprocessInstructionHandlerUPP
+C/func/-/DisposeQTBandwidthNotificationUPP
+C/func/-/DisposeQTTrackPropertyListenerUPP
+C/func/-/DisposeResErrUPP
+C/func/-/DisposeSCModalFilterUPP
+C/func/-/DisposeSCModalHookUPP
+C/func/-/DisposeSelectorFunctionUPP
+C/func/-/DisposeSpeechChannel
+C/func/-/DisposeSpeechDoneUPP
+C/func/-/DisposeSpeechErrorUPP
+C/func/-/DisposeSpeechPhonemeUPP
+C/func/-/DisposeSpeechSyncUPP
+C/func/-/DisposeSpeechTextDoneUPP
+C/func/-/DisposeSpeechWordUPP
+C/func/-/DisposeSRCallBackUPP
+C/func/-/DisposeStartDocumentHandlerUPP
+C/func/-/DisposeStartElementHandlerUPP
+C/func/-/DisposeTextToUnicodeInfo
+C/func/-/DisposeTrackEditState
+C/func/-/DisposeTrackMedia
+C/func/-/DisposeUnicodeToTextFallbackUPP
+C/func/-/DisposeUnicodeToTextInfo
+C/func/-/DisposeUnicodeToTextRunInfo
+C/func/-/DisposeVdigIntUPP
+Objective-C/instm/NSImage/dissolveToPoint:fraction:
+Objective-C/instm/NSImage/dissolveToPoint:fromRect:fraction:
+Objective-C/instm/CLLocationManager/distanceFilter
+Objective-C/instp/CLLocationManager/distanceFilter
+Objective-C/instm/CLLocation/distanceFromLocation:
+Objective-C/clm/NSDate/distantFuture
+Objective-C/clm/NSDate/distantPast
+Objective-C/instm/NSURLProtectionSpace/distinguishedNames
+Objective-C/instm/ABGroup/distributionIdentifierForProperty:person:
+JavaScript/clconst/WebGLRenderingContext/DITHER
+C/econst/-/ditherCopy
+C/func/-/div
+Objective-C/instm/NSSplitView/dividerColor
+Objective-C/instm/NSSplitView/dividerStyle
+Objective-C/instm/NSSplitView/dividerThickness
+C/func/-/dladdr
+C/func/-/dlclose
+C/func/-/dlerror
+C/func/-/dlopen
+C/func/-/dlopen_preflight
+C/func/-/dlsym
+C/func/-/dMultMatMat_16x16
+C/func/-/dMultMatMat_32x32
+C/func/-/dMultMatMat_4x4
+C/func/-/dMultMatMat_8x8
+C/func/-/dMultMatVec_16x16
+C/func/-/dMultMatVec_32x32
+C/func/-/dMultMatVec_4x4
+C/func/-/dMultMatVec_8x8
+C/func/-/dMultVecMat_16x16
+C/func/-/dMultVecMat_32x32
+C/func/-/dMultVecMat_4x4
+C/func/-/dMultVecMat_8x8
+C/func/-/DMX
+C/func/-/DMXAddBackendInput
+C/func/-/DMXAddConsoleInput
+C/func/-/DMXAddInput
+C/func/-/DMXAddScreen
+C/func/-/DMXChangeDesktopAttributes
+C/func/-/DMXChangeScreensAttributes
+C/func/-/DMXForceWindowCreation
+C/func/-/DMXGetDesktopAttributes
+C/func/-/DMXGetInputAttributes
+C/func/-/DMXGetInputCount
+C/func/-/DMXGetScreenAttributes
+C/func/-/DMXGetScreenCount
+C/func/-/DMXGetWindowAttributes
+C/func/-/DMXQueryExtension
+C/func/-/DMXQueryVersion
+C/func/-/DMXRemoveInput
+C/func/-/DMXRemoveScreen
+C/func/-/DMXSync
+C/func/-/dn_comp
+C/func/-/dn_expand
+C/func/-/dn_skipname
+C/func/-/DNSServiceAddRecord
+C/func/-/DNSServiceBrowse
+C/func/-/DNSServiceBrowserCreate
+C/tdef/-/DNSServiceBrowseReply
+C/func/-/DNSServiceConstructFullName
+C/func/-/DNSServiceCreateConnection
+C/func/-/DNSServiceDiscovery_handleReply
+C/func/-/DNSServiceDiscoveryDeallocate
+C/func/-/DNSServiceDiscoveryMachPort
+C/func/-/DNSServiceDomainEnumerationCreate
+C/tdef/-/DNSServiceDomainEnumReply
+C/func/-/DNSServiceEnumerateDomains
+C/tdef/-/DNSServiceErrorType
+C/tdef/-/DNSServiceFlags
+C/func/-/DNSServiceGetAddrInfo
+C/tdef/-/DNSServiceGetAddrInfoReply
+C/func/-/DNSServiceGetProperty
+C/func/-/DNSServiceNATPortMappingCreate
+C/tdef/-/DNSServiceNATPortMappingReply
+C/func/-/DNSServiceProcessResult
+C/tdef/-/DNSServiceProtocol
+C/func/-/DNSServiceQueryRecord
+C/tdef/-/DNSServiceQueryRecordReply
+C/func/-/DNSServiceReconfirmRecord
+C/func/-/DNSServiceRefDeallocate
+C/func/-/DNSServiceRefSockFD
+C/func/-/DNSServiceRegister
+C/func/-/DNSServiceRegisterRecord
+C/tdef/-/DNSServiceRegisterRecordReply
+C/tdef/-/DNSServiceRegisterReply
+C/func/-/DNSServiceRegistrationAddRecord
+C/func/-/DNSServiceRegistrationCreate
+C/func/-/DNSServiceRegistrationRemoveRecord
+C/func/-/DNSServiceRegistrationUpdateRecord
+C/func/-/DNSServiceRemoveRecord
+C/func/-/DNSServiceResolve
+C/tdef/-/DNSServiceResolveReply
+C/func/-/DNSServiceResolverResolve
+C/func/-/DNSServiceUpdateRecord
+C++/instm/IOBlockStorageDevice/doAsyncReadWrite
+Objective-C/instm/NSAttributedString/docFormatFromRange:documentAttributes:
+Objective-C/intfm/NSDockTilePlugIn/dockMenu
+Objective-C/instm/NSWindow/dockTile
+Objective-C/instm/NSApplication/dockTile
+Objective-C/instm/NSBrowser/doClick:
+Objective-C/intfm/NSTextInput/doCommandBySelector:
+Objective-C/intfm/NSTextInputClient/doCommandBySelector:
+Objective-C/instm/NSResponder/doCommandBySelector:
+Objective-C/instm/IMKInputController/doCommandBySelector:commandDictionary:
+JavaScript/data/Document/doctype
+Objective-C/instm/IBInspector/document
+Objective-C/instm/NSWindowController/document
+Objective-C/instm/PDFOutline/document
+Objective-C/instm/PDFView/document
+Objective-C/instm/PDFPage/document
+Objective-C/clm/NSXMLNode/document
+JavaScript/data/AbstractView/document
+JavaScript/cl/-/Document
+JavaScript/data/DOMWindow/document
+Objective-C/instm/IBPlugin/document:didAddDraggedObjects:fromDraggedLibraryView:
+JavaScript/clconst/core/DOCUMENT_FRAGMENT_NODE
+JavaScript/clconst/core/DOCUMENT_NODE
+JavaScript/clconst/core/DOCUMENT_POSITION_CONTAINED_BY
+JavaScript/clconst/core/DOCUMENT_POSITION_CONTAINS
+JavaScript/clconst/core/DOCUMENT_POSITION_DISCONNECTED
+JavaScript/clconst/core/DOCUMENT_POSITION_FOLLOWING
+JavaScript/clconst/core/DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
+JavaScript/clconst/core/DOCUMENT_POSITION_PRECEDING
+JavaScript/clconst/core/DOCUMENT_TYPE_NODE
+Objective-C/instm/PDFDocument/documentAttributes
+Objective-C/instm/NSDocumentController/documentClassForType:
+Objective-C/instm/NSDocumentController/documentClassNames
+Objective-C/instm/NSXMLDocument/documentContentKind
+Objective-C/instm/NSClipView/documentCursor
+Objective-C/instm/NSScrollView/documentCursor
+Objective-C/instm/NSObject/documentDidBeginDocumentFind:
+Objective-C/instm/NSObject/documentDidBeginPageFind:
+Objective-C/instm/NSObject/documentDidEndDocumentFind:
+Objective-C/instm/NSObject/documentDidEndPageFind:
+Objective-C/instm/NSObject/documentDidFindMatch:
+Objective-C/instm/NSObject/documentDidUnlock:
+Objective-C/binding/NSPanel/documentEdited
+Objective-C/binding/NSWindow/documentEdited
+JavaScript/data/Document/documentElement
+Objective-C/instm/NSDocumentController/documentForFileName:
+Objective-C/clm/IBDocument/documentForObject:
+Objective-C/instm/NSDocumentController/documentForURL:
+Objective-C/instm/NSDocumentController/documentForWindow:
+JavaScript/data/DOMWindow/DocumentFragment
+JavaScript/cl/-/DocumentFragment
+Objective-C/instm/IBDocument/documentImageNamed:
+Objective-C/instp/IKScannerDeviceView/documentName
+Objective-C/instm/IKScannerDeviceView/documentName
+Objective-C/instm/NSClipView/documentRect
+Objective-C/instm/NSDocumentController/documents
+Objective-C/intfm/WebDocumentRepresentation/documentSource
+JavaScript/data/DOMWindow/DocumentType
+JavaScript/cl/-/DocumentType
+JavaScript/data/Document/documentURI
+Objective-C/instm/PDFDocument/documentURL
+Objective-C/instm/NSClipView/documentView
+Objective-C/instm/NSScrollView/documentView
+Objective-C/instm/PDFView/documentView
+Objective-C/instm/WebFrameView/documentView
+Objective-C/instm/WebFrameView/documentViewShouldHandlePrint
+Objective-C/instm/NSScrollView/documentVisibleRect
+Objective-C/instm/NSClipView/documentVisibleRect
+Objective-C/clm/NSXMLNode/documentWithRootElement:
+C++/instm/IONetworkController/doDisable
+C++/instm/IOBlockStorageDevice/doDiscard
+Objective-C/instm/NSBrowser/doDoubleClick:
+C++/instm/IOBlockStorageDevice/doEjectMedia
+C++/instm/IONetworkController/doEnable
+C/func/-/DoesBackingStore
+Objective-C/instm/NSObject/doesContain:
+C++/instm/IOSCSIParallelInterfaceController/DoesHBAPerformAutoSense
+C++/instm/IOSCSIParallelInterfaceController/DoesHBAPerformDeviceManagement
+C++/instm/IOSCSIParallelInterfaceController/DoesHBASupportSCSIParallelFeature
+Objective-C/instm/NSObject/doesNotRecognizeSelector:
+Objective-C/instm/NSDateFormatter/doesRelativeDateFormatting
+C/func/-/DoesSaveUnders
+C++/instm/IOBlockStorageDevice/doFormatMedia
+C++/instm/IOBlockStorageDevice/doGetFormatCapacities
+C++/instm/IOFramebuffer/doI2CRequest
+C++/instm/IOFWAddressSpace/doLock
+C++/instm/IOBlockStorageDevice/doLockUnlockMedia
+Objective-C/instm/NSPrinter/domain
+JavaScript/instp/Error/domain
+Objective-C/instm/NSNetService/domain
+Objective-C/instm/NSError/domain
+Objective-C/instm/NSHTTPCookie/domain
+JavaScript/data/Document/domain
+JavaScript/cl/-/DOMApplicationCache
+C/tdef/-/DoMCActionProc
+C/tdef/-/DoMCActionUPP
+JavaScript/cl/-/DOMCoreException
+Objective-C/instm/WebFrame/DOMDocument
+Objective-C/cat/-/DOMDocumentAdditions
+Objective-C/cat/-/DOMElement(AppKitAdditions)
+JavaScript/data/DOMWindow/DOMException
+JavaScript/cl/-/DOMFormData
+Objective-C/cat/-/DOMHTMLDocument(DOMHTMLDocumentExtensions)
+Objective-C/cat/-/DOMHTMLFrameElement(WebKitAdditions)
+Objective-C/cat/-/DOMHTMLIFrameElement(WebKitAdditions)
+Objective-C/cat/-/DOMHTMLObjectElement(WebKitAdditions)
+JavaScript/data/DOMWindow/DOMImplementation
+JavaScript/cl/-/DOMImplementation
+Objective-C/instm/NSOrthography/dominantLanguage
+Objective-C/instp/NSOrthography/dominantLanguage
+Objective-C/instm/NSOrthography/dominantLanguageForScript:
+Objective-C/instp/NSOrthography/dominantScript
+Objective-C/instm/NSOrthography/dominantScript
+Objective-C/cat/-/DOMNodeAdditions
+JavaScript/cl/-/DOMParser
+JavaScript/data/DOMWindow/DOMParser
+Objective-C/cat/-/DOMRangeAdditions
+JavaScript/cl/-/DOMSelection
+JavaScript/clconst/DOMCoreException/DOMSTRING_SIZE_ERR
+JavaScript/cl/-/DOMWindow
+JavaScript/clconst/IDBRequest/DONE
+JavaScript/clconst/FileReader/DONE
+JavaScript/clconst/XMLHttpRequest/DONE
+JavaScript/clconst/WebGLRenderingContext/DONT_CARE
+C++/instm/IOFWPseudoAddressSpace/doRead
+C++/instm/IOFWPhysicalAddressSpace/doRead
+C++/instm/IOFWAddressSpace/doRead
+C++/instm/IOBlockStorageDevice/doSynchronizeCache
+C/func/-/dotpr
+C/func/-/dotprD
+Objective-C/instm/NSStatusItem/doubleAction
+Objective-C/instm/NSMatrix/doubleAction
+Objective-C/instm/NSBrowser/doubleAction
+Objective-C/instm/NSPathCell/doubleAction
+Objective-C/instm/NSPathControl/doubleAction
+Objective-C/instm/NSTableView/doubleAction
+Objective-C/binding/NSOutlineView/doubleClickArgument
+Objective-C/binding/NSTableView/doubleClickArgument
+Objective-C/instm/NSAttributedString/doubleClickAtIndex:
+Objective-C/clm/NSEvent/doubleClickInterval
+Objective-C/instp/IKImageView/doubleClickOpensImageEditPanel
+Objective-C/instm/IKImageView/doubleClickOpensImageEditPanel
+Objective-C/binding/NSOutlineView/doubleClickTarget
+Objective-C/binding/NSTableView/doubleClickTarget
+Objective-C/instm/NSUserDefaults/doubleForKey:
+Objective-C/instp/CALayer/doubleSided
+Objective-C/instm/NSActionCell/doubleValue
+Objective-C/instm/NSDecimalNumber/doubleValue
+Objective-C/instm/NSNumber/doubleValue
+Objective-C/instm/NSProgressIndicator/doubleValue
+Objective-C/instm/IMAVControl/doubleValue
+Objective-C/instm/NSControl/doubleValue
+Objective-C/instm/NSCell/doubleValue
+Objective-C/instm/NSString/doubleValue
+C/func/-/doupdate
+Objective-C/intfm/WebPolicyDecisionListener/download
+Objective-C/instm/NSObject/download:canAuthenticateAgainstProtectionSpace:
+Objective-C/instm/NSObject/download:decideDestinationWithSuggestedFilename:
+Objective-C/instm/NSObject/download:didCancelAuthenticationChallenge:
+Objective-C/instm/NSObject/download:didCreateDestination:
+Objective-C/instm/NSObject/download:didFailWithError:
+Objective-C/instm/NSObject/download:didReceiveAuthenticationChallenge:
+Objective-C/instm/NSObject/download:didReceiveDataOfLength:
+Objective-C/instm/NSObject/download:didReceiveResponse:
+Objective-C/instm/NSObject/download:shouldDecodeSourceDataOfMIMEType:
+Objective-C/instm/NSObject/download:willResumeWithResponse:fromByte:
+Objective-C/instm/NSObject/download:willSendRequest:redirectResponse:
+Objective-C/instp/IKCameraDeviceView/downloadAllControlLabel
+Objective-C/instm/IKCameraDeviceView/downloadAllControlLabel
+Objective-C/instm/IKCameraDeviceView/downloadAllItems:
+Objective-C/instm/WebView/downloadDelegate
+Objective-C/instm/NSObject/downloadDidBegin:
+Objective-C/instm/NSObject/downloadDidFinish:
+Objective-C/instp/PSEnclosure/downloadedPath
+C/func/-/DownloadEffect
+JavaScript/clconst/DOMApplicationCache/DOWNLOADING
+Objective-C/instm/IKScannerDeviceView/downloadsDirectory
+Objective-C/instp/IKScannerDeviceView/downloadsDirectory
+Objective-C/instp/IKCameraDeviceView/downloadsDirectory
+Objective-C/instm/IKCameraDeviceView/downloadsDirectory
+Objective-C/instp/IKCameraDeviceView/downloadSelectedControlLabel
+Objective-C/instm/IKCameraDeviceView/downloadSelectedControlLabel
+Objective-C/instm/IKCameraDeviceView/downloadSelectedItems:
+Objective-C/instp/PSFeedSettings/downloadsEnclosures
+Objective-C/instm/NSObject/downloadShouldUseCredentialStorage:
+Objective-C/instm/NSObject/downloadWindowForAuthenticationSheet:
+C++/instm/IOFWAddressSpace/doWrite
+C++/instm/IOFWPhysicalAddressSpace/doWrite
+C++/instm/IOFWPseudoAddressSpace/doWrite
+C/func/-/DPMSCapable
+C/func/-/DPMSDisable
+C/func/-/DPMSEnable
+C/func/-/DPMSForceLevel
+C/func/-/DPMSGetTimeouts
+C/func/-/DPMSGetVersion
+C/func/-/DPMSInfo
+C/func/-/DPMSQueryExtension
+C/func/-/DPMSSetTimeouts
+C/data/-/DRAbstractFile
+C/data/-/DRAccessDate
+C/func/-/DragAlignedGrayRgn
+C/func/-/DragAlignedWindow
+Objective-C/clm/NSColorPanel/dragColor:withEvent:fromView:
+Objective-C/clm/NSCursor/dragCopyCursor
+JavaScript/clconst/Event/DRAGDROP
+Objective-C/instm/NSView/dragFile:fromRect:slideBack:event:
+JavaScript/data/HTMLElement/draggable
+Objective-C/instm/NSTableHeaderView/draggedColumn
+Objective-C/instm/NSTableHeaderView/draggedDistance
+Objective-C/intfm/NSDraggingInfo/draggedImage
+Objective-C/instm/NSObject/draggedImage:beganAt:
+Objective-C/instm/NSObject/draggedImage:endedAt:deposited:
+Objective-C/instm/NSObject/draggedImage:endedAt:operation:
+Objective-C/instm/NSObject/draggedImage:movedTo:
+Objective-C/intfm/NSDraggingInfo/draggedImageLocation
+Objective-C/instm/IKImageBrowserView/draggingDestinationDelegate
+Objective-C/instm/NSTableView/draggingDestinationFeedbackStyle
+Objective-C/intfm/NSDraggingInfo/draggingDestinationWindow
+Objective-C/instm/NSObject/draggingEnded:
+Objective-C/instm/NSObject/draggingEntered:
+Objective-C/instm/NSObject/draggingExited:
+Objective-C/instm/NSCollectionView/draggingImageForItemsAtIndexes:withEvent:offset:
+Objective-C/instm/NSBrowser/draggingImageForRowsWithIndexes:inColumn:withEvent:offset:
+Objective-C/intfm/NSDraggingInfo/draggingLocation
+Objective-C/intfm/NSDraggingInfo/draggingPasteboard
+Objective-C/intfm/NSDraggingInfo/draggingSequenceNumber
+Objective-C/intfm/NSDraggingInfo/draggingSource
+Objective-C/intfm/NSDraggingInfo/draggingSourceOperationMask
+Objective-C/instm/NSBrowser/draggingSourceOperationMaskForLocal:
+Objective-C/instm/NSObject/draggingSourceOperationMaskForLocal:
+Objective-C/instm/NSObject/draggingUpdated:
+Objective-C/instm/NSWindow/dragImage:at:offset:event:pasteboard:source:slideBack:
+Objective-C/instm/NSView/dragImage:at:offset:event:pasteboard:source:slideBack:
+Objective-C/instm/NSTableView/dragImageForRows:event:dragImageOffset:
+Objective-C/instm/NSTableView/dragImageForRowsWithIndexes:tableColumns:event:offset:
+Objective-C/instm/NSTextView/dragImageForSelectionWithEvent:origin:
+Objective-C/clm/NSCursor/dragLinkCursor
+Objective-C/instm/NSTextView/dragOperationForDraggingInfo:type:
+Objective-C/instm/NSView/dragPromisedFilesOfTypes:fromRect:source:slideBack:event:
+Objective-C/instm/NSTextView/dragSelectionWithEvent:offset:slideBack:
+Objective-C/instm/NSAutoreleasePool/drain
+C/data/-/DRAllFilesystems
+C/func/-/drand48
+C/data/-/DRApplicationIdentifier
+C/data/-/DRAttributeModificationDate
+C/data/-/DRAudioFourChannelKey
+C/data/-/DRAudioPreEmphasisKey
+C/func/-/DRAudioTrackCreate
+C/func/-/DRAudioTrackCreateWithURL
+C/tdef/-/DRAudioTrackRef
+Objective-C/instm/FxTexture/draw
+Objective-C/instm/NSImageRep/draw
+JavaScript/instm/WebGLRenderingContext/drawArrays
+Objective-C/instm/NSScroller/drawArrow:highlight:
+Objective-C/instm/NSImageRep/drawAtPoint:
+Objective-C/instm/NSAttributedString/drawAtPoint:
+Objective-C/instm/CIImage/drawAtPoint:fromRect:operation:fraction:
+Objective-C/instm/NSImage/drawAtPoint:fromRect:operation:fraction:
+Objective-C/instm/NSString/drawAtPoint:withAttributes:
+Objective-C/instm/NSTextTable/drawBackgroundForBlock:withFrame:inView:characterRange:layoutManager:
+Objective-C/instm/NSLayoutManager/drawBackgroundForGlyphRange:atPoint:
+Objective-C/instm/NSTableView/drawBackgroundInClipRect:
+Objective-C/instm/NSTextBlock/drawBackgroundWithFrame:inView:characterRange:layoutManager:
+Objective-C/instm/NSSliderCell/drawBarInside:flipped:
+Objective-C/instm/NSButtonCell/drawBezelWithFrame:inView:
+Objective-C/instm/NSMenuItemCell/drawBorderAndBackgroundWithFrame:inView:
+Objective-C/instm/NSControl/drawCell:
+Objective-C/instm/NSForm/drawCellAtIndex:
+Objective-C/instm/NSMatrix/drawCellAtRow:column:
+Objective-C/instm/NSControl/drawCellInside:
+Objective-C/instm/NSSplitView/drawDividerInRect:
+JavaScript/instm/WebGLRenderingContext/drawElements
+C/func/-/DrawEllipticArcRot
+Objective-C/intfm/NSDrawerDelegate/drawerDidClose:
+Objective-C/intfm/NSDrawerDelegate/drawerDidOpen:
+Objective-C/instm/NSWindow/drawers
+Objective-C/intfm/NSDrawerDelegate/drawerShouldClose:
+Objective-C/intfm/NSDrawerDelegate/drawerShouldOpen:
+Objective-C/intfm/NSDrawerDelegate/drawerWillClose:
+Objective-C/intfm/NSDrawerDelegate/drawerWillOpen:
+Objective-C/intfm/NSDrawerDelegate/drawerWillResizeContents:toSize:
+Objective-C/instm/PDFSelection/drawForPage:active:
+Objective-C/instm/PDFSelection/drawForPage:withBox:active:
+Objective-C/instm/NSGradient/drawFromCenter:radius:toCenter:radius:options:
+Objective-C/instm/NSGradient/drawFromPoint:toPoint:options:
+Objective-C/instm/NSLayoutManager/drawGlyphsForGlyphRange:atPoint:
+Objective-C/instm/NSTableView/drawGridInClipRect:
+Objective-C/instm/NSRulerView/drawHashMarksAndLabelsInRect:
+JavaScript/instm/CanvasRenderingContext2D/drawImage
+Objective-C/instm/CIContext/drawImage:atPoint:fromRect:
+Objective-C/instm/CIContext/drawImage:inRect:fromRect:
+Objective-C/instm/NSButtonCell/drawImage:withFrame:inView:
+JavaScript/instm/CanvasRenderingContext2D/drawImageFromRect
+Objective-C/instm/NSMenuItemCell/drawImageWithFrame:inView:
+Objective-C/instm/NSGradient/drawInBezierPath:angle:
+Objective-C/instm/NSGradient/drawInBezierPath:relativeCenterPosition:
+Objective-C/instm/CAOpenGLLayer/drawInCGLContext:pixelFormat:forLayerTime:displayTime:
+Objective-C/instm/CALayer/drawInContext:
+Objective-C/intfm/FxOnScreenControl/drawingCoordinates
+Objective-C/instm/NSCell/drawingRectForBounds:
+Objective-C/instm/NSOpenGLLayer/drawInOpenGLContext:pixelFormat:forLayerTime:displayTime:
+Objective-C/instm/PDFBorder/drawInRect:
+Objective-C/instm/NSImageRep/drawInRect:
+Objective-C/instm/NSAttributedString/drawInRect:
+Objective-C/instm/NSGradient/drawInRect:angle:
+Objective-C/instm/CIImage/drawInRect:fromRect:operation:fraction:
+Objective-C/instm/NSImage/drawInRect:fromRect:operation:fraction:
+Objective-C/instm/NSImageRep/drawInRect:fromRect:operation:fraction:respectFlipped:hints:
+Objective-C/instm/NSImage/drawInRect:fromRect:operation:fraction:respectFlipped:hints:
+Objective-C/instm/NSGradient/drawInRect:relativeCenterPosition:
+Objective-C/instm/NSString/drawInRect:withAttributes:
+Objective-C/instm/NSTextView/drawInsertionPointInRect:color:turnedOn:
+Objective-C/instm/NSCell/drawInteriorWithFrame:inView:
+Objective-C/instm/NSMenuItemCell/drawKeyEquivalentWithFrame:inView:
+Objective-C/instm/NSSliderCell/drawKnob
+Objective-C/instm/NSScroller/drawKnob
+Objective-C/instm/NSSliderCell/drawKnob:
+Objective-C/instm/NSScroller/drawKnobSlotInRect:highlight:
+Objective-C/instm/NSTabViewItem/drawLabel:inRect:
+Objective-C/instm/NSObject/drawLayer:inContext:
+Objective-C/instm/NSRulerView/drawMarkersInRect:
+Objective-C/intfm/FxOnScreenControl/drawOSC:height:activePart:time:
+Objective-C/clm/NSBezierPath/drawPackedGlyphs:atPoint:
+Objective-C/instm/PDFView/drawPage:
+Objective-C/instm/NSView/drawPageBorderWithSize:
+Objective-C/instm/PDFView/drawPagePost:
+Objective-C/instm/NSScroller/drawParts
+C/func/-/DrawPictureFile
+Objective-C/instm/ScreenSaverView/drawRect:
+Objective-C/instm/NSRulerMarker/drawRect:
+Objective-C/instm/NSView/drawRect:
+Objective-C/instm/NSImage/drawRepresentation:inRect:
+Objective-C/instm/NSTableView/drawRow:clipRect:
+Objective-C/instm/NSClipView/drawsBackground
+Objective-C/instm/NSScrollView/drawsBackground
+Objective-C/instm/QCCompositionPickerView/drawsBackground
+Objective-C/instm/QCCompositionParameterView/drawsBackground
+Objective-C/instm/NSDatePicker/drawsBackground
+Objective-C/instm/NSDatePickerCell/drawsBackground
+Objective-C/instm/NSMatrix/drawsBackground
+Objective-C/instm/NSTextField/drawsBackground
+Objective-C/instm/NSTabView/drawsBackground
+Objective-C/instm/NSTextView/drawsBackground
+Objective-C/instm/WebView/drawsBackground
+Objective-C/instm/NSText/drawsBackground
+Objective-C/instm/NSTextFieldCell/drawsBackground
+Objective-C/instm/NSMatrix/drawsCellBackground
+Objective-C/instm/NSSegmentedCell/drawSegment:inFrame:withView:
+Objective-C/instm/NSCustomImageRep/drawSelector
+Objective-C/instm/NSMenuItemCell/drawSeparatorItemWithFrame:inView:
+Objective-C/instm/NSTableView/drawsGrid
+Objective-C/instm/NSView/drawSheetBorderWithSize:
+Objective-C/instm/NSTableHeaderCell/drawSortIndicatorWithFrame:inView:ascending:priority:
+Objective-C/instm/NSLayoutManager/drawsOutsideLineFragmentForGlyphAtIndex:
+Objective-C/instm/NSMenuItemCell/drawStateImageWithFrame:inView:
+Objective-C/instm/NSStatusItem/drawStatusBarBackgroundInRect:withHighlight:
+Objective-C/instm/NSLayoutManager/drawStrikethroughForGlyphRange:strikethroughType:baselineOffset:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:
+Objective-C/intfm/NSTextInputClient/drawsVerticallyForCharacterAtIndex:
+Objective-C/instm/NSColor/drawSwatchInRect:
+Objective-C/instm/NSButtonCell/drawTitle:withFrame:inView:
+Objective-C/instm/NSBrowser/drawTitleOfColumn:inRect:
+Objective-C/instm/NSMenuItemCell/drawTitleWithFrame:inView:
+C/func/-/DrawTrimmedPicture
+C/func/-/DrawTrimmedPictureFile
+Objective-C/instm/NSLayoutManager/drawUnderlineForGlyphRange:underlineType:baselineOffset:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:
+Objective-C/instm/NSTextView/drawViewBackgroundInRect:
+Objective-C/instm/NSColorWell/drawWellInside:
+Objective-C/instm/PDFPage/drawWithBox:
+Objective-C/instm/PDFAnnotation/drawWithBox:
+Objective-C/instm/NSCell/drawWithExpansionFrame:inView:
+Objective-C/intfm/NSTextAttachmentCell/drawWithFrame:inView:
+Objective-C/instm/NSCell/drawWithFrame:inView:
+Objective-C/intfm/NSTextAttachmentCell/drawWithFrame:inView:characterIndex:
+Objective-C/intfm/NSTextAttachmentCell/drawWithFrame:inView:characterIndex:layoutManager:
+Objective-C/instm/NSAttributedString/drawWithRect:options:
+Objective-C/instm/NSString/drawWithRect:options:attributes:
+C/data/-/DRBackupDate
+C/data/-/DRBibliographicFile
+C/data/-/DRBlockSize
+C/data/-/DRBlockSizeKey
+C/data/-/DRBlockTypeKey
+Objective-C/cl/-/DRBurn
+Objective-C/cat/-/DRBurn(ImageContentCreation)
+Objective-C/cat/-/DRBurn(PropertyConvenienceMethods)
+C/func/-/DRBurnAbort
+C/data/-/DRBurnAppendableKey
+C/data/-/DRBurnCompletionActionEject
+C/data/-/DRBurnCompletionActionKey
+C/data/-/DRBurnCompletionActionMount
+C/func/-/DRBurnCopyStatus
+C/func/-/DRBurnCreate
+C/data/-/DRBurnDoubleLayerL0DataZoneBlocksKey
+C/data/-/DRBurnFailureActionEject
+C/data/-/DRBurnFailureActionKey
+C/data/-/DRBurnFailureActionNone
+C/func/-/DRBurnGetDevice
+C/func/-/DRBurnGetProperties
+C/func/-/DRBurnGetTypeID
+C/data/-/DRBurnIcon
+C/data/-/DRBurnOverwriteDiscKey
+Objective-C/cl/-/DRBurnProgressPanel
+C/data/-/DRBurnProgressPanelDidFinishNotification
+C/data/-/DRBurnProgressPanelWillBeginNotification
+C/tdef/-/DRBurnRef
+C/data/-/DRBurnRequestedSpeedKey
+C/func/-/DRBurnSessionBeginProgressDialog
+C/tdef/-/DRBurnSessionBurnCompleteProcPtr
+C/func/-/DRBurnSessionCreate
+C/tdef/-/DRBurnSessionDeviceCheckProcPtr
+C/tdef/-/DRBurnSessionDeviceSelectionNotificationProcPtr
+C/func/-/DRBurnSessionGetBurn
+C/func/-/DRBurnSessionGetTypeID
+C/tdef/-/DRBurnSessionMediaCheckProcPtr
+C/tdef/-/DRBurnSessionProgressBeginNotificationProcPtr
+C/tag/-/DRBurnSessionProgressCallbacks
+C/tdef/-/DRBurnSessionProgressDialogOptionFlags
+C/tag/-/DRBurnSessionProgressDialogOptions
+C/tdef/-/DRBurnSessionProgressFinishNotificationProcPtr
+C/tdef/-/DRBurnSessionRef
+C/func/-/DRBurnSessionSetBurn
+C/tag/-/DRBurnSessionSetupCallbacks
+C/func/-/DRBurnSessionSetupDialog
+C/tdef/-/DRBurnSessionSetupDialogOptionFlags
+C/tag/-/DRBurnSessionSetupDialogOptions
+C/func/-/DRBurnSetProperties
+Objective-C/cl/-/DRBurnSetupPanel
+C/data/-/DRBurnSetupPanelDefaultButtonDefaultTitle
+C/data/-/DRBurnStatusChangedNotification
+C/data/-/DRBurnStrategyBDDAO
+C/data/-/DRBurnStrategyCDSAO
+C/data/-/DRBurnStrategyCDTAO
+C/data/-/DRBurnStrategyDVDDAO
+C/data/-/DRBurnStrategyIsRequiredKey
+C/data/-/DRBurnStrategyKey
+C/data/-/DRBurnTestingKey
+C/data/-/DRBurnUnderrunProtectionKey
+C/data/-/DRBurnVerifyDiscKey
+C/func/-/DRBurnWriteLayout
+C/data/-/DRCDTextArrangerKey
+Objective-C/cl/-/DRCDTextBlock
+Objective-C/cat/-/DRCDTextBlock(PropertyConvenienceMethods)
+C/func/-/DRCDTextBlockCreate
+C/func/-/DRCDTextBlockCreateArrayFromPackList
+C/func/-/DRCDTextBlockFlatten
+C/func/-/DRCDTextBlockGetProperties
+C/func/-/DRCDTextBlockGetTrackDictionaries
+C/func/-/DRCDTextBlockGetTypeID
+C/func/-/DRCDTextBlockGetValue
+C/tdef/-/DRCDTextBlockRef
+C/func/-/DRCDTextBlockSetProperties
+C/func/-/DRCDTextBlockSetTrackDictionaries
+C/func/-/DRCDTextBlockSetValue
+C/data/-/DRCDTextCharacterCodeKey
+C/data/-/DRCDTextClosedKey
+C/data/-/DRCDTextComposerKey
+C/data/-/DRCDTextCopyrightAssertedForNamesKey
+C/data/-/DRCDTextCopyrightAssertedForSpecialMessagesKey
+C/data/-/DRCDTextCopyrightAssertedForTitlesKey
+C/data/-/DRCDTextDiscIdentKey
+C/data/-/DRCDTextGenreCodeKey
+C/data/-/DRCDTextGenreKey
+C/data/-/DRCDTextKey
+C/data/-/DRCDTextLanguageKey
+C/data/-/DRCDTextMCNISRCKey
+C/data/-/DRCDTextNSStringEncodingKey
+C/data/-/DRCDTextPerformerKey
+C/data/-/DRCDTextSizeKey
+C/data/-/DRCDTextSongwriterKey
+C/data/-/DRCDTextSpecialMessageKey
+C/data/-/DRCDTextTitleKey
+C/data/-/DRCDTextTOC2Key
+C/data/-/DRCDTextTOCKey
+C/data/-/DRContentModificationDate
+C/func/-/DRCopyDeviceArray
+C/func/-/DRCopyLocalizedStringForAdditionalSense
+C/func/-/DRCopyLocalizedStringForDiscRecordingError
+C/func/-/DRCopyLocalizedStringForSenseCode
+C/func/-/DRCopyLocalizedStringForValue
+C/data/-/DRCopyrightFile
+C/data/-/DRCreationDate
+C/data/-/DRDataFormKey
+C/data/-/DRDataPreparer
+C/data/-/DRDefaultDate
+Objective-C/cl/-/DRDevice
+Objective-C/cat/-/DRDevice(InfoConvenience)
+Objective-C/cat/-/DRDevice(StatusConvenience)
+C/func/-/DRDeviceAcquireExclusiveAccess
+C/func/-/DRDeviceAcquireMediaReservation
+C/data/-/DRDeviceAppearedNotification
+C/data/-/DRDeviceBurnSpeedBD1x
+C/data/-/DRDeviceBurnSpeedCD1x
+C/data/-/DRDeviceBurnSpeedDVD1x
+C/data/-/DRDeviceBurnSpeedHDDVD1x
+C/data/-/DRDeviceBurnSpeedMax
+C/data/-/DRDeviceBurnSpeedsKey
+C/data/-/DRDeviceCanTestWriteCDKey
+C/data/-/DRDeviceCanTestWriteDVDKey
+C/data/-/DRDeviceCanUnderrunProtectCDKey
+C/data/-/DRDeviceCanUnderrunProtectDVDKey
+C/data/-/DRDeviceCanWriteBDKey
+C/data/-/DRDeviceCanWriteBDREKey
+C/data/-/DRDeviceCanWriteBDRKey
+C/data/-/DRDeviceCanWriteCDKey
+C/data/-/DRDeviceCanWriteCDRawKey
+C/data/-/DRDeviceCanWriteCDRKey
+C/data/-/DRDeviceCanWriteCDRWKey
+C/data/-/DRDeviceCanWriteCDSAOKey
+C/data/-/DRDeviceCanWriteCDTAOKey
+C/data/-/DRDeviceCanWriteCDTextKey
+C/data/-/DRDeviceCanWriteDVDDAOKey
+C/data/-/DRDeviceCanWriteDVDKey
+C/data/-/DRDeviceCanWriteDVDPlusRDoubleLayerKey
+C/data/-/DRDeviceCanWriteDVDPlusRKey
+C/data/-/DRDeviceCanWriteDVDPlusRWDoubleLayerKey
+C/data/-/DRDeviceCanWriteDVDPlusRWKey
+C/data/-/DRDeviceCanWriteDVDRAMKey
+C/data/-/DRDeviceCanWriteDVDRDualLayerKey
+C/data/-/DRDeviceCanWriteDVDRKey
+C/data/-/DRDeviceCanWriteDVDRWDualLayerKey
+C/data/-/DRDeviceCanWriteDVDRWKey
+C/data/-/DRDeviceCanWriteHDDVDKey
+C/data/-/DRDeviceCanWriteHDDVDRAMKey
+C/data/-/DRDeviceCanWriteHDDVDRDualLayerKey
+C/data/-/DRDeviceCanWriteHDDVDRKey
+C/data/-/DRDeviceCanWriteHDDVDRWDualLayerKey
+C/data/-/DRDeviceCanWriteHDDVDRWKey
+C/data/-/DRDeviceCanWriteIndexPointsKey
+C/data/-/DRDeviceCanWriteISRCKey
+C/data/-/DRDeviceCanWriteKey
+C/macro/-/DRDeviceCDXFactorForKPS
+C/func/-/DRDeviceCloseTray
+C/func/-/DRDeviceCopyDeviceForBSDName
+C/func/-/DRDeviceCopyDeviceForIORegistryEntryPath
+C/func/-/DRDeviceCopyInfo
+C/func/-/DRDeviceCopyStatus
+C/data/-/DRDeviceCurrentWriteSpeedKey
+C/data/-/DRDeviceDisappearedNotification
+C/macro/-/DRDeviceDVDXFactorForKPS
+C/func/-/DRDeviceEjectMedia
+C/data/-/DRDeviceFirmwareRevisionKey
+C/func/-/DRDeviceGetTypeID
+C/data/-/DRDeviceIORegistryEntryPathKey
+C/data/-/DRDeviceIsBusyKey
+C/data/-/DRDeviceIsTrayOpenKey
+C/func/-/DRDeviceIsValid
+C/macro/-/DRDeviceKPSForCDXFactor
+C/macro/-/DRDeviceKPSForDVDXFactor
+C/func/-/DRDeviceKPSForXFactor
+C/data/-/DRDeviceLoadingMechanismCanEjectKey
+C/data/-/DRDeviceLoadingMechanismCanInjectKey
+C/data/-/DRDeviceLoadingMechanismCanOpenKey
+C/data/-/DRDeviceMaximumWriteSpeedKey
+C/data/-/DRDeviceMediaBlocksFreeKey
+C/data/-/DRDeviceMediaBlocksOverwritableKey
+C/data/-/DRDeviceMediaBlocksUsedKey
+C/data/-/DRDeviceMediaBSDNameKey
+C/data/-/DRDeviceMediaClassBD
+C/data/-/DRDeviceMediaClassCD
+C/data/-/DRDeviceMediaClassDVD
+C/data/-/DRDeviceMediaClassHDDVD
+C/data/-/DRDeviceMediaClassKey
+C/data/-/DRDeviceMediaClassUnknown
+C/data/-/DRDeviceMediaDoubleLayerL0DataZoneBlocksKey
+C/data/-/DRDeviceMediaFreeSpaceKey
+C/data/-/DRDeviceMediaInfoKey
+C/data/-/DRDeviceMediaIsAppendableKey
+C/data/-/DRDeviceMediaIsBlankKey
+C/data/-/DRDeviceMediaIsErasableKey
+C/data/-/DRDeviceMediaIsOverwritableKey
+C/data/-/DRDeviceMediaIsReservedKey
+C/data/-/DRDeviceMediaOverwritableSpaceKey
+C/data/-/DRDeviceMediaSessionCountKey
+C/data/-/DRDeviceMediaStateInTransition
+C/data/-/DRDeviceMediaStateKey
+C/data/-/DRDeviceMediaStateMediaPresent
+C/data/-/DRDeviceMediaStateNone
+C/data/-/DRDeviceMediaTrackCountKey
+C/data/-/DRDeviceMediaTypeBDR
+C/data/-/DRDeviceMediaTypeBDRE
+C/data/-/DRDeviceMediaTypeBDROM
+C/data/-/DRDeviceMediaTypeCDR
+C/data/-/DRDeviceMediaTypeCDROM
+C/data/-/DRDeviceMediaTypeCDRW
+C/data/-/DRDeviceMediaTypeDVDPlusR
+C/data/-/DRDeviceMediaTypeDVDPlusRDoubleLayer
+C/data/-/DRDeviceMediaTypeDVDPlusRW
+C/data/-/DRDeviceMediaTypeDVDPlusRWDoubleLayer
+C/data/-/DRDeviceMediaTypeDVDR
+C/data/-/DRDeviceMediaTypeDVDRAM
+C/data/-/DRDeviceMediaTypeDVDRDualLayer
+C/data/-/DRDeviceMediaTypeDVDROM
+C/data/-/DRDeviceMediaTypeDVDRW
+C/data/-/DRDeviceMediaTypeDVDRWDualLayer
+C/data/-/DRDeviceMediaTypeHDDVDR
+C/data/-/DRDeviceMediaTypeHDDVDRAM
+C/data/-/DRDeviceMediaTypeHDDVDRDualLayer
+C/data/-/DRDeviceMediaTypeHDDVDROM
+C/data/-/DRDeviceMediaTypeHDDVDRW
+C/data/-/DRDeviceMediaTypeHDDVDRWDualLayer
+C/data/-/DRDeviceMediaTypeKey
+C/data/-/DRDeviceMediaTypeUnknown
+C/data/-/DRDeviceMediaUsedSpaceKey
+C/func/-/DRDeviceOpenTray
+C/data/-/DRDevicePhysicalInterconnectATAPI
+C/data/-/DRDevicePhysicalInterconnectFibreChannel
+C/data/-/DRDevicePhysicalInterconnectFireWire
+C/data/-/DRDevicePhysicalInterconnectKey
+C/data/-/DRDevicePhysicalInterconnectLocationExternal
+C/data/-/DRDevicePhysicalInterconnectLocationInternal
+C/data/-/DRDevicePhysicalInterconnectLocationKey
+C/data/-/DRDevicePhysicalInterconnectLocationUnknown
+C/data/-/DRDevicePhysicalInterconnectSCSI
+C/data/-/DRDevicePhysicalInterconnectUSB
+C/data/-/DRDeviceProductNameKey
+C/tdef/-/DRDeviceRef
+C/func/-/DRDeviceReleaseExclusiveAccess
+C/func/-/DRDeviceReleaseMediaReservation
+C/data/-/DRDeviceStatusChangedNotification
+C/data/-/DRDeviceSupportLevelAppleShipping
+C/data/-/DRDeviceSupportLevelAppleSupported
+C/data/-/DRDeviceSupportLevelKey
+C/data/-/DRDeviceSupportLevelNone
+C/data/-/DRDeviceSupportLevelUnsupported
+C/data/-/DRDeviceSupportLevelVendorSupported
+C/data/-/DRDeviceTrackInfoKey
+C/data/-/DRDeviceTrackRefsKey
+C/data/-/DRDeviceVendorNameKey
+C/data/-/DRDeviceWriteBufferSizeKey
+C/data/-/DRDeviceWriteCapabilitiesKey
+C/func/-/DRDeviceXFactorForKPS
+C/data/-/DRDVDCopyrightInfoKey
+C/data/-/DRDVDTimestampKey
+C/data/-/DREffectiveDate
+C/func/-/drem
+Objective-C/cl/-/DRErase
+Objective-C/cat/-/DRErase(PropertyConvenienceMethods)
+C/func/-/DREraseCopyStatus
+C/func/-/DREraseCreate
+C/func/-/DREraseGetDevice
+C/func/-/DREraseGetProperties
+C/func/-/DREraseGetTypeID
+C/data/-/DREraseIcon
+Objective-C/cl/-/DREraseProgressPanel
+C/data/-/DREraseProgressPanelDidFinishNotification
+C/data/-/DREraseProgressPanelWillBeginNotification
+C/tdef/-/DREraseRef
+C/func/-/DREraseSessionBeginProgressDialog
+C/func/-/DREraseSessionCreate
+C/tdef/-/DREraseSessionDeviceCheckProcPtr
+C/tdef/-/DREraseSessionDeviceSelectionNotificationProcPtr
+C/tdef/-/DREraseSessionEraseCompleteProcPtr
+C/func/-/DREraseSessionGetErase
+C/func/-/DREraseSessionGetTypeID
+C/tdef/-/DREraseSessionMediaCheckProcPtr
+C/tdef/-/DREraseSessionProgressBeginNotificationProcPtr
+C/tag/-/DREraseSessionProgressCallbacks
+C/tdef/-/DREraseSessionProgressDialogOptionFlags
+C/tag/-/DREraseSessionProgressDialogOptions
+C/tdef/-/DREraseSessionProgressFinishNotificationProcPtr
+C/tdef/-/DREraseSessionRef
+C/func/-/DREraseSessionSetErase
+C/tag/-/DREraseSessionSetupCallbacks
+C/func/-/DREraseSessionSetupDialog
+C/tdef/-/DREraseSessionSetupDialogOptionFlags
+C/tag/-/DREraseSessionSetupDialogOptions
+C/func/-/DREraseSetProperties
+Objective-C/cl/-/DREraseSetupPanel
+C/func/-/DREraseStart
+C/data/-/DREraseTypeComplete
+C/data/-/DREraseTypeKey
+C/data/-/DRErrorStatusAdditionalSenseStringKey
+C/data/-/DRErrorStatusErrorInfoStringKey
+C/data/-/DRErrorStatusErrorKey
+C/data/-/DRErrorStatusErrorStringKey
+C/data/-/DRErrorStatusKey
+C/data/-/DRErrorStatusSenseCodeStringKey
+C/data/-/DRErrorStatusSenseKey
+C/data/-/DRExpirationDate
+Objective-C/cl/-/DRFile
+Objective-C/cat/-/DRFile(VirtualFiles)
+Objective-C/cat/-/DRFile(VirtualLinks)
+C/func/-/DRFileCreateReal
+C/func/-/DRFileCreateRealWithURL
+C/func/-/DRFileCreateVirtualLink
+C/func/-/DRFileCreateVirtualWithCallback
+C/func/-/DRFileCreateVirtualWithData
+Objective-C/intf/-/DRFileDataProduction
+C/tdef/-/DRFileFork
+C/tdef/-/DRFileForkIndex
+C/tag/-/DRFileForkSizeInfo
+C/tdef/-/DRFileForkSizeQuery
+C/func/-/DRFileGetTypeID
+C/tdef/-/DRFileMessage
+C/tdef/-/DRFileProc
+C/tag/-/DRFileProductionInfo
+C/tdef/-/DRFileRef
+C/tdef/-/DRFilesystemInclusionMask
+C/tdef/-/DRFilesystemMask
+C/func/-/DRFilesystemTrackCreate
+C/func/-/DRFilesystemTrackEstimateOverhead
+C/tdef/-/DRFilesystemTrackRef
+Objective-C/cl/-/DRFolder
+Objective-C/cat/-/DRFolder(VirtualFolders)
+C/func/-/DRFolderAddChild
+C/func/-/DRFolderConvertRealToVirtual
+C/func/-/DRFolderCopyChildren
+C/func/-/DRFolderCountChildren
+C/func/-/DRFolderCreateReal
+C/func/-/DRFolderCreateRealWithURL
+C/func/-/DRFolderCreateVirtual
+C/func/-/DRFolderGetTypeID
+C/tdef/-/DRFolderRef
+C/func/-/DRFolderRemoveChild
+C/data/-/DRFreeBlocksKey
+Objective-C/cl/-/DRFSObject
+C/func/-/DRFSObjectCopyBaseName
+C/func/-/DRFSObjectCopyFilesystemProperties
+C/func/-/DRFSObjectCopyFilesystemProperty
+C/func/-/DRFSObjectCopyMangledName
+C/func/-/DRFSObjectCopyMangledNames
+C/func/-/DRFSObjectCopyRealURL
+C/func/-/DRFSObjectCopySpecificName
+C/func/-/DRFSObjectCopySpecificNames
+C/func/-/DRFSObjectGetFilesystemMask
+C/func/-/DRFSObjectGetParent
+C/func/-/DRFSObjectGetRealFSRef
+C/func/-/DRFSObjectIsVirtual
+C/tdef/-/DRFSObjectRef
+C/func/-/DRFSObjectSetBaseName
+C/func/-/DRFSObjectSetFilesystemMask
+C/func/-/DRFSObjectSetFilesystemProperties
+C/func/-/DRFSObjectSetFilesystemProperty
+C/func/-/DRFSObjectSetSpecificName
+C/func/-/DRFSObjectSetSpecificNames
+C/func/-/DRGetRefCon
+C/data/-/DRHFSPlus
+C/data/-/DRHFSPlusCatalogNodeID
+C/data/-/DRHFSPlusTextEncodingHint
+C/data/-/DRIndexPointsKey
+C/data/-/DRInvisible
+C/data/-/DRISO9660
+C/data/-/DRISO9660LevelOne
+C/data/-/DRISO9660LevelTwo
+C/data/-/DRISO9660VersionNumber
+C/data/-/DRISOLevel
+C/data/-/DRISOMacExtensions
+C/data/-/DRISORockRidgeExtensions
+C/econst/-/driverHardwareGoneErr
+C/data/-/DRJoliet
+C/tdef/-/DRLinkType
+C/data/-/DRLinkTypeFinderAlias
+C/data/-/DRLinkTypeHardLink
+C/data/-/DRLinkTypeSymbolicLink
+C/data/-/DRMacExtendedFinderFlags
+C/data/-/DRMacFileCreator
+C/data/-/DRMacFileType
+C/data/-/DRMacFinderFlags
+C/data/-/DRMacFinderHideExtension
+C/data/-/DRMacIconLocation
+C/data/-/DRMacScrollPosition
+C/data/-/DRMacWindowBounds
+C/data/-/DRMacWindowView
+C/data/-/DRMaxBurnSpeedKey
+C/data/-/DRMediaCatalogNumberKey
+Objective-C/cl/-/DRMSF
+Objective-C/cl/-/DRMSFFormatter
+C/data/-/DRNextWritableAddressKey
+C/tdef/-/DRNotificationCallback
+Objective-C/cl/-/DRNotificationCenter
+C/func/-/DRNotificationCenterAddObserver
+C/func/-/DRNotificationCenterCreate
+C/func/-/DRNotificationCenterCreateRunLoopSource
+C/func/-/DRNotificationCenterGetTypeID
+C/tdef/-/DRNotificationCenterRef
+C/func/-/DRNotificationCenterRemoveObserver
+JavaScript/data/Clipboard/dropEffect
+Objective-C/instm/IKImageBrowserView/dropOperation
+C/data/-/DRPosixFileMode
+C/data/-/DRPosixGID
+C/data/-/DRPosixUID
+C/data/-/DRPreGapIsRequiredKey
+C/data/-/DRPreGapLengthKey
+C/data/-/DRPublisher
+C/data/-/DRRecordingDate
+C/tag/-/DRRefConCallbacks
+C/tdef/-/DRRefConReleaseCallback
+C/tdef/-/DRRefConRetainCallback
+C/data/-/DRSCMSCopyrightFree
+C/data/-/DRSCMSCopyrightProtectedCopy
+C/data/-/DRSCMSCopyrightProtectedOriginal
+C/data/-/DRSerialCopyManagementStateKey
+C/data/-/DRSessionFormatKey
+C/data/-/DRSessionNumberKey
+C/func/-/DRSetRefCon
+Objective-C/cl/-/DRSetupPanel
+C/data/-/DRSetupPanelDeviceSelectionChangedNotification
+C/data/-/DRSetupPanelSelectedDeviceKey
+C/data/-/DRStatusCurrentSessionKey
+C/data/-/DRStatusCurrentSpeedKey
+C/data/-/DRStatusCurrentTrackKey
+C/data/-/DRStatusEraseTypeKey
+C/data/-/DRStatusPercentCompleteKey
+C/data/-/DRStatusProgressCurrentKPS
+C/data/-/DRStatusProgressCurrentXFactor
+C/data/-/DRStatusProgressInfoKey
+C/data/-/DRStatusStateDone
+C/data/-/DRStatusStateErasing
+C/data/-/DRStatusStateFailed
+C/data/-/DRStatusStateFinishing
+C/data/-/DRStatusStateKey
+C/data/-/DRStatusStateNone
+C/data/-/DRStatusStatePreparing
+C/data/-/DRStatusStateSessionClose
+C/data/-/DRStatusStateSessionOpen
+C/data/-/DRStatusStateTrackClose
+C/data/-/DRStatusStateTrackOpen
+C/data/-/DRStatusStateTrackWrite
+C/data/-/DRStatusStateVerifying
+C/data/-/DRStatusTotalSessionsKey
+C/data/-/DRStatusTotalTracksKey
+C/data/-/DRSubchannelDataFormKey
+C/data/-/DRSubchannelDataFormNone
+C/data/-/DRSubchannelDataFormPack
+C/data/-/DRSubchannelDataFormRaw
+C/data/-/DRSuppressMacSpecificFiles
+C/data/-/DRSynchronousBehaviorKey
+C/data/-/DRSystemIdentifier
+Objective-C/cl/-/DRTrack
+Objective-C/cat/-/DRTrack(AudioContentCreation)
+Objective-C/cat/-/DRTrack(DataContentCreation)
+Objective-C/cat/-/DRTrack(PropertyConvenience)
+C/tdef/-/DRTrackCallbackProc
+C/func/-/DRTrackCreate
+Objective-C/intf/-/DRTrackDataProduction
+C/func/-/DRTrackEstimateLength
+C/func/-/DRTrackGetProperties
+C/func/-/DRTrackGetTypeID
+C/data/-/DRTrackIsEmptyKey
+C/data/-/DRTrackISRCKey
+C/data/-/DRTrackLengthKey
+C/tdef/-/DRTrackMessage
+C/data/-/DRTrackModeKey
+C/data/-/DRTrackNumberKey
+C/data/-/DRTrackPacketSizeKey
+C/data/-/DRTrackPacketTypeFixed
+C/data/-/DRTrackPacketTypeKey
+C/data/-/DRTrackPacketTypeVariable
+C/tag/-/DRTrackProductionInfo
+C/tdef/-/DRTrackRef
+C/func/-/DRTrackSetProperties
+C/func/-/DRTrackSpeedTest
+C/data/-/DRTrackStartAddressKey
+C/data/-/DRTrackTypeClosed
+C/data/-/DRTrackTypeIncomplete
+C/data/-/DRTrackTypeInvisible
+C/data/-/DRTrackTypeKey
+C/data/-/DRTrackTypeReserved
+C/tdef/-/DRTypeRef
+C/data/-/DRUDF
+C/data/-/DRUDFApplicationIdentifierSuffix
+C/data/-/DRUDFExtendedFilePermissions
+C/data/-/DRUDFInterchangeLevel
+C/data/-/DRUDFMaxInterchangeLevel
+C/data/-/DRUDFMaxVolumeSequenceNumber
+C/data/-/DRUDFPrimaryVolumeDescriptorNumber
+C/data/-/DRUDFRealTimeFile
+C/data/-/DRUDFVersion102
+C/data/-/DRUDFVersion150
+C/data/-/DRUDFVolumeSequenceNumber
+C/data/-/DRUDFVolumeSetIdentifier
+C/data/-/DRUDFVolumeSetImplementationUse
+C/data/-/DRUDFVolumeSetTimestamp
+C/data/-/DRUDFWriteVersion
+C/data/-/DRVerificationTypeChecksum
+C/data/-/DRVerificationTypeKey
+C/data/-/DRVerificationTypeNone
+C/data/-/DRVerificationTypeProduceAgain
+C/data/-/DRVerificationTypeReceiveData
+C/data/-/DRVolumeCheckedDate
+C/data/-/DRVolumeCreationDate
+C/data/-/DRVolumeEffectiveDate
+C/data/-/DRVolumeExpirationDate
+C/data/-/DRVolumeModificationDate
+C/data/-/DRVolumeSet
+C/tdef/-/DrvQEl
+C/func/-/dsa
+C/func/-/DSA_do_sign
+C/func/-/DSA_do_verify
+C/func/-/DSA_dup_DH
+C/func/-/DSA_free
+C/func/-/DSA_generate_key
+C/func/-/DSA_generate_parameters
+C/func/-/DSA_get_default_method
+C/func/-/DSA_get_ex_data
+C/func/-/DSA_get_ex_new_index
+C/func/-/DSA_new
+C/func/-/DSA_new_method
+C/func/-/DSA_OpenSSL
+C/func/-/DSA_print
+C/func/-/DSA_print_fp
+C/func/-/DSA_set_default_method
+C/func/-/DSA_set_ex_data
+C/func/-/DSA_set_method
+C/func/-/DSA_SIG_free
+C/func/-/DSA_SIG_new
+C/func/-/DSA_sign
+C/func/-/DSA_sign_setup
+C/func/-/DSA_size
+C/func/-/DSA_verify
+C/func/-/dsAddAttribute
+C/func/-/dsAddAttributeValue
+C/func/-/dsAddChildPIDToReference
+C/func/-/dsAllocAttributeValueEntry
+C/func/-/dsAllocStringsFromList
+C/func/-/DSAparams_print
+C/func/-/DSAparams_print_fp
+C/func/-/dsAppendAuthBuffer
+C/func/-/dsAppendAuthBufferWithAuthorityAttribute
+C/func/-/dsAppendAuthBufferWithAuthorityStrings
+C/func/-/dsAppendStringToListAlloc
+C/func/-/dsBuildFromPath
+C/func/-/dsBuildListFromNodesAlloc
+C/func/-/dsBuildListFromPathAlloc
+C/func/-/dsBuildListFromStrings
+C/func/-/dsBuildListFromStringsAlloc
+C/func/-/dsBuildListFromStringsAllocV
+C/func/-/dsCloseAttributeList
+C/func/-/dsCloseAttributeValueList
+C/func/-/dsCloseDirNode
+C/func/-/dsCloseDirService
+C/func/-/dsCloseRecord
+C/func/-/dsCopyDirStatusName
+C/func/-/dsCreateRecord
+C/func/-/dsCreateRecordAndOpen
+C/func/-/dsDataBufferAllocate
+C/func/-/dsDataBufferDeAllocate
+C/func/-/dsDataListAllocate
+C/func/-/dsDataListCopyList
+C/func/-/dsDataListDeallocate
+C/func/-/dsDataListDeAllocate
+C/func/-/dsDataListDeleteThisNode
+C/func/-/dsDataListGetNodeAlloc
+C/func/-/dsDataListGetNodeCount
+C/func/-/dsDataListInsertAfter
+C/func/-/dsDataListMergeListAfter
+C/func/-/dsDataNodeAllocateBlock
+C/func/-/dsDataNodeAllocateString
+C/func/-/dsDataNodeDeAllocate
+C/func/-/dsDataNodeGetLength
+C/func/-/dsDataNodeGetSize
+C/func/-/dsDataNodeSetLength
+C/func/-/dsDeallocAttributeEntry
+C/func/-/dsDeallocAttributeValueEntry
+C/func/-/dsDeallocRecordEntry
+C/tdef/-/DSDebugLog
+C/func/-/dsDeleteRecord
+C/func/-/dsDoAttributeValueSearch
+C/func/-/dsDoAttributeValueSearchWithData
+C/func/-/dsDoDirNodeAuth
+C/func/-/dsDoDirNodeAuthOnRecordType
+C/func/-/dsDoMultipleAttributeValueSearch
+C/func/-/dsDoMultipleAttributeValueSearchWithData
+C/func/-/dsDoPlugInCustomCall
+C/func/-/dsFillAuthBuffer
+C/func/-/dsFindDirNodes
+C/func/-/dsFlushRecord
+C/func/-/dsGetAttributeEntry
+C/func/-/dsGetAttributeValue
+C/func/-/dsGetDataLength
+C/func/-/dsGetDirNodeCount
+C/func/-/dsGetDirNodeCountWithInfo
+C/func/-/dsGetDirNodeInfo
+C/func/-/dsGetDirNodeList
+C/func/-/dsGetDirNodeName
+C/func/-/dsGetNextAttributeEntry
+C/func/-/dsGetNextAttributeValue
+C/func/-/dsGetPathFromList
+C/func/-/dsGetRecordAttributeInfo
+C/func/-/dsGetRecordAttributeValueByID
+C/func/-/dsGetRecordAttributeValueByIndex
+C/func/-/dsGetRecordAttributeValueByValue
+C/func/-/dsGetRecordEntry
+C/func/-/dsGetRecordList
+C/func/-/dsGetRecordNameFromEntry
+C/func/-/dsGetRecordReferenceInfo
+C/func/-/dsGetRecordTypeFromEntry
+C/func/-/DSIAttention
+C/func/-/DSICloseSession
+C/func/-/DSICommand
+C/func/-/DSIGetStatus
+C/tag/-/DSIHeader
+C/func/-/DSIOpenSession
+C/func/-/dsIsDirServiceLocalRunning
+C/func/-/dsIsDirServiceRunning
+C/func/-/DSITickle
+C/func/-/DSIWrite
+C/econst/-/dskFulErr
+C/func/-/dsOpenDirNode
+C/func/-/dsOpenDirService
+C/func/-/dsOpenDirServiceLocal
+C/func/-/dsOpenDirServiceProxy
+C/func/-/dsOpenRecord
+C/func/-/dsParseAuthAuthority
+C/tag/-/DSPComplex
+C/tdef/-/DSPComplex
+C/tag/-/DSPDoubleComplex
+C/tdef/-/DSPDoubleComplex
+C/tag/-/DSPDoubleSplitComplex
+C/tdef/-/DSPDoubleSplitComplex
+C/macro/-/DSPROXY
+C/tdef/-/DSPSplitComplex
+C/tag/-/DSPSplitComplex
+C/tdef/-/DSRegisterNode
+C/func/-/dsReleaseContinueData
+C/func/-/dsRemoveAttribute
+C/func/-/dsRemoveAttributeValue
+C/func/-/dsServiceInformationAllocate
+C/func/-/dsSetAttributeValue
+C/func/-/dsSetAttributeValues
+C/func/-/dsSetRecordName
+C/func/-/dsSetRecordType
+JavaScript/clconst/WebGLRenderingContext/DST_ALPHA
+JavaScript/clconst/WebGLRenderingContext/DST_COLOR
+C/tdef/-/DSUnregisterNode
+C/func/-/dsVerifyDirRefNum
+Objective-C/instm/NSXMLDocument/DTD
+Objective-C/instm/NSXMLDTDNode/DTDKind
+Objective-C/clm/NSXMLNode/DTDNodeWithXMLString:
+C/tdef/-/DTPBRec
+Objective-C/instm/CalTask/dueDate
+Objective-C/instp/CalTask/dueDate
+C/tdef/-/dummy
+C/macro/-/dummy
+C/func/-/dup
+C/func/-/dup2
+C/econst/-/dupFNErr
+C/econst/-/duplicatePasteboardFlavorErr
+Objective-C/instm/NSWorkspace/duplicateURLs:completionHandler:
+C/func/-/duplocale
+C/func/-/dupwin
+Objective-C/instm/NSAnimationContext/duration
+Objective-C/instm/NSAnimation/duration
+Objective-C/instm/QTSampleBuffer/duration
+Objective-C/instm/NSSound/duration
+Objective-C/instp/NSTextCheckingResult/duration
+Objective-C/instm/NSTextCheckingResult/duration
+Objective-C/intfm/CAMediaTiming/duration
+Objective-C/intfp/CAMediaTiming/duration
+Objective-C/instm/QTMovie/duration
+JavaScript/data/HTMLMediaElement/duration
+Objective-C/intfm/FxTimingAPI/durationForEffect:
+Objective-C/intfm/FxTimingAPI/durationOfImageParm:forEffect:
+Objective-C/intfm/FxTimingAPI/durationOfInputAToTransition:
+Objective-C/intfm/FxTimingAPI/durationOfInputBToTransition:
+Objective-C/intfm/FxTimingAPI/durationOfInputToFilter:
+C++/data/IOAudioDevice/duringStartup
+C/tdef/-/DVDAspectRatio
+C/tdef/-/DVDAudioExtensionCode
+C/tdef/-/DVDAudioFormat
+C/func/-/DVDClearLastPlayBookmark
+C/func/-/DVDCloseMediaFile
+C/func/-/DVDCloseMediaVolume
+C/tdef/-/DVDDiscID
+C/func/-/DVDDisplaySubPicture
+C/func/-/DVDDispose
+C/func/-/DVDDoButtonActivate
+C/tdef/-/DVDDomainCode
+C/func/-/DVDDoMenuClick
+C/func/-/DVDDoMenuMouseOver
+C/func/-/DVDDoUserNavigation
+C/func/-/DVDEnableWebAccess
+C/tdef/-/DVDErrorCode
+C/tdef/-/DVDEventCallBackFunctionPtr
+C/tdef/-/DVDEventCode
+C/tdef/-/DVDFatalErrCallBackFunctionPtr
+C/tdef/-/DVDFormat
+C/func/-/DVDGetAngle
+C/func/-/DVDGetAspectRatio
+C/func/-/DVDGetAudioLanguageCode
+C/func/-/DVDGetAudioLanguageCodeByStream
+C/func/-/DVDGetAudioStream
+C/func/-/DVDGetAudioStreamFormat
+C/func/-/DVDGetAudioStreamFormatByStream
+C/func/-/DVDGetAudioVolume
+C/func/-/DVDGetAudioVolumeInfo
+C/func/-/DVDGetBookmark
+C/func/-/DVDGetButtoninfo
+C/func/-/DVDGetButtonPosition
+C/func/-/DVDGetChapter
+C/func/-/DVDGetDiscRegionCode
+C/func/-/DVDGetDriveRegionCode
+C/func/-/DVDGetFormatStandard
+C/func/-/DVDGetGPRMValue
+C/func/-/DVDGetLastPlayBookmark
+C/func/-/DVDGetMediaUniqueID
+C/func/-/DVDGetMediaVolumeCFName
+C/func/-/DVDGetMediaVolumeName
+C/func/-/DVDGetMenuLanguageCode
+C/func/-/DVDGetNativeVideoSize
+C/func/-/DVDGetNumAngles
+C/func/-/DVDGetNumAudioStreams
+C/func/-/DVDGetNumChapters
+C/func/-/DVDGetNumSubPictureStreams
+C/func/-/DVDGetNumTitles
+C/func/-/DVDGetScanRate
+C/func/-/DVDGetState
+C/func/-/DVDGetSubPictureLanguageCode
+C/func/-/DVDGetSubPictureLanguageCodeByStream
+C/func/-/DVDGetSubPictureStream
+C/func/-/DVDGetTime
+C/func/-/DVDGetTimeEventRate
+C/func/-/DVDGetTitle
+C/func/-/DVDGetVideoBounds
+C/func/-/DVDGetVideoDevice
+C/func/-/DVDGetVideoDisplay
+C/func/-/DVDGetVideoKeyColor
+C/func/-/DVDGetVideoPort
+C/func/-/DVDGetVideoWindowID
+C/func/-/DVDGoBackOneLevel
+C/func/-/DVDGotoBookmark
+C/func/-/DVDGoToMenu
+C/func/-/DVDHasMedia
+C/func/-/DVDHasMenu
+C/func/-/DVDHasNextChapter
+C/func/-/DVDHasPreviousChapter
+C/func/-/DVDIdle
+C/func/-/DVDInitialize
+C/func/-/DVDIsDisplayingSubPicture
+C/func/-/DVDIsMuted
+C/func/-/DVDIsOnMenu
+C/func/-/DVDIsPaused
+C/func/-/DVDIsPlaying
+C/func/-/DVDIsRegisteredEventCallBack
+C/func/-/DVDIsSupportedDevice
+C/func/-/DVDIsSupportedDisplay
+C/func/-/DVDIsValidMediaRef
+C/tdef/-/DVDLanguageCode
+C/tdef/-/DVDMenu
+C/func/-/DVDMute
+C/func/-/DVDNextChapter
+C/func/-/DVDOpenMediaFile
+C/func/-/DVDOpenMediaVolume
+C/func/-/DVDPause
+C/func/-/DVDPlay
+C/func/-/DVDPreviousChapter
+C/tdef/-/DVDRegionCode
+C/func/-/DVDRegisterEventCallBack
+C/func/-/DVDResume
+C/func/-/DVDReturnToTitle
+C/func/-/DVDScan
+C/tdef/-/DVDScanDirection
+C/tdef/-/DVDScanRate
+C/func/-/DVDSetAngle
+C/func/-/DVDSetAspectRatio
+C/func/-/DVDSetAudioStream
+C/func/-/DVDSetAudioVolume
+C/func/-/DVDSetChapter
+C/func/-/DVDSetDefaultAudioLanguageCode
+C/func/-/DVDSetDefaultMenuLanguageCode
+C/func/-/DVDSetDefaultSubPictureLanguageCode
+C/func/-/DVDSetDriveRegionCode
+C/func/-/DVDSetFatalErrorCallBack
+C/func/-/DVDSetLastPlayBookmark
+C/func/-/DVDSetSubPictureStream
+C/func/-/DVDSetTime
+C/func/-/DVDSetTimeEventRate
+C/func/-/DVDSetTitle
+C/func/-/DVDSetVideoBounds
+C/func/-/DVDSetVideoDevice
+C/func/-/DVDSetVideoDisplay
+C/func/-/DVDSetVideoPort
+C/func/-/DVDSetVideoWindowID
+C/func/-/DVDSleep
+C/tdef/-/DVDState
+C/func/-/DVDStepFrame
+C/func/-/DVDStop
+C/tdef/-/DVDSubpictureExtensionCode
+C/func/-/DVDSwitchToDevice
+C/func/-/DVDSwitchToDisplay
+C/tdef/-/DVDTimeCode
+C/tdef/-/DVDTimePosition
+C/func/-/DVDUnregisterEventCallBack
+C/tdef/-/DVDUOPCode
+C/func/-/DVDUpdateVideo
+C/tdef/-/DVDUserNavigation
+C/func/-/DVDWakeUp
+JavaScript/data/SVGFEOffsetElement/dx
+JavaScript/data/SVGTextPositioningElement/dx
+JavaScript/data/SVGFEOffsetElement/dy
+JavaScript/data/SVGTextPositioningElement/dy
+C/func/-/dyld
+C/func/-/dyld_stub_binding_helper
+C/tag/-/dylib
+C/tag/-/dylib_command
+C/tag/-/dylib_module
+C/tag/-/dylib_module_64
+C/tag/-/dylib_reference
+C/tag/-/dylib_table_of_contents
+C/tag/-/dylinker_command
+JavaScript/clconst/WebGLRenderingContext/DYNAMIC_DRAW
+C/func/-/dynamic_pointer_cast
+C/tag/-/dysymtab_command
+JavaScript/data/SVGMatrix/e
+JavaScript/data/WebKitCSSMatrix/e
+C/macro/-/E_PENDING
+Objective-C/instm/NSDate/earlierDate:
+C/tdef/-/eAttributeFlags
+C/func/-/ecdsa
+C/func/-/ECDSA_do_sign
+C/func/-/ECDSA_do_sign_ex
+C/func/-/ECDSA_do_verify
+C/func/-/ECDSA_get_default_method
+C/func/-/ECDSA_get_ex_data
+C/func/-/ECDSA_get_ex_new_index
+C/func/-/ECDSA_OpenSSL
+C/func/-/ECDSA_set_default_method
+C/func/-/ECDSA_set_ex_data
+C/func/-/ECDSA_set_method
+C/func/-/ECDSA_SIG_free
+C/func/-/ECDSA_SIG_new
+C/func/-/ECDSA_sign
+C/func/-/ECDSA_sign_ex
+C/func/-/ECDSA_sign_setup
+C/func/-/ECDSA_size
+C/func/-/ECDSA_verify
+C/econst/-/eCFBndleGetInfoDictErr
+C/econst/-/eCFDictGetValueErr
+C/econst/-/eCFMGetFileSysRepErr
+C/econst/-/eCFPlugInGetBundleErr
+C/func/-/echo
+C/func/-/echo_wchar
+C/func/-/echochar
+Objective-C/instm/NSSecureTextFieldCell/echosBullets
+C/func/-/ecvt
+C/econst/-/eDataReceiveErr_NoAttrCount
+C/econst/-/eDataReceiveErr_NoAttrEntry
+C/econst/-/eDataReceiveErr_NoAttrListRef
+C/econst/-/eDataReceiveErr_NoAttrValueEntry
+C/econst/-/eDataReceiveErr_NoAttrValueListRef
+C/econst/-/eDataReceiveErr_NoContinueData
+C/econst/-/eDataReceiveErr_NoDataBuff
+C/econst/-/eDataReceiveErr_NoDirRef
+C/econst/-/eDataReceiveErr_NoNodeChangeToken
+C/econst/-/eDataReceiveErr_NoNodeCount
+C/econst/-/eDataReceiveErr_NoRecEntry
+C/econst/-/eDataReceiveErr_NoRecEntryCount
+C/econst/-/eDataReceiveErr_NoRecMatchCount
+C/econst/-/eDataReceiveErr_NoRecRef
+Objective-C/instm/NSDrawer/edge
+Objective-C/instm/CALayer/edgeAntialiasingMask
+Objective-C/instp/CALayer/edgeAntialiasingMask
+Objective-C/binding/NSComboBox/editable
+Objective-C/binding/NSMovieView/editable
+Objective-C/binding/NSButtonCell/editable
+Objective-C/binding/NSDictionaryController/editable
+Objective-C/binding/NSImageCell/editable
+Objective-C/binding/NSArrayController/editable
+Objective-C/binding/NSDatePickerCell/editable
+Objective-C/binding/NSImageView/editable
+Objective-C/binding/NSFormCell/editable
+Objective-C/binding/NSObjectController/editable
+Objective-C/binding/NSLevelIndicatorCell/editable
+Objective-C/binding/NSComboBoxCell/editable
+Objective-C/binding/NSPopUpButtonCell/editable
+Objective-C/binding/NSTextView/editable
+Objective-C/binding/NSTextField/editable
+Objective-C/binding/QTMovieView/editable
+Objective-C/binding/NSTableColumn/editable
+Objective-C/binding/NSTreeController/editable
+Objective-C/binding/NSSearchField/editable
+Objective-C/binding/NSTextFieldCell/editable
+Objective-C/binding/NSPathCell/editable
+Objective-C/binding/NSTokenFieldCell/editable
+Objective-C/binding/NSSecureTextField/editable
+Objective-C/binding/NSSliderCell/editable
+Objective-C/binding/NSTokenField/editable
+Objective-C/binding/NSPredicateEditor/editable
+Objective-C/binding/NSStepperCell/editable
+Objective-C/binding/NSSecureTextFieldCell/editable
+Objective-C/binding/NSSegmentedCell/editable
+Objective-C/instp/IKImageView/editable
+Objective-C/instm/IKImageView/editable
+Objective-C/instm/WebView/editableDOMRangeForPoint:
+Objective-C/intfm/ApertureEditManager/editableVersionIds
+Objective-C/intfm/ApertureEditManager/editableVersionsOfVersions:requestedFormat:stackWithOriginal:
+Objective-C/intfm/ApertureEditManager/editableVersionsOfVersions:stackWithOriginal:
+Objective-C/instm/NSTableView/editColumn:row:withEvent:select:
+Objective-C/instm/NSTextStorage/edited:range:changeInLength:
+Objective-C/instm/NSTableView/editedColumn
+Objective-C/instm/NSTextStorage/editedMask
+Objective-C/instm/NSTextStorage/editedRange
+Objective-C/instm/NSTableView/editedRow
+Objective-C/instm/ABPeoplePickerView/editInAddressBook:
+Objective-C/instm/WebView/editingDelegate
+Objective-C/instm/NSFormatter/editingStringForObjectValue:
+Objective-C/instm/NSBrowser/editItemAtIndexPath:withEvent:select:
+C/func/-/editline
+Objective-C/intfm/ApertureEditPlugIn/editManager:didImportImageAtPath:versionUniqueID:
+Objective-C/intfm/ApertureEditPlugIn/editManager:didNotImportImageAtPath:error:
+Objective-C/intfm/ApertureEditPlugIn/editWindow
+Objective-C/instm/NSCell/editWithFrame:inView:editor:delegate:event:
+C/econst/-/eDSAllocationFailed
+C/econst/-/eDSAnyMatch
+C/econst/-/eDSAttributeDoesNotExist
+C/econst/-/eDSAttributeNotFound
+C/econst/-/eDSAttributeValueNotFound
+C/econst/-/eDSAttrListError
+C/econst/-/eDSAuthAccountDisabled
+C/econst/-/eDSAuthAccountExpired
+C/econst/-/eDSAuthAccountInactive
+C/econst/-/eDSAuthBadPassword
+C/econst/-/eDSAuthCannotRecoverPasswd
+C/econst/-/eDSAuthContinueDataBad
+C/econst/-/eDSAuthenticationFailed
+C/econst/-/eDSAuthenticationSearchNodeName
+C/econst/-/eDSAuthFailed
+C/econst/-/eDSAuthFailedClearTextOnly
+C/econst/-/eDSAuthInBuffFormatError
+C/econst/-/eDSAuthInvalidComputer
+C/econst/-/eDSAuthInvalidLogonHours
+C/econst/-/eDSAuthInvalidUserName
+C/econst/-/eDSAuthMasterUnreachabe
+C/econst/-/eDSAuthMethodNotSupported
+C/econst/-/eDSAuthNewPasswordRequired
+C/econst/-/eDSAuthNoAuthServerFound
+C/econst/-/eDSAuthNoSuchEntity
+C/econst/-/eDSAuthParameterErr
+C/econst/-/eDSAuthPasswordChangeTooSoon
+C/econst/-/eDSAuthPasswordExpired
+C/econst/-/eDSAuthPasswordNeedsDigit
+C/econst/-/eDSAuthPasswordNeedsLetter
+C/econst/-/eDSAuthPasswordQualityCheckFailed
+C/econst/-/eDSAuthPasswordTooLong
+C/econst/-/eDSAuthPasswordTooShort
+C/econst/-/eDSAuthResponseBufTooSmall
+C/econst/-/eDSAuthServerError
+C/econst/-/eDSAuthUnknownUser
+C/econst/-/eDSBadContextData
+C/econst/-/eDSBadDataNodeFormat
+C/econst/-/eDSBadDataNodeLength
+C/econst/-/eDSBadDirReferences
+C/econst/-/eDSBadPacket
+C/econst/-/eDSBadSourceDataNode
+C/econst/-/eDSBadTargetDataNode
+C/econst/-/eDSBeginAppleReserve1
+C/econst/-/eDSBeginAppleReserve2
+C/econst/-/eDSBogusServer
+C/econst/-/eDSBufferTooSmall
+C/econst/-/eDSCannotAccessSession
+C/econst/-/eDSCloseFailed
+C/econst/-/eDSCompoundExpression
+C/econst/-/eDSConfigNodeName
+C/econst/-/eDSContactMaster
+C/econst/-/eDSContactsSearchNodeName
+C/econst/-/eDSContains
+C/econst/-/eDSContinue
+C/econst/-/eDSCorruptBuffer
+C/econst/-/eDSCorruptRecEntryData
+C/econst/-/eDSCustomBlockFailed
+C/econst/-/eDSCustomUnblockFailed
+C/econst/-/eDSCustomYieldFailed
+C/econst/-/eDSDeAllocateFailed
+C/econst/-/eDSDefaultNetworkNodes
+C/econst/-/eDSDirSrvcNotOpened
+C/econst/-/eDSEmptyAttribute
+C/econst/-/eDSEmptyAttributeRequestList
+C/econst/-/eDSEmptyAttributeType
+C/econst/-/eDSEmptyAttributeTypeList
+C/econst/-/eDSEmptyAttributeValue
+C/econst/-/eDSEmptyAuthMethod
+C/econst/-/eDSEmptyAuthStepData
+C/econst/-/eDSEmptyAuthStepDataResp
+C/econst/-/eDSEmptyBuffer
+C/econst/-/eDSEmptyDataList
+C/econst/-/eDSEmptyNodeInfoTypeList
+C/econst/-/eDSEmptyNodeName
+C/econst/-/eDSEmptyNodeNamePattern
+C/econst/-/eDSEmptyParameter
+C/econst/-/eDSEmptyPattern2Match
+C/econst/-/eDSEmptyPatternMatch
+C/econst/-/eDSEmptyRecordEntry
+C/econst/-/eDSEmptyRecordName
+C/econst/-/eDSEmptyRecordNameList
+C/econst/-/eDSEmptyRecordType
+C/econst/-/eDSEmptyRecordTypeList
+C/econst/-/eDSEndAppleReserve1
+C/econst/-/eDSEndAppleReserve2
+C/econst/-/eDSEndPlugInCustom
+C/econst/-/eDSEndsWith
+C/econst/-/eDSExact
+C/econst/-/eDSGetCustomFailed
+C/econst/-/eDSGreaterEqual
+C/econst/-/eDSGreaterThan
+C/econst/-/eDSiCompoundExpression
+C/econst/-/eDSiContains
+C/econst/-/eDSiEndsWith
+C/econst/-/eDSiExact
+C/econst/-/eDSiGreaterEqual
+C/econst/-/eDSiGreaterThan
+C/econst/-/eDSiLessEqual
+C/econst/-/eDSiLessThan
+C/econst/-/eDSIndexNotFound
+C/econst/-/eDSIndexOutOfRange
+C/econst/-/eDSInvalDataList
+C/econst/-/eDSInvalidAttributeType
+C/econst/-/eDSInvalidAttrListRef
+C/econst/-/eDSInvalidAttrValueRef
+C/econst/-/eDSInvalidBuffFormat
+C/econst/-/eDSInvalidContext
+C/econst/-/eDSInvalidContinueData
+C/econst/-/eDSInvalidDirRef
+C/econst/-/eDSInvalidDomain
+C/econst/-/eDSInvalidHandle
+C/econst/-/eDSInvalidIndex
+C/econst/-/eDSInvalidName
+C/econst/-/eDSInvalidNativeMapping
+C/econst/-/eDSInvalidNodeRef
+C/econst/-/eDSInvalidPatternMatchType
+C/econst/-/eDSInvalidPlugInConfigData
+C/econst/-/eDSInvalidRecordName
+C/econst/-/eDSInvalidRecordRef
+C/econst/-/eDSInvalidRecordType
+C/econst/-/eDSInvalidReference
+C/econst/-/eDSInvalidRefType
+C/econst/-/eDSInvalidSession
+C/econst/-/eDSInvalidTag
+C/econst/-/eDSIPUnreachable
+C/econst/-/eDSiRegularExpression
+C/econst/-/eDSiStartsWith
+C/econst/-/eDSiWildCardPattern
+C/econst/-/eDSLessEqual
+C/econst/-/eDSLessThan
+C/econst/-/eDSLocalHostedNodes
+C/econst/-/eDSLocalNodeNames
+C/econst/-/eDSMaxSessionsOpen
+C/econst/-/eDSNetInfoError
+C/econst/-/eDSNetworkSearchNodeName
+C/econst/-/eDSNodeNotFound
+C/econst/-/eDSNoErr
+C/econst/-/eDSNoMatch1
+C/econst/-/eDSNoMatch2
+C/econst/-/eDSNoStdMappingAvailable
+C/econst/-/eDSNotAuthorized
+C/econst/-/eDSNullAttribute
+C/econst/-/eDSNullAttributeAccess
+C/econst/-/eDSNullAttributeControlPtr
+C/econst/-/eDSNullAttributeRequestList
+C/econst/-/eDSNullAttributeType
+C/econst/-/eDSNullAttributeTypeList
+C/econst/-/eDSNullAttributeValue
+C/econst/-/eDSNullAuthStepData
+C/econst/-/eDSNullAuthStepDataResp
+C/econst/-/eDSNullAutMethod
+C/econst/-/eDSNullDataBuff
+C/econst/-/eDSNullDataList
+C/econst/-/eDSNullDirNodeTypeList
+C/econst/-/eDSNullNodeInfoTypeList
+C/econst/-/eDSNullNodeName
+C/econst/-/eDSNullNodeNamePattern
+C/econst/-/eDSNullParameter
+C/econst/-/eDSNullPatternMatch
+C/econst/-/eDSNullRecEntryPtr
+C/econst/-/eDSNullRecName
+C/econst/-/eDSNullRecNameList
+C/econst/-/eDSNullRecordReference
+C/econst/-/eDSNullRecType
+C/econst/-/eDSNullRecTypeList
+C/econst/-/eDSNullTargetArgument
+C/econst/-/eDSOpenFailed
+C/econst/-/eDSOpenNodeFailed
+C/econst/-/eDSOperationFailed
+C/econst/-/eDSPermissionError
+C/econst/-/eDSPlugInConfigFileError
+C/econst/-/eDSReadOnly
+C/econst/-/eDSReceiveFailed
+C/econst/-/eDSRecordAlreadyExists
+C/econst/-/eDSRecordNotFound
+C/econst/-/eDSRefSpaceFull
+C/econst/-/eDSRefTableAllocError
+C/econst/-/eDSRefTableCSBPAllocError
+C/econst/-/eDSRefTableEntryNilError
+C/econst/-/eDSRefTableError
+C/econst/-/eDSRefTableFWAllocError
+C/econst/-/eDSRefTableIndexOfBoundsError
+C/econst/-/eDSRefTableNilError
+C/econst/-/eDSRegisterCustomFailed
+C/econst/-/eDSRegularExpression
+C/econst/-/eDSSchemaError
+C/econst/-/eDSSearchNodeName
+C/econst/-/eDSSendFailed
+C/econst/-/eDSServerTimeout
+C/econst/-/eDSServiceUnavailable
+C/econst/-/eDSStartsWith
+C/econst/-/eDSTCPReceiveError
+C/econst/-/eDSTCPSendError
+C/econst/-/eDSTCPVersionMismatch
+C/econst/-/eDSUnknownHost
+C/econst/-/eDSUnknownMatchType
+C/econst/-/eDSUnknownNodeName
+C/econst/-/eDSUnrecoverablePassword
+C/econst/-/eDSUnRegisterFailed
+C/econst/-/eDSUnSupportedMatchType
+C/econst/-/eDSUserUnknown
+C/econst/-/eDSVersionMismatch
+C/econst/-/eDSWildCardPattern
+JavaScript/data/Clipboard/effectAllowed
+Objective-C/instm/DRFSObject/effectiveFilesystemMask
+C/tag/-/EffectsFrameParams
+C/tdef/-/EffectsFrameParamsPtr
+C/tag/-/EffectSource
+C/tdef/-/EffectSourcePtr
+C/econst/-/eFWGetDirNodeNameErr1
+C/econst/-/eFWGetDirNodeNameErr2
+C/econst/-/eFWGetDirNodeNameErr3
+C/econst/-/eFWGetDirNodeNameErr4
+C/econst/-/eIPCReceiveError
+C/econst/-/eIPCSendError
+Objective-C/instm/DRSetupPanel/eject:
+Objective-C/instm/DRDevice/ejectMedia
+C++/instm/IOBlockStorageDriver/ejectMedia
+C/func/-/el_deletestr
+C/func/-/el_end
+C/func/-/el_get
+C/func/-/el_getc
+C/func/-/el_gets
+C/func/-/el_history
+C/func/-/el_history_end
+C/func/-/el_history_init
+C/func/-/el_init
+C/func/-/el_insertstr
+C/func/-/el_line
+C/func/-/el_parse
+C/func/-/el_push
+C/func/-/el_reset
+C/func/-/el_resize
+C/func/-/el_set
+C/func/-/el_source
+C/func/-/el_tok_end
+C/func/-/el_tok_init
+C/func/-/el_tok_line
+C/func/-/el_tok_reset
+C/func/-/el_tok_str
+JavaScript/data/WebKitAnimationEvent/elapsedTime
+JavaScript/data/WebKitTransitionEvent/elapsedTime
+JavaScript/data/DOMWindow/Element
+JavaScript/cl/-/Element
+JavaScript/clconst/WebGLRenderingContext/ELEMENT_ARRAY_BUFFER
+JavaScript/clconst/WebGLRenderingContext/ELEMENT_ARRAY_BUFFER_BINDING
+JavaScript/clconst/core/ELEMENT_NODE
+Objective-C/instm/SBObject/elementArrayWithCode:
+Objective-C/instm/NSBezierPath/elementAtIndex:
+Objective-C/instm/NSBezierPath/elementAtIndex:associatedPoints:
+Objective-C/instm/WebView/elementAtPoint:
+Objective-C/instm/NSBezierPath/elementCount
+Objective-C/instm/NSXMLDTD/elementDeclarationForName:
+C/tdef/-/elementDeclSAXFunc
+JavaScript/instm/Document/elementFromPoint
+JavaScript/data/HTMLFormElement/elements
+Objective-C/clm/NSPersistentStoreCoordinator/elementsDerivedFromExternalRecordURL:
+Objective-C/instm/NSXMLElement/elementsForLocalName:URI:
+Objective-C/instm/NSXMLElement/elementsForName:
+JavaScript/cl/-/ElementTimeControl
+Objective-C/clm/NSXMLNode/elementWithName:
+Objective-C/clm/NSXMLNode/elementWithName:children:attributes:
+Objective-C/clm/NSXMLNode/elementWithName:stringValue:
+Objective-C/clm/NSXMLNode/elementWithName:URI:
+JavaScript/data/SVGFEDistantLightElement/elevation
+Objective-C/instp/PSAuthor/email
+Objective-C/instm/CBIdentity/emailAddress
+Objective-C/instp/CalAlarm/emailAddress
+Objective-C/instm/CalAlarm/emailAddress
+C/tdef/-/EmbedImageProcPtr
+JavaScript/data/HTMLDocument/embeds
+C/econst/-/eMemoryAllocError
+C/econst/-/eMemoryError
+Objective-C/instp/CAEmitterCell/emissionLatitude
+Objective-C/instm/CAEmitterCell/emissionLatitude
+Objective-C/instp/CAEmitterCell/emissionLongitude
+Objective-C/instm/CAEmitterCell/emissionLongitude
+Objective-C/instp/CAEmitterCell/emissionRange
+Objective-C/instm/CAEmitterCell/emissionRange
+Objective-C/clm/CAEmitterCell/emitterCell
+Objective-C/instm/CAEmitterCell/emitterCells
+Objective-C/instm/CAEmitterLayer/emitterCells
+Objective-C/instp/CAEmitterLayer/emitterCells
+Objective-C/instp/CAEmitterCell/emitterCells
+Objective-C/instp/CAEmitterLayer/emitterDepth
+Objective-C/instm/CAEmitterLayer/emitterDepth
+Objective-C/instp/CAEmitterLayer/emitterMode
+Objective-C/instm/CAEmitterLayer/emitterMode
+Objective-C/instp/CAEmitterLayer/emitterPosition
+Objective-C/instm/CAEmitterLayer/emitterPosition
+Objective-C/instp/CAEmitterLayer/emitterShape
+Objective-C/instm/CAEmitterLayer/emitterShape
+Objective-C/instp/CAEmitterLayer/emitterSize
+Objective-C/instm/CAEmitterLayer/emitterSize
+Objective-C/instp/CAEmitterLayer/emitterZPosition
+Objective-C/instm/CAEmitterLayer/emitterZPosition
+JavaScript/instm/DOMSelection/empty
+JavaScript/clconst/FileReader/EMPTY
+Objective-C/clm/CIImage/emptyImage
+Objective-C/instm/NSGarbageCollector/enable
+Objective-C/instm/FxTexture/enable
+C++/instm/IONetworkController/enable
+C++/instm/IOCommandGate/enable
+C++/instm/ATATimerEventSource/enable
+C++/instm/IOEventSource/enable
+C++/instm/IOInterruptEventSource/enable
+C++/instm/IONotifier/enable
+C++/instm/IOTimerEventSource/enable
+JavaScript/instm/WebGLRenderingContext/enable
+C++/instm/IOWorkLoop/enableAllEventSources
+C++/instm/IOWorkLoop/enableAllInterrupts
+Objective-C/instm/NSGarbageCollector/enableCollectorForPointer:
+C++/instm/IOFramebuffer/enableController
+Objective-C/instm/NSWindow/enableCursorRects
+Objective-C/instm/CIFilter/enabled
+Objective-C/instp/CIFilter/enabled
+Objective-C/instp/CAEmitterCell/enabled
+C++/data/IOEventSource/enabled
+Objective-C/binding/NSImageCell/enabled
+Objective-C/binding/NSDatePickerCell/enabled
+Objective-C/binding/NSLevelIndicatorCell/enabled
+Objective-C/binding/NSButton/enabled
+Objective-C/binding/NSForm/enabled
+Objective-C/binding/NSMatrix/enabled
+Objective-C/binding/NSImageView/enabled
+Objective-C/binding/NSComboBox/enabled
+Objective-C/binding/AMPathPopUpButton/enabled
+Objective-C/binding/NSFormCell/enabled
+Objective-C/binding/NSColorWell/enabled
+Objective-C/binding/NSLevelIndicator/enabled
+Objective-C/binding/NSOutlineView/enabled
+Objective-C/binding/NSComboBoxCell/enabled
+Objective-C/binding/NSButtonCell/enabled
+Objective-C/binding/NSMenuItem/enabled
+Objective-C/binding/NSDatePicker/enabled
+Objective-C/binding/NSBrowser/enabled
+Objective-C/binding/NSSegmentedCell/enabled
+Objective-C/binding/NSSecureTextField/enabled
+Objective-C/binding/NSTextFieldCell/enabled
+Objective-C/binding/NSPathCell/enabled
+Objective-C/binding/NSTokenField/enabled
+Objective-C/binding/NSTokenFieldCell/enabled
+Objective-C/binding/NSSliderCell/enabled
+Objective-C/binding/NSTableColumn/enabled
+Objective-C/binding/NSPathControl/enabled
+Objective-C/binding/NSPredicateEditor/enabled
+Objective-C/binding/NSTableView/enabled
+Objective-C/binding/NSStepperCell/enabled
+Objective-C/binding/NSSecureTextFieldCell/enabled
+Objective-C/binding/NSSearchField/enabled
+Objective-C/binding/NSPopUpButtonCell/enabled
+Objective-C/binding/NSSlider/enabled
+Objective-C/binding/NSPopUpButton/enabled
+Objective-C/binding/NSStepper/enabled
+Objective-C/binding/NSToolbarItem/enabled
+Objective-C/binding/NSSegmentedControl/enabled
+Objective-C/binding/NSTextField/enabled
+C/func/-/EnableDataBrowserEditCommand
+JavaScript/instm/InspectorBackend/enableDebugger
+Objective-C/instm/ISyncClient/enabledEntityNames
+JavaScript/data/MimeType/enabledPlugin
+Objective-C/instm/NSTextView/enabledTextCheckingTypes
+Objective-C/instm/QCPlugIn/enableExecution:
+Objective-C/instm/NSWindow/enableFlushWindow
+Objective-C/instm/CWInterface/enableIBSSWithParameters:error:
+C++/instm/IOService/enableInterrupt
+C++/instm/IOSCSIParallelInterfaceController/EnableInterrupt
+Objective-C/instm/NSWindow/enableKeyEquivalentForDefaultButtonCell
+Objective-C/instm/NSConnection/enableMultipleThreads
+C++/instm/IONetworkController/enablePacketFilter
+C++/instm/IOEthernetController/enablePacketFilter
+C++/instm/IOPCIDevice/enablePCIPowerManagement
+JavaScript/instm/InspectorBackend/enableProfiler
+JavaScript/instm/InspectorBackend/enableResourceTracking
+JavaScript/instm/InspectorBackend/enableSearchingForNode
+Objective-C/instm/NSProcessInfo/enableSuddenTermination
+Objective-C/instm/NSUndoManager/enableUndoRegistration
+Objective-C/instm/NSMetadataQuery/enableUpdates
+JavaScript/instm/WebGLRenderingContext/enableVertexAttribArray
+Objective-C/instm/NSView/enclosingMenuItem
+Objective-C/instm/NSView/enclosingScrollView
+Objective-C/instp/PSEntry/enclosures
+Objective-C/instp/PSFeedSettings/enclosureTypes
+Objective-C/instm/NSCoder/encodeArrayOfObjCType:count:at:
+Objective-C/instm/NSCoder/encodeBool:forKey:
+Objective-C/instm/NSKeyedArchiver/encodeBool:forKey:
+Objective-C/instm/NSCoder/encodeBycopyObject:
+Objective-C/instm/NSCoder/encodeByrefObject:
+Objective-C/instm/NSCoder/encodeBytes:length:
+Objective-C/instm/NSCoder/encodeBytes:length:forKey:
+Objective-C/instm/NSKeyedArchiver/encodeBytes:length:forKey:
+Objective-C/instm/NSArchiver/encodeClassName:intoClassName:
+Objective-C/instm/NSArchiver/encodeConditionalObject:
+Objective-C/instm/NSCoder/encodeConditionalObject:
+Objective-C/instm/NSCoder/encodeConditionalObject:forKey:
+Objective-C/instm/NSKeyedArchiver/encodeConditionalObject:forKey:
+Objective-C/instm/NSCoder/encodeDataObject:
+Objective-C/instm/NSCoder/encodeDouble:forKey:
+Objective-C/instm/NSKeyedArchiver/encodeDouble:forKey:
+Objective-C/instm/NSCoder/encodeFloat:forKey:
+Objective-C/instm/NSKeyedArchiver/encodeFloat:forKey:
+Objective-C/instm/NSCoder/encodeInt32:forKey:
+Objective-C/instm/NSKeyedArchiver/encodeInt32:forKey:
+Objective-C/instm/NSCoder/encodeInt64:forKey:
+Objective-C/instm/NSKeyedArchiver/encodeInt64:forKey:
+Objective-C/instm/NSCoder/encodeInt:forKey:
+Objective-C/instm/NSKeyedArchiver/encodeInt:forKey:
+Objective-C/instm/NSCoder/encodeInteger:forKey:
+Objective-C/instm/NSCoder/encodeNXObject:
+Objective-C/instm/NSCoder/encodeObject:
+Objective-C/instm/NSCoder/encodeObject:forKey:
+Objective-C/instm/NSKeyedArchiver/encodeObject:forKey:
+Objective-C/instm/NSCoder/encodePoint:
+Objective-C/instm/NSCoder/encodePoint:forKey:
+Objective-C/instm/NSPortCoder/encodePortObject:
+Objective-C/instm/NSCoder/encodePropertyList:
+Objective-C/instm/NSCoder/encodeQTTime:forKey:
+Objective-C/instm/NSCoder/encodeQTTimeRange:forKey:
+Objective-C/instm/NSCoder/encodeRect:
+Objective-C/instm/NSCoder/encodeRect:forKey:
+C/macro/-/EncodeRequest
+Objective-C/instm/NSArchiver/encodeRootObject:
+Objective-C/instm/NSCoder/encodeRootObject:
+Objective-C/instm/NSCoder/encodeSize:
+Objective-C/instm/NSCoder/encodeSize:forKey:
+Objective-C/instm/NSCoder/encodeSMPTETime:forKey:
+Objective-C/instm/NSCoder/encodeValueOfObjCType:at:
+Objective-C/instm/NSCoder/encodeValuesOfObjCTypes:
+Objective-C/intfm/NSCoding/encodeWithCoder:
+Objective-C/instm/DRCDTextBlock(PropertyConvenienceMethods)/encoding
+JavaScript/data/CSSCharsetRule/encoding
+JavaScript/data/HTMLFormElement/encoding
+JavaScript/clconst/FileError/ENCODING_ERR
+Objective-C/instm/NSFont/encodingScheme
+C/func/-/encrypt
+JavaScript/data/HTMLFormElement/enctype
+C/func/-/end
+JavaScript/instm/TimeRanges/end
+JavaScript/clconst/Range/END_TO_END
+JavaScript/clconst/Range/END_TO_START
+C/func/-/endac
+Objective-C/intfm/FxCustomParameterActionAPI/endAction:
+C/func/-/endauclass
+C/func/-/endauevent
+C/func/-/endauuser
+C/func/-/EndCGContextForApplicationDockTile
+JavaScript/data/Range/endContainer
+Objective-C/intfm/NSDiscardableContent/endContentAccess
+Objective-C/instp/CalRecurrenceEnd/endDate
+Objective-C/instm/CalRecurrenceEnd/endDate
+Objective-C/instm/CalEvent/endDate
+Objective-C/instp/CalEvent/endDate
+Objective-C/instm/NSView/endDocument
+C/tdef/-/endDocumentSAXFunc
+JavaScript/data/HTMLMediaElement/ended
+Objective-C/instm/NSMutableAttributedString/endEditing
+Objective-C/instm/NSCell/endEditing:
+Objective-C/instm/NSWindow/endEditingFor:
+Objective-C/intfm/ApertureEditManager/endEditSession
+JavaScript/instm/ElementTimeControl/endElement
+JavaScript/instm/ElementTimeControl/endElementAt
+C/tdef/-/endElementNsSAX2Func
+C/tdef/-/endElementSAXFunc
+Objective-C/instm/NSEntityMigrationPolicy/endEntityMapping:manager:error:
+Objective-C/instm/CARenderer/endFrame
+C/func/-/endfsent
+Objective-C/instm/NSResponder/endGestureWithEvent:
+C/func/-/endgrent
+Objective-C/clm/NSAnimationContext/endGrouping
+C/func/-/endhostent
+C/macro/-/Endian16_Swap
+C/macro/-/Endian32_Swap
+C/macro/-/Endian64_Swap
+C/macro/-/EndianS16_BtoL
+C/macro/-/EndianS16_BtoN
+C/macro/-/EndianS16_LtoB
+C/macro/-/EndianS16_LtoN
+C/macro/-/EndianS16_NtoB
+C/macro/-/EndianS16_NtoL
+C/macro/-/EndianS32_BtoL
+C/macro/-/EndianS32_BtoN
+C/macro/-/EndianS32_LtoB
+C/macro/-/EndianS32_LtoN
+C/macro/-/EndianS32_NtoB
+C/macro/-/EndianS32_NtoL
+C/macro/-/EndianS64_BtoL
+C/macro/-/EndianS64_BtoN
+C/macro/-/EndianS64_LtoB
+C/macro/-/EndianS64_LtoN
+C/macro/-/EndianS64_NtoB
+C/macro/-/EndianS64_NtoL
+C/macro/-/EndianU16_BtoL
+C/macro/-/EndianU16_BtoN
+C/macro/-/EndianU16_LtoB
+C/macro/-/EndianU16_LtoN
+C/macro/-/EndianU16_NtoB
+C/macro/-/EndianU16_NtoL
+C/macro/-/EndianU32_BtoL
+C/macro/-/EndianU32_BtoN
+C/macro/-/EndianU32_LtoB
+C/macro/-/EndianU32_LtoN
+C/macro/-/EndianU32_NtoB
+C/macro/-/EndianU32_NtoL
+C/macro/-/EndianU64_BtoL
+C/macro/-/EndianU64_BtoN
+C/macro/-/EndianU64_LtoB
+C/macro/-/EndianU64_LtoN
+C/macro/-/EndianU64_NtoB
+C/macro/-/EndianU64_NtoL
+Objective-C/instm/NSEntityMigrationPolicy/endInstanceCreationForEntityMapping:manager:error:
+Objective-C/instm/PDFAnnotationLine/endLineStyle
+Objective-C/instm/NSTypesetter/endLineWithGlyphRange:
+Objective-C/instm/NSURLHandle/endLoadInBackground
+C/func/-/EndMediaEdits
+Objective-C/instm/NSApplication/endModalSession:
+C/func/-/endnetent
+C/func/-/endnetgrent
+JavaScript/data/Range/endOffset
+C/macro/-/EndOfStream
+Objective-C/instm/NSView/endPage
+Objective-C/instm/NSTypesetter/endParagraph
+Objective-C/intfm/FxParameterCreationAPI/endParameterSubGroup
+Objective-C/instm/PDFAnnotationLine/endPoint
+Objective-C/instm/CAGradientLayer/endPoint
+Objective-C/instp/CAGradientLayer/endPoint
+C++/tag/IOUSBController/Endpoint
+Objective-C/intfm/QLPreviewPanelController/endPreviewPanelControl:
+Objective-C/instm/CATransition/endProgress
+Objective-C/instp/CATransition/endProgress
+C/func/-/endprotoent
+C/func/-/endpwent
+C/func/-/EndQDContextForApplicationDockTile
+Objective-C/instm/NSEntityMigrationPolicy/endRelationshipCreationForEntityMapping:manager:error:
+C/func/-/endrpcent
+C/func/-/endservent
+Objective-C/instm/NSApplication/endSheet:
+Objective-C/instm/NSApplication/endSheet:returnCode:
+Objective-C/instm/NSRangeSpecifier/endSpecifier
+Objective-C/instm/NSWhoseSpecifier/endSubelementIdentifier
+Objective-C/instm/NSWhoseSpecifier/endSubelementIndex
+C/func/-/endttyent
+Objective-C/instm/NSUndoManager/endUndoGrouping
+C/func/-/endusershell
+C/func/-/endutxent
+C/func/-/endwin
+C/econst/-/eNetInfoError
+C/func/-/engine
+C/func/-/ENGINE_add
+C/func/-/ENGINE_by_id
+C/func/-/ENGINE_cleanup
+C/func/-/ENGINE_cmd_is_executable
+C/func/-/ENGINE_ctrl
+C/func/-/ENGINE_ctrl_cmd
+C/func/-/ENGINE_ctrl_cmd_string
+C/func/-/ENGINE_finish
+C/func/-/ENGINE_free
+C/func/-/ENGINE_get_cipher
+C/func/-/ENGINE_get_cipher_engine
+C/func/-/ENGINE_get_ciphers
+C/func/-/ENGINE_get_cmd_defns
+C/func/-/ENGINE_get_ctrl_function
+C/func/-/ENGINE_get_default_DH
+C/func/-/ENGINE_get_default_DSA
+C/func/-/ENGINE_get_default_ECDH
+C/func/-/ENGINE_get_default_ECDSA
+C/func/-/ENGINE_get_default_RAND
+C/func/-/ENGINE_get_default_RSA
+C/func/-/ENGINE_get_destroy_function
+C/func/-/ENGINE_get_DH
+C/func/-/ENGINE_get_digest
+C/func/-/ENGINE_get_digest_engine
+C/func/-/ENGINE_get_digests
+C/func/-/ENGINE_get_DSA
+C/func/-/ENGINE_get_ECDH
+C/func/-/ENGINE_get_ECDSA
+C/func/-/ENGINE_get_ex_data
+C/func/-/ENGINE_get_ex_new_index
+C/func/-/ENGINE_get_finish_function
+C/func/-/ENGINE_get_first
+C/func/-/ENGINE_get_flags
+C/func/-/ENGINE_get_id
+C/func/-/ENGINE_get_init_function
+C/func/-/ENGINE_get_last
+C/func/-/ENGINE_get_load_privkey_function
+C/func/-/ENGINE_get_load_pubkey_function
+C/func/-/ENGINE_get_name
+C/func/-/ENGINE_get_next
+C/func/-/ENGINE_get_prev
+C/func/-/ENGINE_get_RAND
+C/func/-/ENGINE_get_RSA
+C/func/-/ENGINE_get_STORE
+C/func/-/ENGINE_get_table_flags
+C/func/-/ENGINE_init
+C/func/-/ENGINE_load_4758cca
+C/func/-/ENGINE_load_aep
+C/func/-/ENGINE_load_atalla
+C/func/-/ENGINE_load_builtin_engines
+C/func/-/ENGINE_load_chil
+C/func/-/ENGINE_load_cryptodev
+C/func/-/ENGINE_load_cswift
+C/func/-/ENGINE_load_dynamic
+C/func/-/ENGINE_load_gmp
+C/func/-/ENGINE_load_nuron
+C/func/-/ENGINE_load_openssl
+C/func/-/ENGINE_load_private_key
+C/func/-/ENGINE_load_public_key
+C/func/-/ENGINE_load_sureware
+C/func/-/ENGINE_load_ubsec
+C/func/-/ENGINE_new
+C/func/-/ENGINE_register_all_ciphers
+C/func/-/ENGINE_register_all_complete
+C/func/-/ENGINE_register_all_DH
+C/func/-/ENGINE_register_all_digests
+C/func/-/ENGINE_register_all_DSA
+C/func/-/ENGINE_register_all_ECDH
+C/func/-/ENGINE_register_all_ECDSA
+C/func/-/ENGINE_register_all_RAND
+C/func/-/ENGINE_register_all_RSA
+C/func/-/ENGINE_register_all_STORE
+C/func/-/ENGINE_register_ciphers
+C/func/-/ENGINE_register_complete
+C/func/-/ENGINE_register_DH
+C/func/-/ENGINE_register_digests
+C/func/-/ENGINE_register_DSA
+C/func/-/ENGINE_register_ECDH
+C/func/-/ENGINE_register_ECDSA
+C/func/-/ENGINE_register_RAND
+C/func/-/ENGINE_register_RSA
+C/func/-/ENGINE_register_STORE
+C/func/-/ENGINE_remove
+C/func/-/ENGINE_set_ciphers
+C/func/-/ENGINE_set_cmd_defns
+C/func/-/ENGINE_set_ctrl_function
+C/func/-/ENGINE_set_default
+C/func/-/ENGINE_set_default_ciphers
+C/func/-/ENGINE_set_default_DH
+C/func/-/ENGINE_set_default_digests
+C/func/-/ENGINE_set_default_DSA
+C/func/-/ENGINE_set_default_ECDH
+C/func/-/ENGINE_set_default_ECDSA
+C/func/-/ENGINE_set_default_RAND
+C/func/-/ENGINE_set_default_RSA
+C/func/-/ENGINE_set_default_string
+C/func/-/ENGINE_set_destroy_function
+C/func/-/ENGINE_set_DH
+C/func/-/ENGINE_set_digests
+C/func/-/ENGINE_set_DSA
+C/func/-/ENGINE_set_ECDH
+C/func/-/ENGINE_set_ECDSA
+C/func/-/ENGINE_set_ex_data
+C/func/-/ENGINE_set_finish_function
+C/func/-/ENGINE_set_flags
+C/func/-/ENGINE_set_id
+C/func/-/ENGINE_set_init_function
+C/func/-/ENGINE_set_load_privkey_function
+C/func/-/ENGINE_set_load_pubkey_function
+C/func/-/ENGINE_set_name
+C/func/-/ENGINE_set_RAND
+C/func/-/ENGINE_set_RSA
+C/func/-/ENGINE_set_STORE
+C/func/-/ENGINE_set_table_flags
+C/func/-/ENGINE_unregister_ciphers
+C/func/-/ENGINE_unregister_DH
+C/func/-/ENGINE_unregister_digests
+C/func/-/ENGINE_unregister_DSA
+C/func/-/ENGINE_unregister_ECDH
+C/func/-/ENGINE_unregister_ECDSA
+C/func/-/ENGINE_unregister_RAND
+C/func/-/ENGINE_unregister_RSA
+C/func/-/ENGINE_unregister_STORE
+C/func/-/ENGINE_up_ref
+Objective-C/instm/SFAuthorizationPluginView/engineRef
+C/econst/-/eNoLongerSupported
+C/econst/-/eNoPluginFactoriesFound
+C/econst/-/eNoPluginsLoaded
+C/econst/-/eNoSearchNodesFound
+C/econst/-/eNotHandledByThisNode
+C/econst/-/eNotYetImplemented
+C++/instm/IOBasicOutputQueue/enqueue
+C++/instm/IODataQueue/enqueue
+C++/instm/IOOutputQueue/enqueue
+C++/instm/IOPacketQueue/enqueue
+C/func/-/EnqueueInputBuffer
+C/func/-/EnqueueInputEntry
+Objective-C/instm/NSNotificationQueue/enqueueNotification:postingStyle:
+Objective-C/instm/NSNotificationQueue/enqueueNotification:postingStyle:coalesceMask:forModes:
+C++/instm/IOStream/enqueueOutputBuffer
+C++/instm/IOStream/enqueueOutputEntry
+C++/instm/IOPacketQueue/enqueueWithDrop
+Objective-C/instm/NSTextStorage/ensureAttributesAreFixedInRange:
+C++/instm/OSArray/ensureCapacity
+C++/instm/OSCollection/ensureCapacity
+C++/instm/OSDictionary/ensureCapacity
+C++/instm/OSOrderedSet/ensureCapacity
+C++/instm/OSData/ensureCapacity
+C++/instm/OSSet/ensureCapacity
+Objective-C/instm/NSLayoutManager/ensureGlyphsForCharacterRange:
+Objective-C/instm/NSLayoutManager/ensureGlyphsForGlyphRange:
+Objective-C/instm/NSLayoutManager/ensureLayoutForBoundingRect:inTextContainer:
+Objective-C/instm/NSLayoutManager/ensureLayoutForCharacterRange:
+Objective-C/instm/NSLayoutManager/ensureLayoutForGlyphRange:
+Objective-C/instm/NSLayoutManager/ensureLayoutForTextContainer:
+C++/instm/IORegistryIterator/enterEntry
+Objective-C/clm/NSEvent/enterExitEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:trackingNumber:userData:
+Objective-C/instm/QLPreviewPanel/enterFullScreenMode:withOptions:
+Objective-C/instm/NSView/enterFullScreenMode:withOptions:
+Objective-C/clm/QTMovie/enterQTKitOnThread
+Objective-C/clm/QTMovie/enterQTKitOnThreadDisablingThreadSafetyProtection
+Objective-C/instm/NSManagedObjectModel/entities
+JavaScript/data/DocumentType/entities
+Objective-C/instm/NSManagedObjectModel/entitiesByName
+Objective-C/instm/NSManagedObjectModel/entitiesForConfiguration:
+Objective-C/instm/NSManagedObjectID/entity
+Objective-C/instm/NSPropertyDescription/entity
+Objective-C/instm/NSFetchRequest/entity
+Objective-C/instm/NSManagedObject/entity
+JavaScript/data/DOMWindow/Entity
+JavaScript/cl/-/Entity
+JavaScript/clconst/core/ENTITY_NODE
+JavaScript/clconst/core/ENTITY_REFERENCE_NODE
+Objective-C/instm/NSXMLDTD/entityDeclarationForName:
+C/tdef/-/entityDeclSAXFunc
+Objective-C/clm/NSEntityDescription/entityForName:inManagedObjectContext:
+Objective-C/instm/NSMappingModel/entityMappings
+Objective-C/instm/NSMappingModel/entityMappingsByName
+Objective-C/instm/NSEntityMapping/entityMigrationPolicyClassName
+Objective-C/instm/NSObjectController/entityName
+Objective-C/instm/NSObject/entityNamesToPull
+Objective-C/instm/NSObject/entityNamesToSync
+JavaScript/data/DOMWindow/EntityReference
+JavaScript/cl/-/EntityReference
+Objective-C/instm/NSManagedObjectModel/entityVersionHashesByName
+Objective-C/instp/PSFeed/entries
+Objective-C/instp/PSEnclosure/entry
+Objective-C/instm/PSFeed/entryEnumeratorSortedBy:
+Objective-C/instm/NSCell/entryType
+Objective-C/instm/PSClient/entryWithIdentifier:
+Objective-C/instm/NSAppleEventDescriptor/enumCodeValue
+Objective-C/instm/NSAttributedString/enumerateAttribute:inRange:options:usingBlock:
+Objective-C/instm/NSAttributedString/enumerateAttributesInRange:options:usingBlock:
+Objective-C/instm/NSIndexSet/enumerateIndexesInRange:options:usingBlock:
+Objective-C/instm/NSIndexSet/enumerateIndexesUsingBlock:
+Objective-C/instm/NSIndexSet/enumerateIndexesWithOptions:usingBlock:
+Objective-C/instm/NSDictionary/enumerateKeysAndObjectsUsingBlock:
+Objective-C/instm/NSDictionary/enumerateKeysAndObjectsWithOptions:usingBlock:
+Objective-C/instm/NSString/enumerateLinesUsingBlock:
+Objective-C/instm/NSArray/enumerateObjectsAtIndexes:options:usingBlock:
+Objective-C/instm/NSSet/enumerateObjectsUsingBlock:
+Objective-C/instm/NSArray/enumerateObjectsUsingBlock:
+Objective-C/instm/NSSet/enumerateObjectsWithOptions:usingBlock:
+Objective-C/instm/NSArray/enumerateObjectsWithOptions:usingBlock:
+Objective-C/instm/NSString/enumerateSubstringsInRange:options:usingBlock:
+Objective-C/instm/NSFileManager/enumeratorAtPath:
+Objective-C/instm/NSFileManager/enumeratorAtURL:includingPropertiesForKeys:options:errorHandler:
+Objective-C/instm/NSProcessInfo/environment
+Objective-C/instm/NSTask/environment
+C/econst/-/eofErr
+C/econst/-/eParameterError
+C/econst/-/eParameterReceiveError
+C/econst/-/eParameterSendError
+C/econst/-/ePluginAlreadyLoaded
+C/econst/-/ePlugInCallTimedOut
+C/econst/-/ePluginConfigAvailNotFound
+C/econst/-/ePluginConfigFileNotFound
+C/econst/-/ePlugInDataError
+C/econst/-/ePlugInError
+C/econst/-/ePlugInFailedToInitialize
+C/econst/-/ePluginHandlerNotLoaded
+C/econst/-/ePlugInInitError
+C/econst/-/ePluginNameNotFound
+C/econst/-/ePlugInNotActive
+C/econst/-/ePlugInNotFound
+C/tdef/-/ePluginState
+C/econst/-/ePluginVersionNotFound
+Objective-C/clm/NSPrintOperation/EPSOperationWithView:insideRect:toData:
+Objective-C/clm/NSPrintOperation/EPSOperationWithView:insideRect:toData:printInfo:
+Objective-C/clm/NSPrintOperation/EPSOperationWithView:insideRect:toPath:printInfo:
+Objective-C/instm/NSEPSImageRep/EPSRepresentation
+JavaScript/clconst/WebGLRenderingContext/EQUAL
+C/func/-/EqualMatrix
+Objective-C/instm/NSDateComponents/era
+C/func/-/erand48
+Objective-C/instm/QCView/erase
+C/func/-/erase
+C/func/-/erasechar
+Objective-C/instm/QCView/eraseColor
+Objective-C/clm/DRErase/eraseForDevice:
+Objective-C/instm/DREraseSetupPanel/eraseObject
+C++/instm/IOAudioEngine/eraseOutputSamples
+Objective-C/instm/NSObject(DREraseProgressPanelDelegateMethods)/eraseProgressPanel:eraseDidFinish:
+Objective-C/instm/NSObject(DREraseProgressPanelDelegateMethods)/eraseProgressPanelDidFinish:
+Objective-C/instm/NSObject(DREraseProgressPanelDelegateMethods)/eraseProgressPanelWillBegin:
+Objective-C/instm/DRErase(PropertyConvenienceMethods)/eraseType
+Objective-C/instm/DREraseSetupPanel/eraseType:
+C/func/-/erasewchar
+Objective-C/instm/NSDateFormatter/eraSymbols
+C/func/-/erf
+C/func/-/erfc
+C/func/-/erfcf
+C/func/-/erfcl
+C/func/-/erff
+C/func/-/erfl
+C/func/-/err
+C/func/-/ERR_add_error_data
+C/func/-/ERR_clear_error
+C/func/-/ERR_error_string
+C/func/-/ERR_error_string_n
+C/func/-/ERR_free_strings
+C/func/-/ERR_func_error_string
+C/func/-/ERR_get_error
+C/func/-/ERR_get_error_line
+C/func/-/ERR_get_error_line_data
+C/func/-/ERR_GET_FUNC
+C/func/-/ERR_GET_LIB
+C/func/-/ERR_get_next_error_library
+C/func/-/ERR_GET_REASON
+C/func/-/ERR_lib_error_string
+C/func/-/ERR_load_crypto_strings
+C/func/-/ERR_load_strings
+C/func/-/ERR_load_UI_strings
+C/func/-/ERR_PACK
+C/func/-/ERR_peek_error
+C/func/-/ERR_peek_error_line
+C/func/-/ERR_peek_error_line_data
+C/func/-/ERR_peek_last_error
+C/func/-/ERR_peek_last_error_line
+C/func/-/ERR_peek_last_error_line_data
+C/func/-/ERR_pop_to_mark
+C/func/-/ERR_print_errors
+C/func/-/ERR_print_errors_fp
+C/func/-/ERR_put_error
+C/func/-/ERR_reason_error_string
+C/func/-/ERR_remove_state
+C/func/-/err_set_exit
+C/func/-/err_set_exit_b
+C/func/-/err_set_file
+C/func/-/ERR_set_mark
+C/tag/-/ErrataListEntryStruct
+C/econst/-/errAuthorizationCanceled
+C/econst/-/errAuthorizationDenied
+C/econst/-/errAuthorizationExternalizeNotAllowed
+C/econst/-/errAuthorizationInteractionNotAllowed
+C/econst/-/errAuthorizationInternal
+C/econst/-/errAuthorizationInternalizeNotAllowed
+C/econst/-/errAuthorizationInvalidFlags
+C/econst/-/errAuthorizationInvalidPointer
+C/econst/-/errAuthorizationInvalidRef
+C/econst/-/errAuthorizationInvalidSet
+C/econst/-/errAuthorizationInvalidTag
+C/econst/-/errAuthorizationSuccess
+C/econst/-/errAuthorizationToolEnvironmentError
+C/econst/-/errAuthorizationToolExecuteFailure
+C/func/-/errc
+C/econst/-/errDataBrowserInvalidPropertyData
+C/econst/-/errDataBrowserInvalidPropertyPart
+C/econst/-/errDataBrowserItemNotAdded
+C/econst/-/errDataBrowserItemNotFound
+C/econst/-/errDataBrowserNotConfigured
+C/econst/-/errDataBrowserPropertyNotFound
+C/econst/-/errDataBrowserPropertyNotSupported
+C/econst/-/errFSBadAllocFlags
+C/econst/-/errFSBadBuffer
+C/econst/-/errFSBadForkName
+C/econst/-/errFSBadForkRef
+C/econst/-/errFSBadFSRef
+C/econst/-/errFSBadInfoBitmap
+C/econst/-/errFSBadItemCount
+C/econst/-/errFSBadIteratorFlags
+C/econst/-/errFSBadPosMode
+C/econst/-/errFSBadSearchParams
+C/econst/-/errFSForkExists
+C/econst/-/errFSForkNotFound
+C/econst/-/errFSIteratorNotFound
+C/econst/-/errFSIteratorNotSupported
+C/econst/-/errFSMissingCatInfo
+C/econst/-/errFSMissingName
+C/econst/-/errFSNameTooLong
+C/econst/-/errFSNoMoreItems
+C/econst/-/errFSNotAFolder
+C/econst/-/errFSQuotaExceeded
+C/econst/-/errFSRefsDifferent
+C/econst/-/errFSUnknownCall
+C++/instm/IOService/errnoFromReturn
+C/tag/-/Error
+JavaScript/cl/-/Error
+Objective-C/instm/XGConnection/error
+Objective-C/instm/XGActionMonitor/error
+Objective-C/instm/XGAuthenticator/error
+Objective-C/instm/NSURLAuthenticationChallenge/error
+JavaScript/instm/Console/error
+JavaScript/data/HTMLMediaElement/error
+JavaScript/data/FileReader/error
+JavaScript/data/IDBRequest/error
+JavaScript/cl/-/ErrorEvent
+C/tdef/-/errorSAXFunc
+Objective-C/clm/NSError/errorWithDomain:code:userInfo:
+C/econst/-/errSecACLNotSimple
+C/econst/-/errSecAllocate
+C/econst/-/errSecAuthFailed
+C/econst/-/errSecBufferTooSmall
+C/econst/-/errSecCreateChainFailed
+C/econst/-/errSecCSBadDictionaryFormat
+C/econst/-/errSecCSBadObjectFormat
+C/econst/-/errSecCSBadResource
+C/econst/-/errSecCSCMSTooLarge
+C/econst/-/errSecCSGuestInvalid
+C/econst/-/errSecCSHostProtocolContradiction
+C/econst/-/errSecCSHostProtocolDedicationError
+C/econst/-/errSecCSHostProtocolInvalidAttribute
+C/econst/-/errSecCSHostProtocolInvalidHash
+C/econst/-/errSecCSHostProtocolNotProxy
+C/econst/-/errSecCSHostProtocolRelativePath
+C/econst/-/errSecCSHostProtocolStateError
+C/econst/-/errSecCSHostProtocolUnrelated
+C/econst/-/errSecCSHostReject
+C/econst/-/errSecCSInternalError
+C/econst/-/errSecCSInvalidAttributeValues
+C/econst/-/errSecCSInvalidFlags
+C/econst/-/errSecCSInvalidObjectRef
+C/econst/-/errSecCSInvalidOperation
+C/econst/-/errSecCSMultipleGuests
+C/econst/-/errSecCSNoSuchCode
+C/econst/-/errSecCSNotAHost
+C/econst/-/errSecCSNotSupported
+C/econst/-/errSecCSObjectRequired
+C/econst/-/errSecCSReqFailed
+C/econst/-/errSecCSReqInvalid
+C/econst/-/errSecCSReqUnsupported
+C/econst/-/errSecCSResourceRulesInvalid
+C/econst/-/errSecCSResourcesInvalid
+C/econst/-/errSecCSResourcesNotFound
+C/econst/-/errSecCSResourcesNotSealed
+C/econst/-/errSecCSSigDBAccess
+C/econst/-/errSecCSSigDBDenied
+C/econst/-/errSecCSSignatureFailed
+C/econst/-/errSecCSSignatureInvalid
+C/econst/-/errSecCSSignatureNotVerifiable
+C/econst/-/errSecCSSignatureUnsupported
+C/econst/-/errSecCSStaticCodeChanged
+C/econst/-/errSecCSStaticCodeNotFound
+C/econst/-/errSecCSUnimplemented
+C/econst/-/errSecCSUnsigned
+C/econst/-/errSecCSUnsupportedGuestAttributes
+C/econst/-/errSecDataNotAvailable
+C/econst/-/errSecDataNotModifiable
+C/econst/-/errSecDataTooLarge
+C/econst/-/errSecDecode
+C/econst/-/errSecDuplicateCallback
+C/econst/-/errSecDuplicateItem
+C/econst/-/errSecDuplicateKeychain
+C/econst/-/errSecInteractionNotAllowed
+C/econst/-/errSecInteractionRequired
+C/econst/-/errSecInvalidCallback
+C/econst/-/errSecInvalidItemRef
+C/econst/-/errSecInvalidKeychain
+C/econst/-/errSecInvalidOwnerEdit
+C/econst/-/errSecInvalidPasswordRef
+C/econst/-/errSecInvalidPrefsDomain
+C/econst/-/errSecInvalidSearchRef
+C/econst/-/errSecInvalidTrustSetting
+C/econst/-/errSecInvalidTrustSettings
+C/econst/-/errSecItemNotFound
+C/econst/-/errSecKeyIsSensitive
+C/econst/-/errSecKeySizeNotAllowed
+C/econst/-/errSecMultiplePrivKeys
+C/econst/-/errSecNoAccessForItem
+C/econst/-/errSecNoCertificateModule
+C/econst/-/errSecNoDefaultKeychain
+C/econst/-/errSecNoPolicyModule
+C/econst/-/errSecNoStorageModule
+C/econst/-/errSecNoSuchAttr
+C/econst/-/errSecNoSuchClass
+C/econst/-/errSecNoSuchKeychain
+C/econst/-/errSecNotAvailable
+C/econst/-/errSecNoTrustSettings
+C/econst/-/errSecParam
+C/econst/-/errSecPassphraseRequired
+C/econst/-/errSecPkcs12VerifyFailure
+C/econst/-/errSecPolicyNotFound
+C/econst/-/errSecReadOnly
+C/econst/-/errSecReadOnlyAttr
+C/econst/-/errSecSuccess
+C/econst/-/errSecTrustNotAvailable
+C/econst/-/errSecUnimplemented
+C/econst/-/errSecUnknownFormat
+C/econst/-/errSecUnsupportedFormat
+C/econst/-/errSecWrongSecVersion
+C/econst/-/errSSLBadCert
+C/econst/-/errSSLBadCipherSuite
+C/econst/-/errSSLBadConfiguration
+C/econst/-/errSSLBadRecordMac
+C/econst/-/errSSLBufferOverflow
+C/econst/-/errSSLCertExpired
+C/econst/-/errSSLCertNotYetValid
+C/econst/-/errSSLClosedAbort
+C/econst/-/errSSLClosedGraceful
+C/econst/-/errSSLClosedNoNotify
+C/econst/-/errSSLConnectionRefused
+C/econst/-/errSSLCrypto
+C/econst/-/errSSLDecryptionFail
+C/econst/-/errSSLFatalAlert
+C/econst/-/errSSLIllegalParam
+C/econst/-/errSSLInternal
+C/econst/-/errSSLModuleAttach
+C/econst/-/errSSLNegotiation
+C/econst/-/errSSLNoRootCert
+C/econst/-/errSSLPeerAccessDenied
+C/econst/-/errSSLPeerBadCert
+C/econst/-/errSSLPeerBadRecordMac
+C/econst/-/errSSLPeerCertExpired
+C/econst/-/errSSLPeerCertRevoked
+C/econst/-/errSSLPeerCertUnknown
+C/econst/-/errSSLPeerDecodeError
+C/econst/-/errSSLPeerDecompressFail
+C/econst/-/errSSLPeerDecryptError
+C/econst/-/errSSLPeerDecryptionFail
+C/econst/-/errSSLPeerExportRestriction
+C/econst/-/errSSLPeerHandshakeFail
+C/econst/-/errSSLPeerInsufficientSecurity
+C/econst/-/errSSLPeerInternalError
+C/econst/-/errSSLPeerNoRenegotiation
+C/econst/-/errSSLPeerProtocolVersion
+C/econst/-/errSSLPeerRecordOverflow
+C/econst/-/errSSLPeerUnexpectedMsg
+C/econst/-/errSSLPeerUnknownCA
+C/econst/-/errSSLPeerUnsupportedCert
+C/econst/-/errSSLPeerUserCancelled
+C/econst/-/errSSLProtocol
+C/econst/-/errSSLRecordOverflow
+C/econst/-/errSSLSessionNotFound
+C/econst/-/errSSLUnknownRootCert
+C/econst/-/errSSLWouldBlock
+C/econst/-/errSSLXCertChainInvalid
+C/econst/-/errWSInternalError
+C/econst/-/errWSParseError
+C/econst/-/errWSTimeoutError
+C/econst/-/errWSTransportError
+C/func/-/errx
+C/func/-/Escape
+C/econst/-/eSearchPathNotDefined
+C/econst/-/eServerError
+C/econst/-/eServerNotRunning
+C/econst/-/eServerReceiveError
+C/econst/-/eServerReplyError
+C/econst/-/eServerSendError
+Objective-C/instm/NSNibControlConnector/establishConnection
+Objective-C/instm/NSNibOutletConnector/establishConnection
+Objective-C/instm/NSNibConnector/establishConnection
+Objective-C/instm/WebView/estimatedProgress
+Objective-C/instm/DRTrack/estimateLength
+Objective-C/intfm/DRTrackDataProduction/estimateLengthOfTrack:
+C/func/-/ether_aton
+C/func/-/ether_hostton
+C/func/-/ether_line
+C/func/-/ether_ntoa
+C/func/-/ether_ntohost
+C/func/-/ethers
+C/econst/-/eUndefinedError
+C/econst/-/eUnknownAPICall
+C/econst/-/eUnknownPlugIn
+C/econst/-/eUnknownServerError
+Objective-C/instm/NSPositionalSpecifier/evaluate
+JavaScript/instm/Document/evaluate
+JavaScript/instm/JavaScriptCallFrame/evaluate
+JavaScript/instm/XPathEvaluator/evaluate
+JavaScript/instm/XPathExpression/evaluate
+Objective-C/instm/NSScriptCommand/evaluatedArguments
+Objective-C/instm/NSScriptCommand/evaluatedReceivers
+Objective-C/instm/WebScriptObject/evaluateWebScript:
+Objective-C/instm/NSPredicate/evaluateWithObject:
+Objective-C/instm/NSPredicate/evaluateWithObject:substitutionVariables:
+Objective-C/instm/NSScriptObjectSpecifier/evaluationErrorNumber
+Objective-C/instm/NSScriptObjectSpecifier/evaluationErrorSpecifier
+C/func/-/evdns
+C/func/-/evdns_clear_nameservers_and_suspend
+C/func/-/evdns_config_windows_nameservers
+C/func/-/evdns_count_nameservers
+C/func/-/evdns_err_to_string
+C/func/-/evdns_init
+C/func/-/evdns_nameserver_add
+C/func/-/evdns_nameserver_ip_add
+C/func/-/evdns_resolv_conf_parse
+C/func/-/evdns_resolve_ipv4
+C/func/-/evdns_resolve_reverse
+C/func/-/evdns_resume
+C/func/-/evdns_search_add
+C/func/-/evdns_search_clear
+C/func/-/evdns_search_ndots_set
+C/func/-/evdns_set_log_fn
+C/func/-/evdns_shutdown
+Objective-C/clm/CalEvent/event
+JavaScript/data/DOMWindow/event
+JavaScript/data/HTMLScriptElement/event
+JavaScript/cl/-/Event
+C++/data/IOWorkLoop/eventChain
+C++/data/IOEventSource/eventChainNext
+Objective-C/instm/NSAppleEventDescriptor/eventClass
+Objective-C/intfm/SBApplicationDelegate/eventDidFail:withError:
+JavaScript/data/DOMWindow/EventException
+JavaScript/cl/-/EventException
+Objective-C/instm/QCView/eventForwardingMask
+Objective-C/instm/NSAppleEventDescriptor/eventID
+JavaScript/cl/-/EventListener
+C/func/-/EventMaskOfScreen
+Objective-C/instm/NSEvent/eventNumber
+JavaScript/data/Event/eventPhase
+Objective-C/clm/CalCalendarStore/eventPredicateWithStartDate:endDate:calendars:
+Objective-C/clm/CalCalendarStore/eventPredicateWithStartDate:endDate:UID:calendars:
+C/tag/-/EventRecord
+Objective-C/instm/NSEvent/eventRef
+JavaScript/data/DOMWindow/EventSource
+JavaScript/cl/-/EventSource
+JavaScript/data/WorkerContext/EventSource
+Objective-C/instm/CalCalendarStore/eventsWithPredicate:
+JavaScript/cl/-/EventTarget
+Objective-C/clm/NSEvent/eventWithCGEvent:
+Objective-C/clm/NSEvent/eventWithEventRef:
+Objective-C/instm/CalCalendarStore/eventWithUID:occurrence:
+Objective-C/instm/NSCache/evictsObjectsWithDiscardedContent
+C/func/-/evp
+C/func/-/EVP_BytesToKey
+C/func/-/EVP_CIPHER_asn1_to_param
+C/func/-/EVP_CIPHER_block_size
+C/func/-/EVP_CIPHER_CTX_block_size
+C/func/-/EVP_CIPHER_CTX_cipher
+C/func/-/EVP_CIPHER_CTX_cleanup
+C/func/-/EVP_CIPHER_CTX_ctrl
+C/func/-/EVP_CIPHER_CTX_flags
+C/func/-/EVP_CIPHER_CTX_get_app_data
+C/func/-/EVP_CIPHER_CTX_init
+C/func/-/EVP_CIPHER_CTX_iv_length
+C/func/-/EVP_CIPHER_CTX_key_length
+C/func/-/EVP_CIPHER_CTX_mode
+C/func/-/EVP_CIPHER_CTX_nid
+C/func/-/EVP_CIPHER_CTX_set_app_data
+C/func/-/EVP_CIPHER_CTX_set_key_length
+C/func/-/EVP_CIPHER_CTX_set_padding
+C/func/-/EVP_CIPHER_CTX_type
+C/func/-/EVP_CIPHER_flags
+C/func/-/EVP_CIPHER_iv_length
+C/func/-/EVP_CIPHER_key_length
+C/func/-/EVP_CIPHER_mode
+C/func/-/EVP_CIPHER_nid
+C/func/-/EVP_CIPHER_param_to_asn1
+C/func/-/EVP_CIPHER_type
+C/func/-/EVP_CipherFinal
+C/func/-/EVP_CipherFinal_ex
+C/func/-/EVP_CipherInit
+C/func/-/EVP_CipherInit_ex
+C/func/-/EVP_CipherUpdate
+C/func/-/EVP_DecryptFinal
+C/func/-/EVP_DecryptFinal_ex
+C/func/-/EVP_DecryptInit
+C/func/-/EVP_DecryptInit_ex
+C/func/-/EVP_DecryptUpdate
+C/func/-/EVP_DigestFinal_ex
+C/func/-/EVP_DigestInit
+C/func/-/EVP_DigestInit_ex
+C/func/-/EVP_DigestUpdate
+C/func/-/EVP_dss
+C/func/-/EVP_dss1
+C/func/-/EVP_EncryptFinal
+C/func/-/EVP_EncryptFinal_ex
+C/func/-/EVP_EncryptInit
+C/func/-/EVP_EncryptInit_ex
+C/func/-/EVP_EncryptUpdate
+C/func/-/EVP_get_cipherbyname
+C/func/-/EVP_get_cipherbynid
+C/func/-/EVP_get_cipherbyobj
+C/func/-/EVP_get_digestbyname
+C/func/-/EVP_get_digestbynid
+C/func/-/EVP_get_digestbyobj
+C/func/-/EVP_MAX_MD_SIZE
+C/func/-/EVP_md2
+C/func/-/EVP_md5
+C/func/-/EVP_MD_block_size
+C/func/-/EVP_MD_CTX_block_size
+C/func/-/EVP_MD_CTX_cleanup
+C/func/-/EVP_MD_CTX_copy
+C/func/-/EVP_MD_CTX_copy_ex
+C/func/-/EVP_MD_CTX_create
+C/func/-/EVP_MD_CTX_destroy
+C/func/-/EVP_MD_CTX_init
+C/func/-/EVP_MD_CTX_md
+C/func/-/EVP_MD_CTX_size
+C/func/-/EVP_MD_CTX_type
+C/func/-/EVP_md_null
+C/func/-/EVP_MD_pkey_type
+C/func/-/EVP_MD_size
+C/func/-/EVP_MD_type
+C/func/-/EVP_mdc2
+C/func/-/EVP_OpenFinal
+C/func/-/EVP_OpenInit
+C/func/-/EVP_OpenUpdate
+C/func/-/EVP_PKEY_assign_DH
+C/func/-/EVP_PKEY_assign_DSA
+C/func/-/EVP_PKEY_assign_EC_KEY
+C/func/-/EVP_PKEY_assign_RSA
+C/func/-/EVP_PKEY_free
+C/func/-/EVP_PKEY_get1_DH
+C/func/-/EVP_PKEY_get1_DSA
+C/func/-/EVP_PKEY_get1_EC_KEY
+C/func/-/EVP_PKEY_get1_RSA
+C/func/-/EVP_PKEY_new
+C/func/-/EVP_PKEY_set1_DH
+C/func/-/EVP_PKEY_set1_DSA
+C/func/-/EVP_PKEY_set1_EC_KEY
+C/func/-/EVP_PKEY_set1_RSA
+C/func/-/EVP_PKEY_type
+C/func/-/EVP_ripemd160
+C/func/-/EVP_SealFinal
+C/func/-/EVP_SealInit
+C/func/-/EVP_SealUpdate
+C/func/-/EVP_sha
+C/func/-/EVP_sha1
+C/func/-/EVP_SignFinal
+C/func/-/EVP_SignInit
+C/func/-/EVP_SignInit_ex
+C/func/-/EVP_SignUpdate
+C/func/-/EVP_VerifyFinal
+C/func/-/EVP_VerifyInit
+C/func/-/EVP_VerifyInit_ex
+C/func/-/EVP_VerifyUpdate
+C/econst/-/eWSArrayType
+C/econst/-/eWSBooleanType
+C/econst/-/eWSDataType
+C/econst/-/eWSDateType
+C/econst/-/eWSDictionaryType
+C/econst/-/eWSDoubleType
+C/econst/-/eWSIntegerType
+C/econst/-/eWSNullType
+C/econst/-/eWSStringType
+C/econst/-/eWSUnknownType
+Objective-C/intfm/NSDecimalNumberBehaviors/exceptionDuringOperation:error:leftOperand:rightOperand:
+Objective-C/instm/NSObject/exceptionHandler:shouldHandleException:mask:
+Objective-C/instm/NSObject/exceptionHandler:shouldLogException:mask:
+Objective-C/instm/NSExceptionHandler/exceptionHandlingMask
+Objective-C/instm/NSExceptionHandler/exceptionHangingMask
+Objective-C/clm/NSException/exceptionWithName:reason:userInfo:
+C/func/-/exchangedata
+Objective-C/instm/NSMutableArray/exchangeObjectAtIndex:withObjectAtIndex:
+Objective-C/instm/PDFDocument/exchangePageAtIndex:withPageAtIndex:
+Objective-C/instm/NSDictionaryController/excludedKeys
+Objective-C/binding/NSDictionaryController/excludedKeys
+C/func/-/exec
+JavaScript/instm/Document/execCommand
+C/func/-/execl
+C/func/-/execle
+C/func/-/execlp
+Objective-C/instm/NSRunningApplication/executableArchitecture
+Objective-C/instp/NSRunningApplication/executableArchitecture
+Objective-C/instm/NSBundle/executableArchitectures
+Objective-C/instm/NSBundle/executablePath
+Objective-C/instm/NSRunningApplication/executableURL
+Objective-C/instp/NSRunningApplication/executableURL
+Objective-C/instm/NSBundle/executableURL
+Objective-C/instm/QCPlugIn/execute:atTime:withArguments:
+Objective-C/instm/NSAppleScript/executeAndReturnError:
+Objective-C/instm/NSAppleScript/executeAppleEvent:error:
+C++/instm/IOATABusCommand/executeCallback
+Objective-C/instm/NSScriptCommand/executeCommand
+C++/instm/IONetworkController/executeCommand
+C++/instm/IOATADevice/executeCommand
+C++/instm/ATADeviceNub/executeCommand
+C++/instm/IOSCSIProtocolInterface/ExecuteCommand
+C/func/-/ExecuteDataBrowserEditCommand
+Objective-C/instm/NSManagedObjectContext/executeFetchRequest:error:
+C++/instm/IOSCSIParallelInterfaceController/ExecuteParallelTask
+C++/instm/IOBlockStorageDriver/executeRequest
+JavaScript/instm/SQLTransaction/executeSql
+JavaScript/instm/SQLTransactionSync/executeSql
+Objective-C/instm/NSBlockOperation/executionBlocks
+Objective-C/clm/QCPlugIn/executionMode
+C/func/-/execv
+C/func/-/execve
+C/func/-/execvP
+C/func/-/execvp
+Objective-C/instm/NSManagedObjectContext/existingObjectWithID:error:
+C/func/-/exit
+Objective-C/clm/NSThread/exit
+C++/instm/IORegistryIterator/exitEntry
+Objective-C/instm/QLPreviewPanel/exitFullScreenModeWithOptions:
+Objective-C/instm/NSView/exitFullScreenModeWithOptions:
+Objective-C/clm/QTMovie/exitQTKitOnThread
+C/func/-/ExitToShell
+C/func/-/exp
+C/func/-/exp2
+C/func/-/exp2f
+C/func/-/exp2l
+JavaScript/instm/Range/expand
+Objective-C/instm/DRBurnSetupPanel/expand:
+JavaScript/data/HTMLDataGridRowElement/expanded
+JavaScript/data/NodeIterator/expandEntityReferences
+JavaScript/data/TreeWalker/expandEntityReferences
+Objective-C/instm/IKImageBrowserView/expandGroupAtIndex:
+Objective-C/instm/NSOutlineView/expandItem:
+Objective-C/instm/NSOutlineView/expandItem:expandChildren:
+C++/tag/IOFireWireAVCAsynchronousCommand/ExpansionData
+C++/tdef/IOATAController/ExpansionData
+C++/tag/IOEventSource/ExpansionData
+C++/tag/IOFilterInterruptEventSource/ExpansionData
+C++/tag/IOAGPDevice/ExpansionData
+C++/tag/IOExtendedLBA/ExpansionData
+C/tag/-/ExpansionData
+C++/tag/IOFireWireAVCSubUnit/ExpansionData
+C++/tag/IOFireWireAVCTargetSpace/ExpansionData
+C++/tag/IOCommandGate/ExpansionData
+C++/tag/IOATABusInfo/ExpansionData
+C++/tag/IOATADevConfig/ExpansionData
+C++/tag/IOFireWireAVCCommand/ExpansionData
+C++/tag/IOATADevice/ExpansionData
+C++/tag/IOATACommand/ExpansionData
+C++/tag/IOConfigDirectory/ExpansionData
+C++/tag/ATADeviceNub/ExpansionData
+C++/tag/IOATABusCommand/ExpansionData
+C++/tag/IOBufferMemoryDescriptor/ExpansionData
+C++/tag/IOFireWireBusAux/ExpansionData
+C++/tag/IOFireWireAVCUnit/ExpansionData
+C++/tag/ATATimerEventSource/ExpansionData
+C++/tag/IOCommandPool/ExpansionData
+C++/tag/IOFWAddressSpaceAux/ExpansionData
+C++/tag/IOFWPseudoAddressSpace/ExpansionData
+C++/tag/IOLocalConfigDirectory/ExpansionData
+C++/tag/IOFireWireNub/ExpansionData
+C++/tag/IOFireWireNubAux/ExpansionData
+C++/tag/IOFWDelayCommand/ExpansionData
+C++/tag/IOFireWireController/ExpansionData
+C++/tag/IOFWLocalIsochPort/ExpansionData
+C++/tag/IOFireWirePowerManager/ExpansionData
+C++/tag/IOFWBusCommand/ExpansionData
+C++/tag/IOFireWireUnit/ExpansionData
+C++/tag/IOFireWireDeviceAux/ExpansionData
+C++/tag/IOFWPhysicalAddressSpaceAux/ExpansionData
+C++/tag/IOFireWireIRMAllocation/ExpansionData
+C++/tag/IOFireWirePCRSpace/ExpansionData
+C++/tag/IOInterruptEventSource/ExpansionData
+C++/tag/IOFramebuffer/ExpansionData
+C++/tag/IOFireWireDevice/ExpansionData
+C++/tag/IOMemoryDescriptor/ExpansionData
+C++/tag/IOFireWireControllerAux/ExpansionData
+C++/tag/IODCLProgram/ExpansionData
+C++/tag/IOFWIsochChannel/ExpansionData
+C++/tag/IOFireWireUnitAux/ExpansionData
+C++/tag/IOFWAddressSpace/ExpansionData
+C++/tag/IOFireWireLocalNodeAux/ExpansionData
+C++/tag/IOFWAsyncStreamListener/ExpansionData
+C++/tag/IOWorkLoop/ExpansionData
+C++/tdef/IOPCIATA/ExpansionData
+C++/tag/IOPCI2PCIBridge/ExpansionData
+C++/tag/IOUserClient/ExpansionData
+C++/tag/IOTimerEventSource/ExpansionData
+C++/tag/IORegistryEntry/ExpansionData
+C++/tag/IOService/ExpansionData
+C++/tag/IORemoteConfigDirectory/ExpansionData
+C++/tag/MacIOATA/ExpansionData
+Objective-C/instm/NSCell/expansionFrameWithFrame:inView:
+Objective-C/instm/NSURLResponse/expectedContentLength
+Objective-C/instm/NSURLHandle/expectedResourceDataSize
+C/func/-/expf
+Objective-C/instp/PSFeedSettings/expirationInterval
+Objective-C/instm/NSHTTPCookie/expiresDate
+C/func/-/expl
+C++/data/IOInterruptEventSource/explicitDisable
+Objective-C/instm/DRFSObject/explicitFilesystemMask
+C/func/-/expm1
+C/func/-/expm1f
+C/func/-/expm1l
+JavaScript/data/SVGComponentTransferFunctionElement/exponent
+Objective-C/instm/NSNumberFormatter/exponentSymbol
+Objective-C/instm/CIFilterGenerator/exportedKeys
+Objective-C/instm/CIFilterGenerator/exportKey:fromObject:withName:
+Objective-C/intfm/ApertureExportPlugIn/exportManagerDidFinishExport
+Objective-C/intfm/ApertureExportPlugIn/exportManagerDidWriteImageDataToRelativePath:forImageAtIndex:
+Objective-C/intfm/ApertureExportPlugIn/exportManagerExportTypeDidChange
+Objective-C/intfm/ApertureExportPlugIn/exportManagerShouldBeginExport
+Objective-C/intfm/ApertureExportPlugIn/exportManagerShouldCancelExport
+Objective-C/intfm/ApertureExportPlugIn/exportManagerShouldExportImageAtIndex:
+Objective-C/intfm/ApertureExportPlugIn/exportManagerShouldWriteImageData:toRelativePath:forImageAtIndex:
+Objective-C/intfm/ApertureExportPlugIn/exportManagerWillBeginExportToPath:
+Objective-C/intfm/ApertureExportPlugIn/exportManagerWillExportImageAtIndex:
+C++/instm/IOUserClient/exportObjectToClient
+Objective-C/clm/IKSlideshow/exportSlideshowItem:toApplication:
+Objective-C/clm/NSObject/exposeBinding:
+Objective-C/instm/NSObject/exposedBindings
+Objective-C/instm/NSExpressionDescription/expression
+Objective-C/instm/NSExpression/expressionBlock
+Objective-C/clm/NSExpression/expressionForAggregate:
+Objective-C/clm/NSExpression/expressionForBlock:arguments:
+Objective-C/clm/NSExpression/expressionForConstantValue:
+Objective-C/clm/NSExpression/expressionForEvaluatedObject
+Objective-C/clm/NSFetchRequestExpression/expressionForFetch:context:countOnly:
+Objective-C/clm/NSExpression/expressionForFunction:arguments:
+Objective-C/clm/NSExpression/expressionForFunction:selectorName:arguments:
+Objective-C/clm/NSExpression/expressionForIntersectSet:with:
+Objective-C/clm/NSExpression/expressionForKeyPath:
+Objective-C/clm/NSExpression/expressionForMinusSet:with:
+Objective-C/clm/NSExpression/expressionForSubquery:usingIteratorVariable:predicate:
+Objective-C/clm/NSExpression/expressionForUnionSet:with:
+Objective-C/clm/NSExpression/expressionForVariable:
+Objective-C/instm/NSExpressionDescription/expressionResultType
+Objective-C/instm/NSExpression/expressionType
+Objective-C/instm/NSExpression/expressionValueWithObject:context:
+C/macro/-/EXSLT_COMMON_NAMESPACE
+C/macro/-/EXSLT_CRYPTO_NAMESPACE
+C/macro/-/EXSLT_DATE_NAMESPACE
+C/macro/-/EXSLT_DYNAMIC_NAMESPACE
+C/macro/-/EXSLT_FUNCTIONS_NAMESPACE
+C/macro/-/EXSLT_MATH_NAMESPACE
+C/macro/-/EXSLT_SETS_NAMESPACE
+C/macro/-/EXSLT_STRINGS_NAMESPACE
+C/macro/-/EXSLTCALL
+C/func/-/exsltCommonRegister
+C/func/-/exsltDateRegister
+C/func/-/exsltDynRegister
+C/func/-/exsltFuncRegister
+C/func/-/exsltMathRegister
+C/macro/-/EXSLTPUBFUN
+C/macro/-/EXSLTPUBVAR
+C/func/-/exsltRegisterAll
+C/func/-/exsltSaxonRegister
+C/func/-/exsltSetsRegister
+C/func/-/exsltStrRegister
+C/func/-/ExtAudioFileCreateNew
+C/func/-/ExtAudioFileCreateWithURL
+C/func/-/ExtAudioFileDispose
+C/func/-/ExtAudioFileGetProperty
+C/func/-/ExtAudioFileGetPropertyInfo
+C/func/-/ExtAudioFileOpen
+C/func/-/ExtAudioFileOpenURL
+C/tdef/-/ExtAudioFilePropertyID
+C/func/-/ExtAudioFileRead
+C/tdef/-/ExtAudioFileRef
+C/func/-/ExtAudioFileSeek
+C/func/-/ExtAudioFileSetProperty
+C/func/-/ExtAudioFileTell
+C/func/-/ExtAudioFileWrapAudioFileID
+C/func/-/ExtAudioFileWrite
+C/func/-/ExtAudioFileWriteAsync
+C/tdef/-/ExtComponentResource
+JavaScript/instm/DOMSelection/extend
+C++/instm/IOPCIDevice/extendedConfigRead16
+C++/instm/IOPCIDevice/extendedConfigRead32
+C++/instm/IOPCIDevice/extendedConfigRead8
+C++/instm/IOPCIDevice/extendedConfigWrite16
+C++/instm/IOPCIDevice/extendedConfigWrite32
+C++/instm/IOPCIDevice/extendedConfigWrite8
+C/tdef/-/ExtendedControlEvent
+C++/instm/IOPCIDevice/extendedFindPCICapability
+C/tdef/-/ExtendedNoteOnEvent
+C/tdef/-/ExtendedTempoEvent
+C/func/-/ExtendMediaDecodeDurationToDisplayEndTime
+Objective-C/instm/NSWorkspace/extendPowerOffBy:
+Objective-C/instm/PDFSelection/extendSelectionAtEnd:
+Objective-C/instm/PDFSelection/extendSelectionAtStart:
+C/func/-/Extension
+JavaScript/clconst/WebGLRenderingContext/EXTENSIONS
+Objective-C/instm/PSEntry/extensionXMLElementsUsingNamespace:
+Objective-C/instm/PSFeed/extensionXMLElementsUsingNamespace:
+Objective-C/instm/CIImageAccumulator/extent
+Objective-C/instm/CIImage/extent
+Objective-C/instm/CISampler/extent
+JavaScript/data/DOMSelection/extentNode
+JavaScript/data/DOMSelection/extentOffset
+Objective-C/instm/NSObject/externalMovie:
+JavaScript/data/SVGExternalResourcesRequired/externalResourcesRequired
+C/tdef/-/externalSubsetSAXFunc
+C/econst/-/extFSErr
+JavaScript/instm/Range/extractContents
+Objective-C/instm/NSLayoutManager/extraLineFragmentRect
+Objective-C/instm/NSLayoutManager/extraLineFragmentTextContainer
+Objective-C/instm/NSLayoutManager/extraLineFragmentUsedRect
+JavaScript/data/SVGMatrix/f
+JavaScript/data/WebKitCSSMatrix/f
+C/func/-/f3x3
+C/func/-/f3x3D
+C/func/-/f5x5
+C/func/-/f5x5D
+C/func/-/fabs
+C/func/-/fabsf
+C/func/-/fabsl
+JavaScript/data/HTMLBaseFontElement/face
+JavaScript/data/HTMLFontElement/face
+C++/data/IODMACommand/fActive
+Objective-C/clm/CATiledLayer/fadeDuration
+C++/instm/TestRun/failedTest
+C++/instm/TestRun/failureCount
+Objective-C/instm/NSURLHandle/failureReason
+Objective-C/instm/NSURLAuthenticationChallenge/failureResponse
+Objective-C/instm/XGAuthenticator/failWithError:
+C++/data/IODMACommand/fAlignMask
+JavaScript/clconst/WebGLRenderingContext/FALSE
+C++/data/IOAudioDevice/familyManagePower
+Objective-C/instm/NSFont/familyName
+Objective-C/instm/WebPreferences/fantasyFontFamily
+JavaScript/data/SVGLocatable/farthestViewportElement
+JavaScript/clconst/WebGLRenderingContext/FASTEST
+Objective-C/instm/NSString/fastestEncoding
+C/tag/-/fat_arch
+C/tag/-/fat_header
+C/tdef/-/fatalErrorSAXFunc
+Objective-C/instm/NSManagedObject/faultingState
+Objective-C/clm/IOBluetoothDevice/favoriteDevices
+C/econst/-/fBsyErr
+C++/data/IODMACommand/fBypassMask
+C/func/-/FcAtomicCreate
+C/func/-/FcAtomicDeleteNew
+C/func/-/FcAtomicDestroy
+C/func/-/FcAtomicLock
+C/func/-/FcAtomicNewFile
+C/func/-/FcAtomicOrigFile
+C/func/-/FcAtomicReplaceOrig
+C/func/-/FcAtomicUnlock
+C/func/-/FcBlanksAdd
+C/func/-/FcBlanksCreate
+C/func/-/FcBlanksDestroy
+C/func/-/FcBlanksIsMember
+C/tdef/-/FCBPBRec
+C/func/-/FcCacheCopySet
+C/func/-/FcCacheDir
+C/func/-/FcCacheNumFont
+C/func/-/FcCacheNumSubdir
+C/func/-/FcCacheSubdir
+C/func/-/FcCharSetAddChar
+C/func/-/FcCharSetCopy
+C/func/-/FcCharSetCount
+C/func/-/FcCharSetCoverage
+C/func/-/FcCharSetCreate
+C/func/-/FcCharSetDestroy
+C/func/-/FcCharSetEqual
+C/func/-/FcCharSetFirstPage
+C/func/-/FcCharSetHasChar
+C/func/-/FcCharSetIntersect
+C/func/-/FcCharSetIntersectCount
+C/func/-/FcCharSetIsSubset
+C/func/-/FcCharSetMerge
+C/func/-/FcCharSetNew
+C/func/-/FcCharSetNextPage
+C/func/-/FcCharSetSubtract
+C/func/-/FcCharSetSubtractCount
+C/func/-/FcCharSetUnion
+C/func/-/FcConfigAppFontAddDir
+C/func/-/FcConfigAppFontAddFile
+C/func/-/FcConfigAppFontClear
+C/func/-/FcConfigBuildFonts
+C/func/-/FcConfigCreate
+C/func/-/FcConfigDestroy
+C/func/-/FcConfigEnableHome
+C/func/-/FcConfigFilename
+C/func/-/FcConfigGetBlanks
+C/func/-/FcConfigGetCache
+C/func/-/FcConfigGetCacheDirs
+C/func/-/FcConfigGetConfigDirs
+C/func/-/FcConfigGetConfigFiles
+C/func/-/FcConfigGetCurrent
+C/func/-/FcConfigGetFontDirs
+C/func/-/FcConfigGetFonts
+C/func/-/FcConfigGetRescanInterval
+C/func/-/FcConfigHome
+C/func/-/FcConfigParseAndLoad
+C/func/-/FcConfigReference
+C/func/-/FcConfigSetCurrent
+C/func/-/FcConfigSetRescanInterval
+C/func/-/FcConfigSubstitute
+C/func/-/FcConfigSubstituteWithPat
+C/func/-/FcConfigUptoDate
+C/func/-/FcDefaultSubstitute
+C/func/-/FcDirCacheLoad
+C/func/-/FcDirCacheLoadFile
+C/func/-/FcDirCacheRead
+C/func/-/FcDirCacheUnlink
+C/func/-/FcDirCacheUnload
+C/func/-/FcDirCacheValid
+C/func/-/FcDirSave
+C/func/-/FcDirScan
+C/func/-/FcFileIsDir
+C/func/-/FcFileScan
+C/func/-/FcFini
+C/func/-/FcFontList
+C/func/-/FcFontMatch
+C/func/-/FcFontRenderPrepare
+C/func/-/FcFontSetAdd
+C/func/-/FcFontSetCreate
+C/func/-/FcFontSetDestroy
+C/func/-/FcFontSetList
+C/func/-/FcFontSetMatch
+C/func/-/FcFontSetPrint
+C/func/-/FcFontSetSort
+C/func/-/FcFontSetSortDestroy
+C/func/-/FcFontSort
+C/func/-/FcFreeTypeCharIndex
+C/func/-/FcFreeTypeCharSet
+C/func/-/FcFreeTypeCharSetAndSpacing
+C/func/-/FcFreeTypeQuery
+C/func/-/FcFreeTypeQueryFace
+C/func/-/FcGetLangs
+C/func/-/FcGetVersion
+C/func/-/fchdir
+C/func/-/fchflags
+C/func/-/fchmod
+C/func/-/fchown
+C/func/-/FcInit
+C/func/-/FcInitBringUptoDate
+C/func/-/FcInitLoadConfig
+C/func/-/FcInitLoadConfigAndFonts
+C/func/-/FcInitReinitialize
+C/func/-/FcIsLower
+C/func/-/FcIsUpper
+C/func/-/FcLangGetCharSet
+C/func/-/FcLangSetAdd
+C/func/-/FcLangSetCompare
+C/func/-/FcLangSetContains
+C/func/-/FcLangSetCopy
+C/func/-/FcLangSetCreate
+C/func/-/FcLangSetDestroy
+C/func/-/FcLangSetEqual
+C/func/-/FcLangSetGetLangs
+C/func/-/FcLangSetHash
+C/func/-/FcLangSetHasLang
+C/func/-/fclose
+C/func/-/FcMatrixCopy
+C/func/-/FcMatrixEqual
+C/func/-/FcMatrixInit
+C/func/-/FcMatrixMultiply
+C/func/-/FcMatrixRotate
+C/func/-/FcMatrixScale
+C/func/-/FcMatrixShear
+C/func/-/FcNameConstant
+C/func/-/FcNameGetConstant
+C/func/-/FcNameGetObjectType
+C/func/-/FcNameParse
+C/func/-/FcNameRegisterConstants
+C/func/-/FcNameRegisterObjectTypes
+C/func/-/FcNameUnparse
+C/func/-/FcNameUnregisterConstants
+C/func/-/FcNameUnregisterObjectTypes
+C/func/-/fcntl
+C/func/-/FcObjectSetAdd
+C/func/-/FcObjectSetBuild
+C/func/-/FcObjectSetCreate
+C/func/-/FcObjectSetDestroy
+C/func/-/FcObjectSetVaBuild
+C/func/-/FcObjectSetVapBuild
+C++/data/IOCommand/fCommandChain
+C/func/-/FCompressImage
+C/func/-/FCompressPicture
+C/func/-/FCompressPictureFile
+C/func/-/fcopyfile
+C/func/-/FcPatternAdd
+C/func/-/FcPatternAdd-Type
+C/func/-/FcPatternAddBool
+C/func/-/FcPatternAddCharSet
+C/func/-/FcPatternAddDouble
+C/func/-/FcPatternAddFTFace
+C/func/-/FcPatternAddInteger
+C/func/-/FcPatternAddLangSet
+C/func/-/FcPatternAddMatrix
+C/func/-/FcPatternAddString
+C/func/-/FcPatternAddWeak
+C/func/-/FcPatternBuild
+C/func/-/FcPatternCreate
+C/func/-/FcPatternDel
+C/func/-/FcPatternDestroy
+C/func/-/FcPatternDuplicate
+C/func/-/FcPatternEqual
+C/func/-/FcPatternEqualSubset
+C/func/-/FcPatternFilter
+C/func/-/FcPatternFormat
+C/func/-/FcPatternGet
+C/func/-/FcPatternGet-Type
+C/func/-/FcPatternGetBool
+C/func/-/FcPatternGetCharSet
+C/func/-/FcPatternGetDouble
+C/func/-/FcPatternGetFTFace
+C/func/-/FcPatternGetInteger
+C/func/-/FcPatternGetLangSet
+C/func/-/FcPatternGetMatrix
+C/func/-/FcPatternGetString
+C/func/-/FcPatternHash
+C/func/-/FcPatternPrint
+C/func/-/FcPatternReference
+C/func/-/FcPatternRemove
+C/func/-/FcPatternVaBuild
+C/func/-/FcPatternVapBuild
+C/func/-/FcStrBasename
+C/func/-/FcStrCmp
+C/func/-/FcStrCmpIgnoreCase
+C/func/-/FcStrCopy
+C/func/-/FcStrCopyFilename
+C/func/-/FcStrDirname
+C/func/-/FcStrDowncase
+C/func/-/FcStrFree
+C/func/-/FcStrListCreate
+C/func/-/FcStrListDone
+C/func/-/FcStrListNext
+C/func/-/FcStrPlus
+C/func/-/FcStrSetAdd
+C/func/-/FcStrSetAddFilename
+C/func/-/FcStrSetCreate
+C/func/-/FcStrSetDel
+C/func/-/FcStrSetDestroy
+C/func/-/FcStrSetEqual
+C/func/-/FcStrSetMember
+C/func/-/FcStrStr
+C/func/-/FcStrStrIgnoreCase
+C/func/-/FcToLower
+C/func/-/FcUcs4ToUtf8
+C/func/-/FcUtf16Len
+C/func/-/FcUtf16ToUcs4
+C/func/-/FcUtf8Len
+C/func/-/FcUtf8ToUcs4
+C/func/-/FcValueDestroy
+C/func/-/FcValueEqual
+C/func/-/FcValuePrint
+C/func/-/FcValueSave
+C/func/-/fcvt
+C/func/-/FD_CLR
+C/func/-/FD_COPY
+C/func/-/FD_ISSET
+C/func/-/FD_SET
+C/func/-/FD_ZERO
+C/func/-/FDecompressImage
+C/func/-/fdim
+C/func/-/fdimf
+C/func/-/fdiml
+C/func/-/fdopen
+Objective-C/instp/PSEntry/feed
+Objective-C/instp/PSFeed/feedFormat
+C++/instm/IONetworkInterface/feedPacketInputTap
+C++/instm/IONetworkInterface/feedPacketOutputTap
+Objective-C/instp/PSClient/feeds
+Objective-C/instm/PSClient/feedWithIdentifier:
+Objective-C/instm/PSClient/feedWithURL:
+C/func/-/feof
+C/func/-/feof_unlocked
+C/func/-/ferror
+C/func/-/ferror_unlocked
+Objective-C/instm/NSObjectController/fetch:
+Objective-C/instm/NSFetchRequest/fetchBatchSize
+Objective-C/instm/NSFetchRequest/fetchLimit
+Objective-C/instm/NSFetchRequest/fetchOffset
+Objective-C/instm/NSObjectController/fetchPredicate
+Objective-C/instm/NSFetchedPropertyDescription/fetchRequest
+Objective-C/instm/NSManagedObjectModel/fetchRequestFromTemplateWithName:substitutionVariables:
+Objective-C/instm/NSManagedObjectModel/fetchRequestTemplateForName:
+Objective-C/instm/NSManagedObjectModel/fetchRequestTemplatesByName
+Objective-C/instm/NSObjectController/fetchWithRequest:merge:error:
+C++/data/IOATACommand/fExpansionData
+C++/data/IODCLProgram/fExpansionData
+C/macro/-/FF_DEGREES
+C/macro/-/FF_DOWNLOADSKIPPED
+C/macro/-/FF_EFFECTRESTARTED
+C/macro/-/FF_FALSE
+C/macro/-/FF_FFNOMINALMAX
+C/macro/-/FF_INFINITE
+C/macro/-/FF_OK
+C/macro/-/FF_SECONDS
+C/macro/-/FF_TRUNCATED
+C/macro/-/FF_TRUNCATEDANDRESTARTED
+C/econst/FFCapabilitiesEffectType/FFCAP_ET_CONSTANTFORCE
+C/econst/FFCapabilitiesEffectType/FFCAP_ET_CUSTOMFORCE
+C/econst/FFCapabilitiesEffectType/FFCAP_ET_DAMPER
+C/econst/FFCapabilitiesEffectType/FFCAP_ET_FRICTION
+C/econst/FFCapabilitiesEffectType/FFCAP_ET_INERTIA
+C/econst/FFCapabilitiesEffectType/FFCAP_ET_RAMPFORCE
+C/econst/FFCapabilitiesEffectType/FFCAP_ET_SAWTOOTHDOWN
+C/econst/FFCapabilitiesEffectType/FFCAP_ET_SAWTOOTHUP
+C/econst/FFCapabilitiesEffectType/FFCAP_ET_SINE
+C/econst/FFCapabilitiesEffectType/FFCAP_ET_SPRING
+C/econst/FFCapabilitiesEffectType/FFCAP_ET_SQUARE
+C/econst/FFCapabilitiesEffectType/FFCAP_ET_TRIANGLE
+C/tdef/-/FFCAPABILITIES
+C/tag/-/FFCAPABILITIES
+C/tag/-/FFCapabilitiesEffectSubType
+C/tdef/-/FFCapabilitiesEffectSubType
+C/tdef/-/FFCapabilitiesEffectType
+C/tag/-/FFCapabilitiesEffectType
+C/tdef/-/FFCommandFlag
+C/tag/-/FFCommandFlag
+C/tdef/-/FFCONDITION
+C/tag/-/FFCONDITION
+C/tdef/-/FFCONSTANTFORCE
+C/tag/-/FFCONSTANTFORCE
+C/tdef/-/FFCooperativeLevelFlag
+C/tag/-/FFCooperativeLevelFlag
+C/tdef/-/FFCoordinateSystemFlag
+C/tag/-/FFCoordinateSystemFlag
+C/func/-/FFCreateDevice
+C/tdef/-/FFCUSTOMFORCE
+C/tag/-/FFCUSTOMFORCE
+C/func/-/FFDeviceCreateEffect
+C/func/-/FFDeviceEscape
+C/func/-/FFDeviceGetForceFeedbackCapabilities
+C/func/-/FFDeviceGetForceFeedbackProperty
+C/func/-/FFDeviceGetForceFeedbackState
+C/func/-/FFDeviceReleaseEffect
+C/func/-/FFDeviceSendForceFeedbackCommand
+C/func/-/FFDeviceSetCooperativeLevel
+C/func/-/FFDeviceSetForceFeedbackProperty
+C/econst/FFCoordinateSystemFlag/FFEFF_CARTESIAN
+C/macro/-/FFEFF_OBJECTOFFSETS
+C/econst/FFCoordinateSystemFlag/FFEFF_POLAR
+C/econst/FFCoordinateSystemFlag/FFEFF_SPHERICAL
+C/tdef/-/FFEFFECT
+C/tag/-/FFEFFECT
+C/func/-/FFEffectDownload
+C/tdef/-/FFEffectDownloadID
+C/func/-/FFEffectEscape
+C/func/-/FFEffectGetEffectStatus
+C/func/-/FFEffectGetParameters
+C/tdef/-/FFEffectParameterFlag
+C/tag/-/FFEffectParameterFlag
+C/func/-/FFEffectSetParameters
+C/func/-/FFEffectStart
+C/tdef/-/FFEffectStartFlag
+C/tag/-/FFEffectStartFlag
+C/tdef/-/FFEffectStatusFlag
+C/tag/-/FFEffectStatusFlag
+C/func/-/FFEffectStop
+C/func/-/FFEffectUnload
+C/tdef/-/FFEFFESCAPE
+C/tag/-/FFEFFESCAPE
+C/tag/-/FFENVELOPE
+C/tdef/-/FFENVELOPE
+C/macro/-/FFERR_DEVICEFULL
+C/macro/-/FFERR_DEVICENOTREG
+C/macro/-/FFERR_DEVICEPAUSED
+C/macro/-/FFERR_DEVICERELEASED
+C/macro/-/FFERR_EFFECTPLAYING
+C/macro/-/FFERR_EFFECTTYPEMISMATCH
+C/macro/-/FFERR_EFFECTTYPENOTSUPPORTED
+C/macro/-/FFERR_GENERIC
+C/macro/-/FFERR_HASEFFECTS
+C/macro/-/FFERR_INCOMPLETEEFFECT
+C/macro/-/FFERR_INTERNAL
+C/macro/-/FFERR_INVALIDDOWNLOADID
+C/macro/-/FFERR_INVALIDPARAM
+C/macro/-/FFERR_MOREDATA
+C/macro/-/FFERR_NOINTERFACE
+C/macro/-/FFERR_NOTDOWNLOADED
+C/macro/-/FFERR_NOTINITIALIZED
+C/macro/-/FFERR_OUTOFMEMORY
+C/macro/-/FFERR_UNPLUGGED
+C/macro/-/FFERR_UNSUPPORTED
+C/macro/-/FFERR_UNSUPPORTEDAXIS
+C/func/-/ffi
+C/func/-/ffi_call
+C/func/-/ffi_prep_cif
+C/func/-/ffi_prep_closure
+C/func/-/FFIsForceFeedback
+C/macro/-/FFJOFS_X
+C/func/-/fflagstostr
+C/func/-/fflush
+C/tag/-/FFPERIODIC
+C/tdef/-/FFPERIODIC
+C/tag/-/FFProperty
+C/tdef/-/FFProperty
+C/tag/-/FFRAMPFORCE
+C/tdef/-/FFRAMPFORCE
+C/func/-/FFReleaseDevice
+C/func/-/ffs
+C/func/-/ffsl
+C/tdef/-/FFState
+C/tag/-/FFState
+C/func/-/fft2d_zip
+C/func/-/fft2d_zipD
+C/func/-/fft2d_zipt
+C/func/-/fft2d_ziptD
+C/func/-/fft2d_zop
+C/func/-/fft2d_zopD
+C/func/-/fft2d_zopt
+C/func/-/fft2d_zoptD
+C/func/-/fft2d_zrip
+C/func/-/fft2d_zripD
+C/func/-/fft2d_zript
+C/func/-/fft2d_zriptD
+C/func/-/fft2d_zrop
+C/func/-/fft2d_zropD
+C/func/-/fft2d_zropt
+C/func/-/fft2d_zroptD
+C/func/-/fft3_zop
+C/func/-/fft3_zopD
+C/func/-/fft5_zop
+C/func/-/fft5_zopD
+C/func/-/fft_zip
+C/func/-/fft_zipD
+C/func/-/fft_zipt
+C/func/-/fft_ziptD
+C/func/-/fft_zop
+C/func/-/fft_zopD
+C/func/-/fft_zopt
+C/func/-/fft_zoptD
+C/func/-/fft_zrip
+C/func/-/fft_zripD
+C/func/-/fft_zript
+C/func/-/fft_zriptD
+C/func/-/fft_zrop
+C/func/-/fft_zropD
+C/func/-/fft_zropt
+C/func/-/fft_zroptD
+C/tdef/-/FFTDirection
+C/func/-/fftm_zip
+C/func/-/fftm_zipD
+C/func/-/fftm_zipt
+C/func/-/fftm_ziptD
+C/func/-/fftm_zop
+C/func/-/fftm_zopD
+C/func/-/fftm_zopt
+C/func/-/fftm_zoptD
+C/func/-/fftm_zrip
+C/func/-/fftm_zripD
+C/func/-/fftm_zript
+C/func/-/fftm_zriptD
+C/func/-/fftm_zrop
+C/func/-/fftm_zropD
+C/func/-/fftm_zropt
+C/func/-/fftm_zroptD
+C/tdef/-/FFTRadix
+C/tdef/-/FFTSetup
+C/tdef/-/FFTSetupD
+JavaScript/data/HTMLDocument/fgColor
+C/func/-/fgetattrlist
+C/func/-/fgetc
+C/func/-/fgetln
+C/func/-/fgetpos
+C/func/-/fgetrune
+C/func/-/fgets
+C/func/-/fgetwc
+C/func/-/fgetwc_l
+C/func/-/fgetws
+C/func/-/fgetws_l
+C/func/-/fgetxattr
+C/func/-/fhopen
+C/econst/-/fidExists
+C/econst/-/fidNotFound
+C/tdef/-/FIDParam
+Objective-C/instm/FxImage/field
+Objective-C/instm/NSWindow/fieldEditor:forObject:
+Objective-C/instm/NSCell/fieldEditorForView:
+Objective-C/instm/PDFAnnotationChoiceWidget/fieldName
+Objective-C/instm/PDFAnnotationTextWidget/fieldName
+Objective-C/instm/PDFAnnotationButtonWidget/fieldName
+Objective-C/instm/FxImage/fieldOrder
+Objective-C/intfm/FxTimingAPI/fieldOrderForImageParm:forEffect:
+Objective-C/intfm/FxTimingAPI/fieldOrderForInputAToTransition:
+Objective-C/intfm/FxTimingAPI/fieldOrderForInputBToTransition:
+Objective-C/intfm/FxTimingAPI/fieldOrderForInputToFilter:
+Objective-C/instm/PDFActionResetForm/fields
+Objective-C/instm/PDFActionResetForm/fieldsIncludedAreCleared
+C++/instm/TestFailure/file
+Objective-C/instm/XGFileDownload/file
+JavaScript/data/DOMWindow/File
+JavaScript/cl/-/File
+Objective-C/instm/NSDirectoryEnumerator/fileAttributes
+Objective-C/instm/NSFileWrapper/fileAttributes
+Objective-C/instm/NSFileManager/fileAttributesAtPath:traverseLink:
+Objective-C/instm/NSDocument/fileAttributesToWriteToFile:ofType:saveOperation:
+Objective-C/instm/NSDocument/fileAttributesToWriteToURL:ofType:forSaveOperation:originalContentsURL:error:
+C/econst/-/fileBoundsErr
+Objective-C/instm/NSDictionary/fileCreationDate
+Objective-C/instm/NSFileHandle/fileDescriptor
+Objective-C/instm/NSObject(XGFileDownloadDelegate)/fileDownload:decideDestinationWithSuggestedPath:
+Objective-C/instm/NSObject(XGFileDownloadDelegate)/fileDownload:didCreateDestination:
+Objective-C/instm/NSObject(XGFileDownloadDelegate)/fileDownload:didFailWithError:
+Objective-C/instm/NSObject(XGFileDownloadDelegate)/fileDownload:didReceiveAttributes:
+Objective-C/instm/NSObject(XGFileDownloadDelegate)/fileDownload:didReceiveData:
+Objective-C/instm/NSObject(XGFileDownloadDelegate)/fileDownloadDidBegin:
+Objective-C/instm/NSObject(XGFileDownloadDelegate)/fileDownloadDidFinish:
+JavaScript/data/DOMWindow/FileError
+JavaScript/cl/-/FileError
+Objective-C/instm/NSFileManager/fileExistsAtPath:
+Objective-C/instm/NSFileManager/fileExistsAtPath:isDirectory:
+Objective-C/instm/NSDictionary/fileExtensionHidden
+Objective-C/instm/NSDocumentController/fileExtensionsFromType:
+Objective-C/instm/NSDictionary/fileGroupOwnerAccountID
+Objective-C/instm/NSDictionary/fileGroupOwnerAccountName
+Objective-C/instm/NSPipe/fileHandleForReading
+Objective-C/clm/NSFileHandle/fileHandleForReadingAtPath:
+Objective-C/clm/NSFileHandle/fileHandleForReadingFromURL:error:
+Objective-C/clm/NSFileHandle/fileHandleForUpdatingAtPath:
+Objective-C/clm/NSFileHandle/fileHandleForUpdatingURL:error:
+Objective-C/instm/NSPipe/fileHandleForWriting
+Objective-C/clm/NSFileHandle/fileHandleForWritingAtPath:
+Objective-C/clm/NSFileHandle/fileHandleForWritingToURL:error:
+Objective-C/clm/NSFileHandle/fileHandleWithNullDevice
+Objective-C/clm/NSFileHandle/fileHandleWithStandardError
+Objective-C/clm/NSFileHandle/fileHandleWithStandardInput
+Objective-C/clm/NSFileHandle/fileHandleWithStandardOutput
+Objective-C/instm/NSDictionary/fileHFSCreatorCode
+Objective-C/instm/NSDictionary/fileHFSTypeCode
+Objective-C/instm/NSDictionary/fileIsAppendOnly
+Objective-C/instm/NSDictionary/fileIsImmutable
+Objective-C/instm/NSWorkspace/fileLabelColors
+Objective-C/instm/NSWorkspace/fileLabels
+JavaScript/data/DOMWindow/FileList
+JavaScript/cl/-/FileList
+Objective-C/instm/NSObject/fileManager:shouldCopyItemAtPath:toPath:
+Objective-C/instm/NSObject/fileManager:shouldCopyItemAtURL:toURL:
+Objective-C/instm/NSObject/fileManager:shouldLinkItemAtPath:toPath:
+Objective-C/instm/NSObject/fileManager:shouldLinkItemAtURL:toURL:
+Objective-C/instm/NSObject/fileManager:shouldMoveItemAtPath:toPath:
+Objective-C/instm/NSObject/fileManager:shouldMoveItemAtURL:toURL:
+Objective-C/instm/NSObject/fileManager:shouldProceedAfterError:
+Objective-C/instm/NSObject/fileManager:shouldProceedAfterError:copyingItemAtPath:toPath:
+Objective-C/instm/NSObject/fileManager:shouldProceedAfterError:copyingItemAtURL:toURL:
+Objective-C/instm/NSObject/fileManager:shouldProceedAfterError:linkingItemAtPath:toPath:
+Objective-C/instm/NSObject/fileManager:shouldProceedAfterError:linkingItemAtURL:toURL:
+Objective-C/instm/NSObject/fileManager:shouldProceedAfterError:movingItemAtPath:toPath:
+Objective-C/instm/NSObject/fileManager:shouldProceedAfterError:movingItemAtURL:toURL:
+Objective-C/instm/NSObject/fileManager:shouldProceedAfterError:removingItemAtPath:
+Objective-C/instm/NSObject/fileManager:shouldProceedAfterError:removingItemAtURL:
+Objective-C/instm/NSObject/fileManager:shouldRemoveItemAtPath:
+Objective-C/instm/NSObject/fileManager:shouldRemoveItemAtURL:
+Objective-C/instm/NSObject/fileManager:willProcessPath:
+Objective-C/instm/NSDocument/fileModificationDate
+Objective-C/instm/NSDictionary/fileModificationDate
+Objective-C/instm/NSDocument/fileName
+Objective-C/instm/NSSavePanel/filename
+Objective-C/instm/NSFileWrapper/filename
+JavaScript/data/File/fileName
+JavaScript/data/ErrorEvent/filename
+JavaScript/data/Plugin/filename
+Objective-C/instm/NSWorkspace/filenameExtension:isValidForType:
+Objective-C/instm/NSDocument/fileNameExtensionForType:saveOperation:
+Objective-C/instm/NSDocument/fileNameExtensionWasHiddenInLastRunSavePanel
+Objective-C/instm/NSDocument/fileNameFromRunningSavePanelForSaveOperation:
+Objective-C/instm/NSOpenPanel/filenames
+Objective-C/instm/NSDocumentController/fileNamesFromRunningOpenPanel
+C/func/-/fileno
+C/func/-/fileno_unlocked
+Objective-C/instm/NSDictionary/fileOwnerAccountID
+Objective-C/instm/NSDictionary/fileOwnerAccountName
+C/tdef/-/FileParam
+Objective-C/instm/NSURL/filePathURL
+Objective-C/instm/NSDictionary/filePosixPermissions
+JavaScript/data/DOMWindow/FileReader
+JavaScript/cl/-/FileReader
+Objective-C/instm/NSURL/fileReferenceURL
+JavaScript/data/Clipboard/files
+JavaScript/data/HTMLInputElement/files
+Objective-C/instm/NSDictionary/fileSize
+JavaScript/data/File/fileSize
+Objective-C/instm/NSFileManager/fileSystemAttributesAtPath:
+Objective-C/instm/NSWorkspace/fileSystemChanged
+Objective-C/instm/NSDictionary/fileSystemFileNumber
+Objective-C/instm/NSDictionary/fileSystemNumber
+Objective-C/instm/NSString/fileSystemRepresentation
+Objective-C/instm/NSFileManager/fileSystemRepresentationWithPath:
+Objective-C/instm/NSDocument/fileType
+Objective-C/instm/NSDictionary/fileType
+Objective-C/instm/NSDocument/fileTypeFromLastRunSavePanel
+Objective-C/instm/AMWorkflow/fileURL
+Objective-C/instm/NSDocument/fileURL
+Objective-C/clm/NSURL/fileURLWithPath:
+Objective-C/clm/NSURL/fileURLWithPath:isDirectory:
+Objective-C/clm/NSURL/fileURLWithPathComponents:
+Objective-C/clm/DRFile/fileWithPath:
+Objective-C/instm/NSTextAttachment/fileWrapper
+Objective-C/instm/NSAttributedString/fileWrapperFromRange:documentAttributes:error:
+Objective-C/instm/NSDocument/fileWrapperOfType:error:
+Objective-C/instm/NSDocument/fileWrapperRepresentationOfType:
+Objective-C/instm/NSFileWrapper/fileWrappers
+Objective-C/instm/NSBezierPath/fill
+JavaScript/instm/CanvasRenderingContext2D/fill
+Objective-C/instm/NSLayoutManager/fillBackgroundRectArray:count:forCharacterRange:color:
+Objective-C/instm/NSBox/fillColor
+Objective-C/instm/QTCaptureView/fillColor
+Objective-C/instm/QTMovieView/fillColor
+Objective-C/instp/CAShapeLayer/fillColor
+Objective-C/instm/CAShapeLayer/fillColor
+Objective-C/binding/QTMovieView/fillColor
+Objective-C/intfm/CAMediaTiming/fillMode
+Objective-C/intfp/CAMediaTiming/fillMode
+C/func/-/FillOutASBDForLPCM
+C/func/-/FillOutAudioTimeStampWithHostTime
+C/func/-/FillOutAudioTimeStampWithSampleAndHostTime
+C/func/-/FillOutAudioTimeStampWithSampleTime
+JavaScript/instm/CanvasRenderingContext2D/fillRect
+Objective-C/clm/NSBezierPath/fillRect:
+Objective-C/instp/CAShapeLayer/fillRule
+Objective-C/instm/CAShapeLayer/fillRule
+JavaScript/data/CanvasRenderingContext2D/fillStyle
+JavaScript/instm/CanvasRenderingContext2D/fillText
+Objective-C/instm/IKFilterUIView/filter
+Objective-C/instm/CIFilterGenerator/filter
+Objective-C/instm/CATransition/filter
+Objective-C/instp/CATransition/filter
+C/func/-/filter
+C++/tdef/IOFilterInterruptEventSource/Filter
+JavaScript/data/NodeIterator/filter
+JavaScript/data/TreeWalker/filter
+JavaScript/clconst/NodeFilter/FILTER_ACCEPT
+JavaScript/clconst/NodeFilter/FILTER_REJECT
+JavaScript/clconst/NodeFilter/FILTER_SKIP
+C++/data/IOFilterInterruptEventSource/filterAction
+Objective-C/instm/IKImageEditPanel/filterArray
+Objective-C/instp/IKImageEditPanel/filterArray
+Objective-C/clm/IKFilterBrowserPanel/filterBrowserPanelWithStyleMask:
+Objective-C/instm/IKFilterBrowserPanel/filterBrowserViewWithOptions:
+Objective-C/instm/NSArray/filteredArrayUsingPredicate:
+Objective-C/instm/NSSet/filteredSetUsingPredicate:
+Objective-C/clm/CIFilterGenerator/filterGenerator
+Objective-C/clm/CIFilterGenerator/filterGeneratorWithContentsOfURL:
+C++/clm/IOFilterInterruptEventSource/filterInterruptEventSource
+C++/instm/IOSCSIParallelInterfaceController/FilterInterruptRequest
+Objective-C/clm/ISyncFilter/filterMatchingAllFilters:
+Objective-C/clm/ISyncFilter/filterMatchingAtLeastOneFilter:
+Objective-C/instm/IKFilterBrowserPanel/filterName
+Objective-C/instm/IKFilterBrowserView/filterName
+Objective-C/clm/CIFilter/filterNamesInCategories:
+Objective-C/clm/CIFilter/filterNamesInCategory:
+Objective-C/instm/NSArrayController/filterPredicate
+Objective-C/binding/NSDictionaryController/filterPredicate
+Objective-C/binding/NSArrayController/filterPredicate
+JavaScript/data/SVGFilterElement/filterResX
+JavaScript/data/SVGFilterElement/filterResY
+Objective-C/instm/ISyncClient/filters
+Objective-C/instp/CALayer/filters
+Objective-C/instm/CALayer/filters
+JavaScript/data/SVGFilterElement/filterUnits
+Objective-C/instm/NSMutableSet/filterUsingPredicate:
+Objective-C/instm/NSMutableArray/filterUsingPredicate:
+Objective-C/clm/CIFilter/filterWithImageData:options:
+Objective-C/clm/CIFilter/filterWithImageURL:options:
+Objective-C/clm/CIFilter/filterWithName:
+Objective-C/clm/CIFilter/filterWithName:keysAndValues:
+Objective-C/instm/NSProxy/finalize
+Objective-C/instm/NSObject/finalize
+C++/instm/IOFireWireSerialBusProtocolTransport/finalize
+C++/instm/IOSCSIProtocolInterface/finalize
+C++/instm/IOService/finalize
+Objective-C/instm/NSObject/finalizeForWebScript
+Objective-C/instm/NSPrintPanel/finalWritePrintInfo
+JavaScript/instm/DOMWindow/find
+Objective-C/instm/NSWorkspace/findApplications
+C/func/-/FindCodec
+C++/instm/IOCatalogue/findDrivers
+Objective-C/clm/DRFile(VirtualLinks)/finderAliasPointingTo:inFilesystem:
+Objective-C/instm/WebFrame/findFrameNamed:
+C/func/-/FindNextAltInterface
+C++/instm/IOUSBInterface/FindNextAltInterface
+C/func/-/FindNextAssociatedDescriptor
+C++/instm/IOUSBInterface/FindNextAssociatedDescriptor
+C/func/-/FindNextComponent
+C++/instm/IOUSBDevice/FindNextInterface
+C++/instm/IOUSBDevice/FindNextInterfaceDescriptor
+C++/instm/IOUSBInterface/FindNextPipe
+C++/instm/IOPCIDevice/findPCICapability
+JavaScript/instm/WebKitCSSKeyframesRule/findRule
+Objective-C/instm/PDFDocument/findString:fromSelection:withOptions:
+Objective-C/instm/NSHelpManager/findString:inBook:
+Objective-C/instm/PDFDocument/findString:withOptions:
+C++/instm/IOSCSIParallelInterfaceController/FindTaskForAddress
+C++/instm/IOSCSIParallelInterfaceController/FindTaskForControllerIdentifier
+JavaScript/instm/WebGLRenderingContext/finish
+Objective-C/instm/IKFilterBrowserPanel/finish:
+Objective-C/instm/XGAuthenticator/finishAuthentication
+Objective-C/instm/NSKeyedUnarchiver/finishDecoding
+Objective-C/instp/NSRunningApplication/finishedLaunching
+Objective-C/intfm/WebDocumentRepresentation/finishedLoadingWithDataSource:
+Objective-C/instm/NSKeyedArchiver/finishEncoding
+Objective-C/instm/NSApplication/finishLaunching
+Objective-C/instm/ISyncSessionDriver/finishSyncing
+Objective-C/instm/ISyncSession/finishSyncing
+C/func/-/finite
+C++/data/IOFireWireAVCCommand/fIOFireWireAVCCommandExpansion
+C++/data/IOFireWireAVCUnit/fIOFireWireAVCUnitExpansion
+C++/data/IOFWAddressSpace/fIOFWAddressSpaceExpansion
+Objective-C/instm/NSTimer/fire
+Objective-C/instm/NSTimer/fireDate
+JavaScript/clconst/XPathResult/FIRST_ORDERED_NODE_TYPE
+JavaScript/data/svg/firstChild
+JavaScript/data/core/firstChild
+JavaScript/instm/TreeWalker/firstChild
+Objective-C/instp/CalRecurrenceRule/firstDayOfTheWeek
+Objective-C/instm/CalRecurrenceRule/firstDayOfTheWeek
+C/econst/-/firstDskErr
+JavaScript/data/Element/firstElementChild
+Objective-C/instm/NSIndexSet/firstIndex
+Objective-C/instm/NSPreferencePane/firstKeyView
+Objective-C/instm/SFAuthorizationPluginView/firstKeyView
+Objective-C/instm/NSParagraphStyle/firstLineHeadIndent
+Objective-C/instm/NSArray/firstObjectCommonWithArray:
+Objective-C/intfm/NSTextInput/firstRectForCharacterRange:
+Objective-C/intfm/NSTextInputClient/firstRectForCharacterRange:actualRange:
+Objective-C/instm/SFAuthorizationPluginView/firstResponder
+Objective-C/instm/NSWindow/firstResponder
+Objective-C/instm/NSLayoutManager/firstTextView
+Objective-C/instm/NSLayoutManager/firstUnlaidCharacterIndex
+Objective-C/instm/NSLayoutManager/firstUnlaidGlyphIndex
+Objective-C/intfm/ApertureExportPlugIn/firstView
+Objective-C/instm/NSBrowser/firstVisibleColumn
+Objective-C/instm/NSCalendar/firstWeekday
+Objective-C/instm/NSMutableAttributedString/fixAttachmentAttributeInRange:
+Objective-C/instm/NSMutableAttributedString/fixAttributesInRange:
+JavaScript/clconst/WebGLRenderingContext/FIXED
+Objective-C/instm/WebPreferences/fixedFontFamily
+C/tag/-/FixedPoint
+C/tag/-/FixedRect
+Objective-C/instm/NSTextStorage/fixesAttributesLazily
+C/func/-/FixExp2
+Objective-C/instm/NSMutableAttributedString/fixFontAttributeInRange:
+C/func/-/FixLog2
+C/func/-/FixMulDiv
+Objective-C/instm/NSMutableAttributedString/fixParagraphStyleAttributeInRange:
+C/func/-/FixPow
+Objective-C/instp/PSEntry/flagged
+Objective-C/instm/NSResponder/flagsChanged:
+C/func/-/flash
+Objective-C/instm/NSBezierPath/flatness
+Objective-C/instm/DRCDTextBlock/flatten
+C/econst/-/fLckdErr
+Objective-C/instm/IKImageView/flipImageHorizontal:
+Objective-C/instm/IKImageView/flipImageVertical:
+JavaScript/instm/SVGMatrix/flipX
+JavaScript/instm/SVGMatrix/flipY
+C/func/-/flistxattr
+C/func/-/float
+JavaScript/clconst/WebGLRenderingContext/FLOAT
+JavaScript/clconst/WebGLRenderingContext/FLOAT_MAT2
+JavaScript/clconst/WebGLRenderingContext/FLOAT_MAT3
+JavaScript/clconst/WebGLRenderingContext/FLOAT_MAT4
+JavaScript/clconst/WebGLRenderingContext/FLOAT_VEC2
+JavaScript/clconst/WebGLRenderingContext/FLOAT_VEC3
+JavaScript/clconst/WebGLRenderingContext/FLOAT_VEC4
+JavaScript/data/DOMWindow/FloatArray
+JavaScript/cl/-/FloatArray
+Objective-C/instm/NSUserDefaults/floatForKey:
+Objective-C/instm/NSPrinter/floatForKey:inTable:
+Objective-C/instm/NSActionCell/floatValue
+Objective-C/instm/NSNumber/floatValue
+Objective-C/instm/IMAVControl/floatValue
+Objective-C/instm/NSControl/floatValue
+Objective-C/instm/NSCell/floatValue
+Objective-C/instm/NSString/floatValue
+C/func/-/flock
+C/func/-/flockfile
+C/func/-/floor
+C/func/-/floorf
+C/func/-/floorl
+C/func/-/fls
+C/func/-/flsl
+Objective-C/clm/CATransaction/flush
+C++/instm/IOBasicOutputQueue/flush
+C++/instm/IOOutputQueue/flush
+C++/instm/IOPacketQueue/flush
+JavaScript/instm/WebGLRenderingContext/flush
+C++/instm/IOAudioDevice/flushAudioControls
+Objective-C/instm/NSOpenGLContext/flushBuffer
+Objective-C/instm/NSResponder/flushBufferedKeyEvents
+Objective-C/instm/NSURLHandle/flushCachedData
+C++/instm/OSDictionary/flushCollection
+C++/instm/OSArray/flushCollection
+C++/instm/OSOrderedSet/flushCollection
+C++/instm/OSCollection/flushCollection
+C++/instm/OSSet/flushCollection
+C++/instm/IOFramebuffer/flushCursor
+Objective-C/instm/NSGraphicsContext/flushGraphics
+Objective-C/clm/NSHost/flushHostCache
+C/func/-/flushinp
+C++/instm/IONetworkInterface/flushInputQueue
+C++/instm/IOAudioControl/flushValue
+C/func/-/FlushVol
+Objective-C/instm/NSWindow/flushWindow
+Objective-C/instm/NSWindow/flushWindowIfNeeded
+C/func/-/fma
+C/func/-/fmaf
+C/func/-/fmal
+C++/data/IODMACommand/fMapper
+C++/data/IODMACommand/fMappingOptions
+C/func/-/fmax
+C/func/-/fmaxf
+C/func/-/fmaxl
+C++/data/IODMACommand/fMaxSegmentSize
+C++/data/IODMACommand/fMaxTransferSize
+C++/data/IOFWCommand/fMembers
+C++/clconst/IODMACommand/fMemory
+C/func/-/fmin
+C/func/-/fminf
+C/func/-/fminl
+C/func/-/fmod
+C/func/-/fmodf
+C/func/-/fmodl
+C/func/-/fmtcheck
+C/func/-/fmtmsg
+C/econst/-/fnfErr
+C/func/-/FNGetDirectoryForSubscription
+C/func/-/fnmatch
+C/tdef/-/FNMessage
+C/func/-/FNNotify
+C/func/-/FNNotifyAll
+C/func/-/FNNotifyByPath
+C/econst/-/fnOpnErr
+C/func/-/FNSubscribe
+C/func/-/FNSubscribeByPath
+C/tdef/-/FNSubscriptionProcPtr
+C/tdef/-/FNSubscriptionRef
+C/tdef/-/FNSubscriptionUPP
+C++/data/IODMACommand/fNumAddressBits
+C++/data/IODMACommand/fNumSegments
+C/func/-/FNUnsubscribe
+Objective-C/intfm/Fx3DAPI/focalLengthAtTime:
+JavaScript/instm/DOMWindow/focus
+JavaScript/instm/Element/focus
+JavaScript/clconst/Event/FOCUS
+JavaScript/data/HTMLDataGridRowElement/focused
+JavaScript/data/HTMLDataGridCellElement/focused
+Objective-C/instm/NSTableView/focusedColumn
+JavaScript/data/DOMSelection/focusNode
+JavaScript/data/DOMSelection/focusOffset
+Objective-C/instm/NSView/focusRingType
+Objective-C/instm/NSCell/focusRingType
+Objective-C/instm/NSGraphicsContext/focusStack
+Objective-C/clm/NSView/focusView
+Objective-C/clm/DRFolder/folderWithPath:
+C/func/-/FollowFinderAlias
+Objective-C/instm/PDFAnnotationFreeText/font
+Objective-C/instm/PDFAnnotationTextWidget/font
+Objective-C/instm/PDFAnnotationButtonWidget/font
+Objective-C/instm/PDFAnnotationChoiceWidget/font
+Objective-C/instm/NSMenuView/font
+Objective-C/instm/NSTextStorage/font
+Objective-C/instm/NSControl/font
+Objective-C/instm/NSTabView/font
+Objective-C/binding/NSButton/font
+Objective-C/binding/AMPathPopUpButton/font
+Objective-C/binding/NSComboBox/font
+Objective-C/binding/NSFormCell/font
+Objective-C/binding/NSDatePicker/font
+Objective-C/binding/NSDatePickerCell/font
+Objective-C/binding/NSBrowser/font
+Objective-C/binding/NSButtonCell/font
+Objective-C/binding/NSOutlineView/font
+Objective-C/binding/NSForm/font
+Objective-C/binding/NSComboBoxCell/font
+Objective-C/binding/NSMatrix/font
+Objective-C/binding/NSTokenField/font
+Objective-C/binding/NSTableColumn/font
+Objective-C/binding/NSTableView/font
+Objective-C/binding/NSSecureTextFieldCell/font
+Objective-C/binding/NSTextField/font
+Objective-C/binding/NSSearchField/font
+Objective-C/instm/NSText/font
+Objective-C/binding/NSTextFieldCell/font
+Objective-C/instm/NSMenu/font
+Objective-C/binding/NSSegmentedCell/font
+Objective-C/binding/NSTabView/font
+Objective-C/binding/NSSecureTextField/font
+Objective-C/binding/NSPredicateEditor/font
+Objective-C/binding/NSTokenFieldCell/font
+Objective-C/binding/NSPathControl/font
+Objective-C/binding/NSTextView/font
+Objective-C/binding/NSPopUpButton/font
+Objective-C/instm/NSCell/font
+Objective-C/binding/NSPathCell/font
+Objective-C/binding/NSPopUpButtonCell/font
+Objective-C/binding/NSSegmentedControl/font
+Objective-C/instm/CATextLayer/font
+Objective-C/instp/CATextLayer/font
+JavaScript/data/CanvasRenderingContext2D/font
+JavaScript/clconst/CSSRule/FONT_FACE_RULE
+Objective-C/instm/NSFontDescriptor/fontAttributes
+Objective-C/instm/NSAttributedString/fontAttributesInRange:
+Objective-C/binding/NSForm/fontBold
+Objective-C/binding/NSButton/fontBold
+Objective-C/binding/NSBrowser/fontBold
+Objective-C/binding/NSOutlineView/fontBold
+Objective-C/binding/AMPathPopUpButton/fontBold
+Objective-C/binding/NSComboBoxCell/fontBold
+Objective-C/binding/NSMatrix/fontBold
+Objective-C/binding/NSComboBox/fontBold
+Objective-C/binding/NSDatePicker/fontBold
+Objective-C/binding/NSFormCell/fontBold
+Objective-C/binding/NSDatePickerCell/fontBold
+Objective-C/binding/NSButtonCell/fontBold
+Objective-C/binding/NSPathCell/fontBold
+Objective-C/binding/NSTextView/fontBold
+Objective-C/binding/NSSearchField/fontBold
+Objective-C/binding/NSTokenFieldCell/fontBold
+Objective-C/binding/NSPopUpButton/fontBold
+Objective-C/binding/NSSegmentedCell/fontBold
+Objective-C/binding/NSPredicateEditor/fontBold
+Objective-C/binding/NSTableView/fontBold
+Objective-C/binding/NSTabView/fontBold
+Objective-C/binding/NSTableColumn/fontBold
+Objective-C/binding/NSSecureTextField/fontBold
+Objective-C/binding/NSTextField/fontBold
+Objective-C/binding/NSSecureTextFieldCell/fontBold
+Objective-C/binding/NSTextFieldCell/fontBold
+Objective-C/binding/NSSegmentedControl/fontBold
+Objective-C/binding/NSTokenField/fontBold
+Objective-C/binding/NSPathControl/fontBold
+Objective-C/binding/NSPopUpButtonCell/fontBold
+Objective-C/instm/PDFAnnotationChoiceWidget/fontColor
+Objective-C/instm/PDFAnnotationButtonWidget/fontColor
+Objective-C/instm/PDFAnnotationTextWidget/fontColor
+Objective-C/instm/PDFAnnotationFreeText/fontColor
+Objective-C/instm/NSFont/fontDescriptor
+Objective-C/instm/NSFontDescriptor/fontDescriptorByAddingAttributes:
+Objective-C/instm/NSFontManager/fontDescriptorsInCollection:
+Objective-C/instm/NSFontDescriptor/fontDescriptorWithFace:
+Objective-C/instm/NSFontDescriptor/fontDescriptorWithFamily:
+Objective-C/clm/NSFontDescriptor/fontDescriptorWithFontAttributes:
+Objective-C/instm/NSFontDescriptor/fontDescriptorWithMatrix:
+Objective-C/clm/NSFontDescriptor/fontDescriptorWithName:matrix:
+Objective-C/clm/NSFontDescriptor/fontDescriptorWithName:size:
+Objective-C/instm/NSFontDescriptor/fontDescriptorWithSize:
+Objective-C/instm/NSFontDescriptor/fontDescriptorWithSymbolicTraits:
+Objective-C/binding/NSComboBox/fontFamilyName
+Objective-C/binding/NSOutlineView/fontFamilyName
+Objective-C/binding/NSButtonCell/fontFamilyName
+Objective-C/binding/NSDatePicker/fontFamilyName
+Objective-C/binding/NSDatePickerCell/fontFamilyName
+Objective-C/binding/NSForm/fontFamilyName
+Objective-C/binding/NSBrowser/fontFamilyName
+Objective-C/binding/NSFormCell/fontFamilyName
+Objective-C/binding/AMPathPopUpButton/fontFamilyName
+Objective-C/binding/NSButton/fontFamilyName
+Objective-C/binding/NSComboBoxCell/fontFamilyName
+Objective-C/binding/NSMatrix/fontFamilyName
+Objective-C/binding/NSSearchField/fontFamilyName
+Objective-C/binding/NSTableView/fontFamilyName
+Objective-C/binding/NSSegmentedCell/fontFamilyName
+Objective-C/binding/NSTokenFieldCell/fontFamilyName
+Objective-C/binding/NSPopUpButtonCell/fontFamilyName
+Objective-C/binding/NSTextView/fontFamilyName
+Objective-C/binding/NSSegmentedControl/fontFamilyName
+Objective-C/binding/NSPopUpButton/fontFamilyName
+Objective-C/binding/NSTableColumn/fontFamilyName
+Objective-C/binding/NSTabView/fontFamilyName
+Objective-C/binding/NSSecureTextFieldCell/fontFamilyName
+Objective-C/binding/NSSecureTextField/fontFamilyName
+Objective-C/binding/NSTextField/fontFamilyName
+Objective-C/binding/NSPathControl/fontFamilyName
+Objective-C/binding/NSTextFieldCell/fontFamilyName
+Objective-C/binding/NSPathCell/fontFamilyName
+Objective-C/binding/NSPredicateEditor/fontFamilyName
+Objective-C/binding/NSTokenField/fontFamilyName
+Objective-C/binding/NSBrowser/fontItalic
+Objective-C/binding/AMPathPopUpButton/fontItalic
+Objective-C/binding/NSFormCell/fontItalic
+Objective-C/binding/NSButton/fontItalic
+Objective-C/binding/NSButtonCell/fontItalic
+Objective-C/binding/NSOutlineView/fontItalic
+Objective-C/binding/NSComboBoxCell/fontItalic
+Objective-C/binding/NSMatrix/fontItalic
+Objective-C/binding/NSForm/fontItalic
+Objective-C/binding/NSDatePicker/fontItalic
+Objective-C/binding/NSDatePickerCell/fontItalic
+Objective-C/binding/NSComboBox/fontItalic
+Objective-C/binding/NSPopUpButtonCell/fontItalic
+Objective-C/binding/NSPredicateEditor/fontItalic
+Objective-C/binding/NSSearchField/fontItalic
+Objective-C/binding/NSSecureTextFieldCell/fontItalic
+Objective-C/binding/NSSecureTextField/fontItalic
+Objective-C/binding/NSPopUpButton/fontItalic
+Objective-C/binding/NSTableView/fontItalic
+Objective-C/binding/NSSegmentedCell/fontItalic
+Objective-C/binding/NSPathCell/fontItalic
+Objective-C/binding/NSTokenFieldCell/fontItalic
+Objective-C/binding/NSSegmentedControl/fontItalic
+Objective-C/binding/NSTabView/fontItalic
+Objective-C/binding/NSTextView/fontItalic
+Objective-C/binding/NSPathControl/fontItalic
+Objective-C/binding/NSTokenField/fontItalic
+Objective-C/binding/NSTableColumn/fontItalic
+Objective-C/binding/NSTextField/fontItalic
+Objective-C/binding/NSTextFieldCell/fontItalic
+Objective-C/instm/NSObject/fontManager:willIncludeFont:
+Objective-C/instm/NSFontManager/fontMenu:
+Objective-C/instm/NSFont/fontName
+Objective-C/binding/NSFormCell/fontName
+Objective-C/binding/AMPathPopUpButton/fontName
+Objective-C/binding/NSOutlineView/fontName
+Objective-C/binding/NSForm/fontName
+Objective-C/binding/NSMatrix/fontName
+Objective-C/binding/NSComboBoxCell/fontName
+Objective-C/binding/NSDatePickerCell/fontName
+Objective-C/binding/NSBrowser/fontName
+Objective-C/binding/NSButtonCell/fontName
+Objective-C/binding/NSDatePicker/fontName
+Objective-C/binding/NSComboBox/fontName
+Objective-C/binding/NSButton/fontName
+Objective-C/binding/NSTextField/fontName
+Objective-C/binding/NSPathControl/fontName
+Objective-C/binding/NSTextFieldCell/fontName
+Objective-C/binding/NSPopUpButtonCell/fontName
+Objective-C/binding/NSPopUpButton/fontName
+Objective-C/binding/NSSecureTextField/fontName
+Objective-C/binding/NSSegmentedControl/fontName
+Objective-C/binding/NSSecureTextFieldCell/fontName
+Objective-C/binding/NSSearchField/fontName
+Objective-C/binding/NSTabView/fontName
+Objective-C/binding/NSTableColumn/fontName
+Objective-C/binding/NSTableView/fontName
+Objective-C/binding/NSSegmentedCell/fontName
+Objective-C/binding/NSPathCell/fontName
+Objective-C/binding/NSTokenFieldCell/fontName
+Objective-C/binding/NSTextView/fontName
+Objective-C/binding/NSTokenField/fontName
+Objective-C/binding/NSPredicateEditor/fontName
+Objective-C/instm/NSFontManager/fontNamed:hasTraits:
+Objective-C/instm/NSFontManager/fontPanel:
+Objective-C/binding/NSComboBox/fontSize
+Objective-C/binding/NSDatePicker/fontSize
+Objective-C/binding/NSDatePickerCell/fontSize
+Objective-C/binding/NSFormCell/fontSize
+Objective-C/binding/NSButton/fontSize
+Objective-C/binding/NSForm/fontSize
+Objective-C/binding/NSComboBoxCell/fontSize
+Objective-C/binding/NSBrowser/fontSize
+Objective-C/binding/NSMatrix/fontSize
+Objective-C/binding/AMPathPopUpButton/fontSize
+Objective-C/binding/NSButtonCell/fontSize
+Objective-C/binding/NSPredicateEditor/fontSize
+Objective-C/binding/NSTokenFieldCell/fontSize
+Objective-C/binding/NSTextView/fontSize
+Objective-C/binding/NSPopUpButton/fontSize
+Objective-C/binding/NSSearchField/fontSize
+Objective-C/binding/NSPathCell/fontSize
+Objective-C/binding/NSTableColumn/fontSize
+Objective-C/binding/NSTokenField/fontSize
+Objective-C/binding/NSTextField/fontSize
+Objective-C/binding/NSOutlineView/fontSize
+Objective-C/binding/NSTextFieldCell/fontSize
+Objective-C/binding/NSTableView/fontSize
+Objective-C/binding/NSPathControl/fontSize
+Objective-C/binding/NSPopUpButtonCell/fontSize
+Objective-C/binding/NSSegmentedCell/fontSize
+Objective-C/binding/NSSecureTextField/fontSize
+Objective-C/binding/NSSegmentedControl/fontSize
+Objective-C/binding/NSTabView/fontSize
+Objective-C/binding/NSSecureTextFieldCell/fontSize
+Objective-C/instm/CATextLayer/fontSize
+Objective-C/instp/CATextLayer/fontSize
+Objective-C/clm/NSFont/fontWithDescriptor:size:
+Objective-C/clm/NSFont/fontWithDescriptor:textTransform:
+Objective-C/instm/NSFontManager/fontWithFamily:traits:weight:size:
+Objective-C/clm/NSFont/fontWithName:matrix:
+Objective-C/clm/NSFont/fontWithName:size:
+C/func/-/fopen
+C/tdef/-/ForceFeedbackDeviceState
+C/tag/-/ForceFeedbackDeviceState
+C/func/-/ForceFeedbackGetVersion
+C/tdef/-/ForceFeedbackVersion
+C/tag/-/ForceFeedbackVersion
+C/econst/-/forceReadBit
+C/econst/-/forceReadMask
+JavaScript/instm/SVGSVGElement/forceRedraw
+Objective-C/instm/NSRunningApplication/forceTerminate
+C/func/-/ForEachDataBrowserItem
+Objective-C/instm/NSTextStorage/foregroundColor
+Objective-C/instm/CATextLayer/foregroundColor
+Objective-C/instp/CATextLayer/foregroundColor
+Objective-C/instm/IKImageBrowserView/foregroundLayer
+C/tdef/-/ForeignPrivParam
+Objective-C/instm/NSSpellChecker/forgetWord:
+C/func/-/fork
+C/func/-/forkpty
+C/func/-/form
+JavaScript/data/HTMLFieldSetElement/form
+JavaScript/data/HTMLObjectElement/form
+JavaScript/data/HTMLTextAreaElement/form
+JavaScript/data/HTMLProgressElement/form
+JavaScript/data/HTMLButtonElement/form
+JavaScript/data/HTMLLegendElement/form
+JavaScript/data/HTMLIsIndexElement/form
+JavaScript/data/HTMLLabelElement/form
+JavaScript/data/HTMLInputElement/form
+JavaScript/data/HTMLMeterElement/form
+JavaScript/data/HTMLOptionElement/form
+JavaScript/data/HTMLSelectElement/form
+C/func/-/form_cursor
+C/func/-/form_data
+C/func/-/form_driver
+C/func/-/form_field
+C/func/-/form_field_attributes
+C/func/-/form_field_buffer
+C/func/-/form_field_info
+C/func/-/form_field_just
+C/func/-/form_field_new
+C/func/-/form_field_opts
+C/func/-/form_field_userptr
+C/func/-/form_field_validation
+C/func/-/form_fieldtype
+C/func/-/form_hook
+C/func/-/form_new
+C/func/-/form_new_page
+C/func/-/form_opts
+C/func/-/form_opts_off
+C/func/-/form_opts_on
+C/func/-/form_page
+C/func/-/form_post
+C/func/-/form_requestname
+C/func/-/form_userptr
+C/func/-/form_win
+C/tag/-/Format
+Objective-C/instm/CIImageAccumulator/format
+Objective-C/instm/DRMSFFormatter/format
+Objective-C/instm/NSNumberFormatter/format
+JavaScript/data/SVGAltGlyphElement/format
+Objective-C/instm/QTSampleBuffer/formatDescription
+Objective-C/instm/QTCaptureConnection/formatDescription
+Objective-C/instm/QTFormatDescription/formatDescriptionAttributes
+Objective-C/instm/QTCaptureDevice/formatDescriptions
+C++/instm/IOBlockStorageDriver/formatMedia
+Objective-C/instm/FxHostCapabilities/formatsFloatRGBABitmapsAsARGB
+Objective-C/instm/ISyncClient/formatsRelationships
+Objective-C/instm/ABAddressBook/formattedAddressFromDictionary:
+Objective-C/instm/NSControl/formatter
+Objective-C/instm/NSCell/formatter
+Objective-C/instm/NSDateFormatter/formatterBehavior
+Objective-C/instm/NSNumberFormatter/formatterBehavior
+Objective-C/instm/NSRuleEditor/formattingDictionary
+Objective-C/instm/NSRuleEditor/formattingStringsFilename
+Objective-C/instm/QTFormatDescription/formatType
+Objective-C/instm/NSNumberFormatter/formatWidth
+JavaScript/data/DOMWindow/FormData
+Objective-C/instm/NSMutableCharacterSet/formIntersectionWithCharacterSet:
+JavaScript/data/HTMLButtonElement/formNoValidate
+JavaScript/data/HTMLInputElement/formNoValidate
+JavaScript/data/Document/forms
+Objective-C/instm/NSMutableCharacterSet/formUnionWithCharacterSet:
+JavaScript/instm/window/forward
+Objective-C/clm/IMAVButton/forwardButton
+Objective-C/instm/NSObject/forwardingTargetForSelector:
+Objective-C/instm/NSProxy/forwardInvocation:
+Objective-C/instm/NSUndoManager/forwardInvocation:
+Objective-C/instm/NSObject/forwardInvocation:
+Objective-C/instm/WebBackForwardList/forwardItem
+Objective-C/instm/WebBackForwardList/forwardListCount
+Objective-C/instm/WebBackForwardList/forwardListWithLimit:
+Objective-C/instm/IOBluetoothDeviceInquiry/foundDevices
+C++/data/IODMACommand/fOutSeg
+C/func/-/FPAccess
+C/func/-/FPAddAPPL
+C/func/-/FPAddComment
+C/func/-/FPAddIcon
+C/func/-/fparseln
+C/func/-/fpathconf
+C/func/-/FPByteRangeLock
+C/func/-/FPByteRangeLockExt
+C/func/-/FPCatSearch
+C/func/-/FPCatSearchExt
+C/func/-/FPChangePassword
+C/func/-/fpclassify
+C/func/-/FPCloseDir
+C/func/-/FPCloseDT
+C/func/-/FPCloseFork
+C/func/-/FPCloseVol
+C/func/-/FPCopyFile
+C/func/-/FPCreateDir
+C/func/-/FPCreateFile
+C/func/-/FPCreateID
+C/func/-/FPDelete
+C/func/-/FPDeleteID
+C/func/-/FPDisconnectOldSession
+C/func/-/FPEnumerate
+C/func/-/FPEnumerateExt
+C/func/-/FPEnumerateExt2
+C/func/-/FPExchangeFiles
+C/func/-/FPFlush
+C/func/-/FPFlushFork
+C/func/-/FPGetACL
+C/func/-/FPGetAPPL
+C/func/-/FPGetAuthMethods
+C/func/-/FPGetComment
+C/func/-/FPGetExtAttr
+C/func/-/FPGetFileDirParms
+C/func/-/FPGetForkParms
+C/func/-/FPGetIcon
+C/func/-/FPGetIconInfo
+C/func/-/FPGetSessionToken
+C/func/-/FPGetSrvrInfo
+C/func/-/FPGetSrvrMsg
+C/func/-/FPGetSrvrParms
+C/func/-/FPGetUserInfo
+C/func/-/FPGetVolParms
+C/func/-/FPListExtAttrs
+C/func/-/FPLogin
+C/func/-/FPLoginCont
+C/func/-/FPLoginExt
+C/func/-/FPLogout
+C/func/-/FPMapID
+C/func/-/FPMapName
+C/func/-/FPMoveAndRename
+C/func/-/FPOpenDir
+C/func/-/FPOpenDT
+C/func/-/FPOpenFork
+C/func/-/FPOpenVol
+C/func/-/FPRead
+C/func/-/FPReadExt
+C/func/-/FPRemoveAPPL
+C/func/-/FPRemoveComment
+C/func/-/FPRemoveExtAttr
+C/func/-/FPRename
+C/func/-/FPResolveID
+C/func/-/fprint_description
+C/func/-/fprint_objid
+C/func/-/fprint_value
+C/func/-/fprint_variable
+C/func/-/fprintf
+C/func/-/fprintf_l
+C/func/-/FPSetACL
+C/func/-/FPSetDirParms
+C/func/-/FPSetExtAttr
+C/func/-/FPSetFileDirParms
+C/func/-/FPSetFileParms
+C/func/-/FPSetForkParms
+C/func/-/FPSetVolParms
+C/func/-/FPSpotlightRPC
+C/func/-/FPSyncDir
+C/func/-/FPSyncFork
+C/tag/-/FPUnixPrivs
+C/func/-/fpurge
+C/func/-/fputc
+C/func/-/fputrune
+C/func/-/fputs
+C/func/-/fputwc
+C/func/-/fputwc_l
+C/func/-/fputws
+C/func/-/fputws_l
+C/func/-/FPWrite
+C/func/-/FPWriteExt
+C/func/-/FPZzzzz
+C/func/-/FracSinCos
+C/tdef/-/Fract
+Objective-C/intfm/NSTextInputClient/fractionOfDistanceThroughGlyphForPoint:
+Objective-C/instm/NSLayoutManager/fractionOfDistanceThroughGlyphForPoint:inTextContainer:
+Objective-C/instm/NSURL/fragment
+JavaScript/clconst/WebGLRenderingContext/FRAGMENT_SHADER
+Objective-C/instm/NSScreen/frame
+Objective-C/instm/NSWindow/frame
+Objective-C/instm/NSView/frame
+Objective-C/instm/IKImageBrowserCell/frame
+Objective-C/instp/CALayer/frame
+Objective-C/instm/CALayer/frame
+JavaScript/data/HTMLTableElement/frame
+Objective-C/instm/NSWindow/frameAutosaveName
+JavaScript/data/HTMLFrameElement/frameBorder
+JavaScript/data/HTMLIFrameElement/frameBorder
+JavaScript/clconst/WebGLRenderingContext/FRAMEBUFFER
+JavaScript/clconst/WebGLRenderingContext/FRAMEBUFFER_ATTACHMENT_OBJECT_NAME
+JavaScript/clconst/WebGLRenderingContext/FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE
+JavaScript/clconst/WebGLRenderingContext/FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE
+JavaScript/clconst/WebGLRenderingContext/FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL
+JavaScript/clconst/WebGLRenderingContext/FRAMEBUFFER_BINDING
+JavaScript/clconst/WebGLRenderingContext/FRAMEBUFFER_COMPLETE
+JavaScript/clconst/WebGLRenderingContext/FRAMEBUFFER_INCOMPLETE_ATTACHMENT
+JavaScript/clconst/WebGLRenderingContext/FRAMEBUFFER_INCOMPLETE_DIMENSIONS
+JavaScript/clconst/WebGLRenderingContext/FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT
+JavaScript/clconst/WebGLRenderingContext/FRAMEBUFFER_UNSUPPORTED
+C/tag/-/FramebufferConstants
+JavaScript/instm/WebGLRenderingContext/framebufferRenderbuffer
+JavaScript/instm/WebGLRenderingContext/framebufferTexture2D
+Objective-C/instm/NSView/frameCenterRotation
+Objective-C/intfm/FxTransition/frameCleanup
+Objective-C/intfm/FxFilter/frameCleanup
+Objective-C/intfm/FxGenerator/frameCleanup
+Objective-C/instm/WebFrame/frameElement
+JavaScript/data/DOMWindow/frameElement
+Objective-C/instm/NSCollectionView/frameForItemAtIndex:
+Objective-C/instm/QTMovie/frameImageAtTime:
+Objective-C/instm/QTMovie/frameImageAtTime:withAttributes:error:
+Objective-C/instm/NSMethodSignature/frameLength
+Objective-C/instm/WebView/frameLoadDelegate
+Objective-C/instm/WebResource/frameName
+Objective-C/instm/NSTableView/frameOfCellAtColumn:row:
+Objective-C/instm/NSBrowser/frameOfColumn:
+Objective-C/instm/NSBrowser/frameOfInsideOfColumn:
+Objective-C/instm/NSOutlineView/frameOfOutlineCellAtRow:
+Objective-C/instm/NSBrowser/frameOfRow:inColumn:
+Objective-C/instm/NSAnimation/frameRate
+Objective-C/instm/NSWindow/frameRectForContentRect:
+Objective-C/clm/NSWindow/frameRectForContentRect:styleMask:
+Objective-C/instm/NSView/frameRotation
+Objective-C/instm/DRMSF/frames
+JavaScript/data/DOMWindow/frames
+Objective-C/intfm/FxGenerator/frameSetup:hardware:software:
+Objective-C/intfm/FxFilter/frameSetup:inputInfo:hardware:software:
+Objective-C/intfm/FxTransition/frameSetup:inputInfoA:inputInfoB:timeFraction:hardware:software:
+Objective-C/clm/NSScrollView/frameSizeForContentSize:hasHorizontalScroller:hasVerticalScroller:borderType:
+Objective-C/instm/WebFrame/frameView
+C/func/-/fread
+C++/instm/IONetworkInterface/free
+C++/instm/IOEthernetInterface/free
+C++/instm/IOEthernetController/free
+C++/instm/IONetworkMedium/free
+C++/instm/IONetworkController/free
+C/func/-/free
+C++/instm/IOCatalogue/free
+C++/instm/IOBasicOutputQueue/free
+C++/instm/IOAudioEngine/free
+C++/instm/IOAudioPort/free
+C++/instm/IOAudioControl/free
+C++/instm/IOAudioDevice/free
+C++/instm/IOHIDDevice/free
+C++/instm/IONetworkData/free
+C++/instm/IOGatedOutputQueue/free
+C++/instm/IOInterruptEventSource/free
+C++/instm/IOFireWireSerialBusProtocolTransport/free
+C++/instm/IOHIDInterface/free
+C++/instm/IOKernelDebugger/free
+C++/instm/IOOutputQueue/free
+C++/instm/IOStream/free
+C++/instm/IOSCSIProtocolInterface/free
+C++/instm/IOTimerEventSource/free
+C++/instm/IORegistryEntry/free
+C++/instm/IOService/free
+C++/instm/IOWorkLoop/free
+C++/instm/IOPacketQueue/free
+C++/instm/OSDictionary/free
+C++/instm/OSArray/free
+C++/instm/OSObject/free
+C++/instm/OSBoolean/free
+C++/instm/OSNumber/free
+C++/instm/OSData/free
+C++/instm/OSCollectionIterator/free
+C++/instm/OSSymbol/free
+C++/instm/OSOrderedSet/free
+C++/instm/OSSet/free
+C++/instm/OSString/free
+C/func/-/free_fieldtype
+C/func/-/free_form
+C/func/-/freeaddrinfo
+C++/instm/IOATADevice/freeCommand
+C++/instm/ATADeviceNub/freeCommand
+C/func/-/freeFileSource
+C/func/-/freehostent
+C++/instm/IOFireWirePCRSpace/freeInputPlug
+C/func/-/freelocale
+C++/instm/IOFireWirePCRSpace/freeOutputPlug
+C++/instm/IONetworkController/freePacket
+C++/instm/IOSCSIParallelInterfaceController/FreeSCSIParallelTask
+C++/data/IODMACommand/fRefCon
+C/func/-/fremovexattr
+C/func/-/freopen
+C/func/-/frexp
+C/func/-/frexpf
+C/func/-/frexpl
+JavaScript/data/MouseEvent/fromElement
+C++/clm/IORegistryEntry/fromPath
+Objective-C/instm/CABasicAnimation/fromValue
+Objective-C/instp/CABasicAnimation/fromValue
+JavaScript/clconst/WebGLRenderingContext/FRONT
+JavaScript/clconst/WebGLRenderingContext/FRONT_AND_BACK
+JavaScript/clconst/WebGLRenderingContext/FRONT_FACE
+JavaScript/instm/WebGLRenderingContext/frontFace
+C/func/-/fropen
+C/tdef/-/FSAliasFilterProcPtr
+C/tdef/-/FSAliasInfo
+C/tdef/-/FSAliasInfoBitmap
+C/func/-/FSAllocateFork
+C/tdef/-/FSAllocationFlags
+C/econst/-/fsAtMark
+C/func/-/FSCancelVolumeOperation
+C/func/-/fscanf
+C/func/-/fscanf_l
+C/tdef/-/FSCatalogBulkParam
+C/tdef/-/FSCatalogInfo
+C/tdef/-/FSCatalogInfoBitmap
+C/func/-/FSCatalogSearch
+C/func/-/FSClose
+C/func/-/FSCloseFork
+C/func/-/FSCloseIterator
+C/func/-/FSCompareFSRefs
+C/func/-/FSCopyAliasInfo
+C/func/-/FSCopyDiskIDForVolume
+C/func/-/FSCopyObjectAsync
+C/func/-/FSCopyObjectSync
+C/func/-/FSCopyURLForVolume
+C/func/-/FSCreateDirectoryUnicode
+C/func/-/FSCreateFileUnicode
+C/func/-/FSCreateFork
+C/func/-/FSCreateResFile
+C/func/-/FSCreateResourceFile
+C/func/-/FSCreateResourceFork
+C/func/-/FSCreateVolumeOperation
+C/econst/-/fsCurPerm
+C/econst/-/fsDataTooBigErr
+C/func/-/FSDeleteFork
+C/func/-/FSDeleteObject
+C/func/-/FSDisposeVolumeOperation
+C/econst/-/fsDSIntErr
+C/func/-/fseek
+C/func/-/fseeko
+C/tdef/-/FSEjectStatus
+C/func/-/FSEjectVolumeAsync
+C/func/-/FSEjectVolumeSync
+C/func/-/fsetattrlist
+C/func/-/fsetpos
+C/func/-/fsetxattr
+C/func/-/FSEventsCopyUUIDForDevice
+C/func/-/FSEventsGetCurrentEventId
+C/func/-/FSEventsGetLastEventIdForDeviceBeforeTime
+C/func/-/FSEventsPurgeEventsForDeviceUpToEventId
+C/tdef/-/FSEventStreamCallback
+C/tag/-/FSEventStreamContext
+C/func/-/FSEventStreamCopyDescription
+C/func/-/FSEventStreamCopyPathsBeingWatched
+C/func/-/FSEventStreamCreate
+C/tdef/-/FSEventStreamCreateFlags
+C/tag/-/FSEventStreamCreateFlags
+C/func/-/FSEventStreamCreateRelativeToDevice
+C/tag/-/FSEventStreamEventFlags
+C/tdef/-/FSEventStreamEventFlags
+C/tdef/-/FSEventStreamEventId
+C/func/-/FSEventStreamFlushAsync
+C/func/-/FSEventStreamFlushSync
+C/func/-/FSEventStreamGetDeviceBeingWatched
+C/func/-/FSEventStreamGetLatestEventId
+C/func/-/FSEventStreamInvalidate
+C/tdef/-/FSEventStreamRef
+C/func/-/FSEventStreamRelease
+C/func/-/FSEventStreamScheduleWithRunLoop
+C/func/-/FSEventStreamSetDispatchQueue
+C/func/-/FSEventStreamShow
+C/func/-/FSEventStreamStart
+C/func/-/FSEventStreamStop
+C/func/-/FSEventStreamUnscheduleFromRunLoop
+C/func/-/FSExchangeObjects
+C/func/-/FSFileOperationCancel
+C/tdef/-/FSFileOperationClientContext
+C/func/-/FSFileOperationCopyStatus
+C/func/-/FSFileOperationCreate
+C/func/-/FSFileOperationGetTypeID
+C/tdef/-/FSFileOperationRef
+C/func/-/FSFileOperationScheduleWithRunLoop
+C/tdef/-/FSFileOperationStage
+C/tdef/-/FSFileOperationStatusProcPtr
+C/func/-/FSFileOperationUnscheduleFromRunLoop
+C/func/-/FSFlushFork
+C/func/-/FSFlushVolume
+C/func/-/FSFollowFinderAlias
+C/tdef/-/FSForkCBInfoParam
+C/tdef/-/FSForkInfo
+C/tdef/-/FSForkIOParam
+C/econst/-/fsFromLEOF
+C/econst/-/fsFromMark
+C/econst/-/fsFromStart
+C/func/-/FSGetAsyncEjectStatus
+C/func/-/FSGetAsyncMountStatus
+C/func/-/FSGetAsyncUnmountStatus
+C/func/-/FSGetCatalogInfo
+C/func/-/FSGetCatalogInfoBulk
+C/func/-/FSGetDataForkName
+C/func/-/FSGetForkCBInfo
+C/func/-/FSGetForkPosition
+C/func/-/FSGetForkSize
+C/func/-/FSGetResourceForkName
+C/func/-/FSGetVolumeInfo
+C/func/-/FSGetVolumeMountInfo
+C/func/-/FSGetVolumeMountInfoSize
+C/func/-/FSGetVolumeParms
+C/func/-/FSIsAliasFile
+C/func/-/FSIterateForks
+C/tdef/-/FSIterator
+C/tdef/-/FSIteratorFlags
+C/func/-/FSLockRange
+C/func/-/FSMakeFSRefUnicode
+C/func/-/FSMakeFSSpec
+C/func/-/FSMatchAlias
+C/func/-/FSMatchAliasBulk
+C/func/-/FSMatchAliasNoUI
+C/econst/-/fsmBadFFSNameErr
+C/econst/-/fsmBadFSDLenErr
+C/econst/-/fsmBadFSDVersionErr
+C/econst/-/fsmBusyFFSErr
+C/econst/-/fsmDuplicateFSIDErr
+C/econst/-/fsmFFSNotFoundErr
+C/econst/-/fsmNoAlternateStackErr
+C/func/-/FSMountLocalVolumeAsync
+C/func/-/FSMountLocalVolumeSync
+C/func/-/FSMountServerVolumeAsync
+C/func/-/FSMountServerVolumeSync
+C/tdef/-/FSMountStatus
+C/func/-/FSMoveObject
+C/func/-/FSMoveObjectAsync
+C/func/-/FSMoveObjectSync
+C/func/-/FSMoveObjectToTrashAsync
+C/func/-/FSMoveObjectToTrashSync
+C/econst/-/fsmUnknownFSMMessageErr
+C/func/-/FSNewAlias
+C/func/-/FSNewAliasFromPath
+C/func/-/FSNewAliasMinimal
+C/func/-/FSNewAliasMinimalUnicode
+C/func/-/FSNewAliasUnicode
+C/func/-/FSOpenFork
+C/func/-/FSOpenIterator
+C/func/-/FSOpenOrphanResFile
+C/func/-/FSOpenResFile
+C/func/-/FSOpenResourceFile
+C/func/-/FSPathCopyObjectAsync
+C/func/-/FSPathCopyObjectSync
+C/func/-/FSPathFileOperationCopyStatus
+C/tdef/-/FSPathFileOperationStatusProcPtr
+C/func/-/FSPathMakeRef
+C/func/-/FSPathMakeRefWithOptions
+C/func/-/FSPathMoveObjectAsync
+C/func/-/FSPathMoveObjectSync
+C/func/-/FSPathMoveObjectToTrashAsync
+C/func/-/FSPathMoveObjectToTrashSync
+C/func/-/FSpCatMove
+C/func/-/FSpCreate
+C/func/-/FSpCreateResFile
+C/func/-/FSpDelete
+C/func/-/FSpDirCreate
+C/tdef/-/FSPermissionInfo
+C/func/-/FSpExchangeFiles
+C/func/-/FSpGetFInfo
+C/func/-/FSpMakeFSRef
+C/func/-/FSpOpenDF
+C/func/-/FSpOpenOrphanResFile
+C/func/-/FSpOpenResFile
+C/func/-/FSpOpenRF
+C/func/-/FSpRename
+C/func/-/FSpResourceFileAlreadyOpen
+C/func/-/FSpRstFLock
+C/func/-/FSpSetFInfo
+C/func/-/FSpSetFLock
+C/tdef/-/FSRangeLockParam
+C/tdef/-/FSRangeLockParamPtr
+C/econst/-/fsRdDenyPerm
+C/econst/-/fsRdPerm
+C/econst/-/fsRdWrPerm
+C/econst/-/fsRdWrShPerm
+C/func/-/FSRead
+C/func/-/FSReadFork
+C/tdef/-/FSRef
+C/func/-/FSRefMakePath
+C/tdef/-/FSRefParam
+C/func/-/FSRenameUnicode
+C/func/-/FSResolveAlias
+C/func/-/FSResolveAliasFile
+C/func/-/FSResolveAliasFileWithMountFlags
+C/func/-/FSResolveAliasWithMountFlags
+C/func/-/FSResourceFileAlreadyOpen
+C/econst/-/fsRnErr
+C/econst/-/fsRtDirID
+C/econst/-/fsRtParID
+C/econst/-/fsSBAccessDate
+C/econst/-/fsSBAccessDateBit
+C/econst/-/fsSBAttributeModDate
+C/econst/-/fsSBAttributeModDateBit
+C/econst/-/fsSBDrBkDat
+C/econst/-/fsSBDrBkDatBit
+C/econst/-/fsSBDrCrDat
+C/econst/-/fsSBDrCrDatBit
+C/econst/-/fsSBDrFndrInfo
+C/econst/-/fsSBDrFndrInfoBit
+C/econst/-/fsSBDrMdDat
+C/econst/-/fsSBDrMdDatBit
+C/econst/-/fsSBDrNmFls
+C/econst/-/fsSBDrNmFlsBit
+C/econst/-/fsSBDrParID
+C/econst/-/fsSBDrParIDBit
+C/econst/-/fsSBDrUsrWds
+C/econst/-/fsSBDrUsrWdsBit
+C/econst/-/fsSBFlAttrib
+C/econst/-/fsSBFlAttribBit
+C/econst/-/fsSBFlBkDat
+C/econst/-/fsSBFlBkDatBit
+C/econst/-/fsSBFlCrDat
+C/econst/-/fsSBFlCrDatBit
+C/econst/-/fsSBFlFndrInfo
+C/econst/-/fsSBFlFndrInfoBit
+C/econst/-/fsSBFlLgLen
+C/econst/-/fsSBFlLgLenBit
+C/econst/-/fsSBFlMdDat
+C/econst/-/fsSBFlMdDatBit
+C/econst/-/fsSBFlParID
+C/econst/-/fsSBFlParIDBit
+C/econst/-/fsSBFlPyLen
+C/econst/-/fsSBFlPyLenBit
+C/econst/-/fsSBFlRLgLen
+C/econst/-/fsSBFlRLgLenBit
+C/econst/-/fsSBFlRPyLen
+C/econst/-/fsSBFlRPyLenBit
+C/econst/-/fsSBFlXFndrInfo
+C/econst/-/fsSBFlXFndrInfoBit
+C/econst/-/fsSBFullName
+C/econst/-/fsSBFullNameBit
+C/econst/-/fsSBNegate
+C/econst/-/fsSBNegateBit
+C/econst/-/fsSBNodeID
+C/econst/-/fsSBNodeIDBit
+C/econst/-/fsSBPartialName
+C/econst/-/fsSBPartialNameBit
+C/econst/-/fsSBPermissions
+C/econst/-/fsSBPermissionsBit
+C/tdef/-/FSSearchParams
+C/func/-/FSSetCatalogInfo
+C/func/-/FSSetForkPosition
+C/func/-/FSSetForkSize
+C/func/-/FSSetVolumeInfo
+C/tag/-/FSSpec
+C/tdef/-/FSSpec
+C/tdef/-/FSSpecArrayPtr
+C/func/-/fstat
+C/func/-/fstat64
+C/func/-/fstatfs
+C/func/-/fstatfs64
+C/func/-/fstatvfs
+C/econst/-/fsUnixPriv
+C/func/-/FSUnlockRange
+C/tdef/-/FSUnmountStatus
+C/func/-/FSUnmountVolumeAsync
+C/func/-/FSUnmountVolumeSync
+C/func/-/FSUpdateAlias
+C/tdef/-/FSVolumeEjectProcPtr
+C/tdef/-/FSVolumeEjectUPP
+C/tdef/-/FSVolumeInfo
+C/tdef/-/FSVolumeInfoBitmap
+C/tdef/-/FSVolumeInfoParam
+C/func/-/FSVolumeMount
+C/tdef/-/FSVolumeMountProcPtr
+C/tdef/-/FSVolumeMountUPP
+C/tdef/-/FSVolumeOperation
+C/tdef/-/FSVolumeRefNum
+C/tdef/-/FSVolumeUnmountProcPtr
+C/tdef/-/FSVolumeUnmountUPP
+C/econst/-/fsWrDenyPerm
+C/func/-/FSWrite
+C/func/-/FSWriteFork
+C/econst/-/fsWrPerm
+C/func/-/fsync
+C/func/-/ftell
+C/func/-/ftello
+C/func/-/ftime
+C/func/-/ftok
+C/tdef/-/ftpDataCallback
+C/tdef/-/ftpListCallback
+C/func/-/ftruncate
+C/func/-/ftrylockfile
+C/func/-/fts
+C/func/-/fts_children
+C/func/-/fts_close
+C/func/-/fts_open
+C/func/-/fts_open_b
+C/func/-/fts_read
+C/func/-/fts_set
+C/tag/-/FTSFileType
+C/func/-/ftw
+Objective-C/instm/CBIdentity/fullName
+Objective-C/instm/NSWorkspace/fullPathForApplication:
+JavaScript/clconst/WebGLRenderingContext/FUNC_ADD
+JavaScript/clconst/WebGLRenderingContext/FUNC_REVERSE_SUBTRACT
+JavaScript/clconst/WebGLRenderingContext/FUNC_SUBTRACT
+C/func/-/function
+Objective-C/instm/NSExpression/function
+JavaScript/data/ScriptProfileNode/functionName
+JavaScript/data/JavaScriptCallFrame/functionName
+Objective-C/clm/CAMediaTimingFunction/functionWithControlPoints::::
+Objective-C/clm/CAMediaTimingFunction/functionWithName:
+Objective-C/clm/CAValueFunction/functionWithName:
+C/func/-/fungetrune
+C/func/-/funlockfile
+C/func/-/funopen
+C/func/-/futimes
+C/func/-/FWAAttachFWAudioMIDIStream
+C/func/-/FWAAttachFWAudioStream
+C/func/-/FWAClose
+C/func/-/FWACountDevices
+C/func/-/FWACreateAudioStream
+C/func/-/FWACreateFWAudioDevice
+C/func/-/FWACreateFWAudioEngine
+C/func/-/FWACreateFWAudioMIDIDeviceNub
+C/func/-/FWACreateFWAudioMIDIPlug
+C/func/-/FWACreateFWAudioMIDIStream
+C/func/-/FWACreateFWAudioPlug
+C/func/-/FWACreateFWAudioStream
+C/func/-/FWACreateIsochStream
+C/func/-/FWACreateMIDIStream
+C/tdef/-/FWAddressSpaceFlags
+C/func/-/FWADisposeAudioStream
+C/func/-/FWADisposeFWAudioDevice
+C/func/-/FWADisposeFWAudioEngine
+C/func/-/FWADisposeFWAudioMIDIDeviceNub
+C/func/-/FWADisposeFWAudioMIDIPlug
+C/func/-/FWADisposeFWAudioMIDIStream
+C/func/-/FWADisposeFWAudioPlug
+C/func/-/FWADisposeFWAudioStream
+C/func/-/FWADisposeIsochStream
+C/func/-/FWADisposeMIDIStream
+C/func/-/FWAExecuteAVC
+C/func/-/FWAGetAEvntSource
+C/func/-/FWAGetClockSource
+C/func/-/FWAGetCurrentIsochStreamRefs
+C/func/-/FWAGetCycleTimeOffset
+C/func/-/FWAGetDeviceName
+C/func/-/FWAGetDeviceSampleRate
+C/func/-/FWAGetDeviceSendMode
+C/func/-/FWAGetDeviceStatus
+C/func/-/FWAGetDeviceStreamInfo
+C/func/-/FWAGetFWAudioMIDIPlugChannel
+C/func/-/FWAGetFWAudioPlugChannel
+C/func/-/FWAGetGUID
+C/func/-/FWAGetIndexedFWAudioMIDIPlug
+C/func/-/FWAGetIndexedFWAudioPlug
+C/func/-/FWAGetIsochStreamAudioSequenceCount
+C/func/-/FWAGetIsochStreamAudioType
+C/func/-/FWAGetIsochStreamChannelID
+C/func/-/FWAGetIsochStreamDirection
+C/func/-/FWAGetIsochStreamMIDISequenceCount
+C/func/-/FWAGetIsochStreamOutputSpeed
+C/func/-/FWAGetIsochStreamSampleRate
+C/func/-/FWAGetIsochStreamState
+C/func/-/FWAGetMacGUID
+C/func/-/FWAGetMaxIsochChannels
+C/func/-/FWAGetMaxSequences
+C/func/-/FWAGetMaxSpeed
+C/func/-/FWAGetNodeID
+C/func/-/FWAGetNumAudioInputPlugs
+C/func/-/FWAGetNumAudioOutputPlugs
+C/func/-/FWAGetNumMIDIInputPlugs
+C/func/-/FWAGetNumMIDIOutputPlugs
+C/func/-/FWAGetSessionRef
+C/func/-/FWAGetSupportedAudioTypes
+C/func/-/FWAGetSupportedSampleRates
+C/func/-/FWAGetVendorID
+C/func/-/FWAGetVendorName
+C/func/-/FWAInitAEvntSource
+C/func/-/FWAIsMIDICapable
+C/func/-/FWAMIDIDeviceNubAttachMIDIPlug
+C/func/-/FWAMIDIDeviceNubDetachMIDIPlug
+C/func/-/FWAOpen
+C/func/-/FWAOpenLocal
+C/func/-/FWAOpenLocalWithInterface
+C/func/-/FWAOpenWithService
+C/func/-/FWARead
+C/func/-/FWAReadBlock
+C/func/-/FWAReadMIDIData
+C/func/-/FWAReadMIDIDataAsync
+C/func/-/FWAReadQuadlet
+C/func/-/FWAReserveIsochSequences
+C/func/-/FWASetAutoLoad
+C/func/-/FWASetClockSource
+C/func/-/FWASetCycleTimeOffset
+C/func/-/FWASetDeviceStreamInfo
+C/func/-/FWASetFWAudioMIDIPlugChannel
+C/func/-/FWASetFWAudioMIDIPlugProperty
+C/func/-/FWASetFWAudioPlugChannel
+C/func/-/FWASetFWAudioPlugProperty
+C/func/-/FWASetIsochStreamAudioSequenceCount
+C/func/-/FWASetIsochStreamAudioType
+C/func/-/FWASetIsochStreamChannelID
+C/func/-/FWASetIsochStreamMIDISequenceCount
+C/func/-/FWASetIsochStreamOutputSpeed
+C/func/-/FWASetIsochStreamSampleRate
+C/func/-/FWASetNumMIDIInputPlugs
+C/func/-/FWASetNumMIDIOutputPlugs
+C/func/-/FWASetPluginPath
+C/func/-/FWAStartFWAudioDevice
+C/func/-/FWAStartIsochStream
+C/func/-/FWAStopFWAudioDevice
+C/func/-/FWAStopIsochStream
+C/func/-/FWASyncUpDevice
+C/func/-/FWAWrite
+C/func/-/FWAWriteBlock
+C/func/-/FWAWriteMIDIData
+C/func/-/FWAWriteMIDIDataAsync
+C/func/-/FWAWriteQuadlet
+C/func/-/fwide
+C/func/-/fwopen
+C/func/-/fwprintf
+C/func/-/fwprintf_l
+C/tdef/-/FWReadCallback
+C/func/-/fwrite
+C/tdef/-/FWSBP2FetchAgentWriteCallback
+C/tdef/-/FWSBP2LoginCallback
+C/tdef/-/FWSBP2LoginCompleteParams
+C/tdef/-/FWSBP2LoginCompleteParamsPtr
+C/tdef/-/FWSBP2LoginResponse
+C/tdef/-/FWSBP2LoginResponsePtr
+C/tdef/-/FWSBP2LogoutCallback
+C/tdef/-/FWSBP2LogoutCompleteParams
+C/tdef/-/FWSBP2LogoutCompleteParamsPtr
+C/tdef/-/FWSBP2ManagementCallback
+C/tdef/-/FWSBP2NotifyCallback
+C/tdef/-/FWSBP2NotifyParams
+C/tdef/-/FWSBP2NotifyParamsPtr
+C/tdef/-/FWSBP2ReconnectParams
+C/tdef/-/FWSBP2ReconnectParamsPtr
+C/tdef/-/FWSBP2StatusBlock
+C/tdef/-/FWSBP2StatusCallback
+C/tdef/-/FWSBP2VirtualRange
+C/func/-/fwscanf
+C/func/-/fwscanf_l
+C/tdef/-/FWWriteCallback
+JavaScript/data/SVGRadialGradientElement/fx
+Objective-C/intf/-/Fx3DAPI
+Objective-C/intf/-/FxBaseEffect
+Objective-C/cl/-/FxBitmap
+Objective-C/intf/-/FxCustomParameterActionAPI
+Objective-C/intf/-/FxCustomParameterViewHost
+C/tag/-/FxDepth
+C/tag/-/FxDrawingCoordinates
+C/tag/-/FxField
+C/tag/-/FxFieldOrder
+Objective-C/intf/-/FxFilter
+Objective-C/intf/-/FxGenerator
+Objective-C/cl/-/FxHostCapabilities
+Objective-C/cl/-/FxImage
+C/tag/-/FxImageColorInfo
+C/tdef/-/FxImageInfo
+C/tag/-/FxImageOrigin
+C/tag/-/FxImageType
+Objective-C/intf/-/FxLayerInfoAPI
+C/tag/-/FxModifierKeys
+Objective-C/intf/-/FxOnScreenControl
+Objective-C/intf/-/FxOnScreenControlAPI
+Objective-C/intf/-/FxOptionalParameterCreationAPI
+Objective-C/intf/-/FxOptionalParameterRetrievalAPI
+Objective-C/intf/-/FxOptionalParameterSettingAPI
+Objective-C/intf/-/FxParameterCreationAPI
+Objective-C/intf/-/FxParameterCreationAPI_v2
+C/tag/-/FxParameterFlags
+Objective-C/intf/-/FxParameterRetrievalAPI
+Objective-C/intf/-/FxParameterRetrievalAPI_v2
+Objective-C/intf/-/FxParameterSettingAPI
+Objective-C/intf/-/FxParameterSettingAPI_v2
+C/tag/-/FxPixelFormat
+Objective-C/intf/-/FxProgressAPI
+C/tag/-/FxQuality
+C/tdef/-/FxRenderInfo
+Objective-C/intf/-/FxTemporalImageAPI
+Objective-C/intf/-/FxTemporalTransitionImageAPI
+Objective-C/cl/-/FxTexture
+C/tag/-/FxTimeBase
+Objective-C/intf/-/FxTimingAPI
+Objective-C/intf/-/FxTransition
+Objective-C/tag/FxTemporalTransitionImageAPI/FxTransitionInput
+Objective-C/intf/-/FxVersioningAPI
+JavaScript/data/SVGRadialGradientElement/fy
+C/func/-/gai_strerror
+C/func/-/gamma
+C/func/-/gamma_r
+C/tdef/-/GammaFunction
+C++/instm/IOCommandPool/gatedGetCommand
+C++/instm/IOCommandPool/gatedReturnCommand
+C++/data/IOWorkLoop/gateLock
+C/func/-/gcvt
+C/func/-/GDGetScale
+C/tdef/-/GDHandle
+C/func/-/GDHasScale
+C/tdef/-/GDPtr
+C/func/-/GDSetScale
+C++/instm/IODMACommand/gen32IOVMSegments
+C++/instm/IODMACommand/gen64IOVMSegments
+Objective-C/clm/NSPasteboard/generalPasteboard
+JavaScript/clconst/WebGLRenderingContext/GENERATE_MIPMAP_HINT
+Objective-C/instm/QTTrack/generateApertureModeDimensions
+Objective-C/instm/QTMovie/generateApertureModeDimensions
+Objective-C/instm/NSGlyphGenerator/generateGlyphsForGlyphStorage:desiredNumberOfCharacters:glyphIndex:characterIndex:
+JavaScript/instm/WebGLRenderingContext/generateMipmap
+C/tdef/-/GeneratePreviewForURL
+Objective-C/instm/NSDateFormatter/generatesCalendarDates
+Objective-C/instm/NSNumberFormatter/generatesDecimalNumbers
+C/tdef/-/GenerateThumbnailForURL
+Objective-C/clm/NSColorSpace/genericCMYKColorSpace
+Objective-C/clm/NSColorSpace/genericGamma22GrayColorSpace
+Objective-C/clm/NSColorSpace/genericGrayColorSpace
+Objective-C/clm/NSColorSpace/genericRGBColorSpace
+C++/instm/IODMACommand/genIOVMSegments
+C++/instm/IOMbufMemoryCursor/genPhysicalSegments
+C++/instm/IOMemoryCursor/genPhysicalSegments
+JavaScript/data/Navigator/geolocation
+Objective-C/instp/CALayer/geometryFlipped
+JavaScript/clconst/WebGLRenderingContext/GEQUAL
+C/func/-/Gestalt
+C/econst/-/gestalt16BitAudioSupport
+C/econst/-/gestalt16BitSoundIO
+C/econst/-/gestalt32BitAddressing
+C/econst/-/gestalt32BitCapable
+C/econst/-/gestalt32BitQD
+C/econst/-/gestalt32BitQD11
+C/econst/-/gestalt32BitQD12
+C/econst/-/gestalt32BitQD13
+C/econst/-/gestalt32BitSysZone
+C/econst/-/gestalt68000
+C/econst/-/gestalt68010
+C/econst/-/gestalt68020
+C/econst/-/gestalt68030
+C/econst/-/gestalt68030MMU
+C/econst/-/gestalt68040
+C/econst/-/gestalt68040FPU
+C/econst/-/gestalt68040MMU
+C/econst/-/gestalt68851
+C/econst/-/gestalt68881
+C/econst/-/gestalt68882
+C/econst/-/gestalt68k
+C/econst/-/gestalt8BitQD
+C/econst/-/gestaltAddressingModeAttr
+C/econst/-/gestaltAdminFeaturesFlagsAttr
+C/econst/-/gestaltAliasMgrAttr
+C/econst/-/gestaltAllegroQD
+C/econst/-/gestaltAllegroQDText
+C/econst/-/gestaltAltivecRegistersSwappedCorrectlyBit
+C/econst/-/gestaltAMU
+C/econst/-/gestaltAntiAliasedTextAvailable
+C/econst/-/gestaltAppearanceAttr
+C/econst/-/gestaltAppearanceCompatMode
+C/econst/-/gestaltAppearanceExists
+C/econst/-/gestaltAppearanceVersion
+C/econst/-/gestaltAppleEventsAttr
+C/econst/-/gestaltAppleEventsPresent
+C/econst/-/gestaltAppleGuideIsDebug
+C/econst/-/gestaltAppleGuidePresent
+C/econst/-/gestaltAppleScriptAttr
+C/econst/-/gestaltAppleScriptPowerPCSupport
+C/econst/-/gestaltAppleScriptPresent
+C/econst/-/gestaltAppleScriptVersion
+C/econst/-/gestaltAppleTalkVersion
+C/econst/-/gestaltATalkVersion
+C/econst/-/gestaltATSUAscentDescentControlsFeature
+C/econst/-/gestaltATSUBatchBreakLinesFeature
+C/econst/-/gestaltATSUBiDiCursorPositionFeature
+C/econst/-/gestaltATSUByCharacterClusterFeature
+C/econst/-/gestaltATSUDecimalTabFeature
+C/econst/-/gestaltATSUDirectAccess
+C/econst/-/gestaltATSUDropShadowStyleFeature
+C/econst/-/gestaltATSUFallbacksFeature
+C/econst/-/gestaltATSUFallbacksObjFeatures
+C/econst/-/gestaltATSUFeatures
+C/econst/-/gestaltATSUGlyphBoundsFeature
+C/econst/-/gestaltATSUHighlightColorControlFeature
+C/econst/-/gestaltATSUHighlightInactiveTextFeature
+C/econst/-/gestaltATSUIgnoreLeadingFeature
+C/econst/-/gestaltATSULayoutCacheClearFeature
+C/econst/-/gestaltATSULayoutCreateAndCopyFeature
+C/econst/-/gestaltATSULineControlFeature
+C/econst/-/gestaltATSULowLevelOrigFeatures
+C/econst/-/gestaltATSUMemoryFeature
+C/econst/-/gestaltATSUNearestCharLineBreakFeature
+C/econst/-/gestaltATSUPositionToCursorFeature
+C/econst/-/gestaltATSUStrikeThroughStyleFeature
+C/econst/-/gestaltATSUTabSupportFeature
+C/econst/-/gestaltATSUTextLocatorUsageFeature
+C/econst/-/gestaltATSUTrackingFeature
+C/econst/-/gestaltATSUUnderlineOptionsStyleFeature
+C/econst/-/gestaltATSUUpdate1
+C/econst/-/gestaltATSUUpdate2
+C/econst/-/gestaltATSUUpdate3
+C/econst/-/gestaltATSUUpdate4
+C/econst/-/gestaltATSUUpdate5
+C/econst/-/gestaltATSUUpdate6
+C/econst/-/gestaltATSUUpdate7
+C/econst/-/gestaltATSUVersion
+C/econst/-/gestaltAUXVersion
+C/econst/-/gestaltBuiltInSoundInput
+C/econst/-/gestaltCanStartDragInFloatWindow
+C/econst/-/gestaltCanUseCGTextRendering
+C/econst/-/gestaltCollectionMgrVersion
+C/econst/-/gestaltColorMatchingAttr
+C/econst/-/gestaltColorMatchingLibLoaded
+C/econst/-/gestaltColorMatchingVersion
+C/econst/-/gestaltColorSync10
+C/econst/-/gestaltColorSync104
+C/econst/-/gestaltColorSync105
+C/econst/-/gestaltColorSync11
+C/econst/-/gestaltColorSync20
+C/econst/-/gestaltColorSync21
+C/econst/-/gestaltColorSync211
+C/econst/-/gestaltColorSync212
+C/econst/-/gestaltColorSync213
+C/econst/-/gestaltColorSync25
+C/econst/-/gestaltColorSync26
+C/econst/-/gestaltColorSync261
+C/econst/-/gestaltColorSync30
+C/econst/-/gestaltComponentMgr
+C/econst/-/gestaltCompressionMgr
+C/econst/-/gestaltConnMgrAttr
+C/econst/-/gestaltConnMgrCMSearchFix
+C/econst/-/gestaltConnMgrErrorString
+C/econst/-/gestaltConnMgrMultiAsyncIO
+C/econst/-/gestaltConnMgrPresent
+C/econst/-/gestaltControlMgrAttr
+C/econst/-/gestaltControlMgrPresent
+C/econst/-/gestaltControlMgrPresentBit
+C/econst/-/gestaltControlMgrVersion
+C/econst/-/gestaltControlMsgPresentMask
+C/econst/-/gestaltControlStripVersion
+C/econst/-/gestaltCPU601
+C/econst/-/gestaltCPU603
+C/econst/-/gestaltCPU603e
+C/econst/-/gestaltCPU603ev
+C/econst/-/gestaltCPU604
+C/econst/-/gestaltCPU604e
+C/econst/-/gestaltCPU604ev
+C/econst/-/gestaltCPU68000
+C/econst/-/gestaltCPU68010
+C/econst/-/gestaltCPU68020
+C/econst/-/gestaltCPU68030
+C/econst/-/gestaltCPU68040
+C/econst/-/gestaltCPU750
+C/econst/-/gestaltCPUG4
+C/econst/-/gestaltCPUG47450
+C/econst/-/gestaltCreatesAliasFontRsrc
+C/econst/-/gestaltCTBVersion
+C/econst/-/gestaltCurrentGraphicsVersion
+C/econst/-/gestaltDesktopSpeechRecognition
+C/econst/-/gestaltDialogMgrAttr
+C/econst/-/gestaltDialogMgrHasAquaAlertBit
+C/econst/-/gestaltDialogMgrHasAquaAlertMask
+C/econst/-/gestaltDialogMgrPresent
+C/econst/-/gestaltDialogMgrPresentBit
+C/econst/-/gestaltDialogMgrPresentMask
+C/econst/-/gestaltDialogMsgPresentMask
+C/econst/-/gestaltDiskCacheSize
+C/econst/-/gestaltDisplayMgrAttr
+C/econst/-/gestaltDisplayMgrCanConfirm
+C/econst/-/gestaltDisplayMgrCanSwitchMirrored
+C/econst/-/gestaltDisplayMgrColorSyncAware
+C/econst/-/gestaltDisplayMgrGeneratesProfiles
+C/econst/-/gestaltDisplayMgrPresent
+C/econst/-/gestaltDisplayMgrSetDepthNotifies
+C/econst/-/gestaltDisplayMgrSleepNotifies
+C/econst/-/gestaltDisplayMgrVers
+C/econst/-/gestaltDITLExtAttr
+C/econst/-/gestaltDITLExtPresent
+C/econst/-/gestaltDITLExtSupportsIctb
+C/econst/-/gestaltDragMgrAttr
+C/econst/-/gestaltDragMgrFloatingWind
+C/econst/-/gestaltDragMgrHasImageSupport
+C/econst/-/gestaltDragMgrPresent
+C/econst/-/gestaltDTMgrSupportsFSM
+C/econst/-/gestaltDupSelectorErr
+C/econst/-/gestaltEMMU1
+C/econst/-/gestaltExtendedTimeMgr
+C/econst/-/gestaltExtendedWindowAttributes
+C/econst/-/gestaltExtendedWindowAttributesBit
+C/econst/-/gestaltExtendedWindowAttributesMask
+C/econst/-/gestaltExtToolboxTable
+C/econst/-/gestaltFinderUsesSpecialOpenFoldersFile
+C/econst/-/gestaltFindFolderAttr
+C/econst/-/gestaltFindFolderPresent
+C/econst/-/gestaltFirstSlotNumber
+C/econst/-/gestaltFolderDescSupport
+C/econst/-/gestaltFolderMgrFollowsAliasesWhenResolving
+C/econst/-/gestaltFolderMgrSupportsDomains
+C/econst/-/gestaltFolderMgrSupportsExtendedCalls
+C/econst/-/gestaltFolderMgrSupportsFSCalls
+C/econst/-/gestaltFontMgrAttr
+C/econst/-/gestaltFPUType
+C/econst/-/gestaltFrontWindowMayBeHiddenBit
+C/econst/-/gestaltFrontWindowMayBeHiddenMask
+C/econst/-/gestaltFSAttr
+C/econst/-/gestaltFSIncompatibleDFA82
+C/econst/-/gestaltFSMDoesDynamicLoad
+C/econst/-/gestaltFSMVersion
+C/econst/-/gestaltFSNoMFSVols
+C/econst/-/gestaltFSSupports2TBVols
+C/econst/-/gestaltFSSupports4GBVols
+C/econst/-/gestaltFSSupportsExclusiveLocks
+C/econst/-/gestaltFSSupportsHardLinkDetection
+C/econst/-/gestaltFSSupportsHFSPlusVols
+C/econst/-/gestaltFSUsesPOSIXPathsForConversion
+C/econst/-/gestaltFullExtFSDispatching
+C/econst/-/gestaltFXfrMgrAttr
+C/econst/-/gestaltGraphicsVersion
+C/econst/-/gestaltHardwareAttr
+C/econst/-/gestaltHasASC
+C/econst/-/gestaltHasColor
+C/econst/-/gestaltHasDeepGWorlds
+C/econst/-/gestaltHasDirectPixMaps
+C/econst/-/gestaltHasEnhancedLtalk
+C/econst/-/gestaltHasExtendedDiskInit
+C/econst/-/gestaltHasFileSystemManager
+C/econst/-/gestaltHasFloatingWindows
+C/econst/-/gestaltHasFloatingWindowsBit
+C/econst/-/gestaltHasFloatingWindowsMask
+C/econst/-/gestaltHasFSSpecCalls
+C/econst/-/gestaltHasGPIaToDCDa
+C/econst/-/gestaltHasGPIaToRTxCa
+C/econst/-/gestaltHasGPIbToDCDb
+C/econst/-/gestaltHasGrayishTextOr
+C/econst/-/gestaltHasHFSPlusAPIs
+C/econst/-/gestaltHasParityCapability
+C/econst/-/gestaltHasResourceOverrides
+C/econst/-/gestaltHasSCC
+C/econst/-/gestaltHasSCSI
+C/econst/-/gestaltHasSCSI961
+C/econst/-/gestaltHasSCSI962
+C/econst/-/gestaltHasSoftPowerOff
+C/econst/-/gestaltHasSoundInputDevice
+C/econst/-/gestaltHasUniversalROM
+C/econst/-/gestaltHasVIA1
+C/econst/-/gestaltHasVIA2
+C/econst/-/gestaltHasWindowBuffering
+C/econst/-/gestaltHasWindowBufferingBit
+C/econst/-/gestaltHasWindowBufferingMask
+C/econst/-/gestaltHasWindowShadowsBit
+C/econst/-/gestaltHasWindowShadowsMask
+C/econst/-/gestaltHelpMgrAttr
+C/econst/-/gestaltHelpMgrExtensions
+C/econst/-/gestaltHelpMgrPresent
+C/econst/-/gestaltHidePortA
+C/econst/-/gestaltHidePortB
+C/econst/-/gestaltHighLevelMatching
+C/econst/-/gestaltIconUtilitiesAttr
+C/econst/-/gestaltIconUtilitiesHas32BitIcons
+C/econst/-/gestaltIconUtilitiesHas48PixelIcons
+C/econst/-/gestaltIconUtilitiesHas8BitDeepMasks
+C/econst/-/gestaltIconUtilitiesHasIconServices
+C/econst/-/gestaltIconUtilitiesPresent
+C/econst/-/gestaltIntel
+C/econst/-/gestaltIPCSupport
+C/econst/-/gestaltKeyboardType
+C/econst/-/gestaltLaunchCanReturn
+C/econst/-/gestaltLaunchControl
+C/econst/-/gestaltLaunchFullFileSpec
+C/econst/-/gestaltLineLevelInput
+C/econst/-/gestaltLocationErr
+C/econst/-/gestaltLogicalPageSize
+C/econst/-/gestaltLogicalRAMSize
+C/econst/-/gestaltLowMemorySize
+C/econst/-/gestaltMachineIcon
+C/econst/-/gestaltMacOSXQD
+C/econst/-/gestaltMacOSXQDText
+C/econst/-/gestaltMenuMgrAquaLayoutBit
+C/econst/-/gestaltMenuMgrAquaLayoutMask
+C/econst/-/gestaltMenuMgrAttr
+C/econst/-/gestaltMenuMgrMoreThanFiveMenusDeepBit
+C/econst/-/gestaltMenuMgrMoreThanFiveMenusDeepMask
+C/econst/-/gestaltMenuMgrMultipleItemsWithCommandIDBit
+C/econst/-/gestaltMenuMgrMultipleItemsWithCommandIDMask
+C/econst/-/gestaltMenuMgrPresent
+C/econst/-/gestaltMenuMgrPresentBit
+C/econst/-/gestaltMenuMgrPresentMask
+C/econst/-/gestaltMenuMgrRetainsIconRefBit
+C/econst/-/gestaltMenuMgrRetainsIconRefMask
+C/econst/-/gestaltMenuMgrSendsMenuBoundsToDefProcBit
+C/econst/-/gestaltMenuMgrSendsMenuBoundsToDefProcMask
+C/econst/-/gestaltMiscAttr
+C/econst/-/gestaltMixedModeAttr
+C/econst/-/gestaltMixedModeCFM68K
+C/econst/-/gestaltMixedModeCFM68KHasState
+C/econst/-/gestaltMixedModeCFM68KHasTrap
+C/econst/-/gestaltMixedModePowerPC
+C/econst/-/gestaltMixedModeVersion
+C/econst/-/gestaltMMUType
+C/econst/-/gestaltMPCallableAPIsAttr
+C/econst/-/gestaltMPDeviceManager
+C/econst/-/gestaltMPFileManager
+C/econst/-/gestaltMPTrapCalls
+C/econst/-/gestaltMultiChannels
+C/econst/-/gestaltMustUseFCBAccessors
+C/econst/-/gestaltNameRegistryVersion
+C/econst/-/gestaltNativeCPUfamily
+C/econst/-/gestaltNativeCPUtype
+C/econst/-/gestaltNativeProcessMgrBit
+C/econst/-/gestaltNativeTimeMgr
+C/econst/-/gestaltNativeType1FontSupport
+C/econst/-/gestaltNoFPU
+C/econst/-/gestaltNoMMU
+C/econst/-/gestaltNotificationMgrAttr
+C/econst/-/gestaltNotificationPresent
+C/econst/-/gestaltNuBusConnectors
+C/econst/-/gestaltNuBusPresent
+C/econst/-/gestaltOFA2available
+C/econst/-/gestaltOriginalATSUVersion
+C/econst/-/gestaltOriginalQD
+C/econst/-/gestaltOriginalQDText
+C/econst/-/gestaltOSAttr
+C/econst/-/gestaltOSLInSystem
+C/econst/-/gestaltOSTable
+C/econst/-/gestaltOutlineFonts
+C/econst/-/gestaltParityAttr
+C/econst/-/gestaltParityEnabled
+C/econst/-/gestaltPartialRsrcs
+C/econst/-/gestaltPCXAttr
+C/econst/-/gestaltPCXHas8and16BitFAT
+C/econst/-/gestaltPCXHasProDOS
+C/econst/-/gestaltPCXNewUI
+C/econst/-/gestaltPCXUseICMapping
+C/econst/-/gestaltPhysicalRAMSize
+C/econst/-/gestaltPlayAndRecord
+C/econst/-/gestaltPMgrCPUIdle
+C/econst/-/gestaltPMgrDispatchExists
+C/econst/-/gestaltPMgrExists
+C/econst/-/gestaltPMgrSCC
+C/econst/-/gestaltPMgrSound
+C/econst/-/gestaltPMgrSupportsAVPowerStateAtSleepWake
+C/econst/-/gestaltPopupAttr
+C/econst/-/gestaltPopupPresent
+C/econst/-/gestaltPortableSlotPresent
+C/econst/-/gestaltPortADisabled
+C/econst/-/gestaltPortBDisabled
+C/econst/-/gestaltPowerMgrAttr
+C/econst/-/gestaltPowerPC
+C/econst/-/gestaltPowerPCAware
+C/econst/-/gestaltPPCDragLibPresent
+C/econst/-/gestaltPPCSupportsIncoming
+C/econst/-/gestaltPPCSupportsIncomingAppleTalk
+C/econst/-/gestaltPPCSupportsIncomingTCP_IP
+C/econst/-/gestaltPPCSupportsOutGoing
+C/econst/-/gestaltPPCSupportsOutgoingAppleTalk
+C/econst/-/gestaltPPCSupportsOutgoingTCP_IP
+C/econst/-/gestaltPPCSupportsRealTime
+C/econst/-/gestaltPPCSupportsTCP_IP
+C/econst/-/gestaltPPCToolboxAttr
+C/econst/-/gestaltPPCToolboxPresent
+C/econst/-/gestaltProcessorType
+C/econst/-/gestaltQDHasLongRowBytes
+C/econst/-/gestaltQDTextFeatures
+C/econst/-/gestaltQDTextVersion
+C/econst/-/gestaltQuickdrawFeatures
+C/econst/-/gestaltQuickdrawVersion
+C/econst/-/gestaltQuickTime
+C/econst/-/gestaltQuickTimeConferencingInfo
+C/econst/-/gestaltQuickTimeVersion
+C/econst/-/gestaltRealTempMemory
+C/econst/-/gestaltRealtimeMgrAttr
+C/econst/-/gestaltRealtimeMgrPresent
+C/econst/-/gestaltResourceMgrAttr
+C/econst/-/gestaltRevisedTimeMgr
+C/econst/-/gestaltROMSize
+C/econst/-/gestaltROMVersion
+C/econst/-/gestaltSbitFontSupport
+C/econst/-/gestaltScrapMgrAttr
+C/econst/-/gestaltScrapMgrTranslationAware
+C/econst/-/gestaltScriptCount
+C/econst/-/gestaltScriptingSupport
+C/econst/-/gestaltScriptMgrVersion
+C/econst/-/gestaltScrollingThrottle
+C/econst/-/gestaltSE30SlotPresent
+C/econst/-/gestaltSerialAttr
+C/econst/-/gestaltSESlotPresent
+C/econst/-/gestaltSetDragImageUpdates
+C/econst/-/gestaltSheetsAreWindowModalBit
+C/econst/-/gestaltSheetsAreWindowModalMask
+C/econst/-/gestaltSlotAttr
+C/econst/-/gestaltSlotMgrExists
+C/econst/-/gestaltSndPlayDoubleBuffer
+C/econst/-/gestaltSoundAttr
+C/econst/-/gestaltSoundIOMgrPresent
+C/econst/-/gestaltSpecificMatchSupport
+C/econst/-/gestaltSpeechAttr
+C/econst/-/gestaltSpeechHasPPCGlue
+C/econst/-/gestaltSpeechMgrPresent
+C/econst/-/gestaltSpeechRecognitionAttr
+C/econst/-/gestaltSquareMenuBar
+C/econst/-/gestaltStandardFile58
+C/econst/-/gestaltStandardFileAttr
+C/econst/-/gestaltStandardFileHasColorIcons
+C/econst/-/gestaltStandardFileHasDynamicVolumeAllocation
+C/econst/-/gestaltStandardFileTranslationAware
+C/econst/-/gestaltStandardFileUseGenericIcons
+C/econst/-/gestaltStandardTimeMgr
+C/econst/-/gestaltStdNBPAttr
+C/econst/-/gestaltStdNBPPresent
+C/econst/-/gestaltStdNBPSupportsAutoPosition
+C/econst/-/gestaltStereoCapability
+C/econst/-/gestaltStereoInput
+C/econst/-/gestaltStereoMixing
+C/econst/-/gestaltSupportsApplicationURL
+C/econst/-/gestaltSupportsMirroring
+C/econst/-/gestaltSysArchitecture
+C/econst/-/gestaltSysDebuggerSupport
+C/econst/-/gestaltSystemVersion
+C/econst/-/gestaltSystemVersionBugFix
+C/econst/-/gestaltSystemVersionMajor
+C/econst/-/gestaltSystemVersionMinor
+C/econst/-/gestaltSysZoneGrowable
+C/econst/-/gestaltTE1
+C/econst/-/gestaltTE2
+C/econst/-/gestaltTE3
+C/econst/-/gestaltTE4
+C/econst/-/gestaltTE5
+C/econst/-/gestaltTEAttr
+C/econst/-/gestaltTEHasGetHiliteRgn
+C/econst/-/gestaltTEHasWhiteBackground
+C/econst/-/gestaltTelephoneSpeechRecognition
+C/econst/-/gestaltTempMemSupport
+C/econst/-/gestaltTempMemTracked
+C/econst/-/gestaltTermMgrAttr
+C/econst/-/gestaltTermMgrErrorString
+C/econst/-/gestaltTermMgrPresent
+C/econst/-/gestaltTESupportsInlineInput
+C/econst/-/gestaltTESupportsTextObjects
+C/econst/-/gestaltTextEditVersion
+C/econst/-/gestaltThreadMgrAttr
+C/econst/-/gestaltThreadMgrPresent
+C/econst/-/gestaltThreadsLibraryPresent
+C/econst/-/gestaltTimeMgrVersion
+C/econst/-/gestaltToolboxTable
+C/econst/-/gestaltTranslationAttr
+C/econst/-/gestaltTranslationGetPathAPIAvail
+C/econst/-/gestaltTranslationMgrExists
+C/econst/-/gestaltTranslationMgrHintOrder
+C/econst/-/gestaltTranslationPPCAvail
+C/econst/-/gestaltTSMgr15
+C/econst/-/gestaltTSMgr20
+C/econst/-/gestaltTSMgrVersion
+C/econst/-/gestaltUndefSelectorErr
+C/econst/-/gestaltUnknownErr
+C/econst/-/gestaltValueImplementedVers
+C/econst/-/gestaltVersion
+C/econst/-/gestaltVMAttr
+C/econst/-/gestaltVMFilemappingOn
+C/econst/-/gestaltVMHasLockMemoryForOutput
+C/econst/-/gestaltVMHasPagingControl
+C/econst/-/gestaltVMPresent
+C/econst/-/gestaltWindowLiveResizeBit
+C/econst/-/gestaltWindowLiveResizeMask
+C/econst/-/gestaltWindowMgrAttr
+C/econst/-/gestaltWindowMgrPresent
+C/econst/-/gestaltWindowMgrPresentBit
+C/econst/-/gestaltWindowMgrPresentMask
+C/econst/-/gestaltWindowMinimizeToDockBit
+C/econst/-/gestaltWindowMinimizeToDockMask
+C/econst/-/gestaltWSIISupport
+Objective-C/instm/SBElementArray/get
+Objective-C/instm/SBObject/get
+C/func/-/Get1IndResource
+C/func/-/Get1IndType
+C/func/-/Get1NamedResource
+C/func/-/Get1Resource
+C/func/-/get_edata
+C/func/-/get_end
+C/func/-/get_etext
+C/macro/-/GET_HEADER_ID_IS_NULL_TERMINATED_UNICODE_TEXT
+C/func/-/get_module_node
+C/func/-/get_myaddress
+C/func/-/get_session_cb
+C/func/-/get_wch
+C/func/-/get_wstr
+C++/instm/IONetworkData/getAccessTypes
+C/func/-/getacdir
+C/func/-/getacexpire
+C/func/-/getacfilesz
+C/func/-/getacflg
+C/func/-/getacmin
+C/func/-/getacna
+C/func/-/getacpol
+C++/instm/IOEventSource/getAction
+JavaScript/instm/WebGLRenderingContext/getActiveAttrib
+JavaScript/instm/WebGLRenderingContext/getActiveUniform
+C++/instm/IOATACommand/getActualTransfer
+C++/instm/IOBlockStorageDevice/getAdditionalDeviceInfoString
+Objective-C/instm/IOBluetoothDevice/getAddress
+C++/instm/IOUSBDevice/GetAddress
+Objective-C/instm/IOBluetoothHostController/getAddress:
+Objective-C/instm/IOBluetoothDevice/getAddressString
+C++/instm/IOMemoryMap/getAddressTask
+C/func/-/getaddrinfo
+Objective-C/instm/NSFont/getAdvancements:forGlyphs:count:
+Objective-C/instm/NSFont/getAdvancements:forPackedGlyphs:length:
+C++/instm/IOService/getAggressiveness
+C++/instm/IOAGPDevice/getAGPRangeAllocator
+C++/instm/IOAGPDevice/getAGPSpace
+C++/instm/IOAGPDevice/getAGPStatus
+C/func/-/GetAliasInfo
+C/func/-/GetAliasSize
+C/func/-/GetAliasSizeFromPtr
+C/func/-/GetAliasUserType
+C/func/-/GetAliasUserTypeFromPtr
+JavaScript/instm/XMLHttpRequest/getAllResponseHeaders
+JavaScript/instm/InspectorBackend/getAllStyles
+C++/instm/IOUSBInterface/GetAlternateSetting
+C++/instm/IOMbufMemoryCursor/getAndResetCoalesceCount
+C++/instm/OSSet/getAnyObject
+C++/instm/IOFramebuffer/getApertureRange
+C++/instm/IOFramebuffer/getAppleSense
+C/func/-/GetApplicationDockTileMenu
+C/func/-/GetApplicationScript
+C/func/-/GetApplicationTextEncoding
+Objective-C/instm/NSInvocation/getArgument:atIndex:
+C/func/-/GetArguments
+Objective-C/instm/NSMethodSignature/getArgumentTypeAtIndex:
+Objective-C/instm/IOBluetoothSDPDataElement/getArrayValue
+JavaScript/instm/WebGLRenderingContext/getAttribLocation
+C++/instm/IOFramebuffer/getAttribute
+JavaScript/instm/Element/getAttribute
+Objective-C/instm/IOBluetoothSDPServiceRecord/getAttributeDataElement:
+C++/instm/IOFramebuffer/getAttributeForConnection
+Objective-C/instm/IOBluetoothSDPServiceAttribute/getAttributeID
+JavaScript/instm/Element/getAttributeNode
+JavaScript/instm/Element/getAttributeNodeNS
+JavaScript/instm/Element/getAttributeNS
+C++/instm/IOMedia/getAttributes
+C/func/-/getattrlist
+C/func/-/getauclassent
+C/func/-/getauclassent_r
+C/func/-/getauclassnam
+C/func/-/getauclassnam_r
+Objective-C/instm/IOBluetoothRFCOMMAudioController/getAudioDeviceID
+Objective-C/instm/QTSampleBuffer/getAudioStreamPacketDescriptions:inRange:
+C/macro/-/GetAudioUnitParameterDisplayType
+C/func/-/getaudit
+C/func/-/getaudit_addr
+C/func/-/getauditflagsbin
+C/func/-/getauditflagschar
+C/func/-/getauevent
+C/func/-/getauevent_r
+C/func/-/getauevnam
+C/func/-/getauevnam_r
+C/func/-/getauevnonam
+C/func/-/getauevnonam_r
+C/func/-/getauevnum
+C/func/-/getauevnum_r
+C/func/-/getauid
+C++/instm/IOInterruptEventSource/getAutoDisable
+C++/instm/IOSCSIParallelInterfaceController/GetAutoSenseData
+C++/instm/IOSCSIParallelInterfaceController/GetAutoSenseDataSize
+C/func/-/getauuserent
+C/func/-/getauuserent_r
+C/func/-/getauusernam
+C/func/-/getauusernam_r
+Objective-C/instm/OBEXSession/getAvailableCommandPayloadLength:
+Objective-C/instm/OBEXSession/getAvailableCommandResponsePayloadLength:
+C++/clm/IOFireWireAVCTargetSpace/getAVCTargetSpace
+C/func/-/getAwaitingAck
+C++/instm/IOUSBController/GetBandwidthAvailable
+C++/instm/IOMedia/getBase
+JavaScript/instm/SVGLocatable/getBBox
+C/func/-/getbegx
+C/func/-/getbegy
+C/func/-/getbegyx
+C/func/-/GetBestDeviceRect
+Objective-C/intfm/FxParameterRetrievalAPI/getBitmap:layerOffsetX:layerOffsetY:requestInfo:fromParm:atTime:
+Objective-C/instm/NSBitmapImageRep/getBitmapDataPlanes:
+C/func/-/getbkgd
+C/func/-/getbkgrnd
+Objective-C/instm/IOBluetoothRFCOMMAudioController/getBluetoothDevice
+Objective-C/intfm/FxParameterRetrievalAPI/getBoolValue:fromParm:atTime:
+JavaScript/instm/Element/getBoundingClientRect
+JavaScript/instm/Range/getBoundingClientRect
+Objective-C/instm/NSFont/getBoundingRects:forGlyphs:count:
+C/func/-/getbsize
+C++/instm/IOATABusCommand/getBuffer
+C++/instm/IOATACommand/getBuffer
+C++/instm/IONetworkData/getBuffer
+Objective-C/instm/NSInputStream/getBuffer:length:
+C/func/-/GetBufferCount
+C++/instm/IOStream/getBufferCount
+C++/instm/IOStreamBuffer/getBufferID
+C/func/-/GetBufferInfo
+JavaScript/instm/WebGLRenderingContext/getBufferParameter
+C++/instm/IOStream/getBuffers
+C++/instm/IONetworkData/getBufferType
+C++/instm/IOStream/getBufferWithID
+C++/instm/IOUSBDevice/GetBus
+C/func/-/GetBusFrameNumberWithTime
+C++/instm/IOPCIDevice/getBusNumber
+C++/instm/IOUSBDevice/GetBusPowerAvailable
+C++/instm/IOService/getBusyState
+C++/instm/IOATABusCommand/getByteCount
+Objective-C/instm/NSData/getBytes:
+Objective-C/instm/NSData/getBytes:length:
+Objective-C/instm/NSString/getBytes:maxLength:usedLength:encoding:options:range:remainingRange:
+Objective-C/instm/NSData/getBytes:range:
+C++/instm/OSData/getBytesNoCopy
+C/func/-/getc
+C/func/-/getc_unlocked
+C++/instm/IOATABusCommand/getCallbackPtr
+C/func/-/getcap
+C++/instm/IOBasicOutputQueue/getCapacity
+C++/instm/IOOutputQueue/getCapacity
+C++/instm/IOPacketQueue/getCapacity
+C++/instm/OSArray/getCapacity
+C++/instm/OSData/getCapacity
+C++/instm/OSDictionary/getCapacity
+C++/instm/OSCollection/getCapacity
+C++/instm/OSOrderedSet/getCapacity
+C++/instm/OSSet/getCapacity
+C++/instm/OSArray/getCapacityIncrement
+C++/instm/OSDictionary/getCapacityIncrement
+C++/instm/OSData/getCapacityIncrement
+C++/instm/OSCollection/getCapacityIncrement
+C++/instm/OSOrderedSet/getCapacityIncrement
+C++/instm/OSSet/getCapacityIncrement
+C/func/-/getcchar
+Objective-C/instm/NSRunLoop/getCFRunLoop
+C/func/-/getch
+Objective-C/instm/IOBluetoothRFCOMMChannel/getChannelID
+C++/instm/IOAudioControl/getChannelID
+C/func/-/getchar
+C++/instm/OSString/getChar
+C/func/-/getchar_unlocked
+Objective-C/instm/NSString/getCharacters:
+Objective-C/instm/NSString/getCharacters:range:
+JavaScript/instm/SVGTextContentElement/getCharNumAtPosition
+C++/instm/IONetworkController/getChecksumDemand
+C++/instm/IONetworkController/getChecksumSupport
+C++/instm/IORegistryEntry/getChildEntry
+C++/instm/IORegistryEntry/getChildIterator
+C++/instm/IOUSBDevice/GetChildLocationID
+JavaScript/instm/InspectorBackend/getChildNodes
+C++/instm/OSMetaClass/getClassName
+Objective-C/instm/IOBluetoothDevice/getClassOfDevice
+C++/instm/OSMetaClass/getClassSize
+C++/instm/IOService/getClient
+C++/instm/IOService/getClientIterator
+JavaScript/instm/Element/getClientRects
+JavaScript/instm/Range/getClientRects
+C++/instm/IOStreamBuffer/getClientReferenceCount
+Objective-C/instm/IOBluetoothDevice/getClockOffset
+C/func/-/GetCodecInfo
+C/func/-/GetCodecNameList
+Objective-C/instm/NSGradient/getColor:location:atIndex:
+C++/instm/IOCommandPool/getCommand
+C++/instm/IOExtendedLBA/getCommand
+C++/instm/IOFireWireSBP2ORB/getCommandBufferDescriptor
+C++/instm/IONetworkController/getCommandClient
+C++/instm/IOSCSIParallelInterfaceController/GetCommandDescriptorBlock
+C++/instm/IOSCSIParallelInterfaceController/GetCommandDescriptorBlockSize
+C++/instm/IOFireWireSBP2ORB/getCommandFlags
+C++/instm/IONetworkController/getCommandGate
+C++/instm/IOAudioDevice/getCommandGate
+C++/instm/IOAudioControl/getCommandGate
+C++/instm/IOAudioEngine/getCommandGate
+C++/instm/IOSCSIProtocolInterface/GetCommandGate
+C++/instm/IOSCSIParallelInterfaceController/GetCommandGate
+C++/instm/IOFireWireSBP2ORB/getCommandGeneration
+C++/instm/IOATACommand/getCommandInUse
+C++/instm/IOFireWireSBP2ORB/getCommandTimeout
+C/func/-/GetComponentIconSuite
+C/func/-/GetComponentIndString
+C/func/-/GetComponentInfo
+C/func/-/GetComponentInstanceError
+C/func/-/GetComponentInstanceStorage
+C/func/-/GetComponentListModSeed
+C/func/-/GetComponentPublicIndString
+C/func/-/GetComponentPublicResource
+C/func/-/GetComponentPublicResourceList
+C/func/-/GetComponentRefcon
+C/func/-/GetComponentResource
+Objective-C/instm/NSColor/getComponents:
+C/func/-/GetComponentTypeModSeed
+C/func/-/GetComponentVersion
+C/func/-/GetCompressedImageSize
+C/func/-/GetCompressedPixMapInfo
+Objective-C/instm/NSBitmapImageRep/getCompression:factor:
+C/func/-/GetCompressionTime
+JavaScript/instm/DOMWindow/getComputedStyle
+JavaScript/instm/InspectorBackend/getComputedStyle
+JavaScript/instm/SVGTextContentElement/getComputedTextLength
+C++/instm/IOUSBDevice/GetConfiguration
+C++/instm/IOUSBDevice/GetConfigurationDescriptor
+C++/instm/IOUSBInterface/GetConfigValue
+C++/instm/IOFramebuffer/getConnectionCount
+Objective-C/instm/IOBluetoothDevice/getConnectionHandle
+C++/instm/IOMedia/getContent
+C++/instm/IOMedia/getContentHint
+C/func/-/getcontext
+JavaScript/instm/HTMLCanvasElement/getContext
+JavaScript/instm/WebGLRenderingContext/getContextAttributes
+C/func/-/GetContextValue
+C/func/-/GetControlBuffer
+C++/instm/IOStreamBuffer/getControlBuffer
+C/func/-/GetControlBufferLength
+C++/instm/IOAudioControl/getControlID
+C++/instm/IONetworkInterface/getController
+Objective-C/instm/CAMediaTimingFunction/getControlPointAtIndex:values:
+JavaScript/instm/InspectorBackend/getCookies
+C++/instm/OSArray/getCount
+C++/instm/OSCollection/getCount
+C++/instm/OSDictionary/getCount
+C++/instm/OSSet/getCount
+C++/instm/OSOrderedSet/getCount
+JavaScript/instm/CSSPrimitiveValue/getCounterValue
+C/func/-/GetCSequenceDataRateParams
+C/func/-/GetCSequenceFrameNumber
+C/func/-/GetCSequenceKeyFrameRate
+C/func/-/GetCSequenceMaxCompressionSize
+C/func/-/GetCSequencePrevBuffer
+JavaScript/instm/Document/getCSSCanvasContext
+Objective-C/instm/NSString/getCString:
+Objective-C/instm/NSString/getCString:maxLength:
+Objective-C/instm/NSString/getCString:maxLength:encoding:
+Objective-C/instm/NSString/getCString:maxLength:range:remainingRange:
+C++/instm/OSString/getCStringNoCopy
+JavaScript/instm/SVGLocatable/getCTM
+C++/instm/IOFramebuffer/getCurrentDisplayMode
+C++/instm/IORegistryIterator/getCurrentEntry
+C/func/-/GetCurrentProcess
+C++/instm/IOAudioEngine/getCurrentSampleFrame
+JavaScript/instm/SVGAnimationElement/getCurrentTime
+JavaScript/instm/SVGSVGElement/getCurrentTime
+C/func/-/getcurx
+C/func/-/getcury
+Objective-C/intfm/FxParameterRetrievalAPI/getCustomParameterValue:fromParm:
+C/func/-/getcwd
+Objective-C/instm/NSColor/getCyan:magenta:yellow:black:alpha:
+C++/instm/IOATACommand/getCylHi
+C++/instm/IOATACommand/getCylLo
+JavaScript/instm/Clipboard/getData
+JavaScript/instm/InspectorBackend/getDatabaseTableNames
+C/func/-/GetDataBrowserActiveItems
+C/func/-/GetDataBrowserCallbacks
+C/func/-/GetDataBrowserColumnViewDisplayType
+C/func/-/GetDataBrowserColumnViewPath
+C/func/-/GetDataBrowserColumnViewPathLength
+C/func/-/GetDataBrowserCustomCallbacks
+C/func/-/GetDataBrowserEditItem
+C/func/-/GetDataBrowserEditText
+C/func/-/GetDataBrowserHasScrollBars
+C/func/-/GetDataBrowserItemCount
+C/func/-/GetDataBrowserItemDataBooleanValue
+C/func/-/GetDataBrowserItemDataButtonValue
+C/func/-/GetDataBrowserItemDataDateTime
+C/func/-/GetDataBrowserItemDataDrawState
+C/func/-/GetDataBrowserItemDataIcon
+C/func/-/GetDataBrowserItemDataIconTransform
+C/func/-/GetDataBrowserItemDataItemID
+C/func/-/GetDataBrowserItemDataLongDateTime
+C/func/-/GetDataBrowserItemDataMaximum
+C/func/-/GetDataBrowserItemDataMenuRef
+C/func/-/GetDataBrowserItemDataMinimum
+C/func/-/GetDataBrowserItemDataProperty
+C/func/-/GetDataBrowserItemDataRGBColor
+C/func/-/GetDataBrowserItemDataText
+C/func/-/GetDataBrowserItemDataValue
+C/func/-/GetDataBrowserItemPartBounds
+C/func/-/GetDataBrowserItems
+C/func/-/GetDataBrowserItemState
+C/func/-/GetDataBrowserListViewDisclosureColumn
+C/func/-/GetDataBrowserListViewHeaderBtnHeight
+C/func/-/GetDataBrowserListViewHeaderDesc
+C/func/-/GetDataBrowserListViewUsePlainBackground
+C/func/-/GetDataBrowserPropertyFlags
+C/func/-/GetDataBrowserScrollBarInset
+C/func/-/GetDataBrowserScrollPosition
+C/func/-/GetDataBrowserSelectionAnchor
+C/func/-/GetDataBrowserSelectionFlags
+C/func/-/GetDataBrowserSortOrder
+C/func/-/GetDataBrowserSortProperty
+C/func/-/GetDataBrowserTableViewColumnCount
+C/func/-/GetDataBrowserTableViewColumnPosition
+C/func/-/GetDataBrowserTableViewColumnProperty
+C/func/-/GetDataBrowserTableViewColumnWidth
+C/func/-/GetDataBrowserTableViewGeometry
+C/func/-/GetDataBrowserTableViewHiliteStyle
+C/func/-/GetDataBrowserTableViewItemID
+C/func/-/GetDataBrowserTableViewItemRow
+C/func/-/GetDataBrowserTableViewItemRowHeight
+C/func/-/GetDataBrowserTableViewNamedColumnWidth
+C/func/-/GetDataBrowserTableViewRowHeight
+C/func/-/GetDataBrowserTarget
+C/func/-/GetDataBrowserUserState
+C/func/-/GetDataBrowserViewStyle
+C/func/-/GetDataBuffer
+C++/instm/IOStreamBuffer/getDataBuffer
+C++/instm/IOSCSIParallelInterfaceController/GetDataBuffer
+C/func/-/GetDataBufferLength
+C++/instm/IOSCSIParallelInterfaceController/GetDataBufferOffset
+Objective-C/instm/IOBluetoothSDPServiceAttribute/getDataElement
+C/func/-/GetDataHandler
+C++/instm/IOSCSIParallelInterfaceController/GetDataTransferDirection
+Objective-C/instm/IOBluetoothSDPDataElement/getDataValue
+C/func/-/getdate
+C++/instm/IOFramebuffer/getDDCBlock
+C++/instm/IORegistryEntry/getDepth
+Objective-C/instm/IOBluetoothServiceBrowserController/getDescriptionText
+Objective-C/instm/IOBluetoothPairingController/getDescriptionText
+Objective-C/instm/IOBluetoothDeviceSelectorController/getDescriptionText
+C/func/-/getDesiredDomainState
+Objective-C/instm/IOBluetoothObjectPushUIController/getDevice
+Objective-C/instm/IOBluetoothOBEXSession/getDevice
+Objective-C/instm/IOBluetoothL2CAPChannel/getDevice
+Objective-C/instm/IOBluetoothRFCOMMChannel/getDevice
+C++/instm/IOExtendedLBA/getDevice
+C++/instm/IOFireWireAVCNub/getDevice
+C++/instm/IOUSBInterface/GetDevice
+C++/instm/IOATACommand/getDevice_Head
+Objective-C/instm/IOBluetoothDevice/getDeviceClassMajor
+Objective-C/instm/IOBluetoothDevice/getDeviceClassMinor
+C++/instm/ATADeviceNub/getDeviceID
+C++/instm/IOUSBDevice/GetDeviceInformation
+C++/instm/IOService/getDeviceMemory
+C++/instm/IOService/getDeviceMemoryCount
+C++/instm/IOService/getDeviceMemoryWithIndex
+C++/instm/IOPCIDevice/getDeviceMemoryWithRegister
+C++/instm/IOPCIDevice/getDeviceNumber
+Objective-C/instm/IOBluetoothDevice/getDeviceRef
+C++/instm/IOUSBDevice/GetDeviceRelease
+Objective-C/instm/IOBluetoothDeviceSelectorController/getDeviceSelectorControllerRef
+C++/instm/IOUSBDevice/GetDeviceStatus
+Objective-C/instm/IOBluetoothHandsFreeGateway/getDeviceSupportedFeatures
+C++/instm/IOATADevice/getDeviceType
+C++/instm/IOBlockStorageDriver/getDeviceTypeName
+C++/instm/IOMemoryDescriptor/getDirection
+C++/instm/IOUSBPipe/GetDirection
+C/func/-/getdirentries
+C/func/-/getdirentriesattr
+C++/instm/IOFramebuffer/getDisplayModeCount
+C++/instm/IOFramebuffer/getDisplayModes
+Objective-C/instm/CLLocation/getDistanceFrom:
+C++/instm/IOFWPhysicalAddressSpace/getDMACommand
+C++/instm/IOSCSIParallelInterfaceController/GetDMACommand
+C++/instm/IOATADevConfig/getDMACycleTime
+C++/instm/IOATADevConfig/getDMAMode
+C++/instm/IOATABusInfo/getDMAModes
+C/func/-/getdomainname
+JavaScript/instm/InspectorBackend/getDOMStorageEntries
+C++/instm/IOBasicOutputQueue/getDropCount
+C/func/-/GetDSequenceImageBuffer
+C/func/-/GetDSequenceMatrix
+C/func/-/GetDSequenceNonScheduledDisplayDirection
+C/func/-/GetDSequenceNonScheduledDisplayTime
+C/func/-/GetDSequenceScreenBuffer
+C/func/-/getdtablesize
+C/func/-/GetEffectStatus
+C/func/-/getegid
+JavaScript/instm/Document/getElementById
+JavaScript/instm/Document/getElementsByClassName
+JavaScript/instm/Element/getElementsByClassName
+JavaScript/instm/Document/getElementsByName
+JavaScript/instm/Document/getElementsByTagName
+JavaScript/instm/Element/getElementsByTagName
+JavaScript/instm/Document/getElementsByTagNameNS
+JavaScript/instm/Element/getElementsByTagNameNS
+JavaScript/instm/SVGSVGElement/getEnclosureList
+Objective-C/instm/IOBluetoothDevice/getEncryptionMode
+C++/instm/IOATACommand/getEndErrorReg
+C++/instm/IOUSBPipe/GetEndpoint
+C++/instm/IOUSBPipe/GetEndpointDescriptor
+C++/instm/IOUSBPipe/GetEndpointNumber
+C++/instm/IOUSBInterface/GetEndpointProperties
+JavaScript/instm/SVGTextContentElement/getEndPositionOfChar
+C++/instm/IOATACommand/getEndStatusReg
+C/tdef/-/getEntitySAXFunc
+C/func/-/getenv
+C/func/-/GetEOF
+JavaScript/instm/WebGLRenderingContext/getError
+C++/instm/IOATACommand/getErrorReg
+C/func/-/geteuid
+JavaScript/instm/InspectorBackend/getEventListenersForNode
+C++/instm/IOExtendedLBA/getExtendedLBA
+JavaScript/instm/SVGTextContentElement/getExtentOfChar
+C++/instm/IONetworkInterface/getExtraFlags
+C++/instm/IOUSBDevice/GetExtraPowerAllocated
+C/func/-/getfauditflags
+C++/instm/IONetworkController/getFeatures
+C++/instm/IOExtendedLBA/getFeatures16
+C/func/-/getfh
+Objective-C/instm/NSWorkspace/getFileSystemInfoForPath:isRemovable:isWritable:isUnmountable:description:type:
+Objective-C/instm/NSString/getFileSystemRepresentation:maxLength:
+C++/instm/IOFilterInterruptEventSource/getFilterAction
+C++/instm/OSOrderedSet/getFirstObject
+Objective-C/instm/NSLayoutManager/getFirstUnlaidCharacterIndex:glyphIndex:
+C++/instm/IONetworkInterface/getFlags
+C++/instm/IONetworkMedium/getFlags
+C++/instm/IOATABusCommand/getFlags
+C++/instm/IOFWAsyncStreamListener/getFlags
+JavaScript/instm/CSSPrimitiveValue/getFloatValue
+Objective-C/intfm/FxParameterRetrievalAPI/getFloatValue:fromParm:atTime:
+C/func/-/GetForceFeedbackCapabilities
+C/func/-/GetForceFeedbackState
+C++/instm/IOBlockStorageDriver/getFormatCapacities
+C/func/-/GetFPos
+C++/instm/IORangeAllocator/getFragmentCapacity
+C++/instm/IORangeAllocator/getFragmentCount
+JavaScript/instm/WebGLRenderingContext/getFramebufferAttachmentParameter
+C++/instm/IOUSBController/GetFrameNumber
+C++/instm/IOUSBController/GetFrameNumber32
+C++/instm/IOUSBControllerV2/GetFrameNumberWithTime
+C++/instm/IORangeAllocator/getFreeCount
+C/func/-/GetFrontProcess
+C/func/-/getfsent
+C/func/-/getfsfile
+C/func/-/getfsspec
+C/func/-/getfsstat
+C/func/-/getfsstat64
+C/func/-/getfstype
+C++/instm/IOUSBDevice/GetFullConfigurationDescriptor
+C++/instm/IOPCIDevice/getFunctionNumber
+Objective-C/instm/IOBluetoothHandsFreeGateway/getGatewaySupportedFeatures
+C++/instm/IOCatalogue/getGenerationCount
+C++/clm/IORegistryEntry/getGenerationCount
+C/func/-/getgid
+Objective-C/instm/NSLayoutManager/getGlyphs:range:
+Objective-C/instm/NSATSTypesetter/getGlyphsInRange:glyphs:characterIndexes:glyphInscriptions:elasticBits:
+Objective-C/instm/NSLayoutManager/getGlyphsInRange:glyphs:characterIndexes:glyphInscriptions:elasticBits:
+Objective-C/instm/NSLayoutManager/getGlyphsInRange:glyphs:characterIndexes:glyphInscriptions:elasticBits:bidiLevels:
+Objective-C/instm/NSTypesetter/getGlyphsInRange:glyphs:characterIndexes:glyphInscriptions:elasticBits:bidiLevels:
+Objective-C/intfm/FxOptionalParameterRetrievalAPI/getGradientSamples:numSamples:depth:fromParm:atTime:
+C/func/-/GetGraphicsImporterForDataRef
+C/func/-/GetGraphicsImporterForDataRefWithFlags
+C/func/-/GetGraphicsImporterForFile
+C/func/-/GetGraphicsImporterForFileWithFlags
+C/func/-/getgrent
+C/func/-/getgrgid
+C/func/-/getgrgid_r
+C/func/-/getgrnam
+C/func/-/getgrnam_r
+C/func/-/getgrouplist
+C/func/-/getgroups
+C++/instm/IOEthernetController/getHardwareAddress
+C++/instm/IONetworkController/getHardwareAddress
+C++/instm/IOSCSIParallelInterfaceController/GetHBADataDescriptor
+C++/instm/IOSCSIParallelInterfaceController/GetHBADataPointer
+C++/instm/IOSCSIParallelInterfaceController/GetHBADataSize
+C++/instm/IOSCSIParallelInterfaceController/GetHBATargetDataPointer
+C++/instm/IOSCSIParallelInterfaceController/GetHBATargetDataSize
+C/func/-/GetHintValue
+Objective-C/intfm/FxOptionalParameterRetrievalAPI/getHistogramBlackIn:BlackOut:WhiteIn:WhiteOut:Gamma:forChannel:fromParm:atTime:
+C/func/-/gethostbyaddr
+C/func/-/gethostbyname
+C/func/-/gethostbyname2
+C/func/-/gethostent
+C/func/-/gethostid
+C/func/-/gethostname
+C/func/-/gethostuuid
+C++/instm/IOUSBHubDevice/GetHubCharacteristics
+C++/instm/IOUSBDevice/GetHubParent
+Objective-C/instm/NSColor/getHue:saturation:brightness:alpha:
+Objective-C/instm/IOBluetoothSDPServiceAttribute/getIDDataElement
+C/func/-/getifaddrs
+C++/instm/IONetworkInterface/getIfnet
+JavaScript/instm/CanvasRenderingContext2D/getImageData
+C/func/-/GetImageDescriptionCTable
+C/func/-/GetImageDescriptionExtension
+C/tdef/-/GetImageSpaceProcPtr
+Objective-C/instm/IOBluetoothL2CAPChannel/getIncomingMTU
+Objective-C/instm/IOBluetoothRFCOMMAudioController/getIncomingRFCOMMChannelID
+C++/instm/IONetworkMedium/getIndex
+C++/instm/IOConfigDirectory/getIndexEntry
+Objective-C/instm/NSIndexPath/getIndexes:
+Objective-C/instm/NSIndexSet/getIndexes:maxCount:inIndexRange:
+C++/instm/IOConfigDirectory/getIndexKey
+C++/instm/IOConfigDirectory/getIndexType
+C++/instm/IOConfigDirectory/getIndexValue
+C/tdef/-/GetIndImageProfileProcPtr
+C/func/-/GetIndResource
+C/func/-/GetIndType
+C/func/-/GetIndVoice
+Objective-C/instm/NSWorkspace/getInfoForFile:application:type:
+C++/instm/IOFramebuffer/getInformationForDisplayMode
+C++/instm/IOSCSIProtocolInterface/GetInitialPowerState
+JavaScript/instm/InspectorBackend/getInlineStyle
+Objective-C/intfm/FxTemporalImageAPI/getInputBitmap:withInfo:atTime:
+C/func/-/GetInputPort
+C++/instm/IOStream/getInputPort
+C/func/-/GetInputQueue
+C++/instm/IOStream/getInputQueue
+C++/instm/IOStream/getInputQueueMemoryDescriptor
+Objective-C/instm/NSNetService/getInputStream:outputStream:
+Objective-C/intfm/FxTemporalImageAPI/getInputTexture:withInfo:atTime:
+C++/instm/OSMetaClass/getInstanceCount
+C++/instm/IOUSBInterface/GetInterfaceClass
+C++/instm/IOUSBInterface/GetInterfaceNumber
+C++/instm/IOUSBInterface/GetInterfaceProtocol
+C++/instm/IONetworkInterface/getInterfaceState
+C++/instm/IOUSBInterface/GetInterfaceStringIndex
+C++/instm/IOUSBInterface/GetInterfaceSubClass
+C++/instm/IONetworkInterface/getInterfaceType
+C++/instm/IOService/getInterruptType
+JavaScript/instm/SVGSVGElement/getIntersectionList
+C++/instm/IOInterruptEventSource/getIntIndex
+Objective-C/intfm/FxParameterRetrievalAPI/getIntValue:fromParm:atTime:
+C/func/-/getiopolicy_np
+C/func/-/getipnodebyaddr
+C/func/-/getipnodebyname
+C++/instm/IOAudioControl/getIsStarted
+JavaScript/instm/SVGLengthList/getItem
+JavaScript/instm/SVGNumberList/getItem
+JavaScript/instm/Storage/getItem
+JavaScript/instm/SVGTransformList/getItem
+JavaScript/instm/SVGStringList/getItem
+JavaScript/instm/SVGPointList/getItem
+JavaScript/instm/SVGPathSegList/getItem
+C/func/-/getitimer
+C++/instm/IONetworkMedium/getKey
+C++/instm/IONetworkData/getKey
+C++/instm/IOConfigDirectory/getKeySubdirectories
+C++/instm/IOConfigDirectory/getKeyType
+C++/instm/IOConfigDirectory/getKeyValue
+C++/instm/OSMetaClass/getKmodName
+Objective-C/instm/IOBluetoothL2CAPChannel/getL2CAPChannelRef
+Objective-C/instm/IOBluetoothSDPServiceRecord/getL2CAPPSM:
+Objective-C/instm/IOBluetoothDevice/getLastInquiryUpdate
+C/func/-/getlastlogx
+C/func/-/getlastlogxbyname
+Objective-C/instm/IOBluetoothDevice/getLastNameUpdate
+C++/instm/OSArray/getLastObject
+C++/instm/OSOrderedSet/getLastObject
+Objective-C/instm/IOBluetoothDevice/getLastServicesUpdate
+Objective-C/intfm/FxLayerInfoAPI/getLayerGlobalOffsetX:OffsetY:atTime:
+C++/instm/IOExtendedLBA/getLBAHigh16
+C++/instm/IOExtendedLBA/getLBALow16
+C++/instm/IOExtendedLBA/getLBAMid16
+C/func/-/getlcid
+C++/instm/IOFWPhysicalAddressSpace/getLength
+C++/instm/IOMemoryDescriptor/getLength
+C++/instm/IOMemoryMap/getLength
+C++/instm/OSData/getLength
+C++/instm/OSString/getLength
+Objective-C/instm/NSBezierPath/getLineDash:count:phase:
+Objective-C/instm/NSLayoutManager/getLineFragmentInsertionPointsForCharacterAtIndex:alternatePositions:inDisplayOrder:positions:characterIndexes:
+Objective-C/instm/NSATSTypesetter/getLineFragmentRect:usedRect:forParagraphSeparatorGlyphRange:atProposedOrigin:
+Objective-C/instm/NSTypesetter/getLineFragmentRect:usedRect:forParagraphSeparatorGlyphRange:atProposedOrigin:
+Objective-C/instm/NSTypesetter/getLineFragmentRect:usedRect:remainingRect:forStartingGlyphAtIndex:proposedRect:lineSpacing:paragraphSpacingBefore:paragraphSpacingAfter:
+Objective-C/instm/NSString/getLineStart:end:contentsEnd:forRange:
+Objective-C/instm/IOBluetoothDevice/getLinkType
+C/func/-/getloadavg
+Objective-C/instm/IOBluetoothL2CAPChannel/getLocalChannelID
+C++/instm/IORegistryEntry/getLocation
+C++/instm/IOSCSIParallelInterfaceController/GetLogicalUnitNumber
+C/func/-/getlogin
+C++/instm/IOFireWireSBP2ORB/getLogin
+C++/instm/IOUSBControllerV2/GetLowLatencyOptionsAndPhysicalMask
+C++/instm/IOUSBDevice/GetManufacturerStringIndex
+C++/instm/IOMemoryMap/getMapOptions
+JavaScript/instm/DOMWindow/getMatchedCSSRules
+C++/clm/IOService/getMatchingServices
+C/func/-/GetMatrixType
+C/func/-/GetMaxCompressionSize
+Objective-C/instm/OBEXSession/getMaxPacketLength
+C++/instm/IONetworkController/getMaxPacketSize
+C++/instm/IOEthernetController/getMaxPacketSize
+C++/instm/IOUSBDevice/GetMaxPacketSize
+C++/instm/IOFireWireSBP2ORB/getMaxPayloadSize
+C++/instm/IOUSBHubDevice/GetMaxProvidedPower
+C/func/-/GetMaxResourceSize
+C++/instm/IONetworkInterface/getMaxTransferUnit
+C/func/-/getmaxx
+C/func/-/getmaxy
+C/func/-/getmaxyx
+C++/instm/IONetworkInterface/getMediaAddressLength
+C/func/-/GetMediaAdvanceDecodeTime
+C++/instm/IOBlockStorageDriver/getMediaBlockSize
+C/func/-/GetMediaCreationTime
+C/func/-/GetMediaDataHandler
+C/func/-/GetMediaDataHandlerDescription
+C/func/-/GetMediaDataSize
+C/func/-/GetMediaDataSize64
+C/func/-/GetMediaDataSizeTime64
+C/func/-/GetMediaDecodeDuration
+C/func/-/GetMediaDisplayDuration
+C/func/-/GetMediaDisplayEndTime
+C/func/-/GetMediaDisplayStartTime
+C/func/-/GetMediaDuration
+C/func/-/GetMediaHandler
+C/func/-/GetMediaHandlerDescription
+C++/instm/IONetworkInterface/getMediaHeaderLength
+C/func/-/GetMediaInputMap
+C/func/-/GetMediaLanguage
+C/func/-/GetMediaModificationTime
+C/func/-/GetMediaPreferredChunkSize
+C/func/-/GetMediaQuality
+C/func/-/GetMediaSample
+C/func/-/GetMediaSample2
+C/func/-/GetMediaSampleCount
+C/func/-/GetMediaSampleDescription
+C/func/-/GetMediaSampleDescriptionCount
+C/func/-/GetMediaSampleReference
+C/func/-/GetMediaSampleReferences
+C/func/-/GetMediaSampleReferences64
+C/func/-/GetMediaShadowSync
+C++/instm/IOBlockStorageDriver/getMediaState
+C/func/-/GetMediaSyncSampleCount
+C/func/-/GetMediaTimeScale
+C/func/-/GetMediaTrack
+C/func/-/GetMediaUserData
+C++/instm/IONetworkController/getMediumDictionary
+C++/clm/IONetworkMedium/getMediumWithIndex
+C++/clm/IONetworkMedium/getMediumWithType
+C++/instm/IODMACommand/getMemoryDescriptor
+C++/instm/IODataQueue/getMemoryDescriptor
+C++/instm/IOMemoryMap/getMemoryDescriptor
+C++/instm/IOFWPhysicalAddressSpace/getMemoryDescriptor
+C++/instm/IOSharedDataQueue/getMemoryDescriptor
+C++/instm/IOHIDDevice/getMemoryWithCurrentElementValues
+C++/instm/OSMetaClassBase/getMetaClass
+C++/clm/OSMetaClass/getMetaClassWithName
+C++/instm/IONetworkController/getMinPacketSize
+C++/instm/IOEthernetController/getMinPacketSize
+C/tdef/-/GetMissingComponentResourceProcPtr
+C/tdef/-/GetMissingComponentResourceUPP
+C/func/-/getmntinfo
+C/func/-/getmntinfo64
+C/func/-/GetMode
+C/func/-/getmode
+C/func/-/GetMode()
+JavaScript/instm/KeyboardEvent/getModifierState
+C/func/-/getmouse
+C/func/-/GetMovieDataSize
+C/func/-/GetMovieDataSize64
+C/func/-/GetMovieImporterForDataRef
+C/func/-/GetMovieIndTrack
+C/func/-/GetMovieIndTrackType
+C/func/-/GetMovieTrack
+C/func/-/GetMovieTrackCount
+Objective-C/instm/IOBluetoothRFCOMMChannel/getMTU
+C/func/-/getn_wstr
+C++/instm/IONetworkMedium/getName
+C++/instm/IORegistryEntry/getName
+JavaScript/instm/NamedNodeMap/getNamedItem
+JavaScript/instm/NamedNodeMap/getNamedItemNS
+C/func/-/GetNamedResource
+C/func/-/GetNameFromSoundBank
+C/func/-/getnameinfo
+C++/instm/IOEthernetInterface/getNamePrefix
+C++/instm/IONetworkInterface/getNamePrefix
+C/func/-/getnetbyaddr
+C/func/-/getnetbyname
+C/func/-/getnetent
+C/func/-/getnetgrent
+C++/instm/IONetworkInterface/getNetworkData
+C++/instm/IONetworkUserClient/getNetworkDataCapacity
+C++/instm/IONetworkUserClient/getNetworkDataHandle
+C++/instm/IOEventSource/getNext
+C/func/-/GetNextFOND
+C/func/-/GetNextImageDescriptionExtensionType
+C++/instm/OSArray/getNextIndexOfObject
+C++/instm/IORegistryIterator/getNextObject
+C++/instm/OSIterator/getNextObject
+C++/instm/OSCollectionIterator/getNextObject
+C++/instm/IORegistryIterator/getNextObjectFlat
+C++/instm/OSCollection/getNextObjectForIterator
+C++/instm/IORegistryIterator/getNextObjectRecursive
+C/func/-/GetNextProcess
+C/func/-/GetNextResourceFile
+C/func/-/GetNextTrackReferenceType
+C++/instm/IOFireWireDevice/getNodeFlags
+C++/instm/IONetworkData/getNotificationAction
+C++/instm/IONetworkData/getNotificationParameter
+C++/instm/IONetworkData/getNotificationTarget
+C/func/-/getnstr
+JavaScript/instm/SVGTextContentElement/getNumberOfChars
+Objective-C/instm/NSMatrix/getNumberOfRows:columns:
+Objective-C/instm/IOBluetoothSDPDataElement/getNumberValue
+C++/instm/IOUSBDevice/GetNumConfigurations
+C++/instm/IOUSBInterface/GetNumEndpoints
+C++/instm/OSArray/getObject
+C++/instm/OSDictionary/getObject
+C++/instm/OSOrderedSet/getObject
+Objective-C/instm/IOBluetoothL2CAPChannel/getObjectID
+Objective-C/instm/IOBluetoothRFCOMMChannel/getObjectID
+Objective-C/instm/NSArray/getObjects:
+Objective-C/instm/NSDictionary/getObjects:andKeys:
+Objective-C/instm/NSArray/getObjects:range:
+Objective-C/instm/NSFormatter/getObjectValue:forString:errorDescription:
+Objective-C/instm/NSDateFormatter/getObjectValue:forString:range:error:
+Objective-C/instm/NSNumberFormatter/getObjectValue:forString:range:error:
+C++/instm/IOATABusCommand/getOpcode
+C++/instm/IOService/getOpenClientIterator
+Objective-C/instm/NSObject/getOpenGLBufferContext:pixelFormat:
+C++/instm/IOService/getOpenProviderIterator
+C/func/-/getopt
+C/func/-/getopt_long
+C/func/-/getopt_long_only
+Objective-C/instm/IOBluetoothPairingController/getOptions
+Objective-C/instm/IOBluetoothServiceBrowserController/getOptions
+Objective-C/instm/IOBluetoothDeviceSelectorController/getOptions
+C++/instm/IOFireWireSBP2ORB/getORBAddress
+C++/instm/OSOrderedSet/getOrderingRef
+Objective-C/instm/IOBluetoothL2CAPChannel/getOutgoingMTU
+Objective-C/instm/IOBluetoothRFCOMMAudioController/getOutgoingRFCOMMChannelID
+C++/instm/IOBasicOutputQueue/getOutputCount
+C++/instm/IONetworkController/getOutputHandler
+C++/instm/IOOutputQueue/getOutputHandler
+C/func/-/GetOutputPort
+C++/instm/IOStream/getOutputPort
+C++/instm/IONetworkController/getOutputQueue
+C/func/-/GetOutputQueue
+C++/instm/IOStream/getOutputQueue
+C++/instm/IOStream/getOutputQueueMemoryDescriptor
+Objective-C/intfm/FxFilter/getOutputWidth:height:withInput:withInfo:
+Objective-C/intfm/FxTransition/getOutputWidth:height:withInputA:withInputB:withTimeFraction:withInfo:
+JavaScript/instm/Document/getOverrideStyle
+C++/instm/IOFWAsyncStreamListener/getOverrunCounter
+C++/instm/IONetworkController/getPacketBufferConstraints
+C++/instm/IOATADevConfig/getPacketConfig
+C++/instm/IOATABusCommand/getPacketData
+C++/instm/IONetworkController/getPacketFilters
+C++/instm/IOEthernetController/getPacketFilters
+C++/instm/IOATABusCommand/getPacketSize
+Objective-C/instm/IOBluetoothDevice/getPageScanMode
+Objective-C/instm/IOBluetoothDevice/getPageScanPeriodMode
+Objective-C/instm/IOBluetoothDevice/getPageScanRepetitionMode
+C/func/-/getpagesize
+Objective-C/instm/IOBluetoothPairingController/getPairingControllerRef
+Objective-C/instm/NSString/getParagraphStart:end:contentsEnd:forRange:
+JavaScript/instm/WebGLRenderingContext/getParameter
+JavaScript/instm/XSLTProcessor/getParameter
+C/tdef/-/getParameterEntitySAXFunc
+Objective-C/intfm/FxParameterRetrievalAPI/getParameterFlags:fromParm:
+C++/instm/IORegistryEntry/getParentEntry
+C++/instm/IORegistryEntry/getParentIterator
+C/func/-/getparx
+C/func/-/getpary
+C/func/-/getparyx
+C/func/-/getpass
+C++/instm/IORegistryEntry/getPath
+C++/instm/IORegistryEntry/getPathComponent
+JavaScript/instm/SVGPathElement/getPathSegAtLength
+C++/clm/IOFireWirePCRSpace/getPCRAddressSpace
+C/func/-/getpeereid
+C/func/-/getpeername
+C++/instm/IOAudioDevice/getPendingPowerState
+Objective-C/instm/NSButton/getPeriodicDelay:interval:
+Objective-C/instm/NSButtonCell/getPeriodicDelay:interval:
+Objective-C/instm/NSCell/getPeriodicDelay:interval:
+C/func/-/getpgid
+C/func/-/getpgrp
+C++/instm/IOMemoryMap/getPhysicalAddress
+C++/instm/IOMemoryDescriptor/getPhysicalAddress
+C++/instm/IOInterleavedMemoryDescriptor/getPhysicalSegment
+C++/instm/IOMemoryDescriptor/getPhysicalSegment
+C++/instm/IOMemoryMap/getPhysicalSegment
+C++/instm/IOMultiMemoryDescriptor/getPhysicalSegment
+C++/instm/IOLittleMemoryCursor/getPhysicalSegments
+C++/instm/IOMbufNaturalMemoryCursor/getPhysicalSegments
+C++/instm/IOMbufDBDMAMemoryCursor/getPhysicalSegments
+C++/instm/IOMbufBigMemoryCursor/getPhysicalSegments
+C++/instm/IODBDMAMemoryCursor/getPhysicalSegments
+C++/instm/IOMbufLittleMemoryCursor/getPhysicalSegments
+C++/instm/IOBigMemoryCursor/getPhysicalSegments
+C++/instm/IONaturalMemoryCursor/getPhysicalSegments
+C++/instm/IOMbufLittleMemoryCursor/getPhysicalSegmentsWithCoalesce
+C++/instm/IOMbufBigMemoryCursor/getPhysicalSegmentsWithCoalesce
+C++/instm/IOMbufDBDMAMemoryCursor/getPhysicalSegmentsWithCoalesce
+C++/instm/IOMbufNaturalMemoryCursor/getPhysicalSegmentsWithCoalesce
+C/func/-/GetPictureFileHeader
+C/func/-/getpid
+C++/instm/IOATADevConfig/getPIOCycleTime
+C++/instm/IOATADevConfig/getPIOMode
+C++/instm/IOATABusInfo/getPIOModes
+C++/instm/IOUSBInterface/GetPipeObj
+C++/instm/IOUSBPipe/GetPipeStatus
+C++/instm/IOUSBDevice/GetPipeZero
+Objective-C/instm/NSBitmapImageRep/getPixel:atX:y:
+Objective-C/instm/NSObject/getPixelBufferPixelFormat:
+C++/instm/IOFramebuffer/getPixelFormats
+C++/instm/IOFramebuffer/getPixelFormatsForDisplayMode
+C++/instm/IOFramebuffer/getPixelInformation
+C++/clm/IORegistryEntry/getPlane
+C++/clm/IOService/getPlatform
+C++/clm/IOService/getPMRootDomain
+C++/instm/IOService/getPMworkloop
+JavaScript/instm/SVGPathElement/getPointAtLength
+C++/instm/IOUSBHubDevice/GetPolicyMaker
+C++/instm/IOATABusCommand/getPosition
+C++/instm/IOAudioDevice/getPowerState
+C++/instm/IOService/getPowerState
+C/func/-/getppid
+C++/instm/IOMedia/getPreferredBlockSize
+C++/instm/IODMACommand/getPreparedOffsetAndLength
+JavaScript/instm/SVGStylable/getPresentationAttribute
+C/func/-/getPreventIdleSleepFlag
+C/func/-/getPreventSystemSleepFlag
+C/func/-/getpriority
+C/func/-/GetProcessBundleLocation
+C/func/-/GetProcessForPID
+C/func/-/GetProcessInformation
+C/func/-/GetProcessPID
+C++/instm/IOUSBDevice/GetProductID
+C++/instm/IOBlockStorageDevice/getProductString
+C++/instm/IOUSBDevice/GetProductStringIndex
+JavaScript/instm/InspectorBackend/getProfile
+JavaScript/instm/InspectorBackend/getProfileHeaders
+C/func/-/getprogname
+JavaScript/instm/WebGLRenderingContext/getProgramInfoLog
+JavaScript/instm/WebGLRenderingContext/getProgramParameter
+Objective-C/instm/IOBluetoothDeviceSelectorController/getPrompt
+Objective-C/instm/IOBluetoothPairingController/getPrompt
+Objective-C/instm/IOBluetoothServiceBrowserController/getPrompt
+C++/instm/IORegistryEntry/getProperty
+JavaScript/instm/CSSStyleDeclaration/getPropertyCSSValue
+JavaScript/instm/CSSStyleDeclaration/getPropertyPriority
+JavaScript/instm/CSSStyleDeclaration/getPropertyShorthand
+C++/instm/IORegistryEntry/getPropertyTable
+JavaScript/instm/CSSStyleDeclaration/getPropertyValue
+C/func/-/getprotobyname
+C/func/-/getprotobynumber
+C/func/-/getprotoent
+C++/instm/IOInterruptEventSource/getProvider
+C++/instm/IOSCSIParallelInterfaceController/GetProvider
+C++/instm/IOService/getProvider
+C++/instm/IOService/getProviderIterator
+Objective-C/instm/IOBluetoothL2CAPChannel/getPSM
+C/func/-/getpwent
+C/func/-/getpwnam
+C/func/-/getpwnam_r
+C/func/-/getpwuid
+C/func/-/getpwuid_r
+JavaScript/instm/DOMSelection/getRangeAt
+C/func/-/getReadyFlag
+C++/instm/IOSCSIParallelInterfaceController/GetRealizedDataTransferCount
+C++/instm/IOFWAsyncStreamListener/getReceiver
+Objective-C/instm/NSView/getRectsBeingDrawn:count:
+Objective-C/instm/NSView/getRectsExposedDuringLiveResize:count:
+JavaScript/instm/CSSPrimitiveValue/getRectValue
+Objective-C/instm/NSColor/getRed:green:blue:alpha:
+Objective-C/intfm/FxParameterRetrievalAPI/getRedValue:GreenValue:BlueValue:AlphaValue:fromParm:atTime:
+Objective-C/intfm/FxParameterRetrievalAPI/getRedValue:GreenValue:BlueValue:fromParm:atTime:
+C++/instm/IOFireWireSBP2ORB/getRefCon
+C++/instm/IOFWAsyncStreamListener/getRefCon
+C++/instm/IOFireWireSBP2ORB/getRefCon64
+C++/instm/IORegistryEntry/getRegistryEntryID
+C++/clm/IORegistryEntry/getRegistryRoot
+C++/instm/IOATABusCommand/getRegMask
+Objective-C/instm/IOBluetoothL2CAPChannel/getRemoteChannelID
+JavaScript/instm/WebGLRenderingContext/getRenderbufferParameter
+C++/instm/IOHIDDevice/getReport
+C++/instm/IOSCSIParallelInterfaceController/GetRequestedDataTransferCount
+Objective-C/clm/IOBluetoothHeadsetDevice/getRequiredSDPRFCOMMChannelIDForDevice:
+Objective-C/clm/IOBluetoothHandsFreeGateway/getRequiredSDPRFCOMMChannelIDForDevice:
+Objective-C/clm/IOBluetoothHeadsetDevice/getRequiredSDPServiceRecordForDevice:
+Objective-C/clm/IOBluetoothHandsFreeGateway/getRequiredSDPServiceRecordForDevice:
+C/func/-/GetResAttrs
+C/func/-/GetResFileAttrs
+C/func/-/GetResInfo
+C/func/-/GetResource
+JavaScript/instm/InspectorBackend/getResourceContent
+C++/instm/IOService/getResources
+C++/clm/IOService/getResourceService
+C/func/-/GetResourceSizeOnDisk
+Objective-C/instm/NSURL/getResourceValue:forKey:error:
+JavaScript/instm/XMLHttpRequest/getResponseHeader
+C++/instm/IOATACommand/getResult
+Objective-C/instm/IOBluetoothDeviceSelectorController/getResults
+Objective-C/instm/IOBluetoothPairingController/getResults
+Objective-C/instm/IOBluetoothServiceBrowserController/getResults
+C++/instm/OSMetaClassBase/getRetainCount
+C++/instm/OSObject/getRetainCount
+C++/instm/OSMetaClass/getRetainCount
+C++/instm/IOBasicOutputQueue/getRetryCount
+Objective-C/instm/NSInvocation/getReturnValue:
+C++/instm/IOBlockStorageDevice/getRevisionString
+Objective-C/instm/IOBluetoothOBEXSession/getRFCOMMChannel
+Objective-C/instm/IOBluetoothSDPServiceRecord/getRFCOMMChannelID:
+Objective-C/instm/IOBluetoothRFCOMMChannel/getRFCOMMChannelRef
+JavaScript/instm/CSSPrimitiveValue/getRGBColorValue
+C/func/-/getrlimit
+C++/instm/IOUSBController/GetRootHubConfDescriptor
+C++/instm/IOUSBController/GetRootHubDescriptor
+C++/instm/IOUSBController/GetRootHubDeviceDescriptor
+C++/instm/IOUSBController/GetRootHubPortState
+C++/instm/IOUSBController/GetRootHubPortStatus
+C++/instm/IOUSBController/GetRootHubStatus
+JavaScript/instm/SVGTextContentElement/getRotationOfChar
+Objective-C/instm/NSMatrix/getRow:column:forPoint:
+Objective-C/instm/NSBrowser/getRow:column:forPoint:
+Objective-C/instm/NSMatrix/getRow:column:ofCell:
+C/func/-/getrpcbyname
+C/func/-/getrpcbynumber
+C/func/-/getrpcent
+C/func/-/getrpcport
+C++/instm/IOAudioEngine/getRunEraseHead
+C/func/-/GetRunLoopSource
+C/func/-/getrusage
+C/func/-/gets
+C++/instm/IOAudioEngine/getSampleRate
+JavaScript/instm/SVGLocatable/getScreenCTM
+C++/instm/IOSCSIParallelInterfaceController/GetSCSIDomainIdentifier
+C++/instm/IOSCSIParallelInterfaceController/GetSCSIParallelFeatureNegotiation
+C++/instm/IOSCSIParallelInterfaceController/GetSCSIParallelFeatureNegotiationCount
+C++/instm/IOSCSIParallelInterfaceController/GetSCSIParallelFeatureNegotiationResult
+C++/instm/IOSCSIParallelInterfaceController/GetSCSIParallelFeatureNegotiationResultCount
+C++/instm/IOSCSIParallelInterfaceController/GetSCSIParallelTask
+C++/instm/IOSCSIParallelInterfaceController/GetSCSITaskIdentifier
+Objective-C/instm/IOBluetoothSDPDataElement/getSDPDataElementRef
+Objective-C/instm/IOBluetoothSDPServiceRecord/getSDPServiceRecordRef
+Objective-C/instm/IOBluetoothSDPUUID/getSDPUUIDRef
+Objective-C/instm/IOBluetoothDeviceSelectorController/getSearchAttributes
+Objective-C/instm/IOBluetoothPairingController/getSearchAttributes
+Objective-C/instm/IOBluetoothServiceBrowserController/getSearchAttributes
+C/func/-/getsectbyname
+C/func/-/getsectbynamefromheader
+C/func/-/getsectbynamefromheader_64
+C/func/-/getsectdata
+C/func/-/getsectdatafromFramework
+C/func/-/getsectdatafromheader
+C/func/-/getsectdatafromheader_64
+C++/instm/IOATACommand/getSectorCount
+C++/instm/IOExtendedLBA/getSectorCount16
+C++/instm/IOATACommand/getSectorNumber
+C/func/-/getsegbyname
+C++/instm/IOFWPhysicalAddressSpace/getSegments
+C++/instm/IONetworkController/getSelectedMedium
+JavaScript/instm/DOMWindow/getSelection
+JavaScript/instm/Document/getSelection
+C++/instm/IOUSBDevice/GetSerialNumberStringIndex
+C/func/-/getservbyname
+C/func/-/getservbyport
+C/func/-/getservent
+Objective-C/instm/IOBluetoothServiceBrowserController/getServiceBrowserControllerRef
+Objective-C/instm/IOBluetoothDevice/getServiceClassMajor
+Objective-C/instm/IOBluetoothSDPServiceRecord/getServiceName
+Objective-C/instm/IOBluetoothDevice/getServiceRecordForUUID:
+Objective-C/instm/IOBluetoothSDPServiceRecord/getServiceRecordHandle:
+C++/clm/IOService/getServiceRoot
+Objective-C/instm/IOBluetoothDevice/getServices
+C/func/-/GetSessionID
+JavaScript/instm/WebGLRenderingContext/getShaderInfoLog
+JavaScript/instm/WebGLRenderingContext/getShaderParameter
+JavaScript/instm/WebGLRenderingContext/getShaderSource
+C/func/-/getsid
+C/func/-/GetSimilarity
+JavaScript/instm/SVGAnimationElement/getSimpleDuration
+Objective-C/instm/IOBluetoothSDPDataElement/getSize
+C++/instm/IOBasicOutputQueue/getSize
+C++/instm/IOMedia/getSize
+C++/instm/IOOutputQueue/getSize
+C++/instm/IONetworkData/getSize
+C++/instm/IOPacketQueue/getSize
+Objective-C/instm/IOBluetoothSDPDataElement/getSizeDescriptor
+C++/instm/IOATABusInfo/getSocketType
+C/func/-/getsockname
+C/func/-/getsockopt
+Objective-C/intfm/FxTemporalImageAPI/getSourceBitmap:withInfo:atTime:
+Objective-C/intfm/FxTemporalImageAPI/getSourceTexture:withInfo:atTime:
+C/func/-/GetSpeechInfo
+C/func/-/GetSpeechPitch
+C/func/-/GetSpeechRate
+C++/instm/IONetworkMedium/getSpeed
+C++/instm/IOBDMedia/getSpeed
+C++/instm/IOCDMedia/getSpeed
+C++/instm/IODVDMedia/getSpeed
+C++/instm/IOUSBDevice/GetSpeed
+C++/instm/IOBasicOutputQueue/getStallCount
+JavaScript/instm/SVGTextContentElement/getStartPositionOfChar
+JavaScript/instm/SVGAnimationElement/getStartTime
+C++/instm/IOFramebuffer/getStartupDisplayMode
+C++/instm/IOAudioEngine/getState
+C++/instm/IOBasicOutputQueue/getState
+C++/instm/IOService/getState
+C++/tag/IOBasicOutputQueue/GetStateBits
+C++/instm/IOBlockStorageDriver/getStatistic
+C++/instm/IOBlockStorageDriver/getStatistics
+C++/instm/IOBasicOutputQueue/getStatisticsData
+C++/instm/IOOutputQueue/getStatisticsData
+C++/instm/IOAudioEngine/getStatus
+C++/instm/IOATACommand/getStatus
+C++/instm/IOUSBPipe/GetStatus
+JavaScript/instm/Navigator/getStorageUpdates
+C/func/-/getstr
+C++/instm/IOStream/getStreamMode
+Objective-C/clm/NSStream/getStreamsToHost:port:inputStream:outputStream:
+JavaScript/instm/WebGLRenderingContext/getString
+C++/instm/IOUSBDevice/GetStringDescriptor
+Objective-C/intfm/FxParameterRetrievalAPI_v2/getStringParameterValue:fromParm:
+Objective-C/instm/IOBluetoothSDPDataElement/getStringValue
+JavaScript/instm/CSSPrimitiveValue/getStringValue
+JavaScript/instm/InspectorBackend/getStyles
+C++/instm/IOConfigDirectory/getSubdirectories
+C/func/-/getsubopt
+JavaScript/instm/SVGTextContentElement/getSubStringLength
+C++/instm/OSMetaClass/getSuperClass
+Objective-C/instm/IOBluetoothHostController/getSupportedFeatures:
+JavaScript/instm/HTMLFrameElement/getSVGDocument
+JavaScript/instm/HTMLIFrameElement/getSVGDocument
+JavaScript/instm/HTMLEmbedElement/getSVGDocument
+JavaScript/instm/HTMLObjectElement/getSVGDocument
+C/func/-/GetSystemUIMode
+C/func/-/getsyx
+C++/instm/IOMemoryDescriptor/getTag
+C++/instm/IOSCSIParallelInterfaceController/GetTaggedTaskIdentifier
+C++/instm/IOSCSIParallelInterfaceController/GetTargetForID
+C++/instm/IOSCSIParallelInterfaceController/GetTargetIdentifier
+C++/instm/IOSCSIParallelInterfaceController/GetTaskAttribute
+C++/instm/IOATABusCommand/getTaskFilePtr
+JavaScript/instm/WebGLRenderingContext/getTexParameter
+C/func/-/GetTextEncodingBase
+C/func/-/GetTextEncodingFormat
+C/func/-/GetTextEncodingName
+C/func/-/GetTextEncodingVariant
+Objective-C/intfm/FxParameterRetrievalAPI/getTexture:layerOffsetX:layerOffsetY:requestInfo:fromParm:atTime:
+Objective-C/instm/FxTexture/getTextureCoords:right:bottom:top:
+C++/instm/IOWorkLoop/getThread
+Objective-C/clm/NSBitmapImageRep/getTIFFCompressionTypes:count:
+C/func/-/gettimeofday
+C++/instm/IOSCSIParallelInterfaceController/GetTimeoutDuration
+C++/instm/IOATABusCommand/getTimeoutMS
+C++/instm/IOAudioEngine/getTimerInterval
+C++/instm/IOFramebuffer/getTimingInfoForDisplayMode
+Objective-C/instm/IOBluetoothPairingController/getTitle
+Objective-C/instm/IOBluetoothObjectPushUIController/getTitle
+Objective-C/instm/IOBluetoothDeviceSelectorController/getTitle
+Objective-C/instm/IOBluetoothServiceBrowserController/getTitle
+C++/instm/IOCDMedia/getTOC
+C/func/-/GetTopResourceFile
+JavaScript/instm/SVGPathElement/getTotalLength
+C/func/-/GetTrackAlternate
+C/func/-/GetTrackCreationTime
+C/func/-/GetTrackDataSize
+C/func/-/GetTrackDataSize64
+C/func/-/GetTrackDimensions
+C/func/-/GetTrackDisplayMatrix
+C/func/-/GetTrackDuration
+C/func/-/GetTrackEditRate
+C/func/-/GetTrackEditRate64
+C/func/-/GetTrackEnabled
+C/func/-/GetTrackID
+C/func/-/GetTrackLayer
+C/func/-/GetTrackMatrix
+C/func/-/GetTrackMedia
+C/func/-/GetTrackModificationTime
+C/func/-/GetTrackMovie
+C/func/-/GetTrackOffset
+C/func/-/GetTrackReference
+C/func/-/GetTrackReferenceCount
+C/func/-/GetTrackSoundLocalizationSettings
+C/func/-/GetTrackUsage
+C/func/-/GetTrackUserData
+C/func/-/GetTrackVolume
+C++/instm/IOATABusCommand/getTransferChunkSize
+JavaScript/instm/SVGLocatable/getTransformToElement
+Objective-C/intfm/FxTemporalTransitionImageAPI/getTransitionInputImage:forInput:applyFilters:withImageType:withInfo:atTime:
+C/func/-/getttyent
+C/func/-/getttynam
+C++/instm/IONetworkMedium/getType
+C++/instm/IOUSBPipe/GetType
+Objective-C/instm/IOBluetoothSDPDataElement/getTypeDescriptor
+C/func/-/getuid
+C++/instm/IOATADevConfig/getUltraMode
+C++/instm/IOATABusInfo/getUltraModes
+JavaScript/instm/WebGLRenderingContext/getUniform
+JavaScript/instm/WebGLRenderingContext/getUniformLocation
+C++/instm/IOATABusCommand/getUnit
+C++/instm/IOFireWireDevice/getUnitCount
+C++/instm/IOATADevice/getUnitID
+C++/instm/IONetworkInterface/getUnitNumber
+C++/instm/IOATABusInfo/getUnits
+C++/instm/IOSCSIProtocolInterface/GetUserClientExclusivityState
+C/func/-/getusershell
+C/func/-/getutmp
+C/func/-/getutmpx
+C/func/-/getutxent
+C/func/-/getutxid
+C/func/-/getutxline
+Objective-C/instm/IOBluetoothSDPDataElement/getUUIDValue
+Objective-C/instm/IOBluetoothSDPUUID/getUUIDWithLength:
+Objective-C/instm/IOBluetoothSDPDataElement/getValue
+C++/instm/IOAudioControl/getValue
+C++/instm/OSBoolean/getValue
+Objective-C/instm/NSValue/getValue:
+Objective-C/instm/NSOpenGLPixelFormat/getValues:forAttribute:forVirtualScreen:
+Objective-C/instm/NSOpenGLContext/getValues:forParameter:
+JavaScript/instm/CSSVariablesDeclaration/getVariableValue
+C++/instm/IOUSBDevice/GetVendorID
+C++/instm/IOBlockStorageDevice/getVendorString
+JavaScript/instm/WebGLRenderingContext/getVertexAttrib
+JavaScript/instm/WebGLRenderingContext/getVertexAttribOffset
+C/func/-/getvfsbyname
+C++/instm/IOMemoryMap/getVirtualAddress
+C++/instm/IOEthernetController/getVlanTagDemand
+C/func/-/GetVoiceDescription
+C/func/-/GetVoiceInfo
+C/tdef/-/GetVolParmsInfoBuffer
+C++/instm/IOFramebuffer/getVRAMRange
+C/func/-/GetVRefNum
+C/func/-/getw
+C/func/-/getwc
+C/func/-/getwc_l
+C/func/-/getwchar
+C/func/-/getwchar_l
+C/func/-/getwd
+Objective-C/instm/NSColor/getWhite:alpha:
+C/func/-/getwin
+C++/instm/IOAudioControl/getWorkLoop
+C++/instm/IOAudioEngine/getWorkLoop
+C++/instm/IOAudioDevice/getWorkLoop
+C++/instm/IOEventSource/getWorkLoop
+C++/instm/IOSCSIParallelInterfaceController/GetWorkLoop
+C++/instm/IOService/getWorkLoop
+C++/instm/IOBlockStorageDevice/getWriteCacheState
+C/func/-/getxattr
+Objective-C/intfm/FxParameterRetrievalAPI/getXValue:YValue:fromParm:atTime:
+C/func/-/getyx
+C/econst/-/gfpErr
+C++/clconst/IOAudioDevice/gIOAudioPlane
+C++/clconst/IOAudioDevice/gIOAudioPlaneAstaticIORegistryPlanerepresentingthenewIOAudioPlanethattheIOAudioFamilyuses
+C/data/-/gIOEthernetDisabledWakeOnLANFilterGroup
+C/data/-/gIOEthernetWakeOnLANFilterGroup
+C/data/-/gIONetworkFilterGroup
+C/func/-/glAccum
+C/func/-/glActiveTextureARB
+C/func/-/glAlphaFunc
+C/func/-/glAreTexturesResident
+C/func/-/glArrayElement
+C/func/-/glBegin
+C/func/-/glBindTexture
+C/func/-/glBitmap
+C/func/-/glBlendColor
+C/func/-/glBlendEquation
+C/func/-/glBlendFunc
+C/func/-/glCallList
+C/func/-/glCallLists
+C/func/-/glClear
+C/func/-/glClearAccum
+C/func/-/glClearColor
+C/func/-/glClearDepth
+C/func/-/glClearIndex
+C/func/-/glClearStencil
+C/func/-/glClientActiveTextureARB
+C/func/-/glClipPlane
+C/func/-/glColor
+C/func/-/glColorMask
+C/func/-/glColorMaterial
+C/func/-/glColorPointer
+C/func/-/glColorSubTable
+C/func/-/glColorTable
+C/func/-/glColorTableParameter
+Objective-C/instm/FxHostCapabilities/glContextPixelFormatAttributes
+C/func/-/glConvolutionFilter1D
+C/func/-/glConvolutionFilter2D
+C/func/-/glConvolutionParameter
+C/func/-/glCopyColorSubTable
+C/func/-/glCopyColorTable
+C/func/-/glCopyConvolutionFilter1D
+C/func/-/glCopyConvolutionFilter2D
+C/func/-/glCopyPixels
+C/func/-/glCopyTexImage1D
+C/func/-/glCopyTexImage2D
+C/func/-/glCopyTexSubImage1D
+C/func/-/glCopyTexSubImage2D
+C/func/-/glCopyTexSubImage3D
+C/func/-/glCullFace
+C/func/-/glDeleteLists
+C/func/-/glDeleteTextures
+C/func/-/glDepthFunc
+C/func/-/glDepthMask
+C/func/-/glDepthRange
+C/func/-/glDrawArrays
+C/func/-/glDrawBuffer
+C/func/-/glDrawElements
+C/func/-/glDrawPixels
+C/func/-/glDrawRangeElements
+C/func/-/glEdgeFlag
+C/func/-/glEdgeFlagPointer
+C/func/-/glEnable
+C/func/-/glEnableClientState
+C/func/-/glEvalCoord
+C/func/-/glEvalMesh
+C/func/-/glEvalPoint
+C/func/-/glFeedbackBuffer
+C/func/-/glFinish
+C/func/-/glFlush
+C/func/-/glFog
+C/func/-/glFrontFace
+C/func/-/glFrustum
+C/func/-/glGenLists
+C/func/-/glGenTextures
+C/func/-/glGet
+C/func/-/glGetClipPlane
+C/func/-/glGetColorTable
+C/func/-/glGetColorTableParameter
+C/func/-/glGetConvolutionFilter
+C/func/-/glGetConvolutionParameter
+C/func/-/glGetError
+C/func/-/glGetHistogram
+C/func/-/glGetHistogramParameter
+C/func/-/glGetLight
+C/func/-/glGetMap
+C/func/-/glGetMaterial
+C/func/-/glGetMinmax
+C/func/-/glGetMinmaxParameter
+C/func/-/glGetPixelMap
+C/func/-/glGetPointerv
+C/func/-/glGetPolygonStipple
+C/func/-/glGetSeparableFilter
+C/func/-/glGetString
+C/func/-/glGetTexEnv
+C/func/-/glGetTexGen
+C/func/-/glGetTexImage
+C/func/-/glGetTexLevelParameter
+C/func/-/glGetTexParameter
+C/func/-/glHint
+C/func/-/glHistogram
+C/func/-/glIndex
+C/func/-/glIndexMask
+C/func/-/glIndexPointer
+C/func/-/glInitNames
+C/func/-/glInterleavedArrays
+C/func/-/glIsEnabled
+C/func/-/glIsList
+C/func/-/glIsTexture
+C/func/-/glLight
+C/func/-/glLightModel
+C/func/-/glLineStipple
+C/func/-/glLineWidth
+C/func/-/glListBase
+C/func/-/glLoadIdentity
+C/func/-/glLoadMatrix
+C/func/-/glLoadName
+C/func/-/glLogicOp
+C/func/-/glMap1
+C/func/-/glMap2
+C/func/-/glMapGrid
+C/func/-/glMaterial
+C/func/-/glMatrixMode
+C/func/-/glMinmax
+C/func/-/glMultiTexCoordARB
+C/func/-/glMultMatrix
+C/func/-/glNewList
+C/func/-/glNormal
+C/func/-/glNormalPointer
+C/func/-/glob
+C/func/-/glob_b
+JavaScript/clconst/JavaScriptCallFrame/GLOBAL_SCOPE
+JavaScript/data/CanvasRenderingContext2D/globalAlpha
+JavaScript/data/CanvasRenderingContext2D/globalCompositeOperation
+Objective-C/instm/WebFrame/globalContext
+Objective-C/instm/NSProcessInfo/globallyUniqueString
+C/func/-/globfree
+C/func/-/glOrtho
+C/func/-/glPassThrough
+C/func/-/glPixelMap
+C/func/-/glPixelStore
+C/func/-/glPixelTransfer
+C/func/-/glPixelZoom
+C/func/-/glPointSize
+C/func/-/glPolygonMode
+C/func/-/glPolygonOffset
+C/func/-/glPolygonStipple
+C/func/-/glPrioritizeTextures
+C/func/-/glPushAttrib
+C/func/-/glPushClientAttrib
+C/func/-/glPushMatrix
+C/func/-/glPushName
+C/func/-/glRasterPos
+C/func/-/glReadBuffer
+C/func/-/glReadPixels
+C/func/-/glRect
+C/func/-/glRenderMode
+C/func/-/glResetHistogram
+C/func/-/glResetMinMax
+C/func/-/glRotate
+C/func/-/glScale
+C/func/-/glScissor
+C/func/-/glSelectBuffer
+C/func/-/glSeparableFilter2D
+C/func/-/glShadeModel
+C/func/-/glStencilFunc
+C/func/-/glStencilMask
+C/func/-/glStencilOp
+C/func/-/glTexCoord
+C/func/-/glTexCoordPointer
+C/func/-/glTexEnv
+C/func/-/glTexGen
+C/func/-/glTexImage1D
+C/func/-/glTexImage2D
+C/func/-/glTexImage3D
+C/func/-/glTexParameter
+C/func/-/glTexSubImage1D
+C/func/-/glTexSubImage2D
+C/func/-/glTexSubImage3D
+C/func/-/glTranslate
+C/func/-/gluBeginCurve
+C/func/-/gluBeginPolygon
+C/func/-/gluBeginSurface
+C/func/-/gluBeginTrim
+C/func/-/gluBuild1DMipmapLevels
+C/func/-/gluBuild1DMipmaps
+C/func/-/gluBuild2DMipmapLevels
+C/func/-/gluBuild2DMipmaps
+C/func/-/gluBuild3DMipmapLevels
+C/func/-/gluBuild3DMipmaps
+C/func/-/gluCheckExtension
+C/func/-/gluCylinder
+C/func/-/gluDeleteNurbsRenderer
+C/func/-/gluDeleteQuadric
+C/func/-/gluDeleteTess
+C/func/-/gluDisk
+C/func/-/gluErrorString
+C/func/-/gluGetNurbsProperty
+C/func/-/gluGetString
+C/func/-/gluGetTessProperty
+C/func/-/gluLoadSamplingMatrices
+C/func/-/gluLookAt
+C/func/-/gluNewNurbsRenderer
+C/func/-/gluNewQuadric
+C/func/-/gluNewTess
+C/func/-/gluNextContour
+C/func/-/gluNurbsCallback
+C/func/-/gluNurbsCallbackData
+C/func/-/gluNurbsCallbackDataEXT
+C/func/-/gluNurbsCurve
+C/func/-/gluNurbsProperty
+C/func/-/gluNurbsSurface
+C/func/-/gluOrtho2D
+C/func/-/gluPartialDisk
+C/func/-/gluPerspective
+C/func/-/gluPickMatrix
+C/func/-/gluProject
+C/func/-/gluPwlCurve
+C/func/-/gluQuadricCallback
+C/func/-/gluQuadricDrawStyle
+C/func/-/gluQuadricNormals
+C/func/-/gluQuadricOrientation
+C/func/-/gluQuadricTexture
+C/func/-/gluScaleImage
+C/func/-/gluSphere
+C/func/-/glut
+C/func/-/glutAddMenuEntry
+C/func/-/glutAddSubMenu
+C/func/-/glutAttachMenu
+C/func/-/glutBitmapCharacter
+C/func/-/glutBitmapWidth
+C/func/-/glutButtonBoxFunc
+C/func/-/glutChangeToMenuEntry
+C/func/-/glutChangeToSubMenu
+C/func/-/glutCopyColormap
+C/func/-/glutCreateMenu
+C/func/-/glutCreateSubWindow
+C/func/-/glutCreateWindow
+C/func/-/glutDestroyMenu
+C/func/-/glutDestroyWindow
+C/func/-/glutDeviceGet
+C/func/-/glutDialsFunc
+C/func/-/glutDisplayFunc
+C/func/-/glutEnterGameMode
+C/func/-/glutEntryFunc
+C/func/-/gluTessBeginContour
+C/func/-/gluTessBeginPolygon
+C/func/-/gluTessCallback
+C/func/-/gluTessEndPolygon
+C/func/-/gluTessNormal
+C/func/-/gluTessProperty
+C/func/-/gluTessVertex
+C/func/-/glutEstablishOverlay
+C/func/-/glutExtensionSupported
+C/func/-/glutForceJoystickFunc
+C/func/-/glutFullScreen
+C/func/-/glutGameModeGet
+C/func/-/glutGameModeString
+C/func/-/glutGet
+C/func/-/glutGetColor
+C/func/-/glutGetModifiers
+C/func/-/glutIdleFunc
+C/func/-/glutIgnoreKeyRepeat
+C/func/-/glutInit
+C/func/-/glutInitDisplayMode
+C/func/-/glutInitDisplayString
+C/func/-/glutInitWindowPosition
+C/func/-/glutJoystickFunc
+C/func/-/glutKeyboardFunc
+C/func/-/glutKeyboardUpFunc
+C/func/-/glutLayerGet
+C/func/-/glutMainLoop
+C/func/-/glutMenuStatusFunc
+C/func/-/glutMotionFunc
+C/func/-/glutMouseFunc
+C/func/-/glutOverlayDisplayFunc
+C/func/-/glutPopWindow
+C/func/-/glutPositionWindow
+C/func/-/glutPostOverlayRedisplay
+C/func/-/glutPostRedisplay
+C/func/-/glutRemoveMenuItem
+C/func/-/glutRemoveOverlay
+C/func/-/glutReportErrors
+C/func/-/glutReshapeFunc
+C/func/-/glutReshapeWindow
+C/func/-/glutSetColor
+C/func/-/glutSetCursor
+C/func/-/glutSetKeyRepeat
+C/func/-/glutSetMenu
+C/func/-/glutSetWindow
+C/func/-/glutSetWindowTitle
+C/func/-/glutShowOverlay
+C/func/-/glutShowWindow
+C/func/-/glutSolidCone
+C/func/-/glutSolidCube
+C/func/-/glutSolidDodecahedron
+C/func/-/glutSolidIcosahedron
+C/func/-/glutSolidOctahedron
+C/func/-/glutSolidSphere
+C/func/-/glutSolidTeapot
+C/func/-/glutSolidTetrahedron
+C/func/-/glutSolidTorus
+C/func/-/glutSpaceballButtonFunc
+C/func/-/glutSpaceballMotionFunc
+C/func/-/glutSpaceballRotateFunc
+C/func/-/glutSpecialFunc
+C/func/-/glutSpecialUpFunc
+C/func/-/glutStrokeCharacter
+C/func/-/glutStrokeWidth
+C/func/-/glutSwapBuffers
+C/func/-/glutTabletButtonFunc
+C/func/-/glutTabletMotionFunc
+C/func/-/glutTimerFunc
+C/func/-/glutUseLayer
+C/func/-/glutVisibilityFunc
+C/func/-/glutWarpPointer
+C/func/-/gluUnProject
+C/func/-/gluUnProject4
+C/func/-/glVertex
+C/func/-/glVertexPointer
+C/func/-/glViewport
+Objective-C/instm/NSLayoutManager/glyphAtIndex:
+Objective-C/instm/NSLayoutManager/glyphAtIndex:isValidIndex:
+Objective-C/instm/NSLayoutManager/glyphGenerator
+Objective-C/instm/NSLayoutManager/glyphIndexForCharacterAtIndex:
+Objective-C/instm/NSLayoutManager/glyphIndexForPoint:inTextContainer:
+Objective-C/instm/NSLayoutManager/glyphIndexForPoint:inTextContainer:fractionOfDistanceThroughGlyph:
+Objective-C/clm/NSGlyphInfo/glyphInfoWithCharacterIdentifier:collection:baseString:
+Objective-C/clm/NSGlyphInfo/glyphInfoWithGlyph:forFont:baseString:
+Objective-C/clm/NSGlyphInfo/glyphInfoWithGlyphName:forFont:baseString:
+Objective-C/instm/NSFont/glyphIsEncoded:
+Objective-C/instm/NSGlyphInfo/glyphName
+Objective-C/instm/NSFont/glyphPacking
+Objective-C/instm/NSLayoutManager/glyphRangeForBoundingRect:inTextContainer:
+Objective-C/instm/NSLayoutManager/glyphRangeForBoundingRectWithoutAdditionalLayout:inTextContainer:
+Objective-C/instm/NSATSTypesetter/glyphRangeForCharacterRange:actualCharacterRange:
+Objective-C/instm/NSLayoutManager/glyphRangeForCharacterRange:actualCharacterRange:
+Objective-C/instm/NSTypesetter/glyphRangeForCharacterRange:actualCharacterRange:
+Objective-C/instm/NSLayoutManager/glyphRangeForTextContainer:
+JavaScript/data/SVGAltGlyphElement/glyphRef
+Objective-C/instm/NSFont/glyphWithName:
+C/func/-/gmtime
+C/func/-/gmtime_r
+JavaScript/instm/window/go
+Objective-C/instm/WebBackForwardList/goBack
+Objective-C/instm/WebView/goBack
+Objective-C/instm/PDFView/goBack:
+Objective-C/instm/WebView/goBack:
+Objective-C/instm/WebBackForwardList/goForward
+Objective-C/instm/WebView/goForward
+Objective-C/instm/PDFView/goForward:
+Objective-C/instm/WebView/goForward:
+C/data/-/gOSKextUnresolved
+Objective-C/instm/WebView/goToBackForwardItem:
+Objective-C/instm/QTMovie/gotoBeginning
+Objective-C/instm/QTMovieView/gotoBeginning:
+Objective-C/instm/PDFView/goToDestination:
+Objective-C/instm/QTMovie/gotoEnd
+Objective-C/instm/QTMovieView/gotoEnd:
+Objective-C/instm/PDFView/goToFirstPage:
+Objective-C/instm/WebBackForwardList/goToItem:
+Objective-C/instm/PDFView/goToLastPage:
+Objective-C/instm/PDFView/goToNextPage:
+Objective-C/instm/QTMovie/gotoNextSelectionPoint
+Objective-C/instm/QTMovieView/gotoNextSelectionPoint:
+Objective-C/instm/PDFView/goToPage:
+Objective-C/instm/QTMovieView/gotoPosterFrame:
+Objective-C/instm/QTMovie/gotoPosterTime
+Objective-C/instm/PDFView/goToPreviousPage:
+Objective-C/instm/QTMovie/gotoPreviousSelectionPoint
+Objective-C/instm/QTMovieView/gotoPreviousSelectionPoint:
+Objective-C/instm/PDFView/goToRect:onPage:
+Objective-C/instm/PDFView/goToSelection:
+JavaScript/data/SVGGradientElement/gradientTransform
+Objective-C/instm/NSButtonCell/gradientType
+JavaScript/data/SVGGradientElement/gradientUnits
+C/tag/-/GrafPort
+C/tdef/-/GrafPtr
+Objective-C/clm/NSTextCheckingResult/grammarCheckingResultWithRange:details:
+Objective-C/instp/NSTextCheckingResult/grammarDetails
+Objective-C/instm/NSTextCheckingResult/grammarDetails
+C/func/-/grantpt
+C/tdef/-/GraphicImageMovieImportComponent
+Objective-C/instm/NSWindow/graphicsContext
+Objective-C/clm/NSGraphicsContext/graphicsContextWithAttributes:
+Objective-C/clm/NSGraphicsContext/graphicsContextWithBitmapImageRep:
+Objective-C/clm/NSGraphicsContext/graphicsContextWithGraphicsPort:flipped:
+Objective-C/clm/NSGraphicsContext/graphicsContextWithWindow:
+C/func/-/GraphicsExportCanTranscode
+C/func/-/GraphicsExportCanUseCompressor
+C/tdef/-/GraphicsExportComponent
+C/func/-/GraphicsExportDoExport
+C/func/-/GraphicsExportDoStandaloneExport
+C/func/-/GraphicsExportDoTranscode
+C/func/-/GraphicsExportDoUseCompressor
+C/func/-/GraphicsExportDrawInputImage
+C/func/-/GraphicsExportGetColorSyncProfile
+C/func/-/GraphicsExportGetCompressionMethod
+C/func/-/GraphicsExportGetCompressionQuality
+C/func/-/GraphicsExportGetDefaultFileNameExtension
+C/func/-/GraphicsExportGetDefaultFileTypeAndCreator
+C/func/-/GraphicsExportGetDepth
+C/func/-/GraphicsExportGetDontRecompress
+C/func/-/GraphicsExportGetExifEnabled
+C/func/-/GraphicsExportGetInputCGBitmapContext
+C/func/-/GraphicsExportGetInputCGImage
+C/func/-/GraphicsExportGetInputDataReference
+C/func/-/GraphicsExportGetInputDataSize
+C/func/-/GraphicsExportGetInputFile
+C/func/-/GraphicsExportGetInputGraphicsImporter
+C/func/-/GraphicsExportGetInputGWorld
+C/func/-/GraphicsExportGetInputHandle
+C/func/-/GraphicsExportGetInputImageDepth
+C/func/-/GraphicsExportGetInputImageDescription
+C/func/-/GraphicsExportGetInputImageDimensions
+C/func/-/GraphicsExportGetInputOffsetAndLimit
+C/func/-/GraphicsExportGetInputPicture
+C/func/-/GraphicsExportGetInputPixmap
+C/func/-/GraphicsExportGetInputPtr
+C/func/-/GraphicsExportGetInterlaceStyle
+C/func/-/GraphicsExportGetMetaData
+C/func/-/GraphicsExportGetMIMETypeList
+C/func/-/GraphicsExportGetOutputDataReference
+C/func/-/GraphicsExportGetOutputFile
+C/func/-/GraphicsExportGetOutputFileTypeAndCreator
+C/func/-/GraphicsExportGetOutputHandle
+C/func/-/GraphicsExportGetOutputMark
+C/func/-/GraphicsExportGetOutputOffsetAndMaxSize
+C/func/-/GraphicsExportGetProgressProc
+C/func/-/GraphicsExportGetResolution
+C/func/-/GraphicsExportGetSettingsAsAtomContainer
+C/func/-/GraphicsExportGetSettingsAsText
+C/func/-/GraphicsExportGetTargetDataSize
+C/func/-/GraphicsExportGetThumbnailEnabled
+C/func/-/GraphicsExportMayExporterReadInputData
+C/func/-/GraphicsExportReadInputData
+C/func/-/GraphicsExportReadOutputData
+C/func/-/GraphicsExportRequestSettings
+C/func/-/GraphicsExportSetColorSyncProfile
+C/func/-/GraphicsExportSetCompressionMethod
+C/func/-/GraphicsExportSetCompressionQuality
+C/func/-/GraphicsExportSetDepth
+C/func/-/GraphicsExportSetDontRecompress
+C/func/-/GraphicsExportSetExifEnabled
+C/func/-/GraphicsExportSetInputCGBitmapContext
+C/func/-/GraphicsExportSetInputCGImage
+C/func/-/GraphicsExportSetInputDataReference
+C/func/-/GraphicsExportSetInputFile
+C/func/-/GraphicsExportSetInputGraphicsImporter
+C/func/-/GraphicsExportSetInputGWorld
+C/func/-/GraphicsExportSetInputHandle
+C/func/-/GraphicsExportSetInputOffsetAndLimit
+C/func/-/GraphicsExportSetInputPicture
+C/func/-/GraphicsExportSetInputPixmap
+C/func/-/GraphicsExportSetInputPtr
+C/func/-/GraphicsExportSetInterlaceStyle
+C/func/-/GraphicsExportSetMetaData
+C/func/-/GraphicsExportSetOutputDataReference
+C/func/-/GraphicsExportSetOutputFile
+C/func/-/GraphicsExportSetOutputFileTypeAndCreator
+C/func/-/GraphicsExportSetOutputHandle
+C/func/-/GraphicsExportSetOutputMark
+C/func/-/GraphicsExportSetOutputOffsetAndMaxSize
+C/func/-/GraphicsExportSetProgressProc
+C/func/-/GraphicsExportSetResolution
+C/func/-/GraphicsExportSetSettingsFromAtomContainer
+C/func/-/GraphicsExportSetTargetDataSize
+C/func/-/GraphicsExportSetThumbnailEnabled
+C/func/-/GraphicsExportWriteOutputData
+C/func/-/GraphicsImageImportGetSequenceEnabled
+C/func/-/GraphicsImageImportSetSequenceEnabled
+C/tdef/-/GraphicsImportComponent
+C/func/-/GraphicsImportCreateCGImage
+C/func/-/GraphicsImportDoesDrawAllPixels
+C/func/-/GraphicsImportDoExportImageFileDialog
+C/func/-/GraphicsImportDoExportImageFileToDataRefDialog
+C/func/-/GraphicsImportDraw
+C/func/-/GraphicsImportExportImageFile
+C/func/-/GraphicsImportExportImageFileToDataRef
+C/func/-/GraphicsImportGetAliasedDataReference
+C/func/-/GraphicsImportGetAsPicture
+C/func/-/GraphicsImportGetBaseDataOffsetAndSize64
+C/func/-/GraphicsImportGetBoundsRect
+C/func/-/GraphicsImportGetClip
+C/func/-/GraphicsImportGetColorSyncProfile
+C/func/-/GraphicsImportGetDataFile
+C/func/-/GraphicsImportGetDataHandle
+C/func/-/GraphicsImportGetDataOffsetAndSize
+C/func/-/GraphicsImportGetDataOffsetAndSize64
+C/func/-/GraphicsImportGetDataReference
+C/func/-/GraphicsImportGetDataReferenceOffsetAndLimit
+C/func/-/GraphicsImportGetDataReferenceOffsetAndLimit64
+C/func/-/GraphicsImportGetDefaultClip
+C/func/-/GraphicsImportGetDefaultGraphicsMode
+C/func/-/GraphicsImportGetDefaultMatrix
+C/func/-/GraphicsImportGetDefaultSourceRect
+C/func/-/GraphicsImportGetDestinationColorSyncProfileRef
+C/func/-/GraphicsImportGetDestRect
+C/func/-/GraphicsImportGetExportImageTypeList
+C/func/-/GraphicsImportGetExportSettingsAsAtomContainer
+C/func/-/GraphicsImportGetFlags
+C/func/-/GraphicsImportGetGenericColorSyncProfile
+C/func/-/GraphicsImportGetGraphicsMode
+C/func/-/GraphicsImportGetGWorld
+C/func/-/GraphicsImportGetImageCount
+C/func/-/GraphicsImportGetImageDescription
+C/func/-/GraphicsImportGetImageIndex
+C/func/-/GraphicsImportGetMatrix
+C/func/-/GraphicsImportGetMetaData
+C/func/-/GraphicsImportGetMIMETypeList
+C/func/-/GraphicsImportGetNaturalBounds
+C/func/-/GraphicsImportGetOverrideSourceColorSyncProfileRef
+C/func/-/GraphicsImportGetProgressProc
+C/func/-/GraphicsImportGetQuality
+C/func/-/GraphicsImportGetSourceRect
+C/func/-/GraphicsImportReadData
+C/func/-/GraphicsImportReadData64
+C/func/-/GraphicsImportSaveAsPicture
+C/func/-/GraphicsImportSaveAsPictureToDataRef
+C/func/-/GraphicsImportSaveAsQuickTimeImageFile
+C/func/-/GraphicsImportSaveAsQuickTimeImageFileToDataRef
+C/func/-/GraphicsImportSetBoundsRect
+C/func/-/GraphicsImportSetClip
+C/func/-/GraphicsImportSetDataFile
+C/func/-/GraphicsImportSetDataHandle
+C/func/-/GraphicsImportSetDataReference
+C/func/-/GraphicsImportSetDataReferenceOffsetAndLimit
+C/func/-/GraphicsImportSetDataReferenceOffsetAndLimit64
+C/func/-/GraphicsImportSetDestinationColorSyncProfileRef
+C/func/-/GraphicsImportSetDestRect
+C/func/-/GraphicsImportSetExportSettingsFromAtomContainer
+C/func/-/GraphicsImportSetFlags
+C/func/-/GraphicsImportSetGraphicsMode
+C/func/-/GraphicsImportSetGWorld
+C/func/-/GraphicsImportSetImageIndex
+C/func/-/GraphicsImportSetImageIndexToThumbnail
+C/func/-/GraphicsImportSetMatrix
+C/func/-/GraphicsImportSetOverrideSourceColorSyncProfileRef
+C/func/-/GraphicsImportSetProgressProc
+C/func/-/GraphicsImportSetQuality
+C/func/-/GraphicsImportSetSourceRect
+C/func/-/GraphicsImportValidate
+C/func/-/GraphicsImportWillUseColorMatching
+Objective-C/instm/NSGraphicsContext/graphicsPort
+Objective-C/clm/NSColor/grayColor
+C/econst/-/grayishTextOr
+JavaScript/clconst/WebGLRenderingContext/GREATER
+Objective-C/instm/PDFView/greekingThreshold
+Objective-C/instm/CIColor/green
+JavaScript/data/RGBColor/green
+JavaScript/clconst/WebGLRenderingContext/GREEN_BITS
+Objective-C/clm/NSColor/greenColor
+Objective-C/instm/NSColor/greenComponent
+Objective-C/instm/CAEmitterCell/greenRange
+Objective-C/instp/CAEmitterCell/greenRange
+Objective-C/instm/CAEmitterCell/greenSpeed
+Objective-C/instp/CAEmitterCell/greenSpeed
+Objective-C/instm/NSDateFormatter/gregorianStartDate
+Objective-C/clm/NSColor/gridColor
+Objective-C/instm/NSTableView/gridColor
+Objective-C/instm/XGController/gridForIdentifier:
+Objective-C/instm/XGController/grids
+Objective-C/instm/NSTableView/gridStyleMask
+JavaScript/instm/Console/group
+Objective-C/instp/ABPeoplePickerView/groupDoubleAction
+Objective-C/instm/ABPeoplePickerView/groupDoubleAction
+Objective-C/instm/NSMetadataQuery/groupedResults
+JavaScript/instm/Console/groupEnd
+Objective-C/clm/CBGroupIdentity/groupIdentityWithPosixGID:authority:
+Objective-C/instm/NSMetadataQuery/groupingAttributes
+Objective-C/instm/NSUndoManager/groupingLevel
+Objective-C/instm/NSNumberFormatter/groupingSeparator
+Objective-C/instm/NSNumberFormatter/groupingSize
+Objective-C/instm/WebView/groupName
+Objective-C/instm/ABAddressBook/groups
+Objective-C/instm/NSUndoManager/groupsByEvent
+C++/clconst/IOAudioEngine/gSampleRateFractionKey
+C++/clconst/IOAudioEngine/gSampleRateWholeNumberKey
+Objective-C/instm/NSWindow/gState
+Objective-C/instm/NSView/gState
+C/func/-/Guard_Malloc
+C/func/-/guardmalloc
+Objective-C/instm/NSSpellChecker/guessesForWord:
+Objective-C/instm/NSSpellChecker/guessesForWordRange:inString:language:inSpellDocumentWithTag:
+C/tdef/-/GWorldFlags
+C/tdef/-/GWorldPtr
+C/tag/-/gxPaths
+C/tag/-/gxPoint
+C/func/-/halfdelay
+C++/instm/IOSCSIProtocolInterface/HandleCheckPowerState
+C++/instm/IONetworkInterface/handleClientClose
+C++/instm/IONetworkInterface/handleClientOpen
+C++/instm/IONetworkInterface/handleClose
+C++/instm/IONetworkController/handleClose
+C++/instm/IOFireWireAVCUnit/handleClose
+C++/instm/IOFilterScheme/handleClose
+C++/instm/IOBlockStorageDriver/handleClose
+C++/instm/IOFireWireAVCSubUnit/handleClose
+C++/instm/IOMedia/handleClose
+C++/instm/IOKernelDebugger/handleClose
+C++/instm/IOHIDDevice/handleClose
+C/func/-/handleClose
+C++/instm/IOStream/handleClose
+C++/instm/IOService/handleClose
+C++/instm/IOPartitionScheme/handleClose
+C++/instm/IOStorage/handleClose
+Objective-C/instm/NSWindow/handleCloseScriptCommand:
+Objective-C/instm/NSDocument/handleCloseScriptCommand:
+C++/instm/IOATAController/handleCommand
+C++/instm/IOFramebuffer/handleEvent
+JavaScript/instm/DatabaseCallback/handleEvent
+JavaScript/instm/EventListener/handleEvent
+JavaScript/instm/SQLTransactionErrorCallback/handleEvent
+JavaScript/instm/SQLTransactionCallback/handleEvent
+JavaScript/instm/SQLStatementErrorCallback/handleEvent
+JavaScript/instm/SQLTransactionSyncCallback/handleEvent
+JavaScript/instm/SQLStatementCallback/handleEvent
+JavaScript/instm/VoidCallback/handleEvent
+Objective-C/instm/NSTextInputContext/handleEvent:
+Objective-C/instm/NSObject/handleEvent:client:
+Objective-C/instm/NSAssertionHandler/handleFailureInFunction:file:lineNumber:description:
+Objective-C/instm/NSAssertionHandler/handleFailureInMethod:object:file:lineNumber:description:
+C++/instm/IOSCSIProtocolInterface/HandleGetUserClientExclusivityState
+C++/instm/IOSCSIParallelInterfaceController/HandleInterruptRequest
+C++/instm/IONetworkInterface/handleIsOpen
+C++/instm/IONetworkController/handleIsOpen
+C++/instm/IOFilterScheme/handleIsOpen
+C++/instm/IOBlockStorageDriver/handleIsOpen
+C++/instm/IOHIDDevice/handleIsOpen
+C++/instm/IOMedia/handleIsOpen
+C++/instm/IOKernelDebugger/handleIsOpen
+C/func/-/handleIsOpen
+C++/instm/IOStorage/handleIsOpen
+C++/instm/IOService/handleIsOpen
+C++/instm/IOPartitionScheme/handleIsOpen
+Objective-C/intfm/NSMachPortDelegate/handleMachMessage:
+C++/instm/IOBasicOutputQueue/handleNetworkDataAccess
+C++/instm/IONetworkInterface/handleOpen
+C++/instm/IONetworkController/handleOpen
+C++/instm/IOBlockStorageDriver/handleOpen
+C++/instm/IOFireWireAVCUnit/handleOpen
+C++/instm/IOFilterScheme/handleOpen
+C++/instm/IOFireWireAVCSubUnit/handleOpen
+C++/instm/IOKernelDebugger/handleOpen
+C++/instm/IOMedia/handleOpen
+C/func/-/handleOpen
+C++/instm/IOHIDDevice/handleOpen
+C++/instm/IOPartitionScheme/handleOpen
+C++/instm/IOStream/handleOpen
+C++/instm/IOStorage/handleOpen
+C++/instm/IOService/handleOpen
+Objective-C/intfm/NSPortDelegate/handlePortMessage:
+C++/instm/IOSCSIProtocolInterface/HandlePowerChange
+Objective-C/instm/NSWindow/handlePrintScriptCommand:
+Objective-C/instm/NSDocument/handlePrintScriptCommand:
+C++/instm/IOFireWireSerialBusProtocolTransport/HandleProtocolServiceFeature
+C++/instm/IOSCSIProtocolInterface/HandleProtocolServiceFeature
+Objective-C/instm/NSObject/handleQueryWithUnboundKey:
+C++/instm/IOHIDDevice/handleReport
+C++/instm/IOHIDDevice/handleReportWithTime
+C/tdef/-/HandlerError
+Objective-C/instm/NSWindow/handleSaveScriptCommand:
+Objective-C/instm/NSDocument/handleSaveScriptCommand:
+C++/instm/IOSCSIProtocolInterface/HandleSetPowerState
+C++/instm/IOSCSIProtocolInterface/HandleSetUserClientExclusivityState
+Objective-C/instm/ISyncSessionDriver/handlesSyncAlerts
+C++/instm/IOBlockStorageDriver/handleStart
+C++/instm/IOHIDDevice/handleStart
+C/func/-/handleStart
+C++/instm/IOHIDDevice/handleStop
+C/func/-/handleStop
+Objective-C/instm/NSObject/handleTakeValue:forUnboundKey:
+Objective-C/instm/NSTextView/handleTextCheckingResults:forRange:types:options:orthography:wordCount:
+C++/instm/IOSCSIParallelInterfaceController/HandleTimeout
+C++/instm/IOBlockStorageDriver/handleYield
+Objective-C/clm/DRFile(VirtualLinks)/hardLinkPointingTo:inFilesystem:
+C/econst/-/hardwareConfigErr
+C++/instm/IOAudioControl/hardwareValueChanged
+C/func/-/has_colors
+C/func/-/has_ic
+C/func/-/has_il
+C/func/-/has_key
+Objective-C/intfm/IKImageEditPanelDataSource/hasAdjustMode
+Objective-C/instm/CalCalendarItem/hasAlarm
+Objective-C/instm/NSImageRep/hasAlpha
+Objective-C/instm/PDFAnnotation/hasAppearanceStream
+JavaScript/instm/Element/hasAttribute
+JavaScript/instm/Element/hasAttributeNS
+JavaScript/instm/core/hasAttributes
+Objective-C/instm/NSInputStream/hasBytesAvailable
+Objective-C/instm/NSManagedObjectContext/hasChanges
+Objective-C/instm/QTMovie/hasChapters
+Objective-C/instm/QTMedia/hasCharacteristic:
+JavaScript/instm/core/hasChildNodes
+Objective-C/instm/NSWindow/hasCloseBox
+Objective-C/instm/ScreenSaverView/hasConfigureSheet
+C++/instm/IOFramebuffer/hasDDCConnect
+Objective-C/intfm/IKImageEditPanelDataSource/hasDetailsMode
+Objective-C/instp/IKScannerDeviceView/hasDisplayModeAdvanced
+Objective-C/instm/IKScannerDeviceView/hasDisplayModeAdvanced
+Objective-C/instm/IKCameraDeviceView/hasDisplayModeIcon
+Objective-C/instp/IKCameraDeviceView/hasDisplayModeIcon
+Objective-C/instp/IKScannerDeviceView/hasDisplayModeSimple
+Objective-C/instm/IKScannerDeviceView/hasDisplayModeSimple
+Objective-C/instp/IKCameraDeviceView/hasDisplayModeTable
+Objective-C/instm/IKCameraDeviceView/hasDisplayModeTable
+Objective-C/instm/NSWindow/hasDynamicDepthLimit
+Objective-C/instm/NSDocumentController/hasEditedDocuments
+Objective-C/intfm/IKImageEditPanelDataSource/hasEffectsMode
+JavaScript/instm/Channel/hasError
+JavaScript/instm/SVGTests/hasExtension
+C/tdef/-/hasExternalSubsetSAXFunc
+Objective-C/instm/NSManagedObject/hasFaultForRelationshipNamed:
+JavaScript/instm/DOMImplementation/hasFeature
+JavaScript/instm/HTMLDocument/hasFocus
+Objective-C/intfm/NSObject/hash
+C/func/-/hash
+Objective-C/instm/NSString/hash
+JavaScript/data/HTMLAnchorElement/hash
+JavaScript/data/HTMLAreaElement/hash
+JavaScript/data/window/hash
+JavaScript/data/WorkerLocation/hash
+Objective-C/instp/NSPointerFunctions/hashFunction
+Objective-C/instm/NSPointerFunctions/hashFunction
+Objective-C/instm/NSScrollView/hasHorizontalRuler
+Objective-C/instm/NSScrollView/hasHorizontalScroller
+Objective-C/instm/NSBrowser/hasHorizontalScroller
+Objective-C/instp/IKImageView/hasHorizontalScroller
+Objective-C/instm/IKImageView/hasHorizontalScroller
+Objective-C/clm/NSHashTable/hashTableWithOptions:
+Objective-C/clm/NSHashTable/hashTableWithWeakObjects
+C/tdef/-/hasInternalSubsetSAXFunc
+Objective-C/instm/NSSpellChecker/hasLearnedWord:
+Objective-C/intfm/NSTextInput/hasMarkedText
+Objective-C/intfm/NSTextInputClient/hasMarkedText
+Objective-C/instm/QTCaptureDevice/hasMediaType:
+Objective-C/instm/NSCharacterSet/hasMemberInPlane:
+Objective-C/instm/NSLayoutManager/hasNonContiguousLayout
+Objective-C/instm/OBEXSession/hasOpenOBEXConnection
+Objective-C/instm/IOBluetoothOBEXSession/hasOpenTransportConnection
+Objective-C/instm/OBEXSession/hasOpenTransportConnection
+Objective-C/instm/NSScriptClassDescription/hasOrderedToManyRelationshipForKey:
+Objective-C/instm/QCCompositionParameterView/hasParameters
+Objective-C/instm/NSURLCredential/hasPassword
+C++/instm/IOPCIDevice/hasPCIPowerManagement
+Objective-C/instm/NSString/hasPrefix:
+Objective-C/instm/NSScriptClassDescription/hasPropertyForKey:
+Objective-C/instm/NSScriptClassDescription/hasReadablePropertyForKey:
+Objective-C/instm/IOBluetoothSDPServiceRecord/hasServiceFromArray:
+Objective-C/instm/NSWindow/hasShadow
+Objective-C/instm/NSOutputStream/hasSpaceAvailable
+Objective-C/instm/NSMenuItem/hasSubmenu
+Objective-C/instm/NSString/hasSuffix:
+Objective-C/instm/NSNumberFormatter/hasThousandSeparators
+C++/instm/ATATimerEventSource/hasTimedOut
+Objective-C/instm/NSWindow/hasTitleBar
+Objective-C/instm/NSUserDefaultsController/hasUnappliedChanges
+Objective-C/instm/NSDocument/hasUnautosavedChanges
+Objective-C/instm/NSPersistentDocument/hasUndoManager
+Objective-C/instm/NSDocument/hasUndoManager
+Objective-C/instm/ABAddressBook/hasUnsavedChanges
+Objective-C/instm/NSCell/hasValidObjectValue
+Objective-C/instm/NSScrollView/hasVerticalRuler
+Objective-C/instm/NSScrollView/hasVerticalScroller
+Objective-C/instm/NSComboBox/hasVerticalScroller
+Objective-C/instm/NSComboBoxCell/hasVerticalScroller
+Objective-C/instm/IKImageView/hasVerticalScroller
+Objective-C/instp/IKImageView/hasVerticalScroller
+Objective-C/instm/AMBundleAction/hasView
+Objective-C/instm/NSScriptClassDescription/hasWritablePropertyForKey:
+JavaScript/clconst/HTMLMediaElement/HAVE_CURRENT_DATA
+JavaScript/clconst/HTMLMediaElement/HAVE_ENOUGH_DATA
+JavaScript/clconst/HTMLMediaElement/HAVE_FUTURE_DATA
+JavaScript/clconst/HTMLMediaElement/HAVE_METADATA
+JavaScript/clconst/HTMLMediaElement/HAVE_NOTHING
+C++/instm/OSCollection/haveUpdated
+C/func/-/HCreate
+C/func/-/hcreate
+C/func/-/HCreateResFile
+C/func/-/HDelete
+C/func/-/hdestroy
+JavaScript/data/Document/head
+JavaScript/data/ScriptProfile/head
+Objective-C/instm/NSTableColumn/headerCell
+Objective-C/clm/NSColor/headerColor
+Objective-C/instm/NSParagraphStyle/headerLevel
+Objective-C/instm/NSTableHeaderView/headerRectOfColumn:
+JavaScript/data/HTMLTableCellElement/headers
+JavaScript/clconst/XMLHttpRequest/HEADERS_RECEIVED
+Objective-C/clm/NSColor/headerTextColor
+Objective-C/binding/NSTableColumn/headerTitle
+Objective-C/instm/NSTableColumn/headerToolTip
+Objective-C/instm/NSTableView/headerView
+Objective-C/instm/NSParagraphStyle/headIndent
+JavaScript/data/Coordinates/heading
+C/func/-/heapsort
+C/func/-/heapsort_b
+Objective-C/instm/FxImage/height
+JavaScript/data/ClientRect/height
+JavaScript/data/HTMLEmbedElement/height
+JavaScript/data/HTMLDocument/height
+JavaScript/data/HTMLObjectElement/height
+JavaScript/data/HTMLFrameElement/height
+JavaScript/data/HTMLCanvasElement/height
+JavaScript/data/HTMLIFrameElement/height
+JavaScript/data/HTMLAppletElement/height
+JavaScript/data/HTMLVideoElement/height
+JavaScript/data/HTMLTableCellElement/height
+JavaScript/data/HTMLImageElement/height
+JavaScript/data/ImageData/height
+JavaScript/data/SVGFilterElement/height
+JavaScript/data/Screen/height
+JavaScript/data/SVGImageElement/height
+JavaScript/data/SVGForeignObjectElement/height
+JavaScript/data/SVGFilterPrimitiveStandardAttributes/height
+JavaScript/data/SVGMaskElement/height
+JavaScript/data/SVGPatternElement/height
+JavaScript/data/SVGRect/height
+JavaScript/data/SVGRectElement/height
+JavaScript/data/SVGUseElement/height
+JavaScript/data/SVGSVGElement/height
+Objective-C/instm/NSView/heightAdjustLimit
+C/func/-/HeightMMOfScreen
+C/func/-/HeightOfScreen
+Objective-C/instm/NSTextContainer/heightTracksTextView
+Objective-C/instm/SFCertificatePanel/helpAnchor
+Objective-C/instm/NSAlert/helpAnchor
+Objective-C/instm/NSPrintPanel/helpAnchor
+Objective-C/instm/NSError/helpAnchor
+Objective-C/instm/SFChooseIdentityPanel/helpAnchor
+Objective-C/instm/NSApplication/helpMenu
+Objective-C/instm/NSResponder/helpRequested:
+Objective-C/instm/NSMenu/helpRequested:
+C/func/-/herror
+C/tdef/-/HFileInfo
+C/tdef/-/HFileParam
+C/tdef/-/HFSUniStr255
+C/func/-/HGetFInfo
+C/func/-/HGetVol
+C/func/-/HIAboutBox
+C/func/-/HIApplicationCreateDockTileContext
+C/func/-/HIApplicationGetCurrent
+C/func/-/HIApplicationGetFocus
+C/func/-/HICopyAccessibilityActionDescription
+C/func/-/HICopyAccessibilityRoleDescription
+C/tag/-/HIDCaps
+C/tdef/-/HIDCapsPtr
+C/func/-/HIDCloseReportDescriptor
+Objective-C/instp/NSRunningApplication/hidden
+Objective-C/binding/NSButton/hidden
+Objective-C/binding/NSCollectionView/hidden
+Objective-C/binding/NSForm/hidden
+Objective-C/binding/NSLevelIndicator/hidden
+Objective-C/binding/NSOutlineView/hidden
+Objective-C/binding/NSImageView/hidden
+Objective-C/binding/NSDatePicker/hidden
+Objective-C/binding/NSMatrix/hidden
+Objective-C/binding/NSBox/hidden
+Objective-C/binding/NSColorWell/hidden
+Objective-C/binding/NSBrowser/hidden
+Objective-C/binding/NSComboBox/hidden
+Objective-C/binding/AMPathPopUpButton/hidden
+Objective-C/binding/NSMovieView/hidden
+Objective-C/binding/NSStepper/hidden
+Objective-C/binding/NSSegmentedControl/hidden
+Objective-C/binding/PDFThumbnailView/hidden
+Objective-C/binding/NSTabView/hidden
+Objective-C/binding/NSPathControl/hidden
+Objective-C/binding/NSScrollView/hidden
+Objective-C/binding/NSTokenField/hidden
+Objective-C/binding/QCView/hidden
+Objective-C/binding/NSSecureTextField/hidden
+Objective-C/binding/NSPopUpButton/hidden
+Objective-C/binding/NSProgressIndicator/hidden
+Objective-C/binding/QTMovieView/hidden
+Objective-C/binding/NSTextView/hidden
+Objective-C/binding/NSTableView/hidden
+Objective-C/binding/NSSearchField/hidden
+Objective-C/binding/NSPredicateEditor/hidden
+Objective-C/binding/NSTextField/hidden
+Objective-C/binding/NSSlider/hidden
+Objective-C/binding/NSView/hidden
+Objective-C/binding/NSSplitView/hidden
+Objective-C/instp/CALayer/hidden
+JavaScript/instm/InspectorFrontendHost/hiddenPanels
+Objective-C/instm/IMKCandidates/hide
+Objective-C/clm/NSCursor/hide
+Objective-C/instm/NSRunningApplication/hide
+Objective-C/instm/NSApplication/hide:
+JavaScript/instm/InspectorBackend/hideDOMNodeHighlight
+Objective-C/instm/NSWorkspace/hideOtherApplications
+Objective-C/instm/NSApplication/hideOtherApplications:
+Objective-C/instm/IMKInputController/hidePalettes
+Objective-C/instm/NSTextTable/hidesEmptyCells
+Objective-C/instm/NSWindow/hidesOnDeactivate
+C/func/-/HIDGetButtonCapabilities
+C/func/-/HIDGetButtonCaps
+C/func/-/HIDGetButtons
+C/func/-/HIDGetButtonsOnPage
+C/func/-/HIDGetCapabilities
+C/func/-/HIDGetCaps
+C/func/-/HIDGetCollectionNodes
+C/func/-/HIDGetScaledUsageValue
+C/func/-/HIDGetSpecificButtonCapabilities
+C/func/-/HIDGetSpecificButtonCaps
+C/func/-/HIDGetSpecificValueCapabilities
+C/func/-/HIDGetSpecificValueCaps
+C/func/-/HIDGetUsageValue
+C/func/-/HIDGetUsageValueArray
+C/func/-/HIDGetValueCapabilities
+C/func/-/HIDGetValueCaps
+C/func/-/HIDictionaryWindowShow
+C/func/-/HIDMaxUsageListLength
+C/func/-/HIDOpenReportDescriptor
+C/func/-/HIDSetButton
+C/func/-/HIDSetButtons
+C/func/-/HIDSetScaledUsageValue
+C/func/-/HIDSetUsageValue
+C/func/-/HIDSetUsageValueArray
+C/tag/-/HIDUsageAndPage
+C/tdef/-/HIDUsageAndPagePtr
+C/func/-/HIDUsageListDifference
+JavaScript/clconst/DOMCoreException/HIERARCHY_REQUEST_ERR
+JavaScript/data/HTMLMeterElement/high
+JavaScript/clconst/WebGLRenderingContext/HIGH_FLOAT
+JavaScript/clconst/WebGLRenderingContext/HIGH_INT
+Objective-C/instm/NSButton/highlight:
+Objective-C/instm/NSScroller/highlight:
+Objective-C/intfm/NSTextAttachmentCell/highlight:withFrame:inView:
+Objective-C/instm/NSCell/highlight:withFrame:inView:
+Objective-C/instm/NSMatrix/highlightCell:atRow:column:
+Objective-C/clm/NSColor/highlightColor
+Objective-C/instm/NSBrowserCell/highlightColorInView:
+Objective-C/instm/NSCell/highlightColorWithFrame:inView:
+JavaScript/instm/InspectorBackend/highlightDOMNode
+Objective-C/clm/NSBrowserCell/highlightedBranchImage
+Objective-C/instm/NSMenu/highlightedItem
+Objective-C/instm/NSMenuView/highlightedItemIndex
+Objective-C/instm/PDFView/highlightedSelections
+Objective-C/instm/NSTableView/highlightedTableColumn
+Objective-C/instm/NSStatusItem/highlightMode
+Objective-C/instm/NSButtonCell/highlightsBy
+Objective-C/instm/NSTableView/highlightSelectionInClipRect:
+Objective-C/instm/NSColor/highlightWithLevel:
+C/econst/-/hilite
+C/econst/-/hilitetransfermode
+JavaScript/instm/WebGLRenderingContext/hint
+C/func/-/HIObjectIsAccessibilityIgnored
+C/func/-/HIObjectOverrideAccessibilityContainment
+C/func/-/HIObjectSetAccessibilityIgnored
+C/func/-/HIObjectSetAuxiliaryAccessibilityAttribute
+C/tdef/-/HIOParam
+C/func/-/HISearchWindowShow
+C/func/-/history
+JavaScript/data/DOMWindow/history
+C/func/-/history_end
+C/func/-/history_init
+Objective-C/instm/WebHistory/historyAgeInDaysLimit
+Objective-C/instm/WebHistory/historyItemLimit
+Objective-C/instm/NSScroller/hitPart
+Objective-C/instm/CATransformLayer/hitTest:
+Objective-C/instm/NSView/hitTest:
+Objective-C/instm/CALayer/hitTest:
+C/func/-/HitTestDSequenceData
+Objective-C/instm/NSCell/hitTestForEvent:inRect:ofView:
+Objective-C/instm/NSImage/hitTestRect:withImageDestinationRect:context:hints:flipped:
+C/func/-/HIWebViewCreate
+C/func/-/HIWebViewGetWebView
+C/func/-/hline
+C/func/-/hline_set
+C/func/-/HMAC
+C/func/-/hmac
+C/func/-/HMAC_cleanup
+C/func/-/HMAC_CTX_cleanup
+C/func/-/HMAC_CTX_init
+C/func/-/HMAC_Final
+C/func/-/HMAC_Init
+C/func/-/HMAC_Init_ex
+C/func/-/HMAC_Update
+C/func/-/HomeResFile
+C/func/-/HOpen
+C/func/-/HOpenDF
+C/func/-/HOpenResFile
+C/func/-/HOpenRF
+JavaScript/clconst/OverflowEvent/HORIZONTAL
+Objective-C/instp/CLLocation/horizontalAccuracy
+Objective-C/instm/CLLocation/horizontalAccuracy
+Objective-C/instm/PDFBorder/horizontalCornerRadius
+Objective-C/instm/NSMenuView/horizontalEdgePadding
+Objective-C/instm/NSScrollView/horizontalLineScroll
+JavaScript/data/OverflowEvent/horizontalOverflow
+Objective-C/instm/NSScrollView/horizontalPageScroll
+Objective-C/instm/NSPrintInfo/horizontalPagination
+Objective-C/instm/NSScrollView/horizontalRulerView
+Objective-C/instm/NSScrollView/horizontalScroller
+Objective-C/instm/NSPrinter/host
+Objective-C/instm/NSURLProtectionSpace/host
+Objective-C/instm/NSURL/host
+JavaScript/data/HTMLAnchorElement/host
+JavaScript/data/HTMLAreaElement/host
+JavaScript/data/window/host
+JavaScript/data/WorkerLocation/host
+C/tdef/-/HostCallback_GetBeatAndTempo
+C/tdef/-/HostCallback_GetMusicalTimeLocation
+C/tdef/-/HostCallback_GetTransportState
+C/tdef/-/HostCallbackInfo
+C/tag/-/HostCallbackInfo
+Objective-C/instm/FxHostCapabilities/hostID
+Objective-C/instm/FxHostCapabilities/hostIsFCE
+Objective-C/instm/FxHostCapabilities/hostIsFCP
+Objective-C/instm/FxHostCapabilities/hostIsMotion
+Objective-C/instm/NSNetService/hostName
+Objective-C/instm/NSProcessInfo/hostName
+Objective-C/instm/XGConnection/hostname
+JavaScript/data/HTMLAreaElement/hostname
+JavaScript/data/HTMLAnchorElement/hostname
+JavaScript/data/window/hostname
+JavaScript/data/WorkerLocation/hostname
+C/func/-/hosts_access
+C/func/-/hosts_ctl
+Objective-C/instm/FxHostCapabilities/hostVersionNumber
+Objective-C/instm/WebView/hostWindow
+Objective-C/clm/NSHost/hostWithAddress:
+Objective-C/clm/NSHost/hostWithName:
+Objective-C/instm/NSCursor/hotSpot
+Objective-C/instm/NSDateComponents/hour
+C/tdef/-/HParamBlockRec
+JavaScript/data/CSSImportRule/href
+JavaScript/data/HTMLAnchorElement/href
+JavaScript/data/HTMLLinkElement/href
+JavaScript/data/HTMLBaseElement/href
+JavaScript/data/HTMLAreaElement/href
+JavaScript/data/window/href
+JavaScript/data/StyleSheet/href
+JavaScript/data/SVGURIReference/href
+JavaScript/data/WorkerLocation/href
+JavaScript/data/HTMLLinkElement/hreflang
+JavaScript/data/HTMLAnchorElement/hreflang
+C/func/-/HRename
+C/func/-/HRstFLock
+C/func/-/hsearch
+C/func/-/HSetFInfo
+C/func/-/HSetFLock
+C/func/-/HSetVol
+JavaScript/data/HTMLAppletElement/hspace
+JavaScript/data/HTMLObjectElement/hspace
+JavaScript/data/HTMLImageElement/hspace
+C/func/-/hstrerror
+C/macro/-/HTML_COMMENT_NODE
+C/macro/-/HTML_ENTITY_REF_NODE
+C/macro/-/HTML_PI_NODE
+C/macro/-/HTML_PRESERVE_NODE
+C/macro/-/HTML_TEXT_NODE
+JavaScript/data/DOMWindow/HTMLAllCollection
+JavaScript/cl/-/HTMLAllCollection
+JavaScript/data/DOMWindow/HTMLAnchorElement
+JavaScript/cl/-/HTMLAnchorElement
+JavaScript/data/DOMWindow/HTMLAppletElement
+JavaScript/cl/-/HTMLAppletElement
+JavaScript/data/DOMWindow/HTMLAreaElement
+JavaScript/cl/-/HTMLAreaElement
+JavaScript/data/DOMWindow/HTMLAudioElement
+JavaScript/cl/-/HTMLAudioElement
+JavaScript/data/DOMWindow/HTMLBaseElement
+JavaScript/cl/-/HTMLBaseElement
+JavaScript/data/DOMWindow/HTMLBaseFontElement
+JavaScript/cl/-/HTMLBaseFontElement
+JavaScript/data/DOMWindow/HTMLBlockquoteElement
+JavaScript/cl/-/HTMLBlockquoteElement
+JavaScript/data/DOMWindow/HTMLBodyElement
+JavaScript/cl/-/HTMLBodyElement
+JavaScript/data/DOMWindow/HTMLBRElement
+JavaScript/cl/-/HTMLBRElement
+JavaScript/data/DOMWindow/HTMLButtonElement
+JavaScript/cl/-/HTMLButtonElement
+JavaScript/data/DOMWindow/HTMLCanvasElement
+JavaScript/cl/-/HTMLCanvasElement
+JavaScript/data/DOMWindow/HTMLCollection
+JavaScript/cl/-/HTMLCollection
+JavaScript/data/DOMWindow/HTMLDataGridCellElement
+JavaScript/cl/-/HTMLDataGridCellElement
+JavaScript/data/DOMWindow/HTMLDataGridColElement
+JavaScript/cl/-/HTMLDataGridColElement
+JavaScript/data/DOMWindow/HTMLDataGridElement
+JavaScript/cl/-/HTMLDataGridElement
+JavaScript/cl/-/HTMLDataGridRowElement
+JavaScript/cl/-/HTMLDataListElement
+C/macro/-/htmlDefaultSubelement
+JavaScript/data/DOMWindow/HTMLDirectoryElement
+JavaScript/cl/-/HTMLDirectoryElement
+JavaScript/data/DOMWindow/HTMLDivElement
+JavaScript/cl/-/HTMLDivElement
+JavaScript/data/DOMWindow/HTMLDListElement
+JavaScript/cl/-/HTMLDListElement
+JavaScript/data/DOMWindow/HTMLDocument
+JavaScript/cl/-/HTMLDocument
+JavaScript/data/DOMWindow/HTMLElement
+JavaScript/cl/-/HTMLElement
+C/macro/-/htmlElementAllowedHereDesc
+JavaScript/data/DOMWindow/HTMLEmbedElement
+JavaScript/cl/-/HTMLEmbedElement
+JavaScript/data/DOMWindow/HTMLFieldSetElement
+JavaScript/cl/-/HTMLFieldSetElement
+JavaScript/data/DOMWindow/HTMLFontElement
+JavaScript/cl/-/HTMLFontElement
+JavaScript/data/HTMLScriptElement/htmlFor
+JavaScript/data/HTMLLabelElement/htmlFor
+JavaScript/data/DOMWindow/HTMLFormElement
+JavaScript/cl/-/HTMLFormElement
+JavaScript/data/DOMWindow/HTMLFrameElement
+JavaScript/cl/-/HTMLFrameElement
+JavaScript/data/DOMWindow/HTMLFrameSetElement
+JavaScript/cl/-/HTMLFrameSetElement
+JavaScript/data/DOMWindow/HTMLHeadElement
+JavaScript/cl/-/HTMLHeadElement
+JavaScript/data/DOMWindow/HTMLHeadingElement
+JavaScript/cl/-/HTMLHeadingElement
+JavaScript/data/DOMWindow/HTMLHRElement
+JavaScript/cl/-/HTMLHRElement
+JavaScript/data/DOMWindow/HTMLHtmlElement
+JavaScript/cl/-/HTMLHtmlElement
+JavaScript/data/DOMWindow/HTMLIFrameElement
+JavaScript/cl/-/HTMLIFrameElement
+JavaScript/data/DOMWindow/HTMLImageElement
+JavaScript/cl/-/HTMLImageElement
+JavaScript/data/DOMWindow/HTMLInputElement
+JavaScript/cl/-/HTMLInputElement
+JavaScript/data/DOMWindow/HTMLIsIndexElement
+JavaScript/cl/-/HTMLIsIndexElement
+JavaScript/data/DOMWindow/HTMLLabelElement
+JavaScript/cl/-/HTMLLabelElement
+JavaScript/data/DOMWindow/HTMLLegendElement
+JavaScript/cl/-/HTMLLegendElement
+JavaScript/data/DOMWindow/HTMLLIElement
+JavaScript/cl/-/HTMLLIElement
+JavaScript/data/DOMWindow/HTMLLinkElement
+JavaScript/cl/-/HTMLLinkElement
+JavaScript/data/DOMWindow/HTMLMapElement
+JavaScript/cl/-/HTMLMapElement
+JavaScript/data/DOMWindow/HTMLMarqueeElement
+JavaScript/cl/-/HTMLMarqueeElement
+JavaScript/data/DOMWindow/HTMLMediaElement
+JavaScript/cl/-/HTMLMediaElement
+JavaScript/data/DOMWindow/HTMLMenuElement
+JavaScript/cl/-/HTMLMenuElement
+JavaScript/data/DOMWindow/HTMLMetaElement
+JavaScript/cl/-/HTMLMetaElement
+JavaScript/data/DOMWindow/HTMLMeterElement
+JavaScript/cl/-/HTMLMeterElement
+JavaScript/data/DOMWindow/HTMLModElement
+JavaScript/cl/-/HTMLModElement
+JavaScript/data/DOMWindow/HTMLObjectElement
+JavaScript/cl/-/HTMLObjectElement
+JavaScript/data/DOMWindow/HTMLOListElement
+JavaScript/cl/-/HTMLOListElement
+JavaScript/data/DOMWindow/HTMLOptGroupElement
+JavaScript/cl/-/HTMLOptGroupElement
+JavaScript/data/DOMWindow/HTMLOptionElement
+JavaScript/cl/-/HTMLOptionElement
+JavaScript/cl/-/HTMLOptionsCollection
+JavaScript/data/DOMWindow/HTMLParagraphElement
+JavaScript/cl/-/HTMLParagraphElement
+JavaScript/data/DOMWindow/HTMLParamElement
+JavaScript/cl/-/HTMLParamElement
+C/tdef/-/htmlParserOption
+JavaScript/data/DOMWindow/HTMLPreElement
+JavaScript/cl/-/HTMLPreElement
+JavaScript/data/DOMWindow/HTMLProgressElement
+JavaScript/cl/-/HTMLProgressElement
+JavaScript/data/DOMWindow/HTMLQuoteElement
+JavaScript/cl/-/HTMLQuoteElement
+C/macro/-/htmlRequiredAttrs
+JavaScript/data/DOMWindow/HTMLScriptElement
+JavaScript/cl/-/HTMLScriptElement
+JavaScript/data/DOMWindow/HTMLSelectElement
+JavaScript/cl/-/HTMLSelectElement
+JavaScript/cl/-/HTMLSourceElement
+Objective-C/instp/PSContent/HTMLString
+JavaScript/data/DOMWindow/HTMLStyleElement
+JavaScript/cl/-/HTMLStyleElement
+JavaScript/data/DOMWindow/HTMLTableCaptionElement
+JavaScript/cl/-/HTMLTableCaptionElement
+JavaScript/data/DOMWindow/HTMLTableCellElement
+JavaScript/cl/-/HTMLTableCellElement
+JavaScript/data/DOMWindow/HTMLTableColElement
+JavaScript/cl/-/HTMLTableColElement
+JavaScript/data/DOMWindow/HTMLTableElement
+JavaScript/cl/-/HTMLTableElement
+JavaScript/data/DOMWindow/HTMLTableRowElement
+JavaScript/cl/-/HTMLTableRowElement
+JavaScript/data/DOMWindow/HTMLTableSectionElement
+JavaScript/cl/-/HTMLTableSectionElement
+JavaScript/data/DOMWindow/HTMLTextAreaElement
+JavaScript/cl/-/HTMLTextAreaElement
+JavaScript/data/DOMWindow/HTMLTitleElement
+JavaScript/cl/-/HTMLTitleElement
+JavaScript/data/DOMWindow/HTMLUListElement
+JavaScript/cl/-/HTMLUListElement
+JavaScript/data/DOMWindow/HTMLVideoElement
+JavaScript/cl/-/HTMLVideoElement
+C/func/-/htonl
+C/func/-/htons
+Objective-C/instm/NSURLRequest/HTTPBody
+Objective-C/instm/NSURLRequest/HTTPBodyStream
+JavaScript/data/HTMLMetaElement/httpEquiv
+Objective-C/instm/NSURLRequest/HTTPMethod
+Objective-C/instm/NSURLRequest/HTTPShouldHandleCookies
+C/tag/-/HubCharacteristics
+C/tag/-/HubFeatures
+C/tag/-/HubPortStatus
+C/tag/-/HubStatus
+Objective-C/instm/NSColor/hueComponent
+C/tdef/-/HVolumeParam
+Objective-C/instm/NSATSTypesetter/hyphenationFactor
+Objective-C/instm/NSLayoutManager/hyphenationFactor
+Objective-C/instm/NSTypesetter/hyphenationFactor
+Objective-C/instm/NSParagraphStyle/hyphenationFactor
+Objective-C/instm/NSATSTypesetter/hyphenationFactorForGlyphAtIndex:
+Objective-C/instm/NSTypesetter/hyphenationFactorForGlyphAtIndex:
+Objective-C/instm/NSATSTypesetter/hyphenCharacterForGlyphAtIndex:
+Objective-C/instm/NSTypesetter/hyphenCharacterForGlyphAtIndex:
+C/func/-/hypot
+C/func/-/hypotf
+C/func/-/hypotl
+C/func/-/i2d_ASN1_OBJECT
+C/func/-/i2d_DHparams
+C/func/-/i2d_DSA_PUBKEY
+C/func/-/i2d_DSA_SIG
+C/func/-/i2d_DSAparams
+C/func/-/i2d_DSAPrivateKey
+C/func/-/i2d_DSAPublicKey
+C/func/-/i2d_ECDSA_SIG
+C/func/-/i2d_Netscape_RSA
+C/func/-/i2d_PKCS8PrivateKey_bio
+C/func/-/i2d_PKCS8PrivateKey_fp
+C/func/-/i2d_PKCS8PrivateKey_nid_bio
+C/func/-/i2d_PKCS8PrivateKey_nid_fp
+C/func/-/i2d_RSA_PUBKEY
+C/func/-/i2d_RSAPrivateKey
+C/func/-/i2d_RSAPublicKey
+C/func/-/i2d_SSL_SESSION
+C/func/-/i2d_X509
+C/func/-/i2d_X509_ALGOR
+C/func/-/i2d_X509_bio
+C/func/-/i2d_X509_CRL
+C/func/-/i2d_X509_CRL_bio
+C/func/-/i2d_X509_CRL_fp
+C/func/-/i2d_X509_fp
+C/func/-/i2d_X509_NAME
+C/func/-/i2d_X509_REQ
+C/func/-/i2d_X509_REQ_bio
+C/func/-/i2d_X509_REQ_fp
+C/func/-/i2d_X509_SIG
+C/func/-/i386_get_ldt
+C/func/-/i386_set_ldt
+-/writerid/-/IB3_User_Guide_Introduction
+C/macro/-/IBAction
+C/data/-/IBAdditionalLocalizableKeyPaths
+C/data/-/IBAttributeKeyPaths
+Objective-C/instm/NSObject/ibAwakeInDesignableDocument:
+Objective-C/instm/NSView/ibBaselineAtIndex:
+Objective-C/instm/NSView/ibBaselineCount
+Objective-C/instm/NSObject/ibCanRemoveChildren:
+Objective-C/instm/NSObject/ibDefaultChildren
+Objective-C/instm/NSObject/ibDefaultImage
+Objective-C/instm/NSObject/ibDefaultLabel
+Objective-C/instm/NSView/ibDesignableContentView
+Objective-C/instm/NSObject/ibDidAddToDesignableDocument:
+Objective-C/instm/NSObject/ibDidRemoveFromDesignableDocument:
+C/tdef/-/IBDirection
+Objective-C/cl/-/IBDocument
+Objective-C/clm/NSCursor/IBeamCursor
+C/tdef/-/IBInset
+Objective-C/cl/-/IBInspector
+Objective-C/instm/NSObject/ibIsChildInitiallySelectable:
+Objective-C/instm/NSObject/ibIsChildViewUserMovable:
+Objective-C/instm/NSObject/ibIsChildViewUserSizable:
+Objective-C/instm/NSView/ibLayoutInset
+C/data/-/IBLocalizableGeometryKeyPaths
+C/data/-/IBLocalizableStringKeyPaths
+Objective-C/instm/NSView/ibMaximumSize
+C/econst/-/IBMaxXDirection
+C/econst/-/IBMaxXMaxYDirection
+C/econst/-/IBMaxXMinYDirection
+C/econst/-/IBMaxYDirection
+Objective-C/instm/NSView/ibMinimumSize
+C/econst/-/IBMinXDirection
+C/econst/-/IBMinXMaxYDirection
+C/econst/-/IBMinXMinYDirection
+C/econst/-/IBMinYDirection
+C/econst/-/IBNoDirection
+Objective-C/instm/NSObject/ibObjectAtLocation:inWindowController:
+C/macro/-/IBOutlet
+Objective-C/cl/-/IBPlugin
+Objective-C/instm/NSObject/ibPopulateAttributeInspectorClasses:
+Objective-C/instm/NSObject/ibPopulateKeyPaths:
+Objective-C/instm/NSObject/ibPopulateSizeInspectorClasses:
+Objective-C/instm/NSView/ibPreferredDesignSize
+Objective-C/instm/NSView/ibPreferredResizeDirection
+Objective-C/instm/NSObject/ibRectForChild:inWindowController:
+Objective-C/instm/NSObject/ibRemoveChildren:
+C/data/-/IBToManyRelationshipKeyPaths
+C/data/-/IBToOneRelationshipKeyPaths
+C/func/-/ICACloseSession
+C/tdef/-/ICACloseSessionPB
+C/func/-/ICACopyObjectData
+C/tdef/-/ICACopyObjectDataPB
+C/func/-/ICACopyObjectPropertyDictionary
+C/tdef/-/ICACopyObjectPropertyDictionaryPB
+C/func/-/ICACopyObjectThumbnail
+C/tdef/-/ICACopyObjectThumbnailPB
+C/func/-/ICADownloadFile
+C/tdef/-/ICADownloadFilePB
+C/func/-/ICAGetDeviceList
+C/tdef/-/ICAGetDeviceListPB
+C/tdef/-/ICAHeader
+C/func/-/ICAImportImage
+C/tdef/-/ICAImportImagePB
+C/func/-/ICALoadDeviceModule
+C/tdef/-/ICALoadDeviceModulePB
+C/tdef/-/ICAMessage
+C/tdef/-/ICAObjectInfo
+C/func/-/ICAObjectSendMessage
+C/tdef/-/ICAObjectSendMessagePB
+C/func/-/ICAOpenSession
+C/tdef/-/ICAOpenSessionPB
+C/tdef/-/ICAPTPEventDataset
+C/tdef/-/ICAPTPPassThroughPB
+C/func/-/ICARegisterForEventNotification
+C/tdef/-/ICARegisterForEventNotificationPB
+C/func/-/ICAScannerCloseSession
+C/tdef/-/ICAScannerCloseSessionPB
+C/func/-/ICAScannerGetParameters
+C/tdef/-/ICAScannerGetParametersPB
+C/func/-/ICAScannerInitialize
+C/tdef/-/ICAScannerInitializePB
+C/func/-/ICAScannerOpenSession
+C/tdef/-/ICAScannerOpenSessionPB
+C/func/-/ICAScannerSetParameters
+C/tdef/-/ICAScannerSetParametersPB
+C/func/-/ICAScannerStart
+C/tdef/-/ICAScannerStartPB
+C/func/-/ICAScannerStatus
+C/tdef/-/ICAScannerStatusPB
+C/func/-/ICAShowDeviceBrowser
+C/func/-/ICAUnloadDeviceModule
+C/tdef/-/ICAUnloadDeviceModulePB
+C/func/-/ICAUploadFile
+C/tdef/-/ICAUploadFilePB
+Objective-C/instm/NSColorSpace/ICCProfileData
+C/tdef/-/ICD_DisposeObjectPB
+C/tdef/-/ICD_NewObjectPB
+C/func/-/ICDDisposeObject
+C/tdef/-/ICDHeader
+C/func/-/ICDNewObject
+C/tag/-/ICMAlignmentProcRecord
+C/tdef/-/ICMAlignmentProcRecordPtr
+C/tag/-/ICMCompletionProcRecord
+C/tdef/-/ICMCompletionProcRecordPtr
+C/tdef/-/ICMConvertDataFormatProc
+C/tdef/-/ICMConvertDataFormatUPP
+C/tag/-/ICMDataProcRecord
+C/tdef/-/ICMDataProcRecordPtr
+C/func/-/ICMDecompressComplete
+C/func/-/ICMDecompressCompleteS
+C/tag/-/ICMFlushProcRecord
+C/tdef/-/ICMFlushProcRecordPtr
+C/econst/-/icmFrameTimeHasDecodeTime
+C/econst/-/icmFrameTimeHasVirtualStartTimeAndDuration
+C/tag/-/ICMFrameTimeRecord
+C/func/-/ICMGetPixelFormatInfo
+C/tdef/-/ICMMemoryDisposedProc
+C/tdef/-/ICMMemoryDisposedUPP
+C/tag/-/ICMPixelFormatInfo
+C/tdef/-/ICMPixelFormatInfoPtr
+C/tag/-/ICMProgressProcRecord
+C/tdef/-/ICMProgressProcRecordPtr
+C/func/-/ICMSequenceGetChainMember
+C/func/-/ICMSequenceGetInfo
+C/func/-/ICMSequenceLockBits
+C/func/-/ICMSequenceSetInfo
+C/func/-/ICMSequenceUnlockBits
+C/func/-/ICMSetPixelFormatInfo
+C/func/-/ICMShieldSequenceCursor
+Objective-C/instm/WebHistoryItem/icon
+Objective-C/instm/NSAlert/icon
+Objective-C/instp/NSRunningApplication/icon
+Objective-C/instm/NSRunningApplication/icon
+Objective-C/instm/NSWorkspace/iconForFile:
+Objective-C/instm/NSWorkspace/iconForFiles:
+Objective-C/instm/NSWorkspace/iconForFileType:
+Objective-C/instm/IKCameraDeviceView/iconSize
+Objective-C/instp/IKCameraDeviceView/iconSize
+Objective-C/instm/PDFAnnotationText/iconType
+Objective-C/instp/PSFeed/iconURL
+C/func/-/iconv
+C/func/-/iconv_close
+C/func/-/iconv_open
+C/func/-/iconvctl
+JavaScript/data/DataGridColumn/id
+JavaScript/data/HTMLElement/id
+JavaScript/data/SVGElement/id
+C/macro/-/ID_TYPE_GID
+C/macro/-/ID_TYPE_GROUPNAME
+C/macro/-/ID_TYPE_GSS_EXPORT_NAME
+C/macro/-/ID_TYPE_KERBEROS
+C/macro/-/ID_TYPE_SID
+C/macro/-/ID_TYPE_UID
+C/macro/-/ID_TYPE_USERNAME
+C/macro/-/ID_TYPE_X509_DN
+JavaScript/cl/-/IDBAny
+JavaScript/cl/-/IDBDatabaseError
+JavaScript/cl/-/IDBDatabaseException
+JavaScript/cl/-/IDBDatabaseRequest
+JavaScript/cl/-/IDBErrorEvent
+JavaScript/cl/-/IDBEvent
+JavaScript/cl/-/IDBRequest
+JavaScript/cl/-/IDBSuccessEvent
+C/func/-/idcok
+Objective-C/instm/QCComposition/identifier
+Objective-C/instm/NSTableColumn/identifier
+Objective-C/instm/NSPersistentStore/identifier
+Objective-C/instm/NSTabViewItem/identifier
+Objective-C/instm/WebPreferences/identifier
+Objective-C/instp/PSEntry/identifier
+Objective-C/instp/PSFeed/identifier
+Objective-C/instm/XGResource/identifier
+Objective-C/instm/NSToolbar/identifier
+JavaScript/data/Counter/identifier
+JavaScript/data/Touch/identifier
+Objective-C/instm/ABMultiValue/identifierAtIndex:
+Objective-C/instm/NSObject/identifiersForRecordsToDeleteForEntityName:moreComing:error:
+Objective-C/instm/CBIdentityPicker/identities
+Objective-C/instp/NSTouch/identity
+Objective-C/instm/NSTouch/identity
+Objective-C/instm/NSURLCredential/identity
+Objective-C/instm/SFChooseIdentityPanel/identity
+Objective-C/clm/CBIdentityAuthority/identityAuthorityWithCSIdentityAuthority:
+Objective-C/clm/CBIdentity/identityWithCSIdentity:
+Objective-C/clm/CBIdentity/identityWithName:authority:
+Objective-C/clm/CBIdentity/identityWithPersistentReference:
+Objective-C/clm/CBIdentity/identityWithUUIDString:authority:
+JavaScript/clconst/DOMApplicationCache/IDLE
+C/func/-/idlok
+Objective-C/instp/CWNetwork/ieData
+C/func/-/if
+C/func/-/if_freenameindex
+C/func/-/if_indextoname
+C/func/-/if_nameindex
+C/func/-/if_nametoindex
+C/func/-/ifaddr_address
+C/func/-/ifaddr_address_family
+C/func/-/ifaddr_dstaddress
+C/func/-/ifaddr_findbestforaddr
+C/func/-/ifaddr_ifnet
+C/func/-/ifaddr_netmask
+C/func/-/ifaddr_reference
+C/func/-/ifaddr_release
+C/func/-/ifaddr_withaddr
+C/func/-/ifaddr_withdstaddr
+C/func/-/ifaddr_withnet
+C/func/-/ifaddr_withroute
+C/tdef/-/iff_detached_func
+C/tdef/-/iff_event_func
+C/tag/-/iff_filter
+C/tdef/-/iff_input_func
+C/tdef/-/iff_ioctl_func
+C/tdef/-/iff_output_func
+C/func/-/iflt_attach
+C/func/-/iflt_detach
+C/func/-/ifmaddr_address
+C/func/-/ifmaddr_ifnet
+C/func/-/ifmaddr_lladdress
+C/func/-/ifmaddr_reference
+C/func/-/ifmaddr_release
+C/func/-/ifnet_add_multicast
+C/tdef/-/ifnet_add_proto_func
+C/func/-/ifnet_addrlen
+C/func/-/ifnet_allocate
+C/func/-/ifnet_attach
+C/tag/-/ifnet_attach_proto_param
+C/func/-/ifnet_attach_protocol
+C/func/-/ifnet_attach_protocol_v2
+C/func/-/ifnet_baudrate
+C/tdef/-/ifnet_check_multi
+C/econst/Interface/IFNET_CSUM_FRAGMENT
+C/econst/Interface/IFNET_CSUM_IP
+C/econst/Interface/IFNET_CSUM_TCP
+C/econst/Interface/IFNET_CSUM_UDP
+C/tdef/-/ifnet_del_proto_func
+C/tag/-/ifnet_demux_desc
+C/tdef/-/ifnet_demux_func
+C/func/-/ifnet_detach
+C/func/-/ifnet_detach_protocol
+C/tdef/-/ifnet_detached_func
+C/func/-/ifnet_event
+C/tdef/-/ifnet_event_func
+C/func/-/ifnet_family
+C/econst/Interface/IFNET_FAMILY_ANY
+C/econst/Interface/IFNET_FAMILY_BOND
+C/econst/Interface/IFNET_FAMILY_DISC
+C/econst/Interface/IFNET_FAMILY_ETHERNET
+C/econst/Interface/IFNET_FAMILY_FAITH
+C/econst/Interface/IFNET_FAMILY_FIREWIRE
+C/econst/Interface/IFNET_FAMILY_GIF
+C/econst/Interface/IFNET_FAMILY_LOOPBACK
+C/econst/Interface/IFNET_FAMILY_MDECAP
+C/econst/Interface/IFNET_FAMILY_PPP
+C/econst/Interface/IFNET_FAMILY_PVC
+C/econst/Interface/IFNET_FAMILY_SLIP
+C/econst/Interface/IFNET_FAMILY_STF
+C/tdef/-/ifnet_family_t
+C/econst/Interface/IFNET_FAMILY_TUN
+C/econst/Interface/IFNET_FAMILY_VLAN
+C/func/-/ifnet_find_by_name
+C/func/-/ifnet_flags
+C/tdef/-/ifnet_framer_func
+C/func/-/ifnet_free_address_list
+C/func/-/ifnet_free_multicast_list
+C/func/-/ifnet_get_address_list
+C/func/-/ifnet_get_address_list_family
+C/func/-/ifnet_get_link_mib_data
+C/func/-/ifnet_get_link_mib_data_length
+C/func/-/ifnet_get_multicast_list
+C/func/-/ifnet_get_tso_mtu
+C/func/-/ifnet_get_wake_flags
+C/func/-/ifnet_hdrlen
+C/func/-/ifnet_index
+C/tag/-/ifnet_init_params
+C/func/-/ifnet_input
+C/func/-/ifnet_interface_family_find
+C/func/-/ifnet_ioctl
+C/tdef/-/ifnet_ioctl_func
+C/econst/Interface/IFNET_IP_FRAGMENT
+C/func/-/ifnet_lastchange
+C/func/-/ifnet_list_free
+C/func/-/ifnet_list_get
+C/func/-/ifnet_lladdr_copy_bytes
+C/func/-/ifnet_llbroadcast_copy_bytes
+C/func/-/ifnet_metric
+C/func/-/ifnet_mtu
+C/econst/Interface/IFNET_MULTIPAGES
+C/func/-/ifnet_name
+C/func/-/ifnet_offload
+C/tdef/-/ifnet_offload_t
+C/func/-/ifnet_output
+C/tdef/-/ifnet_output_func
+C/func/-/ifnet_output_raw
+C/func/-/ifnet_reference
+C/func/-/ifnet_release
+C/func/-/ifnet_remove_multicast
+C/func/-/ifnet_resolve_multicast
+C/func/-/ifnet_set_addrlen
+C/func/-/ifnet_set_baudrate
+C/tdef/-/ifnet_set_bpf_tap
+C/func/-/ifnet_set_flags
+C/func/-/ifnet_set_hdrlen
+C/func/-/ifnet_set_link_mib_data
+C/func/-/ifnet_set_lladdr
+C/func/-/ifnet_set_metric
+C/func/-/ifnet_set_mtu
+C/func/-/ifnet_set_offload
+C/func/-/ifnet_set_promiscuous
+C/func/-/ifnet_set_stat
+C/func/-/ifnet_set_tso_mtu
+C/func/-/ifnet_set_wake_flags
+C/func/-/ifnet_softc
+C/func/-/ifnet_stat
+C/func/-/ifnet_stat_increment
+C/func/-/ifnet_stat_increment_in
+C/func/-/ifnet_stat_increment_out
+C/tag/-/ifnet_stat_increment_param
+C/tag/-/ifnet_stats_param
+C/func/-/ifnet_touch_lastchange
+C/econst/Interface/IFNET_TSO_IPV4
+C/econst/Interface/IFNET_TSO_IPV6
+C/func/-/ifnet_type
+C/func/-/ifnet_unit
+C/econst/Interface/IFNET_VLAN_MTU
+C/econst/Interface/IFNET_VLAN_TAGGING
+C/econst/Interface/IFNET_WAKE_ON_MAGIC_PACKET
+C/tdef/-/ignorableWhitespaceSAXFunc
+Objective-C/intfm/WebPolicyDecisionListener/ignore
+Objective-C/instm/NSSpellChecker/ignoredWordsInSpellDocumentWithTag:
+Objective-C/instm/NSObject/ignoreModifierKeysWhileDragging
+Objective-C/clm/NSColor/ignoresAlpha
+Objective-C/instm/AMAction/ignoresInput
+Objective-C/instm/NSWindow/ignoresMouseEvents
+Objective-C/instm/NSControl/ignoresMultiClick
+Objective-C/intfm/NSIgnoreMisspelledWords/ignoreSpelling:
+Objective-C/instm/NSSpellChecker/ignoreWord:inSpellDocumentWithTag:
+C/data/-/IK_ApertureBundleIdentifier
+C/data/-/IK_iPhotoBundleIdentifier
+C/data/-/IK_MailBundleIdentifier
+Objective-C/cl/-/IKCameraDeviceView
+Objective-C/intf/-/IKCameraDeviceViewDelegate
+C/tdef/-/IKCameraDeviceViewDisplayMode
+C/econst/-/IKCameraDeviceViewDisplayModeIcon
+C/econst/-/IKCameraDeviceViewDisplayModeTable
+C/tdef/-/IKCameraDeviceViewTransferMode
+C/econst/-/IKCameraDeviceViewTransferModeFileBased
+C/econst/-/IKCameraDeviceViewTransferModeMemoryBased
+C/econst/-/IKCellsStyleNone
+C/econst/-/IKCellsStyleOutlined
+C/econst/-/IKCellsStyleShadowed
+C/econst/-/IKCellsStyleSubtitled
+C/econst/-/IKCellsStyleTitled
+Objective-C/cl/-/IKDeviceBrowserView
+Objective-C/intf/-/IKDeviceBrowserViewDelegate
+C/tdef/-/IKDeviceBrowserViewDisplayMode
+C/econst/-/IKDeviceBrowserViewDisplayModeIcon
+C/econst/-/IKDeviceBrowserViewDisplayModeOutline
+C/econst/-/IKDeviceBrowserViewDisplayModeTable
+C/data/-/IKFilterBrowserDefaultInputImage
+C/data/-/IKFilterBrowserExcludeCategories
+C/data/-/IKFilterBrowserExcludeFilters
+C/data/-/IKFilterBrowserFilterDoubleClickNotification
+C/data/-/IKFilterBrowserFilterSelectedNotification
+Objective-C/cl/-/IKFilterBrowserPanel
+C/data/-/IKFilterBrowserShowCategories
+C/data/-/IKFilterBrowserShowPreview
+Objective-C/cl/-/IKFilterBrowserView
+C/data/-/IKFilterBrowserWillPreviewFilterNotification
+Objective-C/intf/-/IKFilterCustomUIProvider
+Objective-C/cl/-/IKFilterUIView
+C/econst/-/IKGroupBezelStyle
+C/econst/-/IKGroupDisclosureStyle
+C/data/-/IKImageBrowserBackgroundColorKey
+Objective-C/cl/-/IKImageBrowserCell
+C/data/-/IKImageBrowserCellBackgroundLayer
+C/data/-/IKImageBrowserCellForegroundLayer
+C/data/-/IKImageBrowserCellPlaceHolderLayer
+C/data/-/IKImageBrowserCellSelectionLayer
+C/data/-/IKImageBrowserCellsHighlightedTitleAttributesKey
+C/data/-/IKImageBrowserCellsOutlineColorKey
+C/data/-/IKImageBrowserCellsSubtitleAttributesKey
+C/tdef/-/IKImageBrowserCellState
+C/data/-/IKImageBrowserCellsTitleAttributesKey
+C/data/-/IKImageBrowserCGImageRepresentationType
+C/data/-/IKImageBrowserCGImageSourceRepresentationType
+Objective-C/cat/-/IKImageBrowserDataSource
+Objective-C/cat/-/IKImageBrowserDelegate
+C/econst/-/IKImageBrowserDropBefore
+C/econst/-/IKImageBrowserDropOn
+C/tdef/-/IKImageBrowserDropOperation
+C/data/-/IKImageBrowserGroupBackgroundColorKey
+C/data/-/IKImageBrowserGroupFooterLayer
+C/data/-/IKImageBrowserGroupHeaderLayer
+C/data/-/IKImageBrowserGroupRangeKey
+C/data/-/IKImageBrowserGroupStyleKey
+C/data/-/IKImageBrowserGroupTitleKey
+C/data/-/IKImageBrowserIconRefPathRepresentationType
+C/data/-/IKImageBrowserIconRefRepresentationType
+Objective-C/cat/-/IKImageBrowserItem
+C/data/-/IKImageBrowserNSBitmapImageRepresentationType
+C/data/-/IKImageBrowserNSDataRepresentationType
+C/data/-/IKImageBrowserNSImageRepresentationType
+C/data/-/IKImageBrowserNSURLRepresentationType
+C/data/-/IKImageBrowserPathRepresentationType
+C/data/-/IKImageBrowserPDFPageRepresentationType
+C/data/-/IKImageBrowserQCCompositionPathRepresentationType
+C/data/-/IKImageBrowserQCCompositionRepresentationType
+C/data/-/IKImageBrowserQTMoviePathRepresentationType
+C/data/-/IKImageBrowserQTMovieRepresentationType
+C/data/-/IKImageBrowserQuickLookPathRepresentationType
+C/data/-/IKImageBrowserSelectionColorKey
+Objective-C/cl/-/IKImageBrowserView
+Objective-C/cl/-/IKImageEditPanel
+Objective-C/intf/-/IKImageEditPanelDataSource
+C/econst/-/IKImageStateInvalid
+C/econst/-/IKImageStateNoImage
+C/econst/-/IKImageStateReady
+Objective-C/cl/-/IKImageView
+C/data/-/IKOverlayTypeBackground
+C/data/-/IKOverlayTypeImage
+Objective-C/cl/-/IKPictureTaker
+C/data/-/IKPictureTakerAllowsEditingKey
+C/data/-/IKPictureTakerAllowsFileChoosingKey
+C/data/-/IKPictureTakerAllowsVideoCaptureKey
+C/data/-/IKPictureTakerCropAreaSizeKey
+C/data/-/IKPictureTakerImageTransformsKey
+C/data/-/IKPictureTakerInformationalTextKey
+C/data/-/IKPictureTakerOutputImageMaxSizeKey
+C/data/-/IKPictureTakerRemainOpenAfterValidateKey
+C/data/-/IKPictureTakerShowAddressBookPictureKey
+C/data/-/IKPictureTakerShowEffectsKey
+C/data/-/IKPictureTakerShowEmptyPictureKey
+C/data/-/IKPictureTakerUpdateRecentPictureKey
+Objective-C/cl/-/IKSaveOptions
+Objective-C/cl/-/IKScannerDeviceView
+Objective-C/intf/-/IKScannerDeviceViewDelegate
+C/tdef/-/IKScannerDeviceViewDisplayMode
+C/econst/-/IKScannerDeviceViewDisplayModeAdvanced
+C/econst/-/IKScannerDeviceViewDisplayModeSimple
+C/tdef/-/IKScannerDeviceViewTransferMode
+C/econst/-/IKScannerDeviceViewTransferModeFileBased
+C/econst/-/IKScannerDeviceViewTransferModeMemoryBased
+Objective-C/cl/-/IKSlideshow
+C/data/-/IKSlideshowAudioFile
+Objective-C/intf/-/IKSlideshowDataSource
+C/data/-/IKSlideshowModeImages
+C/data/-/IKSlideshowModeOther
+C/data/-/IKSlideshowModePDF
+C/data/-/IKSlideshowPDFDisplayBox
+C/data/-/IKSlideshowPDFDisplayMode
+C/data/-/IKSlideshowPDFDisplaysAsBook
+C/data/-/IKSlideshowScreen
+C/data/-/IKSlideshowStartIndex
+C/data/-/IKSlideshowStartPaused
+C/data/-/IKSlideshowWrapAround
+C/data/-/IKToolModeAnnotate
+C/data/-/IKToolModeCrop
+C/data/-/IKToolModeMove
+C/data/-/IKToolModeNone
+C/data/-/IKToolModeRotate
+C/data/-/IKToolModeSelect
+C/data/-/IKToolModeSelectEllipse
+C/data/-/IKToolModeSelectLasso
+C/data/-/IKToolModeSelectRect
+C/data/-/IKUIFlavorAllowFallback
+C/data/-/IKUImaxSize
+C/data/-/IKUISizeFlavor
+C/data/-/IKUISizeMini
+C/data/-/IKUISizeRegular
+C/data/-/IKUISizeSmall
+Objective-C/clm/NSCharacterSet/illegalCharacterSet
+C/func/-/ilogb
+C/func/-/ilogbf
+C/func/-/ilogbl
+Objective-C/instm/NSToolbarItem/image
+Objective-C/instm/NSPathComponentCell/image
+Objective-C/instm/NSSlider/image
+Objective-C/instm/NSRulerMarker/image
+Objective-C/instm/CIImageAccumulator/image
+Objective-C/instm/NSImageView/image
+Objective-C/instm/NSStatusItem/image
+Objective-C/instm/CBIdentity/image
+Objective-C/instm/NSBrowserCell/image
+Objective-C/instm/NSButton/image
+Objective-C/instm/NSCursor/image
+Objective-C/instm/NSMenuItem/image
+Objective-C/instm/DOMElement/image
+Objective-C/intfm/IKImageEditPanelDataSource/image
+Objective-C/binding/NSButtonCell/image
+Objective-C/binding/NSMenuItem/image
+Objective-C/binding/NSButton/image
+Objective-C/instm/NSCell/image
+Objective-C/instm/IKImageView/image
+JavaScript/data/DOMWindow/Image
+Objective-C/intfm/NSImageDelegate/image:didLoadPartOfRepresentation:withValidRows:
+Objective-C/intfm/NSImageDelegate/image:didLoadRepresentation:withStatus:
+Objective-C/intfm/NSImageDelegate/image:didLoadRepresentationHeader:
+Objective-C/intfm/NSImageDelegate/image:willLoadRepresentation:
+Objective-C/instm/NSPrintInfo/imageablePageBounds
+Objective-C/clm/CIImageAccumulator/imageAccumulatorWithExtent:format:
+Objective-C/instm/NSImageView/imageAlignment
+Objective-C/instm/IKImageBrowserCell/imageAlignment
+Objective-C/instm/NSImageCell/imageAlignment
+Objective-C/instm/NSMenuView/imageAndTitleOffset
+Objective-C/instm/NSMenuView/imageAndTitleWidth
+Objective-C/intfm/QCPlugInOutputImageProvider/imageBounds
+Objective-C/intfm/QCPlugInInputImageSource/imageBounds
+Objective-C/instm/NSObject/imageBrowser:backgroundWasRightClickedWithEvent:
+Objective-C/instm/NSObject/imageBrowser:cellWasDoubleClickedAtIndex:
+Objective-C/instm/NSObject/imageBrowser:cellWasRightClickedAtIndex:withEvent:
+Objective-C/instm/NSObject/imageBrowser:groupAtIndex:
+Objective-C/instm/NSObject/imageBrowser:itemAtIndex:
+Objective-C/instm/NSObject/imageBrowser:moveItemsAtIndexes:toIndex:
+Objective-C/instm/NSObject/imageBrowser:removeItemsAtIndexes:
+Objective-C/instm/NSObject/imageBrowser:writeItemsAtIndexes:toPasteboard:
+Objective-C/instm/NSObject/imageBrowserSelectionDidChange:
+Objective-C/instm/IKImageBrowserCell/imageBrowserView
+Objective-C/instm/CIImage/imageByApplyingTransform:
+Objective-C/instm/CIImage/imageByCroppingToRect:
+C/func/-/ImageByteOrder
+C/func/-/ImageCodecBandCompress
+C/func/-/ImageCodecBandDecompress
+C/func/-/ImageCodecBeginBand
+C/func/-/ImageCodecBeginPass
+C/func/-/ImageCodecBusy
+C/func/-/ImageCodecCancelTrigger
+C/func/-/ImageCodecCompleteFrame
+C/func/-/ImageCodecCreateStandardParameterDialog
+C/func/-/ImageCodecDecodeBand
+C/func/-/ImageCodecDismissStandardParameterDialog
+C/func/-/ImageCodecDisposeImageGWorld
+C/func/-/ImageCodecDisposeMemory
+C/func/-/ImageCodecDITLEvent
+C/func/-/ImageCodecDITLInstall
+C/func/-/ImageCodecDITLItem
+C/func/-/ImageCodecDITLRemove
+C/func/-/ImageCodecDITLValidateInput
+C/func/-/ImageCodecDrawBand
+C/func/-/ImageCodecDroppingFrame
+C/func/-/ImageCodecEffectBegin
+C/func/-/ImageCodecEffectCancel
+C/func/-/ImageCodecEffectConvertEffectSourceToFormat
+C/func/-/ImageCodecEffectDisposeSMPTEFrame
+C/func/-/ImageCodecEffectGetSpeed
+C/func/-/ImageCodecEffectPrepareSMPTEFrame
+C/func/-/ImageCodecEffectRenderFrame
+C/func/-/ImageCodecEffectRenderSMPTEFrame
+C/func/-/ImageCodecEffectSetup
+C/func/-/ImageCodecEncodeFrame
+C/func/-/ImageCodecEndBand
+C/func/-/ImageCodecExtractAndCombineFields
+C/func/-/ImageCodecFlush
+C/func/-/ImageCodecFlushFrame
+C/func/-/ImageCodecGetBaseMPWorkFunction
+C/func/-/ImageCodecGetCodecInfo
+C/func/-/ImageCodecGetCompressedImageSize
+C/func/-/ImageCodecGetCompressionTime
+C/func/-/ImageCodecGetDecompressLatency
+C/func/-/ImageCodecGetDITLForSize
+C/func/-/ImageCodecGetMaxCompressionSize
+C/func/-/ImageCodecGetMaxCompressionSizeWithSources
+C/func/-/ImageCodecGetParameterList
+C/func/-/ImageCodecGetParameterListHandle
+C/func/-/ImageCodecGetSettings
+C/func/-/ImageCodecGetSettingsAsText
+C/func/-/ImageCodecGetSimilarity
+C/func/-/ImageCodecGetSourceDataGammaLevel
+C/func/-/ImageCodecHitTestData
+C/func/-/ImageCodecHitTestDataWithFlags
+C/func/-/ImageCodecInitialize
+C/func/-/ImageCodecIsImageDescriptionEquivalent
+C/func/-/ImageCodecIsStandardParameterDialogEvent
+C/func/-/ImageCodecMergeFloatingImageOntoWindow
+C/tdef/-/ImageCodecMPDrawBandProc
+C/tdef/-/ImageCodecMPDrawBandUPP
+C/func/-/ImageCodecNewImageBufferMemory
+C/func/-/ImageCodecNewImageGWorld
+C/func/-/ImageCodecNewMemory
+C/func/-/ImageCodecPreCompress
+C/func/-/ImageCodecPreDecompress
+C/func/-/ImageCodecPreflight
+C/func/-/ImageCodecPrepareToCompressFrames
+C/func/-/ImageCodecProcessBetweenPasses
+C/func/-/ImageCodecQueueStarting
+C/func/-/ImageCodecQueueStopping
+C/func/-/ImageCodecRemoveFloatingImage
+C/func/-/ImageCodecRequestGammaLevel
+C/func/-/ImageCodecRequestSettings
+C/func/-/ImageCodecScheduleFrame
+C/func/-/ImageCodecSetSettings
+C/func/-/ImageCodecSetTimeBase
+C/func/-/ImageCodecSetTimeCode
+C/func/-/ImageCodecSourceChanged
+C/func/-/ImageCodecStandardParameterDialogDoAction
+C/tdef/-/ImageCodecTimeTriggerProc
+C/tdef/-/ImageCodecTimeTriggerUPP
+C/func/-/ImageCodecTrimImage
+C/func/-/ImageCodecValidateParameters
+Objective-C/intfm/QCPlugInInputImageSource/imageColorSpace
+Objective-C/intfm/QCPlugInOutputImageProvider/imageColorSpace
+Objective-C/instm/IKImageBrowserCell/imageContainerFrame
+Objective-C/instp/IKImageView/imageCorrection
+Objective-C/instm/IKImageView/imageCorrection
+Objective-C/intfm/ApertureExportManager/imageCount
+Objective-C/instm/ABPerson/imageData
+JavaScript/data/DOMWindow/ImageData
+JavaScript/cl/-/ImageData
+C/tdef/-/ImageDescriptionHandle
+C/tdef/-/ImageDescriptionPtr
+Objective-C/intfm/NSImageDelegate/imageDidNotDraw:inRect:
+Objective-C/instm/NSButtonCell/imageDimsWhenDisabled
+C/tdef/-/ImageFieldSequence
+C/func/-/ImageFieldSequenceBegin
+C/func/-/ImageFieldSequenceEnd
+C/func/-/ImageFieldSequenceExtractCombine
+Objective-C/clm/NSImageRep/imageFileTypes
+Objective-C/clm/NSImage/imageFileTypes
+Objective-C/instm/NSSegmentedCell/imageForSegment:
+Objective-C/instm/NSSegmentedControl/imageForSegment:
+Objective-C/instm/IKImageBrowserCell/imageFrame
+Objective-C/instm/NSImageView/imageFrameStyle
+Objective-C/instm/NSImageCell/imageFrameStyle
+Objective-C/instm/FxImage/imageInfo
+Objective-C/instm/NSGraphicsContext/imageInterpolation
+Objective-C/clm/NSImage/imageNamed:
+Objective-C/clm/IMService/imageNameForStatus:
+Objective-C/instm/NSRulerMarker/imageOrigin
+Objective-C/clm/NSImageRep/imagePasteboardTypes
+Objective-C/clm/NSImage/imagePasteboardTypes
+Objective-C/instm/ISyncClient/imagePath
+Objective-C/instm/NSButton/imagePosition
+Objective-C/instm/NSButtonCell/imagePosition
+Objective-C/intfm/IKImageEditPanelDataSource/imageProperties
+Objective-C/instp/IKSaveOptions/imageProperties
+Objective-C/instm/IKSaveOptions/imageProperties
+Objective-C/instm/IKImageView/imageProperties
+Objective-C/instm/NSCell/imageRectForBounds:
+Objective-C/instm/NSPrinter/imageRectForPaper:
+Objective-C/instm/NSRulerMarker/imageRectInRuler
+Objective-C/clm/NSImageRep/imageRepClassForData:
+Objective-C/clm/NSImageRep/imageRepClassForFileType:
+Objective-C/clm/NSImageRep/imageRepClassForPasteboardType:
+Objective-C/clm/NSImageRep/imageRepClassForType:
+Objective-C/instm/NSObject/imageRepresentation
+Objective-C/instm/NSObject/imageRepresentationType
+Objective-C/clm/NSImageRep/imageRepsWithContentsOfFile:
+Objective-C/clm/NSImageRep/imageRepsWithContentsOfURL:
+Objective-C/clm/NSBitmapImageRep/imageRepsWithData:
+Objective-C/clm/NSImageRep/imageRepsWithPasteboard:
+Objective-C/clm/NSCIImageRep/imageRepWithCIImage:
+Objective-C/clm/NSImageRep/imageRepWithContentsOfFile:
+Objective-C/clm/NSImageRep/imageRepWithContentsOfURL:
+Objective-C/clm/NSEPSImageRep/imageRepWithData:
+Objective-C/clm/NSPICTImageRep/imageRepWithData:
+Objective-C/clm/NSPDFImageRep/imageRepWithData:
+Objective-C/clm/NSBitmapImageRep/imageRepWithData:
+Objective-C/clm/NSImageRep/imageRepWithPasteboard:
+JavaScript/data/Document/images
+Objective-C/instm/NSImageView/imageScaling
+Objective-C/instm/NSButtonCell/imageScaling
+Objective-C/instm/NSImageCell/imageScaling
+Objective-C/instm/NSSegmentedCell/imageScalingForSegment:
+Objective-C/instm/NSSegmentedControl/imageScalingForSegment:
+C/tdef/-/ImageSequence
+C/tdef/-/ImageSequenceDataSource
+Objective-C/instm/IKImageView/imageSize
+C/tag/-/ImageSubCodecDecompressCapabilities
+C/tag/-/ImageSubCodecDecompressRecord
+Objective-C/instm/NSObject/imageSubtitle
+Objective-C/intfm/FxTimingAPI/imageTimeForParmId:forEffect:fromTimelineTime:
+Objective-C/instm/NSObject/imageTitle
+C/func/-/ImageTranscodeDisposeFrameData
+C/func/-/ImageTranscodeFrame
+C/tdef/-/ImageTranscodeSequence
+C/func/-/ImageTranscodeSequenceBegin
+C/func/-/ImageTranscodeSequenceEnd
+Objective-C/instm/FxImage/imageType
+Objective-C/clm/NSImageRep/imageTypes
+Objective-C/clm/NSImage/imageTypes
+Objective-C/instm/NSObject/imageUID
+Objective-C/clm/NSImageRep/imageUnfilteredFileTypes
+Objective-C/clm/NSImage/imageUnfilteredFileTypes
+Objective-C/clm/NSImageRep/imageUnfilteredPasteboardTypes
+Objective-C/clm/NSImage/imageUnfilteredPasteboardTypes
+Objective-C/clm/NSImageRep/imageUnfilteredTypes
+Objective-C/clm/NSImage/imageUnfilteredTypes
+Objective-C/clm/IMService/imageURLForStatus:
+Objective-C/instp/IKSaveOptions/imageUTType
+Objective-C/instm/IKSaveOptions/imageUTType
+Objective-C/instm/NSObject/imageVersion
+Objective-C/instm/NSMenuItemCell/imageWidth
+Objective-C/clm/CIImage/imageWithBitmapData:bytesPerRow:size:format:colorSpace:
+Objective-C/clm/CIImage/imageWithCGImage:
+Objective-C/clm/CIImage/imageWithCGImage:options:
+Objective-C/clm/CIImage/imageWithCGLayer:
+Objective-C/clm/CIImage/imageWithCGLayer:options:
+Objective-C/clm/CIImage/imageWithColor:
+Objective-C/clm/CIImage/imageWithContentsOfURL:
+Objective-C/clm/CIImage/imageWithContentsOfURL:options:
+Objective-C/clm/CIImage/imageWithCVImageBuffer:
+Objective-C/clm/CIImage/imageWithCVImageBuffer:options:
+Objective-C/clm/CIImage/imageWithData:
+Objective-C/clm/CIImage/imageWithData:options:
+Objective-C/clm/CIImage/imageWithImageProvider:size:format:colorSpace:options:
+Objective-C/clm/CIImage/imageWithTexture:size:flipped:colorSpace:
+Objective-C/cl/-/IMAVButton
+Objective-C/cl/-/IMAVControl
+Objective-C/cl/-/IMAVControlBar
+C/econst/-/IMAVInactive
+Objective-C/cl/-/IMAVManager
+C/tdef/-/IMAVManagerState
+C/data/-/IMAVManagerStateChangedNotification
+C/data/-/IMAVManagerURLToShareChangedNotification
+C/econst/-/IMAVPending
+C/econst/-/IMAVRequested
+C/econst/-/IMAVRunning
+C/econst/-/IMAVShuttingDown
+Objective-C/cl/-/IMAVSlider
+C/econst/-/IMAVStartingUp
+C/func/-/imaxabs
+C/func/-/imaxdiv
+C/data/-/IMCapabilityAudioConference
+C/data/-/IMCapabilityDirectIM
+C/data/-/IMCapabilityFileSharing
+C/data/-/IMCapabilityFileTransfer
+C/data/-/IMCapabilityText
+C/data/-/IMCapabilityVideoConference
+C/func/-/imclient
+C/func/-/imclient_addcallback
+C/func/-/imclient_authenticate
+C/func/-/imclient_clearflags
+C/func/-/imclient_close
+C/func/-/imclient_connect
+C/func/-/imclient_getselectinfo
+C/func/-/imclient_havetls
+C/func/-/imclient_processoneevent
+C/func/-/imclient_send
+C/func/-/imclient_servername
+C/func/-/imclient_setflags
+C/func/-/imclient_starttls
+C/func/-/IMComparePersonStatus
+C/func/-/imgfir
+C/func/-/imgfirD
+C/tdef/-/IMKCandidatePanelType
+Objective-C/cl/-/IMKCandidates
+C/tdef/-/IMKCandidatesLocationHint
+C/data/-/IMKCandidatesOpacityAttributeName
+C/data/-/IMKControllerClass
+C/data/-/IMKDelegateClass
+Objective-C/cl/-/IMKInputController
+C/tdef/-/IMKLocationToOffsetMappingMode
+C/data/-/IMKModeDictionary
+Objective-C/intf/-/IMKMouseHandling
+Objective-C/cl/-/IMKServer
+Objective-C/cat/-/IMKServerInput
+Objective-C/intf/-/IMKStateSetting
+Objective-C/intf/-/IMKTextInput
+C/data/-/IMKTextOrientationName
+C/func/-/immedok
+C/data/-/IMMyStatusChangedNotification
+C/tag/-/IMP
+C/data/-/IMPersonAVBusyKey
+C/data/-/IMPersonCapabilitiesKey
+C/data/-/IMPersonEmailKey
+C/data/-/IMPersonFirstNameKey
+C/data/-/IMPersonIdleSinceKey
+C/data/-/IMPersonInfoChangedNotification
+C/data/-/IMPersonLastNameKey
+C/data/-/IMPersonPictureDataKey
+C/data/-/IMPersonScreenNameKey
+C/data/-/IMPersonServiceNameKey
+C/tdef/-/IMPersonStatus
+C/econst/-/IMPersonStatusAvailable
+C/econst/-/IMPersonStatusAway
+C/data/-/IMPersonStatusChangedNotification
+C/econst/-/IMPersonStatusIdle
+C/data/-/IMPersonStatusKey
+C/data/-/IMPersonStatusMessageKey
+C/econst/-/IMPersonStatusNoStatus
+C/econst/-/IMPersonStatusOffline
+C/econst/-/IMPersonStatusUnknown
+JavaScript/data/Document/implementation
+JavaScript/clconst/WebGLRenderingContext/IMPLEMENTATION_COLOR_READ_FORMAT
+JavaScript/clconst/WebGLRenderingContext/IMPLEMENTATION_COLOR_READ_TYPE
+Objective-C/instm/NSScriptClassDescription/implementationClassName
+JavaScript/clconst/CSSRule/IMPORT_RULE
+Objective-C/intfm/ApertureEditManager/importedVersionIds
+C/tdef/-/ImporterImportData
+Objective-C/intfm/ApertureEditManager/importImageAtPath:referenced:stackWithVersions:
+JavaScript/instm/Document/importNode
+JavaScript/instm/WorkerContext/importScripts
+Objective-C/instm/NSTextField/importsGraphics
+Objective-C/instm/NSTextView/importsGraphics
+Objective-C/instm/NSText/importsGraphics
+Objective-C/instm/NSCell/importsGraphics
+Objective-C/instm/NSPersistentStoreCoordinator/importStoreWithIdentifier:fromExternalRecordsDirectory:toURL:options:withType:error:
+JavaScript/instm/XSLTProcessor/importStylesheet
+Objective-C/cl/-/IMService
+C/tdef/-/IMServiceStatus
+C/data/-/IMServiceStatusChangedNotification
+C/econst/-/IMServiceStatusDisconnected
+C/econst/-/IMServiceStatusLoggedIn
+C/econst/-/IMServiceStatusLoggedOut
+C/econst/-/IMServiceStatusLoggingIn
+C/econst/-/IMServiceStatusLoggingOut
+C/data/-/IMStatusImagesChangedAppearanceNotification
+Objective-C/cat/-/IMVideoDataSource
+C/econst/-/IMVideoOptimizationDefault
+C/tdef/-/IMVideoOptimizationOptions
+C/econst/-/IMVideoOptimizationReplacement
+C/econst/-/IMVideoOptimizationStills
+JavaScript/data/SVGFEMergeNodeElement/in1
+JavaScript/data/SVGFETileElement/in1
+JavaScript/data/SVGFEOffsetElement/in1
+JavaScript/data/SVGFEColorMatrixElement/in1
+JavaScript/data/SVGFECompositeElement/in1
+JavaScript/data/SVGFEMorphologyElement/in1
+JavaScript/data/SVGFEComponentTransferElement/in1
+JavaScript/data/SVGFEDiffuseLightingElement/in1
+JavaScript/data/SVGFESpecularLightingElement/in1
+JavaScript/data/SVGFEBlendElement/in1
+JavaScript/data/SVGFEGaussianBlurElement/in1
+JavaScript/data/SVGFEDisplacementMapElement/in1
+JavaScript/data/SVGFEDisplacementMapElement/in2
+JavaScript/data/SVGFECompositeElement/in2
+JavaScript/data/SVGFEBlendElement/in2
+C/func/-/in_wch
+C/func/-/in_wchnstr
+C/func/-/in_wchstr
+C/func/-/inch
+C/func/-/inchnstr
+C/func/-/inchstr
+Objective-C/instm/NSDictionaryController/includedKeys
+Objective-C/binding/NSDictionaryController/includedKeys
+Objective-C/instm/NSFetchRequest/includesPendingChanges
+Objective-C/instm/NSFetchRequest/includesPropertyValues
+Objective-C/instm/NSFetchRequest/includesSubentities
+C/econst/-/incompatibleVoice
+JavaScript/clconst/WebGLRenderingContext/INCR
+JavaScript/clconst/WebGLRenderingContext/INCR_WRAP
+Objective-C/instm/NSMutableData/increaseLengthBy:
+Objective-C/instm/NSStepper/increment
+Objective-C/instm/NSStepperCell/increment
+Objective-C/instm/NSBitmapImageRep/incrementalLoadFromData:complete:
+Objective-C/instm/NSProgressIndicator/incrementBy:
+C++/instm/IOBlockStorageDriver/incrementErrors
+C++/instm/IOSCSIParallelInterfaceController/IncrementRealizedDataTransferCount
+C++/instm/IOBlockStorageDriver/incrementRetries
+Objective-C/instm/QTSampleBuffer/incrementSampleUseCount
+Objective-C/instm/NSResponder/indent:
+Objective-C/instm/NSMenuItem/indentationLevel
+Objective-C/instm/NSOutlineView/indentationMarkerFollowsCell
+Objective-C/instm/NSOutlineView/indentationPerLevel
+Objective-C/instm/NSConnection/independentConversationQueueing
+JavaScript/data/HTMLInputElement/indeterminate
+JavaScript/data/HTMLDataGridCellElement/indeterminate
+Objective-C/instm/NSIndexSpecifier/index
+Objective-C/instm/PDFOutline/index
+Objective-C/instm/NSXMLNode/index
+C/func/-/index
+JavaScript/data/HTMLOptionElement/index
+JavaScript/clconst/DOMCoreException/INDEX_SIZE_ERR
+Objective-C/instm/IKImageBrowserView/indexAtLocationOfDroppedItem
+Objective-C/instm/NSIndexPath/indexAtPosition:
+JavaScript/cl/-/IndexedDatabaseRequest
+JavaScript/data/DOMWindow/indexedDB
+Objective-C/instm/NSIndexSet/indexesInRange:options:passingTest:
+Objective-C/instm/NSArray/indexesOfObjectsAtIndexes:options:passingTest:
+Objective-C/instm/NSArray/indexesOfObjectsPassingTest:
+Objective-C/instm/NSArray/indexesOfObjectsWithOptions:passingTest:
+Objective-C/instm/NSIndexSet/indexesPassingTest:
+Objective-C/instm/NSIndexSet/indexesWithOptions:passingTest:
+Objective-C/instm/ABMultiValue/indexForIdentifier:
+Objective-C/instm/PDFDocument/indexForPage:
+Objective-C/instm/NSIndexSet/indexGreaterThanIndex:
+Objective-C/instm/NSIndexSet/indexGreaterThanOrEqualToIndex:
+Objective-C/instm/NSIndexSet/indexInRange:options:passingTest:
+Objective-C/instm/NSIndexSet/indexLessThanIndex:
+Objective-C/instm/NSIndexSet/indexLessThanOrEqualToIndex:
+Objective-C/instm/NSForm/indexOfCellWithTag:
+Objective-C/instm/IKSlideshow/indexOfCurrentSlideshowItem
+Objective-C/instm/NSPopUpButton/indexOfItem:
+Objective-C/instm/NSPopUpButtonCell/indexOfItem:
+Objective-C/instm/NSMenu/indexOfItem:
+Objective-C/instm/NSMenuView/indexOfItemAtPoint:
+Objective-C/instm/IKImageBrowserView/indexOfItemAtPoint:
+Objective-C/instm/NSComboBox/indexOfItemWithObjectValue:
+Objective-C/instm/NSComboBoxCell/indexOfItemWithObjectValue:
+Objective-C/instm/NSPopUpButtonCell/indexOfItemWithRepresentedObject:
+Objective-C/instm/NSPopUpButton/indexOfItemWithRepresentedObject:
+Objective-C/instm/NSMenu/indexOfItemWithRepresentedObject:
+Objective-C/instm/NSMenu/indexOfItemWithSubmenu:
+Objective-C/instm/NSPopUpButton/indexOfItemWithTag:
+Objective-C/instm/NSPopUpButtonCell/indexOfItemWithTag:
+Objective-C/instm/NSMenu/indexOfItemWithTag:
+Objective-C/instm/NSPopUpButtonCell/indexOfItemWithTarget:andAction:
+Objective-C/instm/NSPopUpButton/indexOfItemWithTarget:andAction:
+Objective-C/instm/NSMenu/indexOfItemWithTarget:andAction:
+Objective-C/instm/NSPopUpButtonCell/indexOfItemWithTitle:
+Objective-C/instm/NSPopUpButton/indexOfItemWithTitle:
+Objective-C/instm/NSMenu/indexOfItemWithTitle:
+Objective-C/instm/NSArray/indexOfObject:
+Objective-C/instm/NSArray/indexOfObject:inRange:
+Objective-C/instm/NSArray/indexOfObject:inSortedRange:options:usingComparator:
+Objective-C/instm/NSArray/indexOfObjectAtIndexes:options:passingTest:
+Objective-C/instm/NSArray/indexOfObjectIdenticalTo:
+Objective-C/instm/NSArray/indexOfObjectIdenticalTo:inRange:
+Objective-C/instm/NSArray/indexOfObjectPassingTest:
+Objective-C/instm/NSArray/indexOfObjectWithOptions:passingTest:
+Objective-C/instm/NSPasteboard/indexOfPasteboardItem:
+Objective-C/instm/IKImageBrowserCell/indexOfRepresentedItem
+Objective-C/instm/NSMetadataQuery/indexOfResult:
+Objective-C/instm/NSForm/indexOfSelectedItem
+Objective-C/instm/NSPopUpButtonCell/indexOfSelectedItem
+Objective-C/instm/NSPopUpButton/indexOfSelectedItem
+Objective-C/instm/NSComboBox/indexOfSelectedItem
+Objective-C/instm/NSComboBoxCell/indexOfSelectedItem
+Objective-C/instm/NSTabView/indexOfTabViewItem:
+Objective-C/instm/NSTabView/indexOfTabViewItemWithIdentifier:
+Objective-C/instm/NSSlider/indexOfTickMarkAtPoint:
+Objective-C/instm/NSSliderCell/indexOfTickMarkAtPoint:
+Objective-C/instm/NSIndexSet/indexPassingTest:
+Objective-C/instm/NSTreeNode/indexPath
+Objective-C/instm/NSIndexPath/indexPathByAddingIndex:
+Objective-C/instm/NSIndexPath/indexPathByRemovingLastIndex
+Objective-C/instm/NSBrowser/indexPathForColumn:
+Objective-C/clm/NSIndexPath/indexPathWithIndex:
+Objective-C/clm/NSIndexPath/indexPathWithIndexes:length:
+Objective-C/clm/NSIndexSet/indexSet
+Objective-C/clm/NSIndexSet/indexSetWithIndex:
+Objective-C/clm/NSIndexSet/indexSetWithIndexesInRange:
+Objective-C/instm/NSIndexSet/indexWithOptions:passingTest:
+Objective-C/instm/NSTableView/indicatorImageInTableColumn:
+Objective-C/instm/NSObject/indicesOfObjectsByEvaluatingObjectSpecifier:
+Objective-C/instm/NSScriptObjectSpecifier/indicesOfObjectsByEvaluatingWithContainer:count:
+C/func/-/inet
+C/func/-/inet6_option_alloc
+C/func/-/inet6_option_append
+C/func/-/inet6_option_find
+C/func/-/inet6_option_init
+C/func/-/inet6_option_next
+C/func/-/inet6_option_space
+C/func/-/inet6_rthdr_add
+C/func/-/inet6_rthdr_getaddr
+C/func/-/inet6_rthdr_getflags
+C/func/-/inet6_rthdr_init
+C/func/-/inet6_rthdr_lasthop
+C/func/-/inet6_rthdr_reverse
+C/func/-/inet6_rthdr_segments
+C/func/-/inet6_rthdr_space
+C/func/-/inet_addr
+C/func/-/inet_arp_handle_input
+C/func/-/inet_arp_init_ifaddr
+C/func/-/inet_arp_lookup
+C/func/-/inet_aton
+C/func/-/inet_lnaof
+C/func/-/inet_makeaddr
+C/func/-/inet_net
+C/func/-/inet_net_ntop
+C/func/-/inet_net_pton
+C/func/-/inet_netof
+C/func/-/inet_network
+C/func/-/inet_ntop
+C/func/-/inet_pton
+Objective-C/clm/NSMappingModel/inferredMappingModelForSourceModel:destinationModel:error:
+Objective-C/instm/DRDevice/info
+C/tdef/-/info
+JavaScript/instm/Console/info
+JavaScript/clconst/WebGLRenderingContext/INFO_LOG_LENGTH
+Objective-C/instm/NSBundle/infoDictionary
+Objective-C/instm/IMService/infoForAllScreenNames
+Objective-C/instm/NSObject/infoForBinding:
+Objective-C/instm/IMService/infoForPreferredScreenNames
+Objective-C/instm/IMService/infoForScreenName:
+Objective-C/instm/NSAlert/informativeText
+Objective-C/instp/QLPreviewPanel/inFullScreenMode
+Objective-C/instm/QLPreviewPanel/inFullScreenMode
+C++/instm/IOWorkLoop/inGate
+Objective-C/instm/ABIdentityPicker/init
+Objective-C/instm/SBObject/init
+Objective-C/instm/NSPipe/init
+Objective-C/instm/PDFActionResetForm/init
+Objective-C/instm/PDFOutline/init
+Objective-C/instm/NSSocketPort/init
+Objective-C/instm/NSOperation/init
+Objective-C/instm/NSDocument/init
+Objective-C/instm/NSShadow/init
+Objective-C/instm/NSDateFormatter/init
+Objective-C/instm/NSLayoutManager/init
+Objective-C/instm/NSMetadataQuery/init
+Objective-C/instm/NSNetServiceBrowser/init
+Objective-C/instm/NSSpeechRecognizer/init
+Objective-C/instm/NSTextBlock/init
+Objective-C/instm/ABRecord/init
+Objective-C/instm/NSIndexSet/init
+Objective-C/instm/CWWirelessProfile/init
+Objective-C/instm/NSTask/init
+Objective-C/instm/CW8021XProfile/init
+Objective-C/instm/CWConfiguration/init
+Objective-C/instm/CWInterface/init
+Objective-C/instm/SFAuthorization/init
+C++/instm/IONetworkInterface/init
+C++/instm/IOEthernetInterface/init
+C++/instm/IONetworkController/init
+C++/instm/IOEthernetController/init
+C++/instm/IONetworkMedium/init
+Objective-C/instm/NSDocumentController/init
+Objective-C/instm/NSUserDefaults/init
+Objective-C/instm/NSThread/init
+Objective-C/instm/NSObject/init
+C++/instm/IOATABusCommand/init
+C++/instm/IOFilterInterruptEventSource/init
+C++/instm/IOAudioEngine/init
+C++/instm/IOAudioLevelControl/init
+C++/instm/IOCommandPool/init
+C++/instm/IOBlockStorageDevice/init
+C++/instm/ATATimerEventSource/init
+C++/instm/IOBasicOutputQueue/init
+C++/instm/IOBDBlockStorageDevice/init
+C++/instm/IOEventSource/init
+C++/instm/IOAudioDevice/init
+C++/instm/ATADeviceNub/init
+C++/instm/IOFireWireAVCTargetSpace/init
+C++/instm/IOCatalogue/init
+C++/instm/IOCommandGate/init
+C++/instm/IOAudioToggleControl/init
+C++/instm/IOAudioControl/init
+C++/instm/IOFireWireDevice/init
+C++/instm/IOHIDInterface/init
+C++/instm/IOFireWirePCRSpace/init
+C++/instm/IOHIDDevice/init
+C++/instm/IONetworkData/init
+C++/instm/IOKernelDebugger/init
+C++/instm/IOInterruptEventSource/init
+C++/instm/IOOutputQueue/init
+C++/instm/IOFWPhysicalAddressSpace/init
+C++/instm/IOGatedOutputQueue/init
+C++/instm/IOMedia/init
+C++/instm/IOFireWireSerialBusProtocolTransport/init
+C++/instm/IORegistryEntry/init
+C++/instm/IORangeAllocator/init
+C++/instm/IOWorkLoop/init
+C++/instm/IOTimerEventSource/init
+C++/instm/OSCollection/init
+C++/instm/OSNumber/init
+C++/instm/OSObject/init
+Objective-C/instm/NSString/init
+Objective-C/instm/NSDate/init
+Objective-C/instm/NSFileManager/init
+Objective-C/instm/CALayer/init
+C/func/-/init_agent
+C/func/-/init_color
+C/func/-/init_master_agent
+C/func/-/init_mib
+C/func/-/init_mib_internals
+C/func/-/init_my_mib_code
+C/func/-/init_pair
+C/func/-/init_snmp
+C++/instm/IOFWPseudoAddressSpace/initAll
+C++/instm/IOFWAsyncStreamListener/initAll
+Objective-C/instm/NSLogicalTest/initAndTestWithTests:
+Objective-C/instm/NSMenuView/initAsTearOff
+JavaScript/instm/BeforeLoadEvent/initBeforeLoadEvent
+Objective-C/instm/NSImage/initByReferencingFile:
+Objective-C/instm/NSImage/initByReferencingURL:
+Objective-C/instm/NSURL/initByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:
+JavaScript/instm/CompositionEvent/initCompositionEvent
+JavaScript/instm/CustomEvent/initCustomEvent
+Objective-C/instm/CalRecurrenceRule/initDailyRecurrenceWithInterval:end:
+C/func/-/InitDataBrowserCallbacks
+C/func/-/InitDataBrowserCustomCallbacks
+Objective-C/instm/NSFileWrapper/initDirectoryWithFileWrappers:
+C++/tag/IODeviceMemory/InitElement
+JavaScript/instm/ErrorEvent/initErrorEvent
+JavaScript/instm/Event/initEvent
+C/func/-/initFileSink
+C/func/-/initFileSource
+Objective-C/instm/NSURL/initFileURLWithPath:
+Objective-C/instm/NSURL/initFileURLWithPath:isDirectory:
+C++/instm/IOFWPseudoAddressSpace/initFixed
+Objective-C/instm/IOBluetoothHeadsetDevice/initForConnectionToDevice:delegate:
+Objective-C/instm/IOBluetoothRFCOMMAudioController/initForConnectionToDevice:delegate:
+Objective-C/instm/IOBluetoothHandsFreeGateway/initForConnectionToDevice:supportedFeatures:delegate:
+Objective-C/instm/NSBitmapImageRep/initForIncrementalLoad
+Objective-C/instm/NSUnarchiver/initForReadingWithData:
+Objective-C/instm/NSKeyedUnarchiver/initForReadingWithData:
+Objective-C/instm/NSDocument/initForURL:withContentsOfURL:ofType:error:
+Objective-C/instm/NSArchiver/initForWritingWithMutableData:
+Objective-C/instm/NSKeyedArchiver/initForWritingWithMutableData:
+C/func/-/initgroups
+C++/instm/IOAudioDevice/initHardware
+C++/instm/IOAudioEngine/initHardware
+JavaScript/clconst/IDBRequest/INITIAL
+Objective-C/instm/NSTabViewItem/initialFirstResponder
+Objective-C/instm/NSWindow/initialFirstResponder
+C/func/-/Initialize
+C++/clm/IOEthernetController/initialize
+Objective-C/clm/NSObject/initialize
+C++/clm/IOCatalogue/initialize
+JavaScript/instm/SVGNumberList/initialize
+JavaScript/instm/SVGLengthList/initialize
+JavaScript/instm/SVGPathSegList/initialize
+JavaScript/instm/SVGStringList/initialize
+JavaScript/instm/SVGPointList/initialize
+JavaScript/instm/SVGTransformList/initialize
+C++/instm/IOSCSIParallelInterfaceController/InitializeController
+C++/instm/IOSCSIParallelInterfaceController/InitializeDMASpecification
+C++/instm/IOSCSIProtocolInterface/InitializePowerManagement
+C++/instm/IOSCSIParallelInterfaceController/InitializeTargetForID
+C/func/-/InitializeTerminate
+JavaScript/instm/Document/initializeWMLPageState
+Objective-C/instm/NSDictionaryController/initialKey
+Objective-C/binding/NSDictionaryController/initialKey
+Objective-C/instm/NSPreferencePane/initialKeyView
+C++/instm/IOService/initialPowerStateForDomainState
+C++/instm/IOSCSIProtocolInterface/initialPowerStateForDomainState
+Objective-C/instm/WebDataSource/initialRequest
+Objective-C/instm/NSDictionaryController/initialValue
+Objective-C/binding/NSDictionaryController/initialValue
+Objective-C/instm/NSUserDefaultsController/initialValues
+C++/instm/IOAudioDevice/initiatePowerStateChange
+C++/instm/IONetworkInterface/initIfnet
+Objective-C/instm/NSCell/initImageCell:
+C/func/-/initInputBuffer
+C++/instm/OSCollection/initIterator
+JavaScript/instm/KeyboardEvent/initKeyboardEvent
+C++/clm/IOAudioEngine/initKeys
+Objective-C/instm/NSAppleEventDescriptor/initListDescriptor
+C++/instm/IOBlockStorageDriver/initMediaState
+JavaScript/instm/MessageEvent/initMessageEvent
+Objective-C/instm/CalRecurrenceRule/initMonthlyRecurrenceWithInterval:end:
+Objective-C/instm/CalRecurrenceRule/initMonthlyRecurrenceWithInterval:forDayOfTheWeek:forWeekOfTheMonth:end:
+Objective-C/instm/CalRecurrenceRule/initMonthlyRecurrenceWithInterval:forDaysOfTheMonth:end:
+JavaScript/instm/MouseEvent/initMouseEvent
+JavaScript/instm/MutationEvent/initMutationEvent
+Objective-C/instm/NSLogicalTest/initNotTestWithTest:
+Objective-C/instm/IOBluetoothObjectPushUIController/initObjectPushWithBluetoothDevice:withFiles:delegate:
+Objective-C/instm/QCRenderer/initOffScreenWithSize:colorSpace:composition:
+Objective-C/instm/NSLogicalTest/initOrTestWithTests:
+C/func/-/initOutputBuffer
+JavaScript/instm/OverflowEvent/initOverflowEvent
+JavaScript/instm/PageTransitionEvent/initPageTransitionEvent
+JavaScript/instm/PopStateEvent/initPopStateEvent
+JavaScript/instm/ProgressEvent/initProgressEvent
+Objective-C/instm/NSAppleEventDescriptor/initRecordDescriptor
+Objective-C/instm/NSFileWrapper/initRegularFileWithContents:
+Objective-C/instm/NSSocketPort/initRemoteWithProtocolFamily:socketType:protocol:address:
+Objective-C/instm/NSSocketPort/initRemoteWithTCPPort:host:
+C/func/-/initscr
+C/func/-/initstate
+JavaScript/instm/StorageEvent/initStorageEvent
+Objective-C/instm/NSFileWrapper/initSymbolicLinkWithDestination:
+Objective-C/instm/NSFileWrapper/initSymbolicLinkWithDestinationURL:
+Objective-C/instm/NSFormCell/initTextCell:
+Objective-C/instm/NSCell/initTextCell:
+Objective-C/instm/NSPopUpButtonCell/initTextCell:pullsDown:
+JavaScript/instm/TextEvent/initTextEvent
+Objective-C/instm/NSOutputStream/initToBuffer:capacity:
+Objective-C/instm/NSOutputStream/initToFileAtPath:append:
+Objective-C/instm/NSOutputStream/initToMemory
+JavaScript/instm/TouchEvent/initTouchEvent
+Objective-C/instm/QTMovie/initToWritableData:error:
+Objective-C/instm/QTMovie/initToWritableDataReference:error:
+Objective-C/instm/QTMovie/initToWritableFile:error:
+JavaScript/instm/UIEvent/initUIEvent
+JavaScript/instm/WebKitAnimationEvent/initWebKitAnimationEvent
+JavaScript/instm/WebKitTransitionEvent/initWebKitTransitionEvent
+JavaScript/instm/WheelEvent/initWebKitWheelEvent
+Objective-C/instm/CalRecurrenceRule/initWeeklyRecurrenceWithInterval:end:
+Objective-C/instm/CalRecurrenceRule/initWeeklyRecurrenceWithInterval:forDaysOfTheWeek:end:
+JavaScript/instm/WheelEvent/initWheelEvent
+Objective-C/instm/ABRecord/initWithAddressBook:
+Objective-C/instm/NSAppleEventDescriptor/initWithAEDescNoCopy:
+Objective-C/intfm/ApertureEditPlugIn/initWithAPIManager:
+Objective-C/intfm/ApertureExportPlugIn/initWithAPIManager:
+Objective-C/instm/FxHostCapabilities/initWithAPIManager:
+C++/instm/OSArray/initWithArray
+C++/instm/OSSet/initWithArray
+Objective-C/instm/NSCountedSet/initWithArray:
+Objective-C/instm/NSSet/initWithArray:
+Objective-C/instm/NSArray/initWithArray:
+Objective-C/instm/NSArray/initWithArray:copyItems:
+Objective-C/instm/CAConstraint/initWithAttribute:relativeTo:attribute:scale:offset:
+Objective-C/instm/NSAttributedString/initWithAttributedString:
+C++/instm/IOAudioPort/initWithAttributes
+Objective-C/instm/NSOpenGLPixelFormat/initWithAttributes:
+Objective-C/instm/QTMovie/initWithAttributes:error:
+Objective-C/instm/AUGenericView/initWithAudioUnit:
+Objective-C/instm/AUGenericView/initWithAudioUnit:displayFlags:
+Objective-C/instm/NSURLAuthenticationChallenge/initWithAuthenticationChallenge:sender:
+C++/instm/IOATADevConfig/initWithBestSelection
+Objective-C/instm/CIImage/initWithBitmapData:bytesPerRow:size:format:colorSpace:
+Objective-C/instm/NSBitmapImageRep/initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bitmapFormat:bytesPerRow:bitsPerPixel:
+Objective-C/instm/NSBitmapImageRep/initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bytesPerRow:bitsPerPixel:
+Objective-C/instm/CIImage/initWithBitmapImageRep:
+Objective-C/instm/NSNumber/initWithBool:
+Objective-C/instm/PDFAnnotation/initWithBounds:
+C++/instm/IOStream/initWithBuffers
+Objective-C/instm/NSPreferencePane/initWithBundle:
+Objective-C/instm/NSObject/initWithBundle:
+Objective-C/instm/SBApplication/initWithBundleIdentifier:
+C++/instm/OSData/initWithBytes
+Objective-C/instm/IOBluetoothSDPUUID/initWithBytes:length:
+Objective-C/instm/NSData/initWithBytes:length:
+Objective-C/instm/NSString/initWithBytes:length:encoding:
+Objective-C/instm/NSValue/initWithBytes:objCType:
+C++/instm/OSData/initWithBytesNoCopy
+Objective-C/instm/NSData/initWithBytesNoCopy:length:
+Objective-C/instm/NSString/initWithBytesNoCopy:length:encoding:freeWhenDone:
+Objective-C/instm/NSData/initWithBytesNoCopy:length:freeWhenDone:
+Objective-C/instm/NSCalendar/initWithCalendarIdentifier:
+Objective-C/instm/SFAuthorizationPluginView/initWithCallbacks:andEngineRef:
+C++/instm/IODataQueue/initWithCapacity
+C++/instm/IOInterleavedMemoryDescriptor/initWithCapacity
+C++/instm/IOPacketQueue/initWithCapacity
+C++/instm/IOSharedDataQueue/initWithCapacity
+C++/instm/OSArray/initWithCapacity
+C++/instm/OSDictionary/initWithCapacity
+C++/instm/OSData/initWithCapacity
+C++/instm/OSSet/initWithCapacity
+C++/instm/OSOrderedSet/initWithCapacity
+Objective-C/instm/NSMutableSet/initWithCapacity:
+Objective-C/instm/NSMutableData/initWithCapacity:
+Objective-C/instm/NSMutableString/initWithCapacity:
+Objective-C/instm/NSCountedSet/initWithCapacity:
+Objective-C/instm/NSMutableDictionary/initWithCapacity:
+Objective-C/instm/NSMutableArray/initWithCapacity:
+Objective-C/instm/CIColor/initWithCGColor:
+Objective-C/instm/NSColorSpace/initWithCGColorSpace:
+Objective-C/instm/CIImage/initWithCGImage:
+Objective-C/instm/NSBitmapImageRep/initWithCGImage:
+Objective-C/instm/CIImage/initWithCGImage:options:
+Objective-C/instm/NSImage/initWithCGImage:size:
+Objective-C/instm/CIImage/initWithCGLayer:
+Objective-C/instm/CIImage/initWithCGLayer:options:
+Objective-C/instm/QCRenderer/initWithCGLContext:pixelFormat:colorSpace:composition:
+Objective-C/instm/NSOpenGLContext/initWithCGLContextObj:
+Objective-C/instm/NSOpenGLPixelBuffer/initWithCGLPBufferObj:
+Objective-C/instm/NSOpenGLPixelFormat/initWithCGLPixelFormatObj:
+Objective-C/instm/ISyncChange/initWithChangeType:recordIdentifier:changes:
+Objective-C/instm/NSNumber/initWithChar:
+Objective-C/instm/NSString/initWithCharacters:length:
+Objective-C/instm/NSString/initWithCharactersNoCopy:length:freeWhenDone:
+Objective-C/instm/NSCIImageRep/initWithCIImage:
+Objective-C/instm/NSBitmapImageRep/initWithCIImage:
+Objective-C/instm/NSTextInputContext/initWithClient:
+Objective-C/intfm/NSCoding/initWithCoder:
+C++/instm/OSCollectionIterator/initWithCollection
+Objective-C/instm/CIColor/initWithColor:
+Objective-C/instm/CIImage/initWithColor:
+Objective-C/instm/NSGradient/initWithColors:
+Objective-C/instm/NSGradient/initWithColors:atLocations:colorSpace:
+Objective-C/instm/NSGradient/initWithColorsAndLocations:
+Objective-C/instm/NSColorSpace/initWithColorSyncProfile:
+Objective-C/instm/NSScriptCommand/initWithCommandDescription:
+Objective-C/instm/QCCompositionLayer/initWithComposition:
+Objective-C/instm/QCRenderer/initWithComposition:colorSpace:
+Objective-C/instm/NSPredicateEditorRowTemplate/initWithCompoundTypes:
+Objective-C/instm/NSConditionLock/initWithCondition:
+Objective-C/instm/XGController/initWithConnection:
+Objective-C/instm/NSScriptObjectSpecifier/initWithContainerClassDescription:containerSpecifier:key:
+Objective-C/instm/NSIndexSpecifier/initWithContainerClassDescription:containerSpecifier:key:index:
+Objective-C/instm/NSNameSpecifier/initWithContainerClassDescription:containerSpecifier:key:name:
+Objective-C/instm/NSRelativeSpecifier/initWithContainerClassDescription:containerSpecifier:key:relativePosition:baseSpecifier:
+Objective-C/instm/NSRangeSpecifier/initWithContainerClassDescription:containerSpecifier:key:startSpecifier:endSpecifier:
+Objective-C/instm/NSWhoseSpecifier/initWithContainerClassDescription:containerSpecifier:key:test:
+Objective-C/instm/NSUniqueIDSpecifier/initWithContainerClassDescription:containerSpecifier:key:uniqueID:
+Objective-C/instm/NSTextContainer/initWithContainerSize:
+Objective-C/instm/NSScriptObjectSpecifier/initWithContainerSpecifier:key:
+Objective-C/instm/NSObjectController/initWithContent:
+Objective-C/instm/NSWindow/initWithContentRect:styleMask:backing:defer:
+Objective-C/instm/NSWindow/initWithContentRect:styleMask:backing:defer:screen:
+Objective-C/instm/NSDrawer/initWithContentSize:preferredEdge:
+Objective-C/instm/NSDictionary/initWithContentsOfFile:
+Objective-C/instm/NSImage/initWithContentsOfFile:
+Objective-C/instm/NSArray/initWithContentsOfFile:
+Objective-C/instm/NSString/initWithContentsOfFile:
+Objective-C/instm/NSData/initWithContentsOfFile:
+Objective-C/instm/NSSound/initWithContentsOfFile:byReference:
+Objective-C/instm/NSString/initWithContentsOfFile:encoding:error:
+Objective-C/instm/NSDocument/initWithContentsOfFile:ofType:
+Objective-C/instm/NSData/initWithContentsOfFile:options:error:
+Objective-C/instm/NSString/initWithContentsOfFile:usedEncoding:error:
+Objective-C/instm/NSData/initWithContentsOfMappedFile:
+Objective-C/instm/CIFilterGenerator/initWithContentsOfURL:
+Objective-C/instm/CIImage/initWithContentsOfURL:
+Objective-C/instm/NSNib/initWithContentsOfURL:
+Objective-C/instm/NSMappingModel/initWithContentsOfURL:
+Objective-C/instm/NSManagedObjectModel/initWithContentsOfURL:
+Objective-C/instm/NSDictionary/initWithContentsOfURL:
+Objective-C/instm/NSImage/initWithContentsOfURL:
+Objective-C/instm/NSArray/initWithContentsOfURL:
+Objective-C/instm/NSString/initWithContentsOfURL:
+Objective-C/instm/NSXMLParser/initWithContentsOfURL:
+Objective-C/instm/NSData/initWithContentsOfURL:
+Objective-C/instm/NSSound/initWithContentsOfURL:byReference:
+Objective-C/instm/NSString/initWithContentsOfURL:encoding:error:
+Objective-C/instm/AMWorkflow/initWithContentsOfURL:error:
+Objective-C/instm/NSAppleScript/initWithContentsOfURL:error:
+Objective-C/instm/AMAction/initWithContentsOfURL:error:
+Objective-C/instm/NSDocument/initWithContentsOfURL:ofType:
+Objective-C/instm/NSDocument/initWithContentsOfURL:ofType:error:
+Objective-C/instm/CIImage/initWithContentsOfURL:options:
+Objective-C/instm/NSXMLDocument/initWithContentsOfURL:options:error:
+Objective-C/instm/NSXMLDTD/initWithContentsOfURL:options:error:
+Objective-C/instm/NSData/initWithContentsOfURL:options:error:
+Objective-C/instm/NSString/initWithContentsOfURL:usedEncoding:error:
+Objective-C/instm/CAMediaTimingFunction/initWithControlPoints::::
+Objective-C/instm/CLLocation/initWithCoordinate:altitude:horizontalAccuracy:verticalAccuracy:timestamp:
+Objective-C/instm/FxBitmap/initWithCopy:
+C++/instm/OSSymbol/initWithCString
+C++/instm/OSString/initWithCString
+Objective-C/instm/NSString/initWithCString:
+Objective-C/instm/NSString/initWithCString:encoding:
+Objective-C/instm/NSString/initWithCString:length:
+C++/instm/OSSymbol/initWithCStringNoCopy
+C++/instm/OSString/initWithCStringNoCopy
+Objective-C/instm/NSString/initWithCStringNoCopy:length:freeWhenDone:
+Objective-C/instm/CIImage/initWithCVImageBuffer:
+Objective-C/instm/CIImage/initWithCVImageBuffer:options:
+C++/instm/OSData/initWithData
+Objective-C/instm/CIImage/initWithData:
+Objective-C/instm/SBObject/initWithData:
+Objective-C/instm/NSEPSImageRep/initWithData:
+Objective-C/instm/NSPICTImageRep/initWithData:
+Objective-C/instm/NSPDFImageRep/initWithData:
+Objective-C/instm/PDFDocument/initWithData:
+Objective-C/instm/WebArchive/initWithData:
+Objective-C/instm/NSSound/initWithData:
+Objective-C/instm/NSOpenGLPixelFormat/initWithData:
+Objective-C/instm/NSInputStream/initWithData:
+Objective-C/instm/IOBluetoothSDPUUID/initWithData:
+Objective-C/instm/NSImage/initWithData:
+Objective-C/instm/NSBitmapImageRep/initWithData:
+Objective-C/instm/NSData/initWithData:
+Objective-C/instm/NSXMLParser/initWithData:
+Objective-C/instm/NSString/initWithData:encoding:
+Objective-C/instm/QTMovie/initWithData:error:
+Objective-C/instm/CIImage/initWithData:options:
+Objective-C/instm/NSAttributedString/initWithData:options:documentAttributes:error:
+Objective-C/instm/NSXMLDocument/initWithData:options:error:
+Objective-C/instm/NSXMLDTD/initWithData:options:error:
+Objective-C/instm/PSFeed/initWithData:URL:
+Objective-C/instm/WebResource/initWithData:URL:MIMEType:textEncodingName:frameName:
+Objective-C/instm/NSImage/initWithDataIgnoringOrientation:
+Objective-C/instm/QTDataReference/initWithDataRef:type:
+Objective-C/instm/QTDataReference/initWithDataRefData:type:
+Objective-C/instm/QTMovie/initWithDataReference:error:
+Objective-C/instm/NSDateFormatter/initWithDateFormat:allowNaturalLanguage:
+Objective-C/instm/NSDecimalNumber/initWithDecimal:
+Objective-C/instm/NSUserDefaultsController/initWithDefaults:initialValues:
+Objective-C/instm/AMAction/initWithDefinition:fromArchive:
+Objective-C/instm/AMBundleAction/initWithDefinition:fromArchive:
+Objective-C/instm/IOBluetoothDeviceInquiry/initWithDelegate:
+C++/instm/IOFWPhysicalAddressSpace/initWithDesc
+C++/instm/IOMultiMemoryDescriptor/initWithDescriptors
+Objective-C/instm/NSAppleEventDescriptor/initWithDescriptorType:bytes:length:
+Objective-C/instm/NSAppleEventDescriptor/initWithDescriptorType:data:
+Objective-C/instm/PDFActionGoTo/initWithDestination:
+Objective-C/instm/QTCaptureDeviceInput/initWithDevice:
+Objective-C/instm/DRBurn/initWithDevice:
+Objective-C/instm/DRErase/initWithDevice:
+Objective-C/instm/IOBluetoothOBEXSession/initWithDevice:channelID:
+C++/instm/OSDictionary/initWithDictionary
+Objective-C/instm/NSPrintInfo/initWithDictionary:
+Objective-C/instm/NSDictionary/initWithDictionary:
+Objective-C/instm/NSDictionary/initWithDictionary:copyItems:
+C++/instm/IOFWPhysicalAddressSpace/initWithDMACommand
+Objective-C/instm/NSAttributedString/initWithDocFormat:documentAttributes:
+Objective-C/instm/PDFPage/initWithDocument:
+Objective-C/instm/PDFOutline/initWithDocument:
+Objective-C/instm/PDFSelection/initWithDocument:
+Objective-C/instm/NSError/initWithDomain:code:userInfo:
+Objective-C/instm/NSNetService/initWithDomain:type:name:
+Objective-C/instm/NSNetService/initWithDomain:type:name:port:
+Objective-C/instm/NSOrthography/initWithDominantScript:languageMap:
+Objective-C/instm/NSNumber/initWithDouble:
+Objective-C/instm/NSCustomImageRep/initWithDrawSelector:delegate:
+Objective-C/instm/NSAnimation/initWithDuration:animationCurve:
+Objective-C/instm/SBObject/initWithElementCode:properties:data:
+Objective-C/instm/IOBluetoothSDPDataElement/initWithElementValue:
+Objective-C/instm/NSManagedObject/initWithEntity:insertIntoManagedObjectContext:
+C++/instm/IODataQueue/initWithEntries
+Objective-C/instm/NSAppleEventDescriptor/initWithEventClass:eventID:targetDescriptor:returnID:transactionID:
+Objective-C/instm/NSExpression/initWithExpressionType:
+Objective-C/instm/CIImageAccumulator/initWithExtent:format:
+Objective-C/instm/QCCompositionLayer/initWithFile:
+Objective-C/instm/XGFileDownload/initWithFile:delegate:
+Objective-C/instm/QTMovie/initWithFile:error:
+Objective-C/instm/NSInputStream/initWithFileAtPath:
+Objective-C/instm/NSFileHandle/initWithFileDescriptor:
+Objective-C/instm/NSFileHandle/initWithFileDescriptor:closeOnDealloc:
+Objective-C/instm/NSTextAttachment/initWithFileWrapper:
+Objective-C/instm/NSTimer/initWithFireDate:interval:target:selector:userInfo:repeats:
+Objective-C/instm/SFAuthorization/initWithFlags:rights:environment:
+Objective-C/instm/NSNumber/initWithFloat:
+Objective-C/instm/NSBitmapImageRep/initWithFocusedViewRect:
+Objective-C/instm/NSFontDescriptor/initWithFontAttributes:
+Objective-C/instm/DRMSFFormatter/initWithFormat:
+Objective-C/instm/NSString/initWithFormat:
+Objective-C/instm/NSString/initWithFormat:arguments:
+Objective-C/instm/NSString/initWithFormat:locale:
+Objective-C/instm/NSString/initWithFormat:locale:arguments:
+Objective-C/instm/NSOpenGLContext/initWithFormat:shareContext:
+Objective-C/instm/ScreenSaverView/initWithFrame:
+Objective-C/instm/NSMenuView/initWithFrame:
+Objective-C/instm/NSMatrix/initWithFrame:
+Objective-C/instm/NSControl/initWithFrame:
+Objective-C/instm/IKImageBrowserView/initWithFrame:
+Objective-C/instm/NSTextView/initWithFrame:
+Objective-C/instm/QTMovieView/initWithFrame:
+Objective-C/instm/NSView/initWithFrame:
+Objective-C/instm/IKFilterUIView/initWithFrame:filter:
+Objective-C/instm/WebView/initWithFrame:frameName:groupName:
+Objective-C/instm/ScreenSaverView/initWithFrame:isPreview:
+Objective-C/instm/NSMatrix/initWithFrame:mode:cellClass:numberOfRows:numberOfColumns:
+Objective-C/instm/NSMatrix/initWithFrame:mode:prototype:numberOfRows:numberOfColumns:
+Objective-C/instm/NSOpenGLView/initWithFrame:pixelFormat:
+Objective-C/instm/NSPopUpButton/initWithFrame:pullsDown:
+Objective-C/instm/NSTextView/initWithFrame:textContainer:
+Objective-C/instm/DRMSF/initWithFrames:
+Objective-C/instm/NSURLProtectionSpace/initWithHost:port:protocol:realm:authenticationMethod:
+Objective-C/instm/XGConnection/initWithHostname:portnumber:
+Objective-C/instm/NSAttributedString/initWithHTML:baseURL:documentAttributes:
+Objective-C/instm/NSAttributedString/initWithHTML:documentAttributes:
+Objective-C/instm/NSAttributedString/initWithHTML:options:documentAttributes:
+Objective-C/instm/NSColorSpace/initWithICCProfileData:
+Objective-C/instm/NSImage/initWithIconRef:
+Objective-C/instm/IOBluetoothSDPServiceAttribute/initWithID:attributeElement:
+Objective-C/instm/IOBluetoothSDPServiceAttribute/initWithID:attributeElementValue:
+Objective-C/instm/NSTableColumn/initWithIdentifier:
+Objective-C/instm/NSTabViewItem/initWithIdentifier:
+Objective-C/instm/WebPreferences/initWithIdentifier:
+Objective-C/instm/NSToolbar/initWithIdentifier:
+Objective-C/instm/NSURLCredential/initWithIdentity:certificates:persistence:
+Objective-C/instm/CISampler/initWithImage:
+Objective-C/instm/PDFPage/initWithImage:
+Objective-C/instm/NSCursor/initWithImage:foregroundColorHint:backgroundColorHint:hotSpot:
+Objective-C/instm/NSCursor/initWithImage:hotSpot:
+Objective-C/instm/CISampler/initWithImage:keysAndValues:
+Objective-C/instm/CISampler/initWithImage:options:
+Objective-C/instm/IKSaveOptions/initWithImageProperties:imageUTType:
+Objective-C/instm/CIImage/initWithImageProvider:size:format:colorSpace:options:
+Objective-C/instm/IOBluetoothHeadsetDevice/initWithIncomingDevice:incomingRFCOMMChannelID:delegate:
+Objective-C/instm/IOBluetoothRFCOMMAudioController/initWithIncomingDevice:incomingRFCOMMChannelID:delegate:
+Objective-C/instm/IOBluetoothHandsFreeGateway/initWithIncomingDevice:incomingRFCOMMChannelID:supportedFeatures:delegate:
+Objective-C/instm/IOBluetoothOBEXSession/initWithIncomingRFCOMMChannel:eventSelector:selectorTarget:refCon:
+Objective-C/instm/NSIndexPath/initWithIndex:
+Objective-C/instm/NSIndexSet/initWithIndex:
+Objective-C/instm/NSIndexPath/initWithIndexes:length:
+Objective-C/instm/NSIndexSet/initWithIndexesInRange:
+Objective-C/instm/NSIndexSet/initWithIndexSet:
+Objective-C/instm/FxImage/initWithInfo:
+Objective-C/instm/FxBitmap/initWithInfo:
+Objective-C/instm/FxTexture/initWithInfo:
+Objective-C/instm/FxTexture/initWithInfo:andData:
+Objective-C/instm/FxBitmap/initWithInfo:andData:
+Objective-C/instm/FxBitmap/initWithInfo:andRowBytes:andData:
+Objective-C/instm/FxTexture/initWithInfo:andTextureId:
+Objective-C/instm/NSNumber/initWithInt:
+Objective-C/instm/NSNumber/initWithInteger:
+Objective-C/instm/CWInterface/initWithInterfaceName:
+Objective-C/instm/NSInvocationOperation/initWithInvocation:
+Objective-C/instm/NSToolbarItem/initWithItemIdentifier:
+Objective-C/instm/NSSortDescriptor/initWithKey:ascending:
+Objective-C/instm/NSSortDescriptor/initWithKey:ascending:comparator:
+Objective-C/instm/NSSortDescriptor/initWithKey:ascending:selector:
+Objective-C/instm/NSMapTable/initWithKeyOptions:valueOptions:capacity:
+Objective-C/instm/NSMapTable/initWithKeyPointerFunctions:valuePointerFunctions:capacity:
+Objective-C/instm/NSXMLNode/initWithKind:
+Objective-C/instm/NSXMLNode/initWithKind:options:
+Objective-C/instm/DRCDTextBlock/initWithLanguage:encoding:
+Objective-C/instm/CLLocation/initWithLatitude:longitude:
+Objective-C/instm/CALayer/initWithLayer:
+Objective-C/instm/NSComparisonPredicate/initWithLeftExpression:rightExpression:customSelector:
+Objective-C/instm/NSComparisonPredicate/initWithLeftExpression:rightExpression:modifier:type:options:
+Objective-C/instm/NSPredicateEditorRowTemplate/initWithLeftExpressions:rightExpressionAttributeType:modifier:operators:options:
+Objective-C/instm/NSPredicateEditorRowTemplate/initWithLeftExpressions:rightExpressions:modifier:operators:options:
+Objective-C/instm/NSMutableData/initWithLength:
+Objective-C/instm/NSLevelIndicatorCell/initWithLevelIndicatorStyle:
+Objective-C/instm/DRFile(VirtualLinks)/initWithLinkType:pointingTo:inFilesystem:
+Objective-C/instm/NSDistantObject/initWithLocal:connection:
+Objective-C/instm/NSLocale/initWithLocaleIdentifier:
+Objective-C/instm/NSNumber/initWithLong:
+Objective-C/instm/NSNumber/initWithLongLong:
+Objective-C/instm/NSMachPort/initWithMachPort:
+Objective-C/instm/NSMachPort/initWithMachPort:options:
+Objective-C/instm/WebArchive/initWithMainResource:subresources:subframeArchives:
+Objective-C/instm/NSPersistentStoreCoordinator/initWithManagedObjectModel:
+Objective-C/instm/NSDecimalNumber/initWithMantissa:exponent:isNegative:
+Objective-C/instm/NSTextList/initWithMarkerFormat:options:
+Objective-C/instm/NSURLCache/initWithMemoryCapacity:diskCapacity:diskPath:
+C++/instm/IOStreamBuffer/initWithMemoryDescriptors
+Objective-C/instm/QTMovieLayer/initWithMovie:
+Objective-C/instm/QTMovie/initWithMovie:timeRange:error:
+Objective-C/instm/NSColorList/initWithName:
+Objective-C/instm/NSXMLElement/initWithName:
+Objective-C/instm/PDFActionNamed/initWithName:
+Objective-C/instm/NSTimeZone/initWithName:
+Objective-C/instm/DRFolder(VirtualFolders)/initWithName:
+Objective-C/instm/IMKServer/initWithName:bundleIdentifier:
+Objective-C/instm/IMKServer/initWithName:controllerClass:delegateClass:
+Objective-C/instm/NSTimeZone/initWithName:data:
+Objective-C/instm/DRFile(VirtualFiles)/initWithName:data:
+Objective-C/instm/DRFile(VirtualFiles)/initWithName:dataProducer:
+Objective-C/instm/NSColorList/initWithName:fromFile:
+Objective-C/instm/NSException/initWithName:reason:userInfo:
+Objective-C/instm/NSXMLElement/initWithName:stringValue:
+Objective-C/instm/NSXMLElement/initWithName:URI:
+Objective-C/instm/WebFrame/initWithName:webFrameView:webView:
+Objective-C/instm/XGConnection/initWithNetService:
+Objective-C/instm/DRSetupPanel/initWithNibName:
+Objective-C/instm/NSViewController/initWithNibName:bundle:
+Objective-C/instm/NSNib/initWithNibNamed:bundle:
+Objective-C/instm/ODQuery/initWithNode:forRecordTypes:attribute:matchType:queryValues:returnAttributes:maximumResults:error:
+Objective-C/instm/NSNotificationQueue/initWithNotificationCenter:
+Objective-C/instm/NSAtomicStoreCacheNode/initWithObjectID:
+C++/instm/OSArray/initWithObjects
+C++/instm/OSDictionary/initWithObjects
+C++/instm/OSSet/initWithObjects
+Objective-C/instm/NSSet/initWithObjects:
+Objective-C/instm/NSArray/initWithObjects:
+Objective-C/instm/NSSet/initWithObjects:count:
+Objective-C/instm/NSArray/initWithObjects:count:
+Objective-C/instm/NSDictionary/initWithObjects:forKeys:
+Objective-C/instm/NSDictionary/initWithObjects:forKeys:count:
+Objective-C/instm/NSDictionary/initWithObjectsAndKeys:
+Objective-C/instm/NSSpecifierTest/initWithObjectSpecifier:comparisonOperator:testObject:
+Objective-C/instm/QCRenderer/initWithOpenGLContext:pixelFormat:file:
+C++/instm/IOMemoryDescriptor/initWithOptions
+Objective-C/instm/NSPointerFunctions/initWithOptions:
+Objective-C/instm/NSPointerArray/initWithOptions:
+Objective-C/instm/NSHashTable/initWithOptions:capacity:
+Objective-C/instm/ODSession/initWithOptions:error:
+Objective-C/instm/PDFDestination/initWithPage:atPoint:
+Objective-C/instm/PDFActionRemoteGoTo/initWithPageIndex:atPoint:fileURL:
+Objective-C/instm/NSSound/initWithPasteboard:
+Objective-C/instm/NSImage/initWithPasteboard:
+Objective-C/instm/QTMovie/initWithPasteboard:error:
+Objective-C/intfm/NSPasteboardReading/initWithPasteboardPropertyList:ofType:
+Objective-C/instm/NSDistributedLock/initWithPath:
+Objective-C/instm/DRFile/initWithPath:
+Objective-C/instm/DRFolder/initWithPath:
+Objective-C/instm/NSBundle/initWithPath:
+Objective-C/instm/NSFileWrapper/initWithPath:
+Objective-C/instm/NSAttributedString/initWithPath:documentAttributes:
+Objective-C/instm/NSPersistentStore/initWithPersistentStoreCoordinator:configurationName:URL:options:
+Objective-C/instm/NSAtomicStore/initWithPersistentStoreCoordinator:configurationName:URL:options:
+Objective-C/instm/NSColorPicker/initWithPickerMask:colorPanel:
+Objective-C/intfm/NSColorPickingDefault/initWithPickerMask:colorPanel:
+Objective-C/instm/QCPlugInViewController/initWithPlugIn:viewNibName:
+Objective-C/instm/NSPointerArray/initWithPointerFunctions:
+Objective-C/instm/NSHashTable/initWithPointerFunctions:capacity:
+Objective-C/instm/NSPositionalSpecifier/initWithPosition:objectSpecifier:
+Objective-C/instm/SBApplication/initWithProcessIdentifier:
+Objective-C/instm/DRTrack/initWithProducer:
+Objective-C/instm/SBObject/initWithProperties:
+Objective-C/instm/NSHTTPCookie/initWithProperties:
+Objective-C/instm/NSURLAuthenticationChallenge/initWithProtectionSpace:proposedCredential:previousFailureCount:failureResponse:error:sender:
+Objective-C/instm/NSSocketPort/initWithProtocolFamily:socketType:protocol:address:
+Objective-C/instm/NSSocketPort/initWithProtocolFamily:socketType:protocol:socket:
+Objective-C/instm/NSURLProtectionSpace/initWithProxyHost:port:type:realm:authenticationMethod:
+Objective-C/instm/QTMedia/initWithQuickTimeMedia:error:
+Objective-C/instm/QTMovie/initWithQuickTimeMovie:disposeWhenDone:error:
+Objective-C/instm/QTTrack/initWithQuickTimeTrack:error:
+Objective-C/instm/NSConnection/initWithReceivePort:sendPort:
+Objective-C/instm/NSPortCoder/initWithReceivePort:sendPort:components:
+Objective-C/instm/CIFilterShape/initWithRect:
+Objective-C/instm/NSTrackingArea/initWithRect:options:owner:userInfo:
+Objective-C/instm/QTDataReference/initWithReferenceToData:
+Objective-C/instm/QTDataReference/initWithReferenceToData:name:MIMEType:
+Objective-C/instm/QTDataReference/initWithReferenceToFile:
+Objective-C/instm/QTDataReference/initWithReferenceToURL:
+Objective-C/instm/NSTreeNode/initWithRepresentedObject:
+Objective-C/instm/WebDataSource/initWithRequest:
+Objective-C/instm/NSURLProtocol/initWithRequest:cachedResponse:client:
+Objective-C/instm/NSURLDownload/initWithRequest:delegate:
+Objective-C/instm/NSURLConnection/initWithRequest:delegate:
+Objective-C/instm/NSURLConnection/initWithRequest:delegate:startImmediately:
+Objective-C/instm/XGActionMonitor/initWithResource:action:parameters:
+Objective-C/instm/NSCachedURLResponse/initWithResponse:data:
+Objective-C/instm/NSCachedURLResponse/initWithResponse:data:userInfo:storagePolicy:
+Objective-C/instm/NSURLDownload/initWithResumeData:delegate:path:
+Objective-C/instm/NSXMLDocument/initWithRootElement:
+Objective-C/instm/NSDecimalNumberHandler/initWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:
+Objective-C/instm/NSAttributedString/initWithRTF:documentAttributes:
+Objective-C/instm/NSAttributedString/initWithRTFD:documentAttributes:
+Objective-C/instm/NSAttributedString/initWithRTFDFileWrapper:documentAttributes:
+Objective-C/instm/NSRulerMarker/initWithRulerView:markerLocation:image:imageOrigin:
+Objective-C/instm/NSURL/initWithScheme:host:path:
+Objective-C/instm/NSRulerView/initWithScrollView:orientation:
+Objective-C/instm/IOBluetoothOBEXSession/initWithSDPServiceRecord:
+Objective-C/instm/NSPortMessage/initWithSendPort:receivePort:components:
+Objective-C/instm/NSFileWrapper/initWithSerializedRepresentation:
+Objective-C/instm/IMKInputController/initWithServer:delegate:client:
+Objective-C/instm/IMKCandidates/initWithServer:panelType:
+Objective-C/instm/IOBluetoothSDPServiceRecord/initWithServiceDictionary:device:
+Objective-C/instm/QTCaptureLayer/initWithSession:
+Objective-C/instm/ODNode/initWithSession:name:error:
+Objective-C/instm/ODNode/initWithSession:type:error:
+C++/instm/OSSet/initWithSet
+Objective-C/instm/NSCountedSet/initWithSet:
+Objective-C/instm/NSSet/initWithSet:
+Objective-C/instm/NSSet/initWithSet:copyItems:
+Objective-C/instm/NSNumber/initWithShort:
+Objective-C/instm/NSImage/initWithSize:
+Objective-C/instm/NSCachedImageRep/initWithSize:depth:separate:alpha:
+Objective-C/instm/NSAppleScript/initWithSource:
+Objective-C/instm/NSMigrationManager/initWithSourceModel:destinationModel:
+C++/instm/IODMACommand/initWithSpecification
+C++/instm/IOMemoryCursor/initWithSpecification
+C++/instm/IODBDMAMemoryCursor/initWithSpecification
+C++/instm/IOMbufMemoryCursor/initWithSpecification
+C++/instm/IOBigMemoryCursor/initWithSpecification
+C++/instm/IONaturalMemoryCursor/initWithSpecification
+C++/instm/IOLittleMemoryCursor/initWithSpecification
+Objective-C/instm/NSGradient/initWithStartingColor:endingColor:
+C++/instm/OSString/initWithString
+C++/instm/OSSymbol/initWithString
+Objective-C/instm/CIVector/initWithString:
+Objective-C/instm/NSDecimalNumber/initWithString:
+Objective-C/instm/DRMSF/initWithString:
+Objective-C/instm/NSScanner/initWithString:
+Objective-C/instm/NSString/initWithString:
+Objective-C/instm/NSAttributedString/initWithString:
+Objective-C/instm/NSDate/initWithString:
+Objective-C/instm/NSURL/initWithString:
+Objective-C/instm/NSAttributedString/initWithString:attributes:
+Objective-C/instm/NSDecimalNumber/initWithString:locale:
+Objective-C/instm/NSURL/initWithString:relativeToURL:
+Objective-C/instm/NSScriptClassDescription/initWithSuiteName:className:dictionary:
+Objective-C/instm/NSScriptCommandDescription/initWithSuiteName:commandName:dictionary:
+Objective-C/instm/NSTextTableBlock/initWithTable:startingRow:rowSpan:startingColumn:columnSpan:
+Objective-C/instm/NSDistantObject/initWithTarget:connection:
+Objective-C/instm/NSProtocolChecker/initWithTarget:protocol:
+Objective-C/instm/NSInvocationOperation/initWithTarget:selector:object:
+Objective-C/instm/NSThread/initWithTarget:selector:object:
+Objective-C/instm/NSSocketPort/initWithTCPPort:
+Objective-C/instm/NSTextTab/initWithTextAlignment:location:options:
+Objective-C/instm/CIImage/initWithTexture:size:flipped:colorSpace:
+Objective-C/instm/NSOpenGLPixelBuffer/initWithTextureTarget:textureInternalFormat:textureMaxMipMapLevel:pixelsWide:pixelsHigh:
+Objective-C/instm/NSDate/initWithTimeInterval:sinceDate:
+Objective-C/instm/NSDate/initWithTimeIntervalSince1970:
+Objective-C/instm/NSDate/initWithTimeIntervalSinceNow:
+Objective-C/instm/NSDate/initWithTimeIntervalSinceReferenceDate:
+Objective-C/instm/NSMenu/initWithTitle:
+Objective-C/instm/NSMenuItem/initWithTitle:action:keyEquivalent:
+Objective-C/instm/NSAffineTransform/initWithTransform:
+Objective-C/instm/NSURLCredential/initWithTrust:
+Objective-C/instm/NSDocument/initWithType:error:
+Objective-C/instm/NSTextTab/initWithType:location:
+Objective-C/instm/IOBluetoothSDPDataElement/initWithType:sizeDescriptor:size:value:
+Objective-C/instm/NSCompoundPredicate/initWithType:subpredicates:
+Objective-C/instm/NSNumber/initWithUnsignedChar:
+Objective-C/instm/NSNumber/initWithUnsignedInt:
+Objective-C/instm/NSNumber/initWithUnsignedInteger:
+Objective-C/instm/NSNumber/initWithUnsignedLong:
+Objective-C/instm/NSNumber/initWithUnsignedLongLong:
+Objective-C/instm/NSNumber/initWithUnsignedShort:
+Objective-C/instm/SBApplication/initWithURL:
+Objective-C/instm/NSURLRequest/initWithURL:
+Objective-C/instm/PDFActionURL/initWithURL:
+Objective-C/instm/PDFDocument/initWithURL:
+Objective-C/instm/PSFeed/initWithURL:
+Objective-C/instm/NSInputStream/initWithURL:
+Objective-C/instm/NSBundle/initWithURL:
+Objective-C/instm/NSOutputStream/initWithURL:append:
+Objective-C/instm/NSURLHandle/initWithURL:cached:
+Objective-C/instm/NSURLRequest/initWithURL:cachePolicy:timeoutInterval:
+Objective-C/instm/NSAttributedString/initWithURL:documentAttributes:
+Objective-C/instm/QTMovie/initWithURL:error:
+Objective-C/instm/NSURLResponse/initWithURL:MIMEType:expectedContentLength:textEncodingName:
+Objective-C/instm/NSAttributedString/initWithURL:options:documentAttributes:error:
+Objective-C/instm/NSFileWrapper/initWithURL:options:error:
+Objective-C/instm/WebHistoryItem/initWithURLString:title:lastVisitedTimeInterval:
+Objective-C/instm/NSUserDefaults/initWithUser:
+Objective-C/instm/NSURLCredential/initWithUser:password:persistence:
+Objective-C/instm/NSString/initWithUTF8String:
+Objective-C/instm/IOBluetoothSDPUUID/initWithUUID16:
+Objective-C/instm/IOBluetoothSDPUUID/initWithUUID32:
+Objective-C/instm/CIVector/initWithValues:count:
+Objective-C/instm/ABPerson/initWithVCardRepresentation:
+Objective-C/instm/NSViewAnimation/initWithViewAnimations:
+Objective-C/instm/NSSpeechSynthesizer/initWithVoice:
+Objective-C/instm/NSWindowController/initWithWindow:
+Objective-C/instm/NSCachedImageRep/initWithWindow:rect:
+Objective-C/instm/NSWindowController/initWithWindowNibName:
+Objective-C/instm/NSWindowController/initWithWindowNibName:owner:
+Objective-C/instm/NSWindowController/initWithWindowNibPath:owner:
+Objective-C/instm/NSWindow/initWithWindowRef:
+C++/instm/IOCommandPool/initWithWorkLoop
+Objective-C/instm/CIVector/initWithX:
+Objective-C/instm/CIVector/initWithX:Y:
+Objective-C/instm/CIVector/initWithX:Y:Z:
+Objective-C/instm/CIVector/initWithX:Y:Z:W:
+Objective-C/instm/NSXMLDTDNode/initWithXMLString:
+Objective-C/instm/NSXMLElement/initWithXMLString:error:
+Objective-C/instm/NSXMLDocument/initWithXMLString:options:error:
+Objective-C/instm/CalRecurrenceRule/initYearlyRecurrenceWithInterval:end:
+Objective-C/instm/CalRecurrenceRule/initYearlyRecurrenceWithInterval:forDayOfTheWeek:forWeekOfTheMonth:forMonthsOfTheYear:end:
+Objective-C/instm/CalRecurrenceRule/initYearlyRecurrenceWithInterval:forMonthsOfTheYear:end:
+JavaScript/cl/-/InjectedScriptHost
+C/func/-/InkAddStrokeToCurrentPhrase
+C/tdef/-/InkAlternateCount
+C/tdef/-/InkApplicationModeType
+C/tdef/-/InkDrawingModeType
+C/tdef/-/InkGestureKind
+C/func/-/InkIsPhraseInProgress
+C/tdef/-/InkPoint
+C/tdef/-/InkRecognitionType
+C/func/-/InkSetApplicationRecognitionMode
+C/func/-/InkSetApplicationWritingMode
+C/func/-/InkSetDrawingMode
+C/func/-/InkSetPhraseTerminationMode
+C/func/-/InkStrokeGetPointCount
+C/func/-/InkStrokeGetPoints
+C/func/-/InkStrokeGetTypeID
+C/tdef/-/InkStrokeRef
+C/func/-/InkTerminateCurrentPhrase
+C/tdef/-/InkTerminationType
+C/func/-/InkTextAlternatesCount
+C/func/-/InkTextBounds
+C/func/-/InkTextCopy
+C/func/-/InkTextCreateCFString
+C/func/-/InkTextCreateFromCFData
+C/func/-/InkTextDraw
+C/func/-/InkTextFlatten
+C/func/-/InkTextGetStroke
+C/func/-/InkTextGetStrokeCount
+C/func/-/InkTextGetTypeID
+C/func/-/InkTextInsertAlternatesInMenu
+C/func/-/InkTextKeyModifiers
+C/tdef/-/InkTextRef
+C/func/-/InkUserWritingMode
+C/tdef/-/InkUserWritingModeType
+Objective-C/instm/NSWindow/inLiveResize
+Objective-C/instm/NSView/inLiveResize
+JavaScript/data/DOMWindow/innerHeight
+JavaScript/data/HTMLElement/innerHTML
+Objective-C/instm/NSMenuView/innerRect
+JavaScript/data/HTMLElement/innerText
+JavaScript/data/DOMWindow/innerWidth
+C/func/-/innetgr
+C/func/-/innstr
+C/func/-/innwstr
+C++/instm/IORegistryEntry/inPlane
+Objective-C/intfm/FxTimingAPI/inPointOfTimelineForEffect:
+Objective-C/instm/AMWorkflow/input
+C/macro/-/INPUT_CHUNK
+Objective-C/intfm/FxTimingAPI/inputATimeForTransition:fromTimelineTime:
+Objective-C/intfm/FxTimingAPI/inputBTimeForTransition:fromTimelineTime:
+C++/instm/IOStream/inputCallback
+Objective-C/instm/NSView/inputContext
+Objective-C/clm/QTCaptureDevice/inputDevices
+Objective-C/clm/QTCaptureDevice/inputDevicesWithMediaType:
+JavaScript/data/Document/inputEncoding
+C++/instm/IONetworkInterface/inputEvent
+Objective-C/instm/AMShellScriptAction/inputFieldSeparator
+Objective-C/instm/IKPictureTaker/inputImage
+Objective-C/instm/QCComposition/inputKeys
+Objective-C/instm/CIFilter/inputKeys
+Objective-C/intfm/QCCompositionRenderer/inputKeys
+C++/tag/IONetworkInterface/InputOptionQueuePacket
+C/econst/-/inputOutOfBounds
+C++/instm/IONetworkInterface/inputPacket
+Objective-C/instm/QTCaptureSession/inputs
+C++/data/IOAudioEngine/inputStreams
+Objective-C/clm/NSInputStream/inputStreamWithData:
+Objective-C/clm/NSInputStream/inputStreamWithFileAtPath:
+Objective-C/clm/NSInputStream/inputStreamWithURL:
+C++/instm/IOStream/inputSyncCallback
+Objective-C/instm/NSObject/inputText:client:
+Objective-C/instm/NSObject/inputText:key:modifiers:client:
+Objective-C/intfm/FxTimingAPI/inputTimeForFilter:fromTimelineTime:
+Objective-C/instm/IOBluetoothDeviceInquiry/inquiryLength
+Objective-C/clm/IOBluetoothDeviceInquiry/inquiryWithDelegate:
+C/func/-/ins_nwstr
+C/func/-/ins_wch
+C/func/-/ins_wstr
+C/func/-/insch
+C/func/-/insdelln
+Objective-C/instm/NSTreeController/insert:
+Objective-C/instm/NSArrayController/insert:
+Objective-C/instm/AMWorkflow/insertAction:atIndex:
+JavaScript/instm/HTMLElement/insertAdjacentElement
+JavaScript/instm/HTMLElement/insertAdjacentHTML
+JavaScript/instm/HTMLElement/insertAdjacentText
+C++/instm/IOFWCommand/insertAfter
+Objective-C/instm/NSMutableAttributedString/insertAttributedString:atIndex:
+Objective-C/instm/NSResponder/insertBacktab:
+JavaScript/instm/core/insertBefore
+JavaScript/instm/HTMLTableRowElement/insertCell
+Objective-C/instm/NSTreeController/insertChild:
+Objective-C/instm/NSXMLDTD/insertChild:atIndex:
+Objective-C/instm/NSXMLElement/insertChild:atIndex:
+Objective-C/instm/NSXMLDocument/insertChild:atIndex:
+Objective-C/instm/PDFOutline/insertChild:atIndex:
+Objective-C/instm/NSXMLDTD/insertChildren:atIndex:
+Objective-C/instm/NSXMLElement/insertChildren:atIndex:
+Objective-C/instm/NSXMLDocument/insertChildren:atIndex:
+Objective-C/instm/NSColorList/insertColor:key:atIndex:
+Objective-C/instm/NSMatrix/insertColumn:
+Objective-C/instm/NSMatrix/insertColumn:withCells:
+Objective-C/instm/NSTextView/insertCompletion:forPartialWordRange:movement:isFinal:
+Objective-C/instm/NSResponder/insertContainerBreak:
+JavaScript/instm/CharacterData/insertData
+Objective-C/instm/NSAppleEventDescriptor/insertDescriptor:atIndex:
+Objective-C/instm/NSResponder/insertDoubleQuoteIgnoringSubstitution:
+Objective-C/instm/NSManagedObjectContext/insertedObjects
+C/func/-/InsertEmptyMovieSegment
+Objective-C/instm/QTTrack/insertEmptySegmentAt:
+Objective-C/instm/QTMovie/insertEmptySegmentAt:
+C/func/-/InsertEmptyTrackSegment
+Objective-C/instm/NSForm/insertEntry:atIndex:
+Objective-C/instm/NSATSTypesetter/insertGlyph:atGlyphIndex:characterIndex:
+Objective-C/instm/NSLayoutManager/insertGlyph:atGlyphIndex:characterIndex:
+Objective-C/instm/NSTypesetter/insertGlyph:atGlyphIndex:characterIndex:
+Objective-C/intfm/NSGlyphStorage/insertGlyphs:length:forStartingGlyphAtIndex:characterIndex:
+Objective-C/instm/NSLayoutManager/insertGlyphs:length:forStartingGlyphAtIndex:characterIndex:
+JavaScript/data/SQLResultSet/insertId
+Objective-C/instm/NSPositionalSpecifier/insertionContainer
+Objective-C/instm/NSPositionalSpecifier/insertionIndex
+Objective-C/instm/NSPositionalSpecifier/insertionKey
+Objective-C/instm/NSTextView/insertionPointColor
+Objective-C/instm/NSPositionalSpecifier/insertionReplaces
+Objective-C/instm/NSMenu/insertItem:atIndex:
+JavaScript/instm/SVGNumberList/insertItemBefore
+JavaScript/instm/SVGLengthList/insertItemBefore
+JavaScript/instm/SVGTransformList/insertItemBefore
+JavaScript/instm/SVGStringList/insertItemBefore
+JavaScript/instm/SVGPathSegList/insertItemBefore
+JavaScript/instm/SVGPointList/insertItemBefore
+Objective-C/instm/NSToolbar/insertItemWithItemIdentifier:atIndex:
+Objective-C/instm/NSComboBox/insertItemWithObjectValue:atIndex:
+Objective-C/instm/NSComboBoxCell/insertItemWithObjectValue:atIndex:
+Objective-C/instm/NSMenu/insertItemWithTitle:action:keyEquivalent:atIndex:
+Objective-C/instm/NSPopUpButtonCell/insertItemWithTitle:atIndex:
+Objective-C/instm/NSPopUpButton/insertItemWithTitle:atIndex:
+Objective-C/instm/NSResponder/insertLineBreak:
+C/func/-/insertln
+C/func/-/InsertMediaIntoTrack
+C/func/-/InsertMovieSegment
+Objective-C/instm/NSColorPicker/insertNewButtonImage:in:
+Objective-C/intfm/NSColorPickingDefault/insertNewButtonImage:in:
+Objective-C/instm/NSResponder/insertNewline:
+Objective-C/instm/NSResponder/insertNewlineIgnoringFieldEditor:
+Objective-C/clm/NSEntityDescription/insertNewObjectForEntityForName:inManagedObjectContext:
+JavaScript/instm/Range/insertNode
+Objective-C/instm/NSManagedObjectContext/insertObject:
+Objective-C/instm/NSArrayController/insertObject:atArrangedObjectIndex:
+Objective-C/instm/NSTreeController/insertObject:atArrangedObjectIndexPath:
+Objective-C/instm/NSMutableArray/insertObject:atIndex:
+Objective-C/instm/NSArrayController/insertObjects:atArrangedObjectIndexes:
+Objective-C/instm/NSTreeController/insertObjects:atArrangedObjectIndexPaths:
+Objective-C/instm/NSMutableArray/insertObjects:atIndexes:
+Objective-C/instm/PDFDocument/insertPage:atIndex:
+Objective-C/instm/NSResponder/insertParagraphSeparator:
+Objective-C/instm/NSPointerArray/insertPointer:atIndex:
+C/func/-/InsertResourceFile
+JavaScript/instm/HTMLTableSectionElement/insertRow
+JavaScript/instm/HTMLTableElement/insertRow
+Objective-C/instm/NSMatrix/insertRow:
+Objective-C/instm/NSMatrix/insertRow:withCells:
+Objective-C/instm/NSRuleEditor/insertRowAtIndex:withType:asSubrowOfRow:animate:
+JavaScript/instm/CSSStyleSheet/insertRule
+JavaScript/instm/CSSMediaRule/insertRule
+JavaScript/instm/WebKitCSSKeyframesRule/insertRule
+Objective-C/instm/QTMovie/insertSegmentOfMovie:fromRange:scaledToRange:
+Objective-C/instm/QTMovie/insertSegmentOfMovie:timeRange:atTime:
+Objective-C/instm/QTTrack/insertSegmentOfTrack:fromRange:scaledToRange:
+Objective-C/instm/QTMovie/insertSegmentOfTrack:fromRange:scaledToRange:
+Objective-C/instm/QTTrack/insertSegmentOfTrack:timeRange:atTime:
+Objective-C/instm/QTMovie/insertSegmentOfTrack:timeRange:atTime:
+Objective-C/instm/NSResponder/insertSingleQuoteIgnoringSubstitution:
+Objective-C/instm/NSMutableString/insertString:atIndex:
+Objective-C/instm/CALayer/insertSublayer:above:
+Objective-C/instm/CALayer/insertSublayer:atIndex:
+Objective-C/instm/CALayer/insertSublayer:below:
+Objective-C/instm/NSResponder/insertTab:
+Objective-C/instm/NSResponder/insertTabIgnoringFieldEditor:
+Objective-C/instm/NSTabView/insertTabViewItem:atIndex:
+Objective-C/intfm/NSTextInput/insertText:
+Objective-C/instm/NSTextView/insertText:
+Objective-C/instm/NSResponder/insertText:
+Objective-C/intfm/IMKTextInput/insertText:replacementRange:
+Objective-C/intfm/NSTextInputClient/insertText:replacementRange:
+Objective-C/instm/NSLayoutManager/insertTextContainer:atIndex:
+C/func/-/InsertTrackSegment
+Objective-C/instm/NSObject/insertValue:atIndex:inPropertyWithKey:
+Objective-C/instm/NSObject/insertValue:inPropertyWithKey:
+Objective-C/instm/ABMutableMultiValue/insertValue:withLabel:atIndex:
+Objective-C/instm/CIFilterShape/insetByX:Y:
+C/func/-/insnstr
+Objective-C/instm/IBInspector/inspectedObjects
+Objective-C/instm/IBInspector/inspectedObjectsController
+JavaScript/instm/InspectorFrontendHost/inspectedURLChanged
+JavaScript/cl/-/InspectorBackend
+JavaScript/cl/-/InspectorFrontendHost
+C/func/-/insque
+C/func/-/insstr
+Objective-C/instp/CAReplicatorLayer/instanceAlphaOffset
+Objective-C/instm/CAReplicatorLayer/instanceAlphaOffset
+Objective-C/instp/CAReplicatorLayer/instanceBlueOffset
+Objective-C/instm/CAReplicatorLayer/instanceBlueOffset
+Objective-C/instm/CAReplicatorLayer/instanceColor
+Objective-C/instp/CAReplicatorLayer/instanceColor
+C++/instm/OSMetaClass/instanceConstructed
+Objective-C/instp/CAReplicatorLayer/instanceCount
+Objective-C/instm/CAReplicatorLayer/instanceCount
+Objective-C/instm/CAReplicatorLayer/instanceDelay
+Objective-C/instp/CAReplicatorLayer/instanceDelay
+C++/instm/OSMetaClass/instanceDestructed
+Objective-C/instp/CAReplicatorLayer/instanceGreenOffset
+Objective-C/instm/CAReplicatorLayer/instanceGreenOffset
+Objective-C/clm/NSObject/instanceMethodForSelector:
+Objective-C/clm/NSObject/instanceMethodSignatureForSelector:
+Objective-C/instp/CAReplicatorLayer/instanceRedOffset
+Objective-C/instm/CAReplicatorLayer/instanceRedOffset
+JavaScript/data/SVGUseElement/instanceRoot
+Objective-C/clm/NSObject/instancesRespondToSelector:
+Objective-C/instp/CAReplicatorLayer/instanceTransform
+Objective-C/instm/CAReplicatorLayer/instanceTransform
+C++/instm/IOBlockStorageDriver/instantiateDesiredMediaObject
+C++/instm/IOBlockStorageDriver/instantiateMediaObject
+Objective-C/instm/NSNib/instantiateNibWithExternalNameTable:
+Objective-C/instm/NSNib/instantiateNibWithOwner:topLevelObjects:
+C/func/-/instr
+JavaScript/clconst/WebGLRenderingContext/INT
+JavaScript/data/DOMWindow/Int16Array
+JavaScript/cl/-/Int16Array
+JavaScript/data/DOMWindow/Int32Array
+JavaScript/cl/-/Int32Array
+Objective-C/instm/NSAppleEventDescriptor/int32Value
+JavaScript/data/DOMWindow/Int8Array
+JavaScript/cl/-/Int8Array
+JavaScript/clconst/WebGLRenderingContext/INT_VEC2
+JavaScript/clconst/WebGLRenderingContext/INT_VEC3
+JavaScript/clconst/WebGLRenderingContext/INT_VEC4
+C++/clm/IOBufferMemoryDescriptor/inTaskWithOptions
+C++/clm/IOBufferMemoryDescriptor/inTaskWithPhysicalMask
+JavaScript/data/TestObj/intAttr
+Objective-C/instm/NSLayoutManager/intAttribute:forGlyphAtIndex:
+Objective-C/instm/NSUserDefaults/integerForKey:
+Objective-C/instm/NSActionCell/integerValue
+Objective-C/instm/NSNumber/integerValue
+Objective-C/instm/IMAVControl/integerValue
+Objective-C/instm/NSControl/integerValue
+Objective-C/instm/NSString/integerValue
+Objective-C/instm/NSCell/integerValue
+Objective-C/instm/NSMatrix/intercellSpacing
+Objective-C/instm/NSComboBox/intercellSpacing
+Objective-C/instm/NSComboBoxCell/intercellSpacing
+Objective-C/instm/IKImageBrowserView/intercellSpacing
+Objective-C/instm/NSTableView/intercellSpacing
+JavaScript/data/SVGComponentTransferFunctionElement/intercept
+Objective-C/clm/CWInterface/interface
+C/tag/-/Interface
+C/tag/-/InterfaceObjectStates
+Objective-C/instp/CWInterface/interfaceState
+Objective-C/instm/NSResponder/interfaceStyle
+Objective-C/clm/CWInterface/interfaceWithName:
+Objective-C/instm/NSCell/interiorBackgroundStyle
+Objective-C/instm/NSSegmentedCell/interiorBackgroundStyleForSegment:
+Objective-C/instm/PDFAnnotationCircle/interiorColor
+Objective-C/instm/PDFAnnotationSquare/interiorColor
+Objective-C/instm/PDFAnnotationLine/interiorColor
+JavaScript/data/DocumentType/internalSubset
+C/tdef/-/internalSubsetSAXFunc
+Objective-C/instm/NSNumberFormatter/internationalCurrencySymbol
+Objective-C/instm/NSGradient/interpolatedColorAtLocation:
+Objective-C/instm/NSResponder/interpretKeyEvents:
+Objective-C/instm/NSTask/interrupt
+C++/clm/IOInterruptEventSource/interruptEventSource
+C++/instm/IOInterruptEventSource/interruptOccurred
+C++/tdef/IOHIDInterface/InterruptReportAction
+Objective-C/instm/NSHashTable/intersectHashTable:
+C++/instm/IOFWAddressSpace/intersects
+Objective-C/instm/NSMutableSet/intersectSet:
+Objective-C/instm/NSHashTable/intersectsHashTable:
+Objective-C/instm/NSIndexSet/intersectsIndexesInRange:
+JavaScript/instm/Range/intersectsNode
+Objective-C/instm/NSSet/intersectsSet:
+Objective-C/instm/CIFilterShape/intersectWith:
+Objective-C/instm/CIFilterShape/intersectWithRect:
+Objective-C/instm/NSPrinter/intForKey:inTable:
+C++/data/IOInterruptEventSource/intIndex
+JavaScript/instm/TestObj/intMethod
+JavaScript/instm/TestObj/intMethodWithArgs
+C/func/-/intrflush
+C/func/-/intro
+Objective-C/instm/NSActionCell/intValue
+Objective-C/instm/NSNumber/intValue
+Objective-C/instm/IMAVControl/intValue
+Objective-C/instm/NSControl/intValue
+Objective-C/instm/NSString/intValue
+Objective-C/instm/NSCell/intValue
+C++/tdef/IOAudioControl/IntValueChangeHandler
+JavaScript/clconst/DOMCoreException/INUSE_ATTRIBUTE_ERR
+JavaScript/clconst/DOMCoreException/INVALID_ACCESS_ERR
+JavaScript/clconst/DOMCoreException/INVALID_CHARACTER_ERR
+JavaScript/clconst/WebGLRenderingContext/INVALID_ENUM
+JavaScript/clconst/XPathException/INVALID_EXPRESSION_ERR
+JavaScript/clconst/WebGLRenderingContext/INVALID_FRAMEBUFFER_OPERATION
+JavaScript/clconst/DOMCoreException/INVALID_MODIFICATION_ERR
+JavaScript/clconst/RangeException/INVALID_NODE_TYPE_ERR
+JavaScript/clconst/WebGLRenderingContext/INVALID_OPERATION
+JavaScript/clconst/DOMCoreException/INVALID_STATE_ERR
+JavaScript/clconst/WebGLRenderingContext/INVALID_VALUE
+Objective-C/instm/NSConnection/invalidate
+Objective-C/instm/NSTimer/invalidate
+Objective-C/instm/QTMovie/invalidate
+Objective-C/instm/NSPort/invalidate
+Objective-C/instm/NSTextStorage/invalidateAttributesInRange:
+Objective-C/instm/NSTextInputContext/invalidateCharacterCoordinates
+Objective-C/clm/NSClassDescription/invalidateClassDescriptionCache
+Objective-C/instm/SFAuthorization/invalidateCredentials
+Objective-C/instm/NSWindow/invalidateCursorRectsForView:
+Objective-C/instm/NSLayoutManager/invalidateDisplayForCharacterRange:
+Objective-C/instm/NSLayoutManager/invalidateDisplayForGlyphRange:
+Objective-C/instm/NSLayoutManager/invalidateGlyphsForCharacterRange:changeInLength:actualCharacterRange:
+Objective-C/instm/NSLayoutManager/invalidateGlyphsOnLayoutInvalidationForGlyphRange:
+Objective-C/instm/NSRulerView/invalidateHashMarks
+Objective-C/instm/NSLayoutManager/invalidateLayoutForCharacterRange:actualCharacterRange:
+Objective-C/instm/NSLayoutManager/invalidateLayoutForCharacterRange:isSoft:actualCharacterRange:
+Objective-C/instm/NSObject/invalidateLayoutOfLayer:
+Objective-C/instm/NSWindow/invalidateShadow
+Objective-C/instm/NSTextView/invalidateTextContainerOrigin
+C/econst/-/invalidComponentID
+JavaScript/data/XPathResult/invalidIteratorState
+JavaScript/instm/SVGMatrix/inverse
+JavaScript/instm/WebKitCSSMatrix/inverse
+Objective-C/instm/NSClassDescription/inverseForRelationshipKey:
+Objective-C/instm/NSObject/inverseForRelationshipKey:
+C/func/-/InverseMatrix
+Objective-C/instm/NSRelationshipDescription/inverseRelationship
+Objective-C/instm/NSMutableCharacterSet/invert
+Objective-C/instm/NSAffineTransform/invert
+JavaScript/clconst/WebGLRenderingContext/INVERT
+Objective-C/instm/NSCharacterSet/invertedSet
+Objective-C/instm/NSDistantObjectRequest/invocation
+Objective-C/instm/NSInvocationOperation/invocation
+Objective-C/clm/NSInvocation/invocationWithMethodSignature:
+Objective-C/instm/NSInvocation/invoke
+C/func/-/InvokeAliasFilterUPP
+C++/instm/IOFWAsyncStreamListener/invokeClients
+C/func/-/InvokeCMBitmapCallBackUPP
+C/func/-/InvokeCMConcatCallBackUPP
+C/func/-/InvokeCMFlattenUPP
+C/func/-/InvokeCMMIterateUPP
+C/func/-/InvokeCMProfileAccessUPP
+C/func/-/InvokeCMProfileFilterUPP
+C/func/-/InvokeCMProfileIterateUPP
+C/func/-/InvokeComponentMPWorkFunctionUPP
+C/func/-/InvokeComponentRoutineUPP
+C/func/-/InvokeDataBrowserAcceptDragUPP
+C/func/-/InvokeDataBrowserAddDragItemUPP
+C/func/-/InvokeDataBrowserDrawItemUPP
+C/func/-/InvokeDataBrowserEditItemUPP
+C/func/-/InvokeDataBrowserGetContextualMenuUPP
+C/func/-/InvokeDataBrowserHitTestUPP
+C/func/-/InvokeDataBrowserItemAcceptDragUPP
+C/func/-/InvokeDataBrowserItemCompareUPP
+C/func/-/InvokeDataBrowserItemDataUPP
+C/func/-/InvokeDataBrowserItemDragRgnUPP
+C/func/-/InvokeDataBrowserItemHelpContentUPP
+C/func/-/InvokeDataBrowserItemNotificationUPP
+C/func/-/InvokeDataBrowserItemNotificationWithItemUPP
+C/func/-/InvokeDataBrowserItemReceiveDragUPP
+C/func/-/InvokeDataBrowserItemUPP
+C/func/-/InvokeDataBrowserPostProcessDragUPP
+C/func/-/InvokeDataBrowserReceiveDragUPP
+C/func/-/InvokeDataBrowserSelectContextualMenuUPP
+C/func/-/InvokeDataBrowserTrackingUPP
+Objective-C/instm/NSObject/invokeDefaultMethodWithArguments:
+C/func/-/InvokeFNSubscriptionUPP
+C/func/-/InvokeFSVolumeEjectUPP
+C/func/-/InvokeFSVolumeMountUPP
+C/func/-/InvokeFSVolumeUnmountUPP
+C/func/-/InvokeGetMissingComponentResourceUPP
+C/func/-/InvokeIOCompletionUPP
+C/func/-/InvokePMIdleUPP
+C/func/-/InvokeQTTrackPropertyListenerUPP
+C/func/-/InvokeResErrUPP
+C/func/-/InvokeSelectorFunctionUPP
+C/func/-/InvokeSpeechDoneUPP
+C/func/-/InvokeSpeechErrorUPP
+C/func/-/InvokeSpeechPhonemeUPP
+C/func/-/InvokeSpeechSyncUPP
+C/func/-/InvokeSpeechTextDoneUPP
+C/func/-/InvokeSpeechWordUPP
+C/func/-/InvokeSRCallBackUPP
+Objective-C/instm/NSObject/invokeUndefinedMethodFromWebScript:withArguments:
+C/func/-/InvokeUnicodeToTextFallbackUPP
+C++/instm/TestInvocation/invokeWithTarget
+Objective-C/instm/NSInvocation/invokeWithTarget:
+C/func/-/inwstr
+C++/cl/-/IOAGPDevice
+C/func/-/IOAllowPowerChange
+C/tdef/-/IOAsyncCallback
+C/tdef/-/IOAsyncCallback0
+C/tdef/-/IOAsyncCallback1
+C/tdef/-/IOAsyncCallback2
+C++/cl/-/IOATABusCommand
+C++/cl/-/IOATABusInfo
+C++/cl/-/IOATACommand
+C/tdef/-/IOATACompletionFunction
+C++/cl/-/IOATAController
+C++/cl/-/IOATADevConfig
+C++/cl/-/IOATADevice
+C++/cl/-/IOATAPIProtocolTransport
+C/tdef/-/IOATASMARTInterface
+C++/cl/-/IOAudioControl
+C/tdef/-/IOAudioControlCalls
+C/tdef/-/IOAudioControlNotifications
+C++/cl/-/IOAudioDevice
+C/tdef/-/IOAudioDevicePowerState
+C++/cl/-/IOAudioEngine
+C/tdef/-/IOAudioEngineCalls
+C/tdef/-/IOAudioEngineMemory
+C/tdef/-/IOAudioEnginePosition
+C/tdef/-/IOAudioEngineState
+C/tdef/-/IOAudioEngineStatus
+C/func/-/IOAudioFlush
+C/func/-/IOAudioIsOutput
+C++/cl/-/IOAudioLevelControl
+C/tdef/-/IOAudioNotificationMessage
+C++/cl/-/IOAudioPort
+C/func/-/IOAudioSetErase
+C/tdef/-/IOAudioSMPTETime
+C++/cl/-/IOAudioStream
+C/tdef/-/IOAudioStreamDirection
+C++/cl/-/IOAudioToggleControl
+C++/cl/-/IOBasicOutputQueue
+C++/cl/-/IOBDBlockStorageDevice
+C++/cl/-/IOBDBlockStorageDriver
+C++/cl/-/IOBDMedia
+C++/cl/-/IOBigMemoryCursor
+C++/cl/-/IOBlockStorageDevice
+C++/cl/-/IOBlockStorageDriver
+C/func/-/IOBluetoothAddSCOAudioDevice
+C/func/-/IOBluetoothAddServiceDict
+C/tdef/-/IOBluetoothCreateConnectionCallback
+Objective-C/cl/-/IOBluetoothDevice
+C/func/-/IOBluetoothDeviceAddToFavorites
+C/func/-/IOBluetoothDeviceCloseConnection
+C/func/-/IOBluetoothDeviceCreateWithAddress
+C/func/-/IOBluetoothDeviceGetAddress
+C/func/-/IOBluetoothDeviceGetAddressString
+C/func/-/IOBluetoothDeviceGetClassOfDevice
+C/func/-/IOBluetoothDeviceGetClockOffset
+C/func/-/IOBluetoothDeviceGetConnectionHandle
+C/func/-/IOBluetoothDeviceGetDeviceClassMajor
+C/func/-/IOBluetoothDeviceGetDeviceClassMinor
+C/func/-/IOBluetoothDeviceGetEncryptionMode
+C/func/-/IOBluetoothDeviceGetLastInquiryUpdate
+C/func/-/IOBluetoothDeviceGetLastNameUpdate
+C/func/-/IOBluetoothDeviceGetLastServicesUpdate
+C/func/-/IOBluetoothDeviceGetLinkType
+C/func/-/IOBluetoothDeviceGetName
+C/func/-/IOBluetoothDeviceGetNameOrAddress
+C/func/-/IOBluetoothDeviceGetPageScanMode
+C/func/-/IOBluetoothDeviceGetPageScanPeriodMode
+C/func/-/IOBluetoothDeviceGetPageScanRepetitionMode
+C/func/-/IOBluetoothDeviceGetRecentAccessDate
+C/func/-/IOBluetoothDeviceGetServiceClassMajor
+C/func/-/IOBluetoothDeviceGetServiceRecordForUUID
+C/func/-/IOBluetoothDeviceGetServices
+Objective-C/cl/-/IOBluetoothDeviceInquiry
+C/func/-/IOBluetoothDeviceInquiryClearFoundDevices
+C/tdef/-/IOBluetoothDeviceInquiryCompleteCallback
+C/func/-/IOBluetoothDeviceInquiryCreateWithCallbackRefCon
+C/func/-/IOBluetoothDeviceInquiryDelete
+C/tdef/-/IOBluetoothDeviceInquiryDeviceFoundCallback
+C/tdef/-/IOBluetoothDeviceInquiryDeviceNameUpdatedCallback
+C/func/-/IOBluetoothDeviceInquiryGetFoundDevices
+C/func/-/IOBluetoothDeviceInquiryGetInquiryLength
+C/func/-/IOBluetoothDeviceInquiryGetUpdateNewDeviceNames
+C/func/-/IOBluetoothDeviceInquiryGetUserRefCon
+C/tdef/-/IOBluetoothDeviceInquiryRef
+C/func/-/IOBluetoothDeviceInquirySetCompleteCallback
+C/func/-/IOBluetoothDeviceInquirySetDeviceFoundCallback
+C/func/-/IOBluetoothDeviceInquirySetDeviceNameUpdatedCallback
+C/func/-/IOBluetoothDeviceInquirySetInquiryLength
+C/func/-/IOBluetoothDeviceInquirySetSearchCriteria
+C/func/-/IOBluetoothDeviceInquirySetStartedCallback
+C/func/-/IOBluetoothDeviceInquirySetUpdateNewDeviceNames
+C/func/-/IOBluetoothDeviceInquirySetUpdatingNamesStartedCallback
+C/func/-/IOBluetoothDeviceInquirySetUserRefCon
+C/func/-/IOBluetoothDeviceInquiryStart
+C/tdef/-/IOBluetoothDeviceInquiryStartedCallback
+C/func/-/IOBluetoothDeviceInquiryStop
+C/tdef/-/IOBluetoothDeviceInquiryUpdatingNamesStartedCallback
+C/func/-/IOBluetoothDeviceIsConnected
+C/func/-/IOBluetoothDeviceIsFavorite
+C/func/-/IOBluetoothDeviceIsPaired
+C/func/-/IOBluetoothDeviceOpenConnection
+C/func/-/IOBluetoothDeviceOpenConnectionWithOptions
+C/func/-/IOBluetoothDeviceOpenL2CAPChannel
+C/func/-/IOBluetoothDeviceOpenL2CAPChannelAsync
+C/func/-/IOBluetoothDeviceOpenL2CAPChannelSync
+C/func/-/IOBluetoothDeviceOpenRFCOMMChannel
+C/func/-/IOBluetoothDeviceOpenRFCOMMChannelAsync
+C/func/-/IOBluetoothDeviceOpenRFCOMMChannelSync
+Objective-C/cl/-/IOBluetoothDevicePair
+C/func/-/IOBluetoothDevicePerformSDPQuery
+C/func/-/IOBluetoothDeviceRegisterForDisconnectNotification
+C/func/-/IOBluetoothDeviceRemoteNameRequest
+C/func/-/IOBluetoothDeviceRemoteNameRequestWithTimeout
+C/func/-/IOBluetoothDeviceRemoveFromFavorites
+C/func/-/IOBluetoothDeviceRequestAuthentication
+C/tdef/-/IOBluetoothDeviceSearchAttributes
+C/tag/-/IOBluetoothDeviceSearchAttributes
+C/tdef/-/IOBluetoothDeviceSearchDeviceAttributes
+C/tag/-/IOBluetoothDeviceSearchDeviceAttributes
+C/tdef/-/IOBluetoothDeviceSearchOptions
+C/tag/-/IOBluetoothDeviceSearchOptionsBits
+Objective-C/cl/-/IOBluetoothDeviceSelectorController
+C/func/-/IOBluetoothDeviceSelectorRunPanelWithAttributes
+C/func/-/IOBluetoothDeviceSendL2CAPEchoRequest
+C/func/-/IOBluetoothFavoriteDevices
+C/func/-/IOBluetoothFindNumberOfRegistryEntriesOfClassName
+C/func/-/IOBluetoothGetDeviceSelectorController
+C/func/-/IOBluetoothGetObjectIDFromArguments
+C/func/-/IOBluetoothGetPairingController
+C/func/-/IOBluetoothGetUniqueFileNameAndPath
+C/func/-/IOBluetoothGetVersion
+C/tdef/-/IOBluetoothHandsFreeFeatures
+Objective-C/cl/-/IOBluetoothHandsFreeGateway
+Objective-C/cl/-/IOBluetoothHeadsetDevice
+Objective-C/cl/-/IOBluetoothHostController
+C/func/-/IOBluetoothIgnoreHIDDevice
+C/func/-/IOBluetoothIsFileAppleDesignatedPIMData
+Objective-C/cl/-/IOBluetoothL2CAPChannel
+C/func/-/IOBluetoothL2CAPChannelCloseChannel
+C/func/-/IOBluetoothL2CAPChannelCreateFromObjectID
+C/tdef/-/IOBluetoothL2CAPChannelDataBlock
+C/tdef/-/IOBluetoothL2CAPChannelEvent
+C/tdef/-/IOBluetoothL2CAPChannelEventType
+C/func/-/IOBluetoothL2CAPChannelGetDevice
+C/func/-/IOBluetoothL2CAPChannelGetIncomingMTU
+C/func/-/IOBluetoothL2CAPChannelGetLocalChannelID
+C/func/-/IOBluetoothL2CAPChannelGetObjectID
+C/func/-/IOBluetoothL2CAPChannelGetOutgoingMTU
+C/func/-/IOBluetoothL2CAPChannelGetPSM
+C/func/-/IOBluetoothL2CAPChannelGetRemoteChannelID
+C/tdef/-/IOBluetoothL2CAPChannelIncomingDataListener
+C/tdef/-/IOBluetoothL2CAPChannelIncomingEventListener
+C/func/-/IOBluetoothL2CAPChannelIsIncoming
+C/func/-/IOBluetoothL2CAPChannelRegisterForChannelCloseNotification
+C/func/-/IOBluetoothL2CAPChannelRegisterIncomingDataListener
+C/func/-/IOBluetoothL2CAPChannelRegisterIncomingEventListener
+C/func/-/IOBluetoothL2CAPChannelRequestRemoteMTU
+C/func/-/IOBluetoothL2CAPChannelWrite
+C/func/-/IOBluetoothL2CAPChannelWriteAsync
+C/func/-/IOBluetoothL2CAPChannelWriteSync
+C/func/-/IOBluetoothLocalDeviceAvailable
+C/func/-/IOBluetoothLocalDeviceGetDiscoverable
+C/func/-/IOBluetoothLocalDeviceGetPowerState
+C/func/-/IOBluetoothLocalDeviceReadAddress
+C/func/-/IOBluetoothLocalDeviceReadAuthenticationEnable
+C/func/-/IOBluetoothLocalDeviceReadClassOfDevice
+C/func/-/IOBluetoothLocalDeviceReadConnectionAcceptTimeout
+C/func/-/IOBluetoothLocalDeviceReadEncryptionMode
+C/func/-/IOBluetoothLocalDeviceReadName
+C/func/-/IOBluetoothLocalDeviceReadPageScanMode
+C/func/-/IOBluetoothLocalDeviceReadPageScanPeriodMode
+C/func/-/IOBluetoothLocalDeviceReadPageTimeout
+C/func/-/IOBluetoothLocalDeviceReadScanEnable
+C/func/-/IOBluetoothLocalDeviceReadSupportedFeatures
+C/func/-/IOBluetoothLocalDeviceReadVersionInformation
+C/func/-/IOBluetoothNSStringFromDeviceAddress
+C/func/-/IOBluetoothNSStringToDeviceAddress
+C/func/-/IOBluetoothNumberOfAvailableHIDDevices
+C/func/-/IOBluetoothNumberOfKeyboardHIDDevices
+C/func/-/IOBluetoothNumberOfPointingHIDDevices
+C/func/-/IOBluetoothNumberOfTabletHIDDevices
+Objective-C/cl/-/IOBluetoothOBEXSession
+C/func/-/IOBluetoothOBEXSessionCreateWithIncomingIOBluetoothRFCOMMChannel
+C/func/-/IOBluetoothOBEXSessionCreateWithIOBluetoothDeviceRefAndChannelNumber
+C/func/-/IOBluetoothOBEXSessionCreateWithIOBluetoothSDPServiceRecordRef
+C/func/-/IOBluetoothOBEXSessionOpenTransportConnection
+Objective-C/cl/-/IOBluetoothObjectPushUIController
+C/func/-/IOBluetoothObjectRelease
+C/func/-/IOBluetoothObjectRetain
+C/func/-/IOBluetoothPackData
+C/func/-/IOBluetoothPairedDevices
+Objective-C/cl/-/IOBluetoothPairingController
+C/func/-/IOBluetoothPairingControllerRunPanelWithAttributes
+C/func/-/IOBluetoothRecentDevices
+C/func/-/IOBluetoothRegisterForDeviceConnectNotifications
+C/func/-/IOBluetoothRegisterForFilteredL2CAPChannelOpenNotifications
+C/func/-/IOBluetoothRegisterForFilteredRFCOMMChannelOpenNotifications
+C/func/-/IOBluetoothRegisterForL2CAPChannelOpenNotifications
+C/func/-/IOBluetoothRegisterForRFCOMMChannelOpenNotifications
+C/tdef/-/IOBluetoothRemoteNameRequestCallback
+C/func/-/IOBluetoothRemoveIgnoredHIDDevice
+C/func/-/IOBluetoothRemoveSCOAudioDevice
+C/func/-/IOBluetoothRemoveServiceWithRecordHandle
+Objective-C/cl/-/IOBluetoothRFCOMMAudioController
+Objective-C/cl/-/IOBluetoothRFCOMMChannel
+C/func/-/IOBluetoothRFCOMMChannelCloseChannel
+C/func/-/IOBluetoothRFCOMMChannelCreateFromObjectID
+C/tdef/-/IOBluetoothRFCOMMChannelEvent
+C/tdef/-/IOBluetoothRFCOMMChannelEventType
+C/func/-/IOBluetoothRFCOMMChannelGetChannelID
+C/func/-/IOBluetoothRFCOMMChannelGetDevice
+C/func/-/IOBluetoothRFCOMMChannelGetMTU
+C/func/-/IOBluetoothRFCOMMChannelGetObjectID
+C/tdef/-/IOBluetoothRFCOMMChannelIncomingDataListener
+C/tdef/-/IOBluetoothRFCOMMChannelIncomingEventListener
+C/func/-/IOBluetoothRFCOMMChannelIsIncoming
+C/func/-/IOBluetoothRFCOMMChannelIsOpen
+C/func/-/IOBluetoothRFCOMMChannelIsTransmissionPaused
+C/func/-/IOBluetoothRFCOMMChannelRegisterForChannelCloseNotification
+C/func/-/IOBluetoothRFCOMMChannelRegisterIncomingDataListener
+C/func/-/IOBluetoothRFCOMMChannelRegisterIncomingEventListener
+C/func/-/IOBluetoothRFCOMMChannelWrite
+C/func/-/IOBluetoothRFCOMMChannelWriteAsync
+C/func/-/IOBluetoothRFCOMMChannelWriteSimple
+C/func/-/IOBluetoothRFCOMMChannelWriteSync
+C/tdef/-/IOBluetoothRFCOMMDataBlock
+C/tdef/-/IOBluetoothRFCOMMFlowControlStatus
+C/func/-/IOBluetoothRFCOMMSendRemoteLineStatus
+C/func/-/IOBluetoothRFCOMMSetSerialParameters
+Objective-C/cl/-/IOBluetoothSDPDataElement
+C/func/-/IOBluetoothSDPDataElementContainsDataElement
+C/func/-/IOBluetoothSDPDataElementGetArrayValue
+C/func/-/IOBluetoothSDPDataElementGetDataValue
+C/func/-/IOBluetoothSDPDataElementGetNumberValue
+C/func/-/IOBluetoothSDPDataElementGetSize
+C/func/-/IOBluetoothSDPDataElementGetSizeDescriptor
+C/func/-/IOBluetoothSDPDataElementGetStringValue
+C/func/-/IOBluetoothSDPDataElementGetTypeDescriptor
+C/func/-/IOBluetoothSDPDataElementGetUUIDValue
+C/func/-/IOBluetoothSDPDataElementIsEqualToDataElement
+C/tdef/-/IOBluetoothSDPQueryCallback
+Objective-C/cl/-/IOBluetoothSDPServiceAttribute
+Objective-C/cl/-/IOBluetoothSDPServiceRecord
+C/func/-/IOBluetoothSDPServiceRecordGetAttributeDataElement
+C/func/-/IOBluetoothSDPServiceRecordGetAttributes
+C/func/-/IOBluetoothSDPServiceRecordGetDevice
+C/func/-/IOBluetoothSDPServiceRecordGetL2CAPPSM
+C/func/-/IOBluetoothSDPServiceRecordGetRFCOMMChannelID
+C/func/-/IOBluetoothSDPServiceRecordGetServiceName
+C/func/-/IOBluetoothSDPServiceRecordGetServiceRecordHandle
+C/func/-/IOBluetoothSDPServiceRecordHasServiceFromArray
+Objective-C/cl/-/IOBluetoothSDPUUID
+C/func/-/IOBluetoothSDPUUIDCreateUUID16
+C/func/-/IOBluetoothSDPUUIDCreateUUID32
+C/func/-/IOBluetoothSDPUUIDCreateWithBytes
+C/func/-/IOBluetoothSDPUUIDCreateWithData
+C/func/-/IOBluetoothSDPUUIDGetBytes
+C/func/-/IOBluetoothSDPUUIDGetLength
+C/func/-/IOBluetoothSDPUUIDGetUUIDWithLength
+C/func/-/IOBluetoothSDPUUIDIsEqualToUUID
+Objective-C/cl/-/IOBluetoothServiceBrowserController
+C/func/-/IOBluetoothServiceBrowserControllerBrowseDevices
+C/func/-/IOBluetoothServiceBrowserControllerCreate
+C/func/-/IOBluetoothServiceBrowserControllerDiscover
+C/func/-/IOBluetoothServiceBrowserControllerDiscoverWithDeviceAttributes
+C/tdef/-/IOBluetoothServiceBrowserControllerOptions
+C/tag/-/IOBluetoothServiceBrowserControllerOptions
+C/func/-/IOBluetoothServiceBrowserControllerSetOptions
+C/func/-/IOBluetoothSetSupervisionTimeout
+C/func/-/IOBluetoothUnpackData
+Objective-C/cl/-/IOBluetoothUserNotification
+C/tdef/-/IOBluetoothUserNotificationCallback
+C/func/-/IOBluetoothUserNotificationUnregister
+C/func/-/IOBSDNameMatching
+C++/cl/-/IOBufferMemoryDescriptor
+C/func/-/IOCancelPowerChange
+C++/cl/-/IOCatalogue
+C/tag/-/IOCatalogueGetData
+C/tag/-/IOCatalogueReset
+C/tag/-/IOCatalogueSendData
+C/tag/-/IOCatalogueTerminate
+C++/cl/-/IOCDBlockStorageDevice
+C++/cl/-/IOCDMedia
+C/tag/-/IOColorEntry
+C++/cl/-/IOCommand
+C++/cl/-/IOCommandGate
+C++/cl/-/IOCommandPool
+C/tdef/-/IOCompletionProcPtr
+C/tdef/-/IOCompletionUPP
+C++/cl/-/IOConfigDirectory
+C/func/-/IOConnectAddClient
+C/func/-/IOConnectAddRef
+C/func/-/IOConnectGetService
+C/func/-/IOConnectMapMemory
+C/func/-/IOConnectMapMemory64
+C/func/-/IOConnectRelease
+C/func/-/IOConnectSetCFProperties
+C/func/-/IOConnectSetCFProperty
+C/func/-/IOConnectSetNotificationPort
+C/func/-/IOConnectUnmapMemory
+C/func/-/IOConnectUnmapMemory64
+C/func/-/IOCopySystemLoadAdvisoryDetailed
+C/macro/-/IOCreateDisplayInfoDictionary
+C/func/-/IOCreateReceivePort
+C/func/-/IOCreateThread
+C/func/-/ioctl
+C++/cl/-/IODataQueue
+C/func/-/IODataQueueAllocateNotificationPort
+C/tdef/-/IODataQueueAppendix
+C/func/-/IODataQueueDataAvailable
+C/func/-/IODataQueueDequeue
+C/func/-/IODataQueueEnqueue
+C/tdef/-/IODataQueueEntry
+C/tdef/-/IODataQueueMemory
+C/func/-/IODataQueuePeek
+C/func/-/IODataQueueSetNotificationPort
+C/func/-/IODataQueueWaitForAvailableData
+C++/cl/-/IODBDMAMemoryCursor
+C++/cl/-/IODCLProgram
+C++/cl/-/IODCLTranslateListen
+C++/cl/-/IODCLTranslateTalk
+C++/cl/-/IODCLTranslator
+C/tdef/-/IODebuggerLockState
+C/tdef/-/IODebuggerRxHandler
+C/tdef/-/IODebuggerTxHandler
+C/func/-/IODelay
+C/func/-/IODeregisterApp
+C/func/-/IODeregisterForSystemPower
+C/tag/-/IODetailedTimingInformationV2
+C++/cl/-/IODeviceMemory
+C++/instm/IOPCIDevice/ioDeviceMemory
+C/tag/-/IODirection
+C/econst/-/ioDirFlg
+C/econst/-/ioDirMask
+C/func/-/IODispatchCalloutFromMessage
+C/func/-/IODisplayCreateInfoDictionary
+C/tag/-/IODisplayDictionaryOptions
+C/func/-/IODisplayMatchDictionaries
+C/tag/-/IODisplayModeInformation
+C/tag/-/IODisplayScalerInformation
+C/tag/-/IODisplayTimingRange
+C++/cl/-/IODMACommand
+C/tdef/-/IODot3CollEntry
+C/tdef/-/IODot3RxExtraEntry
+C/tdef/-/IODot3StatsEntry
+C/tdef/-/IODot3TxExtraEntry
+C++/cl/-/IODVDBlockStorageDevice
+C++/cl/-/IODVDBlockStorageDriver
+C++/cl/-/IODVDMedia
+C/econst/-/ioErr
+C++/cl/-/IOEthernetController
+C++/cl/-/IOEthernetInterface
+C/tdef/-/IOEthernetStats
+C++/cl/-/IOEventSource
+C++/macro/-/IOEventSourceAction
+C/func/-/IOExitThread
+C++/cl/-/IOExtendedLBA
+C/macro/-/IOFB_ARBITRARY_SIZE_CURSOR
+C/func/-/IOFBCopyI2CInterfaceForBus
+C/func/-/IOFBCreateDisplayModeDictionary
+C/func/-/IOFBCreateSharedCursor
+C/func/-/IOFBGetCurrentDisplayModeAndDepth
+C/func/-/IOFBGetDisplayModeCount
+C/func/-/IOFBGetDisplayModeInformation
+C/func/-/IOFBGetDisplayModes
+C/func/-/IOFBGetFramebufferInformationForAperture
+C/func/-/IOFBGetFramebufferOffsetForAperture
+C/func/-/IOFBGetI2CInterfaceCount
+C/func/-/IOFBGetPixelFormat
+C/func/-/IOFBGetPixelFormats
+C/func/-/IOFBGetPixelInfoDictionary
+C/func/-/IOFBGetPixelInformation
+C/func/-/IOFBSet256To888Table
+C/func/-/IOFBSet444To555Table
+C/func/-/IOFBSet555To444Table
+C/func/-/IOFBSet888To256Table
+C/func/-/IOFBSetBounds
+C/func/-/IOFBSetCLUT
+C/func/-/IOFBSetCursorPosition
+C/func/-/IOFBSetCursorVisible
+C/func/-/IOFBSetDisplayModeAndDepth
+C/func/-/IOFBSetGamma
+C/func/-/IOFBSetNewCursor
+C/func/-/IOFBSetStartupDisplayModeAndDepth
+C++/macro/-/IOFilterInterruptAction
+C++/cl/-/IOFilterInterruptEventSource
+C++/cl/-/IOFilterScheme
+C/cl/-/IOFireWireAsyncStreamCommandInterface
+C++/cl/-/IOFireWireAVCAsynchronousCommand
+C++/cl/-/IOFireWireAVCCommand
+C/cl/-/IOFireWireAVCLibConsumerInterface
+C/cl/-/IOFireWireAVCLibProtocolInterface
+C/cl/-/IOFireWireAVCLibUnitInterface
+C++/cl/-/IOFireWireAVCNub
+C++/cl/-/IOFireWireAVCSubUnit
+C++/cl/-/IOFireWireAVCTargetSpace
+C++/cl/-/IOFireWireAVCUnit
+C++/cl/-/IOFireWireBus
+C++/cl/-/IOFireWireBusAux
+C/tdef/-/IOFireWireBusResetDoneHandler
+C/tdef/-/IOFireWireBusResetHandler
+C/cl/-/IOFireWireCommandInterface
+C/cl/-/IOFireWireCompareSwapCommandInterface
+C/cl/-/IOFireWireCompareSwapCommandInterface_v3
+C/cl/-/IOFireWireConfigDirectoryInterface
+C++/cl/-/IOFireWireController
+C++/cl/-/IOFireWireControllerAux
+C/cl/-/IOFireWireDCLCommandPoolInterface
+C++/cl/-/IOFireWireDevice
+C++/cl/-/IOFireWireDeviceAux
+C/cl/-/IOFireWireDeviceInterface
+C++/cl/-/IOFireWireIRMAllocation
+C/cl/-/IOFireWireIsochChannelInterface
+C/cl/-/IOFireWireIsochPortInterface
+C/tdef/-/IOFireWireLibCommandCallback
+C/cl/-/IOFireWireLibIRMAllocationInterface
+C/tdef/-/IOFireWireLibIRMAllocationLostNotificationProc
+C/tdef/-/IOFireWireLibPHYPacketCallback
+C/cl/-/IOFireWireLibPHYPacketListenerInterface
+C/tdef/-/IOFireWireLibPHYPacketSkippedCallback
+C/cl/-/IOFireWireLibVectorCommandInterface
+C/cl/-/IOFireWireLocalIsochPortInterface
+C++/cl/-/IOFireWireLocalNode
+C++/cl/-/IOFireWireLocalNodeAux
+C/cl/-/IOFireWireLocalUnitDirectoryInterface
+C++/cl/-/IOFireWireMultiIsochReceiveListener
+C++/cl/-/IOFireWireMultiIsochReceivePacket
+C++/cl/-/IOFireWireNub
+C++/cl/-/IOFireWireNubAux
+C/cl/-/IOFireWireNubInterface
+C/cl/-/IOFireWireNuDCLPoolInterface
+C/tdef/-/IOFireWirePCRCallback
+C++/cl/-/IOFireWirePCRSpace
+C/cl/-/IOFireWirePHYCommandInterface
+C/cl/-/IOFireWirePhysicalAddressSpaceInterface
+C++/cl/-/IOFireWirePowerManager
+C/cl/-/IOFireWirePseudoAddressSpaceInterface
+C/tdef/-/IOFireWirePseudoAddressSpaceReadHandler
+C/tdef/-/IOFireWirePseudoAddressSpaceSkippedPacketHandler
+C/tdef/-/IOFireWirePseudoAddressSpaceWriteHandler
+C/cl/-/IOFireWireReadCommandInterface
+C/cl/-/IOFireWireReadQuadletCommandInterface
+C/cl/-/IOFireWireRemoteIsochPortInterface
+C/cl/-/IOFireWireSBP2LibLoginInterface
+C/cl/-/IOFireWireSBP2LibLUNInterface
+C/cl/-/IOFireWireSBP2LibMgmtORBInterface
+C/cl/-/IOFireWireSBP2LibORBInterface
+C++/cl/-/IOFireWireSBP2Login
+C++/cl/-/IOFireWireSBP2LSIWorkaroundDescriptor
+C++/cl/-/IOFireWireSBP2LUN
+C++/cl/-/IOFireWireSBP2ManagementORB
+C++/cl/-/IOFireWireSBP2ORB
+C++/cl/-/IOFireWireSBP2Target
+C++/cl/-/IOFireWireSerialBusProtocolTransport
+C++/cl/-/IOFireWireUnit
+C++/cl/-/IOFireWireUnitAux
+C/cl/-/IOFireWireUnitInterface
+C/cl/-/IOFireWireWriteCommandInterface
+C/cl/-/IOFireWireWriteQuadletCommandInterface
+C/func/-/IOFlushProcessorCache
+C++/cl/-/IOFramebuffer
+C/macro/-/IOFRAMEBUFFER_CONFORMSTO
+C/func/-/IOFree
+C/func/-/IOFreeAligned
+C/func/-/IOFreeContiguous
+C/func/-/IOFreePageable
+C++/cl/-/IOFWAddressSpace
+C++/cl/-/IOFWAddressSpaceAux
+C++/cl/-/IOFWAsyncCommand
+C++/cl/-/IOFWAsyncPHYCommand
+C++/cl/-/IOFWAsyncStreamCommand
+C++/cl/-/IOFWAsyncStreamListener
+C/tdef/-/IOFWAsyncStreamListenerHandler
+C/cl/-/IOFWAsyncStreamListenerInterface
+C/tdef/-/IOFWAsyncStreamListenerSkippedPacketHandler
+C/tdef/-/IOFWAVCCommandHandlerCallback
+C/tdef/-/IOFWAVCPCRCallback
+C/tdef/-/IOFWAVCRequestCallback
+C/tdef/-/IOFWAVCSubunitPlugHandlerCallback
+C++/cl/-/IOFWBusCommand
+C/tag/-/IOFWCmdQ
+C++/cl/-/IOFWCommand
+C++/cl/-/IOFWCompareAndSwapCommand
+C++/cl/-/IOFWDCL
+C++/cl/-/IOFWDCLPool
+C++/cl/-/IOFWDelayCommand
+C++/cl/-/IOFWIsochChannel
+C++/cl/-/IOFWIsochPort
+C++/cl/-/IOFWLocalIsochPort
+C++/cl/-/IOFWPHYPacketListener
+C++/cl/-/IOFWPhysicalAddressSpace
+C++/cl/-/IOFWPhysicalAddressSpaceAux
+C++/cl/-/IOFWPseudoAddressSpace
+C++/cl/-/IOFWPseudoAddressSpaceAux
+C++/cl/-/IOFWReadQuadCommand
+C++/cl/-/IOFWReceiveDCL
+C/tdef/-/IOFWSBP2FetchAgentWriteCallback
+C/tdef/-/IOFWSBP2LoginCallback
+C/tdef/-/IOFWSBP2LogoutCallback
+C/tdef/-/IOFWSBP2NotifyCallback
+C/tdef/-/IOFWSBP2ORBAppendCallback
+C/tdef/-/IOFWSBP2ORBCompleteCallback
+C/tdef/-/IOFWSBP2StatusCallback
+C++/cl/-/IOFWSendDCL
+C++/cl/-/IOFWSimpleContiguousPhysicalAddressSpace
+C++/cl/-/IOFWSimplePhysicalAddressSpace
+C++/cl/-/IOFWSkipCycleDCL
+C++/cl/-/IOFWWriteQuadCommand
+C++/cl/-/IOGatedOutputQueue
+C/func/-/IOGetSystemLoadAdvisory
+C/tag/-/IOHardwareCursorDescriptor
+C/tag/-/IOHardwareCursorInfo
+C/tdef/-/IOHIDCallback
+C/tdef/-/IOHIDCallbackFunction
+C/tdef/-/IOHIDCompletion
+C/tdef/-/IOHIDCompletionAction
+C++/cl/-/IOHIDDevice
+C/tdef/-/IOHIDDeviceCallback
+C/func/-/IOHIDDeviceClose
+C/func/-/IOHIDDeviceConformsTo
+C/func/-/IOHIDDeviceCopyMatchingElements
+C/func/-/IOHIDDeviceCopyValueMultiple
+C/func/-/IOHIDDeviceCopyValueMultipleWithCallback
+C/func/-/IOHIDDeviceCreate
+C/cl/-/IOHIDDeviceDeviceInterface
+C/func/-/IOHIDDeviceGetProperty
+C/func/-/IOHIDDeviceGetReport
+C/func/-/IOHIDDeviceGetReportWithCallback
+C/func/-/IOHIDDeviceGetService
+C/func/-/IOHIDDeviceGetTypeID
+C/func/-/IOHIDDeviceGetValue
+C/func/-/IOHIDDeviceGetValueWithCallback
+C/cl/-/IOHIDDeviceInterface
+C/cl/-/IOHIDDeviceInterface121
+C/cl/-/IOHIDDeviceInterface122
+C/func/-/IOHIDDeviceOpen
+C/cl/-/IOHIDDeviceQueueInterface
+C/tdef/-/IOHIDDeviceRef
+C/func/-/IOHIDDeviceRegisterInputReportCallback
+C/func/-/IOHIDDeviceRegisterInputValueCallback
+C/func/-/IOHIDDeviceRegisterRemovalCallback
+C/func/-/IOHIDDeviceScheduleWithRunLoop
+C/func/-/IOHIDDeviceSetInputValueMatching
+C/func/-/IOHIDDeviceSetInputValueMatchingMultiple
+C/func/-/IOHIDDeviceSetProperty
+C/func/-/IOHIDDeviceSetReport
+C/func/-/IOHIDDeviceSetReportWithCallback
+C/func/-/IOHIDDeviceSetValue
+C/func/-/IOHIDDeviceSetValueMultiple
+C/func/-/IOHIDDeviceSetValueMultipleWithCallback
+C/func/-/IOHIDDeviceSetValueWithCallback
+C/cl/-/IOHIDDeviceTransactionInterface
+C/func/-/IOHIDDeviceUnscheduleFromRunLoop
+C/func/-/IOHIDElementAttach
+C/tdef/-/IOHIDElementCallbackFunction
+C/tdef/-/IOHIDElementCollectionType
+C/tag/-/IOHIDElementCollectionType
+C/tdef/-/IOHIDElementCookie
+C/func/-/IOHIDElementCopyAttached
+C/func/-/IOHIDElementCreateWithDictionary
+C/func/-/IOHIDElementDetach
+C/func/-/IOHIDElementGetChildren
+C/func/-/IOHIDElementGetCollectionType
+C/func/-/IOHIDElementGetCookie
+C/func/-/IOHIDElementGetDevice
+C/func/-/IOHIDElementGetLogicalMax
+C/func/-/IOHIDElementGetLogicalMin
+C/func/-/IOHIDElementGetName
+C/func/-/IOHIDElementGetParent
+C/func/-/IOHIDElementGetPhysicalMax
+C/func/-/IOHIDElementGetPhysicalMin
+C/func/-/IOHIDElementGetProperty
+C/func/-/IOHIDElementGetReportCount
+C/func/-/IOHIDElementGetReportID
+C/func/-/IOHIDElementGetReportSize
+C/func/-/IOHIDElementGetType
+C/func/-/IOHIDElementGetTypeID
+C/func/-/IOHIDElementGetUnit
+C/func/-/IOHIDElementGetUnitExponent
+C/func/-/IOHIDElementGetUsage
+C/func/-/IOHIDElementGetUsagePage
+C/func/-/IOHIDElementHasNullState
+C/func/-/IOHIDElementHasPreferredState
+C/func/-/IOHIDElementIsArray
+C/func/-/IOHIDElementIsNonLinear
+C/func/-/IOHIDElementIsRelative
+C/func/-/IOHIDElementIsVirtual
+C/func/-/IOHIDElementIsWrapping
+C/tdef/-/IOHIDElementRef
+C/func/-/IOHIDElementSetProperty
+C/tag/-/IOHIDElementType
+C/tdef/-/IOHIDElementType
+C++/cl/-/IOHIDInterface
+C/func/-/IOHIDManagerClose
+C/func/-/IOHIDManagerCopyDevices
+C/func/-/IOHIDManagerCreate
+C/func/-/IOHIDManagerGetProperty
+C/func/-/IOHIDManagerGetTypeID
+C/func/-/IOHIDManagerOpen
+C/tdef/-/IOHIDManagerRef
+C/func/-/IOHIDManagerRegisterDeviceMatchingCallback
+C/func/-/IOHIDManagerRegisterDeviceRemovalCallback
+C/func/-/IOHIDManagerRegisterInputReportCallback
+C/func/-/IOHIDManagerRegisterInputValueCallback
+C/func/-/IOHIDManagerScheduleWithRunLoop
+C/func/-/IOHIDManagerSetDeviceMatching
+C/func/-/IOHIDManagerSetDeviceMatchingMultiple
+C/func/-/IOHIDManagerSetInputValueMatching
+C/func/-/IOHIDManagerSetInputValueMatchingMultiple
+C/func/-/IOHIDManagerSetProperty
+C/func/-/IOHIDManagerUnscheduleFromRunLoop
+C/tag/-/IOHIDOptionsType
+C/tdef/-/IOHIDOptionsType
+C/cl/-/IOHIDOutputTransactionInterface
+C++/cl/-/IOHIDPointing
+C/func/-/IOHIDQueueAddElement
+C/func/-/IOHIDQueueContainsElement
+C/func/-/IOHIDQueueCopyNextValue
+C/func/-/IOHIDQueueCopyNextValueWithTimeout
+C/func/-/IOHIDQueueCreate
+C/func/-/IOHIDQueueGetDepth
+C/func/-/IOHIDQueueGetDevice
+C/func/-/IOHIDQueueGetTypeID
+C/cl/-/IOHIDQueueInterface
+C/tdef/-/IOHIDQueueOptionsType
+C/tag/-/IOHIDQueueOptionsType
+C/tdef/-/IOHIDQueueRef
+C/func/-/IOHIDQueueRegisterValueAvailableCallback
+C/func/-/IOHIDQueueRemoveElement
+C/func/-/IOHIDQueueScheduleWithRunLoop
+C/func/-/IOHIDQueueSetDepth
+C/func/-/IOHIDQueueStart
+C/func/-/IOHIDQueueStop
+C/func/-/IOHIDQueueUnscheduleFromRunLoop
+C/tdef/-/IOHIDReportCallback
+C/tdef/-/IOHIDReportCallbackFunction
+C/cl/-/IOHIDReportHandler
+C/tag/-/IOHIDReportOption
+C/tdef/-/IOHIDReportType
+C/tag/-/IOHIDReportType
+C/func/-/IOHIDTransactionAddElement
+C/func/-/IOHIDTransactionClear
+C/func/-/IOHIDTransactionCommit
+C/func/-/IOHIDTransactionCommitWithCallback
+C/func/-/IOHIDTransactionContainsElement
+C/func/-/IOHIDTransactionCreate
+C/tdef/-/IOHIDTransactionDirectionType
+C/tag/-/IOHIDTransactionDirectionType
+C/func/-/IOHIDTransactionGetDevice
+C/func/-/IOHIDTransactionGetDirection
+C/func/-/IOHIDTransactionGetTypeID
+C/func/-/IOHIDTransactionGetValue
+C/tag/-/IOHIDTransactionOption
+C/tdef/-/IOHIDTransactionRef
+C/func/-/IOHIDTransactionRemoveElement
+C/func/-/IOHIDTransactionScheduleWithRunLoop
+C/func/-/IOHIDTransactionSetDirection
+C/func/-/IOHIDTransactionSetValue
+C/func/-/IOHIDTransactionUnscheduleFromRunLoop
+C/tdef/-/IOHIDValueCallback
+C/func/-/IOHIDValueCreateWithBytes
+C/func/-/IOHIDValueCreateWithBytesNoCopy
+C/func/-/IOHIDValueCreateWithIntegerValue
+C/func/-/IOHIDValueGetBytePtr
+C/func/-/IOHIDValueGetElement
+C/func/-/IOHIDValueGetIntegerValue
+C/func/-/IOHIDValueGetLength
+C/func/-/IOHIDValueGetScaledValue
+C/func/-/IOHIDValueGetTimeStamp
+C/func/-/IOHIDValueGetTypeID
+C/tdef/-/IOHIDValueMultipleCallback
+C/tdef/-/IOHIDValueRef
+C/tag/-/IOHIDValueScaleType
+C/tdef/-/IOHIDValueScaleType
+C/tag/-/IOI2CBusTiming
+C++/cl/-/IOI2CInterface
+C/func/-/IOI2CInterfaceClose
+C/func/-/IOI2CInterfaceOpen
+C/tag/-/IOI2CRequest
+C/func/-/IOI2CSendRequest
+C++/cl/-/IOInterleavedMemoryDescriptor
+C++/macro/-/IOInterruptEventAction
+C++/cl/-/IOInterruptEventSource
+C/func/-/IOIteratorIsValid
+C/func/-/IOIteratorNext
+C/func/-/IOIteratorReset
+C++/cl/-/IOKernelDebugger
+C/macro/-/iokit_usb_err
+C/macro/-/iokit_usb_msg
+C/macro/-/iokit_vendor_specific_msg
+C/func/-/IOKitGetBusyState
+C/func/-/IOKitWaitQuiet
+C++/cl/-/IOLittleMemoryCursor
+C++/cl/-/IOLocalConfigDirectory
+C/func/-/IOLockAlloc
+C/func/-/IOLockFree
+C/func/-/IOLockGetMachLock
+C/data/-/IOLockGroup
+C/func/-/IOLockLock_multideclaration_block
+C/func/-/IOLockTryLock_multideclaration_block
+C/func/-/IOLockUnlock_multideclaration_block
+C/func/-/IOLog
+C/func/-/IOLogv
+C/tag/-/IOMakeMatching
+C/func/-/IOMalloc
+C/func/-/IOMallocAligned
+C/func/-/IOMallocContiguous
+C/func/-/IOMallocPageable
+C/func/-/IOMappedRead16
+C/func/-/IOMappedRead32
+C/func/-/IOMappedRead64
+C/func/-/IOMappedRead8
+C/func/-/IOMappedWrite16
+C/func/-/IOMappedWrite32
+C/func/-/IOMappedWrite64
+C/func/-/IOMappedWrite8
+C/func/-/IOMasterPort
+C++/cl/-/IOMbufBigMemoryCursor
+C++/cl/-/IOMbufDBDMAMemoryCursor
+C++/cl/-/IOMbufLittleMemoryCursor
+C++/cl/-/IOMbufMemoryCursor
+C++/cl/-/IOMbufNaturalMemoryCursor
+C++/cl/-/IOMedia
+C/tag/-/IOMediaAttributeMask
+C/tag/-/IOMediaState
+C/tdef/-/IOMediumType
+C++/cl/-/IOMemoryCursor
+C++/cl/-/IOMemoryDescriptor
+C++/cl/-/IOMemoryMap
+C++/cl/-/IOMultiMemoryDescriptor
+C++/cl/-/IONaturalMemoryCursor
+C/func/-/IONetworkClose
+C++/cl/-/IONetworkController
+C++/cl/-/IONetworkData
+C/func/-/IONetworkGetDataCapacity
+C/func/-/IONetworkGetDataHandle
+C/func/-/IONetworkGetPacketFiltersMask
+C++/cl/-/IONetworkInterface
+C++/cl/-/IONetworkMedium
+C/func/-/IONetworkOpen
+C/tag/-/IONetworkPacketFilterOptions
+C/func/-/IONetworkReadData
+C/func/-/IONetworkResetData
+C/func/-/IONetworkSetPacketFiltersMask
+C/tdef/-/IONetworkStats
+C++/cl/-/IONetworkUserClient
+C/func/-/IONetworkWriteData
+C/func/-/IONotificationPortCreate
+C/func/-/IONotificationPortDestroy
+C/func/-/IONotificationPortGetMachPort
+C/func/-/IONotificationPortGetRunLoopSource
+C++/cl/-/IONotifier
+C/func/-/IOObjectConformsTo
+C/func/-/IOObjectCopyBundleIdentifierForClass
+C/func/-/IOObjectCopyClass
+C/func/-/IOObjectCopySuperclassForClass
+C/func/-/IOObjectGetClass
+C/func/-/IOObjectGetKernelRetainCount
+C/func/-/IOObjectGetRetainCount
+C/func/-/IOObjectGetUserRetainCount
+C/func/-/IOObjectIsEqualTo
+C/func/-/IOObjectRelease
+C/func/-/IOObjectRetain
+C/func/-/IOOpenFirmwarePathMatching
+C/tag/-/IOOptionBits
+C/tdef/-/IOOutputAction
+C++/cl/-/IOOutputQueue
+C/tdef/-/IOOutputQueueStats
+C/tdef/-/IOPacketBufferConstraints
+C++/cl/-/IOPacketQueue
+C++/clconst/IOPacketQueue/IOPacketQueueDefaultCapacity
+C/tdef/-/IOParam
+C++/cl/-/IOPartitionScheme
+C/func/-/IOPause
+C++/cl/-/IOPCI2PCIBridge
+C++/cl/-/IOPCIATA
+C++/cl/-/IOPCIConfigurator
+C++/cl/-/IOPCIDevice
+C++/macro/-/IOPhysicalSegment
+C/tag/-/IOPixelInformation
+C/func/-/IOPMAssertionCreate
+C/func/-/IOPMAssertionCreateWithName
+C/tdef/-/IOPMAssertionID
+C/tdef/-/IOPMAssertionLevel
+C/func/-/IOPMAssertionRelease
+C/func/-/IOPMCancelScheduledPowerEvent
+C/func/-/IOPMCopyAssertionsByProcess
+C/func/-/IOPMCopyAssertionsStatus
+C/func/-/IOPMCopyBatteryInfo
+C/func/-/IOPMCopyScheduledPowerEvents
+C/func/-/IOPMFindPowerManagement
+C/func/-/IOPMGetAggressiveness
+C/tag/-/IOPMPowerFlags
+C/tdef/-/IOPMPowerFlags
+C/tag/-/IOPMPowerState
+C/func/-/IOPMSchedulePowerEvent
+C/func/-/IOPMSetAggressiveness
+C/func/-/IOPMSleepEnabled
+C/func/-/IOPMSleepSystem
+C/func/-/IOPSCopyExternalPowerAdapterDetails
+C/func/-/IOPSCopyPowerSourcesInfo
+C/func/-/IOPSCopyPowerSourcesList
+C/func/-/IOPSGetBatteryWarningLevel
+C/func/-/IOPSGetPowerSourceDescription
+C/func/-/IOPSNotificationCreateRunLoopSource
+C++/cl/-/IORangeAllocator
+C++/instm/IOPCIDevice/ioRead16
+C++/instm/IOPCIDevice/ioRead32
+C++/instm/IOPCIDevice/ioRead8
+C/func/-/IORegisterApp
+C/func/-/IORegisterForSystemPower
+C/func/-/IORegistryCreateIterator
+C++/cl/-/IORegistryEntry
+C/func/-/IORegistryEntryCreateCFProperties
+C/func/-/IORegistryEntryCreateCFProperty
+C/func/-/IORegistryEntryCreateIterator
+C/func/-/IORegistryEntryFromPath
+C/func/-/IORegistryEntryGetChildEntry
+C/func/-/IORegistryEntryGetChildIterator
+C/func/-/IORegistryEntryGetLocationInPlane
+C/func/-/IORegistryEntryGetName
+C/func/-/IORegistryEntryGetNameInPlane
+C/func/-/IORegistryEntryGetParentEntry
+C/func/-/IORegistryEntryGetParentIterator
+C/func/-/IORegistryEntryGetPath
+C/func/-/IORegistryEntryGetRegistryEntryID
+C/func/-/IORegistryEntryIDMatching
+C/func/-/IORegistryEntryInPlane
+Objective-C/instm/DRDevice(InfoConvenience)/ioRegistryEntryPath
+C/func/-/IORegistryEntrySearchCFProperty
+C/func/-/IORegistryEntrySetCFProperties
+C/func/-/IORegistryEntrySetCFProperty
+C/func/-/IORegistryGetRootEntry
+C++/cl/-/IORegistryIterator
+C/func/-/IORegistryIteratorEnterEntry
+C/func/-/IORegistryIteratorExitEntry
+C++/cl/-/IORemoteConfigDirectory
+C++/cl/-/IOSCSIParallelInterfaceController
+C++/cl/-/IOSCSIProtocolInterface
+C++/cl/-/IOService
+C/func/-/IOServiceAddInterestNotification
+C/func/-/IOServiceAddMatchingNotification
+C/func/-/IOServiceClose
+C/func/-/IOServiceGetBusyState
+C/func/-/IOServiceGetMatchingService
+C/func/-/IOServiceGetMatchingServices
+C/tdef/-/IOServiceInterestCallback
+C/tdef/-/IOServiceInterestHandler
+C/func/-/IOServiceMatching
+C/tdef/-/IOServiceMatchingCallback
+C/func/-/IOServiceMatchPropertyTable
+C/func/-/IOServiceNameMatching
+C/tdef/-/IOServiceNotificationHandler
+C/func/-/IOServiceOFPathToBSDName
+C/func/-/IOServiceOpen
+C/func/-/IOServiceRequestProbe
+C/func/-/IOServiceWaitQuiet
+C/func/-/IOSetProcessorCacheMode
+C++/cl/-/IOSharedDataQueue
+C/func/-/IOSleep
+C++/cl/-/IOStorage
+C/tag/-/IOStorageAccess
+C/tag/-/IOStorageAttributes
+C/tag/-/IOStorageCompletion
+C/tdef/-/IOStorageCompletionAction
+C/tag/-/IOStorageOptions
+C/tag/-/IOStream
+C++/cl/-/IOStream
+C++/cl/-/IOStreamBuffer
+C/tdef/-/IOStreamBufferID
+C/tag/-/IOStreamBufferQueue
+C/tag/-/IOStreamBufferQueueEntry
+C/tdef/-/IOStreamOutputCallback
+C/tdef/-/IOStreamRef
+C++/cl/-/IOSubMemoryDescriptor
+C/tdef/-/IOSystemLoadAdvisoryLevel
+C/macro/-/IOThreadSelf
+C++/cl/-/IOTimerEventSource
+C/tdef/-/IOUPSEventCallbackFunction
+C/cl/-/IOUPSPlugInInterface
+C++/cl/-/IOUSBCommand
+C/tdef/-/IOUSBCompletion
+C/tdef/-/IOUSBCompletionAction
+C/tdef/-/IOUSBCompletionActionWithTimeStamp
+C/tdef/-/IOUSBCompletionWithTimeStamp
+C++/cl/-/IOUSBCompositeDriver
+C/tdef/-/IOUSBConfigurationDescHeader
+C/tag/-/IOUSBConfigurationDescHeader
+C/tag/-/IOUSBConfigurationDescriptor
+C/tdef/-/IOUSBConfigurationDescriptor
+C++/cl/-/IOUSBController
+C++/cl/-/IOUSBControllerListElement
+C++/cl/-/IOUSBControllerV2
+C++/cl/-/IOUSBControllerV3
+C/tdef/-/IOUSBDescriptorHeader
+C/tag/-/IOUSBDescriptorHeader
+C++/cl/-/IOUSBDevice
+C/tag/-/IOUSBDeviceDescriptor
+C/tdef/-/IOUSBDeviceDescriptor
+C/cl/-/IOUSBDeviceInterface
+C/cl/-/IOUSBDeviceInterface182
+C/cl/-/IOUSBDeviceInterface187
+C/cl/-/IOUSBDeviceInterface197
+C/cl/-/IOUSBDeviceInterface245
+C/cl/-/IOUSBDeviceInterface300
+C/cl/-/IOUSBDeviceInterface320
+C/tag/-/IOUSBDeviceQualifierDescriptor
+C/tdef/-/IOUSBDeviceQualifierDescriptor
+C/tdef/-/IOUSBDevRequest
+C/tdef/-/IOUSBDevRequestDesc
+C/tdef/-/IOUSBDevRequestTO
+C/tag/-/IOUSBDFUDescriptor
+C/tdef/-/IOUSBDFUDescriptor
+C/tdef/-/IOUSBEndpointDescriptor
+C/tag/-/IOUSBEndpointDescriptor
+C/tdef/-/IOUSBFindEndpointRequest
+C/tdef/-/IOUSBFindInterfaceRequest
+C/tdef/-/IOUSBGetFrameStruct
+C/tag/-/IOUSBHIDDescriptor
+C/tdef/-/IOUSBHIDDescriptor
+C++/cl/-/IOUSBHIDDriver
+C/tag/-/IOUSBHIDReportDesc
+C/tdef/-/IOUSBHIDReportDesc
+C/tdef/-/IOUSBHubDescriptor
+C/tag/-/IOUSBHubDescriptor
+C++/cl/-/IOUSBHubDevice
+C++/cl/-/IOUSBHubPolicyMaker
+C/tdef/-/IOUSBHubPortReEnumerateParam
+C/tdef/-/IOUSBHubStatus
+C/tag/-/IOUSBHubStatus
+C++/cl/-/IOUSBInterface
+C/tag/-/IOUSBInterfaceAssociationDescriptor
+C/tdef/-/IOUSBInterfaceAssociationDescriptor
+C/tag/-/IOUSBInterfaceDescriptor
+C/tdef/-/IOUSBInterfaceDescriptor
+C/cl/-/IOUSBInterfaceInterface
+C/cl/-/IOUSBInterfaceInterface182
+C/cl/-/IOUSBInterfaceInterface183
+C/cl/-/IOUSBInterfaceInterface190
+C/cl/-/IOUSBInterfaceInterface192
+C/cl/-/IOUSBInterfaceInterface197
+C/tdef/-/IOUSBIsocCompletion
+C/tdef/-/IOUSBIsocCompletionAction
+C/tdef/-/IOUSBIsocFrame
+C/tdef/-/IOUSBLowLatencyIsocCompletion
+C/tdef/-/IOUSBLowLatencyIsocCompletionAction
+C/tag/-/IOUSBLowLatencyIsocFrame
+C/tdef/-/IOUSBLowLatencyIsocFrame
+C++/cl/-/IOUSBNub
+C++/cl/-/IOUSBPipe
+C++/cl/-/IOUSBRootHubDevice
+C++/cl/-/IOUSBWorkLoop
+C++/cl/-/IOUserClient
+C/func/-/IOVirtualRangeMake
+C++/cl/-/IOWorkLoop
+C++/instm/IOPCIDevice/ioWrite16
+C++/instm/IOPCIDevice/ioWrite32
+C++/instm/IOPCIDevice/ioWrite8
+C/func/-/ipf_addv4
+C/func/-/ipf_addv6
+C/tdef/-/ipf_detach_func
+C/tag/-/ipf_filter
+C/func/-/ipf_inject_input
+C/func/-/ipf_inject_output
+C/tdef/-/ipf_input_func
+C/tdef/-/ipf_output_func
+C/func/-/ipf_remove
+C/tdef/-/ipfilter_t
+C/func/-/ipsec_dump_policy
+C/func/-/ipsec_get_policylen
+C/func/-/ipsec_set_policy
+C/func/-/ipsec_strerror
+C/func/-/iruserok
+C/func/-/iruserok_sa
+Objective-C/intfm/Fx3DAPI/is3D
+C/macro/-/IS_ASCII_DIGIT
+C/macro/-/IS_ASCII_LETTER
+C/macro/-/IS_BASECHAR
+C/macro/-/IS_BLANK
+C/macro/-/IS_BLANK_CH
+C/macro/-/IS_BYTE_CHAR
+C/macro/-/IS_CHAR
+C/macro/-/IS_CHAR_CH
+C/func/-/is_cleared
+C/macro/-/IS_COMBINING
+C/macro/-/IS_COMBINING_CH
+C/macro/-/IS_DIGIT
+C/macro/-/IS_DIGIT_CH
+C/macro/-/IS_EXTENDER
+C/macro/-/IS_EXTENDER_CH
+C/func/-/is_idcok
+C/macro/-/IS_IDEOGRAPHIC
+C/func/-/is_idlok
+C/func/-/is_immedok
+C/func/-/is_keypad
+C/func/-/is_leaveok
+C/macro/-/IS_LETTER
+C/macro/-/IS_LETTER_CH
+C/func/-/is_linetouched
+C/func/-/is_nodelay
+C/func/-/is_notimeout
+C/macro/-/IS_PUBIDCHAR
+C/macro/-/IS_PUBIDCHAR_CH
+C/func/-/is_scrollok
+C/func/-/is_syncok
+C/func/-/is_term_resized
+C/func/-/is_timeout
+C/func/-/is_wintouched
+C/macro/-/IS_XSLT_ELEM
+C/macro/-/IS_XSLT_NAME
+C/macro/-/IS_XSLT_REAL_NODE
+Objective-C/instm/NSString/isAbsolutePath
+Objective-C/instm/NSEntityDescription/isAbstract
+Objective-C/instm/NSColorWell/isActive
+Objective-C/instm/NSRunningApplication/isActive
+Objective-C/instm/NSApplication/isActive
+Objective-C/instm/CAPropertyAnimation/isAdditive
+C/func/-/IsAliasFile
+Objective-C/instp/CalEvent/isAllDay
+Objective-C/instm/CalEvent/isAllDay
+C/func/-/isalnum
+C/func/-/isalnum_l
+C/func/-/isalpha
+C/func/-/isalpha_l
+Objective-C/instm/NSMenuItem/isAlternate
+C/func/-/ISAMAX
+Objective-C/instm/ScreenSaverView/isAnimating
+Objective-C/instm/QCCompositionPickerView/isAnimating
+Objective-C/instm/NSAnimation/isAnimating
+Objective-C/clm/NSSpeechSynthesizer/isAnyApplicationSpeaking
+Objective-C/instm/NSEvent/isARepeat
+C/func/-/isascii
+C/func/-/isascii_l
+Objective-C/instm/CAOpenGLLayer/isAsynchronous
+Objective-C/instm/NSUnarchiver/isAtEnd
+Objective-C/instm/NSScanner/isAtEnd
+JavaScript/instp/Error/isATError
+Objective-C/instm/NSMenuView/isAttached
+Objective-C/instm/NSMenu/isAttached
+C/func/-/isatty
+C/func/-/IsAudioFormatNativeEndian
+Objective-C/instm/NSWindow/isAutodisplay
+Objective-C/instm/NSTextView/isAutomaticDashSubstitutionEnabled
+Objective-C/instm/NSTextView/isAutomaticDataDetectionEnabled
+Objective-C/instm/NSTextView/isAutomaticLinkDetectionEnabled
+Objective-C/instm/NSTextView/isAutomaticQuoteSubstitutionEnabled
+Objective-C/instm/NSTextView/isAutomaticSpellingCorrectionEnabled
+Objective-C/instm/NSTextView/isAutomaticTextReplacementEnabled
+Objective-C/instm/NSMatrix/isAutoscroll
+Objective-C/instm/QTMovieView/isBackButtonVisible
+Objective-C/instm/NSFont/isBaseFont
+Objective-C/instm/NSProgressIndicator/isBezeled
+Objective-C/instm/NSDatePicker/isBezeled
+Objective-C/instm/NSTextField/isBezeled
+Objective-C/instm/NSCell/isBezeled
+C/func/-/isblank
+C/func/-/isblank_l
+Objective-C/instm/NSButton/isBordered
+Objective-C/instm/NSColorWell/isBordered
+Objective-C/instm/NSDatePicker/isBordered
+Objective-C/instm/NSTextField/isBordered
+Objective-C/instm/NSCell/isBordered
+JavaScript/instm/WebGLRenderingContext/isBuffer
+Objective-C/instm/NSComboBox/isButtonBordered
+Objective-C/instm/NSComboBoxCell/isButtonBordered
+Objective-C/instm/NSPortCoder/isBycopy
+Objective-C/instm/NSPortCoder/isByref
+Objective-C/instm/NSImage/isCachedSeparately
+Objective-C/instm/NSOperation/isCancelled
+Objective-C/instm/ISyncSession/isCancelled
+Objective-C/instm/NSThread/isCancelled
+Objective-C/instm/NSObject/isCaseInsensitiveLike:
+C++/instm/IORegistryEntry/isChild
+Objective-C/instm/XGConnection/isClosed
+C/func/-/iscntrl
+C/func/-/iscntrl_l
+Objective-C/instm/NSTextView/isCoalescingUndo
+JavaScript/data/DOMSelection/isCollapsed
+Objective-C/instm/NSGarbageCollector/isCollecting
+Objective-C/instm/NSPrinter/isColor
+Objective-C/instm/NSTableView/isColumnSelected:
+Objective-C/instm/NSAppleScript/isCompiled
+Objective-C/instm/CalTask/isCompleted
+Objective-C/instp/CalTask/isCompleted
+Objective-C/instm/NSOperation/isConcurrent
+Objective-C/instm/NSManagedObjectModel/isConfiguration:compatibleWithStoreMetadata:
+Objective-C/instm/QTCaptureDevice/isConnected
+Objective-C/instm/IOBluetoothDevice/isConnected
+Objective-C/intfm/NSDiscardableContent/isContentDiscarded
+JavaScript/data/HTMLElement/isContentEditable
+Objective-C/clm/NSHelpManager/isContextHelpModeActive
+Objective-C/instm/NSColorPanel/isContinuous
+Objective-C/instm/NSControl/isContinuous
+Objective-C/instm/NSCell/isContinuous
+Objective-C/instm/NSTextView/isContinuousSpellCheckingEnabled
+Objective-C/instm/WebView/isContinuousSpellCheckingEnabled
+Objective-C/instm/QTMovieView/isControllerVisible
+Objective-C/instm/NSPrintOperation/isCopyingOperation
+Objective-C/instm/NSFetchRequestExpression/isCountOnlyRequest
+Objective-C/instm/CAPropertyAnimation/isCumulative
+C/func/-/IsCursorKey
+Objective-C/instm/QTMovieView/isCustomButtonVisible
+C/func/-/IsDataBrowserItemSelected
+Objective-C/instm/NSImage/isDataRetained
+Objective-C/instm/NSTimeZone/isDaylightSavingTime
+Objective-C/instm/NSTimeZone/isDaylightSavingTimeForDate:
+Objective-C/instm/XGGrid/isDefault
+JavaScript/instm/core/isDefaultNamespace
+Objective-C/instm/NSFileManager/isDeletableFileAtPath:
+Objective-C/instm/NSManagedObject/isDeleted
+Objective-C/instm/NSView/isDescendantOf:
+Objective-C/instm/CalEvent/isDetached
+Objective-C/instp/CalEvent/isDetached
+Objective-C/instm/IOBluetoothRFCOMMAudioController/isDeviceConnected
+C/func/-/isdigit
+C/func/-/isdigit_l
+Objective-C/instm/NSFileWrapper/isDirectory
+Objective-C/instm/NSProgressIndicator/isDisplayedWhenStopped
+Objective-C/instm/NSPersistentDocument/isDocumentEdited
+Objective-C/instm/NSDocument/isDocumentEdited
+Objective-C/instm/NSWindow/isDocumentEdited
+Objective-C/instm/CALayer/isDoubleSided
+Objective-C/instm/NSRulerMarker/isDragging
+Objective-C/instm/NSGraphicsContext/isDrawingToScreen
+Objective-C/instm/SFCertificateView/isEditable
+Objective-C/instm/NSImageView/isEditable
+Objective-C/instm/AMWorkflowView/isEditable
+Objective-C/instm/NSColorList/isEditable
+Objective-C/instm/NSTableColumn/isEditable
+Objective-C/instm/NSObjectController/isEditable
+Objective-C/instm/CalCalendar/isEditable
+Objective-C/instp/CalCalendar/isEditable
+Objective-C/instm/NSTextField/isEditable
+Objective-C/instm/NSRuleEditor/isEditable
+Objective-C/instm/NSTextView/isEditable
+Objective-C/instm/QTMovieView/isEditable
+Objective-C/instm/WebView/isEditable
+Objective-C/instm/NSCell/isEditable
+Objective-C/instm/NSText/isEditable
+Objective-C/instm/NSController/isEditing
+C++/instm/IOMedia/isEjectable
+Objective-C/instm/NSBezierPath/isEmpty
+Objective-C/instm/CIFilter/isEnabled
+Objective-C/instm/SFAuthorizationView/isEnabled
+Objective-C/instm/NSToolbarItem/isEnabled
+Objective-C/instm/NSFontManager/isEnabled
+Objective-C/instm/NSStatusItem/isEnabled
+Objective-C/instm/CBUserIdentity/isEnabled
+Objective-C/instm/NSGarbageCollector/isEnabled
+Objective-C/instm/ISyncManager/isEnabled
+Objective-C/instm/CAEmitterCell/isEnabled
+Objective-C/instm/QTCaptureConnection/isEnabled
+Objective-C/instm/QTTrack/isEnabled
+Objective-C/instm/IMAVControl/isEnabled
+Objective-C/instm/NSMenuItem/isEnabled
+Objective-C/instm/NSControl/isEnabled
+Objective-C/instm/NSFontPanel/isEnabled
+C++/instm/IOEventSource/isEnabled
+Objective-C/instm/NSCell/isEnabled
+JavaScript/instm/WebGLRenderingContext/isEnabled
+Objective-C/instm/ISyncClient/isEnabledForEntityName:
+Objective-C/instm/NSSegmentedCell/isEnabledForSegment:
+Objective-C/instm/NSSegmentedControl/isEnabledForSegment:
+Objective-C/instm/PDFDocument/isEncrypted
+C/func/-/isendwin
+Objective-C/instm/NSEvent/isEnteringProximity
+Objective-C/instm/NSCell/isEntryAcceptable:
+Objective-C/intfm/ISyncFiltering/isEqual:
+Objective-C/instm/IOBluetoothDevice/isEqual:
+Objective-C/instm/IOBluetoothSDPDataElement/isEqual:
+Objective-C/intfm/NSObject/isEqual:
+Objective-C/instm/NSURL/isEqual:
+Objective-C/instp/NSPointerFunctions/isEqualFunction
+Objective-C/instm/NSPointerFunctions/isEqualFunction
+JavaScript/instm/core/isEqualNode
+C++/instm/IONetworkMedium/isEqualTo
+C++/instm/OSArray/isEqualTo
+C++/instm/OSBoolean/isEqualTo
+C++/instm/OSData/isEqualTo
+C++/instm/OSMetaClassBase/isEqualTo
+C++/instm/OSDictionary/isEqualTo
+C++/instm/OSNumber/isEqualTo
+C++/instm/OSOrderedSet/isEqualTo
+C++/instm/OSSet/isEqualTo
+C++/instm/OSSymbol/isEqualTo
+C++/instm/OSString/isEqualTo
+Objective-C/instm/NSObject/isEqualTo:
+Objective-C/instm/NSArray/isEqualToArray:
+Objective-C/instm/NSAttributedString/isEqualToAttributedString:
+Objective-C/instm/QTCompressionOptions/isEqualToCompressionOptions:
+Objective-C/instm/CWConfiguration/isEqualToConfiguration:
+Objective-C/instm/IOBluetoothSDPUUID/isEqualToData:
+Objective-C/instm/NSData/isEqualToData:
+Objective-C/instm/NSDate/isEqualToDate:
+Objective-C/instm/DRDevice/isEqualToDevice:
+Objective-C/instm/NSDictionary/isEqualToDictionary:
+Objective-C/instm/QTFormatDescription/isEqualToFormatDescription:
+Objective-C/instm/NSHashTable/isEqualToHashTable:
+Objective-C/instm/NSHost/isEqualToHost:
+Objective-C/instm/NSIndexSet/isEqualToIndexSet:
+Objective-C/instm/CWInterface/isEqualToInterface:
+Objective-C/instm/DRMSF/isEqualToMSF:
+Objective-C/instm/CWNetwork/isEqualToNetwork:
+Objective-C/instm/NSNumber/isEqualToNumber:
+Objective-C/instm/CW8021XProfile/isEqualToProfile:
+Objective-C/instm/CWWirelessProfile/isEqualToProfile:
+Objective-C/instm/NSSet/isEqualToSet:
+Objective-C/instm/NSString/isEqualToString:
+Objective-C/instm/NSTimeZone/isEqualToTimeZone:
+Objective-C/instm/IOBluetoothSDPUUID/isEqualToUUID:
+Objective-C/instm/NSValue/isEqualToValue:
+Objective-C/instm/NSWindow/isExcludedFromWindowsMenu
+C++/instm/IOFWAddressSpace/isExclusive
+Objective-C/instm/NSFileManager/isExecutableFileAtPath:
+Objective-C/instm/NSOperation/isExecuting
+Objective-C/instm/NSThread/isExecuting
+Objective-C/instm/NSOutlineView/isExpandable:
+Objective-C/instm/NSSavePanel/isExpanded
+Objective-C/instm/NSObject/isExplicitlyIncluded
+Objective-C/instm/NSSavePanel/isExtensionHidden
+Objective-C/instm/NSXMLDTDNode/isExternal
+C++/instm/OSBoolean/isFalse
+Objective-C/instm/NSManagedObject/isFault
+Objective-C/instm/IOBluetoothDevice/isFavorite
+Objective-C/instm/NSTextView/isFieldEditor
+Objective-C/instm/NSText/isFieldEditor
+Objective-C/instm/NSWorkspace/isFilePackageAtPath:
+Objective-C/instm/NSURL/isFileReferenceURL
+Objective-C/instm/NSURL/isFileURL
+Objective-C/instm/PDFDocument/isFinding
+Objective-C/instm/NSOperation/isFinished
+Objective-C/instm/NSThread/isFinished
+Objective-C/instm/NSRunningApplication/isFinishedLaunching
+C/func/-/isfinite
+Objective-C/instm/NSCollectionView/isFirstResponder
+Objective-C/instm/NSFont/isFixedPitch
+Objective-C/instm/NSRulerView/isFlipped
+Objective-C/instm/NSGraphicsContext/isFlipped
+Objective-C/instm/NSImage/isFlipped
+Objective-C/instm/NSView/isFlipped
+Objective-C/instm/NSWindow/isFloatingPanel
+Objective-C/instm/NSPanel/isFloatingPanel
+Objective-C/instm/NSWindow/isFlushWindowDisabled
+Objective-C/instm/NSPrinter/isFontAvailable:
+C++/instm/IOMedia/isFormatted
+JavaScript/instm/WebGLRenderingContext/isFramebuffer
+Objective-C/instm/NSApplication/isFullKeyboardAccessEnabled
+C/func/-/IsFunctionKey
+Objective-C/instm/NSMetadataQuery/isGathering
+Objective-C/instm/CALayer/isGeometryFlipped
+Objective-C/instm/NSTextView/isGrammarCheckingEnabled
+C/func/-/isgraph
+C/func/-/isgraph_l
+C/func/-/isgreater
+C/func/-/isgreaterequal
+Objective-C/instm/NSObject/isGreaterThan:
+Objective-C/instm/NSObject/isGreaterThanOrEqualTo:
+Objective-C/instm/IKImageBrowserView/isGroupExpandedAtIndex:
+C/func/-/ishexnumber
+C/func/-/ishexnumber_l
+Objective-C/instm/CBIdentity/isHidden
+Objective-C/instm/NSTableColumn/isHidden
+Objective-C/instm/NSMenuItem/isHidden
+Objective-C/instm/NSRunningApplication/isHidden
+Objective-C/instm/NSView/isHidden
+Objective-C/instm/NSApplication/isHidden
+Objective-C/instm/CALayer/isHidden
+Objective-C/instm/NSMenuItem/isHiddenOrHasHiddenAncestor
+Objective-C/instm/NSView/isHiddenOrHasHiddenAncestor
+Objective-C/instm/PDFAnnotationButtonWidget/isHighlighted
+Objective-C/instm/NSMenuItem/isHighlighted
+Objective-C/instm/NSCell/isHighlighted
+Objective-C/instm/NSMenuView/isHorizontal
+Objective-C/instm/NSPrintInfo/isHorizontallyCentered
+Objective-C/instm/NSText/isHorizontallyResizable
+Objective-C/clm/NSHost/isHostCacheEnabled
+Objective-C/instm/QTMovieView/isHotSpotButtonVisible
+Objective-C/instm/NSHTTPCookie/isHTTPOnly
+Objective-C/instp/CWNetwork/isIBSS
+JavaScript/data/Attr/isId
+C/func/-/isideogram
+C/func/-/isideogram_l
+Objective-C/instm/QTMovie/isIdling
+C++/instm/IOService/isInactive
+Objective-C/instm/IOBluetoothRFCOMMChannel/isIncoming
+Objective-C/instm/IOBluetoothL2CAPChannel/isIncoming
+Objective-C/instm/IOBluetoothDevice/isIncoming
+Objective-C/instm/NSProgressIndicator/isIndeterminate
+Objective-C/binding/NSProgressIndicator/isIndeterminate
+Objective-C/instm/NSPropertyDescription/isIndexed
+Objective-C/instm/NSPropertyDescription/isIndexedBySpotlight
+C/func/-/isinf
+Objective-C/instm/NSView/isInFullScreenMode
+Objective-C/instm/NSManagedObject/isInserted
+Objective-C/instm/QTCaptureDevice/isInUseByAnotherApplication
+JavaScript/instp/Application/isISync
+Objective-C/instm/NSOutlineView/isItemExpanded:
+Objective-C/instm/WebPreferences/isJavaEnabled
+Objective-C/instm/WebPreferences/isJavaScriptEnabled
+Objective-C/instm/NSPrinter/isKey:inTable:
+Objective-C/clm/NSObject/isKeyExcludedFromWebScript:
+C/func/-/IsKeypadKey
+Objective-C/instm/NSWindow/isKeyWindow
+Objective-C/intfm/NSObject/isKindOfClass:
+Objective-C/instm/NSEntityDescription/isKindOfEntity:
+Objective-C/instm/NSTreeNode/isLeaf
+Objective-C/instm/NSBrowserCell/isLeaf
+Objective-C/instm/NSBrowser/isLeafItem:
+Objective-C/instm/NSDateFormatter/isLenient
+Objective-C/instm/NSNumberFormatter/isLenient
+C/func/-/isless
+C/func/-/islessequal
+C/func/-/islessgreater
+Objective-C/instm/NSObject/isLessThan:
+Objective-C/instm/NSObject/isLessThanOrEqualTo:
+Objective-C/instm/NSObject/isLike:
+Objective-C/instm/PDFAnnotationChoiceWidget/isListChoice
+Objective-C/instm/NSBrowserCell/isLoaded
+Objective-C/instm/NSBrowser/isLoaded
+Objective-C/instm/NSBundle/isLoaded
+Objective-C/instm/WebDataSource/isLoading
+Objective-C/instm/WebView/isLoading
+Objective-C/instm/NSScriptClassDescription/isLocationRequiredToCreateForKey:
+Objective-C/instm/PDFDocument/isLocked
+C/func/-/islower
+C/func/-/islower_l
+Objective-C/clm/NSThread/isMainThread
+Objective-C/instm/NSThread/isMainThread
+Objective-C/instm/NSWindow/isMainWindow
+JavaScript/data/HTMLImageElement/isMap
+Objective-C/intfm/ApertureExportManager/isMasterExport
+C++/instm/IOBlockStorageDriver/isMediaEjectable
+C++/instm/IOBlockStorageDriver/isMediaPollExpensive
+C++/instm/IOBlockStorageDriver/isMediaPollRequired
+C++/instm/IOBlockStorageDriver/isMediaRemovable
+Objective-C/intfm/NSObject/isMemberOfClass:
+Objective-C/instm/CBIdentity/isMemberOfGroup:
+Objective-C/instm/ODRecord/isMemberRecord:error:
+Objective-C/instm/NSWindow/isMiniaturizable
+Objective-C/instm/NSWindow/isMiniaturized
+C/func/-/IsMiscFunctionKey
+Objective-C/instm/NSWindow/isModalPanel
+C/func/-/IsModifierKey
+C++/instm/IOCatalogue/isModuleLoaded
+Objective-C/clm/NSEvent/isMouseCoalescingEnabled
+Objective-C/instm/NSRulerMarker/isMovable
+Objective-C/instm/NSWindow/isMovable
+Objective-C/instm/NSWindow/isMovableByWindowBackground
+Objective-C/instm/NSFontManager/isMultiple
+Objective-C/clm/NSThread/isMultiThreaded
+C/func/-/isnan
+Objective-C/clm/NSDocument/isNativeType:
+C/func/-/isnormal
+Objective-C/instm/NSObject/isNotEqualTo:
+C++/instm/IOFWAsyncStreamListener/IsNotificationOn
+C/func/-/isnumber
+C/func/-/isnumber_l
+C++/instm/IOUSBController/IsocIO
+Objective-C/clm/NSLocale/ISOCountryCodes
+Objective-C/clm/NSLocale/ISOCurrencyCodes
+Objective-C/clm/NSLocale/ISOLanguageCodes
+Objective-C/instm/NSWindow/isOnActiveSpace
+Objective-C/instm/NSWindow/isOneShot
+Objective-C/instm/NSMethodSignature/isOneway
+Objective-C/instm/NSFormCell/isOpaque
+Objective-C/instm/NSButtonCell/isOpaque
+Objective-C/instm/NSBrowser/isOpaque
+Objective-C/instm/NSImageRep/isOpaque
+Objective-C/instm/NSWindow/isOpaque
+Objective-C/instm/NSView/isOpaque
+Objective-C/instm/NSCell/isOpaque
+Objective-C/instm/CALayer/isOpaque
+Objective-C/instm/PDFOutline/isOpen
+Objective-C/instm/PDFAnnotationPopup/isOpen
+Objective-C/instm/QTCaptureDevice/isOpen
+Objective-C/instm/IOBluetoothRFCOMMChannel/isOpen
+C++/instm/IOService/isOpen
+Objective-C/instm/XGConnection/isOpened
+Objective-C/instm/NSPropertyDescription/isOptional
+Objective-C/instm/NSScriptCommandDescription/isOptionalArgumentWithName:
+Objective-C/instm/NSPrinter/isOutputStackInReverseOrder
+Objective-C/instm/IOBluetoothDevice/isPaired
+Objective-C/instm/NSSplitView/isPaneSplitter
+C++/instm/IORegistryEntry/isParent
+Objective-C/instm/NSFormatter/isPartialStringValid:newEditingString:errorDescription:
+Objective-C/instm/NSFormatter/isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:
+Objective-C/instm/NSNumberFormatter/isPartialStringValidationEnabled
+Objective-C/instm/QCView/isPausedRendering
+C/func/-/IsPFKey
+C/func/-/isphonogram
+C/func/-/isphonogram_l
+Objective-C/instm/NSBitmapImageRep/isPlanar
+Objective-C/instm/NSSound/isPlaying
+JavaScript/instm/CanvasRenderingContext2D/isPointInPath
+JavaScript/instm/Range/isPointInRange
+C++/instm/IOSCSIProtocolInterface/IsPowerManagementIntialized
+Objective-C/instm/FxImage/isPremultiplied
+C++/instm/IOFWPhysicalAddressSpace/isPrepared
+Objective-C/instm/ScreenSaverView/isPreview
+C++/instm/IONetworkInterface/isPrimaryInterface
+C/func/-/isprint
+C/func/-/isprint_l
+Objective-C/instp/PSClient/isPrivate
+C/func/-/IsPrivateKeypadKey
+C/func/-/IsProcessVisible
+JavaScript/instm/WebGLRenderingContext/isProgram
+JavaScript/instm/CSSStyleDeclaration/isPropertyImplicit
+C++/instm/IOFireWireSerialBusProtocolTransport/IsProtocolServiceSupported
+C++/instm/IOSCSIProtocolInterface/IsProtocolServiceSupported
+Objective-C/instm/NSURLProtectionSpace/isProxy
+Objective-C/intfm/NSObject/isProxy
+C/func/-/ispunct
+C/func/-/ispunct_l
+Objective-C/instm/NSFileManager/isReadableFileAtPath:
+Objective-C/instm/NSPersistentStore/isReadOnly
+Objective-C/instm/ABRecord/isReadOnly
+Objective-C/instm/NSScriptClassDescription/isReadOnlyKey:
+Objective-C/instm/NSOperation/isReady
+Objective-C/instm/QTCaptureFileOutput/isRecordingPaused
+Objective-C/instm/NSUndoManager/isRedoing
+C++/instm/IONetworkInterface/isRegistered
+C++/data/IOAudioEngine/isRegistered
+Objective-C/instm/NSFileWrapper/isRegularFile
+Objective-C/instm/NSWindow/isReleasedWhenClosed
+Objective-C/instm/NSRulerMarker/isRemovable
+Objective-C/instm/CAAnimation/isRemovedOnCompletion
+JavaScript/instm/WebGLRenderingContext/isRenderbuffer
+Objective-C/instm/QCView/isRendering
+Objective-C/instm/NSWindow/isResizable
+Objective-C/instm/NSTableColumn/isResizable
+Objective-C/instp/NSTouch/isResting
+Objective-C/instm/NSTouch/isResting
+Objective-C/instm/IOBluetoothRFCOMMAudioController/isRFCOMMChannelOpen
+Objective-C/instm/NSTextView/isRichText
+Objective-C/instm/NSText/isRichText
+Objective-C/instm/NSView/isRotatedFromBase
+Objective-C/instm/NSView/isRotatedOrScaledFromBase
+Objective-C/instm/NSTableView/isRowSelected:
+Objective-C/instm/NSTextView/isRulerVisible
+Objective-C/instm/NSText/isRulerVisible
+C/func/-/isrune
+C/func/-/isrune_l
+Objective-C/instm/AMWorkflowController/isRunning
+Objective-C/instm/SBApplication/isRunning
+Objective-C/instm/QTCaptureSession/isRunning
+Objective-C/instm/NSTask/isRunning
+Objective-C/instm/NSApplication/isRunning
+JavaScript/instm/core/isSameNode
+Objective-C/instm/IOBluetoothRFCOMMAudioController/isSCOConnected
+C/func/-/IsScrapMovie
+Objective-C/instm/NSCell/isScrollable
+Objective-C/instm/NSHTTPCookie/isSecure
+Objective-C/instm/NSTextField/isSelectable
+Objective-C/instm/NSCollectionView/isSelectable
+Objective-C/instm/NSTextView/isSelectable
+Objective-C/instm/NSObject/isSelectable
+Objective-C/instm/NSCell/isSelectable
+Objective-C/instm/NSText/isSelectable
+Objective-C/instm/NSPreferencePane/isSelected
+Objective-C/instm/NSCollectionViewItem/isSelected
+Objective-C/instm/IKImageBrowserCell/isSelected
+Objective-C/instm/NSSegmentedControl/isSelectedForSegment:
+Objective-C/instm/NSSegmentedCell/isSelectedForSegment:
+Objective-C/instm/NSMatrix/isSelectionByRect
+Objective-C/instm/NSPrintInfo/isSelectionOnly
+Objective-C/clm/NSObject/isSelectorExcludedFromWebScript:
+Objective-C/instm/NSMenuItem/isSeparatorItem
+Objective-C/instm/NSHTTPCookie/isSessionOnly
+Objective-C/instm/IOBluetoothOBEXSession/isSessionTargetAMac
+Objective-C/instm/NSCursor/isSetOnMouseEntered
+Objective-C/instm/NSCursor/isSetOnMouseExited
+C/func/-/issetugid
+JavaScript/instm/WebGLRenderingContext/isShader
+Objective-C/instm/NSWindow/isSheet
+Objective-C/instm/NSTextContainer/isSimpleRectangularTextContainer
+C/func/-/isspace
+C/func/-/isspace_l
+Objective-C/instm/NSSpeechSynthesizer/isSpeaking
+C/func/-/isspecial
+C/func/-/isspecial_l
+Objective-C/instm/NSXMLDocument/isStandalone
+C/tdef/-/isStandaloneSAXFunc
+Objective-C/instm/NSMetadataQuery/isStarted
+C++/data/IOAudioControl/isStarted
+Objective-C/instm/NSMetadataQuery/isStopped
+Objective-C/instm/NSPropertyDescription/isStoredInExternalRecord
+Objective-C/clm/NSObject/isSubclassOfClass:
+Objective-C/instm/NSHashTable/isSubsetOfHashTable:
+Objective-C/instm/NSSet/isSubsetOfSet:
+Objective-C/instm/NSSplitView/isSubviewCollapsed:
+Objective-C/instm/NSCharacterSet/isSupersetOfSet:
+JavaScript/instm/core/isSupported
+Objective-C/instm/NSOperationQueue/isSuspended
+Objective-C/instm/NSFileWrapper/isSymbolicLink
+Objective-C/instm/NSImage/isTemplate
+Objective-C/instm/NSManagedObjectID/isTemporaryID
+Objective-C/instm/NSRunningApplication/isTerminated
+JavaScript/instm/WebGLRenderingContext/isTexture
+Objective-C/instm/NSBrowser/isTitled
+Objective-C/instm/NSRelationshipDescription/isToMany
+Objective-C/instm/NSMenuView/isTornOff
+Objective-C/instm/NSMenu/isTornOff
+Objective-C/instm/IOBluetoothObjectPushUIController/isTransferInProgress
+Objective-C/instm/NSPropertyDescription/isTransient
+Objective-C/instm/QTMovieView/isTranslateButtonVisible
+Objective-C/instm/IOBluetoothRFCOMMChannel/isTransmissionPaused
+Objective-C/instm/NSButton/isTransparent
+Objective-C/instm/NSBox/isTransparent
+Objective-C/instm/NSButtonCell/isTransparent
+Objective-C/instm/NSScriptWhoseTest/isTrue
+C++/instm/OSBoolean/isTrue
+Objective-C/instm/SFCertificateView/isTrustDisplayed
+C++/instm/IOFWAddressSpace/isTrustedNode
+Objective-C/instm/NSUndoManager/isUndoing
+Objective-C/instm/NSUndoManager/isUndoRegistrationEnabled
+C/func/-/isunordered
+Objective-C/instm/XGResource/isUpdated
+Objective-C/instm/NSManagedObject/isUpdated
+Objective-C/instm/XGResource/isUpdating
+C/func/-/isupper
+C/func/-/isupper_l
+Objective-C/instm/DRDevice/isValid
+Objective-C/instm/NSConnection/isValid
+Objective-C/instm/NSTimer/isValid
+Objective-C/instm/NSImage/isValid
+C++/instm/IORegistryIterator/isValid
+C++/instm/OSCollectionIterator/isValid
+C++/instm/OSIterator/isValid
+Objective-C/instm/NSPort/isValid
+Objective-C/instm/NSLayoutManager/isValidGlyphIndex:
+Objective-C/instm/NSSlider/isVertical
+Objective-C/instm/NSSliderCell/isVertical
+Objective-C/instm/NSStatusBar/isVertical
+Objective-C/instm/NSSplitView/isVertical
+Objective-C/instm/NSPrintInfo/isVerticallyCentered
+Objective-C/instm/NSText/isVerticallyResizable
+Objective-C/instm/DRFSObject/isVirtual
+Objective-C/instm/IMKCandidates/isVisible
+Objective-C/instm/NSToolbar/isVisible
+Objective-C/instm/NSWindow/isVisible
+Objective-C/instm/QTMovieView/isVolumeButtonVisible
+C/func/-/iswalnum
+C/func/-/iswalnum_l
+C/func/-/iswalpha
+C/func/-/iswalpha_l
+C/func/-/iswascii
+C/func/-/iswascii_l
+C/func/-/iswblank
+C/func/-/iswblank_l
+C/func/-/iswcntrl
+C/func/-/iswcntrl_l
+C/func/-/iswctype
+C/func/-/iswctype_l
+C/func/-/iswdigit
+C/func/-/iswdigit_l
+Objective-C/instm/NSScriptCommand/isWellFormed
+C/func/-/iswgraph
+C/func/-/iswgraph_l
+C/func/-/iswhexnumber
+C/func/-/iswhexnumber_l
+C++/instm/IOMedia/isWhole
+C/func/-/iswideogram
+C/func/-/iswideogram_l
+Objective-C/instm/NSWindowController/isWindowLoaded
+C/func/-/iswlower
+C/func/-/iswlower_l
+C/func/-/iswnumber
+C/func/-/iswnumber_l
+Objective-C/instm/NSSpellServer/isWordInUserDictionaries:caseSensitive:
+C/func/-/iswphonogram
+C/func/-/iswphonogram_l
+C/func/-/iswprint
+C/func/-/iswprint_l
+C/func/-/iswpunct
+C/func/-/iswpunct_l
+Objective-C/instm/CATextLayer/isWrapped
+C++/instm/IOMedia/isWritable
+Objective-C/instm/NSFileManager/isWritableFileAtPath:
+C/func/-/iswrune
+C/func/-/iswrune_l
+C/func/-/iswspace
+C/func/-/iswspace_l
+C/func/-/iswspecial
+C/func/-/iswspecial_l
+C/func/-/iswupper
+C/func/-/iswupper_l
+C/func/-/iswxdigit
+C/func/-/iswxdigit_l
+C/func/-/isxdigit
+C/func/-/isxdigit_l
+C/data/-/ISyncAvailabilityChangedNotification
+Objective-C/cl/-/ISyncChange
+C/data/-/ISyncChangePropertyActionKey
+C/data/-/ISyncChangePropertyClear
+C/data/-/ISyncChangePropertyNameKey
+C/data/-/ISyncChangePropertySet
+C/data/-/ISyncChangePropertyValueIsDefaultKey
+C/data/-/ISyncChangePropertyValueKey
+C/tdef/-/ISyncChangeType
+C/econst/-/ISyncChangeTypeAdd
+C/econst/-/ISyncChangeTypeDelete
+C/econst/-/ISyncChangeTypeModify
+C/econst/-/ISyncChangeTypeNone
+Objective-C/cl/-/ISyncClient
+C/data/-/ISyncClientTypeApplication
+C/data/-/ISyncClientTypeDevice
+C/data/-/ISyncClientTypePeer
+C/data/-/ISyncClientTypeServer
+C/data/-/ISyncErrorDomain
+Objective-C/cl/-/ISyncFilter
+Objective-C/intf/-/ISyncFiltering
+C/data/-/ISyncInvalidArgumentsException
+C/data/-/ISyncInvalidEntityException
+C/data/-/ISyncInvalidRecordException
+C/data/-/ISyncInvalidRecordIdentifiersKey
+C/data/-/ISyncInvalidRecordReasonsKey
+C/data/-/ISyncInvalidRecordsKey
+C/data/-/ISyncInvalidSchemaException
+Objective-C/cl/-/ISyncManager
+-/writerid/-/iSyncPluginMakerUserGuide_Intro
+-/writerid/-/iSyncPluginMakerUserGuide_ModemScript
+C/data/-/ISyncRecordEntityNameKey
+Objective-C/cl/-/ISyncRecordReference
+Objective-C/cl/-/ISyncRecordSnapshot
+C/tdef/-/ISyncServerDisabledReason
+C/econst/-/ISyncServerDisabledReasonByPreference
+C/econst/-/ISyncServerDisabledReasonNone
+C/econst/-/ISyncServerDisabledReasonSharedNetworkHome
+C/econst/-/ISyncServerDisabledReasonUnknown
+C/econst/-/ISyncServerDisabledReasonUnresponsive
+C/data/-/ISyncServerUnavailableException
+Objective-C/cl/-/ISyncSession
+C/data/-/ISyncSessionCancelledException
+C/econst/-/ISyncSessionClientAlreadySyncingError
+Objective-C/cl/-/ISyncSessionDriver
+C/econst/-/ISyncSessionDriverChangeAccepted
+C/econst/-/ISyncSessionDriverChangeError
+C/econst/-/ISyncSessionDriverChangeIgnored
+C/econst/-/ISyncSessionDriverChangeRefused
+C/tdef/-/ISyncSessionDriverChangeResult
+Objective-C/cat/-/ISyncSessionDriverDataSource
+Objective-C/intf/-/ISyncSessionDriverDelegate
+C/econst/-/ISyncSessionDriverFatalError
+C/tdef/-/ISyncSessionDriverMode
+C/econst/-/ISyncSessionDriverModeFast
+C/econst/-/ISyncSessionDriverModeRefresh
+C/econst/-/ISyncSessionDriverModeSlow
+C/econst/-/ISyncSessionDriverPullFailureError
+C/econst/-/ISyncSessionDriverRegistrationError
+C/data/-/ISyncSessionUnavailableException
+C/econst/-/ISyncSessionUserCanceledSessionError
+C/tdef/-/ISyncStatus
+C/econst/-/ISyncStatusCancelled
+C/econst/-/ISyncStatusErrors
+C/econst/-/ISyncStatusFailed
+C/econst/-/ISyncStatusNever
+C/econst/-/ISyncStatusRunning
+C/econst/-/ISyncStatusSuccess
+C/econst/-/ISyncStatusWarnings
+Objective-C/cat/-/ISyncUIHelper
+C/data/-/ISyncUnsupportedEntityException
+Objective-C/instm/NSWindow/isZoomable
+Objective-C/instm/NSWindow/isZoomed
+Objective-C/instm/NSFont/italicAngle
+JavaScript/instm/CSSVariablesDeclaration/item
+JavaScript/instm/CSSStyleDeclaration/item
+JavaScript/instm/CSSValueList/item
+JavaScript/instm/CSSRuleList/item
+JavaScript/instm/DataGridColumnList/item
+JavaScript/instm/ClientRectList/item
+JavaScript/instm/HTMLAllCollection/item
+JavaScript/instm/HTMLSelectElement/item
+JavaScript/instm/HTMLCollection/item
+JavaScript/instm/FileList/item
+JavaScript/instm/NamedNodeMap/item
+JavaScript/instm/MimeTypeArray/item
+JavaScript/instm/MediaList/item
+JavaScript/instm/StyleSheetList/item
+JavaScript/instm/SVGElementInstanceList/item
+JavaScript/instm/NodeList/item
+JavaScript/instm/SQLResultSetRowList/item
+JavaScript/instm/Plugin/item
+JavaScript/instm/PluginArray/item
+JavaScript/instm/TouchList/item
+Objective-C/instm/NSMenuView/itemAdded:
+Objective-C/instm/NSPopUpButtonCell/itemArray
+Objective-C/instm/NSPopUpButton/itemArray
+Objective-C/instm/NSMenu/itemArray
+Objective-C/instm/NSPopUpButton/itemAtIndex:
+Objective-C/instm/NSPopUpButtonCell/itemAtIndex:
+Objective-C/instm/WebBackForwardList/itemAtIndex:
+Objective-C/instm/NSCollectionView/itemAtIndex:
+Objective-C/instm/NSMenu/itemAtIndex:
+Objective-C/instm/NSBrowser/itemAtIndexPath:
+Objective-C/instm/NSOutlineView/itemAtRow:
+Objective-C/instm/NSBrowser/itemAtRow:inColumn:
+Objective-C/instm/NSMenuView/itemChanged:
+Objective-C/instm/NSMenu/itemChanged:
+C/tdef/-/ItemCount
+Objective-C/instm/WebHistory/itemForURL:
+Objective-C/instm/IKImageBrowserView/itemFrameAtIndex:
+Objective-C/instm/NSComboBox/itemHeight
+Objective-C/instm/NSComboBoxCell/itemHeight
+Objective-C/instm/NSToolbarItem/itemIdentifier
+Objective-C/instm/NSAttributedString/itemNumberInTextList:atIndex:
+Objective-C/instm/NSComboBox/itemObjectValueAtIndex:
+Objective-C/instm/NSComboBoxCell/itemObjectValueAtIndex:
+Objective-C/instm/NSCollectionView/itemPrototype
+Objective-C/instm/NSMenuView/itemRemoved:
+Objective-C/instm/NSToolbar/items
+Objective-C/instm/NSPopUpButtonCell/itemTitleAtIndex:
+Objective-C/instm/NSPopUpButton/itemTitleAtIndex:
+Objective-C/instm/NSPopUpButton/itemTitles
+Objective-C/instm/NSPopUpButtonCell/itemTitles
+Objective-C/instm/NSMenu/itemWithTag:
+Objective-C/instm/NSPopUpButton/itemWithTitle:
+Objective-C/instm/NSPopUpButtonCell/itemWithTitle:
+Objective-C/instm/NSMenu/itemWithTitle:
+C++/instm/IORegistryIterator/iterateAll
+JavaScript/instm/XPathResult/iterateNext
+C++/clm/IORegistryIterator/iterateOver
+C++/instm/OSCollection/iteratorSize
+C/tdef/-/Ivar
+C/func/-/ivar_getName
+C/func/-/ivar_getOffset
+C/func/-/ivar_getTypeEncoding
+C/func/-/j0
+C/func/-/j1
+JavaScript/instm/Navigator/javaEnabled
+JavaScript/cl/-/JavaScriptCallFrame
+Objective-C/instm/WebPreferences/javaScriptCanOpenWindowsAutomatically
+C/func/-/jn
+Objective-C/instm/XGFile/job
+Objective-C/instm/NSPrintInfo/jobDisposition
+Objective-C/instm/XGGrid/jobForIdentifier:
+Objective-C/instm/XGGrid/jobs
+Objective-C/instm/XGController/jobsPredicateString
+Objective-C/instm/NSPrintOperation/jobStyleHint
+Objective-C/instm/NSPrintPanel/jobStyleHint
+Objective-C/instm/NSObject/jobTemplate
+Objective-C/instm/NSPrintOperation/jobTitle
+C++/instm/IOService/joinPMtree
+C/func/-/jrand48
+C/tdef/-/JSChar
+C/func/-/JSCheckScriptSyntax
+C/tag/-/JSClassAttribute
+C/tdef/-/JSClassAttributes
+C/func/-/JSClassCreate
+C/tdef/-/JSClassDefinition
+C/tdef/-/JSClassRef
+C/func/-/JSClassRelease
+C/func/-/JSClassRetain
+C/func/-/JSContextGetGlobalObject
+C/func/-/JSContextGetGroup
+C/func/-/JSContextGroupCreate
+C/tdef/-/JSContextGroupRef
+C/func/-/JSContextGroupRelease
+C/func/-/JSContextGroupRetain
+C/tdef/-/JSContextRef
+C/func/-/JSEvaluateScript
+C/func/-/JSGarbageCollect
+C/func/-/JSGlobalContextCreate
+C/func/-/JSGlobalContextCreateInGroup
+C/tdef/-/JSGlobalContextRef
+C/func/-/JSGlobalContextRelease
+C/func/-/JSGlobalContextRetain
+Objective-C/instm/WebScriptObject/JSObject
+C/func/-/JSObjectCallAsConstructor
+C/tdef/-/JSObjectCallAsConstructorCallback
+C/func/-/JSObjectCallAsFunction
+C/tdef/-/JSObjectCallAsFunctionCallback
+C/tdef/-/JSObjectConvertToTypeCallback
+C/func/-/JSObjectCopyPropertyNames
+C/func/-/JSObjectDeleteProperty
+C/tdef/-/JSObjectDeletePropertyCallback
+C/tdef/-/JSObjectFinalizeCallback
+C/func/-/JSObjectGetPrivate
+C/func/-/JSObjectGetProperty
+C/func/-/JSObjectGetPropertyAtIndex
+C/tdef/-/JSObjectGetPropertyCallback
+C/tdef/-/JSObjectGetPropertyNamesCallback
+C/func/-/JSObjectGetPrototype
+C/tdef/-/JSObjectHasInstanceCallback
+C/func/-/JSObjectHasProperty
+C/tdef/-/JSObjectHasPropertyCallback
+C/tdef/-/JSObjectInitializeCallback
+C/func/-/JSObjectIsConstructor
+C/func/-/JSObjectIsFunction
+C/func/-/JSObjectMake
+C/func/-/JSObjectMakeArray
+C/func/-/JSObjectMakeConstructor
+C/func/-/JSObjectMakeDate
+C/func/-/JSObjectMakeError
+C/func/-/JSObjectMakeFunction
+C/func/-/JSObjectMakeFunctionWithCallback
+C/func/-/JSObjectMakeRegExp
+C/tdef/-/JSObjectRef
+C/func/-/JSObjectSetPrivate
+C/func/-/JSObjectSetProperty
+C/func/-/JSObjectSetPropertyAtIndex
+C/tdef/-/JSObjectSetPropertyCallback
+C/func/-/JSObjectSetPrototype
+C/tag/-/JSPropertyAttribute
+C/tdef/-/JSPropertyAttributes
+C/func/-/JSPropertyNameAccumulatorAddName
+C/tdef/-/JSPropertyNameAccumulatorRef
+C/func/-/JSPropertyNameArrayGetCount
+C/func/-/JSPropertyNameArrayGetNameAtIndex
+C/tdef/-/JSPropertyNameArrayRef
+C/func/-/JSPropertyNameArrayRelease
+C/func/-/JSPropertyNameArrayRetain
+C/tdef/-/JSStaticFunction
+C/tdef/-/JSStaticValue
+C/func/-/JSStringCopyCFString
+C/func/-/JSStringCreateWithCFString
+C/func/-/JSStringCreateWithCharacters
+C/func/-/JSStringCreateWithUTF8CString
+C/func/-/JSStringGetCharactersPtr
+C/func/-/JSStringGetLength
+C/func/-/JSStringGetMaximumUTF8CStringSize
+C/func/-/JSStringGetUTF8CString
+C/func/-/JSStringIsEqual
+C/func/-/JSStringIsEqualToUTF8CString
+C/tdef/-/JSStringRef
+C/func/-/JSStringRelease
+C/func/-/JSStringRetain
+C/tdef/-/JSType
+C/func/-/JSValueGetType
+C/func/-/JSValueIsBoolean
+C/func/-/JSValueIsEqual
+C/func/-/JSValueIsInstanceOfConstructor
+C/func/-/JSValueIsNull
+C/func/-/JSValueIsNumber
+C/func/-/JSValueIsObject
+C/func/-/JSValueIsObjectOfClass
+C/func/-/JSValueIsStrictEqual
+C/func/-/JSValueIsString
+C/func/-/JSValueIsUndefined
+C/func/-/JSValueMakeBoolean
+C/func/-/JSValueMakeNull
+C/func/-/JSValueMakeNumber
+C/func/-/JSValueMakeString
+C/func/-/JSValueMakeUndefined
+C/func/-/JSValueProtect
+C/tdef/-/JSValueRef
+C/func/-/JSValueToBoolean
+C/func/-/JSValueToNumber
+C/func/-/JSValueToObject
+C/func/-/JSValueToStringCopy
+C/func/-/JSValueUnprotect
+JavaScript/data/SVGFECompositeElement/k1
+JavaScript/data/SVGFECompositeElement/k2
+JavaScript/data/SVGFECompositeElement/k3
+C/econst/-/k3DMixerAttenuationCurve_Exponential
+C/econst/-/k3DMixerAttenuationCurve_Inverse
+C/econst/-/k3DMixerAttenuationCurve_Linear
+C/econst/-/k3DMixerAttenuationCurve_Power
+C/econst/-/k3DMixerParam_Azimuth
+C/econst/-/k3DMixerParam_Distance
+C/econst/-/k3DMixerParam_Elevation
+C/econst/-/k3DMixerParam_Gain
+C/econst/-/k3DMixerParam_PlaybackRate
+C/econst/-/k3DMixerRenderingFlags_ConstantReverbBlend
+C/econst/-/k3DMixerRenderingFlags_DistanceAttenuation
+C/econst/-/k3DMixerRenderingFlags_DistanceDiffusion
+C/econst/-/k3DMixerRenderingFlags_DistanceFilter
+C/econst/-/k3DMixerRenderingFlags_DopplerShift
+C/econst/-/k3DMixerRenderingFlags_InterAuralDelay
+C/econst/-/k3DMixerRenderingFlags_LinearDistanceAttenuation
+JavaScript/data/SVGFECompositeElement/k4
+C/econst/-/k422YpCbCr10CodecType
+C/econst/-/k422YpCbCr16CodecType
+C/econst/-/k422YpCbCr8CodecType
+C/econst/-/k4444YpCbCrA8CodecType
+C/econst/-/k4444YpCbCrA8RCodecType
+C/econst/-/k444YpCbCr10CodecType
+C/econst/-/k444YpCbCr8CodecType
+C/data/-/kABAddressCityKey
+C/data/-/kABAddressCountryCodeKey
+C/data/-/kABAddressCountryKey
+C/data/-/kABAddressHomeLabel
+C/data/-/kABAddressProperty
+C/data/-/kABAddressStateKey
+C/data/-/kABAddressStreetKey
+C/data/-/kABAddressWorkLabel
+C/data/-/kABAddressZIPKey
+C/data/-/kABAIMHomeLabel
+C/data/-/kABAIMInstantProperty
+C/data/-/kABAIMMobileMeLabel
+C/data/-/kABAIMWorkLabel
+C/data/-/kABAnniversaryLabel
+C/econst/-/kABArrayProperty
+C/data/-/kABAssistantLabel
+C/data/-/kABBirthdayProperty
+C/econst/-/kABBitsInBitFieldMatch
+C/data/-/kABBrotherLabel
+C/data/-/kABCalendarURIsProperty
+C/data/-/kABChildLabel
+C/econst/-/kABContainsSubString
+C/econst/-/kABContainsSubStringCaseInsensitive
+C/data/-/kABCreationDateProperty
+C/data/-/kABDatabaseChangedExternallyNotification
+C/data/-/kABDatabaseChangedNotification
+C/econst/-/kABDataProperty
+C/econst/-/kABDateProperty
+C/macro/-/kABDefaultNameOrdering
+C/data/-/kABDeletedRecords
+C/data/-/kABDepartmentProperty
+C/econst/-/kABDictionaryProperty
+C/econst/-/kABDoesNotContainSubString
+C/econst/-/kABDoesNotContainSubStringCaseInsensitive
+C/data/-/kABEmailHomeLabel
+C/data/-/kABEmailMobileMeLabel
+C/data/-/kABEmailProperty
+C/data/-/kABEmailWorkLabel
+C/econst/-/kABEqual
+C/econst/-/kABEqualCaseInsensitive
+C/econst/-/kABErrorInProperty
+C/data/-/kABFatherLabel
+C/macro/-/kABFirstNameFirst
+C/data/-/kABFirstNamePhoneticProperty
+C/data/-/kABFirstNameProperty
+C/data/-/kABFriendLabel
+C/econst/-/kABGreaterThan
+C/econst/-/kABGreaterThanOrEqual
+C/data/-/kABGroupNameProperty
+C/data/-/kABGroupRecordType
+C/data/-/kABHomeLabel
+C/data/-/kABHomePageLabel
+C/data/-/kABHomePageProperty
+C/data/-/kABICQHomeLabel
+C/data/-/kABICQInstantProperty
+C/data/-/kABICQWorkLabel
+C/data/-/kABIdentityUIDProperty
+C/data/-/kABInsertedRecords
+C/econst/-/kABIntegerProperty
+C/data/-/kABJabberHomeLabel
+C/data/-/kABJabberInstantProperty
+C/data/-/kABJabberWorkLabel
+C/data/-/kABJobTitleProperty
+C/macro/-/kABLastNameFirst
+C/data/-/kABLastNamePhoneticProperty
+C/data/-/kABLastNameProperty
+C/econst/-/kABLessThan
+C/econst/-/kABLessThanOrEqual
+C/data/-/kABMaidenNameProperty
+C/data/-/kABManagerLabel
+C/data/-/kABMiddleNamePhoneticProperty
+C/data/-/kABMiddleNameProperty
+C/data/-/kABModificationDateProperty
+C/data/-/kABMotherLabel
+C/data/-/kABMSNHomeLabel
+C/data/-/kABMSNInstantProperty
+C/data/-/kABMSNWorkLabel
+C/econst/-/kABMultiArrayProperty
+C/econst/-/kABMultiDataProperty
+C/econst/-/kABMultiDateProperty
+C/econst/-/kABMultiDictionaryProperty
+C/econst/-/kABMultiIntegerProperty
+C/econst/-/kABMultiRealProperty
+C/econst/-/kABMultiStringProperty
+C/macro/-/kABMultiValueMask
+C/macro/-/kABNameOrderingMask
+C/data/-/kABNicknameProperty
+C/data/-/kABNoteProperty
+C/econst/-/kABNotEqual
+C/econst/-/kABNotEqualCaseInsensitive
+C/econst/-/kABNotWithinIntervalAroundToday
+C/econst/-/kABNotWithinIntervalAroundTodayYearless
+C/econst/-/kABNotWithinIntervalFromToday
+C/econst/-/kABNotWithinIntervalFromTodayYearless
+C/data/-/kABOrganizationProperty
+C/data/-/kABOtherDatesProperty
+C/data/-/kABOtherLabel
+C/data/-/kABParentLabel
+C/data/-/kABPartnerLabel
+C/data/-/kABPersonFlags
+C/data/-/kABPersonRecordType
+C/data/-/kABPhoneHomeFAXLabel
+C/data/-/kABPhoneHomeLabel
+C/data/-/kABPhoneiPhoneLabel
+C/data/-/kABPhoneMainLabel
+C/data/-/kABPhoneMobileLabel
+C/data/-/kABPhonePagerLabel
+C/data/-/kABPhoneProperty
+C/data/-/kABPhoneWorkFAXLabel
+C/data/-/kABPhoneWorkLabel
+C/econst/-/kABPickerMultipleValueSelection
+C/econst/-/kABPickerSingleValueSelection
+C/econst/-/kABPrefixMatch
+C/econst/-/kABPrefixMatchCaseInsensitive
+C/econst/-/kABRealProperty
+C/data/-/kABRelatedNamesProperty
+C/econst/-/kABSearchAnd
+C/econst/-/kABSearchOr
+C/macro/-/kABShowAsCompany
+C/macro/-/kABShowAsMask
+C/macro/-/kABShowAsPerson
+C/macro/-/kABShowAsResource
+C/macro/-/kABShowAsRoom
+C/data/-/kABSisterLabel
+C/data/-/kABSpouseLabel
+C/econst/-/kABStringProperty
+C/econst/-/kABSuffixMatch
+C/econst/-/kABSuffixMatchCaseInsensitive
+C/data/-/kABSuffixProperty
+C/data/-/kABTitleProperty
+C/data/-/kABUIDProperty
+C/data/-/kABUpdatedRecords
+C/data/-/kABURLsProperty
+C/econst/-/kABWithinIntervalAroundToday
+C/econst/-/kABWithinIntervalAroundTodayYearless
+C/econst/-/kABWithinIntervalFromToday
+C/econst/-/kABWithinIntervalFromTodayYearless
+C/data/-/kABWorkLabel
+C/data/-/kABYahooHomeLabel
+C/data/-/kABYahooInstantProperty
+C/data/-/kABYahooWorkLabel
+C/econst/-/kActive
+C/econst/-/kadministratorUser
+C/econst/-/kAESpeechDetected
+C/econst/-/kAESpeechDone
+C/econst/-/kAESpeechSuite
+C/macro/-/kAFInfoDictionary_Album
+C/macro/-/kAFInfoDictionary_ApproximateDurationInSeconds
+C/macro/-/kAFInfoDictionary_Artist
+C/macro/-/kAFInfoDictionary_ChannelLayout
+C/macro/-/kAFInfoDictionary_Comments
+C/macro/-/kAFInfoDictionary_Composer
+C/macro/-/kAFInfoDictionary_Copyright
+C/macro/-/kAFInfoDictionary_EncodingApplication
+C/macro/-/kAFInfoDictionary_Genre
+C/macro/-/kAFInfoDictionary_KeySignature
+C/macro/-/kAFInfoDictionary_Lyricist
+C/macro/-/kAFInfoDictionary_NominalBitRate
+C/macro/-/kAFInfoDictionary_RecordedDate
+C/macro/-/kAFInfoDictionary_SourceEncoder
+C/macro/-/kAFInfoDictionary_Tempo
+C/macro/-/kAFInfoDictionary_TimeSignature
+C/macro/-/kAFInfoDictionary_Title
+C/macro/-/kAFInfoDictionary_TrackNumber
+C/macro/-/kAFInfoDictionary_Year
+C/econst/-/kAFPExtendedFlagsAlternateAddressMask
+C/econst/-/kAFPTagLengthDDP
+C/econst/-/kAFPTagLengthIP
+C/econst/-/kAFPTagLengthIPPort
+C/econst/-/kAFPTagTypeDDP
+C/econst/-/kAFPTagTypeDNS
+C/econst/-/kAFPTagTypeIP
+C/econst/-/kAFPTagTypeIPPort
+C/macro/-/kAFPVersion_2_1
+C/macro/-/kAFPVersion_2_2
+C/macro/-/kAFPVersion_2_3
+C/macro/-/kAFPVersion_3_0
+C/macro/-/kAFPVersion_3_1
+C/macro/-/kAFPVersion_3_2
+C/macro/-/kAFPVersion_3_3
+C/econst/-/kAHInternalErr
+C/econst/-/kAHInternetConfigPrefErr
+C/econst/-/kAHTOCTypeDeveloper
+C/econst/-/kAHTOCTypeUser
+C/econst/-/kAllowReconnectMask
+C/econst/-/kAllPPDDomains
+C/econst/-/kAlwaysAuthenticate
+C/econst/-/kAnyComponentFlagsMask
+C/econst/-/kAnyComponentManufacturer
+C/econst/-/kAnyComponentSubType
+C/econst/-/kAnyComponentType
+C/econst/-/kAppleLosslessFormatFlag_16BitSourceData
+C/econst/-/kAppleLosslessFormatFlag_20BitSourceData
+C/econst/-/kAppleLosslessFormatFlag_24BitSourceData
+C/econst/-/kAppleLosslessFormatFlag_32BitSourceData
+C/econst/-/kAppleManufacturer
+C/econst/-/kARMMountVol
+C/econst/-/kARMMultVols
+C/econst/-/kARMNoUI
+C/econst/-/kARMSearch
+C/econst/-/kARMSearchMore
+C/econst/-/kARMSearchRelFirst
+C/econst/-/kARMTryFileIDFirst
+C/econst/-/kASPSessClosed
+C/econst/-/kAsyncEjectComplete
+C/econst/-/kAsyncEjectInProgress
+C/econst/-/kAsyncMountComplete
+C/econst/-/kAsyncMountInProgress
+C/econst/-/kAsyncUnmountComplete
+C/econst/-/kAsyncUnmountInProgress
+C/econst/-/kAttrInExpFolder
+C/econst/-/kAttrIsExpFolder
+C/econst/-/kAttrMounted
+C/econst/-/kAudioAggregateDeviceClassID
+C/macro/-/kAudioAggregateDeviceIsPrivateKey
+C/macro/-/kAudioAggregateDeviceMasterSubDeviceKey
+C/macro/-/kAudioAggregateDeviceNameKey
+C/macro/-/kAudioAggregateDeviceSubDeviceListKey
+C/macro/-/kAudioAggregateDeviceUIDKey
+C/econst/-/kAudioBalanceFadeType_EqualPower
+C/econst/-/kAudioBalanceFadeType_MaxUnityGain
+C/econst/-/kAudioBooleanControlClassID
+C/econst/-/kAudioBootChimeVolumeControlClassID
+C/econst/-/kAudioChannelBit_Center
+C/econst/-/kAudioChannelBit_CenterSurround
+C/econst/-/kAudioChannelBit_Left
+C/econst/-/kAudioChannelBit_LeftCenter
+C/econst/-/kAudioChannelBit_LeftSurround
+C/econst/-/kAudioChannelBit_LeftSurroundDirect
+C/econst/-/kAudioChannelBit_LFEScreen
+C/econst/-/kAudioChannelBit_Right
+C/econst/-/kAudioChannelBit_RightCenter
+C/econst/-/kAudioChannelBit_RightSurround
+C/econst/-/kAudioChannelBit_RightSurroundDirect
+C/econst/-/kAudioChannelBit_TopBackCenter
+C/econst/-/kAudioChannelBit_TopBackLeft
+C/econst/-/kAudioChannelBit_TopBackRight
+C/econst/-/kAudioChannelBit_TopCenterSurround
+C/econst/-/kAudioChannelBit_VerticalHeightCenter
+C/econst/-/kAudioChannelBit_VerticalHeightLeft
+C/econst/-/kAudioChannelBit_VerticalHeightRight
+C/econst/-/kAudioChannelCoordinates_Azimuth
+C/econst/-/kAudioChannelCoordinates_BackFront
+C/econst/-/kAudioChannelCoordinates_Distance
+C/econst/-/kAudioChannelCoordinates_DownUp
+C/econst/-/kAudioChannelCoordinates_Elevation
+C/econst/-/kAudioChannelCoordinates_LeftRight
+C/econst/-/kAudioChannelFlags_AllOff
+C/econst/-/kAudioChannelFlags_Meters
+C/econst/-/kAudioChannelFlags_RectangularCoordinates
+C/econst/-/kAudioChannelFlags_SphericalCoordinates
+C/econst/-/kAudioChannelLabel_Ambisonic_W
+C/econst/-/kAudioChannelLabel_Ambisonic_X
+C/econst/-/kAudioChannelLabel_Ambisonic_Y
+C/econst/-/kAudioChannelLabel_Ambisonic_Z
+C/econst/-/kAudioChannelLabel_Center
+C/econst/-/kAudioChannelLabel_CenterSurround
+C/econst/-/kAudioChannelLabel_CenterSurroundDirect
+C/econst/-/kAudioChannelLabel_ClickTrack
+C/econst/-/kAudioChannelLabel_DialogCentricMix
+C/econst/-/kAudioChannelLabel_Discrete
+C/econst/-/kAudioChannelLabel_Discrete_0
+C/econst/-/kAudioChannelLabel_Discrete_1
+C/econst/-/kAudioChannelLabel_Discrete_10
+C/econst/-/kAudioChannelLabel_Discrete_11
+C/econst/-/kAudioChannelLabel_Discrete_12
+C/econst/-/kAudioChannelLabel_Discrete_13
+C/econst/-/kAudioChannelLabel_Discrete_14
+C/econst/-/kAudioChannelLabel_Discrete_15
+C/econst/-/kAudioChannelLabel_Discrete_2
+C/econst/-/kAudioChannelLabel_Discrete_3
+C/econst/-/kAudioChannelLabel_Discrete_4
+C/econst/-/kAudioChannelLabel_Discrete_5
+C/econst/-/kAudioChannelLabel_Discrete_6
+C/econst/-/kAudioChannelLabel_Discrete_65535
+C/econst/-/kAudioChannelLabel_Discrete_7
+C/econst/-/kAudioChannelLabel_Discrete_8
+C/econst/-/kAudioChannelLabel_Discrete_9
+C/econst/-/kAudioChannelLabel_ForeignLanguage
+C/econst/-/kAudioChannelLabel_Haptic
+C/econst/-/kAudioChannelLabel_HeadphonesLeft
+C/econst/-/kAudioChannelLabel_HeadphonesRight
+C/econst/-/kAudioChannelLabel_HearingImpaired
+C/econst/-/kAudioChannelLabel_Left
+C/econst/-/kAudioChannelLabel_LeftCenter
+C/econst/-/kAudioChannelLabel_LeftSurround
+C/econst/-/kAudioChannelLabel_LeftSurroundDirect
+C/econst/-/kAudioChannelLabel_LeftTotal
+C/econst/-/kAudioChannelLabel_LeftWide
+C/econst/-/kAudioChannelLabel_LFE2
+C/econst/-/kAudioChannelLabel_LFEScreen
+C/econst/-/kAudioChannelLabel_Mono
+C/econst/-/kAudioChannelLabel_MS_Mid
+C/econst/-/kAudioChannelLabel_MS_Side
+C/econst/-/kAudioChannelLabel_Narration
+C/econst/-/kAudioChannelLabel_RearSurroundLeft
+C/econst/-/kAudioChannelLabel_RearSurroundRight
+C/econst/-/kAudioChannelLabel_Right
+C/econst/-/kAudioChannelLabel_RightCenter
+C/econst/-/kAudioChannelLabel_RightSurround
+C/econst/-/kAudioChannelLabel_RightSurroundDirect
+C/econst/-/kAudioChannelLabel_RightTotal
+C/econst/-/kAudioChannelLabel_RightWide
+C/econst/-/kAudioChannelLabel_TopBackCenter
+C/econst/-/kAudioChannelLabel_TopBackLeft
+C/econst/-/kAudioChannelLabel_TopBackRight
+C/econst/-/kAudioChannelLabel_TopCenterSurround
+C/econst/-/kAudioChannelLabel_Unknown
+C/econst/-/kAudioChannelLabel_Unused
+C/econst/-/kAudioChannelLabel_UseCoordinates
+C/econst/-/kAudioChannelLabel_VerticalHeightCenter
+C/econst/-/kAudioChannelLabel_VerticalHeightLeft
+C/econst/-/kAudioChannelLabel_VerticalHeightRight
+C/econst/-/kAudioChannelLabel_XY_X
+C/econst/-/kAudioChannelLabel_XY_Y
+C/econst/-/kAudioChannelLayoutTag_AAC_3_0
+C/econst/-/kAudioChannelLayoutTag_AAC_4_0
+C/econst/-/kAudioChannelLayoutTag_AAC_5_0
+C/econst/-/kAudioChannelLayoutTag_AAC_5_1
+C/econst/-/kAudioChannelLayoutTag_AAC_6_0
+C/econst/-/kAudioChannelLayoutTag_AAC_6_1
+C/econst/-/kAudioChannelLayoutTag_AAC_7_0
+C/econst/-/kAudioChannelLayoutTag_AAC_7_1
+C/econst/-/kAudioChannelLayoutTag_AAC_Octagonal
+C/econst/-/kAudioChannelLayoutTag_AAC_Quadraphonic
+C/econst/-/kAudioChannelLayoutTag_AC3_1_0_1
+C/econst/-/kAudioChannelLayoutTag_AC3_2_1_1
+C/econst/-/kAudioChannelLayoutTag_AC3_3_0
+C/econst/-/kAudioChannelLayoutTag_AC3_3_0_1
+C/econst/-/kAudioChannelLayoutTag_AC3_3_1
+C/econst/-/kAudioChannelLayoutTag_AC3_3_1_1
+C/econst/-/kAudioChannelLayoutTag_Ambisonic_B_Format
+C/econst/-/kAudioChannelLayoutTag_AudioUnit_4
+C/econst/-/kAudioChannelLayoutTag_AudioUnit_5
+C/econst/-/kAudioChannelLayoutTag_AudioUnit_5_0
+C/econst/-/kAudioChannelLayoutTag_AudioUnit_5_1
+C/econst/-/kAudioChannelLayoutTag_AudioUnit_6
+C/econst/-/kAudioChannelLayoutTag_AudioUnit_6_0
+C/econst/-/kAudioChannelLayoutTag_AudioUnit_6_1
+C/econst/-/kAudioChannelLayoutTag_AudioUnit_7_0
+C/econst/-/kAudioChannelLayoutTag_AudioUnit_7_0_Front
+C/econst/-/kAudioChannelLayoutTag_AudioUnit_7_1
+C/econst/-/kAudioChannelLayoutTag_AudioUnit_7_1_Front
+C/econst/-/kAudioChannelLayoutTag_AudioUnit_8
+C/econst/-/kAudioChannelLayoutTag_Binaural
+C/econst/-/kAudioChannelLayoutTag_Cube
+C/econst/-/kAudioChannelLayoutTag_DiscreteInOrder
+C/econst/-/kAudioChannelLayoutTag_DVD_0
+C/econst/-/kAudioChannelLayoutTag_DVD_1
+C/econst/-/kAudioChannelLayoutTag_DVD_10
+C/econst/-/kAudioChannelLayoutTag_DVD_11
+C/econst/-/kAudioChannelLayoutTag_DVD_12
+C/econst/-/kAudioChannelLayoutTag_DVD_13
+C/econst/-/kAudioChannelLayoutTag_DVD_14
+C/econst/-/kAudioChannelLayoutTag_DVD_15
+C/econst/-/kAudioChannelLayoutTag_DVD_16
+C/econst/-/kAudioChannelLayoutTag_DVD_17
+C/econst/-/kAudioChannelLayoutTag_DVD_18
+C/econst/-/kAudioChannelLayoutTag_DVD_19
+C/econst/-/kAudioChannelLayoutTag_DVD_2
+C/econst/-/kAudioChannelLayoutTag_DVD_20
+C/econst/-/kAudioChannelLayoutTag_DVD_3
+C/econst/-/kAudioChannelLayoutTag_DVD_4
+C/econst/-/kAudioChannelLayoutTag_DVD_5
+C/econst/-/kAudioChannelLayoutTag_DVD_6
+C/econst/-/kAudioChannelLayoutTag_DVD_7
+C/econst/-/kAudioChannelLayoutTag_DVD_8
+C/econst/-/kAudioChannelLayoutTag_DVD_9
+C/econst/-/kAudioChannelLayoutTag_Emagic_Default_7_1
+C/econst/-/kAudioChannelLayoutTag_Hexagonal
+C/econst/-/kAudioChannelLayoutTag_ITU_1_0
+C/econst/-/kAudioChannelLayoutTag_ITU_2_0
+C/econst/-/kAudioChannelLayoutTag_ITU_2_1
+C/econst/-/kAudioChannelLayoutTag_ITU_2_2
+C/econst/-/kAudioChannelLayoutTag_ITU_3_0
+C/econst/-/kAudioChannelLayoutTag_ITU_3_1
+C/econst/-/kAudioChannelLayoutTag_ITU_3_2
+C/econst/-/kAudioChannelLayoutTag_ITU_3_2_1
+C/econst/-/kAudioChannelLayoutTag_ITU_3_4_1
+C/econst/-/kAudioChannelLayoutTag_MatrixStereo
+C/econst/-/kAudioChannelLayoutTag_MidSide
+C/econst/-/kAudioChannelLayoutTag_Mono
+C/econst/-/kAudioChannelLayoutTag_MPEG_1_0
+C/econst/-/kAudioChannelLayoutTag_MPEG_2_0
+C/econst/-/kAudioChannelLayoutTag_MPEG_3_0_A
+C/econst/-/kAudioChannelLayoutTag_MPEG_3_0_B
+C/econst/-/kAudioChannelLayoutTag_MPEG_4_0_A
+C/econst/-/kAudioChannelLayoutTag_MPEG_4_0_B
+C/econst/-/kAudioChannelLayoutTag_MPEG_5_0_A
+C/econst/-/kAudioChannelLayoutTag_MPEG_5_0_B
+C/econst/-/kAudioChannelLayoutTag_MPEG_5_0_C
+C/econst/-/kAudioChannelLayoutTag_MPEG_5_0_D
+C/econst/-/kAudioChannelLayoutTag_MPEG_5_1_A
+C/econst/-/kAudioChannelLayoutTag_MPEG_5_1_B
+C/econst/-/kAudioChannelLayoutTag_MPEG_5_1_C
+C/econst/-/kAudioChannelLayoutTag_MPEG_5_1_D
+C/econst/-/kAudioChannelLayoutTag_MPEG_6_1_A
+C/econst/-/kAudioChannelLayoutTag_MPEG_7_1_A
+C/econst/-/kAudioChannelLayoutTag_MPEG_7_1_B
+C/econst/-/kAudioChannelLayoutTag_MPEG_7_1_C
+C/econst/-/kAudioChannelLayoutTag_Octagonal
+C/econst/-/kAudioChannelLayoutTag_Pentagonal
+C/econst/-/kAudioChannelLayoutTag_Quadraphonic
+C/econst/-/kAudioChannelLayoutTag_SMPTE_DTV
+C/econst/-/kAudioChannelLayoutTag_Stereo
+C/econst/-/kAudioChannelLayoutTag_StereoHeadphones
+C/econst/-/kAudioChannelLayoutTag_TMH_10_2_full
+C/econst/-/kAudioChannelLayoutTag_TMH_10_2_std
+C/econst/-/kAudioChannelLayoutTag_Unknown
+C/econst/-/kAudioChannelLayoutTag_UseChannelBitmap
+C/econst/-/kAudioChannelLayoutTag_UseChannelDescriptions
+C/econst/-/kAudioChannelLayoutTag_XY
+C/econst/-/kAudioClockSourceControlClassID
+C/econst/-/kAudioCodecAppendInputDataSelect
+C/econst/-/kAudioCodecBadPropertySizeError
+C/econst/-/kAudioCodecBitRateControlMode_Constant
+C/econst/-/kAudioCodecBitRateControlMode_LongTermAverage
+C/econst/-/kAudioCodecBitRateControlMode_Variable
+C/econst/-/kAudioCodecBitRateControlMode_VariableConstrained
+C/econst/-/kAudioCodecBitRateFormat
+C/econst/-/kAudioCodecBitRateFormat_ABR
+C/econst/-/kAudioCodecBitRateFormat_CBR
+C/econst/-/kAudioCodecBitRateFormat_VBR
+C/econst/-/kAudioCodecDoesSampleRateConversion
+C/econst/-/kAudioCodecExtendFrequencies
+C/econst/-/kAudioCodecGetPropertyInfoSelect
+C/econst/-/kAudioCodecGetPropertySelect
+C/econst/-/kAudioCodecIllegalOperationError
+C/econst/-/kAudioCodecInitializeSelect
+C/econst/-/kAudioCodecInputFormatsForOutputFormat
+C/econst/-/kAudioCodecNoError
+C/econst/-/kAudioCodecNotEnoughBufferSpaceError
+C/econst/-/kAudioCodecOutputFormatsForInputFormat
+C/econst/-/kAudioCodecOutputPrecedence
+C/econst/-/kAudioCodecOutputPrecedenceBitRate
+C/econst/-/kAudioCodecOutputPrecedenceNone
+C/econst/-/kAudioCodecOutputPrecedenceSampleRate
+C/econst/-/kAudioCodecPrimeMethod_None
+C/econst/-/kAudioCodecPrimeMethod_Normal
+C/econst/-/kAudioCodecPrimeMethod_Pre
+C/econst/-/kAudioCodecProduceOutputDataSelect
+C/econst/-/kAudioCodecProduceOutputPacketAtEOF
+C/econst/-/kAudioCodecProduceOutputPacketFailure
+C/econst/-/kAudioCodecProduceOutputPacketNeedsMoreInputData
+C/econst/-/kAudioCodecProduceOutputPacketSuccess
+C/econst/-/kAudioCodecProduceOutputPacketSuccessHasMore
+C/econst/-/kAudioCodecPropertyApplicableBitRateRange
+C/econst/-/kAudioCodecPropertyApplicableInputSampleRates
+C/econst/-/kAudioCodecPropertyApplicableOutputSampleRates
+C/econst/-/kAudioCodecPropertyAvailableBitRateRange
+C/econst/-/kAudioCodecPropertyAvailableBitRates
+C/econst/-/kAudioCodecPropertyAvailableInputChannelLayouts
+C/econst/-/kAudioCodecPropertyAvailableInputChannelLayoutTags
+C/econst/-/kAudioCodecPropertyAvailableInputSampleRates
+C/econst/-/kAudioCodecPropertyAvailableNumberChannels
+C/econst/-/kAudioCodecPropertyAvailableOutputChannelLayouts
+C/econst/-/kAudioCodecPropertyAvailableOutputChannelLayoutTags
+C/econst/-/kAudioCodecPropertyAvailableOutputSampleRates
+C/econst/-/kAudioCodecPropertyBitRateControlMode
+C/econst/-/kAudioCodecPropertyCurrentInputChannelLayout
+C/econst/-/kAudioCodecPropertyCurrentInputFormat
+C/econst/-/kAudioCodecPropertyCurrentInputSampleRate
+C/econst/-/kAudioCodecPropertyCurrentOutputChannelLayout
+C/econst/-/kAudioCodecPropertyCurrentOutputFormat
+C/econst/-/kAudioCodecPropertyCurrentOutputSampleRate
+C/econst/-/kAudioCodecPropertyCurrentTargetBitRate
+C/econst/-/kAudioCodecPropertyDoesSampleRateConversion
+C/econst/-/kAudioCodecPropertyFormatCFString
+C/econst/-/kAudioCodecPropertyFormatInfo
+C/econst/-/kAudioCodecPropertyFormatList
+C/econst/-/kAudioCodecPropertyHasVariablePacketByteSizes
+C/econst/-/kAudioCodecPropertyInputBufferSize
+C/econst/-/kAudioCodecPropertyInputChannelLayout
+C/econst/-/kAudioCodecPropertyInputFormatsForOutputFormat
+C/econst/-/kAudioCodecPropertyIsInitialized
+C/econst/-/kAudioCodecPropertyMagicCookie
+C/econst/-/kAudioCodecPropertyManufacturerCFString
+C/econst/-/kAudioCodecPropertyMaximumPacketByteSize
+C/econst/-/kAudioCodecPropertyMinimumDelayMode
+C/econst/-/kAudioCodecPropertyMinimumNumberInputPackets
+C/econst/-/kAudioCodecPropertyMinimumNumberOutputPackets
+C/econst/-/kAudioCodecPropertyNameCFString
+C/econst/-/kAudioCodecPropertyOutputChannelLayout
+C/econst/-/kAudioCodecPropertyOutputFormatsForInputFormat
+C/econst/-/kAudioCodecPropertyPacketFrameSize
+C/econst/-/kAudioCodecPropertyPaddedZeros
+C/econst/-/kAudioCodecPropertyPrimeInfo
+C/econst/-/kAudioCodecPropertyPrimeMethod
+C/econst/-/kAudioCodecPropertyQualitySetting
+C/econst/-/kAudioCodecPropertyRequiresPacketDescription
+C/econst/-/kAudioCodecPropertySettings
+C/econst/-/kAudioCodecPropertySoundQualityForVBR
+C/econst/-/kAudioCodecPropertySupportedInputFormats
+C/econst/-/kAudioCodecPropertySupportedOutputFormats
+C/econst/-/kAudioCodecPropertyUsedInputBufferSize
+C/econst/-/kAudioCodecPropertyZeroFramesPadded
+C/econst/-/kAudioCodecQuality_High
+C/econst/-/kAudioCodecQuality_Low
+C/econst/-/kAudioCodecQuality_Max
+C/econst/-/kAudioCodecQuality_Medium
+C/econst/-/kAudioCodecQuality_Min
+C/econst/-/kAudioCodecResetSelect
+C/econst/-/kAudioCodecSetPropertySelect
+C/econst/-/kAudioCodecStateError
+C/econst/-/kAudioCodecUninitializeSelect
+C/econst/-/kAudioCodecUnknownPropertyError
+C/econst/-/kAudioCodecUnspecifiedError
+C/econst/-/kAudioCodecUnsupportedFormatError
+C/econst/-/kAudioCodecUseRecommendedSampleRate
+C/econst/-/kAudioControlClassID
+C/econst/-/kAudioConverterApplicableEncodeBitRates
+C/econst/-/kAudioConverterApplicableEncodeSampleRates
+C/econst/-/kAudioConverterAvailableEncodeBitRates
+C/econst/-/kAudioConverterAvailableEncodeChannelLayoutTags
+C/econst/-/kAudioConverterAvailableEncodeSampleRates
+C/econst/-/kAudioConverterChannelMap
+C/econst/-/kAudioConverterCodecQuality
+C/econst/-/kAudioConverterCompressionMagicCookie
+C/econst/-/kAudioConverterCurrentInputStreamDescription
+C/econst/-/kAudioConverterCurrentOutputStreamDescription
+C/econst/-/kAudioConverterDecompressionMagicCookie
+C/econst/-/kAudioConverterEncodeAdjustableSampleRate
+C/econst/-/kAudioConverterEncodeBitRate
+C/econst/-/kAudioConverterErr_BadPropertySizeError
+C/econst/-/kAudioConverterErr_FormatNotSupported
+C/econst/-/kAudioConverterErr_InputSampleRateOutOfRange
+C/econst/-/kAudioConverterErr_InvalidInputSize
+C/econst/-/kAudioConverterErr_InvalidOutputSize
+C/econst/-/kAudioConverterErr_OperationNotSupported
+C/econst/-/kAudioConverterErr_OutputSampleRateOutOfRange
+C/econst/-/kAudioConverterErr_PropertyNotSupported
+C/econst/-/kAudioConverterErr_RequiresPacketDescriptionsError
+C/econst/-/kAudioConverterErr_UnspecifiedError
+C/econst/-/kAudioConverterInputChannelLayout
+C/econst/-/kAudioConverterOutputChannelLayout
+C/econst/-/kAudioConverterPrimeInfo
+C/econst/-/kAudioConverterPrimeMethod
+C/econst/-/kAudioConverterPropertyBitDepthHint
+C/econst/-/kAudioConverterPropertyCalculateInputBufferSize
+C/econst/-/kAudioConverterPropertyCalculateOutputBufferSize
+C/econst/-/kAudioConverterPropertyFormatList
+C/econst/-/kAudioConverterPropertyInputCodecParameters
+C/econst/-/kAudioConverterPropertyMaximumInputBufferSize
+C/econst/-/kAudioConverterPropertyMaximumInputPacketSize
+C/econst/-/kAudioConverterPropertyMaximumOutputPacketSize
+C/econst/-/kAudioConverterPropertyMinimumInputBufferSize
+C/econst/-/kAudioConverterPropertyMinimumOutputBufferSize
+C/econst/-/kAudioConverterPropertyOutputCodecParameters
+C/econst/-/kAudioConverterPropertySettings
+C/econst/-/kAudioConverterQuality_High
+C/econst/-/kAudioConverterQuality_Low
+C/econst/-/kAudioConverterQuality_Max
+C/econst/-/kAudioConverterQuality_Medium
+C/econst/-/kAudioConverterQuality_Min
+C/econst/-/kAudioConverterSampleRateConverterAlgorithm
+C/econst/-/kAudioConverterSampleRateConverterComplexity
+C/econst/-/kAudioConverterSampleRateConverterComplexity_Linear
+C/econst/-/kAudioConverterSampleRateConverterComplexity_Mastering
+C/econst/-/kAudioConverterSampleRateConverterComplexity_Normal
+C/econst/-/kAudioConverterSampleRateConverterInitialPhase
+C/econst/-/kAudioConverterSampleRateConverterQuality
+C/econst/-/kAudioDataDestinationControlClassID
+C/econst/-/kAudioDataSourceControlClassID
+C/econst/-/kAudioDecoderComponentType
+C/econst/-/kAudioDeviceClassID
+C/econst/-/kAudioDevicePropertyScopeInput
+C/econst/-/kAudioDevicePropertyScopeOutput
+C/econst/-/kAudioDevicePropertyScopePlayThrough
+C/econst/-/kAudioDeviceTransportTypeAggregate
+C/econst/-/kAudioDeviceTransportTypeAutoAggregate
+C/econst/-/kAudioDeviceUnknown
+C/econst/-/kAudioEncoderComponentType
+C/econst/-/kAudioFile3GP2Type
+C/econst/-/kAudioFile3GPType
+C/econst/-/kAudioFileAAC_ADTSType
+C/econst/-/kAudioFileAC3Type
+C/econst/-/kAudioFileAIFCType
+C/econst/-/kAudioFileAIFFType
+C/econst/-/kAudioFileAMRType
+C/econst/-/kAudioFileBadPropertySizeError
+C/econst/-/kAudioFileCAFType
+C/econst/-/kAudioFileDoesNotAllow64BitDataSizeError
+C/econst/-/kAudioFileFlags_DontPageAlignAudioData
+C/econst/-/kAudioFileFlags_EraseFile
+C/econst/-/kAudioFileGlobalInfo_AllExtensions
+C/econst/-/kAudioFileGlobalInfo_AllHFSTypeCodes
+C/econst/-/kAudioFileGlobalInfo_AllMIMETypes
+C/econst/-/kAudioFileGlobalInfo_AllUTIs
+C/econst/-/kAudioFileGlobalInfo_AvailableFormatIDs
+C/econst/-/kAudioFileGlobalInfo_AvailableStreamDescriptionsForFormat
+C/econst/-/kAudioFileGlobalInfo_ExtensionsForType
+C/econst/-/kAudioFileGlobalInfo_FileTypeName
+C/econst/-/kAudioFileGlobalInfo_HFSTypeCodesForType
+C/econst/-/kAudioFileGlobalInfo_MIMETypesForType
+C/econst/-/kAudioFileGlobalInfo_ReadableTypes
+C/econst/-/kAudioFileGlobalInfo_TypesForExtension
+C/econst/-/kAudioFileGlobalInfo_TypesForHFSTypeCode
+C/econst/-/kAudioFileGlobalInfo_TypesForMIMEType
+C/econst/-/kAudioFileGlobalInfo_TypesForUTI
+C/econst/-/kAudioFileGlobalInfo_UTIsForType
+C/econst/-/kAudioFileGlobalInfo_WritableTypes
+C/econst/-/kAudioFileInvalidChunkError
+C/econst/-/kAudioFileInvalidFileError
+C/econst/-/kAudioFileInvalidPacketOffsetError
+C/econst/-/kAudioFileLoopDirection_Backward
+C/econst/-/kAudioFileLoopDirection_Forward
+C/econst/-/kAudioFileLoopDirection_ForwardAndBackward
+C/econst/-/kAudioFileLoopDirection_NoLooping
+C/econst/-/kAudioFileM4AType
+C/econst/-/kAudioFileMarkerType_Generic
+C/econst/-/kAudioFileMP1Type
+C/econst/-/kAudioFileMP2Type
+C/econst/-/kAudioFileMP3Type
+C/econst/-/kAudioFileMPEG4Type
+C/econst/-/kAudioFileNextType
+C/econst/-/kAudioFileNotOptimizedError
+C/econst/-/kAudioFileOperationNotSupportedError
+C/econst/-/kAudioFilePermissionsError
+C/econst/-/kAudioFilePropertyAudioDataByteCount
+C/econst/-/kAudioFilePropertyAudioDataPacketCount
+C/econst/-/kAudioFilePropertyBitRate
+C/econst/-/kAudioFilePropertyByteToPacket
+C/econst/-/kAudioFilePropertyChannelLayout
+C/econst/-/kAudioFilePropertyChunkIDs
+C/econst/-/kAudioFilePropertyDataFormat
+C/econst/-/kAudioFilePropertyDataFormatName
+C/econst/-/kAudioFilePropertyDataOffset
+C/econst/-/kAudioFilePropertyDeferSizeUpdates
+C/econst/-/kAudioFilePropertyEstimatedDuration
+C/econst/-/kAudioFilePropertyFileFormat
+C/econst/-/kAudioFilePropertyFormatList
+C/econst/-/kAudioFilePropertyFrameToPacket
+C/econst/-/kAudioFilePropertyID3Tag
+C/econst/-/kAudioFilePropertyInfoDictionary
+C/econst/-/kAudioFilePropertyIsOptimized
+C/econst/-/kAudioFilePropertyMagicCookieData
+C/econst/-/kAudioFilePropertyMarkerList
+C/econst/-/kAudioFilePropertyMaximumPacketSize
+C/econst/-/kAudioFilePropertyPacketSizeUpperBound
+C/econst/-/kAudioFilePropertyPacketTableInfo
+C/econst/-/kAudioFilePropertyPacketToByte
+C/econst/-/kAudioFilePropertyPacketToFrame
+C/econst/-/kAudioFilePropertyRegionList
+C/econst/-/kAudioFilePropertyReserveDuration
+C/econst/-/kAudioFileReadPermission
+C/econst/-/kAudioFileReadWritePermission
+C/econst/-/kAudioFileRegionFlag_LoopEnable
+C/econst/-/kAudioFileRegionFlag_PlayBackward
+C/econst/-/kAudioFileRegionFlag_PlayForward
+C/econst/-/kAudioFileSoundDesigner2Type
+C/econst/-/kAudioFileStreamError_BadPropertySize
+C/econst/-/kAudioFileStreamError_DataUnavailable
+C/econst/-/kAudioFileStreamError_DiscontinuityCantRecover
+C/econst/-/kAudioFileStreamError_IllegalOperation
+C/econst/-/kAudioFileStreamError_InvalidFile
+C/econst/-/kAudioFileStreamError_InvalidPacketOffset
+C/econst/-/kAudioFileStreamError_NotOptimized
+C/econst/-/kAudioFileStreamError_UnspecifiedError
+C/econst/-/kAudioFileStreamError_UnsupportedDataFormat
+C/econst/-/kAudioFileStreamError_UnsupportedFileType
+C/econst/-/kAudioFileStreamError_UnsupportedProperty
+C/econst/-/kAudioFileStreamError_ValueUnknown
+C/econst/-/kAudioFileStreamParseFlag_Discontinuity
+C/econst/-/kAudioFileStreamProperty_AudioDataByteCount
+C/econst/-/kAudioFileStreamProperty_AudioDataPacketCount
+C/econst/-/kAudioFileStreamProperty_AverageBytesPerPacket
+C/econst/-/kAudioFileStreamProperty_BitRate
+C/econst/-/kAudioFileStreamProperty_ByteToPacket
+C/econst/-/kAudioFileStreamProperty_ChannelLayout
+C/econst/-/kAudioFileStreamProperty_DataFormat
+C/econst/-/kAudioFileStreamProperty_DataOffset
+C/econst/-/kAudioFileStreamProperty_FileFormat
+C/econst/-/kAudioFileStreamProperty_FormatList
+C/econst/-/kAudioFileStreamProperty_FrameToPacket
+C/econst/-/kAudioFileStreamProperty_MagicCookieData
+C/econst/-/kAudioFileStreamProperty_MaximumPacketSize
+C/econst/-/kAudioFileStreamProperty_PacketSizeUpperBound
+C/econst/-/kAudioFileStreamProperty_PacketTableInfo
+C/econst/-/kAudioFileStreamProperty_PacketToByte
+C/econst/-/kAudioFileStreamProperty_PacketToFrame
+C/econst/-/kAudioFileStreamProperty_ReadyToProducePackets
+C/econst/-/kAudioFileStreamPropertyFlag_CacheProperty
+C/econst/-/kAudioFileStreamPropertyFlag_PropertyIsCached
+C/econst/-/kAudioFileStreamSeekFlag_OffsetIsEstimated
+C/econst/-/kAudioFileUnspecifiedError
+C/econst/-/kAudioFileUnsupportedDataFormatError
+C/econst/-/kAudioFileUnsupportedFileTypeError
+C/econst/-/kAudioFileUnsupportedPropertyError
+C/econst/-/kAudioFileWAVEType
+C/econst/-/kAudioFileWritePermission
+C/econst/-/kAudioFormat60958AC3
+C/econst/-/kAudioFormatAC3
+C/econst/-/kAudioFormatAES3
+C/econst/-/kAudioFormatALaw
+C/econst/-/kAudioFormatAMR
+C/econst/-/kAudioFormatAppleIMA4
+C/econst/-/kAudioFormatAppleLossless
+C/econst/-/kAudioFormatAudible
+C/econst/-/kAudioFormatBadPropertySizeError
+C/econst/-/kAudioFormatBadSpecifierSizeError
+C/econst/-/kAudioFormatDVAudio
+C/econst/-/kAudioFormatDVIIntelIMA
+C/econst/-/kAudioFormatFlagIsAlignedHigh
+C/econst/-/kAudioFormatFlagIsBigEndian
+C/econst/-/kAudioFormatFlagIsFloat
+C/econst/-/kAudioFormatFlagIsNonInterleaved
+C/econst/-/kAudioFormatFlagIsNonMixable
+C/econst/-/kAudioFormatFlagIsPacked
+C/econst/-/kAudioFormatFlagIsSignedInteger
+C/econst/-/kAudioFormatFlagsAreAllClear
+C/econst/-/kAudioFormatFlagsAudioUnitCanonical
+C/econst/-/kAudioFormatFlagsCanonical
+C/econst/-/kAudioFormatFlagsNativeEndian
+C/econst/-/kAudioFormatFlagsNativeFloatPacked
+C/econst/-/kAudioFormatiLBC
+C/econst/-/kAudioFormatLinearPCM
+C/econst/-/kAudioFormatMACE3
+C/econst/-/kAudioFormatMACE6
+C/econst/-/kAudioFormatMicrosoftGSM
+C/econst/-/kAudioFormatMIDIStream
+C/econst/-/kAudioFormatMPEG4AAC
+C/econst/-/kAudioFormatMPEG4AAC_HE
+C/econst/-/kAudioFormatMPEG4AAC_HE_V2
+C/econst/-/kAudioFormatMPEG4AAC_LD
+C/econst/-/kAudioFormatMPEG4AAC_Spatial
+C/econst/-/kAudioFormatMPEG4CELP
+C/econst/-/kAudioFormatMPEG4HVXC
+C/econst/-/kAudioFormatMPEG4TwinVQ
+C/econst/-/kAudioFormatMPEGLayer1
+C/econst/-/kAudioFormatMPEGLayer2
+C/econst/-/kAudioFormatMPEGLayer3
+C/econst/-/kAudioFormatParameterValueStream
+C/econst/-/kAudioFormatProperty_ASBDFromESDS
+C/econst/-/kAudioFormatProperty_ASBDFromMPEGPacket
+C/econst/-/kAudioFormatProperty_AvailableEncodeBitRates
+C/econst/-/kAudioFormatProperty_AvailableEncodeChannelLayoutTags
+C/econst/-/kAudioFormatProperty_AvailableEncodeNumberChannels
+C/econst/-/kAudioFormatProperty_AvailableEncodeSampleRates
+C/econst/-/kAudioFormatProperty_BalanceFade
+C/econst/-/kAudioFormatProperty_BitmapForLayoutTag
+C/econst/-/kAudioFormatProperty_ChannelLayoutForBitmap
+C/econst/-/kAudioFormatProperty_ChannelLayoutForTag
+C/econst/-/kAudioFormatProperty_ChannelLayoutFromESDS
+C/econst/-/kAudioFormatProperty_ChannelLayoutName
+C/econst/-/kAudioFormatProperty_ChannelMap
+C/econst/-/kAudioFormatProperty_ChannelName
+C/econst/-/kAudioFormatProperty_ChannelShortName
+C/econst/-/kAudioFormatProperty_DecodeFormatIDs
+C/econst/-/kAudioFormatProperty_Decoders
+C/econst/-/kAudioFormatProperty_EncodeFormatIDs
+C/econst/-/kAudioFormatProperty_Encoders
+C/econst/-/kAudioFormatProperty_FirstPlayableFormatFromList
+C/econst/-/kAudioFormatProperty_FormatInfo
+C/econst/-/kAudioFormatProperty_FormatIsExternallyFramed
+C/econst/-/kAudioFormatProperty_FormatIsVBR
+C/econst/-/kAudioFormatProperty_FormatList
+C/econst/-/kAudioFormatProperty_FormatName
+C/econst/-/kAudioFormatProperty_ID3TagSize
+C/econst/-/kAudioFormatProperty_ID3TagToDictionary
+C/econst/-/kAudioFormatProperty_MatrixMixMap
+C/econst/-/kAudioFormatProperty_NumberOfChannelsForLayout
+C/econst/-/kAudioFormatProperty_OutputFormatList
+C/econst/-/kAudioFormatProperty_PanningMatrix
+C/econst/-/kAudioFormatProperty_TagForChannelLayout
+C/econst/-/kAudioFormatProperty_TagsForNumberOfChannels
+C/econst/-/kAudioFormatQDesign
+C/econst/-/kAudioFormatQDesign2
+C/econst/-/kAudioFormatQUALCOMM
+C/econst/-/kAudioFormatTimeCode
+C/econst/-/kAudioFormatULaw
+C/econst/-/kAudioFormatUnknownFormatError
+C/econst/-/kAudioFormatUnspecifiedError
+C/econst/-/kAudioFormatUnsupportedDataFormatError
+C/econst/-/kAudioFormatUnsupportedPropertyError
+C/econst/-/kAudioFormatVariableDurationDVAudio
+C/macro/-/kAudioHardwarePlugInInterface2ID
+C/macro/-/kAudioHardwarePlugInInterface3ID
+C/macro/-/kAudioHardwarePlugInInterfaceID
+C/macro/-/kAudioHardwarePlugInTypeID
+C/econst/-/kAudioHardwareServiceDeviceProperty_VirtualMasterBalance
+C/econst/-/kAudioHardwareServiceDeviceProperty_VirtualMasterVolume
+C/econst/-/kAudioHardwareServiceProperty_ServiceRestarted
+C/econst/-/kAudioISubOwnerClassID
+C/econst/-/kAudioJackControlClassID
+C/econst/-/kAudioLevelControlClassID
+C/econst/-/kAudioLFEMuteControlClassID
+C/econst/-/kAudioLFEVolumeControlClassID
+C/econst/-/kAudioLineLevelControlClassID
+C/econst/-/kAudioMuteControlClassID
+C/econst/-/kAudioObjectClassID
+C/econst/-/kAudioObjectClassIDWildcard
+C/econst/-/kAudioObjectPropertyClass
+C/econst/-/kAudioObjectPropertyCreator
+C/econst/-/kAudioObjectPropertyElementCategoryName
+C/econst/-/kAudioObjectPropertyElementMaster
+C/econst/-/kAudioObjectPropertyElementName
+C/econst/-/kAudioObjectPropertyElementNumberName
+C/econst/-/kAudioObjectPropertyListenerAdded
+C/econst/-/kAudioObjectPropertyListenerRemoved
+C/econst/-/kAudioObjectPropertyManufacturer
+C/econst/-/kAudioObjectPropertyObjectName
+C/econst/-/kAudioObjectPropertyOwnedObjects
+C/econst/-/kAudioObjectPropertyOwner
+C/econst/-/kAudioObjectPropertyScopeGlobal
+C/econst/-/kAudioObjectSystemObject
+C/econst/-/kAudioObjectUnknown
+C/econst/-/kAudioOfflineUnitRenderAction_Complete
+C/econst/-/kAudioOfflineUnitRenderAction_Preflight
+C/econst/-/kAudioOfflineUnitRenderAction_Render
+C/econst/-/kAudioOutputUnitProperty_ChannelMap
+C/econst/-/kAudioOutputUnitProperty_CurrentDevice
+C/econst/-/kAudioOutputUnitProperty_EnableIO
+C/econst/-/kAudioOutputUnitProperty_HasIO
+C/econst/-/kAudioOutputUnitProperty_IsRunning
+C/econst/-/kAudioOutputUnitProperty_SetInputCallback
+C/econst/-/kAudioOutputUnitProperty_StartTime
+C/econst/-/kAudioOutputUnitProperty_StartTimestampsAtZero
+C/econst/-/kAudioOutputUnitRange
+C/econst/-/kAudioOutputUnitStartSelect
+C/econst/-/kAudioOutputUnitStopSelect
+C/econst/-/kAudioPlugInClassID
+C/econst/-/kAudioQueueDeviceProperty_NumberChannels
+C/econst/-/kAudioQueueDeviceProperty_SampleRate
+C/econst/-/kAudioQueueErr_BufferEmpty
+C/econst/-/kAudioQueueErr_BufferInQueue
+C/econst/-/kAudioQueueErr_CannotStart
+C/econst/-/kAudioQueueErr_CodecNotFound
+C/econst/-/kAudioQueueErr_DisposalPending
+C/econst/-/kAudioQueueErr_EnqueueDuringReset
+C/econst/-/kAudioQueueErr_InvalidBuffer
+C/econst/-/kAudioQueueErr_InvalidDevice
+C/econst/-/kAudioQueueErr_InvalidParameter
+C/econst/-/kAudioQueueErr_InvalidProperty
+C/econst/-/kAudioQueueErr_InvalidPropertySize
+C/econst/-/kAudioQueueErr_InvalidPropertyValue
+C/econst/-/kAudioQueueErr_InvalidQueueType
+C/econst/-/kAudioQueueErr_InvalidRunState
+C/econst/-/kAudioQueueErr_Permissions
+C/econst/-/kAudioQueueErr_PrimeTimedOut
+C/econst/-/kAudioQueueParam_Volume
+C/econst/-/kAudioQueueProperty_ChannelLayout
+C/econst/-/kAudioQueueProperty_CurrentDevice
+C/econst/-/kAudioQueueProperty_CurrentLevelMeter
+C/econst/-/kAudioQueueProperty_CurrentLevelMeterDB
+C/econst/-/kAudioQueueProperty_DecodeBufferSizeFrames
+C/econst/-/kAudioQueueProperty_EnableLevelMetering
+C/econst/-/kAudioQueueProperty_IsRunning
+C/econst/-/kAudioQueueProperty_MagicCookie
+C/econst/-/kAudioQueueProperty_MaximumOutputPacketSize
+C/econst/-/kAudioQueueProperty_StreamDescription
+C/econst/-/kAudioSelectorControlClassID
+C/econst/-/kAudioServicesBadPropertySizeError
+C/econst/-/kAudioServicesBadSpecifierSizeError
+C/econst/-/kAudioServicesNoError
+C/econst/-/kAudioServicesPropertyCompletePlaybackIfAppDies
+C/econst/-/kAudioServicesPropertyIsUISound
+C/econst/-/kAudioServicesSystemSoundClientTimedOutError
+C/econst/-/kAudioServicesSystemSoundUnspecifiedError
+C/econst/-/kAudioServicesUnsupportedPropertyError
+C/econst/-/kAudioSoloControlClassID
+C/econst/-/kAudioStereoPanControlClassID
+C/econst/-/kAudioStreamAnyRate
+C/econst/-/kAudioStreamClassID
+C/econst/-/kAudioStreamUnknown
+C/econst/-/kAudioSubDeviceClassID
+C/macro/-/kAudioSubDeviceDriftCompensationKey
+C/macro/-/kAudioSubDeviceDriftCompensationQualityKey
+C/macro/-/kAudioSubDeviceExtraInputLatencyKey
+C/macro/-/kAudioSubDeviceExtraOutputLatencyKey
+C/macro/-/kAudioSubDeviceInputChannelsKey
+C/macro/-/kAudioSubDeviceNameKey
+C/macro/-/kAudioSubDeviceOutputChannelsKey
+C/macro/-/kAudioSubDeviceUIDKey
+C/econst/-/kAudioSystemObjectClassID
+C/econst/-/kAudioTimeStampHostTimeValid
+C/econst/-/kAudioTimeStampRateScalarValid
+C/econst/-/kAudioTimeStampSampleHostTimeValid
+C/econst/-/kAudioTimeStampSampleTimeValid
+C/econst/-/kAudioTimeStampSMPTETimeValid
+C/econst/-/kAudioTimeStampWordClockTimeValid
+C/econst/-/kAudioToolboxErr_CannotDoInCurrentContext
+C/econst/-/kAudioToolboxErr_EndOfTrack
+C/econst/-/kAudioToolboxErr_IllegalTrackDestination
+C/econst/-/kAudioToolboxErr_InvalidEventType
+C/econst/-/kAudioToolboxErr_InvalidPlayerState
+C/econst/-/kAudioToolboxErr_InvalidSequenceType
+C/econst/-/kAudioToolboxErr_NoSequence
+C/econst/-/kAudioToolboxErr_StartOfTrack
+C/econst/-/kAudioToolboxErr_TrackIndexError
+C/econst/-/kAudioToolboxErr_TrackNotFound
+C/econst/-/kAudioUnitAddPropertyListenerSelect
+C/econst/-/kAudioUnitAddRenderNotifySelect
+C/econst/-/kAudioUnitClumpID_System
+C/econst/-/kAudioUnitErr_CannotDoInCurrentContext
+C/econst/-/kAudioUnitErr_FailedInitialization
+C/econst/-/kAudioUnitErr_FileNotSpecified
+C/econst/-/kAudioUnitErr_FormatNotSupported
+C/econst/-/kAudioUnitErr_IllegalInstrument
+C/econst/-/kAudioUnitErr_Initialized
+C/econst/-/kAudioUnitErr_InstrumentTypeNotFound
+C/econst/-/kAudioUnitErr_InvalidElement
+C/econst/-/kAudioUnitErr_InvalidFile
+C/econst/-/kAudioUnitErr_InvalidOfflineRender
+C/econst/-/kAudioUnitErr_InvalidParameter
+C/econst/-/kAudioUnitErr_InvalidProperty
+C/econst/-/kAudioUnitErr_InvalidPropertyValue
+C/econst/-/kAudioUnitErr_InvalidScope
+C/econst/-/kAudioUnitErr_NoConnection
+C/econst/-/kAudioUnitErr_PropertyNotInUse
+C/econst/-/kAudioUnitErr_PropertyNotWritable
+C/econst/-/kAudioUnitErr_TooManyFramesToProcess
+C/econst/-/kAudioUnitErr_Unauthorized
+C/econst/-/kAudioUnitErr_Uninitialized
+C/econst/-/kAudioUnitErr_UnknownFileType
+C/econst/-/kAudioUnitGetParameterSelect
+C/econst/-/kAudioUnitGetPropertyInfoSelect
+C/econst/-/kAudioUnitGetPropertySelect
+C/econst/-/kAudioUnitInitializeSelect
+C/econst/-/kAudioUnitManufacturer_Apple
+C/econst/-/kAudioUnitOfflineProperty_InputSize
+C/econst/-/kAudioUnitOfflineProperty_OutputSize
+C/econst/-/kAudioUnitOfflineProperty_PreflightName
+C/econst/-/kAudioUnitOfflineProperty_PreflightRequirements
+C/econst/-/kAudioUnitOfflineProperty_StartOffset
+C/econst/-/kAudioUnitParameterFlag_CanRamp
+C/econst/-/kAudioUnitParameterFlag_CFNameRelease
+C/econst/-/kAudioUnitParameterFlag_DisplayCubed
+C/econst/-/kAudioUnitParameterFlag_DisplayCubeRoot
+C/econst/-/kAudioUnitParameterFlag_DisplayExponential
+C/econst/-/kAudioUnitParameterFlag_DisplayLogarithmic
+C/econst/-/kAudioUnitParameterFlag_DisplayMask
+C/econst/-/kAudioUnitParameterFlag_DisplaySquared
+C/econst/-/kAudioUnitParameterFlag_DisplaySquareRoot
+C/econst/-/kAudioUnitParameterFlag_ExpertMode
+C/econst/-/kAudioUnitParameterFlag_HasCFNameString
+C/econst/-/kAudioUnitParameterFlag_HasClump
+C/econst/-/kAudioUnitParameterFlag_IsElementMeta
+C/econst/-/kAudioUnitParameterFlag_IsGlobalMeta
+C/econst/-/kAudioUnitParameterFlag_IsHighResolution
+C/econst/-/kAudioUnitParameterFlag_IsReadable
+C/econst/-/kAudioUnitParameterFlag_IsWritable
+C/econst/-/kAudioUnitParameterFlag_MeterReadOnly
+C/econst/-/kAudioUnitParameterFlag_NonRealTime
+C/econst/-/kAudioUnitParameterFlag_ValuesHaveStrings
+C/econst/-/kAudioUnitParameterUnit_AbsoluteCents
+C/econst/-/kAudioUnitParameterUnit_Beats
+C/econst/-/kAudioUnitParameterUnit_Boolean
+C/econst/-/kAudioUnitParameterUnit_BPM
+C/econst/-/kAudioUnitParameterUnit_Cents
+C/econst/-/kAudioUnitParameterUnit_CustomUnit
+C/econst/-/kAudioUnitParameterUnit_Decibels
+C/econst/-/kAudioUnitParameterUnit_Degrees
+C/econst/-/kAudioUnitParameterUnit_EqualPowerCrossfade
+C/econst/-/kAudioUnitParameterUnit_Generic
+C/econst/-/kAudioUnitParameterUnit_Hertz
+C/econst/-/kAudioUnitParameterUnit_Indexed
+C/econst/-/kAudioUnitParameterUnit_LinearGain
+C/econst/-/kAudioUnitParameterUnit_Meters
+C/econst/-/kAudioUnitParameterUnit_MIDIController
+C/econst/-/kAudioUnitParameterUnit_MIDINoteNumber
+C/econst/-/kAudioUnitParameterUnit_Milliseconds
+C/econst/-/kAudioUnitParameterUnit_MixerFaderCurve1
+C/econst/-/kAudioUnitParameterUnit_Octaves
+C/econst/-/kAudioUnitParameterUnit_Pan
+C/econst/-/kAudioUnitParameterUnit_Percent
+C/econst/-/kAudioUnitParameterUnit_Phase
+C/econst/-/kAudioUnitParameterUnit_Rate
+C/econst/-/kAudioUnitParameterUnit_Ratio
+C/econst/-/kAudioUnitParameterUnit_RelativeSemiTones
+C/econst/-/kAudioUnitParameterUnit_SampleFrames
+C/econst/-/kAudioUnitParameterUnit_Seconds
+C/econst/-/kAudioUnitProperty_3DMixerAttenuationCurve
+C/econst/-/kAudioUnitProperty_3DMixerDistanceAtten
+C/econst/-/kAudioUnitProperty_3DMixerDistanceParams
+C/econst/-/kAudioUnitProperty_3DMixerRenderingFlags
+C/econst/-/kAudioUnitProperty_AudioChannelLayout
+C/econst/-/kAudioUnitProperty_AUHostIdentifier
+C/econst/-/kAudioUnitProperty_BypassEffect
+C/econst/-/kAudioUnitProperty_ClassInfo
+C/econst/-/kAudioUnitProperty_ClassInfoFromDocument
+C/econst/-/kAudioUnitProperty_CocoaUI
+C/econst/-/kAudioUnitProperty_ContextName
+C/econst/-/kAudioUnitProperty_CPULoad
+C/econst/-/kAudioUnitProperty_DependentParameters
+C/econst/-/kAudioUnitProperty_DopplerShift
+C/econst/-/kAudioUnitProperty_ElementCount
+C/econst/-/kAudioUnitProperty_ElementName
+C/econst/-/kAudioUnitProperty_FactoryPresets
+C/econst/-/kAudioUnitProperty_FastDispatch
+C/econst/-/kAudioUnitProperty_FrequencyResponse
+C/econst/-/kAudioUnitProperty_GetUIComponentList
+C/econst/-/kAudioUnitProperty_HostCallbacks
+C/econst/-/kAudioUnitProperty_IconLocation
+C/econst/-/kAudioUnitProperty_InPlaceProcessing
+C/econst/-/kAudioUnitProperty_InputSamplesInOutput
+C/econst/-/kAudioUnitProperty_LastRenderError
+C/econst/-/kAudioUnitProperty_Latency
+C/econst/-/kAudioUnitProperty_MakeConnection
+C/econst/-/kAudioUnitProperty_MatrixDimensions
+C/econst/-/kAudioUnitProperty_MatrixLevels
+C/econst/-/kAudioUnitProperty_MaximumFramesPerSlice
+C/econst/-/kAudioUnitProperty_MeterClipping
+C/econst/-/kAudioUnitProperty_MeteringMode
+C/econst/-/kAudioUnitProperty_MIDIOutputCallback
+C/econst/-/kAudioUnitProperty_MIDIOutputCallbackInfo
+C/econst/-/kAudioUnitProperty_OfflineRender
+C/econst/-/kAudioUnitProperty_ParameterClumpName
+C/econst/-/kAudioUnitProperty_ParameterIDName
+C/econst/-/kAudioUnitProperty_ParameterInfo
+C/econst/-/kAudioUnitProperty_ParameterList
+C/econst/-/kAudioUnitProperty_ParameterStringFromValue
+C/econst/-/kAudioUnitProperty_ParameterValueFromString
+C/econst/-/kAudioUnitProperty_ParameterValueStrings
+C/econst/-/kAudioUnitProperty_PresentationLatency
+C/econst/-/kAudioUnitProperty_PresentPreset
+C/econst/-/kAudioUnitProperty_RenderQuality
+C/econst/-/kAudioUnitProperty_ReverbPreset
+C/econst/-/kAudioUnitProperty_SampleRate
+C/econst/-/kAudioUnitProperty_SampleRateConverterComplexity
+C/econst/-/kAudioUnitProperty_SetExternalBuffer
+C/econst/-/kAudioUnitProperty_SetRenderCallback
+C/econst/-/kAudioUnitProperty_ShouldAllocateBuffer
+C/econst/-/kAudioUnitProperty_SpatializationAlgorithm
+C/econst/-/kAudioUnitProperty_SpeechChannel
+C/econst/-/kAudioUnitProperty_StreamFormat
+C/econst/-/kAudioUnitProperty_SupportedChannelLayoutTags
+C/econst/-/kAudioUnitProperty_SupportedNumChannels
+C/econst/-/kAudioUnitProperty_TailTime
+C/econst/-/kAudioUnitProperty_Voice
+C/econst/-/kAudioUnitRange
+C/econst/-/kAudioUnitRemovePropertyListenerSelect
+C/econst/-/kAudioUnitRemovePropertyListenerWithUserDataSelect
+C/econst/-/kAudioUnitRemoveRenderNotifySelect
+C/econst/-/kAudioUnitRenderAction_OutputIsSilence
+C/econst/-/kAudioUnitRenderAction_PostRender
+C/econst/-/kAudioUnitRenderAction_PostRenderError
+C/econst/-/kAudioUnitRenderAction_PreRender
+C/econst/-/kAudioUnitRenderSelect
+C/econst/-/kAudioUnitResetSelect
+C/econst/-/kAudioUnitSampleRateConverterComplexity_Linear
+C/econst/-/kAudioUnitSampleRateConverterComplexity_Mastering
+C/econst/-/kAudioUnitSampleRateConverterComplexity_Normal
+C/econst/-/kAudioUnitScheduleParametersSelect
+C/econst/-/kAudioUnitScope_Global
+C/econst/-/kAudioUnitScope_Group
+C/econst/-/kAudioUnitScope_Input
+C/econst/-/kAudioUnitScope_Note
+C/econst/-/kAudioUnitScope_Output
+C/econst/-/kAudioUnitScope_Part
+C/econst/-/kAudioUnitSetParameterSelect
+C/econst/-/kAudioUnitSetPropertySelect
+C/econst/-/kAudioUnitSubType_3DMixer
+C/econst/-/kAudioUnitSubType_AUConverter
+C/econst/-/kAudioUnitSubType_AUFilter
+C/econst/-/kAudioUnitSubType_BandPassFilter
+C/econst/-/kAudioUnitSubType_DefaultOutput
+C/econst/-/kAudioUnitSubType_DeferredRenderer
+C/econst/-/kAudioUnitSubType_Delay
+C/econst/-/kAudioUnitSubType_Distortion
+C/econst/-/kAudioUnitSubType_DynamicsProcessor
+C/econst/-/kAudioUnitSubType_GenericOutput
+C/econst/-/kAudioUnitSubType_GraphicEQ
+C/econst/-/kAudioUnitSubType_HALOutput
+C/econst/-/kAudioUnitSubType_HighPassFilter
+C/econst/-/kAudioUnitSubType_HighShelfFilter
+C/econst/-/kAudioUnitSubType_LowPassFilter
+C/econst/-/kAudioUnitSubType_LowShelfFilter
+C/econst/-/kAudioUnitSubType_MatrixMixer
+C/econst/-/kAudioUnitSubType_MatrixReverb
+C/econst/-/kAudioUnitSubType_Merger
+C/econst/-/kAudioUnitSubType_MultiBandCompressor
+C/econst/-/kAudioUnitSubType_MultiChannelMixer
+C/econst/-/kAudioUnitSubType_NetSend
+C/econst/-/kAudioUnitSubType_ParametricEQ
+C/econst/-/kAudioUnitSubType_PeakLimiter
+C/econst/-/kAudioUnitSubType_Pitch
+C/econst/-/kAudioUnitSubType_RogerBeep
+C/econst/-/kAudioUnitSubType_SampleDelay
+C/econst/-/kAudioUnitSubType_SpeechSynthesis
+C/econst/-/kAudioUnitSubType_Splitter
+C/econst/-/kAudioUnitSubType_StereoMixer
+C/econst/-/kAudioUnitSubType_SystemOutput
+C/econst/-/kAudioUnitSubType_TimePitch
+C/econst/-/kAudioUnitSubType_Varispeed
+C/econst/-/kAudioUnitType_Effect
+C/econst/-/kAudioUnitType_FormatConverter
+C/econst/-/kAudioUnitType_Generator
+C/econst/-/kAudioUnitType_Mixer
+C/econst/-/kAudioUnitType_MusicDevice
+C/econst/-/kAudioUnitType_MusicEffect
+C/econst/-/kAudioUnitType_OfflineEffect
+C/econst/-/kAudioUnitType_Output
+C/econst/-/kAudioUnitType_Panner
+C/econst/-/kAudioUnitUninitializeSelect
+C/econst/-/kAudioUnityCodecComponentType
+C/econst/-/kAudioVolumeControlClassID
+C/econst/-/kAUGraphErr_CannotDoInCurrentContext
+C/econst/-/kAUGraphErr_InvalidAudioUnit
+C/econst/-/kAUGraphErr_InvalidConnection
+C/econst/-/kAUGraphErr_NodeNotFound
+C/econst/-/kAUGraphErr_OutputNodeErr
+C/econst/-/kAUNodeInteraction_Connection
+C/econst/-/kAUNodeInteraction_InputCallback
+C/macro/-/kAUPresetCPULoadKey
+C/macro/-/kAUPresetDataKey
+C/macro/-/kAUPresetElementNameKey
+C/macro/-/kAUPresetExternalFileRefs
+C/macro/-/kAUPresetManufacturerKey
+C/macro/-/kAUPresetMASDataKey
+C/macro/-/kAUPresetNameKey
+C/macro/-/kAUPresetPartKey
+C/macro/-/kAUPresetRenderQualityKey
+C/macro/-/kAUPresetSubtypeKey
+C/macro/-/kAUPresetTypeKey
+C/macro/-/kAUPresetVersionKey
+C/macro/-/kAUPresetVSTDataKey
+C/macro/-/kAUPresetVSTPresetKey
+C/tag/-/kauth_acl
+C/tdef/-/kauth_cred_t
+C/macro/-/KAUTH_VNODE_GENERIC_ALL
+C/macro/-/KAUTH_VNODE_GENERIC_EXECUTE
+C/macro/-/KAUTH_VNODE_GENERIC_READ
+C/macro/-/KAUTH_VNODE_GENERIC_WRITE
+C/macro/-/kAuthorizationComment
+C/econst/-/kAuthorizationContextFlagExtractable
+C/econst/-/kAuthorizationContextFlagSticky
+C/econst/-/kAuthorizationContextFlagVolatile
+C/macro/-/kAuthorizationEmptyEnvironment
+C/macro/-/kAuthorizationEnvironmentIcon
+C/macro/-/kAuthorizationEnvironmentPassword
+C/macro/-/kAuthorizationEnvironmentPrompt
+C/macro/-/kAuthorizationEnvironmentShared
+C/macro/-/kAuthorizationEnvironmentUsername
+C/econst/-/kAuthorizationExternalFormLength
+C/econst/-/kAuthorizationFlagCanNotPreAuthorize
+C/econst/-/kAuthorizationFlagDefaults
+C/econst/-/kAuthorizationFlagDestroyRights
+C/econst/-/kAuthorizationFlagExtendRights
+C/econst/-/kAuthorizationFlagInteractionAllowed
+C/econst/-/kAuthorizationFlagNoData
+C/econst/-/kAuthorizationFlagPartialRights
+C/econst/-/kAuthorizationFlagPreAuthorize
+C/econst/-/kAuthorizationResultAllow
+C/econst/-/kAuthorizationResultDeny
+C/econst/-/kAuthorizationResultUndefined
+C/econst/-/kAuthorizationResultUserCanceled
+C/macro/-/kAuthorizationRightExecute
+C/macro/-/kAuthorizationRightRule
+C/macro/-/kAuthorizationRuleAuthenticateAsAdmin
+C/macro/-/kAuthorizationRuleAuthenticateAsSessionUser
+C/macro/-/kAuthorizationRuleClassAllow
+C/macro/-/kAuthorizationRuleClassDeny
+C/macro/-/kAuthorizationRuleIsAdmin
+C/macro/-/kAXAllowedValuesAttribute
+C/macro/-/kAXAMPMFieldAttribute
+C/macro/-/kAXApplicationActivatedNotification
+C/macro/-/kAXApplicationDeactivatedNotification
+C/macro/-/kAXApplicationDockItemSubrole
+C/macro/-/kAXApplicationHiddenNotification
+C/macro/-/kAXApplicationRole
+C/macro/-/kAXApplicationShownNotification
+C/macro/-/kAXAscendingSortDirectionValue
+C/data/-/kAXAttachmentTextAttribute
+C/macro/-/kAXAttributedStringForRangeParameterizedAttribute
+C/data/-/kAXBackgroundColorTextAttribute
+C/macro/-/kAXBoundsForRangeParameterizedAttribute
+C/macro/-/kAXBrowserRole
+C/macro/-/kAXBusyIndicatorRole
+C/macro/-/kAXButtonRole
+C/macro/-/kAXCancelAction
+C/macro/-/kAXCancelButtonAttribute
+C/macro/-/kAXCheckBoxRole
+C/macro/-/kAXChildrenAttribute
+C/macro/-/kAXCloseButtonAttribute
+C/macro/-/kAXCloseButtonSubrole
+C/macro/-/kAXColorWellRole
+C/macro/-/kAXColumnHeaderUIElementsAttribute
+C/macro/-/kAXColumnRole
+C/macro/-/kAXColumnsAttribute
+C/macro/-/kAXColumnTitleAttribute
+C/macro/-/kAXComboBoxRole
+C/macro/-/kAXConfirmAction
+C/macro/-/kAXContentsAttribute
+C/tag/-/kAXCopyMultipleAttributeOptionStopOnError
+C/macro/-/kAXCreatedNotification
+C/macro/-/kAXDateFieldRole
+C/macro/-/kAXDayFieldAttribute
+C/macro/-/kAXDecrementAction
+C/macro/-/kAXDecrementArrowSubrole
+C/macro/-/kAXDecrementButtonAttribute
+C/macro/-/kAXDecrementPageSubrole
+C/macro/-/kAXDefaultButtonAttribute
+C/macro/-/kAXDescendingSortDirectionValue
+C/macro/-/kAXDescriptionAttribute
+C/macro/-/kAXDialogSubrole
+C/macro/-/kAXDisclosedByRowAttribute
+C/macro/-/kAXDisclosedRowsAttribute
+C/macro/-/kAXDisclosingAttribute
+C/macro/-/kAXDisclosureTriangleRole
+C/macro/-/kAXDockExtraDockItemSubrole
+C/macro/-/kAXDockItemRole
+C/macro/-/kAXDocumentAttribute
+C/macro/-/kAXDocumentDockItemSubrole
+C/macro/-/kAXDrawerCreatedNotification
+C/macro/-/kAXDrawerRole
+C/macro/-/kAXEditedAttribute
+C/macro/-/kAXEnabledAttribute
+C/econst/-/kAXErrorActionUnsupported
+C/econst/-/kAXErrorAPIDisabled
+C/econst/-/kAXErrorAttributeUnsupported
+C/econst/-/kAXErrorCannotComplete
+C/econst/-/kAXErrorFailure
+C/econst/-/kAXErrorIllegalArgument
+C/econst/-/kAXErrorInvalidUIElement
+C/econst/-/kAXErrorInvalidUIElementObserver
+C/econst/-/kAXErrorNotificationAlreadyRegistered
+C/econst/-/kAXErrorNotificationNotRegistered
+C/econst/-/kAXErrorNotificationUnsupported
+C/econst/-/kAXErrorNotImplemented
+C/econst/-/kAXErrorNoValue
+C/econst/-/kAXErrorParameterizedAttributeUnsupported
+C/tag/-/kAXErrorSuccess
+C/econst/-/kAXErrorSuccess
+C/macro/-/kAXExpandedAttribute
+C/macro/-/kAXFilenameAttribute
+C/macro/-/kAXFloatingWindowSubrole
+C/macro/-/kAXFocusedApplicationAttribute
+C/macro/-/kAXFocusedAttribute
+C/macro/-/kAXFocusedUIElemenAttribute
+C/macro/-/kAXFocusedUIElementChangedNotification
+C/macro/-/kAXFocusedWindowAttribute
+C/macro/-/kAXFocusedWindowChangedNotification
+C/macro/-/kAXFolderDockItemSubrole
+C/data/-/kAXFontFamilyKey
+C/data/-/kAXFontNameKey
+C/data/-/kAXFontSizeKey
+C/data/-/kAXFontTextAttribute
+C/data/-/kAXForegroundColorTextAttribute
+C/macro/-/kAXFrontmostAttribute
+C/macro/-/kAXGroupRole
+C/macro/-/kAXGrowAreaAttribute
+C/macro/-/kAXGrowAreaRole
+C/macro/-/kAXHeaderAttribute
+C/macro/-/kAXHelpAttribute
+C/macro/-/kAXHelpTagCreatedNotification
+C/macro/-/kAXHelpTagRole
+C/macro/-/kAXHiddenAttribute
+C/macro/-/kAXHorizontalOrientationValue
+C/macro/-/kAXHorizontalScrollBarAttribute
+C/macro/-/kAXHourFieldAttribute
+C/macro/-/kAXImageRole
+C/macro/-/kAXIncrementAction
+C/macro/-/kAXIncrementArrowSubrole
+C/macro/-/kAXIncrementButtonAttribute
+C/macro/-/kAXIncrementorAttribute
+C/macro/-/kAXIncrementorRole
+C/macro/-/kAXIncrementPageSubrole
+C/macro/-/kAXIndexAttribute
+C/macro/-/kAXInsertionPointLineNumberAttribute
+C/macro/-/kAXIsApplicationRunningAttribute
+C/macro/-/kAXLabelUIElementsAttribute
+C/macro/-/kAXLabelValueAttribute
+C/macro/-/kAXLineForIndexParameterizedAttribute
+C/macro/-/kAXLinkedUIElementsAttribute
+C/data/-/kAXLinkTextAttribute
+C/macro/-/kAXListRole
+C/macro/-/kAXMainAttribute
+C/macro/-/kAXMainWindowAttribute
+C/macro/-/kAXMainWindowChangedNotification
+C/macro/-/kAXMatteContentUIElementAttribute
+C/macro/-/kAXMatteHoleAttribute
+C/macro/-/kAXMatteRole
+C/macro/-/kAXMaxValueAttribute
+C/macro/-/kAXMenuBarAttribute
+C/macro/-/kAXMenuBarItemRole
+C/macro/-/kAXMenuBarRole
+C/macro/-/kAXMenuButtonRole
+C/macro/-/kAXMenuClosedNotification
+C/macro/-/kAXMenuItemCmdCharAttribute
+C/macro/-/kAXMenuItemCmdGlyphAttribute
+C/macro/-/kAXMenuItemCmdModifiersAttribute
+C/macro/-/kAXMenuItemCmdVirtualKeyAttribute
+C/macro/-/kAXMenuItemMarkCharAttribute
+C/macro/-/kAXMenuItemPrimaryUIElementAttribute
+C/macro/-/kAXMenuItemRole
+C/macro/-/kAXMenuItemSelectedNotification
+C/macro/-/kAXMenuOpenedNotification
+C/macro/-/kAXMenuRole
+C/macro/-/kAXMinimizeButtonAttribute
+C/macro/-/kAXMinimizeButtonSubrole
+C/macro/-/kAXMinimizedAttribute
+C/macro/-/kAXMinimizedWindowDockItemSubrole
+C/macro/-/kAXMinuteFieldAttribute
+C/macro/-/kAXMinValueAttribute
+C/data/-/kAXMisspelledTextAttribute
+C/macro/-/kAXModalAttribute
+C/macro/-/kAXMonthFieldAttribute
+C/macro/-/kAXMovedNotification
+C/data/-/kAXNaturalLanguageTextAttribute
+C/macro/-/kAXNextContentsAttribute
+C/macro/-/kAXNumberOfCharactersAttribute
+C/macro/-/kAXOrientationAttribute
+C/macro/-/kAXOutlineRole
+C/macro/-/kAXOutlineRowSubrole
+C/macro/-/kAXOverflowButtonAttribute
+C/macro/-/kAXParentAttribute
+C/macro/-/kAXPickAction
+C/macro/-/kAXPopUpButtonRole
+C/macro/-/kAXPositionAttribute
+C/macro/-/kAXPressAction
+C/macro/-/kAXPreviousContentsAttribute
+C/macro/-/kAXProcessSwitcherListSubrole
+C/macro/-/kAXProgressIndicatorRole
+C/macro/-/kAXProxyAttribute
+C/macro/-/kAXRadioButtonRole
+C/macro/-/kAXRadioGroupRole
+C/macro/-/kAXRaiseAction
+C/macro/-/kAXRangeForIndexParameterizedAttribute
+C/macro/-/kAXRangeForLineParameterizedAttribute
+C/macro/-/kAXRangeForPositionParameterizedAttribute
+C/macro/-/kAXRelevanceIndicatorRole
+C/data/-/kAXReplacementStringTextAttribute
+C/macro/-/kAXResizedNotification
+C/macro/-/kAXRoleAttribute
+C/macro/-/kAXRoleDescriptionAttribute
+C/macro/-/kAXRowCountChangedNotification
+C/macro/-/kAXRowRole
+C/macro/-/kAXRowsAttribute
+C/macro/-/kAXRTFForRangeParameterizedAttribute
+C/macro/-/kAXScrollAreaRole
+C/macro/-/kAXScrollBarRole
+C/macro/-/kAXSearchFieldSubrole
+C/macro/-/kAXSecondFieldAttribute
+C/macro/-/kAXSecureTextFieldSubrole
+C/macro/-/kAXSelectedAttribute
+C/macro/-/kAXSelectedChildrenAttribute
+C/macro/-/kAXSelectedChildrenChangedNotification
+C/macro/-/kAXSelectedColumnsAttribute
+C/macro/-/kAXSelectedColumnsChangedNotification
+C/macro/-/kAXSelectedRowsAttribute
+C/macro/-/kAXSelectedRowsChangedNotification
+C/macro/-/kAXSelectedTextAttribute
+C/macro/-/kAXSelectedTextChangedNotification
+C/macro/-/kAXSelectedTextRangeAttribute
+C/macro/-/kAXServesAsTitleForUIElementsAttribute
+C/data/-/kAXShadowTextAttribute
+C/macro/-/kAXSharedCharacterRangeAttribute
+C/macro/-/kAXSharedTextUIElementsAttribute
+C/macro/-/kAXSheetCreatedNotification
+C/macro/-/kAXSheetRole
+C/macro/-/kAXShowMenuAction
+C/macro/-/kAXShownMenuUIElementAttribute
+C/macro/-/kAXSizeAttribute
+C/macro/-/kAXSliderRole
+C/macro/-/kAXSortButtonSubrole
+C/macro/-/kAXSortDirectionAttribute
+C/macro/-/kAXSplitGroupRole
+C/macro/-/kAXSplitterRole
+C/macro/-/kAXSplittersAttribute
+C/macro/-/kAXStandardWindowSubrole
+C/macro/-/kAXStaticTextRole
+C/data/-/kAXStrikethroughColorTextAttribute
+C/data/-/kAXStrikethroughTextAttribute
+C/macro/-/kAXStringForRangeParameterizedAttribute
+C/macro/-/kAXStyleRangeForIndexParameterizedAttribute
+C/macro/-/kAXSubroleAttribute
+C/data/-/kAXSuperscriptTextAttribute
+C/macro/-/kAXSystemDialogSubrole
+C/macro/-/kAXSystemFloatingWindowSubrole
+C/macro/-/kAXSystemWideRole
+C/macro/-/kAXTabGroupRole
+C/macro/-/kAXTableRole
+C/macro/-/kAXTableRowSubrole
+C/macro/-/kAXTabsAttribute
+C/macro/-/kAXTextAreaRole
+C/macro/-/kAXTextFieldRole
+C/macro/-/kAXTimeFieldRole
+C/macro/-/kAXTitleAttribute
+C/macro/-/kAXTitleUIElementAttribute
+C/macro/-/kAXToolbarButtonAttribute
+C/macro/-/kAXToolbarButtonSubrole
+C/macro/-/kAXToolbarRole
+C/macro/-/kAXTopLevelUIElementAttribute
+C/macro/-/kAXTrashDockItemSubrole
+C/macro/-/kAXUIElementDestroyedNotification
+C/data/-/kAXUnderlineColorTextAttribute
+C/tag/-/kAXUnderlineStyleNone
+C/data/-/kAXUnderlineTextAttribute
+C/macro/-/kAXUnknownOrientationValue
+C/macro/-/kAXUnknownRole
+C/macro/-/kAXUnknownSortDirectionValue
+C/macro/-/kAXUnknownSubrole
+C/macro/-/kAXURLAttribute
+C/macro/-/kAXURLDockItemSubrole
+C/macro/-/kAXValueAttribute
+C/econst/-/kAXValueAXErrorType
+C/econst/-/kAXValueCFRangeType
+C/econst/-/kAXValueCGPointType
+C/econst/-/kAXValueCGRectType
+C/econst/-/kAXValueCGSizeType
+C/macro/-/kAXValueChangedNotification
+C/econst/-/kAXValueIllegalType
+C/macro/-/kAXValueIncrementAttribute
+C/macro/-/kAXValueIndicatorRole
+C/macro/-/kAXValueWrapsAttribute
+C/macro/-/kAXVerticalOrientationValue
+C/macro/-/kAXVerticalScrollBarAttribute
+C/macro/-/kAXVisibleCharacterRangeAttribute
+C/macro/-/kAXVisibleChildrenAttribute
+C/macro/-/kAXVisibleColumnsAttribute
+C/data/-/kAXVisibleNameKey
+C/macro/-/kAXVisibleRowsAttribute
+C/macro/-/kAXWindowAttribute
+C/macro/-/kAXWindowCreatedNotification
+C/macro/-/kAXWindowDeminiaturizedNotification
+C/macro/-/kAXWindowMiniaturizedNotification
+C/macro/-/kAXWindowMovedNotification
+C/macro/-/kAXWindowResizedNotification
+C/macro/-/kAXWindowRole
+C/macro/-/kAXWindowsAttribute
+C/macro/-/kAXYearFieldAttribute
+C/macro/-/kAXZoomButtonAttribute
+C/macro/-/kAXZoomButtonSubrole
+C/econst/-/kBig5_BasicVariant
+C/econst/-/kBig5_ETenVariant
+C/econst/-/kBig5_StandardVariant
+C/econst/-/kBlankAcess
+C/econst/BluetoothHCIUSBDeviceMatchingConstants/kBluetoothHCITransportUSBClassCode
+C/econst/BluetoothHCIUSBDeviceMatchingConstants/kBluetoothHCITransportUSBProtocolCode
+C/econst/BluetoothHCIUSBDeviceMatchingConstants/kBluetoothHCITransportUSBSubClassCode
+C/econst/-/kBytePacketTranslationFlag_IsEstimate
+C/data/-/kCAAlignmentCenter
+C/data/-/kCAAlignmentJustified
+C/data/-/kCAAlignmentLeft
+C/data/-/kCAAlignmentNatural
+C/data/-/kCAAlignmentRight
+C/data/-/kCAAnimationDiscrete
+C/data/-/kCAAnimationLinear
+C/data/-/kCAAnimationPaced
+C/data/-/kCAAnimationRotateAuto
+C/data/-/kCAAnimationRotateAutoReverse
+C/econst/-/kCAConstraintHeight
+C/econst/-/kCAConstraintMaxX
+C/econst/-/kCAConstraintMaxY
+C/econst/-/kCAConstraintMidX
+C/econst/-/kCAConstraintMidY
+C/econst/-/kCAConstraintMinX
+C/econst/-/kCAConstraintMinY
+C/econst/-/kCAConstraintWidth
+C/data/-/kCAEmitterLayerAdditive
+C/data/-/kCAEmitterLayerBackToFront
+C/data/-/kCAEmitterLayerCircle
+C/data/-/kCAEmitterLayerCuboid
+C/data/-/kCAEmitterLayerLine
+C/data/-/kCAEmitterLayerOldestFirst
+C/data/-/kCAEmitterLayerOldestLast
+C/data/-/kCAEmitterLayerOutline
+C/data/-/kCAEmitterLayerPoint
+C/data/-/kCAEmitterLayerPoints
+C/data/-/kCAEmitterLayerRectangle
+C/data/-/kCAEmitterLayerSphere
+C/data/-/kCAEmitterLayerSurface
+C/data/-/kCAEmitterLayerUnordered
+C/data/-/kCAEmitterLayerVolume
+C/data/-/kCAFillModeBackwards
+C/data/-/kCAFillModeBoth
+C/data/-/kCAFillModeForwards
+C/data/-/kCAFillModeFrozen
+C/data/-/kCAFillModeRemoved
+C/data/-/kCAFillRuleEvenOdd
+C/data/-/kCAFillRuleNonZero
+C/data/-/kCAFilterLinear
+C/data/-/kCAFilterNearest
+C/data/-/kCAFilterTrilinear
+C/data/-/kCAGradientLayerAxial
+C/data/-/kCAGravityBottom
+C/data/-/kCAGravityBottomLeft
+C/data/-/kCAGravityBottomRight
+C/data/-/kCAGravityCenter
+C/data/-/kCAGravityLeft
+C/data/-/kCAGravityResize
+C/data/-/kCAGravityResizeAspect
+C/data/-/kCAGravityResizeAspectFill
+C/data/-/kCAGravityRight
+C/data/-/kCAGravityTop
+C/data/-/kCAGravityTopLeft
+C/data/-/kCAGravityTopRight
+C/econst/-/kCALayerBottomEdge
+C/econst/-/kCALayerHeightSizable
+C/econst/-/kCALayerLeftEdge
+C/econst/-/kCALayerMaxXMargin
+C/econst/-/kCALayerMaxYMargin
+C/econst/-/kCALayerMinXMargin
+C/econst/-/kCALayerMinYMargin
+C/econst/-/kCALayerNotSizable
+C/econst/-/kCALayerRightEdge
+C/econst/-/kCALayerTopEdge
+C/econst/-/kCALayerWidthSizable
+C/econst/-/kCalibratorNamePrefix
+C/data/-/kCALineCapButt
+C/data/-/kCALineCapRound
+C/data/-/kCALineCapSquare
+C/data/-/kCALineJoinBevel
+C/data/-/kCALineJoinMiter
+C/data/-/kCALineJoinRound
+C/macro/-/kCallInterfaceOpenWithGate
+C/data/-/kCAMediaTimingFunctionDefault
+C/data/-/kCAMediaTimingFunctionEaseIn
+C/data/-/kCAMediaTimingFunctionEaseInEaseOut
+C/data/-/kCAMediaTimingFunctionEaseOut
+C/data/-/kCAMediaTimingFunctionLinear
+C/data/-/kCAOnOrderIn
+C/data/-/kCAOnOrderOut
+C/data/-/kCAScrollBoth
+C/data/-/kCAScrollHorizontally
+C/data/-/kCAScrollNone
+C/data/-/kCAScrollVertically
+C/econst/-/kCaseSensitive
+C/data/-/kCATransactionAnimationDuration
+C/data/-/kCATransactionAnimationTimingFunction
+C/data/-/kCATransactionCompletionBlock
+C/data/-/kCATransactionDisableActions
+C/data/-/kCATransition
+C/data/-/kCATransitionFade
+C/data/-/kCATransitionFromBottom
+C/data/-/kCATransitionFromLeft
+C/data/-/kCATransitionFromRight
+C/data/-/kCATransitionFromTop
+C/data/-/kCATransitionMoveIn
+C/data/-/kCATransitionPush
+C/data/-/kCATransitionReveal
+C/data/-/kCATruncationEnd
+C/data/-/kCATruncationMiddle
+C/data/-/kCATruncationNone
+C/data/-/kCATruncationStart
+C/data/-/kCAValueFunctionRotateX
+C/data/-/kCAValueFunctionRotateY
+C/data/-/kCAValueFunctionRotateZ
+C/data/-/kCAValueFunctionScale
+C/data/-/kCAValueFunctionScaleX
+C/data/-/kCAValueFunctionScaleY
+C/data/-/kCAValueFunctionScaleZ
+C/data/-/kCAValueFunctionTranslate
+C/data/-/kCAValueFunctionTranslateX
+C/data/-/kCAValueFunctionTranslateY
+C/data/-/kCAValueFunctionTranslateZ
+C/data/-/kCFAbsoluteTimeIntervalSince1904
+C/data/-/kCFAbsoluteTimeIntervalSince1970
+C/data/-/kCFAllocatorDefault
+C/data/-/kCFAllocatorMalloc
+C/data/-/kCFAllocatorMallocZone
+C/data/-/kCFAllocatorNull
+C/data/-/kCFAllocatorSystemDefault
+C/data/-/kCFAllocatorUseContext
+C/data/-/kCFBookmarkResolutionWithoutMountingMask
+C/data/-/kCFBookmarkResolutionWithoutUIMask
+C/data/-/kCFBooleanFalse
+C/data/-/kCFBooleanTrue
+C/data/-/kCFBuddhistCalendar
+C/data/-/kCFBundleDevelopmentRegionKey
+C/econst/-/kCFBundleExecutableArchitectureI386
+C/econst/-/kCFBundleExecutableArchitecturePPC
+C/econst/-/kCFBundleExecutableArchitecturePPC64
+C/econst/-/kCFBundleExecutableArchitectureX86_64
+C/data/-/kCFBundleExecutableKey
+C/data/-/kCFBundleIdentifierKey
+C/macro/-/kCFBundleIdentifierKey
+C/data/-/kCFBundleInfoDictionaryVersionKey
+C/data/-/kCFBundleLocalizationsKey
+C/data/-/kCFBundleNameKey
+C/data/-/kCFBundleVersionKey
+C/econst/-/kCFCalendarComponentsWrap
+C/econst/-/kCFCalendarUnitDay
+C/econst/-/kCFCalendarUnitEra
+C/econst/-/kCFCalendarUnitHour
+C/econst/-/kCFCalendarUnitMinute
+C/econst/-/kCFCalendarUnitMonth
+C/econst/-/kCFCalendarUnitSecond
+C/econst/-/kCFCalendarUnitWeek
+C/econst/-/kCFCalendarUnitWeekday
+C/econst/-/kCFCalendarUnitWeekdayOrdinal
+C/econst/-/kCFCalendarUnitYear
+C/econst/-/kCFCharacterSetAlphaNumeric
+C/econst/-/kCFCharacterSetCapitalizedLetter
+C/econst/-/kCFCharacterSetControl
+C/econst/-/kCFCharacterSetDecimalDigit
+C/econst/-/kCFCharacterSetDecomposable
+C/econst/-/kCFCharacterSetIllegal
+C/econst/-/kCFCharacterSetLetter
+C/econst/-/kCFCharacterSetLowercaseLetter
+C/econst/-/kCFCharacterSetNewline
+C/econst/-/kCFCharacterSetNonBase
+C/econst/-/kCFCharacterSetPunctuation
+C/econst/-/kCFCharacterSetSymbol
+C/econst/-/kCFCharacterSetUppercaseLetter
+C/econst/-/kCFCharacterSetWhitespace
+C/econst/-/kCFCharacterSetWhitespaceAndNewline
+C/data/-/kCFChineseCalendar
+C/econst/-/kCFCompareAnchored
+C/econst/-/kCFCompareBackwards
+C/econst/-/kCFCompareCaseInsensitive
+C/econst/-/kCFCompareDiacriticInsensitive
+C/econst/-/kCFCompareEqualTo
+C/econst/-/kCFCompareForcedOrdering
+C/econst/-/kCFCompareGreaterThan
+C/econst/-/kCFCompareLessThan
+C/econst/-/kCFCompareLocalized
+C/econst/-/kCFCompareNonliteral
+C/econst/-/kCFCompareNumerically
+C/econst/-/kCFCompareWidthInsensitive
+C/data/-/kCFCopyStringBagCallBacks
+C/data/-/kCFCopyStringDictionaryKeyCallBacks
+C/data/-/kCFCopyStringSetCallBacks
+C/data/-/kCFCoreFoundationVersionNumber
+C/macro/-/kCFCoreFoundationVersionNumber10_0
+C/macro/-/kCFCoreFoundationVersionNumber10_0_3
+C/macro/-/kCFCoreFoundationVersionNumber10_1
+C/macro/-/kCFCoreFoundationVersionNumber10_1_1
+C/macro/-/kCFCoreFoundationVersionNumber10_1_2
+C/macro/-/kCFCoreFoundationVersionNumber10_1_3
+C/macro/-/kCFCoreFoundationVersionNumber10_1_4
+C/macro/-/kCFCoreFoundationVersionNumber10_2
+C/macro/-/kCFCoreFoundationVersionNumber10_2_1
+C/macro/-/kCFCoreFoundationVersionNumber10_2_2
+C/macro/-/kCFCoreFoundationVersionNumber10_2_3
+C/macro/-/kCFCoreFoundationVersionNumber10_2_4
+C/macro/-/kCFCoreFoundationVersionNumber10_2_5
+C/macro/-/kCFCoreFoundationVersionNumber10_2_6
+C/macro/-/kCFCoreFoundationVersionNumber10_2_7
+C/macro/-/kCFCoreFoundationVersionNumber10_2_8
+C/macro/-/kCFCoreFoundationVersionNumber10_3
+C/macro/-/kCFCoreFoundationVersionNumber10_3_1
+C/macro/-/kCFCoreFoundationVersionNumber10_3_2
+C/macro/-/kCFCoreFoundationVersionNumber10_3_3
+C/macro/-/kCFCoreFoundationVersionNumber10_3_4
+C/macro/-/kCFCoreFoundationVersionNumber10_3_5
+C/macro/-/kCFCoreFoundationVersionNumber10_3_6
+C/macro/-/kCFCoreFoundationVersionNumber10_3_7
+C/macro/-/kCFCoreFoundationVersionNumber10_3_8
+C/macro/-/kCFCoreFoundationVersionNumber10_3_9
+C/macro/-/kCFCoreFoundationVersionNumber10_4
+C/macro/-/kCFCoreFoundationVersionNumber10_4_1
+C/macro/-/kCFCoreFoundationVersionNumber10_4_10
+C/macro/-/kCFCoreFoundationVersionNumber10_4_11
+C/macro/-/kCFCoreFoundationVersionNumber10_4_2
+C/macro/-/kCFCoreFoundationVersionNumber10_4_3
+C/macro/-/kCFCoreFoundationVersionNumber10_4_4_Intel
+C/macro/-/kCFCoreFoundationVersionNumber10_4_4_PowerPC
+C/macro/-/kCFCoreFoundationVersionNumber10_4_5_Intel
+C/macro/-/kCFCoreFoundationVersionNumber10_4_5_PowerPC
+C/macro/-/kCFCoreFoundationVersionNumber10_4_6_Intel
+C/macro/-/kCFCoreFoundationVersionNumber10_4_6_PowerPC
+C/macro/-/kCFCoreFoundationVersionNumber10_4_7
+C/macro/-/kCFCoreFoundationVersionNumber10_4_8
+C/macro/-/kCFCoreFoundationVersionNumber10_4_9
+C/macro/-/kCFCoreFoundationVersionNumber10_5
+C/macro/-/kCFCoreFoundationVersionNumber10_5_1
+C/macro/-/kCFCoreFoundationVersionNumber10_5_2
+C/macro/-/kCFCoreFoundationVersionNumber10_5_3
+C/macro/-/kCFCoreFoundationVersionNumber10_5_4
+C/macro/-/kCFCoreFoundationVersionNumber10_5_5
+C/macro/-/kCFCoreFoundationVersionNumber10_5_6
+C/data/-/kCFDateFormatterAMSymbol
+C/data/-/kCFDateFormatterCalendar
+C/data/-/kCFDateFormatterCalendarName
+C/data/-/kCFDateFormatterDefaultDate
+C/data/-/kCFDateFormatterDefaultFormat
+C/data/-/kCFDateFormatterEraSymbols
+C/econst/-/kCFDateFormatterFullStyle
+C/data/-/kCFDateFormatterGregorianStartDate
+C/data/-/kCFDateFormatterIsLenient
+C/data/-/kCFDateFormatterLongEraSymbols
+C/econst/-/kCFDateFormatterLongStyle
+C/econst/-/kCFDateFormatterMediumStyle
+C/data/-/kCFDateFormatterMonthSymbols
+C/econst/-/kCFDateFormatterNoStyle
+C/data/-/kCFDateFormatterPMSymbol
+C/data/-/kCFDateFormatterQuarterSymbols
+C/data/-/kCFDateFormatterShortMonthSymbols
+C/data/-/kCFDateFormatterShortQuarterSymbols
+C/data/-/kCFDateFormatterShortStandaloneMonthSymbols
+C/data/-/kCFDateFormatterShortStandaloneQuarterSymbols
+C/data/-/kCFDateFormatterShortStandaloneWeekdaySymbols
+C/econst/-/kCFDateFormatterShortStyle
+C/data/-/kCFDateFormatterShortWeekdaySymbols
+C/data/-/kCFDateFormatterStandaloneMonthSymbols
+C/data/-/kCFDateFormatterStandaloneQuarterSymbols
+C/data/-/kCFDateFormatterStandaloneWeekdaySymbols
+C/data/-/kCFDateFormatterTimeZone
+C/data/-/kCFDateFormatterTwoDigitStartDate
+C/data/-/kCFDateFormatterVeryShortMonthSymbols
+C/data/-/kCFDateFormatterVeryShortStandaloneMonthSymbols
+C/data/-/kCFDateFormatterVeryShortStandaloneWeekdaySymbols
+C/data/-/kCFDateFormatterVeryShortWeekdaySymbols
+C/data/-/kCFDateFormatterWeekdaySymbols
+C/data/-/kCFDNSServiceFailureKey
+C/data/-/kCFErrorDescriptionKey
+C/data/-/kCFErrorDomainCFNetwork
+C/data/-/kCFErrorDomainCocoa
+C/data/-/kCFErrorDomainMach
+C/data/-/kCFErrorDomainOSStatus
+C/data/-/kCFErrorDomainPOSIX
+C/data/-/kCFErrorDomainSystemConfiguration
+C/data/-/kCFErrorDomainWinSock
+C/econst/-/kCFErrorHTTPAuthenticationTypeUnsupported
+C/econst/-/kCFErrorHTTPBadCredentials
+C/econst/-/kCFErrorHTTPBadProxyCredentials
+C/econst/-/kCFErrorHTTPBadURL
+C/econst/-/kCFErrorHTTPConnectionLost
+C/econst/-/kCFErrorHTTPParseFailure
+C/econst/-/kCFErrorHTTPProxyConnectionFailure
+C/econst/-/kCFErrorHTTPRedirectionLoopDetected
+C/data/-/kCFErrorLocalizedDescriptionKey
+C/data/-/kCFErrorLocalizedFailureReasonKey
+C/data/-/kCFErrorLocalizedRecoverySuggestionKey
+C/data/-/kCFErrorUnderlyingErrorKey
+C/econst/-/kCFFileDescriptorReadCallBack
+C/econst/-/kCFFileDescriptorWriteCallBack
+C/econst/-/kCFFTPErrorUnexpectedStatusCode
+C/data/-/kCFFTPResourceGroup
+C/data/-/kCFFTPResourceLink
+C/data/-/kCFFTPResourceModDate
+C/data/-/kCFFTPResourceMode
+C/data/-/kCFFTPResourceName
+C/data/-/kCFFTPResourceOwner
+C/data/-/kCFFTPResourceSize
+C/data/-/kCFFTPResourceType
+C/data/-/kCFFTPStatusCodeKey
+C/data/-/kCFGetAddrInfoFailureKey
+C/econst/-/kCFGregorianAllUnits
+C/data/-/kCFGregorianCalendar
+C/econst/-/kCFGregorianUnitsDays
+C/econst/-/kCFGregorianUnitsHours
+C/econst/-/kCFGregorianUnitsMinutes
+C/econst/-/kCFGregorianUnitsMonths
+C/econst/-/kCFGregorianUnitsSeconds
+C/econst/-/kCFGregorianUnitsYears
+C/data/-/kCFHebrewCalendar
+C/econst/-/kCFHostAddresses
+C/econst/-/kCFHostErrorHostNotFound
+C/econst/-/kCFHostErrorUnknown
+C/econst/-/kCFHostNames
+C/econst/-/kCFHostReachability
+C/data/-/kCFHTTPAuthenticationAccountDomain
+C/data/-/kCFHTTPAuthenticationPassword
+C/data/-/kCFHTTPAuthenticationSchemeBasic
+C/data/-/kCFHTTPAuthenticationSchemeDigest
+C/data/-/kCFHTTPAuthenticationSchemeNegotiate
+C/data/-/kCFHTTPAuthenticationSchemeNTLM
+C/data/-/kCFHTTPAuthenticationUsername
+C/econst/-/kCFHTTPVersion1_0
+C/econst/-/kCFHTTPVersion1_1
+C/data/-/kCFIndianCalendar
+C/data/-/kCFIslamicCalendar
+C/data/-/kCFIslamicCivilCalendar
+C/data/-/kCFISO8601Calendar
+C/data/-/kCFJapaneseCalendar
+C/data/-/kCFLocaleCalendar
+C/data/-/kCFLocaleCalendarIdentifier
+C/data/-/kCFLocaleCollationIdentifier
+C/data/-/kCFLocaleCountryCode
+C/data/-/kCFLocaleCurrencyCode
+C/data/-/kCFLocaleCurrencySymbol
+C/data/-/kCFLocaleCurrentLocaleDidChangeNotification
+C/data/-/kCFLocaleDecimalSeparator
+C/data/-/kCFLocaleExemplarCharacterSet
+C/data/-/kCFLocaleGroupingSeparator
+C/data/-/kCFLocaleIdentifier
+C/data/-/kCFLocaleLanguageCode
+C/data/-/kCFLocaleMeasurementSystem
+C/data/-/kCFLocaleScriptCode
+C/data/-/kCFLocaleUsesMetricSystem
+C/data/-/kCFLocaleVariantCode
+C/econst/-/kCFMessagePortIsInvalid
+C/econst/-/kCFMessagePortReceiveTimeout
+C/econst/-/kCFMessagePortSendTimeout
+C/econst/-/kCFMessagePortSuccess
+C/econst/-/kCFMessagePortTransportError
+C/econst/-/kCFNetDiagnosticConnectionDown
+C/econst/-/kCFNetDiagnosticConnectionIndeterminate
+C/econst/-/kCFNetDiagnosticConnectionUp
+C/econst/-/kCFNetDiagnosticErr
+C/econst/-/kCFNetDiagnosticNoErr
+C/econst/-/kCFNetServiceErrorBadArgument
+C/econst/-/kCFNetServiceErrorCancel
+C/econst/-/kCFNetServiceErrorCollision
+C/econst/-/kCFNetServiceErrorDNSServiceFailure
+C/econst/-/kCFNetServiceErrorInProgress
+C/econst/-/kCFNetServiceErrorInvalid
+C/econst/-/kCFNetServiceErrorNotFound
+C/econst/-/kCFNetServiceErrorTimeout
+C/econst/-/kCFNetServiceErrorUnknown
+C/econst/-/kCFNetServiceFlagIsDefault
+C/econst/-/kCFNetServiceFlagIsDomain
+C/econst/-/kCFNetServiceFlagMoreComing
+C/econst/-/kCFNetServiceFlagNoAutoRename
+C/econst/-/kCFNetServiceFlagRemove
+C/econst/-/kCFNetServiceMonitorTXT
+C/econst/-/kCFNetServicesErrorBadArgument
+C/econst/-/kCFNetServicesErrorCancel
+C/econst/-/kCFNetServicesErrorCollision
+C/econst/-/kCFNetServicesErrorInProgress
+C/econst/-/kCFNetServicesErrorInvalid
+C/econst/-/kCFNetServicesErrorNotFound
+C/econst/-/kCFNetServicesErrorTimeout
+C/econst/-/kCFNetServicesErrorUnknown
+C/data/-/kCFNetworkProxiesExceptionsList
+C/data/-/kCFNetworkProxiesExcludeSimpleHostnames
+C/data/-/kCFNetworkProxiesFTPEnable
+C/data/-/kCFNetworkProxiesFTPPassive
+C/data/-/kCFNetworkProxiesFTPPort
+C/data/-/kCFNetworkProxiesFTPProxy
+C/data/-/kCFNetworkProxiesGopherEnable
+C/data/-/kCFNetworkProxiesGopherPort
+C/data/-/kCFNetworkProxiesGopherProxy
+C/data/-/kCFNetworkProxiesHTTPEnable
+C/data/-/kCFNetworkProxiesHTTPPort
+C/data/-/kCFNetworkProxiesHTTPProxy
+C/data/-/kCFNetworkProxiesHTTPSEnable
+C/data/-/kCFNetworkProxiesHTTPSPort
+C/data/-/kCFNetworkProxiesHTTPSProxy
+C/data/-/kCFNetworkProxiesProxyAutoConfigEnable
+C/data/-/kCFNetworkProxiesProxyAutoConfigURLString
+C/data/-/kCFNetworkProxiesProxyAutoDiscoveryEnable
+C/data/-/kCFNetworkProxiesRTSPEnable
+C/data/-/kCFNetworkProxiesRTSPPort
+C/data/-/kCFNetworkProxiesRTSPProxy
+C/data/-/kCFNetworkProxiesSOCKSEnable
+C/data/-/kCFNetworkProxiesSOCKSPort
+C/data/-/kCFNetworkProxiesSOCKSProxy
+C/econst/-/kCFNotFound
+C/econst/-/kCFNotificationDeliverImmediately
+C/econst/-/kCFNotificationPostToAllSessions
+C/data/-/kCFNull
+C/econst/-/kCFNumberCFIndexType
+C/econst/-/kCFNumberCGFloatType
+C/econst/-/kCFNumberCharType
+C/econst/-/kCFNumberDoubleType
+C/econst/-/kCFNumberFloat32Type
+C/econst/-/kCFNumberFloat64Type
+C/econst/-/kCFNumberFloatType
+C/data/-/kCFNumberFormatterAlwaysShowDecimalSeparator
+C/data/-/kCFNumberFormatterCurrencyCode
+C/data/-/kCFNumberFormatterCurrencyDecimalSeparator
+C/data/-/kCFNumberFormatterCurrencyGroupingSeparator
+C/econst/-/kCFNumberFormatterCurrencyStyle
+C/data/-/kCFNumberFormatterCurrencySymbol
+C/data/-/kCFNumberFormatterDecimalSeparator
+C/econst/-/kCFNumberFormatterDecimalStyle
+C/data/-/kCFNumberFormatterDefaultFormat
+C/data/-/kCFNumberFormatterExponentSymbol
+C/data/-/kCFNumberFormatterFormatWidth
+C/data/-/kCFNumberFormatterGroupingSeparator
+C/data/-/kCFNumberFormatterGroupingSize
+C/data/-/kCFNumberFormatterInfinitySymbol
+C/data/-/kCFNumberFormatterInternationalCurrencySymbol
+C/data/-/kCFNumberFormatterIsLenient
+C/data/-/kCFNumberFormatterMaxFractionDigits
+C/data/-/kCFNumberFormatterMaxIntegerDigits
+C/data/-/kCFNumberFormatterMaxSignificantDigits
+C/data/-/kCFNumberFormatterMinFractionDigits
+C/data/-/kCFNumberFormatterMinIntegerDigits
+C/data/-/kCFNumberFormatterMinSignificantDigits
+C/data/-/kCFNumberFormatterMinusSign
+C/data/-/kCFNumberFormatterMultiplier
+C/data/-/kCFNumberFormatterNaNSymbol
+C/data/-/kCFNumberFormatterNegativePrefix
+C/data/-/kCFNumberFormatterNegativeSuffix
+C/econst/-/kCFNumberFormatterNoStyle
+C/econst/-/kCFNumberFormatterPadAfterPrefix
+C/econst/-/kCFNumberFormatterPadAfterSuffix
+C/econst/-/kCFNumberFormatterPadBeforePrefix
+C/econst/-/kCFNumberFormatterPadBeforeSuffix
+C/data/-/kCFNumberFormatterPaddingCharacter
+C/data/-/kCFNumberFormatterPaddingPosition
+C/econst/-/kCFNumberFormatterParseIntegersOnly
+C/econst/-/kCFNumberFormatterPercentStyle
+C/data/-/kCFNumberFormatterPercentSymbol
+C/data/-/kCFNumberFormatterPerMillSymbol
+C/data/-/kCFNumberFormatterPlusSign
+C/data/-/kCFNumberFormatterPositivePrefix
+C/data/-/kCFNumberFormatterPositiveSuffix
+C/econst/-/kCFNumberFormatterRoundCeiling
+C/econst/-/kCFNumberFormatterRoundDown
+C/econst/-/kCFNumberFormatterRoundFloor
+C/econst/-/kCFNumberFormatterRoundHalfDown
+C/econst/-/kCFNumberFormatterRoundHalfEven
+C/econst/-/kCFNumberFormatterRoundHalfUp
+C/data/-/kCFNumberFormatterRoundingIncrement
+C/data/-/kCFNumberFormatterRoundingMode
+C/econst/-/kCFNumberFormatterRoundUp
+C/econst/-/kCFNumberFormatterScientificStyle
+C/data/-/kCFNumberFormatterSecondaryGroupingSize
+C/econst/-/kCFNumberFormatterSpellOutStyle
+C/data/-/kCFNumberFormatterUseGroupingSeparator
+C/data/-/kCFNumberFormatterUseSignificantDigits
+C/data/-/kCFNumberFormatterZeroSymbol
+C/econst/-/kCFNumberIntType
+C/econst/-/kCFNumberLongLongType
+C/econst/-/kCFNumberLongType
+C/econst/-/kCFNumberMaxType
+C/data/-/kCFNumberNaN
+C/data/-/kCFNumberNegativeInfinity
+C/econst/-/kCFNumberNSIntegerType
+C/data/-/kCFNumberPositiveInfinity
+C/econst/-/kCFNumberShortType
+C/econst/-/kCFNumberSInt16Type
+C/econst/-/kCFNumberSInt32Type
+C/econst/-/kCFNumberSInt64Type
+C/econst/-/kCFNumberSInt8Type
+C/data/-/kCFPersianCalendar
+C/data/-/kCFPlugInDynamicRegisterFunctionKey
+C/data/-/kCFPlugInDynamicRegistrationKey
+C/data/-/kCFPlugInFactoriesKey
+C/data/-/kCFPlugInTypesKey
+C/data/-/kCFPlugInUnloadFunctionKey
+C/data/-/kCFPreferencesAnyApplication
+C/data/-/kCFPreferencesAnyHost
+C/data/-/kCFPreferencesAnyUser
+C/data/-/kCFPreferencesCurrentApplication
+C/data/-/kCFPreferencesCurrentHost
+C/data/-/kCFPreferencesCurrentUser
+C/econst/-/kCFPropertyListBinaryFormat_v1_0
+C/econst/-/kCFPropertyListImmutable
+C/econst/-/kCFPropertyListMutableContainers
+C/econst/-/kCFPropertyListMutableContainersAndLeaves
+C/econst/-/kCFPropertyListOpenStepFormat
+C/econst/-/kCFPropertyListReadCorruptError
+C/econst/-/kCFPropertyListReadStreamError
+C/econst/-/kCFPropertyListReadUnknownVersionError
+C/econst/-/kCFPropertyListWriteStreamError
+C/econst/-/kCFPropertyListXMLFormat_v1_0
+C/data/-/kCFProxyAutoConfigurationURLKey
+C/data/-/kCFProxyHostNameKey
+C/data/-/kCFProxyPasswordKey
+C/data/-/kCFProxyPortNumberKey
+C/data/-/kCFProxyTypeAutoConfigurationURL
+C/data/-/kCFProxyTypeFTP
+C/data/-/kCFProxyTypeHTTP
+C/data/-/kCFProxyTypeHTTPS
+C/data/-/kCFProxyTypeKey
+C/data/-/kCFProxyTypeNone
+C/data/-/kCFProxyTypeSOCKS
+C/data/-/kCFProxyUsernameKey
+C/data/-/kCFRepublicOfChinaCalendar
+C/econst/-/kCFRunLoopAfterWaiting
+C/econst/-/kCFRunLoopAllActivities
+C/econst/-/kCFRunLoopBeforeSources
+C/econst/-/kCFRunLoopBeforeTimers
+C/econst/-/kCFRunLoopBeforeWaiting
+C/data/-/kCFRunLoopCommonModes
+C/data/-/kCFRunLoopDefaultMode
+C/econst/-/kCFRunLoopEntry
+C/econst/-/kCFRunLoopExit
+C/econst/-/kCFRunLoopRunFinished
+C/econst/-/kCFRunLoopRunHandledSource
+C/econst/-/kCFRunLoopRunStopped
+C/econst/-/kCFRunLoopRunTimedOut
+C/econst/-/kCFSocketAcceptCallBack
+C/econst/-/kCFSocketAutomaticallyReenableAcceptCallBack
+C/econst/-/kCFSocketAutomaticallyReenableDataCallBack
+C/econst/-/kCFSocketAutomaticallyReenableReadCallBack
+C/econst/-/kCFSocketAutomaticallyReenableWriteCallBack
+C/econst/-/kCFSocketCloseOnInvalidate
+C/data/-/kCFSocketCommandKey
+C/econst/-/kCFSocketConnectCallBack
+C/econst/-/kCFSocketDataCallBack
+C/econst/-/kCFSocketError
+C/data/-/kCFSocketErrorKey
+C/data/-/kCFSocketNameKey
+C/econst/-/kCFSocketNoCallBack
+C/econst/-/kCFSocketReadCallBack
+C/data/-/kCFSocketRegisterCommand
+C/data/-/kCFSocketResultKey
+C/data/-/kCFSocketRetrieveCommand
+C/econst/-/kCFSocketSuccess
+C/econst/-/kCFSocketTimeout
+C/data/-/kCFSocketValueKey
+C/econst/-/kCFSocketWriteCallBack
+C/econst/-/kCFSOCKS4ErrorIdConflict
+C/econst/-/kCFSOCKS4ErrorIdentdFailed
+C/econst/-/kCFSOCKS4ErrorRequestFailed
+C/econst/-/kCFSOCKS4ErrorUnknownStatusCode
+C/econst/-/kCFSOCKS5ErrorBadCredentials
+C/econst/-/kCFSOCKS5ErrorBadResponseAddr
+C/econst/-/kCFSOCKS5ErrorBadState
+C/econst/-/kCFSOCKS5ErrorNoAcceptableMethod
+C/econst/-/kCFSOCKS5ErrorUnsupportedNegotiationMethod
+C/econst/-/kCFSOCKSErrorUnknownClientVersion
+C/econst/-/kCFSOCKSErrorUnsupportedServerVersion
+C/data/-/kCFSOCKSNegotiationMethodKey
+C/data/-/kCFSOCKSStatusCodeKey
+C/data/-/kCFSOCKSVersionKey
+C/econst/-/kCFStreamErrorDomainCustom
+C/data/-/kCFStreamErrorDomainFTP
+C/data/-/kCFStreamErrorDomainHTTP
+C/data/-/kCFStreamErrorDomainMach
+C/econst/-/kCFStreamErrorDomainMacOSStatus
+C/data/-/kCFStreamErrorDomainNetDB
+C/data/-/kCFStreamErrorDomainNetServices
+C/econst/-/kCFStreamErrorDomainPOSIX
+C/data/-/kCFStreamErrorDomainSOCKS
+C/data/-/kCFStreamErrorDomainSSL
+C/data/-/kCFStreamErrorDomainSystemConfiguration
+C/data/-/kCFStreamErrorDomainWinSock
+C/econst/-/kCFStreamErrorHTTPAuthenticationBadPassword
+C/econst/-/kCFStreamErrorHTTPAuthenticationBadUserName
+C/econst/-/kCFStreamErrorHTTPAuthenticationTypeUnsupported
+C/econst/-/kCFStreamErrorHTTPBadURL
+C/econst/-/kCFStreamErrorHTTPParseFailure
+C/econst/-/kCFStreamErrorHTTPRedirectionLoop
+C/econst/-/kCFStreamErrorSOCKS4IdConflict
+C/econst/-/kCFStreamErrorSOCKS4IdentdFailed
+C/econst/-/kCFStreamErrorSOCKS4RequestFailed
+C/data/-/kCFStreamErrorSOCKS4SubDomainResponse
+C/econst/-/kCFStreamErrorSOCKS5BadResponseAddr
+C/econst/-/kCFStreamErrorSOCKS5BadState
+C/data/-/kCFStreamErrorSOCKS5SubDomainMethod
+C/data/-/kCFStreamErrorSOCKS5SubDomainResponse
+C/data/-/kCFStreamErrorSOCKS5SubDomainUserPass
+C/data/-/kCFStreamErrorSOCKSSubDomainNone
+C/data/-/kCFStreamErrorSOCKSSubDomainVersionCode
+C/econst/-/kCFStreamErrorSOCKSUnknownClientVersion
+C/econst/-/kCFStreamEventCanAcceptBytes
+C/econst/-/kCFStreamEventEndEncountered
+C/econst/-/kCFStreamEventErrorOccurred
+C/econst/-/kCFStreamEventHasBytesAvailable
+C/econst/-/kCFStreamEventNone
+C/econst/-/kCFStreamEventOpenCompleted
+C/data/-/kCFStreamPropertyAppendToFile
+C/data/-/kCFStreamPropertyDataWritten
+C/data/-/kCFStreamPropertyFileCurrentOffset
+C/data/-/kCFStreamPropertyFTPAttemptPersistentConnection
+C/data/-/kCFStreamPropertyFTPFetchResourceInfo
+C/data/-/kCFStreamPropertyFTPFileTransferOffset
+C/data/-/kCFStreamPropertyFTPPassword
+C/data/-/kCFStreamPropertyFTPProxy
+C/data/-/kCFStreamPropertyFTPProxyHost
+C/data/-/kCFStreamPropertyFTPProxyPassword
+C/data/-/kCFStreamPropertyFTPProxyPort
+C/data/-/kCFStreamPropertyFTPProxyUser
+C/data/-/kCFStreamPropertyFTPResourceSize
+C/data/-/kCFStreamPropertyFTPUsePassiveMode
+C/data/-/kCFStreamPropertyFTPUserName
+C/data/-/kCFStreamPropertyHTTPAttemptPersistentConnection
+C/data/-/kCFStreamPropertyHTTPFinalRequest
+C/data/-/kCFStreamPropertyHTTPFinalURL
+C/data/-/kCFStreamPropertyHTTPProxy
+C/data/-/kCFStreamPropertyHTTPProxyHost
+C/data/-/kCFStreamPropertyHTTPProxyPort
+C/data/-/kCFStreamPropertyHTTPRequestBytesWrittenCount
+C/data/-/kCFStreamPropertyHTTPResponseHeader
+C/data/-/kCFStreamPropertyHTTPShouldAutoredirect
+C/data/-/kCFStreamPropertyHTTPSProxyHost
+C/data/-/kCFStreamPropertyHTTPSProxyPort
+C/data/-/kCFStreamPropertyProxyLocalBypass
+C/data/-/kCFStreamPropertyShouldCloseNativeSocket
+C/data/-/kCFStreamPropertySocketNativeHandle
+C/data/-/kCFStreamPropertySocketRemoteHost
+C/data/-/kCFStreamPropertySocketRemoteHostName
+C/data/-/kCFStreamPropertySocketRemoteNetService
+C/data/-/kCFStreamPropertySocketRemotePortNumber
+C/data/-/kCFStreamPropertySocketSecurityLevel
+C/data/-/kCFStreamPropertySOCKSPassword
+C/data/-/kCFStreamPropertySOCKSProxy
+C/data/-/kCFStreamPropertySOCKSProxyHost
+C/data/-/kCFStreamPropertySOCKSProxyPort
+C/data/-/kCFStreamPropertySOCKSUser
+C/data/-/kCFStreamPropertySOCKSVersion
+C/data/-/kCFStreamPropertySSLPeerCertificates
+C/data/-/kCFStreamPropertySSLPeerTrust
+C/data/-/kCFStreamPropertySSLSettings
+C/data/-/kCFStreamSocketSecurityLevelNegotiatedSSL
+C/data/-/kCFStreamSocketSecurityLevelNone
+C/data/-/kCFStreamSocketSecurityLevelSSLv2
+C/data/-/kCFStreamSocketSecurityLevelSSLv3
+C/data/-/kCFStreamSocketSecurityLevelTLSv1
+C/econst/-/kCFStreamSocketSecurityNone
+C/econst/-/kCFStreamSocketSecuritySSLv2
+C/econst/-/kCFStreamSocketSecuritySSLv23
+C/econst/-/kCFStreamSocketSecuritySSLv3
+C/econst/-/kCFStreamSocketSecurityTLSv1
+C/data/-/kCFStreamSocketSOCKSVersion4
+C/data/-/kCFStreamSocketSOCKSVersion5
+C/data/-/kCFStreamSSLAllowsAnyRoot
+C/data/-/kCFStreamSSLAllowsExpiredCertificates
+C/data/-/kCFStreamSSLAllowsExpiredRoots
+C/data/-/kCFStreamSSLCertificates
+C/data/-/kCFStreamSSLIsServer
+C/data/-/kCFStreamSSLLevel
+C/data/-/kCFStreamSSLPeerName
+C/data/-/kCFStreamSSLValidatesCertificateChain
+C/econst/-/kCFStreamStatusAtEnd
+C/econst/-/kCFStreamStatusClosed
+C/econst/-/kCFStreamStatusError
+C/econst/-/kCFStreamStatusNotOpen
+C/econst/-/kCFStreamStatusOpen
+C/econst/-/kCFStreamStatusOpening
+C/econst/-/kCFStreamStatusReading
+C/econst/-/kCFStreamStatusWriting
+C/data/-/kCFStringBinaryHeapCallBacks
+C/econst/-/kCFStringEncodingANSEL
+C/econst/-/kCFStringEncodingASCII
+C/econst/-/kCFStringEncodingBig5
+C/econst/-/kCFStringEncodingBig5_E
+C/econst/-/kCFStringEncodingBig5_HKSCS_1999
+C/econst/-/kCFStringEncodingCNS_11643_92_P1
+C/econst/-/kCFStringEncodingCNS_11643_92_P2
+C/econst/-/kCFStringEncodingCNS_11643_92_P3
+C/econst/-/kCFStringEncodingDOSArabic
+C/econst/-/kCFStringEncodingDOSBalticRim
+C/econst/-/kCFStringEncodingDOSCanadianFrench
+C/econst/-/kCFStringEncodingDOSChineseSimplif
+C/econst/-/kCFStringEncodingDOSChineseTrad
+C/econst/-/kCFStringEncodingDOSCyrillic
+C/econst/-/kCFStringEncodingDOSGreek
+C/econst/-/kCFStringEncodingDOSGreek1
+C/econst/-/kCFStringEncodingDOSGreek2
+C/econst/-/kCFStringEncodingDOSHebrew
+C/econst/-/kCFStringEncodingDOSIcelandic
+C/econst/-/kCFStringEncodingDOSJapanese
+C/econst/-/kCFStringEncodingDOSKorean
+C/econst/-/kCFStringEncodingDOSLatin1
+C/econst/-/kCFStringEncodingDOSLatin2
+C/econst/-/kCFStringEncodingDOSLatinUS
+C/econst/-/kCFStringEncodingDOSNordic
+C/econst/-/kCFStringEncodingDOSPortuguese
+C/econst/-/kCFStringEncodingDOSRussian
+C/econst/-/kCFStringEncodingDOSThai
+C/econst/-/kCFStringEncodingDOSTurkish
+C/econst/-/kCFStringEncodingEBCDIC_CP037
+C/econst/-/kCFStringEncodingEBCDIC_US
+C/econst/-/kCFStringEncodingEUC_CN
+C/econst/-/kCFStringEncodingEUC_JP
+C/econst/-/kCFStringEncodingEUC_KR
+C/econst/-/kCFStringEncodingEUC_TW
+C/econst/-/kCFStringEncodingGB_18030_2000
+C/econst/-/kCFStringEncodingGB_2312_80
+C/econst/-/kCFStringEncodingGBK_95
+C/econst/-/kCFStringEncodingHZ_GB_2312
+C/macro/-/kCFStringEncodingInvalidId
+C/econst/-/kCFStringEncodingISO_2022_CN
+C/econst/-/kCFStringEncodingISO_2022_CN_EXT
+C/econst/-/kCFStringEncodingISO_2022_JP
+C/econst/-/kCFStringEncodingISO_2022_JP_1
+C/econst/-/kCFStringEncodingISO_2022_JP_2
+C/econst/-/kCFStringEncodingISO_2022_JP_3
+C/econst/-/kCFStringEncodingISO_2022_KR
+C/econst/-/kCFStringEncodingISOLatin1
+C/econst/-/kCFStringEncodingISOLatin10
+C/econst/-/kCFStringEncodingISOLatin2
+C/econst/-/kCFStringEncodingISOLatin3
+C/econst/-/kCFStringEncodingISOLatin4
+C/econst/-/kCFStringEncodingISOLatin5
+C/econst/-/kCFStringEncodingISOLatin6
+C/econst/-/kCFStringEncodingISOLatin7
+C/econst/-/kCFStringEncodingISOLatin8
+C/econst/-/kCFStringEncodingISOLatin9
+C/econst/-/kCFStringEncodingISOLatinArabic
+C/econst/-/kCFStringEncodingISOLatinCyrillic
+C/econst/-/kCFStringEncodingISOLatinGreek
+C/econst/-/kCFStringEncodingISOLatinHebrew
+C/econst/-/kCFStringEncodingISOLatinThai
+C/econst/-/kCFStringEncodingJIS_C6226_78
+C/econst/-/kCFStringEncodingJIS_X0201_76
+C/econst/-/kCFStringEncodingJIS_X0208_83
+C/econst/-/kCFStringEncodingJIS_X0208_90
+C/econst/-/kCFStringEncodingJIS_X0212_90
+C/econst/-/kCFStringEncodingKOI8_R
+C/econst/-/kCFStringEncodingKOI8_U
+C/econst/-/kCFStringEncodingKSC_5601_87
+C/econst/-/kCFStringEncodingKSC_5601_92_Johab
+C/econst/-/kCFStringEncodingMacArabic
+C/econst/-/kCFStringEncodingMacArmenian
+C/econst/-/kCFStringEncodingMacBengali
+C/econst/-/kCFStringEncodingMacBurmese
+C/econst/-/kCFStringEncodingMacCeltic
+C/econst/-/kCFStringEncodingMacCentralEurRoman
+C/econst/-/kCFStringEncodingMacChineseSimp
+C/econst/-/kCFStringEncodingMacChineseTrad
+C/econst/-/kCFStringEncodingMacCroatian
+C/econst/-/kCFStringEncodingMacCyrillic
+C/econst/-/kCFStringEncodingMacDevanagari
+C/econst/-/kCFStringEncodingMacDingbats
+C/econst/-/kCFStringEncodingMacEthiopic
+C/econst/-/kCFStringEncodingMacExtArabic
+C/econst/-/kCFStringEncodingMacFarsi
+C/econst/-/kCFStringEncodingMacGaelic
+C/econst/-/kCFStringEncodingMacGeorgian
+C/econst/-/kCFStringEncodingMacGreek
+C/econst/-/kCFStringEncodingMacGujarati
+C/econst/-/kCFStringEncodingMacGurmukhi
+C/econst/-/kCFStringEncodingMacHebrew
+C/econst/-/kCFStringEncodingMacHFS
+C/econst/-/kCFStringEncodingMacIcelandic
+C/econst/-/kCFStringEncodingMacInuit
+C/econst/-/kCFStringEncodingMacJapanese
+C/econst/-/kCFStringEncodingMacKannada
+C/econst/-/kCFStringEncodingMacKhmer
+C/econst/-/kCFStringEncodingMacKorean
+C/econst/-/kCFStringEncodingMacLaotian
+C/econst/-/kCFStringEncodingMacMalayalam
+C/econst/-/kCFStringEncodingMacMongolian
+C/econst/-/kCFStringEncodingMacOriya
+C/econst/-/kCFStringEncodingMacRoman
+C/econst/-/kCFStringEncodingMacRomanian
+C/econst/-/kCFStringEncodingMacRomanLatin1
+C/econst/-/kCFStringEncodingMacSinhalese
+C/econst/-/kCFStringEncodingMacSymbol
+C/econst/-/kCFStringEncodingMacTamil
+C/econst/-/kCFStringEncodingMacTelugu
+C/econst/-/kCFStringEncodingMacThai
+C/econst/-/kCFStringEncodingMacTibetan
+C/econst/-/kCFStringEncodingMacTurkish
+C/econst/-/kCFStringEncodingMacUkrainian
+C/econst/-/kCFStringEncodingMacVietnamese
+C/econst/-/kCFStringEncodingMacVT100
+C/econst/-/kCFStringEncodingNextStepJapanese
+C/econst/-/kCFStringEncodingNextStepLatin
+C/econst/-/kCFStringEncodingNonLossyASCII
+C/econst/-/kCFStringEncodingShiftJIS
+C/econst/-/kCFStringEncodingShiftJIS_X0213
+C/econst/-/kCFStringEncodingShiftJIS_X0213_00
+C/econst/-/kCFStringEncodingShiftJIS_X0213_MenKuTen
+C/econst/-/kCFStringEncodingUnicode
+C/econst/-/kCFStringEncodingUTF16
+C/econst/-/kCFStringEncodingUTF16BE
+C/econst/-/kCFStringEncodingUTF16LE
+C/econst/-/kCFStringEncodingUTF32
+C/econst/-/kCFStringEncodingUTF32BE
+C/econst/-/kCFStringEncodingUTF32LE
+C/econst/-/kCFStringEncodingUTF7
+C/econst/-/kCFStringEncodingUTF7_IMAP
+C/econst/-/kCFStringEncodingUTF8
+C/econst/-/kCFStringEncodingVISCII
+C/econst/-/kCFStringEncodingWindowsArabic
+C/econst/-/kCFStringEncodingWindowsBalticRim
+C/econst/-/kCFStringEncodingWindowsCyrillic
+C/econst/-/kCFStringEncodingWindowsGreek
+C/econst/-/kCFStringEncodingWindowsHebrew
+C/econst/-/kCFStringEncodingWindowsKoreanJohab
+C/econst/-/kCFStringEncodingWindowsLatin1
+C/econst/-/kCFStringEncodingWindowsLatin2
+C/econst/-/kCFStringEncodingWindowsLatin5
+C/econst/-/kCFStringEncodingWindowsVietnamese
+C/econst/-/kCFStringNormalizationFormC
+C/econst/-/kCFStringNormalizationFormD
+C/econst/-/kCFStringNormalizationFormKC
+C/econst/-/kCFStringNormalizationFormKD
+C/econst/-/kCFStringTokenizerAttributeLanguage
+C/econst/-/kCFStringTokenizerAttributeLatinTranscription
+C/econst/-/kCFStringTokenizerTokenHasDerivedSubTokensMask
+C/econst/-/kCFStringTokenizerTokenHasHasNumbersMask
+C/econst/-/kCFStringTokenizerTokenHasNonLettersMask
+C/econst/-/kCFStringTokenizerTokenHasSubTokensMask
+C/econst/-/kCFStringTokenizerTokenIsCJWordMask
+C/econst/-/kCFStringTokenizerTokenNone
+C/econst/-/kCFStringTokenizerTokenNormal
+C/econst/-/kCFStringTokenizerUnitLineBreak
+C/econst/-/kCFStringTokenizerUnitParagraph
+C/econst/-/kCFStringTokenizerUnitSentence
+C/econst/-/kCFStringTokenizerUnitWord
+C/econst/-/kCFStringTokenizerUnitWordBoundary
+C/data/-/kCFStringTransformFullwidthHalfwidth
+C/data/-/kCFStringTransformHiraganaKatakana
+C/data/-/kCFStringTransformLatinArabic
+C/data/-/kCFStringTransformLatinCyrillic
+C/data/-/kCFStringTransformLatinGreek
+C/data/-/kCFStringTransformLatinHangul
+C/data/-/kCFStringTransformLatinHebrew
+C/data/-/kCFStringTransformLatinHiragana
+C/data/-/kCFStringTransformLatinKatakana
+C/data/-/kCFStringTransformLatinThai
+C/data/-/kCFStringTransformMandarinLatin
+C/data/-/kCFStringTransformStripCombiningMarks
+C/data/-/kCFStringTransformStripDiacritics
+C/data/-/kCFStringTransformToLatin
+C/data/-/kCFStringTransformToUnicodeName
+C/data/-/kCFStringTransformToXMLHex
+C/econst/-/kCFTimeZoneNameStyleDaylightSaving
+C/econst/-/kCFTimeZoneNameStyleShortDaylightSaving
+C/econst/-/kCFTimeZoneNameStyleShortStandard
+C/econst/-/kCFTimeZoneNameStyleStandard
+C/data/-/kCFTimeZoneSystemTimeZoneDidChangeNotification
+C/data/-/kCFTypeArrayCallBacks
+C/data/-/kCFTypeBagCallBacks
+C/data/-/kCFTypeDictionaryKeyCallBacks
+C/data/-/kCFTypeDictionaryValueCallBacks
+C/data/-/kCFTypeSetCallBacks
+C/data/-/kCFURLAttributeModificationDateKey
+C/data/-/kCFURLBookmarkCreationMinimalBookmarkMask
+C/data/-/kCFURLBookmarkCreationPreferFileIDResolutionMask
+C/data/-/kCFURLBookmarkCreationSuitableForBookmarkFile
+C/econst/-/kCFURLComponentFragment
+C/econst/-/kCFURLComponentHost
+C/econst/-/kCFURLComponentNetLocation
+C/econst/-/kCFURLComponentParameterString
+C/econst/-/kCFURLComponentPassword
+C/econst/-/kCFURLComponentPath
+C/econst/-/kCFURLComponentPort
+C/econst/-/kCFURLComponentQuery
+C/econst/-/kCFURLComponentResourceSpecifier
+C/econst/-/kCFURLComponentScheme
+C/econst/-/kCFURLComponentUser
+C/econst/-/kCFURLComponentUserInfo
+C/data/-/kCFURLContentAccessDateKey
+C/data/-/kCFURLContentModificationDateKey
+C/data/-/kCFURLCreationDateKey
+C/data/-/kCFURLCustomIconKey
+C/data/-/kCFURLEffectiveIconKey
+C/data/-/kCFURLFileAllocatedSizeKey
+C/data/-/kCFURLFileDirectoryContents
+C/data/-/kCFURLFileExists
+C/data/-/kCFURLFileLastModificationTime
+C/data/-/kCFURLFileLength
+C/data/-/kCFURLFileOwnerID
+C/data/-/kCFURLFilePOSIXMode
+C/data/-/kCFURLFileSizeKey
+C/data/-/kCFURLHasHiddenExtensionKey
+C/econst/-/kCFURLHFSPathStyle
+C/data/-/kCFURLHTTPStatusCode
+C/data/-/kCFURLHTTPStatusLine
+C/econst/-/kCFURLImproperArgumentsError
+C/data/-/kCFURLIsAliasFileKey
+C/data/-/kCFURLIsDirectoryKey
+C/data/-/kCFURLIsHiddenKey
+C/data/-/kCFURLIsPackageKey
+C/data/-/kCFURLIsRegularFileKey
+C/data/-/kCFURLIsSymbolicLinkKey
+C/data/-/kCFURLIsSystemImmutableKey
+C/data/-/kCFURLIsUserImmutableKey
+C/data/-/kCFURLIsVolumeKey
+C/data/-/kCFURLLabelColorKey
+C/data/-/kCFURLLabelNumberKey
+C/data/-/kCFURLLinkCountKey
+C/data/-/kCFURLLocalizedLabelKey
+C/data/-/kCFURLLocalizedNameKey
+C/data/-/kCFURLLocalizedTypeDescriptionKey
+C/data/-/kCFURLNameKey
+C/data/-/kCFURLParentDirectoryURLKey
+C/econst/-/kCFURLPOSIXPathStyle
+C/econst/-/kCFURLPropertyKeyUnavailableError
+C/econst/-/kCFURLRemoteHostUnavailableError
+C/econst/-/kCFURLResourceAccessViolationError
+C/econst/-/kCFURLResourceNotFoundError
+C/econst/-/kCFURLTimeoutError
+C/data/-/kCFURLTypeIdentifierKey
+C/econst/-/kCFURLUnknownError
+C/econst/-/kCFURLUnknownPropertyKeyError
+C/econst/-/kCFURLUnknownSchemeError
+C/data/-/kCFURLVolumeAvailableCapacityKey
+C/data/-/kCFURLVolumeIsJournalingKey
+C/data/-/kCFURLVolumeLocalizedFormatDescriptionKey
+C/data/-/kCFURLVolumeResourceCountKey
+C/data/-/kCFURLVolumeSupportsCasePreservedNamesKey
+C/data/-/kCFURLVolumeSupportsCaseSensitiveNamesKey
+C/data/-/kCFURLVolumeSupportsHardLinksKey
+C/data/-/kCFURLVolumeSupportsJournalingKey
+C/data/-/kCFURLVolumeSupportsPersistentIDsKey
+C/data/-/kCFURLVolumeSupportsSparseFilesKey
+C/data/-/kCFURLVolumeSupportsSymbolicLinksKey
+C/data/-/kCFURLVolumeSupportsZeroRunsKey
+C/data/-/kCFURLVolumeTotalCapacityKey
+C/data/-/kCFURLVolumeURLKey
+C/econst/-/kCFURLWindowsPathStyle
+C/data/-/kCFUserNotificationAlertHeaderKey
+C/data/-/kCFUserNotificationAlertMessageKey
+C/data/-/kCFUserNotificationAlternateButtonTitleKey
+C/econst/-/kCFUserNotificationAlternateResponse
+C/econst/-/kCFUserNotificationCancelResponse
+C/econst/-/kCFUserNotificationCautionAlertLevel
+C/data/-/kCFUserNotificationCheckBoxTitlesKey
+C/data/-/kCFUserNotificationDefaultButtonTitleKey
+C/econst/-/kCFUserNotificationDefaultResponse
+C/data/-/kCFUserNotificationIconURLKey
+C/data/-/kCFUserNotificationLocalizationURLKey
+C/econst/-/kCFUserNotificationNoDefaultButtonFlag
+C/econst/-/kCFUserNotificationNoteAlertLevel
+C/data/-/kCFUserNotificationOtherButtonTitleKey
+C/econst/-/kCFUserNotificationOtherResponse
+C/econst/-/kCFUserNotificationPlainAlertLevel
+C/data/-/kCFUserNotificationPopUpSelectionKey
+C/data/-/kCFUserNotificationPopUpTitlesKey
+C/data/-/kCFUserNotificationProgressIndicatorValueKey
+C/data/-/kCFUserNotificationSoundURLKey
+C/econst/-/kCFUserNotificationStopAlertLevel
+C/data/-/kCFUserNotificationTextFieldTitlesKey
+C/data/-/kCFUserNotificationTextFieldValuesKey
+C/econst/-/kCFUserNotificationUseRadioButtonsFlag
+C/econst/-/kCFXMLEntityTypeCharacter
+C/econst/-/kCFXMLEntityTypeParameter
+C/econst/-/kCFXMLEntityTypeParsedExternal
+C/econst/-/kCFXMLEntityTypeParsedInternal
+C/econst/-/kCFXMLEntityTypeUnparsed
+C/econst/-/kCFXMLErrorElementlessDocument
+C/econst/-/kCFXMLErrorEncodingConversionFailure
+C/econst/-/kCFXMLErrorMalformedCDSect
+C/econst/-/kCFXMLErrorMalformedCharacterReference
+C/econst/-/kCFXMLErrorMalformedCloseTag
+C/econst/-/kCFXMLErrorMalformedComment
+C/econst/-/kCFXMLErrorMalformedDocument
+C/econst/-/kCFXMLErrorMalformedDTD
+C/econst/-/kCFXMLErrorMalformedName
+C/econst/-/kCFXMLErrorMalformedParsedCharacterData
+C/econst/-/kCFXMLErrorMalformedProcessingInstruction
+C/econst/-/kCFXMLErrorMalformedStartTag
+C/econst/-/kCFXMLErrorNoData
+C/econst/-/kCFXMLErrorUnexpectedEOF
+C/econst/-/kCFXMLErrorUnknownEncoding
+C/econst/-/kCFXMLNodeCurrentVersion
+C/econst/-/kCFXMLNodeTypeAttribute
+C/econst/-/kCFXMLNodeTypeAttributeListDeclaration
+C/econst/-/kCFXMLNodeTypeCDATASection
+C/econst/-/kCFXMLNodeTypeComment
+C/econst/-/kCFXMLNodeTypeDocument
+C/econst/-/kCFXMLNodeTypeDocumentFragment
+C/econst/-/kCFXMLNodeTypeDocumentType
+C/econst/-/kCFXMLNodeTypeElement
+C/econst/-/kCFXMLNodeTypeElementTypeDeclaration
+C/econst/-/kCFXMLNodeTypeEntity
+C/econst/-/kCFXMLNodeTypeEntityReference
+C/econst/-/kCFXMLNodeTypeNotation
+C/econst/-/kCFXMLNodeTypeProcessingInstruction
+C/econst/-/kCFXMLNodeTypeText
+C/econst/-/kCFXMLNodeTypeWhitespace
+C/econst/-/kCFXMLParserAddImpliedAttributes
+C/econst/-/kCFXMLParserAllOptions
+C/econst/-/kCFXMLParserNoOptions
+C/econst/-/kCFXMLParserReplacePhysicalEntities
+C/econst/-/kCFXMLParserResolveExternalEntities
+C/econst/-/kCFXMLParserSkipMetaData
+C/econst/-/kCFXMLParserSkipWhitespace
+C/econst/-/kCFXMLParserValidateDocument
+C/econst/-/kCFXMLStatusParseInProgress
+C/econst/-/kCFXMLStatusParseNotBegun
+C/econst/-/kCFXMLStatusParseSuccessful
+C/data/-/kCFXMLTreeErrorDescription
+C/data/-/kCFXMLTreeErrorLineNumber
+C/data/-/kCFXMLTreeErrorLocation
+C/data/-/kCFXMLTreeErrorStatusCode
+C/econst/-/kCGAnnotatedSessionEventTap
+C/macro/-/kCGAnyInputEventType
+C/econst/-/kCGBackingStoreBuffered
+C/econst/-/kCGBackingStoreNonretained
+C/econst/-/kCGBackingStoreRetained
+C/econst/-/kCGBackstopMenuLevelKey
+C/econst/-/kCGBaseWindowLevelKey
+C/econst/-/kCGBitmapAlphaInfoMask
+C/econst/-/kCGBitmapByteOrder16Big
+C/macro/-/kCGBitmapByteOrder16Host
+C/econst/-/kCGBitmapByteOrder16Little
+C/econst/-/kCGBitmapByteOrder32Big
+C/macro/-/kCGBitmapByteOrder32Host
+C/econst/-/kCGBitmapByteOrder32Little
+C/econst/-/kCGBitmapByteOrderDefault
+C/econst/-/kCGBitmapByteOrderMask
+C/econst/-/kCGBitmapFloatComponents
+C/econst/-/kCGBlendModeClear
+C/econst/-/kCGBlendModeColor
+C/econst/-/kCGBlendModeColorBurn
+C/econst/-/kCGBlendModeColorDodge
+C/econst/-/kCGBlendModeCopy
+C/econst/-/kCGBlendModeDarken
+C/econst/-/kCGBlendModeDestinationAtop
+C/econst/-/kCGBlendModeDestinationIn
+C/econst/-/kCGBlendModeDestinationOut
+C/econst/-/kCGBlendModeDestinationOver
+C/econst/-/kCGBlendModeDifference
+C/econst/-/kCGBlendModeExclusion
+C/econst/-/kCGBlendModeHardLight
+C/econst/-/kCGBlendModeHue
+C/econst/-/kCGBlendModeLighten
+C/econst/-/kCGBlendModeLuminosity
+C/econst/-/kCGBlendModeMultiply
+C/econst/-/kCGBlendModeNormal
+C/econst/-/kCGBlendModeOverlay
+C/econst/-/kCGBlendModePlusDarker
+C/econst/-/kCGBlendModePlusLighter
+C/econst/-/kCGBlendModeSaturation
+C/econst/-/kCGBlendModeScreen
+C/econst/-/kCGBlendModeSoftLight
+C/econst/-/kCGBlendModeSourceAtop
+C/econst/-/kCGBlendModeSourceIn
+C/econst/-/kCGBlendModeSourceOut
+C/econst/-/kCGBlendModeXOR
+C/econst/-/kCGCaptureNoFill
+C/econst/-/kCGCaptureNoOptions
+C/data/-/kCGColorBlack
+C/data/-/kCGColorClear
+C/data/-/kCGColorSpaceAdobeRGB1998
+C/data/-/kCGColorSpaceGenericCMYK
+C/data/-/kCGColorSpaceGenericGray
+C/data/-/kCGColorSpaceGenericGrayGamma2_2
+C/data/-/kCGColorSpaceGenericRGB
+C/data/-/kCGColorSpaceGenericRGBLinear
+C/econst/-/kCGColorSpaceModelCMYK
+C/econst/-/kCGColorSpaceModelDeviceN
+C/econst/-/kCGColorSpaceModelIndexed
+C/econst/-/kCGColorSpaceModelLab
+C/econst/-/kCGColorSpaceModelMonochrome
+C/econst/-/kCGColorSpaceModelPattern
+C/econst/-/kCGColorSpaceModelRGB
+C/econst/-/kCGColorSpaceModelUnknown
+C/data/-/kCGColorSpaceSRGB
+C/data/-/kCGColorWhite
+C/econst/-/kCGConfigureForAppOnly
+C/econst/-/kCGConfigureForSession
+C/econst/-/kCGConfigurePermanently
+C/econst/-/kCGCursorWindowLevelKey
+C/econst/-/kCGDesktopIconWindowLevelKey
+C/econst/-/kCGDesktopWindowLevelKey
+C/macro/-/kCGDirectMainDisplay
+C/econst/-/kCGDisplayAddFlag
+C/econst/-/kCGDisplayBeginConfigurationFlag
+C/macro/-/kCGDisplayBitsPerPixel
+C/macro/-/kCGDisplayBitsPerSample
+C/macro/-/kCGDisplayBlendNormal
+C/macro/-/kCGDisplayBlendSolidColor
+C/macro/-/kCGDisplayBytesPerRow
+C/econst/-/kCGDisplayDesktopShapeChangedFlag
+C/econst/-/kCGDisplayDisabledFlag
+C/econst/-/kCGDisplayEnabledFlag
+C/macro/-/kCGDisplayFadeReservationInvalidToken
+C/macro/-/kCGDisplayHeight
+C/macro/-/kCGDisplayIOFlags
+C/econst/-/kCGDisplayMirrorFlag
+C/macro/-/kCGDisplayMode
+C/macro/-/kCGDisplayModeIsInterlaced
+C/macro/-/kCGDisplayModeIsSafeForHardware
+C/macro/-/kCGDisplayModeIsStretched
+C/macro/-/kCGDisplayModeIsTelevisionOutput
+C/macro/-/kCGDisplayModeUsableForDesktopGUI
+C/econst/-/kCGDisplayMovedFlag
+C/macro/-/kCGDisplayRefreshRate
+C/econst/-/kCGDisplayRemoveFlag
+C/macro/-/kCGDisplaySamplesPerPixel
+C/econst/-/kCGDisplaySetMainFlag
+C/econst/-/kCGDisplaySetModeFlag
+C/econst/-/kCGDisplayUnMirrorFlag
+C/macro/-/kCGDisplayWidth
+C/econst/-/kCGDockWindowLevelKey
+C/econst/-/kCGDraggingWindowLevelKey
+C/econst/-/kCGEncodingFontSpecific
+C/econst/-/kCGEncodingMacRoman
+C/econst/-/kCGErrorApplicationAlreadyRunning
+C/econst/-/kCGErrorApplicationCanOnlyBeRunInOneSessionAtATime
+C/econst/-/kCGErrorApplicationIncorrectExecutableFormatFound
+C/econst/-/kCGErrorApplicationIsLaunching
+C/econst/-/kCGErrorApplicationNotPermittedToExecute
+C/econst/-/kCGErrorApplicationRequiresNewerSystem
+C/econst/-/kCGErrorCannotComplete
+C/econst/-/kCGErrorClassicApplicationsMustBeLaunchedByClassic
+C/econst/-/kCGErrorFailure
+C/econst/-/kCGErrorForkFailed
+C/econst/-/kCGErrorIllegalArgument
+C/econst/-/kCGErrorInvalidConnection
+C/econst/-/kCGErrorInvalidContext
+C/econst/-/kCGErrorInvalidOperation
+C/econst/-/kCGErrorNameTooLong
+C/econst/-/kCGErrorNoCurrentPoint
+C/econst/-/kCGErrorNoneAvailable
+C/econst/-/kCGErrorNotImplemented
+C/econst/-/kCGErrorRangeCheck
+C/econst/-/kCGErrorRetryRegistration
+C/econst/-/kCGErrorSuccess
+C/econst/-/kCGErrorTypeCheck
+C/econst/-/kCGEventFlagMaskAlphaShift
+C/econst/-/kCGEventFlagMaskAlternate
+C/econst/-/kCGEventFlagMaskCommand
+C/econst/-/kCGEventFlagMaskControl
+C/econst/-/kCGEventFlagMaskHelp
+C/econst/-/kCGEventFlagMaskNonCoalesced
+C/econst/-/kCGEventFlagMaskNumericPad
+C/econst/-/kCGEventFlagMaskSecondaryFn
+C/econst/-/kCGEventFlagMaskShift
+C/econst/-/kCGEventFlagsChanged
+C/econst/-/kCGEventKeyDown
+C/econst/-/kCGEventKeyUp
+C/econst/-/kCGEventLeftMouseDown
+C/econst/-/kCGEventLeftMouseDragged
+C/econst/-/kCGEventLeftMouseUp
+C/macro/-/kCGEventMaskForAllEvents
+C/econst/-/kCGEventMouseMoved
+C/econst/-/kCGEventMouseSubtypeDefault
+C/econst/-/kCGEventMouseSubtypeTabletPoint
+C/econst/-/kCGEventMouseSubtypeTabletProximity
+C/econst/-/kCGEventNull
+C/econst/-/kCGEventOtherMouseDown
+C/econst/-/kCGEventOtherMouseDragged
+C/econst/-/kCGEventOtherMouseUp
+C/econst/-/kCGEventRightMouseDown
+C/econst/-/kCGEventRightMouseDragged
+C/econst/-/kCGEventRightMouseUp
+C/econst/-/kCGEventScrollWheel
+C/econst/-/kCGEventSourceGroupID
+C/econst/-/kCGEventSourceStateCombinedSessionState
+C/econst/-/kCGEventSourceStateHIDSystemState
+C/econst/-/kCGEventSourceStateID
+C/econst/-/kCGEventSourceStatePrivate
+C/econst/-/kCGEventSourceUnixProcessID
+C/econst/-/kCGEventSourceUserData
+C/econst/-/kCGEventSourceUserID
+C/econst/-/kCGEventSuppressionStateRemoteMouseDrag
+C/econst/-/kCGEventSuppressionStateSuppressionInterval
+C/econst/-/kCGEventTabletPointer
+C/econst/-/kCGEventTabletProximity
+C/econst/-/kCGEventTapDisabledByTimeout
+C/econst/-/kCGEventTapDisabledByUserInput
+C/econst/-/kCGEventTapOptionDefault
+C/econst/-/kCGEventTapOptionListenOnly
+C/econst/-/kCGEventTargetProcessSerialNumber
+C/econst/-/kCGEventTargetUnixProcessID
+C/econst/-/kCGFloatingWindowLevelKey
+C/econst/-/kCGFontIndexInvalid
+C/econst/-/kCGFontIndexMax
+C/econst/-/kCGFontPostScriptFormatType1
+C/econst/-/kCGFontPostScriptFormatType3
+C/econst/-/kCGFontPostScriptFormatType42
+C/data/-/kCGFontVariationAxisDefaultValue
+C/data/-/kCGFontVariationAxisMaxValue
+C/data/-/kCGFontVariationAxisMinValue
+C/data/-/kCGFontVariationAxisName
+C/econst/-/kCGGlyphMax
+C/econst/-/kCGGradientDrawsAfterEndLocation
+C/econst/-/kCGGradientDrawsBeforeStartLocation
+C/econst/-/kCGHeadInsertEventTap
+C/econst/-/kCGHelpWindowLevelKey
+C/econst/-/kCGHIDEventTap
+C/econst/-/kCGImageAlphaFirst
+C/econst/-/kCGImageAlphaLast
+C/econst/-/kCGImageAlphaNone
+C/econst/-/kCGImageAlphaNoneSkipFirst
+C/econst/-/kCGImageAlphaNoneSkipLast
+C/econst/-/kCGImageAlphaOnly
+C/econst/-/kCGImageAlphaPremultipliedFirst
+C/econst/-/kCGImageAlphaPremultipliedLast
+C/data/-/kCGImageDestinationBackgroundColor
+C/data/-/kCGImageDestinationLossyCompressionQuality
+C/data/-/kCGImageProperty8BIMDictionary
+C/data/-/kCGImageProperty8BIMLayerNames
+C/data/-/kCGImagePropertyCIFFCameraSerialNumber
+C/data/-/kCGImagePropertyCIFFContinuousDrive
+C/data/-/kCGImagePropertyCIFFDescription
+C/data/-/kCGImagePropertyCIFFDictionary
+C/data/-/kCGImagePropertyCIFFFirmware
+C/data/-/kCGImagePropertyCIFFFlashExposureComp
+C/data/-/kCGImagePropertyCIFFFocusMode
+C/data/-/kCGImagePropertyCIFFImageFileName
+C/data/-/kCGImagePropertyCIFFImageName
+C/data/-/kCGImagePropertyCIFFImageSerialNumber
+C/data/-/kCGImagePropertyCIFFLensMaxMM
+C/data/-/kCGImagePropertyCIFFLensMinMM
+C/data/-/kCGImagePropertyCIFFLensModel
+C/data/-/kCGImagePropertyCIFFMeasuredEV
+C/data/-/kCGImagePropertyCIFFMeteringMode
+C/data/-/kCGImagePropertyCIFFOwnerName
+C/data/-/kCGImagePropertyCIFFRecordID
+C/data/-/kCGImagePropertyCIFFReleaseMethod
+C/data/-/kCGImagePropertyCIFFReleaseTiming
+C/data/-/kCGImagePropertyCIFFSelfTimingTime
+C/data/-/kCGImagePropertyCIFFShootingMode
+C/data/-/kCGImagePropertyCIFFWhiteBalanceIndex
+C/data/-/kCGImagePropertyColorModel
+C/data/-/kCGImagePropertyColorModelCMYK
+C/data/-/kCGImagePropertyColorModelGray
+C/data/-/kCGImagePropertyColorModelLab
+C/data/-/kCGImagePropertyColorModelRGB
+C/data/-/kCGImagePropertyDepth
+C/data/-/kCGImagePropertyDNGBackwardVersion
+C/data/-/kCGImagePropertyDNGCameraSerialNumber
+C/data/-/kCGImagePropertyDNGDictionary
+C/data/-/kCGImagePropertyDNGLensInfo
+C/data/-/kCGImagePropertyDNGLocalizedCameraModel
+C/data/-/kCGImagePropertyDNGUniqueCameraModel
+C/data/-/kCGImagePropertyDNGVersion
+C/data/-/kCGImagePropertyDPIHeight
+C/data/-/kCGImagePropertyDPIWidth
+C/data/-/kCGImagePropertyExifApertureValue
+C/data/-/kCGImagePropertyExifAuxDictionary
+C/data/-/kCGImagePropertyExifAuxFirmware
+C/data/-/kCGImagePropertyExifAuxFlashCompensation
+C/data/-/kCGImagePropertyExifAuxImageNumber
+C/data/-/kCGImagePropertyExifAuxLensID
+C/data/-/kCGImagePropertyExifAuxLensInfo
+C/data/-/kCGImagePropertyExifAuxLensModel
+C/data/-/kCGImagePropertyExifAuxLensSerialNumber
+C/data/-/kCGImagePropertyExifAuxOwnerName
+C/data/-/kCGImagePropertyExifAuxSerialNumber
+C/data/-/kCGImagePropertyExifBrightnessValue
+C/data/-/kCGImagePropertyExifCFAPattern
+C/data/-/kCGImagePropertyExifColorSpace
+C/data/-/kCGImagePropertyExifComponentsConfiguration
+C/data/-/kCGImagePropertyExifCompressedBitsPerPixel
+C/data/-/kCGImagePropertyExifContrast
+C/data/-/kCGImagePropertyExifCustomRendered
+C/data/-/kCGImagePropertyExifDateTimeDigitized
+C/data/-/kCGImagePropertyExifDateTimeOriginal
+C/data/-/kCGImagePropertyExifDeviceSettingDescription
+C/data/-/kCGImagePropertyExifDictionary
+C/data/-/kCGImagePropertyExifDigitalZoomRatio
+C/data/-/kCGImagePropertyExifExposureBiasValue
+C/data/-/kCGImagePropertyExifExposureIndex
+C/data/-/kCGImagePropertyExifExposureMode
+C/data/-/kCGImagePropertyExifExposureProgram
+C/data/-/kCGImagePropertyExifExposureTime
+C/data/-/kCGImagePropertyExifFileSource
+C/data/-/kCGImagePropertyExifFlash
+C/data/-/kCGImagePropertyExifFlashEnergy
+C/data/-/kCGImagePropertyExifFlashPixVersion
+C/data/-/kCGImagePropertyExifFNumber
+C/data/-/kCGImagePropertyExifFocalLength
+C/data/-/kCGImagePropertyExifFocalLenIn35mmFilm
+C/data/-/kCGImagePropertyExifFocalPlaneResolutionUnit
+C/data/-/kCGImagePropertyExifFocalPlaneXResolution
+C/data/-/kCGImagePropertyExifFocalPlaneYResolution
+C/data/-/kCGImagePropertyExifGainControl
+C/data/-/kCGImagePropertyExifGamma
+C/data/-/kCGImagePropertyExifImageUniqueID
+C/data/-/kCGImagePropertyExifISOSpeedRatings
+C/data/-/kCGImagePropertyExifLightSource
+C/data/-/kCGImagePropertyExifMakerNote
+C/data/-/kCGImagePropertyExifMaxApertureValue
+C/data/-/kCGImagePropertyExifMeteringMode
+C/data/-/kCGImagePropertyExifOECF
+C/data/-/kCGImagePropertyExifPixelXDimension
+C/data/-/kCGImagePropertyExifPixelYDimension
+C/data/-/kCGImagePropertyExifRelatedSoundFile
+C/data/-/kCGImagePropertyExifSaturation
+C/data/-/kCGImagePropertyExifSceneCaptureType
+C/data/-/kCGImagePropertyExifSceneType
+C/data/-/kCGImagePropertyExifSensingMethod
+C/data/-/kCGImagePropertyExifSharpness
+C/data/-/kCGImagePropertyExifShutterSpeedValue
+C/data/-/kCGImagePropertyExifSpatialFrequencyResponse
+C/data/-/kCGImagePropertyExifSpectralSensitivity
+C/data/-/kCGImagePropertyExifSubjectArea
+C/data/-/kCGImagePropertyExifSubjectDistance
+C/data/-/kCGImagePropertyExifSubjectDistRange
+C/data/-/kCGImagePropertyExifSubjectLocation
+C/data/-/kCGImagePropertyExifSubsecTime
+C/data/-/kCGImagePropertyExifSubsecTimeDigitized
+C/data/-/kCGImagePropertyExifSubsecTimeOrginal
+C/data/-/kCGImagePropertyExifUserComment
+C/data/-/kCGImagePropertyExifVersion
+C/data/-/kCGImagePropertyExifWhiteBalance
+C/data/-/kCGImagePropertyFileSize
+C/data/-/kCGImagePropertyGIFDelayTime
+C/data/-/kCGImagePropertyGIFDictionary
+C/data/-/kCGImagePropertyGIFHasGlobalColorMap
+C/data/-/kCGImagePropertyGIFImageColorMap
+C/data/-/kCGImagePropertyGIFLoopCount
+C/data/-/kCGImagePropertyGPSAltitude
+C/data/-/kCGImagePropertyGPSAltitudeRef
+C/data/-/kCGImagePropertyGPSAreaInformation
+C/data/-/kCGImagePropertyGPSDateStamp
+C/data/-/kCGImagePropertyGPSDestBearing
+C/data/-/kCGImagePropertyGPSDestBearingRef
+C/data/-/kCGImagePropertyGPSDestDistance
+C/data/-/kCGImagePropertyGPSDestDistanceRef
+C/data/-/kCGImagePropertyGPSDestLatitude
+C/data/-/kCGImagePropertyGPSDestLatitudeRef
+C/data/-/kCGImagePropertyGPSDestLongitude
+C/data/-/kCGImagePropertyGPSDestLongitudeRef
+C/data/-/kCGImagePropertyGPSDictionary
+C/data/-/kCGImagePropertyGPSDifferental
+C/data/-/kCGImagePropertyGPSDOP
+C/data/-/kCGImagePropertyGPSImgDirection
+C/data/-/kCGImagePropertyGPSImgDirectionRef
+C/data/-/kCGImagePropertyGPSLatitude
+C/data/-/kCGImagePropertyGPSLatitudeRef
+C/data/-/kCGImagePropertyGPSLongitude
+C/data/-/kCGImagePropertyGPSLongitudeRef
+C/data/-/kCGImagePropertyGPSMapDatum
+C/data/-/kCGImagePropertyGPSMeasureMode
+C/data/-/kCGImagePropertyGPSProcessingMethod
+C/data/-/kCGImagePropertyGPSSatellites
+C/data/-/kCGImagePropertyGPSSpeed
+C/data/-/kCGImagePropertyGPSSpeedRef
+C/data/-/kCGImagePropertyGPSStatus
+C/data/-/kCGImagePropertyGPSTimeStamp
+C/data/-/kCGImagePropertyGPSTrack
+C/data/-/kCGImagePropertyGPSTrackRef
+C/data/-/kCGImagePropertyGPSVersion
+C/data/-/kCGImagePropertyHasAlpha
+C/data/-/kCGImagePropertyIPTCActionAdvised
+C/data/-/kCGImagePropertyIPTCByline
+C/data/-/kCGImagePropertyIPTCBylineTitle
+C/data/-/kCGImagePropertyIPTCCaptionAbstract
+C/data/-/kCGImagePropertyIPTCCategory
+C/data/-/kCGImagePropertyIPTCCity
+C/data/-/kCGImagePropertyIPTCContact
+C/data/-/kCGImagePropertyIPTCContentLocationCode
+C/data/-/kCGImagePropertyIPTCContentLocationName
+C/data/-/kCGImagePropertyIPTCCopyrightNotice
+C/data/-/kCGImagePropertyIPTCCountryPrimaryLocationCode
+C/data/-/kCGImagePropertyIPTCCountryPrimaryLocationName
+C/data/-/kCGImagePropertyIPTCCredit
+C/data/-/kCGImagePropertyIPTCDateCreated
+C/data/-/kCGImagePropertyIPTCDictionary
+C/data/-/kCGImagePropertyIPTCDigitalCreationDate
+C/data/-/kCGImagePropertyIPTCDigitalCreationTime
+C/data/-/kCGImagePropertyIPTCEditorialUpdate
+C/data/-/kCGImagePropertyIPTCEditStatus
+C/data/-/kCGImagePropertyIPTCExpirationDate
+C/data/-/kCGImagePropertyIPTCExpirationTime
+C/data/-/kCGImagePropertyIPTCFixtureIdentifier
+C/data/-/kCGImagePropertyIPTCHeadline
+C/data/-/kCGImagePropertyIPTCImageOrientation
+C/data/-/kCGImagePropertyIPTCImageType
+C/data/-/kCGImagePropertyIPTCKeywords
+C/data/-/kCGImagePropertyIPTCLanguageIdentifier
+C/data/-/kCGImagePropertyIPTCObjectAttributeReference
+C/data/-/kCGImagePropertyIPTCObjectCycle
+C/data/-/kCGImagePropertyIPTCObjectName
+C/data/-/kCGImagePropertyIPTCObjectTypeReference
+C/data/-/kCGImagePropertyIPTCOriginalTransmissionReference
+C/data/-/kCGImagePropertyIPTCOriginatingProgram
+C/data/-/kCGImagePropertyIPTCProgramVersion
+C/data/-/kCGImagePropertyIPTCProvinceState
+C/data/-/kCGImagePropertyIPTCReferenceDate
+C/data/-/kCGImagePropertyIPTCReferenceNumber
+C/data/-/kCGImagePropertyIPTCReferenceService
+C/data/-/kCGImagePropertyIPTCReleaseDate
+C/data/-/kCGImagePropertyIPTCReleaseTime
+C/data/-/kCGImagePropertyIPTCSource
+C/data/-/kCGImagePropertyIPTCSpecialInstructions
+C/data/-/kCGImagePropertyIPTCStarRating
+C/data/-/kCGImagePropertyIPTCSubjectReference
+C/data/-/kCGImagePropertyIPTCSubLocation
+C/data/-/kCGImagePropertyIPTCSupplementalCategory
+C/data/-/kCGImagePropertyIPTCTimeCreated
+C/data/-/kCGImagePropertyIPTCUrgency
+C/data/-/kCGImagePropertyIPTCWriterEditor
+C/data/-/kCGImagePropertyIsFloat
+C/data/-/kCGImagePropertyIsIndexed
+C/data/-/kCGImagePropertyJFIFDensityUnit
+C/data/-/kCGImagePropertyJFIFDictionary
+C/data/-/kCGImagePropertyJFIFIsProgressive
+C/data/-/kCGImagePropertyJFIFVersion
+C/data/-/kCGImagePropertyJFIFXDensity
+C/data/-/kCGImagePropertyJFIFYDensity
+C/data/-/kCGImagePropertyMakerCanonAspectRatioInfo
+C/data/-/kCGImagePropertyMakerCanonCameraSerialNumber
+C/data/-/kCGImagePropertyMakerCanonContinuousDrive
+C/data/-/kCGImagePropertyMakerCanonDictionary
+C/data/-/kCGImagePropertyMakerCanonFirmware
+C/data/-/kCGImagePropertyMakerCanonFlashExposureComp
+C/data/-/kCGImagePropertyMakerCanonImageSerialNumber
+C/data/-/kCGImagePropertyMakerCanonLensModel
+C/data/-/kCGImagePropertyMakerCanonOwnerName
+C/data/-/kCGImagePropertyMakerFujiDictionary
+C/data/-/kCGImagePropertyMakerMinoltaDictionary
+C/data/-/kCGImagePropertyMakerNikonCameraSerialNumber
+C/data/-/kCGImagePropertyMakerNikonColorMode
+C/data/-/kCGImagePropertyMakerNikonDictionary
+C/data/-/kCGImagePropertyMakerNikonDigitalZoom
+C/data/-/kCGImagePropertyMakerNikonFlashExposureComp
+C/data/-/kCGImagePropertyMakerNikonFlashSetting
+C/data/-/kCGImagePropertyMakerNikonFocusDistance
+C/data/-/kCGImagePropertyMakerNikonFocusMode
+C/data/-/kCGImagePropertyMakerNikonImageAdjustment
+C/data/-/kCGImagePropertyMakerNikonISOSelection
+C/data/-/kCGImagePropertyMakerNikonISOSetting
+C/data/-/kCGImagePropertyMakerNikonLensAdapter
+C/data/-/kCGImagePropertyMakerNikonLensInfo
+C/data/-/kCGImagePropertyMakerNikonLensType
+C/data/-/kCGImagePropertyMakerNikonQuality
+C/data/-/kCGImagePropertyMakerNikonSharpenMode
+C/data/-/kCGImagePropertyMakerNikonShootingMode
+C/data/-/kCGImagePropertyMakerNikonShutterCount
+C/data/-/kCGImagePropertyMakerNikonWhiteBalanceMode
+C/data/-/kCGImagePropertyMakerOlympusDictionary
+C/data/-/kCGImagePropertyMakerPentaxDictionary
+C/data/-/kCGImagePropertyOrientation
+C/data/-/kCGImagePropertyPixelHeight
+C/data/-/kCGImagePropertyPixelWidth
+C/data/-/kCGImagePropertyPNGChromaticities
+C/data/-/kCGImagePropertyPNGDictionary
+C/data/-/kCGImagePropertyPNGGamma
+C/data/-/kCGImagePropertyPNGInterlaceType
+C/data/-/kCGImagePropertyPNGsRGBIntent
+C/data/-/kCGImagePropertyPNGXPixelsPerMeter
+C/data/-/kCGImagePropertyPNGYPixelsPerMeter
+C/data/-/kCGImagePropertyProfileName
+C/data/-/kCGImagePropertyRawDictionary
+C/data/-/kCGImagePropertyTIFFArtist
+C/data/-/kCGImagePropertyTIFFCompression
+C/data/-/kCGImagePropertyTIFFCopyright
+C/data/-/kCGImagePropertyTIFFDateTime
+C/data/-/kCGImagePropertyTIFFDictionary
+C/data/-/kCGImagePropertyTIFFDocumentName
+C/data/-/kCGImagePropertyTIFFHostComputer
+C/data/-/kCGImagePropertyTIFFImageDescription
+C/data/-/kCGImagePropertyTIFFMake
+C/data/-/kCGImagePropertyTIFFModel
+C/data/-/kCGImagePropertyTIFFOrientation
+C/data/-/kCGImagePropertyTIFFPhotometricInterpretation
+C/data/-/kCGImagePropertyTIFFPrimaryChromaticities
+C/data/-/kCGImagePropertyTIFFResolutionUnit
+C/data/-/kCGImagePropertyTIFFSoftware
+C/data/-/kCGImagePropertyTIFFTransferFunction
+C/data/-/kCGImagePropertyTIFFWhitePoint
+C/data/-/kCGImagePropertyTIFFXResolution
+C/data/-/kCGImagePropertyTIFFYResolution
+C/data/-/kCGImageSourceCreateThumbnailFromImageAlways
+C/data/-/kCGImageSourceCreateThumbnailFromImageIfAbsent
+C/data/-/kCGImageSourceCreateThumbnailWithTransform
+C/data/-/kCGImageSourceShouldAllowFloat
+C/data/-/kCGImageSourceShouldCache
+C/data/-/kCGImageSourceThumbnailMaxPixelSize
+C/data/-/kCGImageSourceTypeIdentifierHint
+C/econst/-/kCGImageStatusComplete
+C/econst/-/kCGImageStatusIncomplete
+C/econst/-/kCGImageStatusInvalidData
+C/econst/-/kCGImageStatusReadingHeader
+C/econst/-/kCGImageStatusUnexpectedEOF
+C/econst/-/kCGImageStatusUnknownType
+C/econst/-/kCGInterpolationDefault
+C/econst/-/kCGInterpolationHigh
+C/econst/-/kCGInterpolationLow
+C/econst/-/kCGInterpolationMedium
+C/econst/-/kCGInterpolationNone
+C/econst/-/kCGKeyboardEventAutorepeat
+C/econst/-/kCGKeyboardEventKeyboardType
+C/econst/-/kCGKeyboardEventKeycode
+C/econst/-/kCGL0Bit
+C/econst/-/kCGL10Bit
+C/econst/-/kCGL128Bit
+C/econst/-/kCGL12Bit
+C/econst/-/kCGL16Bit
+C/econst/-/kCGL1Bit
+C/econst/-/kCGL24Bit
+C/econst/-/kCGL2Bit
+C/econst/-/kCGL32Bit
+C/econst/-/kCGL3Bit
+C/econst/-/kCGL48Bit
+C/econst/-/kCGL4Bit
+C/econst/-/kCGL5Bit
+C/econst/-/kCGL64Bit
+C/econst/-/kCGL6Bit
+C/econst/-/kCGL8Bit
+C/econst/-/kCGL96Bit
+C/econst/-/kCGLARGB12121212Bit
+C/econst/-/kCGLARGB1555Bit
+C/econst/-/kCGLARGB2101010Bit
+C/econst/-/kCGLARGB4444Bit
+C/econst/-/kCGLARGB8888Bit
+C/econst/-/kCGLBadAddress
+C/econst/-/kCGLBadAlloc
+C/econst/-/kCGLBadAttribute
+C/econst/-/kCGLBadCodeModule
+C/econst/-/kCGLBadConnection
+C/econst/-/kCGLBadContext
+C/econst/-/kCGLBadDisplay
+C/econst/-/kCGLBadDrawable
+C/econst/-/kCGLBadEnumeration
+C/econst/-/kCGLBadFullScreen
+C/econst/-/kCGLBadMatch
+C/econst/-/kCGLBadOffScreen
+C/econst/-/kCGLBadPixelFormat
+C/econst/-/kCGLBadProperty
+C/econst/-/kCGLBadRendererInfo
+C/econst/-/kCGLBadState
+C/econst/-/kCGLBadValue
+C/econst/-/kCGLBadWindow
+C/econst/-/kCGLCEDisplayListOptimization
+C/econst/-/kCGLCEMPEngine
+C/econst/-/kCGLCERasterization
+C/econst/-/kCGLCEStateValidation
+C/econst/-/kCGLCESurfaceBackingSize
+C/econst/-/kCGLCESwapRectangle
+C/econst/-/kCGLCPClientStorage
+C/econst/-/kCGLCPCurrentRendererID
+C/econst/-/kCGLCPDispatchTableSize
+C/econst/-/kCGLCPGPUFragmentProcessing
+C/econst/-/kCGLCPGPUVertexProcessing
+C/econst/-/kCGLCPHasDrawable
+C/econst/-/kCGLCPMPSwapsInFlight
+C/econst/-/kCGLCPReclaimResources
+C/econst/-/kCGLCPSurfaceBackingSize
+C/econst/-/kCGLCPSurfaceOpacity
+C/econst/-/kCGLCPSurfaceOrder
+C/econst/-/kCGLCPSurfaceSurfaceVolatile
+C/econst/-/kCGLCPSurfaceTexture
+C/econst/-/kCGLCPSwapInterval
+C/econst/-/kCGLCPSwapRectangle
+C/econst/-/kCGLDoubleBufferBit
+C/econst/-/kCGLGOClearFormatCache
+C/econst/-/kCGLGOFormatCacheSize
+C/econst/-/kCGLGOResetLibrary
+C/econst/-/kCGLGORetainRenderers
+C/econst/-/kCGLGOUseBuildCache
+C/econst/-/kCGLGOUseErrorHandler
+C/econst/-/kCGLineCapButt
+C/econst/-/kCGLineCapRound
+C/econst/-/kCGLineCapSquare
+C/econst/-/kCGLineJoinBevel
+C/econst/-/kCGLineJoinMiter
+C/econst/-/kCGLineJoinRound
+C/econst/-/kCGLMonoscopicBit
+C/econst/-/kCGLMultisampleBit
+C/econst/-/kCGLNoError
+C/econst/-/kCGLPFAAccelerated
+C/econst/-/kCGLPFAAcceleratedCompute
+C/econst/-/kCGLPFAAccumSize
+C/econst/-/kCGLPFAAllowOfflineRenderers
+C/econst/-/kCGLPFAAllRenderers
+C/econst/-/kCGLPFAAlphaSize
+C/econst/-/kCGLPFAAuxBuffers
+C/econst/-/kCGLPFAAuxDepthStencil
+C/econst/-/kCGLPFABackingStore
+C/econst/-/kCGLPFAClosestPolicy
+C/econst/-/kCGLPFAColorFloat
+C/econst/-/kCGLPFAColorSize
+C/econst/-/kCGLPFACompliant
+C/econst/-/kCGLPFADepthSize
+C/econst/-/kCGLPFADisplayMask
+C/econst/-/kCGLPFADoubleBuffer
+C/econst/-/kCGLPFAFullScreen
+C/econst/-/kCGLPFAMaximumPolicy
+C/econst/-/kCGLPFAMinimumPolicy
+C/econst/-/kCGLPFAMPSafe
+C/econst/-/kCGLPFAMultisample
+C/econst/-/kCGLPFAMultiScreen
+C/econst/-/kCGLPFANoRecovery
+C/econst/-/kCGLPFAOffScreen
+C/econst/-/kCGLPFAPBuffer
+C/econst/-/kCGLPFARemotePBuffer
+C/econst/-/kCGLPFARendererID
+C/econst/-/kCGLPFARobust
+C/econst/-/kCGLPFASampleAlpha
+C/econst/-/kCGLPFASampleBuffers
+C/econst/-/kCGLPFASamples
+C/econst/-/kCGLPFASingleRenderer
+C/econst/-/kCGLPFAStencilSize
+C/econst/-/kCGLPFAStereo
+C/econst/-/kCGLPFASupersample
+C/econst/-/kCGLPFAVirtualScreenCount
+C/econst/-/kCGLPFAWindow
+C/econst/-/kCGLRendererAppleSWID
+C/econst/-/kCGLRendererATIRadeon8500ID
+C/econst/-/kCGLRendererATIRadeon9700ID
+C/econst/-/kCGLRendererATIRadeonID
+C/econst/-/kCGLRendererATIRadeonX1000ID
+C/econst/-/kCGLRendererATIRadeonX2000ID
+C/econst/-/kCGLRendererATIRage128ID
+C/econst/-/kCGLRendererATIRageProID
+C/econst/-/kCGLRendererGeForce2MXID
+C/econst/-/kCGLRendererGeForce3ID
+C/econst/-/kCGLRendererGeForce8xxxID
+C/econst/-/kCGLRendererGeForceFXID
+C/econst/-/kCGLRendererGenericFloatID
+C/econst/-/kCGLRendererGenericID
+C/econst/-/kCGLRendererIDMatchingMask
+C/econst/-/kCGLRendererIntel900ID
+C/econst/-/kCGLRendererIntelX3100ID
+C/econst/-/kCGLRendererMesa3DFXID
+C/econst/-/kCGLRendererVTBladeXP2ID
+C/econst/-/kCGLRGB101010_A8Bit
+C/econst/-/kCGLRGB101010Bit
+C/econst/-/kCGLRGB121212Bit
+C/econst/-/kCGLRGB161616Bit
+C/econst/-/kCGLRGB444A8Bit
+C/econst/-/kCGLRGB444Bit
+C/econst/-/kCGLRGB555A8Bit
+C/econst/-/kCGLRGB555Bit
+C/econst/-/kCGLRGB565A8Bit
+C/econst/-/kCGLRGB565Bit
+C/econst/-/kCGLRGB888A8Bit
+C/econst/-/kCGLRGB888Bit
+C/econst/-/kCGLRGBA16161616Bit
+C/econst/-/kCGLRGBAFloat128Bit
+C/econst/-/kCGLRGBAFloat256Bit
+C/econst/-/kCGLRGBAFloat64Bit
+C/econst/-/kCGLRGBFloat128Bit
+C/econst/-/kCGLRGBFloat256Bit
+C/econst/-/kCGLRGBFloat64Bit
+C/econst/-/kCGLRPAccelerated
+C/econst/-/kCGLRPAcceleratedCompute
+C/econst/-/kCGLRPAccumModes
+C/econst/-/kCGLRPBackingStore
+C/econst/-/kCGLRPBufferModes
+C/econst/-/kCGLRPColorModes
+C/econst/-/kCGLRPCompliant
+C/econst/-/kCGLRPDepthModes
+C/econst/-/kCGLRPDisplayMask
+C/econst/-/kCGLRPFullScreen
+C/econst/-/kCGLRPGPUFragProcCapable
+C/econst/-/kCGLRPGPUVertProcCapable
+C/econst/-/kCGLRPMaxAuxBuffers
+C/econst/-/kCGLRPMaxSampleBuffers
+C/econst/-/kCGLRPMaxSamples
+C/econst/-/kCGLRPMPSafe
+C/econst/-/kCGLRPMultiScreen
+C/econst/-/kCGLRPOffScreen
+C/econst/-/kCGLRPOnline
+C/econst/-/kCGLRPRendererCount
+C/econst/-/kCGLRPRendererID
+C/econst/-/kCGLRPRobust
+C/econst/-/kCGLRPSampleAlpha
+C/econst/-/kCGLRPSampleModes
+C/econst/-/kCGLRPStencilModes
+C/econst/-/kCGLRPTextureMemory
+C/econst/-/kCGLRPVideoMemory
+C/econst/-/kCGLRPWindow
+C/econst/-/kCGLSingleBufferBit
+C/econst/-/kCGLStereoscopicBit
+C/econst/-/kCGLSupersampleBit
+C/econst/-/kCGMainMenuWindowLevelKey
+C/macro/-/kCGMaxDisplayReservationInterval
+C/econst/-/kCGMaximumWindowLevelKey
+C/econst/-/kCGMinimumWindowLevelKey
+C/econst/-/kCGModalPanelWindowLevelKey
+C/econst/-/kCGMouseButtonCenter
+C/econst/-/kCGMouseButtonLeft
+C/econst/-/kCGMouseButtonRight
+C/econst/-/kCGMouseEventButtonNumber
+C/econst/-/kCGMouseEventClickState
+C/econst/-/kCGMouseEventDeltaX
+C/econst/-/kCGMouseEventDeltaY
+C/econst/-/kCGMouseEventInstantMouser
+C/econst/-/kCGMouseEventNumber
+C/econst/-/kCGMouseEventPressure
+C/econst/-/kCGMouseEventSubtype
+C/econst/-/kCGNormalWindowLevelKey
+C/macro/-/kCGNullDirectDisplay
+C/macro/-/kCGNullWindowID
+C/econst/-/kCGNumberOfWindowLevelKeys
+C/macro/-/kCGNumReservedWindowLevels
+C/econst/-/kCGOverlayWindowLevelKey
+C/econst/-/kCGPathElementAddCurveToPoint
+C/econst/-/kCGPathElementAddLineToPoint
+C/econst/-/kCGPathElementAddQuadCurveToPoint
+C/econst/-/kCGPathElementCloseSubpath
+C/econst/-/kCGPathElementMoveToPoint
+C/econst/-/kCGPathEOFill
+C/econst/-/kCGPathEOFillStroke
+C/econst/-/kCGPathFill
+C/econst/-/kCGPathFillStroke
+C/econst/-/kCGPathStroke
+C/econst/-/kCGPatternTilingConstantSpacing
+C/econst/-/kCGPatternTilingConstantSpacingMinimalDistortion
+C/econst/-/kCGPatternTilingNoDistortion
+C/econst/-/kCGPDFArtBox
+C/econst/-/kCGPDFBleedBox
+C/data/-/kCGPDFContextAllowsCopying
+C/data/-/kCGPDFContextAllowsPrinting
+C/data/-/kCGPDFContextArtBox
+C/data/-/kCGPDFContextAuthor
+C/data/-/kCGPDFContextBleedBox
+C/data/-/kCGPDFContextCreator
+C/data/-/kCGPDFContextCropBox
+C/data/-/kCGPDFContextEncryptionKeyLength
+C/data/-/kCGPDFContextKeywords
+C/data/-/kCGPDFContextMediaBox
+C/data/-/kCGPDFContextOutputIntent
+C/data/-/kCGPDFContextOutputIntents
+C/data/-/kCGPDFContextOwnerPassword
+C/data/-/kCGPDFContextSubject
+C/data/-/kCGPDFContextTitle
+C/data/-/kCGPDFContextTrimBox
+C/data/-/kCGPDFContextUserPassword
+C/econst/-/kCGPDFCropBox
+C/econst/-/kCGPDFMediaBox
+C/econst/-/kCGPDFObjectTypeArray
+C/econst/-/kCGPDFObjectTypeBoolean
+C/econst/-/kCGPDFObjectTypeDictionary
+C/econst/-/kCGPDFObjectTypeInteger
+C/econst/-/kCGPDFObjectTypeName
+C/econst/-/kCGPDFObjectTypeNull
+C/econst/-/kCGPDFObjectTypeReal
+C/econst/-/kCGPDFObjectTypeStream
+C/econst/-/kCGPDFObjectTypeString
+C/econst/-/kCGPDFTrimBox
+C/data/-/kCGPDFXDestinationOutputProfile
+C/data/-/kCGPDFXInfo
+C/data/-/kCGPDFXOutputCondition
+C/data/-/kCGPDFXOutputConditionIdentifier
+C/data/-/kCGPDFXOutputIntentSubtype
+C/data/-/kCGPDFXRegistryName
+C/econst/-/kCGPopUpMenuWindowLevelKey
+C/econst/-/kCGRenderingIntentAbsoluteColorimetric
+C/econst/-/kCGRenderingIntentDefault
+C/econst/-/kCGRenderingIntentPerceptual
+C/econst/-/kCGRenderingIntentRelativeColorimetric
+C/econst/-/kCGRenderingIntentSaturation
+C/econst/-/kCGScreenSaverWindowLevelKey
+C/econst/-/kCGScreenUpdateOperationMove
+C/econst/-/kCGScreenUpdateOperationReducedDirtyRectangleCount
+C/econst/-/kCGScreenUpdateOperationRefresh
+C/econst/-/kCGScrollEventUnitLine
+C/econst/-/kCGScrollEventUnitPixel
+C/econst/-/kCGScrollWheelEventDeltaAxis1
+C/econst/-/kCGScrollWheelEventDeltaAxis2
+C/econst/-/kCGScrollWheelEventDeltaAxis3
+C/econst/-/kCGScrollWheelEventFixedPtDeltaAxis1
+C/econst/-/kCGScrollWheelEventFixedPtDeltaAxis2
+C/econst/-/kCGScrollWheelEventFixedPtDeltaAxis3
+C/econst/-/kCGScrollWheelEventInstantMouser
+C/econst/-/kCGScrollWheelEventIsContinuous
+C/econst/-/kCGScrollWheelEventPointDeltaAxis1
+C/econst/-/kCGScrollWheelEventPointDeltaAxis2
+C/econst/-/kCGScrollWheelEventPointDeltaAxis3
+C/macro/-/kCGSessionConsoleSetKey
+C/econst/-/kCGSessionEventTap
+C/macro/-/kCGSessionLoginDoneKey
+C/macro/-/kCGSessionOnConsoleKey
+C/macro/-/kCGSessionUserIDKey
+C/macro/-/kCGSessionUserNameKey
+C/econst/-/kCGStatusWindowLevelKey
+C/econst/-/kCGTabletEventDeviceID
+C/econst/-/kCGTabletEventPointButtons
+C/econst/-/kCGTabletEventPointPressure
+C/econst/-/kCGTabletEventPointX
+C/econst/-/kCGTabletEventPointY
+C/econst/-/kCGTabletEventPointZ
+C/econst/-/kCGTabletEventRotation
+C/econst/-/kCGTabletEventTangentialPressure
+C/econst/-/kCGTabletEventTiltX
+C/econst/-/kCGTabletEventTiltY
+C/econst/-/kCGTabletEventVendor1
+C/econst/-/kCGTabletEventVendor2
+C/econst/-/kCGTabletEventVendor3
+C/econst/-/kCGTabletProximityEventCapabilityMask
+C/econst/-/kCGTabletProximityEventDeviceID
+C/econst/-/kCGTabletProximityEventEnterProximity
+C/econst/-/kCGTabletProximityEventPointerID
+C/econst/-/kCGTabletProximityEventPointerType
+C/econst/-/kCGTabletProximityEventSystemTabletID
+C/econst/-/kCGTabletProximityEventTabletID
+C/econst/-/kCGTabletProximityEventVendorID
+C/econst/-/kCGTabletProximityEventVendorPointerSerialNumber
+C/econst/-/kCGTabletProximityEventVendorPointerType
+C/econst/-/kCGTabletProximityEventVendorUniqueID
+C/econst/-/kCGTailAppendEventTap
+C/econst/-/kCGTextClip
+C/econst/-/kCGTextFill
+C/econst/-/kCGTextFillClip
+C/econst/-/kCGTextFillStroke
+C/econst/-/kCGTextFillStrokeClip
+C/econst/-/kCGTextInvisible
+C/econst/-/kCGTextStroke
+C/econst/-/kCGTextStrokeClip
+C/econst/-/kCGTornOffMenuWindowLevelKey
+C/econst/-/kCGUtilityWindowLevelKey
+C/data/-/kCGWindowAlpha
+C/macro/-/kCGWindowBackingCFNumberType
+C/data/-/kCGWindowBackingLocationVideoMemory
+C/data/-/kCGWindowBounds
+C/macro/-/kCGWindowIDCFNumberType
+C/econst/-/kCGWindowImageBoundsIgnoreFraming
+C/econst/-/kCGWindowImageDefault
+C/econst/-/kCGWindowImageOnlyShadows
+C/econst/-/kCGWindowImageShouldBeOpaque
+C/data/-/kCGWindowIsOnscreen
+C/data/-/kCGWindowLayer
+C/econst/-/kCGWindowListExcludeDesktopElements
+C/econst/-/kCGWindowListOptionAll
+C/econst/-/kCGWindowListOptionIncludingWindow
+C/econst/-/kCGWindowListOptionOnScreenAboveWindow
+C/econst/-/kCGWindowListOptionOnScreenBelowWindow
+C/econst/-/kCGWindowListOptionOnScreenOnly
+C/data/-/kCGWindowMemoryUsage
+C/data/-/kCGWindowName
+C/data/-/kCGWindowNumber
+C/data/-/kCGWindowOwnerName
+C/data/-/kCGWindowOwnerPID
+C/macro/-/kCGWindowSharingCFNumberType
+C/econst/-/kCGWindowSharingNone
+C/econst/-/kCGWindowSharingReadOnly
+C/econst/-/kCGWindowSharingReadWrite
+C/data/-/kCGWindowSharingState
+C/data/-/kCGWindowStoreType
+C/data/-/kCGWindowWorkspace
+C/data/-/kCIApplyOptionDefinition
+C/data/-/kCIApplyOptionExtent
+C/data/-/kCIApplyOptionUserInfo
+C/data/-/kCIAttributeClass
+C/data/-/kCIAttributeDefault
+C/data/-/kCIAttributeDescription
+C/data/-/kCIAttributeDisplayName
+C/data/-/kCIAttributeFilterCategories
+C/data/-/kCIAttributeFilterDisplayName
+C/data/-/kCIAttributeFilterName
+C/data/-/kCIAttributeIdentity
+C/data/-/kCIAttributeMax
+C/data/-/kCIAttributeMin
+C/data/-/kCIAttributeName
+C/data/-/kCIAttributeReferenceDocumentation
+C/data/-/kCIAttributeSliderMax
+C/data/-/kCIAttributeSliderMin
+C/data/-/kCIAttributeType
+C/data/-/kCIAttributeTypeAngle
+C/data/-/kCIAttributeTypeBoolean
+C/data/-/kCIAttributeTypeCount
+C/data/-/kCIAttributeTypeDistance
+C/data/-/kCIAttributeTypeGradient
+C/data/-/kCIAttributeTypeInteger
+C/data/-/kCIAttributeTypeOffset
+C/data/-/kCIAttributeTypeOpaqueColor
+C/data/-/kCIAttributeTypePosition
+C/data/-/kCIAttributeTypePosition3
+C/data/-/kCIAttributeTypeRectangle
+C/data/-/kCIAttributeTypeScalar
+C/data/-/kCIAttributeTypeTime
+C/data/-/kCICategoryBlur
+C/data/-/kCICategoryBuiltIn
+C/data/-/kCICategoryColorAdjustment
+C/data/-/kCICategoryColorEffect
+C/data/-/kCICategoryCompositeOperation
+C/data/-/kCICategoryDistortionEffect
+C/data/-/kCICategoryFilterGenerator
+C/data/-/kCICategoryGenerator
+C/data/-/kCICategoryGeometryAdjustment
+C/data/-/kCICategoryGradient
+C/data/-/kCICategoryHalftoneEffect
+C/data/-/kCICategoryHighDynamicRange
+C/data/-/kCICategoryInterlaced
+C/data/-/kCICategoryNonSquarePixels
+C/data/-/kCICategoryReduction
+C/data/-/kCICategorySharpen
+C/data/-/kCICategoryStillImage
+C/data/-/kCICategoryStylize
+C/data/-/kCICategoryTileEffect
+C/data/-/kCICategoryTransition
+C/data/-/kCICategoryVideo
+C/data/-/kCIContextOutputColorSpace
+C/data/-/kCIContextUseSoftwareRenderer
+C/data/-/kCIContextWorkingColorSpace
+C/data/-/kCIFilterGeneratorExportedKey
+C/data/-/kCIFilterGeneratorExportedKeyName
+C/data/-/kCIFilterGeneratorExportedKeyTargetObject
+C/data/-/kCIFormatARGB8
+C/data/-/kCIFormatRGBA16
+C/data/-/kCIFormatRGBAf
+C/data/-/kCIImageColorSpace
+C/data/-/kCIImageProviderTileSize
+C/data/-/kCIImageProviderUserInfo
+C/data/-/kCIInputAllowDraftModeKey
+C/data/-/kCIInputAngleKey
+C/data/-/kCIInputAspectRatioKey
+C/data/-/kCIInputBackgroundImageKey
+C/data/-/kCIInputBiasKey
+C/data/-/kCIInputBoostKey
+C/data/-/kCIInputBoostShadowAmountKey
+C/data/-/kCIInputBrightnessKey
+C/data/-/kCIInputCenterKey
+C/data/-/kCIInputColorKey
+C/data/-/kCIInputContrastKey
+C/data/-/kCIInputDecoderVersionKey
+C/data/-/kCIInputEnableChromaticNoiseTrackingKey
+C/data/-/kCIInputEnableSharpeningKey
+C/data/-/kCIInputEVKey
+C/data/-/kCIInputExtentKey
+C/data/-/kCIInputGradientImageKey
+C/data/-/kCIInputIgnoreImageOrientationKey
+C/data/-/kCIInputImageKey
+C/data/-/kCIInputImageOrientationKey
+C/data/-/kCIInputIntensityKey
+C/data/-/kCIInputMaskImageKey
+C/data/-/kCIInputNeutralChromaticityXKey
+C/data/-/kCIInputNeutralChromaticityYKey
+C/data/-/kCIInputNeutralLocationKey
+C/data/-/kCIInputNeutralTemperatureKey
+C/data/-/kCIInputNeutralTintKey
+C/data/-/kCIInputRadiusKey
+C/data/-/kCIInputRefractionKey
+C/data/-/kCIInputSaturationKey
+C/data/-/kCIInputScaleFactorKey
+C/data/-/kCIInputScaleKey
+C/data/-/kCIInputShadingImageKey
+C/data/-/kCIInputSharpnessKey
+C/data/-/kCIInputTargetImageKey
+C/data/-/kCIInputTimeKey
+C/data/-/kCIInputTransformKey
+C/data/-/kCIInputWidthKey
+C/data/-/kCIOutputImageKey
+C/data/-/kCISamplerAffineMatrix
+C/data/-/kCISamplerFilterLinear
+C/data/-/kCISamplerFilterMode
+C/data/-/kCISamplerFilterNearest
+C/data/-/kCISamplerWrapBlack
+C/data/-/kCISamplerWrapClamp
+C/data/-/kCISamplerWrapMode
+C/data/-/kCISupportedDecoderVersionsKey
+C/data/-/kCIUIParameterSet
+C/data/-/kCIUISetAdvanced
+C/data/-/kCIUISetBasic
+C/data/-/kCIUISetDevelopment
+C/data/-/kCIUISetIntermediate
+C/data/-/kCLDistanceFilterNone
+C/econst/-/kClearTextPwdStr
+C/econst/-/kCLErrorDenied
+C/data/-/kCLErrorDomain
+C/econst/-/kCLErrorLocationUnknown
+C/data/-/kCLLocationAccuracyBest
+C/data/-/kCLLocationAccuracyHundredMeters
+C/data/-/kCLLocationAccuracyKilometer
+C/data/-/kCLLocationAccuracyNearestTenMeters
+C/data/-/kCLLocationAccuracyThreeKilometers
+C/econst/-/kCMMCheckBitmap
+C/econst/-/kCMMCheckColors
+C/econst/-/kCMMCheckPixMap
+C/econst/-/kCMMClose
+C/econst/-/kCMMConcatenateProfiles
+C/econst/-/kCMMConcatInit
+C/econst/-/kCMMFlattenProfile
+C/econst/-/kCMMGetIndNamedColorValue
+C/econst/-/kCMMGetInfo
+C/econst/-/kCMMGetNamedColorIndex
+C/econst/-/kCMMGetNamedColorInfo
+C/econst/-/kCMMGetNamedColorName
+C/econst/-/kCMMGetNamedColorValue
+C/econst/-/kCMMGetPS2ColorRendering
+C/econst/-/kCMMGetPS2ColorRenderingIntent
+C/econst/-/kCMMGetPS2ColorRenderingVMSize
+C/econst/-/kCMMGetPS2ColorSpace
+C/econst/-/kCMMInit
+C/econst/-/kCMMMatchBitmap
+C/econst/-/kCMMMatchColors
+C/econst/-/kCMMMatchPixMap
+C/econst/-/kCMMNewLinkProfile
+C/econst/-/kCMMOpen
+C/econst/-/kCMMUnflattenProfile
+C/econst/-/kCMMValidateProfile
+C/econst/-/kCMSAttrNone
+C/econst/-/kCMSAttrSigningTime
+C/econst/-/kCMSAttrSmimeCapabilities
+C/econst/-/kCMSAttrSmimeEncryptionKeyPrefs
+C/econst/-/kCMSAttrSmimeMSEncryptionKeyPrefs
+C/econst/-/kCMSCertificateChain
+C/econst/-/kCMSCertificateChainWithRoot
+C/econst/-/kCMSCertificateNone
+C/econst/-/kCMSCertificateSignerOnly
+C/econst/-/kCMSSignerInvalidCert
+C/econst/-/kCMSSignerInvalidIndex
+C/econst/-/kCMSSignerInvalidSignature
+C/econst/-/kCMSSignerNeedsDetachedContent
+C/econst/-/kCMSSignerUnsigned
+C/econst/-/kCMSSignerValid
+C/econst/-/kCodecFrameTypeDifference
+C/econst/-/kCodecFrameTypeKey
+C/econst/-/kCodecFrameTypeUnknown
+C/econst/-/kComponentAliasResourceType
+C/econst/-/kComponentCanDoSelect
+C/econst/-/kComponentCloseSelect
+C/econst/-/kComponentExecuteWiredActionSelect
+C/econst/-/kComponentGetMPWorkFunctionSelect
+C/econst/-/kComponentGetPublicResourceSelect
+C/econst/-/kComponentOpenSelect
+C/econst/-/kComponentPropertyCacheFlagIsDynamic
+C/econst/-/kComponentPropertyCacheFlagNotPersistent
+C/econst/-/kComponentPropertyCacheFlags
+C/econst/-/kComponentPropertyCacheSeed
+C/econst/-/kComponentPropertyClassPropertyInfo
+C/econst/-/kComponentPropertyInfoList
+C/econst/-/kComponentRegisterSelect
+C/econst/-/kComponentResourceType
+C/econst/-/kComponentTargetSelect
+C/econst/-/kComponentUnregisterSelect
+C/econst/-/kComponentVersionSelect
+C/econst/-/kControlDataBrowserEditTextKeyFilterTag
+C/econst/-/kControlDataBrowserEditTextValidationProcTag
+C/econst/-/kControlDataBrowserIncludesFrameAndFocusTag
+C/econst/-/kControlDataBrowserKeyFilterTag
+C/econst/-/kControlKindDataBrowser
+C/econst/-/kConverterPrimeMethod_None
+C/econst/-/kConverterPrimeMethod_Normal
+C/econst/-/kConverterPrimeMethod_Pre
+C/econst/-/kCoreEndianAppleEventManagerDomain
+C/econst/-/kCoreEndianResourceManagerDomain
+C/econst/-/kCSAcceptAllComponentsMode
+C/econst/-/kCSAcceptThreadSafeComponentsOnlyMode
+C/econst/-/kCSIdentityAuthorityNotAccessibleErr
+C/econst/-/kCSIdentityClassGroup
+C/econst/-/kCSIdentityClassUser
+C/econst/-/kCSIdentityCommitCompleted
+C/econst/-/kCSIdentityDeletedErr
+C/econst/-/kCSIdentityDuplicateFullNameErr
+C/econst/-/kCSIdentityDuplicatePosixNameErr
+C/econst/-/kCSIdentityFlagHidden
+C/econst/-/kCSIdentityFlagNone
+C/econst/-/kCSIdentityInvalidFullNameErr
+C/econst/-/kCSIdentityInvalidPosixNameErr
+C/econst/-/kCSIdentityPermissionErr
+C/econst/-/kCSIdentityQueryEventErrorOccurred
+C/econst/-/kCSIdentityQueryEventResultsAdded
+C/econst/-/kCSIdentityQueryEventResultsChanged
+C/econst/-/kCSIdentityQueryEventResultsRemoved
+C/econst/-/kCSIdentityQueryEventSearchPhaseFinished
+C/econst/-/kCSIdentityQueryGenerateUpdateEvents
+C/econst/-/kCSIdentityQueryIncludeHiddenIdentities
+C/econst/-/kCSIdentityQueryStringBeginsWith
+C/econst/-/kCSIdentityQueryStringEquals
+C/econst/-/kCSIdentityUnknownAuthorityErr
+C/econst/-/kCTAdobeCNS1CharacterCollection
+C/econst/-/kCTAdobeGB1CharacterCollection
+C/econst/-/kCTAdobeJapan1CharacterCollection
+C/econst/-/kCTAdobeJapan2CharacterCollection
+C/econst/-/kCTAdobeKorea1CharacterCollection
+C/econst/-/kCTCenterTextAlignment
+C/data/-/kCTCharacterShapeAttributeName
+C/econst/-/kCTFontAlertHeaderFontType
+C/econst/-/kCTFontApplicationFontType
+C/data/-/kCTFontAttributeName
+C/data/-/kCTFontBaselineAdjustAttribute
+C/econst/-/kCTFontBoldTrait
+C/data/-/kCTFontCascadeListAttribute
+C/data/-/kCTFontCharacterSetAttribute
+C/econst/-/kCTFontClarendonSerifsClass
+C/data/-/kCTFontClassMaskShift
+C/econst/-/kCTFontClassMaskTrait
+C/data/-/kCTFontCollectionRemoveDuplicatesOption
+C/econst/-/kCTFontCondensedTrait
+C/econst/-/kCTFontControlContentFontType
+C/data/-/kCTFontCopyrightNameKey
+C/econst/-/kCTFontDefaultOrientation
+C/data/-/kCTFontDescriptionNameKey
+C/data/-/kCTFontDesignerNameKey
+C/data/-/kCTFontDesignerURLNameKey
+C/data/-/kCTFontDisplayNameAttribute
+C/econst/-/kCTFontEmphasizedSystemDetailFontType
+C/econst/-/kCTFontEmphasizedSystemFontType
+C/data/-/kCTFontEnabledAttribute
+C/econst/-/kCTFontExpandedTrait
+C/data/-/kCTFontFamilyNameAttribute
+C/data/-/kCTFontFamilyNameKey
+C/data/-/kCTFontFeaturesAttribute
+C/data/-/kCTFontFeatureSelectorDefaultKey
+C/data/-/kCTFontFeatureSelectorIdentifierKey
+C/data/-/kCTFontFeatureSelectorNameKey
+C/data/-/kCTFontFeatureSelectorSettingKey
+C/data/-/kCTFontFeatureSettingsAttribute
+C/data/-/kCTFontFeatureTypeExclusiveKey
+C/data/-/kCTFontFeatureTypeIdentifierKey
+C/data/-/kCTFontFeatureTypeNameKey
+C/data/-/kCTFontFeatureTypeSelectorsKey
+C/data/-/kCTFontFixedAdvanceAttribute
+C/data/-/kCTFontFormatAttribute
+C/econst/-/kCTFontFormatBitmap
+C/econst/-/kCTFontFormatOpenTypePostScript
+C/econst/-/kCTFontFormatOpenTypeTrueType
+C/econst/-/kCTFontFormatPostScript
+C/econst/-/kCTFontFormatTrueType
+C/econst/-/kCTFontFormatUnrecognized
+C/econst/-/kCTFontFreeformSerifsClass
+C/data/-/kCTFontFullNameKey
+C/econst/-/kCTFontHorizontalOrientation
+C/econst/-/kCTFontItalicTrait
+C/econst/-/kCTFontLabelFontType
+C/data/-/kCTFontLanguagesAttribute
+C/data/-/kCTFontLicenseNameKey
+C/data/-/kCTFontLicenseURLNameKey
+C/data/-/kCTFontMacintoshEncodingsAttribute
+C/econst/-/kCTFontManagerAutoActivationDefault
+C/econst/-/kCTFontManagerAutoActivationDisabled
+C/econst/-/kCTFontManagerAutoActivationEnabled
+C/econst/-/kCTFontManagerAutoActivationPromptUser
+C/data/-/kCTFontManagerBundleIdentifier
+C/econst/-/kCTFontManagerErrorAlreadyRegistered
+C/data/-/kCTFontManagerErrorDomain
+C/econst/-/kCTFontManagerErrorFileNotFound
+C/data/-/kCTFontManagerErrorFontURLsKey
+C/econst/-/kCTFontManagerErrorInsufficientPermissions
+C/econst/-/kCTFontManagerErrorInUse
+C/econst/-/kCTFontManagerErrorInvalidFontData
+C/econst/-/kCTFontManagerErrorNotRegistered
+C/econst/-/kCTFontManagerErrorSystemRequired
+C/econst/-/kCTFontManagerErrorUnrecognizedFormat
+C/data/-/kCTFontManagerRegisteredFontsChangedNotification
+C/econst/-/kCTFontManagerScopeNone
+C/econst/-/kCTFontManagerScopeProcess
+C/econst/-/kCTFontManagerScopeSession
+C/econst/-/kCTFontManagerScopeUser
+C/data/-/kCTFontManufacturerNameKey
+C/data/-/kCTFontMatrixAttribute
+C/econst/-/kCTFontMenuItemCmdKeyFontType
+C/econst/-/kCTFontMenuItemFontType
+C/econst/-/kCTFontMenuItemMarkFontType
+C/econst/-/kCTFontMenuTitleFontType
+C/econst/-/kCTFontMessageFontType
+C/econst/-/kCTFontMiniEmphasizedSystemFontType
+C/econst/-/kCTFontMiniSystemFontType
+C/econst/-/kCTFontModernSerifsClass
+C/econst/-/kCTFontMonoSpaceTrait
+C/data/-/kCTFontNameAttribute
+C/econst/-/kCTFontNoFontType
+C/econst/-/kCTFontOldStyleSerifsClass
+C/econst/-/kCTFontOptionsDefault
+C/econst/-/kCTFontOptionsPreferSystemFont
+C/econst/-/kCTFontOptionsPreventAutoActivation
+C/data/-/kCTFontOrientationAttribute
+C/econst/-/kCTFontOrnamentalsClass
+C/econst/-/kCTFontPaletteFontType
+C/data/-/kCTFontPostScriptCIDNameKey
+C/data/-/kCTFontPostScriptNameKey
+C/data/-/kCTFontPriorityAttribute
+C/econst/-/kCTFontPriorityComputer
+C/econst/-/kCTFontPriorityDynamic
+C/econst/-/kCTFontPriorityNetwork
+C/econst/-/kCTFontPriorityProcess
+C/econst/-/kCTFontPrioritySystem
+C/econst/-/kCTFontPriorityUser
+C/econst/-/kCTFontPushButtonFontType
+C/data/-/kCTFontRegistrationScopeAttribute
+C/data/-/kCTFontSampleTextNameKey
+C/econst/-/kCTFontSansSerifClass
+C/econst/-/kCTFontScriptsClass
+C/data/-/kCTFontSizeAttribute
+C/econst/-/kCTFontSlabSerifsClass
+C/data/-/kCTFontSlantTrait
+C/econst/-/kCTFontSmallEmphasizedSystemFontType
+C/econst/-/kCTFontSmallSystemFontType
+C/econst/-/kCTFontSmallToolbarFontType
+C/data/-/kCTFontStyleNameAttribute
+C/data/-/kCTFontStyleNameKey
+C/data/-/kCTFontSubFamilyNameKey
+C/econst/-/kCTFontSymbolicClass
+C/data/-/kCTFontSymbolicTrait
+C/econst/-/kCTFontSystemDetailFontType
+C/econst/-/kCTFontSystemFontType
+C/econst/-/kCTFontTableAcnt
+C/econst/-/kCTFontTableAvar
+C/econst/-/kCTFontTableBASE
+C/econst/-/kCTFontTableBdat
+C/econst/-/kCTFontTableBhed
+C/econst/-/kCTFontTableBloc
+C/econst/-/kCTFontTableBsln
+C/econst/-/kCTFontTableCFF
+C/econst/-/kCTFontTableCmap
+C/econst/-/kCTFontTableCvar
+C/econst/-/kCTFontTableCvt
+C/econst/-/kCTFontTableDSIG
+C/econst/-/kCTFontTableEBDT
+C/econst/-/kCTFontTableEBLC
+C/econst/-/kCTFontTableEBSC
+C/econst/-/kCTFontTableFdsc
+C/econst/-/kCTFontTableFeat
+C/econst/-/kCTFontTableFmtx
+C/econst/-/kCTFontTableFpgm
+C/econst/-/kCTFontTableFvar
+C/econst/-/kCTFontTableGasp
+C/econst/-/kCTFontTableGDEF
+C/econst/-/kCTFontTableGlyf
+C/econst/-/kCTFontTableGPOS
+C/econst/-/kCTFontTableGSUB
+C/econst/-/kCTFontTableGvar
+C/econst/-/kCTFontTableHdmx
+C/econst/-/kCTFontTableHead
+C/econst/-/kCTFontTableHhea
+C/econst/-/kCTFontTableHmtx
+C/econst/-/kCTFontTableHsty
+C/econst/-/kCTFontTableJSTF
+C/econst/-/kCTFontTableJust
+C/econst/-/kCTFontTableKern
+C/econst/-/kCTFontTableLcar
+C/econst/-/kCTFontTableLoca
+C/econst/-/kCTFontTableLTSH
+C/econst/-/kCTFontTableMaxp
+C/econst/-/kCTFontTableMort
+C/econst/-/kCTFontTableMorx
+C/econst/-/kCTFontTableName
+C/econst/-/kCTFontTableOpbd
+C/econst/-/kCTFontTableOptionExcludeSynthetic
+C/econst/-/kCTFontTableOptionNoOptions
+C/econst/-/kCTFontTableOS2
+C/econst/-/kCTFontTablePCLT
+C/econst/-/kCTFontTablePost
+C/econst/-/kCTFontTablePrep
+C/econst/-/kCTFontTableProp
+C/econst/-/kCTFontTableTrak
+C/econst/-/kCTFontTableVDMX
+C/econst/-/kCTFontTableVhea
+C/econst/-/kCTFontTableVmtx
+C/econst/-/kCTFontTableVORG
+C/econst/-/kCTFontTableZapf
+C/econst/-/kCTFontToolbarFontType
+C/econst/-/kCTFontToolTipFontType
+C/data/-/kCTFontTrademarkNameKey
+C/data/-/kCTFontTraitsAttribute
+C/econst/-/kCTFontTransitionalSerifsClass
+C/econst/-/kCTFontUIOptimizedTrait
+C/data/-/kCTFontUniqueNameKey
+C/econst/-/kCTFontUnknownClass
+C/data/-/kCTFontURLAttribute
+C/econst/-/kCTFontUserFixedPitchFontType
+C/econst/-/kCTFontUserFontType
+C/econst/-/kCTFontUtilityWindowTitleFontType
+C/data/-/kCTFontVariationAttribute
+C/data/-/kCTFontVariationAxisDefaultValueKey
+C/data/-/kCTFontVariationAxisIdentifierKey
+C/data/-/kCTFontVariationAxisMaximumValueKey
+C/data/-/kCTFontVariationAxisMinimumValueKey
+C/data/-/kCTFontVariationAxisNameKey
+C/data/-/kCTFontVendorURLNameKey
+C/data/-/kCTFontVersionNameKey
+C/econst/-/kCTFontVerticalOrientation
+C/econst/-/kCTFontVerticalTrait
+C/econst/-/kCTFontViewsFontType
+C/data/-/kCTFontWeightTrait
+C/data/-/kCTFontWidthTrait
+C/econst/-/kCTFontWindowTitleFontType
+C/data/-/kCTForegroundColorAttributeName
+C/data/-/kCTForegroundColorFromContextAttributeName
+C/data/-/kCTFrameProgressionAttributeName
+C/econst/-/kCTFrameProgressionRightToLeft
+C/econst/-/kCTFrameProgressionTopToBottom
+C/data/-/kCTGlyphInfoAttributeName
+C/econst/-/kCTIdentityMappingCharacterCollection
+C/econst/-/kCTJustifiedTextAlignment
+C/data/-/kCTKernAttributeName
+C/econst/-/kCTLeftTextAlignment
+C/data/-/kCTLigatureAttributeName
+C/econst/-/kCTLineBreakByCharWrapping
+C/econst/-/kCTLineBreakByClipping
+C/econst/-/kCTLineBreakByTruncatingHead
+C/econst/-/kCTLineBreakByTruncatingMiddle
+C/econst/-/kCTLineBreakByTruncatingTail
+C/econst/-/kCTLineBreakByWordWrapping
+C/econst/-/kCTLineTruncationEnd
+C/econst/-/kCTLineTruncationMiddle
+C/econst/-/kCTLineTruncationStart
+C/econst/-/kCTNaturalTextAlignment
+C/data/-/kCTParagraphStyleAttributeName
+C/econst/-/kCTParagraphStyleSpecifierAlignment
+C/econst/-/kCTParagraphStyleSpecifierBaseWritingDirection
+C/econst/-/kCTParagraphStyleSpecifierCount
+C/econst/-/kCTParagraphStyleSpecifierDefaultTabInterval
+C/econst/-/kCTParagraphStyleSpecifierFirstLineHeadIndent
+C/econst/-/kCTParagraphStyleSpecifierHeadIndent
+C/econst/-/kCTParagraphStyleSpecifierLineBreakMode
+C/econst/-/kCTParagraphStyleSpecifierLineHeightMultiple
+C/econst/-/kCTParagraphStyleSpecifierLineSpacing
+C/econst/-/kCTParagraphStyleSpecifierMaximumLineHeight
+C/econst/-/kCTParagraphStyleSpecifierMinimumLineHeight
+C/econst/-/kCTParagraphStyleSpecifierParagraphSpacing
+C/econst/-/kCTParagraphStyleSpecifierParagraphSpacingBefore
+C/econst/-/kCTParagraphStyleSpecifierTabStops
+C/econst/-/kCTParagraphStyleSpecifierTailIndent
+C/econst/-/kCTRightTextAlignment
+C/econst/-/kCTRunStatusHasNonIdentityMatrix
+C/econst/-/kCTRunStatusNonMonotonic
+C/econst/-/kCTRunStatusNoStatus
+C/econst/-/kCTRunStatusRightToLeft
+C/data/-/kCTStrokeColorAttributeName
+C/data/-/kCTStrokeWidthAttributeName
+C/data/-/kCTSuperscriptAttributeName
+C/data/-/kCTTabColumnTerminatorsAttributeName
+C/data/-/kCTTypesetterOptionDisableBidiProcessing
+C/data/-/kCTTypesetterOptionForcedEmbeddingLevel
+C/data/-/kCTUnderlineColorAttributeName
+C/econst/-/kCTUnderlinePatternDash
+C/econst/-/kCTUnderlinePatternDashDot
+C/econst/-/kCTUnderlinePatternDashDotDot
+C/econst/-/kCTUnderlinePatternDot
+C/econst/-/kCTUnderlinePatternSolid
+C/data/-/kCTUnderlineStyleAttributeName
+C/econst/-/kCTUnderlineStyleDouble
+C/econst/-/kCTUnderlineStyleNone
+C/econst/-/kCTUnderlineStyleSingle
+C/econst/-/kCTUnderlineStyleThick
+C/macro/-/kCTVersionNumber10_5
+C/macro/-/kCTVersionNumber10_5_2
+C/macro/-/kCTVersionNumber10_5_3
+C/macro/-/kCTVersionNumber10_5_5
+C/macro/-/kCTVersionNumber10_6
+C/data/-/kCTVerticalFormsAttributeName
+C/econst/-/kCTWritingDirectionLeftToRight
+C/econst/-/kCTWritingDirectionNatural
+C/econst/-/kCTWritingDirectionRightToLeft
+C/econst/-/kCUPSPPDDomain
+C/econst/-/kCurrentProcess
+C/econst/-/kCVAttachmentMode_ShouldNotPropagate
+C/econst/-/kCVAttachmentMode_ShouldPropagate
+C/data/-/kCVBufferMovieTimeKey
+C/data/-/kCVBufferNonPropagatedAttachmentsKey
+C/data/-/kCVBufferPropagatedAttachmentsKey
+C/data/-/kCVBufferTimeScaleKey
+C/data/-/kCVBufferTimeValueKey
+C/data/-/kCVImageBufferCGColorSpaceKey
+C/data/-/kCVImageBufferChromaLocation_Bottom
+C/data/-/kCVImageBufferChromaLocation_BottomLeft
+C/data/-/kCVImageBufferChromaLocation_Center
+C/data/-/kCVImageBufferChromaLocation_DV420
+C/data/-/kCVImageBufferChromaLocation_Left
+C/data/-/kCVImageBufferChromaLocation_Top
+C/data/-/kCVImageBufferChromaLocation_TopLeft
+C/data/-/kCVImageBufferChromaLocationBottomFieldKey
+C/data/-/kCVImageBufferChromaLocationTopFieldKey
+C/data/-/kCVImageBufferChromaSubsampling_411
+C/data/-/kCVImageBufferChromaSubsampling_420
+C/data/-/kCVImageBufferChromaSubsampling_422
+C/data/-/kCVImageBufferChromaSubsamplingKey
+C/data/-/kCVImageBufferCleanApertureHeightKey
+C/data/-/kCVImageBufferCleanApertureHorizontalOffsetKey
+C/data/-/kCVImageBufferCleanApertureKey
+C/data/-/kCVImageBufferCleanApertureVerticalOffsetKey
+C/data/-/kCVImageBufferCleanApertureWidthKey
+C/data/-/kCVImageBufferColorPrimaries_EBU_3213
+C/data/-/kCVImageBufferColorPrimaries_ITU_R_709_2
+C/data/-/kCVImageBufferColorPrimaries_SMPTE_C
+C/data/-/kCVImageBufferColorPrimariesKey
+C/data/-/kCVImageBufferDisplayDimensionsKey
+C/data/-/kCVImageBufferDisplayHeightKey
+C/data/-/kCVImageBufferDisplayWidthKey
+C/data/-/kCVImageBufferFieldCountKey
+C/data/-/kCVImageBufferFieldDetailKey
+C/data/-/kCVImageBufferFieldDetailSpatialFirstLineEarly
+C/data/-/kCVImageBufferFieldDetailSpatialFirstLineLate
+C/data/-/kCVImageBufferFieldDetailTemporalBottomFirst
+C/data/-/kCVImageBufferFieldDetailTemporalTopFirst
+C/data/-/kCVImageBufferGammaLevelKey
+C/data/-/kCVImageBufferPixelAspectRatioHorizontalSpacingKey
+C/data/-/kCVImageBufferPixelAspectRatioKey
+C/data/-/kCVImageBufferPixelAspectRatioVerticalSpacingKey
+C/data/-/kCVImageBufferPreferredCleanApertureKey
+C/data/-/kCVImageBufferTransferFunction_EBU_3213
+C/data/-/kCVImageBufferTransferFunction_ITU_R_709_2
+C/data/-/kCVImageBufferTransferFunction_SMPTE_240M_1995
+C/data/-/kCVImageBufferTransferFunction_SMPTE_C
+C/data/-/kCVImageBufferTransferFunction_UseGamma
+C/data/-/kCVImageBufferTransferFunctionKey
+C/data/-/kCVImageBufferYCbCrMatrix_ITU_R_601_4
+C/data/-/kCVImageBufferYCbCrMatrix_ITU_R_709_2
+C/data/-/kCVImageBufferYCbCrMatrix_SMPTE_240M_1995
+C/data/-/kCVImageBufferYCbCrMatrixKey
+C/data/-/kCVIndefiniteTime
+C/data/-/kCVOpenGLBufferHeight
+C/data/-/kCVOpenGLBufferInternalFormat
+C/data/-/kCVOpenGLBufferMaximumMipmapLevel
+C/data/-/kCVOpenGLBufferPoolMaximumBufferAgeKey
+C/data/-/kCVOpenGLBufferPoolMinimumBufferCountKey
+C/data/-/kCVOpenGLBufferTarget
+C/data/-/kCVOpenGLBufferWidth
+C/data/-/kCVPixelBufferBytesPerRowAlignmentKey
+C/data/-/kCVPixelBufferCGBitmapContextCompatibilityKey
+C/data/-/kCVPixelBufferCGImageCompatibilityKey
+C/data/-/kCVPixelBufferExtendedPixelsBottomKey
+C/data/-/kCVPixelBufferExtendedPixelsLeftKey
+C/data/-/kCVPixelBufferExtendedPixelsRightKey
+C/data/-/kCVPixelBufferExtendedPixelsTopKey
+C/data/-/kCVPixelBufferHeightKey
+C/data/-/kCVPixelBufferIOSurfacePropertiesKey
+C/econst/-/kCVPixelBufferLock_ReadOnly
+C/data/-/kCVPixelBufferMemoryAllocatorKey
+C/data/-/kCVPixelBufferOpenGLCompatibilityKey
+C/data/-/kCVPixelBufferPixelFormatTypeKey
+C/data/-/kCVPixelBufferPlaneAlignmentKey
+C/data/-/kCVPixelBufferPoolMaximumBufferAgeKey
+C/data/-/kCVPixelBufferPoolMinimumBufferCountKey
+C/data/-/kCVPixelBufferWidthKey
+C/data/-/kCVPixelFormatBitsPerBlock
+C/data/-/kCVPixelFormatBlackBlock
+C/data/-/kCVPixelFormatBlockHeight
+C/data/-/kCVPixelFormatBlockHorizontalAlignment
+C/data/-/kCVPixelFormatBlockVerticalAlignment
+C/data/-/kCVPixelFormatBlockWidth
+C/data/-/kCVPixelFormatCGBitmapContextCompatibility
+C/data/-/kCVPixelFormatCGBitmapInfo
+C/data/-/kCVPixelFormatCGImageCompatibility
+C/data/-/kCVPixelFormatCodecType
+C/data/-/kCVPixelFormatConstant
+C/data/-/kCVPixelFormatFillExtendedPixelsCallback
+C/data/-/kCVPixelFormatFourCC
+C/data/-/kCVPixelFormatHorizontalSubsampling
+C/data/-/kCVPixelFormatName
+C/data/-/kCVPixelFormatOpenGLCompatibility
+C/data/-/kCVPixelFormatOpenGLFormat
+C/data/-/kCVPixelFormatOpenGLInternalFormat
+C/data/-/kCVPixelFormatOpenGLType
+C/data/-/kCVPixelFormatPlanes
+C/data/-/kCVPixelFormatQDCompatibility
+C/econst/-/kCVPixelFormatType_16BE555
+C/econst/-/kCVPixelFormatType_16BE565
+C/econst/-/kCVPixelFormatType_16Gray
+C/econst/-/kCVPixelFormatType_16LE555
+C/econst/-/kCVPixelFormatType_16LE5551
+C/econst/-/kCVPixelFormatType_16LE565
+C/econst/-/kCVPixelFormatType_1IndexedGray_WhiteIsZero
+C/econst/-/kCVPixelFormatType_1Monochrome
+C/econst/-/kCVPixelFormatType_24BGR
+C/econst/-/kCVPixelFormatType_24RGB
+C/econst/-/kCVPixelFormatType_2Indexed
+C/econst/-/kCVPixelFormatType_2IndexedGray_WhiteIsZero
+C/econst/-/kCVPixelFormatType_32ABGR
+C/econst/-/kCVPixelFormatType_32AlphaGray
+C/econst/-/kCVPixelFormatType_32ARGB
+C/econst/-/kCVPixelFormatType_32BGRA
+C/econst/-/kCVPixelFormatType_32RGBA
+C/econst/-/kCVPixelFormatType_420YpCbCr8Planar
+C/econst/-/kCVPixelFormatType_422YpCbCr10
+C/econst/-/kCVPixelFormatType_422YpCbCr16
+C/econst/-/kCVPixelFormatType_422YpCbCr8
+C/econst/-/kCVPixelFormatType_422YpCbCr_4A_8BiPlanar
+C/econst/-/kCVPixelFormatType_4444YpCbCrA8
+C/econst/-/kCVPixelFormatType_4444YpCbCrA8R
+C/econst/-/kCVPixelFormatType_444YpCbCr10
+C/econst/-/kCVPixelFormatType_444YpCbCr8
+C/econst/-/kCVPixelFormatType_48RGB
+C/econst/-/kCVPixelFormatType_4Indexed
+C/econst/-/kCVPixelFormatType_4IndexedGray_WhiteIsZero
+C/econst/-/kCVPixelFormatType_64ARGB
+C/econst/-/kCVPixelFormatType_8Indexed
+C/econst/-/kCVPixelFormatType_8IndexedGray_WhiteIsZero
+C/data/-/kCVPixelFormatVerticalSubsampling
+C/econst/-/kCVReturnAllocationFailed
+C/econst/-/kCVReturnDisplayLinkAlreadyRunning
+C/econst/-/kCVReturnDisplayLinkCallbacksNotSet
+C/econst/-/kCVReturnDisplayLinkNotRunning
+C/econst/-/kCVReturnError
+C/econst/-/kCVReturnFirst
+C/econst/-/kCVReturnInvalidArgument
+C/econst/-/kCVReturnInvalidDisplay
+C/econst/-/kCVReturnInvalidPixelBufferAttributes
+C/econst/-/kCVReturnInvalidPixelFormat
+C/econst/-/kCVReturnInvalidPoolAttributes
+C/econst/-/kCVReturnInvalidSize
+C/econst/-/kCVReturnLast
+C/econst/-/kCVReturnPixelBufferNotOpenGLCompatible
+C/econst/-/kCVReturnPoolAllocationFailed
+C/econst/-/kCVReturnSuccess
+C/econst/-/kCVSMPTETimeRunning
+C/econst/-/kCVSMPTETimeType24
+C/econst/-/kCVSMPTETimeType25
+C/econst/-/kCVSMPTETimeType2997
+C/econst/-/kCVSMPTETimeType2997Drop
+C/econst/-/kCVSMPTETimeType30
+C/econst/-/kCVSMPTETimeType30Drop
+C/econst/-/kCVSMPTETimeType5994
+C/econst/-/kCVSMPTETimeType60
+C/econst/-/kCVSMPTETimeValid
+C/econst/-/kCVTimeIsIndefinite
+C/econst/-/kCVTimeStampBottomField
+C/econst/-/kCVTimeStampHostTimeValid
+C/econst/-/kCVTimeStampIsInterlaced
+C/econst/-/kCVTimeStampRateScalarValid
+C/econst/-/kCVTimeStampSMPTETimeValid
+C/econst/-/kCVTimeStampTopField
+C/econst/-/kCVTimeStampVideoHostTimeValid
+C/econst/-/kCVTimeStampVideoRefreshPeriodValid
+C/econst/-/kCVTimeStampVideoTimeValid
+C/data/-/kCVZeroTime
+C/data/-/kCWAssocKey8021XProfile
+C/data/-/kCWAssocKeyPassphrase
+C/data/-/kCWBSSIDDidChangeNotification
+C/data/-/kCWCountryCodeDidChangeNotification
+C/data/-/kCWErrorDomain
+C/data/-/kCWIBSSKeyChannel
+C/data/-/kCWIBSSKeyPassphrase
+C/data/-/kCWIBSSKeySSID
+C/data/-/kCWLinkDidChangeNotification
+C/data/-/kCWModeDidChangeNotification
+C/data/-/kCWPowerDidChangeNotification
+C/data/-/kCWScanKeyBSSID
+C/data/-/kCWScanKeyDwellTime
+C/data/-/kCWScanKeyMerge
+C/data/-/kCWScanKeyRestTime
+C/data/-/kCWScanKeyScanType
+C/data/-/kCWScanKeySSID
+C/data/-/kCWSSIDDidChangeNotification
+C/econst/DADiskClaimOptions/kDADiskClaimOptionDefault
+C/data/-/kDADiskDescriptionBusNameKey
+C/data/-/kDADiskDescriptionBusPathKey
+C/data/-/kDADiskDescriptionDeviceGUIDKey
+C/data/-/kDADiskDescriptionDeviceInternalKey
+C/data/-/kDADiskDescriptionDeviceModelKey
+C/data/-/kDADiskDescriptionDevicePathKey
+C/data/-/kDADiskDescriptionDeviceProtocolKey
+C/data/-/kDADiskDescriptionDeviceRevisionKey
+C/data/-/kDADiskDescriptionDeviceUnitKey
+C/data/-/kDADiskDescriptionDeviceVendorKey
+C/data/-/kDADiskDescriptionMatchMediaUnformatted
+C/data/-/kDADiskDescriptionMatchMediaWhole
+C/data/-/kDADiskDescriptionMatchVolumeMountable
+C/data/-/kDADiskDescriptionMatchVolumeUnrecognized
+C/data/-/kDADiskDescriptionMediaBlockSizeKey
+C/data/-/kDADiskDescriptionMediaBSDMajorKey
+C/data/-/kDADiskDescriptionMediaBSDMinorKey
+C/data/-/kDADiskDescriptionMediaBSDNameKey
+C/data/-/kDADiskDescriptionMediaBSDUnitKey
+C/data/-/kDADiskDescriptionMediaContentKey
+C/data/-/kDADiskDescriptionMediaEjectableKey
+C/data/-/kDADiskDescriptionMediaIconKey
+C/data/-/kDADiskDescriptionMediaKindKey
+C/data/-/kDADiskDescriptionMediaLeafKey
+C/data/-/kDADiskDescriptionMediaNameKey
+C/data/-/kDADiskDescriptionMediaPathKey
+C/data/-/kDADiskDescriptionMediaRemovableKey
+C/data/-/kDADiskDescriptionMediaSizeKey
+C/data/-/kDADiskDescriptionMediaTypeKey
+C/data/-/kDADiskDescriptionMediaUUIDKey
+C/data/-/kDADiskDescriptionMediaWholeKey
+C/data/-/kDADiskDescriptionMediaWritableKey
+C/data/-/kDADiskDescriptionVolumeKindKey
+C/data/-/kDADiskDescriptionVolumeMountableKey
+C/data/-/kDADiskDescriptionVolumeNameKey
+C/data/-/kDADiskDescriptionVolumeNetworkKey
+C/data/-/kDADiskDescriptionVolumePathKey
+C/data/-/kDADiskDescriptionVolumeUUIDKey
+C/data/-/kDADiskDescriptionWatchVolumeName
+C/data/-/kDADiskDescriptionWatchVolumePath
+C/econst/DADiskEjectOptions/kDADiskEjectOptionDefault
+C/econst/DADiskMountOptions/kDADiskMountOptionDefault
+C/econst/DADiskMountOptions/kDADiskMountOptionWhole
+C/econst/DADiskOptions/kDADiskOptionDefault
+C/econst/DADiskOptions/kDADiskOptionEjectUponLogout
+C/econst/DADiskOptions/kDADiskOptionMountAutomatic
+C/econst/DADiskOptions/kDADiskOptionMountAutomaticNoDefer
+C/econst/DADiskOptions/kDADiskOptionPrivate
+C/econst/DADiskRenameOptions/kDADiskRenameOptionDefault
+C/econst/DADiskUnmountOptions/kDADiskUnmountOptionDefault
+C/econst/DADiskUnmountOptions/kDADiskUnmountOptionForce
+C/econst/DADiskUnmountOptions/kDADiskUnmountOptionWhole
+C/econst/-/kDataBrowserAlwaysExtendSelection
+C/econst/-/kDataBrowserAttributeColumnViewResizeWindow
+C/econst/-/kDataBrowserAttributeListViewAlternatingRowColors
+C/econst/-/kDataBrowserAttributeListViewDrawColumnDividers
+C/econst/-/kDataBrowserAttributeNone
+C/econst/-/kDataBrowserCheckboxTriState
+C/econst/-/kDataBrowserCheckboxType
+C/econst/-/kDataBrowserClientPropertyFlagsMask
+C/econst/-/kDataBrowserClientPropertyFlagsOffset
+C/econst/-/kDataBrowserCmdTogglesSelection
+C/econst/-/kDataBrowserColumnView
+C/econst/-/kDataBrowserColumnViewPreviewProperty
+C/econst/-/kDataBrowserContainerAliasIDProperty
+C/econst/-/kDataBrowserContainerClosed
+C/econst/-/kDataBrowserContainerClosing
+C/econst/-/kDataBrowserContainerIsClosableProperty
+C/econst/-/kDataBrowserContainerIsOpen
+C/econst/-/kDataBrowserContainerIsOpenableProperty
+C/econst/-/kDataBrowserContainerIsSortableProperty
+C/econst/-/kDataBrowserContainerOpened
+C/econst/-/kDataBrowserContainerSorted
+C/econst/-/kDataBrowserContainerSorting
+C/econst/-/kDataBrowserContentHit
+C/econst/-/kDataBrowserCustomType
+C/econst/-/kDataBrowserDateTimeDateOnly
+C/econst/-/kDataBrowserDateTimeRelative
+C/econst/-/kDataBrowserDateTimeSecondsToo
+C/econst/-/kDataBrowserDateTimeTimeOnly
+C/econst/-/kDataBrowserDateTimeType
+C/econst/-/kDataBrowserDefaultPropertyFlags
+C/econst/-/kDataBrowserDoNotTruncateText
+C/econst/-/kDataBrowserDragSelect
+C/econst/-/kDataBrowserEditMsgClear
+C/econst/-/kDataBrowserEditMsgCopy
+C/econst/-/kDataBrowserEditMsgCut
+C/econst/-/kDataBrowserEditMsgPaste
+C/econst/-/kDataBrowserEditMsgRedo
+C/econst/-/kDataBrowserEditMsgSelectAll
+C/econst/-/kDataBrowserEditMsgUndo
+C/econst/-/kDataBrowserEditStarted
+C/econst/-/kDataBrowserEditStopped
+C/econst/-/kDataBrowserIconAndTextType
+C/econst/-/kDataBrowserIconType
+C/econst/-/kDataBrowserItemAdded
+C/econst/-/kDataBrowserItemAnyState
+C/econst/-/kDataBrowserItemDeselected
+C/econst/-/kDataBrowserItemDoubleClicked
+C/econst/-/kDataBrowserItemIsActiveProperty
+C/econst/-/kDataBrowserItemIsContainerProperty
+C/econst/-/kDataBrowserItemIsDragTarget
+C/econst/-/kDataBrowserItemIsEditableProperty
+C/econst/-/kDataBrowserItemIsSelectableProperty
+C/econst/-/kDataBrowserItemIsSelected
+C/econst/-/kDataBrowserItemNoProperty
+C/econst/-/kDataBrowserItemNoState
+C/econst/-/kDataBrowserItemParentContainerProperty
+C/econst/-/kDataBrowserItemRemoved
+C/econst/-/kDataBrowserItemsAdd
+C/econst/-/kDataBrowserItemsAssign
+C/econst/-/kDataBrowserItemSelected
+C/econst/-/kDataBrowserItemSelfIdentityProperty
+C/econst/-/kDataBrowserItemsRemove
+C/econst/-/kDataBrowserItemsToggle
+C/econst/-/kDataBrowserLatestCallbacks
+C/econst/-/kDataBrowserLatestCustomCallbacks
+C/econst/-/kDataBrowserListView
+C/econst/-/kDataBrowserListViewAppendColumn
+C/econst/-/kDataBrowserListViewDefaultColumnFlags
+C/econst/-/kDataBrowserListViewLatestHeaderDesc
+C/econst/-/kDataBrowserListViewMovableColumn
+C/econst/-/kDataBrowserListViewNoGapForIconInHeaderButton
+C/econst/-/kDataBrowserListViewSelectionColumn
+C/econst/-/kDataBrowserListViewSortableColumn
+C/econst/-/kDataBrowserListViewTypeSelectColumn
+C/econst/-/kDataBrowserMetricCellContentInset
+C/econst/-/kDataBrowserMetricDisclosureColumnEdgeInset
+C/econst/-/kDataBrowserMetricDisclosureColumnPerDepthGap
+C/econst/-/kDataBrowserMetricDisclosureTriangleAndContentGap
+C/econst/-/kDataBrowserMetricIconAndTextGap
+C/econst/-/kDataBrowserMetricLast
+C/econst/-/kDataBrowserNeverEmptySelectionSet
+C/econst/-/kDataBrowserNoDisjointSelection
+C/econst/-/kDataBrowserNoItem
+C/econst/-/kDataBrowserNothingHit
+C/econst/-/kDataBrowserNoView
+C/econst/-/kDataBrowserOrderDecreasing
+C/econst/-/kDataBrowserOrderIncreasing
+C/econst/-/kDataBrowserOrderUndefined
+C/econst/-/kDataBrowserPopupMenuButtonless
+C/econst/-/kDataBrowserPopupMenuType
+C/econst/-/kDataBrowserProgressBarType
+C/econst/-/kDataBrowserPropertyCheckboxPart
+C/econst/-/kDataBrowserPropertyContentPart
+C/econst/-/kDataBrowserPropertyDisclosurePart
+C/econst/-/kDataBrowserPropertyEnclosingPart
+C/econst/-/kDataBrowserPropertyFlagsMask
+C/econst/-/kDataBrowserPropertyFlagsOffset
+C/econst/-/kDataBrowserPropertyIconPart
+C/econst/-/kDataBrowserPropertyIsEditable
+C/econst/-/kDataBrowserPropertyIsMutable
+C/econst/-/kDataBrowserPropertyModificationFlags
+C/econst/-/kDataBrowserPropertyProgressBarPart
+C/econst/-/kDataBrowserPropertyRelevanceRankPart
+C/econst/-/kDataBrowserPropertySliderPart
+C/econst/-/kDataBrowserPropertyTextPart
+C/econst/-/kDataBrowserRelativeDateTime
+C/econst/-/kDataBrowserRelevanceRankType
+C/econst/-/kDataBrowserResetSelection
+C/econst/-/kDataBrowserRevealAndCenterInView
+C/econst/-/kDataBrowserRevealOnly
+C/econst/-/kDataBrowserRevealWithoutSelecting
+C/econst/-/kDataBrowserSelectionAnchorDown
+C/econst/-/kDataBrowserSelectionAnchorLeft
+C/econst/-/kDataBrowserSelectionAnchorRight
+C/econst/-/kDataBrowserSelectionAnchorUp
+C/econst/-/kDataBrowserSelectionSetChanged
+C/econst/-/kDataBrowserSelectOnlyOne
+C/econst/-/kDataBrowserSliderDownwardThumb
+C/econst/-/kDataBrowserSliderPlainThumb
+C/econst/-/kDataBrowserSliderType
+C/econst/-/kDataBrowserSliderUpwardThumb
+C/econst/-/kDataBrowserStopTracking
+C/econst/-/kDataBrowserTableViewFillHilite
+C/econst/-/kDataBrowserTableViewLastColumn
+C/econst/-/kDataBrowserTableViewMinimalHilite
+C/econst/-/kDataBrowserTableViewSelectionColumn
+C/econst/-/kDataBrowserTargetChanged
+C/econst/-/kDataBrowserTextType
+C/econst/-/kDataBrowserTruncateTextAtEnd
+C/econst/-/kDataBrowserTruncateTextAtStart
+C/econst/-/kDataBrowserTruncateTextMiddle
+C/econst/-/kDataBrowserUniversalPropertyFlags
+C/econst/-/kDataBrowserUniversalPropertyFlagsMask
+C/econst/-/kDataBrowserUserStateChanged
+C/econst/-/kDataBrowserUserToggledContainer
+C/econst/-/kDataBrowserViewSpecificFlagsMask
+C/econst/-/kDataBrowserViewSpecificFlagsOffset
+C/econst/-/kDataBrowserViewSpecificPropertyFlags
+C/econst/-/kDataHCanRead
+C/econst/-/kDataHCanStreamingWrite
+C/econst/-/kDataHCanWrite
+C/econst/-/kDataHSpecialRead
+C/econst/-/kDataHSpecialReadFile
+C/econst/-/kDataHSpecialWrite
+C/econst/-/kDefaultCMMSignature
+C/econst/-/kDefaultPrivsFromParent
+C/econst/-/kDeviceToPCS
+C/econst/-/kDHCAST128UAMStr
+C/econst/-/kDHX2UAMStr
+C/econst/-/kDisconnectNotifyMask
+C/macro/-/kDNSServiceInterfaceIndexAny
+C/macro/-/kDNSServiceInterfaceIndexLocalOnly
+C/macro/-/kDNSServiceInterfaceIndexUnicast
+C/macro/-/kDNSServiceMaxDomainName
+C/macro/-/kDNSServiceMaxServiceName
+C/macro/-/kDNSServiceProperty_DaemonVersion
+C/econst/-/kDontAllowSavePwd
+C++/clm/IOKernelDebugger/kdpReceiveDispatcher
+C++/clm/IOKernelDebugger/kdpTransmitDispatcher
+C/data/-/kDRAbstractFile
+C/data/-/kDRAccessDate
+C/data/-/kDRAllFilesystems
+C/data/-/kDRApplicationIdentifier
+C/data/-/kDRAttributeModificationDate
+C/data/-/kDRAudioFourChannelKey
+C/data/-/kDRAudioPreEmphasisKey
+C/data/-/kDRBackupDate
+C/data/-/kDRBibliographicFile
+C/data/-/kDRBlockSize
+C/data/-/kDRBlockSizeKey
+C/data/-/kDRBlockTypeKey
+C/data/-/kDRBufferZone1DataKey
+C/data/-/kDRBurnAppendableKey
+C/data/-/kDRBurnCompletionActionEject
+C/data/-/kDRBurnCompletionActionKey
+C/data/-/kDRBurnCompletionActionMount
+C/data/-/kDRBurnDoubleLayerL0DataZoneBlocksKey
+C/data/-/kDRBurnFailureActionEject
+C/data/-/kDRBurnFailureActionKey
+C/data/-/kDRBurnFailureActionNone
+C/data/-/kDRBurnKey
+C/data/-/kDRBurnOverwriteDiscKey
+C/data/-/kDRBurnRequestedSpeedKey
+C/data/-/kDRBurnStatusChangedNotification
+C/data/-/kDRBurnStrategyBDDAO
+C/data/-/kDRBurnStrategyCDSAO
+C/data/-/kDRBurnStrategyCDTAO
+C/data/-/kDRBurnStrategyDVDDAO
+C/data/-/kDRBurnStrategyIsRequiredKey
+C/data/-/kDRBurnStrategyKey
+C/data/-/kDRBurnTestingKey
+C/data/-/kDRBurnUnderrunProtectionKey
+C/data/-/kDRBurnVerifyDiscKey
+C/data/-/kDRCDTextArrangerKey
+C/data/-/kDRCDTextCFStringEncodingKey
+C/data/-/kDRCDTextCharacterCodeKey
+C/data/-/kDRCDTextClosedKey
+C/data/-/kDRCDTextComposerKey
+C/data/-/kDRCDTextCopyrightAssertedForNamesKey
+C/data/-/kDRCDTextCopyrightAssertedForSpecialMessagesKey
+C/data/-/kDRCDTextCopyrightAssertedForTitlesKey
+C/data/-/kDRCDTextDiscIdentKey
+C/data/-/kDRCDTextGenreCodeKey
+C/data/-/kDRCDTextGenreKey
+C/data/-/kDRCDTextKey
+C/data/-/kDRCDTextLanguageKey
+C/data/-/kDRCDTextMCNISRCKey
+C/data/-/kDRCDTextPerformerKey
+C/data/-/kDRCDTextSizeKey
+C/data/-/kDRCDTextSongwriterKey
+C/data/-/kDRCDTextSpecialMessageKey
+C/data/-/kDRCDTextTitleKey
+C/data/-/kDRCDTextTOC2Key
+C/data/-/kDRCDTextTOCKey
+C/data/-/kDRContentModificationDate
+C/data/-/kDRCopyrightFile
+C/data/-/kDRCreationDate
+C/data/-/kDRDataFormKey
+C/data/-/kDRDataPreparer
+C/data/-/kDRDefaultDate
+C/data/-/kDRDeviceAppearedNotification
+C/data/-/kDRDeviceBurnSpeedBD1x
+C/data/-/kDRDeviceBurnSpeedCD1x
+C/data/-/kDRDeviceBurnSpeedDVD1x
+C/data/-/kDRDeviceBurnSpeedHDDVD1x
+C/data/-/kDRDeviceBurnSpeedMax
+C/data/-/kDRDeviceBurnSpeedsKey
+C/data/-/kDRDeviceCanTestWriteCDKey
+C/data/-/kDRDeviceCanTestWriteDVDKey
+C/data/-/kDRDeviceCanUnderrunProtectCDKey
+C/data/-/kDRDeviceCanUnderrunProtectDVDKey
+C/data/-/kDRDeviceCanWriteBDKey
+C/data/-/kDRDeviceCanWriteBDREKey
+C/data/-/kDRDeviceCanWriteBDRKey
+C/data/-/kDRDeviceCanWriteCDKey
+C/data/-/kDRDeviceCanWriteCDRawKey
+C/data/-/kDRDeviceCanWriteCDRKey
+C/data/-/kDRDeviceCanWriteCDRWKey
+C/data/-/kDRDeviceCanWriteCDSAOKey
+C/data/-/kDRDeviceCanWriteCDTAOKey
+C/data/-/kDRDeviceCanWriteCDTextKey
+C/data/-/kDRDeviceCanWriteDVDDAOKey
+C/data/-/kDRDeviceCanWriteDVDKey
+C/data/-/kDRDeviceCanWriteDVDPlusRDoubleLayerKey
+C/data/-/kDRDeviceCanWriteDVDPlusRKey
+C/data/-/kDRDeviceCanWriteDVDPlusRWDoubleLayerKey
+C/data/-/kDRDeviceCanWriteDVDPlusRWKey
+C/data/-/kDRDeviceCanWriteDVDRAMKey
+C/data/-/kDRDeviceCanWriteDVDRDualLayerKey
+C/data/-/kDRDeviceCanWriteDVDRKey
+C/data/-/kDRDeviceCanWriteDVDRWDualLayerKey
+C/data/-/kDRDeviceCanWriteDVDRWKey
+C/data/-/kDRDeviceCanWriteHDDVDKey
+C/data/-/kDRDeviceCanWriteHDDVDRAMKey
+C/data/-/kDRDeviceCanWriteHDDVDRDualLayerKey
+C/data/-/kDRDeviceCanWriteHDDVDRKey
+C/data/-/kDRDeviceCanWriteHDDVDRWDualLayerKey
+C/data/-/kDRDeviceCanWriteHDDVDRWKey
+C/data/-/kDRDeviceCanWriteIndexPointsKey
+C/data/-/kDRDeviceCanWriteISRCKey
+C/data/-/kDRDeviceCanWriteKey
+C/data/-/kDRDeviceCurrentWriteSpeedKey
+C/data/-/kDRDeviceDisappearedNotification
+C/data/-/kDRDeviceFirmwareRevisionKey
+C/data/-/kDRDeviceIORegistryEntryPathKey
+C/data/-/kDRDeviceIsBusyKey
+C/data/-/kDRDeviceIsTrayOpenKey
+C/data/-/kDRDeviceLoadingMechanismCanEjectKey
+C/data/-/kDRDeviceLoadingMechanismCanInjectKey
+C/data/-/kDRDeviceLoadingMechanismCanOpenKey
+C/data/-/kDRDeviceMaximumWriteSpeedKey
+C/data/-/kDRDeviceMediaBlocksFreeKey
+C/data/-/kDRDeviceMediaBlocksOverwritableKey
+C/data/-/kDRDeviceMediaBlocksUsedKey
+C/data/-/kDRDeviceMediaBSDNameKey
+C/data/-/kDRDeviceMediaClassBD
+C/data/-/kDRDeviceMediaClassCD
+C/data/-/kDRDeviceMediaClassDVD
+C/data/-/kDRDeviceMediaClassHDDVD
+C/data/-/kDRDeviceMediaClassKey
+C/data/-/kDRDeviceMediaClassUnknown
+C/data/-/kDRDeviceMediaDoubleLayerL0DataZoneBlocksKey
+C/data/-/kDRDeviceMediaInfoKey
+C/data/-/kDRDeviceMediaIsAppendableKey
+C/data/-/kDRDeviceMediaIsBlankKey
+C/data/-/kDRDeviceMediaIsErasableKey
+C/data/-/kDRDeviceMediaIsOverwritableKey
+C/data/-/kDRDeviceMediaIsReservedKey
+C/data/-/kDRDeviceMediaSessionCountKey
+C/data/-/kDRDeviceMediaStateInTransition
+C/data/-/kDRDeviceMediaStateKey
+C/data/-/kDRDeviceMediaStateMediaPresent
+C/data/-/kDRDeviceMediaStateNone
+C/data/-/kDRDeviceMediaTrackCountKey
+C/data/-/kDRDeviceMediaTypeBDR
+C/data/-/kDRDeviceMediaTypeBDRE
+C/data/-/kDRDeviceMediaTypeBDROM
+C/data/-/kDRDeviceMediaTypeCDR
+C/data/-/kDRDeviceMediaTypeCDROM
+C/data/-/kDRDeviceMediaTypeCDRW
+C/data/-/kDRDeviceMediaTypeDVDPlusR
+C/data/-/kDRDeviceMediaTypeDVDPlusRDoubleLayer
+C/data/-/kDRDeviceMediaTypeDVDPlusRW
+C/data/-/kDRDeviceMediaTypeDVDPlusRWDoubleLayer
+C/data/-/kDRDeviceMediaTypeDVDR
+C/data/-/kDRDeviceMediaTypeDVDRAM
+C/data/-/kDRDeviceMediaTypeDVDRDualLayer
+C/data/-/kDRDeviceMediaTypeDVDROM
+C/data/-/kDRDeviceMediaTypeDVDRW
+C/data/-/kDRDeviceMediaTypeDVDRWDualLayer
+C/data/-/kDRDeviceMediaTypeHDDVDR
+C/data/-/kDRDeviceMediaTypeHDDVDRAM
+C/data/-/kDRDeviceMediaTypeHDDVDRDualLayer
+C/data/-/kDRDeviceMediaTypeHDDVDROM
+C/data/-/kDRDeviceMediaTypeHDDVDRW
+C/data/-/kDRDeviceMediaTypeHDDVDRWDualLayer
+C/data/-/kDRDeviceMediaTypeKey
+C/data/-/kDRDeviceMediaTypeUnknown
+C/data/-/kDRDevicePhysicalInterconnectATAPI
+C/data/-/kDRDevicePhysicalInterconnectFibreChannel
+C/data/-/kDRDevicePhysicalInterconnectFireWire
+C/data/-/kDRDevicePhysicalInterconnectKey
+C/data/-/kDRDevicePhysicalInterconnectLocationExternal
+C/data/-/kDRDevicePhysicalInterconnectLocationInternal
+C/data/-/kDRDevicePhysicalInterconnectLocationKey
+C/data/-/kDRDevicePhysicalInterconnectLocationUnknown
+C/data/-/kDRDevicePhysicalInterconnectSCSI
+C/data/-/kDRDevicePhysicalInterconnectUSB
+C/data/-/kDRDeviceProductNameKey
+C/data/-/kDRDeviceStatusChangedNotification
+C/data/-/kDRDeviceSupportLevelAppleShipping
+C/data/-/kDRDeviceSupportLevelAppleSupported
+C/data/-/kDRDeviceSupportLevelKey
+C/data/-/kDRDeviceSupportLevelNone
+C/data/-/kDRDeviceSupportLevelUnsupported
+C/data/-/kDRDeviceSupportLevelVendorSupported
+C/data/-/kDRDeviceTrackInfoKey
+C/data/-/kDRDeviceTrackRefsKey
+C/data/-/kDRDeviceVendorNameKey
+C/data/-/kDRDeviceWriteBufferSizeKey
+C/data/-/kDRDeviceWriteCapabilitiesKey
+C/data/-/kDRDVDCopyrightInfoKey
+C/data/-/kDRDVDTimestampKey
+C/data/-/kDREffectiveDate
+C/data/-/kDREraseStatusChangedNotification
+C/data/-/kDREraseTypeComplete
+C/data/-/kDREraseTypeKey
+C/data/-/kDREraseTypeQuick
+C/data/-/kDRErrorStatusAdditionalSenseStringKey
+C/data/-/kDRErrorStatusErrorInfoStringKey
+C/data/-/kDRErrorStatusErrorKey
+C/data/-/kDRErrorStatusErrorStringKey
+C/data/-/kDRErrorStatusKey
+C/data/-/kDRErrorStatusSenseCodeStringKey
+C/data/-/kDRErrorStatusSenseKey
+C/data/-/kDRExpirationDate
+C/data/-/kDRFreeBlocksKey
+C/data/-/kDRHFSPlus
+C/data/-/kDRHFSPlusCatalogNodeID
+C/data/-/kDRHFSPlusTextEncodingHint
+C/data/-/kDRIndexPointsKey
+C/data/-/kDRInvisible
+C/data/-/kDRISO9660
+C/data/-/kDRISO9660LevelOne
+C/data/-/kDRISO9660LevelTwo
+C/data/-/kDRISO9660VersionNumber
+C/data/-/kDRISOLevel
+C/data/-/kDRISOMacExtensions
+C/data/-/kDRISORockRidgeExtensions
+C/data/-/kDRJoliet
+C/data/-/kDRMacExtendedFinderFlags
+C/data/-/kDRMacFileCreator
+C/data/-/kDRMacFileType
+C/data/-/kDRMacFinderFlags
+C/data/-/kDRMacFinderHideExtension
+C/data/-/kDRMacIconLocation
+C/data/-/kDRMacScrollPosition
+C/data/-/kDRMacWindowBounds
+C/data/-/kDRMacWindowView
+C/data/-/kDRMaxBurnSpeedKey
+C/data/-/kDRMediaCatalogNumberKey
+C/data/-/kDRNextWritableAddressKey
+C/data/-/kDRPosixFileMode
+C/data/-/kDRPosixGID
+C/data/-/kDRPosixUID
+C/data/-/kDRPreGapIsRequiredKey
+C/data/-/kDRPreGapLengthKey
+C/data/-/kDRPublisher
+C/data/-/kDRRecordingDate
+C/data/-/kDRRefConCFTypeCallbacks
+C/data/-/kDRSCMSCopyrightFree
+C/data/-/kDRSCMSCopyrightProtectedCopy
+C/data/-/kDRSCMSCopyrightProtectedOriginal
+C/data/-/kDRSerialCopyManagementStateKey
+C/data/-/kDRSessionFormatKey
+C/data/-/kDRSessionNumberKey
+C/data/-/kDRStatusCurrentSessionKey
+C/data/-/kDRStatusCurrentSpeedKey
+C/data/-/kDRStatusCurrentTrackKey
+C/data/-/kDRStatusEraseTypeKey
+C/data/-/kDRStatusPercentCompleteKey
+C/data/-/kDRStatusProgressCurrentKPS
+C/data/-/kDRStatusProgressCurrentXFactor
+C/data/-/kDRStatusProgressInfoKey
+C/data/-/kDRStatusStateDone
+C/data/-/kDRStatusStateErasing
+C/data/-/kDRStatusStateFailed
+C/data/-/kDRStatusStateFinishing
+C/data/-/kDRStatusStateKey
+C/data/-/kDRStatusStateNone
+C/data/-/kDRStatusStatePreparing
+C/data/-/kDRStatusStateSessionClose
+C/data/-/kDRStatusStateSessionOpen
+C/data/-/kDRStatusStateTrackClose
+C/data/-/kDRStatusStateTrackOpen
+C/data/-/kDRStatusStateTrackWrite
+C/data/-/kDRStatusStateVerifying
+C/data/-/kDRStatusTotalSessionsKey
+C/data/-/kDRStatusTotalTracksKey
+C/data/-/kDRSubchannelDataFormKey
+C/data/-/kDRSubchannelDataFormNone
+C/data/-/kDRSubchannelDataFormPack
+C/data/-/kDRSubchannelDataFormRaw
+C/data/-/kDRSuppressMacSpecificFiles
+C/data/-/kDRSynchronousBehaviorKey
+C/data/-/kDRSystemIdentifier
+C/data/-/kDRTrackIsEmptyKey
+C/data/-/kDRTrackISRCKey
+C/data/-/kDRTrackLengthKey
+C/data/-/kDRTrackModeKey
+C/data/-/kDRTrackNumberKey
+C/data/-/kDRTrackPacketSizeKey
+C/data/-/kDRTrackPacketTypeFixed
+C/data/-/kDRTrackPacketTypeKey
+C/data/-/kDRTrackPacketTypeVariable
+C/data/-/kDRTrackStartAddressKey
+C/data/-/kDRTrackTypeClosed
+C/data/-/kDRTrackTypeIncomplete
+C/data/-/kDRTrackTypeInvisible
+C/data/-/kDRTrackTypeKey
+C/data/-/kDRTrackTypeReserved
+C/data/-/kDRUDF
+C/data/-/kDRUDFApplicationIdentifierSuffix
+C/data/-/kDRUDFExtendedFilePermissions
+C/data/-/kDRUDFInterchangeLevel
+C/data/-/kDRUDFMaxInterchangeLevel
+C/data/-/kDRUDFMaxVolumeSequenceNumber
+C/data/-/kDRUDFPrimaryVolumeDescriptorNumber
+C/data/-/kDRUDFRealTimeFile
+C/data/-/kDRUDFVersion102
+C/data/-/kDRUDFVersion150
+C/data/-/kDRUDFVolumeSequenceNumber
+C/data/-/kDRUDFVolumeSetIdentifier
+C/data/-/kDRUDFVolumeSetImplementationUse
+C/data/-/kDRUDFVolumeSetTimestamp
+C/data/-/kDRUDFWriteVersion
+C/data/-/kDRVerificationTypeChecksum
+C/data/-/kDRVerificationTypeKey
+C/data/-/kDRVerificationTypeNone
+C/data/-/kDRVerificationTypeProduceAgain
+C/data/-/kDRVerificationTypeReceiveData
+C/data/-/kDRVolumeCheckedDate
+C/data/-/kDRVolumeCreationDate
+C/data/-/kDRVolumeEffectiveDate
+C/data/-/kDRVolumeExpirationDate
+C/data/-/kDRVolumeModificationDate
+C/data/-/kDRVolumeSet
+C/econst/-/kDS1AttrAdminLimits
+C/macro/-/kDS1AttrAdminLimits
+C/econst/-/kDS1AttrAdminStatus
+C/macro/-/kDS1AttrAdminStatus
+C/econst/-/kDS1AttrAlias
+C/macro/-/kDS1AttrAlias
+C/econst/-/kDS1AttrAliasData
+C/macro/-/kDS1AttrAliasData
+C/econst/-/kDS1AttrAlternateDatastoreLocation
+C/macro/-/kDS1AttrAlternateDatastoreLocation
+C/macro/-/kDS1AttrAttrListRefCount
+C/macro/-/kDS1AttrAttrListValueRefCount
+C/econst/-/kDS1AttrAuthCredential
+C/macro/-/kDS1AttrAuthCredential
+C/econst/-/kDS1AttrAuthenticationHint
+C/macro/-/kDS1AttrAuthenticationHint
+C/econst/-/kDS1AttrAuthorityRevocationList
+C/macro/-/kDS1AttrAuthorityRevocationList
+C/macro/-/kDS1AttrBirthday
+C/econst/-/kDS1AttrBootFile
+C/macro/-/kDS1AttrBootFile
+C/macro/-/kDS1AttrBuildVersion
+C/econst/-/kDS1AttrCACertificate
+C/macro/-/kDS1AttrCACertificate
+C/econst/-/kDS1AttrCapabilities
+C/macro/-/kDS1AttrCapabilities
+C/macro/-/kDS1AttrCapacity
+C/macro/-/kDS1AttrCategory
+C/econst/-/kDS1AttrCertificateRevocationList
+C/macro/-/kDS1AttrCertificateRevocationList
+C/econst/-/kDS1AttrChange
+C/macro/-/kDS1AttrChange
+C/econst/-/kDS1AttrComment
+C/macro/-/kDS1AttrComment
+C/econst/-/kDS1AttrComputerAlias
+C/macro/-/kDS1AttrConfigAvail
+C/macro/-/kDS1AttrConfigFile
+C/macro/-/kDS1AttrContactGUID
+C/econst/-/kDS1AttrContactPerson
+C/macro/-/kDS1AttrContactPerson
+C/econst/-/kDS1AttrCopyTimestamp
+C/macro/-/kDS1AttrCopyTimestamp
+C/macro/-/kDS1AttrCoreFWVersion
+C/econst/-/kDS1AttrCreationTimestamp
+C/macro/-/kDS1AttrCreationTimestamp
+C/econst/-/kDS1AttrCrossCertificatePair
+C/macro/-/kDS1AttrCrossCertificatePair
+C/econst/-/kDS1AttrCSPSearchPath
+C/macro/-/kDS1AttrCSPSearchPath
+C/econst/-/kDS1AttrDataStamp
+C/macro/-/kDS1AttrDataStamp
+C/econst/-/kDS1AttrDateRecordCreated
+C/macro/-/kDS1AttrDateRecordCreated
+C/macro/-/kDS1AttrDirRefCount
+C/econst/-/kDS1AttrDistinguishedName
+C/macro/-/kDS1AttrDistinguishedName
+C/econst/-/kDS1AttrDNSDomain
+C/macro/-/kDS1AttrDNSDomain
+C/econst/-/kDS1AttrDNSNameServer
+C/macro/-/kDS1AttrDNSNameServer
+C/econst/-/kDS1AttrENetAddress
+C/macro/-/kDS1AttrENetAddress
+C/econst/-/kDS1AttrExpire
+C/macro/-/kDS1AttrExpire
+C/econst/-/kDS1AttrFirstName
+C/macro/-/kDS1AttrFirstName
+C/macro/-/kDS1AttrFunctionalState
+C/macro/-/kDS1AttrFWVersion
+C/econst/-/kDS1AttrGeneratedUID
+C/macro/-/kDS1AttrGeneratedUID
+C/econst/-/kDS1AttrHomeDirectoryQuota
+C/macro/-/kDS1AttrHomeDirectoryQuota
+C/econst/-/kDS1AttrHomeDirectorySoftQuota
+C/macro/-/kDS1AttrHomeDirectorySoftQuota
+C/econst/-/kDS1AttrHomeLocOwner
+C/macro/-/kDS1AttrHomeLocOwner
+C/econst/-/kDS1AttrInternetAlias
+C/macro/-/kDS1AttrInternetAlias
+C/econst/-/kDS1AttrKDCConfigData
+C/macro/-/kDS1AttrKDCConfigData
+C/econst/-/kDS1AttrKerberosRealm
+C/macro/-/kDS1AttrKerberosRealm
+C/econst/-/kDS1AttrLastName
+C/macro/-/kDS1AttrLastName
+C/macro/-/kDS1AttrLDAPSearchBaseSuffix
+C/econst/-/kDS1AttrLocation
+C/macro/-/kDS1AttrLocation
+C/econst/-/kDS1AttrLSPSearchPath
+C/macro/-/kDS1AttrLSPSearchPath
+C/econst/-/kDS1AttrMailAttribute
+C/macro/-/kDS1AttrMailAttribute
+C/macro/-/kDS1AttrMapGUID
+C/econst/-/kDS1AttrMCXFlags
+C/macro/-/kDS1AttrMCXFlags
+C/econst/-/kDS1AttrMCXSettings
+C/macro/-/kDS1AttrMCXSettings
+C/macro/-/kDS1AttrMetaAutomountMap
+C/econst/-/kDS1AttrMiddleName
+C/macro/-/kDS1AttrMiddleName
+C/econst/-/kDS1AttrModificationTimestamp
+C/macro/-/kDS1AttrModificationTimestamp
+C/econst/-/kDS1AttrNeighborhoodAlias
+C/econst/-/kDS1AttrNeighborhoodType
+C/macro/-/kDS1AttrNeighborhoodType
+C/macro/-/kDS1AttrNetworkNumber
+C/econst/-/kDS1AttrNetworkView
+C/macro/-/kDS1AttrNetworkView
+C/econst/-/kDS1AttrNFSHomeDirectory
+C/macro/-/kDS1AttrNFSHomeDirectory
+C/econst/-/kDS1AttrNodePathXMLPlist
+C/macro/-/kDS1AttrNodeRefCount
+C/econst/-/kDS1AttrNote
+C/macro/-/kDS1AttrNote
+C/econst/-/kDS1AttrNSPSearchPath
+C/macro/-/kDS1AttrNSPSearchPath
+C/macro/-/kDS1AttrNTDomainComputerAccount
+C/econst/-/kDS1AttrOriginalNFSHomeDirectory
+C/macro/-/kDS1AttrOriginalNFSHomeDirectory
+C/econst/-/kDS1AttrOriginalNodeName
+C/macro/-/kDS1AttrOriginalNodeName
+C/econst/-/kDS1AttrOwner
+C/macro/-/kDS1AttrOwner
+C/macro/-/kDS1AttrOwnerGUID
+C/econst/-/kDS1AttrPassword
+C/macro/-/kDS1AttrPassword
+C/econst/-/kDS1AttrPasswordPlus
+C/macro/-/kDS1AttrPasswordPlus
+C/econst/-/kDS1AttrPasswordPolicyOptions
+C/macro/-/kDS1AttrPasswordPolicyOptions
+C/econst/-/kDS1AttrPasswordServerList
+C/macro/-/kDS1AttrPasswordServerList
+C/econst/-/kDS1AttrPasswordServerLocation
+C/macro/-/kDS1AttrPasswordServerLocation
+C/econst/-/kDS1AttrPicture
+C/macro/-/kDS1AttrPicture
+C/macro/-/kDS1AttrPIDValue
+C/macro/-/kDS1AttrPluginIndex
+C/econst/-/kDS1AttrPort
+C/macro/-/kDS1AttrPort
+C/econst/-/kDS1AttrPresetUserIsAdmin
+C/macro/-/kDS1AttrPresetUserIsAdmin
+C/macro/-/kDS1AttrPrimaryComputerGUID
+C/macro/-/kDS1AttrPrimaryComputerList
+C/econst/-/kDS1AttrPrimaryGroupID
+C/macro/-/kDS1AttrPrimaryGroupID
+C/econst/-/kDS1AttrPrimaryNTDomain
+C/macro/-/kDS1AttrPrimaryNTDomain
+C/econst/-/kDS1AttrPrimaryNTDomainComputerAccount
+C/econst/-/kDS1AttrPrinter1284DeviceID
+C/macro/-/kDS1AttrPrinter1284DeviceID
+C/econst/-/kDS1AttrPrinterLPRHost
+C/macro/-/kDS1AttrPrinterLPRHost
+C/econst/-/kDS1AttrPrinterLPRQueue
+C/macro/-/kDS1AttrPrinterLPRQueue
+C/econst/-/kDS1AttrPrinterMakeAndModel
+C/macro/-/kDS1AttrPrinterMakeAndModel
+C/econst/-/kDS1AttrPrinterType
+C/macro/-/kDS1AttrPrinterType
+C/econst/-/kDS1AttrPrinterURI
+C/macro/-/kDS1AttrPrinterURI
+C/econst/-/kDS1AttrPrintServiceInfoText
+C/macro/-/kDS1AttrPrintServiceInfoText
+C/econst/-/kDS1AttrPrintServiceInfoXML
+C/macro/-/kDS1AttrPrintServiceInfoXML
+C/econst/-/kDS1AttrPrintServiceUserData
+C/macro/-/kDS1AttrPrintServiceUserData
+C/macro/-/kDS1AttrProcessName
+C/macro/-/kDS1AttrProtocolNumber
+C/econst/-/kDS1AttrPwdAgingPolicy
+C/macro/-/kDS1AttrPwdAgingPolicy
+C/econst/-/kDS1AttrRARA
+C/macro/-/kDS1AttrRARA
+C/econst/-/kDS1AttrReadOnlyNode
+C/macro/-/kDS1AttrReadOnlyNode
+C/econst/-/kDS1AttrRealUserID
+C/macro/-/kDS1AttrRealUserID
+C/econst/-/kDS1AttrRecordImage
+C/macro/-/kDS1AttrRecordImage
+C/macro/-/kDS1AttrRecRefCount
+C/macro/-/kDS1AttrRefNumTableList
+C/econst/-/kDS1AttrRelativeDNPrefix
+C/macro/-/kDS1AttrRelativeDNPrefix
+C/macro/-/kDS1AttrRPCNumber
+C/econst/-/kDS1AttrSearchPath
+C/macro/-/kDS1AttrSearchPath
+C/econst/-/kDS1AttrSearchPolicy
+C/macro/-/kDS1AttrSearchPolicy
+C/econst/-/kDS1AttrServiceType
+C/macro/-/kDS1AttrServiceType
+C/econst/-/kDS1AttrSetupAdvertising
+C/macro/-/kDS1AttrSetupAdvertising
+C/econst/-/kDS1AttrSetupAutoRegister
+C/macro/-/kDS1AttrSetupAutoRegister
+C/econst/-/kDS1AttrSetupLocation
+C/macro/-/kDS1AttrSetupLocation
+C/econst/-/kDS1AttrSetupOccupation
+C/macro/-/kDS1AttrSetupOccupation
+C/econst/-/kDS1AttrSMBAcctFlags
+C/macro/-/kDS1AttrSMBAcctFlags
+C/econst/-/kDS1AttrSMBGroupRID
+C/macro/-/kDS1AttrSMBGroupRID
+C/econst/-/kDS1AttrSMBHome
+C/macro/-/kDS1AttrSMBHome
+C/econst/-/kDS1AttrSMBHomeDrive
+C/macro/-/kDS1AttrSMBHomeDrive
+C/econst/-/kDS1AttrSMBKickoffTime
+C/macro/-/kDS1AttrSMBKickoffTime
+C/econst/-/kDS1AttrSMBLogoffTime
+C/macro/-/kDS1AttrSMBLogoffTime
+C/econst/-/kDS1AttrSMBLogonTime
+C/macro/-/kDS1AttrSMBLogonTime
+C/econst/-/kDS1AttrSMBPrimaryGroupSID
+C/macro/-/kDS1AttrSMBPrimaryGroupSID
+C/econst/-/kDS1AttrSMBProfilePath
+C/macro/-/kDS1AttrSMBProfilePath
+C/econst/-/kDS1AttrSMBPWDLastSet
+C/macro/-/kDS1AttrSMBPWDLastSet
+C/econst/-/kDS1AttrSMBRID
+C/macro/-/kDS1AttrSMBRID
+C/econst/-/kDS1AttrSMBScriptPath
+C/macro/-/kDS1AttrSMBScriptPath
+C/econst/-/kDS1AttrSMBSID
+C/macro/-/kDS1AttrSMBSID
+C/econst/-/kDS1AttrSMBUserWorkstations
+C/macro/-/kDS1AttrSMBUserWorkstations
+C/econst/-/kDS1AttrTimePackage
+C/macro/-/kDS1AttrTimePackage
+C/econst/-/kDS1AttrTimeToLive
+C/macro/-/kDS1AttrTimeToLive
+C/macro/-/kDS1AttrTotalRefCount
+C/econst/-/kDS1AttrTotalSize
+C/macro/-/kDS1AttrTotalSize
+C/econst/-/kDS1AttrUniqueID
+C/macro/-/kDS1AttrUniqueID
+C/econst/-/kDS1AttrUserCertificate
+C/macro/-/kDS1AttrUserCertificate
+C/econst/-/kDS1AttrUserPKCS12Data
+C/macro/-/kDS1AttrUserPKCS12Data
+C/econst/-/kDS1AttrUserShell
+C/macro/-/kDS1AttrUserShell
+C/econst/-/kDS1AttrUserSMIMECertificate
+C/macro/-/kDS1AttrUserSMIMECertificate
+C/macro/-/kDS1AttrVersion
+C/econst/-/kDS1AttrVFSDumpFreq
+C/macro/-/kDS1AttrVFSDumpFreq
+C/econst/-/kDS1AttrVFSLinkDir
+C/macro/-/kDS1AttrVFSLinkDir
+C/econst/-/kDS1AttrVFSPassNo
+C/macro/-/kDS1AttrVFSPassNo
+C/econst/-/kDS1AttrVFSType
+C/macro/-/kDS1AttrVFSType
+C/macro/-/kDS1AttrWeblogURI
+C/econst/-/kDS1AttrXMLPlist
+C/macro/-/kDS1AttrXMLPlist
+C/macro/-/kDS1StandardAttrHomeLocOwner
+C/econst/-/kDSAttributesAll
+C/macro/-/kDSAttributesAll
+C/econst/-/kDSAttributesNativeAll
+C/macro/-/kDSAttributesNativeAll
+C/econst/-/kDSAttributesStandardAll
+C/macro/-/kDSAttributesStandardAll
+C/econst/-/kDSAttrNone
+C/macro/-/kDSAttrNone
+C/econst/-/kDSNativeAttrTypePrefix
+C/macro/-/kDSNativeAttrTypePrefix
+C/econst/-/kDSNativeAuthMethodPrefix
+C/macro/-/kDSNativeAuthMethodPrefix
+C/econst/-/kDSNativeRecordTypePrefix
+C/macro/-/kDSNativeRecordTypePrefix
+C/econst/-/kDSNAttrAccessControlEntry
+C/macro/-/kDSNAttrAccessControlEntry
+C/econst/-/kDSNAttrAddressLine1
+C/macro/-/kDSNAttrAddressLine1
+C/econst/-/kDSNAttrAddressLine2
+C/macro/-/kDSNAttrAddressLine2
+C/econst/-/kDSNAttrAddressLine3
+C/macro/-/kDSNAttrAddressLine3
+C/econst/-/kDSNAttrAllNames
+C/macro/-/kDSNAttrAllNames
+C/econst/-/kDSNAttrAreaCode
+C/macro/-/kDSNAttrAreaCode
+C/macro/-/kDSNAttrAttributeTypes
+C/macro/-/kDSNAttrAttrListRefs
+C/macro/-/kDSNAttrAttrListValueRefs
+C/econst/-/kDSNAttrAuthenticationAuthority
+C/macro/-/kDSNAttrAuthenticationAuthority
+C/econst/-/kDSNAttrAuthMethod
+C/macro/-/kDSNAttrAuthMethod
+C/macro/-/kDSNAttrAutomountInformation
+C/econst/-/kDSNAttrBootParams
+C/macro/-/kDSNAttrBootParams
+C/econst/-/kDSNAttrBuilding
+C/macro/-/kDSNAttrBuilding
+C/econst/-/kDSNAttrCity
+C/macro/-/kDSNAttrCity
+C/macro/-/kDSNAttrCompany
+C/macro/-/kDSNAttrComputerAlias
+C/econst/-/kDSNAttrComputers
+C/macro/-/kDSNAttrComputers
+C/econst/-/kDSNAttrCountry
+C/macro/-/kDSNAttrCountry
+C/econst/-/kDSNAttrCSPSearchPath
+C/macro/-/kDSNAttrCSPSearchPath
+C/econst/-/kDSNAttrDepartment
+C/macro/-/kDSNAttrDepartment
+C/macro/-/kDSNAttrDirRefs
+C/econst/-/kDSNAttrDNSName
+C/macro/-/kDSNAttrDNSName
+C/econst/-/kDSNAttrEMailAddress
+C/macro/-/kDSNAttrEMailAddress
+C/macro/-/kDSNAttrEMailContacts
+C/econst/-/kDSNAttrFaxNumber
+C/macro/-/kDSNAttrFaxNumber
+C/econst/-/kDSNAttrGroup
+C/macro/-/kDSNAttrGroup
+C/econst/-/kDSNAttrGroupMembers
+C/macro/-/kDSNAttrGroupMembers
+C/econst/-/kDSNAttrGroupMembership
+C/macro/-/kDSNAttrGroupMembership
+C/macro/-/kDSNAttrGroupServices
+C/econst/-/kDSNAttrHomeDirectory
+C/macro/-/kDSNAttrHomeDirectory
+C/macro/-/kDSNAttrHomePhoneNumber
+C/econst/-/kDSNAttrHTML
+C/macro/-/kDSNAttrHTML
+C/econst/-/kDSNAttrIMHandle
+C/macro/-/kDSNAttrIMHandle
+C/econst/-/kDSNAttrIPAddress
+C/macro/-/kDSNAttrIPAddress
+C/macro/-/kDSNAttrIPAddressAndENetAddress
+C/macro/-/kDSNAttrIPv6Address
+C/econst/-/kDSNAttrJobTitle
+C/macro/-/kDSNAttrJobTitle
+C/macro/-/kDSNAttrJPEGPhoto
+C/econst/-/kDSNAttrKDCAuthKey
+C/macro/-/kDSNAttrKDCAuthKey
+C/econst/-/kDSNAttrKeywords
+C/macro/-/kDSNAttrKeywords
+C/econst/-/kDSNAttrLDAPReadReplicas
+C/macro/-/kDSNAttrLDAPReadReplicas
+C/econst/-/kDSNAttrLDAPWriteReplicas
+C/macro/-/kDSNAttrLDAPWriteReplicas
+C/econst/-/kDSNAttrLSPSearchPath
+C/macro/-/kDSNAttrLSPSearchPath
+C/econst/-/kDSNAttrMachineServes
+C/macro/-/kDSNAttrMachineServes
+C/macro/-/kDSNAttrMapCoordinates
+C/macro/-/kDSNAttrMapURI
+C/econst/-/kDSNAttrMCXSettings
+C/macro/-/kDSNAttrMCXSettings
+C/econst/-/kDSNAttrMember
+C/macro/-/kDSNAttrMember
+C/econst/-/kDSNAttrMetaNodeLocation
+C/macro/-/kDSNAttrMetaNodeLocation
+C/econst/-/kDSNAttrMIME
+C/macro/-/kDSNAttrMIME
+C/econst/-/kDSNAttrMobileNumber
+C/macro/-/kDSNAttrMobileNumber
+C/econst/-/kDSNAttrNamePrefix
+C/macro/-/kDSNAttrNamePrefix
+C/econst/-/kDSNAttrNameSuffix
+C/macro/-/kDSNAttrNameSuffix
+C/econst/-/kDSNAttrNBPEntry
+C/macro/-/kDSNAttrNBPEntry
+C/macro/-/kDSNAttrNeighborhoodAlias
+C/econst/-/kDSNAttrNestedGroups
+C/macro/-/kDSNAttrNestedGroups
+C/econst/-/kDSNAttrNetGroups
+C/macro/-/kDSNAttrNetGroups
+C/macro/-/kDSNAttrNetGroupTriplet
+C/econst/-/kDSNAttrNickName
+C/macro/-/kDSNAttrNickName
+C/econst/-/kDSNAttrNodePath
+C/macro/-/kDSNAttrNodePath
+C/macro/-/kDSNAttrNodePathXMLPlist
+C/macro/-/kDSNAttrNodeRefs
+C/econst/-/kDSNAttrNSPSearchPath
+C/macro/-/kDSNAttrNSPSearchPath
+C/macro/-/kDSNAttrOrganizationInfo
+C/econst/-/kDSNAttrOrganizationName
+C/macro/-/kDSNAttrOrganizationName
+C/econst/-/kDSNAttrOriginalHomeDirectory
+C/macro/-/kDSNAttrOriginalHomeDirectory
+C/econst/-/kDSNAttrPagerNumber
+C/macro/-/kDSNAttrPagerNumber
+C/econst/-/kDSNAttrPGPPublicKey
+C/macro/-/kDSNAttrPGPPublicKey
+C/macro/-/kDSNAttrPhoneContacts
+C/econst/-/kDSNAttrPhoneNumber
+C/macro/-/kDSNAttrPhoneNumber
+C/econst/-/kDSNAttrPlugInInfo
+C/macro/-/kDSNAttrPlugInInfo
+C/econst/-/kDSNAttrPostalAddress
+C/macro/-/kDSNAttrPostalAddress
+C/macro/-/kDSNAttrPostalAddressContacts
+C/econst/-/kDSNAttrPostalCode
+C/macro/-/kDSNAttrPostalCode
+C/econst/-/kDSNAttrPrinterXRISupported
+C/macro/-/kDSNAttrPrinterXRISupported
+C/econst/-/kDSNAttrProtocols
+C/macro/-/kDSNAttrProtocols
+C/econst/-/kDSNAttrRecordAlias
+C/macro/-/kDSNAttrRecordAlias
+C/econst/-/kDSNAttrRecordName
+C/macro/-/kDSNAttrRecordName
+C/econst/-/kDSNAttrRecordType
+C/macro/-/kDSNAttrRecordType
+C/macro/-/kDSNAttrRecRefs
+C/macro/-/kDSNAttrRelationships
+C/macro/-/kDSNAttrResourceInfo
+C/macro/-/kDSNAttrResourceType
+C/econst/-/kDSNAttrSchema
+C/macro/-/kDSNAttrSchema
+C/econst/-/kDSNAttrSearchPath
+C/macro/-/kDSNAttrSearchPath
+C/macro/-/kDSNAttrServicesLocator
+C/econst/-/kDSNAttrSetPasswdMethod
+C/macro/-/kDSNAttrSetPasswdMethod
+C/econst/-/kDSNAttrState
+C/macro/-/kDSNAttrState
+C/econst/-/kDSNAttrStreet
+C/macro/-/kDSNAttrStreet
+C/econst/-/kDSNAttrSubNodes
+C/macro/-/kDSNAttrSubNodes
+C/econst/-/kDSNAttrURL
+C/macro/-/kDSNAttrURL
+C/econst/-/kDSNAttrURLForNSL
+C/macro/-/kDSNAttrURLForNSL
+C/econst/-/kDSNAttrVFSOpts
+C/macro/-/kDSNAttrVFSOpts
+C/econst/-/kDSRecordsAll
+C/macro/-/kDSRecordsAll
+C/econst/-/kDSRecordsNativeAll
+C/macro/-/kDSRecordsNativeAll
+C/econst/-/kDSRecordsStandardAll
+C/macro/-/kDSRecordsStandardAll
+C/econst/-/kDSSetPasswdBestOf
+C/macro/-/kDSSetPasswdBestOf
+C/econst/-/kDSStdAttrTypePrefix
+C/macro/-/kDSStdAttrTypePrefix
+C/econst/-/kDSStdAuth2WayRandom
+C/macro/-/kDSStdAuth2WayRandom
+C/econst/-/kDSStdAuth2WayRandomChangePasswd
+C/macro/-/kDSStdAuth2WayRandomChangePasswd
+C/econst/-/kDSStdAuthAPOP
+C/macro/-/kDSStdAuthAPOP
+C/econst/-/kDSStdAuthChangePasswd
+C/macro/-/kDSStdAuthChangePasswd
+C/econst/-/kDSStdAuthCHAP
+C/macro/-/kDSStdAuthCHAP
+C/econst/-/kDSStdAuthClearText
+C/macro/-/kDSStdAuthClearText
+C/econst/-/kDSStdAuthCRAM_MD5
+C/macro/-/kDSStdAuthCRAM_MD5
+C/econst/-/kDSStdAuthCrypt
+C/macro/-/kDSStdAuthCrypt
+C/econst/-/kDSStdAuthDeleteUser
+C/macro/-/kDSStdAuthDeleteUser
+C/econst/-/kDSStdAuthDIGEST_MD5
+C/macro/-/kDSStdAuthDIGEST_MD5
+C/econst/-/kDSStdAuthGetEffectivePolicy
+C/macro/-/kDSStdAuthGetEffectivePolicy
+C/econst/-/kDSStdAuthGetGlobalPolicy
+C/macro/-/kDSStdAuthGetGlobalPolicy
+C/econst/-/kDSStdAuthGetKerberosPrincipal
+C/macro/-/kDSStdAuthGetKerberosPrincipal
+C/macro/-/kDSStdAuthGetMethodsForUser
+C/econst/-/kDSStdAuthGetPolicy
+C/macro/-/kDSStdAuthGetPolicy
+C/econst/-/kDSStdAuthGetUserData
+C/macro/-/kDSStdAuthGetUserData
+C/econst/-/kDSStdAuthGetUserName
+C/macro/-/kDSStdAuthGetUserName
+C/macro/-/kDSStdAuthKerberosTickets
+C/econst/-/kDSStdAuthMASKE_A
+C/macro/-/kDSStdAuthMASKE_A
+C/econst/-/kDSStdAuthMASKE_B
+C/macro/-/kDSStdAuthMASKE_B
+C/econst/-/kDSStdAuthMethodPrefix
+C/macro/-/kDSStdAuthMethodPrefix
+C/econst/-/kDSStdAuthMPPEMasterKeys
+C/macro/-/kDSStdAuthMPPEMasterKeys
+C/econst/-/kDSStdAuthMSCHAP1
+C/macro/-/kDSStdAuthMSCHAP1
+C/econst/-/kDSStdAuthMSCHAP2
+C/macro/-/kDSStdAuthMSCHAP2
+C/econst/-/kDSStdAuthNewUser
+C/macro/-/kDSStdAuthNewUser
+C/econst/-/kDSStdAuthNewUserWithPolicy
+C/macro/-/kDSStdAuthNewUserWithPolicy
+C/econst/-/kDSStdAuthNodeNativeClearTextOK
+C/macro/-/kDSStdAuthNodeNativeClearTextOK
+C/econst/-/kDSStdAuthNodeNativeNoClearText
+C/macro/-/kDSStdAuthNodeNativeNoClearText
+C/econst/-/kDSStdAuthNTLMv2
+C/macro/-/kDSStdAuthNTLMv2
+C/macro/-/kDSStdAuthNTLMv2WithSessionKey
+C/econst/-/kDSStdAuthReadSecureHash
+C/macro/-/kDSStdAuthReadSecureHash
+C/econst/-/kDSStdAuthSecureHash
+C/macro/-/kDSStdAuthSecureHash
+C/econst/-/kDSStdAuthSetGlobalPolicy
+C/macro/-/kDSStdAuthSetGlobalPolicy
+C/econst/-/kDSStdAuthSetLMHash
+C/macro/-/kDSStdAuthSetLMHash
+C/econst/-/kDSStdAuthSetNTHash
+C/macro/-/kDSStdAuthSetNTHash
+C/econst/-/kDSStdAuthSetPasswd
+C/macro/-/kDSStdAuthSetPasswd
+C/econst/-/kDSStdAuthSetPasswdAsRoot
+C/macro/-/kDSStdAuthSetPasswdAsRoot
+C/econst/-/kDSStdAuthSetPolicy
+C/macro/-/kDSStdAuthSetPolicy
+C/econst/-/kDSStdAuthSetPolicyAsRoot
+C/macro/-/kDSStdAuthSetPolicyAsRoot
+C/econst/-/kDSStdAuthSetUserData
+C/macro/-/kDSStdAuthSetUserData
+C/econst/-/kDSStdAuthSetUserName
+C/macro/-/kDSStdAuthSetUserName
+C/econst/-/kDSStdAuthSetWorkstationPasswd
+C/macro/-/kDSStdAuthSetWorkstationPasswd
+C/econst/-/kDSStdAuthSMB_LM_Key
+C/macro/-/kDSStdAuthSMB_LM_Key
+C/econst/-/kDSStdAuthSMB_NT_Key
+C/macro/-/kDSStdAuthSMB_NT_Key
+C/econst/-/kDSStdAuthSMB_NT_UserSessionKey
+C/macro/-/kDSStdAuthSMB_NT_UserSessionKey
+C/macro/-/kDSStdAuthSMB_NT_WithUserSessionKey
+C/econst/-/kDSStdAuthSMBNTv2UserSessionKey
+C/macro/-/kDSStdAuthSMBNTv2UserSessionKey
+C/econst/-/kDSStdAuthSMBWorkstationCredentialSessionKey
+C/macro/-/kDSStdAuthSMBWorkstationCredentialSessionKey
+C/econst/-/kDSStdAuthWithAuthorizationRef
+C/macro/-/kDSStdAuthWithAuthorizationRef
+C/econst/-/kDSStdAuthWriteSecureHash
+C/macro/-/kDSStdAuthWriteSecureHash
+C/macro/-/kDSStdMachDebugPortName
+C/macro/-/kDSStdMachDSLookupPortName
+C/macro/-/kDSStdMachLocalPortName
+C/econst/-/kDSStdMachPortName
+C/macro/-/kDSStdMachPortName
+C/econst/-/kDSStdRecordTypeAccessControls
+C/macro/-/kDSStdRecordTypeAccessControls
+C/econst/-/kDSStdRecordTypeAFPServer
+C/macro/-/kDSStdRecordTypeAFPServer
+C/econst/-/kDSStdRecordTypeAFPUserAliases
+C/macro/-/kDSStdRecordTypeAFPUserAliases
+C/econst/-/kDSStdRecordTypeAliases
+C/macro/-/kDSStdRecordTypeAliases
+C/econst/-/kDSStdRecordTypeAll
+C/macro/-/kDSStdRecordTypeAll
+C/macro/-/kDSStdRecordTypeAttributeTypes
+C/macro/-/kDSStdRecordTypeAugments
+C/macro/-/kDSStdRecordTypeAutomount
+C/macro/-/kDSStdRecordTypeAutomountMap
+C/econst/-/kDSStdRecordTypeAutoServerSetup
+C/macro/-/kDSStdRecordTypeAutoServerSetup
+C/econst/-/kDSStdRecordTypeBootp
+C/macro/-/kDSStdRecordTypeBootp
+C/econst/-/kDSStdRecordTypeCertificateAuthorities
+C/macro/-/kDSStdRecordTypeCertificateAuthorities
+C/macro/-/kDSStdRecordTypeComputerGroups
+C/econst/-/kDSStdRecordTypeComputerLists
+C/macro/-/kDSStdRecordTypeComputerLists
+C/econst/-/kDSStdRecordTypeComputers
+C/macro/-/kDSStdRecordTypeComputers
+C/econst/-/kDSStdRecordTypeConfig
+C/macro/-/kDSStdRecordTypeConfig
+C/econst/-/kDSStdRecordTypeEthernets
+C/macro/-/kDSStdRecordTypeEthernets
+C/econst/-/kDSStdRecordTypeFileMakerServers
+C/macro/-/kDSStdRecordTypeFileMakerServers
+C/econst/-/kDSStdRecordTypeFTPServer
+C/macro/-/kDSStdRecordTypeFTPServer
+C/econst/-/kDSStdRecordTypeGroupAliases
+C/macro/-/kDSStdRecordTypeGroupAliases
+C/econst/-/kDSStdRecordTypeGroups
+C/macro/-/kDSStdRecordTypeGroups
+C/econst/-/kDSStdRecordTypeHosts
+C/macro/-/kDSStdRecordTypeHosts
+C/econst/-/kDSStdRecordTypeHostServices
+C/macro/-/kDSStdRecordTypeHostServices
+C/econst/-/kDSStdRecordTypeLDAPServer
+C/macro/-/kDSStdRecordTypeLDAPServer
+C/econst/-/kDSStdRecordTypeLocations
+C/macro/-/kDSStdRecordTypeLocations
+C/econst/-/kDSStdRecordTypeMachines
+C/macro/-/kDSStdRecordTypeMachines
+C/econst/-/kDSStdRecordTypeMeta
+C/macro/-/kDSStdRecordTypeMeta
+C/econst/-/kDSStdRecordTypeMounts
+C/macro/-/kDSStdRecordTypeMounts
+C/econst/-/kDSStdRecordTypeNeighborhoods
+C/macro/-/kDSStdRecordTypeNeighborhoods
+C/econst/-/kDSStdRecordTypeNetDomains
+C/macro/-/kDSStdRecordTypeNetDomains
+C/econst/-/kDSStdRecordTypeNetGroups
+C/macro/-/kDSStdRecordTypeNetGroups
+C/econst/-/kDSStdRecordTypeNetworks
+C/macro/-/kDSStdRecordTypeNetworks
+C/econst/-/kDSStdRecordTypeNFS
+C/macro/-/kDSStdRecordTypeNFS
+C/econst/-/kDSStdRecordTypePasswordServer
+C/macro/-/kDSStdRecordTypePasswordServer
+C/econst/-/kDSStdRecordTypePeople
+C/macro/-/kDSStdRecordTypePeople
+C/macro/-/kDSStdRecordTypePlugins
+C/econst/-/kDSStdRecordTypePrefix
+C/macro/-/kDSStdRecordTypePrefix
+C/macro/-/kDSStdRecordTypePresetComputerGroups
+C/econst/-/kDSStdRecordTypePresetComputerLists
+C/macro/-/kDSStdRecordTypePresetComputerLists
+C/macro/-/kDSStdRecordTypePresetComputers
+C/econst/-/kDSStdRecordTypePresetGroups
+C/macro/-/kDSStdRecordTypePresetGroups
+C/econst/-/kDSStdRecordTypePresetUsers
+C/macro/-/kDSStdRecordTypePresetUsers
+C/econst/-/kDSStdRecordTypePrinters
+C/macro/-/kDSStdRecordTypePrinters
+C/econst/-/kDSStdRecordTypePrintService
+C/macro/-/kDSStdRecordTypePrintService
+C/econst/-/kDSStdRecordTypePrintServiceUser
+C/macro/-/kDSStdRecordTypePrintServiceUser
+C/econst/-/kDSStdRecordTypeProtocols
+C/macro/-/kDSStdRecordTypeProtocols
+C/econst/-/kDSStdRecordTypeQTSServer
+C/macro/-/kDSStdRecordTypeQTSServer
+C/macro/-/kDSStdRecordTypeRecordTypes
+C/macro/-/kDSStdRecordTypeRefTableEntries
+C/macro/-/kDSStdRecordTypeResources
+C/econst/-/kDSStdRecordTypeRPC
+C/macro/-/kDSStdRecordTypeRPC
+C/econst/-/kDSStdRecordTypeServer
+C/macro/-/kDSStdRecordTypeServer
+C/econst/-/kDSStdRecordTypeServices
+C/macro/-/kDSStdRecordTypeServices
+C/econst/-/kDSStdRecordTypeSharePoints
+C/macro/-/kDSStdRecordTypeSharePoints
+C/econst/-/kDSStdRecordTypeSMBServer
+C/macro/-/kDSStdRecordTypeSMBServer
+C/econst/-/kDSStdRecordTypeUserAliases
+C/macro/-/kDSStdRecordTypeUserAliases
+C/econst/-/kDSStdRecordTypeUsers
+C/macro/-/kDSStdRecordTypeUsers
+C/econst/-/kDSStdRecordTypeWebServer
+C/macro/-/kDSStdRecordTypeWebServer
+C/macro/-/kDSStdRecordTypMounts
+C/macro/-/kDSStdRecordTypProtocols
+C/macro/-/kDSStdRecordTypRPC
+C/econst/-/kDSStdUserNamesMeta
+C/macro/-/kDSStdUserNamesMeta
+C/econst/-/kDSTagAuthAuthorityBasic
+C/macro/-/kDSTagAuthAuthorityBasic
+C/econst/-/kDSTagAuthAuthorityBetterHashOnly
+C/macro/-/kDSTagAuthAuthorityBetterHashOnly
+C/econst/-/kDSTagAuthAuthorityDisabledUser
+C/macro/-/kDSTagAuthAuthorityDisabledUser
+C/econst/-/kDSTagAuthAuthorityKerberosv5
+C/macro/-/kDSTagAuthAuthorityKerberosv5
+C/econst/-/kDSTagAuthAuthorityLocalCachedUser
+C/macro/-/kDSTagAuthAuthorityLocalCachedUser
+C/econst/-/kDSTagAuthAuthorityLocalWindowsHash
+C/macro/-/kDSTagAuthAuthorityLocalWindowsHash
+C/econst/-/kDSTagAuthAuthorityPasswordServer
+C/macro/-/kDSTagAuthAuthorityPasswordServer
+C/econst/-/kDSTagAuthAuthorityShadowHash
+C/macro/-/kDSTagAuthAuthorityShadowHash
+C/econst/-/kDSValueAuthAuthorityBasic
+C/macro/-/kDSValueAuthAuthorityBasic
+C/econst/-/kDSValueAuthAuthorityDefault
+C/macro/-/kDSValueAuthAuthorityDefault
+C/econst/-/kDSValueAuthAuthorityDisabledUser
+C/macro/-/kDSValueAuthAuthorityDisabledUser
+C/econst/-/kDSValueAuthAuthorityKerberosv5
+C/macro/-/kDSValueAuthAuthorityKerberosv5
+C/econst/-/kDSValueAuthAuthorityLocalCachedUser
+C/macro/-/kDSValueAuthAuthorityLocalCachedUser
+C/econst/-/kDSValueAuthAuthorityLocalWindowsHash
+C/macro/-/kDSValueAuthAuthorityLocalWindowsHash
+C/econst/-/kDSValueAuthAuthorityPasswordServerPrefix
+C/macro/-/kDSValueAuthAuthorityPasswordServerPrefix
+C/econst/-/kDSValueAuthAuthorityShadowHash
+C/macro/-/kDSValueAuthAuthorityShadowHash
+C/econst/-/kDSValueNonCryptPasswordMarker
+C/macro/-/kDSValueNonCryptPasswordMarker
+C/econst/-/kDSValueNSLDynamicNeighboodType
+C/macro/-/kDSValueNSLDynamicNeighborhoodType
+C/econst/-/kDSValueNSLLocalNeighboodType
+C/macro/-/kDSValueNSLLocalNeighborhoodType
+C/econst/-/kDSValueNSLStaticNeighboodType
+C/macro/-/kDSValueNSLStaticNeighborhoodType
+C/econst/-/kDSValueNSLTopLevelNeighborhoodType
+C/macro/-/kDSValueNSLTopLevelNeighborhoodType
+C/econst/-/kDurationForever
+C/econst/-/kDurationImmediate
+C/econst/-/kDurationMicrosecond
+C/econst/-/kDurationMillisecond
+C/econst/-/kDVDAMGMDomain
+C/econst/-/kDVDAspectRatio16x9
+C/econst/-/kDVDAspectRatio4x3
+C/econst/-/kDVDAspectRatio4x3PanAndScan
+C/econst/-/kDVDAspectRatioLetterBox
+C/econst/-/kDVDAspectRatioUninitialized
+C/econst/-/kDVDAudioAC3Format
+C/econst/-/kDVDAudioDTSFormat
+C/econst/-/kDVDAudioExtensionCodeDirectorsComment1
+C/econst/-/kDVDAudioExtensionCodeDirectorsComment2
+C/econst/-/kDVDAudioExtensionCodeNormalCaptions
+C/econst/-/kDVDAudioExtensionCodeNotSpecified
+C/econst/-/kDVDAudioExtensionCodeNVisualImpaired
+C/econst/-/kDVDAudioMPEG1Format
+C/econst/-/kDVDAudioMPEG2Format
+C/econst/-/kDVDAudioPCMFormat
+C/econst/-/kDVDAudioSDDSFormat
+C/econst/-/kDVDAudioUnknownFormat
+C/econst/-/kDVDErrorAlreadyPlaying
+C/econst/-/kDVDErrorAuthentification
+C/econst/-/kDVDErrorDontNeedWakeup
+C/econst/-/kDVDErrordRegionCodeUninitialized
+C/econst/-/kDVDErrorGraphicsDevice
+C/econst/-/kDVDErrorInitializingLib
+C/econst/-/kDVDErrorInvalidRegionCode
+C/econst/-/kDVDErrorIsAlreadySleeping
+C/econst/-/kDVDErrorMismatchedRegionCode
+C/econst/-/kDVDErrorMissingDrive
+C/econst/-/kDVDErrorMissingGraphicsDevice
+C/econst/-/kDVDErrorNavigation
+C/econst/-/kDVDErrorNoAudioOutputDevice
+C/econst/-/kDVDErrorNoFatalErrCallBack
+C/econst/-/kDVDErrorNoMoreRegionSets
+C/econst/-/kDVDErrorNotAllowedDuringPlayback
+C/econst/-/kDVDErrorNotSupportedConfiguration
+C/econst/-/kDVDErrorNotSupportedFunction
+C/econst/-/kDVDErrorNoValidMedia
+C/econst/-/kDVDErrorOutOfVideoMemory
+C/econst/-/kDVDErrorPlaybackOpen
+C/econst/-/kDVDErrorRgnMgrInstall
+C/econst/-/kDVDErrorSystem
+C/econst/-/kDVDErrorTimeOutOfRange
+C/econst/-/kDVDErrorUnassignedGrafPort
+C/econst/-/kDVDErrorUninitializedLib
+C/econst/-/kDVDErrorUnknown
+C/econst/-/kDVDErrorUserActionNoOp
+C/econst/-/kDVDErrorWrongParam
+C/econst/-/kDVDFormatNTSC
+C/econst/-/kDVDFormatPAL
+C/econst/-/kDVDFormatUninitialized
+C/econst/-/kDVDFPDomain
+C/econst/-/kDVDMenuAngle
+C/econst/-/kDVDMenuAudio
+C/econst/-/kDVDMenuNone
+C/econst/-/kDVDMenuPTT
+C/econst/-/kDVDMenuRoot
+C/econst/-/kDVDMenuSubPicture
+C/econst/-/kDVDMenuTitle
+C/econst/-/kDVDRegionCode1
+C/econst/-/kDVDRegionCode2
+C/econst/-/kDVDRegionCode3
+C/econst/-/kDVDRegionCode4
+C/econst/-/kDVDRegionCode5
+C/econst/-/kDVDRegionCode6
+C/econst/-/kDVDRegionCode7
+C/econst/-/kDVDRegionCode8
+C/econst/-/kDVDRegionCodeUninitialized
+C/econst/-/kDVDScanDirectionBackward
+C/econst/-/kDVDScanDirectionForward
+C/econst/-/kDVDStateIdle
+C/econst/-/kDVDStatePaused
+C/econst/-/kDVDStatePlaying
+C/econst/-/kDVDStatePlayingSlow
+C/econst/-/kDVDStatePlayingStill
+C/econst/-/kDVDStateScanning
+C/econst/-/kDVDStateStopped
+C/econst/-/kDVDStateUnknown
+C/econst/-/kDVDSTOPDomain
+C/econst/-/kDVDSubpictureExtensionCodeCaption4Children
+C/econst/-/kDVDSubpictureExtensionCodeCaptionBiggerSize
+C/econst/-/kDVDSubpictureExtensionCodeCaptionNormalSize
+C/econst/-/kDVDSubpictureExtensionCodeClosedCaption4Children
+C/econst/-/kDVDSubpictureExtensionCodeClosedCaptionBiggerSize
+C/econst/-/kDVDSubpictureExtensionCodeClosedCaptionNormalSize
+C/econst/-/kDVDSubpictureExtensionCodeForcedCaption
+C/econst/-/kDVDSubpictureExtensionCodeNotSpecified
+C/econst/-/kDVDSubpictureExtensionDirectorsComment4Children
+C/econst/-/kDVDSubpictureExtensionDirectorsCommentBiggerSize
+C/econst/-/kDVDSubpictureExtensionDirectorsCommentNormalSize
+C/econst/-/kDVDTimeCodeChapterDurationSeconds
+C/econst/-/kDVDTimeCodeChapterElapsedSeconds
+C/econst/-/kDVDTimeCodeChapterRemainingSeconds
+C/econst/-/kDVDTimeCodeElapsedSeconds
+C/econst/-/kDVDTimeCodeRemainingSeconds
+C/econst/-/kDVDTimeCodeTitleDurationSeconds
+C/econst/-/kDVDTimeCodeUninitialized
+C/econst/-/kDVDTTDomain
+C/econst/-/kDVDTTGRDomain
+C/econst/-/kDVDUOPAngleChange
+C/econst/-/kDVDUOPAudioStreamChange
+C/econst/-/kDVDUOPBackwardScan
+C/econst/-/kDVDUOPButton
+C/econst/-/kDVDUOPForwardScan
+C/econst/-/kDVDUOPGoUp
+C/econst/-/kDVDUOPKaraokeModeChange
+C/econst/-/kDVDUOPMenuCallAngle
+C/econst/-/kDVDUOPMenuCallAudio
+C/econst/-/kDVDUOPMenuCallPTT
+C/econst/-/kDVDUOPMenuCallRoot
+C/econst/-/kDVDUOPMenuCallSubPicture
+C/econst/-/kDVDUOPMenuCallTitle
+C/econst/-/kDVDUOPNextPGSearch
+C/econst/-/kDVDUOPPauseOff
+C/econst/-/kDVDUOPPauseOn
+C/econst/-/kDVDUOPPrevTopPGSearch
+C/econst/-/kDVDUOPPTTPlaySearch
+C/econst/-/kDVDUOPResume
+C/econst/-/kDVDUOPScanOff
+C/econst/-/kDVDUOPStillOff
+C/econst/-/kDVDUOPStop
+C/econst/-/kDVDUOPTimePlaySearch
+C/econst/-/kDVDUOPTimePTTSearch
+C/econst/-/kDVDUOPTitlePlay
+C/econst/-/kDVDUOPVideoModeChange
+C/econst/-/kDVDUserNavigationEnter
+C/econst/-/kDVDUserNavigationMoveDown
+C/econst/-/kDVDUserNavigationMoveLeft
+C/econst/-/kDVDUserNavigationMoveRight
+C/econst/-/kDVDUserNavigationMoveUp
+C/econst/-/kDVDVMGMDomain
+C/econst/-/kDVDVTSMDomain
+C/econst/-/keAttrReadOnly
+C/econst/-/keAttrReadWrite
+JavaScript/clconst/WebGLRenderingContext/KEEP
+Objective-C/instm/NSDocument/keepBackupFile
+C/econst/-/kEffectRawSource
+C/econst/-/kEncryptPassword
+C/econst/-/kEndOfSentence
+C/econst/-/kEndOfWord
+C/tdef/-/kern_ctl_ref
+C/tag/-/kern_ctl_reg
+C/tag/-/kern_event_msg
+C/func/-/kernel_thread_start
+Objective-C/clm/CIKernel/kernelsWithString:
+JavaScript/data/SVGFEDiffuseLightingElement/kernelUnitLengthX
+JavaScript/data/SVGFEDiffuseLightingElement/kernelUnitLengthY
+C/macro/-/KEV_APPLESHARE_CLASS
+C/macro/-/KEV_CTL_DEREGISTERED
+C/macro/-/KEV_CTL_REGISTERED
+C/macro/-/KEV_CTL_SUBCLASS
+C/tag/-/kev_d_vectors
+C/macro/-/KEV_FIREWALL_CLASS
+C/macro/-/KEV_IEEE80211_CLASS
+C/macro/-/KEV_IOKIT_CLASS
+C/macro/-/KEV_IP6FW_ADD
+C/macro/-/KEV_IP6FW_DEL
+C/macro/-/KEV_IP6FW_ENABLE
+C/macro/-/KEV_IP6FW_FLUSH
+C/macro/-/KEV_IP6FW_SUBCLASS
+C/macro/-/KEV_IPFW_ADD
+C/macro/-/KEV_IPFW_DEL
+C/macro/-/KEV_IPFW_ENABLE
+C/macro/-/KEV_IPFW_FLUSH
+C/macro/-/KEV_IPFW_SUBCLASS
+C/macro/-/KEV_MEMORYSTATUS_SUBCLASS
+C/tag/-/kev_msg
+C/macro/-/KEV_MSG_HEADER_SIZE
+C/func/-/kev_msg_post
+C/macro/-/KEV_NETWORK_CLASS
+C/tag/-/kev_request
+C/macro/-/KEV_SYSTEM_CLASS
+C/macro/-/KEV_VENDOR_APPLE
+C/tag/-/kev_vendor_code
+C/func/-/kev_vendor_code_find
+C/macro/-/KEV_VENDOR_CODE_MAX_STR_LEN
+C/func/-/kevent
+C/func/-/kevent64
+C/econst/-/kEventABPeoplePickerDisplayedPropertyChanged
+C/econst/-/kEventABPeoplePickerGroupDoubleClicked
+C/econst/-/kEventABPeoplePickerGroupSelectionChanged
+C/econst/-/kEventABPeoplePickerNameDoubleClicked
+C/econst/-/kEventABPeoplePickerNameSelectionChanged
+C/econst/-/kEventABPeoplePickerValueSelectionChanged
+C/econst/-/kEventAccessibleGetAllActionNames
+C/econst/-/kEventAccessibleGetAllAttributeNames
+C/econst/-/kEventAccessibleGetAllParameterizedAttributeNames
+C/econst/-/kEventAccessibleGetChildAtPoint
+C/econst/-/kEventAccessibleGetFocusedChild
+C/econst/-/kEventAccessibleGetNamedActionDescription
+C/econst/-/kEventAccessibleGetNamedAttribute
+C/econst/-/kEventAccessibleIsNamedAttributeSettable
+C/econst/-/kEventAccessiblePerformNamedAction
+C/econst/-/kEventAccessibleSetNamedAttribute
+C/econst/-/kEventClassABPeoplePicker
+C/econst/-/kEventClassAccessibility
+C/econst/-/kEventParamABPickerRef
+C/econst/-/kEventParamAccessibleActionDescription
+C/econst/-/kEventParamAccessibleActionName
+C/econst/-/kEventParamAccessibleActionNames
+C/econst/-/kEventParamAccessibleAttributeName
+C/econst/-/kEventParamAccessibleAttributeNames
+C/econst/-/kEventParamAccessibleAttributeParameter
+C/econst/-/kEventParamAccessibleAttributeSettable
+C/econst/-/kEventParamAccessibleAttributeValue
+C/econst/-/kEventParamAccessibleChild
+C/econst/-/kEventParamAccessibleEventQueued
+C/econst/-/kEventParamAccessibleObject
+C/macro/-/kExportKeyCustomProperties
+C/macro/-/kExportKeyEXIFProperties
+C/macro/-/kExportKeyHierarchicalKeywords
+C/macro/-/kExportKeyImageHasAdjustments
+C/macro/-/kExportKeyImageSize
+C/macro/-/kExportKeyIPTCProperties
+C/macro/-/kExportKeyIsRAWImage
+C/macro/-/kExportKeyKeywords
+C/macro/-/kExportKeyMainRating
+C/macro/-/kExportKeyMasterPath
+C/macro/-/kExportKeyProjectName
+C/macro/-/kExportKeyReferencedMasterPath
+C/macro/-/kExportKeyThumbnailImage
+C/macro/-/kExportKeyUniqueID
+C/macro/-/kExportKeyVersionName
+C/macro/-/kExportKeyWhiteBalanceTemperature
+C/macro/-/kExportKeyWhiteBalanceTint
+C/macro/-/kExportKeyXMPString
+C/econst/-/kExtAudioFileError_AsyncWriteBufferOverflow
+C/econst/-/kExtAudioFileError_AsyncWriteTooLarge
+C/econst/-/kExtAudioFileError_InvalidChannelMap
+C/econst/-/kExtAudioFileError_InvalidDataFormat
+C/econst/-/kExtAudioFileError_InvalidOperationOrder
+C/econst/-/kExtAudioFileError_InvalidProperty
+C/econst/-/kExtAudioFileError_InvalidPropertySize
+C/econst/-/kExtAudioFileError_InvalidSeek
+C/econst/-/kExtAudioFileError_MaxPacketSizeUnknown
+C/econst/-/kExtAudioFileError_NonPCMClientFormat
+C/econst/-/kExtAudioFileProperty_AudioConverter
+C/econst/-/kExtAudioFileProperty_AudioFile
+C/econst/-/kExtAudioFileProperty_ClientChannelLayout
+C/econst/-/kExtAudioFileProperty_ClientDataFormat
+C/econst/-/kExtAudioFileProperty_ClientMaxPacketSize
+C/econst/-/kExtAudioFileProperty_ConverterConfig
+C/econst/-/kExtAudioFileProperty_FileChannelLayout
+C/econst/-/kExtAudioFileProperty_FileDataFormat
+C/econst/-/kExtAudioFileProperty_FileLengthFrames
+C/econst/-/kExtAudioFileProperty_FileMaxPacketSize
+C/econst/-/kExtAudioFileProperty_IOBuffer
+C/econst/-/kExtAudioFileProperty_IOBufferSizeBytes
+C/func/-/KextManagerCreateURLForBundleIdentifier
+C/func/-/KextManagerLoadKextWithIdentifier
+C/func/-/KextManagerLoadKextWithURL
+Objective-C/instm/NSScriptObjectSpecifier/key
+Objective-C/instm/NSSortDescriptor/key
+Objective-C/instm/NSObject/key
+JavaScript/data/StorageEvent/key
+JavaScript/instm/Storage/key
+C/func/-/key_defined
+JavaScript/clconst/KeyboardEvent/KEY_LOCATION_LEFT
+JavaScript/clconst/KeyboardEvent/KEY_LOCATION_NUMPAD
+JavaScript/clconst/KeyboardEvent/KEY_LOCATION_RIGHT
+JavaScript/clconst/KeyboardEvent/KEY_LOCATION_STANDARD
+C/func/-/key_name
+JavaScript/data/DOMWindow/KeyboardEvent
+JavaScript/cl/-/KeyboardEvent
+Objective-C/clm/NSColor/keyboardFocusIndicatorColor
+Objective-C/instm/NSTextInputContext/keyboardInputSources
+Objective-C/instp/NSTextInputContext/keyboardInputSources
+C/func/-/keybound
+Objective-C/instm/NSMatrix/keyCell
+Objective-C/instm/SFKeychainSavePanel/keychain
+Objective-C/instm/NSScriptObjectSpecifier/keyClassDescription
+Objective-C/instm/NSEvent/keyCode
+JavaScript/data/KeyboardEvent/keyCode
+JavaScript/data/UIEvent/keyCode
+JavaScript/clconst/Event/KEYDOWN
+Objective-C/instm/NSWindow/keyDown:
+Objective-C/instm/NSResponder/keyDown:
+Objective-C/intfm/FxOnScreenControl/keyDown:positionY:keyPressed:modifiers:forceUpdate:didHandle:time:
+Objective-C/instm/NSDictionary/keyEnumerator
+Objective-C/instm/NSMapTable/keyEnumerator
+Objective-C/instm/NSButton/keyEquivalent
+Objective-C/instm/NSButtonCell/keyEquivalent
+Objective-C/instm/NSMenuItem/keyEquivalent
+Objective-C/instm/NSCell/keyEquivalent
+Objective-C/instm/NSButtonCell/keyEquivalentFont
+Objective-C/instm/NSButton/keyEquivalentModifierMask
+Objective-C/instm/NSButtonCell/keyEquivalentModifierMask
+Objective-C/instm/NSMenuItem/keyEquivalentModifierMask
+Objective-C/instm/NSMenuView/keyEquivalentOffset
+Objective-C/instm/NSMenuItemCell/keyEquivalentRectForBounds:
+Objective-C/instm/NSMenuItemCell/keyEquivalentWidth
+Objective-C/instm/NSMenuView/keyEquivalentWidth
+Objective-C/clm/NSEvent/keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:
+Objective-C/instm/NSFileWrapper/keyForFileWrapper:
+JavaScript/data/KeyboardEvent/keyIdentifier
+JavaScript/data/KeyboardEvent/keyLocation
+C/func/-/keyname
+C/func/-/keyok
+C/func/-/keypad
+Objective-C/instp/CAPropertyAnimation/keyPath
+Objective-C/instm/CAPropertyAnimation/keyPath
+Objective-C/instm/NSExpression/keyPath
+Objective-C/intfm/NSPrintPanelAccessorizing/keyPathsForValuesAffectingPreview
+Objective-C/clm/NSObject/keyPathsForValuesAffectingValueForKey:
+Objective-C/instm/NSMapTable/keyPointerFunctions
+JavaScript/clconst/Event/KEYPRESS
+Objective-C/clm/NSEvent/keyRepeatDelay
+Objective-C/clm/NSEvent/keyRepeatInterval
+Objective-C/instm/NSDictionary/keysOfEntriesPassingTest:
+Objective-C/instm/NSDictionary/keysOfEntriesWithOptions:passingTest:
+Objective-C/instm/NSMoveCommand/keySpecifier
+Objective-C/instm/NSCloneCommand/keySpecifier
+Objective-C/instm/NSSetCommand/keySpecifier
+Objective-C/instm/NSDeleteCommand/keySpecifier
+C/econst/-/keySRRecognizer
+C/econst/-/keySRSpeechResult
+C/econst/-/keySRSpeechStatus
+Objective-C/instm/NSDictionary/keysSortedByValueUsingComparator:
+Objective-C/instm/NSDictionary/keysSortedByValueUsingSelector:
+Objective-C/instm/NSDictionary/keysSortedByValueWithOptions:usingComparator:
+JavaScript/data/WebKitCSSKeyframeRule/keyText
+Objective-C/instm/CAKeyframeAnimation/keyTimes
+Objective-C/instp/CAKeyframeAnimation/keyTimes
+JavaScript/clconst/Event/KEYUP
+Objective-C/instm/NSResponder/keyUp:
+Objective-C/intfm/FxOnScreenControl/keyUp:positionY:keyPressed:modifiers:forceUpdate:didHandle:time:
+Objective-C/instm/NSWindow/keyViewSelectionDirection
+Objective-C/instm/NSApplication/keyWindow
+Objective-C/instm/NSScriptClassDescription/keyWithAppleEventCode:
+Objective-C/instm/NSAppleEventDescriptor/keywordForDescriptorAtIndex:
+C/econst/-/kFailedToInit
+C/econst/-/kFemale
+C/macro/-/kFFEffectType_ConstantForce_ID
+C/macro/-/kFFEffectType_CustomForce_ID
+C/macro/-/kFFEffectType_Damper_ID
+C/macro/-/kFFEffectType_Friction_ID
+C/macro/-/kFFEffectType_Inertia_ID
+C/macro/-/kFFEffectType_RampForce_ID
+C/macro/-/kFFEffectType_SawtoothDown_ID
+C/macro/-/kFFEffectType_SawtoothUp_ID
+C/macro/-/kFFEffectType_Sine_ID
+C/macro/-/kFFEffectType_Spring_ID
+C/macro/-/kFFEffectType_Square_ID
+C/macro/-/kFFEffectType_Triangle_ID
+C/econst/-/kFFTDirection_Forward
+C/econst/-/kFFTDirection_Inverse
+C/econst/-/kFFTRadix2
+C/econst/-/kFFTRadix3
+C/econst/-/kFFTRadix5
+C/econst/-/kFileSec_ACL
+C/econst/-/kFileSec_GRPUUID
+C/econst/-/kFileSec_Inherit
+C/econst/-/kFileSec_REMOVEACL
+C/econst/-/kFileSec_UUID
+C/econst/-/kFNDirectoryModifiedMessage
+C/econst/-/kFNNoImplicitAllSubscription
+C/econst/-/kFNNotifyInBackground
+C/econst/-/kFPAccessDenied
+C/econst/-/kFPAccessRightsBit
+C/econst/-/kFPAttributeBit
+C/econst/-/kFPAuthContinue
+C/econst/-/kFPBackupDateBit
+C/econst/-/kFPBackUpNeededBit
+C/econst/-/kFPBadIDErr
+C/econst/-/kFPBadUAM
+C/econst/-/kFPBadVersNum
+C/econst/-/kFPBitmapErr
+C/econst/-/kFPCallNotSupported
+C/econst/-/kFPCantMove
+C/econst/-/kFPCantRename
+C/econst/-/kFPCatalogChanged
+C/econst/-/kFPContainsSharedErr
+C/econst/-/kFPCopyProtectBit
+C/econst/-/kFPCreateDateBit
+C/econst/-/kFPDAlreadyOpenBit
+C/econst/-/kFPDataForkLenBit
+C/econst/-/kFPDeleteInhibitBit
+C/econst/-/kFPDenyConflict
+C/econst/-/kFPDiffVolErr
+C/econst/-/kFPDirNotEmpty
+C/econst/-/kFPDirNotFound
+C/econst/-/kFPDiskFull
+C/econst/-/kFPDiskQuotaExceeded
+C/econst/-/kFPEOFErr
+C/econst/-/kFPExtDataForkLenBit
+C/econst/-/kFPExtRsrcForkLenBit
+C/econst/-/kFPFileBusy
+C/econst/-/kFPFinderInfoBit
+C/econst/-/kFPFlatVol
+C/econst/-/kFPGroupIDBit
+C/econst/-/kFPIconTypeError
+C/econst/-/kFPIDExists
+C/econst/-/kFPIDNotFound
+C/econst/-/kFPInsideSharedErr
+C/econst/-/kFPInsideTrashErr
+C/econst/-/kFPInvisibleBit
+C/econst/-/kFPItemNotFound
+C/econst/-/kFPLaunchLimitBit
+C/econst/-/kFPLockErr
+C/econst/-/kFPLongCreate
+C/econst/-/kFPLongName
+C/econst/-/kFPLongNameBit
+C/econst/-/kFPMiscErr
+C/econst/-/kFPModDateBit
+C/econst/-/kFPMultiUserBit
+C/econst/-/kFPNodeIDBit
+C/econst/-/kFPNoErr
+C/econst/-/kFPNoMoreLocks
+C/econst/-/kFPNoMoreSessions
+C/econst/-/kFPNoServer
+C/econst/-/kFPObjectExists
+C/econst/-/kFPObjectLocked
+C/econst/-/kFPObjectNotFound
+C/econst/-/kFPObjectTypeErr
+C/econst/-/kFPOffspringCountBit
+C/econst/-/kFPOwnerIDBit
+C/econst/-/kFPParamErr
+C/econst/-/kFPParentDirIDBit
+C/econst/-/kFPProDOSInfoBit
+C/econst/-/kFPPwdExpiredErr
+C/econst/-/kFPPwdNeedsChangeErr
+C/econst/-/kFPPwdPolicyErr
+C/econst/-/kFPPwdSameErr
+C/econst/-/kFPPwdTooShortErr
+C/econst/-/kFPRAlreadyOpenBit
+C/econst/-/kFPRangeNotLocked
+C/econst/-/kFPRangeOverlap
+C/econst/-/kFPRenameInhibitBit
+C/econst/-/kFPRsrcForkLenBit
+C/econst/-/kFPSameObjectErr
+C/econst/-/kFPServerGoingDown
+C/econst/-/kFPSessClosed
+C/econst/-/kFPSetClearBit
+C/econst/-/kFPShortName
+C/econst/-/kFPShortNameBit
+C/econst/-/kFPSoftCreate
+C/econst/-/kFPSystemBit
+C/econst/-/kFPTooManyFilesOpen
+C/econst/-/kFPUnixPrivsBit
+C/econst/-/kFPUserNotAuth
+C/econst/-/kFPUTF8Name
+C/econst/-/kFPUTF8NameBit
+C/econst/-/kFPUUID
+C/econst/-/kFPVolAttributeBit
+C/econst/-/kFPVolBackupDateBit
+C/econst/-/kFPVolBlockSizeBit
+C/econst/-/kFPVolBytesFreeBit
+C/econst/-/kFPVolBytesTotalBit
+C/econst/-/kFPVolCreateDateBit
+C/econst/-/kFPVolExtBytesFreeBit
+C/econst/-/kFPVolExtBytesTotalBit
+C/econst/-/kFPVolIDBit
+C/econst/-/kFPVolLocked
+C/econst/-/kFPVolModDateBit
+C/econst/-/kFPVolNameBit
+C/econst/-/kFPVolSignatureBit
+C/econst/-/kFPWriteInhibitBit
+C/econst/-/kFSAliasInfoFinderInfo
+C/econst/-/kFSAliasInfoFSInfo
+C/econst/-/kFSAliasInfoIDs
+C/econst/-/kFSAliasInfoIsDirectory
+C/econst/-/kFSAliasInfoNone
+C/econst/-/kFSAliasInfoTargetCreateDate
+C/econst/-/kFSAliasInfoVolumeCreateDate
+C/econst/-/kFSAliasInfoVolumeFlags
+C/econst/-/kFSAllocAllOrNothingMask
+C/econst/-/kFSAllocContiguousMask
+C/econst/-/kFSAllocDefaultFlags
+C/econst/-/kFSAllocNoRoundUpMask
+C/econst/-/kFSAllocReservedMask
+C/econst/-/kFSCatInfoAccessDate
+C/econst/-/kFSCatInfoAllDates
+C/econst/-/kFSCatInfoAttrMod
+C/econst/-/kFSCatInfoBackupDate
+C/econst/-/kFSCatInfoContentMod
+C/econst/-/kFSCatInfoCreateDate
+C/econst/-/kFSCatInfoDataSizes
+C/econst/-/kFSCatInfoFinderInfo
+C/econst/-/kFSCatInfoFinderXInfo
+C/econst/-/kFSCatInfoGettableInfo
+C/econst/-/kFSCatInfoNodeFlags
+C/econst/-/kFSCatInfoNodeID
+C/econst/-/kFSCatInfoNone
+C/econst/-/kFSCatInfoParentDirID
+C/econst/-/kFSCatInfoPermissions
+C/econst/-/kFSCatInfoReserved
+C/econst/-/kFSCatInfoRsrcSizes
+C/econst/-/kFSCatInfoSetOwnership
+C/econst/-/kFSCatInfoSettableInfo
+C/econst/-/kFSCatInfoSharingFlags
+C/econst/-/kFSCatInfoTextEncoding
+C/econst/-/kFSCatInfoUserAccess
+C/econst/-/kFSCatInfoUserPrivs
+C/econst/-/kFSCatInfoValence
+C/econst/-/kFSCatInfoVolume
+C/econst/FSEventStreamCreateFlags/kFSEventStreamCreateFlagIgnoreSelf
+C/econst/FSEventStreamCreateFlags/kFSEventStreamCreateFlagNoDefer
+C/econst/FSEventStreamCreateFlags/kFSEventStreamCreateFlagNone
+C/econst/FSEventStreamCreateFlags/kFSEventStreamCreateFlagUseCFTypes
+C/econst/FSEventStreamCreateFlags/kFSEventStreamCreateFlagWatchRoot
+C/econst/FSEventStreamEventFlags/kFSEventStreamEventFlagEventIdsWrapped
+C/econst/FSEventStreamEventFlags/kFSEventStreamEventFlagHistoryDone
+C/econst/FSEventStreamEventFlags/kFSEventStreamEventFlagKernelDropped
+C/econst/FSEventStreamEventFlags/kFSEventStreamEventFlagMount
+C/econst/FSEventStreamEventFlags/kFSEventStreamEventFlagMustScanSubDirs
+C/econst/FSEventStreamEventFlags/kFSEventStreamEventFlagNone
+C/econst/FSEventStreamEventFlags/kFSEventStreamEventFlagRootChanged
+C/econst/FSEventStreamEventFlags/kFSEventStreamEventFlagUnmount
+C/econst/FSEventStreamEventFlags/kFSEventStreamEventFlagUserDropped
+C/econst/-/kFSFileOperationDefaultOptions
+C/econst/-/kFSFileOperationDoNotMoveAcrossVolumes
+C/econst/-/kFSFileOperationOverwrite
+C/econst/-/kFSFileOperationSkipPreflight
+C/econst/-/kFSFileOperationSkipSourcePermissionErrors
+C/econst/-/kFSInvalidVolumeRefNum
+C/econst/-/kFSIterateDelete
+C/econst/-/kFSIterateFlat
+C/econst/-/kFSIterateReserved
+C/econst/-/kFSIterateSubtree
+C/econst/-/kFSNodeCopyProtectBit
+C/econst/-/kFSNodeCopyProtectMask
+C/econst/-/kFSNodeDataOpenBit
+C/econst/-/kFSNodeDataOpenMask
+C/econst/-/kFSNodeForkOpenBit
+C/econst/-/kFSNodeForkOpenMask
+C/econst/-/kFSNodeHardLinkBit
+C/econst/-/kFSNodeHardLinkMask
+C/econst/-/kFSNodeInSharedBit
+C/econst/-/kFSNodeInSharedMask
+C/econst/-/kFSNodeIsDirectoryBit
+C/econst/-/kFSNodeIsDirectoryMask
+C/econst/-/kFSNodeIsMountedBit
+C/econst/-/kFSNodeIsMountedMask
+C/econst/-/kFSNodeIsSharePointBit
+C/econst/-/kFSNodeIsSharePointMask
+C/econst/-/kFSNodeLockedBit
+C/econst/-/kFSNodeLockedMask
+C/econst/-/kFSNodeResOpenBit
+C/econst/-/kFSNodeResOpenMask
+C/data/-/kFSOperationBytesCompleteKey
+C/data/-/kFSOperationBytesRemainingKey
+C/data/-/kFSOperationObjectsCompleteKey
+C/data/-/kFSOperationObjectsRemainingKey
+C/econst/-/kFSOperationStageComplete
+C/econst/-/kFSOperationStagePreflighting
+C/econst/-/kFSOperationStageRunning
+C/econst/-/kFSOperationStageUndefined
+C/data/-/kFSOperationThroughputKey
+C/data/-/kFSOperationTotalBytesKey
+C/data/-/kFSOperationTotalObjectsKey
+C/data/-/kFSOperationTotalUserVisibleObjectsKey
+C/data/-/kFSOperationUserVisibleObjectsCompleteKey
+C/data/-/kFSOperationUserVisibleObjectsRemainingKey
+C/econst/-/kFSPathMakeRefDefaultOptions
+C/econst/-/kFSPathMakeRefDoNotFollowLeafSymlink
+C/econst/-/kFSVolFlagDefaultVolumeBit
+C/econst/-/kFSVolFlagDefaultVolumeMask
+C/econst/-/kFSVolFlagFilesOpenBit
+C/econst/-/kFSVolFlagFilesOpenMask
+C/econst/-/kFSVolFlagHardwareLockedBit
+C/econst/-/kFSVolFlagHardwareLockedMask
+C/econst/-/kFSVolFlagSoftwareLockedBit
+C/econst/-/kFSVolFlagSoftwareLockedMask
+C/econst/-/kFSVolInfoBackupDate
+C/econst/-/kFSVolInfoBlocks
+C/econst/-/kFSVolInfoCheckedDate
+C/econst/-/kFSVolInfoCreateDate
+C/econst/-/kFSVolInfoDataClump
+C/econst/-/kFSVolInfoDirCount
+C/econst/-/kFSVolInfoDriveInfo
+C/econst/-/kFSVolInfoFileCount
+C/econst/-/kFSVolInfoFinderInfo
+C/econst/-/kFSVolInfoFlags
+C/econst/-/kFSVolInfoFSInfo
+C/econst/-/kFSVolInfoGettableInfo
+C/econst/-/kFSVolInfoModDate
+C/econst/-/kFSVolInfoNextAlloc
+C/econst/-/kFSVolInfoNextID
+C/econst/-/kFSVolInfoNone
+C/econst/-/kFSVolInfoRsrcClump
+C/econst/-/kFSVolInfoSettableInfo
+C/econst/-/kFSVolInfoSizes
+Objective-C/econst/FTSFileType/kFTSFileTypeFile
+Objective-C/econst/FTSFileType/kFTSFileTypeFolder
+C/data/-/kFTSListingNameKey
+C/data/-/kFTSListingSizeKey
+C/data/-/kFTSListingTypeKey
+C/data/-/kFTSProgressBytesTotalKey
+C/data/-/kFTSProgressBytesTransferredKey
+C/data/-/kFTSProgressEstimatedTimeKey
+C/data/-/kFTSProgressPercentageKey
+C/data/-/kFTSProgressTimeElapsedKey
+C/data/-/kFTSProgressTransferRateKey
+C/econst/-/kfullPrivileges
+C/econst/-/kFxDepth_FLOAT16
+C/econst/-/kFxDepth_FLOAT32
+C/econst/-/kFxDepth_UINT8
+C/econst/-/kFxDrawingCoordinates_CANVAS
+C/econst/-/kFxDrawingCoordinates_DOCUMENT
+C/econst/-/kFxDrawingCoordinates_OBJECT
+C/econst/-/kFxDrawingCoordinates_OBJECT_CENTERED
+Objective-C/macro/-/kFxDuration_Undefined
+C/econst/-/kFxField_LOWER
+C/econst/-/kFxField_NONE
+C/econst/-/kFxField_UPPER
+C/econst/-/kFxFieldOrder_LOWER_FIRST
+C/econst/-/kFxFieldOrder_PROGRESSIVE
+C/econst/-/kFxFieldOrder_UPPER_FIRST
+C/econst/-/kFxImageColorInfo_RGB_GAMMA_DEFAULT_MACINTOSH_DISPLAY
+C/econst/-/kFxImageColorInfo_RGB_GAMMA_VIDEO
+C/econst/-/kFxImageColorInfo_RGB_LINEAR
+C/econst/-/kFxImageColorInfo_YCbCr_R601
+C/econst/-/KFXImageColorInfo_YCbCr_R709
+C/econst/-/kFxImageOrigin_BOTTOM_LEFT
+C/econst/-/kFxImageOrigin_TOP_LEFT
+C/econst/-/kFxImageType_BITMAP
+C/econst/-/kFxImageType_TEXTURE
+C/econst/-/kFxImageType_UNKNOWN
+C/econst/-/kFxModifierKey_CAPS_LOCK
+C/econst/-/kFxModifierKey_COMMAND
+C/econst/-/kFxModifierKey_CONTROL
+C/econst/-/kFxModifierKey_OPTION
+C/econst/-/kFxModifierKey_SHIFT
+C/econst/-/kFxParameterFlag_COLLAPSED
+C/econst/-/kFxParameterFlag_CUSTOM_UI
+C/econst/-/kFxParameterFlag_DEFAULT
+C/econst/-/kFxParameterFlag_DISABLED
+C/econst/-/kFxParameterFlag_DONT_DISPLAY_IN_DASHBOARD
+C/econst/-/kFxParameterFlag_DONT_SAVE
+C/econst/-/kFxParameterFlag_HIDDEN
+C/econst/-/kFxParameterFlag_IGNORE_MINMAX
+C/econst/-/kFxParameterFlag_NOT_ANIMATABLE
+C/econst/-/kFxPixelFormat_ARGB
+C/econst/-/kFxPixelFormat_R408
+C/econst/-/kFxPixelFormat_R4fl
+C/econst/-/kFxPixelFormat_RGBA
+C/macro/-/kFxPropertyKey_EquivalentSMPTEWipeCode
+C/macro/-/kFxPropertyKey_MayRemapTime
+C/macro/-/kFxPropertyKey_PixelIndependent
+C/macro/-/kFxPropertyKey_PreservesAlpha
+C/macro/-/kFxPropertyKey_SupportsR408
+C/macro/-/kFxPropertyKey_SupportsR4fl
+C/macro/-/kFxPropertyKey_SupportsRowBytes
+C/econst/-/kFxQuality_HIGH
+C/econst/-/kFxQuality_LOW
+C/econst/-/kFxQuality_MEDIUM
+C/econst/-/kFxTimeBase_CLIP
+C/econst/-/kFxTimeBase_TIMELINE
+Objective-C/econst/FxTemporalTransitionImageAPI/kFxTransitionInput_A
+Objective-C/econst/FxTemporalTransitionImageAPI/kFxTransitionInput_B
+C/econst/-/kGetKerberosSessionKey
+C/econst/-/kGroupID2Name
+C/econst/-/kGroupIDToName
+C/econst/-/kGroupIDToUTF8Name
+C/econst/-/kGroupName2ID
+C/econst/-/kGroupUUIDToUTF8Name
+C/econst/-/kHALOutputParam_Volume
+C/econst/-/kHasVolumePassword
+C/econst/-/kHebrewFigureSpaceVariant
+C/econst/-/kHebrewStandardVariant
+C/econst/-/kHFSCatalogNodeIDsReusedBit
+C/econst/-/kHFSCatalogNodeIDsReusedMask
+C/macro/-/kHIAboutBoxCopyrightKey
+C/macro/-/kHIAboutBoxDescriptionKey
+C/macro/-/kHIAboutBoxNameKey
+C/macro/-/kHIAboutBoxStringFileKey
+C/macro/-/kHIAboutBoxVersionKey
+C/tag/-/kHIDataBrowserClassID
+C/econst/-/kHintAdvanced
+C/econst/-/kHintBasic
+C/econst/-/kHintHidden
+C/data/-/kHIToolboxVersionNumber
+C/data/-/kICAUserAssignedDeviceNameKey
+C/econst/-/kICMPixelFormatIsIndexed
+C/econst/-/kICMPixelFormatIsPlanarMask
+C/econst/-/kICMPixelFormatIsSupportedByQD
+C/econst/-/kICMSequenceUserPreferredCodecs
+C/econst/-/kicnsIconFamily
+C/func/-/kill
+C/func/-/killchar
+C/func/-/killpg
+C/func/-/KillProcess
+C/func/-/killwchar
+C/data/-/kIMKCommandClientName
+C/data/-/kIMKCommandMenuItemName
+C/econst/-/kIMKLocateCandidatesAboveHint
+C/econst/-/kIMKLocateCandidatesBelowHint
+C/econst/-/kIMKLocateCandidatesLeftHint
+C/econst/-/kIMKLocateCandidatesRightHint
+C/econst/-/kIMKMouseTrackingMode
+C/econst/-/kIMKNearestBoundaryMode
+C/econst/-/kIMKScrollingGridCandidatePanel
+C/econst/-/kIMKSingleColumnScrollingCandidatePanel
+C/econst/-/kIMKSingleRowSteppingCandidatePanel
+C/econst/-/kImmediate
+C/econst/-/kInactive
+Objective-C/instm/NSXMLNode/kind
+C/econst/-/kInjectionSectCoverPage
+C/econst/-/kInjectionSectJob
+C/econst/-/kInjectionSubBeginDefaults
+C/econst/-/kInjectionSubBeginFont
+C/econst/-/kInjectionSubBeginPageSetup
+C/econst/-/kInjectionSubBeginProlog
+C/econst/-/kInjectionSubBeginResource
+C/econst/-/kInjectionSubBeginSetup
+C/econst/-/kInjectionSubBoundingBox
+C/econst/-/kInjectionSubDocCustomColors
+C/econst/-/kInjectionSubDocFonts
+C/econst/-/kInjectionSubDocNeededFonts
+C/econst/-/kInjectionSubDocNeededRes
+C/econst/-/kInjectionSubDocProcessColors
+C/econst/-/kInjectionSubDocSuppliedFonts
+C/econst/-/kInjectionSubDocSuppliedRes
+C/econst/-/kInjectionSubEndComments
+C/econst/-/kInjectionSubEndDefaults
+C/econst/-/kInjectionSubEndFont
+C/econst/-/kInjectionSubEndPageSetup
+C/econst/-/kInjectionSubEndProlog
+C/econst/-/kInjectionSubEndResource
+C/econst/-/kInjectionSubEndSetup
+C/econst/-/kInjectionSubEOF
+C/econst/-/kInjectionSubOrientation
+C/econst/-/kInjectionSubPage
+C/econst/-/kInjectionSubPageOrder
+C/econst/-/kInjectionSubPages
+C/econst/-/kInjectionSubPageTrailer
+C/econst/-/kInjectionSubPlateColor
+C/econst/-/kInjectionSubPSAdobe
+C/econst/-/kInjectionSubPSAdobeEPS
+C/econst/-/kInjectionSubTrailer
+C/econst/-/kInkAlternateCommand
+C/econst/-/kInkDrawingCommand
+C/econst/-/kInkDrawInkAndWritingGuides
+C/econst/-/kInkDrawInkOnly
+C/econst/-/kInkDrawNothing
+C/econst/-/kInkGestureClear
+C/econst/-/kInkGestureCopy
+C/econst/-/kInkGestureCut
+C/econst/-/kInkGestureDelete
+C/econst/-/kInkGestureEscape
+C/econst/-/kInkGestureJoin
+C/econst/-/kInkGestureLeftReturn
+C/econst/-/kInkGestureLeftSpace
+C/econst/-/kInkGesturePaste
+C/econst/-/kInkGestureRightReturn
+C/econst/-/kInkGestureRightSpace
+C/econst/-/kInkGestureSelectAll
+C/econst/-/kInkGestureTab
+C/econst/-/kInkGestureUndo
+C/econst/-/kInkPenLowerSideButtonMask
+C/econst/-/kInkPenTipButtonMask
+C/econst/-/kInkPenUpperSideButtonMask
+C/econst/-/kInkRecognitionDefault
+C/econst/-/kInkRecognitionGesture
+C/econst/-/kInkRecognitionNone
+C/econst/-/kInkRecognitionText
+C/econst/-/kInkSeparatorCommand
+C/econst/-/kInkSourceApplication
+C/econst/-/kInkSourceUser
+C/econst/-/kInkTabletPointerCursor
+C/econst/-/kInktabletPointerEraser
+C/econst/-/kInkTabletPointerPen
+C/econst/-/kInkTabletPointerUnknown
+C/econst/-/kInkTerminationAll
+C/econst/-/kInkTerminationDefault
+C/econst/-/kInkTerminationNone
+C/econst/-/kInkTerminationOutOfProximity
+C/econst/-/kInkTerminationRecognizerHorizontalBreak
+C/econst/-/kInkTerminationRecognizerVerticalBreak
+C/econst/-/kInkTerminationStroke
+C/econst/-/kInkTerminationTimeOut
+C/econst/-/kInkTextDrawDefault
+C/econst/-/kInkTextDrawHonorContext
+C/econst/-/kInkTextDrawIgnorePressure
+C/econst/-/kInkWriteAnywhere
+C/econst/-/kInkWriteAnywhereInApp
+C/econst/-/kInkWriteInInkAwareAppsOnly
+C/econst/-/kInkWriteNowhere
+C/econst/-/kInkWriteNowhereInApp
+C/macro/-/kINQUIRY_VERSION_DESCRIPTOR_MaxCount
+C/econst/-/kioACAccessBlankAccessBit
+C/econst/-/kioACAccessBlankAccessMask
+C/econst/-/kioACAccessEveryoneReadBit
+C/econst/-/kioACAccessEveryoneReadMask
+C/econst/-/kioACAccessEveryoneSearchBit
+C/econst/-/kioACAccessEveryoneSearchMask
+C/econst/-/kioACAccessEveryoneWriteBit
+C/econst/-/kioACAccessEveryoneWriteMask
+C/econst/-/kioACAccessGroupReadBit
+C/econst/-/kioACAccessGroupReadMask
+C/econst/-/kioACAccessGroupSearchBit
+C/econst/-/kioACAccessGroupSearchMask
+C/econst/-/kioACAccessGroupWriteBit
+C/econst/-/kioACAccessGroupWriteMask
+C/econst/-/kioACAccessOwnerBit
+C/econst/-/kioACAccessOwnerMask
+C/econst/-/kioACAccessOwnerReadBit
+C/econst/-/kioACAccessOwnerReadMask
+C/econst/-/kioACAccessOwnerSearchBit
+C/econst/-/kioACAccessOwnerSearchMask
+C/econst/-/kioACAccessOwnerWriteBit
+C/econst/-/kioACAccessOwnerWriteMask
+C/econst/-/kioACAccessUserReadBit
+C/econst/-/kioACAccessUserReadMask
+C/econst/-/kioACAccessUserSearchBit
+C/econst/-/kioACAccessUserSearchMask
+C/econst/-/kioACAccessUserWriteBit
+C/econst/-/kioACAccessUserWriteMask
+C/macro/-/kIOActiveMedium
+C/macro/-/kIOActivePacketFilters
+C/econst/-/kioACUserNoMakeChangesBit
+C/econst/-/kioACUserNoMakeChangesMask
+C/econst/-/kioACUserNoSeeFilesBit
+C/econst/-/kioACUserNoSeeFilesMask
+C/econst/-/kioACUserNoSeeFolderBit
+C/econst/-/kioACUserNoSeeFolderMask
+C/econst/-/kioACUserNotOwnerBit
+C/econst/-/kioACUserNotOwnerMask
+C/macro/-/kIOATASMARTInterfaceID
+C/macro/-/kIOATASMARTLibFactoryID
+C/macro/-/kIOATASMARTUserClientTypeID
+C/macro/-/kIOAudioControlChannelIDKey
+C/macro/-/kIOAudioControlChannelNameAll
+C/macro/-/kIOAudioControlChannelNameCenter
+C/macro/-/kIOAudioControlChannelNameFrontLeftCenter
+C/macro/-/kIOAudioControlChannelNameFrontRightCenter
+C/macro/-/kIOAudioControlChannelNameKey
+C/macro/-/kIOAudioControlChannelNameLeft
+C/macro/-/kIOAudioControlChannelNameLeftRear
+C/macro/-/kIOAudioControlChannelNameRearCenter
+C/macro/-/kIOAudioControlChannelNameRight
+C/macro/-/kIOAudioControlChannelNameRightRear
+C/macro/-/kIOAudioControlChannelNameSub
+C/macro/-/kIOAudioControlChannelNameSurroundLeft
+C/macro/-/kIOAudioControlChannelNameSurroundRight
+C/macro/-/kIOAudioControlNumCalls
+C/macro/-/kIOAudioControlTypeKey
+C/macro/-/kIOAudioControlValueIsReadOnlyKey
+C/macro/-/kIOAudioControlValueKey
+C/macro/-/kIOAudioDeviceIconNameKey
+C/macro/-/kIOAudioDeviceManufacturerNameKey
+C/macro/-/kIOAudioDeviceNameKey
+C/macro/-/kIOAudioEngineDefaultMixBufferSampleSize
+C/macro/-/kIOAudioEngineFullChannelCategoryNamesKey
+C/macro/-/kIOAudioEngineFullChannelNamesKey
+C/macro/-/kIOAudioEngineFullChannelNumberNamesKey
+C/macro/-/kIOAudioEngineNumCalls
+C/macro/-/kIOAudioEngineOutputSampleLatencyKey
+C/macro/-/kIOAudioEngineStateKey
+C/macro/-/kIOAudioLevelControlMaxDBKey
+C/macro/-/kIOAudioLevelControlMaxValueKey
+C/macro/-/kIOAudioLevelControlMinDBKey
+C/macro/-/kIOAudioLevelControlMinValueKey
+C/macro/-/kIOAudioPortNameKey
+C/macro/-/kIOAudioPortSubTypeKey
+C/macro/-/kIOAudioPortTypeKey
+C/macro/-/kIOAudioSampleRateKey
+C/macro/-/kIOAudioStreamDirectionKey
+C/macro/-/kIOAudioStreamSampleLatencyKey
+C/macro/-/kIOBDBlockStorageDeviceClass
+C/macro/-/kIOBDBlockStorageDriverClass
+C/macro/-/kIOBDMediaClass
+C/macro/-/kIOBDMediaTypeKey
+C/macro/-/kIOBDMediaTypeR
+C/macro/-/kIOBDMediaTypeRE
+C/macro/-/kIOBDMediaTypeROM
+C/macro/-/kIOBlockStorageDeviceClass
+C/macro/-/kIOBlockStorageDeviceTypeGeneric
+C/macro/-/kIOBlockStorageDeviceTypeKey
+C/macro/-/kIOBlockStorageDeviceWriteCacheStateKey
+C/macro/-/kIOBlockStorageDriverClass
+C/macro/-/kIOBlockStorageDriverStatisticsBytesReadKey
+C/macro/-/kIOBlockStorageDriverStatisticsBytesWrittenKey
+C/macro/-/kIOBlockStorageDriverStatisticsKey
+C/macro/-/kIOBlockStorageDriverStatisticsLatentReadTimeKey
+C/macro/-/kIOBlockStorageDriverStatisticsLatentWriteTimeKey
+C/macro/-/kIOBlockStorageDriverStatisticsReadErrorsKey
+C/macro/-/kIOBlockStorageDriverStatisticsReadRetriesKey
+C/macro/-/kIOBlockStorageDriverStatisticsReadsKey
+C/macro/-/kIOBlockStorageDriverStatisticsTotalReadTimeKey
+C/macro/-/kIOBlockStorageDriverStatisticsTotalWriteTimeKey
+C/macro/-/kIOBlockStorageDriverStatisticsWriteErrorsKey
+C/macro/-/kIOBlockStorageDriverStatisticsWriteRetriesKey
+C/macro/-/kIOBlockStorageDriverStatisticsWritesKey
+C/econst/IOBluetoothServiceBrowserControllerOptions/kIOBluetoothServiceBrowserControllerOptionsAutoStartInquiry
+C/econst/IOBluetoothServiceBrowserControllerOptions/kIOBluetoothServiceBrowserControllerOptionsDisconnectWhenDone
+C/econst/IOBluetoothServiceBrowserControllerOptions/kIOBluetoothServiceBrowserControllerOptionsNone
+C/econst/IOMakeMatching/kIOBSDNameMatching
+C/macro/-/kIOBuiltin
+C/econst/IOCatalogueSendData/kIOCatalogAddDrivers
+C/econst/IOCatalogueSendData/kIOCatalogAddDriversNoMatch
+C/econst/IOCatalogueGetData/kIOCatalogGetContents
+C/econst/IOCatalogueTerminate/kIOCatalogModuleTerminate
+C/econst/IOCatalogueTerminate/kIOCatalogModuleUnload
+C/econst/IOCatalogueSendData/kIOCatalogRemoveDrivers
+C/econst/IOCatalogueSendData/kIOCatalogRemoveDriversNoMatch
+C/econst/IOCatalogueReset/kIOCatalogResetDefault
+C/econst/IOCatalogueTerminate/kIOCatalogServiceTerminate
+C/econst/IOCatalogueSendData/kIOCatalogStartMatching
+C/macro/-/kIOCDBlockStorageDeviceClass
+C/macro/-/kIOCDBlockStorageDriverClass
+C/macro/-/kIOCDMediaClass
+C/macro/-/kIOCDMediaTOCKey
+C/macro/-/kIOCDMediaTypeKey
+C/macro/-/kIOCDMediaTypeR
+C/macro/-/kIOCDMediaTypeROM
+C/macro/-/kIOCDMediaTypeRW
+C/macro/-/kIOCDPartitionSchemeClass
+C++/clconst/IOCommandPool/kIOCommandPoolDefaultSize
+C/econst/IODebuggerLockState/kIODebuggerLockTaken
+C/macro/-/kIODefaultMedium
+C/econst/IODisplayDictionaryOptions/kIODisplayMatchingInfo
+C/econst/IODisplayDictionaryOptions/kIODisplayNoProductName
+C/econst/IODisplayDictionaryOptions/kIODisplayOnlyPreferredName
+C++/macro/-/kIODMACommandOutputBig32
+C++/macro/-/kIODMACommandOutputBig64
+C++/macro/-/kIODMACommandOutputHost32
+C++/macro/-/kIODMACommandOutputHost64
+C++/macro/-/kIODMACommandOutputLittle32
+C++/macro/-/kIODMACommandOutputLittle64
+C/macro/-/kIODVDBlockStorageDeviceClass
+C/macro/-/kIODVDBlockStorageDriverClass
+C/macro/-/kIODVDMediaClass
+C/macro/-/kIODVDMediaTypeHDR
+C/macro/-/kIODVDMediaTypeHDRAM
+C/macro/-/kIODVDMediaTypeHDROM
+C/macro/-/kIODVDMediaTypeHDRW
+C/macro/-/kIODVDMediaTypeKey
+C/macro/-/kIODVDMediaTypePlusR
+C/macro/-/kIODVDMediaTypePlusRW
+C/macro/-/kIODVDMediaTypeR
+C/macro/-/kIODVDMediaTypeRAM
+C/macro/-/kIODVDMediaTypeROM
+C/macro/-/kIODVDMediaTypeRW
+C/macro/-/kIOEthernetAddressSize
+C/macro/-/kIOEthernetControllerClass
+C/macro/-/kIOEthernetCRCSize
+C/macro/-/kIOEthernetDisabledWakeOnLANFilterGroup
+C/macro/-/kIOEthernetInterfaceClass
+C/macro/-/kIOEthernetMaxPacketSize
+C/macro/-/kIOEthernetMinPacketSize
+C/macro/-/kIOEthernetStatsKey
+C/macro/-/kIOEthernetWakeOnLANFilterGroup
+C/econst/kIOExternalMethodScalarInputCountMax/kIOExternalMethodScalarInputCountMax
+C/tag/-/kIOExternalMethodScalarInputCountMax
+C/econst/kIOExternalMethodScalarInputCountMax/kIOExternalMethodScalarOutputCountMax
+C/econst/FramebufferConstants/kIOFBCurrentShmemVersion
+C/econst/FramebufferConstants/kIOFBCursorMemory
+C/econst/CursorParameters/kIOFBMaxCursorDepth
+C/econst/CursorParameters/kIOFBNumCursorFrames
+C/econst/CursorParameters/kIOFBNumCursorFramesShift
+C/econst/-/kioFCBFileLockedBit
+C/econst/-/kioFCBFileLockedMask
+C/econst/-/kioFCBLargeFileBit
+C/econst/-/kioFCBLargeFileMask
+C/econst/-/kioFCBModifiedBit
+C/econst/-/kioFCBModifiedMask
+C/econst/-/kioFCBOwnClumpBit
+C/econst/-/kioFCBOwnClumpMask
+C/econst/-/kioFCBResourceBit
+C/econst/-/kioFCBResourceMask
+C/econst/-/kioFCBSharedWriteBit
+C/econst/-/kioFCBSharedWriteMask
+C/econst/-/kioFCBWriteBit
+C/econst/-/kioFCBWriteLockedBit
+C/econst/-/kioFCBWriteLockedMask
+C/econst/-/kioFCBWriteMask
+C/macro/-/kIOFeatures
+C/macro/-/kIOFilterSchemeClass
+C/econst/-/kioFlAttribCopyProtBit
+C/econst/-/kioFlAttribCopyProtMask
+C/econst/-/kioFlAttribDataOpenBit
+C/econst/-/kioFlAttribDataOpenMask
+C/econst/-/kioFlAttribDirBit
+C/econst/-/kioFlAttribDirMask
+C/econst/-/kioFlAttribFileOpenBit
+C/econst/-/kioFlAttribFileOpenMask
+C/econst/-/kioFlAttribInSharedBit
+C/econst/-/kioFlAttribInSharedMask
+C/econst/-/kioFlAttribLockedBit
+C/econst/-/kioFlAttribLockedMask
+C/econst/-/kioFlAttribMountedBit
+C/econst/-/kioFlAttribMountedMask
+C/econst/-/kioFlAttribResOpenBit
+C/econst/-/kioFlAttribResOpenMask
+C/econst/-/kioFlAttribSharePointBit
+C/econst/-/kioFlAttribSharePointMask
+C/econst/NodeFlags/kIOFWDisableAllPhysicalAccess
+C/econst/NodeFlags/kIOFWDisablePhyOnSleep
+C/econst/NodeFlags/kIOFWDisablePhysicalAccess
+C/econst/NodeFlags/kIOFWEnableRetryOnAckD
+C/econst/NodeFlags/kIOFWLimitAsyncPacketSize
+C/econst/NodeFlags/kIOFWMustBeRoot
+C/econst/NodeFlags/kIOFWMustHaveGap63
+C/econst/NodeFlags/kIOFWMustNotBeRoot
+C/macro/-/kIOHIDDeviceDeviceInterfaceID
+C/macro/-/kIOHIDDeviceFactoryID
+C/macro/-/kIOHIDDeviceInterfaceID
+C/macro/-/kIOHIDDeviceInterfaceID121
+C/macro/-/kIOHIDDeviceInterfaceID122
+C/macro/-/kIOHIDDeviceQueueInterfaceID
+C/macro/-/kIOHIDDeviceTransactionInterfaceID
+C/macro/-/kIOHIDDeviceTypeID
+C/macro/-/kIOHIDElementCalibrationDeadZoneMaxKey
+C/macro/-/kIOHIDElementCalibrationDeadZoneMinKey
+C/macro/-/kIOHIDElementCalibrationGranularityKey
+C/macro/-/kIOHIDElementCalibrationMaxKey
+C/macro/-/kIOHIDElementCalibrationMinKey
+C/macro/-/kIOHIDElementCalibrationSaturationMaxKey
+C/macro/-/kIOHIDElementCalibrationSaturationMinKey
+C/econst/IOHIDElementCollectionType/kIOHIDElementCollectionTypeApplication
+C/econst/IOHIDElementCollectionType/kIOHIDElementCollectionTypeLogical
+C/econst/IOHIDElementCollectionType/kIOHIDElementCollectionTypeNamedArray
+C/econst/IOHIDElementCollectionType/kIOHIDElementCollectionTypePhysical
+C/econst/IOHIDElementCollectionType/kIOHIDElementCollectionTypeReport
+C/econst/IOHIDElementCollectionType/kIOHIDElementCollectionTypeUsageModifier
+C/econst/IOHIDElementCollectionType/kIOHIDElementCollectionTypeUsageSwitch
+C/macro/-/kIOHIDElementCookieKey
+C/macro/-/kIOHIDElementCookieMinKey
+C/macro/-/kIOHIDElementKey
+C/econst/IOHIDElementType/kIOHIDElementTypeCollection
+C/econst/IOHIDElementType/kIOHIDElementTypeFeature
+C/econst/IOHIDElementType/kIOHIDElementTypeInput_Axis
+C/econst/IOHIDElementType/kIOHIDElementTypeInput_Button
+C/econst/IOHIDElementType/kIOHIDElementTypeInput_Misc
+C/econst/IOHIDElementType/kIOHIDElementTypeInput_ScanCodes
+C/econst/IOHIDElementType/kIOHIDElementTypeOutput
+C/econst/IOHIDOptionsType/kIOHIDOptionsTypeNone
+C/econst/IOHIDOptionsType/kIOHIDOptionsTypeSeizeDevice
+C/macro/-/kIOHIDOutputTransactionInterfaceID
+C/macro/-/kIOHIDQueueInterfaceID
+C/econst/IOHIDQueueOptionsType/kIOHIDQueueOptionsTypeEnqueueAll
+C/econst/IOHIDQueueOptionsType/kIOHIDQueueOptionsTypeNone
+C/econst/IOHIDReportOption/kIOHIDReportOptionNotInterrupt
+C/econst/IOHIDReportType/kIOHIDReportTypeFeature
+C/econst/IOHIDReportType/kIOHIDReportTypeInput
+C/econst/IOHIDReportType/kIOHIDReportTypeOutput
+C/econst/IOHIDTransactionDirectionType/kIOHIDTransactionDirectionTypeInput
+C/econst/IOHIDTransactionDirectionType/kIOHIDTransactionDirectionTypeOutput
+C/econst/IOHIDTransactionOption/kIOHIDTransactionOptionDefaultOutputValue
+C/macro/-/kIOHIDTransportKey
+C/econst/IOHIDValueScaleType/kIOHIDValueScaleTypeCalibrated
+C/econst/IOHIDValueScaleType/kIOHIDValueScaleTypePhysical
+C/macro/-/kIOInterfaceExtraFlags
+C/macro/-/kIOInterfaceFlags
+C/macro/-/kIOInterfaceNamePrefix
+C/macro/-/kIOInterfaceState
+C/macro/-/kIOInterfaceType
+C/macro/-/kIOInterfaceUnit
+C/macro/-/kIOKitPersonalitiesKey
+C/macro/-/kIOLinkData
+C/macro/-/kIOLinkSpeed
+C/macro/-/kIOLinkStatus
+C/macro/-/kIOLocation
+C/macro/-/kIOMACAddress
+C/data/-/kIOMasterPortDefault
+C/macro/-/kIOMaxPacketSize
+C/macro/-/kIOMaxTransferUnit
+C/macro/-/kIOMediaAddressLength
+C/econst/IOMediaAttributeMask/kIOMediaAttributeEjectableMask
+C/econst/IOMediaAttributeMask/kIOMediaAttributeRemovableMask
+C/macro/-/kIOMediaClass
+C/macro/-/kIOMediaContentHintKey
+C/macro/-/kIOMediaContentKey
+C/macro/-/kIOMediaContentMaskKey
+C/macro/-/kIOMediaEjectableKey
+C/macro/-/kIOMediaHeaderLength
+C/macro/-/kIOMediaIconKey
+C/macro/-/kIOMediaLeafKey
+C/macro/-/kIOMediaLiveKey
+C/macro/-/kIOMediaOpenKey
+C/macro/-/kIOMediaPartitionIDKey
+C/macro/-/kIOMediaPreferredBlockSizeKey
+C/macro/-/kIOMediaRemovableKey
+C/macro/-/kIOMediaSessionIDKey
+C/macro/-/kIOMediaSizeKey
+C/econst/IOMediaState/kIOMediaStateBusy
+C/econst/IOMediaState/kIOMediaStateOffline
+C/econst/IOMediaState/kIOMediaStateOnline
+C/macro/-/kIOMediaUUIDKey
+C/macro/-/kIOMediaWholeKey
+C/macro/-/kIOMediaWritableKey
+C/macro/-/kIOMediumDictionary
+C/macro/-/kIOMediumFlags
+C/macro/-/kIOMediumIndex
+C/macro/-/kIOMediumSpeed
+C/macro/-/kIOMediumType
+C/macro/-/kIOMessageMediaParametersHaveChanged
+C/macro/-/kIOMessageMediaStateHasChanged
+C/macro/-/kIOMinPacketSize
+C/macro/-/kIOMMCDeviceInterfaceID
+C/macro/-/kIOMMCDeviceUserClientTypeID
+C/macro/-/kIOModel
+C/macro/-/kIOMulticastAddressList
+C/macro/-/kIONetworkControllerClass
+C/macro/-/kIONetworkData
+C/econst/NetworkDataAccessTypes/kIONetworkDataAccessTypeRead
+C/econst/NetworkDataAccessTypes/kIONetworkDataAccessTypeReset
+C/macro/-/kIONetworkDataAccessTypes
+C/econst/NetworkDataAccessTypes/kIONetworkDataAccessTypeSerialize
+C/econst/NetworkDataAccessTypes/kIONetworkDataAccessTypeWrite
+C/macro/-/kIONetworkDataBasicAccessTypes
+C/econst/NetworkDataBufferTypes/kIONetworkDataBufferTypeExternal
+C/econst/NetworkDataBufferTypes/kIONetworkDataBufferTypeInternal
+C/econst/NetworkDataBufferTypes/kIONetworkDataBufferTypeNone
+C/macro/-/kIONetworkDataBytes
+C/macro/-/kIONetworkDataSize
+C/econst/NetworkFeatureFlags/kIONetworkFeatureMultiPages
+C/econst/NetworkFeatureFlags/kIONetworkFeatureNoBSDWait
+C/econst/NetworkFeatureFlags/kIONetworkFeaturesHardwareVlan
+C/econst/NetworkFeatureFlags/kIONetworkFeaturesSoftwareVlan
+C/econst/NetworkFeatureFlags/kIONetworkFeatureTSOIPv4
+C/econst/NetworkFeatureFlags/kIONetworkFeatureTSOIPv6
+C/macro/-/kIONetworkFilterGroup
+C/macro/-/kIONetworkInterfaceClass
+C/econst/InterfaceObjectStates/kIONetworkInterfaceDisabledState
+C/econst/InterfaceObjectStates/kIONetworkInterfaceOpenedState
+C/econst/InterfaceObjectStates/kIONetworkInterfaceRegisteredState
+C/macro/-/kIONetworkStatsKey
+C/econst/IONetworkPacketFilterOptions/kIONetworkSupportedPacketFilters
+C/econst/IOMakeMatching/kIOOFPathMatching
+C/econst/OutputCommands/kIOOutputCommandMask
+C/econst/OutputCommands/kIOOutputCommandNone
+C/econst/OutputCommands/kIOOutputCommandStall
+C/macro/-/kIOOutputQueueStatsKey
+C/econst/OutputPacketStatus/kIOOutputStatusAccept
+C/econst/OutputPacketStatus/kIOOutputStatusDropped
+C/econst/OutputPacketStatus/kIOOutputStatusMask
+C/econst/OutputPacketStatus/kIOOutputStatusRetry
+C/econst/StandardPacketFilters/kIOPacketFilterBroadcast
+C/econst/StandardPacketFilters/kIOPacketFilterMulticast
+C/econst/StandardPacketFilters/kIOPacketFilterMulticastAll
+C/econst/StandardPacketFilters/kIOPacketFilterPromiscuous
+C/econst/StandardPacketFilters/kIOPacketFilterPromiscuousAll
+C/macro/-/kIOPacketFilters
+C/econst/StandardPacketFilters/kIOPacketFilterUnicast
+C/macro/-/kIOPartitionSchemeClass
+C/macro/-/kIOPMAssertionLevelKey
+C/econst/Assertion/kIOPMAssertionLevelOff
+C/econst/Assertion/kIOPMAssertionLevelOn
+C/macro/-/kIOPMAssertionNameKey
+C/macro/-/kIOPMAssertionTypeKey
+C/macro/-/kIOPMAssertionTypeNoDisplaySleep
+C/macro/-/kIOPMAssertionTypeNoIdleSleep
+C/macro/-/kIOPMAutoPowerOn
+C/macro/-/kIOPMAutoRestart
+C/macro/-/kIOPMAutoShutdown
+C/macro/-/kIOPMAutoSleep
+C/macro/-/kIOPMAutoWake
+C/macro/-/kIOPMAutoWakeOrPowerOn
+C/econst/IOPMPowerFlags/kIOPMDeviceUsable
+C/econst/IOPMPowerFlags/kIOPMLowPower
+C/tag/-/kIOPMNullAssertionID
+C/macro/-/kIOPMPowerEventAppNameKey
+C/macro/-/kIOPMPowerEventTimeKey
+C/macro/-/kIOPMPowerEventTypeKey
+C/econst/IOPMPowerFlags/kIOPMPowerOn
+C/econst/IOPMPowerFlags/kIOPMPreventIdleSleep
+C/econst/IOPMPowerFlags/kIOPMRestart
+C/econst/IOPMPowerFlags/kIOPMRestartCapability
+C/econst/IOPMPowerFlags/kIOPMSleep
+C/econst/IOPMPowerFlags/kIOPMSleepCapability
+C/macro/-/kIOPrimaryInterface
+C/macro/-/kIOPropertyAutonomousSpinDownKey
+C/macro/-/kIOPropertyBridgeCharacteristicsKey
+C/macro/-/kIOPropertyBytesPerPhysicalSectorKey
+C/macro/-/kIOPropertyCylinderCountKey
+C/macro/-/kIOPropertyDeviceCharacteristicsKey
+C/macro/-/kIOPropertyEjectRequireStartStopUnitKey
+C/macro/-/kIOPropertyExternalKey
+C/macro/-/kIOPropertyFibreChannelAddressIdentifierKey
+C/macro/-/kIOPropertyFibreChannelALPAKey
+C/macro/-/kIOPropertyFibreChannelCableDescriptionCopperKey
+C/macro/-/kIOPropertyFibreChannelCableDescriptionFiberOpticKey
+C/macro/-/kIOPropertyFibreChannelCableDescriptionKey
+C/macro/-/kIOPropertyFibreChannelNodeWorldWideNameKey
+C/macro/-/kIOPropertyFibreChannelPortWorldWideNameKey
+C/macro/-/kIOPropertyHeadCountKey
+C/macro/-/kIOPropertyInterconnectFileKey
+C/macro/-/kIOPropertyInterconnectRAMKey
+C/macro/-/kIOPropertyInternalExternalKey
+C/macro/-/kIOPropertyInternalKey
+C/macro/-/kIOPropertyLogicalBlockSizeKey
+C/macro/-/kIOPropertyMediumRotationRateKey
+C/macro/-/kIOPropertyMediumTypeKey
+C/macro/-/kIOPropertyMediumTypeRotationalKey
+C/macro/-/kIOPropertyMediumTypeSolidStateKey
+C/macro/-/kIOPropertyPhysicalBlockSizeKey
+C/macro/-/kIOPropertyPhysicalInterconnectLocationKey
+C/macro/-/kIOPropertyPhysicalInterconnectTypeATA
+C/macro/-/kIOPropertyPhysicalInterconnectTypeATAPI
+C/macro/-/kIOPropertyPhysicalInterconnectTypeFibreChannel
+C/macro/-/kIOPropertyPhysicalInterconnectTypeFireWire
+C/macro/-/kIOPropertyPhysicalInterconnectTypeKey
+C/macro/-/kIOPropertyPhysicalInterconnectTypeSCSIParallel
+C/macro/-/kIOPropertyPhysicalInterconnectTypeSerialATA
+C/macro/-/kIOPropertyPhysicalInterconnectTypeSerialAttachedSCSI
+C/macro/-/kIOPropertyPhysicalInterconnectTypeUSB
+C/macro/-/kIOPropertyPhysicalInterconnectTypeVirtual
+C/macro/-/kIOPropertyPortDescriptionKey
+C/macro/-/kIOPropertyPortSpeed10GigabitKey
+C/macro/-/kIOPropertyPortSpeed1_5GigabitKey
+C/macro/-/kIOPropertyPortSpeed1GigabitKey
+C/macro/-/kIOPropertyPortSpeed2GigabitKey
+C/macro/-/kIOPropertyPortSpeed3GigabitKey
+C/macro/-/kIOPropertyPortSpeed4GigabitKey
+C/macro/-/kIOPropertyPortSpeed6GigabitKey
+C/macro/-/kIOPropertyPortSpeed8GigabitKey
+C/macro/-/kIOPropertyPortSpeedAutomatic10GigabitKey
+C/macro/-/kIOPropertyPortSpeedAutomatic1_5GigabitKey
+C/macro/-/kIOPropertyPortSpeedAutomatic1GigabitKey
+C/macro/-/kIOPropertyPortSpeedAutomatic2GigabitKey
+C/macro/-/kIOPropertyPortSpeedAutomatic3GigabitKey
+C/macro/-/kIOPropertyPortSpeedAutomatic4GigabitKey
+C/macro/-/kIOPropertyPortSpeedAutomatic6GigabitKey
+C/macro/-/kIOPropertyPortSpeedAutomatic8GigabitKey
+C/macro/-/kIOPropertyPortSpeedAutomaticKey
+C/macro/-/kIOPropertyPortSpeedKey
+C/macro/-/kIOPropertyPortStatusKey
+C/macro/-/kIOPropertyPortStatusLinkEstablishedKey
+C/macro/-/kIOPropertyPortStatusLinkFailedKey
+C/macro/-/kIOPropertyPortStatusNoLinkEstablishedKey
+C/macro/-/kIOPropertyPortTopologyAutomaticKey
+C/macro/-/kIOPropertyPortTopologyAutomaticNLPortKey
+C/macro/-/kIOPropertyPortTopologyAutomaticNPortKey
+C/macro/-/kIOPropertyPortTopologyKey
+C/macro/-/kIOPropertyPortTopologyNLPortKey
+C/macro/-/kIOPropertyPortTopologyNPortKey
+C/macro/-/kIOPropertyProductNameKey
+C/macro/-/kIOPropertyProductRevisionLevelKey
+C/macro/-/kIOPropertyProductSerialNumberKey
+C/macro/-/kIOPropertyProtocolCharacteristicsKey
+C/macro/-/kIOPropertyReadTimeOutDurationKey
+C/macro/-/kIOPropertyRetryCountKey
+C/macro/-/kIOPropertyRigidDiskGeometryKey
+C/macro/-/kIOPropertySASAddressKey
+C/macro/-/kIOPropertySATProductIdentification
+C/macro/-/kIOPropertySATProductRevisonLevel
+C/macro/-/kIOPropertySATVendorIdentification
+C/macro/-/kIOPropertySCSIDeviceCharacteristicsKey
+C/macro/-/kIOPropertySCSIDomainIdentifierKey
+C/macro/-/kIOPropertySCSIInitiatorIdentifierKey
+C/macro/-/kIOPropertySCSIINQUIRYDeviceIdAssociation
+C/macro/-/kIOPropertySCSIINQUIRYDeviceIdCodeSet
+C/macro/-/kIOPropertySCSIINQUIRYDeviceIdentification
+C/macro/-/kIOPropertySCSIINQUIRYDeviceIdentifier
+C/macro/-/kIOPropertySCSIINQUIRYDeviceIdType
+C/macro/-/kIOPropertySCSIInquiryLengthKey
+C/macro/-/kIOPropertySCSIINQUIRYUnitSerialNumber
+C/macro/-/kIOPropertySCSILogicalUnitNumberKey
+C/macro/-/kIOPropertySCSIManualEjectKey
+C/macro/-/kIOPropertySCSIParallelSignalingTypeHVDKey
+C/macro/-/kIOPropertySCSIParallelSignalingTypeKey
+C/macro/-/kIOPropertySCSIParallelSignalingTypeLVDKey
+C/macro/-/kIOPropertySCSIParallelSignalingTypeSEKey
+C/macro/-/kIOPropertySCSIPeripheralDeviceType
+C/macro/-/kIOPropertySCSIPeripheralDeviceTypeSize
+C/macro/-/kIOPropertySCSIProductIdentification
+C/macro/-/kIOPropertySCSIProductRevisionLevel
+C/macro/-/kIOPropertySCSIProtocolMultiInitKey
+C/macro/-/kIOPropertySCSITargetIdentifierKey
+C/macro/-/kIOPropertySCSITaskAuthoringDevice
+C/macro/-/kIOPropertySCSITaskDeviceCategory
+C/macro/-/kIOPropertySCSITaskUserClientDevice
+C/macro/-/kIOPropertySCSITaskUserClientInstanceGUID
+C/macro/-/kIOPropertySCSIVendorIdentification
+C/macro/-/kIOPropertySectorCountPerTrackKey
+C/macro/-/kIOPropertySMARTCapableKey
+C/macro/-/kIOPropertySupportedBDFeaturesKey
+C/macro/-/kIOPropertySupportedCDFeaturesKey
+C/macro/-/kIOPropertySupportedDVDFeaturesKey
+C/macro/-/kIOPropertyTargetDiskModeKey
+C/macro/-/kIOPropertyVendorNameKey
+C/macro/-/kIOPropertyWriteTimeOutDurationKey
+C/macro/-/kIOPSACPowerValue
+C/macro/-/kIOPSBatteryFailureModesKey
+C/macro/-/kIOPSBatteryHealthConditionKey
+C/macro/-/kIOPSBatteryHealthKey
+C/macro/-/kIOPSBatteryPowerValue
+C/macro/-/kIOPSCheckBatteryValue
+C/macro/-/kIOPSCommandDelayedRemovePowerKey
+C/macro/-/kIOPSCommandEnableAudibleAlarmKey
+C/macro/-/kIOPSCommandStartupDelayKey
+C/macro/-/kIOPSCurrentCapacityKey
+C/macro/-/kIOPSCurrentKey
+C/macro/-/kIOPSDeadWarnLevelKey
+C/macro/-/kIOPSDesignCapacityKey
+C/macro/-/kIOPSDynamicStorePath
+C/macro/-/kIOPSFailureCellImbalance
+C/macro/-/kIOPSFailureChargeFET
+C/macro/-/kIOPSFailureChargeOverCurrent
+C/macro/-/kIOPSFailureChargeOverTemp
+C/macro/-/kIOPSFailureDataFlushFault
+C/macro/-/kIOPSFailureDischargeFET
+C/macro/-/kIOPSFailureDischargeOverCurrent
+C/macro/-/kIOPSFailureDischargeOverTemp
+C/macro/-/kIOPSFailureExternalInput
+C/macro/-/kIOPSFailureFuseBlown
+C/macro/-/kIOPSFailureOpenThermistor
+C/macro/-/kIOPSFailurePeriodicAFEComms
+C/macro/-/kIOPSFailurePermanentAFEComms
+C/macro/-/kIOPSFailureSafetyOverVoltage
+C/macro/-/kIOPSFairValue
+C/macro/-/kIOPSGoodValue
+C/macro/-/kIOPSHardwareSerialNumberKey
+C/macro/-/kIOPSHealthConfidenceKey
+C/macro/-/kIOPSInternalBatteryType
+C/macro/-/kIOPSInternalType
+C/macro/-/kIOPSIsChargedKey
+C/macro/-/kIOPSIsChargingKey
+C/macro/-/kIOPSIsFinishingChargeKey
+C/macro/-/kIOPSIsPresentKey
+C/data/-/kIOPSLowBatteryWarningFinal
+C/data/-/kIOPSLowBatteryWarningNone
+C/macro/-/kIOPSLowWarnLevelKey
+C/macro/-/kIOPSMaxCapacityKey
+C/macro/-/kIOPSMaxErrKey
+C/macro/-/kIOPSNameKey
+C/macro/-/kIOPSNetworkTransportType
+C/macro/-/kIOPSNotifyLowBattery
+C/macro/-/kIOPSOffLineValue
+C/macro/-/kIOPSPermanentFailureValue
+C/macro/-/kIOPSPoorValue
+C/macro/-/kIOPSPowerAdapterFamilyKey
+C/macro/-/kIOPSPowerAdapterIDKey
+C/macro/-/kIOPSPowerAdapterRevisionKey
+C/macro/-/kIOPSPowerAdapterSerialNumberKey
+C/macro/-/kIOPSPowerAdapterWattsKey
+C/macro/-/kIOPSPowerSourceIDKey
+C/macro/-/kIOPSPowerSourceStateKey
+C/macro/-/kIOPSSerialTransportType
+C/macro/-/kIOPSTimeToEmptyKey
+C/macro/-/kIOPSTimeToFullChargeKey
+C/macro/-/kIOPSTransportTypeKey
+C/macro/-/kIOPSTypeKey
+C/macro/-/kIOPSUPSManagementClaimed
+C/macro/-/kIOPSUPSType
+C/macro/-/kIOPSUSBTransportType
+C/macro/-/kIOPSVendorDataKey
+C/macro/-/kIOPSVoltageKey
+C/macro/-/kIORequiredPacketFilters
+C/econst/OutputHandlerReturnCodes/kIOReturnOutputDropped
+C/econst/OutputHandlerReturnCodes/kIOReturnOutputStall
+C/econst/OutputHandlerReturnCodes/kIOReturnOutputSuccess
+C/macro/-/kIORevision
+C/macro/-/kIOSCSIArchitectureBundleIdentifierKey
+C/macro/-/kIOSCSITaskDeviceInterfaceID
+C/macro/-/kIOSCSITaskDeviceUserClientTypeID
+C/macro/-/kIOSCSITaskInterfaceID
+C/macro/-/kIOSCSITaskLibFactoryID
+C/macro/-/kIOSelectedMedium
+C/econst/IOMakeMatching/kIOServiceMatching
+C/econst/IOStorageAccess/kIOStorageAccessExclusiveLock
+C/econst/IOStorageAccess/kIOStorageAccessNone
+C/econst/IOStorageAccess/kIOStorageAccessReader
+C/econst/IOStorageAccess/kIOStorageAccessReaderWriter
+C/econst/IOStorageAccess/kIOStorageAccessSharedLock
+C/macro/-/kIOStorageCategory
+C/macro/-/kIOStorageClass
+C/macro/-/kIOStorageFeatureDiscard
+C/macro/-/kIOStorageFeatureForceUnitAccess
+C/macro/-/kIOStorageFeaturesKey
+C/econst/IOStorageOptions/kIOStorageOptionForceUnitAccess
+C/econst/Memory/kIOStreamBufferIDMask
+C/econst/User/kIOStreamEnqueueInputSyncTrap
+C/econst/User/kIOStreamEnqueueInputTrap
+C/econst/Memory/kIOStreamMemoryTypeBufferControl
+C/econst/Memory/kIOStreamMemoryTypeBufferData
+C/econst/Memory/kIOStreamMemoryTypeInputQueue
+C/econst/Memory/kIOStreamMemoryTypeMask
+C/econst/Memory/kIOStreamMemoryTypeOutputQueue
+C/econst/User/kIOStreamMethodClose
+C/econst/User/kIOStreamMethodGetMode
+C/econst/User/kIOStreamMethodOpen
+C/econst/User/kIOStreamMethodSetMode
+C/econst/User/kIOStreamMethodStart
+C/econst/User/kIOStreamMethodStop
+C/econst/User/kIOStreamMethodSuspend
+C/econst/Mach/kIOStreamPortTypeInput
+C/econst/Mach/kIOStreamPortTypeOutput
+C/macro/-/kIOSystemLoadAdvisoryBatteryLevelKey
+C/macro/-/kIOSystemLoadAdvisoryCombinedLevelKey
+C/macro/-/kIOSystemLoadAdvisoryNotifyName
+C/macro/-/kIOSystemLoadAdvisoryThermalLevelKey
+C/macro/-/kIOSystemLoadAdvisoryUserLevelKey
+C/tag/-/kIOUCVariableStructureSize
+C/econst/kIOUCVariableStructureSize/kIOUCVariableStructureSize
+C/macro/-/kIOUPSPlugInInterfaceID
+C/macro/-/kIOUPSPlugInInterfaceID_v140
+C/macro/-/kIOUPSPlugInTypeID
+C/macro/-/kIOUSBDeviceInterfaceID
+C/macro/-/kIOUSBDeviceInterfaceID182
+C/macro/-/kIOUSBDeviceInterfaceID187
+C/macro/-/kIOUSBDeviceInterfaceID197
+C/macro/-/kIOUSBDeviceInterfaceID245
+C/macro/-/kIOUSBDeviceInterfaceID300
+C/macro/-/kIOUSBDeviceInterfaceID320
+C/macro/-/kIOUSBDeviceUserClientTypeID
+C/macro/-/kIOUSBFactoryID
+C/tag/-/kIOUSBFindInterfaceDontCare
+C/macro/-/kIOUSBInterfaceInterfaceID
+C/macro/-/kIOUSBInterfaceInterfaceID182
+C/macro/-/kIOUSBInterfaceInterfaceID183
+C/macro/-/kIOUSBInterfaceInterfaceID190
+C/macro/-/kIOUSBInterfaceInterfaceID192
+C/macro/-/kIOUSBInterfaceInterfaceID197
+C/macro/-/kIOUSBInterfaceInterfaceID220
+C/macro/-/kIOUSBInterfaceInterfaceID245
+C/macro/-/kIOUSBInterfaceInterfaceID300
+C/econst/IOOptionBits/kIOUSBInterfaceOpenAlt
+C/macro/-/kIOUSBInterfaceUserClientTypeID
+C/macro/-/kIOUSBLinkErr
+C/econst/-/kioVAtrbDefaultVolumeBit
+C/econst/-/kioVAtrbDefaultVolumeMask
+C/econst/-/kioVAtrbFilesOpenBit
+C/econst/-/kioVAtrbFilesOpenMask
+C/econst/-/kioVAtrbHardwareLockedBit
+C/econst/-/kioVAtrbHardwareLockedMask
+C/econst/-/kioVAtrbSoftwareLockedBit
+C/econst/-/kioVAtrbSoftwareLockedMask
+C/macro/-/kIOVendor
+C/econst/-/kJapaneseBasicVariant
+C/econst/-/kJapaneseNoOneByteKanaOption
+C/econst/-/kJapanesePostScriptPrintVariant
+C/econst/-/kJapanesePostScriptScrnVariant
+C/econst/-/kJapaneseStandardVariant
+C/econst/-/kJapaneseStdNoVerticalsVariant
+C/econst/-/kJapaneseUseAsciiBackslashOption
+C/econst/-/kJapaneseVertAtKuPlusTenVariant
+C/econst/JSClassAttribute/kJSClassAttributeNoAutomaticPrototype
+C/econst/JSClassAttribute/kJSClassAttributeNone
+C/data/-/kJSClassDefinitionEmpty
+C/econst/JSPropertyAttribute/kJSPropertyAttributeDontDelete
+C/econst/JSPropertyAttribute/kJSPropertyAttributeDontEnum
+C/econst/JSPropertyAttribute/kJSPropertyAttributeNone
+C/econst/JSPropertyAttribute/kJSPropertyAttributeReadOnly
+C/econst/-/kKerberosUAMStr
+C/econst/-/kLarge4BitIcon
+C/econst/-/kLarge4BitIconSize
+C/econst/-/kLarge8BitIcon
+C/econst/-/kLarge8BitIconSize
+C/econst/-/kLargeIcon
+C/econst/-/kLargeIconSize
+C/func/-/kld
+C/func/-/kld_address_func
+C/func/-/kld_forget_symbol
+C/func/-/kld_load
+C/func/-/kld_load_basefile
+C/func/-/kld_load_basefile_from_memory
+C/func/-/kld_load_from_memory
+C/func/-/kld_lookup
+C/func/-/kld_set_link_options
+C/func/-/kld_unload_all
+C/econst/-/kLinearPCMFormatFlagIsAlignedHigh
+C/econst/-/kLinearPCMFormatFlagIsBigEndian
+C/econst/-/kLinearPCMFormatFlagIsFloat
+C/econst/-/kLinearPCMFormatFlagIsNonInterleaved
+C/econst/-/kLinearPCMFormatFlagIsNonMixable
+C/econst/-/kLinearPCMFormatFlagIsPacked
+C/econst/-/kLinearPCMFormatFlagIsSignedInteger
+C/econst/-/kLinearPCMFormatFlagsAreAllClear
+C/econst/-/kLinearPCMFormatFlagsSampleFractionMask
+C/econst/-/kLinearPCMFormatFlagsSampleFractionShift
+C/econst/-/kLocalPPDDomain
+C/econst/-/kLoginWithID
+C/econst/-/kLoginWithoutID
+C/econst/-/kLoginWithTimeAndID
+C/econst/-/kLSAcceptAllowLoginUI
+C/econst/-/kLSAcceptDefault
+C/econst/-/kLSAppDoesNotClaimTypeErr
+C/econst/-/kLSAppDoesNotSupportSchemeWarning
+C/econst/-/kLSAppInTrashErr
+C/econst/-/kLSApplicationNotFoundErr
+C/econst/-/kLSCannotSetInfoErr
+C/econst/-/kLSDataErr
+C/econst/-/kLSDataTooOldErr
+C/econst/-/kLSDataUnavailableErr
+C/econst/-/kLSHandlerOptionsDefault
+C/econst/-/kLSHandlerOptionsIgnoreCreator
+C/econst/-/kLSIncompatibleSystemVersionErr
+C/econst/-/kLSInitializeDefaults
+C/econst/-/kLSInvalidExtensionIndex
+C/data/-/kLSItemContentType
+C/data/-/kLSItemDisplayKind
+C/data/-/kLSItemDisplayName
+C/data/-/kLSItemExtension
+C/data/-/kLSItemExtensionIsHidden
+C/data/-/kLSItemFileCreator
+C/data/-/kLSItemFileType
+C/econst/-/kLSItemInfoAppIsScriptable
+C/econst/-/kLSItemInfoAppPrefersClassic
+C/econst/-/kLSItemInfoAppPrefersNative
+C/econst/-/kLSItemInfoExtensionIsHidden
+C/econst/-/kLSItemInfoIsAliasFile
+C/econst/-/kLSItemInfoIsApplication
+C/econst/-/kLSItemInfoIsClassicApp
+C/econst/-/kLSItemInfoIsContainer
+C/econst/-/kLSItemInfoIsInvisible
+C/econst/-/kLSItemInfoIsNativeApp
+C/econst/-/kLSItemInfoIsPackage
+C/econst/-/kLSItemInfoIsPlainFile
+C/econst/-/kLSItemInfoIsSymlink
+C/econst/-/kLSItemInfoIsVolume
+C/data/-/kLSItemIsInvisible
+C/data/-/kLSItemRoleHandlerDisplayName
+C/econst/-/kLSLaunchAndDisplayErrors
+C/econst/-/kLSLaunchAndHide
+C/econst/-/kLSLaunchAndHideOthers
+C/econst/-/kLSLaunchAndPrint
+C/econst/-/kLSLaunchAsync
+C/econst/-/kLSLaunchDefaults
+C/econst/-/kLSLaunchDontAddToRecents
+C/econst/-/kLSLaunchDontSwitch
+C/econst/-/kLSLaunchHasUntrustedContents
+C/econst/-/kLSLaunchInClassic
+C/econst/-/kLSLaunchInhibitBGOnly
+C/econst/-/kLSLaunchInProgressErr
+C/econst/-/kLSLaunchNewInstance
+C/econst/-/kLSLaunchNoParams
+C/econst/-/kLSLaunchReserved2
+C/econst/-/kLSLaunchReserved3
+C/econst/-/kLSLaunchReserved4
+C/econst/-/kLSLaunchReserved5
+C/econst/-/kLSLaunchStartClassic
+C/macro/-/kLSMAlgorithmDense
+C/macro/-/kLSMAlgorithmKey
+C/macro/-/kLSMAlgorithmSparse
+C/macro/-/kLSMDimensionKey
+C/econst/-/kLSMinCatInfoBitmap
+C/macro/-/kLSMIterationsKey
+C/macro/-/kLSMPrecisionDouble
+C/macro/-/kLSMPrecisionFloat
+C/macro/-/kLSMPrecisionKey
+C/macro/-/kLSMSweepAgeKey
+C/macro/-/kLSMSweepCutoffKey
+C/econst/-/kLSMultipleSessionsNotSupportedErr
+C/econst/-/kLSNoClassicEnvironmentErr
+C/econst/-/kLSNoExecutableErr
+C/econst/-/kLSNoLaunchPermissionErr
+C/econst/-/kLSNoRegistrationInfoErr
+C/econst/-/kLSNotAnApplicationErr
+C/econst/-/kLSNotInitializedErr
+C/econst/-/kLSNotRegisteredErr
+C/econst/-/kLSRequestAllFlags
+C/econst/-/kLSRequestAllInfo
+C/econst/-/kLSRequestAppTypeFlags
+C/econst/-/kLSRequestBasicFlagsOnly
+C/econst/-/kLSRequestExtension
+C/econst/-/kLSRequestExtensionFlagsOnly
+C/econst/-/kLSRequestIconAndKind
+C/econst/-/kLSRequestTypeCreator
+C/econst/-/kLSRolesAll
+C/econst/-/kLSRolesEditor
+C/econst/-/kLSRolesNone
+C/econst/-/kLSRolesShell
+C/econst/-/kLSRolesViewer
+C/econst/-/kLSServerCommunicationErr
+C/econst/-/kLSUnknownCreator
+C/econst/-/kLSUnknownErr
+C/econst/-/kLSUnknownKindID
+C/econst/-/kLSUnknownType
+C/econst/-/kLSUnknownTypeErr
+C/econst/-/kMacArabicAlBayanVariant
+C/econst/-/kMacArabicStandardVariant
+C/econst/-/kMacArabicThuluthVariant
+C/econst/-/kMacArabicTrueTypeVariant
+C/econst/-/kMacCroatianCurrencySignVariant
+C/econst/-/kMacCroatianDefaultVariant
+C/econst/-/kMacCroatianEuroSignVariant
+C/econst/-/kMacCyrillicCurrSignStdVariant
+C/econst/-/kMacCyrillicCurrSignUkrVariant
+C/econst/-/kMacCyrillicDefaultVariant
+C/econst/-/kMacCyrillicEuroSignVariant
+C/econst/-/kMacFarsiStandardVariant
+C/econst/-/kMacFarsiTrueTypeVariant
+C/econst/-/kMacHebrewFigureSpaceVariant
+C/econst/-/kMacHebrewStandardVariant
+C/econst/-/kMacIcelandicStandardVariant
+C/econst/-/kMacIcelandicStdCurrSignVariant
+C/econst/-/kMacIcelandicStdDefaultVariant
+C/econst/-/kMacIcelandicStdEuroSignVariant
+C/econst/-/kMacIcelandicTrueTypeVariant
+C/econst/-/kMacIcelandicTTCurrSignVariant
+C/econst/-/kMacIcelandicTTDefaultVariant
+C/econst/-/kMacIcelandicTTEuroSignVariant
+C/econst/-/kMacJapaneseBasicVariant
+C/econst/-/kMacJapanesePostScriptPrintVariant
+C/econst/-/kMacJapanesePostScriptScrnVariant
+C/econst/-/kMacJapaneseStandardVariant
+C/econst/-/kMacJapaneseStdNoVerticalsVariant
+C/econst/-/kMacJapaneseVertAtKuPlusTenVariant
+C/econst/-/kMacRomanCurrencySignVariant
+C/econst/-/kMacRomanDefaultVariant
+C/econst/-/kMacRomanEuroSignVariant
+C/econst/-/kMacRomanianCurrencySignVariant
+C/econst/-/kMacRomanianDefaultVariant
+C/econst/-/kMacRomanianEuroSignVariant
+C/econst/-/kMacRomanLatin1CroatianVariant
+C/econst/-/kMacRomanLatin1DefaultVariant
+C/econst/-/kMacRomanLatin1IcelandicVariant
+C/econst/-/kMacRomanLatin1RomanianVariant
+C/econst/-/kMacRomanLatin1StandardVariant
+C/econst/-/kMacRomanLatin1TurkishVariant
+C/econst/-/kMacRomanStandardVariant
+C/econst/-/kMacVT100CurrencySignVariant
+C/econst/-/kMacVT100DefaultVariant
+C/econst/-/kMacVT100EuroSignVariant
+C/econst/-/kMale
+C/econst/-/kMaximumBlocksIn4GB
+C/data/-/kMDAttributeAllValues
+C/data/-/kMDAttributeDisplayValues
+C/data/-/kMDAttributeMultiValued
+C/data/-/kMDAttributeName
+C/data/-/kMDAttributeReadOnlyValues
+C/data/-/kMDAttributeType
+C/data/-/kMDExporterAvaliable
+C/macro/-/kMDImporterInterfaceID
+C/macro/-/kMDImporterTypeID
+C/data/-/kMDItemAcquisitionMake
+C/data/-/kMDItemAcquisitionModel
+C/data/-/kMDItemAlbum
+C/data/-/kMDItemAltitude
+C/data/-/kMDItemAperture
+C/data/-/kMDItemAppleLoopDescriptors
+C/data/-/kMDItemAppleLoopsKeyFilterType
+C/data/-/kMDItemAppleLoopsLoopMode
+C/data/-/kMDItemAppleLoopsRootKey
+C/data/-/kMDItemAttributeChangeDate
+C/data/-/kMDItemAudiences
+C/data/-/kMDItemAudioBitRate
+C/data/-/kMDItemAudioChannelCount
+C/data/-/kMDItemAudioEncodingApplication
+C/data/-/kMDItemAudioSampleRate
+C/data/-/kMDItemAudioTrackNumber
+C/data/-/kMDItemAuthorAddresses
+C/data/-/kMDItemAuthorEmailAddresses
+C/data/-/kMDItemAuthors
+C/data/-/kMDItemBitsPerSample
+C/data/-/kMDItemCFBundleIdentifier
+C/data/-/kMDItemCity
+C/data/-/kMDItemCodecs
+C/data/-/kMDItemColorSpace
+C/data/-/kMDItemComment
+C/data/-/kMDItemComposer
+C/data/-/kMDItemContactKeywords
+C/data/-/kMDItemContentCreationDate
+C/data/-/kMDItemContentModificationDate
+C/data/-/kMDItemContentType
+C/data/-/kMDItemContributors
+C/data/-/kMDItemCopyright
+C/data/-/kMDItemCountry
+C/data/-/kMDItemCoverage
+C/data/-/kMDItemCreator
+C/data/-/kMDItemDeliveryType
+C/data/-/kMDItemDescription
+C/data/-/kMDItemDirector
+C/data/-/kMDItemDisplayName
+C/data/-/kMDItemDueDate
+C/data/-/kMDItemDurationSeconds
+C/data/-/kMDItemEmailAddresses
+C/data/-/kMDItemEncodingApplications
+C/data/-/kMDItemEXIFGPSVersion
+C/data/-/kMDItemEXIFVersion
+C/data/-/kMDItemExposureMode
+C/data/-/kMDItemExposureProgram
+C/data/-/kMDItemExposureTimeSeconds
+C/data/-/kMDItemExposureTimeString
+C/data/-/kMDItemFinderComment
+C/data/-/kMDItemFlashOnOff
+C/data/-/kMDItemFNumber
+C/data/-/kMDItemFocalLength
+C/data/-/kMDItemFonts
+C/data/-/kMDItemFSContentChangeDate
+C/data/-/kMDItemFSCreationDate
+C/data/-/kMDItemFSExists
+C/data/-/kMDItemFSHasCustomIcon
+C/data/-/kMDItemFSInvisible
+C/data/-/kMDItemFSIsExtensionHidden
+C/data/-/kMDItemFSIsReadable
+C/data/-/kMDItemFSIsStationery
+C/data/-/kMDItemFSIsWriteable
+C/data/-/kMDItemFSLabel
+C/data/-/kMDItemFSName
+C/data/-/kMDItemFSNodeCount
+C/data/-/kMDItemFSOwnerGroupID
+C/data/-/kMDItemFSOwnerUserID
+C/data/-/kMDItemFSSize
+C/data/-/kMDItemGenre
+C/data/-/kMDItemGPSTrack
+C/data/-/kMDItemHasAlphaChannel
+C/data/-/kMDItemHeadline
+C/data/-/kMDItemIdentifier
+C/data/-/kMDItemImageDirection
+C/data/-/kMDItemInformation
+C/data/-/kMDItemInstantMessageAddresses
+C/data/-/kMDItemInstructions
+C/data/-/kMDItemIsGeneralMIDISequence
+C/data/-/kMDItemISOSpeed
+C/data/-/kMDItemKeySignature
+C/data/-/kMDItemKeywords
+C/data/-/kMDItemKind
+C/data/-/kMDItemLanguages
+C/data/-/kMDItemLastUsedDate
+C/data/-/kMDItemLatitude
+C/data/-/kMDItemLayerNames
+C/data/-/kMDItemLongitude
+C/data/-/kMDItemLyricist
+C/data/-/kMDItemMaxAperture
+C/data/-/kMDItemMediaTypes
+C/data/-/kMDItemMeteringMode
+C/data/-/kMDItemMusicalGenre
+C/data/-/kMDItemMusicalInstrumentCategory
+C/data/-/kMDItemMusicalInstrumentName
+C/data/-/kMDItemNamedLocation
+C/data/-/kMDItemNumberOfPages
+C/data/-/kMDItemOrganizations
+C/data/-/kMDItemOrientation
+C/data/-/kMDItemOriginalFormat
+C/data/-/kMDItemOriginalSource
+C/data/-/kMDItemPageHeight
+C/data/-/kMDItemPageWidth
+C/data/-/kMDItemParticipants
+C/data/-/kMDItemPath
+C/data/-/kMDItemPerformers
+C/data/-/kMDItemPhoneNumbers
+C/data/-/kMDItemPixelCount
+C/data/-/kMDItemPixelHeight
+C/data/-/kMDItemPixelWidth
+C/data/-/kMDItemProducer
+C/data/-/kMDItemProfileName
+C/data/-/kMDItemProjects
+C/data/-/kMDItemPublishers
+C/data/-/kMDItemRecipientAddresses
+C/data/-/kMDItemRecipientEmailAddresses
+C/data/-/kMDItemRecipients
+C/data/-/kMDItemRecordingDate
+C/data/-/kMDItemRecordingYear
+C/data/-/kMDItemRedEyeOnOff
+C/data/-/kMDItemResolutionHeightDPI
+C/data/-/kMDItemResolutionWidthDPI
+C/data/-/kMDItemRights
+C/data/-/kMDItemSecurityMethod
+C/data/-/kMDItemSpeed
+C/data/-/kMDItemStarRating
+C/data/-/kMDItemStateOrProvince
+C/data/-/kMDItemStreamable
+C/data/-/kMDItemSubject
+C/data/-/kMDItemSupportFileType
+C/data/-/kMDItemTempo
+C/data/-/kMDItemTextContent
+C/data/-/kMDItemTheme
+C/data/-/kMDItemTimeSignature
+C/data/-/kMDItemTimestamp
+C/data/-/kMDItemTitle
+C/data/-/kMDItemTotalBitRate
+C/data/-/kMDItemURL
+C/data/-/kMDItemVersion
+C/data/-/kMDItemVideoBitRate
+C/data/-/kMDItemWhereFroms
+C/data/-/kMDItemWhiteBalance
+C/data/-/kMDQueryDidFinishNotification
+C/data/-/kMDQueryDidUpdateNotification
+C/data/-/kMDQueryProgressNotification
+C/data/-/kMDQueryResultContentRelevance
+C/data/-/kMDQueryScopeAllIndexed
+C/data/-/kMDQueryScopeComputer
+C/data/-/kMDQueryScopeComputerIndexed
+C/data/-/kMDQueryScopeHome
+C/data/-/kMDQueryScopeNetwork
+C/data/-/kMDQueryScopeNetworkIndexed
+C/econst/-/kMDQuerySynchronous
+C/data/-/kMDQueryUpdateAddedItems
+C/data/-/kMDQueryUpdateChangedItems
+C/data/-/kMDQueryUpdateRemovedItems
+C/econst/-/kMDQueryWantsUpdates
+C/econst/-/kMIDIControlType_14Bit
+C/econst/-/kMIDIControlType_14BitNRPN
+C/econst/-/kMIDIControlType_14BitRPN
+C/econst/-/kMIDIControlType_7Bit
+C/econst/-/kMIDIControlType_7BitNRPN
+C/econst/-/kMIDIControlType_7BitRPN
+C/macro/-/kMIDIDriverInterface2ID
+C/macro/-/kMIDIDriverInterfaceID
+C/data/-/kMIDIDriverPropertyUsesSerial
+C/macro/-/kMIDIDriverTypeID
+C/econst/-/kMIDIIDNotUnique
+C/econst/-/kMIDIInvalidClient
+C/econst/-/kMIDIInvalidPort
+C/econst/-/kMIDIMessageSendErr
+C/econst/-/kMIDIMsgIOError
+C/econst/-/kMIDIMsgObjectAdded
+C/econst/-/kMIDIMsgObjectRemoved
+C/econst/-/kMIDIMsgPropertyChanged
+C/econst/-/kMIDIMsgSerialPortOwnerChanged
+C/econst/-/kMIDIMsgSetupChanged
+C/econst/-/kMIDIMsgThruConnectionsChanged
+C/econst/-/kMIDINoConnection
+C/econst/-/kMIDINoCurrentSetup
+C/econst/-/kMIDIObjectNotFound
+C/data/-/kMIDIPropertyAdvanceScheduleTimeMuSec
+C/data/-/kMIDIPropertyCanRoute
+C/data/-/kMIDIPropertyConnectionUniqueID
+C/data/-/kMIDIPropertyDeviceID
+C/data/-/kMIDIPropertyDisplayName
+C/data/-/kMIDIPropertyDriverDeviceEditorApp
+C/data/-/kMIDIPropertyDriverOwner
+C/data/-/kMIDIPropertyDriverVersion
+C/data/-/kMIDIPropertyFactoryPatchNameFile
+C/data/-/kMIDIPropertyImage
+C/data/-/kMIDIPropertyIsBroadcast
+C/data/-/kMIDIPropertyIsDrumMachine
+C/data/-/kMIDIPropertyIsEffectUnit
+C/data/-/kMIDIPropertyIsEmbeddedEntity
+C/data/-/kMIDIPropertyIsMixer
+C/data/-/kMIDIPropertyIsSampler
+C/data/-/kMIDIPropertyManufacturer
+C/data/-/kMIDIPropertyMaxReceiveChannels
+C/data/-/kMIDIPropertyMaxSysExSpeed
+C/data/-/kMIDIPropertyMaxTransmitChannels
+C/data/-/kMIDIPropertyModel
+C/data/-/kMIDIPropertyName
+C/data/-/kMIDIPropertyNameConfiguration
+C/data/-/kMIDIPropertyOffline
+C/data/-/kMIDIPropertyPanDisruptsStereo
+C/data/-/kMIDIPropertyPrivate
+C/data/-/kMIDIPropertyReceiveChannels
+C/data/-/kMIDIPropertyReceivesBankSelectLSB
+C/data/-/kMIDIPropertyReceivesBankSelectMSB
+C/data/-/kMIDIPropertyReceivesClock
+C/data/-/kMIDIPropertyReceivesMTC
+C/data/-/kMIDIPropertyReceivesNotes
+C/data/-/kMIDIPropertyReceivesProgramChanges
+C/data/-/kMIDIPropertySingleRealtimeEntity
+C/data/-/kMIDIPropertySupportsGeneralMIDI
+C/data/-/kMIDIPropertySupportsMMC
+C/data/-/kMIDIPropertySupportsShowControl
+C/data/-/kMIDIPropertyTransmitChannels
+C/data/-/kMIDIPropertyTransmitsBankSelectLSB
+C/data/-/kMIDIPropertyTransmitsBankSelectMSB
+C/data/-/kMIDIPropertyTransmitsClock
+C/data/-/kMIDIPropertyTransmitsMTC
+C/data/-/kMIDIPropertyTransmitsNotes
+C/data/-/kMIDIPropertyTransmitsProgramChanges
+C/data/-/kMIDIPropertyUniqueID
+C/data/-/kMIDIPropertyUserPatchNameFile
+C/econst/-/kMIDIServerStartErr
+C/econst/-/kMIDISetupFormatErr
+C/econst/-/kMIDITransform_Add
+C/econst/-/kMIDITransform_FilterOut
+C/econst/-/kMIDITransform_MapControl
+C/econst/-/kMIDITransform_MapValue
+C/econst/-/kMIDITransform_MaxValue
+C/econst/-/kMIDITransform_MinValue
+C/econst/-/kMIDITransform_None
+C/econst/-/kMIDITransform_Scale
+C/econst/-/kMIDIUnknownEndpoint
+C/econst/-/kMIDIUnknownProperty
+C/econst/-/kMIDIWrongEndpointType
+C/econst/-/kMIDIWrongPropertyType
+C/econst/-/kMIDIWrongThread
+C/econst/MMCDeviceTrayState/kMMCDeviceTrayClosed
+C/econst/MMCDeviceTrayState/kMMCDeviceTrayOpen
+C/econst/-/kMovieMediaBackgroundColor
+C/econst/-/kMovieMediaDefaultDataReferenceID
+C/econst/-/kMovieMediaPrerollTime
+C/econst/-/kMovieMediaSlaveGraphicsMode
+C/econst/-/kMovieMediaSlaveTime
+C/econst/-/kMPAddressSpaceInfoVersion
+C/econst/-/kMPAllocate1024ByteAligned
+C/econst/-/kMPAllocate16ByteAligned
+C/econst/-/kMPAllocate32ByteAligned
+C/econst/-/kMPAllocate4096ByteAligned
+C/econst/-/kMPAllocate8ByteAligned
+C/econst/-/kMPAllocateAltiVecAligned
+C/econst/-/kMPAllocateClearMask
+C/econst/-/kMPAllocateDefaultAligned
+C/econst/-/kMPAllocateGloballyMask
+C/econst/-/kMPAllocateInterlockAligned
+C/econst/-/kMPAllocateMaxAlignment
+C/econst/-/kMPAllocateNoCreateMask
+C/econst/-/kMPAllocateNoGrowthMask
+C/econst/-/kMPAllocateResidentMask
+C/econst/-/kMPAllocateVMPageAligned
+C/econst/-/kMPAllocateVMXAligned
+C/econst/-/kMPAnyRemoteContext
+C/econst/-/kMPAsyncInterruptRemoteContext
+C/econst/-/kMPCreateTaskNotDebuggableMask
+C/econst/-/kMPCreateTaskSuspendedMask
+C/econst/-/kMPCreateTaskTakesAllExceptionsMask
+C/econst/-/kMPCreateTaskValidOptionsMask
+C/econst/-/kMPCriticalRegionInfoVersion
+C/econst/-/kMPDeletedErr
+C/econst/-/kMPEG4Object_AAC_LC
+C/econst/-/kMPEG4Object_AAC_LTP
+C/econst/-/kMPEG4Object_AAC_Main
+C/econst/-/kMPEG4Object_AAC_SBR
+C/econst/-/kMPEG4Object_AAC_Scalable
+C/econst/-/kMPEG4Object_AAC_SSR
+C/econst/-/kMPEG4Object_CELP
+C/econst/-/kMPEG4Object_HVXC
+C/econst/-/kMPEG4Object_TwinVQ
+C/econst/-/kMPEventInfoVersion
+C/econst/-/kMPHighLevelDebugger
+C/econst/-/kMPInsufficientResourcesErr
+C/econst/-/kMPInterruptRemoteContext
+C/econst/-/kMPInvalidIDErr
+C/econst/-/kMPIterationEndErr
+C/econst/-/kMPLowLevelDebugger
+C/econst/-/kMPMaxAllocSize
+C/econst/-/kMPMidLevelDebugger
+C/econst/-/kMPNoID
+C/econst/-/kMPNotificationInfoVersion
+C/econst/-/kMPOwningProcessRemoteContext
+C/econst/-/kMPPreserveTimerIDMask
+C/econst/-/kMPPrivilegedErr
+C/econst/-/kMPProcessCreatedErr
+C/econst/-/kMPProcessTerminatedErr
+C/econst/-/kMPQueueInfoVersion
+C/econst/-/kMPSemaphoreInfoVersion
+C/econst/-/kMPTaskBlocked
+C/econst/-/kMPTaskBlockedErr
+C/econst/-/kMPTaskCreatedErr
+C/econst/-/kMPTaskInfoVersion
+C/econst/-/kMPTaskPropagate
+C/econst/-/kMPTaskPropagateMask
+C/econst/-/kMPTaskReady
+C/econst/-/kMPTaskResumeBranch
+C/econst/-/kMPTaskResumeBranchMask
+C/econst/-/kMPTaskResumeMask
+C/econst/-/kMPTaskResumeStep
+C/econst/-/kMPTaskResumeStepMask
+C/econst/-/kMPTaskRunning
+C/econst/-/kMPTaskState32BitMemoryException
+C/econst/-/kMPTaskStateFPU
+C/econst/-/kMPTaskStateMachine
+C/econst/-/kMPTaskStateRegisters
+C/econst/-/kMPTaskStateTaskInfo
+C/econst/-/kMPTaskStateVectors
+C/econst/-/kMPTaskStoppedErr
+C/econst/-/kMPTimeIsDeltaMask
+C/econst/-/kMPTimeIsDurationMask
+C/econst/-/kMPTimeoutErr
+C/econst/-/kMsgNotifyMask
+C/econst/-/kMultiChannelMixerParam_Enable
+C/econst/-/kMultiChannelMixerParam_PostAveragePower
+C/econst/-/kMultiChannelMixerParam_PostPeakHoldLevel
+C/econst/-/kMultiChannelMixerParam_PreAveragePower
+C/econst/-/kMultiChannelMixerParam_PrePeakHoldLevel
+C/econst/-/kMultiChannelMixerParam_Volume
+C/econst/-/kMusicEventType_AUPreset
+C/econst/-/kMusicEventType_ExtendedControl
+C/econst/-/kMusicEventType_ExtendedNote
+C/econst/-/kMusicEventType_ExtendedTempo
+C/econst/-/kMusicEventType_Last
+C/econst/-/kMusicEventType_Meta
+C/econst/-/kMusicEventType_MIDIChannelMessage
+C/econst/-/kMusicEventType_MIDINoteMessage
+C/econst/-/kMusicEventType_MIDIRawData
+C/econst/-/kMusicEventType_NULL
+C/econst/-/kMusicEventType_Parameter
+C/econst/-/kMusicEventType_User
+C/econst/-/kMusicSequenceFile_iMelodyType
+C/econst/-/kMusicSequenceFile_MIDIType
+C/econst/-/kMusicSequenceFileFlags_EraseFile
+C/econst/-/kMusicSequenceLoadSMF_ChannelsToTracks
+C/econst/-/kMusicSequenceType_Beats
+C/econst/-/kMusicSequenceType_Samples
+C/econst/-/kMusicSequenceType_Seconds
+C/macro/-/kMusicTimeStamp_EndOfTrack
+C/econst/-/kNameToGroupID
+C/econst/-/kNameToUserID
+C/econst/-/kNCMMConcatInit
+C/econst/-/kNCMMInit
+C/econst/-/kNCMMNewLinkProfile
+C/econst/-/kNetworkPPDDomain
+C/econst/-/kNeuter
+C/econst/-/kNeverAuthenticate
+Objective-C/clm/NSColor/knobColor
+Objective-C/instm/NSScroller/knobProportion
+Objective-C/instm/NSSliderCell/knobRectFlipped:
+Objective-C/instm/NSSlider/knobThickness
+Objective-C/instm/NSSliderCell/knobThickness
+C/econst/-/kNoEndingProsody
+C/econst/-/kNoExchangeFiles
+C/econst/-/knoGroup
+C/econst/-/kNoNetworkUserIDs
+C/econst/-/kNoProcess
+C/econst/-/kNoSpeechInterrupt
+C/econst/-/kNoTransform
+C/econst/-/knoUser
+C/econst/-/kNoUserAuthentication
+C/econst/-/kNoUserAuthStr
+Objective-C/clm/NSTimeZone/knownTimeZoneNames
+Objective-C/instm/NSView/knowsPageRange:
+C/econst/-/kNumberOfResponseFrequencies
+C/econst/OBEXErrorCodes/kOBEXErrorRangeMax
+C/econst/OBEXErrorCodes/kOBEXErrorRangeMin
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDAppParameters
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDAuthorizationChallenge
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDAuthorizationResponse
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDBody
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDConnectionID
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDCount
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDDescription
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDEndOfBody
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDHTTP
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDLength
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDName
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDOBEX13CreatorID
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDOBEX13ObjectClass
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDOBEX13SessionParameters
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDOBEX13SessionSequenceNumber
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDOBEX13WANUUID
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDObjectClass
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDReservedRangeEnd
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDReservedRangeStart
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDTarget
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDTime4Byte
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDTimeISO
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDType
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDUserDefinedRangeEnd
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDUserDefinedRangeStart
+C/econst/OBEXHeaderIdentifiers/kOBEXHeaderIDWho
+C/data/-/kODAttributeTypeAccessControlEntry
+C/data/-/kODAttributeTypeAddressLine1
+C/data/-/kODAttributeTypeAddressLine2
+C/data/-/kODAttributeTypeAddressLine3
+C/data/-/kODAttributeTypeAdminLimits
+C/data/-/kODAttributeTypeAlias
+C/data/-/kODAttributeTypeAllAttributes
+C/data/-/kODAttributeTypeAllTypes
+C/data/-/kODAttributeTypeAreaCode
+C/data/-/kODAttributeTypeAttrListRefCount
+C/data/-/kODAttributeTypeAttrListRefs
+C/data/-/kODAttributeTypeAttrListValueRefCount
+C/data/-/kODAttributeTypeAttrListValueRefs
+C/data/-/kODAttributeTypeAuthCredential
+C/data/-/kODAttributeTypeAuthenticationAuthority
+C/data/-/kODAttributeTypeAuthenticationHint
+C/data/-/kODAttributeTypeAuthMethod
+C/data/-/kODAttributeTypeAuthorityRevocationList
+C/data/-/kODAttributeTypeAutomaticSearchPath
+C/data/-/kODAttributeTypeAutomountInformation
+C/data/-/kODAttributeTypeBirthday
+C/data/-/kODAttributeTypeBootParams
+C/data/-/kODAttributeTypeBuilding
+C/data/-/kODAttributeTypeBuildVersion
+C/data/-/kODAttributeTypeCACertificate
+C/data/-/kODAttributeTypeCapacity
+C/data/-/kODAttributeTypeCertificateRevocationList
+C/data/-/kODAttributeTypeCity
+C/data/-/kODAttributeTypeComment
+C/data/-/kODAttributeTypeCompany
+C/data/-/kODAttributeTypeComputers
+C/data/-/kODAttributeTypeConfigAvailable
+C/data/-/kODAttributeTypeConfigFile
+C/data/-/kODAttributeTypeContactGUID
+C/data/-/kODAttributeTypeContactPerson
+C/data/-/kODAttributeTypeCopyTimestamp
+C/data/-/kODAttributeTypeCoreFWVersion
+C/data/-/kODAttributeTypeCountry
+C/data/-/kODAttributeTypeCreationTimestamp
+C/data/-/kODAttributeTypeCrossCertificatePair
+C/data/-/kODAttributeTypeCustomSearchPath
+C/data/-/kODAttributeTypeDataStamp
+C/data/-/kODAttributeTypeDateRecordCreated
+C/data/-/kODAttributeTypeDepartment
+C/data/-/kODAttributeTypeDirRefCount
+C/data/-/kODAttributeTypeDirRefs
+C/data/-/kODAttributeTypeDNSDomain
+C/data/-/kODAttributeTypeDNSName
+C/data/-/kODAttributeTypeDNSNameServer
+C/data/-/kODAttributeTypeEMailAddress
+C/data/-/kODAttributeTypeEMailContacts
+C/data/-/kODAttributeTypeENetAddress
+C/data/-/kODAttributeTypeExpire
+C/data/-/kODAttributeTypeFaxNumber
+C/data/-/kODAttributeTypeFirstName
+C/data/-/kODAttributeTypeFullName
+C/data/-/kODAttributeTypeFunctionalState
+C/data/-/kODAttributeTypeFWVersion
+C/data/-/kODAttributeTypeGroup
+C/data/-/kODAttributeTypeGroupMembers
+C/data/-/kODAttributeTypeGroupMembership
+C/data/-/kODAttributeTypeGroupServices
+C/data/-/kODAttributeTypeGUID
+C/data/-/kODAttributeTypeHomeDirectory
+C/data/-/kODAttributeTypeHomeDirectoryQuota
+C/data/-/kODAttributeTypeHomeDirectorySoftQuota
+C/data/-/kODAttributeTypeHomeLocOwner
+C/data/-/kODAttributeTypeHomePhoneNumber
+C/data/-/kODAttributeTypeHTML
+C/data/-/kODAttributeTypeIMHandle
+C/data/-/kODAttributeTypeInternetAlias
+C/data/-/kODAttributeTypeIPAddress
+C/data/-/kODAttributeTypeIPAddressAndENetAddress
+C/data/-/kODAttributeTypeIPv6Address
+C/data/-/kODAttributeTypeJobTitle
+C/data/-/kODAttributeTypeJPEGPhoto
+C/data/-/kODAttributeTypeKDCAuthKey
+C/data/-/kODAttributeTypeKDCConfigData
+C/data/-/kODAttributeTypeKerberosRealm
+C/data/-/kODAttributeTypeKeywords
+C/data/-/kODAttributeTypeLastName
+C/data/-/kODAttributeTypeLDAPReadReplicas
+C/data/-/kODAttributeTypeLDAPSearchBaseSuffix
+C/data/-/kODAttributeTypeLDAPWriteReplicas
+C/data/-/kODAttributeTypeLocalOnlySearchPath
+C/data/-/kODAttributeTypeLocation
+C/data/-/kODAttributeTypeMailAttribute
+C/data/-/kODAttributeTypeMapCoordinates
+C/data/-/kODAttributeTypeMapGUID
+C/data/-/kODAttributeTypeMapURI
+C/data/-/kODAttributeTypeMCXFlags
+C/data/-/kODAttributeTypeMCXSettings
+C/data/-/kODAttributeTypeMetaAutomountMap
+C/data/-/kODAttributeTypeMetaNodeLocation
+C/data/-/kODAttributeTypeMiddleName
+C/data/-/kODAttributeTypeMIME
+C/data/-/kODAttributeTypeMobileNumber
+C/data/-/kODAttributeTypeModificationTimestamp
+C/data/-/kODAttributeTypeNamePrefix
+C/data/-/kODAttributeTypeNameSuffix
+C/data/-/kODAttributeTypeNativeOnly
+C/data/-/kODAttributeTypeNestedGroups
+C/data/-/kODAttributeTypeNetGroups
+C/data/-/kODAttributeTypeNetGroupTriplet
+C/data/-/kODAttributeTypeNetworkNumber
+C/data/-/kODAttributeTypeNFSHomeDirectory
+C/data/-/kODAttributeTypeNickName
+C/data/-/kODAttributeTypeNodePath
+C/data/-/kODAttributeTypeNodeRefCount
+C/data/-/kODAttributeTypeNodeRefs
+C/data/-/kODAttributeTypeNote
+C/data/-/kODAttributeTypeNTDomainComputerAccount
+C/data/-/kODAttributeTypeNumTableList
+C/data/-/kODAttributeTypeOrganizationInfo
+C/data/-/kODAttributeTypeOrganizationName
+C/data/-/kODAttributeTypeOriginalHomeDirectory
+C/data/-/kODAttributeTypeOriginalNFSHomeDirectory
+C/data/-/kODAttributeTypeOriginalNodeName
+C/data/-/kODAttributeTypeOwner
+C/data/-/kODAttributeTypeOwnerGUID
+C/data/-/kODAttributeTypePagerNumber
+C/data/-/kODAttributeTypePassword
+C/data/-/kODAttributeTypePasswordPlus
+C/data/-/kODAttributeTypePasswordPolicyOptions
+C/data/-/kODAttributeTypePasswordServerList
+C/data/-/kODAttributeTypePasswordServerLocation
+C/data/-/kODAttributeTypePGPPublicKey
+C/data/-/kODAttributeTypePhoneContacts
+C/data/-/kODAttributeTypePhoneNumber
+C/data/-/kODAttributeTypePicture
+C/data/-/kODAttributeTypePIDValue
+C/data/-/kODAttributeTypePluginIndex
+C/data/-/kODAttributeTypePlugInInfo
+C/data/-/kODAttributeTypePort
+C/data/-/kODAttributeTypePostalAddress
+C/data/-/kODAttributeTypePostalAddressContacts
+C/data/-/kODAttributeTypePostalCode
+C/data/-/kODAttributeTypePresetUserIsAdmin
+C/data/-/kODAttributeTypePrimaryComputerGUID
+C/data/-/kODAttributeTypePrimaryComputerList
+C/data/-/kODAttributeTypePrimaryGroupID
+C/data/-/kODAttributeTypePrimaryNTDomain
+C/data/-/kODAttributeTypePrinter1284DeviceID
+C/data/-/kODAttributeTypePrinterLPRHost
+C/data/-/kODAttributeTypePrinterLPRQueue
+C/data/-/kODAttributeTypePrinterMakeAndModel
+C/data/-/kODAttributeTypePrinterType
+C/data/-/kODAttributeTypePrinterURI
+C/data/-/kODAttributeTypePrinterXRISupported
+C/data/-/kODAttributeTypePrintServiceInfoText
+C/data/-/kODAttributeTypePrintServiceInfoXML
+C/data/-/kODAttributeTypePrintServiceUserData
+C/data/-/kODAttributeTypeProcessName
+C/data/-/kODAttributeTypeProtocolNumber
+C/data/-/kODAttributeTypeProtocols
+C/data/-/kODAttributeTypePwdAgingPolicy
+C/data/-/kODAttributeTypeReadOnlyNode
+C/data/-/kODAttributeTypeRealUserID
+C/data/-/kODAttributeTypeRecordName
+C/data/-/kODAttributeTypeRecordType
+C/data/-/kODAttributeTypeRecRefCount
+C/data/-/kODAttributeTypeRecRefs
+C/data/-/kODAttributeTypeRelationships
+C/data/-/kODAttributeTypeRelativeDNPrefix
+C/data/-/kODAttributeTypeResourceInfo
+C/data/-/kODAttributeTypeResourceType
+C/data/-/kODAttributeTypeRPCNumber
+C/data/-/kODAttributeTypeSchema
+C/data/-/kODAttributeTypeSearchPath
+C/data/-/kODAttributeTypeSearchPolicy
+C/data/-/kODAttributeTypeServicesLocator
+C/data/-/kODAttributeTypeServiceType
+C/data/-/kODAttributeTypeSetupAdvertising
+C/data/-/kODAttributeTypeSetupAutoRegister
+C/data/-/kODAttributeTypeSetupLocation
+C/data/-/kODAttributeTypeSetupOccupation
+C/data/-/kODAttributeTypeSMBAcctFlags
+C/data/-/kODAttributeTypeSMBGroupRID
+C/data/-/kODAttributeTypeSMBHome
+C/data/-/kODAttributeTypeSMBHomeDrive
+C/data/-/kODAttributeTypeSMBKickoffTime
+C/data/-/kODAttributeTypeSMBLogoffTime
+C/data/-/kODAttributeTypeSMBLogonTime
+C/data/-/kODAttributeTypeSMBPrimaryGroupSID
+C/data/-/kODAttributeTypeSMBProfilePath
+C/data/-/kODAttributeTypeSMBPWDLastSet
+C/data/-/kODAttributeTypeSMBRID
+C/data/-/kODAttributeTypeSMBScriptPath
+C/data/-/kODAttributeTypeSMBSID
+C/data/-/kODAttributeTypeSMBUserWorkstations
+C/data/-/kODAttributeTypeStandardOnly
+C/data/-/kODAttributeTypeState
+C/data/-/kODAttributeTypeStreet
+C/data/-/kODAttributeTypeSubNodes
+C/data/-/kODAttributeTypeTimePackage
+C/data/-/kODAttributeTypeTimeToLive
+C/data/-/kODAttributeTypeTotalRefCount
+C/data/-/kODAttributeTypeTotalSize
+C/data/-/kODAttributeTypeUniqueID
+C/data/-/kODAttributeTypeURL
+C/data/-/kODAttributeTypeUserCertificate
+C/data/-/kODAttributeTypeUserPKCS12Data
+C/data/-/kODAttributeTypeUserShell
+C/data/-/kODAttributeTypeUserSMIMECertificate
+C/data/-/kODAttributeTypeVersion
+C/data/-/kODAttributeTypeVFSDumpFreq
+C/data/-/kODAttributeTypeVFSLinkDir
+C/data/-/kODAttributeTypeVFSOpts
+C/data/-/kODAttributeTypeVFSPassNo
+C/data/-/kODAttributeTypeVFSType
+C/data/-/kODAttributeTypeWeblogURI
+C/data/-/kODAttributeTypeXMLPlist
+C/data/-/kODAuthenticationType2WayRandom
+C/data/-/kODAuthenticationType2WayRandomChangePasswd
+C/data/-/kODAuthenticationTypeAPOP
+C/data/-/kODAuthenticationTypeChangePasswd
+C/data/-/kODAuthenticationTypeClearText
+C/data/-/kODAuthenticationTypeCRAM_MD5
+C/data/-/kODAuthenticationTypeCrypt
+C/data/-/kODAuthenticationTypeDeleteUser
+C/data/-/kODAuthenticationTypeDIGEST_MD5
+C/data/-/kODAuthenticationTypeGetEffectivePolicy
+C/data/-/kODAuthenticationTypeGetGlobalPolicy
+C/data/-/kODAuthenticationTypeGetKerberosPrincipal
+C/data/-/kODAuthenticationTypeGetPolicy
+C/data/-/kODAuthenticationTypeGetUserData
+C/data/-/kODAuthenticationTypeGetUserName
+C/data/-/kODAuthenticationTypeKerberosTickets
+C/data/-/kODAuthenticationTypeMPPEMasterKeys
+C/data/-/kODAuthenticationTypeMSCHAP2
+C/data/-/kODAuthenticationTypeNewUser
+C/data/-/kODAuthenticationTypeNewUserWithPolicy
+C/data/-/kODAuthenticationTypeNodeNativeClearTextOK
+C/data/-/kODAuthenticationTypeNodeNativeNoClearText
+C/data/-/kODAuthenticationTypeNTLMv2
+C/data/-/kODAuthenticationTypeNTLMv2WithSessionKey
+C/data/-/kODAuthenticationTypeReadSecureHash
+C/data/-/kODAuthenticationTypeSecureHash
+C/data/-/kODAuthenticationTypeSetGlobalPolicy
+C/data/-/kODAuthenticationTypeSetLMHash
+C/data/-/kODAuthenticationTypeSetNTHash
+C/data/-/kODAuthenticationTypeSetPassword
+C/data/-/kODAuthenticationTypeSetPasswordAsCurrent
+C/data/-/kODAuthenticationTypeSetPolicy
+C/data/-/kODAuthenticationTypeSetPolicyAsCurrent
+C/data/-/kODAuthenticationTypeSetUserData
+C/data/-/kODAuthenticationTypeSetUserName
+C/data/-/kODAuthenticationTypeSetWorkstationPassword
+C/data/-/kODAuthenticationTypeSMB_LM_Key
+C/data/-/kODAuthenticationTypeSMB_NT_Key
+C/data/-/kODAuthenticationTypeSMB_NT_UserSessionKey
+C/data/-/kODAuthenticationTypeSMB_NT_WithUserSessionKey
+C/data/-/kODAuthenticationTypeSMBNTv2UserSessionKey
+C/data/-/kODAuthenticationTypeSMBWorkstationCredentialSessionKey
+C/data/-/kODAuthenticationTypeWithAuthorizationRef
+C/data/-/kODAuthenticationTypeWriteSecureHash
+C/econst/-/kODErrorCredentialsAccountDisabled
+C/econst/-/kODErrorCredentialsAccountExpired
+C/econst/-/kODErrorCredentialsAccountInactive
+C/econst/-/kODErrorCredentialsAccountNotFound
+C/econst/-/kODErrorCredentialsContactMaster
+C/econst/-/kODErrorCredentialsInvalid
+C/econst/-/kODErrorCredentialsInvalidComputer
+C/econst/-/kODErrorCredentialsInvalidLogonHours
+C/econst/-/kODErrorCredentialsMethodNotSupported
+C/econst/-/kODErrorCredentialsNotAuthorized
+C/econst/-/kODErrorCredentialsOperationFailed
+C/econst/-/kODErrorCredentialsParameterError
+C/econst/-/kODErrorCredentialsPasswordChangeRequired
+C/econst/-/kODErrorCredentialsPasswordChangeTooSoon
+C/econst/-/kODErrorCredentialsPasswordExpired
+C/econst/-/kODErrorCredentialsPasswordNeedsDigit
+C/econst/-/kODErrorCredentialsPasswordNeedsLetter
+C/econst/-/kODErrorCredentialsPasswordQualityFailed
+C/econst/-/kODErrorCredentialsPasswordTooLong
+C/econst/-/kODErrorCredentialsPasswordTooShort
+C/econst/-/kODErrorCredentialsPasswordUnrecoverable
+C/econst/-/kODErrorCredentialsServerCommunicationError
+C/econst/-/kODErrorCredentialsServerError
+C/econst/-/kODErrorCredentialsServerNotFound
+C/econst/-/kODErrorCredentialsServerTimeout
+C/econst/-/kODErrorCredentialsServerUnreachable
+C/econst/-/kODErrorDaemonError
+C/econst/-/kODErrorNodeConnectionFailed
+C/econst/-/kODErrorNodeUnknownHost
+C/econst/-/kODErrorNodeUnknownName
+C/econst/-/kODErrorNodeUnknownType
+C/econst/-/kODErrorPluginError
+C/econst/-/kODErrorPluginOperationNotSupported
+C/econst/-/kODErrorQueryInvalidMatchType
+C/econst/-/kODErrorQuerySynchronize
+C/econst/-/kODErrorQueryTimeout
+C/econst/-/kODErrorQueryUnsupportedMatchType
+C/econst/-/kODErrorRecordAlreadyExists
+C/econst/-/kODErrorRecordAttributeNotFound
+C/econst/-/kODErrorRecordAttributeUnknownType
+C/econst/-/kODErrorRecordAttributeValueNotFound
+C/econst/-/kODErrorRecordAttributeValueSchemaError
+C/econst/-/kODErrorRecordParameterError
+C/econst/-/kODErrorRecordPermissionError
+C/econst/-/kODErrorRecordReadOnlyNode
+C/econst/-/kODErrorRecordTypeDisabled
+C/econst/-/kODErrorSessionDaemonNotRunning
+C/econst/-/kODErrorSessionDaemonRefused
+C/econst/-/kODErrorSessionLocalOnlyDaemonInUse
+C/econst/-/kODErrorSessionNormalDaemonInUse
+C/econst/-/kODErrorSessionProxyCommunicationError
+C/econst/-/kODErrorSessionProxyIPUnreachable
+C/econst/-/kODErrorSessionProxyUnknownHost
+C/econst/-/kODErrorSessionProxyVersionMismatch
+C/data/-/kODMatchAny
+C/data/-/kODMatchBeginsWith
+C/data/-/kODMatchContains
+C/data/-/kODMatchEndsWith
+C/data/-/kODMatchEqualTo
+C/data/-/kODMatchGreaterThan
+C/data/-/kODMatchInsensitiveBeginsWith
+C/data/-/kODMatchInsensitiveContains
+C/data/-/kODMatchInsensitiveEndsWith
+C/data/-/kODMatchInsensitiveEqualTo
+C/data/-/kODMatchLessThan
+C/econst/-/kODNodeTypeAuthentication
+C/econst/-/kODNodeTypeConfigure
+C/econst/-/kODNodeTypeContacts
+C/econst/-/kODNodeTypeLocalNodes
+C/econst/-/kODNodeTypeNetwork
+C/data/-/kODRecordTypeAFPServer
+C/data/-/kODRecordTypeAliases
+C/data/-/kODRecordTypeAttributeTypes
+C/data/-/kODRecordTypeAugments
+C/data/-/kODRecordTypeAutomount
+C/data/-/kODRecordTypeAutomountMap
+C/data/-/kODRecordTypeAutoServerSetup
+C/data/-/kODRecordTypeBootp
+C/data/-/kODRecordTypeCertificateAuthorities
+C/data/-/kODRecordTypeComputerGroups
+C/data/-/kODRecordTypeComputerLists
+C/data/-/kODRecordTypeComputers
+C/data/-/kODRecordTypeConfiguration
+C/data/-/kODRecordTypeEthernets
+C/data/-/kODRecordTypeFileMakerServers
+C/data/-/kODRecordTypeFTPServer
+C/data/-/kODRecordTypeGroups
+C/data/-/kODRecordTypeHosts
+C/data/-/kODRecordTypeHostServices
+C/data/-/kODRecordTypeLDAPServer
+C/data/-/kODRecordTypeLocations
+C/data/-/kODRecordTypeMounts
+C/data/-/kODRecordTypeNetDomains
+C/data/-/kODRecordTypeNetGroups
+C/data/-/kODRecordTypeNetworks
+C/data/-/kODRecordTypeNFS
+C/data/-/kODRecordTypePeople
+C/data/-/kODRecordTypePresetComputerGroups
+C/data/-/kODRecordTypePresetComputerLists
+C/data/-/kODRecordTypePresetComputers
+C/data/-/kODRecordTypePresetGroups
+C/data/-/kODRecordTypePresetUsers
+C/data/-/kODRecordTypePrinters
+C/data/-/kODRecordTypePrintService
+C/data/-/kODRecordTypePrintServiceUser
+C/data/-/kODRecordTypeProtocols
+C/data/-/kODRecordTypeQTSServer
+C/data/-/kODRecordTypeRecordTypes
+C/data/-/kODRecordTypeResources
+C/data/-/kODRecordTypeRPC
+C/data/-/kODRecordTypeServer
+C/data/-/kODRecordTypeServices
+C/data/-/kODRecordTypeSharePoints
+C/data/-/kODRecordTypeSMBServer
+C/data/-/kODRecordTypeUsers
+C/data/-/kODRecordTypeWebServer
+C/data/-/kODSessionDefault
+C/data/-/kODSessionProxyAddress
+C/data/-/kODSessionProxyPassword
+C/data/-/kODSessionProxyPort
+C/data/-/kODSessionProxyUsername
+C/econst/-/kOpaqueAddressSpaceID
+C/econst/-/kOpaqueAnyID
+C/econst/-/kOpaqueAreaID
+C/econst/-/kOpaqueCoherenceID
+C/econst/-/kOpaqueConsoleID
+C/econst/-/kOpaqueCpuID
+C/econst/-/kOpaqueCriticalRegionID
+C/econst/-/kOpaqueEventID
+C/econst/-/kOpaqueNotificationID
+C/econst/-/kOpaqueProcessID
+C/econst/-/kOpaqueQueueID
+C/econst/-/kOpaqueSemaphoreID
+C/econst/-/kOpaqueTaskID
+C/econst/-/kOpaqueTimerID
+C/data/-/kOSBooleanFalse
+C/data/-/kOSBooleanTrue
+C/macro/-/kOSBundleAllowUserLoadKey
+C/macro/-/kOSBundleCompatibleVersionKey
+C/macro/-/kOSBundleEnableKextLoggingKey
+C/macro/-/kOSBundleIsInterfaceKey
+C/macro/-/kOSBundleLibrariesKey
+C/macro/-/kOSBundleRequiredConsole
+C/macro/-/kOSBundleRequiredKey
+C/macro/-/kOSBundleRequiredLocalRoot
+C/macro/-/kOSBundleRequiredNetworkRoot
+C/macro/-/kOSBundleRequiredRoot
+C/macro/-/kOSBundleRequiredSafeBoot
+C/macro/-/kOSBundleSharedExecutableIdentifierKey
+C/macro/-/kOSKernelResourceKey
+C/macro/-/kOSKextInvalidLoadTag
+C/macro/-/kOSKextKernelIdentifier
+C/macro/-/kOSKextReturnArchNotFound
+C/macro/-/kOSKextReturnAuthentication
+C/macro/-/kOSKextReturnBadData
+C/macro/-/kOSKextReturnBootLevel
+C/macro/-/kOSKextReturnCache
+C/macro/-/kOSKextReturnDeferred
+C/macro/-/kOSKextReturnDependencies
+C/macro/-/kOSKextReturnDependencyLoadError
+C/macro/-/kOSKextReturnDisabled
+C/macro/-/kOSKextReturnInternalError
+C/macro/-/kOSKextReturnInUse
+C/macro/-/kOSKextReturnInvalidArgument
+C/macro/-/kOSKextReturnLinkError
+C/macro/-/kOSKextReturnLoadedVersionDiffers
+C/macro/-/kOSKextReturnNoMemory
+C/macro/-/kOSKextReturnNoResources
+C/macro/-/kOSKextReturnNotAKext
+C/macro/-/kOSKextReturnNotFound
+C/macro/-/kOSKextReturnNotLoadable
+C/macro/-/kOSKextReturnNotPrivileged
+C/macro/-/kOSKextReturnSerialization
+C/macro/-/kOSKextReturnStartStopError
+C/macro/-/kOSKextReturnStopping
+C/macro/-/kOSKextReturnTimeout
+C/macro/-/kOSKextReturnUnsupported
+C/macro/-/kOSKextReturnValidation
+C/macro/-/kOSMetaClassDuplicateClass
+C/macro/-/kOSMetaClassHasInstances
+C/macro/-/kOSMetaClassInstNoSuper
+C/macro/-/kOSMetaClassInternal
+C/macro/-/kOSMetaClassNoDicts
+C/macro/-/kOSMetaClassNoInit
+C/macro/-/kOSMetaClassNoInsKModSet
+C/macro/-/kOSMetaClassNoKext
+C/macro/-/kOSMetaClassNoKModSet
+C/macro/-/kOSMetaClassNoSuper
+C/macro/-/kOSMetaClassNoTempData
+C/macro/-/kOSReturnError
+C/macro/-/kOSReturnSuccess
+C/econst/-/kOwnerID2Name
+C/econst/-/kOwnerName2ID
+C/econst/-/kownerPrivileges
+C/econst/-/kPanningMode_SoundField
+C/econst/-/kPanningMode_VectorBasedPanning
+C/econst/-/kParameterEvent_Immediate
+C/econst/-/kParameterEvent_Ramped
+C/econst/-/kPassword
+C/econst/-/kPasteboardClientIsOwner
+C/macro/-/kPasteboardClipboard
+C/macro/-/kPasteboardFind
+C/econst/-/kPasteboardFlavorNoFlags
+C/econst/-/kPasteboardFlavorNotSaved
+C/econst/-/kPasteboardFlavorPromised
+C/econst/-/kPasteboardFlavorRequestOnly
+C/econst/-/kPasteboardFlavorSenderOnly
+C/econst/-/kPasteboardFlavorSenderTranslated
+C/econst/-/kPasteboardFlavorSystemTranslated
+C/econst/-/kPasteboardModified
+C/macro/-/kPasteboardPromisedData
+C/macro/-/kPasteboardResolveAllPromises
+C/macro/-/kPasteboardUniqueName
+C/econst/-/kPCSToDevice
+C/econst/-/kPCSToPCS
+C/econst/-/kPDFActionNamedFind
+C/econst/-/kPDFActionNamedFirstPage
+C/econst/-/kPDFActionNamedGoBack
+C/econst/-/kPDFActionNamedGoForward
+C/econst/-/kPDFActionNamedGoToPage
+C/econst/-/kPDFActionNamedLastPage
+C/econst/-/kPDFActionNamedNextPage
+C/econst/-/kPDFActionNamedNone
+C/econst/-/kPDFActionNamedPreviousPage
+C/econst/-/kPDFActionNamedPrint
+C/econst/-/kPDFActionNamedZoomIn
+C/econst/-/kPDFActionNamedZoomOut
+C/econst/-/kPDFAnnotationArea
+C/econst/-/kPDFBorderStyleBeveled
+C/econst/-/kPDFBorderStyleDashed
+C/econst/-/kPDFBorderStyleInset
+C/econst/-/kPDFBorderStyleSolid
+C/econst/-/kPDFBorderStyleUnderline
+C/econst/-/kPDFControlArea
+C/macro/-/kPDFDestinationUnspecifiedValue
+C/econst/-/kPDFDisplayBoxArtBox
+C/econst/-/kPDFDisplayBoxBleedBox
+C/econst/-/kPDFDisplayBoxCropBox
+C/econst/-/kPDFDisplayBoxMediaBox
+C/econst/-/kPDFDisplayBoxTrimBox
+C/econst/-/kPDFDisplaySinglePage
+C/econst/-/kPDFDisplaySinglePageContinuous
+C/econst/-/kPDFDisplayTwoUp
+C/econst/-/kPDFDisplayTwoUpContinuous
+C/econst/-/kPDFIconArea
+C/econst/-/kPDFLineStyleCircle
+C/econst/-/kPDFLineStyleClosedArrow
+C/econst/-/kPDFLineStyleDiamond
+C/econst/-/kPDFLineStyleNone
+C/econst/-/kPDFLineStyleOpenArrow
+C/econst/-/kPDFLineStyleSquare
+C/econst/-/kPDFLinkArea
+C/econst/-/kPDFMarkupTypeHighlight
+C/econst/-/kPDFMarkupTypeStrikeOut
+C/econst/-/kPDFMarkupTypeUnderline
+C/econst/-/kPDFNoArea
+C/econst/-/kPDFPageArea
+C/econst/-/kPDFPopupArea
+C/econst/-/kPDFPrintPageScaleDownToFit
+C/econst/-/kPDFPrintPageScaleNone
+C/econst/-/kPDFPrintPageScaleToFit
+C/econst/-/kPDFTextAnnotationIconComment
+C/econst/-/kPDFTextAnnotationIconHelp
+C/econst/-/kPDFTextAnnotationIconInsert
+C/econst/-/kPDFTextAnnotationIconKey
+C/econst/-/kPDFTextAnnotationIconNewParagraph
+C/econst/-/kPDFTextAnnotationIconNote
+C/econst/-/kPDFTextAnnotationIconParagraph
+C/econst/-/kPDFTextArea
+C/econst/-/kPDFTextFieldArea
+C/econst/-/kPDFWidgetCheckBoxControl
+C/econst/-/kPDFWidgetPushButtonControl
+C/econst/-/kPDFWidgetRadioButtonControl
+C/econst/-/kPDFWidgetUnknownControl
+C/macro/-/kPDFWorkflowDisplayNameKey
+C/macro/-/kPDFWorkflowFolderURLKey
+C/macro/-/kPDFWorkflowItemsKey
+C/macro/-/kPDFWorkFlowItemURLKey
+C/econst/-/kPM8BitCommKey
+C/econst/-/kPM8BitCommStr
+C/econst/-/kPMAdjustedPageRectKey
+C/econst/-/kPMAdjustedPageRectStr
+C/econst/-/kPMAdjustedPaperRectKey
+C/econst/-/kPMAdjustedPaperRectStr
+C/econst/-/kPMApplicationNameKey
+C/econst/-/kPMApplicationNameStr
+C/econst/-/kPMBandingRequestedKey
+C/econst/-/kPMBandingRequestedStr
+C/econst/-/kPMBlackAndWhite
+C/econst/-/kPMBorderKey
+C/econst/-/kPMBorderStr
+C/econst/-/kPMBorderTypeKey
+C/econst/-/kPMBorderTypeStr
+C/econst/-/kPMCancel
+C/econst/-/kPMColor
+C/econst/-/kPMColorDeviceIDKey
+C/econst/-/kPMColorDeviceIDStr
+C/econst/-/kPMColorModeDuotone
+C/econst/-/kPMColorModeKey
+C/econst/-/kPMColorModeSpecialColor
+C/econst/-/kPMColorModeStr
+C/econst/-/kPMColorSyncProfileIDKey
+C/econst/-/kPMColorSyncProfileIDStr
+C/econst/-/kPMColorSyncProfilesKey
+C/econst/-/kPMColorSyncProfilesStr
+C/econst/-/kPMColorSyncSystemProfilePathKey
+C/econst/-/kPMColorSyncSystemProfilePathStr
+C/econst/-/kPMCompiledPPDKey
+C/econst/-/kPMCompiledPPDStr
+C/econst/-/kPMConstraintList
+C/econst/-/kPMConstraintPrivate
+C/econst/-/kPMConstraintRange
+C/econst/-/kPMConstraintUndefined
+C/econst/-/kPMConverterResHorizontalKey
+C/econst/-/kPMConverterResHorizontalStr
+C/econst/-/kPMConverterResVerticalKey
+C/econst/-/kPMConverterResVerticalStr
+C/econst/-/kPMConverterSetupPrelude
+C/econst/-/kPMConverterSetupTicket
+C/econst/-/kPMConverterSetupTicketType
+C/econst/-/kPMCopiesKey
+C/econst/-/kPMCopiesStr
+C/econst/-/kPMCopyCollateDefault
+C/econst/-/kPMCopyCollateKey
+C/econst/-/kPMCopyCollateStr
+C/econst/-/kPMCurrentValue
+C/econst/-/kPMCVColorSyncProfileIDKey
+C/econst/-/kPMDataFormatXMLCompressed
+C/econst/-/kPMDataFormatXMLDefault
+C/econst/-/kPMDataFormatXMLMinimal
+C/econst/-/kPMDefaultResolution
+C/econst/-/kPMDefaultValue
+C/econst/-/kPMDeleteSubTicketFailed
+C/econst/-/kPMDepthSwitchingEnabledKey
+C/econst/-/kPMDepthSwitchingEnabledStr
+C/econst/-/kPMDescriptionFileKey
+C/econst/-/kPMDescriptionFileStr
+C/econst/-/kPMDestinationFax
+C/econst/-/kPMDestinationFile
+C/econst/-/kPMDestinationInvalid
+C/econst/-/kPMDestinationPreview
+C/econst/-/kPMDestinationPrinter
+C/econst/-/kPMDestinationProcessPDF
+C/econst/-/kPMDestinationTicket
+C/econst/-/kPMDestinationTicketType
+C/econst/-/kPMDestinationTypeKey
+C/econst/-/kPMDestinationTypeStr
+C/econst/-/kPMDocumentFormatDefault
+C/econst/-/kPMDocumentFormatPDF
+C/econst/-/kPMDocumentFormatPICT
+C/econst/-/kPMDocumentFormatPICTPS
+C/econst/-/kPMDocumentFormatPostScript
+C/econst/-/kPMDocumentTicket
+C/econst/-/kPMDocumentTicketPrelude
+C/econst/-/kPMDocumentTicketType
+C/econst/-/kPMDoesCopiesKey
+C/econst/-/kPMDoesCopiesStr
+C/econst/-/kPMDoesCopyCollateKey
+C/econst/-/kPMDoesCopyCollateStr
+C/econst/-/kPMDoesReverseOrderKey
+C/econst/-/kPMDoesReverseOrderStr
+C/econst/-/kPMDontFetchItem
+C/econst/-/kPMDontWantBoolean
+C/econst/-/kPMDontWantData
+C/econst/-/kPMDontWantSize
+C/econst/-/kPMDrawingResHorizontalKey
+C/econst/-/kPMDrawingResHorizontalStr
+C/econst/-/kPMDrawingResVerticalKey
+C/econst/-/kPMDrawingResVerticalStr
+C/econst/-/kPMDriverCreatorKey
+C/econst/-/kPMDriverCreatorStr
+C/econst/-/kPMDuplexDefault
+C/econst/-/kPMDuplexingKey
+C/econst/-/kPMDuplexingStr
+C/econst/-/kPMDuplexNone
+C/econst/-/kPMDuplexNoTumble
+C/econst/-/kPMDuplexTumble
+C/econst/-/kPMFirstPageKey
+C/econst/-/kPMFirstPageStr
+C/econst/-/kPMFormattingPrinterKey
+C/econst/-/kPMFormattingPrinterStr
+C/econst/-/kPMGeneralError
+C/econst/-/kPMGraphicsContextCoreGraphics
+C/econst/-/kPMGraphicsContextDefault
+C/econst/-/kPMGraphicsContextQuickdraw
+C/econst/-/kPMGray
+C/econst/-/kPMInputFileTypeListKey
+C/econst/-/kPMInputFileTypeListStr
+C/econst/-/kPMInstallableOptionKey
+C/econst/-/kPMInstallableOptionStr
+C/econst/-/kPMInvalidAllocator
+C/econst/-/kPMInvalidCalibrationTarget
+C/econst/-/kPMInvalidConnection
+C/econst/-/kPMInvalidFileType
+C/econst/-/kPMInvalidIndex
+C/econst/-/kPMInvalidItem
+C/econst/-/kPMInvalidJobTemplate
+C/econst/-/kPMInvalidKey
+C/econst/-/kPMInvalidObject
+C/econst/-/kPMInvalidPageFormat
+C/econst/-/kPMInvalidPaper
+C/econst/-/kPMInvalidPreset
+C/econst/-/kPMInvalidPrinter
+C/econst/-/kPMInvalidPrinterInfo
+C/econst/-/kPMInvalidPrintSession
+C/econst/-/kPMInvalidPrintSettings
+C/econst/-/kPMInvalidReply
+C/econst/-/kPMInvalidSubTicket
+C/econst/-/kPMInvalidTicket
+C/econst/-/kPMInvalidType
+C/econst/-/kPMInvalidValue
+C/econst/-/kPMIsBinaryOKKey
+C/econst/-/kPMIsBinaryOKStr
+C/econst/-/kPMItemBooleanType
+C/econst/-/kPMItemCStringType
+C/econst/-/kPMItemCStrListType
+C/econst/-/kPMItemInvalidType
+C/econst/-/kPMItemIsLocked
+C/econst/-/kPMItemPMRectListType
+C/econst/-/kPMItemPMRectType
+C/econst/-/kPMItemSInt32ListType
+C/econst/-/kPMItemSInt32Type
+C/econst/-/kPMJobHoldUntilTimeKey
+C/econst/-/kPMJobHoldUntilTimeStr
+C/econst/-/kPMJobNameKey
+C/econst/-/kPMJobNameStr
+C/econst/-/kPMJobOwnerKey
+C/econst/-/kPMJobOwnerStr
+C/econst/-/kPMJobPriorityKey
+C/econst/-/kPMJobPriorityStr
+C/econst/-/kPMJobStateKey
+C/econst/-/kPMJobStateStr
+C/econst/-/kPMJobTemplateKey
+C/econst/-/kPMJobTemplateStr
+C/econst/-/kPMJobTicket
+C/econst/-/kPMJobTicketPrelude
+C/econst/-/kPMJobTicketType
+C/econst/-/kPMKeyNotFound
+C/econst/-/kPMKeyNotUnique
+C/econst/-/kPMLandscape
+C/econst/-/kPMLastPageKey
+C/econst/-/kPMLastPageStr
+C/econst/-/kPMLayoutColumnsKey
+C/econst/-/kPMLayoutColumnsStr
+C/econst/-/kPMLayoutDirectionKey
+C/econst/-/kPMLayoutDirectionStr
+C/econst/-/kPMLayoutNUpKey
+C/econst/-/kPMLayoutNUpStr
+C/econst/-/kPMLayoutRowsKey
+C/econst/-/kPMLayoutRowsStr
+C/econst/-/kPMLayoutTileOrientationKey
+C/econst/-/kPMLayoutTileOrientationStr
+C/econst/-/kPMLocked
+C/econst/-/kPMLockIgnored
+C/econst/-/kPMMakeAndModelNameKey
+C/econst/-/kPMMakeAndModelNameStr
+C/econst/-/kPMMatchPaperKey
+C/econst/-/kPMMatchPaperStr
+C/econst/-/kPMMaximumValue
+C/econst/-/kPMMaxRange
+C/econst/-/kPMMaxSquareResolution
+C/econst/-/kPMMinimumValue
+C/econst/-/kPMMinRange
+C/econst/-/kPMMinSquareResolution
+C/econst/-/kPMModuleInfoTicket
+C/econst/-/kPMModuleInfoTicketType
+C/econst/-/kPMNoData
+C/econst/-/kPMNoDefaultPrinter
+C/econst/-/kPMNoPageFormat
+C/econst/-/kPMNoPrintSettings
+C/econst/-/kPMNoReference
+C/econst/-/kPMNoSuchEntry
+C/econst/-/kPMNotImplemented
+C/econst/-/kPMObjectInUse
+C/econst/-/kPMOutOfScope
+C/econst/-/kPMOutputFilenameKey
+C/econst/-/kPMOutputFilenameStr
+C/econst/-/kPMOutputTypeKey
+C/econst/-/kPMOutputTypeListKey
+C/econst/-/kPMOutputTypeListStr
+C/econst/-/kPMOutputTypeStr
+C/econst/-/kPMPageBackupRecordDataKey
+C/econst/-/kPMPageBackupRecordDataStr
+C/econst/-/kPMPageBackupRecordHdlKey
+C/econst/-/kPMPageBackupRecordHdlStr
+C/econst/-/kPMPageCustomDialogHdlKey
+C/econst/-/kPMPageCustomDialogHdlStr
+C/econst/-/kPMPageFormatPrelude
+C/econst/-/kPMPageFormatTicket
+C/econst/-/kPMPageFormatTicketType
+C/econst/-/kPMPageOrientationKey
+C/econst/-/kPMPageOrientationStr
+C/econst/-/kPMPageRangeKey
+C/econst/-/kPMPageRangeStr
+C/econst/-/kPMPageScalingHorizontalStr
+C/econst/-/kPMPageScalingVerticalKey
+C/econst/-/kPMPageScalingVerticalStr
+C/econst/-/kPMPageTicket
+C/econst/-/kPMPageTicketPrelude
+C/econst/-/kPMPageTicketType
+C/econst/-/kPMPaperInfoList
+C/econst/-/kPMPaperInfoListStr
+C/econst/-/kPMPaperInfoPrelude
+C/econst/-/kPMPaperInfoTicket
+C/econst/-/kPMPaperInfoTicketType
+C/econst/-/kPMPaperNameKey
+C/econst/-/kPMPaperNameStr
+C/econst/-/kPMPaperSourceKey
+C/econst/-/kPMPaperSourceStr
+C/econst/-/kPMPaperTypeKey
+C/econst/-/kPMPaperTypeStr
+C/econst/-/kPMPhaseAppDrawing
+C/econst/-/kPMPhaseConverting
+C/econst/-/kPMPhaseDialogsUp
+C/econst/-/kPMPhaseKey
+C/econst/-/kPMPhasePostAppDrawing
+C/econst/-/kPMPhasePostConversion
+C/econst/-/kPMPhasePostDialogs
+C/econst/-/kPMPhasePreAppDrawing
+C/econst/-/kPMPhasePreConversion
+C/econst/-/kPMPhasePreDialog
+C/econst/-/kPMPhasePrinting
+C/econst/-/kPMPhaseStr
+C/econst/-/kPMPhaseUnknown
+C/econst/-/kPMPortrait
+C/macro/-/kPMPPDDescriptionType
+C/econst/-/kPMPPDDictKey
+C/econst/-/kPMPPDDictStr
+C/econst/-/kPMPreviewKey
+C/econst/-/kPMPreviewStr
+C/econst/-/kPMPrimaryPaperFeedKey
+C/econst/-/kPMPrimaryPaperFeedStr
+C/econst/-/kPMPrintAllPages
+C/econst/-/kPMPrintBackupRecordDataKey
+C/econst/-/kPMPrintBackupRecordDataStr
+C/econst/-/kPMPrintBackupRecordHdlKey
+C/econst/-/kPMPrintBackupRecordHdlStr
+C/econst/-/kPMPrintCustomDialogHdlKey
+C/econst/-/kPMPrintCustomDialogHdlStr
+C/econst/-/kPMPrinterAddressKey
+C/econst/-/kPMPrinterAddressStr
+C/econst/-/kPMPrinterFontKey
+C/econst/-/kPMPrinterFontStr
+C/econst/-/kPMPrinterIdle
+C/econst/-/kPMPrinterInfoPrelude
+C/econst/-/kPMPrinterInfoTicket
+C/econst/-/kPMPrinterInfoTicketType
+C/econst/-/kPMPrinterIsPostScriptDriverKey
+C/econst/-/kPMPrinterIsPostScriptDriverStr
+C/econst/-/kPMPrinterLongNameKey
+C/econst/-/kPMPrinterLongNameStr
+C/econst/-/kPMPrinterMaxResKey
+C/econst/-/kPMPrinterMaxResStr
+C/econst/-/kPMPrinterMinResKey
+C/econst/-/kPMPrinterMinResStr
+C/econst/-/kPMPrinterModuleFormatKey
+C/econst/-/kPMPrinterModuleFormatStr
+C/econst/-/kPMPrinterProcessing
+C/econst/-/kPMPrinterShortNameKey
+C/econst/-/kPMPrinterShortNameStr
+C/econst/-/kPMPrinterStopped
+C/econst/-/kPMPrinterSuggestedResKey
+C/econst/-/kPMPrinterSuggestedResStr
+C/econst/-/kPMPrintOrientationKey
+C/econst/-/kPMPrintOrientationStr
+C/econst/-/kPMPrintScalingAlignmentKey
+C/econst/-/kPMPrintScalingAlignmentStr
+C/econst/-/kPMPrintScalingHorizontalKey
+C/econst/-/kPMPrintScalingHorizontalStr
+C/econst/-/kPMPrintScalingVerticalKey
+C/econst/-/kPMPrintScalingVerticalStr
+C/econst/-/kPMPrintSettingsPrelude
+C/econst/-/kPMPrintSettingsTicket
+C/econst/-/kPMPrintSettingsTicketType
+C/econst/-/kPMPSErrorHandlerKey
+C/econst/-/kPMPSErrorHandlerStr
+C/econst/-/kPMPSErrorOnScreenKey
+C/econst/-/kPMPSErrorOnScreenStr
+C/econst/-/kPMPSTargetLanguageLevel1
+C/econst/-/kPMPSTargetLanguageLevel1and2
+C/econst/-/kPMPSTargetLanguageLevel2
+C/econst/-/kPMPSTargetLanguageLevel2and3
+C/econst/-/kPMPSTargetLanguageLevel3
+C/econst/-/kPMPSTargetLanguageLevelDefault
+C/econst/-/kPMPSTargetLanguageLevelUnknown
+C/econst/-/kPMPSTraySwitchKey
+C/econst/-/kPMPSTraySwitchStr
+C/econst/-/kPMPSTTRasterizerAccept68K
+C/econst/-/kPMPSTTRasterizerNone
+C/econst/-/kPMPSTTRasterizerType42
+C/econst/-/kPMPSTTRasterizerUnknown
+C/econst/-/kPMQualityBest
+C/econst/-/kPMQualityDraft
+C/econst/-/kPMQualityHighest
+C/econst/-/kPMQualityInkSaver
+C/econst/-/kPMQualityKey
+C/econst/-/kPMQualityLowest
+C/econst/-/kPMQualityNormal
+C/econst/-/kPMQualityPhoto
+C/econst/-/kPMQualityStr
+C/econst/-/kPMRequestedPixelFormatKey
+C/econst/-/kPMRequestedPixelFormatStr
+C/econst/-/kPMRequestedPixelLayoutKey
+C/econst/-/kPMRequestedPixelLayoutStr
+C/econst/-/kPMRequiredBandHeightKey
+C/econst/-/kPMRequiredBandHeightStr
+C/econst/-/kPMReverseLandscape
+C/econst/-/kPMReverseOrderKey
+C/econst/-/kPMReverseOrderStr
+C/econst/-/kPMReversePortrait
+C/econst/-/kPMSecondaryPaperFeedKey
+C/econst/-/kPMSecondaryPaperFeedStr
+C/econst/-/kPMSimplexTumble
+C/econst/-/kPMSourceProfile
+C/econst/-/kPMSpoolFormatKey
+C/econst/-/kPMSpoolFormatStr
+C/econst/-/kPMStringConversionFailure
+C/econst/-/kPMSubTicketNotFound
+C/econst/-/kPMSupportsColorKey
+C/econst/-/kPMSupportsColorStr
+C/econst/-/kPMTemplateIsLocked
+C/econst/-/kPMTemplatePrelude
+C/econst/-/kPMTicketIsLocked
+C/econst/-/kPMTicketList
+C/econst/-/kPMTicketListPrelude
+C/econst/-/kPMTicketListType
+C/econst/-/kPMTicketTypeNotFound
+C/econst/-/kPMTicketTypeUnknown
+C/econst/-/kPMTopLevel
+C/econst/-/kPMTotalMemAvailableKey
+C/econst/-/kPMTotalMemAvailableStr
+C/econst/-/kPMTotalMemInstalledKey
+C/econst/-/kPMTotalMemInstalledStr
+C/econst/-/kPMTransparentCommKey
+C/econst/-/kPMTransparentCommStr
+C/econst/-/kPMUnadjustedPageRectKey
+C/econst/-/kPMUnadjustedPageRectStr
+C/econst/-/kPMUnadjustedPaperRectKey
+C/econst/-/kPMUnadjustedPaperRectStr
+C/econst/-/kPMUnknownDataType
+C/econst/-/kPMUnlocked
+C/econst/-/kPMUpdateTicketFailed
+C/econst/-/kPMUserLanguageKey
+C/econst/-/kPMUserLanguageStr
+C/econst/-/kPMValidateTicketFailed
+C/econst/-/kPMValueArray
+C/econst/-/kPMValueBoolean
+C/econst/-/kPMValueData
+C/econst/-/kPMValueDate
+C/econst/-/kPMValueDict
+C/econst/-/kPMValueDouble
+C/econst/-/kPMValueDoubleRange
+C/econst/-/kPMValueOutOfRange
+C/econst/-/kPMValuePMRect
+C/econst/-/kPMValueSInt32
+C/econst/-/kPMValueSInt32Range
+C/econst/-/kPMValueString
+C/econst/-/kPMValueTicket
+C/econst/-/kPMValueUInt32
+C/econst/-/kPMValueUInt32Range
+C/econst/-/kPMValueUndefined
+C/econst/-/kPMWhiteSkippingEnabledKey
+C/econst/-/kPMWhiteSkippingEnabledStr
+C/econst/-/kPMXMLParseError
+C/econst/-/kPreflightThenPause
+C/econst/-/kProcessTransformToForegroundApplication
+C/econst/-/kPSErrorHandler
+C/econst/-/kPSInjectionAfterSubsection
+C/econst/-/kPSInjectionBeforeSubsection
+C/econst/-/kPSInjectionMaxDictSize
+C/econst/-/kPSInjectionPageKey
+C/econst/-/kPSInjectionPlacementKey
+C/econst/-/kPSInjectionPostScriptKey
+C/econst/-/kPSInjectionReplaceSubsection
+C/econst/-/kPSInjectionSectionKey
+C/econst/-/kPSInjectionSubSectionKey
+C/econst/-/kPSNoErrorHandler
+C/econst/-/kPSPageInjectAllPages
+C/econst/-/kQCPlugInExecutionModeConsumer
+C/econst/-/kQCPlugInExecutionModeProcessor
+C/econst/-/kQCPlugInExecutionModeProvider
+C/econst/-/kQCPlugInTimeModeIdle
+C/econst/-/kQCPlugInTimeModeNone
+C/econst/-/kQCPlugInTimeModeTimeBase
+C/data/-/kQLPreviewContentIDScheme
+C/data/-/kQLPreviewPropertyAttachmentDataKey
+C/data/-/kQLPreviewPropertyAttachmentsKey
+C/data/-/kQLPreviewPropertyDisplayNameKey
+C/data/-/kQLPreviewPropertyHeightKey
+C/data/-/kQLPreviewPropertyMIMETypeKey
+C/data/-/kQLPreviewPropertyStringEncodingKey
+C/data/-/kQLPreviewPropertyTextEncodingNameKey
+C/data/-/kQLPreviewPropertyWidthKey
+C/data/-/kQLThumbnailOptionIconModeKey
+C/data/-/kQLThumbnailOptionScaleFactorKey
+C/econst/-/kQTAlphaMode
+C/econst/-/kQTAlphaModePreMulColor
+C/econst/-/kQTCCIR601VideoGammaLevel
+C/econst/-/kQTEnableExif
+C/econst/-/kQTParseTextHREFText
+C/econst/-/kQTPNGFilterPreference
+C/econst/-/kQTPNGInterlaceStyle
+C/econst/-/kQTTIFFCompression_PackBits
+C/econst/-/kQTTIFFCompressionMethod
+C/econst/-/kQTTIFFExifGPSUserDataPrefix
+C/econst/-/kQTTIFFExifUserDataPrefix
+C/econst/-/kQTTIFFLittleEndian
+C/econst/-/kQTTIFFUserDataGeoAsciiParams
+C/econst/-/kQTTIFFUserDataGeoDoubleParams
+C/econst/-/kQTTIFFUserDataGeoKeyDirectory
+C/econst/-/kQTTIFFUserDataIntergraphMatrix
+C/econst/-/kQTTIFFUserDataModelPixelScale
+C/econst/-/kQTTIFFUserDataModelTiepoint
+C/econst/-/kQTTIFFUserDataModelTransformation
+C/econst/-/kQTTIFFUserDataOrientation
+C/econst/-/kQTTIFFUserDataPrefix
+C/econst/-/kQTTIFFUserDataPrimaryChromaticities
+C/econst/-/kQTTIFFUserDataTransferFunction
+C/econst/-/kQTTIFFUserDataTransferRange
+C/econst/-/kQTTIFFUserDataWhitePoint
+C/econst/-/kQTTIFFUserDataYCbCrPositioning
+C/func/-/kqueue
+C/econst/-/kRandNumUAMStr
+C/econst/-/kReadOnly
+C/econst/-/kRecon1Login
+C/econst/-/kRecon1ReconnectLogin
+C/econst/-/kRecon1RefreshToken
+C/econst/-/kReconnectUAMStr
+C/econst/-/kReconnWithID
+C/econst/-/kReconnWithTimeAndID
+C/econst/-/kRenderQuality_High
+C/econst/-/kRenderQuality_Low
+C/econst/-/kRenderQuality_Max
+C/econst/-/kRenderQuality_Medium
+C/econst/-/kRenderQuality_Min
+C/macro/-/kREPORT_CAPACITY_16_MaximumLBA
+C/macro/-/kREPORT_CAPACITY_MaximumLBA
+C/macro/-/kREPORT_LUNS_HeaderSize
+C/econst/-/kResFileNotOpened
+C/econst/-/kResolveAliasFileNoUI
+C/econst/-/kResolveAliasTryFileIDFirst
+C/econst/-/kReturnNextGroup
+C/econst/-/kReturnNextUG
+C/econst/-/kReturnNextUser
+C/econst/-/kRotate0DegreesClockwise
+C/econst/-/kRotate0DegreesCounterClockwise
+C/econst/-/kRotate180DegreesClockwise
+C/econst/-/kRotate180DegreesCounterClockwise
+C/econst/-/kRotate270DegreesClockwise
+C/econst/-/kRotate270DegreesCounterClockwise
+C/econst/-/kRotate90DegreesClockwise
+C/econst/-/kRotate90DegreesCounterClockwise
+C/econst/-/kRPGroup
+C/econst/-/kRPOther
+C/econst/-/kRPOwner
+C/econst/-/kRPUser
+C/econst/-/kRsrcChainAboveAllMaps
+C/econst/-/kRsrcChainAboveApplicationMap
+C/econst/-/kRsrcChainBelowApplicationMap
+C/econst/-/kRsrcChainBelowSystemMap
+C/data/-/kSCBondStatusDeviceAggregationStatus
+C/data/-/kSCBondStatusDeviceCollecting
+C/data/-/kSCBondStatusDeviceDistributing
+C/econst/-/kSCBondStatusLinkInvalid
+C/econst/-/kSCBondStatusNoPartner
+C/econst/-/kSCBondStatusNotInActiveGroup
+C/econst/-/kSCBondStatusOK
+C/econst/-/kSCBondStatusUnknown
+C/data/-/kSCCompGlobal
+C/data/-/kSCCompHostNames
+C/data/-/kSCCompInterface
+C/data/-/kSCCompNetwork
+C/data/-/kSCCompService
+C/data/-/kSCCompSystem
+C/data/-/kSCCompUsers
+C/data/-/kSCDynamicStoreDomainFile
+C/data/-/kSCDynamicStoreDomainPlugin
+C/data/-/kSCDynamicStoreDomainPrefs
+C/data/-/kSCDynamicStoreDomainSetup
+C/data/-/kSCDynamicStoreDomainState
+C/data/-/kSCDynamicStorePropNetInterfaces
+C/data/-/kSCDynamicStorePropNetPrimaryInterface
+C/data/-/kSCDynamicStorePropNetPrimaryService
+C/data/-/kSCDynamicStorePropNetServiceIDs
+C/data/-/kSCDynamicStorePropSetupCurrentSet
+C/data/-/kSCDynamicStorePropSetupLastUpdated
+C/data/-/kSCDynamicStoreUseSessionKeys
+C/data/-/kSCEntNet6to4
+C/data/-/kSCEntNetAirPort
+C/data/-/kSCEntNetAppleTalk
+C/data/-/kSCEntNetDHCP
+C/data/-/kSCEntNetDNS
+C/data/-/kSCEntNetEthernet
+C/data/-/kSCEntNetFireWire
+C/data/-/kSCEntNetInterface
+C/data/-/kSCEntNetIPSec
+C/data/-/kSCEntNetIPv4
+C/data/-/kSCEntNetIPv6
+C/data/-/kSCEntNetL2TP
+C/data/-/kSCEntNetLink
+C/data/-/kSCEntNetModem
+C/data/-/kSCEntNetPPP
+C/data/-/kSCEntNetPPPoE
+C/data/-/kSCEntNetPPPSerial
+C/data/-/kSCEntNetPPTP
+C/data/-/kSCEntNetProxies
+C/data/-/kSCEntNetSMB
+C/data/-/kSCEntUsersConsoleUser
+C/macro/-/kSCNetworkConnectionBytesIn
+C/macro/-/kSCNetworkConnectionBytesOut
+C/econst/-/kSCNetworkConnectionConnected
+C/econst/-/kSCNetworkConnectionConnecting
+C/econst/-/kSCNetworkConnectionDisconnected
+C/econst/-/kSCNetworkConnectionDisconnecting
+C/macro/-/kSCNetworkConnectionErrorsIn
+C/macro/-/kSCNetworkConnectionErrorsOut
+C/econst/-/kSCNetworkConnectionInvalid
+C/macro/-/kSCNetworkConnectionPacketsIn
+C/macro/-/kSCNetworkConnectionPacketsOut
+C/econst/-/kSCNetworkConnectionPPPAuthenticating
+C/econst/-/kSCNetworkConnectionPPPConnected
+C/econst/-/kSCNetworkConnectionPPPConnectingLink
+C/econst/-/kSCNetworkConnectionPPPDialOnTraffic
+C/econst/-/kSCNetworkConnectionPPPDisconnected
+C/econst/-/kSCNetworkConnectionPPPDisconnectingLink
+C/econst/-/kSCNetworkConnectionPPPHoldingLinkOff
+C/econst/-/kSCNetworkConnectionPPPInitializing
+C/econst/-/kSCNetworkConnectionPPPNegotiatingLink
+C/econst/-/kSCNetworkConnectionPPPNegotiatingNetwork
+C/econst/-/kSCNetworkConnectionPPPSuspended
+C/econst/-/kSCNetworkConnectionPPPTerminating
+C/econst/-/kSCNetworkConnectionPPPWaitingForCallBack
+C/econst/-/kSCNetworkConnectionPPPWaitingForRedial
+C/macro/-/kSCNetworkConnectionSelectionOptionOnDemandHostName
+C/macro/-/kSCNetworkConnectionSelectionOptionOnDemandRetry
+C/econst/-/kSCNetworkFlagsConnectionAutomatic
+C/econst/-/kSCNetworkFlagsConnectionRequired
+C/econst/-/kSCNetworkFlagsInterventionRequired
+C/econst/-/kSCNetworkFlagsIsDirect
+C/econst/-/kSCNetworkFlagsIsLocalAddress
+C/econst/-/kSCNetworkFlagsReachable
+C/econst/-/kSCNetworkFlagsTransientConnection
+C/data/-/kSCNetworkInterfaceIPv4
+C/data/-/kSCNetworkInterfaceType6to4
+C/data/-/kSCNetworkInterfaceTypeBluetooth
+C/data/-/kSCNetworkInterfaceTypeBond
+C/data/-/kSCNetworkInterfaceTypeEthernet
+C/data/-/kSCNetworkInterfaceTypeFireWire
+C/data/-/kSCNetworkInterfaceTypeIEEE80211
+C/data/-/kSCNetworkInterfaceTypeIPSec
+C/data/-/kSCNetworkInterfaceTypeIPv4
+C/data/-/kSCNetworkInterfaceTypeIrDA
+C/data/-/kSCNetworkInterfaceTypeL2TP
+C/data/-/kSCNetworkInterfaceTypeModem
+C/data/-/kSCNetworkInterfaceTypePPP
+C/data/-/kSCNetworkInterfaceTypePPTP
+C/data/-/kSCNetworkInterfaceTypeSerial
+C/data/-/kSCNetworkInterfaceTypeVLAN
+C/data/-/kSCNetworkInterfaceTypeWWAN
+C/data/-/kSCNetworkProtocolTypeAppleTalk
+C/data/-/kSCNetworkProtocolTypeDNS
+C/data/-/kSCNetworkProtocolTypeIPv4
+C/data/-/kSCNetworkProtocolTypeIPv6
+C/data/-/kSCNetworkProtocolTypeProxies
+C/data/-/kSCNetworkProtocolTypeSMB
+C/econst/-/kSCNetworkReachabilityFlagsConnectionOnDemand
+C/econst/-/kSCNetworkReachabilityFlagsConnectionOnTraffic
+C/econst/-/kSCNetworkReachabilityFlagsConnectionRequired
+C/econst/-/kSCNetworkReachabilityFlagsInterventionRequired
+C/econst/-/kSCNetworkReachabilityFlagsIsDirect
+C/econst/-/kSCNetworkReachabilityFlagsIsLocalAddress
+C/econst/-/kSCNetworkReachabilityFlagsReachable
+C/econst/-/kSCNetworkReachabilityFlagsTransientConnection
+C/data/-/kSCPrefCurrentSet
+C/econst/-/kSCPreferencesNotificationApply
+C/econst/-/kSCPreferencesNotificationCommit
+C/data/-/kSCPrefNetworkServices
+C/data/-/kSCPrefSets
+C/data/-/kSCPrefSystem
+C/data/-/kSCPropInterfaceName
+C/data/-/kSCPropMACAddress
+C/data/-/kSCPropNet6to4Relay
+C/data/-/kSCPropNetAirPortAllowNetCreation
+C/data/-/kSCPropNetAirPortAuthPassword
+C/data/-/kSCPropNetAirPortAuthPasswordEncryption
+C/data/-/kSCPropNetAirPortJoinMode
+C/data/-/kSCPropNetAirPortPowerEnabled
+C/data/-/kSCPropNetAirPortPreferredNetwork
+C/data/-/kSCPropNetAirPortSavePasswords
+C/data/-/kSCPropNetAppleTalkComputerName
+C/data/-/kSCPropNetAppleTalkComputerNameEncoding
+C/data/-/kSCPropNetAppleTalkConfigMethod
+C/data/-/kSCPropNetAppleTalkDefaultZone
+C/data/-/kSCPropNetAppleTalkNetworkID
+C/data/-/kSCPropNetAppleTalkNetworkRange
+C/data/-/kSCPropNetAppleTalkNodeID
+C/data/-/kSCPropNetAppleTalkSeedNetworkRange
+C/data/-/kSCPropNetAppleTalkSeedZones
+C/data/-/kSCPropNetDNSDomainName
+C/data/-/kSCPropNetDNSOptions
+C/data/-/kSCPropNetDNSSearchDomains
+C/data/-/kSCPropNetDNSSearchOrder
+C/data/-/kSCPropNetDNSServerAddresses
+C/data/-/kSCPropNetDNSServerPort
+C/data/-/kSCPropNetDNSServerTimeout
+C/data/-/kSCPropNetDNSSortList
+C/data/-/kSCPropNetDNSSupplementalMatchDomains
+C/data/-/kSCPropNetDNSSupplementalMatchOrders
+C/data/-/kSCPropNetEthernetMediaOptions
+C/data/-/kSCPropNetEthernetMediaSubType
+C/data/-/kSCPropNetEthernetMTU
+C/data/-/kSCPropNetInterfaceDeviceName
+C/data/-/kSCPropNetInterfaceHardware
+C/data/-/kSCPropNetInterfaces
+C/data/-/kSCPropNetInterfaceSubType
+C/data/-/kSCPropNetInterfaceSupportsModemOnHold
+C/data/-/kSCPropNetInterfaceType
+C/data/-/kSCPropNetIPSecAuthenticationMethod
+C/data/-/kSCPropNetIPSecLocalCertificate
+C/data/-/kSCPropNetIPSecLocalIdentifier
+C/data/-/kSCPropNetIPSecLocalIdentifierType
+C/data/-/kSCPropNetIPSecSharedSecret
+C/data/-/kSCPropNetIPSecSharedSecretEncryption
+C/data/-/kSCPropNetIPv4Addresses
+C/data/-/kSCPropNetIPv4BroadcastAddresses
+C/data/-/kSCPropNetIPv4ConfigMethod
+C/data/-/kSCPropNetIPv4DestAddresses
+C/data/-/kSCPropNetIPv4DHCPClientID
+C/data/-/kSCPropNetIPv4Router
+C/data/-/kSCPropNetIPv4SubnetMasks
+C/data/-/kSCPropNetIPv6Addresses
+C/data/-/kSCPropNetIPv6ConfigMethod
+C/data/-/kSCPropNetIPv6DestAddresses
+C/data/-/kSCPropNetIPv6Flags
+C/data/-/kSCPropNetIPv6PrefixLength
+C/data/-/kSCPropNetIPv6Router
+C/data/-/kSCPropNetL2TPIPSecSharedSecret
+C/data/-/kSCPropNetL2TPIPSecSharedSecretEncryption
+C/data/-/kSCPropNetL2TPTransport
+C/data/-/kSCPropNetLinkActive
+C/data/-/kSCPropNetLinkDetaching
+C/data/-/kSCPropNetLocalHostName
+C/data/-/kSCPropNetModemAccessPointName
+C/data/-/kSCPropNetModemConnectionPersonality
+C/data/-/kSCPropNetModemConnectionScript
+C/data/-/kSCPropNetModemConnectSpeed
+C/data/-/kSCPropNetModemDataCompression
+C/data/-/kSCPropNetModemDeviceContextID
+C/data/-/kSCPropNetModemDeviceModel
+C/data/-/kSCPropNetModemDeviceVendor
+C/data/-/kSCPropNetModemDialMode
+C/data/-/kSCPropNetModemErrorCorrection
+C/data/-/kSCPropNetModemHoldCallWaitingAudibleAlert
+C/data/-/kSCPropNetModemHoldDisconnectOnAnswer
+C/data/-/kSCPropNetModemHoldEnabled
+C/data/-/kSCPropNetModemHoldReminder
+C/data/-/kSCPropNetModemHoldReminderTime
+C/data/-/kSCPropNetModemNote
+C/data/-/kSCPropNetModemPulseDial
+C/data/-/kSCPropNetModemSpeaker
+C/data/-/kSCPropNetModemSpeed
+C/data/-/kSCPropNetOverridePrimary
+C/data/-/kSCPropNetPPPACSPEnabled
+C/data/-/kSCPropNetPPPAuthEAPPlugins
+C/data/-/kSCPropNetPPPAuthName
+C/data/-/kSCPropNetPPPAuthPassword
+C/data/-/kSCPropNetPPPAuthPasswordEncryption
+C/data/-/kSCPropNetPPPAuthPrompt
+C/data/-/kSCPropNetPPPAuthProtocol
+C/data/-/kSCPropNetPPPCCPEnabled
+C/data/-/kSCPropNetPPPCCPMPPE128Enabled
+C/data/-/kSCPropNetPPPCCPMPPE40Enabled
+C/data/-/kSCPropNetPPPCommAlternateRemoteAddress
+C/data/-/kSCPropNetPPPCommConnectDelay
+C/data/-/kSCPropNetPPPCommDisplayTerminalWindow
+C/data/-/kSCPropNetPPPCommRedialCount
+C/data/-/kSCPropNetPPPCommRedialEnabled
+C/data/-/kSCPropNetPPPCommRedialInterval
+C/data/-/kSCPropNetPPPCommRemoteAddress
+C/data/-/kSCPropNetPPPCommTerminalScript
+C/data/-/kSCPropNetPPPCommUseTerminalScript
+C/data/-/kSCPropNetPPPConnectTime
+C/data/-/kSCPropNetPPPDeviceLastCause
+C/data/-/kSCPropNetPPPDialOnDemand
+C/data/-/kSCPropNetPPPDisconnectOnFastUserSwitch
+C/data/-/kSCPropNetPPPDisconnectOnIdle
+C/data/-/kSCPropNetPPPDisconnectOnIdleTimer
+C/data/-/kSCPropNetPPPDisconnectOnLogout
+C/data/-/kSCPropNetPPPDisconnectOnSleep
+C/data/-/kSCPropNetPPPDisconnectTime
+C/data/-/kSCPropNetPPPIdleReminder
+C/data/-/kSCPropNetPPPIdleReminderTimer
+C/data/-/kSCPropNetPPPIPCPCompressionVJ
+C/data/-/kSCPropNetPPPIPCPUsePeerDNS
+C/data/-/kSCPropNetPPPLastCause
+C/data/-/kSCPropNetPPPLCPCompressionACField
+C/data/-/kSCPropNetPPPLCPCompressionPField
+C/data/-/kSCPropNetPPPLCPEchoEnabled
+C/data/-/kSCPropNetPPPLCPEchoFailure
+C/data/-/kSCPropNetPPPLCPEchoInterval
+C/data/-/kSCPropNetPPPLCPMRU
+C/data/-/kSCPropNetPPPLCPMTU
+C/data/-/kSCPropNetPPPLCPReceiveACCM
+C/data/-/kSCPropNetPPPLCPTransmitACCM
+C/data/-/kSCPropNetPPPLogfile
+C/data/-/kSCPropNetPPPOverridePrimary
+C/data/-/kSCPropNetPPPPlugins
+C/data/-/kSCPropNetPPPRetryConnectTime
+C/data/-/kSCPropNetPPPSessionTimer
+C/data/-/kSCPropNetPPPStatus
+C/data/-/kSCPropNetPPPUseSessionTimer
+C/data/-/kSCPropNetPPPVerboseLogging
+C/data/-/kSCPropNetProxiesExceptionsList
+C/data/-/kSCPropNetProxiesExcludeSimpleHostnames
+C/data/-/kSCPropNetProxiesFTPEnable
+C/data/-/kSCPropNetProxiesFTPPassive
+C/data/-/kSCPropNetProxiesFTPPort
+C/data/-/kSCPropNetProxiesFTPProxy
+C/data/-/kSCPropNetProxiesGopherEnable
+C/data/-/kSCPropNetProxiesGopherPort
+C/data/-/kSCPropNetProxiesGopherProxy
+C/data/-/kSCPropNetProxiesHTTPEnable
+C/data/-/kSCPropNetProxiesHTTPPort
+C/data/-/kSCPropNetProxiesHTTPProxy
+C/data/-/kSCPropNetProxiesHTTPSEnable
+C/data/-/kSCPropNetProxiesHTTPSPort
+C/data/-/kSCPropNetProxiesHTTPSProxy
+C/data/-/kSCPropNetProxiesProxyAutoConfigEnable
+C/data/-/kSCPropNetProxiesProxyAutoConfigURLString
+C/data/-/kSCPropNetProxiesProxyAutoDiscoveryEnable
+C/data/-/kSCPropNetProxiesRTSPEnable
+C/data/-/kSCPropNetProxiesRTSPPort
+C/data/-/kSCPropNetProxiesRTSPProxy
+C/data/-/kSCPropNetProxiesSOCKSEnable
+C/data/-/kSCPropNetProxiesSOCKSPort
+C/data/-/kSCPropNetProxiesSOCKSProxy
+C/data/-/kSCPropNetServiceOrder
+C/data/-/kSCPropNetSMBNetBIOSName
+C/data/-/kSCPropNetSMBNetBIOSNodeType
+C/data/-/kSCPropNetSMBNetBIOSScope
+C/data/-/kSCPropNetSMBWINSAddresses
+C/data/-/kSCPropNetSMBWorkgroup
+C/data/-/kSCPropSystemComputerName
+C/data/-/kSCPropSystemComputerNameEncoding
+C/data/-/kSCPropUserDefinedName
+C/data/-/kSCPropVersion
+C/econst/-/kScreenFloodMethodAlpha
+C/econst/-/kScreenFloodMethodKeyColor
+C/econst/-/kScreenFloodMethodNone
+C/macro/-/kSCSICmdFieldMask10Bit
+C/macro/-/kSCSICmdFieldMask11Bit
+C/macro/-/kSCSICmdFieldMask12Bit
+C/macro/-/kSCSICmdFieldMask13Bit
+C/macro/-/kSCSICmdFieldMask14Bit
+C/macro/-/kSCSICmdFieldMask15Bit
+C/macro/-/kSCSICmdFieldMask17Bit
+C/macro/-/kSCSICmdFieldMask18Bit
+C/macro/-/kSCSICmdFieldMask19Bit
+C/macro/-/kSCSICmdFieldMask1Bit
+C/macro/-/kSCSICmdFieldMask20Bit
+C/macro/-/kSCSICmdFieldMask21Bit
+C/macro/-/kSCSICmdFieldMask22Bit
+C/macro/-/kSCSICmdFieldMask23Bit
+C/macro/-/kSCSICmdFieldMask25Bit
+C/macro/-/kSCSICmdFieldMask26Bit
+C/macro/-/kSCSICmdFieldMask27Bit
+C/macro/-/kSCSICmdFieldMask28Bit
+C/macro/-/kSCSICmdFieldMask29Bit
+C/macro/-/kSCSICmdFieldMask2Bit
+C/macro/-/kSCSICmdFieldMask2Byte
+C/macro/-/kSCSICmdFieldMask30Bit
+C/macro/-/kSCSICmdFieldMask31Bit
+C/macro/-/kSCSICmdFieldMask33Bit
+C/macro/-/kSCSICmdFieldMask34Bit
+C/macro/-/kSCSICmdFieldMask35Bit
+C/macro/-/kSCSICmdFieldMask36Bit
+C/macro/-/kSCSICmdFieldMask37Bit
+C/macro/-/kSCSICmdFieldMask38Bit
+C/macro/-/kSCSICmdFieldMask39Bit
+C/macro/-/kSCSICmdFieldMask3Bit
+C/macro/-/kSCSICmdFieldMask3Byte
+C/macro/-/kSCSICmdFieldMask41Bit
+C/macro/-/kSCSICmdFieldMask42Bit
+C/macro/-/kSCSICmdFieldMask43Bit
+C/macro/-/kSCSICmdFieldMask44Bit
+C/macro/-/kSCSICmdFieldMask45Bit
+C/macro/-/kSCSICmdFieldMask46Bit
+C/macro/-/kSCSICmdFieldMask47Bit
+C/macro/-/kSCSICmdFieldMask49Bit
+C/macro/-/kSCSICmdFieldMask4Bit
+C/macro/-/kSCSICmdFieldMask4Byte
+C/macro/-/kSCSICmdFieldMask50Bit
+C/macro/-/kSCSICmdFieldMask51Bit
+C/macro/-/kSCSICmdFieldMask52Bit
+C/macro/-/kSCSICmdFieldMask53Bit
+C/macro/-/kSCSICmdFieldMask54Bit
+C/macro/-/kSCSICmdFieldMask55Bit
+C/macro/-/kSCSICmdFieldMask57Bit
+C/macro/-/kSCSICmdFieldMask58Bit
+C/macro/-/kSCSICmdFieldMask59Bit
+C/macro/-/kSCSICmdFieldMask5Bit
+C/macro/-/kSCSICmdFieldMask5Byte
+C/macro/-/kSCSICmdFieldMask60Bit
+C/macro/-/kSCSICmdFieldMask61Bit
+C/macro/-/kSCSICmdFieldMask62Bit
+C/macro/-/kSCSICmdFieldMask63Bit
+C/macro/-/kSCSICmdFieldMask6Bit
+C/macro/-/kSCSICmdFieldMask6Byte
+C/macro/-/kSCSICmdFieldMask7Bit
+C/macro/-/kSCSICmdFieldMask7Byte
+C/macro/-/kSCSICmdFieldMask8Byte
+C/macro/-/kSCSICmdFieldMask9Bit
+C/tag/-/kSCSIPort_NotificationStatusChange
+C/econst/SCSIServiceResponse/kSCSIServiceResponse_FUNCTION_COMPLETE
+C/econst/SCSIServiceResponse/kSCSIServiceResponse_FUNCTION_REJECTED
+C/econst/SCSIServiceResponse/kSCSIServiceResponse_LINK_COMMAND_COMPLETE
+C/econst/SCSIServiceResponse/kSCSIServiceResponse_Request_In_Process
+C/econst/SCSIServiceResponse/kSCSIServiceResponse_SERVICE_DELIVERY_OR_TARGET_FAILURE
+C/econst/SCSIServiceResponse/kSCSIServiceResponse_TASK_COMPLETE
+C/econst/SCSITaskAttribute/kSCSITask_ACA
+C/econst/SCSITaskAttribute/kSCSITask_HEAD_OF_QUEUE
+C/econst/SCSITaskAttribute/kSCSITask_ORDERED
+C/econst/SCSITaskAttribute/kSCSITask_SIMPLE
+C/econst/SCSITaskState/kSCSITaskState_BLOCKED
+C/econst/SCSITaskState/kSCSITaskState_DORMANT
+C/econst/SCSITaskState/kSCSITaskState_ENABLED
+C/econst/SCSITaskState/kSCSITaskState_ENDED
+C/econst/SCSITaskState/kSCSITaskState_NEW_TASK
+C/econst/SCSITaskStatus/kSCSITaskStatus_ACA_ACTIVE
+C/econst/SCSITaskStatus/kSCSITaskStatus_BUSY
+C/econst/SCSITaskStatus/kSCSITaskStatus_CHECK_CONDITION
+C/econst/SCSITaskStatus/kSCSITaskStatus_CONDITION_MET
+C/econst/SCSITaskStatus/kSCSITaskStatus_DeliveryFailure
+C/econst/SCSITaskStatus/kSCSITaskStatus_DeviceNotPresent
+C/econst/SCSITaskStatus/kSCSITaskStatus_DeviceNotResponding
+C/econst/SCSITaskStatus/kSCSITaskStatus_GOOD
+C/econst/SCSITaskStatus/kSCSITaskStatus_INTERMEDIATE
+C/econst/SCSITaskStatus/kSCSITaskStatus_INTERMEDIATE_CONDITION_MET
+C/econst/SCSITaskStatus/kSCSITaskStatus_No_Status
+C/econst/SCSITaskStatus/kSCSITaskStatus_ProtocolTimeoutOccurred
+C/econst/SCSITaskStatus/kSCSITaskStatus_RESERVATION_CONFLICT
+C/econst/SCSITaskStatus/kSCSITaskStatus_TASK_SET_FULL
+C/econst/SCSITaskStatus/kSCSITaskStatus_TaskTimeoutOccurred
+C/econst/-/kSCStatusAccessError
+C/econst/-/kSCStatusConnectionNoService
+C/econst/-/kSCStatusFailed
+C/econst/-/kSCStatusInvalidArgument
+C/econst/-/kSCStatusKeyExists
+C/econst/-/kSCStatusLocked
+C/econst/-/kSCStatusMaxLink
+C/econst/-/kSCStatusNeedLock
+C/econst/-/kSCStatusNoConfigFile
+C/econst/-/kSCStatusNoKey
+C/econst/-/kSCStatusNoLink
+C/econst/-/kSCStatusNoPrefsSession
+C/econst/-/kSCStatusNoStoreServer
+C/econst/-/kSCStatusNoStoreSession
+C/econst/-/kSCStatusNotifierActive
+C/econst/-/kSCStatusOK
+C/econst/-/kSCStatusPrefsBusy
+C/econst/-/kSCStatusReachabilityUnknown
+C/econst/-/kSCStatusStale
+C/econst/-/kSecAccountItemAttr
+C/econst/-/kSecAddEvent
+C/econst/-/kSecAddEventMask
+C/econst/-/kSecAddressItemAttr
+C/econst/-/kSecAlias
+C/econst/-/kSecAppleSharePasswordItemClass
+C/data/-/kSecAttrAccount
+C/data/-/kSecAttrApplicationLabel
+C/data/-/kSecAttrApplicationTag
+C/data/-/kSecAttrAuthenticationType
+C/data/-/kSecAttrAuthenticationTypeDefault
+C/data/-/kSecAttrAuthenticationTypeDPA
+C/data/-/kSecAttrAuthenticationTypeHTMLForm
+C/data/-/kSecAttrAuthenticationTypeHTTPBasic
+C/data/-/kSecAttrAuthenticationTypeHTTPDigest
+C/data/-/kSecAttrAuthenticationTypeMSN
+C/data/-/kSecAttrAuthenticationTypeNTLM
+C/data/-/kSecAttrAuthenticationTypeRPA
+C/data/-/kSecAttrCanDecrypt
+C/data/-/kSecAttrCanDerive
+C/data/-/kSecAttrCanEncrypt
+C/data/-/kSecAttrCanSign
+C/data/-/kSecAttrCanUnwrap
+C/data/-/kSecAttrCanVerify
+C/data/-/kSecAttrCanWrap
+C/data/-/kSecAttrCertificateEncoding
+C/data/-/kSecAttrCertificateType
+C/data/-/kSecAttrComment
+C/data/-/kSecAttrCreationDate
+C/data/-/kSecAttrCreator
+C/data/-/kSecAttrDescription
+C/data/-/kSecAttrEffectiveKeySize
+C/data/-/kSecAttrGeneric
+C/data/-/kSecAttrIsInvisible
+C/data/-/kSecAttrIsNegative
+C/data/-/kSecAttrIsPermanent
+C/data/-/kSecAttrIssuer
+C/data/-/kSecAttrKeyClass
+C/data/-/kSecAttrKeyClassPrivate
+C/data/-/kSecAttrKeyClassPublic
+C/data/-/kSecAttrKeyClassSymmetric
+C/data/-/kSecAttrKeySizeInBits
+C/data/-/kSecAttrKeyType
+C/data/-/kSecAttrKeyTypeRSA
+C/data/-/kSecAttrLabel
+C/data/-/kSecAttrModificationDate
+C/data/-/kSecAttrPath
+C/data/-/kSecAttrPort
+C/data/-/kSecAttrProtocol
+C/data/-/kSecAttrProtocolAFP
+C/data/-/kSecAttrProtocolAppleTalk
+C/data/-/kSecAttrProtocolDAAP
+C/data/-/kSecAttrProtocolEPPC
+C/data/-/kSecAttrProtocolFTP
+C/data/-/kSecAttrProtocolFTPAccount
+C/data/-/kSecAttrProtocolFTPProxy
+C/data/-/kSecAttrProtocolFTPS
+C/data/-/kSecAttrProtocolHTTP
+C/data/-/kSecAttrProtocolHTTPProxy
+C/data/-/kSecAttrProtocolHTTPS
+C/data/-/kSecAttrProtocolHTTPSProxy
+C/data/-/kSecAttrProtocolIMAP
+C/data/-/kSecAttrProtocolIMAPS
+C/data/-/kSecAttrProtocolIPP
+C/data/-/kSecAttrProtocolIRC
+C/data/-/kSecAttrProtocolIRCS
+C/data/-/kSecAttrProtocolLDAP
+C/data/-/kSecAttrProtocolLDAPS
+C/data/-/kSecAttrProtocolNNTP
+C/data/-/kSecAttrProtocolNNTPS
+C/data/-/kSecAttrProtocolPOP3
+C/data/-/kSecAttrProtocolPOP3S
+C/data/-/kSecAttrProtocolRTSP
+C/data/-/kSecAttrProtocolRTSPProxy
+C/data/-/kSecAttrProtocolSMB
+C/data/-/kSecAttrProtocolSMTP
+C/data/-/kSecAttrProtocolSOCKS
+C/data/-/kSecAttrProtocolSSH
+C/data/-/kSecAttrProtocolTelnet
+C/data/-/kSecAttrProtocolTelnetS
+C/data/-/kSecAttrPublicKeyHash
+C/data/-/kSecAttrSecurityDomain
+C/data/-/kSecAttrSerialNumber
+C/data/-/kSecAttrServer
+C/data/-/kSecAttrService
+C/data/-/kSecAttrSubject
+C/data/-/kSecAttrSubjectKeyID
+C/data/-/kSecAttrType
+C/econst/-/kSecAuthenticationTypeAny
+C/econst/-/kSecAuthenticationTypeDefault
+C/econst/-/kSecAuthenticationTypeDPA
+C/econst/-/kSecAuthenticationTypeHTMLForm
+C/econst/-/kSecAuthenticationTypeHTTPBasic
+C/econst/-/kSecAuthenticationTypeHTTPDigest
+C/econst/-/kSecAuthenticationTypeItemAttr
+C/econst/-/kSecAuthenticationTypeMSN
+C/econst/-/kSecAuthenticationTypeNTLM
+C/econst/-/kSecAuthenticationTypeRPA
+C/econst/-/kSecCertEncodingItemAttr
+C/econst/-/kSecCertificateEncoding
+C/econst/-/kSecCertificateItemClass
+C/econst/-/kSecCertificateType
+C/econst/-/kSecCertTypeItemAttr
+C/data/-/kSecCFErrorGuestAttributes
+C/data/-/kSecCFErrorInfoPlist
+C/data/-/kSecCFErrorPattern
+C/data/-/kSecCFErrorRequirementSyntax
+C/data/-/kSecCFErrorResourceAdded
+C/data/-/kSecCFErrorResourceAltered
+C/data/-/kSecCFErrorResourceMissing
+C/data/-/kSecCFErrorResourceSeal
+C/data/-/kSecClass
+C/data/-/kSecClassInternetPassword
+C/data/-/kSecCodeInfoCertificates
+C/data/-/kSecCodeInfoChangedFiles
+C/data/-/kSecCodeInfoCMS
+C/data/-/kSecCodeInfoDesignatedRequirement
+C/data/-/kSecCodeInfoEntitlements
+C/data/-/kSecCodeInfoFormat
+C/data/-/kSecCodeInfoIdentifier
+C/data/-/kSecCodeInfoImplicitDesignatedRequirement
+C/data/-/kSecCodeInfoMainExecutable
+C/data/-/kSecCodeInfoPList
+C/data/-/kSecCodeInfoRequirementData
+C/data/-/kSecCodeInfoRequirements
+C/data/-/kSecCodeInfoSource
+C/data/-/kSecCodeInfoStatus
+C/data/-/kSecCodeInfoTime
+C/data/-/kSecCodeInfoTrust
+C/data/-/kSecCodeInfoUnique
+C/econst/-/kSecCodeSignatureAdhoc
+C/econst/-/kSecCodeSignatureForceExpiration
+C/econst/-/kSecCodeSignatureForceHard
+C/econst/-/kSecCodeSignatureForceKill
+C/econst/-/kSecCodeSignatureHost
+C/econst/-/kSecCodeStatusHard
+C/econst/-/kSecCodeStatusKill
+C/econst/-/kSecCodeStatusValid
+C/econst/-/kSecCommentItemAttr
+C/econst/-/kSecCreationDateItemAttr
+C/econst/-/kSecCreatorItemAttr
+C/econst/-/kSecCredentialTypeDefault
+C/econst/-/kSecCredentialTypeNoUI
+C/econst/-/kSecCredentialTypeWithUI
+C/econst/-/kSecCrlEncoding
+C/econst/-/kSecCrlType
+C/econst/-/kSecCSBasicValidateOnly
+C/econst/-/kSecCSCheckAllArchitectures
+C/econst/-/kSecCSConsiderExpiration
+C/econst/-/kSecCSContentInformation
+C/econst/-/kSecCSDedicatedHost
+C/econst/-/kSecCSDefaultFlags
+C/econst/-/kSecCSDoNotValidateExecutable
+C/econst/-/kSecCSDoNotValidateResources
+C/econst/-/kSecCSDynamicInformation
+C/econst/-/kSecCSGenerateGuestHash
+C/econst/-/kSecCSInternalInformation
+C/econst/-/kSecCSRequirementInformation
+C/econst/-/kSecCSSigningInformation
+C/econst/-/kSecCustomIconItemAttr
+C/econst/-/kSecDataAccessEvent
+C/econst/-/kSecDataAccessEventMask
+C/econst/-/kSecDefaultChangedEvent
+C/econst/-/kSecDefaultChangedEventMask
+C/econst/-/kSecDeleteEvent
+C/econst/-/kSecDeleteEventMask
+C/econst/-/kSecDescriptionItemAttr
+C/econst/-/kSecDesignatedRequirementType
+C/econst/-/kSecEveryEventMask
+C/econst/-/kSecFormatBSAFE
+C/econst/-/kSecFormatNetscapeCertSequence
+C/econst/-/kSecFormatOpenSSL
+C/econst/-/kSecFormatPEMSequence
+C/econst/-/kSecFormatPKCS12
+C/econst/-/kSecFormatPKCS7
+C/econst/-/kSecFormatRawKey
+C/econst/-/kSecFormatSSH
+C/econst/-/kSecFormatSSHv2
+C/econst/-/kSecFormatUnknown
+C/econst/-/kSecFormatWrappedLSH
+C/econst/-/kSecFormatWrappedOpenSSL
+C/econst/-/kSecFormatWrappedPKCS8
+C/econst/-/kSecFormatWrappedSSH
+C/econst/-/kSecFormatX509Cert
+C/econst/-/kSecGenericItemAttr
+C/econst/-/kSecGenericPasswordItemClass
+C/data/-/kSecGuestAttributeArchitecture
+C/data/-/kSecGuestAttributeCanonical
+C/data/-/kSecGuestAttributeHash
+C/data/-/kSecGuestAttributeMachPort
+C/data/-/kSecGuestAttributePid
+C/data/-/kSecGuestAttributeSubarchitecture
+C/econst/-/kSecGuestRequirementType
+C/econst/-/kSecHostRequirementType
+C/data/-/kSecIdentityDomainDefault
+C/data/-/kSecIdentityDomainKerberosKDC
+C/data/-/kSecImportItemCertChain
+C/data/-/kSecImportItemIdentity
+C/data/-/kSecImportItemKeyID
+C/data/-/kSecImportItemLabel
+C/data/-/kSecImportItemTrust
+C/econst/-/kSecInternetPasswordItemClass
+C/econst/-/kSecInvalidRequirementType
+C/econst/-/kSecInvisibleItemAttr
+C/econst/-/kSecIssuerItemAttr
+C/econst/-/kSecItemPemArmour
+C/econst/-/kSecItemTypeAggregate
+C/econst/-/kSecItemTypeCertificate
+C/econst/-/kSecItemTypePrivateKey
+C/econst/-/kSecItemTypePublicKey
+C/econst/-/kSecItemTypeSessionKey
+C/econst/-/kSecKeyAlias
+C/econst/-/kSecKeyAlwaysSensitive
+C/econst/-/kSecKeyApplicationTag
+C/econst/-/kSecKeychainListChangedEvent
+C/econst/-/kSecKeychainListChangedMask
+C/econst/-/kSecKeyDecrypt
+C/econst/-/kSecKeyDerive
+C/econst/-/kSecKeyEffectiveKeySize
+C/econst/-/kSecKeyEncrypt
+C/econst/-/kSecKeyEndDate
+C/econst/-/kSecKeyExtractable
+C/econst/-/kSecKeyImportOnlyOne
+C/econst/-/kSecKeyKeyClass
+C/econst/-/kSecKeyKeyCreator
+C/econst/-/kSecKeyKeySizeInBits
+C/econst/-/kSecKeyKeyType
+C/econst/-/kSecKeyLabel
+C/econst/-/kSecKeyModifiable
+C/econst/-/kSecKeyNeverExtractable
+C/econst/-/kSecKeyNoAccessControl
+C/econst/-/kSecKeyPermanent
+C/econst/-/kSecKeyPrintName
+C/econst/-/kSecKeyPrivate
+C/econst/-/kSecKeySecurePassphrase
+C/econst/-/kSecKeySensitive
+C/econst/-/kSecKeySign
+C/econst/-/kSecKeySignRecover
+C/econst/-/kSecKeyStartDate
+C/econst/-/kSecKeyUnwrap
+C/econst/-/kSecKeyVerify
+C/econst/-/kSecKeyVerifyRecover
+C/econst/-/kSecKeyWrap
+C/econst/-/kSecLabelItemAttr
+C/econst/-/kSecLibraryRequirementType
+C/econst/-/kSecLockEvent
+C/econst/-/kSecLockEventMask
+C/data/-/kSecMatchCaseInsensitive
+C/data/-/kSecMatchEmailAddressIfPresent
+C/data/-/kSecMatchIssuers
+C/data/-/kSecMatchItemList
+C/data/-/kSecMatchLimit
+C/data/-/kSecMatchLimitAll
+C/data/-/kSecMatchLimitOne
+C/data/-/kSecMatchPolicy
+C/data/-/kSecMatchSearchList
+C/data/-/kSecMatchSubjectContains
+C/data/-/kSecMatchTrustedOnly
+C/data/-/kSecMatchValidOnDate
+C/econst/-/kSecModDateItemAttr
+C/econst/-/kSecNegativeItemAttr
+C/econst/-/kSecNoGuest
+C/econst/-/kSecPaddingNone
+C/econst/-/kSecPaddingPKCS1
+C/econst/-/kSecPaddingPKCS1MD2
+C/econst/-/kSecPaddingPKCS1MD5
+C/econst/-/kSecPaddingPKCS1SHA1
+C/econst/-/kSecPasswordChangedEvent
+C/econst/-/kSecPasswordChangedEventMask
+C/econst/-/kSecPathItemAttr
+C/econst/-/kSecPortItemAttr
+C/econst/-/kSecPreferencesDomainAlternate
+C/econst/-/kSecPreferencesDomainCommon
+C/econst/-/kSecPreferencesDomainSystem
+C/econst/-/kSecPreferencesDomainUser
+C/econst/-/kSecPrivateKeyItemClass
+C/econst/-/kSecProtocolItemAttr
+C/econst/-/kSecProtocolTypeAFP
+C/econst/-/kSecProtocolTypeAny
+C/econst/-/kSecProtocolTypeAppleTalk
+C/econst/-/kSecProtocolTypeCIFS
+C/econst/-/kSecProtocolTypeCVSpserver
+C/econst/-/kSecProtocolTypeDAAP
+C/econst/-/kSecProtocolTypeEPPC
+C/econst/-/kSecProtocolTypeFTP
+C/econst/-/kSecProtocolTypeFTPAccount
+C/econst/-/kSecProtocolTypeFTPProxy
+C/econst/-/kSecProtocolTypeFTPS
+C/econst/-/kSecProtocolTypeHTTP
+C/econst/-/kSecProtocolTypeHTTPProxy
+C/econst/-/kSecProtocolTypeHTTPS
+C/econst/-/kSecProtocolTypeHTTPSProxy
+C/econst/-/kSecProtocolTypeIMAP
+C/econst/-/kSecProtocolTypeIMAPS
+C/econst/-/kSecProtocolTypeIPP
+C/econst/-/kSecProtocolTypeIRC
+C/econst/-/kSecProtocolTypeIRCS
+C/econst/-/kSecProtocolTypeLDAP
+C/econst/-/kSecProtocolTypeLDAPS
+C/econst/-/kSecProtocolTypeNNTP
+C/econst/-/kSecProtocolTypeNNTPS
+C/econst/-/kSecProtocolTypePOP3
+C/econst/-/kSecProtocolTypePOP3S
+C/econst/-/kSecProtocolTypeRTSP
+C/econst/-/kSecProtocolTypeRTSPProxy
+C/econst/-/kSecProtocolTypeSMB
+C/econst/-/kSecProtocolTypeSMTP
+C/econst/-/kSecProtocolTypeSOCKS
+C/econst/-/kSecProtocolTypeSSH
+C/econst/-/kSecProtocolTypeSVN
+C/econst/-/kSecProtocolTypeTelnet
+C/econst/-/kSecProtocolTypeTelnetS
+C/econst/-/kSecPublicKeyHashItemAttr
+C/econst/-/kSecPublicKeyItemClass
+C/econst/-/kSecReadPermStatus
+C/econst/-/kSecRequirementTypeCount
+C/data/-/kSecReturnAttributes
+C/data/-/kSecReturnData
+C/data/-/kSecReturnPersistentRef
+C/data/-/kSecReturnRef
+C/econst/-/kSecScriptCodeItemAttr
+C/econst/-/kSecSecurityDomainItemAttr
+C/econst/-/kSecSerialNumberItemAttr
+C/econst/-/kSecServerItemAttr
+C/econst/-/kSecServiceItemAttr
+C/econst/-/kSecSignatureItemAttr
+C/econst/-/kSecSubjectItemAttr
+C/econst/-/kSecSubjectKeyIdentifierItemAttr
+C/econst/-/kSecSymmetricKeyItemClass
+C/econst/-/kSecTrustResultConfirm
+C/econst/-/kSecTrustResultDeny
+C/econst/-/kSecTrustResultFatalTrustFailure
+C/econst/-/kSecTrustResultInvalid
+C/econst/-/kSecTrustResultOtherError
+C/econst/-/kSecTrustResultProceed
+C/econst/-/kSecTrustResultRecoverableTrustFailure
+C/econst/-/kSecTrustResultUnspecified
+C/macro/-/kSecTrustSettingsAllowedError
+C/macro/-/kSecTrustSettingsApplication
+C/econst/-/kSecTrustSettingsChangedEvent
+C/econst/-/kSecTrustSettingsChangedEventMask
+C/macro/-/kSecTrustSettingsDefaultRootCertSetting
+C/econst/-/kSecTrustSettingsDomainAdmin
+C/econst/-/kSecTrustSettingsDomainSystem
+C/econst/-/kSecTrustSettingsDomainUser
+C/macro/-/kSecTrustSettingsKeyUsage
+C/econst/-/kSecTrustSettingsKeyUseAny
+C/econst/-/kSecTrustSettingsKeyUseEnDecryptData
+C/econst/-/kSecTrustSettingsKeyUseEnDecryptKey
+C/econst/-/kSecTrustSettingsKeyUseKeyExchange
+C/econst/-/kSecTrustSettingsKeyUseSignature
+C/econst/-/kSecTrustSettingsKeyUseSignCert
+C/econst/-/kSecTrustSettingsKeyUseSignRevocation
+C/macro/-/kSecTrustSettingsPolicy
+C/macro/-/kSecTrustSettingsPolicyString
+C/macro/-/kSecTrustSettingsResult
+C/econst/-/kSecTrustSettingsResultDeny
+C/econst/-/kSecTrustSettingsResultInvalid
+C/econst/-/kSecTrustSettingsResultTrustAsRoot
+C/econst/-/kSecTrustSettingsResultTrustRoot
+C/econst/-/kSecTrustSettingsResultUnspecified
+C/econst/-/kSecTypeItemAttr
+C/econst/-/kSecUnlockEvent
+C/econst/-/kSecUnlockEventMask
+C/econst/-/kSecUnlockStateStatus
+C/econst/-/kSecUpdateEvent
+C/econst/-/kSecUpdateEventMask
+C/data/-/kSecUseItemList
+C/data/-/kSecValueData
+C/data/-/kSecValuePersistentRef
+C/data/-/kSecValueRef
+C/econst/-/kSecVolumeItemAttr
+C/econst/-/kSecWritePermStatus
+C/tag/-/kSenseDefaultSize
+C/econst/-/kSequenceTrackProperty_AutomatedParameters
+C/econst/-/kSequenceTrackProperty_LoopInfo
+C/econst/-/kSequenceTrackProperty_MuteStatus
+C/econst/-/kSequenceTrackProperty_OffsetTime
+C/econst/-/kSequenceTrackProperty_SoloStatus
+C/econst/-/kSequenceTrackProperty_TimeResolution
+C/econst/-/kSequenceTrackProperty_TrackLength
+C/econst/-/kSetFrontProcessFrontWindowOnly
+C/econst/-/kShutDownNotifyMask
+C/econst/-/kSKDocumentStateAddPending
+C/econst/-/kSKDocumentStateDeletePending
+C/econst/-/kSKDocumentStateIndexed
+C/econst/-/kSKDocumentStateNotIndexed
+C/data/-/kSKEndTermChars
+C/econst/-/kSKIndexInverted
+C/econst/-/kSKIndexInvertedVector
+C/econst/-/kSKIndexUnknown
+C/econst/-/kSKIndexVector
+C/data/-/kSKLanguageTypes
+C/data/-/kSKMaximumTerms
+C/data/-/kSKMinTermLength
+C/data/-/kSKProximityIndexing
+C/econst/-/kSKSearchBooleanRanked
+C/econst/-/kSKSearchOptionDefault
+C/econst/-/kSKSearchOptionFindSimilar
+C/econst/-/kSKSearchOptionNoRelevanceScores
+C/econst/-/kSKSearchOptionSpaceMeansOR
+C/econst/-/kSKSearchPrefixRanked
+C/econst/-/kSKSearchRanked
+C/econst/-/kSKSearchRequiredRanked
+C/data/-/kSKStartTermChars
+C/data/-/kSKStopWords
+C/data/-/kSKSubstitutions
+C/data/-/kSKTermChars
+C/econst/-/kSmall4BitIcon
+C/econst/-/kSmall4BitIconSize
+C/econst/-/kSmall8BitIcon
+C/econst/-/kSmall8BitIconSize
+C/econst/-/kSmallIcon
+C/econst/-/kSmallIconSize
+C/data/-/kSMDomainSystemLaunchd
+C/data/-/kSMDomainUserLaunchd
+C/data/-/kSMErrorDomainFramework
+C/data/-/kSMErrorDomainIPC
+C/data/-/kSMErrorDomainLaunchd
+C/data/-/kSMInfoKeyAuthorizedClients
+C/data/-/kSMInfoKeyPrivilegedExecutables
+C/econst/-/kSMPTETimeRunning
+C/econst/-/kSMPTETimeType2398
+C/econst/-/kSMPTETimeType24
+C/econst/-/kSMPTETimeType25
+C/econst/-/kSMPTETimeType2997
+C/econst/-/kSMPTETimeType2997Drop
+C/econst/-/kSMPTETimeType30
+C/econst/-/kSMPTETimeType30Drop
+C/econst/-/kSMPTETimeType50
+C/econst/-/kSMPTETimeType5994
+C/econst/-/kSMPTETimeType5994Drop
+C/econst/-/kSMPTETimeType60
+C/econst/-/kSMPTETimeType60Drop
+C/econst/-/kSMPTETimeValid
+C/macro/-/kSMRightBlessPrivilegedHelper
+C/macro/-/kSMRightModifySystemDaemons
+C/econst/-/kSOCKS5NoAcceptableMethod
+C/econst/-/kSoftSynthComponentSubType
+C/econst/-/kSorenson3CodecType
+C/econst/-/kSpatializationAlgorithm_EqualPowerPanning
+C/econst/-/kSpatializationAlgorithm_HRTF
+C/econst/-/kSpatializationAlgorithm_SoundField
+C/econst/-/kSpatializationAlgorithm_SphericalHead
+C/econst/-/kSpatializationAlgorithm_StereoPassThrough
+C/econst/-/kSpatializationAlgorithm_VectorBasedPanning
+C/data/-/kSpeechCharacterModeProperty
+C/data/-/kSpeechCommandDelimiterProperty
+C/data/-/kSpeechCommandPrefix
+C/data/-/kSpeechCommandSuffix
+C/data/-/kSpeechCurrentVoiceProperty
+C/data/-/kSpeechDictionaryAbbreviations
+C/data/-/kSpeechDictionaryEntryPhonemes
+C/data/-/kSpeechDictionaryEntrySpelling
+C/data/-/kSpeechDictionaryLocaleIdentifier
+C/data/-/kSpeechDictionaryModificationDate
+C/data/-/kSpeechDictionaryPronunciations
+C/data/-/kSpeechErrorCallbackCharacterOffset
+C/data/-/kSpeechErrorCallbackSpokenString
+C/data/-/kSpeechErrorCFCallBack
+C/data/-/kSpeechErrorCount
+C/data/-/kSpeechErrorNewest
+C/data/-/kSpeechErrorNewestCharacterOffset
+C/data/-/kSpeechErrorOldest
+C/data/-/kSpeechErrorOldestCharacterOffset
+C/data/-/kSpeechErrorsProperty
+C/econst/-/kSpeechGenerateTune
+C/data/-/kSpeechInputModeProperty
+C/data/-/kSpeechModeLiteral
+C/data/-/kSpeechModeNormal
+C/data/-/kSpeechModePhoneme
+C/data/-/kSpeechModeText
+C/data/-/kSpeechNoEndingProsody
+C/data/-/kSpeechNoSpeechInterrupt
+C/data/-/kSpeechNumberModeProperty
+C/data/-/kSpeechOutputToAudioDeviceProperty
+C/data/-/kSpeechOutputToExtAudioFileProperty
+C/data/-/kSpeechOutputToFileURLProperty
+C/data/-/kSpeechPhonemeCallBack
+C/data/-/kSpeechPhonemeInfoExample
+C/data/-/kSpeechPhonemeInfoHiliteEnd
+C/data/-/kSpeechPhonemeInfoHiliteStart
+C/data/-/kSpeechPhonemeInfoOpcode
+C/data/-/kSpeechPhonemeInfoSymbol
+C/data/-/kSpeechPhonemeOptionsProperty
+C/data/-/kSpeechPhonemeSymbolsProperty
+C/data/-/kSpeechPitchBaseProperty
+C/data/-/kSpeechPitchModProperty
+C/data/-/kSpeechPreflightThenPause
+C/data/-/kSpeechRateProperty
+C/data/-/kSpeechRecentSyncProperty
+C/data/-/kSpeechRefConProperty
+C/econst/-/kSpeechRelativeDuration
+C/econst/-/kSpeechRelativePitch
+C/data/-/kSpeechResetProperty
+C/econst/-/kSpeechShowSyllables
+C/data/-/kSpeechSpeechDoneCallBack
+C/data/-/kSpeechStatusNumberOfCharactersLeft
+C/data/-/kSpeechStatusOutputBusy
+C/data/-/kSpeechStatusOutputPaused
+C/data/-/kSpeechStatusPhonemeCode
+C/data/-/kSpeechStatusProperty
+C/data/-/kSpeechSyncCallBack
+C/data/-/kSpeechSynthesizerInfoIdentifier
+C/data/-/kSpeechSynthesizerInfoManufacturer
+C/data/-/kSpeechSynthesizerInfoProperty
+C/data/-/kSpeechSynthesizerInfoVersion
+C/data/-/kSpeechTextDoneCallBack
+C/data/-/kSpeechVoiceCreator
+C/data/-/kSpeechVoiceID
+C/data/-/kSpeechVolumeProperty
+C/data/-/kSpeechWordCFCallBack
+C/econst/-/kSPGroup
+C/econst/-/kSPOther
+C/econst/-/kSPOwner
+C/econst/-/kSPUser
+C/econst/-/kSRAlreadyFinished
+C/econst/-/kSRAlreadyListening
+C/econst/-/kSRAlreadyReleased
+C/econst/-/kSRAutoFinishingParam
+C/econst/-/kSRBadParameter
+C/econst/-/kSRBadSelector
+C/econst/-/kSRBlockBackground
+C/econst/-/kSRBlockModally
+C/econst/-/kSRBufferTooSmall
+C/econst/-/kSRCallBackParam
+C/econst/-/kSRCancelOnSoundOut
+C/econst/-/kSRCanned22kHzSpeechSource
+C/econst/-/kSRCantAdd
+C/econst/-/kSRCantGetProperty
+C/econst/-/kSRCantReadLanguageObject
+C/econst/-/kSRCantSetDuringRecognition
+C/econst/-/kSRCantSetProperty
+C/econst/-/kSRCleanupOnClientExit
+C/econst/-/kSRComponentNotFound
+C/econst/-/kSRDefaultRecognitionSystemID
+C/econst/-/kSRDefaultSpeechSource
+C/econst/-/kSREnabled
+C/econst/-/kSRExpansionTooDeep
+C/econst/-/kSRFeedbackAndListeningModes
+C/econst/-/kSRFeedbackNotAvail
+C/econst/-/kSRForegroundOnly
+C/econst/-/kSRHasFeedbackHasListenModes
+C/econst/-/kSRHasNoSubItems
+C/econst/-/kSRIdleRecognizer
+C/econst/-/kSRInternalError
+C/econst/-/kSRKeyExpected
+C/econst/-/kSRKeyWord
+C/econst/-/kSRLanguageModelFormat
+C/econst/-/kSRLanguageModelTooBig
+C/econst/-/kSRLanguageModelType
+C/econst/-/kSRListenKeyCombo
+C/econst/-/kSRListenKeyMode
+C/econst/-/kSRListenKeyName
+C/econst/-/kSRLiveDesktopSpeechSource
+C/econst/-/kSRLMObjType
+C/econst/-/kSRModelMismatch
+C/econst/-/kSRMustCancelSearch
+C/econst/-/kSRNoClientLanguageModel
+C/econst/-/kSRNoFeedbackHasListenModes
+C/econst/-/kSRNoFeedbackNoListenModes
+C/econst/-/kSRNoPendingUtterances
+C/econst/-/kSRNotARecSystem
+C/econst/-/kSRNotASpeechObject
+C/econst/-/kSRNotAvailable
+C/econst/-/kSRNotFinishedWithRejection
+C/econst/-/kSRNotificationParam
+C/econst/-/kSRNotifyRecognitionBeginning
+C/econst/-/kSRNotifyRecognitionDone
+C/econst/-/kSRNotImplementedYet
+C/econst/-/kSRNotListeningState
+C/econst/-/kSROptional
+C/econst/-/kSROtherRecAlreadyModal
+C/econst/-/kSROutOfMemory
+C/econst/-/kSRParamOutOfRange
+C/econst/-/kSRPathFormat
+C/econst/-/kSRPathType
+C/econst/-/kSRPendingSearch
+C/econst/-/kSRPhraseFormat
+C/econst/-/kSRPhraseType
+C/econst/-/kSRReadAudioFSSpec
+C/econst/-/kSRRecognitionCanceled
+C/econst/-/kSRRecognitionDone
+C/econst/-/kSRRefCon
+C/econst/-/kSRRejectable
+C/econst/-/kSRRejectedWord
+C/econst/-/kSRRejectionLevel
+C/econst/-/kSRRepeatable
+C/econst/-/kSRSearchInProgress
+C/econst/-/kSRSearchStatusParam
+C/econst/-/kSRSearchWaitForAllClients
+C/econst/-/kSRSndInSourceDisconnected
+C/econst/-/kSRSoundInVolume
+C/econst/-/kSRSpeedVsAccuracyParam
+C/econst/-/kSRSpelling
+C/econst/-/kSRSubItemNotFound
+C/econst/-/kSRTEXTFormat
+C/econst/-/kSRTooManyElements
+C/econst/-/kSRUsePushToTalk
+C/econst/-/kSRUseToggleListen
+C/econst/-/kSrvrMsg
+C/econst/-/kSrvrSig
+C/econst/-/kSRWantsAutoFBGestures
+C/econst/-/kSRWantsResultTextDrawn
+C/econst/-/kSRWordNotFound
+C/econst/-/kSRWordType
+C/econst/-/kSSLAborted
+C/econst/-/kSSLClientCertNone
+C/econst/-/kSSLClientCertRejected
+C/econst/-/kSSLClientCertRequested
+C/econst/-/kSSLClientCertSent
+C/econst/-/kSSLClosed
+C/econst/-/kSSLConnected
+C/econst/-/kSSLHandshake
+C/econst/-/kSSLIdle
+C/econst/-/kSSLProtocol2
+C/econst/-/kSSLProtocol3
+C/econst/-/kSSLProtocol3Only
+C/econst/-/kSSLProtocolAll
+C/econst/-/kSSLProtocolUnknown
+C/econst/-/kStandardSourceAlias
+C/macro/-/kStandardSourceAlias
+C/econst/-/kStandardTargetAlias
+C/macro/-/kStandardTargetAlias
+C/econst/-/kSupportsACLs
+C/econst/-/kSupportsBlankAccessPrivs
+C/econst/-/kSupportsCatSearch
+C/econst/-/kSupportsChgPwd
+C/econst/-/kSupportsCopyfile
+C/econst/-/kSupportsDirServices
+C/econst/-/kSupportsExtAttrs
+C/econst/-/kSupportsExtSleep
+C/econst/-/kSupportsFileIDs
+C/econst/-/kSupportsReconnect
+C/econst/-/kSupportsSrvrMsg
+C/econst/-/kSupportsSrvrNotify
+C/econst/-/kSupportsSuperClient
+C/econst/-/kSupportsTCP
+C/econst/-/kSupportsTMLockSteal
+C/econst/-/kSupportsUnixPrivs
+C/econst/-/kSupportsUTF8Names
+C/econst/-/kSupportsUTF8SrvrName
+C/econst/-/kSupportsUUIDs
+C/econst/-/kSystemPPDDomain
+C/econst/-/kSystemProcess
+C/econst/-/kSystemResFile
+C/econst/-/kSystemSoundID_FlashScreen
+C/econst/-/kSystemSoundID_UserPreferredAlert
+C/econst/-/kTargetChildMovieMovieName
+C/econst/-/kTargetChildMovieTrackIndex
+C/econst/-/kTargetCurrentQTEventParams
+C/econst/-/kTargetQD3DNamedObjectName
+C/econst/-/kTargetSpriteID
+C/econst/-/kTargetSpriteName
+C/econst/-/kTargetTrackIndex
+C/econst/-/kTargetTrackType
+C/econst/-/kTECAddFallbackInterruptBit
+C/econst/-/kTECAddForceASCIIChangesBit
+C/econst/-/kTECAddTextRunHeuristicsBit
+C/econst/-/kTECArrayFullErr
+C/econst/-/kTECBufferBelowMinimumSizeErr
+C/econst/-/kTECCorruptConverterErr
+C/econst/-/kTECDirectionErr
+C/econst/-/kTECFallbackTextLengthFixBit
+C/econst/-/kTECGlobalsUnavailableErr
+C/econst/-/kTECIncompleteElementErr
+C/econst/-/kTECItemUnavailableErr
+C/econst/-/kTECKeepInfoFixBit
+C/econst/-/kTECMissingTableErr
+C/econst/-/kTECNeedFlushStatus
+C/econst/-/kTECNoConversionPathErr
+C/econst/-/kTECOutputBufferFullStatus
+C/econst/-/kTECPartialCharErr
+C/econst/-/kTECPluginDispatchTableCurrentVersion
+C/econst/-/kTECPluginDispatchTableVersion1
+C/econst/-/kTECPluginDispatchTableVersion1_1
+C/econst/-/kTECPluginDispatchTableVersion1_2
+C/econst/-/kTECPreferredEncodingFixBit
+C/econst/-/kTECTableChecksumErr
+C/econst/-/kTECTableFormatErr
+C/econst/-/kTECTextRunBitClearFixBit
+C/econst/-/kTECTextToUnicodeScanFixBit
+C/econst/-/kTECUnmappableElementErr
+C/econst/-/kTECUsedFallbacksStatus
+C/econst/-/kTextEditState
+C/econst/-/kTextEncodingBaseName
+C/econst/-/kTextEncodingBig5
+C/econst/-/kTextEncodingBig5_HKSCS_1999
+C/econst/-/kTextEncodingCNS_11643_92_P1
+C/econst/-/kTextEncodingCNS_11643_92_P2
+C/econst/-/kTextEncodingCNS_11643_92_P3
+C/econst/-/kTextEncodingDefaultFormat
+C/econst/-/kTextEncodingDefaultVariant
+C/econst/-/kTextEncodingDOSArabic
+C/econst/-/kTextEncodingDOSBalticRim
+C/econst/-/kTextEncodingDOSCanadianFrench
+C/econst/-/kTextEncodingDOSChineseSimplif
+C/econst/-/kTextEncodingDOSChineseTrad
+C/econst/-/kTextEncodingDOSCyrillic
+C/econst/-/kTextEncodingDOSGreek
+C/econst/-/kTextEncodingDOSGreek1
+C/econst/-/kTextEncodingDOSGreek2
+C/econst/-/kTextEncodingDOSHebrew
+C/econst/-/kTextEncodingDOSIcelandic
+C/econst/-/kTextEncodingDOSJapanese
+C/econst/-/kTextEncodingDOSKorean
+C/econst/-/kTextEncodingDOSLatin1
+C/econst/-/kTextEncodingDOSLatin2
+C/econst/-/kTextEncodingDOSLatinUS
+C/econst/-/kTextEncodingDOSNordic
+C/econst/-/kTextEncodingDOSPortuguese
+C/econst/-/kTextEncodingDOSRussian
+C/econst/-/kTextEncodingDOSThai
+C/econst/-/kTextEncodingDOSTurkish
+C/econst/-/kTextEncodingEBCDIC_CP037
+C/econst/-/kTextEncodingEBCDIC_US
+C/econst/-/kTextEncodingEUC_CN
+C/econst/-/kTextEncodingEUC_JP
+C/econst/-/kTextEncodingEUC_KR
+C/econst/-/kTextEncodingEUC_TW
+C/econst/-/kTextEncodingFormatName
+C/econst/-/kTextEncodingFullName
+C/econst/-/kTextEncodingGB_18030_2000
+C/econst/-/kTextEncodingGB_2312_80
+C/econst/-/kTextEncodingGBK_95
+C/econst/-/kTextEncodingHZ_GB_2312
+C/econst/-/kTextEncodingISO10646_1993
+C/econst/-/kTextEncodingISO_2022_CN
+C/econst/-/kTextEncodingISO_2022_CN_EXT
+C/econst/-/kTextEncodingISO_2022_JP
+C/econst/-/kTextEncodingISO_2022_JP_1
+C/econst/-/kTextEncodingISO_2022_JP_2
+C/econst/-/kTextEncodingISO_2022_JP_3
+C/econst/-/kTextEncodingISO_2022_KR
+C/econst/-/kTextEncodingISOLatin1
+C/econst/-/kTextEncodingISOLatin2
+C/econst/-/kTextEncodingISOLatin3
+C/econst/-/kTextEncodingISOLatin4
+C/econst/-/kTextEncodingISOLatin5
+C/econst/-/kTextEncodingISOLatin6
+C/econst/-/kTextEncodingISOLatin7
+C/econst/-/kTextEncodingISOLatin8
+C/econst/-/kTextEncodingISOLatin9
+C/econst/-/kTextEncodingISOLatinArabic
+C/econst/-/kTextEncodingISOLatinCyrillic
+C/econst/-/kTextEncodingISOLatinGreek
+C/econst/-/kTextEncodingISOLatinHebrew
+C/econst/-/kTextEncodingJIS_C6226_78
+C/econst/-/kTextEncodingJIS_X0201_76
+C/econst/-/kTextEncodingJIS_X0208_83
+C/econst/-/kTextEncodingJIS_X0208_90
+C/econst/-/kTextEncodingJIS_X0212_90
+C/econst/-/kTextEncodingKOI8_R
+C/econst/-/kTextEncodingKSC_5601_87
+C/econst/-/kTextEncodingKSC_5601_92_Johab
+C/econst/-/kTextEncodingMacArabic
+C/econst/-/kTextEncodingMacArmenian
+C/econst/-/kTextEncodingMacBengali
+C/econst/-/kTextEncodingMacBurmese
+C/econst/-/kTextEncodingMacCeltic
+C/econst/-/kTextEncodingMacCentralEurRoman
+C/econst/-/kTextEncodingMacChineseSimp
+C/econst/-/kTextEncodingMacChineseTrad
+C/econst/-/kTextEncodingMacCroatian
+C/econst/-/kTextEncodingMacCyrillic
+C/econst/-/kTextEncodingMacDevanagari
+C/econst/-/kTextEncodingMacDingbats
+C/econst/-/kTextEncodingMacEthiopic
+C/econst/-/kTextEncodingMacExtArabic
+C/econst/-/kTextEncodingMacFarsi
+C/econst/-/kTextEncodingMacGaelic
+C/econst/-/kTextEncodingMacGeorgian
+C/econst/-/kTextEncodingMacGreek
+C/econst/-/kTextEncodingMacGujarati
+C/econst/-/kTextEncodingMacGurmukhi
+C/econst/-/kTextEncodingMacHebrew
+C/econst/-/kTextEncodingMacHFS
+C/econst/-/kTextEncodingMacIcelandic
+C/econst/-/kTextEncodingMacInuit
+C/econst/-/kTextEncodingMacJapanese
+C/econst/-/kTextEncodingMacKannada
+C/econst/-/kTextEncodingMacKeyboardGlyphs
+C/econst/-/kTextEncodingMacKhmer
+C/econst/-/kTextEncodingMacKorean
+C/econst/-/kTextEncodingMacLaotian
+C/econst/-/kTextEncodingMacMalayalam
+C/econst/-/kTextEncodingMacMongolian
+C/econst/-/kTextEncodingMacOriya
+C/econst/-/kTextEncodingMacRoman
+C/econst/-/kTextEncodingMacRomanian
+C/econst/-/kTextEncodingMacRomanLatin1
+C/econst/-/kTextEncodingMacSinhalese
+C/econst/-/kTextEncodingMacSymbol
+C/econst/-/kTextEncodingMacTamil
+C/econst/-/kTextEncodingMacTelugu
+C/econst/-/kTextEncodingMacThai
+C/econst/-/kTextEncodingMacTibetan
+C/econst/-/kTextEncodingMacTurkish
+C/econst/-/kTextEncodingMacUkrainian
+C/econst/-/kTextEncodingMacUnicode
+C/econst/-/kTextEncodingMacVietnamese
+C/econst/-/kTextEncodingMacVT100
+C/econst/-/kTextEncodingMultiRun
+C/econst/-/kTextEncodingShiftJIS
+C/econst/-/kTextEncodingShiftJIS_X0213_00
+C/econst/-/kTextEncodingUnicodeDefault
+C/econst/-/kTextEncodingUnicodeV1_1
+C/econst/-/kTextEncodingUnicodeV2_0
+C/econst/-/kTextEncodingUnicodeV2_1
+C/econst/-/kTextEncodingUnicodeV3_0
+C/econst/-/kTextEncodingUnicodeV3_1
+C/econst/-/kTextEncodingUnicodeV3_2
+C/econst/-/kTextEncodingUnknown
+C/econst/-/kTextEncodingUS_ASCII
+C/econst/-/kTextEncodingVariantName
+C/econst/-/kTextEncodingWindowsANSI
+C/econst/-/kTextEncodingWindowsArabic
+C/econst/-/kTextEncodingWindowsBalticRim
+C/econst/-/kTextEncodingWindowsCyrillic
+C/econst/-/kTextEncodingWindowsGreek
+C/econst/-/kTextEncodingWindowsHebrew
+C/econst/-/kTextEncodingWindowsKoreanJohab
+C/econst/-/kTextEncodingWindowsLatin1
+C/econst/-/kTextEncodingWindowsLatin2
+C/econst/-/kTextEncodingWindowsLatin5
+C/econst/-/kTextEncodingWindowsVietnamese
+C/econst/-/kTextHyperTextColor
+C/econst/-/kTextHyperTextFace
+C/econst/-/kTextKeyEntry
+C/econst/-/kTextLanguageDontCare
+C/econst/-/kTextLength
+C/econst/-/kTextMalformedInputErr
+C/econst/-/kTextMouseDown
+C/econst/-/kTextRegionDontCare
+C/econst/-/kTextRelativeScroll
+C/econst/-/kTextScriptDontCare
+C/econst/-/kTextScroll
+C/econst/-/kTextSelection
+C/econst/-/kTextTextBox
+C/econst/-/kTextToSpeechSynthType
+C/econst/-/kTextToSpeechVoiceBundleType
+C/econst/-/kTextToSpeechVoiceFileType
+C/econst/-/kTextToSpeechVoiceType
+C/econst/-/kTextUndefinedElementErr
+C/econst/-/kTextUnsupportedEncodingErr
+C/econst/-/kTimePitchParam_EffectBlend
+C/econst/-/kTimePitchParam_Pitch
+C/econst/-/kTimePitchParam_Rate
+C/econst/-/kTISCategoryInkInputSource
+C/econst/-/kTISCategoryKeyboardInputSource
+C/econst/-/kTISCategoryPaletteInputSource
+C/econst/-/kTISNotifyEnabledKeyboardInputSourcesChanged
+C/econst/-/kTISNotifySelectedKeyboardInputSourceChanged
+C/econst/-/kTISPropertyBundleID
+C/econst/-/kTISPropertyIconImageURL
+C/econst/-/kTISPropertyIconRef
+C/econst/-/kTISPropertyInputModeID
+C/econst/-/kTISPropertyInputSourceCategory
+C/econst/-/kTISPropertyInputSourceID
+C/econst/-/kTISPropertyInputSourceIsASCIICapable
+C/econst/-/kTISPropertyInputSourceIsEnableCapable
+C/econst/-/kTISPropertyInputSourceIsEnabled
+C/econst/-/kTISPropertyInputSourceIsSelectCapable
+C/econst/-/kTISPropertyInputSourceIsSelected
+C/econst/-/kTISPropertyInputSourceLanguages
+C/econst/-/kTISPropertyInputSourceType
+C/econst/-/kTISPropertyLocalizedName
+C/econst/-/kTISPropertyUnicodeKeyLayoutData
+C/econst/-/kTISTypeCharacterPalette
+C/econst/-/kTISTypeInk
+C/econst/-/kTISTypeKeyboardInputMethodModeEnabled
+C/econst/-/kTISTypeKeyboardInputMethodWithoutModes
+C/econst/-/kTISTypeKeyboardInputMode
+C/econst/-/kTISTypeKeyboardLayout
+C/econst/-/kTISTypeKeyboardViewer
+C/econst/-/kTLSProtocol1
+C/econst/-/kTLSProtocol1Only
+C/econst/-/kTryAuthenticate
+C/econst/-/kTwoWayEncryptPassword
+C/econst/-/kTwoWayRandNumUAMStr
+C/econst/-/kUAZoomFocusTypeInsertionPoint
+C/econst/-/kUAZoomFocusTypeOther
+C/tag/-/kUAZoomFocusTypeOther
+C/econst/-/kUCBidiCatArabicNumber
+C/econst/-/kUCBidiCatBlockSeparator
+C/econst/-/kUCBidiCatBoundaryNeutral
+C/econst/-/kUCBidiCatCommonNumberSeparator
+C/econst/-/kUCBidiCatEuroNumber
+C/econst/-/kUCBidiCatEuroNumberSeparator
+C/econst/-/kUCBidiCatEuroNumberTerminator
+C/econst/-/kUCBidiCatLeftRight
+C/econst/-/kUCBidiCatLeftRightEmbedding
+C/econst/-/kUCBidiCatLeftRightOverride
+C/econst/-/kUCBidiCatNonSpacingMark
+C/econst/-/kUCBidiCatNotApplicable
+C/econst/-/kUCBidiCatOtherNeutral
+C/econst/-/kUCBidiCatPopDirectionalFormat
+C/econst/-/kUCBidiCatRightLeft
+C/econst/-/kUCBidiCatRightLeftArabic
+C/econst/-/kUCBidiCatRightLeftEmbedding
+C/econst/-/kUCBidiCatRightLeftOverride
+C/econst/-/kUCBidiCatSegmentSeparator
+C/econst/-/kUCBidiCatWhitespace
+C/econst/-/kUCCharPropTypeBidiCategory
+C/econst/-/kUCCharPropTypeCombiningClass
+C/econst/-/kUCCharPropTypeGenlCategory
+C/econst/-/kUCCollateCaseInsensitiveMask
+C/econst/-/kUCCollateComposeInsensitiveMask
+C/econst/-/kUCCollateDiacritInsensitiveMask
+C/econst/-/kUCCollateDigitsAsNumberMask
+C/econst/-/kUCCollateDigitsOverrideMask
+C/econst/-/kUCCollatePunctuationSignificantMask
+C/econst/-/kUCCollateStandardOptions
+C/econst/-/kUCCollateTypeHFSExtended
+C/econst/-/kUCCollateTypeMask
+C/econst/-/kUCCollateTypeShiftBits
+C/econst/-/kUCCollateTypeSourceMask
+C/econst/-/kUCCollateWidthInsensitiveMask
+C/econst/-/kUCGenlCatLetterLowercase
+C/econst/-/kUCGenlCatLetterModifier
+C/econst/-/kUCGenlCatLetterOther
+C/econst/-/kUCGenlCatLetterTitlecase
+C/econst/-/kUCGenlCatLetterUppercase
+C/econst/-/kUCGenlCatMarkEnclosing
+C/econst/-/kUCGenlCatMarkNonSpacing
+C/econst/-/kUCGenlCatMarkSpacingCombining
+C/econst/-/kUCGenlCatNumberDecimalDigit
+C/econst/-/kUCGenlCatNumberLetter
+C/econst/-/kUCGenlCatNumberOther
+C/econst/-/kUCGenlCatOtherControl
+C/econst/-/kUCGenlCatOtherFormat
+C/econst/-/kUCGenlCatOtherNotAssigned
+C/econst/-/kUCGenlCatOtherPrivateUse
+C/econst/-/kUCGenlCatOtherSurrogate
+C/econst/-/kUCGenlCatPunctClose
+C/econst/-/kUCGenlCatPunctConnector
+C/econst/-/kUCGenlCatPunctDash
+C/econst/-/kUCGenlCatPunctFinalQuote
+C/econst/-/kUCGenlCatPunctInitialQuote
+C/econst/-/kUCGenlCatPunctOpen
+C/econst/-/kUCGenlCatPunctOther
+C/econst/-/kUCGenlCatSeparatorLine
+C/econst/-/kUCGenlCatSeparatorParagraph
+C/econst/-/kUCGenlCatSeparatorSpace
+C/econst/-/kUCGenlCatSymbolCurrency
+C/econst/-/kUCGenlCatSymbolMath
+C/econst/-/kUCGenlCatSymbolModifier
+C/econst/-/kUCGenlCatSymbolOther
+C/econst/-/kUCKeyActionAutoKey
+C/econst/-/kUCKeyActionDisplay
+C/econst/-/kUCKeyActionDown
+C/econst/-/kUCKeyActionUp
+C/econst/-/kUCKeyLayoutFeatureInfoFormat
+C/econst/-/kUCKeyLayoutHeaderFormat
+C/econst/-/kUCKeyModifiersToTableNumFormat
+C/econst/-/kUCKeyOutputGetIndexMask
+C/econst/-/kUCKeyOutputSequenceIndexMask
+C/econst/-/kUCKeyOutputStateIndexMask
+C/econst/-/kUCKeyOutputTestForIndexMask
+C/econst/-/kUCKeySequenceDataIndexFormat
+C/econst/-/kUCKeyStateEntryRangeFormat
+C/econst/-/kUCKeyStateEntryTerminalFormat
+C/econst/-/kUCKeyStateRecordsIndexFormat
+C/econst/-/kUCKeyStateTerminatorsFormat
+C/econst/-/kUCKeyToCharTableIndexFormat
+C/econst/-/kUCKeyTranslateNoDeadKeysBit
+C/econst/-/kUCKeyTranslateNoDeadKeysMask
+C/econst/-/kUCTextBreakCharMask
+C/econst/-/kUCTextBreakClusterMask
+C/econst/-/kUCTextBreakGoBackwardsMask
+C/econst/-/kUCTextBreakIterateMask
+C/econst/-/kUCTextBreakLeadingEdgeMask
+C/econst/-/kUCTextBreakLineMask
+C/econst/-/kUCTextBreakWordMask
+C/econst/-/kUIModeAllHidden
+C/econst/-/kUIModeAllSuppressed
+C/econst/-/kUIModeContentHidden
+C/econst/-/kUIModeContentSuppressed
+C/econst/-/kUIModeNormal
+C/econst/-/kUIOptionAutoShowMenuBar
+C/econst/-/kUIOptionDisableAppleMenu
+C/econst/-/kUIOptionDisableForceQuit
+C/econst/-/kUIOptionDisableHide
+C/econst/-/kUIOptionDisableProcessSwitch
+C/econst/-/kUIOptionDisableSessionTerminate
+C/econst/-/kUnicode16BitFormat
+C/econst/-/kUnicode32BitFormat
+C/econst/-/kUnicodeByteOrderMark
+C/econst/-/kUnicodeCanonicalCompVariant
+C/econst/-/kUnicodeCanonicalDecompVariant
+C/econst/-/kUnicodeCollationClass
+C/econst/-/kUnicodeDefaultDirection
+C/econst/-/kUnicodeDefaultDirectionMask
+C/econst/-/kUnicodeDirectionalityBits
+C/econst/-/kUnicodeDirectionalityMask
+C/econst/-/kUnicodeFallbackCustomFirst
+C/econst/-/kUnicodeFallbackCustomOnly
+C/econst/-/kUnicodeFallbackDefaultFirst
+C/econst/-/kUnicodeFallbackDefaultOnly
+C/econst/-/kUnicodeFallbackInterruptSafeMask
+C/econst/-/kUnicodeFallbackSequencingMask
+C/econst/-/kUnicodeForceASCIIRangeBit
+C/econst/-/kUnicodeForceASCIIRangeMask
+C/econst/-/kUnicodeHFSPlusCompVariant
+C/econst/-/kUnicodeHFSPlusDecompVariant
+C/econst/-/kUnicodeKeepInfoBit
+C/econst/-/kUnicodeKeepInfoMask
+C/econst/-/kUnicodeKeepSameEncodingBit
+C/econst/-/kUnicodeKeepSameEncodingMask
+C/econst/-/kUnicodeLeftToRight
+C/econst/-/kUnicodeLeftToRightMask
+C/econst/-/kUnicodeLooseMappingsBit
+C/econst/-/kUnicodeLooseMappingsMask
+C/econst/-/kUnicodeMapLineFeedToReturnBit
+C/econst/-/kUnicodeMapLineFeedToReturnMask
+C/econst/-/kUnicodeMatchOtherBaseBit
+C/econst/-/kUnicodeMatchOtherBaseMask
+C/econst/-/kUnicodeMatchOtherFormatBit
+C/econst/-/kUnicodeMatchOtherFormatMask
+C/econst/-/kUnicodeMatchOtherVariantBit
+C/econst/-/kUnicodeMatchOtherVariantMask
+C/econst/-/kUnicodeMatchUnicodeBaseBit
+C/econst/-/kUnicodeMatchUnicodeBaseMask
+C/econst/-/kUnicodeMatchUnicodeFormatBit
+C/econst/-/kUnicodeMatchUnicodeFormatMask
+C/econst/-/kUnicodeMatchUnicodeVariantBit
+C/econst/-/kUnicodeMatchUnicodeVariantMask
+C/econst/-/kUnicodeMaxDecomposedVariant
+C/econst/-/kUnicodeNoComposedVariant
+C/econst/-/kUnicodeNoHalfwidthCharsBit
+C/econst/-/kUnicodeNoHalfwidthCharsMask
+C/econst/-/kUnicodeNoSubset
+C/econst/-/kUnicodeNotAChar
+C/econst/-/kUnicodeObjectReplacement
+C/econst/-/kUnicodeReplacementChar
+C/econst/-/kUnicodeRightToLeft
+C/econst/-/kUnicodeRightToLeftMask
+C/econst/-/kUnicodeStringUnterminatedBit
+C/econst/-/kUnicodeStringUnterminatedMask
+C/econst/-/kUnicodeSwappedByteOrderMark
+C/econst/-/kUnicodeTextBreakClass
+C/econst/-/kUnicodeTextRunBit
+C/econst/-/kUnicodeTextRunHeuristicsBit
+C/econst/-/kUnicodeTextRunHeuristicsMask
+C/econst/-/kUnicodeTextRunMask
+C/econst/-/kUnicodeUseFallbacksBit
+C/econst/-/kUnicodeUseFallbacksMask
+C/econst/-/kUnicodeUseHFSPlusMapping
+C/econst/-/kUnicodeUseLatestMapping
+C/econst/-/kUnicodeUTF7Format
+C/econst/-/kUnicodeUTF8Format
+C/econst/-/kUnicodeVerticalFormBit
+C/econst/-/kUnicodeVerticalFormMask
+C/econst/-/kUninitialized
+C/econst/-/kUnknownState
+C/macro/-/kUSB1284DeviceID
+C/macro/-/kUSBAlternateSetting
+C/macro/-/kUSBConfigurationValue
+C/macro/-/kUSBDeviceClass
+C/macro/-/kUSBDeviceMaxPacketSize
+C/macro/-/kUSBDeviceNumConfigs
+C/macro/-/kUSBDevicePropertySpeed
+C/macro/-/kUSBDeviceProtocol
+C/macro/-/kUSBDeviceReleaseNumber
+C/econst/USBDeviceSpeed/kUSBDeviceSpeedFull
+C/econst/USBDeviceSpeed/kUSBDeviceSpeedHigh
+C/econst/USBDeviceSpeed/kUSBDeviceSpeedLow
+C/macro/-/kUSBDeviceSubClass
+C/econst/MicrosecondsInFrame/kUSBFullSpeedMicrosecondsInFrame
+C/econst/MicrosecondsInFrame/kUSBHighSpeedMicrosecondsInFrame
+C/macro/-/kUSBInterfaceClass
+C/macro/-/kUSBInterfaceNumber
+C/macro/-/kUSBInterfaceProtocol
+C/macro/-/kUSBInterfaceStringIndex
+C/macro/-/kUSBInterfaceSubClass
+C/macro/-/kUSBManufacturerStringIndex
+C/tag/-/kUSBMaxIsocFrameReqCount
+C/macro/-/kUSBNumEndpoints
+C/macro/-/kUSBProductID
+C/macro/-/kUSBProductName
+C/macro/-/kUSBProductString
+C/macro/-/kUSBProductStringIndex
+C/macro/-/kUSBSerialNumberString
+C/macro/-/kUSBSerialNumberStringIndex
+C/macro/-/kUSBVendorID
+C/macro/-/kUSBVendorName
+C/macro/-/kUSBVendorString
+C/econst/-/kUseAtoB
+C/econst/-/kUseBtoA
+C/econst/-/kUseBtoB
+C/econst/-/kUseProfileIntent
+C/econst/-/kUserIDToName
+C/econst/-/kUserIDToUTF8Name
+C/econst/-/kUserIsOwner
+C/econst/-/kUserPPDDomain
+C/econst/-/kUserPreferredAlert
+C/econst/-/kUserUUIDToUTF8Name
+C/econst/-/kUseWidePositioning
+C/data/-/kUTExportedTypeDeclarationsKey
+C/econst/-/kUTF8NameToGroupID
+C/econst/-/kUTF8NameToGroupUUID
+C/econst/-/kUTF8NameToUserID
+C/econst/-/kUTF8NameToUserUUID
+C/econst/-/kUTF8SrvrMsg
+C/data/-/kUTImportedTypeDeclarationsKey
+C/data/-/kUTTagClassFilenameExtension
+C/data/-/kUTTagClassMIMEType
+C/data/-/kUTTagClassNSPboardType
+C/data/-/kUTTagClassOSType
+C/data/-/kUTTypeAliasFile
+C/data/-/kUTTypeAliasRecord
+C/data/-/kUTTypeAppleICNS
+C/data/-/kUTTypeAppleProtectedMPEG4Audio
+C/data/-/kUTTypeApplication
+C/data/-/kUTTypeApplicationBundle
+C/data/-/kUTTypeApplicationFile
+C/data/-/kUTTypeArchive
+C/data/-/kUTTypeAudio
+C/data/-/kUTTypeAudiovisualContent
+C/data/-/kUTTypeBMP
+C/data/-/kUTTypeBundle
+C/data/-/kUTTypeCHeader
+C/data/-/kUTTypeCompositeContent
+C/data/-/kUTTypeConformsToKey
+C/data/-/kUTTypeContact
+C/data/-/kUTTypeContent
+C/data/-/kUTTypeCPlusPlusHeader
+C/data/-/kUTTypeCPlusPlusSource
+C/data/-/kUTTypeCSource
+C/data/-/kUTTypeData
+C/data/-/kUTTypeDescriptionKey
+C/data/-/kUTTypeDirectory
+C/data/-/kUTTypeDiskImage
+C/data/-/kUTTypeFileURL
+C/data/-/kUTTypeFlatRTFD
+C/data/-/kUTTypeFolder
+C/data/-/kUTTypeFramework
+C/data/-/kUTTypeGIF
+C/data/-/kUTTypeHTML
+C/data/-/kUTTypeICO
+C/data/-/kUTTypeIconFileKey
+C/data/-/kUTTypeIdentifierKey
+C/data/-/kUTTypeImage
+C/data/-/kUTTypeInkText
+C/data/-/kUTTypeItem
+C/data/-/kUTTypeJavaSource
+C/data/-/kUTTypeJPEG
+C/data/-/kUTTypeJPEG2000
+C/data/-/kUTTypeMessage
+C/data/-/kUTTypeMountPoint
+C/data/-/kUTTypeMovie
+C/data/-/kUTTypeMP3
+C/data/-/kUTTypeMPEG
+C/data/-/kUTTypeMPEG4
+C/data/-/kUTTypeMPEG4Audio
+C/data/-/kUTTypeObjectiveCPlusPlusSource
+C/data/-/kUTTypeObjectiveCSource
+C/data/-/kUTTypePackage
+C/data/-/kUTTypePDF
+C/data/-/kUTTypePICT
+C/data/-/kUTTypePlainText
+C/data/-/kUTTypePNG
+C/data/-/kUTTypeQuickTimeImage
+C/data/-/kUTTypeQuickTimeMovie
+C/data/-/kUTTypeReferenceURLKey
+C/data/-/kUTTypeResolvable
+C/data/-/kUTTypeRTF
+C/data/-/kUTTypeRTFD
+C/data/-/kUTTypeSourceCode
+C/data/-/kUTTypeSymLink
+C/data/-/kUTTypeTagSpecificationKey
+C/data/-/kUTTypeText
+C/data/-/kUTTypeTIFF
+C/data/-/kUTTypeTXNTextAndMultimediaData
+C/data/-/kUTTypeURL
+C/data/-/kUTTypeUTF16ExternalPlainText
+C/data/-/kUTTypeUTF16PlainText
+C/data/-/kUTTypeUTF8PlainText
+C/data/-/kUTTypeVCard
+C/data/-/kUTTypeVersionKey
+C/data/-/kUTTypeVideo
+C/data/-/kUTTypeVolume
+C/data/-/kUTTypeWebArchive
+C/data/-/kUTTypeXML
+C/econst/-/kVCBFlagsHardwareGoneBit
+C/econst/-/kVCBFlagsHardwareGoneMask
+C/econst/-/kVCBFlagsHFSPlusAPIsBit
+C/econst/-/kVCBFlagsHFSPlusAPIsMask
+C/econst/-/kVCBFlagsIdleFlushBit
+C/econst/-/kVCBFlagsIdleFlushMask
+C/econst/-/kVCBFlagsVolumeDirtyBit
+C/econst/-/kVCBFlagsVolumeDirtyMask
+C/econst/-/kvImage_PNG_FILTER_VALUE_AVG
+C/econst/-/kvImage_PNG_FILTER_VALUE_NONE
+C/econst/-/kvImage_PNG_FILTER_VALUE_PAETH
+C/econst/-/kvImage_PNG_FILTER_VALUE_SUB
+C/econst/-/kvImage_PNG_FILTER_VALUE_UP
+C/econst/-/kvImageBackgroundColorFill
+C/econst/-/kvImageBufferSizeMismatch
+C/econst/-/kvImageCopyInPlace
+C/econst/-/kvImageDoNotTile
+C/econst/-/kvImageEdgeExtend
+C/econst/-/kvImageGamma_11_over_5_half_precision
+C/econst/-/kvImageGamma_11_over_9_half_precision
+C/econst/-/kvImageGamma_5_over_11_half_precision
+C/econst/-/kvImageGamma_5_over_9_half_precision
+C/econst/-/kvImageGamma_9_over_11_half_precision
+C/econst/-/kvImageGamma_9_over_5_half_precision
+C/econst/-/kvImageGamma_BT709_forward_half_precision
+C/econst/-/kvImageGamma_BT709_reverse_half_precision
+C/econst/-/kvImageGamma_sRGB_forward_half_precision
+C/econst/-/kvImageGamma_sRGB_reverse_half_precision
+C/econst/-/kvImageGamma_UseGammaValue
+C/econst/-/kvImageGamma_UseGammaValue_half_precision
+C/econst/-/kvImageGetTempBufferSize
+C/econst/-/kvImageHighQualityResampling
+C/econst/-/kvImageInvalidKernelSize
+C/econst/-/kvImageInvalidOffset_X
+C/econst/-/kvImageInvalidOffset_Y
+C/econst/-/kvImageInvalidParameter
+C/econst/-/kvImageLeaveAlphaUnchanged
+C/econst/-/kvImageMemoryAllocationError
+C/econst/-/kvImageNoEdgeStyleSpecified
+C/econst/-/kvImageNoError
+C/econst/-/kvImageNoFlags
+C/econst/-/kvImageNullPointerArgument
+C/econst/-/kvImageRoiLargerThanInputBuffer
+C/econst/-/kvImageTruncateKernel
+C/econst/-/kvImageUnknownFlagsBit
+C/econst/-/kWidePosOffsetBit
+C/econst/-/kWPGroup
+C/econst/-/kWPOther
+C/econst/-/kWPOwner
+C/econst/-/kWPUser
+C/data/-/kWSDebugIncomingBody
+C/data/-/kWSDebugIncomingHeaders
+C/data/-/kWSDebugOutgoingBody
+C/data/-/kWSDebugOutgoingHeaders
+C/data/-/kWSFaultCode
+C/data/-/kWSFaultExtra
+C/data/-/kWSFaultString
+C/data/-/kWSHTTPExtraHeaders
+C/data/-/kWSHTTPFollowsRedirects
+C/data/-/kWSHTTPMessage
+C/data/-/kWSHTTPProxy
+C/data/-/kWSHTTPResponseMessage
+C/data/-/kWSHTTPVersion
+C/data/-/kWSMethodInvocationResult
+C/data/-/kWSMethodInvocationResultParameterName
+C/data/-/kWSNetworkStreamFaultString
+C/data/-/kWSRecordNamespaceURI
+C/data/-/kWSRecordParameterOrder
+C/data/-/kWSRecordType
+C/data/-/kWSSOAP1999Protocol
+C/data/-/kWSSOAP2001Protocol
+C/data/-/kWSSOAPMessageHeaders
+C/data/-/kWSStreamErrorDomain
+C/data/-/kWSStreamErrorError
+C/data/-/kWSStreamErrorMessage
+C/data/-/kWSXMLRPCProtocol
+C/econst/-/kXAttrCreate
+C/econst/-/kXAttrNoFollow
+C/econst/-/kXAttrReplace
+C/func/-/l64a
+Objective-C/instm/IBInspector/label
+Objective-C/instm/IBPlugin/label
+Objective-C/instm/NSToolbarItem/label
+Objective-C/instm/NSNibConnector/label
+Objective-C/instm/PDFPage/label
+Objective-C/instm/PDFOutline/label
+Objective-C/instm/NSTabViewItem/label
+Objective-C/binding/NSTabViewItem/label
+JavaScript/data/DataGridColumn/label
+JavaScript/data/HTMLDataGridColElement/label
+JavaScript/data/HTMLOptionElement/label
+JavaScript/data/HTMLOptGroupElement/label
+JavaScript/data/HTMLDataGridCellElement/label
+Objective-C/instm/ABMultiValue/labelAtIndex:
+Objective-C/instm/PDFThumbnailView/labelFont
+Objective-C/clm/NSFont/labelFontOfSize:
+Objective-C/clm/NSFont/labelFontSize
+Objective-C/instm/ABMultiValue/labelForIdentifier:
+Objective-C/instm/NSSegmentedControl/labelForSegment:
+Objective-C/instm/NSSegmentedCell/labelForSegment:
+C/func/-/labs
+JavaScript/data/HTMLElement/lang
+C/econst/-/langIrishGaelic
+C/econst/-/langIrishGaelicScript
+C/econst/-/langSimpChinese
+C/econst/-/langTradChinese
+Objective-C/instm/NSSpellChecker/language
+Objective-C/instm/DRCDTextBlock(PropertyConvenienceMethods)/language
+JavaScript/data/Navigator/language
+Objective-C/instm/NSPrinter/languageLevel
+Objective-C/instm/NSOrthography/languageMap
+Objective-C/instp/NSOrthography/languageMap
+Objective-C/instm/NSOrthography/languagesForScript:
+JavaScript/data/SVGPathSegArcAbs/largeArcFlag
+JavaScript/data/SVGPathSegArcRel/largeArcFlag
+Objective-C/instm/NSObject/lastAnchorForEntityName:
+JavaScript/data/svg/lastChild
+JavaScript/data/core/lastChild
+JavaScript/instm/TreeWalker/lastChild
+Objective-C/instm/NSBrowser/lastColumn
+Objective-C/instm/NSDocument/lastComponentOfFileName
+C/econst/-/lastDskErr
+JavaScript/data/Element/lastElementChild
+JavaScript/instp/Channel/lastError
+Objective-C/instm/ISyncSessionDriver/lastError
+Objective-C/instp/PSFeed/lastError
+Objective-C/instm/SFAuthorizationPluginView/lastError
+JavaScript/data/MessageEvent/lastEventId
+Objective-C/instm/NSIndexSet/lastIndex
+Objective-C/instm/NSPopUpButton/lastItem
+Objective-C/instm/NSPopUpButtonCell/lastItem
+Objective-C/instm/NSPreferencePane/lastKeyView
+Objective-C/instm/SFAuthorizationPluginView/lastKeyView
+C/func/-/LastKnownRequestProcessed
+JavaScript/data/Document/lastModified
+Objective-C/instm/NSArray/lastObject
+Objective-C/instm/NSString/lastPathComponent
+Objective-C/instm/NSURL/lastPathComponent
+Objective-C/instm/ISyncClient/lastSyncDateForEntityName:
+Objective-C/instm/ISyncClient/lastSyncStatusForEntityName:
+Objective-C/intfm/ApertureExportPlugIn/lastView
+Objective-C/instm/NSBrowser/lastVisibleColumn
+Objective-C/instm/WebHistoryItem/lastVisitedTimeInterval
+JavaScript/instm/Console/lastWMLErrorMessage
+Objective-C/instm/NSDate/laterDate:
+JavaScript/data/Coordinates/latitude
+Objective-C/instm/NSTask/launch
+C/econst/-/launchAllow24Bit
+C/func/-/LaunchApplication
+Objective-C/instm/NSWorkspace/launchApplication:
+Objective-C/instm/NSWorkspace/launchApplication:showIcon:autolaunch:
+Objective-C/instm/NSWorkspace/launchApplicationAtURL:options:configuration:error:
+Objective-C/instm/NSWorkspace/launchAppWithBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifier:
+C/econst/-/launchContinue
+Objective-C/instm/NSRunningApplication/launchDate
+Objective-C/instp/NSRunningApplication/launchDate
+C/econst/-/launchDontSwitch
+Objective-C/instm/NSWorkspace/launchedApplications
+Objective-C/clm/NSTask/launchedTaskWithLaunchPath:arguments:
+Objective-C/instm/SBApplication/launchFlags
+C/tdef/-/LaunchFlags
+C/econst/-/launchInhibitDaemon
+C/econst/-/launchNoFileFlags
+C/tdef/-/LaunchParamBlockRec
+Objective-C/instm/NSTask/launchPath
+C/econst/-/launchUseMinimum
+Objective-C/instp/CARenderer/layer
+Objective-C/instm/CARenderer/layer
+C/func/-/Layer
+Objective-C/instm/NSView/layer
+Objective-C/clm/CALayer/layer
+Objective-C/instm/NSView/layerContentsPlacement
+Objective-C/instm/NSView/layerContentsRedrawPolicy
+Objective-C/instm/IKImageBrowserCell/layerForType:
+Objective-C/intfm/Fx3DAPI/layerMatrixAtTime:
+Objective-C/clm/QTMovieLayer/layerWithMovie:
+Objective-C/clm/QTCaptureLayer/layerWithSession:
+JavaScript/data/UIEvent/layerX
+JavaScript/data/UIEvent/layerY
+Objective-C/instm/NSAlert/layout
+Objective-C/intfm/WebDocumentView/layout
+Objective-C/instm/NSTextTable/layoutAlgorithm
+Objective-C/instm/NSTypesetter/layoutCharactersInRange:forLayoutManager:maximumNumberOfLineFragments:
+Objective-C/instm/PDFView/layoutDocumentView
+Objective-C/clm/DRBurn(ImageContentCreation)/layoutForImageFile:
+Objective-C/instm/NSTypesetter/layoutGlyphsInLayoutManager:startingAtGlyphIndex:maxNumberOfLineFragments:nextGlyphIndex:
+Objective-C/instm/CALayer/layoutIfNeeded
+Objective-C/instm/NSTextContainer/layoutManager
+Objective-C/clm/CAConstraintLayoutManager/layoutManager
+Objective-C/instm/NSATSTypesetter/layoutManager
+Objective-C/instm/NSTypesetter/layoutManager
+Objective-C/instm/NSTextView/layoutManager
+Objective-C/instp/CALayer/layoutManager
+Objective-C/instm/CALayer/layoutManager
+Objective-C/intfm/NSLayoutManagerDelegate/layoutManager:didCompleteLayoutForTextContainer:atEnd:
+Objective-C/intfm/NSLayoutManagerDelegate/layoutManager:shouldUseTemporaryAttributes:forDrawingToScreen:atCharacterIndex:effectiveRange:
+Objective-C/intfm/NSLayoutManagerDelegate/layoutManagerDidInvalidateLayout:
+Objective-C/instm/NSLayoutManager/layoutManagerOwnsFirstResponderInWindow:
+Objective-C/instm/NSTextStorage/layoutManagers
+Objective-C/intfm/NSGlyphStorage/layoutOptions
+Objective-C/instm/NSLayoutManager/layoutOptions
+Objective-C/instm/NSATSTypesetter/layoutParagraphAtPoint:
+Objective-C/instm/NSTypesetter/layoutParagraphAtPoint:
+Objective-C/instm/NSLayoutManager/layoutRectForTextBlock:atIndex:effectiveRange:
+Objective-C/instm/NSLayoutManager/layoutRectForTextBlock:glyphRange:
+Objective-C/instm/CALayer/layoutSublayers
+Objective-C/instm/NSObject/layoutSublayersOfLayer:
+C/func/-/lber-decode
+C/func/-/lber-encode
+C/func/-/lber-memory
+C/func/-/lber-sockbuf
+C/func/-/lber-types
+C/tag/-/lc_str
+C/func/-/lchflags
+C/func/-/lchmod
+C/func/-/lchown
+C/func/-/lck_mtx_lock
+C/func/-/lck_mtx_try_lock
+C/func/-/lck_mtx_unlock
+C/func/-/lcong48
+C/func/-/ld_errno
+C/func/-/ldap
+C/func/-/ldap_abandon
+C/func/-/ldap_abandon_ext
+C/func/-/ldap_add
+C/func/-/ldap_add_ext
+C/func/-/ldap_add_ext_s
+C/func/-/ldap_add_s
+C/func/-/ldap_attributetype2name
+C/func/-/ldap_attributetype2str
+C/func/-/ldap_attributetype_free
+C/func/-/ldap_bind
+C/func/-/ldap_bind_s
+C/func/-/ldap_compare
+C/func/-/ldap_compare_ext
+C/func/-/ldap_compare_ext_s
+C/func/-/ldap_compare_s
+C/func/-/ldap_control_create
+C/func/-/ldap_control_dup
+C/func/-/ldap_control_find
+C/func/-/ldap_control_free
+C/func/-/ldap_controls
+C/func/-/ldap_controls_dup
+C/func/-/ldap_controls_free
+C/func/-/ldap_count_entries
+C/func/-/ldap_count_messages
+C/func/-/ldap_count_references
+C/func/-/ldap_count_values
+C/func/-/ldap_count_values_len
+C/func/-/ldap_delete
+C/func/-/ldap_delete_ext
+C/func/-/ldap_delete_ext_s
+C/func/-/ldap_delete_s
+C/func/-/ldap_dn2ufn
+C/func/-/ldap_err2string
+C/func/-/ldap_errlist
+C/func/-/ldap_error
+C/func/-/ldap_explode_dn
+C/func/-/ldap_explode_rdn
+C/func/-/ldap_extended_operation
+C/func/-/ldap_extended_operation_s
+C/func/-/ldap_first_attribute
+C/func/-/ldap_first_entry
+C/func/-/ldap_first_message
+C/func/-/ldap_first_reference
+C/func/-/ldap_free_urldesc
+C/func/-/ldap_get_dn
+C/func/-/ldap_get_option
+C/func/-/ldap_get_values
+C/func/-/ldap_get_values_len
+C/func/-/ldap_init
+C/func/-/ldap_init_fd
+C/func/-/ldap_initialize
+C/func/-/ldap_install_tls
+C/func/-/ldap_is_ldap_url
+C/func/-/ldap_matchingrule2name
+C/func/-/ldap_matchingrule2str
+C/func/-/ldap_matchingrule_free
+C/func/-/ldap_memalloc
+C/func/-/ldap_memcalloc
+C/func/-/ldap_memfree
+C/func/-/ldap_memory
+C/func/-/ldap_memrealloc
+C/func/-/ldap_memvfree
+C/func/-/ldap_modify
+C/func/-/ldap_modify_ext
+C/func/-/ldap_modify_ext_s
+C/func/-/ldap_modify_s
+C/func/-/ldap_modrdn
+C/func/-/ldap_modrdn2
+C/func/-/ldap_modrdn2_s
+C/func/-/ldap_modrdn_s
+C/func/-/ldap_mods_free
+C/func/-/ldap_next_attribute
+C/func/-/ldap_next_entry
+C/func/-/ldap_next_message
+C/func/-/ldap_next_reference
+C/func/-/ldap_objectclass2name
+C/func/-/ldap_objectclass2str
+C/func/-/ldap_objectclass_free
+C/func/-/ldap_open
+C/func/-/ldap_parse_reference
+C/func/-/ldap_parse_result
+C/func/-/ldap_parse_sasl_bind_result
+C/func/-/ldap_parse_sort_control
+C/func/-/ldap_parse_vlv_control
+C/func/-/ldap_perror
+C/func/-/ldap_rename
+C/func/-/ldap_rename_s
+C/func/-/ldap_result
+C/func/-/ldap_result2error
+C/func/-/ldap_sasl_bind
+C/func/-/ldap_sasl_bind_s
+C/func/-/ldap_sasl_interactive_bind_s
+C/func/-/ldap_schema
+C/func/-/ldap_scherr2str
+C/func/-/ldap_search
+C/func/-/ldap_search_ext
+C/func/-/ldap_search_ext_s
+C/func/-/ldap_search_s
+C/func/-/ldap_search_st
+C/func/-/ldap_set_option
+C/func/-/ldap_set_rebind_proc
+C/func/-/ldap_simple_bind
+C/func/-/ldap_simple_bind_s
+C/func/-/ldap_sort
+C/func/-/ldap_sort_entries
+C/func/-/ldap_sort_strcasecmp
+C/func/-/ldap_sort_values
+C/func/-/ldap_start_tls
+C/func/-/ldap_start_tls_s
+C/func/-/ldap_str2attributetype
+C/func/-/ldap_str2dn
+C/func/-/ldap_str2matchingrule
+C/func/-/ldap_str2objectclass
+C/func/-/ldap_str2syntax
+C/func/-/ldap_strdup
+C/func/-/ldap_sync
+C/func/-/ldap_sync_destroy
+C/func/-/ldap_sync_init
+C/func/-/ldap_sync_init_refresh_and_persist
+C/func/-/ldap_sync_init_refresh_only
+C/func/-/ldap_sync_initialize
+C/func/-/ldap_sync_poll
+C/func/-/ldap_syntax2name
+C/func/-/ldap_syntax2str
+C/func/-/ldap_syntax_free
+C/func/-/ldap_tls
+C/func/-/ldap_tls_inplace
+C/func/-/ldap_unbind
+C/func/-/ldap_unbind_ext
+C/func/-/ldap_unbind_ext_s
+C/func/-/ldap_unbind_s
+C/func/-/ldap_url
+C/func/-/ldap_url_parse
+C/func/-/ldap_value_free
+C/func/-/ldap_value_free_len
+C/func/-/ldexp
+C/func/-/ldexpf
+C/func/-/ldexpl
+C/func/-/ldiv
+Objective-C/instm/NSFont/leading
+Objective-C/instm/NSDrawer/leadingOffset
+Objective-C/instm/NSTreeController/leafKeyPath
+Objective-C/instm/NSTreeController/leafKeyPathForNode:
+Objective-C/instm/NSSpellChecker/learnWord:
+C/func/-/leaveok
+JavaScript/data/ClientRect/left
+JavaScript/data/Rect/left
+Objective-C/instm/NSExpression/leftExpression
+Objective-C/instm/NSComparisonPredicate/leftExpression
+Objective-C/instm/NSPredicateEditorRowTemplate/leftExpressions
+Objective-C/instm/NSPrintInfo/leftMargin
+C/func/-/legacy_coding
+Objective-C/instm/NSStatusItem/length
+Objective-C/intfm/IMKTextInput/length
+Objective-C/instm/NSIndexPath/length
+Objective-C/instm/DRTrack(PropertyConvenience)/length
+Objective-C/instp/PSEnclosure/length
+Objective-C/instm/IOBluetoothSDPUUID/length
+Objective-C/instm/NSString/length
+Objective-C/instm/NSAttributedString/length
+Objective-C/instm/NSData/length
+JavaScript/data/CharacterData/length
+JavaScript/data/DOMWindow/length
+JavaScript/data/CSSStyleDeclaration/length
+JavaScript/data/CanvasNumberArray/length
+JavaScript/data/CSSRuleList/length
+JavaScript/data/CSSValueList/length
+JavaScript/data/ArrayBufferView/length
+JavaScript/data/ClientRectList/length
+JavaScript/data/CanvasPixelArray/length
+JavaScript/data/DataGridColumnList/length
+JavaScript/data/CSSVariablesDeclaration/length
+JavaScript/data/HTMLCollection/length
+JavaScript/data/window/length
+JavaScript/data/HTMLSelectElement/length
+JavaScript/data/HTMLOptionsCollection/length
+JavaScript/data/FileList/length
+JavaScript/data/HTMLAllCollection/length
+JavaScript/data/HTMLFormElement/length
+JavaScript/data/MimeTypeArray/length
+JavaScript/data/SVGElementInstanceList/length
+JavaScript/data/PluginArray/length
+JavaScript/data/StyleSheetList/length
+JavaScript/data/NodeList/length
+JavaScript/data/MediaList/length
+JavaScript/data/SQLResultSetRowList/length
+JavaScript/data/Storage/length
+JavaScript/data/NamedNodeMap/length
+JavaScript/data/Plugin/length
+JavaScript/data/TimeRanges/length
+JavaScript/data/TouchList/length
+JavaScript/data/SVGTextContentElement/lengthAdjust
+JavaScript/clconst/SVGTextContentElement/LENGTHADJUST_SPACING
+JavaScript/clconst/SVGTextContentElement/LENGTHADJUST_SPACINGANDGLYPHS
+JavaScript/clconst/SVGTextContentElement/LENGTHADJUST_UNKNOWN
+JavaScript/data/ProgressEvent/lengthComputable
+Objective-C/instm/QTSampleBuffer/lengthForAllSamples
+Objective-C/instm/NSString/lengthOfBytesUsingEncoding:
+JavaScript/clconst/WebGLRenderingContext/LEQUAL
+JavaScript/clconst/WebGLRenderingContext/LESS
+Objective-C/clm/NSCharacterSet/letterCharacterSet
+Objective-C/instm/NSDirectoryEnumerator/level
+Objective-C/instm/NSXMLNode/level
+Objective-C/instm/NSWindow/level
+Objective-C/instm/NSOutlineView/levelForItem:
+Objective-C/instm/NSOutlineView/levelForRow:
+Objective-C/instm/NSLevelIndicatorCell/levelIndicatorStyle
+Objective-C/instp/CATiledLayer/levelsOfDetail
+Objective-C/instm/CATiledLayer/levelsOfDetail
+Objective-C/instm/CATiledLayer/levelsOfDetailBias
+Objective-C/instp/CATiledLayer/levelsOfDetailBias
+Objective-C/instm/NSUndoManager/levelsOfUndo
+C/func/-/lfind
+C/func/-/lgamma
+C/func/-/lgamma_r
+C/func/-/lgammaf
+C/func/-/lgammaf_r
+C/func/-/lgammal
+C/func/-/lgammal_r
+C/func/-/lh_delete
+C/func/-/lh_doall
+C/func/-/lh_doall_arg
+C/func/-/lh_error
+C/func/-/lh_free
+C/func/-/lh_insert
+C/func/-/lh_new
+C/func/-/lh_node_stats
+C/func/-/lh_node_stats_bio
+C/func/-/lh_node_usage_stats
+C/func/-/lh_node_usage_stats_bio
+C/func/-/lh_retrieve
+C/func/-/lh_stats
+C/func/-/lh_stats_bio
+C/func/-/lhash
+C/func/-/libbsm
+C/func/-/libcurl
+C/func/-/libcurl-easy
+C/func/-/libcurl-errors
+C/func/-/libcurl-multi
+C/func/-/libcurl-share
+C/func/-/libcurl-tutorial
+C/func/-/libexslt
+C/macro/-/LIBEXSLT_DOTTED_VERSION
+C/macro/-/LIBEXSLT_VERSION
+C/macro/-/LIBEXSLT_VERSION_EXTRA
+C/macro/-/LIBEXSLT_VERSION_STRING
+C/func/-/libgmalloc
+C/func/-/libpng
+C/func/-/libpngpf
+Objective-C/instm/IBPlugin/libraryNibNames
+C/func/-/libxml
+C/macro/-/LIBXML_DOTTED_VERSION
+C/macro/-/LIBXML_TEST_VERSION
+C/macro/-/LIBXML_VERSION
+C/macro/-/LIBXML_VERSION_EXTRA
+C/macro/-/LIBXML_VERSION_STRING
+C/func/-/libXp
+C/func/-/libxslt
+C/macro/-/LIBXSLT_DOTTED_VERSION
+C/macro/-/LIBXSLT_VERSION
+C/macro/-/LIBXSLT_VERSION_EXTRA
+C/macro/-/LIBXSLT_VERSION_STRING
+Objective-C/instm/CAEmitterLayer/lifetime
+Objective-C/instp/CAEmitterCell/lifetime
+Objective-C/instm/CAEmitterCell/lifetime
+Objective-C/instp/CAEmitterLayer/lifetime
+Objective-C/instm/CAEmitterCell/lifetimeRange
+Objective-C/instp/CAEmitterCell/lifetimeRange
+Objective-C/clm/NSColor/lightGrayColor
+Objective-C/instm/NSRunLoop/limitDateForMode:
+JavaScript/data/SVGFESpotLightElement/limitingConeAngle
+C++/instm/TestFailure/line
+JavaScript/data/JavaScriptCallFrame/line
+JavaScript/clconst/WebGLRenderingContext/LINE_LOOP
+JavaScript/clconst/WebGLRenderingContext/LINE_STRIP
+JavaScript/clconst/WebGLRenderingContext/LINE_WIDTH
+JavaScript/clconst/WebGLRenderingContext/LINEAR
+JavaScript/clconst/WebGLRenderingContext/LINEAR_MIPMAP_LINEAR
+JavaScript/clconst/WebGLRenderingContext/LINEAR_MIPMAP_NEAREST
+Objective-C/instm/DOMNode/lineBoxRects
+Objective-C/instm/NSAttributedString/lineBreakBeforeIndex:withinRange:
+Objective-C/instm/NSAttributedString/lineBreakByHyphenatingBeforeIndex:withinRange:
+Objective-C/instm/NSParagraphStyle/lineBreakMode
+Objective-C/instm/NSCell/lineBreakMode
+Objective-C/instp/CAShapeLayer/lineCap
+Objective-C/instm/CAShapeLayer/lineCap
+JavaScript/data/CanvasRenderingContext2D/lineCap
+Objective-C/instm/NSBezierPath/lineCapStyle
+Objective-C/instm/CAShapeLayer/lineDashPattern
+Objective-C/instp/CAShapeLayer/lineDashPattern
+Objective-C/instp/CAShapeLayer/lineDashPhase
+Objective-C/instm/CAShapeLayer/lineDashPhase
+Objective-C/clm/NSLocale/lineDirectionForLanguage:
+Objective-C/instm/NSTextContainer/lineFragmentPadding
+Objective-C/instm/NSATSTypesetter/lineFragmentPadding
+Objective-C/instm/NSTypesetter/lineFragmentPadding
+Objective-C/instm/NSLayoutManager/lineFragmentRectForGlyphAtIndex:effectiveRange:
+Objective-C/instm/NSLayoutManager/lineFragmentRectForGlyphAtIndex:effectiveRange:withoutAdditionalLayout:
+Objective-C/instm/NSATSTypesetter/lineFragmentRectForProposedRect:remainingRect:
+Objective-C/instm/NSTextContainer/lineFragmentRectForProposedRect:sweepDirection:movementDirection:remainingRect:
+Objective-C/instm/NSLayoutManager/lineFragmentUsedRectForGlyphAtIndex:effectiveRange:
+Objective-C/instm/NSLayoutManager/lineFragmentUsedRectForGlyphAtIndex:effectiveRange:withoutAdditionalLayout:
+Objective-C/instm/NSParagraphStyle/lineHeightMultiple
+Objective-C/instm/CAShapeLayer/lineJoin
+Objective-C/instp/CAShapeLayer/lineJoin
+JavaScript/data/CanvasRenderingContext2D/lineJoin
+Objective-C/instm/NSBezierPath/lineJoinStyle
+JavaScript/data/ErrorEvent/lineno
+Objective-C/instm/NSXMLParser/lineNumber
+JavaScript/data/ScriptProfileNode/lineNumber
+Objective-C/instm/NSString/lineRangeForRange:
+JavaScript/clconst/WebGLRenderingContext/LINES
+Objective-C/instm/NSScrollView/lineScroll
+Objective-C/instm/NSParagraphStyle/lineSpacing
+Objective-C/instm/NSATSTypesetter/lineSpacingAfterGlyphAtIndex:withProposedLineFragmentRect:
+Objective-C/instm/NSTypesetter/lineSpacingAfterGlyphAtIndex:withProposedLineFragmentRect:
+JavaScript/instm/CanvasRenderingContext2D/lineTo
+Objective-C/instm/NSBezierPath/lineToPoint:
+Objective-C/instm/PDFBorder/lineWidth
+Objective-C/instm/NSBezierPath/lineWidth
+Objective-C/instm/CAShapeLayer/lineWidth
+Objective-C/instp/CAShapeLayer/lineWidth
+JavaScript/data/CanvasRenderingContext2D/lineWidth
+JavaScript/instm/WebGLRenderingContext/lineWidth
+C/func/-/link
+JavaScript/data/HTMLBodyElement/link
+C/func/-/link_addr
+C/func/-/link_fieldtype
+C/func/-/link_ntoa
+JavaScript/clconst/WebGLRenderingContext/LINK_STATUS
+C/func/-/linkaddr
+Objective-C/clm/NSTextCheckingResult/linkCheckingResultWithRange:URL:
+JavaScript/data/HTMLDocument/linkColor
+Objective-C/instm/NSFileManager/linkItemAtPath:toPath:error:
+Objective-C/instm/NSFileManager/linkItemAtURL:toURL:error:
+Objective-C/instp/PSLink/linkKind
+Objective-C/instm/NSFileManager/linkPath:toPath:handler:
+JavaScript/instm/WebGLRenderingContext/linkProgram
+Objective-C/instp/PSFeed/links
+JavaScript/data/Document/links
+Objective-C/clm/PSLink/linksInXML:baseURL:
+Objective-C/instm/NSTextView/linkTextAttributes
+JavaScript/data/HTMLInputElement/list
+C/func/-/LIST_EMPTY
+C/func/-/LIST_ENTRY
+C/func/-/LIST_FIRST
+C/func/-/LIST_FOREACH
+C/func/-/LIST_FOREACH_SAFE
+C/func/-/LIST_HEAD
+C/func/-/LIST_HEAD_INITIALIZER
+C/func/-/LIST_INIT
+C/func/-/LIST_INSERT_AFTER
+C/func/-/LIST_INSERT_BEFORE
+C/func/-/LIST_INSERT_HEAD
+C/func/-/LIST_NEXT
+C/func/-/LIST_REMOVE
+Objective-C/clm/NSAppleEventDescriptor/listDescriptor
+C/func/-/listen
+Objective-C/instm/NSSpeechRecognizer/listensInForegroundOnly
+Objective-C/instm/NSTextList/listOptions
+JavaScript/data/Counter/listStyle
+C/func/-/listxattr
+C++/macro/-/littleOutputSegment
+C/tdef/-/LittleSInt16
+C/tdef/-/LittleSInt32
+C/tdef/-/LittleSInt64
+C/tdef/-/LittleUInt16
+C/tdef/-/LittleUInt32
+C/tdef/-/LittleUInt64
+C/func/-/llabs
+C/func/-/lldiv
+C/func/-/llrint
+C/func/-/llrintf
+C/func/-/llrintl
+C/func/-/llround
+C/func/-/llroundf
+C/func/-/llroundl
+Objective-C/clm/NSObject/load
+Objective-C/instm/NSBundle/load
+JavaScript/instm/HTMLMediaElement/load
+Objective-C/intfm/CIPlugInRegistration/load:
+Objective-C/instm/NSAtomicStore/load:
+C/tag/-/load_command
+Objective-C/clm/CIPlugIn/loadAllPlugIns
+Objective-C/instm/WebFrame/loadAlternateHTMLString:baseURL:forUnreachableURL:
+Objective-C/instm/NSBundle/loadAndReturnError:
+Objective-C/instm/WebFrame/loadArchive:
+Objective-C/instm/NSBrowser/loadColumnZero
+Objective-C/instm/QCView/loadComposition:
+Objective-C/instm/QCView/loadCompositionFromFile:
+Objective-C/instm/WebFrame/loadData:MIMEType:textEncodingName:baseURL:
+Objective-C/instm/NSDocument/loadDataRepresentation:ofType:
+JavaScript/instm/InspectorFrontendHost/loaded
+JavaScript/data/ProgressEvent/loaded
+Objective-C/instm/NSBrowser/loadedCellAtRow:column:
+Objective-C/instm/QCView/loadedComposition
+Objective-C/instm/NSDocument/loadFileWrapperRepresentation:ofType:
+Objective-C/instm/WebHistory/loadFromURL:error:
+Objective-C/instm/WebFrame/loadHTMLString:baseURL:
+Objective-C/instm/NSURLHandle/loadInBackground
+Objective-C/instm/NSURLHandle/loadInForeground
+JavaScript/clconst/FileReader/LOADING
+JavaScript/clconst/IDBRequest/LOADING
+JavaScript/clconst/XMLHttpRequest/LOADING
+Objective-C/instm/NSPreferencePane/loadMainView
+Objective-C/instm/NSPersistentStore/loadMetadata:
+Objective-C/instm/NSBundle/loadNibFile:externalNameTable:withZone:
+Objective-C/clm/NSBundle/loadNibFile:externalNameTable:withZone:
+Objective-C/clm/NSBundle/loadNibNamed:owner:
+Objective-C/clm/CIPlugIn/loadNonExecutablePlugIns
+Objective-C/clm/CIPlugIn/loadPlugIn:allowNonExecutable:
+Objective-C/clm/QCPlugIn/loadPlugInAtPath:
+Objective-C/instm/WebFrame/loadRequest:
+C/func/-/LoadResource
+Objective-C/instm/NSURL/loadResourceDataNotifyingClient:usingCache:
+Objective-C/instm/WebPreferences/loadsImagesAutomatically
+Objective-C/instm/NSScriptSuiteRegistry/loadSuitesFromBundle:
+Objective-C/instm/NSScriptSuiteRegistry/loadSuiteWithDictionary:fromBundle:
+Objective-C/instm/NSViewController/loadView
+Objective-C/instm/NSWindowController/loadWindow
+JavaScript/clconst/JavaScriptCallFrame/LOCAL_SCOPE
+Objective-C/instp/PSEntry/localDateCreated
+Objective-C/instp/PSEntry/localDateUpdated
+Objective-C/instp/PSFeed/localDateUpdated
+Objective-C/instm/NSDatePicker/locale
+Objective-C/instm/NSDateFormatter/locale
+Objective-C/instm/NSDatePickerCell/locale
+Objective-C/instm/NSCalendar/locale
+Objective-C/instm/NSScanner/locale
+Objective-C/instm/NSNumberFormatter/locale
+C/func/-/localeconv
+C/func/-/localeconv_l
+Objective-C/instm/NSLocale/localeIdentifier
+Objective-C/clm/NSLocale/localeIdentifierFromComponents:
+Objective-C/clm/NSLocale/localeIdentifierFromWindowsLocaleCode:
+Objective-C/clm/CBIdentityAuthority/localIdentityAuthority
+Objective-C/instm/NSManagedObjectModel/localizationDictionary
+Objective-C/instm/NSBundle/localizations
+Objective-C/instm/NSString/localizedCaseInsensitiveCompare:
+Objective-C/instm/NSColor/localizedCatalogNameComponent
+Objective-C/instm/NSColor/localizedColorNameComponent
+Objective-C/instm/NSString/localizedCompare:
+Objective-C/instm/QTCompressionOptions/localizedCompressionOptionsSummary
+Objective-C/instm/NSError/localizedDescription
+Objective-C/clm/CIFilter/localizedDescriptionForFilterName:
+Objective-C/instm/NSWorkspace/localizedDescriptionForType:
+Objective-C/instm/QTCaptureDevice/localizedDisplayName
+Objective-C/instm/QTCompressionOptions/localizedDisplayName
+Objective-C/instm/NSError/localizedFailureReason
+Objective-C/instm/QTFormatDescription/localizedFormatSummary
+Objective-C/instm/NSBundle/localizedInfoDictionary
+Objective-C/instm/NSObject/localizedKey
+Objective-C/instm/NSDictionaryController/localizedKeyDictionary
+Objective-C/binding/NSDictionaryController/localizedKeyDictionary
+Objective-C/instm/NSDictionaryController/localizedKeyTable
+Objective-C/instm/CBIdentityAuthority/localizedName
+Objective-C/instm/NSColorSpace/localizedName
+Objective-C/instm/IMService/localizedName
+Objective-C/instp/NSRunningApplication/localizedName
+Objective-C/instm/NSRunningApplication/localizedName
+Objective-C/instm/NSHost/localizedName
+Objective-C/instm/NSTimeZone/localizedName:locale:
+Objective-C/clm/CIFilter/localizedNameForCategory:
+Objective-C/instm/NSFontManager/localizedNameForFamily:face:
+Objective-C/clm/CIFilter/localizedNameForFilterName:
+Objective-C/clm/NSTextInputContext/localizedNameForInputSource:
+Objective-C/clm/NSBitmapImageRep/localizedNameForTIFFCompressionType:
+Objective-C/clm/NSString/localizedNameOfStringEncoding:
+Objective-C/instm/NSPrintInfo/localizedPaperName
+Objective-C/instm/NSError/localizedRecoveryOptions
+Objective-C/instm/NSError/localizedRecoverySuggestion
+Objective-C/clm/CIFilter/localizedReferenceDocumentationForFilterName:
+Objective-C/clm/NSScanner/localizedScannerWithString:
+Objective-C/instm/IMService/localizedShortName
+Objective-C/instm/NSString/localizedStandardCompare:
+Objective-C/instm/NSBundle/localizedStringForKey:value:table:
+Objective-C/clm/NSHTTPURLResponse/localizedStringForStatusCode:
+Objective-C/clm/NSDateFormatter/localizedStringFromDate:dateStyle:timeStyle:
+Objective-C/clm/NSNumberFormatter/localizedStringFromNumber:numberStyle:
+JavaScript/instm/InspectorFrontendHost/localizedStringsURL
+Objective-C/clm/NSString/localizedStringWithFormat:
+Objective-C/intfm/NSPrintPanelAccessorizing/localizedSummaryItems
+Objective-C/intfm/NSUserInterfaceItemSearching/localizedTitlesForItem:
+Objective-C/instm/NSNumberFormatter/localizesFormat
+Objective-C/instm/NSXMLNode/localName
+JavaScript/data/core/localName
+Objective-C/clm/NSXMLNode/localNameForName:
+Objective-C/instm/NSConnection/localObjects
+JavaScript/data/DOMWindow/localStorage
+C/func/-/localtime
+C/func/-/localtime_r
+Objective-C/clm/NSTimeZone/localTimeZone
+Objective-C/instm/NSTextTab/location
+Objective-C/instm/CalEvent/location
+Objective-C/instp/CalEvent/location
+Objective-C/instp/CLLocationManager/location
+Objective-C/instm/CLLocationManager/location
+JavaScript/data/Document/location
+JavaScript/data/DOMWindow/location
+JavaScript/data/HTMLFrameElement/location
+JavaScript/data/WorkerContext/location
+JavaScript/data/DOMWindow/locationbar
+Objective-C/instm/NSLayoutManager/locationForGlyphAtIndex:
+Objective-C/instm/NSMenuView/locationForSubmenu:
+Objective-C/instm/NSMenu/locationForSubmenu:
+Objective-C/instm/NSEvent/locationInWindow
+Objective-C/intfm/CLLocationManagerDelegate/locationManager:didFailWithError:
+Objective-C/intfm/CLLocationManagerDelegate/locationManager:didUpdateToLocation:fromLocation:
+Objective-C/instm/NSView/locationOfPrintRect:
+Objective-C/instm/CAGradientLayer/locations
+Objective-C/instp/CAGradientLayer/locations
+Objective-C/instm/CLLocationManager/locationServicesEnabled
+Objective-C/clm/CLLocationManager/locationServicesEnabled
+Objective-C/instp/CLLocationManager/locationServicesEnabled
+Objective-C/intfm/NSLocking/lock
+Objective-C/instm/NSPersistentStoreCoordinator/lock
+C++/instm/IONetworkInterface/lock
+Objective-C/clm/CATransaction/lock
+C++/clm/IOKernelDebugger/lock
+Objective-C/instm/NSManagedObjectContext/lock
+Objective-C/instm/NSConditionLock/lockBeforeDate:
+Objective-C/instm/NSRecursiveLock/lockBeforeDate:
+Objective-C/instm/NSLock/lockBeforeDate:
+Objective-C/intfm/QCPlugInInputImageSource/lockBufferRepresentationWithPixelFormat:colorSpace:forBounds:
+Objective-C/instm/NSDistributedLock/lockDate
+C++/instm/IOPacketQueue/lockDequeue
+C++/instm/IOPacketQueue/lockDequeueAll
+C++/instm/IOPacketQueue/lockEnqueue
+C++/instm/IOPacketQueue/lockEnqueueWithDrop
+C/func/-/lockf
+C++/instm/IOPacketQueue/lockFlush
+Objective-C/instm/NSImage/lockFocus
+Objective-C/instm/NSView/lockFocus
+Objective-C/instm/NSImage/lockFocusFlipped:
+Objective-C/instm/NSView/lockFocusIfCanDraw
+Objective-C/instm/NSView/lockFocusIfCanDrawInContext:
+Objective-C/instm/NSImage/lockFocusOnRepresentation:
+C++/instm/IOService/lockForArbitration
+C++/instm/IOBlockStorageDriver/lockMedia
+C++/instm/IOPacketQueue/lockPrepend
+Objective-C/intfm/ApertureExportPlugIn/lockProgress
+Objective-C/intfm/QCPlugInInputImageSource/lockTextureRepresentationWithColorSpace:forBounds:
+Objective-C/instm/NSConditionLock/lockWhenCondition:
+Objective-C/instm/NSConditionLock/lockWhenCondition:beforeDate:
+Objective-C/clm/NSDistributedLock/lockWithPath:
+JavaScript/instm/Application/log
+C/func/-/log
+JavaScript/instm/Console/log
+C/func/-/log10
+C/func/-/log10f
+C/func/-/log10l
+C/func/-/log1p
+C/func/-/log1pf
+C/func/-/log1pl
+C/func/-/log2
+C/func/-/log2f
+C/func/-/log2l
+C/func/-/logb
+C/func/-/logbf
+C/func/-/logbl
+C/func/-/logf
+C++/instm/IOSCSIProtocolInterface/LogicalUnitReset
+Objective-C/instp/PSFeed/login
+C/func/-/login
+C/func/-/login_tty
+C++/instm/IOFireWireSerialBusProtocolTransport/LoginCompletion
+C/func/-/logl
+Objective-C/intfm/QCPlugInContext/logMessage:
+Objective-C/instp/PSFeed/logoURL
+C/func/-/logout
+C++/instm/IOFireWireSerialBusProtocolTransport/LogoutCompletion
+C/func/-/logwtmp
+Objective-C/instm/NSCharacterSet/longCharacterIsMember:
+JavaScript/data/HTMLImageElement/longDesc
+JavaScript/data/HTMLIFrameElement/longDesc
+JavaScript/data/HTMLFrameElement/longDesc
+Objective-C/instm/NSDateFormatter/longEraSymbols
+JavaScript/data/Coordinates/longitude
+C/func/-/longjmp
+C/func/-/longjmperr
+C/func/-/longjmperror
+C/tdef/-/LongLBAModeParameterBlockDescriptor
+JavaScript/data/TestObj/longLongAttr
+Objective-C/instm/NSNumber/longLongValue
+Objective-C/instm/NSString/longLongValue
+C/func/-/longname
+Objective-C/instm/NSNumber/longValue
+JavaScript/instm/core/lookupNamespaceURI
+JavaScript/instm/XPathNSResolver/lookupNamespaceURI
+JavaScript/instm/core/lookupPrefix
+JavaScript/data/HTMLMediaElement/loop
+C++/data/IOWorkLoop/loopRestart
+Objective-C/instm/NSSound/loops
+Objective-C/instm/NSTextView/loosenKerning:
+Objective-C/instm/NSString/lossyCString
+JavaScript/data/HTMLMeterElement/low
+JavaScript/clconst/WebGLRenderingContext/LOW_FLOAT
+JavaScript/clconst/WebGLRenderingContext/LOW_INT
+Objective-C/instm/NSTextView/lowerBaseline:
+Objective-C/clm/NSCharacterSet/lowercaseLetterCharacterSet
+Objective-C/instm/NSString/lowercaseString
+Objective-C/instm/NSResponder/lowercaseWord:
+JavaScript/data/HTMLImageElement/lowsrc
+C/func/-/lrand48
+C/func/-/lrint
+C/func/-/lrintf
+C/func/-/lrintl
+C/func/-/lround
+C/func/-/lroundf
+C/func/-/lroundl
+C/tdef/-/LSAcceptanceFlags
+C/tdef/-/LSApplicationParameters
+C/func/-/LSCanRefAcceptItem
+C/func/-/LSCanURLAcceptURL
+C/func/-/LSCopyAllHandlersForURLScheme
+C/func/-/LSCopyAllRoleHandlersForContentType
+C/func/-/LSCopyApplicationForMIMEType
+C/func/-/LSCopyApplicationURLsForURL
+C/func/-/LSCopyDefaultHandlerForURLScheme
+C/func/-/LSCopyDefaultRoleHandlerForContentType
+C/func/-/LSCopyDisplayNameForRef
+C/func/-/LSCopyDisplayNameForURL
+C/func/-/LSCopyItemAttribute
+C/func/-/LSCopyItemAttributes
+C/func/-/LSCopyItemInfoForRef
+C/func/-/LSCopyItemInfoForURL
+C/func/-/LSCopyKindStringForMIMEType
+C/func/-/LSCopyKindStringForRef
+C/func/-/LSCopyKindStringForTypeInfo
+C/func/-/LSCopyKindStringForURL
+C/func/-/lsearch
+C/func/-/lseek
+C/func/-/LSFindApplicationForInfo
+C/func/-/LSGetApplicationForInfo
+C/func/-/LSGetApplicationForItem
+C/func/-/LSGetApplicationForURL
+C/func/-/LSGetExtensionInfo
+C/func/-/LSGetHandlerOptionsForContentType
+C/tdef/-/LSHandlerOptions
+C/func/-/LSInit
+C/tdef/-/LSInitializeFlags
+C/tdef/-/LSItemInfoFlags
+C/tdef/-/LSItemInfoRecord
+C/tdef/-/LSKindID
+C/tdef/-/LSLaunchFlags
+C/tdef/-/LSLaunchFSRefSpec
+C/tdef/-/LSLaunchURLSpec
+C/tdef/-/LSMCategory
+C/func/-/LSMMapAddCategory
+C/func/-/LSMMapAddText
+C/func/-/LSMMapAddTextWithWeight
+C/func/-/LSMMapApplyClusters
+C/func/-/LSMMapCompile
+C/func/-/LSMMapCreate
+C/func/-/LSMMapCreateClusters
+C/func/-/LSMMapCreateFromURL
+C/func/-/LSMMapGetCategoryCount
+C/func/-/LSMMapGetProperties
+C/func/-/LSMMapGetTypeID
+C/tdef/-/LSMMapRef
+C/func/-/LSMMapSetProperties
+C/func/-/LSMMapSetStopWords
+C/func/-/LSMMapStartTraining
+C/func/-/LSMMapWriteToStream
+C/func/-/LSMMapWriteToURL
+C/func/-/LSMResultCopyToken
+C/func/-/LSMResultCopyTokenCluster
+C/func/-/LSMResultCopyWord
+C/func/-/LSMResultCopyWordCluster
+C/func/-/LSMResultCreate
+C/func/-/LSMResultGetCategory
+C/func/-/LSMResultGetCount
+C/func/-/LSMResultGetScore
+C/func/-/LSMResultGetTypeID
+C/tdef/-/LSMResultRef
+C/func/-/LSMTextAddToken
+C/func/-/LSMTextAddWord
+C/func/-/LSMTextAddWords
+C/func/-/LSMTextCreate
+C/func/-/LSMTextGetTypeID
+C/tdef/-/LSMTextRef
+C/func/-/LSOpenApplication
+C/func/-/LSOpenCFURLRef
+C/func/-/LSOpenFromRefSpec
+C/func/-/LSOpenFromURLSpec
+C/func/-/LSOpenFSRef
+C/func/-/LSOpenItemsWithRole
+C/func/-/LSOpenURLsWithRole
+C/func/-/LSRegisterFSRef
+C/func/-/LSRegisterURL
+C/tdef/-/LSRequestedInfo
+C/tdef/-/LSRolesMask
+C/func/-/LSSetDefaultHandlerForURLScheme
+C/func/-/LSSetDefaultRoleHandlerForContentType
+C/func/-/LSSetExtensionHiddenForRef
+C/func/-/LSSetExtensionHiddenForURL
+C/func/-/LSSetHandlerOptionsForContentType
+C/func/-/lstat
+C/func/-/lstat64
+C/func/-/LSTerm
+JavaScript/clconst/WebGLRenderingContext/LUMINANCE
+JavaScript/clconst/WebGLRenderingContext/LUMINANCE_ALPHA
+C++/instm/IOFireWireSerialBusProtocolTransport/LunResetComplete
+C/func/-/lutimes
+JavaScript/data/WebKitCSSMatrix/m11
+JavaScript/data/WebKitCSSMatrix/m12
+JavaScript/data/WebKitCSSMatrix/m13
+JavaScript/data/WebKitCSSMatrix/m14
+JavaScript/data/WebKitCSSMatrix/m21
+JavaScript/data/WebKitCSSMatrix/m22
+JavaScript/data/WebKitCSSMatrix/m23
+JavaScript/data/WebKitCSSMatrix/m24
+JavaScript/data/WebKitCSSMatrix/m31
+JavaScript/data/WebKitCSSMatrix/m32
+JavaScript/data/WebKitCSSMatrix/m33
+JavaScript/data/WebKitCSSMatrix/m34
+JavaScript/data/WebKitCSSMatrix/m41
+JavaScript/data/WebKitCSSMatrix/m42
+JavaScript/data/WebKitCSSMatrix/m43
+JavaScript/data/WebKitCSSMatrix/m44
+C/func/-/Mac::Errors
+C/func/-/Mac::Errors5.10.0
+C/func/-/Mac::Errors5.8.9
+C/tag/-/mac_module_data_element
+C/macro/-/MAC_NOWAIT
+C/tag/-/mac_policy_conf
+C/tdef/-/mac_policy_handle_t
+C/tag/-/mac_policy_ops
+C/func/-/mac_policy_register
+C/func/-/mac_policy_unregister
+C/tdef/-/mac_proc_check_run_cs_invalid_t
+C/macro/-/MAC_WAITOK
+C/tag/-/Mach
+C/tag/-/mach_header
+C/tag/-/mach_header_64
+Objective-C/instm/NSMachPort/machPort
+C++/cl/-/MacIOATA
+C/func/-/macro
+C/func/-/madvise
+Objective-C/clm/NSColor/magentaColor
+Objective-C/instm/NSColor/magentaComponent
+C/tdef/-/MagicCookieInfo
+Objective-C/instm/NSEvent/magnification
+Objective-C/instm/CAEmitterCell/magnificationFilter
+Objective-C/instp/CAEmitterCell/magnificationFilter
+Objective-C/instm/CALayer/magnificationFilter
+Objective-C/instp/CALayer/magnificationFilter
+Objective-C/instm/NSResponder/magnifyWithEvent:
+Objective-C/instm/NSOperation/main
+Objective-C/instm/NSThread/main
+Objective-C/clm/NSBundle/mainBundle
+Objective-C/instm/NSURLRequest/mainDocumentURL
+Objective-C/instm/WebView/mainFrame
+Objective-C/instm/WebView/mainFrameDocument
+Objective-C/instm/WebView/mainFrameIcon
+Objective-C/instm/WebView/mainFrameTitle
+Objective-C/instm/WebView/mainFrameURL
+Objective-C/instm/NSApplication/mainMenu
+Objective-C/instm/NSPreferencePane/mainNibName
+Objective-C/clm/NSOperationQueue/mainQueue
+Objective-C/instm/WebDataSource/mainResource
+Objective-C/instm/WebArchive/mainResource
+Objective-C/clm/NSRunLoop/mainRunLoop
+Objective-C/clm/NSScreen/mainScreen
+Objective-C/instm/WebView/maintainsInactiveSelection
+C++/tdef/IOWorkLoop/maintCommandEnum
+Objective-C/clm/NSThread/mainThread
+Objective-C/instm/NSPreferencePane/mainView
+Objective-C/instm/NSPreferencePane/mainViewDidLoad
+Objective-C/instm/NSApplication/mainWindow
+Objective-C/instm/PDFDocument/majorVersion
+Objective-C/instm/NSView/makeBackingLayer
+Objective-C/instm/NSResponder/makeBaseWritingDirectionLeftToRight:
+Objective-C/instm/NSResponder/makeBaseWritingDirectionNatural:
+Objective-C/instm/NSResponder/makeBaseWritingDirectionRightToLeft:
+Objective-C/instm/NSMatrix/makeCellAtRow:column:
+C/func/-/makecontext
+Objective-C/instm/NSOpenGLContext/makeCurrentContext
+Objective-C/instm/NSDocumentController/makeDocumentForURL:withContentsOfURL:ofType:error:
+Objective-C/instm/NSDocumentController/makeDocumentWithContentsOfFile:ofType:
+Objective-C/instm/NSDocumentController/makeDocumentWithContentsOfURL:ofType:
+Objective-C/instm/NSDocumentController/makeDocumentWithContentsOfURL:ofType:error:
+C/func/-/MakeFilePreview
+Objective-C/instm/NSWindow/makeFirstResponder:
+C/func/-/MakeImageDescriptionForEffect
+C/func/-/MakeImageDescriptionForPixMap
+Objective-C/instm/NSWindow/makeKeyAndOrderFront:
+Objective-C/instm/NSWindow/makeKeyWindow
+Objective-C/instm/NSWindow/makeMainWindow
+Objective-C/intfm/NSConnectionDelegate/makeNewConnection:sender:
+Objective-C/instm/NSSegmentedCell/makeNextSegmentKey
+Objective-C/instm/NSSet/makeObjectsPerformSelector:
+Objective-C/instm/NSArray/makeObjectsPerformSelector:
+Objective-C/instm/NSSet/makeObjectsPerformSelector:withObject:
+Objective-C/instm/NSArray/makeObjectsPerformSelector:withObject:
+C++/instm/IOUSBDevice/MakePipe
+C++/clm/IORegistryEntry/makePlane
+Objective-C/instm/NSSegmentedCell/makePreviousSegmentKey
+Objective-C/instm/WebView/makeTextLarger:
+Objective-C/instm/WebView/makeTextSmaller:
+Objective-C/instm/WebView/makeTextStandardSize:
+Objective-C/instm/NSResponder/makeTextWritingDirectionLeftToRight:
+Objective-C/instm/NSResponder/makeTextWritingDirectionNatural:
+Objective-C/instm/NSResponder/makeTextWritingDirectionRightToLeft:
+C/func/-/MakeThumbnailFromPicture
+C/func/-/MakeThumbnailFromPictureFile
+C/func/-/MakeThumbnailFromPixMap
+Objective-C/instm/NSDocumentController/makeUntitledDocumentOfType:
+Objective-C/instm/NSDocumentController/makeUntitledDocumentOfType:error:
+C++/instm/IOService/makeUsable
+Objective-C/instm/DRFolder(VirtualFolders)/makeVirtual
+C/func/-/MakeVoiceSpec
+Objective-C/instm/NSDocument/makeWindowControllers
+Objective-C/instm/NSApplication/makeWindowsPerform:inOrder:
+C/func/-/malloc
+C/func/-/malloc_create_zone
+C/func/-/malloc_default_zone
+C/func/-/malloc_destroy_zone
+C/func/-/malloc_good_size
+C/func/-/malloc_size
+C/func/-/malloc_zone_calloc
+C/func/-/malloc_zone_free
+C/func/-/malloc_zone_from_ptr
+C/func/-/malloc_zone_malloc
+C/func/-/malloc_zone_memalign
+C/func/-/malloc_zone_realloc
+C/func/-/malloc_zone_valloc
+Objective-C/clm/CBIdentityAuthority/managedIdentityAuthority
+Objective-C/instm/NSEntityDescription/managedObjectClassName
+Objective-C/instm/NSObjectController/managedObjectContext
+Objective-C/instm/NSPersistentDocument/managedObjectContext
+Objective-C/binding/NSDictionaryController/managedObjectContext
+Objective-C/binding/NSObjectController/managedObjectContext
+Objective-C/binding/NSArrayController/managedObjectContext
+Objective-C/binding/NSPersistentDocument/managedObjectContext
+Objective-C/binding/NSTreeController/managedObjectContext
+Objective-C/instm/NSManagedObject/managedObjectContext
+Objective-C/intfm/NSPersistentStoreCoordinatorSyncing/managedObjectContextsToMonitorWhenSyncingPersistentStoreCoordinator:
+Objective-C/intfm/NSPersistentStoreCoordinatorSyncing/managedObjectContextsToReloadAfterSyncingPersistentStoreCoordinator:
+Objective-C/instm/NSPersistentStoreCoordinator/managedObjectIDForURIRepresentation:
+Objective-C/instm/NSPersistentDocument/managedObjectModel
+Objective-C/instm/NSPersistentStoreCoordinator/managedObjectModel
+Objective-C/instm/NSEntityDescription/managedObjectModel
+Objective-C/instm/DRFSObject/mangledNameForFilesystem:
+Objective-C/instm/DRFSObject/mangledNames
+C++/instm/IOMemoryDescriptor/map
+C/econst/-/mapChanged
+C/econst/-/mapChangedBit
+C/econst/-/mapCompact
+C/econst/-/mapCompactBit
+C++/instm/IOService/mapDeviceMemoryWithIndex
+C++/instm/IOPCIDevice/mapDeviceMemoryWithRegister
+C/func/-/MapMatrix
+Objective-C/instm/NSMigrationManager/mappingModel
+Objective-C/clm/NSMappingModel/mappingModelFromBundles:forSourceModel:destinationModel:
+C++/tag/IODMACommand/MappingOptions
+Objective-C/instm/NSEntityMapping/mappingType
+C/econst/-/mapReadErr
+C/econst/-/mapReadOnly
+C/econst/-/mapReadOnlyBit
+Objective-C/clm/NSMapTable/mapTableWithKeyOptions:valueOptions:
+Objective-C/clm/NSMapTable/mapTableWithStrongToStrongObjects
+Objective-C/clm/NSMapTable/mapTableWithStrongToWeakObjects
+Objective-C/clm/NSMapTable/mapTableWithWeakToStrongObjects
+Objective-C/clm/NSMapTable/mapTableWithWeakToWeakObjects
+C/func/-/marg_free
+C/func/-/marg_getRef
+C/func/-/marg_getValue
+C/tdef/-/marg_list
+C/macro/-/marg_malloc
+C/func/-/marg_setValue
+JavaScript/data/HTMLFrameElement/marginHeight
+JavaScript/data/HTMLIFrameElement/marginHeight
+JavaScript/data/HTMLFrameElement/marginWidth
+JavaScript/data/HTMLIFrameElement/marginWidth
+Objective-C/intfm/IMKTextInput/markedRange
+Objective-C/intfm/NSTextInput/markedRange
+Objective-C/intfm/NSTextInputClient/markedRange
+Objective-C/instm/NSTextView/markedTextAttributes
+Objective-C/instm/NSTextList/markerForItemNumber:
+Objective-C/instm/NSTextList/markerFormat
+JavaScript/data/SVGMarkerElement/markerHeight
+Objective-C/instm/NSRulerMarker/markerLocation
+Objective-C/instm/NSRulerView/markers
+JavaScript/data/SVGMarkerElement/markerUnits
+JavaScript/data/SVGMarkerElement/markerWidth
+Objective-C/instm/IMKInputController/markForStyle:atRange:
+JavaScript/instm/Console/markTimeline
+Objective-C/instm/DOMRange/markupString
+Objective-C/instm/PDFAnnotationMarkup/markupType
+Objective-C/instp/CALayer/mask
+Objective-C/instm/CALayer/mask
+JavaScript/data/SVGMaskElement/maskContentUnits
+Objective-C/instp/CALayer/masksToBounds
+Objective-C/instm/CALayer/masksToBounds
+JavaScript/data/SVGMaskElement/maskUnits
+C/func/-/MatchAlias
+C/func/-/MatchAliasNoUI
+Objective-C/instm/NSScriptClassDescription/matchesAppleEventCode:
+Objective-C/instm/NSFileWrapper/matchesContentsOfURL:
+Objective-C/instm/NSImage/matchesOnMultipleResolution
+Objective-C/instm/ABSearchElement/matchesRecord:
+Objective-C/instm/IOBluetoothSDPServiceRecord/matchesSearchArray:
+Objective-C/instm/IOBluetoothSDPServiceRecord/matchesUUIDArray:
+Objective-C/instm/NSPredicateEditorRowTemplate/matchForPredicate:
+C/tdef/-/MatchImageProcPtr
+Objective-C/instm/NSFontDescriptor/matchingFontDescriptorsWithMandatoryKeys:
+Objective-C/instm/NSFontDescriptor/matchingFontDescriptorWithMandatoryKeys:
+C++/instm/IOATADevice/matchLocation
+C++/instm/IOService/matchLocation
+JavaScript/instm/StyleMedia/matchMedium
+C++/instm/IONetworkInterface/matchPropertyTable
+C++/instm/IOFireWireAVCSubUnit/matchPropertyTable
+C++/instm/IOFireWireAVCUnit/matchPropertyTable
+C++/instm/IOATADevice/matchPropertyTable
+C++/instm/IOHIDDevice/matchPropertyTable
+C++/instm/IOHIDInterface/matchPropertyTable
+C++/instm/IOService/matchPropertyTable
+C/func/-/math
+C/func/-/matherr
+Objective-C/instm/NSFont/matrix
+Objective-C/instm/NSFontDescriptor/matrix
+JavaScript/data/SVGTransform/matrix
+Objective-C/instm/NSBrowser/matrixClass
+C/econst/-/matrixErr
+C/econst/-/matrixFlagScale1x
+C/econst/-/matrixFlagScale2x
+Objective-C/instm/NSBrowser/matrixInColumn:
+C/tag/-/MatrixRecord
+C/tdef/-/MatrixRecordPtr
+JavaScript/instm/SVGPoint/matrixTransform
+JavaScript/data/HTMLMeterElement/max
+JavaScript/data/HTMLInputElement/max
+JavaScript/data/HTMLProgressElement/max
+JavaScript/clconst/WebGLRenderingContext/MAX_COMBINED_TEXTURE_IMAGE_UNITS
+JavaScript/clconst/WebGLRenderingContext/MAX_CUBE_MAP_TEXTURE_SIZE
+JavaScript/clconst/WebGLRenderingContext/MAX_FRAGMENT_UNIFORM_VECTORS
+C/macro/-/MAX_KCTL_NAME
+C/macro/-/MAX_OID_LEN
+JavaScript/clconst/WebGLRenderingContext/MAX_RENDERBUFFER_SIZE
+JavaScript/clconst/WebGLRenderingContext/MAX_TEXTURE_IMAGE_UNITS
+JavaScript/clconst/WebGLRenderingContext/MAX_TEXTURE_SIZE
+JavaScript/clconst/WebGLRenderingContext/MAX_VARYING_VECTORS
+JavaScript/clconst/WebGLRenderingContext/MAX_VERTEX_ATTRIBS
+JavaScript/clconst/WebGLRenderingContext/MAX_VERTEX_TEXTURE_IMAGE_UNITS
+JavaScript/clconst/WebGLRenderingContext/MAX_VERTEX_UNIFORM_VECTORS
+JavaScript/clconst/WebGLRenderingContext/MAX_VIEWPORT_DIMS
+Objective-C/instm/QCCompositionPickerView/maxAnimationFrameRate
+C++/instm/IOATABusInfo/maxBlocksExtended
+C++/instm/IOService/maxCapabilityForDomainState
+C/func/-/MaxCmapsOfScreen
+Objective-C/instm/NSOperationQueue/maxConcurrentOperationCount
+Objective-C/instm/NSDrawer/maxContentSize
+Objective-C/instm/NSRelationshipDescription/maxCount
+Objective-C/instm/NSDatePicker/maxDate
+Objective-C/instm/NSDatePickerCell/maxDate
+Objective-C/instp/PSFeedSettings/maxEnclosureSize
+Objective-C/instm/NSNumberFormatter/maximum
+Objective-C/instm/NSFont/maximumAdvancement
+Objective-C/clm/NSDecimalNumber/maximumDecimalNumber
+Objective-C/instm/NSNumberFormatter/maximumFractionDigits
+Objective-C/instm/NSNumberFormatter/maximumIntegerDigits
+Objective-C/instm/PDFAnnotationTextWidget/maximumLength
+Objective-C/instm/NSString/maximumLengthOfBytesUsingEncoding:
+Objective-C/instm/NSParagraphStyle/maximumLineHeight
+Objective-C/instm/PDFThumbnailView/maximumNumberOfColumns
+Objective-C/instm/NSCalendar/maximumRangeOfUnit:
+Objective-C/instm/NSDocumentController/maximumRecentDocumentCount
+Objective-C/instm/NSSearchFieldCell/maximumRecents
+Objective-C/instm/QTCaptureFileOutput/maximumRecordedDuration
+Objective-C/instm/QTCaptureFileOutput/maximumRecordedFileSize
+Objective-C/instm/NSNumberFormatter/maximumSignificantDigits
+Objective-C/instm/QTCaptureFileOutput/maximumVideoSize
+Objective-C/instm/NSCollectionView/maxItemSize
+JavaScript/data/HTMLInputElement/maxLength
+JavaScript/data/HTMLTextAreaElement/maxLength
+Objective-C/instm/NSCollectionView/maxNumberOfColumns
+Objective-C/instm/NSCollectionView/maxNumberOfRows
+Objective-C/instm/NSSplitView/maxPossiblePositionOfDividerAtIndex:
+Objective-C/instm/QCView/maxRenderingFrameRate
+C++/data/IOMemoryCursor/maxSegmentSize
+Objective-C/instm/NSToolbarItem/maxSize
+Objective-C/instm/NSWindow/maxSize
+Objective-C/instm/NSText/maxSize
+C++/data/IOMemoryCursor/maxTransferSize
+Objective-C/instm/NSStepper/maxValue
+Objective-C/instm/NSSliderCell/maxValue
+Objective-C/instm/NSStepperCell/maxValue
+Objective-C/instm/NSSlider/maxValue
+Objective-C/instm/NSLevelIndicator/maxValue
+Objective-C/instm/NSProgressIndicator/maxValue
+Objective-C/instm/IMAVSlider/maxValue
+Objective-C/instm/NSLevelIndicatorCell/maxValue
+Objective-C/binding/NSDatePickerCell/maxValue
+Objective-C/binding/NSLevelIndicator/maxValue
+Objective-C/binding/NSLevelIndicatorCell/maxValue
+Objective-C/binding/NSDatePicker/maxValue
+Objective-C/binding/NSStepperCell/maxValue
+Objective-C/binding/NSProgressIndicator/maxValue
+Objective-C/binding/NSSlider/maxValue
+Objective-C/binding/NSSliderCell/maxValue
+Objective-C/binding/NSStepper/maxValue
+Objective-C/instm/NSBrowser/maxVisibleColumns
+Objective-C/instm/NSTableColumn/maxWidth
+Objective-C/binding/NSTableColumn/maxWidth
+C/func/-/mblen
+C/func/-/mblen_l
+C/func/-/mbmb
+C/func/-/mbr_check_membership
+C/func/-/mbr_check_service_membership
+C/func/-/mbr_gid_to_uuid
+C/func/-/mbr_identifier_to_uuid
+C/func/-/mbr_sid_to_uuid
+C/func/-/mbr_uid_to_uuid
+C/func/-/mbr_uuid_to_id
+C/func/-/mbr_uuid_to_sid
+C/func/-/mbrlen
+C/func/-/mbrlen_l
+C/func/-/mbrrune
+C/func/-/mbrtowc
+C/func/-/mbrtowc_l
+C/func/-/mbrune
+C/func/-/mbsinit
+C/func/-/mbsinit_l
+C/func/-/mbsnrtowcs
+C/func/-/mbsnrtowcs_l
+C/func/-/mbsrtowcs
+C/func/-/mbsrtowcs_l
+C/func/-/mbstowcs
+C/func/-/mbstowcs_l
+C/func/-/mbtowc
+C/func/-/mbtowc_l
+C/func/-/mbuf_adj
+C/func/-/mbuf_adjustlen
+C/func/-/mbuf_align_32
+C/func/-/mbuf_alloccluster
+C/func/-/mbuf_allocpacket
+C/func/-/mbuf_allocpacket_list
+C/func/-/mbuf_attachcluster
+C/econst/mbuf_flags_t/MBUF_BCAST
+C/func/-/mbuf_clear_csum_performed
+C/func/-/mbuf_clear_csum_requested
+C/func/-/mbuf_clear_vlan_tag
+C/func/-/mbuf_concatenate
+C/func/-/mbuf_copy_pkthdr
+C/func/-/mbuf_copyback
+C/func/-/mbuf_copydata
+C/func/-/mbuf_copym
+C/econst/mbuf_csum_performed_flags_t/MBUF_CSUM_DID_DATA
+C/econst/mbuf_csum_performed_flags_t/MBUF_CSUM_DID_IP
+C/econst/mbuf_csum_performed_flags_t/MBUF_CSUM_IP_GOOD
+C/tag/-/mbuf_csum_performed_flags_t
+C/econst/mbuf_csum_performed_flags_t/MBUF_CSUM_PSEUDO_HDR
+C/econst/mbuf_csum_request_flags_t/MBUF_CSUM_REQ_IP
+C/econst/mbuf_csum_request_flags_t/MBUF_CSUM_REQ_TCP
+C/econst/mbuf_csum_request_flags_t/MBUF_CSUM_REQ_UDP
+C/tag/-/mbuf_csum_request_flags_t
+C/func/-/mbuf_data
+C/func/-/mbuf_data_to_physical
+C/func/-/mbuf_datastart
+C/econst/mbuf_how_t/MBUF_DONTWAIT
+C/func/-/mbuf_dup
+C/econst/mbuf_flags_t/MBUF_EOR
+C/econst/mbuf_flags_t/MBUF_EXT
+C/econst/mbuf_flags_t/MBUF_FIRSTFRAG
+C/func/-/mbuf_flags
+C/tag/-/mbuf_flags_t
+C/econst/mbuf_flags_t/MBUF_FRAG
+C/func/-/mbuf_free
+C/func/-/mbuf_freecluster
+C/func/-/mbuf_freem
+C/func/-/mbuf_freem_list
+C/func/-/mbuf_get
+C/func/-/mbuf_get_csum_requested
+C/func/-/mbuf_get_mhlen
+C/func/-/mbuf_get_mlen
+C/func/-/mbuf_get_tso_requested
+C/func/-/mbuf_get_vlan_tag
+C/func/-/mbuf_getcluster
+C/func/-/mbuf_gethdr
+C/func/-/mbuf_getpacket
+C/tag/-/mbuf_how_t
+C/func/-/mbuf_inbound_modified
+C/func/-/mbuf_inet6_cksum
+C/func/-/mbuf_inet_cksum
+C/econst/mbuf_flags_t/MBUF_LASTFRAG
+C/func/-/mbuf_leadingspace
+C/func/-/mbuf_len
+C/func/-/mbuf_maxlen
+C/econst/mbuf_flags_t/MBUF_MCAST
+C/func/-/mbuf_mclget
+C/func/-/mbuf_mclhasreference
+C/econst/mbuf_type_t/MBUF_MT_ATABLE
+C/econst/mbuf_type_t/MBUF_MT_CONTROL
+C/econst/mbuf_type_t/MBUF_MT_DATA
+C/econst/mbuf_type_t/MBUF_MT_FREE
+C/econst/mbuf_type_t/MBUF_MT_FTABLE
+C/econst/mbuf_type_t/MBUF_MT_HEADER
+C/econst/mbuf_type_t/MBUF_MT_HTABLE
+C/econst/mbuf_type_t/MBUF_MT_IFADDR
+C/econst/mbuf_type_t/MBUF_MT_OOBDATA
+C/econst/mbuf_type_t/MBUF_MT_PCB
+C/econst/mbuf_type_t/MBUF_MT_RIGHTS
+C/econst/mbuf_type_t/MBUF_MT_RTABLE
+C/econst/mbuf_type_t/MBUF_MT_SOCKET
+C/econst/mbuf_type_t/MBUF_MT_SONAME
+C/func/-/mbuf_next
+C/func/-/mbuf_nextpkt
+C/func/-/mbuf_outbound_finalize
+C/econst/mbuf_flags_t/MBUF_PKTHDR
+C/func/-/mbuf_pkthdr_adjustlen
+C/func/-/mbuf_pkthdr_header
+C/func/-/mbuf_pkthdr_len
+C/func/-/mbuf_pkthdr_rcvif
+C/func/-/mbuf_pkthdr_setheader
+C/func/-/mbuf_pkthdr_setlen
+C/func/-/mbuf_pkthdr_setrcvif
+C/func/-/mbuf_prepend
+C/econst/mbuf_flags_t/MBUF_PROMISC
+C/func/-/mbuf_pulldown
+C/func/-/mbuf_pullup
+C/func/-/mbuf_set_csum_performed
+C/func/-/mbuf_set_vlan_tag
+C/func/-/mbuf_setdata
+C/func/-/mbuf_setflags
+C/func/-/mbuf_setflags_mask
+C/func/-/mbuf_setlen
+C/func/-/mbuf_setnext
+C/func/-/mbuf_setnextpkt
+C/func/-/mbuf_settype
+C/func/-/mbuf_split
+C/tag/-/mbuf_stat
+C/func/-/mbuf_stats
+C/func/-/mbuf_tag_allocate
+C/func/-/mbuf_tag_find
+C/func/-/mbuf_tag_free
+C/func/-/mbuf_tag_id_find
+C/func/-/mbuf_trailingspace
+C/func/-/mbuf_type
+C/tag/-/mbuf_type_t
+C/econst/mbuf_how_t/MBUF_WAITOK
+C/func/-/mcprint
+C/func/-/MD2
+C/func/-/MD2_Final
+C/func/-/MD2_Init
+C/func/-/MD2_Update
+C/func/-/MD4
+C/func/-/MD4_Final
+C/func/-/MD4_Init
+C/func/-/MD4_Update
+C/func/-/MD5
+C/func/-/md5
+C/func/-/MD5_Final
+C/func/-/MD5_Init
+C/func/-/MD5_Update
+C/func/-/mdc2
+C/func/-/MDC2
+C/func/-/MDC2_Final
+C/func/-/MDC2_Init
+C/func/-/MDC2_Update
+C/func/-/MDItemCopyAttribute
+C/func/-/MDItemCopyAttributeList
+C/func/-/MDItemCopyAttributeNames
+C/func/-/MDItemCopyAttributes
+C/func/-/MDItemCreate
+C/func/-/MDItemCreateWithURL
+C/func/-/MDItemGetTypeID
+C/tdef/-/MDItemRef
+C/func/-/MDLineageCreate
+C/func/-/MDLineageCreateBranchFromFile
+C/func/-/MDLineageCreateFromFile
+C/func/-/MDLineageRemoveFromFile
+C/func/-/MDLineageSetOnFile
+C/tdef/-/MDQueryBatchingParams
+C/func/-/MDQueryCopyQueryString
+C/func/-/MDQueryCopySortingAttributes
+C/func/-/MDQueryCopyValueListAttributes
+C/func/-/MDQueryCopyValuesOfAttribute
+C/func/-/MDQueryCreate
+C/tdef/-/MDQueryCreateResultFunction
+C/func/-/MDQueryCreateSubset
+C/tdef/-/MDQueryCreateValueFunction
+C/func/-/MDQueryDisableUpdates
+C/func/-/MDQueryEnableUpdates
+C/func/-/MDQueryExecute
+C/func/-/MDQueryGetAttributeValueOfResultAtIndex
+C/func/-/MDQueryGetBatchingParameters
+C/func/-/MDQueryGetCountOfResultsWithAttributeValue
+C/func/-/MDQueryGetIndexOfResult
+C/func/-/MDQueryGetResultAtIndex
+C/func/-/MDQueryGetResultCount
+C/func/-/MDQueryGetTypeID
+C/func/-/MDQueryIsGatheringComplete
+C/tdef/-/MDQueryOptionFlags
+C/tdef/-/MDQueryRef
+C/func/-/MDQuerySetBatchingParameters
+C/func/-/MDQuerySetCreateResultFunction
+C/func/-/MDQuerySetCreateValueFunction
+C/func/-/MDQuerySetDispatchQueue
+C/func/-/MDQuerySetMaxCount
+C/func/-/MDQuerySetSearchScope
+C/func/-/MDQuerySetSortComparator
+C/func/-/MDQuerySetSortComparatorBlock
+C/tdef/-/MDQuerySortComparatorFunction
+C/func/-/MDQueryStop
+C/func/-/MDSchemaCopyAllAttributes
+C/func/-/MDSchemaCopyAttributesForContentType
+C/func/-/MDSchemaCopyDisplayDescriptionForAttribute
+C/func/-/MDSchemaCopyDisplayNameForAttribute
+C/func/-/MDSchemaCopyMetaAttributesForAttribute
+Objective-C/instm/ABAddressBook/me
+Objective-C/instm/NSRulerView/measurementUnits
+JavaScript/instm/CanvasRenderingContext2D/measureText
+C/tdef/-/MechanismCreate
+C/tdef/-/MechanismDeactivate
+C/tdef/-/MechanismDestroy
+C/tdef/-/MechanismInvoke
+C/tdef/-/Media
+Objective-C/instm/QTTrack/media
+JavaScript/data/CSSImportRule/media
+JavaScript/data/CSSVariablesRule/media
+JavaScript/data/CSSMediaRule/media
+JavaScript/data/HTMLStyleElement/media
+JavaScript/data/HTMLLinkElement/media
+JavaScript/data/HTMLSourceElement/media
+JavaScript/data/StyleSheet/media
+JavaScript/data/SVGStyleElement/media
+JavaScript/clconst/MediaError/MEDIA_ERR_ABORTED
+JavaScript/clconst/MediaError/MEDIA_ERR_DECODE
+JavaScript/clconst/MediaError/MEDIA_ERR_NETWORK
+JavaScript/clconst/MediaError/MEDIA_ERR_SRC_NOT_SUPPORTED
+JavaScript/clconst/CSSRule/MEDIA_RULE
+Objective-C/instm/QTMedia/mediaAttributes
+C/func/-/MediaContainsDisplayOffsets
+C/func/-/MediaDecodeTimeToSampleNum
+C/func/-/MediaDisplayTimeToSampleNum
+JavaScript/data/DOMWindow/MediaError
+JavaScript/cl/-/MediaError
+C/tdef/-/MediaHandler
+C/tdef/-/MediaHandlerComponent
+Objective-C/instm/DRDevice(StatusConvenience)/mediaIsAppendable
+Objective-C/instm/DRDevice(StatusConvenience)/mediaIsBlank
+Objective-C/instm/DRDevice(StatusConvenience)/mediaIsBusy
+Objective-C/instm/DRDevice(StatusConvenience)/mediaIsErasable
+Objective-C/instm/DRDevice(StatusConvenience)/mediaIsOverwritable
+Objective-C/instm/DRDevice(StatusConvenience)/mediaIsPresent
+Objective-C/instm/DRDevice(StatusConvenience)/mediaIsReserved
+Objective-C/instm/DRDevice(StatusConvenience)/mediaIsTransitioning
+JavaScript/data/DOMWindow/MediaList
+JavaScript/cl/-/MediaList
+C/tag/-/MediaRecord
+C/econst/-/mediaSampleNotSync
+Objective-C/instm/DRDevice(StatusConvenience)/mediaSpaceFree
+Objective-C/instm/DRDevice(StatusConvenience)/mediaSpaceOverwritable
+Objective-C/instm/DRDevice(StatusConvenience)/mediaSpaceUsed
+Objective-C/instm/DRSetupPanel/mediaStateChanged:
+C++/instm/IOBlockStorageDriver/mediaStateHasChanged
+Objective-C/instm/WebView/mediaStyle
+JavaScript/data/MediaList/mediaText
+C/func/-/MediaTimeToSampleNum
+Objective-C/instm/QTCaptureConnection/mediaType
+Objective-C/instm/QTFormatDescription/mediaType
+Objective-C/instm/QTCompressionOptions/mediaType
+Objective-C/instm/DRDevice(StatusConvenience)/mediaType
+Objective-C/clm/QTMedia/mediaWithQuickTimeMedia:error:
+C++/clm/IONetworkMedium/medium
+JavaScript/clconst/WebGLRenderingContext/MEDIUM_FLOAT
+JavaScript/clconst/WebGLRenderingContext/MEDIUM_INT
+JavaScript/data/SVGPreserveAspectRatio/meetOrSlice
+C++/instm/OSOrderedSet/member
+C++/instm/OSSet/member
+Objective-C/instm/NSHashTable/member:
+Objective-C/instm/NSSet/member:
+Objective-C/instm/CBGroupIdentity/members
+Objective-C/instm/ABGroup/members
+C++/tag/IOFWCommand/MemberVariables
+C/func/-/memccpy
+C/func/-/memchr
+C/func/-/memcmp
+C/func/-/memcpy
+C/econst/-/memFragErr
+C/func/-/memmove
+C/tag/-/Memory
+C/func/-/memory
+Objective-C/instm/NSURLCache/memoryCapacity
+C/func/-/memset
+C/func/-/memset_pattern
+C/func/-/memset_pattern16
+C/func/-/memset_pattern4
+C/func/-/memset_pattern8
+Objective-C/instm/NSStatusItem/menu
+Objective-C/instm/IMKInputController/menu
+Objective-C/instm/NSPopUpButtonCell/menu
+Objective-C/instm/NSPopUpButton/menu
+Objective-C/instm/NSMenuView/menu
+Objective-C/instm/NSMenuItem/menu
+Objective-C/instm/NSPathControl/menu
+C/func/-/menu
+Objective-C/instm/NSResponder/menu
+Objective-C/instm/NSCell/menu
+Objective-C/intfm/NSMenuDelegate/menu:updateItem:atIndex:shouldCancel:
+Objective-C/intfm/NSMenuDelegate/menu:willHighlightItem:
+C/func/-/menu_attributes
+C/func/-/menu_back
+C/func/-/menu_cursor
+C/func/-/menu_driver
+C/func/-/menu_fore
+C/func/-/menu_format
+C/func/-/menu_grey
+C/func/-/menu_hook
+C/func/-/menu_items
+C/func/-/menu_mark
+C/func/-/menu_new
+C/func/-/menu_opts
+C/func/-/menu_opts_off
+C/func/-/menu_opts_on
+C/func/-/menu_pad
+C/func/-/menu_pattern
+C/func/-/menu_post
+C/func/-/menu_requestname
+C/func/-/menu_spacing
+C/func/-/menu_userptr
+C/func/-/menu_win
+JavaScript/data/DOMWindow/menubar
+Objective-C/clm/NSFont/menuBarFontOfSize:
+Objective-C/clm/NSMenuView/menuBarHeight
+Objective-C/instm/NSMenu/menuBarHeight
+Objective-C/clm/NSMenu/menuBarVisible
+Objective-C/clm/NSWindow/menuChanged:
+Objective-C/instm/NSMenu/menuChangedMessagesEnabled
+Objective-C/intfm/NSMenuDelegate/menuDidClose:
+Objective-C/clm/NSFont/menuFontOfSize:
+Objective-C/instm/NSView/menuForEvent:
+Objective-C/instm/NSCell/menuForEvent:inRect:ofView:
+Objective-C/instm/QTMovieView/menuForEventDelegate:
+Objective-C/instm/NSToolbarItem/menuFormRepresentation
+Objective-C/instm/NSSpellChecker/menuForResult:string:options:atLocation:inView:
+Objective-C/instm/NSSegmentedControl/menuForSegment:
+Objective-C/instm/NSSegmentedCell/menuForSegment:
+C/tdef/-/MenuHandle
+Objective-C/intfm/NSMenuDelegate/menuHasKeyEquivalent:forEvent:target:action:
+Objective-C/instm/NSMenuItemCell/menuItem
+Objective-C/instm/NSMenuView/menuItemCellForItemAtIndex:
+Objective-C/intfm/NSMenuDelegate/menuNeedsUpdate:
+C/func/-/MenuPopdown
+C/func/-/MenuPopup
+C/tdef/-/MenuRef
+Objective-C/instm/NSMenu/menuRepresentation
+Objective-C/instm/NSMenuItemCell/menuView
+Objective-C/intfm/NSMenuDelegate/menuWillOpen:
+Objective-C/clm/NSMenu/menuZone
+C++/instm/OSDictionary/merge
+C++/instm/OSArray/merge
+C++/instm/OSSet/merge
+Objective-C/instm/NSManagedObjectContext/mergeChangesFromContextDidSaveNotification:
+Objective-C/clm/NSManagedObjectModel/mergedModelFromBundles:
+Objective-C/clm/NSManagedObjectModel/mergedModelFromBundles:forStoreMetadata:
+Objective-C/instm/NSManagedObjectContext/mergePolicy
+C/func/-/mergesort
+C/func/-/mergesort_b
+Objective-C/instm/NSSavePanel/message
+C++/instm/TestFailure/message
+C++/instm/IOService/message
+JavaScript/data/DOMCoreException/message
+JavaScript/data/IDBDatabaseException/message
+JavaScript/data/IDBErrorEvent/message
+JavaScript/data/IDBDatabaseError/message
+JavaScript/data/EventException/message
+JavaScript/data/ErrorEvent/message
+JavaScript/data/SQLError/message
+JavaScript/data/RangeException/message
+JavaScript/data/PositionError/message
+JavaScript/data/SVGException/message
+JavaScript/data/XPathException/message
+JavaScript/data/XMLHttpRequestException/message
+JavaScript/data/DOMWindow/MessageChannel
+JavaScript/cl/-/MessageChannel
+JavaScript/data/WorkerContext/MessageChannel
+C++/instm/IOService/messageClient
+C++/instm/IOService/messageClients
+JavaScript/data/DOMWindow/MessageEvent
+JavaScript/cl/-/MessageEvent
+JavaScript/data/WorkerContext/MessageEvent
+Objective-C/clm/NSFont/messageFontOfSize:
+JavaScript/data/DOMWindow/MessagePort
+JavaScript/cl/-/MessagePort
+Objective-C/instm/NSAlert/messageText
+C/func/-/meta
+C++/instm/OSMetaClassBase/metaCast
+Objective-C/instm/NSAtomicStore/metadata
+Objective-C/instm/NSPersistentStore/metadata
+Objective-C/instm/IBDocument/metadataForKey:ofObject:
+Objective-C/instm/NSPersistentStoreCoordinator/metadataForPersistentStore:
+Objective-C/clm/NSPersistentStoreCoordinator/metadataForPersistentStoreOfType:URL:error:
+Objective-C/clm/NSPersistentStore/metadataForPersistentStoreWithURL:error:
+Objective-C/clm/NSPersistentStoreCoordinator/metadataForPersistentStoreWithURL:error:
+Objective-C/intfm/NSMetadataQueryDelegate/metadataQuery:replacementObjectForResultObject:
+Objective-C/intfm/NSMetadataQueryDelegate/metadataQuery:replacementValueForAttribute:value:
+JavaScript/data/KeyboardEvent/metaKey
+JavaScript/data/MouseEvent/metaKey
+JavaScript/data/TouchEvent/metaKey
+JavaScript/data/WheelEvent/metaKey
+C/tdef/-/Method
+JavaScript/data/HTMLFormElement/method
+JavaScript/data/SVGTextPathElement/method
+C/func/-/method_copyArgumentType
+C/func/-/method_copyReturnType
+C/func/-/method_exchangeImplementations
+C/func/-/method_getArgumentType
+C/func/-/method_getImplementation
+C/func/-/method_getName
+C/func/-/method_getNumberOfArguments
+C/func/-/method_getReturnType
+C/func/-/method_getTypeEncoding
+C/func/-/method_setImplementation
+Objective-C/instm/NSObject/methodForSelector:
+Objective-C/instm/NSMethodSignature/methodReturnLength
+Objective-C/instm/NSMethodSignature/methodReturnType
+Objective-C/instm/NSInvocation/methodSignature
+Objective-C/instm/NSProxy/methodSignatureForSelector:
+Objective-C/instm/NSObject/methodSignatureForSelector:
+JavaScript/instm/TestObj/methodThatRequiresAllArgs
+JavaScript/instm/TestObj/methodThatRequiresAllArgsAndThrows
+JavaScript/instm/TestObj/methodWithException
+JavaScript/instm/TestObj/methodWithNonOptionalArgAndOptionalArg
+JavaScript/instm/TestObj/methodWithNonOptionalArgAndTwoOptionalArgs
+JavaScript/instm/TestObj/methodWithOptionalArg
+C/econst/-/mFulErr
+C/func/-/mib_api
+C/tag/-/MicrosecondsInFrame
+C/tdef/-/MIDIChannelMessage
+C/func/-/MIDIClientCreate
+C/func/-/MIDIClientDispose
+C/tdef/-/MIDIClientRef
+C/tdef/-/MIDICompletionProc
+C/tag/-/MIDIControlTransform
+C/func/-/MIDIDestinationCreate
+C/func/-/MIDIDeviceAddEntity
+C/func/-/MIDIDeviceCreate
+C/func/-/MIDIDeviceDispose
+C/func/-/MIDIDeviceGetEntity
+C/func/-/MIDIDeviceGetNumberOfEntities
+C/func/-/MIDIDeviceListAddDevice
+C/func/-/MIDIDeviceListDispose
+C/func/-/MIDIDeviceListGetDevice
+C/func/-/MIDIDeviceListGetNumberOfDevices
+C/tdef/-/MIDIDeviceRef
+C/func/-/MIDIDeviceRemoveEntity
+C/func/-/MIDIDriverEnableMonitoring
+C/cl/-/MIDIDriverInterface
+C/tdef/-/MIDIDriverRef
+C/func/-/MIDIEndpointDispose
+C/func/-/MIDIEndpointGetEntity
+C/func/-/MIDIEndpointGetRefCons
+C/tdef/-/MIDIEndpointRef
+C/func/-/MIDIEndpointSetRefCons
+C/func/-/MIDIEntityAddOrRemoveEndpoints
+C/func/-/MIDIEntityGetDestination
+C/func/-/MIDIEntityGetDevice
+C/func/-/MIDIEntityGetNumberOfDestinations
+C/func/-/MIDIEntityGetNumberOfSources
+C/func/-/MIDIEntityGetSource
+C/tdef/-/MIDIEntityRef
+C/func/-/MIDIExternalDeviceCreate
+C/func/-/MIDIFlushOutput
+C/func/-/MIDIGetDestination
+C/func/-/MIDIGetDevice
+C/func/-/MIDIGetDriverDeviceList
+C/func/-/MIDIGetDriverIORunLoop
+C/func/-/MIDIGetExternalDevice
+C/func/-/MIDIGetNumberOfDestinations
+C/func/-/MIDIGetNumberOfDevices
+C/func/-/MIDIGetNumberOfExternalDevices
+C/func/-/MIDIGetNumberOfSources
+C/func/-/MIDIGetSerialPortDrivers
+C/func/-/MIDIGetSerialPortOwner
+C/func/-/MIDIGetSource
+C/func/-/MIDIImportGetSettings
+C/func/-/MIDIImportSetSettings
+C/func/-/MIDIInputPortCreate
+C/tdef/-/MIDIMetaEvent
+C/tdef/-/MIDINoteMessage
+C/tag/-/MIDINotification
+C/tag/-/MIDINotificationMessageID
+C/tdef/-/MIDINotifyProc
+C/tag/-/MIDIObjectAddRemoveNotification
+C/func/-/MIDIObjectFindByUniqueID
+C/func/-/MIDIObjectGetDataProperty
+C/func/-/MIDIObjectGetDictionaryProperty
+C/func/-/MIDIObjectGetIntegerProperty
+C/func/-/MIDIObjectGetProperties
+C/func/-/MIDIObjectGetStringProperty
+C/tag/-/MIDIObjectPropertyChangeNotification
+C/tdef/-/MIDIObjectRef
+C/func/-/MIDIObjectRemoveProperty
+C/func/-/MIDIObjectSetDataProperty
+C/func/-/MIDIObjectSetDictionaryProperty
+C/func/-/MIDIObjectSetIntegerProperty
+C/func/-/MIDIObjectSetStringProperty
+C/tag/-/MIDIObjectType
+C/func/-/MIDIOutputPortCreate
+C/tag/-/MIDIPacket
+C/tag/-/MIDIPacketList
+C/func/-/MIDIPacketListAdd
+C/func/-/MIDIPacketListInit
+C/func/-/MIDIPacketNext
+C/func/-/MIDIPortConnectSource
+C/func/-/MIDIPortDisconnectSource
+C/func/-/MIDIPortDispose
+C/tdef/-/MIDIPortRef
+C/tdef/-/MIDIRawData
+C/tdef/-/MIDIReadProc
+C/func/-/MIDIReceived
+C/func/-/MIDIRestart
+C/func/-/MIDISend
+C/func/-/MIDISendSysex
+C/func/-/MIDISetSerialPortOwner
+C/func/-/MIDISetupAddDevice
+C/func/-/MIDISetupAddExternalDevice
+C/func/-/MIDISetupCreate
+C/func/-/MIDISetupDispose
+C/func/-/MIDISetupFromData
+C/func/-/MIDISetupGetCurrent
+C/func/-/MIDISetupInstall
+C/func/-/MIDISetupRemoveDevice
+C/func/-/MIDISetupRemoveExternalDevice
+C/func/-/MIDISetupToData
+C/func/-/MIDISourceCreate
+C/tag/-/MIDISysexSendRequest
+C/func/-/MIDIThruConnectionCreate
+C/func/-/MIDIThruConnectionDispose
+C/tag/-/MIDIThruConnectionEndpoint
+C/func/-/MIDIThruConnectionFind
+C/func/-/MIDIThruConnectionGetParams
+C/tag/-/MIDIThruConnectionParams
+C/func/-/MIDIThruConnectionParamsInitialize
+C/macro/-/MIDIThruConnectionParamsSize
+C/func/-/MIDIThruConnectionSetParams
+C/tdef/-/MIDITimeStamp
+C/tag/-/MIDITransform
+C/tag/-/MIDITransformControlType
+C/tag/-/MIDITransformType
+C/tdef/-/MIDIUniqueID
+C/tag/-/MIDIValueMap
+Objective-C/instm/NSPersistentStoreCoordinator/migratePersistentStore:toURL:options:withType:error:
+Objective-C/instm/NSMigrationManager/migrateStoreFromURL:type:options:withMappingModel:toDestinationURL:destinationType:destinationOptions:error:
+Objective-C/clm/NSPersistentStore/migrationManagerClass
+Objective-C/instm/NSMigrationManager/migrationProgress
+Objective-C/instm/NSXMLDocument/MIMEType
+Objective-C/instm/NSURLResponse/MIMEType
+Objective-C/instm/WebResource/MIMEType
+Objective-C/instm/QTDataReference/MIMEType
+Objective-C/instp/PSEnclosure/MIMEType
+Objective-C/instp/PSContent/MIMEType
+Objective-C/instp/PSLink/MIMEType
+JavaScript/data/DOMWindow/MimeType
+JavaScript/cl/-/MimeType
+JavaScript/data/DOMWindow/MimeTypeArray
+JavaScript/cl/-/MimeTypeArray
+JavaScript/data/Navigator/mimeTypes
+Objective-C/clm/WebView/MIMETypesShownAsHTML
+JavaScript/data/HTMLInputElement/min
+JavaScript/data/HTMLMeterElement/min
+C/func/-/MinCmapsOfScreen
+Objective-C/instm/NSBrowser/minColumnWidth
+Objective-C/instm/NSColorPicker/minContentSize
+Objective-C/intfm/NSColorPickingDefault/minContentSize
+Objective-C/instm/NSDrawer/minContentSize
+C/func/-/mincore
+Objective-C/instm/NSRelationshipDescription/minCount
+Objective-C/instm/NSDatePicker/minDate
+Objective-C/instm/NSDatePickerCell/minDate
+Objective-C/clm/NSWindow/minFrameWidthWithTitle:styleMask:
+C/func/-/minherit
+Objective-C/instm/NSWindow/miniaturize:
+Objective-C/instm/NSApplication/miniaturizeAll:
+Objective-C/instm/CAEmitterCell/minificationFilter
+Objective-C/instp/CAEmitterCell/minificationFilter
+Objective-C/instp/CALayer/minificationFilter
+Objective-C/instm/CALayer/minificationFilter
+Objective-C/instm/CAEmitterCell/minificationFilterBias
+Objective-C/instp/CAEmitterCell/minificationFilterBias
+Objective-C/instm/CALayer/minificationFilterBias
+Objective-C/instp/CALayer/minificationFilterBias
+Objective-C/instm/NSNumberFormatter/minimum
+Objective-C/instm/NSCalendar/minimumDaysInFirstWeek
+Objective-C/clm/NSDecimalNumber/minimumDecimalNumber
+Objective-C/instm/WebPreferences/minimumFontSize
+Objective-C/instm/NSNumberFormatter/minimumFractionDigits
+Objective-C/instm/NSNumberFormatter/minimumIntegerDigits
+C++/data/IOAudioDevice/minimumInterval
+Objective-C/instm/NSParagraphStyle/minimumLineHeight
+Objective-C/instm/WebPreferences/minimumLogicalFontSize
+Objective-C/instm/NSCalendar/minimumRangeOfUnit:
+Objective-C/instm/NSNumberFormatter/minimumSignificantDigits
+Objective-C/instm/NSTabView/minimumSize
+Objective-C/instm/QTCaptureFileOutput/minimumVideoFrameInterval
+Objective-C/instm/QTCaptureDecompressedVideoOutput/minimumVideoFrameInterval
+Objective-C/instm/NSMenu/minimumWidth
+Objective-C/instm/NSCollectionView/minItemSize
+Objective-C/instm/NSWindow/miniwindowImage
+Objective-C/instm/NSWindow/miniwindowTitle
+Objective-C/instm/PDFDocument/minorVersion
+C/func/-/minphys
+Objective-C/instm/NSSplitView/minPossiblePositionOfDividerAtIndex:
+Objective-C/instm/NSToolbarItem/minSize
+Objective-C/instm/NSWindow/minSize
+Objective-C/instm/NSText/minSize
+Objective-C/instm/NSHashTable/minusHashTable:
+Objective-C/instm/NSMutableSet/minusSet:
+Objective-C/instm/NSNumberFormatter/minusSign
+Objective-C/instm/NSDateComponents/minute
+Objective-C/instm/DRMSF/minutes
+Objective-C/instm/NSStepperCell/minValue
+Objective-C/instm/NSSliderCell/minValue
+Objective-C/instm/NSStepper/minValue
+Objective-C/instm/NSSlider/minValue
+Objective-C/instm/NSLevelIndicator/minValue
+Objective-C/instm/NSProgressIndicator/minValue
+Objective-C/instm/IMAVSlider/minValue
+Objective-C/instm/NSLevelIndicatorCell/minValue
+Objective-C/binding/NSDatePickerCell/minValue
+Objective-C/binding/NSDatePicker/minValue
+Objective-C/binding/NSLevelIndicator/minValue
+Objective-C/binding/NSLevelIndicatorCell/minValue
+Objective-C/binding/NSSlider/minValue
+Objective-C/binding/NSStepperCell/minValue
+Objective-C/binding/NSSliderCell/minValue
+Objective-C/binding/NSProgressIndicator/minValue
+Objective-C/binding/NSStepper/minValue
+Objective-C/instm/NSTableColumn/minWidth
+Objective-C/binding/NSTableColumn/minWidth
+JavaScript/clconst/WebGLRenderingContext/MIRRORED_REPEAT
+Objective-C/instm/IKPictureTaker/mirroring
+C/func/-/mitem_current
+C/func/-/mitem_name
+C/func/-/mitem_new
+C/func/-/mitem_opts
+C/func/-/mitem_userptr
+C/func/-/mitem_value
+C/func/-/mitem_visible
+Objective-C/instm/NSBezierPath/miterLimit
+Objective-C/instm/CAShapeLayer/miterLimit
+Objective-C/instp/CAShapeLayer/miterLimit
+JavaScript/data/CanvasRenderingContext2D/miterLimit
+Objective-C/instm/NSMenuItem/mixedStateImage
+Objective-C/binding/NSMenuItem/mixedStateImage
+Objective-C/binding/NSPopUpButtonCell/mixedStateImage
+C/tag/-/MixerDistanceParams
+C/tdef/-/MixerDistanceParams
+C/func/-/mkdir
+C/func/-/mkdtemp
+C/func/-/mkfifo
+C/func/-/mknod
+C/func/-/mkstemp
+C/func/-/mkstemps
+C/func/-/mktemp
+C/func/-/mktime
+C/func/-/mlock
+C/func/-/mmap
+C/cl/-/MMCDeviceInterface
+C/tag/-/MMCDeviceTrayState
+C/func/-/mmul
+C/func/-/mmulD
+Objective-C/instm/NSMenuItem/mnemonic
+Objective-C/instm/NSCell/mnemonic
+Objective-C/instm/NSMenuItem/mnemonicLocation
+Objective-C/instm/NSCell/mnemonicLocation
+C/tdef/-/ModalFilterProc
+C/tdef/-/ModalFilterUPP
+C/tdef/-/ModalFilterYDProc
+C/tdef/-/ModalFilterYDUPP
+Objective-C/instm/NSApplication/modalWindow
+Objective-C/instm/NSColorPanel/mode
+Objective-C/instm/NSMatrix/mode
+Objective-C/instp/IKDeviceBrowserView/mode
+Objective-C/instm/IKDeviceBrowserView/mode
+Objective-C/instp/IKCameraDeviceView/mode
+Objective-C/instp/IKScannerDeviceView/mode
+Objective-C/instm/IKScannerDeviceView/mode
+Objective-C/instm/IKCameraDeviceView/mode
+JavaScript/data/SVGFEBlendElement/mode
+Objective-C/clm/NSManagedObjectModel/modelByMergingModels:
+Objective-C/clm/NSManagedObjectModel/modelByMergingModels:forStoreMetadata:
+C/econst/-/modeLiteral
+Objective-C/instm/CALayer/modelLayer
+Objective-C/instm/QTCaptureDevice/modelUniqueID
+C/econst/-/modeNormal
+C/tdef/-/ModePageFormatHeader
+C/tdef/-/ModeParameterBlockDescriptor
+C/econst/-/modePhonemes
+Objective-C/intfm/IMKStateSetting/modes:
+C/econst/-/modeText
+C/func/-/modf
+C/func/-/modff
+C/func/-/modfl
+C++/clm/OSMetaClass/modHasInstance
+JavaScript/clconst/MutationEvent/MODIFICATION
+Objective-C/instm/PDFAnnotation/modificationDate
+Objective-C/instm/NSPredicateEditorRowTemplate/modifier
+Objective-C/clm/NSEvent/modifierFlags
+Objective-C/instm/NSEvent/modifierFlags
+JavaScript/instm/DOMSelection/modify
+Objective-C/instm/NSFontManager/modifyFont:
+Objective-C/instm/NSFontManager/modifyFontViaPanel:
+C++/instm/IOCatalogue/moduleHasLoaded
+C/func/-/moncontrol
+C/func/-/monstartup
+Objective-C/instm/NSDateComponents/month
+Objective-C/instp/CalRecurrenceRule/monthsOfTheYear
+Objective-C/instm/CalRecurrenceRule/monthsOfTheYear
+Objective-C/instm/NSDateFormatter/monthSymbols
+Objective-C/instm/NSFont/mostCompatibleStringEncoding
+C/func/-/mount
+Objective-C/instm/NSWorkspace/mountedLocalVolumePaths
+Objective-C/instm/NSWorkspace/mountedRemovableMedia
+Objective-C/instm/NSFileManager/mountedVolumeURLsIncludingResourceValuesForKeys:options:
+Objective-C/instm/NSWorkspace/mountNewRemovableMedia
+Objective-C/instm/NSView/mouse:inRect:
+C/func/-/mouse_trafo
+JavaScript/clconst/Event/MOUSEDOWN
+Objective-C/instm/NSMatrix/mouseDown:
+Objective-C/instm/NSControl/mouseDown:
+Objective-C/instm/NSResponder/mouseDown:
+Objective-C/intfm/FxOnScreenControl/mouseDown:positionY:activePart:modifiers:forceUpdate:time:
+Objective-C/instm/NSView/mouseDownCanMoveWindow
+Objective-C/instm/NSMatrix/mouseDownFlags
+Objective-C/instm/NSCell/mouseDownFlags
+Objective-C/intfm/IMKMouseHandling/mouseDownOnCharacterIndex:coordinate:withModifier:continueTracking:client:
+JavaScript/clconst/Event/MOUSEDRAG
+Objective-C/instm/NSResponder/mouseDragged:
+Objective-C/intfm/FxOnScreenControl/mouseDragged:positionY:activePart:modifiers:forceUpdate:time:
+Objective-C/instm/NSButtonCell/mouseEntered:
+Objective-C/instm/NSCursor/mouseEntered:
+Objective-C/instm/NSResponder/mouseEntered:
+Objective-C/instm/NSPathCell/mouseEntered:withFrame:inView:
+JavaScript/data/DOMWindow/MouseEvent
+JavaScript/cl/-/MouseEvent
+Objective-C/clm/NSEvent/mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:
+Objective-C/instm/NSButtonCell/mouseExited:
+Objective-C/instm/NSCursor/mouseExited:
+Objective-C/instm/NSResponder/mouseExited:
+Objective-C/instm/NSPathCell/mouseExited:withFrame:inView:
+C/func/-/mouseinterval
+Objective-C/clm/NSEvent/mouseLocation
+Objective-C/instm/NSWindow/mouseLocationOutsideOfEventStream
+C/func/-/mousemask
+JavaScript/clconst/Event/MOUSEMOVE
+Objective-C/instm/NSResponder/mouseMoved:
+Objective-C/intfm/IMKMouseHandling/mouseMovedOnCharacterIndex:coordinate:withModifier:client:
+JavaScript/clconst/Event/MOUSEOUT
+JavaScript/clconst/Event/MOUSEOVER
+JavaScript/clconst/Event/MOUSEUP
+Objective-C/instm/NSResponder/mouseUp:
+Objective-C/intfm/FxOnScreenControl/mouseUp:positionY:activePart:modifiers:forceUpdate:time:
+Objective-C/instm/PDFAnnotation/mouseUpAction
+Objective-C/intfm/IMKMouseHandling/mouseUpOnCharacterIndex:coordinate:withModifier:client:
+C/func/-/move
+JavaScript/instm/DataGridColumnList/move
+Objective-C/instm/AMWorkflow/moveActionAtIndex:toIndex:
+Objective-C/instm/NSResponder/moveBackward:
+Objective-C/instm/NSResponder/moveBackwardAndModifySelection:
+JavaScript/instm/DOMWindow/moveBy
+Objective-C/instm/NSTableView/moveColumn:toColumn:
+C/func/-/MoveDataBrowserSelectionAnchor
+Objective-C/instm/NSResponder/moveDown:
+Objective-C/instm/NSResponder/moveDownAndModifySelection:
+Objective-C/instm/WebView/moveDragCaretToPoint:
+Objective-C/instm/NSResponder/moveForward:
+Objective-C/instm/NSResponder/moveForwardAndModifySelection:
+Objective-C/instm/NSFileManager/moveItemAtPath:toPath:error:
+Objective-C/instm/NSFileManager/moveItemAtURL:toURL:error:
+Objective-C/instm/NSResponder/moveLeft:
+Objective-C/instm/NSResponder/moveLeftAndModifySelection:
+Objective-C/instm/NSTreeController/moveNode:toIndexPath:
+Objective-C/instm/NSTreeController/moveNodes:toIndexPath:
+Objective-C/instm/IBDocument/moveObject:toParent:
+Objective-C/instm/NSResponder/moveParagraphBackwardAndModifySelection:
+Objective-C/instm/NSResponder/moveParagraphForwardAndModifySelection:
+Objective-C/instm/NSFileManager/movePath:toPath:handler:
+Objective-C/instm/NSResponder/moveRight:
+Objective-C/instm/NSResponder/moveRightAndModifySelection:
+Objective-C/instm/NSRulerView/moveRulerlineFromLocation:toLocation:
+JavaScript/instm/CanvasRenderingContext2D/moveTo
+JavaScript/instm/DOMWindow/moveTo
+C/macro/-/MOVETO_ENDTAG
+C/macro/-/MOVETO_STARTTAG
+Objective-C/instm/NSResponder/moveToBeginningOfDocument:
+Objective-C/instm/NSResponder/moveToBeginningOfDocumentAndModifySelection:
+Objective-C/instm/NSResponder/moveToBeginningOfLine:
+Objective-C/instm/NSResponder/moveToBeginningOfLineAndModifySelection:
+Objective-C/instm/NSResponder/moveToBeginningOfParagraph:
+Objective-C/instm/NSResponder/moveToBeginningOfParagraphAndModifySelection:
+Objective-C/instm/WebView/moveToBeginningOfSentence:
+Objective-C/instm/WebView/moveToBeginningOfSentenceAndModifySelection:
+Objective-C/instm/NSResponder/moveToEndOfDocument:
+Objective-C/instm/NSResponder/moveToEndOfDocumentAndModifySelection:
+Objective-C/instm/NSResponder/moveToEndOfLine:
+Objective-C/instm/NSResponder/moveToEndOfLineAndModifySelection:
+Objective-C/instm/NSResponder/moveToEndOfParagraph:
+Objective-C/instm/NSResponder/moveToEndOfParagraphAndModifySelection:
+Objective-C/instm/WebView/moveToEndOfSentence:
+Objective-C/instm/WebView/moveToEndOfSentenceAndModifySelection:
+Objective-C/instm/NSResponder/moveToLeftEndOfLine:
+Objective-C/instm/NSResponder/moveToLeftEndOfLineAndModifySelection:
+Objective-C/instm/NSBezierPath/moveToPoint:
+Objective-C/instm/NSResponder/moveToRightEndOfLine:
+Objective-C/instm/NSResponder/moveToRightEndOfLineAndModifySelection:
+Objective-C/instm/NSResponder/moveUp:
+Objective-C/instm/NSResponder/moveUpAndModifySelection:
+JavaScript/instm/InspectorFrontendHost/moveWindowBy
+Objective-C/instm/NSResponder/moveWordBackward:
+Objective-C/instm/NSResponder/moveWordBackwardAndModifySelection:
+Objective-C/instm/NSResponder/moveWordForward:
+Objective-C/instm/NSResponder/moveWordForwardAndModifySelection:
+Objective-C/instm/NSResponder/moveWordLeft:
+Objective-C/instm/NSResponder/moveWordLeftAndModifySelection:
+Objective-C/instm/NSResponder/moveWordRight:
+Objective-C/instm/NSResponder/moveWordRightAndModifySelection:
+C/tdef/-/Movie
+Objective-C/instm/QTTrack/movie
+Objective-C/instm/QTMovieLayer/movie
+Objective-C/instm/QTMovieView/movie
+Objective-C/clm/QTMovie/movie
+Objective-C/binding/QTMovieView/movie
+Objective-C/instm/NSObject/movie:linkToURL:
+Objective-C/instm/NSObject/movie:shouldContinueOperation:withPhase:atPercent:withAttributes:
+Objective-C/instm/QTMovie/movieAttributes
+Objective-C/instm/QTMovieView/movieBounds
+C/tdef/-/MovieController
+Objective-C/instm/QTMovieView/movieControllerBounds
+C/tdef/-/MovieDrawingCompleteProc
+C/tdef/-/MovieDrawingCompleteUPP
+C/tdef/-/MovieEditState
+C/tag/-/MovieEditStateRecord
+C/func/-/MovieExportAddDataSource
+C/tdef/-/MovieExportComponent
+C/func/-/MovieExportDisposeGetDataAndPropertiesProcs
+C/func/-/MovieExportDoUserDialog
+C/econst/-/movieExportDuration
+C/func/-/MovieExportFromProceduresToDataRef
+C/func/-/MovieExportGetAuxiliaryData
+C/func/-/MovieExportGetCreatorType
+C/tdef/-/MovieExportGetDataProc
+C/tdef/-/MovieExportGetDataUPP
+C/func/-/MovieExportGetFileNameExtension
+C/tdef/-/MovieExportGetPropertyProc
+C/tdef/-/MovieExportGetPropertyUPP
+C/func/-/MovieExportGetSettingsAsAtomContainer
+C/func/-/MovieExportGetShortFileTypeString
+C/func/-/MovieExportGetSourceMediaType
+C/econst/-/movieExportHeight
+C/func/-/MovieExportNewGetDataAndPropertiesProcs
+C/func/-/MovieExportSetGetMoviePropertyProc
+C/func/-/MovieExportSetProgressProc
+C/func/-/MovieExportSetSampleDescription
+C/func/-/MovieExportSetSettingsFromAtomContainer
+C/func/-/MovieExportToDataRef
+C/func/-/MovieExportToFile
+C/func/-/MovieExportToHandle
+C/func/-/MovieExportValidate
+C/econst/-/movieExportVideoFilter
+C/econst/-/movieExportWidth
+Objective-C/clm/QTMovie/movieFileTypes:
+Objective-C/instm/QTMovie/movieFormatRepresentation
+C/tdef/-/MovieImportComponent
+C/func/-/MovieImportDataRef
+C/func/-/MovieImportDoUserDialog
+C/func/-/MovieImportDoUserDialogDataRef
+C/func/-/MovieImportEstimateCompletionTime
+C/func/-/MovieImportFile
+C/func/-/MovieImportGetAuxiliaryDataType
+C/func/-/MovieImportGetDestinationMediaType
+C/func/-/MovieImportGetDontBlock
+C/func/-/MovieImportGetFileType
+C/func/-/MovieImportGetLoadState
+C/func/-/MovieImportGetMaxLoadedTime
+C/func/-/MovieImportGetMIMETypeList
+C/func/-/MovieImportGetSampleDescription
+C/func/-/MovieImportGetSettingsAsAtomContainer
+C/func/-/MovieImportHandle
+C/func/-/MovieImportIdle
+C/econst/-/movieImportResultNeedIdles
+C/func/-/MovieImportSetAuxiliaryData
+C/func/-/MovieImportSetChunkSize
+C/func/-/MovieImportSetDimensions
+C/func/-/MovieImportSetDontBlock
+C/func/-/MovieImportSetDuration
+C/func/-/MovieImportSetFromScrap
+C/func/-/MovieImportSetIdleManager
+C/func/-/MovieImportSetMediaDataRef
+C/func/-/MovieImportSetMediaFile
+C/func/-/MovieImportSetNewMovieFlags
+C/func/-/MovieImportSetOffsetAndLimit
+C/func/-/MovieImportSetOffsetAndLimit64
+C/func/-/MovieImportSetProgressProc
+C/func/-/MovieImportSetSampleDescription
+C/func/-/MovieImportSetSampleDuration
+C/func/-/MovieImportSetSettingsFromAtomContainer
+C/func/-/MovieImportValidate
+C/func/-/MovieImportValidateDataRef
+Objective-C/clm/QTMovie/movieNamed:error:
+C/tdef/-/MoviePrePrerollCompleteProc
+C/tdef/-/MoviePrePrerollCompleteUPP
+C/tdef/-/MoviePreviewCallOutProc
+C/tdef/-/MoviePreviewCallOutUPP
+C/econst/-/movieProgressClose
+C/econst/-/movieProgressOpen
+C/tdef/-/MovieProgressProc
+C/econst/-/movieProgressUpdatePercent
+C/tdef/-/MovieProgressUPP
+C/tag/-/MovieRecord
+C/tdef/-/MoviesErrorProc
+C/tdef/-/MoviesErrorUPP
+Objective-C/instm/QTMovie/movieShouldLoadData:
+Objective-C/instm/NSObject/movieShouldTask:
+Objective-C/clm/QTMovie/movieTypesWithOptions:
+Objective-C/clm/QTMovie/movieUnfilteredFileTypes
+Objective-C/clm/QTMovie/movieUnfilteredPasteboardTypes
+Objective-C/clm/QTMovie/movieWithAttributes:error:
+Objective-C/clm/QTMovie/movieWithData:error:
+Objective-C/clm/QTMovie/movieWithDataReference:error:
+Objective-C/clm/QTMovie/movieWithFile:error:
+Objective-C/clm/QTMovie/movieWithPasteboard:error:
+Objective-C/clm/QTMovie/movieWithQuickTimeMovie:disposeWhenDone:error:
+Objective-C/instm/QTMovie/movieWithTimeRange:error:
+Objective-C/clm/QTMovie/movieWithURL:error:
+C/tdef/-/MPAddressSpaceID
+C/tdef/-/MPAddressSpaceInfo
+C/func/-/MPAllocate
+C/func/-/MPAllocateAligned
+C/func/-/MPAllocateTaskStorageIndex
+C/tdef/-/MPAreaID
+C/func/-/MPArmTimer
+C/func/-/MPBlockClear
+C/func/-/MPBlockCopy
+C/macro/-/MPC_LOADTIME_BASE_POLICY
+C/macro/-/MPC_LOADTIME_FLAG_LABELMBUFS
+C/macro/-/MPC_LOADTIME_FLAG_NOTLATE
+C/macro/-/MPC_LOADTIME_FLAG_UNLOADOK
+C/macro/-/MPC_RUNTIME_FLAG_REGISTERED
+C/func/-/MPCancelTimer
+C/func/-/MPCauseNotification
+C/tdef/-/MPCoherenceID
+C/tdef/-/MPConsoleID
+C/tdef/-/MPCpuID
+C/func/-/MPCreateCriticalRegion
+C/func/-/MPCreateEvent
+C/func/-/MPCreateNotification
+C/func/-/MPCreateQueue
+C/func/-/MPCreateSemaphore
+C/func/-/MPCreateTask
+C/func/-/MPCreateTimer
+C/tdef/-/MPCriticalRegionID
+C/tdef/-/MPCriticalRegionInfo
+C/func/-/MPCurrentTaskID
+C/func/-/MPDataToCode
+C/func/-/MPDeallocateTaskStorageIndex
+C/tdef/-/MPDebuggerLevel
+C/func/-/MPDelayUntil
+C/func/-/MPDeleteCriticalRegion
+C/func/-/MPDeleteEvent
+C/func/-/MPDeleteNotification
+C/func/-/MPDeleteQueue
+C/func/-/MPDeleteSemaphore
+C/func/-/MPDeleteTimer
+C/func/-/MPDisposeTaskException
+C/func/-/MPEnterCriticalRegion
+C/tdef/-/MPEventFlags
+C/tdef/-/MPEventID
+C/tdef/-/MPEventInfo
+C/tdef/-/MPExceptionKind
+C/func/-/MPExit
+C/func/-/MPExitCriticalRegion
+C/func/-/MPExtractTaskState
+C/func/-/MPFree
+C/func/-/MPGetAllocatedBlockSize
+C/func/-/MPGetNextCpuID
+C/func/-/MPGetNextTaskID
+C/func/-/MPGetTaskStorageValue
+C/func/-/MPI
+C/func/-/MPI_Abort
+C/func/-/MPI_Accumulate
+C/func/-/MPI_Add_error_class
+C/func/-/MPI_Add_error_code
+C/func/-/MPI_Add_error_string
+C/func/-/MPI_Address
+C/func/-/MPI_Allgather
+C/func/-/MPI_Allgatherv
+C/func/-/MPI_Alloc_mem
+C/func/-/MPI_Allreduce
+C/func/-/MPI_Alltoall
+C/func/-/MPI_Alltoallv
+C/func/-/MPI_Alltoallw
+C/func/-/MPI_Attr_delete
+C/func/-/MPI_Attr_get
+C/func/-/MPI_Attr_put
+C/func/-/MPI_Barrier
+C/func/-/MPI_Bcast
+C/func/-/MPI_Bsend
+C/func/-/MPI_Bsend_init
+C/func/-/MPI_Buffer_attach
+C/func/-/MPI_Buffer_detach
+C/func/-/MPI_Cancel
+C/func/-/MPI_Cart_coords
+C/func/-/MPI_Cart_create
+C/func/-/MPI_Cart_get
+C/func/-/MPI_Cart_map
+C/func/-/MPI_Cart_rank
+C/func/-/MPI_Cart_shift
+C/func/-/MPI_Cart_sub
+C/func/-/MPI_Cartdim_get
+C/func/-/MPI_Close_port
+C/func/-/MPI_Comm_accept
+C/func/-/MPI_Comm_c2f
+C/func/-/MPI_Comm_call_errhandler
+C/func/-/MPI_Comm_compare
+C/func/-/MPI_Comm_connect
+C/func/-/MPI_Comm_create
+C/func/-/MPI_Comm_create_errhandler
+C/func/-/MPI_Comm_create_keyval
+C/func/-/MPI_Comm_delete_attr
+C/func/-/MPI_Comm_disconnect
+C/func/-/MPI_Comm_dup
+C/func/-/MPI_Comm_f2c
+C/func/-/MPI_Comm_free
+C/func/-/MPI_Comm_free_keyval
+C/func/-/MPI_Comm_get_attr
+C/func/-/MPI_Comm_get_errhandler
+C/func/-/MPI_Comm_get_name
+C/func/-/MPI_Comm_get_parent
+C/func/-/MPI_Comm_group
+C/func/-/MPI_Comm_join
+C/func/-/MPI_Comm_rank
+C/func/-/MPI_Comm_remote_group
+C/func/-/MPI_Comm_remote_size
+C/func/-/MPI_Comm_set_attr
+C/func/-/MPI_Comm_set_errhandler
+C/func/-/MPI_Comm_set_name
+C/func/-/MPI_Comm_size
+C/func/-/MPI_Comm_spawn
+C/func/-/MPI_Comm_spawn_multiple
+C/func/-/MPI_Comm_split
+C/func/-/MPI_Comm_test_inter
+C/func/-/MPI_Dims_create
+C/func/-/MPI_Errhandler_create
+C/func/-/MPI_Errhandler_free
+C/func/-/MPI_Errhandler_get
+C/func/-/MPI_Errhandler_set
+C/func/-/MPI_Error_class
+C/func/-/MPI_Error_string
+C/func/-/MPI_Exscan
+C/func/-/MPI_File_c2f
+C/func/-/MPI_File_call_errhandler
+C/func/-/MPI_File_close
+C/func/-/MPI_File_create_errhandler
+C/func/-/MPI_File_delete
+C/func/-/MPI_File_f2c
+C/func/-/MPI_File_get_amode
+C/func/-/MPI_File_get_atomicity
+C/func/-/MPI_File_get_byte_offset
+C/func/-/MPI_File_get_errhandler
+C/func/-/MPI_File_get_group
+C/func/-/MPI_File_get_info
+C/func/-/MPI_File_get_position
+C/func/-/MPI_File_get_position_shared
+C/func/-/MPI_File_get_size
+C/func/-/MPI_File_get_type_extent
+C/func/-/MPI_File_get_view
+C/func/-/MPI_File_iread
+C/func/-/MPI_File_iread_at
+C/func/-/MPI_File_iread_shared
+C/func/-/MPI_File_iwrite
+C/func/-/MPI_File_iwrite_at
+C/func/-/MPI_File_iwrite_shared
+C/func/-/MPI_File_open
+C/func/-/MPI_File_preallocate
+C/func/-/MPI_File_read
+C/func/-/MPI_File_read_all
+C/func/-/MPI_File_read_all_begin
+C/func/-/MPI_File_read_all_end
+C/func/-/MPI_File_read_at
+C/func/-/MPI_File_read_at_all
+C/func/-/MPI_File_read_at_all_begin
+C/func/-/MPI_File_read_at_all_end
+C/func/-/MPI_File_read_ordered
+C/func/-/MPI_File_read_ordered_begin
+C/func/-/MPI_File_read_ordered_end
+C/func/-/MPI_File_read_shared
+C/func/-/MPI_File_seek
+C/func/-/MPI_File_seek_shared
+C/func/-/MPI_File_set_atomicity
+C/func/-/MPI_File_set_errhandler
+C/func/-/MPI_File_set_info
+C/func/-/MPI_File_set_size
+C/func/-/MPI_File_set_view
+C/func/-/MPI_File_sync
+C/func/-/MPI_File_write
+C/func/-/MPI_File_write_all
+C/func/-/MPI_File_write_all_begin
+C/func/-/MPI_File_write_all_end
+C/func/-/MPI_File_write_at
+C/func/-/MPI_File_write_at_all
+C/func/-/MPI_File_write_at_all_begin
+C/func/-/MPI_File_write_at_all_end
+C/func/-/MPI_File_write_ordered
+C/func/-/MPI_File_write_ordered_begin
+C/func/-/MPI_File_write_ordered_end
+C/func/-/MPI_File_write_shared
+C/func/-/MPI_Finalize
+C/func/-/MPI_Finalized
+C/func/-/MPI_Free_mem
+C/func/-/MPI_GATHER
+C/func/-/MPI_Gather
+C/func/-/MPI_Gatherv
+C/func/-/MPI_Get
+C/func/-/MPI_Get_address
+C/func/-/MPI_Get_count
+C/func/-/MPI_Get_elements
+C/func/-/MPI_Get_processor_name
+C/func/-/MPI_Get_version
+C/func/-/MPI_Graph_create
+C/func/-/MPI_Graph_get
+C/func/-/MPI_Graph_map
+C/func/-/MPI_Graph_neighbors
+C/func/-/MPI_Graph_neighbors_count
+C/func/-/MPI_Graphdims_get
+C/func/-/MPI_Grequest_complete
+C/func/-/MPI_Grequest_start
+C/func/-/MPI_Group_c2f
+C/func/-/MPI_Group_compare
+C/func/-/MPI_Group_difference
+C/func/-/MPI_Group_excl
+C/func/-/MPI_Group_f2c
+C/func/-/MPI_Group_free
+C/func/-/MPI_Group_incl
+C/func/-/MPI_Group_intersection
+C/func/-/MPI_Group_range_excl
+C/func/-/MPI_Group_range_incl
+C/func/-/MPI_Group_rank
+C/func/-/MPI_Group_size
+C/func/-/MPI_Group_translate_ranks
+C/func/-/MPI_Group_union
+C/func/-/MPI_Ibsend
+C/func/-/MPI_Info_c2f
+C/func/-/MPI_Info_create
+C/func/-/MPI_Info_delete
+C/func/-/MPI_Info_dup
+C/func/-/MPI_Info_f2c
+C/func/-/MPI_Info_free
+C/func/-/MPI_Info_get
+C/func/-/MPI_Info_get_nkeys
+C/func/-/MPI_Info_get_nthkey
+C/func/-/MPI_Info_get_valuelen
+C/func/-/MPI_Info_set
+C/func/-/MPI_Init
+C/func/-/MPI_Init_thread
+C/func/-/MPI_Initialized
+C/func/-/MPI_Intercomm_create
+C/func/-/MPI_Intercomm_merge
+C/func/-/MPI_Iprobe
+C/func/-/MPI_Irecv
+C/func/-/MPI_Irsend
+C/func/-/MPI_Is_thread_main
+C/func/-/MPI_Isend
+C/func/-/MPI_Issend
+C/func/-/MPI_Keyval_create
+C/func/-/MPI_Keyval_free
+C/func/-/MPI_Lookup_name
+C/func/-/MPI_Op_c2f
+C/func/-/MPI_Op_create
+C/func/-/MPI_Op_f2c
+C/func/-/MPI_Op_free
+C/func/-/MPI_Open_port
+C/func/-/MPI_Pack
+C/func/-/MPI_Pack_external
+C/func/-/MPI_Pack_external_size
+C/func/-/MPI_Pack_size
+C/func/-/MPI_Pcontrol
+C/func/-/MPI_Probe
+C/func/-/MPI_Publish_name
+C/func/-/MPI_Put
+C/func/-/MPI_Query_thread
+C/func/-/MPI_Recv
+C/func/-/MPI_Recv_init
+C/func/-/MPI_Reduce
+C/func/-/MPI_Reduce_scatter
+C/func/-/MPI_Register_datarep
+C/func/-/MPI_Request_c2f
+C/func/-/MPI_Request_f2c
+C/func/-/MPI_Request_free
+C/func/-/MPI_Request_get_status
+C/func/-/MPI_Rsend
+C/func/-/MPI_Rsend_init
+C/func/-/MPI_Scan
+C/func/-/MPI_Scatter
+C/func/-/MPI_Scatterv
+C/func/-/MPI_Send
+C/func/-/MPI_Send_init
+C/func/-/MPI_Sendrecv
+C/func/-/MPI_Sendrecv_replace
+C/func/-/MPI_Sizeof
+C/func/-/MPI_Ssend
+C/func/-/MPI_Ssend_init
+C/func/-/MPI_Start
+C/func/-/MPI_Startall
+C/func/-/MPI_Status_c2f
+C/func/-/MPI_Status_f2c
+C/func/-/MPI_Status_set_cancelled
+C/func/-/MPI_Status_set_elements
+C/func/-/MPI_Test
+C/func/-/MPI_Test_cancelled
+C/func/-/MPI_Testall
+C/func/-/MPI_Testany
+C/func/-/MPI_Testsome
+C/func/-/MPI_Topo_test
+C/func/-/MPI_Type_c2f
+C/func/-/MPI_Type_commit
+C/func/-/MPI_Type_contiguous
+C/func/-/MPI_Type_create_darray
+C/func/-/MPI_Type_create_f90_complex
+C/func/-/MPI_Type_create_f90_integer
+C/func/-/MPI_Type_create_f90_real
+C/func/-/MPI_Type_create_hindexed
+C/func/-/MPI_Type_create_hvector
+C/func/-/MPI_Type_create_indexed_block
+C/func/-/MPI_Type_create_keyval
+C/func/-/MPI_Type_create_resized
+C/func/-/MPI_Type_create_struct
+C/func/-/MPI_Type_create_subarray
+C/func/-/MPI_Type_delete_attr
+C/func/-/MPI_Type_dup
+C/func/-/MPI_Type_extent
+C/func/-/MPI_Type_f2c
+C/func/-/MPI_Type_free
+C/func/-/MPI_Type_free_keyval
+C/func/-/MPI_Type_get_attr
+C/func/-/MPI_Type_get_contents
+C/func/-/MPI_Type_get_envelope
+C/func/-/MPI_Type_get_extent
+C/func/-/MPI_Type_get_name
+C/func/-/MPI_Type_get_true_extent
+C/func/-/MPI_Type_hindexed
+C/func/-/MPI_Type_hvector
+C/func/-/MPI_Type_indexed
+C/func/-/MPI_Type_lb
+C/func/-/MPI_Type_match_size
+C/func/-/MPI_Type_set_attr
+C/func/-/MPI_Type_set_name
+C/func/-/MPI_Type_size
+C/func/-/MPI_Type_struct
+C/func/-/MPI_Type_ub
+C/func/-/MPI_Type_vector
+C/func/-/MPI_Unpack
+C/func/-/MPI_Unpack_external
+C/func/-/MPI_Unpublish_name
+C/func/-/MPI_Wait
+C/func/-/MPI_Waitall
+C/func/-/MPI_Waitany
+C/func/-/MPI_Waitsome
+C/func/-/MPI_Win_c2f
+C/func/-/MPI_Win_call_errhandler
+C/func/-/MPI_Win_complete
+C/func/-/MPI_Win_create
+C/func/-/MPI_Win_create_errhandler
+C/func/-/MPI_Win_create_keyval
+C/func/-/MPI_Win_delete_attr
+C/func/-/MPI_Win_f2c
+C/func/-/MPI_Win_fence
+C/func/-/MPI_Win_free
+C/func/-/MPI_Win_free_keyval
+C/func/-/MPI_Win_get_attr
+C/func/-/MPI_Win_get_errhandler
+C/func/-/MPI_Win_get_group
+C/func/-/MPI_Win_get_name
+C/func/-/MPI_Win_lock
+C/func/-/MPI_Win_post
+C/func/-/MPI_Win_set_attr
+C/func/-/MPI_Win_set_errhandler
+C/func/-/MPI_Win_set_name
+C/func/-/MPI_Win_start
+C/func/-/MPI_Win_test
+C/func/-/MPI_Win_unlock
+C/func/-/MPI_Win_wait
+C/func/-/MPI_Wtick
+C/func/-/MPI_Wtime
+C/econst/-/MPLibrary_DevelopmentRevision
+C/econst/-/MPLibrary_MajorVersion
+C/econst/-/MPLibrary_MinorVersion
+C/econst/-/MPLibrary_Release
+C/func/-/MPModifyNotification
+C/func/-/MPModifyNotificationParameters
+C/tdef/-/MPNotificationID
+C/tdef/-/MPNotificationInfo
+C/func/-/MPNotifyQueue
+C/tdef/-/mpo_audit_check_postselect_t
+C/tdef/-/mpo_audit_check_preselect_t
+C/tdef/-/mpo_bpfdesc_check_receive_t
+C/tdef/-/mpo_bpfdesc_label_associate_t
+C/tdef/-/mpo_bpfdesc_label_destroy_t
+C/tdef/-/mpo_bpfdesc_label_init_t
+C/tdef/-/mpo_cred_check_label_update_execve_t
+C/tdef/-/mpo_cred_check_label_update_t
+C/tdef/-/mpo_cred_check_visible_t
+C/tdef/-/mpo_cred_label_associate_fork_t
+C/tdef/-/mpo_cred_label_associate_kernel_t
+C/tdef/-/mpo_cred_label_associate_t
+C/tdef/-/mpo_cred_label_associate_user_t
+C/tdef/-/mpo_cred_label_destroy_t
+C/tdef/-/mpo_cred_label_externalize_audit_t
+C/tdef/-/mpo_cred_label_externalize_t
+C/tdef/-/mpo_cred_label_init_t
+C/tdef/-/mpo_cred_label_internalize_t
+C/tdef/-/mpo_cred_label_update_execve_t
+C/tdef/-/mpo_cred_label_update_t
+C/tdef/-/mpo_devfs_label_associate_device_t
+C/tdef/-/mpo_devfs_label_associate_directory_t
+C/tdef/-/mpo_devfs_label_copy_t
+C/tdef/-/mpo_devfs_label_destroy_t
+C/tdef/-/mpo_devfs_label_init_t
+C/tdef/-/mpo_devfs_label_update_t
+C/tdef/-/mpo_file_check_change_offset_t
+C/tdef/-/mpo_file_check_create_t
+C/tdef/-/mpo_file_check_dup_t
+C/tdef/-/mpo_file_check_fcntl_t
+C/tdef/-/mpo_file_check_get_offset_t
+C/tdef/-/mpo_file_check_get_t
+C/tdef/-/mpo_file_check_inherit_t
+C/tdef/-/mpo_file_check_ioctl_t
+C/tdef/-/mpo_file_check_lock_t
+C/tdef/-/mpo_file_check_mmap_downgrade_t
+C/tdef/-/mpo_file_check_mmap_t
+C/tdef/-/mpo_file_check_receive_t
+C/tdef/-/mpo_file_check_set_t
+C/tdef/-/mpo_file_label_associate_t
+C/tdef/-/mpo_file_label_destroy_t
+C/tdef/-/mpo_file_label_init_t
+C/tdef/-/mpo_ifnet_check_label_update_t
+C/tdef/-/mpo_ifnet_check_transmit_t
+C/tdef/-/mpo_ifnet_label_associate_t
+C/tdef/-/mpo_ifnet_label_copy_t
+C/tdef/-/mpo_ifnet_label_destroy_t
+C/tdef/-/mpo_ifnet_label_externalize_t
+C/tdef/-/mpo_ifnet_label_init_t
+C/tdef/-/mpo_ifnet_label_internalize_t
+C/tdef/-/mpo_ifnet_label_recycle_t
+C/tdef/-/mpo_ifnet_label_update_t
+C/tdef/-/mpo_inpcb_check_deliver_t
+C/tdef/-/mpo_inpcb_label_associate_t
+C/tdef/-/mpo_inpcb_label_destroy_t
+C/tdef/-/mpo_inpcb_label_init_t
+C/tdef/-/mpo_inpcb_label_recycle_t
+C/tdef/-/mpo_inpcb_label_update_t
+C/tdef/-/mpo_iokit_check_device_t
+C/tdef/-/mpo_ipq_label_associate_t
+C/tdef/-/mpo_ipq_label_compare_t
+C/tdef/-/mpo_ipq_label_destroy_t
+C/tdef/-/mpo_ipq_label_init_t
+C/tdef/-/mpo_ipq_label_update_t
+C/tdef/-/mpo_lctx_check_label_update_t
+C/tdef/-/mpo_lctx_label_destroy_t
+C/tdef/-/mpo_lctx_label_externalize_t
+C/tdef/-/mpo_lctx_label_init_t
+C/tdef/-/mpo_lctx_label_internalize_t
+C/tdef/-/mpo_lctx_label_update_t
+C/tdef/-/mpo_lctx_notify_create_t
+C/tdef/-/mpo_lctx_notify_join_t
+C/tdef/-/mpo_lctx_notify_leave_t
+C/tdef/-/mpo_mbuf_label_associate_bpfdesc_t
+C/tdef/-/mpo_mbuf_label_associate_ifnet_t
+C/tdef/-/mpo_mbuf_label_associate_inpcb_t
+C/tdef/-/mpo_mbuf_label_associate_ipq_t
+C/tdef/-/mpo_mbuf_label_associate_linklayer_t
+C/tdef/-/mpo_mbuf_label_associate_multicast_encap_t
+C/tdef/-/mpo_mbuf_label_associate_netlayer_t
+C/tdef/-/mpo_mbuf_label_associate_socket_t
+C/tdef/-/mpo_mbuf_label_copy_t
+C/tdef/-/mpo_mbuf_label_destroy_t
+C/tdef/-/mpo_mbuf_label_init_t
+C/tdef/-/mpo_mount_check_fsctl_t
+C/tdef/-/mpo_mount_check_getattr_t
+C/tdef/-/mpo_mount_check_label_update_t
+C/tdef/-/mpo_mount_check_mount_t
+C/tdef/-/mpo_mount_check_remount_t
+C/tdef/-/mpo_mount_check_setattr_t
+C/tdef/-/mpo_mount_check_stat_t
+C/tdef/-/mpo_mount_check_umount_t
+C/tdef/-/mpo_mount_label_associate_t
+C/tdef/-/mpo_mount_label_destroy_t
+C/tdef/-/mpo_mount_label_externalize_t
+C/tdef/-/mpo_mount_label_init_t
+C/tdef/-/mpo_mount_label_internalize_t
+C/tdef/-/mpo_netinet_fragment_t
+C/tdef/-/mpo_netinet_icmp_reply_t
+C/tdef/-/mpo_netinet_tcp_reply_t
+C/tdef/-/mpo_pipe_check_ioctl_t
+C/tdef/-/mpo_pipe_check_kqfilter_t
+C/tdef/-/mpo_pipe_check_label_update_t
+C/tdef/-/mpo_pipe_check_read_t
+C/tdef/-/mpo_pipe_check_select_t
+C/tdef/-/mpo_pipe_check_stat_t
+C/tdef/-/mpo_pipe_check_write_t
+C/tdef/-/mpo_pipe_label_associate_t
+C/tdef/-/mpo_pipe_label_copy_t
+C/tdef/-/mpo_pipe_label_destroy_t
+C/tdef/-/mpo_pipe_label_externalize_t
+C/tdef/-/mpo_pipe_label_init_t
+C/tdef/-/mpo_pipe_label_internalize_t
+C/tdef/-/mpo_pipe_label_update_t
+C/tdef/-/mpo_policy_destroy_t
+C/tdef/-/mpo_policy_init_t
+C/tdef/-/mpo_policy_initbsd_t
+C/tdef/-/mpo_policy_syscall_t
+C/tdef/-/mpo_port_check_copy_send_t
+C/tdef/-/mpo_port_check_hold_receive_t
+C/tdef/-/mpo_port_check_hold_send_once_t
+C/tdef/-/mpo_port_check_hold_send_t
+C/tdef/-/mpo_port_check_label_update_t
+C/tdef/-/mpo_port_check_make_send_once_t
+C/tdef/-/mpo_port_check_make_send_t
+C/tdef/-/mpo_port_check_method_t
+C/tdef/-/mpo_port_check_move_receive_t
+C/tdef/-/mpo_port_check_move_send_once_t
+C/tdef/-/mpo_port_check_move_send_t
+C/tdef/-/mpo_port_check_receive_t
+C/tdef/-/mpo_port_check_send_t
+C/tdef/-/mpo_port_check_service_t
+C/tdef/-/mpo_port_label_associate_kernel_t
+C/tdef/-/mpo_port_label_associate_t
+C/tdef/-/mpo_port_label_compute_t
+C/tdef/-/mpo_port_label_copy_t
+C/tdef/-/mpo_port_label_destroy_t
+C/tdef/-/mpo_port_label_init_t
+C/tdef/-/mpo_port_label_update_cred_t
+C/tdef/-/mpo_port_label_update_kobject_t
+C/tdef/-/mpo_posixsem_check_create_t
+C/tdef/-/mpo_posixsem_check_open_t
+C/tdef/-/mpo_posixsem_check_post_t
+C/tdef/-/mpo_posixsem_check_unlink_t
+C/tdef/-/mpo_posixsem_check_wait_t
+C/tdef/-/mpo_posixsem_label_associate_t
+C/tdef/-/mpo_posixsem_label_destroy_t
+C/tdef/-/mpo_posixsem_label_init_t
+C/tdef/-/mpo_posixshm_check_create_t
+C/tdef/-/mpo_posixshm_check_mmap_t
+C/tdef/-/mpo_posixshm_check_open_t
+C/tdef/-/mpo_posixshm_check_stat_t
+C/tdef/-/mpo_posixshm_check_truncate_t
+C/tdef/-/mpo_posixshm_check_unlink_t
+C/tdef/-/mpo_posixshm_label_associate_t
+C/tdef/-/mpo_posixshm_label_destroy_t
+C/tdef/-/mpo_posixshm_label_init_t
+C/tdef/-/mpo_proc_check_debug_t
+C/tdef/-/mpo_proc_check_fork_t
+C/tdef/-/mpo_proc_check_get_task_name_t
+C/tdef/-/mpo_proc_check_get_task_t
+C/tdef/-/mpo_proc_check_getaudit_t
+C/tdef/-/mpo_proc_check_getauid_t
+C/tdef/-/mpo_proc_check_getlcid_t
+C/tdef/-/mpo_proc_check_mprotect_t
+C/tdef/-/mpo_proc_check_sched_t
+C/tdef/-/mpo_proc_check_setaudit_t
+C/tdef/-/mpo_proc_check_setauid_t
+C/tdef/-/mpo_proc_check_setlcid_t
+C/tdef/-/mpo_proc_check_signal_t
+C/tdef/-/mpo_proc_check_wait_t
+C/tdef/-/mpo_proc_label_destroy_t
+C/tdef/-/mpo_proc_label_init_t
+C/tdef/-/mpo_socket_check_accept_t
+C/tdef/-/mpo_socket_check_accepted_t
+C/tdef/-/mpo_socket_check_bind_t
+C/tdef/-/mpo_socket_check_connect_t
+C/tdef/-/mpo_socket_check_create_t
+C/tdef/-/mpo_socket_check_deliver_t
+C/tdef/-/mpo_socket_check_getsockopt_t
+C/tdef/-/mpo_socket_check_kqfilter_t
+C/tdef/-/mpo_socket_check_label_update_t
+C/tdef/-/mpo_socket_check_listen_t
+C/tdef/-/mpo_socket_check_receive_t
+C/tdef/-/mpo_socket_check_received_t
+C/tdef/-/mpo_socket_check_select_t
+C/tdef/-/mpo_socket_check_send_t
+C/tdef/-/mpo_socket_check_setsockopt_t
+C/tdef/-/mpo_socket_check_stat_t
+C/tdef/-/mpo_socket_label_associate_accept_t
+C/tdef/-/mpo_socket_label_associate_t
+C/tdef/-/mpo_socket_label_copy_t
+C/tdef/-/mpo_socket_label_destroy_t
+C/tdef/-/mpo_socket_label_externalize_t
+C/tdef/-/mpo_socket_label_init_t
+C/tdef/-/mpo_socket_label_internalize_t
+C/tdef/-/mpo_socket_label_update_t
+C/tdef/-/mpo_socketpeer_label_associate_mbuf_t
+C/tdef/-/mpo_socketpeer_label_associate_socket_t
+C/tdef/-/mpo_socketpeer_label_destroy_t
+C/tdef/-/mpo_socketpeer_label_externalize_t
+C/tdef/-/mpo_socketpeer_label_init_t
+C/tdef/-/mpo_system_check_acct_t
+C/tdef/-/mpo_system_check_audit_t
+C/tdef/-/mpo_system_check_auditctl_t
+C/tdef/-/mpo_system_check_auditon_t
+C/tdef/-/mpo_system_check_host_priv_t
+C/tdef/-/mpo_system_check_nfsd_t
+C/tdef/-/mpo_system_check_reboot_t
+C/tdef/-/mpo_system_check_settime_t
+C/tdef/-/mpo_system_check_swapoff_t
+C/tdef/-/mpo_system_check_swapon_t
+C/tdef/-/mpo_system_check_sysctl_t
+C/tdef/-/mpo_sysvmsg_label_associate_t
+C/tdef/-/mpo_sysvmsg_label_destroy_t
+C/tdef/-/mpo_sysvmsg_label_init_t
+C/tdef/-/mpo_sysvmsg_label_recycle_t
+C/tdef/-/mpo_sysvmsq_check_enqueue_t
+C/tdef/-/mpo_sysvmsq_check_msgrcv_t
+C/tdef/-/mpo_sysvmsq_check_msgrmid_t
+C/tdef/-/mpo_sysvmsq_check_msqctl_t
+C/tdef/-/mpo_sysvmsq_check_msqget_t
+C/tdef/-/mpo_sysvmsq_check_msqrcv_t
+C/tdef/-/mpo_sysvmsq_check_msqsnd_t
+C/tdef/-/mpo_sysvmsq_label_associate_t
+C/tdef/-/mpo_sysvmsq_label_destroy_t
+C/tdef/-/mpo_sysvmsq_label_init_t
+C/tdef/-/mpo_sysvmsq_label_recycle_t
+C/tdef/-/mpo_sysvsem_check_semctl_t
+C/tdef/-/mpo_sysvsem_check_semget_t
+C/tdef/-/mpo_sysvsem_check_semop_t
+C/tdef/-/mpo_sysvsem_label_associate_t
+C/tdef/-/mpo_sysvsem_label_destroy_t
+C/tdef/-/mpo_sysvsem_label_init_t
+C/tdef/-/mpo_sysvsem_label_recycle_t
+C/tdef/-/mpo_sysvshm_check_shmat_t
+C/tdef/-/mpo_sysvshm_check_shmctl_t
+C/tdef/-/mpo_sysvshm_check_shmdt_t
+C/tdef/-/mpo_sysvshm_check_shmget_t
+C/tdef/-/mpo_sysvshm_label_associate_t
+C/tdef/-/mpo_sysvshm_label_destroy_t
+C/tdef/-/mpo_sysvshm_label_init_t
+C/tdef/-/mpo_sysvshm_label_recycle_t
+C/tdef/-/mpo_task_label_associate_kernel_t
+C/tdef/-/mpo_task_label_associate_t
+C/tdef/-/mpo_task_label_copy_t
+C/tdef/-/mpo_task_label_destroy_t
+C/tdef/-/mpo_task_label_externalize_t
+C/tdef/-/mpo_task_label_init_t
+C/tdef/-/mpo_task_label_internalize_t
+C/tdef/-/mpo_task_label_update_t
+C/tdef/-/mpo_thread_userret_t
+C/tdef/-/mpo_vnode_check_access_t
+C/tdef/-/mpo_vnode_check_chdir_t
+C/tdef/-/mpo_vnode_check_chroot_t
+C/tdef/-/mpo_vnode_check_create_t
+C/tdef/-/mpo_vnode_check_deleteextattr_t
+C/tdef/-/mpo_vnode_check_exchangedata_t
+C/tdef/-/mpo_vnode_check_exec_t
+C/tdef/-/mpo_vnode_check_getattrlist_t
+C/tdef/-/mpo_vnode_check_getextattr_t
+C/tdef/-/mpo_vnode_check_ioctl_t
+C/tdef/-/mpo_vnode_check_kqfilter_t
+C/tdef/-/mpo_vnode_check_label_update_t
+C/tdef/-/mpo_vnode_check_link_t
+C/tdef/-/mpo_vnode_check_listextattr_t
+C/tdef/-/mpo_vnode_check_lookup_t
+C/tdef/-/mpo_vnode_check_open_t
+C/tdef/-/mpo_vnode_check_read_t
+C/tdef/-/mpo_vnode_check_readdir_t
+C/tdef/-/mpo_vnode_check_readlink_t
+C/tdef/-/mpo_vnode_check_rename_from_t
+C/tdef/-/mpo_vnode_check_rename_to_t
+C/tdef/-/mpo_vnode_check_revoke_t
+C/tdef/-/mpo_vnode_check_select_t
+C/tdef/-/mpo_vnode_check_setattrlist_t
+C/tdef/-/mpo_vnode_check_setextattr_t
+C/tdef/-/mpo_vnode_check_setflags_t
+C/tdef/-/mpo_vnode_check_setmode_t
+C/tdef/-/mpo_vnode_check_setowner_t
+C/tdef/-/mpo_vnode_check_setutimes_t
+C/tdef/-/mpo_vnode_check_signature_t
+C/tdef/-/mpo_vnode_check_stat_t
+C/tdef/-/mpo_vnode_check_truncate_t
+C/tdef/-/mpo_vnode_check_uipc_bind_t
+C/tdef/-/mpo_vnode_check_uipc_connect_t
+C/tdef/-/mpo_vnode_check_unlink_t
+C/tdef/-/mpo_vnode_check_write_t
+C/tdef/-/mpo_vnode_label_associate_devfs_t
+C/tdef/-/mpo_vnode_label_associate_extattr_t
+C/tdef/-/mpo_vnode_label_associate_file_t
+C/tdef/-/mpo_vnode_label_associate_pipe_t
+C/tdef/-/mpo_vnode_label_associate_posixsem_t
+C/tdef/-/mpo_vnode_label_associate_posixshm_t
+C/tdef/-/mpo_vnode_label_associate_singlelabel_t
+C/tdef/-/mpo_vnode_label_associate_socket_t
+C/tdef/-/mpo_vnode_label_copy_t
+C/tdef/-/mpo_vnode_label_destroy_t
+C/tdef/-/mpo_vnode_label_externalize_audit_t
+C/tdef/-/mpo_vnode_label_externalize_t
+C/tdef/-/mpo_vnode_label_init_t
+C/tdef/-/mpo_vnode_label_internalize_t
+C/tdef/-/mpo_vnode_label_recycle_t
+C/tdef/-/mpo_vnode_label_store_t
+C/tdef/-/mpo_vnode_label_update_extattr_t
+C/tdef/-/mpo_vnode_label_update_t
+C/tdef/-/mpo_vnode_notify_create_t
+C/func/-/mpool
+C/func/-/mpool_close
+C/func/-/mpool_filter
+C/func/-/mpool_get
+C/func/-/mpool_new
+C/func/-/mpool_open
+C/func/-/mpool_put
+C/func/-/mpool_sync
+C/tdef/-/MPOpaqueID
+C/tdef/-/MPOpaqueIDClass
+C/tdef/-/MPPageSizeClass
+C/tdef/-/MPProcessID
+C/func/-/MPProcessors
+C/func/-/MPProcessorsScheduled
+C/tdef/-/MPQueueID
+C/tdef/-/MPQueueInfo
+C/func/-/MPRegisterDebugger
+C/func/-/MPRemoteCall
+C/func/-/MPRemoteCallCFM
+C/tdef/-/MPRemoteContext
+C/tdef/-/MPRemoteProcedure
+C/func/-/mprotect
+C/tdef/-/MPSemaphoreCount
+C/tdef/-/MPSemaphoreID
+C/tdef/-/MPSemaphoreInfo
+C/func/-/MPSetEvent
+C/func/-/MPSetExceptionHandler
+C/func/-/MPSetQueueReserve
+C/func/-/MPSetTaskState
+C/func/-/MPSetTaskStorageValue
+C/func/-/MPSetTaskType
+C/func/-/MPSetTaskWeight
+C/func/-/MPSetTimerNotify
+C/func/-/MPSignalSemaphore
+C/tdef/-/MPTaskID
+C/tdef/-/MPTaskInfo
+C/tdef/-/MPTaskInfoVersion2
+C/func/-/MPTaskIsPreemptive
+C/tdef/-/MPTaskOptions
+C/tdef/-/MPTaskStateKind
+C/tdef/-/MPTaskWeight
+C/func/-/MPTerminateTask
+C/func/-/MPThrowException
+C/tdef/-/MPTimerID
+C/func/-/MPUnregisterDebugger
+C/func/-/MPWaitForEvent
+C/func/-/MPWaitOnQueue
+C/func/-/MPWaitOnSemaphore
+C/econst/-/mpWorkFlagCopyWorkBlock
+C/econst/-/mpWorkFlagDoCompletion
+C/econst/-/mpWorkFlagDontBlock
+C/econst/-/mpWorkFlagDoWork
+C/econst/-/mpWorkFlagGetIsRunning
+C/econst/-/mpWorkFlagGetProcessorCount
+C/func/-/MPYield
+C/func/-/mrand48
+Objective-C/clm/DRMSF/msf
+Objective-C/instm/DRMSF/msfByAdding:
+Objective-C/instm/DRMSF/msfBySubtracting:
+Objective-C/clm/DRMSF/msfWithFrames:
+Objective-C/clm/DRMSF/msfWithString:
+Objective-C/instm/NSPortMessage/msgid
+C/func/-/msync
+C/func/-/mtrans
+C/func/-/mtransD
+C/func/-/mul
+C/func/-/mul_add
+C/func/-/multibyte
+C/tdef/-/MultiDevParam
+Objective-C/instm/NSConnection/multipleThreadsEnabled
+Objective-C/instm/NSNumberFormatter/multiplier
+JavaScript/instm/SVGMatrix/multiply
+JavaScript/instm/WebKitCSSMatrix/multiply
+C/func/-/munlock
+C/func/-/munmap
+C/tdef/-/MusicEventIterator
+C/func/-/MusicEventIteratorDeleteEvent
+C/func/-/MusicEventIteratorGetEventInfo
+C/func/-/MusicEventIteratorHasCurrentEvent
+C/func/-/MusicEventIteratorHasNextEvent
+C/func/-/MusicEventIteratorHasPreviousEvent
+C/func/-/MusicEventIteratorNextEvent
+C/func/-/MusicEventIteratorPreviousEvent
+C/func/-/MusicEventIteratorSeek
+C/func/-/MusicEventIteratorSetEventInfo
+C/func/-/MusicEventIteratorSetEventTime
+C/tdef/-/MusicEventType
+C/tdef/-/MusicEventUserData
+C/func/-/MusicMediaGetIndexedTunePlayer
+C/tdef/-/MusicPlayer
+C/func/-/MusicPlayerGetBeatsForHostTime
+C/func/-/MusicPlayerGetHostTimeForBeats
+C/func/-/MusicPlayerGetPlayRateScalar
+C/func/-/MusicPlayerGetSequence
+C/func/-/MusicPlayerGetTime
+C/func/-/MusicPlayerIsPlaying
+C/func/-/MusicPlayerPreroll
+C/func/-/MusicPlayerSetPlayRateScalar
+C/func/-/MusicPlayerSetSequence
+C/func/-/MusicPlayerSetTime
+C/func/-/MusicPlayerStart
+C/func/-/MusicPlayerStop
+C/tdef/-/MusicSequence
+C/func/-/MusicSequenceBarBeatTimeToBeats
+C/func/-/MusicSequenceBeatsToBarBeatTime
+C/func/-/MusicSequenceDisposeTrack
+C/func/-/MusicSequenceFileCreate
+C/func/-/MusicSequenceFileCreateData
+C/tdef/-/MusicSequenceFileFlags
+C/func/-/MusicSequenceFileLoad
+C/func/-/MusicSequenceFileLoadData
+C/tdef/-/MusicSequenceFileTypeID
+C/func/-/MusicSequenceGetAUGraph
+C/func/-/MusicSequenceGetBeatsForSeconds
+C/func/-/MusicSequenceGetIndTrack
+C/func/-/MusicSequenceGetInfoDictionary
+C/func/-/MusicSequenceGetSecondsForBeats
+C/func/-/MusicSequenceGetSequenceType
+C/macro/-/MusicSequenceGetSMPTEResolution
+C/func/-/MusicSequenceGetTempoTrack
+C/func/-/MusicSequenceGetTrackCount
+C/func/-/MusicSequenceGetTrackIndex
+C/tdef/-/MusicSequenceLoadFlags
+C/func/-/MusicSequenceNewTrack
+C/func/-/MusicSequenceReverse
+C/func/-/MusicSequenceSetAUGraph
+C/func/-/MusicSequenceSetMIDIEndpoint
+C/func/-/MusicSequenceSetSequenceType
+C/macro/-/MusicSequenceSetSMPTEResolution
+C/func/-/MusicSequenceSetUserCallback
+C/tdef/-/MusicSequenceType
+C/tdef/-/MusicSequenceUserCallback
+C/tdef/-/MusicTimeStamp
+C/tdef/-/MusicTrack
+C/func/-/MusicTrackClear
+C/func/-/MusicTrackCopyInsert
+C/func/-/MusicTrackCut
+C/func/-/MusicTrackGetDestMIDIEndpoint
+C/func/-/MusicTrackGetDestNode
+C/func/-/MusicTrackGetProperty
+C/func/-/MusicTrackGetSequence
+C/tdef/-/MusicTrackLoopInfo
+C/func/-/MusicTrackMerge
+C/func/-/MusicTrackMoveEvents
+C/func/-/MusicTrackNewAUPresetEvent
+C/func/-/MusicTrackNewExtendedControlEvent
+C/func/-/MusicTrackNewExtendedNoteEvent
+C/func/-/MusicTrackNewExtendedTempoEvent
+C/func/-/MusicTrackNewMetaEvent
+C/func/-/MusicTrackNewMIDIChannelEvent
+C/func/-/MusicTrackNewMIDINoteEvent
+C/func/-/MusicTrackNewMIDIRawDataEvent
+C/func/-/MusicTrackNewParameterEvent
+C/func/-/MusicTrackNewUserEvent
+C/func/-/MusicTrackSetDestMIDIEndpoint
+C/func/-/MusicTrackSetDestNode
+C/func/-/MusicTrackSetProperty
+Objective-C/instm/NSObject/mutableArrayValueForKey:
+Objective-C/instm/NSObject/mutableArrayValueForKeyPath:
+Objective-C/instm/NSMutableData/mutableBytes
+Objective-C/instm/NSTreeNode/mutableChildNodes
+Objective-C/instm/NSObject/mutableCopy
+Objective-C/intfm/NSMutableCopying/mutableCopyWithZone:
+Objective-C/clm/NSObject/mutableCopyWithZone:
+Objective-C/instm/NSObject/mutableSetValueForKey:
+Objective-C/instm/NSManagedObject/mutableSetValueForKey:
+Objective-C/instm/NSObject/mutableSetValueForKeyPath:
+Objective-C/instm/NSMutableAttributedString/mutableString
+JavaScript/data/DOMWindow/MutationEvent
+JavaScript/cl/-/MutationEvent
+Objective-C/clm/IMAVButton/muteButton
+Objective-C/instm/QTMovie/muted
+JavaScript/data/HTMLMediaElement/muted
+C/func/-/mvadd_wch
+C/func/-/mvadd_wchnstr
+C/func/-/mvadd_wchstr
+C/func/-/mvaddch
+C/func/-/mvaddchnstr
+C/func/-/mvaddchstr
+C/func/-/mvaddnstr
+C/func/-/mvaddnwstr
+C/func/-/mvaddstr
+C/func/-/mvaddwstr
+C/func/-/mvchgat
+C/func/-/mvcur
+C/func/-/mvdelch
+C/func/-/mvderwin
+C/func/-/mvget_wch
+C/func/-/mvget_wstr
+C/func/-/mvgetch
+C/func/-/mvgetn_wstr
+C/func/-/mvgetnstr
+C/func/-/mvgetstr
+C/func/-/mvhline
+C/func/-/mvhline_set
+C/func/-/mvin_wch
+C/func/-/mvin_wchnstr
+C/func/-/mvin_wchstr
+C/func/-/mvinch
+C/func/-/mvinchnstr
+C/func/-/mvinchstr
+C/func/-/mvinnstr
+C/func/-/mvinnwstr
+C/func/-/mvins_nwstr
+C/func/-/mvins_wch
+C/func/-/mvins_wstr
+C/func/-/mvinsch
+C/func/-/mvinsnstr
+C/func/-/mvinsstr
+C/func/-/mvinstr
+C/func/-/mvinwstr
+C/func/-/mvprintw
+C/func/-/mvscanw
+C/func/-/mvvline
+C/func/-/mvvline_set
+C/func/-/mvwadd_wch
+C/func/-/mvwadd_wchnstr
+C/func/-/mvwadd_wchstr
+C/func/-/mvwaddch
+C/func/-/mvwaddchnstr
+C/func/-/mvwaddchstr
+C/func/-/mvwaddnstr
+C/func/-/mvwaddnwstr
+C/func/-/mvwaddstr
+C/func/-/mvwaddwstr
+C/func/-/mvwchgat
+C/func/-/mvwdelch
+C/func/-/mvwget_wch
+C/func/-/mvwget_wstr
+C/func/-/mvwgetch
+C/func/-/mvwgetn_wstr
+C/func/-/mvwgetnstr
+C/func/-/mvwgetstr
+C/func/-/mvwhline
+C/func/-/mvwhline_set
+C/func/-/mvwin
+C/func/-/mvwin_wch
+C/func/-/mvwin_wchnstr
+C/func/-/mvwin_wchstr
+C/func/-/mvwinch
+C/func/-/mvwinchnstr
+C/func/-/mvwinchstr
+C/func/-/mvwinnstr
+C/func/-/mvwinnwstr
+C/func/-/mvwins_nwstr
+C/func/-/mvwins_wch
+C/func/-/mvwins_wstr
+C/func/-/mvwinsch
+C/func/-/mvwinsnstr
+C/func/-/mvwinsstr
+C/func/-/mvwinstr
+C/func/-/mvwinwstr
+C/func/-/mvwprintw
+C/func/-/mvwscanw
+C/func/-/mvwvline
+C/func/-/mvwvline_set
+C++/clm/ATADeviceNub/MyATACallback
+Objective-C/clm/IMService/myIdleTime
+Objective-C/clm/IMService/myStatus
+C++/clm/ATATimerEventSource/myTimeout
+C/macro/-/N_KEV_VECTORS
+Objective-C/instp/CIFilter/name
+Objective-C/instm/CIFilter/name
+Objective-C/instm/NSNameSpecifier/name
+Objective-C/instm/AMAction/name
+Objective-C/instm/CIKernel/name
+Objective-C/instm/NSConditionLock/name
+Objective-C/instm/NSRecursiveLock/name
+Objective-C/instm/NSNotification/name
+Objective-C/instm/NSColorList/name
+Objective-C/instm/NSPrinter/name
+Objective-C/instm/PDFActionNamed/name
+Objective-C/instm/PDFAnnotationStamp/name
+Objective-C/instm/NSLock/name
+Objective-C/instm/NSCondition/name
+JavaScript/instp/Application/name
+Objective-C/instm/CAEmitterCell/name
+Objective-C/instp/CAEmitterCell/name
+Objective-C/instm/QTDataReference/name
+Objective-C/instm/WebFrame/name
+Objective-C/instm/NSNetService/name
+Objective-C/instm/NSEntityMapping/name
+Objective-C/instm/NSPropertyMapping/name
+Objective-C/instm/NSPropertyDescription/name
+Objective-C/instm/NSSound/name
+Objective-C/instm/IMService/name
+Objective-C/instm/NSTimeZone/name
+C++/instm/TestInvocation/name
+C++/instm/TestCase/name
+C++/instm/TestSuite/name
+C++/instm/Test/name
+Objective-C/instp/PSAuthor/name
+Objective-C/instm/NSException/name
+Objective-C/instp/CWInterface/name
+Objective-C/instm/XGConnection/name
+Objective-C/instm/XGJob/name
+Objective-C/instm/XGGrid/name
+Objective-C/instm/NSXMLNode/name
+Objective-C/instp/IOBluetoothDevice/name
+Objective-C/instm/IOBluetoothHostController/name
+Objective-C/instm/NSHTTPCookie/name
+Objective-C/instm/NSPasteboard/name
+Objective-C/instm/NSImage/name
+Objective-C/instm/NSThread/name
+Objective-C/instm/NSHost/name
+Objective-C/instp/CAValueFunction/name
+Objective-C/instm/CAValueFunction/name
+Objective-C/instm/NSCache/name
+Objective-C/instm/NSOperationQueue/name
+Objective-C/instm/NSEntityDescription/name
+Objective-C/instm/CALayer/name
+Objective-C/instp/CALayer/name
+JavaScript/data/DOMWindow/name
+JavaScript/data/Attr/name
+JavaScript/data/DOMCoreException/name
+JavaScript/data/DocumentType/name
+JavaScript/data/HTMLImageElement/name
+JavaScript/data/HTMLTextAreaElement/name
+JavaScript/data/HTMLIFrameElement/name
+JavaScript/data/HTMLParamElement/name
+JavaScript/data/File/name
+JavaScript/data/HTMLEmbedElement/name
+JavaScript/data/HTMLMapElement/name
+JavaScript/data/HTMLSelectElement/name
+JavaScript/data/HTMLAppletElement/name
+JavaScript/data/HTMLFrameElement/name
+JavaScript/data/HTMLFormElement/name
+JavaScript/data/EventException/name
+JavaScript/data/HTMLAnchorElement/name
+JavaScript/data/HTMLButtonElement/name
+JavaScript/data/HTMLMetaElement/name
+JavaScript/data/HTMLObjectElement/name
+JavaScript/data/HTMLInputElement/name
+JavaScript/data/SVGException/name
+JavaScript/data/Plugin/name
+JavaScript/data/RangeException/name
+JavaScript/data/SharedWorkerContext/name
+JavaScript/data/WebKitCSSKeyframesRule/name
+JavaScript/data/WebGLActiveInfo/name
+JavaScript/data/XMLHttpRequestException/name
+JavaScript/data/XPathException/name
+JavaScript/instm/HTMLCollection/namedItem
+JavaScript/instm/HTMLAllCollection/namedItem
+JavaScript/instm/HTMLSelectElement/namedItem
+JavaScript/instm/PluginArray/namedItem
+JavaScript/instm/MimeTypeArray/namedItem
+JavaScript/instm/Plugin/namedItem
+JavaScript/data/DOMWindow/NamedNodeMap
+JavaScript/cl/-/NamedNodeMap
+Objective-C/instm/ABPeoplePickerView/nameDoubleAction
+Objective-C/instp/ABPeoplePickerView/nameDoubleAction
+Objective-C/instm/NSSavePanel/nameFieldLabel
+Objective-C/instm/NSSavePanel/nameFieldStringValue
+Objective-C/instm/IBDocument/nameForDocumentImage:
+C++/clm/IONetworkMedium/nameForType
+C++/clm/IOService/nameMatching
+Objective-C/intfm/IKSlideshowDataSource/nameOfSlideshowItemAtIndex:
+Objective-C/instp/IOBluetoothDevice/nameOrAddress
+Objective-C/instm/NSHost/names
+Objective-C/instm/NSBrowser/namesOfPromisedFilesDroppedAtDestination:
+Objective-C/intfm/NSDraggingInfo/namesOfPromisedFilesDroppedAtDestination:
+Objective-C/instm/NSObject/namesOfPromisedFilesDroppedAtDestination:
+JavaScript/clconst/DOMCoreException/NAMESPACE_ERR
+Objective-C/instm/NSXMLElement/namespaceForPrefix:
+Objective-C/instm/NSXMLElement/namespaces
+JavaScript/data/core/namespaceURI
+Objective-C/clm/NSXMLNode/namespaceWithName:stringValue:
+C/func/-/nan
+C/func/-/nanf
+C/func/-/nanl
+C/func/-/nanosleep
+C/func/-/napms
+JavaScript/clconst/DataGridColumn/NATURAL_SORT
+JavaScript/data/HTMLImageElement/naturalHeight
+C++/macro/-/naturalOutputSegment
+JavaScript/data/HTMLImageElement/naturalWidth
+JavaScript/data/DOMWindow/navigator
+JavaScript/cl/-/Navigator
+JavaScript/data/WorkerContext/navigator
+C/func/-/NCMBeginMatching
+C/tdef/-/NCMConcatProfileSet
+C/tdef/-/NCMConcatProfileSpec
+C/tdef/-/NCMDeviceProfileInfo
+C/func/-/NCMDrawMatchedPicture
+C/func/-/NCMGetProfileLocation
+C/func/-/NCMSetSystemProfile
+C/func/-/NCMUnflattenProfile
+C/func/-/NCMUseProfileComment
+C/func/-/ncurses
+C/func/-/NCWConcatColorWorld
+C/func/-/NCWNewColorWorld
+C/func/-/NCWNewLinkProfile
+C/func/-/nd6_lookup_ipv6
+C/func/-/nearbyint
+C/func/-/nearbyintf
+C/func/-/nearbyintl
+JavaScript/clconst/WebGLRenderingContext/NEAREST
+JavaScript/clconst/WebGLRenderingContext/NEAREST_MIPMAP_LINEAR
+JavaScript/clconst/WebGLRenderingContext/NEAREST_MIPMAP_NEAREST
+C/func/-/NearestMacTextEncodings
+JavaScript/data/SVGLocatable/nearestViewportElement
+Objective-C/instm/NSMenuItemCell/needsDisplay
+Objective-C/instm/NSView/needsDisplay
+Objective-C/instm/CALayer/needsDisplay
+Objective-C/clm/CALayer/needsDisplayForKey:
+Objective-C/instp/CALayer/needsDisplayOnBoundsChange
+Objective-C/instm/CALayer/needsDisplayOnBoundsChange
+Objective-C/instm/CALayer/needsLayout
+Objective-C/instm/NSView/needsPanelToBecomeKey
+Objective-C/instm/NSMenuItemCell/needsSizing
+Objective-C/instm/NSMenuView/needsSizing
+Objective-C/instm/NSFileWrapper/needsToBeUpdatedFromPath:
+Objective-C/instm/NSView/needsToDrawRect:
+Objective-C/instm/NSNumberFormatter/negativeFormat
+Objective-C/instm/NSNumberFormatter/negativeInfinitySymbol
+Objective-C/instm/NSNumberFormatter/negativePrefix
+Objective-C/instm/NSNumberFormatter/negativeSuffix
+Objective-C/instm/NSRuleEditor/nestingMode
+C/func/-/net_init_add
+C/tdef/-/net_init_func_ptr
+Objective-C/instm/XGConnection/netService
+Objective-C/intfm/NSNetServiceDelegate/netService:didNotPublish:
+Objective-C/intfm/NSNetServiceDelegate/netService:didNotResolve:
+Objective-C/intfm/NSNetServiceDelegate/netService:didUpdateTXTRecordData:
+Objective-C/intfm/NSNetServiceBrowserDelegate/netServiceBrowser:didFindDomain:moreComing:
+Objective-C/intfm/NSNetServiceBrowserDelegate/netServiceBrowser:didFindService:moreComing:
+Objective-C/intfm/NSNetServiceBrowserDelegate/netServiceBrowser:didNotSearch:
+Objective-C/intfm/NSNetServiceBrowserDelegate/netServiceBrowser:didRemoveDomain:moreComing:
+Objective-C/intfm/NSNetServiceBrowserDelegate/netServiceBrowser:didRemoveService:moreComing:
+Objective-C/intfm/NSNetServiceBrowserDelegate/netServiceBrowserDidStopSearch:
+Objective-C/intfm/NSNetServiceBrowserDelegate/netServiceBrowserWillSearch:
+Objective-C/intfm/NSNetServiceDelegate/netServiceDidPublish:
+Objective-C/intfm/NSNetServiceDelegate/netServiceDidResolveAddress:
+Objective-C/intfm/NSNetServiceDelegate/netServiceDidStop:
+Objective-C/intfm/NSNetServiceDelegate/netServiceWillPublish:
+Objective-C/intfm/NSNetServiceDelegate/netServiceWillResolve:
+C/func/-/netsnmp_add_list_data
+C/func/-/netsnmp_agent
+C/tdef/-/netsnmp_agent_request_info
+C/func/-/netsnmp_baby_steps
+C/tdef/-/netsnmp_baby_steps_access_methods
+C/tdef/-/netsnmp_baby_steps_modes
+C/func/-/netsnmp_bulk_to_next
+C/func/-/netsnmp_cache_handler
+C/tdef/-/netsnmp_column_info
+C/func/-/netsnmp_compare_cstring
+C/func/-/netsnmp_compare_mem
+C/func/-/netsnmp_compare_netsnmp_index
+C/func/-/netsnmp_container
+C/func/-/netsnmp_Container_iterator
+C/func/-/netsnmp_container_simple_free
+C/func/-/netsnmp_container_table_container_extract
+C/tdef/-/netsnmp_data_list
+C/tdef/-/netsnmp_data_list_s
+C/func/-/netsnmp_debug
+C/func/-/netsnmp_ds_get_boolean
+C/func/-/netsnmp_ds_get_int
+C/func/-/netsnmp_ds_get_string
+C/macro/-/NETSNMP_DS_LIBRARY_ID
+C/func/-/netsnmp_ds_register_config
+C/func/-/netsnmp_ds_register_premib
+C/func/-/netsnmp_ds_set_boolean
+C/func/-/netsnmp_ds_set_int
+C/func/-/netsnmp_ds_set_string
+C/func/-/netsnmp_ds_shutdown
+C/func/-/netsnmp_example_scalar_int
+C/macro/-/netsnmp_get_baby_steps_handler
+C/func/-/netsnmp_get_multiplexer_handler
+C/func/-/netsnmp_handler
+C/tdef/-/netsnmp_handler_registration
+C/func/-/netsnmp_instance
+C/func/-/netsnmp_is_cache_valid
+C/tdef/-/netsnmp_iterator_info
+C/func/-/netsnmp_iterator_info_s
+C/func/-/netsnmp_leaf
+C/func/-/netsnmp_library
+C/tdef/-/netsnmp_mib_handler
+C/tdef/-/netsnmp_mib_handler_methods
+C/func/-/netsnmp_mib_handler_methods
+C/func/-/netsnmp_mib_utilities
+C/func/-/netsnmp_mode_end_call
+C/func/-/netsnmp_multiplexer
+C/func/-/netsnmp_old_api
+C/tdef/-/netsnmp_pdu
+C/func/-/netsnmp_read_only
+C/tdef/-/netsnmp_request_info
+C/func/-/netsnmp_row_merge
+C/func/-/netsnmp_scalar
+C/func/-/netsnmp_scalar_group_group
+C/func/-/netsnmp_serialize
+C/tdef/-/netsnmp_session
+C/func/-/netsnmp_set_mode_request_error
+C/func/-/netsnmp_set_request_error
+C/func/-/netsnmp_stash_cache
+C/func/-/netsnmp_table
+C/func/-/netsnmp_table_array
+C/func/-/netsnmp_table_data
+C/func/-/netsnmp_table_dataset
+C/func/-/netsnmp_table_iterator
+C/tdef/-/netsnmp_table_registration_info
+C/tdef/-/netsnmp_table_request_info
+C/func/-/netsnmp_utilities
+C/tdef/-/netsnmp_variable_list
+C/func/-/netsnmp_watcher
+C/func/-/network
+JavaScript/clconst/HTMLMediaElement/NETWORK_EMPTY
+JavaScript/clconst/DOMCoreException/NETWORK_ERR
+JavaScript/clconst/XMLHttpRequestException/NETWORK_ERR
+JavaScript/clconst/HTMLMediaElement/NETWORK_IDLE
+JavaScript/clconst/HTMLMediaElement/NETWORK_LOADED
+JavaScript/clconst/HTMLMediaElement/NETWORK_LOADING
+JavaScript/clconst/HTMLMediaElement/NETWORK_NO_SOURCE
+C/tag/-/NetworkDataAccessTypes
+C/tag/-/NetworkDataBufferTypes
+C/tag/-/NetworkFeatureFlags
+JavaScript/data/HTMLMediaElement/networkState
+JavaScript/clconst/WebGLRenderingContext/NEVER
+JavaScript/clconst/DataGridColumn/NEVER_SORTED
+Objective-C/clm/NSObject/new
+C/func/-/new_fieldtype
+C/func/-/new_form
+C/func/-/new_page
+C/func/-/new_session_cb
+C/func/-/NewAlias
+C/func/-/NewAliasFilterUPP
+C/func/-/NewAliasMinimal
+C/func/-/NewAliasMinimalFromFullPath
+C/func/-/NewAUGraph
+Objective-C/instm/NSAtomicStore/newCacheNodeForManagedObject:
+C/func/-/NewCDataHandlerUPP
+Objective-C/instm/IKImageBrowserView/newCellForRepresentedItem:
+C/func/-/NewCharDataHandlerUPP
+C/func/-/NewCMBitmapCallBackUPP
+C/func/-/NewCMConcatCallBackUPP
+C/func/-/NewCMFlattenUPP
+C/func/-/NewCMMIterateUPP
+C/func/-/NewCMProfileAccessUPP
+C/func/-/NewCMProfileFilterUPP
+C/func/-/NewCMProfileIterateUPP
+C/func/-/NewCommentHandlerUPP
+C/func/-/NewComponentFunctionUPP
+C/func/-/NewComponentMPWorkFunctionUPP
+C/func/-/NewComponentRoutineUPP
+C++/instm/IOHIDDevice/newCountryCodeNumber
+C/func/-/NewDataBrowserAcceptDragUPP
+C/func/-/NewDataBrowserAddDragItemUPP
+C/func/-/NewDataBrowserDrawItemUPP
+C/func/-/NewDataBrowserEditItemUPP
+C/func/-/NewDataBrowserGetContextualMenuUPP
+C/func/-/NewDataBrowserHitTestUPP
+C/func/-/NewDataBrowserItemAcceptDragUPP
+C/func/-/NewDataBrowserItemCompareUPP
+C/func/-/NewDataBrowserItemDataUPP
+C/func/-/NewDataBrowserItemDragRgnUPP
+C/func/-/NewDataBrowserItemHelpContentUPP
+C/func/-/NewDataBrowserItemNotificationUPP
+C/func/-/NewDataBrowserItemNotificationWithItemUPP
+C/func/-/NewDataBrowserItemReceiveDragUPP
+C/func/-/NewDataBrowserItemUPP
+C/func/-/NewDataBrowserPostProcessDragUPP
+C/func/-/NewDataBrowserReceiveDragUPP
+C/func/-/NewDataBrowserSelectContextualMenuUPP
+C/func/-/NewDataBrowserTrackingUPP
+C/func/-/NewDataHCompletionUPP
+Objective-C/instm/NSDocumentController/newDocument:
+C/func/-/NewEndDocumentHandlerUPP
+C/func/-/NewEndElementHandlerUPP
+C/func/-/NewFNSubscriptionUPP
+C/func/-/NewFSVolumeEjectUPP
+C/func/-/NewFSVolumeMountUPP
+C/func/-/NewFSVolumeUnmountUPP
+C/func/-/NewGestalt
+C/func/-/NewGestaltValue
+C/func/-/NewGetMissingComponentResourceUPP
+C/func/-/NewImageCodecDrawBandCompleteUPP
+C/func/-/NewImageCodecMPDrawBandUPP
+C/func/-/NewImageCodecTimeTriggerUPP
+C/func/-/NewImageGWorld
+C/func/-/NewIOCompletionUPP
+Objective-C/instm/NSCollectionView/newItemForRepresentedObject:
+C/econst/-/newLineBit
+Objective-C/clm/NSCharacterSet/newlineCharacterSet
+C/econst/-/newLineCharMask
+C/econst/-/newLineMask
+C/func/-/newlocale
+C++/instm/IOHIDDevice/newLocationIDNumber
+C++/instm/IOHIDDevice/newManufacturerString
+C++/instm/IONetworkController/newModelString
+C/func/-/NewMovieEditState
+C/func/-/NewMovieExportGetDataUPP
+C/func/-/NewMovieExportGetPropertyUPP
+C/func/-/NewMovieExportStageReachedCallbackUPP
+C/func/-/NewMovieTrack
+C/func/-/NewMusicEventIterator
+C/func/-/NewMusicPlayer
+C/func/-/NewMusicSequence
+Objective-C/instm/NSObjectController/newObject
+Objective-C/instm/NSDictionaryController/newObject
+C/func/-/newpad
+C/func/-/NewPMIdleUPP
+C/func/-/NewPreprocessInstructionHandlerUPP
+C++/instm/IOHIDDevice/newPrimaryUsageNumber
+C++/instm/IOHIDDevice/newPrimaryUsagePageNumber
+C++/instm/IOHIDDevice/newProductIDNumber
+C++/instm/IOHIDDevice/newProductString
+C/func/-/NewQTBandwidthNotificationUPP
+C/func/-/NewQTTrackPropertyListenerUPP
+Objective-C/instm/NSAtomicStore/newReferenceObjectForManagedObject:
+C++/instm/IOHIDDevice/newReportDescriptor
+C++/instm/IOHIDDevice/newReportIntervalNumber
+C/func/-/NewResErrUPP
+C++/instm/IONetworkController/newRevisionString
+JavaScript/data/SVGZoomEvent/newScale
+C/func/-/NewSCModalFilterUPP
+C/func/-/NewSCModalHookUPP
+Objective-C/instm/NSObject/newScriptingObjectOfClass:forValueForKey:withContentsValue:properties:
+C/func/-/NewSelectorFunctionUPP
+C++/instm/IOHIDDevice/newSerialNumber
+C++/instm/IOHIDDevice/newSerialNumberString
+C/func/-/NewSpeechChannel
+C/func/-/NewSpeechDoneUPP
+C/func/-/NewSpeechErrorUPP
+C/func/-/NewSpeechPhonemeUPP
+C/func/-/NewSpeechSyncUPP
+C/func/-/NewSpeechTextDoneUPP
+C/func/-/NewSpeechWordUPP
+C/func/-/NewSRCallBackUPP
+C/func/-/NewStartDocumentHandlerUPP
+C/func/-/NewStartElementHandlerUPP
+C++/instm/IOService/newTemperature
+C/func/-/newterm
+C/func/-/NewTrackEditState
+C/func/-/NewTrackMedia
+JavaScript/data/SVGZoomEvent/newTranslate
+C++/instm/IOHIDDevice/newTransportString
+C/func/-/NewUnicodeToTextFallbackUPP
+C++/instm/IONetworkInterface/newUserClient
+C++/instm/IOAudioEngine/newUserClient
+C++/instm/IOAudioControl/newUserClient
+C++/instm/IOHIDDevice/newUserClient
+C++/instm/IOStream/newUserClient
+C++/instm/IOService/newUserClient
+JavaScript/data/StorageEvent/newValue
+JavaScript/data/MutationEvent/newValue
+JavaScript/instm/SVGAngle/newValueSpecifiedUnits
+JavaScript/instm/SVGLength/newValueSpecifiedUnits
+C/func/-/NewVdigIntUPP
+C++/instm/IOHIDDevice/newVendorIDNumber
+C++/instm/IOHIDDevice/newVendorIDSourceNumber
+C++/instm/IONetworkController/newVendorString
+C++/instm/IOHIDDevice/newVersionNumber
+C/func/-/newwin
+Objective-C/instm/CalCalendarItem/nextAlarmDate
+Objective-C/instm/NSObject/nextAnchorForEntityName:
+C/macro/-/NextAudioFileRegion
+Objective-C/instm/NSTimeZone/nextDaylightSavingTimeTransition
+Objective-C/instm/NSTimeZone/nextDaylightSavingTimeTransitionAfterDate:
+JavaScript/data/Element/nextElementSibling
+Objective-C/instm/NSWindow/nextEventMatchingMask:
+Objective-C/instm/NSWindow/nextEventMatchingMask:untilDate:inMode:dequeue:
+Objective-C/instm/NSApplication/nextEventMatchingMask:untilDate:inMode:dequeue:
+Objective-C/instm/CARenderer/nextFrameTime
+C++/instm/IOService/nextIdleTimeout
+Objective-C/instm/NSView/nextKeyView
+Objective-C/instm/NSXMLNode/nextNode
+JavaScript/instm/NodeIterator/nextNode
+JavaScript/instm/TreeWalker/nextNode
+Objective-C/instm/NSEnumerator/nextObject
+C/func/-/NextRequest
+Objective-C/instm/NSResponder/nextResponder
+Objective-C/instm/NSXMLNode/nextSibling
+JavaScript/data/svg/nextSibling
+JavaScript/data/core/nextSibling
+JavaScript/instm/TreeWalker/nextSibling
+Objective-C/instm/NSCell/nextState
+Objective-C/instm/NSTextField/nextText
+C/func/-/nexttowardf
+Objective-C/instm/NSView/nextValidKeyView
+C/func/-/nextwctype
+C/func/-/nextwctype_l
+Objective-C/instm/NSAttributedString/nextWordFromIndex:forward:
+JavaScript/instm/InjectedScriptHost/nextWorkerId
+C/func/-/nfsclnt
+C/func/-/nfssvc
+C/func/-/nftw
+Objective-C/instm/NSViewController/nibBundle
+Objective-C/instm/NSViewController/nibName
+C/func/-/nice
+JavaScript/clconst/WebGLRenderingContext/NICEST
+C/macro/-/Nil
+C/macro/-/nil
+Objective-C/instm/NSNumberFormatter/nilSymbol
+C/func/-/nl
+C/func/-/nl_langinfo
+C/func/-/nl_langinfo_l
+C/tag/-/nlist
+C/func/-/nlist
+C/tag/-/nlist_64
+C/macro/-/NO
+JavaScript/clconst/DOMCoreException/NO_DATA_ALLOWED_ERR
+JavaScript/clconst/WebGLRenderingContext/NO_ERROR
+JavaScript/clconst/DOMCoreException/NO_MODIFICATION_ALLOWED_ERR
+JavaScript/clconst/FileError/NO_MODIFICATION_ALLOWED_ERR
+C/econst/-/noCacheBit
+C/econst/-/noCacheMask
+C/func/-/nocbreak
+JavaScript/data/DOMWindow/Node
+JavaScript/clconst/Range/NODE_AFTER
+JavaScript/clconst/Range/NODE_BEFORE
+JavaScript/clconst/Range/NODE_BEFORE_AND_AFTER
+JavaScript/clconst/Range/NODE_INSIDE
+Objective-C/instm/ODNode/nodeDetailsForKeys:error:
+JavaScript/data/DOMWindow/NodeFilter
+JavaScript/cl/-/NodeFilter
+C/tag/-/NodeFlags
+JavaScript/instm/InjectedScriptHost/nodeForId
+JavaScript/cl/-/NodeIterator
+C/func/-/nodelay
+JavaScript/data/DOMWindow/NodeList
+JavaScript/cl/-/NodeList
+Objective-C/instm/ODNode/nodeName
+Objective-C/instp/ODNode/nodeName
+JavaScript/data/core/nodeName
+Objective-C/instm/ODSession/nodeNamesAndReturnError:
+Objective-C/instm/NSXMLNode/nodesForXPath:error:
+JavaScript/data/core/nodeType
+JavaScript/data/core/nodeValue
+Objective-C/clm/ODNode/nodeWithSession:name:error:
+Objective-C/clm/ODNode/nodeWithSession:type:error:
+C/econst/-/noDMAErr
+C/econst/-/noDriveErr
+C/func/-/noecho
+C/econst/-/noErr
+C/func/-/nofilter
+JavaScript/data/HTMLAreaElement/noHref
+Objective-C/instp/CWInterface/noise
+Objective-C/instp/CWNetwork/noise
+C/econst/-/noMacDskErr
+C/econst/-/noMoreKeyColorsErr
+JavaScript/clconst/IDBDatabaseException/NON_TRANSIENT_ERR
+Objective-C/clm/NSCharacterSet/nonBaseCharacterSet
+JavaScript/clconst/WebGLRenderingContext/NONE
+C/func/-/nonl
+Objective-C/instm/NSValue/nonretainedObjectValue
+C/econst/-/noPasteboardPromiseKeeperErr
+C/func/-/noqiflush
+C/func/-/noraw
+C/econst/-/noRecordOfApp
+JavaScript/data/HTMLFrameElement/noResize
+Objective-C/instm/NSResponder/noResponderFor:
+C++/instm/IOFilterInterruptEventSource/normalInterruptOccurred
+C++/instm/IOInterruptEventSource/normalInterruptOccurred
+JavaScript/instm/core/normalize
+Objective-C/instm/NSXMLElement/normalizeAdjacentTextNodesPreservingCDATA:
+JavaScript/data/SVGAnimatedPathData/normalizedPathSegList
+Objective-C/instp/NSTouch/normalizedPosition
+Objective-C/instm/NSTouch/normalizedPosition
+JavaScript/data/HTMLHRElement/noShade
+C/econst/-/noSynthFound
+JavaScript/clconst/IDBDatabaseException/NOT_ALLOWED_ERR
+JavaScript/clconst/DOMCoreException/NOT_FOUND_ERR
+JavaScript/clconst/IDBDatabaseException/NOT_FOUND_ERR
+JavaScript/clconst/FileError/NOT_FOUND_ERR
+JavaScript/clconst/FileError/NOT_READABLE_ERR
+JavaScript/clconst/DOMCoreException/NOT_SUPPORTED_ERR
+C/econst/-/notAFileErr
+Objective-C/clm/NSDecimalNumber/notANumber
+Objective-C/instm/NSNumberFormatter/notANumberSymbol
+C/econst/-/notAppropriateForClassic
+C/econst/-/notARemountErr
+JavaScript/data/DOMWindow/Notation
+JavaScript/cl/-/Notation
+JavaScript/clconst/core/NOTATION_NODE
+Objective-C/instm/NSXMLDTD/notationDeclarationForName:
+C/tdef/-/notationDeclSAXFunc
+Objective-C/instm/NSXMLDTDNode/notationName
+JavaScript/data/Entity/notationName
+JavaScript/data/DocumentType/notations
+Objective-C/instm/NSPrinter/note
+Objective-C/instm/NSWorkspace/noteFileSystemChanged
+Objective-C/instm/NSWorkspace/noteFileSystemChanged:
+Objective-C/instm/NSTableView/noteHeightOfRowsWithIndexesChanged:
+Objective-C/instm/NSBrowser/noteHeightOfRowsWithIndexesChanged:inColumn:
+Objective-C/instm/NSDocumentController/noteNewRecentDocument:
+Objective-C/instm/NSDocumentController/noteNewRecentDocumentURL:
+Objective-C/instm/NSComboBox/noteNumberOfItemsChanged
+Objective-C/instm/NSComboBoxCell/noteNumberOfItemsChanged
+Objective-C/instm/NSTableView/noteNumberOfRowsChanged
+JavaScript/clconst/WebGLRenderingContext/NOTEQUAL
+Objective-C/instp/CalCalendarItem/notes
+Objective-C/instm/CalCalendarItem/notes
+Objective-C/instm/CalCalendar/notes
+Objective-C/instp/CalCalendar/notes
+Objective-C/instm/NSWorkspace/noteUserDefaultsChanged
+C/econst/-/notExactMatrixErr
+C/econst/-/notExactSizeErr
+JavaScript/cl/-/Notification
+Objective-C/instm/NSMetadataQuery/notificationBatchingInterval
+Objective-C/clm/IMService/notificationCenter
+Objective-C/instm/NSWorkspace/notificationCenter
+JavaScript/cl/-/NotificationCenter
+Objective-C/clm/NSDistributedNotificationCenter/notificationCenterForType:
+Objective-C/clm/NSNotification/notificationWithName:object:
+Objective-C/clm/NSNotification/notificationWithName:object:userInfo:
+Objective-C/instm/FxHostCapabilities/notifiesParameterChangedForGenerators
+C/func/-/notify
+C++/instm/IOFWLocalIsochPort/notify
+C/func/-/notify_cancel
+C/func/-/notify_check
+C/func/-/notify_get_state
+C/func/-/notify_post
+C/func/-/notify_register_check
+C/func/-/notify_register_dispatch
+C/func/-/notify_register_file_descriptor
+C/func/-/notify_register_mach_port
+C/func/-/notify_register_signal
+C/macro/-/NOTIFY_REUSE
+C/func/-/notify_set_state
+C/macro/-/NOTIFY_STATUS_FAILED
+C/macro/-/NOTIFY_STATUS_INVALID_FILE
+C/macro/-/NOTIFY_STATUS_INVALID_NAME
+C/macro/-/NOTIFY_STATUS_INVALID_PORT
+C/macro/-/NOTIFY_STATUS_INVALID_REQUEST
+C/macro/-/NOTIFY_STATUS_INVALID_SIGNAL
+C/macro/-/NOTIFY_STATUS_INVALID_TOKEN
+C/macro/-/NOTIFY_STATUS_NOT_AUTHORIZED
+C/macro/-/NOTIFY_STATUS_OK
+C++/instm/IOSCSIParallelInterfaceController/NotifyClientsOfBusReset
+C++/instm/IOSCSIParallelInterfaceController/NotifyClientsOfPortStatusChange
+C++/instm/IOATADevice/notifyEvent
+C/func/-/notimeout
+C/econst/-/notPasteboardOwnerErr
+C/econst/-/notPatCopy
+C/econst/-/notPatOr
+C/econst/-/notPatXor
+Objective-C/clm/NSCompoundPredicate/notPredicateWithSubpredicate:
+Objective-C/instm/NSLayoutManager/notShownAttributeForGlyphAtIndex:
+C/econst/-/notSrcBic
+C/econst/-/notSrcCopy
+C/econst/-/notSrcOr
+C/econst/-/notSrcXor
+JavaScript/data/HTMLFormElement/noValidate
+JavaScript/data/HTMLTableCellElement/noWrap
+C/func/-/nrand48
+C/econst/-/NS_BigEndian
+C/macro/-/NS_DURING
+C/macro/-/NS_ENDHANDLER
+C/func/-/ns_get16
+C/func/-/ns_get32
+C/macro/-/NS_HANDLER
+C/econst/-/NS_LittleEndian
+C/func/-/ns_put16
+C/func/-/ns_put32
+C/econst/-/NS_UnknownByteOrder
+C/macro/-/NS_VALUERETURN
+C/macro/-/NS_VOIDRETURN
+C/data/-/NSAbortModalException
+C/data/-/NSAbortPrintingException
+C/econst/-/NSAboveBottom
+C/econst/-/NSAboveTop
+Objective-C/cat/-/NSAccessibility
+C/func/-/NSAccessibilityActionDescription
+C/data/-/NSAccessibilityAllowedValuesAttribute
+C/data/-/NSAccessibilityApplicationActivatedNotification
+C/data/-/NSAccessibilityApplicationDeactivatedNotification
+C/data/-/NSAccessibilityApplicationHiddenNotification
+C/data/-/NSAccessibilityApplicationRole
+C/data/-/NSAccessibilityApplicationShownNotification
+C/data/-/NSAccessibilityAscendingSortDirectionValue
+C/data/-/NSAccessibilityAttachmentTextAttribute
+C/data/-/NSAccessibilityAttributedStringForRangeParameterizedAttribute
+C/data/-/NSAccessibilityBackgroundColorTextAttribute
+C/data/-/NSAccessibilityBoundsForRangeParameterizedAttribute
+C/data/-/NSAccessibilityBrowserRole
+C/data/-/NSAccessibilityBusyIndicatorRole
+C/data/-/NSAccessibilityButtonRole
+C/data/-/NSAccessibilityCancelAction
+C/data/-/NSAccessibilityCancelButtonAttribute
+C/data/-/NSAccessibilityCellForColumnAndRowParameterizedAttribute
+C/data/-/NSAccessibilityCellRole
+C/data/-/NSAccessibilityCenterTabStopMarkerTypeValue
+C/data/-/NSAccessibilityCentimetersUnitValue
+C/data/-/NSAccessibilityCheckBoxRole
+C/data/-/NSAccessibilityChildrenAttribute
+C/data/-/NSAccessibilityClearButtonAttribute
+C/data/-/NSAccessibilityCloseButtonAttribute
+C/data/-/NSAccessibilityCloseButtonSubrole
+C/data/-/NSAccessibilityColorWellRole
+C/data/-/NSAccessibilityColumnCountAttribute
+C/data/-/NSAccessibilityColumnHeaderUIElementsAttribute
+C/data/-/NSAccessibilityColumnIndexRangeAttribute
+C/data/-/NSAccessibilityColumnRole
+C/data/-/NSAccessibilityColumnsAttribute
+C/data/-/NSAccessibilityColumnTitlesAttribute
+C/data/-/NSAccessibilityComboBoxRole
+C/data/-/NSAccessibilityConfirmAction
+C/data/-/NSAccessibilityContentListSubrole
+C/data/-/NSAccessibilityContentsAttribute
+C/data/-/NSAccessibilityCreatedNotification
+C/data/-/NSAccessibilityCriticalValueAttribute
+C/data/-/NSAccessibilityDecimalTabStopMarkerTypeValue
+C/data/-/NSAccessibilityDecrementAction
+C/data/-/NSAccessibilityDecrementArrowSubrole
+C/data/-/NSAccessibilityDecrementButtonAttribute
+C/data/-/NSAccessibilityDecrementPageSubrole
+C/data/-/NSAccessibilityDefaultButtonAttribute
+C/data/-/NSAccessibilityDefinitionListSubrole
+C/data/-/NSAccessibilityDeleteAction
+C/data/-/NSAccessibilityDescendingSortDirectionValue
+C/data/-/NSAccessibilityDescriptionAttribute
+C/data/-/NSAccessibilityDialogSubrole
+C/data/-/NSAccessibilityDisclosedByRowAttribute
+C/data/-/NSAccessibilityDisclosedRowsAttribute
+C/data/-/NSAccessibilityDisclosingAttribute
+C/data/-/NSAccessibilityDisclosureLevelAttribute
+C/data/-/NSAccessibilityDisclosureTriangleRole
+C/data/-/NSAccessibilityDocumentAttribute
+C/data/-/NSAccessibilityDrawerCreatedNotification
+C/data/-/NSAccessibilityDrawerRole
+C/data/-/NSAccessibilityEditedAttribute
+C/data/-/NSAccessibilityEnabledAttribute
+C/data/-/NSAccessibilityErrorCodeExceptionInfo
+C/data/-/NSAccessibilityException
+C/data/-/NSAccessibilityExpandedAttribute
+C/data/-/NSAccessibilityFilenameAttribute
+C/data/-/NSAccessibilityFirstLineIndentMarkerTypeValue
+C/data/-/NSAccessibilityFloatingWindowSubrole
+C/data/-/NSAccessibilityFocusedAttribute
+C/data/-/NSAccessibilityFocusedUIElementAttribute
+C/data/-/NSAccessibilityFocusedUIElementChangedNotification
+C/data/-/NSAccessibilityFocusedWindowAttribute
+C/data/-/NSAccessibilityFocusedWindowChangedNotification
+C/data/-/NSAccessibilityFontFamilyKey
+C/data/-/NSAccessibilityFontNameKey
+C/data/-/NSAccessibilityFontSizeKey
+C/data/-/NSAccessibilityFontTextAttribute
+C/data/-/NSAccessibilityForegroundColorTextAttribute
+C/data/-/NSAccessibilityFrontmostAttribute
+C/data/-/NSAccessibilityGridRole
+C/data/-/NSAccessibilityGroupRole
+C/data/-/NSAccessibilityGrowAreaAttribute
+C/data/-/NSAccessibilityGrowAreaRole
+C/data/-/NSAccessibilityHandleRole
+C/data/-/NSAccessibilityHandlesAttribute
+C/data/-/NSAccessibilityHeaderAttribute
+C/data/-/NSAccessibilityHeadIndentMarkerTypeValue
+C/data/-/NSAccessibilityHelpAttribute
+C/data/-/NSAccessibilityHelpTagCreatedNotification
+C/data/-/NSAccessibilityHelpTagRole
+C/data/-/NSAccessibilityHiddenAttribute
+C/data/-/NSAccessibilityHorizontalOrientationValue
+C/data/-/NSAccessibilityHorizontalScrollBarAttribute
+C/data/-/NSAccessibilityHorizontalUnitDescriptionAttribute
+C/data/-/NSAccessibilityHorizontalUnitsAttribute
+C/data/-/NSAccessibilityImageRole
+C/data/-/NSAccessibilityInchesUnitValue
+C/data/-/NSAccessibilityIncrementAction
+C/data/-/NSAccessibilityIncrementArrowSubrole
+C/data/-/NSAccessibilityIncrementButtonAttribute
+C/data/-/NSAccessibilityIncrementorRole
+C/data/-/NSAccessibilityIncrementPageSubrole
+C/data/-/NSAccessibilityIndexAttribute
+C/data/-/NSAccessibilityInsertionPointLineNumberAttribute
+C/data/-/NSAccessibilityLabelUIElementsAttribute
+C/data/-/NSAccessibilityLabelValueAttribute
+C/data/-/NSAccessibilityLayoutAreaRole
+C/data/-/NSAccessibilityLayoutItemRole
+C/data/-/NSAccessibilityLayoutPointForScreenPointParameterizedAttribute
+C/data/-/NSAccessibilityLayoutSizeForScreenSizeParameterizedAttribute
+C/data/-/NSAccessibilityLeftTabStopMarkerTypeValue
+C/data/-/NSAccessibilityLineForIndexParameterizedAttribute
+C/data/-/NSAccessibilityLinkedUIElementsAttribute
+C/data/-/NSAccessibilityLinkRole
+C/data/-/NSAccessibilityLinkTextAttribute
+C/data/-/NSAccessibilityListRole
+C/data/-/NSAccessibilityMainAttribute
+C/data/-/NSAccessibilityMainWindowAttribute
+C/data/-/NSAccessibilityMainWindowChangedNotification
+C/data/-/NSAccessibilityMarkerGroupUIElementAttribute
+C/data/-/NSAccessibilityMarkerTypeAttribute
+C/data/-/NSAccessibilityMarkerTypeDescriptionAttribute
+C/data/-/NSAccessibilityMarkerUIElementsAttribute
+C/data/-/NSAccessibilityMarkerValuesAttribute
+C/data/-/NSAccessibilityMatteContentUIElementAttribute
+C/data/-/NSAccessibilityMatteHoleAttribute
+C/data/-/NSAccessibilityMatteRole
+C/data/-/NSAccessibilityMaxValueAttribute
+C/data/-/NSAccessibilityMenuBarAttribute
+C/data/-/NSAccessibilityMenuBarRole
+C/data/-/NSAccessibilityMenuButtonRole
+C/data/-/NSAccessibilityMenuItemRole
+C/data/-/NSAccessibilityMenuRole
+C/data/-/NSAccessibilityMinimizeButtonAttribute
+C/data/-/NSAccessibilityMinimizeButtonSubrole
+C/data/-/NSAccessibilityMinimizedAttribute
+C/data/-/NSAccessibilityMinValueAttribute
+C/data/-/NSAccessibilityMisspelledTextAttribute
+C/data/-/NSAccessibilityModalAttribute
+C/data/-/NSAccessibilityMovedNotification
+C/data/-/NSAccessibilityNextContentsAttribute
+C/data/-/NSAccessibilityNumberOfCharactersAttribute
+C/data/-/NSAccessibilityOrderedByRowAttribute
+C/data/-/NSAccessibilityOrientationAttribute
+C/data/-/NSAccessibilityOutlineRole
+C/data/-/NSAccessibilityOutlineRowSubrole
+C/data/-/NSAccessibilityOverflowButtonAttribute
+C/data/-/NSAccessibilityParentAttribute
+C/data/-/NSAccessibilityPicasUnitValue
+C/data/-/NSAccessibilityPickAction
+C/data/-/NSAccessibilityPlaceholderValueAttribute
+C/data/-/NSAccessibilityPointsUnitValue
+C/data/-/NSAccessibilityPopUpButtonRole
+C/data/-/NSAccessibilityPositionAttribute
+C/func/-/NSAccessibilityPostNotification
+C/data/-/NSAccessibilityPressAction
+C/data/-/NSAccessibilityPreviousContentsAttribute
+C/data/-/NSAccessibilityProgressIndicatorRole
+C/data/-/NSAccessibilityProxyAttribute
+C/data/-/NSAccessibilityRadioButtonRole
+C/data/-/NSAccessibilityRadioGroupRole
+C/data/-/NSAccessibilityRaiseAction
+C/func/-/NSAccessibilityRaiseBadArgumentException
+C/data/-/NSAccessibilityRangeForIndexParameterizedAttribute
+C/data/-/NSAccessibilityRangeForLineParameterizedAttribute
+C/data/-/NSAccessibilityRangeForPositionParameterizedAttribute
+C/data/-/NSAccessibilityRatingIndicatorSubrole
+C/data/-/NSAccessibilityRelevanceIndicatorRole
+C/data/-/NSAccessibilityResizedNotification
+C/data/-/NSAccessibilityRightTabStopMarkerTypeValue
+C/data/-/NSAccessibilityRoleAttribute
+C/func/-/NSAccessibilityRoleDescription
+C/data/-/NSAccessibilityRoleDescriptionAttribute
+C/func/-/NSAccessibilityRoleDescriptionForUIElement
+C/data/-/NSAccessibilityRowCollapsedNotification
+C/data/-/NSAccessibilityRowCountAttribute
+C/data/-/NSAccessibilityRowCountChangedNotification
+C/data/-/NSAccessibilityRowExpandedNotification
+C/data/-/NSAccessibilityRowHeaderUIElementsAttribute
+C/data/-/NSAccessibilityRowIndexRangeAttribute
+C/data/-/NSAccessibilityRowRole
+C/data/-/NSAccessibilityRowsAttribute
+C/data/-/NSAccessibilityRTFForRangeParameterizedAttribute
+C/data/-/NSAccessibilityRulerMarkerRole
+C/data/-/NSAccessibilityRulerRole
+C/data/-/NSAccessibilityScreenPointForLayoutPointParameterizedAttribute
+C/data/-/NSAccessibilityScreenSizeForLayoutSizeParameterizedAttribute
+C/data/-/NSAccessibilityScrollAreaRole
+C/data/-/NSAccessibilityScrollBarRole
+C/data/-/NSAccessibilitySearchButtonAttribute
+C/data/-/NSAccessibilitySearchFieldSubrole
+C/data/-/NSAccessibilitySearchMenuAttribute
+C/data/-/NSAccessibilitySecureTextFieldSubrole
+C/data/-/NSAccessibilitySelectedAttribute
+C/data/-/NSAccessibilitySelectedCellsAttribute
+C/data/-/NSAccessibilitySelectedCellsChangedNotification
+C/data/-/NSAccessibilitySelectedChildrenAttribute
+C/data/-/NSAccessibilitySelectedChildrenChangedNotification
+C/data/-/NSAccessibilitySelectedChildrenMovedNotification
+C/data/-/NSAccessibilitySelectedColumnsAttribute
+C/data/-/NSAccessibilitySelectedColumnsChangedNotification
+C/data/-/NSAccessibilitySelectedRowsAttribute
+C/data/-/NSAccessibilitySelectedRowsChangedNotification
+C/data/-/NSAccessibilitySelectedTextAttribute
+C/data/-/NSAccessibilitySelectedTextChangedNotification
+C/data/-/NSAccessibilitySelectedTextRangeAttribute
+C/data/-/NSAccessibilitySelectedTextRangesAttribute
+C/data/-/NSAccessibilityServesAsTitleForUIElementsAttribute
+C/data/-/NSAccessibilityShadowTextAttribute
+C/data/-/NSAccessibilitySharedCharacterRangeAttribute
+C/data/-/NSAccessibilitySharedTextUIElementsAttribute
+C/data/-/NSAccessibilitySheetCreatedNotification
+C/data/-/NSAccessibilitySheetRole
+C/data/-/NSAccessibilityShowMenuAction
+C/data/-/NSAccessibilityShownMenuAttribute
+C/data/-/NSAccessibilitySizeAttribute
+C/data/-/NSAccessibilitySliderRole
+C/data/-/NSAccessibilitySortButtonRole
+C/data/-/NSAccessibilitySortButtonSubrole
+C/data/-/NSAccessibilitySortDirectionAttribute
+C/data/-/NSAccessibilitySplitGroupRole
+C/data/-/NSAccessibilitySplitterRole
+C/data/-/NSAccessibilitySplittersAttribute
+C/data/-/NSAccessibilityStandardWindowSubrole
+C/data/-/NSAccessibilityStaticTextRole
+C/data/-/NSAccessibilityStrikethroughColorTextAttribute
+C/data/-/NSAccessibilityStrikethroughTextAttribute
+C/data/-/NSAccessibilityStringForRangeParameterizedAttribute
+C/data/-/NSAccessibilityStyleRangeForIndexParameterizedAttribute
+C/data/-/NSAccessibilitySubroleAttribute
+C/data/-/NSAccessibilitySuperscriptTextAttribute
+C/data/-/NSAccessibilitySystemDialogSubrole
+C/data/-/NSAccessibilitySystemFloatingWindowSubrole
+C/data/-/NSAccessibilitySystemWideRole
+C/data/-/NSAccessibilityTabGroupRole
+C/data/-/NSAccessibilityTableRole
+C/data/-/NSAccessibilityTableRowSubrole
+C/data/-/NSAccessibilityTabsAttribute
+C/data/-/NSAccessibilityTailIndentMarkerTypeValue
+C/data/-/NSAccessibilityTextAreaRole
+C/data/-/NSAccessibilityTextAttachmentSubrole
+C/data/-/NSAccessibilityTextFieldRole
+C/data/-/NSAccessibilityTextLinkSubrole
+C/data/-/NSAccessibilityTimelineSubrole
+C/data/-/NSAccessibilityTitleAttribute
+C/data/-/NSAccessibilityTitleChangedNotification
+C/data/-/NSAccessibilityTitleUIElementAttribute
+C/data/-/NSAccessibilityToolbarButtonAttribute
+C/data/-/NSAccessibilityToolbarButtonSubrole
+C/data/-/NSAccessibilityToolbarRole
+C/data/-/NSAccessibilityTopLevelUIElementAttribute
+C/data/-/NSAccessibilityUIElementDestroyedNotification
+C/data/-/NSAccessibilityUnderlineColorTextAttribute
+C/data/-/NSAccessibilityUnderlineTextAttribute
+C/func/-/NSAccessibilityUnignoredAncestor
+C/func/-/NSAccessibilityUnignoredChildren
+C/func/-/NSAccessibilityUnignoredChildrenForOnlyChild
+C/func/-/NSAccessibilityUnignoredDescendant
+C/data/-/NSAccessibilityUnitDescriptionAttribute
+C/data/-/NSAccessibilityUnitsAttribute
+C/data/-/NSAccessibilityUnitsChangedNotification
+C/data/-/NSAccessibilityUnknownMarkerTypeValue
+C/data/-/NSAccessibilityUnknownOrientationValue
+C/data/-/NSAccessibilityUnknownRole
+C/data/-/NSAccessibilityUnknownSortDirectionValue
+C/data/-/NSAccessibilityUnknownSubrole
+C/data/-/NSAccessibilityUnknownUnitValue
+C/data/-/NSAccessibilityURLAttribute
+C/data/-/NSAccessibilityValueAttribute
+C/data/-/NSAccessibilityValueChangedNotification
+C/data/-/NSAccessibilityValueDescriptionAttribute
+C/data/-/NSAccessibilityValueIndicatorRole
+C/data/-/NSAccessibilityVerticalOrientationValue
+C/data/-/NSAccessibilityVerticalScrollBarAttribute
+C/data/-/NSAccessibilityVerticalUnitDescriptionAttribute
+C/data/-/NSAccessibilityVerticalUnitsAttribute
+C/data/-/NSAccessibilityVisibleCellsAttribute
+C/data/-/NSAccessibilityVisibleCharacterRangeAttribute
+C/data/-/NSAccessibilityVisibleChildrenAttribute
+C/data/-/NSAccessibilityVisibleColumnsAttribute
+C/data/-/NSAccessibilityVisibleNameKey
+C/data/-/NSAccessibilityVisibleRowsAttribute
+C/data/-/NSAccessibilityWarningValueAttribute
+C/data/-/NSAccessibilityWindowAttribute
+C/data/-/NSAccessibilityWindowCreatedNotification
+C/data/-/NSAccessibilityWindowDeminiaturizedNotification
+C/data/-/NSAccessibilityWindowMiniaturizedNotification
+C/data/-/NSAccessibilityWindowMovedNotification
+C/data/-/NSAccessibilityWindowResizedNotification
+C/data/-/NSAccessibilityWindowRole
+C/data/-/NSAccessibilityWindowsAttribute
+C/data/-/NSAccessibilityZoomButtonAttribute
+C/data/-/NSAccessibilityZoomButtonSubrole
+Objective-C/cl/-/NSActionCell
+C/data/-/NSAddedPersistentStoresKey
+C/econst/-/NSAddEntityMappingType
+C/func/-/NSAddImage
+C/func/-/NSAddLibrary
+C/func/-/NSAddLibraryWithSearching
+C/func/-/NSAddressOfSymbol
+C/econst/-/NSAddTraitFontAction
+C/econst/-/NSAdminApplicationDirectory
+C/econst/-/NSAdobeCNS1CharacterCollection
+C/econst/-/NSAdobeGB1CharacterCollection
+C/econst/-/NSAdobeJapan1CharacterCollection
+C/econst/-/NSAdobeJapan2CharacterCollection
+C/econst/-/NSAdobeKorea1CharacterCollection
+C/data/-/NSAffectedObjectsErrorKey
+C/data/-/NSAffectedStoresErrorKey
+Objective-C/cl/-/NSAffineTransform
+Objective-C/cat/-/NSAffineTransform(NSAppKitAdditions)
+C/tdef/-/NSAffineTransformStruct
+C/data/-/NSAFMAscender
+C/data/-/NSAFMCapHeight
+C/data/-/NSAFMCharacterSet
+C/data/-/NSAFMDescender
+C/data/-/NSAFMEncodingScheme
+C/data/-/NSAFMFamilyName
+C/data/-/NSAFMFontName
+C/data/-/NSAFMFormatVersion
+C/data/-/NSAFMFullName
+C/data/-/NSAFMItalicAngle
+C/data/-/NSAFMMappingScheme
+C/data/-/NSAFMNotice
+C/data/-/NSAFMUnderlinePosition
+C/data/-/NSAFMUnderlineThickness
+C/data/-/NSAFMVersion
+C/data/-/NSAFMWeight
+C/data/-/NSAFMXHeight
+C/econst/-/NSAggregateExpressionType
+Objective-C/cl/-/NSAlert
+C/econst/-/NSAlertAlternateReturn
+C/econst/-/NSAlertDefaultReturn
+Objective-C/intf/-/NSAlertDelegate
+C/econst/-/NSAlertErrorReturn
+C/econst/-/NSAlertFirstButtonReturn
+C/econst/-/NSAlertOtherReturn
+C/econst/-/NSAlertSecondButtonReturn
+C/tdef/-/NSAlertStyle
+C/econst/-/NSAlertThirdButtonReturn
+C/data/-/NSAlignmentBinding
+C/econst/-/NSAllApplicationsDirectory
+C/econst/-/NSAllDomainsMask
+C/func/-/NSAllHashTableObjects
+C/econst/-/NSAllLibrariesDirectory
+C/func/-/NSAllMapTableKeys
+C/func/-/NSAllMapTableValues
+C/func/-/NSAllocateCollectable
+C/func/-/NSAllocateMemoryPages
+C/func/-/NSAllocateObject
+C/data/-/NSAllowsEditingMultipleValuesSelectionBindingOption
+C/data/-/NSAllowsNullArgumentBindingOption
+C/econst/-/NSAllPredicateModifier
+C/data/-/NSAllRomanInputSourcesLocaleIdentifier
+C/econst/-/NSAllScrollerParts
+C/econst/-/NSAlphaFirstBitmapFormat
+C/econst/-/NSAlphaNonpremultipliedBitmapFormat
+C/econst/-/NSAlphaShiftKeyMask
+C/data/-/NSAlternateImageBinding
+C/econst/-/NSAlternateKeyMask
+C/data/-/NSAlternateTitleBinding
+C/data/-/NSAlwaysPresentsApplicationModalAlertsBindingOption
+C/data/-/NSAMPMDesignation
+C/econst/-/NSAnchoredSearch
+C/econst/-/NSAndPredicateType
+Objective-C/intf/-/NSAnimatablePropertyContainer
+C/data/-/NSAnimateBinding
+Objective-C/cl/-/NSAnimation
+C/econst/-/NSAnimationBlocking
+C/tdef/-/NSAnimationBlockingMode
+Objective-C/cl/-/NSAnimationContext
+C/tdef/-/NSAnimationCurve
+C/data/-/NSAnimationDelayBinding
+Objective-C/intf/-/NSAnimationDelegate
+C/econst/-/NSAnimationEaseIn
+C/econst/-/NSAnimationEaseInOut
+C/econst/-/NSAnimationEaseOut
+C/tdef/-/NSAnimationEffect
+C/econst/-/NSAnimationEffectDisappearingItemDefault
+C/econst/-/NSAnimationEffectPoof
+C/econst/-/NSAnimationLinear
+C/econst/-/NSAnimationNonblocking
+C/econst/-/NSAnimationNonblockingThreaded
+C/tdef/-/NSAnimationProgress
+C/data/-/NSAnimationProgressMark
+C/data/-/NSAnimationProgressMarkNotification
+C/data/-/NSAnimationTriggerOrderIn
+C/data/-/NSAnimationTriggerOrderOut
+C/data/-/NSAntialiasThresholdChangedNotification
+C/econst/-/NSAnyEventMask
+C/econst/-/NSAnyPredicateModifier
+C/econst/-/NSAnyType
+C/data/-/NSApp
+C/econst/-/NSAppKitDefined
+C/econst/-/NSAppKitDefinedMask
+C/data/-/NSAppKitIgnoredException
+C/data/-/NSAppKitVersionNumber
+C/macro/-/NSAppKitVersionNumber10_0
+C/macro/-/NSAppKitVersionNumber10_1
+C/macro/-/NSAppKitVersionNumber10_2
+C/macro/-/NSAppKitVersionNumber10_2_3
+C/macro/-/NSAppKitVersionNumber10_3
+C/macro/-/NSAppKitVersionNumber10_3_2
+C/macro/-/NSAppKitVersionNumber10_3_3
+C/macro/-/NSAppKitVersionNumber10_3_5
+C/macro/-/NSAppKitVersionNumber10_3_7
+C/macro/-/NSAppKitVersionNumber10_3_9
+C/macro/-/NSAppKitVersionNumber10_4
+C/macro/-/NSAppKitVersionNumber10_4_1
+C/macro/-/NSAppKitVersionNumber10_4_3
+C/macro/-/NSAppKitVersionNumber10_4_4
+C/macro/-/NSAppKitVersionNumber10_4_7
+C/macro/-/NSAppKitVersionNumber10_5
+C/macro/-/NSAppKitVersionNumber10_5_2
+C/macro/-/NSAppKitVersionNumber10_5_3
+C/macro/-/NSAppKitVersionNumberWithColumnResizingBrowser
+C/macro/-/NSAppKitVersionNumberWithContinuousScrollingBrowser
+C/macro/-/NSAppKitVersionNumberWithCursorSizeSupport
+C/macro/-/NSAppKitVersionNumberWithCustomSheetPosition
+C/macro/-/NSAppKitVersionNumberWithDeferredWindowDisplaySupport
+C/macro/-/NSAppKitVersionNumberWithDirectionalTabs
+C/macro/-/NSAppKitVersionNumberWithDockTilePlugInSupport
+C/macro/-/NSAppKitVersionNumberWithPatternColorLeakFix
+C/data/-/NSAppKitVirtualMemoryException
+Objective-C/cl/-/NSAppleEventDescriptor
+Objective-C/cl/-/NSAppleEventManager
+C/tdef/-/NSAppleEventManagerSuspensionID
+C/data/-/NSAppleEventManagerWillProcessFirstEventNotification
+C/data/-/NSAppleEventTimeOutDefault
+C/data/-/NSAppleEventTimeOutNone
+Objective-C/cl/-/NSAppleScript
+Objective-C/cat/-/NSAppleScript(AppKitAdditions)
+C/data/-/NSAppleScriptErrorAppName
+C/data/-/NSAppleScriptErrorBriefMessage
+C/data/-/NSAppleScriptErrorMessage
+C/data/-/NSAppleScriptErrorNumber
+C/data/-/NSAppleScriptErrorRange
+Objective-C/cl/-/NSApplication
+C/econst/-/NSApplicationActivateAllWindows
+C/econst/-/NSApplicationActivatedEventType
+C/econst/-/NSApplicationActivateIgnoringOtherApps
+C/tdef/-/NSApplicationActivationOptions
+C/tdef/-/NSApplicationActivationPolicy
+C/econst/-/NSApplicationActivationPolicyAccessory
+C/econst/-/NSApplicationActivationPolicyProhibited
+C/econst/-/NSApplicationActivationPolicyRegular
+C/econst/-/NSApplicationDeactivatedEventType
+C/econst/-/NSApplicationDefined
+C/econst/-/NSApplicationDefinedMask
+Objective-C/intf/-/NSApplicationDelegate
+C/tdef/-/NSApplicationDelegateReply
+C/econst/-/NSApplicationDelegateReplyCancel
+C/econst/-/NSApplicationDelegateReplyFailure
+C/econst/-/NSApplicationDelegateReplySuccess
+C/data/-/NSApplicationDidBecomeActiveNotification
+C/data/-/NSApplicationDidChangeScreenParametersNotification
+C/data/-/NSApplicationDidFinishLaunchingNotification
+C/data/-/NSApplicationDidHideNotification
+C/data/-/NSApplicationDidResignActiveNotification
+C/data/-/NSApplicationDidUnhideNotification
+C/data/-/NSApplicationDidUpdateNotification
+C/econst/-/NSApplicationDirectory
+C/data/-/NSApplicationFileType
+C/func/-/NSApplicationLoad
+C/func/-/NSApplicationMain
+C/econst/-/NSApplicationPresentationAutoHideDock
+C/econst/-/NSApplicationPresentationAutoHideMenuBar
+C/econst/-/NSApplicationPresentationDefault
+C/econst/-/NSApplicationPresentationDisableAppleMenu
+C/econst/-/NSApplicationPresentationDisableForceQuit
+C/econst/-/NSApplicationPresentationDisableHideApplication
+C/econst/-/NSApplicationPresentationDisableMenuBarTransparency
+C/econst/-/NSApplicationPresentationDisableProcessSwitching
+C/econst/-/NSApplicationPresentationDisableSessionTermination
+C/econst/-/NSApplicationPresentationHideDock
+C/econst/-/NSApplicationPresentationHideMenuBar
+C/tdef/-/NSApplicationPresentationOptions
+C/tdef/-/NSApplicationPrintReply
+C/econst/-/NSApplicationSupportDirectory
+C/tdef/-/NSApplicationTerminateReply
+C/data/-/NSApplicationWillBecomeActiveNotification
+C/data/-/NSApplicationWillFinishLaunchingNotification
+C/data/-/NSApplicationWillHideNotification
+C/data/-/NSApplicationWillResignActiveNotification
+C/data/-/NSApplicationWillTerminateNotification
+C/data/-/NSApplicationWillUnhideNotification
+C/data/-/NSApplicationWillUpdateNotification
+Objective-C/cl/-/NSArchiver
+C/data/-/NSArgumentBinding
+C/data/-/NSArgumentDomain
+C/econst/-/NSArgumentEvaluationScriptError
+C/econst/-/NSArgumentsWrongScriptError
+Objective-C/cl/-/NSArray
+Objective-C/cl/-/NSArrayController
+C/econst/-/NSAscendingPageOrder
+C/econst/-/NSASCIIStringEncoding
+C/econst/-/NSAsciiWithDoubleByteEUCGlyphPacking
+C/macro/-/NSAssert
+C/macro/-/NSAssert1
+C/macro/-/NSAssert2
+C/macro/-/NSAssert3
+C/macro/-/NSAssert4
+C/macro/-/NSAssert5
+Objective-C/cl/-/NSAssertionHandler
+C/macro/-/NSAssertionHandlerKey
+C/econst/-/NSAtBottom
+Objective-C/cl/-/NSAtomicStore
+Objective-C/cl/-/NSAtomicStoreCacheNode
+C/econst/-/NSAtomicWrite
+Objective-C/cl/-/NSATSTypesetter
+C/data/-/NSAttachmentAttributeName
+C/econst/-/NSAttachmentCharacter
+C/econst/-/NSAtTop
+Objective-C/cl/-/NSAttributeDescription
+Objective-C/cl/-/NSAttributedString
+Objective-C/cat/-/NSAttributedString(AppKitAdditions)
+C/data/-/NSAttributedStringBinding
+C/econst/-/NSAttributedStringEnumerationLongestEffectiveRangeNotRequired
+C/tdef/-/NSAttributedStringEnumerationOptions
+C/econst/-/NSAttributedStringEnumerationReverse
+C/tdef/-/NSAttributeType
+C/data/-/NSAuthorDocumentAttribute
+C/econst/-/NSAutoPagination
+Objective-C/cl/-/NSAutoreleasePool
+C/econst/-/NSAutosavedInformationDirectory
+C/econst/-/NSAutosaveOperation
+C/func/-/NSAvailableWindowDepths
+C/data/-/NSAverageKeyValueOperator
+C/econst/-/NSAWTEventType
+C/data/-/NSBackgroundColorAttributeName
+C/data/-/NSBackgroundColorDocumentAttribute
+C/tdef/-/NSBackgroundStyle
+C/econst/-/NSBackgroundStyleDark
+C/econst/-/NSBackgroundStyleLight
+C/econst/-/NSBackgroundStyleLowered
+C/econst/-/NSBackgroundStyleRaised
+C/econst/-/NSBackgroundTab
+C/econst/-/NSBackingStoreBuffered
+C/econst/-/NSBackingStoreNonretained
+C/econst/-/NSBackingStoreRetained
+C/tdef/-/NSBackingStoreType
+C/econst/-/NSBackspaceCharacter
+C/econst/-/NSBackTabCharacter
+C/econst/-/NSBacktabTextMovement
+C/econst/-/NSBackwardsSearch
+C/data/-/NSBadBitmapParametersException
+C/data/-/NSBadComparisonException
+C/data/-/NSBadRTFColorTableException
+C/data/-/NSBadRTFDirectiveException
+C/data/-/NSBadRTFFontTableException
+C/data/-/NSBadRTFStyleSheetException
+C/data/-/NSBaselineOffsetAttributeName
+C/data/-/NSBaseURLDocumentOption
+C/func/-/NSBeep
+C/func/-/NSBeginAlertSheet
+C/func/-/NSBeginCriticalAlertSheet
+C/econst/-/NSBeginFunctionKey
+C/func/-/NSBeginInformationalAlertSheet
+C/econst/-/NSBeginsWithComparison
+C/econst/-/NSBeginsWithPredicateOperatorType
+C/econst/-/NSBelowBottom
+C/econst/-/NSBelowTop
+C/func/-/NSBestDepth
+C/econst/-/NSBetweenPredicateOperatorType
+C/econst/-/NSBevelLineJoinStyle
+C/econst/-/NSBezelBorder
+C/tdef/-/NSBezelStyle
+Objective-C/cl/-/NSBezierPath
+C/tdef/-/NSBezierPathElement
+C/econst/-/NSBinaryDataAttributeType
+C/data/-/NSBinaryExternalRecordType
+C/econst/-/NSBinarySearchingFirstEqual
+C/econst/-/NSBinarySearchingInsertionIndex
+C/econst/-/NSBinarySearchingLastEqual
+C/tdef/-/NSBinarySearchingOptions
+C/data/-/NSBinaryStoreType
+C/tdef/-/NSBitmapFormat
+C/tdef/-/NSBitmapImageFileType
+Objective-C/cl/-/NSBitmapImageRep
+C/func/-/NSBitsPerPixelFromDepth
+C/func/-/NSBitsPerSampleFromDepth
+C/data/-/NSBlack
+C/econst/-/NSBlockExpressionType
+Objective-C/cl/-/NSBlockOperation
+C/econst/-/NSBlueControlTint
+C/econst/-/NSBMPFileType
+C/econst/-/NSBoldFontMask
+C/econst/-/NSBooleanAttributeType
+C/econst/-/NSBorderlessWindowMask
+C/tdef/-/NSBorderType
+C/data/-/NSBottomMarginDocumentAttribute
+C/econst/-/NSBottomTabsBezelBorder
+Objective-C/cl/-/NSBox
+C/econst/-/NSBoxCustom
+C/econst/-/NSBoxOldStyle
+C/econst/-/NSBoxPrimary
+C/econst/-/NSBoxSecondary
+C/econst/-/NSBoxSeparator
+C/tdef/-/NSBoxType
+C/econst/-/NSBreakFunctionKey
+Objective-C/cl/-/NSBrowser
+C/econst/-/NSBrowserAutoColumnResizing
+C/tdef/-/NSBrowserAuxiliaryOpaque
+Objective-C/cl/-/NSBrowserCell
+C/data/-/NSBrowserColumnConfigurationDidChangeNotification
+C/tdef/-/NSBrowserColumnResizingType
+Objective-C/intf/-/NSBrowserDelegate
+C/econst/-/NSBrowserDropAbove
+C/econst/-/NSBrowserDropOn
+C/tdef/-/NSBrowserDropOperation
+C/data/-/NSBrowserIllegalDelegateException
+C/econst/-/NSBrowserNoColumnResizing
+C/econst/-/NSBrowserUserColumnResizing
+C/data/-/NSBuddhistCalendar
+Objective-C/cl/-/NSBundle
+Objective-C/cat/-/NSBundle(NSAppKitAdditions)
+C/data/-/NSBundleDidLoadNotification
+C/econst/-/NSBundleExecutableArchitectureI386
+C/econst/-/NSBundleExecutableArchitecturePPC
+C/econst/-/NSBundleExecutableArchitecturePPC64
+C/econst/-/NSBundleExecutableArchitectureX86_64
+C/econst/-/NSButtLineCapStyle
+Objective-C/cl/-/NSButton
+Objective-C/cl/-/NSButtonCell
+C/tdef/-/NSButtonType
+Objective-C/cl/-/NSCache
+Objective-C/intf/-/NSCacheDelegate
+Objective-C/cl/-/NSCachedImageRep
+Objective-C/cl/-/NSCachedURLResponse
+C/econst/-/NSCachesDirectory
+C/econst/-/NSCalculationDivideByZero
+C/tdef/-/NSCalculationError
+C/econst/-/NSCalculationLossOfPrecision
+C/econst/-/NSCalculationNoError
+C/econst/-/NSCalculationOverflow
+C/econst/-/NSCalculationUnderflow
+Objective-C/cl/-/NSCalendar
+C/tdef/-/NSCalendarUnit
+C/data/-/NSCalibratedBlackColorSpace
+C/data/-/NSCalibratedRGBColorSpace
+C/data/-/NSCalibratedWhiteColorSpace
+C/econst/-/NSCancelButton
+C/econst/-/NSCancelTextMovement
+C/econst/-/NSCannotCreateScriptCommandError
+C/econst/-/NSCarriageReturnCharacter
+C/econst/-/NSCascadeDeleteRule
+C/econst/-/NSCaseInsensitivePredicateOption
+C/econst/-/NSCaseInsensitiveSearch
+C/macro/-/NSCAssert
+C/macro/-/NSCAssert1
+C/macro/-/NSCAssert2
+C/macro/-/NSCAssert3
+C/macro/-/NSCAssert4
+C/macro/-/NSCAssert5
+C/data/-/NSCategoryDocumentAttribute
+Objective-C/cl/-/NSCell
+C/econst/-/NSCellAllowsMixedState
+C/tdef/-/NSCellAttribute
+C/econst/-/NSCellChangesContents
+C/econst/-/NSCellDisabled
+C/econst/-/NSCellEditable
+C/econst/-/NSCellHasImageHorizontal
+C/econst/-/NSCellHasImageOnLeftOrBottom
+C/econst/-/NSCellHasOverlappingImage
+C/econst/-/NSCellHighlighted
+C/econst/-/NSCellHitContentArea
+C/econst/-/NSCellHitEditableTextArea
+C/econst/-/NSCellHitNone
+C/econst/-/NSCellHitTrackableArea
+C/tdef/-/NSCellImagePosition
+C/econst/-/NSCellIsBordered
+C/econst/-/NSCellIsInsetButton
+C/econst/-/NSCellLightsByBackground
+C/econst/-/NSCellLightsByContents
+C/econst/-/NSCellLightsByGray
+C/econst/-/NSCellState
+C/tdef/-/NSCellStateValue
+C/tdef/-/NSCellType
+C/econst/-/NSCenterTabStopType
+C/econst/-/NSCenterTextAlignment
+C/econst/-/NSChangeAutosaved
+C/econst/-/NSChangeBackgroundCell
+C/econst/-/NSChangeBackgroundCellMask
+C/econst/-/NSChangeCleared
+C/econst/-/NSChangeDone
+C/econst/-/NSChangeGrayCell
+C/econst/-/NSChangeGrayCellMask
+C/econst/-/NSChangeReadOtherContents
+C/econst/-/NSChangeRedone
+Objective-C/intf/-/NSChangeSpelling
+C/econst/-/NSChangeUndone
+C/tdef/-/NSCharacterCollection
+C/data/-/NSCharacterConversionException
+C/data/-/NSCharacterEncodingDocumentAttribute
+C/data/-/NSCharacterEncodingDocumentOption
+Objective-C/cl/-/NSCharacterSet
+C/data/-/NSCharacterShapeAttributeName
+C/data/-/NSChineseCalendar
+Objective-C/cl/-/NSCIImageRep
+C/econst/-/NSCircularBezelStyle
+C/econst/-/NSCircularSlider
+Objective-C/cl/-/NSClassDescription
+C/data/-/NSClassDescriptionNeededForClassNotification
+C/func/-/NSClassFromString
+C/econst/-/NSClearControlTint
+C/econst/-/NSClearDisplayFunctionKey
+C/econst/-/NSClearLineFunctionKey
+C/econst/-/NSClipPagination
+Objective-C/cl/-/NSClipView
+C/econst/-/NSClockAndCalendarDatePickerStyle
+Objective-C/cl/-/NSCloneCommand
+C/econst/-/NSClosableWindowMask
+Objective-C/cl/-/NSCloseCommand
+C/econst/-/NSClosePathBezierPathElement
+C/econst/-/NSCMYKColorSpaceModel
+C/econst/-/NSCMYKModeColorPanel
+C/data/-/NSCocoaErrorDomain
+C/data/-/NSCocoaVersionDocumentAttribute
+Objective-C/cl/-/NSCoder
+Objective-C/cat/-/NSCoder(AppKitAdditions)
+Objective-C/cat/-/NSCoder(QTKit_Additions)
+Objective-C/intf/-/NSCoding
+Objective-C/cl/-/NSCollectionView
+Objective-C/intf/-/NSCollectionViewDelegate
+C/econst/-/NSCollectionViewDropBefore
+C/econst/-/NSCollectionViewDropOn
+C/tdef/-/NSCollectionViewDropOperation
+Objective-C/cl/-/NSCollectionViewItem
+C/econst/-/NSCollectorDisabledOption
+Objective-C/cl/-/NSColor
+Objective-C/cl/-/NSColorList
+C/tdef/-/NSColorListAuxiliaryOpaque
+C/data/-/NSColorListDidChangeNotification
+C/data/-/NSColorListIOException
+C/econst/-/NSColorListModeColorPanel
+C/data/-/NSColorListNotEditableException
+Objective-C/cl/-/NSColorPanel
+C/econst/-/NSColorPanelAllModesMask
+C/econst/-/NSColorPanelCMYKModeMask
+C/data/-/NSColorPanelColorDidChangeNotification
+C/econst/-/NSColorPanelColorListModeMask
+C/econst/-/NSColorPanelCrayonModeMask
+C/econst/-/NSColorPanelCustomPaletteModeMask
+C/econst/-/NSColorPanelGrayModeMask
+C/econst/-/NSColorPanelHSBModeMask
+C/tdef/-/NSColorPanelMode
+C/econst/-/NSColorPanelRGBModeMask
+C/econst/-/NSColorPanelWheelModeMask
+C/data/-/NSColorPboardType
+Objective-C/cl/-/NSColorPicker
+Objective-C/intf/-/NSColorPickingCustom
+Objective-C/intf/-/NSColorPickingDefault
+C/tdef/-/NSColorRenderingIntent
+C/econst/-/NSColorRenderingIntentAbsoluteColorimetric
+C/econst/-/NSColorRenderingIntentDefault
+C/econst/-/NSColorRenderingIntentPerceptual
+C/econst/-/NSColorRenderingIntentRelativeColorimetric
+C/econst/-/NSColorRenderingIntentSaturation
+Objective-C/cl/-/NSColorSpace
+C/func/-/NSColorSpaceFromDepth
+C/tdef/-/NSColorSpaceModel
+Objective-C/cl/-/NSColorWell
+Objective-C/cl/-/NSComboBox
+Objective-C/cl/-/NSComboBoxCell
+Objective-C/intf/-/NSComboBoxCellDataSource
+Objective-C/intf/-/NSComboBoxDataSource
+Objective-C/intf/-/NSComboBoxDelegate
+C/data/-/NSComboBoxSelectionDidChangeNotification
+C/data/-/NSComboBoxSelectionIsChangingNotification
+C/data/-/NSComboBoxWillDismissNotification
+C/data/-/NSComboBoxWillPopUpNotification
+C/econst/-/NSCommandKeyMask
+C/data/-/NSCommentDocumentAttribute
+C/data/-/NSCompanyDocumentAttribute
+C/tag/-/NSComparator
+C/func/-/NSCompareHashTables
+C/func/-/NSCompareMapTables
+Objective-C/cat/-/NSComparisonMethods
+Objective-C/cl/-/NSComparisonPredicate
+C/tdef/-/NSComparisonPredicateModifier
+C/tdef/-/NSComparisonResult
+C/econst/-/NSCompositeClear
+C/econst/-/NSCompositeCopy
+C/econst/-/NSCompositeDestinationAtop
+C/econst/-/NSCompositeDestinationIn
+C/econst/-/NSCompositeDestinationOut
+C/econst/-/NSCompositeDestinationOver
+C/econst/-/NSCompositeHighlight
+C/econst/-/NSCompositePlusDarker
+C/econst/-/NSCompositePlusLighter
+C/econst/-/NSCompositeSourceAtop
+C/econst/-/NSCompositeSourceIn
+C/econst/-/NSCompositeSourceOut
+C/econst/-/NSCompositeSourceOver
+C/econst/-/NSCompositeXOR
+C/tdef/-/NSCompositingOperation
+Objective-C/cl/-/NSCompoundPredicate
+C/tdef/-/NSCompoundPredicateType
+C/econst/-/NSCompressedFontMask
+C/econst/-/NSCondensedFontMask
+Objective-C/cl/-/NSCondition
+C/data/-/NSConditionallySetsEditableBindingOption
+C/data/-/NSConditionallySetsEnabledBindingOption
+C/data/-/NSConditionallySetsHiddenBindingOption
+Objective-C/cl/-/NSConditionLock
+Objective-C/cl/-/NSConnection
+Objective-C/intf/-/NSConnectionDelegate
+C/data/-/NSConnectionDidDieNotification
+C/data/-/NSConnectionDidInitializeNotification
+C/data/-/NSConnectionReplyMode
+C/econst/-/NSConstantValueExpressionType
+C/econst/-/NSContainerSpecifierError
+C/econst/-/NSContainsComparison
+C/econst/-/NSContainsPredicateOperatorType
+C/func/-/NSContainsRect
+C/data/-/NSContentArrayBinding
+C/data/-/NSContentArrayForMultipleSelectionBinding
+C/data/-/NSContentBinding
+C/data/-/NSContentDictionaryBinding
+C/data/-/NSContentHeightBinding
+C/data/-/NSContentObjectBinding
+C/data/-/NSContentObjectsBinding
+C/data/-/NSContentPlacementTagBindingOption
+C/econst/-/NSContentsCellMask
+C/data/-/NSContentSetBinding
+C/data/-/NSContentValuesBinding
+C/data/-/NSContentWidthBinding
+C/data/-/NSContextHelpModeDidActivateNotification
+C/data/-/NSContextHelpModeDidDeactivateNotification
+C/econst/-/NSContinuousCapacityLevelIndicatorStyle
+C/data/-/NSContinuouslyUpdatesValueBindingOption
+Objective-C/cl/-/NSControl
+C/econst/-/NSControlGlyph
+C/econst/-/NSControlKeyMask
+Objective-C/cl/-/NSController
+C/tdef/-/NSControlSize
+C/data/-/NSControlTextDidBeginEditingNotification
+C/data/-/NSControlTextDidChangeNotification
+C/data/-/NSControlTextDidEndEditingNotification
+Objective-C/intf/-/NSControlTextEditingDelegate
+C/tdef/-/NSControlTint
+C/data/-/NSControlTintDidChangeNotification
+C/data/-/NSConvertedDocumentAttribute
+C/func/-/NSConvertGlyphsToPackedGlyphs
+C/func/-/NSConvertHostDoubleToSwapped
+C/func/-/NSConvertHostFloatToSwapped
+C/func/-/NSConvertSwappedDoubleToHost
+C/func/-/NSConvertSwappedFloatToHost
+C/func/-/NSCopyBits
+C/econst/-/NSCopyEntityMappingType
+C/func/-/NSCopyHashTableWithZone
+Objective-C/intf/-/NSCopying
+C/func/-/NSCopyMapTableWithZone
+C/func/-/NSCopyMemoryPages
+C/func/-/NSCopyObject
+C/data/-/NSCopyrightDocumentAttribute
+C/econst/-/NSCoreDataError
+C/data/-/NSCoreDataVersionNumber
+C/macro/-/NSCoreDataVersionNumber10_4
+C/macro/-/NSCoreDataVersionNumber10_4_3
+C/macro/-/NSCoreDataVersionNumber10_5
+C/macro/-/NSCoreDataVersionNumber10_5_3
+C/econst/-/NSCoreServiceDirectory
+Objective-C/cl/-/NSCountCommand
+Objective-C/cl/-/NSCountedSet
+C/func/-/NSCountHashTable
+C/data/-/NSCountKeyValueOperator
+C/func/-/NSCountMapTable
+C/func/-/NSCountWindows
+C/func/-/NSCountWindowsForContext
+C/macro/-/NSCParameterAssert
+C/econst/-/NSCrayonModeColorPanel
+Objective-C/cl/-/NSCreateCommand
+C/func/-/NSCreateFileContentsPboardType
+C/func/-/NSCreateFilenamePboardType
+C/func/-/NSCreateHashTable
+C/func/-/NSCreateHashTableWithZone
+C/func/-/NSCreateMapTable
+C/func/-/NSCreateMapTableWithZone
+C/func/-/NSCreateObjectFileImageFromFile
+C/func/-/NSCreateObjectFileImageFromMemory
+C/data/-/NSCreatesSortDescriptorBindingOption
+C/func/-/NSCreateZone
+C/data/-/NSCreationTimeDocumentAttribute
+C/econst/-/NSCriticalAlertStyle
+C/econst/-/NSCriticalRequest
+C/data/-/NSCriticalValueBinding
+C/data/-/NSCurrencySymbol
+C/data/-/NSCurrentLocaleDidChangeNotification
+Objective-C/cl/-/NSCursor
+C/data/-/NSCursorAttributeName
+C/econst/-/NSCursorPointingDevice
+C/econst/-/NSCursorUpdate
+C/econst/-/NSCursorUpdateMask
+C/econst/-/NSCurveToBezierPathElement
+C/data/-/NSCustomColorSpace
+C/econst/-/NSCustomEntityMappingType
+Objective-C/cl/-/NSCustomImageRep
+C/econst/-/NSCustomPaletteModeColorPanel
+C/econst/-/NSCustomSelectorPredicateOperatorType
+C/data/-/NSDarkGray
+Objective-C/cl/-/NSData
+C/data/-/NSDataBinding
+C/econst/-/NSDataReadingMapped
+C/tdef/-/NSDataReadingOptions
+C/econst/-/NSDataReadingUncached
+C/econst/-/NSDataSearchAnchored
+C/econst/-/NSDataSearchBackwards
+C/tdef/-/NSDataSearchOptions
+C/econst/-/NSDataWritingAtomic
+C/tdef/-/NSDataWritingOptions
+Objective-C/cl/-/NSDate
+C/econst/-/NSDateAttributeType
+Objective-C/cl/-/NSDateComponents
+C/data/-/NSDateFormatString
+Objective-C/cl/-/NSDateFormatter
+C/tdef/-/NSDateFormatterBehavior
+C/econst/-/NSDateFormatterBehavior10_0
+C/econst/-/NSDateFormatterBehavior10_4
+C/econst/-/NSDateFormatterBehaviorDefault
+C/econst/-/NSDateFormatterFullStyle
+C/econst/-/NSDateFormatterLongStyle
+C/econst/-/NSDateFormatterMediumStyle
+C/econst/-/NSDateFormatterNoStyle
+C/econst/-/NSDateFormatterShortStyle
+C/tdef/-/NSDateFormatterStyle
+Objective-C/cl/-/NSDatePicker
+Objective-C/cl/-/NSDatePickerCell
+Objective-C/intf/-/NSDatePickerCellDelegate
+C/tdef/-/NSDatePickerElementFlags
+C/tdef/-/NSDatePickerMode
+C/tdef/-/NSDatePickerStyle
+C/data/-/NSDateTimeOrdering
+C/econst/-/NSDayCalendarUnit
+C/func/-/NSDeallocateMemoryPages
+C/func/-/NSDeallocateObject
+C/tdef/-/NSDecimal
+C/func/-/NSDecimalAdd
+C/econst/-/NSDecimalAttributeType
+C/func/-/NSDecimalCompact
+C/func/-/NSDecimalCompare
+C/func/-/NSDecimalCopy
+C/data/-/NSDecimalDigits
+C/func/-/NSDecimalDivide
+C/func/-/NSDecimalIsNotANumber
+C/macro/-/NSDecimalMaxSize
+C/func/-/NSDecimalMultiply
+C/func/-/NSDecimalMultiplyByPowerOf10
+C/func/-/NSDecimalNormalize
+C/macro/-/NSDecimalNoScale
+Objective-C/cl/-/NSDecimalNumber
+Objective-C/intf/-/NSDecimalNumberBehaviors
+C/data/-/NSDecimalNumberDivideByZeroException
+C/data/-/NSDecimalNumberExactnessException
+Objective-C/cl/-/NSDecimalNumberHandler
+C/data/-/NSDecimalNumberOverflowException
+C/data/-/NSDecimalNumberUnderflowException
+C/func/-/NSDecimalPower
+C/func/-/NSDecimalRound
+C/data/-/NSDecimalSeparator
+C/func/-/NSDecimalString
+C/func/-/NSDecimalSubtract
+C/econst/-/NSDecimalTabStopType
+C/func/-/NSDecrementExtraRefCountWasZero
+C/data/-/NSDefaultAttributesDocumentOption
+C/econst/-/NSDefaultControlTint
+C/func/-/NSDefaultMallocZone
+C/data/-/NSDefaultRunLoopMode
+C/data/-/NSDefaultTabIntervalDocumentAttribute
+C/econst/-/NSDefaultTokenStyle
+C/data/-/NSDefinitionPresentationTypeDictionaryApplication
+C/data/-/NSDefinitionPresentationTypeKey
+C/data/-/NSDefinitionPresentationTypeOverlay
+C/econst/-/NSDeleteCharacter
+C/econst/-/NSDeleteCharFunctionKey
+Objective-C/cl/-/NSDeleteCommand
+C/data/-/NSDeletedObjectsKey
+C/econst/-/NSDeleteFunctionKey
+C/econst/-/NSDeleteLineFunctionKey
+C/tdef/-/NSDeleteRule
+C/data/-/NSDeletesObjectsOnRemoveBindingsOption
+C/econst/-/NSDemoApplicationDirectory
+C/econst/-/NSDenyDeleteRule
+C/econst/-/NSDescendingPageOrder
+Objective-C/cl/-/NSDeserializer
+C/econst/-/NSDesktopDirectory
+C/data/-/NSDestinationInvalidException
+C/func/-/NSDestroyObjectFileImage
+C/data/-/NSDetailedErrorsKey
+C/econst/-/NSDeveloperApplicationDirectory
+C/econst/-/NSDeveloperDirectory
+C/data/-/NSDeviceBitsPerSample
+C/data/-/NSDeviceBlackColorSpace
+C/data/-/NSDeviceCMYKColorSpace
+C/data/-/NSDeviceColorSpaceName
+C/econst/-/NSDeviceIndependentModifierFlagsMask
+C/data/-/NSDeviceIsPrinter
+C/data/-/NSDeviceIsScreen
+C/econst/-/NSDeviceNColorSpaceModel
+C/data/-/NSDeviceResolution
+C/data/-/NSDeviceRGBColorSpace
+C/data/-/NSDeviceSize
+C/data/-/NSDeviceWhiteColorSpace
+C/econst/-/NSDiacriticInsensitivePredicateOption
+C/econst/-/NSDiacriticInsensitiveSearch
+Objective-C/cl/-/NSDictionary
+Objective-C/cl/-/NSDictionaryController
+Objective-C/intf/-/NSDictionaryControllerKeyValuePair
+C/econst/-/NSDictionaryResultType
+C/data/-/NSDidBecomeSingleThreadedNotification
+C/tdef/-/NSDirectoryEnumerationOptions
+C/econst/-/NSDirectoryEnumerationSkipsHiddenFiles
+C/econst/-/NSDirectoryEnumerationSkipsPackageDescendants
+C/econst/-/NSDirectoryEnumerationSkipsSubdirectoryDescendants
+Objective-C/cl/-/NSDirectoryEnumerator
+C/data/-/NSDirectoryFileType
+C/econst/-/NSDirectPredicateModifier
+C/econst/-/NSDirectSelection
+C/func/-/NSDisableScreenUpdates
+Objective-C/intf/-/NSDiscardableContent
+C/econst/-/NSDisclosureBezelStyle
+C/econst/-/NSDiscreteCapacityLevelIndicatorStyle
+C/data/-/NSDisplayNameBindingOption
+C/data/-/NSDisplayPatternBindingOption
+C/data/-/NSDisplayPatternTitleBinding
+C/data/-/NSDisplayPatternValueBinding
+C/econst/-/NSDisplayWindowRunLoopOrdering
+Objective-C/cl/-/NSDistantObject
+Objective-C/cl/-/NSDistantObjectRequest
+C/data/-/NSDistinctUnionOfArraysKeyValueOperator
+C/data/-/NSDistinctUnionOfObjectsKeyValueOperator
+C/data/-/NSDistinctUnionOfSetsKeyValueOperator
+Objective-C/cl/-/NSDistributedLock
+Objective-C/cl/-/NSDistributedNotificationCenter
+C/func/-/NSDivideRect
+C/data/-/NSDocFormatTextDocumentType
+Objective-C/cl/-/NSDockTile
+Objective-C/intf/-/NSDockTilePlugIn
+C/macro/-/NSDockWindowLevel
+C/econst/-/NSDocModalWindowMask
+Objective-C/cl/-/NSDocument
+C/econst/-/NSDocumentationDirectory
+C/tdef/-/NSDocumentChangeType
+Objective-C/cl/-/NSDocumentController
+C/econst/-/NSDocumentDirectory
+C/data/-/NSDocumentEditedBinding
+C/data/-/NSDocumentTypeDocumentAttribute
+C/data/-/NSDocumentTypeDocumentOption
+C/func/-/NSDottedFrameRect
+C/econst/-/NSDoubleAttributeType
+C/data/-/NSDoubleClickArgumentBinding
+C/data/-/NSDoubleClickTargetBinding
+C/econst/-/NSDoubleType
+C/econst/-/NSDownArrowFunctionKey
+C/econst/-/NSDownloadsDirectory
+C/econst/-/NSDownTextMovement
+Objective-C/cat/-/NSDraggingDestination
+C/data/-/NSDraggingException
+Objective-C/intf/-/NSDraggingInfo
+Objective-C/cat/-/NSDraggingSource
+C/tdef/-/NSDragOperation
+C/macro/-/NSDragOperationAll
+C/econst/-/NSDragOperationAll_Obsolete
+C/econst/-/NSDragOperationCopy
+C/econst/-/NSDragOperationDelete
+C/econst/-/NSDragOperationEvery
+C/econst/-/NSDragOperationGeneric
+C/econst/-/NSDragOperationLink
+C/econst/-/NSDragOperationMove
+C/econst/-/NSDragOperationNone
+C/econst/-/NSDragOperationPrivate
+C/data/-/NSDragPboard
+C/func/-/NSDrawBitmap
+C/func/-/NSDrawButton
+C/func/-/NSDrawColorTiledRects
+C/func/-/NSDrawDarkBezel
+Objective-C/cl/-/NSDrawer
+C/econst/-/NSDrawerClosedState
+C/econst/-/NSDrawerClosingState
+Objective-C/intf/-/NSDrawerDelegate
+C/data/-/NSDrawerDidCloseNotification
+C/data/-/NSDrawerDidOpenNotification
+C/econst/-/NSDrawerOpeningState
+C/econst/-/NSDrawerOpenState
+C/tdef/-/NSDrawerState
+C/data/-/NSDrawerWillCloseNotification
+C/data/-/NSDrawerWillOpenNotification
+C/func/-/NSDrawGrayBezel
+C/func/-/NSDrawGroove
+C/func/-/NSDrawLightBezel
+C/func/-/NSDrawNinePartImage
+C/func/-/NSDrawThreePartImage
+C/func/-/NSDrawTiledRects
+C/func/-/NSDrawWhiteBezel
+C/func/-/NSDrawWindowBackground
+C/econst/-/nsDrvErr
+C/data/-/NSEarlierTimeDesignations
+C/macro/-/NSEC_PER_SEC
+C/macro/-/NSEC_PER_USEC
+C/data/-/NSEditableBinding
+Objective-C/cat/-/NSEditor
+C/data/-/NSEditorDocumentAttribute
+Objective-C/cat/-/NSEditorRegistration
+C/data/-/NSEnabledBinding
+C/func/-/NSEnableScreenUpdates
+C/econst/-/NSEndFunctionKey
+C/func/-/NSEndHashTableEnumeration
+C/func/-/NSEndMapTableEnumeration
+C/econst/-/NSEndsWithComparison
+C/econst/-/NSEndsWithPredicateOperatorType
+C/econst/-/NSEnterCharacter
+Objective-C/cl/-/NSEntityDescription
+Objective-C/cl/-/NSEntityMapping
+C/tdef/-/NSEntityMappingType
+Objective-C/cl/-/NSEntityMigrationPolicy
+C/econst/-/NSEntityMigrationPolicyError
+C/data/-/NSEntityNameInPathKey
+C/func/-/NSEnumerateHashTable
+C/func/-/NSEnumerateMapTable
+C/econst/-/NSEnumerationConcurrent
+C/tdef/-/NSEnumerationOptions
+C/econst/-/NSEnumerationReverse
+Objective-C/cl/-/NSEnumerator
+Objective-C/cl/-/NSEPSImageRep
+C/func/-/NSEqualPoints
+C/func/-/NSEqualRanges
+C/func/-/NSEqualRects
+C/func/-/NSEqualSizes
+C/econst/-/NSEqualToComparison
+C/econst/-/NSEqualToPredicateOperatorType
+C/econst/-/NSEraCalendarUnit
+C/econst/-/NSEraDatePickerElementFlag
+C/func/-/NSEraseRect
+C/econst/-/NSEraserPointingDevice
+Objective-C/cl/-/NSError
+C/data/-/NSErrorFailingURLStringKey
+C/data/-/NSErrorMergePolicy
+Objective-C/cat/-/NSErrorRecoveryAttempting
+C/econst/-/NSEvaluatedObjectExpressionType
+C/econst/-/NSEvenOddWindingRule
+Objective-C/cl/-/NSEvent
+C/econst/-/NSEventMaskBeginGesture
+C/econst/-/NSEventMaskEndGesture
+C/func/-/NSEventMaskFromType
+C/econst/-/NSEventMaskGesture
+C/econst/-/NSEventMaskMagnify
+C/econst/-/NSEventMaskRotate
+C/econst/-/NSEventMaskSwipe
+C/data/-/NSEventTrackingRunLoopMode
+C/tdef/-/NSEventType
+C/econst/-/NSEventTypeBeginGesture
+C/econst/-/NSEventTypeEndGesture
+C/econst/-/NSEventTypeGesture
+C/econst/-/NSEventTypeMagnify
+C/econst/-/NSEventTypeRotate
+C/econst/-/NSEventTypeSwipe
+C/econst/-/NSEverySubelement
+Objective-C/cl/-/NSException
+Objective-C/cl/-/NSExceptionHandler
+C/econst/-/NSExclude10_4ElementsIconCreationOption
+C/data/-/NSExcludedElementsDocumentAttribute
+C/data/-/NSExcludedKeysBinding
+C/econst/-/NSExcludeQuickDrawElementsIconCreationOption
+C/econst/-/NSExecutableArchitectureMismatchError
+C/econst/-/NSExecutableErrorMaximum
+C/econst/-/NSExecutableErrorMinimum
+C/econst/-/NSExecutableLinkError
+C/econst/-/NSExecutableLoadError
+C/econst/-/NSExecutableNotLoadableError
+C/econst/-/NSExecutableRuntimeMismatchError
+C/econst/-/NSExecuteFunctionKey
+Objective-C/cl/-/NSExistsCommand
+C/econst/-/NSExpandedFontMask
+C/data/-/NSExpansionAttributeName
+Objective-C/cl/-/NSExpression
+Objective-C/cl/-/NSExpressionDescription
+C/tdef/-/NSExpressionType
+C/data/-/NSExternalRecordExtensionOption
+C/econst/-/NSExternalRecordImportError
+C/data/-/NSExternalRecordsDirectoryOption
+C/data/-/NSExternalRecordsFileFormatOption
+C/func/-/NSExtraRefCount
+C/econst/-/NSF10FunctionKey
+C/econst/-/NSF11FunctionKey
+C/econst/-/NSF12FunctionKey
+C/econst/-/NSF13FunctionKey
+C/econst/-/NSF14FunctionKey
+C/econst/-/NSF15FunctionKey
+C/econst/-/NSF16FunctionKey
+C/econst/-/NSF17FunctionKey
+C/econst/-/NSF18FunctionKey
+C/econst/-/NSF19FunctionKey
+C/econst/-/NSF1FunctionKey
+C/econst/-/NSF20FunctionKey
+C/econst/-/NSF21FunctionKey
+C/econst/-/NSF22FunctionKey
+C/econst/-/NSF23FunctionKey
+C/econst/-/NSF24FunctionKey
+C/econst/-/NSF25FunctionKey
+C/econst/-/NSF26FunctionKey
+C/econst/-/NSF27FunctionKey
+C/econst/-/NSF28FunctionKey
+C/econst/-/NSF29FunctionKey
+C/econst/-/NSF2FunctionKey
+C/econst/-/NSF30FunctionKey
+C/econst/-/NSF31FunctionKey
+C/econst/-/NSF32FunctionKey
+C/econst/-/NSF33FunctionKey
+C/econst/-/NSF34FunctionKey
+C/econst/-/NSF35FunctionKey
+C/econst/-/NSF3FunctionKey
+C/econst/-/NSF4FunctionKey
+C/econst/-/NSF5FunctionKey
+C/econst/-/NSF6FunctionKey
+C/econst/-/NSF7FunctionKey
+C/econst/-/NSF8FunctionKey
+C/econst/-/NSF9FunctionKey
+C/data/-/NSFailedAuthenticationException
+Objective-C/intf/-/NSFastEnumeration
+C/tdef/-/NSFastEnumerationState
+Objective-C/cl/-/NSFetchedPropertyDescription
+Objective-C/cl/-/NSFetchRequest
+Objective-C/cl/-/NSFetchRequestExpression
+C/econst/-/NSFetchRequestExpressionType
+C/tdef/-/NSFetchRequestResultType
+C/data/-/NSFileAppendOnly
+C/data/-/NSFileBusy
+C/data/-/NSFileContentsPboardType
+C/data/-/NSFileCreationDate
+C/data/-/NSFileDeviceIdentifier
+C/econst/-/NSFileErrorMaximum
+C/econst/-/NSFileErrorMinimum
+C/data/-/NSFileExtensionHidden
+C/data/-/NSFileGroupOwnerAccountID
+C/data/-/NSFileGroupOwnerAccountName
+Objective-C/cl/-/NSFileHandle
+C/data/-/NSFileHandleConnectionAcceptedNotification
+C/data/-/NSFileHandleDataAvailableNotification
+C/data/-/NSFileHandleNotificationDataItem
+C/data/-/NSFileHandleNotificationFileHandleItem
+C/data/-/NSFileHandleNotificationMonitorModes
+C/data/-/NSFileHandleOperationException
+C/data/-/NSFileHandleReadCompletionNotification
+C/data/-/NSFileHandleReadToEndOfFileCompletionNotification
+C/econst/-/NSFileHandlingPanelBrowser
+C/econst/-/NSFileHandlingPanelCancelButton
+C/econst/-/NSFileHandlingPanelDiskButton
+C/econst/-/NSFileHandlingPanelDiskEjectButton
+C/econst/-/NSFileHandlingPanelForm
+C/econst/-/NSFileHandlingPanelHomeButton
+C/econst/-/NSFileHandlingPanelImageButton
+C/econst/-/NSFileHandlingPanelOKButton
+C/econst/-/NSFileHandlingPanelTitleField
+C/data/-/NSFileHFSCreatorCode
+C/data/-/NSFileHFSTypeCode
+C/data/-/NSFileImmutable
+C/econst/-/NSFileLockingError
+Objective-C/cl/-/NSFileManager
+C/tdef/-/NSFileManagerItemReplacementOptions
+C/econst/-/NSFileManagerItemReplacementUsingNewMetadataOnly
+C/econst/-/NSFileManagerItemReplacementWithoutDeletingBackupItem
+C/data/-/NSFileModificationDate
+C/data/-/NSFilenamesPboardType
+C/econst/-/NSFileNoSuchFileError
+C/data/-/NSFileOwnerAccountID
+C/data/-/NSFileOwnerAccountName
+C/data/-/NSFilePathErrorKey
+C/data/-/NSFilePosixPermissions
+C/econst/-/NSFileReadCorruptFileError
+C/econst/-/NSFileReadInapplicableStringEncodingError
+C/econst/-/NSFileReadInvalidFileNameError
+C/econst/-/NSFileReadNoPermissionError
+C/econst/-/NSFileReadNoSuchFileError
+C/econst/-/NSFileReadTooLargeError
+C/econst/-/NSFileReadUnknownError
+C/econst/-/NSFileReadUnknownStringEncodingError
+C/econst/-/NSFileReadUnsupportedSchemeError
+C/data/-/NSFileReferenceCount
+C/data/-/NSFileSize
+C/data/-/NSFilesPromisePboardType
+C/data/-/NSFileSystemFileNumber
+C/data/-/NSFilesystemFileType
+C/data/-/NSFileSystemFreeNodes
+C/data/-/NSFileSystemFreeSize
+C/data/-/NSFileSystemNodes
+C/data/-/NSFileSystemNumber
+C/data/-/NSFileSystemSize
+C/data/-/NSFileType
+C/data/-/NSFileTypeBlockSpecial
+C/data/-/NSFileTypeCharacterSpecial
+C/data/-/NSFileTypeDirectory
+C/data/-/NSFileTypeDocumentAttribute
+C/data/-/NSFileTypeDocumentOption
+C/func/-/NSFileTypeForHFSTypeCode
+C/data/-/NSFileTypeRegular
+C/data/-/NSFileTypeSocket
+C/data/-/NSFileTypeSymbolicLink
+C/data/-/NSFileTypeUnknown
+Objective-C/cl/-/NSFileWrapper
+C/econst/-/NSFileWrapperReadingImmediate
+C/tdef/-/NSFileWrapperReadingOptions
+C/econst/-/NSFileWrapperReadingWithoutMapping
+C/econst/-/NSFileWrapperWritingAtomic
+C/tdef/-/NSFileWrapperWritingOptions
+C/econst/-/NSFileWrapperWritingWithNameUpdating
+C/econst/-/NSFileWriteInapplicableStringEncodingError
+C/econst/-/NSFileWriteInvalidFileNameError
+C/econst/-/NSFileWriteNoPermissionError
+C/econst/-/NSFileWriteOutOfSpaceError
+C/econst/-/NSFileWriteUnknownError
+C/econst/-/NSFileWriteUnsupportedSchemeError
+C/econst/-/NSFileWriteVolumeReadOnlyError
+C/data/-/NSFilterPredicateBinding
+C/econst/-/NSFindFunctionKey
+C/tdef/-/NSFindPanelAction
+C/econst/-/NSFindPanelActionNext
+C/econst/-/NSFindPanelActionPrevious
+C/econst/-/NSFindPanelActionReplace
+C/econst/-/NSFindPanelActionReplaceAll
+C/econst/-/NSFindPanelActionReplaceAllInSelection
+C/econst/-/NSFindPanelActionReplaceAndFind
+C/econst/-/NSFindPanelActionSelectAll
+C/econst/-/NSFindPanelActionSelectAllInSelection
+C/econst/-/NSFindPanelActionSetFindString
+C/econst/-/NSFindPanelActionShowFindPanel
+C/data/-/NSFindPanelCaseInsensitiveSearch
+C/data/-/NSFindPanelSearchOptionsPboardType
+C/data/-/NSFindPanelSubstringMatch
+C/tdef/-/NSFindPanelSubstringMatchType
+C/econst/-/NSFindPanelSubstringMatchTypeContains
+C/econst/-/NSFindPanelSubstringMatchTypeEndsWith
+C/econst/-/NSFindPanelSubstringMatchTypeFullWord
+C/econst/-/NSFindPanelSubstringMatchTypeStartsWith
+C/data/-/NSFindPboard
+C/econst/-/NSFitPagination
+C/econst/-/NSFixedPitchFontMask
+C/econst/-/NSFlagsChanged
+C/econst/-/NSFlagsChangedMask
+C/econst/-/NSFloatAttributeType
+C/econst/-/NSFloatingPointSamplesBitmapFormat
+C/macro/-/NSFloatingWindowLevel
+C/econst/-/NSFloatType
+C/econst/-/NSFocusRingAbove
+C/econst/-/NSFocusRingBelow
+C/econst/-/NSFocusRingOnly
+C/tdef/-/NSFocusRingPlacement
+C/tdef/-/NSFocusRingType
+C/econst/-/NSFocusRingTypeDefault
+C/econst/-/NSFocusRingTypeExterior
+C/econst/-/NSFocusRingTypeNone
+Objective-C/cl/-/NSFont
+C/tdef/-/NSFontAction
+C/econst/-/NSFontAntialiasedIntegerAdvancementsRenderingMode
+C/econst/-/NSFontAntialiasedRenderingMode
+C/data/-/NSFontAttributeName
+C/data/-/NSFontBinding
+C/data/-/NSFontBoldBinding
+C/econst/-/NSFontBoldTrait
+C/data/-/NSFontCascadeListAttribute
+C/data/-/NSFontCharacterSetAttribute
+C/econst/-/NSFontClarendonSerifsClass
+C/econst/-/NSFontCollectionApplicationOnlyMask
+C/data/-/NSFontColorAttribute
+C/econst/-/NSFontCondensedTrait
+C/econst/-/NSFontDefaultRenderingMode
+Objective-C/cl/-/NSFontDescriptor
+C/econst/-/NSFontExpandedTrait
+C/data/-/NSFontFaceAttribute
+C/data/-/NSFontFamilyAttribute
+C/tdef/-/NSFontFamilyClass
+C/econst/-/NSFontFamilyClassMask
+C/data/-/NSFontFamilyNameBinding
+C/data/-/NSFontFeatureSelectorIdentifierKey
+C/data/-/NSFontFeatureSettingsAttribute
+C/data/-/NSFontFeatureTypeIdentifierKey
+C/data/-/NSFontFixedAdvanceAttribute
+C/econst/-/NSFontFreeformSerifsClass
+C/data/-/NSFontIdentityMatrix
+C/econst/-/NSFontIntegerAdvancementsRenderingMode
+C/data/-/NSFontItalicBinding
+C/econst/-/NSFontItalicTrait
+Objective-C/cl/-/NSFontManager
+C/data/-/NSFontMatrixAttribute
+C/econst/-/NSFontModernSerifsClass
+C/econst/-/NSFontMonoSpaceTrait
+C/data/-/NSFontNameAttribute
+C/data/-/NSFontNameBinding
+C/econst/-/NSFontOldStyleSerifsClass
+C/econst/-/NSFontOrnamentalsClass
+Objective-C/cl/-/NSFontPanel
+C/econst/-/NSFontPanelAllEffectsModeMask
+C/econst/-/NSFontPanelAllModesMask
+C/econst/-/NSFontPanelCollectionModeMask
+C/econst/-/NSFontPanelDocumentColorEffectModeMask
+C/econst/-/NSFontPanelFaceModeMask
+C/econst/-/NSFontPanelShadowEffectModeMask
+C/econst/-/NSFontPanelSizeModeMask
+C/econst/-/NSFontPanelStandardModesMask
+C/econst/-/NSFontPanelStrikethroughEffectModeMask
+C/econst/-/NSFontPanelTextColorEffectModeMask
+C/econst/-/NSFontPanelUnderlineEffectModeMask
+Objective-C/cat/-/NSFontPanelValidation
+C/data/-/NSFontPboard
+C/data/-/NSFontPboardType
+C/tdef/-/NSFontRenderingMode
+C/econst/-/NSFontSansSerifClass
+C/econst/-/NSFontScriptsClass
+C/data/-/NSFontSetChangedNotification
+C/data/-/NSFontSizeAttribute
+C/data/-/NSFontSizeBinding
+C/econst/-/NSFontSlabSerifsClass
+C/data/-/NSFontSlantTrait
+C/econst/-/NSFontSymbolicClass
+C/data/-/NSFontSymbolicTrait
+C/tdef/-/NSFontSymbolicTraits
+C/tdef/-/NSFontTraitMask
+C/data/-/NSFontTraitsAttribute
+C/econst/-/NSFontTransitionalSerifsClass
+C/econst/-/NSFontUIOptimizedTrait
+C/data/-/NSFontUnavailableException
+C/econst/-/NSFontUnknownClass
+C/data/-/NSFontVariationAttribute
+C/data/-/NSFontVariationAxisDefaultValueKey
+C/data/-/NSFontVariationAxisIdentifierKey
+C/data/-/NSFontVariationAxisMaximumValueKey
+C/data/-/NSFontVariationAxisMinimumValueKey
+C/data/-/NSFontVariationAxisNameKey
+C/econst/-/NSFontVerticalTrait
+C/data/-/NSFontVisibleNameAttribute
+C/data/-/NSFontWeightTrait
+C/data/-/NSFontWidthTrait
+C/econst/-/NSForcedOrderingSearch
+C/data/-/NSForegroundColorAttributeName
+Objective-C/cl/-/NSForm
+Objective-C/cl/-/NSFormatter
+C/econst/-/NSFormattingError
+C/econst/-/NSFormattingErrorMaximum
+C/econst/-/NSFormattingErrorMinimum
+Objective-C/cl/-/NSFormCell
+C/econst/-/NSFormFeedCharacter
+C/data/-/NSFoundationVersionNumber
+C/macro/-/NSFoundationVersionNumber10_0
+C/macro/-/NSFoundationVersionNumber10_1
+C/macro/-/NSFoundationVersionNumber10_1_1
+C/macro/-/NSFoundationVersionNumber10_1_2
+C/macro/-/NSFoundationVersionNumber10_1_3
+C/macro/-/NSFoundationVersionNumber10_1_4
+C/macro/-/NSFoundationVersionNumber10_2
+C/macro/-/NSFoundationVersionNumber10_2_1
+C/macro/-/NSFoundationVersionNumber10_2_2
+C/macro/-/NSFoundationVersionNumber10_2_3
+C/macro/-/NSFoundationVersionNumber10_2_4
+C/macro/-/NSFoundationVersionNumber10_2_5
+C/macro/-/NSFoundationVersionNumber10_2_6
+C/macro/-/NSFoundationVersionNumber10_2_7
+C/macro/-/NSFoundationVersionNumber10_2_8
+C/macro/-/NSFoundationVersionNumber10_3
+C/macro/-/NSFoundationVersionNumber10_3_1
+C/macro/-/NSFoundationVersionNumber10_3_2
+C/macro/-/NSFoundationVersionNumber10_3_3
+C/macro/-/NSFoundationVersionNumber10_3_4
+C/macro/-/NSFoundationVersionNumber10_3_5
+C/macro/-/NSFoundationVersionNumber10_3_6
+C/macro/-/NSFoundationVersionNumber10_3_7
+C/macro/-/NSFoundationVersionNumber10_3_8
+C/macro/-/NSFoundationVersionNumber10_3_9
+C/macro/-/NSFoundationVersionNumber10_4
+C/macro/-/NSFoundationVersionNumber10_4_1
+C/macro/-/NSFoundationVersionNumber10_4_10
+C/macro/-/NSFoundationVersionNumber10_4_11
+C/macro/-/NSFoundationVersionNumber10_4_2
+C/macro/-/NSFoundationVersionNumber10_4_3
+C/macro/-/NSFoundationVersionNumber10_4_4_Intel
+C/macro/-/NSFoundationVersionNumber10_4_4_PowerPC
+C/macro/-/NSFoundationVersionNumber10_4_5
+C/macro/-/NSFoundationVersionNumber10_4_6
+C/macro/-/NSFoundationVersionNumber10_4_7
+C/macro/-/NSFoundationVersionNumber10_4_8
+C/macro/-/NSFoundationVersionNumber10_4_9
+C/macro/-/NSFoundationVersionNumber10_5
+C/macro/-/NSFoundationVersionNumber10_5_1
+C/macro/-/NSFoundationVersionNumber10_5_2
+C/macro/-/NSFoundationVersionNumber10_5_3
+C/macro/-/NSFoundationVersionNumber10_5_4
+C/macro/-/NSFoundationVersionNumber10_5_5
+C/macro/-/NSFoundationVersionNumber10_5_6
+C/macro/-/NSFoundationVersionWithFileManagerResourceForkSupport
+C/econst/-/NSFourByteGlyphPacking
+C/econst/-/NSFPCurrentField
+C/econst/-/NSFPPreviewButton
+C/econst/-/NSFPPreviewField
+C/econst/-/NSFPRevertButton
+C/econst/-/NSFPSetButton
+C/econst/-/NSFPSizeField
+C/econst/-/NSFPSizeTitle
+C/func/-/NSFrameRect
+C/func/-/NSFrameRectWithWidth
+C/func/-/NSFrameRectWithWidthUsingOperation
+C/func/-/NSFreeHashTable
+C/func/-/NSFreeMapTable
+C/data/-/NSFTPPropertyActiveTransferModeKey
+C/data/-/NSFTPPropertyFileOffsetKey
+C/data/-/NSFTPPropertyFTPProxy
+C/data/-/NSFTPPropertyUserLoginKey
+C/data/-/NSFTPPropertyUserPasswordKey
+C/data/-/NSFullScreenModeAllScreens
+C/data/-/NSFullScreenModeApplicationPresentationOptions
+C/data/-/NSFullScreenModeSetting
+C/data/-/NSFullScreenModeWindowLevel
+C/func/-/NSFullUserName
+C/econst/-/NSFunctionExpressionType
+C/econst/-/NSFunctionKeyMask
+Objective-C/cl/-/NSGarbageCollector
+C/data/-/NSGeneralPboard
+C/data/-/NSGenericException
+C/func/-/NSGetAlertPanel
+Objective-C/cl/-/NSGetCommand
+C/func/-/NSGetCriticalAlertPanel
+C/func/-/NSGetFileType
+C/func/-/NSGetFileTypes
+C/func/-/NSGetInformationalAlertPanel
+C/func/-/NSGetSizeAndAlignment
+C/func/-/NSGetUncaughtExceptionHandler
+C/func/-/NSGetWindowServerMemory
+C/econst/-/NSGIFFileType
+C/data/-/NSGlobalDomain
+C/tdef/-/NSGlyph
+C/econst/-/NSGlyphAbove
+C/econst/-/NSGlyphAttributeBidiLevel
+C/econst/-/NSGlyphAttributeElastic
+C/econst/-/NSGlyphAttributeInscribe
+C/econst/-/NSGlyphAttributeSoft
+C/econst/-/NSGlyphBelow
+Objective-C/cl/-/NSGlyphGenerator
+Objective-C/cl/-/NSGlyphInfo
+C/data/-/NSGlyphInfoAttributeName
+C/econst/-/NSGlyphInscribeAbove
+C/econst/-/NSGlyphInscribeBase
+C/econst/-/NSGlyphInscribeBelow
+C/econst/-/NSGlyphInscribeOverBelow
+C/econst/-/NSGlyphInscribeOverstrike
+C/tdef/-/NSGlyphInscription
+C/tdef/-/NSGlyphRelation
+Objective-C/intf/-/NSGlyphStorage
+Objective-C/cl/-/NSGradient
+C/econst/-/NSGradientConcaveStrong
+C/econst/-/NSGradientConcaveWeak
+C/econst/-/NSGradientConvexStrong
+C/econst/-/NSGradientConvexWeak
+C/tdef/-/NSGradientDrawingOptions
+C/econst/-/NSGradientDrawsAfterEndingLocation
+C/econst/-/NSGradientDrawsBeforeStartingLocation
+C/econst/-/NSGradientNone
+C/tdef/-/NSGradientType
+C/data/-/NSGrammarCorrections
+C/data/-/NSGrammarRange
+C/data/-/NSGrammarUserDescription
+Objective-C/cl/-/NSGraphicsContext
+C/data/-/NSGraphicsContextDestinationAttributeName
+C/data/-/NSGraphicsContextPDFFormat
+C/data/-/NSGraphicsContextPSFormat
+C/data/-/NSGraphicsContextRepresentationFormatAttributeName
+C/econst/-/NSGraphiteControlTint
+C/econst/-/NSGrayColorSpaceModel
+C/econst/-/NSGrayModeColorPanel
+C/econst/-/NSGreaterThanComparison
+C/econst/-/NSGreaterThanOrEqualToComparison
+C/econst/-/NSGreaterThanOrEqualToPredicateOperatorType
+C/econst/-/NSGreaterThanPredicateOperatorType
+C/data/-/NSGregorianCalendar
+C/econst/-/NSGrooveBorder
+C/econst/-/NSHandleOtherExceptionMask
+C/data/-/NSHandlesContentAsCompoundValueBindingOption
+C/econst/-/NSHandleTopLevelExceptionMask
+C/econst/-/NSHandleUncaughtExceptionMask
+C/econst/-/NSHandleUncaughtRuntimeErrorMask
+C/econst/-/NSHandleUncaughtSystemExceptionMask
+C/macro/-/NSHangOnEveryExceptionMask
+C/econst/-/NSHangOnOtherExceptionMask
+C/econst/-/NSHangOnTopLevelExceptionMask
+C/econst/-/NSHangOnUncaughtExceptionMask
+C/econst/-/NSHangOnUncaughtRuntimeErrorMask
+C/econst/-/NSHangOnUncaughtSystemExceptionMask
+C/tdef/-/NSHashEnumerator
+C/func/-/NSHashGet
+C/func/-/NSHashInsert
+C/func/-/NSHashInsertIfAbsent
+C/func/-/NSHashInsertKnownAbsent
+C/func/-/NSHashRemove
+Objective-C/cl/-/NSHashTable
+C/tdef/-/NSHashTable
+C/tdef/-/NSHashTableCallBacks
+C/econst/-/NSHashTableCopyIn
+C/econst/-/NSHashTableObjectPointerPersonality
+C/tdef/-/NSHashTableOptions
+C/tag/-/NSHashTableOptions
+C/econst/-/NSHashTableStrongMemory
+C/econst/-/NSHashTableZeroingWeakMemory
+C/data/-/NSHeaderTitleBinding
+C/econst/-/NSHeavierFontAction
+C/data/-/NSHebrewCalendar
+C/func/-/NSHeight
+C/data/-/NSHelpAnchorErrorKey
+C/econst/-/NSHelpButtonBezelStyle
+C/econst/-/NSHelpFunctionKey
+C/econst/-/NSHelpKeyMask
+Objective-C/cl/-/NSHelpManager
+C/func/-/NSHFSTypeCodeFromFileType
+C/func/-/NSHFSTypeOfFile
+C/data/-/NSHiddenBinding
+C/econst/-/NSHighlightModeMatrix
+C/func/-/NSHighlightRect
+C/func/-/NSHomeDirectory
+C/func/-/NSHomeDirectoryForUser
+C/econst/-/NSHomeFunctionKey
+C/econst/-/NSHorizontalRuler
+Objective-C/cl/-/NSHost
+C/func/-/NSHostByteOrder
+C/econst/-/NSHourCalendarUnit
+C/econst/-/NSHourMinuteDatePickerElementFlag
+C/econst/-/NSHourMinuteSecondDatePickerElementFlag
+C/data/-/NSHourNameDesignations
+C/econst/-/NSHPUXOperatingSystem
+C/econst/-/NSHSBModeColorPanel
+C/data/-/NSHTMLPboardType
+C/data/-/NSHTMLTextDocumentType
+Objective-C/cl/-/NSHTTPCookie
+C/tdef/-/NSHTTPCookieAcceptPolicy
+C/econst/-/NSHTTPCookieAcceptPolicyAlways
+C/econst/-/NSHTTPCookieAcceptPolicyNever
+C/econst/-/NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain
+C/data/-/NSHTTPCookieComment
+C/data/-/NSHTTPCookieCommentURL
+C/data/-/NSHTTPCookieDiscard
+C/data/-/NSHTTPCookieDomain
+C/data/-/NSHTTPCookieExpires
+C/data/-/NSHTTPCookieManagerAcceptPolicyChangedNotification
+C/data/-/NSHTTPCookieManagerCookiesChangedNotification
+C/data/-/NSHTTPCookieMaximumAge
+C/data/-/NSHTTPCookieName
+C/data/-/NSHTTPCookieOriginURL
+C/data/-/NSHTTPCookiePath
+C/data/-/NSHTTPCookiePort
+C/data/-/NSHTTPCookieSecure
+Objective-C/cl/-/NSHTTPCookieStorage
+C/data/-/NSHTTPCookieValue
+C/data/-/NSHTTPCookieVersion
+C/data/-/NSHTTPPropertyErrorPageDataKey
+C/data/-/NSHTTPPropertyHTTPProxy
+C/data/-/NSHTTPPropertyRedirectionHeadersKey
+C/data/-/NSHTTPPropertyServerHTTPVersionKey
+C/data/-/NSHTTPPropertyStatusCodeKey
+C/data/-/NSHTTPPropertyStatusReasonKey
+Objective-C/cl/-/NSHTTPURLResponse
+C/econst/-/NSHUDWindowMask
+C/data/-/NSHyphenationFactorDocumentAttribute
+C/data/-/NSIconSize
+C/econst/-/NSIdentityMappingCharacterCollection
+Objective-C/intf/-/NSIgnoreMisspelledWords
+C/data/-/NSIgnorePersistentStoreVersioningOption
+C/data/-/NSIllegalSelectorException
+C/econst/-/NSIllegalTextMovement
+Objective-C/cl/-/NSImage
+C/econst/-/NSImageAbove
+C/econst/-/NSImageAlignBottom
+C/econst/-/NSImageAlignBottomLeft
+C/econst/-/NSImageAlignBottomRight
+C/econst/-/NSImageAlignCenter
+C/econst/-/NSImageAlignLeft
+C/tdef/-/NSImageAlignment
+C/econst/-/NSImageAlignRight
+C/econst/-/NSImageAlignTop
+C/econst/-/NSImageAlignTopLeft
+C/econst/-/NSImageAlignTopRight
+C/econst/-/NSImageBelow
+C/data/-/NSImageBinding
+C/econst/-/NSImageCacheAlways
+C/econst/-/NSImageCacheBySize
+C/econst/-/NSImageCacheDefault
+C/data/-/NSImageCacheException
+C/tdef/-/NSImageCacheMode
+C/econst/-/NSImageCacheNever
+Objective-C/cl/-/NSImageCell
+C/econst/-/NSImageCellType
+C/data/-/NSImageColorSyncProfileData
+C/data/-/NSImageCompressionFactor
+C/data/-/NSImageCompressionMethod
+C/data/-/NSImageCurrentFrame
+C/data/-/NSImageCurrentFrameDuration
+Objective-C/intf/-/NSImageDelegate
+C/data/-/NSImageDitherTransparency
+C/data/-/NSImageEXIFData
+C/data/-/NSImageFallbackBackgroundColor
+C/econst/-/NSImageFrameButton
+C/data/-/NSImageFrameCount
+C/econst/-/NSImageFrameGrayBezel
+C/econst/-/NSImageFrameGroove
+C/econst/-/NSImageFrameNone
+C/econst/-/NSImageFramePhoto
+C/tdef/-/NSImageFrameStyle
+C/data/-/NSImageGamma
+C/data/-/NSImageHintCTM
+C/data/-/NSImageHintInterpolation
+C/data/-/NSImageInterlaced
+C/tdef/-/NSImageInterpolation
+C/econst/-/NSImageInterpolationDefault
+C/econst/-/NSImageInterpolationHigh
+C/econst/-/NSImageInterpolationLow
+C/econst/-/NSImageInterpolationMedium
+C/econst/-/NSImageInterpolationNone
+C/econst/-/NSImageLeft
+C/tdef/-/NSImageLoadStatus
+C/econst/-/NSImageLoadStatusCancelled
+C/econst/-/NSImageLoadStatusCompleted
+C/econst/-/NSImageLoadStatusInvalidData
+C/econst/-/NSImageLoadStatusReadError
+C/econst/-/NSImageLoadStatusUnexpectedEOF
+C/data/-/NSImageLoopCount
+C/data/-/NSImageNameActionTemplate
+C/data/-/NSImageNameAddTemplate
+C/data/-/NSImageNameAdvanced
+C/data/-/NSImageNameApplicationIcon
+C/data/-/NSImageNameBluetoothTemplate
+C/data/-/NSImageNameBonjour
+C/data/-/NSImageNameBookmarksTemplate
+C/data/-/NSImageNameCaution
+C/data/-/NSImageNameColorPanel
+C/data/-/NSImageNameColumnViewTemplate
+C/data/-/NSImageNameComputer
+C/data/-/NSImageNameDotMac
+C/data/-/NSImageNameEnterFullScreenTemplate
+C/data/-/NSImageNameEveryone
+C/data/-/NSImageNameExitFullScreenTemplate
+C/data/-/NSImageNameFlowViewTemplate
+C/data/-/NSImageNameFolder
+C/data/-/NSImageNameFolderBurnable
+C/data/-/NSImageNameFolderSmart
+C/data/-/NSImageNameFollowLinkFreestandingTemplate
+C/data/-/NSImageNameFontPanel
+C/data/-/NSImageNameGoLeftTemplate
+C/data/-/NSImageNameGoRightTemplate
+C/data/-/NSImageNameHomeTemplate
+C/data/-/NSImageNameIChatTheaterTemplate
+C/data/-/NSImageNameIconViewTemplate
+C/data/-/NSImageNameInfo
+C/data/-/NSImageNameInvalidDataFreestandingTemplate
+C/data/-/NSImageNameLeftFacingTriangleTemplate
+C/data/-/NSImageNameListViewTemplate
+C/data/-/NSImageNameLockLockedTemplate
+C/data/-/NSImageNameLockUnlockedTemplate
+C/data/-/NSImageNameMenuMixedStateTemplate
+C/data/-/NSImageNameMenuOnStateTemplate
+C/data/-/NSImageNameMobileMe
+C/data/-/NSImageNameMultipleDocuments
+C/data/-/NSImageNameNetwork
+C/data/-/NSImageNamePathTemplate
+C/data/-/NSImageNamePreferencesGeneral
+C/data/-/NSImageNameQuickLookTemplate
+C/data/-/NSImageNameRefreshFreestandingTemplate
+C/data/-/NSImageNameRefreshTemplate
+C/data/-/NSImageNameRemoveTemplate
+C/data/-/NSImageNameRevealFreestandingTemplate
+C/data/-/NSImageNameRightFacingTriangleTemplate
+C/data/-/NSImageNameSlideshowTemplate
+C/data/-/NSImageNameSmartBadgeTemplate
+C/data/-/NSImageNameStatusAvailable
+C/data/-/NSImageNameStatusNone
+C/data/-/NSImageNameStatusPartiallyAvailable
+C/data/-/NSImageNameStatusUnavailable
+C/data/-/NSImageNameStopProgressFreestandingTemplate
+C/data/-/NSImageNameStopProgressTemplate
+C/data/-/NSImageNameTrashEmpty
+C/data/-/NSImageNameTrashFull
+C/data/-/NSImageNameUser
+C/data/-/NSImageNameUserAccounts
+C/data/-/NSImageNameUserGroup
+C/data/-/NSImageNameUserGuest
+C/econst/-/NSImageOnly
+C/econst/-/NSImageOverlaps
+C/data/-/NSImageProgressive
+Objective-C/cl/-/NSImageRep
+C/tdef/-/NSImageRepLoadStatus
+C/econst/-/NSImageRepLoadStatusCompleted
+C/econst/-/NSImageRepLoadStatusInvalidData
+C/econst/-/NSImageRepLoadStatusReadingHeader
+C/econst/-/NSImageRepLoadStatusUnexpectedEOF
+C/econst/-/NSImageRepLoadStatusUnknownType
+C/econst/-/NSImageRepLoadStatusWillNeedAllData
+C/econst/-/NSImageRepMatchesDevice
+C/macro/-/NSImageRepRegistryChangedNotification
+C/data/-/NSImageRepRegistryDidChangeNotification
+C/data/-/NSImageRGBColorTable
+C/econst/-/NSImageRight
+C/econst/-/NSImageScaleAxesIndependently
+C/econst/-/NSImageScaleNone
+C/econst/-/NSImageScaleProportionallyDown
+C/econst/-/NSImageScaleProportionallyUpOrDown
+C/tdef/-/NSImageScaling
+Objective-C/cl/-/NSImageView
+C/data/-/NSIncludedKeysBinding
+C/data/-/NSInconsistentArchiveException
+C/func/-/NSIncrementExtraRefCount
+C/econst/-/NSIndexedColorSpaceModel
+Objective-C/cl/-/NSIndexPath
+Objective-C/cl/-/NSIndexSet
+Objective-C/cl/-/NSIndexSpecifier
+C/econst/-/NSIndexSubelement
+C/data/-/NSIndianCalendar
+C/data/-/NSInferMappingModelAutomaticallyOption
+C/econst/-/NSInferredMappingModelError
+C/econst/-/NSInformationalAlertStyle
+C/econst/-/NSInformationalRequest
+C/data/-/NSInitialKeyBinding
+C/data/-/NSInitialValueBinding
+C/data/-/NSInkTextPboardType
+C/data/-/NSInMemoryStoreType
+C/econst/-/NSInPredicateOperatorType
+C/econst/-/NSInputMethodsDirectory
+Objective-C/cl/-/NSInputStream
+C/econst/-/NSInsertCharFunctionKey
+C/data/-/NSInsertedObjectsKey
+C/econst/-/NSInsertFunctionKey
+C/tdef/-/NSInsertionPosition
+C/econst/-/NSInsertLineFunctionKey
+C/data/-/NSInsertsNullPlaceholderBindingOption
+C/func/-/NSInsetRect
+C/tdef/-/NSInteger
+C/econst/-/NSInteger16AttributeType
+C/econst/-/NSInteger32AttributeType
+C/econst/-/NSInteger64AttributeType
+C/data/-/NSIntegerHashCallBacks
+C/data/-/NSIntegerMapKeyCallBacks
+C/data/-/NSIntegerMapValueCallBacks
+C/macro/-/NSIntegerMax
+C/macro/-/NSIntegerMin
+C/func/-/NSIntegralRect
+C/tdef/-/NSInterfaceStyle
+C/data/-/NSInterfaceStyleDefault
+C/func/-/NSInterfaceStyleForKey
+C/data/-/NSInternalInconsistencyException
+C/econst/-/NSInternalScriptError
+C/econst/-/NSInternalSpecifierError
+C/data/-/NSInternationalCurrencyString
+C/func/-/NSIntersectionRange
+C/func/-/NSIntersectionRect
+C/econst/-/NSIntersectSetExpressionType
+C/func/-/NSIntersectsRect
+C/data/-/NSIntHashCallBacks
+C/data/-/NSIntMapKeyCallBacks
+C/data/-/NSIntMapValueCallBacks
+C/econst/-/NSIntType
+C/data/-/NSInvalidArchiveOperationException
+C/data/-/NSInvalidArgumentException
+C/data/-/NSInvalidatedAllObjectsKey
+C/data/-/NSInvalidatedObjectsKey
+C/econst/-/NSInvalidIndexSpecifierError
+C/data/-/NSInvalidReceivePortException
+C/data/-/NSInvalidSendPortException
+C/data/-/NSInvalidUnarchiveOperationException
+Objective-C/cl/-/NSInvocation
+Objective-C/cl/-/NSInvocationOperation
+C/data/-/NSInvocationOperationCancelledException
+C/data/-/NSInvocationOperationVoidResultException
+C/data/-/NSInvokesSeparatelyWithArrayObjectsBindingOption
+C/func/-/NSIsControllerMarker
+C/func/-/NSIsEmptyRect
+C/data/-/NSIsIndeterminateBinding
+C/data/-/NSIslamicCalendar
+C/data/-/NSIslamicCivilCalendar
+C/data/-/NSIsNilTransformerName
+C/data/-/NSIsNotNilTransformerName
+C/econst/-/NSISO2022JPStringEncoding
+C/data/-/NSISO8601Calendar
+C/econst/-/NSISOLatin1StringEncoding
+C/econst/-/NSISOLatin2StringEncoding
+C/func/-/NSIsSymbolNameDefined
+C/func/-/NSIsSymbolNameDefinedInImage
+C/func/-/NSIsSymbolNameDefinedWithHint
+C/econst/-/NSItalicFontMask
+C/econst/-/NSItemReplacementDirectory
+C/data/-/NSJapaneseCalendar
+C/econst/-/NSJapaneseEUCGlyphPacking
+C/econst/-/NSJapaneseEUCStringEncoding
+C/func/-/NSJavaBundleCleanup
+C/func/-/NSJavaBundleSetup
+C/data/-/NSJavaClasses
+C/func/-/NSJavaClassesForBundle
+C/func/-/NSJavaClassesFromPath
+C/data/-/NSJavaDidCreateVirtualMachineNotification
+C/data/-/NSJavaDidSetupVirtualMachineNotification
+C/data/-/NSJavaLibraryPath
+C/func/-/NSJavaNeedsToLoadClasses
+C/func/-/NSJavaNeedsVirtualMachine
+C/func/-/NSJavaObjectNamedInPath
+C/data/-/NSJavaOwnVirtualMachine
+C/data/-/NSJavaPath
+C/data/-/NSJavaPathSeparator
+C/func/-/NSJavaProvidesClasses
+C/data/-/NSJavaRoot
+C/func/-/NSJavaSetup
+C/func/-/NSJavaSetupVirtualMachine
+C/data/-/NSJavaUserPath
+C/data/-/NSJavaWillCreateVirtualMachineNotification
+C/data/-/NSJavaWillSetupVirtualMachineNotification
+C/econst/-/NSJPEG2000FileType
+C/econst/-/NSJPEGFileType
+C/econst/-/NSJustifiedTextAlignment
+C/data/-/NSKernAttributeName
+C/econst/-/NSKeyDown
+C/econst/-/NSKeyDownMask
+Objective-C/cl/-/NSKeyedArchiver
+Objective-C/intf/-/NSKeyedArchiverDelegate
+C/data/-/NSKeyedUnarchiveFromDataTransformerName
+Objective-C/cl/-/NSKeyedUnarchiver
+Objective-C/intf/-/NSKeyedUnarchiverDelegate
+C/econst/-/NSKeyPathExpressionType
+C/econst/-/NSKeySpecifierEvaluationScriptError
+C/econst/-/NSKeyUp
+C/econst/-/NSKeyUpMask
+Objective-C/cat/-/NSKeyValueBindingCreation
+C/tdef/-/NSKeyValueChange
+C/data/-/NSKeyValueChangeIndexesKey
+C/econst/-/NSKeyValueChangeInsertion
+C/data/-/NSKeyValueChangeKindKey
+C/data/-/NSKeyValueChangeNewKey
+C/data/-/NSKeyValueChangeNotificationIsPriorKey
+C/data/-/NSKeyValueChangeOldKey
+C/econst/-/NSKeyValueChangeRemoval
+C/econst/-/NSKeyValueChangeReplacement
+C/econst/-/NSKeyValueChangeSetting
+Objective-C/cat/-/NSKeyValueCoding
+C/econst/-/NSKeyValueIntersectSetMutation
+C/econst/-/NSKeyValueMinusSetMutation
+Objective-C/cat/-/NSKeyValueObserving
+C/econst/-/NSKeyValueObservingOptionInitial
+C/econst/-/NSKeyValueObservingOptionNew
+C/econst/-/NSKeyValueObservingOptionOld
+C/econst/-/NSKeyValueObservingOptionPrior
+C/tdef/-/NSKeyValueObservingOptions
+C/tdef/-/NSKeyValueSetMutationKind
+C/econst/-/NSKeyValueSetSetMutation
+C/econst/-/NSKeyValueUnionSetMutation
+C/econst/-/NSKeyValueValidationError
+C/data/-/NSKeywordsDocumentAttribute
+C/econst/-/NSLABColorSpaceModel
+C/data/-/NSLabelBinding
+C/econst/-/NSLandscapeOrientation
+C/data/-/NSLaterTimeDesignations
+Objective-C/cl/-/NSLayoutManager
+Objective-C/intf/-/NSLayoutManagerDelegate
+C/econst/-/NSLeftArrowFunctionKey
+C/data/-/NSLeftMarginDocumentAttribute
+C/econst/-/NSLeftMouseDown
+C/econst/-/NSLeftMouseDownMask
+C/econst/-/NSLeftMouseDragged
+C/econst/-/NSLeftMouseDraggedMask
+C/econst/-/NSLeftMouseUp
+C/econst/-/NSLeftMouseUpMask
+C/econst/-/NSLeftTabsBezelBorder
+C/econst/-/NSLeftTabStopType
+C/econst/-/NSLeftTextAlignment
+C/econst/-/NSLeftTextMovement
+C/econst/-/NSLessThanComparison
+C/econst/-/NSLessThanOrEqualToComparison
+C/econst/-/NSLessThanOrEqualToPredicateOperatorType
+C/econst/-/NSLessThanPredicateOperatorType
+Objective-C/cl/-/NSLevelIndicator
+Objective-C/cl/-/NSLevelIndicatorCell
+C/tdef/-/NSLevelIndicatorStyle
+C/econst/-/NSLibraryDirectory
+C/func/-/NSLibraryNameForModule
+C/data/-/NSLigatureAttributeName
+C/econst/-/NSLighterFontAction
+C/data/-/NSLightGray
+C/econst/-/NSLikePredicateOperatorType
+C/econst/-/NSLinearSlider
+C/econst/-/NSLineBorder
+C/econst/-/NSLineBreakByCharWrapping
+C/econst/-/NSLineBreakByClipping
+C/econst/-/NSLineBreakByTruncatingHead
+C/econst/-/NSLineBreakByTruncatingMiddle
+C/econst/-/NSLineBreakByTruncatingTail
+C/econst/-/NSLineBreakByWordWrapping
+C/tdef/-/NSLineCapStyle
+C/econst/-/NSLineDoesntMove
+C/tdef/-/NSLineJoinStyle
+C/tdef/-/NSLineMovementDirection
+C/econst/-/NSLineMovesDown
+C/econst/-/NSLineMovesLeft
+C/econst/-/NSLineMovesRight
+C/econst/-/NSLineMovesUp
+C/econst/-/NSLineSeparatorCharacter
+C/tdef/-/NSLineSweepDirection
+C/econst/-/NSLineSweepDown
+C/econst/-/NSLineSweepLeft
+C/econst/-/NSLineSweepRight
+C/econst/-/NSLineSweepUp
+C/econst/-/NSLineToBezierPathElement
+C/data/-/NSLinkAttributeName
+C/func/-/NSLinkModule
+C/econst/-/NSListModeMatrix
+C/econst/-/NSLiteralSearch
+C/data/-/NSLoadedClasses
+C/econst/-/NSLocalDomainMask
+Objective-C/cl/-/NSLocale
+C/data/-/NSLocaleAlternateQuotationBeginDelimiterKey
+C/data/-/NSLocaleAlternateQuotationEndDelimiterKey
+C/data/-/NSLocaleCalendar
+C/data/-/NSLocaleCollationIdentifier
+C/data/-/NSLocaleCollatorIdentifier
+C/data/-/NSLocaleCountryCode
+C/data/-/NSLocaleCurrencyCode
+C/data/-/NSLocaleCurrencySymbol
+C/data/-/NSLocaleDecimalSeparator
+C/data/-/NSLocaleExemplarCharacterSet
+C/data/-/NSLocaleGroupingSeparator
+C/data/-/NSLocaleIdentifier
+C/data/-/NSLocaleLanguageCode
+C/tdef/-/NSLocaleLanguageDirection
+C/econst/-/NSLocaleLanguageDirectionBottomToTop
+C/econst/-/NSLocaleLanguageDirectionLeftToRight
+C/econst/-/NSLocaleLanguageDirectionRightToLeft
+C/econst/-/NSLocaleLanguageDirectionTopToBottom
+C/econst/-/NSLocaleLanguageDirectionUnknown
+C/data/-/NSLocaleMeasurementSystem
+C/data/-/NSLocaleQuotationBeginDelimiterKey
+C/data/-/NSLocaleQuotationEndDelimiterKey
+C/data/-/NSLocaleScriptCode
+C/econst/-/NSLocaleSensitivePredicateOption
+C/data/-/NSLocaleUsesMetricSystem
+C/data/-/NSLocaleVariantCode
+C/data/-/NSLocalizedDescriptionKey
+C/data/-/NSLocalizedFailureReasonErrorKey
+C/data/-/NSLocalizedKeyDictionaryBinding
+C/data/-/NSLocalizedRecoveryOptionsErrorKey
+C/data/-/NSLocalizedRecoverySuggestionErrorKey
+C/macro/-/NSLocalizedString
+C/macro/-/NSLocalizedStringFromTable
+C/macro/-/NSLocalizedStringFromTableInBundle
+C/macro/-/NSLocalizedStringWithDefaultValue
+C/data/-/NSLocalNotificationCenterType
+C/func/-/NSLocationInRange
+Objective-C/cl/-/NSLock
+Objective-C/intf/-/NSLocking
+C/func/-/NSLog
+C/macro/-/NSLogAndHandleEveryExceptionMask
+Objective-C/cl/-/NSLogicalTest
+C/econst/-/NSLogOtherExceptionMask
+C/func/-/NSLogPageSize
+C/econst/-/NSLogTopLevelExceptionMask
+C/econst/-/NSLogUncaughtExceptionMask
+C/econst/-/NSLogUncaughtRuntimeErrorMask
+C/econst/-/NSLogUncaughtSystemExceptionMask
+C/func/-/NSLogv
+C/func/-/NSLookupAndBindSymbol
+C/func/-/NSLookupAndBindSymbolWithHint
+C/func/-/NSLookupSymbolInImage
+C/func/-/NSLookupSymbolInModule
+Objective-C/cl/-/NSMachBootstrapServer
+C/data/-/NSMachErrorDomain
+C/econst/-/NSMACHOperatingSystem
+Objective-C/cl/-/NSMachPort
+C/econst/-/NSMachPortDeallocateNone
+C/econst/-/NSMachPortDeallocateReceiveRight
+C/econst/-/NSMachPortDeallocateSendRight
+Objective-C/intf/-/NSMachPortDelegate
+C/econst/-/NSMacintoshInterfaceStyle
+C/econst/-/NSMacOSRomanStringEncoding
+C/data/-/NSMacSimpleTextDocumentType
+C/macro/-/NSMainMenuWindowLevel
+C/func/-/NSMakeCollectable
+C/func/-/NSMakePoint
+C/func/-/NSMakeRange
+C/func/-/NSMakeRect
+C/func/-/NSMakeSize
+C/data/-/NSMallocException
+Objective-C/cl/-/NSManagedObject
+Objective-C/cl/-/NSManagedObjectContext
+C/data/-/NSManagedObjectContextBinding
+C/data/-/NSManagedObjectContextDidSaveNotification
+C/econst/-/NSManagedObjectContextLockingError
+C/data/-/NSManagedObjectContextObjectsDidChangeNotification
+C/data/-/NSManagedObjectContextWillSaveNotification
+C/econst/-/NSManagedObjectExternalRelationshipError
+Objective-C/cl/-/NSManagedObjectID
+C/econst/-/NSManagedObjectIDResultType
+C/econst/-/NSManagedObjectMergeError
+Objective-C/cl/-/NSManagedObjectModel
+C/econst/-/NSManagedObjectReferentialIntegrityError
+C/econst/-/NSManagedObjectResultType
+C/econst/-/NSManagedObjectValidationError
+C/data/-/NSManagerDocumentAttribute
+C/tdef/-/NSMapEnumerator
+C/func/-/NSMapGet
+C/func/-/NSMapInsert
+C/func/-/NSMapInsertIfAbsent
+C/func/-/NSMapInsertKnownAbsent
+C/func/-/NSMapMember
+C/econst/-/NSMappedRead
+Objective-C/cl/-/NSMappingModel
+C/func/-/NSMapRemove
+Objective-C/cl/-/NSMapTable
+C/tdef/-/NSMapTable
+C/econst/-/NSMapTableCopyIn
+C/tdef/-/NSMapTableKeyCallBacks
+C/econst/-/NSMapTableObjectPointerPersonality
+C/tdef/-/NSMapTableOptions
+C/tag/-/NSMapTableOptions
+C/econst/-/NSMapTableStrongMemory
+C/tdef/-/NSMapTableValueCallBacks
+C/econst/-/NSMapTableZeroingWeakMemory
+C/data/-/NSMarkedClauseSegmentAttributeName
+C/econst/-/NSMatchesPredicateOperatorType
+Objective-C/cl/-/NSMatrix
+Objective-C/intf/-/NSMatrixDelegate
+C/tdef/-/NSMatrixMode
+C/data/-/NSMaximumKeyValueOperator
+C/data/-/NSMaximumRecentsBinding
+C/macro/-/NSMaximumStringLength
+C/func/-/NSMaxRange
+C/data/-/NSMaxValueBinding
+C/data/-/NSMaxWidthBinding
+C/func/-/NSMaxX
+C/econst/-/NSMaxXEdge
+C/func/-/NSMaxY
+C/econst/-/NSMaxYEdge
+Objective-C/cl/-/NSMenu
+Objective-C/intf/-/NSMenuDelegate
+C/data/-/NSMenuDidAddItemNotification
+C/data/-/NSMenuDidBeginTrackingNotification
+C/data/-/NSMenuDidChangeItemNotification
+C/data/-/NSMenuDidEndTrackingNotification
+C/data/-/NSMenuDidRemoveItemNotification
+C/data/-/NSMenuDidSendActionNotification
+C/econst/-/NSMenuFunctionKey
+Objective-C/cl/-/NSMenuItem
+Objective-C/cl/-/NSMenuItemCell
+C/tdef/-/NSMenuProperties
+C/econst/-/NSMenuPropertyItemAccessibilityDescription
+C/econst/-/NSMenuPropertyItemAttributedTitle
+C/econst/-/NSMenuPropertyItemEnabled
+C/econst/-/NSMenuPropertyItemImage
+C/econst/-/NSMenuPropertyItemKeyEquivalent
+C/econst/-/NSMenuPropertyItemTitle
+Objective-C/cat/-/NSMenuValidation
+Objective-C/cl/-/NSMenuView
+C/data/-/NSMenuWillSendActionNotification
+C/data/-/NSMergeByPropertyObjectTrumpMergePolicy
+C/data/-/NSMergeByPropertyStoreTrumpMergePolicy
+Objective-C/cl/-/NSMessagePort
+Objective-C/cl/-/NSMessagePortNameServer
+Objective-C/cl/-/NSMetadataItem
+Objective-C/cl/-/NSMetadataQuery
+Objective-C/cl/-/NSMetadataQueryAttributeValueTuple
+Objective-C/intf/-/NSMetadataQueryDelegate
+C/data/-/NSMetadataQueryDidFinishGatheringNotification
+C/data/-/NSMetadataQueryDidStartGatheringNotification
+C/data/-/NSMetadataQueryDidUpdateNotification
+C/data/-/NSMetadataQueryGatheringProgressNotification
+C/data/-/NSMetadataQueryLocalComputerScope
+C/data/-/NSMetadataQueryNetworkScope
+C/data/-/NSMetadataQueryResultContentRelevanceAttribute
+Objective-C/cl/-/NSMetadataQueryResultGroup
+C/data/-/NSMetadataQueryUserHomeScope
+Objective-C/cl/-/NSMethodSignature
+Objective-C/cl/-/NSMiddleSpecifier
+C/econst/-/NSMiddleSubelement
+C/func/-/NSMidX
+C/func/-/NSMidY
+C/data/-/NSMigratePersistentStoresAutomaticallyOption
+C/econst/-/NSMigrationCancelledError
+C/data/-/NSMigrationDestinationObjectKey
+C/data/-/NSMigrationEntityMappingKey
+C/data/-/NSMigrationEntityPolicyKey
+C/econst/-/NSMigrationError
+Objective-C/cl/-/NSMigrationManager
+C/econst/-/NSMigrationManagerDestinationStoreError
+C/data/-/NSMigrationManagerKey
+C/econst/-/NSMigrationManagerSourceStoreError
+C/econst/-/NSMigrationMissingMappingModelError
+C/econst/-/NSMigrationMissingSourceModelError
+C/data/-/NSMigrationPropertyMappingKey
+C/data/-/NSMigrationSourceObjectKey
+C/econst/-/NSMiniaturizableWindowMask
+C/econst/-/NSMiniControlSize
+C/data/-/NSMinimumKeyValueOperator
+C/econst/-/NSMinusSetExpressionType
+C/econst/-/NSMinuteCalendarUnit
+C/data/-/NSMinValueBinding
+C/data/-/NSMinWidthBinding
+C/func/-/NSMinX
+C/econst/-/NSMinXEdge
+C/func/-/NSMinY
+C/econst/-/NSMinYEdge
+C/econst/-/NSMiterLineJoinStyle
+C/econst/-/NSMixedState
+C/data/-/NSMixedStateImageBinding
+C/data/-/NSModalPanelRunLoopMode
+C/macro/-/NSModalPanelWindowLevel
+C/tdef/-/NSModalSession
+C/data/-/NSModelPathKey
+C/econst/-/NSModeSwitchFunctionKey
+C/data/-/NSModificationTimeDocumentAttribute
+C/func/-/NSModuleForSymbol
+C/econst/-/NSMomentaryChangeButton
+C/econst/-/NSMomentaryLight
+C/econst/-/NSMomentaryLightButton
+C/econst/-/NSMomentaryPushButton
+C/econst/-/NSMomentaryPushInButton
+C/econst/-/NSMonthCalendarUnit
+C/data/-/NSMonthNameArray
+C/econst/-/NSMouseEntered
+C/econst/-/NSMouseEnteredMask
+C/econst/-/NSMouseEventSubtype
+C/econst/-/NSMouseExited
+C/econst/-/NSMouseExitedMask
+C/func/-/NSMouseInRect
+C/econst/-/NSMouseMoved
+C/econst/-/NSMouseMovedMask
+Objective-C/cl/-/NSMoveCommand
+C/econst/-/NSMoveToBezierPathElement
+C/econst/-/NSMoviesDirectory
+C/tag/-/NSMultibyteGlyphPacking
+C/tdef/-/NSMultibyteGlyphPacking
+C/data/-/NSMultipleTextSelectionPboardType
+C/data/-/NSMultipleValuesMarker
+C/data/-/NSMultipleValuesPlaceholderBindingOption
+C/econst/-/NSMusicDirectory
+Objective-C/cl/-/NSMutableArray
+Objective-C/cl/-/NSMutableAttributedString
+Objective-C/cat/-/NSMutableAttributedString(AppKitAdditions)
+Objective-C/cl/-/NSMutableCharacterSet
+Objective-C/intf/-/NSMutableCopying
+Objective-C/cl/-/NSMutableData
+Objective-C/cl/-/NSMutableDictionary
+Objective-C/cl/-/NSMutableIndexSet
+Objective-C/cl/-/NSMutableParagraphStyle
+Objective-C/cl/-/NSMutableSet
+Objective-C/cl/-/NSMutableString
+Objective-C/cl/-/NSMutableURLRequest
+C/data/-/NSNamedColorSpace
+C/func/-/NSNameOfModule
+C/func/-/NSNameOfSymbol
+Objective-C/cl/-/NSNameSpecifier
+C/econst/-/NSNarrowFontMask
+C/econst/-/NSNativeShortGlyphPacking
+C/econst/-/NSNaturalTextAlignment
+C/data/-/NSNegateBooleanTransformerName
+C/data/-/NSNegativeCurrencyFormatString
+Objective-C/cl/-/NSNetService
+Objective-C/cl/-/NSNetServiceBrowser
+Objective-C/intf/-/NSNetServiceBrowserDelegate
+Objective-C/intf/-/NSNetServiceDelegate
+C/econst/-/NSNetServiceNoAutoRename
+C/tdef/-/NSNetServiceOptions
+C/econst/-/NSNetServicesActivityInProgress
+C/econst/-/NSNetServicesBadArgumentError
+C/econst/-/NSNetServicesCancelledError
+C/econst/-/NSNetServicesCollisionError
+C/tdef/-/NSNetServicesError
+C/data/-/NSNetServicesErrorCode
+C/data/-/NSNetServicesErrorDomain
+C/econst/-/NSNetServicesInvalidError
+C/econst/-/NSNetServicesNotFoundError
+C/econst/-/NSNetServicesTimeoutError
+C/econst/-/NSNetServicesUnknownError
+C/econst/-/NSNetworkDomainMask
+C/econst/-/NSNewlineCharacter
+C/data/-/NSNextDayDesignations
+C/econst/-/NSNextFunctionKey
+C/func/-/NSNextHashEnumeratorItem
+C/func/-/NSNextMapEnumeratorPair
+C/data/-/NSNextNextDayDesignations
+C/econst/-/NSNextStepInterfaceStyle
+C/econst/-/NSNEXTSTEPStringEncoding
+Objective-C/cl/-/NSNib
+Objective-C/cat/-/NSNibAwaking
+Objective-C/cl/-/NSNibConnector
+Objective-C/cl/-/NSNibControlConnector
+C/data/-/NSNibLoadingException
+Objective-C/cl/-/NSNibOutletConnector
+C/data/-/NSNibOwner
+C/data/-/NSNibTopLevelObjects
+C/econst/-/NSNoActionDeleteRule
+C/econst/-/NSNoBorder
+C/econst/-/NSNoCellMask
+C/econst/-/NSNoFontChangeAction
+C/econst/-/NSNoImage
+C/econst/-/NSNoInterfaceStyle
+C/econst/-/NSNoModeColorPanel
+C/econst/-/NSNonactivatingPanelMask
+C/econst/-/NSNonLossyASCIIStringEncoding
+C/data/-/NSNonOwnedPointerHashCallBacks
+C/data/-/NSNonOwnedPointerMapKeyCallBacks
+C/data/-/NSNonOwnedPointerMapValueCallBacks
+C/data/-/NSNonOwnedPointerOrNullMapKeyCallBacks
+C/data/-/NSNonRetainedObjectHashCallBacks
+C/data/-/NSNonRetainedObjectMapKeyCallBacks
+C/data/-/NSNonRetainedObjectMapValueCallBacks
+C/econst/-/NSNonStandardCharacterSetFontMask
+C/econst/-/NSNonZeroWindingRule
+C/econst/-/NSNormalizedPredicateOption
+C/macro/-/NSNormalWindowLevel
+C/econst/-/NSNoScriptError
+C/econst/-/NSNoScrollerParts
+C/data/-/NSNoSelectionMarker
+C/data/-/NSNoSelectionPlaceholderBindingOption
+C/econst/-/NSNoSpecifierError
+C/econst/-/NSNoSubelement
+C/econst/-/NSNoTabsBezelBorder
+C/econst/-/NSNoTabsLineBorder
+C/econst/-/NSNoTabsNoBorder
+C/macro/-/NSNotAnIntegerMapKey
+C/macro/-/NSNotAnIntMapKey
+C/macro/-/NSNotAPointerMapKey
+C/data/-/NSNotApplicableMarker
+C/data/-/NSNotApplicablePlaceholderBindingOption
+C/econst/-/NSNotEqualToPredicateOperatorType
+C/econst/-/NSNotFound
+Objective-C/cl/-/NSNotification
+Objective-C/cl/-/NSNotificationCenter
+C/tdef/-/NSNotificationCoalescing
+C/econst/-/NSNotificationCoalescingOnName
+C/econst/-/NSNotificationCoalescingOnSender
+C/econst/-/NSNotificationDeliverImmediately
+C/econst/-/NSNotificationNoCoalescing
+C/econst/-/NSNotificationPostToAllSessions
+Objective-C/cl/-/NSNotificationQueue
+C/tdef/-/NSNotificationSuspensionBehavior
+C/econst/-/NSNotificationSuspensionBehaviorCoalesce
+C/econst/-/NSNotificationSuspensionBehaviorDeliverImmediately
+C/econst/-/NSNotificationSuspensionBehaviorDrop
+C/econst/-/NSNotificationSuspensionBehaviorHold
+C/econst/-/NSNoTitle
+C/econst/-/NSNoTopLevelContainersSpecifierError
+C/econst/-/NSNotPredicateType
+C/econst/-/NSNoUnderlineStyle
+Objective-C/cl/-/NSNull
+C/econst/-/NSNullCellType
+C/econst/-/NSNullGlyph
+C/econst/-/NSNullifyDeleteRule
+C/data/-/NSNullPlaceholderBindingOption
+Objective-C/cl/-/NSNumber
+Objective-C/cl/-/NSNumberFormatter
+C/tdef/-/NSNumberFormatterBehavior
+C/econst/-/NSNumberFormatterBehavior10_0
+C/econst/-/NSNumberFormatterBehavior10_4
+C/econst/-/NSNumberFormatterBehaviorDefault
+C/econst/-/NSNumberFormatterCurrencyStyle
+C/econst/-/NSNumberFormatterDecimalStyle
+C/econst/-/NSNumberFormatterNoStyle
+C/econst/-/NSNumberFormatterPadAfterPrefix
+C/econst/-/NSNumberFormatterPadAfterSuffix
+C/econst/-/NSNumberFormatterPadBeforePrefix
+C/econst/-/NSNumberFormatterPadBeforeSuffix
+C/tdef/-/NSNumberFormatterPadPosition
+C/econst/-/NSNumberFormatterPercentStyle
+C/econst/-/NSNumberFormatterRoundCeiling
+C/econst/-/NSNumberFormatterRoundDown
+C/econst/-/NSNumberFormatterRoundFloor
+C/econst/-/NSNumberFormatterRoundHalfDown
+C/econst/-/NSNumberFormatterRoundHalfEven
+C/econst/-/NSNumberFormatterRoundHalfUp
+C/tdef/-/NSNumberFormatterRoundingMode
+C/econst/-/NSNumberFormatterRoundUp
+C/econst/-/NSNumberFormatterScientificStyle
+C/econst/-/NSNumberFormatterSpellOutStyle
+C/tdef/-/NSNumberFormatterStyle
+C/func/-/NSNumberOfColorComponents
+C/econst/-/NSNumericPadKeyMask
+C/econst/-/NSNumericSearch
+Objective-C/intf/-/NSObjCTypeSerializationCallBack
+Objective-C/intf/-/NSObject
+Objective-C/cl/-/NSObject
+Objective-C/cat/-/NSObject(DRBurnProgressPanelDelegateMethods)
+Objective-C/cat/-/NSObject(DREraseProgressPanelDelegateMethods)
+Objective-C/cat/-/NSObject(DRSetupPanelDelegate)
+Objective-C/cat/-/NSObject(IBObjectIntegration)
+Objective-C/cat/-/NSObject(IOBluetoothDeviceInquiryDelegate)
+Objective-C/cat/-/NSObject(IOBluetoothHostControllerDelegate)
+Objective-C/cat/-/NSObject(XGAuthenticatorDelegate)
+Objective-C/cat/-/NSObject(XGConnectionDelegate)
+Objective-C/cat/-/NSObject(XGFileDownloadDelegate)
+Objective-C/cl/-/NSObjectController
+C/econst/-/NSObjectFileImageAccess
+C/econst/-/NSObjectFileImageArch
+C/econst/-/NSObjectFileImageFailure
+C/econst/-/NSObjectFileImageFormat
+C/econst/-/NSObjectFileImageInappropriateFile
+C/tdef/-/NSObjectFileImageReturnCode
+C/econst/-/NSObjectFileImageSuccess
+C/data/-/NSObjectHashCallBacks
+C/econst/-/NSObjectIDAttributeType
+C/data/-/NSObjectInaccessibleException
+C/data/-/NSObjectMapKeyCallBacks
+C/data/-/NSObjectMapValueCallBacks
+C/data/-/NSObjectNotAvailableException
+C/data/-/NSObjectURIKey
+C/data/-/NSObliquenessAttributeName
+C/data/-/NSObservedKeyPathKey
+C/data/-/NSObservedObjectKey
+C/data/-/NSOfficeOpenXMLTextDocumentType
+C/func/-/NSOffsetRect
+C/econst/-/NSOffState
+C/data/-/NSOffStateImageBinding
+C/econst/-/NSOKButton
+C/data/-/NSOldStyleException
+C/econst/-/NSOneByteGlyphPacking
+C/econst/-/NSOnlyScrollerArrows
+C/econst/-/NSOnOffButton
+C/econst/-/NSOnState
+C/data/-/NSOnStateImageBinding
+C/data/-/NSOpenDocumentTextDocumentType
+Objective-C/cl/-/NSOpenGLContext
+C/tdef/-/NSOpenGLContextAuxiliary
+C/tdef/-/NSOpenGLContextParameter
+C/econst/-/NSOpenGLCPRasterizationEnable
+C/econst/-/NSOpenGLCPStateValidation
+C/econst/-/NSOpenGLCPSurfaceOpacity
+C/econst/-/NSOpenGLCPSurfaceOrder
+C/econst/-/NSOpenGLCPSwapInterval
+C/econst/-/NSOpenGLCPSwapRectangle
+C/econst/-/NSOpenGLCPSwapRectangleEnable
+C/func/-/NSOpenGLGetOption
+C/func/-/NSOpenGLGetVersion
+C/tdef/-/NSOpenGLGlobalOption
+C/econst/-/NSOpenGLGOClearFormatCache
+C/econst/-/NSOpenGLGOFormatCacheSize
+C/econst/-/NSOpenGLGOResetLibrary
+C/econst/-/NSOpenGLGORetainRenderers
+Objective-C/cl/-/NSOpenGLLayer
+C/econst/-/NSOpenGLPFAAccelerated
+C/econst/-/NSOpenGLPFAAcceleratedCompute
+C/econst/-/NSOpenGLPFAAccumSize
+C/econst/-/NSOpenGLPFAAllowOfflineRenderers
+C/econst/-/NSOpenGLPFAAllRenderers
+C/econst/-/NSOpenGLPFAAlphaSize
+C/econst/-/NSOpenGLPFAAuxBuffers
+C/econst/-/NSOpenGLPFAAuxDepthStencil
+C/econst/-/NSOpenGLPFABackingStore
+C/econst/-/NSOpenGLPFAClosestPolicy
+C/econst/-/NSOpenGLPFAColorFloat
+C/econst/-/NSOpenGLPFAColorSize
+C/econst/-/NSOpenGLPFACompliant
+C/econst/-/NSOpenGLPFADepthSize
+C/econst/-/NSOpenGLPFADoubleBuffer
+C/econst/-/NSOpenGLPFAFullScreen
+C/econst/-/NSOpenGLPFAMaximumPolicy
+C/econst/-/NSOpenGLPFAMinimumPolicy
+C/econst/-/NSOpenGLPFAMPSafe
+C/econst/-/NSOpenGLPFAMultisample
+C/econst/-/NSOpenGLPFAMultiScreen
+C/econst/-/NSOpenGLPFANoRecovery
+C/econst/-/NSOpenGLPFAOffScreen
+C/econst/-/NSOpenGLPFAPixelBuffer
+C/econst/-/NSOpenGLPFARemotePixelBuffer
+C/econst/-/NSOpenGLPFARendererID
+C/econst/-/NSOpenGLPFARobust
+C/econst/-/NSOpenGLPFASampleAlpha
+C/econst/-/NSOpenGLPFASampleBuffers
+C/econst/-/NSOpenGLPFASamples
+C/econst/-/NSOpenGLPFAScreenMask
+C/econst/-/NSOpenGLPFASingleRenderer
+C/econst/-/NSOpenGLPFAStencilSize
+C/econst/-/NSOpenGLPFAStereo
+C/econst/-/NSOpenGLPFASupersample
+C/econst/-/NSOpenGLPFAVirtualScreenCount
+C/econst/-/NSOpenGLPFAWindow
+Objective-C/cl/-/NSOpenGLPixelBuffer
+Objective-C/cl/-/NSOpenGLPixelFormat
+C/tdef/-/NSOpenGLPixelFormatAttribute
+C/tdef/-/NSOpenGLPixelFormatAuxiliary
+C/func/-/NSOpenGLSetOption
+Objective-C/cl/-/NSOpenGLView
+Objective-C/cl/-/NSOpenPanel
+Objective-C/intf/-/NSOpenSavePanelDelegate
+C/func/-/NSOpenStepRootDirectory
+C/econst/-/NSOpenStepUnicodeReservedBase
+Objective-C/cl/-/NSOperation
+C/data/-/NSOperationNotSupportedForKeyException
+C/econst/-/NSOperationNotSupportedForKeyScriptError
+C/econst/-/NSOperationNotSupportedForKeySpecifierError
+Objective-C/cl/-/NSOperationQueue
+C/econst/-/NSOperationQueueDefaultMaxConcurrentOperationCount
+C/tdef/-/NSOperationQueuePriority
+C/econst/-/NSOperationQueuePriorityHigh
+C/econst/-/NSOperationQueuePriorityLow
+C/econst/-/NSOperationQueuePriorityNormal
+C/econst/-/NSOperationQueuePriorityVeryHigh
+C/econst/-/NSOperationQueuePriorityVeryLow
+C/data/-/NSOptionsKey
+C/econst/-/NSOrderedAscending
+C/econst/-/NSOrderedDescending
+C/econst/-/NSOrderedSame
+C/econst/-/NSOrPredicateType
+Objective-C/cl/-/NSOrthography
+C/econst/-/NSOSF1OperatingSystem
+C/data/-/NSOSStatusErrorDomain
+C/econst/-/NSOtherMouseDown
+C/econst/-/NSOtherMouseDownMask
+C/econst/-/NSOtherMouseDragged
+C/econst/-/NSOtherMouseDraggedMask
+C/econst/-/NSOtherMouseUp
+C/econst/-/NSOtherMouseUpMask
+C/econst/-/NSOtherTextMovement
+Objective-C/cl/-/NSOutlineView
+C/data/-/NSOutlineViewColumnDidMoveNotification
+C/data/-/NSOutlineViewColumnDidResizeNotification
+Objective-C/intf/-/NSOutlineViewDataSource
+Objective-C/intf/-/NSOutlineViewDelegate
+C/econst/-/NSOutlineViewDropOnItemIndex
+C/data/-/NSOutlineViewItemDidCollapseNotification
+C/data/-/NSOutlineViewItemDidExpandNotification
+C/data/-/NSOutlineViewItemWillCollapseNotification
+C/data/-/NSOutlineViewItemWillExpandNotification
+C/data/-/NSOutlineViewSelectionDidChangeNotification
+C/data/-/NSOutlineViewSelectionIsChangingNotification
+Objective-C/cl/-/NSOutputStream
+C/data/-/NSOverwriteMergePolicy
+C/data/-/NSOwnedObjectIdentityHashCallBacks
+C/data/-/NSOwnedPointerHashCallBacks
+C/data/-/NSOwnedPointerMapKeyCallBacks
+C/data/-/NSOwnedPointerMapValueCallBacks
+C/econst/-/NSPageDownFunctionKey
+Objective-C/cl/-/NSPageLayout
+C/func/-/NSPageSize
+C/econst/-/NSPageUpFunctionKey
+Objective-C/cl/-/NSPanel
+C/data/-/NSPaperSizeDocumentAttribute
+C/econst/-/NSParagraphSeparatorCharacter
+Objective-C/cl/-/NSParagraphStyle
+C/data/-/NSParagraphStyleAttributeName
+C/macro/-/NSParameterAssert
+C/data/-/NSParseErrorException
+Objective-C/cl/-/NSPasteboard
+C/data/-/NSPasteboardCommunicationException
+Objective-C/cl/-/NSPasteboardItem
+Objective-C/intf/-/NSPasteboardItemDataProvider
+Objective-C/intf/-/NSPasteboardOwner
+Objective-C/intf/-/NSPasteboardReading
+C/econst/-/NSPasteboardReadingAsData
+C/econst/-/NSPasteboardReadingAsKeyedArchive
+C/econst/-/NSPasteboardReadingAsPropertyList
+C/econst/-/NSPasteboardReadingAsString
+C/tdef/-/NSPasteboardReadingOptions
+C/data/-/NSPasteboardTypeColor
+C/data/-/NSPasteboardTypeFindPanelSearchOptions
+C/data/-/NSPasteboardTypeFont
+C/data/-/NSPasteboardTypeHTML
+C/data/-/NSPasteboardTypeMultipleTextSelection
+C/data/-/NSPasteboardTypePDF
+C/data/-/NSPasteboardTypePNG
+C/data/-/NSPasteboardTypeRTF
+C/data/-/NSPasteboardTypeRTFD
+C/data/-/NSPasteboardTypeRuler
+C/data/-/NSPasteboardTypeSound
+C/data/-/NSPasteboardTypeString
+C/data/-/NSPasteboardTypeTabularText
+C/data/-/NSPasteboardTypeTIFF
+C/data/-/NSPasteboardURLReadingContentsConformToTypesKey
+C/data/-/NSPasteboardURLReadingFileURLsOnlyKey
+Objective-C/intf/-/NSPasteboardWriting
+C/tdef/-/NSPasteboardWritingOptions
+C/econst/-/NSPasteboardWritingPromised
+Objective-C/cl/-/NSPathCell
+Objective-C/intf/-/NSPathCellDelegate
+Objective-C/cl/-/NSPathComponentCell
+Objective-C/cl/-/NSPathControl
+Objective-C/intf/-/NSPathControlDelegate
+C/tdef/-/NSPathStyle
+C/econst/-/NSPathStyleNavigationBar
+C/econst/-/NSPathStylePopUp
+C/econst/-/NSPathStyleStandard
+C/data/-/NSPatternColorSpace
+C/econst/-/NSPatternColorSpaceModel
+C/econst/-/NSPauseFunctionKey
+Objective-C/cl/-/NSPDFImageRep
+C/data/-/NSPDFPboardType
+C/econst/-/NSPenLowerSideMask
+C/econst/-/NSPenPointingDevice
+C/econst/-/NSPenTipMask
+C/econst/-/NSPenUpperSideMask
+C/func/-/NSPerformService
+C/econst/-/NSPeriodic
+C/econst/-/NSPeriodicMask
+C/data/-/NSPersianCalendar
+Objective-C/cl/-/NSPersistentDocument
+Objective-C/cl/-/NSPersistentStore
+Objective-C/cl/-/NSPersistentStoreCoordinator
+Objective-C/cat/-/NSPersistentStoreCoordinator(SyncServicesAdditions)
+C/econst/-/NSPersistentStoreCoordinatorLockingError
+C/data/-/NSPersistentStoreCoordinatorStoresDidChangeNotification
+Objective-C/intf/-/NSPersistentStoreCoordinatorSyncing
+C/data/-/NSPersistentStoreCoordinatorWillRemoveStoreNotification
+C/econst/-/NSPersistentStoreIncompatibleSchemaError
+C/econst/-/NSPersistentStoreIncompatibleVersionHashError
+C/econst/-/NSPersistentStoreIncompleteSaveError
+C/econst/-/NSPersistentStoreInvalidTypeError
+C/econst/-/NSPersistentStoreOpenError
+C/econst/-/NSPersistentStoreOperationError
+C/data/-/NSPersistentStoreOSCompatibility
+C/econst/-/NSPersistentStoreSaveError
+C/econst/-/NSPersistentStoreTimeoutError
+C/data/-/NSPersistentStoreTimeoutOption
+C/econst/-/NSPersistentStoreTypeMismatchError
+Objective-C/cl/-/NSPICTImageRep
+C/data/-/NSPICTPboardType
+C/econst/-/NSPicturesDirectory
+Objective-C/cl/-/NSPipe
+Objective-C/cat/-/NSPlaceholders
+C/data/-/NSPlainFileType
+C/data/-/NSPlainTextDocumentType
+C/econst/-/NSPlainTextTokenStyle
+C/func/-/NSPlanarFromDepth
+C/econst/-/NSPNGFileType
+C/tdef/-/NSPoint
+C/tdef/-/NSPointArray
+Objective-C/cl/-/NSPointerArray
+Objective-C/cl/-/NSPointerFunctions
+C/econst/-/NSPointerFunctionsCopyIn
+C/econst/-/NSPointerFunctionsCStringPersonality
+C/econst/-/NSPointerFunctionsIntegerPersonality
+C/econst/-/NSPointerFunctionsMachVirtualMemory
+C/econst/-/NSPointerFunctionsMallocMemory
+C/econst/-/NSPointerFunctionsObjectPersonality
+C/econst/-/NSPointerFunctionsObjectPointerPersonality
+C/econst/-/NSPointerFunctionsOpaqueMemory
+C/econst/-/NSPointerFunctionsOpaquePersonality
+C/tdef/-/NSPointerFunctionsOptions
+C/econst/-/NSPointerFunctionsStrongMemory
+C/econst/-/NSPointerFunctionsStructPersonality
+C/econst/-/NSPointerFunctionsZeroingWeakMemory
+C/data/-/NSPointerToStructHashCallBacks
+C/func/-/NSPointFromCGPoint
+C/func/-/NSPointFromString
+C/tdef/-/NSPointingDeviceType
+C/func/-/NSPointInRect
+C/tdef/-/NSPointPointer
+C/func/-/NSPointToCGPoint
+C/econst/-/NSPopUpArrowAtBottom
+C/econst/-/NSPopUpArrowAtCenter
+C/tdef/-/NSPopUpArrowPosition
+Objective-C/cl/-/NSPopUpButton
+Objective-C/cl/-/NSPopUpButtonCell
+C/data/-/NSPopUpButtonCellWillPopUpNotification
+C/data/-/NSPopUpButtonWillPopUpNotification
+C/macro/-/NSPopUpMenuWindowLevel
+C/econst/-/NSPopUpNoArrow
+Objective-C/cl/-/NSPort
+Objective-C/cl/-/NSPortCoder
+Objective-C/intf/-/NSPortDelegate
+C/data/-/NSPortDidBecomeInvalidNotification
+Objective-C/cl/-/NSPortMessage
+Objective-C/cl/-/NSPortNameServer
+C/econst/-/NSPortraitOrientation
+C/data/-/NSPortReceiveException
+C/data/-/NSPortSendException
+C/data/-/NSPortTimeoutException
+C/econst/-/NSPositionAfter
+Objective-C/cl/-/NSPositionalSpecifier
+C/econst/-/NSPositionBefore
+C/econst/-/NSPositionBeginning
+C/econst/-/NSPositionEnd
+C/econst/-/NSPositionReplace
+C/data/-/NSPositiveCurrencyFormatString
+C/econst/-/NSPositiveDoubleType
+C/econst/-/NSPositiveFloatType
+C/econst/-/NSPositiveIntType
+C/data/-/NSPOSIXErrorDomain
+C/econst/-/NSPostASAP
+C/econst/-/NSPosterFontMask
+C/tdef/-/NSPostingStyle
+C/econst/-/NSPostNow
+C/data/-/NSPostScriptPboardType
+C/econst/-/NSPostWhenIdle
+C/econst/-/NSPowerOffEventType
+C/data/-/NSPPDIncludeNotFoundException
+C/data/-/NSPPDIncludeStackOverflowException
+C/data/-/NSPPDIncludeStackUnderflowException
+C/data/-/NSPPDParseException
+Objective-C/cl/-/NSPredicate
+C/data/-/NSPredicateBinding
+Objective-C/cl/-/NSPredicateEditor
+Objective-C/cl/-/NSPredicateEditorRowTemplate
+C/data/-/NSPredicateFormatBindingOption
+C/tdef/-/NSPredicateOperatorType
+Objective-C/cl/-/NSPreferencePane
+C/data/-/NSPreferencePaneCancelUnselectNotification
+C/data/-/NSPreferencePaneDoUnselectNotification
+C/econst/-/NSPreferencePanesDirectory
+C/data/-/NSPrefixSpacesDocumentAttribute
+C/econst/-/NSPressedTab
+C/econst/-/NSPrevFunctionKey
+C/data/-/NSPrintAllPages
+C/data/-/NSPrintAllPresetsJobStyleHint
+C/data/-/NSPrintBottomMargin
+C/data/-/NSPrintCancelJob
+C/data/-/NSPrintCopies
+C/data/-/NSPrintDetailedErrorReporting
+Objective-C/cl/-/NSPrinter
+C/econst/-/NSPrinterDescriptionDirectory
+C/econst/-/NSPrinterTableError
+C/econst/-/NSPrinterTableNotFound
+C/econst/-/NSPrinterTableOK
+C/tdef/-/NSPrinterTableStatus
+C/data/-/NSPrintFaxCoverSheetName
+C/data/-/NSPrintFaxHighResolution
+C/data/-/NSPrintFaxJob
+C/data/-/NSPrintFaxModem
+C/data/-/NSPrintFaxNumber
+C/data/-/NSPrintFaxReceiverNames
+C/data/-/NSPrintFaxReceiverNumbers
+C/data/-/NSPrintFaxReturnReceipt
+C/data/-/NSPrintFaxSendTime
+C/data/-/NSPrintFaxTrimPageEnds
+C/data/-/NSPrintFaxUseCoverSheet
+C/data/-/NSPrintFirstPage
+C/data/-/NSPrintFormName
+C/econst/-/NSPrintFunctionKey
+C/data/-/NSPrintHeaderAndFooter
+C/data/-/NSPrintHorizontallyCentered
+C/data/-/NSPrintHorizontalPagination
+Objective-C/cl/-/NSPrintInfo
+C/econst/-/NSPrintingCancelled
+C/data/-/NSPrintingCommunicationException
+C/econst/-/NSPrintingFailure
+C/tdef/-/NSPrintingOrientation
+C/tdef/-/NSPrintingPageOrder
+C/tdef/-/NSPrintingPaginationMode
+C/econst/-/NSPrintingReplyLater
+C/econst/-/NSPrintingSuccess
+C/data/-/NSPrintJobDisposition
+C/data/-/NSPrintJobFeatures
+C/data/-/NSPrintJobSavingFileNameExtensionHidden
+C/data/-/NSPrintJobSavingURL
+C/data/-/NSPrintLastPage
+C/data/-/NSPrintLeftMargin
+C/data/-/NSPrintManualFeed
+C/data/-/NSPrintMustCollate
+C/data/-/NSPrintNoPresetsJobStyleHint
+Objective-C/cl/-/NSPrintOperation
+C/data/-/NSPrintOperationExistsException
+C/data/-/NSPrintOrientation
+C/data/-/NSPrintPackageException
+C/data/-/NSPrintPagesAcross
+C/data/-/NSPrintPagesDown
+C/data/-/NSPrintPagesPerSheet
+Objective-C/cl/-/NSPrintPanel
+Objective-C/intf/-/NSPrintPanelAccessorizing
+C/data/-/NSPrintPanelAccessorySummaryItemDescriptionKey
+C/data/-/NSPrintPanelAccessorySummaryItemNameKey
+C/tdef/-/NSPrintPanelOptions
+C/econst/-/NSPrintPanelShowsCopies
+C/econst/-/NSPrintPanelShowsOrientation
+C/econst/-/NSPrintPanelShowsPageRange
+C/econst/-/NSPrintPanelShowsPageSetupAccessory
+C/econst/-/NSPrintPanelShowsPaperSize
+C/econst/-/NSPrintPanelShowsPreview
+C/econst/-/NSPrintPanelShowsPrintSelection
+C/econst/-/NSPrintPanelShowsScaling
+C/data/-/NSPrintPaperFeed
+C/data/-/NSPrintPaperName
+C/data/-/NSPrintPaperSize
+C/data/-/NSPrintPhotoJobStyleHint
+C/data/-/NSPrintPreviewJob
+C/data/-/NSPrintPrinter
+C/data/-/NSPrintPrinterName
+C/data/-/NSPrintReversePageOrder
+C/data/-/NSPrintRightMargin
+C/data/-/NSPrintSaveJob
+C/data/-/NSPrintSavePath
+C/data/-/NSPrintScalingFactor
+C/econst/-/NSPrintScreenFunctionKey
+C/data/-/NSPrintSelectionOnly
+C/data/-/NSPrintSpoolJob
+C/data/-/NSPrintTime
+C/data/-/NSPrintTopMargin
+C/data/-/NSPrintVerticallyCentered
+C/data/-/NSPrintVerticalPagination
+C/data/-/NSPriorDayDesignations
+Objective-C/cl/-/NSProcessInfo
+Objective-C/cl/-/NSProgressIndicator
+C/econst/-/NSProgressIndicatorBarStyle
+C/econst/-/NSProgressIndicatorPreferredAquaThickness
+C/econst/-/NSProgressIndicatorPreferredLargeThickness
+C/econst/-/NSProgressIndicatorPreferredSmallThickness
+C/econst/-/NSProgressIndicatorPreferredThickness
+C/econst/-/NSProgressIndicatorSpinningStyle
+C/tdef/-/NSProgressIndicatorStyle
+C/tdef/-/NSProgressIndicatorThickness
+Objective-C/cl/-/NSPropertyDescription
+C/econst/-/NSPropertyListBinaryFormat_v1_0
+C/econst/-/NSPropertyListErrorMaximum
+C/econst/-/NSPropertyListErrorMinimum
+C/tdef/-/NSPropertyListFormat
+C/econst/-/NSPropertyListImmutable
+C/tdef/-/NSPropertyListMutabilityOptions
+C/econst/-/NSPropertyListMutableContainers
+C/econst/-/NSPropertyListMutableContainersAndLeaves
+C/econst/-/NSPropertyListOpenStepFormat
+C/econst/-/NSPropertyListReadCorruptError
+C/tdef/-/NSPropertyListReadOptions
+C/econst/-/NSPropertyListReadStreamError
+C/econst/-/NSPropertyListReadUnknownVersionError
+Objective-C/cl/-/NSPropertyListSerialization
+C/tdef/-/NSPropertyListWriteOptions
+C/econst/-/NSPropertyListWriteStreamError
+C/econst/-/NSPropertyListXMLFormat_v1_0
+Objective-C/cl/-/NSPropertyMapping
+Objective-C/cl/-/NSPropertySpecifier
+C/econst/-/NSProprietaryStringEncoding
+Objective-C/cl/-/NSProtocolChecker
+C/func/-/NSProtocolFromString
+Objective-C/cl/-/NSProxy
+Objective-C/cl/-/NSPurgeableData
+C/econst/-/NSPushInCell
+C/econst/-/NSPushInCellMask
+C/econst/-/NSPushOnPushOffButton
+C/econst/-/NSQuarterCalendarUnit
+Objective-C/cl/-/NSQuitCommand
+C/econst/-/NSRadioButton
+C/econst/-/NSRadioModeMatrix
+C/data/-/NSRaisesForNotApplicableKeysBindingOption
+Objective-C/cl/-/NSRandomSpecifier
+C/econst/-/NSRandomSubelement
+C/tdef/-/NSRange
+C/econst/-/NSRangeDateMode
+C/data/-/NSRangeException
+C/func/-/NSRangeFromString
+C/tdef/-/NSRangePointer
+Objective-C/cl/-/NSRangeSpecifier
+C/econst/-/NSRatingLevelIndicatorStyle
+C/data/-/NSReadOnlyDocumentAttribute
+C/data/-/NSReadOnlyPersistentStoreOption
+C/func/-/NSReadPixel
+C/func/-/NSReallocateCollectable
+C/func/-/NSRealMemoryAvailable
+C/econst/-/NSReceiverEvaluationScriptError
+C/econst/-/NSReceiversCantHandleCommandScriptError
+C/data/-/NSRecentSearchesBinding
+C/econst/-/NSRecessedBezelStyle
+C/data/-/NSRecoveryAttempterErrorKey
+C/tdef/-/NSRect
+C/tdef/-/NSRectArray
+C/func/-/NSRectClip
+C/func/-/NSRectClipList
+C/tdef/-/NSRectEdge
+C/func/-/NSRectFill
+C/func/-/NSRectFillList
+C/func/-/NSRectFillListUsingOperation
+C/func/-/NSRectFillListWithColors
+C/func/-/NSRectFillListWithColorsUsingOperation
+C/func/-/NSRectFillListWithGrays
+C/func/-/NSRectFillUsingOperation
+C/func/-/NSRectFromCGRect
+C/func/-/NSRectFromString
+C/tdef/-/NSRectPointer
+C/func/-/NSRectToCGRect
+Objective-C/cl/-/NSRecursiveLock
+C/func/-/NSRecycleZone
+C/econst/-/NSRedoFunctionKey
+C/data/-/NSRefreshedObjectsKey
+C/func/-/NSRegisterServicesProvider
+C/data/-/NSRegistrationDomain
+C/econst/-/NSRegularControlSize
+C/econst/-/NSRegularSquareBezelStyle
+Objective-C/cl/-/NSRelationshipDescription
+C/econst/-/NSRelativeAfter
+C/econst/-/NSRelativeBefore
+C/tdef/-/NSRelativePosition
+Objective-C/cl/-/NSRelativeSpecifier
+C/func/-/NSReleaseAlertPanel
+C/econst/-/NSRelevancyLevelIndicatorStyle
+C/data/-/NSRemovedPersistentStoresKey
+C/econst/-/NSRemoveEntityMappingType
+C/econst/-/NSRemoveTraitFontAction
+C/data/-/NSRepresentedFilenameBinding
+C/data/-/NSRepublicOfChinaCalendar
+C/tdef/-/NSRequestUserAttentionType
+C/econst/-/NSRequiredArgumentsMissingScriptError
+C/econst/-/NSResetCursorRectsRunLoopOrdering
+C/econst/-/NSResetFunctionKey
+C/func/-/NSResetHashTable
+C/func/-/NSResetMapTable
+C/econst/-/NSResizableWindowMask
+Objective-C/cl/-/NSResponder
+C/econst/-/NSReturnTextMovement
+C/econst/-/NSRGBColorSpaceModel
+C/econst/-/NSRGBModeColorPanel
+C/econst/-/NSRightArrowFunctionKey
+C/data/-/NSRightMarginDocumentAttribute
+C/econst/-/NSRightMouseDown
+C/econst/-/NSRightMouseDownMask
+C/econst/-/NSRightMouseDragged
+C/econst/-/NSRightMouseDraggedMask
+C/econst/-/NSRightMouseUp
+C/econst/-/NSRightMouseUpMask
+C/econst/-/NSRightTabsBezelBorder
+C/econst/-/NSRightTabStopType
+C/econst/-/NSRightTextAlignment
+C/econst/-/NSRightTextMovement
+C/data/-/NSRollbackMergePolicy
+C/econst/-/NSRoundBankers
+C/econst/-/NSRoundDown
+C/func/-/NSRoundDownToMultipleOfPageSize
+C/econst/-/NSRoundedBezelStyle
+C/econst/-/NSRoundedDisclosureBezelStyle
+C/econst/-/NSRoundedTokenStyle
+C/tdef/-/NSRoundingMode
+C/econst/-/NSRoundLineCapStyle
+C/econst/-/NSRoundLineJoinStyle
+C/econst/-/NSRoundPlain
+C/econst/-/NSRoundRectBezelStyle
+C/econst/-/NSRoundUp
+C/func/-/NSRoundUpToMultipleOfPageSize
+C/data/-/NSRowHeightBinding
+C/data/-/NSRTFDPboardType
+C/data/-/NSRTFDTextDocumentType
+C/data/-/NSRTFPboardType
+C/data/-/NSRTFPropertyStackOverflowException
+C/data/-/NSRTFTextDocumentType
+Objective-C/cl/-/NSRuleEditor
+Objective-C/intf/-/NSRuleEditorDelegate
+C/tdef/-/NSRuleEditorNestingMode
+C/econst/-/NSRuleEditorNestingModeCompound
+C/econst/-/NSRuleEditorNestingModeList
+C/econst/-/NSRuleEditorNestingModeSimple
+C/econst/-/NSRuleEditorNestingModeSingle
+C/data/-/NSRuleEditorPredicateComparisonModifier
+C/data/-/NSRuleEditorPredicateCompoundType
+C/data/-/NSRuleEditorPredicateCustomSelector
+C/data/-/NSRuleEditorPredicateLeftExpression
+C/data/-/NSRuleEditorPredicateOperatorType
+C/data/-/NSRuleEditorPredicateOptions
+C/data/-/NSRuleEditorPredicateRightExpression
+C/data/-/NSRuleEditorRowsDidChangeNotification
+C/tdef/-/NSRuleEditorRowType
+C/econst/-/NSRuleEditorRowTypeCompound
+C/econst/-/NSRuleEditorRowTypeSimple
+Objective-C/cl/-/NSRulerMarker
+C/tdef/-/NSRulerOrientation
+C/data/-/NSRulerPboard
+C/data/-/NSRulerPboardType
+Objective-C/cl/-/NSRulerView
+C/econst/-/NSRunAbortedResponse
+C/func/-/NSRunAlertPanel
+C/econst/-/NSRunContinuesResponse
+C/func/-/NSRunCriticalAlertPanel
+C/func/-/NSRunInformationalAlertPanel
+Objective-C/cl/-/NSRunLoop
+C/data/-/NSRunLoopCommonModes
+Objective-C/cl/-/NSRunningApplication
+C/econst/-/NSRunStoppedResponse
+C/econst/-/NSSaveAsOperation
+C/econst/-/NSSaveOperation
+C/tdef/-/NSSaveOperationType
+C/tdef/-/NSSaveOptions
+C/econst/-/NSSaveOptionsAsk
+C/econst/-/NSSaveOptionsNo
+C/econst/-/NSSaveOptionsYes
+Objective-C/cl/-/NSSavePanel
+C/tdef/-/NSSavePanelAuxiliaryOpaque
+C/econst/-/NSSaveToOperation
+C/econst/-/NSScaleNone
+C/econst/-/NSScaleProportionally
+C/econst/-/NSScaleToFit
+C/econst/-/NSScannedOption
+Objective-C/cl/-/NSScanner
+Objective-C/cl/-/NSScreen
+C/tdef/-/NSScreenAuxiliaryOpaque
+C/econst/-/NSScreenChangedEventType
+C/data/-/NSScreenColorSpaceDidChangeNotification
+C/macro/-/NSScreenSaverWindowLevel
+Objective-C/cl/-/NSScriptClassDescription
+Objective-C/cl/-/NSScriptCoercionHandler
+Objective-C/cl/-/NSScriptCommand
+Objective-C/cl/-/NSScriptCommandDescription
+Objective-C/cl/-/NSScriptExecutionContext
+Objective-C/cat/-/NSScriptingComparisonMethods
+Objective-C/cat/-/NSScriptKeyValueCoding
+Objective-C/cl/-/NSScriptObjectSpecifier
+Objective-C/cat/-/NSScriptObjectSpecifiers
+Objective-C/cl/-/NSScriptSuiteRegistry
+Objective-C/cl/-/NSScriptWhoseTest
+C/tdef/-/NSScrollArrowPosition
+Objective-C/cl/-/NSScroller
+C/tdef/-/NSScrollerArrow
+C/econst/-/NSScrollerArrowsDefaultSetting
+C/econst/-/NSScrollerArrowsMaxEnd
+C/econst/-/NSScrollerArrowsMinEnd
+C/econst/-/NSScrollerArrowsNone
+C/econst/-/NSScrollerDecrementArrow
+C/econst/-/NSScrollerDecrementLine
+C/econst/-/NSScrollerDecrementPage
+C/econst/-/NSScrollerIncrementArrow
+C/econst/-/NSScrollerIncrementLine
+C/econst/-/NSScrollerIncrementPage
+C/econst/-/NSScrollerKnob
+C/econst/-/NSScrollerKnobSlot
+C/econst/-/NSScrollerNoPart
+C/tdef/-/NSScrollerPart
+C/econst/-/NSScrollLockFunctionKey
+Objective-C/cl/-/NSScrollView
+C/econst/-/NSScrollWheel
+C/econst/-/NSScrollWheelMask
+Objective-C/cl/-/NSSearchField
+Objective-C/cl/-/NSSearchFieldCell
+C/macro/-/NSSearchFieldClearRecentsMenuItemTag
+C/macro/-/NSSearchFieldNoRecentsMenuItemTag
+C/macro/-/NSSearchFieldRecentsMenuItemTag
+C/macro/-/NSSearchFieldRecentsTitleMenuItemTag
+C/tdef/-/NSSearchPathDirectory
+C/tdef/-/NSSearchPathDomainMask
+C/func/-/NSSearchPathForDirectoriesInDomains
+C/econst/-/NSSecondCalendarUnit
+Objective-C/cl/-/NSSecureTextField
+Objective-C/cl/-/NSSecureTextFieldCell
+Objective-C/cl/-/NSSegmentedCell
+Objective-C/cl/-/NSSegmentedControl
+C/tdef/-/NSSegmentStyle
+C/econst/-/NSSegmentStyleAutomatic
+C/econst/-/NSSegmentStyleCapsule
+C/econst/-/NSSegmentStyleRounded
+C/econst/-/NSSegmentStyleRoundRect
+C/econst/-/NSSegmentStyleSmallSquare
+C/econst/-/NSSegmentStyleTexturedRounded
+C/econst/-/NSSegmentStyleTexturedSquare
+C/tdef/-/NSSegmentSwitchTracking
+C/econst/-/NSSegmentSwitchTrackingMomentary
+C/econst/-/NSSegmentSwitchTrackingSelectAny
+C/econst/-/NSSegmentSwitchTrackingSelectOne
+C/econst/-/NSSelectByCharacter
+C/econst/-/NSSelectByParagraph
+C/econst/-/NSSelectByWord
+C/data/-/NSSelectedIdentifierBinding
+C/data/-/NSSelectedIndexBinding
+C/data/-/NSSelectedLabelBinding
+C/data/-/NSSelectedObjectBinding
+C/data/-/NSSelectedObjectsBinding
+C/econst/-/NSSelectedTab
+C/data/-/NSSelectedTagBinding
+C/data/-/NSSelectedValueBinding
+C/data/-/NSSelectedValuesBinding
+C/econst/-/NSSelectFunctionKey
+C/econst/-/NSSelectingNext
+C/econst/-/NSSelectingPrevious
+C/tdef/-/NSSelectionAffinity
+C/econst/-/NSSelectionAffinityDownstream
+C/econst/-/NSSelectionAffinityUpstream
+C/tdef/-/NSSelectionDirection
+C/tdef/-/NSSelectionGranularity
+C/data/-/NSSelectionIndexesBinding
+C/data/-/NSSelectionIndexPathsBinding
+C/func/-/NSSelectorFromString
+C/data/-/NSSelectorNameBindingOption
+C/data/-/NSSelectsAllWhenSettingContentBindingOption
+Objective-C/cl/-/NSSerializer
+Objective-C/cl/-/NSServerNotificationCenter
+C/econst/-/NSServiceApplicationLaunchFailedError
+C/econst/-/NSServiceApplicationNotFoundError
+C/econst/-/NSServiceErrorMaximum
+C/econst/-/NSServiceErrorMinimum
+C/econst/-/NSServiceInvalidPasteboardDataError
+C/econst/-/NSServiceMalformedServiceDictionaryError
+C/econst/-/NSServiceMiscellaneousError
+C/econst/-/NSServiceRequestTimedOutError
+Objective-C/cat/-/NSServicesRequests
+Objective-C/cl/-/NSSet
+Objective-C/cl/-/NSSetCommand
+C/func/-/NSSetFocusRingStyle
+C/func/-/NSSetShowsServicesMenuItem
+C/func/-/NSSetUncaughtExceptionHandler
+C/func/-/NSSetZoneName
+Objective-C/cl/-/NSShadow
+C/data/-/NSShadowAttributeName
+C/econst/-/NSShadowlessSquareBezelStyle
+C/econst/-/NSSharedPublicDirectory
+C/data/-/NSShellCommandFileType
+C/econst/-/NSShiftJISStringEncoding
+C/econst/-/NSShiftKeyMask
+C/data/-/NSShortDateFormatString
+C/data/-/NSShortMonthNameArray
+C/data/-/NSShortTimeDateFormatString
+C/data/-/NSShortWeekDayNameArray
+C/func/-/NSShouldRetainWithZone
+C/func/-/NSShowAnimationEffect
+C/econst/-/NSShowControlGlyphs
+C/econst/-/NSShowInvisibleGlyphs
+C/func/-/NSShowsServicesMenuItem
+C/econst/-/NSSingleDateMode
+C/econst/-/NSSingleUnderlineStyle
+C/tdef/-/NSSize
+C/tdef/-/NSSizeArray
+C/econst/-/NSSizeDownFontAction
+C/func/-/NSSizeFromCGSize
+C/func/-/NSSizeFromString
+C/tdef/-/NSSizePointer
+C/func/-/NSSizeToCGSize
+C/econst/-/NSSizeUpFontAction
+Objective-C/cl/-/NSSlider
+Objective-C/cl/-/NSSliderCell
+C/tdef/-/NSSliderType
+C/econst/-/NSSmallCapsFontMask
+C/econst/-/NSSmallControlSize
+C/econst/-/NSSmallSquareBezelStyle
+C/econst/-/NSSnapshotEventMergePolicy
+C/econst/-/NSSnapshotEventRefresh
+C/econst/-/NSSnapshotEventRollback
+C/tdef/-/NSSnapshotEventType
+C/econst/-/NSSnapshotEventUndoDeletion
+C/econst/-/NSSnapshotEventUndoInsertion
+C/econst/-/NSSnapshotEventUndoUpdate
+C/tdef/-/NSSocketNativeHandle
+Objective-C/cl/-/NSSocketPort
+Objective-C/cl/-/NSSocketPortNameServer
+C/econst/-/NSSolarisOperatingSystem
+C/econst/-/NSSortConcurrent
+Objective-C/cl/-/NSSortDescriptor
+C/data/-/NSSortDescriptorsBinding
+C/tdef/-/NSSortOptions
+C/econst/-/NSSortStable
+Objective-C/cl/-/NSSound
+Objective-C/intf/-/NSSoundDelegate
+C/data/-/NSSoundPboardType
+C/econst/-/NSSpecialPageOrder
+Objective-C/cl/-/NSSpecifierTest
+C/tdef/-/NSSpeechBoundary
+C/data/-/NSSpeechCharacterModeProperty
+C/data/-/NSSpeechCommandDelimiterProperty
+C/data/-/NSSpeechCommandPrefix
+C/data/-/NSSpeechCommandSuffix
+C/data/-/NSSpeechCurrentVoiceProperty
+C/data/-/NSSpeechDictionaryAbbreviations
+C/data/-/NSSpeechDictionaryEntryPhonemes
+C/data/-/NSSpeechDictionaryEntrySpelling
+C/data/-/NSSpeechDictionaryLocaleIdentifier
+C/data/-/NSSpeechDictionaryModificationDate
+C/data/-/NSSpeechDictionaryPronunciations
+C/data/-/NSSpeechErrorCount
+C/data/-/NSSpeechErrorNewestCharacterOffset
+C/data/-/NSSpeechErrorNewestCode
+C/data/-/NSSpeechErrorOldestCharacterOffset
+C/data/-/NSSpeechErrorOldestCode
+C/data/-/NSSpeechErrorsProperty
+C/econst/-/NSSpeechImmediateBoundary
+C/data/-/NSSpeechInputModeProperty
+C/data/-/NSSpeechModeLiteral
+C/data/-/NSSpeechModeNormal
+C/data/-/NSSpeechModePhoneme
+C/data/-/NSSpeechModeText
+C/data/-/NSSpeechNumberModeProperty
+C/data/-/NSSpeechOutputToFileURLProperty
+C/data/-/NSSpeechPhonemeInfoExample
+C/data/-/NSSpeechPhonemeInfoHiliteEnd
+C/data/-/NSSpeechPhonemeInfoHiliteStart
+C/data/-/NSSpeechPhonemeInfoOpcode
+C/data/-/NSSpeechPhonemeInfoSymbol
+C/data/-/NSSpeechPhonemeSymbolsProperty
+C/data/-/NSSpeechPitchBaseProperty
+C/data/-/NSSpeechPitchModProperty
+C/data/-/NSSpeechRateProperty
+C/data/-/NSSpeechRecentSyncProperty
+Objective-C/cl/-/NSSpeechRecognizer
+Objective-C/intf/-/NSSpeechRecognizerDelegate
+C/data/-/NSSpeechResetProperty
+C/econst/-/NSSpeechSentenceBoundary
+C/data/-/NSSpeechStatusNumberOfCharactersLeft
+C/data/-/NSSpeechStatusOutputBusy
+C/data/-/NSSpeechStatusOutputPaused
+C/data/-/NSSpeechStatusPhonemeCode
+C/data/-/NSSpeechStatusProperty
+Objective-C/cl/-/NSSpeechSynthesizer
+Objective-C/intf/-/NSSpeechSynthesizerDelegate
+C/data/-/NSSpeechSynthesizerInfoIdentifier
+C/data/-/NSSpeechSynthesizerInfoProperty
+C/data/-/NSSpeechSynthesizerInfoVersion
+C/data/-/NSSpeechVolumeProperty
+C/econst/-/NSSpeechWordBoundary
+Objective-C/cl/-/NSSpellChecker
+C/data/-/NSSpellingStateAttributeName
+C/econst/-/NSSpellingStateGrammarFlag
+C/econst/-/NSSpellingStateSpellingFlag
+Objective-C/cl/-/NSSpellServer
+Objective-C/intf/-/NSSpellServerDelegate
+Objective-C/cl/-/NSSplitView
+Objective-C/intf/-/NSSplitViewDelegate
+C/data/-/NSSplitViewDidResizeSubviewsNotification
+C/tdef/-/NSSplitViewDividerStyle
+C/econst/-/NSSplitViewDividerStylePaneSplitter
+C/econst/-/NSSplitViewDividerStyleThick
+C/econst/-/NSSplitViewDividerStyleThin
+C/data/-/NSSplitViewWillResizeSubviewsNotification
+C/data/-/NSSQLiteAnalyzeOption
+C/econst/-/NSSQLiteError
+C/data/-/NSSQLiteErrorDomain
+C/data/-/NSSQLiteManualVacuumOption
+C/data/-/NSSQLitePragmasOption
+C/data/-/NSSQLiteStoreType
+C/econst/-/NSSquareLineCapStyle
+C/macro/-/NSSquareStatusItemLength
+C/data/-/NSStackTraceKey
+Objective-C/cl/-/NSStatusBar
+Objective-C/cl/-/NSStatusItem
+C/macro/-/NSStatusWindowLevel
+Objective-C/cl/-/NSStepper
+Objective-C/cl/-/NSStepperCell
+C/econst/-/NSStopFunctionKey
+C/data/-/NSStoreModelVersionHashesKey
+C/data/-/NSStoreModelVersionIdentifiersKey
+C/data/-/NSStorePathKey
+C/data/-/NSStoreTypeKey
+C/data/-/NSStoreUUIDInPathKey
+C/data/-/NSStoreUUIDKey
+Objective-C/cl/-/NSStream
+C/data/-/NSStreamDataWrittenToMemoryStreamKey
+Objective-C/intf/-/NSStreamDelegate
+C/tdef/-/NSStreamEvent
+C/econst/-/NSStreamEventEndEncountered
+C/econst/-/NSStreamEventErrorOccurred
+C/econst/-/NSStreamEventHasBytesAvailable
+C/econst/-/NSStreamEventHasSpaceAvailable
+C/econst/-/NSStreamEventNone
+C/econst/-/NSStreamEventOpenCompleted
+C/data/-/NSStreamFileCurrentOffsetKey
+C/data/-/NSStreamSocketSecurityLevelKey
+C/data/-/NSStreamSocketSecurityLevelNegotiatedSSL
+C/data/-/NSStreamSocketSecurityLevelNone
+C/data/-/NSStreamSocketSecurityLevelSSLv2
+C/data/-/NSStreamSocketSecurityLevelSSLv3
+C/data/-/NSStreamSocketSecurityLevelTLSv1
+C/data/-/NSStreamSocketSSLErrorDomain
+C/data/-/NSStreamSOCKSErrorDomain
+C/data/-/NSStreamSOCKSProxyConfigurationKey
+C/data/-/NSStreamSOCKSProxyHostKey
+C/data/-/NSStreamSOCKSProxyPasswordKey
+C/data/-/NSStreamSOCKSProxyPortKey
+C/data/-/NSStreamSOCKSProxyUserKey
+C/data/-/NSStreamSOCKSProxyVersion4
+C/data/-/NSStreamSOCKSProxyVersion5
+C/data/-/NSStreamSOCKSProxyVersionKey
+C/tdef/-/NSStreamStatus
+C/econst/-/NSStreamStatusAtEnd
+C/econst/-/NSStreamStatusClosed
+C/econst/-/NSStreamStatusError
+C/econst/-/NSStreamStatusNotOpen
+C/econst/-/NSStreamStatusOpen
+C/econst/-/NSStreamStatusOpening
+C/econst/-/NSStreamStatusReading
+C/econst/-/NSStreamStatusWriting
+C/data/-/NSStrikethroughColorAttributeName
+C/data/-/NSStrikethroughStyleAttributeName
+Objective-C/cl/-/NSString
+Objective-C/cat/-/NSString(AppKitAdditions)
+C/econst/-/NSStringAttributeType
+C/tdef/-/NSStringCompareOptions
+C/econst/-/NSStringDrawingDisableScreenFontSubstitution
+C/econst/-/NSStringDrawingOneShot
+C/tdef/-/NSStringDrawingOptions
+C/econst/-/NSStringDrawingTruncatesLastVisibleLine
+C/econst/-/NSStringDrawingUsesDeviceMetrics
+C/econst/-/NSStringDrawingUsesFontLeading
+C/econst/-/NSStringDrawingUsesLineFragmentOrigin
+C/tdef/-/NSStringEncoding
+C/econst/-/NSStringEncodingConversionAllowLossy
+C/econst/-/NSStringEncodingConversionExternalRepresentation
+C/tdef/-/NSStringEncodingConversionOptions
+C/data/-/NSStringEncodingErrorKey
+C/econst/-/NSStringEnumerationByComposedCharacterSequences
+C/econst/-/NSStringEnumerationByLines
+C/econst/-/NSStringEnumerationByParagraphs
+C/econst/-/NSStringEnumerationBySentences
+C/econst/-/NSStringEnumerationByWords
+C/econst/-/NSStringEnumerationLocalized
+C/tdef/-/NSStringEnumerationOptions
+C/econst/-/NSStringEnumerationReverse
+C/econst/-/NSStringEnumerationSubstringNotRequired
+C/func/-/NSStringFromClass
+C/func/-/NSStringFromHashTable
+C/func/-/NSStringFromMapTable
+C/func/-/NSStringFromPoint
+C/func/-/NSStringFromProtocol
+C/func/-/NSStringFromRange
+C/func/-/NSStringFromRect
+C/func/-/NSStringFromSelector
+C/func/-/NSStringFromSize
+C/data/-/NSStringPboardType
+C/data/-/NSStrokeColorAttributeName
+C/data/-/NSStrokeWidthAttributeName
+C/data/-/NSSubjectDocumentAttribute
+C/macro/-/NSSubmenuWindowLevel
+C/econst/-/NSSubqueryExpressionType
+C/data/-/NSSumKeyValueOperator
+C/econst/-/NSSunOSOperatingSystem
+C/data/-/NSSuperscriptAttributeName
+C/func/-/NSSwapBigDoubleToHost
+C/func/-/NSSwapBigFloatToHost
+C/func/-/NSSwapBigIntToHost
+C/func/-/NSSwapBigLongLongToHost
+C/func/-/NSSwapBigLongToHost
+C/func/-/NSSwapBigShortToHost
+C/func/-/NSSwapDouble
+C/func/-/NSSwapFloat
+C/func/-/NSSwapHostDoubleToBig
+C/func/-/NSSwapHostDoubleToLittle
+C/func/-/NSSwapHostFloatToBig
+C/func/-/NSSwapHostFloatToLittle
+C/func/-/NSSwapHostIntToBig
+C/func/-/NSSwapHostIntToLittle
+C/func/-/NSSwapHostLongLongToBig
+C/func/-/NSSwapHostLongLongToLittle
+C/func/-/NSSwapHostLongToBig
+C/func/-/NSSwapHostLongToLittle
+C/func/-/NSSwapHostShortToBig
+C/func/-/NSSwapHostShortToLittle
+C/func/-/NSSwapInt
+C/func/-/NSSwapLittleDoubleToHost
+C/func/-/NSSwapLittleFloatToHost
+C/func/-/NSSwapLittleIntToHost
+C/func/-/NSSwapLittleLongLongToHost
+C/func/-/NSSwapLittleLongToHost
+C/func/-/NSSwapLittleShortToHost
+C/func/-/NSSwapLong
+C/func/-/NSSwapLongLong
+C/tdef/-/NSSwappedDouble
+C/tdef/-/NSSwappedFloat
+C/func/-/NSSwapShort
+C/econst/-/NSSwitchButton
+C/econst/-/NSSymbolStringEncoding
+C/econst/-/NSSysReqFunctionKey
+C/data/-/NSSystemClockDidChangeNotification
+C/data/-/NSSystemColorsDidChangeNotification
+C/econst/-/NSSystemDefined
+C/econst/-/NSSystemDefinedMask
+C/econst/-/NSSystemDomainMask
+C/econst/-/NSSystemFunctionKey
+C/data/-/NSSystemTimeZoneDidChangeNotification
+C/econst/-/NSTabCharacter
+C/data/-/NSTabColumnTerminatorsAttributeName
+Objective-C/cl/-/NSTableColumn
+C/econst/-/NSTableColumnAutoresizingMask
+C/econst/-/NSTableColumnNoResizing
+C/econst/-/NSTableColumnUserResizingMask
+Objective-C/cl/-/NSTableHeaderCell
+Objective-C/cl/-/NSTableHeaderView
+C/econst/-/NSTabletPoint
+C/econst/-/NSTabletPointEventSubtype
+C/econst/-/NSTabletPointMask
+C/econst/-/NSTabletProximity
+C/econst/-/NSTabletProximityEventSubtype
+C/econst/-/NSTabletProximityMask
+Objective-C/cl/-/NSTableView
+C/tdef/-/NSTableViewColumnAutoresizingStyle
+C/data/-/NSTableViewColumnDidMoveNotification
+C/data/-/NSTableViewColumnDidResizeNotification
+Objective-C/intf/-/NSTableViewDataSource
+Objective-C/intf/-/NSTableViewDelegate
+C/tdef/-/NSTableViewDraggingDestinationFeedbackStyle
+C/econst/-/NSTableViewDraggingDestinationFeedbackStyleNone
+C/econst/-/NSTableViewDraggingDestinationFeedbackStyleRegular
+C/econst/-/NSTableViewDraggingDestinationFeedbackStyleSourceList
+C/econst/-/NSTableViewDropAbove
+C/econst/-/NSTableViewDropOn
+C/tdef/-/NSTableViewDropOperation
+C/econst/-/NSTableViewFirstColumnOnlyAutoresizingStyle
+C/econst/-/NSTableViewGridNone
+C/econst/-/NSTableViewLastColumnOnlyAutoresizingStyle
+C/econst/-/NSTableViewNoColumnAutoresizing
+C/econst/-/NSTableViewReverseSequentialColumnAutoresizingStyle
+C/data/-/NSTableViewSelectionDidChangeNotification
+C/tdef/-/NSTableViewSelectionHighlightStyle
+C/econst/-/NSTableViewSelectionHighlightStyleNone
+C/econst/-/NSTableViewSelectionHighlightStyleRegular
+C/econst/-/NSTableViewSelectionHighlightStyleSourceList
+C/data/-/NSTableViewSelectionIsChangingNotification
+C/econst/-/NSTableViewSequentialColumnAutoresizingStyle
+C/econst/-/NSTableViewSolidHorizontalGridLineMask
+C/econst/-/NSTableViewSolidVerticalGridLineMask
+C/econst/-/NSTableViewUniformColumnAutoresizingStyle
+C/tdef/-/NSTabState
+C/econst/-/NSTabTextMovement
+C/data/-/NSTabularTextPboardType
+Objective-C/cl/-/NSTabView
+Objective-C/intf/-/NSTabViewDelegate
+Objective-C/cl/-/NSTabViewItem
+C/tdef/-/NSTabViewItemAuxiliaryOpaque
+C/tdef/-/NSTabViewType
+C/data/-/NSTargetBinding
+C/data/-/NSTargetObjectUserInfoKey
+Objective-C/cl/-/NSTask
+C/data/-/NSTaskDidTerminateNotification
+C/tdef/-/NSTaskTerminationReason
+C/econst/-/NSTaskTerminationReasonExit
+C/econst/-/NSTaskTerminationReasonUncaughtSignal
+C/func/-/NSTemporaryDirectory
+C/econst/-/NSTerminateCancel
+C/econst/-/NSTerminateLater
+C/econst/-/NSTerminateNow
+C/tdef/-/NSTestComparisonOperation
+Objective-C/cl/-/NSText
+C/tdef/-/NSTextAlignment
+Objective-C/cl/-/NSTextAttachment
+Objective-C/intf/-/NSTextAttachmentCell
+Objective-C/cl/-/NSTextAttachmentCell
+Objective-C/cl/-/NSTextBlock
+C/econst/-/NSTextBlockAbsoluteValueType
+C/econst/-/NSTextBlockBaselineAlignment
+C/econst/-/NSTextBlockBorder
+C/econst/-/NSTextBlockBottomAlignment
+C/tdef/-/NSTextBlockDimension
+C/econst/-/NSTextBlockHeight
+C/tdef/-/NSTextBlockLayer
+C/econst/-/NSTextBlockMargin
+C/econst/-/NSTextBlockMaximumHeight
+C/econst/-/NSTextBlockMaximumWidth
+C/econst/-/NSTextBlockMiddleAlignment
+C/econst/-/NSTextBlockMinimumHeight
+C/econst/-/NSTextBlockMinimumWidth
+C/econst/-/NSTextBlockPadding
+C/econst/-/NSTextBlockPercentageValueType
+C/econst/-/NSTextBlockTopAlignment
+C/tdef/-/NSTextBlockValueType
+C/tdef/-/NSTextBlockVerticalAlignment
+C/econst/-/NSTextBlockWidth
+C/econst/-/NSTextCellType
+C/econst/-/NSTextCheckingAllCustomTypes
+C/econst/-/NSTextCheckingAllSystemTypes
+C/econst/-/NSTextCheckingAllTypes
+C/data/-/NSTextCheckingCityKey
+C/data/-/NSTextCheckingCountryKey
+C/data/-/NSTextCheckingDocumentAuthorKey
+C/data/-/NSTextCheckingDocumentTitleKey
+C/data/-/NSTextCheckingDocumentURLKey
+C/data/-/NSTextCheckingJobTitleKey
+C/data/-/NSTextCheckingNameKey
+C/data/-/NSTextCheckingOrganizationKey
+C/data/-/NSTextCheckingOrthographyKey
+C/data/-/NSTextCheckingPhoneKey
+C/data/-/NSTextCheckingQuotesKey
+C/data/-/NSTextCheckingReferenceDateKey
+C/data/-/NSTextCheckingReferenceTimeZoneKey
+C/data/-/NSTextCheckingReplacementsKey
+Objective-C/cl/-/NSTextCheckingResult
+C/data/-/NSTextCheckingStateKey
+C/data/-/NSTextCheckingStreetKey
+C/tdef/-/NSTextCheckingType
+C/econst/-/NSTextCheckingTypeAddress
+C/econst/-/NSTextCheckingTypeCorrection
+C/econst/-/NSTextCheckingTypeDash
+C/econst/-/NSTextCheckingTypeDate
+C/econst/-/NSTextCheckingTypeGrammar
+C/econst/-/NSTextCheckingTypeLink
+C/econst/-/NSTextCheckingTypeOrthography
+C/econst/-/NSTextCheckingTypeQuote
+C/econst/-/NSTextCheckingTypeReplacement
+C/tdef/-/NSTextCheckingTypes
+C/econst/-/NSTextCheckingTypeSpelling
+C/data/-/NSTextCheckingZIPKey
+C/data/-/NSTextColorBinding
+Objective-C/cl/-/NSTextContainer
+Objective-C/intf/-/NSTextDelegate
+C/data/-/NSTextDidBeginEditingNotification
+C/data/-/NSTextDidChangeNotification
+C/data/-/NSTextDidEndEditingNotification
+C/data/-/NSTextEncodingNameDocumentAttribute
+C/data/-/NSTextEncodingNameDocumentOption
+Objective-C/cl/-/NSTextField
+C/econst/-/NSTextFieldAndStepperDatePickerStyle
+C/tdef/-/NSTextFieldBezelStyle
+Objective-C/cl/-/NSTextFieldCell
+C/econst/-/NSTextFieldDatePickerStyle
+Objective-C/intf/-/NSTextFieldDelegate
+C/econst/-/NSTextFieldRoundedBezel
+C/econst/-/NSTextFieldSquareBezel
+Objective-C/intf/-/NSTextInput
+Objective-C/intf/-/NSTextInputClient
+Objective-C/cl/-/NSTextInputContext
+C/data/-/NSTextInputContextKeyboardSelectionDidChangeNotification
+C/data/-/NSTextLineTooLongException
+Objective-C/cl/-/NSTextList
+C/econst/-/NSTextListPrependEnclosingMarker
+C/data/-/NSTextNoSelectionException
+C/data/-/NSTextReadException
+C/econst/-/NSTextReadInapplicableDocumentTypeError
+C/econst/-/NSTextReadWriteErrorMaximum
+C/econst/-/NSTextReadWriteErrorMinimum
+C/data/-/NSTextSizeMultiplierDocumentOption
+Objective-C/cl/-/NSTextStorage
+Objective-C/intf/-/NSTextStorageDelegate
+C/data/-/NSTextStorageDidProcessEditingNotification
+C/econst/-/NSTextStorageEditedAttributes
+C/econst/-/NSTextStorageEditedCharacters
+C/data/-/NSTextStorageWillProcessEditingNotification
+Objective-C/cl/-/NSTextTab
+Objective-C/cl/-/NSTextTable
+C/econst/-/NSTextTableAutomaticLayoutAlgorithm
+Objective-C/cl/-/NSTextTableBlock
+C/econst/-/NSTextTableFixedLayoutAlgorithm
+C/tdef/-/NSTextTableLayoutAlgorithm
+C/tdef/-/NSTextTabType
+C/econst/-/NSTexturedBackgroundWindowMask
+C/econst/-/NSTexturedRoundedBezelStyle
+C/econst/-/NSTexturedSquareBezelStyle
+Objective-C/cl/-/NSTextView
+Objective-C/intf/-/NSTextViewDelegate
+C/data/-/NSTextViewDidChangeSelectionNotification
+C/data/-/NSTextViewDidChangeTypingAttributesNotification
+C/data/-/NSTextViewWillChangeNotifyingTextViewNotification
+C/data/-/NSTextWriteException
+C/econst/-/NSTextWriteInapplicableDocumentTypeError
+C/econst/-/NSTextWritingDirectionEmbedding
+C/econst/-/NSTextWritingDirectionOverride
+C/econst/-/NSThickerSquareBezelStyle
+C/econst/-/NSThickSquareBezelStyle
+C/data/-/NSThisDayDesignations
+C/data/-/NSThousandsSeparator
+Objective-C/cl/-/NSThread
+C/data/-/NSThreadWillExitNotification
+C/econst/-/NSTickMarkAbove
+C/econst/-/NSTickMarkBelow
+C/econst/-/NSTickMarkLeft
+C/tdef/-/NSTickMarkPosition
+C/econst/-/NSTickMarkRight
+C/tdef/-/NSTIFFCompression
+C/econst/-/NSTIFFCompressionCCITTFAX3
+C/econst/-/NSTIFFCompressionCCITTFAX4
+C/econst/-/NSTIFFCompressionJPEG
+C/econst/-/NSTIFFCompressionLZW
+C/econst/-/NSTIFFCompressionNEXT
+C/econst/-/NSTIFFCompressionNone
+C/econst/-/NSTIFFCompressionOldJPEG
+C/econst/-/NSTIFFCompressionPackBits
+C/data/-/NSTIFFException
+C/econst/-/NSTIFFFileType
+C/data/-/NSTIFFPboardType
+C/data/-/NSTimeDateFormatString
+C/data/-/NSTimeFormatString
+C/tdef/-/NSTimeInterval
+C/macro/-/NSTimeIntervalSince1970
+C/data/-/NSTimeoutDocumentOption
+Objective-C/cl/-/NSTimer
+Objective-C/cl/-/NSTimeZone
+C/econst/-/NSTimeZoneDatePickerElementFlag
+C/tdef/-/NSTimeZoneNameStyle
+C/econst/-/NSTimeZoneNameStyleDaylightSaving
+C/econst/-/NSTimeZoneNameStyleGeneric
+C/econst/-/NSTimeZoneNameStyleShortDaylightSaving
+C/econst/-/NSTimeZoneNameStyleShortGeneric
+C/econst/-/NSTimeZoneNameStyleShortStandard
+C/econst/-/NSTimeZoneNameStyleStandard
+C/data/-/NSTitleBinding
+C/data/-/NSTitleDocumentAttribute
+C/econst/-/NSTitledWindowMask
+C/tdef/-/NSTitlePosition
+C/econst/-/NSToggleButton
+Objective-C/cl/-/NSTokenField
+Objective-C/cl/-/NSTokenFieldCell
+Objective-C/intf/-/NSTokenFieldCellDelegate
+Objective-C/intf/-/NSTokenFieldDelegate
+C/data/-/NSTokenSize
+C/tdef/-/NSTokenStyle
+Objective-C/cl/-/NSToolbar
+C/data/-/NSToolbarCustomizeToolbarItemIdentifier
+Objective-C/intf/-/NSToolbarDelegate
+C/data/-/NSToolbarDidRemoveItemNotification
+C/tdef/-/NSToolbarDisplayMode
+C/econst/-/NSToolbarDisplayModeDefault
+C/econst/-/NSToolbarDisplayModeIconAndLabel
+C/econst/-/NSToolbarDisplayModeIconOnly
+C/econst/-/NSToolbarDisplayModeLabelOnly
+C/data/-/NSToolbarFlexibleSpaceItemIdentifier
+Objective-C/cl/-/NSToolbarItem
+Objective-C/cl/-/NSToolbarItemGroup
+Objective-C/cat/-/NSToolbarItemValidation
+C/econst/-/NSToolbarItemVisibilityPriorityHigh
+C/econst/-/NSToolbarItemVisibilityPriorityLow
+C/econst/-/NSToolbarItemVisibilityPriorityStandard
+C/econst/-/NSToolbarItemVisibilityPriorityUser
+C/data/-/NSToolbarPrintItemIdentifier
+C/data/-/NSToolbarSeparatorItemIdentifier
+C/data/-/NSToolbarShowColorsItemIdentifier
+C/data/-/NSToolbarShowFontsItemIdentifier
+C/tdef/-/NSToolbarSizeMode
+C/econst/-/NSToolbarSizeModeDefault
+C/econst/-/NSToolbarSizeModeRegular
+C/econst/-/NSToolbarSizeModeSmall
+C/data/-/NSToolbarSpaceItemIdentifier
+C/data/-/NSToolbarWillAddItemNotification
+C/data/-/NSToolTipAttributeName
+C/data/-/NSToolTipBinding
+Objective-C/cat/-/NSToolTipOwner
+C/tdef/-/NSToolTipTag
+C/data/-/NSTopMarginDocumentAttribute
+C/econst/-/NSTopTabsBezelBorder
+C/macro/-/NSTornOffMenuWindowLevel
+Objective-C/cl/-/NSTouch
+C/econst/-/NSTouchEventSubtype
+C/tdef/-/NSTouchPhase
+C/econst/-/NSTouchPhaseAny
+C/econst/-/NSTouchPhaseBegan
+C/econst/-/NSTouchPhaseCancelled
+C/econst/-/NSTouchPhaseEnded
+C/econst/-/NSTouchPhaseMoved
+C/econst/-/NSTouchPhaseStationary
+C/econst/-/NSTouchPhaseTouching
+C/econst/-/NSTrackingActiveAlways
+C/econst/-/NSTrackingActiveInActiveApp
+C/econst/-/NSTrackingActiveInKeyWindow
+C/econst/-/NSTrackingActiveWhenFirstResponder
+Objective-C/cl/-/NSTrackingArea
+C/tdef/-/NSTrackingAreaOptions
+C/econst/-/NSTrackingAssumeInside
+C/econst/-/NSTrackingCursorUpdate
+C/econst/-/NSTrackingEnabledDuringMouseDrag
+C/econst/-/NSTrackingInVisibleRect
+C/econst/-/NSTrackingMouseEnteredAndExited
+C/econst/-/NSTrackingMouseMoved
+C/tdef/-/NSTrackingRectTag
+C/econst/-/NSTrackModeMatrix
+C/econst/-/NSTransformableAttributeType
+C/econst/-/NSTransformEntityMappingType
+C/data/-/NSTransparentBinding
+Objective-C/cl/-/NSTreeController
+Objective-C/cl/-/NSTreeNode
+C/econst/-/NSTwoByteGlyphPacking
+C/data/-/NSTypedStreamVersionException
+Objective-C/cl/-/NSTypesetter
+C/tdef/-/NSTypesetterBehavior
+C/econst/-/NSTypesetterBehavior_10_2
+C/econst/-/NSTypesetterBehavior_10_2_WithCompatibility
+C/econst/-/NSTypesetterBehavior_10_3
+C/econst/-/NSTypesetterBehavior_10_4
+C/econst/-/NSTypesetterContainerBreakAction
+C/tdef/-/NSTypesetterControlCharacterAction
+C/tdef/-/NSTypesetterGlyphInfo
+C/econst/-/NSTypesetterHorizontalTabAction
+C/econst/-/NSTypesetterLatestBehavior
+C/econst/-/NSTypesetterLineBreakAction
+C/econst/-/NSTypesetterOriginalBehavior
+C/econst/-/NSTypesetterParagraphBreakAction
+C/econst/-/NSTypesetterWhitespaceAction
+C/econst/-/NSTypesetterZeroAdvancementAction
+C/tdef/-/NSUInteger
+C/macro/-/NSUIntegerMax
+C/data/-/NSUnarchiveFromDataTransformerName
+Objective-C/cl/-/NSUnarchiver
+C/econst/-/NSUnboldFontMask
+C/econst/-/NSUncachedRead
+C/tdef/-/NSUncaughtExceptionHandler
+C/data/-/NSUncaughtRuntimeErrorException
+C/data/-/NSUncaughtSystemExceptionException
+C/econst/-/NSUndefinedAttributeType
+C/econst/-/NSUndefinedDateComponent
+C/econst/-/NSUndefinedEntityMappingType
+C/data/-/NSUndefinedKeyException
+C/data/-/NSUnderlineByWordMask
+C/data/-/NSUnderlineColorAttributeName
+C/econst/-/NSUnderlinePatternDash
+C/econst/-/NSUnderlinePatternDashDot
+C/econst/-/NSUnderlinePatternDashDotDot
+C/econst/-/NSUnderlinePatternDot
+C/econst/-/NSUnderlinePatternSolid
+C/data/-/NSUnderlineStyleAttributeName
+C/econst/-/NSUnderlineStyleDouble
+C/econst/-/NSUnderlineStyleNone
+C/econst/-/NSUnderlineStyleSingle
+C/econst/-/NSUnderlineStyleThick
+C/data/-/NSUnderlyingErrorKey
+C/econst/-/NSUndoCloseGroupingRunLoopOrdering
+C/econst/-/NSUndoFunctionKey
+Objective-C/cl/-/NSUndoManager
+C/data/-/NSUndoManagerCheckpointNotification
+C/data/-/NSUndoManagerDidOpenUndoGroupNotification
+C/data/-/NSUndoManagerDidRedoChangeNotification
+C/data/-/NSUndoManagerDidUndoChangeNotification
+C/data/-/NSUndoManagerWillCloseUndoGroupNotification
+C/data/-/NSUndoManagerWillRedoChangeNotification
+C/data/-/NSUndoManagerWillUndoChangeNotification
+C/econst/-/NSUnicodeStringEncoding
+C/econst/-/NSUnifiedTitleAndToolbarWindowMask
+C/data/-/NSUnionOfArraysKeyValueOperator
+C/data/-/NSUnionOfObjectsKeyValueOperator
+C/data/-/NSUnionOfSetsKeyValueOperator
+C/func/-/NSUnionRange
+C/func/-/NSUnionRect
+C/econst/-/NSUnionSetExpressionType
+Objective-C/cl/-/NSUniqueIDSpecifier
+C/econst/-/NSUnitalicFontMask
+C/econst/-/NSUnknownColorSpaceModel
+C/econst/-/NSUnknownKeyScriptError
+C/econst/-/NSUnknownKeySpecifierError
+C/econst/-/NSUnknownPageOrder
+C/econst/-/NSUnknownPointingDevice
+C/data/-/NSUnknownUserInfoKey
+C/func/-/NSUnLinkModule
+C/func/-/NSUnregisterServicesProvider
+C/econst/-/NSUnscaledWindowMask
+C/econst/-/NSUnselectCancel
+C/econst/-/NSUnselectLater
+C/econst/-/NSUnselectNow
+C/econst/-/NSUpArrowFunctionKey
+C/data/-/NSUpdatedObjectsKey
+C/func/-/NSUpdateDynamicServices
+C/econst/-/NSUpdateWindowsRunLoopOrdering
+C/econst/-/NSUpTextMovement
+Objective-C/cl/-/NSURL
+Objective-C/cat/-/NSURL(AppKitAdditions)
+Objective-C/cl/-/NSURL_QLPreviewAdditions
+C/data/-/NSURLAttributeModificationDateKey
+Objective-C/cl/-/NSURLAuthenticationChallenge
+Objective-C/intf/-/NSURLAuthenticationChallengeSender
+C/data/-/NSURLAuthenticationMethodClientCertificate
+C/data/-/NSURLAuthenticationMethodDefault
+C/data/-/NSURLAuthenticationMethodHTMLForm
+C/data/-/NSURLAuthenticationMethodHTTPBasic
+C/data/-/NSURLAuthenticationMethodHTTPDigest
+C/data/-/NSURLAuthenticationMethodNegotiate
+C/data/-/NSURLAuthenticationMethodServerTrust
+C/econst/-/NSURLBookmarkCreationMinimalBookmark
+C/tdef/-/NSURLBookmarkCreationOptions
+C/econst/-/NSURLBookmarkCreationPreferFileIDResolution
+C/econst/-/NSURLBookmarkCreationSuitableForBookmarkFile
+C/tdef/-/NSURLBookmarkResolutionOptions
+C/econst/-/NSURLBookmarkResolutionWithoutMounting
+C/econst/-/NSURLBookmarkResolutionWithoutUI
+Objective-C/cl/-/NSURLCache
+C/econst/-/NSURLCacheStorageAllowed
+C/econst/-/NSURLCacheStorageAllowedInMemoryOnly
+C/econst/-/NSURLCacheStorageNotAllowed
+C/tdef/-/NSURLCacheStoragePolicy
+Objective-C/cl/-/NSURLConnection
+C/data/-/NSURLContentAccessDateKey
+C/data/-/NSURLContentModificationDateKey
+C/data/-/NSURLCreationDateKey
+Objective-C/cl/-/NSURLCredential
+C/tdef/-/NSURLCredentialPersistence
+C/econst/-/NSURLCredentialPersistenceForSession
+C/econst/-/NSURLCredentialPersistenceNone
+C/econst/-/NSURLCredentialPersistencePermanent
+Objective-C/cl/-/NSURLCredentialStorage
+C/data/-/NSURLCredentialStorageChangedNotification
+C/data/-/NSURLCustomIconKey
+Objective-C/cl/-/NSURLDownload
+C/data/-/NSURLEffectiveIconKey
+C/econst/-/NSURLErrorBadServerResponse
+C/econst/-/NSURLErrorBadURL
+C/econst/-/NSURLErrorCancelled
+C/econst/-/NSURLErrorCannotCloseFile
+C/econst/-/NSURLErrorCannotConnectToHost
+C/econst/-/NSURLErrorCannotCreateFile
+C/econst/-/NSURLErrorCannotDecodeContentData
+C/econst/-/NSURLErrorCannotDecodeRawData
+C/econst/-/NSURLErrorCannotFindHost
+C/econst/-/NSURLErrorCannotLoadFromNetwork
+C/econst/-/NSURLErrorCannotMoveFile
+C/econst/-/NSURLErrorCannotOpenFile
+C/econst/-/NSURLErrorCannotParseResponse
+C/econst/-/NSURLErrorCannotRemoveFile
+C/econst/-/NSURLErrorCannotWriteToFile
+C/econst/-/NSURLErrorClientCertificateRejected
+C/econst/-/NSURLErrorClientCertificateRequired
+C/econst/-/NSURLErrorDataLengthExceedsMaximum
+C/econst/-/NSURLErrorDNSLookupFailed
+C/data/-/NSURLErrorDomain
+C/econst/-/NSURLErrorDownloadDecodingFailedMidStream
+C/econst/-/NSURLErrorDownloadDecodingFailedToComplete
+C/data/-/NSURLErrorFailingURLErrorKey
+C/data/-/NSURLErrorFailingURLPeerTrustErrorKey
+C/data/-/NSURLErrorFailingURLStringErrorKey
+C/econst/-/NSURLErrorFileDoesNotExist
+C/econst/-/NSURLErrorFileIsDirectory
+C/econst/-/NSURLErrorHTTPTooManyRedirects
+C/data/-/NSURLErrorKey
+C/econst/-/NSURLErrorNetworkConnectionLost
+C/econst/-/NSURLErrorNoPermissionsToReadFile
+C/econst/-/NSURLErrorNotConnectedToInternet
+C/econst/-/NSURLErrorRedirectToNonExistentLocation
+C/econst/-/NSURLErrorResourceUnavailable
+C/econst/-/NSURLErrorSecureConnectionFailed
+C/econst/-/NSURLErrorServerCertificateHasBadDate
+C/econst/-/NSURLErrorServerCertificateHasUnknownRoot
+C/econst/-/NSURLErrorServerCertificateNotYetValid
+C/econst/-/NSURLErrorServerCertificateUntrusted
+C/econst/-/NSURLErrorTimedOut
+C/econst/-/NSURLErrorUnknown
+C/econst/-/NSURLErrorUnsupportedURL
+C/econst/-/NSURLErrorUserAuthenticationRequired
+C/econst/-/NSURLErrorUserCancelledAuthentication
+C/econst/-/NSURLErrorZeroByteResource
+C/data/-/NSURLFileAllocatedSizeKey
+C/data/-/NSURLFileScheme
+C/data/-/NSURLFileSizeKey
+Objective-C/cl/-/NSURLHandle
+Objective-C/intf/-/NSURLHandleClient
+C/econst/-/NSURLHandleLoadFailed
+C/econst/-/NSURLHandleLoadInProgress
+C/econst/-/NSURLHandleLoadSucceeded
+C/econst/-/NSURLHandleNotLoaded
+C/tdef/-/NSURLHandleStatus
+C/data/-/NSURLHasHiddenExtensionKey
+C/data/-/NSURLIsAliasFileKey
+C/data/-/NSURLIsDirectoryKey
+C/data/-/NSURLIsHiddenKey
+C/data/-/NSURLIsPackageKey
+C/data/-/NSURLIsRegularFileKey
+C/data/-/NSURLIsSymbolicLinkKey
+C/data/-/NSURLIsSystemImmutableKey
+C/data/-/NSURLIsUserImmutableKey
+C/data/-/NSURLIsVolumeKey
+C/data/-/NSURLLabelColorKey
+C/data/-/NSURLLabelNumberKey
+C/data/-/NSURLLinkCountKey
+C/data/-/NSURLLocalizedLabelKey
+C/data/-/NSURLLocalizedNameKey
+C/data/-/NSURLLocalizedTypeDescriptionKey
+C/data/-/NSURLNameKey
+C/data/-/NSURLParentDirectoryURLKey
+C/data/-/NSURLPboardType
+Objective-C/cl/-/NSURLProtectionSpace
+C/data/-/NSURLProtectionSpaceFTPProxy
+C/data/-/NSURLProtectionSpaceHTTPProxy
+C/data/-/NSURLProtectionSpaceHTTPSProxy
+C/data/-/NSURLProtectionSpaceSOCKSProxy
+Objective-C/cl/-/NSURLProtocol
+Objective-C/intf/-/NSURLProtocolClient
+Objective-C/cl/-/NSURLRequest
+C/tdef/-/NSURLRequestCachePolicy
+C/econst/-/NSURLRequestReloadIgnoringCacheData
+C/econst/-/NSURLRequestReloadIgnoringLocalAndRemoteCacheData
+C/econst/-/NSURLRequestReloadIgnoringLocalCacheData
+C/econst/-/NSURLRequestReloadRevalidatingCacheData
+C/econst/-/NSURLRequestReturnCacheDataDontLoad
+C/econst/-/NSURLRequestReturnCacheDataElseLoad
+C/econst/-/NSURLRequestUseProtocolCachePolicy
+Objective-C/cl/-/NSURLResponse
+C/macro/-/NSURLResponseUnknownLength
+C/data/-/NSURLTypeIdentifierKey
+C/data/-/NSURLVolumeAvailableCapacityKey
+C/data/-/NSURLVolumeIsJournalingKey
+C/data/-/NSURLVolumeLocalizedFormatDescriptionKey
+C/data/-/NSURLVolumeResourceCountKey
+C/data/-/NSURLVolumeSupportsCasePreservedNamesKey
+C/data/-/NSURLVolumeSupportsCaseSensitiveNamesKey
+C/data/-/NSURLVolumeSupportsHardLinksKey
+C/data/-/NSURLVolumeSupportsJournalingKey
+C/data/-/NSURLVolumeSupportsPersistentIDsKey
+C/data/-/NSURLVolumeSupportsSparseFilesKey
+C/data/-/NSURLVolumeSupportsSymbolicLinksKey
+C/data/-/NSURLVolumeSupportsZeroRunsKey
+C/data/-/NSURLVolumeTotalCapacityKey
+C/data/-/NSURLVolumeURLKey
+C/tdef/-/NSUsableScrollerParts
+C/econst/-/NSUserCancelledError
+Objective-C/cl/-/NSUserDefaults
+Objective-C/cl/-/NSUserDefaultsController
+C/data/-/NSUserDefaultsDidChangeNotification
+C/econst/-/NSUserDirectory
+C/econst/-/NSUserDomainMask
+C/econst/-/NSUserFunctionKey
+Objective-C/intf/-/NSUserInterfaceItemSearching
+C/tdef/-/NSUserInterfaceLayoutDirection
+C/econst/-/NSUserInterfaceLayoutDirectionLeftToRight
+C/econst/-/NSUserInterfaceLayoutDirectionRightToLeft
+Objective-C/intf/-/NSUserInterfaceValidations
+C/func/-/NSUserName
+C/econst/-/NSUTF16BigEndianStringEncoding
+C/econst/-/NSUTF16LittleEndianStringEncoding
+C/econst/-/NSUTF16StringEncoding
+C/econst/-/NSUTF32BigEndianStringEncoding
+C/econst/-/NSUTF32LittleEndianStringEncoding
+C/econst/-/NSUTF32StringEncoding
+C/econst/-/NSUTF8StringEncoding
+C/econst/-/NSUtilityWindowMask
+C/data/-/NSUUIDChangedPersistentStoresKey
+Objective-C/intf/-/NSValidatedUserInterfaceItem
+C/data/-/NSValidatesImmediatelyBindingOption
+C/data/-/NSValidateXMLStoreOption
+C/econst/-/NSValidationDateTooLateError
+C/econst/-/NSValidationDateTooSoonError
+C/econst/-/NSValidationErrorMaximum
+C/econst/-/NSValidationErrorMinimum
+C/econst/-/NSValidationInvalidDateError
+C/data/-/NSValidationKeyErrorKey
+C/econst/-/NSValidationMissingMandatoryPropertyError
+C/econst/-/NSValidationMultipleErrorsError
+C/econst/-/NSValidationNumberTooLargeError
+C/econst/-/NSValidationNumberTooSmallError
+C/data/-/NSValidationObjectErrorKey
+C/data/-/NSValidationPredicateErrorKey
+C/econst/-/NSValidationRelationshipDeniedDeleteError
+C/econst/-/NSValidationRelationshipExceedsMaximumCountError
+C/econst/-/NSValidationRelationshipLacksMinimumCountError
+C/econst/-/NSValidationStringPatternMatchingError
+C/econst/-/NSValidationStringTooLongError
+C/econst/-/NSValidationStringTooShortError
+C/data/-/NSValidationValueErrorKey
+Objective-C/cl/-/NSValue
+Objective-C/cat/-/NSValue(CAAdditions)
+Objective-C/cat/-/NSValue(QTKitAdditions)
+C/data/-/NSValueBinding
+C/data/-/NSValuePathBinding
+Objective-C/cl/-/NSValueTransformer
+C/data/-/NSValueTransformerBindingOption
+C/data/-/NSValueTransformerNameBindingOption
+C/data/-/NSValueURLBinding
+C/econst/-/NSVariableExpressionType
+C/macro/-/NSVariableStatusItemLength
+C/data/-/NSVCardPboardType
+C/econst/-/nsvErr
+C/func/-/NSVersionOfLinkTimeLibrary
+C/func/-/NSVersionOfRunTimeLibrary
+C/econst/-/NSVerticalRuler
+C/econst/-/NSViaPanelFontAction
+Objective-C/cl/-/NSView
+Objective-C/cat/-/NSView(IBViewIntegration)
+Objective-C/cl/-/NSViewAnimation
+C/data/-/NSViewAnimationEffectKey
+C/data/-/NSViewAnimationEndFrameKey
+C/data/-/NSViewAnimationFadeInEffect
+C/data/-/NSViewAnimationFadeOutEffect
+C/data/-/NSViewAnimationStartFrameKey
+C/data/-/NSViewAnimationTargetKey
+C/data/-/NSViewBoundsDidChangeNotification
+Objective-C/cl/-/NSViewController
+C/data/-/NSViewDidUpdateTrackingAreasNotification
+C/data/-/NSViewFocusDidChangeNotification
+C/data/-/NSViewFrameDidChangeNotification
+C/data/-/NSViewGlobalFrameDidChangeNotification
+C/econst/-/NSViewHeightSizable
+C/tdef/-/NSViewLayerContentsPlacement
+C/econst/-/NSViewLayerContentsPlacementBottom
+C/econst/-/NSViewLayerContentsPlacementBottomLeft
+C/econst/-/NSViewLayerContentsPlacementBottomRight
+C/econst/-/NSViewLayerContentsPlacementCenter
+C/econst/-/NSViewLayerContentsPlacementLeft
+C/econst/-/NSViewLayerContentsPlacementRight
+C/econst/-/NSViewLayerContentsPlacementScaleAxesIndependently
+C/econst/-/NSViewLayerContentsPlacementScaleProportionallyToFill
+C/econst/-/NSViewLayerContentsPlacementScaleProportionallyToFit
+C/econst/-/NSViewLayerContentsPlacementTop
+C/econst/-/NSViewLayerContentsPlacementTopLeft
+C/econst/-/NSViewLayerContentsPlacementTopRight
+C/econst/-/NSViewLayerContentsRedrawBeforeViewResize
+C/econst/-/NSViewLayerContentsRedrawDuringViewResize
+C/econst/-/NSViewLayerContentsRedrawNever
+C/econst/-/NSViewLayerContentsRedrawOnSetNeedsDisplay
+C/tdef/-/NSViewLayerContentsRedrawPolicy
+C/econst/-/NSViewMaxXMargin
+C/econst/-/NSViewMaxYMargin
+C/econst/-/NSViewMinXMargin
+C/econst/-/NSViewMinYMargin
+C/data/-/NSViewModeDocumentAttribute
+C/econst/-/NSViewNotSizable
+C/data/-/NSViewSizeDocumentAttribute
+C/econst/-/NSViewWidthSizable
+C/data/-/NSViewZoomDocumentAttribute
+C/data/-/NSVisibleBinding
+C/data/-/NSVoiceAge
+C/data/-/NSVoiceDemoText
+C/data/-/NSVoiceGender
+C/data/-/NSVoiceGenderFemale
+C/data/-/NSVoiceGenderMale
+C/data/-/NSVoiceGenderNeuter
+C/data/-/NSVoiceIdentifier
+C/data/-/NSVoiceIndividuallySpokenCharacters
+C/data/-/NSVoiceLanguage
+C/data/-/NSVoiceLocaleIdentifier
+C/data/-/NSVoiceName
+C/data/-/NSVoiceSupportedCharacters
+C/tdef/-/NSVolumeEnumerationOptions
+C/econst/-/NSVolumeEnumerationProduceFileReferenceURLs
+C/econst/-/NSVolumeEnumerationSkipHiddenVolumes
+C/econst/-/NSWantsBidiLevels
+C/econst/-/NSWarningAlertStyle
+C/data/-/NSWarningValueBinding
+C/data/-/NSWebArchiveTextDocumentType
+C/data/-/NSWebPreferencesDocumentOption
+C/data/-/NSWebResourceLoadDelegateDocumentOption
+C/econst/-/NSWeekCalendarUnit
+C/econst/-/NSWeekdayCalendarUnit
+C/data/-/NSWeekDayNameArray
+C/econst/-/NSWeekdayOrdinalCalendarUnit
+C/econst/-/NSWheelModeColorPanel
+C/data/-/NSWhite
+Objective-C/cl/-/NSWhoseSpecifier
+C/tdef/-/NSWhoseSubelementIdentifier
+C/func/-/NSWidth
+C/data/-/NSWidthBinding
+C/econst/-/NSWidthInsensitiveSearch
+C/data/-/NSWillBecomeMultiThreadedNotification
+C/tdef/-/NSWindingRule
+Objective-C/cl/-/NSWindow
+C/econst/-/NSWindowAbove
+C/tdef/-/NSWindowBackingLocation
+C/econst/-/NSWindowBackingLocationDefault
+C/econst/-/NSWindowBackingLocationMainMemory
+C/econst/-/NSWindowBackingLocationVideoMemory
+C/econst/-/NSWindowBelow
+C/tdef/-/NSWindowButton
+C/econst/-/NSWindowCloseButton
+C/tdef/-/NSWindowCollectionBehavior
+C/econst/-/NSWindowCollectionBehaviorCanJoinAllSpaces
+C/econst/-/NSWindowCollectionBehaviorDefault
+C/econst/-/NSWindowCollectionBehaviorIgnoresCycle
+C/econst/-/NSWindowCollectionBehaviorManaged
+C/econst/-/NSWindowCollectionBehaviorMoveToActiveSpace
+C/econst/-/NSWindowCollectionBehaviorParticipatesInCycle
+C/econst/-/NSWindowCollectionBehaviorStationary
+C/econst/-/NSWindowCollectionBehaviorTransient
+Objective-C/cl/-/NSWindowController
+Objective-C/intf/-/NSWindowDelegate
+C/tdef/-/NSWindowDepth
+C/econst/-/NSWindowDepthOnehundredtwentyeightBitRGB
+C/econst/-/NSWindowDepthSixtyfourBitRGB
+C/econst/-/NSWindowDepthTwentyfourBitRGB
+C/data/-/NSWindowDidBecomeKeyNotification
+C/data/-/NSWindowDidBecomeMainNotification
+C/data/-/NSWindowDidChangeScreenNotification
+C/data/-/NSWindowDidChangeScreenProfileNotification
+C/data/-/NSWindowDidDeminiaturizeNotification
+C/data/-/NSWindowDidEndLiveResizeNotification
+C/data/-/NSWindowDidEndSheetNotification
+C/data/-/NSWindowDidExposeNotification
+C/data/-/NSWindowDidMiniaturizeNotification
+C/data/-/NSWindowDidMoveNotification
+C/data/-/NSWindowDidResignKeyNotification
+C/data/-/NSWindowDidResignMainNotification
+C/data/-/NSWindowDidResizeNotification
+C/data/-/NSWindowDidUpdateNotification
+C/econst/-/NSWindowDocumentIconButton
+C/econst/-/NSWindowExposedEventType
+C/func/-/NSWindowList
+C/func/-/NSWindowListForContext
+C/econst/-/NSWindowMiniaturizeButton
+C/econst/-/NSWindowMovedEventType
+C/econst/-/NSWindowNumberListAllApplications
+C/econst/-/NSWindowNumberListAllSpaces
+C/tdef/-/NSWindowNumberListOptions
+C/tdef/-/NSWindowOrderingMode
+C/econst/-/NSWindowOut
+C/econst/-/NSWindows95InterfaceStyle
+C/econst/-/NSWindows95OperatingSystem
+C/econst/-/NSWindowsCP1250StringEncoding
+C/econst/-/NSWindowsCP1251StringEncoding
+C/econst/-/NSWindowsCP1252StringEncoding
+C/econst/-/NSWindowsCP1253StringEncoding
+C/econst/-/NSWindowsCP1254StringEncoding
+Objective-C/cat/-/NSWindowScripting
+C/data/-/NSWindowServerCommunicationException
+C/econst/-/NSWindowSharingNone
+C/econst/-/NSWindowSharingReadOnly
+C/econst/-/NSWindowSharingReadWrite
+C/tdef/-/NSWindowSharingType
+C/econst/-/NSWindowsNTOperatingSystem
+C/econst/-/NSWindowToolbarButton
+C/data/-/NSWindowWillBeginSheetNotification
+C/data/-/NSWindowWillCloseNotification
+C/data/-/NSWindowWillMiniaturizeNotification
+C/data/-/NSWindowWillMoveNotification
+C/data/-/NSWindowWillStartLiveResizeNotification
+C/econst/-/NSWindowZoomButton
+C/data/-/NSWordMLTextDocumentType
+C/data/-/NSWordTablesReadException
+C/data/-/NSWordTablesWriteException
+Objective-C/cl/-/NSWorkspace
+C/data/-/NSWorkspaceActiveSpaceDidChangeNotification
+C/data/-/NSWorkspaceApplicationKey
+C/data/-/NSWorkspaceCompressOperation
+C/data/-/NSWorkspaceCopyOperation
+C/data/-/NSWorkspaceDecompressOperation
+C/data/-/NSWorkspaceDecryptOperation
+C/data/-/NSWorkspaceDesktopImageAllowClippingKey
+C/data/-/NSWorkspaceDesktopImageFillColorKey
+C/data/-/NSWorkspaceDesktopImageScalingKey
+C/data/-/NSWorkspaceDestroyOperation
+C/data/-/NSWorkspaceDidActivateApplicationNotification
+C/data/-/NSWorkspaceDidChangeFileLabelsNotification
+C/data/-/NSWorkspaceDidDeactivateApplicationNotification
+C/data/-/NSWorkspaceDidHideApplicationNotification
+C/data/-/NSWorkspaceDidLaunchApplicationNotification
+C/data/-/NSWorkspaceDidMountNotification
+C/data/-/NSWorkspaceDidPerformFileOperationNotification
+C/data/-/NSWorkspaceDidRenameVolumeNotification
+C/data/-/NSWorkspaceDidTerminateApplicationNotification
+C/data/-/NSWorkspaceDidUnhideApplicationNotification
+C/data/-/NSWorkspaceDidUnmountNotification
+C/data/-/NSWorkspaceDidWakeNotification
+C/data/-/NSWorkspaceDuplicateOperation
+C/data/-/NSWorkspaceEncryptOperation
+C/tdef/-/NSWorkspaceIconCreationOptions
+C/econst/-/NSWorkspaceLaunchAllowingClassicStartup
+C/econst/-/NSWorkspaceLaunchAndHide
+C/econst/-/NSWorkspaceLaunchAndHideOthers
+C/econst/-/NSWorkspaceLaunchAndPrint
+C/econst/-/NSWorkspaceLaunchAsync
+C/data/-/NSWorkspaceLaunchConfigurationAppleEvent
+C/data/-/NSWorkspaceLaunchConfigurationArchitecture
+C/data/-/NSWorkspaceLaunchConfigurationArguments
+C/data/-/NSWorkspaceLaunchConfigurationEnvironment
+C/econst/-/NSWorkspaceLaunchDefault
+C/econst/-/NSWorkspaceLaunchInhibitingBackgroundOnly
+C/econst/-/NSWorkspaceLaunchNewInstance
+C/tdef/-/NSWorkspaceLaunchOptions
+C/econst/-/NSWorkspaceLaunchPreferringClassic
+C/econst/-/NSWorkspaceLaunchWithoutActivation
+C/econst/-/NSWorkspaceLaunchWithoutAddingToRecents
+C/data/-/NSWorkspaceLinkOperation
+C/data/-/NSWorkspaceMoveOperation
+C/data/-/NSWorkspaceRecycleOperation
+C/data/-/NSWorkspaceScreensDidSleepNotification
+C/data/-/NSWorkspaceScreensDidWakeNotification
+C/data/-/NSWorkspaceSessionDidBecomeActiveNotification
+C/data/-/NSWorkspaceSessionDidResignActiveNotification
+C/data/-/NSWorkspaceVolumeLocalizedNameKey
+C/data/-/NSWorkspaceVolumeOldLocalizedNameKey
+C/data/-/NSWorkspaceVolumeOldURLKey
+C/data/-/NSWorkspaceVolumeURLKey
+C/data/-/NSWorkspaceWillLaunchApplicationNotification
+C/data/-/NSWorkspaceWillPowerOffNotification
+C/data/-/NSWorkspaceWillSleepNotification
+C/data/-/NSWorkspaceWillUnmountNotification
+C/econst/-/NSWrapCalendarComponents
+C/tdef/-/NSWritingDirection
+C/data/-/NSWritingDirectionAttributeName
+C/econst/-/NSWritingDirectionLeftToRight
+C/econst/-/NSWritingDirectionNatural
+C/econst/-/NSWritingDirectionRightToLeft
+C/econst/-/NSXMLAttributeCDATAKind
+C/econst/-/NSXMLAttributeDeclarationKind
+C/econst/-/NSXMLAttributeEntitiesKind
+C/econst/-/NSXMLAttributeEntityKind
+C/econst/-/NSXMLAttributeEnumerationKind
+C/econst/-/NSXMLAttributeIDKind
+C/econst/-/NSXMLAttributeIDRefKind
+C/econst/-/NSXMLAttributeIDRefsKind
+C/econst/-/NSXMLAttributeKind
+C/econst/-/NSXMLAttributeNMTokenKind
+C/econst/-/NSXMLAttributeNMTokensKind
+C/econst/-/NSXMLAttributeNotationKind
+C/econst/-/NSXMLCommentKind
+Objective-C/cl/-/NSXMLDocument
+C/tdef/-/NSXMLDocumentContentKind
+C/econst/-/NSXMLDocumentHTMLKind
+C/econst/-/NSXMLDocumentIncludeContentTypeDeclaration
+C/econst/-/NSXMLDocumentKind
+C/econst/-/NSXMLDocumentTextKind
+C/econst/-/NSXMLDocumentTidyHTML
+C/econst/-/NSXMLDocumentTidyXML
+C/econst/-/NSXMLDocumentValidate
+C/econst/-/NSXMLDocumentXHTMLKind
+C/econst/-/NSXMLDocumentXInclude
+C/econst/-/NSXMLDocumentXMLKind
+Objective-C/cl/-/NSXMLDTD
+C/econst/-/NSXMLDTDKind
+Objective-C/cl/-/NSXMLDTDNode
+C/tdef/-/NSXMLDTDNodeKind
+Objective-C/cl/-/NSXMLElement
+C/econst/-/NSXMLElementDeclarationAnyKind
+C/econst/-/NSXMLElementDeclarationElementKind
+C/econst/-/NSXMLElementDeclarationEmptyKind
+C/econst/-/NSXMLElementDeclarationKind
+C/econst/-/NSXMLElementDeclarationMixedKind
+C/econst/-/NSXMLElementDeclarationUndefinedKind
+C/econst/-/NSXMLElementKind
+C/econst/-/NSXMLEntityDeclarationKind
+C/econst/-/NSXMLEntityGeneralKind
+C/econst/-/NSXMLEntityParameterKind
+C/econst/-/NSXMLEntityParsedKind
+C/econst/-/NSXMLEntityPredefined
+C/econst/-/NSXMLEntityUnparsedKind
+C/data/-/NSXMLExternalRecordType
+C/econst/-/NSXMLInvalidKind
+C/econst/-/NSXMLNamespaceKind
+Objective-C/cl/-/NSXMLNode
+C/econst/-/NSXMLNodeCompactEmptyElement
+C/econst/-/NSXMLNodeExpandEmptyElement
+C/econst/-/NSXMLNodeIsCDATA
+C/tdef/-/NSXMLNodeKind
+C/econst/-/NSXMLNodeOptionsNone
+C/econst/-/NSXMLNodePreserveAll
+C/econst/-/NSXMLNodePreserveAttributeOrder
+C/econst/-/NSXMLNodePreserveCDATA
+C/econst/-/NSXMLNodePreserveCharacterReferences
+C/econst/-/NSXMLNodePreserveDTD
+C/econst/-/NSXMLNodePreserveEmptyElements
+C/econst/-/NSXMLNodePreserveEntities
+C/econst/-/NSXMLNodePreserveNamespaceOrder
+C/econst/-/NSXMLNodePreservePrefixes
+C/econst/-/NSXMLNodePreserveQuotes
+C/econst/-/NSXMLNodePreserveWhitespace
+C/econst/-/NSXMLNodePrettyPrint
+C/econst/-/NSXMLNodeUseDoubleQuotes
+C/econst/-/NSXMLNodeUseSingleQuotes
+C/econst/-/NSXMLNotationDeclarationKind
+Objective-C/cl/-/NSXMLParser
+C/econst/-/NSXMLParserAttributeHasNoValueError
+C/econst/-/NSXMLParserAttributeListNotFinishedError
+C/econst/-/NSXMLParserAttributeListNotStartedError
+C/econst/-/NSXMLParserAttributeNotFinishedError
+C/econst/-/NSXMLParserAttributeNotStartedError
+C/econst/-/NSXMLParserAttributeRedefinedError
+C/econst/-/NSXMLParserCDATANotFinishedError
+C/econst/-/NSXMLParserCharacterRefAtEOFError
+C/econst/-/NSXMLParserCharacterRefInDTDError
+C/econst/-/NSXMLParserCharacterRefInEpilogError
+C/econst/-/NSXMLParserCharacterRefInPrologError
+C/econst/-/NSXMLParserCommentContainsDoubleHyphenError
+C/econst/-/NSXMLParserCommentNotFinishedError
+C/econst/-/NSXMLParserConditionalSectionNotFinishedError
+C/econst/-/NSXMLParserConditionalSectionNotStartedError
+Objective-C/intf/-/NSXMLParserDelegate
+C/econst/-/NSXMLParserDelegateAbortedParseError
+C/econst/-/NSXMLParserDOCTYPEDeclNotFinishedError
+C/econst/-/NSXMLParserDocumentStartError
+C/econst/-/NSXMLParserElementContentDeclNotFinishedError
+C/econst/-/NSXMLParserElementContentDeclNotStartedError
+C/econst/-/NSXMLParserEmptyDocumentError
+C/econst/-/NSXMLParserEncodingNotSupportedError
+C/econst/-/NSXMLParserEntityBoundaryError
+C/econst/-/NSXMLParserEntityIsExternalError
+C/econst/-/NSXMLParserEntityIsParameterError
+C/econst/-/NSXMLParserEntityNotFinishedError
+C/econst/-/NSXMLParserEntityNotStartedError
+C/econst/-/NSXMLParserEntityRefAtEOFError
+C/econst/-/NSXMLParserEntityReferenceMissingSemiError
+C/econst/-/NSXMLParserEntityReferenceWithoutNameError
+C/econst/-/NSXMLParserEntityRefInDTDError
+C/econst/-/NSXMLParserEntityRefInEpilogError
+C/econst/-/NSXMLParserEntityRefInPrologError
+C/econst/-/NSXMLParserEntityRefLoopError
+C/econst/-/NSXMLParserEntityValueRequiredError
+C/econst/-/NSXMLParserEqualExpectedError
+C/tdef/-/NSXMLParserError
+C/data/-/NSXMLParserErrorDomain
+C/econst/-/NSXMLParserExternalStandaloneEntityError
+C/econst/-/NSXMLParserExternalSubsetNotFinishedError
+C/econst/-/NSXMLParserExtraContentError
+C/econst/-/NSXMLParserGTRequiredError
+C/econst/-/NSXMLParserInternalError
+C/econst/-/NSXMLParserInvalidCharacterError
+C/econst/-/NSXMLParserInvalidCharacterInEntityError
+C/econst/-/NSXMLParserInvalidCharacterRefError
+C/econst/-/NSXMLParserInvalidConditionalSectionError
+C/econst/-/NSXMLParserInvalidDecimalCharacterRefError
+C/econst/-/NSXMLParserInvalidEncodingError
+C/econst/-/NSXMLParserInvalidEncodingNameError
+C/econst/-/NSXMLParserInvalidHexCharacterRefError
+C/econst/-/NSXMLParserInvalidURIError
+C/econst/-/NSXMLParserLessThanSymbolInAttributeError
+C/econst/-/NSXMLParserLiteralNotFinishedError
+C/econst/-/NSXMLParserLiteralNotStartedError
+C/econst/-/NSXMLParserLTRequiredError
+C/econst/-/NSXMLParserLTSlashRequiredError
+C/econst/-/NSXMLParserMisplacedCDATAEndStringError
+C/econst/-/NSXMLParserMisplacedXMLDeclarationError
+C/econst/-/NSXMLParserMixedContentDeclNotFinishedError
+C/econst/-/NSXMLParserMixedContentDeclNotStartedError
+C/econst/-/NSXMLParserNAMERequiredError
+C/econst/-/NSXMLParserNamespaceDeclarationError
+C/econst/-/NSXMLParserNMTOKENRequiredError
+C/econst/-/NSXMLParserNoDTDError
+C/econst/-/NSXMLParserNotationNotFinishedError
+C/econst/-/NSXMLParserNotationNotStartedError
+C/econst/-/NSXMLParserNotWellBalancedError
+C/econst/-/NSXMLParserOutOfMemoryError
+C/econst/-/NSXMLParserParsedEntityRefAtEOFError
+C/econst/-/NSXMLParserParsedEntityRefInEpilogError
+C/econst/-/NSXMLParserParsedEntityRefInInternalError
+C/econst/-/NSXMLParserParsedEntityRefInInternalSubsetError
+C/econst/-/NSXMLParserParsedEntityRefInPrologError
+C/econst/-/NSXMLParserParsedEntityRefMissingSemiError
+C/econst/-/NSXMLParserParsedEntityRefNoNameError
+C/econst/-/NSXMLParserPCDATARequiredError
+C/econst/-/NSXMLParserPrematureDocumentEndError
+C/econst/-/NSXMLParserProcessingInstructionNotFinishedError
+C/econst/-/NSXMLParserProcessingInstructionNotStartedError
+C/econst/-/NSXMLParserPublicIdentifierRequiredError
+C/econst/-/NSXMLParserSeparatorRequiredError
+C/econst/-/NSXMLParserSpaceRequiredError
+C/econst/-/NSXMLParserStandaloneValueError
+C/econst/-/NSXMLParserStringNotClosedError
+C/econst/-/NSXMLParserStringNotStartedError
+C/econst/-/NSXMLParserTagNameMismatchError
+C/econst/-/NSXMLParserUndeclaredEntityError
+C/econst/-/NSXMLParserUnfinishedTagError
+C/econst/-/NSXMLParserUnknownEncodingError
+C/econst/-/NSXMLParserUnparsedEntityError
+C/econst/-/NSXMLParserURIFragmentError
+C/econst/-/NSXMLParserURIRequiredError
+C/econst/-/NSXMLParserXMLDeclNotFinishedError
+C/econst/-/NSXMLParserXMLDeclNotStartedError
+C/econst/-/NSXMLProcessingInstructionKind
+C/data/-/NSXMLStoreType
+C/econst/-/NSXMLTextKind
+C/econst/-/NSYearCalendarUnit
+C/econst/-/NSYearMonthDatePickerElementFlag
+C/econst/-/NSYearMonthDayDatePickerElementFlag
+C/data/-/NSYearMonthWeekDesignations
+C/data/-/NSZeroPoint
+C/data/-/NSZeroRect
+C/data/-/NSZeroSize
+C/tdef/-/NSZone
+C/func/-/NSZoneCalloc
+C/func/-/NSZoneFree
+C/func/-/NSZoneFromPointer
+C/func/-/NSZoneMalloc
+C/func/-/NSZoneName
+C/func/-/NSZoneRealloc
+Objective-C/instm/CalRecurrenceRule/nthWeekDaysOfTheMonth
+Objective-C/instp/CalRecurrenceRule/nthWeekDaysOfTheMonth
+C/func/-/ntoa
+C/func/-/ntohl
+C/func/-/ntohs
+Objective-C/clm/NSNull/null
+Objective-C/clm/NSAppleEventDescriptor/nullDescriptor
+C++/clm/IOKernelDebugger/nullRxHandler
+C++/clm/IOKernelDebugger/nullTxHandler
+JavaScript/clconst/WebGLRenderingContext/NUM_COMPRESSED_TEXTURE_FORMATS
+JavaScript/clconst/WebGLRenderingContext/NUM_SHADER_BINARY_FORMATS
+Objective-C/instm/FxImage/numActiveChannels
+C++/data/IOAudioEngine/numActiveUserClients
+C/macro/-/NumAudioFileMarkersToNumBytes
+JavaScript/clconst/XPathResult/NUMBER_TYPE
+Objective-C/instm/NSNumberFormatter/numberFromString:
+Objective-C/instm/NSMethodSignature/numberOfArguments
+Objective-C/instm/IMAVManager/numberOfAudioChannels
+C++/instm/OSNumber/numberOfBits
+C++/instm/OSNumber/numberOfBytes
+JavaScript/data/ScriptProfileNode/numberOfCalls
+Objective-C/instm/PDFPage/numberOfCharacters
+Objective-C/instm/PDFOutline/numberOfChildren
+Objective-C/instm/NSColorSpace/numberOfColorComponents
+Objective-C/instm/NSGradient/numberOfColorStops
+Objective-C/instm/QCCompositionPickerView/numberOfColumns
+Objective-C/instm/NSTextTable/numberOfColumns
+Objective-C/instm/NSMatrix/numberOfColumns
+Objective-C/instm/IKImageBrowserView/numberOfColumns
+Objective-C/instm/NSTableView/numberOfColumns
+Objective-C/instm/CIColor/numberOfComponents
+Objective-C/instm/NSColor/numberOfComponents
+Objective-C/instm/NSFont/numberOfGlyphs
+Objective-C/instm/NSLayoutManager/numberOfGlyphs
+Objective-C/instm/NSObject/numberOfGroupsInImageBrowser:
+Objective-C/instm/NSAppleEventDescriptor/numberOfItems
+Objective-C/instm/NSPopUpButton/numberOfItems
+Objective-C/instm/NSPopUpButtonCell/numberOfItems
+Objective-C/instm/NSComboBox/numberOfItems
+Objective-C/instm/NSComboBoxCell/numberOfItems
+Objective-C/instm/NSMenu/numberOfItems
+JavaScript/data/SVGLengthList/numberOfItems
+JavaScript/data/SVGNumberList/numberOfItems
+JavaScript/data/SVGTransformList/numberOfItems
+JavaScript/data/SVGPointList/numberOfItems
+JavaScript/data/SVGStringList/numberOfItems
+JavaScript/data/SVGPathSegList/numberOfItems
+Objective-C/intfm/NSComboBoxDataSource/numberOfItemsInComboBox:
+Objective-C/intfm/NSComboBoxCellDataSource/numberOfItemsInComboBoxCell:
+Objective-C/instm/NSObject/numberOfItemsInImageBrowser:
+Objective-C/intfm/NSMenuDelegate/numberOfItemsInMenu:
+Objective-C/instm/NSLevelIndicator/numberOfMajorTickMarks
+Objective-C/instm/NSLevelIndicatorCell/numberOfMajorTickMarks
+Objective-C/instm/NSBitmapImageRep/numberOfPlanes
+Objective-C/intfm/QLPreviewPanelDataSource/numberOfPreviewItemsInPreviewPanel
+Objective-C/instm/QCCompositionPickerView/numberOfRows
+Objective-C/instm/NSMatrix/numberOfRows
+Objective-C/instm/IKImageBrowserView/numberOfRows
+Objective-C/instm/NSRuleEditor/numberOfRows
+Objective-C/instm/NSTableView/numberOfRows
+Objective-C/intfm/NSTableViewDataSource/numberOfRowsInTableView:
+Objective-C/instm/QTSampleBuffer/numberOfSamples
+Objective-C/instm/NSTableView/numberOfSelectedColumns
+Objective-C/instm/NSTableView/numberOfSelectedRows
+Objective-C/intfm/IKSlideshowDataSource/numberOfSlideshowItems
+Objective-C/instm/NSTabView/numberOfTabViewItems
+Objective-C/instm/NSSliderCell/numberOfTickMarks
+Objective-C/instm/NSSlider/numberOfTickMarks
+Objective-C/instm/NSLevelIndicator/numberOfTickMarks
+Objective-C/instm/NSLevelIndicatorCell/numberOfTickMarks
+Objective-C/instm/NSOpenGLPixelFormat/numberOfVirtualScreens
+Objective-C/instm/NSBrowser/numberOfVisibleColumns
+Objective-C/instm/NSComboBox/numberOfVisibleItems
+Objective-C/instm/NSComboBoxCell/numberOfVisibleItems
+Objective-C/instm/NSNumberFormatter/numberStyle
+JavaScript/data/XPathResult/numberValue
+Objective-C/clm/NSNumber/numberWithBool:
+Objective-C/clm/NSNumber/numberWithChar:
+Objective-C/clm/NSNumber/numberWithDouble:
+Objective-C/clm/NSNumber/numberWithFloat:
+Objective-C/clm/NSNumber/numberWithInt:
+Objective-C/clm/NSNumber/numberWithInteger:
+Objective-C/clm/NSNumber/numberWithLong:
+Objective-C/clm/NSNumber/numberWithLongLong:
+Objective-C/clm/NSNumber/numberWithShort:
+Objective-C/clm/NSNumber/numberWithUnsignedChar:
+Objective-C/clm/NSNumber/numberWithUnsignedInt:
+Objective-C/clm/NSNumber/numberWithUnsignedInteger:
+Objective-C/clm/NSNumber/numberWithUnsignedLong:
+Objective-C/clm/NSNumber/numberWithUnsignedLongLong:
+Objective-C/clm/NSNumber/numberWithUnsignedShort:
+C/macro/-/NumBytesToNumAudioFileMarkers
+C++/data/IOAudioEngine/numErasesPerBuffer
+JavaScript/data/SVGFETurbulenceElement/numOctaves
+C++/data/IOAudioDevice/numRunningAudioEngines
+C++/data/IOAudioEngine/numSampleFramesPerBuffer
+C/func/-/NXCombineCpuSubtypes
+C/func/-/NXFindBestFatArch
+C/func/-/NXGetAllArchInfos
+C/func/-/NXGetArchInfoFromCpuType
+C/func/-/NXGetArchInfoFromName
+C/func/-/NXGetLocalArchInfo
+Objective-C/instm/OBEXSession/OBEXAbort:optionalHeadersLength:eventSelector:selectorTarget:refCon:
+C/tdef/-/OBEXAbortCommandData
+C/tag/-/OBEXAbortCommandData
+C/tag/-/OBEXAbortCommandResponseData
+C/tdef/-/OBEXAbortCommandResponseData
+Objective-C/instm/OBEXSession/OBEXAbortResponse:optionalHeaders:optionalHeadersLength:eventSelector:selectorTarget:refCon:
+C/func/-/OBEXAddApplicationParameterHeader
+C/func/-/OBEXAddAuthorizationChallengeHeader
+C/func/-/OBEXAddAuthorizationResponseHeader
+C/func/-/OBEXAddBodyHeader
+C/func/-/OBEXAddByteSequenceHeader
+C/func/-/OBEXAddConnectionIDHeader
+C/func/-/OBEXAddCountHeader
+C/func/-/OBEXAddDescriptionHeader
+C/func/-/OBEXAddHTTPHeader
+C/func/-/OBEXAddLengthHeader
+C/func/-/OBEXAddNameHeader
+C/func/-/OBEXAddObjectClassHeader
+C/func/-/OBEXAddTargetHeader
+C/func/-/OBEXAddTime4ByteHeader
+C/func/-/OBEXAddTimeISOHeader
+C/func/-/OBEXAddTypeHeader
+C/func/-/OBEXAddUserDefinedHeader
+C/func/-/OBEXAddWhoHeader
+Objective-C/instm/OBEXSession/OBEXConnect:maxPacketLength:optionalHeaders:optionalHeadersLength:eventSelector:selectorTarget:refCon:
+C/tdef/-/OBEXConnectCommandData
+C/tag/-/OBEXConnectCommandData
+C/tdef/-/OBEXConnectCommandResponseData
+C/tag/-/OBEXConnectCommandResponseData
+C/tag/-/OBEXConnectFlagValues
+Objective-C/instm/OBEXSession/OBEXConnectResponse:flags:maxPacketLength:optionalHeaders:optionalHeadersLength:eventSelector:selectorTarget:refCon:
+C/func/-/OBEXCreateVCard
+C/func/-/OBEXCreateVEvent
+Objective-C/instm/OBEXSession/OBEXDisconnect:optionalHeadersLength:eventSelector:selectorTarget:refCon:
+C/tdef/-/OBEXDisconnectCommandData
+C/tag/-/OBEXDisconnectCommandData
+C/tdef/-/OBEXDisconnectCommandResponseData
+C/tag/-/OBEXDisconnectCommandResponseData
+Objective-C/instm/OBEXSession/OBEXDisconnectResponse:optionalHeaders:optionalHeadersLength:eventSelector:selectorTarget:refCon:
+C/tdef/-/OBEXError
+C/tag/-/OBEXErrorCodes
+C/tag/-/OBEXErrorData
+C/tdef/-/OBEXErrorData
+C/tdef/-/OBEXFileTransferServicesRef
+Objective-C/instm/OBEXSession/OBEXGet:headers:headersLength:eventSelector:selectorTarget:refCon:
+C/tdef/-/OBEXGetCommandData
+C/tag/-/OBEXGetCommandData
+C/tdef/-/OBEXGetCommandResponseData
+C/tag/-/OBEXGetCommandResponseData
+C/func/-/OBEXGetHeaders
+Objective-C/instm/OBEXSession/OBEXGetResponse:optionalHeaders:optionalHeadersLength:eventSelector:selectorTarget:refCon:
+C/tag/-/OBEXHeaderIdentifiers
+C/func/-/OBEXHeadersToBytes
+C/tag/-/OBEXNonceFlagValues
+C/tag/-/OBEXOpCodeCommandValues
+C/tag/-/OBEXOpCodeResponseValues
+C/tag/-/OBEXOpCodeSessionValues
+Objective-C/instm/OBEXSession/OBEXPut:headersData:headersDataLength:bodyData:bodyDataLength:eventSelector:selectorTarget:refCon:
+C/tag/-/OBEXPutCommandData
+C/tdef/-/OBEXPutCommandData
+C/tdef/-/OBEXPutCommandResponseData
+C/tag/-/OBEXPutCommandResponseData
+C/tag/-/OBEXPutFlagValues
+Objective-C/instm/OBEXSession/OBEXPutResponse:optionalHeaders:optionalHeadersLength:eventSelector:selectorTarget:refCon:
+C/tag/-/OBEXRealmValues
+Objective-C/cl/-/OBEXSession
+C/func/-/OBEXSessionAbort
+C/func/-/OBEXSessionAbortResponse
+C/func/-/OBEXSessionConnect
+C/func/-/OBEXSessionConnectResponse
+C/func/-/OBEXSessionDelete
+C/func/-/OBEXSessionDisconnect
+C/func/-/OBEXSessionDisconnectResponse
+C/tag/-/OBEXSessionEvent
+C/tdef/-/OBEXSessionEvent
+C/tag/-/OBEXSessionEventTypes
+C/func/-/OBEXSessionGet
+C/func/-/OBEXSessionGetAvailableCommandPayloadLength
+C/func/-/OBEXSessionGetAvailableCommandResponsePayloadLength
+C/func/-/OBEXSessionGetMaxPacketLength
+C/func/-/OBEXSessionGetResponse
+C/func/-/OBEXSessionHasOpenOBEXConnection
+C/tag/-/OBEXSessionParameterTags
+C/func/-/OBEXSessionPut
+C/func/-/OBEXSessionPutResponse
+C/func/-/OBEXSessionSetPath
+C/func/-/OBEXSessionSetPathResponse
+C/func/-/OBEXSessionSetServerCallback
+Objective-C/instm/OBEXSession/OBEXSetPath:constants:optionalHeaders:optionalHeadersLength:eventSelector:selectorTarget:refCon:
+C/tag/-/OBEXSetPathCommandData
+C/tdef/-/OBEXSetPathCommandData
+C/tag/-/OBEXSetPathCommandResponseData
+C/tdef/-/OBEXSetPathCommandResponseData
+Objective-C/instm/OBEXSession/OBEXSetPathResponse:optionalHeaders:optionalHeadersLength:eventSelector:selectorTarget:refCon:
+Objective-C/tdef/OBEXSession/OBEXTransportEvent
+Objective-C/tdef/OBEXSession/OBEXTransportEventType
+C/tag/-/OBEXVersions
+C/func/-/OBJ_cleanup
+C/func/-/OBJ_cmp
+C/func/-/OBJ_create
+C/func/-/OBJ_dup
+C/func/-/OBJ_ln2nid
+C/func/-/OBJ_nid2ln
+C/func/-/OBJ_nid2obj
+C/func/-/OBJ_nid2sn
+C/func/-/OBJ_obj2nid
+C/func/-/OBJ_obj2txt
+C/func/-/OBJ_sn2nid
+C/func/-/OBJ_txt2nid
+C/func/-/OBJ_txt2obj
+C/func/-/objc_allocateClassPair
+C/econst/-/OBJC_ASSOCIATION_ASSIGN
+C/econst/-/OBJC_ASSOCIATION_COPY
+C/econst/-/OBJC_ASSOCIATION_COPY_NONATOMIC
+C/econst/-/OBJC_ASSOCIATION_RETAIN
+C/econst/-/OBJC_ASSOCIATION_RETAIN_NONATOMIC
+C/tdef/-/objc_AssociationPolicy
+C/tag/-/objc_cache
+C/func/-/objc_copyProtocolList
+C/func/-/objc_duplicateClass
+C/func/-/objc_getAssociatedObject
+C/func/-/objc_getClass
+C/func/-/objc_getClassList
+C/func/-/objc_getFutureClass
+C/func/-/objc_getMetaClass
+C/func/-/objc_getProtocol
+C/func/-/objc_getRequiredClass
+C/func/-/objc_lookUpClass
+C/tag/-/objc_method_list
+C/func/-/objc_msgSend
+C/func/-/objc_msgSend_fpret
+C/func/-/objc_msgSend_stret
+C/func/-/objc_msgSendSuper
+C/func/-/objc_msgSendSuper_stret
+C/tag/-/objc_object
+C/tdef/-/objc_property_t
+C/tag/-/objc_protocol_list
+C/func/-/objc_registerClassPair
+C/func/-/objc_removeAssociatedObjects
+C/func/-/objc_setAssociatedObject
+C/func/-/objc_setFutureClass
+C/tag/-/objc_super
+Objective-C/instm/NSDecimalNumber/objCType
+Objective-C/instm/NSValue/objCType
+Objective-C/instm/NSNumber/objCType
+Objective-C/instm/NSNotification/object
+JavaScript/data/HTMLAppletElement/object
+C/func/-/object_copy
+C/func/-/object_dispose
+C/func/-/object_getClass
+C/func/-/object_getClassName
+C/func/-/object_getIndexedIvars
+C/func/-/object_getInstanceVariable
+C/func/-/object_getIvar
+C/func/-/object_setClass
+C/func/-/object_setInstanceVariable
+C/func/-/object_setIvar
+Objective-C/instm/NSArray/objectAtIndex:
+Objective-C/instm/SBElementArray/objectAtLocation:
+Objective-C/instm/NSScriptExecutionContext/objectBeingTested
+Objective-C/instm/NSXMLDocument/objectByApplyingXSLT:arguments:error:
+Objective-C/instm/NSXMLDocument/objectByApplyingXSLTAtURL:arguments:error:
+Objective-C/instm/NSXMLDocument/objectByApplyingXSLTString:arguments:error:
+Objective-C/instm/NSObjectController/objectClass
+Objective-C/instm/IKFilterUIView/objectController
+Objective-C/instm/NSController/objectDidBeginEditing:
+Objective-C/instm/NSObject/objectDidBeginEditing:
+Objective-C/instm/NSController/objectDidEndEditing:
+Objective-C/instm/NSObject/objectDidEndEditing:
+Objective-C/instm/NSHashTable/objectEnumerator
+Objective-C/instm/NSCountedSet/objectEnumerator
+Objective-C/instm/NSSet/objectEnumerator
+Objective-C/instm/NSMapTable/objectEnumerator
+Objective-C/instm/NSDictionary/objectEnumerator
+Objective-C/instm/NSArray/objectEnumerator
+Objective-C/instm/NSBundle/objectForInfoDictionaryKey:
+Objective-C/instm/ISyncClient/objectForKey:
+Objective-C/instm/NSDictionary/objectForKey:
+Objective-C/instm/NSMapTable/objectForKey:
+Objective-C/instm/NSLocale/objectForKey:
+Objective-C/instm/NSFontDescriptor/objectForKey:
+Objective-C/instm/NSUserDefaults/objectForKey:
+Objective-C/instm/NSCache/objectForKey:
+Objective-C/instm/DRCDTextBlock/objectForKey:ofTrack:
+Objective-C/instm/NSSpeechSynthesizer/objectForProperty:error:
+Objective-C/instm/NSObject/objectForWebScript
+Objective-C/instm/NSAtomicStoreCacheNode/objectID
+Objective-C/instm/NSManagedObject/objectID
+Objective-C/instm/NSAtomicStore/objectIDForEntity:referenceObject:
+Objective-C/instm/NSUserDefaults/objectIsForcedForKey:
+Objective-C/instm/NSUserDefaults/objectIsForcedForKey:inDomain:
+Objective-C/instm/NSManagedObjectContext/objectRegisteredForID:
+Objective-C/instm/IBDocument/objects
+Objective-C/instm/NSArray/objectsAtIndexes:
+Objective-C/instm/NSScriptObjectSpecifier/objectsByEvaluatingSpecifier
+Objective-C/instm/NSScriptObjectSpecifier/objectsByEvaluatingWithContainers:
+Objective-C/instm/NSDictionary/objectsForKeys:notFoundMarker:
+Objective-C/instm/NSXMLNode/objectsForXQuery:constants:error:
+Objective-C/instm/NSXMLNode/objectsForXQuery:error:
+Objective-C/instm/NSSet/objectsPassingTest:
+Objective-C/instm/NSPositionalSpecifier/objectSpecifier
+Objective-C/instm/NSDocument/objectSpecifier
+Objective-C/instm/NSObject/objectSpecifier
+Objective-C/clm/NSScriptObjectSpecifier/objectSpecifierWithDescriptor:
+Objective-C/instm/NSSet/objectsWithOptions:passingTest:
+Objective-C/instm/NSPopUpButtonCell/objectValue
+Objective-C/instm/NSPopUpButton/objectValue
+Objective-C/instm/NSControl/objectValue
+Objective-C/instm/NSXMLNode/objectValue
+Objective-C/instm/NSCell/objectValue
+Objective-C/instm/NSComboBox/objectValueOfSelectedItem
+Objective-C/instm/NSComboBoxCell/objectValueOfSelectedItem
+Objective-C/instm/NSComboBox/objectValues
+Objective-C/instm/NSComboBoxCell/objectValues
+Objective-C/instm/SBElementArray/objectWithID:
+Objective-C/instm/NSManagedObjectContext/objectWithID:
+Objective-C/instm/SBElementArray/objectWithName:
+Objective-C/instm/NSUnarchiver/objectZone
+Objective-C/instm/NSCoder/objectZone
+JavaScript/instm/TestObj/objMethod
+JavaScript/instm/TestObj/objMethodWithArgs
+C/tdef/-/ObjParam
+Objective-C/instm/NSObject/observationInfo
+Objective-C/instm/NSManagedObject/observationInfo
+Objective-C/instm/NSObject/observeValueForKeyPath:ofObject:change:context:
+JavaScript/clconst/DOMApplicationCache/OBSOLETE
+Objective-C/instm/NSManagedObjectContext/obtainPermanentIDsForObjects:error:
+Objective-C/instm/SFAuthorization/obtainWithRight:flags:error:
+Objective-C/instm/SFAuthorization/obtainWithRights:flags:environment:authorizedRights:error:
+Objective-C/instp/CalEvent/occurrence
+Objective-C/instm/CalEvent/occurrence
+Objective-C/instm/CalRecurrenceEnd/occurrenceCount
+Objective-C/instp/CalRecurrenceEnd/occurrenceCount
+C/tdef/-/ODAttributeType
+C/tdef/-/ODAuthenticationType
+C/func/-/ODContextGetTypeID
+C/tdef/-/ODFrameworkErrors
+C/tdef/-/ODMatchType
+Objective-C/cl/-/ODNode
+C/func/-/ODNodeCopyDetails
+C/func/-/ODNodeCopyRecord
+C/func/-/ODNodeCopySubnodeNames
+C/func/-/ODNodeCopySupportedAttributes
+C/func/-/ODNodeCopySupportedRecordTypes
+C/func/-/ODNodeCopyUnreachableSubnodeNames
+C/func/-/ODNodeCreateCopy
+C/func/-/ODNodeCreateRecord
+C/func/-/ODNodeCreateWithName
+C/func/-/ODNodeCreateWithNodeType
+C/func/-/ODNodeCustomCall
+C/func/-/ODNodeGetName
+C/func/-/ODNodeGetTypeID
+C/func/-/ODNodeSetCredentials
+C/func/-/ODNodeSetCredentialsExtended
+C/func/-/ODNodeSetCredentialsUsingKerberosCache
+C/tdef/-/ODNodeType
+Objective-C/cl/-/ODQuery
+C/tag/-/ODQueryCallback
+C/func/-/ODQueryCopyResults
+C/func/-/ODQueryCreateWithNode
+C/func/-/ODQueryCreateWithNodeType
+Objective-C/cat/-/ODQueryDelegate
+C/func/-/ODQueryGetTypeID
+C/func/-/ODQueryScheduleWithRunLoop
+C/func/-/ODQuerySetCallback
+C/func/-/ODQuerySetDispatchQueue
+C/func/-/ODQuerySynchronize
+C/func/-/ODQueryUnscheduleFromRunLoop
+Objective-C/cl/-/ODRecord
+C/func/-/ODRecordAddMember
+C/func/-/ODRecordAddValue
+C/func/-/ODRecordChangePassword
+C/func/-/ODRecordContainsMember
+C/func/-/ODRecordCopyDetails
+C/func/-/ODRecordCopyPasswordPolicy
+C/func/-/ODRecordCopyValues
+C/func/-/ODRecordDelete
+C/func/-/ODRecordGetRecordName
+C/func/-/ODRecordGetRecordType
+C/func/-/ODRecordGetTypeID
+C/func/-/ODRecordRemoveMember
+C/func/-/ODRecordRemoveValue
+C/func/-/ODRecordSetNodeCredentials
+C/func/-/ODRecordSetNodeCredentialsExtended
+C/func/-/ODRecordSetNodeCredentialsUsingKerberosCache
+C/func/-/ODRecordSetValue
+C/func/-/ODRecordSynchronize
+C/tdef/-/ODRecordType
+C/func/-/ODRecordVerifyPassword
+C/func/-/ODRecordVerifyPasswordExtended
+Objective-C/cl/-/ODSession
+C/func/-/ODSessionCopyNodeNames
+C/func/-/ODSessionCreate
+C/func/-/ODSessionGetTypeID
+C/data/-/ODSessionProxyAddress
+C/data/-/ODSessionProxyPassword
+C/data/-/ODSessionProxyPort
+C/data/-/ODSessionProxyUsername
+JavaScript/data/DOMWindow/offscreenBuffering
+Objective-C/instm/CAConstraint/offset
+Objective-C/instp/CAConstraint/offset
+JavaScript/data/SVGComponentTransferFunctionElement/offset
+JavaScript/data/SVGStopElement/offset
+JavaScript/data/Element/offsetHeight
+Objective-C/instm/NSFileHandle/offsetInFile
+JavaScript/data/Element/offsetLeft
+JavaScript/data/Element/offsetParent
+JavaScript/data/Element/offsetTop
+JavaScript/data/Element/offsetWidth
+JavaScript/data/MouseEvent/offsetX
+JavaScript/data/WheelEvent/offsetX
+JavaScript/data/MouseEvent/offsetY
+JavaScript/data/WheelEvent/offsetY
+Objective-C/instm/NSMenuItem/offStateImage
+Objective-C/binding/NSMenuItem/offStateImage
+Objective-C/binding/NSPopUpButtonCell/offStateImage
+Objective-C/instm/NSSavePanel/ok:
+Objective-C/instm/DRSetupPanel/ok:
+JavaScript/data/StorageEvent/oldValue
+JavaScript/data/Document/onabort
+JavaScript/data/DOMWindow/onabort
+JavaScript/data/FileReader/onabort
+JavaScript/data/Element/onabort
+JavaScript/data/svg/onabort
+JavaScript/data/XMLHttpRequestUpload/onabort
+JavaScript/data/XMLHttpRequest/onabort
+JavaScript/data/Document/onbeforecopy
+JavaScript/data/Element/onbeforecopy
+JavaScript/data/svg/onbeforecopy
+JavaScript/data/Document/onbeforecut
+JavaScript/data/Element/onbeforecut
+JavaScript/data/svg/onbeforecut
+JavaScript/data/Document/onbeforepaste
+JavaScript/data/Element/onbeforepaste
+JavaScript/data/svg/onbeforepaste
+JavaScript/data/DOMWindow/onbeforeunload
+JavaScript/data/HTMLBodyElement/onbeforeunload
+JavaScript/data/HTMLFrameSetElement/onbeforeunload
+JavaScript/data/Document/onblur
+JavaScript/data/DOMWindow/onblur
+JavaScript/data/Element/onblur
+JavaScript/data/HTMLFrameSetElement/onblur
+JavaScript/data/HTMLBodyElement/onblur
+JavaScript/data/svg/onblur
+JavaScript/data/DOMApplicationCache/oncached
+JavaScript/data/DOMWindow/oncanplay
+JavaScript/data/DOMWindow/oncanplaythrough
+JavaScript/data/DOMWindow/onchange
+JavaScript/data/Document/onchange
+JavaScript/data/Element/onchange
+JavaScript/data/svg/onchange
+JavaScript/data/DOMApplicationCache/onchecking
+JavaScript/data/DOMWindow/onclick
+JavaScript/data/Document/onclick
+JavaScript/data/Element/onclick
+JavaScript/data/svg/onclick
+JavaScript/data/Notification/onclose
+JavaScript/data/WebSocket/onclose
+JavaScript/data/SharedWorkerContext/onconnect
+JavaScript/data/Document/oncontextmenu
+JavaScript/data/DOMWindow/oncontextmenu
+JavaScript/data/Element/oncontextmenu
+JavaScript/data/svg/oncontextmenu
+JavaScript/data/Document/oncopy
+JavaScript/data/Element/oncopy
+JavaScript/data/svg/oncopy
+JavaScript/data/Document/oncut
+JavaScript/data/Element/oncut
+JavaScript/data/svg/oncut
+JavaScript/data/Document/ondblclick
+JavaScript/data/DOMWindow/ondblclick
+JavaScript/data/Element/ondblclick
+JavaScript/data/svg/ondblclick
+JavaScript/data/Notification/ondisplay
+JavaScript/data/DOMApplicationCache/ondownloading
+JavaScript/data/DOMWindow/ondrag
+JavaScript/data/Document/ondrag
+JavaScript/data/Element/ondrag
+JavaScript/data/svg/ondrag
+JavaScript/data/Document/ondragend
+JavaScript/data/DOMWindow/ondragend
+JavaScript/data/Element/ondragend
+JavaScript/data/svg/ondragend
+JavaScript/data/Document/ondragenter
+JavaScript/data/DOMWindow/ondragenter
+JavaScript/data/Element/ondragenter
+JavaScript/data/svg/ondragenter
+JavaScript/data/DOMWindow/ondragleave
+JavaScript/data/Document/ondragleave
+JavaScript/data/Element/ondragleave
+JavaScript/data/svg/ondragleave
+JavaScript/data/DOMWindow/ondragover
+JavaScript/data/Document/ondragover
+JavaScript/data/Element/ondragover
+JavaScript/data/svg/ondragover
+JavaScript/data/Document/ondragstart
+JavaScript/data/DOMWindow/ondragstart
+JavaScript/data/Element/ondragstart
+JavaScript/data/svg/ondragstart
+JavaScript/data/DOMWindow/ondrop
+JavaScript/data/Document/ondrop
+JavaScript/data/Element/ondrop
+JavaScript/data/svg/ondrop
+JavaScript/data/DOMWindow/ondurationchange
+Objective-C/clm/NSDecimalNumber/one
+JavaScript/clconst/WebGLRenderingContext/ONE
+JavaScript/clconst/WebGLRenderingContext/ONE_MINUS_CONSTANT_ALPHA
+JavaScript/clconst/WebGLRenderingContext/ONE_MINUS_CONSTANT_COLOR
+JavaScript/clconst/WebGLRenderingContext/ONE_MINUS_DST_ALPHA
+JavaScript/clconst/WebGLRenderingContext/ONE_MINUS_DST_COLOR
+JavaScript/clconst/WebGLRenderingContext/ONE_MINUS_SRC_ALPHA
+JavaScript/clconst/WebGLRenderingContext/ONE_MINUS_SRC_COLOR
+JavaScript/data/DOMWindow/onemptied
+JavaScript/data/DOMWindow/onended
+JavaScript/data/DOMApplicationCache/onerror
+JavaScript/data/Document/onerror
+JavaScript/data/AbstractWorker/onerror
+JavaScript/data/DOMWindow/onerror
+JavaScript/data/HTMLFrameSetElement/onerror
+JavaScript/data/EventSource/onerror
+JavaScript/data/Element/onerror
+JavaScript/data/IDBRequest/onerror
+JavaScript/data/FileReader/onerror
+JavaScript/data/HTMLBodyElement/onerror
+JavaScript/data/svg/onerror
+JavaScript/data/Notification/onerror
+JavaScript/data/XMLHttpRequestUpload/onerror
+JavaScript/data/WebSocket/onerror
+JavaScript/data/WorkerContext/onerror
+JavaScript/data/XMLHttpRequest/onerror
+JavaScript/data/DOMWindow/onfocus
+JavaScript/data/Document/onfocus
+JavaScript/data/Element/onfocus
+JavaScript/data/HTMLBodyElement/onfocus
+JavaScript/data/HTMLFrameSetElement/onfocus
+JavaScript/data/svg/onfocus
+JavaScript/data/DOMWindow/onhashchange
+JavaScript/data/HTMLFrameSetElement/onhashchange
+JavaScript/data/HTMLBodyElement/onhashchange
+JavaScript/data/Document/oninput
+JavaScript/data/DOMWindow/oninput
+JavaScript/data/Element/oninput
+JavaScript/data/svg/oninput
+JavaScript/data/DOMWindow/oninvalid
+JavaScript/data/Document/oninvalid
+JavaScript/data/Element/oninvalid
+JavaScript/data/Document/onkeydown
+JavaScript/data/DOMWindow/onkeydown
+JavaScript/data/Element/onkeydown
+JavaScript/data/svg/onkeydown
+JavaScript/data/Document/onkeypress
+JavaScript/data/DOMWindow/onkeypress
+JavaScript/data/Element/onkeypress
+JavaScript/data/svg/onkeypress
+JavaScript/data/DOMWindow/onkeyup
+JavaScript/data/Document/onkeyup
+JavaScript/data/Element/onkeyup
+JavaScript/data/svg/onkeyup
+JavaScript/data/Navigator/onLine
+JavaScript/data/WorkerNavigator/onLine
+JavaScript/data/Document/onload
+JavaScript/data/DOMWindow/onload
+JavaScript/data/Element/onload
+JavaScript/data/FileReader/onload
+JavaScript/data/HTMLFrameSetElement/onload
+JavaScript/data/HTMLBodyElement/onload
+JavaScript/data/svg/onload
+JavaScript/data/XMLHttpRequest/onload
+JavaScript/data/XMLHttpRequestUpload/onload
+JavaScript/data/DOMWindow/onloadeddata
+JavaScript/data/DOMWindow/onloadedmetadata
+JavaScript/data/FileReader/onloadend
+JavaScript/data/DOMWindow/onloadstart
+JavaScript/data/FileReader/onloadstart
+JavaScript/data/XMLHttpRequestUpload/onloadstart
+JavaScript/data/XMLHttpRequest/onloadstart
+JavaScript/data/DedicatedWorkerContext/onmessage
+JavaScript/data/DOMWindow/onmessage
+JavaScript/data/HTMLFrameSetElement/onmessage
+JavaScript/data/EventSource/onmessage
+JavaScript/data/HTMLBodyElement/onmessage
+JavaScript/data/MessagePort/onmessage
+JavaScript/data/WebSocket/onmessage
+JavaScript/data/Worker/onmessage
+JavaScript/data/DOMWindow/onmousedown
+JavaScript/data/Document/onmousedown
+JavaScript/data/Element/onmousedown
+JavaScript/data/svg/onmousedown
+JavaScript/data/Document/onmousemove
+JavaScript/data/DOMWindow/onmousemove
+JavaScript/data/Element/onmousemove
+JavaScript/data/svg/onmousemove
+JavaScript/data/DOMWindow/onmouseout
+JavaScript/data/Document/onmouseout
+JavaScript/data/Element/onmouseout
+JavaScript/data/svg/onmouseout
+JavaScript/data/Document/onmouseover
+JavaScript/data/DOMWindow/onmouseover
+JavaScript/data/Element/onmouseover
+JavaScript/data/svg/onmouseover
+JavaScript/data/Document/onmouseup
+JavaScript/data/DOMWindow/onmouseup
+JavaScript/data/Element/onmouseup
+JavaScript/data/svg/onmouseup
+JavaScript/data/DOMWindow/onmousewheel
+JavaScript/data/Document/onmousewheel
+JavaScript/data/Element/onmousewheel
+JavaScript/data/svg/onmousewheel
+JavaScript/data/DOMApplicationCache/onnoupdate
+JavaScript/data/DOMApplicationCache/onobsolete
+JavaScript/data/DOMWindow/onoffline
+JavaScript/data/HTMLFrameSetElement/onoffline
+JavaScript/data/HTMLBodyElement/onoffline
+JavaScript/data/DOMWindow/ononline
+JavaScript/data/HTMLFrameSetElement/ononline
+JavaScript/data/HTMLBodyElement/ononline
+JavaScript/data/EventSource/onopen
+JavaScript/data/WebSocket/onopen
+JavaScript/data/DOMWindow/onorientationchange
+JavaScript/data/HTMLFrameSetElement/onorientationchange
+JavaScript/data/HTMLBodyElement/onorientationchange
+JavaScript/data/DOMWindow/onpagehide
+JavaScript/data/DOMWindow/onpageshow
+JavaScript/data/Document/onpaste
+JavaScript/data/Element/onpaste
+JavaScript/data/svg/onpaste
+JavaScript/data/DOMWindow/onpause
+JavaScript/data/DOMWindow/onplay
+JavaScript/data/DOMWindow/onplaying
+JavaScript/data/DOMWindow/onpopstate
+JavaScript/data/HTMLFrameSetElement/onpopstate
+JavaScript/data/HTMLBodyElement/onpopstate
+JavaScript/data/DOMApplicationCache/onprogress
+JavaScript/data/DOMWindow/onprogress
+JavaScript/data/FileReader/onprogress
+JavaScript/data/XMLHttpRequest/onprogress
+JavaScript/data/XMLHttpRequestUpload/onprogress
+JavaScript/data/DOMWindow/onratechange
+JavaScript/data/XMLHttpRequest/onreadystatechange
+JavaScript/data/DOMWindow/onreset
+JavaScript/data/Document/onreset
+JavaScript/data/Element/onreset
+JavaScript/data/svg/onreset
+JavaScript/data/DOMWindow/onresize
+JavaScript/data/HTMLBodyElement/onresize
+JavaScript/data/HTMLFrameSetElement/onresize
+JavaScript/data/svg/onresize
+JavaScript/data/DOMWindow/onscroll
+JavaScript/data/Document/onscroll
+JavaScript/data/Element/onscroll
+JavaScript/data/svg/onscroll
+JavaScript/data/Document/onsearch
+JavaScript/data/DOMWindow/onsearch
+JavaScript/data/Element/onsearch
+JavaScript/data/svg/onsearch
+JavaScript/data/DOMWindow/onseeked
+JavaScript/data/DOMWindow/onseeking
+JavaScript/data/DOMWindow/onselect
+JavaScript/data/Document/onselect
+JavaScript/data/Element/onselect
+JavaScript/data/svg/onselect
+JavaScript/data/Document/onselectstart
+JavaScript/data/Element/onselectstart
+JavaScript/data/svg/onselectstart
+JavaScript/data/DOMWindow/onstalled
+Objective-C/instm/NSMenuItem/onStateImage
+Objective-C/binding/NSMenuItem/onStateImage
+Objective-C/binding/NSPopUpButtonCell/onStateImage
+Objective-C/instm/PDFAnnotationButtonWidget/onStateValue
+JavaScript/data/DOMWindow/onstorage
+JavaScript/data/HTMLFrameSetElement/onstorage
+JavaScript/data/HTMLBodyElement/onstorage
+JavaScript/data/Document/onsubmit
+JavaScript/data/DOMWindow/onsubmit
+JavaScript/data/Element/onsubmit
+JavaScript/data/svg/onsubmit
+JavaScript/data/IDBRequest/onsuccess
+JavaScript/data/DOMWindow/onsuspend
+C++/instm/IOEventSource/onThread
+C++/instm/IOWorkLoop/onThread
+JavaScript/data/DOMWindow/ontimeupdate
+JavaScript/data/Document/ontouchcancel
+JavaScript/data/DOMWindow/ontouchcancel
+JavaScript/data/Element/ontouchcancel
+JavaScript/data/Document/ontouchend
+JavaScript/data/DOMWindow/ontouchend
+JavaScript/data/Element/ontouchend
+JavaScript/data/Document/ontouchmove
+JavaScript/data/DOMWindow/ontouchmove
+JavaScript/data/Element/ontouchmove
+JavaScript/data/Document/ontouchstart
+JavaScript/data/DOMWindow/ontouchstart
+JavaScript/data/Element/ontouchstart
+JavaScript/data/DOMWindow/onunload
+JavaScript/data/HTMLFrameSetElement/onunload
+JavaScript/data/HTMLBodyElement/onunload
+JavaScript/data/svg/onunload
+JavaScript/data/DOMApplicationCache/onupdateready
+JavaScript/data/DOMWindow/onvolumechange
+JavaScript/data/DOMWindow/onwaiting
+JavaScript/data/DOMWindow/onwebkitanimationend
+JavaScript/data/DOMWindow/onwebkitanimationiteration
+JavaScript/data/DOMWindow/onwebkitanimationstart
+JavaScript/data/DOMWindow/onwebkittransitionend
+Objective-C/instm/IKImageBrowserCell/opacity
+Objective-C/instm/CALayer/opacity
+Objective-C/instp/CALayer/opacity
+Objective-C/instp/CALayer/opaque
+C/tag/-/opaque_ipfilter
+C/func/-/opaque_type
+Objective-C/instm/NSView/opaqueAncestor
+Objective-C/instm/NSDrawer/open
+Objective-C/instm/NSStream/open
+Objective-C/instm/XGConnection/open
+C/func/-/Open
+C/func/-/open
+C++/instm/IOService/open
+C++/instm/IOStorage/open
+JavaScript/instm/DOMWindow/open
+JavaScript/instm/IndexedDatabaseRequest/open
+JavaScript/clconst/EventSource/OPEN
+JavaScript/instm/HTMLDocument/open
+JavaScript/instm/XMLHttpRequest/open
+JavaScript/clconst/WebSocket/OPEN
+Objective-C/instm/NSDrawer/open:
+Objective-C/instm/QTCaptureDevice/open:
+Objective-C/instm/DRSetupPanel/open:
+C/func/-/OpenAComponent
+C/func/-/OpenAComponentResFile
+C/func/-/OpenADataHandler
+C/func/-/OpenADefaultComponent
+C/func/-/OpenComponent
+C/func/-/OpenComponentResFile
+Objective-C/instm/IOBluetoothDevice/openConnection
+Objective-C/instm/IOBluetoothDevice/openConnection:
+Objective-C/instm/IOBluetoothDevice/openConnection:withPageTimeout:authenticationRequired:
+C/tag/-/OpenCPicParams
+JavaScript/instm/DOMWindow/openDatabase
+JavaScript/instm/WorkerContext/openDatabase
+JavaScript/instm/WorkerContext/openDatabaseSync
+C/func/-/OpenDataBrowserContainer
+C/func/-/OpenDefaultComponent
+C/func/-/opendev
+Objective-C/instm/IOBluetoothRFCOMMAudioController/openDeviceConnection
+C/func/-/opendir
+Objective-C/instm/NSDocumentController/openDocument:
+Objective-C/instm/NSDocumentController/openDocumentWithContentsOfFile:display:
+Objective-C/instm/NSDocumentController/openDocumentWithContentsOfURL:display:
+Objective-C/instm/NSDocumentController/openDocumentWithContentsOfURL:display:error:
+Objective-C/instm/AMAction/opened
+JavaScript/clconst/XMLHttpRequest/OPENED
+JavaScript/data/DOMWindow/opener
+Objective-C/instm/NSWorkspace/openFile:
+Objective-C/instm/NSWorkspace/openFile:fromImage:at:inView:
+Objective-C/instm/NSWorkspace/openFile:withApplication:
+Objective-C/instm/NSWorkspace/openFile:withApplication:andDeactivate:
+Objective-C/instm/QCView/openGLContext
+Objective-C/instm/NSOpenGLView/openGLContext
+Objective-C/instp/NSOpenGLLayer/openGLContext
+Objective-C/instm/NSOpenGLLayer/openGLContext
+Objective-C/instm/NSOpenGLLayer/openGLContextForPixelFormat:
+Objective-C/instm/QCView/openGLPixelFormat
+Objective-C/instm/NSOpenGLLayer/openGLPixelFormat
+Objective-C/instp/NSOpenGLLayer/openGLPixelFormat
+Objective-C/instm/NSOpenGLLayer/openGLPixelFormatForDisplayMask:
+Objective-C/clm/NSCursor/openHandCursor
+Objective-C/instm/NSHelpManager/openHelpAnchor:inBook:
+Objective-C/instm/IOBluetoothDevice/openL2CAPChannel:findExisting:newChannel:
+Objective-C/instm/IOBluetoothDevice/openL2CAPChannelAsync:withPSM:delegate:
+Objective-C/instm/IOBluetoothDevice/openL2CAPChannelAsync:withPSM:withConfiguration:delegate:
+Objective-C/instm/IOBluetoothDevice/openL2CAPChannelSync:withPSM:delegate:
+Objective-C/instm/IOBluetoothDevice/openL2CAPChannelSync:withPSM:withConfiguration:delegate:
+C/func/-/openlog
+C/func/-/OpenMPI
+Objective-C/instm/NSDrawer/openOnEdge:
+C/func/-/openpam
+C/func/-/openpam_borrow_cred
+C/func/-/openpam_free_data
+C/func/-/openpam_free_envlist
+C/func/-/openpam_get_option
+C/func/-/openpam_log
+C/func/-/openpam_nullconv
+C/func/-/openpam_readline
+C/func/-/openpam_restore_cred
+C/func/-/openpam_set_option
+C/func/-/openpam_ttyconv
+Objective-C/clm/NSOpenPanel/openPanel
+C++/instm/IOUSBController/OpenPipe
+C++/instm/IOUSBControllerV2/OpenPipe
+C/func/-/openpty
+Objective-C/instm/IOBluetoothRFCOMMAudioController/openRFCOMMChannel
+Objective-C/instm/IOBluetoothDevice/openRFCOMMChannel:channel:
+Objective-C/instm/IOBluetoothDevice/openRFCOMMChannelAsync:withChannelID:delegate:
+Objective-C/instm/IOBluetoothDevice/openRFCOMMChannelSync:withChannelID:delegate:
+C/func/-/OpenRFPerm
+Objective-C/instm/IOBluetoothRFCOMMAudioController/openSCOConnection
+C/func/-/OpenSSL_add_all_algorithms
+C/func/-/OpenSSL_add_all_ciphers
+C/func/-/OpenSSL_add_all_digests
+C/func/-/OpenSSL_add_ssl_algorithms
+C/func/-/OPENSSL_Applink
+C/func/-/OPENSSL_config
+C/func/-/OPENSSL_ia32cap
+C/func/-/OPENSSL_ia32cap_loc
+C/func/-/OPENSSL_load_builtin_modules
+C/func/-/OPENSSL_no_config
+C/func/-/OPENSSL_VERSION_NUMBER
+Objective-C/instm/NSWorkspace/openTempFile:
+Objective-C/instm/OBEXSession/openTransportConnection:selectorTarget:refCon:
+Objective-C/instm/IOBluetoothOBEXSession/openTransportConnection:selectorTarget:refCon:
+Objective-C/instm/DRDevice/openTray
+Objective-C/instm/NSDocumentController/openUntitledDocumentAndDisplay:error:
+Objective-C/instm/NSDocumentController/openUntitledDocumentOfType:display:
+Objective-C/instm/NSWorkspace/openURL:
+Objective-C/instm/NSWorkspace/openURLs:withAppBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifiers:
+Objective-C/instm/NSExpression/operand
+Objective-C/instm/NSProcessInfo/operatingSystem
+Objective-C/instm/NSProcessInfo/operatingSystemName
+Objective-C/instm/NSProcessInfo/operatingSystemVersionString
+Objective-C/instm/NSOperationQueue/operationCount
+Objective-C/clm/NSCursor/operationNotAllowedCursor
+Objective-C/instp/ODQuery/operationQueue
+Objective-C/instm/ODQuery/operationQueue
+Objective-C/instm/NSOperationQueue/operations
+JavaScript/data/WebKitCSSTransformValue/operationType
+JavaScript/data/SVGFEMorphologyElement/operator
+JavaScript/data/SVGFECompositeElement/operator
+C++/cl/-/operator__Ffit_finder
+C++/clm/OSObject/operator_delete
+C++/clm/OSObject/operator_new
+C/func/-/operator_rebind
+Objective-C/instm/NSPredicateEditorRowTemplate/operators
+Objective-C/instp/CWInterface/opMode
+JavaScript/data/HTMLMeterElement/optimum
+JavaScript/data/DOMWindow/Option
+Objective-C/clm/WebHistory/optionalSharedHistory
+Objective-C/instm/NSObject/optionDescriptionsForBinding:
+Objective-C/instm/NSPredicateEditorRowTemplate/options
+Objective-C/instm/NSTextTab/options
+Objective-C/instm/NSPersistentStore/options
+Objective-C/instm/NSPrintPanel/options
+Objective-C/instm/NSComparisonPredicate/options
+Objective-C/instm/NSTrackingArea/options
+JavaScript/data/HTMLDataListElement/options
+JavaScript/data/HTMLSelectElement/options
+C/econst/-/opWrErr
+Objective-C/clm/NSColor/orangeColor
+Objective-C/instm/NSWindow/orderBack:
+JavaScript/clconst/XPathResult/ORDERED_NODE_ITERATOR_TYPE
+JavaScript/clconst/XPathResult/ORDERED_NODE_SNAPSHOT_TYPE
+Objective-C/instm/NSApplication/orderedDocuments
+Objective-C/instm/NSWindow/orderedIndex
+Objective-C/instm/WebHistory/orderedItemsLastVisitedOnDay:
+Objective-C/instm/WebHistory/orderedLastVisitedDays
+Objective-C/instm/NSApplication/orderedWindows
+Objective-C/instm/NSWindow/orderFront:
+Objective-C/instm/NSApplication/orderFrontCharacterPalette:
+Objective-C/instm/NSApplication/orderFrontColorPanel:
+Objective-C/instm/NSFontManager/orderFrontFontPanel:
+Objective-C/instm/NSTextView/orderFrontLinkPanel:
+Objective-C/instm/NSTextView/orderFrontListPanel:
+Objective-C/instm/NSWindow/orderFrontRegardless
+Objective-C/instm/NSTextView/orderFrontSpacingPanel:
+Objective-C/instm/NSApplication/orderFrontStandardAboutPanel:
+Objective-C/instm/NSApplication/orderFrontStandardAboutPanelWithOptions:
+Objective-C/instm/NSFontManager/orderFrontStylesPanel:
+Objective-C/instm/NSTextView/orderFrontSubstitutionsPanel:
+Objective-C/instm/NSTextView/orderFrontTablePanel:
+C++/instm/OSOrderedSet/orderObject
+Objective-C/instm/NSWindow/orderOut:
+Objective-C/instm/NSWindow/orderWindow:relativeTo:
+Objective-C/instm/NSCalendar/ordinalityOfUnit:inUnit:forDate:
+JavaScript/data/OverflowEvent/orient
+JavaScript/data/SVGMarkerElement/orientAngle
+Objective-C/instm/NSRulerView/orientation
+Objective-C/instm/NSPrintInfo/orientation
+JavaScript/data/DOMWindow/orientation
+JavaScript/data/SVGMarkerElement/orientType
+Objective-C/instm/FxImage/origin
+JavaScript/data/MessageEvent/origin
+Objective-C/instm/NSObject/originalString:
+Objective-C/instm/WebHistoryItem/originalURLString
+Objective-C/instm/NSRulerView/originOffset
+Objective-C/clm/NSCompoundPredicate/orPredicateWithSubpredicates:
+Objective-C/instp/NSTextCheckingResult/orthography
+Objective-C/instm/NSTextCheckingResult/orthography
+Objective-C/clm/NSTextCheckingResult/orthographyCheckingResultWithRange:orthography:
+Objective-C/clm/NSOrthography/orthographyWithDominantScript:languageMap:
+C/macro/-/OS_ATOMIC_QUEUE_INIT
+C/macro/-/OS_SPINLOCK_INIT
+C/func/-/OSAddAtomic
+C/func/-/OSAddAtomic16
+C/func/-/OSAddAtomic64
+C/func/-/OSAddAtomic8
+C++/cl/-/OSArray
+C/func/-/OSAtomicAdd32
+C/func/-/OSAtomicAdd32Barrier
+C/func/-/OSAtomicAdd64
+C/func/-/OSAtomicAdd64Barrier
+C/func/-/OSAtomicAnd32
+C/func/-/OSAtomicAnd32Barrier
+C/func/-/OSAtomicAnd32Orig
+C/func/-/OSAtomicAnd32OrigBarrier
+C/func/-/OSAtomicCompareAndSwap32
+C/func/-/OSAtomicCompareAndSwap32Barrier
+C/func/-/OSAtomicCompareAndSwap64
+C/func/-/OSAtomicCompareAndSwap64Barrier
+C/func/-/OSAtomicCompareAndSwapInt
+C/func/-/OSAtomicCompareAndSwapIntBarrier
+C/func/-/OSAtomicCompareAndSwapLong
+C/func/-/OSAtomicCompareAndSwapLongBarrier
+C/func/-/OSAtomicCompareAndSwapPtr
+C/func/-/OSAtomicCompareAndSwapPtrBarrier
+C/func/-/OSAtomicDecrement32
+C/func/-/OSAtomicDecrement32Barrier
+C/func/-/OSAtomicDecrement64
+C/func/-/OSAtomicDecrement64Barrier
+C/func/-/OSAtomicDequeue
+C/func/-/OSAtomicEnqueue
+C/func/-/OSAtomicIncrement32
+C/func/-/OSAtomicIncrement32Barrier
+C/func/-/OSAtomicIncrement64
+C/func/-/OSAtomicIncrement64Barrier
+C/func/-/OSAtomicOr32
+C/func/-/OSAtomicOr32Barrier
+C/func/-/OSAtomicOr32Orig
+C/func/-/OSAtomicOr32OrigBarrier
+C/func/-/OSAtomicTestAndClear
+C/func/-/OSAtomicTestAndClearBarrier
+C/func/-/OSAtomicTestAndSet
+C/func/-/OSAtomicTestAndSetBarrier
+C/func/-/OSAtomicXor32
+C/func/-/OSAtomicXor32Barrier
+C/func/-/OSAtomicXor32Orig
+C/func/-/OSAtomicXor32OrigBarrier
+C/func/-/OSBitAndAtomic
+C/func/-/OSBitAndAtomic16
+C/func/-/OSBitAndAtomic8
+C/func/-/OSBitOrAtomic
+C/func/-/OSBitOrAtomic16
+C/func/-/OSBitOrAtomic8
+C/func/-/OSBitXorAtomic
+C/func/-/OSBitXorAtomic16
+C/func/-/OSBitXorAtomic8
+C++/cl/-/OSBoolean
+C++/macro/-/OSCheckTypeInst
+C++/cl/-/OSCollection
+C++/cl/-/OSCollectionIterator
+C/func/-/OSCompareAndSwap
+C/func/-/OSCompareAndSwap64
+C/func/-/OSCompareAndSwapPtr
+C++/cl/-/OSData
+C++/macro/-/OSDeclareAbstractStructors
+C++/macro/-/OSDeclareDefaultStructors
+C++/macro/-/OSDeclareFinalStructors
+C/func/-/OSDecrementAtomic
+C/func/-/OSDecrementAtomic16
+C/func/OSAtomic.h/OSDecrementAtomic64
+C/func/-/OSDecrementAtomic8
+C++/macro/-/OSDefineMetaClassAndAbstractStructors
+C++/macro/-/OSDefineMetaClassAndFinalStructors
+C++/macro/-/OSDefineMetaClassAndStructors
+C/func/-/OSDequeueAtomic
+C++/cl/-/OSDictionary
+C++/macro/-/OSDynamicCast
+C/func/-/OSEnqueueAtomic
+C/tdef/-/OSErr
+C/func/-/OSFree
+C/func/-/OSHostByteOrder
+C/func/-/OSIncrementAtomic
+C/func/-/OSIncrementAtomic16
+C/func/OSAtomic.h/OSIncrementAtomic64
+C/func/-/OSIncrementAtomic8
+C++/cl/-/OSIterator
+C/func/-/OSKernelStackRemaining
+C/func/-/OSKextCancelRequest
+C/func/-/OSKextGetCurrentIdentifier
+C/func/-/OSKextGetCurrentLoadTag
+C/func/-/OSKextGetCurrentVersionString
+C/func/-/OSKextLoadKextWithIdentifier
+C/tdef/-/OSKextLoadTag
+C/func/-/OSKextReleaseKextWithLoadTag
+C/func/-/OSKextRequestResource
+C/tdef/-/OSKextRequestResourceCallback
+C/tdef/-/OSKextRequestTag
+C/func/-/OSKextRetainKextWithLoadTag
+C/macro/-/OSKextSymbolIsResolved
+C/func/-/OSMalloc
+C/func/-/OSMalloc_noblock
+C/func/-/OSMalloc_nowait
+C/func/-/OSMalloc_Tagalloc
+C/func/-/OSMalloc_Tagfree
+C/tdef/-/OSMallocTag
+C/tdef/-/OSMallocTag_t
+C++/macro/-/OSMemberFunctionCast
+C/func/-/OSMemoryBarrier
+C++/cl/-/OSMetaClass
+C++/instm/OSMetaClass/OSMetaClass
+C++/cl/-/OSMetaClassBase
+C++/macro/-/OSMetaClassDeclareReservedUnused
+C++/instm/IOEthernetController/OSMetaClassDeclareReservedUsed
+C++/macro/-/OSMetaClassDeclareReservedUsed
+C++/macro/-/OSMetaClassDefineReservedUnused
+C++/macro/-/OSMetaClassDefineReservedUsed
+C/macro/-/OSMT_DEFAULT
+C/macro/-/OSMT_PAGEABLE
+C++/cl/-/OSNumber
+C++/cl/-/OSObject
+C++/cl/-/OSOrderedSet
+C++/tdef/OSOrderedSet/OSOrderFunction
+C/tdef/-/OSQueueHead
+C/macro/-/OSReadBigInt
+C/macro/-/OSReadBigInt16
+C/macro/-/OSReadBigInt32
+C/macro/-/OSReadBigInt64
+C/macro/-/OSReadLittleInt
+C/macro/-/OSReadLittleInt16
+C/macro/-/OSReadLittleInt32
+C/macro/-/OSReadLittleInt64
+C/tdef/-/OSReturn
+C++/macro/-/OSSafeRelease
+C++/macro/-/OSSafeReleaseNULL
+C++/cl/-/OSSerialize
+C++/cl/-/OSSet
+C/tdef/-/OSSpinLock
+C/func/-/OSSpinLockLock
+C/func/-/OSSpinLockTry
+C/func/-/OSSpinLockUnlock
+C/tdef/-/OSStatus
+C++/cl/-/OSString
+C/macro/-/OSSwapBigToHostConstInt16
+C/macro/-/OSSwapBigToHostConstInt32
+C/macro/-/OSSwapBigToHostConstInt64
+C/macro/-/OSSwapBigToHostInt
+C/macro/-/OSSwapBigToHostInt16
+C/macro/-/OSSwapBigToHostInt32
+C/macro/-/OSSwapBigToHostInt64
+C/macro/-/OSSwapConstInt16
+C/macro/-/OSSwapConstInt32
+C/macro/-/OSSwapConstInt64
+C/macro/-/OSSwapHostToBigConstInt16
+C/macro/-/OSSwapHostToBigConstInt32
+C/macro/-/OSSwapHostToBigConstInt64
+C/macro/-/OSSwapHostToBigInt
+C/macro/-/OSSwapHostToBigInt16
+C/macro/-/OSSwapHostToBigInt32
+C/macro/-/OSSwapHostToBigInt64
+C/macro/-/OSSwapHostToLittleConstInt16
+C/macro/-/OSSwapHostToLittleConstInt32
+C/macro/-/OSSwapHostToLittleConstInt64
+C/macro/-/OSSwapHostToLittleInt
+C/macro/-/OSSwapHostToLittleInt16
+C/macro/-/OSSwapHostToLittleInt32
+C/macro/-/OSSwapHostToLittleInt64
+C/macro/-/OSSwapLittleToHostConstInt16
+C/macro/-/OSSwapLittleToHostConstInt32
+C/macro/-/OSSwapLittleToHostConstInt64
+C/macro/-/OSSwapLittleToHostInt
+C/macro/-/OSSwapLittleToHostInt16
+C/macro/-/OSSwapLittleToHostInt32
+C/macro/-/OSSwapLittleToHostInt64
+C++/cl/-/OSSymbol
+C/func/OSAtomic.h/OSSynchronizeIO
+C/func/-/OSTestAndClear
+C/func/-/OSTestAndSet
+C++/macro/-/OSTypeAlloc
+C++/macro/-/OSTypeID
+C++/macro/-/OSTypeIDInst
+C/func/-/OSUnserializeXML
+C/macro/-/OSWriteBigInt
+C/macro/-/OSWriteBigInt16
+C/macro/-/OSWriteBigInt32
+C/macro/-/OSWriteBigInt64
+C/macro/-/OSWriteLittleInt
+C/macro/-/OSWriteLittleInt16
+C/macro/-/OSWriteLittleInt32
+C/macro/-/OSWriteLittleInt64
+Objective-C/clm/NSEvent/otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:
+Objective-C/instm/NSResponder/otherMouseDown:
+Objective-C/instm/NSResponder/otherMouseDragged:
+Objective-C/instm/NSResponder/otherMouseUp:
+JavaScript/clconst/WebGLRenderingContext/OUT_OF_MEMORY
+Objective-C/instm/XGActionMonitor/outcome
+JavaScript/data/DOMWindow/outerHeight
+JavaScript/data/HTMLElement/outerHTML
+JavaScript/data/HTMLElement/outerText
+JavaScript/data/DOMWindow/outerWidth
+Objective-C/instm/NSTextView/outline:
+Objective-C/instm/PDFDocument/outlineItemForSelection:
+Objective-C/instm/PDFDocument/outlineRoot
+Objective-C/instm/NSOutlineView/outlineTableColumn
+Objective-C/intfm/NSOutlineViewDataSource/outlineView:acceptDrop:item:childIndex:
+Objective-C/intfm/NSOutlineViewDataSource/outlineView:child:ofItem:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:dataCellForTableColumn:item:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:didClickTableColumn:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:didDragTableColumn:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:heightOfRowByItem:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:isGroupItem:
+Objective-C/intfm/NSOutlineViewDataSource/outlineView:isItemExpandable:
+Objective-C/intfm/NSOutlineViewDataSource/outlineView:itemForPersistentObject:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:mouseDownInHeaderOfTableColumn:
+Objective-C/intfm/NSOutlineViewDataSource/outlineView:namesOfPromisedFilesDroppedAtDestination:forDraggedItems:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:nextTypeSelectMatchFromItem:toItem:forString:
+Objective-C/intfm/NSOutlineViewDataSource/outlineView:numberOfChildrenOfItem:
+Objective-C/intfm/NSOutlineViewDataSource/outlineView:objectValueForTableColumn:byItem:
+Objective-C/intfm/NSOutlineViewDataSource/outlineView:persistentObjectForItem:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:selectionIndexesForProposedSelection:
+Objective-C/intfm/NSOutlineViewDataSource/outlineView:setObjectValue:forTableColumn:byItem:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:shouldCollapseItem:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:shouldEditTableColumn:item:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:shouldExpandItem:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:shouldReorderColumn:toColumn:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:shouldSelectItem:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:shouldSelectTableColumn:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:shouldShowCellExpansionForTableColumn:item:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:shouldShowOutlineCellForItem:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:shouldTrackCell:forTableColumn:item:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:shouldTypeSelectForEvent:withCurrentSearchString:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:sizeToFitWidthOfColumn:
+Objective-C/intfm/NSOutlineViewDataSource/outlineView:sortDescriptorsDidChange:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:toolTipForCell:rect:tableColumn:item:mouseLocation:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:typeSelectStringForTableColumn:item:
+Objective-C/intfm/NSOutlineViewDataSource/outlineView:validateDrop:proposedItem:proposedChildIndex:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:willDisplayCell:forTableColumn:item:
+Objective-C/intfm/NSOutlineViewDelegate/outlineView:willDisplayOutlineCell:forTableColumn:item:
+Objective-C/intfm/NSOutlineViewDataSource/outlineView:writeItems:toPasteboard:
+Objective-C/instm/NSObject/outlineViewColumnDidMove:
+Objective-C/instm/NSObject/outlineViewColumnDidResize:
+Objective-C/instm/NSObject/outlineViewItemDidCollapse:
+Objective-C/instm/NSObject/outlineViewItemDidExpand:
+Objective-C/instm/NSObject/outlineViewItemWillCollapse:
+Objective-C/instm/NSObject/outlineViewItemWillExpand:
+Objective-C/instm/NSObject/outlineViewSelectionDidChange:
+Objective-C/instm/NSObject/outlineViewSelectionIsChanging:
+Objective-C/intfm/FxTimingAPI/outPointOfTimelineForEffect:
+Objective-C/instm/AMAction/output
+C++/instm/IOBasicOutputQueue/output
+C++/instm/IOGatedOutputQueue/output
+Objective-C/instm/QTCaptureDecompressedAudioOutput/outputAudioSampleBuffer:fromConnection:
+C++/clm/IODMACommand/OutputBig32
+C++/clm/IODMACommand/OutputBig64
+C/tag/-/OutputCommands
+Objective-C/instm/QTCaptureAudioPreviewOutput/outputDeviceUniqueID
+Objective-C/instm/AMShellScriptAction/outputFieldSeparator
+Objective-C/instm/QTCaptureFileOutput/outputFileURL
+Objective-C/instm/NSKeyedArchiver/outputFormat
+C/tag/-/OutputHandlerReturnCodes
+C++/clm/IODMACommand/OutputHost32
+C++/clm/IODMACommand/OutputHost64
+Objective-C/instm/IKPictureTaker/outputImage
+Objective-C/intfm/QCPlugInContext/outputImageProviderFromBufferWithPixelFormat:pixelsWide:pixelsHigh:baseAddress:bytesPerRow:releaseCallback:releaseContext:colorSpace:shouldColorMatch:
+Objective-C/intfm/QCPlugInContext/outputImageProviderFromTextureWithPixelFormat:pixelsWide:pixelsHigh:name:flipped:releaseCallback:releaseContext:colorSpace:shouldColorMatch:
+Objective-C/instm/QCComposition/outputKeys
+Objective-C/instm/CIFilter/outputKeys
+Objective-C/intfm/QCCompositionRenderer/outputKeys
+C++/clm/IODMACommand/OutputLittle32
+C++/clm/IODMACommand/OutputLittle64
+C++/instm/IONetworkController/outputPacket
+C/tag/-/OutputPacketStatus
+Objective-C/instm/QTCaptureSession/outputs
+C++/clm/IODBDMAMemoryCursor/outputSegment
+C++/clm/IOBigMemoryCursor/outputSegment
+C++/clm/IONaturalMemoryCursor/outputSegment
+C++/clm/IOLittleMemoryCursor/outputSegment
+C++/macro/-/OutputSegmentFunc
+C++/data/IOAudioEngine/outputStreams
+Objective-C/clm/NSOutputStream/outputStreamToBuffer:capacity:
+Objective-C/clm/NSOutputStream/outputStreamToFileAtPath:append:
+Objective-C/clm/NSOutputStream/outputStreamToMemory
+Objective-C/clm/NSOutputStream/outputStreamWithURL:append:
+Objective-C/instm/QTCaptureVideoPreviewOutput/outputVideoFrame:withSampleBuffer:fromConnection:
+Objective-C/instm/QTCaptureDecompressedVideoOutput/outputVideoFrame:withSampleBuffer:fromConnection:
+C++/data/IOMemoryCursor/outSeg
+JavaScript/data/DOMWindow/OverflowEvent
+JavaScript/cl/-/OverflowEvent
+C/func/-/overlay
+C/func/-/OverlayApplicationDockTileImage
+Objective-C/instm/IKImageView/overlayForType:
+JavaScript/instm/TestObj/overloadedMethod
+Objective-C/intfm/IMKTextInput/overrideKeyboardWithKeyboardNamed:
+JavaScript/instm/XMLHttpRequest/overrideMimeType
+Objective-C/instm/IKScannerDeviceView/overviewControlLabel
+Objective-C/instp/IKScannerDeviceView/overviewControlLabel
+C/func/-/overwrite
+Objective-C/instm/NSWindowController/owner
+Objective-C/instm/QTCaptureConnection/owner
+Objective-C/instm/NSDockTile/owner
+Objective-C/instm/NSTrackingArea/owner
+C++/data/IOEventSource/owner
+JavaScript/data/core/ownerDocument
+JavaScript/data/Attr/ownerElement
+JavaScript/data/StyleSheet/ownerNode
+JavaScript/data/CSSStyleSheet/ownerRule
+JavaScript/data/SVGElement/ownerSVGElement
+JavaScript/clconst/WebGLRenderingContext/PACK_ALIGNMENT
+-/writerid/-/packagemaker_user_guide
+Objective-C/instm/NSNumberFormatter/paddingCharacter
+Objective-C/instm/NSNumberFormatter/paddingPosition
+Objective-C/instm/PDFDestination/page
+Objective-C/instm/PDFAnnotation/page
+JavaScript/clconst/CSSRule/PAGE_RULE
+Objective-C/instm/PDFDocument/pageAtIndex:
+Objective-C/instm/WebBackForwardList/pageCacheSize
+Objective-C/instm/PDFDocument/pageClass
+Objective-C/instm/NSPDFImageRep/pageCount
+Objective-C/instm/PDFDocument/pageCount
+Objective-C/instm/NSResponder/pageDown:
+Objective-C/instm/NSResponder/pageDownAndModifySelection:
+Objective-C/instm/NSView/pageFooter
+Objective-C/instm/NSObject/pageFormat
+Objective-C/instm/PDFView/pageForPoint:nearest:
+Objective-C/instm/NSView/pageHeader
+Objective-C/instm/PDFActionRemoteGoTo/pageIndex
+Objective-C/clm/NSPageLayout/pageLayout
+Objective-C/instm/NSPrintOperation/pageOrder
+Objective-C/instm/NSPrintOperation/pageRange
+Objective-C/instm/PDFSelection/pages
+Objective-C/instm/NSScrollView/pageScroll
+Objective-C/instm/NSPrinter/pageSizeForPaper:
+Objective-C/instm/WebDataSource/pageTitle
+JavaScript/data/DOMWindow/PageTransitionEvent
+JavaScript/cl/-/PageTransitionEvent
+Objective-C/instm/NSResponder/pageUp:
+Objective-C/instm/NSResponder/pageUpAndModifySelection:
+JavaScript/data/UIEvent/pageX
+JavaScript/data/Touch/pageX
+JavaScript/data/DOMWindow/pageXOffset
+JavaScript/data/Touch/pageY
+JavaScript/data/UIEvent/pageY
+JavaScript/data/DOMWindow/pageYOffset
+JavaScript/data/SVGPaint/paintType
+C/func/-/pair_content
+C/func/-/PAIR_NUMBER
+Objective-C/clm/IOBluetoothDevice/pairedDevices
+Objective-C/clm/IOBluetoothPairingController/pairingController
+Objective-C/clm/IOBluetoothDevicePair/pairWithDevice:
+Objective-C/clm/NSFont/paletteFontOfSize:
+Objective-C/instm/NSToolbarItem/paletteLabel
+C/func/-/pam
+C/func/-/pam_acct_mgmt
+C/func/-/pam_authenticate
+C/func/-/pam_chauthtok
+C/func/-/pam_close_session
+C/func/-/pam_conv
+C/func/-/pam_end
+C/func/-/pam_error
+C/func/-/pam_get_authtok
+C/func/-/pam_get_data
+C/func/-/pam_get_item
+C/func/-/pam_get_user
+C/func/-/pam_getenv
+C/func/-/pam_getenvlist
+C/func/-/pam_info
+C/func/-/pam_open_session
+C/func/-/pam_prompt
+C/func/-/pam_putenv
+C/func/-/pam_set_data
+C/func/-/pam_set_item
+C/func/-/pam_setcred
+C/func/-/pam_setenv
+C/func/-/pam_sm_acct_mgmt
+C/func/-/pam_sm_authenticate
+C/func/-/pam_sm_chauthtok
+C/func/-/pam_sm_close_session
+C/func/-/pam_sm_open_session
+C/func/-/pam_sm_setcred
+C/func/-/pam_start
+C/func/-/pam_strerror
+C/func/-/pam_verror
+C/func/-/pam_vinfo
+C/func/-/pam_vprompt
+C/func/-/panel
+Objective-C/instm/NSObject/panel:compareFilename:with:caseSensitive:
+Objective-C/intfm/NSOpenSavePanelDelegate/panel:didChangeToDirectoryURL:
+Objective-C/instm/NSObject/panel:directoryDidChange:
+Objective-C/instm/NSObject/panel:isValidFilename:
+Objective-C/intfm/NSOpenSavePanelDelegate/panel:shouldEnableURL:
+Objective-C/instm/NSObject/panel:shouldShowFilename:
+Objective-C/intfm/NSOpenSavePanelDelegate/panel:userEnteredFilename:confirmed:
+Objective-C/intfm/NSOpenSavePanelDelegate/panel:validateURL:error:
+Objective-C/intfm/NSOpenSavePanelDelegate/panel:willExpand:
+Objective-C/instm/NSFontPanel/panelConvertFont:
+Objective-C/instm/NSObject/panelKind
+Objective-C/instm/NSObject/panelName
+Objective-C/intfm/NSOpenSavePanelDelegate/panelSelectionDidChange:
+Objective-C/instm/IMKCandidates/panelType
+Objective-C/instm/NSObject/panelView
+Objective-C/instm/NSObject/panelViewDidResize
+Objective-C/instm/NSPrintInfo/paperName
+Objective-C/instm/NSPrintInfo/paperSize
+Objective-C/instm/NSTypesetter/paragraphCharacterRange
+Objective-C/instm/NSATSTypesetter/paragraphGlyphRange
+Objective-C/instm/NSTypesetter/paragraphGlyphRange
+Objective-C/instm/NSString/paragraphRangeForRange:
+Objective-C/instm/NSTextStorage/paragraphs
+Objective-C/instm/NSTypesetter/paragraphSeparatorCharacterRange
+Objective-C/instm/NSATSTypesetter/paragraphSeparatorGlyphRange
+Objective-C/instm/NSTypesetter/paragraphSeparatorGlyphRange
+Objective-C/instm/NSParagraphStyle/paragraphSpacing
+Objective-C/instm/NSATSTypesetter/paragraphSpacingAfterGlyphAtIndex:withProposedLineFragmentRect:
+Objective-C/instm/NSTypesetter/paragraphSpacingAfterGlyphAtIndex:withProposedLineFragmentRect:
+Objective-C/instm/NSParagraphStyle/paragraphSpacingBefore
+Objective-C/instm/NSATSTypesetter/paragraphSpacingBeforeGlyphAtIndex:withProposedLineFragmentRect:
+Objective-C/instm/NSTypesetter/paragraphSpacingBeforeGlyphAtIndex:withProposedLineFragmentRect:
+C/tdef/-/ParamBlockRec
+Objective-C/instm/NSAppleEventDescriptor/paramDescriptorForKeyword:
+C/econst/-/paramErr
+Objective-C/intfm/FxBaseEffect/parameterChanged:
+Objective-C/instm/FxHostCapabilities/parameterChangedUsableForAllParameters
+C/tdef/-/ParameterEvent
+Objective-C/instm/AMBundleAction/parameters
+Objective-C/instm/XGActionMonitor/parameters
+Objective-C/instm/NSURL/parameterString
+Objective-C/instm/AMAction/parametersUpdated
+C/tdef/-/paramValue
+Objective-C/instm/PDFOutline/parent
+Objective-C/instm/DRFSObject/parent
+Objective-C/instm/NSXMLNode/parent
+JavaScript/data/DOMWindow/parent
+C/func/-/parentCurrentPowerFlags
+JavaScript/data/core/parentElement
+Objective-C/instm/NSOutlineView/parentForItem:
+Objective-C/instm/NSBrowser/parentForItemsInColumn:
+Objective-C/instm/WebFrame/parentFrame
+Objective-C/instm/ABGroup/parentGroups
+Objective-C/instm/ABPerson/parentGroups
+Objective-C/instm/PDFAnnotationButtonWidget/parentID
+Objective-C/instm/NSMenuItem/parentItem
+C/func/-/parentKnowsState
+Objective-C/instm/NSTreeNode/parentNode
+JavaScript/data/svg/parentNode
+JavaScript/data/core/parentNode
+JavaScript/instm/TreeWalker/parentNode
+Objective-C/instm/IBDocument/parentOfObject:
+Objective-C/instm/NSRuleEditor/parentRowForRow:
+JavaScript/data/CSSRule/parentRule
+JavaScript/data/CSSStyleDeclaration/parentRule
+JavaScript/data/CSSVariablesDeclaration/parentRule
+JavaScript/data/CSSRule/parentStyleSheet
+JavaScript/data/StyleSheet/parentStyleSheet
+Objective-C/instm/NSDrawer/parentWindow
+Objective-C/instm/NSWindow/parentWindow
+Objective-C/instm/NSXMLParser/parse
+JavaScript/instm/DOMParser/parseFromString
+Objective-C/intfm/NSXMLParserDelegate/parser:didEndElement:namespaceURI:qualifiedName:
+Objective-C/intfm/NSXMLParserDelegate/parser:didEndMappingPrefix:
+Objective-C/intfm/NSXMLParserDelegate/parser:didStartElement:namespaceURI:qualifiedName:attributes:
+Objective-C/intfm/NSXMLParserDelegate/parser:didStartMappingPrefix:toURI:
+Objective-C/intfm/NSXMLParserDelegate/parser:foundAttributeDeclarationWithName:forElement:type:defaultValue:
+Objective-C/intfm/NSXMLParserDelegate/parser:foundCDATA:
+Objective-C/intfm/NSXMLParserDelegate/parser:foundCharacters:
+Objective-C/intfm/NSXMLParserDelegate/parser:foundComment:
+Objective-C/intfm/NSXMLParserDelegate/parser:foundElementDeclarationWithName:model:
+Objective-C/intfm/NSXMLParserDelegate/parser:foundExternalEntityDeclarationWithName:publicID:systemID:
+Objective-C/intfm/NSXMLParserDelegate/parser:foundIgnorableWhitespace:
+Objective-C/intfm/NSXMLParserDelegate/parser:foundInternalEntityDeclarationWithName:value:
+Objective-C/intfm/NSXMLParserDelegate/parser:foundNotationDeclarationWithName:publicID:systemID:
+Objective-C/intfm/NSXMLParserDelegate/parser:foundProcessingInstructionWithTarget:data:
+Objective-C/intfm/NSXMLParserDelegate/parser:foundUnparsedEntityDeclarationWithName:publicID:systemID:notationName:
+Objective-C/intfm/NSXMLParserDelegate/parser:parseErrorOccurred:
+Objective-C/intfm/NSXMLParserDelegate/parser:resolveExternalEntityName:systemID:
+Objective-C/intfm/NSXMLParserDelegate/parser:validationErrorOccurred:
+Objective-C/intfm/NSXMLParserDelegate/parserDidEndDocument:
+Objective-C/intfm/NSXMLParserDelegate/parserDidStartDocument:
+Objective-C/instm/NSXMLParser/parserError
+Objective-C/instp/CWWirelessProfile/passphrase
+Objective-C/instm/NSURLCredential/password
+Objective-C/instp/CW8021XProfile/password
+Objective-C/instm/NSURL/password
+Objective-C/instm/ODRecord/passwordPolicyAndReturnError:
+Objective-C/instm/QTMovieView/paste:
+Objective-C/instm/WebView/paste:
+Objective-C/instm/NSText/paste:
+Objective-C/instm/NSTextView/pasteAsPlainText:
+Objective-C/instm/WebView/pasteAsPlainText:
+Objective-C/instm/NSTextView/pasteAsRichText:
+Objective-C/instm/WebView/pasteAsRichText:
+Objective-C/intfm/NSPasteboardItemDataProvider/pasteboard:item:provideDataForType:
+Objective-C/instm/NSObject/pasteboard:provideDataForType:
+Objective-C/clm/NSPasteboard/pasteboardByFilteringData:ofType:
+Objective-C/clm/NSPasteboard/pasteboardByFilteringFile:
+Objective-C/clm/NSPasteboard/pasteboardByFilteringTypesInPasteboard:
+Objective-C/instm/NSObject/pasteboardChangedOwner:
+C/func/-/PasteboardClear
+C/func/-/PasteboardCopyItemFlavorData
+C/func/-/PasteboardCopyItemFlavors
+C/func/-/PasteboardCopyName
+C/func/-/PasteboardCopyPasteLocation
+C/func/-/PasteboardCreate
+Objective-C/intfm/NSPasteboardItemDataProvider/pasteboardFinishedWithDataProvider:
+C/tdef/-/PasteboardFlavorFlags
+C/func/-/PasteboardGetItemCount
+C/func/-/PasteboardGetItemFlavorFlags
+C/func/-/PasteboardGetItemIdentifier
+C/tdef/-/PasteboardItemID
+Objective-C/instm/NSPasteboard/pasteboardItems
+Objective-C/instm/IBPlugin/pasteboardObjectsForDraggedLibraryView:
+C/tdef/-/PasteboardPromiseKeeperProcPtr
+Objective-C/intfm/NSPasteboardWriting/pasteboardPropertyListForType:
+C/func/-/PasteboardPutItemFlavor
+C/tdef/-/PasteboardRef
+C/func/-/PasteboardResolvePromises
+C/func/-/PasteboardSetPasteLocation
+C/func/-/PasteboardSetPromiseKeeper
+C/tdef/-/PasteboardSyncFlags
+C/func/-/PasteboardSynchronize
+Objective-C/instm/WebView/pasteboardTypesForElement:
+Objective-C/instm/WebView/pasteboardTypesForSelection
+Objective-C/clm/NSPasteboard/pasteboardWithName:
+Objective-C/clm/NSPasteboard/pasteboardWithUniqueName
+Objective-C/instm/WebView/pasteFont:
+Objective-C/instm/NSText/pasteFont:
+C/func/-/PasteHandleIntoMovie
+C/func/-/PasteMovieSelection
+Objective-C/instm/NSText/pasteRuler:
+C/econst/-/patBic
+Objective-C/binding/QCView/patch
+C/econst/-/patCopy
+Objective-C/instm/NSBrowser/path
+Objective-C/instm/XGFile/path
+Objective-C/instm/NSHTTPCookie/path
+Objective-C/instm/CAShapeLayer/path
+Objective-C/instp/CAShapeLayer/path
+Objective-C/binding/AMPathPopUpButton/path
+Objective-C/instm/NSURL/path
+Objective-C/instm/CAKeyframeAnimation/path
+Objective-C/instp/CAKeyframeAnimation/path
+Objective-C/intfm/NSPathCellDelegate/pathCell:willDisplayOpenPanel:
+Objective-C/intfm/NSPathCellDelegate/pathCell:willPopUpMenu:
+Objective-C/instm/NSPathCell/pathComponentCellAtPoint:withFrame:inView:
+Objective-C/clm/NSPathCell/pathComponentCellClass
+Objective-C/instm/NSPathCell/pathComponentCells
+Objective-C/instm/NSPathControl/pathComponentCells
+Objective-C/instm/NSString/pathComponents
+Objective-C/instm/NSURL/pathComponents
+C/func/-/pathconf
+Objective-C/instm/NSFileManager/pathContentOfSymbolicLinkAtPath:
+Objective-C/intfm/NSPathControlDelegate/pathControl:acceptDrop:
+Objective-C/intfm/NSPathControlDelegate/pathControl:shouldDragPathComponentCell:withPasteboard:
+Objective-C/intfm/NSPathControlDelegate/pathControl:validateDrop:
+Objective-C/intfm/NSPathControlDelegate/pathControl:willDisplayOpenPanel:
+Objective-C/intfm/NSPathControlDelegate/pathControl:willPopUpMenu:
+Objective-C/instm/NSString/pathExtension
+Objective-C/instm/NSURL/pathExtension
+Objective-C/instm/NSBundle/pathForAuxiliaryExecutable:
+Objective-C/instm/NSBundle/pathForImageResource:
+Objective-C/instm/NSBundle/pathForResource:ofType:
+Objective-C/clm/NSBundle/pathForResource:ofType:inDirectory:
+Objective-C/instm/NSBundle/pathForResource:ofType:inDirectory:
+Objective-C/instm/NSBundle/pathForResource:ofType:inDirectory:forLocalization:
+Objective-C/instm/NSBundle/pathForSoundResource:
+JavaScript/data/SVGPathElement/pathLength
+JavaScript/data/HTMLAnchorElement/pathname
+JavaScript/data/HTMLAreaElement/pathname
+JavaScript/data/window/pathname
+JavaScript/data/WorkerLocation/pathname
+Objective-C/intfm/ApertureEditManager/pathOfEditableFileForVersion:
+Objective-C/instm/PDFAnnotationInk/paths
+JavaScript/clconst/SVGPathSeg/PATHSEG_ARC_ABS
+JavaScript/clconst/SVGPathSeg/PATHSEG_ARC_REL
+JavaScript/clconst/SVGPathSeg/PATHSEG_CLOSEPATH
+JavaScript/clconst/SVGPathSeg/PATHSEG_CURVETO_CUBIC_ABS
+JavaScript/clconst/SVGPathSeg/PATHSEG_CURVETO_CUBIC_REL
+JavaScript/clconst/SVGPathSeg/PATHSEG_CURVETO_CUBIC_SMOOTH_ABS
+JavaScript/clconst/SVGPathSeg/PATHSEG_CURVETO_CUBIC_SMOOTH_REL
+JavaScript/clconst/SVGPathSeg/PATHSEG_CURVETO_QUADRATIC_ABS
+JavaScript/clconst/SVGPathSeg/PATHSEG_CURVETO_QUADRATIC_REL
+JavaScript/clconst/SVGPathSeg/PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS
+JavaScript/clconst/SVGPathSeg/PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL
+JavaScript/clconst/SVGPathSeg/PATHSEG_LINETO_ABS
+JavaScript/clconst/SVGPathSeg/PATHSEG_LINETO_HORIZONTAL_ABS
+JavaScript/clconst/SVGPathSeg/PATHSEG_LINETO_HORIZONTAL_REL
+JavaScript/clconst/SVGPathSeg/PATHSEG_LINETO_REL
+JavaScript/clconst/SVGPathSeg/PATHSEG_LINETO_VERTICAL_ABS
+JavaScript/clconst/SVGPathSeg/PATHSEG_LINETO_VERTICAL_REL
+JavaScript/clconst/SVGPathSeg/PATHSEG_MOVETO_ABS
+JavaScript/clconst/SVGPathSeg/PATHSEG_MOVETO_REL
+JavaScript/clconst/SVGPathSeg/PATHSEG_UNKNOWN
+JavaScript/data/SVGAnimatedPathData/pathSegList
+JavaScript/data/SVGPathSeg/pathSegType
+JavaScript/data/SVGPathSeg/pathSegTypeAsLetter
+Objective-C/instm/NSBrowser/pathSeparator
+Objective-C/instm/NSBundle/pathsForResourcesOfType:inDirectory:
+Objective-C/clm/NSBundle/pathsForResourcesOfType:inDirectory:
+Objective-C/instm/NSBundle/pathsForResourcesOfType:inDirectory:forLocalization:
+Objective-C/instm/NSArray/pathsMatchingExtensions:
+Objective-C/instm/NSPathCell/pathStyle
+Objective-C/instm/NSPathControl/pathStyle
+Objective-C/instm/NSBrowser/pathToColumn:
+Objective-C/clm/NSString/pathWithComponents:
+C/econst/-/patOr
+JavaScript/data/HTMLInputElement/pattern
+JavaScript/data/SVGPatternElement/patternContentUnits
+Objective-C/instm/NSColor/patternImage
+JavaScript/data/ValidityState/patternMismatch
+Objective-C/instm/NSGraphicsContext/patternPhase
+JavaScript/data/SVGPatternElement/patternTransform
+JavaScript/data/SVGPatternElement/patternUnits
+C/econst/-/patXor
+Objective-C/instm/NSSound/pause
+C/func/-/pause
+JavaScript/instm/HTMLMediaElement/pause
+Objective-C/instm/QTMovieView/pause:
+JavaScript/instm/SVGSVGElement/pauseAnimations
+JavaScript/data/HTMLMediaElement/paused
+JavaScript/instm/InspectorBackend/pauseInDebugger
+Objective-C/instm/QTCaptureFileOutput/pauseRecording
+Objective-C/instm/QCView/pauseRendering
+Objective-C/instm/NSSpeechSynthesizer/pauseSpeakingAtBoundary:
+C/func/-/PauseSpeechAt
+C/func/-/PBAllocateAsync
+C/func/-/PBAllocateForkAsync
+C/func/-/PBAllocateForkSync
+C/func/-/PBAllocateSync
+C/func/-/PBAllocContigAsync
+C/func/-/PBAllocContigSync
+C/func/-/PBCatalogSearchAsync
+C/func/-/PBCatalogSearchSync
+C/func/-/PBCatMoveAsync
+C/func/-/PBCatMoveSync
+C/func/-/PBCatSearchAsync
+C/func/-/PBCatSearchSync
+C/func/-/PBCloseAsync
+C/func/-/PBCloseForkAsync
+C/func/-/PBCloseForkSync
+C/func/-/PBCloseIteratorAsync
+C/func/-/PBCloseIteratorSync
+C/func/-/PBCloseSync
+C/func/-/PBCompareFSRefsAsync
+C/func/-/PBCompareFSRefsSync
+C/func/-/PBCreateDirectoryUnicodeAsync
+C/func/-/PBCreateDirectoryUnicodeSync
+C/func/-/PBCreateFileIDRefAsync
+C/func/-/PBCreateFileIDRefSync
+C/func/-/PBCreateFileUnicodeAsync
+C/func/-/PBCreateFileUnicodeSync
+C/func/-/PBCreateForkAsync
+C/func/-/PBCreateForkSync
+C/func/-/PBDeleteFileIDRefAsync
+C/func/-/PBDeleteFileIDRefSync
+C/func/-/PBDeleteForkAsync
+C/func/-/PBDeleteForkSync
+C/func/-/PBDeleteObjectAsync
+C/func/-/PBDeleteObjectSync
+C/func/-/PBDirCreateAsync
+C/func/-/PBDirCreateSync
+C/func/-/PBDTAddAPPLAsync
+C/func/-/PBDTAddAPPLSync
+C/func/-/PBDTAddIconAsync
+C/func/-/PBDTAddIconSync
+C/func/-/PBDTCloseDown
+C/func/-/PBDTDeleteAsync
+C/func/-/PBDTDeleteSync
+C/func/-/PBDTFlushAsync
+C/func/-/PBDTFlushSync
+C/func/-/PBDTGetAPPLAsync
+C/func/-/PBDTGetAPPLSync
+C/func/-/PBDTGetCommentAsync
+C/func/-/PBDTGetCommentSync
+C/func/-/PBDTGetIconAsync
+C/func/-/PBDTGetIconInfoAsync
+C/func/-/PBDTGetIconInfoSync
+C/func/-/PBDTGetIconSync
+C/func/-/PBDTGetInfoAsync
+C/func/-/PBDTGetInfoSync
+C/func/-/PBDTGetPath
+C/func/-/PBDTOpenInform
+C/func/-/PBDTRemoveAPPLAsync
+C/func/-/PBDTRemoveAPPLSync
+C/func/-/PBDTRemoveCommentAsync
+C/func/-/PBDTRemoveCommentSync
+C/func/-/PBDTResetAsync
+C/func/-/PBDTResetSync
+C/func/-/PBDTSetCommentAsync
+C/func/-/PBDTSetCommentSync
+C/func/-/PBExchangeFilesAsync
+C/func/-/PBExchangeFilesSync
+C/func/-/PBExchangeObjectsAsync
+C/func/-/PBExchangeObjectsSync
+C/func/-/PBFlushFileAsync
+C/func/-/PBFlushFileSync
+C/func/-/PBFlushForkAsync
+C/func/-/PBFlushForkSync
+C/func/-/PBFlushVolAsync
+C/func/-/PBFlushVolSync
+C/func/-/PBFlushVolumeAsync
+C/func/-/PBFlushVolumeSync
+C/func/-/PBFSCopyFileAsync
+C/func/-/PBFSCopyFileSync
+C/func/-/PBGetCatalogInfoAsync
+C/func/-/PBGetCatalogInfoBulkAsync
+C/func/-/PBGetCatalogInfoBulkSync
+C/func/-/PBGetCatalogInfoSync
+C/func/-/PBGetCatInfoAsync
+C/func/-/PBGetCatInfoSync
+C/func/-/PBGetEOFAsync
+C/func/-/PBGetEOFSync
+C/func/-/PBGetFCBInfoAsync
+C/func/-/PBGetFCBInfoSync
+C/func/-/PBGetForeignPrivsAsync
+C/func/-/PBGetForeignPrivsSync
+C/func/-/PBGetForkCBInfoAsync
+C/func/-/PBGetForkCBInfoSync
+C/func/-/PBGetForkPositionAsync
+C/func/-/PBGetForkPositionSync
+C/func/-/PBGetForkSizeAsync
+C/func/-/PBGetForkSizeSync
+C/func/-/PBGetFPosAsync
+C/func/-/PBGetFPosSync
+C/func/-/PBGetUGEntryAsync
+C/func/-/PBGetUGEntrySync
+C/func/-/PBGetVolMountInfo
+C/func/-/PBGetVolMountInfoSize
+C/func/-/PBGetVolumeInfoAsync
+C/func/-/PBGetVolumeInfoSync
+C/func/-/PBGetXCatInfoAsync
+C/func/-/PBGetXCatInfoSync
+C/func/-/PBHCopyFileAsync
+C/func/-/PBHCopyFileSync
+C/func/-/PBHCreateAsync
+C/func/-/PBHCreateSync
+C/func/-/PBHDeleteAsync
+C/func/-/PBHDeleteSync
+C/func/-/PBHGetDirAccessAsync
+C/func/-/PBHGetDirAccessSync
+C/func/-/PBHGetFInfoAsync
+C/func/-/PBHGetFInfoSync
+C/func/-/PBHGetLogInInfoAsync
+C/func/-/PBHGetLogInInfoSync
+C/func/-/PBHGetVInfoAsync
+C/func/-/PBHGetVInfoSync
+C/func/-/PBHGetVolAsync
+C/func/-/PBHGetVolParmsAsync
+C/func/-/PBHGetVolParmsSync
+C/func/-/PBHGetVolSync
+C/func/-/PBHMapIDAsync
+C/func/-/PBHMapIDSync
+C/func/-/PBHMapNameAsync
+C/func/-/PBHMapNameSync
+C/func/-/PBHMoveRenameAsync
+C/func/-/PBHMoveRenameSync
+C/func/-/PBHOpenAsync
+C/func/-/PBHOpenDenyAsync
+C/func/-/PBHOpenDenySync
+C/func/-/PBHOpenDFAsync
+C/func/-/PBHOpenDFSync
+C/func/-/PBHOpenRFAsync
+C/func/-/PBHOpenRFDenyAsync
+C/func/-/PBHOpenRFDenySync
+C/func/-/PBHOpenRFSync
+C/func/-/PBHOpenSync
+C/func/-/PBHRenameAsync
+C/func/-/PBHRenameSync
+C/func/-/PBHRstFLockAsync
+C/func/-/PBHRstFLockSync
+C/func/-/PBHSetDirAccessAsync
+C/func/-/PBHSetDirAccessSync
+C/func/-/PBHSetFInfoAsync
+C/func/-/PBHSetFInfoSync
+C/func/-/PBHSetFLockAsync
+C/func/-/PBHSetFLockSync
+C/func/-/PBHSetVolAsync
+C/func/-/PBHSetVolSync
+C/func/-/PBIterateForksAsync
+C/func/-/PBIterateForksSync
+C/func/-/PBLockRangeAsync
+C/func/-/PBLockRangeSync
+C/func/-/PBMakeFSRefAsync
+C/func/-/PBMakeFSRefSync
+C/func/-/PBMakeFSRefUnicodeAsync
+C/func/-/PBMakeFSRefUnicodeSync
+C/func/-/PBMakeFSSpecAsync
+C/func/-/PBMakeFSSpecSync
+C/func/-/PBMoveObjectAsync
+C/func/-/PBMoveObjectSync
+C/func/-/PBOpenForkAsync
+C/func/-/PBOpenForkSync
+C/func/-/PBOpenIteratorAsync
+C/func/-/PBOpenIteratorSync
+C/func/-/PBReadAsync
+C/func/-/PBReadForkAsync
+C/func/-/PBReadForkSync
+C/func/-/PBReadSync
+C/func/-/PBRenameUnicodeAsync
+C/func/-/PBRenameUnicodeSync
+C/func/-/PBResolveFileIDRefAsync
+C/func/-/PBResolveFileIDRefSync
+C/func/-/PBSetCatalogInfoAsync
+C/func/-/PBSetCatalogInfoSync
+C/func/-/PBSetCatInfoAsync
+C/func/-/PBSetCatInfoSync
+C/func/-/PBSetEOFAsync
+C/func/-/PBSetEOFSync
+C/func/-/PBSetForeignPrivsAsync
+C/func/-/PBSetForeignPrivsSync
+C/func/-/PBSetForkPositionAsync
+C/func/-/PBSetForkPositionSync
+C/func/-/PBSetForkSizeAsync
+C/func/-/PBSetForkSizeSync
+C/func/-/PBSetFPosAsync
+C/func/-/PBSetFPosSync
+C/func/-/PBSetVInfoAsync
+C/func/-/PBSetVInfoSync
+C/func/-/PBSetVolumeInfoAsync
+C/func/-/PBSetVolumeInfoSync
+C/func/-/PBShareAsync
+C/func/-/PBShareSync
+C/func/-/PBUnlockRangeAsync
+C/func/-/PBUnlockRangeSync
+C/func/-/PBUnmountVol
+C/func/-/PBUnshareAsync
+C/func/-/PBUnshareSync
+C/func/-/PBVolumeMount
+C/func/-/PBWaitIOComplete
+C/func/-/PBWriteAsync
+C/func/-/PBWriteForkAsync
+C/func/-/PBWriteForkSync
+C/func/-/PBWriteSync
+C/func/-/PBXGetVolInfoAsync
+C/func/-/PBXGetVolInfoSync
+C/func/-/PBXLockRangeAsync
+C/func/-/PBXLockRangeSync
+C/func/-/PBXUnlockRangeAsync
+C/func/-/PBXUnlockRangeSync
+C/func/-/pcap
+C/func/-/pcap_activate
+C/func/-/pcap_breakloop
+C/func/-/pcap_can_set_rfmon
+C/func/-/pcap_close
+C/func/-/pcap_compile
+C/func/-/pcap_create
+C/func/-/pcap_datalink
+C/func/-/pcap_datalink_name_to_val
+C/func/-/pcap_datalink_val_to_description
+C/func/-/pcap_datalink_val_to_name
+C/func/-/pcap_dispatch
+C/func/-/pcap_dump
+C/func/-/pcap_dump_close
+C/func/-/pcap_dump_file
+C/func/-/pcap_dump_flush
+C/func/-/pcap_dump_fopen
+C/func/-/pcap_dump_ftell
+C/func/-/pcap_dump_open
+C/func/-/pcap_file
+C/func/-/pcap_fileno
+C/func/-/pcap_findalldevs
+C/func/-/pcap_fopen_offline
+C/func/-/pcap_free_datalinks
+C/func/-/pcap_freealldevs
+C/func/-/pcap_freecode
+C/func/-/pcap_get_selectable_fd
+C/func/-/pcap_geterr
+C/func/-/pcap_getnonblock
+C/func/-/pcap_inject
+C/func/-/pcap_is_swapped
+C/func/-/pcap_lib_version
+C/func/-/pcap_list_datalinks
+C/func/-/pcap_lookupdev
+C/func/-/pcap_lookupnet
+C/func/-/pcap_loop
+C/func/-/pcap_major_version
+C/func/-/pcap_minor_version
+C/func/-/pcap_next
+C/func/-/pcap_next_ex
+C/func/-/pcap_offline_filter
+C/func/-/pcap_open_dead
+C/func/-/pcap_open_live
+C/func/-/pcap_open_offline
+C/func/-/pcap_perror
+C/func/-/pcap_sendpacket
+C/func/-/pcap_set_buffer_size
+C/func/-/pcap_set_datalink
+C/func/-/pcap_set_promisc
+C/func/-/pcap_set_rfmon
+C/func/-/pcap_set_snaplen
+C/func/-/pcap_set_timeout
+C/func/-/pcap_setdirection
+C/func/-/pcap_setfilter
+C/func/-/pcap_setnonblock
+C/func/-/pcap_snapshot
+C/func/-/pcap_stats
+C/func/-/pcap_statustostr
+C/func/-/pcap_strerror
+C/func/-/pclose
+C/econst/-/pdActionCompactSample
+C/econst/-/pdActionConvertSettingsToText
+C/econst/-/pdActionConvertSettingsToXML
+C/econst/-/pdActionConvertSettingsToXMLWithComments
+C/econst/-/pdActionConvertXMLToSettings
+C/econst/-/pdActionCustomDisposeControl
+C/econst/-/pdActionCustomDoEditCommand
+C/econst/-/pdActionCustomGetEnableValue
+C/econst/-/pdActionCustomGetValue
+C/econst/-/pdActionCustomHandleEvent
+C/econst/-/pdActionCustomNewControl
+C/econst/-/pdActionCustomPositionControl
+C/econst/-/pdActionCustomSetEditCallout
+C/econst/-/pdActionCustomSetEditMenu
+C/econst/-/pdActionCustomSetFocus
+C/econst/-/pdActionCustomSetPreviewPicture
+C/econst/-/pdActionCustomSetSampleTime
+C/econst/-/pdActionCustomShowHideControl
+C/econst/-/pdActionDoEditCommand
+C/econst/-/pdActionFetchPreview
+C/econst/-/pdActionGetDialogSettings
+C/econst/-/pdActionGetNextSample
+C/econst/-/pdActionGetPreviousSample
+C/econst/-/pdActionGetSubPanelMenuValue
+C/econst/-/pdActionModelessCallback
+C/econst/-/pdActionRunInEventLoop
+C/econst/-/pdActionSetDialogSettings
+C/econst/-/pdActionSetEditCallout
+C/econst/-/pdActionSetPropertyComponent
+C/econst/-/pdActionSetSampleTime
+Objective-C/cat/-/PDEPanel
+Objective-C/instm/NSObject/PDEPanelsForType:withHostInfo:
+Objective-C/cat/-/PDEPlugIn
+Objective-C/cat/-/PDEPlugInCallbackProtocol
+Objective-C/cl/-/PDFAction
+Objective-C/cl/-/PDFActionGoTo
+Objective-C/cl/-/PDFActionNamed
+Objective-C/cl/-/PDFActionRemoteGoTo
+Objective-C/cl/-/PDFActionResetForm
+Objective-C/cl/-/PDFActionURL
+Objective-C/cl/-/PDFAnnotation
+Objective-C/cl/-/PDFAnnotationButtonWidget
+Objective-C/cl/-/PDFAnnotationChoiceWidget
+Objective-C/cl/-/PDFAnnotationCircle
+Objective-C/cl/-/PDFAnnotationFreeText
+Objective-C/cl/-/PDFAnnotationInk
+Objective-C/cl/-/PDFAnnotationLine
+Objective-C/cl/-/PDFAnnotationLink
+Objective-C/cl/-/PDFAnnotationMarkup
+Objective-C/cl/-/PDFAnnotationPopup
+Objective-C/cl/-/PDFAnnotationSquare
+Objective-C/cl/-/PDFAnnotationStamp
+Objective-C/cl/-/PDFAnnotationText
+Objective-C/cl/-/PDFAnnotationTextWidget
+Objective-C/cl/-/PDFBorder
+Objective-C/cl/-/PDFDestination
+Objective-C/cl/-/PDFDocument
+C/data/-/PDFDocumentAuthorAttribute
+C/data/-/PDFDocumentCreationDateAttribute
+C/data/-/PDFDocumentCreatorAttribute
+C/data/-/PDFDocumentDidBeginFindNotification
+C/data/-/PDFDocumentDidBeginPageFindNotification
+C/data/-/PDFDocumentDidBeginPageWriteNotification
+C/data/-/PDFDocumentDidBeginWriteNotification
+C/data/-/PDFDocumentDidEndFindNotification
+C/data/-/PDFDocumentDidEndPageFindNotification
+C/data/-/PDFDocumentDidEndPageWriteNotification
+C/data/-/PDFDocumentDidEndWriteNotification
+C/data/-/PDFDocumentDidFindMatchNotification
+C/data/-/PDFDocumentDidUnlockNotification
+C/data/-/PDFDocumentKeywordsAttribute
+C/data/-/PDFDocumentModificationDateAttribute
+C/data/-/PDFDocumentProducerAttribute
+C/data/-/PDFDocumentSubjectAttribute
+C/data/-/PDFDocumentTitleAttribute
+Objective-C/clm/NSPrintOperation/PDFOperationWithView:insideRect:toData:
+Objective-C/clm/NSPrintOperation/PDFOperationWithView:insideRect:toData:printInfo:
+Objective-C/clm/NSPrintOperation/PDFOperationWithView:insideRect:toPath:printInfo:
+Objective-C/cl/-/PDFOutline
+Objective-C/cl/-/PDFPage
+C/tdef/-/PDFPrintScalingMode
+Objective-C/instm/NSPDFImageRep/PDFRepresentation
+Objective-C/cl/-/PDFSelection
+Objective-C/cl/-/PDFThumbnailView
+Objective-C/instm/PDFThumbnailView/PDFView
+Objective-C/cl/-/PDFView
+C/data/-/PDFViewAnnotationHitNotification
+C/data/-/PDFViewAnnotationWillHitNotification
+C/data/-/PDFViewChangedHistoryNotification
+C/data/-/PDFViewCopyPermissionNotification
+C/data/-/PDFViewDisplayBoxChangedNotification
+C/data/-/PDFViewDisplayModeChangedNotification
+C/data/-/PDFViewDocumentChangedNotification
+Objective-C/instm/NSObject/PDFViewOpenPDF:forRemoteGoToAction:
+C/data/-/PDFViewPageChangedNotification
+Objective-C/instm/NSObject/PDFViewPerformFind:
+Objective-C/instm/NSObject/PDFViewPerformGoToPage:
+Objective-C/instm/NSObject/PDFViewPerformPrint:
+Objective-C/instm/NSObject/PDFViewPrintJobTitle:
+C/data/-/PDFViewPrintPermissionNotification
+C/data/-/PDFViewScaleChangedNotification
+C/data/-/PDFViewSelectionChangedNotification
+Objective-C/instm/NSObject/PDFViewWillChangeScaleFactor:toScale:
+Objective-C/instm/NSObject/PDFViewWillClickOnLink:withURL:
+C/tdef/-/PDFWidgetControlType
+C/econst/-/pdOptionsEditCurrentEffectOnly
+C/econst/-/pdOptionsHidePreview
+C/econst/-/pdOptionsModalDialogBox
+C/func/-/pecho_wchar
+C/func/-/pechochar
+C++/instm/IOSharedDataQueue/peek
+C++/instm/IOPacketQueue/peek
+C/func/-/pem
+C/func/-/pem_passwd_cb
+C/func/-/PEM_read_bio_DHparams
+C/func/-/PEM_read_bio_DSA_PUBKEY
+C/func/-/PEM_read_bio_DSAparams
+C/func/-/PEM_read_bio_DSAPrivateKey
+C/func/-/PEM_read_bio_NETSCAPE_CERT_SEQUENCE
+C/func/-/PEM_read_bio_PKCS7
+C/func/-/PEM_read_bio_PrivateKey
+C/func/-/PEM_read_bio_PUBKEY
+C/func/-/PEM_read_bio_RSA_PUBKEY
+C/func/-/PEM_read_bio_RSAPrivateKey
+C/func/-/PEM_read_bio_RSAPublicKey
+C/func/-/PEM_read_bio_X509
+C/func/-/PEM_read_bio_X509_AUX
+C/func/-/PEM_read_bio_X509_CRL
+C/func/-/PEM_read_bio_X509_REQ
+C/func/-/PEM_read_DHparams
+C/func/-/PEM_read_DSA_PUBKEY
+C/func/-/PEM_read_DSAparams
+C/func/-/PEM_read_DSAPrivateKey
+C/func/-/PEM_read_NETSCAPE_CERT_SEQUENCE
+C/func/-/PEM_read_PKCS7
+C/func/-/PEM_read_PrivateKey
+C/func/-/PEM_read_PUBKEY
+C/func/-/PEM_read_RSA_PUBKEY
+C/func/-/PEM_read_RSAPrivateKey
+C/func/-/PEM_read_RSAPublicKey
+C/func/-/PEM_read_X509
+C/func/-/PEM_read_X509_AUX
+C/func/-/PEM_read_X509_CRL
+C/func/-/PEM_read_X509_REQ
+C/func/-/PEM_write_bio_DHparams
+C/func/-/PEM_write_bio_DSA_PUBKEY
+C/func/-/PEM_write_bio_DSAparams
+C/func/-/PEM_write_bio_DSAPrivateKey
+C/func/-/PEM_write_bio_NETSCAPE_CERT_SEQUENCE
+C/func/-/PEM_write_bio_PKCS7
+C/func/-/PEM_write_bio_PKCS8PrivateKey
+C/func/-/PEM_write_bio_PKCS8PrivateKey_nid
+C/func/-/PEM_write_bio_PrivateKey
+C/func/-/PEM_write_bio_PUBKEY
+C/func/-/PEM_write_bio_RSA_PUBKEY
+C/func/-/PEM_write_bio_RSAPrivateKey
+C/func/-/PEM_write_bio_RSAPublicKey
+C/func/-/PEM_write_bio_X509
+C/func/-/PEM_write_bio_X509_AUX
+C/func/-/PEM_write_bio_X509_CRL
+C/func/-/PEM_write_bio_X509_REQ
+C/func/-/PEM_write_bio_X509_REQ_NEW
+C/func/-/PEM_write_DHparams
+C/func/-/PEM_write_DSA_PUBKEY
+C/func/-/PEM_write_DSAparams
+C/func/-/PEM_write_DSAPrivateKey
+C/func/-/PEM_write_NETSCAPE_CERT_SEQUENCE
+C/func/-/PEM_write_PKCS7
+C/func/-/PEM_write_PKCS8PrivateKey
+C/func/-/PEM_write_PKCS8PrivateKey_nid
+C/func/-/PEM_write_PrivateKey
+C/func/-/PEM_write_PUBKEY
+C/func/-/PEM_write_RSA_PUBKEY
+C/func/-/PEM_write_RSAPrivateKey
+C/func/-/PEM_write_RSAPublicKey
+C/func/-/PEM_write_X509
+C/func/-/PEM_write_X509_AUX
+C/func/-/PEM_write_X509_CRL
+C/func/-/PEM_write_X509_REQ
+C/func/-/PEM_write_X509_REQ_NEW
+C++/data/IOAudioDevice/pendingPowerState
+Objective-C/instm/ABAddressBook/people
+Objective-C/instm/IMService/peopleWithScreenName:
+Objective-C/instm/XGJob/percentDone
+Objective-C/instm/NSNumberFormatter/percentSymbol
+C/tdef/-/perf_monitor_methods_t
+C/func/-/perf_monitor_register
+C/tdef/-/perf_monitor_t
+C/func/-/perf_monitor_unregister
+C/tdef/-/perfmon_disable_counters_method_t
+C/tdef/-/perfmon_enable_counters_method_t
+C/tdef/-/perfmon_supports_context_switch_method_t
+Objective-C/instm/XGActionMonitor/performAction
+Objective-C/instm/PDFView/performAction:
+Objective-C/instm/XGResource/performAction:withParameters:
+Objective-C/intfm/NSUserInterfaceItemSearching/performActionForItem:
+Objective-C/instm/NSMenu/performActionForItemAtIndex:
+Objective-C/instm/NSObject/performActionForPerson:identifier:
+Objective-C/instm/NSMenuView/performActionWithHighlightingForItemAtIndex:
+C++/instm/IOAudioEngine/performAudioEngineStart
+C++/instm/IOAudioEngine/performAudioEngineStop
+Objective-C/instm/NSButtonCell/performClick:
+Objective-C/instm/NSControl/performClick:
+Objective-C/instm/NSCell/performClick:
+Objective-C/instm/NSTableView/performClickOnCellAtColumn:row:
+Objective-C/instm/NSPopUpButtonCell/performClickWithFrame:inView:
+Objective-C/instm/NSWindow/performClose:
+C++/instm/IONetworkInterface/performCommand
+C++/instm/IOEthernetInterface/performCommand
+Objective-C/instm/NSEntityMigrationPolicy/performCustomValidationForEntityMapping:manager:error:
+Objective-C/instm/NSScriptCommand/performDefaultImplementation
+Objective-C/instm/XGJob/performDeleteAction
+Objective-C/instm/NSObject/performDragOperation:
+C++/instm/IOAudioEngine/performErase
+Objective-C/instm/NSWorkspace/performFileOperation:source:destination:files:tag:
+Objective-C/instm/NSTextView/performFindPanelAction:
+Objective-C/instm/WebView/performFindPanelAction:
+C++/instm/IOAudioEngine/performFlush
+Objective-C/clm/ScreenSaverView/performGammaFade
+Objective-C/instm/XGJob/performGetOutputFilesAction
+Objective-C/instm/XGJob/performGetOutputStreamsAction
+Objective-C/instm/XGJob/performGetSpecificationAction
+Objective-C/instm/NSButton/performKeyEquivalent:
+Objective-C/instm/NSMatrix/performKeyEquivalent:
+Objective-C/instm/NSResponder/performKeyEquivalent:
+Objective-C/instm/NSView/performKeyEquivalent:
+Objective-C/instm/NSMenu/performKeyEquivalent:
+Objective-C/instm/NSWindow/performMiniaturize:
+Objective-C/instm/NSView/performMnemonic:
+Objective-C/instm/NSResponder/performMnemonic:
+C++/instm/IOMemoryDescriptor/performOperation
+C++/instm/IOAudioDevice/performPowerStateChange
+Objective-C/instm/XGJob/performRestartAction
+Objective-C/instm/XGJob/performResumeAction
+Objective-C/instm/IOBluetoothDevice/performSDPQuery:
+Objective-C/intfm/NSObject/performSelector:
+Objective-C/instm/NSObject/performSelector:onThread:withObject:waitUntilDone:
+Objective-C/instm/NSObject/performSelector:onThread:withObject:waitUntilDone:modes:
+Objective-C/instm/NSRunLoop/performSelector:target:argument:order:modes:
+Objective-C/intfm/NSObject/performSelector:withObject:
+Objective-C/instm/NSObject/performSelector:withObject:afterDelay:
+Objective-C/instm/NSObject/performSelector:withObject:afterDelay:inModes:
+Objective-C/intfm/NSObject/performSelector:withObject:withObject:
+Objective-C/instm/NSObject/performSelectorInBackground:withObject:
+Objective-C/instm/NSObject/performSelectorOnMainThread:withObject:waitUntilDone:
+Objective-C/instm/NSObject/performSelectorOnMainThread:withObject:waitUntilDone:modes:
+Objective-C/instm/XGJob/performStopAction
+Objective-C/instm/XGController/performSubmitJobActionWithJobSpecification:gridIdentifier:
+Objective-C/instm/XGJob/performSuspendAction
+C++/instm/IOAudioControl/performValueChange
+Objective-C/instm/NSWindow/performZoom:
+C/func/-/PeriodicTask
+C/econst/-/permErr
+Objective-C/instm/NSNumberFormatter/perMillSymbol
+JavaScript/clconst/PositionError/PERMISSION_DENIED
+Objective-C/instm/SFAuthorization/permitWithRight:flags:
+Objective-C/instm/SFAuthorization/permitWithRights:flags:environment:authorizedRights:
+C/func/-/perror
+JavaScript/data/PageTransitionEvent/persisted
+Objective-C/instm/NSURLCredential/persistence
+Objective-C/instm/NSUserDefaults/persistentDomainForName:
+Objective-C/instm/NSUserDefaults/persistentDomainNames
+Objective-C/instm/CBIdentity/persistentReference
+Objective-C/instm/NSManagedObjectID/persistentStore
+Objective-C/instm/NSPersistentStore/persistentStoreCoordinator
+Objective-C/instm/NSManagedObjectContext/persistentStoreCoordinator
+Objective-C/intfm/NSPersistentStoreCoordinatorSyncing/persistentStoreCoordinator:didApplyChange:toManagedObject:inSyncSession:
+Objective-C/intfm/NSPersistentStoreCoordinatorSyncing/persistentStoreCoordinator:didCancelSyncSession:error:
+Objective-C/intfm/NSPersistentStoreCoordinatorSyncing/persistentStoreCoordinator:didCommitChanges:inSyncSession:
+Objective-C/intfm/NSPersistentStoreCoordinatorSyncing/persistentStoreCoordinator:didFinishSyncSession:
+Objective-C/intfm/NSPersistentStoreCoordinatorSyncing/persistentStoreCoordinator:didPullChangesInSyncSession:
+Objective-C/intfm/NSPersistentStoreCoordinatorSyncing/persistentStoreCoordinator:didPushChangesInSyncSession:
+Objective-C/intfm/NSPersistentStoreCoordinatorSyncing/persistentStoreCoordinator:willApplyChange:toManagedObject:inSyncSession:
+Objective-C/intfm/NSPersistentStoreCoordinatorSyncing/persistentStoreCoordinator:willDeleteRecordWithIdentifier:inSyncSession:
+Objective-C/intfm/NSPersistentStoreCoordinatorSyncing/persistentStoreCoordinator:willPullChangesInSyncSession:
+Objective-C/intfm/NSPersistentStoreCoordinatorSyncing/persistentStoreCoordinator:willPushChangesInSyncSession:
+Objective-C/intfm/NSPersistentStoreCoordinatorSyncing/persistentStoreCoordinator:willPushRecord:forManagedObject:inSyncSession:
+Objective-C/intfm/NSPersistentStoreCoordinatorSyncing/persistentStoreCoordinatorShouldStartSyncing:
+Objective-C/instm/NSPersistentStoreCoordinator/persistentStoreForURL:
+Objective-C/instm/NSPersistentStoreCoordinator/persistentStores
+Objective-C/instm/NSPersistentDocument/persistentStoreTypeForFileType:
+JavaScript/data/DOMWindow/personalbar
+Objective-C/instp/NSTouch/phase
+Objective-C/instm/NSTouch/phase
+C/tdef/-/PhonemeDescriptor
+C/tdef/-/PhonemeInfo
+Objective-C/instm/NSSpeechSynthesizer/phonemesFromText:
+Objective-C/instp/CWNetwork/phyMode
+Objective-C/instp/CWInterface/phyMode
+Objective-C/instm/NSProcessInfo/physicalMemory
+C++/tag/IOMemoryCursor/PhysicalSegment
+C/func/-/physio
+C/tdef/-/PicHandle
+Objective-C/instm/NSPrintPanel/pickedAllPages:
+Objective-C/instm/NSPrintPanel/pickedButton:
+Objective-C/instm/NSPrintPanel/pickedLayoutList:
+C/tdef/-/PicPtr
+Objective-C/instm/NSPICTImageRep/PICTRepresentation
+Objective-C/clm/IKPictureTaker/pictureTaker
+Objective-C/instm/XGAuthenticator/piggyback
+Objective-C/instm/ISyncSession/ping
+Objective-C/clm/NSPipe/pipe
+C/func/-/pipe
+C/tdef/-/Pixel_8
+C/tdef/-/Pixel_8888
+C/tdef/-/Pixel_F
+C/tdef/-/Pixel_FFFF
+Objective-C/instm/FxImage/pixelAspect
+Objective-C/instm/NSOpenGLContext/pixelBuffer
+Objective-C/instm/QTCaptureVideoPreviewOutput/pixelBufferAttributes
+Objective-C/instm/QTCaptureDecompressedVideoOutput/pixelBufferAttributes
+Objective-C/instm/NSOpenGLContext/pixelBufferCubeMapFace
+Objective-C/instm/NSOpenGLContext/pixelBufferMipMapLevel
+JavaScript/data/Screen/pixelDepth
+Objective-C/instm/NSOpenGLView/pixelFormat
+Objective-C/instm/FxImage/pixelFormat
+Objective-C/instm/NSOpenGLPixelBuffer/pixelsHigh
+Objective-C/instm/NSImageRep/pixelsHigh
+JavaScript/instm/WebGLRenderingContext/pixelStorei
+Objective-C/instm/NSOpenGLPixelBuffer/pixelsWide
+Objective-C/instm/NSImageRep/pixelsWide
+JavaScript/data/SVGSVGElement/pixelUnitToMillimeterX
+JavaScript/data/SVGSVGElement/pixelUnitToMillimeterY
+C/tag/-/PixMap
+C/tdef/-/PixMapHandle
+C/tdef/-/PixMapPtr
+C/func/-/PKCS12_create
+C/func/-/PKCS12_parse
+C/func/-/PKCS7_decrypt
+C/func/-/PKCS7_encrypt
+C/func/-/PKCS7_sign
+C/func/-/PKCS7_verify
+JavaScript/data/HTMLTextAreaElement/placeholder
+JavaScript/data/HTMLInputElement/placeholder
+Objective-C/instm/NSFormCell/placeholderAttributedString
+Objective-C/instm/NSPathCell/placeholderAttributedString
+Objective-C/instm/NSTextFieldCell/placeholderAttributedString
+Objective-C/instm/NSFormCell/placeholderString
+Objective-C/instm/NSPathCell/placeholderString
+Objective-C/instm/NSTextFieldCell/placeholderString
+Objective-C/instp/PSContent/plainTextString
+C/func/-/PlanesOfScreen
+JavaScript/instm/InspectorFrontendHost/platform
+JavaScript/data/Navigator/platform
+JavaScript/data/WorkerNavigator/platform
+C/econst/-/platform68k
+C/econst/-/platformAIXppc
+C/econst/-/platformIA32NativeEntryPoint
+C/econst/-/platformInterpreted
+C/econst/-/platformIRIXmips
+C/econst/-/platformLinuxintel
+C/econst/-/platformLinuxppc
+C/econst/-/platformMacOSx86
+C/econst/-/platformNeXT68k
+C/econst/-/platformNeXTIntel
+C/econst/-/platformNeXTppc
+C/econst/-/platformNeXTsparc
+C/econst/-/platformPowerPC
+C/econst/-/platformPowerPCNativeEntryPoint
+C/econst/-/platformSunOSintel
+C/econst/-/platformSunOSsparc
+C/econst/-/platformWin32
+Objective-C/instm/NSSound/play
+Objective-C/instm/QTMovie/play
+JavaScript/instm/HTMLMediaElement/play
+Objective-C/instm/QCView/play:
+Objective-C/instm/QTMovieView/play:
+Objective-C/instm/NSSound/playbackDeviceIdentifier
+JavaScript/data/HTMLMediaElement/playbackRate
+JavaScript/data/HTMLMediaElement/played
+Objective-C/clm/IMAVButton/playPauseButton
+C/econst/-/pleaseCacheBit
+C/econst/-/pleaseCacheMask
+Objective-C/instm/QCPlugInViewController/plugIn
+JavaScript/data/DOMWindow/Plugin
+JavaScript/cl/-/Plugin
+JavaScript/data/DOMWindow/PluginArray
+JavaScript/cl/-/PluginArray
+C/tdef/-/PluginDestroy
+Objective-C/clm/QCPlugIn/plugInKeys
+JavaScript/data/HTMLDocument/plugins
+JavaScript/data/Navigator/plugins
+Objective-C/intfcm/WebPlugInViewFactory/plugInViewWithArguments:
+Objective-C/instm/NSNumberFormatter/plusSign
+C++/instm/IOService/PM_Clamp_Timer_Expired
+C++/instm/IOService/PM_idle_timer_expiration
+C/func/-/pmap_getmaps
+C/func/-/pmap_getport
+C/func/-/pmap_rmtcall
+C/func/-/pmap_set
+C/func/-/pmap_unset
+C/func/-/PMBegin
+C/func/-/pmc_accessible_from_core
+C/func/-/pmc_config_set_interrupt_threshold
+C/tdef/-/pmc_config_set_interrupt_threshold_handler_method_t
+C/tdef/-/pmc_config_set_interrupt_threshold_method_t
+C/func/-/pmc_config_set_value
+C/tdef/-/pmc_config_set_value_method_t
+C/func/-/pmc_create_config
+C/tdef/-/pmc_create_config_method_t
+C/tdef/-/pmc_disable_method_t
+C/tdef/-/pmc_enable_method_t
+C/func/-/pmc_find_by_name
+C/func/-/pmc_free_config
+C/tdef/-/pmc_free_config_method_t
+C/func/-/pmc_free_pmc_list
+C/func/-/pmc_get_accessible_core_list
+C/tdef/-/pmc_get_accessible_cores_method_t
+C/tdef/-/pmc_get_count_method_t
+C/tdef/-/pmc_get_monitor_method_t
+C/func/-/pmc_get_name
+C/tdef/-/pmc_get_name_method_t
+C/func/-/pmc_get_pmc_list
+C/tdef/-/pmc_interrupt_method_t
+C/tdef/-/pmc_is_accessible_from_logical_core_method_t
+C/tdef/-/pmc_methods
+C/tdef/-/pmc_methods_t
+C/func/-/pmc_register
+C/tag/-/pmc_reservation
+C/func/-/pmc_reservation_free
+C/func/-/pmc_reservation_read
+C/func/-/pmc_reservation_start
+C/func/-/pmc_reservation_stop
+C/func/-/pmc_reservation_write
+C/func/-/pmc_reserve
+C/func/-/pmc_reserve_task
+C/func/-/pmc_reserve_thread
+C/tdef/-/pmc_set_config_method_t
+C/tdef/-/pmc_set_count_method_t
+C/tdef/-/pmc_t
+C/func/-/pmc_unregister
+C/func/-/PMCGImageCreateWithEPSDataProvider
+C/tdef/-/PMColorMode
+C/tdef/-/PMConstraintType
+C/func/-/PMConvertOldPrintRecord
+C/func/-/PMCopyAvailablePPDs
+C/func/-/PMCopyLocalizedPPD
+C/func/-/PMCopyPageFormat
+C/func/-/PMCopyPPDData
+C/func/-/PMCopyPrintSettings
+C/func/-/PMCreateGenericPrinter
+C/func/-/PMCreatePageFormat
+C/func/-/PMCreatePageFormatWithPMPaper
+C/func/-/PMCreatePrintSettings
+C/func/-/PMCreateSession
+C/tdef/-/PMDataFormat
+C/func/-/PMDefaultPageFormat
+C/func/-/PMDefaultPrintSettings
+C/tdef/-/PMDestinationType
+C/tdef/-/PMDialog
+C/func/-/PMDisableColorSync
+C/func/-/PMDisposePageFormat
+C/func/-/PMDisposePrintSettings
+C/tdef/-/PMDuplexMode
+C/func/-/PMEnableColorSync
+C/func/-/PMEnd
+C/func/-/PMError
+C/func/-/PMFlattenPageFormat
+C/func/-/PMFlattenPageFormatToCFData
+C/func/-/PMFlattenPageFormatToURL
+C/func/-/PMFlattenPrintSettings
+C/func/-/PMFlattenPrintSettingsToCFData
+C/func/-/PMFlattenPrintSettingsToURL
+C/func/-/PMGeneral
+C/func/-/PMGetAdjustedPageRect
+C/func/-/PMGetAdjustedPaperRect
+C/func/-/PMGetCollate
+C/func/-/PMGetColorMode
+C/func/-/PMGetCopies
+C/func/-/PMGetDestination
+C/func/-/PMGetDriverCreator
+C/func/-/PMGetDriverReleaseInfo
+C/func/-/PMGetDuplex
+C/func/-/PMGetFirstPage
+C/func/-/PMGetGrafPtr
+C/func/-/PMGetIndexedPrinterResolution
+C/func/-/PMGetJobName
+C/func/-/PMGetJobNameCFString
+C/func/-/PMGetLanguageInfo
+C/func/-/PMGetLastPage
+C/func/-/PMGetOrientation
+C/func/-/PMGetPageFormatExtendedData
+C/func/-/PMGetPageFormatPaper
+C/func/-/PMGetPageRange
+C/func/-/PMGetPhysicalPageSize
+C/func/-/PMGetPhysicalPaperSize
+C/func/-/PMGetPrinterResolution
+C/func/-/PMGetPrinterResolutionCount
+C/func/-/PMGetPrintSettingsExtendedData
+C/func/-/PMGetResolution
+C/func/-/PMGetScale
+C/func/-/PMGetUnadjustedPageRect
+C/func/-/PMGetUnadjustedPaperRect
+C/tdef/-/PMIdleProcPtr
+C/tdef/-/PMIdleUPP
+C++/instm/IOService/PMinit
+C/func/-/PMIsPostScriptDriver
+C/tag/-/PMLanguageInfo
+C/func/-/PMMakeOldPrintRecord
+C/func/-/PMNewPageFormat
+C/func/-/PMNewPrintSettings
+C/tdef/-/PMObject
+C/tdef/-/PMOrientation
+C/tdef/-/PMPageFormat
+Objective-C/instm/NSPrintInfo/PMPageFormat
+C/func/-/PMPageFormatCreateDataRepresentation
+C/func/-/PMPageFormatCreateWithDataRepresentation
+C/func/-/PMPageFormatGetPrinterID
+C/econst/-/PMPageScalingHorizontalKey
+C/tdef/-/PMPaper
+C/func/-/PMPaperCreate
+C/func/-/PMPaperCreateCustom
+C/func/-/PMPaperCreateLocalizedName
+C/func/-/PMPaperGetHeight
+C/func/-/PMPaperGetID
+C/func/-/PMPaperGetMargins
+C/func/-/PMPaperGetName
+C/func/-/PMPaperGetPPDPaperName
+C/func/-/PMPaperGetPrinterID
+C/func/-/PMPaperGetWidth
+C/func/-/PMPaperIsCustom
+C/tdef/-/PMPaperMargins
+C/func/-/PMPostScriptBegin
+C/func/-/PMPostScriptData
+C/func/-/PMPostScriptEnd
+C/func/-/PMPostScriptFile
+C/func/-/PMPostScriptHandle
+C/tdef/-/PMPPDDomain
+C/tdef/-/PMPreset
+C/func/-/PMPresetCopyName
+C/func/-/PMPresetCreatePrintSettings
+C/func/-/PMPresetGetAttributes
+C/tdef/-/PMPrintContext
+C/tdef/-/PMPrinter
+Objective-C/instm/NSObject/PMPrinter
+C/func/-/PMPrinterCopyDescriptionURL
+C/func/-/PMPrinterCopyDeviceURI
+C/func/-/PMPrinterCopyHostName
+C/func/-/PMPrinterCopyPresets
+C/func/-/PMPrinterCreateFromPrinterID
+C/func/-/PMPrinterGetCommInfo
+C/func/-/PMPrinterGetDescriptionURL
+C/func/-/PMPrinterGetDeviceURI
+C/func/-/PMPrinterGetDriverCreator
+C/func/-/PMPrinterGetDriverReleaseInfo
+C/func/-/PMPrinterGetID
+C/func/-/PMPrinterGetIndexedPrinterResolution
+C/func/-/PMPrinterGetLanguageInfo
+C/func/-/PMPrinterGetLocation
+C/func/-/PMPrinterGetMakeAndModelName
+C/func/-/PMPrinterGetMimeTypes
+C/func/-/PMPrinterGetName
+C/func/-/PMPrinterGetOutputResolution
+C/func/-/PMPrinterGetPaperList
+C/func/-/PMPrinterGetPrinterResolution
+C/func/-/PMPrinterGetPrinterResolutionCount
+C/func/-/PMPrinterGetState
+C/func/-/PMPrinterIsDefault
+C/func/-/PMPrinterIsFavorite
+C/func/-/PMPrinterIsPostScriptCapable
+C/func/-/PMPrinterIsPostScriptPrinter
+C/func/-/PMPrinterIsRemote
+C/func/-/PMPrinterPrintWithFile
+C/func/-/PMPrinterPrintWithProvider
+C/func/-/PMPrinterSetDefault
+C/func/-/PMPrinterSetOutputResolution
+C/tdef/-/PMPrinterState
+C/func/-/PMPrinterWritePostScriptToURL
+C/tdef/-/PMPrintingPhaseType
+C/tdef/-/PMPrintSession
+Objective-C/instm/NSPrintInfo/PMPrintSession
+C/tdef/-/PMPrintSettings
+Objective-C/instm/NSPrintInfo/PMPrintSettings
+C/func/-/PMPrintSettingsCopyAsDictionary
+C/func/-/PMPrintSettingsCopyKeys
+C/func/-/PMPrintSettingsCreateDataRepresentation
+C/func/-/PMPrintSettingsCreateWithDataRepresentation
+C/func/-/PMPrintSettingsGetJobName
+C/func/-/PMPrintSettingsGetValue
+C/func/-/PMPrintSettingsSetJobName
+C/func/-/PMPrintSettingsSetValue
+C/func/-/PMPrintSettingsToOptions
+C/func/-/PMPrintSettingsToOptionsWithPrinterAndPageFormat
+C/tdef/-/PMQualityMode
+C/tag/-/PMRect
+C/tdef/-/PMRectList
+C/func/-/PMRelease
+C/tag/-/PMResolution
+C/func/-/PMRetain
+C/tdef/-/PMServer
+C/func/-/PMServerCreatePrinterList
+C/func/-/PMServerLaunchPrinterBrowser
+C/func/-/PMSessionBeginCGDocumentNoDialog
+C/func/-/PMSessionBeginDocumentNoDialog
+C/func/-/PMSessionBeginPageNoDialog
+C/func/-/PMSessionConvertOldPrintRecord
+C/func/-/PMSessionCopyDestinationFormat
+C/func/-/PMSessionCopyDestinationLocation
+C/func/-/PMSessionCopyOutputFormatList
+C/func/-/PMSessionCreatePageFormatList
+C/func/-/PMSessionCreatePrinterList
+C/func/-/PMSessionDefaultPageFormat
+C/func/-/PMSessionDefaultPrintSettings
+C/func/-/PMSessionDisableColorSync
+C/func/-/PMSessionEnableColorSync
+C/func/-/PMSessionEndDocumentNoDialog
+C/func/-/PMSessionEndPageNoDialog
+C/func/-/PMSessionError
+C/func/-/PMSessionGeneral
+C/func/-/PMSessionGetCGGraphicsContext
+C/func/-/PMSessionGetCurrentPrinter
+C/func/-/PMSessionGetDataFromSession
+C/func/-/PMSessionGetDestinationType
+C/func/-/PMSessionGetDocumentFormatGeneration
+C/func/-/PMSessionGetDocumentFormatSupported
+C/func/-/PMSessionGetGraphicsContext
+C/func/-/PMSessionIsDocumentFormatSupported
+C/func/-/PMSessionMakeOldPrintRecord
+C/func/-/PMSessionPostScriptBegin
+C/func/-/PMSessionPostScriptData
+C/func/-/PMSessionPostScriptEnd
+C/func/-/PMSessionPostScriptFile
+C/func/-/PMSessionPostScriptHandle
+C/func/-/PMSessionSetCurrentPMPrinter
+C/func/-/PMSessionSetCurrentPrinter
+C/func/-/PMSessionSetDataInSession
+C/func/-/PMSessionSetDestination
+C/func/-/PMSessionSetDocumentFormatGeneration
+C/func/-/PMSessionSetError
+C/func/-/PMSessionSetIdleProc
+C/func/-/PMSessionSetPSInjectionData
+C/func/-/PMSessionValidatePageFormat
+C/func/-/PMSessionValidatePrintSettings
+C/func/-/PMSetAdjustedPageRect
+C/func/-/PMSetCollate
+C/func/-/PMSetColorMode
+C/func/-/PMSetCopies
+C/func/-/PMSetDuplex
+C/func/-/PMSetError
+C/func/-/PMSetFirstPage
+C/func/-/PMSetIdleProc
+C/func/-/PMSetJobName
+C/func/-/PMSetJobNameCFString
+C/func/-/PMSetLastPage
+C/func/-/PMSetOrientation
+C/func/-/PMSetPageFormatExtendedData
+C/func/-/PMSetPageRange
+C/func/-/PMSetPhysicalPaperSize
+C/func/-/PMSetPrintSettingsExtendedData
+C/func/-/PMSetProfile
+C/func/-/PMSetResolution
+C/func/-/PMSetScale
+C/func/-/PMSetUnadjustedPaperRect
+C++/instm/IOService/PMstop
+Objective-C/instm/NSDateFormatter/PMSymbol
+C/tdef/-/PMTag
+C/func/-/PMTemplateCreate
+C/func/-/PMTemplateCreateXML
+C/func/-/PMTemplateDelete
+C/func/-/PMTemplateGetBooleanDefaultValue
+C/func/-/PMTemplateGetCFArrayConstraintValue
+C/func/-/PMTemplateGetCFDataDefaultValue
+C/func/-/PMTemplateGetCFDefaultValue
+C/func/-/PMTemplateGetCFRangeConstraintValue
+C/func/-/PMTemplateGetConstraintType
+C/func/-/PMTemplateGetDoubleDefaultValue
+C/func/-/PMTemplateGetDoubleListConstraintValue
+C/func/-/PMTemplateGetDoubleRangeConstraintValue
+C/func/-/PMTemplateGetDoubleRangeDefaultValue
+C/func/-/PMTemplateGetDoubleRangesConstraintValue
+C/func/-/PMTemplateGetListTicketConstraintValue
+C/func/-/PMTemplateGetPMRectDefaultValue
+C/func/-/PMTemplateGetPMRectListConstraintValue
+C/func/-/PMTemplateGetPMTicketDefaultValue
+C/func/-/PMTemplateGetSInt32DefaultValue
+C/func/-/PMTemplateGetSInt32ListConstraintValue
+C/func/-/PMTemplateGetSInt32RangeConstraintValue
+C/func/-/PMTemplateGetSInt32RangeDefaultValue
+C/func/-/PMTemplateGetSInt32RangesConstraintValue
+C/func/-/PMTemplateGetValueType
+C/func/-/PMTemplateIsLocked
+C/func/-/PMTemplateLoadFromXML
+C/func/-/PMTemplateMakeEntry
+C/func/-/PMTemplateMakeFullEntry
+C/func/-/PMTemplateMergeTemplates
+C/tdef/-/PMTemplateRef
+C/func/-/PMTemplateRemoveEntry
+C/func/-/PMTemplateSetBooleanDefaultValue
+C/func/-/PMTemplateSetCFArrayConstraintValue
+C/func/-/PMTemplateSetCFDataDefaultValue
+C/func/-/PMTemplateSetCFDefaultValue
+C/func/-/PMTemplateSetCFRangeConstraint
+C/func/-/PMTemplateSetDoubleDefaultValue
+C/func/-/PMTemplateSetDoubleListConstraint
+C/func/-/PMTemplateSetDoubleRangeConstraint
+C/func/-/PMTemplateSetDoubleRangeDefaultValue
+C/func/-/PMTemplateSetDoubleRangesConstraint
+C/func/-/PMTemplateSetPMRectDefaultValue
+C/func/-/PMTemplateSetPMRectListConstraint
+C/func/-/PMTemplateSetPMTicketDefaultValue
+C/func/-/PMTemplateSetPMTicketListConstraint
+C/func/-/PMTemplateSetSInt32DefaultValue
+C/func/-/PMTemplateSetSInt32ListConstraint
+C/func/-/PMTemplateSetSInt32RangeConstraint
+C/func/-/PMTemplateSetSInt32RangeDefaultValue
+C/func/-/PMTemplateSetSInt32RangesConstraint
+C/func/-/PMTemplateValidateItem
+C/func/-/PMTicketConfirmTicket
+C/func/-/PMTicketContainsItem
+C/func/-/PMTicketContainsTicket
+C/func/-/PMTicketCopy
+C/func/-/PMTicketCopyItem
+C/func/-/PMTicketCreate
+C/func/-/PMTicketCreateTemplate
+C/func/-/PMTicketDeleteItem
+C/tdef/-/PMTicketErrors
+C/func/-/PMTicketFillFromArray
+C/func/-/PMTicketGetAllocator
+C/func/-/PMTicketGetAPIVersion
+C/func/-/PMTicketGetBoolean
+C/func/-/PMTicketGetBytes
+C/func/-/PMTicketGetCFArray
+C/func/-/PMTicketGetCFBoolean
+C/func/-/PMTicketGetCFData
+C/func/-/PMTicketGetCFDate
+C/func/-/PMTicketGetCFDictionary
+C/func/-/PMTicketGetCFNumber
+C/func/-/PMTicketGetCFString
+C/func/-/PMTicketGetCString
+C/func/-/PMTicketGetDouble
+C/func/-/PMTicketGetEnumType
+C/func/-/PMTicketGetIndexPMResolution
+C/func/-/PMTicketGetItem
+C/func/-/PMTicketGetLockedState
+C/func/-/PMTicketGetMetaItem
+C/func/-/PMTicketGetPMRect
+C/func/-/PMTicketGetPMResolution
+C/func/-/PMTicketGetPPDDict
+C/func/-/PMTicketGetPString
+C/func/-/PMTicketGetRetainCount
+C/func/-/PMTicketGetSInt32
+C/func/-/PMTicketGetTicket
+C/func/-/PMTicketGetType
+C/func/-/PMTicketGetUInt32
+C/func/-/PMTicketIsItemLocked
+C/tag/-/PMTicketItemStruct
+C/tdef/-/PMTicketItemType
+C/func/-/PMTicketLockItem
+C/func/-/PMTicketReadXMLFromFile
+C/tdef/-/PMTicketRef
+C/func/-/PMTicketRelease
+C/func/-/PMTicketReleaseAndClear
+C/func/-/PMTicketReleaseItem
+C/func/-/PMTicketRemoveTicket
+C/func/-/PMTicketRetain
+C/func/-/PMTicketSetBoolean
+C/func/-/PMTicketSetBytes
+C/func/-/PMTicketSetCFArray
+C/func/-/PMTicketSetCFBoolean
+C/func/-/PMTicketSetCFData
+C/func/-/PMTicketSetCFDate
+C/func/-/PMTicketSetCFDictionary
+C/func/-/PMTicketSetCFNumber
+C/func/-/PMTicketSetCFString
+C/func/-/PMTicketSetCString
+C/func/-/PMTicketSetCStringArray
+C/func/-/PMTicketSetDouble
+C/func/-/PMTicketSetDoubleArray
+C/func/-/PMTicketSetItem
+C/func/-/PMTicketSetMetaItem
+C/func/-/PMTicketSetPMRect
+C/func/-/PMTicketSetPMRectArray
+C/func/-/PMTicketSetPMResolution
+C/func/-/PMTicketSetPMResolutionArray
+C/func/-/PMTicketSetPString
+C/func/-/PMTicketSetSInt32
+C/func/-/PMTicketSetSInt32Array
+C/func/-/PMTicketSetTemplate
+C/func/-/PMTicketSetTicket
+C/func/-/PMTicketSetUInt32
+C/func/-/PMTicketSetUInt32Array
+C/func/-/PMTicketToXML
+C/tdef/-/PMTicketType
+C/func/-/PMTicketUnlockItem
+C/func/-/PMTicketValidate
+C/func/-/PMTicketWriteXML
+C/func/-/PMTicketWriteXMLToFile
+C/func/-/PMUnflattenPageFormat
+C/func/-/PMUnflattenPageFormatWithCFData
+C/func/-/PMUnflattenPageFormatWithURL
+C/func/-/PMUnflattenPrintSettings
+C/func/-/PMUnflattenPrintSettingsWithCFData
+C/func/-/PMUnflattenPrintSettingsWithURL
+C/func/-/PMValidatePageFormat
+C/func/-/PMValidatePrintSettings
+C/tdef/-/PMValueType
+C/func/-/PMWorkflowCopyItems
+C/func/-/PMWorkflowSubmitPDFWithOptions
+C/func/-/PMWorkflowSubmitPDFWithSettings
+C/func/-/PMXMLToTicket
+C/func/-/png_64bit_product
+C/func/-/png_access_version_number
+C/func/-/png_build_gamma_table
+C/func/-/png_build_grayscale_palette
+C/func/-/png_calculate_crc
+C/func/-/png_check_cHRM_fixed
+C/func/-/png_check_chunk_name
+C/func/-/png_check_IHDR
+C/func/-/png_check_keyword
+C/func/-/png_check_sig
+C/func/-/png_chunk_error
+C/func/-/png_chunk_warning
+C/func/-/png_combine_row
+C/func/-/png_convert_from_struct_tm
+C/func/-/png_convert_from_time_t
+C/func/-/png_convert_to_rfc1123
+C/func/-/png_correct_palette
+C/func/-/png_crc_error
+C/func/-/png_crc_finish
+C/func/-/png_crc_read
+C/func/-/png_create_info_struct
+C/func/-/png_create_read_struct
+C/func/-/png_create_read_struct_2
+C/func/-/png_create_struct
+C/func/-/png_create_struct_2
+C/func/-/png_create_write_struct
+C/func/-/png_create_write_struct_2
+C/func/-/png_debug
+C/func/-/png_debug1
+C/func/-/png_debug2
+C/func/-/png_decompress_chunk
+C/func/-/png_destroy_info_struct
+C/func/-/png_destroy_read_struct
+C/func/-/png_destroy_write_struct
+C/func/-/png_error
+C/func/-/png_free
+C/func/-/png_free_chunk_list
+C/func/-/png_free_data
+C/func/-/png_free_default
+C/func/-/png_get_bit_depth
+C/func/-/png_get_bKGD
+C/func/-/png_get_channels
+C/func/-/png_get_cHRM
+C/func/-/png_get_cHRM_fixed
+C/func/-/png_get_color_type
+C/func/-/png_get_compression_type
+C/func/-/png_get_copyright
+C/func/-/png_get_error_ptr
+C/func/-/png_get_filter_type
+C/func/-/png_get_gAMA
+C/func/-/png_get_gAMA_fixed
+C/func/-/png_get_header_ver
+C/func/-/png_get_header_version
+C/func/-/png_get_hIST
+C/func/-/png_get_iCCP
+C/tdef/-/pnotComponent
+C/func/-/pnoutrefresh
+C/tag/-/Point
+Objective-C/instm/PDFDestination/point
+Objective-C/instm/PDFActionRemoteGoTo/point
+Objective-C/clm/NSPointerArray/pointerArrayWithOptions:
+Objective-C/clm/NSPointerArray/pointerArrayWithPointerFunctions:
+Objective-C/clm/NSPointerArray/pointerArrayWithStrongObjects
+Objective-C/clm/NSPointerArray/pointerArrayWithWeakObjects
+Objective-C/instm/NSPointerArray/pointerAtIndex:
+JavaScript/data/NodeIterator/pointerBeforeReferenceNode
+Objective-C/instm/NSHashTable/pointerFunctions
+Objective-C/instm/NSPointerArray/pointerFunctions
+Objective-C/clm/NSPointerFunctions/pointerFunctionsWithOptions:
+Objective-C/instm/NSValue/pointerValue
+Objective-C/instm/NSEvent/pointingDeviceID
+Objective-C/instm/NSEvent/pointingDeviceSerialNumber
+Objective-C/instm/NSEvent/pointingDeviceType
+Objective-C/clm/NSCursor/pointingHandCursor
+JavaScript/data/SVGAnimatedPoints/points
+JavaScript/clconst/WebGLRenderingContext/POINTS
+JavaScript/data/SVGFESpotLightElement/pointsAtX
+JavaScript/data/SVGFESpotLightElement/pointsAtY
+JavaScript/data/SVGFESpotLightElement/pointsAtZ
+Objective-C/instm/NSFont/pointSize
+Objective-C/instm/NSFontDescriptor/pointSize
+Objective-C/instm/NSValue/pointValue
+Objective-C/instm/SFCertificateView/policies
+Objective-C/instm/SFCertificatePanel/policies
+Objective-C/instm/SFChooseIdentityPanel/policies
+Objective-C/instm/WebView/policyDelegate
+C/func/-/poll
+C++/instm/IOBlockStorageDriver/pollMedia
+JavaScript/clconst/WebGLRenderingContext/POLYGON_OFFSET_FACTOR
+JavaScript/clconst/WebGLRenderingContext/POLYGON_OFFSET_FILL
+JavaScript/clconst/WebGLRenderingContext/POLYGON_OFFSET_UNITS
+JavaScript/instm/WebGLRenderingContext/polygonOffset
+Objective-C/clm/NSCursor/pop
+Objective-C/instm/NSCursor/pop
+C/func/-/popen
+JavaScript/cl/-/PopStateEvent
+Objective-C/instm/PDFAnnotation/popup
+Objective-C/clm/NSMenu/popUpContextMenu:withEvent:forView:
+Objective-C/clm/NSMenu/popUpContextMenu:withEvent:forView:withFont:
+Objective-C/instm/NSMenu/popUpMenuPositioningItem:atLocation:inView:
+Objective-C/instm/IKPictureTaker/popUpRecentsMenuForView:withDelegate:didEndSelector:contextInfo:
+Objective-C/instm/NSStatusItem/popUpStatusItemMenu:
+Objective-C/instm/NSNetService/port
+Objective-C/instm/NSURLProtectionSpace/port
+Objective-C/instm/NSURL/port
+Objective-C/clm/NSPort/port
+JavaScript/data/HTMLAreaElement/port
+JavaScript/data/HTMLAnchorElement/port
+JavaScript/data/SharedWorker/port
+JavaScript/instm/InspectorFrontendHost/port
+JavaScript/data/window/port
+JavaScript/data/WorkerLocation/port
+JavaScript/data/MessageChannel/port1
+JavaScript/data/MessageChannel/port2
+Objective-C/clm/NSPortCoder/portCoderWithReceivePort:sendPort:components:
+Objective-C/instm/NSMachBootstrapServer/portForName:
+Objective-C/instm/NSPortNameServer/portForName:
+Objective-C/instm/NSMessagePortNameServer/portForName:
+Objective-C/instm/NSSocketPortNameServer/portForName:
+Objective-C/instm/NSMachBootstrapServer/portForName:host:
+Objective-C/instm/NSMessagePortNameServer/portForName:host:
+Objective-C/instm/NSPortNameServer/portForName:host:
+Objective-C/instm/NSSocketPortNameServer/portForName:host:
+Objective-C/instm/NSSocketPortNameServer/portForName:host:nameServerPortNumber:
+C/tag/-/PortIndicatorSelectors
+Objective-C/instm/NSHTTPCookie/portList
+Objective-C/instm/XGConnection/portnumber
+JavaScript/data/MessageEvent/ports
+Objective-C/clm/NSMachPort/portWithMachPort:
+Objective-C/clm/NSMachPort/portWithMachPort:options:
+C/func/-/pos_form_cursor
+C/func/-/pos_menu_cursor
+Objective-C/clm/NSObject/poseAsClass:
+C/econst/-/posErr
+Objective-C/instm/NSPositionalSpecifier/position
+Objective-C/instp/CALayer/position
+Objective-C/instm/CALayer/position
+JavaScript/data/HTMLProgressElement/position
+JavaScript/data/XMLHttpRequestProgressEvent/position
+JavaScript/clconst/PositionError/POSITION_UNAVAILABLE
+JavaScript/cl/-/PositionError
+Objective-C/instm/NSFont/positionOfGlyph:forCharacter:struckOverRect:
+Objective-C/instm/NSFont/positionOfGlyph:precededByGlyph:isNominal:
+Objective-C/instm/NSFont/positionOfGlyph:struckOverGlyph:metricsExist:
+Objective-C/instm/NSFont/positionOfGlyph:struckOverRect:metricsExist:
+Objective-C/instm/NSFont/positionOfGlyph:withRelation:toBaseGlyph:totalAdvancement:metricsExist:
+Objective-C/instm/NSFont/positionsForCompositeSequence:numberOfGlyphs:pointArray:
+Objective-C/instm/NSNumberFormatter/positiveFormat
+Objective-C/instm/NSNumberFormatter/positiveInfinitySymbol
+Objective-C/instm/NSNumberFormatter/positivePrefix
+Objective-C/instm/NSNumberFormatter/positiveSuffix
+C/func/-/posix2time
+C/func/-/posix_madvise
+C/func/-/posix_memalign
+C/func/-/posix_openpt
+C/func/-/posix_spawn
+C/func/-/posix_spawn_file_actions_addclose
+C/func/-/posix_spawn_file_actions_adddup2
+C/func/-/posix_spawn_file_actions_addopen
+C/func/-/posix_spawn_file_actions_destroy
+C/func/-/posix_spawn_file_actions_init
+C/func/-/posix_spawnattr_destroy
+C/func/-/posix_spawnattr_getbinpref_np
+C/func/-/posix_spawnattr_getflags
+C/func/-/posix_spawnattr_getpgroup
+C/func/-/posix_spawnattr_getsigdefault
+C/func/-/posix_spawnattr_getsigmask
+C/func/-/posix_spawnattr_init
+C/func/-/posix_spawnattr_setbinpref_np
+C/func/-/posix_spawnattr_setexceptionports_np
+C/func/-/posix_spawnattr_setflags
+C/func/-/posix_spawnattr_setpgroup
+C/func/-/posix_spawnattr_setsigdefault
+C/func/-/posix_spawnattr_setsigmask
+C/func/-/posix_spawnattr_setspecialport_np
+C/func/-/posix_spawnp
+Objective-C/instm/CBGroupIdentity/posixGID
+Objective-C/instm/CBIdentity/posixName
+Objective-C/instm/CBUserIdentity/posixUID
+C/func/-/post_form
+C/func/-/post_menu
+C++/instm/IOHIDDevice/postElementValues
+JavaScript/data/HTMLVideoElement/poster
+Objective-C/instm/QTMovie/posterImage
+Objective-C/instm/NSWindow/postEvent:atStart:
+Objective-C/instm/NSApplication/postEvent:atStart:
+JavaScript/instm/DedicatedWorkerContext/postMessage
+JavaScript/instm/DOMWindow/postMessage
+JavaScript/instm/MessagePort/postMessage
+JavaScript/instm/Worker/postMessage
+C++/clm/OSMetaClass/postModLoad
+Objective-C/instm/NSServerNotificationCenter/postNotification:
+Objective-C/instm/NSNotificationCenter/postNotification:
+Objective-C/instm/NSDistributedNotificationCenter/postNotificationName:object:
+Objective-C/instm/NSServerNotificationCenter/postNotificationName:object:
+Objective-C/instm/NSNotificationCenter/postNotificationName:object:
+Objective-C/instm/NSDistributedNotificationCenter/postNotificationName:object:userInfo:
+Objective-C/instm/NSServerNotificationCenter/postNotificationName:object:userInfo:
+Objective-C/instm/NSNotificationCenter/postNotificationName:object:userInfo:
+Objective-C/instm/NSDistributedNotificationCenter/postNotificationName:object:userInfo:deliverImmediately:
+Objective-C/instm/NSDistributedNotificationCenter/postNotificationName:object:userInfo:options:
+Objective-C/instm/IKCameraDeviceView/postProcessApplication
+Objective-C/instm/IKScannerDeviceView/postProcessApplication
+Objective-C/instp/IKScannerDeviceView/postProcessApplication
+Objective-C/instp/IKCameraDeviceView/postProcessApplication
+Objective-C/instm/NSView/postsBoundsChangedNotifications
+Objective-C/instm/NSFontDescriptor/postscriptName
+Objective-C/instm/NSView/postsFrameChangedNotifications
+C/func/-/pow
+Objective-C/instp/CWInterface/power
+C++/instm/IOService/powerChangeDone
+C++/instm/IOService/powerOverrideOffPriv
+C++/instm/IOService/powerOverrideOnPriv
+Objective-C/instp/CWInterface/powerSave
+C/func/IOPMPowerSource.h/powerSource
+C++/instm/IONetworkInterface/powerStateDidChangeTo
+C++/instm/IOKernelDebugger/powerStateDidChangeTo
+C++/instm/IOService/powerStateDidChangeTo
+C++/instm/IOService/powerStateForDomainState
+C++/instm/IONetworkInterface/powerStateWillChangeTo
+C++/instm/IOKernelDebugger/powerStateWillChangeTo
+C++/instm/IOService/powerStateWillChangeTo
+C/tag/-/PowerSwitching
+C/func/-/powf
+C/func/-/powl
+Objective-C/instm/NSObject/ppdFile
+Objective-C/instm/NSObject/PPDOptionKeyValueDidChange:ppdChoice:
+C/func/-/pread
+C/tag/-/prebound_dylib_command
+Objective-C/instm/NSString/precomposedStringWithCanonicalMapping
+Objective-C/instm/NSString/precomposedStringWithCompatibilityMapping
+Objective-C/clm/NSXMLDTD/predefinedEntityDeclarationForName:
+Objective-C/clm/NSXMLNode/predefinedNamespaceForPrefix:
+Objective-C/instm/NSMetadataQuery/predicate
+Objective-C/instm/NSExpression/predicate
+Objective-C/instm/NSRuleEditor/predicate
+Objective-C/binding/NSSearchField/predicate
+Objective-C/instm/NSFetchRequest/predicate
+Objective-C/instm/NSPredicate/predicateFormat
+Objective-C/instm/NSRuleEditor/predicateForRow:
+Objective-C/instm/NSComparisonPredicate/predicateOperatorType
+Objective-C/clm/NSPredicate/predicateWithBlock:
+Objective-C/clm/NSPredicate/predicateWithFormat:
+Objective-C/clm/NSPredicate/predicateWithFormat:argumentArray:
+Objective-C/clm/NSPredicate/predicateWithFormat:arguments:
+Objective-C/clm/NSComparisonPredicate/predicateWithLeftExpression:rightExpression:customSelector:
+Objective-C/clm/NSComparisonPredicate/predicateWithLeftExpression:rightExpression:modifier:type:options:
+Objective-C/instm/NSPredicateEditorRowTemplate/predicateWithSubpredicates:
+Objective-C/instm/NSPredicate/predicateWithSubstitutionVariables:
+Objective-C/clm/NSPredicate/predicateWithValue:
+Objective-C/instm/WebView/preferences
+Objective-C/instm/WebView/preferencesIdentifier
+Objective-C/instm/IBPlugin/preferencesView
+Objective-C/instm/NSWindow/preferredBackingLocation
+Objective-C/instm/NSPopUpButtonCell/preferredEdge
+Objective-C/instm/NSPopUpButton/preferredEdge
+Objective-C/instm/NSDrawer/preferredEdge
+Objective-C/instm/NSFileWrapper/preferredFilename
+Objective-C/instm/NSWorkspace/preferredFilenameExtensionForType:
+Objective-C/clm/NSFont/preferredFontNames
+Objective-C/instm/CALayer/preferredFrameSize
+Objective-C/clm/NSLocale/preferredLanguages
+Objective-C/instm/NSBundle/preferredLocalizations
+Objective-C/clm/NSBundle/preferredLocalizationsFromArray:
+Objective-C/clm/NSBundle/preferredLocalizationsFromArray:forPreferences:
+Objective-C/instp/CWConfiguration/preferredNetworks
+Objective-C/instm/NSTextView/preferredPasteboardTypeFromArray:restrictedToTypesFromArray:
+Objective-C/instm/NSObject/preferredSizeOfLayer:
+JavaScript/data/Document/preferredStylesheetSet
+Objective-C/instm/NSObject/preferredSyncModeForEntityName:
+Objective-C/instm/NSBrowser/prefersAllColumnUserResizing
+Objective-C/instm/NSImage/prefersColorMatch
+Objective-C/clm/NSSliderCell/prefersTrackingUntilMouseUp
+Objective-C/clm/NSCell/prefersTrackingUntilMouseUp
+Objective-C/instm/NSXMLNode/prefix
+JavaScript/data/core/prefix
+Objective-C/clm/NSXMLNode/prefixForName:
+Objective-C/instm/NSBundle/preflightAndReturnError:
+C/func/-/prefresh
+Objective-C/instm/DRTrack(PropertyConvenience)/preGap
+JavaScript/data/HTMLMediaElement/preload
+C++/clm/OSMetaClass/preModLoad
+JavaScript/data/WebGLContextAttributes/premultipliedAlpha
+C++/instm/IONetworkController/prepare
+C++/instm/IODMACommand/prepare
+C++/instm/IOInterleavedMemoryDescriptor/prepare
+C++/instm/IOMultiMemoryDescriptor/prepare
+C++/instm/IOMemoryDescriptor/prepare
+C++/instm/IOFWPhysicalAddressSpace/prepare
+Objective-C/instm/NSObjectController/prepareContent
+Objective-C/instm/NSTableView/preparedCellAtColumn:row:
+Objective-C/intfm/DRFileDataProduction/prepareFileForBurn:
+Objective-C/intfm/DRFileDataProduction/prepareFileForVerification:
+Objective-C/instm/NSManagedObject/prepareForDeletion
+Objective-C/instm/NSObject/prepareForDragOperation:
+Objective-C/instm/NSEPSImageRep/prepareGState
+Objective-C/instm/NSOpenGLView/prepareOpenGL
+Objective-C/instm/NSDocument/preparePageLayout:
+C++/instm/IOBlockStorageDriver/prepareRequest
+Objective-C/instm/NSDocument/prepareSavePanel:
+Objective-C/instm/ISyncSession/prepareToPullChangesForEntityNames:beforeDate:
+Objective-C/instm/ISyncSession/prepareToPullChangesInBackgroundForEntityNames:target:selector:
+Objective-C/intfm/DRTrackDataProduction/prepareTrack:forBurn:toMedia:
+Objective-C/intfm/DRTrackDataProduction/prepareTrackForVerification:
+Objective-C/instm/NSUndoManager/prepareWithInvocationTarget:
+C++/instm/IODMACommand/prepareWithSpecification
+C++/instm/IOPacketQueue/prepend
+Objective-C/instm/NSAffineTransform/prependTransform:
+Objective-C/instm/CALayer/presentationLayer
+Objective-C/instm/NSApplication/presentationOptions
+Objective-C/instm/QTSampleBuffer/presentationTime
+Objective-C/instm/NSDocument/presentError:
+Objective-C/instm/NSDocumentController/presentError:
+Objective-C/instm/NSResponder/presentError:
+Objective-C/instm/NSDocument/presentError:modalForWindow:delegate:didPresentSelector:contextInfo:
+Objective-C/instm/NSDocumentController/presentError:modalForWindow:delegate:didPresentSelector:contextInfo:
+Objective-C/instm/NSResponder/presentError:modalForWindow:delegate:didPresentSelector:contextInfo:
+JavaScript/data/SVGFEImageElement/preserveAspectRatio
+JavaScript/data/SVGFitToViewBox/preserveAspectRatio
+JavaScript/data/SVGImageElement/preserveAspectRatio
+JavaScript/data/SVGViewSpec/preserveAspectRatioString
+Objective-C/instm/QTCaptureView/preservesAspectRatio
+Objective-C/instm/QTMovieView/preservesAspectRatio
+Objective-C/binding/QTMovieView/preservesAspectRatio
+Objective-C/instm/NSWindow/preservesContentDuringLiveResize
+Objective-C/instm/NSView/preservesContentDuringLiveResize
+Objective-C/instp/CAReplicatorLayer/preservesDepth
+Objective-C/instp/CAEmitterLayer/preservesDepth
+Objective-C/instm/CAEmitterLayer/preservesDepth
+Objective-C/instm/CAReplicatorLayer/preservesDepth
+Objective-C/instm/NSTreeController/preservesSelection
+Objective-C/instm/NSArrayController/preservesSelection
+Objective-C/clm/NSEvent/pressedMouseButtons
+Objective-C/instm/NSEvent/pressure
+JavaScript/instm/Event/preventDefault
+C/data/-/preventIdleSleepFlag
+Objective-C/instm/NSWindow/preventsApplicationTerminationWhenModal
+C/data/-/preventSystemSleepFlag
+Objective-C/instm/NSApplication/preventWindowOrdering
+Objective-C/instm/QTCaptureView/previewBounds
+C/func/-/PreviewEvent
+Objective-C/intfm/QLPreviewItem/previewItemDisplayState
+Objective-C/intfp/QLPreviewItem/previewItemDisplayState
+Objective-C/intfp/QLPreviewItem/previewItemTitle
+Objective-C/intfm/QLPreviewItem/previewItemTitle
+Objective-C/intfp/QLPreviewItem/previewItemURL
+Objective-C/intfm/QLPreviewItem/previewItemURL
+C/func/-/PreviewMakePreview
+C/func/-/PreviewMakePreviewReference
+Objective-C/intfm/QLPreviewPanelDelegate/previewPanel:handleEvent:
+Objective-C/intfm/QLPreviewPanelDataSource/previewPanel:previewItemAtIndex:
+Objective-C/intfm/QLPreviewPanelDelegate/previewPanel:sourceFrameOnScreenForPreviewItem:
+Objective-C/intfm/QLPreviewPanelDelegate/previewPanel:transitionImageForPreviewItem:contentRect:
+C/func/-/PreviewShowData
+JavaScript/data/Element/previousElementSibling
+Objective-C/instm/NSURLAuthenticationChallenge/previousFailureCount
+Objective-C/instm/NSView/previousKeyView
+C++/instm/OSSerialize/previouslySerialized
+Objective-C/instm/NSXMLNode/previousNode
+JavaScript/instm/NodeIterator/previousNode
+JavaScript/instm/TreeWalker/previousNode
+JavaScript/data/SVGZoomEvent/previousScale
+Objective-C/instm/NSXMLNode/previousSibling
+JavaScript/data/svg/previousSibling
+JavaScript/data/core/previousSibling
+JavaScript/instm/TreeWalker/previousSibling
+Objective-C/instm/NSTextField/previousText
+JavaScript/data/SVGZoomEvent/previousTranslate
+Objective-C/instm/NSView/previousValidKeyView
+JavaScript/data/MutationEvent/prevValue
+JavaScript/data/DataGridColumn/primary
+JavaScript/data/HTMLDataGridColElement/primary
+JavaScript/data/DataGridColumnList/primaryColumn
+Objective-C/instm/ABMultiValue/primaryIdentifier
+JavaScript/data/CSSPrimitiveValue/primitiveType
+JavaScript/data/SVGFilterElement/primitiveUnits
+Objective-C/instm/NSManagedObject/primitiveValueForKey:
+Objective-C/instm/NSBundle/principalClass
+JavaScript/instm/DOMWindow/print
+Objective-C/instm/NSWindow/print:
+Objective-C/instm/NSView/print:
+C/func/-/print_description
+C/func/-/print_mib
+C/func/-/print_objid
+C/func/-/print_value
+C/func/-/print_variable
+Objective-C/instm/NSDocument/printDocument:
+Objective-C/instm/WebFrameView/printDocumentView
+Objective-C/instm/NSDocument/printDocumentWithSettings:showPrintPanel:delegate:didPrintSelector:contextInfo:
+Objective-C/instm/NSPrintInfo/printer
+Objective-C/instm/NSFont/printerFont
+Objective-C/instm/NSObject/printerInfoTicket
+Objective-C/clm/NSPrinter/printerNames
+Objective-C/clm/NSPrinter/printerTypes
+Objective-C/clm/NSPrinter/printerWithName:
+Objective-C/clm/NSPrinter/printerWithName:domain:includeUnavailable:
+Objective-C/clm/NSPrinter/printerWithType:
+C/func/-/printf
+C/func/-/printf_l
+Objective-C/instm/NSPageLayout/printInfo
+Objective-C/instm/NSPrintOperation/printInfo
+Objective-C/instm/NSDocument/printInfo
+Objective-C/instm/NSPrintPanel/printInfo
+Objective-C/clm/NSTypesetter/printingAdjustmentInLayoutManager:forNominallySpacedGlyphRange:packedGlyphs:count:
+Objective-C/instm/NSView/printJobTitle
+Objective-C/instm/WebFrameView/printOperationWithPrintInfo:
+Objective-C/instm/NSDocument/printOperationWithSettings:error:
+Objective-C/clm/NSPrintOperation/printOperationWithView:
+Objective-C/clm/NSPrintOperation/printOperationWithView:printInfo:
+Objective-C/instm/NSPrintOperation/printPanel
+Objective-C/clm/NSPrintPanel/printPanel
+Objective-C/instm/NSObject/printSession
+Objective-C/instm/NSPrintInfo/printSettings
+Objective-C/instm/NSObject/printSettings
+Objective-C/instm/NSDocument/printShowingPrintPanel:
+C/func/-/printw
+Objective-C/instm/PDFView/printWithInfo:autoRotate:
+Objective-C/instm/PDFView/printWithInfo:autoRotate:pageScaling:
+Objective-C/instp/CalTask/priority
+Objective-C/instm/CalTask/priority
+Objective-C/instm/WebPreferences/privateBrowsingEnabled
+Objective-C/clm/XGController(XGControllerCreation)/privateController
+Objective-C/instm/NSBundle/privateFrameworksPath
+Objective-C/instm/NSBundle/privateFrameworksURL
+C++/instm/IOService/probe
+C/func/-/proc_pgrpid
+C/func/-/proc_selfpgrpid
+C/tdef/-/ProcessApplicationTransformState
+C++/instm/ATADeviceNub/processCallback
+Objective-C/instm/NSTextStorage/processEditing
+Objective-C/instm/NSProcessInfo/processIdentifier
+Objective-C/instm/NSTask/processIdentifier
+Objective-C/instm/NSRunningApplication/processIdentifier
+Objective-C/instp/NSRunningApplication/processIdentifier
+Objective-C/clm/NSProcessInfo/processInfo
+C/tdef/-/ProcessInfoExtendedRec
+C/tdef/-/ProcessInfoRec
+C/func/-/ProcessInformationCopyDictionary
+JavaScript/clconst/core/PROCESSING_INSTRUCTION_NODE
+JavaScript/data/DOMWindow/ProcessingInstruction
+JavaScript/cl/-/ProcessingInstruction
+C/tdef/-/processingInstructionSAXFunc
+Objective-C/clm/NSXMLNode/processingInstructionWithName:stringValue:
+Objective-C/instm/NSProcessInfo/processName
+Objective-C/instm/NSProcessInfo/processorCount
+C++/instm/IOSCSIParallelInterfaceController/ProcessParallelTask
+Objective-C/instm/NSManagedObjectContext/processPendingChanges
+C/func/-/ProcessRequest
+C/tdef/-/ProcessSerialNumber
+C/econst/-/procNotFound
+Objective-C/intfm/DRTrackDataProduction/produceDataForTrack:intoBuffer:length:atAddress:blockSize:ioFlags:
+Objective-C/intfm/DRFileDataProduction/produceFile:fork:intoBuffer:length:atAddress:blockSize:
+Objective-C/intfm/DRTrackDataProduction/producePreGapForTrack:intoBuffer:length:atAddress:blockSize:ioFlags:
+C++/data/IOInterruptEventSource/producerCount
+JavaScript/data/Navigator/product
+JavaScript/data/Navigator/productSub
+C/func/-/profil
+Objective-C/clm/CWWirelessProfile/profile
+Objective-C/clm/CW8021XProfile/profile
+JavaScript/instm/Console/profile
+JavaScript/data/HTMLHeadElement/profile
+JavaScript/instm/Console/profileEnd
+JavaScript/data/Console/profiles
+Objective-C/clm/XGAuthenticator/profileURI
+Objective-C/intfm/ApertureExportPlugIn/progress
+JavaScript/data/HTMLDataGridCellElement/progress
+JavaScript/data/DOMWindow/ProgressEvent
+JavaScript/cl/-/ProgressEvent
+Objective-C/instm/NSAnimation/progressMarks
+C/econst/-/progressOpAddMovieSelection
+C/econst/-/progressOpCopy
+C/econst/-/progressOpCut
+C/econst/-/progressOpFlatten
+C/econst/-/progressOpImportMovie
+C/econst/-/progressOpInsertMovieSegment
+C/econst/-/progressOpInsertTrackSegment
+C/econst/-/progressOpLoadMediaIntoRam
+C/econst/-/progressOpLoadMovieIntoRam
+C/econst/-/progressOpLoadTrackIntoRam
+C/econst/-/progressOpPaste
+Objective-C/clm/DRBurnProgressPanel/progressPanel
+Objective-C/clm/DREraseProgressPanel/progressPanel
+Objective-C/instm/NSSavePanel/prompt
+JavaScript/instm/DOMWindow/prompt
+JavaScript/data/HTMLIsIndexElement/prompt
+C/func/-/prop_get
+Objective-C/instm/NSManagedObjectContext/propagatesDeletesAtEndOfEvent
+Objective-C/intfm/FxBaseEffect/properties
+Objective-C/instm/ABPeoplePickerView/properties
+Objective-C/instm/DRBurn/properties
+Objective-C/instm/DRCDTextBlock/properties
+Objective-C/instm/DRErase/properties
+Objective-C/instm/DRTrack/properties
+Objective-C/instm/NSHTTPCookie/properties
+Objective-C/clm/ABGroup/properties
+Objective-C/clm/ABPerson/properties
+Objective-C/instm/NSEntityDescription/properties
+Objective-C/instm/NSEntityDescription/propertiesByName
+Objective-C/instm/DRFSObject/propertiesForFilesystem:mergeWithOtherFilesystems:
+Objective-C/intfm/ApertureExportManager/propertiesForImageAtIndex:
+Objective-C/instm/NSFetchRequest/propertiesToFetch
+Objective-C/instm/NSMenu/propertiesToUpdate
+Objective-C/intfm/ApertureExportManager/propertiesWithoutThumbnailForImageAtIndex:
+Objective-C/intfm/ApertureEditManager/propertiesWithoutThumbnailForVersion:
+C/func/-/property_getAttributes
+C/func/-/property_getName
+Objective-C/instm/NSAtomicStoreCacheNode/propertyCache
+Objective-C/instm/NSURLHandle/propertyForKey:
+Objective-C/instm/NSStream/propertyForKey:
+Objective-C/instm/NSURL/propertyForKey:
+Objective-C/instm/DRFSObject/propertyForKey:inFilesystem:mergeWithOtherFilesystems:
+Objective-C/clm/NSURLProtocol/propertyForKey:inRequest:
+Objective-C/instm/NSURLHandle/propertyForKeyIfAvailable:
+Objective-C/instm/NSString/propertyList
+Objective-C/clm/NSPropertyListSerialization/propertyList:isValidForFormat:
+Objective-C/instm/NSPasteboardItem/propertyListForType:
+Objective-C/instm/NSPasteboard/propertyListForType:
+Objective-C/clm/NSPropertyListSerialization/propertyListFromData:mutabilityOption:format:errorDescription:
+Objective-C/intfm/QCCompositionRenderer/propertyListFromInputValues
+Objective-C/instm/NSString/propertyListFromStringsFileFormat
+Objective-C/clm/NSPropertyListSerialization/propertyListWithData:options:format:error:
+Objective-C/clm/NSPropertyListSerialization/propertyListWithStream:options:format:error:
+C++/clm/IOService/propertyMatching
+JavaScript/data/WebKitTransitionEvent/propertyName
+Objective-C/instm/ABMultiValue/propertyType
+Objective-C/instm/SBObject/propertyWithClass:code:
+Objective-C/instm/SBObject/propertyWithCode:
+Objective-C/instm/NSURLAuthenticationChallenge/proposedCredential
+C++/instm/IOAudioDevice/protectedCompletePowerStateChange
+C++/instm/IOAudioDevice/protectedSetPowerState
+Objective-C/instm/NSURLAuthenticationChallenge/protectionSpace
+C/func/-/proto_inject
+C/func/-/proto_input
+C/tdef/-/proto_media_detached
+C/tdef/-/proto_media_event
+C/tdef/-/proto_media_input
+C/tdef/-/proto_media_input_v2
+C/tdef/-/proto_media_ioctl
+C/tdef/-/proto_media_preout
+C/tdef/-/proto_media_resolve_multi
+C/tdef/-/proto_media_send_arp
+C/tdef/-/proto_plumb_handler
+C/func/-/proto_register_plumber
+C/tdef/-/proto_unplumb_handler
+C/func/-/proto_unregister_plumber
+Objective-C/instm/NSProtocolChecker/protocol
+Objective-C/instm/NSSocketPort/protocol
+Objective-C/instm/NSURLProtectionSpace/protocol
+JavaScript/data/HTMLAreaElement/protocol
+JavaScript/data/HTMLAnchorElement/protocol
+JavaScript/data/window/protocol
+JavaScript/data/WorkerLocation/protocol
+C/func/-/protocol_conformsToProtocol
+C/func/-/protocol_copyMethodDescriptionList
+C/func/-/protocol_copyPropertyList
+C/func/-/protocol_copyProtocolList
+C/tdef/-/protocol_family_t
+C/func/-/protocol_getMethodDescription
+C/func/-/protocol_getName
+C/func/-/protocol_getProperty
+C/func/-/protocol_isEqual
+Objective-C/clm/NSProtocolChecker/protocolCheckerWithTarget:protocol:
+C/econst/-/protocolErr
+Objective-C/instm/NSSocketPort/protocolFamily
+C/func/-/ProtocolRevision
+Objective-C/instm/QCComposition/protocols
+Objective-C/instm/NSNetService/protocolSpecificInformation
+C/func/-/ProtocolVersion
+Objective-C/instm/NSMatrix/prototype
+C++/instm/IOATADevice/provideBusInfo
+C++/instm/IOATADevice/provideConfig
+Objective-C/instm/NSObject/provideImageData:bytesPerRow:origin:size:userInfo:
+Objective-C/instm/NSColorPicker/provideNewButtonImage
+Objective-C/intfm/NSColorPickingDefault/provideNewButtonImage
+Objective-C/intfm/NSColorPickingCustom/provideNewView:
+C++/data/IOInterruptEventSource/provider
+Objective-C/intfm/IKFilterCustomUIProvider/provideViewForUIConfiguration:excludedKeys:
+Objective-C/instm/WebFrame/provisionalDataSource
+Objective-C/instm/NSURLProtectionSpace/proxyType
+Objective-C/clm/NSDistantObject/proxyWithLocal:connection:
+Objective-C/clm/NSDistantObject/proxyWithTarget:connection:
+Objective-C/cl/-/PSAuthor
+Objective-C/cl/-/PSClient
+Objective-C/cl/-/PSContent
+C/func/-/pselect
+Objective-C/cl/-/PSEnclosure
+Objective-C/cl/-/PSEntry
+Objective-C/cl/-/PSFeed
+C/tdef/-/PSFeedFormat
+Objective-C/cl/-/PSFeedSettings
+C/macro/-/PSFeedSettingsAllTypes
+C/macro/-/PSFeedSettingsIntervalDefault
+C/macro/-/PSFeedSettingsIntervalNever
+C/macro/-/PSFeedSettingsUnlimitedSize
+C/func/-/psignal
+C/tdef/-/PSInjectionPlacement
+C/tdef/-/PSInjectionSection
+C/tdef/-/PSInjectionSubsection
+Objective-C/cl/-/PSLink
+C/tdef/-/PSLinkKind
+C/func/-/psort
+C/func/-/psort_b
+C/func/-/psort_r
+C/func/-/pthread
+C/func/-/pthread_atfork
+C/func/-/pthread_attr
+C/func/-/pthread_attr_destroy
+C/func/-/pthread_attr_getdetachstate
+C/func/-/pthread_attr_getinheritsched
+C/func/-/pthread_attr_getschedparam
+C/func/-/pthread_attr_getschedpolicy
+C/func/-/pthread_attr_getscope
+C/func/-/pthread_attr_getstackaddr
+C/func/-/pthread_attr_getstacksize
+C/func/-/pthread_attr_init
+C/func/-/pthread_attr_setdetachstate
+C/func/-/pthread_attr_setinheritsched
+C/func/-/pthread_attr_setschedparam
+C/func/-/pthread_attr_setschedpolicy
+C/func/-/pthread_attr_setscope
+C/func/-/pthread_attr_setstackaddr
+C/func/-/pthread_attr_setstacksize
+C/func/-/pthread_cancel
+C/func/-/pthread_cleanup_pop
+C/func/-/pthread_cleanup_push
+C/func/-/pthread_cond_broadcast
+C/func/-/pthread_cond_destroy
+C/func/-/pthread_cond_init
+C/func/-/pthread_cond_signal
+C/func/-/pthread_cond_timedwait
+C/func/-/pthread_cond_wait
+C/func/-/pthread_condattr
+C/func/-/pthread_condattr_destroy
+C/func/-/pthread_condattr_init
+C/func/-/pthread_create
+C/func/-/pthread_detach
+C/func/-/pthread_equal
+C/func/-/pthread_exit
+C/func/-/pthread_getschedparam
+C/func/-/pthread_getspecific
+C/func/-/pthread_join
+C/func/-/pthread_key_create
+C/func/-/pthread_key_delete
+C/func/-/pthread_kill
+C/func/-/pthread_mutex_destroy
+C/func/-/pthread_mutex_init
+C/func/-/pthread_mutex_lock
+C/func/-/pthread_mutex_trylock
+C/func/-/pthread_mutex_unlock
+C/func/-/pthread_mutexattr
+C/func/-/pthread_mutexattr_destroy
+C/func/-/pthread_mutexattr_getprioceiling
+C/func/-/pthread_mutexattr_getprotocol
+C/func/-/pthread_mutexattr_gettype
+C/func/-/pthread_mutexattr_init
+C/func/-/pthread_mutexattr_setprioceiling
+C/func/-/pthread_mutexattr_setprotocol
+C/func/-/pthread_mutexattr_settype
+C/func/-/pthread_once
+C/func/-/pthread_rwlock_destroy
+C/func/-/pthread_rwlock_init
+C/func/-/pthread_rwlock_rdlock
+C/func/-/pthread_rwlock_tryrdlock
+C/func/-/pthread_rwlock_trywrlock
+C/func/-/pthread_rwlock_unlock
+C/func/-/pthread_rwlock_wrlock
+C/func/-/pthread_rwlockattr_destroy
+C/func/-/pthread_rwlockattr_getpshared
+C/func/-/pthread_rwlockattr_init
+C/func/-/pthread_rwlockattr_setpshared
+C/func/-/pthread_self
+C/func/-/pthread_setcancelstate
+C/func/-/pthread_setcanceltype
+C/func/-/pthread_setschedparam
+C/func/-/pthread_setspecific
+C/func/-/pthread_setugid_np
+C/func/-/pthread_sigmask
+C/func/-/pthread_testcancel
+C/func/-/PtInDSequenceData
+C/func/-/PtInMovie
+C/func/-/PtInTrack
+C/func/-/ptrace
+C/func/-/ptsname
+Objective-C/instm/NSXMLDTD/publicID
+Objective-C/instm/NSXMLDTDNode/publicID
+Objective-C/instm/NSXMLParser/publicID
+JavaScript/data/DocumentType/publicId
+JavaScript/data/Entity/publicId
+JavaScript/data/Notation/publicId
+Objective-C/instm/NSNetService/publish
+C++/instm/IOFireWireAVCTargetSpace/publishAVCUnitDirectory
+C++/instm/ATADeviceNub/publishBusProperties
+C++/instm/IONetworkController/publishMediumDictionary
+C++/instm/IONetworkController/publishProperties
+C++/instm/IOEthernetController/publishProperties
+C++/instm/ATADeviceNub/publishProperties
+C++/instm/IOHIDDevice/publishProperties
+C++/clm/IOService/publishResource
+C++/instm/ATADeviceNub/publishVendorProperties
+Objective-C/instm/NSNetService/publishWithOptions:
+Objective-C/instm/NSPopUpButton/pullsDown
+Objective-C/instm/NSPopUpButtonCell/pullsDown
+Objective-C/clm/NSCharacterSet/punctuationCharacterSet
+Objective-C/clm/NSColor/purpleColor
+Objective-C/instm/NSCursor/push
+Objective-C/instm/ISyncSession/pushChange:
+Objective-C/instm/ISyncSession/pushChangesFromRecord:withIdentifier:
+JavaScript/instm/InjectedScriptHost/pushNodeByPathToFrontend
+JavaScript/instm/InjectedScriptHost/pushNodePathToFrontend
+JavaScript/instm/window/pushState
+C/func/-/putc
+C/func/-/putc_unlocked
+Objective-C/instm/NSMatrix/putCell:atRow:column:
+C/func/-/putchar
+C/func/-/putchar_unlocked
+C/func/-/putenv
+JavaScript/instm/CanvasRenderingContext2D/putImageData
+C/func/-/PutMovieIntoTypedHandle
+C/func/-/putp
+C/func/-/puts
+C/func/-/pututxline
+C/func/-/putw
+C/func/-/putwc
+C/func/-/putwc_l
+C/func/-/putwchar
+C/func/-/putwchar_l
+C/func/-/putwin
+C/func/-/pwcache
+C/func/-/pwrite
+Objective-C/cl/-/QCComposition
+C/data/-/QCCompositionAttributeBuiltInKey
+C/data/-/QCCompositionAttributeCategoryKey
+C/data/-/QCCompositionAttributeCopyrightKey
+C/data/-/QCCompositionAttributeDescriptionKey
+C/data/-/QCCompositionAttributeHasConsumersKey
+C/data/-/QCCompositionAttributeNameKey
+C/data/-/QCCompositionAttributeTimeDependentKey
+C/data/-/QCCompositionCategoryDistortion
+C/data/-/QCCompositionCategoryStylize
+C/data/-/QCCompositionCategoryUtility
+C/data/-/QCCompositionInputAudioPeakKey
+C/data/-/QCCompositionInputAudioSpectrumKey
+C/data/-/QCCompositionInputDestinationImageKey
+C/data/-/QCCompositionInputImageKey
+C/data/-/QCCompositionInputPaceKey
+C/data/-/QCCompositionInputPreviewModeKey
+C/data/-/QCCompositionInputPrimaryColorKey
+C/data/-/QCCompositionInputRSSArticleDurationKey
+C/data/-/QCCompositionInputRSSFeedURLKey
+C/data/-/QCCompositionInputScreenImageKey
+C/data/-/QCCompositionInputSecondaryColorKey
+C/data/-/QCCompositionInputSourceImageKey
+C/data/-/QCCompositionInputTrackInfoKey
+C/data/-/QCCompositionInputTrackPositionKey
+C/data/-/QCCompositionInputTrackSignalKey
+C/data/-/QCCompositionInputXKey
+C/data/-/QCCompositionInputYKey
+Objective-C/cl/-/QCCompositionLayer
+C/data/-/QCCompositionOutputImageKey
+C/data/-/QCCompositionOutputWebPageURLKey
+Objective-C/cl/-/QCCompositionParameterView
+Objective-C/cat/-/QCCompositionParameterViewDelegate
+Objective-C/cl/-/QCCompositionPickerPanel
+C/data/-/QCCompositionPickerPanelDidSelectCompositionNotification
+Objective-C/cl/-/QCCompositionPickerView
+Objective-C/cat/-/QCCompositionPickerViewDelegate
+C/data/-/QCCompositionPickerViewDidSelectCompositionNotification
+C/data/-/QCCompositionProtocolGraphicAnimation
+C/data/-/QCCompositionProtocolGraphicTransition
+C/data/-/QCCompositionProtocolImageFilter
+C/data/-/QCCompositionProtocolImageTransition
+C/data/-/QCCompositionProtocolMusicVisualizer
+C/data/-/QCCompositionProtocolRSSVisualizer
+C/data/-/QCCompositionProtocolScreenSaver
+Objective-C/intf/-/QCCompositionRenderer
+Objective-C/cl/-/QCCompositionRepository
+C/data/-/QCCompositionRepositoryDidUpdateNotification
+Objective-C/cl/-/QCPlugIn
+C/data/-/QCPlugInAttributeDescriptionKey
+C/data/-/QCPlugInAttributeNameKey
+Objective-C/intf/-/QCPlugInContext
+C/data/-/QCPlugInExecutionArgumentEventKey
+C/data/-/QCPlugInExecutionArgumentMouseLocationKey
+C/tdef/-/QCPlugInExecutionMode
+Objective-C/intf/-/QCPlugInInputImageSource
+Objective-C/intf/-/QCPlugInOutputImageProvider
+C/data/-/QCPlugInPixelFormatARGB8
+C/data/-/QCPlugInPixelFormatBGRA8
+C/data/-/QCPlugInPixelFormatI8
+C/data/-/QCPlugInPixelFormatIf
+C/data/-/QCPlugInPixelFormatRGBAf
+C/tdef/-/QCPlugInTimeMode
+Objective-C/cl/-/QCPlugInViewController
+C/data/-/QCPortAttributeDefaultValueKey
+C/data/-/QCPortAttributeMaximumValueKey
+C/data/-/QCPortAttributeMenuItemsKey
+C/data/-/QCPortAttributeMinimumValueKey
+C/data/-/QCPortAttributeNameKey
+C/data/-/QCPortAttributeTypeKey
+C/data/-/QCPortTypeBoolean
+C/data/-/QCPortTypeColor
+C/data/-/QCPortTypeImage
+C/data/-/QCPortTypeIndex
+C/data/-/QCPortTypeNumber
+C/data/-/QCPortTypeString
+C/data/-/QCPortTypeStructure
+Objective-C/cl/-/QCRenderer
+C/data/-/QCRendererEventKey
+C/data/-/QCRendererMouseLocationKey
+Objective-C/cl/-/QCView
+C/data/-/QCViewDidStartRenderingNotification
+C/data/-/QCViewDidStopRenderingNotification
+C/tag/-/QHdr
+C/tdef/-/QHdrPtr
+C/func/-/qiflush
+C/func/-/QLength
+Objective-C/intf/-/QLPreviewItem
+Objective-C/cl/-/QLPreviewPanel
+Objective-C/intf/-/QLPreviewPanelController
+Objective-C/intf/-/QLPreviewPanelDataSource
+Objective-C/intf/-/QLPreviewPanelDelegate
+C/func/-/QLPreviewRequestCopyContentUTI
+C/func/-/QLPreviewRequestCopyOptions
+C/func/-/QLPreviewRequestCopyURL
+C/func/-/QLPreviewRequestCreateContext
+C/func/-/QLPreviewRequestCreatePDFContext
+C/func/-/QLPreviewRequestFlushContext
+C/func/-/QLPreviewRequestGetGeneratorBundle
+C/func/-/QLPreviewRequestGetTypeID
+C/func/-/QLPreviewRequestIsCancelled
+C/tdef/-/QLPreviewRequestRef
+C/func/-/QLPreviewRequestSetDataRepresentation
+C/func/-/QLThumbnailImageCreate
+C/func/-/QLThumbnailRequestCopyContentUTI
+C/func/-/QLThumbnailRequestCopyOptions
+C/func/-/QLThumbnailRequestCopyURL
+C/func/-/QLThumbnailRequestCreateContext
+C/func/-/QLThumbnailRequestFlushContext
+C/func/-/QLThumbnailRequestGetGeneratorBundle
+C/func/-/QLThumbnailRequestGetMaximumSize
+C/func/-/QLThumbnailRequestGetTypeID
+C/func/-/QLThumbnailRequestIsCancelled
+C/tdef/-/QLThumbnailRequestRef
+C/func/-/QLThumbnailRequestSetImage
+C/func/-/QLThumbnailRequestSetImageWithData
+C/data/-/QQCPlugInAttributeCopyrightKey
+C/func/-/qsort
+C/func/-/qsort_b
+C/func/-/qsort_r
+C/data/-/QTAddImageCodecQuality
+C/data/-/QTAddImageCodecType
+C/func/-/QTAddMoviePropertyListener
+C/func/-/QTAddTrackPropertyListener
+C/tdef/-/QTAtom
+C/tdef/-/QTAtomContainer
+C/tdef/-/QTAtomID
+C/tdef/-/QTBandwidthNotificationProc
+C/tdef/-/QTBandwidthNotificationUPP
+C/tdef/-/QTBandwidthReference
+C/func/-/QTBandwidthRelease
+C/func/-/QTBandwidthRequest
+C/func/-/QTBandwidthRequestForTimeBase
+C/tdef/-/QTCallBack
+C/tdef/-/QTCallBackProc
+C/tdef/-/QTCallBackUPP
+Objective-C/cl/-/QTCaptureAudioPreviewOutput
+Objective-C/cl/-/QTCaptureConnection
+C/data/-/QTCaptureConnectionAttributeDidChangeNotification
+C/data/-/QTCaptureConnectionAttributeWillChangeNotification
+C/data/-/QTCaptureConnectionAudioAveragePowerLevelsAttribute
+C/data/-/QTCaptureConnectionAudioMasterVolumeAttribute
+C/data/-/QTCaptureConnectionAudioPeakHoldLevelsAttribute
+C/data/-/QTCaptureConnectionAudioVolumesAttribute
+C/data/-/QTCaptureConnectionChangedAttributeKey
+C/data/-/QTCaptureConnectionEnabledAudioChannelsAttribute
+C/data/-/QTCaptureConnectionFormatDescriptionDidChangeNotification
+C/data/-/QTCaptureConnectionFormatDescriptionWillChangeNotification
+Objective-C/cl/-/QTCaptureDecompressedAudioOutput
+Objective-C/cl/-/QTCaptureDecompressedVideoOutput
+Objective-C/cl/-/QTCaptureDevice
+C/data/-/QTCaptureDeviceAttributeDidChangeNotification
+C/data/-/QTCaptureDeviceAttributeWillChangeNotification
+C/data/-/QTCaptureDeviceAvailableInputSourcesAttribute
+C/data/-/QTCaptureDeviceAVCTransportControlsAttribute
+C/econst/-/QTCaptureDeviceAVCTransportControlsFastestForwardSpeed
+C/econst/-/QTCaptureDeviceAVCTransportControlsFastestReverseSpeed
+C/econst/-/QTCaptureDeviceAVCTransportControlsFastForwardSpeed
+C/econst/-/QTCaptureDeviceAVCTransportControlsFastReverseSpeed
+C/econst/-/QTCaptureDeviceAVCTransportControlsNormalForwardSpeed
+C/econst/-/QTCaptureDeviceAVCTransportControlsNormalReverseSpeed
+C/data/-/QTCaptureDeviceAVCTransportControlsPlaybackModeKey
+C/econst/-/QTCaptureDeviceAVCTransportControlsSlowestForwardSpeed
+C/econst/-/QTCaptureDeviceAVCTransportControlsSlowestReverseSpeed
+C/econst/-/QTCaptureDeviceAVCTransportControlsSlowForwardSpeed
+C/econst/-/QTCaptureDeviceAVCTransportControlsSlowReverseSpeed
+C/data/-/QTCaptureDeviceAVCTransportControlsSpeed
+C/data/-/QTCaptureDeviceAVCTransportControlsSpeedKey
+C/econst/-/QTCaptureDeviceAVCTransportControlsStoppedSpeed
+C/econst/-/QTCaptureDeviceAVCTransportControlsVeryFastForwardSpeed
+C/econst/-/QTCaptureDeviceAVCTransportControlsVeryFastReverseSpeed
+C/econst/-/QTCaptureDeviceAVCTransportControlsVerySlowForwardSpeed
+C/econst/-/QTCaptureDeviceAVCTransportControlsVerySlowReverseSpeed
+C/data/-/QTCaptureDeviceChangedAttributeKey
+C/data/-/QTCaptureDeviceFormatDescriptionsDidChangeNotification
+C/data/-/QTCaptureDeviceFormatDescriptionsWillChangeNotification
+Objective-C/cl/-/QTCaptureDeviceInput
+C/data/-/QTCaptureDeviceInputSourceIdentifierAttribute
+C/data/-/QTCaptureDeviceInputSourceIdentifierKey
+C/data/-/QTCaptureDeviceInputSourceLocalizedDisplayNameKey
+C/data/-/QTCaptureDeviceLegacySequenceGrabberAttribute
+C/data/-/QTCaptureDeviceLinkedDevicesAttribute
+C/data/-/QTCaptureDeviceSuspendedAttribute
+C/data/-/QTCaptureDeviceWasConnectedNotification
+C/data/-/QTCaptureDeviceWasDisconnectedNotification
+Objective-C/cl/-/QTCaptureFileOutput
+C/tdef/-/QTCaptureFileOutputBufferDestination
+C/econst/-/QTCaptureFileOutputBufferDestinationNewFile
+C/econst/-/QTCaptureFileOutputBufferDestinationOldFile
+Objective-C/cl/-/QTCaptureInput
+Objective-C/cl/-/QTCaptureLayer
+Objective-C/cl/-/QTCaptureMovieFileOutput
+Objective-C/cl/-/QTCaptureOutput
+Objective-C/cl/-/QTCaptureSession
+C/data/-/QTCaptureSessionErrorKey
+C/data/-/QTCaptureSessionRuntimeErrorNotification
+Objective-C/cl/-/QTCaptureVideoPreviewOutput
+Objective-C/cl/-/QTCaptureView
+Objective-C/cl/-/QTCompressionOptions
+C/data/-/QTCompressionOptions120SizeH264Video
+C/data/-/QTCompressionOptions120SizeMPEG4Video
+C/data/-/QTCompressionOptions240SizeH264Video
+C/data/-/QTCompressionOptions240SizeMPEG4Video
+C/data/-/QTCompressionOptionsHighQualityAACAudio
+C/data/-/QTCompressionOptionsLosslessALACAudio
+C/data/-/QTCompressionOptionsLosslessAnimationVideo
+C/data/-/QTCompressionOptionsLosslessAppleIntermediateVideo
+C/data/-/QTCompressionOptionsSD480SizeH264Video
+C/data/-/QTCompressionOptionsSD480SizeMPEG4Video
+C/data/-/QTCompressionOptionsVoiceQualityAACAudio
+C/func/-/QTCopyMediaMetaData
+C/func/-/QTCopyMovieMetaData
+C/func/-/QTCopyTrackMetaData
+Objective-C/cl/-/QTDataReference
+C/data/-/QTDataReferenceTypeFile
+C/data/-/QTDataReferenceTypeHandle
+C/data/-/QTDataReferenceTypePointer
+C/data/-/QTDataReferenceTypeResource
+C/data/-/QTDataReferenceTypeURL
+C/func/-/QTEqualTimeRanges
+C/data/-/QTErrorCaptureInputKey
+C/data/-/QTErrorCaptureOutputKey
+C/econst/-/QTErrorDeviceAlreadyUsedbyAnotherSession
+C/econst/-/QTErrorDeviceExcludedByAnotherDevice
+C/econst/-/QTErrorDeviceInUseByAnotherApplication
+C/data/-/QTErrorDeviceKey
+C/econst/-/QTErrorDeviceNotConnected
+C/econst/-/QTErrorDeviceWasDisconnected
+C/econst/-/QTErrorDiskFull
+C/data/-/QTErrorExcludingDeviceKey
+C/data/-/QTErrorFileSizeKey
+C/econst/-/QTErrorIncompatibleInput
+C/econst/-/QTErrorIncompatibleOutput
+C/econst/-/QTErrorMaximumDurationReached
+C/econst/-/QTErrorMaximumFileSizeReached
+C/econst/-/QTErrorMaximumNumberOfSamplesForFileFormatReached
+C/econst/-/QTErrorMediaChanged
+C/econst/-/QTErrorMediaDiscontinuity
+C/econst/-/QTErrorNoDataCaptured
+C/data/-/QTErrorRecordingSuccesfullyFinishedKey
+C/econst/-/QTErrorSessionConfigurationChanged
+C/data/-/QTErrorTimeKey
+C/econst/-/QTErrorUnknown
+C/tag/-/QTEventRecord
+C/tdef/-/QTEventRecordPtr
+Objective-C/cl/-/QTFormatDescription
+C/data/-/QTFormatDescriptionAudioChannelLayoutAttribute
+C/data/-/QTFormatDescriptionAudioMagicCookieAttribute
+C/data/-/QTFormatDescriptionAudioStreamBasicDescriptionAttribute
+C/data/-/QTFormatDescriptionVideoCleanApertureDisplaySizeAttribute
+C/data/-/QTFormatDescriptionVideoEncodedPixelsSizeAttribute
+C/data/-/QTFormatDescriptionVideoProductionApertureDisplaySizeAttribute
+C/func/-/QTGetFileNameExtension
+C/func/-/QTGetMIMETypeInfo
+C/func/-/QTGetMovieProperty
+C/func/-/QTGetMoviePropertyInfo
+C/func/-/QTGetPixelFormatDepthForImageDescription
+C/func/-/QTGetPixelSize
+C/func/-/QTGetPixMapHandleGammaLevel
+C/func/-/QTGetPixMapHandleRequestedGammaLevel
+C/func/-/QTGetPixMapHandleRowBytes
+C/func/-/QTGetPixMapPtrGammaLevel
+C/func/-/QTGetPixMapPtrRequestedGammaLevel
+C/func/-/QTGetPixMapPtrRowBytes
+C/func/-/QTGetTimeInterval
+C/func/-/QTGetTimeRecord
+C/func/-/QTGetTrackProperty
+C/func/-/QTGetTrackPropertyInfo
+C/econst/-/QTIncludeAggressiveTypes
+C/econst/-/QTIncludeAllTypes
+C/econst/-/QTIncludeCommonTypes
+C/econst/-/QTIncludeStillImageTypes
+C/econst/-/QTIncludeTranslatableTypes
+C/func/-/QTIntersectionTimeRange
+C/data/-/QTKitErrorDomain
+C/func/-/QTMakeTime
+C/func/-/QTMakeTimeRange
+C/func/-/QTMakeTimeScaled
+C/func/-/QTMakeTimeWithTimeInterval
+C/func/-/QTMakeTimeWithTimeRecord
+Objective-C/cl/-/QTMedia
+C/data/-/QTMediaCharacteristicAudio
+C/data/-/QTMediaCharacteristicCanSendVideo
+C/data/-/QTMediaCharacteristicCanStep
+C/data/-/QTMediaCharacteristicHasNoDuration
+C/data/-/QTMediaCharacteristicHasSkinData
+C/data/-/QTMediaCharacteristicHasVideoFrameRate
+C/data/-/QTMediaCharacteristicNonLinear
+C/data/-/QTMediaCharacteristicProvidesActions
+C/data/-/QTMediaCharacteristicProvidesKeyFocus
+C/data/-/QTMediaCharacteristicVisual
+C/data/-/QTMediaCreationTimeAttribute
+C/data/-/QTMediaDurationAttribute
+C/data/-/QTMediaModificationTimeAttribute
+C/data/-/QTMediaQualityAttribute
+C/data/-/QTMediaSampleCountAttribute
+C/data/-/QTMediaTimeScaleAttribute
+C/data/-/QTMediaType3D
+C/data/-/QTMediaTypeAttribute
+C/data/-/QTMediaTypeBase
+C/data/-/QTMediaTypeClosedCaption
+C/data/-/QTMediaTypeFlash
+C/data/-/QTMediaTypeHint
+C/data/-/QTMediaTypeMovie
+C/data/-/QTMediaTypeMPEG
+C/data/-/QTMediaTypeMusic
+C/data/-/QTMediaTypeMuxed
+C/data/-/QTMediaTypeQTVR
+C/data/-/QTMediaTypeQuartzComposer
+C/data/-/QTMediaTypeSkin
+C/data/-/QTMediaTypeSound
+C/data/-/QTMediaTypeSprite
+C/data/-/QTMediaTypeStream
+C/data/-/QTMediaTypeSubtitle
+C/data/-/QTMediaTypeText
+C/data/-/QTMediaTypeTimeCode
+C/data/-/QTMediaTypeTween
+C/data/-/QTMediaTypeVideo
+C/func/-/QTMetaDataAddItem
+C/func/-/QTMetaDataGetItemProperty
+C/func/-/QTMetaDataGetItemPropertyInfo
+C/func/-/QTMetaDataGetItemValue
+C/func/-/QTMetaDataGetNextItem
+C/func/-/QTMetaDataGetProperty
+C/func/-/QTMetaDataGetPropertyInfo
+C/func/-/QTMetaDataRelease
+C/func/-/QTMetaDataRemoveItem
+C/func/-/QTMetaDataRemoveItemsWithKey
+C/func/-/QTMetaDataRetain
+C/func/-/QTMetaDataSetItem
+C/func/-/QTMetaDataSetItemProperty
+C/func/-/QTMetaDataSetProperty
+C/func/-/QTMLCreateMutex
+C/func/-/QTMLDestroyMutex
+C/econst/-/qtmlDllEntryNotFoundErr
+C/econst/-/qtmlDllLoadErr
+C/func/-/QTMLGrabMutex
+C/tdef/-/QTMLMutex
+C/func/-/QTMLReturnMutex
+C/func/-/QTMLTryGrabMutex
+C/func/-/QTMLYieldCPU
+C/func/-/QTMLYieldCPUTime
+Objective-C/cl/-/QTMovie
+C/data/-/QTMovieActiveSegmentAttribute
+C/data/-/QTMovieApertureModeAttribute
+C/data/-/QTMovieApertureModeClassic
+C/data/-/QTMovieApertureModeClean
+C/data/-/QTMovieApertureModeDidChangeNotification
+C/data/-/QTMovieApertureModeEncodedPixels
+C/data/-/QTMovieApertureModeProduction
+C/data/-/QTMovieAskUnresolvedDataRefsAttribute
+C/data/-/QTMovieAutoAlternatesAttribute
+C/data/-/QTMovieChapterDidChangeNotification
+C/data/-/QTMovieChapterListDidChangeNotification
+C/data/-/QTMovieChapterName
+C/data/-/QTMovieChapterStartTime
+C/data/-/QTMovieChapterTargetTrackAttribute
+C/data/-/QTMovieCloseWindowRequestNotification
+C/data/-/QTMovieCopyrightAttribute
+C/data/-/QTMovieCreationTimeAttribute
+C/data/-/QTMovieCurrentSizeAttribute
+C/data/-/QTMovieCurrentTimeAttribute
+C/data/-/QTMovieDataAttribute
+C/data/-/QTMovieDataReferenceAttribute
+C/data/-/QTMovieDataSizeAttribute
+C/data/-/QTMovieDelegateAttribute
+C/data/-/QTMovieDidEndNotification
+C/data/-/QTMovieDisplayNameAttribute
+C/data/-/QTMovieDontInteractWithUserAttribute
+C/data/-/QTMovieDurationAttribute
+C/data/-/QTMovieEditabilityDidChangeNotification
+C/data/-/QTMovieEditableAttribute
+C/data/-/QTMovieEditedNotification
+C/data/-/QTMovieEnterFullScreenRequestNotification
+C/data/-/QTMovieExitFullScreenRequestNotification
+C/data/-/QTMovieExport
+C/data/-/QTMovieExportManufacturer
+C/data/-/QTMovieExportSettings
+C/data/-/QTMovieExportType
+C/data/-/QTMovieFileNameAttribute
+C/data/-/QTMovieFileOffsetAttribute
+C/tdef/-/QTMovieFileTypeOptions
+C/data/-/QTMovieFlatten
+C/data/-/QTMovieFrameImageDeinterlaceFields
+C/data/-/QTMovieFrameImageHighQuality
+C/data/-/QTMovieFrameImageOpenGLContext
+C/data/-/QTMovieFrameImagePixelFormat
+C/data/-/QTMovieFrameImageRepresentationsType
+C/data/-/QTMovieFrameImageSessionMode
+C/data/-/QTMovieFrameImageSingleField
+C/data/-/QTMovieFrameImageSize
+C/data/-/QTMovieFrameImageType
+C/data/-/QTMovieFrameImageTypeCGImageRef
+C/data/-/QTMovieFrameImageTypeCIImage
+C/data/-/QTMovieFrameImageTypeCVOpenGLTextureRef
+C/data/-/QTMovieFrameImageTypeCVPixelBufferRef
+C/data/-/QTMovieFrameImageTypeNSImage
+C/data/-/QTMovieHasApertureModeDimensionsAttribute
+C/data/-/QTMovieHasAudioAttribute
+C/data/-/QTMovieHasDurationAttribute
+C/data/-/QTMovieHasVideoAttribute
+C/data/-/QTMovieIsActiveAttribute
+C/data/-/QTMovieIsInteractiveAttribute
+C/data/-/QTMovieIsLinearAttribute
+C/data/-/QTMovieIsSteppableAttribute
+Objective-C/cl/-/QTMovieLayer
+C/tdef/-/QTMovieLoadState
+C/data/-/QTMovieLoadStateAttribute
+C/econst/-/QTMovieLoadStateComplete
+C/data/-/QTMovieLoadStateDidChangeNotification
+C/econst/-/QTMovieLoadStateError
+C/data/-/QTMovieLoadStateErrorAttribute
+C/econst/-/QTMovieLoadStateLoaded
+C/econst/-/QTMovieLoadStateLoading
+C/econst/-/QTMovieLoadStatePlayable
+C/econst/-/QTMovieLoadStatePlaythroughOK
+C/data/-/QTMovieLoopModeDidChangeNotification
+C/data/-/QTMovieLoopsAttribute
+C/data/-/QTMovieLoopsBackAndForthAttribute
+C/data/-/QTMovieMessageNotificationParameter
+C/data/-/QTMovieMessageStringPostedNotification
+C/data/-/QTMovieModificationTimeAttribute
+C/data/-/QTMovieMutedAttribute
+C/data/-/QTMovieNaturalSizeAttribute
+C/data/-/QTMovieNaturalSizeDidChangeNotification
+C/data/-/QTMovieOpenAsyncOKAttribute
+C/data/-/QTMovieOpenAsyncRequiredAttribute
+C/data/-/QTMovieOpenForPlaybackAttribute
+C/data/-/QTMoviePasteboardAttribute
+C/data/-/QTMoviePasteboardType
+C/data/-/QTMoviePlaysAllFramesAttribute
+C/data/-/QTMoviePlaysSelectionOnlyAttribute
+C/data/-/QTMoviePosterTimeAttribute
+C/data/-/QTMoviePreferredMutedAttribute
+C/data/-/QTMoviePreferredRateAttribute
+C/data/-/QTMoviePreferredVolumeAttribute
+C/data/-/QTMoviePreviewModeAttribute
+C/data/-/QTMoviePreviewRangeAttribute
+C/data/-/QTMovieRateAttribute
+C/data/-/QTMovieRateChangesPreservePitchAttribute
+C/data/-/QTMovieRateDidChangeNotification
+C/data/-/QTMovieRateDidChangeNotificationParameter
+C/data/-/QTMovieResolveDataRefsAttribute
+C/data/-/QTMovieSelectionAttribute
+C/data/-/QTMovieSelectionDidChangeNotification
+C/data/-/QTMovieSizeDidChangeNotification
+C/data/-/QTMovieStatusCodeNotificationParameter
+C/data/-/QTMovieStatusFlagsNotificationParameter
+C/data/-/QTMovieStatusStringNotificationParameter
+C/data/-/QTMovieStatusStringPostedNotification
+C/data/-/QTMovieTargetIDNotificationParameter
+C/data/-/QTMovieTargetNameNotificationParameter
+C/data/-/QTMovieTimeDidChangeNotification
+C/data/-/QTMovieTimeScaleAttribute
+C/data/-/QTMovieUneditableException
+C/data/-/QTMovieURLAttribute
+Objective-C/cl/-/QTMovieView
+C/data/-/QTMovieViewControllerVisibleBinding
+C/data/-/QTMovieViewFillColorBinding
+C/data/-/QTMovieViewMovieBinding
+C/data/-/QTMovieViewPreservesAspectRatioBinding
+C/data/-/QTMovieVolumeAttribute
+C/data/-/QTMovieVolumeDidChangeNotification
+C/func/-/QTNewGWorld
+C/func/-/QTNewGWorldFromPtr
+C/tdef/-/QTNextTaskNeededSoonerCallbackProc
+C/tdef/-/QTNextTaskNeededSoonerCallbackUPP
+C/func/-/QTOSTypeForString
+C/econst/-/qtParamErr
+C/tdef/-/QTParameterDialog
+C/tdef/-/QTParameterDialogOptions
+C/tdef/-/QTParameterValidationOptions
+C/func/-/QTPhotoDefineHuffmanTable
+C/func/-/QTPhotoDefineQuantizationTable
+C/func/-/QTPhotoSetRestartInterval
+C/func/-/QTPhotoSetSampling
+C/func/-/QTRemoveMoviePropertyListener
+C/func/-/QTRemoveTrackPropertyListener
+Objective-C/cl/-/QTSampleBuffer
+C/data/-/QTSampleBufferDateRecordedAttribute
+C/data/-/QTSampleBufferExplicitSceneChange
+C/data/-/QTSampleBufferHostTimeAttribute
+C/data/-/QTSampleBufferSceneChangeTypeAttribute
+C/data/-/QTSampleBufferSMPTETimeAttribute
+C/data/-/QTSampleBufferTimeStampDiscontinuitySceneChange
+C/func/-/QTSampleTableAddSampleDescription
+C/func/-/QTSampleTableAddSampleReferences
+C/func/-/QTSampleTableCopySampleDescription
+C/func/-/QTSampleTableCreateMutable
+C/func/-/QTSampleTableCreateMutableCopy
+C/func/-/QTSampleTableGetDataOffset
+C/func/-/QTSampleTableGetDataSizePerSample
+C/func/-/QTSampleTableGetDecodeDuration
+C/func/-/QTSampleTableGetDisplayOffset
+C/func/-/QTSampleTableGetNextAttributeChange
+C/func/-/QTSampleTableGetNumberOfSamples
+C/func/-/QTSampleTableGetProperty
+C/func/-/QTSampleTableGetPropertyInfo
+C/func/-/QTSampleTableGetSampleDescriptionID
+C/func/-/QTSampleTableGetSampleFlags
+C/func/-/QTSampleTableGetTimeScale
+C/func/-/QTSampleTableGetTypeID
+C/func/-/QTSampleTableRelease
+C/func/-/QTSampleTableReplaceRange
+C/func/-/QTSampleTableRetain
+C/func/-/QTSampleTableSetProperty
+C/func/-/QTSampleTableSetTimeScale
+C/tdef/-/QTScheduledBandwidthPtr
+C/tag/-/QTScheduledBandwidthRecord
+C/tdef/-/QTScheduledBandwidthReference
+C/func/-/QTScheduledBandwidthRelease
+C/func/-/QTScheduledBandwidthRequest
+C/func/-/QTSetMovieProperty
+C/func/-/QTSetPixMapHandleGammaLevel
+C/func/-/QTSetPixMapHandleRequestedGammaLevel
+C/func/-/QTSetPixMapHandleRowBytes
+C/func/-/QTSetPixMapPtrGammaLevel
+C/func/-/QTSetPixMapPtrRequestedGammaLevel
+C/func/-/QTSetPixMapPtrRowBytes
+C/func/-/QTSetTrackProperty
+C/func/-/QTSMPTETimeCompare
+C/func/-/QTStringForOSType
+C/func/-/QTStringFromSMPTETime
+C/func/-/QTStringFromTime
+C/func/-/QTStringFromTimeRange
+C/tag/-/QTTime
+C/func/-/QTTimeCompare
+C/func/-/QTTimeDecrement
+C/func/-/QTTimeFromString
+C/func/-/QTTimeIncrement
+C/func/-/QTTimeInTimeRange
+C/tdef/-/QTTimeRange
+C/func/-/QTTimeRangeEnd
+C/func/-/QTTimeRangeFromString
+Objective-C/instm/NSValue/QTTimeRangeValue
+Objective-C/instm/NSValue/QTTimeValue
+Objective-C/cl/-/QTTrack
+C/data/-/QTTrackBoundsAttribute
+C/data/-/QTTrackCreationTimeAttribute
+C/data/-/QTTrackDimensionsAttribute
+C/data/-/QTTrackDisplayNameAttribute
+C/data/-/QTTrackEnabledAttribute
+C/data/-/QTTrackFormatSummaryAttribute
+C/data/-/QTTrackHasApertureModeDimensionsAttribute
+C/data/-/QTTrackIDAttribute
+C/data/-/QTTrackIsChapterTrackAttribute
+C/data/-/QTTrackLayerAttribute
+C/data/-/QTTrackMediaTypeAttribute
+C/data/-/QTTrackModificationTimeAttribute
+C/data/-/QTTrackRangeAttribute
+C/data/-/QTTrackTimeScaleAttribute
+C/data/-/QTTrackUsageInMovieAttribute
+C/data/-/QTTrackUsageInPosterAttribute
+C/data/-/QTTrackUsageInPreviewAttribute
+C/data/-/QTTrackVolumeAttribute
+C/func/-/QTUnionTimeRange
+C/func/-/QTUpdateGWorld
+C/func/-/QTVideoOutputBaseSetEchoPort
+C/func/-/QTVideoOutputBegin
+C/tdef/-/QTVideoOutputComponent
+C/func/-/QTVideoOutputCopyIndAudioOutputDeviceUID
+C/func/-/QTVideoOutputCustomConfigureDisplay
+C/func/-/QTVideoOutputEnd
+C/func/-/QTVideoOutputGetClientName
+C/func/-/QTVideoOutputGetClock
+C/func/-/QTVideoOutputGetCurrentClientName
+C/func/-/QTVideoOutputGetDisplayMode
+C/func/-/QTVideoOutputGetDisplayModeList
+C/func/-/QTVideoOutputGetGWorld
+C/func/-/QTVideoOutputGetGWorldParameters
+C/func/-/QTVideoOutputGetIndImageDecompressor
+C/func/-/QTVideoOutputGetIndSoundOutput
+C/func/-/QTVideoOutputRestoreState
+C/func/-/QTVideoOutputSaveState
+C/func/-/QTVideoOutputSetClientName
+C/func/-/QTVideoOutputSetDisplayMode
+C/func/-/QTVideoOutputSetEchoPort
+JavaScript/instm/CanvasRenderingContext2D/quadraticCurveTo
+Objective-C/instm/PDFAnnotationMarkup/quadrilateralPoints
+C/func/-/QuadToQuadMatrix
+Objective-C/instm/NSDateComponents/quarter
+Objective-C/instm/NSDateFormatter/quarterSymbols
+Objective-C/instm/NSURL/query
+Objective-C/instm/NSObject/query:foundResults:error:
+JavaScript/instm/Document/queryCommandEnabled
+JavaScript/instm/Document/queryCommandIndeterm
+JavaScript/instm/Document/queryCommandState
+JavaScript/instm/Document/queryCommandSupported
+JavaScript/instm/Document/queryCommandValue
+C/func/-/querylocale
+JavaScript/instm/DocumentFragment/querySelector
+JavaScript/instm/Document/querySelector
+JavaScript/instm/Element/querySelector
+JavaScript/instm/Document/querySelectorAll
+JavaScript/instm/DocumentFragment/querySelectorAll
+JavaScript/instm/Element/querySelectorAll
+C/func/-/QueryUnicodeMappings
+Objective-C/clm/ODQuery/queryWithNode:forRecordTypes:attribute:matchType:queryValues:returnAttributes:maximumResults:error:
+C/func/-/queue
+C++/data/IOATABusCommand/queueChain
+Objective-C/instm/NSOperation/queuePriority
+Objective-C/instm/QTMedia/quickTimeMedia
+Objective-C/instm/QTMovie/quickTimeMovie
+Objective-C/instm/QTMovie/quickTimeMovieController
+Objective-C/instm/QTFormatDescription/quickTimeSampleDescription
+Objective-C/instm/QTTrack/quickTimeTrack
+JavaScript/clconst/DOMCoreException/QUOTA_EXCEEDED_ERR
+C/func/-/quotactl
+Objective-C/clm/NSTextCheckingResult/quoteCheckingResultWithRange:replacementString:
+C/func/-/qw
+JavaScript/data/SVGCircleElement/r
+JavaScript/data/SVGRadialGradientElement/r
+JavaScript/data/SVGPathSegArcRel/r1
+JavaScript/data/SVGPathSegArcAbs/r1
+JavaScript/data/SVGPathSegArcRel/r2
+JavaScript/data/SVGPathSegArcAbs/r2
+JavaScript/data/SVGFEMorphologyElement/radiusX
+JavaScript/data/SVGFEMorphologyElement/radiusY
+C/func/-/radixsort
+Objective-C/instm/NSException/raise
+C/func/-/raise
+Objective-C/clm/NSException/raise:format:
+Objective-C/clm/NSException/raise:format:arguments:
+Objective-C/instm/NSTextView/raiseBaseline:
+C/func/-/rand
+C/func/-/rand48
+C/func/-/RAND_add
+C/func/-/RAND_bytes
+C/func/-/RAND_cleanup
+C/func/-/RAND_egd
+C/func/-/RAND_egd_bytes
+C/func/-/RAND_event
+C/func/-/RAND_file_name
+C/func/-/RAND_get_rand_method
+C/func/-/RAND_load_file
+C/func/-/RAND_pseudo_bytes
+C/func/-/RAND_query_egd_bytes
+C/func/-/rand_r
+C/func/-/RAND_screen
+C/func/-/RAND_seed
+C/func/-/RAND_set_rand_engine
+C/func/-/RAND_set_rand_method
+C/func/-/RAND_SSLeay
+C/func/-/RAND_status
+C/func/-/RAND_write_file
+C/func/-/random
+Objective-C/instp/NSTextCheckingResult/range
+Objective-C/instm/NSTextCheckingResult/range
+JavaScript/data/DOMWindow/Range
+JavaScript/cl/-/Range
+Objective-C/instm/NSScriptExecutionContext/rangeContainerObject
+JavaScript/data/DOMSelection/rangeCount
+JavaScript/data/DOMWindow/RangeException
+JavaScript/cl/-/RangeException
+Objective-C/instm/NSTextView/rangeForUserCharacterAttributeChange
+Objective-C/instm/NSTextView/rangeForUserCompletion
+Objective-C/instm/NSTextView/rangeForUserParagraphAttributeChange
+Objective-C/instm/NSTextView/rangeForUserTextChange
+Objective-C/instm/NSString/rangeOfCharacterFromSet:
+Objective-C/instm/NSString/rangeOfCharacterFromSet:options:
+Objective-C/instm/NSString/rangeOfCharacterFromSet:options:range:
+Objective-C/instm/NSString/rangeOfComposedCharacterSequenceAtIndex:
+Objective-C/instm/NSString/rangeOfComposedCharacterSequencesForRange:
+Objective-C/instm/NSData/rangeOfData:options:range:
+Objective-C/instm/NSLayoutManager/rangeOfNominallySpacedGlyphsContainingIndex:
+Objective-C/instm/NSString/rangeOfString:
+Objective-C/instm/NSString/rangeOfString:options:
+Objective-C/instm/NSString/rangeOfString:options:range:
+Objective-C/instm/NSString/rangeOfString:options:range:locale:
+Objective-C/instm/NSAttributedString/rangeOfTextBlock:atIndex:
+Objective-C/instm/NSAttributedString/rangeOfTextList:atIndex:
+Objective-C/instm/NSAttributedString/rangeOfTextTable:atIndex:
+Objective-C/instm/NSCalendar/rangeOfUnit:inUnit:forDate:
+Objective-C/instm/NSCalendar/rangeOfUnit:startDate:interval:forDate:
+JavaScript/data/ValidityState/rangeOverflow
+Objective-C/instm/NSTextView/rangesForUserCharacterAttributeChange
+Objective-C/instm/NSTextView/rangesForUserParagraphAttributeChange
+Objective-C/instm/NSTextView/rangesForUserTextChange
+JavaScript/data/ValidityState/rangeUnderflow
+Objective-C/instm/NSValue/rangeValue
+C/tag/-/ranlib
+Objective-C/instm/NSSpeechSynthesizer/rate
+Objective-C/instm/QTMovie/rate
+C/func/-/raw
+C/func/-/rc4
+C/func/-/RC4
+C/func/-/RC4_set_key
+C/func/-/rcmd
+C/func/-/rcmd_af
+C/func/-/rcmdsh
+C/econst/-/rdVerify
+C/econst/-/rdVerifyBit
+C/econst/-/rdVerifyMask
+Objective-C/instp/PSEntry/read
+C/func/-/read
+C++/instm/IOBlockStorageDriver/read
+C++/instm/IOFilterScheme/read
+C++/instm/IOCDMedia/read
+C++/instm/IONetworkData/read
+C++/instm/IOMedia/read
+C++/instm/IOStorage/read
+C++/instm/IOUSBPipe/Read
+C++/instm/IOUSBController/Read
+C++/instm/IOPartitionScheme/read
+Objective-C/instm/NSInputStream/read:maxLength:
+C/func/-/read_all_mibs
+C/func/-/read_config
+C/func/-/read_config_print_usage
+C/func/-/read_configs
+C/func/-/read_mib
+C/func/-/read_module
+C/func/-/read_module_node
+C/func/-/read_objid
+C/func/-/read_premib_configs
+Objective-C/instm/NSTextView/readablePasteboardTypes
+Objective-C/clm/NSDocument/readableTypes
+Objective-C/intfcm/NSPasteboardReading/readableTypesForPasteboard:
+JavaScript/instm/FileReader/readAsBinaryString
+JavaScript/instm/FileReader/readAsDataURL
+JavaScript/instm/FileReader/readAsText
+C++/instm/IODMACommand/readBytes
+C++/instm/IOMemoryDescriptor/readBytes
+C++/instm/IONetworkData/readBytes
+C++/instm/IOCDMedia/readCD
+Objective-C/instm/NSFileHandle/readDataOfLength:
+Objective-C/instm/NSFileHandle/readDataToEndOfFile
+C++/instm/IOFramebuffer/readDDCClock
+C++/instm/IOFramebuffer/readDDCData
+C/func/-/readdir
+C/func/-/readdir_r
+C++/instm/IODVDMedia/readDiscInfo
+C++/instm/IOBDMedia/readDiscInfo
+C++/instm/IOCDMedia/readDiscInfo
+C++/instm/IOBDBlockStorageDevice/readDiscStructure
+Objective-C/instm/NSPasteboard/readFileContentsType:toFile:
+Objective-C/instm/NSPasteboard/readFileWrapper
+Objective-C/instm/NSDocument/readFromData:ofType:error:
+Objective-C/instm/NSMutableAttributedString/readFromData:options:documentAttributes:
+Objective-C/instm/NSMutableAttributedString/readFromData:options:documentAttributes:error:
+Objective-C/instm/NSDocument/readFromFile:ofType:
+Objective-C/instm/NSDocument/readFromFileWrapper:ofType:error:
+Objective-C/instm/NSDocument/readFromURL:ofType:
+Objective-C/instm/NSPersistentDocument/readFromURL:ofType:error:
+Objective-C/instm/NSDocument/readFromURL:ofType:error:
+Objective-C/instm/NSMutableAttributedString/readFromURL:options:documentAttributes:
+Objective-C/instm/NSMutableAttributedString/readFromURL:options:documentAttributes:error:
+Objective-C/instm/NSFileWrapper/readFromURL:options:error:
+Objective-C/instm/NSFileHandle/readInBackgroundAndNotify
+Objective-C/instm/NSFileHandle/readInBackgroundAndNotifyForModes:
+Objective-C/intfcm/NSPasteboardReading/readingOptionsForType:pasteboard:
+C++/instm/IOFireWirePCRSpace/readInputMasterPlug
+C++/instm/IOFireWirePCRSpace/readInputPlug
+C++/instm/IOCDMedia/readISRC
+C/func/-/readlink
+Objective-C/instm/IOBluetoothHostController/readLinkQualityForDevice:
+Objective-C/instm/NSObject(IOBluetoothHostControllerDelegate)/readLinkQualityForDeviceComplete:device:info:error:
+C++/instm/IOCDMedia/readMCN
+C++/instm/IONetworkUserClient/readNetworkData
+Objective-C/instm/NSPasteboard/readObjectsForClasses:options:
+JavaScript/data/HTMLTextAreaElement/readOnly
+JavaScript/data/HTMLInputElement/readOnly
+JavaScript/data/TestObj/readOnlyIntAttr
+JavaScript/data/TestObj/readOnlyStringAttr
+JavaScript/data/TestObj/readOnlyTestObjAttr
+C++/instm/IOFireWirePCRSpace/readOutputMasterPlug
+C++/instm/IOFireWirePCRSpace/readOutputPlug
+C/func/-/ReadPartialResource
+C/func/-/readpassphrase
+JavaScript/instm/WebGLRenderingContext/readPixels
+Objective-C/instm/NSPageLayout/readPrintInfo
+Objective-C/instm/IOBluetoothHostController/readRSSIForDevice:
+Objective-C/instm/NSObject(IOBluetoothHostControllerDelegate)/readRSSIForDeviceComplete:device:info:error:
+Objective-C/instm/NSText/readRTFDFromFile:
+C++/instm/IODVDMedia/readRZoneInfo
+Objective-C/instm/NSTextView/readSelectionFromPasteboard:
+Objective-C/instm/NSObject/readSelectionFromPasteboard:
+Objective-C/instm/NSTextView/readSelectionFromPasteboard:type:
+C++/instm/IOBDMedia/readStructure
+C++/instm/IODVDMedia/readStructure
+C++/instm/IODVDBlockStorageDriver/readStructure
+C++/instm/IOCDMedia/readTOC
+Objective-C/instm/NSFileHandle/readToEndOfFileInBackgroundAndNotify
+Objective-C/instm/NSFileHandle/readToEndOfFileInBackgroundAndNotifyForModes:
+C++/instm/IOCDMedia/readTrackInfo
+C++/instm/IOBDMedia/readTrackInfo
+JavaScript/instm/DatabaseSync/readTransaction
+JavaScript/instm/Database/readTransaction
+C/func/-/readv
+C++/instm/IOUSBControllerV2/ReadV2
+C/data/-/readyFlag
+JavaScript/data/Document/readyState
+JavaScript/data/EventSource/readyState
+JavaScript/data/HTMLMediaElement/readyState
+JavaScript/data/IDBRequest/readyState
+JavaScript/data/FileReader/readyState
+JavaScript/data/XMLHttpRequest/readyState
+JavaScript/data/WebSocket/readyState
+C/func/-/realloc
+C/func/-/reallocf
+Objective-C/instm/NSURLProtectionSpace/realm
+C/func/-/realpath
+Objective-C/instm/NSTreeController/rearrangeObjects
+Objective-C/instm/NSArrayController/rearrangeObjects
+Objective-C/instm/NSException/reason
+C/func/-/reboot
+Objective-C/instm/NSImage/recache
+Objective-C/instm/NSWindow/recalculateKeyViewLoop
+C++/instm/IOStreamBuffer/receiveClientReference
+Objective-C/instm/XGAuthenticator/receiveData:
+Objective-C/intfm/WebDocumentRepresentation/receivedData:withDataSource:
+Objective-C/intfm/WebDocumentRepresentation/receivedError:withDataSource:
+C++/instm/IONetworkController/receivePacket
+Objective-C/instm/NSPortMessage/receivePort
+Objective-C/instm/NSConnection/receivePort
+Objective-C/instm/NSScriptCommand/receiversSpecifier
+Objective-C/instm/NSURLProtectionSpace/receivesCredentialSecurely
+Objective-C/instm/IOBluetoothDevice/recentAccessDate
+Objective-C/clm/IOBluetoothDevice/recentDevices:
+Objective-C/instm/NSDocumentController/recentDocumentURLs
+Objective-C/instm/NSSearchField/recentsAutosaveName
+Objective-C/instm/NSSearchFieldCell/recentsAutosaveName
+Objective-C/instm/NSSearchField/recentSearches
+Objective-C/instm/NSSearchFieldCell/recentSearches
+Objective-C/binding/NSSearchField/recentSearches
+Objective-C/instm/CIContext/reclaimResources
+C/func/-/recno
+Objective-C/intfm/IMKStateSetting/recognizedEvents:
+Objective-C/instm/ISyncChange/record
+Objective-C/instm/ABAddressBook/recordClassFromUniqueId:
+Objective-C/clm/NSAppleEventDescriptor/recordDescriptor
+Objective-C/instm/ODRecord/recordDetailsForAttributes:error:
+Objective-C/instm/QTCaptureFileOutput/recordedDuration
+Objective-C/instm/QTCaptureFileOutput/recordedFileSize
+Objective-C/instm/ABAddressBook/recordForUniqueId:
+Objective-C/instm/ISyncChange/recordIdentifier
+Objective-C/instm/ISyncRecordSnapshot/recordIdentifierForReference:isModified:
+C++/instm/IOBlockStorageDriver/recordMediaParameters
+Objective-C/instp/ODRecord/recordName
+Objective-C/instm/ODRecord/recordName
+Objective-C/instm/ISyncRecordSnapshot/recordReferenceForRecordWithIdentifier:
+Objective-C/instm/NSObject/recordsForEntityName:moreComing:error:
+Objective-C/instm/ABAddressBook/recordsMatchingSearchElement:
+C++/instm/IOCatalogue/recordStartupExtensions
+Objective-C/instm/ISyncRecordSnapshot/recordsWithIdentifiers:
+Objective-C/instm/ISyncRecordSnapshot/recordsWithMatchingAttributes:
+Objective-C/instm/QTCaptureFileOutput/recordToOutputFileURL:
+Objective-C/instm/QTCaptureFileOutput/recordToOutputFileURL:bufferDestination:
+Objective-C/instp/ODRecord/recordType
+Objective-C/instm/ODRecord/recordType
+Objective-C/instm/ODNode/recordWithRecordType:name:attributes:error:
+JavaScript/clconst/IDBDatabaseException/RECOVERABLE_ERR
+Objective-C/instm/NSError/recoveryAttempter
+C/tag/-/Rect
+Objective-C/instm/NSCachedImageRep/rect
+Objective-C/instm/NSTrackingArea/rect
+JavaScript/instm/CanvasRenderingContext2D/rect
+JavaScript/data/DOMWindow/Rect
+JavaScript/cl/-/Rect
+Objective-C/instm/NSLayoutManager/rectArrayForCharacterRange:withinSelectedCharacterRange:inTextContainer:rectCount:
+Objective-C/instm/NSLayoutManager/rectArrayForGlyphRange:withinSelectedGlyphRange:inTextContainer:rectCount:
+Objective-C/instm/NSTextTable/rectForBlock:layoutAtPoint:inRect:textContainer:characterRange:
+Objective-C/instm/NSPrinter/rectForKey:inTable:
+Objective-C/instm/NSTextBlock/rectForLayoutAtPoint:inRect:textContainer:characterRange:
+Objective-C/instm/NSView/rectForPage:
+Objective-C/instm/NSScroller/rectForPart:
+C/func/-/RectMatrix
+Objective-C/instm/IKImageBrowserView/rectOfColumn:
+Objective-C/instm/NSTableView/rectOfColumn:
+Objective-C/instm/NSMenuView/rectOfItemAtIndex:
+Objective-C/instm/NSPathCell/rectOfPathComponentCell:withFrame:inView:
+Objective-C/instm/IKImageBrowserView/rectOfRow:
+Objective-C/instm/NSTableView/rectOfRow:
+Objective-C/instm/NSSlider/rectOfTickMarkAtIndex:
+Objective-C/instm/NSSliderCell/rectOfTickMarkAtIndex:
+Objective-C/instm/NSLevelIndicator/rectOfTickMarkAtIndex:
+Objective-C/instm/NSLevelIndicatorCell/rectOfTickMarkAtIndex:
+Objective-C/instm/NSView/rectPreservedDuringLiveResize
+C/tdef/-/RectPtr
+Objective-C/instm/NSValue/rectValue
+Objective-C/instp/CalRecurrenceRule/recurrenceEnd
+Objective-C/instm/CalRecurrenceRule/recurrenceEnd
+Objective-C/clm/CalRecurrenceEnd/recurrenceEndWithEndDate:
+Objective-C/clm/CalRecurrenceEnd/recurrenceEndWithOccurrenceCount:
+Objective-C/instp/CalRecurrenceRule/recurrenceInterval
+Objective-C/instm/CalRecurrenceRule/recurrenceInterval
+Objective-C/instm/CalEvent/recurrenceRule
+Objective-C/instp/CalEvent/recurrenceRule
+Objective-C/instm/CalRecurrenceRule/recurrenceType
+Objective-C/instp/CalRecurrenceRule/recurrenceType
+C/func/-/recv
+C/func/-/RECVBUF
+C/func/-/recvfrom
+C/func/-/recvmsg
+Objective-C/instm/NSWorkspace/recycleURLs:completionHandler:
+Objective-C/instm/CIColor/red
+JavaScript/data/RGBColor/red
+JavaScript/clconst/WebGLRenderingContext/RED_BITS
+Objective-C/clm/NSColor/redColor
+Objective-C/instm/NSColor/redComponent
+C++/instm/IOMemoryMap/redirect
+Objective-C/instp/PSFeed/redirectedURL
+Objective-C/instm/NSUndoManager/redo
+Objective-C/instm/NSManagedObjectContext/redo
+Objective-C/instm/NSUndoManager/redoActionName
+Objective-C/instm/NSUndoManager/redoMenuItemTitle
+Objective-C/instm/NSUndoManager/redoMenuTitleForUndoActionName:
+Objective-C/instm/CAEmitterCell/redRange
+Objective-C/instp/CAEmitterCell/redRange
+C/func/-/redrawwin
+Objective-C/instp/CAEmitterCell/redSpeed
+Objective-C/instm/CAEmitterCell/redSpeed
+C++/instm/IOUSBDevice/ReEnumerateDevice
+C++/data/IOATACommand/refCon
+C++/data/IOEventSource/refcon
+C/tdef/-/refCon
+C++/data/IOATACommand/refCon2
+Objective-C/instm/QTDataReference/referenceData
+Objective-C/instm/QTDataReference/referenceFile
+JavaScript/data/NodeIterator/referenceNode
+Objective-C/instm/NSAtomicStore/referenceObjectForObjectID:
+C/tdef/-/referenceSAXFunc
+Objective-C/instm/QTDataReference/referenceURL
+JavaScript/data/Document/referrer
+Objective-C/instm/NSScrollView/reflectScrolledClipView:
+Objective-C/instm/NSView/reflectScrolledClipView:
+Objective-C/instm/IBInspector/refresh
+C/func/-/refresh
+JavaScript/instm/PluginArray/refresh
+Objective-C/instm/PSFeed/refresh:
+Objective-C/instm/QLPreviewPanel/refreshCurrentPreviewItem
+Objective-C/instp/PSFeedSettings/refreshesInBackground
+Objective-C/instp/PSFeed/refreshing
+Objective-C/instp/PSFeedSettings/refreshInterval
+Objective-C/instm/NSManagedObjectContext/refreshObject:mergeChanges:
+Objective-C/instm/NSControl/refusesFirstResponder
+Objective-C/instm/NSCell/refusesFirstResponder
+JavaScript/data/SVGMarkerElement/refX
+JavaScript/data/SVGMarkerElement/refY
+C/func/-/regcomp
+C/func/-/regerror
+C/func/-/regex
+C/func/-/regexec
+C/func/-/regfree
+C/func/-/register_app_config_handler
+C/func/-/register_app_premib_handler
+C/func/-/register_config_handler
+C/func/-/register_mib_handlers
+C/func/-/register_premib_handler
+Objective-C/instm/NSHelpManager/registerBooksInBundle:
+Objective-C/clm/NSURLProtocol/registerClass:
+Objective-C/instm/NSScriptSuiteRegistry/registerClassDescription:
+Objective-C/clm/NSClassDescription/registerClassDescription:forClass:
+Objective-C/instm/ISyncManager/registerClientWithIdentifier:descriptionFilePath:
+Objective-C/instm/NSScriptCoercionHandler/registerCoercer:selector:toConvertFromClass:toClass:
+Objective-C/instm/NSScriptSuiteRegistry/registerCommandDescription:
+C/func/-/RegisterComponent
+C/econst/-/registerComponentAfterExisting
+C/econst/-/registerComponentAliasesOnly
+C/func/-/RegisterComponentFile
+C/func/-/RegisterComponentFileEntries
+C/func/-/RegisterComponentFileRef
+C/func/-/RegisterComponentFileRefEntries
+C/econst/-/registerComponentGlobal
+C/econst/-/registerComponentNoDuplicates
+C/func/-/RegisterComponentResource
+C/func/-/RegisterComponentResourceFile
+JavaScript/instm/Navigator/registerContentHandler
+Objective-C/instm/NSUserDefaults/registerDefaults:
+C/tdef/-/RegisteredComponentInstanceRecord
+C/tdef/-/RegisteredComponentRecord
+Objective-C/instm/NSView/registeredDraggedTypes
+Objective-C/clm/NSImageRep/registeredImageRepClasses
+Objective-C/instm/NSManagedObjectContext/registeredObjects
+Objective-C/clm/NSPersistentStoreCoordinator/registeredStoreTypes
+C++/instm/IOHIDDevice/registerElement
+Objective-C/instm/CIFilterGenerator/registerFilterName:
+Objective-C/clm/CIFilter/registerFilterName:constructor:classAttributes:
+Objective-C/instm/IOBluetoothRFCOMMChannel/registerForChannelCloseNotification:selector:
+Objective-C/instm/IOBluetoothL2CAPChannel/registerForChannelCloseNotification:selector:
+Objective-C/clm/IOBluetoothL2CAPChannel/registerForChannelOpenNotifications:selector:
+Objective-C/clm/IOBluetoothRFCOMMChannel/registerForChannelOpenNotifications:selector:
+Objective-C/clm/IOBluetoothRFCOMMChannel/registerForChannelOpenNotifications:selector:withChannelID:direction:
+Objective-C/clm/IOBluetoothL2CAPChannel/registerForChannelOpenNotifications:selector:withPSM:direction:
+Objective-C/clm/IOBluetoothDevice/registerForConnectNotifications:selector:
+Objective-C/instm/IOBluetoothDevice/registerForDisconnectNotification:selector:
+Objective-C/instm/NSWindow/registerForDraggedTypes:
+Objective-C/instm/NSView/registerForDraggedTypes:
+C++/instm/IOFramebuffer/registerForInterruptType
+Objective-C/clm/NSTextView/registerForServices
+C++/clm/IOKernelDebugger/registerHandler
+Objective-C/clm/NSImageRep/registerImageRepClass:
+Objective-C/instm/IOBluetoothRFCOMMChannel/registerIncomingDataListener:refCon:
+Objective-C/instm/IOBluetoothL2CAPChannel/registerIncomingDataListener:refCon:
+Objective-C/instm/IOBluetoothRFCOMMChannel/registerIncomingEventListener:refCon:
+C++/instm/IOService/registerInterestedDriver
+C++/instm/IOService/registerInterrupt
+Objective-C/instm/NSSpellServer/registerLanguage:byVendor:
+Objective-C/instm/NSConnection/registerName:
+Objective-C/instm/NSConnection/registerName:withNameServer:
+C++/instm/IONetworkInterface/registerOutputHandler
+Objective-C/clm/QCPlugIn/registerPlugInClass:
+C/func/-/registerPMSettingController
+Objective-C/instm/NSMachBootstrapServer/registerPort:name:
+Objective-C/instm/NSSocketPortNameServer/registerPort:name:
+Objective-C/instm/NSPortNameServer/registerPort:name:
+Objective-C/instm/NSSocketPortNameServer/registerPort:name:nameServerPortNumber:
+C++/instm/IOService/registerPowerDriver
+JavaScript/instm/Navigator/registerProtocolHandler
+Objective-C/instm/ISyncManager/registerSchemaWithBundlePath:
+C++/instm/IOAudioEngine/registerService
+C++/instm/IOService/registerService
+Objective-C/instm/NSApplication/registerServicesMenuSendTypes:returnTypes:
+Objective-C/clm/NSPersistentStoreCoordinator/registerStoreClass:forStoreType:
+Objective-C/instm/NSUndoManager/registerUndoWithTarget:selector:object:
+Objective-C/clm/NSRulerView/registerUnitWithName:abbreviation:unitToPointsConversionFactor:stepUpCycle:stepDownCycle:
+Objective-C/clm/NSURLHandle/registerURLHandleClass:
+Objective-C/clm/WebView/registerURLSchemeAsLocal:
+Objective-C/instm/NSApplication/registerUserInterfaceItemSearchHandler:
+Objective-C/clm/WebView/registerViewClass:representationClass:forMIMEType:
+C++/instm/IONetworkController/registerWithPolicyMaker
+C++/clm/IOService/registryEntryIDMatching
+C/func/-/regsterrpc
+Objective-C/instm/NSFileWrapper/regularFileContents
+C++/instm/IOBlockStorageDriver/rejectMedia
+JavaScript/data/HTMLAnchorElement/rel
+JavaScript/data/HTMLLinkElement/rel
+JavaScript/data/MutationEvent/relatedNode
+JavaScript/data/MouseEvent/relatedTarget
+Objective-C/instp/PSLink/relations
+Objective-C/instm/NSFetchRequest/relationshipKeyPathsForPrefetching
+Objective-C/instm/NSEntityMapping/relationshipMappings
+Objective-C/instm/NSEntityDescription/relationshipsByName
+Objective-C/instm/NSEntityDescription/relationshipsWithDestinationEntity:
+Objective-C/instm/NSBezierPath/relativeCurveToPoint:controlPoint1:controlPoint2:
+Objective-C/instm/NSBezierPath/relativeLineToPoint:
+Objective-C/instm/NSBezierPath/relativeMoveToPoint:
+Objective-C/instm/NSURL/relativePath
+Objective-C/instm/NSRelativeSpecifier/relativePosition
+Objective-C/instm/NSURL/relativeString
+Objective-C/instp/CalAlarm/relativeTrigger
+Objective-C/instm/CalAlarm/relativeTrigger
+Objective-C/instm/NSAutoreleasePool/release
+Objective-C/intfm/NSObject/release
+C++/instm/IOFireWireSBP2ORB/release
+C++/instm/OSObject/release
+C++/instm/OSMetaClassBase/release
+C++/instm/OSMetaClass/release
+C++/instm/IOAGPDevice/releaseAGPMemory
+C++/clm/IOUserClient/releaseAsyncReference64
+Objective-C/instm/CAOpenGLLayer/releaseCGLContext:
+Objective-C/instm/CAOpenGLLayer/releaseCGLPixelFormat:
+C++/instm/IOFireWireSBP2ORB/releaseCommandBuffers
+C++/instm/IONetworkController/releaseDebuggerLock
+C++/instm/IOUSBController/ReleaseDeviceZero
+JavaScript/instm/DOMWindow/releaseEvents
+JavaScript/instm/HTMLDocument/releaseEvents
+Objective-C/instm/DRDevice/releaseExclusiveAccess
+C++/instm/IONetworkController/releaseFreePackets
+Objective-C/instm/NSPasteboard/releaseGlobally
+Objective-C/instm/NSView/releaseGState
+Objective-C/instm/DRDevice/releaseMediaReservation
+C++/clm/IOUserClient/releaseNotificationPort
+Objective-C/intfm/QCPlugInOutputImageProvider/releaseRenderedTexture:forCGLContext:
+C/func/-/ReleaseResource
+JavaScript/instm/WebGLRenderingContext/releaseShaderCompiler
+JavaScript/instm/InspectorBackend/releaseWrapperObjectGroup
+Objective-C/instp/NSPointerFunctions/relinquishFunction
+Objective-C/instm/NSPointerFunctions/relinquishFunction
+Objective-C/instm/WebFrame/reload
+JavaScript/instm/window/reload
+Objective-C/instm/WebView/reload:
+Objective-C/instm/NSBrowser/reloadColumn:
+Objective-C/instm/NSRuleEditor/reloadCriteria
+Objective-C/instm/NSComboBox/reloadData
+Objective-C/instm/NSComboBoxCell/reloadData
+Objective-C/instm/IKSlideshow/reloadData
+Objective-C/instm/QLPreviewPanel/reloadData
+Objective-C/instm/IKImageEditPanel/reloadData
+Objective-C/instm/IKImageBrowserView/reloadData
+Objective-C/instm/NSTableView/reloadData
+Objective-C/instm/NSTableView/reloadDataForRowIndexes:columnIndexes:
+Objective-C/instm/NSBrowser/reloadDataForRowIndexes:inColumn:
+Objective-C/instm/NSFontPanel/reloadDefaultFontFamilies
+Objective-C/instm/WebFrame/reloadFromOrigin
+Objective-C/instm/WebView/reloadFromOrigin:
+Objective-C/instm/NSOutlineView/reloadItem:
+Objective-C/instm/NSOutlineView/reloadItem:reloadChildren:
+JavaScript/instm/InspectorBackend/reloadPage
+Objective-C/instm/NSRuleEditor/reloadPredicate
+Objective-C/instm/IKSlideshow/reloadSlideshowItemAtIndex:
+C/tag/-/relocation_info
+C/func/-/remainder
+C/func/-/remainderf
+C/func/-/remainderl
+Objective-C/instm/AMShellScriptAction/remapLineEndings
+Objective-C/instp/CWConfiguration/rememberedNetworks
+Objective-C/instm/IOBluetoothDevice/remoteNameRequest:
+Objective-C/instm/IOBluetoothDevice/remoteNameRequest:withPageTimeout:
+Objective-C/instm/NSConnection/remoteObjects
+JavaScript/clconst/MutationEvent/REMOVAL
+C/func/-/remove
+C++/instm/IONotifier/remove
+JavaScript/instm/DataGridColumnList/remove
+JavaScript/instm/HTMLSelectElement/remove
+JavaScript/instm/HTMLOptionsCollection/remove
+Objective-C/instm/NSTreeController/remove:
+Objective-C/instm/NSObjectController/remove:
+Objective-C/instm/NSArrayController/remove:
+C/func/-/remove_session_cb
+Objective-C/instm/NSPageLayout/removeAccessoryController:
+Objective-C/instm/NSPrintPanel/removeAccessoryController:
+Objective-C/instm/AMWorkflow/removeAction:
+Objective-C/instm/CalCalendarItem/removeAlarm:
+Objective-C/instm/CalCalendarItem/removeAlarms:
+Objective-C/instm/NSUndoManager/removeAllActions
+Objective-C/instm/NSUndoManager/removeAllActionsWithTarget:
+Objective-C/instm/CALayer/removeAllAnimations
+C++/instm/IOStream/removeAllBuffers
+Objective-C/instm/NSURLCache/removeAllCachedResponses
+Objective-C/instm/IMAVControlBar/removeAllControls
+Objective-C/instm/NSMutableIndexSet/removeAllIndexes
+Objective-C/instm/NSPopUpButtonCell/removeAllItems
+Objective-C/instm/NSPopUpButton/removeAllItems
+Objective-C/instm/WebHistory/removeAllItems
+Objective-C/instm/NSComboBox/removeAllItems
+Objective-C/instm/NSComboBoxCell/removeAllItems
+Objective-C/instm/NSMenu/removeAllItems
+Objective-C/instm/NSHashTable/removeAllObjects
+Objective-C/instm/NSMutableSet/removeAllObjects
+Objective-C/instm/NSMapTable/removeAllObjects
+Objective-C/instm/NSMutableDictionary/removeAllObjects
+Objective-C/instm/NSMutableArray/removeAllObjects
+Objective-C/instm/NSCache/removeAllObjects
+Objective-C/instm/NSBezierPath/removeAllPoints
+JavaScript/instm/DOMSelection/removeAllRanges
+JavaScript/instm/InspectorBackend/removeAllScriptsToEvaluateOnLoad
+C++/instm/IOAudioDevice/removeAllTimerEvents
+Objective-C/instm/NSView/removeAllToolTips
+C++/instm/IOFWAddressSpace/removeAllTrustedNodes
+Objective-C/instm/CALayer/removeAnimationForKey:
+Objective-C/instm/PDFPage/removeAnnotation:
+Objective-C/instm/QTTrack/removeApertureModeDimensions
+Objective-C/instm/QTMovie/removeApertureModeDimensions
+JavaScript/instm/Element/removeAttribute
+JavaScript/instm/InspectorBackend/removeAttribute
+Objective-C/instm/NSMutableAttributedString/removeAttribute:range:
+Objective-C/instm/NSXMLElement/removeAttributeForName:
+JavaScript/instm/Element/removeAttributeNode
+JavaScript/instm/Element/removeAttributeNS
+Objective-C/instm/PDFAnnotationInk/removeBezierPath:
+JavaScript/instm/InspectorBackend/removeBreakpoint
+C++/instm/IOStream/removeBuffer
+Objective-C/instm/NSURLCache/removeCachedResponseForRequest:
+Objective-C/instm/CalCalendarStore/removeCalendar:error:
+Objective-C/instm/QTMovie/removeChapters
+Objective-C/instm/NSMutableCharacterSet/removeCharactersInRange:
+Objective-C/instm/NSMutableCharacterSet/removeCharactersInString:
+JavaScript/instm/core/removeChild
+Objective-C/instm/DRFolder(VirtualFolders)/removeChild:
+Objective-C/instm/NSXMLDocument/removeChildAtIndex:
+Objective-C/instm/NSXMLDTD/removeChildAtIndex:
+Objective-C/instm/NSXMLElement/removeChildAtIndex:
+Objective-C/instm/NSWindow/removeChildWindow:
+Objective-C/instm/NSURLHandle/removeClient:
+Objective-C/instm/NSFontManager/removeCollection:
+Objective-C/instm/NSColorList/removeColorWithKey:
+Objective-C/instm/NSMatrix/removeColumn:
+Objective-C/instm/NSPort/removeConnection:fromRunLoop:forMode:
+Objective-C/instm/NSHelpManager/removeContextHelpForObject:
+Objective-C/instm/IMAVControlBar/removeControl:
+Objective-C/instm/NSURLCredentialStorage/removeCredential:forProtectionSpace:
+Objective-C/instm/NSView/removeCursorRect:cursor:
+C/func/-/RemoveDataBrowserItems
+C/func/-/RemoveDataBrowserTableViewColumn
+Objective-C/instm/NSOperation/removeDependency:
+Objective-C/instm/NSAppleEventDescriptor/removeDescriptorAtIndex:
+Objective-C/instm/NSAppleEventDescriptor/removeDescriptorWithKeyword:
+Objective-C/instm/NSDocumentController/removeDocument:
+JavaScript/instm/InspectorBackend/removeDOMStorageItem
+Objective-C/instm/CAAnimation/removedOnCompletion
+Objective-C/instp/CAAnimation/removedOnCompletion
+Objective-C/instm/WebView/removeDragCaret
+C++/instm/IOCatalogue/removeDrivers
+Objective-C/instm/NSForm/removeEntryAtIndex:
+Objective-C/instm/CalCalendarStore/removeEvent:span:error:
+Objective-C/instm/NSAppleEventManager/removeEventHandlerForEventClass:andEventID:
+JavaScript/instm/AbstractWorker/removeEventListener
+JavaScript/instm/DOMWindow/removeEventListener
+JavaScript/instm/DOMApplicationCache/removeEventListener
+JavaScript/instm/EventTarget/removeEventListener
+JavaScript/instm/IDBRequest/removeEventListener
+JavaScript/instm/EventSource/removeEventListener
+JavaScript/instm/core/removeEventListener
+JavaScript/instm/svg/removeEventListener
+JavaScript/instm/MessagePort/removeEventListener
+JavaScript/instm/Notification/removeEventListener
+JavaScript/instm/TestObj/removeEventListener
+JavaScript/instm/WorkerContext/removeEventListener
+JavaScript/instm/XMLHttpRequestUpload/removeEventListener
+JavaScript/instm/WebSocket/removeEventListener
+JavaScript/instm/XMLHttpRequest/removeEventListener
+C++/instm/IOWorkLoop/removeEventSource
+Objective-C/instm/CIFilterGenerator/removeExportedKey:
+Objective-C/instm/PSClient/removeFeed:
+Objective-C/instm/NSColorList/removeFile
+C/func/-/removefile
+C/func/-/removefile_cancel
+C/func/-/removefile_state_alloc
+C/func/-/removefile_state_free
+C/func/-/removefile_state_get
+C/func/-/removefile_state_set
+Objective-C/instm/NSFileManager/removeFileAtPath:handler:
+Objective-C/instm/NSFileWrapper/removeFileWrapper:
+Objective-C/instm/NSFontManager/removeFontDescriptor:fromCollection:
+Objective-C/instm/NSFontManager/removeFontTrait:
+Objective-C/clm/NSWindow/removeFrameUsingName:
+Objective-C/instm/IOBluetoothDevice/removeFromFavorites
+Objective-C/instm/PDFOutline/removeFromParent
+C++/instm/IOFWCommand/removeFromQ
+C/func/-/RemoveFromRunLoop
+Objective-C/instm/NSStream/removeFromRunLoop:forMode:
+Objective-C/instm/NSNetServiceBrowser/removeFromRunLoop:forMode:
+Objective-C/instm/NSNetService/removeFromRunLoop:forMode:
+Objective-C/instm/ODQuery/removeFromRunLoop:forMode:
+Objective-C/instm/NSPort/removeFromRunLoop:forMode:
+Objective-C/instm/NSMachPort/removeFromRunLoop:forMode:
+Objective-C/instm/CALayer/removeFromSuperlayer
+Objective-C/instm/NSView/removeFromSuperview
+Objective-C/instm/NSView/removeFromSuperviewWithoutNeedingDisplay
+C++/instm/IOSCSIParallelInterfaceController/RemoveHBAProperty
+C/func/-/RemoveImageDescriptionExtension
+Objective-C/instm/NSMutableIndexSet/removeIndex:
+Objective-C/instm/NSMutableIndexSet/removeIndexes:
+Objective-C/instm/NSMutableIndexSet/removeIndexesInRange:
+Objective-C/instm/QTCaptureSession/removeInput:
+Objective-C/instm/QCPlugIn/removeInputPortForKey:
+JavaScript/instm/Storage/removeItem
+JavaScript/instm/SVGNumberList/removeItem
+JavaScript/instm/SVGLengthList/removeItem
+JavaScript/instm/SVGTransformList/removeItem
+JavaScript/instm/SVGPointList/removeItem
+JavaScript/instm/SVGPathSegList/removeItem
+JavaScript/instm/SVGStringList/removeItem
+Objective-C/instm/NSMenu/removeItem:
+Objective-C/instm/NSPopUpButton/removeItemAtIndex:
+Objective-C/instm/NSPopUpButtonCell/removeItemAtIndex:
+Objective-C/instm/NSComboBox/removeItemAtIndex:
+Objective-C/instm/NSComboBoxCell/removeItemAtIndex:
+Objective-C/instm/NSToolbar/removeItemAtIndex:
+Objective-C/instm/NSMenu/removeItemAtIndex:
+Objective-C/instm/NSFileManager/removeItemAtPath:error:
+Objective-C/instm/NSFileManager/removeItemAtURL:error:
+Objective-C/instm/WebHistory/removeItems:
+Objective-C/instm/NSComboBox/removeItemWithObjectValue:
+Objective-C/instm/NSComboBoxCell/removeItemWithObjectValue:
+Objective-C/instm/NSPopUpButton/removeItemWithTitle:
+Objective-C/instm/NSPopUpButtonCell/removeItemWithTitle:
+C++/instm/IOCatalogue/removeKernelLinker
+Objective-C/instm/NSMutableArray/removeLastObject
+Objective-C/instm/NSTextStorage/removeLayoutManager:
+C++/instm/IOUserClient/removeMappingForDescriptor
+Objective-C/instm/NSRulerView/removeMarker:
+C++/clm/IONetworkMedium/removeMedium
+Objective-C/instm/ABGroup/removeMember:
+Objective-C/instm/ODRecord/removeMemberRecord:error:
+Objective-C/clm/NSEvent/removeMonitor:
+JavaScript/instm/NamedNodeMap/removeNamedItem
+JavaScript/instm/NamedNodeMap/removeNamedItemNS
+Objective-C/instm/NSXMLElement/removeNamespaceForPrefix:
+C++/instm/IONetworkInterface/removeNetworkData
+JavaScript/instm/InspectorBackend/removeNode
+C++/instm/OSArray/removeObject
+C++/instm/OSDictionary/removeObject
+C++/instm/OSSet/removeObject
+C++/instm/OSOrderedSet/removeObject
+Objective-C/instm/NSMutableSet/removeObject:
+Objective-C/instm/NSHashTable/removeObject:
+Objective-C/instm/NSObjectController/removeObject:
+Objective-C/instm/IBDocument/removeObject:
+Objective-C/instm/NSCountedSet/removeObject:
+Objective-C/instm/NSArrayController/removeObject:
+Objective-C/instm/NSMutableArray/removeObject:
+Objective-C/instm/NSMutableArray/removeObject:inRange:
+Objective-C/instm/NSArrayController/removeObjectAtArrangedObjectIndex:
+Objective-C/instm/NSTreeController/removeObjectAtArrangedObjectIndexPath:
+Objective-C/instm/NSMutableArray/removeObjectAtIndex:
+Objective-C/instm/NSMapTable/removeObjectForKey:
+Objective-C/instm/NSUserDefaults/removeObjectForKey:
+Objective-C/instm/NSMutableDictionary/removeObjectForKey:
+Objective-C/instm/NSCache/removeObjectForKey:
+Objective-C/instm/NSMutableArray/removeObjectIdenticalTo:
+Objective-C/instm/NSMutableArray/removeObjectIdenticalTo:inRange:
+Objective-C/instm/NSArrayController/removeObjects:
+Objective-C/instm/NSArrayController/removeObjectsAtArrangedObjectIndexes:
+Objective-C/instm/NSTreeController/removeObjectsAtArrangedObjectIndexPaths:
+Objective-C/instm/NSMutableArray/removeObjectsAtIndexes:
+Objective-C/instm/NSMutableDictionary/removeObjectsForKeys:
+Objective-C/instm/NSMutableArray/removeObjectsFromIndices:numIndices:
+Objective-C/instm/NSMutableArray/removeObjectsInArray:
+Objective-C/instm/NSMutableArray/removeObjectsInRange:
+C++/instm/TestRun/removeObserver
+Objective-C/instm/NSServerNotificationCenter/removeObserver:
+Objective-C/instm/NSNotificationCenter/removeObserver:
+Objective-C/instm/NSSet/removeObserver:forKeyPath:
+Objective-C/instm/NSObject/removeObserver:forKeyPath:
+Objective-C/instm/NSArray/removeObserver:forKeyPath:
+Objective-C/instm/NSArray/removeObserver:fromObjectsAtIndexes:forKeyPath:
+Objective-C/instm/NSDistributedNotificationCenter/removeObserver:name:object:
+Objective-C/instm/DRNotificationCenter/removeObserver:name:object:
+Objective-C/instm/NSServerNotificationCenter/removeObserver:name:object:
+Objective-C/instm/NSNotificationCenter/removeObserver:name:object:
+Objective-C/instm/QTCaptureSession/removeOutput:
+Objective-C/instm/QCPlugIn/removeOutputPortForKey:
+Objective-C/instm/PDFDocument/removePageAtIndex:
+Objective-C/instm/NSAppleEventDescriptor/removeParamDescriptorWithKeyword:
+JavaScript/instm/XSLTProcessor/removeParameter
+Objective-C/instm/NSUserDefaults/removePersistentDomainForName:
+Objective-C/instm/NSPersistentStoreCoordinator/removePersistentStore:error:
+C++/instm/IOCatalogue/removePersonalities
+Objective-C/instm/NSPointerArray/removePointerAtIndex:
+Objective-C/instm/NSRunLoop/removePort:forMode:
+Objective-C/instm/NSSocketPortNameServer/removePortForName:
+Objective-C/instm/NSPortNameServer/removePortForName:
+C++/instm/IOService/removePowerChild
+Objective-C/instm/NSAnimation/removeProgressMark:
+Objective-C/clm/ABPerson/removeProperties:
+Objective-C/clm/ABGroup/removeProperties:
+C++/instm/IORegistryEntry/removeProperty
+JavaScript/instm/CSSStyleDeclaration/removeProperty
+Objective-C/instm/ABPeoplePickerView/removeProperty:
+Objective-C/clm/NSURLProtocol/removePropertyForKey:inRequest:
+Objective-C/instm/ABAddressBook/removeRecord:
+Objective-C/instm/NSImage/removeRepresentation:
+Objective-C/instm/ISyncManager/removeRequestMode:
+Objective-C/instm/NSConnection/removeRequestMode:
+C/func/-/RemoveResource
+Objective-C/instm/NSMatrix/removeRow:
+Objective-C/instm/NSRuleEditor/removeRowAtIndex:
+Objective-C/instm/NSRuleEditor/removeRowsAtIndexes:includeSubrows:
+JavaScript/instm/CSSStyleSheet/removeRule
+Objective-C/instm/NSConnection/removeRunLoop:
+Objective-C/clm/NSBrowser/removeSavedColumnsWithAutosaveName:
+Objective-C/instm/NSArrayController/removeSelectedObjects:
+Objective-C/instm/NSArrayController/removeSelectionIndexes:
+Objective-C/instm/NSTreeController/removeSelectionIndexPaths:
+Objective-C/instm/NSStatusBar/removeStatusItem:
+Objective-C/instm/ABGroup/removeSubgroup:
+Objective-C/instm/NSUserDefaults/removeSuiteNamed:
+Objective-C/instm/NSTableView/removeTableColumn:
+Objective-C/instm/NSMutableParagraphStyle/removeTabStop:
+Objective-C/instm/NSTabView/removeTabViewItem:
+C++/instm/IOSCSIParallelInterfaceController/RemoveTargetProperty
+Objective-C/instm/CalCalendarStore/removeTask:error:
+Objective-C/instm/NSLayoutManager/removeTemporaryAttribute:forCharacterRange:
+C++/instm/TestSuite/removeTest
+Objective-C/instm/NSLayoutManager/removeTextContainerAtIndex:
+C++/instm/IOAudioEngine/removeTimer
+C++/instm/IOAudioDevice/removeTimerEvent
+Objective-C/instm/NSView/removeToolTip:
+Objective-C/instm/QTMovie/removeTrack:
+Objective-C/instm/NSView/removeTrackingArea:
+Objective-C/instm/NSView/removeTrackingRect:
+C++/instm/IOFWAddressSpace/removeTrustedNode
+C++/instm/IOAudioControl/removeUserClient
+C++/clm/IOAudioControl/removeUserClientAction
+Objective-C/instm/ODRecord/removeValue:fromAttribute:error:
+Objective-C/instm/ABMutableMultiValue/removeValueAndLabelAtIndex:
+Objective-C/instm/NSObject/removeValueAtIndex:fromPropertyWithKey:
+Objective-C/instm/ABRecord/removeValueForProperty:
+Objective-C/instm/ODRecord/removeValuesForAttribute:error:
+JavaScript/instm/CSSVariablesDeclaration/removeVariable
+Objective-C/instm/NSUserDefaults/removeVolatileDomainForName:
+Objective-C/instm/WebScriptObject/removeWebScriptKey:
+Objective-C/instm/NSDocument/removeWindowController:
+Objective-C/instm/NSApplication/removeWindowsItem:
+C/func/-/removexattr
+C/func/-/remque
+C/func/-/remquo
+C/func/-/remquof
+C/func/-/remquol
+C/func/-/rename
+Objective-C/instm/NSPropertyDescription/renamingIdentifier
+Objective-C/instm/NSEntityDescription/renamingIdentifier
+Objective-C/instm/CARenderer/render
+Objective-C/instm/CIContext/render:toBitmap:rowBytes:bounds:format:colorSpace:
+Objective-C/instm/QCRenderer/renderAtTime:arguments:
+Objective-C/instm/QCView/renderAtTime:arguments:
+JavaScript/clconst/WebGLRenderingContext/RENDERBUFFER
+JavaScript/clconst/WebGLRenderingContext/RENDERBUFFER_ALPHA_SIZE
+JavaScript/clconst/WebGLRenderingContext/RENDERBUFFER_BINDING
+JavaScript/clconst/WebGLRenderingContext/RENDERBUFFER_BLUE_SIZE
+JavaScript/clconst/WebGLRenderingContext/RENDERBUFFER_DEPTH_SIZE
+JavaScript/clconst/WebGLRenderingContext/RENDERBUFFER_GREEN_SIZE
+JavaScript/clconst/WebGLRenderingContext/RENDERBUFFER_HEIGHT
+JavaScript/clconst/WebGLRenderingContext/RENDERBUFFER_INTERNAL_FORMAT
+JavaScript/clconst/WebGLRenderingContext/RENDERBUFFER_RED_SIZE
+JavaScript/clconst/WebGLRenderingContext/RENDERBUFFER_STENCIL_SIZE
+JavaScript/clconst/WebGLRenderingContext/RENDERBUFFER_WIDTH
+JavaScript/instm/WebGLRenderingContext/renderbufferStorage
+JavaScript/clconst/WebGLRenderingContext/RENDERER
+Objective-C/clm/CARenderer/rendererWithCGLContext:options:
+Objective-C/instm/CALayer/renderInContext:
+JavaScript/clconst/SVGRenderingIntent/RENDERING_INTENT_ABSOLUTE_COLORIMETRIC
+JavaScript/clconst/SVGRenderingIntent/RENDERING_INTENT_AUTO
+JavaScript/clconst/SVGRenderingIntent/RENDERING_INTENT_PERCEPTUAL
+JavaScript/clconst/SVGRenderingIntent/RENDERING_INTENT_RELATIVE_COLORIMETRIC
+JavaScript/clconst/SVGRenderingIntent/RENDERING_INTENT_SATURATION
+JavaScript/clconst/SVGRenderingIntent/RENDERING_INTENT_UNKNOWN
+Objective-C/instm/NSFont/renderingMode
+Objective-C/instm/NSObject/renderIntoOpenGLBuffer:onScreen:forTime:
+Objective-C/instm/NSObject/renderIntoPixelBuffer:forTime:
+Objective-C/instm/CAEmitterLayer/renderMode
+Objective-C/instp/CAEmitterLayer/renderMode
+Objective-C/intfm/FxGenerator/renderOutput:withInfo:
+Objective-C/intfm/FxFilter/renderOutput:withInput:withInfo:
+Objective-C/intfm/FxTransition/renderOutput:withInputA:withInputB:withTimeFraction:withInfo:
+Objective-C/intfm/QCPlugInOutputImageProvider/renderToBuffer:withBytesPerRow:pixelFormat:forBounds:
+Objective-C/intfm/QCPlugInOutputImageProvider/renderWithCGLContext:forBounds:
+Objective-C/instm/NSView/renewGState
+Objective-C/instm/NSMatrix/renewRows:columns:
+Objective-C/instm/NSDocumentController/reopenDocumentForURL:withContentsOfURL:error:
+JavaScript/clconst/WebGLRenderingContext/REPEAT
+Objective-C/intfp/CAMediaTiming/repeatCount
+Objective-C/intfm/CAMediaTiming/repeatCount
+Objective-C/intfm/CAMediaTiming/repeatDuration
+Objective-C/intfp/CAMediaTiming/repeatDuration
+JavaScript/instm/window/replace
+JavaScript/clconst/WebGLRenderingContext/REPLACE
+Objective-C/instm/QTMovieView/replace:
+Objective-C/instm/NSMutableData/replaceBytesInRange:withBytes:
+Objective-C/instm/NSMutableData/replaceBytesInRange:withBytes:length:
+Objective-C/instm/NSMutableAttributedString/replaceCharactersInRange:withAttributedString:
+Objective-C/instm/NSText/replaceCharactersInRange:withRTF:
+Objective-C/instm/NSText/replaceCharactersInRange:withRTFD:
+Objective-C/instm/NSMutableString/replaceCharactersInRange:withString:
+Objective-C/instm/NSText/replaceCharactersInRange:withString:
+Objective-C/instm/NSMutableAttributedString/replaceCharactersInRange:withString:
+JavaScript/instm/core/replaceChild
+Objective-C/instm/NSXMLDocument/replaceChildAtIndex:withNode:
+Objective-C/instm/NSXMLElement/replaceChildAtIndex:withNode:
+Objective-C/instm/NSXMLDTD/replaceChildAtIndex:withNode:
+JavaScript/instm/CharacterData/replaceData
+C/func/-/ReplaceDSequenceImageDescription
+C/func/-/ReplaceGestalt
+C/func/-/ReplaceGestaltValue
+Objective-C/instm/NSLayoutManager/replaceGlyphAtIndex:withGlyph:
+JavaScript/instm/SVGNumberList/replaceItem
+JavaScript/instm/SVGLengthList/replaceItem
+JavaScript/instm/SVGTransformList/replaceItem
+JavaScript/instm/SVGPointList/replaceItem
+JavaScript/instm/SVGPathSegList/replaceItem
+JavaScript/instm/SVGStringList/replaceItem
+Objective-C/instm/NSFileManager/replaceItemAtURL:withItemAtURL:backupItemName:options:resultingItemURL:error:
+Objective-C/instm/ABMutableMultiValue/replaceLabelAtIndex:withLabel:
+Objective-C/instm/NSTextContainer/replaceLayoutManager:
+Objective-C/clm/NSTextCheckingResult/replacementCheckingResultWithRange:replacementString:
+Objective-C/clm/NSXMLDocument/replacementClassForClass:
+Objective-C/instm/NSObject/replacementObjectForArchiver:
+Objective-C/instm/NSObject/replacementObjectForCoder:
+Objective-C/instm/NSObject/replacementObjectForKeyedArchiver:
+Objective-C/instm/NSObject/replacementObjectForPortCoder:
+Objective-C/instm/IMKInputController/replacementRange
+Objective-C/instp/NSTextCheckingResult/replacementString
+Objective-C/instm/NSTextCheckingResult/replacementString
+C++/instm/OSArray/replaceObject
+Objective-C/instm/NSArchiver/replaceObject:withObject:
+Objective-C/instm/NSUnarchiver/replaceObject:withObject:
+Objective-C/instm/NSNibConnector/replaceObject:withObject:
+Objective-C/instm/NSMutableArray/replaceObjectAtIndex:withObject:
+Objective-C/instm/NSMutableArray/replaceObjectsAtIndexes:withObjects:
+Objective-C/instm/NSMutableArray/replaceObjectsInRange:withObjectsFromArray:
+Objective-C/instm/NSMutableArray/replaceObjectsInRange:withObjectsFromArray:range:
+Objective-C/instm/NSMutableString/replaceOccurrencesOfString:withString:options:range:
+C++/instm/IONetworkController/replaceOrCopyPacket
+C++/instm/IONetworkController/replacePacket
+Objective-C/instm/NSPointerArray/replacePointerAtIndex:withPointer:
+Objective-C/instm/WebView/replaceSelectionWithArchive:
+Objective-C/instm/WebView/replaceSelectionWithMarkupString:
+Objective-C/instm/WebView/replaceSelectionWithNode:
+Objective-C/instm/QTMovie/replaceSelectionWithSelectionFromMovie:
+Objective-C/instm/WebView/replaceSelectionWithText:
+JavaScript/instm/window/replaceState
+Objective-C/instm/CALayer/replaceSublayer:with:
+Objective-C/instm/NSView/replaceSubview:with:
+Objective-C/instm/NSTextView/replaceTextContainer:
+Objective-C/instm/NSLayoutManager/replaceTextStorage:
+Objective-C/instm/NSObject/replaceValueAtIndex:inPropertyWithKey:withValue:
+Objective-C/instm/ABMutableMultiValue/replaceValueAtIndex:withValue:
+JavaScript/instm/Text/replaceWholeText
+Objective-C/instm/NSAppleEventManager/replyAppleEventForSuspensionID:
+Objective-C/instm/IOBluetoothDevicePair/replyPINCode:PINCode:
+Objective-C/instm/NSConnection/replyTimeout
+Objective-C/instm/NSApplication/replyToApplicationShouldTerminate:
+Objective-C/instm/NSApplication/replyToOpenOrPrint:
+Objective-C/instm/NSPreferencePane/replyToShouldUnselect:
+Objective-C/instm/IOBluetoothDevicePair/replyUserConfirmation:
+Objective-C/instm/NSDistantObjectRequest/replyWithException:
+C/tdef/-/REPORT_LUNS_LOGICAL_UNIT_ADDRESSING
+C/tdef/-/REPORT_LUNS_PERIPHERAL_DEVICE_ADDRESSING
+C++/instm/IOBlockStorageDevice/reportBlockSize
+JavaScript/instm/InjectedScriptHost/reportDidDispatchOnInjectedScript
+C++/instm/IOBlockStorageDevice/reportEjectability
+Objective-C/instm/NSApplication/reportException:
+C++/instm/IOSCSIParallelInterfaceController/ReportHBAConstraints
+C++/instm/IOSCSIParallelInterfaceController/ReportHBAHighestLogicalUnitNumber
+C++/instm/IOSCSIParallelInterfaceController/ReportHBASpecificDeviceDataSize
+C++/instm/IOSCSIParallelInterfaceController/ReportHBASpecificTaskDataSize
+C++/instm/IOSCSIParallelInterfaceController/ReportHighestSupportedDeviceID
+C++/instm/IOSCSIParallelInterfaceController/ReportInitiatorIdentifier
+C++/instm/IODVDBlockStorageDriver/reportKey
+C++/instm/IOBDMedia/reportKey
+C++/instm/IODVDMedia/reportKey
+C++/instm/IOBlockStorageDevice/reportLockability
+C++/instm/IOSCSIParallelInterfaceController/ReportMaximumTaskCount
+C++/instm/IOBlockStorageDevice/reportMaxValidBlock
+C++/instm/IOBlockStorageDevice/reportMediaState
+C++/clm/OSMetaClass/reportModInstances
+C++/instm/IOBlockStorageDevice/reportPollRequirements
+C++/instm/IOBlockStorageDevice/reportRemovability
+C++/instm/IOBlockStorageDevice/reportWriteProtection
+Objective-C/instm/WebDataSource/representation
+Objective-C/clm/NSBitmapImageRep/representationOfImageRepsInArray:usingType:properties:
+Objective-C/instm/NSImage/representations
+Objective-C/instm/NSBitmapImageRep/representationUsingType:properties:
+Objective-C/instm/NSWindow/representedFilename
+Objective-C/binding/NSWindow/representedFilename
+Objective-C/binding/NSPanel/representedFilename
+Objective-C/instm/IKImageBrowserCell/representedItem
+Objective-C/instm/NSTreeNode/representedObject
+Objective-C/instm/NSRulerMarker/representedObject
+Objective-C/instm/NSViewController/representedObject
+Objective-C/instm/NSCollectionViewItem/representedObject
+Objective-C/instm/NSMenuItem/representedObject
+Objective-C/instm/NSCell/representedObject
+Objective-C/instm/NSWindow/representedURL
+Objective-C/instm/NSURLProtocol/request
+Objective-C/instm/WebDataSource/request
+Objective-C/instm/NSURLDownload/request
+C/func/-/request_init
+C/func/-/request_set
+JavaScript/instm/InspectorFrontendHost/requestAttachWindow
+Objective-C/instm/IOBluetoothDevice/requestAuthentication
+Objective-C/instm/NSSpellChecker/requestCheckingOfString:range:types:options:inSpellDocumentWithTag:completionHandler:
+JavaScript/instm/InspectorFrontendHost/requestDetachWindow
+Objective-C/instm/DRBurn(PropertyConvenienceMethods)/requestedBurnSpeed
+Objective-C/instm/NSFetchRequestExpression/requestExpression
+C++/instm/IOUSBDevice/RequestExtraPower
+C/data/-/requestFlag
+Objective-C/clm/NSHTTPCookie/requestHeaderFieldsWithCookies:
+C++/instm/IOBlockStorageDevice/requestIdle
+C++/instm/IOBlockStorageDriver/requestIdle
+C/func/-/RequestInterrupt
+Objective-C/clm/NSURLProtocol/requestIsCacheEquivalent:toRequest:
+Objective-C/instm/ISyncManager/requestModes
+Objective-C/instm/NSConnection/requestModes
+JavaScript/instm/NotificationCenter/requestPermission
+C++/instm/IOService/requestPowerDomainState
+C++/instm/IOService/requestProbe
+C++/instm/IOUSBHubDevice/RequestProvidedPower
+Objective-C/instm/IOBluetoothL2CAPChannel/requestRemoteMTU:
+C++/instm/IOService/requestTerminate
+Objective-C/instm/NSConnection/requestTimeout
+Objective-C/instm/NSApplication/requestUserAttention:
+Objective-C/clm/NSURLRequest/requestWithURL:
+Objective-C/clm/NSURLRequest/requestWithURL:cachePolicy:timeoutInterval:
+Objective-C/instp/CWConfiguration/requireAdminForIBSSCreation
+Objective-C/instp/CWConfiguration/requireAdminForNetworkChange
+Objective-C/instp/CWConfiguration/requireAdminForPowerChange
+JavaScript/data/HTMLTextAreaElement/required
+JavaScript/data/HTMLInputElement/required
+JavaScript/data/SVGTests/requiredExtensions
+JavaScript/data/SVGTests/requiredFeatures
+Objective-C/instm/NSSavePanel/requiredFileType
+Objective-C/instm/IBPlugin/requiredFrameworks
+Objective-C/instm/NSRulerView/requiredThickness
+C/func/-/res_init
+C/func/-/res_mkquery
+C/func/-/res_query
+C/func/-/res_search
+C/func/-/res_send
+C/tdef/-/ResamplingFilter
+C/econst/-/resAttrErr
+C/tdef/-/ResAttributes
+C/econst/-/resChanged
+C/econst/-/resChangedBit
+C/func/-/ResError
+C/tdef/-/ResErrProcPtr
+C/tdef/-/ResErrUPP
+C++/data/IODMACommand/reserved
+C++/data/IOCommandPool/reserved
+C++/data/IOFireWireAVCSubUnit/reserved
+C++/data/IOExtendedLBA/reserved
+C++/data/IOEventSource/reserved
+C++/data/IOFireWireBusAux/reserved
+C++/data/IOATAController/reserved
+C++/data/IOBufferMemoryDescriptor/reserved
+C/data/-/reserved
+C++/data/IOATABusCommand/reserved
+C++/data/IOFireWireAVCTargetSpace/reserved
+C++/data/ATADeviceNub/reserved
+C++/data/IOConfigDirectory/reserved
+C++/data/IOAGPDevice/reserved
+C++/data/IOFireWireAVCAsynchronousCommand/reserved
+C++/data/IOCommandGate/reserved
+C++/data/IOATABusInfo/reserved
+C++/data/IOATADevConfig/reserved
+C++/data/IOATADevice/reserved
+C++/data/IOFilterInterruptEventSource/reserved
+C++/data/ATATimerEventSource/reserved
+C++/data/IOFireWireIRMAllocation/reserved
+C++/data/IOFWIsochChannel/reserved
+C++/data/IOMbufMemoryCursor/reserved
+C++/data/IOFireWirePCRSpace/reserved
+C++/data/IOFramebuffer/reserved
+C++/data/IOFireWireLocalNodeAux/reserved
+C++/data/IOFireWireControllerAux/reserved
+C++/data/IOFireWireNubAux/reserved
+C++/data/IOMemoryDescriptor/reserved
+C++/data/IOFWAsyncStreamListener/reserved
+C++/data/IOFireWireDeviceAux/reserved
+C++/data/IOFWBusCommand/reserved
+C++/data/IOFireWireNub/reserved
+C++/data/IOInterruptEventSource/reserved
+C++/data/IOFWAddressSpaceAux/reserved
+C++/data/IOLocalConfigDirectory/reserved
+C++/data/IOFireWireController/reserved
+C++/data/IOFWDelayCommand/reserved
+C++/data/IOFireWirePowerManager/reserved
+C++/data/IOFireWireDevice/reserved
+C++/data/IOFWPhysicalAddressSpaceAux/reserved
+C++/data/IOFireWireUnitAux/reserved
+C++/data/IOFireWireUnit/reserved
+C++/data/IOFWPseudoAddressSpace/reserved
+C++/data/IOPCIATA/reserved
+C++/data/IOTimerEventSource/reserved
+C++/data/IORemoteConfigDirectory/reserved
+C++/data/IORegistryEntry/reserved
+C++/data/IOService/reserved
+C++/data/IOUserClient/reserved
+C++/data/IOPCI2PCIBridge/reserved
+C++/data/IOPCIDevice/reserved
+C++/data/IOWorkLoop/reserved
+C++/data/MacIOATA/reserved
+C++/instm/IONetworkController/reserveDebuggerLock
+Objective-C/instm/NSPort/reservedSpaceLength
+Objective-C/instm/NSRulerView/reservedThicknessForAccessoryView
+Objective-C/instm/NSRulerView/reservedThicknessForMarkers
+Objective-C/instm/AMAction/reset
+Objective-C/instm/NSBrowserCell/reset
+Objective-C/instm/NSMigrationManager/reset
+C++/instm/IOCatalogue/reset
+C++/instm/IONetworkData/reset
+C++/instm/IOUSBPipe/Reset
+C++/instm/IORegistryIterator/reset
+C++/instm/OSIterator/reset
+C++/instm/OSCollectionIterator/reset
+Objective-C/instm/NSManagedObjectContext/reset
+JavaScript/instm/HTMLFormElement/reset
+JavaScript/instm/XSLTProcessor/reset
+C/func/-/reset_prog_mode
+C/func/-/reset_shell_mode
+Objective-C/instm/NSMutableData/resetBytesInRange:
+Objective-C/instm/NSSearchFieldCell/resetCancelButtonCell
+Objective-C/instm/NSCell/resetCursorRect:inView:
+Objective-C/instm/NSMatrix/resetCursorRects
+Objective-C/instm/NSWindow/resetCursorRects
+Objective-C/instm/NSView/resetCursorRects
+Objective-C/instm/QCCompositionPickerView/resetDefaultInputValues
+C++/instm/IOUSBDevice/ResetDevice
+JavaScript/instm/Channel/resetLastError
+C++/instm/IOUSBController/ResetPipe
+Objective-C/instm/NSSearchFieldCell/resetSearchButtonCell
+Objective-C/clm/NSUserDefaults/resetStandardUserDefaults
+C++/instm/IOAudioEngine/resetStatusBuffer
+Objective-C/clm/NSTimeZone/resetSystemTimeZone
+C/func/-/ResetTextToUnicodeInfo
+C/func/-/resetty
+C/func/-/ResetUnicodeToTextInfo
+C/func/-/ResetUnicodeToTextRunInfo
+JavaScript/instm/Document/resetWMLPageState
+C/tdef/-/ResFileAttributes
+C/tdef/-/ResFileRefNum
+C/econst/-/resFNotFound
+Objective-C/instm/NSOpenGLView/reshape
+C/tdef/-/ResID
+Objective-C/instm/NSTextView/resignFirstResponder
+Objective-C/instm/NSResponder/resignFirstResponder
+Objective-C/instm/NSWindow/resignKeyWindow
+Objective-C/instm/NSWindow/resignMainWindow
+C/func/-/resize_term
+JavaScript/instm/DOMWindow/resizeBy
+Objective-C/instm/NSTableHeaderView/resizedColumn
+Objective-C/clm/NSCursor/resizeDownCursor
+Objective-C/instm/NSWindow/resizeFlags
+Objective-C/instm/NSWindow/resizeIncrements
+Objective-C/clm/NSCursor/resizeLeftCursor
+Objective-C/clm/NSCursor/resizeLeftRightCursor
+Objective-C/clm/NSCursor/resizeRightCursor
+Objective-C/instm/CALayer/resizeSublayersWithOldSize:
+Objective-C/instm/NSView/resizeSubviewsWithOldSize:
+C/func/-/resizeterm
+JavaScript/instm/DOMWindow/resizeTo
+Objective-C/clm/NSCursor/resizeUpCursor
+Objective-C/clm/NSCursor/resizeUpDownCursor
+Objective-C/instm/CALayer/resizeWithOldSuperlayerSize:
+Objective-C/instm/NSView/resizeWithOldSuperviewSize:
+Objective-C/instm/NSTableColumn/resizingMask
+C/econst/-/resLocked
+C/econst/-/resLockedBit
+C/econst/-/resNotFound
+Objective-C/instm/NSNetService/resolve
+C/func/-/ResolveAlias
+C/func/-/ResolveAliasFile
+C/func/-/ResolveAliasFileWithMountFlags
+C/func/-/ResolveAliasFileWithMountFlagsNoUI
+C/func/-/ResolveAliasWithMountFlags
+Objective-C/clm/NSObject/resolveClassMethod:
+C/func/-/ResolveComponentAlias
+C/func/-/ResolveDefaultTextEncoding
+Objective-C/instm/NSCreateCommand/resolvedKeyDictionary
+C/tdef/-/resolveEntitySAXFunc
+Objective-C/clm/NSObject/resolveInstanceMethod:
+Objective-C/instm/NSXMLElement/resolveNamespaceForName:
+Objective-C/instm/NSXMLElement/resolvePrefixForNamespaceURI:
+C/func/-/resolver
+Objective-C/instm/NSOpenPanel/resolvesAliases
+Objective-C/instm/NSNetService/resolveWithTimeout:
+Objective-C/instm/XGActionMonitor/resource
+Objective-C/instm/NSURLHandle/resourceData
+Objective-C/instm/NSURL/resourceDataUsingCache:
+C/tdef/-/ResourceEndianFilterPtr
+C/econst/-/resourceInMemory
+Objective-C/instm/WebView/resourceLoadDelegate
+C++/clm/IOService/resourceMatching
+Objective-C/instm/NSBundle/resourcePath
+C/tdef/-/ResourceSpec
+Objective-C/instm/NSURL/resourceSpecifier
+Objective-C/instm/NSBundle/resourceURL
+Objective-C/instm/NSURL/resourceValuesForKeys:error:
+Objective-C/clm/NSURL/resourceValuesForKeys:fromBookmarkData:
+Objective-C/clm/NSProxy/respondsToSelector:
+Objective-C/intfm/NSObject/respondsToSelector:
+Objective-C/instm/NSCachedURLResponse/response
+Objective-C/instm/WebDataSource/response
+JavaScript/data/XMLHttpRequest/responseText
+JavaScript/data/XMLHttpRequest/responseXML
+C/econst/-/resPreload
+C/econst/-/resPreloadBit
+C/econst/-/resProtected
+C/econst/-/resProtectedBit
+C/econst/-/resPurgeable
+C/econst/-/resPurgeableBit
+C/econst/-/resSysHeap
+C/econst/-/resSysHeapBit
+C/econst/-/resSysRefBit
+C/func/-/restartterm
+Objective-C/instm/IOBluetoothOBEXSession/restartTransmission
+JavaScript/instm/CanvasRenderingContext2D/restore
+C/func/-/RestoreApplicationDockTileImage
+Objective-C/instm/NSWindow/restoreCachedImage
+Objective-C/clm/NSGraphicsContext/restoreGraphicsState
+Objective-C/instm/NSGraphicsContext/restoreGraphicsState
+Objective-C/instm/NSObject/restoreValuesAndReturnError:
+C/tdef/-/ResType
+Objective-C/instm/NSInvocationOperation/result
+JavaScript/data/IDBRequest/result
+JavaScript/data/IDBSuccessEvent/result
+JavaScript/data/FileReader/result
+JavaScript/data/SVGFilterPrimitiveStandardAttributes/result
+Objective-C/instm/NSMetadataQueryResultGroup/resultAtIndex:
+Objective-C/instm/NSMetadataQuery/resultAtIndex:
+Objective-C/instm/NSMetadataQueryResultGroup/resultCount
+Objective-C/instm/NSMetadataQuery/resultCount
+Objective-C/instm/NSMetadataQueryResultGroup/results
+Objective-C/instm/NSMetadataQuery/results
+Objective-C/instm/XGActionMonitor/results
+Objective-C/instm/ODQuery/resultsAllowingPartial:error:
+Objective-C/instp/NSTextCheckingResult/resultType
+Objective-C/instm/NSTextCheckingResult/resultType
+Objective-C/instm/NSFetchRequest/resultType
+JavaScript/data/XPathResult/resultType
+Objective-C/instm/NSSound/resume
+Objective-C/instm/NSTask/resume
+Objective-C/instm/NSURLDownload/resumeData
+JavaScript/instm/InspectorBackend/resumeDebugger
+Objective-C/instm/NSScriptCommand/resumeExecutionWithResult:
+Objective-C/instm/QTCaptureFileOutput/resumeRecording
+Objective-C/instm/QCView/resumeRendering
+C++/instm/IOSCSIParallelInterfaceController/ResumeServices
+Objective-C/instm/NSAppleEventManager/resumeWithSuspensionID:
+Objective-C/instm/NSAutoreleasePool/retain
+Objective-C/intfm/NSObject/retain
+C++/instm/OSMetaClass/retain
+C++/instm/OSMetaClassBase/retain
+C++/instm/OSObject/retain
+Objective-C/instm/NSInvocation/retainArguments
+Objective-C/intfm/NSObject/retainCount
+Objective-C/instm/NSManagedObjectContext/retainsRegisteredObjects
+C/econst/-/retryComponentRegistrationErr
+C++/instm/IOCommandPool/returnCommand
+C++/instm/IOUSBDevice/ReturnExtraPower
+Objective-C/instm/NSAppleEventDescriptor/returnID
+Objective-C/instm/NSFetchRequest/returnsDistinctResults
+Objective-C/instm/NSFetchRequest/returnsObjectsAsFaults
+Objective-C/instm/NSScriptCommandDescription/returnType
+JavaScript/data/Event/returnValue
+Objective-C/instm/NSBrowser/reusesColumns
+JavaScript/data/HTMLAnchorElement/rev
+JavaScript/data/HTMLLinkElement/rev
+C/func/-/RevealDataBrowserItem
+Objective-C/instm/NSSortDescriptor/reversedSortDescriptor
+Objective-C/instm/NSArray/reverseObjectEnumerator
+Objective-C/instm/NSValueTransformer/reverseTransformedValue:
+Objective-C/instm/NSUserDefaultsController/revert:
+Objective-C/instm/NSDocument/revertDocumentToSaved:
+C/func/-/RevertTextEncodingToScriptInfo
+Objective-C/instm/NSPersistentDocument/revertToContentsOfURL:ofType:error:
+Objective-C/instm/NSDocument/revertToContentsOfURL:ofType:error:
+Objective-C/instm/NSUserDefaultsController/revertToInitialValues:
+Objective-C/instm/NSDocument/revertToSavedFromFile:ofType:
+Objective-C/instm/NSDocument/revertToSavedFromURL:ofType:
+Objective-C/instm/NSDocumentController/reviewUnsavedDocumentsWithAlertTitle:cancellable:delegate:didReviewAllSelector:contextInfo:
+C/data/IOFireWireIsochChannelInterface/revision
+C/data/IOFireWireLocalUnitDirectoryInterface/revision
+C/data/IOFireWireReadQuadletCommandInterface/revision
+C/data/IOFireWireConfigDirectoryInterface/revision
+C/data/IOFireWireIsochPortInterface/revision
+C/data/IOFireWireDeviceInterface/revision
+C/data/IOFireWireLocalIsochPortInterface/revision
+C/data/IOFireWireNuDCLPoolInterface/revision
+C/data/IOFireWireRemoteIsochPortInterface/revision
+C/data/IOFireWireAsyncStreamCommandInterface/revision
+C/data/IOFireWirePHYCommandInterface/revision
+C/data/IOFWAsyncStreamListenerInterface/revision
+C/data/IOFireWireWriteCommandInterface/revision
+C/data/IOFireWireCommandInterface/revision
+C/data/IOFireWirePhysicalAddressSpaceInterface/revision
+C/data/IOFireWireWriteQuadletCommandInterface/revision
+C/data/IOFireWireLibPHYPacketListenerInterface/revision
+C/data/IOFireWirePseudoAddressSpaceInterface/revision
+C/data/IOFireWireCompareSwapCommandInterface/revision
+C/data/IOFireWireDCLCommandPoolInterface/revision
+C/data/IOFireWireLibVectorCommandInterface/revision
+C/data/IOFireWireReadCommandInterface/revision
+C/data/IOFireWireCompareSwapCommandInterface_v3/revision
+C/data/SCSITaskDeviceInterface/revision
+C/data/SCSITaskInterface/revision
+C/data/MMCDeviceInterface/revision
+C/func/-/revoke
+C/func/-/rewind
+C/func/-/rewinddir
+C/econst/-/rfNumErr
+JavaScript/clconst/WebGLRenderingContext/RGB
+JavaScript/clconst/WebGLRenderingContext/RGB565
+JavaScript/clconst/WebGLRenderingContext/RGB5_A1
+JavaScript/clconst/WebGLRenderingContext/RGBA
+JavaScript/clconst/WebGLRenderingContext/RGBA4
+C/tag/-/RGBColor
+JavaScript/data/DOMWindow/RGBColor
+JavaScript/data/SVGColor/rgbColor
+JavaScript/cl/-/RGBColor
+C/tdef/-/RgnHandle
+C/tdef/-/RgnPtr
+Objective-C/instm/NSAppleScript/richTextSource
+JavaScript/data/ClientRect/right
+JavaScript/data/Rect/right
+Objective-C/instm/NSExpression/rightExpression
+Objective-C/instm/NSComparisonPredicate/rightExpression
+Objective-C/instm/NSPredicateEditorRowTemplate/rightExpressionAttributeType
+Objective-C/instm/NSPredicateEditorRowTemplate/rightExpressions
+Objective-C/instm/NSPrintInfo/rightMargin
+Objective-C/instm/NSResponder/rightMouseDown:
+Objective-C/instm/NSView/rightMouseDown:
+Objective-C/instm/NSResponder/rightMouseDragged:
+Objective-C/instm/NSResponder/rightMouseUp:
+Objective-C/instp/PSEntry/rights
+Objective-C/instp/PSFeed/rights
+C/func/-/rindex
+C/func/-/rint
+C/func/-/rintf
+C/func/-/rintl
+C/func/-/rinttol
+C/func/-/ripemd
+C/func/-/RIPEMD160
+C/func/-/RIPEMD160_Final
+C/func/-/RIPEMD160_Init
+C/func/-/RIPEMD160_Update
+C/func/-/ripoffline
+C/func/-/rmdir
+C/econst/-/rmvResFailed
+Objective-C/instm/NSManagedObjectContext/rollback
+JavaScript/data/NodeIterator/root
+JavaScript/data/TreeWalker/root
+Objective-C/instm/NSXMLNode/rootDocument
+Objective-C/instm/NSXMLDocument/rootElement
+JavaScript/data/SVGDocument/rootElement
+Objective-C/intfm/NSBrowserDelegate/rootItemForBrowser:
+Objective-C/instm/NSConnection/rootObject
+Objective-C/instm/NSConnection/rootProxy
+Objective-C/clm/NSConnection/rootProxyForConnectionWithRegisteredName:host:
+Objective-C/clm/NSConnection/rootProxyForConnectionWithRegisteredName:host:usingNameServer:
+C/func/-/RootWindow
+C/func/-/RootWindowOfScreen
+C/func/-/Rotate
+JavaScript/instm/CanvasRenderingContext2D/rotate
+JavaScript/instm/SVGMatrix/rotate
+JavaScript/data/SVGTextPositioningElement/rotate
+JavaScript/instm/WebKitCSSMatrix/rotate
+JavaScript/instm/WebKitCSSMatrix/rotateAxisAngle
+Objective-C/instm/NSView/rotateByAngle:
+Objective-C/instm/NSAffineTransform/rotateByDegrees:
+Objective-C/instm/NSAffineTransform/rotateByRadians:
+JavaScript/instm/SVGMatrix/rotateFromVector
+Objective-C/instm/IKImageView/rotateImageLeft:
+Objective-C/instm/IKImageView/rotateImageRight:
+Objective-C/instm/IKCameraDeviceView/rotateLeft:
+C/func/-/RotateMatrix
+Objective-C/instm/IKCameraDeviceView/rotateRight:
+Objective-C/instm/NSResponder/rotateWithEvent:
+Objective-C/instm/PDFPage/rotation
+Objective-C/instm/PDFAnnotationTextWidget/rotation
+Objective-C/instm/NSEvent/rotation
+Objective-C/instm/IKImageView/rotationAngle
+Objective-C/instp/IKImageView/rotationAngle
+Objective-C/instp/CAKeyframeAnimation/rotationMode
+Objective-C/instm/CAKeyframeAnimation/rotationMode
+C/func/-/round
+C/func/-/roundf
+Objective-C/instm/NSNumberFormatter/roundingBehavior
+Objective-C/instm/NSNumberFormatter/roundingIncrement
+Objective-C/intfm/NSDecimalNumberBehaviors/roundingMode
+Objective-C/instm/NSNumberFormatter/roundingMode
+C/func/-/roundl
+C/func/-/roundtol
+C/tag/-/routines_command
+C/tag/-/routines_command_64
+Objective-C/instm/NSTableView/rowAtPoint:
+Objective-C/instm/FxBitmap/rowBytes
+Objective-C/instm/NSRuleEditor/rowClass
+Objective-C/instm/NSRuleEditor/rowForDisplayValue:
+Objective-C/instm/NSOutlineView/rowForItem:
+Objective-C/instm/NSBrowser/rowHeight
+Objective-C/instm/NSRuleEditor/rowHeight
+Objective-C/instm/NSTableView/rowHeight
+Objective-C/binding/NSTableView/rowHeight
+Objective-C/binding/NSOutlineView/rowHeight
+JavaScript/data/HTMLTableRowElement/rowIndex
+Objective-C/instm/IKImageBrowserView/rowIndexesInRect:
+Objective-C/binding/NSPredicateEditor/rows
+JavaScript/data/HTMLTableElement/rows
+JavaScript/data/HTMLTextAreaElement/rows
+JavaScript/data/HTMLFrameSetElement/rows
+JavaScript/data/HTMLTableSectionElement/rows
+JavaScript/data/SQLResultSet/rows
+JavaScript/data/SQLResultSet/rowsAffected
+Objective-C/instm/NSTableView/rowsInRect:
+Objective-C/instm/PDFView/rowSizeForPage:
+Objective-C/instm/NSTextTableBlock/rowSpan
+JavaScript/data/HTMLTableCellElement/rowSpan
+Objective-C/instm/NSPredicateEditor/rowTemplates
+Objective-C/instm/NSRuleEditor/rowTypeForRow:
+Objective-C/instm/NSRuleEditor/rowTypeKeyPath
+C/func/-/rpc
+C/func/-/rpc_createerr
+C/func/-/rresvport
+C/func/-/rresvport_af
+C/func/-/rsa
+C/func/-/RSA_blinding_off
+C/func/-/RSA_blinding_on
+C/func/-/RSA_check_key
+C/func/-/RSA_flags
+C/func/-/RSA_free
+C/func/-/RSA_generate_key
+C/func/-/RSA_get_default_method
+C/func/-/RSA_get_ex_data
+C/func/-/RSA_get_ex_new_index
+C/func/-/RSA_get_method
+C/func/-/RSA_new
+C/func/-/RSA_new_method
+C/func/-/RSA_null_method
+C/func/-/RSA_padding_add_none
+C/func/-/RSA_padding_add_PKCS1_OAEP
+C/func/-/RSA_padding_add_PKCS1_type_1
+C/func/-/RSA_padding_add_PKCS1_type_2
+C/func/-/RSA_padding_add_SSLv23
+C/func/-/RSA_padding_check_none
+C/func/-/RSA_padding_check_PKCS1_OAEP
+C/func/-/RSA_padding_check_PKCS1_type_1
+C/func/-/RSA_padding_check_PKCS1_type_2
+C/func/-/RSA_padding_check_SSLv23
+C/func/-/RSA_PKCS1_SSLeay
+C/func/-/RSA_print
+C/func/-/RSA_print_fp
+C/func/-/RSA_private_decrypt
+C/func/-/RSA_private_encrypt
+C/func/-/RSA_public_decrypt
+C/func/-/RSA_public_encrypt
+C/func/-/RSA_set_default_method
+C/func/-/RSA_set_ex_data
+C/func/-/RSA_set_method
+C/func/-/RSA_sign
+C/func/-/RSA_sign_ASN1_OCTET_STRING
+C/func/-/RSA_size
+C/func/-/RSA_verify
+C/func/-/RSA_verify_ASN1_OCTET_STRING
+C/tdef/-/RsrcChainLocationenum
+Objective-C/instp/CWInterface/rssi
+Objective-C/instp/CWNetwork/rssi
+Objective-C/instm/NSAttributedString/RTFDFileWrapperFromRange:documentAttributes:
+Objective-C/instm/NSText/RTFDFromRange:
+Objective-C/instm/NSAttributedString/RTFDFromRange:documentAttributes:
+Objective-C/instm/NSText/RTFFromRange:
+Objective-C/instm/NSAttributedString/RTFFromRange:documentAttributes:
+Objective-C/intfm/NSRuleEditorDelegate/ruleEditor:child:forCriterion:withRowType:
+Objective-C/intfm/NSRuleEditorDelegate/ruleEditor:displayValueForCriterion:inRow:
+Objective-C/intfm/NSRuleEditorDelegate/ruleEditor:numberOfChildrenForCriterion:withRowType:
+Objective-C/intfm/NSRuleEditorDelegate/ruleEditor:predicatePartsForCriterion:withDisplayValue:inRow:
+Objective-C/intfm/NSRuleEditorDelegate/ruleEditorRowsDidChange:
+Objective-C/instm/NSRulerMarker/ruler
+Objective-C/instm/NSLayoutManager/rulerAccessoryViewForTextView:paragraphStyle:ruler:enabled:
+Objective-C/instm/NSAttributedString/rulerAttributesInRange:
+Objective-C/instm/NSLayoutManager/rulerMarkersForTextView:paragraphStyle:ruler:
+Objective-C/instm/NSScrollView/rulersVisible
+Objective-C/instm/NSView/rulerView:didAddMarker:
+Objective-C/instm/NSTextView/rulerView:didAddMarker:
+Objective-C/instm/NSView/rulerView:didMoveMarker:
+Objective-C/instm/NSTextView/rulerView:didMoveMarker:
+Objective-C/instm/NSView/rulerView:didRemoveMarker:
+Objective-C/instm/NSTextView/rulerView:didRemoveMarker:
+Objective-C/instm/NSView/rulerView:handleMouseDown:
+Objective-C/instm/NSTextView/rulerView:handleMouseDown:
+Objective-C/instm/NSView/rulerView:shouldAddMarker:
+Objective-C/instm/NSTextView/rulerView:shouldAddMarker:
+Objective-C/instm/NSView/rulerView:shouldMoveMarker:
+Objective-C/instm/NSTextView/rulerView:shouldMoveMarker:
+Objective-C/instm/NSView/rulerView:shouldRemoveMarker:
+Objective-C/instm/NSTextView/rulerView:shouldRemoveMarker:
+Objective-C/instm/NSView/rulerView:willAddMarker:atLocation:
+Objective-C/instm/NSTextView/rulerView:willAddMarker:atLocation:
+Objective-C/instm/NSView/rulerView:willMoveMarker:toLocation:
+Objective-C/instm/NSTextView/rulerView:willMoveMarker:toLocation:
+Objective-C/instm/NSView/rulerView:willSetClientView:
+Objective-C/clm/NSScrollView/rulerViewClass
+JavaScript/data/CSSStyleSheet/rules
+JavaScript/data/HTMLTableElement/rules
+Objective-C/instm/NSRulerView/ruleThickness
+Objective-C/instm/NSSpellServer/run
+C++/instm/Test/run
+C++/instm/TestCase/run
+C++/instm/TestSuite/run
+Objective-C/instm/NSRunLoop/run
+Objective-C/instm/NSApplication/run
+Objective-C/instm/AMWorkflowController/run:
+C++/instm/IOCommandGate/runAction
+C++/instm/IOWorkLoop/runAction
+Objective-C/intfm/CAAction/runActionForKey:object:arguments:
+Objective-C/instm/AMAction/runAsynchronouslyWithInput:
+C++/instm/IOCommandGate/runCommand
+C++/instm/TestRun/runCount
+Objective-C/instm/NSToolbar/runCustomizationPalette:
+C/func/-/rune
+C++/data/IOAudioEngine/runEraseHead
+C++/instm/IOWorkLoop/runEventSources
+Objective-C/instm/NSConnection/runInNewThread
+Objective-C/instm/NSUndoManager/runLoopModes
+Objective-C/instm/NSAnimation/runLoopModesForAnimating
+Objective-C/instm/NSPageLayout/runModal
+Objective-C/instm/CBIdentityPicker/runModal
+Objective-C/instm/NSSavePanel/runModal
+Objective-C/instm/NSAlert/runModal
+Objective-C/instm/NSPrintPanel/runModal
+Objective-C/instm/IOBluetoothObjectPushUIController/runModal
+Objective-C/instm/IOBluetoothPairingController/runModal
+Objective-C/instm/IOBluetoothDeviceSelectorController/runModal
+Objective-C/instm/IOBluetoothServiceBrowserController/runModal
+Objective-C/instm/IKPictureTaker/runModal
+Objective-C/instm/SFCertificatePanel/runModalForCertificates:showGroup:
+Objective-C/instm/SFKeychainSavePanel/runModalForDirectory:file:
+Objective-C/instm/NSSavePanel/runModalForDirectory:file:
+Objective-C/instm/NSOpenPanel/runModalForDirectory:file:types:
+Objective-C/instm/SFChooseIdentityPanel/runModalForIdentities:message:
+Objective-C/instm/SFKeychainSettingsPanel/runModalForSettings:keychain:
+Objective-C/instm/SFCertificateTrustPanel/runModalForTrust:message:
+Objective-C/instm/NSOpenPanel/runModalForTypes:
+Objective-C/instm/NSApplication/runModalForWindow:
+Objective-C/instm/CBIdentityPicker/runModalForWindow:modalDelegate:didEndSelector:contextInfo:
+Objective-C/instm/NSApplication/runModalForWindow:relativeToWindow:
+Objective-C/instm/ABIdentityPicker/runModalIdentityPicker
+Objective-C/instm/NSDocumentController/runModalOpenPanel:forTypes:
+Objective-C/instm/NSDocument/runModalPageLayoutWithPrintInfo:
+Objective-C/instm/NSDocument/runModalPageLayoutWithPrintInfo:delegate:didRunSelector:contextInfo:
+Objective-C/instm/NSDocument/runModalPrintOperation:delegate:didRunSelector:contextInfo:
+Objective-C/instm/NSDocument/runModalSavePanelForSaveOperation:delegate:didSaveSelector:contextInfo:
+Objective-C/instm/NSApplication/runModalSession:
+Objective-C/instm/IKFilterBrowserPanel/runModalWithOptions:
+Objective-C/instm/NSPageLayout/runModalWithPrintInfo:
+Objective-C/instm/NSPrintPanel/runModalWithPrintInfo:
+Objective-C/instm/NSRunLoop/runMode:beforeDate:
+Objective-C/instm/NSWorkspace/runningApplications
+Objective-C/clm/NSRunningApplication/runningApplicationsWithBundleIdentifier:
+Objective-C/clm/NSRunningApplication/runningApplicationWithProcessIdentifier:
+Objective-C/instm/NSPrintOperation/runOperation
+Objective-C/instm/NSPrintOperation/runOperationModalForWindow:delegate:didRunSelector:contextInfo:
+Objective-C/instm/NSDocument/runPageLayout:
+Objective-C/instm/NSApplication/runPageLayout:
+Objective-C/instm/IOBluetoothObjectPushUIController/runPanel
+Objective-C/instm/IOBluetoothDeviceSelectorController/runPanelWithAttributes:
+Objective-C/instm/IOBluetoothPairingController/runPanelWithAttributes:
+C++/instm/IORegistryEntry/runPropertyAction
+Objective-C/instm/DRSetupPanel/runSetupPanel
+Objective-C/instm/IKSlideshow/runSlideshowWithDataSource:inMode:options:
+Objective-C/instm/NSWindow/runToolbarCustomizationPalette:
+Objective-C/instm/NSRunLoop/runUntilDate:
+Objective-C/instm/AMAction/runWithInput:fromAction:error:
+Objective-C/clm/AMWorkflow/runWorkflowAtURL:withInput:error:
+C/func/-/ruserok
+JavaScript/data/SVGEllipseElement/rx
+JavaScript/data/SVGRectElement/rx
+JavaScript/data/SVGEllipseElement/ry
+JavaScript/data/SVGRectElement/ry
+C/tdef/-/sAddAttribute
+C/tdef/-/sAddAttributeValue
+C++/clm/OSMetaClassBase/safeMetaCast
+C/econst/-/sameFileErr
+C/func/-/SameProcess
+JavaScript/clconst/WebGLRenderingContext/SAMPLE_ALPHA_TO_COVERAGE
+JavaScript/clconst/WebGLRenderingContext/SAMPLE_BUFFERS
+JavaScript/clconst/WebGLRenderingContext/SAMPLE_COVERAGE
+JavaScript/clconst/WebGLRenderingContext/SAMPLE_COVERAGE_INVERT
+JavaScript/clconst/WebGLRenderingContext/SAMPLE_COVERAGE_VALUE
+Objective-C/instm/QTSampleBuffer/sampleBufferAttributes
+JavaScript/instm/WebGLRenderingContext/sampleCoverage
+C/tdef/-/SampleDescriptionHandle
+C/tdef/-/SampleDescriptionPtr
+C/func/-/SampleNumToMediaDecodeTime
+C/func/-/SampleNumToMediaDisplayTime
+C/func/-/SampleNumToMediaTime
+JavaScript/clconst/WebGLRenderingContext/SAMPLER_2D
+JavaScript/clconst/WebGLRenderingContext/SAMPLER_CUBE
+C++/data/IOAudioEngine/sampleRate
+C/tdef/-/SampleReference64Ptr
+C/tag/-/SampleReference64Record
+C/tdef/-/SampleReferencePtr
+C/tag/-/SampleReferenceRecord
+Objective-C/clm/CISampler/samplerWithImage:
+Objective-C/clm/CISampler/samplerWithImage:keysAndValues:
+Objective-C/clm/CISampler/samplerWithImage:options:
+JavaScript/clconst/WebGLRenderingContext/SAMPLES
+Objective-C/instm/NSBitmapImageRep/samplesPerPixel
+Objective-C/instm/QTSampleBuffer/sampleUseCount
+JavaScript/data/HTMLIFrameElement/sandbox
+C/func/-/sandbox_free_error
+C/func/-/sandbox_init
+Objective-C/instm/WebPreferences/sansSerifFontFamily
+C/func/-/sasl
+C/func/-/sasl_authorize_t
+C/func/-/sasl_auxprop
+C/func/-/sasl_auxprop_getctx
+C/func/-/sasl_auxprop_request
+C/func/-/sasl_callbacks
+C/func/-/sasl_canon_user_t
+C/func/-/sasl_chalprompt_t
+C/func/-/sasl_checkapop
+C/func/-/sasl_checkpass
+C/func/-/sasl_client_init
+C/func/-/sasl_client_new
+C/func/-/sasl_client_start
+C/func/-/sasl_client_step
+C/func/-/sasl_decode
+C/func/-/sasl_dispose
+C/func/-/sasl_done
+C/func/-/sasl_encode
+C/func/-/sasl_encodev
+C/func/-/sasl_errdetail
+C/func/-/sasl_errors
+C/func/-/sasl_errsring
+C/func/-/sasl_errstring
+C/func/-/sasl_getopt_t
+C/func/-/sasl_getpath_t
+C/func/-/sasl_getprop
+C/func/-/sasl_getrealm_t
+C/func/-/sasl_getsecret_t
+C/func/-/sasl_getsimple_t
+C/func/-/sasl_global_listmech
+C/func/-/sasl_idle
+C/func/-/sasl_listmech
+C/func/-/sasl_log_t
+C/func/-/sasl_server_init
+C/func/-/sasl_server_new
+C/func/-/sasl_server_start
+C/func/-/sasl_server_step
+C/func/-/sasl_server_userdb_checkpass_t
+C/func/-/sasl_server_userdb_setpass_t
+C/func/-/sasl_setpass
+C/func/-/sasl_setprop
+C/func/-/sasl_user_exists
+C/func/-/sasl_verifyfile_t
+C/func/-/SASUM
+Objective-C/instm/NSColor/saturationComponent
+Objective-C/instm/ABAddressBook/save
+JavaScript/instm/CanvasRenderingContext2D/save
+Objective-C/instm/NSUserDefaultsController/save:
+Objective-C/instm/NSAtomicStore/save:
+Objective-C/instm/NSManagedObjectContext/save:
+Objective-C/instm/NSDocumentController/saveAllDocuments:
+Objective-C/instm/ABAddressBook/saveAndReturnError:
+Objective-C/instm/CalCalendarStore/saveCalendar:error:
+Objective-C/instm/NSDocument/saveDocument:
+Objective-C/instm/NSDocument/saveDocumentAs:
+Objective-C/instm/NSDocument/saveDocumentTo:
+Objective-C/instm/NSDocument/saveDocumentWithDelegate:didSaveSelector:contextInfo:
+Objective-C/instm/CalCalendarStore/saveEvent:span:error:
+Objective-C/instm/NSWindow/saveFrameUsingName:
+JavaScript/instm/InspectorBackend/saveFrontendSettings
+Objective-C/instm/NSGraphicsContext/saveGraphicsState
+Objective-C/clm/NSGraphicsContext/saveGraphicsState
+Objective-C/instm/NSQuitCommand/saveOptions
+Objective-C/instm/NSCloseCommand/saveOptions
+Objective-C/instm/NSObject/saveOptions:shouldShowUTType:
+Objective-C/clm/NSSavePanel/savePanel
+Objective-C/instm/CalCalendarStore/saveTask:error:
+Objective-C/instm/NSDocument/saveToFile:saveOperation:delegate:didSaveSelector:contextInfo:
+Objective-C/instm/WebHistory/saveToURL:error:
+Objective-C/instm/NSDocument/saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:
+Objective-C/instm/NSDocument/saveToURL:ofType:forSaveOperation:error:
+Objective-C/instm/SFCertificateView/saveTrustSettings
+C/func/-/savetty
+Objective-C/instm/NSObject/saveValuesAndReturnError:
+C/macro/-/SAXON_NAMESPACE
+C/func/-/SAXPY
+Objective-C/cl/-/SBApplication
+Objective-C/intf/-/SBApplicationDelegate
+C/tdef/-/SBCModePageCaching
+C/tdef/-/SBCModePageFlexibleDisk
+C/tdef/-/SBCModePageFormatDevice
+C/tdef/-/SBCModePageRigidDiskGeometry
+Objective-C/cl/-/SBElementArray
+Objective-C/cl/-/SBObject
+C++/tdef/IOFireWireSerialBusProtocolTransport/SBP2ClientOrbData
+C++/instm/IOFireWireSerialBusProtocolTransport/SBP2LoginAccessor
+C/func/-/sbrk
+C/func/-/scalb
+C/func/-/scalbn
+C/func/-/scalbnf
+C/func/-/scalbnl
+Objective-C/instm/CAConstraint/scale
+Objective-C/instm/CAEmitterCell/scale
+Objective-C/instp/CAEmitterLayer/scale
+Objective-C/instp/CAEmitterCell/scale
+Objective-C/instm/CAEmitterLayer/scale
+Objective-C/instp/CAConstraint/scale
+Objective-C/intfm/NSDecimalNumberBehaviors/scale
+JavaScript/instm/CanvasRenderingContext2D/scale
+JavaScript/instm/SVGMatrix/scale
+JavaScript/data/SVGFEDisplacementMapElement/scale
+JavaScript/instm/WebKitCSSMatrix/scale
+C/func/-/scale_form
+C/func/-/scale_menu
+Objective-C/instm/NSAffineTransform/scaleBy:
+Objective-C/instm/PDFView/scaleFactor
+C/func/-/ScaleMatrix
+C/func/-/ScaleMovieSegment
+JavaScript/instm/SVGMatrix/scaleNonUniform
+Objective-C/instm/CAEmitterCell/scaleRange
+Objective-C/instp/CAEmitterCell/scaleRange
+Objective-C/instm/QTTrack/scaleSegment:newDuration:
+Objective-C/instm/QTMovie/scaleSegment:newDuration:
+Objective-C/instp/CAEmitterCell/scaleSpeed
+Objective-C/instm/CAEmitterCell/scaleSpeed
+Objective-C/instm/NSImage/scalesWhenResized
+C/func/-/ScaleTrackSegment
+Objective-C/instm/NSView/scaleUnitSquareToSize:
+Objective-C/instm/NSAffineTransform/scaleXBy:yBy:
+Objective-C/instm/NSPrintInfo/scalingFactor
+Objective-C/instm/NSScanner/scanCharactersFromSet:intoString:
+Objective-C/instp/IKScannerDeviceView/scanControlLabel
+Objective-C/instm/IKScannerDeviceView/scanControlLabel
+Objective-C/instm/NSScanner/scanDecimal:
+C/func/-/scandir
+C/func/-/scandir_b
+Objective-C/instm/NSScanner/scanDouble:
+C/func/-/scanf
+C/func/-/scanf_l
+Objective-C/instm/NSScanner/scanFloat:
+Objective-C/instm/CWInterface/scanForNetworksWithParameters:error:
+Objective-C/instm/NSScanner/scanHexDouble:
+Objective-C/instm/NSScanner/scanHexFloat:
+Objective-C/instm/NSScanner/scanHexInt:
+Objective-C/instm/NSScanner/scanHexLongLong:
+Objective-C/instm/NSScanner/scanInt:
+Objective-C/instm/NSScanner/scanInteger:
+Objective-C/instm/NSScanner/scanLocation
+Objective-C/instm/NSScanner/scanLongLong:
+Objective-C/instp/IKScannerDeviceView/scannerDevice
+Objective-C/instm/IKScannerDeviceView/scannerDevice
+Objective-C/intfm/IKScannerDeviceViewDelegate/scannerDeviceView:didEncounterError:
+Objective-C/intfm/IKScannerDeviceViewDelegate/scannerDeviceView:didScanToURL:fileData:error:
+Objective-C/clm/NSScanner/scannerWithString:
+Objective-C/instm/NSScanner/scanString:intoString:
+Objective-C/instm/NSScanner/scanUpToCharactersFromSet:intoString:
+Objective-C/instm/NSScanner/scanUpToString:intoString:
+C/func/-/scanw
+C/func/-/SCAsyncIdle
+C/tag/-/scattered_relocation_info
+C/func/-/SCAudioInvokeLegacyCodecOptionsDialog
+C/econst/-/scAvailableCompressionListType
+C/func/-/SCBondInterfaceCopyAll
+C/func/-/SCBondInterfaceCopyAvailableMemberInterfaces
+C/func/-/SCBondInterfaceCopyStatus
+C/func/-/SCBondInterfaceCreate
+C/func/-/SCBondInterfaceGetMemberInterfaces
+C/func/-/SCBondInterfaceGetOptions
+C/tdef/-/SCBondInterfaceRef
+C/func/-/SCBondInterfaceRemove
+C/func/-/SCBondInterfaceSetLocalizedDisplayName
+C/func/-/SCBondInterfaceSetMemberInterfaces
+C/func/-/SCBondInterfaceSetOptions
+C/func/-/SCBondStatusGetInterfaceStatus
+C/func/-/SCBondStatusGetMemberInterfaces
+C/func/-/SCBondStatusGetTypeID
+C/tdef/-/SCBondStatusRef
+C/econst/-/scCodecManufacturerType
+C/econst/-/scCodecSettingsType
+C/func/-/SCCompressImage
+C/func/-/SCCompressPicture
+C/func/-/SCCompressPictureFile
+C/func/-/SCCompressSequenceBegin
+C/func/-/SCCompressSequenceEnd
+C/func/-/SCCompressSequenceFrame
+C/func/-/SCCompressSequenceFrameAsync
+C/func/-/SCCopyCompressionSessionOptions
+C/func/-/SCCopyLastError
+C/econst/-/scDataRateSettingsType
+C/func/-/SCDefaultPictFileSettings
+C/func/-/SCDefaultPictHandleSettings
+C/func/-/SCDefaultPixMapSettings
+C/func/-/SCDynamicStoreAddTemporaryValue
+C/func/-/SCDynamicStoreAddValue
+C/tag/-/SCDynamicStoreCallBack
+C/tdef/-/SCDynamicStoreContext
+C/func/-/SCDynamicStoreCopyComputerName
+C/func/-/SCDynamicStoreCopyConsoleUser
+C/func/-/SCDynamicStoreCopyDHCPInfo
+C/func/-/SCDynamicStoreCopyKeyList
+C/func/-/SCDynamicStoreCopyLocalHostName
+C/func/-/SCDynamicStoreCopyLocation
+C/func/-/SCDynamicStoreCopyMultiple
+C/func/-/SCDynamicStoreCopyNotifiedKeys
+C/func/-/SCDynamicStoreCopyProxies
+C/func/-/SCDynamicStoreCopyValue
+C/func/-/SCDynamicStoreCreate
+C/func/-/SCDynamicStoreCreateRunLoopSource
+C/func/-/SCDynamicStoreCreateWithOptions
+C/func/-/SCDynamicStoreGetTypeID
+C/func/-/SCDynamicStoreKeyCreate
+C/func/-/SCDynamicStoreKeyCreateComputerName
+C/func/-/SCDynamicStoreKeyCreateConsoleUser
+C/func/-/SCDynamicStoreKeyCreateHostNames
+C/func/-/SCDynamicStoreKeyCreateLocation
+C/func/-/SCDynamicStoreKeyCreateNetworkGlobalEntity
+C/func/-/SCDynamicStoreKeyCreateNetworkInterface
+C/func/-/SCDynamicStoreKeyCreateNetworkInterfaceEntity
+C/func/-/SCDynamicStoreKeyCreateNetworkServiceEntity
+C/func/-/SCDynamicStoreKeyCreateProxies
+C/func/-/SCDynamicStoreNotifyValue
+C/tdef/-/SCDynamicStoreRef
+C/func/-/SCDynamicStoreRemoveValue
+C/func/-/SCDynamicStoreSetDispatchQueue
+C/func/-/SCDynamicStoreSetMultiple
+C/func/-/SCDynamicStoreSetNotificationKeys
+C/func/-/SCDynamicStoreSetValue
+C/func/-/SCError
+C/func/-/SCErrorString
+C/econst/-/scForceKeyValueType
+C/func/-/SCGetBestDeviceRect
+C/func/-/SCGetCompressFlags
+C/econst/-/scGetCompression
+C/func/-/SCGetCompressionExtended
+C/func/-/SCGetInfo
+C/func/-/SCGetSettingsAsAtomContainer
+C/func/-/SCGetSettingsAsText
+C/tag/-/ScheduledAudioFileRegion
+Objective-C/clm/NSTimer/scheduledTimerWithTimeInterval:invocation:repeats:
+Objective-C/clm/NSTimer/scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:
+Objective-C/instm/NSNetService/scheduleInRunLoop:forMode:
+Objective-C/instm/NSStream/scheduleInRunLoop:forMode:
+Objective-C/instm/NSNetServiceBrowser/scheduleInRunLoop:forMode:
+Objective-C/instm/ODQuery/scheduleInRunLoop:forMode:
+Objective-C/instm/NSURLConnection/scheduleInRunLoop:forMode:
+Objective-C/instm/NSPort/scheduleInRunLoop:forMode:
+Objective-C/instm/NSMachPort/scheduleInRunLoop:forMode:
+C++/instm/IOGatedOutputQueue/scheduleServiceThread
+C++/instm/IOOutputQueue/scheduleServiceThread
+Objective-C/instm/NSObject/schemaBundleURLs
+Objective-C/instm/NSURL/scheme
+JavaScript/data/HTMLMetaElement/scheme
+JavaScript/instm/WebGLRenderingContext/scissor
+JavaScript/clconst/WebGLRenderingContext/SCISSOR_BOX
+JavaScript/clconst/WebGLRenderingContext/SCISSOR_TEST
+C/tdef/-/sCloseAttributeList
+C/tdef/-/sCloseAttributeValueList
+C/tdef/-/sCloseDirNode
+C/tdef/-/sCloseRecord
+C/tdef/-/SCModalFilterProc
+C/tdef/-/SCModalFilterUPP
+C/tdef/-/SCModalHookProc
+C/tdef/-/SCModalHookUPP
+C/func/-/SCNetworkCheckReachabilityByAddress
+C/func/-/SCNetworkCheckReachabilityByName
+C/tag/-/SCNetworkConnectionCallBack
+C/tdef/-/SCNetworkConnectionContext
+C/func/-/SCNetworkConnectionCopyExtendedStatus
+C/func/-/SCNetworkConnectionCopyServiceID
+C/func/-/SCNetworkConnectionCopyStatistics
+C/func/-/SCNetworkConnectionCopyUserOptions
+C/func/-/SCNetworkConnectionCopyUserPreferences
+C/func/-/SCNetworkConnectionCreateWithServiceID
+C/tdef/-/SCNetworkConnectionFlags
+C/func/-/SCNetworkConnectionGetStatus
+C/func/-/SCNetworkConnectionGetTypeID
+C/tdef/-/SCNetworkConnectionPPPStatus
+C/tdef/-/SCNetworkConnectionRef
+C/func/-/SCNetworkConnectionScheduleWithRunLoop
+C/func/-/SCNetworkConnectionSetDispatchQueue
+C/func/-/SCNetworkConnectionStart
+C/tdef/-/SCNetworkConnectionStatus
+C/func/-/SCNetworkConnectionStop
+C/func/-/SCNetworkConnectionUnscheduleFromRunLoop
+C/func/-/SCNetworkInterfaceCopyAll
+C/func/-/SCNetworkInterfaceCopyMediaOptions
+C/func/-/SCNetworkInterfaceCopyMediaSubTypeOptions
+C/func/-/SCNetworkInterfaceCopyMediaSubTypes
+C/func/-/SCNetworkInterfaceCopyMTU
+C/func/-/SCNetworkInterfaceCreateWithInterface
+C/func/-/SCNetworkInterfaceForceConfigurationRefresh
+C/func/-/SCNetworkInterfaceGetBSDName
+C/func/-/SCNetworkInterfaceGetConfiguration
+C/func/-/SCNetworkInterfaceGetExtendedConfiguration
+C/func/-/SCNetworkInterfaceGetHardwareAddressString
+C/func/-/SCNetworkInterfaceGetInterface
+C/func/-/SCNetworkInterfaceGetInterfaceType
+C/func/-/SCNetworkInterfaceGetLocalizedDisplayName
+C/func/-/SCNetworkInterfaceGetSupportedInterfaceTypes
+C/func/-/SCNetworkInterfaceGetSupportedProtocolTypes
+C/func/-/SCNetworkInterfaceGetTypeID
+C/tdef/-/SCNetworkInterfaceRef
+C/func/-/SCNetworkInterfaceRefreshConfiguration
+C/func/-/SCNetworkInterfaceSetConfiguration
+C/func/-/SCNetworkInterfaceSetExtendedConfiguration
+C/func/-/SCNetworkInterfaceSetMediaOptions
+C/func/-/SCNetworkInterfaceSetMTU
+C/func/-/SCNetworkProtocolGetConfiguration
+C/func/-/SCNetworkProtocolGetEnabled
+C/func/-/SCNetworkProtocolGetProtocolType
+C/func/-/SCNetworkProtocolGetTypeID
+C/tdef/-/SCNetworkProtocolRef
+C/func/-/SCNetworkProtocolSetConfiguration
+C/func/-/SCNetworkProtocolSetEnabled
+C/tdef/-/SCNetworkReachabilityContext
+C/func/-/SCNetworkReachabilityCreateWithAddress
+C/func/-/SCNetworkReachabilityCreateWithAddressPair
+C/func/-/SCNetworkReachabilityCreateWithName
+C/tdef/-/SCNetworkReachabilityFlags
+C/func/-/SCNetworkReachabilityGetFlags
+C/func/-/SCNetworkReachabilityGetTypeID
+C/tdef/-/SCNetworkReachabilityRef
+C/func/-/SCNetworkReachabilityScheduleWithRunLoop
+C/func/-/SCNetworkReachabilitySetCallback
+C/func/-/SCNetworkReachabilitySetDispatchQueue
+C/func/-/SCNetworkReachabilityUnscheduleFromRunLoop
+C/func/-/SCNetworkServiceAddProtocolType
+C/func/-/SCNetworkServiceCopy
+C/func/-/SCNetworkServiceCopyAll
+C/func/-/SCNetworkServiceCopyProtocol
+C/func/-/SCNetworkServiceCopyProtocols
+C/func/-/SCNetworkServiceCreate
+C/func/-/SCNetworkServiceEstablishDefaultConfiguration
+C/func/-/SCNetworkServiceGetEnabled
+C/func/-/SCNetworkServiceGetInterface
+C/func/-/SCNetworkServiceGetName
+C/func/-/SCNetworkServiceGetServiceID
+C/func/-/SCNetworkServiceGetTypeID
+C/tdef/-/SCNetworkServiceRef
+C/func/-/SCNetworkServiceRemove
+C/func/-/SCNetworkServiceRemoveProtocolType
+C/func/-/SCNetworkServiceSetEnabled
+C/func/-/SCNetworkServiceSetName
+C/func/-/SCNetworkSetAddService
+C/func/-/SCNetworkSetContainsInterface
+C/func/-/SCNetworkSetCopy
+C/func/-/SCNetworkSetCopyAll
+C/func/-/SCNetworkSetCopyCurrent
+C/func/-/SCNetworkSetCopyServices
+C/func/-/SCNetworkSetCreate
+C/func/-/SCNetworkSetGetName
+C/func/-/SCNetworkSetGetServiceOrder
+C/func/-/SCNetworkSetGetSetID
+C/func/-/SCNetworkSetGetTypeID
+C/tdef/-/SCNetworkSetRef
+C/func/-/SCNetworkSetRemove
+C/func/-/SCNetworkSetRemoveService
+C/func/-/SCNetworkSetSetCurrent
+C/func/-/SCNetworkSetSetName
+C/func/-/SCNetworkSetSetServiceOrder
+C/func/-/SCNewGWorld
+JavaScript/data/HTMLTableCellElement/scope
+JavaScript/data/JavaScriptCallFrame/scopeChain
+JavaScript/instm/JavaScriptCallFrame/scopeType
+C/func/-/SCOPY
+C/tag/-/SCParams
+C/func/-/SCPositionDialog
+C/func/-/SCPositionRect
+C/func/-/SCPreferencesAddValue
+C/func/-/SCPreferencesApplyChanges
+C/tag/-/SCPreferencesCallBack
+C/func/-/SCPreferencesCommitChanges
+C/tdef/-/SCPreferencesContext
+C/func/-/SCPreferencesCopyKeyList
+C/func/-/SCPreferencesCreate
+C/func/-/SCPreferencesCreateWithAuthorization
+C/func/-/SCPreferencesGetSignature
+C/func/-/SCPreferencesGetTypeID
+C/func/-/SCPreferencesGetValue
+C/func/-/SCPreferencesLock
+C/tdef/-/SCPreferencesNotification
+C/func/-/SCPreferencesPathCreateUniqueChild
+C/func/-/SCPreferencesPathGetLink
+C/func/-/SCPreferencesPathGetValue
+C/func/-/SCPreferencesPathRemoveValue
+C/func/-/SCPreferencesPathSetLink
+C/func/-/SCPreferencesPathSetValue
+C/tdef/-/SCPreferencesRef
+C/func/-/SCPreferencesRemoveValue
+C/func/-/SCPreferencesScheduleWithRunLoop
+C/func/-/SCPreferencesSetCallback
+C/func/-/SCPreferencesSetComputerName
+C/func/-/SCPreferencesSetDispatchQueue
+C/func/-/SCPreferencesSetLocalHostName
+C/func/-/SCPreferencesSetValue
+C/func/-/SCPreferencesSynchronize
+C/func/-/SCPreferencesUnlock
+C/func/-/SCPreferencesUnscheduleFromRunLoop
+C/func/-/scr_dump
+C/func/-/scr_init
+C/func/-/scr_restore
+C/func/-/scr_set
+C/tdef/-/sCreateRecord
+Objective-C/instm/NSWindow/screen
+JavaScript/data/DOMWindow/screen
+JavaScript/cl/-/Screen
+C/func/-/ScreenCount
+Objective-C/instm/NSFont/screenFont
+Objective-C/instm/NSFont/screenFontWithRenderingMode:
+JavaScript/data/DOMWindow/screenLeft
+Objective-C/instm/IMService/screenNamesForPerson:
+C/func/-/ScreenNumberOfCCC
+C/func/-/ScreenOfDisplay
+JavaScript/data/SVGSVGElement/screenPixelToMillimeterX
+JavaScript/data/SVGSVGElement/screenPixelToMillimeterY
+Objective-C/clm/NSScreen/screens
+Objective-C/cl/-/ScreenSaverDefaults
+Objective-C/cl/-/ScreenSaverView
+JavaScript/data/DOMWindow/screenTop
+C/func/-/ScreenWhitePointOfCCC
+JavaScript/data/DOMWindow/screenX
+JavaScript/data/MouseEvent/screenX
+JavaScript/data/Touch/screenX
+JavaScript/data/WheelEvent/screenX
+JavaScript/data/DOMWindow/screenY
+JavaScript/data/MouseEvent/screenY
+JavaScript/data/Touch/screenY
+JavaScript/data/WheelEvent/screenY
+C/func/-/SCRequestImageSettings
+C/func/-/SCRequestSequenceSettings
+Objective-C/instm/AMAppleScriptAction/script
+C/tdef/-/ScriptCode
+C/tdef/-/ScriptCodeRun
+Objective-C/instm/NSScriptCommand/scriptErrorExpectedTypeDescriptor
+Objective-C/instm/NSScriptCommand/scriptErrorNumber
+Objective-C/instm/NSScriptCommand/scriptErrorOffendingObjectDescriptor
+Objective-C/instm/NSScriptCommand/scriptErrorString
+Objective-C/instm/NSObject/scriptingBeginsWith:
+Objective-C/instm/NSObject/scriptingContains:
+Objective-C/instm/NSObject/scriptingEndsWith:
+Objective-C/instm/NSObject/scriptingIsEqualTo:
+Objective-C/instm/NSObject/scriptingIsGreaterThan:
+Objective-C/instm/NSObject/scriptingIsGreaterThanOrEqualTo:
+Objective-C/instm/NSObject/scriptingIsLessThan:
+Objective-C/instm/NSObject/scriptingIsLessThanOrEqualTo:
+Objective-C/instm/NSObject/scriptingProperties
+Objective-C/instm/NSObject/scriptingValueForSpecifier:
+JavaScript/cl/-/ScriptProfile
+JavaScript/cl/-/ScriptProfileNode
+JavaScript/data/HTMLDocument/scripts
+JavaScript/data/TestObj/scriptStringAttr
+C/func/-/scrl
+C/func/-/scroll
+JavaScript/instm/DOMWindow/scroll
+Objective-C/clm/NSColor/scrollBarColor
+JavaScript/data/DOMWindow/scrollbars
+JavaScript/instm/DOMWindow/scrollBy
+JavaScript/instm/Element/scrollByLines
+JavaScript/instm/Element/scrollByPages
+Objective-C/instm/NSMatrix/scrollCellToVisibleAtRow:column:
+Objective-C/instm/NSView/scrollClipView:toPoint:
+Objective-C/instm/NSBrowser/scrollColumnsLeftBy:
+Objective-C/instm/NSBrowser/scrollColumnsRightBy:
+Objective-C/instm/NSBrowser/scrollColumnToVisible:
+Objective-C/instm/NSTableView/scrollColumnToVisible:
+Objective-C/clm/NSScroller/scrollerWidth
+Objective-C/clm/NSScroller/scrollerWidthForControlSize:
+JavaScript/data/Element/scrollHeight
+Objective-C/instm/IKImageBrowserView/scrollIndexToVisible:
+JavaScript/data/HTMLFrameElement/scrolling
+JavaScript/data/HTMLIFrameElement/scrolling
+JavaScript/instm/Element/scrollIntoView
+JavaScript/instm/Element/scrollIntoViewIfNeeded
+Objective-C/instm/NSComboBox/scrollItemAtIndexToTop:
+Objective-C/instm/NSComboBoxCell/scrollItemAtIndexToTop:
+Objective-C/instm/NSComboBox/scrollItemAtIndexToVisible:
+Objective-C/instm/NSComboBoxCell/scrollItemAtIndexToVisible:
+JavaScript/data/Element/scrollLeft
+Objective-C/instm/NSResponder/scrollLineDown:
+Objective-C/instm/NSResponder/scrollLineUp:
+Objective-C/instp/CAScrollLayer/scrollMode
+Objective-C/instm/CAScrollLayer/scrollMode
+C/func/-/scrollok
+Objective-C/instm/NSResponder/scrollPageDown:
+Objective-C/instm/NSResponder/scrollPageUp:
+Objective-C/instm/NSView/scrollPoint:
+Objective-C/instm/CALayer/scrollPoint:
+Objective-C/instm/NSText/scrollRangeToVisible:
+Objective-C/instm/NSView/scrollRect:by:
+Objective-C/instm/NSView/scrollRectToVisible:
+Objective-C/instm/CALayer/scrollRectToVisible:
+Objective-C/instm/NSTableView/scrollRowToVisible:
+Objective-C/instm/NSBrowser/scrollRowToVisible:inColumn:
+Objective-C/instm/NSScrollView/scrollsDynamically
+Objective-C/instm/PDFView/scrollSelectionToVisible:
+JavaScript/instm/DOMWindow/scrollTo
+Objective-C/instm/NSResponder/scrollToBeginningOfDocument:
+Objective-C/instm/NSResponder/scrollToEndOfDocument:
+JavaScript/data/Element/scrollTop
+Objective-C/instm/CAScrollLayer/scrollToPoint:
+Objective-C/instm/NSClipView/scrollToPoint:
+Objective-C/instm/IKImageView/scrollToPoint:
+Objective-C/instm/CAScrollLayer/scrollToRect:
+Objective-C/instm/IKImageView/scrollToRect:
+Objective-C/instm/NSBrowser/scrollViaScroller:
+Objective-C/instm/NSRulerView/scrollView
+Objective-C/instm/NSScrollView/scrollWheel:
+Objective-C/instm/NSResponder/scrollWheel:
+JavaScript/data/Element/scrollWidth
+JavaScript/data/DOMWindow/scrollX
+JavaScript/data/DOMWindow/scrollY
+C/func/-/SCSetCompressFlags
+C/func/-/SCSetInfo
+C/func/-/SCSetSettingsFromAtomContainer
+C/func/-/SCSetTestImagePictFile
+C/func/-/SCSetTestImagePictHandle
+C/func/-/SCSetTestImagePixMap
+C/econst/-/scShowMotionSettings
+C/tdef/-/SCSI_Capacity_Data
+C/tdef/-/SCSI_Capacity_Data_Long
+C/tdef/-/SCSI_Sense_Data
+C/tdef/-/SCSICmd_INQUIRY_Page00_Header
+C/tdef/-/SCSICmd_INQUIRY_Page80_Header
+C/tdef/-/SCSICmd_INQUIRY_Page83_Header
+C/tdef/-/SCSICmd_INQUIRY_Page83_Header_SPC_16
+C/tdef/-/SCSICmd_INQUIRY_Page83_Identification_Descriptor
+C/tdef/-/SCSICmd_INQUIRY_Page89_Data
+C/tdef/-/SCSICmd_INQUIRY_StandardData
+C/tdef/-/SCSICmd_INQUIRY_StandardDataAll
+C/tag/-/SCSICmd_REPORT_LUNS_Header
+C/tdef/-/SCSICmd_REPORT_LUNS_LUN_ENTRY
+C/tdef/-/SCSICmdField10Bit
+C/tdef/-/SCSICmdField11Bit
+C/tdef/-/SCSICmdField12Bit
+C/tdef/-/SCSICmdField13Bit
+C/tdef/-/SCSICmdField14Bit
+C/tdef/-/SCSICmdField15Bit
+C/tdef/-/SCSICmdField17Bit
+C/tdef/-/SCSICmdField18Bit
+C/tdef/-/SCSICmdField19Bit
+C/tdef/-/SCSICmdField1Bit
+C/tdef/-/SCSICmdField1Byte
+C/tdef/-/SCSICmdField20Bit
+C/tdef/-/SCSICmdField21Bit
+C/tdef/-/SCSICmdField22Bit
+C/tdef/-/SCSICmdField23Bit
+C/tdef/-/SCSICmdField25Bit
+C/tdef/-/SCSICmdField26Bit
+C/tdef/-/SCSICmdField27Bit
+C/tdef/-/SCSICmdField28Bit
+C/tdef/-/SCSICmdField29Bit
+C/tdef/-/SCSICmdField2Bit
+C/tdef/-/SCSICmdField2Byte
+C/tdef/-/SCSICmdField30Bit
+C/tdef/-/SCSICmdField31Bit
+C/tdef/-/SCSICmdField33Bit
+C/tdef/-/SCSICmdField34Bit
+C/tdef/-/SCSICmdField35Bit
+C/tdef/-/SCSICmdField36Bit
+C/tdef/-/SCSICmdField37Bit
+C/tdef/-/SCSICmdField38Bit
+C/tdef/-/SCSICmdField39Bit
+C/tdef/-/SCSICmdField3Bit
+C/tdef/-/SCSICmdField3Byte
+C/tdef/-/SCSICmdField41Bit
+C/tdef/-/SCSICmdField42Bit
+C/tdef/-/SCSICmdField43Bit
+C/tdef/-/SCSICmdField44Bit
+C/tdef/-/SCSICmdField45Bit
+C/tdef/-/SCSICmdField46Bit
+C/tdef/-/SCSICmdField47Bit
+C/tdef/-/SCSICmdField49Bit
+C/tdef/-/SCSICmdField4Bit
+C/tdef/-/SCSICmdField4Byte
+C/tdef/-/SCSICmdField50Bit
+C/tdef/-/SCSICmdField51Bit
+C/tdef/-/SCSICmdField52Bit
+C/tdef/-/SCSICmdField53Bit
+C/tdef/-/SCSICmdField54Bit
+C/tdef/-/SCSICmdField55Bit
+C/tdef/-/SCSICmdField57Bit
+C/tdef/-/SCSICmdField58Bit
+C/tdef/-/SCSICmdField59Bit
+C/tdef/-/SCSICmdField5Bit
+C/tdef/-/SCSICmdField5Byte
+C/tdef/-/SCSICmdField60Bit
+C/tdef/-/SCSICmdField61Bit
+C/tdef/-/SCSICmdField62Bit
+C/tdef/-/SCSICmdField63Bit
+C/tdef/-/SCSICmdField6Bit
+C/tdef/-/SCSICmdField6Byte
+C/tdef/-/SCSICmdField7Bit
+C/tdef/-/SCSICmdField7Byte
+C/tdef/-/SCSICmdField8Byte
+C/tdef/-/SCSICmdField9Bit
+C/tdef/-/SCSIDeviceIdentifier
+C/tdef/-/SCSIInitiatorIdentifier
+C/tdef/-/SCSILogicalUnitNumber
+C/tdef/-/SCSIPortStatus
+C/tdef/-/SCSIProtocolFeature
+C/tdef/-/SCSIProtocolPowerState
+C/tdef/-/SCSIServiceResponse
+C/tdef/-/SCSITaggedTaskIdentifier
+C/tdef/-/SCSITargetIdentifier
+C/tdef/-/SCSITaskAttribute
+C/tdef/-/SCSITaskCallbackFunction
+C/tdef/-/SCSITaskCompletion
+C/cl/-/SCSITaskDeviceInterface
+C/tdef/-/SCSITaskIdentifier
+C/cl/-/SCSITaskInterface
+C/tdef/-/SCSITaskMode
+C/tdef/-/SCSITaskState
+C/tdef/-/SCSITaskStatus
+C/econst/-/scSoundChannelCountType
+C/econst/-/scSoundCompressionType
+C/econst/-/scSoundInputSampleRateType
+C/econst/-/scSoundSampleRateChangeOK
+C/econst/-/scSoundSampleRateType
+C/econst/-/scSoundSampleSizeType
+C/econst/-/scSoundVBRCompressionOK
+C/econst/-/scSpatialSettingsType
+C/econst/-/scTemporalSettingsType
+C/econst/-/scVideoAllowFrameReorderingType
+C/func/-/SCVLANInterfaceCopyAll
+C/func/-/SCVLANInterfaceCopyAvailablePhysicalInterfaces
+C/func/-/SCVLANInterfaceCreate
+C/func/-/SCVLANInterfaceGetOptions
+C/func/-/SCVLANInterfaceGetPhysicalInterface
+C/func/-/SCVLANInterfaceGetTag
+C/tdef/-/SCVLANInterfaceRef
+C/func/-/SCVLANInterfaceRemove
+C/func/-/SCVLANInterfaceSetLocalizedDisplayName
+C/func/-/SCVLANInterfaceSetOptions
+C/func/-/SCVLANInterfaceSetPhysicalInterfaceAndTag
+C/econst/-/scWindowOptionsType
+C/tdef/-/sDeleteRecord
+C/tdef/-/sDoAttrValueSearch
+C/tdef/-/sDoAttrValueSearchWithData
+C/tdef/-/sDoDirNodeAuth
+C/tdef/-/sDoMultiAttrValueSearch
+C/tdef/-/sDoMultiAttrValueSearchWithData
+C/tdef/-/sDoPlugInCustomCall
+C/func/-/SDOT
+JavaScript/data/HTMLAreaElement/search
+JavaScript/data/HTMLAnchorElement/search
+JavaScript/data/window/search
+JavaScript/data/WorkerLocation/search
+Objective-C/instm/NSSearchFieldCell/searchButtonCell
+Objective-C/instm/NSSearchFieldCell/searchButtonRectForBounds:
+Objective-C/clm/ABSearchElement/searchElementForConjunction:children:
+Objective-C/clm/ABGroup/searchElementForProperty:label:key:value:comparison:
+Objective-C/clm/ABPerson/searchElementForProperty:label:key:value:comparison:
+Objective-C/intfm/WebDocumentSearching/searchFor:direction:caseSensitive:wrap:
+Objective-C/instm/WebView/searchFor:direction:caseSensitive:wrap:
+Objective-C/instm/NSNetServiceBrowser/searchForAllDomains
+Objective-C/instm/NSNetServiceBrowser/searchForBrowsableDomains
+Objective-C/intfm/NSUserInterfaceItemSearching/searchForItemsWithSearchString:resultLimit:matchedItemHandler:
+Objective-C/instm/NSNetServiceBrowser/searchForRegistrationDomains
+Objective-C/instm/NSNetServiceBrowser/searchForServicesOfType:inDomain:
+C/func/-/searchfs
+Objective-C/instm/NSSearchFieldCell/searchMenuTemplate
+Objective-C/instm/NSMetadataQuery/searchScopes
+Objective-C/instm/NSApplication/searchString:inUserInterfaceItemString:searchRange:foundRange:
+Objective-C/instm/NSSearchFieldCell/searchTextRectForBounds:
+C/macro/-/SEC_KEY_IMPORT_EXPORT_PARAMS_VERSION
+C/macro/-/SEC_KEYCHAIN_SETTINGS_VERS1
+C/func/-/SecAccessCopyACLList
+C/func/-/SecAccessCopySelectedACLList
+C/func/-/SecAccessCreate
+C/func/-/SecAccessCreateFromOwnerAndACL
+C/func/-/SecAccessGetOwnerAndACL
+C/func/-/SecAccessGetTypeID
+C/tdef/-/SecAccessRef
+C/func/-/SecACLCopySimpleContents
+C/func/-/SecACLCreateFromSimpleContents
+C/func/-/SecACLGetAuthorizations
+C/func/-/SecACLGetTypeID
+C/tdef/-/SecACLRef
+C/func/-/SecACLRemove
+C/func/-/SecACLSetAuthorizations
+C/func/-/SecACLSetSimpleContents
+C/tdef/-/SecAFPServerSignature
+C/tdef/-/SecAuthenticationType
+C/func/-/SecCertificateAddToKeychain
+C/func/-/SecCertificateCopyCommonName
+C/func/-/SecCertificateCopyData
+C/func/-/SecCertificateCopyEmailAddresses
+C/func/-/SecCertificateCopyPreference
+C/func/-/SecCertificateCopyPublicKey
+C/func/-/SecCertificateCopySubjectSummary
+C/func/-/SecCertificateCreateFromData
+C/func/-/SecCertificateCreateWithData
+C/func/-/SecCertificateGetAlgorithmID
+C/func/-/SecCertificateGetCLHandle
+C/func/-/SecCertificateGetData
+C/func/-/SecCertificateGetIssuer
+C/func/-/SecCertificateGetItem
+C/func/-/SecCertificateGetSubject
+C/func/-/SecCertificateGetType
+C/func/-/SecCertificateGetTypeID
+C/tdef/-/SecCertificateRef
+C/func/-/SecCertificateSetPreference
+C/func/-/SecCodeCheckValidity
+C/func/-/SecCodeCheckValidityWithErrors
+C/func/-/SecCodeCopyDesignatedRequirement
+C/func/-/SecCodeCopyGuestWithAttributes
+C/func/-/SecCodeCopyHost
+C/func/-/SecCodeCopyPath
+C/func/-/SecCodeCopySelf
+C/func/-/SecCodeCopySigningInformation
+C/func/-/SecCodeCopyStaticCode
+C/func/-/SecCodeGetTypeID
+C/func/-/SecCodeMapMemory
+C/tag/-/SecCodeRef
+C/tdef/-/SecCodeSignatureFlags
+C/tdef/-/SecCodeStatus
+C/func/-/SecCopyErrorMessageString
+C/tdef/-/SecCredentialType
+C/tdef/-/SecCSFlags
+C/tdef/-/SecExternalFormat
+C/tdef/-/SecExternalItemType
+C/tdef/-/SecGuestRef
+C/func/-/SecHostCreateGuest
+C/func/-/SecHostRemoveGuest
+C/func/-/SecHostSelectedGuest
+C/func/-/SecHostSelectGuest
+C/func/-/SecHostSetGuestStatus
+C/func/-/SecHostSetHostingPort
+C/func/-/SecIdentityCopyCertificate
+C/func/-/SecIdentityCopyPreference
+C/func/-/SecIdentityCopyPrivateKey
+C/func/-/SecIdentityCopySystemIdentity
+C/func/-/SecIdentityCreateWithCertificate
+C/func/-/SecIdentityGetTypeID
+C/tdef/-/SecIdentityRef
+C/func/-/SecIdentitySearchCopyNext
+C/func/-/SecIdentitySearchCreate
+C/func/-/SecIdentitySearchGetTypeID
+C/tdef/-/SecIdentitySearchRef
+C/func/-/SecIdentitySetPreference
+C/func/-/SecIdentitySetSystemIdentity
+C/func/-/SecItemAdd
+C/tdef/-/SecItemAttr
+C/tdef/-/SecItemClass
+C/func/-/SecItemCopyMatching
+C/func/-/SecItemDelete
+C/tdef/-/SecItemImportExportFlags
+C/func/-/SecItemUpdate
+C/func/-/SecKeychainAddCallback
+C/func/-/SecKeychainAddGenericPassword
+C/func/-/SecKeychainAddInternetPassword
+C/tag/-/SecKeychainAttribute
+C/tdef/-/SecKeychainAttribute
+C/tdef/-/SecKeychainAttributeInfo
+C/tag/-/SecKeychainAttributeInfo
+C/func/-/SecKeychainAttributeInfoForItemID
+C/tag/-/SecKeychainAttributeList
+C/tdef/-/SecKeychainAttributeList
+C/tdef/-/SecKeychainAttrType
+C/tdef/-/SecKeychainCallback
+C/tag/-/SecKeychainCallbackInfo
+C/tdef/-/SecKeychainCallbackInfo
+C/func/-/SecKeychainCopyAccess
+C/func/-/SecKeychainCopyDefault
+C/func/-/SecKeychainCopyDomainDefault
+C/func/-/SecKeychainCopyDomainSearchList
+C/func/-/SecKeychainCopySearchList
+C/func/-/SecKeychainCopySettings
+C/func/-/SecKeychainCreate
+C/func/-/SecKeychainDelete
+C/tdef/-/SecKeychainEvent
+C/tdef/-/SecKeychainEventMask
+C/func/-/SecKeychainFindGenericPassword
+C/func/-/SecKeychainFindInternetPassword
+C/func/-/SecKeychainFreeAttributeInfo
+C/func/-/SecKeychainGetCSPHandle
+C/func/-/SecKeychainGetDLDBHandle
+C/func/-/SecKeychainGetPath
+C/func/-/SecKeychainGetPreferenceDomain
+C/func/-/SecKeychainGetStatus
+C/func/-/SecKeychainGetTypeID
+C/func/-/SecKeychainGetUserInteractionAllowed
+C/func/-/SecKeychainGetVersion
+C/func/-/SecKeychainItemCopyAccess
+C/func/-/SecKeychainItemCopyAttributesAndData
+C/func/-/SecKeychainItemCopyContent
+C/func/-/SecKeychainItemCopyFromPersistentReference
+C/func/-/SecKeychainItemCopyKeychain
+C/func/-/SecKeychainItemCreateCopy
+C/func/-/SecKeychainItemCreateFromContent
+C/func/-/SecKeychainItemCreatePersistentReference
+C/func/-/SecKeychainItemDelete
+C/func/-/SecKeychainItemExport
+C/func/-/SecKeychainItemFreeAttributesAndData
+C/func/-/SecKeychainItemFreeContent
+C/func/-/SecKeychainItemGetDLDBHandle
+C/func/-/SecKeychainItemGetTypeID
+C/func/-/SecKeychainItemGetUniqueRecordID
+C/func/-/SecKeychainItemImport
+C/func/-/SecKeychainItemModifyAttributesAndData
+C/func/-/SecKeychainItemModifyContent
+C/tdef/-/SecKeychainItemRef
+C/func/-/SecKeychainItemSetAccess
+C/func/-/SecKeychainLock
+C/func/-/SecKeychainLockAll
+C/func/-/SecKeychainOpen
+C/tdef/-/SecKeychainRef
+C/func/-/SecKeychainRemoveCallback
+C/func/-/SecKeychainSearchCopyNext
+C/func/-/SecKeychainSearchCreateFromAttributes
+C/func/-/SecKeychainSearchGetTypeID
+C/tdef/-/SecKeychainSearchRef
+C/func/-/SecKeychainSetAccess
+C/func/-/SecKeychainSetDefault
+C/func/-/SecKeychainSetDomainDefault
+C/func/-/SecKeychainSetDomainSearchList
+C/func/-/SecKeychainSetPreferenceDomain
+C/func/-/SecKeychainSetSearchList
+C/func/-/SecKeychainSetSettings
+C/tag/-/SecKeychainSettings
+C/tdef/-/SecKeychainSettings
+C/func/-/SecKeychainSetUserInteractionAllowed
+C/tdef/-/SecKeychainStatus
+C/func/-/SecKeychainUnlock
+C/func/-/SecKeyCreatePair
+C/func/-/SecKeyGenerate
+C/func/-/SecKeyGetBlockSize
+C/func/-/SecKeyGetCredentials
+C/func/-/SecKeyGetCSPHandle
+C/func/-/SecKeyGetCSSMKey
+C/func/-/SecKeyGetTypeID
+C/tdef/-/SecKeyImportExportFlags
+C/tdef/-/SecKeyImportExportParameters
+C/tdef/-/SecKeyRef
+Objective-C/instm/NSDateComponents/second
+Objective-C/instm/NSNumberFormatter/secondaryGroupingSize
+Objective-C/clm/NSColor/secondarySelectedControlColor
+Objective-C/instm/DRMSF/seconds
+Objective-C/instm/NSTimeZone/secondsFromGMT
+Objective-C/instm/NSTimeZone/secondsFromGMTForDate:
+C/tdef/-/SecPadding
+C/func/-/SecPKCS12Import
+C/func/-/SecPolicyCreateBasicX509
+C/func/-/SecPolicyCreateSSL
+C/func/-/SecPolicyGetOID
+C/func/-/SecPolicyGetTPHandle
+C/func/-/SecPolicyGetTypeID
+C/func/-/SecPolicyGetValue
+C/tdef/-/SecPolicyRef
+C/func/-/SecPolicySearchCopyNext
+C/func/-/SecPolicySearchCreate
+C/func/-/SecPolicySearchGetTypeID
+C/tdef/-/SecPolicySearchRef
+C/func/-/SecPolicySetValue
+C/tdef/-/SecPreferencesDomain
+C/tdef/-/SecProtocolType
+C/tdef/-/SecPublicKeyHash
+C/func/-/SecRequirementCopyData
+C/func/-/SecRequirementCopyString
+C/func/-/SecRequirementCreateWithData
+C/func/-/SecRequirementCreateWithString
+C/func/-/SecRequirementCreateWithStringAndErrors
+C/func/-/SecRequirementGetTypeID
+C/tdef/-/SecRequirementRef
+C/tdef/-/SecRequirementType
+C/func/-/SecStaticCodeCheckValidity
+C/func/-/SecStaticCodeCheckValidityWithErrors
+C/func/-/SecStaticCodeCreateWithPath
+C/func/-/SecStaticCodeGetTypeID
+C/tdef/-/SecStaticCodeRef
+C/tag/-/section
+C/tag/-/section_64
+JavaScript/data/HTMLTableRowElement/sectionRowIndex
+Objective-C/instm/DRMSF/sectors
+C/func/-/SecTrustCopyAnchorCertificates
+C/func/-/SecTrustCopyCustomAnchorCertificates
+C/func/-/SecTrustCopyPolicies
+C/func/-/SecTrustCreateWithCertificates
+C/func/-/SecTrustedApplicationCopyData
+C/func/-/SecTrustedApplicationCreateFromPath
+C/func/-/SecTrustedApplicationGetTypeID
+C/tdef/-/SecTrustedApplicationRef
+C/func/-/SecTrustedApplicationSetData
+C/func/-/SecTrustEvaluate
+C/func/-/SecTrustGetCSSMAnchorCertificates
+C/func/-/SecTrustGetCssmResult
+C/func/-/SecTrustGetCssmResultCode
+C/func/-/SecTrustGetResult
+C/func/-/SecTrustGetTPHandle
+C/func/-/SecTrustGetTypeID
+C/func/-/SecTrustGetUserTrust
+C/func/-/SecTrustGetVerifyTime
+C/tdef/-/SecTrustRef
+C/tdef/-/SecTrustResultType
+C/func/-/SecTrustSetAnchorCertificates
+C/func/-/SecTrustSetAnchorCertificatesOnly
+C/func/-/SecTrustSetKeychains
+C/func/-/SecTrustSetParameters
+C/func/-/SecTrustSetPolicies
+C/func/-/SecTrustSettingsCopyCertificates
+C/func/-/SecTrustSettingsCopyModificationDate
+C/func/-/SecTrustSettingsCopyTrustSettings
+C/func/-/SecTrustSettingsCreateExternalRepresentation
+C/tdef/-/SecTrustSettingsDomain
+C/func/-/SecTrustSettingsImportExternalRepresentation
+C/tdef/-/SecTrustSettingsKeyUsage
+C/func/-/SecTrustSettingsRemoveTrustSettings
+C/tdef/-/SecTrustSettingsResult
+C/func/-/SecTrustSettingsSetTrustSettings
+C/func/-/SecTrustSetUserTrust
+C/func/-/SecTrustSetVerifyDate
+C/tdef/-/SecTrustUserSetting
+JavaScript/clconst/DOMCoreException/SECURITY_ERR
+JavaScript/clconst/FileError/SECURITY_ERR
+Objective-C/instp/CWNetwork/securityMode
+Objective-C/instp/CWInterface/securityMode
+Objective-C/instp/CWWirelessProfile/securityMode
+Objective-C/instm/CAEmitterLayer/seed
+Objective-C/instp/CAEmitterLayer/seed
+JavaScript/data/SVGFETurbulenceElement/seed
+C/func/-/seed48
+JavaScript/data/HTMLMediaElement/seekable
+C/func/-/seekdir
+JavaScript/data/HTMLMediaElement/seeking
+Objective-C/instm/NSFileHandle/seekToEndOfFile
+Objective-C/instm/NSFileHandle/seekToFileOffset:
+C++/tag/IODMACommand/Segment32
+C++/tag/IODMACommand/Segment64
+C/tag/-/segment_command
+C/tag/-/segment_command_64
+Objective-C/instm/NSSegmentedControl/segmentCount
+Objective-C/instm/NSSegmentedCell/segmentCount
+C++/tdef/IODMACommand/SegmentFunction
+C++/tdef/IOMemoryCursor/SegmentFunction
+Objective-C/instm/NSSegmentedControl/segmentStyle
+Objective-C/instm/NSSegmentedCell/segmentStyle
+C/tdef/-/SEL
+C/func/-/sel_getName
+C/func/-/sel_getUid
+C/func/-/sel_isEqual
+C/func/-/sel_registerName
+C/func/-/select
+JavaScript/instm/HTMLTextAreaElement/select
+JavaScript/instm/HTMLInputElement/select
+JavaScript/clconst/Event/SELECT
+Objective-C/intfm/WebDocumentText/selectAll
+Objective-C/instm/PDFView/selectAll:
+Objective-C/instm/NSMatrix/selectAll:
+Objective-C/instm/NSBrowser/selectAll:
+Objective-C/instm/NSTableView/selectAll:
+Objective-C/instm/QTMovieView/selectAll:
+Objective-C/instm/NSResponder/selectAll:
+Objective-C/instm/NSText/selectAll:
+JavaScript/instm/DOMSelection/selectAllChildren
+Objective-C/instm/NSControl/selectCell:
+Objective-C/instm/NSMatrix/selectCellAtRow:column:
+Objective-C/instm/NSMatrix/selectCellWithTag:
+Objective-C/instm/NSTableView/selectColumn:byExtendingSelection:
+Objective-C/instm/NSTableView/selectColumnIndexes:byExtendingSelection:
+C++/instm/IOATADevice/selectConfig
+JavaScript/instm/InjectedScriptHost/selectDatabase
+JavaScript/instm/InjectedScriptHost/selectDOMStorage
+JavaScript/data/HTMLOptionElement/selected
+JavaScript/data/HTMLDataGridRowElement/selected
+Objective-C/intfm/WebDocumentText/selectedAttributedString
+Objective-C/instm/NSMatrix/selectedCell
+Objective-C/instm/NSBrowser/selectedCell
+Objective-C/instm/NSControl/selectedCell
+Objective-C/instm/NSBrowser/selectedCellInColumn:
+Objective-C/instm/NSMatrix/selectedCells
+Objective-C/instm/NSBrowser/selectedCells
+Objective-C/instm/NSMatrix/selectedColumn
+Objective-C/instm/NSBrowser/selectedColumn
+Objective-C/instm/NSTableView/selectedColumn
+Objective-C/instm/NSTableView/selectedColumnEnumerator
+Objective-C/instm/NSTableView/selectedColumnIndexes
+Objective-C/instm/QCCompositionPickerView/selectedComposition
+Objective-C/clm/NSColor/selectedControlColor
+Objective-C/clm/NSColor/selectedControlTextColor
+Objective-C/instm/IKDeviceBrowserView/selectedDevice
+Objective-C/instp/IKDeviceBrowserView/selectedDevice
+Objective-C/instm/WebView/selectedDOMRange
+Objective-C/intfm/ApertureExportManager/selectedExportPresetDictionary
+Objective-C/instm/NSFontManager/selectedFont
+Objective-C/instm/WebView/selectedFrame
+Objective-C/instp/ABPeoplePickerView/selectedGroups
+Objective-C/instm/ABPeoplePickerView/selectedGroups
+Objective-C/binding/NSTabView/selectedIdentifier
+Objective-C/instm/ABPeoplePickerView/selectedIdentifiersForPerson:
+Objective-C/binding/AMPathPopUpButton/selectedIndex
+Objective-C/binding/NSMatrix/selectedIndex
+Objective-C/binding/NSTabView/selectedIndex
+Objective-C/binding/NSSegmentedControl/selectedIndex
+Objective-C/binding/NSPopUpButton/selectedIndex
+Objective-C/binding/NSSegmentedCell/selectedIndex
+Objective-C/binding/NSPopUpButtonCell/selectedIndex
+JavaScript/data/HTMLSelectElement/selectedIndex
+JavaScript/data/HTMLOptionsCollection/selectedIndex
+Objective-C/instm/IKCameraDeviceView/selectedIndexes
+Objective-C/instm/NSPopUpButton/selectedItem
+Objective-C/instm/NSPopUpButtonCell/selectedItem
+Objective-C/instm/NSToolbar/selectedItemIdentifier
+Objective-C/instm/NSTextInputContext/selectedKeyboardInputSource
+Objective-C/instp/NSTextInputContext/selectedKeyboardInputSource
+Objective-C/clm/NSColor/selectedKnobColor
+Objective-C/binding/NSSegmentedCell/selectedLabel
+Objective-C/binding/NSTabView/selectedLabel
+Objective-C/binding/NSSegmentedControl/selectedLabel
+Objective-C/clm/NSColor/selectedMenuItemColor
+Objective-C/clm/NSColor/selectedMenuItemTextColor
+Objective-C/instm/NSTreeController/selectedNodes
+Objective-C/binding/AMPathPopUpButton/selectedObject
+Objective-C/binding/NSMatrix/selectedObject
+Objective-C/binding/NSPopUpButtonCell/selectedObject
+Objective-C/binding/NSPopUpButton/selectedObject
+Objective-C/instm/NSTreeController/selectedObjects
+Objective-C/instm/NSObjectController/selectedObjects
+Objective-C/instm/NSArrayController/selectedObjects
+JavaScript/data/HTMLInputElement/selectedOption
+Objective-C/instm/PDFThumbnailView/selectedPages
+Objective-C/intfm/IMKTextInput/selectedRange
+Objective-C/intfm/NSTextInput/selectedRange
+Objective-C/intfm/NSTextInputClient/selectedRange
+Objective-C/instm/NSText/selectedRange
+Objective-C/instm/NSTextView/selectedRanges
+Objective-C/instp/ABPeoplePickerView/selectedRecords
+Objective-C/instm/ABPeoplePickerView/selectedRecords
+Objective-C/instm/NSMatrix/selectedRow
+Objective-C/instm/NSTableView/selectedRow
+Objective-C/instm/NSTableView/selectedRowEnumerator
+Objective-C/instm/NSBrowser/selectedRowInColumn:
+Objective-C/instm/NSRuleEditor/selectedRowIndexes
+Objective-C/instm/NSTableView/selectedRowIndexes
+Objective-C/instm/NSBrowser/selectedRowIndexesInColumn:
+Objective-C/instm/NSSegmentedCell/selectedSegment
+Objective-C/instm/NSSegmentedControl/selectedSegment
+Objective-C/intfm/WebDocumentText/selectedString
+JavaScript/data/Document/selectedStylesheetSet
+Objective-C/instm/NSTabView/selectedTabViewItem
+Objective-C/instm/NSControl/selectedTag
+Objective-C/binding/NSMatrix/selectedTag
+Objective-C/binding/AMPathPopUpButton/selectedTag
+Objective-C/binding/NSPopUpButtonCell/selectedTag
+Objective-C/binding/NSPopUpButton/selectedTag
+Objective-C/binding/NSSegmentedControl/selectedTag
+Objective-C/binding/NSSegmentedCell/selectedTag
+Objective-C/instm/NSTextView/selectedTextAttributes
+Objective-C/clm/NSColor/selectedTextBackgroundColor
+Objective-C/clm/NSColor/selectedTextColor
+Objective-C/binding/AMPathPopUpButton/selectedValue
+Objective-C/binding/NSMatrix/selectedValue
+Objective-C/binding/NSPopUpButtonCell/selectedValue
+Objective-C/binding/NSPopUpButton/selectedValue
+Objective-C/instm/ABPeoplePickerView/selectedValues
+Objective-C/intfm/ApertureEditManager/selectedVersionIds
+Objective-C/instm/NSWorkspace/selectFile:inFileViewerRootedAtPath:
+Objective-C/instm/NSTabView/selectFirstTabViewItem:
+Objective-C/instm/ABPeoplePickerView/selectGroup:byExtendingSelection:
+Objective-C/instm/ABPeoplePickerView/selectIdentifier:forPerson:byExtendingSelection:
+Objective-C/instm/ABPeoplePickerView/selectInAddressBook:
+Objective-C/instm/IKCameraDeviceView/selectIndexes:byExtendingSelection:
+Objective-C/intfm/IMKTextInput/selectInputMode:
+Objective-C/instm/NSObjectController/selection
+Objective-C/instm/NSTextView/selectionAffinity
+Objective-C/instm/WebView/selectionAffinity
+Objective-C/instm/QTMovie/selectionDuration
+Objective-C/instm/QTMovie/selectionEnd
+JavaScript/data/HTMLInputElement/selectionEnd
+JavaScript/data/HTMLTextAreaElement/selectionEnd
+Objective-C/instm/PDFDocument/selectionForEntireDocument
+Objective-C/instm/PDFPage/selectionForLineAtPoint:
+Objective-C/instm/PDFPage/selectionForRange:
+Objective-C/instm/PDFPage/selectionForRect:
+Objective-C/instm/PDFPage/selectionForWordAtPoint:
+Objective-C/instm/IKImageBrowserCell/selectionFrame
+Objective-C/instm/PDFDocument/selectionFromPage:atCharacterIndex:toPage:atCharacterIndex:
+Objective-C/instm/PDFDocument/selectionFromPage:atPoint:toPage:atPoint:
+Objective-C/instm/PDFPage/selectionFromPoint:toPoint:
+Objective-C/instm/NSTextView/selectionGranularity
+Objective-C/instm/NSTableView/selectionHighlightStyle
+Objective-C/instm/NSArrayController/selectionIndex
+Objective-C/instm/IKImageBrowserView/selectionIndexes
+Objective-C/instm/NSCollectionView/selectionIndexes
+Objective-C/instm/NSArrayController/selectionIndexes
+Objective-C/binding/NSCollectionView/selectionIndexes
+Objective-C/binding/NSDictionaryController/selectionIndexes
+Objective-C/binding/NSArrayController/selectionIndexes
+Objective-C/binding/NSTableView/selectionIndexes
+Objective-C/instm/NSTreeController/selectionIndexPath
+Objective-C/instm/NSBrowser/selectionIndexPath
+Objective-C/instm/NSTreeController/selectionIndexPaths
+Objective-C/instm/NSBrowser/selectionIndexPaths
+Objective-C/binding/NSBrowser/selectionIndexPaths
+Objective-C/binding/NSOutlineView/selectionIndexPaths
+Objective-C/binding/NSTreeController/selectionIndexPaths
+Objective-C/instm/IMKCandidates/selectionKeys
+Objective-C/instm/IMKCandidates/selectionKeysKeylayout
+Objective-C/instm/IMKInputController/selectionRange
+Objective-C/instm/NSTextView/selectionRangeForProposedRange:granularity:
+Objective-C/instm/PDFSelection/selectionsByLine
+Objective-C/intfm/NSOutlineViewDelegate/selectionShouldChangeInOutlineView:
+Objective-C/intfm/NSTableViewDelegate/selectionShouldChangeInTableView:
+Objective-C/instm/QTMovie/selectionStart
+JavaScript/data/HTMLInputElement/selectionStart
+JavaScript/data/HTMLTextAreaElement/selectionStart
+Objective-C/instm/NSPopUpButtonCell/selectItem:
+Objective-C/instm/NSPopUpButton/selectItem:
+Objective-C/instm/NSPopUpButtonCell/selectItemAtIndex:
+Objective-C/instm/NSPopUpButton/selectItemAtIndex:
+Objective-C/instm/NSComboBox/selectItemAtIndex:
+Objective-C/instm/NSComboBoxCell/selectItemAtIndex:
+Objective-C/instm/NSComboBox/selectItemWithObjectValue:
+Objective-C/instm/NSComboBoxCell/selectItemWithObjectValue:
+Objective-C/instm/NSPopUpButtonCell/selectItemWithTag:
+Objective-C/instm/NSPopUpButton/selectItemWithTag:
+Objective-C/instm/NSPopUpButtonCell/selectItemWithTitle:
+Objective-C/instm/NSPopUpButton/selectItemWithTitle:
+Objective-C/instm/NSWindow/selectKeyViewFollowingView:
+Objective-C/instm/NSWindow/selectKeyViewPrecedingView:
+Objective-C/instm/NSTabView/selectLastTabViewItem:
+Objective-C/instm/NSResponder/selectLine:
+C++/instm/IONetworkController/selectMedium
+C++/instm/IONetworkController/selectMediumWithName
+C/func/-/SelectMovieAlternates
+Objective-C/instm/NSArrayController/selectNext:
+Objective-C/instm/NSWindow/selectNextKeyView:
+Objective-C/instm/NSTabView/selectNextTabViewItem:
+JavaScript/instm/Range/selectNode
+JavaScript/instm/Range/selectNodeContents
+Objective-C/instm/QTMovieView/selectNone:
+Objective-C/instm/NSInvocation/selector
+Objective-C/instm/NSSortDescriptor/selector
+Objective-C/instm/NSScriptClassDescription/selectorForCommand:
+C/tdef/-/SelectorFunctionProcPtr
+C/tdef/-/SelectorFunctionUPP
+JavaScript/data/CSSStyleRule/selectorText
+JavaScript/data/CSSPageRule/selectorText
+Objective-C/instm/NSResponder/selectParagraph:
+Objective-C/instm/NSArrayController/selectPrevious:
+Objective-C/instm/NSWindow/selectPreviousKeyView:
+Objective-C/instm/NSTabView/selectPreviousTabViewItem:
+Objective-C/instm/ABPeoplePickerView/selectRecord:byExtendingSelection:
+Objective-C/instm/NSTableView/selectRow:byExtendingSelection:
+Objective-C/instm/NSBrowser/selectRow:inColumn:
+Objective-C/instm/NSRuleEditor/selectRowIndexes:byExtendingSelection:
+Objective-C/instm/NSTableView/selectRowIndexes:byExtendingSelection:
+Objective-C/instm/NSBrowser/selectRowIndexes:inColumn:
+Objective-C/instm/NSSegmentedCell/selectSegmentWithTag:
+Objective-C/instm/NSSegmentedControl/selectSegmentWithTag:
+Objective-C/instm/WebView/selectSentence:
+Objective-C/instm/NSTreeController/selectsInsertedObjects
+Objective-C/instm/NSArrayController/selectsInsertedObjects
+JavaScript/instm/SVGTextContentElement/selectSubString
+Objective-C/instm/NSTabView/selectTabViewItem:
+Objective-C/instm/NSTabView/selectTabViewItemAtIndex:
+Objective-C/instm/NSTabView/selectTabViewItemWithIdentifier:
+Objective-C/instm/NSSavePanel/selectText:
+Objective-C/instm/NSMatrix/selectText:
+Objective-C/instm/NSTextField/selectText:
+Objective-C/instm/NSForm/selectTextAtIndex:
+Objective-C/instm/NSMatrix/selectTextAtRow:column:
+Objective-C/instm/NSResponder/selectToMark:
+Objective-C/instm/NSCell/selectWithFrame:inView:editor:delegate:start:length:
+Objective-C/instm/NSResponder/selectWord:
+Objective-C/intfm/NSObject/self
+Objective-C/instm/NSManagedObject/self
+JavaScript/data/DOMWindow/self
+JavaScript/data/WorkerContext/self
+JavaScript/data/ScriptProfileNode/selfTime
+C/func/-/sem_close
+C/func/-/sem_open
+C/func/-/sem_post
+C/func/-/sem_trywait
+C/func/-/sem_unlink
+C/func/-/sem_wait
+C/func/-/semctl
+C/func/-/semget
+C/func/-/semop
+C/func/-/send
+JavaScript/instm/XMLHttpRequest/send
+JavaScript/instm/WebSocket/send
+C/func/-/send_easy_trap
+C/func/-/send_trap_vars
+C/func/-/send_v2trap
+Objective-C/instm/NSFontManager/sendAction
+Objective-C/instm/NSMatrix/sendAction
+Objective-C/instm/NSBrowser/sendAction
+Objective-C/instm/NSControl/sendAction:to:
+Objective-C/instm/NSMatrix/sendAction:to:forAllCells:
+Objective-C/instm/NSApplication/sendAction:to:from:
+Objective-C/instm/NSStatusItem/sendActionOn:
+Objective-C/instm/NSControl/sendActionOn:
+Objective-C/instm/NSCell/sendActionOn:
+JavaScript/instm/Channel/sendATCommand
+Objective-C/instm/NSPortMessage/sendBeforeDate:
+Objective-C/instm/NSPort/sendBeforeDate:components:from:reserved:
+Objective-C/instm/NSPort/sendBeforeDate:msgid:components:from:reserved:
+Objective-C/instm/IOBluetoothOBEXSession/sendBufferTroughChannel
+Objective-C/instm/PSClient/sendChangesSinceDate:
+C++/instm/IOStreamBuffer/sendClientReference
+Objective-C/instm/XGAuthenticator/sendData:
+C++/instm/IODataQueue/sendDataAvailableNotification
+Objective-C/instm/OBEXSession/sendDataToTransport:dataLength:
+Objective-C/instm/IOBluetoothOBEXSession/sendDataToTransport:dataLength:
+Objective-C/instm/NSMatrix/sendDoubleAction
+Objective-C/instm/NSURLAuthenticationChallenge/sender
+Objective-C/instm/NSWindow/sendEvent:
+Objective-C/instm/NSApplication/sendEvent:
+Objective-C/instm/SBObject/sendEvent:id:parameters:
+C/func/-/sendfile
+C/func/-/SendForceFeedbackCommand
+C/func/-/SendInputNotification
+C/func/-/SendInputSyncNotification
+C++/instm/IOBDMedia/sendKey
+C++/instm/IODVDMedia/sendKey
+C++/instm/IODVDBlockStorageDriver/sendKey
+Objective-C/instm/IOBluetoothDevice/sendL2CAPEchoRequest:length:
+Objective-C/instm/SBApplication/sendMode
+C/func/-/sendmsg
+C++/instm/IOStream/sendOutputNotification
+C++/instm/IONetworkController/sendPacket
+Objective-C/instm/NSPortMessage/sendPort
+Objective-C/instm/NSConnection/sendPort
+Objective-C/instm/IOBluetoothRFCOMMChannel/sendRemoteLineStatus:
+Objective-C/instm/IOBluetoothRFCOMMAudioController/sendRFCOMMData:length:
+Objective-C/instm/NSBrowser/sendsActionOnArrowKeys
+Objective-C/instm/NSCell/sendsActionOnEndEditing
+C++/instm/IOFireWireSerialBusProtocolTransport/SendSCSICommand
+Objective-C/instm/NSSearchFieldCell/sendsSearchStringImmediately
+Objective-C/instm/NSSearchFieldCell/sendsWholeSearchString
+Objective-C/clm/NSURLConnection/sendSynchronousRequest:returningResponse:error:
+C/func/-/sendto
+C++/instm/IOAudioControl/sendValueChangeNotification
+Objective-C/instm/NSBrowser/separatesColumns
+JavaScript/data/Counter/separator
+Objective-C/clm/NSMenuItem/separatorItem
+JavaScript/clconst/IDBDatabaseException/SERIAL_ERR
+C++/instm/IONetworkMedium/serialize
+C++/instm/IOCatalogue/serialize
+C++/instm/IONetworkData/serialize
+C++/instm/OSDictionary/serialize
+C++/instm/OSData/serialize
+C++/instm/OSMetaClassBase/serialize
+C++/instm/OSNumber/serialize
+C++/instm/OSArray/serialize
+C++/instm/OSBoolean/serialize
+C++/instm/OSObject/serialize
+C++/instm/OSSet/serialize
+C++/instm/OSString/serialize
+Objective-C/instm/NSFileWrapper/serializedRepresentation
+JavaScript/instm/TestObj/serializedValue
+Objective-C/instm/QCPlugIn/serializedValueForKey:
+Objective-C/intfm/NSObjCTypeSerializationCallBack/serializeObjectAt:ofObjCType:intoData:
+C++/instm/IORegistryEntry/serializeProperties
+Objective-C/clm/NSSerializer/serializePropertyList:
+Objective-C/clm/NSSerializer/serializePropertyList:intoData:
+JavaScript/instm/XMLSerializer/serializeToString
+Objective-C/instm/WebPreferences/serifFontFamily
+Objective-C/instm/IMKInputController/server
+Objective-C/instm/OBEXSession/serverHandleIncomingData:
+Objective-C/instm/NSURLProtectionSpace/serverTrust
+C/func/-/ServerVendor
+C++/instm/IOBasicOutputQueue/service
+C++/instm/IOOutputQueue/service
+C++/tag/IOBasicOutputQueue/ServiceAsync
+Objective-C/clm/IOBluetoothServiceBrowserController/serviceBrowserController:
+Objective-C/clm/NSConnection/serviceConnectionWithName:rootObject:
+Objective-C/clm/NSConnection/serviceConnectionWithName:rootObject:usingNameServer:
+Objective-C/instm/NSServerNotificationCenter/serviceHost
+C++/clm/IOService/serviceMatching
+Objective-C/instm/NSMachBootstrapServer/servicePortWithName:
+Objective-C/instm/XGGSSAuthenticator/servicePrincipal
+Objective-C/instm/NSApplication/servicesMenu
+Objective-C/instm/NSApplication/servicesProvider
+C++/instm/IOBasicOutputQueue/serviceThread
+C++/instm/IOOutputQueue/serviceThread
+Objective-C/clm/IMService/serviceWithName:
+Objective-C/instm/ISyncSessionDriver/session
+Objective-C/instm/QTCaptureLayer/session
+Objective-C/instm/NSObject/sessionBeginTimeout
+Objective-C/instm/NSObject/sessionDriver:didNegotiateAndReturnError:
+Objective-C/instm/NSObject/sessionDriver:didPullAndReturnError:
+Objective-C/instm/NSObject/sessionDriver:didPushAndReturnError:
+Objective-C/instm/NSObject/sessionDriver:didReceiveSyncAlertAndReturnError:
+Objective-C/instm/NSObject/sessionDriver:didRegisterClientAndReturnError:
+Objective-C/instm/NSObject/sessionDriver:willFinishSessionAndReturnError:
+Objective-C/instm/NSObject/sessionDriver:willNegotiateAndReturnError:
+Objective-C/instm/NSObject/sessionDriver:willPullAndReturnError:
+Objective-C/instm/NSObject/sessionDriver:willPushAndReturnError:
+Objective-C/instm/NSObject/sessionDriverDidCancelSession:
+Objective-C/instm/NSObject/sessionDriverDidFinishSession:
+Objective-C/instm/NSObject/sessionDriverWillCancelSession:
+Objective-C/clm/ISyncSessionDriver/sessionDriverWithDataSource:
+Objective-C/instm/NSObject/sessionPullChangesTimeout
+JavaScript/data/DOMWindow/sessionStorage
+Objective-C/clm/ODSession/sessionWithOptions:error:
+Objective-C/instm/NSFont/set
+Objective-C/instm/NSAffineTransform/set
+Objective-C/instm/NSBrowserCell/set
+Objective-C/instm/NSColor/set
+Objective-C/instm/NSShadow/set
+Objective-C/instm/NSCursor/set
+Objective-C/clm/NSSet/set
+JavaScript/instm/FloatArray/set
+JavaScript/instm/Int8Array/set
+JavaScript/instm/Int32Array/set
+JavaScript/instm/Int16Array/set
+JavaScript/instm/Uint8Array/set
+JavaScript/instm/Uint32Array/set
+JavaScript/instm/Uint16Array/set
+C/func/-/set_current_field
+C/func/-/set_curterm
+C/func/-/set_fieldtype_arg
+C/func/-/set_fieldtype_choice
+C/func/-/set_form_opts
+C/func/-/set_form_page
+C/func/-/set_form_sub
+C/func/-/set_form_userptr
+C/func/-/set_form_win
+C/func/-/set_menu_back
+C/func/-/set_menu_fore
+C/func/-/set_menu_format
+C/func/-/set_menu_grey
+C/func/-/set_menu_items
+C/func/-/set_menu_mark
+C/func/-/set_menu_opts
+C/func/-/set_menu_pad
+C/func/-/set_menu_pattern
+C/func/-/set_menu_spacing
+C/func/-/set_menu_sub
+C/func/-/set_menu_userptr
+C/func/-/set_menu_win
+C/func/-/set_new_page
+C/func/-/set_term
+Objective-C/clm/NSTimeZone/setAbbreviationDictionary:
+Objective-C/instm/CalAlarm/setAbsoluteTrigger:
+Objective-C/instm/NSEntityDescription/setAbstract:
+C/func/-/setac
+Objective-C/instm/NSBrowser/setAcceptsArrowKeys:
+Objective-C/instm/NSTextInputContext/setAcceptsGlyphInfo:
+Objective-C/instm/NSTextView/setAcceptsGlyphInfo:
+Objective-C/instm/NSWindow/setAcceptsMouseMovedEvents:
+Objective-C/instm/NSView/setAcceptsTouchEvents:
+Objective-C/instm/NSImage/setAccessibilityDescription:
+Objective-C/instm/NSRulerView/setAccessoryView:
+Objective-C/instm/NSPageLayout/setAccessoryView:
+Objective-C/instm/NSColorPanel/setAccessoryView:
+Objective-C/instm/NSPrintOperation/setAccessoryView:
+Objective-C/instm/NSSavePanel/setAccessoryView:
+Objective-C/instm/NSAlert/setAccessoryView:
+Objective-C/instm/NSSpellChecker/setAccessoryView:
+Objective-C/instm/NSPrintPanel/setAccessoryView:
+Objective-C/instm/NSFontPanel/setAccessoryView:
+Objective-C/instm/ABPeoplePickerView/setAccessoryView:
+C++/instm/IONetworkData/setAccessTypes
+Objective-C/instm/NSPointerFunctions/setAcquireFunction:
+C++/instm/IOEventSource/setAction
+Objective-C/instm/NSToolbarItem/setAction:
+Objective-C/instm/NSActionCell/setAction:
+Objective-C/instm/NSColorPanel/setAction:
+Objective-C/instm/NSStatusItem/setAction:
+Objective-C/instm/NSFontManager/setAction:
+Objective-C/instm/PDFOutline/setAction:
+Objective-C/instm/CalAlarm/setAction:
+Objective-C/instm/IMAVControl/setAction:
+Objective-C/instm/NSMenuItem/setAction:
+Objective-C/instm/NSControl/setAction:
+Objective-C/instm/NSCell/setAction:
+Objective-C/instm/NSUndoManager/setActionName:
+Objective-C/instm/CALayer/setActions:
+Objective-C/instm/NSApplication/setActivationPolicy:
+C++/instm/IOATABusCommand/setActualTransfer
+Objective-C/instm/CAPropertyAnimation/setAdditive:
+Objective-C/instm/CalAttendee/setAddress:
+Objective-C/instm/NSFetchRequest/setAffectedStores:
+Objective-C/instm/CALayer/setAffineTransform:
+C++/instm/IOService/setAggressiveness
+Objective-C/instm/CalCalendarItem/setAlarms:
+Objective-C/instm/NSAlert/setAlertStyle:
+C/func/-/SetAliasUserType
+C/func/-/SetAliasUserTypeWithPtr
+Objective-C/instm/NSActionCell/setAlignment:
+Objective-C/instm/PDFAnnotationFreeText/setAlignment:
+Objective-C/instm/PDFAnnotationTextWidget/setAlignment:
+Objective-C/instm/NSMutableParagraphStyle/setAlignment:
+Objective-C/instm/NSControl/setAlignment:
+Objective-C/instm/NSText/setAlignment:
+Objective-C/instm/NSCell/setAlignment:
+Objective-C/instm/NSMutableAttributedString/setAlignment:range:
+Objective-C/instm/NSTextView/setAlignment:range:
+Objective-C/instm/CATextLayer/setAlignmentMode:
+Objective-C/instm/NSImage/setAlignmentRect:
+Objective-C/instm/NSMutableURLRequest/setAllHTTPHeaderFields:
+Objective-C/instm/NSSavePanel/setAllowedFileTypes:
+Objective-C/instm/NSTextInputContext/setAllowedInputSourceLocales:
+Objective-C/instm/NSTextView/setAllowedInputSourceLocales:
+Objective-C/instm/NSTextFieldCell/setAllowedInputSourceLocales:
+Objective-C/instm/NSPathCell/setAllowedTypes:
+Objective-C/instm/WebPreferences/setAllowsAnimatedImageLooping:
+Objective-C/instm/WebPreferences/setAllowsAnimatedImages:
+Objective-C/instm/NSBrowser/setAllowsBranchSelection:
+Objective-C/instm/NSTableView/setAllowsColumnReordering:
+Objective-C/instm/NSTableView/setAllowsColumnResizing:
+Objective-C/instm/NSTableView/setAllowsColumnSelection:
+Objective-C/instm/NSWindow/setAllowsConcurrentViewDrawing:
+Objective-C/instm/NSMenu/setAllowsContextMenuPlugIns:
+Objective-C/instm/NSImageView/setAllowsCutCopyPaste:
+Objective-C/instm/NSTextView/setAllowsDocumentBackgroundColorChange:
+Objective-C/instm/PDFView/setAllowsDragging:
+Objective-C/instm/PDFThumbnailView/setAllowsDragging:
+Objective-C/instm/IKImageBrowserView/setAllowsDroppingOnItems:
+Objective-C/instm/NSTextField/setAllowsEditingTextAttributes:
+Objective-C/instm/NSCell/setAllowsEditingTextAttributes:
+Objective-C/instm/QCCompositionPickerView/setAllowsEmptySelection:
+Objective-C/instm/NSMatrix/setAllowsEmptySelection:
+Objective-C/instm/NSBrowser/setAllowsEmptySelection:
+Objective-C/instm/IKImageBrowserView/setAllowsEmptySelection:
+Objective-C/instm/NSTableView/setAllowsEmptySelection:
+Objective-C/instm/NSNumberFormatter/setAllowsFloats:
+Objective-C/instm/ABPeoplePickerView/setAllowsGroupSelection:
+Objective-C/instm/NSTextView/setAllowsImageEditing:
+Objective-C/instm/NSButton/setAllowsMixedState:
+Objective-C/instm/NSCell/setAllowsMixedState:
+Objective-C/instm/ABIdentityPicker/setAllowsMultipleSelection:
+Objective-C/instm/CBIdentityPicker/setAllowsMultipleSelection:
+Objective-C/instm/PDFThumbnailView/setAllowsMultipleSelection:
+Objective-C/instm/NSOpenPanel/setAllowsMultipleSelection:
+Objective-C/instm/NSBrowser/setAllowsMultipleSelection:
+Objective-C/instm/ABPeoplePickerView/setAllowsMultipleSelection:
+Objective-C/instm/IKImageBrowserView/setAllowsMultipleSelection:
+Objective-C/instm/NSCollectionView/setAllowsMultipleSelection:
+Objective-C/instm/NSTableView/setAllowsMultipleSelection:
+Objective-C/instm/NSLayoutManager/setAllowsNonContiguousLayout:
+Objective-C/instm/NSSavePanel/setAllowsOtherFileTypes:
+Objective-C/instm/IKImageBrowserView/setAllowsReordering:
+Objective-C/instm/WebFrameView/setAllowsScrolling:
+Objective-C/instm/NSSlider/setAllowsTickMarkValuesOnly:
+Objective-C/instm/NSSliderCell/setAllowsTickMarkValuesOnly:
+Objective-C/instm/NSWindow/setAllowsToolTipsWhenApplicationIsInactive:
+Objective-C/instm/NSTabView/setAllowsTruncatedLabels:
+Objective-C/instm/NSBrowser/setAllowsTypeSelect:
+Objective-C/instm/NSTableView/setAllowsTypeSelect:
+Objective-C/instm/NSTextView/setAllowsUndo:
+Objective-C/instm/NSCell/setAllowsUndo:
+Objective-C/instm/NSToolbar/setAllowsUserCustomization:
+JavaScript/instm/CanvasRenderingContext2D/setAlpha
+Objective-C/instm/NSImageRep/setAlpha:
+Objective-C/instm/CAEmitterCell/setAlphaRange:
+Objective-C/instm/CAEmitterCell/setAlphaSpeed:
+Objective-C/instm/NSWindow/setAlphaValue:
+Objective-C/instm/NSView/setAlphaValue:
+Objective-C/instm/NSMenuItem/setAlternate:
+Objective-C/instm/SFCertificatePanel/setAlternateButtonTitle:
+Objective-C/instm/SFChooseIdentityPanel/setAlternateButtonTitle:
+Objective-C/instm/NSStatusItem/setAlternateImage:
+Objective-C/instm/NSBrowserCell/setAlternateImage:
+Objective-C/instm/NSButton/setAlternateImage:
+Objective-C/instm/NSButtonCell/setAlternateImage:
+C++/instm/IOUSBInterface/SetAlternateInterface
+Objective-C/instm/NSButtonCell/setAlternateMnemonicLocation:
+Objective-C/instm/NSButton/setAlternateTitle:
+Objective-C/instm/WebHistoryItem/setAlternateTitle:
+Objective-C/instm/NSButtonCell/setAlternateTitle:
+Objective-C/instm/NSButtonCell/setAlternateTitleWithMnemonic:
+Objective-C/instm/NSPopUpButtonCell/setAltersStateOfSelectedItem:
+Objective-C/instm/NSSlider/setAltIncrementValue:
+Objective-C/instm/NSSliderCell/setAltIncrementValue:
+Objective-C/instm/NSNumberFormatter/setAlwaysShowsDecimalSeparator:
+Objective-C/instm/NSTreeController/setAlwaysUsesMultipleValuesMarker:
+Objective-C/instm/NSArrayController/setAlwaysUsesMultipleValuesMarker:
+Objective-C/instm/NSDateFormatter/setAMSymbol:
+Objective-C/instm/CALayer/setAnchorPoint:
+Objective-C/instm/CALayer/setAnchorPointZ:
+Objective-C/instm/NSImageView/setAnimates:
+Objective-C/instm/IKImageBrowserView/setAnimates:
+Objective-C/instm/NSAnimation/setAnimationBlockingMode:
+Objective-C/instm/NSAnimation/setAnimationCurve:
+Objective-C/instm/NSProgressIndicator/setAnimationDelay:
+Objective-C/clm/CATransaction/setAnimationDuration:
+Objective-C/instm/CAAnimationGroup/setAnimations:
+Objective-C/intfm/NSAnimatablePropertyContainer/setAnimations:
+Objective-C/instm/ScreenSaverView/setAnimationTimeInterval:
+Objective-C/clm/CATransaction/setAnimationTimingFunction:
+C++/instm/IOFramebuffer/setApertureEnable
+Objective-C/instm/QTTrack/setApertureModeDimensions:forMode:
+Objective-C/instm/DRBurn(PropertyConvenienceMethods)/setAppendable:
+C/func/-/SetApplicationDockTileImage
+C/func/-/SetApplicationDockTileMenu
+Objective-C/instm/NSApplication/setApplicationIconImage:
+Objective-C/instm/WebView/setApplicationNameForUserAgent:
+Objective-C/instm/NSUserDefaultsController/setAppliesImmediately:
+Objective-C/instm/NSInvocation/setArgument:atIndex:
+Objective-C/instm/NSScriptCommand/setArguments:
+Objective-C/instm/NSTask/setArguments:
+Objective-C/instm/NSMutableArray/setArray:
+Objective-C/instm/NSPopUpButtonCell/setArrowPosition:
+Objective-C/instm/NSScroller/setArrowsPosition:
+C++/instm/IOFWPseudoAddressSpaceAux/setARxReqIntCompleteHandler
+C++/instm/IOFWPseudoAddressSpace/setARxReqIntCompleteHandler
+Objective-C/instm/FxTexture/setAsActiveTexture
+Objective-C/instm/NSWindow/setAspectRatio:
+Objective-C/instm/NSBezierPath/setAssociatedPoints:atIndex:
+Objective-C/instm/CAOpenGLLayer/setAsynchronous:
+JavaScript/instm/InspectorFrontendHost/setAttachedWindowHeight
+Objective-C/intfm/NSTextAttachmentCell/setAttachment:
+Objective-C/instm/NSTextAttachment/setAttachmentCell:
+Objective-C/instm/NSATSTypesetter/setAttachmentSize:forGlyphRange:
+Objective-C/instm/NSLayoutManager/setAttachmentSize:forGlyphRange:
+Objective-C/instm/NSTypesetter/setAttachmentSize:forGlyphRange:
+C++/instm/IOFramebuffer/setAttribute
+JavaScript/instm/Element/setAttribute
+JavaScript/instm/InspectorBackend/setAttribute
+Objective-C/instm/QTCaptureConnection/setAttribute:forKey:
+Objective-C/instm/QTCaptureDevice/setAttribute:forKey:
+Objective-C/instm/QTTrack/setAttribute:forKey:
+Objective-C/instm/QTMedia/setAttribute:forKey:
+Objective-C/instm/QTMovie/setAttribute:forKey:
+Objective-C/instm/NSButton/setAttributedAlternateTitle:
+Objective-C/instm/NSButtonCell/setAttributedAlternateTitle:
+Objective-C/instm/NSAppleEventDescriptor/setAttributeDescriptor:forKeyword:
+Objective-C/instm/NSATSTypesetter/setAttributedString:
+Objective-C/instm/NSTypesetter/setAttributedString:
+Objective-C/instm/NSMutableAttributedString/setAttributedString:
+Objective-C/instm/NSNumberFormatter/setAttributedStringForNil:
+Objective-C/instm/NSNumberFormatter/setAttributedStringForNotANumber:
+Objective-C/instm/NSNumberFormatter/setAttributedStringForZero:
+Objective-C/instm/NSControl/setAttributedStringValue:
+Objective-C/instm/NSCell/setAttributedStringValue:
+Objective-C/instm/NSFormCell/setAttributedTitle:
+Objective-C/instm/NSButton/setAttributedTitle:
+Objective-C/instm/NSStatusItem/setAttributedTitle:
+Objective-C/instm/NSButtonCell/setAttributedTitle:
+Objective-C/instm/NSMenuItem/setAttributedTitle:
+C++/instm/IOFramebuffer/setAttributeForConnection
+Objective-C/instm/NSEntityMapping/setAttributeMappings:
+JavaScript/instm/Element/setAttributeNode
+JavaScript/instm/Element/setAttributeNodeNS
+JavaScript/instm/Element/setAttributeNS
+Objective-C/instm/NSTextStorage/setAttributeRuns:
+Objective-C/instm/NSXMLElement/setAttributes:
+Objective-C/instm/IMKCandidates/setAttributes:
+Objective-C/instm/NSOpenGLPixelFormat/setAttributes:
+Objective-C/instm/CIFilterGenerator/setAttributes:forExportedKey:
+Objective-C/instm/NSFileManager/setAttributes:ofItemAtPath:error:
+Objective-C/instm/NSMutableAttributedString/setAttributes:range:
+Objective-C/instm/NSXMLElement/setAttributesAsDictionary:
+Objective-C/instm/NSAttributeDescription/setAttributeType:
+Objective-C/instm/NSAttributeDescription/setAttributeValueClassName:
+C/func/-/setattrlist
+C/func/-/setauclass
+C/macro/-/SetAudioUnitParameterDisplayType
+C/func/-/setaudit
+C/func/-/setaudit_addr
+C/func/-/setauevent
+C/func/-/setauid
+Objective-C/instm/XGConnection/setAuthenticator:
+Objective-C/instm/SFAuthorizationView/setAuthorizationRights:
+Objective-C/instm/NSWindow/setAutodisplay:
+Objective-C/instm/NSPopUpButtonCell/setAutoenablesItems:
+Objective-C/instm/NSPopUpButton/setAutoenablesItems:
+Objective-C/instm/NSMenu/setAutoenablesItems:
+Objective-C/instm/NSBrowser/setAutohidesScroller:
+Objective-C/instm/NSScrollView/setAutohidesScrollers:
+Objective-C/instm/IKImageView/setAutohidesScrollers:
+Objective-C/instm/QTCaptureDecompressedVideoOutput/setAutomaticallyDropsLateVideoFrames:
+Objective-C/instm/NSSpellChecker/setAutomaticallyIdentifiesLanguages:
+Objective-C/instm/NSObjectController/setAutomaticallyPreparesContent:
+Objective-C/instm/NSArrayController/setAutomaticallyPreparesContent:
+Objective-C/instm/NSArrayController/setAutomaticallyRearrangesObjects:
+Objective-C/instm/NSTextView/setAutomaticDashSubstitutionEnabled:
+Objective-C/instm/NSTextView/setAutomaticDataDetectionEnabled:
+Objective-C/instm/NSTextView/setAutomaticLinkDetectionEnabled:
+Objective-C/instm/NSTextView/setAutomaticQuoteSubstitutionEnabled:
+Objective-C/instm/NSTextView/setAutomaticSpellingCorrectionEnabled:
+Objective-C/instm/NSTextView/setAutomaticTextReplacementEnabled:
+Objective-C/instm/IKSlideshow/setAutoPlayDelay:
+Objective-C/instm/NSWindow/setAutorecalculatesContentBorderThickness:forEdge:
+Objective-C/instm/NSWindow/setAutorecalculatesKeyViewLoop:
+Objective-C/instm/NSStepper/setAutorepeat:
+Objective-C/instm/NSStepperCell/setAutorepeat:
+Objective-C/instm/IKImageView/setAutoresizes:
+Objective-C/instm/NSTableView/setAutoresizesAllColumnsToFit:
+Objective-C/instm/NSOutlineView/setAutoresizesOutlineColumn:
+Objective-C/instm/NSView/setAutoresizesSubviews:
+Objective-C/instm/NSView/setAutoresizingMask:
+Objective-C/instm/CALayer/setAutoresizingMask:
+Objective-C/intfm/CAMediaTiming/setAutoreverses:
+Objective-C/instm/NSDocument/setAutosavedContentsFileURL:
+Objective-C/instm/NSOutlineView/setAutosaveExpandedItems:
+Objective-C/instm/ABPeoplePickerView/setAutosaveName:
+Objective-C/instm/NSSplitView/setAutosaveName:
+Objective-C/instm/NSTableView/setAutosaveName:
+Objective-C/instm/WebPreferences/setAutosaves:
+Objective-C/instm/NSToolbar/setAutosavesConfiguration:
+Objective-C/instm/NSTableView/setAutosaveTableColumns:
+Objective-C/instm/NSDocumentController/setAutosavingDelay:
+Objective-C/instm/PDFView/setAutoScales:
+Objective-C/instm/NSMatrix/setAutoscroll:
+C++/instm/IOSCSIParallelInterfaceController/SetAutoSenseData
+Objective-C/instm/NSMatrix/setAutosizesCells:
+Objective-C/instm/QCView/setAutostartsRendering:
+C/func/-/SetAutoTrackAlternatesEnabled
+Objective-C/instm/SFAuthorizationView/setAutoupdate:
+Objective-C/instm/SFAuthorizationView/setAutoupdate:interval:
+Objective-C/instm/NSToolbarItem/setAutovalidates:
+C/func/-/setauuser
+C++/instm/IOFireWirePCRSpace/setAVCTargetSpacePointer
+Objective-C/instm/NSTreeController/setAvoidsEmptySelection:
+Objective-C/instm/NSArrayController/setAvoidsEmptySelection:
+C/func/-/setAwaitingAck
+Objective-C/instm/QTMovieView/setBackButtonVisible:
+Objective-C/instm/NSScrollView/setBackgroundColor:
+Objective-C/instm/NSClipView/setBackgroundColor:
+Objective-C/instm/QCCompositionPickerView/setBackgroundColor:
+Objective-C/instm/QCCompositionParameterView/setBackgroundColor:
+Objective-C/instm/PDFThumbnailView/setBackgroundColor:
+Objective-C/instm/PDFAnnotationButtonWidget/setBackgroundColor:
+Objective-C/instm/PDFView/setBackgroundColor:
+Objective-C/instm/PDFAnnotationTextWidget/setBackgroundColor:
+Objective-C/instm/PDFAnnotationChoiceWidget/setBackgroundColor:
+Objective-C/instm/NSDatePicker/setBackgroundColor:
+Objective-C/instm/NSMatrix/setBackgroundColor:
+Objective-C/instm/NSDatePickerCell/setBackgroundColor:
+Objective-C/instm/NSButtonCell/setBackgroundColor:
+Objective-C/instm/NSTextBlock/setBackgroundColor:
+Objective-C/instm/NSPathCell/setBackgroundColor:
+Objective-C/instm/NSBrowser/setBackgroundColor:
+Objective-C/instm/NSTextField/setBackgroundColor:
+Objective-C/instm/NSTextView/setBackgroundColor:
+Objective-C/instm/NSImage/setBackgroundColor:
+Objective-C/instm/NSPathControl/setBackgroundColor:
+Objective-C/instm/NSWindow/setBackgroundColor:
+Objective-C/instm/NSTableView/setBackgroundColor:
+Objective-C/instm/NSText/setBackgroundColor:
+Objective-C/instm/NSTextFieldCell/setBackgroundColor:
+Objective-C/instm/CALayer/setBackgroundColor:
+Objective-C/instm/IKImageView/setBackgroundColor:
+Objective-C/instm/NSCollectionView/setBackgroundColors:
+Objective-C/instm/NSView/setBackgroundFilters:
+Objective-C/instm/CALayer/setBackgroundFilters:
+Objective-C/instm/IKImageBrowserView/setBackgroundLayer:
+Objective-C/instm/NSLayoutManager/setBackgroundLayoutEnabled:
+Objective-C/instm/NSCell/setBackgroundStyle:
+Objective-C/instm/NSWindow/setBackingType:
+Objective-C/instm/NSDockTile/setBadgeLabel:
+JavaScript/instm/DOMSelection/setBaseAndExtent
+Objective-C/instm/DRFSObject/setBaseName:
+Objective-C/instm/NSRelativeSpecifier/setBaseSpecifier:
+Objective-C/instm/NSMutableParagraphStyle/setBaseWritingDirection:
+Objective-C/instm/NSControl/setBaseWritingDirection:
+Objective-C/instm/NSText/setBaseWritingDirection:
+Objective-C/instm/NSCell/setBaseWritingDirection:
+Objective-C/instm/NSMutableAttributedString/setBaseWritingDirection:range:
+Objective-C/instm/NSTextView/setBaseWritingDirection:range:
+Objective-C/instm/NSPanel/setBecomesKeyOnlyIfNeeded:
+Objective-C/intfm/CAMediaTiming/setBeginTime:
+Objective-C/instm/NSForm/setBezeled:
+Objective-C/instm/NSActionCell/setBezeled:
+Objective-C/instm/NSProgressIndicator/setBezeled:
+Objective-C/instm/NSDatePicker/setBezeled:
+Objective-C/instm/NSTextField/setBezeled:
+Objective-C/instm/NSCell/setBezeled:
+Objective-C/instm/NSButton/setBezelStyle:
+Objective-C/instm/NSButtonCell/setBezelStyle:
+Objective-C/instm/NSTextField/setBezelStyle:
+Objective-C/instm/NSTextFieldCell/setBezelStyle:
+Objective-C/instm/NSATSTypesetter/setBidiLevels:forGlyphRange:
+Objective-C/instm/NSTypesetter/setBidiLevels:forGlyphRange:
+Objective-C/instm/NSATSTypesetter/setBidiProcessingEnabled:
+Objective-C/instm/NSTypesetter/setBidiProcessingEnabled:
+Objective-C/instm/CAEmitterLayer/setBirthRate:
+Objective-C/instm/CAEmitterCell/setBirthRate:
+Objective-C/instm/NSImageRep/setBitsPerSample:
+C/func/-/SetBLASParamErrorProc
+Objective-C/instm/NSSpeechRecognizer/setBlocksOtherRecognizers:
+Objective-C/instm/CAEmitterCell/setBlueRange:
+Objective-C/instm/CAEmitterCell/setBlueSpeed:
+Objective-C/instm/NSUserDefaults/setBool:forKey:
+Objective-C/intfm/FxParameterSettingAPI/setBoolValue:toParm:atTime:
+Objective-C/instm/PDFAnnotation/setBorder:
+Objective-C/instm/NSBox/setBorderColor:
+Objective-C/instm/NSTextBlock/setBorderColor:
+Objective-C/instm/CALayer/setBorderColor:
+Objective-C/instm/NSTextBlock/setBorderColor:forEdge:
+Objective-C/instm/NSForm/setBordered:
+Objective-C/instm/NSActionCell/setBordered:
+Objective-C/instm/NSColorWell/setBordered:
+Objective-C/instm/NSButton/setBordered:
+Objective-C/instm/NSDatePicker/setBordered:
+Objective-C/instm/NSTextField/setBordered:
+Objective-C/instm/NSCell/setBordered:
+Objective-C/instm/NSScrollView/setBorderType:
+Objective-C/instm/NSBox/setBorderType:
+Objective-C/instm/NSBox/setBorderWidth:
+Objective-C/instm/CALayer/setBorderWidth:
+Objective-C/instm/NSPrintInfo/setBottomMargin:
+Objective-C/instm/PDFAnnotation/setBounds:
+Objective-C/instm/CARenderer/setBounds:
+Objective-C/instm/NSView/setBounds:
+Objective-C/instm/CALayer/setBounds:
+Objective-C/instm/PDFPage/setBounds:forBox:
+Objective-C/instm/NSView/setBoundsOrigin:
+Objective-C/instm/NSLayoutManager/setBoundsRect:forTextBlock:glyphRange:
+Objective-C/instm/NSView/setBoundsRotation:
+Objective-C/instm/NSView/setBoundsSize:
+Objective-C/instm/NSBox/setBoxType:
+JavaScript/instm/InspectorBackend/setBreakpoint
+C/func/-/setbuf
+C/func/-/setbuffer
+C++/instm/IOATACommand/setBuffer
+C++/instm/IOFireWireSBP2ORB/setBufferConstraints
+C++/instm/IOStreamBuffer/setBufferID
+C++/instm/IOPCIDevice/setBusMasterEnable
+Objective-C/instm/SFAuthorizationPluginView/setButton:enabled:
+Objective-C/instm/NSComboBox/setButtonBordered:
+Objective-C/instm/NSComboBoxCell/setButtonBordered:
+Objective-C/instm/NSButton/setButtonType:
+Objective-C/instm/NSButtonCell/setButtonType:
+Objective-C/instm/NSSet/setByAddingObject:
+Objective-C/instm/NSSet/setByAddingObjectsFromArray:
+Objective-C/instm/NSSet/setByAddingObjectsFromSet:
+C++/instm/IOATACommand/setByteCount
+Objective-C/instm/FxImage/setBytes:
+Objective-C/instm/CABasicAnimation/setByValue:
+Objective-C/instm/NSImage/setCacheDepthMatchesImageDepth:
+Objective-C/instm/NSImage/setCachedSeparately:
+Objective-C/instm/NSImage/setCacheMode:
+Objective-C/instm/WebPreferences/setCacheModel:
+Objective-C/instm/NSMutableURLRequest/setCachePolicy:
+Objective-C/instm/NSBezierPath/setCachesBezierPath:
+Objective-C/instm/CAKeyframeAnimation/setCalculationMode:
+Objective-C/instm/CalCalendarItem/setCalendar:
+Objective-C/instm/NSDatePicker/setCalendar:
+Objective-C/instm/NSDateFormatter/setCalendar:
+Objective-C/instm/NSDatePickerCell/setCalendar:
+C++/instm/IOATACommand/setCallbackPtr
+Objective-C/instm/IKCameraDeviceView/setCameraDevice:
+Objective-C/instm/NSWindow/setCanBecomeVisibleWithoutLogin:
+Objective-C/instm/NSWindow/setCanBeVisibleOnAllSpaces:
+Objective-C/instm/NSSearchFieldCell/setCancelButtonCell:
+Objective-C/instm/NSOpenPanel/setCanChooseDirectories:
+Objective-C/instm/NSOpenPanel/setCanChooseFiles:
+Objective-C/instm/IKImageBrowserView/setCanControlQuickLookPanel:
+Objective-C/instm/NSSavePanel/setCanCreateDirectories:
+Objective-C/instm/NSView/setCanDrawConcurrently:
+Objective-C/instm/NSWindow/setCanHide:
+Objective-C/instm/NSRuleEditor/setCanRemoveAllRows:
+Objective-C/instm/DRBurnSetupPanel/setCanSelectAppendableMedia:
+Objective-C/instm/NSSavePanel/setCanSelectHiddenExtension:
+Objective-C/instm/DRBurnSetupPanel/setCanSelectTestBurn:
+Objective-C/instm/NSPrintOperation/setCanSpawnSeparateThread:
+C++/instm/IOBasicOutputQueue/setCapacity
+C++/instm/IOOutputQueue/setCapacity
+C++/instm/IOPacketQueue/setCapacity
+Objective-C/instm/WebBackForwardList/setCapacity:
+C++/instm/OSArray/setCapacityIncrement
+C++/instm/OSCollection/setCapacityIncrement
+C++/instm/OSDictionary/setCapacityIncrement
+C++/instm/OSData/setCapacityIncrement
+C++/instm/OSOrderedSet/setCapacityIncrement
+C++/instm/OSSet/setCapacityIncrement
+Objective-C/instm/PDFAnnotationButtonWidget/setCaption:
+Objective-C/instm/QTCaptureView/setCaptureSession:
+Objective-C/instm/NSScanner/setCaseSensitive:
+C/func/-/setcchar
+Objective-C/instm/NSControl/setCell:
+Objective-C/instm/NSCell/setCellAttribute:to:
+Objective-C/instm/NSMatrix/setCellBackgroundColor:
+Objective-C/instm/NSMatrix/setCellClass:
+Objective-C/clm/NSControl/setCellClass:
+Objective-C/instm/NSBrowser/setCellClass:
+Objective-C/instm/NSBrowser/setCellPrototype:
+Objective-C/instm/NSMatrix/setCellSize:
+Objective-C/instm/IKImageBrowserView/setCellSize:
+Objective-C/instm/IKImageBrowserView/setCellsStyleMask:
+Objective-C/instm/SFCertificateView/setCertificate:
+Objective-C/instm/CWInterface/setChannel:error:
+C++/instm/IOAudioControl/setChannelID
+Objective-C/instm/NSSound/setChannelMapping:
+C++/instm/IOAudioControl/setChannelName
+C++/instm/OSString/setChar
+Objective-C/instm/NSXMLDocument/setCharacterEncoding:
+Objective-C/instm/NSLayoutManager/setCharacterIndex:forGlyphAtIndex:
+Objective-C/instm/NSTextStorage/setCharacters:
+Objective-C/instm/NSScanner/setCharactersToBeSkipped:
+C++/instm/IONetworkController/setChecksumResult
+C/func/-/setChildHasRequestedPower
+Objective-C/instm/NSXMLDTD/setChildren:
+Objective-C/instm/NSXMLDocument/setChildren:
+Objective-C/instm/NSXMLElement/setChildren:
+Objective-C/instm/NSTreeController/setChildrenKeyPath:
+Objective-C/instm/NSScriptObjectSpecifier/setChildSpecifier:
+Objective-C/instm/PDFAnnotationChoiceWidget/setChoices:
+Objective-C/instm/NSKeyedUnarchiver/setClass:forClassName:
+Objective-C/clm/NSKeyedUnarchiver/setClass:forClassName:
+Objective-C/instm/CIFilterGenerator/setClassAttributes:
+Objective-C/instm/NSKeyedArchiver/setClassName:forClass:
+Objective-C/clm/NSKeyedArchiver/setClassName:forClass:
+Objective-C/instm/IOBluetoothHostController/setClassOfDevice:forTimeInterval:
+Objective-C/instm/NSArrayController/setClearsFilterPredicateOnInsertion:
+Objective-C/instm/NSTextInputContext/setClient:
+Objective-C/instm/ISyncSession/setClientInfo:forRecordWithIdentifier:
+Objective-C/instm/NSRulerView/setClientView:
+Objective-C/instm/NSBezierPath/setClip
+C++/instm/IOAudioEngine/setClockDomain
+C++/instm/IOAudioEngine/setClockIsStable
+C++/instm/IOFramebuffer/setCLUTWithEntries
+Objective-C/instm/NSTextTable/setCollapsesBorders:
+Objective-C/instm/NSWindow/setCollectionBehavior:
+JavaScript/instm/SVGColor/setColor
+Objective-C/instm/NSColorPanel/setColor:
+Objective-C/instm/NSColorWell/setColor:
+Objective-C/instm/PDFAnnotation/setColor:
+Objective-C/instm/PDFSelection/setColor:
+Objective-C/instm/CalCalendar/setColor:
+Objective-C/intfm/NSColorPickingCustom/setColor:
+Objective-C/instm/CAEmitterCell/setColor:
+Objective-C/instm/NSTabViewItem/setColor:
+Objective-C/instm/NSBitmapImageRep/setColor:atX:y:
+Objective-C/instm/NSColorList/setColor:forKey:
+Objective-C/instm/NSGraphicsContext/setColorRenderingIntent:
+Objective-C/instm/CAGradientLayer/setColors:
+Objective-C/instm/NSWindow/setColorSpace:
+Objective-C/instm/NSImageRep/setColorSpaceName:
+Objective-C/instm/NSTableView/setColumnAutoresizingStyle:
+Objective-C/instm/NSBrowser/setColumnResizingType:
+Objective-C/instm/NSBrowser/setColumnsAutosaveName:
+Objective-C/instm/ABPeoplePickerView/setColumnTitle:forProperty:
+C++/instm/IOATACommand/setCommand
+C++/instm/IOExtendedLBA/setCommand
+C++/instm/IOFireWireSBP2ORB/setCommandBlock
+C++/instm/IOFireWireSerialBusProtocolTransport/SetCommandBuffers
+C++/instm/IOFireWireSBP2ORB/setCommandBuffers
+C++/instm/IOFireWireSBP2ORB/setCommandBuffersAsRanges
+C++/instm/IOFireWireSBP2ORB/setCommandBuffersAsRanges64
+C++/instm/IOFireWireSBP2ORB/setCommandFlags
+C++/instm/IOFireWireSBP2ORB/setCommandGeneration
+C++/instm/IOATABusCommand/setCommandInUse
+Objective-C/instm/NSSpeechRecognizer/setCommands:
+C++/instm/IOFireWireSBP2ORB/setCommandTimeout
+Objective-C/instm/CalAttendee/setCommonName:
+Objective-C/instm/CalTask/setCompletedDate:
+Objective-C/instm/NSComboBox/setCompletes:
+Objective-C/instm/NSComboBoxCell/setCompletes:
+Objective-C/instm/DRBurn(PropertyConvenienceMethods)/setCompletionAction:
+Objective-C/instm/NSOperation/setCompletionBlock:
+Objective-C/clm/CATransaction/setCompletionBlock:
+Objective-C/instm/NSTokenField/setCompletionDelay:
+Objective-C/instm/NSTokenFieldCell/setCompletionDelay:
+C/func/-/SetComponentInstanceError
+C/func/-/SetComponentInstanceStorage
+C/func/-/SetComponentRefcon
+JavaScript/instm/CanvasRenderingContext2D/setCompositeOperation
+Objective-C/instm/NSView/setCompositingFilter:
+Objective-C/instm/CALayer/setCompositingFilter:
+Objective-C/instm/NSGraphicsContext/setCompositingOperation:
+Objective-C/instm/QCCompositionPickerView/setCompositionAspectRatio:
+Objective-C/instm/QCCompositionParameterView/setCompositionRenderer:
+Objective-C/instm/QCCompositionPickerView/setCompositionsFromRepositoryWithProtocol:andAttributes:
+C/func/-/SetCompressedPixMapInfo
+Objective-C/instm/NSBitmapImageRep/setCompression:factor:
+Objective-C/instm/QTCaptureFileOutput/setCompressionOptions:forConnection:
+C++/instm/IOPCIDevice/setConfigBits
+C++/instm/IOUSBDevice/SetConfiguration
+C++/instm/IOUSBCompositeDriver/SetConfiguration
+C++/instm/IOAudioDevice/setConfigurationApplicationBundle
+Objective-C/instm/NSToolbar/setConfigurationFromDictionary:
+Objective-C/instm/QTCaptureConnection/setConnectionAttributes:
+Objective-C/instm/NSTextView/setConstrainedFrameSize:
+Objective-C/instm/IKImageBrowserView/setConstrainsToOriginalSize:
+Objective-C/instm/CALayer/setConstraints:
+Objective-C/instm/NSScriptObjectSpecifier/setContainerClassDescription:
+Objective-C/instm/NSScriptObjectSpecifier/setContainerIsObjectBeingTested:
+Objective-C/instm/NSScriptObjectSpecifier/setContainerIsRangeContainerObject:
+Objective-C/instm/NSTextContainer/setContainerSize:
+Objective-C/instm/NSScriptObjectSpecifier/setContainerSpecifier:
+Objective-C/instm/NSTreeController/setContent:
+Objective-C/instm/NSObjectController/setContent:
+Objective-C/instm/NSCollectionView/setContent:
+Objective-C/instm/NSWindow/setContentAspectRatio:
+Objective-C/instm/NSWindow/setContentBorderThickness:forEdge:
+Objective-C/instm/NSView/setContentFilters:
+Objective-C/instm/NSWindow/setContentMaxSize:
+Objective-C/instm/NSWindow/setContentMinSize:
+Objective-C/instm/NSWindow/setContentResizeIncrements:
+Objective-C/instm/IKImageBrowserView/setContentResizingMask:
+Objective-C/instm/PDFAnnotation/setContents:
+Objective-C/instm/CAEmitterCell/setContents:
+Objective-C/instm/CALayer/setContents:
+Objective-C/instm/CALayer/setContentsCenter:
+Objective-C/instm/CALayer/setContentsGravity:
+Objective-C/instm/NSDrawer/setContentSize:
+Objective-C/instm/NSWindow/setContentSize:
+Objective-C/instm/CAEmitterCell/setContentsRect:
+Objective-C/instm/CALayer/setContentsRect:
+Objective-C/instm/NSScrollView/setContentView:
+Objective-C/instm/NSBox/setContentView:
+Objective-C/instm/NSDrawer/setContentView:
+Objective-C/instm/NSDockTile/setContentView:
+Objective-C/instm/NSWindow/setContentView:
+Objective-C/instm/NSBox/setContentViewMargins:
+Objective-C/instm/NSTextBlock/setContentWidth:type:
+C/func/-/setcontext
+Objective-C/instm/NSHelpManager/setContextHelp:forObject:
+Objective-C/clm/NSHelpManager/setContextHelpModeActive:
+Objective-C/instm/NSMenu/setContextMenuRepresentation:
+C/func/-/SetContextValue
+Objective-C/instm/NSColorPanel/setContinuous:
+Objective-C/instm/NSControl/setContinuous:
+Objective-C/instm/NSCell/setContinuous:
+Objective-C/instm/NSTextView/setContinuousSpellCheckingEnabled:
+Objective-C/instm/WebView/setContinuousSpellCheckingEnabled:
+C++/instm/IOStreamBuffer/setControlBuffer
+C++/instm/IOAudioControl/setControlID
+C++/instm/IOSCSIParallelInterfaceController/SetControllerTaskIdentifier
+Objective-C/instm/QTMovieView/setControllerVisible:
+Objective-C/instm/NSScroller/setControlSize:
+Objective-C/instm/NSProgressIndicator/setControlSize:
+Objective-C/instm/NSPathCell/setControlSize:
+Objective-C/instm/NSTabView/setControlSize:
+Objective-C/instm/NSCell/setControlSize:
+Objective-C/instm/NSScroller/setControlTint:
+Objective-C/instm/NSProgressIndicator/setControlTint:
+Objective-C/instm/NSTabView/setControlTint:
+Objective-C/instm/NSCell/setControlTint:
+Objective-C/instm/PDFAnnotationButtonWidget/setControlType:
+Objective-C/instm/NSActionCell/setControlView:
+Objective-C/instm/NSCell/setControlView:
+Objective-C/instm/NSHTTPCookieStorage/setCookie:
+Objective-C/instm/NSHTTPCookieStorage/setCookieAcceptPolicy:
+Objective-C/instm/NSHTTPCookieStorage/setCookies:forURL:mainDocumentURL:
+Objective-C/instm/NSClipView/setCopiesOnScroll:
+Objective-C/instm/NSBox/setCornerRadius:
+Objective-C/instm/CALayer/setCornerRadius:
+Objective-C/instm/NSTableView/setCornerView:
+Objective-C/instm/NSPointerArray/setCount:
+Objective-C/instm/NSTreeController/setCountKeyPath:
+Objective-C/instm/NSCache/setCountLimit:
+Objective-C/instm/CLLocation/setCourse:
+Objective-C/instm/NSURLCredentialStorage/setCredential:forProtectionSpace:
+Objective-C/instm/ODNode/setCredentialsUsingKerberosCache:error:
+Objective-C/instm/ODNode/setCredentialsWithRecordType:authenticationType:authenticationItems:continueItems:context:error:
+Objective-C/instm/ODNode/setCredentialsWithRecordType:recordName:password:error:
+Objective-C/instm/NSRuleEditor/setCriteria:andDisplayValues:forRowAtIndex:
+Objective-C/instm/NSRuleEditor/setCriteriaKeyPath:
+Objective-C/instm/NSLevelIndicator/setCriticalValue:
+Objective-C/instm/NSLevelIndicatorCell/setCriticalValue:
+C/func/-/SetCSequenceDataRateParams
+C/func/-/SetCSequenceFlushProc
+C/func/-/SetCSequenceFrameNumber
+C/func/-/SetCSequenceKeyFrameRate
+C/func/-/SetCSequencePreferredPacketSize
+C/func/-/SetCSequencePrev
+C/func/-/SetCSequenceQuality
+Objective-C/instm/CAPropertyAnimation/setCumulative:
+Objective-C/instm/NSNumberFormatter/setCurrencyCode:
+Objective-C/instm/NSNumberFormatter/setCurrencyDecimalSeparator:
+Objective-C/instm/NSNumberFormatter/setCurrencyGroupingSeparator:
+Objective-C/instm/NSNumberFormatter/setCurrencySymbol:
+Objective-C/instm/NSAppleEventManager/setCurrentAppleEventAndReplyEventWithSuspensionID:
+Objective-C/clm/NSGraphicsContext/setCurrentContext:
+Objective-C/instm/QLPreviewPanel/setCurrentController:
+Objective-C/instm/NSTask/setCurrentDirectoryPath:
+Objective-C/clm/NSPrintOperation/setCurrentOperation:
+Objective-C/instm/NSPDFImageRep/setCurrentPage:
+Objective-C/instm/QLPreviewPanel/setCurrentPreviewItem:
+Objective-C/instm/QLPreviewPanel/setCurrentPreviewItemIndex:
+Objective-C/instm/NSAnimation/setCurrentProgress:
+Objective-C/instm/PDFView/setCurrentSelection:
+Objective-C/instm/PDFView/setCurrentSelection:animate:
+JavaScript/instm/SVGSVGElement/setCurrentTime
+Objective-C/instm/NSSound/setCurrentTime:
+Objective-C/instm/QTMovie/setCurrentTime:
+Objective-C/instm/IKImageView/setCurrentToolMode:
+Objective-C/instm/NSOpenGLContext/setCurrentVirtualScreen:
+Objective-C/instm/WebPreferences/setCursiveFontFamily:
+Objective-C/instm/PDFView/setCursorForAreaOfInterest:
+C++/instm/IOFramebuffer/setCursorImage
+C++/instm/IOFramebuffer/setCursorState
+Objective-C/instm/QTMovieView/setCustomButtonVisible:
+Objective-C/intfm/FxParameterSettingAPI/setCustomParameterValue:toParm:
+Objective-C/instm/WebView/setCustomTextEncodingName:
+Objective-C/instm/WebView/setCustomUserAgent:
+JavaScript/instm/HTMLFieldSetElement/setCustomValidity
+JavaScript/instm/HTMLInputElement/setCustomValidity
+JavaScript/instm/HTMLTextAreaElement/setCustomValidity
+JavaScript/instm/HTMLSelectElement/setCustomValidity
+JavaScript/instm/HTMLButtonElement/setCustomValidity
+Objective-C/intfm/AUCustomViewPersistentData/setCustomViewPersistentData:
+C++/instm/IOATACommand/setCylHi
+C++/instm/IOATACommand/setCylLo
+Objective-C/instm/PDFBorder/setDashPattern:
+JavaScript/instm/Clipboard/setData
+Objective-C/instm/NSMutableData/setData:
+Objective-C/instm/FxTexture/setData:
+Objective-C/instm/NSPasteboardItem/setData:forType:
+Objective-C/instm/NSPasteboard/setData:forType:
+C/func/-/SetDataBrowserActiveItems
+C/func/-/SetDataBrowserCallbacks
+C/func/-/SetDataBrowserColumnViewDisplayType
+C/func/-/SetDataBrowserColumnViewPath
+C/func/-/SetDataBrowserCustomCallbacks
+C/func/-/SetDataBrowserEditItem
+C/func/-/SetDataBrowserEditText
+C/func/-/SetDataBrowserHasScrollBars
+C/func/-/SetDataBrowserItemDataBooleanValue
+C/func/-/SetDataBrowserItemDataButtonValue
+C/func/-/SetDataBrowserItemDataDateTime
+C/func/-/SetDataBrowserItemDataDrawState
+C/func/-/SetDataBrowserItemDataIcon
+C/func/-/SetDataBrowserItemDataIconTransform
+C/func/-/SetDataBrowserItemDataItemID
+C/func/-/SetDataBrowserItemDataLongDateTime
+C/func/-/SetDataBrowserItemDataMaximum
+C/func/-/SetDataBrowserItemDataMenuRef
+C/func/-/SetDataBrowserItemDataMinimum
+C/func/-/SetDataBrowserItemDataRGBColor
+C/func/-/SetDataBrowserItemDataText
+C/func/-/SetDataBrowserItemDataValue
+C/func/-/SetDataBrowserListViewDisclosureColumn
+C/func/-/SetDataBrowserListViewHeaderBtnHeight
+C/func/-/SetDataBrowserListViewHeaderDesc
+C/func/-/SetDataBrowserListViewUsePlainBackground
+C/func/-/SetDataBrowserPropertyFlags
+C/func/-/SetDataBrowserScrollBarInset
+C/func/-/SetDataBrowserScrollPosition
+C/func/-/SetDataBrowserSelectedItems
+C/func/-/SetDataBrowserSelectionFlags
+C/func/-/SetDataBrowserSortOrder
+C/func/-/SetDataBrowserSortProperty
+C/func/-/SetDataBrowserTableViewColumnPosition
+C/func/-/SetDataBrowserTableViewColumnWidth
+C/func/-/SetDataBrowserTableViewGeometry
+C/func/-/SetDataBrowserTableViewHiliteStyle
+C/func/-/SetDataBrowserTableViewItemRow
+C/func/-/SetDataBrowserTableViewItemRowHeight
+C/func/-/SetDataBrowserTableViewNamedColumnWidth
+C/func/-/SetDataBrowserTableViewRowHeight
+C/func/-/SetDataBrowserTarget
+C/func/-/SetDataBrowserUserState
+C/func/-/SetDataBrowserViewStyle
+C++/instm/IOStreamBuffer/setDataBuffer
+Objective-C/instm/NSTableColumn/setDataCell:
+Objective-C/instm/NSPasteboardItem/setDataProvider:forTypes:
+Objective-C/instm/FxBitmap/setDataPtr:
+Objective-C/instm/QTDataReference/setDataRef:
+Objective-C/instm/QTDataReference/setDataRefType:
+Objective-C/instm/NSImage/setDataRetained:
+Objective-C/instm/NSComboBox/setDataSource:
+Objective-C/instm/NSComboBoxCell/setDataSource:
+Objective-C/instm/QLPreviewPanel/setDataSource:
+Objective-C/instm/IKImageBrowserView/setDataSource:
+Objective-C/instm/IKImageEditPanel/setDataSource:
+Objective-C/instm/NSTableView/setDataSource:
+Objective-C/intfm/WebDocumentRepresentation/setDataSource:
+Objective-C/intfm/WebDocumentView/setDataSource:
+Objective-C/instm/NSOutlineView/setDataSource:
+Objective-C/instm/NSDateFormatter/setDateFormat:
+Objective-C/instm/NSDatePicker/setDatePickerElements:
+Objective-C/instm/NSDatePickerCell/setDatePickerElements:
+Objective-C/instm/NSDatePicker/setDatePickerMode:
+Objective-C/instm/NSDatePickerCell/setDatePickerMode:
+Objective-C/instm/NSDatePicker/setDatePickerStyle:
+Objective-C/instm/NSDatePickerCell/setDatePickerStyle:
+Objective-C/instm/CalCalendarItem/setDateStamp:
+Objective-C/instm/NSDateFormatter/setDateStyle:
+Objective-C/instm/NSDatePicker/setDateValue:
+Objective-C/instm/NSDatePickerCell/setDateValue:
+Objective-C/instm/NSDateComponents/setDay:
+Objective-C/instm/CalNthWeekDay/setDayOfTheWeek:
+C++/instm/IOFramebuffer/setDDCClock
+C++/instm/IOFramebuffer/setDDCData
+Objective-C/instm/NSNumberFormatter/setDecimalSeparator:
+Objective-C/instm/NSLayoutManager/setDefaultAttachmentScaling:
+Objective-C/clm/NSDecimalNumber/setDefaultBehavior:
+Objective-C/instm/NSWindow/setDefaultButtonCell:
+Objective-C/instm/SFCertificatePanel/setDefaultButtonTitle:
+Objective-C/instm/NSPrintPanel/setDefaultButtonTitle:
+Objective-C/instm/DRBurnSetupPanel/setDefaultButtonTitle:
+Objective-C/instm/SFChooseIdentityPanel/setDefaultButtonTitle:
+Objective-C/instm/NSBrowser/setDefaultColumnWidth:
+C/func/-/SetDefaultComponent
+Objective-C/instm/NSURLCredentialStorage/setDefaultCredential:forProtectionSpace:
+Objective-C/instm/NSDateFormatter/setDefaultDate:
+Objective-C/instm/WebPreferences/setDefaultFixedFontSize:
+Objective-C/clm/NSBezierPath/setDefaultFlatness:
+Objective-C/instm/WebPreferences/setDefaultFontSize:
+Objective-C/clm/NSDateFormatter/setDefaultFormatterBehavior:
+Objective-C/clm/NSNumberFormatter/setDefaultFormatterBehavior:
+Objective-C/clm/NSBezierPath/setDefaultLineCapStyle:
+Objective-C/clm/NSBezierPath/setDefaultLineJoinStyle:
+Objective-C/clm/NSBezierPath/setDefaultLineWidth:
+Objective-C/clm/NSBezierPath/setDefaultMiterLimit:
+Objective-C/instm/NSSocketPortNameServer/setDefaultNameServerPortNumber:
+Objective-C/instm/NSTextView/setDefaultParagraphStyle:
+Objective-C/clm/NSObject/setDefaultPlaceholder:forMarker:withBinding:
+Objective-C/clm/NSPrintInfo/setDefaultPrinter:
+Objective-C/instm/CIFilter/setDefaults
+Objective-C/instm/NSMutableParagraphStyle/setDefaultTabInterval:
+Objective-C/instm/WebPreferences/setDefaultTextEncodingName:
+Objective-C/clm/NSTimeZone/setDefaultTimeZone:
+Objective-C/instm/NSAttributeDescription/setDefaultValue:
+Objective-C/instm/QCCompositionPickerView/setDefaultValue:forInputKey:
+Objective-C/clm/NSBezierPath/setDefaultWindingRule:
+Objective-C/instm/AMWorkflowController/setDelegate:
+Objective-C/instm/SFAuthorizationView/setDelegate:
+Objective-C/instm/QCCompositionParameterView/setDelegate:
+Objective-C/instm/QCCompositionPickerView/setDelegate:
+Objective-C/instm/NSExceptionHandler/setDelegate:
+Objective-C/instm/SBApplication/setDelegate:
+Objective-C/instm/NSFontManager/setDelegate:
+Objective-C/instm/IMKInputController/setDelegate:
+Objective-C/instm/CAAnimation/setDelegate:
+Objective-C/instm/PDFView/setDelegate:
+Objective-C/instm/PDFDocument/setDelegate:
+Objective-C/instm/NSDatePicker/setDelegate:
+Objective-C/instm/QTCaptureDecompressedAudioOutput/setDelegate:
+Objective-C/instm/ISyncSessionDriver/setDelegate:
+Objective-C/instm/NSSavePanel/setDelegate:
+Objective-C/instm/NSLayoutManager/setDelegate:
+Objective-C/instm/NSComboBox/setDelegate:
+Objective-C/instm/NSDatePickerCell/setDelegate:
+Objective-C/instm/NSMatrix/setDelegate:
+Objective-C/instm/NSAlert/setDelegate:
+Objective-C/instm/NSAnimation/setDelegate:
+Objective-C/instm/QTCaptureFileOutput/setDelegate:
+Objective-C/instm/NSDrawer/setDelegate:
+Objective-C/instm/QTCaptureVideoPreviewOutput/setDelegate:
+Objective-C/instm/QTCaptureView/setDelegate:
+Objective-C/instm/NSNetService/setDelegate:
+Objective-C/instm/NSSpellServer/setDelegate:
+Objective-C/instm/NSTokenField/setDelegate:
+Objective-C/instm/NSStream/setDelegate:
+Objective-C/instm/NSMetadataQuery/setDelegate:
+Objective-C/instm/NSTokenFieldCell/setDelegate:
+Objective-C/instm/NSTextStorage/setDelegate:
+Objective-C/instm/NSSpeechRecognizer/setDelegate:
+Objective-C/instm/NSSpeechSynthesizer/setDelegate:
+Objective-C/instm/NSNetServiceBrowser/setDelegate:
+Objective-C/instm/NSBrowser/setDelegate:
+Objective-C/instm/ODQuery/setDelegate:
+Objective-C/instm/NSPathCell/setDelegate:
+Objective-C/instm/NSSound/setDelegate:
+Objective-C/instm/QLPreviewPanel/setDelegate:
+Objective-C/instm/NSTextField/setDelegate:
+Objective-C/instm/NSTabView/setDelegate:
+Objective-C/instm/XGAuthenticator/setDelegate:
+Objective-C/instm/NSServerNotificationCenter/setDelegate:
+Objective-C/instm/XGConnection/setDelegate:
+Objective-C/instm/IKImageBrowserView/setDelegate:
+Objective-C/instm/NSRuleEditor/setDelegate:
+Objective-C/instm/NSConnection/setDelegate:
+Objective-C/instm/NSToolbar/setDelegate:
+Objective-C/instm/NSCollectionView/setDelegate:
+Objective-C/instm/IOBluetoothL2CAPChannel/setDelegate:
+Objective-C/instm/IOBluetoothDeviceInquiry/setDelegate:
+Objective-C/instm/IOBluetoothHostController/setDelegate:
+Objective-C/instm/IOBluetoothRFCOMMChannel/setDelegate:
+Objective-C/instm/OBEXFileTransferServices/setDelegate:
+Objective-C/instm/IOBluetoothDevicePair/setDelegate:
+Objective-C/instm/NSTextView/setDelegate:
+Objective-C/instm/NSSplitView/setDelegate:
+Objective-C/instm/NSImage/setDelegate:
+Objective-C/instm/NSPathControl/setDelegate:
+Objective-C/instm/NSWindow/setDelegate:
+Objective-C/instm/QTCaptureDecompressedVideoOutput/setDelegate:
+Objective-C/instm/NSTableView/setDelegate:
+Objective-C/instm/QTMovie/setDelegate:
+Objective-C/instm/QTMovieView/setDelegate:
+Objective-C/instm/IKSaveOptions/setDelegate:
+Objective-C/instm/IKDeviceBrowserView/setDelegate:
+Objective-C/instm/IKScannerDeviceView/setDelegate:
+Objective-C/instm/NSOutlineView/setDelegate:
+Objective-C/instm/IKCameraDeviceView/setDelegate:
+Objective-C/instm/NSApplication/setDelegate:
+Objective-C/instm/NSMenu/setDelegate:
+Objective-C/instm/NSText/setDelegate:
+Objective-C/instm/CLLocationManager/setDelegate:
+Objective-C/instm/NSKeyedArchiver/setDelegate:
+Objective-C/instm/NSCache/setDelegate:
+Objective-C/instm/NSKeyedUnarchiver/setDelegate:
+Objective-C/instm/NSPort/setDelegate:
+Objective-C/instm/NSMachPort/setDelegate:
+Objective-C/instm/NSXMLParser/setDelegate:
+Objective-C/instm/NSFileManager/setDelegate:
+Objective-C/instm/IKImageView/setDelegate:
+Objective-C/instm/CALayer/setDelegate:
+Objective-C/instm/IOBluetoothL2CAPChannel/setDelegate:withConfiguration:
+Objective-C/instm/NSRelationshipDescription/setDeleteRule:
+Objective-C/instm/NSURLDownload/setDeletesFileUponFailure:
+Objective-C/instm/FxImage/setDepth:
+Objective-C/instm/NSWindow/setDepthLimit:
+Objective-C/instm/DRBurnProgressPanel/setDescription:
+Objective-C/instm/DREraseProgressPanel/setDescription:
+Objective-C/instm/NSPointerFunctions/setDescriptionFunction:
+Objective-C/instm/IOBluetoothPairingController/setDescriptionText:
+Objective-C/instm/IOBluetoothDeviceSelectorController/setDescriptionText:
+Objective-C/instm/IOBluetoothServiceBrowserController/setDescriptionText:
+Objective-C/instm/NSAppleEventDescriptor/setDescriptor:forKeyword:
+Objective-C/instm/CLLocationManager/setDesiredAccuracy:
+C/func/-/setDesiredDomainState
+Objective-C/instm/NSWorkspace/setDesktopImageURL:forScreen:options:error:
+Objective-C/instm/PDFAnnotationLink/setDestination:
+Objective-C/instm/NSNibConnector/setDestination:
+Objective-C/instm/PDFActionGoTo/setDestination:
+Objective-C/instm/PDFOutline/setDestination:
+Objective-C/instm/NSURLDownload/setDestination:allowOverwrite:
+Objective-C/instm/XGFileDownload/setDestination:allowOverwrite:
+Objective-C/instm/NSRelationshipDescription/setDestinationEntity:
+Objective-C/instm/NSEntityMapping/setDestinationEntityName:
+Objective-C/instm/NSEntityMapping/setDestinationEntityVersionHash:
+C++/instm/IOFramebuffer/setDetailedTimings
+C++/instm/IOExtendedLBA/setDevice
+Objective-C/instm/IOBluetoothDevicePair/setDevice:
+C++/instm/IOATACommand/setDevice_Head
+Objective-C/instm/QTCaptureDevice/setDeviceAttributes:
+C++/instm/IOAudioDevice/setDeviceCanBeDefault
+C++/instm/IOService/setDeviceMemory
+C++/instm/IOAudioDevice/setDeviceName
+C++/instm/IOAudioDevice/setDeviceShortName
+Objective-C/instm/NSMutableDictionary/setDictionary:
+Objective-C/instm/NSSavePanel/setDirectory:
+Objective-C/instm/NSSavePanel/setDirectoryURL:
+Objective-C/instm/NSScriptCommand/setDirectParameter:
+Objective-C/clm/CATransaction/setDisableActions:
+Objective-C/instm/NSURLCache/setDiskCapacity:
+Objective-C/instm/IMKCandidates/setDismissesAutomatically:
+Objective-C/instm/PDFView/setDisplayBox:
+Objective-C/instm/SFCertificateView/setDisplayDetails:
+Objective-C/instm/NSSpeechRecognizer/setDisplayedCommandsTitle:
+Objective-C/instm/ABPeoplePickerView/setDisplayedProperty:
+Objective-C/instm/NSProgressIndicator/setDisplayedWhenStopped:
+C++/instm/IOFramebuffer/setDisplayMode
+Objective-C/instm/PDFView/setDisplayMode:
+Objective-C/instm/NSToolbar/setDisplayMode:
+Objective-C/instm/ISyncClient/setDisplayName:
+Objective-C/instm/PDFPage/setDisplaysAnnotations:
+Objective-C/instm/PDFView/setDisplaysAsBook:
+Objective-C/instm/IKCameraDeviceView/setDisplaysDownloadsDirectoryControl:
+Objective-C/instm/IKScannerDeviceView/setDisplaysDownloadsDirectoryControl:
+Objective-C/instm/NSTextView/setDisplaysLinkToolTips:
+Objective-C/instm/IKDeviceBrowserView/setDisplaysLocalCameras:
+Objective-C/instm/IKDeviceBrowserView/setDisplaysLocalScanners:
+Objective-C/instm/IKDeviceBrowserView/setDisplaysNetworkCameras:
+Objective-C/instm/IKDeviceBrowserView/setDisplaysNetworkScanners:
+Objective-C/instm/PDFView/setDisplaysPageBreaks:
+Objective-C/instm/IKCameraDeviceView/setDisplaysPostProcessApplicationControl:
+Objective-C/instm/IKScannerDeviceView/setDisplaysPostProcessApplicationControl:
+Objective-C/instm/QLPreviewPanel/setDisplayState:
+Objective-C/instm/NSWindow/setDisplaysWhenScreenProfileChanges:
+Objective-C/instm/SFCertificateView/setDisplayTrust:
+Objective-C/instm/NSRuleEditor/setDisplayValuesKeyPath:
+Objective-C/instm/CLLocationManager/setDistanceFilter:
+Objective-C/instm/ABGroup/setDistributionIdentifier:forProperty:person:
+Objective-C/instm/NSSplitView/setDividerStyle:
+C++/instm/IOFWPhysicalAddressSpace/setDMACommand
+C++/instm/IOATADevConfig/setDMACycleTime
+C++/instm/IOATADevConfig/setDMAMode
+C++/instm/IOATABusInfo/setDMAModes
+C++/instm/IOATABusInfo/setDMAQueued
+Objective-C/intfm/NSDockTilePlugIn/setDockTile:
+Objective-C/instm/NSWindowController/setDocument:
+Objective-C/instm/PDFView/setDocument:
+Objective-C/instm/PDFDocument/setDocumentAttributes:
+Objective-C/instm/NSXMLDocument/setDocumentContentKind:
+Objective-C/instm/NSScrollView/setDocumentCursor:
+Objective-C/instm/NSClipView/setDocumentCursor:
+Objective-C/instm/NSWindowController/setDocumentEdited:
+Objective-C/instm/NSWindow/setDocumentEdited:
+C/tdef/-/setDocumentLocatorSAXFunc
+Objective-C/instm/IKScannerDeviceView/setDocumentName:
+Objective-C/instm/NSScrollView/setDocumentView:
+Objective-C/instm/NSClipView/setDocumentView:
+Objective-C/instm/NSDateFormatter/setDoesRelativeDateFormatting:
+C/func/-/setdomainname
+JavaScript/instm/InspectorBackend/setDOMStorageItem
+Objective-C/instm/NSUserDefaults/setDouble:forKey:
+Objective-C/instm/NSStatusItem/setDoubleAction:
+Objective-C/instm/NSMatrix/setDoubleAction:
+Objective-C/instm/NSBrowser/setDoubleAction:
+Objective-C/instm/NSPathCell/setDoubleAction:
+Objective-C/instm/NSPathControl/setDoubleAction:
+Objective-C/instm/NSTableView/setDoubleAction:
+Objective-C/instm/IKImageView/setDoubleClickOpensImageEditPanel:
+Objective-C/instm/CALayer/setDoubleSided:
+Objective-C/instm/NSProgressIndicator/setDoubleValue:
+Objective-C/instm/IMAVControl/setDoubleValue:
+Objective-C/instm/NSControl/setDoubleValue:
+Objective-C/instm/NSCell/setDoubleValue:
+Objective-C/instm/IKCameraDeviceView/setDownloadAllControlLabel:
+Objective-C/instm/WebView/setDownloadDelegate:
+Objective-C/instm/IKScannerDeviceView/setDownloadsDirectory:
+Objective-C/instm/IKCameraDeviceView/setDownloadsDirectory:
+Objective-C/instm/IKCameraDeviceView/setDownloadSelectedControlLabel:
+Objective-C/instm/IKImageBrowserView/setDraggingDestinationDelegate:
+Objective-C/instm/NSTableView/setDraggingDestinationFeedbackStyle:
+Objective-C/instm/NSBrowser/setDraggingSourceOperationMask:forLocal:
+Objective-C/instm/NSCollectionView/setDraggingSourceOperationMask:forLocal:
+Objective-C/instm/NSPathControl/setDraggingSourceOperationMask:forLocal:
+Objective-C/instm/NSTableView/setDraggingSourceOperationMask:forLocal:
+JavaScript/instm/Clipboard/setDragImage
+Objective-C/instm/NSClipView/setDrawsBackground:
+Objective-C/instm/NSScrollView/setDrawsBackground:
+Objective-C/instm/QCCompositionPickerView/setDrawsBackground:
+Objective-C/instm/QCCompositionParameterView/setDrawsBackground:
+Objective-C/instm/NSDatePicker/setDrawsBackground:
+Objective-C/instm/NSDatePickerCell/setDrawsBackground:
+Objective-C/instm/NSMatrix/setDrawsBackground:
+Objective-C/instm/NSTextField/setDrawsBackground:
+Objective-C/instm/NSTabView/setDrawsBackground:
+Objective-C/instm/NSTextView/setDrawsBackground:
+Objective-C/instm/WebView/setDrawsBackground:
+Objective-C/instm/NSTextFieldCell/setDrawsBackground:
+Objective-C/instm/NSText/setDrawsBackground:
+Objective-C/instm/NSMatrix/setDrawsCellBackground:
+Objective-C/instm/NSTableView/setDrawsGrid:
+Objective-C/instm/NSLayoutManager/setDrawsOutsideLineFragment:forGlyphAtIndex:
+Objective-C/instm/NSATSTypesetter/setDrawsOutsideLineFragment:forGlyphRange:
+Objective-C/instm/NSTypesetter/setDrawsOutsideLineFragment:forGlyphRange:
+Objective-C/instm/IKImageBrowserView/setDropIndex:dropOperation:
+Objective-C/instm/NSOutlineView/setDropItem:dropChildIndex:
+Objective-C/instm/NSTableView/setDropRow:dropOperation:
+C/func/-/SetDSequenceAccuracy
+C/func/-/SetDSequenceDataProc
+C/func/-/SetDSequenceFlags
+C/func/-/SetDSequenceMask
+C/func/-/SetDSequenceMatrix
+C/func/-/SetDSequenceMatte
+C/func/-/SetDSequenceNonScheduledDisplayDirection
+C/func/-/SetDSequenceNonScheduledDisplayTime
+C/func/-/SetDSequenceSrcRect
+C/func/-/SetDSequenceTimeCode
+C/func/-/SetDSequenceTransferMode
+Objective-C/instm/NSXMLDocument/setDTD:
+Objective-C/instm/NSXMLDTDNode/setDTDKind:
+Objective-C/instm/CalTask/setDueDate:
+Objective-C/instm/NSAnimationContext/setDuration:
+Objective-C/instm/NSAnimation/setDuration:
+Objective-C/intfm/CAMediaTiming/setDuration:
+Objective-C/instm/NSWindow/setDynamicDepthLimit:
+Objective-C/instm/NSSecureTextFieldCell/setEchosBullets:
+Objective-C/instm/CALayer/setEdgeAntialiasingMask:
+Objective-C/instm/NSImageView/setEditable:
+Objective-C/instm/AMWorkflowView/setEditable:
+Objective-C/instm/NSTableColumn/setEditable:
+Objective-C/instm/NSObjectController/setEditable:
+Objective-C/instm/NSTextField/setEditable:
+Objective-C/instm/NSRuleEditor/setEditable:
+Objective-C/instm/NSTextView/setEditable:
+Objective-C/instm/QTMovieView/setEditable:
+Objective-C/instm/WebView/setEditable:
+Objective-C/instm/NSCell/setEditable:
+Objective-C/instm/NSText/setEditable:
+Objective-C/instm/IKImageView/setEditable:
+Objective-C/instm/SFCertificateView/setEditableTrust:
+Objective-C/instm/WebView/setEditingDelegate:
+C/func/-/setegid
+Objective-C/instm/CalAlarm/setEmailAddress:
+Objective-C/instm/CAEmitterCell/setEmissionLatitude:
+Objective-C/instm/CAEmitterCell/setEmissionLongitude:
+Objective-C/instm/CAEmitterCell/setEmissionRange:
+Objective-C/instm/CAEmitterLayer/setEmitterCells:
+Objective-C/instm/CAEmitterCell/setEmitterCells:
+Objective-C/instm/CAEmitterLayer/setEmitterDepth:
+Objective-C/instm/CAEmitterLayer/setEmitterMode:
+Objective-C/instm/CAEmitterLayer/setEmitterPosition:
+Objective-C/instm/CAEmitterLayer/setEmitterShape:
+Objective-C/instm/CAEmitterLayer/setEmitterSize:
+Objective-C/instm/CAEmitterLayer/setEmitterZPosition:
+Objective-C/instm/CIFilter/setEnabled:
+Objective-C/instm/SFAuthorizationView/setEnabled:
+Objective-C/instm/NSToolbarItem/setEnabled:
+Objective-C/instm/NSActionCell/setEnabled:
+Objective-C/instm/NSFontManager/setEnabled:
+Objective-C/instm/NSStatusItem/setEnabled:
+Objective-C/instm/CAEmitterCell/setEnabled:
+Objective-C/instm/QTCaptureConnection/setEnabled:
+Objective-C/instm/IMAVControl/setEnabled:
+Objective-C/instm/QTTrack/setEnabled:
+Objective-C/instm/NSMenuItem/setEnabled:
+Objective-C/instm/NSControl/setEnabled:
+Objective-C/instm/NSFontPanel/setEnabled:
+Objective-C/instm/SFAuthorizationPluginView/setEnabled:
+Objective-C/instm/NSCell/setEnabled:
+Objective-C/instm/ISyncClient/setEnabled:forEntityNames:
+Objective-C/instm/NSSegmentedCell/setEnabled:forSegment:
+Objective-C/instm/NSSegmentedControl/setEnabled:forSegment:
+Objective-C/instm/NSTextView/setEnabledTextCheckingTypes:
+JavaScript/instm/Range/setEnd
+JavaScript/instm/Range/setEndAfter
+JavaScript/instm/Range/setEndBefore
+Objective-C/instm/CalRecurrenceEnd/setEndDate:
+Objective-C/instm/CalEvent/setEndDate:
+Objective-C/instm/PDFAnnotationLine/setEndLineStyle:
+Objective-C/instm/PDFAnnotationLine/setEndPoint:
+Objective-C/instm/CAGradientLayer/setEndPoint:
+Objective-C/instm/CATransition/setEndProgress:
+Objective-C/instm/NSRangeSpecifier/setEndSpecifier:
+Objective-C/instm/NSWhoseSpecifier/setEndSubelementIdentifier:
+Objective-C/instm/NSWhoseSpecifier/setEndSubelementIndex:
+Objective-C/instm/NSManagedObjectModel/setEntities:
+Objective-C/instm/NSManagedObjectModel/setEntities:forConfiguration:
+Objective-C/instm/NSFetchRequest/setEntity:
+Objective-C/instm/NSMappingModel/setEntityMappings:
+Objective-C/instm/NSEntityMapping/setEntityMigrationPolicyClassName:
+Objective-C/instm/NSObjectController/setEntityName:
+Objective-C/instm/NSCell/setEntryType:
+Objective-C/instm/NSForm/setEntryWidth:
+C/func/-/setenv
+Objective-C/instm/NSTask/setEnvironment:
+C/func/-/SetEOF
+Objective-C/instm/NSDateComponents/setEra:
+Objective-C/instm/QCView/setEraseColor:
+Objective-C/instm/DRErase(PropertyConvenienceMethods)/setEraseType:
+Objective-C/instm/NSDateFormatter/setEraSymbols:
+C/func/-/seteuid
+Objective-C/instm/NSScriptObjectSpecifier/setEvaluationErrorNumber:
+Objective-C/instm/OBEXSession/setEventCallback:
+Objective-C/instm/QCView/setEventForwardingMask:
+Objective-C/instm/NSAppleEventManager/setEventHandler:andSelector:forEventClass:andEventID:
+Objective-C/instm/OBEXSession/setEventRefCon:
+Objective-C/instm/OBEXSession/setEventSelector:target:refCon:
+Objective-C/instm/NSCache/setEvictsObjectsWithDiscardedContent:
+Objective-C/instm/WebScriptObject/setException:
+Objective-C/instm/NSExceptionHandler/setExceptionHandlingMask:
+Objective-C/instm/NSExceptionHandler/setExceptionHangingMask:
+Objective-C/instm/NSWindow/setExcludedFromWindowsMenu:
+Objective-C/instm/NSDictionaryController/setExcludedKeys:
+C++/instm/IOFWAddressSpace/setExclusive
+Objective-C/instm/DRFSObject/setExplicitFilesystemMask:
+Objective-C/instm/NSNumberFormatter/setExponentSymbol:
+Objective-C/instm/NSExpressionDescription/setExpression:
+Objective-C/instm/NSExpressionDescription/setExpressionResultType:
+C++/instm/IOATABusInfo/setExtendedLBA
+C++/instm/IOExtendedLBA/setExtendedLBA
+Objective-C/instm/NSSavePanel/setExtensionHidden:
+C++/instm/IONetworkInterface/setExtraFlags
+Objective-C/instm/NSLayoutManager/setExtraLineFragmentRect:usedRect:textContainer:
+C/func/-/SetFallbackUnicodeToText
+C/func/-/SetFallbackUnicodeToTextRun
+C++/instm/IOAudioDevice/setFamilyManagePower
+Objective-C/instm/WebPreferences/setFantasyFontFamily:
+C++/instm/IOATACommand/setFeatures
+C++/instm/IOExtendedLBA/setFeatures16
+Objective-C/instm/NSFetchRequest/setFetchBatchSize:
+Objective-C/instm/NSFetchRequest/setFetchLimit:
+Objective-C/instm/NSFetchRequest/setFetchOffset:
+Objective-C/instm/NSObjectController/setFetchPredicate:
+Objective-C/instm/NSFetchedPropertyDescription/setFetchRequest:
+Objective-C/instm/NSManagedObjectModel/setFetchRequestTemplate:forName:
+Objective-C/instm/FxImage/setField:
+Objective-C/instm/NSTextView/setFieldEditor:
+Objective-C/instm/NSText/setFieldEditor:
+Objective-C/instm/PDFAnnotationTextWidget/setFieldName:
+Objective-C/instm/PDFAnnotationChoiceWidget/setFieldName:
+Objective-C/instm/PDFAnnotationButtonWidget/setFieldName:
+Objective-C/instm/FxImage/setFieldOrder:
+Objective-C/instm/PDFActionResetForm/setFields:
+Objective-C/instm/PDFActionResetForm/setFieldsIncludedAreCleared:
+Objective-C/instm/NSFileWrapper/setFileAttributes:
+Objective-C/instm/NSDocument/setFileModificationDate:
+Objective-C/instm/NSDocument/setFileName:
+Objective-C/instm/NSFileWrapper/setFilename:
+Objective-C/instm/NSDocument/setFileType:
+Objective-C/instm/NSDocument/setFileURL:
+Objective-C/instm/NSTextAttachment/setFileWrapper:
+Objective-C/instm/NSColor/setFill
+JavaScript/instm/CanvasRenderingContext2D/setFillColor
+Objective-C/instm/NSBox/setFillColor:
+Objective-C/instm/QTCaptureView/setFillColor:
+Objective-C/instm/QTMovieView/setFillColor:
+Objective-C/instm/CAShapeLayer/setFillColor:
+Objective-C/intfm/CAMediaTiming/setFillMode:
+Objective-C/instm/CAShapeLayer/setFillRule:
+Objective-C/instm/CATransition/setFilter:
+Objective-C/instm/NSArrayController/setFilterPredicate:
+JavaScript/instm/SVGFilterElement/setFilterRes
+Objective-C/instm/ISyncClient/setFilters:
+Objective-C/instm/CALayer/setFilters:
+Objective-C/instm/NSTimer/setFireDate:
+Objective-C/instm/NSPreferencePane/setFirstKeyView:
+Objective-C/instm/NSMutableParagraphStyle/setFirstLineHeadIndent:
+C++/instm/OSOrderedSet/setFirstObject
+Objective-C/instm/NSCalendar/setFirstWeekday:
+Objective-C/instm/WebPreferences/setFixedFontFamily:
+C++/instm/IONetworkInterface/setFlags
+C++/instm/IOATACommand/setFlags
+C++/instm/IOFWAsyncStreamListener/setFlags
+Objective-C/instm/SFAuthorizationView/setFlags:
+Objective-C/instm/NSBezierPath/setFlatness:
+Objective-C/instm/NSImage/setFlipped:
+Objective-C/instm/NSUserDefaults/setFloat:forKey:
+Objective-C/instm/NSPanel/setFloatingPanel:
+Objective-C/instm/NSActionCell/setFloatingPointFormat:left:right:
+Objective-C/instm/NSControl/setFloatingPointFormat:left:right:
+Objective-C/instm/NSCell/setFloatingPointFormat:left:right:
+JavaScript/instm/CSSPrimitiveValue/setFloatValue
+Objective-C/instm/IMAVControl/setFloatValue:
+Objective-C/instm/NSControl/setFloatValue:
+Objective-C/instm/NSCell/setFloatValue:
+Objective-C/instm/NSScroller/setFloatValue:knobProportion:
+Objective-C/intfm/FxParameterSettingAPI/setFloatValue:toParm:atTime:
+Objective-C/instm/NSTableView/setFocusedColumn:
+Objective-C/instm/NSView/setFocusRingType:
+Objective-C/instm/NSCell/setFocusRingType:
+Objective-C/instm/NSGraphicsContext/setFocusStack:
+Objective-C/instm/NSActionCell/setFont:
+Objective-C/instm/PDFAnnotationTextWidget/setFont:
+Objective-C/instm/PDFAnnotationButtonWidget/setFont:
+Objective-C/instm/PDFAnnotationChoiceWidget/setFont:
+Objective-C/instm/PDFAnnotationFreeText/setFont:
+Objective-C/instm/NSMenuView/setFont:
+Objective-C/instm/NSButtonCell/setFont:
+Objective-C/instm/NSTextStorage/setFont:
+Objective-C/instm/NSControl/setFont:
+Objective-C/instm/NSTabView/setFont:
+Objective-C/instm/NSText/setFont:
+Objective-C/instm/NSMenu/setFont:
+Objective-C/instm/NSCell/setFont:
+Objective-C/instm/CATextLayer/setFont:
+Objective-C/instm/NSText/setFont:range:
+Objective-C/instm/PDFAnnotationFreeText/setFontColor:
+Objective-C/instm/PDFAnnotationChoiceWidget/setFontColor:
+Objective-C/instm/PDFAnnotationButtonWidget/setFontColor:
+Objective-C/instm/PDFAnnotationTextWidget/setFontColor:
+Objective-C/clm/NSFontManager/setFontManagerFactory:
+Objective-C/instm/NSFontManager/setFontMenu:
+Objective-C/clm/NSFontManager/setFontPanelFactory:
+Objective-C/instm/CATextLayer/setFontSize:
+Objective-C/instm/NSTextStorage/setForegroundColor:
+Objective-C/instm/CATextLayer/setForegroundColor:
+Objective-C/instm/IKImageBrowserView/setForegroundLayer:
+Objective-C/instm/DRMSFFormatter/setFormat:
+Objective-C/instm/NSNumberFormatter/setFormat:
+Objective-C/instm/ISyncClient/setFormatsRelationships:
+Objective-C/instm/NSControl/setFormatter:
+Objective-C/instm/NSCell/setFormatter:
+Objective-C/instm/NSDateFormatter/setFormatterBehavior:
+Objective-C/instm/NSNumberFormatter/setFormatterBehavior:
+Objective-C/instm/NSRuleEditor/setFormattingDictionary:
+Objective-C/instm/NSRuleEditor/setFormattingStringsFilename:
+Objective-C/instm/NSNumberFormatter/setFormatWidth:
+C/func/-/SetFPos
+C++/instm/IORangeAllocator/setFragmentCapacityIncrement
+Objective-C/instm/NSView/setFrame:
+Objective-C/instm/CALayer/setFrame:
+Objective-C/instm/NSWindow/setFrame:display:
+Objective-C/instm/NSWindow/setFrame:display:animate:
+Objective-C/instm/NSWindow/setFrameAutosaveName:
+Objective-C/instm/NSView/setFrameCenterRotation:
+Objective-C/instm/NSBox/setFrameFromContentFrame:
+Objective-C/instm/NSWindow/setFrameFromString:
+Objective-C/instm/WebView/setFrameLoadDelegate:
+Objective-C/instm/NSWindow/setFrameOrigin:
+Objective-C/instm/NSView/setFrameOrigin:
+Objective-C/instm/NSAnimation/setFrameRate:
+Objective-C/instm/NSView/setFrameRotation:
+Objective-C/instm/NSForm/setFrameSize:
+Objective-C/instm/NSView/setFrameSize:
+Objective-C/instm/NSWindow/setFrameTopLeftPoint:
+Objective-C/instm/NSWindow/setFrameUsingName:
+Objective-C/instm/NSWindow/setFrameUsingName:force:
+Objective-C/instm/CABasicAnimation/setFromValue:
+C/func/-/SetFrontProcess
+C/func/-/SetFrontProcessWithOptions
+C/func/-/setfsent
+Objective-C/instm/NSOpenGLContext/setFullScreen
+C++/instm/IOFramebuffer/setGammaTable
+Objective-C/instm/IOBluetoothHandsFreeGateway/setGatewaySupportedFeatures:
+Objective-C/instm/NSDateFormatter/setGeneratesCalendarDates:
+Objective-C/instm/NSNumberFormatter/setGeneratesDecimalNumbers:
+Objective-C/instm/CALayer/setGeometryFlipped:
+C/func/-/SetGestaltValue
+C/func/-/setgid
+Objective-C/instm/NSLayoutManager/setGlyphGenerator:
+Objective-C/instm/NSButtonCell/setGradientType:
+Objective-C/instm/NSTextView/setGrammarCheckingEnabled:
+Objective-C/clm/NSGraphicsContext/setGraphicsState:
+Objective-C/instm/PDFView/setGreekingThreshold:
+Objective-C/instm/CAEmitterCell/setGreenRange:
+Objective-C/instm/CAEmitterCell/setGreenSpeed:
+Objective-C/instm/NSDateFormatter/setGregorianStartDate:
+C/func/-/setgrent
+Objective-C/instm/NSTableView/setGridColor:
+Objective-C/instm/NSTableView/setGridStyleMask:
+Objective-C/instm/ABPeoplePickerView/setGroupDoubleAction:
+C/func/-/setgroupent
+Objective-C/instm/NSMetadataQuery/setGroupingAttributes:
+Objective-C/instm/NSNumberFormatter/setGroupingSeparator:
+Objective-C/instm/NSNumberFormatter/setGroupingSize:
+Objective-C/instm/WebView/setGroupName:
+C/func/-/setgroups
+Objective-C/instm/NSUndoManager/setGroupsByEvent:
+Objective-C/instm/ISyncSessionDriver/setHandlesSyncAlerts:
+Objective-C/instm/NSATSTypesetter/setHardInvalidation:forGlyphRange:
+Objective-C/instm/NSTypesetter/setHardInvalidation:forGlyphRange:
+C++/instm/IOEthernetController/setHardwareAddress
+C++/instm/IONetworkController/setHardwareAddress
+Objective-C/instm/IKScannerDeviceView/setHasDisplayModeAdvanced:
+Objective-C/instm/IKCameraDeviceView/setHasDisplayModeIcon:
+Objective-C/instm/IKScannerDeviceView/setHasDisplayModeSimple:
+Objective-C/instm/IKCameraDeviceView/setHasDisplayModeTable:
+Objective-C/instm/NSPointerFunctions/setHashFunction:
+Objective-C/instm/NSScrollView/setHasHorizontalRuler:
+Objective-C/instm/NSScrollView/setHasHorizontalScroller:
+Objective-C/instm/NSBrowser/setHasHorizontalScroller:
+Objective-C/instm/IKImageView/setHasHorizontalScroller:
+Objective-C/instm/NSWindow/setHasShadow:
+Objective-C/instm/NSNumberFormatter/setHasThousandSeparators:
+Objective-C/instm/NSPersistentDocument/setHasUndoManager:
+Objective-C/instm/NSDocument/setHasUndoManager:
+Objective-C/instm/NSScrollView/setHasVerticalRuler:
+Objective-C/instm/NSScrollView/setHasVerticalScroller:
+Objective-C/instm/NSComboBox/setHasVerticalScroller:
+Objective-C/instm/NSComboBoxCell/setHasVerticalScroller:
+Objective-C/instm/IKImageView/setHasVerticalScroller:
+C++/instm/IOSCSIParallelInterfaceController/SetHBAProperty
+C++/instm/IOFWCommand/setHead
+Objective-C/instm/NSTableColumn/setHeaderCell:
+Objective-C/instm/NSMutableParagraphStyle/setHeaderLevel:
+Objective-C/instm/NSTableColumn/setHeaderToolTip:
+Objective-C/instm/NSTableView/setHeaderView:
+Objective-C/instm/NSMutableParagraphStyle/setHeadIndent:
+Objective-C/instm/FxImage/setHeight:
+Objective-C/instm/NSTextContainer/setHeightTracksTextView:
+Objective-C/instm/SFCertificatePanel/setHelpAnchor:
+Objective-C/instm/NSAlert/setHelpAnchor:
+Objective-C/instm/NSPrintPanel/setHelpAnchor:
+Objective-C/instm/SFChooseIdentityPanel/setHelpAnchor:
+Objective-C/instm/NSApplication/setHelpMenu:
+Objective-C/instm/NSTableColumn/setHidden:
+Objective-C/instm/NSMenuItem/setHidden:
+Objective-C/instm/NSView/setHidden:
+Objective-C/instm/CALayer/setHidden:
+Objective-C/clm/NSCursor/setHiddenUntilMouseMoves:
+Objective-C/instm/NSTextTable/setHidesEmptyCells:
+Objective-C/instm/NSWindow/setHidesOnDeactivate:
+Objective-C/instm/PDFAnnotationLink/setHighlighted:
+Objective-C/instm/PDFAnnotationButtonWidget/setHighlighted:
+Objective-C/instm/NSCell/setHighlighted:
+Objective-C/instm/NSMenuView/setHighlightedItemIndex:
+Objective-C/instm/PDFView/setHighlightedSelections:
+Objective-C/instm/NSTableView/setHighlightedTableColumn:
+Objective-C/instm/NSStatusItem/setHighlightMode:
+Objective-C/instm/NSButtonCell/setHighlightsBy:
+C/func/-/SetHintValue
+Objective-C/intfm/FxOptionalParameterSettingAPI/setHistogramBlackIn:BlackOut:WhiteIn:WhiteOut:Gamma:forChannel:fromParm:atTime:
+Objective-C/instm/WebHistory/setHistoryAgeInDaysLimit:
+Objective-C/instm/WebHistory/setHistoryItemLimit:
+Objective-C/instm/NSMenuView/setHorizontal:
+Objective-C/instm/PDFBorder/setHorizontalCornerRadius:
+Objective-C/instm/NSMenuView/setHorizontalEdgePadding:
+Objective-C/instm/NSScrollView/setHorizontalLineScroll:
+Objective-C/instm/NSPrintInfo/setHorizontallyCentered:
+Objective-C/instm/NSText/setHorizontallyResizable:
+Objective-C/instm/NSScrollView/setHorizontalPageScroll:
+Objective-C/instm/NSPrintInfo/setHorizontalPagination:
+Objective-C/instm/NSScrollView/setHorizontalRulerView:
+Objective-C/instm/NSScrollView/setHorizontalScroller:
+Objective-C/clm/NSHost/setHostCacheEnabled:
+C/func/-/sethostent
+C/func/-/sethostid
+C/func/-/sethostname
+Objective-C/instm/WebView/setHostWindow:
+Objective-C/instm/QTMovieView/setHotSpotButtonVisible:
+Objective-C/instm/NSDateComponents/setHour:
+Objective-C/instm/NSMutableURLRequest/setHTTPBody:
+Objective-C/instm/NSMutableURLRequest/setHTTPBodyStream:
+Objective-C/instm/NSMutableURLRequest/setHTTPMethod:
+Objective-C/instm/NSMutableURLRequest/setHTTPShouldHandleCookies:
+C++/instm/IOUSBController/SetHubAddress
+C++/instm/IOUSBDevice/SetHubParent
+Objective-C/instm/NSMutableParagraphStyle/setHyphenationFactor:
+Objective-C/instm/NSATSTypesetter/setHyphenationFactor:
+Objective-C/instm/NSLayoutManager/setHyphenationFactor:
+Objective-C/instm/NSTypesetter/setHyphenationFactor:
+Objective-C/instm/NSAlert/setIcon:
+Objective-C/instm/NSWorkspace/setIcon:forFile:options:
+Objective-C/instm/IOBluetoothObjectPushUIController/setIconImage:
+Objective-C/instm/IKCameraDeviceView/setIconSize:
+Objective-C/instm/PDFAnnotationText/setIconType:
+Objective-C/instm/NSTableColumn/setIdentifier:
+Objective-C/instm/NSPersistentStore/setIdentifier:
+Objective-C/instm/NSTabViewItem/setIdentifier:
+C/func/-/SetIdentityMatrix
+C++/instm/IOAudioDevice/setIdleAudioSleepTime
+C++/instm/IOService/setIdleTimerPeriod
+Objective-C/instm/QTMovie/setIdling:
+Objective-C/instm/NSSpellChecker/setIgnoredWords:inSpellDocumentWithTag:
+Objective-C/clm/NSColor/setIgnoresAlpha:
+Objective-C/instm/NSWindow/setIgnoresMouseEvents:
+Objective-C/instm/NSControl/setIgnoresMultiClick:
+Objective-C/instm/NSSlider/setImage:
+Objective-C/instm/NSRulerMarker/setImage:
+Objective-C/instm/NSToolbarItem/setImage:
+Objective-C/instm/NSPathComponentCell/setImage:
+Objective-C/instm/CIImageAccumulator/setImage:
+Objective-C/instm/NSImageView/setImage:
+Objective-C/instm/NSActionCell/setImage:
+Objective-C/instm/NSButton/setImage:
+Objective-C/instm/NSStatusItem/setImage:
+Objective-C/instm/NSBrowserCell/setImage:
+Objective-C/instm/NSPopUpButton/setImage:
+Objective-C/instm/NSPopUpButtonCell/setImage:
+Objective-C/instm/NSMenuItem/setImage:
+Objective-C/instm/NSLevelIndicatorCell/setImage:
+Objective-C/instm/NSCell/setImage:
+Objective-C/instm/CIImageAccumulator/setImage:dirtyRect:
+Objective-C/instm/NSSegmentedControl/setImage:forSegment:
+Objective-C/instm/NSSegmentedCell/setImage:forSegment:
+Objective-C/intfm/IKImageEditPanelDataSource/setImage:imageProperties:
+Objective-C/instm/IKImageView/setImage:imageProperties:
+Objective-C/instm/NSImageView/setImageAlignment:
+Objective-C/instm/NSImageCell/setImageAlignment:
+Objective-C/instm/IKImageView/setImageCorrection:
+Objective-C/instm/ABPerson/setImageData:
+C/func/-/SetImageDescriptionCTable
+Objective-C/instm/NSButtonCell/setImageDimsWhenDisabled:
+Objective-C/instm/NSImageView/setImageFrameStyle:
+Objective-C/instm/NSImageCell/setImageFrameStyle:
+Objective-C/instm/NSGraphicsContext/setImageInterpolation:
+Objective-C/instm/NSRulerMarker/setImageOrigin:
+Objective-C/instm/ISyncClient/setImagePath:
+Objective-C/instm/NSButton/setImagePosition:
+Objective-C/instm/NSButtonCell/setImagePosition:
+Objective-C/instm/NSImageView/setImageScaling:
+Objective-C/instm/NSButtonCell/setImageScaling:
+Objective-C/instm/NSImageCell/setImageScaling:
+Objective-C/instm/NSSegmentedCell/setImageScaling:forSegment:
+Objective-C/instm/NSSegmentedControl/setImageScaling:forSegment:
+Objective-C/instm/FxImage/setImageType:
+Objective-C/instm/IKImageView/setImageWithURL:
+Objective-C/instm/IKImageView/setImageZoomFactor:centerPoint:
+Objective-C/instm/NSTextField/setImportsGraphics:
+Objective-C/instm/NSTextView/setImportsGraphics:
+Objective-C/instm/NSText/setImportsGraphics:
+Objective-C/instm/NSCell/setImportsGraphics:
+Objective-C/instm/NSDictionaryController/setIncludedKeys:
+Objective-C/instm/NSFetchRequest/setIncludesPendingChanges:
+Objective-C/instm/NSFetchRequest/setIncludesPropertyValues:
+Objective-C/instm/NSFetchRequest/setIncludesSubentities:
+Objective-C/instm/NSFont/setInContext:
+Objective-C/instm/NSStepper/setIncrement:
+Objective-C/instm/NSStepperCell/setIncrement:
+Objective-C/instm/NSMenuItem/setIndentationLevel:
+Objective-C/instm/NSOutlineView/setIndentationMarkerFollowsCell:
+Objective-C/instm/NSOutlineView/setIndentationPerLevel:
+Objective-C/instm/NSConnection/setIndependentConversationQueueing:
+Objective-C/instm/NSProgressIndicator/setIndeterminate:
+Objective-C/instm/NSIndexSpecifier/setIndex:
+Objective-C/instm/NSPropertyDescription/setIndexed:
+Objective-C/instm/NSPropertyDescription/setIndexedBySpotlight:
+Objective-C/instm/NSTableView/setIndicatorImage:inTableColumn:
+C/tdef/-/SetIndImageProfileProcPtr
+Objective-C/instm/NSAlert/setInformativeText:
+Objective-C/instm/QLPreviewPanel/setInFullScreenMode:
+Objective-C/instm/NSTabViewItem/setInitialFirstResponder:
+Objective-C/instm/NSWindow/setInitialFirstResponder:
+Objective-C/instm/NSDictionaryController/setInitialKey:
+Objective-C/instm/NSPreferencePane/setInitialKeyView:
+Objective-C/instm/NSDictionaryController/setInitialValue:
+Objective-C/instm/NSUserDefaultsController/setInitialValues:
+JavaScript/instm/InspectorBackend/setInjectedScriptSource
+Objective-C/instm/AMWorkflow/setInput:
+Objective-C/instm/IKPictureTaker/setInputImage:
+C++/instm/IOStream/setInputPort
+C++/instm/IOAudioEngine/setInputSampleOffset
+Objective-C/intfm/QCCompositionRenderer/setInputValuesWithPropertyList:
+Objective-C/instm/IOBluetoothDeviceInquiry/setInquiryLength:
+Objective-C/instm/NSPositionalSpecifier/setInsertionClassDescription:
+Objective-C/instm/NSTextView/setInsertionPointColor:
+Objective-C/instm/CAReplicatorLayer/setInstanceAlphaOffset:
+Objective-C/instm/CAReplicatorLayer/setInstanceBlueOffset:
+Objective-C/instm/CAReplicatorLayer/setInstanceColor:
+Objective-C/instm/CAReplicatorLayer/setInstanceCount:
+Objective-C/instm/CAReplicatorLayer/setInstanceDelay:
+Objective-C/instm/CAReplicatorLayer/setInstanceGreenOffset:
+Objective-C/instm/CAReplicatorLayer/setInstanceRedOffset:
+Objective-C/instm/CAReplicatorLayer/setInstanceTransform:
+Objective-C/intfm/NSGlyphStorage/setIntAttribute:value:forGlyphAtIndex:
+Objective-C/instm/NSLayoutManager/setIntAttribute:value:forGlyphAtIndex:
+Objective-C/instm/NSUserDefaults/setInteger:forKey:
+Objective-C/instm/IMAVControl/setIntegerValue:
+Objective-C/instm/NSControl/setIntegerValue:
+Objective-C/instm/NSCell/setIntegerValue:
+Objective-C/instm/NSMatrix/setIntercellSpacing:
+Objective-C/instm/NSComboBox/setIntercellSpacing:
+Objective-C/instm/NSComboBoxCell/setIntercellSpacing:
+Objective-C/instm/IKImageBrowserView/setIntercellSpacing:
+Objective-C/instm/NSTableView/setIntercellSpacing:
+C++/instm/IONetworkInterface/setInterfaceState
+Objective-C/instm/NSResponder/setInterfaceStyle:
+C++/instm/IONetworkInterface/setInterfaceType
+Objective-C/instm/PDFAnnotationCircle/setInteriorColor:
+Objective-C/instm/PDFAnnotationSquare/setInteriorColor:
+Objective-C/instm/PDFAnnotationLine/setInteriorColor:
+Objective-C/instm/NSForm/setInterlineSpacing:
+Objective-C/instm/NSNumberFormatter/setInternationalCurrencySymbol:
+C++/instm/IOFramebuffer/setInterruptState
+JavaScript/instm/DOMWindow/setInterval
+JavaScript/instm/WorkerContext/setInterval
+Objective-C/instm/IMAVControl/setIntValue:
+Objective-C/instm/NSControl/setIntValue:
+Objective-C/instm/NSCell/setIntValue:
+Objective-C/intfm/FxParameterSettingAPI/setIntValue:toParm:atTime:
+C/func/-/setinvalidrune
+Objective-C/instm/NSRelationshipDescription/setInverseRelationship:
+C++/instm/IOPCIDevice/setIOEnable
+C/func/-/setiopolicy_np
+Objective-C/instm/CalEvent/setIsAllDay:
+Objective-C/instm/CalTask/setIsCompleted:
+Objective-C/instm/CalCalendar/setIsEditable:
+Objective-C/instm/NSPointerFunctions/setIsEqualFunction:
+Objective-C/instm/PDFAnnotationChoiceWidget/setIsListChoice:
+Objective-C/instm/NSWindow/setIsMiniaturized:
+Objective-C/instm/PDFAnnotationPopup/setIsOpen:
+Objective-C/instm/PDFOutline/setIsOpen:
+Objective-C/instm/NSSplitView/setIsPaneSplitter:
+Objective-C/instm/FxImage/setIsPremultiplied:
+Objective-C/instm/NSWindow/setIsVisible:
+Objective-C/instm/NSWindow/setIsZoomed:
+JavaScript/instm/Storage/setItem
+Objective-C/instm/NSComboBox/setItemHeight:
+Objective-C/instm/NSComboBoxCell/setItemHeight:
+Objective-C/instm/NSCollectionView/setItemPrototype:
+C/func/-/setitimer
+Objective-C/instm/WebPreferences/setJavaEnabled:
+Objective-C/instm/WebPreferences/setJavaScriptCanOpenWindowsAutomatically:
+Objective-C/instm/WebPreferences/setJavaScriptEnabled:
+C/func/-/setjmp
+Objective-C/instm/NSPrintInfo/setJobDisposition:
+Objective-C/instm/XGController/setJobsPredicateString:
+Objective-C/instm/NSPrintOperation/setJobStyleHint:
+Objective-C/instm/NSPrintPanel/setJobStyleHint:
+Objective-C/instm/NSPrintOperation/setJobTitle:
+C/func/-/setkey
+Objective-C/instm/NSScriptObjectSpecifier/setKey:
+Objective-C/instm/NSObject/setKey:
+Objective-C/instm/NSView/setKeyboardFocusRingNeedsDisplayInRect:
+Objective-C/instm/NSTextInputContext/setKeyboardInputSources:
+Objective-C/instm/NSMatrix/setKeyCell:
+Objective-C/instm/NSButton/setKeyEquivalent:
+Objective-C/instm/NSButtonCell/setKeyEquivalent:
+Objective-C/instm/NSMenuItem/setKeyEquivalent:
+Objective-C/instm/NSButtonCell/setKeyEquivalentFont:
+Objective-C/instm/NSButtonCell/setKeyEquivalentFont:size:
+Objective-C/instm/NSButton/setKeyEquivalentModifierMask:
+Objective-C/instm/NSButtonCell/setKeyEquivalentModifierMask:
+Objective-C/instm/NSMenuItem/setKeyEquivalentModifierMask:
+Objective-C/instm/CAPropertyAnimation/setKeyPath:
+Objective-C/clm/NSObject/setKeys:triggerChangeNotificationsForDependentKey:
+Objective-C/instm/CAKeyframeAnimation/setKeyTimes:
+Objective-C/instm/NSScroller/setKnobProportion:
+Objective-C/instm/NSSlider/setKnobThickness:
+Objective-C/instm/NSSliderCell/setKnobThickness:
+Objective-C/instm/NSToolbarItem/setLabel:
+Objective-C/instm/NSNibConnector/setLabel:
+Objective-C/instm/PDFOutline/setLabel:
+Objective-C/instm/NSTabViewItem/setLabel:
+Objective-C/instm/NSSegmentedCell/setLabel:forSegment:
+Objective-C/instm/NSSegmentedControl/setLabel:forSegment:
+Objective-C/instm/PDFThumbnailView/setLabelFont:
+Objective-C/instm/NSSpellChecker/setLanguage:
+Objective-C/instm/NSBrowser/setLastColumn:
+Objective-C/instm/NSDocument/setLastComponentOfFileName:
+Objective-C/instm/NSPreferencePane/setLastKeyView:
+C++/instm/OSOrderedSet/setLastObject
+Objective-C/instm/SBApplication/setLaunchFlags:
+Objective-C/instm/NSTask/setLaunchPath:
+Objective-C/instm/CARenderer/setLayer:
+Objective-C/instm/NSView/setLayer:
+Objective-C/instm/NSView/setLayerContentsPlacement:
+Objective-C/instm/NSView/setLayerContentsRedrawPolicy:
+Objective-C/instm/NSTextTable/setLayoutAlgorithm:
+Objective-C/instm/NSTextContainer/setLayoutManager:
+Objective-C/instm/CALayer/setLayoutManager:
+Objective-C/instm/NSLayoutManager/setLayoutRect:forTextBlock:glyphRange:
+C++/instm/IOATACommand/setLBA28
+C++/instm/IOExtendedLBA/setLBAHigh16
+C++/instm/IOExtendedLBA/setLBALow16
+C++/instm/IOExtendedLBA/setLBAMid16
+C/func/-/setlcid
+Objective-C/instm/NSDrawer/setLeadingOffset:
+Objective-C/instm/NSBrowserCell/setLeaf:
+Objective-C/instm/NSTreeController/setLeafKeyPath:
+Objective-C/instm/NSPrintInfo/setLeftMargin:
+Objective-C/instm/NSMutableData/setLength:
+Objective-C/instm/NSStatusItem/setLength:
+Objective-C/instm/NSDateFormatter/setLenient:
+Objective-C/instm/NSNumberFormatter/setLenient:
+Objective-C/instm/NSWindow/setLevel:
+Objective-C/instm/NSLevelIndicatorCell/setLevelIndicatorStyle:
+Objective-C/instm/CATiledLayer/setLevelsOfDetail:
+Objective-C/instm/CATiledLayer/setLevelsOfDetailBias:
+Objective-C/instm/NSUndoManager/setLevelsOfUndo:
+Objective-C/instm/CAEmitterCell/setLifetime:
+Objective-C/instm/CAEmitterLayer/setLifetime:
+Objective-C/instm/CAEmitterCell/setLifetimeRange:
+C++/instm/IOAudioLevelControl/setLinearScale
+Objective-C/instm/NSMutableParagraphStyle/setLineBreakMode:
+Objective-C/instm/NSCell/setLineBreakMode:
+C/func/-/setlinebuf
+JavaScript/instm/CanvasRenderingContext2D/setLineCap
+Objective-C/instm/CAShapeLayer/setLineCap:
+Objective-C/instm/NSBezierPath/setLineCapStyle:
+Objective-C/instm/NSBezierPath/setLineDash:count:phase:
+Objective-C/instm/CAShapeLayer/setLineDashPattern:
+Objective-C/instm/CAShapeLayer/setLineDashPhase:
+Objective-C/instm/NSTextContainer/setLineFragmentPadding:
+Objective-C/instm/NSATSTypesetter/setLineFragmentPadding:
+Objective-C/instm/NSTypesetter/setLineFragmentPadding:
+Objective-C/instm/NSLayoutManager/setLineFragmentRect:forGlyphRange:usedRect:
+Objective-C/instm/NSATSTypesetter/setLineFragmentRect:forGlyphRange:usedRect:baselineOffset:
+Objective-C/instm/NSTypesetter/setLineFragmentRect:forGlyphRange:usedRect:baselineOffset:
+Objective-C/instm/NSMutableParagraphStyle/setLineHeightMultiple:
+JavaScript/instm/CanvasRenderingContext2D/setLineJoin
+Objective-C/instm/CAShapeLayer/setLineJoin:
+Objective-C/instm/NSBezierPath/setLineJoinStyle:
+Objective-C/instm/NSScrollView/setLineScroll:
+Objective-C/instm/NSMutableParagraphStyle/setLineSpacing:
+JavaScript/instm/CanvasRenderingContext2D/setLineWidth
+Objective-C/instm/PDFBorder/setLineWidth:
+Objective-C/instm/NSBezierPath/setLineWidth:
+Objective-C/instm/CAShapeLayer/setLineWidth:
+C++/instm/IONetworkController/setLinkStatus
+Objective-C/instm/NSTextView/setLinkTextAttributes:
+C++/instm/IOFWAsyncStreamListener/setListenerHandler
+Objective-C/instm/NSSpeechRecognizer/setListensInForegroundOnly:
+Objective-C/instm/NSBrowserCell/setLoaded:
+Objective-C/instm/WebPreferences/setLoadsImagesAutomatically:
+C/func/-/setlocale
+Objective-C/instm/NSDatePicker/setLocale:
+Objective-C/instm/NSDateFormatter/setLocale:
+Objective-C/instm/NSDatePickerCell/setLocale:
+Objective-C/instm/NSCalendar/setLocale:
+Objective-C/instm/NSScanner/setLocale:
+Objective-C/instm/NSNumberFormatter/setLocale:
+Objective-C/instm/NSManagedObjectModel/setLocalizationDictionary:
+Objective-C/instm/NSObject/setLocalizedKey:
+Objective-C/instm/NSDictionaryController/setLocalizedKeyDictionary:
+Objective-C/instm/NSDictionaryController/setLocalizedKeyTable:
+Objective-C/instm/NSNumberFormatter/setLocalizesFormat:
+C++/instm/IORegistryEntry/setLocation
+Objective-C/instm/CalEvent/setLocation:
+Objective-C/instm/NSLayoutManager/setLocation:forStartOfGlyphRange:
+Objective-C/instm/NSATSTypesetter/setLocation:withAdvancements:forStartOfGlyphRange:
+Objective-C/instm/NSTypesetter/setLocation:withAdvancements:forStartOfGlyphRange:
+Objective-C/instm/CAGradientLayer/setLocations:
+Objective-C/instm/NSLayoutManager/setLocations:startingGlyphIndexes:count:forGlyphRange:
+Objective-C/instm/CLLocationManager/setLocationServicesEnabled:
+C/func/-/setlogin
+C/func/-/setlogmask
+Objective-C/instm/NSDateFormatter/setLongEraSymbols:
+Objective-C/instm/NSSound/setLoops:
+Objective-C/instm/CAEmitterCell/setMagnificationFilter:
+Objective-C/instm/CALayer/setMagnificationFilter:
+Objective-C/instm/NSMutableURLRequest/setMainDocumentURL:
+Objective-C/instm/WebView/setMainFrameURL:
+Objective-C/instm/NSApplication/setMainMenu:
+Objective-C/instm/WebView/setMaintainsBackForwardList:
+Objective-C/instm/NSPreferencePane/setMainView:
+Objective-C/instm/NSEntityDescription/setManagedObjectClassName:
+Objective-C/instm/NSObjectController/setManagedObjectContext:
+Objective-C/instm/NSPersistentDocument/setManagedObjectContext:
+C++/instm/IOAudioDevice/setManufacturerName
+C++/instm/IOMemoryDescriptor/setMapping
+Objective-C/instm/NSEntityMapping/setMappingType:
+Objective-C/instm/NSResponder/setMark:
+Objective-C/intfm/NSTextInput/setMarkedText:selectedRange:
+Objective-C/intfm/NSTextInputClient/setMarkedText:selectedRange:replacementRange:
+Objective-C/intfm/IMKTextInput/setMarkedText:selectionRange:replacementRange:
+Objective-C/instm/NSTextView/setMarkedTextAttributes:
+Objective-C/instm/NSRulerMarker/setMarkerLocation:
+Objective-C/instm/NSRulerView/setMarkers:
+Objective-C/instm/PDFAnnotationMarkup/setMarkupType:
+Objective-C/instm/CALayer/setMask:
+Objective-C/instm/CALayer/setMasksToBounds:
+Objective-C/instm/NSImage/setMatchesOnMultipleResolution:
+JavaScript/instm/SVGTransform/setMatrix
+Objective-C/instm/NSBrowser/setMatrixClass:
+JavaScript/instm/WebKitCSSMatrix/setMatrixValue
+Objective-C/instm/QCCompositionPickerView/setMaxAnimationFrameRate:
+C++/instm/IOATABusInfo/setMaxBlocksExtended
+Objective-C/instm/NSOperationQueue/setMaxConcurrentOperationCount:
+Objective-C/instm/NSDrawer/setMaxContentSize:
+Objective-C/instm/NSRelationshipDescription/setMaxCount:
+Objective-C/instm/NSDatePicker/setMaxDate:
+Objective-C/instm/NSDatePickerCell/setMaxDate:
+C++/instm/IOAudioLevelControl/setMaxDB
+Objective-C/instm/NSNumberFormatter/setMaximum:
+Objective-C/instm/NSNumberFormatter/setMaximumFractionDigits:
+Objective-C/instm/NSNumberFormatter/setMaximumIntegerDigits:
+Objective-C/instm/PDFAnnotationTextWidget/setMaximumLength:
+Objective-C/instm/NSMutableParagraphStyle/setMaximumLineHeight:
+Objective-C/instm/PDFThumbnailView/setMaximumNumberOfColumns:
+Objective-C/instm/NSSearchFieldCell/setMaximumRecents:
+Objective-C/instm/QTCaptureFileOutput/setMaximumRecordedDuration:
+Objective-C/instm/QTCaptureFileOutput/setMaximumRecordedFileSize:
+Objective-C/instm/NSNumberFormatter/setMaximumSignificantDigits:
+Objective-C/instm/QTCaptureFileOutput/setMaximumVideoSize:
+Objective-C/instm/NSCollectionView/setMaxItemSize:
+Objective-C/instm/NSCollectionView/setMaxNumberOfColumns:
+Objective-C/instm/NSCollectionView/setMaxNumberOfRows:
+C++/instm/IOFWAsyncCommand/setMaxPacket
+C++/instm/IONetworkController/setMaxPacketSize
+C++/instm/IOFireWireSBP2ORB/setMaxPayloadSize
+Objective-C/instm/QCView/setMaxRenderingFrameRate:
+Objective-C/instm/NSToolbarItem/setMaxSize:
+Objective-C/instm/NSWindow/setMaxSize:
+Objective-C/instm/NSText/setMaxSize:
+C++/instm/IOFireWireDevice/setMaxSpeed
+C++/instm/IONetworkInterface/setMaxTransferUnit
+C++/instm/IOAudioLevelControl/setMaxValue
+Objective-C/instm/NSStepperCell/setMaxValue:
+Objective-C/instm/NSSlider/setMaxValue:
+Objective-C/instm/NSSliderCell/setMaxValue:
+Objective-C/instm/NSStepper/setMaxValue:
+Objective-C/instm/NSLevelIndicator/setMaxValue:
+Objective-C/instm/NSProgressIndicator/setMaxValue:
+Objective-C/instm/IMAVSlider/setMaxValue:
+Objective-C/instm/NSLevelIndicatorCell/setMaxValue:
+Objective-C/instm/NSBrowser/setMaxVisibleColumns:
+Objective-C/instm/NSTableColumn/setMaxWidth:
+Objective-C/instm/ABAddressBook/setMe:
+Objective-C/instm/NSRulerView/setMeasurementUnits:
+C++/instm/IONetworkInterface/setMediaAddressLength
+Objective-C/instm/QTMedia/setMediaAttributes:
+C/func/-/SetMediaDataHandler
+C/func/-/SetMediaDefaultDataRefIndex
+C/func/-/SetMediaHandler
+C++/instm/IONetworkInterface/setMediaHeaderLength
+C/func/-/SetMediaInputMap
+C/func/-/SetMediaLanguage
+C/func/-/SetMediaPreferredChunkSize
+C/func/-/SetMediaQuality
+C/func/-/SetMediaSampleDescription
+C/func/-/SetMediaShadowSync
+Objective-C/instm/WebView/setMediaStyle:
+C/func/-/SetMediaTimeScale
+Objective-C/instm/NSURLCache/setMemoryCapacity:
+C++/instm/IODMACommand/setMemoryDescriptor
+C++/instm/IOInterleavedMemoryDescriptor/setMemoryDescriptor
+C++/instm/IOFWPhysicalAddressSpace/setMemoryDescriptor
+C++/instm/IOPCIDevice/setMemoryEnable
+Objective-C/instm/NSStatusItem/setMenu:
+Objective-C/instm/NSPopUpButtonCell/setMenu:
+Objective-C/instm/NSPopUpButton/setMenu:
+Objective-C/instm/NSMenuView/setMenu:
+Objective-C/instm/NSMenuItem/setMenu:
+Objective-C/instm/NSPathControl/setMenu:
+Objective-C/instm/NSResponder/setMenu:
+Objective-C/instm/NSCell/setMenu:
+Objective-C/instm/NSSegmentedCell/setMenu:forSegment:
+Objective-C/instm/NSSegmentedControl/setMenu:forSegment:
+Objective-C/clm/NSMenu/setMenuBarVisible:
+Objective-C/instm/NSMenu/setMenuChangedMessagesEnabled:
+Objective-C/instm/NSToolbarItem/setMenuFormRepresentation:
+Objective-C/instm/NSMenuItemCell/setMenuItem:
+Objective-C/instm/NSMenuView/setMenuItemCell:forItemAtIndex:
+Objective-C/instm/NSMenu/setMenuRepresentation:
+Objective-C/instm/NSMenuItemCell/setMenuView:
+Objective-C/clm/NSMenu/setMenuZone:
+Objective-C/instm/NSManagedObjectContext/setMergePolicy:
+Objective-C/instm/NSSavePanel/setMessage:
+Objective-C/instm/NSAlert/setMessageText:
+Objective-C/instm/NSAtomicStore/setMetadata:
+Objective-C/instm/NSPersistentStore/setMetadata:
+Objective-C/instm/IBDocument/setMetadata:forKey:ofObject:
+Objective-C/instm/NSPersistentStoreCoordinator/setMetadata:forPersistentStore:
+Objective-C/clm/NSPersistentStoreCoordinator/setMetadata:forPersistentStoreOfType:URL:error:
+Objective-C/clm/NSPersistentStore/setMetadata:forPersistentStoreWithURL:error:
+Objective-C/instm/NSXMLDocument/setMIMEType:
+Objective-C/clm/WebView/setMIMETypesShownAsHTML:
+Objective-C/instm/NSBrowser/setMinColumnWidth:
+Objective-C/instm/NSDrawer/setMinContentSize:
+Objective-C/instm/NSRelationshipDescription/setMinCount:
+Objective-C/instm/NSDatePicker/setMinDate:
+Objective-C/instm/NSDatePickerCell/setMinDate:
+C++/instm/IOAudioLevelControl/setMinDB
+Objective-C/instm/CAEmitterCell/setMinificationFilter:
+Objective-C/instm/CALayer/setMinificationFilter:
+Objective-C/instm/CAEmitterCell/setMinificationFilterBias:
+Objective-C/instm/CALayer/setMinificationFilterBias:
+Objective-C/instm/NSNumberFormatter/setMinimum:
+Objective-C/instm/NSCalendar/setMinimumDaysInFirstWeek:
+Objective-C/instm/WebPreferences/setMinimumFontSize:
+Objective-C/instm/NSNumberFormatter/setMinimumFractionDigits:
+Objective-C/instm/NSNumberFormatter/setMinimumIntegerDigits:
+Objective-C/instm/NSMutableParagraphStyle/setMinimumLineHeight:
+Objective-C/instm/WebPreferences/setMinimumLogicalFontSize:
+Objective-C/instm/NSNumberFormatter/setMinimumSignificantDigits:
+Objective-C/instm/QTCaptureFileOutput/setMinimumVideoFrameInterval:
+Objective-C/instm/QTCaptureDecompressedVideoOutput/setMinimumVideoFrameInterval:
+Objective-C/instm/NSMenu/setMinimumWidth:
+Objective-C/instm/NSCollectionView/setMinItemSize:
+Objective-C/instm/NSWindow/setMiniwindowImage:
+Objective-C/instm/NSWindow/setMiniwindowTitle:
+Objective-C/instm/NSToolbarItem/setMinSize:
+Objective-C/instm/NSWindow/setMinSize:
+Objective-C/instm/NSText/setMinSize:
+Objective-C/instm/NSNumberFormatter/setMinusSign:
+Objective-C/instm/NSDateComponents/setMinute:
+C++/instm/IOAudioLevelControl/setMinValue
+Objective-C/instm/NSStepper/setMinValue:
+Objective-C/instm/NSStepperCell/setMinValue:
+Objective-C/instm/NSSlider/setMinValue:
+Objective-C/instm/NSSliderCell/setMinValue:
+Objective-C/instm/NSLevelIndicator/setMinValue:
+Objective-C/instm/NSProgressIndicator/setMinValue:
+Objective-C/instm/IMAVSlider/setMinValue:
+Objective-C/instm/NSLevelIndicatorCell/setMinValue:
+Objective-C/instm/NSTableColumn/setMinWidth:
+Objective-C/instm/IKPictureTaker/setMirroring:
+JavaScript/instm/CanvasRenderingContext2D/setMiterLimit
+Objective-C/instm/NSBezierPath/setMiterLimit:
+Objective-C/instm/CAShapeLayer/setMiterLimit:
+C++/instm/IOAudioEngine/setMixClipOverhead
+Objective-C/instm/NSMenuItem/setMixedStateImage:
+Objective-C/instm/NSMenuItem/setMnemonicLocation:
+Objective-C/instm/NSCell/setMnemonicLocation:
+C/func/-/SetMode
+C/func/-/setmode
+C/func/-/SetMode()
+Objective-C/instm/NSColorPanel/setMode:
+Objective-C/instm/NSColorPicker/setMode:
+Objective-C/intfm/NSColorPickingDefault/setMode:
+Objective-C/instm/NSMatrix/setMode:
+Objective-C/instm/IKScannerDeviceView/setMode:
+Objective-C/instm/IKCameraDeviceView/setMode:
+Objective-C/instm/IKDeviceBrowserView/setMode:
+Objective-C/instm/PDFAnnotation/setModificationDate:
+Objective-C/instm/NSDateComponents/setMonth:
+Objective-C/instm/NSDateFormatter/setMonthSymbols:
+Objective-C/clm/NSEvent/setMouseCoalescingEnabled:
+Objective-C/instm/PDFAnnotation/setMouseUpAction:
+Objective-C/instm/NSRulerMarker/setMovable:
+Objective-C/instm/NSWindow/setMovable:
+Objective-C/instm/NSWindow/setMovableByWindowBackground:
+Objective-C/instm/QTMovieLayer/setMovie:
+Objective-C/instm/QTMovieView/setMovie:
+Objective-C/instm/QTMovie/setMovieAttributes:
+Objective-C/instm/NSPortMessage/setMsgid:
+C++/instm/IOEthernetController/setMulticastList
+C++/instm/IOEthernetController/setMulticastMode
+Objective-C/instm/NSNumberFormatter/setMultiplier:
+Objective-C/instm/QTMovie/setMuted:
+C++/instm/IORegistryEntry/setName
+Objective-C/instm/CIFilter/setName:
+Objective-C/instm/NSNameSpecifier/setName:
+Objective-C/instm/NSConditionLock/setName:
+Objective-C/instm/NSRecursiveLock/setName:
+Objective-C/instm/PDFActionNamed/setName:
+Objective-C/instm/PDFAnnotationStamp/setName:
+Objective-C/instm/NSLock/setName:
+Objective-C/instm/NSCondition/setName:
+Objective-C/instm/CAEmitterCell/setName:
+Objective-C/instm/NSPropertyMapping/setName:
+Objective-C/instm/NSEntityMapping/setName:
+Objective-C/instm/NSPropertyDescription/setName:
+Objective-C/instm/NSSound/setName:
+Objective-C/instm/NSXMLNode/setName:
+Objective-C/instm/NSImage/setName:
+Objective-C/instm/NSThread/setName:
+Objective-C/instm/NSOperationQueue/setName:
+Objective-C/instm/NSCache/setName:
+Objective-C/instm/NSEntityDescription/setName:
+Objective-C/instm/CALayer/setName:
+JavaScript/instm/NamedNodeMap/setNamedItem
+JavaScript/instm/NamedNodeMap/setNamedItemNS
+Objective-C/instm/ABPeoplePickerView/setNameDoubleAction:
+Objective-C/instm/NSSavePanel/setNameFieldLabel:
+Objective-C/instm/NSSavePanel/setNameFieldStringValue:
+Objective-C/instm/NSXMLElement/setNamespaces:
+Objective-C/instm/NSControl/setNeedsDisplay
+Objective-C/instm/CALayer/setNeedsDisplay
+Objective-C/instm/NSMenuItemCell/setNeedsDisplay:
+Objective-C/instm/NSView/setNeedsDisplay:
+Objective-C/instm/NSMenuView/setNeedsDisplayForItemAtIndex:
+Objective-C/instm/NSView/setNeedsDisplayInRect:
+Objective-C/instm/CALayer/setNeedsDisplayInRect:
+Objective-C/instm/NSTextView/setNeedsDisplayInRect:avoidAdditionalLayout:
+Objective-C/instm/CALayer/setNeedsDisplayOnBoundsChange:
+Objective-C/instm/CALayer/setNeedsLayout
+Objective-C/intfm/WebDocumentView/setNeedsLayout:
+Objective-C/instm/NSMenuItemCell/setNeedsSizing:
+Objective-C/instm/NSMenuView/setNeedsSizing:
+Objective-C/instm/NSNumberFormatter/setNegativeFormat:
+Objective-C/instm/NSNumberFormatter/setNegativeInfinitySymbol:
+Objective-C/instm/NSNumberFormatter/setNegativePrefix:
+Objective-C/instm/NSNumberFormatter/setNegativeSuffix:
+Objective-C/instm/NSRuleEditor/setNestingMode:
+C/func/-/setnetent
+C/func/-/setnetgrent
+C++/instm/IOEventSource/setNext
+Objective-C/instm/NSView/setNextKeyView:
+Objective-C/instm/NSResponder/setNextResponder:
+Objective-C/instm/NSButton/setNextState
+Objective-C/instm/NSCell/setNextState
+Objective-C/instm/NSTextField/setNextText:
+Objective-C/instm/NSNumberFormatter/setNilSymbol:
+Objective-C/instm/NSObject/setNilValueForKey:
+Objective-C/instm/ODRecord/setNodeCredentials:password:error:
+Objective-C/instm/ODRecord/setNodeCredentialsUsingKerberosCache:error:
+Objective-C/instm/ODRecord/setNodeCredentialsWithRecordType:authenticationType:authenticationItems:continueItems:context:error:
+C++/instm/IOFireWireDevice/setNodeFlags
+Objective-C/instm/NSNumberFormatter/setNotANumberSymbol:
+Objective-C/instm/NSXMLDTDNode/setNotationName:
+Objective-C/instm/CalCalendarItem/setNotes:
+Objective-C/instm/CalCalendar/setNotes:
+Objective-C/instm/NSMetadataQuery/setNotificationBatchingInterval:
+C++/instm/IODataQueue/setNotificationPort
+C++/instm/IONetworkData/setNotificationTarget
+Objective-C/instm/NSLayoutManager/setNotShownAttribute:forGlyphAtIndex:
+Objective-C/instm/NSATSTypesetter/setNotShownAttribute:forGlyphRange:
+Objective-C/instm/NSTypesetter/setNotShownAttribute:forGlyphRange:
+Objective-C/instm/FxImage/setNumActiveChannels:
+Objective-C/instm/IMAVManager/setNumberOfAudioChannels:
+Objective-C/instm/QCCompositionPickerView/setNumberOfColumns:
+Objective-C/instm/NSTextTable/setNumberOfColumns:
+Objective-C/instm/NSLevelIndicator/setNumberOfMajorTickMarks:
+Objective-C/instm/NSLevelIndicatorCell/setNumberOfMajorTickMarks:
+Objective-C/instm/QCCompositionPickerView/setNumberOfRows:
+Objective-C/instm/NSSliderCell/setNumberOfTickMarks:
+Objective-C/instm/NSSlider/setNumberOfTickMarks:
+Objective-C/instm/NSLevelIndicator/setNumberOfTickMarks:
+Objective-C/instm/NSLevelIndicatorCell/setNumberOfTickMarks:
+Objective-C/instm/NSComboBox/setNumberOfVisibleItems:
+Objective-C/instm/NSComboBoxCell/setNumberOfVisibleItems:
+Objective-C/instm/NSNumberFormatter/setNumberStyle:
+Objective-C/instm/IOBluetoothOBEXSession/setOBEXSessionOpenConnectionCallback:refCon:
+C++/instm/OSDictionary/setObject
+C++/instm/OSArray/setObject
+C++/instm/OSOrderedSet/setObject
+C++/instm/OSSet/setObject
+Objective-C/instm/ISyncClient/setObject:forKey:
+Objective-C/instm/NSMapTable/setObject:forKey:
+Objective-C/instm/NSUserDefaults/setObject:forKey:
+Objective-C/instm/NSMutableDictionary/setObject:forKey:
+Objective-C/instm/NSCache/setObject:forKey:
+Objective-C/instm/NSCache/setObject:forKey:cost:
+Objective-C/instm/DRCDTextBlock/setObject:forKey:ofTrack:
+Objective-C/instm/NSSpeechSynthesizer/setObject:forProperty:error:
+Objective-C/instm/NSScriptExecutionContext/setObjectBeingTested:
+Objective-C/instm/NSObjectController/setObjectClass:
+Objective-C/instm/NSActionCell/setObjectValue:
+Objective-C/instm/NSPopUpButtonCell/setObjectValue:
+Objective-C/instm/NSPopUpButton/setObjectValue:
+Objective-C/instm/NSControl/setObjectValue:
+Objective-C/instm/NSPathCell/setObjectValue:
+Objective-C/instm/NSXMLNode/setObjectValue:
+Objective-C/instm/NSCell/setObjectValue:
+Objective-C/instm/NSUnarchiver/setObjectZone:
+Objective-C/instm/NSCoder/setObjectZone:
+Objective-C/instm/NSObject/setObservationInfo:
+Objective-C/instm/NSManagedObject/setObservationInfo:
+Objective-C/instm/CalRecurrenceEnd/setOccurrenceCount:
+Objective-C/instm/NSOpenGLContext/setOffScreen:width:height:rowbytes:
+Objective-C/instm/NSMenuItem/setOffStateImage:
+Objective-C/instm/NSWindow/setOneShot:
+Objective-C/instm/NSCursor/setOnMouseEntered:
+Objective-C/instm/NSCursor/setOnMouseExited:
+Objective-C/instm/NSMenuItem/setOnStateImage:
+Objective-C/instm/PDFAnnotationButtonWidget/setOnStateValue:
+Objective-C/instm/CALayer/setOpacity:
+Objective-C/instm/NSImageRep/setOpaque:
+Objective-C/instm/NSWindow/setOpaque:
+Objective-C/instm/CALayer/setOpaque:
+C++/instm/IOATACommand/setOpcode
+Objective-C/instm/NSOpenGLView/setOpenGLContext:
+Objective-C/instm/NSOpenGLLayer/setOpenGLContext:
+Objective-C/instm/NSOpenGLLayer/setOpenGLPixelFormat:
+Objective-C/instm/IOBluetoothOBEXSession/setOpenTransportConnectionAsyncSelector:target:refCon:
+Objective-C/instm/ODQuery/setOperationQueue:
+Objective-C/instm/NSPropertyDescription/setOptional:
+Objective-C/clm/WebHistory/setOptionalSharedHistory:
+C++/instm/OSArray/setOptions
+C++/instm/OSCollection/setOptions
+C++/instm/OSDictionary/setOptions
+C++/instm/OSSet/setOptions
+C++/instm/OSOrderedSet/setOptions
+Objective-C/instm/NSPrintPanel/setOptions:
+Objective-C/instm/IOBluetoothDeviceSelectorController/setOptions:
+Objective-C/instm/IOBluetoothPairingController/setOptions:
+Objective-C/instm/IOBluetoothServiceBrowserController/setOptions:
+Objective-C/instm/NSWindow/setOrderedIndex:
+Objective-C/instm/NSRulerView/setOrientation:
+Objective-C/instm/NSPrintInfo/setOrientation:
+JavaScript/instm/SVGMarkerElement/setOrientToAngle
+JavaScript/instm/SVGMarkerElement/setOrientToAuto
+Objective-C/instm/FxImage/setOrigin:
+Objective-C/instm/NSRulerView/setOriginOffset:
+Objective-C/instm/PDFDocument/setOutlineRoot:
+Objective-C/instm/NSOutlineView/setOutlineTableColumn:
+C/func/-/SetOutputCallback
+Objective-C/instm/QTCaptureAudioPreviewOutput/setOutputDeviceUniqueID:
+Objective-C/instm/NSKeyedArchiver/setOutputFormat:
+C++/instm/IOStream/setOutputPort
+C++/instm/IOAudioEngine/setOutputSampleOffset
+C++/instm/IOATABusInfo/setOverlapped
+Objective-C/instm/IKImageView/setOverlay:forType:
+Objective-C/instm/IKScannerDeviceView/setOverviewControlLabel:
+C++/instm/IOATACommand/setPacketCommand
+C++/instm/IOATADevConfig/setPacketConfig
+Objective-C/instm/NSNumberFormatter/setPaddingCharacter:
+Objective-C/instm/NSNumberFormatter/setPaddingPosition:
+Objective-C/instm/WebBackForwardList/setPageCacheSize:
+Objective-C/instm/PDFActionRemoteGoTo/setPageIndex:
+Objective-C/instm/NSPrintOperation/setPageOrder:
+Objective-C/instm/NSScrollView/setPageScroll:
+JavaScript/instm/SVGPaint/setPaint
+Objective-C/instm/NSToolbarItem/setPaletteLabel:
+Objective-C/instm/NSFontPanel/setPanelFont:isMultiple:
+Objective-C/instm/IMKCandidates/setPanelType:
+Objective-C/instm/NSPrintInfo/setPaperName:
+Objective-C/instm/NSPrintInfo/setPaperSize:
+Objective-C/instm/NSATSTypesetter/setParagraphGlyphRange:separatorGlyphRange:
+Objective-C/instm/NSTypesetter/setParagraphGlyphRange:separatorGlyphRange:
+Objective-C/instm/NSTextStorage/setParagraphs:
+Objective-C/instm/NSMutableParagraphStyle/setParagraphSpacing:
+Objective-C/instm/NSMutableParagraphStyle/setParagraphSpacingBefore:
+Objective-C/instm/NSMutableParagraphStyle/setParagraphStyle:
+Objective-C/instm/NSAppleEventDescriptor/setParamDescriptor:forKeyword:
+JavaScript/instm/XSLTProcessor/setParameter
+Objective-C/intfm/FxParameterSettingAPI/setParameterFlags:toParm:
+Objective-C/instm/AMBundleAction/setParameters:
+C/func/-/setParentCurrentPowerFlags
+C/func/-/setParentKnowsState
+Objective-C/instm/NSDrawer/setParentWindow:
+Objective-C/instm/NSWindow/setParentWindow:
+Objective-C/instm/NSNumberFormatter/setPartialStringValidationEnabled:
+C/func/-/setpassent
+Objective-C/instm/SFKeychainSavePanel/setPassword:
+Objective-C/instm/PSFeed/setPassword:
+Objective-C/instm/XGTwoWayRandomAuthenticator/setPassword:
+Objective-C/instm/NSBrowser/setPath:
+Objective-C/instm/CAShapeLayer/setPath:
+Objective-C/instm/CAKeyframeAnimation/setPath:
+Objective-C/instm/NSPathCell/setPathComponentCells:
+Objective-C/instm/NSPathControl/setPathComponentCells:
+Objective-C/instm/NSBrowser/setPathSeparator:
+Objective-C/instm/NSPathCell/setPathStyle:
+Objective-C/instm/NSPathControl/setPathStyle:
+Objective-C/instm/NSGraphicsContext/setPatternPhase:
+JavaScript/instm/InspectorBackend/setPauseOnExceptionsState
+Objective-C/instm/PDFThumbnailView/setPDFView:
+Objective-C/instm/NSNumberFormatter/setPercentSymbol:
+Objective-C/instm/NSButton/setPeriodicDelay:interval:
+Objective-C/instm/NSButtonCell/setPeriodicDelay:interval:
+Objective-C/instm/NSNumberFormatter/setPerMillSymbol:
+Objective-C/instm/NSUserDefaults/setPersistentDomain:forName:
+Objective-C/instm/NSManagedObjectContext/setPersistentStoreCoordinator:
+C/func/-/setpgid
+C/func/-/setpgrp
+Objective-C/clm/NSColorPanel/setPickerMask:
+Objective-C/clm/NSColorPanel/setPickerMode:
+C++/instm/IOATADevConfig/setPIOCycleTime
+C++/instm/IOATADevConfig/setPIOMode
+C++/instm/IOATABusInfo/setPIOModes
+C++/instm/IOUSBPipe/SetPipePolicy
+Objective-C/instm/NSBitmapImageRep/setPixel:atX:y:
+Objective-C/instm/FxImage/setPixelAspect:
+Objective-C/instm/NSOpenGLContext/setPixelBuffer:cubeMapFace:mipMapLevel:currentVirtualScreen:
+Objective-C/instm/QTCaptureVideoPreviewOutput/setPixelBufferAttributes:
+Objective-C/instm/QTCaptureDecompressedVideoOutput/setPixelBufferAttributes:
+Objective-C/instm/NSOpenGLView/setPixelFormat:
+Objective-C/instm/FxImage/setPixelFormat:
+Objective-C/instm/NSImageRep/setPixelsHigh:
+Objective-C/instm/NSImageRep/setPixelsWide:
+Objective-C/instm/NSFormCell/setPlaceholderAttributedString:
+Objective-C/instm/NSPathCell/setPlaceholderAttributedString:
+Objective-C/instm/NSTextFieldCell/setPlaceholderAttributedString:
+Objective-C/instm/NSFormCell/setPlaceholderString:
+Objective-C/instm/NSPathCell/setPlaceholderString:
+Objective-C/instm/NSTextFieldCell/setPlaceholderString:
+Objective-C/instm/NSSound/setPlaybackDeviceIdentifier:
+Objective-C/instm/WebPreferences/setPlugInsEnabled:
+C/func/-/SetPluginState
+Objective-C/instm/NSNumberFormatter/setPlusSign:
+Objective-C/instm/NSDateFormatter/setPMSymbol:
+Objective-C/instm/PDFActionRemoteGoTo/setPoint:
+Objective-C/instm/SFCertificatePanel/setPolicies:
+Objective-C/instm/SFCertificateView/setPolicies:
+Objective-C/instm/SFChooseIdentityPanel/setPolicies:
+Objective-C/instm/WebView/setPolicyDelegate:
+Objective-C/instm/PDFAnnotation/setPopup:
+C++/instm/IOATACommand/setPosition
+JavaScript/instm/DOMSelection/setPosition
+Objective-C/instm/CALayer/setPosition:
+Objective-C/instm/NSSplitView/setPosition:ofDividerAtIndex:
+Objective-C/instm/NSNumberFormatter/setPositiveFormat:
+Objective-C/instm/NSNumberFormatter/setPositiveInfinitySymbol:
+Objective-C/instm/NSNumberFormatter/setPositivePrefix:
+Objective-C/instm/NSNumberFormatter/setPositiveSuffix:
+Objective-C/instm/IKScannerDeviceView/setPostProcessApplication:
+Objective-C/instm/IKCameraDeviceView/setPostProcessApplication:
+Objective-C/instm/NSView/setPostsBoundsChangedNotifications:
+Objective-C/instm/NSView/setPostsFrameChangedNotifications:
+Objective-C/instm/CWInterface/setPower:error:
+C++/instm/IOService/setPowerParent
+C++/instm/IOAudioDevice/setPowerState
+C++/instm/IOService/setPowerState
+C++/instm/IOSCSIProtocolInterface/setPowerState
+C++/clm/IOAudioDevice/setPowerStateAction
+Objective-C/instm/NSPredicateEditorRowTemplate/setPredicate:
+Objective-C/instm/NSMetadataQuery/setPredicate:
+Objective-C/instm/NSFetchRequest/setPredicate:
+Objective-C/instm/WebView/setPreferences:
+Objective-C/instm/WebView/setPreferencesIdentifier:
+Objective-C/instm/NSWindow/setPreferredBackingLocation:
+Objective-C/instm/NSPopUpButton/setPreferredEdge:
+Objective-C/instm/NSPopUpButtonCell/setPreferredEdge:
+Objective-C/instm/NSDrawer/setPreferredEdge:
+Objective-C/instm/NSFileWrapper/setPreferredFilename:
+Objective-C/clm/NSFont/setPreferredFontNames:
+Objective-C/instm/NSBrowser/setPrefersAllColumnUserResizing:
+Objective-C/instm/NSImage/setPrefersColorMatch:
+Objective-C/instm/DRTrack(PropertyConvenience)/setPreGap:
+Objective-C/instm/NSApplication/setPresentationOptions:
+Objective-C/instm/QTCaptureView/setPreservesAspectRatio:
+Objective-C/instm/QTMovieView/setPreservesAspectRatio:
+Objective-C/instm/NSWindow/setPreservesContentDuringLiveResize:
+Objective-C/instm/CAEmitterLayer/setPreservesDepth:
+Objective-C/instm/CAReplicatorLayer/setPreservesDepth:
+Objective-C/instm/NSTreeController/setPreservesSelection:
+Objective-C/instm/NSArrayController/setPreservesSelection:
+C/func/-/setPreventIdleSleepFlag
+Objective-C/instm/NSWindow/setPreventsApplicationTerminationWhenModal:
+C/func/-/setPreventSystemSleepFlag
+Objective-C/intfm/QLPreviewItem/setPreviewItemDisplayState:
+Objective-C/intfm/QLPreviewItem/setPreviewItemTitle:
+Objective-C/intfm/QLPreviewItem/setPreviewItemURL:
+Objective-C/instm/IKFilterBrowserView/setPreviewState:
+Objective-C/instm/NSTextField/setPreviousText:
+Objective-C/instm/ABMutableMultiValue/setPrimaryIdentifier:
+Objective-C/instm/NSManagedObject/setPrimitiveValue:forKey:
+Objective-C/instm/NSPrintInfo/setPrinter:
+Objective-C/instm/NSPrintOperation/setPrintInfo:
+Objective-C/instm/NSDocument/setPrintInfo:
+Objective-C/instm/NSPrintOperation/setPrintPanel:
+C/func/-/setpriority
+Objective-C/instm/CalTask/setPriority:
+Objective-C/instm/WebPreferences/setPrivateBrowsingEnabled:
+Objective-C/instm/NSProcessInfo/setProcessName:
+C/func/-/setprogname
+Objective-C/instm/NSAnimation/setProgressMarks:
+C++/instm/IOEthernetController/setPromiscuousMode
+Objective-C/instm/NSSavePanel/setPrompt:
+Objective-C/instm/IOBluetoothDeviceSelectorController/setPrompt:
+Objective-C/instm/IOBluetoothPairingController/setPrompt:
+Objective-C/instm/IOBluetoothServiceBrowserController/setPrompt:
+Objective-C/instm/NSManagedObjectContext/setPropagatesDeletesAtEndOfEvent:
+C++/instm/IONetworkUserClient/setProperties
+C++/instm/IONetworkInterface/setProperties
+C++/instm/IOEthernetInterface/setProperties
+C++/instm/IOAudioControl/setProperties
+C++/instm/IORegistryEntry/setProperties
+Objective-C/instm/DRBurn/setProperties:
+Objective-C/instm/DRCDTextBlock/setProperties:
+Objective-C/instm/DRErase/setProperties:
+Objective-C/instm/DRTrack/setProperties:
+Objective-C/instm/NSEntityDescription/setProperties:
+Objective-C/instm/DRFSObject/setProperties:inFilesystem:
+Objective-C/instm/NSFetchRequest/setPropertiesToFetch:
+C/func/-/SetProperty
+C++/instm/IORegistryEntry/setProperty
+JavaScript/instm/CSSStyleDeclaration/setProperty
+Objective-C/instm/NSStream/setProperty:forKey:
+Objective-C/instm/NSURL/setProperty:forKey:
+Objective-C/instm/DRFSObject/setProperty:forKey:inFilesystem:
+Objective-C/clm/NSURLProtocol/setProperty:forKey:inRequest:
+Objective-C/instm/NSBitmapImageRep/setProperty:withValue:
+Objective-C/instm/NSAtomicStoreCacheNode/setPropertyCache:
+Objective-C/instm/NSPasteboardItem/setPropertyList:forType:
+Objective-C/instm/NSPasteboard/setPropertyList:forType:
+C++/instm/IORegistryEntry/setPropertyTable
+Objective-C/instm/NSDistantObject/setProtocolForProxy:
+Objective-C/instm/NSNetService/setProtocolSpecificInformation:
+C/func/-/setprotoent
+Objective-C/instm/NSMatrix/setPrototype:
+Objective-C/instm/NSXMLDTDNode/setPublicID:
+Objective-C/instm/NSXMLDTD/setPublicID:
+Objective-C/instm/NSPopUpButton/setPullsDown:
+Objective-C/instm/NSPopUpButtonCell/setPullsDown:
+C++/instm/IOMemoryDescriptor/setPurgeable
+C/func/-/setpwent
+C/func/-/setpwfile
+Objective-C/instm/PDFAnnotationMarkup/setQuadrilateralPoints:
+Objective-C/instm/NSDateComponents/setQuarter:
+Objective-C/instm/NSDateFormatter/setQuarterSymbols:
+Objective-C/instm/NSOperation/setQueuePriority:
+JavaScript/instm/SVGFEMorphologyElement/setRadius
+Objective-C/instm/NSScriptExecutionContext/setRangeContainerObject:
+Objective-C/instm/NSSpeechSynthesizer/setRate:
+Objective-C/instm/QTMovie/setRate:
+Objective-C/instm/NSPersistentStore/setReadOnly:
+C++/instm/IOAudioControl/setReadOnlyFlag
+C/func/-/setReadyFlag
+C++/instm/IOSCSIParallelInterfaceController/SetRealizedDataTransferCount
+Objective-C/instm/NSDeleteCommand/setReceiversSpecifier:
+Objective-C/instm/NSMoveCommand/setReceiversSpecifier:
+Objective-C/instm/NSSetCommand/setReceiversSpecifier:
+Objective-C/instm/NSCloneCommand/setReceiversSpecifier:
+Objective-C/instm/NSScriptCommand/setReceiversSpecifier:
+Objective-C/instm/NSSearchField/setRecentsAutosaveName:
+Objective-C/instm/NSSearchFieldCell/setRecentsAutosaveName:
+Objective-C/instm/NSSearchField/setRecentSearches:
+Objective-C/instm/NSSearchFieldCell/setRecentSearches:
+Objective-C/instm/CalEvent/setRecurrenceRule:
+Objective-C/instm/CAEmitterCell/setRedRange:
+Objective-C/instm/CAEmitterCell/setRedSpeed:
+Objective-C/intfm/FxParameterSettingAPI/setRedValue:GreenValue:BlueValue:AlphaValue:toParm:atTime:
+Objective-C/intfm/FxParameterSettingAPI/setRedValue:GreenValue:BlueValue:toParm:atTime:
+C++/instm/IOFireWireSBP2ORB/setRefCon
+C++/instm/IOFireWireSBP2ORB/setRefCon64
+Objective-C/instm/NSControl/setRefusesFirstResponder:
+Objective-C/instm/NSCell/setRefusesFirstResponder:
+C/func/-/setregid
+C++/instm/IOATACommand/setRegMask
+Objective-C/instm/NSFetchRequest/setRelationshipKeyPathsForPrefetching:
+Objective-C/instm/NSEntityMapping/setRelationshipMappings:
+Objective-C/instm/NSRelativeSpecifier/setRelativePosition:
+Objective-C/instm/CalAlarm/setRelativeTrigger:
+Objective-C/instm/NSWindow/setReleasedWhenClosed:
+Objective-C/instm/NSPointerFunctions/setRelinquishFunction:
+Objective-C/instm/NSRulerMarker/setRemovable:
+Objective-C/instm/CAAnimation/setRemovedOnCompletion:
+Objective-C/instm/NSPropertyDescription/setRenamingIdentifier:
+Objective-C/instm/NSEntityDescription/setRenamingIdentifier:
+Objective-C/instm/CAEmitterLayer/setRenderMode:
+Objective-C/intfm/CAMediaTiming/setRepeatCount:
+Objective-C/intfm/CAMediaTiming/setRepeatDuration:
+Objective-C/instm/NSConnection/setReplyTimeout:
+C++/instm/IOHIDDevice/setReport
+Objective-C/instm/NSHashTable/setRepresentation
+Objective-C/instm/NSWindow/setRepresentedFilename:
+Objective-C/instm/NSRulerMarker/setRepresentedObject:
+Objective-C/instm/NSViewController/setRepresentedObject:
+Objective-C/instm/NSCollectionViewItem/setRepresentedObject:
+Objective-C/instm/NSMenuItem/setRepresentedObject:
+Objective-C/instm/NSCell/setRepresentedObject:
+Objective-C/instm/NSWindow/setRepresentedURL:
+Objective-C/instm/DRBurn(PropertyConvenienceMethods)/setRequestedBurnSpeed:
+JavaScript/instm/XMLHttpRequest/setRequestHeader
+Objective-C/instm/NSConnection/setRequestTimeout:
+Objective-C/instm/NSSavePanel/setRequiredFileType:
+C/func/-/SetResAttrs
+Objective-C/instm/NSRulerView/setReservedThicknessForAccessoryView:
+Objective-C/instm/NSRulerView/setReservedThicknessForMarkers:
+C/func/-/SetResFileAttrs
+C/func/-/SetResInfo
+Objective-C/instm/NSTableColumn/setResizable:
+Objective-C/instm/NSWindow/setResizeIncrements:
+Objective-C/instm/NSTableColumn/setResizingMask:
+C/func/-/SetResLoad
+Objective-C/instm/NSOpenPanel/setResolvesAliases:
+Objective-C/instm/NSURL/setResourceData:
+Objective-C/instm/WebView/setResourceLoadDelegate:
+C/func/-/SetResourceSize
+Objective-C/instm/NSURL/setResourceValue:forKey:error:
+Objective-C/instm/NSURL/setResourceValues:error:
+C/func/-/SetResPurge
+C/func/-/SetResult
+C++/instm/IOATABusCommand/setResult
+Objective-C/instm/NSFetchRequest/setResultType:
+Objective-C/instm/NSManagedObjectContext/setRetainsRegisteredObjects:
+Objective-C/instm/NSFetchRequest/setReturnsDistinctResults:
+Objective-C/instm/NSFetchRequest/setReturnsObjectsAsFaults:
+Objective-C/instm/NSInvocation/setReturnValue:
+C/func/-/setreuid
+Objective-C/instm/NSBrowser/setReusesColumns:
+Objective-C/instm/IOBluetoothRFCOMMAudioController/setRFCOMMChannel:
+JavaScript/instm/SVGColor/setRGBColor
+JavaScript/instm/SVGColor/setRGBColorICCColor
+C/func/-/setrgid
+Objective-C/instm/NSTextView/setRichText:
+Objective-C/instm/NSText/setRichText:
+Objective-C/instm/NSPrintInfo/setRightMargin:
+C/func/-/setrlimit
+Objective-C/instm/CIKernel/setROISelector:
+Objective-C/instm/NSXMLDocument/setRootElement:
+C++/instm/IOUSBController/SetRootHubDescriptor
+C++/instm/IOUSBController/SetRootHubFeature
+C++/instm/IOUSBController/SetRootHubPortFeature
+Objective-C/instm/NSConnection/setRootObject:
+JavaScript/instm/SVGTransform/setRotate
+Objective-C/instm/PDFAnnotationTextWidget/setRotation:
+Objective-C/instm/PDFPage/setRotation:
+Objective-C/instm/IKImageView/setRotationAngle:
+Objective-C/instm/IKImageView/setRotationAngle:centerPoint:
+Objective-C/instm/CAKeyframeAnimation/setRotationMode:
+Objective-C/instm/NSNumberFormatter/setRoundingBehavior:
+Objective-C/instm/NSNumberFormatter/setRoundingIncrement:
+Objective-C/instm/NSNumberFormatter/setRoundingMode:
+Objective-C/instm/FxBitmap/setRowBytes:
+Objective-C/instm/NSRuleEditor/setRowClass:
+Objective-C/instm/NSBrowser/setRowHeight:
+Objective-C/instm/NSRuleEditor/setRowHeight:
+Objective-C/instm/NSTableView/setRowHeight:
+Objective-C/instm/NSPredicateEditor/setRowTemplates:
+Objective-C/instm/NSRuleEditor/setRowTypeKeyPath:
+C/func/-/setrpcent
+C/func/-/setruid
+Objective-C/instm/NSScrollView/setRulersVisible:
+Objective-C/clm/NSScrollView/setRulerViewClass:
+Objective-C/instm/NSTextView/setRulerVisible:
+JavaScript/instm/InspectorBackend/setRuleSelector
+Objective-C/instm/NSRulerView/setRuleThickness:
+C/func/-/setrunelocale
+C++/instm/IOAudioEngine/setRunEraseHead
+Objective-C/instm/NSUndoManager/setRunLoopModes:
+C++/instm/IOAudioEngine/setSampleLatency
+C++/instm/IOAudioEngine/setSampleRate
+Objective-C/instm/WebPreferences/setSansSerifFontFamily:
+JavaScript/instm/SVGTransform/setScale
+Objective-C/instm/CAEmitterLayer/setScale:
+Objective-C/instm/CAEmitterCell/setScale:
+Objective-C/instm/PDFView/setScaleFactor:
+Objective-C/instm/CAEmitterCell/setScaleRange:
+Objective-C/instm/CAEmitterCell/setScaleSpeed:
+Objective-C/instm/NSImage/setScalesWhenResized:
+Objective-C/instm/NSPrintInfo/setScalingFactor:
+Objective-C/instm/IKScannerDeviceView/setScanControlLabel:
+Objective-C/instm/NSScanner/setScanLocation:
+Objective-C/instm/IKScannerDeviceView/setScannerDevice:
+Objective-C/instm/AMAppleScriptAction/setScript:
+Objective-C/instm/NSScriptCommand/setScriptErrorExpectedTypeDescriptor:
+Objective-C/instm/NSScriptCommand/setScriptErrorNumber:
+Objective-C/instm/NSScriptCommand/setScriptErrorOffendingObjectDescriptor:
+Objective-C/instm/NSScriptCommand/setScriptErrorString:
+Objective-C/instm/NSObject/setScriptingProperties:
+Objective-C/instm/NSMatrix/setScrollable:
+Objective-C/instm/NSCell/setScrollable:
+Objective-C/instm/CAScrollLayer/setScrollMode:
+Objective-C/instm/NSScrollView/setScrollsDynamically:
+Objective-C/instm/NSRulerView/setScrollView:
+C/func/-/setscrreg
+C++/instm/IOSCSIParallelInterfaceController/SetSCSIParallelFeatureNegotiationResult
+Objective-C/instm/IOBluetoothDeviceSelectorController/setSearchAttributes:
+Objective-C/instm/IOBluetoothPairingController/setSearchAttributes:
+Objective-C/instm/IOBluetoothServiceBrowserController/setSearchAttributes:
+Objective-C/instm/NSSearchFieldCell/setSearchButtonCell:
+Objective-C/instm/IOBluetoothDeviceInquiry/setSearchCriteria:majorDeviceClass:minorDeviceClass:
+Objective-C/instm/NSSearchFieldCell/setSearchMenuTemplate:
+Objective-C/instm/NSMetadataQuery/setSearchScopes:
+Objective-C/instm/NSDateComponents/setSecond:
+Objective-C/instm/NSNumberFormatter/setSecondaryGroupingSize:
+C++/instm/IOATACommand/setSectorCount
+C++/instm/IOExtendedLBA/setSectorCount16
+C++/instm/IOATACommand/setSectorNumber
+Objective-C/instm/CAEmitterLayer/setSeed:
+Objective-C/instm/NSSegmentedCell/setSegmentCount:
+Objective-C/instm/NSSegmentedControl/setSegmentCount:
+Objective-C/instm/NSSegmentedControl/setSegmentStyle:
+Objective-C/instm/NSSegmentedCell/setSegmentStyle:
+Objective-C/instm/NSTextField/setSelectable:
+Objective-C/instm/NSCollectionView/setSelectable:
+Objective-C/instm/NSTextView/setSelectable:
+Objective-C/instm/NSText/setSelectable:
+Objective-C/instm/NSCell/setSelectable:
+Objective-C/instm/NSCollectionViewItem/setSelected:
+Objective-C/instm/NSSegmentedCell/setSelected:forSegment:
+Objective-C/instm/NSSegmentedControl/setSelected:forSegment:
+Objective-C/instm/NSFontManager/setSelectedAttributes:isMultiple:
+Objective-C/instm/QCCompositionPickerView/setSelectedComposition:
+Objective-C/instm/WebView/setSelectedDOMRange:affinity:
+Objective-C/instm/NSFontManager/setSelectedFont:isMultiple:
+Objective-C/instm/ABPeoplePickerView/setSelectedGroups:
+Objective-C/instm/NSToolbar/setSelectedItemIdentifier:
+Objective-C/instm/NSTextInputContext/setSelectedKeyboardInputSource:
+C++/instm/IONetworkController/setSelectedMedium
+Objective-C/instm/NSArrayController/setSelectedObjects:
+Objective-C/instm/NSTextView/setSelectedRange:
+Objective-C/instm/NSText/setSelectedRange:
+Objective-C/instm/NSTextView/setSelectedRange:affinity:stillSelecting:
+Objective-C/instm/NSTextView/setSelectedRanges:
+Objective-C/instm/NSTextView/setSelectedRanges:affinity:stillSelecting:
+Objective-C/instm/ABPeoplePickerView/setSelectedRecords:
+Objective-C/instm/NSSegmentedCell/setSelectedSegment:
+Objective-C/instm/NSSegmentedControl/setSelectedSegment:
+Objective-C/instm/NSTextView/setSelectedTextAttributes:
+Objective-C/instm/QTMovie/setSelection:
+Objective-C/instm/NSMatrix/setSelectionByRect:
+Objective-C/instm/NSMatrix/setSelectionFrom:to:anchor:highlight:
+Objective-C/instm/NSTextView/setSelectionGranularity:
+Objective-C/instm/NSTableView/setSelectionHighlightStyle:
+Objective-C/instm/NSArrayController/setSelectionIndex:
+Objective-C/instm/NSCollectionView/setSelectionIndexes:
+Objective-C/instm/NSArrayController/setSelectionIndexes:
+Objective-C/instm/IKImageBrowserView/setSelectionIndexes:byExtendingSelection:
+Objective-C/instm/NSTreeController/setSelectionIndexPath:
+Objective-C/instm/NSBrowser/setSelectionIndexPath:
+Objective-C/instm/NSTreeController/setSelectionIndexPaths:
+Objective-C/instm/NSBrowser/setSelectionIndexPaths:
+Objective-C/instm/IMKCandidates/setSelectionKeys:
+Objective-C/instm/IMKCandidates/setSelectionKeysKeylayout:
+Objective-C/instm/NSPrintInfo/setSelectionOnly:
+JavaScript/instm/HTMLInputElement/setSelectionRange
+JavaScript/instm/HTMLTextAreaElement/setSelectionRange
+Objective-C/instm/NSInvocation/setSelector:
+Objective-C/instm/NSTreeController/setSelectsInsertedObjects:
+Objective-C/instm/NSArrayController/setSelectsInsertedObjects:
+Objective-C/instm/SBApplication/setSendMode:
+Objective-C/instm/NSBrowser/setSendsActionOnArrowKeys:
+Objective-C/instm/NSCell/setSendsActionOnEndEditing:
+Objective-C/instm/NSSearchFieldCell/setSendsSearchStringImmediately:
+Objective-C/instm/NSSearchFieldCell/setSendsWholeSearchString:
+Objective-C/instm/NSBrowser/setSeparatesColumns:
+C/func/-/SetSequenceProgressProc
+Objective-C/instm/QCPlugIn/setSerializedValue:forKey:
+Objective-C/instm/IOBluetoothRFCOMMChannel/setSerialParameters:dataBits:parity:stopBits:
+Objective-C/instm/WebPreferences/setSerifFontFamily:
+C/func/-/setservent
+Objective-C/instm/XGGSSAuthenticator/setServicePrincipal:
+Objective-C/instm/NSApplication/setServicesMenu:
+Objective-C/instm/NSApplication/setServicesProvider:
+Objective-C/instm/QTCaptureLayer/setSession:
+Objective-C/instm/NSMutableSet/setSet:
+JavaScript/instm/CanvasRenderingContext2D/setShadow
+Objective-C/instm/NSView/setShadow:
+Objective-C/instm/NSShadow/setShadowBlurRadius:
+Objective-C/instm/NSShadow/setShadowColor:
+Objective-C/instm/CALayer/setShadowColor:
+Objective-C/instm/NSShadow/setShadowOffset:
+Objective-C/instm/CALayer/setShadowOffset:
+Objective-C/instm/CALayer/setShadowOpacity:
+Objective-C/instm/CALayer/setShadowRadius:
+Objective-C/clm/NSPrintInfo/setSharedPrintInfo:
+Objective-C/clm/NSScriptSuiteRegistry/setSharedScriptSuiteRegistry:
+Objective-C/clm/NSURLCache/setSharedURLCache:
+Objective-C/instm/NSWindow/setSharingType:
+Objective-C/instm/NSDateFormatter/setShortMonthSymbols:
+Objective-C/instm/NSDateFormatter/setShortQuarterSymbols:
+Objective-C/instm/NSDateFormatter/setShortStandaloneMonthSymbols:
+Objective-C/instm/NSDateFormatter/setShortStandaloneQuarterSymbols:
+Objective-C/instm/NSDateFormatter/setShortStandaloneWeekdaySymbols:
+Objective-C/instm/NSDateFormatter/setShortWeekdaySymbols:
+Objective-C/instm/PDFView/setShouldAntiAlias:
+Objective-C/instm/NSGraphicsContext/setShouldAntialias:
+Objective-C/instm/NSWindowController/setShouldCascadeWindows:
+Objective-C/instm/NSWindowController/setShouldCloseDocument:
+Objective-C/instm/WebView/setShouldCloseWithWindow:
+Objective-C/instm/NSDocumentController/setShouldCreateUI:
+Objective-C/instm/PDFAnnotation/setShouldDisplay:
+Objective-C/instm/PDFAnnotation/setShouldPrint:
+Objective-C/instm/WebPreferences/setShouldPrintBackgrounds:
+Objective-C/instm/NSXMLParser/setShouldProcessNamespaces:
+Objective-C/instm/ISyncClient/setShouldReplaceClientRecords:forEntityNames:
+Objective-C/instm/NSXMLParser/setShouldReportNamespacePrefixes:
+Objective-C/instm/NSXMLParser/setShouldResolveExternalEntities:
+Objective-C/instm/ISyncClient/setShouldSynchronize:withClientsOfType:
+Objective-C/instm/WebView/setShouldUpdateWhileOffscreen:
+Objective-C/instm/NSPrintOperation/setShowPanels:
+Objective-C/instm/NSColorPanel/setShowsAlpha:
+Objective-C/instm/NSDockTile/setShowsApplicationBadge:
+Objective-C/instm/NSToolbar/setShowsBaselineSeparator:
+Objective-C/instm/NSButton/setShowsBorderOnlyWhileMouseInside:
+Objective-C/instm/NSButtonCell/setShowsBorderOnlyWhileMouseInside:
+Objective-C/instm/QCCompositionPickerView/setShowsCompositionNames:
+Objective-C/instm/NSLayoutManager/setShowsControlCharacters:
+Objective-C/instm/AUGenericView/setShowsExpertParameters:
+Objective-C/instm/NSCell/setShowsFirstResponder:
+Objective-C/instm/SFCertificatePanel/setShowsHelp:
+Objective-C/instm/NSAlert/setShowsHelp:
+Objective-C/instm/SFChooseIdentityPanel/setShowsHelp:
+Objective-C/instm/NSSavePanel/setShowsHiddenFiles:
+Objective-C/instm/NSLayoutManager/setShowsInvisibleCharacters:
+Objective-C/instm/NSPrintOperation/setShowsPrintPanel:
+Objective-C/instm/NSPrintOperation/setShowsProgressPanel:
+Objective-C/instm/NSWindow/setShowsResizeIndicator:
+Objective-C/instm/QTMovieView/setShowsResizeIndicator:
+Objective-C/instm/NSButtonCell/setShowsStateBy:
+Objective-C/instm/NSMenu/setShowsStateColumn:
+Objective-C/instm/NSAlert/setShowsSuppressionButton:
+Objective-C/instm/NSWindow/setShowsToolbarButton:
+C/func/-/setsid
+Objective-C/instm/NSImageRep/setSize:
+Objective-C/instm/NSImage/setSize:
+Objective-C/instm/NSPointerFunctions/setSizeFunction:
+Objective-C/instm/NSToolbar/setSizeMode:
+JavaScript/instm/SVGTransform/setSkewX
+JavaScript/instm/SVGTransform/setSkewY
+Objective-C/instm/NSSliderCell/setSliderType:
+Objective-C/instm/NSTextView/setSmartInsertDeleteEnabled:
+Objective-C/instm/WebView/setSmartInsertDeleteEnabled:
+C++/instm/IOATABusInfo/setSocketType
+C/func/-/setsockopt
+Objective-C/instm/NSTableColumn/setSortDescriptorPrototype:
+Objective-C/instm/NSTreeController/setSortDescriptors:
+Objective-C/instm/NSMetadataQuery/setSortDescriptors:
+Objective-C/instm/NSArrayController/setSortDescriptors:
+Objective-C/instm/NSTableView/setSortDescriptors:
+Objective-C/instm/NSFetchRequest/setSortDescriptors:
+Objective-C/instm/NSButton/setSound:
+Objective-C/instm/CalAlarm/setSound:
+Objective-C/instm/NSButtonCell/setSound:
+Objective-C/instm/NSNibConnector/setSource:
+Objective-C/instm/NSEntityMapping/setSourceEntityName:
+Objective-C/instm/NSEntityMapping/setSourceEntityVersionHash:
+Objective-C/instm/NSEntityMapping/setSourceExpression:
+Objective-C/instm/DRFSObject/setSpecificName:forFilesystem:
+Objective-C/instm/DRFSObject/setSpecificNames:
+C/func/-/SetSpeechInfo
+C/func/-/SetSpeechPitch
+C/func/-/SetSpeechProperty
+C/func/-/SetSpeechRate
+C++/instm/IOBDMedia/setSpeed
+C++/instm/IODVDMedia/setSpeed
+C++/instm/IOCDMedia/setSpeed
+Objective-C/intfm/CAMediaTiming/setSpeed:
+Objective-C/instm/CLLocation/setSpeed:
+Objective-C/instm/NSTextView/setSpellingState:range:
+Objective-C/instm/CAEmitterCell/setSpin:
+Objective-C/instm/CAEmitterLayer/setSpin:
+Objective-C/instm/CAEmitterCell/setSpinRange:
+Objective-C/instm/NSThread/setStackSize:
+Objective-C/instm/NSManagedObjectContext/setStalenessInterval:
+Objective-C/instm/NSXMLDocument/setStandalone:
+Objective-C/instm/NSDateFormatter/setStandaloneMonthSymbols:
+Objective-C/instm/NSDateFormatter/setStandaloneQuarterSymbols:
+Objective-C/instm/NSDateFormatter/setStandaloneWeekdaySymbols:
+Objective-C/instm/NSTask/setStandardError:
+Objective-C/instm/WebPreferences/setStandardFontFamily:
+Objective-C/instm/NSTask/setStandardInput:
+Objective-C/instm/NSTask/setStandardOutput:
+JavaScript/instm/Range/setStart
+JavaScript/instm/Range/setStartAfter
+JavaScript/instm/Range/setStartBefore
+Objective-C/instm/CalEvent/setStartDate:
+Objective-C/instm/NSTextList/setStartingItemNumber:
+Objective-C/instm/PDFAnnotationLine/setStartLineStyle:
+Objective-C/instm/PDFAnnotationLine/setStartPoint:
+Objective-C/instm/CAGradientLayer/setStartPoint:
+Objective-C/instm/CATransition/setStartProgress:
+Objective-C/instm/NSRangeSpecifier/setStartSpecifier:
+Objective-C/instm/NSWhoseSpecifier/setStartSubelementIdentifier:
+Objective-C/instm/NSWhoseSpecifier/setStartSubelementIndex:
+C++/instm/IOFramebuffer/setStartupDisplayMode
+C/func/-/setstate
+C++/instm/IOAudioEngine/setState
+Objective-C/instm/NSButton/setState:
+Objective-C/instm/PDFAnnotationButtonWidget/setState:
+Objective-C/instm/IMAVButton/setState:
+Objective-C/instm/NSMenuItem/setState:
+Objective-C/instm/NSCell/setState:
+Objective-C/instm/NSMatrix/setState:atRow:column:
+Objective-C/instm/CalAttendee/setStatus:
+JavaScript/instm/SVGFEGaussianBlurElement/setStdDeviation
+Objective-C/instm/QTMovieView/setStepButtonsVisible:
+Objective-C/instm/NSPropertyDescription/setStoredInExternalRecord:
+Objective-C/instm/NSPersistentStoreCoordinator/setStoresFastSyncDetailsAtURL:forPersistentStore:
+C++/instm/IOStream/setStreamMode
+Objective-C/instm/SFAuthorizationView/setString:
+Objective-C/instm/NSMutableString/setString:
+Objective-C/instm/NSText/setString:
+Objective-C/instm/CATextLayer/setString:
+Objective-C/instm/NSPasteboardItem/setString:forType:
+Objective-C/instm/NSPasteboard/setString:forType:
+Objective-C/intfm/FxParameterSettingAPI_v2/setStringParameterValue:toParm:
+JavaScript/instm/CSSPrimitiveValue/setStringValue
+Objective-C/instm/PDFAnnotationChoiceWidget/setStringValue:
+Objective-C/instm/PDFAnnotationTextWidget/setStringValue:
+Objective-C/instm/NSControl/setStringValue:
+Objective-C/instm/NSXMLNode/setStringValue:
+Objective-C/instm/NSCell/setStringValue:
+Objective-C/instm/NSXMLNode/setStringValue:resolvingEntities:
+Objective-C/instm/NSColor/setStroke
+JavaScript/instm/CanvasRenderingContext2D/setStrokeColor
+Objective-C/instm/CAShapeLayer/setStrokeColor:
+Objective-C/instm/PDFBorder/setStyle:
+Objective-C/instm/NSProgressIndicator/setStyle:
+Objective-C/instm/CAEmitterCell/setStyle:
+Objective-C/instm/CALayer/setStyle:
+Objective-C/instm/NSWindow/setStyleMask:
+JavaScript/instm/InspectorBackend/setStyleProperty
+JavaScript/instm/InspectorBackend/setStyleText
+Objective-C/instm/NSEntityDescription/setSubentities:
+Objective-C/instm/NSToolbarItemGroup/setSubitems:
+Objective-C/instm/CALayer/setSublayers:
+Objective-C/instm/CALayer/setSublayerTransform:
+Objective-C/instm/NSMenuItem/setSubmenu:
+Objective-C/instm/NSMenu/setSubmenu:forItem:
+Objective-C/instm/NSRuleEditor/setSubrowsKeyPath:
+Objective-C/instm/NSSpellChecker/setSubstitutionsPanelAccessoryViewController:
+C++/instm/IOAudioControl/setSubType
+Objective-C/instm/CATransition/setSubtype:
+Objective-C/instm/NSView/setSubviews:
+Objective-C/instm/NSMenu/setSupermenu:
+Objective-C/instm/IOBluetoothDevice/setSupervisionTimeout:
+Objective-C/instm/IKImageView/setSupportsDragAndDrop:
+Objective-C/instm/NSDistributedNotificationCenter/setSuspended:
+Objective-C/instm/NSOperationQueue/setSuspended:
+Objective-C/instm/ISyncClient/setSyncAlertHandler:selector:
+Objective-C/instm/ISyncClient/setSyncAlertToolPath:
+Objective-C/instm/NSXMLDTDNode/setSystemID:
+Objective-C/instm/NSXMLDTD/setSystemID:
+C/func/-/SetSystemUIMode
+C/func/-/setsyx
+Objective-C/instm/NSMatrix/setTabKeyTraversesCells:
+Objective-C/instm/NSTableHeaderView/setTableView:
+Objective-C/instm/NSTableColumn/setTableView:
+Objective-C/instm/WebPreferences/setTabsToLinks:
+Objective-C/instm/NSMutableParagraphStyle/setTabStops:
+Objective-C/instm/NSTabView/setTabViewType:
+C++/instm/IOMemoryDescriptor/setTag
+Objective-C/instm/NSToolbarItem/setTag:
+Objective-C/instm/NSActionCell/setTag:
+Objective-C/instm/IMAVControl/setTag:
+Objective-C/instm/NSMenuItem/setTag:
+Objective-C/instm/NSControl/setTag:
+Objective-C/instm/NSCell/setTag:
+Objective-C/instm/NSSegmentedCell/setTag:forSegment:
+Objective-C/instm/NSMutableParagraphStyle/setTailIndent:
+Objective-C/instm/NSBrowser/setTakesTitleFromPreviousColumn:
+Objective-C/instm/NSToolbarItem/setTarget:
+Objective-C/instm/NSActionCell/setTarget:
+Objective-C/instm/NSColorPanel/setTarget:
+Objective-C/instm/NSFontManager/setTarget:
+Objective-C/instm/NSStatusItem/setTarget:
+Objective-C/instm/FxTexture/setTarget:
+Objective-C/instm/IMAVControl/setTarget:
+Objective-C/instm/NSMenuItem/setTarget:
+Objective-C/instm/NSControl/setTarget:
+Objective-C/instm/NSInvocation/setTarget:
+Objective-C/instm/ABPeoplePickerView/setTarget:
+Objective-C/instm/NSCell/setTarget:
+C++/instm/IOSCSIParallelInterfaceController/SetTargetProperty
+Objective-C/instm/NSMenu/setTearOffMenuRepresentation:
+Objective-C/instm/NSImage/setTemplate:
+Objective-C/instm/NSLayoutManager/setTemporaryAttributes:forCharacterRange:
+JavaScript/data/Document/setter
+C/func/-/setterm
+Objective-C/instm/NSWhoseSpecifier/setTest:
+Objective-C/instm/NSForm/setTextAlignment:
+Objective-C/instm/NSNumberFormatter/setTextAttributesForNegativeInfinity:
+Objective-C/instm/NSNumberFormatter/setTextAttributesForNegativeValues:
+Objective-C/instm/NSNumberFormatter/setTextAttributesForNil:
+Objective-C/instm/NSNumberFormatter/setTextAttributesForNotANumber:
+Objective-C/instm/NSNumberFormatter/setTextAttributesForPositiveInfinity:
+Objective-C/instm/NSNumberFormatter/setTextAttributesForPositiveValues:
+Objective-C/instm/NSNumberFormatter/setTextAttributesForZero:
+Objective-C/instm/NSForm/setTextBaseWritingDirection:
+Objective-C/instm/NSMutableParagraphStyle/setTextBlocks:
+Objective-C/instm/NSDatePicker/setTextColor:
+Objective-C/instm/NSDatePickerCell/setTextColor:
+Objective-C/instm/NSTextField/setTextColor:
+Objective-C/instm/NSTextFieldCell/setTextColor:
+Objective-C/instm/NSText/setTextColor:
+Objective-C/instm/NSText/setTextColor:range:
+Objective-C/instm/NSTextView/setTextContainer:
+Objective-C/instm/NSLayoutManager/setTextContainer:forGlyphRange:
+Objective-C/instm/NSTextView/setTextContainerInset:
+Objective-C/instm/NSForm/setTextFont:
+Objective-C/instm/NSMutableParagraphStyle/setTextLists:
+JavaScript/instm/InspectorBackend/setTextNodeValue
+Objective-C/instm/WebView/setTextSizeMultiplier:
+Objective-C/instm/NSLayoutManager/setTextStorage:
+Objective-C/instm/FxTexture/setTextureCoords:right:bottom:top:
+Objective-C/instm/FxTexture/setTextureId:
+Objective-C/instm/NSOpenGLContext/setTextureImageToPixelBuffer:colorBuffer:
+Objective-C/instm/NSTextContainer/setTextView:
+Objective-C/instm/NSNumberFormatter/setThousandSeparator:
+Objective-C/instm/NSOperation/setThreadPriority:
+Objective-C/instm/NSThread/setThreadPriority:
+Objective-C/clm/NSThread/setThreadPriority:
+Objective-C/instm/PDFThumbnailView/setThumbnailSize:
+Objective-C/instm/NSSlider/setTickMarkPosition:
+Objective-C/instm/NSSliderCell/setTickMarkPosition:
+Objective-C/instm/NSLevelIndicator/setTickMarkPosition:
+Objective-C/instm/NSLevelIndicatorCell/setTickMarkPosition:
+Objective-C/instm/NSMutableParagraphStyle/setTighteningFactorForTruncation:
+Objective-C/instm/CATiledLayer/setTileSize:
+Objective-C/instm/NSDatePicker/setTimeInterval:
+Objective-C/instm/NSDatePickerCell/setTimeInterval:
+C/func/-/settimeofday
+Objective-C/intfm/CAMediaTiming/setTimeOffset:
+C++/instm/IOTimerEventSource/setTimeout
+JavaScript/instm/DOMWindow/setTimeout
+JavaScript/instm/WorkerContext/setTimeout
+Objective-C/instm/SBApplication/setTimeout:
+C++/instm/IOSCSIParallelInterfaceController/SetTimeoutForTask
+C++/instm/ATATimerEventSource/setTimeoutFunc
+C++/instm/IOTimerEventSource/setTimeoutFunc
+Objective-C/instm/NSMutableURLRequest/setTimeoutInterval:
+C++/instm/IOATACommand/setTimeoutMS
+C++/instm/IOTimerEventSource/setTimeoutMS
+C++/instm/IOTimerEventSource/setTimeoutTicks
+C++/instm/IOTimerEventSource/setTimeoutUS
+Objective-C/instm/NSDateFormatter/setTimeStyle:
+Objective-C/instm/NSDatePicker/setTimeZone:
+Objective-C/instm/NSDateFormatter/setTimeZone:
+Objective-C/instm/NSDatePickerCell/setTimeZone:
+Objective-C/instm/NSCalendar/setTimeZone:
+Objective-C/instm/CAAnimation/setTimingFunction:
+Objective-C/instm/CAKeyframeAnimation/setTimingFunctions:
+Objective-C/instp/PSClient/settings
+Objective-C/instp/PSFeed/settings
+Objective-C/intfm/ApertureExportPlugIn/settingsView
+Objective-C/instm/CalCalendarItem/setTitle:
+Objective-C/instm/NSSliderCell/setTitle:
+Objective-C/instm/NSSlider/setTitle:
+Objective-C/instm/NSFormCell/setTitle:
+Objective-C/instm/NSStatusItem/setTitle:
+Objective-C/instm/NSButton/setTitle:
+Objective-C/instm/NSViewController/setTitle:
+Objective-C/instm/CBIdentityPicker/setTitle:
+Objective-C/instm/NSPopUpButton/setTitle:
+Objective-C/instm/NSPopUpButtonCell/setTitle:
+Objective-C/instm/NSBox/setTitle:
+Objective-C/instm/CalCalendar/setTitle:
+Objective-C/instm/NSSavePanel/setTitle:
+Objective-C/instm/NSButtonCell/setTitle:
+Objective-C/instm/NSMenuItem/setTitle:
+Objective-C/instm/IOBluetoothDeviceSelectorController/setTitle:
+Objective-C/instm/IOBluetoothObjectPushUIController/setTitle:
+Objective-C/instm/IOBluetoothPairingController/setTitle:
+Objective-C/instm/IOBluetoothServiceBrowserController/setTitle:
+Objective-C/instm/NSWindow/setTitle:
+Objective-C/instm/NSMenu/setTitle:
+Objective-C/instm/NSCell/setTitle:
+Objective-C/instm/NSBrowser/setTitle:ofColumn:
+Objective-C/instm/NSFormCell/setTitleAlignment:
+Objective-C/instm/NSForm/setTitleAlignment:
+Objective-C/instm/NSForm/setTitleBaseWritingDirection:
+Objective-C/instm/NSFormCell/setTitleBaseWritingDirection:
+Objective-C/instm/NSSliderCell/setTitleCell:
+Objective-C/instm/NSSlider/setTitleCell:
+Objective-C/instm/NSSlider/setTitleColor:
+Objective-C/instm/NSSliderCell/setTitleColor:
+Objective-C/instm/NSBrowser/setTitled:
+Objective-C/instm/NSFormCell/setTitleFont:
+Objective-C/instm/NSSliderCell/setTitleFont:
+Objective-C/instm/NSSlider/setTitleFont:
+Objective-C/instm/NSForm/setTitleFont:
+Objective-C/instm/NSBox/setTitleFont:
+Objective-C/instm/NSBox/setTitlePosition:
+Objective-C/instm/NSFormCell/setTitleWidth:
+Objective-C/instm/NSFormCell/setTitleWithMnemonic:
+Objective-C/instm/NSButton/setTitleWithMnemonic:
+Objective-C/instm/NSBox/setTitleWithMnemonic:
+Objective-C/instm/NSButtonCell/setTitleWithMnemonic:
+Objective-C/instm/NSMenuItem/setTitleWithMnemonic:
+Objective-C/instm/NSTextField/setTitleWithMnemonic:
+Objective-C/instm/NSCell/setTitleWithMnemonic:
+Objective-C/instm/NSWindow/setTitleWithRepresentedFilename:
+Objective-C/instm/SBObject/setTo:
+Objective-C/instm/NSTokenFieldCell/setTokenizingCharacterSet:
+Objective-C/instm/NSTokenField/setTokenizingCharacterSet:
+Objective-C/instm/NSTokenFieldCell/setTokenStyle:
+Objective-C/instm/NSTokenField/setTokenStyle:
+Objective-C/instm/NSWindow/setToolbar:
+Objective-C/instm/NSToolbarItem/setToolTip:
+Objective-C/instm/NSStatusItem/setToolTip:
+Objective-C/instm/NSTabViewItem/setToolTip:
+Objective-C/instm/NSMenuItem/setToolTip:
+Objective-C/instm/NSView/setToolTip:
+Objective-C/instm/NSMatrix/setToolTip:forCell:
+Objective-C/instm/NSSegmentedCell/setToolTip:forSegment:
+Objective-C/instm/NSScriptExecutionContext/setTopLevelObject:
+Objective-C/instm/NSPrintInfo/setTopMargin:
+Objective-C/instm/NSCache/setTotalCostLimit:
+Objective-C/instm/CABasicAnimation/setToValue:
+C/func/-/SetTrackAlternate
+Objective-C/instm/QTTrack/setTrackAttributes:
+Objective-C/instm/DRCDTextBlock/setTrackDictionaries:
+C/func/-/SetTrackDimensions
+C/func/-/SetTrackEnabled
+Objective-C/instm/NSSegmentedCell/setTrackingMode:
+C/func/-/SetTrackLayer
+C/func/-/SetTrackMatrix
+C/func/-/SetTrackOffset
+C/func/-/SetTrackReference
+C/func/-/SetTrackSoundLocalizationSettings
+C/func/-/SetTrackUsage
+C/func/-/SetTrackVolume
+Objective-C/instm/NSDrawer/setTrailingOffset:
+C++/instm/IOATACommand/setTransferChunkSize
+Objective-C/instm/IKCameraDeviceView/setTransferMode:
+Objective-C/instm/IKScannerDeviceView/setTransferMode:
+JavaScript/instm/CanvasRenderingContext2D/setTransform
+Objective-C/instm/CALayer/setTransform:
+Objective-C/instm/NSAffineTransform/setTransformStruct:
+Objective-C/instm/NSPropertyDescription/setTransient:
+JavaScript/instm/SVGTransform/setTranslate
+Objective-C/instm/QTMovieView/setTranslateButtonVisible:
+Objective-C/instm/NSButton/setTransparent:
+Objective-C/instm/NSBox/setTransparent:
+Objective-C/instm/NSButtonCell/setTransparent:
+Objective-C/instm/NSSavePanel/setTreatsFilePackagesAsDirectories:
+Objective-C/instm/NSCell/setTruncatesLastVisibleLine:
+Objective-C/instm/CATextLayer/setTruncationMode:
+C/func/-/setttyent
+Objective-C/instm/NSDateFormatter/setTwoDigitStartDate:
+Objective-C/instm/NSNetService/setTXTRecordData:
+C++/instm/IOAudioControl/setType
+Objective-C/instm/CATransition/setType:
+Objective-C/instm/CalCalendar/setType:
+Objective-C/instm/CAGradientLayer/setType:
+Objective-C/instm/NSCell/setType:
+Objective-C/instm/NSLayoutManager/setTypesetter:
+Objective-C/instm/NSATSTypesetter/setTypesetterBehavior:
+Objective-C/instm/NSLayoutManager/setTypesetterBehavior:
+Objective-C/instm/NSTypesetter/setTypesetterBehavior:
+Objective-C/instm/NSTextView/setTypingAttributes:
+Objective-C/instm/WebView/setTypingStyle:
+C/func/-/setuid
+Objective-C/instm/CalCalendarItem/setUid:
+Objective-C/instm/CalCalendar/setUid:
+Objective-C/instm/WebView/setUIDelegate:
+C++/instm/IOATADevConfig/setUltraMode
+C++/instm/IOATABusInfo/setUltraModes
+Objective-C/instm/NSPersistentDocument/setUndoManager:
+Objective-C/instm/NSDocument/setUndoManager:
+Objective-C/instm/NSManagedObjectContext/setUndoManager:
+Objective-C/instm/NSUniqueIDSpecifier/setUniqueID:
+C++/instm/IOATACommand/setUnit
+C++/instm/IONetworkInterface/setUnitNumber
+C++/instm/IOATABusInfo/setUnits
+C++/instm/Test/setUp
+C++/instm/TestSuite/setUp
+C++/instm/TestCase/setUp
+Objective-C/instm/IOBluetoothDeviceInquiry/setUpdateNewDeviceNames:
+Objective-C/instm/NSCell/setUpFieldEditorAttributes:
+Objective-C/instm/NSTextFieldCell/setUpFieldEditorAttributes:
+Objective-C/instm/DRSetupPanel/setupForDisplay
+Objective-C/instm/NSView/setUpGState
+Objective-C/clm/DREraseSetupPanel/setupPanel
+Objective-C/clm/DRBurnSetupPanel/setupPanel
+Objective-C/instm/NSObject(DRSetupPanelDelegate)/setupPanel:determineBestDeviceOfA:orB:
+Objective-C/instm/NSObject(DRSetupPanelDelegate)/setupPanel:deviceContainsSuitableMedia:promptString:
+Objective-C/instm/NSObject(DRSetupPanelDelegate)/setupPanel:deviceCouldBeTarget:
+Objective-C/instm/NSObject(DRSetupPanelDelegate)/setupPanelDeviceSelectionChanged:
+Objective-C/instm/NSObject(DRSetupPanelDelegate)/setupPanelShouldHandleMediaReservations:
+Objective-C/instm/NSPrintInfo/setUpPrintOperationDefaultValues
+C/func/-/setupterm
+JavaScript/instm/SVGPaint/setUri
+Objective-C/instm/NSXMLDocument/setURI:
+Objective-C/instm/NSXMLNode/setURI:
+Objective-C/instm/CalCalendarItem/setUrl:
+Objective-C/instm/PDFAnnotationLink/setURL:
+Objective-C/instm/NSMutableURLRequest/setURL:
+Objective-C/instm/NSPathComponentCell/setURL:
+Objective-C/instm/PDFActionURL/setURL:
+Objective-C/instm/PDFActionRemoteGoTo/setURL:
+Objective-C/instm/CalAlarm/setUrl:
+Objective-C/instm/NSPersistentStore/setURL:
+Objective-C/instm/NSPathCell/setURL:
+Objective-C/instm/NSPathControl/setURL:
+Objective-C/instm/NSUserDefaults/setURL:forKey:
+Objective-C/instm/NSPersistentStoreCoordinator/setURL:forPersistentStore:
+C++/instm/IOAudioControl/setUsage
+C++/instm/IOSCSIProtocolInterface/SetUserClientExclusivityState
+Objective-C/intfm/ApertureEditManager/setUserDefaultsValue:forKey:
+Objective-C/clm/NSFont/setUserFixedPitchFont:
+Objective-C/clm/NSFont/setUserFont:
+Objective-C/instm/NSMigrationManager/setUserInfo:
+Objective-C/instm/NSEntityMapping/setUserInfo:
+Objective-C/instm/NSPropertyMapping/setUserInfo:
+Objective-C/instm/NSPropertyDescription/setUserInfo:
+Objective-C/instm/NSEntityDescription/setUserInfo:
+Objective-C/instm/NSCell/setUserInterfaceLayoutDirection:
+Objective-C/instm/PDFAnnotation/setUserName:
+Objective-C/instm/XGTwoWayRandomAuthenticator/setUsername:
+C/func/-/setusershell
+Objective-C/instm/WebPreferences/setUserStyleSheetEnabled:
+Objective-C/instm/WebPreferences/setUserStyleSheetLocation:
+Objective-C/instm/NSTableView/setUsesAlternatingRowBackgroundColors:
+Objective-C/instm/NSComboBox/setUsesDataSource:
+Objective-C/instm/NSComboBoxCell/setUsesDataSource:
+Objective-C/instm/CalRecurrenceEnd/setUsesEndDate:
+Objective-C/instm/NSImage/setUsesEPSOnResolutionMismatch:
+Objective-C/instm/NSSpeechSynthesizer/setUsesFeedbackWindow:
+Objective-C/instm/NSTextView/setUsesFindPanel:
+Objective-C/instm/NSATSTypesetter/setUsesFontLeading:
+Objective-C/instm/NSLayoutManager/setUsesFontLeading:
+Objective-C/instm/NSTypesetter/setUsesFontLeading:
+Objective-C/instm/NSTextView/setUsesFontPanel:
+Objective-C/instm/NSText/setUsesFontPanel:
+Objective-C/instm/NSNumberFormatter/setUsesGroupingSeparator:
+Objective-C/instm/NSPopUpButtonCell/setUsesItemFromMenu:
+Objective-C/instm/NSObjectController/setUsesLazyFetching:
+Objective-C/instm/WebPreferences/setUsesPageCache:
+Objective-C/instm/NSTextView/setUsesRuler:
+Objective-C/instm/NSLayoutManager/setUsesScreenFonts:
+Objective-C/instm/NSNumberFormatter/setUsesSignificantDigits:
+Objective-C/instm/NSCell/setUsesSingleLineMode:
+Objective-C/instm/NSPointerFunctions/setUsesStrongWriteBarrier:
+Objective-C/instm/NSProgressIndicator/setUsesThreadedAnimation:
+Objective-C/clm/NSMenuItem/setUsesUserKeyEquivalents:
+Objective-C/instm/NSPointerFunctions/setUsesWeakReadAndWriteBarriers:
+C/func/-/setutxent
+Objective-C/instm/NSMatrix/setValidateSize:
+Objective-C/instm/NSPropertyDescription/setValidationPredicates:withValidationWarnings:
+C++/instm/IOFireWireSerialBusProtocolTransport/SetValidAutoSenseData
+C++/instm/IOAudioControl/setValue
+C++/instm/OSNumber/setValue
+Objective-C/instm/NSObject/setValue:
+Objective-C/instm/ODRecord/setValue:forAttribute:error:
+Objective-C/instm/NSMutableURLRequest/setValue:forHTTPHeaderField:
+Objective-C/intfm/QCCompositionRenderer/setValue:forInputKey:
+Objective-C/instm/NSAtomicStoreCacheNode/setValue:forKey:
+Objective-C/instm/NSSet/setValue:forKey:
+Objective-C/instm/NSObject/setValue:forKey:
+Objective-C/clm/CATransaction/setValue:forKey:
+Objective-C/instm/NSArray/setValue:forKey:
+Objective-C/instm/NSMutableDictionary/setValue:forKey:
+Objective-C/instm/NSManagedObject/setValue:forKey:
+Objective-C/instm/NSObject/setValue:forKeyPath:
+Objective-C/instm/QCPlugIn/setValue:forOutputKey:
+Objective-C/instm/ABRecord/setValue:forProperty:
+Objective-C/intfm/IMKStateSetting/setValue:forTag:client:
+Objective-C/instm/NSObject/setValue:forUndefinedKey:
+Objective-C/instm/AMWorkflow/setValue:forVariableWithName:
+Objective-C/instm/NSTextBlock/setValue:type:forDimension:
+C++/clm/IOAudioControl/setValueAction
+Objective-C/instm/NSPropertyMapping/setValueExpression:
+JavaScript/instm/HTMLInputElement/setValueForUser
+Objective-C/instm/CAPropertyAnimation/setValueFunction:
+Objective-C/instm/NSMetadataQuery/setValueListAttributes:
+Objective-C/instm/CAKeyframeAnimation/setValues:
+Objective-C/instm/NSOpenGLContext/setValues:forParameter:
+Objective-C/instm/ABPeoplePickerView/setValueSelectionBehavior:
+Objective-C/instm/NSObject/setValuesForKeysWithDictionary:
+Objective-C/clm/NSValueTransformer/setValueTransformer:forName:
+Objective-C/instm/NSAttributeDescription/setValueTransformerName:
+Objective-C/instm/NSStepper/setValueWraps:
+Objective-C/instm/NSStepperCell/setValueWraps:
+JavaScript/instm/CSSVariablesDeclaration/setVariable
+C/func/-/setvbuf
+Objective-C/instm/CAEmitterLayer/setVelocity:
+Objective-C/instm/CAEmitterCell/setVelocity:
+Objective-C/instm/CAEmitterCell/setVelocityRange:
+Objective-C/instm/DRBurnProgressPanel/setVerboseProgressStatus:
+Objective-C/instm/DRBurn(PropertyConvenienceMethods)/setVerifyDisc:
+Objective-C/instm/NSXMLDocument/setVersion:
+Objective-C/clm/NSObject/setVersion:
+Objective-C/instm/NSPropertyDescription/setVersionHashModifier:
+Objective-C/instm/NSEntityDescription/setVersionHashModifier:
+Objective-C/instm/NSManagedObjectModel/setVersionIdentifiers:
+Objective-C/instm/NSSplitView/setVertical:
+Objective-C/instm/NSTextBlock/setVerticalAlignment:
+Objective-C/instm/PDFBorder/setVerticalCornerRadius:
+Objective-C/instm/NSScrollView/setVerticalLineScroll:
+Objective-C/instm/NSPrintInfo/setVerticallyCentered:
+Objective-C/instm/NSText/setVerticallyResizable:
+Objective-C/instm/NSTableView/setVerticalMotionCanBeginDrag:
+Objective-C/instm/NSScrollView/setVerticalPageScroll:
+Objective-C/instm/NSPrintInfo/setVerticalPagination:
+Objective-C/instm/NSScrollView/setVerticalRulerView:
+Objective-C/instm/NSScrollView/setVerticalScroller:
+Objective-C/instm/NSDateFormatter/setVeryShortMonthSymbols:
+Objective-C/instm/NSDateFormatter/setVeryShortStandaloneMonthSymbols:
+Objective-C/instm/NSDateFormatter/setVeryShortStandaloneWeekdaySymbols:
+Objective-C/instm/NSDateFormatter/setVeryShortWeekdaySymbols:
+Objective-C/instm/IMAVManager/setVideoDataSource:
+Objective-C/instm/IMAVManager/setVideoOptimizationOptions:
+Objective-C/instm/QTCaptureView/setVideoPreviewConnection:
+Objective-C/instm/NSToolbarItem/setView:
+Objective-C/instm/NSStatusItem/setView:
+Objective-C/instm/NSViewController/setView:
+Objective-C/instm/NSCollectionViewItem/setView:
+Objective-C/instm/NSOpenGLLayer/setView:
+Objective-C/instm/NSTabViewItem/setView:
+Objective-C/instm/NSMenuItem/setView:
+Objective-C/instm/NSOpenGLContext/setView:
+Objective-C/instm/NSViewAnimation/setViewAnimations:
+Objective-C/instm/NSWindow/setViewsNeedDisplay:
+Objective-C/instm/NSToolbarItem/setVisibilityPriority:
+Objective-C/instm/NSToolbar/setVisible:
+Objective-C/instm/QTMovie/setVisualContext:
+Objective-C/instm/QTCaptureVideoPreviewOutput/setVisualContext:forConnection:
+C++/instm/IOEthernetController/setVlanTag
+Objective-C/instm/NSSpeechSynthesizer/setVoice:
+Objective-C/instm/NSUserDefaults/setVolatileDomain:forName:
+Objective-C/instm/QTCaptureAudioPreviewOutput/setVolume:
+Objective-C/instm/NSSpeechSynthesizer/setVolume:
+Objective-C/instm/QTTrack/setVolume:
+Objective-C/instm/NSSound/setVolume:
+Objective-C/instm/QTMovie/setVolume:
+Objective-C/instm/QTMovieView/setVolumeButtonVisible:
+C++/instm/IOEthernetController/setWakeOnMagicPacket
+Objective-C/instm/NSView/setWantsLayer:
+Objective-C/instm/NSTextFieldCell/setWantsNotificationForMarkedText:
+Objective-C/instm/NSView/setWantsRestingTouches:
+Objective-C/instm/NSLevelIndicator/setWarningValue:
+Objective-C/instm/NSLevelIndicatorCell/setWarningValue:
+Objective-C/instm/WebScriptObject/setWebScriptValueAtIndex:value:
+Objective-C/instm/NSDateComponents/setWeek:
+Objective-C/instm/NSDateComponents/setWeekday:
+Objective-C/instm/NSDateComponents/setWeekdayOrdinal:
+Objective-C/instm/NSDateFormatter/setWeekdaySymbols:
+Objective-C/instm/CalNthWeekDay/setWeekNumber:
+Objective-C/instm/NSTableColumn/setWidth:
+Objective-C/instm/FxImage/setWidth:
+Objective-C/instm/FxImage/setWidth:andHeight:
+Objective-C/instm/NSSegmentedCell/setWidth:forSegment:
+Objective-C/instm/NSSegmentedControl/setWidth:forSegment:
+Objective-C/instm/NSBrowser/setWidth:ofColumn:
+Objective-C/instm/NSTextBlock/setWidth:type:forLayer:
+Objective-C/instm/NSTextBlock/setWidth:type:forLayer:edge:
+Objective-C/instm/NSTextContainer/setWidthTracksTextView:
+Objective-C/instm/NSBezierPath/setWindingRule:
+Objective-C/instm/NSWindowController/setWindow:
+Objective-C/instm/NSDocument/setWindow:
+Objective-C/instm/NSWindow/setWindowController:
+Objective-C/instm/NSWindowController/setWindowFrameAutosaveName:
+Objective-C/instm/NSMenuView/setWindowFrameForAttachingToRect:onScreen:preferredEdge:popUpSelectedItem:
+Objective-C/instm/PDFAnnotationText/setWindowIsOpen:
+Objective-C/instm/NSApplication/setWindowsMenu:
+Objective-C/instm/NSApplication/setWindowsNeedUpdate:
+Objective-C/clm/NSSet/setWithArray:
+Objective-C/clm/NSMutableSet/setWithCapacity:
+Objective-C/clm/NSSet/setWithObject:
+Objective-C/clm/NSSet/setWithObjects:
+Objective-C/clm/NSSet/setWithObjects:count:
+Objective-C/clm/NSSet/setWithSet:
+Objective-C/instm/NSSpellChecker/setWordFieldStringValue:
+Objective-C/instm/NSTextStorage/setWords:
+Objective-C/instm/AMWorkflowController/setWorkflow:
+Objective-C/instm/AMWorkflowView/setWorkflowController:
+Objective-C/instm/AMWorkflowController/setWorkflowView:
+C++/instm/IOEventSource/setWorkLoop
+Objective-C/instm/NSPanel/setWorksWhenModal:
+Objective-C/instm/CATextLayer/setWrapped:
+Objective-C/instm/NSCell/setWraps:
+C++/instm/IOBlockStorageDevice/setWriteCacheState
+Objective-C/instm/CAEmitterCell/setXAcceleration:
+C/func/-/setxattr
+Objective-C/intfm/FxParameterSettingAPI/setXValue:YValue:toParm:atTime:
+Objective-C/instm/CAEmitterCell/setYAcceleration:
+Objective-C/instm/NSDateComponents/setYear:
+Objective-C/instm/CAEmitterCell/setZAcceleration:
+Objective-C/instm/NSNumberFormatter/setZeroSymbol:
+Objective-C/instm/QTMovieView/setZoomButtonsVisible:
+Objective-C/instm/IKImageView/setZoomFactor:
+Objective-C/instm/IKImageBrowserView/setZoomValue:
+Objective-C/instm/CALayer/setZPosition:
+C/tdef/-/sf_accept_func
+C/tdef/-/sf_attach_func
+C/tdef/-/sf_bind_func
+C/tdef/-/sf_connect_in_func
+C/tdef/-/sf_connect_out_func
+C/tdef/-/sf_data_in_func
+C/tdef/-/sf_data_out_func
+C/tdef/-/sf_detach_func
+C/tdef/-/sf_getoption_func
+C/tdef/-/sf_getpeername_func
+C/tdef/-/sf_getsockname_func
+C/tdef/-/sf_ioctl_func
+C/tdef/-/sf_listen_func
+C/tdef/-/sf_notify_func
+C/tdef/-/sf_setoption_func
+C/tdef/-/sf_unregistered_func
+Objective-C/cl/-/SFAuthorization
+Objective-C/cl/-/SFAuthorizationPluginView
+C/data/-/SFAuthorizationPluginViewUserNameKey
+C/data/-/SFAuthorizationPluginViewUserShortNameKey
+C/econst/-/SFAuthorizationStartupState
+Objective-C/cl/-/SFAuthorizationView
+C/econst/-/SFAuthorizationViewInProgressState
+C/econst/-/SFAuthorizationViewLockedState
+C/tdef/-/SFAuthorizationViewState
+C/econst/-/SFAuthorizationViewUnlockedState
+C/tdef/-/SFButtonType
+C/econst/-/SFButtonTypeBack
+C/econst/-/SFButtonTypeCancel
+C/econst/-/SFButtonTypeLogin
+C/econst/-/SFButtonTypeOK
+Objective-C/cl/-/SFCertificatePanel
+Objective-C/cl/-/SFCertificateTrustPanel
+Objective-C/cl/-/SFCertificateView
+Objective-C/cl/-/SFChooseIdentityPanel
+Objective-C/cl/-/SFKeychainSavePanel
+Objective-C/cl/-/SFKeychainSettingsPanel
+C/func/-/sflt_attach
+C/tag/-/sflt_data_flag_t
+C/func/-/sflt_detach
+C/tag/-/sflt_event_t
+C/econst/sflt_flags/SFLT_EXTENDED
+C/tag/-/sflt_filter
+C/tag/-/sflt_flags
+C/econst/sflt_flags/SFLT_GLOBAL
+C/tdef/-/sflt_handle
+C/econst/sflt_flags/SFLT_PROG
+C/func/-/sflt_register
+C/func/-/sflt_unregister
+C/tdef/-/sFlushRecord
+C/tdef/-/SFViewType
+C/econst/-/SFViewTypeCredentials
+C/econst/-/SFViewTypeIdentityAndCredentials
+C/func/-/SGEMM
+C/func/-/SGEMV
+C/tdef/-/sGetAttributeEntry
+C/tdef/-/sGetAttributeValue
+C/tdef/-/sGetDirNodeInfo
+C++/clm/IOSCSIProtocolInterface/sGetPowerTransistionInProgress
+C/tdef/-/sGetRecAttribInfo
+C/tdef/-/sGetRecordAttributeValueByID
+C/tdef/-/sGetRecordAttributeValueByIndex
+C/tdef/-/sGetRecordAttributeValueByValue
+C/tdef/-/sGetRecordEntry
+C/tdef/-/sGetRecordList
+C/tdef/-/sGetRecRefInfo
+C/func/-/sgetrune
+C++/clm/IOSCSIProtocolInterface/sGetUserClientExclusivityState
+C/func/-/sha
+C/func/-/SHA1
+C/func/-/SHA1_Final
+C/func/-/SHA1_Init
+C/func/-/SHA1_Update
+JavaScript/clconst/WebGLRenderingContext/SHADER_BINARY_FORMATS
+JavaScript/clconst/WebGLRenderingContext/SHADER_COMPILER
+JavaScript/clconst/WebGLRenderingContext/SHADER_SOURCE_LENGTH
+JavaScript/clconst/WebGLRenderingContext/SHADER_TYPE
+JavaScript/instm/WebGLRenderingContext/shaderSource
+JavaScript/clconst/WebGLRenderingContext/SHADING_LANGUAGE_VERSION
+Objective-C/instm/NSView/shadow
+JavaScript/data/CanvasRenderingContext2D/shadowBlur
+Objective-C/instm/NSShadow/shadowBlurRadius
+Objective-C/clm/NSColor/shadowColor
+Objective-C/instm/NSShadow/shadowColor
+Objective-C/instp/CALayer/shadowColor
+Objective-C/instm/CALayer/shadowColor
+JavaScript/data/CanvasRenderingContext2D/shadowColor
+Objective-C/instm/NSShadow/shadowOffset
+Objective-C/instm/CALayer/shadowOffset
+Objective-C/instp/CALayer/shadowOffset
+JavaScript/data/CanvasRenderingContext2D/shadowOffsetX
+JavaScript/data/CanvasRenderingContext2D/shadowOffsetY
+Objective-C/instp/CALayer/shadowOpacity
+Objective-C/instm/CALayer/shadowOpacity
+Objective-C/instm/CALayer/shadowRadius
+Objective-C/instp/CALayer/shadowRadius
+Objective-C/instm/NSColor/shadowWithLevel:
+C++/clm/IOSCSIProtocolInterface/sHandleCheckPowerState
+C++/clm/IOSCSIProtocolInterface/sHandleSetPowerState
+JavaScript/data/HTMLAnchorElement/shape
+JavaScript/data/HTMLAreaElement/shape
+Objective-C/clm/CIFilterShape/shapeWithRect:
+Objective-C/clm/ABAddressBook/sharedAddressBook
+Objective-C/clm/NSAppleEventManager/sharedAppleEventManager
+Objective-C/clm/NSApplication/sharedApplication
+Objective-C/clm/IMAVManager/sharedAVManager
+Objective-C/clm/SFCertificatePanel/sharedCertificatePanel
+Objective-C/clm/SFCertificateTrustPanel/sharedCertificateTrustPanel
+Objective-C/clm/SFChooseIdentityPanel/sharedChooseIdentityPanel
+Objective-C/clm/NSScriptCoercionHandler/sharedCoercionHandler
+Objective-C/clm/NSColorPanel/sharedColorPanel
+Objective-C/clm/NSColorPanel/sharedColorPanelExists
+Objective-C/clm/QCCompositionPickerPanel/sharedCompositionPickerPanel
+Objective-C/clm/QCCompositionRepository/sharedCompositionRepository
+Objective-C/clm/NSURLCredentialStorage/sharedCredentialStorage
+Objective-C/clm/NSDocumentController/sharedDocumentController
+Objective-C/clm/NSFontManager/sharedFontManager
+Objective-C/clm/NSFontPanel/sharedFontPanel
+Objective-C/clm/NSFontPanel/sharedFontPanelExists
+Objective-C/instm/NSBundle/sharedFrameworksPath
+Objective-C/instm/NSBundle/sharedFrameworksURL
+Objective-C/clm/NSGlyphGenerator/sharedGlyphGenerator
+Objective-C/clm/NSHelpManager/sharedHelpManager
+Objective-C/clm/NSHTTPCookieStorage/sharedHTTPCookieStorage
+Objective-C/clm/IKImageEditPanel/sharedImageEditPanel
+Objective-C/clm/IBInspector/sharedInstance
+Objective-C/clm/IBPlugin/sharedInstance
+Objective-C/clm/NSMachBootstrapServer/sharedInstance
+Objective-C/clm/NSMessagePortNameServer/sharedInstance
+Objective-C/clm/NSSocketPortNameServer/sharedInstance
+Objective-C/clm/SFKeychainSavePanel/sharedKeychainSavePanel
+Objective-C/clm/SFKeychainSettingsPanel/sharedKeychainSettingsPanel
+Objective-C/clm/ISyncManager/sharedManager
+Objective-C/clm/QLPreviewPanel/sharedPreviewPanel
+Objective-C/clm/QLPreviewPanel/sharedPreviewPanelExists
+Objective-C/clm/NSPrintInfo/sharedPrintInfo
+Objective-C/clm/NSScriptExecutionContext/sharedScriptExecutionContext
+Objective-C/clm/NSScriptSuiteRegistry/sharedScriptSuiteRegistry
+Objective-C/clm/IKSlideshow/sharedSlideshow
+Objective-C/clm/NSSpellChecker/sharedSpellChecker
+Objective-C/clm/NSSpellChecker/sharedSpellCheckerExists
+Objective-C/instm/NSBundle/sharedSupportPath
+Objective-C/instm/NSBundle/sharedSupportURL
+Objective-C/clm/NSTypesetter/sharedSystemTypesetter
+Objective-C/clm/NSTypesetter/sharedSystemTypesetterForBehavior:
+Objective-C/clm/NSATSTypesetter/sharedTypesetter
+Objective-C/clm/NSURLCache/sharedURLCache
+Objective-C/clm/NSUserDefaultsController/sharedUserDefaultsController
+JavaScript/data/DOMWindow/SharedWorker
+JavaScript/cl/-/SharedWorker
+JavaScript/cl/-/SharedWorkerContext
+Objective-C/clm/NSWorkspace/sharedWorkspace
+Objective-C/instm/NSWindow/sharingType
+C/tdef/-/sHeader
+JavaScript/data/HTMLStyleElement/sheet
+JavaScript/data/HTMLLinkElement/sheet
+JavaScript/data/ProcessingInstruction/sheet
+Objective-C/instm/NSMutableIndexSet/shiftIndexesStartingAtIndex:by:
+JavaScript/data/KeyboardEvent/shiftKey
+JavaScript/data/MouseEvent/shiftKey
+JavaScript/data/TouchEvent/shiftKey
+JavaScript/data/WheelEvent/shiftKey
+C/func/-/shm_open
+C/func/-/shm_unlink
+C/func/-/shmat
+C/func/-/shmctl
+C/func/-/shmdt
+C/func/-/shmget
+JavaScript/clconst/WebGLRenderingContext/SHORT
+Objective-C/instm/NSDateFormatter/shortMonthSymbols
+Objective-C/instm/NSDateFormatter/shortQuarterSymbols
+Objective-C/instm/NSDateFormatter/shortStandaloneMonthSymbols
+Objective-C/instm/NSDateFormatter/shortStandaloneQuarterSymbols
+Objective-C/instm/NSDateFormatter/shortStandaloneWeekdaySymbols
+Objective-C/instm/NSNumber/shortValue
+Objective-C/instm/NSDateFormatter/shortWeekdaySymbols
+Objective-C/instm/PDFView/shouldAntiAlias
+Objective-C/instm/NSGraphicsContext/shouldAntialias
+Objective-C/intfm/ISyncFiltering/shouldApplyRecord:withRecordIdentifier:
+Objective-C/instm/CAAnimation/shouldArchiveValueForKey:
+Objective-C/instm/CAEmitterCell/shouldArchiveValueForKey:
+Objective-C/instm/CALayer/shouldArchiveValueForKey:
+Objective-C/intfm/ApertureExportManager/shouldBeginExport
+Objective-C/instm/NSResponder/shouldBeTreatedAsInkEvent:
+Objective-C/instm/NSATSTypesetter/shouldBreakLineByHyphenatingBeforeCharacterAtIndex:
+Objective-C/instm/NSTypesetter/shouldBreakLineByHyphenatingBeforeCharacterAtIndex:
+Objective-C/instm/NSATSTypesetter/shouldBreakLineByWordBeforeCharacterAtIndex:
+Objective-C/instm/NSTypesetter/shouldBreakLineByWordBeforeCharacterAtIndex:
+Objective-C/intfm/ApertureExportManager/shouldCancelExport
+Objective-C/instm/NSWindowController/shouldCascadeWindows
+Objective-C/instm/NSDocument/shouldChangePrintInfo:
+Objective-C/instm/NSTextView/shouldChangeTextInRange:replacementString:
+Objective-C/instm/NSTextView/shouldChangeTextInRanges:replacementStrings:
+Objective-C/instm/NSWindowController/shouldCloseDocument
+Objective-C/instm/NSDocument/shouldCloseWindowController:
+Objective-C/instm/NSDocument/shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:
+Objective-C/instm/WebView/shouldCloseWithWindow
+Objective-C/instm/NSOutlineView/shouldCollapseAutoExpandedItemsForDeposited:
+Objective-C/intfm/QCPlugInOutputImageProvider/shouldColorMatch
+Objective-C/intfm/QCPlugInInputImageSource/shouldColorMatch
+Objective-C/instm/NSDocumentController/shouldCreateUI
+Objective-C/instm/NSView/shouldDelayWindowOrderingForEvent:
+Objective-C/instm/PDFAnnotation/shouldDisplay
+Objective-C/instm/NSView/shouldDrawColor
+Objective-C/instm/NSTextView/shouldDrawInsertionPoint
+Objective-C/instm/NSObject/shouldEnableActionForPerson:identifier:
+Objective-C/intfm/ApertureExportManager/shouldFinishExport
+Objective-C/instm/NSTableView/shouldFocusCell:atColumn:row:
+Objective-C/instm/NSObject/shouldHide
+Objective-C/instm/PDFAnnotation/shouldPrint
+Objective-C/instm/WebPreferences/shouldPrintBackgrounds
+Objective-C/instm/NSXMLParser/shouldProcessNamespaces
+Objective-C/instm/ISyncSession/shouldPullChangesForEntityName:
+Objective-C/instm/ISyncSession/shouldPushAllRecordsForEntityName:
+Objective-C/instm/ISyncSession/shouldPushChangesForEntityName:
+Objective-C/instm/ISyncSession/shouldReplaceAllRecordsOnClientForEntityName:
+Objective-C/instm/ISyncClient/shouldReplaceClientRecordsForEntityName:
+Objective-C/instm/NSXMLParser/shouldReportNamespacePrefixes
+Objective-C/instm/NSXMLParser/shouldResolveExternalEntities
+Objective-C/instm/NSDocument/shouldRunSavePanelWithAccessoryView
+Objective-C/instm/ISyncClient/shouldSynchronizeWithClientsOfType:
+Objective-C/instm/NSPreferencePane/shouldUnselect
+Objective-C/instm/WebView/shouldUpdateWhileOffscreen
+JavaScript/instm/Notification/show
+Objective-C/instm/IMKCandidates/show:
+JavaScript/clconst/NodeFilter/SHOW_ALL
+JavaScript/clconst/NodeFilter/SHOW_ATTRIBUTE
+JavaScript/clconst/NodeFilter/SHOW_CDATA_SECTION
+JavaScript/clconst/NodeFilter/SHOW_COMMENT
+JavaScript/clconst/NodeFilter/SHOW_DOCUMENT
+JavaScript/clconst/NodeFilter/SHOW_DOCUMENT_FRAGMENT
+JavaScript/clconst/NodeFilter/SHOW_DOCUMENT_TYPE
+JavaScript/clconst/NodeFilter/SHOW_ELEMENT
+JavaScript/clconst/NodeFilter/SHOW_ENTITY
+JavaScript/clconst/NodeFilter/SHOW_ENTITY_REFERENCE
+JavaScript/clconst/NodeFilter/SHOW_NOTATION
+JavaScript/clconst/NodeFilter/SHOW_PROCESSING_INSTRUCTION
+JavaScript/clconst/NodeFilter/SHOW_TEXT
+Objective-C/intfm/NSUserInterfaceItemSearching/showAllHelpTopicsForSearchString:
+Objective-C/instm/IMKCandidates/showAnnotation:
+Objective-C/instm/NSLayoutManager/showAttachmentCell:inRect:characterIndex:
+Objective-C/instm/NSResponder/showContextHelp:
+Objective-C/instm/NSHelpManager/showContextHelpForObject:locationHint:
+JavaScript/instm/InspectorFrontendHost/showContextMenu
+Objective-C/instm/NSView/showDefinitionForAttributedString:atPoint:
+Objective-C/instm/NSView/showDefinitionForAttributedString:range:options:baselineOriginProvider:
+Objective-C/instm/NSTextView/showFindIndicatorForRange:
+Objective-C/instm/WebView/showGuessPanel:
+Objective-C/instm/NSText/showGuessPanel:
+Objective-C/instm/NSApplication/showHelp:
+C/func/-/ShowHideProcess
+JavaScript/instm/DOMWindow/showModalDialog
+Objective-C/instm/NSLayoutManager/showPackedGlyphs:length:glyphRange:atPoint:font:color:printingAdjustment:
+Objective-C/instm/NSPrintOperation/showPanels
+Objective-C/intfm/IMKStateSetting/showPreferences:
+Objective-C/instm/NSColorPanel/showsAlpha
+Objective-C/instm/NSDockTile/showsApplicationBadge
+Objective-C/instm/NSToolbar/showsBaselineSeparator
+Objective-C/instm/NSButton/showsBorderOnlyWhileMouseInside
+Objective-C/instm/NSButtonCell/showsBorderOnlyWhileMouseInside
+Objective-C/instm/QCCompositionPickerView/showsCompositionNames
+Objective-C/instm/NSLayoutManager/showsControlCharacters
+Objective-C/instm/NSWorkspace/showSearchResultsForQueryString:
+Objective-C/instm/AUGenericView/showsExpertParameters
+Objective-C/instm/NSCell/showsFirstResponder
+Objective-C/instm/SFCertificatePanel/showsHelp
+Objective-C/instm/NSAlert/showsHelp
+Objective-C/instm/SFChooseIdentityPanel/showsHelp
+Objective-C/instm/NSSavePanel/showsHiddenFiles
+Objective-C/instm/NSLayoutManager/showsInvisibleCharacters
+Objective-C/instm/NSPrintOperation/showsPrintPanel
+Objective-C/instm/NSPrintOperation/showsProgressPanel
+Objective-C/instm/NSWindow/showsResizeIndicator
+Objective-C/instm/NSButtonCell/showsStateBy
+Objective-C/instm/NSMenu/showsStateColumn
+Objective-C/instm/NSAlert/showsSuppressionButton
+Objective-C/instm/NSWindow/showsToolbarButton
+Objective-C/instm/NSWindowController/showWindow:
+Objective-C/instm/NSDocument/showWindows
+C/func/-/Shutdown
+C/func/-/shutdown
+C/func/-/shutdown_mib
+C/func/-/sigaction
+C/func/-/sigaddset
+C/func/-/sigaltstack
+C/func/-/sigblock
+C/func/-/sigdelset
+C/func/-/sigemptyset
+C/func/-/sigfillset
+C/func/-/siginterrupt
+C/func/-/sigismember
+C/func/-/siglongjmp
+C/func/-/sigmask
+Objective-C/instm/NSCondition/signal
+C/func/-/signal
+C++/instm/IOFilterInterruptEventSource/signalInterrupt
+C++/instm/IOSCSIParallelInterfaceController/SignalInterrupt
+Objective-C/instp/PSClient/signature
+Objective-C/clm/NSMethodSignature/signatureWithObjCTypes:
+C/func/-/signbit
+C/func/-/sigpause
+C/func/-/sigpending
+C/func/-/sigprocmask
+C/func/-/sigsetjmp
+C/func/-/sigsetmask
+C/func/-/sigsetops
+C/func/-/sigstack
+C/func/-/sigsuspend
+C/func/-/sigvec
+C/func/-/sigwait
+C++/clm/IOFWPseudoAddressSpace/simpleRead
+C++/clm/IOFWPseudoAddressSpace/simpleReader
+C++/clm/IOFWPseudoAddressSpace/simpleReadFixed
+C++/clm/IOFWPseudoAddressSpace/simpleRW
+C++/clm/IOFWPseudoAddressSpace/simpleRWFixed
+C++/clm/IOFWPseudoAddressSpace/simpleWriter
+C/func/-/sin
+C/func/-/sinf
+JavaScript/data/XPathResult/singleNodeValue
+C/func/-/sinh
+C/func/-/sinhf
+C/func/-/sinhl
+C/func/-/sinl
+C/tdef/-/SInt32List
+C/macro/-/SIOCGKEVFILT
+C/macro/-/SIOCGKEVID
+C/macro/-/SIOCGKEVVENDOR
+C/macro/-/SIOCSKEVFILT
+C/tdef/-/Size
+Objective-C/instm/FxImage/size
+Objective-C/instm/NSDockTile/size
+Objective-C/instm/NSImageRep/size
+Objective-C/instm/NSImage/size
+Objective-C/instm/NSMenu/size
+Objective-C/instm/NSAttributedString/size
+JavaScript/data/Blob/size
+JavaScript/data/HTMLFontElement/size
+JavaScript/data/HTMLBaseFontElement/size
+JavaScript/data/HTMLSelectElement/size
+JavaScript/data/HTMLHRElement/size
+JavaScript/data/HTMLInputElement/size
+JavaScript/data/WebGLActiveInfo/size
+Objective-C/instm/NSPrinter/sizeForKey:inTable:
+Objective-C/clm/NSPrintInfo/sizeForPaperName:
+Objective-C/instm/NSPointerFunctions/sizeFunction
+Objective-C/instp/NSPointerFunctions/sizeFunction
+JavaScript/instm/WebGLRenderingContext/sizeInBytes
+Objective-C/instm/NSTableView/sizeLastColumnToFit
+Objective-C/instm/NSToolbar/sizeMode
+Objective-C/instm/NSTabViewItem/sizeOfLabel:
+C/tdef/-/SizeResourceRec
+Objective-C/instm/NSMatrix/sizeToCells
+Objective-C/instm/NSTableColumn/sizeToFit
+Objective-C/instm/NSProgressIndicator/sizeToFit
+Objective-C/instm/NSBox/sizeToFit
+Objective-C/instm/NSMenuView/sizeToFit
+Objective-C/instm/NSControl/sizeToFit
+Objective-C/instm/NSTableView/sizeToFit
+Objective-C/instm/NSText/sizeToFit
+Objective-C/instm/NSMenu/sizeToFit
+Objective-C/instm/NSValue/sizeValue
+Objective-C/instm/NSString/sizeWithAttributes:
+C/func/-/SKDocumentCopyURL
+C/func/-/SKDocumentCreate
+C/func/-/SKDocumentCreateWithURL
+C/func/-/SKDocumentGetName
+C/func/-/SKDocumentGetParent
+C/func/-/SKDocumentGetSchemeName
+C/func/-/SKDocumentGetTypeID
+C/tdef/-/SKDocumentID
+C/tdef/-/SKDocumentIndexState
+C/tdef/-/SKDocumentRef
+C/func/-/SkewMatrix
+JavaScript/instm/SVGMatrix/skewX
+JavaScript/instm/SVGMatrix/skewY
+C/func/-/SKIndexAddDocument
+C/func/-/SKIndexAddDocumentWithText
+C/func/-/SKIndexClose
+C/func/-/SKIndexCompact
+C/func/-/SKIndexCopyDocumentForDocumentID
+C/func/-/SKIndexCopyDocumentIDArrayForTermID
+C/func/-/SKIndexCopyDocumentProperties
+C/func/-/SKIndexCopyDocumentRefsForDocumentIDs
+C/func/-/SKIndexCopyDocumentURLsForDocumentIDs
+C/func/-/SKIndexCopyInfoForDocumentIDs
+C/func/-/SKIndexCopyTermIDArrayForDocumentID
+C/func/-/SKIndexCopyTermStringForTermID
+C/func/-/SKIndexCreateWithMutableData
+C/func/-/SKIndexCreateWithURL
+C/func/-/SKIndexDocumentIteratorCopyNext
+C/func/-/SKIndexDocumentIteratorCreate
+C/func/-/SKIndexDocumentIteratorGetTypeID
+C/tdef/-/SKIndexDocumentIteratorRef
+C/func/-/SKIndexFlush
+C/func/-/SKIndexGetAnalysisProperties
+C/func/-/SKIndexGetDocumentCount
+C/func/-/SKIndexGetDocumentID
+C/func/-/SKIndexGetDocumentState
+C/func/-/SKIndexGetDocumentTermCount
+C/func/-/SKIndexGetDocumentTermFrequency
+C/func/-/SKIndexGetIndexType
+C/func/-/SKIndexGetMaximumBytesBeforeFlush
+C/func/-/SKIndexGetMaximumDocumentID
+C/func/-/SKIndexGetMaximumTermID
+C/func/-/SKIndexGetTermDocumentCount
+C/func/-/SKIndexGetTermIDForTermString
+C/func/-/SKIndexGetTypeID
+C/func/-/SKIndexMoveDocument
+C/func/-/SKIndexOpenWithData
+C/func/-/SKIndexOpenWithMutableData
+C/func/-/SKIndexOpenWithURL
+C/tdef/-/SKIndexRef
+C/func/-/SKIndexRemoveDocument
+C/func/-/SKIndexRenameDocument
+C/func/-/SKIndexSetDocumentProperties
+C/func/-/SKIndexSetMaximumBytesBeforeFlush
+C/tdef/-/SKIndexType
+C/macro/-/SKIP_EOL
+Objective-C/instm/NSDirectoryEnumerator/skipDescendants
+Objective-C/instm/NSDirectoryEnumerator/skipDescendents
+C/func/-/SKLoadDefaultExtractorPlugIns
+C/func/-/SKSearchCancel
+C/func/-/SKSearchCreate
+C/func/-/SKSearchFindMatches
+C/func/-/SKSearchGetTypeID
+C/func/-/SKSearchGroupCopyIndexes
+C/func/-/SKSearchGroupCreate
+C/func/-/SKSearchGroupGetTypeID
+C/tdef/-/SKSearchGroupRef
+C/tdef/-/SKSearchOptions
+C/tdef/-/SKSearchRef
+C/func/-/SKSearchResultsCopyMatchingTerms
+C/func/-/SKSearchResultsCreateWithDocuments
+C/func/-/SKSearchResultsCreateWithQuery
+C/tdef/-/SKSearchResultsFilterCallBack
+C/func/-/SKSearchResultsGetCount
+C/func/-/SKSearchResultsGetInfoInRange
+C/func/-/SKSearchResultsGetTypeID
+C/tdef/-/SKSearchResultsRef
+C/tdef/-/SKSearchType
+C/func/-/SKSummaryCopyParagraphAtIndex
+C/func/-/SKSummaryCopyParagraphSummaryString
+C/func/-/SKSummaryCopySentenceAtIndex
+C/func/-/SKSummaryCopySentenceSummaryString
+C/func/-/SKSummaryCreateWithString
+C/func/-/SKSummaryGetParagraphCount
+C/func/-/SKSummaryGetParagraphSummaryInfo
+C/func/-/SKSummaryGetSentenceCount
+C/func/-/SKSummaryGetSentenceSummaryInfo
+C/func/-/SKSummaryGetTypeID
+C/tdef/-/SKSummaryRef
+C/func/-/sl_add
+C/func/-/sl_find
+C/func/-/sl_free
+C/func/-/sl_init
+JavaScript/instm/Channel/sleep
+C/func/-/sleep
+Objective-C/clm/NSThread/sleepForTimeInterval:
+Objective-C/clm/NSThread/sleepUntilDate:
+JavaScript/instm/ArrayBufferView/slice
+JavaScript/instm/Blob/slice
+Objective-C/intfm/NSDraggingInfo/slideDraggedImageTo:
+Objective-C/instm/NSWorkspace/slideImage:from:to:
+Objective-C/instm/NSSliderCell/sliderType
+Objective-C/intfm/IKSlideshowDataSource/slideshowDidChangeCurrentIndex:
+Objective-C/intfm/IKSlideshowDataSource/slideshowDidStop
+Objective-C/intfm/IKSlideshowDataSource/slideshowItemAtIndex:
+Objective-C/intfm/IKSlideshowDataSource/slideshowWillStart
+C/func/-/SLIST_EMPTY
+C/func/-/SLIST_ENTRY
+C/func/-/SLIST_FIRST
+C/func/-/SLIST_FOREACH
+C/func/-/SLIST_FOREACH_SAFE
+C/func/-/SLIST_HEAD
+C/func/-/SLIST_HEAD_INITIALIZER
+C/func/-/SLIST_INIT
+C/func/-/SLIST_INSERT_AFTER
+C/func/-/SLIST_INSERT_HEAD
+C/func/-/SLIST_NEXT
+C/func/-/SLIST_REMOVE
+C/func/-/SLIST_REMOVE_HEAD
+C/func/-/slk_attr
+C/func/-/slk_attr_off
+C/func/-/slk_attr_on
+C/func/-/slk_attr_set
+C/func/-/slk_attroff
+C/func/-/slk_attron
+C/func/-/slk_attrset
+C/func/-/slk_clear
+C/func/-/slk_color
+C/func/-/slk_init
+C/func/-/slk_label
+C/func/-/slk_noutrefresh
+C/func/-/slk_refresh
+C/func/-/slk_restore
+C/func/-/slk_set
+C/func/-/slk_touch
+JavaScript/data/SVGComponentTransferFunctionElement/slope
+C/tdef/-/SlotDevParam
+Objective-C/instm/NSString/smallestEncoding
+Objective-C/clm/NSFont/smallSystemFontSize
+Objective-C/instm/NSTextView/smartDeleteRangeForProposedRange:
+Objective-C/instm/NSTextView/smartInsertAfterStringForString:replacingRange:
+Objective-C/instm/NSTextView/smartInsertBeforeStringForString:replacingRange:
+Objective-C/instm/NSTextView/smartInsertDeleteEnabled
+Objective-C/instm/WebView/smartInsertDeleteEnabled
+Objective-C/instm/NSTextView/smartInsertForString:replacingRange:beforeString:afterString:
+C/econst/-/smCentralEuroRoman
+C/func/-/SMCopyAllJobDictionaries
+C/func/-/SMIME_read_PKCS7
+C/func/-/SMIME_write_PKCS7
+C/func/-/SMJobBless
+C/func/-/SMJobCopyDictionary
+C/func/-/SMJobRemove
+C/func/-/SMJobSubmit
+C/tag/-/SMPTE
+C/tdef/-/SMPTEFlags
+C/tdef/-/SMPTEFrameReference
+C/tag/-/SMPTETime
+C/tdef/-/SMPTETime
+Objective-C/instm/NSValue/SMPTETimeValue
+C/tdef/-/SMPTEWipeType
+C/econst/-/smRSymbol
+C/econst/-/smSimpChinese
+C/econst/-/smTradChinese
+C/func/-/sMultMatMat_16x16
+C/func/-/sMultMatMat_32x32
+C/func/-/sMultMatMat_4x4
+C/func/-/sMultMatMat_8x8
+C/func/-/sMultMatVec_16x16
+C/func/-/sMultMatVec_32x32
+C/func/-/sMultMatVec_4x4
+C/func/-/sMultMatVec_8x8
+C/func/-/sMultVecMat_16x16
+C/func/-/sMultVecMat_32x32
+C/func/-/sMultVecMat_4x4
+C/func/-/sMultVecMat_8x8
+Objective-C/instm/QCView/snapshotImage
+Objective-C/instm/QCRenderer/snapshotImage
+JavaScript/instm/XPathResult/snapshotItem
+JavaScript/data/XPathResult/snapshotLength
+Objective-C/instm/ISyncSession/snapshotOfRecordsInTruth
+Objective-C/instm/ISyncManager/snapshotOfRecordsInTruthWithEntityNames:usingIdentifiersForClient:
+C/func/-/snmp_agent_api
+C/func/-/snmp_alarm
+C/func/-/snmp_alarm_register
+C/func/-/snmp_alarm_register_hr
+C/func/-/snmp_alarm_unregister
+C/func/-/snmp_api
+C/func/-/snmp_api_errstring
+C/func/-/snmp_close
+C/func/-/snmp_enable_stderrlog
+C/func/-/snmp_error
+C/macro/-/SNMP_FREE
+C/func/-/snmp_free_pdu
+C/macro/-/SNMP_MALLOC_STRUCT
+C/macro/-/SNMP_MALLOC_TYPEDEF
+C/macro/-/SNMP_MAX
+C/macro/-/SNMP_MIN
+C/func/-/snmp_open
+C/func/-/snmp_perror
+C/func/-/snmp_read
+C/func/-/snmp_select_info
+C/func/-/snmp_send
+C/func/-/snmp_sess_api
+C/func/-/snmp_sess_async_send
+C/func/-/snmp_sess_close
+C/func/-/snmp_sess_error
+C/func/-/snmp_sess_init
+C/func/-/snmp_sess_open
+C/func/-/snmp_sess_perror
+C/func/-/snmp_sess_read
+C/func/-/snmp_sess_select_info
+C/func/-/snmp_sess_send
+C/func/-/snmp_sess_session
+C/func/-/snmp_sess_timeout
+C/tag/-/snmp_session
+C/func/-/snmp_set_mib_warnings
+C/func/-/snmp_set_save_descriptions
+C/func/-/snmp_shutdown
+C/macro/-/SNMP_SWIPE_MEM
+C/func/-/snmp_timeout
+C/func/-/snmp_trap_api
+C/macro/-/SNMP_ZERO
+C/func/-/snprint_objid
+C/func/-/snprint_value
+C/func/-/snprint_variable
+C/func/-/snprintf
+C/func/-/snprintf_l
+C/func/-/SNRM2
+C/econst/-/soCharacterMode
+C/func/-/sock_accept
+C/func/-/sock_bind
+C/func/-/sock_close
+C/func/-/sock_connect
+C/econst/sflt_data_flag_t/sock_data_filt_flag_oob
+C/econst/sflt_data_flag_t/sock_data_filt_flag_record
+C/econst/sflt_event_t/sock_evt_bound
+C/econst/sflt_event_t/sock_evt_cantrecvmore
+C/econst/sflt_event_t/sock_evt_cantsendmore
+C/econst/sflt_event_t/sock_evt_closing
+C/econst/sflt_event_t/sock_evt_connected
+C/econst/sflt_event_t/sock_evt_disconnected
+C/econst/sflt_event_t/sock_evt_flush_read
+C/econst/sflt_event_t/sock_evt_shutdown
+C/func/-/sock_getpeername
+C/func/-/sock_getsockname
+C/func/-/sock_getsockopt
+C/func/-/sock_gettype
+C/func/-/sock_inject_data_in
+C/func/-/sock_inject_data_out
+C/func/-/sock_ioctl
+C/func/-/sock_isconnected
+C/func/-/sock_isnonblocking
+C/func/-/sock_listen
+C/func/-/sock_receive
+C/func/-/sock_receivembuf
+C/func/-/sock_send
+C/func/-/sock_sendmbuf
+C/func/-/sock_setpriv
+C/func/-/sock_setsockopt
+C/func/-/sock_shutdown
+C/func/-/sock_socket
+C/tdef/-/sock_upcall
+C/tag/-/sockaddr_ctl
+C/func/-/sockatmark
+Objective-C/instm/NSSocketPort/socket
+C/func/-/socket
+C/func/-/socketpair
+Objective-C/instm/NSSocketPort/socketType
+C/func/-/sockopt_copyin
+C/func/-/sockopt_copyout
+C/func/-/sockopt_direction
+C/func/-/sockopt_level
+C/func/-/sockopt_name
+C/func/-/sockopt_valsize
+C/econst/-/soCommandDelimiter
+C/econst/-/soCurrentA5
+C/econst/-/soCurrentVoice
+C/econst/-/soErrorCallBack
+C/econst/-/soErrors
+C/econst/-/soInputMode
+JavaScript/clconst/DataGridColumn/SOMETIMES_SORTED
+C/econst/-/soNumberMode
+C/econst/-/soOutputToAudioDevice
+C/econst/-/soOutputToExtAudioFile
+C/econst/-/soOutputToFileWithCFURL
+C/tdef/-/sOpenDirNode
+C/tdef/-/sOpenRecord
+C/econst/-/soPhonemeCallBack
+C/econst/-/soPhonemeOptions
+C/econst/-/soPhonemeSymbols
+C/econst/-/soPitchBase
+C/econst/-/soPitchMod
+C/econst/-/soRate
+JavaScript/clconst/DataGridColumn/SORC_DESCENDING
+C/econst/-/soRecentSync
+C/econst/-/soRefCon
+C/econst/-/soReset
+JavaScript/clconst/DataGridColumn/SORT_ASCENDING
+JavaScript/data/DataGridColumn/sortable
+JavaScript/data/HTMLDataGridColElement/sortable
+JavaScript/data/DataGridColumnList/sortColumn
+C/func/-/SortDataBrowserContainer
+Objective-C/instm/NSTableColumn/sortDescriptorPrototype
+Objective-C/instm/NSTreeController/sortDescriptors
+Objective-C/instm/NSMetadataQuery/sortDescriptors
+Objective-C/instm/NSArrayController/sortDescriptors
+Objective-C/instm/NSTableView/sortDescriptors
+Objective-C/binding/NSDictionaryController/sortDescriptors
+Objective-C/binding/NSArrayController/sortDescriptors
+Objective-C/binding/NSTreeController/sortDescriptors
+Objective-C/binding/NSOutlineView/sortDescriptors
+Objective-C/binding/NSTableView/sortDescriptors
+Objective-C/instm/NSFetchRequest/sortDescriptors
+Objective-C/clm/NSSortDescriptor/sortDescriptorWithKey:ascending:
+Objective-C/clm/NSSortDescriptor/sortDescriptorWithKey:ascending:comparator:
+Objective-C/clm/NSSortDescriptor/sortDescriptorWithKey:ascending:selector:
+JavaScript/data/DataGridColumn/sortDirection
+JavaScript/data/HTMLDataGridColElement/sortDirection
+Objective-C/instm/NSArray/sortedArrayHint
+Objective-C/instm/NSArray/sortedArrayUsingComparator:
+Objective-C/instm/NSSet/sortedArrayUsingDescriptors:
+Objective-C/instm/NSArray/sortedArrayUsingDescriptors:
+Objective-C/instm/NSArray/sortedArrayUsingFunction:context:
+Objective-C/instm/NSArray/sortedArrayUsingFunction:context:hint:
+Objective-C/instm/NSArray/sortedArrayUsingSelector:
+Objective-C/instm/NSArray/sortedArrayWithOptions:usingComparator:
+Objective-C/clm/QCPlugIn/sortedPropertyPortKeys
+Objective-C/instm/NSTableHeaderCell/sortIndicatorRectForBounds:
+Objective-C/instm/NSView/sortSubviewsUsingFunction:context:
+Objective-C/instm/NSMutableArray/sortUsingComparator:
+Objective-C/instm/NSMutableArray/sortUsingDescriptors:
+Objective-C/instm/NSMatrix/sortUsingFunction:context:
+Objective-C/instm/NSMutableArray/sortUsingFunction:context:
+Objective-C/instm/NSMatrix/sortUsingSelector:
+Objective-C/instm/NSMutableArray/sortUsingSelector:
+Objective-C/instm/NSMutableArray/sortWithOptions:usingComparator:
+Objective-C/instm/NSTreeNode/sortWithSortDescriptors:recursively:
+C/econst/-/soSoundOutput
+C/econst/-/soSpeechDoneCallBack
+C/econst/-/soStatus
+C/econst/-/soSyncCallBack
+C/econst/-/soSynthExtension
+C/econst/-/soSynthType
+C/econst/-/soTextDoneCallBack
+Objective-C/instm/NSButton/sound
+Objective-C/instp/CalAlarm/sound
+Objective-C/instm/CalAlarm/sound
+Objective-C/instm/NSButtonCell/sound
+Objective-C/intfm/NSSoundDelegate/sound:didFinishPlaying:
+C/tdef/-/SoundDescriptionHandle
+C/tdef/-/SoundDescriptionPtr
+C/econst/-/SoundMediaType
+Objective-C/clm/NSSound/soundNamed:
+Objective-C/clm/NSSound/soundUnfilteredFileTypes
+Objective-C/clm/NSSound/soundUnfilteredPasteboardTypes
+Objective-C/clm/NSSound/soundUnfilteredTypes
+Objective-C/instm/NSAppleScript/source
+Objective-C/instm/NSNibConnector/source
+JavaScript/data/IDBEvent/source
+JavaScript/data/MessageEvent/source
+Objective-C/instm/CAConstraint/sourceAttribute
+Objective-C/instp/CAConstraint/sourceAttribute
+Objective-C/instm/NSMigrationManager/sourceContext
+Objective-C/instm/NSMigrationManager/sourceEntityForEntityMapping:
+Objective-C/instm/NSEntityMapping/sourceEntityName
+Objective-C/instm/NSEntityMapping/sourceEntityVersionHash
+Objective-C/instm/NSEntityMapping/sourceExpression
+JavaScript/data/JavaScriptCallFrame/sourceID
+Objective-C/instm/ISyncRecordSnapshot/sourceIdentifiersForRelationshipName:withTargetIdentifier:
+Objective-C/instm/NSMigrationManager/sourceInstancesForEntityMappingNamed:destinationInstances:
+Objective-C/instm/NSMigrationManager/sourceModel
+Objective-C/instp/CAConstraint/sourceName
+Objective-C/instm/CAConstraint/sourceName
+Objective-C/instm/DRFSObject/sourcePath
+C/econst/-/soVoiceDescription
+C/econst/-/soVoiceFile
+C/econst/-/soVolume
+C/econst/-/soWordCallBack
+JavaScript/data/SVGTextPathElement/spacing
+JavaScript/data/HTMLTableColElement/span
+C/tdef/-/SPCModePagePowerCondition
+C/tdef/-/SPCModeParameterHeader10
+C/tdef/-/SPCModeParameterHeader6
+C/func/-/SpeakBuffer
+C/func/-/SpeakCFString
+C/func/-/SpeakString
+C/func/-/SpeakText
+Objective-C/instm/DRFSObject/specificNameForFilesystem:
+Objective-C/instm/DRFSObject/specificNames
+JavaScript/data/Attr/specified
+JavaScript/data/SVGFESpecularLightingElement/specularConstant
+JavaScript/data/SVGFESpotLightElement/specularExponent
+JavaScript/data/SVGFESpecularLightingElement/specularExponent
+C/func/-/SpeechBusy
+C/func/-/SpeechBusySystemWide
+C/tdef/-/SpeechChannel
+C/tdef/-/SpeechChannelRecord
+C/tdef/-/SpeechDoneProcPtr
+C/tdef/-/SpeechDoneUPP
+C/tdef/-/SpeechErrorCFProcPtr
+C/tdef/-/SpeechErrorInfo
+C/tdef/-/SpeechErrorProcPtr
+C/tdef/-/SpeechErrorUPP
+C/func/-/SpeechManagerVersion
+C/tdef/-/SpeechPhonemeProcPtr
+C/tdef/-/SpeechPhonemeUPP
+Objective-C/intfm/NSSpeechRecognizerDelegate/speechRecognizer:didRecognizeCommand:
+C/tdef/-/SpeechStatusInfo
+C/tdef/-/SpeechSyncProcPtr
+C/tdef/-/SpeechSyncUPP
+C/func/-/SpeechSynthesisRegisterModuleURL
+C/func/-/SpeechSynthesisUnregisterModuleURL
+Objective-C/intfm/NSSpeechSynthesizerDelegate/speechSynthesizer:didEncounterErrorAtIndex:ofString:message:
+Objective-C/intfm/NSSpeechSynthesizerDelegate/speechSynthesizer:didEncounterSyncMessage:
+Objective-C/intfm/NSSpeechSynthesizerDelegate/speechSynthesizer:didFinishSpeaking:
+Objective-C/intfm/NSSpeechSynthesizerDelegate/speechSynthesizer:willSpeakPhoneme:
+Objective-C/intfm/NSSpeechSynthesizerDelegate/speechSynthesizer:willSpeakWord:ofString:
+C/tdef/-/SpeechTextDoneProcPtr
+C/tdef/-/SpeechTextDoneUPP
+C/tdef/-/SpeechVersionInfo
+C/tdef/-/SpeechWordCFProcPtr
+C/tdef/-/SpeechWordProcPtr
+C/tdef/-/SpeechWordUPP
+C/tdef/-/SpeechXtndData
+Objective-C/intfp/CAMediaTiming/speed
+Objective-C/intfm/CAMediaTiming/speed
+Objective-C/instm/CLLocation/speed
+Objective-C/instp/CLLocation/speed
+JavaScript/data/Coordinates/speed
+Objective-C/instm/NSTextView/spellCheckerDocumentTag
+Objective-C/instm/WebView/spellCheckerDocumentTag
+Objective-C/clm/NSTextCheckingResult/spellCheckingResultWithRange:
+Objective-C/instm/NSSpellChecker/spellingPanel
+Objective-C/intfm/NSSpellServerDelegate/spellServer:checkGrammarInString:language:details:
+Objective-C/intfm/NSSpellServerDelegate/spellServer:checkString:offset:types:options:orthography:wordCount:
+Objective-C/intfm/NSSpellServerDelegate/spellServer:didForgetWord:inLanguage:
+Objective-C/intfm/NSSpellServerDelegate/spellServer:didLearnWord:inLanguage:
+Objective-C/intfm/NSSpellServerDelegate/spellServer:findMisspelledWordInString:language:wordCount:countOnly:
+Objective-C/intfm/NSSpellServerDelegate/spellServer:suggestCompletionsForPartialWordRange:inString:language:
+Objective-C/intfm/NSSpellServerDelegate/spellServer:suggestGuessesForWord:inLanguage:
+Objective-C/instp/CAEmitterLayer/spin
+Objective-C/instp/CAEmitterCell/spin
+Objective-C/instm/CAEmitterCell/spin
+Objective-C/instm/CAEmitterLayer/spin
+C/func/-/spinlock
+Objective-C/instp/CAEmitterCell/spinRange
+Objective-C/instm/CAEmitterCell/spinRange
+JavaScript/instm/Text/splitText
+C++/instm/IOBDMedia/splitTrack
+C++/instm/IOBDBlockStorageDriver/splitTrack
+C++/instm/IOBDBlockStorageDevice/splitTrack
+Objective-C/intfm/NSSplitViewDelegate/splitView:additionalEffectiveRectOfDividerAtIndex:
+Objective-C/intfm/NSSplitViewDelegate/splitView:canCollapseSubview:
+Objective-C/intfm/NSSplitViewDelegate/splitView:constrainMaxCoordinate:ofSubviewAt:
+Objective-C/intfm/NSSplitViewDelegate/splitView:constrainMinCoordinate:ofSubviewAt:
+Objective-C/intfm/NSSplitViewDelegate/splitView:constrainSplitPosition:ofSubviewAt:
+Objective-C/intfm/NSSplitViewDelegate/splitView:effectiveRect:forDrawnRect:ofDividerAtIndex:
+Objective-C/intfm/NSSplitViewDelegate/splitView:resizeSubviewsWithOldSize:
+Objective-C/intfm/NSSplitViewDelegate/splitView:shouldAdjustSizeOfSubview:
+Objective-C/intfm/NSSplitViewDelegate/splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:
+Objective-C/intfm/NSSplitViewDelegate/splitView:shouldHideDividerAtIndex:
+Objective-C/intfm/NSSplitViewDelegate/splitViewDidResizeSubviews:
+Objective-C/intfm/NSSplitViewDelegate/splitViewWillResizeSubviews:
+C++/clm/IOSCSIProtocolInterface/sPowerManagement
+JavaScript/data/SVGGradientElement/spreadMethod
+C/func/-/sprint_realloc_objid
+C/func/-/sprint_realloc_value
+C/func/-/sprint_realloc_variable
+C/func/-/sprintf
+C/func/-/sprintf_l
+C/func/-/sputrune
+JavaScript/cl/-/SQLError
+JavaScript/cl/-/SQLResultSet
+JavaScript/cl/-/SQLResultSetRowList
+JavaScript/cl/-/SQLStatementCallback
+JavaScript/cl/-/SQLStatementErrorCallback
+JavaScript/cl/-/SQLTransaction
+JavaScript/cl/-/SQLTransactionCallback
+JavaScript/cl/-/SQLTransactionErrorCallback
+JavaScript/cl/-/SQLTransactionSync
+JavaScript/cl/-/SQLTransactionSyncCallback
+C/func/-/sqr
+C/func/-/sqrt
+C/func/-/sqrtf
+C/func/-/sqrtl
+C/func/-/SRAddLanguageObject
+C/func/-/SRAddText
+C/func/-/sradixsort
+C/func/-/srand
+C/func/-/srand48
+C/func/-/sranddev
+C/func/-/srandom
+C/func/-/srandomdev
+JavaScript/data/HTMLSourceElement/src
+JavaScript/data/HTMLScriptElement/src
+JavaScript/data/HTMLEmbedElement/src
+JavaScript/data/HTMLFrameElement/src
+JavaScript/data/HTMLMediaElement/src
+JavaScript/data/HTMLInputElement/src
+JavaScript/data/HTMLImageElement/src
+JavaScript/data/HTMLIFrameElement/src
+JavaScript/clconst/WebGLRenderingContext/SRC_ALPHA
+JavaScript/clconst/WebGLRenderingContext/SRC_ALPHA_SATURATE
+JavaScript/clconst/WebGLRenderingContext/SRC_COLOR
+C/tdef/-/SRCallBackParam
+C/tdef/-/SRCallBackProcPtr
+C/tdef/-/SRCallBackStruct
+C/tdef/-/SRCallBackUPP
+C/func/-/SRCancelRecognition
+C/econst/-/srcBic
+C/econst/-/srcCopy
+JavaScript/data/Event/srcElement
+C/func/-/SRChangeLanguageObject
+C/func/-/SRCloseRecognitionSystem
+C/func/-/SRContinueRecognition
+C/econst/-/srcOr
+C/func/-/SRCountItems
+C/econst/-/srcXor
+C/func/-/SRDrawRecognizedText
+C/func/-/SRDrawText
+C/tdef/-/sReleaseContinueData
+C/tdef/-/sRemoveAttribute
+C/tdef/-/sRemoveAttributeValue
+C/func/-/SREmptyLanguageObject
+Objective-C/clm/NSColorSpace/sRGBColorSpace
+C/func/-/SRGetIndexedItem
+C/func/-/SRGetLanguageModel
+C/func/-/SRGetProperty
+C/func/-/SRGetReference
+C/func/-/SRIdle
+C/tdef/-/SRLanguageModel
+C/tdef/-/SRLanguageObject
+C/func/-/SRNewLanguageModel
+C/func/-/SRNewLanguageObjectFromDataFile
+C/func/-/SRNewLanguageObjectFromHandle
+C/func/-/SRNewPath
+C/func/-/SRNewPhrase
+C/func/-/SRNewRecognizer
+C/func/-/SRNewWord
+C/func/-/SROpenRecognitionSystem
+C/func/-/SROT
+C/tdef/-/SRPath
+C/tdef/-/SRPhrase
+C/func/-/SRProcessBegin
+C/func/-/SRProcessEnd
+C/func/-/SRPutLanguageObjectIntoDataFile
+C/func/-/SRPutLanguageObjectIntoHandle
+C/tdef/-/SRRecognitionResult
+C/tdef/-/SRRecognitionSystem
+C/tdef/-/SRRecognizer
+C/tdef/-/SRRejectionLevel
+C/func/-/SRReleaseObject
+C/func/-/SRRemoveIndexedItem
+C/func/-/SRRemoveLanguageObject
+C/func/-/SRSetIndexedItem
+C/func/-/SRSetLanguageModel
+C/func/-/SRSetProperty
+C/func/-/SRSpeakAndDrawText
+C/func/-/SRSpeakText
+C/func/-/SRSpeechBusy
+C/tdef/-/SRSpeechObject
+C/tdef/-/SRSpeechSource
+C/tdef/-/SRSpeedSetting
+C/func/-/SRStartListening
+C/func/-/SRStopListening
+C/func/-/SRStopSpeech
+C/tdef/-/SRWord
+C/func/-/SSCAL
+C/func/-/sscanf
+C/func/-/sscanf_l
+C/func/-/SSCenteredRectInRect
+C/tdef/-/sSetAttributeValue
+C/tdef/-/sSetAttributeValues
+C/tdef/-/sSetRecordName
+C/tdef/-/sSetRecordType
+C++/clm/IOSCSIProtocolInterface/sSetUserClientExclusivityState
+Objective-C/instp/CWNetwork/ssid
+Objective-C/instp/CWWirelessProfile/ssid
+Objective-C/instp/CW8021XProfile/ssid
+Objective-C/instp/CWInterface/ssid
+C/func/-/ssl
+C/func/-/SSL_accept
+C/func/-/SSL_add_client_CA
+C/func/-/SSL_add_session
+C/func/-/SSL_alert_desc_string
+C/func/-/SSL_alert_desc_string_long
+C/func/-/SSL_alert_type_string
+C/func/-/SSL_alert_type_string_long
+C/func/-/SSL_callback_ctrl
+C/func/-/SSL_check_private_key
+C/func/-/SSL_CIPHER_description
+C/func/-/SSL_CIPHER_get_bits
+C/func/-/SSL_CIPHER_get_name
+C/func/-/SSL_CIPHER_get_version
+C/func/-/SSL_clear
+C/func/-/SSL_COMP_add_compression_method
+C/func/-/SSL_connect
+C/func/-/SSL_ctrl
+C/func/-/SSL_CTX_add_client_CA
+C/func/-/SSL_CTX_add_extra_chain_cert
+C/func/-/SSL_CTX_add_session
+C/func/-/SSL_CTX_callback_ctrl
+C/func/-/SSL_CTX_check_private_key
+C/func/-/SSL_CTX_ctrl
+C/func/-/SSL_CTX_flush_sessions
+C/func/-/SSL_CTX_free
+C/func/-/SSL_CTX_get_cert_store
+C/func/-/SSL_CTX_get_client_CA_list
+C/func/-/SSL_CTX_get_client_cert_cb
+C/func/-/SSL_CTX_get_ex_data
+C/func/-/SSL_CTX_get_ex_new_index
+C/func/-/SSL_CTX_get_info_callback
+C/func/-/SSL_CTX_get_max_cert_list
+C/func/-/SSL_CTX_get_mode
+C/func/-/SSL_CTX_get_options
+C/func/-/SSL_CTX_get_quiet_shutdown
+C/func/-/SSL_CTX_get_session_cache_mode
+C/func/-/SSL_CTX_get_timeout
+C/func/-/SSL_CTX_get_verify_callback
+C/func/-/SSL_CTX_get_verify_depth
+C/func/-/SSL_CTX_get_verify_mode
+C/func/-/SSL_CTX_load_verify_locations
+C/func/-/SSL_CTX_need_tmp_rsa
+C/func/-/SSL_CTX_new
+C/func/-/SSL_CTX_remove_session
+C/func/-/SSL_CTX_sess_accept
+C/func/-/SSL_CTX_sess_accept_good
+C/func/-/SSL_CTX_sess_accept_renegotiate
+C/func/-/SSL_CTX_sess_cache_full
+C/func/-/SSL_CTX_sess_cb_hits
+C/func/-/SSL_CTX_sess_connect
+C/func/-/SSL_CTX_sess_connect_good
+C/func/-/SSL_CTX_sess_connect_renegotiate
+C/func/-/SSL_CTX_sess_get_cache_size
+C/func/-/SSL_CTX_sess_get_get_cb
+C/func/-/SSL_CTX_sess_get_new_cb
+C/func/-/SSL_CTX_sess_get_remove_cb
+C/func/-/SSL_CTX_sess_hits
+C/func/-/SSL_CTX_sess_misses
+C/func/-/SSL_CTX_sess_number
+C/func/-/SSL_CTX_sess_set_cache_size
+C/func/-/SSL_CTX_sess_set_get_cb
+C/func/-/SSL_CTX_sess_set_new_cb
+C/func/-/SSL_CTX_sess_set_remove_cb
+C/func/-/SSL_CTX_sess_timeouts
+C/func/-/SSL_CTX_sessions
+C/func/-/SSL_CTX_set_cert_store
+C/func/-/SSL_CTX_set_cert_verify_callback
+C/func/-/SSL_CTX_set_cipher_list
+C/func/-/SSL_CTX_set_client_CA_list
+C/func/-/SSL_CTX_set_client_cert_cb
+C/func/-/SSL_CTX_set_default_passwd_cb
+C/func/-/SSL_CTX_set_default_passwd_cb_userdata
+C/func/-/SSL_CTX_set_ex_data
+C/func/-/SSL_CTX_set_generate_session_id
+C/func/-/SSL_CTX_set_info_callback
+C/func/-/SSL_CTX_set_max_cert_list
+C/func/-/SSL_CTX_set_mode
+C/func/-/SSL_CTX_set_msg_callback
+C/func/-/SSL_CTX_set_msg_callback_arg
+C/func/-/SSL_CTX_set_options
+C/func/-/SSL_CTX_set_quiet_shutdown
+C/func/-/SSL_CTX_set_session_cache_mode
+C/func/-/SSL_CTX_set_session_id_context
+C/func/-/SSL_CTX_set_ssl_version
+C/func/-/SSL_CTX_set_timeout
+C/func/-/SSL_CTX_set_tmp_dh
+C/func/-/SSL_CTX_set_tmp_dh_callback
+C/func/-/SSL_CTX_set_tmp_rsa
+C/func/-/SSL_CTX_set_tmp_rsa_callback
+C/func/-/SSL_CTX_set_verify
+C/func/-/SSL_CTX_set_verify_depth
+C/func/-/SSL_CTX_use_certificate
+C/func/-/SSL_CTX_use_certificate_ASN1
+C/func/-/SSL_CTX_use_certificate_chain_file
+C/func/-/SSL_CTX_use_certificate_file
+C/func/-/SSL_CTX_use_PrivateKey
+C/func/-/SSL_CTX_use_PrivateKey_ASN1
+C/func/-/SSL_CTX_use_PrivateKey_file
+C/func/-/SSL_CTX_use_RSAPrivateKey
+C/func/-/SSL_CTX_use_RSAPrivateKey_ASN1
+C/func/-/SSL_CTX_use_RSAPrivateKey_file
+C/econst/-/SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA
+C/econst/-/SSL_DH_anon_EXPORT_WITH_RC4_40_MD5
+C/econst/-/SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA
+C/econst/-/SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
+C/econst/-/SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
+C/func/-/SSL_do_handshake
+C/func/-/SSL_flush_sessions
+C/func/-/SSL_free
+C/func/-/SSL_get0_session
+C/func/-/SSL_get1_session
+C/func/-/SSL_get_accept_state
+C/func/-/SSL_get_cipher
+C/func/-/SSL_get_cipher_bits
+C/func/-/SSL_get_cipher_list
+C/func/-/SSL_get_cipher_name
+C/func/-/SSL_get_cipher_version
+C/func/-/SSL_get_ciphers
+C/func/-/SSL_get_client_CA_list
+C/func/-/SSL_get_current_cipher
+C/func/-/SSL_get_default_timeout
+C/func/-/SSL_get_error
+C/func/-/SSL_get_ex_data
+C/func/-/SSL_get_ex_data_X509_STORE_CTX_idx
+C/func/-/SSL_get_ex_new_index
+C/func/-/SSL_get_fd
+C/func/-/SSL_get_info_callback
+C/func/-/SSL_get_max_cert_list
+C/func/-/SSL_get_mode
+C/func/-/SSL_get_msg_callback_arg
+C/func/-/SSL_get_options
+C/func/-/SSL_get_peer_cert_chain
+C/func/-/SSL_get_peer_certificate
+C/func/-/SSL_get_quiet_shutdown
+C/func/-/SSL_get_rbio
+C/func/-/SSL_get_rfd
+C/func/-/SSL_get_session
+C/func/-/SSL_get_shutdown
+C/func/-/SSL_get_SSL_CTX
+C/func/-/SSL_get_ssl_method
+C/func/-/SSL_get_time
+C/func/-/SSL_get_timeout
+C/func/-/SSL_get_verify_callback
+C/func/-/SSL_get_verify_depth
+C/func/-/SSL_get_verify_mode
+C/func/-/SSL_get_verify_result
+C/func/-/SSL_get_version
+C/func/-/SSL_get_wbio
+C/func/-/SSL_get_wfd
+C/func/-/SSL_has_matching_session_id
+C/func/-/SSL_library_init
+C/func/-/SSL_load_client_CA_file
+C/func/-/SSL_load_error_strings
+C/func/-/SSL_need_tmp_rsa
+C/func/-/SSL_new
+C/func/-/SSL_pending
+C/func/-/SSL_read
+C/func/-/SSL_remove_session
+C/econst/-/SSL_RSA_EXPORT_WITH_DES40_CBC_SHA
+C/econst/-/SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
+C/econst/-/SSL_RSA_EXPORT_WITH_RC4_40_MD5
+C/econst/-/SSL_RSA_WITH_3DES_EDE_CBC_MD5
+C/econst/-/SSL_RSA_WITH_DES_CBC_MD5
+C/econst/-/SSL_RSA_WITH_IDEA_CBC_MD5
+C/econst/-/SSL_RSA_WITH_RC2_CBC_MD5
+C/func/-/SSL_rstate_string
+C/func/-/SSL_rstate_string_long
+C/func/-/SSL_SESSION_free
+C/func/-/SSL_SESSION_get_ex_data
+C/func/-/SSL_SESSION_get_ex_new_index
+C/func/-/SSL_SESSION_get_time
+C/func/-/SSL_SESSION_get_timeout
+C/func/-/SSL_session_reused
+C/func/-/SSL_SESSION_set_ex_data
+C/func/-/SSL_SESSION_set_time
+C/func/-/SSL_SESSION_set_timeout
+C/func/-/SSL_set_accept_state
+C/func/-/SSL_set_bio
+C/func/-/SSL_set_cipher_list
+C/func/-/SSL_set_client_CA_list
+C/func/-/SSL_set_connect_state
+C/func/-/SSL_set_ex_data
+C/func/-/SSL_set_fd
+C/func/-/SSL_set_generate_session_id
+C/func/-/SSL_set_info_callback
+C/func/-/SSL_set_max_cert_list
+C/func/-/SSL_set_mode
+C/func/-/SSL_set_msg_callback
+C/func/-/SSL_set_msg_callback_arg
+C/func/-/SSL_set_options
+C/func/-/SSL_set_quiet_shutdown
+C/func/-/SSL_set_rfd
+C/func/-/SSL_set_session
+C/func/-/SSL_set_session_id_context
+C/func/-/SSL_set_shutdown
+C/func/-/SSL_set_ssl_method
+C/func/-/SSL_set_time
+C/func/-/SSL_set_timeout
+C/func/-/SSL_set_tmp_dh
+C/func/-/SSL_set_tmp_dh_callback
+C/func/-/SSL_set_tmp_rsa
+C/func/-/SSL_set_tmp_rsa_callback
+C/func/-/SSL_set_verify
+C/func/-/SSL_set_verify_depth
+C/func/-/SSL_set_verify_result
+C/func/-/SSL_set_wfd
+C/func/-/SSL_shutdown
+C/func/-/SSL_state_string
+C/func/-/SSL_state_string_long
+C/func/-/SSL_use_certificate
+C/func/-/SSL_use_certificate_ASN1
+C/func/-/SSL_use_certificate_file
+C/func/-/SSL_use_PrivateKey
+C/func/-/SSL_use_PrivateKey_ASN1
+C/func/-/SSL_use_PrivateKey_file
+C/func/-/SSL_use_RSAPrivateKey
+C/func/-/SSL_use_RSAPrivateKey_ASN1
+C/func/-/SSL_use_RSAPrivateKey_file
+C/func/-/SSL_want
+C/func/-/SSL_want_nothing
+C/func/-/SSL_want_read
+C/func/-/SSL_want_write
+C/func/-/SSL_want_x509_lookup
+C/func/-/SSL_write
+C/func/-/SSLAddDistinguishedName
+C/tdef/-/SSLAuthenticate
+C/tdef/-/SSLCipherSuite
+C/tdef/-/SSLClientCertificateState
+C/func/-/SSLClose
+C/tdef/-/SSLConnectionRef
+C/tdef/-/SSLContextRef
+C/func/-/SSLDisposeContext
+C/func/-/SSLeay
+C/func/-/SSLeay_add_ssl_algorithms
+C/func/-/SSLeay_version
+C/func/-/SSLGetAllowsAnyRoot
+C/func/-/SSLGetAllowsExpiredCerts
+C/func/-/SSLGetAllowsExpiredRoots
+C/func/-/SSLGetBufferedReadSize
+C/func/-/SSLGetClientCertificateState
+C/func/-/SSLGetConnection
+C/func/-/SSLGetDiffieHellmanParams
+C/func/-/SSLGetEnableCertVerify
+C/func/-/SSLGetEnabledCiphers
+C/func/-/SSLGetNegotiatedCipher
+C/func/-/SSLGetNegotiatedProtocolVersion
+C/func/-/SSLGetNumberEnabledCiphers
+C/func/-/SSLGetNumberSupportedCiphers
+C/func/-/SSLGetPeerCertificates
+C/func/-/SSLGetPeerDomainName
+C/func/-/SSLGetPeerDomainNameLength
+C/func/-/SSLGetPeerID
+C/func/-/SSLGetProtocolVersion
+C/func/-/SSLGetProtocolVersionEnabled
+C/func/-/SSLGetRsaBlinding
+C/func/-/SSLGetSessionState
+C/func/-/SSLGetSupportedCiphers
+C/func/-/SSLGetTrustedRoots
+C/func/-/SSLHandshake
+C/func/-/SSLNewContext
+C/tdef/-/SSLProtocol
+C/func/-/SSLRead
+C/tdef/-/SSLReadFunc
+C/tdef/-/SSLSessionState
+C/func/-/SSLSetAllowsAnyRoot
+C/func/-/SSLSetAllowsExpiredCerts
+C/func/-/SSLSetAllowsExpiredRoots
+C/func/-/SSLSetCertificate
+C/func/-/SSLSetClientSideAuthenticate
+C/func/-/SSLSetConnection
+C/func/-/SSLSetDiffieHellmanParams
+C/func/-/SSLSetEnableCertVerify
+C/func/-/SSLSetEnabledCiphers
+C/func/-/SSLSetEncryptionCertificate
+C/func/-/SSLSetIOFuncs
+C/func/-/SSLSetPeerDomainName
+C/func/-/SSLSetPeerID
+C/func/-/SSLSetProtocolVersion
+C/func/-/SSLSetProtocolVersionEnabled
+C/func/-/SSLSetRsaBlinding
+C/func/-/SSLSetTrustedRoots
+C/func/-/SSLWrite
+C/tdef/-/SSLWriteFunc
+C/func/-/SSRandomFloatBetween
+C/func/-/SSRandomIntBetween
+C/func/-/SSRandomPointForSizeWithinRect
+C/func/-/SSWAP
+C/func/-/STACK_OF
+C/func/-/STACKOF
+Objective-C/instm/NSThread/stackSize
+C/func/-/STAILQ_CONCAT
+C/func/-/STAILQ_EMPTY
+C/func/-/STAILQ_ENTRY
+C/func/-/STAILQ_FIRST
+C/func/-/STAILQ_FOREACH
+C/func/-/STAILQ_FOREACH_SAFE
+C/func/-/STAILQ_HEAD
+C/func/-/STAILQ_HEAD_INITIALIZER
+C/func/-/STAILQ_INIT
+C/func/-/STAILQ_INSERT_AFTER
+C/func/-/STAILQ_INSERT_HEAD
+C/func/-/STAILQ_INSERT_TAIL
+C/func/-/STAILQ_LAST
+C/func/-/STAILQ_NEXT
+C/func/-/STAILQ_REMOVE
+C/func/-/STAILQ_REMOVE_HEAD
+Objective-C/instm/NSManagedObjectContext/stalenessInterval
+Objective-C/instm/NSDateFormatter/standaloneMonthSymbols
+Objective-C/instm/NSDateFormatter/standaloneQuarterSymbols
+Objective-C/instm/NSDateFormatter/standaloneWeekdaySymbols
+Objective-C/instm/NSTask/standardError
+Objective-C/instm/WebPreferences/standardFontFamily
+Objective-C/instm/NSTask/standardInput
+Objective-C/instm/NSURL/standardizedURL
+Objective-C/instm/NSTask/standardOutput
+C/tag/-/StandardPacketFilters
+Objective-C/clm/WebPreferences/standardPreferences
+Objective-C/clm/NSUserDefaults/standardUserDefaults
+Objective-C/instm/NSWindow/standardWindowButton:
+Objective-C/clm/NSWindow/standardWindowButton:forStyleMask:
+JavaScript/data/HTMLObjectElement/standby
+C/func/-/standend
+C/func/-/standout
+Objective-C/instm/NSOperation/start
+Objective-C/instm/IMAVManager/start
+Objective-C/instm/DRErase/start
+Objective-C/instm/IOBluetoothDevicePair/start
+Objective-C/instm/IOBluetoothDeviceInquiry/start
+C++/instm/IONetworkController/start
+Objective-C/instm/NSThread/start
+Objective-C/instm/NSURLConnection/start
+C++/instm/IOAudioEngine/start
+C++/instm/IOAudioPort/start
+C++/instm/IOBasicOutputQueue/start
+C++/instm/IOAudioControl/start
+C++/instm/IOAudioDevice/start
+C++/instm/IOHIDDevice/start
+C++/instm/IOFireWireSerialBusProtocolTransport/start
+C++/instm/IOOutputQueue/start
+C++/instm/IOHIDInterface/start
+C++/instm/IOService/start
+C++/instm/IOSCSIProtocolInterface/start
+JavaScript/data/HTMLOListElement/start
+JavaScript/instm/HTMLMarqueeElement/start
+JavaScript/instm/MessagePort/start
+JavaScript/instm/TimeRanges/start
+Objective-C/instm/QCView/start:
+C/func/-/start_color
+C++/instm/IOService/start_PM_idle_timer
+JavaScript/clconst/Range/START_TO_END
+JavaScript/clconst/Range/START_TO_START
+Objective-C/intfm/FxCustomParameterActionAPI/startAction:
+Objective-C/instm/ScreenSaverView/startAnimation
+Objective-C/instm/NSAnimation/startAnimation
+Objective-C/instm/QCCompositionPickerView/startAnimation:
+Objective-C/instm/NSProgressIndicator/startAnimation:
+Objective-C/instm/ISyncSessionDriver/startAsynchronousSync:
+JavaScript/instm/Channel/startAT
+C++/instm/IOAudioEngine/startAudioEngine
+JavaScript/data/Range/startContainer
+C++/instm/IOSCSIParallelInterfaceController/StartController
+Objective-C/instm/CalEvent/startDate
+Objective-C/instp/CalEvent/startDate
+C/tdef/-/startDocumentSAXFunc
+C++/instm/TestRun/startedTest
+C++/instm/TestRun/startedTestSuite
+C/func/-/StartEffect
+C/tdef/-/startElementNsSAX2Func
+C/tdef/-/startElementSAXFunc
+C++/instm/IOHIDDevice/startEventDelivery
+Objective-C/instm/QCPlugIn/startExecution:
+Objective-C/instm/NSTextTableBlock/startingColumn
+Objective-C/instm/NSTextList/startingItemNumber
+Objective-C/instm/NSTextTableBlock/startingRow
+Objective-C/instm/PDFAnnotationLine/startLineStyle
+Objective-C/instm/NSSpeechRecognizer/startListening
+Objective-C/instm/NSURLProtocol/startLoading
+C++/instm/IOCatalogue/startMatching
+Objective-C/instm/NSNetService/startMonitoring
+JavaScript/data/Range/startOffset
+JavaScript/data/SVGTextPathElement/startOffset
+Objective-C/intfm/FxParameterCreationAPI/startParameterSubGroup:parmId:parmFlags:
+Objective-C/clm/NSEvent/startPeriodicEventsAfterDelay:withPeriod:
+Objective-C/instm/PDFAnnotationLine/startPoint
+Objective-C/instm/CAGradientLayer/startPoint
+Objective-C/instp/CAGradientLayer/startPoint
+JavaScript/instm/InspectorBackend/startProfiling
+Objective-C/instm/CATransition/startProgress
+Objective-C/instp/CATransition/startProgress
+Objective-C/instm/NSMetadataQuery/startQuery
+Objective-C/instm/QCView/startRendering
+Objective-C/instm/QTCaptureSession/startRunning
+Objective-C/instm/NSTextView/startSpeaking:
+Objective-C/instm/WebView/startSpeaking:
+Objective-C/instm/NSSpeechSynthesizer/startSpeakingString:
+Objective-C/instm/NSSpeechSynthesizer/startSpeakingString:toURL:
+Objective-C/instm/NSRangeSpecifier/startSpecifier
+C/func/-/StartStream
+C++/instm/IOStream/startStream
+C/func/-/StartStream()
+Objective-C/instm/NSWhoseSpecifier/startSubelementIdentifier
+Objective-C/instm/NSWhoseSpecifier/startSubelementIndex
+JavaScript/data/HTMLMediaElement/startTime
+Objective-C/intfm/FxTimingAPI/startTimeForEffect:
+JavaScript/instm/InspectorBackend/startTimelineProfiler
+Objective-C/instm/QTMovie/startTimeOfChapter:
+Objective-C/intfm/FxTimingAPI/startTimeOfImageParm:forEffect:
+Objective-C/intfm/FxTimingAPI/startTimeOfInputAToTransition:
+Objective-C/intfm/FxTimingAPI/startTimeOfInputBToTransition:
+Objective-C/intfm/FxTimingAPI/startTimeOfInputToFilter:
+Objective-C/instm/NSCell/startTrackingAt:inView:
+Objective-C/instm/CLLocationManager/startUpdatingLocation
+Objective-C/instm/NSAnimation/startWhenAnimation:reachesProgress:
+C/func/-/stat
+C/func/-/stat64
+Objective-C/instm/NSButton/state
+Objective-C/instm/PDFAnnotationButtonWidget/state
+Objective-C/instm/NSDrawer/state
+Objective-C/instm/IMAVManager/state
+Objective-C/instm/IMAVButton/state
+Objective-C/instm/NSMenuItem/state
+Objective-C/instm/XGAuthenticator/state
+Objective-C/instm/XGResource/state
+Objective-C/instm/XGConnection/state
+C++/data/IOATABusCommand/state
+C++/data/IOAudioEngine/state
+Objective-C/instm/NSCell/state
+JavaScript/data/PopStateEvent/state
+Objective-C/instm/NSMenuView/stateImageOffset
+Objective-C/instm/NSMenuItemCell/stateImageRectForBounds:
+Objective-C/instm/NSMenuItemCell/stateImageWidth
+Objective-C/instm/NSMenuView/stateImageWidth
+C/data/-/stateKnown
+C/func/-/statfs
+C/func/-/statfs64
+JavaScript/clconst/WebGLRenderingContext/STATIC_DRAW
+C/func/-/static_pointer_cast
+Objective-C/instm/NSConnection/statistics
+C++/tag/IOBlockStorageDriver/Statistics
+Objective-C/instm/CalAttendee/status
+Objective-C/instp/CalAttendee/status
+C/tag/-/Status
+Objective-C/instm/NSURLHandle/status
+Objective-C/instm/IMService/status
+Objective-C/instm/DRBurn/status
+Objective-C/instm/DRErase/status
+Objective-C/instm/DRDevice/status
+C++/data/IOAudioEngine/status
+JavaScript/data/DOMApplicationCache/status
+JavaScript/data/DOMWindow/status
+JavaScript/data/XMLHttpRequest/status
+Objective-C/instm/NSStatusItem/statusBar
+JavaScript/data/DOMWindow/statusbar
+Objective-C/instm/NSHTTPURLResponse/statusCode
+Objective-C/instm/NSPrinter/statusForTable:
+Objective-C/instm/NSStatusBar/statusItemWithLength:
+C++/instm/IOFireWireSerialBusProtocolTransport/StatusNotify
+JavaScript/data/XMLHttpRequest/statusText
+C/func/-/statvfs
+C/func/-/stdarg
+JavaScript/data/SVGFEGaussianBlurElement/stdDeviationX
+JavaScript/data/SVGFEGaussianBlurElement/stdDeviationY
+C/tag/-/StdFBShmem_t
+C/func/-/stdio
+C/func/-/StdPix
+JavaScript/data/WebGLContextAttributes/stencil
+JavaScript/clconst/WebGLRenderingContext/STENCIL_ATTACHMENT
+JavaScript/clconst/WebGLRenderingContext/STENCIL_BACK_FAIL
+JavaScript/clconst/WebGLRenderingContext/STENCIL_BACK_FUNC
+JavaScript/clconst/WebGLRenderingContext/STENCIL_BACK_PASS_DEPTH_FAIL
+JavaScript/clconst/WebGLRenderingContext/STENCIL_BACK_PASS_DEPTH_PASS
+JavaScript/clconst/WebGLRenderingContext/STENCIL_BACK_REF
+JavaScript/clconst/WebGLRenderingContext/STENCIL_BACK_VALUE_MASK
+JavaScript/clconst/WebGLRenderingContext/STENCIL_BACK_WRITEMASK
+JavaScript/clconst/WebGLRenderingContext/STENCIL_BITS
+JavaScript/clconst/WebGLRenderingContext/STENCIL_BUFFER_BIT
+JavaScript/clconst/WebGLRenderingContext/STENCIL_CLEAR_VALUE
+JavaScript/clconst/WebGLRenderingContext/STENCIL_FAIL
+JavaScript/clconst/WebGLRenderingContext/STENCIL_FUNC
+JavaScript/clconst/WebGLRenderingContext/STENCIL_INDEX
+JavaScript/clconst/WebGLRenderingContext/STENCIL_INDEX8
+JavaScript/clconst/WebGLRenderingContext/STENCIL_PASS_DEPTH_FAIL
+JavaScript/clconst/WebGLRenderingContext/STENCIL_PASS_DEPTH_PASS
+JavaScript/clconst/WebGLRenderingContext/STENCIL_REF
+JavaScript/clconst/WebGLRenderingContext/STENCIL_TEST
+JavaScript/clconst/WebGLRenderingContext/STENCIL_VALUE_MASK
+JavaScript/clconst/WebGLRenderingContext/STENCIL_WRITEMASK
+JavaScript/instm/WebGLRenderingContext/stencilFunc
+JavaScript/instm/WebGLRenderingContext/stencilFuncSeparate
+JavaScript/instm/WebGLRenderingContext/stencilMask
+JavaScript/instm/WebGLRenderingContext/stencilMaskSeparate
+JavaScript/instm/WebGLRenderingContext/stencilOp
+JavaScript/instm/WebGLRenderingContext/stencilOpSeparate
+JavaScript/data/HTMLInputElement/step
+Objective-C/instm/QTMovie/stepBackward
+Objective-C/instm/QTMovieView/stepBackward:
+JavaScript/instm/HTMLInputElement/stepDown
+Objective-C/instm/QTMovie/stepForward
+Objective-C/instm/QTMovieView/stepForward:
+JavaScript/instm/InspectorBackend/stepIntoStatementInDebugger
+JavaScript/data/ValidityState/stepMismatch
+JavaScript/instm/InspectorBackend/stepOutOfFunctionInDebugger
+JavaScript/instm/InspectorBackend/stepOverStatementInDebugger
+JavaScript/instm/HTMLInputElement/stepUp
+JavaScript/data/SVGFETurbulenceElement/stitchTiles
+Objective-C/instm/AMAction/stop
+Objective-C/instm/NSNetService/stop
+Objective-C/instm/NSNetServiceBrowser/stop
+Objective-C/instm/IMAVManager/stop
+Objective-C/instm/NSSound/stop
+Objective-C/instm/IOBluetoothObjectPushUIController/stop
+Objective-C/instm/IOBluetoothDeviceInquiry/stop
+C++/instm/IONetworkController/stop
+Objective-C/instm/QTMovie/stop
+C++/instm/IOAudioEngine/stop
+C++/instm/IOAudioDevice/stop
+C++/instm/IOAudioPort/stop
+C++/instm/IOAudioControl/stop
+C++/instm/IOBasicOutputQueue/stop
+C++/instm/IOOutputQueue/stop
+C++/instm/IOHIDDevice/stop
+C++/instm/IOService/stop
+JavaScript/instm/DOMWindow/stop
+JavaScript/instm/HTMLMarqueeElement/stop
+Objective-C/instm/AMWorkflowController/stop:
+Objective-C/instm/QCView/stop:
+Objective-C/instm/NSApplication/stop:
+Objective-C/instm/ScreenSaverView/stopAnimation
+Objective-C/instm/NSAnimation/stopAnimation
+Objective-C/instm/QCCompositionPickerView/stopAnimation:
+Objective-C/instm/NSProgressIndicator/stopAnimation:
+JavaScript/instm/Channel/stopAT
+C++/instm/IOAudioEngine/stopAudioEngine
+Objective-C/instm/DRBurnProgressPanel/stopBurn:
+C++/instm/IOSCSIParallelInterfaceController/StopController
+C/func/-/StopEffect
+C++/instm/IOHIDDevice/stopEventDelivery
+Objective-C/instm/QCPlugIn/stopExecution:
+JavaScript/instm/Event/stopImmediatePropagation
+Objective-C/instm/NSSpeechRecognizer/stopListening
+Objective-C/instm/NSURLProtocol/stopLoading
+Objective-C/instm/WebFrame/stopLoading
+Objective-C/instm/WebView/stopLoading:
+Objective-C/instm/NSApplication/stopModal
+Objective-C/instm/NSApplication/stopModalWithCode:
+Objective-C/instm/NSNetService/stopMonitoring
+C++/instm/TestRun/stoppedTest
+C++/instm/TestRun/stoppedTestSuite
+Objective-C/clm/NSEvent/stopPeriodicEvents
+JavaScript/instm/InspectorBackend/stopProfiling
+JavaScript/instm/Event/stopPropagation
+Objective-C/instm/NSMetadataQuery/stopQuery
+Objective-C/instm/QCView/stopRendering
+Objective-C/instm/QTCaptureSession/stopRunning
+Objective-C/instm/IKSlideshow/stopSlideshow:
+Objective-C/instm/NSSpeechSynthesizer/stopSpeaking
+Objective-C/instm/NSTextView/stopSpeaking:
+Objective-C/instm/WebView/stopSpeaking:
+Objective-C/instm/NSSpeechSynthesizer/stopSpeakingAtBoundary:
+C/func/-/StopSpeech
+C/func/-/StopSpeechAt
+C/func/-/StopStream
+C++/instm/IOStream/stopStream
+C/func/-/StopStream()
+JavaScript/instm/InspectorBackend/stopTimelineProfiler
+Objective-C/instm/NSCell/stopTracking:at:inView:mouseIsUp:
+Objective-C/instm/CLLocationManager/stopUpdatingLocation
+Objective-C/instm/NSAnimation/stopWhenAnimation:reachesProgress:
+JavaScript/data/DOMWindow/Storage
+JavaScript/cl/-/Storage
+JavaScript/data/StorageEvent/storageArea
+JavaScript/data/DOMWindow/StorageEvent
+JavaScript/cl/-/StorageEvent
+Objective-C/instm/NSCachedURLResponse/storagePolicy
+Objective-C/instm/NSURLCache/storeCachedResponse:forRequest:
+Objective-C/instm/NSObject/storedValueForKey:
+JavaScript/instm/InspectorBackend/storeLastActivePanel
+C/func/-/stpcpy
+C/tdef/-/Str255
+C/func/-/strcasecmp
+C/func/-/strcasecmp_l
+C/func/-/strcasestr
+C/func/-/strcasestr_l
+C/func/-/strcat
+C/func/-/strchr
+C/func/-/strcmp
+C/func/-/strcoll
+C/func/-/strcoll_l
+C/func/-/strcpy
+C/func/-/strcspn
+C/func/-/strdup
+Objective-C/intfm/NSStreamDelegate/stream:handleEvent:
+JavaScript/clconst/WebGLRenderingContext/STREAM_DRAW
+Objective-C/instm/NSStream/streamError
+Objective-C/instm/NSStream/streamStatus
+C/func/-/strerror
+C/func/-/strerror_r
+C/func/-/strfmon
+C/func/-/strfmon_l
+C/func/-/strftime
+C/func/-/strftime_l
+Objective-C/instm/NSLayoutManager/strikethroughGlyphRange:strikethroughType:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:
+Objective-C/instm/PDFSelection/string
+Objective-C/instm/PDFDocument/string
+Objective-C/instm/PDFPage/string
+Objective-C/intfm/WebDocumentText/string
+C/func/-/string
+Objective-C/instm/NSScanner/string
+Objective-C/instm/NSText/string
+Objective-C/clm/NSString/string
+Objective-C/instm/NSAttributedString/string
+Objective-C/instm/CATextLayer/string
+Objective-C/instp/CATextLayer/string
+JavaScript/clconst/XPathResult/STRING_TYPE
+Objective-C/instm/NSUserDefaults/stringArrayForKey:
+JavaScript/data/TestObj/stringAttr
+Objective-C/instm/NSString/stringByAbbreviatingWithTildeInPath
+Objective-C/instm/NSString/stringByAddingPercentEscapesUsingEncoding:
+Objective-C/instm/NSString/stringByAppendingFormat:
+Objective-C/instm/NSString/stringByAppendingPathComponent:
+Objective-C/instm/NSString/stringByAppendingPathExtension:
+Objective-C/instm/NSString/stringByAppendingString:
+Objective-C/instm/NSString/stringByDeletingLastPathComponent
+Objective-C/instm/NSString/stringByDeletingPathExtension
+Objective-C/instm/WebView/stringByEvaluatingJavaScriptFromString:
+Objective-C/instm/NSString/stringByExpandingTildeInPath
+Objective-C/instm/NSString/stringByFoldingWithOptions:locale:
+Objective-C/instm/NSString/stringByPaddingToLength:withString:startingAtIndex:
+Objective-C/instm/NSString/stringByReplacingCharactersInRange:withString:
+Objective-C/instm/NSString/stringByReplacingOccurrencesOfString:withString:
+Objective-C/instm/NSString/stringByReplacingOccurrencesOfString:withString:options:range:
+Objective-C/instm/NSString/stringByReplacingPercentEscapesUsingEncoding:
+Objective-C/instm/NSString/stringByResolvingSymlinksInPath
+Objective-C/instm/NSString/stringByStandardizingPath
+Objective-C/instm/NSString/stringByTrimmingCharactersInSet:
+Objective-C/instm/NSUserDefaults/stringForKey:
+Objective-C/instm/NSPrinter/stringForKey:inTable:
+Objective-C/instm/NSFormatter/stringForObjectValue:
+Objective-C/instm/NSPasteboardItem/stringForType:
+Objective-C/instm/NSPasteboard/stringForType:
+Objective-C/instm/NSDateFormatter/stringFromDate:
+Objective-C/instm/NSNumberFormatter/stringFromNumber:
+C++/instm/IOService/stringFromReturn
+C/func/-/stringlist
+Objective-C/instm/NSPrinter/stringListForKey:inTable:
+C/tdef/-/StringPtr
+Objective-C/instm/CIColor/stringRepresentation
+Objective-C/instm/CIVector/stringRepresentation
+Objective-C/instm/WebScriptObject/stringRepresentation
+Objective-C/instm/NSString/stringsByAppendingPaths:
+Objective-C/instm/NSActionCell/stringValue
+Objective-C/instm/NSAppleEventDescriptor/stringValue
+Objective-C/instm/PDFAnnotationTextWidget/stringValue
+Objective-C/instm/PDFAnnotationChoiceWidget/stringValue
+Objective-C/instm/NSNumber/stringValue
+Objective-C/instm/NSControl/stringValue
+Objective-C/instm/NSXMLNode/stringValue
+Objective-C/instm/NSCell/stringValue
+JavaScript/data/XPathResult/stringValue
+Objective-C/clm/NSMutableString/stringWithCapacity:
+Objective-C/clm/NSString/stringWithCharacters:length:
+Objective-C/clm/NSString/stringWithContentsOfFile:
+Objective-C/clm/NSString/stringWithContentsOfFile:encoding:error:
+Objective-C/clm/NSString/stringWithContentsOfFile:usedEncoding:error:
+Objective-C/clm/NSString/stringWithContentsOfURL:
+Objective-C/clm/NSString/stringWithContentsOfURL:encoding:error:
+Objective-C/clm/NSString/stringWithContentsOfURL:usedEncoding:error:
+Objective-C/clm/NSString/stringWithCString:
+Objective-C/clm/NSString/stringWithCString:encoding:
+Objective-C/clm/NSString/stringWithCString:length:
+Objective-C/instm/NSFileManager/stringWithFileSystemRepresentation:length:
+Objective-C/clm/NSString/stringWithFormat:
+Objective-C/instm/NSWindow/stringWithSavedFrame
+Objective-C/clm/NSString/stringWithString:
+Objective-C/clm/NSString/stringWithUTF8String:
+C/func/-/strlcat
+C/func/-/strlcpy
+C/func/-/strlen
+C/func/-/strmode
+C/func/-/strncasecmp
+C/func/-/strncasecmp_l
+C/func/-/strncat
+C/func/-/strncmp
+C/func/-/strncpy
+C/func/-/strnstr
+Objective-C/instm/NSBezierPath/stroke
+JavaScript/instm/CanvasRenderingContext2D/stroke
+Objective-C/instm/CAShapeLayer/strokeColor
+Objective-C/instp/CAShapeLayer/strokeColor
+Objective-C/clm/NSBezierPath/strokeLineFromPoint:toPoint:
+JavaScript/instm/CanvasRenderingContext2D/strokeRect
+Objective-C/clm/NSBezierPath/strokeRect:
+JavaScript/data/CanvasRenderingContext2D/strokeStyle
+JavaScript/instm/CanvasRenderingContext2D/strokeText
+C/func/-/strpbrk
+C/func/-/strptime
+C/func/-/strptime_l
+C/func/-/strrchr
+C/func/-/strsep
+C/func/-/strsignal
+C/func/-/strspn
+C/func/-/strstr
+C/func/-/strtod
+C/func/-/strtod_l
+C/func/-/strtof
+C/func/-/strtof_l
+C/func/-/strtofflags
+C/func/-/strtoimax
+C/func/-/strtoimax_l
+C/func/-/strtok
+C/func/-/strtok_r
+C/func/-/strtol
+C/func/-/strtol_l
+C/func/-/strtold
+C/func/-/strtold_l
+C/func/-/strtoll
+C/func/-/strtoll_l
+C/func/-/strtoq
+C/func/-/strtoq_l
+C/func/-/strtoul
+C/func/-/strtoul_l
+C/func/-/strtoull
+C/func/-/strtoull_l
+C/func/-/strtoumax
+C/func/-/strtoumax_l
+C/func/-/strtouq
+C/func/-/strtouq_l
+C/func/-/strunvis
+C/func/-/strunvisx
+C/func/-/strxfrm
+C/func/-/strxfrm_l
+Objective-C/instm/PDFBorder/style
+Objective-C/instm/NSProgressIndicator/style
+Objective-C/instm/CAEmitterCell/style
+Objective-C/instp/CAEmitterCell/style
+Objective-C/instp/CALayer/style
+Objective-C/instm/CALayer/style
+JavaScript/data/Attr/style
+JavaScript/data/CSSFontFaceRule/style
+JavaScript/data/CSSStyleRule/style
+JavaScript/data/CSSPageRule/style
+JavaScript/data/Element/style
+JavaScript/data/WebKitCSSKeyframeRule/style
+JavaScript/data/SVGStylable/style
+JavaScript/clconst/CSSRule/STYLE_RULE
+Objective-C/instm/WebView/styleDeclarationWithText:
+Objective-C/instm/NSWindow/styleMask
+JavaScript/data/AbstractView/styleMedia
+JavaScript/data/DOMWindow/styleMedia
+JavaScript/cl/-/StyleMedia
+JavaScript/data/CSSImportRule/styleSheet
+JavaScript/data/DOMWindow/StyleSheet
+JavaScript/cl/-/StyleSheet
+JavaScript/data/DOMWindow/StyleSheetList
+JavaScript/cl/-/StyleSheetList
+JavaScript/data/Document/styleSheets
+C/tag/-/sub_client_command
+C/tag/-/sub_framework_command
+C/tag/-/sub_library_command
+C/tag/-/sub_umbrella_command
+Objective-C/instm/NSArray/subarrayWithRange:
+Objective-C/instm/NSData/subdataWithRange:
+Objective-C/instm/NSEntityDescription/subentities
+Objective-C/instm/NSEntityDescription/subentitiesByName
+Objective-C/instm/WebArchive/subframeArchives
+Objective-C/instm/NSMetadataQueryResultGroup/subgroups
+Objective-C/instm/ABGroup/subgroups
+Objective-C/instm/NSToolbarItemGroup/subitems
+Objective-C/instp/CALayer/sublayers
+Objective-C/instm/CALayer/sublayers
+Objective-C/instm/CALayer/sublayerTransform
+Objective-C/instp/CALayer/sublayerTransform
+Objective-C/instm/NSMenuItem/submenu
+Objective-C/instm/NSMenu/submenuAction:
+JavaScript/instm/HTMLFormElement/submit
+Objective-C/instm/ODNode/subnodeNamesAndReturnError:
+C/econst/-/subOver
+C/func/-/subpad
+Objective-C/instm/NSFileManager/subpathsAtPath:
+Objective-C/instm/NSFileManager/subpathsOfDirectoryAtPath:error:
+C/econst/-/subPin
+JavaScript/clconst/WebGLRenderingContext/SUBPIXEL_BITS
+Objective-C/instm/NSCompoundPredicate/subpredicates
+Objective-C/instm/WebDataSource/subresourceForURL:
+Objective-C/instm/WebDataSource/subresources
+Objective-C/instm/WebArchive/subresources
+Objective-C/instm/NSRuleEditor/subrowIndexesForRow:
+Objective-C/instm/NSRuleEditor/subrowsKeyPath
+Objective-C/instm/NSText/subscript:
+Objective-C/instm/NSMutableAttributedString/subscriptRange:
+Objective-C/instm/NSATSTypesetter/substituteFontForFont:
+Objective-C/instm/NSLayoutManager/substituteFontForFont:
+Objective-C/instm/NSTypesetter/substituteFontForFont:
+Objective-C/instm/NSATSTypesetter/substituteGlyphsInRange:withGlyphs:
+Objective-C/instm/NSTypesetter/substituteGlyphsInRange:withGlyphs:
+Objective-C/instm/NSSpellChecker/substitutionsPanel
+Objective-C/instm/NSSpellChecker/substitutionsPanelAccessoryViewController
+JavaScript/instm/CharacterData/substringData
+Objective-C/instm/NSString/substringFromIndex:
+Objective-C/instm/NSString/substringToIndex:
+Objective-C/instm/NSString/substringWithRange:
+Objective-C/instp/PSFeed/subtitle
+Objective-C/instm/IKImageBrowserCell/subtitleFrame
+Objective-C/instp/CATransition/subtype
+Objective-C/instm/CATransition/subtype
+Objective-C/instm/NSEvent/subtype
+Objective-C/instm/NSView/subviews
+C/func/-/subwin
+JavaScript/data/MimeType/suffixes
+Objective-C/instm/NSURLResponse/suggestedFilename
+Objective-C/instm/NSScriptSuiteRegistry/suiteForAppleEventCode:
+Objective-C/instm/NSScriptClassDescription/suiteName
+Objective-C/instm/NSScriptCommandDescription/suiteName
+Objective-C/instm/NSScriptSuiteRegistry/suiteNames
+Objective-C/instp/PSEntry/summary
+JavaScript/data/HTMLTableElement/summary
+Objective-C/instm/NSObject/summaryInfo
+Objective-C/intfm/NSObject/superclass
+Objective-C/clm/NSObject/superclass
+Objective-C/instm/NSScriptClassDescription/superclassDescription
+Objective-C/instm/NSEntityDescription/superentity
+Objective-C/instm/CALayer/superlayer
+Objective-C/instp/CALayer/superlayer
+Objective-C/instm/NSMenu/supermenu
+Objective-C/instm/NSText/superscript:
+Objective-C/instm/NSMutableAttributedString/superscriptRange:
+Objective-C/instm/NSView/superview
+Objective-C/instm/ODNode/supportedAttributesForRecordType:error:
+Objective-C/intfm/QCPlugInOutputImageProvider/supportedBufferPixelFormats
+Objective-C/instp/CWInterface/supportedChannels
+Objective-C/intfm/ISyncFiltering/supportedEntityNames
+Objective-C/instm/ISyncClient/supportedEntityNames
+Objective-C/clm/CWInterface/supportedInterfaces
+Objective-C/instp/CWInterface/supportedPHYModes
+Objective-C/instm/NSObject/supportedPPDOptionKeys
+Objective-C/instm/ODNode/supportedRecordTypesAndReturnError:
+Objective-C/intfm/QCPlugInOutputImageProvider/supportedRenderedTexturePixelFormats
+Objective-C/instm/NSScreen/supportedWindowDepths
+Objective-C/instp/CWInterface/supportsAES_CCM
+Objective-C/instm/NSScriptClassDescription/supportsCommand:
+Objective-C/instm/FxHostCapabilities/supportsDisabledParameters
+C++/instm/IOATABusInfo/supportsDMA
+C++/instm/IOATABusInfo/supportsDMAQueued
+Objective-C/instp/IKImageView/supportsDragAndDrop
+Objective-C/instm/IKImageView/supportsDragAndDrop
+C++/instm/IOATABusInfo/supportsExtendedLBA
+Objective-C/instm/FxHostCapabilities/supportsGroupParameters
+Objective-C/instm/FxHostCapabilities/supportsHiddenParameters
+Objective-C/instp/CWInterface/supportsHostAP
+Objective-C/instp/CWInterface/supportsIBSS
+Objective-C/intfm/NSColorPickingCustom/supportsMode:
+Objective-C/instp/CWInterface/supportsMonitorMode
+Objective-C/clm/IBInspector/supportsMultipleObjectInspection
+C++/instm/IOATABusInfo/supportsOverlapped
+Objective-C/instp/CWInterface/supportsPMGT
+Objective-C/instp/CWInterface/supportsShortGI20MHz
+Objective-C/instp/CWInterface/supportsShortGI40MHz
+Objective-C/instm/FxHostCapabilities/supportsTemporalBitmaps
+Objective-C/intfm/WebDocumentText/supportsTextEncoding
+Objective-C/instm/WebView/supportsTextEncoding
+Objective-C/instp/CWInterface/supportsTKIP
+Objective-C/instp/CWInterface/supportsTSN
+Objective-C/intfm/IMKTextInput/supportsUnicode
+Objective-C/instp/CWInterface/supportsWEP
+Objective-C/instp/CWInterface/supportsWME
+Objective-C/instp/CWInterface/supportsWoW
+Objective-C/instp/CWInterface/supportsWPA
+Objective-C/instp/CWInterface/supportsWPA2
+Objective-C/instm/NSAlert/suppressionButton
+JavaScript/data/SVGFEDiffuseLightingElement/surfaceScale
+JavaScript/data/SVGFESpecularLightingElement/surfaceScale
+JavaScript/instm/Range/surroundContents
+Objective-C/instm/NSTask/suspend
+Objective-C/instm/NSAppleEventManager/suspendCurrentAppleEvent
+C++/instm/IOUSBDevice/SuspendDevice
+Objective-C/instm/NSDistributedNotificationCenter/suspended
+Objective-C/instm/NSScriptCommand/suspendExecution
+C++/instm/IOUSBHIDDriver/SuspendPort
+JavaScript/instm/SVGSVGElement/suspendRedraw
+C++/instm/IOSCSIParallelInterfaceController/SuspendServices
+C/func/-/SuspendStream
+C++/instm/IOStream/suspendStream
+C/func/-/SuspendStream()
+C/func/-/svc_destroy
+C/func/-/svc_fds
+C/func/-/svc_fdset
+C/func/-/svc_getargs
+C/func/-/svc_getcaller
+C/func/-/svc_getreg
+C/func/-/svc_getregset
+C/func/-/svc_register
+C/func/-/svc_run
+C/func/-/svc_sendreply
+C/func/-/svc_unregister
+C/func/-/svcerr_auth
+C/func/-/svcerr_decode
+C/func/-/svcerr_noproc
+C/func/-/svcerr_noprog
+C/func/-/svcerr_progvers
+C/func/-/svcerr_systemerr
+C/func/-/svcerr_weakauth
+C/func/-/svcfd_create
+C/func/-/svcraw_create
+C/func/-/svctcp_create
+C/func/-/svcudp_bufcreate
+JavaScript/clconst/SVGAngle/SVG_ANGLETYPE_DEG
+JavaScript/clconst/SVGAngle/SVG_ANGLETYPE_GRAD
+JavaScript/clconst/SVGAngle/SVG_ANGLETYPE_RAD
+JavaScript/clconst/SVGAngle/SVG_ANGLETYPE_UNKNOWN
+JavaScript/clconst/SVGAngle/SVG_ANGLETYPE_UNSPECIFIED
+JavaScript/clconst/SVGFEDisplacementMapElement/SVG_CHANNEL_A
+JavaScript/clconst/SVGFEDisplacementMapElement/SVG_CHANNEL_B
+JavaScript/clconst/SVGFEDisplacementMapElement/SVG_CHANNEL_G
+JavaScript/clconst/SVGFEDisplacementMapElement/SVG_CHANNEL_R
+JavaScript/clconst/SVGFEDisplacementMapElement/SVG_CHANNEL_UNKNOWN
+JavaScript/clconst/SVGColor/SVG_COLORTYPE_CURRENTCOLOR
+JavaScript/clconst/SVGColor/SVG_COLORTYPE_RGBCOLOR
+JavaScript/clconst/SVGColor/SVG_COLORTYPE_RGBCOLOR_ICCCOLOR
+JavaScript/clconst/SVGColor/SVG_COLORTYPE_UNKNOWN
+JavaScript/clconst/SVGFEBlendElement/SVG_FEBLEND_MODE_DARKEN
+JavaScript/clconst/SVGFEBlendElement/SVG_FEBLEND_MODE_LIGHTEN
+JavaScript/clconst/SVGFEBlendElement/SVG_FEBLEND_MODE_MULTIPLY
+JavaScript/clconst/SVGFEBlendElement/SVG_FEBLEND_MODE_NORMAL
+JavaScript/clconst/SVGFEBlendElement/SVG_FEBLEND_MODE_SCREEN
+JavaScript/clconst/SVGFEBlendElement/SVG_FEBLEND_MODE_UNKNOWN
+JavaScript/clconst/SVGFEColorMatrixElement/SVG_FECOLORMATRIX_TYPE_HUEROTATE
+JavaScript/clconst/SVGFEColorMatrixElement/SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA
+JavaScript/clconst/SVGFEColorMatrixElement/SVG_FECOLORMATRIX_TYPE_MATRIX
+JavaScript/clconst/SVGFEColorMatrixElement/SVG_FECOLORMATRIX_TYPE_SATURATE
+JavaScript/clconst/SVGFEColorMatrixElement/SVG_FECOLORMATRIX_TYPE_UNKNOWN
+JavaScript/clconst/SVGComponentTransferFunctionElement/SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE
+JavaScript/clconst/SVGComponentTransferFunctionElement/SVG_FECOMPONENTTRANSFER_TYPE_GAMMA
+JavaScript/clconst/SVGComponentTransferFunctionElement/SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY
+JavaScript/clconst/SVGComponentTransferFunctionElement/SVG_FECOMPONENTTRANSFER_TYPE_LINEAR
+JavaScript/clconst/SVGComponentTransferFunctionElement/SVG_FECOMPONENTTRANSFER_TYPE_TABLE
+JavaScript/clconst/SVGComponentTransferFunctionElement/SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN
+JavaScript/clconst/SVGFECompositeElement/SVG_FECOMPOSITE_OPERATOR_ARITHMETIC
+JavaScript/clconst/SVGFECompositeElement/SVG_FECOMPOSITE_OPERATOR_ATOP
+JavaScript/clconst/SVGFECompositeElement/SVG_FECOMPOSITE_OPERATOR_IN
+JavaScript/clconst/SVGFECompositeElement/SVG_FECOMPOSITE_OPERATOR_OUT
+JavaScript/clconst/SVGFECompositeElement/SVG_FECOMPOSITE_OPERATOR_OVER
+JavaScript/clconst/SVGFECompositeElement/SVG_FECOMPOSITE_OPERATOR_UNKNOWN
+JavaScript/clconst/SVGFECompositeElement/SVG_FECOMPOSITE_OPERATOR_XOR
+JavaScript/clconst/SVGException/SVG_INVALID_VALUE_ERR
+JavaScript/clconst/SVGLength/SVG_LENGTHTYPE_CM
+JavaScript/clconst/SVGLength/SVG_LENGTHTYPE_EMS
+JavaScript/clconst/SVGLength/SVG_LENGTHTYPE_EXS
+JavaScript/clconst/SVGLength/SVG_LENGTHTYPE_IN
+JavaScript/clconst/SVGLength/SVG_LENGTHTYPE_MM
+JavaScript/clconst/SVGLength/SVG_LENGTHTYPE_NUMBER
+JavaScript/clconst/SVGLength/SVG_LENGTHTYPE_PC
+JavaScript/clconst/SVGLength/SVG_LENGTHTYPE_PERCENTAGE
+JavaScript/clconst/SVGLength/SVG_LENGTHTYPE_PT
+JavaScript/clconst/SVGLength/SVG_LENGTHTYPE_PX
+JavaScript/clconst/SVGLength/SVG_LENGTHTYPE_UNKNOWN
+JavaScript/clconst/SVGMarkerElement/SVG_MARKER_ORIENT_ANGLE
+JavaScript/clconst/SVGMarkerElement/SVG_MARKER_ORIENT_AUTO
+JavaScript/clconst/SVGMarkerElement/SVG_MARKER_ORIENT_UNKNOWN
+JavaScript/clconst/SVGMarkerElement/SVG_MARKERUNITS_STROKEWIDTH
+JavaScript/clconst/SVGMarkerElement/SVG_MARKERUNITS_UNKNOWN
+JavaScript/clconst/SVGMarkerElement/SVG_MARKERUNITS_USERSPACEONUSE
+JavaScript/clconst/SVGException/SVG_MATRIX_NOT_INVERTABLE
+JavaScript/clconst/SVGPreserveAspectRatio/SVG_MEETORSLICE_MEET
+JavaScript/clconst/SVGPreserveAspectRatio/SVG_MEETORSLICE_SLICE
+JavaScript/clconst/SVGPreserveAspectRatio/SVG_MEETORSLICE_UNKNOWN
+JavaScript/clconst/SVGFEMorphologyElement/SVG_MORPHOLOGY_OPERATOR_DILATE
+JavaScript/clconst/SVGFEMorphologyElement/SVG_MORPHOLOGY_OPERATOR_ERODE
+JavaScript/clconst/SVGFEMorphologyElement/SVG_MORPHOLOGY_OPERATOR_UNKNOWN
+JavaScript/clconst/SVGPaint/SVG_PAINTTYPE_CURRENTCOLOR
+JavaScript/clconst/SVGPaint/SVG_PAINTTYPE_NONE
+JavaScript/clconst/SVGPaint/SVG_PAINTTYPE_RGBCOLOR
+JavaScript/clconst/SVGPaint/SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR
+JavaScript/clconst/SVGPaint/SVG_PAINTTYPE_UNKNOWN
+JavaScript/clconst/SVGPaint/SVG_PAINTTYPE_URI
+JavaScript/clconst/SVGPaint/SVG_PAINTTYPE_URI_CURRENTCOLOR
+JavaScript/clconst/SVGPaint/SVG_PAINTTYPE_URI_NONE
+JavaScript/clconst/SVGPaint/SVG_PAINTTYPE_URI_RGBCOLOR
+JavaScript/clconst/SVGPaint/SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR
+JavaScript/clconst/SVGPreserveAspectRatio/SVG_PRESERVEASPECTRATIO_NONE
+JavaScript/clconst/SVGPreserveAspectRatio/SVG_PRESERVEASPECTRATIO_UNKNOWN
+JavaScript/clconst/SVGPreserveAspectRatio/SVG_PRESERVEASPECTRATIO_XMAXYMAX
+JavaScript/clconst/SVGPreserveAspectRatio/SVG_PRESERVEASPECTRATIO_XMAXYMID
+JavaScript/clconst/SVGPreserveAspectRatio/SVG_PRESERVEASPECTRATIO_XMAXYMIN
+JavaScript/clconst/SVGPreserveAspectRatio/SVG_PRESERVEASPECTRATIO_XMIDYMAX
+JavaScript/clconst/SVGPreserveAspectRatio/SVG_PRESERVEASPECTRATIO_XMIDYMID
+JavaScript/clconst/SVGPreserveAspectRatio/SVG_PRESERVEASPECTRATIO_XMIDYMIN
+JavaScript/clconst/SVGPreserveAspectRatio/SVG_PRESERVEASPECTRATIO_XMINYMAX
+JavaScript/clconst/SVGPreserveAspectRatio/SVG_PRESERVEASPECTRATIO_XMINYMID
+JavaScript/clconst/SVGPreserveAspectRatio/SVG_PRESERVEASPECTRATIO_XMINYMIN
+JavaScript/clconst/SVGGradientElement/SVG_SPREADMETHOD_PAD
+JavaScript/clconst/SVGGradientElement/SVG_SPREADMETHOD_REFLECT
+JavaScript/clconst/SVGGradientElement/SVG_SPREADMETHOD_REPEAT
+JavaScript/clconst/SVGGradientElement/SVG_SPREADMETHOD_UNKNOWN
+JavaScript/clconst/SVGFETurbulenceElement/SVG_STITCHTYPE_NOSTITCH
+JavaScript/clconst/SVGFETurbulenceElement/SVG_STITCHTYPE_STITCH
+JavaScript/clconst/SVGFETurbulenceElement/SVG_STITCHTYPE_UNKNOWN
+JavaScript/clconst/SVGTransform/SVG_TRANSFORM_MATRIX
+JavaScript/clconst/SVGTransform/SVG_TRANSFORM_ROTATE
+JavaScript/clconst/SVGTransform/SVG_TRANSFORM_SCALE
+JavaScript/clconst/SVGTransform/SVG_TRANSFORM_SKEWX
+JavaScript/clconst/SVGTransform/SVG_TRANSFORM_SKEWY
+JavaScript/clconst/SVGTransform/SVG_TRANSFORM_TRANSLATE
+JavaScript/clconst/SVGTransform/SVG_TRANSFORM_UNKNOWN
+JavaScript/clconst/SVGFETurbulenceElement/SVG_TURBULENCE_TYPE_FRACTALNOISE
+JavaScript/clconst/SVGFETurbulenceElement/SVG_TURBULENCE_TYPE_TURBULENCE
+JavaScript/clconst/SVGFETurbulenceElement/SVG_TURBULENCE_TYPE_UNKNOWN
+JavaScript/clconst/SVGUnitTypes/SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
+JavaScript/clconst/SVGUnitTypes/SVG_UNIT_TYPE_UNKNOWN
+JavaScript/clconst/SVGUnitTypes/SVG_UNIT_TYPE_USERSPACEONUSE
+JavaScript/clconst/SVGException/SVG_WRONG_TYPE_ERR
+JavaScript/clconst/SVGZoomAndPan/SVG_ZOOMANDPAN_DISABLE
+JavaScript/clconst/SVGZoomAndPan/SVG_ZOOMANDPAN_MAGNIFY
+JavaScript/clconst/SVGZoomAndPan/SVG_ZOOMANDPAN_UNKNOWN
+JavaScript/data/DOMWindow/SVGAElement
+JavaScript/cl/-/SVGAElement
+JavaScript/data/DOMWindow/SVGAltGlyphElement
+JavaScript/cl/-/SVGAltGlyphElement
+JavaScript/data/DOMWindow/SVGAngle
+JavaScript/cl/-/SVGAngle
+JavaScript/data/DOMWindow/SVGAnimateColorElement
+JavaScript/cl/-/SVGAnimateColorElement
+JavaScript/data/DOMWindow/SVGAnimatedAngle
+JavaScript/cl/-/SVGAnimatedAngle
+JavaScript/data/DOMWindow/SVGAnimatedBoolean
+JavaScript/cl/-/SVGAnimatedBoolean
+JavaScript/data/DOMWindow/SVGAnimatedEnumeration
+JavaScript/cl/-/SVGAnimatedEnumeration
+JavaScript/data/DOMWindow/SVGAnimatedInteger
+JavaScript/cl/-/SVGAnimatedInteger
+JavaScript/data/DOMWindow/SVGAnimatedLength
+JavaScript/cl/-/SVGAnimatedLength
+JavaScript/data/DOMWindow/SVGAnimatedLengthList
+JavaScript/cl/-/SVGAnimatedLengthList
+JavaScript/data/DOMWindow/SVGAnimatedNumber
+JavaScript/cl/-/SVGAnimatedNumber
+JavaScript/data/DOMWindow/SVGAnimatedNumberList
+JavaScript/cl/-/SVGAnimatedNumberList
+JavaScript/cl/-/SVGAnimatedPathData
+JavaScript/cl/-/SVGAnimatedPoints
+JavaScript/data/DOMWindow/SVGAnimatedPreserveAspectRatio
+JavaScript/cl/-/SVGAnimatedPreserveAspectRatio
+JavaScript/data/DOMWindow/SVGAnimatedRect
+JavaScript/cl/-/SVGAnimatedRect
+JavaScript/data/DOMWindow/SVGAnimatedString
+JavaScript/cl/-/SVGAnimatedString
+JavaScript/data/DOMWindow/SVGAnimatedTransformList
+JavaScript/cl/-/SVGAnimatedTransformList
+JavaScript/data/DOMWindow/SVGAnimateElement
+JavaScript/cl/-/SVGAnimateElement
+JavaScript/data/DOMWindow/SVGAnimateTransformElement
+JavaScript/cl/-/SVGAnimateTransformElement
+JavaScript/cl/-/SVGAnimationElement
+JavaScript/data/DOMWindow/SVGCircleElement
+JavaScript/cl/-/SVGCircleElement
+JavaScript/data/DOMWindow/SVGClipPathElement
+JavaScript/cl/-/SVGClipPathElement
+JavaScript/data/DOMWindow/SVGColor
+JavaScript/cl/-/SVGColor
+JavaScript/data/DOMWindow/SVGComponentTransferFunctionElement
+JavaScript/cl/-/SVGComponentTransferFunctionElement
+JavaScript/data/DOMWindow/SVGCursorElement
+JavaScript/cl/-/SVGCursorElement
+JavaScript/data/DOMWindow/SVGDefsElement
+JavaScript/cl/-/SVGDefsElement
+JavaScript/data/DOMWindow/SVGDescElement
+JavaScript/cl/-/SVGDescElement
+JavaScript/data/DOMWindow/SVGDocument
+JavaScript/cl/-/SVGDocument
+JavaScript/data/DOMWindow/SVGElement
+JavaScript/cl/-/SVGElement
+JavaScript/data/DOMWindow/SVGElementInstance
+JavaScript/data/DOMWindow/SVGElementInstanceList
+JavaScript/cl/-/SVGElementInstanceList
+JavaScript/data/DOMWindow/SVGEllipseElement
+JavaScript/cl/-/SVGEllipseElement
+JavaScript/data/DOMWindow/SVGException
+JavaScript/cl/-/SVGException
+JavaScript/cl/-/SVGExternalResourcesRequired
+JavaScript/data/DOMWindow/SVGFEBlendElement
+JavaScript/cl/-/SVGFEBlendElement
+JavaScript/data/DOMWindow/SVGFEColorMatrixElement
+JavaScript/cl/-/SVGFEColorMatrixElement
+JavaScript/data/DOMWindow/SVGFEComponentTransferElement
+JavaScript/cl/-/SVGFEComponentTransferElement
+JavaScript/data/DOMWindow/SVGFECompositeElement
+JavaScript/cl/-/SVGFECompositeElement
+JavaScript/data/DOMWindow/SVGFEDiffuseLightingElement
+JavaScript/cl/-/SVGFEDiffuseLightingElement
+JavaScript/data/DOMWindow/SVGFEDisplacementMapElement
+JavaScript/cl/-/SVGFEDisplacementMapElement
+JavaScript/data/DOMWindow/SVGFEDistantLightElement
+JavaScript/cl/-/SVGFEDistantLightElement
+JavaScript/data/DOMWindow/SVGFEFloodElement
+JavaScript/cl/-/SVGFEFloodElement
+JavaScript/data/DOMWindow/SVGFEFuncAElement
+JavaScript/cl/-/SVGFEFuncAElement
+JavaScript/data/DOMWindow/SVGFEFuncBElement
+JavaScript/cl/-/SVGFEFuncBElement
+JavaScript/data/DOMWindow/SVGFEFuncGElement
+JavaScript/cl/-/SVGFEFuncGElement
+JavaScript/data/DOMWindow/SVGFEFuncRElement
+JavaScript/cl/-/SVGFEFuncRElement
+JavaScript/data/DOMWindow/SVGFEGaussianBlurElement
+JavaScript/cl/-/SVGFEGaussianBlurElement
+JavaScript/data/DOMWindow/SVGFEImageElement
+JavaScript/cl/-/SVGFEImageElement
+JavaScript/data/DOMWindow/SVGFEMergeElement
+JavaScript/cl/-/SVGFEMergeElement
+JavaScript/data/DOMWindow/SVGFEMergeNodeElement
+JavaScript/cl/-/SVGFEMergeNodeElement
+JavaScript/data/DOMWindow/SVGFEMorphologyElement
+JavaScript/cl/-/SVGFEMorphologyElement
+JavaScript/data/DOMWindow/SVGFEOffsetElement
+JavaScript/cl/-/SVGFEOffsetElement
+JavaScript/data/DOMWindow/SVGFEPointLightElement
+JavaScript/cl/-/SVGFEPointLightElement
+JavaScript/data/DOMWindow/SVGFESpecularLightingElement
+JavaScript/cl/-/SVGFESpecularLightingElement
+JavaScript/data/DOMWindow/SVGFESpotLightElement
+JavaScript/cl/-/SVGFESpotLightElement
+JavaScript/data/DOMWindow/SVGFETileElement
+JavaScript/cl/-/SVGFETileElement
+JavaScript/data/DOMWindow/SVGFETurbulenceElement
+JavaScript/cl/-/SVGFETurbulenceElement
+JavaScript/data/DOMWindow/SVGFilterElement
+JavaScript/cl/-/SVGFilterElement
+JavaScript/cl/-/SVGFilterPrimitiveStandardAttributes
+JavaScript/cl/-/SVGFitToViewBox
+JavaScript/data/DOMWindow/SVGFontElement
+JavaScript/cl/-/SVGFontElement
+JavaScript/data/DOMWindow/SVGFontFaceElement
+JavaScript/cl/-/SVGFontFaceElement
+JavaScript/data/DOMWindow/SVGFontFaceFormatElement
+JavaScript/cl/-/SVGFontFaceFormatElement
+JavaScript/data/DOMWindow/SVGFontFaceNameElement
+JavaScript/cl/-/SVGFontFaceNameElement
+JavaScript/data/DOMWindow/SVGFontFaceSrcElement
+JavaScript/cl/-/SVGFontFaceSrcElement
+JavaScript/data/DOMWindow/SVGFontFaceUriElement
+JavaScript/cl/-/SVGFontFaceUriElement
+JavaScript/data/DOMWindow/SVGForeignObjectElement
+JavaScript/cl/-/SVGForeignObjectElement
+JavaScript/data/DOMWindow/SVGGElement
+JavaScript/cl/-/SVGGElement
+JavaScript/data/DOMWindow/SVGGlyphElement
+JavaScript/cl/-/SVGGlyphElement
+JavaScript/data/DOMWindow/SVGGradientElement
+JavaScript/cl/-/SVGGradientElement
+JavaScript/data/DOMWindow/SVGHKernElement
+JavaScript/cl/-/SVGHKernElement
+JavaScript/data/DOMWindow/SVGImageElement
+JavaScript/cl/-/SVGImageElement
+JavaScript/cl/-/SVGLangSpace
+JavaScript/data/DOMWindow/SVGLength
+JavaScript/cl/-/SVGLength
+JavaScript/data/DOMWindow/SVGLengthList
+JavaScript/cl/-/SVGLengthList
+JavaScript/data/DOMWindow/SVGLinearGradientElement
+JavaScript/cl/-/SVGLinearGradientElement
+JavaScript/data/DOMWindow/SVGLineElement
+JavaScript/cl/-/SVGLineElement
+JavaScript/cl/-/SVGLocatable
+JavaScript/data/DOMWindow/SVGMarkerElement
+JavaScript/cl/-/SVGMarkerElement
+JavaScript/data/DOMWindow/SVGMaskElement
+JavaScript/cl/-/SVGMaskElement
+JavaScript/data/DOMWindow/SVGMatrix
+JavaScript/cl/-/SVGMatrix
+JavaScript/data/DOMWindow/SVGMetadataElement
+JavaScript/cl/-/SVGMetadataElement
+JavaScript/data/DOMWindow/SVGMissingGlyphElement
+JavaScript/cl/-/SVGMissingGlyphElement
+JavaScript/data/DOMWindow/SVGNumber
+JavaScript/cl/-/SVGNumber
+JavaScript/data/DOMWindow/SVGNumberList
+JavaScript/cl/-/SVGNumberList
+JavaScript/data/DOMWindow/SVGPaint
+JavaScript/cl/-/SVGPaint
+JavaScript/data/DOMWindow/SVGPathElement
+JavaScript/cl/-/SVGPathElement
+JavaScript/data/DOMWindow/SVGPathSeg
+JavaScript/cl/-/SVGPathSeg
+JavaScript/data/DOMWindow/SVGPathSegArcAbs
+JavaScript/cl/-/SVGPathSegArcAbs
+JavaScript/data/DOMWindow/SVGPathSegArcRel
+JavaScript/cl/-/SVGPathSegArcRel
+JavaScript/data/DOMWindow/SVGPathSegClosePath
+JavaScript/cl/-/SVGPathSegClosePath
+JavaScript/data/DOMWindow/SVGPathSegCurvetoCubicAbs
+JavaScript/cl/-/SVGPathSegCurvetoCubicAbs
+JavaScript/data/DOMWindow/SVGPathSegCurvetoCubicRel
+JavaScript/cl/-/SVGPathSegCurvetoCubicRel
+JavaScript/data/DOMWindow/SVGPathSegCurvetoCubicSmoothAbs
+JavaScript/cl/-/SVGPathSegCurvetoCubicSmoothAbs
+JavaScript/data/DOMWindow/SVGPathSegCurvetoCubicSmoothRel
+JavaScript/cl/-/SVGPathSegCurvetoCubicSmoothRel
+JavaScript/data/DOMWindow/SVGPathSegCurvetoQuadraticAbs
+JavaScript/cl/-/SVGPathSegCurvetoQuadraticAbs
+JavaScript/data/DOMWindow/SVGPathSegCurvetoQuadraticRel
+JavaScript/cl/-/SVGPathSegCurvetoQuadraticRel
+JavaScript/data/DOMWindow/SVGPathSegCurvetoQuadraticSmoothAbs
+JavaScript/cl/-/SVGPathSegCurvetoQuadraticSmoothAbs
+JavaScript/data/DOMWindow/SVGPathSegCurvetoQuadraticSmoothRel
+JavaScript/cl/-/SVGPathSegCurvetoQuadraticSmoothRel
+JavaScript/data/DOMWindow/SVGPathSegLinetoAbs
+JavaScript/cl/-/SVGPathSegLinetoAbs
+JavaScript/data/DOMWindow/SVGPathSegLinetoHorizontalAbs
+JavaScript/cl/-/SVGPathSegLinetoHorizontalAbs
+JavaScript/data/DOMWindow/SVGPathSegLinetoHorizontalRel
+JavaScript/cl/-/SVGPathSegLinetoHorizontalRel
+JavaScript/data/DOMWindow/SVGPathSegLinetoRel
+JavaScript/cl/-/SVGPathSegLinetoRel
+JavaScript/data/DOMWindow/SVGPathSegLinetoVerticalAbs
+JavaScript/cl/-/SVGPathSegLinetoVerticalAbs
+JavaScript/data/DOMWindow/SVGPathSegLinetoVerticalRel
+JavaScript/cl/-/SVGPathSegLinetoVerticalRel
+JavaScript/data/DOMWindow/SVGPathSegList
+JavaScript/cl/-/SVGPathSegList
+JavaScript/data/DOMWindow/SVGPathSegMovetoAbs
+JavaScript/cl/-/SVGPathSegMovetoAbs
+JavaScript/data/DOMWindow/SVGPathSegMovetoRel
+JavaScript/cl/-/SVGPathSegMovetoRel
+JavaScript/data/DOMWindow/SVGPatternElement
+JavaScript/cl/-/SVGPatternElement
+JavaScript/data/DOMWindow/SVGPoint
+JavaScript/cl/-/SVGPoint
+JavaScript/data/DOMWindow/SVGPointList
+JavaScript/cl/-/SVGPointList
+JavaScript/data/DOMWindow/SVGPolygonElement
+JavaScript/cl/-/SVGPolygonElement
+JavaScript/data/DOMWindow/SVGPolylineElement
+JavaScript/cl/-/SVGPolylineElement
+JavaScript/data/DOMWindow/SVGPreserveAspectRatio
+JavaScript/cl/-/SVGPreserveAspectRatio
+JavaScript/data/DOMWindow/SVGRadialGradientElement
+JavaScript/cl/-/SVGRadialGradientElement
+JavaScript/data/DOMWindow/SVGRect
+JavaScript/cl/-/SVGRect
+JavaScript/data/DOMWindow/SVGRectElement
+JavaScript/cl/-/SVGRectElement
+JavaScript/data/DOMWindow/SVGRenderingIntent
+JavaScript/cl/-/SVGRenderingIntent
+JavaScript/data/DOMWindow/SVGScriptElement
+JavaScript/cl/-/SVGScriptElement
+JavaScript/data/DOMWindow/SVGSetElement
+JavaScript/cl/-/SVGSetElement
+JavaScript/data/DOMWindow/SVGStopElement
+JavaScript/cl/-/SVGStopElement
+JavaScript/data/DOMWindow/SVGStringList
+JavaScript/cl/-/SVGStringList
+JavaScript/cl/-/SVGStylable
+JavaScript/data/DOMWindow/SVGStyleElement
+JavaScript/cl/-/SVGStyleElement
+JavaScript/data/DOMWindow/SVGSVGElement
+JavaScript/cl/-/SVGSVGElement
+JavaScript/data/DOMWindow/SVGSwitchElement
+JavaScript/cl/-/SVGSwitchElement
+JavaScript/data/DOMWindow/SVGSymbolElement
+JavaScript/cl/-/SVGSymbolElement
+JavaScript/cl/-/SVGTests
+JavaScript/data/DOMWindow/SVGTextContentElement
+JavaScript/cl/-/SVGTextContentElement
+JavaScript/data/DOMWindow/SVGTextElement
+JavaScript/cl/-/SVGTextElement
+JavaScript/data/DOMWindow/SVGTextPathElement
+JavaScript/cl/-/SVGTextPathElement
+JavaScript/data/DOMWindow/SVGTextPositioningElement
+JavaScript/cl/-/SVGTextPositioningElement
+JavaScript/data/DOMWindow/SVGTitleElement
+JavaScript/cl/-/SVGTitleElement
+JavaScript/data/DOMWindow/SVGTransform
+JavaScript/cl/-/SVGTransform
+JavaScript/cl/-/SVGTransformable
+JavaScript/data/DOMWindow/SVGTransformList
+JavaScript/cl/-/SVGTransformList
+JavaScript/data/DOMWindow/SVGTRefElement
+JavaScript/cl/-/SVGTRefElement
+JavaScript/data/DOMWindow/SVGTSpanElement
+JavaScript/cl/-/SVGTSpanElement
+JavaScript/data/DOMWindow/SVGUnitTypes
+JavaScript/cl/-/SVGUnitTypes
+JavaScript/cl/-/SVGURIReference
+JavaScript/data/DOMWindow/SVGUseElement
+JavaScript/cl/-/SVGUseElement
+JavaScript/data/DOMWindow/SVGViewElement
+JavaScript/cl/-/SVGViewElement
+JavaScript/cl/-/SVGViewSpec
+JavaScript/data/DOMWindow/SVGVKernElement
+JavaScript/cl/-/SVGVKernElement
+JavaScript/cl/-/SVGZoomAndPan
+JavaScript/data/DOMWindow/SVGZoomEvent
+JavaScript/cl/-/SVGZoomEvent
+C/func/-/swab
+C++/instm/ATADeviceNub/swapBytes16
+JavaScript/instm/DOMApplicationCache/swapCache
+C/func/-/swapcontext
+Objective-C/instm/NSResponder/swapWithMark:
+JavaScript/data/SVGPathSegArcAbs/sweepFlag
+JavaScript/data/SVGPathSegArcRel/sweepFlag
+Objective-C/instm/NSResponder/swipeWithEvent:
+C/func/-/swprintf
+C/func/-/swprintf_l
+C/func/-/swscanf
+C/func/-/swscanf_l
+Objective-C/clm/NSCharacterSet/symbolCharacterSet
+Objective-C/instm/NSFileWrapper/symbolicLinkDestination
+Objective-C/instm/NSFileWrapper/symbolicLinkDestinationURL
+Objective-C/instm/NSFontDescriptor/symbolicTraits
+C/func/-/symlink
+Objective-C/clm/DRFile(VirtualLinks)/symLinkPointingTo:inFilesystem:
+C/tag/-/symtab_command
+Objective-C/instm/ISyncSessionDriver/sync
+C/func/-/sync
+Objective-C/instm/ISyncClient/syncAlertToolPath
+Objective-C/instm/ISyncManager/syncDisabledReason
+C++/data/IOATABusCommand/syncer
+Objective-C/instm/ODQuery/synchronize
+Objective-C/instm/NSUserDefaults/synchronize
+C++/instm/IODMACommand/synchronize
+C++/instm/IOFWPhysicalAddressSpace/synchronize
+Objective-C/instm/ODRecord/synchronizeAndReturnError:
+C++/instm/IOBlockStorageDriver/synchronizeCache
+C++/instm/IOFilterScheme/synchronizeCache
+C++/instm/IOMedia/synchronizeCache
+C++/instm/IOStorage/synchronizeCache
+C++/instm/IOPartitionScheme/synchronizeCache
+Objective-C/instm/NSFileHandle/synchronizeFile
+C++/tag/IODMACommand/SynchronizeOptions
+Objective-C/instm/NSPopUpButtonCell/synchronizeTitleAndSelectedItem
+Objective-C/instm/NSPopUpButton/synchronizeTitleAndSelectedItem
+Objective-C/instm/NSWindowController/synchronizeWindowTitleWithDocumentName
+C/func/-/syncok
+Objective-C/instm/NSPersistentStoreCoordinator/syncWithClient:inBackground:handler:error:
+JavaScript/clconst/DOMCoreException/SYNTAX_ERR
+C/econst/-/synthNotReady
+C/econst/-/synthOpenFailed
+C/func/-/sys_cache_control
+C/func/-/sys_dcache_flush
+C/func/-/sys_errlist
+C/func/-/sys_icache_invalidate
+C/func/-/sys_nerr
+C/func/-/sys_siglist
+C/func/-/sys_signame
+C/func/-/syscall
+C/func/-/sysconf
+C/func/-/sysctl
+C/func/-/sysctlbyname
+C/func/-/sysctlnametomib
+C/func/-/sysexits
+C/func/-/syslog
+C/func/-/system
+Objective-C/clm/NSPortNameServer/systemDefaultPortNameServer
+Objective-C/clm/NSFont/systemFontOfSize:
+Objective-C/clm/NSFont/systemFontSize
+Objective-C/clm/NSFont/systemFontSizeForControlSize:
+Objective-C/instm/NSXMLDTDNode/systemID
+Objective-C/instm/NSXMLDTD/systemID
+Objective-C/instm/NSXMLParser/systemID
+JavaScript/data/DocumentType/systemId
+JavaScript/data/Entity/systemId
+JavaScript/data/Notation/systemId
+JavaScript/data/SVGTests/systemLanguage
+Objective-C/clm/NSLocale/systemLocale
+C/func/-/systemPowerEventOccurred
+C/tdef/-/SystemSoundID
+Objective-C/clm/NSStatusBar/systemStatusBar
+Objective-C/instm/NSEvent/systemTabletID
+Objective-C/clm/NSTimeZone/systemTimeZone
+C/tdef/-/SystemUIMode
+C/tdef/-/SystemUIOptions
+Objective-C/instm/NSProcessInfo/systemUptime
+Objective-C/instm/NSUnarchiver/systemVersion
+Objective-C/instm/NSCoder/systemVersion
+C++/instm/IOService/systemWake
+C++/instm/IONetworkController/systemWillShutdown
+C++/instm/IOService/systemWillShutdown
+JavaScript/data/HTMLElement/tabIndex
+Objective-C/instm/NSMatrix/tabKeyTraversesCells
+Objective-C/instm/NSTextTableBlock/table
+C/macro/-/TABLE_HANDLER_NAME
+Objective-C/instm/NSTableView/tableColumns
+Objective-C/instm/NSTableView/tableColumnWithIdentifier:
+Objective-C/instm/NSEvent/tabletID
+Objective-C/instm/NSResponder/tabletPoint:
+Objective-C/instm/NSResponder/tabletProximity:
+JavaScript/data/SVGComponentTransferFunctionElement/tableValues
+Objective-C/instm/NSTableHeaderView/tableView
+Objective-C/instm/NSTableColumn/tableView
+Objective-C/intfm/NSTableViewDataSource/tableView:acceptDrop:row:dropOperation:
+Objective-C/intfm/NSTableViewDelegate/tableView:dataCellForTableColumn:row:
+Objective-C/intfm/NSTableViewDelegate/tableView:didClickTableColumn:
+Objective-C/intfm/NSTableViewDelegate/tableView:didDragTableColumn:
+Objective-C/intfm/NSTableViewDelegate/tableView:heightOfRow:
+Objective-C/intfm/NSTableViewDelegate/tableView:isGroupRow:
+Objective-C/intfm/NSTableViewDelegate/tableView:mouseDownInHeaderOfTableColumn:
+Objective-C/intfm/NSTableViewDataSource/tableView:namesOfPromisedFilesDroppedAtDestination:forDraggedRowsWithIndexes:
+Objective-C/intfm/NSTableViewDelegate/tableView:nextTypeSelectMatchFromRow:toRow:forString:
+Objective-C/intfm/NSTableViewDataSource/tableView:objectValueForTableColumn:row:
+Objective-C/intfm/NSTableViewDelegate/tableView:selectionIndexesForProposedSelection:
+Objective-C/intfm/NSTableViewDataSource/tableView:setObjectValue:forTableColumn:row:
+Objective-C/intfm/NSTableViewDelegate/tableView:shouldEditTableColumn:row:
+Objective-C/intfm/NSTableViewDelegate/tableView:shouldReorderColumn:toColumn:
+Objective-C/intfm/NSTableViewDelegate/tableView:shouldSelectRow:
+Objective-C/intfm/NSTableViewDelegate/tableView:shouldSelectTableColumn:
+Objective-C/intfm/NSTableViewDelegate/tableView:shouldShowCellExpansionForTableColumn:row:
+Objective-C/intfm/NSTableViewDelegate/tableView:shouldTrackCell:forTableColumn:row:
+Objective-C/intfm/NSTableViewDelegate/tableView:shouldTypeSelectForEvent:withCurrentSearchString:
+Objective-C/intfm/NSTableViewDelegate/tableView:sizeToFitWidthOfColumn:
+Objective-C/intfm/NSTableViewDataSource/tableView:sortDescriptorsDidChange:
+Objective-C/intfm/NSTableViewDelegate/tableView:toolTipForCell:rect:tableColumn:row:mouseLocation:
+Objective-C/intfm/NSTableViewDelegate/tableView:typeSelectStringForTableColumn:row:
+Objective-C/intfm/NSTableViewDataSource/tableView:validateDrop:proposedRow:proposedDropOperation:
+Objective-C/intfm/NSTableViewDelegate/tableView:willDisplayCell:forTableColumn:row:
+Objective-C/instm/NSObject/tableView:writeRows:toPasteboard:
+Objective-C/intfm/NSTableViewDataSource/tableView:writeRowsWithIndexes:toPasteboard:
+Objective-C/intfm/NSTableViewDelegate/tableViewColumnDidMove:
+Objective-C/intfm/NSTableViewDelegate/tableViewColumnDidResize:
+Objective-C/intfm/NSTableViewDelegate/tableViewSelectionDidChange:
+Objective-C/intfm/NSTableViewDelegate/tableViewSelectionIsChanging:
+Objective-C/instm/NSTabViewItem/tabState
+Objective-C/instm/WebPreferences/tabsToLinks
+Objective-C/instm/NSParagraphStyle/tabStops
+Objective-C/instm/NSTextTab/tabStopType
+Objective-C/instm/NSTabViewItem/tabView
+Objective-C/intfm/NSTabViewDelegate/tabView:didSelectTabViewItem:
+Objective-C/intfm/NSTabViewDelegate/tabView:shouldSelectTabViewItem:
+Objective-C/intfm/NSTabViewDelegate/tabView:willSelectTabViewItem:
+Objective-C/intfm/NSTabViewDelegate/tabViewDidChangeNumberOfTabViewItems:
+Objective-C/instm/NSTabView/tabViewItemAtIndex:
+Objective-C/instm/NSTabView/tabViewItemAtPoint:
+Objective-C/instm/NSTabView/tabViewItems
+Objective-C/instm/NSTabView/tabViewType
+Objective-C/instm/NSToolbarItem/tag
+Objective-C/intfm/NSValidatedUserInterfaceItem/tag
+Objective-C/instm/NSActionCell/tag
+Objective-C/instm/NSMenuItemCell/tag
+Objective-C/instm/IMAVControl/tag
+Objective-C/instm/NSMenuItem/tag
+Objective-C/instm/NSControl/tag
+Objective-C/instm/NSView/tag
+Objective-C/instm/NSCell/tag
+Objective-C/instm/NSSegmentedCell/tagForSegment:
+C++/instm/OSMetaClass/taggedRelease
+C++/instm/OSObject/taggedRelease
+C++/instm/OSMetaClassBase/taggedRelease
+C++/instm/OSBoolean/taggedRelease
+C++/instm/OSSymbol/taggedRelease
+C++/instm/OSMetaClassBase/taggedRetain
+C++/instm/OSBoolean/taggedRetain
+C++/instm/OSMetaClass/taggedRetain
+C++/instm/OSObject/taggedRetain
+JavaScript/data/Element/tagName
+JavaScript/instm/HTMLAllCollection/tags
+Objective-C/instm/NSParagraphStyle/tailIndent
+C/func/-/TAILQ_CONCAT
+C/func/-/TAILQ_EMPTY
+C/func/-/TAILQ_ENTRY
+C/func/-/TAILQ_FIRST
+C/func/-/TAILQ_FOREACH
+C/func/-/TAILQ_FOREACH_REVERSE
+C/func/-/TAILQ_FOREACH_REVERSE_SAFE
+C/func/-/TAILQ_FOREACH_SAFE
+C/func/-/TAILQ_HEAD
+C/func/-/TAILQ_HEAD_INITIALIZER
+C/func/-/TAILQ_INIT
+C/func/-/TAILQ_INSERT_AFTER
+C/func/-/TAILQ_INSERT_BEFORE
+C/func/-/TAILQ_INSERT_HEAD
+C/func/-/TAILQ_INSERT_TAIL
+C/func/-/TAILQ_LAST
+C/func/-/TAILQ_NEXT
+C/func/-/TAILQ_PREV
+C/func/-/TAILQ_REMOVE
+Objective-C/instm/PDFView/takeBackgroundColorFrom:
+Objective-C/instm/NSColorWell/takeColorFrom:
+Objective-C/instm/NSControl/takeDoubleValueFrom:
+Objective-C/instm/NSCell/takeDoubleValueFrom:
+Objective-C/instm/NSControl/takeFloatValueFrom:
+Objective-C/instm/NSCell/takeFloatValueFrom:
+Objective-C/instm/NSControl/takeIntegerValueFrom:
+Objective-C/instm/NSCell/takeIntegerValueFrom:
+Objective-C/instm/NSControl/takeIntValueFrom:
+Objective-C/instm/NSCell/takeIntValueFrom:
+Objective-C/instm/NSControl/takeObjectValueFrom:
+Objective-C/instm/NSCell/takeObjectValueFrom:
+Objective-C/instm/PDFView/takePasswordFrom:
+Objective-C/instm/NSTabView/takeSelectedTabViewItemFromSender:
+Objective-C/instm/NSBrowser/takesTitleFromPreviousColumn
+Objective-C/instm/NSObject/takeStoredValue:forKey:
+Objective-C/instm/WebView/takeStringURLFrom:
+Objective-C/instm/NSControl/takeStringValueFrom:
+Objective-C/instm/NSCell/takeStringValueFrom:
+Objective-C/instm/NSObject/takeValue:forKey:
+Objective-C/instm/NSObject/takeValue:forKeyPath:
+Objective-C/instm/NSObject/takeValuesFromDictionary:
+C/func/-/tan
+C/func/-/tanf
+Objective-C/instm/NSEvent/tangentialPressure
+C/func/-/tanh
+C/func/-/tanhf
+C/func/-/tanhl
+C/func/-/tanl
+Objective-C/instm/NSProtocolChecker/target
+Objective-C/instm/NSToolbarItem/target
+Objective-C/instm/NSActionCell/target
+Objective-C/instm/NSStatusItem/target
+Objective-C/instm/NSFontManager/target
+Objective-C/instm/FxTexture/target
+Objective-C/instm/IMAVControl/target
+Objective-C/instm/NSMenuItem/target
+Objective-C/instm/NSControl/target
+Objective-C/instm/NSInvocation/target
+Objective-C/instm/ABPeoplePickerView/target
+Objective-C/instp/ABPeoplePickerView/target
+Objective-C/binding/NSButtonCell/target
+Objective-C/binding/NSButton/target
+Objective-C/instm/NSCell/target
+JavaScript/data/Event/target
+JavaScript/data/HTMLAreaElement/target
+JavaScript/data/HTMLFormElement/target
+JavaScript/data/HTMLBaseElement/target
+JavaScript/data/HTMLAnchorElement/target
+JavaScript/data/HTMLLinkElement/target
+JavaScript/data/SVGAElement/target
+JavaScript/data/ProcessingInstruction/target
+JavaScript/data/Touch/target
+JavaScript/data/SVGAnimationElement/targetElement
+Objective-C/instm/NSApplication/targetForAction:
+Objective-C/instm/NSApplication/targetForAction:to:from:
+Objective-C/instm/ISyncRecordSnapshot/targetIdentifiersForRelationshipName:withSourceIdentifier:
+C++/instm/IOSCSIProtocolInterface/TargetReset
+JavaScript/data/TouchEvent/targetTouches
+Objective-C/clm/CalTask/task
+Objective-C/instm/XGJob/taskCount
+Objective-C/instm/XGFile/taskIdentifier
+Objective-C/clm/CalCalendarStore/taskPredicateWithCalendars:
+Objective-C/clm/CalCalendarStore/taskPredicateWithTasksCompletedSince:calendars:
+Objective-C/clm/CalCalendarStore/taskPredicateWithUncompletedTasks:
+Objective-C/clm/CalCalendarStore/taskPredicateWithUncompletedTasksDueBefore:calendars:
+C/tdef/-/TaskProc
+C/tdef/-/TaskStorageIndex
+C/tdef/-/TaskStorageValue
+Objective-C/instm/CalCalendarStore/tasksWithPredicate:
+Objective-C/instm/CalCalendarStore/taskWithUID:
+C/tdef/-/tAttributeEntry
+C/tdef/-/tAttributeEntryPtr
+C/tdef/-/tAttributeListRef
+C/tdef/-/tAttributeValueEntry
+C/tdef/-/tAttributeValueEntryPtr
+C/tdef/-/tAttributeValueListRef
+JavaScript/data/HTMLTableElement/tBodies
+C/tdef/-/tBuffer
+C/econst/-/tc24HourMax
+C/func/-/tcdrain
+C/econst/-/tcDropFrame
+C/func/-/tcflow
+C/func/-/tcflush
+C/func/-/TCFrameNumberToTimeCode
+C/func/-/tcgetattr
+C/func/-/TCGetCurrentTimeCode
+C/func/-/TCGetDisplayOptions
+C/func/-/tcgetpgrp
+C/func/-/tcgetsid
+C/func/-/TCGetSourceRef
+C/func/-/TCGetTimeCodeAtTime
+C/func/-/TCGetTimeCodeFlags
+C/func/-/Tcl_Access
+C/func/-/Tcl_AddErrorInfo
+C/func/-/Tcl_AddObjErrorInfo
+C/func/-/Tcl_AlertNotifier
+C/func/-/Tcl_Alloc
+C/func/-/Tcl_AllocStatBuf
+C/func/-/Tcl_AllowExceptions
+C/func/-/Tcl_AppendAllObjTypes
+C/func/-/Tcl_AppendElement
+C/func/-/Tcl_AppendExportList
+C/func/-/Tcl_AppendFormatToObj
+C/func/-/Tcl_AppendLimitedToObj
+C/func/-/Tcl_AppendObjToErrorInfo
+C/func/-/Tcl_AppendObjToObj
+C/func/-/Tcl_AppendPrintfToObj
+C/func/-/Tcl_AppendResult
+C/func/-/Tcl_AppendResultVA
+C/func/-/Tcl_AppendStringsToObj
+C/func/-/Tcl_AppendStringsToObjVA
+C/func/-/Tcl_AppendToObj
+C/func/-/Tcl_AppendUnicodeToObj
+C/func/-/Tcl_AppInit
+C/func/-/Tcl_AsyncCreate
+C/func/-/Tcl_AsyncDelete
+C/func/-/Tcl_AsyncInvoke
+C/func/-/Tcl_AsyncMark
+C/func/-/Tcl_AsyncReady
+C/func/-/Tcl_AttemptAlloc
+C/func/-/Tcl_AttemptRealloc
+C/func/-/Tcl_AttemptSetObjLength
+C/func/-/Tcl_BackgroundError
+C/func/-/Tcl_Backslash
+C/func/-/Tcl_BadChannelOption
+C/func/-/Tcl_CallWhenDeleted
+C/func/-/Tcl_CancelIdleCall
+C/func/-/Tcl_ChannelBlockModeProc
+C/func/-/Tcl_ChannelBuffered
+C/func/-/Tcl_ChannelClose2Proc
+C/func/-/Tcl_ChannelCloseProc
+C/func/-/Tcl_ChannelFlushProc
+C/func/-/Tcl_ChannelGetHandleProc
+C/func/-/Tcl_ChannelGetOptionProc
+C/func/-/Tcl_ChannelHandlerProc
+C/func/-/Tcl_ChannelInputProc
+C/func/-/Tcl_ChannelName
+C/func/-/Tcl_ChannelOutputProc
+C/func/-/Tcl_ChannelSeekProc
+C/func/-/Tcl_ChannelSetOptionProc
+C/func/-/Tcl_ChannelThreadActionProc
+C/func/-/Tcl_ChannelTruncateProc
+C/func/-/Tcl_ChannelVersion
+C/func/-/Tcl_ChannelWatchProc
+C/func/-/Tcl_ChannelWideSeekProc
+C/func/-/Tcl_Chdir
+C/func/-/Tcl_ClearChannelHandlers
+C/func/-/Tcl_Close
+C/func/-/Tcl_CommandComplete
+C/func/-/Tcl_CommandTraceInfo
+C/func/-/Tcl_Concat
+C/func/-/Tcl_ConcatObj
+C/func/-/Tcl_ConditionFinalize
+C/func/-/Tcl_ConditionNotify
+C/func/-/Tcl_ConditionWait
+C/func/-/Tcl_ConvertCountedElement
+C/func/-/Tcl_ConvertElement
+C/func/-/Tcl_ConvertToType
+C/func/-/Tcl_CreateAlias
+C/func/-/Tcl_CreateAliasObj
+C/func/-/Tcl_CreateChannel
+C/func/-/Tcl_CreateChannelHandler
+C/func/-/Tcl_CreateCloseHandler
+C/func/-/Tcl_CreateCommand
+C/func/-/Tcl_CreateEncoding
+C/func/-/Tcl_CreateEnsemble
+C/func/-/Tcl_CreateEventSource
+C/func/-/Tcl_CreateExitHandler
+C/func/-/Tcl_CreateFileHandler
+C/func/-/Tcl_CreateHashEntry
+C/func/-/Tcl_CreateInterp
+C/func/-/Tcl_CreateMathFunc
+C/func/-/Tcl_CreateNamespace
+C/func/-/Tcl_CreateObjCommand
+C/func/-/Tcl_CreateObjTrace
+C/func/-/Tcl_CreateSlave
+C/func/-/Tcl_CreateThread
+C/func/-/Tcl_CreateThreadExitHandler
+C/func/-/Tcl_CreateTimerHandler
+C/func/-/Tcl_CreateTrace
+C/func/-/Tcl_CutChannel
+C/func/-/Tcl_DecrRefCount
+C/func/-/Tcl_DeleteAssocData
+C/func/-/Tcl_DeleteChannelHandler
+C/func/-/Tcl_DeleteCloseHandler
+C/func/-/Tcl_DeleteCommand
+C/func/-/Tcl_DeleteCommandFromToken
+C/func/-/Tcl_DeleteEvents
+C/func/-/Tcl_DeleteEventSource
+C/func/-/Tcl_DeleteExitHandler
+C/func/-/Tcl_DeleteFileHandler
+C/func/-/Tcl_DeleteHashEntry
+C/func/-/Tcl_DeleteHashTable
+C/func/-/Tcl_DeleteInterp
+C/func/-/Tcl_DeleteNamespace
+C/func/-/Tcl_DeleteThreadExitHandler
+C/func/-/Tcl_DeleteTimerHandler
+C/func/-/Tcl_DeleteTrace
+C/func/-/Tcl_DetachChannel
+C/func/-/Tcl_DetachPids
+C/func/-/Tcl_DictObjDone
+C/func/-/Tcl_DictObjFirst
+C/func/-/Tcl_DictObjGet
+C/func/-/Tcl_DictObjNext
+C/func/-/Tcl_DictObjPut
+C/func/-/Tcl_DictObjPutKeyList
+C/func/-/Tcl_DictObjRemove
+C/func/-/Tcl_DictObjRemoveKeyList
+C/func/-/Tcl_DictObjSize
+C/func/-/Tcl_DiscardInterpState
+C/func/-/Tcl_DiscardResult
+C/func/-/Tcl_DontCallWhenDeleted
+C/func/-/Tcl_DoOneEvent
+C/func/-/Tcl_DoWhenIdle
+C/func/-/Tcl_DStringAppend
+C/func/-/Tcl_DStringAppendElement
+C/func/-/Tcl_DStringEndSublist
+C/func/-/Tcl_DStringFree
+C/func/-/Tcl_DStringGetResult
+C/func/-/Tcl_DStringInit
+C/func/-/Tcl_DStringLength
+C/func/-/Tcl_DStringResult
+C/func/-/Tcl_DStringSetLength
+C/func/-/Tcl_DStringStartSublist
+C/func/-/Tcl_DStringTrunc
+C/func/-/Tcl_DStringValue
+C/func/-/Tcl_DumpActiveMemory
+C/func/-/Tcl_DuplicateObj
+C/func/-/Tcl_Eof
+C/func/-/Tcl_ErrnoId
+C/func/-/Tcl_ErrnoMsg
+C/func/-/Tcl_Eval
+C/func/-/Tcl_EvalEx
+C/func/-/Tcl_EvalFile
+C/func/-/Tcl_EvalObjEx
+C/func/-/Tcl_EvalObjv
+C/func/-/Tcl_EvalTokens
+C/func/-/Tcl_EvalTokensStandard
+C/func/-/Tcl_EventuallyFree
+C/func/-/Tcl_Exit
+C/func/-/Tcl_ExitThread
+C/func/-/Tcl_Export
+C/func/-/Tcl_ExposeCommand
+C/func/-/Tcl_ExprBoolean
+C/func/-/Tcl_ExprBooleanObj
+C/func/-/Tcl_ExprDouble
+C/func/-/Tcl_ExprDoubleObj
+C/func/-/Tcl_ExprLong
+C/func/-/Tcl_ExprLongObj
+C/func/-/Tcl_ExprObj
+C/func/-/Tcl_ExprString
+C/func/-/Tcl_ExternalToUtf
+C/func/-/Tcl_ExternalToUtfDString
+C/func/-/Tcl_Finalize
+C/func/-/Tcl_FinalizeNotifier
+C/func/-/Tcl_FinalizeThread
+C/func/-/Tcl_FindCommand
+C/func/-/Tcl_FindEnsemble
+C/func/-/Tcl_FindExecutable
+C/func/-/Tcl_FindHashEntry
+C/func/-/Tcl_FindNamespace
+C/func/-/Tcl_FirstHashEntry
+C/func/-/Tcl_Flush
+C/func/-/Tcl_ForgetImport
+C/func/-/Tcl_Format
+C/func/-/Tcl_Free
+C/func/-/Tcl_FreeEncoding
+C/func/-/Tcl_FreeParse
+C/func/-/Tcl_FreeResult
+C/func/-/Tcl_FSAccess
+C/func/-/Tcl_FSChdir
+C/func/-/Tcl_FSConvertToPathType
+C/func/-/Tcl_FSCopyDirectory
+C/func/-/Tcl_FSCopyFile
+C/func/-/Tcl_FSCreateDirectory
+C/func/-/Tcl_FSData
+C/func/-/Tcl_FSDeleteFile
+C/func/-/Tcl_FSEqualPaths
+C/func/-/Tcl_FSEvalFile
+C/func/-/Tcl_FSEvalFileEx
+C/func/-/Tcl_FSFileAttrsGet
+C/func/-/Tcl_FSFileAttrsSet
+C/func/-/Tcl_FSFileAttrStrings
+C/func/-/Tcl_FSFileSystemInfo
+C/func/-/Tcl_FSGetCwd
+C/func/-/Tcl_FSGetFileSystemForPath
+C/func/-/Tcl_FSGetInternalRep
+C/func/-/Tcl_FSGetNativePath
+C/func/-/Tcl_FSGetNormalizedPath
+C/func/-/Tcl_FSGetPathType
+C/func/-/Tcl_FSGetTranslatedPath
+C/func/-/Tcl_FSGetTranslatedStringPath
+C/func/-/Tcl_FSJoinPath
+C/func/-/Tcl_FSJoinToPath
+C/func/-/Tcl_FSLink
+C/func/-/Tcl_FSListVolumes
+C/func/-/Tcl_FSLoadFile
+C/func/-/Tcl_FSLstat
+C/func/-/Tcl_FSMatchInDirectory
+C/func/-/Tcl_FSMountsChanged
+C/func/-/Tcl_FSNewNativePath
+C/func/-/Tcl_FSOpenFileChannel
+C/func/-/Tcl_FSPathSeparator
+C/func/-/Tcl_FSRegister
+C/func/-/Tcl_FSRemoveDirectory
+C/func/-/Tcl_FSRenameFile
+C/func/-/Tcl_FSSplitPath
+C/func/-/Tcl_FSStat
+C/func/-/Tcl_FSUnregister
+C/func/-/Tcl_FSUtime
+C/func/-/Tcl_GetAlias
+C/func/-/Tcl_GetAliasObj
+C/func/-/Tcl_GetAssocData
+C/func/-/Tcl_GetBignumFromObj
+C/func/-/Tcl_GetBoolean
+C/func/-/Tcl_GetBooleanFromObj
+C/func/-/Tcl_GetByteArrayFromObj
+C/func/-/Tcl_GetChannel
+C/func/-/Tcl_GetChannelBufferSize
+C/func/-/Tcl_GetChannelError
+C/func/-/Tcl_GetChannelErrorInterp
+C/func/-/Tcl_GetChannelHandle
+C/func/-/Tcl_GetChannelInstanceData
+C/func/-/Tcl_GetChannelMode
+C/func/-/Tcl_GetChannelName
+C/func/-/Tcl_GetChannelNames
+C/func/-/Tcl_GetChannelNamesEx
+C/func/-/Tcl_GetChannelOption
+C/func/-/Tcl_GetChannelThread
+C/func/-/Tcl_GetChannelType
+C/func/-/Tcl_GetCharLength
+C/func/-/Tcl_GetCommandFromObj
+C/func/-/Tcl_GetCommandFullName
+C/func/-/Tcl_GetCommandInfo
+C/func/-/Tcl_GetCommandInfoFromToken
+C/func/-/Tcl_GetCommandName
+C/func/-/Tcl_GetCurrentNamespace
+C/func/-/Tcl_GetCurrentThread
+C/func/-/Tcl_GetCwd
+C/func/-/Tcl_GetDefaultEncodingDir
+C/func/-/Tcl_GetDouble
+C/func/-/Tcl_GetDoubleFromObj
+C/func/-/Tcl_GetEncoding
+C/func/-/Tcl_GetEncodingFromObj
+C/func/-/Tcl_GetEncodingName
+C/func/-/Tcl_GetEncodingNameFromEnvironment
+C/func/-/Tcl_GetEncodingNames
+C/func/-/Tcl_GetEncodingSearchPath
+C/func/-/Tcl_GetEnsembleFlags
+C/func/-/Tcl_GetEnsembleMappingDict
+C/func/-/Tcl_GetEnsembleNamespace
+C/func/-/Tcl_GetEnsembleSubcommandList
+C/func/-/Tcl_GetEnsembleUnknownHandler
+C/func/-/Tcl_GetErrno
+C/func/-/Tcl_GetGlobalNamespace
+C/func/-/Tcl_GetHashKey
+C/func/-/Tcl_GetHashValue
+C/func/-/Tcl_GetHostName
+C/func/-/Tcl_GetIndexFromObj
+C/func/-/Tcl_GetIndexFromObjStruct
+C/func/-/Tcl_GetInt
+C/func/-/Tcl_GetInterpPath
+C/func/-/Tcl_GetIntFromObj
+C/func/-/Tcl_GetLongFromObj
+C/func/-/Tcl_GetMaster
+C/func/-/Tcl_GetMathFuncInfo
+C/func/-/Tcl_GetNameOfExecutable
+C/func/-/Tcl_GetNamespaceUnknownHandler
+C/func/-/Tcl_GetObjResult
+C/func/-/Tcl_GetObjType
+C/func/-/Tcl_GetOpenFile
+C/func/-/Tcl_GetPathType
+C/func/-/Tcl_GetRange
+C/func/-/Tcl_GetRegExpFromObj
+C/func/-/Tcl_GetReturnOptions
+C/func/-/Tcl_Gets
+C/func/-/Tcl_GetServiceMode
+C/func/-/Tcl_GetSlave
+C/func/-/Tcl_GetsObj
+C/func/-/Tcl_GetStackedChannel
+C/func/-/Tcl_GetStdChannel
+C/func/-/Tcl_GetString
+C/func/-/Tcl_GetStringFromObj
+C/func/-/Tcl_GetStringResult
+C/func/-/Tcl_GetThreadData
+C/func/-/Tcl_GetTime
+C/func/-/Tcl_GetTopChannel
+C/func/-/Tcl_GetUniChar
+C/func/-/Tcl_GetUnicode
+C/func/-/Tcl_GetUnicodeFromObj
+C/func/-/Tcl_GetVar
+C/func/-/Tcl_GetVar2
+C/func/-/Tcl_GetVar2Ex
+C/func/-/Tcl_GetVersion
+C/func/-/Tcl_GetWideIntFromObj
+C/func/-/Tcl_GlobalEval
+C/func/-/Tcl_GlobalEvalObj
+C/func/-/Tcl_HashStats
+C/func/-/Tcl_HideCommand
+C/func/-/Tcl_Import
+C/func/-/Tcl_IncrRefCount
+C/func/-/Tcl_Init
+C/func/-/Tcl_InitBignumFromDouble
+C/func/-/Tcl_InitCustomHashTable
+C/func/-/Tcl_InitHashTable
+C/func/-/Tcl_InitMemory
+C/func/-/Tcl_InitNotifier
+C/func/-/Tcl_InitObjHashTable
+C/func/-/Tcl_InitStubs
+C/func/-/Tcl_InputBlocked
+C/func/-/Tcl_InputBuffered
+C/func/-/Tcl_Interp
+C/func/-/Tcl_InterpDeleted
+C/func/-/Tcl_InvalidateStringRep
+C/func/-/Tcl_IsChannelExisting
+C/func/-/Tcl_IsChannelRegistered
+C/func/-/Tcl_IsChannelShared
+C/func/-/Tcl_IsEnsemble
+C/func/-/Tcl_IsSafe
+C/func/-/Tcl_IsShared
+C/func/-/Tcl_IsStandardChannel
+C/func/-/Tcl_JoinPath
+C/func/-/Tcl_JoinThread
+C/func/-/Tcl_LimitAddHandler
+C/func/-/Tcl_LimitCheck
+C/func/-/Tcl_LimitExceeded
+C/func/-/Tcl_LimitGetCommands
+C/func/-/Tcl_LimitGetGranularity
+C/func/-/Tcl_LimitGetTime
+C/func/-/Tcl_LimitReady
+C/func/-/Tcl_LimitRemoveHandler
+C/func/-/Tcl_LimitSetCommands
+C/func/-/Tcl_LimitSetGranularity
+C/func/-/Tcl_LimitSetTime
+C/func/-/Tcl_LimitTypeEnabled
+C/func/-/Tcl_LimitTypeExceeded
+C/func/-/Tcl_LimitTypeReset
+C/func/-/Tcl_LimitTypeSet
+C/func/-/Tcl_LinkVar
+C/func/-/Tcl_ListMathFuncs
+C/func/-/Tcl_ListObjAppendElement
+C/func/-/Tcl_ListObjAppendList
+C/func/-/Tcl_ListObjGetElements
+C/func/-/Tcl_ListObjIndex
+C/func/-/Tcl_ListObjLength
+C/func/-/Tcl_ListObjReplace
+C/func/-/Tcl_LogCommandInfo
+C/func/-/Tcl_Main
+C/func/-/Tcl_MakeFileChannel
+C/func/-/Tcl_MakeSafe
+C/func/-/Tcl_MakeTcpClientChannel
+C/func/-/TCL_MEM_DEBUG
+C/func/-/Tcl_Merge
+C/func/-/Tcl_MutexFinalize
+C/func/-/Tcl_MutexLock
+C/func/-/Tcl_MutexUnlock
+C/func/-/Tcl_NewBignumObj
+C/func/-/Tcl_NewBooleanObj
+C/func/-/Tcl_NewByteArrayObj
+C/func/-/Tcl_NewDictObj
+C/func/-/Tcl_NewDoubleObj
+C/func/-/Tcl_NewIntObj
+C/func/-/Tcl_NewListObj
+C/func/-/Tcl_NewLongObj
+C/func/-/Tcl_NewObj
+C/func/-/Tcl_NewStringObj
+C/func/-/Tcl_NewUnicodeObj
+C/func/-/Tcl_NewWideIntObj
+C/func/-/Tcl_NextHashEntry
+C/func/-/Tcl_NotifyChannel
+C/func/-/Tcl_NumUtfChars
+C/func/-/Tcl_ObjGetVar2
+C/func/-/Tcl_ObjPrintf
+C/func/-/Tcl_ObjSetVar2
+C/func/-/Tcl_OpenCommandChannel
+C/func/-/Tcl_OpenFileChannel
+C/func/-/Tcl_OpenTcpClient
+C/func/-/Tcl_OpenTcpServer
+C/func/-/Tcl_OutputBuffered
+C/func/-/Tcl_Panic
+C/func/-/Tcl_PanicVA
+C/func/-/Tcl_ParseBraces
+C/func/-/Tcl_ParseCommand
+C/func/-/Tcl_ParseExpr
+C/func/-/Tcl_ParseQuotedString
+C/func/-/Tcl_ParseVar
+C/func/-/Tcl_ParseVarName
+C/func/-/Tcl_PkgPresent
+C/func/-/Tcl_PkgPresentEx
+C/func/-/Tcl_PkgProvide
+C/func/-/Tcl_PkgProvideEx
+C/func/-/Tcl_PkgRequire
+C/func/-/Tcl_PkgRequireEx
+C/func/-/Tcl_PkgRequireProc
+C/func/-/Tcl_PosixError
+C/func/-/Tcl_Preserve
+C/func/-/Tcl_PrintDouble
+C/func/-/Tcl_PutEnv
+C/func/-/Tcl_QueryTimeProc
+C/func/-/Tcl_QueueEvent
+C/func/-/Tcl_Read
+C/func/-/Tcl_ReadChars
+C/func/-/Tcl_ReadRaw
+C/func/-/Tcl_Realloc
+C/func/-/Tcl_ReapDetachedProcs
+C/func/-/Tcl_RecordAndEval
+C/func/-/Tcl_RecordAndEvalObj
+C/func/-/Tcl_RegExpCompile
+C/func/-/Tcl_RegExpExec
+C/func/-/Tcl_RegExpExecObj
+C/func/-/Tcl_RegExpGetInfo
+C/func/-/Tcl_RegExpMatch
+C/func/-/Tcl_RegExpMatchObj
+C/func/-/Tcl_RegExpRange
+C/func/-/Tcl_RegisterChannel
+C/func/-/Tcl_RegisterConfig
+C/func/-/Tcl_RegisterObjType
+C/func/-/Tcl_Release
+C/func/-/Tcl_ResetResult
+C/func/-/Tcl_RestoreInterpState
+C/func/-/Tcl_RestoreResult
+C/func/-/Tcl_SaveInterpState
+C/func/-/Tcl_SaveResult
+C/func/-/Tcl_ScanCountedElement
+C/func/-/Tcl_ScanElement
+C/func/-/Tcl_Seek
+C/func/-/Tcl_ServiceAll
+C/func/-/Tcl_ServiceEvent
+C/func/-/Tcl_ServiceModeHook
+C/func/-/Tcl_SetAssocData
+C/func/-/Tcl_SetBignumObj
+C/func/-/Tcl_SetBooleanObj
+C/func/-/Tcl_SetByteArrayLength
+C/func/-/Tcl_SetByteArrayObj
+C/func/-/Tcl_SetChannelBufferSize
+C/func/-/Tcl_SetChannelError
+C/func/-/Tcl_SetChannelErrorInterp
+C/func/-/Tcl_SetChannelOption
+C/func/-/Tcl_SetCommandInfo
+C/func/-/Tcl_SetCommandInfoFromToken
+C/func/-/Tcl_SetDefaultEncodingDir
+C/func/-/Tcl_SetDoubleObj
+C/func/-/Tcl_SetEncodingSearchPath
+C/func/-/Tcl_SetEnsembleFlags
+C/func/-/Tcl_SetEnsembleMappingDict
+C/func/-/Tcl_SetEnsembleSubcommandList
+C/func/-/Tcl_SetEnsembleUnknownHandler
+C/func/-/Tcl_SetErrno
+C/func/-/Tcl_SetErrorCode
+C/func/-/Tcl_SetErrorCodeVA
+C/func/-/Tcl_SetExitProc
+C/func/-/Tcl_SetHashValue
+C/func/-/Tcl_SetIntObj
+C/func/-/Tcl_SetListObj
+C/func/-/Tcl_SetLongObj
+C/func/-/Tcl_SetMainLoop
+C/func/-/Tcl_SetMaxBlockTime
+C/func/-/Tcl_SetNamespaceUnknownHandler
+C/func/-/Tcl_SetNotifier
+C/func/-/Tcl_SetObjErrorCode
+C/func/-/Tcl_SetObjLength
+C/func/-/Tcl_SetObjResult
+C/func/-/Tcl_SetPanicProc
+C/func/-/Tcl_SetRecursionLimit
+C/func/-/Tcl_SetResult
+C/func/-/Tcl_SetReturnOptions
+C/func/-/Tcl_SetServiceMode
+C/func/-/Tcl_SetStdChannel
+C/func/-/Tcl_SetStringObj
+C/func/-/Tcl_SetSystemEncoding
+C/func/-/Tcl_SetTimeProc
+C/func/-/Tcl_SetTimer
+C/func/-/Tcl_SetUnicodeObj
+C/func/-/Tcl_SetVar
+C/func/-/Tcl_SetVar2
+C/func/-/Tcl_SetVar2Ex
+C/func/-/Tcl_SetWideIntObj
+C/func/-/Tcl_SignalId
+C/func/-/Tcl_SignalMsg
+C/func/-/Tcl_Sleep
+C/func/-/Tcl_SourceRCFile
+C/func/-/Tcl_SpliceChannel
+C/func/-/Tcl_SplitList
+C/func/-/Tcl_SplitPath
+C/func/-/Tcl_StackChannel
+C/func/-/Tcl_StandardChannels
+C/func/-/Tcl_Stat
+C/func/-/Tcl_StaticPackage
+C/func/-/Tcl_StringCaseMatch
+C/func/-/Tcl_StringMatch
+C/func/-/Tcl_SubstObj
+C/func/-/Tcl_TakeBignumFromObj
+C/func/-/Tcl_Tell
+C/func/-/Tcl_ThreadAlert
+C/func/-/Tcl_ThreadQueueEvent
+C/func/-/Tcl_TraceCommand
+C/func/-/Tcl_TraceVar
+C/func/-/Tcl_TraceVar2
+C/func/-/Tcl_TranslateFileName
+C/func/-/Tcl_TruncateChannel
+C/func/-/Tcl_Ungets
+C/func/-/Tcl_UniChar
+C/func/-/Tcl_UniCharAtIndex
+C/func/-/Tcl_UniCharCaseMatch
+C/func/-/Tcl_UniCharIsAlnum
+C/func/-/Tcl_UniCharIsAlpha
+C/func/-/Tcl_UniCharIsControl
+C/func/-/Tcl_UniCharIsDigit
+C/func/-/Tcl_UniCharIsGraph
+C/func/-/Tcl_UniCharIsLower
+C/func/-/Tcl_UniCharIsPrint
+C/func/-/Tcl_UniCharIsPunct
+C/func/-/Tcl_UniCharIsSpace
+C/func/-/Tcl_UniCharIsUpper
+C/func/-/Tcl_UniCharIsWordChar
+C/func/-/Tcl_UniCharLen
+C/func/-/Tcl_UniCharNcasecmp
+C/func/-/Tcl_UniCharNcmp
+C/func/-/Tcl_UniCharToLower
+C/func/-/Tcl_UniCharToTitle
+C/func/-/Tcl_UniCharToUpper
+C/func/-/Tcl_UniCharToUtf
+C/func/-/Tcl_UniCharToUtfDString
+C/func/-/Tcl_UnlinkVar
+C/func/-/Tcl_UnregisterChannel
+C/func/-/Tcl_UnsetVar
+C/func/-/Tcl_UnsetVar2
+C/func/-/Tcl_UnstackChannel
+C/func/-/Tcl_UntraceCommand
+C/func/-/Tcl_UntraceVar
+C/func/-/Tcl_UntraceVar2
+C/func/-/Tcl_UpdateLinkedVar
+C/func/-/Tcl_UpVar
+C/func/-/Tcl_UpVar2
+C/func/-/Tcl_UtfAtIndex
+C/func/-/Tcl_UtfBackslash
+C/func/-/Tcl_UtfCharComplete
+C/func/-/Tcl_UtfFindFirst
+C/func/-/Tcl_UtfFindLast
+C/func/-/Tcl_UtfNcasecmp
+C/func/-/Tcl_UtfNcmp
+C/func/-/Tcl_UtfNext
+C/func/-/Tcl_UtfPrev
+C/func/-/Tcl_UtfToExternal
+C/func/-/Tcl_UtfToExternalDString
+C/func/-/Tcl_UtfToLower
+C/func/-/Tcl_UtfToTitle
+C/func/-/Tcl_UtfToUniChar
+C/func/-/Tcl_UtfToUniCharDString
+C/func/-/Tcl_UtfToUpper
+C/func/-/Tcl_ValidateAllMemory
+C/func/-/Tcl_VarEval
+C/func/-/Tcl_VarEvalVA
+C/func/-/Tcl_VarTraceInfo
+C/func/-/Tcl_VarTraceInfo2
+C/func/-/Tcl_WaitForEvent
+C/func/-/Tcl_WaitPid
+C/func/-/Tcl_WinTCharToUtf
+C/func/-/Tcl_WinUtfToTChar
+C/func/-/Tcl_Write
+C/func/-/Tcl_WriteChars
+C/func/-/Tcl_WriteObj
+C/func/-/Tcl_WriteRaw
+C/func/-/Tcl_WrongNumArgs
+C/econst/-/tcNegTimesOK
+C/tdef/-/tContextData
+C/func/-/tcsendbreak
+C/func/-/tcsetattr
+C/func/-/TCSetDisplayOptions
+C/func/-/tcsetpgrp
+C/func/-/TCSetSourceRef
+C/func/-/TCSetTimeCodeFlags
+C/tag/-/TCTextOptions
+C/tdef/-/TCTextOptionsPtr
+C/func/-/TCTimeCodeToFrameNumber
+C/func/-/TCTimeCodeToString
+C/tdef/-/tDataBuffer
+C/tdef/-/tDataBufferPtr
+C/tdef/-/tDataList
+C/tdef/-/tDataListPtr
+C/tdef/-/tDataNode
+C/tdef/-/tDataNodePtr
+C/func/-/tdelete
+C/tdef/-/tDirNodeReference
+C/tdef/-/tDirPatternMatch
+C/tdef/-/tDirReference
+C/tdef/-/tDirStatus
+C++/instm/TestCase/tearDown
+C++/instm/Test/tearDown
+C++/instm/TestSuite/tearDown
+Objective-C/instm/NSMenu/tearOffMenuRepresentation
+C/tdef/-/TECBufferContextRec
+C/func/-/TECClearConverterContextInfo
+C/func/-/TECClearSnifferContextInfo
+C/tdef/-/TECConversionInfo
+C/tdef/-/TECConverterContextRec
+C/func/-/TECConvertText
+C/func/-/TECConvertTextToMultipleEncodings
+C/func/-/TECCountAvailableSniffers
+C/func/-/TECCountAvailableTextEncodings
+C/func/-/TECCountDestinationTextEncodings
+C/func/-/TECCountDirectTextEncodingConversions
+C/func/-/TECCountMailTextEncodings
+C/func/-/TECCountSubTextEncodings
+C/func/-/TECCountWebTextEncodings
+C/func/-/TECCreateConverter
+C/func/-/TECCreateConverterFromPath
+C/func/-/TECCreateOneToManyConverter
+C/func/-/TECCreateSniffer
+C/func/-/TECDisposeConverter
+C/func/-/TECDisposeSniffer
+C/func/-/TECFlushMultipleEncodings
+C/func/-/TECFlushText
+C/func/-/TECGetAvailableSniffers
+C/func/-/TECGetAvailableTextEncodings
+C/func/-/TECGetDestinationTextEncodings
+C/func/-/TECGetDirectTextEncodingConversions
+C/func/-/TECGetEncodingList
+C/func/-/TECGetInfo
+C/func/-/TECGetMailTextEncodings
+C/func/-/TECGetSubTextEncodings
+C/func/-/TECGetTextEncodingFromInternetName
+C/func/-/TECGetTextEncodingInternetName
+C/func/-/TECGetWebTextEncodings
+C/tdef/-/TECInfo
+C/tdef/-/TECObjectRef
+C/tdef/-/TECPluginClearContextInfoPtr
+C/tdef/-/TECPluginClearSnifferContextInfoPtr
+C/tdef/-/TECPluginConvertTextEncodingPtr
+C/tdef/-/TECPluginDispatchTable
+C/tdef/-/TECPluginDisposeEncodingConverterPtr
+C/tdef/-/TECPluginDisposeEncodingSnifferPtr
+C/tdef/-/TECPluginFlushConversionPtr
+C/tdef/-/TECPluginGetCountAvailableSniffersPtr
+C/tdef/-/TECPluginGetCountAvailableTextEncodingPairsPtr
+C/tdef/-/TECPluginGetCountAvailableTextEncodingsPtr
+C/tdef/-/TECPluginGetCountDestinationTextEncodingsPtr
+C/tdef/-/TECPluginGetCountMailEncodingsPtr
+C/tdef/-/TECPluginGetCountSubTextEncodingsPtr
+C/tdef/-/TECPluginGetCountWebEncodingsPtr
+C/tdef/-/TECPluginGetPluginDispatchTablePtr
+C/tdef/-/TECPluginGetTextEncodingFromInternetNamePtr
+C/tdef/-/TECPluginGetTextEncodingInternetNamePtr
+C/tdef/-/TECPluginNewEncodingConverterPtr
+C/tdef/-/TECPluginNewEncodingSnifferPtr
+C/tdef/-/TECPluginSig
+C/tdef/-/TECPluginSignature
+C/tdef/-/TECPluginSniffTextEncodingPtr
+C/tdef/-/TECPluginStateRec
+C/tdef/-/TECPluginVersion
+C/tdef/-/TECSnifferContextRec
+C/tdef/-/TECSnifferObjectRef
+C/func/-/TECSniffTextEncoding
+C/func/-/telldir
+C++/instm/IOService/temperatureCriticalForZone
+Objective-C/clm/NSPredicateEditorRowTemplate/templatesWithAttributeKeyPaths:inEntityDescription:
+Objective-C/instm/NSPredicateEditorRowTemplate/templateViews
+C/func/-/tempnam
+Objective-C/instm/NSLayoutManager/temporaryAttribute:atCharacterIndex:effectiveRange:
+Objective-C/instm/NSLayoutManager/temporaryAttribute:atCharacterIndex:longestEffectiveRange:inRange:
+Objective-C/instm/NSLayoutManager/temporaryAttributesAtCharacterIndex:effectiveRange:
+Objective-C/instm/NSLayoutManager/temporaryAttributesAtCharacterIndex:longestEffectiveRange:inRange:
+C++/instm/IOService/temporaryPowerClampOn
+C/func/-/term_attrs
+C/func/-/termattrs
+C/func/-/termcap
+Objective-C/instm/NSTask/terminate
+Objective-C/instm/NSRunningApplication/terminate
+C++/instm/IOService/terminate
+JavaScript/instm/Worker/terminate
+Objective-C/instm/NSApplication/terminate:
+C++/instm/IOService/terminateClient
+C++/instm/IOSCSIParallelInterfaceController/TerminateController
+Objective-C/instp/NSRunningApplication/terminated
+C++/instm/IOCatalogue/terminateDrivers
+C++/instm/IOCatalogue/terminateDriversForModule
+Objective-C/instm/NSTask/terminationReason
+Objective-C/instm/NSTask/terminationStatus
+C/func/-/termname
+Objective-C/instm/NSWhoseSpecifier/test
+C++/instm/Test/Test
+C++/cl/-/Test
+C/macro/-/TEST_INVOCATION
+C/macro/-/TestAudioFormatNativeEndian
+Objective-C/instm/DRBurnSetupPanel/testBurn:
+JavaScript/cl/-/TestCallback
+C++/cl/-/TestCase
+C++/instm/TestCase/TestCase
+C++/instm/TestObserver/testDidFail
+C++/instm/TestLog/testDidFail
+C++/instm/TestObserver/testDidStart
+C++/instm/TestLog/testDidStart
+C++/instm/TestObserver/testDidStop
+C++/instm/TestLog/testDidStop
+C++/cl/-/TestFailure
+C++/instm/TestFailure/TestFailure
+JavaScript/cl/-/TestInterface
+C++/instm/TestInvocation/TestInvocation
+C++/cl/-/TestInvocation
+C++/cl/-/TestLog
+C++/instm/TestLog/TestLog
+JavaScript/cl/-/TestObj
+JavaScript/data/TestObj/testObjAttr
+C++/cl/-/TestObserver
+C++/instm/TestObserver/TestObserver
+Objective-C/instm/NSScroller/testPart:
+Objective-C/instm/DRTrack/testProductionSpeedForInterval:
+Objective-C/instm/DRTrack/testProductionSpeedForLength:
+C++/instm/TestRun/TestRun
+C++/cl/-/TestRun
+C++/instm/TestSuite/tests
+C++/cl/-/TestSuite
+C++/instm/TestSuite/TestSuite
+C++/instm/TestLog/testSuiteDidStart
+C++/instm/TestObserver/testSuiteDidStart
+C++/instm/TestObserver/testSuiteDidStop
+C++/instm/TestLog/testSuiteDidStop
+C++/instm/TestSuite/testWithName
+JavaScript/instm/WebGLRenderingContext/texImage2D
+JavaScript/instm/WebGLRenderingContext/texParameterf
+JavaScript/instm/WebGLRenderingContext/texParameteri
+JavaScript/instm/WebGLRenderingContext/texSubImage2D
+C++/instm/OSSerialize/text
+JavaScript/data/HTMLAnchorElement/text
+JavaScript/data/HTMLBodyElement/text
+JavaScript/data/HTMLTitleElement/text
+JavaScript/data/DOMWindow/Text
+JavaScript/data/HTMLScriptElement/text
+JavaScript/data/HTMLOptionElement/text
+JavaScript/data/Range/text
+JavaScript/cl/-/Text
+JavaScript/clconst/core/TEXT_NODE
+JavaScript/data/CanvasRenderingContext2D/textAlign
+Objective-C/instm/NSNumberFormatter/textAttributesForNegativeInfinity
+Objective-C/instm/NSNumberFormatter/textAttributesForNegativeValues
+Objective-C/instm/NSNumberFormatter/textAttributesForNil
+Objective-C/instm/NSNumberFormatter/textAttributesForNotANumber
+Objective-C/instm/NSNumberFormatter/textAttributesForPositiveInfinity
+Objective-C/instm/NSNumberFormatter/textAttributesForPositiveValues
+Objective-C/instm/NSNumberFormatter/textAttributesForZero
+Objective-C/clm/NSColor/textBackgroundColor
+JavaScript/data/CanvasRenderingContext2D/textBaseline
+Objective-C/instm/NSParagraphStyle/textBlocks
+C/tdef/-/TextBreakLocatorRef
+Objective-C/instm/NSDatePicker/textColor
+Objective-C/clm/NSColor/textColor
+Objective-C/instm/NSDatePickerCell/textColor
+Objective-C/instm/NSTextField/textColor
+Objective-C/binding/NSDatePicker/textColor
+Objective-C/binding/NSComboBoxCell/textColor
+Objective-C/binding/NSDatePickerCell/textColor
+Objective-C/binding/NSComboBox/textColor
+Objective-C/binding/NSTextField/textColor
+Objective-C/binding/NSSearchField/textColor
+Objective-C/instm/NSText/textColor
+Objective-C/binding/NSTokenField/textColor
+Objective-C/binding/NSSecureTextFieldCell/textColor
+Objective-C/binding/NSTextView/textColor
+Objective-C/binding/NSTableColumn/textColor
+Objective-C/instm/NSTextFieldCell/textColor
+Objective-C/binding/NSTextFieldCell/textColor
+Objective-C/binding/NSSecureTextField/textColor
+Objective-C/binding/NSTokenFieldCell/textColor
+Objective-C/instm/NSTextView/textContainer
+Objective-C/instm/NSLayoutManager/textContainerChangedGeometry:
+Objective-C/instm/NSLayoutManager/textContainerChangedTextView:
+Objective-C/instm/NSLayoutManager/textContainerForGlyphAtIndex:effectiveRange:
+Objective-C/instm/NSLayoutManager/textContainerForGlyphAtIndex:effectiveRange:withoutAdditionalLayout:
+Objective-C/instm/NSTextView/textContainerInset
+Objective-C/instm/NSTextView/textContainerOrigin
+Objective-C/instm/NSLayoutManager/textContainers
+Objective-C/instm/NSTypesetter/textContainers
+JavaScript/data/core/textContent
+Objective-C/instm/NSMatrix/textDidBeginEditing:
+Objective-C/intfm/NSTextDelegate/textDidBeginEditing:
+Objective-C/instm/NSTextField/textDidBeginEditing:
+Objective-C/instm/NSTableView/textDidBeginEditing:
+Objective-C/instm/NSMatrix/textDidChange:
+Objective-C/intfm/NSTextDelegate/textDidChange:
+Objective-C/instm/NSTextField/textDidChange:
+Objective-C/instm/NSTableView/textDidChange:
+Objective-C/instm/NSMatrix/textDidEndEditing:
+Objective-C/intfm/NSTextDelegate/textDidEndEditing:
+Objective-C/instm/NSTextField/textDidEndEditing:
+Objective-C/instm/NSTableView/textDidEndEditing:
+C/tag/-/TextDisplayData
+C/tdef/-/TextEncoding
+C/tdef/-/TextEncodingBase
+C/tdef/-/TextEncodingFormat
+Objective-C/instm/NSURLResponse/textEncodingName
+Objective-C/instm/WebResource/textEncodingName
+Objective-C/instm/WebDataSource/textEncodingName
+C/tdef/-/TextEncodingNameSelector
+C/tdef/-/TextEncodingRun
+C/tdef/-/TextEncodingVariant
+JavaScript/data/DOMWindow/TextEvent
+JavaScript/cl/-/TextEvent
+C/tdef/-/TextExportComponent
+C/func/-/TextExportGetDisplayData
+C/func/-/TextExportGetSettings
+C/func/-/TextExportGetTimeFraction
+C/func/-/TextExportSetSettings
+C/func/-/TextExportSetTimeFraction
+Objective-C/clm/NSAttributedString/textFileTypes
+JavaScript/data/HTMLTextAreaElement/textLength
+JavaScript/data/SVGTextContentElement/textLength
+Objective-C/instm/NSParagraphStyle/textLists
+C/tdef/-/TextMediaProc
+C/econst/-/TextMediaType
+C/tdef/-/TextMediaUPP
+JavaScript/data/DOMWindow/TextMetrics
+JavaScript/cl/-/TextMetrics
+Objective-C/clm/NSAttributedString/textPasteboardTypes
+JavaScript/clconst/SVGTextPathElement/TEXTPATH_METHODTYPE_ALIGN
+JavaScript/clconst/SVGTextPathElement/TEXTPATH_METHODTYPE_STRETCH
+JavaScript/clconst/SVGTextPathElement/TEXTPATH_METHODTYPE_UNKNOWN
+JavaScript/clconst/SVGTextPathElement/TEXTPATH_SPACINGTYPE_AUTO
+JavaScript/clconst/SVGTextPathElement/TEXTPATH_SPACINGTYPE_EXACT
+JavaScript/clconst/SVGTextPathElement/TEXTPATH_SPACINGTYPE_UNKNOWN
+Objective-C/instm/NSMatrix/textShouldBeginEditing:
+Objective-C/intfm/NSTextDelegate/textShouldBeginEditing:
+Objective-C/instm/NSTextField/textShouldBeginEditing:
+Objective-C/instm/NSTableView/textShouldBeginEditing:
+Objective-C/instm/NSMatrix/textShouldEndEditing:
+Objective-C/intfm/NSTextDelegate/textShouldEndEditing:
+Objective-C/instm/NSTextField/textShouldEndEditing:
+Objective-C/instm/NSTableView/textShouldEndEditing:
+Objective-C/instm/WebView/textSizeMultiplier
+Objective-C/instm/NSLayoutManager/textStorage
+Objective-C/instm/NSTextView/textStorage
+Objective-C/instm/NSLayoutManager/textStorage:edited:range:changeInLength:invalidatedRange:
+Objective-C/intfm/NSTextStorageDelegate/textStorageDidProcessEditing:
+Objective-C/intfm/NSTextStorageDelegate/textStorageWillProcessEditing:
+Objective-C/instm/NSATSTypesetter/textTabForGlyphLocation:writingDirection:maxLocation:
+Objective-C/instm/NSTypesetter/textTabForGlyphLocation:writingDirection:maxLocation:
+C/func/-/TextToPhonemes
+C/tdef/-/TextToUnicodeInfo
+Objective-C/instm/NSFont/textTransform
+Objective-C/clm/NSAttributedString/textTypes
+Objective-C/clm/NSAttributedString/textUnfilteredFileTypes
+Objective-C/clm/NSAttributedString/textUnfilteredPasteboardTypes
+Objective-C/clm/NSAttributedString/textUnfilteredTypes
+JavaScript/clconst/WebGLRenderingContext/TEXTURE
+JavaScript/clconst/WebGLRenderingContext/TEXTURE0
+JavaScript/clconst/WebGLRenderingContext/TEXTURE1
+JavaScript/clconst/WebGLRenderingContext/TEXTURE10
+JavaScript/clconst/WebGLRenderingContext/TEXTURE11
+JavaScript/clconst/WebGLRenderingContext/TEXTURE12
+JavaScript/clconst/WebGLRenderingContext/TEXTURE13
+JavaScript/clconst/WebGLRenderingContext/TEXTURE14
+JavaScript/clconst/WebGLRenderingContext/TEXTURE15
+JavaScript/clconst/WebGLRenderingContext/TEXTURE16
+JavaScript/clconst/WebGLRenderingContext/TEXTURE17
+JavaScript/clconst/WebGLRenderingContext/TEXTURE18
+JavaScript/clconst/WebGLRenderingContext/TEXTURE19
+JavaScript/clconst/WebGLRenderingContext/TEXTURE2
+JavaScript/clconst/WebGLRenderingContext/TEXTURE20
+JavaScript/clconst/WebGLRenderingContext/TEXTURE21
+JavaScript/clconst/WebGLRenderingContext/TEXTURE22
+JavaScript/clconst/WebGLRenderingContext/TEXTURE23
+JavaScript/clconst/WebGLRenderingContext/TEXTURE24
+JavaScript/clconst/WebGLRenderingContext/TEXTURE25
+JavaScript/clconst/WebGLRenderingContext/TEXTURE26
+JavaScript/clconst/WebGLRenderingContext/TEXTURE27
+JavaScript/clconst/WebGLRenderingContext/TEXTURE28
+JavaScript/clconst/WebGLRenderingContext/TEXTURE29
+JavaScript/clconst/WebGLRenderingContext/TEXTURE3
+JavaScript/clconst/WebGLRenderingContext/TEXTURE30
+JavaScript/clconst/WebGLRenderingContext/TEXTURE31
+JavaScript/clconst/WebGLRenderingContext/TEXTURE4
+JavaScript/clconst/WebGLRenderingContext/TEXTURE5
+JavaScript/clconst/WebGLRenderingContext/TEXTURE6
+JavaScript/clconst/WebGLRenderingContext/TEXTURE7
+JavaScript/clconst/WebGLRenderingContext/TEXTURE8
+JavaScript/clconst/WebGLRenderingContext/TEXTURE9
+JavaScript/clconst/WebGLRenderingContext/TEXTURE_2D
+JavaScript/clconst/WebGLRenderingContext/TEXTURE_BINDING_2D
+JavaScript/clconst/WebGLRenderingContext/TEXTURE_BINDING_CUBE_MAP
+JavaScript/clconst/WebGLRenderingContext/TEXTURE_CUBE_MAP
+JavaScript/clconst/WebGLRenderingContext/TEXTURE_CUBE_MAP_NEGATIVE_X
+JavaScript/clconst/WebGLRenderingContext/TEXTURE_CUBE_MAP_NEGATIVE_Y
+JavaScript/clconst/WebGLRenderingContext/TEXTURE_CUBE_MAP_NEGATIVE_Z
+JavaScript/clconst/WebGLRenderingContext/TEXTURE_CUBE_MAP_POSITIVE_X
+JavaScript/clconst/WebGLRenderingContext/TEXTURE_CUBE_MAP_POSITIVE_Y
+JavaScript/clconst/WebGLRenderingContext/TEXTURE_CUBE_MAP_POSITIVE_Z
+JavaScript/clconst/WebGLRenderingContext/TEXTURE_MAG_FILTER
+JavaScript/clconst/WebGLRenderingContext/TEXTURE_MIN_FILTER
+JavaScript/clconst/WebGLRenderingContext/TEXTURE_WRAP_S
+JavaScript/clconst/WebGLRenderingContext/TEXTURE_WRAP_T
+Objective-C/intfm/QCPlugInInputImageSource/textureColorSpace
+Objective-C/intfm/QCPlugInInputImageSource/textureFlipped
+Objective-C/instm/FxTexture/textureId
+Objective-C/instm/NSOpenGLPixelBuffer/textureInternalFormat
+Objective-C/intfm/QCPlugInInputImageSource/textureMatrix
+Objective-C/instm/NSOpenGLPixelBuffer/textureMaxMipMapLevel
+Objective-C/intfm/QCPlugInInputImageSource/textureName
+Objective-C/intfm/QCPlugInInputImageSource/texturePixelsHigh
+Objective-C/intfm/QCPlugInInputImageSource/texturePixelsWide
+Objective-C/intfm/QCPlugInInputImageSource/textureTarget
+Objective-C/instm/NSOpenGLPixelBuffer/textureTarget
+Objective-C/instm/NSTextContainer/textView
+Objective-C/intfm/NSTextViewDelegate/textView:clickedOnCell:inRect:
+Objective-C/intfm/NSTextViewDelegate/textView:clickedOnCell:inRect:atIndex:
+Objective-C/intfm/NSTextViewDelegate/textView:clickedOnLink:
+Objective-C/intfm/NSTextViewDelegate/textView:clickedOnLink:atIndex:
+Objective-C/intfm/NSTextViewDelegate/textView:completions:forPartialWordRange:indexOfSelectedItem:
+Objective-C/intfm/NSTextViewDelegate/textView:didCheckTextInRange:types:options:results:orthography:wordCount:
+Objective-C/intfm/NSTextViewDelegate/textView:doCommandBySelector:
+Objective-C/intfm/NSTextViewDelegate/textView:doubleClickedOnCell:inRect:
+Objective-C/intfm/NSTextViewDelegate/textView:doubleClickedOnCell:inRect:atIndex:
+Objective-C/intfm/NSTextViewDelegate/textView:draggedCell:inRect:event:
+Objective-C/intfm/NSTextViewDelegate/textView:draggedCell:inRect:event:atIndex:
+Objective-C/intfm/NSTextViewDelegate/textView:menu:forEvent:atIndex:
+Objective-C/intfm/NSTextViewDelegate/textView:shouldChangeTextInRange:replacementString:
+Objective-C/intfm/NSTextViewDelegate/textView:shouldChangeTextInRanges:replacementStrings:
+Objective-C/intfm/NSTextViewDelegate/textView:shouldChangeTypingAttributes:toAttributes:
+Objective-C/intfm/NSTextViewDelegate/textView:shouldSetSpellingState:range:
+Objective-C/intfm/NSTextViewDelegate/textView:willChangeSelectionFromCharacterRange:toCharacterRange:
+Objective-C/intfm/NSTextViewDelegate/textView:willChangeSelectionFromCharacterRanges:toCharacterRanges:
+Objective-C/intfm/NSTextViewDelegate/textView:willCheckTextInRange:options:types:
+Objective-C/intfm/NSTextViewDelegate/textView:willDisplayToolTip:forCharacterAtIndex:
+Objective-C/intfm/NSTextViewDelegate/textView:writablePasteboardTypesForCell:atIndex:
+Objective-C/intfm/NSTextViewDelegate/textView:writeCell:atIndex:toPasteboard:type:
+Objective-C/intfm/NSTextViewDelegate/textViewDidChangeSelection:
+Objective-C/intfm/NSTextViewDelegate/textViewDidChangeTypingAttributes:
+Objective-C/instm/NSLayoutManager/textViewForBeginningOfSelection
+Objective-C/clm/NSXMLNode/textWithStringValue:
+C/func/-/tfind
+JavaScript/data/HTMLTableElement/tFoot
+C/func/-/tgamma
+C/func/-/tgammaf
+C/func/-/tgammal
+C/func/-/tgetent
+C/func/-/tgetflag
+C/func/-/tgetnum
+C/func/-/tgetstr
+C/func/-/tgoto
+JavaScript/data/HTMLTableElement/tHead
+Objective-C/instm/NSStatusBar/thickness
+Objective-C/instm/NSRulerMarker/thicknessRequiredInRuler
+JavaScript/data/JavaScriptCallFrame/thisObject
+Objective-C/instm/NSNumberFormatter/thousandSeparator
+C/tag/-/thread_command
+Objective-C/instm/NSThread/threadDictionary
+C++/instm/IOWorkLoop/threadMain
+C++/clm/IOWorkLoop/threadMainContinuation
+Objective-C/instm/NSOperation/threadPriority
+Objective-C/instm/NSThread/threadPriority
+Objective-C/clm/NSThread/threadPriority
+C/func/-/threads
+Objective-C/clm/WebScriptObject/throwException:
+Objective-C/intfm/ApertureExportManager/thumbnailForImageAtIndex:size:
+Objective-C/intfm/ApertureEditManager/thumbnailForVersion:size:
+Objective-C/instm/PDFThumbnailView/thumbnailSize
+Objective-C/intfm/IKImageEditPanelDataSource/thumbnailWithMaximumSize:
+C++/instm/IOSCSIProtocolInterface/TicklePowerManager
+Objective-C/instm/NSSlider/tickMarkPosition
+Objective-C/instm/NSSliderCell/tickMarkPosition
+Objective-C/instm/NSLevelIndicator/tickMarkPosition
+Objective-C/instm/NSLevelIndicatorCell/tickMarkPosition
+Objective-C/instm/NSSlider/tickMarkValueAtIndex:
+Objective-C/instm/NSSliderCell/tickMarkValueAtIndex:
+Objective-C/instm/NSLevelIndicator/tickMarkValueAtIndex:
+Objective-C/instm/NSLevelIndicatorCell/tickMarkValueAtIndex:
+C/func/-/tidyAccessWarningCount
+C/func/-/tidyAttrGetHREF
+C/func/-/tidyAttrGetId
+C/tdef/-/TidyAttrId
+C/func/-/tidyBufAlloc
+C/func/-/tidyBufAppend
+C/func/-/tidyBufAttach
+C/func/-/tidyBufCheckAlloc
+C/func/-/tidyBufClear
+C/func/-/tidyBufDetach
+C/func/-/tidyBufEndOfInput
+C/func/-/tidyBufFree
+C/func/-/tidyBufGetByte
+C/func/-/tidyBufInit
+C/func/-/tidyBufPopByte
+C/func/-/tidyBufPutByte
+C/func/-/tidyBufUngetByte
+C/func/-/tidyCleanAndRepair
+C/tdef/-/TidyConfigCategory
+C/func/-/tidyConfigErrorCount
+C/func/-/tidyCreate
+C/func/-/tidyDetectedGenericXml
+C/func/-/tidyDetectedHtmlVersion
+C/func/-/tidyDetectedXhtml
+C/tdef/-/TidyDoctypeModes
+C/tdef/-/TidyDupAttrModes
+C/tdef/-/TidyEOFFunc
+C/func/-/tidyErrorCount
+C/func/-/tidyErrorSummary
+C/tdef/-/TidyFree
+C/func/-/tidyGeneralInfo
+C/func/-/tidyGetAppData
+C/func/-/tidyGetByte
+C/tdef/-/TidyGetByteFunc
+C/func/-/tidyGetNextOption
+C/func/-/tidyGetOption
+C/func/-/tidyGetOptionByName
+C/func/-/tidyGetOptionList
+C/func/-/tidyGetRoot
+C/func/-/tidyInitSink
+C/func/-/tidyInitSource
+C/func/-/tidyIsEOF
+C/tdef/-/TidyLineEnding
+C/func/-/tidyLoadConfig
+C/func/-/tidyLoadConfigEnc
+C/tdef/-/TidyMalloc
+C/func/-/tidyNodeGetType
+C/tdef/-/TidyNodeType
+C/tdef/-/TidyOptCallback
+C/func/-/tidyOptCopyConfig
+C/func/-/tidyOptDiffThanDefault
+C/func/-/tidyOptDiffThanSnapshot
+C/func/-/tidyOptGetBool
+C/func/-/tidyOptGetCategory
+C/func/-/tidyOptGetCurrPick
+C/func/-/tidyOptGetDeclTagList
+C/func/-/tidyOptGetDefault
+C/func/-/tidyOptGetDefaultBool
+C/func/-/tidyOptGetDefaultInt
+C/func/-/tidyOptGetEncName
+C/func/-/tidyOptGetId
+C/func/-/tidyOptGetIdForName
+C/func/-/tidyOptGetInt
+C/func/-/tidyOptGetName
+C/func/-/tidyOptGetNextDeclTag
+C/func/-/tidyOptGetNextPick
+C/func/-/tidyOptGetPickList
+C/func/-/tidyOptGetType
+C/func/-/tidyOptGetValue
+C/tdef/-/TidyOptionId
+C/tdef/-/TidyOptionType
+C/func/-/tidyOptIsReadOnly
+C/func/-/tidyOptParseValue
+C/func/-/tidyOptResetAllToDefault
+C/func/-/tidyOptResetToDefault
+C/func/-/tidyOptResetToSnapshot
+C/func/-/tidyOptSaveFile
+C/func/-/tidyOptSaveSink
+C/func/-/tidyOptSetBool
+C/func/-/tidyOptSetInt
+C/func/-/tidyOptSetValue
+C/func/-/tidyOptSnapshot
+C/tdef/-/TidyPanic
+C/func/-/tidyParseBuffer
+C/func/-/tidyParseFile
+C/func/-/tidyParseSource
+C/func/-/tidyParseStdin
+C/func/-/tidyParseString
+C/func/-/tidyPutByte
+C/tdef/-/TidyPutByteFunc
+C/tdef/-/TidyRealloc
+C/func/-/tidyReleaseDate
+C/tdef/-/TidyReportFilter
+C/tdef/-/TidyReportLevel
+C/func/-/tidyRunDiagnostics
+C/func/-/tidySaveBuffer
+C/func/-/tidySaveFile
+C/func/-/tidySaveSink
+C/func/-/tidySaveStdout
+C/func/-/tidySaveString
+C/func/-/tidySetAppData
+C/func/-/tidySetCharEncoding
+C/func/-/tidySetErrorBuffer
+C/func/-/tidySetErrorFile
+C/func/-/tidySetErrorSink
+C/func/-/tidySetFreeCall
+C/func/-/tidySetInCharEncoding
+C/func/-/tidySetMallocCall
+C/func/-/tidySetOutCharEncoding
+C/func/-/tidySetPanicCall
+C/func/-/tidySetReallocCall
+C/func/-/tidySetReportFilter
+C/func/-/tidyStatus
+C/tdef/-/TidyTagId
+C/tdef/-/TidyTriState
+C/func/-/tidyUngetByte
+C/tdef/-/TidyUngetByteFunc
+C/func/-/tidyWarningCount
+Objective-C/instm/NSImage/TIFFRepresentation
+Objective-C/instm/NSBitmapImageRep/TIFFRepresentation
+Objective-C/clm/NSBitmapImageRep/TIFFRepresentationOfImageRepsInArray:
+Objective-C/clm/NSBitmapImageRep/TIFFRepresentationOfImageRepsInArray:usingCompression:factor:
+Objective-C/instm/NSImage/TIFFRepresentationUsingCompression:factor:
+Objective-C/instm/NSBitmapImageRep/TIFFRepresentationUsingCompression:factor:
+C/func/-/tigetflag
+C/func/-/tigetnum
+C/func/-/tigetstr
+Objective-C/instm/NSParagraphStyle/tighteningFactorForTruncation
+Objective-C/instm/NSTextView/tightenKerning:
+Objective-C/instm/NSScrollView/tile
+Objective-C/instm/NSBrowser/tile
+Objective-C/instm/NSTableView/tile
+Objective-C/instm/CATiledLayer/tileSize
+Objective-C/instp/CATiledLayer/tileSize
+Objective-C/instm/NSEvent/tilt
+C/func/-/time
+JavaScript/instm/Console/time
+C/func/-/time2posix
+C/tdef/-/TimeBase
+Objective-C/instm/FxHostCapabilities/timeBase
+C/tag/-/TimeBaseRecord
+C/tag/-/TimeCodeDef
+C/tdef/-/TimeCodeDescriptionHandle
+C/tdef/-/TimeCodeDescriptionPtr
+C/tag/-/TimeCodeRecord
+JavaScript/instm/Console/timeEnd
+C/func/-/timegm
+Objective-C/instm/NSDatePicker/timeInterval
+Objective-C/instm/NSDatePickerCell/timeInterval
+Objective-C/instm/NSTimer/timeInterval
+Objective-C/instm/NSDate/timeIntervalSince1970
+Objective-C/instm/NSDate/timeIntervalSinceDate:
+Objective-C/instm/NSDate/timeIntervalSinceNow
+Objective-C/clm/NSDate/timeIntervalSinceReferenceDate
+Objective-C/instm/NSDate/timeIntervalSinceReferenceDate
+Objective-C/intfm/FxTimingAPI/timelineFpsDenominatorForEffect:
+Objective-C/intfm/FxTimingAPI/timelineFpsNumeratorForEffect:
+Objective-C/intfm/FxTimingAPI/timelineTimeFromImageTime:forParmId:forEffect:
+Objective-C/intfm/FxTimingAPI/timelineTimeFromInputATime:forTransition:
+Objective-C/intfm/FxTimingAPI/timelineTimeFromInputBTime:forTransition:
+Objective-C/intfm/FxTimingAPI/timelineTimeFromInputTime:forFilter:
+C/func/-/timelocal
+Objective-C/clm/QCPlugIn/timeMode
+Objective-C/intfm/CAMediaTiming/timeOffset
+Objective-C/intfp/CAMediaTiming/timeOffset
+Objective-C/instm/SBApplication/timeout
+C/func/-/timeout
+C++/clm/IOTimerEventSource/timeout
+JavaScript/clconst/PositionError/TIMEOUT
+JavaScript/clconst/IDBDatabaseException/TIMEOUT_ERR
+Objective-C/instm/NSURLRequest/timeoutInterval
+JavaScript/cl/-/TimeRanges
+C++/clm/IOAudioEngine/timerCallback
+C/tag/-/TimeRecord
+C++/tdef/IOAudioDevice/TimerEvent
+C++/data/IOAudioDevice/timerEventSource
+C++/clm/IOTimerEventSource/timerEventSource
+C++/instm/IOAudioEngine/timerFired
+C++/clm/IOAudioDevice/timerFired
+Objective-C/clm/NSTimer/timerWithTimeInterval:invocation:repeats:
+Objective-C/clm/NSTimer/timerWithTimeInterval:target:selector:userInfo:repeats:
+C/func/-/times
+C/tdef/-/TimeScale
+Objective-C/clm/IMAVSlider/timeSlider
+Objective-C/instm/NSEvent/timestamp
+Objective-C/instp/CLLocation/timestamp
+Objective-C/instm/CLLocation/timestamp
+JavaScript/data/Event/timeStamp
+Objective-C/instm/NSDateFormatter/timeStyle
+C/tdef/-/TimeValue
+C/tdef/-/TimeValue64
+Objective-C/instm/NSDatePicker/timeZone
+Objective-C/instm/NSDateFormatter/timeZone
+Objective-C/instm/NSDatePickerCell/timeZone
+Objective-C/instm/NSTextCheckingResult/timeZone
+Objective-C/instm/NSCalendar/timeZone
+Objective-C/instp/NSTextCheckingResult/timeZone
+C/func/-/timezone
+Objective-C/clm/NSTimeZone/timeZoneDataVersion
+Objective-C/clm/NSTimeZone/timeZoneForSecondsFromGMT:
+Objective-C/clm/NSTimeZone/timeZoneWithAbbreviation:
+Objective-C/clm/NSTimeZone/timeZoneWithName:
+Objective-C/clm/NSTimeZone/timeZoneWithName:data:
+Objective-C/instm/CAAnimation/timingFunction
+Objective-C/instp/CAAnimation/timingFunction
+Objective-C/instm/CAKeyframeAnimation/timingFunctions
+Objective-C/instp/CAKeyframeAnimation/timingFunctions
+C/func/-/TISCopyCurrentASCIICapableKeyboardInputSource
+C/func/-/TISCopyCurrentASCIICapableKeyboardLayoutInputSource
+C/func/-/TISCopyCurrentKeyboardInputSource
+C/func/-/TISCopyCurrentKeyboardLayoutInputSource
+C/func/-/TISCopyInputMethodKeyboardLayoutOverride
+C/func/-/TISCopyInputSourceForLanguage
+C/func/-/TISCreateASCIICapableInputSourceList
+C/func/-/TISCreateInputSourceList
+C/func/-/TISDeselectInputSource
+C/func/-/TISDisableInputSource
+C/func/-/TISEnableInputSource
+C/func/-/TISGetInputSourceProperty
+C/func/-/TISInputSourceGetTypeID
+C/tdef/-/TISInputSourceRef
+C/func/-/TISRegisterInputSource
+C/func/-/TISSelectInputSource
+C/func/-/TISSetInputMethodKeyboardLayoutOverride
+Objective-C/instp/CalCalendarItem/title
+Objective-C/instm/CalCalendarItem/title
+C/econst/-/title
+Objective-C/instm/NSSlider/title
+Objective-C/instm/NSFormCell/title
+Objective-C/instm/NSSliderCell/title
+Objective-C/instm/NSViewController/title
+Objective-C/instm/NSButton/title
+Objective-C/instm/NSStatusItem/title
+Objective-C/instm/CBIdentityPicker/title
+Objective-C/instm/WebHistoryItem/title
+Objective-C/instm/NSBox/title
+Objective-C/instm/NSSavePanel/title
+Objective-C/instp/CalCalendar/title
+Objective-C/instm/CalCalendar/title
+Objective-C/instm/NSButtonCell/title
+Objective-C/instm/NSMenuItem/title
+Objective-C/instp/PSEntry/title
+Objective-C/instp/PSFeed/title
+Objective-C/instp/PSLink/title
+Objective-C/instm/NSWindow/title
+Objective-C/intfm/WebDocumentRepresentation/title
+Objective-C/binding/NSButton/title
+Objective-C/binding/NSBox/title
+Objective-C/binding/NSMenuItem/title
+Objective-C/binding/NSButtonCell/title
+Objective-C/binding/NSPanel/title
+Objective-C/instm/NSCell/title
+Objective-C/instm/NSMenu/title
+Objective-C/binding/NSWindow/title
+JavaScript/data/Document/title
+JavaScript/data/HTMLElement/title
+JavaScript/data/ScriptProfile/title
+JavaScript/data/StyleSheet/title
+JavaScript/data/SVGStyleElement/title
+Objective-C/instm/NSFormCell/titleAlignment
+Objective-C/clm/NSFont/titleBarFontOfSize:
+Objective-C/instm/NSFormCell/titleBaseWritingDirection
+Objective-C/instm/NSSlider/titleCell
+Objective-C/instm/NSSliderCell/titleCell
+Objective-C/instm/NSBox/titleCell
+Objective-C/instm/NSSlider/titleColor
+Objective-C/instm/NSSliderCell/titleColor
+Objective-C/instm/NSSlider/titleFont
+Objective-C/instm/NSSliderCell/titleFont
+Objective-C/instm/NSFormCell/titleFont
+Objective-C/instm/NSBox/titleFont
+Objective-C/instp/PSEntry/titleForDisplay
+Objective-C/instm/NSObject/titleForPerson:identifier:
+Objective-C/instm/IKImageBrowserCell/titleFrame
+Objective-C/instm/NSBrowser/titleFrameOfColumn:
+Objective-C/instm/NSBrowser/titleHeight
+Objective-C/instm/NSBrowser/titleOfColumn:
+Objective-C/instm/NSPopUpButtonCell/titleOfSelectedItem
+Objective-C/instm/NSPopUpButton/titleOfSelectedItem
+Objective-C/instm/NSBox/titlePosition
+Objective-C/instm/NSBox/titleRect
+Objective-C/instm/NSMenuItemCell/titleRectForBounds:
+Objective-C/instm/NSCell/titleRectForBounds:
+Objective-C/instm/NSFormCell/titleWidth
+Objective-C/instm/NSMenuItemCell/titleWidth
+Objective-C/instm/NSFormCell/titleWidth:
+C/func/-/Tk_3DBorderColor
+C/func/-/Tk_3DBorderGC
+C/func/-/Tk_3DHorizontalBevel
+C/func/-/Tk_3DVerticalBevel
+C/func/-/Tk_AddOption
+C/func/-/Tk_Alloc3DBorderFromObj
+C/func/-/Tk_AllocBitmapFromObj
+C/func/-/Tk_AllocColorFromObj
+C/func/-/Tk_AllocCursorFromObj
+C/func/-/Tk_AllocFontFromObj
+C/func/-/Tk_AttachHWND
+C/func/-/Tk_Attributes
+C/func/-/Tk_BindEvent
+C/func/-/Tk_CanvasDrawableCoords
+C/func/-/Tk_CanvasEventuallyRedraw
+C/func/-/Tk_CanvasGetCoord
+C/func/-/Tk_CanvasGetTextInfo
+C/func/-/Tk_CanvasPsBitmap
+C/func/-/Tk_CanvasPsColor
+C/func/-/Tk_CanvasPsFont
+C/func/-/Tk_CanvasPsPath
+C/func/-/Tk_CanvasPsStipple
+C/func/-/Tk_CanvasPsY
+C/func/-/Tk_CanvasSetStippleOrigin
+C/func/-/Tk_CanvasTagsOption
+C/func/-/Tk_CanvasTextInfo
+C/func/-/Tk_CanvasTkwin
+C/func/-/Tk_CanvasWindowCoords
+C/func/-/Tk_Changes
+C/func/-/Tk_ChangeWindowAttributes
+C/func/-/Tk_CharBbox
+C/func/-/Tk_Class
+C/func/-/Tk_ClearSelection
+C/func/-/Tk_ClipboardAppend
+C/func/-/Tk_ClipboardClear
+C/func/-/Tk_CollapseMotionEvents
+C/func/-/Tk_Colormap
+C/func/-/Tk_ComputeTextLayout
+C/func/-/Tk_ConfigureInfo
+C/func/-/Tk_ConfigureValue
+C/func/-/Tk_ConfigureWidget
+C/func/-/Tk_ConfigureWindow
+C/func/-/Tk_CoordsToWindow
+C/func/-/Tk_CreateBinding
+C/func/-/Tk_CreateBindingTable
+C/func/-/Tk_CreateClientMessageHandler
+C/func/-/Tk_CreateErrorHandler
+C/func/-/Tk_CreateEventHandler
+C/func/-/Tk_CreateGenericHandler
+C/func/-/Tk_CreateImageType
+C/func/-/Tk_CreateItemType
+C/func/-/Tk_CreateOptionTable
+C/func/-/Tk_CreatePhotoImageFormat
+C/func/-/Tk_CreateSelHandler
+C/func/-/Tk_CreateWindow
+C/func/-/Tk_CreateWindowFromPath
+C/func/-/Tk_DefineBitmap
+C/func/-/Tk_DefineCursor
+C/func/-/Tk_DeleteAllBindings
+C/func/-/Tk_DeleteBinding
+C/func/-/Tk_DeleteBindingTable
+C/func/-/Tk_DeleteClientMessageHandler
+C/func/-/Tk_DeleteErrorHandler
+C/func/-/Tk_DeleteEventHandler
+C/func/-/Tk_DeleteGenericHandler
+C/func/-/Tk_DeleteImage
+C/func/-/Tk_DeleteOptionTable
+C/func/-/Tk_DeleteSelHandler
+C/func/-/Tk_Depth
+C/func/-/Tk_DestroyWindow
+C/func/-/Tk_Display
+C/func/-/Tk_DisplayName
+C/func/-/Tk_DistanceToTextLayout
+C/func/-/Tk_Draw3DPolygon
+C/func/-/Tk_Draw3DRectangle
+C/func/-/Tk_DrawChars
+C/func/-/Tk_DrawFocusHighlight
+C/func/-/Tk_DrawTextLayout
+C/func/-/Tk_Fill3DPolygon
+C/func/-/Tk_Fill3DRectangle
+C/func/-/Tk_FindPhoto
+C/func/-/Tk_FontId
+C/func/-/Tk_Free3DBorder
+C/func/-/Tk_Free3DBorderFromObj
+C/func/-/Tk_FreeBitmap
+C/func/-/Tk_FreeBitmapFromObj
+C/func/-/Tk_FreeColor
+C/func/-/Tk_FreeColorFromObj
+C/func/-/Tk_FreeColormap
+C/func/-/Tk_FreeConfigOptions
+C/func/-/Tk_FreeCursor
+C/func/-/Tk_FreeCursorFromObj
+C/func/-/Tk_FreeFont
+C/func/-/Tk_FreeFontFromObj
+C/func/-/Tk_FreeGC
+C/func/-/Tk_FreeImage
+C/func/-/Tk_FreeOptions
+C/func/-/Tk_FreePixmap
+C/func/-/Tk_FreeSavedOptions
+C/func/-/Tk_FreeTextLayout
+C/func/-/Tk_FreeXId
+C/func/-/Tk_GCForColor
+C/func/-/Tk_GeometryRequest
+C/func/-/Tk_Get3DBorder
+C/func/-/Tk_Get3DBorderFromObj
+C/func/-/Tk_GetAllBindings
+C/func/-/Tk_GetAnchor
+C/func/-/Tk_GetAnchorFromObj
+C/func/-/Tk_GetAtomName
+C/func/-/Tk_GetBinding
+C/func/-/Tk_GetBitmap
+C/func/-/Tk_GetBitmapFromObj
+C/func/-/Tk_GetCapStyle
+C/func/-/Tk_GetColor
+C/func/-/Tk_GetColorByValue
+C/func/-/Tk_GetColorFromObj
+C/func/-/Tk_GetColormap
+C/func/-/Tk_GetCursor
+C/func/-/Tk_GetCursorFromData
+C/func/-/Tk_GetCursorFromObj
+C/func/-/Tk_GetDash
+C/func/-/Tk_GetFont
+C/func/-/Tk_GetFontFromObj
+C/func/-/Tk_GetFontMetrics
+C/func/-/Tk_GetGC
+C/func/-/Tk_GetHINSTANCE
+C/func/-/Tk_GetHWND
+C/func/-/Tk_GetImage
+C/func/-/Tk_GetImageMasterData
+C/func/-/Tk_GetItemTypes
+C/func/-/Tk_GetJoinStyle
+C/func/-/Tk_GetJustify
+C/func/-/Tk_GetJustifyFromObj
+C/func/-/Tk_GetMMFromObj
+C/func/-/Tk_GetNumMainWindows
+C/func/-/Tk_GetOption
+C/func/-/Tk_GetOptionInfo
+C/func/-/Tk_GetOptionValue
+C/func/-/Tk_GetPixels
+C/func/-/Tk_GetPixelsFromObj
+C/func/-/Tk_GetPixmap
+C/func/-/Tk_GetRelief
+C/func/-/Tk_GetReliefFromObj
+C/func/-/Tk_GetRootCoords
+C/func/-/Tk_GetScreenMM
+C/func/-/Tk_GetScrollInfo
+C/func/-/Tk_GetScrollInfoObj
+C/func/-/Tk_GetSelection
+C/func/-/Tk_GetUid
+C/func/-/Tk_GetUserInactiveTime
+C/func/-/Tk_GetVisual
+C/func/-/Tk_GetVRootGeometry
+C/func/-/Tk_Grab
+C/func/-/Tk_HandleEvent
+C/func/-/Tk_Height
+C/func/-/Tk_HWNDToWindow
+C/func/-/Tk_IdToWindow
+C/func/-/Tk_ImageChanged
+C/func/-/Tk_Init
+C/func/-/Tk_InitConsoleChannels
+C/func/-/Tk_InitImageArgs
+C/func/-/Tk_InitOptions
+C/func/-/Tk_InitStubs
+C/func/-/Tk_InternalBorderBottom
+C/func/-/Tk_InternalBorderLeft
+C/func/-/Tk_InternalBorderRight
+C/func/-/Tk_InternalBorderTop
+C/func/-/Tk_InternAtom
+C/func/-/Tk_Interp
+C/func/-/Tk_IntersectTextLayout
+C/func/-/Tk_IsContainer
+C/func/-/Tk_IsEmbedded
+C/func/-/Tk_IsMapped
+C/func/-/Tk_IsTopLevel
+C/func/-/Tk_Main
+C/func/-/Tk_MainLoop
+C/func/-/Tk_MaintainGeometry
+C/func/-/Tk_MainWindow
+C/func/-/Tk_MakeWindowExist
+C/func/-/Tk_ManageGeometry
+C/func/-/Tk_MapWindow
+C/func/-/Tk_MeasureChars
+C/func/-/Tk_MinReqHeight
+C/func/-/Tk_MinReqWidth
+C/func/-/Tk_MoveResizeWindow
+C/func/-/Tk_MoveToplevelWindow
+C/func/-/Tk_MoveWindow
+C/func/-/Tk_Name
+C/func/-/Tk_NameOf3DBorder
+C/func/-/Tk_NameOfAnchor
+C/func/-/Tk_NameOfBitmap
+C/func/-/Tk_NameOfCapStyle
+C/func/-/Tk_NameOfColor
+C/func/-/Tk_NameOfCursor
+C/func/-/Tk_NameOfFont
+C/func/-/Tk_NameOfImage
+C/func/-/Tk_NameOfJoinStyle
+C/func/-/Tk_NameOfJustify
+C/func/-/Tk_NameOfRelief
+C/func/-/Tk_NameToWindow
+C/func/-/Tk_Offset
+C/func/-/Tk_OwnSelection
+C/func/-/Tk_Parent
+C/func/-/Tk_ParseArgv
+C/func/-/Tk_PathName
+C/func/-/Tk_PhotoBlank
+C/func/-/Tk_PhotoExpand
+C/func/-/Tk_PhotoGetImage
+C/func/-/Tk_PhotoGetSize
+C/func/-/Tk_PhotoPutBlock
+C/func/-/Tk_PhotoPutZoomedBlock
+C/func/-/Tk_PhotoSetSize
+C/func/-/Tk_PointToChar
+C/func/-/Tk_PostscriptFontName
+C/func/-/Tk_PreserveColormap
+C/func/-/Tk_QueueWindowEvent
+C/func/-/Tk_RedrawImage
+C/func/-/Tk_ReqHeight
+C/func/-/Tk_ReqWidth
+C/func/-/Tk_ResetUserInactiveTime
+C/func/-/Tk_ResizeWindow
+C/func/-/Tk_RestackWindow
+C/func/-/Tk_RestoreSavedOptions
+C/func/-/Tk_RestrictEvents
+C/func/-/Tk_SafeInit
+C/func/-/Tk_Screen
+C/func/-/Tk_ScreenNumber
+C/func/-/Tk_SetAppName
+C/func/-/Tk_SetBackgroundFromBorder
+C/func/-/Tk_SetCaretPos
+C/func/-/Tk_SetClass
+C/func/-/Tk_SetClassProcs
+C/func/-/Tk_SetGrid
+C/func/-/Tk_SetInternalBorder
+C/func/-/Tk_SetInternalBorderEx
+C/func/-/Tk_SetMinimumRequestSize
+C/func/-/Tk_SetOptions
+C/func/-/Tk_SetWindowBackground
+C/func/-/Tk_SetWindowBackgroundPixmap
+C/func/-/Tk_SetWindowBorder
+C/func/-/Tk_SetWindowBorderPixmap
+C/func/-/Tk_SetWindowBorderWidth
+C/func/-/Tk_SetWindowColormap
+C/func/-/Tk_SetWindowVisual
+C/func/-/Tk_SizeOfBitmap
+C/func/-/Tk_SizeOfImage
+C/func/-/Tk_StrictMotif
+C/func/-/Tk_TextLayoutToPostscript
+C/func/-/Tk_TextWidth
+C/func/-/Tk_Uid
+C/func/-/Tk_UndefineCursor
+C/func/-/Tk_UnderlineChars
+C/func/-/Tk_UnderlineTextLayout
+C/func/-/Tk_Ungrab
+C/func/-/Tk_UnmaintainGeometry
+C/func/-/Tk_UnmapWindow
+C/func/-/Tk_UnsetGrid
+C/func/-/Tk_Visual
+C/func/-/Tk_Width
+C/func/-/Tk_WindowId
+C/func/-/Tk_X
+C/func/-/Tk_Y
+C/econst/-/tmfoErr
+C/func/-/tmp_dh_callback
+C/func/-/tmp_rsa_callback
+C/func/-/tmpfile
+C/func/-/tmpnam
+C/econst/-/tmwdoErr
+C/func/-/toascii
+C/func/-/toascii_l
+JavaScript/instm/HTMLCanvasElement/toDataURL
+JavaScript/data/MouseEvent/toElement
+Objective-C/instm/NSDrawer/toggle:
+Objective-C/instm/NSTextView/toggleAutomaticDashSubstitution:
+Objective-C/instm/NSTextView/toggleAutomaticDataDetection:
+Objective-C/instm/NSTextView/toggleAutomaticLinkDetection:
+Objective-C/instm/NSTextView/toggleAutomaticQuoteSubstitution:
+Objective-C/instm/NSTextView/toggleAutomaticSpellingCorrection:
+Objective-C/instm/NSTextView/toggleAutomaticTextReplacement:
+Objective-C/instm/NSTextView/toggleBaseWritingDirection:
+Objective-C/instm/NSTextView/toggleContinuousSpellChecking:
+Objective-C/instm/WebView/toggleContinuousSpellChecking:
+Objective-C/instm/NSTextView/toggleGrammarChecking:
+Objective-C/instm/NSText/toggleRuler:
+Objective-C/instm/NSTextView/toggleSmartInsertDelete:
+Objective-C/instm/WebView/toggleSmartInsertDelete:
+JavaScript/instm/InspectorBackend/toggleStyleEnabled
+Objective-C/instm/NSWindow/toggleToolbarShown:
+Objective-C/instm/NSTextView/toggleTraditionalCharacterShape:
+C/func/-/tok_end
+C/func/-/tok_init
+C/func/-/tok_line
+C/func/-/tok_reset
+C/func/-/tok_str
+Objective-C/intfm/NSTokenFieldDelegate/tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:
+Objective-C/intfm/NSTokenFieldDelegate/tokenField:displayStringForRepresentedObject:
+Objective-C/intfm/NSTokenFieldDelegate/tokenField:editingStringForRepresentedObject:
+Objective-C/intfm/NSTokenFieldDelegate/tokenField:hasMenuForRepresentedObject:
+Objective-C/intfm/NSTokenFieldDelegate/tokenField:menuForRepresentedObject:
+Objective-C/intfm/NSTokenFieldDelegate/tokenField:readFromPasteboard:
+Objective-C/intfm/NSTokenFieldDelegate/tokenField:representedObjectForEditingString:
+Objective-C/intfm/NSTokenFieldDelegate/tokenField:shouldAddObjects:atIndex:
+Objective-C/intfm/NSTokenFieldDelegate/tokenField:styleForRepresentedObject:
+Objective-C/intfm/NSTokenFieldDelegate/tokenField:writeRepresentedObjects:toPasteboard:
+Objective-C/intfm/NSTokenFieldCellDelegate/tokenFieldCell:completionsForSubstring:indexOfToken:indexOfSelectedItem:
+Objective-C/intfm/NSTokenFieldCellDelegate/tokenFieldCell:displayStringForRepresentedObject:
+Objective-C/intfm/NSTokenFieldCellDelegate/tokenFieldCell:editingStringForRepresentedObject:
+Objective-C/intfm/NSTokenFieldCellDelegate/tokenFieldCell:hasMenuForRepresentedObject:
+Objective-C/intfm/NSTokenFieldCellDelegate/tokenFieldCell:menuForRepresentedObject:
+Objective-C/intfm/NSTokenFieldCellDelegate/tokenFieldCell:readFromPasteboard:
+Objective-C/intfm/NSTokenFieldCellDelegate/tokenFieldCell:representedObjectForEditingString:
+Objective-C/intfm/NSTokenFieldCellDelegate/tokenFieldCell:shouldAddObjects:atIndex:
+Objective-C/intfm/NSTokenFieldCellDelegate/tokenFieldCell:styleForRepresentedObject:
+Objective-C/intfm/NSTokenFieldCellDelegate/tokenFieldCell:writeRepresentedObjects:toPasteboard:
+Objective-C/instm/NSTokenFieldCell/tokenizingCharacterSet
+Objective-C/instm/NSTokenField/tokenizingCharacterSet
+Objective-C/instm/NSTokenFieldCell/tokenStyle
+Objective-C/instm/NSTokenField/tokenStyle
+C/func/-/tolower
+C/func/-/tolower_l
+Objective-C/instm/NSClassDescription/toManyRelationshipKeys
+Objective-C/instm/NSObject/toManyRelationshipKeys
+C/tag/-/ToneDescription
+Objective-C/instm/NSToolbarItem/toolbar
+Objective-C/instm/NSWindow/toolbar
+JavaScript/data/DOMWindow/toolbar
+Objective-C/intfm/NSToolbarDelegate/toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:
+Objective-C/intfm/NSToolbarDelegate/toolbarAllowedItemIdentifiers:
+Objective-C/intfm/NSToolbarDelegate/toolbarDefaultItemIdentifiers:
+Objective-C/intfm/NSToolbarDelegate/toolbarDidRemoveItem:
+Objective-C/intfm/NSToolbarDelegate/toolbarSelectableItemIdentifiers:
+Objective-C/intfm/NSToolbarDelegate/toolbarWillAddItem:
+JavaScript/data/ValidityState/tooLong
+Objective-C/instm/NSToolbarItem/toolTip
+Objective-C/instm/NSStatusItem/toolTip
+Objective-C/instm/PDFAnnotation/toolTip
+Objective-C/instm/NSMenuItem/toolTip
+Objective-C/instm/NSTabViewItem/toolTip
+Objective-C/instm/NSView/toolTip
+Objective-C/binding/NSComboBox/toolTip
+Objective-C/binding/NSForm/toolTip
+Objective-C/binding/NSBrowser/toolTip
+Objective-C/binding/NSImageView/toolTip
+Objective-C/binding/NSMatrix/toolTip
+Objective-C/binding/NSButton/toolTip
+Objective-C/binding/NSBox/toolTip
+Objective-C/binding/NSDatePicker/toolTip
+Objective-C/binding/AMPathPopUpButton/toolTip
+Objective-C/binding/NSCollectionView/toolTip
+Objective-C/binding/NSMovieView/toolTip
+Objective-C/binding/NSColorWell/toolTip
+Objective-C/binding/NSLevelIndicator/toolTip
+Objective-C/binding/NSTokenField/toolTip
+Objective-C/binding/NSPredicateEditor/toolTip
+Objective-C/binding/NSSegmentedControl/toolTip
+Objective-C/binding/QCView/toolTip
+Objective-C/binding/NSPathControl/toolTip
+Objective-C/binding/NSPopUpButton/toolTip
+Objective-C/binding/NSTextView/toolTip
+Objective-C/binding/NSTabView/toolTip
+Objective-C/binding/NSScrollView/toolTip
+Objective-C/binding/NSSecureTextField/toolTip
+Objective-C/binding/NSSplitView/toolTip
+Objective-C/binding/NSSlider/toolTip
+Objective-C/binding/NSView/toolTip
+Objective-C/binding/QTMovieView/toolTip
+Objective-C/binding/NSStepper/toolTip
+Objective-C/binding/NSTextField/toolTip
+Objective-C/binding/NSOutlineView/toolTip
+Objective-C/binding/NSSearchField/toolTip
+Objective-C/binding/PDFThumbnailView/toolTip
+Objective-C/binding/NSTableView/toolTip
+Objective-C/binding/NSProgressIndicator/toolTip
+Objective-C/instm/NSMatrix/toolTipForCell:
+Objective-C/instm/NSSegmentedCell/toolTipForSegment:
+Objective-C/clm/NSFont/toolTipsFontOfSize:
+Objective-C/instm/NSClassDescription/toOneRelationshipKeys
+Objective-C/instm/NSObject/toOneRelationshipKeys
+JavaScript/data/ClientRect/top
+JavaScript/data/DOMWindow/top
+JavaScript/data/Rect/top
+Objective-C/instm/NSScriptExecutionContext/topLevelObject
+Objective-C/instm/IBDocument/topLevelObjects
+Objective-C/instm/NSPrintInfo/topMargin
+JavaScript/instm/DOMSelection/toString
+JavaScript/instm/DOMCoreException/toString
+JavaScript/instm/DOMWindow/toString
+JavaScript/instm/HTMLAnchorElement/toString
+JavaScript/instm/EventException/toString
+JavaScript/instm/Range/toString
+JavaScript/instm/RangeException/toString
+JavaScript/instm/SVGException/toString
+JavaScript/instm/window/toString
+JavaScript/instm/WebKitCSSMatrix/toString
+JavaScript/instm/WorkerLocation/toString
+JavaScript/instm/XMLHttpRequestException/toString
+JavaScript/instm/XPathException/toString
+JavaScript/data/ProgressEvent/total
+Objective-C/instm/NSCache/totalCostLimit
+JavaScript/data/XMLHttpRequestProgressEvent/totalSize
+JavaScript/data/ScriptProfileNode/totalTime
+JavaScript/cl/-/Touch
+JavaScript/data/TouchEvent/touches
+Objective-C/instm/NSResponder/touchesBeganWithEvent:
+Objective-C/instm/NSResponder/touchesCancelledWithEvent:
+Objective-C/instm/NSResponder/touchesEndedWithEvent:
+Objective-C/instm/NSEvent/touchesMatchingPhase:inView:
+Objective-C/instm/NSResponder/touchesMovedWithEvent:
+JavaScript/data/DOMWindow/TouchEvent
+JavaScript/cl/-/TouchEvent
+C/func/-/touchline
+JavaScript/cl/-/TouchList
+C/func/-/touchwin
+C/func/-/toupper
+C/func/-/toupper_l
+Objective-C/instp/CABasicAnimation/toValue
+Objective-C/instm/CABasicAnimation/toValue
+C/func/-/towctrans
+C/func/-/towctrans_l
+C/func/-/towlower
+C/func/-/towlower_l
+C/func/-/towupper
+C/func/-/towupper_l
+C/func/-/tparm
+C/func/-/tputs
+C/func/-/trace
+JavaScript/instm/Console/trace
+C/tdef/-/Track
+Objective-C/instm/QTMedia/track
+Objective-C/instm/QTTrack/trackAttributes
+Objective-C/instm/DRCDTextBlock/trackDictionaries
+C/tdef/-/TrackEditState
+C/tag/-/TrackEditStateRecord
+Objective-C/clm/DRTrack(AudioContentCreation)/trackForAudioFile:
+Objective-C/clm/DRTrack(AudioContentCreation)/trackForAudioOfLength:producer:
+Objective-C/clm/DRTrack(DataContentCreation)/trackForRootFolder:
+Objective-C/instm/NSEvent/trackingArea
+Objective-C/instm/NSView/trackingAreas
+Objective-C/instm/NSSegmentedCell/trackingMode
+Objective-C/instm/NSEvent/trackingNumber
+Objective-C/instm/NSScroller/trackKnob:
+Objective-C/instm/NSRulerView/trackMarker:withMouseEvent:
+Objective-C/instm/NSRulerMarker/trackMouse:adding:
+Objective-C/intfm/NSTextAttachmentCell/trackMouse:inRect:ofView:atCharacterIndex:untilMouseUp:
+Objective-C/intfm/NSTextAttachmentCell/trackMouse:inRect:ofView:untilMouseUp:
+Objective-C/instm/NSCell/trackMouse:inRect:ofView:untilMouseUp:
+C/tag/-/TrackRecord
+Objective-C/instm/NSSliderCell/trackRect
+Objective-C/instm/QTMovie/tracks
+Objective-C/instm/NSScroller/trackScrollButtons:
+Objective-C/instm/QTMovie/tracksOfMediaType:
+C/func/-/TrackTimeToMediaDisplayTime
+C/func/-/TrackTimeToMediaTime
+C/tdef/-/TrackTransferProc
+C/tdef/-/TrackTransferUPP
+Objective-C/instm/NSMenuView/trackWithEvent:
+Objective-C/clm/QTTrack/trackWithQuickTimeTrack:error:
+Objective-C/instm/NSDrawer/trailingOffset
+Objective-C/instm/NSFontManager/traitsOfFont:
+JavaScript/instm/DatabaseSync/transaction
+JavaScript/instm/Database/transaction
+Objective-C/instm/NSAppleEventDescriptor/transactionID
+Objective-C/instm/IKScannerDeviceView/transferMode
+Objective-C/instp/IKScannerDeviceView/transferMode
+Objective-C/instm/IKCameraDeviceView/transferMode
+Objective-C/instp/IKCameraDeviceView/transferMode
+Objective-C/clm/NSAffineTransform/transform
+Objective-C/instp/CALayer/transform
+Objective-C/instm/CALayer/transform
+JavaScript/instm/CanvasRenderingContext2D/transform
+JavaScript/data/SVGTransformable/transform
+JavaScript/data/SVGViewSpec/transform
+Objective-C/instm/NSAffineTransform/transformBezierPath:
+Objective-C/instm/CIFilterShape/transformBy:interior:
+Objective-C/instm/PDFPage/transformContextForBox:
+Objective-C/instm/NSValueTransformer/transformedValue:
+Objective-C/clm/NSValueTransformer/transformedValueClass
+C/func/-/TransformFixedPoints
+C/func/-/TransformFixedRect
+Objective-C/instm/NSAffineTransform/transformPoint:
+C/func/-/TransformPoints
+C/func/-/TransformProcessType
+C/func/-/TransformRect
+C/func/-/TransformRgn
+Objective-C/instm/NSAffineTransform/transformSize:
+JavaScript/data/SVGViewSpec/transformString
+Objective-C/instm/NSAffineTransform/transformStruct
+JavaScript/instm/XSLTProcessor/transformToDocument
+JavaScript/instm/XSLTProcessor/transformToFragment
+Objective-C/instm/NSBezierPath/transformUsingAffineTransform:
+JavaScript/clconst/IDBDatabaseException/TRANSIENT_ERR
+JavaScript/instm/CanvasRenderingContext2D/translate
+JavaScript/instm/SVGMatrix/translate
+JavaScript/instm/WebKitCSSMatrix/translate
+C/func/-/TranslateMatrix
+Objective-C/instm/NSView/translateOriginToPoint:
+Objective-C/instm/NSView/translateRectsNeedingDisplayInRect:by:
+Objective-C/instm/NSAffineTransform/translateXBy:yBy:
+C/econst/-/transparent
+Objective-C/binding/NSBox/transparent
+Objective-C/instm/NSResponder/transpose:
+Objective-C/instm/NSResponder/transposeWords:
+Objective-C/instm/DRDevice(StatusConvenience)/trayIsOpen
+Objective-C/instm/NSSavePanel/treatsFilePackagesAsDirectories
+C/tdef/-/tRecordEntry
+C/tdef/-/tRecordEntryPtr
+C/tdef/-/tRecordReference
+Objective-C/clm/NSTreeNode/treeNodeWithRepresentedObject:
+JavaScript/cl/-/TreeWalker
+JavaScript/clconst/WebGLRenderingContext/TRIANGLE_FAN
+JavaScript/clconst/WebGLRenderingContext/TRIANGLE_STRIP
+JavaScript/clconst/WebGLRenderingContext/TRIANGLES
+Objective-C/instm/CalAlarm/triggerDateRelativeTo:
+Objective-C/instm/QTMovieView/trim:
+C/func/-/TrimImage
+JavaScript/clconst/WebGLRenderingContext/TRUE
+C/func/-/trunc
+C/func/-/truncate
+Objective-C/instm/NSFileHandle/truncateFileAtOffset:
+C/func/-/TruncateForTextToUnicode
+C/func/-/TruncateForUnicodeToText
+Objective-C/instm/NSCell/truncatesLastVisibleLine
+Objective-C/instp/CATextLayer/truncationMode
+Objective-C/instm/CATextLayer/truncationMode
+C/func/-/truncf
+C/func/-/truncl
+Objective-C/instm/NSConditionLock/tryLock
+Objective-C/instm/NSDistributedLock/tryLock
+Objective-C/instm/NSRecursiveLock/tryLock
+Objective-C/instm/NSLock/tryLock
+Objective-C/instm/NSPersistentStoreCoordinator/tryLock
+Objective-C/instm/NSManagedObjectContext/tryLock
+Objective-C/instm/NSConditionLock/tryLockWhenCondition:
+Objective-C/instm/NSWindow/tryToPerform:with:
+Objective-C/instm/NSResponder/tryToPerform:with:
+Objective-C/instm/NSApplication/tryToPerform:with:
+C/func/-/tsearch
+C/func/-/Ttk_AddPadding
+C/func/-/Ttk_AnchorBox
+C/func/-/Ttk_BoxContains
+C/func/-/Ttk_CreateTheme
+C/func/-/Ttk_ExpandBox
+C/func/-/Ttk_GetBorderFromObj
+C/func/-/Ttk_GetCurrentTheme
+C/func/-/Ttk_GetDefaultTheme
+C/func/-/Ttk_GetPaddingFromObj
+C/func/-/Ttk_GetStickyFromObj
+C/func/-/Ttk_GetTheme
+C/func/-/Ttk_MakeBox
+C/func/-/Ttk_MakePadding
+C/func/-/Ttk_PackBox
+C/func/-/Ttk_PadBox
+C/func/-/Ttk_PlaceBox
+C/func/-/Ttk_RelievePadding
+C/func/-/Ttk_StickBox
+C/func/-/Ttk_UniformPadding
+C/func/-/ttyname
+C/func/-/ttyslot
+Objective-C/instm/NSTextView/turnOffKerning:
+Objective-C/instm/NSTextView/turnOffLigatures:
+C++/instm/IOFWAsyncStreamListener/TurnOffNotification
+C++/instm/IOFWAsyncStreamListener/TurnOnNotification
+C/func/-/twalk
+C/tdef/-/TweenerComponent
+C/func/-/TweenerDoTween
+C/func/-/TweenerInitialize
+C/func/-/TweenerReset
+C/tag/-/TweenRecord
+Objective-C/instm/NSDateFormatter/twoDigitStartDate
+C/tag/-/twolevel_hint
+C/tag/-/twolevel_hints_command
+Objective-C/instp/CWInterface/txPower
+Objective-C/instp/CWInterface/txRate
+C/func/-/TXTRecordContainsKey
+C/func/-/TXTRecordCreate
+Objective-C/instm/NSNetService/TXTRecordData
+C/func/-/TXTRecordDeallocate
+C/func/-/TXTRecordGetBytesPtr
+C/func/-/TXTRecordGetCount
+C/func/-/TXTRecordGetItemAtIndex
+C/func/-/TXTRecordGetLength
+C/func/-/TXTRecordGetValuePtr
+C/tdef/-/TXTRecordRef
+C/func/-/TXTRecordRemoveValue
+C/func/-/TXTRecordSetValue
+Objective-C/instm/NSPrinter/type
+Objective-C/instm/PDFAction/type
+Objective-C/instm/PDFAnnotation/type
+Objective-C/instp/CATransition/type
+Objective-C/instm/CATransition/type
+Objective-C/instm/ISyncChange/type
+Objective-C/instp/CalCalendar/type
+Objective-C/instm/CalCalendar/type
+Objective-C/instp/CAGradientLayer/type
+Objective-C/instm/CAGradientLayer/type
+Objective-C/instm/NSPersistentStore/type
+Objective-C/instm/NSNetService/type
+Objective-C/instm/XGFile/type
+Objective-C/instm/NSEvent/type
+Objective-C/instm/NSCell/type
+JavaScript/data/CSSRule/type
+JavaScript/data/DOMSelection/type
+JavaScript/data/DataGridColumn/type
+JavaScript/data/HTMLScriptElement/type
+JavaScript/data/HTMLStyleElement/type
+JavaScript/data/HTMLAnchorElement/type
+JavaScript/data/HTMLSourceElement/type
+JavaScript/data/HTMLLIElement/type
+JavaScript/data/HTMLUListElement/type
+JavaScript/data/HTMLSelectElement/type
+JavaScript/data/HTMLEmbedElement/type
+JavaScript/data/HTMLButtonElement/type
+JavaScript/data/HTMLObjectElement/type
+JavaScript/data/HTMLTextAreaElement/type
+JavaScript/data/HTMLInputElement/type
+JavaScript/data/HTMLDataGridColElement/type
+JavaScript/data/HTMLParamElement/type
+JavaScript/data/Event/type
+JavaScript/data/HTMLLinkElement/type
+JavaScript/data/File/type
+JavaScript/data/HTMLOListElement/type
+JavaScript/data/MimeType/type
+JavaScript/data/StyleMedia/type
+JavaScript/data/JavaScriptCallFrame/type
+JavaScript/data/SVGComponentTransferFunctionElement/type
+JavaScript/data/StyleSheet/type
+JavaScript/data/SVGFEColorMatrixElement/type
+JavaScript/data/SVGFETurbulenceElement/type
+JavaScript/data/SVGTransform/type
+JavaScript/data/SVGScriptElement/type
+JavaScript/data/WebGLActiveInfo/type
+JavaScript/data/SVGStyleElement/type
+Objective-C/instm/NSWorkspace/type:conformsToType:
+JavaScript/clconst/XPathException/TYPE_ERR
+JavaScript/clconst/DOMCoreException/TYPE_MISMATCH_ERR
+C/func/-/typeahead
+Objective-C/instm/NSAppleEventDescriptor/typeCodeValue
+Objective-C/instm/NSScriptCommandDescription/typeForArgumentWithName:
+Objective-C/instm/NSDocumentController/typeForContentsOfURL:error:
+Objective-C/instm/NSScriptClassDescription/typeForKey:
+Objective-C/instm/NSDocumentController/typeFromFileExtension:
+JavaScript/data/ValidityState/typeMismatch
+Objective-C/instm/NSWorkspace/typeOfFile:error:
+Objective-C/clm/ABPerson/typeOfProperty:
+Objective-C/clm/ABGroup/typeOfProperty:
+Objective-C/instm/NSPasteboardItem/types
+Objective-C/instm/NSPasteboard/types
+JavaScript/data/Clipboard/types
+Objective-C/instm/NSLayoutManager/typesetter
+Objective-C/instm/NSATSTypesetter/typesetterBehavior
+Objective-C/instm/NSLayoutManager/typesetterBehavior
+Objective-C/instm/NSTypesetter/typesetterBehavior
+Objective-C/clm/NSPasteboard/typesFilterableTo:
+C/econst/-/typeSRRecognizer
+C/econst/-/typeSRSpeechResult
+Objective-C/instm/NSTextView/typingAttributes
+Objective-C/instm/WebView/typingStyle
+C/func/-/tzset
+C/func/-/tzsetwall
+C/func/-/ualarm
+C/func/-/UAZoomChangeFocus
+C/tdef/-/UAZoomChangeFocusType
+C/func/-/UAZoomEnabled
+C/tdef/-/UCCharPropertyType
+C/tdef/-/UCCharPropertyValue
+C/tdef/-/UCCollateOptions
+C/tdef/-/UCCollationValue
+C/func/-/UCCompareCollationKeys
+C/func/-/UCCompareText
+C/func/-/UCCompareTextDefault
+C/func/-/UCCompareTextNoLocale
+C/func/-/UCCreateCollator
+C/func/-/UCCreateTextBreakLocator
+C/func/-/UCDisposeCollator
+C/func/-/UCDisposeTextBreakLocator
+C/func/-/UCFindTextBreak
+C/func/-/UCGetCharProperty
+C/func/-/UCGetCollationKey
+C++/cl/-/UCInfo
+C/tdef/-/UCKeyboardLayout
+C/tdef/-/UCKeyboardTypeHeader
+C/tdef/-/UCKeyCharSeq
+C/tdef/-/UCKeyLayoutFeatureInfo
+C/tdef/-/UCKeyModifiersToTableNum
+C/tdef/-/UCKeyOutput
+C/tdef/-/UCKeySequenceDataIndex
+C/tdef/-/UCKeyStateEntryRange
+C/tdef/-/UCKeyStateEntryTerminal
+C/tdef/-/UCKeyStateRecord
+C/tdef/-/UCKeyStateRecordsIndex
+C/tdef/-/UCKeyStateTerminators
+C/tdef/-/UCKeyToCharTableIndex
+C/func/-/UCKeyTranslate
+C/func/-/ucontext
+C/tdef/-/UCTextBreakOptions
+C/tdef/-/UCTextBreakType
+C/func/-/ui
+C/func/-/UI_add_error_string
+C/func/-/UI_add_info_string
+C/func/-/UI_add_input_boolean
+C/func/-/UI_add_input_string
+C/func/-/UI_add_user_data
+C/func/-/UI_add_verify_string
+C/func/-/ui_compat
+C/func/-/UI_construct_prompt
+C/func/-/UI_ctrl
+C/func/-/UI_dup_error_string
+C/func/-/UI_dup_info_string
+C/func/-/UI_dup_input_boolean
+C/func/-/UI_dup_input_string
+C/func/-/UI_dup_verify_string
+C/func/-/UI_free
+C/func/-/UI_get0_result
+C/func/-/UI_get0_user_data
+C/func/-/UI_get_default_method
+C/func/-/UI_get_method
+C/func/-/UI_new
+C/func/-/UI_new_method
+C/func/-/UI_OpenSSL
+C/func/-/UI_process
+C/func/-/UI_set_default_method
+C/func/-/UI_set_method
+Objective-C/instm/CalCalendarItem/uid
+Objective-C/instp/CalCalendarItem/uid
+Objective-C/instp/CalCalendar/uid
+Objective-C/instm/CalCalendar/uid
+JavaScript/data/ScriptProfile/uid
+Objective-C/instm/WebView/UIDelegate
+JavaScript/data/DOMWindow/UIEvent
+JavaScript/cl/-/UIEvent
+C++/instm/IOUSBController/UIMAbortEndpoint
+C++/instm/IOUSBController/UIMClearEndpointStall
+C++/instm/IOUSBControllerV2/UIMCreateBulkEndpoint
+C++/instm/IOUSBController/UIMCreateBulkEndpoint
+C++/instm/IOUSBController/UIMCreateBulkTransfer
+C++/instm/IOUSBControllerV2/UIMCreateControlEndpoint
+C++/instm/IOUSBController/UIMCreateControlEndpoint
+C++/instm/IOUSBController/UIMCreateControlTransfer
+C++/instm/IOUSBControllerV2/UIMCreateInterruptEndpoint
+C++/instm/IOUSBController/UIMCreateInterruptEndpoint
+C++/instm/IOUSBController/UIMCreateInterruptTransfer
+C++/instm/IOUSBController/UIMCreateIsochEndpoint
+C++/instm/IOUSBControllerV2/UIMCreateIsochEndpoint
+C++/instm/IOUSBController/UIMCreateIsochTransfer
+C++/instm/IOUSBController/UIMDeleteEndpoint
+C++/instm/IOUSBController/UIMFinalize
+C++/instm/IOUSBController/UIMInitialize
+C++/instm/IOUSBController/UIMRootHubStatusChange
+JavaScript/data/DOMWindow/Uint16Array
+JavaScript/cl/-/Uint16Array
+JavaScript/data/DOMWindow/Uint32Array
+JavaScript/cl/-/Uint32Array
+JavaScript/data/DOMWindow/Uint8Array
+JavaScript/cl/-/Uint8Array
+C/func/-/ulimit
+C/func/-/umask
+Objective-C/instm/NSObject/unableToSetNilForKey:
+C/func/-/uname
+Objective-C/clm/NSUnarchiver/unarchiveObjectWithData:
+Objective-C/clm/NSKeyedUnarchiver/unarchiveObjectWithData:
+Objective-C/clm/NSUnarchiver/unarchiveObjectWithFile:
+Objective-C/clm/NSKeyedUnarchiver/unarchiveObjectWithFile:
+Objective-C/intfm/NSKeyedUnarchiverDelegate/unarchiver:cannotDecodeObjectOfClassName:originalClasses:
+Objective-C/intfm/NSKeyedUnarchiverDelegate/unarchiver:didDecodeObject:
+Objective-C/intfm/NSKeyedUnarchiverDelegate/unarchiver:willReplaceObject:withObject:
+Objective-C/intfm/NSKeyedUnarchiverDelegate/unarchiverDidFinish:
+Objective-C/intfm/NSKeyedUnarchiverDelegate/unarchiverWillFinish:
+Objective-C/instm/NSObject/unbind:
+Objective-C/intfm/QCPlugInInputImageSource/unbindTextureRepresentationFromCGLContext:textureUnit:
+JavaScript/clconst/DOMApplicationCache/UNCACHED
+C/func/-/UncaptureComponent
+C/func/-/unctrl
+Objective-C/clm/WebUndefined/undefined
+C/func/-/undelete
+Objective-C/instm/NSText/underline:
+Objective-C/instm/NSLayoutManager/underlineGlyphRange:underlineType:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:
+Objective-C/instm/NSFont/underlinePosition
+Objective-C/instm/NSFont/underlineThickness
+Objective-C/instm/NSUndoManager/undo
+Objective-C/instm/NSManagedObjectContext/undo
+Objective-C/instm/NSUndoManager/undoActionName
+Objective-C/instm/NSDocument/undoManager
+Objective-C/instm/WebView/undoManager
+Objective-C/instm/NSResponder/undoManager
+Objective-C/instm/NSManagedObjectContext/undoManager
+Objective-C/intfm/NSTextViewDelegate/undoManagerForTextView:
+Objective-C/instm/NSObject/undoManagerForWebView:
+Objective-C/instm/NSUndoManager/undoMenuItemTitle
+Objective-C/instm/NSUndoManager/undoMenuTitleForUndoActionName:
+Objective-C/instm/NSUndoManager/undoNestedGroup
+C/tdef/-/UnembedImageProcPtr
+C/func/-/unget_wch
+C/func/-/ungetc
+C/func/-/ungetch
+C/func/-/ungetmouse
+C/func/-/ungetwc
+C/func/-/ungetwc_l
+Objective-C/clm/NSCursor/unhide
+Objective-C/instm/NSRunningApplication/unhide
+Objective-C/instm/NSApplication/unhide:
+Objective-C/instm/NSApplication/unhideAllApplications:
+Objective-C/instm/NSApplication/unhideWithoutActivation
+C/tdef/-/unichar
+C/tdef/-/UniCharArrayOffset
+C/tdef/-/UnicodeMapping
+C/tdef/-/UnicodeMapVersion
+C/tdef/-/UnicodeToTextFallbackProcPtr
+C/tdef/-/UnicodeToTextFallbackUPP
+C/tdef/-/UnicodeToTextInfo
+C/tdef/-/UnicodeToTextRunInfo
+JavaScript/instm/WebGLRenderingContext/uniform1f
+JavaScript/instm/WebGLRenderingContext/uniform1fv
+JavaScript/instm/WebGLRenderingContext/uniform1i
+JavaScript/instm/WebGLRenderingContext/uniform1iv
+JavaScript/instm/WebGLRenderingContext/uniform2f
+JavaScript/instm/WebGLRenderingContext/uniform2fv
+JavaScript/instm/WebGLRenderingContext/uniform2i
+JavaScript/instm/WebGLRenderingContext/uniform2iv
+JavaScript/instm/WebGLRenderingContext/uniform3f
+JavaScript/instm/WebGLRenderingContext/uniform3fv
+JavaScript/instm/WebGLRenderingContext/uniform3i
+JavaScript/instm/WebGLRenderingContext/uniform3iv
+JavaScript/instm/WebGLRenderingContext/uniform4f
+JavaScript/instm/WebGLRenderingContext/uniform4fv
+JavaScript/instm/WebGLRenderingContext/uniform4i
+JavaScript/instm/WebGLRenderingContext/uniform4iv
+JavaScript/instm/WebGLRenderingContext/uniformMatrix2fv
+JavaScript/instm/WebGLRenderingContext/uniformMatrix3fv
+JavaScript/instm/WebGLRenderingContext/uniformMatrix4fv
+Objective-C/instm/NSHashTable/unionHashTable:
+Objective-C/instm/NSMutableSet/unionSet:
+Objective-C/instm/CIFilterShape/unionWith:
+Objective-C/instm/CIFilterShape/unionWithRect:
+C/func/-/Unique1ID
+Objective-C/instm/NSUniqueIDSpecifier/uniqueID
+C/func/-/UniqueID
+Objective-C/instm/QTCaptureDevice/uniqueID
+Objective-C/instm/ABRecord/uniqueId
+Objective-C/instm/NSEvent/uniqueID
+Objective-C/clm/NSSpellChecker/uniqueSpellDocumentTag
+JavaScript/data/SVGLength/unitType
+JavaScript/data/SVGAngle/unitType
+JavaScript/clconst/IDBDatabaseException/UNKNOWN_ERR
+JavaScript/clconst/CSSRule/UNKNOWN_RULE
+Objective-C/instm/NSSpellChecker/unlearnWord:
+C/func/-/unlink
+Objective-C/instm/NSBundle/unload
+Objective-C/instm/QCView/unloadComposition
+C++/instm/IOCatalogue/unloadModule
+Objective-C/instm/NSDistributedLock/unlock
+Objective-C/intfm/NSLocking/unlock
+Objective-C/instm/NSPersistentStoreCoordinator/unlock
+C++/instm/IONetworkInterface/unlock
+Objective-C/clm/CATransaction/unlock
+C++/clm/IOKernelDebugger/unlock
+Objective-C/instm/NSManagedObjectContext/unlock
+Objective-C/intfm/QCPlugInInputImageSource/unlockBufferRepresentation
+Objective-C/instm/NSImage/unlockFocus
+Objective-C/instm/NSView/unlockFocus
+C++/instm/IOService/unlockForArbitration
+Objective-C/intfm/ApertureExportPlugIn/unlockProgress
+C/func/-/unlockpt
+Objective-C/intfm/QCPlugInInputImageSource/unlockTextureRepresentation
+Objective-C/instm/NSConditionLock/unlockWithCondition:
+Objective-C/instm/PDFDocument/unlockWithPassword:
+C++/instm/IOMemoryMap/unmap
+Objective-C/intfm/NSTextInput/unmarkText
+Objective-C/intfm/NSTextInputClient/unmarkText
+C/func/-/unmount
+Objective-C/instm/NSWorkspace/unmountAndEjectDeviceAtPath:
+Objective-C/instm/NSWorkspace/unmountAndEjectDeviceAtURL:error:
+C/func/-/UnmountVol
+JavaScript/clconst/XPathResult/UNORDERED_NODE_ITERATOR_TYPE
+JavaScript/clconst/XPathResult/UNORDERED_NODE_SNAPSHOT_TYPE
+JavaScript/clconst/WebGLRenderingContext/UNPACK_ALIGNMENT
+C/tdef/-/unparsedEntityDeclSAXFunc
+JavaScript/instm/SVGSVGElement/unpauseAnimations
+C/func/-/unpost_form
+C/func/-/unpost_menu
+Objective-C/instm/ODNode/unreachableSubnodeNamesAndReturnError:
+Objective-C/instm/WebDataSource/unreachableURL
+Objective-C/instp/PSFeed/unreadCount
+Objective-C/instm/IOBluetoothUserNotification/unregister
+C/func/-/unregister_app_config_handler
+C/func/-/unregister_config_handler
+Objective-C/clm/NSURLProtocol/unregisterClass:
+Objective-C/instm/ISyncManager/unregisterClient:
+C/func/-/UnregisterComponent
+Objective-C/instm/NSWindow/unregisterDraggedTypes
+Objective-C/instm/NSView/unregisterDraggedTypes
+Objective-C/clm/NSImageRep/unregisterImageRepClass:
+C++/instm/IOFramebuffer/unregisterInterrupt
+C++/instm/IOService/unregisterInterrupt
+Objective-C/instm/ISyncManager/unregisterSchemaWithName:
+Objective-C/instm/NSApplication/unregisterUserInterfaceItemSearchHandler:
+C/econst/-/unresolvedComponentDLLErr
+Objective-C/instm/NSURLConnection/unscheduleFromRunLoop:forMode:
+Objective-C/instm/NSText/unscript:
+Objective-C/instm/NSMutableAttributedString/unscriptRange:
+JavaScript/clconst/XMLHttpRequest/UNSENT
+C/func/-/unsetenv
+C++/instm/OSNumber/unsigned16BitValue
+C++/instm/OSNumber/unsigned32BitValue
+C++/instm/OSNumber/unsigned64BitValue
+C++/instm/OSNumber/unsigned8BitValue
+JavaScript/clconst/WebGLRenderingContext/UNSIGNED_BYTE
+JavaScript/clconst/WebGLRenderingContext/UNSIGNED_INT
+JavaScript/clconst/WebGLRenderingContext/UNSIGNED_SHORT
+JavaScript/clconst/WebGLRenderingContext/UNSIGNED_SHORT_4_4_4_4
+JavaScript/clconst/WebGLRenderingContext/UNSIGNED_SHORT_5_5_5_1
+JavaScript/clconst/WebGLRenderingContext/UNSIGNED_SHORT_5_6_5
+Objective-C/instm/NSNumber/unsignedCharValue
+C/func/-/UnsignedFixMulDiv
+Objective-C/instm/NSNumber/unsignedIntegerValue
+Objective-C/instm/NSNumber/unsignedIntValue
+JavaScript/data/TestObj/unsignedLongLongAttr
+Objective-C/instm/NSNumber/unsignedLongLongValue
+Objective-C/instm/NSNumber/unsignedLongValue
+Objective-C/instm/NSNumber/unsignedShortValue
+C++/instm/IOFireWireSerialBusProtocolTransport/UnsolicitedStatusNotify
+JavaScript/clconst/EventException/UNSPECIFIED_EVENT_TYPE_ERR
+JavaScript/instm/SVGSVGElement/unsuspendRedraw
+JavaScript/instm/SVGSVGElement/unsuspendRedrawAll
+C/func/-/untouchwin
+C/func/-/unvis
+Objective-C/instm/NSOpenGLView/update
+Objective-C/instm/NSMenuView/update
+Objective-C/instm/NSOpenGLContext/update
+Objective-C/instm/NSWindow/update
+C++/instm/IOConfigDirectory/update
+C++/instm/IOLocalConfigDirectory/update
+C++/instm/IORemoteConfigDirectory/update
+Objective-C/instm/NSMenu/update
+JavaScript/instm/DOMApplicationCache/update
+C/func/-/UpdateAlias
+Objective-C/instm/NSMutableAttributedString/updateAttachmentsFromPath:
+C++/instm/IOFireWireAVCUnit/updateAVCCommandTimeout
+C++/instm/IOFireWireAVCNub/updateAVCCommandTimeout
+C++/instm/IOFireWireAVCSubUnit/updateAVCCommandTimeout
+Objective-C/instm/CARenderer/updateBounds
+Objective-C/instm/NSAtomicStore/updateCacheNode:fromManagedObject:
+Objective-C/instm/IMKCandidates/updateCandidates
+Objective-C/instm/NSControl/updateCell:
+Objective-C/instm/NSControl/updateCellInside:
+Objective-C/instm/NSDocument/updateChangeCount:
+Objective-C/instm/IMKInputController/updateComposition
+Objective-C/instm/QLPreviewPanel/updateController
+C/func/-/UpdateDataBrowserItems
+Objective-C/instm/NSManagedObjectContext/updatedObjects
+Objective-C/instm/NSTextView/updateDragTypeRegistration
+C++/instm/IOHIDDevice/updateElementValues
+Objective-C/instm/NSTextView/updateFontPanel
+Objective-C/instm/NSFileWrapper/updateFromPath:
+Objective-C/instm/NSPrintInfo/updateFromPMPageFormat
+Objective-C/instm/NSPrintInfo/updateFromPMPrintSettings
+Objective-C/instm/NSPrintPanel/updateFromPrintInfo
+Objective-C/instm/NSPreferencePane/updateHelpMenuWithArray:
+C++/instm/IOFireWirePCRSpace/updateInputMasterPlug
+C++/instm/IOFireWirePCRSpace/updateInputPlug
+Objective-C/instm/NSTextView/updateInsertionPointStateAndRestartTimer:
+Objective-C/instm/QTMovie/updateMovieFile
+Objective-C/instm/IOBluetoothDeviceInquiry/updateNewDeviceNames
+C++/instm/IOFireWirePCRSpace/updateOutputMasterPlug
+C++/instm/IOFireWirePCRSpace/updateOutputPlug
+Objective-C/instm/NSSpellChecker/updatePanels
+Objective-C/instm/AMAction/updateParameters
+Objective-C/intfm/FxProgressAPI/updateProgress:
+JavaScript/clconst/DOMApplicationCache/UPDATEREADY
+C/func/-/UpdateResFile
+Objective-C/instm/NSTextView/updateRuler
+Objective-C/instm/NSBrowser/updateScroller
+Objective-C/instm/NSSpellChecker/updateSpellingPanelWithGrammarString:detail:
+Objective-C/instm/NSSpellChecker/updateSpellingPanelWithMisspelledWord:
+C/func/-/updateStatus
+Objective-C/instm/SFAuthorizationView/updateStatus:
+Objective-C/instm/NSView/updateTrackingAreas
+C++/instm/IOAudioControl/updateValue
+Objective-C/instm/SFAuthorizationPluginView/updateView
+Objective-C/instm/NSApplication/updateWindows
+Objective-C/instm/NSApplication/updateWindowsItem:
+C/func/-/UpgradeScriptInfoToTextEncoding
+JavaScript/data/XMLHttpRequest/upload
+Objective-C/clm/NSCharacterSet/uppercaseLetterCharacterSet
+Objective-C/instm/NSString/uppercaseString
+Objective-C/instm/NSResponder/uppercaseWord:
+Objective-C/instm/FxHostCapabilities/upscalesFields
+Objective-C/instm/NSXMLDocument/URI
+Objective-C/instm/NSXMLNode/URI
+JavaScript/data/SVGPaint/uri
+Objective-C/instm/NSManagedObjectID/URIRepresentation
+Objective-C/instp/CalCalendarItem/url
+Objective-C/instm/CalCalendarItem/url
+Objective-C/instm/PDFAnnotationLink/URL
+Objective-C/instm/NSPathComponentCell/URL
+Objective-C/instm/NSURLRequest/URL
+Objective-C/instm/PDFActionURL/URL
+Objective-C/instm/PDFActionRemoteGoTo/URL
+Objective-C/instm/NSURLResponse/URL
+Objective-C/instm/WebResource/URL
+Objective-C/instm/CalAlarm/url
+Objective-C/instm/NSSavePanel/URL
+Objective-C/instp/CalAlarm/url
+Objective-C/instm/NSPersistentStore/URL
+Objective-C/instm/NSPathCell/URL
+Objective-C/instp/NSTextCheckingResult/URL
+Objective-C/instm/NSTextCheckingResult/URL
+Objective-C/instp/PSEnclosure/URL
+Objective-C/instp/PSAuthor/URL
+Objective-C/instp/PSFeed/URL
+Objective-C/instp/PSLink/URL
+Objective-C/instm/NSPathControl/URL
+JavaScript/data/Document/URL
+JavaScript/data/BeforeLoadEvent/url
+JavaScript/data/EventSource/URL
+JavaScript/data/StorageEvent/url
+JavaScript/data/ScriptProfileNode/url
+JavaScript/data/WebSocket/URL
+JavaScript/clconst/DOMCoreException/URL_MISMATCH_ERR
+Objective-C/instm/NSAttributedString/URLAtIndex:effectiveRange:
+Objective-C/instm/NSURL/URLByAppendingPathComponent:
+Objective-C/instm/NSURL/URLByAppendingPathExtension:
+Objective-C/instm/NSURL/URLByDeletingLastPathComponent
+Objective-C/instm/NSURL/URLByDeletingPathExtension
+Objective-C/clm/NSURL/URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:
+Objective-C/instm/NSURL/URLByResolvingSymlinksInPath
+Objective-C/instm/NSURL/URLByStandardizingPath
+Objective-C/instm/NSWorkspace/URLForApplicationToOpenURL:
+Objective-C/instm/NSWorkspace/URLForApplicationWithBundleIdentifier:
+Objective-C/instm/NSBundle/URLForAuxiliaryExecutable:
+Objective-C/instm/NSFileManager/URLForDirectory:inDomain:appropriateForURL:create:error:
+Objective-C/instm/NSBundle/URLForImageResource:
+Objective-C/instm/NSUserDefaults/URLForKey:
+Objective-C/instm/NSPersistentStoreCoordinator/URLForPersistentStore:
+Objective-C/instm/NSBundle/URLForResource:withExtension:
+Objective-C/instm/NSBundle/URLForResource:withExtension:subdirectory:
+Objective-C/clm/NSBundle/URLForResource:withExtension:subdirectory:inBundleWithURL:
+Objective-C/instm/NSBundle/URLForResource:withExtension:subdirectory:localization:
+Objective-C/clm/NSURL/URLFromPasteboard:
+Objective-C/clm/WebView/URLFromPasteboard:
+Objective-C/intfm/NSURLHandleClient/URLHandle:resourceDataDidBecomeAvailable:
+Objective-C/intfm/NSURLHandleClient/URLHandle:resourceDidFailLoadingWithReason:
+Objective-C/clm/NSURLHandle/URLHandleClassForURL:
+Objective-C/intfm/NSURLHandleClient/URLHandleResourceDidBeginLoading:
+Objective-C/intfm/NSURLHandleClient/URLHandleResourceDidCancelLoading:
+Objective-C/intfm/NSURLHandleClient/URLHandleResourceDidFinishLoading:
+Objective-C/instm/NSURL/URLHandleUsingCache:
+Objective-C/intfm/NSURLProtocolClient/URLProtocol:cachedResponseIsValid:
+Objective-C/intfm/NSURLProtocolClient/URLProtocol:didCancelAuthenticationChallenge:
+Objective-C/intfm/NSURLProtocolClient/URLProtocol:didFailWithError:
+Objective-C/intfm/NSURLProtocolClient/URLProtocol:didLoadData:
+Objective-C/intfm/NSURLProtocolClient/URLProtocol:didReceiveAuthenticationChallenge:
+Objective-C/intfm/NSURLProtocolClient/URLProtocol:didReceiveResponse:cacheStoragePolicy:
+Objective-C/intfm/NSURLProtocolClient/URLProtocol:wasRedirectedToRequest:redirectResponse:
+Objective-C/intfm/NSURLProtocolClient/URLProtocolDidFinishLoading:
+Objective-C/instm/NSOpenPanel/URLs
+Objective-C/instm/NSFileManager/URLsForDirectory:inDomains:
+Objective-C/instm/NSBundle/URLsForResourcesWithExtension:subdirectory:
+Objective-C/clm/NSBundle/URLsForResourcesWithExtension:subdirectory:inBundleWithURL:
+Objective-C/instm/NSBundle/URLsForResourcesWithExtension:subdirectory:localization:
+Objective-C/instm/NSDocumentController/URLsFromRunningOpenPanel
+Objective-C/instm/WebHistoryItem/URLString
+Objective-C/clm/WebView/URLTitleFromPasteboard:
+Objective-C/instm/IMAVManager/URLToShare
+Objective-C/instm/DOMDocument/URLWithAttributeString:
+Objective-C/clm/NSURL/URLWithString:
+Objective-C/clm/NSURL/URLWithString:relativeToURL:
+Objective-C/instm/NSScroller/usableParts
+C/tdef/-/USBDeviceInformationBits
+C/tag/-/USBDeviceSpeed
+C/tdef/-/USBLowLatencyBufferType
+C/macro/-/USBmakebmRequestType
+C/tdef/-/USBPowerRequestTypes
+C/tdef/-/USBReEnumerateOptions
+C/tdef/-/USBStatus
+C/macro/-/USBToHostWord
+Objective-C/intfm/WebPolicyDecisionListener/use
+C/func/-/use_default_colors
+C/func/-/use_env
+C/func/-/use_extended_names
+C/func/-/use_legacy_coding
+C/func/-/use_screen
+C/func/-/use_window
+Objective-C/instm/NSTextView/useAllLigatures:
+C/macro/-/USEC_PER_SEC
+Objective-C/intfm/NSURLAuthenticationChallengeSender/useCredential:forAuthenticationChallenge:
+JavaScript/data/SVGSVGElement/useCurrentView
+C/func/-/UseDictionary
+Objective-C/instm/NSLayoutManager/usedRectForTextContainer:
+Objective-C/clm/NSFont/useFont:
+C/func/-/uselocale
+JavaScript/data/HTMLImageElement/useMap
+JavaScript/data/HTMLObjectElement/useMap
+JavaScript/data/HTMLInputElement/useMap
+C/func/-/UseMovieEditState
+Objective-C/instm/NSWindow/useOptimizedDrawing:
+JavaScript/instm/WebGLRenderingContext/useProgram
+Objective-C/instm/NSURLCredential/user
+C/tag/-/User
+Objective-C/instm/NSURL/user
+Objective-C/instp/CWWirelessProfile/user8021XProfile
+JavaScript/data/Navigator/userAgent
+JavaScript/data/WorkerNavigator/userAgent
+Objective-C/instm/WebView/userAgentForURL:
+C++/data/IOAudioEngine/userClients
+C++/data/IOAudioControl/userClients
+C/tdef/-/UserData
+Objective-C/instm/NSEvent/userData
+C/tag/-/UserDataRecord
+Objective-C/instm/NSWorkspace/userDefaultsChanged
+Objective-C/intfm/ApertureEditManager/userDefaultsObjectForKey:
+Objective-C/instp/CW8021XProfile/userDefinedName
+C/func/-/UseResFile
+Objective-C/clm/NSFont/userFixedPitchFontOfSize:
+Objective-C/clm/NSFont/userFontOfSize:
+Objective-C/intfm/FxProgressAPI/userHasCancelled
+Objective-C/clm/CBUserIdentity/userIdentityWithPosixUID:authority:
+Objective-C/intfm/QCPlugInContext/userInfo
+Objective-C/instm/NSNotification/userInfo
+Objective-C/intfm/QCCompositionRenderer/userInfo
+Objective-C/instm/NSCachedURLResponse/userInfo
+Objective-C/instm/NSEntityMapping/userInfo
+Objective-C/instm/NSPropertyMapping/userInfo
+Objective-C/instm/NSMigrationManager/userInfo
+Objective-C/instm/NSPropertyDescription/userInfo
+Objective-C/instm/NSException/userInfo
+Objective-C/instm/NSTimer/userInfo
+Objective-C/instm/NSError/userInfo
+Objective-C/instm/NSTrackingArea/userInfo
+Objective-C/instm/NSEntityDescription/userInfo
+Objective-C/instm/NSApplication/userInterfaceLayoutDirection
+Objective-C/instm/NSCell/userInterfaceLayoutDirection
+Objective-C/instm/NSMenuItem/userKeyEquivalent
+Objective-C/instm/PDFAnnotation/userName
+Objective-C/instp/CW8021XProfile/username
+Objective-C/instm/XGTwoWayRandomAuthenticator/username
+Objective-C/instm/NSSpellChecker/userPreferredLanguages
+Objective-C/instm/NSSpellChecker/userQuotesArrayForLanguage:
+Objective-C/instm/NSSpellChecker/userReplacementsDictionary
+Objective-C/instm/IKSaveOptions/userSelection
+Objective-C/instp/IKSaveOptions/userSelection
+Objective-C/instm/NSScreen/userSpaceScaleFactor
+Objective-C/instm/NSWindow/userSpaceScaleFactor
+Objective-C/instm/WebPreferences/userStyleSheetEnabled
+Objective-C/instm/WebPreferences/userStyleSheetLocation
+Objective-C/instm/NSTableView/usesAlternatingRowBackgroundColors
+Objective-C/instm/NSComboBox/usesDataSource
+Objective-C/instm/NSComboBoxCell/usesDataSource
+Objective-C/instm/CalRecurrenceEnd/usesEndDate
+Objective-C/instp/CalRecurrenceEnd/usesEndDate
+Objective-C/instm/NSImage/usesEPSOnResolutionMismatch
+Objective-C/instm/NSSpeechSynthesizer/usesFeedbackWindow
+Objective-C/instm/NSTextView/usesFindPanel
+Objective-C/instm/NSATSTypesetter/usesFontLeading
+Objective-C/instm/NSLayoutManager/usesFontLeading
+Objective-C/instm/NSTypesetter/usesFontLeading
+Objective-C/instm/NSTextView/usesFontPanel
+Objective-C/instm/NSText/usesFontPanel
+Objective-C/instm/NSNumberFormatter/usesGroupingSeparator
+Objective-C/instm/NSPopUpButtonCell/usesItemFromMenu
+Objective-C/instm/NSObjectController/usesLazyFetching
+Objective-C/instm/WebPreferences/usesPageCache
+C/func/-/UseSpeechDictionary
+Objective-C/instm/NSTextView/usesRuler
+Objective-C/instm/NSLayoutManager/usesScreenFonts
+Objective-C/instm/NSNumberFormatter/usesSignificantDigits
+Objective-C/instm/NSCell/usesSingleLineMode
+Objective-C/instm/NSPointerFunctions/usesStrongWriteBarrier
+Objective-C/instp/NSPointerFunctions/usesStrongWriteBarrier
+Objective-C/instm/NSTextView/useStandardKerning:
+Objective-C/instm/NSTextView/useStandardLigatures:
+Objective-C/instm/NSProgressIndicator/usesThreadedAnimation
+Objective-C/clm/NSObject/useStoredAccessor
+Objective-C/clm/NSMenuItem/usesUserKeyEquivalents
+Objective-C/instm/NSPointerFunctions/usesWeakReadAndWriteBarriers
+Objective-C/instp/NSPointerFunctions/usesWeakReadAndWriteBarriers
+C/func/-/UseTrackEditState
+C/func/-/usleep
+C/func/-/UTCreateStringForOSType
+Objective-C/instm/NSString/UTF8String
+C/func/-/UTGetOSTypeFromString
+C/func/-/utime
+C/func/-/utimes
+C/func/-/utmpxname
+C/func/-/UTTypeConformsTo
+C/func/-/UTTypeCopyDeclaration
+C/func/-/UTTypeCopyDeclaringBundleURL
+C/func/-/UTTypeCopyDescription
+C/func/-/UTTypeCopyPreferredTagWithClass
+C/func/-/UTTypeCreateAllIdentifiersForTag
+C/func/-/UTTypeCreatePreferredIdentifierForTag
+C/func/-/UTTypeEqual
+C/func/-/uuid
+Objective-C/clm/IOBluetoothSDPUUID/uuid16:
+Objective-C/clm/IOBluetoothSDPUUID/uuid32:
+C/func/-/uuid_clear
+C/tag/-/uuid_command
+C/func/-/uuid_compare
+C/func/-/uuid_copy
+C/func/-/uuid_generate
+C/func/-/uuid_generate_random
+C/func/-/uuid_generate_time
+C/func/-/uuid_is_null
+C/func/-/uuid_parse
+C/func/-/uuid_unparse
+C/func/-/uuid_unparse_lower
+C/func/-/uuid_unparse_upper
+Objective-C/instm/CBIdentity/UUIDString
+Objective-C/clm/IOBluetoothSDPUUID/uuidWithBytes:length:
+Objective-C/clm/IOBluetoothSDPUUID/uuidWithData:
+C/func/-/vA1024Shift
+C/func/-/vA128Shift
+C/func/-/vA256Shift
+C/func/-/vA512Shift
+C/func/-/vA64Shift
+C/func/-/vA64Shift2
+C/func/-/va_arg
+C/func/-/va_copy
+C/func/-/va_end
+C/func/-/va_start
+C/func/-/vacosf
+C/func/-/vacoshf
+C/func/-/vadd
+C/func/-/vaddD
+JavaScript/data/ValidityState/valid
+Objective-C/instm/NSToolbarItem/validate
+C/func/-/Validate
+JavaScript/clconst/WebGLRenderingContext/VALIDATE_STATUS
+Objective-C/instm/NSXMLDocument/validateAndReturnError:
+C++/instm/IOFramebuffer/validateDetailedTiming
+Objective-C/instm/NSControl/validateEditing
+Objective-C/instm/NSManagedObject/validateForDelete:
+Objective-C/instm/NSManagedObject/validateForInsert:
+Objective-C/instm/NSManagedObject/validateForUpdate:
+C/tdef/-/ValidateImageProcPtr
+Objective-C/instm/NSDocument/validateMenuItem:
+Objective-C/instm/NSObject/validateMenuItem:
+C++/instm/IOBlockStorageDriver/validateNewMedia
+JavaScript/instm/WebGLRenderingContext/validateProgram
+C/tdef/-/ValidateSpaceProcPtr
+Objective-C/instm/NSObject/validateToolbarItem:
+Objective-C/instm/NSObjectController/validateUserInterfaceItem:
+Objective-C/instm/NSDocument/validateUserInterfaceItem:
+Objective-C/instm/NSDocumentController/validateUserInterfaceItem:
+Objective-C/intfm/NSUserInterfaceValidations/validateUserInterfaceItem:
+C++/instm/IOAudioControl/validateValue
+Objective-C/instm/NSObject/validateValue:forKey:error:
+Objective-C/instm/NSManagedObject/validateValue:forKey:error:
+Objective-C/instm/NSObject/validateValue:forKeyPath:error:
+Objective-C/instm/NSSavePanel/validateVisibleColumns
+Objective-C/instm/NSBrowser/validateVisibleColumns
+Objective-C/instm/NSToolbar/validateVisibleItems
+JavaScript/clconst/DOMCoreException/VALIDATION_ERR
+JavaScript/data/HTMLInputElement/validationMessage
+JavaScript/data/HTMLSelectElement/validationMessage
+JavaScript/data/HTMLButtonElement/validationMessage
+JavaScript/data/HTMLFieldSetElement/validationMessage
+JavaScript/data/HTMLTextAreaElement/validationMessage
+Objective-C/instm/NSPropertyDescription/validationPredicates
+Objective-C/instm/NSPropertyDescription/validationWarnings
+Objective-C/intfm/IMKTextInput/validAttributesForMarkedText
+Objective-C/intfm/NSTextInput/validAttributesForMarkedText
+Objective-C/intfm/NSTextInputClient/validAttributesForMarkedText
+C/econst/-/validInstancesExist
+JavaScript/data/HTMLSelectElement/validity
+JavaScript/data/HTMLInputElement/validity
+JavaScript/data/HTMLTextAreaElement/validity
+JavaScript/data/HTMLFieldSetElement/validity
+JavaScript/data/HTMLButtonElement/validity
+JavaScript/cl/-/ValidityState
+Objective-C/instm/NSObject/validModesForFontPanel:
+Objective-C/instm/NSTextView/validRequestorForSendType:returnType:
+Objective-C/instm/NSWindow/validRequestorForSendType:returnType:
+Objective-C/instm/NSResponder/validRequestorForSendType:returnType:
+Objective-C/instm/NSApplication/validRequestorForSendType:returnType:
+JavaScript/data/HTMLTableRowElement/vAlign
+JavaScript/data/HTMLTableColElement/vAlign
+JavaScript/data/HTMLTableCellElement/vAlign
+JavaScript/data/HTMLTableSectionElement/vAlign
+C/func/-/valloc
+Objective-C/instm/NSMetadataQueryResultGroup/value
+Objective-C/instm/NSMetadataQueryAttributeValueTuple/value
+Objective-C/instm/NSHTTPCookie/value
+Objective-C/instm/NSObject/value
+Objective-C/binding/NSButtonCell/value
+Objective-C/binding/NSFormCell/value
+Objective-C/binding/NSLevelIndicator/value
+Objective-C/binding/NSComboBoxCell/value
+Objective-C/binding/NSColorWell/value
+Objective-C/binding/NSDatePicker/value
+Objective-C/binding/NSBrowser/value
+Objective-C/binding/NSButton/value
+Objective-C/binding/NSMovieView/value
+Objective-C/binding/NSMenuItem/value
+Objective-C/binding/NSDatePickerCell/value
+Objective-C/binding/NSComboBox/value
+Objective-C/binding/NSImageCell/value
+Objective-C/binding/NSImageView/value
+Objective-C/binding/NSLevelIndicatorCell/value
+Objective-C/binding/NSPathControl/value
+Objective-C/binding/NSTextView/value
+Objective-C/binding/NSTokenFieldCell/value
+Objective-C/binding/NSSecureTextField/value
+Objective-C/binding/NSTableColumn/value
+Objective-C/binding/NSTextField/value
+Objective-C/binding/NSPathCell/value
+Objective-C/binding/NSStepper/value
+Objective-C/binding/NSSecureTextFieldCell/value
+Objective-C/binding/NSSliderCell/value
+Objective-C/binding/NSTokenField/value
+Objective-C/binding/NSPredicateEditor/value
+Objective-C/binding/NSSlider/value
+Objective-C/binding/NSStepperCell/value
+Objective-C/binding/NSTextFieldCell/value
+Objective-C/binding/NSProgressIndicator/value
+Objective-C/binding/NSSearchField/value
+JavaScript/data/Attr/value
+JavaScript/data/HTMLProgressElement/value
+JavaScript/data/HTMLInputElement/value
+JavaScript/data/HTMLButtonElement/value
+JavaScript/data/HTMLMeterElement/value
+JavaScript/data/HTMLSelectElement/value
+JavaScript/data/HTMLParamElement/value
+JavaScript/data/HTMLLIElement/value
+JavaScript/data/HTMLOptionElement/value
+JavaScript/data/HTMLTextAreaElement/value
+JavaScript/data/SVGLength/value
+JavaScript/data/SVGNumber/value
+JavaScript/data/SVGAngle/value
+Objective-C/clm/NSValue/value:withObjCType:
+JavaScript/data/HTMLInputElement/valueAsDate
+JavaScript/data/HTMLInputElement/valueAsNumber
+JavaScript/data/SVGAngle/valueAsString
+JavaScript/data/SVGLength/valueAsString
+Objective-C/instm/CIVector/valueAtIndex:
+Objective-C/instm/ABMultiValue/valueAtIndex:
+Objective-C/instm/NSObject/valueAtIndex:inPropertyWithKey:
+Objective-C/instm/NSObject/valueClassForBinding:
+Objective-C/instm/NSPropertyMapping/valueExpression
+Objective-C/instm/NSMetadataItem/valueForAttribute:
+Objective-C/instm/NSTextBlock/valueForDimension:
+Objective-C/instm/NSURLRequest/valueForHTTPHeaderField:
+Objective-C/instm/ABMultiValue/valueForIdentifier:
+Objective-C/instm/QCPlugIn/valueForInputKey:
+Objective-C/intfm/QCCompositionRenderer/valueForInputKey:
+Objective-C/instm/NSAtomicStoreCacheNode/valueForKey:
+Objective-C/instm/NSSet/valueForKey:
+Objective-C/instm/NSDictionary/valueForKey:
+Objective-C/instm/NSObject/valueForKey:
+Objective-C/clm/CATransaction/valueForKey:
+Objective-C/instm/NSArray/valueForKey:
+Objective-C/instm/NSManagedObject/valueForKey:
+Objective-C/instm/NSObject/valueForKeyPath:
+Objective-C/intfm/QCCompositionRenderer/valueForOutputKey:
+Objective-C/intfm/QCCompositionRenderer/valueForOutputKey:ofType:
+Objective-C/instm/ABRecord/valueForProperty:
+Objective-C/instm/NSBitmapImageRep/valueForProperty:
+Objective-C/intfm/IMKStateSetting/valueForTag:client:
+Objective-C/instm/NSObject/valueForUndefinedKey:
+Objective-C/instm/AMWorkflow/valueForVariableWithName:
+Objective-C/instp/CAPropertyAnimation/valueFunction
+Objective-C/instm/CAPropertyAnimation/valueFunction
+JavaScript/data/SVGAngle/valueInSpecifiedUnits
+JavaScript/data/SVGLength/valueInSpecifiedUnits
+Objective-C/instm/NSMetadataQuery/valueListAttributes
+Objective-C/instm/NSMetadataQuery/valueLists
+JavaScript/data/ValidityState/valueMissing
+JavaScript/instm/window/valueOf
+Objective-C/instm/NSMetadataQuery/valueOfAttribute:forResultAtIndex:
+Objective-C/binding/NSImageCell/valuePath
+Objective-C/binding/NSImageView/valuePath
+Objective-C/binding/NSMovieView/valuePath
+Objective-C/binding/NSTextView/valuePath
+Objective-C/instm/NSMapTable/valuePointerFunctions
+Objective-C/instm/NSUserDefaultsController/values
+Objective-C/instp/CAKeyframeAnimation/values
+Objective-C/instm/CAKeyframeAnimation/values
+JavaScript/data/SVGFEColorMatrixElement/values
+Objective-C/instp/ABPeoplePickerView/valueSelectionBehavior
+Objective-C/instm/ABPeoplePickerView/valueSelectionBehavior
+Objective-C/instm/ODRecord/valuesForAttribute:error:
+Objective-C/instm/NSMetadataItem/valuesForAttributes:
+Objective-C/instm/NSObject/valuesForKeys:
+Objective-C/clm/NSValueTransformer/valueTransformerForName:
+Objective-C/instm/NSAttributeDescription/valueTransformerName
+Objective-C/clm/NSValueTransformer/valueTransformerNames
+JavaScript/data/HTMLParamElement/valueType
+Objective-C/instm/NSTextBlock/valueTypeForDimension:
+Objective-C/binding/NSMovieView/valueURL
+Objective-C/binding/NSImageView/valueURL
+Objective-C/binding/NSImageCell/valueURL
+Objective-C/binding/NSTextView/valueURL
+Objective-C/clm/NSValue/valueWithBytes:objCType:
+Objective-C/clm/NSValue/valueWithCATransform3D:
+Objective-C/instm/NSObject/valueWithName:inPropertyWithKey:
+Objective-C/clm/NSValue/valueWithNonretainedObject:
+Objective-C/clm/NSValue/valueWithPoint:
+Objective-C/clm/NSValue/valueWithPointer:
+Objective-C/clm/NSValue/valueWithQTTime:
+Objective-C/clm/NSValue/valueWithQTTimeRange:
+Objective-C/clm/NSValue/valueWithRange:
+Objective-C/clm/NSValue/valueWithRect:
+Objective-C/clm/NSValue/valueWithSize:
+Objective-C/clm/NSValue/valueWithSMPTETime:
+Objective-C/instm/NSObject/valueWithUniqueID:inPropertyWithKey:
+Objective-C/instm/NSStepper/valueWraps
+Objective-C/instm/NSStepperCell/valueWraps
+C/func/-/vam
+C/func/-/vamD
+Objective-C/instm/NSExpression/variable
+C/tag/-/variable_list
+JavaScript/data/CSSVariablesRule/variables
+JavaScript/clconst/CSSRule/VARIABLES_RULE
+Objective-C/intfm/FxBaseEffect/variesOverTime
+C/func/-/vasinf
+C/func/-/vasinhf
+C/func/-/vasprintf
+C/func/-/vasprintf_l
+C/func/-/vatan2f
+C/func/-/vatanf
+C/func/-/vatanhf
+C/tdef/-/vBool32
+Objective-C/instm/ABPerson/vCardRepresentation
+C/tdef/-/VCB
+C/func/-/vceilf
+C/func/-/vclassifyf
+C/func/-/vcopysignf
+C/func/-/vcosf
+C/func/-/vcoshf
+C/func/-/vcount
+C/func/-/VDAddKeyColor
+C/func/-/VDCaptureStateChanging
+C/func/-/VDClearClipRgn
+C/func/-/VDCompressDone
+C/tdef/-/VDCompressionListHandle
+C/tdef/-/VDCompressionListPtr
+C/func/-/VDCompressOneFrameAsync
+C/func/-/VDDone
+C/tag/-/VDGammaRecord
+C/tdef/-/VDGamRecPtr
+C/func/-/VDGetActiveSrcRect
+C/func/-/VDGetBlackLevelValue
+C/func/-/VDGetBrightness
+C/func/-/VDGetClipState
+C/func/-/VDGetCLUTInUse
+C/func/-/VDGetCompressionTime
+C/func/-/VDGetCompressionTypes
+C/func/-/VDGetContrast
+C/func/-/VDGetCurrentFlags
+C/func/-/VDGetDataRate
+C/func/-/VDGetDeviceNameAndFlags
+C/func/-/VDGetDigitizerInfo
+C/func/-/VDGetDigitizerRect
+C/func/-/VDGetDMADepths
+C/func/-/VDGetFieldPreference
+C/func/-/VDGetHue
+C/func/-/VDGetImageDescription
+C/func/-/VDGetInput
+C/func/-/VDGetInputColorSpaceMode
+C/func/-/VDGetInputFormat
+C/func/-/VDGetInputGammaRecord
+C/func/-/VDGetInputGammaValue
+C/func/-/VDGetInputName
+C/func/-/VDGetKeyColor
+C/func/-/VDGetKeyColorRange
+C/func/-/VDGetMaskandValue
+C/func/-/VDGetMaskPixMap
+C/func/-/VDGetMaxAuxBuffer
+C/func/-/VDGetMaxSrcRect
+C/func/-/VDGetNextKeyColor
+C/func/-/VDGetNumberOfInputs
+C/func/-/VDGetPlayThruDestination
+C/func/-/VDGetPLLFilterType
+C/func/-/VDGetPreferredImageDimensions
+C/func/-/VDGetPreferredTimeScale
+C/func/-/VDGetSaturation
+C/func/-/VDGetSharpness
+C/func/-/VDGetSoundInputDriver
+C/func/-/VDGetSoundInputSource
+C/func/-/VDGetTimeCode
+C/func/-/VDGetUniqueIDs
+C/func/-/VDGetVBlankRect
+C/func/-/VDGetVideoDefaults
+C/func/-/VDGetWhiteLevelValue
+C/func/-/VDGrabOneFrame
+C/func/-/VDGrabOneFrameAsync
+C/tdef/-/VdigBufferRecListHandle
+C/tdef/-/VdigBufferRecListPtr
+C/tdef/-/VdigIntProc
+C/tdef/-/VdigIntUPP
+C/func/-/VDIIDCGetCSRData
+C/func/-/VDIIDCGetDefaultFeatures
+C/func/-/VDIIDCGetFeatures
+C/func/-/VDIIDCGetFeaturesForSpecifier
+C/func/-/VDIIDCSetCSRData
+C/func/-/VDIIDCSetFeatures
+C/func/-/vdivf
+C/func/-/VDPreflightDestination
+C/func/-/VDPreflightGlobalRect
+C/func/-/VDReleaseAsyncBuffers
+C/func/-/VDReleaseCompressBuffer
+C/func/-/VDResetCompressSequence
+C/func/-/VDSelectUniqueIDs
+C/func/-/VDSetBlackLevelValue
+C/func/-/VDSetBrightness
+C/func/-/VDSetClipRgn
+C/func/-/VDSetClipState
+C/func/-/VDSetCompression
+C/func/-/VDSetCompressionOnOff
+C/func/-/VDSetContrast
+C/func/-/VDSetDataRate
+C/func/-/VDSetDestinationPort
+C/func/-/VDSetDigitizerRect
+C/func/-/VDSetDigitizerUserInterrupt
+C/func/-/VDSetFieldPreference
+C/func/-/VDSetFrameRate
+C/func/-/VDSetHue
+C/func/-/VDSetInput
+C/func/-/VDSetInputColorSpaceMode
+C/func/-/VDSetInputGammaRecord
+C/func/-/VDSetInputGammaValue
+C/func/-/VDSetInputStandard
+C/func/-/VDSetKeyColor
+C/func/-/VDSetKeyColorRange
+C/func/-/VDSetMasterBlendLevel
+C/func/-/VDSetPlayThruDestination
+C/func/-/VDSetPlayThruGlobalRect
+C/func/-/VDSetPlayThruOnOff
+C/func/-/VDSetPLLFilterType
+C/func/-/VDSetPreferredImageDimensions
+C/func/-/VDSetPreferredPacketSize
+C/func/-/VDSetSaturation
+C/func/-/VDSetSharpness
+C/func/-/VDSetTimeBase
+C/func/-/VDSetupBuffers
+C/func/-/VDSetWhiteLevelValue
+C/func/-/vDSP_blkman_window
+C/func/-/vDSP_blkman_windowD
+C/func/-/vDSP_conv
+C/func/-/vDSP_convD
+C/func/-/vDSP_create_fftsetup
+C/func/-/vDSP_create_fftsetupD
+C/func/-/vDSP_ctoz
+C/func/-/vDSP_ctozD
+C/func/-/vDSP_deq22
+C/func/-/vDSP_deq22D
+C/func/-/vDSP_desamp
+C/func/-/vDSP_desampD
+C/func/-/vDSP_destroy_fftsetup
+C/func/-/vDSP_destroy_fftsetupD
+C/func/-/vDSP_DFT_zrop
+C/func/-/vDSP_dotpr
+C/func/-/vDSP_dotprD
+C/func/-/vDSP_f3x3
+C/func/-/vDSP_f3x3D
+C/func/-/vDSP_f5x5
+C/func/-/vDSP_f5x5D
+C/func/-/vDSP_fft2d_zip
+C/func/-/vDSP_fft2d_zipD
+C/func/-/vDSP_fft2d_zipt
+C/func/-/vDSP_fft2d_ziptD
+C/func/-/vDSP_fft2d_zop
+C/func/-/vDSP_fft2d_zopD
+C/func/-/vDSP_fft2d_zopt
+C/func/-/vDSP_fft2d_zoptD
+C/func/-/vDSP_fft2d_zrip
+C/func/-/vDSP_fft2d_zripD
+C/func/-/vDSP_fft2d_zript
+C/func/-/vDSP_fft2d_zriptD
+C/func/-/vDSP_fft2d_zrop
+C/func/-/vDSP_fft2d_zropD
+C/func/-/vDSP_fft2d_zropt
+C/func/-/vDSP_fft2d_zroptD
+C/func/-/vDSP_fft3_zop
+C/func/-/vDSP_fft3_zopD
+C/func/-/vDSP_fft5_zop
+C/func/-/vDSP_fft5_zopD
+C/func/-/vDSP_fft_zip
+C/func/-/vDSP_fft_zipD
+C/func/-/vDSP_fft_zipt
+C/func/-/vDSP_fft_ziptD
+C/func/-/vDSP_fft_zop
+C/func/-/vDSP_fft_zopD
+C/func/-/vDSP_fft_zopt
+C/func/-/vDSP_fft_zoptD
+C/func/-/vDSP_fft_zrip
+C/func/-/vDSP_fft_zripD
+C/func/-/vDSP_fft_zript
+C/func/-/vDSP_fft_zriptD
+C/func/-/vDSP_fft_zrop
+C/func/-/vDSP_fft_zropD
+C/func/-/vDSP_fft_zropt
+C/func/-/vDSP_fft_zroptD
+C/func/-/vDSP_fftm_zip
+C/func/-/vDSP_fftm_zipD
+C/func/-/vDSP_fftm_zipt
+C/func/-/vDSP_fftm_ziptD
+C/func/-/vDSP_fftm_zop
+C/func/-/vDSP_fftm_zopD
+C/func/-/vDSP_fftm_zopt
+C/func/-/vDSP_fftm_zoptD
+C/func/-/vDSP_fftm_zrip
+C/func/-/vDSP_fftm_zripD
+C/func/-/vDSP_fftm_zript
+C/func/-/vDSP_fftm_zriptD
+C/func/-/vDSP_fftm_zrop
+C/func/-/vDSP_fftm_zropD
+C/func/-/vDSP_fftm_zropt
+C/func/-/vDSP_fftm_zroptD
+C/econst/-/vDSP_HALF_WINDOW
+C/func/-/vDSP_hamm_window
+C/func/-/vDSP_hamm_windowD
+C/econst/-/vDSP_HANN_DENORM
+C/econst/-/vDSP_HANN_NORM
+C/func/-/vDSP_hann_window
+C/func/-/vDSP_hann_windowD
+C/func/-/vDSP_imgfir
+C/func/-/vDSP_imgfirD
+C/tdef/-/vDSP_Length
+C/func/-/vDSP_maxmgv
+C/func/-/vDSP_maxmgvD
+C/func/-/vDSP_maxmgvi
+C/func/-/vDSP_maxmgviD
+C/func/-/vDSP_maxv
+C/func/-/vDSP_maxvD
+C/func/-/vDSP_maxvi
+C/func/-/vDSP_maxviD
+C/func/-/vDSP_meamgv
+C/func/-/vDSP_meamgvD
+C/func/-/vDSP_meanv
+C/func/-/vDSP_meanvD
+C/func/-/vDSP_measqv
+C/func/-/vDSP_measqvD
+C/func/-/vDSP_minmgv
+C/func/-/vDSP_minmgvD
+C/func/-/vDSP_minmgvi
+C/func/-/vDSP_minmgviD
+C/func/-/vDSP_minv
+C/func/-/vDSP_minvD
+C/func/-/vDSP_minvi
+C/func/-/vDSP_minviD
+C/func/-/vDSP_mmov
+C/func/-/vDSP_mmovD
+C/func/-/vDSP_mmul
+C/func/-/vDSP_mmulD
+C/func/-/vDSP_mtrans
+C/func/-/vDSP_mtransD
+C/func/-/vDSP_mvessq
+C/func/-/vDSP_mvessqD
+C/func/-/vDSP_nzcros
+C/func/-/vDSP_nzcrosD
+C/func/-/vDSP_polar
+C/func/-/vDSP_polarD
+C/func/-/vDSP_rect
+C/func/-/vDSP_rectD
+C/func/-/vDSP_rmsqv
+C/func/-/vDSP_rmsqvD
+C/tdef/-/vDSP_Stride
+C/func/-/vDSP_svdiv
+C/func/-/vDSP_svdivD
+C/func/-/vDSP_sve
+C/func/-/vDSP_sveD
+C/func/-/vDSP_svemg
+C/func/-/vDSP_svemgD
+C/func/-/vDSP_svesq
+C/func/-/vDSP_svesqD
+C/func/-/vDSP_svs
+C/func/-/vDSP_svsD
+C/func/-/vDSP_vaam
+C/func/-/vDSP_vaamD
+C/func/-/vDSP_vabs
+C/func/-/vDSP_vabsD
+C/func/-/vDSP_vabsi
+C/func/-/vDSP_vadd
+C/func/-/vDSP_vaddD
+C/func/-/vDSP_vam
+C/func/-/vDSP_vamD
+C/func/-/vDSP_vasbm
+C/func/-/vDSP_vasbmD
+C/func/-/vDSP_vasm
+C/func/-/vDSP_vasmD
+C/func/-/vDSP_vavlin
+C/func/-/vDSP_vavlinD
+C/func/-/vDSP_vclip
+C/func/-/vDSP_vclipc
+C/func/-/vDSP_vclipcD
+C/func/-/vDSP_vclipD
+C/func/-/vDSP_vclr
+C/func/-/vDSP_vclrD
+C/func/-/vDSP_vcmprs
+C/func/-/vDSP_vcmprsD
+C/func/-/vDSP_vdbcon
+C/func/-/vDSP_vdbconD
+C/func/-/vDSP_vdist
+C/func/-/vDSP_vdistD
+C/func/-/vDSP_vdiv
+C/func/-/vDSP_vdivD
+C/func/-/vDSP_vdivi
+C/func/-/vDSP_vdpsp
+C/func/-/vDSP_venvlp
+C/func/-/vDSP_venvlpD
+C/func/-/vDSP_veqvi
+C/macro/-/vDSP_Version0
+C/macro/-/vDSP_Version1
+C/func/-/vDSP_vfill
+C/func/-/vDSP_vfillD
+C/func/-/vDSP_vfilli
+C/func/-/vDSP_vfix16
+C/func/-/vDSP_vfix16D
+C/func/-/vDSP_vfix32
+C/func/-/vDSP_vfix32D
+C/func/-/vDSP_vfix8
+C/func/-/vDSP_vfix8D
+C/func/-/vDSP_vfixr16
+C/func/-/vDSP_vfixr16D
+C/func/-/vDSP_vfixr32
+C/func/-/vDSP_vfixr32D
+C/func/-/vDSP_vfixr8
+C/func/-/vDSP_vfixr8D
+C/func/-/vDSP_vfixru16
+C/func/-/vDSP_vfixru16D
+C/func/-/vDSP_vfixru32
+C/func/-/vDSP_vfixru32D
+C/func/-/vDSP_vfixru8
+C/func/-/vDSP_vfixru8D
+C/func/-/vDSP_vfixu16
+C/func/-/vDSP_vfixu16D
+C/func/-/vDSP_vfixu32
+C/func/-/vDSP_vfixu32D
+C/func/-/vDSP_vfixu8
+C/func/-/vDSP_vfixu8D
+C/func/-/vDSP_vflt16
+C/func/-/vDSP_vflt16D
+C/func/-/vDSP_vflt32
+C/func/-/vDSP_vflt32D
+C/func/-/vDSP_vflt8
+C/func/-/vDSP_vflt8D
+C/func/-/vDSP_vfltu16
+C/func/-/vDSP_vfltu16D
+C/func/-/vDSP_vfltu32
+C/func/-/vDSP_vfltu32D
+C/func/-/vDSP_vfltu8
+C/func/-/vDSP_vfltu8D
+C/func/-/vDSP_vfrac
+C/func/-/vDSP_vfracD
+C/func/-/vDSP_vgathr
+C/func/-/vDSP_vgathra
+C/func/-/vDSP_vgathraD
+C/func/-/vDSP_vgathrD
+C/func/-/vDSP_vgen
+C/func/-/vDSP_vgenD
+C/func/-/vDSP_vgenp
+C/func/-/vDSP_vgenpD
+C/func/-/vDSP_viclip
+C/func/-/vDSP_viclipD
+C/func/-/vDSP_vindex
+C/func/-/vDSP_vindexD
+C/func/-/vDSP_vintb
+C/func/-/vDSP_vintbD
+C/func/-/vDSP_vlim
+C/func/-/vDSP_vlimD
+C/func/-/vDSP_vlint
+C/func/-/vDSP_vlintD
+C/func/-/vDSP_vma
+C/func/-/vDSP_vmaD
+C/func/-/vDSP_vmax
+C/func/-/vDSP_vmaxD
+C/func/-/vDSP_vmaxmg
+C/func/-/vDSP_vmaxmgD
+C/func/-/vDSP_vmin
+C/func/-/vDSP_vminD
+C/func/-/vDSP_vminmg
+C/func/-/vDSP_vminmgD
+C/func/-/vDSP_vmma
+C/func/-/vDSP_vmmaD
+C/func/-/vDSP_vmmsb
+C/func/-/vDSP_vmmsbD
+C/func/-/vDSP_vmsa
+C/func/-/vDSP_vmsaD
+C/func/-/vDSP_vmsb
+C/func/-/vDSP_vmsbD
+C/func/-/vDSP_vmul
+C/func/-/vDSP_vmulD
+C/func/-/vDSP_vnabs
+C/func/-/vDSP_vnabsD
+C/func/-/vDSP_vneg
+C/func/-/vDSP_vnegD
+C/func/-/vDSP_vpoly
+C/func/-/vDSP_vpolyD
+C/func/-/vDSP_vpythg
+C/func/-/vDSP_vpythgD
+C/func/-/vDSP_vqint
+C/func/-/vDSP_vqintD
+C/func/-/vDSP_vramp
+C/func/-/vDSP_vrampD
+C/func/-/vDSP_vrsum
+C/func/-/vDSP_vrsumD
+C/func/-/vDSP_vrvrs
+C/func/-/vDSP_vrvrsD
+C/func/-/vDSP_vsadd
+C/func/-/vDSP_vsaddD
+C/func/-/vDSP_vsaddi
+C/func/-/vDSP_vsbm
+C/func/-/vDSP_vsbmD
+C/func/-/vDSP_vsbsbm
+C/func/-/vDSP_vsbsbmD
+C/func/-/vDSP_vsbsm
+C/func/-/vDSP_vsbsmD
+C/func/-/vDSP_vsdiv
+C/func/-/vDSP_vsdivD
+C/func/-/vDSP_vsdivi
+C/func/-/vDSP_vsimps
+C/func/-/vDSP_vsimpsD
+C/func/-/vDSP_vsma
+C/func/-/vDSP_vsmaD
+C/func/-/vDSP_vsmsa
+C/func/-/vDSP_vsmsaD
+C/func/-/vDSP_vsmsb
+C/func/-/vDSP_vsmsbD
+C/func/-/vDSP_vsmul
+C/func/-/vDSP_vsmulD
+C/func/-/vDSP_vsort
+C/func/-/vDSP_vsortD
+C/func/-/vDSP_vsorti
+C/func/-/vDSP_vsortiD
+C/func/-/vDSP_vspdp
+C/func/-/vDSP_vsq
+C/func/-/vDSP_vsqD
+C/func/-/vDSP_vssq
+C/func/-/vDSP_vssqD
+C/func/-/vDSP_vsub
+C/func/-/vDSP_vsubD
+C/func/-/vDSP_vswap
+C/func/-/vDSP_vswapD
+C/func/-/vDSP_vswsum
+C/func/-/vDSP_vswsumD
+C/func/-/vDSP_vtabi
+C/func/-/vDSP_vtabiD
+C/func/-/vDSP_vthr
+C/func/-/vDSP_vthrD
+C/func/-/vDSP_vthres
+C/func/-/vDSP_vthresD
+C/func/-/vDSP_vthrsc
+C/func/-/vDSP_vthrscD
+C/func/-/vDSP_vtmerg
+C/func/-/vDSP_vtmergD
+C/func/-/vDSP_vtrapz
+C/func/-/vDSP_vtrapzD
+C/func/-/vDSP_wiener
+C/func/-/vDSP_wienerD
+C/func/-/vDSP_zaspec
+C/func/-/vDSP_zaspecD
+C/func/-/vDSP_zcoher
+C/func/-/vDSP_zcoherD
+C/func/-/vDSP_zconv
+C/func/-/vDSP_zconvD
+C/func/-/vDSP_zcspec
+C/func/-/vDSP_zcspecD
+C/func/-/vDSP_zdotpr
+C/func/-/vDSP_zdotprD
+C/func/-/vDSP_zidotpr
+C/func/-/vDSP_zidotprD
+C/func/-/vDSP_zmma
+C/func/-/vDSP_zmmaD
+C/func/-/vDSP_zmms
+C/func/-/vDSP_zmmsD
+C/func/-/vDSP_zmmul
+C/func/-/vDSP_zmmulD
+C/func/-/vDSP_zmsm
+C/func/-/vDSP_zmsmD
+C/func/-/vDSP_zrdesamp
+C/func/-/vDSP_zrdesampD
+C/func/-/vDSP_zrdotpr
+C/func/-/vDSP_zrdotprD
+C/func/-/vDSP_zrvadd
+C/func/-/vDSP_zrvaddD
+C/func/-/vDSP_zrvdiv
+C/func/-/vDSP_zrvdivD
+C/func/-/vDSP_zrvmul
+C/func/-/vDSP_zrvmulD
+C/func/-/vDSP_zrvsub
+C/func/-/vDSP_zrvsubD
+C/func/-/vDSP_ztoc
+C/func/-/vDSP_ztocD
+C/func/-/vDSP_ztrans
+C/func/-/vDSP_ztransD
+C/func/-/vDSP_zvabs
+C/func/-/vDSP_zvabsD
+C/func/-/vDSP_zvadd
+C/func/-/vDSP_zvaddD
+C/func/-/vDSP_zvcma
+C/func/-/vDSP_zvcmaD
+C/func/-/vDSP_zvcmul
+C/func/-/vDSP_zvcmulD
+C/func/-/vDSP_zvconj
+C/func/-/vDSP_zvconjD
+C/func/-/vDSP_zvdiv
+C/func/-/vDSP_zvdivD
+C/func/-/vDSP_zvfill
+C/func/-/vDSP_zvfillD
+C/func/-/vDSP_zvmags
+C/func/-/vDSP_zvmagsD
+C/func/-/vDSP_zvmgsa
+C/func/-/vDSP_zvmgsaD
+C/func/-/vDSP_zvmov
+C/func/-/vDSP_zvmovD
+C/func/-/vDSP_zvmul
+C/func/-/vDSP_zvmulD
+C/func/-/vDSP_zvneg
+C/func/-/vDSP_zvnegD
+C/func/-/vDSP_zvphas
+C/func/-/vDSP_zvphasD
+C/func/-/vDSP_zvsma
+C/func/-/vDSP_zvsmaD
+C/func/-/vDSP_zvsub
+C/func/-/vDSP_zvsubD
+C/func/-/vDSP_zvzsml
+C/func/-/vDSP_zvzsmlD
+C/econst/-/vdTypeAlpha
+C/econst/-/vdTypeBasic
+C/econst/-/vdTypeMask
+C/func/-/VDUseSafeBuffers
+C/func/-/VDUseThisCLUT
+Objective-C/clm/CIVector/vectorWithString:
+Objective-C/clm/CIVector/vectorWithValues:count:
+Objective-C/clm/CIVector/vectorWithX:
+Objective-C/clm/CIVector/vectorWithX:Y:
+Objective-C/clm/CIVector/vectorWithX:Y:Z:
+Objective-C/clm/CIVector/vectorWithX:Y:Z:W:
+Objective-C/instp/CAEmitterCell/velocity
+Objective-C/instm/CAEmitterCell/velocity
+Objective-C/instp/CAEmitterLayer/velocity
+Objective-C/instm/CAEmitterLayer/velocity
+Objective-C/instp/CAEmitterCell/velocityRange
+Objective-C/instm/CAEmitterCell/velocityRange
+JavaScript/data/Navigator/vendor
+JavaScript/clconst/WebGLRenderingContext/VENDOR
+Objective-C/instm/NSEvent/vendorDefined
+Objective-C/instm/NSEvent/vendorID
+Objective-C/instm/NSEvent/vendorPointingDeviceType
+C/func/-/VendorRelease
+JavaScript/data/Navigator/vendorSub
+Objective-C/instm/DRBurnProgressPanel/verboseProgressStatus
+C/econst/-/verChina
+C/econst/-/verFarEastGeneric
+C/econst/-/verGreece
+C/econst/-/verGreecePoly
+C/func/-/verify_callback
+Objective-C/instm/DRBurnSetupPanel/verifyBurn:
+Objective-C/intfm/DRTrackDataProduction/verifyDataForTrack:inBuffer:length:atAddress:blockSize:ioFlags:
+Objective-C/instm/DRBurn(PropertyConvenienceMethods)/verifyDisc
+Objective-C/instm/ODRecord/verifyExtendedWithAuthenticationType:authenticationItems:continueItems:context:error:
+Objective-C/instm/ODRecord/verifyPassword:error:
+Objective-C/intfm/DRTrackDataProduction/verifyPreGapForTrack:inBuffer:length:atAddress:blockSize:ioFlags:
+C/econst/-/verInternational
+C/econst/-/verIreland
+C/econst/-/verIrishGaelicScript
+C/econst/-/verMultilingual
+C/func/-/verr
+C/func/-/verrc
+C/func/-/verrx
+C/econst/-/verScriptGeneric
+Objective-C/instm/NSXMLDocument/version
+JavaScript/instp/Application/version
+Objective-C/instm/NSHTTPCookie/version
+C/tdef/-/version
+C/data/IOFireWireReadQuadletCommandInterface/version
+C/data/IOFireWireCompareSwapCommandInterface_v3/version
+C/data/IOFireWireConfigDirectoryInterface/version
+C/data/IOFireWireLocalUnitDirectoryInterface/version
+C/data/IOFireWireIsochPortInterface/version
+C/data/IOFireWireWriteQuadletCommandInterface/version
+C/data/IOFireWireDeviceInterface/version
+C/data/IOFireWireLocalIsochPortInterface/version
+C/data/IOFireWireLibVectorCommandInterface/version
+C/data/IOFireWireNuDCLPoolInterface/version
+C/data/IOFireWireRemoteIsochPortInterface/version
+C/data/IOFireWirePHYCommandInterface/version
+C/data/IOFWAsyncStreamListenerInterface/version
+C/data/IOFireWireWriteCommandInterface/version
+C/data/IOFireWireCommandInterface/version
+C/data/IOFireWirePhysicalAddressSpaceInterface/version
+C/data/IOFireWireLibPHYPacketListenerInterface/version
+C/data/IOFireWirePseudoAddressSpaceInterface/version
+C/data/IOFireWireDCLCommandPoolInterface/version
+C/data/IOFireWireReadCommandInterface/version
+C/data/IOFireWireCompareSwapCommandInterface/version
+C/data/IOFireWireAsyncStreamCommandInterface/version
+C/data/IOFireWireIsochChannelInterface/version
+C/data/MMCDeviceInterface/version
+C/data/SCSITaskDeviceInterface/version
+C/data/SCSITaskInterface/version
+Objective-C/clm/NSObject/version
+JavaScript/data/Database/version
+JavaScript/data/DatabaseSync/version
+JavaScript/data/HTMLHtmlElement/version
+JavaScript/clconst/WebGLRenderingContext/VERSION
+Objective-C/intfm/FxVersioningAPI/versionAtCreation
+Objective-C/instm/NSCoder/versionForClassName:
+Objective-C/instm/NSAttributeDescription/versionHash
+Objective-C/instm/NSRelationshipDescription/versionHash
+Objective-C/instm/NSPropertyDescription/versionHash
+Objective-C/instm/NSEntityDescription/versionHash
+Objective-C/instm/NSPropertyDescription/versionHashModifier
+Objective-C/instm/NSEntityDescription/versionHashModifier
+Objective-C/instm/NSManagedObjectModel/versionIdentifiers
+C/econst/-/verSpain
+C/econst/-/verSpLatinAmerica
+C/econst/-/verTaiwan
+JavaScript/clconst/WebGLRenderingContext/VERTEX_ATTRIB_ARRAY_BUFFER_BINDING
+JavaScript/clconst/WebGLRenderingContext/VERTEX_ATTRIB_ARRAY_ENABLED
+JavaScript/clconst/WebGLRenderingContext/VERTEX_ATTRIB_ARRAY_NORMALIZED
+JavaScript/clconst/WebGLRenderingContext/VERTEX_ATTRIB_ARRAY_POINTER
+JavaScript/clconst/WebGLRenderingContext/VERTEX_ATTRIB_ARRAY_SIZE
+JavaScript/clconst/WebGLRenderingContext/VERTEX_ATTRIB_ARRAY_STRIDE
+JavaScript/clconst/WebGLRenderingContext/VERTEX_ATTRIB_ARRAY_TYPE
+JavaScript/clconst/WebGLRenderingContext/VERTEX_SHADER
+JavaScript/instm/WebGLRenderingContext/vertexAttrib1f
+JavaScript/instm/WebGLRenderingContext/vertexAttrib1fv
+JavaScript/instm/WebGLRenderingContext/vertexAttrib2f
+JavaScript/instm/WebGLRenderingContext/vertexAttrib2fv
+JavaScript/instm/WebGLRenderingContext/vertexAttrib3f
+JavaScript/instm/WebGLRenderingContext/vertexAttrib3fv
+JavaScript/instm/WebGLRenderingContext/vertexAttrib4f
+JavaScript/instm/WebGLRenderingContext/vertexAttrib4fv
+JavaScript/instm/WebGLRenderingContext/vertexAttribPointer
+JavaScript/clconst/OverflowEvent/VERTICAL
+Objective-C/instp/CLLocation/verticalAccuracy
+Objective-C/instm/CLLocation/verticalAccuracy
+Objective-C/instm/NSTextBlock/verticalAlignment
+Objective-C/instm/PDFBorder/verticalCornerRadius
+Objective-C/instm/NSScrollView/verticalLineScroll
+Objective-C/instm/NSTableView/verticalMotionCanBeginDrag
+JavaScript/data/OverflowEvent/verticalOverflow
+Objective-C/instm/NSScrollView/verticalPageScroll
+Objective-C/instm/NSPrintInfo/verticalPagination
+Objective-C/instm/NSScrollView/verticalRulerView
+Objective-C/instm/NSScrollView/verticalScroller
+Objective-C/instm/NSDateFormatter/veryShortMonthSymbols
+Objective-C/instm/NSDateFormatter/veryShortStandaloneMonthSymbols
+Objective-C/instm/NSDateFormatter/veryShortStandaloneWeekdaySymbols
+Objective-C/instm/NSDateFormatter/veryShortWeekdaySymbols
+C/func/-/vexpf
+C/func/-/vexpm1f
+C/func/-/vfabf
+C/tdef/-/vFloat
+C/func/-/vfloorf
+C/func/-/vflush
+C/func/-/vfmodf
+C/func/-/vfork
+C/func/-/vfprintf
+C/func/-/vfprintf_l
+C/func/-/vfs_64bitready
+C/func/-/vfs_addname
+C/func/-/vfs_authcache_ttl
+C/func/-/vfs_authopaque
+C/func/-/vfs_authopaqueaccess
+C/func/-/vfs_busy
+C/func/-/vfs_clearauthcache_ttl
+C/func/-/vfs_clearauthopaque
+C/func/-/vfs_clearauthopaqueaccess
+C/func/-/vfs_clearextendedsecurity
+C/func/-/vfs_clearflags
+C/func/-/vfs_context_create
+C/func/-/vfs_context_current
+C/func/-/vfs_context_is64bit
+C/func/-/vfs_context_issignal
+C/func/-/vfs_context_pid
+C/func/-/vfs_context_proc
+C/func/-/vfs_context_rele
+C/func/-/vfs_context_suser
+C/func/-/vfs_context_ucred
+C/func/-/vfs_devblocksize
+C/func/-/vfs_event_init
+C/func/-/vfs_event_signal
+C/func/-/vfs_fhtovp
+C/func/-/vfs_flags
+C/func/-/vfs_fsadd
+C/func/-/vfs_fsprivate
+C/func/-/vfs_fsremove
+C/func/-/vfs_getattr
+C/func/-/vfs_getnewfsid
+C/func/-/vfs_getvfs
+C/func/-/vfs_init
+C/func/-/vfs_init_io_attributes
+C/func/-/vfs_ioattr
+C/func/-/vfs_isforce
+C/func/-/vfs_isrdonly
+C/func/-/vfs_isrdwr
+C/func/-/vfs_isreload
+C/func/-/vfs_issynchronous
+C/func/-/vfs_isunmount
+C/func/-/vfs_isupdate
+C/func/-/vfs_iswriteupgrade
+C/func/-/vfs_iterate
+C/func/-/vfs_maxsymlen
+C/func/-/vfs_mount
+C/func/-/vfs_mountedon
+C/func/-/vfs_name
+C/func/-/vfs_quotactl
+C/func/-/vfs_removename
+C/func/-/vfs_root
+C/func/-/vfs_rootvnode
+C/func/-/vfs_setattr
+C/func/-/vfs_setauthcache_ttl
+C/func/-/vfs_setauthopaque
+C/func/-/vfs_setauthopaqueaccess
+C/func/-/vfs_setextendedsecurity
+C/func/-/vfs_setflags
+C/func/-/vfs_setfsprivate
+C/func/-/vfs_setioattr
+C/func/-/vfs_setlocklocal
+C/func/-/vfs_setmaxsymlen
+C/func/-/vfs_start
+C/func/-/vfs_statfs
+C/func/-/vfs_sync
+C/func/-/vfs_sysctl
+C/func/-/vfs_typenum
+C/func/-/vfs_unbusy
+C/func/-/vfs_unmount
+C/func/-/vfs_unmountbyfsid
+C/func/-/vfs_update_vfsstat
+C/func/-/vfs_vget
+C/func/-/vfs_vptofh
+C/func/-/vfscanf
+C/func/-/vfscanf_l
+C/func/-/vfwprintf
+C/func/-/vfwprintf_l
+C/func/-/vfwscanf
+C/func/-/vfwscanf_l
+C/func/-/vid_attr
+C/func/-/vid_puts
+C/func/-/vidattr
+Objective-C/instm/IMAVManager/videoDataSource
+C/tdef/-/VideoDigitizerComponent
+C/tdef/-/VideoDigitizerError
+JavaScript/data/HTMLVideoElement/videoHeight
+Objective-C/instm/IMAVManager/videoOptimizationOptions
+Objective-C/instm/QTCaptureView/videoPreviewConnection
+JavaScript/data/HTMLVideoElement/videoWidth
+C/func/-/vidputs
+Objective-C/instm/IBInspector/view
+Objective-C/instm/NSToolbarItem/view
+Objective-C/instm/AMBundleAction/view
+Objective-C/instm/NSViewController/view
+Objective-C/instm/NSStatusItem/view
+Objective-C/instm/NSPrintOperation/view
+Objective-C/instm/NSCollectionViewItem/view
+Objective-C/instm/NSTabViewItem/view
+Objective-C/instm/NSMenuItem/view
+Objective-C/instm/NSOpenGLLayer/view
+Objective-C/instp/NSOpenGLLayer/view
+Objective-C/instm/NSOpenGLContext/view
+JavaScript/data/UIEvent/view
+Objective-C/instm/NSObject/view:stringForToolTip:point:userData:
+Objective-C/instm/NSObject/view:willDisplayImage:
+Objective-C/instm/NSViewAnimation/viewAnimations
+Objective-C/instm/NSClipView/viewBoundsChanged:
+JavaScript/data/SVGFitToViewBox/viewBox
+JavaScript/data/SVGViewSpec/viewBoxString
+Objective-C/instm/NSView/viewDidEndLiveResize
+Objective-C/instm/NSView/viewDidHide
+Objective-C/intfm/WebDocumentView/viewDidMoveToHostWindow
+Objective-C/instm/NSView/viewDidMoveToSuperview
+Objective-C/instm/NSRuleEditor/viewDidMoveToWindow
+Objective-C/instm/NSView/viewDidMoveToWindow
+Objective-C/instm/NSView/viewDidUnhide
+Objective-C/instm/SFAuthorizationPluginView/viewForType:
+Objective-C/instm/CIFilter/viewForUIConfiguration:excludedKeys:
+Objective-C/instm/NSClipView/viewFrameChanged:
+Objective-C/instm/IBInspector/viewNibName
+JavaScript/data/SVGSVGElement/viewport
+JavaScript/clconst/WebGLRenderingContext/VIEWPORT
+JavaScript/instm/WebGLRenderingContext/viewport
+JavaScript/data/SVGElement/viewportElement
+Objective-C/instm/NSColorPicker/viewSizeChanged:
+Objective-C/intfm/NSColorPickingDefault/viewSizeChanged:
+Objective-C/instm/NSWindow/viewsNeedDisplay
+JavaScript/data/SVGViewElement/viewTarget
+JavaScript/data/SVGViewSpec/viewTarget
+JavaScript/data/SVGViewSpec/viewTargetString
+Objective-C/instm/NSView/viewWillDraw
+Objective-C/intfm/WebDocumentView/viewWillMoveToHostWindow:
+Objective-C/instm/NSView/viewWillMoveToSuperview:
+Objective-C/instm/NSView/viewWillMoveToWindow:
+Objective-C/instm/NSView/viewWillStartLiveResize
+Objective-C/clm/IKFilterUIView/viewWithFrame:filter:
+Objective-C/instm/NSView/viewWithTag:
+C/tdef/-/vImage_AffineTransform
+C/tdef/-/vImage_Buffer
+C/tdef/-/vImage_Error
+C/tdef/-/vImage_Flags
+C/func/-/vImageAffineWarp_ARGB8888
+C/func/-/vImageAffineWarp_ARGBFFFF
+C/func/-/vImageAffineWarp_Planar8
+C/func/-/vImageAffineWarp_PlanarF
+C/func/-/vImageAlphaBlend_ARGB8888
+C/func/-/vImageAlphaBlend_ARGBFFFF
+C/func/-/vImageAlphaBlend_NonpremultipliedToPremultiplied_ARGB8888
+C/func/-/vImageAlphaBlend_NonpremultipliedToPremultiplied_ARGBFFFF
+C/func/-/vImageAlphaBlend_NonpremultipliedToPremultiplied_Planar8
+C/func/-/vImageAlphaBlend_NonpremultipliedToPremultiplied_PlanarF
+C/func/-/vImageAlphaBlend_Planar8
+C/func/-/vImageAlphaBlend_PlanarF
+C/func/-/vImageBoxConvolve_ARGB8888
+C/func/-/vImageBoxConvolve_Planar8
+C/func/-/vImageBufferFill_ARGB8888
+C/func/-/vImageBufferFill_ARGBFFFF
+C/func/-/vImageClip_PlanarF
+C/func/-/vImageClipToAlpha_ARGB8888
+C/func/-/vImageClipToAlpha_ARGBFFFF
+C/func/-/vImageClipToAlpha_Planar8
+C/func/-/vImageClipToAlpha_PlanarF
+C/func/-/vImageContrastStretch_ARGB8888
+C/func/-/vImageContrastStretch_ARGBFFFF
+C/func/-/vImageContrastStretch_Planar8
+C/func/-/vImageContrastStretch_PlanarF
+C/func/-/vImageConvert_16SToF
+C/func/-/vImageConvert_16UToF
+C/func/-/vImageConvert_16UToPlanar8
+C/func/-/vImageConvert_ARGB1555toARGB8888
+C/func/-/vImageConvert_ARGB1555toPlanar8
+C/func/-/vImageConvert_ARGB8888toARGB1555
+C/func/-/vImageConvert_ARGB8888toPlanar8
+C/func/-/vImageConvert_ARGB8888toRGB565
+C/func/-/vImageConvert_ARGB8888toRGB888
+C/func/-/vImageConvert_ARGBFFFFtoPlanarF
+C/func/-/vImageConvert_ChunkyToPlanar8
+C/func/-/vImageConvert_ChunkyToPlanarF
+C/func/-/vImageConvert_FTo16S
+C/func/-/vImageConvert_FTo16U
+C/func/-/vImageConvert_Planar16FtoPlanarF
+C/func/-/vImageConvert_Planar8To16U
+C/func/-/vImageConvert_Planar8toARGB1555
+C/func/-/vImageConvert_Planar8toARGB8888
+C/func/-/vImageConvert_Planar8toPlanarF
+C/func/-/vImageConvert_Planar8toRGB565
+C/func/-/vImageConvert_Planar8toRGB888
+C/func/-/vImageConvert_PlanarFtoARGBFFFF
+C/func/-/vImageConvert_PlanarFtoPlanar16F
+C/func/-/vImageConvert_PlanarFtoPlanar8
+C/func/-/vImageConvert_PlanarFtoRGBFFF
+C/func/-/vImageConvert_PlanarToChunky8
+C/func/-/vImageConvert_PlanarToChunkyF
+C/func/-/vImageConvert_RGB565toARGB8888
+C/func/-/vImageConvert_RGB565toPlanar8
+C/func/-/vImageConvert_RGB888toARGB8888
+C/func/-/vImageConvert_RGB888toPlanar8
+C/func/-/vImageConvert_RGBFFFtoPlanarF
+C/func/-/vImageConvolve_ARGB8888
+C/func/-/vImageConvolve_ARGBFFFF
+C/func/-/vImageConvolve_Planar8
+C/func/-/vImageConvolve_PlanarF
+C/func/-/vImageConvolveMultiKernel_ARGB8888
+C/func/-/vImageConvolveMultiKernel_ARGBFFFF
+C/func/-/vImageConvolveWithBias_ARGB8888
+C/func/-/vImageConvolveWithBias_ARGBFFFF
+C/func/-/vImageConvolveWithBias_Planar8
+C/func/-/vImageConvolveWithBias_PlanarF
+C/func/-/vImageCreateGammaFunction
+C/func/-/vImageDestroyGammaFunction
+C/func/-/vImageDestroyResamplingFilter
+C/func/-/vImageDilate_ARGB8888
+C/func/-/vImageDilate_ARGBFFFF
+C/func/-/vImageDilate_Planar8
+C/func/-/vImageDilate_PlanarF
+C/func/-/vImageEndsInContrastStretch_ARGB8888
+C/func/-/vImageEndsInContrastStretch_ARGBFFFF
+C/func/-/vImageEndsInContrastStretch_Planar8
+C/func/-/vImageEndsInContrastStretch_PlanarF
+C/func/-/vImageEqualization_ARGB8888
+C/func/-/vImageEqualization_ARGBFFFF
+C/func/-/vImageEqualization_Planar8
+C/func/-/vImageEqualization_PlanarF
+C/func/-/vImageErode_ARGB8888
+C/func/-/vImageErode_ARGBFFFF
+C/func/-/vImageErode_Planar8
+C/func/-/vImageErode_PlanarF
+C/func/-/vImageFlatten_ARGB8888ToRGB888
+C/func/-/vImageFlatten_ARGBFFFFToRGBFFF
+C/func/-/vImageGamma_Planar8toPlanarF
+C/func/-/vImageGamma_PlanarF
+C/func/-/vImageGamma_PlanarFtoPlanar8
+C/func/-/vImageGetMinimumGeometryTempBufferSize
+C/func/-/vImageGetMinimumTempBufferSizeForConvolution
+C/func/-/vImageGetMinimumTempBufferSizeForHistogram
+C/func/-/vImageGetMinimumTempBufferSizeForMinMax
+C/func/-/vImageGetResamplingFilterSize
+C/func/-/vImageHistogramCalculation_ARGB8888
+C/func/-/vImageHistogramCalculation_ARGBFFFF
+C/func/-/vImageHistogramCalculation_Planar8
+C/func/-/vImageHistogramCalculation_PlanarF
+C/func/-/vImageHistogramSpecification_ARGB8888
+C/func/-/vImageHistogramSpecification_ARGBFFFF
+C/func/-/vImageHistogramSpecification_Planar8
+C/func/-/vImageHistogramSpecification_PlanarF
+C/func/-/vImageHorizontalReflect_ARGB8888
+C/func/-/vImageHorizontalReflect_ARGBFFFF
+C/func/-/vImageHorizontalReflect_Planar8
+C/func/-/vImageHorizontalReflect_PlanarF
+C/func/-/vImageHorizontalShear_ARGB8888
+C/func/-/vImageHorizontalShear_ARGBFFFF
+C/func/-/vImageHorizontalShear_Planar8
+C/func/-/vImageHorizontalShear_PlanarF
+C/func/-/vImageInterpolatedLookupTable_PlanarF
+C/func/-/vImageLookupTable_Planar8toPlanarF
+C/func/-/vImageLookupTable_PlanarFtoPlanar8
+C/func/-/vImageMatrixMultiply_ARGB8888
+C/func/-/vImageMatrixMultiply_ARGBFFFF
+C/func/-/vImageMatrixMultiply_Planar8
+C/func/-/vImageMatrixMultiply_PlanarF
+C/func/-/vImageMax_ARGB8888
+C/func/-/vImageMax_ARGBFFFF
+C/func/-/vImageMax_Planar8
+C/func/-/vImageMax_PlanarF
+C/func/-/vImageMin_ARGB8888
+C/func/-/vImageMin_ARGBFFFF
+C/func/-/vImageMin_Planar8
+C/func/-/vImageMin_PlanarF
+C/func/-/vImageNewResamplingFilter
+C/func/-/vImageNewResamplingFilterForFunctionUsingBuffer
+C/func/-/vImageOverwriteChannels_ARGB8888
+C/func/-/vImageOverwriteChannels_ARGBFFFF
+C/func/-/vImageOverwriteChannelsWithPixel_ARGB8888
+C/func/-/vImageOverwriteChannelsWithPixel_ARGBFFFF
+C/func/-/vImageOverwriteChannelsWithScalar_ARGB8888
+C/func/-/vImageOverwriteChannelsWithScalar_ARGBFFFF
+C/func/-/vImageOverwriteChannelsWithScalar_Planar8
+C/func/-/vImageOverwriteChannelsWithScalar_PlanarF
+C/func/-/vImagePermuteChannels_ARGB8888
+C/func/-/vImagePermuteChannels_ARGBFFFF
+C/func/-/vImagePiecewisePolynomial_Planar8toPlanarF
+C/func/-/vImagePiecewisePolynomial_PlanarF
+C/func/-/vImagePiecewisePolynomial_PlanarFtoPlanar8
+C/func/-/vImagePiecewiseRational_PlanarF
+C/tdef/-/vImagePixelCount
+C/func/-/vImagePNGDecompressionFilter
+C/func/-/vImagePremultipliedAlphaBlend_ARGB8888
+C/func/-/vImagePremultipliedAlphaBlend_ARGBFFFF
+C/func/-/vImagePremultipliedAlphaBlend_Planar8
+C/func/-/vImagePremultipliedAlphaBlend_PlanarF
+C/func/-/vImagePremultipliedConstAlphaBlend_ARGB8888
+C/func/-/vImagePremultipliedConstAlphaBlend_ARGBFFFF
+C/func/-/vImagePremultipliedConstAlphaBlend_Planar8
+C/func/-/vImagePremultipliedConstAlphaBlend_PlanarF
+C/func/-/vImagePremultiplyData_ARGB8888
+C/func/-/vImagePremultiplyData_ARGBFFFF
+C/func/-/vImagePremultiplyData_Planar8
+C/func/-/vImagePremultiplyData_PlanarF
+C/func/-/vImagePremultiplyData_RGBA8888
+C/func/-/vImagePremultiplyData_RGBAFFFF
+C/func/-/vImageRichardsonLucyDeConvolve_ARGB8888
+C/func/-/vImageRichardsonLucyDeConvolve_ARGBFFFF
+C/func/-/vImageRichardsonLucyDeConvolve_Planar8
+C/func/-/vImageRichardsonLucyDeConvolve_PlanarF
+C/func/-/vImageRotate90_ARGB8888
+C/func/-/vImageRotate90_ARGBFFFF
+C/func/-/vImageRotate90_Planar8
+C/func/-/vImageRotate90_PlanarF
+C/func/-/vImageRotate_ARGB8888
+C/func/-/vImageRotate_ARGBFFFF
+C/func/-/vImageRotate_Planar8
+C/func/-/vImageRotate_PlanarF
+C/func/-/vImageScale_ARGB8888
+C/func/-/vImageScale_ARGBFFFF
+C/func/-/vImageScale_Planar8
+C/func/-/vImageScale_PlanarF
+C/func/-/vImageSelectChannels_ARGB8888
+C/func/-/vImageSelectChannels_ARGBFFFF
+C/func/-/vImageTableLookUp_ARGB8888
+C/func/-/vImageTableLookUp_Planar8
+C/func/-/vImageTentConvolve_ARGB8888
+C/func/-/vImageTentConvolve_Planar8
+C/func/-/vImageUnpremultiplyData_ARGB8888
+C/func/-/vImageUnpremultiplyData_ARGBFFFF
+C/func/-/vImageUnpremultiplyData_Planar8
+C/func/-/vImageUnpremultiplyData_PlanarF
+C/func/-/vImageUnpremultiplyData_RGBA8888
+C/func/-/vImageUnpremultiplyData_RGBAFFFF
+C/func/-/vImageVerticalReflect_ARGB8888
+C/func/-/vImageVerticalReflect_ARGBFFFF
+C/func/-/vImageVerticalReflect_Planar8
+C/func/-/vImageVerticalReflect_PlanarF
+C/func/-/vImageVerticalShear_ARGB8888
+C/func/-/vImageVerticalShear_ARGBFFFF
+C/func/-/vImageVerticalShear_Planar8
+C/func/-/vImageVerticalShear_PlanarF
+C/func/-/vintf
+C/func/-/vipowf
+Objective-C/clm/DRFile(VirtualFiles)/virtualFileWithName:data:
+Objective-C/clm/DRFile(VirtualFiles)/virtualFileWithName:dataProducer:
+Objective-C/clm/DRFolder(VirtualFolders)/virtualFolderWithName:
+C/func/-/vis
+C/func/-/vIsamax
+C/func/-/vIsamin
+Objective-C/instm/NSToolbarItem/visibilityPriority
+Objective-C/binding/NSDrawer/visible
+Objective-C/binding/NSPanel/visible
+Objective-C/binding/NSWindow/visible
+JavaScript/data/BarInfo/visible
+JavaScript/data/ScriptProfileNode/visible
+Objective-C/instm/NSScreen/visibleFrame
+Objective-C/instm/IKImageBrowserView/visibleItemIndexes
+Objective-C/instm/NSToolbar/visibleItems
+Objective-C/instm/PDFView/visiblePages
+Objective-C/instm/NSView/visibleRect
+Objective-C/instp/CALayer/visibleRect
+Objective-C/instm/CALayer/visibleRect
+C/func/-/vIsmax
+C/func/-/vIsmin
+Objective-C/instm/QTMovie/visualContext
+Objective-C/instm/QTCaptureVideoPreviewOutput/visualContextForConnection:
+C/func/-/VisualOfCCC
+C/func/-/vL1024Rotate
+C/func/-/vL128Rotate
+C/func/-/vL256Rotate
+C/func/-/vL512Rotate
+C/func/-/vL64Rotate
+C/func/-/vL64Rotate2
+C/econst/-/vLckdErr
+C/func/-/vline
+C/func/-/vline_set
+JavaScript/data/HTMLBodyElement/vLink
+JavaScript/data/HTMLDocument/vlinkColor
+C/func/-/vLL1024Shift
+C/func/-/vLL128Shift
+C/func/-/vLL256Shift
+C/func/-/vLL512Shift
+C/func/-/vLL64Shift
+C/func/-/vLL64Shift2
+C/func/-/vlog10f
+C/func/-/vlog1pf
+C/func/-/vlogbf
+C/func/-/vlogf
+C/func/-/vLR1024Shift
+C/func/-/vLR128Shift
+C/func/-/vLR256Shift
+C/func/-/vLR512Shift
+C/func/-/vLR64Shift
+C/func/-/vLR64Shift2
+C/func/-/vmul
+C/func/-/vmulD
+C/func/-/vMultMatMat_16x16
+C/func/-/vMultMatMat_32x32
+C/func/-/vMultMatMat_4x4
+C/func/-/vMultMatMat_8x8
+C/func/-/vMultMatVec_16x16
+C/func/-/vMultMatVec_32x32
+C/func/-/vMultMatVec_4x4
+C/func/-/vMultMatVec_8x8
+C/func/-/vMultVecMat_16x16
+C/func/-/vMultVecMat_32x32
+C/func/-/vMultVecMat_4x4
+C/func/-/vMultVecMat_8x8
+C/func/-/vn_bwrite
+C/func/-/vn_default_error
+C/func/-/vn_getpath
+C/func/-/vn_path_package_check
+C/func/-/vn_rdwr
+C/func/-/vn_revoke
+C/func/-/vnextafterf
+C/func/-/vnintf
+C/func/-/vnode_addfsref
+C/func/-/vnode_authattr
+C/func/-/vnode_authattr_new
+C/func/-/vnode_authorize
+C/func/-/vnode_clearfsnode
+C/func/-/vnode_clearmountedon
+C/func/-/vnode_clearnocache
+C/func/-/vnode_clearnoreadahead
+C/func/-/vnode_close
+C/func/-/vnode_create
+C/func/-/vnode_fsnode
+C/func/-/vnode_get
+C/func/-/vnode_getattr
+C/func/-/vnode_getname
+C/func/-/vnode_getparent
+C/func/-/vnode_getwithref
+C/func/-/vnode_getwithvid
+C/func/-/vnode_hascleanblks
+C/func/-/vnode_hasdirtyblks
+C/func/-/vnode_isblk
+C/func/-/vnode_ischr
+C/func/-/vnode_isdir
+C/func/-/vnode_isfifo
+C/func/-/vnode_isinuse
+C/func/-/vnode_islnk
+C/func/-/vnode_ismount
+C/func/-/vnode_ismountedon
+C/func/-/vnode_isnamedstream
+C/func/-/vnode_isnocache
+C/func/-/vnode_isnoreadahead
+C/func/-/vnode_israge
+C/func/-/vnode_isrecycled
+C/func/-/vnode_isreg
+C/func/-/vnode_isswap
+C/func/-/vnode_issystem
+C/func/-/vnode_isvroot
+C/func/-/vnode_iterate
+C/func/-/vnode_lookup
+C/func/-/vnode_mount
+C/func/-/vnode_mountedhere
+C/func/-/vnode_open
+C/func/-/vnode_put
+C/func/-/vnode_putname
+C/func/-/vnode_recycle
+C/func/-/vnode_ref
+C/func/-/vnode_rele
+C/func/-/vnode_removefsref
+C/func/-/vnode_setattr
+C/func/-/vnode_setmountedon
+C/func/-/vnode_setmultipath
+C/func/-/vnode_setnocache
+C/func/-/vnode_setnoreadahead
+C/func/-/vnode_settag
+C/func/-/vnode_specrdev
+C/func/-/vnode_startwrite
+C/func/-/vnode_tag
+C/func/-/vnode_uncache_credentials
+C/func/-/vnode_update_identity
+C/func/-/vnode_vfs64bitready
+C/func/-/vnode_vfsisrdonly
+C/func/-/vnode_vfsmaxsymlen
+C/func/-/vnode_vfsname
+C/func/-/vnode_vfstypenum
+C/func/-/vnode_vid
+C/func/-/vnode_vtype
+C/func/-/vnode_waitforwrites
+C/func/-/vnode_writedone
+C/func/-/VNOP_BWRITE
+C/func/-/VNOP_FSYNC
+C/func/-/VNOP_GETXATTR
+C/func/-/VNOP_IOCTL
+C/func/-/VNOP_READ
+C/func/-/VNOP_SETXATTR
+C/func/-/VNOP_STRATEGY
+C/func/-/VNOP_WRITE
+Objective-C/instm/NSSpeechSynthesizer/voice
+C/tdef/-/VoiceDescription
+C/tdef/-/VoiceFileInfo
+C/econst/-/voiceNotFound
+C/tdef/-/VoiceSpec
+C/tdef/-/void
+JavaScript/cl/-/VoidCallback
+JavaScript/instm/TestObj/voidMethod
+JavaScript/instm/TestObj/voidMethodWithArgs
+Objective-C/instm/NSUserDefaults/volatileDomainForName:
+Objective-C/instm/NSUserDefaults/volatileDomainNames
+C/econst/-/volGoneErr
+C/econst/-/volMountChangedBit
+C/econst/-/volMountChangedMask
+C/econst/-/volMountExtendedFlagsBit
+C/econst/-/volMountExtendedFlagsMask
+C/econst/-/volMountFSReservedMask
+C/tdef/-/VolMountInfoHeader
+C/econst/-/volMountInteractBit
+C/econst/-/volMountInteractMask
+C/econst/-/volMountNoLoginMsgFlagBit
+C/econst/-/volMountNoLoginMsgFlagMask
+C/econst/-/volMountSysReservedMask
+C/econst/-/volOffLinErr
+C/econst/-/volOnLinErr
+Objective-C/instm/QTCaptureAudioPreviewOutput/volume
+Objective-C/instm/NSSpeechSynthesizer/volume
+Objective-C/instm/QTTrack/volume
+Objective-C/instm/NSSound/volume
+Objective-C/instm/QTMovie/volume
+JavaScript/data/HTMLMediaElement/volume
+C/tdef/-/VolumeMountInfoHeader
+C/tdef/-/VolumeParam
+C/tdef/-/VolumeType
+C/econst/-/volVMBusyErr
+C/func/-/vpowf
+C/func/-/vprintf
+C/func/-/vprintf_l
+C/func/-/vR1024Rotate
+C/func/-/vR128Rotate
+C/func/-/vR256Rotate
+C/func/-/vR512Rotate
+C/func/-/vR64Rotate
+C/func/-/vR64Rotate2
+C/func/-/vrecf
+C/func/-/vremainderf
+C/func/-/vremquof
+C/func/-/vrsqrtf
+C/tag/-/vS1024
+C/tdef/-/vS1024
+C/func/-/vS1024Add
+C/func/-/vS1024AddS
+C/func/-/vS1024Divide
+C/func/-/vS1024HalfMultiply
+C/func/-/vS1024Mod
+C/func/-/vS1024Neg
+C/func/-/vS1024Sub
+C/func/-/vS1024SubS
+C/tdef/-/vS128
+C/tag/-/vS128
+C/func/-/vS128Add
+C/func/-/vS128AddS
+C/func/-/vS128Divide
+C/func/-/vS128FullMultiply
+C/func/-/vS128HalfMultiply
+C/func/-/vS128Neg
+C/func/-/vS128Sub
+C/func/-/vS128SubS
+C/func/-/vS16Divide
+C/func/-/vS16HalfMultiply
+C/tag/-/vS256
+C/tdef/-/vS256
+C/func/-/vS256Add
+C/func/-/vS256AddS
+C/func/-/vS256Divide
+C/func/-/vS256FullMultiply
+C/func/-/vS256HalfMultiply
+C/func/-/vS256Mod
+C/func/-/vS256Neg
+C/func/-/vS256Sub
+C/func/-/vS256SubS
+C/func/-/vS32Divide
+C/func/-/vS32FullMulEven
+C/func/-/vS32FullMulOdd
+C/func/-/vS32HalfMultiply
+C/tag/-/vS512
+C/tdef/-/vS512
+C/func/-/vS512Add
+C/func/-/vS512AddS
+C/func/-/vS512Divide
+C/func/-/vS512FullMultiply
+C/func/-/vS512HalfMultiply
+C/func/-/vS512Mod
+C/func/-/vS512Neg
+C/func/-/vS512Sub
+C/func/-/vS512SubS
+C/func/-/vS64Add
+C/func/-/vS64AddS
+C/func/-/vS64Divide
+C/func/-/vS64FullMulEven
+C/func/-/vS64FullMulOdd
+C/func/-/vS64HalfMultiply
+C/func/-/vS64Neg
+C/func/-/vS64Sub
+C/func/-/vS64SubS
+C/func/-/vS8Divide
+C/func/-/vS8HalfMultiply
+C/func/-/vSasum
+C/func/-/vSaxpy
+C/func/-/vscalbf
+C/func/-/vscanf
+C/func/-/vscanf_l
+C/func/-/vScopy
+C/func/-/vSdot
+C/func/-/vSgeadd
+C/func/-/vSgemm
+C/func/-/vSgemtx
+C/func/-/vSgemul
+C/func/-/vSgemv
+C/func/-/vSgemx
+C/func/-/vSgesub
+C/func/-/vSgetmi
+C/func/-/vSgetmo
+C/func/-/vSgevv
+C/func/-/vsignbitf
+C/func/-/vsincosf
+C/func/-/vsinf
+C/func/-/vsinhf
+C/tdef/-/vSInt16
+C/tdef/-/vSInt32
+C/tdef/-/vSInt8
+C/func/-/vsmul
+C/func/-/vsmulD
+C/func/-/vSnaxpy
+C/func/-/vSndot
+C/func/-/vSnorm2
+C/func/-/vsnprintf
+C/func/-/vsnprintf_l
+C/func/-/vSnrm2
+JavaScript/data/HTMLImageElement/vspace
+JavaScript/data/HTMLAppletElement/vspace
+JavaScript/data/HTMLObjectElement/vspace
+C/func/-/vsprintf
+C/func/-/vsprintf_l
+C/func/-/vsq
+C/func/-/vsqD
+C/func/-/vsqrtf
+C/func/-/vSrot
+C/func/-/vSscal
+C/func/-/vsscanf
+C/func/-/vsscanf_l
+C/func/-/vssq
+C/func/-/vssqD
+C/func/-/vSsum
+C/func/-/vSswap
+C/func/-/vsub
+C/func/-/vsubD
+C/func/-/vswprintf
+C/func/-/vswprintf_l
+C/func/-/vswscanf
+C/func/-/vswscanf_l
+C/func/-/vSyax
+C/func/-/vsyslog
+C/func/-/vSzaxpy
+C/func/-/vtablelookup
+C/func/-/vtanf
+C/func/-/vtanhf
+C/tdef/-/vU1024
+C/tag/-/vU1024
+C/func/-/vU1024Add
+C/func/-/vU1024AddS
+C/func/-/vU1024Divide
+C/func/-/vU1024HalfMultiply
+C/func/-/vU1024Mod
+C/func/-/vU1024Neg
+C/func/-/vU1024Sub
+C/func/-/vU1024SubS
+C/tag/-/vU128
+C/tdef/-/vU128
+C/func/-/vU128Add
+C/func/-/vU128AddS
+C/func/-/vU128Divide
+C/func/-/vU128FullMultiply
+C/func/-/vU128HalfMultiply
+C/func/-/vU128Neg
+C/func/-/vU128Sub
+C/func/-/vU128SubS
+C/func/-/vU16Divide
+C/func/-/vU16HalfMultiply
+C/tdef/-/vU256
+C/tag/-/vU256
+C/func/-/vU256Add
+C/func/-/vU256AddS
+C/func/-/vU256Divide
+C/func/-/vU256FullMultiply
+C/func/-/vU256HalfMultiply
+C/func/-/vU256Mod
+C/func/-/vU256Neg
+C/func/-/vU256Sub
+C/func/-/vU256SubS
+C/func/-/vU32Divide
+C/func/-/vU32FullMulEven
+C/func/-/vU32FullMulOdd
+C/func/-/vU32HalfMultiply
+C/tdef/-/vU512
+C/tag/-/vU512
+C/func/-/vU512Add
+C/func/-/vU512AddS
+C/func/-/vU512Divide
+C/func/-/vU512FullMultiply
+C/func/-/vU512HalfMultiply
+C/func/-/vU512Mod
+C/func/-/vU512Neg
+C/func/-/vU512Sub
+C/func/-/vU512SubS
+C/func/-/vU64Add
+C/func/-/vU64AddS
+C/func/-/vU64Divide
+C/func/-/vU64FullMulEven
+C/func/-/vU64FullMulOdd
+C/func/-/vU64HalfMultiply
+C/func/-/vU64Neg
+C/func/-/vU64Sub
+C/func/-/vU64SubS
+C/func/-/vU8Divide
+C/func/-/vU8HalfMultiply
+C/tdef/-/vUInt16
+C/tdef/-/vUInt32
+C/tdef/-/vUInt8
+C/func/-/vvacos
+C/func/-/vvacosf
+C/func/-/vvacosh
+C/func/-/vvacoshf
+C/func/-/vvasin
+C/func/-/vvasinf
+C/func/-/vvasinh
+C/func/-/vvasinhf
+C/func/-/vvatan
+C/func/-/vvatan2
+C/func/-/vvatan2f
+C/func/-/vvatanf
+C/func/-/vvatanh
+C/func/-/vvatanhf
+C/func/-/vvceil
+C/func/-/vvceilf
+C/func/-/vvcopysignf
+C/func/-/vvcos
+C/func/-/vvcosf
+C/func/-/vvcosh
+C/func/-/vvcoshf
+C/func/-/vvcosisin
+C/func/-/vvcosisinf
+C/func/-/vvdiv
+C/func/-/vvdivf
+C/func/-/vvexp
+C/func/-/vvexpf
+C/func/-/vvexpm1f
+C/func/-/vvfabf
+C/func/-/vvfloor
+C/func/-/vvfloorf
+C/func/-/vvfmodf
+C/func/-/vvint
+C/func/-/vvintf
+C/func/-/vvlog
+C/func/-/vvlog10
+C/func/-/vvlog10f
+C/func/-/vvlog1pf
+C/func/-/vvlogbf
+C/func/-/vvlogf
+C/func/-/vvnextafterf
+C/func/-/vvnint
+C/func/-/vvnintf
+C/func/-/vvpow
+C/func/-/vvpowf
+C/func/-/vvrec
+C/func/-/vvrecf
+C/func/-/vvremainderf
+C/func/-/vvrsqrt
+C/func/-/vvrsqrtf
+C/func/-/vvsin
+C/func/-/vvsincos
+C/func/-/vvsincosf
+C/func/-/vvsinf
+C/func/-/vvsinh
+C/func/-/vvsinhf
+C/func/-/vvsqrt
+C/func/-/vvsqrtf
+C/func/-/vvtan
+C/func/-/vvtanf
+C/func/-/vvtanh
+C/func/-/vvtanhf
+C/func/-/vw_printw
+C/func/-/vw_scanw
+C/func/-/vwarn
+C/func/-/vwarnc
+C/func/-/vwarnx
+C/func/-/vwprintf
+C/func/-/vwprintf_l
+C/func/-/vwprintw
+C/func/-/vwscanf
+C/func/-/vwscanf_l
+C/func/-/vwscanw
+Objective-C/instm/CIVector/W
+C/func/-/wadd_wch
+C/func/-/wadd_wchnstr
+C/func/-/wadd_wchstr
+C/func/-/waddch
+C/func/-/waddchnstr
+C/func/-/waddchstr
+C/func/-/waddnstr
+C/func/-/waddnwstr
+C/func/-/waddstr
+C/func/-/waddwstr
+Objective-C/instm/NSCondition/wait
+C/func/-/wait
+C/func/-/wait3
+C/func/-/wait4
+Objective-C/instm/NSFileHandle/waitForDataInBackgroundAndNotify
+Objective-C/instm/NSFileHandle/waitForDataInBackgroundAndNotifyForModes:
+C++/clm/IOService/waitForMatchingService
+C++/instm/IOAudioDevice/waitForPendingPowerStateChange
+C++/clm/IOService/waitForService
+C/func/-/waitpid
+C++/instm/IOService/waitQuiet
+Objective-C/instm/NSOperationQueue/waitUntilAllOperationsAreFinished
+Objective-C/instm/NSCondition/waitUntilDate:
+Objective-C/instm/NSTask/waitUntilExit
+Objective-C/instm/NSOperation/waitUntilFinished
+C++/instm/ATATimerEventSource/wakeAtTime
+C++/instm/IOTimerEventSource/wakeAtTime
+C++/instm/IOTimerEventSource/wakeAtTimeMS
+C++/instm/IOTimerEventSource/wakeAtTimeTicks
+C++/instm/IOTimerEventSource/wakeAtTimeUS
+C/func/-/WakeUpProcess
+Objective-C/instm/NSView/wantsDefaultClipping
+Objective-C/intfm/ApertureExportPlugIn/wantsDestinationPathPrompt
+Objective-C/intfm/ApertureExportPlugIn/wantsFileNamingControls
+Objective-C/instm/NSView/wantsLayer
+Objective-C/instm/NSCell/wantsNotificationForMarkedText
+Objective-C/instm/NSObject/wantsPeriodicDraggingUpdates
+Objective-C/instm/NSView/wantsRestingTouches
+Objective-C/intfm/NSTextAttachmentCell/wantsToTrackMouse
+Objective-C/intfm/NSTextAttachmentCell/wantsToTrackMouseForEvent:inRect:ofView:atCharacterIndex:
+C/func/-/warn
+JavaScript/instm/Console/warn
+C/func/-/warnc
+C/tdef/-/warningSAXFunc
+Objective-C/instm/NSLevelIndicator/warningValue
+Objective-C/instm/NSLevelIndicatorCell/warningValue
+Objective-C/binding/NSLevelIndicatorCell/warningValue
+Objective-C/binding/NSLevelIndicator/warningValue
+C/func/-/warnx
+C/func/-/wattr_get
+C/func/-/wattr_off
+C/func/-/wattr_on
+C/func/-/wattr_set
+C/func/-/wattroff
+C/func/-/wattron
+C/func/-/wattrset
+C/func/-/wbkgd
+C/func/-/wbkgdset
+C/func/-/wbkgrnd
+C/func/-/wbkgrndset
+C/func/-/wborder
+C/func/-/wborder_set
+C/func/-/wchgat
+C/func/-/wclear
+C/func/-/wclrtobot
+C/func/-/wclrtoeol
+C/func/-/wcolor_set
+C/func/-/wcrtomb
+C/func/-/wcrtomb_l
+C/func/-/wcscat
+C/func/-/wcschr
+C/func/-/wcscmp
+C/func/-/wcscoll
+C/func/-/wcscoll_l
+C/func/-/wcscpy
+C/func/-/wcscspn
+C/func/-/wcsftime
+C/func/-/wcsftime_l
+C/func/-/wcslcat
+C/func/-/wcslcpy
+C/func/-/wcslen
+C/func/-/wcsncat
+C/func/-/wcsncmp
+C/func/-/wcsncpy
+C/func/-/wcsnrtombs
+C/func/-/wcsnrtombs_l
+C/func/-/wcspbrk
+C/func/-/wcsrchr
+C/func/-/wcsrtombs
+C/func/-/wcsrtombs_l
+C/func/-/wcsspn
+C/func/-/wcsstr
+C/func/-/wcstod
+C/func/-/wcstod_l
+C/func/-/wcstof
+C/func/-/wcstof_l
+C/func/-/wcstoimax
+C/func/-/wcstoimax_l
+C/func/-/wcstok
+C/func/-/wcstol
+C/func/-/wcstol_l
+C/func/-/wcstold
+C/func/-/wcstold_l
+C/func/-/wcstoll
+C/func/-/wcstoll_l
+C/func/-/wcstombs
+C/func/-/wcstombs_l
+C/func/-/wcstoul
+C/func/-/wcstoul_l
+C/func/-/wcstoull
+C/func/-/wcstoull_l
+C/func/-/wcstoumax
+C/func/-/wcstoumax_l
+C/func/-/wcswidth
+C/func/-/wcswidth_l
+C/func/-/wcsxfrm
+C/func/-/wcsxfrm_l
+C/func/-/wctob
+C/func/-/wctob_l
+C/func/-/wctomb
+C/func/-/wctomb_l
+C/func/-/wctrans
+C/func/-/wctrans_l
+C/func/-/wctype
+C/func/-/wctype_l
+C/func/-/wcursyncup
+C/func/-/wcwidth
+C/func/-/wcwidth_l
+C/func/-/wdelch
+C/func/-/wdeleteln
+C/tdef/-/WDParam
+C/tdef/-/WDPBRec
+C++/clm/IODMACommand/weakWithSpecification
+C/data/-/WebActionButtonKey
+C/data/-/WebActionElementKey
+C/data/-/WebActionModifierFlagsKey
+C/data/-/WebActionNavigationTypeKey
+C/data/-/WebActionOriginalURLKey
+Objective-C/instm/WebDataSource/webArchive
+Objective-C/instm/DOMNode/webArchive
+Objective-C/cl/-/WebArchive
+Objective-C/instm/DOMRange/webArchive
+C/data/-/WebArchivePboardType
+Objective-C/cl/-/WebBackForwardList
+C/tdef/-/WebCacheModel
+C/econst/-/WebCacheModelDocumentBrowser
+C/econst/-/WebCacheModelDocumentViewer
+C/econst/-/WebCacheModelPrimaryWebBrowser
+C/func/-/WebConvertNSImageToCGImageRef
+Objective-C/cl/-/WebDataSource
+Objective-C/intf/-/WebDocumentRepresentation
+Objective-C/intf/-/WebDocumentSearching
+Objective-C/intf/-/WebDocumentText
+Objective-C/intf/-/WebDocumentView
+Objective-C/cl/-/WebDownload
+C/tdef/-/WebDragDestinationAction
+C/econst/-/WebDragDestinationActionAny
+C/econst/-/WebDragDestinationActionDHTML
+C/econst/-/WebDragDestinationActionEdit
+C/econst/-/WebDragDestinationActionLoad
+C/econst/-/WebDragDestinationActionNone
+C/tdef/-/WebDragSourceAction
+C/econst/-/WebDragSourceActionAny
+C/econst/-/WebDragSourceActionDHTML
+C/econst/-/WebDragSourceActionImage
+C/econst/-/WebDragSourceActionLink
+C/econst/-/WebDragSourceActionNone
+C/econst/-/WebDragSourceActionSelection
+Objective-C/cat/-/WebEditingDelegate
+C/data/-/WebElementDOMNodeKey
+C/data/-/WebElementFrameKey
+C/data/-/WebElementImageAltStringKey
+C/data/-/WebElementImageKey
+C/data/-/WebElementImageRectKey
+C/data/-/WebElementImageURLKey
+C/data/-/WebElementIsSelectedKey
+C/data/-/WebElementLinkLabelKey
+C/data/-/WebElementLinkTargetFrameKey
+C/data/-/WebElementLinkTitleKey
+C/data/-/WebElementLinkURLKey
+Objective-C/instm/WebDataSource/webFrame
+Objective-C/instm/WebFrameView/webFrame
+Objective-C/cl/-/WebFrame
+Objective-C/instm/DOMDocument/webFrame
+Objective-C/instm/NSObject/webFrame
+Objective-C/cat/-/WebFrameLoadDelegate
+Objective-C/cl/-/WebFrameView
+JavaScript/cl/-/WebGLActiveInfo
+JavaScript/data/DOMWindow/WebGLArrayBuffer
+JavaScript/cl/-/WebGLBuffer
+JavaScript/data/DOMWindow/WebGLByteArray
+JavaScript/cl/-/WebGLContextAttributes
+JavaScript/data/DOMWindow/WebGLFloatArray
+JavaScript/cl/-/WebGLFramebuffer
+JavaScript/data/DOMWindow/WebGLIntArray
+JavaScript/cl/-/WebGLProgram
+JavaScript/cl/-/WebGLRenderbuffer
+JavaScript/data/DOMWindow/WebGLRenderingContext
+JavaScript/cl/-/WebGLRenderingContext
+JavaScript/cl/-/WebGLShader
+JavaScript/data/DOMWindow/WebGLShortArray
+JavaScript/cl/-/WebGLTexture
+JavaScript/cl/-/WebGLUniformLocation
+JavaScript/data/DOMWindow/WebGLUnsignedByteArray
+JavaScript/data/DOMWindow/WebGLUnsignedIntArray
+JavaScript/data/DOMWindow/WebGLUnsignedShortArray
+Objective-C/cl/-/WebHistory
+C/data/-/WebHistoryAllItemsRemovedNotification
+Objective-C/cl/-/WebHistoryItem
+C/data/-/WebHistoryItemChangedNotification
+C/data/-/WebHistoryItemsAddedNotification
+C/data/-/WebHistoryItemsKey
+C/data/-/WebHistoryItemsRemovedNotification
+C/data/-/WebHistoryLoadedNotification
+C/data/-/WebHistorySavedNotification
+C/func/-/WebInitForCarbon
+Objective-C/cat/-/WebJavaPlugIn
+C/tdef/-/WebJNIReturnType
+C/econst/-/WebJNIReturnTypeBoolean
+C/econst/-/WebJNIReturnTypeByte
+C/econst/-/WebJNIReturnTypeChar
+C/econst/-/WebJNIReturnTypeDouble
+C/econst/-/WebJNIReturnTypeFloat
+C/econst/-/WebJNIReturnTypeInt
+C/econst/-/WebJNIReturnTypeInvalid
+C/econst/-/WebJNIReturnTypeLong
+C/econst/-/WebJNIReturnTypeObject
+C/econst/-/WebJNIReturnTypeShort
+C/econst/-/WebJNIReturnTypeVoid
+JavaScript/clconst/CSSRule/WEBKIT_KEYFRAME_RULE
+JavaScript/clconst/CSSRule/WEBKIT_KEYFRAMES_RULE
+JavaScript/data/DOMWindow/WebKitAnimationEvent
+JavaScript/cl/-/WebKitAnimationEvent
+JavaScript/data/HTMLMediaElement/webkitClosedCaptionsVisible
+JavaScript/instm/DOMWindow/webkitConvertPointFromNodeToPage
+JavaScript/instm/DOMWindow/webkitConvertPointFromPageToNode
+JavaScript/data/DOMWindow/WebKitCSSKeyframeRule
+JavaScript/cl/-/WebKitCSSKeyframeRule
+JavaScript/data/DOMWindow/WebKitCSSKeyframesRule
+JavaScript/cl/-/WebKitCSSKeyframesRule
+JavaScript/data/DOMWindow/WebKitCSSMatrix
+JavaScript/cl/-/WebKitCSSMatrix
+JavaScript/data/DOMWindow/WebKitCSSTransformValue
+JavaScript/cl/-/WebKitCSSTransformValue
+JavaScript/data/HTMLVideoElement/webkitDisplayingFullscreen
+JavaScript/instm/HTMLVideoElement/webkitEnterFullscreen
+C/econst/-/WebKitErrorCannotFindPlugIn
+C/econst/-/WebKitErrorCannotLoadPlugIn
+C/econst/-/WebKitErrorCannotShowMIMEType
+C/econst/-/WebKitErrorCannotShowURL
+C/data/-/WebKitErrorDomain
+C/econst/-/WebKitErrorFrameLoadInterruptedByPolicyChange
+C/econst/-/WebKitErrorJavaUnavailable
+C/data/-/WebKitErrorMIMETypeKey
+C/data/-/WebKitErrorPlugInNameKey
+C/data/-/WebKitErrorPlugInPageURLStringKey
+JavaScript/instm/HTMLVideoElement/webkitExitFullscreen
+JavaScript/data/HTMLMediaElement/webkitHasClosedCaptions
+JavaScript/instm/Element/webkitMatchesSelector
+JavaScript/data/DOMWindow/webkitNotifications
+JavaScript/data/WorkerContext/webkitNotifications
+JavaScript/data/DOMWindow/WebKitPoint
+JavaScript/cl/-/WebKitPoint
+JavaScript/data/HTMLMediaElement/webkitPreservesPitch
+JavaScript/data/HTMLVideoElement/webkitSupportsFullscreen
+JavaScript/data/DOMWindow/WebKitTransitionEvent
+JavaScript/cl/-/WebKitTransitionEvent
+C/econst/-/WebMenuItemPDFActualSize
+C/econst/-/WebMenuItemPDFAutoSize
+C/econst/-/WebMenuItemPDFContinuous
+C/econst/-/WebMenuItemPDFFacingPages
+C/econst/-/WebMenuItemPDFNextPage
+C/econst/-/WebMenuItemPDFPreviousPage
+C/econst/-/WebMenuItemPDFSinglePage
+C/econst/-/WebMenuItemPDFZoomIn
+C/econst/-/WebMenuItemPDFZoomOut
+C/econst/-/WebMenuItemTagCopy
+C/econst/-/WebMenuItemTagCopyImageToClipboard
+C/econst/-/WebMenuItemTagCopyLinkToClipboard
+C/econst/-/WebMenuItemTagCut
+C/econst/-/WebMenuItemTagDownloadImageToDisk
+C/econst/-/WebMenuItemTagDownloadLinkToDisk
+C/econst/-/WebMenuItemTagGoBack
+C/econst/-/WebMenuItemTagGoForward
+C/econst/-/WebMenuItemTagIgnoreSpelling
+C/econst/-/WebMenuItemTagLearnSpelling
+C/econst/-/WebMenuItemTagLookUpInDictionary
+C/econst/-/WebMenuItemTagNoGuessesFound
+C/econst/-/WebMenuItemTagOpenFrameInNewWindow
+C/econst/-/WebMenuItemTagOpenImageInNewWindow
+C/econst/-/WebMenuItemTagOpenLinkInNewWindow
+C/econst/-/WebMenuItemTagOpenWithDefaultApplication
+C/econst/-/WebMenuItemTagOther
+C/econst/-/WebMenuItemTagPaste
+C/econst/-/WebMenuItemTagReload
+C/econst/-/WebMenuItemTagSearchInSpotlight
+C/econst/-/WebMenuItemTagSearchWeb
+C/econst/-/WebMenuItemTagSpellingGuess
+C/econst/-/WebMenuItemTagStop
+C/tdef/-/WebNavigationType
+C/econst/-/WebNavigationTypeBackForward
+C/econst/-/WebNavigationTypeFormResubmitted
+C/econst/-/WebNavigationTypeFormSubmitted
+C/econst/-/WebNavigationTypeLinkClicked
+C/econst/-/WebNavigationTypeOther
+C/econst/-/WebNavigationTypeReload
+Objective-C/intf/-/WebOpenPanelResultListener
+Objective-C/cat/-/WebPlugIn
+C/data/-/WebPlugInAttributesKey
+C/data/-/WebPlugInBaseURLKey
+Objective-C/instm/NSObject/webPlugInCallJava:isStatic:returnType:method:arguments:callingURL:exceptionDescription:
+Objective-C/cat/-/WebPlugInContainer
+C/data/-/WebPlugInContainerKey
+Objective-C/instm/NSObject/webPlugInContainerLoadRequest:inFrame:
+Objective-C/instm/NSObject/webPlugInContainerSelectionColor
+Objective-C/instm/NSObject/webPlugInContainerShowStatus:
+C/data/-/WebPlugInContainingElementKey
+Objective-C/instm/NSObject/webPlugInDestroy
+Objective-C/instm/NSObject/webPlugInGetApplet
+Objective-C/instm/NSObject/webPlugInInitialize
+Objective-C/instm/NSObject/webPlugInMainResourceDidFailWithError:
+Objective-C/instm/NSObject/webPlugInMainResourceDidFinishLoading
+Objective-C/instm/NSObject/webPlugInMainResourceDidReceiveData:
+Objective-C/instm/NSObject/webPlugInMainResourceDidReceiveResponse:
+Objective-C/instm/NSObject/webPlugInSetIsSelected:
+C/data/-/WebPlugInShouldLoadMainResourceKey
+Objective-C/instm/NSObject/webPlugInStart
+Objective-C/instm/NSObject/webPlugInStop
+Objective-C/intf/-/WebPlugInViewFactory
+Objective-C/intf/-/WebPolicyDecisionListener
+Objective-C/cat/-/WebPolicyDelegate
+Objective-C/cl/-/WebPreferences
+C/data/-/WebPreferencesChangedNotification
+Objective-C/cl/-/WebResource
+Objective-C/cat/-/WebResourceLoadDelegate
+Objective-C/cat/-/WebScripting
+Objective-C/clm/NSObject/webScriptNameForKey:
+Objective-C/clm/NSObject/webScriptNameForSelector:
+Objective-C/cl/-/WebScriptObject
+Objective-C/instm/WebScriptObject/webScriptValueAtIndex:
+JavaScript/data/DOMWindow/WebSocket
+JavaScript/cl/-/WebSocket
+JavaScript/data/WorkerContext/WebSocket
+Objective-C/cat/-/WebUIDelegate
+Objective-C/cl/-/WebUndefined
+Objective-C/instm/WebFrame/webView
+Objective-C/cl/-/WebView
+Objective-C/instm/NSObject/webView:contextMenuItemsForElement:defaultMenuItems:
+Objective-C/instm/NSObject/webView:createWebViewModalDialogWithRequest:
+Objective-C/instm/NSObject/webView:createWebViewWithRequest:
+Objective-C/instm/NSObject/webView:decidePolicyForMIMEType:request:frame:decisionListener:
+Objective-C/instm/NSObject/webView:decidePolicyForNavigationAction:request:frame:decisionListener:
+Objective-C/instm/NSObject/webView:decidePolicyForNewWindowAction:request:newFrameName:decisionListener:
+Objective-C/instm/NSObject/webView:didCancelClientRedirectForFrame:
+Objective-C/instm/NSObject/webView:didChangeLocationWithinPageForFrame:
+Objective-C/instm/NSObject/webView:didClearWindowObject:forFrame:
+Objective-C/instm/NSObject/webView:didCommitLoadForFrame:
+Objective-C/instm/NSObject/webView:didFailLoadWithError:forFrame:
+Objective-C/instm/NSObject/webView:didFailProvisionalLoadWithError:forFrame:
+Objective-C/instm/NSObject/webView:didFinishLoadForFrame:
+Objective-C/instm/NSObject/webView:didReceiveIcon:forFrame:
+Objective-C/instm/NSObject/webView:didReceiveServerRedirectForProvisionalLoadForFrame:
+Objective-C/instm/NSObject/webView:didReceiveTitle:forFrame:
+Objective-C/instm/NSObject/webView:didStartProvisionalLoadForFrame:
+Objective-C/instm/NSObject/webView:doCommandBySelector:
+Objective-C/instm/NSObject/webView:dragDestinationActionMaskForDraggingInfo:
+Objective-C/instm/NSObject/webView:dragSourceActionMaskForPoint:
+Objective-C/instm/NSObject/webView:drawFooterInRect:
+Objective-C/instm/NSObject/webView:drawHeaderInRect:
+Objective-C/instm/NSObject/webView:identifierForInitialRequest:fromDataSource:
+Objective-C/instm/NSObject/webView:makeFirstResponder:
+Objective-C/instm/NSObject/webView:mouseDidMoveOverElement:modifierFlags:
+Objective-C/instm/NSObject/webView:plugInFailedWithError:dataSource:
+Objective-C/instm/NSObject/webView:printFrameView:
+Objective-C/instm/NSObject/webView:resource:didCancelAuthenticationChallenge:fromDataSource:
+Objective-C/instm/NSObject/webView:resource:didFailLoadingWithError:fromDataSource:
+Objective-C/instm/NSObject/webView:resource:didFinishLoadingFromDataSource:
+Objective-C/instm/NSObject/webView:resource:didReceiveAuthenticationChallenge:fromDataSource:
+Objective-C/instm/NSObject/webView:resource:didReceiveContentLength:fromDataSource:
+Objective-C/instm/NSObject/webView:resource:didReceiveResponse:fromDataSource:
+Objective-C/instm/NSObject/webView:resource:willSendRequest:redirectResponse:fromDataSource:
+Objective-C/instm/NSObject/webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:
+Objective-C/instm/NSObject/webView:runJavaScriptAlertPanelWithMessage:
+Objective-C/instm/NSObject/webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:
+Objective-C/instm/NSObject/webView:runJavaScriptConfirmPanelWithMessage:
+Objective-C/instm/NSObject/webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:
+Objective-C/instm/NSObject/webView:runJavaScriptTextInputPanelWithPrompt:defaultText:
+Objective-C/instm/NSObject/webView:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:
+Objective-C/instm/NSObject/webView:runOpenPanelForFileButtonWithResultListener:
+Objective-C/instm/NSObject/webView:runOpenPanelForFileButtonWithResultListener:allowMultipleFiles:
+Objective-C/instm/NSObject/webView:setContentRect:
+Objective-C/instm/NSObject/webView:setFrame:
+Objective-C/instm/NSObject/webView:setResizable:
+Objective-C/instm/NSObject/webView:setStatusBarVisible:
+Objective-C/instm/NSObject/webView:setStatusText:
+Objective-C/instm/NSObject/webView:setToolbarsVisible:
+Objective-C/instm/NSObject/webView:shouldApplyStyle:toElementsInDOMRange:
+Objective-C/instm/NSObject/webView:shouldBeginEditingInDOMRange:
+Objective-C/instm/NSObject/webView:shouldChangeSelectedDOMRange:toDOMRange:affinity:stillSelecting:
+Objective-C/instm/NSObject/webView:shouldChangeTypingStyle:toStyle:
+Objective-C/instm/NSObject/webView:shouldDeleteDOMRange:
+Objective-C/instm/NSObject/webView:shouldEndEditingInDOMRange:
+Objective-C/instm/NSObject/webView:shouldInsertNode:replacingDOMRange:givenAction:
+Objective-C/instm/NSObject/webView:shouldInsertText:replacingDOMRange:givenAction:
+Objective-C/instm/NSObject/webView:shouldPerformAction:fromSender:
+Objective-C/instm/NSObject/webView:unableToImplementPolicyWithError:frame:
+Objective-C/instm/NSObject/webView:validateUserInterfaceItem:defaultValidation:
+Objective-C/instm/NSObject/webView:willCloseFrame:
+Objective-C/instm/NSObject/webView:willPerformClientRedirectToURL:delay:fireDate:forFrame:
+Objective-C/instm/NSObject/webView:willPerformDragDestinationAction:forDraggingInfo:
+Objective-C/instm/NSObject/webView:willPerformDragSourceAction:fromPoint:withPasteboard:
+Objective-C/instm/NSObject/webView:windowScriptObjectAvailable:
+Objective-C/instm/NSObject/webViewAreToolbarsVisible:
+Objective-C/instm/NSObject/webViewClose:
+Objective-C/instm/NSObject/webViewContentRect:
+Objective-C/instm/NSObject/webViewDidBeginEditing:
+C/data/-/WebViewDidBeginEditingNotification
+Objective-C/instm/NSObject/webViewDidChange:
+C/data/-/WebViewDidChangeNotification
+Objective-C/instm/NSObject/webViewDidChangeSelection:
+C/data/-/WebViewDidChangeSelectionNotification
+Objective-C/instm/NSObject/webViewDidChangeTypingStyle:
+C/data/-/WebViewDidChangeTypingStyleNotification
+Objective-C/instm/NSObject/webViewDidEndEditing:
+C/data/-/WebViewDidEndEditingNotification
+Objective-C/instm/NSObject/webViewFirstResponder:
+Objective-C/instm/NSObject/webViewFocus:
+Objective-C/instm/NSObject/webViewFooterHeight:
+Objective-C/instm/NSObject/webViewFrame:
+Objective-C/instm/NSObject/webViewHeaderHeight:
+C/tdef/-/WebViewInsertAction
+C/econst/-/WebViewInsertActionDropped
+C/econst/-/WebViewInsertActionPasted
+C/econst/-/WebViewInsertActionTyped
+Objective-C/instm/NSObject/webViewIsResizable:
+Objective-C/instm/NSObject/webViewIsStatusBarVisible:
+C/data/-/WebViewProgressEstimateChangedNotification
+C/data/-/WebViewProgressFinishedNotification
+C/data/-/WebViewProgressStartedNotification
+Objective-C/instm/NSObject/webViewRunModal:
+Objective-C/instm/NSObject/webViewShow:
+Objective-C/instm/NSObject/webViewStatusText:
+Objective-C/instm/NSObject/webViewUnfocus:
+C/func/-/wecho_wchar
+C/func/-/wechochar
+Objective-C/instm/NSDateComponents/week
+Objective-C/instm/NSDateComponents/weekday
+Objective-C/instm/NSDateComponents/weekdayOrdinal
+Objective-C/instm/NSDateFormatter/weekdaySymbols
+Objective-C/instm/CalNthWeekDay/weekNumber
+Objective-C/instp/CalNthWeekDay/weekNumber
+Objective-C/instm/NSFontManager/weightOfFont:
+C/func/-/wenclose
+C/func/-/werase
+C/func/-/wget_wch
+C/func/-/wget_wstr
+C/func/-/wgetbkgrnd
+C/func/-/wgetch
+C/func/-/wgetn_wstr
+C/func/-/wgetnstr
+C/func/-/wgetparent
+C/func/-/wgetscrreg
+C/func/-/wgetstr
+JavaScript/data/NodeIterator/whatToShow
+JavaScript/data/TreeWalker/whatToShow
+JavaScript/data/WheelEvent/wheelDelta
+JavaScript/data/WheelEvent/wheelDeltaX
+JavaScript/data/WheelEvent/wheelDeltaY
+JavaScript/data/DOMWindow/WheelEvent
+JavaScript/cl/-/WheelEvent
+JavaScript/data/UIEvent/which
+C/func/-/while
+Objective-C/clm/NSColor/whiteColor
+Objective-C/instm/NSColor/whiteComponent
+C/func/-/WhitePixel
+C/func/-/WhitePixelOfScreen
+Objective-C/clm/NSCharacterSet/whitespaceAndNewlineCharacterSet
+Objective-C/clm/NSCharacterSet/whitespaceCharacterSet
+C/func/-/whline
+C/func/-/whline_set
+JavaScript/data/Text/wholeText
+C/tag/-/wide
+Objective-C/instm/NSTableColumn/width
+Objective-C/instm/FxImage/width
+Objective-C/binding/NSTableColumn/width
+JavaScript/data/ClientRect/width
+JavaScript/data/ImageData/width
+JavaScript/data/HTMLFrameElement/width
+JavaScript/data/HTMLPreElement/width
+JavaScript/data/HTMLCanvasElement/width
+JavaScript/data/HTMLTableColElement/width
+JavaScript/data/HTMLTableElement/width
+JavaScript/data/HTMLObjectElement/width
+JavaScript/data/HTMLAppletElement/width
+JavaScript/data/HTMLTableCellElement/width
+JavaScript/data/HTMLHRElement/width
+JavaScript/data/HTMLVideoElement/width
+JavaScript/data/HTMLEmbedElement/width
+JavaScript/data/HTMLImageElement/width
+JavaScript/data/HTMLIFrameElement/width
+JavaScript/data/HTMLDocument/width
+JavaScript/data/SVGImageElement/width
+JavaScript/data/SVGFilterElement/width
+JavaScript/data/SVGFilterPrimitiveStandardAttributes/width
+JavaScript/data/Screen/width
+JavaScript/data/SVGForeignObjectElement/width
+JavaScript/data/SVGMaskElement/width
+JavaScript/data/SVGRectElement/width
+JavaScript/data/SVGRect/width
+JavaScript/data/SVGSVGElement/width
+JavaScript/data/TextMetrics/width
+JavaScript/data/SVGUseElement/width
+JavaScript/data/SVGPatternElement/width
+Objective-C/instm/NSView/widthAdjustLimit
+Objective-C/instm/NSTextBlock/widthForLayer:edge:
+Objective-C/instm/NSSegmentedCell/widthForSegment:
+Objective-C/instm/NSSegmentedControl/widthForSegment:
+C/func/-/WidthMMOfScreen
+Objective-C/instm/NSBrowser/widthOfColumn:
+C/func/-/WidthOfScreen
+Objective-C/instm/NSFont/widthOfString:
+Objective-C/instm/NSTextContainer/widthTracksTextView
+Objective-C/instm/NSTextBlock/widthValueTypeForLayer:edge:
+Objective-C/instm/NSManagedObject/willAccessValueForKey:
+Objective-C/instm/SFAuthorizationPluginView/willActivateWithUser:
+Objective-C/intfm/ApertureExportPlugIn/willBeActivated
+Objective-C/intfm/ApertureExportPlugIn/willBeDeactivated
+Objective-C/instm/NSObject/willChange:valuesAtIndexes:forKey:
+Objective-C/instm/NSObject/willChangePPDOptionKeyValue:ppdChoice:
+Objective-C/instm/NSObject/willChangeValueForKey:
+Objective-C/instm/NSManagedObject/willChangeValueForKey:
+Objective-C/instm/NSObject/willChangeValueForKey:withSetMutation:usingObjects:
+Objective-C/instm/NSManagedObject/willChangeValueForKey:withSetMutation:usingObjects:
+Objective-C/instm/AMAction/willFinishRunning
+Objective-C/instm/NSDocument/willPresentError:
+Objective-C/instm/NSDocumentController/willPresentError:
+Objective-C/instm/NSResponder/willPresentError:
+Objective-C/instm/NSAtomicStore/willRemoveCacheNodes:
+Objective-C/instm/NSPersistentStore/willRemoveFromPersistentStoreCoordinator:
+Objective-C/instm/NSView/willRemoveSubview:
+Objective-C/instm/NSManagedObject/willSave
+Objective-C/instm/NSPreferencePane/willSelect
+Objective-C/instm/NSATSTypesetter/willSetLineFragmentRect:forGlyphRange:usedRect:baselineOffset:
+Objective-C/instm/NSTypesetter/willSetLineFragmentRect:forGlyphRange:usedRect:baselineOffset:
+Objective-C/instm/NSObject/willShow
+C++/instm/IOSCSIProtocolInterface/willTerminate
+C++/instm/IOService/willTerminate
+Objective-C/instm/NSManagedObject/willTurnIntoFault
+Objective-C/instm/IBPlugin/willUnload
+Objective-C/instm/NSPreferencePane/willUnselect
+JavaScript/data/HTMLFieldSetElement/willValidate
+JavaScript/data/HTMLObjectElement/willValidate
+JavaScript/data/HTMLButtonElement/willValidate
+JavaScript/data/HTMLSelectElement/willValidate
+JavaScript/data/HTMLTextAreaElement/willValidate
+JavaScript/data/HTMLInputElement/willValidate
+C/func/-/win_wch
+C/func/-/win_wchnstr
+C/func/-/win_wchstr
+C/func/-/winch
+C/func/-/winchnstr
+C/func/-/winchstr
+Objective-C/instm/NSBezierPath/windingRule
+Objective-C/instm/NSWindowController/window
+Objective-C/instm/NSCachedImageRep/window
+Objective-C/intfm/ApertureExportManager/window
+Objective-C/instm/NSAlert/window
+Objective-C/instm/NSView/window
+Objective-C/instm/NSEvent/window
+JavaScript/data/DOMWindow/window
+Objective-C/intfm/NSWindowDelegate/window:shouldDragDocumentWithEvent:from:withPasteboard:
+Objective-C/intfm/NSWindowDelegate/window:shouldPopUpDocumentPathMenu:
+Objective-C/intfm/NSWindowDelegate/window:willPositionSheet:usingRect:
+Objective-C/clm/NSColor/windowBackgroundColor
+Objective-C/instm/NSWindow/windowController
+Objective-C/instm/NSDocument/windowControllerDidLoadNib:
+Objective-C/instm/NSDocument/windowControllers
+Objective-C/instm/NSDocument/windowControllerWillLoadNib:
+Objective-C/intfm/NSWindowDelegate/windowDidBecomeKey:
+Objective-C/intfm/NSWindowDelegate/windowDidBecomeMain:
+Objective-C/intfm/NSWindowDelegate/windowDidChangeScreen:
+Objective-C/intfm/NSWindowDelegate/windowDidChangeScreenProfile:
+Objective-C/intfm/NSWindowDelegate/windowDidDeminiaturize:
+Objective-C/intfm/NSWindowDelegate/windowDidEndLiveResize:
+Objective-C/intfm/NSWindowDelegate/windowDidEndSheet:
+Objective-C/intfm/NSWindowDelegate/windowDidExpose:
+Objective-C/instm/NSWindowController/windowDidLoad
+Objective-C/intfm/NSWindowDelegate/windowDidMiniaturize:
+Objective-C/intfm/NSWindowDelegate/windowDidMove:
+Objective-C/intfm/NSWindowDelegate/windowDidResignKey:
+Objective-C/intfm/NSWindowDelegate/windowDidResignMain:
+Objective-C/intfm/NSWindowDelegate/windowDidResize:
+Objective-C/intfm/NSWindowDelegate/windowDidUpdate:
+Objective-C/instm/NSDocument/windowForSheet
+Objective-C/instm/NSWindowController/windowFrameAutosaveName
+Objective-C/clm/NSColor/windowFrameColor
+Objective-C/clm/NSColor/windowFrameTextColor
+Objective-C/instm/PDFAnnotationText/windowIsOpen
+Objective-C/intfm/IMKTextInput/windowLevel
+Objective-C/intfm/NSTextInputClient/windowLevel
+Objective-C/instm/NSWindowController/windowNibName
+Objective-C/instm/NSDocument/windowNibName
+Objective-C/instm/NSWindowController/windowNibPath
+Objective-C/instm/NSWindow/windowNumber
+Objective-C/instm/NSEvent/windowNumber
+Objective-C/clm/NSWindow/windowNumberAtPoint:belowWindowWithWindowNumber:
+Objective-C/clm/NSWindow/windowNumbersWithOptions:
+Objective-C/instm/WebFrame/windowObject
+C/tdef/-/WindowPtr
+C/tdef/-/WindowRef
+Objective-C/instm/NSWindow/windowRef
+Objective-C/instm/NSApplication/windows
+Objective-C/instm/WebView/windowScriptObject
+Objective-C/intfm/NSWindowDelegate/windowShouldClose:
+Objective-C/intfm/NSWindowDelegate/windowShouldZoom:toFrame:
+Objective-C/clm/NSLocale/windowsLocaleCodeFromLocaleIdentifier:
+Objective-C/instm/NSApplication/windowsMenu
+Objective-C/instm/NSWindowController/windowTitleForDocumentDisplayName:
+Objective-C/intfm/NSWindowDelegate/windowWillBeginSheet:
+Objective-C/intfm/NSWindowDelegate/windowWillClose:
+Objective-C/instm/NSWindowController/windowWillLoad
+Objective-C/intfm/NSWindowDelegate/windowWillMiniaturize:
+Objective-C/intfm/NSWindowDelegate/windowWillMove:
+Objective-C/intfm/NSWindowDelegate/windowWillResize:toSize:
+Objective-C/intfm/NSWindowDelegate/windowWillReturnFieldEditor:toObject:
+Objective-C/intfm/NSWindowDelegate/windowWillReturnUndoManager:
+Objective-C/intfm/NSWindowDelegate/windowWillStartLiveResize:
+Objective-C/intfm/NSWindowDelegate/windowWillUseStandardFrame:defaultFrame:
+Objective-C/instm/NSApplication/windowWithWindowNumber:
+C/func/-/winnstr
+C/func/-/winnwstr
+C/func/-/wins_nwstr
+C/func/-/wins_wch
+C/func/-/wins_wstr
+C/func/-/winsch
+C/func/-/winsdelln
+C/func/-/winsertln
+C/func/-/winsnstr
+C/func/-/winsstr
+C/func/-/winstr
+C/func/-/winwstr
+Objective-C/instp/CWNetwork/wirelessProfile
+JavaScript/clconst/JavaScriptCallFrame/WITH_SCOPE
+C/macro/-/WITH_TRIO
+C++/clm/IOMemoryDescriptor/withAddress
+Objective-C/clm/IOBluetoothDevice/withAddress:
+C++/clm/IOMemoryDescriptor/withAddressRange
+C++/clm/IOMemoryDescriptor/withAddressRanges
+C++/clm/OSArray/withArray
+C++/clm/OSSet/withArray
+C++/clm/IOAudioPort/withAttributes
+C++/clm/IOAudioControl/withAttributes
+C++/clm/OSBoolean/withBoolean
+C++/clm/IOStream/withBuffers
+C++/clm/OSData/withBytes
+C++/clm/OSData/withBytesNoCopy
+C++/clm/IODataQueue/withCapacity
+C++/clm/IOInterleavedMemoryDescriptor/withCapacity
+C++/clm/IOPacketQueue/withCapacity
+C++/clm/IOSharedDataQueue/withCapacity
+C++/clm/OSDictionary/withCapacity
+C++/clm/OSArray/withCapacity
+C++/clm/OSData/withCapacity
+C++/clm/OSSet/withCapacity
+C++/clm/OSOrderedSet/withCapacity
+C++/clm/OSSerialize/withCapacity
+C++/clm/OSCollectionIterator/withCollection
+JavaScript/data/XMLHttpRequest/withCredentials
+C++/clm/OSSymbol/withCString
+C++/clm/OSString/withCString
+C++/clm/OSString/withCStringNoCopy
+C++/clm/OSSymbol/withCStringNoCopy
+C++/clm/OSData/withData
+C++/clm/IOMultiMemoryDescriptor/withDescriptors
+Objective-C/clm/IOBluetoothOBEXSession/withDevice:channelID:
+Objective-C/clm/IOBluetoothDevice/withDeviceRef:
+Objective-C/clm/IOBluetoothDeviceSelectorController/withDeviceSelectorControllerRef:
+C++/clm/OSDictionary/withDictionary
+JavaScript/instm/TestObj/withDynamicFrame
+JavaScript/instm/TestObj/withDynamicFrameAndArg
+JavaScript/instm/TestObj/withDynamicFrameAndOptionalArg
+JavaScript/instm/TestObj/withDynamicFrameAndUserGesture
+JavaScript/instm/TestObj/withDynamicFrameAndUserGestureASAD
+Objective-C/clm/IOBluetoothSDPDataElement/withElementValue:
+C++/clm/IODataQueue/withEntries
+C++/clm/IOSharedDataQueue/withEntries
+C++/clm/IONetworkData/withExternalBuffer
+Objective-C/clm/IOBluetoothSDPServiceAttribute/withID:attributeElement:
+Objective-C/clm/IOBluetoothSDPServiceAttribute/withID:attributeElementValue:
+Objective-C/clm/IOBluetoothOBEXSession/withIncomingRFCOMMChannel:eventSelector:selectorTarget:refCon:
+C++/clm/IONetworkData/withInternalBuffer
+Objective-C/clm/IOBluetoothL2CAPChannel/withL2CAPChannelRef:
+C++/clm/IOStreamBuffer/withMemoryDescriptors
+C++/clm/IONetworkData/withNoBuffer
+C++/clm/OSNumber/withNumber
+Objective-C/clm/IOBluetoothRFCOMMChannel/withObjectID:
+Objective-C/clm/IOBluetoothL2CAPChannel/withObjectID:
+C++/clm/OSArray/withObjects
+C++/clm/OSDictionary/withObjects
+C++/clm/OSSet/withObjects
+C++/clm/IOMemoryDescriptor/withOptions
+C/macro/-/WITHOUT_TRIO
+Objective-C/clm/IOBluetoothPairingController/withPairingControllerRef:
+C++/clm/IOMemoryDescriptor/withPersistentMemoryDescriptor
+C++/clm/IOMemoryDescriptor/withPhysicalAddress
+C++/clm/IODeviceMemory/withRange
+C++/clm/IORangeAllocator/withRange
+Objective-C/clm/IOBluetoothRFCOMMChannel/withRFCOMMChannelRef:
+JavaScript/instm/TestObj/withScriptStateObj
+JavaScript/instm/TestObj/withScriptStateObjException
+JavaScript/instm/TestObj/withScriptStateVoid
+JavaScript/instm/TestObj/withScriptStateVoidException
+Objective-C/clm/IOBluetoothSDPDataElement/withSDPDataElementRef:
+Objective-C/clm/IOBluetoothOBEXSession/withSDPServiceRecord:
+Objective-C/clm/IOBluetoothSDPServiceRecord/withSDPServiceRecordRef:
+Objective-C/clm/IOBluetoothSDPUUID/withSDPUUIDRef:
+Objective-C/clm/IOBluetoothServiceBrowserController/withServiceBrowserControllerRef:
+Objective-C/clm/IOBluetoothSDPServiceRecord/withServiceDictionary:device:
+C++/clm/OSSet/withSet
+C++/clm/IODMACommand/withSpecification
+C++/clm/IOLittleMemoryCursor/withSpecification
+C++/clm/IOMbufBigMemoryCursor/withSpecification
+C++/clm/IOMbufNaturalMemoryCursor/withSpecification
+C++/clm/IONaturalMemoryCursor/withSpecification
+C++/clm/IOBigMemoryCursor/withSpecification
+C++/clm/IOMbufLittleMemoryCursor/withSpecification
+C++/clm/IODBDMAMemoryCursor/withSpecification
+C++/clm/IOMemoryCursor/withSpecification
+C++/clm/IOMbufDBDMAMemoryCursor/withSpecification
+C++/clm/OSSymbol/withString
+C++/clm/OSString/withString
+C++/clm/IODeviceMemory/withSubRange
+C++/clm/IOSubMemoryDescriptor/withSubRange
+C++/clm/IOBasicOutputQueue/withTarget
+C++/clm/IOGatedOutputQueue/withTarget
+Objective-C/clm/IOBluetoothSDPDataElement/withType:sizeDescriptor:size:value:
+C++/clm/IOCommandPool/withWorkLoop
+C/func/-/wmemchr
+C/func/-/wmemcmp
+C/func/-/wmemcpy
+C/func/-/wmemmove
+C/func/-/wmemset
+C/func/-/wmouse_trafo
+C/func/-/wmove
+C/func/-/wnoutrefresh
+C/func/-/wordexp
+C/func/-/wordfree
+Objective-C/instm/NSTextStorage/words
+JavaScript/data/DOMWindow/Worker
+JavaScript/cl/-/Worker
+JavaScript/cl/-/WorkerContext
+JavaScript/cl/-/WorkerLocation
+JavaScript/data/WorkerContext/WorkerLocation
+JavaScript/cl/-/WorkerNavigator
+Objective-C/instm/AMWorkflowController/workflow
+Objective-C/instm/AMWorkflowView/workflowController
+Objective-C/instm/NSObject/workflowController:didError:
+Objective-C/instm/NSObject/workflowController:didRunAction:
+Objective-C/instm/NSObject/workflowController:willRunAction:
+Objective-C/instm/NSObject/workflowControllerDidRun:
+Objective-C/instm/NSObject/workflowControllerDidStop:
+Objective-C/instm/NSObject/workflowControllerWillRun:
+Objective-C/instm/NSObject/workflowControllerWillStop:
+Objective-C/instm/AMWorkflowController/workflowView
+C++/data/IOAudioDevice/workLoop
+C++/data/IOEventSource/workLoop
+C++/data/IOAudioControl/workLoop
+C++/data/IOAudioEngine/workLoop
+C++/clm/IOWorkLoop/workLoop
+C++/clm/IOWorkLoop/workLoopWithOptions
+Objective-C/instm/NSPanel/worksWhenModal
+Objective-C/instm/NSFontPanel/worksWhenModal
+Objective-C/instm/NSWindow/worksWhenModal
+C++/data/IOWorkLoop/workThread
+C++/data/IOWorkLoop/workToDo
+C++/data/IOWorkLoop/workToDoLock
+C/econst/-/wPrErr
+C/func/-/wprintf
+C/func/-/wprintf_l
+C/func/-/wprintw
+JavaScript/data/HTMLPreElement/wrap
+Objective-C/instp/CATextLayer/wrapped
+Objective-C/instm/NSCell/wraps
+C/func/-/wredrawln
+C/func/-/wrefresh
+C/func/-/wresize
+C/econst/-/wrgVolTypErr
+Objective-C/instm/NSTextView/writablePasteboardTypes
+Objective-C/clm/NSDocument/writableTypes
+Objective-C/intfm/NSPasteboardWriting/writableTypesForPasteboard:
+Objective-C/instm/NSDocument/writableTypesForSaveOperation:
+C/func/-/write
+C++/instm/IOFilterScheme/write
+C++/instm/IOBlockStorageDriver/write
+C++/instm/IONetworkData/write
+C++/instm/IOMedia/write
+C++/instm/IOUSBPipe/Write
+C++/instm/IOPartitionScheme/write
+C++/instm/IOUSBController/Write
+C++/instm/IOStorage/write
+JavaScript/instm/HTMLDocument/write
+Objective-C/instm/IOBluetoothL2CAPChannel/write:length:
+Objective-C/instm/IOBluetoothRFCOMMChannel/write:length:sleep:
+Objective-C/instm/NSOutputStream/write:maxLength:
+Objective-C/instm/IOBluetoothRFCOMMChannel/writeAsync:length:refcon:
+Objective-C/instm/IOBluetoothL2CAPChannel/writeAsync:length:refcon:
+Objective-C/clm/NSURL/writeBookmarkData:toURL:options:error:
+C++/instm/IODMACommand/writeBytes
+C++/instm/IONetworkData/writeBytes
+C++/instm/IOMemoryDescriptor/writeBytes
+Objective-C/instm/NSURLHandle/writeData:
+Objective-C/instm/NSFileHandle/writeData:
+Objective-C/instm/WebView/writeElement:withPasteboardTypes:toPasteboard:
+Objective-C/instm/NSView/writeEPSInsideRect:toPasteboard:
+Objective-C/instm/NSPasteboard/writeFileContents:
+Objective-C/instm/NSPasteboard/writeFileWrapper:
+Objective-C/instm/DRBurn/writeLayout:
+JavaScript/instm/HTMLDocument/writeln
+C++/instm/IONetworkUserClient/writeNetworkData
+Objective-C/instm/NSPasteboard/writeObjects:
+C/func/-/WritePartialResource
+Objective-C/instm/NSView/writePDFInsideRect:toPasteboard:
+Objective-C/instm/NSPageLayout/writePrintInfo
+Objective-C/instm/NSURLHandle/writeProperty:forKey:
+Objective-C/clm/NSPropertyListSerialization/writePropertyList:toStream:format:options:error:
+C/func/-/WriteResource
+Objective-C/instm/NSText/writeRTFDToFile:atomically:
+Objective-C/instm/NSDocument/writeSafelyToURL:ofType:forSaveOperation:error:
+Objective-C/instm/DRDevice(InfoConvenience)/writesCD
+Objective-C/instm/DRDevice(InfoConvenience)/writesDVD
+Objective-C/instm/NSTextView/writeSelectionToPasteboard:type:
+Objective-C/instm/NSTextView/writeSelectionToPasteboard:types:
+Objective-C/instm/NSObject/writeSelectionToPasteboard:types:
+Objective-C/instm/WebView/writeSelectionWithPasteboardTypes:toPasteboard:
+Objective-C/instm/IOBluetoothRFCOMMChannel/writeSimple:length:sleep:bytesSent:
+Objective-C/instm/IOBluetoothL2CAPChannel/writeSync:length:
+Objective-C/instm/IOBluetoothRFCOMMChannel/writeSync:length:
+Objective-C/instm/AMAction/writeToDictionary:
+Objective-C/instm/NSColorList/writeToFile:
+Objective-C/instm/PDFDocument/writeToFile:
+Objective-C/instm/NSDictionary/writeToFile:atomically:
+Objective-C/instm/NSArray/writeToFile:atomically:
+Objective-C/instm/NSString/writeToFile:atomically:
+Objective-C/instm/NSData/writeToFile:atomically:
+Objective-C/instm/NSString/writeToFile:atomically:encoding:error:
+Objective-C/instm/NSFileWrapper/writeToFile:atomically:updateFilenames:
+Objective-C/instm/NSDocument/writeToFile:ofType:
+Objective-C/instm/NSDocument/writeToFile:ofType:originalFile:saveOperation:
+Objective-C/instm/NSData/writeToFile:options:error:
+Objective-C/instm/QTMovie/writeToFile:withAttributes:
+Objective-C/instm/QTMovie/writeToFile:withAttributes:error:
+Objective-C/instm/PDFDocument/writeToFile:withOptions:
+Objective-C/instm/NSURL/writeToPasteboard:
+Objective-C/instm/NSColor/writeToPasteboard:
+Objective-C/instm/NSSound/writeToPasteboard:
+Objective-C/instm/PDFDocument/writeToURL:
+Objective-C/instm/CIFilterGenerator/writeToURL:atomically:
+Objective-C/instm/NSDictionary/writeToURL:atomically:
+Objective-C/instm/NSArray/writeToURL:atomically:
+Objective-C/instm/NSString/writeToURL:atomically:
+Objective-C/instm/NSData/writeToURL:atomically:
+Objective-C/instm/NSString/writeToURL:atomically:encoding:error:
+Objective-C/instm/AMWorkflow/writeToURL:error:
+Objective-C/instm/NSDocument/writeToURL:ofType:
+Objective-C/instm/NSDocument/writeToURL:ofType:error:
+Objective-C/instm/NSPersistentDocument/writeToURL:ofType:forSaveOperation:originalContentsURL:error:
+Objective-C/instm/NSDocument/writeToURL:ofType:forSaveOperation:originalContentsURL:error:
+Objective-C/instm/NSData/writeToURL:options:error:
+Objective-C/instm/NSFileWrapper/writeToURL:options:originalContentsURL:error:
+Objective-C/instm/PDFDocument/writeToURL:withOptions:
+C/func/-/writev
+Objective-C/instm/NSDocument/writeWithBackupToFile:ofType:saveOperation:
+Objective-C/intfm/NSPasteboardWriting/writingOptionsForType:pasteboard:
+C/econst/-/writingPastEnd
+JavaScript/clconst/DOMCoreException/WRONG_DOCUMENT_ERR
+C/econst/-/wrongApplicationPlatform
+C/econst/-/wrPermErr
+C/func/-/wscanf
+C/func/-/wscanf_l
+C/func/-/wscanw
+C/tdef/-/WSClientContext
+C/tdef/-/WSClientContextCopyDescriptionCallBackProcPtr
+C/tdef/-/WSClientContextReleaseCallBackProcPtr
+C/tdef/-/WSClientContextRetainCallBackProcPtr
+C/func/-/wscrl
+C/func/-/wsetscrreg
+C/func/-/WSGetCFTypeIDFromWSTypeID
+C/func/-/WSGetWSTypeIDFromCFType
+C/func/-/WSMethodInvocationAddDeserializationOverride
+C/func/-/WSMethodInvocationAddSerializationOverride
+C/tdef/-/WSMethodInvocationCallBackProcPtr
+C/func/-/WSMethodInvocationCopyParameters
+C/func/-/WSMethodInvocationCopyProperty
+C/func/-/WSMethodInvocationCopySerialization
+C/func/-/WSMethodInvocationCreate
+C/func/-/WSMethodInvocationCreateFromSerialization
+C/tdef/-/WSMethodInvocationDeserializationProcPtr
+C/func/-/WSMethodInvocationGetTypeID
+C/func/-/WSMethodInvocationInvoke
+C/tdef/-/WSMethodInvocationRef
+C/func/-/WSMethodInvocationScheduleWithRunLoop
+C/tdef/-/WSMethodInvocationSerializationProcPtr
+C/func/-/WSMethodInvocationSetCallBack
+C/func/-/WSMethodInvocationSetParameters
+C/func/-/WSMethodInvocationSetProperty
+C/func/-/WSMethodInvocationUnscheduleFromRunLoop
+C/func/-/WSMethodResultIsFault
+C/func/-/WSProtocolHandlerCopyFaultDocument
+C/func/-/WSProtocolHandlerCopyProperty
+C/func/-/WSProtocolHandlerCopyReplyDictionary
+C/func/-/WSProtocolHandlerCopyReplyDocument
+C/func/-/WSProtocolHandlerCopyRequestDictionary
+C/func/-/WSProtocolHandlerCopyRequestDocument
+C/func/-/WSProtocolHandlerCreate
+C/tdef/-/WSProtocolHandlerDeserializationProcPtr
+C/func/-/WSProtocolHandlerGetTypeID
+C/tdef/-/WSProtocolHandlerRef
+C/tdef/-/WSProtocolHandlerSerializationProcPtr
+C/func/-/WSProtocolHandlerSetDeserializationOverride
+C/func/-/WSProtocolHandlerSetProperty
+C/func/-/WSProtocolHandlerSetSerializationOverride
+C/func/-/wstandend
+C/func/-/wstandout
+C/tdef/-/WSTypeID
+C/func/-/wsyncdown
+C/func/-/wsyncup
+C/func/-/wtimeout
+C/func/-/wtouchln
+C/func/-/wunctrl
+C/func/-/wvline
+C/func/-/wvline_set
+C++/cl/-/wxExtHelpController
+Objective-C/instm/CIVector/X
+JavaScript/data/HTMLImageElement/x
+JavaScript/data/SVGForeignObjectElement/x
+JavaScript/data/SVGFEPointLightElement/x
+JavaScript/data/SVGFilterPrimitiveStandardAttributes/x
+JavaScript/data/SVGCursorElement/x
+JavaScript/data/SVGFESpotLightElement/x
+JavaScript/data/SVGImageElement/x
+JavaScript/data/MouseEvent/x
+JavaScript/data/SVGMaskElement/x
+JavaScript/data/SVGFilterElement/x
+JavaScript/data/SVGPathSegCurvetoCubicRel/x
+JavaScript/data/SVGPathSegArcAbs/x
+JavaScript/data/SVGPathSegLinetoAbs/x
+JavaScript/data/SVGPatternElement/x
+JavaScript/data/SVGPathSegLinetoHorizontalRel/x
+JavaScript/data/SVGPathSegMovetoAbs/x
+JavaScript/data/SVGRectElement/x
+JavaScript/data/SVGPathSegCurvetoCubicSmoothAbs/x
+JavaScript/data/SVGPathSegCurvetoQuadraticSmoothRel/x
+JavaScript/data/SVGPathSegCurvetoCubicAbs/x
+JavaScript/data/SVGPathSegCurvetoCubicSmoothRel/x
+JavaScript/data/SVGPathSegArcRel/x
+JavaScript/data/SVGPathSegCurvetoQuadraticAbs/x
+JavaScript/data/SVGTextPositioningElement/x
+JavaScript/data/SVGRect/x
+JavaScript/data/SVGPathSegMovetoRel/x
+JavaScript/data/SVGPathSegCurvetoQuadraticRel/x
+JavaScript/data/SVGSVGElement/x
+JavaScript/data/SVGUseElement/x
+JavaScript/data/SVGPathSegLinetoRel/x
+JavaScript/data/SVGPathSegCurvetoQuadraticSmoothAbs/x
+JavaScript/data/SVGPathSegLinetoHorizontalAbs/x
+JavaScript/data/SVGPoint/x
+JavaScript/data/WebKitPoint/x
+JavaScript/data/WheelEvent/x
+JavaScript/data/SVGLinearGradientElement/x1
+JavaScript/data/SVGLineElement/x1
+JavaScript/data/SVGPathSegCurvetoQuadraticRel/x1
+JavaScript/data/SVGPathSegCurvetoCubicRel/x1
+JavaScript/data/SVGPathSegCurvetoCubicAbs/x1
+JavaScript/data/SVGPathSegCurvetoQuadraticAbs/x1
+JavaScript/data/SVGLinearGradientElement/x2
+JavaScript/data/SVGLineElement/x2
+JavaScript/data/SVGPathSegCurvetoCubicRel/x2
+JavaScript/data/SVGPathSegCurvetoCubicSmoothAbs/x2
+JavaScript/data/SVGPathSegCurvetoCubicSmoothRel/x2
+JavaScript/data/SVGPathSegCurvetoCubicAbs/x2
+C/func/-/x509
+C/func/-/X509_free
+C/func/-/X509_NAME_add_entry
+C/func/-/X509_NAME_add_entry_by_NID
+C/func/-/X509_NAME_add_entry_by_OBJ
+C/func/-/X509_NAME_add_entry_by_txt
+C/func/-/X509_NAME_delete_entry
+C/func/-/X509_NAME_entry_count
+C/func/-/X509_NAME_ENTRY_create_by_NID
+C/func/-/X509_NAME_ENTRY_create_by_OBJ
+C/func/-/X509_NAME_ENTRY_create_by_txt
+C/func/-/X509_NAME_ENTRY_get_data
+C/func/-/X509_NAME_ENTRY_get_object
+C/func/-/X509_NAME_ENTRY_set_data
+C/func/-/X509_NAME_ENTRY_set_object
+C/func/-/X509_NAME_get_entry
+C/func/-/X509_NAME_get_index_by_NID
+C/func/-/X509_NAME_get_index_by_OBJ
+C/func/-/X509_NAME_get_text_by_NID
+C/func/-/X509_NAME_get_text_by_OBJ
+C/func/-/X509_NAME_oneline
+C/func/-/X509_NAME_print
+C/func/-/X509_NAME_print_ex
+C/func/-/X509_NAME_print_ex_fp
+C/func/-/X509_new
+Objective-C/instm/CAEmitterCell/xAcceleration
+Objective-C/instp/CAEmitterCell/xAcceleration
+C/func/-/XActivateScreenSaver
+C/func/-/XAddConnectionWatch
+C/func/-/XAddHost
+C/func/-/XAddHosts
+C/func/-/XAddPixel
+C/func/-/XAddToSaveSet
+C/func/-/XAllocClassHint
+C/func/-/XAllocColor
+C/func/-/XAllocColorCells
+C/func/-/XAllocColorPlanes
+C/func/-/XAllocIconSize
+C/func/-/XAllocNamedColor
+C/func/-/XAllocSizeHints
+C/func/-/XAllocStandardColormap
+C/func/-/XAllocWMHints
+C/func/-/XAllowDeviceEvents
+C/func/-/XAllowEvents
+C/func/-/XAnyEvent
+C/func/-/XArc
+C/func/-/Xau
+C/func/-/XauDisposeAuth
+C/func/-/XauFileName
+C/func/-/XauGetAuthByAddr
+C/func/-/XauGetBestAuthByAddr
+C/func/-/XauLockAuth
+C/func/-/XauReadAuth
+C/func/-/XAutoRepeatOff
+C/func/-/XAutoRepeatOn
+C/func/-/XauUnlockAuth
+C/func/-/XauWriteAuth
+C/func/-/Xaw
+C/func/-/XBaseFontNameListOfFontSet
+C/func/-/XBell
+C/func/-/XButtonEvent
+C/func/-/XChangeActivePointerGrab
+C/func/-/XChangeDeviceControl
+C/func/-/XChangeDeviceDontPropagateList
+C/func/-/XChangeDeviceKeyMapping
+C/func/-/XChangeDeviceProperty
+C/func/-/XChangeFeedbackControl
+C/func/-/XChangeGC
+C/func/-/XChangeKeyboardControl
+C/func/-/XChangeKeyboardDevice
+C/func/-/XChangeKeyboardMapping
+C/func/-/XChangePointerControl
+C/func/-/XChangePointerDevice
+C/func/-/XChangeProperty
+C/func/-/XChangeSaveSet
+C/func/-/XChangeWindowAttributes
+JavaScript/data/SVGFEDisplacementMapElement/xChannelSelector
+C/func/-/XChar2b
+C/func/-/XCharStruct
+C/func/-/XCheckIfEvent
+C/func/-/XCheckMaskEvent
+C/func/-/XCheckTypedEvent
+C/func/-/XCheckTypedWindowEvent
+C/func/-/XCheckWindowEvent
+C/tdef/-/XCInfoPBRec
+C/func/-/XCirculateEvent
+C/func/-/XCirculateRequestEvent
+C/func/-/XCirculateSubwindows
+C/func/-/XCirculateSubwindowsDown
+C/func/-/XCirculateSubwindowsUp
+C/func/-/XClassHint
+C/func/-/XClearArea
+C/func/-/XClearWindow
+C/func/-/XClientMessageEvent
+C/func/-/XClipBox
+C/func/-/XCloseDevice
+C/func/-/XCloseDisplay
+C/func/-/XCloseIM
+C/func/-/XCloseOM
+C/func/-/XcmsAllocColor
+C/func/-/XcmsAllocNamedColor
+C/func/-/XcmsCCCOfColormap
+C/func/-/XcmsCIELab
+C/func/-/XcmsCIELabQueryMaxC
+C/func/-/XcmsCIELabQueryMaxL
+C/func/-/XcmsCIELabQueryMaxLC
+C/func/-/XcmsCIELabQueryMinL
+C/func/-/XcmsCIELuv
+C/func/-/XcmsCIELuvQueryMaxC
+C/func/-/XcmsCIELuvQueryMaxL
+C/func/-/XcmsCIELuvQueryMaxLC
+C/func/-/XcmsCIELuvQueryMinL
+C/func/-/XcmsCIEuvY
+C/func/-/XcmsCIExyY
+C/func/-/XcmsCIEXYZ
+C/func/-/XcmsColor
+C/func/-/XcmsConvertColors
+C/func/-/XcmsCreateCCC
+C/func/-/XcmsDefaultCCC
+C/func/-/XcmsFreeCCC
+C/func/-/XcmsLookupColor
+C/func/-/XcmsPad
+C/func/-/XcmsQueryBlack
+C/func/-/XcmsQueryBlue
+C/func/-/XcmsQueryColor
+C/func/-/XcmsQueryColors
+C/func/-/XcmsQueryGreen
+C/func/-/XcmsQueryRed
+C/func/-/XcmsQueryWhite
+C/func/-/XcmsRGB
+C/func/-/XcmsRGBi
+C/func/-/XcmsSetCCCOfColormap
+C/func/-/XcmsSetWhiteAdjustProc
+C/func/-/XcmsSetWhitePoint
+C/func/-/XcmsStoreColor
+C/func/-/XcmsStoreColors
+C/func/-/XcmsTekHVC
+C/func/-/XcmsTekHVCQueryMaxC
+C/func/-/XcmsTekHVCQueryMaxV
+C/func/-/XcmsTekHVCQueryMaxVC
+C/func/-/XcmsTekHVCQueryMaxVSamples
+C/func/-/XcmsTekHVCQueryMinV
+-/writerid/-/xcode_research_assistant
+-/writerid/-/xcode_user_guide_build_configurations_editing
+-/writerid/-/xcode_user_guide_build_phases
+-/writerid/-/xcode_user_guide_build_rules
+-/writerid/-/xcode_user_guide_build_settings_editing
+-/writerid/-/xcode_user_guide_command_line_arguments_and_environment_variables_setting
+-/writerid/-/xcode_user_guide_copy_files_build_phase
+-/writerid/-/xcode_user_guide_design_colors_and_fonts
+-/writerid/-/xcode_user_guide_design_filtering_and_hiding
+-/writerid/-/xcode_user_guide_design_indexing_and_tracking
+-/writerid/-/xcode_user_guide_design_info_window
+-/writerid/-/xcode_user_guide_documentation_window_appearance_controlling
+-/writerid/-/xcode_user_guide_executable_debugging_configuring
+-/writerid/-/xcode_user_guide_executable_environment_settings_editing
+-/writerid/-/xcode_user_guide_file_compiler_flags
+-/writerid/-/xcode_user_guide_file_info
+-/writerid/-/xcode_user_guide_organizer
+-/writerid/-/xcode_user_guide_plist_entries
+-/writerid/-/xcode_user_guide_project_attributes
+-/writerid/-/xcode_user_guide_project_comments
+-/writerid/-/xcode_user_guide_refactoring
+-/writerid/-/xcode_user_guide_regions_customizing_for
+-/writerid/-/xcode_user_guide_run_script_build_phase
+-/writerid/-/xcode_user_guide_setting_doc_preferences
+-/writerid/-/xcode_user_guide_shared_libraries_viewing
+-/writerid/-/xcode_user_guide_smart_groups
+-/writerid/-/xcode_user_guide_target_files
+-/writerid/-/xcode_user_guide_target_info
+-/writerid/-/xcode_workspace_open_file_by_name_or_symbol
+C/func/-/XColor
+C/func/-/XColormapEvent
+C/func/-/Xcomposite
+C/func/-/XConfigureEvent
+C/func/-/XConfigureRequestEvent
+C/func/-/XConfigureWindow
+C/func/-/XContextDependentDrawing
+C/func/-/XContextualDrawing
+C/func/-/XConvertCase
+C/func/-/XConvertSelection
+C/func/-/XCopyArea
+C/func/-/XCopyColormapAndFree
+C/func/-/XCopyGC
+C/func/-/XCopyPlane
+C/func/-/XCreateBitmapFromData
+C/func/-/XCreateColormap
+C/func/-/XCreateFontCursor
+C/func/-/XCreateFontSet
+C/func/-/XCreateGC
+C/func/-/XCreateGlyphCursor
+C/func/-/XCreateIC
+C/func/-/XCreateImage
+C/func/-/XCreateOC
+C/func/-/XCreatePixmap
+C/func/-/XCreatePixmapCursor
+C/func/-/XCreatePixmapFromBitmapData
+C/func/-/XCreateRegion
+C/func/-/XCreateSimpleWindow
+C/func/-/XCreateWindow
+C/func/-/XCreateWindowEvent
+C/func/-/XCrossingEvent
+C/func/-/XcupGetReservedColormapEntries
+C/func/-/XcupQueryVersion
+C/func/-/XcupStoreColors
+C/func/-/Xcursor
+C/func/-/XcursorCursorsCreate
+C/func/-/XcursorCursorsDestroy
+C/func/-/XcursorFilenameLoad
+C/func/-/XcursorFilenameLoadAllImages
+C/func/-/XcursorFilenameLoadCursor
+C/func/-/XcursorFilenameLoadImage
+C/func/-/XcursorFilenameLoadImages
+C/func/-/XcursorFilenameSave
+C/func/-/XcursorFilenameSaveImages
+C/func/-/XcursorGetDefaultSize
+C/func/-/XcursorGetTheme
+C/func/-/XcursorImageCreate
+C/func/-/XcursorImageDestroy
+C/func/-/XcursorImagesCreate
+C/func/-/XcursorImagesDestroy
+C/func/-/XcursorLibraryLoadCursor
+C/func/-/XcursorLibraryLoadCursors
+C/func/-/XcursorLibraryLoadImage
+C/func/-/XcursorLibraryLoadImages
+C/func/-/XcursorSetDefaultSize
+C/func/-/XcursorSetTheme
+C/func/-/XcursorShapeLoadCursor
+C/func/-/XcursorShapeLoadCursors
+C/func/-/XcursorShapeLoadImage
+C/func/-/XcursorShapeLoadImages
+C/func/-/XcursorSupportsARGB
+C/func/-/XcursorXcFileLoad
+C/func/-/XcursorXcFileLoadAllImages
+C/func/-/XcursorXcFileLoadImage
+C/func/-/XcursorXcFileLoadImages
+C/func/-/XcursorXcFileSave
+C/func/-/XdbeAllocateBackBufferName
+C/func/-/XdbeBeginIdiom
+C/func/-/XdbeDeallocateBackBufferName
+C/func/-/XdbeEndIdiom
+C/func/-/XdbeFreeVisualInfo
+C/func/-/XdbeGetBackBufferAttributes
+C/func/-/XdbeGetVisualInfo
+C/func/-/XdbeQueryExtension
+C/func/-/XdbeSwapBuffers
+C/func/-/XDefaultString
+C/func/-/XDefineCursor
+C/func/-/XDeleteContext
+C/func/-/XDeleteDeviceProperty
+C/func/-/XDeleteModifiermapEntry
+C/func/-/XDeleteProperty
+C/func/-/XDestroyIC
+C/func/-/XDestroyImage
+C/func/-/XDestroyOC
+C/func/-/XDestroyRegion
+C/func/-/XDestroySubwindows
+C/func/-/XDestroyWindow
+C/func/-/XDestroyWindowEvent
+C/func/-/XDeviceBell
+C/func/-/XDeviceTimeCoord
+C/func/-/XDirectionalDependentDrawing
+C/func/-/XDisableAccessControl
+C/func/-/XDisplayKeycodes
+C/func/-/XDisplayMotionBufferSize
+C/func/-/XDisplayName
+C/func/-/XDisplayOfIM
+C/func/-/XDisplayOfOM
+C/func/-/xdr
+C/func/-/xdr_accepted_reply
+C/func/-/xdr_array
+C/func/-/xdr_authunix_parms
+C/func/-/xdr_bool
+C/func/-/xdr_bytes
+C/func/-/xdr_callhdr
+C/func/-/xdr_callmsg
+C/func/-/xdr_char
+C/func/-/xdr_destroy
+C/func/-/xdr_double
+C/func/-/xdr_enum
+C/func/-/xdr_float
+C/func/-/xdr_free
+C/func/-/xdr_getpos
+C/func/-/xdr_inline
+C/func/-/xdr_int
+C/func/-/xdr_long
+C/func/-/xdr_opaque
+C/func/-/xdr_opaque_auth
+C/func/-/xdr_pmap
+C/func/-/xdr_pmaplist
+C/func/-/xdr_pointer
+C/func/-/xdr_reference
+C/func/-/xdr_rejected_reply
+C/func/-/xdr_replymsg
+C/func/-/xdr_setpos
+C/func/-/xdr_short
+C/func/-/xdr_string
+C/func/-/xdr_u_char
+C/func/-/xdr_u_long
+C/func/-/xdr_u_short
+C/func/-/xdr_union
+C/func/-/xdr_vector
+C/func/-/xdr_void
+C/func/-/xdr_wrapstring
+C/func/-/XDrawArc
+C/func/-/XDrawArcs
+C/func/-/XDrawImageString
+C/func/-/XDrawImageString16
+C/func/-/XDrawLine
+C/func/-/XDrawLines
+C/func/-/XDrawPoint
+C/func/-/XDrawPoints
+C/func/-/XDrawRectangle
+C/func/-/XDrawRectangles
+C/func/-/XDrawSegments
+C/func/-/XDrawString
+C/func/-/XDrawString16
+C/func/-/XDrawText
+C/func/-/XDrawText16
+C/func/-/xdrmem_create
+C/func/-/xdrrec_create
+C/func/-/xdrrec_endofrecord
+C/func/-/xdrrec_eof
+C/func/-/xdrrec_skiprecord
+C/func/-/xdrstdio_create
+C/func/-/XEmptyRegion
+C/func/-/XEnableAccessControl
+C/func/-/XEqualRegion
+C/func/-/XErrorEvent
+C/func/-/XEvent
+C/func/-/XEventsQueued
+C/func/-/Xevi
+C/func/-/Xevie
+C/func/-/XevieEnd
+C/func/-/XevieQueryVersion
+C/func/-/XevieSelectInput
+C/func/-/XevieSendEvent
+C/func/-/XevieStart
+C/func/-/XeviGetVisualInfo
+C/func/-/XeviQueryExtension
+C/func/-/XeviQueryVersion
+C/func/-/XExposeEvent
+C/func/-/XExtendedMaxRequestSize
+C/func/-/XExtentsOfFontSet
+C/func/-/XF86Misc
+C/func/-/XF86MiscGetKbdSettings
+C/func/-/XF86MiscGetMouseSettings
+C/func/-/XF86MiscGetSaver
+C/func/-/XF86MiscQueryExtension
+C/func/-/XF86MiscQueryVersion
+C/func/-/XF86MiscSetKbdSettings
+C/func/-/XF86MiscSetMouseSettings
+C/func/-/XF86MiscSetSaver
+C/func/-/XF86VidModeDeleteModeLine
+C/func/-/XF86VidModeGetAllModeLines
+C/func/-/XF86VidModeGetDotClocks
+C/func/-/XF86VidModeGetGamma
+C/func/-/XF86VidModeGetGammaRamp
+C/func/-/XF86VidModeGetGammaRampSize
+C/func/-/XF86VidModeGetModeLine
+C/func/-/XF86VidModeGetMonitor
+C/func/-/XF86VidModeGetPermissions
+C/func/-/XF86VidModeGetViewPort
+C/func/-/XF86VidModeLockModeSwitch
+C/func/-/XF86VidModeModModeLine
+C/func/-/XF86VidModeQueryExtension
+C/func/-/XF86VidModeQueryVersion
+C/func/-/XF86VidModeSetClientVersion
+C/func/-/XF86VidModeSetGamma
+C/func/-/XF86VidModeSetGammaRamp
+C/func/-/XF86VidModeSetViewPort
+C/func/-/XF86VidModeSwitchMode
+C/func/-/XF86VidModeSwitchToMode
+C/func/-/XF86VidModeValidateModeLine
+C/func/-/XF86VM
+C/func/-/XFetchBuffer
+C/func/-/XFetchBytes
+C/func/-/XFetchName
+C/func/-/XFillArc
+C/func/-/XFillArcs
+C/func/-/XFillPolygon
+C/func/-/XFillRectangle
+C/func/-/XFillRectangles
+C/func/-/XFilterEvent
+C/func/-/XFindContext
+C/func/-/Xfixes
+C/func/-/XFlush
+C/func/-/XFocusChangeEvent
+C/func/-/Xfontcache
+C/func/-/XFontProp
+C/func/-/XFontSetExtents
+C/func/-/XFontsOfFontSet
+C/func/-/XFontStruct
+C/func/-/XForceScreenSaver
+C/func/-/XFree
+C/func/-/XFreeColormap
+C/func/-/XFreeColors
+C/func/-/XFreeCursor
+C/func/-/XFreeDeviceList
+C/func/-/XFreeExtensionList
+C/func/-/XFreeFont
+C/func/-/XFreeFontInfo
+C/func/-/XFreeFontNames
+C/func/-/XFreeFontPath
+C/func/-/XFreeFontSet
+C/func/-/XFreeGC
+C/func/-/XFreeModifierMap
+C/func/-/XFreePixmap
+C/func/-/XFreeStringList
+C/func/-/Xft
+Objective-C/cl/-/XGActionMonitor
+C/tdef/-/XGActionMonitorOutcome
+C/data/-/XGActionMonitorResultsOutputFilesKey
+C/data/-/XGActionMonitorResultsOutputStreamsKey
+Objective-C/cl/-/XGAuthenticator
+C/tdef/-/XGAuthenticatorState
+Objective-C/cl/-/XGConnection
+C/data/-/XGConnectionKeyIsClosed
+C/data/-/XGConnectionKeyIsOpened
+C/data/-/XGConnectionKeyState
+C/tdef/-/XGConnectionState
+C/func/-/XGContextFromGC
+Objective-C/cl/-/XGController
+Objective-C/cat/-/XGController(XGControllerCreation)
+C/data/-/XGControllerWillDeallocNotification
+C/func/-/XGCValues
+C/func/-/XGetAtomName
+C/func/-/XGetAtomNames
+C/func/-/XGetClassHint
+C/func/-/XGetCommand
+C/func/-/XGetDeviceButtonMapping
+C/func/-/XGetDeviceControl
+C/func/-/XGetDeviceDontPropagateList
+C/func/-/XGetDeviceFocus
+C/func/-/XGetDeviceKeyMapping
+C/func/-/XGetDeviceModifierMapping
+C/func/-/XGetDeviceMotionEvents
+C/func/-/XGetDeviceProperty
+C/func/-/XGetErrorDatabaseText
+C/func/-/XGetErrorText
+C/func/-/XGetExtensionVersion
+C/func/-/XGetFeedbackControl
+C/func/-/XGetFontPath
+C/func/-/XGetFontProperty
+C/func/-/XGetGCValues
+C/func/-/XGetGeometry
+C/func/-/XGetIconName
+C/func/-/XGetIconSizes
+C/func/-/XGetICValues
+C/func/-/XGetImage
+C/func/-/XGetIMValues
+C/func/-/XGetInputFocus
+C/func/-/XGetKeyboardControl
+C/func/-/XGetKeyboardMapping
+C/func/-/XGetModifierMapping
+C/func/-/XGetMotionEvents
+C/func/-/XGetOCValues
+C/func/-/XGetOMValues
+C/func/-/XGetPixel
+C/func/-/XGetPointerControl
+C/func/-/XGetPointerMapping
+C/func/-/XGetRGBColormaps
+C/func/-/XGetScreenSaver
+C/func/-/XGetSelectedExtensionEvents
+C/func/-/XGetSelectionOwner
+C/func/-/XGetSubImage
+C/func/-/XGetTextProperty
+C/func/-/XGetTransientForHint
+C/func/-/XGetVisualInfo
+C/func/-/XGetWindowAttributes
+C/func/-/XGetWindowProperty
+C/func/-/XGetWMClientMachine
+C/func/-/XGetWMColormapWindows
+C/func/-/XGetWMHints
+C/func/-/XGetWMIconName
+C/func/-/XGetWMName
+C/func/-/XGetWMNormalHints
+C/func/-/XGetWMProtocols
+C/func/-/XGetWMSizeHints
+C/func/-/XGetXCBConnection
+Objective-C/cl/-/XGFile
+Objective-C/cl/-/XGFileDownload
+C/data/-/XGFileStandardErrorPath
+C/data/-/XGFileStandardOutputPath
+C/tdef/-/XGFileType
+Objective-C/cl/-/XGGrid
+Objective-C/cl/-/XGGSSAuthenticator
+Objective-C/cl/-/XGJob
+C/func/-/XGrabButton
+C/func/-/XGrabDevice
+C/func/-/XGrabDeviceButton
+C/func/-/XGrabDeviceKey
+C/func/-/XGrabKey
+C/func/-/XGrabKeyboard
+C/func/-/XGrabPointer
+C/func/-/XGrabServer
+C/func/-/XGraphicsExposeEvent
+C/func/-/XGravityEvent
+Objective-C/cl/-/XGResource
+C/tdef/-/XGResourceAction
+C/tdef/-/XGResourceState
+Objective-C/cl/-/XGTwoWayRandomAuthenticator
+Objective-C/instm/NSFont/xHeight
+C/func/-/XHostAddress
+C/func/-/XIconifyWindow
+C/func/-/XIconSize
+C/func/-/XIfEvent
+C/func/-/XIMOfIC
+C/macro/-/XINCLUDE_FALLBACK
+C/macro/-/XINCLUDE_HREF
+C/macro/-/XINCLUDE_NODE
+C/macro/-/XINCLUDE_NS
+C/macro/-/XINCLUDE_OLD_NS
+C/macro/-/XINCLUDE_PARSE
+C/macro/-/XINCLUDE_PARSE_ENCODING
+C/macro/-/XINCLUDE_PARSE_TEXT
+C/macro/-/XINCLUDE_PARSE_XML
+C/macro/-/XINCLUDE_PARSE_XPOINTER
+C/func/-/Xinerama
+C/func/-/XineramaIsActive
+C/func/-/XineramaQueryExtension
+C/func/-/XineramaQueryScreens
+C/func/-/XineramaQueryVersion
+C/func/-/XInitImage
+C/func/-/XInitThreads
+C/func/-/XInsertModifiermapEntry
+C/func/-/XInstallColormap
+C/func/-/XInternalConnectionNumbers
+C/func/-/XInternAtom
+C/func/-/XInternAtoms
+C/func/-/XIntersectRegion
+C/tdef/-/XIOParam
+C/func/-/XkbActionCtrls
+C/func/-/XkbAddDeviceLedInfo
+C/func/-/XkbAddGeomColor
+C/func/-/XkbAddGeomDoodad
+C/func/-/XkbAddGeomKey
+C/func/-/XkbAddGeomKeyAlias
+C/func/-/XkbAddGeomOutline
+C/func/-/XkbAddGeomOverlay
+C/func/-/XkbAddGeomOverlayKey
+C/func/-/XkbAddGeomOverlayRow
+C/func/-/XkbAddGeomProperty
+C/func/-/XkbAddGeomRow
+C/func/-/XkbAddGeomSection
+C/func/-/XkbAddGeomShape
+C/func/-/XkbAddSymInterpret
+C/func/-/XkbAllocClientMap
+C/func/-/XkbAllocCompatMap
+C/func/-/XkbAllocControls
+C/func/-/XkbAllocDeviceInfo
+C/func/-/XkbAllocDeviceLedInfo
+C/func/-/XkbAllocGeomColors
+C/func/-/XkbAllocGeomDoodads
+C/func/-/XkbAllocGeometry
+C/func/-/XkbAllocGeomKeyAliases
+C/func/-/XkbAllocGeomKeys
+C/func/-/XkbAllocGeomOutlines
+C/func/-/XkbAllocGeomOverlayKey
+C/func/-/XkbAllocGeomOverlayKeys
+C/func/-/XkbAllocGeomOverlayRows
+C/func/-/XkbAllocGeomOverlays
+C/func/-/XkbAllocGeomPoints
+C/func/-/XkbAllocGeomProps
+C/func/-/XkbAllocGeomRows
+C/func/-/XkbAllocGeomSectionDoodads
+C/func/-/XkbAllocGeomSections
+C/func/-/XkbAllocGeomShapes
+C/func/-/XkbAllocIndicatorMaps
+C/func/-/XkbAllocKeyboard
+C/func/-/XkbAllocNames
+C/func/-/XkbAllocServerMap
+C/func/-/XkbApplyCompatMapToKey
+C/func/-/XkbBell
+C/func/-/XkbBellEvent
+C/func/-/XkbChangeControls
+C/func/-/XkbChangeDeviceInfo
+C/func/-/XkbChangeEnabledControls
+C/func/-/XkbChangeIndicators
+C/func/-/XkbChangeMap
+C/func/-/XkbChangeNames
+C/func/-/XkbChangeTypesOfKey
+C/func/-/XkbComputeRowBounds
+C/func/-/XkbComputeSectionBounds
+C/func/-/XkbComputeShapeBounds
+C/func/-/XkbComputeShapeTop
+C/func/-/XkbCopyKeyType
+C/func/-/XkbCopyKeyTypes
+C/func/-/XkbDeviceBell
+C/func/-/XkbDeviceBellEvent
+C/func/-/XkbFindOverlayForKey
+C/func/-/XkbForceBell
+C/func/-/XkbForceDeviceBell
+C/func/-/XkbFreeClientMap
+C/func/-/XkbFreeCompatMap
+C/func/-/XkbFreeComponentList
+C/func/-/XkbFreeControls
+C/func/-/XkbFreeDeviceInfo
+C/func/-/XkbFreeGeomColors
+C/func/-/XkbFreeGeomDoodads
+C/func/-/XkbFreeGeometry
+C/func/-/XkbFreeGeomKeyAliases
+C/func/-/XkbFreeGeomKeys
+C/func/-/XkbFreeGeomOutlines
+C/func/-/XkbFreeGeomOverlayKeys
+C/func/-/XkbFreeGeomOverlayRows
+C/func/-/XkbFreeGeomOverlays
+C/func/-/XkbFreeGeomPoints
+C/func/-/XkbFreeGeomProperties
+C/func/-/XkbFreeGeomRows
+C/func/-/XkbFreeGeomSections
+C/func/-/XkbFreeGeomShapes
+C/func/-/XkbFreeIndicatorMaps
+C/func/-/XkbFreeKeyboard
+C/func/-/XkbFreeNames
+C/func/-/XkbFreeServerMap
+C/func/-/XkbGetAccessXTimeout
+C/func/-/XkbGetAutoRepeatRate
+C/func/-/XkbGetAutoResetControls
+C/func/-/XkbGetBounceKeysDelay
+C/func/-/XkbGetCompatMap
+C/func/-/XkbGetControls
+C/func/-/XkbGetControlsChanges
+C/func/-/XkbGetDetectableAutorepeat
+C/func/-/XkbGetDeviceButtonActions
+C/func/-/XkbGetDeviceInfo
+C/func/-/XkbGetDeviceInfoChanges
+C/func/-/XkbGetDeviceLedInfo
+C/func/-/XkbGetGeometry
+C/func/-/XkbGetIndicatorChanges
+C/func/-/XkbGetIndicatorMap
+C/func/-/XkbGetIndicatorState
+C/func/-/XkbGetKeyActions
+C/func/-/XkbGetKeyBehaviors
+C/func/-/XkbGetKeyboard
+C/func/-/XkbGetKeyboardByName
+C/func/-/XkbGetKeyExplicitComponents
+C/func/-/XkbGetKeyModifierMap
+C/func/-/XkbGetKeySyms
+C/func/-/XkbGetKeyTypes
+C/func/-/XkbGetKeyVirtualModMap
+C/func/-/XkbGetMap
+C/func/-/XkbGetNameChanges
+C/func/-/XkbGetNamedGeometry
+C/func/-/XkbGetNamedIndicator
+C/func/-/XkbGetNames
+C/func/-/XkbGetSlowKeysDelay
+C/func/-/XkbGetState
+C/func/-/XkbGetStickyKeysOptions
+C/func/-/XkbGetUpdatedMap
+C/func/-/XkbGetVirtualMods
+C/func/-/XkbGetXlibControls
+C/func/-/XkbIgnoreExtension
+C/func/-/XkbInitCanonicalKeyTypes
+C/func/-/XkbKeyAction
+C/func/-/XkbKeyActionEntry
+C/func/-/XkbKeyActionsPtr
+C/func/-/XkbKeycodeToKeysym
+C/func/-/XkbKeyGroupInfo
+C/func/-/XkbKeyGroupsWidth
+C/func/-/XkbKeyGroupWidth
+C/func/-/XkbKeyHasActions
+C/func/-/XkbKeyNumActions
+C/func/-/XkbKeyNumGroups
+C/func/-/XkbKeyNumSyms
+C/func/-/XkbKeySymEntry
+C/func/-/XkbKeySymsOffset
+C/func/-/XkbKeySymsPtr
+C/func/-/XkbKeysymToModifiers
+C/func/-/XkbKeyType
+C/func/-/XkbKeyTypeIndex
+C/func/-/XkbKeyTypesForCoreSymbols
+C/func/-/XkbLatchGroup
+C/func/-/XkbLatchModifiers
+C/func/-/XkbLibraryVersion
+C/func/-/XkbListComponents
+C/func/-/XkbLockGroup
+C/func/-/XkbLockModifiers
+C/func/-/XkbLookupKeyBinding
+C/func/-/XkbLookupKeySym
+C/func/-/XkbModActionVMods
+C/func/-/XkbNoteControlsChanges
+C/func/-/XkbNoteDeviceChanges
+C/func/-/XkbNoteIndicatorChanges
+C/func/-/XkbNoteNameChanges
+C/func/-/XkbOpenDisplay
+C/func/-/XkbOutOfRangeGroupInfo
+C/func/-/XkbOutOfRangeGroupNumber
+C/func/-/XkbPtrActionX
+C/func/-/XkbPtrActionY
+C/func/-/XkbQueryExtension
+C/func/-/XkbRefreshKeyboardMapping
+C/func/-/XkbResizeDeviceButtonActions
+C/func/-/XkbResizeKeyActions
+C/func/-/XkbResizeKeySyms
+C/func/-/XkbResizeKeyType
+C/func/-/XkbSAActionSetCtrls
+C/func/-/XkbSAGroup
+C/func/-/XkbSAPtrDfltValue
+C/func/-/XkbSARedirectSetVMods
+C/func/-/XkbSARedirectSetVModsMask
+C/func/-/XkbSARedirectVMods
+C/func/-/XkbSARedirectVModsMask
+C/func/-/XkbSAScreen
+C/func/-/XkbSASetGroup
+C/func/-/XkbSASetPtrDfltValue
+C/func/-/XkbSASetScreen
+C/func/-/XkbSelectEventDetails
+C/func/-/XkbSelectEvents
+C/func/-/XkbSetAccessXTimeout
+C/func/-/XkbSetAutoRepeatRate
+C/func/-/XkbSetAutoResetControls
+C/func/-/XkbSetBounceKeysDelay
+C/func/-/XkbSetCompatMap
+C/func/-/XkbSetControls
+C/func/-/XkbSetDebuggingFlags
+C/func/-/XkbSetDetectableAutorepeat
+C/func/-/XkbSetDeviceButtonActions
+C/func/-/XkbSetDeviceInfo
+C/func/-/XkbSetIgnoreLockMods
+C/func/-/XkbSetIndicatorMap
+C/func/-/XkbSetMap
+C/func/-/XkbSetModActionVMods
+C/func/-/XkbSetNamedIndicator
+C/func/-/XkbSetNames
+C/func/-/XkbSetPtrActionX
+C/func/-/XkbSetPtrActionY
+C/func/-/XkbSetServerInternalMods
+C/func/-/XkbSetXlibControls
+C/func/-/XkbTranslateKeyCode
+C/func/-/XkbTranslateKeySym
+C/func/-/XkbUpdateMapFromCore
+C/func/-/XkbVirtualModsToReal
+C/func/-/XKeyboardControl
+C/func/-/XKeycodeToKeysym
+C/func/-/XKeyEvent
+C/func/-/XKeymapEvent
+C/func/-/XKeysymToKeycode
+C/func/-/XKeysymToString
+C/func/-/XKillClient
+C/tdef/-/xlinkExtendedLinkFunk
+C/tdef/-/xlinkExtendedLinkSetFunk
+C/tdef/-/xlinkHandler
+C/tdef/-/xlinkHRef
+C/tdef/-/xlinkNodeDetectFunc
+C/tdef/-/xlinkSimpleLinkFunk
+C/func/-/XListDepths
+C/func/-/XListDeviceProperties
+C/func/-/XListExtensions
+C/func/-/XListFonts
+C/func/-/XListFontsWithInfo
+C/func/-/XListHosts
+C/func/-/XListInputDevices
+C/func/-/XListInstalledColormaps
+C/func/-/XListPixmapFormats
+C/func/-/XListProperties
+C/func/-/XLoadFont
+C/func/-/XLoadQueryFont
+C/func/-/xlocale
+C/func/-/XLocaleOfFontSet
+C/func/-/XLocaleOfIM
+C/func/-/XLocaleOfOM
+C/func/-/XLockDisplay
+C/func/-/XLookupColor
+C/func/-/XLookupKeysym
+C/func/-/XLookupString
+C/func/-/XLowerWindow
+C/func/-/XMapEvent
+C/func/-/XMappingEvent
+C/func/-/XMapRaised
+C/func/-/XMapRequestEvent
+C/func/-/XMapSubwindows
+C/func/-/XMapWindow
+C/func/-/XMaskEvent
+C/func/-/XMatchVisualInfo
+C/func/-/XMaxRequestSize
+C/func/-/XmbDrawImageString
+C/func/-/XmbDrawString
+C/func/-/XmbDrawText
+C/func/-/XmbLookupString
+C/func/-/XmbResetIC
+C/func/-/XmbSetWMProperties
+C/func/-/XmbTextEscapement
+C/func/-/XmbTextExtents
+C/func/-/XmbTextListToTextProperty
+C/func/-/XmbTextPerCharExtents
+C/func/-/XmbTextPropertyToTextList
+C/func/-/Xmbuf
+C/func/-/XmbufChangeBufferAttributes
+C/func/-/XmbufChangeWindowAttributes
+C/func/-/XmbufCreateBuffers
+C/func/-/XmbufCreateStereoWindow
+C/func/-/XmbufDestroyBuffers
+C/func/-/XmbufDisplayBuffers
+C/func/-/XmbufGetBufferAttributes
+C/func/-/XmbufGetScreenInfo
+C/func/-/XmbufGetVersion
+C/func/-/XmbufGetWindowAttributes
+C/func/-/XmbufQueryExtension
+C/macro/-/XML_CATALOG_PI
+C/macro/-/XML_CATALOGS_NAMESPACE
+C/macro/-/XML_COMPLETE_ATTRS
+C/macro/-/XML_CTXT_FINISH_DTD_0
+C/macro/-/XML_CTXT_FINISH_DTD_1
+C/macro/-/XML_DEFAULT_VERSION
+C/macro/-/XML_DETECT_IDS
+C/macro/-/XML_GET_CONTENT
+C/macro/-/XML_GET_LINE
+C/macro/-/XML_LOCAL_NAMESPACE
+C/macro/-/XML_MAX_NAMELEN
+C/macro/-/XML_SAX2_MAGIC
+C/macro/-/XML_SCHEMAS_ANY_LAX
+C/macro/-/XML_SCHEMAS_ANY_SKIP
+C/macro/-/XML_SCHEMAS_ANY_STRICT
+C/macro/-/XML_SCHEMAS_ANYATTR_LAX
+C/macro/-/XML_SCHEMAS_ANYATTR_SKIP
+C/macro/-/XML_SCHEMAS_ANYATTR_STRICT
+C/macro/-/XML_SCHEMAS_ATTR_FIXED
+C/macro/-/XML_SCHEMAS_ATTR_GLOBAL
+C/macro/-/XML_SCHEMAS_ATTR_INTERNAL_RESOLVED
+C/macro/-/XML_SCHEMAS_ATTR_NSDEFAULT
+C/macro/-/XML_SCHEMAS_ATTR_USE_OPTIONAL
+C/macro/-/XML_SCHEMAS_ATTR_USE_PROHIBITED
+C/macro/-/XML_SCHEMAS_ATTR_USE_REQUIRED
+C/macro/-/XML_SCHEMAS_ATTRGROUP_GLOBAL
+C/macro/-/XML_SCHEMAS_ATTRGROUP_MARKED
+C/macro/-/XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED
+C/macro/-/XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION
+C/macro/-/XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION
+C/macro/-/XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION
+C/macro/-/XML_SCHEMAS_ELEM_ABSTRACT
+C/macro/-/XML_SCHEMAS_ELEM_BLOCK_ABSENT
+C/macro/-/XML_SCHEMAS_ELEM_BLOCK_EXTENSION
+C/macro/-/XML_SCHEMAS_ELEM_BLOCK_RESTRICTION
+C/macro/-/XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION
+C/macro/-/XML_SCHEMAS_ELEM_CIRCULAR
+C/macro/-/XML_SCHEMAS_ELEM_DEFAULT
+C/macro/-/XML_SCHEMAS_ELEM_FINAL_ABSENT
+C/macro/-/XML_SCHEMAS_ELEM_FINAL_EXTENSION
+C/macro/-/XML_SCHEMAS_ELEM_FINAL_RESTRICTION
+C/macro/-/XML_SCHEMAS_ELEM_FIXED
+C/macro/-/XML_SCHEMAS_ELEM_GLOBAL
+C/macro/-/XML_SCHEMAS_ELEM_INTERNAL_RESOLVED
+C/macro/-/XML_SCHEMAS_ELEM_NILLABLE
+C/macro/-/XML_SCHEMAS_ELEM_NSDEFAULT
+C/macro/-/XML_SCHEMAS_ELEM_REF
+C/macro/-/XML_SCHEMAS_ELEM_TOPLEVEL
+C/macro/-/XML_SCHEMAS_FINAL_DEFAULT_EXTENSION
+C/macro/-/XML_SCHEMAS_FINAL_DEFAULT_LIST
+C/macro/-/XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION
+C/macro/-/XML_SCHEMAS_FINAL_DEFAULT_UNION
+C/macro/-/XML_SCHEMAS_INCLUDING_CONVERT_NS
+C/macro/-/XML_SCHEMAS_QUALIF_ATTR
+C/macro/-/XML_SCHEMAS_QUALIF_ELEM
+C/macro/-/XML_SCHEMAS_TYPE_ABSTRACT
+C/macro/-/XML_SCHEMAS_TYPE_BLOCK_DEFAULT
+C/macro/-/XML_SCHEMAS_TYPE_BLOCK_EXTENSION
+C/macro/-/XML_SCHEMAS_TYPE_BLOCK_RESTRICTION
+C/macro/-/XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE
+C/macro/-/XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION
+C/macro/-/XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION
+C/macro/-/XML_SCHEMAS_TYPE_FINAL_DEFAULT
+C/macro/-/XML_SCHEMAS_TYPE_FINAL_EXTENSION
+C/macro/-/XML_SCHEMAS_TYPE_FINAL_LIST
+C/macro/-/XML_SCHEMAS_TYPE_FINAL_RESTRICTION
+C/macro/-/XML_SCHEMAS_TYPE_FINAL_UNION
+C/macro/-/XML_SCHEMAS_TYPE_GLOBAL
+C/macro/-/XML_SCHEMAS_TYPE_MARKED
+C/macro/-/XML_SCHEMAS_TYPE_MIXED
+C/macro/-/XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD
+C/macro/-/XML_SCHEMAS_TYPE_VARIETY_ABSENT
+C/macro/-/XML_SCHEMAS_TYPE_VARIETY_ATOMIC
+C/macro/-/XML_SCHEMAS_TYPE_VARIETY_LIST
+C/macro/-/XML_SCHEMAS_TYPE_VARIETY_UNION
+C/macro/-/XML_SCHEMAS_WILDCARD_COMPLETE
+C/macro/-/XML_SKIP_IDS
+C/macro/-/XML_SUBSTITUTE_BOTH
+C/macro/-/XML_SUBSTITUTE_NONE
+C/macro/-/XML_SUBSTITUTE_PEREF
+C/macro/-/XML_SUBSTITUTE_REF
+C/macro/-/XML_XML_ID
+C/macro/-/XML_XML_NAMESPACE
+C/tdef/-/xmlAttr
+C/tdef/-/xmlAttribute
+C/tdef/-/xmlAttributeDefault
+C/tdef/-/xmlAttributeType
+C/tdef/-/xmlAutomata
+C/tdef/-/xmlAutomataState
+JavaScript/data/SVGElement/xmlbase
+C/tdef/-/xmlBuffer
+C/tdef/-/xmlBufferAllocationScheme
+C/tdef/-/xmlC14NIsVisibleCallback
+C/macro/-/XMLCALL
+C/tdef/-/XMLCALL
+C/tdef/-/xmlChar
+C/tdef/-/xmlCharEncodingInputFunc
+C/tdef/-/xmlCharEncodingOutputFunc
+Objective-C/instm/NSXMLDocument/XMLData
+Objective-C/instm/NSXMLDocument/XMLDataWithOptions:
+C/tdef/-/XMLDoc
+C/tdef/-/xmlDoc
+C/tag/-/XMLDocRecord
+JavaScript/data/DOMWindow/XMLDocument
+C/tdef/-/xmlDtd
+C/tdef/-/xmlElement
+C/tdef/-/xmlElementContent
+C/tdef/-/xmlElementContentOccur
+C/tdef/-/xmlElementContentType
+C/tdef/-/xmlElementTypeVal
+JavaScript/data/Document/xmlEncoding
+C/tdef/-/xmlEntityReferenceFunc
+C/tdef/-/xmlEnumeration
+C/tdef/-/xmlError
+C/tdef/-/xmlErrorDomain
+C/tdef/-/xmlErrorLevel
+C/tdef/-/xmlExternalEntityLoader
+C/func/-/xmlFileMatch
+C/tdef/-/xmlGenericErrorFunc
+C/tdef/-/xmlHashCopier
+C/tdef/-/xmlHashDeallocator
+C/tdef/-/xmlHashScanner
+C/tdef/-/xmlHashScannerFull
+JavaScript/data/DOMWindow/XMLHttpRequest
+JavaScript/data/WorkerContext/XMLHttpRequest
+JavaScript/cl/-/XMLHttpRequest
+JavaScript/data/DOMWindow/XMLHttpRequestException
+JavaScript/cl/-/XMLHttpRequestException
+JavaScript/cl/-/XMLHttpRequestProgressEvent
+JavaScript/data/DOMWindow/XMLHttpRequestUpload
+JavaScript/cl/-/XMLHttpRequestUpload
+C/tdef/-/xmlID
+C/tdef/-/xmlInputCloseCallback
+C/tdef/-/xmlInputMatchCallback
+C/tdef/-/xmlInputOpenCallback
+C/tdef/-/xmlInputReadCallback
+C/macro/-/xmlIsBaseChar_ch
+C/macro/-/xmlIsBaseCharQ
+C/macro/-/xmlIsBlank_ch
+C/macro/-/xmlIsBlankQ
+C/macro/-/xmlIsChar_ch
+C/macro/-/xmlIsCharQ
+C/macro/-/xmlIsCombiningQ
+C/macro/-/xmlIsDigit_ch
+C/macro/-/xmlIsDigitQ
+C/macro/-/xmlIsExtender_ch
+C/macro/-/xmlIsExtenderQ
+C/macro/-/xmlIsIdeographicQ
+C/macro/-/xmlIsPubidChar_ch
+C/macro/-/xmlIsPubidCharQ
+JavaScript/data/SVGLangSpace/xmllang
+C/tdef/-/xmlListDataCompare
+C/tdef/-/xmlListDeallocator
+C/tdef/-/xmlListWalker
+C/macro/-/xmlMalloc
+C/macro/-/xmlMallocAtomic
+C/macro/-/xmlMemStrdup
+C/tdef/-/xmlNode
+C/tdef/-/xmlNotation
+C/tdef/-/xmlNs
+C/tdef/-/xmlOutputCloseCallback
+C/tdef/-/xmlOutputMatchCallback
+C/tdef/-/xmlOutputOpenCallback
+C/tdef/-/xmlOutputWriteCallback
+C/func/-/XMLParseAddAttribute
+C/func/-/XMLParseAddAttributeAndValue
+C/func/-/XMLParseAddAttributeValueKind
+C/func/-/XMLParseAddElement
+C/func/-/XMLParseAddMultipleAttributes
+C/func/-/XMLParseAddMultipleAttributesAndValues
+C/func/-/XMLParseAddNameSpace
+C/func/-/XMLParseDataRef
+C/func/-/XMLParseDisposeXMLDoc
+C/func/-/XMLParseFile
+C/func/-/XMLParseGetDetailedParseError
+C/tdef/-/xmlParserErrors
+C/tdef/-/xmlParserInputDeallocate
+C/tdef/-/xmlParserInputState
+C/data/-/xmlParserMaxDepth
+C/tdef/-/xmlParserMode
+C/tdef/-/xmlParserNodeInfo
+C/tdef/-/xmlParserOption
+C/tdef/-/xmlParserProperties
+C/tdef/-/xmlParserSeverities
+C/func/-/XMLParseSetCDataHandler
+C/func/-/XMLParseSetCharDataHandler
+C/func/-/XMLParseSetCommentHandler
+C/func/-/XMLParseSetEndDocumentHandler
+C/func/-/XMLParseSetEndElementHandler
+C/func/-/XMLParseSetEventParseRefCon
+C/func/-/XMLParseSetOffsetAndLimit
+C/func/-/XMLParseSetPreprocessInstructionHandler
+C/func/-/XMLParseSetStartDocumentHandler
+C/func/-/XMLParseSetStartElementHandler
+C/tdef/-/xmlPattern
+C/data/-/XMLPUBFUN
+C/macro/-/XMLPUBFUN
+C/macro/-/XMLPUBVAR
+C/tdef/-/xmlReaderTypes
+C/macro/-/xmlRealloc
+C/tdef/-/xmlRef
+C/tdef/-/xmlRegExecCtxt
+C/tdef/-/xmlRegexp
+C/tdef/-/xmlRelaxNGValidityErrorFunc
+Objective-C/instp/PSEntry/XMLRepresentation
+Objective-C/instm/PSFeed/XMLRepresentation
+Objective-C/instm/PSFeed/XMLRepresentationWithEntries:
+C/tdef/-/xmlSchema
+C/tdef/-/xmlSchemaAnnot
+C/tdef/-/xmlSchemaAttribute
+C/tdef/-/xmlSchemaAttributeGroup
+C/tdef/-/xmlSchemaAttributeLink
+C/tdef/-/xmlSchemaFacetLink
+C/tdef/-/xmlSchemaNotation
+C/tdef/-/xmlSchemaTypeLink
+C/tdef/-/xmlSchemaValidError
+C/tdef/-/xmlSchemaValidityErrorFunc
+C/tdef/-/xmlSchemaValidOption
+C/tdef/-/xmlSchemaWildcard
+C/tdef/-/xmlSchemaWildcardNs
+JavaScript/data/DOMWindow/XMLSerializer
+JavaScript/cl/-/XMLSerializer
+C/tdef/-/xmlShellCmd
+C/tdef/-/xmlShellCtxt
+C/tdef/-/xmlShellReadlineFunc
+JavaScript/data/SVGLangSpace/xmlspace
+JavaScript/data/Document/xmlStandalone
+Objective-C/instm/NSXMLNode/XMLString
+C/data/-/xmlStringText
+Objective-C/instm/NSXMLNode/XMLStringWithOptions:
+C/tdef/-/xmlStructuredErrorFunc
+C/tdef/-/xmlTextReader
+C/tdef/-/xmlTextReaderMode
+C/tdef/-/xmlTextReaderPtr
+C/macro/-/xmlTextWriterWriteDocType
+C/macro/-/xmlTextWriterWriteProcessingInstruction
+C/tdef/-/xmlURI
+C/tdef/-/xmlValidityErrorFunc
+C/tdef/-/xmlValidityWarningFunc
+JavaScript/data/Document/xmlVersion
+C/tdef/-/xmlXPathAxisFunc
+C/macro/-/xmlXPathCheckError
+C/tdef/-/xmlXPathConvertFunc
+C/macro/-/xmlXPathEmptyNodeSet
+C/tdef/-/xmlXPathError
+C/tdef/-/xmlXPathEvalFunc
+C/tdef/-/xmlXPathFuncLookupFunc
+C/tdef/-/xmlXPathFunction
+C/macro/-/xmlXPathGetContextNode
+C/macro/-/xmlXPathGetDocument
+C/macro/-/xmlXPathGetError
+C/data/-/xmlXPathNAN
+C/macro/-/xmlXPathNodeSetGetLength
+C/macro/-/xmlXPathNodeSetIsEmpty
+C/macro/-/xmlXPathNodeSetItem
+C/macro/-/xmlXPathReturnBoolean
+C/macro/-/xmlXPathReturnEmptyNodeSet
+C/macro/-/xmlXPathReturnEmptyString
+C/macro/-/xmlXPathReturnExternal
+C/macro/-/xmlXPathReturnFalse
+C/macro/-/xmlXPathReturnNodeSet
+C/macro/-/xmlXPathReturnNumber
+C/macro/-/xmlXPathReturnString
+C/macro/-/xmlXPathReturnTrue
+C/macro/-/xmlXPathSetArityError
+C/macro/-/xmlXPathSetError
+C/macro/-/xmlXPathSetTypeError
+C/macro/-/xmlXPathStackIsExternal
+C/macro/-/xmlXPathStackIsNodeSet
+C/tdef/-/xmlXPathVariableLookupFunc
+C/func/-/XModifierKeymap
+C/func/-/XMotionEvent
+C/func/-/XMoveResizeWindow
+C/func/-/XMoveWindow
+C/func/-/XNewModifiermap
+C/func/-/XNextEvent
+C/func/-/XNoExposeEvent
+C/func/-/XNoOp
+C/func/-/XOffsetRegion
+C/func/-/XOMOfOC
+C/func/-/XOpenDevice
+C/func/-/XOpenDisplay
+C/func/-/XOpenIM
+C/func/-/XOpenOM
+C/macro/-/XP_ERROR
+C/macro/-/XP_ERROR0
+C/func/-/XParseColor
+C/func/-/XParseGeometry
+Objective-C/instm/NSXMLNode/XPath
+JavaScript/data/DOMWindow/XPathEvaluator
+JavaScript/cl/-/XPathEvaluator
+JavaScript/data/DOMWindow/XPathException
+JavaScript/cl/-/XPathException
+JavaScript/cl/-/XPathExpression
+JavaScript/cl/-/XPathNSResolver
+JavaScript/data/DOMWindow/XPathResult
+JavaScript/cl/-/XPathResult
+C/func/-/XpCancelDoc
+C/func/-/XpCancelJob
+C/func/-/XpCancelPage
+C/func/-/XpCreateContext
+C/func/-/XpDestroyContext
+C/func/-/XPeekEvent
+C/func/-/XPeekIfEvent
+C/func/-/XpEndDoc
+C/func/-/XPending
+C/func/-/XpEndJob
+C/func/-/XpEndPage
+C/func/-/XpFreePrinterList
+C/func/-/XpGetAttributes
+C/func/-/XpGetContext
+C/func/-/XpGetDocumentData
+C/func/-/XpGetImageResolution
+C/func/-/XpGetLocaleHinter
+C/func/-/XpGetOneAttribute
+C/func/-/XpGetPageDimensions
+C/func/-/XpGetPdmStartParams
+C/func/-/XpGetPrinterList
+C/func/-/XpGetScreenOfContext
+C/func/-/XpInputSelected
+C/func/-/XPixmapFormatValues
+C/func/-/XPoint
+C/func/-/XPointInRegion
+C/func/-/XPolygonRegion
+C/func/-/XpPutDocumentData
+C/func/-/XpQueryExtension
+C/func/-/XpQueryScreens
+C/func/-/XpQueryVersion
+C/func/-/XpRehashPrinterList
+C/func/-/XProcessInternalConnection
+C/func/-/XPropertyEvent
+C/func/-/xprt_register
+C/func/-/xprt_unregister
+C/func/-/XpSelectInput
+C/func/-/XpSetAttributes
+C/func/-/XpSetContext
+C/func/-/XpSetImageResolution
+C/func/-/XpSetLocaleHinter
+C/func/-/XpStartDoc
+C/func/-/XpStartJob
+C/func/-/XpStartPage
+C/func/-/XPutBackEvent
+C/func/-/XPutImage
+C/func/-/XPutPixel
+C/func/-/XQueryBestCursor
+C/func/-/XQueryBestSize
+C/func/-/XQueryBestStipple
+C/func/-/XQueryBestTile
+C/func/-/XQueryColor
+C/func/-/XQueryColors
+C/func/-/XQueryDeviceState
+C/func/-/XQueryExtension
+C/func/-/XQueryFont
+C/func/-/XQueryKeymap
+C/func/-/XQueryPointer
+C/func/-/XQueryTextExtents
+C/func/-/XQueryTextExtents16
+C/func/-/XQueryTree
+C/func/-/XRaiseWindow
+C/func/-/Xrandr
+C/func/-/XReadBitmapFile
+C/func/-/XReadBitmapFileData
+C/func/-/XRebindKeysym
+C/func/-/XRecolorCursor
+C/func/-/XReconfigureWMWindow
+C/func/-/XRectangle
+C/func/-/XRectInRegion
+C/func/-/XRefreshKeyboardMapping
+C/func/-/XRegisterIMInstantiateCallback
+C/func/-/XRemoveConnectionWatch
+C/func/-/XRemoveFromSaveSet
+C/func/-/XRemoveHost
+C/func/-/XRemoveHosts
+C/func/-/XReparentEvent
+C/func/-/XReparentWindow
+C/func/-/XRes
+C/func/-/XResetScreenSaver
+C/func/-/XResizeRequestEvent
+C/func/-/XResizeWindow
+C/func/-/XResourceManagerString
+C/func/-/XResQueryClientPixmapBytes
+C/func/-/XResQueryClientResources
+C/func/-/XResQueryClients
+C/func/-/XResQueryExtension
+C/func/-/XResQueryVersion
+C/func/-/XRestackWindows
+C/func/-/XrmCombineDatabase
+C/func/-/XrmCombineFileDatabase
+C/func/-/XrmDestroyDatabase
+C/func/-/XrmEnumerateDatabase
+C/func/-/XrmGetDatabase
+C/func/-/XrmGetFileDatabase
+C/func/-/XrmGetResource
+C/func/-/XrmGetStringDatabase
+C/func/-/XrmInitialize
+C/func/-/XrmLocaleOfDatabase
+C/func/-/XrmMergeDatabases
+C/func/-/XrmOptionDescRec
+C/func/-/XrmOptionKind
+C/func/-/XrmParseCommand
+C/func/-/XrmPermStringToQuark
+C/func/-/XrmPutFileDatabase
+C/func/-/XrmPutLineResource
+C/func/-/XrmPutResource
+C/func/-/XrmPutStringResource
+C/func/-/XrmQGetResource
+C/func/-/XrmQGetSearchList
+C/func/-/XrmQGetSearchResource
+C/func/-/XrmQPutResource
+C/func/-/XrmQPutStringResource
+C/func/-/XrmQuarkToString
+C/func/-/XrmSetDatabase
+C/func/-/XrmStringToBindingQuarkList
+C/func/-/XrmStringToQuark
+C/func/-/XrmStringToQuarkList
+C/func/-/XrmUniqueQuark
+C/func/-/XrmValue
+C/func/-/XRotateBuffers
+C/func/-/XRotateWindowProperties
+-/writerid/-/xrpt_Adding_And_Configuring_Instruments
+-/writerid/-/xrpt_Adding_and_Removing_Instruments
+-/writerid/-/xrpt_Creating_Custom_Instruments
+C/func/-/XRRConfigCurrentConfiguration
+C/func/-/XRRConfigCurrentRate
+C/func/-/XRRConfigRates
+C/func/-/XRRConfigRotations
+C/func/-/XRRConfigSizes
+C/func/-/XRRConfigTimes
+C/func/-/XRRFreeScreenConfigInfo
+C/func/-/XRRGetScreenInfo
+C/func/-/XRRQueryExtension
+C/func/-/XRRQueryVersion
+C/func/-/XRRRootToScreen
+C/func/-/XRRSelectInput
+C/func/-/XRRSetScreenConfig
+C/func/-/XRRSetScreenConfigAndRate
+C/func/-/XSaveContext
+C/func/-/XScreenNumberOfScreen
+C/func/-/XScreenResourceString
+C/func/-/XScreenSaverRegister
+C/func/-/XSegment
+C/func/-/XSelectExtensionEvent
+C/func/-/XSelectInput
+C/func/-/XSelectionClearEvent
+C/func/-/XSelectionEvent
+C/func/-/XSelectionRequestEvent
+C/func/-/XSendEvent
+C/func/-/XSendExtensionEvent
+C/func/-/XSetAccessControl
+C/func/-/XSetAfterFunction
+C/func/-/XSetArcMode
+C/func/-/XSetBackground
+C/func/-/XSetClassHint
+C/func/-/XSetClipMask
+C/func/-/XSetClipOrigin
+C/func/-/XSetClipRectangles
+C/func/-/XSetCloseDownMode
+C/func/-/XSetCommand
+C/func/-/XSetDashes
+C/func/-/XSetDeviceButtonMapping
+C/func/-/XSetDeviceFocus
+C/func/-/XSetDeviceMode
+C/func/-/XSetDeviceModifierMapping
+C/func/-/XSetDeviceValuators
+C/func/-/XSetErrorHandler
+C/func/-/XSetEventQueueOwner
+C/func/-/XSetFillRule
+C/func/-/XSetFillStyle
+C/func/-/XSetFont
+C/func/-/XSetFontPath
+C/func/-/XSetForeground
+C/func/-/XSetFunction
+C/func/-/XSetGraphicsExposure
+C/func/-/XSetICFocus
+C/func/-/XSetIconName
+C/func/-/XSetIconSizes
+C/func/-/XSetICValues
+C/func/-/XSetIMValues
+C/func/-/XSetInputFocus
+C/func/-/XSetIOErrorHandler
+C/func/-/XSetLineAttributes
+C/func/-/XSetLocaleModifiers
+C/func/-/XSetModifierMapping
+C/func/-/XSetOCValues
+C/func/-/XSetOMValues
+C/func/-/XSetPlaneMask
+C/func/-/XSetPointerMapping
+C/func/-/XSetRegion
+C/func/-/XSetRGBColormaps
+C/func/-/XSetScreenSaver
+C/func/-/XSetSelectionOwner
+C/func/-/XSetState
+C/func/-/XSetStipple
+C/func/-/XSetSubwindowMode
+C/func/-/XSetTextProperty
+C/func/-/XSetTile
+C/func/-/XSetTransientForHint
+C/func/-/XSetTSOrigin
+C/func/-/XSetWindowAttributes
+C/func/-/XSetWindowBackground
+C/func/-/XSetWindowBackgroundPixmap
+C/func/-/XSetWindowBorder
+C/func/-/XSetWindowBorderPixmap
+C/func/-/XSetWindowBorderWidth
+C/func/-/XSetWindowColormap
+C/func/-/XSetWMClientMachine
+C/func/-/XSetWMColormapWindows
+C/func/-/XSetWMHints
+C/func/-/XSetWMIconName
+C/func/-/XSetWMName
+C/func/-/XSetWMNormalHints
+C/func/-/XSetWMProperties
+C/func/-/XSetWMProtocols
+C/func/-/XSetWMSizeHints
+C/func/-/XShape
+C/func/-/XShapeCombineMask
+C/func/-/XShapeCombineRectangles
+C/func/-/XShapeCombineRegion
+C/func/-/XShapeCombineShape
+C/func/-/XShapeGetRectangles
+C/func/-/XShapeInputSelected
+C/func/-/XShapeOffsetShape
+C/func/-/XShapeQueryExtension
+C/func/-/XShapeQueryExtents
+C/func/-/XShapeQueryVersion
+C/func/-/XShapeSelectInput
+C/func/-/XShm
+C/func/-/XShmAttach
+C/func/-/XShmCreateImage
+C/func/-/XShmCreatePixmap
+C/func/-/XShmDetach
+C/func/-/XShmGetEventBase
+C/func/-/XShmGetImage
+C/func/-/XShmPixmapFormat
+C/func/-/XShmPutImage
+C/func/-/XShmQueryExtension
+C/func/-/XShmQueryVersion
+C/func/-/XShrinkRegion
+C/func/-/XSizeHints
+C/macro/-/XSLT_DEFAULT_URL
+C/macro/-/XSLT_DEFAULT_VENDOR
+C/macro/-/XSLT_DEFAULT_VERSION
+C/macro/-/XSLT_GET_IMPORT_INT
+C/macro/-/XSLT_GET_IMPORT_PTR
+C/macro/-/XSLT_LIBXSLT_NAMESPACE
+C/macro/-/XSLT_MAX_SORT
+C/macro/-/XSLT_NAMESPACE
+C/macro/-/XSLT_NORM_SAXON_NAMESPACE
+C/macro/-/XSLT_PARSE_OPTIONS
+C/macro/-/XSLT_PAT_NO_PRIORITY
+C/macro/-/XSLT_REGISTER_FUNCTION_LOOKUP
+C/macro/-/XSLT_REGISTER_VARIABLE_LOOKUP
+C/macro/-/XSLT_RUNTIME_EXTRA
+C/macro/-/XSLT_RUNTIME_EXTRA_FREE
+C/macro/-/XSLT_RUNTIME_EXTRA_LST
+C/macro/-/XSLT_SAXON_NAMESPACE
+C/macro/-/XSLT_STRANGE
+C/macro/-/XSLT_TIMESTAMP_TICS_PER_SEC
+C/macro/-/XSLT_TODO
+C/macro/-/XSLT_TRACE
+C/macro/-/XSLT_XALAN_NAMESPACE
+C/macro/-/XSLT_XT_NAMESPACE
+C/macro/-/XSLTCALL
+C/tdef/-/xsltDecimalFormat
+C/tdef/-/xsltDocLoaderFunc
+C/tdef/-/xsltDocument
+C/tdef/-/xsltElemPreComp
+C/tdef/-/xsltElemPreCompDeallocator
+C/data/-/xsltEngineVersion
+C/tdef/-/xsltExtInitFunction
+C/tdef/-/xsltExtShutdownFunction
+C/tdef/-/xsltFormatNumberInfo
+C/data/-/xsltLibxmlVersion
+C/data/-/xsltLibxsltVersion
+C/tdef/-/xsltLoadType
+C/data/-/xsltMaxDepth
+C/tdef/-/xsltNumberData
+JavaScript/data/DOMWindow/XSLTProcessor
+JavaScript/cl/-/XSLTProcessor
+C/data/-/XSLTPUBFUN
+C/macro/-/XSLTPUBFUN
+C/macro/-/XSLTPUBVAR
+C/tdef/-/xsltRuntimeExtra
+C/tdef/-/xsltSecurityCheck
+C/tdef/-/xsltSecurityOption
+C/tdef/-/xsltSecurityPrefs
+C/tdef/-/xsltSortFunc
+C/tdef/-/xsltStyleExtInitFunction
+C/tdef/-/xsltStyleExtShutdownFunction
+C/tdef/-/xsltStylePreComp
+C/tdef/-/xsltTemplate
+C/tdef/-/xsltTransformFunction
+C/func/-/Xss
+C/func/-/XStandardColormap
+C/func/-/XStoreBuffer
+C/func/-/XStoreBytes
+C/func/-/XStoreColor
+C/func/-/XStoreColors
+C/func/-/XStoreName
+C/func/-/XStoreNamedColor
+C/func/-/XStringListToTextProperty
+C/func/-/XStringToKeysym
+C/func/-/XSubImage
+C/func/-/XSubtractRegion
+C/func/-/XSupportsLocale
+C/func/-/XSync
+C/func/-/XSynchronize
+C/func/-/XtAddActions
+C/func/-/XtAddCallback
+C/func/-/XtAddCallbacks
+C/func/-/XtAddConverter
+C/func/-/XtAddEventHandler
+C/func/-/XtAddExposureToRegion
+C/func/-/XtAddGrab
+C/func/-/XtAddInput
+C/func/-/XtAddRawEventHandler
+C/func/-/XtAddTimeOut
+C/func/-/XtAddWorkProc
+C/func/-/XtAllocateGC
+C/func/-/XtAppAddActionHook
+C/func/-/XtAppAddActions
+C/func/-/XtAppAddBlockHook
+C/func/-/XtAppAddConverter
+C/func/-/XtAppAddInput
+C/func/-/XtAppAddSignal
+C/func/-/XtAppAddTimeOut
+C/func/-/XtAppAddWorkProc
+C/func/-/XtAppCreateShell
+C/func/-/XtAppError
+C/func/-/XtAppErrorMsg
+C/func/-/XtAppGetErrorDatabase
+C/func/-/XtAppGetErrorDatabaseText
+C/func/-/XtAppGetExitFlag
+C/func/-/XtAppGetSelectionTimeout
+C/func/-/XtAppInitialize
+C/func/-/XtAppLock
+C/func/-/XtAppMainLoop
+C/func/-/XtAppNextEvent
+C/func/-/XtAppPeekEvent
+C/func/-/XtAppPending
+C/func/-/XtAppProcessEvent
+C/func/-/XtAppReleaseCacheRefs
+C/func/-/XtAppSetErrorHandler
+C/func/-/XtAppSetErrorMsgHandler
+C/func/-/XtAppSetExitFlag
+C/func/-/XtAppSetFallbackResources
+C/func/-/XtAppSetSelectionTimeout
+C/func/-/XtAppSetTypeConverter
+C/func/-/XtAppSetWarningHandler
+C/func/-/XtAppSetWarningMsgHandler
+C/func/-/XtAppUnlock
+C/func/-/XtAppWarning
+C/func/-/XtAppWarningMsg
+C/func/-/XtAugmentTranslations
+C/func/-/XtBuildEventMask
+C/func/-/XtCallAcceptFocus
+C/func/-/XtCallActionProc
+C/func/-/XtCallbackExclusive
+C/func/-/XtCallbackNone
+C/func/-/XtCallbackNonexclusive
+C/func/-/XtCallbackPopdown
+C/func/-/XtCallCallbackList
+C/func/-/XtCallCallbacks
+C/func/-/XtCallConverter
+C/func/-/XtCalloc
+C/func/-/XtCancelSelectionRequest
+C/func/-/XtChangeManagedSet
+C/func/-/XtCheckSubclass
+C/func/-/XtClass
+C/func/-/XtCloseDisplay
+C/func/-/XtConfigureWidget
+C/func/-/XtConvert
+C/func/-/XtConvertAndStore
+C/func/-/XtConvertCase
+C/func/-/XtCreateApplicationContext
+C/func/-/XtCreateApplicationShell
+C/func/-/XtCreateManagedWidget
+C/func/-/XtCreatePopupShell
+C/func/-/XtCreateSelectionRequest
+C/func/-/XtCreateWidget
+C/func/-/XtCreateWindow
+C/func/-/XtDatabase
+C/func/-/XtDestroyApplicationContext
+C/func/-/XtDestroyWidget
+C/func/-/XtDirectConvert
+C/func/-/XtDisownSelection
+C/func/-/XtDispatchEvent
+C/func/-/XtDispatchEventToWidget
+C/func/-/XtDisplay
+C/func/-/XtDisplayInitialize
+C/func/-/XtDisplayOfObject
+C/func/-/XtDisplayStringConversionWarning
+C/func/-/XtDisplayToApplicationContext
+C/func/-/XtError
+C/func/-/XtErrorMsg
+C/func/-/XTestCompareCurrentCursorWithWindow
+C/func/-/XTestCompareCursorWithWindow
+C/func/-/XTestDiscard
+C/func/-/XTestFakeButtonEvent
+C/func/-/XTestFakeKeyEvent
+C/func/-/XTestFakeMotionEvent
+C/func/-/XTestFakeRelativeMotionEvent
+C/func/-/XTestGrabControl
+C/func/-/XTestQueryExtension
+C/func/-/XTestSetGContextOfGC
+C/func/-/XTestSetVisualIDOfVisual
+C/func/-/XTextExtents
+C/func/-/XTextExtents16
+C/func/-/XTextItem
+C/func/-/XTextItem16
+C/func/-/XTextProperty
+C/func/-/XTextPropertyToStringList
+C/func/-/XTextWidth
+C/func/-/XTextWidth16
+C/func/-/XtFindFile
+C/func/-/XtFree
+C/func/-/XtGetActionKeysym
+C/func/-/XtGetActionList
+C/func/-/XtGetApplicationNameAndClass
+C/func/-/XtGetApplicationResources
+C/func/-/XtGetClassExtension
+C/func/-/XtGetConstraintResourceList
+C/func/-/XtGetDisplays
+C/func/-/XtGetErrorDatabase
+C/func/-/XtGetErrorDatabaseText
+C/func/-/XtGetGC
+C/func/-/XtGetKeyboardFocusWidget
+C/func/-/XtGetKeysymTable
+C/func/-/XtGetMultiClickTime
+C/func/-/XtGetResourceList
+C/func/-/XtGetSelectionParameters
+C/func/-/XtGetSelectionRequest
+C/func/-/XtGetSelectionTimeout
+C/func/-/XtGetSelectionValue
+C/func/-/XtGetSelectionValueIncremental
+C/func/-/XtGetSelectionValues
+C/func/-/XtGetSelectionValuesIncremental
+C/func/-/XtGetSubresources
+C/func/-/XtGetSubvalues
+C/func/-/XtGetValues
+C/func/-/XtGrabButton
+C/func/-/XtGrabKey
+C/func/-/XtGrabKeyboard
+C/func/-/XtGrabPointer
+C/func/-/XtHasCallbacks
+C/func/-/XtHooksOfDisplay
+C/func/-/XTimeCoord
+C/func/-/XtInitialize
+C/func/-/XtInitializeWidgetClass
+C/func/-/XtInsertEventHandler
+C/func/-/XtInsertEventTypeHandler
+C/func/-/XtInsertRawEventHandler
+C/func/-/XtInstallAccelerators
+C/func/-/XtInstallAllAccelerators
+C/func/-/XtIsApplicationShell
+C/func/-/XtIsComposite
+C/func/-/XtIsConstraint
+C/func/-/XtIsManaged
+C/func/-/XtIsObject
+C/func/-/XtIsOverrideShell
+C/func/-/XtIsRealized
+C/func/-/XtIsRectObj
+C/func/-/XtIsSensitive
+C/func/-/XtIsSessionShell
+C/func/-/XtIsShell
+C/func/-/XtIsSubclass
+C/func/-/XtIsTopLevelShell
+C/func/-/XtIsTransientShell
+C/func/-/XtIsVendorShell
+C/func/-/XtIsWidget
+C/func/-/XtIsWMShell
+C/func/-/XtKeysymToKeycodeList
+C/func/-/XtLastEventProcessed
+C/func/-/XtLastTimestampProcessed
+C/func/-/XtMainLoop
+C/func/-/XtMakeGeometryRequest
+C/func/-/XtMakeResizeRequest
+C/func/-/XtMalloc
+C/func/-/XtManageChild
+C/func/-/XtManageChildren
+C/func/-/XtMapWidget
+C/func/-/XtMergeArgLists
+C/func/-/XtMoveWidget
+C/func/-/XtName
+C/func/-/XtNameToWidget
+C/func/-/XtNew
+C/func/-/XtNewString
+C/func/-/XtNextEvent
+C/func/-/XtNoticeSignal
+C/func/-/XtNumber
+C/func/-/XtOffset
+C/func/-/XtOffsetOf
+C/func/-/XtOpenApplication
+C/func/-/XtOpenDisplay
+C/func/-/XtOverrideTranslations
+C/func/-/XtOwnSelection
+C/func/-/XtOwnSelectionIncremental
+C/func/-/XtParent
+C/func/-/XtParseAcceleratorTable
+C/func/-/XtParseTranslationTable
+C/func/-/XtPeekEvent
+C/func/-/XtPending
+C/func/-/XtPopdown
+C/func/-/XtPopup
+C/func/-/XtPopupSpringLoaded
+C/func/-/XtProcessEvent
+C/func/-/XtProcessLock
+C/func/-/XtProcessUnlock
+C/func/-/XtQueryGeometry
+C/func/-/XTranslateCoordinates
+C/func/-/XtRealizeWidget
+C/func/-/XtRealloc
+C/func/-/XtRegisterCaseConverter
+C/func/-/XtRegisterDrawable
+C/func/-/XtRegisterExtensionSelector
+C/func/-/XtRegisterGrabAction
+C/func/-/XtReleaseGC
+C/func/-/XtReleasePropertyAtom
+C/func/-/XtRemoveActionHook
+C/func/-/XtRemoveAllCallbacks
+C/func/-/XtRemoveBlockHook
+C/func/-/XtRemoveCallback
+C/func/-/XtRemoveCallbacks
+C/func/-/XtRemoveEventHandler
+C/func/-/XtRemoveEventTypeHandler
+C/func/-/XtRemoveGrab
+C/func/-/XtRemoveInput
+C/func/-/XtRemoveRawEventHandler
+C/func/-/XtRemoveSignal
+C/func/-/XtRemoveTimeOut
+C/func/-/XtRemoveWorkProc
+C/func/-/XtReservePropertyAtom
+C/func/-/XtResizeWidget
+C/func/-/XtResolvePathname
+C/func/-/XtScreen
+C/func/-/XtScreenDatabase
+C/func/-/XtScreenOfObject
+C/func/-/XtSendSelectionRequest
+C/func/-/XtSessionGetToken
+C/func/-/XtSessionReturnToken
+C/func/-/XtSetArg
+C/func/-/XtSetErrorHandler
+C/func/-/XtSetErrorMsgHandler
+C/func/-/XtSetEventDispatcher
+C/func/-/XtSetKeyboardFocus
+C/func/-/XtSetKeyTranslator
+C/func/-/XtSetLanguageProc
+C/func/-/XtSetMappedWhenManaged
+C/func/-/XtSetMultiClickTime
+C/func/-/XtSetSelectionParameters
+C/func/-/XtSetSelectionTimeout
+C/func/-/XtSetSensitive
+C/func/-/XtSetSubvalues
+C/func/-/XtSetTypeConverter
+C/func/-/XtSetValues
+C/func/-/XtSetWarningHandler
+C/func/-/XtSetWarningMsgHandler
+C/func/-/XtSetWMColormapWindows
+C/func/-/XtStringConversionWarning
+C/func/-/XtSuperclass
+C/func/-/XtToolkitInitialize
+C/func/-/XtToolkitThreadInitialize
+C/func/-/XtTranslateCoords
+C/func/-/XtTranslateKeycode
+C/func/-/XtUngrabButton
+C/func/-/XtUngrabKey
+C/func/-/XtUngrabKeyboard
+C/func/-/XtUngrabPointer
+C/func/-/XtUninstallTranslations
+C/func/-/XtUnmanageChild
+C/func/-/XtUnmanageChildren
+C/func/-/XtUnmapWidget
+C/func/-/XtUnrealizeWidget
+C/func/-/XtUnregisterDrawable
+C/func/-/XtVaAppCreateShell
+C/func/-/XtVaAppInitialize
+C/func/-/XtVaCreateArgsList
+C/func/-/XtVaCreateManagedWidget
+C/func/-/XtVaCreatePopupShell
+C/func/-/XtVaCreateWidget
+C/func/-/XtVaGetApplicationResources
+C/func/-/XtVaGetSubresources
+C/func/-/XtVaGetSubvalues
+C/func/-/XtVaGetValues
+C/func/-/XtVaOpenApplication
+C/func/-/XtVaSetSubvalues
+C/func/-/XtVaSetValues
+C/func/-/XtWarning
+C/func/-/XtWarningMsg
+C/func/-/XtWidgetToApplicationContext
+C/func/-/XtWindow
+C/func/-/XtWindowOfObject
+C/func/-/XtWindowToWidget
+C/func/-/XUndefineCursor
+C/func/-/XUngrabButton
+C/func/-/XUngrabDevice
+C/func/-/XUngrabDeviceButton
+C/func/-/XUngrabDeviceKey
+C/func/-/XUngrabKey
+C/func/-/XUngrabKeyboard
+C/func/-/XUngrabPointer
+C/func/-/XUngrabServer
+C/func/-/XUninstallColormap
+C/func/-/XUnionRectWithRegion
+C/func/-/XUnionRegion
+C/func/-/XUniqueContext
+C/func/-/XUnloadFont
+C/func/-/XUnlockDisplay
+C/func/-/XUnmapEvent
+C/func/-/XUnmapSubwindows
+C/func/-/XUnmapWindow
+C/func/-/XUnregisterIMInstantiateCallback
+C/func/-/XUnsetICFocus
+C/func/-/Xutf8DrawImageString
+C/func/-/Xutf8DrawString
+C/func/-/Xutf8DrawText
+C/func/-/Xutf8LookupString
+C/func/-/Xutf8ResetIC
+C/func/-/Xutf8SetWMProperties
+C/func/-/Xutf8TextEscapement
+C/func/-/Xutf8TextExtents
+C/func/-/Xutf8TextListToTextProperty
+C/func/-/Xutf8TextPerCharExtents
+C/func/-/Xutf8TextPropertyToTextList
+C/func/-/Xv
+C/func/-/XVaCreateNestedList
+C/func/-/XvFreeAdaptorInfo
+C/func/-/XvFreeEncodingInfo
+C/func/-/XvGetPortAttribute
+C/func/-/XvGetStill
+C/func/-/XvGetVideo
+C/func/-/XvGrabPort
+C/func/-/XVisibilityEvent
+C/func/-/XVisualIDFromVisual
+C/func/-/XVisualInfo
+C/tdef/-/XVolumeParam
+C/func/-/XvPortNotify
+C/func/-/XvPutStill
+C/func/-/XvPutVideo
+C/func/-/XvQueryAdaptors
+C/func/-/XvQueryBestSize
+C/func/-/XvQueryEncodings
+C/func/-/XvQueryExtension
+C/func/-/XvSelectPortNotify
+C/func/-/XvSelectVideoNotify
+C/func/-/XvSetPortAttribute
+C/func/-/XvStopVideo
+C/func/-/XvUngrabPort
+C/func/-/XvVideoNotify
+C/func/-/XWarpPointer
+C/func/-/XwcDrawImageString
+C/func/-/XwcDrawString
+C/func/-/XwcDrawText
+C/func/-/XwcFreeStringList
+C/func/-/XwcLookupString
+C/func/-/XwcResetIC
+C/func/-/XwcTextEscapement
+C/func/-/XwcTextExtents
+C/func/-/XwcTextListToTextProperty
+C/func/-/XwcTextPerCharExtents
+C/func/-/XwcTextPropertyToTextList
+C/func/-/XWindowAttributes
+C/func/-/XWindowChanges
+C/func/-/XWindowEvent
+C/func/-/XWithdrawWindow
+C/func/-/XWMGeometry
+C/func/-/XWMHints
+C/func/-/XWriteBitmapFile
+C/func/-/XXorRegion
+Objective-C/instm/CIVector/Y
+JavaScript/data/HTMLImageElement/y
+JavaScript/data/MouseEvent/y
+JavaScript/data/SVGForeignObjectElement/y
+JavaScript/data/SVGFESpotLightElement/y
+JavaScript/data/SVGMaskElement/y
+JavaScript/data/SVGFEPointLightElement/y
+JavaScript/data/SVGFilterElement/y
+JavaScript/data/SVGImageElement/y
+JavaScript/data/SVGCursorElement/y
+JavaScript/data/SVGFilterPrimitiveStandardAttributes/y
+JavaScript/data/SVGPathSegLinetoRel/y
+JavaScript/data/SVGPathSegCurvetoCubicSmoothRel/y
+JavaScript/data/SVGTextPositioningElement/y
+JavaScript/data/SVGPathSegCurvetoQuadraticSmoothAbs/y
+JavaScript/data/SVGRect/y
+JavaScript/data/SVGPathSegCurvetoQuadraticAbs/y
+JavaScript/data/SVGSVGElement/y
+JavaScript/data/SVGPathSegMovetoAbs/y
+JavaScript/data/SVGPathSegCurvetoCubicAbs/y
+JavaScript/data/SVGPathSegCurvetoQuadraticRel/y
+JavaScript/data/SVGPathSegMovetoRel/y
+JavaScript/data/SVGPathSegArcAbs/y
+JavaScript/data/SVGPathSegLinetoAbs/y
+JavaScript/data/SVGPathSegLinetoVerticalAbs/y
+JavaScript/data/SVGPathSegCurvetoCubicRel/y
+JavaScript/data/SVGPoint/y
+JavaScript/data/SVGPatternElement/y
+JavaScript/data/SVGRectElement/y
+JavaScript/data/SVGPathSegCurvetoQuadraticSmoothRel/y
+JavaScript/data/SVGPathSegArcRel/y
+JavaScript/data/SVGUseElement/y
+JavaScript/data/SVGPathSegCurvetoCubicSmoothAbs/y
+JavaScript/data/SVGPathSegLinetoVerticalRel/y
+JavaScript/data/WheelEvent/y
+JavaScript/data/WebKitPoint/y
+C/func/-/y0
+C/func/-/y1
+JavaScript/data/SVGLineElement/y1
+JavaScript/data/SVGLinearGradientElement/y1
+JavaScript/data/SVGPathSegCurvetoCubicAbs/y1
+JavaScript/data/SVGPathSegCurvetoQuadraticRel/y1
+JavaScript/data/SVGPathSegCurvetoQuadraticAbs/y1
+JavaScript/data/SVGPathSegCurvetoCubicRel/y1
+JavaScript/data/SVGLineElement/y2
+JavaScript/data/SVGLinearGradientElement/y2
+JavaScript/data/SVGPathSegCurvetoCubicRel/y2
+JavaScript/data/SVGPathSegCurvetoCubicSmoothAbs/y2
+JavaScript/data/SVGPathSegCurvetoCubicSmoothRel/y2
+JavaScript/data/SVGPathSegCurvetoCubicAbs/y2
+Objective-C/instm/CAEmitterCell/yAcceleration
+Objective-C/instp/CAEmitterCell/yAcceleration
+Objective-C/instm/NSResponder/yank:
+JavaScript/data/SVGFEDisplacementMapElement/yChannelSelector
+Objective-C/instm/NSDateComponents/year
+Objective-C/clm/NSColor/yellowColor
+Objective-C/instm/NSColor/yellowComponent
+C/macro/-/YES
+C/func/-/yn
+C++/instm/IOService/youAreRoot
+C/func/-/yp_all
+C/func/-/yp_bind
+C/func/-/yp_first
+C/func/-/yp_get_default_domain
+C/func/-/yp_master
+C/func/-/yp_match
+C/func/-/yp_next
+C/func/-/yp_order
+C/func/-/yp_unbind
+C/func/-/ypclnt
+C/func/-/yperr_string
+C/func/-/ypprot_err
+Objective-C/instm/CIVector/Z
+JavaScript/data/SVGFEPointLightElement/z
+JavaScript/data/SVGFESpotLightElement/z
+Objective-C/instp/CAEmitterCell/zAcceleration
+Objective-C/instm/CAEmitterCell/zAcceleration
+C/func/-/zconv
+C/func/-/zconvD
+C/func/-/zdotpr
+C/func/-/zdotprD
+Objective-C/clm/NSDecimalNumber/zero
+JavaScript/clconst/WebGLRenderingContext/ZERO
+C++/instm/IOATACommand/zeroCommand
+C++/instm/IOATABusCommand/zeroCommand
+C++/instm/IOExtendedLBA/zeroData
+C++/instm/IOATABusInfo/zeroData
+Objective-C/instm/NSNumberFormatter/zeroSymbol
+C/func/-/zidotpr
+C/func/-/zidotprD
+C/func/-/zlib
+C/func/-/zmma
+C/func/-/zmmaD
+C/func/-/zmms
+C/func/-/zmmsD
+C/func/-/zmmul
+C/func/-/zmmulD
+C/func/-/zmsm
+C/func/-/zmsmD
+Objective-C/instm/NSGarbageCollector/zone
+Objective-C/intfm/NSObject/zone
+Objective-C/instm/NSWindow/zoom:
+JavaScript/data/SVGZoomAndPan/zoomAndPan
+Objective-C/instp/IKImageView/zoomFactor
+Objective-C/instm/IKImageView/zoomFactor
+Objective-C/instm/IKImageView/zoomImageToActualSize:
+Objective-C/instm/IKImageView/zoomImageToFit:
+Objective-C/instm/IKImageView/zoomImageToRect:
+Objective-C/instm/PDFView/zoomIn:
+Objective-C/instm/IKImageView/zoomIn:
+Objective-C/instm/PDFView/zoomOut:
+Objective-C/instm/IKImageView/zoomOut:
+JavaScript/data/SVGZoomEvent/zoomRectScreen
+Objective-C/instm/IKImageBrowserView/zoomValue
+C/func/-/zopen
+Objective-C/instp/CALayer/zPosition
+Objective-C/instm/CALayer/zPosition
+C/func/-/zrdotpr
+C/func/-/zrdotprD
+C/func/-/zrvadd
+C/func/-/zrvaddD
+C/func/-/zrvmul
+C/func/-/zrvmulD
+C/func/-/zrvsub
+C/func/-/zrvsubD
+C/func/-/ztoc
+C/func/-/ztocD
+C/func/-/zvadd
+C/func/-/zvaddD
+C/func/-/zvcma
+C/func/-/zvcmaD
+C/func/-/zvmul
+C/func/-/zvmulD
+C/func/-/zvsub
+C/func/-/zvsubD
+C++/instm/Test/~Test
+C++/instm/TestCase/~TestCase
+C++/instm/TestFailure/~TestFailure
+C++/instm/TestInvocation/~TestInvocation
+C++/instm/TestLog/~TestLog
+C++/instm/TestObserver/~TestObserver
+C++/instm/TestRun/~TestRun
+C++/instm/TestSuite/~TestSuite
diff --git a/packages/yasnippet/extras/imported/rails-mode/.yas-setup.el b/packages/yasnippet/extras/imported/rails-mode/.yas-setup.el
new file mode 100644 (file)
index 0000000..6b4b821
--- /dev/null
@@ -0,0 +1,1322 @@
+;;; .yas-setup.el --- Setup for rails-mode
+
+;; Copyright (C) 2013  Free Software Foundation, Inc.
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(defvar yas-rails-root-cache nil)
+
+(defun yas-rails-online-doc ()
+  (interactive)
+  (browse-url (format "http://apidock.com/rails/search/quick?query=%s" (read-from-minibuffer "Word: " (thing-at-point 'word)))))
+
+(if (require 'rhtml-mode nil t)
+    (add-to-list 'auto-mode-alist '("\\.erb$" . rhtml-mode))
+  (add-to-list 'auto-mode-alist '("\\.erb$" . yas-rails-erb-mode)))
+
+
+(define-derived-mode yas-rails-erb-mode
+  nxml-mode "eRB"
+  "Embedded Ruby Mode, very thin layer over `nxml-mode'."
+  (add-to-list (make-local-variable 'yas-extra-modes) 'html-mode)
+  (rng-set-vacuous-schema)
+  (message "hey erb mode"))
+
+(defvar yas-rails-erb-font-lock-keywords
+  '(("\\(<%=\\)\\(.*+\\)\\(%>\\)"
+     (1 font-lock-function-name-face)
+     (2 font-lock-string-face)
+     (3 font-lock-function-name-face))
+    ("\\(<%\\)\\(.*+\\)\\(%>\\)"
+     (1 font-lock-variable-name-face)
+     (2 font-lock-string-face)
+     (3 font-lock-variable-name-face)))
+  "(Crummy) font lock highlighting for ERB constructs.."
+  )
+(font-lock-add-keywords 'yas-rails-erb-mode yas-rails-erb-font-lock-keywords)
+
+;; stolen from rinari-mode's rinari-root
+(defun yas-rails-root (&optional dir)
+  (or dir (setq dir default-directory))
+  (or (and (featurep 'rinari) (rinari-root dir))
+      yas-rails-root-cache
+      (if (file-exists-p (expand-file-name
+                          "environment.rb" (expand-file-name "config" dir)))
+          (set (make-local-variable 'yas-rails-root-cache) dir)
+        (let ((new-dir (expand-file-name (file-name-as-directory "..") dir)))
+          ;; regexp to match windows roots, tramp roots, or regular posix roots
+          (unless (string-match "\\(^[[:alpha:]]:/$\\|^/[^\/]+:\\|^/$\\)" dir)
+            (yas-rails-root new-dir))))))
+
+(defun yas-rails-find-alternate-file ()
+  (if (featurep 'rinari)
+      (cond ((yas-rails-view-p)
+             (rinari-find-model))
+            ((yas-rails-model-p)
+             (rinari-find-controller))
+            ((yas-rails-controller-p)
+             (rinari-find-view))
+            (t
+             (message "oops, have to improve `yas-rails-find-alternate-file'")))
+      (yas-unimplemented)))
+  
+;; stolen from rinari-mode's rinari-extract-partial
+(defun yas-rails-extract-partial (begin end partial-name)
+  (interactive "r\nsName your partial: ")
+  (let* ((path (buffer-file-name)) ending)
+    (if (string-match "view" path)
+       (let ((ending (and (string-match ".+?\\(\\.[^/]*\\)$" path)
+                          (match-string 1 path)))
+             (partial-name
+              (replace-regexp-in-string "[[:space:]]+" "_" partial-name)))
+         (kill-region begin end)
+         (if (string-match "\\(.+\\)/\\(.+\\)" partial-name)
+             (let ((default-directory (expand-file-name (match-string 1 partial-name)
+                                                        (expand-file-name ".."))))
+               (find-file (concat "_" (match-string 2 partial-name) ending)))
+           (find-file (concat "_" partial-name ending)))
+         (yank) (pop-to-buffer nil)
+         (insert (concat "<%= render :partial => '" partial-name "' %>\n")))
+      (message "not in a view"))))
+;;;
+;;; The TextMate "intelligent" migration snippet
+;;
+(defvar yas-rails-intelligent-migration-snippet-bits
+      '((:rename_column . ((:up   . "rename_column :${1:table_name}, :${2:column_name}, :${3:new_column_name}$0")
+                           (:down . "rename_column :$1, :$3, :$2" )))
+
+        (:rename_column_continue . ((:up   . "rename_column :${1:table_name}, :${2:column_name}, :${3:new_column_name}\nmncc$0")
+                                    (:down . "rename_column :$1, :$3, :$2" )))
+
+        (:rename_table . ((:up   . "rename_table :${1:old_table_name}, :${2:new_table_name}$0")
+                          (:down . "rename_table :$2, :$1" )))
+
+        (:rename_table_continue . ((:up   . "rename_table :${1:old_table_name}, :${2:new_table_name}\nmntc$0")
+                                   (:down . "rename_table :$2, :$1" )))
+
+        (:add_remove_column . ((:up   . "add_column :${1:table_name}, :${2:column_name}, :${3:string}$0")
+                               (:down . "remove_column :$1, :$2" )))
+        
+        (:add_remove_column_continue . ((:up   . "add_column :${1:table_name}, :${2:column_name}, :${3:string}\nmarcc$0")
+                                        (:down . "remove_column :$1, :$2" )))
+        
+        (:remove_add_column . ((:up   . "remove_column :${1:table_name}, :${2:column_name}$0")
+                               (:down . "add_column :$1, :$2, :$3{string}" )))
+
+        (:create_drop_table . ((:up   . "create_table :${1:table_name}, :force . true do |t|\nt.$0\nt.timestamps\nend")
+                               (:down . "drop_table :$1" )))
+
+        (:change_change_table . ((:up   . "change_table :${1:table_name} do |t|\nt.$0\nend")
+                                 (:down . "change_table :$1 do |t|\nend" )))
+
+        (:add_remove_index . ((:up   . "add_index :${1:table_name}, :${2:column_name}$0")
+                              (:down . "remove_index :$1, :$2" )))
+
+        (:add_remove_unique_index . ((:up   . "add_index :${1:table_name}, ${2:[:${3:column_name}${4:, :${5:column_name}}]}, :unique . true$0")
+                                     (:down . "remove_index :$1, :column . $2" )))
+
+        (:add_remove_named_index . ((:up   . "add_index :${1:table_name}, [:${2:column_name}${3:, :${4:column_name}}], :name . \"${5:index_name}\"${6:, :unique . true}$0")
+                                    (:down . "remove_index :$1, :name . :$5" )))))
+
+
+(defun yas-rails-intelligent-migration-snippet (type)
+  (let* ((start  (point))
+         (end (save-excursion
+                (search-forward-regexp "^\s*def\sself\.down" nil 'noerror)))
+         (up (cdr (assoc :up (cdr (assoc type yas-rails-intelligent-migration-snippet-bits)))))
+         (down (cdr (assoc :down (cdr (assoc type yas-rails-intelligent-migration-snippet-bits)))))
+         (snippet
+          (and up down start end (concat up
+                                         (buffer-substring-no-properties start end)
+                                         "\n" down))))
+    (when snippet
+      (delete-region start end)
+      (yas-expand-snippet snippet))))
+
+(yas-define-condition-cache
+  yas-rails-intelligent-migration-snippet-condition-p
+  "Non-nil if an \"intelligent\" migration snippet should be expanded"
+  (and (yas-rails-migration-p)
+       (not (yas-rails-in-create-table-p))
+       (not (yas-rails-in-change-table-p))
+       (yas-rails-in-ruby-block-like "self\.up")))
+
+(defun yas-rails-in-ruby-block-like (regexp)
+  (save-excursion
+    (ruby-accurate-end-of-block)
+    (ruby-backward-sexp)
+    (search-forward-regexp regexp (line-end-position) t)))
+
+;;; conditions
+(yas-define-condition-cache
+ yas-rails-in-create-table-p
+ "Non-nil if point is inside a 'create_table' method call."
+ (yas-rails-in-ruby-block-like "create_table"))
+
+(yas-define-condition-cache
+ yas-rails-in-change-table-p
+ "Non-nil if point is inside a 'change_table' method call."
+ (yas-rails-in-ruby-block-like "change_table"))
+
+(yas-define-condition-cache
+ yas-rails-model-p
+ "Non-nil if the current buffer is a rails model."
+ (and (yas-rails-root)
+      (string-match "app/models/$" default-directory)))
+
+(yas-define-condition-cache
+ yas-rails-view-p
+ "Non-nil if the current buffer is a rails view."
+ (and (yas-rails-root)
+      (string-match "app/views/" default-directory)))
+
+(yas-define-condition-cache
+ yas-rails-helper-p
+ "Non-nil if the current buffer is a rails helper."
+ (and (yas-rails-root)
+      (string-match "app/helpers/" default-directory)))
+
+(yas-define-condition-cache
+ yas-rails-controller-p
+"Non-nil if the current buffer is a rails controller." 
+ (and (yas-rails-root)
+      (string-match "app/controllers/$" default-directory)))
+
+(yas-define-condition-cache
+ yas-rails-migration-p
+ "Non-nil if the current buffer is a rails migration."
+ (and (yas-rails-root)
+      (string-match "db/migrate/" default-directory)))
+
+(defun yas-rails-activate-maybe ()
+  (when (and yas-minor-mode
+             (yas-rails-root))
+    (add-to-list (make-local-variable 'yas-extra-modes) 'rails-mode)))
+
+(defadvice cd (after yas-rails-on-cd-activate activate)
+  "Add `rails-mode' to `yas-extra-modes' so that rails snippets
+are recognized. Stolen from `rinari-mode' more or`' less."
+  (setq yas-rails-root-cache nil)
+  (yas-rails-activate-maybe))
+
+(add-hook 'yas-minor-mode-hook 'yas-rails-activate-maybe)
+;; Substitutions for: content
+;; 
+;; # as in Macros/Remove 3A Add Column.yasnippet
+;; 809BCA42-5C49-4B08-B3C4-BB773036C086                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Add 3A Remove Named Index.yasnippet
+;; A7F692C1-778A-48B8-945E-573568BA0403                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Go To Unit Test.yasnippet
+;; BDBB15A4-2824-4BEC-93A5-7475F9C46A39                                                       =yyas> (if (featurep 'rinari) (rinari-find-test) (yas-unimplemented 'rinari))
+;; 
+;; # as in Commands/Go To File on This Line.yasnippet
+;; 09BB96F2-75FD-48A7-8314-B5B56B09B477                                                       =yyas> (ffap)
+;; 
+;; # as in Commands/Test Uncommitted.yasnippet
+;; 212C3047-D9B1-11DC-94E9-00112475D960                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Redo Last Migration.yasnippet
+;; CFDA9F62-D071-4E0F-AD10-66AE0729FFCF                                                       =yyas> (yas-rails-compile "rake")
+;; 
+;; # as in Commands/Documentation for Word.yasnippet
+;; 32F30207-D827-46D9-889A-451C35269D52                                                       =yyas> (yas-rails-online-doc)
+;; 
+;; # as in Commands/Autocomplete Foreign Key Fixture Reference.yasnippet
+;; 0BCF0EE2-35EE-4959-A771-E74D55271D5A                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Autocomplete Foreign Key Fixture Reference (habtm).yasnippet
+;; 275C0B86-F735-49B6-8A22-218A8F4CC2E0                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Change Change Table.yasnippet
+;; 20FC02C5-32A3-4F20-B163-FF75C9FDFABF                                                       =yyas> (yas-rails-intelligent-migration-snippet :change_change_table)
+;; 
+;; # as in Commands/Rake Migrate.yasnippet
+;; 985F56D4-82ED-4C45-8250-2ECCFC71957E                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/DB Schema Import.yasnippet
+;; 6DEF923E-2347-46EC-AFBE-183D08E63DC1                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Load Fixtures (Test DB).yasnippet
+;; F758BFD1-00CA-4742-BE71-032580080F5C                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Generate Quick Migration.yasnippet
+;; D696FA2C-785A-4B73-A2F6-F750904DD7C2                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Remove 3A Add Timestamps.yasnippet
+;; E885A3E8-8020-4AC3-A25E-510B26F114B2                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Add 3A Remove Several Columns (marcc).yasnippet
+;; 27A6C58A-896B-4956-BA81-D671A2EF9C7D                                                       =yyas> (yas-rails-intelligent-migration-snippet :add_remove_column_continue)
+;; 
+;; # as in Macros/Add 3A Remove Column.yasnippet
+;; 18C76913-061C-4D65-866D-67AA3724AFEF                                                       =yyas> (yas-rails-intelligent-migration-snippet :add_remove_column)
+;; 
+;; # as in Commands/Go To View.yasnippet
+;; EE862691-A624-4797-90CF-EDD39EFB2D8E                                                       =yyas> (if (featurep 'rinari) (rinari-find-view) (yas-unimplemented 'rinari))
+;; 
+;; # as in Commands/Test Plugins.yasnippet
+;; 0D966168-D9B1-11DC-94E9-00112475D960                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Change Column.yasnippet
+;; 42DE1441-D1B7-4998-BAF9-16B1EC7E210C                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Make Selection in to Partial.yasnippet
+;; 1DD8A214-1C97-45BA-ADEE-8F888DDE8570                                                       =yyas> (call-interactively 'yas-rails-extract-partial)
+;; 
+;; # as in Commands/Go To Functional Test.yasnippet
+;; DFE393BE-0764-49FE-B464-6350A50921E6                                                       =yyas> (if (featurep 'rinari) (rinari-find-test) (yas-unimplemented 'rinari))
+;; 
+;; # as in Commands/Test Recent.yasnippet
+;; 190401C2-D9B1-11DC-94E9-00112475D960                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Test All.yasnippet
+;; DC549A45-D9B0-11DC-94E9-00112475D960                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Rename Column.yasnippet
+;; AC50762C-DE40-4EB9-9A22-2F6AF2EA4EA3                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Create 3A Drop Table.yasnippet
+;; 25F8F5D8-2BD1-45D8-8B2A-9F2EA4F73AA2                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Add 3A Remove Unique Index.yasnippet
+;; 33057A79-677B-4DFB-99D4-1492778BDDC6                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Add 3A Remove Timestamps.yasnippet
+;; 221969A1-A5EA-4A8E-8817-C74EBED63901                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Go To Helper.yasnippet
+;; 51C9C27A-D931-49F9-B6D8-C0E7ABEC992D                                                       =yyas> (if (featurep 'rinari) (rinari-find-helper) (yas-unimplemented 'rinari))
+;; 
+;; # as in Commands/DB Schema Dump.yasnippet
+;; 310C901C-EF32-4E88-938A-804ABBF8C428                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Test Functionals.yasnippet
+;; F4EA552D-D9B0-11DC-94E9-00112475D960                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Migrate to Previous Version.yasnippet
+;; 9A1AE6BA-8350-4AB7-B5BD-969A7E64CF29                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Go To Model.yasnippet
+;; C7151BF3-7068-4344-9B09-86F3BF4A9C63                                                       =yyas> (if (featurep 'rinari) (rinari-find-model) (yas-unimplemented 'rinari))
+;; 
+;; # as in Macros/Drop 3A Create Table.yasnippet
+;; A2135370-67A1-488D-B43C-B4F221127C2F                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Change Column Default.yasnippet
+;; A219EBB8-004A-4012-B5B2-232C9A5C94F8                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Add 3A Remove Index.yasnippet
+;; 95F83E1D-5B03-424F-8BEC-8AF66C8939BC                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Load Fixtures.yasnippet
+;; 5EEA0C71-B34B-4408-953B-F47AAD343CCC                                                       =yyas> (yas-unknown)
+;; 
+
+;; 
+;; # as in Commands/Clone Development DB to Test DB.yasnippet
+;; 6F2AB859-46E3-4FF5-A9A7-E9A813AB5DE1                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Rename 3A Rename Several Columns.yasnippet
+;; F03162DE-9DB6-417B-9DD7-52D9F11EA736                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Go To Stylesheet.yasnippet
+;; B207BBD4-D6AA-41E9-9530-27210F2D7B66                                                       =yyas> (if (featurep 'rinari) (rinari-find-stylesheet) (yas-unimplemented 'rinari))
+;; 
+;; # as in Commands/Go To Javascript.yasnippet
+;; B078346F-61D8-4E75-9427-80720FBC67F7                                                       =yyas> (if (featurep 'rinari) (rinari-find-javascript) (yas-unimplemented 'rinari))
+;; 
+;; # as in Commands/Rake Migrate to Version.yasnippet
+;; 07C696F8-79F5-4E0B-9EE9-03B693A54ABB                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Go To Alternate File.yasnippet
+;; 9453F0B3-B946-445F-BDB0-B01DE70732FC                                                       =yyas> (yas-rails-find-alternate-file) 
+;; 
+;; # as in Commands/View demo help.yasnippet
+;; 964436B8-E578-11DC-8177-00112475D960                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Go to Fixture.yasnippet
+;; 638D94A4-BDFC-4FE9-8909-9934F3FD2899                                                       =yyas> (if (featurep 'rinari) (rinari-find-fixture) (yas-unimplemented 'rinari))
+;; 
+;; # as in Macros/Rename Table.yasnippet
+;; FD8CC811-2AD3-480F-B975-DF959DC96C67                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Rename 3A Rename Several Columns (mncc).yasnippet
+;; 04A86178-71B1-430A-A06D-DFF7C9A338B5                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Generate.yasnippet
+;; 4904EDC7-5ED3-4132-AAB2-C2AD87C97EFE                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Test Integration.yasnippet
+;; 04A30A4D-D9B1-11DC-94E9-00112475D960                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Show DB Schema.yasnippet
+;; 1970AE74-3949-40B3-B263-727AA3FF167A                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Add 3A Remove Several Columns.yasnippet
+;; 7BC860E6-7561-4E6E-983B-507D7A6F6228                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Install Bundled Plugin.yasnippet
+;; 46ECE243-0448-4A64-A223-27CC21E7704D                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Go To File.yasnippet
+;; 0CCC8443-40F3-4BAB-9440-D737562B5F45                                                       =yyas> (if (featurep 'rinari) (rinari-find-file-in-project) (yas-unimplemented 'rinari))
+;; 
+;; # as in Commands/Test Units.yasnippet
+;; 2C60CBA1-D9B1-11DC-94E9-00112475D960                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Snippets/returning do 7Cvariable7C E280A6 end.yasnippet
+;; ${2/(^(?<var>\s*[a-z_][a-zA-Z0-9_]*\s*)(,\g<var>)*,?\s*$)|.*/(?1: |)/}                     =yyas> ${2:$(and (yas-text) " |")}
+;; ${2/(^(?<var>\s*[a-z_][a-zA-Z0-9_]*\s*)(,\g<var>)*,?\s*$)|.*/(?1:|)/}                      =yyas> ${2:$(and (yas-text) "|")}
+;; 
+;; # as in Snippets/form_for label.yasnippet
+;; ${1/[[:alpha:]]+|(_)/(?1: :\u$0)/g}                                                        =yyas> ${1:$(capitalize (replace-regexp-in-string "_" " " yas-text))}
+;;
+;; # as in Snippets/has_one (ho).yasnippet
+;; ${1/[[:alpha:]]+|(_)/(?1::\u$0)/g}                                                         =yyas> ${1:$(replace-regexp-in-string "_" "" (capitalize yas-text))}
+;;
+;; # as in Snippets/Create sweeper class.yasnippet
+;; ${1/./\l$0/}                                                                               =yyas> ${1:$(and (yas-text) (concat (downcase (substring yas-text 0 1)) (substring yas-text 1)))} 
+;;
+;; # as in Snippets/image_submit_tag.yasnippet
+;; ${1/^(\w+)(\.\w*)?$/$1/}                                                                   =yyas> ${1:$(file-name-sans-extension yas-text)}
+;; 
+;; # as in Snippets/respond_to (html).yasnippet
+;; $TM_SELECTED_TEXT                                                                          =yyas> `yas-selected-text`
+;;
+;; # as in Snippets/find_in_batches.yasnippet
+;; ${TM_CURRENT_WORD/(\w+)\./\L$1/g}                                                          =yyas> `(downcase (replace-regexp-in-string "\\..*$"  "" (current-word)))` 
+;; 
+
+;; Substitutions for: condition
+
+;; text.html.ruby, source.ruby.rails.embedded.html, meta.rails.helper, meta.rails.unit_test, source.js, source.css, source.yaml, meta.rails.controller, meta.rails.functional_test, text.haml =yyas> t
+;; text.html.ruby, source.ruby.rails.embedded.html, meta.rails.helper, meta.rails.functional_test, source.js, source.css, source.yaml, meta.rails.model, meta.rails.unit_test, text.haml      =yyas> t
+;; text.html.ruby, source.ruby.rails.embedded.html, meta.rails.controller, meta.rails.model, meta.rails.unit_test, meta.rails.functional_test, text.haml                                      =yyas> t
+;; meta.rails.controller, meta.rails.helper, meta.rails.model, meta.rails.unit_test, meta.rails.functional_test                                                                               =yyas> t
+;; text.html.ruby, source.ruby.rails.embedded.html, meta.rails.controller, meta.rails.helper, text.haml                                                                                       =yyas> t
+;; meta.rails.controller, meta.rails.helper, meta.rails.model, meta.rails.functional_test, source.yaml                                                                                        =yyas> t
+;; meta.rails.controller, meta.rails.mailer, source.js, source.css                                                                                                                            =yyas> t
+;; meta.rails.controller, meta.rails.helper, meta.rails.model, source.yaml, meta.rails.unit_test                                                                                              =yyas> t
+;; meta.rails.migration - meta.rails.migration.create_table - meta.rails.migration.change_table                                                                                               =yyas> (yas-rails-intelligent-migration-snippet-condition-p)
+;; meta.rails.migration.create_table, meta.rails.migration.change_table                                                                                                                       =yyas> (or (yas-rails-in-create-table-p) (yas-rails-in-change-table-p))
+;; meta.rails.controller, meta.rails.mailer, source.js, source.css                                                                                                                            =yyas> (yas-unknown)
+;; meta.rails.migration.create_table                                                                                                                                                          =yyas> (yas-rails-create-table-p)
+;; meta.rails.functional_test                                                                                                                                                                 =yyas> (yas-rails-functional-test-p)
+;; text.html.ruby, text.haml                                                                                                                                                                  =yyas> (yas-rails-view-p)
+;; meta.rails.controller                                                                                                                                                                      =yyas> (yas-rails-controller-p)
+;; meta.rails.routes                                                                                                                                                                          =yyas> (yas-rails-routes-p)
+;; text.html.ruby                                                                                                                                                                             =yyas> (yas-unknown)
+;;
+;;
+;; AC385ABF-96CD-4FCB-80AD-BF37D6EE79D2  =yyas> (and (member major-mode '(nxml-mode html-mode rhtml-mode)) (yas-rails-view-p))
+
+
+;; Substitutions for: binding
+;; 
+;; # as in Snippets/rails session.yasnippet
+;; ^j                                                                                         =yyas> C-c M-j
+;; 
+;; # as in Commands/Autocomplete Foreign Key Fixture Reference (habtm).yasnippet
+;; ~$\e                                                                                        =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Go To View.yasnippet
+;; ~$@                                                                                     =yyas> [M-S-s-down]
+;; 
+;; # as in Commands/Generate Quick Migration.yasnippet
+;; ^M                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Go To File on This Line.yasnippet
+;; ~@                                                                                      =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Show DB Schema.yasnippet
+;; ^@S                                                                                        =yyas> C-c M-s
+;; 
+;; # as in Snippets/rails params.yasnippet
+;; ^p                                                                                         =yyas> C-c M-p
+;; 
+;; # as in Commands/Go To File.yasnippet
+;; 0CCC8443-40F3-4BAB-9440-D737562B5F45                                                       =yyas> [M-s-up]
+;; # as in Commands/Go To Alternate File.yasnippet
+;; 9453F0B3-B946-445F-BDB0-B01DE70732FC                                                       =yyas> [M-s-down]
+;; 
+;; # as in Commands/Autocomplete Foreign Key Fixture Reference.yasnippet
+;; ~\e                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Test Units.yasnippet
+;; ^\                                                                                         =yyas> C-c M-\
+;; 
+;; # as in Commands/Rake Migrate.yasnippet
+;; ^|                                                                                         =yyas> C-c M-|
+;; 
+;; # as in Snippets/respond_to (html).yasnippet
+;; @H                                                                                         =yyas> s-h
+;; 
+;; # as in Commands/Make Selection in to Partial.yasnippet
+;; ^H                                                                                         =yyas> C-c M-m
+;; 
+;; # as in Commands/View demo help.yasnippet
+;; ^h                                                                                         =yyas> C-c M-h
+;; 
+;;
+;; 
+;; --**--
+;; Automatically generated code, do not edit this part
+;; 
+;; Translated menu
+;; 
+(yas-define-menu 'rails-mode
+                 '(;; Ignoring Set RVM…
+                   (yas-ignore-item "88047A77-B889-4F47-892D-4C3EBA98D968")
+                   
+                   (yas-submenu "Go To"
+                                (;; Alternate File
+                                 (yas-item "0CCC8443-40F3-4BAB-9440-D737562B5F45")
+                                 ;; File on Current Line
+                                 (yas-item "09BB96F2-75FD-48A7-8314-B5B56B09B477")
+                                 (yas-separator)
+                                 ;; Go to Model
+                                 (yas-item "C7151BF3-7068-4344-9B09-86F3BF4A9C63")
+                                 ;; Go to Controller
+                                 (yas-item "9453F0B3-B946-445F-BDB0-B01DE70732FC")
+                                 ;; Go to View
+                                 (yas-item "EE862691-A624-4797-90CF-EDD39EFB2D8E")
+                                 ;; Go to Functional Test
+                                 (yas-item "DFE393BE-0764-49FE-B464-6350A50921E6")
+                                 ;; Go to Helper
+                                 (yas-item "51C9C27A-D931-49F9-B6D8-C0E7ABEC992D")
+                                 ;; Go to Javascript
+                                 (yas-item "B078346F-61D8-4E75-9427-80720FBC67F7")
+                                 ;; Go to Stylesheet
+                                 (yas-item "B207BBD4-D6AA-41E9-9530-27210F2D7B66")
+                                 ;; Go to Unit Test
+                                 (yas-item "BDBB15A4-2824-4BEC-93A5-7475F9C46A39")
+                                 ;; Go to Fixture
+                                 (yas-item "638D94A4-BDFC-4FE9-8909-9934F3FD2899")))
+                   (yas-submenu "Run Tests"
+                                (;; Ignoring Test All
+                                 (yas-ignore-item "DC549A45-D9B0-11DC-94E9-00112475D960")
+                                 ;; Ignoring Test Functionals
+                                 (yas-ignore-item "F4EA552D-D9B0-11DC-94E9-00112475D960")
+                                 ;; Ignoring Test Integration
+                                 (yas-ignore-item "04A30A4D-D9B1-11DC-94E9-00112475D960")
+                                 ;; Ignoring Test Plugins
+                                 (yas-ignore-item "0D966168-D9B1-11DC-94E9-00112475D960")
+                                 ;; Ignoring Test Recent
+                                 (yas-ignore-item "190401C2-D9B1-11DC-94E9-00112475D960")
+                                 ;; Ignoring Test Uncommitted
+                                 (yas-ignore-item "212C3047-D9B1-11DC-94E9-00112475D960")
+                                 ;; Ignoring Test Units
+                                 (yas-ignore-item "2C60CBA1-D9B1-11DC-94E9-00112475D960")))
+                   
+                   ;; Ignoring Call Generate Script
+                   (yas-ignore-item "4904EDC7-5ED3-4132-AAB2-C2AD87C97EFE")
+                   (yas-submenu "Database"
+                                (;; Ignoring Migrate to Current
+                                 (yas-ignore-item "985F56D4-82ED-4C45-8250-2ECCFC71957E")
+                                 ;; Ignoring Migrate to Version ...
+                                 (yas-ignore-item "07C696F8-79F5-4E0B-9EE9-03B693A54ABB")
+                                 ;; Ignoring Migrate to Previous Version
+                                 (yas-ignore-item "9A1AE6BA-8350-4AB7-B5BD-969A7E64CF29")
+                                 ;; Redo Last Migration
+                                 (yas-item "CFDA9F62-D071-4E0F-AD10-66AE0729FFCF")
+                                 (yas-separator)
+                                 ;; Ignoring Load Fixtures (Development DB)
+                                 (yas-ignore-item "5EEA0C71-B34B-4408-953B-F47AAD343CCC")
+                                 ;; Ignoring Load Fixtures (Test DB)
+                                 (yas-ignore-item "F758BFD1-00CA-4742-BE71-032580080F5C")
+                                 
+                                 ;; Ignoring Load schema.rb to DB
+                                 (yas-ignore-item "6DEF923E-2347-46EC-AFBE-183D08E63DC1")
+                                 ;; Ignoring Dump DB to schema.rb
+                                 (yas-ignore-item "310C901C-EF32-4E88-938A-804ABBF8C428")
+                                 ;; Ignoring Clone Development DB to Test DB
+                                 (yas-ignore-item "6F2AB859-46E3-4FF5-A9A7-E9A813AB5DE1")))
+                   
+                   ;; params[…]
+                   (yas-item "AC8EDA3E-875B-11D9-897C-000393CBCE2E")
+                   ;; session[…]
+                   (yas-item "7B02ABF8-8763-11D9-897C-000393CBCE2E")
+                   (yas-submenu "Logger"
+                                (;; logger.debug
+                                 (yas-item "D975E5C1-42C2-40F1-8960-0DA533B18113")
+                                 ;; logger.info
+                                 (yas-item "36E2A3EE-E9CC-4B7F-A4CF-AFAF970B8699")
+                                 ;; logger.warn
+                                 (yas-item "38D5CA05-E219-4399-A244-609AF40B1D0B")
+                                 ;; logger.error
+                                 (yas-item "7053B86A-9B81-4154-AB3C-61B8035C5D33")
+                                 ;; logger.fatal
+                                 (yas-item "35E95C81-22F7-4C40-8297-ED21086DDA81")
+                                 ;; Rails.logger.debug
+                                 (yas-item "7B15B396-1F41-4529-9253-32761E94448C")))
+                   (yas-separator)
+                   (yas-submenu "Models"
+                                (;; Ignoring Show DB Schema for Current Class
+                                 (yas-ignore-item "1970AE74-3949-40B3-B263-727AA3FF167A")
+                                 
+                                 (yas-submenu "Callbacks"
+                                              (;; before_validation
+                                               (yas-item "A1776279-5396-4FE9-9218-8BF2C88C5271")
+                                               ;; after_validation
+                                               (yas-item "44FBD811-70A9-462B-AC56-F975ADAD62AF")
+                                               ;; before_save
+                                               (yas-item "523BE8A6-0845-493D-A9B6-532F73D21950")
+                                               ;; after_save
+                                               (yas-item "4D1787E3-1583-4CF3-8D99-CC45D7C35EED")
+                                               ;; before_create
+                                               (yas-item "D64D8863-DCB6-4397-B5B0-073E0AE04167")
+                                               ;; after_create
+                                               (yas-item "279D1981-B055-4693-B9AF-5B571A62A6AE")
+                                               ;; before_destroy
+                                               (yas-item "3F4B502B-5F68-4687-88E9-6EF3BDF9677D")
+                                               ;; after_update
+                                               (yas-item "0C9EA1A1-66C5-4E1C-9C30-E1FFE8EC6EAE")
+                                               ;; before_update
+                                               (yas-item "1C20EEBE-B4BA-48C8-9B33-7B5BB00D958C")
+                                               ;; after_destroy
+                                               (yas-item "A2F3E8C1-4216-4890-8491-2F8C7534ED03")))
+                                 (yas-submenu "Associations"
+                                              (;; belongs_to
+                                               (yas-item "B8F08BD7-6160-482C-8A3D-CBC6BD2079A4")
+                                               ;; has_and_belongs_to_many
+                                               (yas-item "2AC3AC1F-743B-4A33-863C-C37885073806")
+                                               ;; has_one
+                                               (yas-item "BD2E4045-54E6-450E-B31B-5E1865CFFBC9")
+                                               ;; has_many
+                                               (yas-item "F396B7BD-8255-48B1-904A-06E7D7CC2741")
+                                               ;; has_many :dependent => :destroy
+                                               (yas-item "3E3AF538-171B-4108-AB92-827AD7E24C77")
+                                               ;; has_many (through)
+                                               (yas-item "9D58B6C9-BA52-48B3-B639-D5CB894AF810")
+                                               (yas-separator)
+                                               ;; accepts_nested_attributes_for
+                                               (yas-item "D414D70D-BD2D-4C15-BDA6-1AAEABF7791F")))
+                                 (yas-submenu "Scopes"
+                                              (;; scope
+                                               (yas-item "8F87F3C7-8ABB-4778-9786-64CF95E99160")
+                                               ;; scope lambda
+                                               (yas-item "5D01527E-48FA-4A3D-A10B-A383C8AE3942")
+                                               ;; scope with extension
+                                               (yas-item "CEA1D76C-DEB0-4ADB-840D-220E569D5B8F")
+                                               (yas-separator)
+                                               ;; default_scope
+                                               (yas-item "83B80B60-6143-4465-B064-0DA25DDDCAA7")))
+                                 (yas-submenu "Finders"
+                                              (;; find(id)
+                                               (yas-item "59CD3A41-8164-4FB4-B462-D7ACE86BCDBF")
+                                               ;; find(:all)
+                                               (yas-item "A017AB39-A875-40DC-8ACF-7E3551057CA0")
+                                               ;; find(:first)
+                                               (yas-item "FE430ECD-5D40-4D95-A73B-F064C73992DE")
+                                               ;; find(:last)
+                                               (yas-item "8B515110-41D3-11DD-AE16-0800200C9A66")
+                                               ;; find_each
+                                               (yas-item "B105C480-FB21-4511-9AD0-D5B4FED3BA21")
+                                               ;; find_in_batches
+                                               (yas-item "B660FC85-F69A-43BC-A72A-748CBEA0AA9A")
+                                               (yas-separator)
+                                               ;; scoped_by
+                                               (yas-item "7CC002AE-83BA-4294-B87D-DE9790839D97")))
+                                 (yas-submenu "Validations"
+                                              (;; validates_acceptance_of
+                                               (yas-item "89198999-7E6D-4D97-A20E-45263E1CA993")
+                                               ;; validates_acceptance_of if
+                                               (yas-item "A2477223-AD5A-4723-8052-943CE9BA634D")
+                                               ;; validates_associated
+                                               (yas-item "47944705-F605-4ED4-B4C0-9E823EE25138")
+                                               ;; validates_associated if
+                                               (yas-item "85E9264C-5414-4FA0-AC07-F305A798ED46")
+                                               ;; validates_confirmation_of
+                                               (yas-item "B5893618-D07C-48F1-8867-736D0AAFF0E7")
+                                               ;; validates_confirmation_of if
+                                               (yas-item "1354726C-DA64-4CA6-A099-26626A865D8D")
+                                               ;; validates_exclusion_of
+                                               (yas-item "4CC98A56-B60B-4A89-80E0-400C5314A050")
+                                               ;; validates_exclusion_of if
+                                               (yas-item "869AB0B7-12DD-440A-905A-BFB1E0E16E1C")
+                                               ;; validates_inclusion_of
+                                               (yas-item "4611F02E-E9BF-11DC-8518-00112475D960")
+                                               ;; validates_inclusion_of if
+                                               (yas-item "47FF50AF-E9BF-11DC-8518-00112475D960")
+                                               ;; validates_format_of
+                                               (yas-item "EB47FBA1-AFB3-42F9-94A4-552D3175C17A")
+                                               ;; validates_format_of if
+                                               (yas-item "14BF0586-F2E8-4AB3-BB4B-E49099384403")
+                                               ;; validates_length_of
+                                               (yas-item "5CE8838A-BF2C-497E-B87A-E90C3BC482E0")
+                                               ;; validates_length_of if
+                                               (yas-item "EC511A43-D3B7-11DC-BA49-00112475D960")
+                                               ;; validates_numericality_of
+                                               (yas-item "B21BA16D-7C04-4912-8488-425CDCC332A8")
+                                               ;; validates_numericality_of if
+                                               (yas-item "CF506019-E964-4172-A3DA-475AE3B65558")
+                                               ;; validates_presence_of
+                                               (yas-item "5DAC28A7-33C8-4DA7-9E85-56618D6BEC9F")
+                                               ;; validates_presence_of if
+                                               (yas-item "F5CBBE16-F5CC-4EDA-8BC6-30281BD7D854")
+                                               ;; validates_uniqueness_of
+                                               (yas-item "F8316545-9AE4-4C7F-87ED-A2C00E6637FA")
+                                               ;; validates_uniqueness_of if
+                                               (yas-item "43680344-0818-42BF-95B4-58CD2D76545B")))
+                                 ;; alias_attribute
+                                 (yas-item "5694BA8B-64EC-4B1B-A00D-6366D28500C5")))
+                   (yas-submenu "Controllers"
+                                (;; Create controller class
+                                 (yas-item "4B3F798E-E3B6-48C8-8C2F-CB8631011638")
+                                 ;; Create resources controller class
+                                 (yas-item "F90BFB23-5706-484B-8108-B376A988C0A0")
+                                 ;; layout
+                                 (yas-item "CCF4C4A1-28EF-499D-AD81-4A4FD2FEF5B6")
+                                 ;; before_filter
+                                 (yas-item "B782A467-2C4D-48EB-AF39-518AFED4C056")
+                                 ;; flash[…]
+                                 (yas-item "D864896E-8763-11D9-897C-000393CBCE2E")
+                                 (yas-submenu "respond_to"
+                                              (;; respond_to
+                                               (yas-item "B41D3164-EA53-4DDC-850E-27B82B24061F")
+                                               ;; respond_with
+                                               (yas-item "DDE1BA27-6259-4F87-A840-6A6E92C8594A")
+                                               ;; format (respond_with)
+                                               (yas-item "32AB6C81-2C22-45E0-B5FE-23CD3E420E70")))
+                                 (yas-submenu "redirect_to"
+                                              (;; redirect_to (path)
+                                               (yas-item "A909C4C3-8EFE-4E39-9D96-BA8F0ABE6085")
+                                               ;; redirect_to (path plural)
+                                               (yas-item "AFE06B67-CE98-42A6-93D1-8EC8E3B9F83C")
+                                               ;; redirect_to (nested path)
+                                               (yas-item "9D7228B3-A6ED-4598-B096-032B3600864F")
+                                               ;; redirect_to (nested path plural)
+                                               (yas-item "EF527A27-D1D4-4FD8-BD23-71397881C29A")
+                                               ;; redirect_to (action)
+                                               (yas-item "F2F3167C-73B9-11D9-B752-000D932CD5BA")
+                                               ;; redirect_to (action, id)
+                                               (yas-item "2233B484-73BA-11D9-B752-000D932CD5BA")
+                                               ;; redirect_to (controller)
+                                               (yas-item "053490FE-73BA-11D9-B752-000D932CD5BA")
+                                               ;; redirect_to (controller, action)
+                                               (yas-item "0C137FBF-73BA-11D9-B752-000D932CD5BA")
+                                               ;; redirect_to (controller, action, id)
+                                               (yas-item "18D3C1C3-73BA-11D9-B752-000D932CD5BA")
+                                               ;; redirect_to :back
+                                               (yas-item "BC194AE7-FA60-4E65-9503-6920D1666A29")))
+                                 (yas-submenu "render"
+                                              (;; render (action)
+                                               (yas-item "7B03D38B-7580-41AC-BC2B-3766AB074A43")
+                                               ;; render (action, layout)
+                                               (yas-item "053F1D6A-B413-43FF-B697-E3120FD0489F")
+                                               ;; render (file)
+                                               (yas-item "7D43B0EA-2C3C-499B-9346-A8E48CBF29CD")
+                                               ;; render (file, use_full_path)
+                                               (yas-item "2A8FBE48-E196-4019-AE76-BF3ED4B54F47")
+                                               ;; render (inline)
+                                               (yas-item "64E93A71-6E62-48D9-9694-123080AE6723")
+                                               ;; render (inline, locals)
+                                               (yas-item "1E5DE984-510C-4992-8AD5-C5FA6D7F2A88")
+                                               ;; render (inline, type)
+                                               (yas-item "A8AF8B90-94E8-42E1-8057-DDBA57809F6A")
+                                               ;; render (layout)
+                                               (yas-item "3F83272F-62D5-4BCB-BAA3-806083078829")
+                                               ;; render (nothing)
+                                               (yas-item "AC8A995F-0034-433C-905D-E5C1F29D6EFF")
+                                               ;; render (nothing, status)
+                                               (yas-item "724A68C1-A727-46FF-AF59-288E26B09629")
+                                               ;; render (partial)
+                                               (yas-item "498168A5-5AF8-4F59-8A2D-B517FAB98CDB")
+                                               ;; render (partial, collection)
+                                               (yas-item "046FB1B6-9C65-4702-91EC-4AA9878CD949")
+                                               ;; render (partial, locals)
+                                               (yas-item "6F41AFFD-B3A7-42D0-8A84-D6086C118D92")
+                                               ;; render (partial, object)
+                                               (yas-item "BFAAC8DA-A043-4684-967B-B3E5DAE08C62")
+                                               ;; render (partial, status)
+                                               (yas-item "CBB06A4E-3A82-45F3-91AA-259F02314B9D")
+                                               ;; render (text)
+                                               (yas-item "67C5082F-5011-434A-8EAA-6B8D3600935F")
+                                               ;; render (text, layout)
+                                               (yas-item "A3B09AFE-40B5-4623-8B85-E9F369ECE22D")
+                                               ;; render (text, layout => true)
+                                               (yas-item "97C0992D-715F-4322-A3E0-DD4D2B7E2FC2")
+                                               ;; render (text, status)
+                                               (yas-item "4F636977-F7A6-4BF5-B09B-7F087683C3B9")
+                                               ;; render (update)
+                                               (yas-item "ECB10C0B-E8B7-4606-ABF5-4A2A26E5AB1A")))
+                                 (yas-submenu "REST methods"
+                                              (;; def create - resource
+                                               (yas-item "54F61419-001F-4B71-83AC-8DC633694AF0")))
+                                 (yas-submenu "Caching"
+                                              (;; caches_action
+                                               (yas-item "017634C2-FC55-41BA-B551-82436809D71B")))
+                                 (yas-separator)
+                                 ;; verify — render
+                                 (yas-item "9ECBF20C-003E-41D9-A881-4BAC0656F9DC")
+                                 ;; verify — redirect
+                                 (yas-item "7BBD3F57-57A5-4CD0-8E79-B931021FC110")))
+                   (yas-submenu "View Templates"
+                                (;; Create Partial From Selection
+                                 (yas-item "1DD8A214-1C97-45BA-ADEE-8F888DDE8570")
+                                 (yas-separator)
+                                 ;; form_for
+                                 (yas-item "7D99041D-C3B7-4940-AE64-6B1758CDB47C")
+                                 ;; form_for with errors
+                                 (yas-item "15BDD7B6-5C15-4684-93C7-A05E3D2221AC")
+                                 (yas-submenu "form_for f. drop-down list"
+                                              (;; f.label (ffl)
+                                               (yas-item "402C251E-595B-4A58-8EB9-41989040F280")
+                                               ;; f.text_field (fftf)
+                                               (yas-item "CC1BCD1C-2479-4335-B511-17B880316A75")
+                                               ;; f.text_area (ffta)
+                                               (yas-item "06498926-F84D-466C-8736-B8A0AC586A94")
+                                               ;; f.check_box (ffcb)
+                                               (yas-item "F579F9E7-E072-4BCC-BFF9-C8C5BAE7FFA5")
+                                               ;; f.radio_button (ffrb)
+                                               (yas-item "A95358D2-C68A-4894-8C36-062C9F45848A")
+                                               ;; f.password_field (ffpf)
+                                               (yas-item "42289456-C8D1-498C-AE30-5206544B349F")
+                                               ;; f.hidden_field (ffhf)
+                                               (yas-item "5DBA8F72-DD6C-4CBF-83FD-76301E159BA9")
+                                               ;; f.file_field (ffff)
+                                               (yas-item "79BC2303-3D9D-4E21-AF85-73B388B7B56D")
+                                               ;; f.submit (ffs)
+                                               (yas-item "C315EC5D-A7F3-49CB-9795-21B78BB42FF4")
+                                               ;; f.fields_for (nff)
+                                               (yas-item "BBE5B6F2-A8F2-4714-9186-4FCD21A5B432")))
+                                 (yas-submenu "form_for helpers"
+                                              (;; form_for label
+                                               (yas-item "B31822D9-2048-4D16-B2AF-00E0B4E5C368")
+                                               ;; form_for text_field
+                                               (yas-item "F46EE8EE-239C-46D7-980B-3F861B7D9111")
+                                               ;; form_for text_area
+                                               (yas-item "4C898FA8-D09C-4B28-BE42-14BB4EA4E2B1")
+                                               ;; form_for check_box
+                                               (yas-item "F0DB6886-4FFE-45BA-907F-44326AD8142D")
+                                               ;; form_for radio_button
+                                               (yas-item "D4282CE1-4171-4B13-9220-3F2718BC2505")
+                                               ;; form_for password_field
+                                               (yas-item "3379FB35-C664-4255-96C6-6E4B91F12759")
+                                               ;; form_for hidden_field
+                                               (yas-item "99FEFD9B-5A07-46E3-950D-5C474E42B695")
+                                               ;; form_for file_field
+                                               (yas-item "C8BA285D-E12E-4AB8-A941-514C963E8226")
+                                               ;; form_for submit
+                                               (yas-item "3000E569-4E19-4566-B08E-A3FFFAAC9075")
+                                               ;; form_for fields_for
+                                               (yas-item "16645C58-C7C8-4E72-923F-3B44932F946D")))
+                                 ;; fields_for
+                                 (yas-item "7C7FC66A-D566-40D3-B9DA-FCEA4EFF98C6")
+                                 (yas-separator)
+                                 ;; form_tag
+                                 (yas-item "F0F6DACA-6A0B-11D9-BDC2-000D932CD5BA")
+                                 ;; submit_tag
+                                 (yas-item "D0E29200-E910-11DC-A399-00112475D960")
+                                 ;; image_submit_tag
+                                 (yas-item "9FB9848E-EA5A-11DC-9DE5-00112475D960")
+                                 ;; image_tag
+                                 (yas-item "4EA6FBD1-CDEA-4DF6-9F70-A1EDA35AC3D7")
+                                 (yas-submenu "link_to"
+                                              (;; link_to (path)
+                                               (yas-item "326B57A7-B4A9-447B-A3D2-0EA74158E1E1")
+                                               ;; link_to (path plural)
+                                               (yas-item "6BA737F0-63D1-4D82-9381-4331E18B12C5")
+                                               ;; link_to (nested path)
+                                               (yas-item "750DEEF9-18A0-40FC-8E54-574CE5EE5565")
+                                               ;; link_to (nested path plural)
+                                               (yas-item "866AAD87-E458-4F2D-9E7C-3CE73EFC047B")
+                                               ;; link_to (action)
+                                               (yas-item "9E2B42FE-7BC8-11D9-906A-000D932CD5BA")
+                                               ;; link_to (action, id)
+                                               (yas-item "B4F952F4-7BC8-11D9-906A-000D932CD5BA")
+                                               ;; link_to (controller)
+                                               (yas-item "74590E16-7BCB-11D9-906A-000D932CD5BA")
+                                               ;; link_to (controller, action)
+                                               (yas-item "C11C0BF5-7BC8-11D9-906A-000D932CD5BA")
+                                               ;; link_to (controller, action, id)
+                                               (yas-item "D21BE958-7BC8-11D9-906A-000D932CD5BA")
+                                               ;; link_to model
+                                               (yas-item "E5E08AA0-4EDD-4583-BF07-5D6C49E98410")
+                                               ;; link_to_function
+                                               (yas-item "F5983CAF-0655-45FA-A385-9E9A8C28425C")))
+                                 ;; if (ERB)
+                                 (yas-item "1ED49D4D-D4A0-4CF0-8ED2-DCE70854B839")
+                                 ;; else (ERB)
+                                 (yas-item "B9889C00-FC9D-4956-81BF-600145F06976")
+                                 ;; end (ERB)
+                                 (yas-item "AC385ABF-96CD-4FCB-80AD-BF37D6EE79D2")
+                                 (yas-separator)
+                                 ;; map(&:sym_proc)
+                                 (yas-item "EC605540-C431-4FD0-AD91-D913118DACA7")
+                                 (yas-separator)
+                                 ;; content_for
+                                 (yas-item "9038B99B-4810-4C0B-B547-F72F2AD5CAFC")
+                                 ;; for loop in rhtml
+                                 (yas-item "F7744F07-306C-4951-AB5A-3D69BA5516B7")))
+                   (yas-submenu "Layouts"
+                                (;; javascript_include_tag
+                                 (yas-item "FEF49C86-9386-405E-A191-684D1C963E3A")
+                                 ;; stylesheet_link_tag
+                                 (yas-item "980C7667-9D60-49FF-AF74-A7B19B379F45")))
+                   (yas-submenu "RJS"
+                                (;; page.replace (id, partial)
+                                 (yas-item "273E5E76-8D13-4476-9C38-8AF87432CB96")
+                                 ;; page.hide (*ids)
+                                 (yas-item "390A447F-0FA3-4F01-A10C-4F35675E0A43")
+                                 ;; page.replace_html (id, partial)
+                                 (yas-item "8B914165-9C66-4FA3-9AD6-1DA41B25F8F1")
+                                 ;; page.insert_html (position, id, partial)
+                                 (yas-item "62BEA590-F4EF-4001-B661-764EDFB92811")
+                                 ;; page.visual_effect (effect, id)
+                                 (yas-item "CFDC27A3-58CF-4198-8F93-36360978F0D0")
+                                 ;; page.show (*ids)
+                                 (yas-item "5ACBF49D-B5A5-495C-89D8-18AA740D9D02")
+                                 ;; page.toggle (*ids)
+                                 (yas-item "028DA0A4-B310-4BEF-8643-2A22993C21C7")))
+                   (yas-submenu "Migrations"
+                                (;; Ignoring Quick Migration
+                                 (yas-ignore-item "D696FA2C-785A-4B73-A2F6-F750904DD7C2")
+                                 
+                                 (yas-submenu "Columns"
+                                              (;; Add / Remove Column
+                                               (yas-item "18C76913-061C-4D65-866D-67AA3724AFEF")
+                                               ;; Ignoring Add / Remove Several Columns
+                                               (yas-ignore-item "7BC860E6-7561-4E6E-983B-507D7A6F6228")
+                                               ;; Add / Remove Several Columns (marcc)
+                                               (yas-item "27A6C58A-896B-4956-BA81-D671A2EF9C7D")
+                                               ;; Ignoring Add / Remove Timestamps
+                                               (yas-ignore-item "221969A1-A5EA-4A8E-8817-C74EBED63901")
+                                               ;; Ignoring Change Column
+                                               (yas-ignore-item "42DE1441-D1B7-4998-BAF9-16B1EC7E210C")
+                                               ;; Ignoring Change Column Default
+                                               (yas-ignore-item "A219EBB8-004A-4012-B5B2-232C9A5C94F8")
+                                               ;; Ignoring Rename / Rename Column
+                                               (yas-ignore-item "AC50762C-DE40-4EB9-9A22-2F6AF2EA4EA3")
+                                               ;; Ignoring Rename / Rename Several Columns
+                                               (yas-ignore-item "F03162DE-9DB6-417B-9DD7-52D9F11EA736")
+                                               ;; Ignoring Rename / Rename Several Columns (mncc)
+                                               (yas-ignore-item "04A86178-71B1-430A-A06D-DFF7C9A338B5")
+                                               ;; Remove / Add Column
+                                               (yas-item "16A705EB-10DC-42B5-9FF2-377E206421DC")
+                                               ;; Ignoring Remove / Add Timestamps
+                                               (yas-ignore-item "E885A3E8-8020-4AC3-A25E-510B26F114B2")))
+                                 (yas-submenu "Tables"
+                                              (;; Ignoring Create / Drop Table
+                                               (yas-ignore-item "25F8F5D8-2BD1-45D8-8B2A-9F2EA4F73AA2")
+                                               ;; Ignoring Rename / Rename Table
+                                               (yas-ignore-item "FD8CC811-2AD3-480F-B975-DF959DC96C67")
+                                               ;; Drop / Create Table
+                                               (yas-item "20375601-B13F-4314-B8E4-362706566636")
+                                               ;; Change / Change Table
+                                               (yas-item "20FC02C5-32A3-4F20-B163-FF75C9FDFABF")
+                                               (yas-separator)
+                                               (yas-submenu "Create columns t. drop-down list"
+                                                            (;; t.string (tcs)
+                                                             (yas-item "B757F7E5-E4BD-11DC-A11A-00112475D960")
+                                                             ;; t.text (tct)
+                                                             (yas-item "FFE7B820-E4BD-11DC-A11A-00112475D960")
+                                                             ;; t.integer (tci)
+                                                             (yas-item "0E63B7D5-E4BE-11DC-A11A-00112475D960")
+                                                             ;; t.float (tcf)
+                                                             (yas-item "1BDC463A-E4BE-11DC-A11A-00112475D960")
+                                                             ;; t.decimal (tcd)
+                                                             (yas-item "26C09807-E4BE-11DC-A11A-00112475D960")
+                                                             ;; t.datetime (tcdt)
+                                                             (yas-item "3458B140-E4BE-11DC-A11A-00112475D960")
+                                                             ;; t.timestamp (tcts)
+                                                             (yas-item "49643690-E4BE-11DC-A11A-00112475D960")
+                                                             ;; t.time (tcti)
+                                                             (yas-item "537BDD48-E4BE-11DC-A11A-00112475D960")
+                                                             ;; t.date (tcda)
+                                                             (yas-item "61CF5B32-E4BE-11DC-A11A-00112475D960")
+                                                             ;; t.boolean (tcb)
+                                                             (yas-item "6BE6F315-E4BE-11DC-A11A-00112475D960")
+                                                             ;; t.binary (tcbi)
+                                                             (yas-item "7CE57C6C-E4BE-11DC-A11A-00112475D960")
+                                                             ;; t.timestamps (tctss)
+                                                             (yas-item "950B0BF2-E4BE-11DC-A11A-00112475D960")
+                                                             ;; t.lock_version (tcl)
+                                                             (yas-item "A677FFD4-E4BE-11DC-A11A-00112475D960")
+                                                             ;; t.references (tcr)
+                                                             (yas-item "B6D9225C-E4BE-11DC-A11A-00112475D960")))
+                                               (yas-submenu "Create columns helpers"
+                                                            (;; Table column string
+                                                             (yas-item "377BF814-D52D-11DC-BD8E-00112475D960")
+                                                             ;; Table column text
+                                                             (yas-item "6A9D4C30-D52D-11DC-BD8E-00112475D960")
+                                                             ;; Table column integer
+                                                             (yas-item "729D559E-D52D-11DC-BD8E-00112475D960")
+                                                             ;; Table column float
+                                                             (yas-item "8AF989C4-D52E-11DC-BD8E-00112475D960")
+                                                             ;; Table column decimal
+                                                             (yas-item "93A16768-D52E-11DC-BD8E-00112475D960")
+                                                             ;; Table column datetime
+                                                             (yas-item "D6CBCA96-D52F-11DC-BD8E-00112475D960")
+                                                             ;; Table column timestamp
+                                                             (yas-item "4600CE20-D532-11DC-BD8E-00112475D960")
+                                                             ;; Table column time
+                                                             (yas-item "4F5DDD37-D532-11DC-BD8E-00112475D960")
+                                                             ;; Table column date
+                                                             (yas-item "56276686-D532-11DC-BD8E-00112475D960")
+                                                             ;; Table column boolean
+                                                             (yas-item "967093B4-D532-11DC-BD8E-00112475D960")
+                                                             ;; Table column binary
+                                                             (yas-item "5E9B8B0E-D532-11DC-BD8E-00112475D960")
+                                                             ;; Table column timestamps
+                                                             (yas-item "E0C8FDC4-D532-11DC-BD8E-00112475D960")
+                                                             ;; Table column lock_version
+                                                             (yas-item "FC2523C1-D532-11DC-BD8E-00112475D960")
+                                                             ;; Table column(s) references
+                                                             (yas-item "EDA6568B-D533-11DC-BD8E-00112475D960")))
+                                               ;; Create Column in Table
+                                               (yas-item "7592CA99-75D7-48B6-9133-00B9F148FF43")
+                                               ;; Create Several Columns in Table
+                                               (yas-item "67FD2F8F-5F25-45F2-A451-2F39977A9EDE")
+                                               (yas-submenu "Change columns t. drop-down list"
+                                                            (;; t.change (tch)
+                                                             (yas-item "19761681-17E6-4DF1-8C08-73C337D29481")
+                                                             ;; t.rename (tre)
+                                                             (yas-item "9D4E30E2-4A61-4941-B9F3-BEE97552747A")))
+                                               (yas-submenu "Change columns helpers"
+                                                            (;; Table column(s) change
+                                                             (yas-item "57A9D5BC-DD0F-422B-B857-53F30B5D763A")
+                                                             ;; Table column(s) rename
+                                                             (yas-item "DF30226E-1111-448A-B669-7CA34EE83909")))))
+                                 (yas-submenu "Indexes"
+                                              (;; Ignoring Add / Remove Index
+                                               (yas-ignore-item "95F83E1D-5B03-424F-8BEC-8AF66C8939BC")
+                                               ;; Ignoring Add / Remove Named Index
+                                               (yas-ignore-item "A7F692C1-778A-48B8-945E-573568BA0403")
+                                               ;; Ignoring Add / Remove Unique Index
+                                               (yas-ignore-item "33057A79-677B-4DFB-99D4-1492778BDDC6")))))
+                   (yas-submenu "Gemfile"
+                                (;; gem
+                                 (yas-item "5C773E3D-436E-4A28-8399-859CE41E504F")
+                                 ;; gem :git
+                                 (yas-item "675DD92F-42F1-4B55-B56A-5D4ABC1375C4")))
+                   (yas-submenu "Routes"
+                                (;; Ignoring Autocomplete Routes
+                                 (yas-ignore-item "0742F232-38ED-4C52-AD68-1858F0F2C601")
+                                 
+                                 ;; match
+                                 (yas-item "856B8A7A-86FA-4424-B4D9-3D57D5C3E590")
+                                 ;; resources
+                                 (yas-item "92E54811-6041-4BF8-B808-918B8C11F1D9")
+                                 ;; member routes
+                                 (yas-item "7C2F96AF-7F07-4B71-A41C-812294ECA6EE")
+                                 ;; collection routes
+                                 (yas-item "0ECA205B-6766-43B7-8B7C-A17956E1213E")
+                                 (yas-separator)
+                                 ;; get :on => :collection
+                                 (yas-item "4B0DBED3-3A95-4BE4-B61B-9CDFB8B8C07A")
+                                 ;; get :on => :member
+                                 (yas-item "D696088D-DDCD-4F58-9C8A-E2D99B5F345B")
+                                 (yas-separator)
+                                 ;; map.named_route
+                                 (yas-item "91C543BF-7BD8-4E3A-B493-AE572C5472A0")
+                                 ;; map.resources
+                                 (yas-item "0FF86C46-0E01-4D03-8232-72CA5BD55706")
+                                 ;; map.resource
+                                 (yas-item "2183A9A9-17ED-4A4F-ABB6-668EDDD3A6E4")
+                                 ;; map.with_options
+                                 (yas-item "BD4B90F7-2187-4E75-BFFB-77BE67CB8DAE")
+                                 ;; map.catch_all
+                                 (yas-item "F3606586-F905-4A91-92CA-82319239221D")))
+                   (yas-submenu "ActiveSupport"
+                                (;; cattr_accessor
+                                 (yas-item "F57522B2-9F5F-4DF9-AE46-9478AF019C63")
+                                 ;; mattr_accessor
+                                 (yas-item "B25B7560-FACB-4A9E-A226-B71C796BD1F3")
+                                 ;; returning do |variable| … end
+                                 (yas-item "D2783155-23F3-4B90-A317-5BD139471193")))
+                   (yas-separator)
+                   (yas-submenu "Tests"
+                                (;; test do..end
+                                 (yas-item "6ECA11FE-E8C1-4EC0-93F3-B4472752E60D")
+                                 ;; setup do..end
+                                 (yas-item "0A25B963-AF76-472D-BA68-07F88A64A10B")
+                                 (yas-submenu "Fixtures"
+                                              (;; <%= Fixtures.identify(:symbol) %>
+                                               (yas-item "9671EB7A-89D6-4C23-914F-88CBEE0D177A")
+                                               (yas-separator)
+                                               ;; Ignoring Autocomplete Foreign Key Fixture Reference
+                                               (yas-ignore-item "0BCF0EE2-35EE-4959-A771-E74D55271D5A")
+                                               ;; Ignoring Autocomplete Foreign Key Fixture Reference (habtm)
+                                               (yas-ignore-item "275C0B86-F735-49B6-8A22-218A8F4CC2E0")))
+                                 (yas-submenu "Unit Tests"
+                                              (;; assert_difference
+                                               (yas-item "30BEA6FB-301C-4460-93EC-FA3404688962")
+                                               ;; assert_no_difference
+                                               (yas-item "5C6F4462-70E6-40B4-B3F2-F371656E7784")
+                                               (yas-separator)))
+                                 (yas-submenu "Functional Tests"
+                                              (;; Create functional test class
+                                               (yas-item "F60D0630-CBF5-4283-9D20-FA46C787A88D")
+                                               ;; def test_should_get_action
+                                               (yas-item "1C491A76-751F-44EF-8DFB-0A585C7EEFF6")
+                                               ;; def test_should_post_action
+                                               (yas-item "8B9CD068-4338-4039-AA06-D839A6C7A9FF")
+                                               (yas-separator)
+                                               ;; assert_response
+                                               (yas-item "2BD82DCB-1F19-4C8F-BC70-C0BBB06A2138")
+                                               ;; assert_redirected_to
+                                               (yas-item "CD60F800-850D-47CF-BE32-3DE665DD5C68")
+                                               ;; assert_redirected_to (path)
+                                               (yas-item "D33EDCE7-F8AF-48D4-AA7A-852BBF03E31D")
+                                               ;; assert_redirected_to (path plural)
+                                               (yas-item "0249637E-0720-46DA-A8FD-E176A2CC458B")
+                                               ;; assert_redirected_to (nested path)
+                                               (yas-item "97021C0D-EB65-4046-B688-01F09B3B1615")
+                                               ;; assert_redirected_to (nested path plural)
+                                               (yas-item "4C92C020-7337-4D6E-91EE-7ABF2BFC7F41")
+                                               (yas-separator)
+                                               ;; assert_select
+                                               (yas-item "DBE14FE8-B415-4DBC-A316-F8DA63FE9FD7")
+                                               (yas-separator)
+                                               ;; assert_rjs
+                                               (yas-item "E0F281EC-5311-41F8-ADD9-2E2D059DA651")
+                                               (yas-separator)
+                                               ;; assert(var = assigns(:var))
+                                               (yas-item "FE9C4B4E-860D-49F0-AAF7-5582B98F5F54")))
+                                 (yas-submenu "Ajax Tests"
+                                              (;; xhr post
+                                               (yas-item "62C3838B-0790-4FC2-8425-F273A57F5D33")
+                                               ;; xhr get
+                                               (yas-item "78FCF992-D01B-404F-BC54-5EE7B91F999A")
+                                               ;; xhr delete
+                                               (yas-item "F1BE0C3D-7203-43E9-BEFB-D1A99CDD31C1")
+                                               ;; xhr put
+                                               (yas-item "C12C98A5-74E5-4E70-9ADB-8783455D6539")))))
+                   (yas-separator)
+                   ;; Ignoring View demo help
+                   (yas-ignore-item "964436B8-E578-11DC-8177-00112475D960")
+                   ;; Documentation for Word
+                   (yas-item "32F30207-D827-46D9-889A-451C35269D52")
+                   ;; Ignoring Jump to Method Definition
+                   (yas-ignore-item "AECD46CF-9031-4059-B386-262DBABD97B1")
+                   ;; Ignoring List columns of a model
+                   (yas-ignore-item "CF489B31-5DD2-4B83-B503-AD3ECF7BDEB7")
+                   ;; Create sweeper class
+                   (yas-item "FF022038-CA5D-4045-909E-BF509343A5C7"))
+                    '("A2135370-67A1-488D-B43C-B4F221127C2F"
+                       "809BCA42-5C49-4B08-B3C4-BB773036C086"
+                       "275C0B86-F735-49B6-8A22-218A8F4CC2E0"
+                       "0BCF0EE2-35EE-4959-A771-E74D55271D5A"
+                       "0742F232-38ED-4C52-AD68-1858F0F2C601"
+                       "6F2AB859-46E3-4FF5-A9A7-E9A813AB5DE1"
+                       "D696FA2C-785A-4B73-A2F6-F750904DD7C2"
+                       "AECD46CF-9031-4059-B386-262DBABD97B1"
+                       "CF489B31-5DD2-4B83-B503-AD3ECF7BDEB7"
+                       "F758BFD1-00CA-4742-BE71-032580080F5C"
+                       "5EEA0C71-B34B-4408-953B-F47AAD343CCC"
+                       "9A1AE6BA-8350-4AB7-B5BD-969A7E64CF29"
+                       "07C696F8-79F5-4E0B-9EE9-03B693A54ABB"
+                       "88047A77-B889-4F47-892D-4C3EBA98D968"
+                       "1970AE74-3949-40B3-B263-727AA3FF167A"
+                       "DC549A45-D9B0-11DC-94E9-00112475D960"
+                       "F4EA552D-D9B0-11DC-94E9-00112475D960"
+                       "04A30A4D-D9B1-11DC-94E9-00112475D960"
+                       "0D966168-D9B1-11DC-94E9-00112475D960"
+                       "190401C2-D9B1-11DC-94E9-00112475D960"
+                       "212C3047-D9B1-11DC-94E9-00112475D960"
+                       "2C60CBA1-D9B1-11DC-94E9-00112475D960"
+                       "964436B8-E578-11DC-8177-00112475D960"
+                       "310C901C-EF32-4E88-938A-804ABBF8C428"
+                       "6DEF923E-2347-46EC-AFBE-183D08E63DC1"
+                       "4904EDC7-5ED3-4132-AAB2-C2AD87C97EFE"
+                       "985F56D4-82ED-4C45-8250-2ECCFC71957E"
+                       "95F83E1D-5B03-424F-8BEC-8AF66C8939BC"
+                       "A7F692C1-778A-48B8-945E-573568BA0403"
+                       "7BC860E6-7561-4E6E-983B-507D7A6F6228"
+                       "221969A1-A5EA-4A8E-8817-C74EBED63901"
+                       "33057A79-677B-4DFB-99D4-1492778BDDC6"
+                       "A219EBB8-004A-4012-B5B2-232C9A5C94F8"
+                       "42DE1441-D1B7-4998-BAF9-16B1EC7E210C"
+                       "25F8F5D8-2BD1-45D8-8B2A-9F2EA4F73AA2"
+                       "A2135370-67A1-488D-B43C-B4F221127C2F"
+                       "809BCA42-5C49-4B08-B3C4-BB773036C086"
+                       "E885A3E8-8020-4AC3-A25E-510B26F114B2"
+                       "04A86178-71B1-430A-A06D-DFF7C9A338B5"
+                       "F03162DE-9DB6-417B-9DD7-52D9F11EA736"
+                       "AC50762C-DE40-4EB9-9A22-2F6AF2EA4EA3"
+                       "FD8CC811-2AD3-480F-B975-DF959DC96C67"))
+
+;; Unknown substitutions
+;; 
+;; Substitutions for: content
+;; 
+;; # as in Snippets/find_in_batches.yasnippet
+;; `(downcase (replace-regexp-in-string "\..*$"  "" (current-word)))`                         =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Autocomplete Foreign Key Fixture Reference (habtm).yasnippet
+;; 275C0B86-F735-49B6-8A22-218A8F4CC2E0                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Autocomplete Foreign Key Fixture Reference.yasnippet
+;; 0BCF0EE2-35EE-4959-A771-E74D55271D5A                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Autocomplete Routes.yasnippet
+;; 0742F232-38ED-4C52-AD68-1858F0F2C601                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Clone Development DB to Test DB.yasnippet
+;; 6F2AB859-46E3-4FF5-A9A7-E9A813AB5DE1                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Generate Quick Migration.yasnippet
+;; D696FA2C-785A-4B73-A2F6-F750904DD7C2                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Jump to Method Definition.yasnippet
+;; AECD46CF-9031-4059-B386-262DBABD97B1                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/List columns of a model.yasnippet
+;; CF489B31-5DD2-4B83-B503-AD3ECF7BDEB7                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Load Fixtures (Test DB).yasnippet
+;; F758BFD1-00CA-4742-BE71-032580080F5C                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Load Fixtures.yasnippet
+;; 5EEA0C71-B34B-4408-953B-F47AAD343CCC                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Migrate to Previous Version.yasnippet
+;; 9A1AE6BA-8350-4AB7-B5BD-969A7E64CF29                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Rake Migrate to Version.yasnippet
+;; 07C696F8-79F5-4E0B-9EE9-03B693A54ABB                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Set RVM.yasnippet
+;; 88047A77-B889-4F47-892D-4C3EBA98D968                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Show DB Schema.yasnippet
+;; 1970AE74-3949-40B3-B263-727AA3FF167A                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Test All.yasnippet
+;; DC549A45-D9B0-11DC-94E9-00112475D960                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Test Functionals.yasnippet
+;; F4EA552D-D9B0-11DC-94E9-00112475D960                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Test Integration.yasnippet
+;; 04A30A4D-D9B1-11DC-94E9-00112475D960                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Test Plugins.yasnippet
+;; 0D966168-D9B1-11DC-94E9-00112475D960                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Test Recent.yasnippet
+;; 190401C2-D9B1-11DC-94E9-00112475D960                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Test Uncommitted.yasnippet
+;; 212C3047-D9B1-11DC-94E9-00112475D960                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Test Units.yasnippet
+;; 2C60CBA1-D9B1-11DC-94E9-00112475D960                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/View demo help.yasnippet
+;; 964436B8-E578-11DC-8177-00112475D960                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/DB Schema Dump.yasnippet
+;; 310C901C-EF32-4E88-938A-804ABBF8C428                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/DB Schema Import.yasnippet
+;; 6DEF923E-2347-46EC-AFBE-183D08E63DC1                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Generate.yasnippet
+;; 4904EDC7-5ED3-4132-AAB2-C2AD87C97EFE                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Rake Migrate.yasnippet
+;; 985F56D4-82ED-4C45-8250-2ECCFC71957E                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Add 3A Remove Index.yasnippet
+;; 95F83E1D-5B03-424F-8BEC-8AF66C8939BC                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Add 3A Remove Named Index.yasnippet
+;; A7F692C1-778A-48B8-945E-573568BA0403                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Add 3A Remove Several Columns.yasnippet
+;; 7BC860E6-7561-4E6E-983B-507D7A6F6228                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Add 3A Remove Timestamps.yasnippet
+;; 221969A1-A5EA-4A8E-8817-C74EBED63901                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Add 3A Remove Unique Index.yasnippet
+;; 33057A79-677B-4DFB-99D4-1492778BDDC6                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Change Column Default.yasnippet
+;; A219EBB8-004A-4012-B5B2-232C9A5C94F8                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Change Column.yasnippet
+;; 42DE1441-D1B7-4998-BAF9-16B1EC7E210C                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Create 3A Drop Table.yasnippet
+;; 25F8F5D8-2BD1-45D8-8B2A-9F2EA4F73AA2                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Drop 3A Create Table.yasnippet
+;; A2135370-67A1-488D-B43C-B4F221127C2F                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Remove 3A Add Column.yasnippet
+;; 809BCA42-5C49-4B08-B3C4-BB773036C086                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Remove 3A Add Timestamps.yasnippet
+;; E885A3E8-8020-4AC3-A25E-510B26F114B2                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Rename 3A Rename Several Columns (mncc).yasnippet
+;; 04A86178-71B1-430A-A06D-DFF7C9A338B5                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Rename 3A Rename Several Columns.yasnippet
+;; F03162DE-9DB6-417B-9DD7-52D9F11EA736                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Rename Column.yasnippet
+;; AC50762C-DE40-4EB9-9A22-2F6AF2EA4EA3                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Rename Table.yasnippet
+;; FD8CC811-2AD3-480F-B975-DF959DC96C67                                                       =yyas> (yas-unknown)
+;; 
+;; 
+
+;; Substitutions for: condition
+;; 
+;; # as in Snippets/verify - redirect (verify).yasnippet
+;;                                                                                            =yyas> (yas-unknown)
+;; 
+;; # as in Snippets/t_rename (tre).yasnippet
+;; meta.rails.migration.change_table                                                          =yyas> (yas-unknown)
+;; 
+;; # as in Snippets/has_one (ho).yasnippet
+;; meta.rails.model                                                                           =yyas> (yas-unknown)
+;; 
+;; # as in Snippets/if (ERB).yasnippet
+;; text.html.ruby                                                                             =yyas> (yas-unknown)
+;; 
+;; 
+
+;; Substitutions for: binding
+;; 
+;; # as in Commands/Autocomplete Foreign Key Fixture Reference (habtm).yasnippet
+;; ~$\e                                                                                        =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Autocomplete Foreign Key Fixture Reference.yasnippet
+;; ~\e                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Generate Quick Migration.yasnippet
+;; ^M                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Jump to Method Definition.yasnippet
+;; ^f                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Commands/List columns of a model.yasnippet
+;; ~                                                                                          =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Go To File on This Line.yasnippet
+;; ~@                                                                                        =yyas> (yas-unknown)
+;; 
+;; 
+
+;; .yas-setup.el for rails-mode ends here
diff --git a/packages/yasnippet/extras/imported/ruby-mode/.yas-setup.el b/packages/yasnippet/extras/imported/ruby-mode/.yas-setup.el
new file mode 100644 (file)
index 0000000..3cfbefc
--- /dev/null
@@ -0,0 +1,1049 @@
+;;; .yas-setup.el --- Setup for ruby-mode  -*- coding: utf-8 -*-
+
+;; Copyright (C) 2013  Free Software Foundation, Inc.
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+;;
+(defvar yas-ruby-snippet-open-paren " "
+  "The open parenthesis used in ruby-mode snippets. Normally blank but could be (")
+(defvar yas-ruby-snippet-close-paren " "
+  "The close parenthesis used in ruby-mode snippets. Normally blank but could be )")
+(defvar yas-ruby-shebang-args " -wKU"
+  "Arguments for the ruby shebang line.")
+
+(defun yas-ruby-infer-class-name ()
+  "Infer the class name from the buffer. Thanks to hitesh <hitesh.jasani@gmail.com>"
+  (if buffer-file-name
+      (let ((fn (capitalize (file-name-nondirectory
+                             (file-name-sans-extension
+                              (buffer-file-name))))))
+        (cond
+         ((string-match "_" fn) (replace-match "" nil nil fn))
+         (t fn)))
+    "SomeClass"))
+
+(defun yas-ruby-chomp (x)
+  "Chomp string X, return nil if X became empty"
+  (let ((len (length x))
+        (start 0)
+        (end (1- (length x))))
+    (unless (zerop len)
+      (while (and (< start len)
+                  (memq (aref x start)
+                        '(?  ?\t ?\n)))
+        (setq start (1+ start)))
+      (while (and (> end start)
+                  (memq (aref x end)
+                        '(?  ?\t ?\n)))
+        (setq end (1- end)))
+      (unless (<= end start)
+        (substring x start (1+ end))))))
+
+(defvar yas-ruby-block-start-regexp "\\(^\\|[\s\t\n^]\\)\\(do\\)[\s\t\n]\\(|.*|\\)?")
+
+(defun yas-ruby-toggle-single-multi-line-block ()
+  "Toggle \"do .. end\" blocks into  \"{ .. }\" blocks back and forth."
+  ;;
+  ;; TODO: Some code to be refactored here.
+  ;; 
+  ;; FIXME: correctly detect statements in { .. } block, split-string(";") is no good
+  ;;
+  (interactive)
+  (let* ((do-block-bounds (save-excursion
+                            (when (or (save-excursion (beginning-of-line)
+                                                      (looking-at yas-ruby-block-start-regexp))
+                                      (save-excursion (ruby-beginning-of-block)
+                                                      (looking-at yas-ruby-block-start-regexp)))
+                              (cons (match-beginning 1)
+                                    (progn (goto-char (match-beginning 1))
+                                           (ruby-end-of-block) (point))))))
+         (brace-block-bounds (condition-case nil
+                                 (let ((syntax-info (syntax-ppss)))
+                                   (if (fourth syntax-info)
+                                       (goto-char (ninth syntax-info)))
+                                   (while (progn (up-list -1) (not (eq (char-after) ?{))))
+                                   (cons (point)
+                                         (progn (forward-sexp) (point))))
+                               (error nil)))
+         (block-region)
+         (statements))
+    (if (and do-block-bounds brace-block-bounds)
+        (if (< (car do-block-bounds) (car brace-block-bounds))
+            (setq do-block-bounds nil)
+          (setq brace-block-bounds nil)))
+    (cond (do-block-bounds
+           (goto-char (car do-block-bounds))
+           (setq block-region (buffer-substring-no-properties (+ 2 (car do-block-bounds)) (cdr do-block-bounds)))
+           (delete-region (car do-block-bounds) (+ 3 (cdr do-block-bounds)))
+           (insert "{")
+           (when (string-match "\\(|.*|\\).*" block-region)
+             (insert " " (match-string 1 block-region))
+             (setq block-region (substring block-region (match-end 1))))
+           (setq statements (remove nil (mapcar #'yas-ruby-chomp
+                                                (split-string block-region "\n"))))
+           (mapc #'(lambda (string)
+                     (insert " " string)
+                     (if (member (aref string (1- (length string))) '(?;
+                                                                      ?|))
+                         (insert " ")
+                       (insert ";")))
+                 statements)
+           (when statements (delete-backward-char 1))
+           (save-excursion
+             (insert " }")))
+          (brace-block-bounds
+           ;; (message "found a brace block")
+           (goto-char (car brace-block-bounds))
+           (setq block-region (buffer-substring (1+ (car brace-block-bounds)) (1- (cdr brace-block-bounds))))
+           (delete-region (car brace-block-bounds) (cdr brace-block-bounds))
+           (insert "do")
+           (when (string-match "\\(|.*|\\).*" block-region)
+             (insert " " (match-string 1 block-region))
+             (setq block-region (substring block-region (match-end 1))))
+           (setq statements (remove nil (mapcar #'yas-ruby-chomp
+                                                (split-string block-region ";"))))
+           (mapc #'(lambda (string)
+                     (insert "\n" string)
+                     (indent-according-to-mode))
+                 statements)
+           (unless statements (insert "\n") (indent-according-to-mode))
+           (save-excursion
+             (insert "\nend")
+             (indent-according-to-mode)))
+          (t
+           (message "No enclosing block found.")))))
+
+(defvar yas-ruby-require-regexps
+  '(("abbrev"                            . ("abbrev"))
+    ("base64"                            . ("Base64"))
+    ("benchmark"                         . ("Benchmark"))
+    ("bigdecimal"                        . ("BigDecimal"))
+    ("bigdecimal/math"                   . ("BigMath"))
+    ("cgi"                               . ("CGI"))
+    ("complex"                           . ("Complex"))
+    ("csv"                               . ("CSV"))
+    ("curses"                            . ("Curses"))
+    ("date"                              . ("Date(?:Time)?"))
+    ("dbm"                               . ("DBM"))
+    ("delegate"                          . ("DelegateClass" "Delegator" "SimpleDelegator "))
+    ("digest"                            . ("MD5" "SHA1"))
+    ("dl"                                . ("DL"))
+    ("enumerator"                        . ("(?:enum|each)_(?:cons|slice)" "enum_(?:for|with_index)" "to_enum "))
+    ("erb"                               . ("ERB"))
+    ("etc"                               . ("Etc"))
+    ("fcntl"                             . ("Fcntl"))
+    ("fileutils"                         . ("FileUtils"))
+    ("find"                              . ("Find(?:\.|::)find"))
+    ("forwardable"                       . ("(?:Single)?Forwardable"))
+    ("gdbm"                              . ("GDBM"))
+    ("generator"                         . ("Generator" "SyncEnumerator"))
+    ("getoptlong"                        . ("GetoptLong"))
+    ("gserver"                           . ("GServer"))
+    ("iconv"                             . ("Iconv"))
+    ("ipaddr"                            . ("IpAddr"))
+    ("logger"                            . ("Logger"))
+    ("matrix"                            . ("Matrix" "Vector"))
+    ("monitor"                           . ("Monitor(?:Mixin)?"))
+    ("net/ftp"                           . ("Net::FTP"))
+    ("net/http"                          . ("Net::HTTP"))
+    ("net/imap"                          . ("Net::IMAP"))
+    ("net/pop"                           . ("Net::(?:APOP|POP3)"))
+    ("net/smtp"                          . ("Net::SMTP"))
+    ("net/telnet"                        . ("Net::Telnet"))
+    ("nkf"                               . ("NKF"))
+    ("observer"                          . ("Observable"))
+    ("open3"                             . ("Open3"))
+    ("optparse"                          . ("OptionParser"))
+    ("ostruct"                           . ("OpenStruct"))
+    ("pathname"                          . ("Pathname"))
+    ("ping"                              . ("Ping"))
+    ("pp"                                . ("pp"))
+    ("pstore"                            . ("PStore"))
+    ("rational"                          . ("Rational"))
+    ("rdoc/usage"                        . ("RDoc(?:\.|::)usage"))
+    ("rdoc/markup/simple_markup"         . ("SM::SimpleMarkup"))
+    ("rdoc/markup/simple_markup/to_html" . ("SM::SimpleMarkup"))
+    ("rdoc/usage"                        . ("RDoc(?:\.|::)usage"))
+    ("resolv"                            . ("Resolv"))
+    ("rexml/document"                    . ("REXML"))
+    ("rinda/tuplespace"                  . ("Rinda::TupleSpace(?:Proxy)?"))
+    ("rinda/ring"                        . ("Rinda::Ring(?:Finger|Server)?"))
+    ("rss"                               . ("RSS"))
+    ("scanf"                             . ("scanf"))
+    ("sdbm"                              . ("SDBM"))
+    ("set"                               . ("(?:Sorted)?Set"))
+    ("singleton"                         . ("Singleton"))
+    ("soap"                              . ("SOAP"))
+    ("socket"                            . (" (?:TCP|UNIX)(?:Socket|Server)" "(?:UDP)?Socket"))
+    ("stringio"                          . ("StringIO"))
+    ("strscan"                           . ("StringScanner"))
+    ("syslog"                            . ("Syslog"))
+    ("tempfile"                          . ("Tempfile"))
+    ("test/unit"                         . ("Test::Unit"))
+    ("thread"                            . (" ConditionVariable" "Mutex" "(?:Sized)?Queue "))
+    ("time"                              . ("Time(?:\.|::)parse"))
+    ("timeout"                           . ("Timeout(?:\.|::)timeout"))
+    ("tk"                                . ("TK"))
+    ("tmpdir"                            . ("Dir(?:\.|::)tmpdir"))
+    ("tracer"                            . ("Tracer"))
+    ("tsort"                             . ("TSort"))
+    ("uri"                               . ("URI"))
+    ("weakref"                           . ("WeakRef"))
+    ("webrick"                           . ("WEBrick"))
+    ("Win32API"                          . ("Win32(?:API)?"))
+    ("win32ole"                          . ("WIN32OLE"))
+    ("wsdl"                              . ("WSDL"))
+    ("xmlrpc"                            . ("XMLRPC"))
+    ("yaml"                              . ("YAML"))
+    ("zlib"                              . ("Zlib"))))
+
+(defun yas-ruby-require (package)
+  (save-excursion
+    (goto-char (point-min))
+    (unless (search-forward-regexp (format "^[\s\t]*require[( ][ ]*\"%s\"[ )]*$"
+                                           package) nil t)
+      (unless (search-forward-regexp "^[\s\t]*require.*\n" nil t)
+        (search-forward-regexp "^[\s\t]*[^#]" nil t)
+        (goto-char (line-beginning-position)))
+      (insert "require \"" package "\"\n"))))
+
+(defun yas-ruby-pipe-through-xmpfilter ()
+  (interactive)
+  (let ((start (or (and mark-active
+                        (region-beginning))
+                   (point-min)))
+        (end (or (and mark-active
+                      (region-end))
+                 (point-max)))
+        (orig (point))
+        retval
+        (orig-line (count-screen-lines (window-start) (line-beginning-position))))
+    
+    (unless (zerop (shell-command-on-region start end "xmpfilter" (get-buffer-create "*xmpfilter*") t (get-buffer-create "*xmpfilter errors*") t))
+      (undo)
+      )
+    (goto-char (min (point-max) orig))
+    (recenter orig-line)
+    retval))
+
+(put (intern "ruby-thing") 'bounds-of-thing-at-point 'yas-ri-ruby-thing-bounds)
+(defun yas-ri-ruby-thing-bounds ()
+  (let ((start (point))
+        (end (point)))
+    (save-excursion
+      (while (not (and (zerop (skip-syntax-forward "\w\_"))
+                       (zerop (skip-chars-forward "#:"))))
+        (setq end (point)))
+      (while (not (and (zerop (skip-syntax-backward "\w\_"))
+                       (zerop (skip-chars-backward "#:"))))
+        (setq start (point))))
+    (unless (= start end)
+      (cons start end))))
+
+(defvar yas-ri-history nil
+  "History of yas-ri queries.")
+(defvar yas-ri-executable "ri")
+(require 'ansi-color)
+(defun yas-ri (query)
+  (interactive (list (read-from-minibuffer "Ri query: "
+                                           (thing-at-point 'ruby-thing)
+                                           nil
+                                           nil
+                                           'ri-history)))
+  (with-current-buffer (get-buffer-create "*Ri*")
+    (setq buffer-read-only nil)
+    (erase-buffer)
+    (setq default-directory "~")
+    (setq buffer-read-only nil)
+    (shell-command (concat yas-ri-executable " -f ansi " query) "*Ri*")
+    (ansi-color-apply-on-region (point-min) (point-max))
+    (yas-ri-mode)
+    (display-buffer (current-buffer)))
+  t)
+
+(defun yas-ri-mode ()
+  "Mode for viewing Ruby documentation."
+  (buffer-disable-undo)
+  (kill-all-local-variables)
+  (local-set-key (kbd "q") 'quit-window)
+  (local-set-key (kbd "RET") 'yas-ri)
+  (setq mode-name "ri")
+  (setq major-mode 'yas-ri-mode)
+  (setq buffer-read-only t)
+  (run-hooks 'yas-ri-mode-hook))
+
+;; conditions
+;; 
+(yas-define-condition-cache yas-ruby-in-interpolated-string-p (member (fourth (syntax-ppss)) (list ?\" ?\`)))
+(yas-define-condition-cache yas-ruby-in-comment-p (fifth (syntax-ppss)))
+(yas-define-condition-cache yas-ruby-in-string-p (fourth (syntax-ppss)))
+(yas-define-condition-cache yas-ruby-end-is-block-end-p
+                            (save-excursion
+                              (ruby-backward-sexp)
+                              (not (eq (point) (point-min)))))
+
+(provide 'yas-ruby)
+
+;; My work in progress substitutions
+;;
+;; Substitutions for: content
+;;
+;; ${1/.+/(/}                                                                        =yyas> ${1:$(and (yas-text) "(")}
+;; ${1/.+/)/}                                                                        =yyas> ${1:$(and (yas-text) ")")}
+;; ${2/.+/ => /}                                                                     =yyas> ${2:$(and (yas-text) " => ")}
+;; ${1:${TM_FILENAME/\.\w+//}                                                        =yyas> ${1:$(and buffer-file-name (file-name-sans-extension buffer-file-name))}
+;; ${1/(^.*?\S.*)|.*/(?1:\()/}                                                       =yyas> ${1:$(and (string-match "[^\s\t]" yas-text) "(" )}
+;; ${1/(^.*?\S.*)|.*/(?1:\))/}                                                       =yyas> ${1:$(and (string-match "[^\s\t]" yas-text) ")" )}
+;; ${2/(^.*?\S.*)|.*/(?1:\()/}                                                       =yyas> ${2:$(and (string-match "[^\s\t]" yas-text) "(" )}
+;; ${2/(^.*?\S.*)|.*/(?1:\))/}                                                       =yyas> ${2:$(and (string-match "[^\s\t]" yas-text) ")" )}
+;; ${3/(^.*?\S.*)|.*/(?1:\()/}                                                       =yyas> ${3:$(and (string-match "[^\s\t]" yas-text) "(" )}
+;; ${3/(^.*?\S.*)|.*/(?1:\))/}                                                       =yyas> ${3:$(and (string-match "[^\s\t]" yas-text) ")" )}
+;; ${2/^\s*$|(.*\S.*)/(?1: )/}                                                       =yyas> ${2:$(and (string-match "[^\s\t]" yas-text) " " )}
+;; ${3/^\s*$|(.*\S.*)/(?1: )/}                                                       =yyas> ${3:$(and (string-match "[^\s\t]" yas-text) " " )}
+;; ${3/(^[rwab+]+$)|.*/(?1:, ")/}                                                    =yyas> ${3:$(and (string-match "^[rwab+]+$" yas-text) ", \\"" )}
+;; ${3/(^[rwab+]+$)|.*/(?1:")/}                                                      =yyas> ${3:$(and (string-match "^[rwab+]+$" yas-text) "\\"" )}
+;; ${3/^\s*$|(.*\S.*)/(?1:, )/}                                                      =yyas> ${3:$(and (string-match "[^\s\t]" (yas-text) ", ")}
+;; ${TM_SELECTED_TEXT/([\t ]*).*/$1/m}                                               =yyas>
+;; ${TM_SELECTED_TEXT/(\A.*)|(.+)|\n\z/(?1:$0:(?2:\t$0))/g}                          =yyas> `yas-selected-text`
+;; (yas-multi-line-unknown BF487539-8085-4FF4-8601-1AD20FABAEDC)                     =yyas> `(yas-ruby-infer-class-name)`
+;; (yas-multi-line-unknown 2B73EC5F-06D2-460C-A14F-6FA05AFCF0CC)                     =yyas> `(yas-ruby-infer-class-name)`
+;; 
+;; ${TM_FILENAME/(?:\A|_)([A-Za-z0-9]+)(?:\.rb)?/(?2::\u$1)/g}                       =yyas> `(yas-ruby-infer-class-name)`
+;; 
+;; ${1/(^(?<var>\s*[a-z_][a-zA-Z0-9_]*\s*)(,\g<var>)*,?\s*$)|.*/(?1:|)/}             =yyas> ${1:$(and (yas-text) "|")}
+;; ${1/(^(?<var>\s*[a-z_][a-zA-Z0-9_]*\s*)(,\g<var>)*,?\s*$)|.*/(?1: |)/}            =yyas> ${1:$(and (yas-text) " |")}
+;; ${1/(^(?<var>\s*[a-z_][a-zA-Z0-9_]*\s*)(,\g<var>)*,?\s*$)|.*/(?1:| )/}            =yyas> ${1:$(and (yas-text) "| ")}
+;;
+;; ${1/(^(?<var>\s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g<var>)*,?\s*$)|.*/(?1:|)/}   =yyas> ${1:$(and (yas-text) "|")}
+;; ${1/(^(?<var>\s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g<var>)*,?\s*$)|.*/(?1:| )/}  =yyas> ${1:$(and (yas-text) "| ")}
+;; ${2/(^(?<var>\s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g<var>)*,?\s*$)|.*/(?1:|)/}   =yyas> ${2:$(and (yas-text) "|")}
+;; ${2/(^(?<var>\s*(?:\*|\*?[a-z_])[a-zA-Z0-9_]*\s*)(,\g<var>)*,?\s*$)|.*/(?1:| )/}  =yyas> ${2:$(and (yas-text) "| ")}
+;; 
+;; ${1/([\w&&[^_]]+)|./\u$1/g}                                                       =yyas> ${1:$(replace-regexp-in-string "[_/]" "" (capitalize yas-text))}
+;;
+;; 7990EE60-C850-4779-A8C0-7FD2C853B99B               =yyas> (yas-ruby-toggle-single-multi-line-block)
+;; 7E084412-80E6-4B70-8092-C03D1ECE4CD2               =yyas> (yas-ruby-require "eac")(yas-expand-uuid 'ruby-mode "FDD73070-6D32-4301-A86A-C55B77C3D8ED")
+;; FBFC214F-B019-4967-95D2-028F374A3221               =yyas> (yas-ruby-pipe-through-xmpfilter)
+;; 63F3B3B7-CBE2-426B-B551-657733F3868B               =yyas> (call-interactively (if (featurep 'yari) 'yari 'yas-ri))
+
+;;
+;; `[[ $TM_LINE_INDEX != 0 ]] && echo; echo`                                         =yyas> `(concat (if (eq 0 current-line) "\n" "") "\n")`
+;; `snippet_paren.rb`                                                                =yyas> `yas-ruby-snippet-open-paren`
+;; `snippet_paren.rb end`                                                            =yyas> `yas-ruby-snippet-close-paren`
+;; ${TM_RUBY_SWITCHES: -wKU}                                                         =yyas> `yas-ruby-shebang-args`
+;; 
+;; Substitutions for: condition
+;;
+;; 7990EE60-C850-4779-A8C0-7FD2C853B99B                                              =yyas> 'force-in-comment
+;; FBFC214F-B019-4967-95D2-028F374A3221                                              =yyas> 'force-in-comment
+;; 88BC3896-DC39-4307-A271-21D33340F15A                                              =yyas> 'force-in-comment
+;; 0F940CBC-2173-49FF-B6FD-98A62863F8F2                                              =yyas> 'force-in-comment
+;; 451A0596-1F72-4AFB-AF2F-45900FABB0F7                                              =yyas> (not (yas-ruby-end-is-block-end-p))
+;; (string.quoted.double.ruby|string.interpolated.ruby) - string source              =yyas> (and (yas-ruby-in-interpolated-string-p) 'force-in-comment)
+;; text.html.ruby, text.html source.ruby                                             =yyas> (yas-unimplemented)
+;; text.html, source.yaml, meta.erb                                                  =yyas> (yas-unimplemented)
+;; keyword.control.start-block.ruby, meta.syntax.ruby.start-block                    =yyas>
+;; 
+;; Substitutions for: binding
+;;
+;; # as in Commands/New Method.yasnippet
+;; $\r                                                                               =yyas> C-c M-m
+;; ^W                                                                                =yyas> C-c M-w
+;; #                                                                                 =yyas> #
+;; ^{                                                                                =yyas> C-c M-{
+;; @R                                                                                =yyas> C-c M-R
+;; @r                                                                                =yyas> C-c M-r
+;; ^R                                                                                =yyas> C-c M-S-r
+;; @i                                                                                =yyas> s-i
+;; @b                                                                                =yyas> s-b
+;; ^@E                                                                               =yyas> C-c M-e
+;; ^:                                                                                =yyas> C-c M-:
+;; ^>                                                                                =yyas> C-c M->
+;; ^h                                                                                =yyas> C-c M-h
+;;
+;;
+;; # as in Commands/Enclose in + (RDoc comments).yasnippet
+;; @k                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Check Ruby Syntax.yasnippet
+;; ^V                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Omit from RDoc.yasnippet
+;; ^@O                                                                                        =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Enclose in (RDoc comments).yasnippet
+;; @b                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Snippets/hash pointer.yasnippet
+;; ^l                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Make Destructive Call.yasnippet
+;; ^!                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Toggle Quote Style.yasnippet
+;; ^"                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Open Require.yasnippet
+;; @D                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Execute Line with Ruby.yasnippet
+;; ^E                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Completion Ruby (rcodetools).yasnippet
+;; ~\e                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Delete forwardbackward.yasnippet
+;; \7f                                                                                          =yyas> (yas-unknown)
+;; 
+;; --**--
+;; Automatically generated code, do not edit this part
+;; 
+;; Translated menu
+;; 
+(yas-define-menu 'ruby-mode
+                 '(;; Ignoring Run
+                   (yas-ignore-item "35222962-C50D-4D58-A6AE-71E7AD980BE4")
+                   ;; Ignoring Run Focused Unit Test
+                   (yas-ignore-item "5289EE40-86B8-11D9-A8D4-000A95E13C98")
+                   ;; Ignoring Run Rake Task
+                   (yas-ignore-item "569C9822-8C41-4907-94C7-1A8A0031B66D")
+                   
+                   ;; Documentation for Word / Selection
+                   (yas-item "63F3B3B7-CBE2-426B-B551-657733F3868B")
+                   (yas-submenu "RDoc"
+                                (;; Ignoring Show for Current File / Project
+                                 (yas-ignore-item "1AD6A138-2E89-4D6A-AB3F-416BF9CE968D")
+                                 
+                                 (yas-submenu "Format"
+                                              (;; Ignoring Bold
+                                               (yas-ignore-item "931DD73E-615E-476E-9B0D-8341023AE730")
+                                               ;; Ignoring Italic
+                                               (yas-ignore-item "DAA69A0C-FC1E-4509-9931-DFFB38B4D6AE")
+                                               ;; Ignoring Typewriter
+                                               (yas-ignore-item "2DDB6FE0-6111-4C40-A149-8E67E76F8272")))
+                                 
+                                 ;; New Block
+                                 (yas-item "05984208-D559-4C04-A69C-2019361A985A")
+                                 ;; Ignoring Omit
+                                 (yas-ignore-item "BF4CA9F1-51CD-48D4-8357-852234F59046")
+                                 
+                                 ;; :yields:
+                                 (yas-item "ED6368FB-A11D-4622-9F42-7879481094F1")))
+                   (yas-separator)
+                   (yas-submenu "Rake"
+                                (;; namespace :name ... end
+                                 (yas-item "A3D89AAA-9156-4077-A026-37BB7358C3BA")
+                                 ;; namespace :name ... task :default ... end
+                                 (yas-item "2031FC41-CBD3-41CC-B9A9-7F068E607A05")
+                                 ;; desc ...
+                                 (yas-item "F686E1AD-B03D-45A6-BD51-6E3FD1298FE0")
+                                 ;; task :name ... end
+                                 (yas-item "CB81DA55-F3BC-4BFB-B0C5-29F0EE6F8081")
+                                 ;; desc ... task :name ... end
+                                 (yas-item "FE9A8EDA-C243-4068-8F38-A615B82D08C9")
+                                 ;; Ignoring Rake/Sake task using file path
+                                 (yas-ignore-item "E07FF68B-C87D-4332-8477-D026929FDADA")))
+                   (yas-separator)
+                   ;; Ignoring Open Require
+                   (yas-ignore-item "8646378E-91F5-4771-AC7C-43FC49A93576")
+                   ;; Ignoring Validate Syntax
+                   (yas-ignore-item "EE5F19BA-6C02-11D9-92BA-0011242E4184")
+                   
+                   ;; Ignoring Execute Line / Selection as Ruby
+                   (yas-ignore-item "EE5F1FB2-6C02-11D9-92BA-0011242E4184")
+                   ;; Execute and Update ‘# =>’ Markers
+                   (yas-item "FBFC214F-B019-4967-95D2-028F374A3221")
+                   ;; Add ‘# =>’ Marker
+                   (yas-item "88BC3896-DC39-4307-A271-21D33340F15A")
+                   (yas-separator)
+                   ;; Ignoring Insert Missing Requires
+                   (yas-ignore-item "9FB64639-F776-499B-BA6F-BB45F86F80FD")
+                   ;; Ignoring Add ! to Method in Line / Selection
+                   (yas-ignore-item "7F79BC8D-8A4F-4570-973B-05DFEC25747F")
+                   ;; Ignoring Toggle String / Symbol
+                   (yas-ignore-item "B297E4B8-A8FF-49CE-B9C4-6D4911724D43")
+                   ;; Insert ERb’s <% .. %> or <%= .. %>
+                   (yas-item "FDFABCB9-DF58-4469-AE11-5407A4FF4D70")
+                   (yas-separator)
+                   (yas-submenu "Declarations"
+                                (;; begin … rescue … end
+                                 (yas-item "0F940CBC-2173-49FF-B6FD-98A62863F8F2")
+                                 ;; case … end
+                                 (yas-item "667083EE-62C3-11D9-B8CF-000D93589AF6")
+                                 ;; when …
+                                 (yas-item "48D8E498-C9A5-4B1B-9A18-71A5860276FB")
+                                 ;; if … end
+                                 (yas-item "6670835F-62C3-11D9-B8CF-000D93589AF6")
+                                 ;; if … else … end
+                                 (yas-item "667082E6-62C3-11D9-B8CF-000D93589AF6")
+                                 ;; elsif ...
+                                 (yas-item "CD1609FA-47DA-4EE4-9C5B-5C56D953F5B1")
+                                 ;; unless … end
+                                 (yas-item "F53E098D-D08E-4CE2-990A-B0BD70E60614")
+                                 ;; while ... end
+                                 (yas-item "D121FC61-96A4-4B8F-8709-280EDA876FF3")
+                                 ;; until ... end
+                                 (yas-item "488B387C-50C0-4B2D-9260-5A7E7EAF9B42")
+                                 (yas-separator)
+                                 (yas-submenu "Classes and Modules"
+                                              (;; class .. end
+                                               (yas-item "BF487539-8085-4FF4-8601-1AD20FABAEDC")
+                                               ;; class .. initialize .. end
+                                               (yas-item "83EED068-8C1C-4BAF-9893-902DC00616AB")
+                                               ;; class .. < ParentClass .. initialize .. end
+                                               (yas-item "0CCBE04E-F4E2-4E55-9506-7DE67ACF8388")
+                                               ;; ClassName = Struct .. do .. end
+                                               (yas-item "05DFF82C-5A29-4EBD-93FE-C165FFFB5EA8")
+                                               ;; class BlankSlate .. initialize .. end
+                                               (yas-item "E98FB8F9-7302-431D-8BF2-275A68A6126C")
+                                               ;; Ignoring class .. < DelegateClass .. initialize .. end
+                                               (yas-ignore-item "121B334B-2AA6-4E9A-A8B8-BF93B627982B")
+                                               ;; class .. < DelegateClass .. initialize .. end
+                                               (yas-item "AFE1D078-EA16-45F5-AD8A-FAC1B523D861")
+                                               ;; class << self .. end
+                                               (yas-item "C7AAAE45-487A-4B61-8962-D47675AAC05F")
+                                               (yas-separator)
+                                               ;; module .. end
+                                               (yas-item "2B73EC5F-06D2-460C-A14F-6FA05AFCF0CC")
+                                               ;; module .. module_function .. end
+                                               (yas-item "0E85EC81-2FAB-4648-B590-119CC1BB6E41")
+                                               ;; module .. ClassMethods .. end
+                                               (yas-item "A71A18CF-2D71-4BFF-AA0C-D9B8C59BC4EB")))
+                                 (yas-submenu "Methods"
+                                              (;; Ignoring New Method
+                                               (yas-ignore-item "0275EF39-9357-408F-AF20-79E415CA9504")
+                                               
+                                               ;; attr_reader ..
+                                               (yas-item "A150C2D8-25B3-4339-BC92-8A0160A70486")
+                                               ;; attr_writer ..
+                                               (yas-item "3D383096-A03F-4EF8-9060-3C727045AB34")
+                                               ;; attr_accessor ..
+                                               (yas-item "D7A7D3C9-1714-4C50-8CC0-D83A03883E8F")
+                                               (yas-separator)
+                                               ;; include Enumerable ..
+                                               (yas-item "AAD5D511-6BE7-41DA-8F2B-1593A48FBB08")
+                                               ;; include Comparable ..
+                                               (yas-item "6C9D6B3D-D8E9-4606-9534-577C8D21FFF6")
+                                               (yas-separator)
+                                               ;; Ignoring extend Forwardable
+                                               (yas-ignore-item "58FDEA60-10AF-4C49-AA09-29B77030DB25")
+                                               ;; extend Forwardable
+                                               (yas-item "7F46C90A-595B-4B83-A4F7-058F63CE4218")
+                                               (yas-separator)
+                                               ;; def … end
+                                               (yas-item "4E9A7A73-875C-11D9-897C-000393CBCE2E")
+                                               ;; def self .. end
+                                               (yas-item "7C6E88FA-CA0E-4110-8C75-A94E54286A75")
+                                               ;; def method_missing .. end
+                                               (yas-item "87D5F8AD-8DA6-4AED-A0D8-B51CAC980445")
+                                               ;; def_delegator ..
+                                               (yas-item "C44ED391-614F-4BA2-BB0F-87668EEA9954")
+                                               ;; def_delegators ..
+                                               (yas-item "4A6EFD6B-88E2-4822-AD48-03460EDBC796")
+                                               (yas-separator)
+                                               ;; alias_method ..
+                                               (yas-item "988C8AEF-FC71-4455-9C4F-9338C05685A4")))
+                                 ;; __END__
+                                 (yas-item "451A0596-1F72-4AFB-AF2F-45900FABB0F7")
+                                 (yas-separator)
+                                 ;; #!/usr/bin/env ruby -wKU
+                                 (yas-item "A05CBDD6-845D-45EB-94FB-F8787F5456BE")
+                                 ;; require ".."
+                                 (yas-item "97DE939B-D243-4D5C-B953-1C9090912E7C")
+                                 ;; application { .. }
+                                 (yas-item "E16D24D2-CC7E-4786-BE0B-1725FC865D78")
+                                 ;; usage_if()
+                                 (yas-item "21C0D711-F32A-4665-AA0D-B136F9DD3945")
+                                 ;; usage_unless()
+                                 (yas-item "49D69DEC-6991-49F4-8D9B-BA60BFDD3D17")))
+                   (yas-submenu "Iterators"
+                                ((yas-submenu "Arrays"
+                                              (;; Array.new(10) { |i| .. }
+                                               (yas-item "DAE6A754-D906-4763-B816-CE67125CEF08")
+                                               (yas-separator)
+                                               ;; delete_if { |e| .. }
+                                               (yas-item "263C94DC-63CF-4BA3-9692-C5582CA8F1AB")
+                                               ;; fill(range) { |i| .. }
+                                               (yas-item "6021BBDC-4AAD-447B-A0C2-A4BB31721558")
+                                               ;; flatten_once()
+                                               (yas-item "3DDB99C4-486D-4C11-A217-5680FDD8EC19")
+                                               ;; zip(enums) { |row| .. }
+                                               (yas-item "FD010022-E0E7-44DB-827F-33F7D9310DA2")))
+                                 (yas-submenu "Counting"
+                                              (;; downto(0) { |n| .. }
+                                               (yas-item "4991BB86-736E-4758-B9B2-E4FA90B9368F")
+                                               ;; step(2) { |e| .. }
+                                               (yas-item "36853A11-0307-4AE7-B835-7CE6358717A5")
+                                               ;; times { |n| .. }
+                                               (yas-item "206D54AF-E67A-4DF0-B7F4-3D42FEB81685")
+                                               ;; upto(1.0/0.0) { |n| .. }
+                                               (yas-item "51954118-81D7-42B6-9A10-BE23D8B9FFE2")
+                                               (yas-separator)
+                                               ;; loop { .. }
+                                               (yas-item "567E3D18-BF2B-4379-8927-2777EC9F495E")))
+                                 (yas-submenu "Each Element"
+                                              (;; each { |e| .. }
+                                               (yas-item "ECBA4CA0-275F-460E-85BE-E82FEA2E2B26")
+                                               ;; each_byte { |byte| .. }
+                                               (yas-item "338EC03D-3FF4-4435-94E8-1CEF20CEC75D")
+                                               ;; each_char { |chr| .. }
+                                               (yas-item "7E084412-80E6-4B70-8092-C03D1ECE4CD2")
+                                               ;; each_char { |chr| .. }
+                                               (yas-item "FDD73070-6D32-4301-A86A-C55B77C3D8ED")
+                                               ;; Ignoring each_cons(..) { |group| .. }
+                                               (yas-ignore-item "EC73D5CC-5F05-46B9-A6F4-82037E4A38C9")
+                                               ;; each_cons(..) { |group| .. }
+                                               (yas-item "3C04589C-5127-478E-97B3-CA7DD2EA7ECD")
+                                               ;; each_index { |i| .. }
+                                               (yas-item "689120C9-AB40-4081-8268-9362E00FA4A0")
+                                               ;; each_key { |key| .. }
+                                               (yas-item "E54F7077-3C33-4B53-A4F7-21E16132D3AD")
+                                               ;; each_line { |line| .. }
+                                               (yas-item "02913388-EE8E-4C55-AC94-94F3D751F47E")
+                                               ;; each_pair { |name, val| .. }
+                                               (yas-item "7A3CECED-452B-438E-A5C6-95B6BDC43243")
+                                               ;; Ignoring each_slice(..) { |group| .. }
+                                               (yas-ignore-item "825B721D-4367-4DF7-98C0-F005695DF9E3")
+                                               ;; each_slice(..) { |group| .. }
+                                               (yas-item "CD748479-D2A4-4AB5-95BD-4C89512BA210")
+                                               ;; each_value { |val| .. }
+                                               (yas-item "844DBD70-BC23-4FBF-9C18-F4A610239DF2")
+                                               ;; each_with_index { |e, i| .. }
+                                               (yas-item "1DD13CF5-39C0-4F10-B655-56DACEBC7F94")
+                                               ;; reverse_each { |e| .. }
+                                               (yas-item "F3C5F719-EF03-4FF7-A777-4A8402FE3B6B")
+                                               (yas-separator)
+                                               ;; inject(init) { |mem, var| .. }
+                                               (yas-item "B563E0D7-513D-49B4-9733-1B04A6F25A74")
+                                               (yas-separator)
+                                               ;; map { |e| .. }
+                                               (yas-item "5A3754FC-43A3-462B-AB42-E3E951872E6F")
+                                               ;; Ignoring map_with_index { |e, i| .. }
+                                               (yas-ignore-item "BFB65D1C-62F1-485D-8A67-3E5A2E55107C")
+                                               ;; map_with_index { |e, i| .. }
+                                               (yas-item "BD4CFD7B-1AC0-4569-9BDA-FD491F41F4E6")))
+                                 (yas-submenu "Files"
+                                              (;; Dir.glob("..") { |file| .. }
+                                               (yas-item "332AA973-AA71-48CB-AEE9-1D71E11019AC")
+                                               ;; File.foreach ("..") { |line| .. }
+                                               (yas-item "8F594E5E-6F46-4E98-B5FB-1C8F3BA9828F")
+                                               ;; open("path/or/url", "w") { |io| .. }
+                                               (yas-item "418F1817-255F-430A-B09A-222964ED66A7")
+                                               ;; unix_filter { .. }
+                                               (yas-item "8CEF9711-88D5-4202-AFB9-29EF4EFD25C1")
+                                               (yas-separator)
+                                               ;; option_parse { .. }
+                                               (yas-item "C3C48948-4F49-484E-A8DE-DEB44723099E")
+                                               ;; option(..)
+                                               (yas-item "209D5D73-7A77-4931-A158-3FB6D5B48A88")))
+                                 (yas-submenu "Ordering"
+                                              (;; sort { |a, b| .. }
+                                               (yas-item "9E0B4D4B-2956-4B3A-800A-3D8CE54E66BF")
+                                               ;; sort_by { |e| .. }
+                                               (yas-item "BA9440C9-36C3-4031-BB61-67B581D5B179")
+                                               (yas-separator)
+                                               ;; randomize()
+                                               (yas-item "B0CE57EC-FB2E-4482-8CCE-448DC2588715")))
+                                 (yas-submenu "Searching and Selection"
+                                              (;; all? { |e| .. }
+                                               (yas-item "07D1F987-7CDB-4EAD-B64A-27A93051700E")
+                                               ;; any? { |e| .. }
+                                               (yas-item "A3B9B76B-2BC5-425C-AB24-9FAAFC375798")
+                                               ;; classify { |e| .. }
+                                               (yas-item "5DA9E1E8-2C54-420A-9B84-B040A1AF2B9E")
+                                               ;; collect { |e| .. }
+                                               (yas-item "669A86AD-936F-4EDA-8E4E-6863804072DA")
+                                               ;; detect { |e| .. }
+                                               (yas-item "6C6B9849-9631-49FF-A9F9-F0E94A1512C5")
+                                               ;; fetch(name) { |key| .. }
+                                               (yas-item "1F72122A-35AD-4BA1-AA01-889A10319666")
+                                               ;; find { |e| .. }
+                                               (yas-item "E23FE534-8061-4828-98A5-46270B6910B0")
+                                               ;; find_all { |e| .. }
+                                               (yas-item "197709C5-8382-4A59-B6D7-31A0CC0F23B7")
+                                               ;; grep(/pattern/) { |match| .. }
+                                               (yas-item "9D9E7BA3-8C5D-4532-83EA-326358C2F5BB")
+                                               ;; max { |a, b| .. }
+                                               (yas-item "98182B9E-7C61-4824-BE4C-9CD69C816037")
+                                               ;; min { |a, b| .. }
+                                               (yas-item "CB03D11A-7204-48D0-92C1-E109034403E7")
+                                               ;; partition { |e| .. }
+                                               (yas-item "52B8BF63-F09E-4789-8407-06168A8AE666")
+                                               ;; reject { |e| .. }
+                                               (yas-item "B79B9DAB-ABEF-44F6-BF7E-635E7BA11DFD")
+                                               ;; select { |e| .. }
+                                               (yas-item "4E409AA4-E7D4-46B7-A4E9-E32F992B33E9")))
+                                 (yas-submenu "Strings"
+                                              (;; sub(/../) { |match| .. }
+                                               (yas-item "8021944C-CEA4-4983-8D1C-78D18D4004A1")
+                                               ;; gsub(/../) { |match| .. }
+                                               (yas-item "2514FC26-468C-4D08-A788-494A444C4286")
+                                               (yas-separator)
+                                               ;; scan(/../) { |match| .. }
+                                               (yas-item "66802933-B49F-479B-9DF9-1D898FF1FA90")))))
+                   (yas-submenu "Blocks"
+                                (;; Toggle ‘do … end’ / ‘{ … }’
+                                 (yas-item "7990EE60-C850-4779-A8C0-7FD2C853B99B")
+                                 (yas-separator)
+                                 ;; Insert { |variable| … }
+                                 (yas-item "855FC4EF-7B1E-48EE-AD4E-5ECB8ED79D1C")
+                                 ;; Insert do |variable| … end
+                                 (yas-item "4B72C5C3-6CA7-41AC-B2F9-51DEA25D469E")
+                                 (yas-separator)
+                                 ;; lambda { |args| .. }
+                                 (yas-item "21E75321-0CF7-45E8-A297-BCC7C0DDDD15")))
+                   (yas-submenu "Hashes"
+                                (;; Hash.new { |hash, key| hash[key] = .. }
+                                 (yas-item "E16EE658-1CA0-4950-954B-B962E50B754F")
+                                 (yas-separator)
+                                 ;; Hash Pair — :key => "value"
+                                 (yas-item "840B9C4C-7037-4C3B-9028-EB9DC75EDB3E")
+                                 ;; Hash Pointer — =>
+                                 (yas-item "B9E3A6DF-875D-11D9-897C-000393CBCE2E")))
+                   (yas-submenu "Tests"
+                                (;; class .. < Test::Unit::TestCase .. end
+                                 (yas-item "31D1F145-33AB-4441-BA11-4D1C46928C4C")
+                                 ;; def test_ .. end
+                                 (yas-item "00F66D41-25AF-4597-B67D-E540965A5222")
+                                 ;; require "tc_.." ..
+                                 (yas-item "5297FD0C-98B1-4514-BBD1-1516810BECA6")
+                                 (yas-separator)
+                                 ;; assert(..)
+                                 (yas-item "B32C147D-44A6-478A-9D5D-189D7831E9A7")
+                                 ;; assert_equal(..)
+                                 (yas-item "43A61A22-6BEE-4997-961C-1CDE739C05FE")
+                                 ;; assert_not_equal(..)
+                                 (yas-item "A243E96F-DC21-4AA0-B340-13A7674F6AFF")
+                                 ;; assert_in_delta(..)
+                                 (yas-item "429D0EF5-580D-4166-8F79-713DE96B77F1")
+                                 ;; assert_instance_of(..)
+                                 (yas-item "0E831E03-67E1-4357-8323-C60685C23C4F")
+                                 ;; assert_kind_of(..)
+                                 (yas-item "671F05E2-D9CC-485E-BB1B-B13EF20FAC65")
+                                 ;; assert_nil(..)
+                                 (yas-item "4C79256C-480A-459C-BDE8-BB0D972811DB")
+                                 ;; assert_not_nil(..)
+                                 (yas-item "79FEC3CC-2A40-4611-9A85-ECDB22FE0701")
+                                 ;; assert_match(..)
+                                 (yas-item "711ED6C3-0F18-41FB-9A7D-3094BB319A85")
+                                 ;; assert_no_match(..)
+                                 (yas-item "A072BB1E-1DD1-45D3-9346-8CA3BA21B364")
+                                 ;; assert_operator(..)
+                                 (yas-item "1B925A4D-8EE4-442B-9254-293599F5717F")
+                                 ;; assert_raise(..) { .. }
+                                 (yas-item "68B21F6F-5D89-41FA-A19C-F29C2F912B4E")
+                                 ;; assert_nothing_raised(..) { .. }
+                                 (yas-item "82F8EEE0-2452-411E-8102-7BFDDBCA2E72")
+                                 ;; assert_respond_to(..)
+                                 (yas-item "09A11FDA-49FC-4466-8787-8D1D5D111A89")
+                                 ;; assert_same(..)
+                                 (yas-item "29340695-E426-4F77-8CF7-C59360A549F4")
+                                 ;; assert_not_same(..)
+                                 (yas-item "F91C25EC-EC76-498B-BFB5-FDA8F57C5875")
+                                 ;; assert_send(..)
+                                 (yas-item "7850AD5C-A90D-4E2C-A931-EADFF8D3D9A3")
+                                 ;; assert_throws(..) { .. }
+                                 (yas-item "05655BD8-23C6-445F-BFD1-420BF25C3030")
+                                 ;; assert_nothing_thrown { .. }
+                                 (yas-item "33639D7A-BD8C-4396-9C44-307B8AC87C9E")
+                                 ;; flunk(..)
+                                 (yas-item "DB457094-1AC9-4856-AEFC-43A9576B6775")
+                                 (yas-separator)
+                                 ;; Ignoring Benchmark.bmbm do .. end
+                                 (yas-ignore-item "C649F945-DAB8-4DA2-B73C-2EFF9D7D34F3")
+                                 ;; Benchmark.bmbm do .. end
+                                 (yas-item "942F20E2-C40A-44B8-A3F2-99AAC68CB534")
+                                 ;; results.report(..) { .. }
+                                 (yas-item "1C60D589-DD46-4109-90CA-6B34AEA2F298")))
+                   (yas-submenu "Serialization"
+                                (;; Marshal.dump(.., file)
+                                 (yas-item "0CB48BCA-3F6E-4AE0-85BC-08A1D2508216")
+                                 ;; Marshal.load(obj)
+                                 (yas-item "20AAD0BC-075D-4EC0-9057-E3E5E62C4125")
+                                 (yas-separator)
+                                 ;; Ignoring PStore.new( .. )
+                                 (yas-ignore-item "5AE7CFB4-418E-4E00-AD76-06DB755EE876")
+                                 ;; PStore.new( .. )
+                                 (yas-item "5B46ECFD-23A4-4F0C-9951-F64C19C72C2B")
+                                 ;; transaction( .. ) { .. }
+                                 (yas-item "46BF99AD-E172-4D49-BCF7-072F4730E1D9")
+                                 (yas-separator)
+                                 ;; Ignoring YAML.dump(.., file)
+                                 (yas-ignore-item "9460392B-C036-4A76-A5AE-1191F10E4B1B")
+                                 ;; YAML.dump(.., file)
+                                 (yas-item "3BA6762A-BB6B-489E-8006-F30F386AEF48")
+                                 ;; Ignoring YAML.load(file)
+                                 (yas-ignore-item "2C07D4E7-D74F-4AE4-82BE-B0BA82247AFA")
+                                 ;; YAML.load(file)
+                                 (yas-item "8343ACF4-EEB7-44B5-B835-94826466D4D5")
+                                 (yas-separator)
+                                 ;; Ignoring xmlread(..)
+                                 (yas-ignore-item "F6BF907E-FDF7-4D9B-9E57-BE159561349D")
+                                 ;; xmlread(..)
+                                 (yas-item "B904D4AA-D15D-48A4-8EB2-563BAF489332")
+                                 ;; xpath(..) { .. }
+                                 (yas-item "CC300D44-6C3F-4F6C-A8AB-86F5A2DC57CF")))
+                   (yas-submenu "Idioms"
+                                (;; class_from_name()
+                                 (yas-item "2DBEE50B-3097-4A57-AB48-3586CF392D8B")
+                                 ;; deep_copy(..)
+                                 (yas-item "0BA2B2F1-E767-4A03-9791-0AC0183251F1")
+                                 ;; path_from_here( .. )
+                                 (yas-item "A4E89D97-D5ED-48BB-B5FF-1BFB79211FCD")
+                                 ;; singleton_class()
+                                 (yas-item "B46D35B8-5DEB-4C10-A110-BA1965A2EB9C")
+                                 ;; Ignoring word_wrap()
+                                 (yas-ignore-item "97054C4D-E4A3-45B1-9C00-B82DBCB30CAD")))
+                   (yas-submenu "File"
+                                (;; require File.dirname(__FILE__) + "/.."
+                                 (yas-item "7C42D878-FD0F-4181-A71A-57A091C0154A")
+                                 (yas-separator)
+                                 ;; File.dirname(__FILE__)
+                                 (yas-item "16920DC1-6FA6-48C8-90C5-C19E2C734303")
+                                 (yas-separator)
+                                 ;; File.read(filename)
+                                 (yas-item "FAFE9F5C-BF9C-4416-8623-2CB8EBC31B3C")
+                                 ;; File.open(filename, 'r') { |f| f.read }
+                                 (yas-item "005EB926-4BFE-4BFA-93B2-C9030636289C")))
+                   ;; class .. < Test::Unit::TestCase with test_helper
+                   (yas-item "228CAB3A-E221-4727-B430-31E94F76C9D3"))
+                    '("E5158F94-CC52-4424-A495-14EF9272653F"
+                       "EEE6D060-C5A0-400D-A2E0-0835013C5365"
+                       "76FCF165-54CB-4213-BC55-BD60B9C6A3EC"
+                       "6519CB08-8326-4B77-A251-54722FFBFC1F"
+                       "835FAAC6-5431-436C-998B-241F7226B99B"
+                       "A83F68A9-F751-4BB4-AE16-56812878C16A"
+                       "47D203ED-EB9B-4653-A07B-A897800CEB76"
+                       "47D203ED-EB9B-4653-A07B-A897800CEB76"
+                       "931DD73E-615E-476E-9B0D-8341023AE730"
+                       "2DDB6FE0-6111-4C40-A149-8E67E76F8272"
+                       "DAA69A0C-FC1E-4509-9931-DFFB38B4D6AE"
+                       "BF4CA9F1-51CD-48D4-8357-852234F59046"
+                       "8646378E-91F5-4771-AC7C-43FC49A93576"
+                       "E07FF68B-C87D-4332-8477-D026929FDADA"
+                       "569C9822-8C41-4907-94C7-1A8A0031B66D"
+                       "35222962-C50D-4D58-A6AE-71E7AD980BE4"
+                       "835FAAC6-5431-436C-998B-241F7226B99B"
+                       "B297E4B8-A8FF-49CE-B9C4-6D4911724D43"
+                       "E0E058FC-0DC3-4872-A1C2-0B1A322A0CF5"
+                       "B3875596-723C-41EE-9E6F-F84930C3B568"
+                       "76FCF165-54CB-4213-BC55-BD60B9C6A3EC"
+                       "EE5F19BA-6C02-11D9-92BA-0011242E4184"
+                       "EE5F1FB2-6C02-11D9-92BA-0011242E4184"
+                       "9FB64639-F776-499B-BA6F-BB45F86F80FD"
+                       "7F79BC8D-8A4F-4570-973B-05DFEC25747F"
+                       "0275EF39-9357-408F-AF20-79E415CA9504"
+                       "5289EE40-86B8-11D9-A8D4-000A95E13C98"
+                       "1AD6A138-2E89-4D6A-AB3F-416BF9CE968D"
+                       "6519CB08-8326-4B77-A251-54722FFBFC1F"
+                       "97054C4D-E4A3-45B1-9C00-B82DBCB30CAD"
+                       "E5158F94-CC52-4424-A495-14EF9272653F"
+                       "9460392B-C036-4A76-A5AE-1191F10E4B1B"
+                       "2C07D4E7-D74F-4AE4-82BE-B0BA82247AFA"
+                       "121B334B-2AA6-4E9A-A8B8-BF93B627982B"
+                       "EC73D5CC-5F05-46B9-A6F4-82037E4A38C9"
+                       "825B721D-4367-4DF7-98C0-F005695DF9E3"
+                       "58FDEA60-10AF-4C49-AA09-29B77030DB25"
+                       "BFB65D1C-62F1-485D-8A67-3E5A2E55107C"
+                       "C649F945-DAB8-4DA2-B73C-2EFF9D7D34F3"
+                       "A83F68A9-F751-4BB4-AE16-56812878C16A"
+                       "5AE7CFB4-418E-4E00-AD76-06DB755EE876"
+                       "F6BF907E-FDF7-4D9B-9E57-BE159561349D"))
+
+;; Unknown substitutions
+;; 
+;; Substitutions for: content
+;; 
+;; # as in Snippets/open yield block ({).yasnippet
+;; `yas-selected-text`                                                                        =yyas> (yas-unknown)
+;; 
+;; # as in Snippets/RDoc documentation block.yasnippet
+;; `(concat (if (eq 0 current-line) "\n" "") "\n")`                                           =yyas> (yas-unknown)
+;; 
+;; # as in Snippets/flunk(..) (fl).yasnippet
+;; `yas-ruby-snippet-open-paren`                                                              =yyas> (yas-unknown)
+;; 
+;; # as in Snippets/flunk(..) (fl).yasnippet
+;; `yas-ruby-snippet-close-paren`                                                             =yyas> (yas-unknown)
+;; 
+;; # as in Snippets/class __ TestUnitTestCase with test_helper.yasnippet
+;; (yas-multi-line-unknown 228CAB3A-E221-4727-B430-31E94F76C9D3)                              =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Completion Ruby (rcodetools).yasnippet
+;; 47D203ED-EB9B-4653-A07B-A897800CEB76                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Enclose in (RDoc comments).yasnippet
+;; 931DD73E-615E-476E-9B0D-8341023AE730                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Enclose in + (RDoc comments).yasnippet
+;; 2DDB6FE0-6111-4C40-A149-8E67E76F8272                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Enclose in _ (RDoc comments).yasnippet
+;; DAA69A0C-FC1E-4509-9931-DFFB38B4D6AE                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Omit from RDoc.yasnippet
+;; BF4CA9F1-51CD-48D4-8357-852234F59046                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Open Require.yasnippet
+;; 8646378E-91F5-4771-AC7C-43FC49A93576                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/RakeSake task using file path.yasnippet
+;; E07FF68B-C87D-4332-8477-D026929FDADA                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Run Rake Task.yasnippet
+;; 569C9822-8C41-4907-94C7-1A8A0031B66D                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Run.yasnippet
+;; 35222962-C50D-4D58-A6AE-71E7AD980BE4                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Toggle ERb Tags.yasnippet
+;; 835FAAC6-5431-436C-998B-241F7226B99B                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Toggle StringSymbol.yasnippet
+;; B297E4B8-A8FF-49CE-B9C4-6D4911724D43                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Validate and Save.yasnippet
+;; E0E058FC-0DC3-4872-A1C2-0B1A322A0CF5                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/gsub - remove whitespace from front of line.yasnippet
+;; B3875596-723C-41EE-9E6F-F84930C3B568                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Check ERB Syntax.yasnippet
+;; 76FCF165-54CB-4213-BC55-BD60B9C6A3EC                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Check Ruby Syntax.yasnippet
+;; EE5F19BA-6C02-11D9-92BA-0011242E4184                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Execute Line with Ruby.yasnippet
+;; EE5F1FB2-6C02-11D9-92BA-0011242E4184                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Insert Missing Requires.yasnippet
+;; 9FB64639-F776-499B-BA6F-BB45F86F80FD                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Make Destructive Call.yasnippet
+;; 7F79BC8D-8A4F-4570-973B-05DFEC25747F                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/New Method.yasnippet
+;; 0275EF39-9357-408F-AF20-79E415CA9504                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Run focused unit test.yasnippet
+;; 5289EE40-86B8-11D9-A8D4-000A95E13C98                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Show RDoc for this file.yasnippet
+;; 1AD6A138-2E89-4D6A-AB3F-416BF9CE968D                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Toggle Quote Style.yasnippet
+;; 6519CB08-8326-4B77-A251-54722FFBFC1F                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Commands/word_wrap() (worw).yasnippet
+;; 97054C4D-E4A3-45B1-9C00-B82DBCB30CAD                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Overwrite } in #{ .. }.yasnippet
+;; E5158F94-CC52-4424-A495-14EF9272653F                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/YAML.dump(.., file) (Yd).yasnippet
+;; 9460392B-C036-4A76-A5AE-1191F10E4B1B                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/YAML.load(file) (Yl).yasnippet
+;; 2C07D4E7-D74F-4AE4-82BE-B0BA82247AFA                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/class .. DelegateClass .. initialize .. end (class).yasnippet
+;; 121B334B-2AA6-4E9A-A8B8-BF93B627982B                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/each_cons(..) { group .. } (eac).yasnippet
+;; EC73D5CC-5F05-46B9-A6F4-82037E4A38C9                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/each_slice(..) { group .. } (eas).yasnippet
+;; 825B721D-4367-4DF7-98C0-F005695DF9E3                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/extend Forwardable (Forw).yasnippet
+;; 58FDEA60-10AF-4C49-AA09-29B77030DB25                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/map_with_index { e, i .. } (mapwi).yasnippet
+;; BFB65D1C-62F1-485D-8A67-3E5A2E55107C                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Snippets/class .. TestUnitTestCase .. end (tc).yasnippet
+;; (yas-multi-line-unknown 31D1F145-33AB-4441-BA11-4D1C46928C4C)                              =yyas> (yas-unknown)
+;; 
+;; # as in Snippets/module .. end.yasnippet
+;; `(yas-ruby-infer-class-name)`                                                              =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Benchmark_bmbm(__) do __ end.yasnippet
+;; C649F945-DAB8-4DA2-B73C-2EFF9D7D34F3                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Delete forwardbackward.yasnippet
+;; A83F68A9-F751-4BB4-AE16-56812878C16A                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/PStore_new( __ ).yasnippet
+;; 5AE7CFB4-418E-4E00-AD76-06DB755EE876                                                       =yyas> (yas-unknown)
+;; 
+;; # as in Macros/xmlread(__).yasnippet
+;; F6BF907E-FDF7-4D9B-9E57-BE159561349D                                                       =yyas> (yas-unknown)
+;; 
+;; 
+
+;; Substitutions for: condition
+;; 
+;; # as in Macros/xmlread(__).yasnippet
+;;                                                                                            =yyas> (yas-unknown)
+;; 
+;; # as in Snippets/Insert ERb's __ or = __.yasnippet
+;; text.html, source.yaml                                                                     =yyas> (yas-unknown)
+;; 
+;; 
+
+;; Substitutions for: binding
+;; 
+;; # as in Commands/Completion Ruby (rcodetools).yasnippet
+;; ~\e                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Enclose in + (RDoc comments).yasnippet
+;; @k                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Omit from RDoc.yasnippet
+;; ^@O                                                                                        =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Open Require.yasnippet
+;; @D                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Validate and Save.yasnippet
+;; @s                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Check Ruby Syntax.yasnippet
+;; ^V                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Execute Line with Ruby.yasnippet
+;; ^E                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Make Destructive Call.yasnippet
+;; ^!                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Commands/Toggle Quote Style.yasnippet
+;; ^"                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Overwrite } in #{ .. }.yasnippet
+;; }                                                                                          =yyas> (yas-unknown)
+;; 
+;; # as in Snippets/hash pointer.yasnippet
+;; ^l                                                                                         =yyas> (yas-unknown)
+;; 
+;; # as in Macros/Delete forwardbackward.yasnippet
+;; \7f                                                                                          =yyas> (yas-unknown)
+;; 
+;; 
+
+;; .yas-setup.el for ruby-mode ends here
diff --git a/packages/yasnippet/extras/textmate_import.rb b/packages/yasnippet/extras/textmate_import.rb
new file mode 100755 (executable)
index 0000000..f1ef769
--- /dev/null
@@ -0,0 +1,468 @@
+#!/usr/bin/env ruby
+# -*- coding: utf-8 -*-
+# textmate_import.rb --- import textmate snippets
+#
+# Copyright (C) 2009 Rob Christie, 2010 João Távora
+#
+# This is a quick script to generate YASnippets from TextMate Snippets.
+#
+# I based the script off of a python script of a similar nature by
+# Jeff Wheeler: http://nokrev.com
+# http://code.nokrev.com/?p=snippet-copier.git;a=blob_plain;f=snippet_copier.py
+#
+# Use textmate_import.rb --help to get usage information.
+
+require 'rubygems'
+require 'plist'
+require 'trollop'
+require 'fileutils'
+require 'shellwords' # String#shellescape
+require 'ruby-debug' if $DEBUG
+
+Encoding.default_external = Encoding::UTF_8 if RUBY_VERSION > '1.8.7'
+
+opts = Trollop::options do
+  opt :bundle_dir, "TextMate bundle directory", :short => '-d', :type => :string
+  opt :output_dir, "Output directory", :short => '-o', :type => :string
+  opt :glob, "Specific snippet file (or glob) inside <bundle_dir>", :short => '-g', :default => '*.{tmSnippet,tmCommand,plist,tmMacro}'
+  opt :pretty, 'Pretty prints multiple snippets when printing to standard out', :short => '-p'
+  opt :quiet, "Be quiet", :short => '-q'
+  opt :plist_file, "Use a specific plist file to derive menu information from", :type => :string
+end
+Trollop::die :bundle_dir, "must be provided" unless opts.bundle_dir
+Trollop::die :bundle_dir, "must exist" unless File.directory? opts.bundle_dir
+
+Trollop::die :output_dir, "must be provided" unless opts.output_dir
+Trollop::die :output_dir, "must exist" unless File.directory? opts.output_dir
+
+Trollop::die :plist_file, "must exist" if opts.plist_file && File.directory?(opts.plist_file)
+
+
+# Represents and is capable of outputting the representation of a
+# TextMate menu in terms of `yas-define-menu'
+#
+class TmSubmenu
+
+  @@excluded_items = [];
+  def self.excluded_items; @@excluded_items; end
+
+  attr_reader :items, :name
+  def initialize(name, hash)
+    @items = hash["items"]
+    @name = name
+  end
+
+  def to_lisp(allsubmenus,
+              deleteditems,
+              indent = 0,
+              thingy = ["(", ")"])
+
+    first = true;
+
+   string = ""
+   separator_useless = true;
+   items.each do |uuid|
+      if deleteditems && deleteditems.index(uuid)
+       $stderr.puts "#{uuid} has been deleted!"
+       next
+     end
+      string += "\n"
+      string += " " * indent
+      string += (first ? thingy[0] : (" " * thingy[0].length))
+
+      submenu = allsubmenus[uuid]
+      snippet = TmSnippet::snippets_by_uid[uuid]
+      unimplemented = TmSnippet::unknown_substitutions["content"][uuid]
+      if submenu
+        str = "(yas-submenu "
+        string += str + "\"" + submenu.name + "\""
+        string += submenu.to_lisp(allsubmenus, deleteditems,
+                                  indent + str.length + thingy[0].length)
+      elsif snippet and not unimplemented
+        string += ";; " + snippet.name + "\n"
+        string += " " * (indent + thingy[0].length)
+        string += "(yas-item \"" + uuid + "\")"
+        separator_useless = false;
+      elsif snippet and unimplemented
+        string += ";; Ignoring " + snippet.name + "\n"
+        string += " " * (indent + thingy[0].length)
+        string += "(yas-ignore-item \"" + uuid + "\")"
+        separator_useless = true;
+      elsif (uuid =~ /---------------------/)
+        string += "(yas-separator)" unless separator_useless
+      end
+      first = false;
+    end
+    string += ")"
+    string += thingy[1]
+
+    return string
+  end
+
+  def self.main_menu_to_lisp (parsed_plist, modename)
+    mainmenu = parsed_plist["mainMenu"]
+    deleted  = parsed_plist["deleted"]
+
+    root = TmSubmenu.new("__main_menu__", mainmenu)
+    all = {}
+
+    mainmenu["submenus"].each_pair do |k,v|
+      all[k] = TmSubmenu.new(v["name"], v)
+    end
+
+    excluded = (mainmenu["excludedItems"] || []) + TmSubmenu::excluded_items
+    closing = "\n                    '("
+    closing+= excluded.collect do |uuid|
+      "\"" + uuid + "\""
+    end.join(  "\n                       ") + "))"
+
+    str = "(yas-define-menu "
+    return str + "'#{modename}" + root.to_lisp(all,
+                                               deleted,
+                                               str.length,
+                                               ["'(" , closing])
+  end
+end
+
+
+# Represents a textmate snippet
+#
+# - @file is the .tmsnippet/.plist file path relative to cwd
+#
+# - optional @info is a Plist.parsed info.plist found in the bundle dir
+#
+# - @@snippets_by_uid is where one can find all the snippets parsed so
+#   far.
+#
+#
+class SkipSnippet < RuntimeError; end
+class TmSnippet
+  @@known_substitutions = {
+    "content"   => {
+      "${TM_RAILS_TEMPLATE_START_RUBY_EXPR}"   => "<%= ",
+      "${TM_RAILS_TEMPLATE_END_RUBY_EXPR}"     => " %>",
+      "${TM_RAILS_TEMPLATE_START_RUBY_INLINE}" => "<% ",
+      "${TM_RAILS_TEMPLATE_END_RUBY_INLINE}"   => " -%>",
+      "${TM_RAILS_TEMPLATE_END_RUBY_BLOCK}"    => "end" ,
+      "${0:$TM_SELECTED_TEXT}"                 => "${0:`yas-selected-text`}",
+      /\$\{(\d+)\}/                            => "$\\1",
+      "${1:$TM_SELECTED_TEXT}"                 => "${1:`yas-selected-text`}",
+      "${2:$TM_SELECTED_TEXT}"                 => "${2:`yas-selected-text`}",
+      '$TM_SELECTED_TEXT'                     => "`yas-selected-text`",
+      %r'\$\{TM_SELECTED_TEXT:([^\}]*)\}'       => "`(or (yas-selected-text) \"\\1\")`",
+      %r'`[^`]+\n[^`]`'                        => Proc.new {|uuid, match| "(yas-multi-line-unknown " + uuid + ")"}},
+    "condition" => {
+      /^source\..*$/ => "" },
+    "binding"   => {},
+    "type"      => {}
+  }
+
+  def self.extra_substitutions; @@extra_substitutions; end
+  @@extra_substitutions = {
+    "content"   => {},
+    "condition" => {},
+    "binding"   => {},
+    "type"      => {}
+  }
+
+  def self.unknown_substitutions; @@unknown_substitutions; end
+  @@unknown_substitutions = {
+    "content"   => {},
+    "condition" => {},
+    "binding"   => {},
+    "type"      => {}
+  }
+
+  @@snippets_by_uid={}
+  def self.snippets_by_uid; @@snippets_by_uid; end
+
+  def initialize(file,info=nil)
+    @file    = file
+    @info    = info
+    @snippet = TmSnippet::read_plist(file)
+    @@snippets_by_uid[self.uuid] = self;
+    raise SkipSnippet.new "not a snippet/command/macro." unless (@snippet["scope"] || @snippet["command"])
+    raise SkipSnippet.new "looks like preferences."if @file =~ /Preferences\//
+    raise RuntimeError.new("Cannot convert this snippet #{file}!") unless @snippet;
+  end
+
+  def name
+    @snippet["name"]
+  end
+
+  def uuid
+    @snippet["uuid"]
+  end
+
+  def key
+    @snippet["tabTrigger"]
+  end
+
+  def condition
+    yas_directive "condition"
+  end
+
+  def type
+    override = yas_directive "type"
+    if override
+      return override
+    else
+      return "# type: command\n" if @file =~ /(Commands\/|Macros\/)/
+    end
+  end
+
+  def binding
+    yas_directive "binding"
+  end
+
+  def content
+    known = @@known_substitutions["content"]
+    extra = @@extra_substitutions["content"]
+    if direct = extra[uuid]
+      return direct
+    else
+      ct = @snippet["content"]
+      if ct
+        known.each_pair do |k,v|
+          if v.respond_to? :call
+            ct.gsub!(k) {|match| v.call(uuid, match)}
+          else
+            ct.gsub!(k,v)
+          end
+        end
+        extra.each_pair do |k,v|
+          ct.gsub!(k,v)
+        end
+        # the remaining stuff is an unknown substitution
+        #
+        [ %r'\$\{ [^/\}\{:]* / [^/]* / [^/]* / [^\}]*\}'x ,
+          %r'\$\{[^\d][^}]+\}',
+          %r'`[^`]+`',
+          %r'\$TM_[\w_]+',
+          %r'\(yas-multi-line-unknown [^\)]*\)'
+        ].each do |reg|
+          ct.scan(reg) do |match|
+            @@unknown_substitutions["content"][match] = self
+          end
+        end
+        return ct
+      else
+        @@unknown_substitutions["content"][uuid] = self
+        TmSubmenu::excluded_items.push(uuid)
+        return "(yas-unimplemented)"
+      end
+    end
+  end
+
+  def to_yas
+    doc = "# -*- mode: snippet -*-\n"
+    doc << (self.type || "")
+    doc << "# uuid: #{self.uuid}\n"
+    doc << "# key: #{self.key}\n" if self.key
+    doc << "# contributor: Translated from textmate snippet by PROGRAM_NAME\n"
+    doc << "# name: #{self.name}\n"
+    doc << (self.binding || "")
+    doc << (self.condition || "")
+    doc << "# --\n"
+    doc << (self.content || "(yas-unimplemented)")
+    doc
+  end
+
+  def self.canonicalize(filename)
+    invalid_char = /[^ a-z_0-9.+=~(){}\/'`&#,-]/i
+
+    filename.
+      gsub(invalid_char, '').  # remove invalid characters
+      gsub(/ {2,}/,' ').       # squeeze repeated spaces into a single one
+      rstrip                   # remove trailing whitespaces
+  end
+
+  def yas_file()
+      File.join(TmSnippet::canonicalize(@file[0, @file.length-File.extname(@file).length]) + ".yasnippet")
+  end
+
+  def self.read_plist(xml_or_binary)
+    begin
+      parsed = Plist::parse_xml(xml_or_binary)
+      return parsed if parsed
+      raise ArgumentError.new "Probably in binary format and parse_xml is very quiet..."
+    rescue StandardError => e
+      if (system "plutil -convert xml1 #{xml_or_binary.shellescape} -o /tmp/textmate_import.tmpxml")
+        return Plist::parse_xml("/tmp/textmate_import.tmpxml")
+      else
+        raise RuntimeError.new "plutil failed miserably, check if you have it..."
+      end
+    end
+  end
+
+  private
+
+  @@yas_to_tm_directives = {"condition" => "scope", "binding" => "keyEquivalent", "key" => "tabTrigger"}
+  def yas_directive(yas_directive)
+    #
+    # Merge "known" hardcoded substitution with "extra" substitutions
+    # provided in the .yas-setup.el file.
+    #
+    merged = @@known_substitutions[yas_directive].
+      merge(@@extra_substitutions[yas_directive])
+    #
+    # First look for an uuid-based direct substitution for this
+    # directive.
+    #
+    if direct = merged[uuid]
+      return "# #{yas_directive}: "+ direct + "\n" unless direct.empty?
+    else
+      tm_directive = @@yas_to_tm_directives[yas_directive]
+      val = tm_directive && @snippet[tm_directive]
+      if val and !val.delete(" ").empty? then
+        #
+        # Sort merged substitutions by length (bigger ones first,
+        # regexps last), and apply them to the value gotten for plist.
+        #
+        allsubs = merged.sort_by do |what, with|
+          if what.respond_to? :length then -what.length else 0 end
+        end
+        allsubs.each do |sub|
+          if val.gsub!(sub[0],sub[1])
+            # puts "SUBBED #{sub[0]} for #{sub[1]}"
+            return "# #{yas_directive}: "+ val + "\n" unless val.empty?
+          end
+        end
+        #
+        # If we get here, no substitution matched, so mark this an
+        # unknown substitution.
+        #
+        @@unknown_substitutions[yas_directive][val] = self
+        return "## #{yas_directive}: \""+ val + "\n"
+      end
+    end
+  end
+
+end
+
+
+if __FILE__ == $PROGRAM_NAME
+  # Read the the bundle's info.plist if can find it/guess it
+  #
+  info_plist_file = opts.plist_file || File.join(opts.bundle_dir,"info.plist")
+  info_plist = TmSnippet::read_plist(info_plist_file) if info_plist_file and File.readable? info_plist_file;
+
+  # Calculate the mode name
+  #
+  modename = File.basename opts.output_dir || "major-mode-name"
+
+  # Read in .yas-setup.el looking for the separator between auto-generated
+  #
+  original_dir = Dir.pwd
+  yas_setup_el_file = File.join(original_dir, opts.output_dir, ".yas-setup.el")
+  separator = ";; --**--"
+  whole, head , tail = "", "", ""
+  if File::exists? yas_setup_el_file
+    File.open yas_setup_el_file, 'r' do |file|
+      whole = file.read
+      head , tail = whole.split(separator)
+    end
+  else
+    head = ";; .yas-setup.el for #{modename}\n" + ";; \n"
+  end
+
+  # Now iterate the tail part to find extra substitutions
+  #
+  tail    ||= ""
+  head    ||= ""
+  directive = nil
+  # puts "get this head #{head}"
+  head.each_line do |line|
+    case line
+    when /^;; Substitutions for:(.*)$/
+      directive = $~[1].strip
+      # puts "found the directove #{directive}"
+    when /^;;(.*)[ ]+=yyas>(.*)$/
+      replacewith = $~[2].strip
+      lookfor = $~[1]
+      lookfor.gsub!(/^[ ]*/, "")
+      lookfor.gsub!(/[ ]*$/, "")
+      # puts "found this wonderful substitution for #{directive} which is #{lookfor} => #{replacewith}"
+      unless !directive or replacewith =~ /yas-unknown/ then
+        TmSnippet.extra_substitutions[directive][lookfor] = replacewith
+      end
+    end
+  end
+
+  # Glob snippets into snippet_files, going into subdirs
+  #
+  Dir.chdir opts.bundle_dir
+  snippet_files_glob = File.join("**", opts.glob)
+  snippet_files = Dir.glob(snippet_files_glob)
+
+  # Attempt to convert each snippet files in snippet_files
+  #
+  puts "Will try to convert #{snippet_files.length} snippets...\n" unless opts.quiet
+
+
+  # Iterate the globbed files
+  #
+  snippet_files.each do |file|
+    begin
+      $stdout.print "Processing \"#{File.join(opts.bundle_dir,file)}\"..." unless opts.quiet
+      snippet = TmSnippet.new(file,info_plist)
+
+      file_to_create = File.join(original_dir, opts.output_dir, snippet.yas_file)
+      FileUtils.mkdir_p(File.dirname(file_to_create))
+      File.open(file_to_create, 'w') do |f|
+        f.write(snippet.to_yas)
+      end
+      $stdout.print "done\n" unless opts.quiet
+    rescue SkipSnippet => e
+      $stdout.print "skipped! #{e.message}\n" unless opts.quiet
+    rescue RuntimeError => e
+      $stderr.print "failed! #{e.message}\n"
+      $strerr.print "#{e.backtrace.join("\n")}" unless opts.quiet
+    end
+  end
+
+  # Attempt to decypher the menu
+  #
+  menustr = TmSubmenu::main_menu_to_lisp(info_plist, modename) if info_plist
+  puts menustr if $DEBUG
+
+  # Write some basic .yas-* files
+  #
+  if opts.output_dir
+    FileUtils.mkdir_p opts.output_dir
+    FileUtils.touch File.join(original_dir, opts.output_dir, ".yas-make-groups") unless menustr
+
+    # Now, output head + a new tail in (possibly new) .yas-setup.el
+    # file
+    #
+    File.open yas_setup_el_file, 'w' do |file|
+      file.puts head
+      file.puts separator
+      file.puts ";; Automatically generated code, do not edit this part"
+      file.puts ";; "
+      file.puts ";; Translated menu"
+      file.puts ";; "
+      file.puts menustr
+      file.puts
+      file.puts ";; Unknown substitutions"
+      file.puts ";; "
+      ["content", "condition", "binding"].each do |type|
+        file.puts ";; Substitutions for: #{type}"
+        file.puts ";; "
+        # TmSnippet::extra_substitutions[type].
+        #   each_pair do |k,v|
+        #   file.puts ";; " + k + "" + (" " * [1, 90-k.length].max) + " =yyas> " + v
+        # end
+        unknown = TmSnippet::unknown_substitutions[type];
+        unknown.keys.uniq.each do |k|
+          file.puts ";; # as in " +  unknown[k].yas_file
+          file.puts ";; " + k + "" + (" " * [1, 90-k.length].max) + " =yyas> (yas-unknown)"
+          file.puts ";; "
+        end
+        file.puts ";; "
+        file.puts
+      end
+      file.puts ";; .yas-setup.el for #{modename} ends here"
+    end
+  end
+end
diff --git a/packages/yasnippet/snippets/c++-mode/.yas-parents b/packages/yasnippet/snippets/c++-mode/.yas-parents
new file mode 100644 (file)
index 0000000..ce9828b
--- /dev/null
@@ -0,0 +1 @@
+cc-mode
diff --git a/packages/yasnippet/snippets/c++-mode/beginend b/packages/yasnippet/snippets/c++-mode/beginend
new file mode 100644 (file)
index 0000000..4af416f
--- /dev/null
@@ -0,0 +1,4 @@
+# name: v.begin(), v.end()
+# key: beginend
+# --
+${1:v}.begin(), $1.end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/c++-mode/class b/packages/yasnippet/snippets/c++-mode/class
new file mode 100644 (file)
index 0000000..f33f8b4
--- /dev/null
@@ -0,0 +1,9 @@
+# name: class ... { ... }
+# key: class
+# --
+class ${1:Name}
+{
+public:
+    ${1:$(yas-substr text "[^: ]*")}($2);
+    virtual ~${1:$(yas-substr text "[^: ]*")}();
+};
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/c++-mode/ns b/packages/yasnippet/snippets/c++-mode/ns
new file mode 100644 (file)
index 0000000..bff9ed7
--- /dev/null
@@ -0,0 +1,4 @@
+# name: namespace ...
+# key: ns
+# --
+namespace
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/c++-mode/template b/packages/yasnippet/snippets/c++-mode/template
new file mode 100644 (file)
index 0000000..ed36b08
--- /dev/null
@@ -0,0 +1,4 @@
+# name: template <typename ...>
+# key: template
+# --
+template <typename ${T}>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/c++-mode/using b/packages/yasnippet/snippets/c++-mode/using
new file mode 100644 (file)
index 0000000..8da5348
--- /dev/null
@@ -0,0 +1,5 @@
+# name: using namespace ...
+# key: using
+# --
+using namespace ${std};
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/c-mode/.yas-parents b/packages/yasnippet/snippets/c-mode/.yas-parents
new file mode 100644 (file)
index 0000000..ce9828b
--- /dev/null
@@ -0,0 +1 @@
+cc-mode
diff --git a/packages/yasnippet/snippets/c-mode/fopen b/packages/yasnippet/snippets/c-mode/fopen
new file mode 100644 (file)
index 0000000..b3339e4
--- /dev/null
@@ -0,0 +1,4 @@
+# name: FILE *fp = fopen(..., ...);
+# key: fopen
+# --
+FILE *${fp} = fopen(${"file"}, "${r}");
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/c-mode/printf b/packages/yasnippet/snippets/c-mode/printf
new file mode 100644 (file)
index 0000000..36313de
--- /dev/null
@@ -0,0 +1,7 @@
+# -*- mode: snippet -*-
+# name: printf
+# contributor: joaotavora
+# key: printf
+# --
+printf ("${1:%s}\\n"${1:$(if (string-match "%" text) "," "\);")
+}$2${1:$(if (string-match "%" text) "\);" "")}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/cc-mode/.yas-parents b/packages/yasnippet/snippets/cc-mode/.yas-parents
new file mode 100644 (file)
index 0000000..eed5b44
--- /dev/null
@@ -0,0 +1 @@
+text-mode
diff --git a/packages/yasnippet/snippets/cc-mode/do b/packages/yasnippet/snippets/cc-mode/do
new file mode 100644 (file)
index 0000000..a42d27f
--- /dev/null
@@ -0,0 +1,7 @@
+# name: do { ... } while (...)
+# key: do
+# --
+do
+{
+    $0
+} while (${1:condition});
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/cc-mode/for b/packages/yasnippet/snippets/cc-mode/for
new file mode 100644 (file)
index 0000000..1e1d4bf
--- /dev/null
@@ -0,0 +1,7 @@
+# name: for (...; ...; ...) { ... }
+# key: for
+# --
+for (${1:int i = 0}; ${2:i < N}; ${3:++i})
+{
+    $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/cc-mode/if b/packages/yasnippet/snippets/cc-mode/if
new file mode 100644 (file)
index 0000000..5c6a121
--- /dev/null
@@ -0,0 +1,7 @@
+# name: if (...) { ... }
+# key: if
+# --
+if (${1:condition})
+{
+    $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/cc-mode/inc b/packages/yasnippet/snippets/cc-mode/inc
new file mode 100644 (file)
index 0000000..9c9ed76
--- /dev/null
@@ -0,0 +1,4 @@
+# name: #include "..."
+# key: inc
+# --
+#include "$1"
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/cc-mode/inc.1 b/packages/yasnippet/snippets/cc-mode/inc.1
new file mode 100644 (file)
index 0000000..649cbd9
--- /dev/null
@@ -0,0 +1,4 @@
+# name: #include <...>
+# key: inc
+# --
+#include <$1>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/cc-mode/main b/packages/yasnippet/snippets/cc-mode/main
new file mode 100644 (file)
index 0000000..dab1cad
--- /dev/null
@@ -0,0 +1,8 @@
+# name: int main(argc, argv) { ... }
+# key: main
+# --
+int main(int argc, char *argv[])
+{
+    $0
+    return 0;
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/cc-mode/once b/packages/yasnippet/snippets/cc-mode/once
new file mode 100644 (file)
index 0000000..ea14f9a
--- /dev/null
@@ -0,0 +1,9 @@
+# name: #ifndef XXX; #define XXX; #endif
+# key: once
+# --
+#ifndef ${1:_`(upcase (file-name-nondirectory (file-name-sans-extension (buffer-file-name))))`_H_}
+#define $1
+
+$0
+
+#endif /* $1 */
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/cc-mode/struct b/packages/yasnippet/snippets/cc-mode/struct
new file mode 100644 (file)
index 0000000..39ddfa8
--- /dev/null
@@ -0,0 +1,7 @@
+# name: struct ... { ... }
+# key: struct
+# --
+struct ${1:name}
+{
+    $0
+};
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/cperl-mode/.yas-parents b/packages/yasnippet/snippets/cperl-mode/.yas-parents
new file mode 100644 (file)
index 0000000..bfa2993
--- /dev/null
@@ -0,0 +1 @@
+perl-mode
diff --git a/packages/yasnippet/snippets/csharp-mode/.yas-parents b/packages/yasnippet/snippets/csharp-mode/.yas-parents
new file mode 100644 (file)
index 0000000..ce9828b
--- /dev/null
@@ -0,0 +1 @@
+cc-mode
diff --git a/packages/yasnippet/snippets/csharp-mode/attrib b/packages/yasnippet/snippets/csharp-mode/attrib
new file mode 100644 (file)
index 0000000..f617cee
--- /dev/null
@@ -0,0 +1,8 @@
+# contributor: Alejandro Espinoza Esparza <aespinoza@structum.com.mx>
+# name: private attribute ....;
+# key: attrib
+# --
+/// <summary>
+/// $3
+/// </summary>
+private $1 $2;
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/csharp-mode/attrib.1 b/packages/yasnippet/snippets/csharp-mode/attrib.1
new file mode 100644 (file)
index 0000000..ac967ad
--- /dev/null
@@ -0,0 +1,22 @@
+# contributor: Alejandro Espinoza Esparza <aespinoza@structum.com.mx>
+# name: private attribute ....; public property ... ... { ... }
+# key: attrib
+# --
+/// <summary>
+/// $3
+/// </summary>
+private $1 $2;
+
+/// <summary>
+/// $4
+/// </summary>
+/// <value>$5</value>
+public $1 $2
+{
+    get {
+        return this.$2;
+    }
+    set {
+        this.$2 = value;
+    }
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/csharp-mode/attrib.2 b/packages/yasnippet/snippets/csharp-mode/attrib.2
new file mode 100644 (file)
index 0000000..20f1263
--- /dev/null
@@ -0,0 +1,22 @@
+# contributor: Alejandro Espinoza Esparza <aespinoza@structum.com.mx>
+# name: private _attribute ....; public Property ... ... { ... }
+# key: attrib
+# --
+/// <summary>
+/// $3
+/// </summary>
+private $1 ${2:$(if (> (length text) 0) (format "_%s%s" (downcase (substring text 0 1)) (substring text 1 (length text))) "")};
+
+/// <summary>
+/// ${3:Description}
+/// </summary>
+/// <value><c>$1</c></value>
+public ${1:Type} ${2:Name}
+{
+    get {
+        return this.${2:$(if (> (length text) 0) (format "_%s%s" (downcase (substring text 0 1)) (substring text 1 (length text))) "")};
+    }
+    set {
+        this.${2:$(if (> (length text) 0) (format "_%s%s" (downcase (substring text 0 1)) (substring text 1 (length text))) "")} = value;
+    }
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/csharp-mode/class b/packages/yasnippet/snippets/csharp-mode/class
new file mode 100644 (file)
index 0000000..9cb096e
--- /dev/null
@@ -0,0 +1,22 @@
+# contributor: Alejandro Espinoza Esparza <aespinoza@structum.com.mx>
+# name: class ... { ... }
+# key: class
+# --
+${5:public} class ${1:Name}
+{
+    #region Ctor & Destructor
+    /// <summary>
+    /// ${3:Standard Constructor}
+    /// </summary>
+    public $1($2)
+    {
+    }
+
+    /// <summary>
+    /// ${4:Default Destructor}
+    /// </summary>
+    public ~$1()
+    {
+    }
+    #endregion
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/csharp-mode/comment b/packages/yasnippet/snippets/csharp-mode/comment
new file mode 100644 (file)
index 0000000..562689b
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Alejandro Espinoza Esparza <aespinoza@structum.com.mx>
+# name: /// <summary> ... </summary>
+# key: comment
+# --
+/// <summary>
+/// $1
+/// </summary>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/csharp-mode/comment.1 b/packages/yasnippet/snippets/csharp-mode/comment.1
new file mode 100644 (file)
index 0000000..856189d
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Alejandro Espinoza Esparza <aespinoza@structum.com.mx>
+# name: /// <param name="..."> ... </param>
+# key: comment
+# --
+/// <param name="$1">$2</param>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/csharp-mode/comment.2 b/packages/yasnippet/snippets/csharp-mode/comment.2
new file mode 100644 (file)
index 0000000..e890f1c
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Alejandro Espinoza Esparza <aespinoza@structum.com.mx>
+# name: /// <param name="..."> ... </param>
+# key: comment
+# --
+/// <returns>$1</returns>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/csharp-mode/comment.3 b/packages/yasnippet/snippets/csharp-mode/comment.3
new file mode 100644 (file)
index 0000000..13e6057
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Alejandro Espinoza Esparza <aespinoza@structum.com.mx>
+# name: /// <exception cref="..."> ... </exception>
+# key: comment
+# --
+/// <exception cref="$1">$2</exception>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/csharp-mode/method b/packages/yasnippet/snippets/csharp-mode/method
new file mode 100644 (file)
index 0000000..e5ea465
--- /dev/null
@@ -0,0 +1,11 @@
+# contributor: Alejandro Espinoza Esparza <aespinoza@structum.com.mx>
+# name: public void Method { ... }
+# key: method
+# --
+/// <summary>
+/// ${5:Description}
+/// </summary>${2:$(if (string= (upcase text) "VOID") "" (format "%s%s%s" "\n/// <returns><c>" text "</c></returns>"))}
+${1:public} ${2:void} ${3:MethodName}($4)
+{
+$0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/csharp-mode/namespace b/packages/yasnippet/snippets/csharp-mode/namespace
new file mode 100644 (file)
index 0000000..56c5d99
--- /dev/null
@@ -0,0 +1,8 @@
+# contributor: Alejandro Espinoza Esparza <aespinoza@structum.com.mx>
+# name: namespace .. { ... }
+# key: namespace
+# --
+namespace $1
+{
+$0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/csharp-mode/prop b/packages/yasnippet/snippets/csharp-mode/prop
new file mode 100644 (file)
index 0000000..c711d23
--- /dev/null
@@ -0,0 +1,17 @@
+# contributor: Alejandro Espinoza Esparza <aespinoza@structum.com.mx>
+# name: property ... ... { ... }
+# key: prop
+# --
+/// <summary>
+/// $5
+/// </summary>
+/// <value>$6</value>
+$1 $2 $3
+{
+    get {
+        return this.$4;
+    }
+    set {
+        this.$4 = value;
+    }
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/csharp-mode/region b/packages/yasnippet/snippets/csharp-mode/region
new file mode 100644 (file)
index 0000000..a155730
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Alejandro Espinoza Esparza <aespinoza@structum.com.mx>
+# name: #region ... #endregion
+# key: region
+# --
+#region $1
+$0
+#endregion
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/csharp-mode/using b/packages/yasnippet/snippets/csharp-mode/using
new file mode 100644 (file)
index 0000000..4103995
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Alejandro Espinoza Esparza <aespinoza@structum.com.mx>
+# name: using ...;
+# key: using
+# --
+using $1;
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/csharp-mode/using.1 b/packages/yasnippet/snippets/csharp-mode/using.1
new file mode 100644 (file)
index 0000000..452b07b
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Alejandro Espinoza Esparza <aespinoza@structum.com.mx>
+# name: using System;
+# key: using
+# --
+using System;
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/csharp-mode/using.2 b/packages/yasnippet/snippets/csharp-mode/using.2
new file mode 100644 (file)
index 0000000..d3a8980
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Alejandro Espinoza Esparza <aespinoza@structum.com.mx>
+# name: using System....;
+# key: using
+# --
+using System.$1;
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/css-mode/.yas-parents b/packages/yasnippet/snippets/css-mode/.yas-parents
new file mode 100644 (file)
index 0000000..eed5b44
--- /dev/null
@@ -0,0 +1 @@
+text-mode
diff --git a/packages/yasnippet/snippets/css-mode/bg b/packages/yasnippet/snippets/css-mode/bg
new file mode 100644 (file)
index 0000000..89597cb
--- /dev/null
@@ -0,0 +1,4 @@
+# name: background-color: ...
+# key: bg
+# --
+background-color: #${1:DDD};
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/css-mode/bg.1 b/packages/yasnippet/snippets/css-mode/bg.1
new file mode 100644 (file)
index 0000000..f74f6e4
--- /dev/null
@@ -0,0 +1,4 @@
+# name: background-image: ...
+# key: bg
+# --
+background-image: url($1);
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/css-mode/bor b/packages/yasnippet/snippets/css-mode/bor
new file mode 100644 (file)
index 0000000..b2a1bf2
--- /dev/null
@@ -0,0 +1,4 @@
+# name: border size style color
+# key: bor
+# --
+border: ${1:1px} ${2:solid} #${3:999};
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/css-mode/cl b/packages/yasnippet/snippets/css-mode/cl
new file mode 100644 (file)
index 0000000..fcfd345
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: rejeep <johan.rejeep@gmail.com>
+# name: clear: ...
+# key: cl
+# --
+clear: $1;
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/css-mode/disp.block b/packages/yasnippet/snippets/css-mode/disp.block
new file mode 100644 (file)
index 0000000..2571ba4
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: rejeep <johan.rejeep@gmail.com>
+# name: display: block
+# key: disp
+# --
+display: block;
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/css-mode/disp.inline b/packages/yasnippet/snippets/css-mode/disp.inline
new file mode 100644 (file)
index 0000000..0be30e3
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: rejeep <johan.rejeep@gmail.com>
+# name: display: inline
+# key: disp
+# --
+display: inline;
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/css-mode/disp.none b/packages/yasnippet/snippets/css-mode/disp.none
new file mode 100644 (file)
index 0000000..58c40d0
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: rejeep <johan.rejeep@gmail.com>
+# name: display: none
+# key: disp
+# --
+display: none;
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/css-mode/ff b/packages/yasnippet/snippets/css-mode/ff
new file mode 100644 (file)
index 0000000..4218908
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: rejeep <johan.rejeep@gmail.com>
+# name: font-family: ...
+# key: ff
+# --
+font-family: $1;
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/css-mode/fs b/packages/yasnippet/snippets/css-mode/fs
new file mode 100644 (file)
index 0000000..98a050a
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: rejeep <johan.rejeep@gmail.com>
+# name: font-size: ...
+# key: fs
+# --
+font-size: ${12px};
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/css-mode/mar.bottom b/packages/yasnippet/snippets/css-mode/mar.bottom
new file mode 100644 (file)
index 0000000..6dbe9f8
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: rejeep <johan.rejeep@gmail.com>
+# name: margin-bottom: ...
+# key: mar
+# --
+margin-bottom: $1;
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/css-mode/mar.left b/packages/yasnippet/snippets/css-mode/mar.left
new file mode 100644 (file)
index 0000000..0ba7b3b
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: rejeep <johan.rejeep@gmail.com>
+# name: margin-left: ...
+# key: mar
+# --
+margin-left: $1;
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/css-mode/mar.mar b/packages/yasnippet/snippets/css-mode/mar.mar
new file mode 100644 (file)
index 0000000..e45a33c
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: rejeep <johan.rejeep@gmail.com>
+# name: margin: ...
+# key: mar
+# --
+margin: $1;
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/css-mode/mar.margin b/packages/yasnippet/snippets/css-mode/mar.margin
new file mode 100644 (file)
index 0000000..0716fc8
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: rejeep <johan.rejeep@gmail.com>
+# name: margin top right bottom left
+# key: mar
+# --
+margin: ${top} ${right} ${bottom} ${left};
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/css-mode/mar.right b/packages/yasnippet/snippets/css-mode/mar.right
new file mode 100644 (file)
index 0000000..49f05d7
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: rejeep <johan.rejeep@gmail.com>
+# name: margin-right: ...
+# key: mar
+# --
+margin-right: $1;
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/css-mode/mar.top b/packages/yasnippet/snippets/css-mode/mar.top
new file mode 100644 (file)
index 0000000..168f458
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: rejeep <johan.rejeep@gmail.com>
+# name: margin-top: ...
+# key: mar
+# --
+margin-top: $1;
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/css-mode/pad.bottom b/packages/yasnippet/snippets/css-mode/pad.bottom
new file mode 100644 (file)
index 0000000..3e4c665
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: rejeep <johan.rejeep@gmail.com>
+# name: padding-bottom: ...
+# key: pad
+# --
+padding-bottom: $1;
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/css-mode/pad.left b/packages/yasnippet/snippets/css-mode/pad.left
new file mode 100644 (file)
index 0000000..5e49b28
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: rejeep <johan.rejeep@gmail.com>
+# name: padding-left: ...
+# key: pad
+# --
+padding-left: $1;
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/css-mode/pad.pad b/packages/yasnippet/snippets/css-mode/pad.pad
new file mode 100644 (file)
index 0000000..ce81c36
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: rejeep <johan.rejeep@gmail.com>
+# name: padding: ...
+# key: pad
+# --
+padding: $1;
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/css-mode/pad.padding b/packages/yasnippet/snippets/css-mode/pad.padding
new file mode 100644 (file)
index 0000000..0be7890
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: rejeep <johan.rejeep@gmail.com>
+# name: padding: top right bottom left
+# key: pad
+# --
+padding: ${top} ${right} ${bottom} ${left};
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/css-mode/pad.right b/packages/yasnippet/snippets/css-mode/pad.right
new file mode 100644 (file)
index 0000000..a244b94
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: rejeep <johan.rejeep@gmail.com>
+# name: padding-right: ...
+# key: pad
+# --
+padding-right: $1;
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/css-mode/pad.top b/packages/yasnippet/snippets/css-mode/pad.top
new file mode 100644 (file)
index 0000000..d315e46
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: rejeep <johan.rejeep@gmail.com>
+# name: padding-top: ...
+# key: pad
+# --
+padding-top: $1;
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/.read_me b/packages/yasnippet/snippets/emacs-lisp-mode/.read_me
new file mode 100644 (file)
index 0000000..49c8e00
--- /dev/null
@@ -0,0 +1,7 @@
+-*- coding: utf-8 -*-
+Originally started by Xah Lee (xahlee.org) on 2009-02-22
+Released under GPL 3.
+
+Feel free to add missing ones or modify existing ones to improve.
+
+Those starting with “x-” are supposed to be idiom templates. Not sure it's very useful. They might start with “i-” or "id-" in the future.
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/.yas-parents b/packages/yasnippet/snippets/emacs-lisp-mode/.yas-parents
new file mode 100644 (file)
index 0000000..eed5b44
--- /dev/null
@@ -0,0 +1 @@
+text-mode
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/add-hook.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/add-hook.yasnippet
new file mode 100644 (file)
index 0000000..04f1f01
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: add-hook
+# key: add-hook
+# key: ah
+# --
+(add-hook HOOK$0 FUNCTION)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/and.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/and.yasnippet
new file mode 100644 (file)
index 0000000..cfc7dfc
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: and
+# key: and
+# key: a
+# --
+(and $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/append.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/append.yasnippet
new file mode 100644 (file)
index 0000000..585dfdc
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: append
+# key: append
+# --
+(append $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/apply.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/apply.yasnippet
new file mode 100644 (file)
index 0000000..2cfe695
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: apply
+# key: apply
+# --
+(apply $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/aref.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/aref.yasnippet
new file mode 100644 (file)
index 0000000..0df3b8e
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: aref
+# key: aref
+# --
+(aref ARRAY$0 INDEX)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/aset.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/aset.yasnippet
new file mode 100644 (file)
index 0000000..0813e7e
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: aset
+# key: aset
+# --
+(aset ARRAY$0 IDX NEWELT)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/assq.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/assq.yasnippet
new file mode 100644 (file)
index 0000000..61609c8
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: assq
+# key: assq
+# --
+(assq KEY$0 LIST)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/autoload.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/autoload.yasnippet
new file mode 100644 (file)
index 0000000..20052f5
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: autoload
+# key: autoload
+# --
+(autoload 'FUNCNAME$0 "FILENAME" &optional "DOCSTRING" INTERACTIVE TYPE)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/backward-char.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/backward-char.yasnippet
new file mode 100644 (file)
index 0000000..782b35c
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: backward-char
+# key: backward-char
+# key: bc
+# --
+(backward-char $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/beginning-of-line.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/beginning-of-line.yasnippet
new file mode 100644 (file)
index 0000000..cd75859
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: beginning-of-line
+# key: beginning-of-line
+# key: bol
+# --
+(beginning-of-line)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/bounds-of-thing-at-point.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/bounds-of-thing-at-point.yasnippet
new file mode 100644 (file)
index 0000000..507457c
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: bounds-of-thing-at-point
+# key: bounds-of-thing-at-point
+# key: botap
+# --
+(bounds-of-thing-at-point '$0) ; symbol, list, sexp, defun, filename, url, email, word, sentence, whitespace, line, page ...
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/buffer-file-name.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/buffer-file-name.yasnippet
new file mode 100644 (file)
index 0000000..726c508
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: buffer-file-name
+# key: buffer-file-name
+# key: bfn
+# --
+(buffer-file-name)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/buffer-modified-p.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/buffer-modified-p.yasnippet
new file mode 100644 (file)
index 0000000..87ff31e
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: buffer-modified-p
+# key: buffer-modified-p
+# key: bmp
+# --
+(buffer-modified-p $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/buffer-substring-no-properties.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/buffer-substring-no-properties.yasnippet
new file mode 100644 (file)
index 0000000..1b04019
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: buffer-substring-no-properties
+# key: buffer-substring-no-properties
+# key: bsnp
+# --
+(buffer-substring-no-properties START$0 END)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/buffer-substring.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/buffer-substring.yasnippet
new file mode 100644 (file)
index 0000000..002a4f0
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: buffer-substring
+# key: buffer-substring
+# key: bs
+# --
+(buffer-substring START$0 END)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/car.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/car.yasnippet
new file mode 100644 (file)
index 0000000..5406d94
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: car
+# key: car
+# --
+(car $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/cdr.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/cdr.yasnippet
new file mode 100644 (file)
index 0000000..0afd31f
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: cdr
+# key: cdr
+# --
+(cdr $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/concat.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/concat.yasnippet
new file mode 100644 (file)
index 0000000..42436b4
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: concat
+# key: concat
+# --
+(concat $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/cond.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/cond.yasnippet
new file mode 100644 (file)
index 0000000..4c40194
--- /dev/null
@@ -0,0 +1,8 @@
+# contributor: Xah Lee (XahLee.org)
+# name: cond
+# key: cond
+# --
+(cond
+(CONDITION$0 BODY)
+(CONDITION BODY)
+)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/condition-case.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/condition-case.yasnippet
new file mode 100644 (file)
index 0000000..80d09ad
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: condition-case
+# key: condition-case
+# key: cc
+# --
+(condition-case $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/cons.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/cons.yasnippet
new file mode 100644 (file)
index 0000000..a0f90ce
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: cons
+# key: cons
+# --
+(cons $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/consp.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/consp.yasnippet
new file mode 100644 (file)
index 0000000..f4b3f99
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: consp
+# key: consp
+# --
+(consp $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/copy-directory.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/copy-directory.yasnippet
new file mode 100644 (file)
index 0000000..4c47d2f
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: copy-directory
+# key: copy-directory
+# key: cd
+# --
+(copy-directory $0 NEWNAME &optional KEEP-TIME PARENTS)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/copy-file.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/copy-file.yasnippet
new file mode 100644 (file)
index 0000000..021c60e
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: copy-file
+# key: copy-file
+# key: cf
+# --
+(copy-file FILE$0 NEWNAME &optional OK-IF-ALREADY-EXISTS KEEP-TIME PRESERVE-UID-GID)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/current-buffer.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/current-buffer.yasnippet
new file mode 100644 (file)
index 0000000..59859be
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: current-buffer
+# key: current-buffer
+# key: cb
+# --
+(current-buffer)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/custom-autoload.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/custom-autoload.yasnippet
new file mode 100644 (file)
index 0000000..7961f9e
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: custom-autoload
+# key: custom-autoload
+# key: ca
+# --
+(custom-autoload$0 SYMBOL LOAD &optional NOSET)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/defalias.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/defalias.yasnippet
new file mode 100644 (file)
index 0000000..56d5855
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: defalias
+# key: defalias
+# --
+(defalias 'SYMBOL$0 'DEFINITION &optional DOCSTRING)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/defcustom.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/defcustom.yasnippet
new file mode 100644 (file)
index 0000000..db709be
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: defcustom
+# key: defcustom
+# --
+(defcustom $0 VALUE "DOC" &optional ARGS)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/define-key.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/define-key.yasnippet
new file mode 100644 (file)
index 0000000..a04e5d7
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: define-key
+# key: define-key
+# key: dk
+# --
+(define-key KEYMAPNAME$0 (kbd "M-b") 'FUNCNAME)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/defsubst.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/defsubst.yasnippet
new file mode 100644 (file)
index 0000000..5535af1
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: defsubst
+# key: defsubst
+# --
+(defsubst $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/defun.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/defun.yasnippet
new file mode 100644 (file)
index 0000000..0f3644b
--- /dev/null
@@ -0,0 +1,12 @@
+# contributor: Xah Lee (XahLee.org)
+# name: defun
+# key: defun
+# key: d
+# --
+(defun $1 ()
+  "DOCSTRING"
+  (interactive)
+  (let (var1)
+    (setq var1 some)
+    $0
+  ))
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/defvar.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/defvar.yasnippet
new file mode 100644 (file)
index 0000000..1148472
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: defvar
+# key: defvar
+# --
+(defvar $0 &optional INITVALUE "DOCSTRING")
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/delete-char.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/delete-char.yasnippet
new file mode 100644 (file)
index 0000000..02585fa
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: delete-char
+# key: delete-char
+# key: dc
+# --
+(delete-char $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/delete-directory.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/delete-directory.yasnippet
new file mode 100644 (file)
index 0000000..5033240
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: delete-directory
+# key: delete-directory
+# key: dd
+# --
+(delete-directory $0 &optional RECURSIVE)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/delete-file.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/delete-file.yasnippet
new file mode 100644 (file)
index 0000000..6b47f0d
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: delete-file
+# key: delete-file
+# key: df
+# --
+(delete-file $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/delete-region.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/delete-region.yasnippet
new file mode 100644 (file)
index 0000000..054b40d
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: delete-region
+# key: delete-region
+# key: dr
+# --
+(delete-region $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/directory-files.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/directory-files.yasnippet
new file mode 100644 (file)
index 0000000..449e016
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: directory-files
+# key: directory-files
+# key: df
+# --
+(directory-files $0 &optional FULL MATCH NOSORT)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/dolist.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/dolist.yasnippet
new file mode 100644 (file)
index 0000000..13be2fb
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: dolist
+# key: dolist
+# --
+(dolist $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/end-of-line.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/end-of-line.yasnippet
new file mode 100644 (file)
index 0000000..dcefc48
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: end-of-line
+# key: end-of-line
+# key: eol
+# --
+(end-of-line)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/eq.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/eq.yasnippet
new file mode 100644 (file)
index 0000000..b05f968
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: eq
+# key: eq
+# --
+(eq $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/equal.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/equal.yasnippet
new file mode 100644 (file)
index 0000000..f2dec47
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: equal
+# key: equal
+# --
+(equal $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/error.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/error.yasnippet
new file mode 100644 (file)
index 0000000..93314dd
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: error
+# key: error
+# --
+(error "$0" &optional ARGS)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/expand-file-name.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/expand-file-name.yasnippet
new file mode 100644 (file)
index 0000000..c8b5253
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: expand-file-name
+# key: expand-file-name
+# key: efn
+# --
+(expand-file-name $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/f.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/f.yasnippet
new file mode 100644 (file)
index 0000000..220a1af
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: format
+# key: format
+# --
+(format "$0" &optional OBJECTS)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/fboundp.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/fboundp.yasnippet
new file mode 100644 (file)
index 0000000..f6e8907
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: fboundp
+# key: fboundp
+# --
+(fboundp '$0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/file-name-directory.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/file-name-directory.yasnippet
new file mode 100644 (file)
index 0000000..1264a25
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: file-name-directory
+# key: file-name-directory
+# key: fnd
+# --
+(file-name-directory $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/file-name-extension.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/file-name-extension.yasnippet
new file mode 100644 (file)
index 0000000..87886d4
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: file-name-extension
+# key: file-name-extension
+# key: fne
+# --
+(file-name-extension $0 &optional PERIOD)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/file-name-nondirectory.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/file-name-nondirectory.yasnippet
new file mode 100644 (file)
index 0000000..0a824a5
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: file-name-nondirectory
+# key: file-name-nondirectory
+# key: fnn
+# --
+(file-name-nondirectory $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/file-name-sans-extension.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/file-name-sans-extension.yasnippet
new file mode 100644 (file)
index 0000000..491c7e4
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: file-name-sans-extension
+# key: file-name-sans-extension
+# key: fnse
+# --
+(file-name-sans-extension $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/file-relative-name.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/file-relative-name.yasnippet
new file mode 100644 (file)
index 0000000..8f773aa
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: file-relative-name
+# key: file-relative-name
+# key: frn
+# --
+(file-relative-name $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/find-file.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/find-file.yasnippet
new file mode 100644 (file)
index 0000000..7a64537
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: find-file
+# key: find-file
+# key: ff
+# --
+(find-file $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/format.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/format.yasnippet
new file mode 100644 (file)
index 0000000..220a1af
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: format
+# key: format
+# --
+(format "$0" &optional OBJECTS)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/forward-char.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/forward-char.yasnippet
new file mode 100644 (file)
index 0000000..198cca2
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: forward-char
+# key: forward-char
+# key: fc
+# --
+(forward-char $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/forward-line.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/forward-line.yasnippet
new file mode 100644 (file)
index 0000000..10456d3
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: forward-line
+# key: forward-line
+# key: fl
+# --
+(forward-line $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/funcall.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/funcall.yasnippet
new file mode 100644 (file)
index 0000000..4f67029
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: funcall
+# key: funcall
+# --
+(funcall $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/function.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/function.yasnippet
new file mode 100644 (file)
index 0000000..3ff84fc
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: function
+# key: function
+# --
+(function $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/get.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/get.yasnippet
new file mode 100644 (file)
index 0000000..df20cce
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: get
+# key: get
+# --
+(get SYMBOL$0 PROPNAME)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/global-set-key.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/global-set-key.yasnippet
new file mode 100644 (file)
index 0000000..8895053
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: global-set-key
+# key: global-set-key
+# key: gsk
+# --
+(global-set-key (kbd "C-$0") 'COMMAND)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/goto-char.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/goto-char.yasnippet
new file mode 100644 (file)
index 0000000..1caa88e
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: goto-char
+# key: goto-char
+# key: gc
+# --
+(goto-char $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/if.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/if.yasnippet
new file mode 100644 (file)
index 0000000..db90fe3
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: if
+# key: if
+# --
+(if $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/insert-file-contents.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/insert-file-contents.yasnippet
new file mode 100644 (file)
index 0000000..6189cfa
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: insert-file-contents
+# key: insert-file-contents
+# key: ifc
+# --
+(insert-file-contents $0 &optional VISIT BEG END REPLACE)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/insert.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/insert.yasnippet
new file mode 100644 (file)
index 0000000..b3de98c
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: insert
+# key: insert
+# key: i
+# --
+(insert $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/interactive.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/interactive.yasnippet
new file mode 100644 (file)
index 0000000..f63e489
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: interactive
+# key: interactive
+# --
+(interactive)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/kbd.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/kbd.yasnippet
new file mode 100644 (file)
index 0000000..811ef6b
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: kbd
+# key: kbd
+# --
+(kbd "$0")
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/kill-buffer.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/kill-buffer.yasnippet
new file mode 100644 (file)
index 0000000..615f74d
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: kill-buffer
+# key: kill-buffer
+# key: kb
+# --
+(kill-buffer $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/lambda.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/lambda.yasnippet
new file mode 100644 (file)
index 0000000..63ac70a
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: lambda
+# key: lambda
+# --
+(lambda ($0) "DOCSTRING" (interactive) BODY)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/length.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/length.yasnippet
new file mode 100644 (file)
index 0000000..ecd1b6d
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: length
+# key: length
+# --
+(length $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/let.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/let.yasnippet
new file mode 100644 (file)
index 0000000..e198254
--- /dev/null
@@ -0,0 +1,8 @@
+# contributor: Xah Lee (XahLee.org)
+# name: let
+# key: let
+# key: l
+# --
+(let ($1 )
+ $0
+)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/line-beginning-position.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/line-beginning-position.yasnippet
new file mode 100644 (file)
index 0000000..5edd9e3
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: line-beginning-position
+# key: line-beginning-position
+# key: lbp
+# --
+(line-beginning-position)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/line-end-position.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/line-end-position.yasnippet
new file mode 100644 (file)
index 0000000..a8fa3d0
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: line-end-position
+# key: line-end-position
+# key: lep
+# --
+(line-end-position)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/list.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/list.yasnippet
new file mode 100644 (file)
index 0000000..b8532a9
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: list
+# key: list
+# --
+(list $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/looking-at.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/looking-at.yasnippet
new file mode 100644 (file)
index 0000000..da85f01
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: looking-at
+# key: looking-at
+# key: la
+# --
+(looking-at $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/make-directory.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/make-directory.yasnippet
new file mode 100644 (file)
index 0000000..4f83d94
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: make-directory
+# key: make-directory
+# key: md
+# --
+(make-directory $0 &optional PARENTS)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/make-local-variable.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/make-local-variable.yasnippet
new file mode 100644 (file)
index 0000000..223fa55
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: make-local-variable
+# key: make-local-variable
+# key: mlv
+# --
+(make-local-variable $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/mapc.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/mapc.yasnippet
new file mode 100644 (file)
index 0000000..e8b0c52
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: mapc
+# key: mapc
+# --
+(mapc '$0 SEQUENCE)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/mapcar.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/mapcar.yasnippet
new file mode 100644 (file)
index 0000000..1f398ec
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: mapcar
+# key: mapcar
+# --
+(mapcar $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/match-beginning.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/match-beginning.yasnippet
new file mode 100644 (file)
index 0000000..8407602
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: match-beginning
+# key: match-beginning
+# key: mb
+# --
+(match-beginning N$0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/match-end.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/match-end.yasnippet
new file mode 100644 (file)
index 0000000..60923a4
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: match-end
+# key: match-end
+# key: me
+# --
+(match-end N$0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/match-string.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/match-string.yasnippet
new file mode 100644 (file)
index 0000000..83eb5fe
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: match-string
+# key: match-string
+# key: ms
+# --
+(match-string $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/memq.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/memq.yasnippet
new file mode 100644 (file)
index 0000000..513fd25
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: memq
+# key: memq
+# --
+(memq ELT$0 LIST)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/message.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/message.yasnippet
new file mode 100644 (file)
index 0000000..38bbab6
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: message
+# key: message
+# key: m
+# --
+(message "FORMATSTRING$0" &optional ARGS)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/not.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/not.yasnippet
new file mode 100644 (file)
index 0000000..80d3694
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: not
+# key: not
+# key: n
+# --
+(not $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/nth.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/nth.yasnippet
new file mode 100644 (file)
index 0000000..de81812
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: nth
+# key: nth
+# --
+(nth N$0 LIST)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/null.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/null.yasnippet
new file mode 100644 (file)
index 0000000..6b4010b
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: null
+# key: null
+# --
+(null $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/number-to-string.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/number-to-string.yasnippet
new file mode 100644 (file)
index 0000000..c57a930
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: number-to-string
+# key: number-to-string
+# key: nts
+# --
+(number-to-string $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/or.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/or.yasnippet
new file mode 100644 (file)
index 0000000..86eea32
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: or
+# key: or
+# key: o
+# --
+(or $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/point-max.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/point-max.yasnippet
new file mode 100644 (file)
index 0000000..5df439d
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: point-max
+# key: point-max
+# --
+(point-max)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/point-min.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/point-min.yasnippet
new file mode 100644 (file)
index 0000000..b5e58f7
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: point-min
+# key: point-min
+# key: pm
+# --
+(point-min)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/point.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/point.yasnippet
new file mode 100644 (file)
index 0000000..95b3dab
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: point
+# key: point
+# key: p
+# --
+(point)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/princ.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/princ.yasnippet
new file mode 100644 (file)
index 0000000..5c5f7db
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: princ
+# key: princ
+# --
+(princ $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/print.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/print.yasnippet
new file mode 100644 (file)
index 0000000..dc156e8
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: print
+# key: print
+# --
+(print $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/progn.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/progn.yasnippet
new file mode 100644 (file)
index 0000000..4ae43ed
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: progn
+# key: progn
+# --
+(progn $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/push.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/push.yasnippet
new file mode 100644 (file)
index 0000000..080e615
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: push
+# key: push
+# --
+(push $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/put.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/put.yasnippet
new file mode 100644 (file)
index 0000000..85f8869
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: put
+# key: put
+# --
+(put $0 PROPNAME VALUE)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/re-search-backward.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/re-search-backward.yasnippet
new file mode 100644 (file)
index 0000000..c4e82cc
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: re-search-backward
+# key: re-search-backward
+# key: rsb
+# --
+(re-search-backward REGEXP$0 &optional BOUND NOERROR COUNT)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/re-search-forward.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/re-search-forward.yasnippet
new file mode 100644 (file)
index 0000000..6e86e33
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: re-search-forward
+# key: re-search-forward
+# key: rsf
+# --
+(re-search-forward REGEXP$0 &optional BOUND NOERROR COUNT)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/region-active-p.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/region-active-p.yasnippet
new file mode 100644 (file)
index 0000000..c689118
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: region-active-p
+# key: region-active-p
+# key: rap
+# --
+(region-active-p)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/region-beginning.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/region-beginning.yasnippet
new file mode 100644 (file)
index 0000000..b696fdc
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: region-beginning
+# key: region-beginning
+# key: rb
+# --
+(region-beginning)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/region-end.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/region-end.yasnippet
new file mode 100644 (file)
index 0000000..9fe0ea8
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: region-end
+# key: region-end
+# key: re
+# --
+(region-end)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/rename-file.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/rename-file.yasnippet
new file mode 100644 (file)
index 0000000..6c47c7e
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: rename-file
+# key: rename-file
+# key: rf
+# --
+(rename-file FILE$0 NEWNAME &optional OK-IF-ALREADY-EXISTS)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/repeat.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/repeat.yasnippet
new file mode 100644 (file)
index 0000000..a46e63b
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: repeat
+# key: repeat
+# --
+(repeat $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/replace-regexp-in-string.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/replace-regexp-in-string.yasnippet
new file mode 100644 (file)
index 0000000..694717b
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: replace-regexp-in-string
+# key: replace-regexp-in-string
+# key: rris
+# --
+(replace-regexp-in-string REGEXP$0 REP STRING &optional FIXEDCASE LITERAL SUBEXP START)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/replace-regexp.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/replace-regexp.yasnippet
new file mode 100644 (file)
index 0000000..96823d6
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: replace-regexp
+# key: replace-regexp
+# key: rr
+# --
+(replace-regexp REGEXP$0 TO-STRING &optional DELIMITED START END)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/require.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/require.yasnippet
new file mode 100644 (file)
index 0000000..d26ffd6
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: require
+# key: require
+# --
+(require $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/save-buffer.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/save-buffer.yasnippet
new file mode 100644 (file)
index 0000000..009e4af
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: save-buffer
+# key: save-buffer
+# key: sb
+# --
+(save-buffer $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/save-excursion.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/save-excursion.yasnippet
new file mode 100644 (file)
index 0000000..799d2f0
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: save-excursion
+# key: save-excursion
+# key: se
+# --
+(save-excursion $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/search-backward-regexp.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/search-backward-regexp.yasnippet
new file mode 100644 (file)
index 0000000..299f2df
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: search-backward-regexp
+# key: search-backward-regexp
+# key: sbr
+# --
+(search-backward-regexp "$0" &optional BOUND NOERROR COUNT)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/search-backward.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/search-backward.yasnippet
new file mode 100644 (file)
index 0000000..27ab571
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: search-backward
+# key: search-backward
+# key: sb
+# --
+(search-backward "$0" &optional BOUND NOERROR COUNT)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/search-forward-regexp.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/search-forward-regexp.yasnippet
new file mode 100644 (file)
index 0000000..d7860d6
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: search-forward-regexp
+# key: search-forward-regexp
+# key: sfr
+# --
+(search-forward-regexp "$0" &optional BOUND NOERROR COUNT)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/search-forward.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/search-forward.yasnippet
new file mode 100644 (file)
index 0000000..09f1216
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: search-forward
+# key: search-forward
+# key: sf
+# --
+(search-forward "$0" &optional BOUND NOERROR COUNT)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/set-buffer.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/set-buffer.yasnippet
new file mode 100644 (file)
index 0000000..402ab84
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: set-buffer
+# key: set-buffer
+# key: sb
+# --
+(set-buffer $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/set-file-modes.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/set-file-modes.yasnippet
new file mode 100644 (file)
index 0000000..b64d593
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: set-file-modes
+# key: set-file-modes
+# key: sfm
+# --
+(set-file-modes $0 MODE)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/set-mark.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/set-mark.yasnippet
new file mode 100644 (file)
index 0000000..fe7a206
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: set-mark
+# key: set-mark
+# key: sm
+# --
+(set-mark $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/set.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/set.yasnippet
new file mode 100644 (file)
index 0000000..f7e83a4
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: set
+# key: set
+# --
+(set $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/setq.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/setq.yasnippet
new file mode 100644 (file)
index 0000000..3a263c6
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: setq
+# key: setq
+# key: s
+# --
+(setq $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/skip-chars-backward.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/skip-chars-backward.yasnippet
new file mode 100644 (file)
index 0000000..17c33d4
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: skip-chars-backward
+# key: skip-chars-backward
+# key: scb
+# --
+(skip-chars-backward "$0" &optional LIM)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/skip-chars-forward.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/skip-chars-forward.yasnippet
new file mode 100644 (file)
index 0000000..7b93987
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: skip-chars-forward
+# key: skip-chars-forward
+# key: scf
+# --
+(skip-chars-forward "$0" &optional LIM)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/split-string.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/split-string.yasnippet
new file mode 100644 (file)
index 0000000..9e03740
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: split-string
+# key: split-string
+# key: ss
+# --
+(split-string $0 &optional SEPARATORS OMIT-NULLS)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/string-match.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/string-match.yasnippet
new file mode 100644 (file)
index 0000000..f39c69e
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: string-match
+# key: string-match
+# key: sm
+# --
+(string-match "REGEXP$0" "STRING" &optional START)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/string-to-number.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/string-to-number.yasnippet
new file mode 100644 (file)
index 0000000..f47c9d4
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: string-to-number
+# key: string-to-number
+# key: stn
+# --
+(string-to-number "$0")
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/string.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/string.yasnippet
new file mode 100644 (file)
index 0000000..07c17f1
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: string
+# key: string
+# --
+(string $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/string=.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/string=.yasnippet
new file mode 100644 (file)
index 0000000..3a458e8
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: string=
+# key: string=
+# --
+(string= $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/stringp.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/stringp.yasnippet
new file mode 100644 (file)
index 0000000..432f6e0
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: stringp
+# key: stringp
+# --
+(stringp $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/substring.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/substring.yasnippet
new file mode 100644 (file)
index 0000000..eeb0c02
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: substring
+# key: substring
+# --
+(substring STRING$0 FROM &optional TO)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/thing-at-point.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/thing-at-point.yasnippet
new file mode 100644 (file)
index 0000000..6b78e03
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: thing-at-point
+# key: thing-at-point
+# key: tap
+# --
+(thing-at-point '$0) ; symbol, list, sexp, defun, filename, url, email, word, sentence, whitespace, line, page ...
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/unless.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/unless.yasnippet
new file mode 100644 (file)
index 0000000..bdde0cf
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: unless
+# key: unless
+# --
+(unless $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/vector.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/vector.yasnippet
new file mode 100644 (file)
index 0000000..5aea79a
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: vector
+# key: vector
+# key: v
+# --
+(vector $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/when.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/when.yasnippet
new file mode 100644 (file)
index 0000000..86d31d9
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: when
+# key: when
+# --
+(when $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/while.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/while.yasnippet
new file mode 100644 (file)
index 0000000..1802e1b
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: while
+# key: while
+# --
+(while $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/widget-get.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/widget-get.yasnippet
new file mode 100644 (file)
index 0000000..f183569
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: widget-get
+# key: widget-get
+# key: wg
+# --
+(widget-get $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/with-current-buffer.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/with-current-buffer.yasnippet
new file mode 100644 (file)
index 0000000..1e6a94e
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: with-current-buffer
+# key: with-current-buffer
+# key: wcb
+# --
+(with-current-buffer $0 )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/x-dired.process_marked.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/x-dired.process_marked.yasnippet
new file mode 100644 (file)
index 0000000..77ca69d
--- /dev/null
@@ -0,0 +1,17 @@
+# contributor: Xah Lee (XahLee.org)
+# name: process marked files in dired
+# key: x-dired
+# --
+;; idiom for processing a list of files in dired's marked files
+
+;; suppose myProcessFile is your function that takes a file path
+;; and do some processing on the file
+
+(defun dired-myProcessFile ()
+  "apply myProcessFile function to marked files in dired."
+  (interactive)
+  (require 'dired)
+  (mapc 'myProcessFile (dired-get-marked-files))
+)
+
+;; to use it, type M-x dired-myProcessFile
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/x-file.process.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/x-file.process.yasnippet
new file mode 100644 (file)
index 0000000..dc60b17
--- /dev/null
@@ -0,0 +1,18 @@
+# contributor: Xah Lee (XahLee.org)
+# name: a function that process a file
+# key: x-file
+# --
+(defun doThisFile (fpath)
+  "Process the file at path FPATH ..."
+  (let ()
+    ;; create temp buffer without undo record or font lock. (more efficient)
+    ;; first space in temp buff name is necessary
+    (set-buffer (get-buffer-create " myTemp"))
+    (insert-file-contents fpath nil nil nil t)
+
+    ;; process it ...
+    ;; (goto-char 0) ; move to begining of file's content (in case it was open)
+    ;; ... do something here
+    ;; (write-file fpath) ;; write back to the file
+
+    (kill-buffer " myTemp")))
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/x-file.read-lines.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/x-file.read-lines.yasnippet
new file mode 100644 (file)
index 0000000..e4cb092
--- /dev/null
@@ -0,0 +1,18 @@
+# contributor: Xah Lee (XahLee.org)
+# name: read lines of a file
+# key: x-file
+# --
+(defun read-lines (filePath)
+  "Return a list of lines in FILEPATH."
+  (with-temp-buffer
+    (insert-file-contents filePath)
+    (split-string
+     (buffer-string) "\n" t)) )
+
+;; process all lines
+(mapc
+ (lambda (aLine)
+   (message aLine) ; do your stuff here
+   )
+ (read-lines "inputFilePath")
+)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/x-find-replace.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/x-find-replace.yasnippet
new file mode 100644 (file)
index 0000000..b0c58ec
--- /dev/null
@@ -0,0 +1,18 @@
+# contributor: Xah Lee (XahLee.org)
+# name: find and replace on region
+# key: x-find-replace
+# --
+(defun replace-html-chars-region (start end)
+  "Replace “<” to “&lt;” and other chars in HTML.
+This works on the current region."
+  (interactive "r")
+  (save-restriction
+    (narrow-to-region start end)
+    (goto-char (point-min))
+    (while (search-forward "&" nil t) (replace-match "&amp;" nil t))
+    (goto-char (point-min))
+    (while (search-forward "<" nil t) (replace-match "&lt;" nil t))
+    (goto-char (point-min))
+    (while (search-forward ">" nil t) (replace-match "&gt;" nil t))
+    )
+  )
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/x-grabstring.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/x-grabstring.yasnippet
new file mode 100644 (file)
index 0000000..d194f2a
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: grab buffer substring
+# key: x-grabstring
+# --
+(setq $0 (buffer-substring-no-properties myStartPos myEndPos))
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/x-grabthing.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/x-grabthing.yasnippet
new file mode 100644 (file)
index 0000000..d65c1fd
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: grab word under cursor
+# key: x-grabthing
+# --
+(setq $0 (thing-at-point 'symbol))
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/x-traverse_dir.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/x-traverse_dir.yasnippet
new file mode 100644 (file)
index 0000000..df0261d
--- /dev/null
@@ -0,0 +1,7 @@
+# name: traversing a directory
+# contributor: Xah Lee (XahLee.org)
+# key: x-traverse_dir
+# --
+;; apply a function to all files in a dir
+(require 'find-lisp)
+(mapc 'my-process-file (find-lisp-find-files "~/myweb/" "\\.html$"))
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/x-word-or-region.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/x-word-or-region.yasnippet
new file mode 100644 (file)
index 0000000..b72f8b8
--- /dev/null
@@ -0,0 +1,28 @@
+# contributor: Xah Lee (XahLee.org)
+# name: Command that works on region or word
+# key: x-word-or-region
+# --
+;; example of a command that works on current word or text selection
+(defun down-case-word-or-region ()
+  "Lower case the current word or text selection."
+(interactive)
+(let (pos1 pos2 meat)
+  (if (and transient-mark-mode mark-active)
+      (setq pos1 (region-beginning)
+            pos2 (region-end))
+    (setq pos1 (car (bounds-of-thing-at-point 'symbol))
+          pos2 (cdr (bounds-of-thing-at-point 'symbol))))
+
+  ; now, pos1 and pos2 are the starting and ending positions
+  ; of the current word, or current text selection if exists
+
+  ;; put your code here.
+  $0
+  ;; Some example of things you might want to do
+  (downcase-region pos1 pos2) ; example of a func that takes region as args
+  (setq meat (buffer-substring-no-properties pos1 pos2)) ; grab the text.
+  (delete-region pos1 pos2) ; get rid of it
+  (insert "newText") ; insert your new text
+
+  )
+)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/y-or-n-p.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/y-or-n-p.yasnippet
new file mode 100644 (file)
index 0000000..7ebc503
--- /dev/null
@@ -0,0 +1,6 @@
+# contributor: Xah Lee (XahLee.org)
+# name: y-or-n-p
+# key: y-or-n-p
+# key: yonp
+# --
+(yes-or-no-p "PROMPT$0 ")
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/emacs-lisp-mode/yes-or-no-p.yasnippet b/packages/yasnippet/snippets/emacs-lisp-mode/yes-or-no-p.yasnippet
new file mode 100644 (file)
index 0000000..fe85e77
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee (XahLee.org)
+# name: yes-or-no-p
+# key: yes-or-no-p
+# --
+(yes-or-no-p "PROMPT$0 ")
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/erlang-mode/.yas-parents b/packages/yasnippet/snippets/erlang-mode/.yas-parents
new file mode 100644 (file)
index 0000000..eed5b44
--- /dev/null
@@ -0,0 +1 @@
+text-mode
diff --git a/packages/yasnippet/snippets/erlang-mode/after b/packages/yasnippet/snippets/erlang-mode/after
new file mode 100644 (file)
index 0000000..4b2eab2
--- /dev/null
@@ -0,0 +1,5 @@
+# name: after ... ->
+# key: after
+# --
+after
+    $1 -> $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/erlang-mode/begin b/packages/yasnippet/snippets/erlang-mode/begin
new file mode 100644 (file)
index 0000000..ad9a68b
--- /dev/null
@@ -0,0 +1,6 @@
+# name: begin ... end
+# key: begin
+# --
+begin
+    $0
+end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/erlang-mode/beh b/packages/yasnippet/snippets/erlang-mode/beh
new file mode 100644 (file)
index 0000000..b7696ff
--- /dev/null
@@ -0,0 +1,5 @@
+# name: -behaviour(...).
+# key: beh
+# --
+-behaviour(${1:gen_server}).
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/erlang-mode/case b/packages/yasnippet/snippets/erlang-mode/case
new file mode 100644 (file)
index 0000000..f5326fa
--- /dev/null
@@ -0,0 +1,6 @@
+# name: case ... of ... end
+# key: case
+# --
+case $1 of
+    $0
+end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/erlang-mode/compile b/packages/yasnippet/snippets/erlang-mode/compile
new file mode 100644 (file)
index 0000000..4622aa2
--- /dev/null
@@ -0,0 +1,5 @@
+# name: -compile(...).
+# key: compile
+# --
+-compile([${1:export_all}]).
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/erlang-mode/def b/packages/yasnippet/snippets/erlang-mode/def
new file mode 100644 (file)
index 0000000..bea99c3
--- /dev/null
@@ -0,0 +1,5 @@
+# name: -define(...,...).
+# key: def
+# --
+-define($1,$2).
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/erlang-mode/exp b/packages/yasnippet/snippets/erlang-mode/exp
new file mode 100644 (file)
index 0000000..dcef789
--- /dev/null
@@ -0,0 +1,6 @@
+# name: -export([]).
+# contributor: hitesh <hitesh.jasani@gmail.com>
+# key: exp
+# --
+-export([${1:start/0}]).
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/erlang-mode/fun b/packages/yasnippet/snippets/erlang-mode/fun
new file mode 100644 (file)
index 0000000..1665ef6
--- /dev/null
@@ -0,0 +1,4 @@
+# name: fun (...) -> ... end
+# key: fun
+# --
+fun ($1) -> $0 end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/erlang-mode/if b/packages/yasnippet/snippets/erlang-mode/if
new file mode 100644 (file)
index 0000000..dae3cc7
--- /dev/null
@@ -0,0 +1,7 @@
+# name: if ... -> ... ; true -> ... end
+# key: if
+# --
+if
+    $1 -> $2;
+    true -> $0
+end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/erlang-mode/ifdef b/packages/yasnippet/snippets/erlang-mode/ifdef
new file mode 100644 (file)
index 0000000..feacf74
--- /dev/null
@@ -0,0 +1,6 @@
+# name: -ifdef(...). ... -endif.
+# key: ifdef
+# --
+-ifdef($1).
+$0
+-endif.
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/erlang-mode/ifndef b/packages/yasnippet/snippets/erlang-mode/ifndef
new file mode 100644 (file)
index 0000000..7c5d931
--- /dev/null
@@ -0,0 +1,6 @@
+# name: -ifndef(...). ... -endif.
+# key: ifndef
+# --
+-ifndef($1).
+$0
+-endif.
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/erlang-mode/imp b/packages/yasnippet/snippets/erlang-mode/imp
new file mode 100644 (file)
index 0000000..5db8aaf
--- /dev/null
@@ -0,0 +1,6 @@
+# name: -import([]).
+# contributor: hitesh <hitesh.jasani@gmail.com>
+# key: imp
+# --
+-import(${1:lists}, [${2:map/2, sum/1}]).
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/erlang-mode/inc b/packages/yasnippet/snippets/erlang-mode/inc
new file mode 100644 (file)
index 0000000..47f4008
--- /dev/null
@@ -0,0 +1,5 @@
+# name: -include("...").
+# key: inc
+# --
+-include("$1").
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/erlang-mode/inc.lib b/packages/yasnippet/snippets/erlang-mode/inc.lib
new file mode 100644 (file)
index 0000000..5ca0631
--- /dev/null
@@ -0,0 +1,5 @@
+# name: -include_lib("...").
+# key: inc
+# --
+-include_lib("$1").
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/erlang-mode/loop b/packages/yasnippet/snippets/erlang-mode/loop
new file mode 100644 (file)
index 0000000..86f92a4
--- /dev/null
@@ -0,0 +1,9 @@
+# name: loop(...) -> receive _ -> loop(...) end.
+# key: loop
+# --
+${1:loop}($2) ->
+    receive
+       ${3:_} ->
+           $1($2)
+    end.
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/erlang-mode/mod b/packages/yasnippet/snippets/erlang-mode/mod
new file mode 100644 (file)
index 0000000..8cb747a
--- /dev/null
@@ -0,0 +1,7 @@
+# name: -module().
+# contributor: hitesh <hitesh.jasani@gmail.com>
+# key: mod
+# --
+-module(${1:`(file-name-nondirectory
+              (file-name-sans-extension (or (buffer-file-name) (buffer-name))))`}).
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/erlang-mode/rcv b/packages/yasnippet/snippets/erlang-mode/rcv
new file mode 100644 (file)
index 0000000..f5bdaa2
--- /dev/null
@@ -0,0 +1,6 @@
+# name: receive ... -> ... end
+# key: rcv
+# --
+receive
+    $1 -> $0
+end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/erlang-mode/rcv.after b/packages/yasnippet/snippets/erlang-mode/rcv.after
new file mode 100644 (file)
index 0000000..687b78d
--- /dev/null
@@ -0,0 +1,7 @@
+# name: receive after ... -> ... end
+# key: rcv
+# --
+receive
+after
+    $1 -> $0
+end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/erlang-mode/rec b/packages/yasnippet/snippets/erlang-mode/rec
new file mode 100644 (file)
index 0000000..b3819a6
--- /dev/null
@@ -0,0 +1,5 @@
+# name: -record(...,{...}).
+# key: rec
+# --
+-record($1,{$2}).
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/erlang-mode/try b/packages/yasnippet/snippets/erlang-mode/try
new file mode 100644 (file)
index 0000000..0ff10a8
--- /dev/null
@@ -0,0 +1,8 @@
+# name: try ... of ... catch after end
+# key: try
+# --
+try $1 of
+    $0
+catch
+after
+end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/erlang-mode/undef b/packages/yasnippet/snippets/erlang-mode/undef
new file mode 100644 (file)
index 0000000..bd51fe6
--- /dev/null
@@ -0,0 +1,5 @@
+# name: -undef(...).
+# key: undef
+# --
+-undef($1).
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/.yas-parents b/packages/yasnippet/snippets/f90-mode/.yas-parents
new file mode 100644 (file)
index 0000000..eed5b44
--- /dev/null
@@ -0,0 +1 @@
+text-mode
diff --git a/packages/yasnippet/snippets/f90-mode/au b/packages/yasnippet/snippets/f90-mode/au
new file mode 100644 (file)
index 0000000..1b638db
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: automatic
+# key: au
+# --
+automatic $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/bd b/packages/yasnippet/snippets/f90-mode/bd
new file mode 100644 (file)
index 0000000..081b039
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: block data
+# key: bd
+# --
+block data $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/c b/packages/yasnippet/snippets/f90-mode/c
new file mode 100644 (file)
index 0000000..cf28d36
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: continue
+# key: c
+# --
+continue $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/ch b/packages/yasnippet/snippets/f90-mode/ch
new file mode 100644 (file)
index 0000000..db43003
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: character
+# key: ch
+# --
+character $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/cx b/packages/yasnippet/snippets/f90-mode/cx
new file mode 100644 (file)
index 0000000..70e9163
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: complex
+# key: cx
+# --
+complex $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/dc b/packages/yasnippet/snippets/f90-mode/dc
new file mode 100644 (file)
index 0000000..df5f026
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: double complex
+# key: dc
+# --
+double complex $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/do b/packages/yasnippet/snippets/f90-mode/do
new file mode 100644 (file)
index 0000000..c3aa1f2
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: do while (...) end do
+# key: do
+# --
+do while (${1:condition})
+   $0
+end do
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/dp b/packages/yasnippet/snippets/f90-mode/dp
new file mode 100644 (file)
index 0000000..e705b7c
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: double precision
+# key: dp
+# --
+double precision $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/eq b/packages/yasnippet/snippets/f90-mode/eq
new file mode 100644 (file)
index 0000000..1ace4ce
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: equivalence
+# key: eq
+# --
+equivalence $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/ib b/packages/yasnippet/snippets/f90-mode/ib
new file mode 100644 (file)
index 0000000..3fd8fbd
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: implicit byte
+# key: ib
+# --
+implicit byte $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/ic b/packages/yasnippet/snippets/f90-mode/ic
new file mode 100644 (file)
index 0000000..516d139
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: implicit complex
+# key: ic
+# --
+implicit complex $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/ich b/packages/yasnippet/snippets/f90-mode/ich
new file mode 100644 (file)
index 0000000..f6b1f80
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: implicit character
+# key: ich
+# --
+implicit character $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/if b/packages/yasnippet/snippets/f90-mode/if
new file mode 100644 (file)
index 0000000..f4a42e1
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: if then end if
+# key: if
+# --
+if ( ${1:condition} ) then
+   $0
+end if
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/ii b/packages/yasnippet/snippets/f90-mode/ii
new file mode 100644 (file)
index 0000000..bd89e90
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: implicit integer
+# key: ii
+# --
+implicit integer $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/il b/packages/yasnippet/snippets/f90-mode/il
new file mode 100644 (file)
index 0000000..0ce006e
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: implicit logical
+# key: il
+# --
+implicit logical $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/in b/packages/yasnippet/snippets/f90-mode/in
new file mode 100644 (file)
index 0000000..a9d84a1
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: implicit none
+# key: in
+# --
+implicit none
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/inc b/packages/yasnippet/snippets/f90-mode/inc
new file mode 100644 (file)
index 0000000..cc761bb
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: include
+# key: inc
+# --
+include $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/intr b/packages/yasnippet/snippets/f90-mode/intr
new file mode 100644 (file)
index 0000000..689f20a
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: intrinsic
+# key: intr
+# --
+intrinsic $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/ir b/packages/yasnippet/snippets/f90-mode/ir
new file mode 100644 (file)
index 0000000..77ddea9
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: implicit real
+# key: ir
+# --
+implicit real $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/l b/packages/yasnippet/snippets/f90-mode/l
new file mode 100644 (file)
index 0000000..c48b11e
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: logical
+# key: l
+# --
+logical $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/pa b/packages/yasnippet/snippets/f90-mode/pa
new file mode 100644 (file)
index 0000000..d92f75b
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: parameter
+# key: pa
+# --
+parameter $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/pr b/packages/yasnippet/snippets/f90-mode/pr
new file mode 100644 (file)
index 0000000..f570d5f
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: program ... end program ...
+# key: pr
+# --
+program ${1:name}
+  $0
+end program ${1:name}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/re b/packages/yasnippet/snippets/f90-mode/re
new file mode 100644 (file)
index 0000000..a42e5a9
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: read (*,*)
+# key: re
+# --
+read (${1:*},${2:*}) $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/st b/packages/yasnippet/snippets/f90-mode/st
new file mode 100644 (file)
index 0000000..eda6f2e
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: structure
+# key: st
+# --
+structure $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/su b/packages/yasnippet/snippets/f90-mode/su
new file mode 100644 (file)
index 0000000..5b3e3cf
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: subroutine
+# key: su
+# --
+subroutine $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/f90-mode/wr b/packages/yasnippet/snippets/f90-mode/wr
new file mode 100644 (file)
index 0000000..0c9b4e6
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Li Zhu <http://www.zhuli.name>
+# name: write (*,*)
+# key: wr
+# --
+write (${1:*},${2:*}) $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/.yas-make-groups b/packages/yasnippet/snippets/html-mode/.yas-make-groups
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/packages/yasnippet/snippets/html-mode/.yas-parents b/packages/yasnippet/snippets/html-mode/.yas-parents
new file mode 100644 (file)
index 0000000..eed5b44
--- /dev/null
@@ -0,0 +1 @@
+text-mode
diff --git a/packages/yasnippet/snippets/html-mode/b.yasnippet b/packages/yasnippet/snippets/html-mode/b.yasnippet
new file mode 100644 (file)
index 0000000..c7873ca
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee xahlee.org
+# name: <b>...</b>
+# key: b
+# --
+<b>$0</b>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/body b/packages/yasnippet/snippets/html-mode/body
new file mode 100644 (file)
index 0000000..d6c5db3
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <body>...</body>
+# key: body
+# --
+<body$1>
+  $0
+</body>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/br b/packages/yasnippet/snippets/html-mode/br
new file mode 100644 (file)
index 0000000..9305a50
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <br />
+# key: br
+# --
+<br />
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/code b/packages/yasnippet/snippets/html-mode/code
new file mode 100644 (file)
index 0000000..96d47e0
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <code>...</code>
+# key: code
+# --
+<code>
+  $0
+</code>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/code.class b/packages/yasnippet/snippets/html-mode/code.class
new file mode 100644 (file)
index 0000000..2d18af7
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <code class="...">...</code>
+# key: code
+# --
+<code class="$1">
+  $0
+</code>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/div b/packages/yasnippet/snippets/html-mode/div
new file mode 100644 (file)
index 0000000..bce4c3a
--- /dev/null
@@ -0,0 +1,4 @@
+# name: <div...>...</div>
+# key: div
+# --
+<div${1: id="${2:some_id}"}${3: class="${4:some_class}"}>$0</div>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/div.class b/packages/yasnippet/snippets/html-mode/div.class
new file mode 100644 (file)
index 0000000..e1a4b03
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <div class="...">...</div>
+# key: div
+# --
+<div class="$1">
+  $0
+</div>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/div.id b/packages/yasnippet/snippets/html-mode/div.id
new file mode 100644 (file)
index 0000000..8682aa1
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <div id="...">...</div>
+# key: div
+# --
+<div id="$1">
+  $0
+</div>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/div.id-class b/packages/yasnippet/snippets/html-mode/div.id-class
new file mode 100644 (file)
index 0000000..452cd9a
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <div id="..." class="...">...</div>
+# key: div
+# --
+<div id="$1" class="$2">
+  $0
+</div>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/dov b/packages/yasnippet/snippets/html-mode/dov
new file mode 100644 (file)
index 0000000..d3bdc17
--- /dev/null
@@ -0,0 +1,12 @@
+# name: <dov...>...</dov>
+# key: dov
+# --
+a mirror up here $3
+
+
+<dov ${1:id="${2:some_id and here comes another nested field: ${3:nested_shit}}"}>
+    $0
+</dov>
+<dov $1>
+    actually some other shit and $3
+</dov>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/form b/packages/yasnippet/snippets/html-mode/form
new file mode 100644 (file)
index 0000000..de06267
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+#name :<form method="..." id="..." action="..."></form>
+# key: form
+# --
+<form method="$1" id="$2" action="$3">
+  $0
+</form>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/head b/packages/yasnippet/snippets/html-mode/head
new file mode 100644 (file)
index 0000000..c5c0d0e
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <head>...</head>
+# key: head
+# --
+<head>
+  $0
+</head>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/header/h1 b/packages/yasnippet/snippets/html-mode/header/h1
new file mode 100644 (file)
index 0000000..4d21764
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <h1>...</h1>
+# key: h1
+# --
+<h1>$1</h1>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/header/h2 b/packages/yasnippet/snippets/html-mode/header/h2
new file mode 100644 (file)
index 0000000..1cca1d5
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <h2>...</h2>
+# key: h2
+# --
+<h2>$1</h2>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/header/h3 b/packages/yasnippet/snippets/html-mode/header/h3
new file mode 100644 (file)
index 0000000..8e50a6d
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <h3>...</h3>
+# key: h3
+# --
+<h3>$1</h3>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/header/h4 b/packages/yasnippet/snippets/html-mode/header/h4
new file mode 100644 (file)
index 0000000..08c853e
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <h4>...</h4>
+# key: h4
+# --
+<h4>$1</h4>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/header/h5 b/packages/yasnippet/snippets/html-mode/header/h5
new file mode 100644 (file)
index 0000000..951122e
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <h5>...</h5>
+# key: h5
+# --
+<h5>$1</h5>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/header/h6 b/packages/yasnippet/snippets/html-mode/header/h6
new file mode 100644 (file)
index 0000000..f7da2ee
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <h6>...</h6>
+# key: h6
+# --
+<h6>$1</h6>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/hr b/packages/yasnippet/snippets/html-mode/hr
new file mode 100644 (file)
index 0000000..a6eb0ea
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <hr />
+# key: hr
+# --
+<hr />
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/href b/packages/yasnippet/snippets/html-mode/href
new file mode 100644 (file)
index 0000000..b384653
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <a href="...">...</a>
+# key: href
+# --
+<a href="$1">$2</a>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/html b/packages/yasnippet/snippets/html-mode/html
new file mode 100644 (file)
index 0000000..0484de0
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <html>...</html>
+# key: html
+# --
+<html>
+  $0
+</html>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/html.xmlns b/packages/yasnippet/snippets/html-mode/html.xmlns
new file mode 100644 (file)
index 0000000..1b11f35
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <html xmlns="...">...</html>
+# key: html
+# --
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="${1:en}" lang="${2:en}">
+  $0
+</html>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/i.yasnippet b/packages/yasnippet/snippets/html-mode/i.yasnippet
new file mode 100644 (file)
index 0000000..ffd051f
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Xah Lee xahlee.org
+# name: <i>...</i>
+# key: i
+# --
+<i>$0</i>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/img b/packages/yasnippet/snippets/html-mode/img
new file mode 100644 (file)
index 0000000..e726c00
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <img src="..." class="..." alt="..." />
+# key: img
+# --
+<img src="$1" class="$2" alt="$3" />
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/input b/packages/yasnippet/snippets/html-mode/input
new file mode 100644 (file)
index 0000000..2f8c79a
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <input ... />
+# key: input
+# --
+<input type="$1" name="$2" value="$3" />
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/link.stylesheet b/packages/yasnippet/snippets/html-mode/link.stylesheet
new file mode 100644 (file)
index 0000000..e10ee8b
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <link stylesheet="..." />
+# key: link
+# --
+<link rel="${1:stylesheet}" href="${2:url}" type="${3:text/css}" media="${4:screen}" />
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/link.stylesheet-ie b/packages/yasnippet/snippets/html-mode/link.stylesheet-ie
new file mode 100644 (file)
index 0000000..752f9e9
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <!--[if IE]><link stylesheet="..." /><![endif]-->
+# key: link
+# --
+<!--[if IE]>
+<link rel="${1:stylesheet}" href="${2:url}" type="${3:text/css}" media="${4:screen}" />
+<![endif]-->
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/list/dd b/packages/yasnippet/snippets/html-mode/list/dd
new file mode 100644 (file)
index 0000000..e48a644
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Rodrigo Setti <rodrigosetti@gmail.com>
+# name: <dd> ... </dd>
+# key: dd
+# --
+<dd>$1</dd>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/list/dl b/packages/yasnippet/snippets/html-mode/list/dl
new file mode 100644 (file)
index 0000000..67792ad
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Rodrigo Setti <rodrigosetti@gmail.com>
+# name: <dl> ... </dl>
+# key: dl
+# --
+<dl>
+    $0
+</dl>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/list/dl.id b/packages/yasnippet/snippets/html-mode/list/dl.id
new file mode 100644 (file)
index 0000000..b4b92cb
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Rodrigo Setti <rodrigosetti@gmail.com>
+# name: <dl> ... </dl>
+# key: dl
+# --
+<dl id="$1">
+    $0
+</dl>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/list/dt b/packages/yasnippet/snippets/html-mode/list/dt
new file mode 100644 (file)
index 0000000..85d62e4
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Rodrigo Setti <rodrigosetti@gmail.com>
+# name: <dt> ... </dt>
+# key: dt
+# --
+<dt>$1</dt>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/list/li b/packages/yasnippet/snippets/html-mode/list/li
new file mode 100644 (file)
index 0000000..fe7a1f1
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <li>...</li>
+# key: li
+# --
+<li>$1</li>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/list/li.class b/packages/yasnippet/snippets/html-mode/list/li.class
new file mode 100644 (file)
index 0000000..7ff0b12
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <li class="...">...</li>
+# key: li
+# --
+<li class="$1">$2</li>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/list/ol b/packages/yasnippet/snippets/html-mode/list/ol
new file mode 100644 (file)
index 0000000..d4b74ac
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <ol>...</ol>
+# key: ol
+# --
+<ol>
+  $0
+</ol>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/list/ol.class b/packages/yasnippet/snippets/html-mode/list/ol.class
new file mode 100644 (file)
index 0000000..1c037da
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <ol class="...">...</ol>
+# key: ol
+# --
+<ol class="$1">
+  $0
+</ol>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/list/ol.id b/packages/yasnippet/snippets/html-mode/list/ol.id
new file mode 100644 (file)
index 0000000..d20101e
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <ol id="...">...</ol>
+# key: ol
+# --
+<ol id="$1">
+  $0
+</ol>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/list/ul b/packages/yasnippet/snippets/html-mode/list/ul
new file mode 100644 (file)
index 0000000..4f0a9ae
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <ul>...</ul>
+# key: ul
+# --
+<ul>
+  $0
+</ul>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/list/ul.class b/packages/yasnippet/snippets/html-mode/list/ul.class
new file mode 100644 (file)
index 0000000..e11c736
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <ul class="...">...</ul>
+# key: ul
+# --
+<ul class="$1">
+  $0
+</ul>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/list/ul.id b/packages/yasnippet/snippets/html-mode/list/ul.id
new file mode 100644 (file)
index 0000000..014f2d0
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <ul id="...">...</ul>
+# key: ul
+# --
+<ul id="$1">
+  $0
+</ul>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/mailto b/packages/yasnippet/snippets/html-mode/mailto
new file mode 100644 (file)
index 0000000..0f1b9aa
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <a href="mailto:...@...">...</a>
+# key: mailto
+# --
+<a href="mailto:$1@$2">$0</a>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/meta/doctype b/packages/yasnippet/snippets/html-mode/meta/doctype
new file mode 100644 (file)
index 0000000..ab34905
--- /dev/null
@@ -0,0 +1,4 @@
+# name: Doctype HTML 4.01 Strict
+# key: doctype
+# --
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/meta/doctype.xhml1 b/packages/yasnippet/snippets/html-mode/meta/doctype.xhml1
new file mode 100644 (file)
index 0000000..3671cf5
--- /dev/null
@@ -0,0 +1,4 @@
+# name: DocType XHTML 1.0 frameset
+# key: doctype
+# --
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/meta/doctype.xhtml1_1 b/packages/yasnippet/snippets/html-mode/meta/doctype.xhtml1_1
new file mode 100644 (file)
index 0000000..bb3e709
--- /dev/null
@@ -0,0 +1,4 @@
+# name: DocType XHTML 1.1
+# key: doctype
+# --
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/meta/doctype.xhtml1_strict b/packages/yasnippet/snippets/html-mode/meta/doctype.xhtml1_strict
new file mode 100644 (file)
index 0000000..4e4c567
--- /dev/null
@@ -0,0 +1,4 @@
+# name: DocType XHTML 1.0 Strict
+# key: doctype
+# --
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/meta/doctype.xhtml1_transitional b/packages/yasnippet/snippets/html-mode/meta/doctype.xhtml1_transitional
new file mode 100644 (file)
index 0000000..d1ae7f9
--- /dev/null
@@ -0,0 +1,4 @@
+# name: DocType XHTML 1.0 Transitional
+# key: doctype
+# --
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/meta/meta b/packages/yasnippet/snippets/html-mode/meta/meta
new file mode 100644 (file)
index 0000000..235eb76
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <meta name="..." content="..." />
+# key: meta
+# --
+<meta name="${1:generator}" content="${2:content}" />
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/meta/meta.http-equiv b/packages/yasnippet/snippets/html-mode/meta/meta.http-equiv
new file mode 100644 (file)
index 0000000..ef38ed8
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <meta http-equiv="..." content="..." />
+# key: meta
+# --
+<meta http-equiv="${1:Content-Type}" content="${2:text/html; charset=UTF-8}" />
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/p b/packages/yasnippet/snippets/html-mode/p
new file mode 100644 (file)
index 0000000..69fca09
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <p>...</p>
+# key: p
+# --
+<p>$1</p>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/pre b/packages/yasnippet/snippets/html-mode/pre
new file mode 100644 (file)
index 0000000..040b8f5
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <pre>...</pre>
+# key: pre
+# --
+<pre>
+  $0
+</pre>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/q.yasnippet b/packages/yasnippet/snippets/html-mode/q.yasnippet
new file mode 100644 (file)
index 0000000..dbaab06
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Xah Lee xahlee.org
+# name: <blockquote>...</blockquote>
+# key: q
+# --
+<blockquote>
+$0
+</blockquote>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/quote b/packages/yasnippet/snippets/html-mode/quote
new file mode 100644 (file)
index 0000000..a579067
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <blockquote>...</blockquote>
+# key: quote
+# --
+<blockquote>
+  $1
+</blockquote>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/script.javascript b/packages/yasnippet/snippets/html-mode/script.javascript
new file mode 100644 (file)
index 0000000..c240755
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+#name :<script type="text/javascript">...</script>
+# key: script
+# --
+<script type="text/javascript">
+  $0
+</script>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/script.javascript-src b/packages/yasnippet/snippets/html-mode/script.javascript-src
new file mode 100644 (file)
index 0000000..fd5758d
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+#name :<script type="text/javascript" src="..."></script>
+# key: script
+# --
+<script type="text/javascript" src="$1"></script>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/span b/packages/yasnippet/snippets/html-mode/span
new file mode 100644 (file)
index 0000000..14c2ca7
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <span>...</span>
+# key: span
+# --
+<span>$1</span>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/span.class b/packages/yasnippet/snippets/html-mode/span.class
new file mode 100644 (file)
index 0000000..a496aaa
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <span class="...">...</span>
+# key: span
+# --
+<span class="$1">$2</span>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/span.id b/packages/yasnippet/snippets/html-mode/span.id
new file mode 100644 (file)
index 0000000..0dc1ee1
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <span id="...">...</span>
+# key: span
+# --
+<span id="$1">$2</span>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/style b/packages/yasnippet/snippets/html-mode/style
new file mode 100644 (file)
index 0000000..e159a34
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <style type="text/css" media="...">...</style>
+# key: style
+# --
+<style type="text/css" media="${1:screen}">
+  $0
+</style>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/table/table b/packages/yasnippet/snippets/html-mode/table/table
new file mode 100644 (file)
index 0000000..b3a180f
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <table ...>...</table>
+# key: table
+# --
+<table width="$1" cellspacing="$2" cellpadding="$3" border="$4">
+  $0
+</table>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/table/td b/packages/yasnippet/snippets/html-mode/table/td
new file mode 100644 (file)
index 0000000..a87892e
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <td>...</td>
+# key: td
+# --
+<td$1>$2</td>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/table/th b/packages/yasnippet/snippets/html-mode/table/th
new file mode 100644 (file)
index 0000000..0a07ac1
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <th>...</th>
+# key: th
+# --
+<th$1>$2</th>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/table/tr b/packages/yasnippet/snippets/html-mode/table/tr
new file mode 100644 (file)
index 0000000..15e8fc3
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <tr>...</tr>
+# key: tr
+# --
+<tr>
+  $0
+</tr>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/textarea b/packages/yasnippet/snippets/html-mode/textarea
new file mode 100644 (file)
index 0000000..650cc51
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <textarea ...></textarea>
+# key: textarea
+# --
+<textarea name="$1" id="$2" rows="$3" cols="$4" tabindex="$5"></textarea>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/html-mode/title b/packages/yasnippet/snippets/html-mode/title
new file mode 100644 (file)
index 0000000..d9d0ddb
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Jimmy Wu <frozenthrone88@gmail.com>
+# name: <title>...</title>
+# key: title
+# --
+<title>$1</title>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/js-mode/assert.yasnippet b/packages/yasnippet/snippets/js-mode/assert.yasnippet
new file mode 100644 (file)
index 0000000..59ec614
--- /dev/null
@@ -0,0 +1,5 @@
+# -*- mode: snippet -*-
+# name: assert
+# key: assert
+# --
+assert.${1:equal}($0);
diff --git a/packages/yasnippet/snippets/js-mode/cb.yasnippet b/packages/yasnippet/snippets/js-mode/cb.yasnippet
new file mode 100644 (file)
index 0000000..9453e6a
--- /dev/null
@@ -0,0 +1,7 @@
+# -*- mode: snippet -*-
+# name: cb
+# key: cb
+# --
+function(error, $1){
+$0
+}
diff --git a/packages/yasnippet/snippets/js-mode/com.yasnippet b/packages/yasnippet/snippets/js-mode/com.yasnippet
new file mode 100644 (file)
index 0000000..1eff9fe
--- /dev/null
@@ -0,0 +1,10 @@
+# -*- mode: snippet -*-
+# name: com
+# key: com
+# --
+
+/**
+ * $0
+ * @param {${1:String}} $2
+ * @return {${3:String}}
+ */
diff --git a/packages/yasnippet/snippets/js-mode/describe.yasnippet b/packages/yasnippet/snippets/js-mode/describe.yasnippet
new file mode 100644 (file)
index 0000000..c40bae7
--- /dev/null
@@ -0,0 +1,7 @@
+# -*- mode: snippet -*-
+# name: desc
+# key: desc
+# --
+describe('$1', function(){
+$2
+});
diff --git a/packages/yasnippet/snippets/js-mode/err.snippet b/packages/yasnippet/snippets/js-mode/err.snippet
new file mode 100644 (file)
index 0000000..a4b713b
--- /dev/null
@@ -0,0 +1,9 @@
+# -*- mode: snippet -*-
+# name: err
+# key: err
+# --
+if(${1:error}){
+  callback($1);
+  return;
+}
+$2
diff --git a/packages/yasnippet/snippets/js-mode/error.snippet b/packages/yasnippet/snippets/js-mode/error.snippet
new file mode 100644 (file)
index 0000000..1c99ad2
--- /dev/null
@@ -0,0 +1,9 @@
+# -*- mode: snippet -*-
+# name: error
+# key: error
+# --
+if(${1:error}){
+  callback($1);
+  return;
+}
+$2
diff --git a/packages/yasnippet/snippets/js-mode/expect.yasnippet b/packages/yasnippet/snippets/js-mode/expect.yasnippet
new file mode 100644 (file)
index 0000000..8e0879e
--- /dev/null
@@ -0,0 +1,6 @@
+# -*- mode: snippet -*-
+# name: expect
+# key: expect
+# --
+expect($1).to.${2:equal}($3);
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/js-mode/exports.yasnippet b/packages/yasnippet/snippets/js-mode/exports.yasnippet
new file mode 100644 (file)
index 0000000..6e183cd
--- /dev/null
@@ -0,0 +1,7 @@
+# -*- mode: snippet -*-
+# name: exports
+# key: exports
+# --
+module.exports = {
+$0
+};
diff --git a/packages/yasnippet/snippets/js-mode/fn.yasnippet b/packages/yasnippet/snippets/js-mode/fn.yasnippet
new file mode 100644 (file)
index 0000000..67294fc
--- /dev/null
@@ -0,0 +1,7 @@
+# -*- mode: snippet -*-
+# name: fn
+# key: fn
+# --
+function$1($2){
+$0
+}
diff --git a/packages/yasnippet/snippets/js-mode/for.yasnippet b/packages/yasnippet/snippets/js-mode/for.yasnippet
new file mode 100644 (file)
index 0000000..97d772f
--- /dev/null
@@ -0,0 +1,9 @@
+# -*- mode: snippet -*-
+# name: for
+# key: for
+# --
+var ${1:i} = ${2:-1}, len = $3.length;
+
+for(; ++$1 < len;){
+  $4
+}
diff --git a/packages/yasnippet/snippets/js-mode/id.yasnippet b/packages/yasnippet/snippets/js-mode/id.yasnippet
new file mode 100644 (file)
index 0000000..47f00b9
--- /dev/null
@@ -0,0 +1,5 @@
+# -*- mode: snippet -*-
+# name: id
+# key: id
+# --
+document.getElementById('$0');
diff --git a/packages/yasnippet/snippets/js-mode/if.yasnippet b/packages/yasnippet/snippets/js-mode/if.yasnippet
new file mode 100644 (file)
index 0000000..0fac855
--- /dev/null
@@ -0,0 +1,7 @@
+# -*- mode: snippet -*-
+# name: if
+# key: if
+# --
+if( ${1} ){
+$0
+}
diff --git a/packages/yasnippet/snippets/js-mode/invoc.yasnippet b/packages/yasnippet/snippets/js-mode/invoc.yasnippet
new file mode 100644 (file)
index 0000000..cf46321
--- /dev/null
@@ -0,0 +1,7 @@
+# -*- mode: snippet -*-
+# name: invoc
+# key: invoc
+# --
+(function($1){
+$0
+})($2);
diff --git a/packages/yasnippet/snippets/js-mode/it.yasnippet b/packages/yasnippet/snippets/js-mode/it.yasnippet
new file mode 100644 (file)
index 0000000..161d51f
--- /dev/null
@@ -0,0 +1,7 @@
+# -*- mode: snippet -*-
+# name: it
+# key: it
+# --
+it('$1', function(done){
+$2
+});
diff --git a/packages/yasnippet/snippets/js-mode/log.yasnippet b/packages/yasnippet/snippets/js-mode/log.yasnippet
new file mode 100644 (file)
index 0000000..19ff1be
--- /dev/null
@@ -0,0 +1,5 @@
+# -*- mode: snippet -*-
+# name: log
+# key: log
+# --
+console.${1:log}( $0 );
diff --git a/packages/yasnippet/snippets/js-mode/method.yasnippet b/packages/yasnippet/snippets/js-mode/method.yasnippet
new file mode 100644 (file)
index 0000000..67fb56a
--- /dev/null
@@ -0,0 +1,7 @@
+# -*- mode: snippet -*-
+# name: method
+# key: method
+# --
+$1.prototype.$2 = function($3){
+${0}
+};
diff --git a/packages/yasnippet/snippets/js-mode/mod.yasnippet b/packages/yasnippet/snippets/js-mode/mod.yasnippet
new file mode 100644 (file)
index 0000000..c1b9867
--- /dev/null
@@ -0,0 +1,11 @@
+# -*- mode: snippet -*-
+# name: mod
+# key: mod
+# --
+var $1 = require("${2:$1}")$3
+
+module.exports = {
+  $4: $4$5
+};
+
+$0
diff --git a/packages/yasnippet/snippets/js-mode/prop.yasnippet b/packages/yasnippet/snippets/js-mode/prop.yasnippet
new file mode 100644 (file)
index 0000000..dc234c7
--- /dev/null
@@ -0,0 +1,19 @@
+# -*- mode: snippet -*-
+# name: prop
+# key: prop
+# --
+
+var $1 = (function(){
+
+  var value = undefined;
+
+  return function $1(newValue){
+
+    if( $1.arguments.length > 0 ){
+      value = newValue;
+    }
+
+    return value;
+  };
+
+})();
diff --git a/packages/yasnippet/snippets/js-mode/proto.yasnippet b/packages/yasnippet/snippets/js-mode/proto.yasnippet
new file mode 100644 (file)
index 0000000..c6fe215
--- /dev/null
@@ -0,0 +1,5 @@
+# -*- mode: snippet -*-
+# name: proto
+# key: proto
+# --
+$1.prototype.$2 = $0
diff --git a/packages/yasnippet/snippets/js-mode/rq.yasnippet b/packages/yasnippet/snippets/js-mode/rq.yasnippet
new file mode 100644 (file)
index 0000000..864534d
--- /dev/null
@@ -0,0 +1,5 @@
+# -*- mode: snippet -*-
+# name: rq
+# key: rq
+# --
+$1 = require("${2:$1}")$0
diff --git a/packages/yasnippet/snippets/js-mode/rt.yasnippet b/packages/yasnippet/snippets/js-mode/rt.yasnippet
new file mode 100644 (file)
index 0000000..d9a5bdf
--- /dev/null
@@ -0,0 +1,5 @@
+# -*- mode: snippet -*-
+# name: rt
+# key: rt
+# --
+return$0;
diff --git a/packages/yasnippet/snippets/js-mode/slice.yasnippet b/packages/yasnippet/snippets/js-mode/slice.yasnippet
new file mode 100644 (file)
index 0000000..2dd65be
--- /dev/null
@@ -0,0 +1,5 @@
+# -*- mode: snippet -*-
+# name: slice
+# key: slice
+# --
+Array.prototype.slice.${1:call}($0);
diff --git a/packages/yasnippet/snippets/js-mode/super.yasnippet b/packages/yasnippet/snippets/js-mode/super.yasnippet
new file mode 100644 (file)
index 0000000..4638026
--- /dev/null
@@ -0,0 +1,5 @@
+# -*- mode: snippet -*-
+# name: super
+# key: super
+# --
+$1.prototype.${2:constructor}.${3:call}($0);
diff --git a/packages/yasnippet/snippets/js-mode/switch.yasnippet b/packages/yasnippet/snippets/js-mode/switch.yasnippet
new file mode 100644 (file)
index 0000000..5e4fc3f
--- /dev/null
@@ -0,0 +1,7 @@
+# -*- mode: snippet -*-
+# name: switch
+# key: switch
+# --
+switch($1){
+$0
+};
diff --git a/packages/yasnippet/snippets/js-mode/throw.yasnippet b/packages/yasnippet/snippets/js-mode/throw.yasnippet
new file mode 100644 (file)
index 0000000..dbef383
--- /dev/null
@@ -0,0 +1,5 @@
+# -*- mode: snippet -*-
+# name: throw
+# key: throw
+# --
+throw new Error("$1");
diff --git a/packages/yasnippet/snippets/js-mode/try.yasnippet b/packages/yasnippet/snippets/js-mode/try.yasnippet
new file mode 100644 (file)
index 0000000..903378f
--- /dev/null
@@ -0,0 +1,9 @@
+# -*- mode: snippet -*-
+# name: try
+# key: try
+# --
+try {
+  $1
+} catch(error) {
+  $0
+}
diff --git a/packages/yasnippet/snippets/js-mode/var.yasnippet b/packages/yasnippet/snippets/js-mode/var.yasnippet
new file mode 100644 (file)
index 0000000..77d52a5
--- /dev/null
@@ -0,0 +1,5 @@
+# -*- mode: snippet -*-
+# name: var
+# key: var
+# --
+var $1 = $0
diff --git a/packages/yasnippet/snippets/js-mode/wh.yasnippet b/packages/yasnippet/snippets/js-mode/wh.yasnippet
new file mode 100644 (file)
index 0000000..f733ac4
--- /dev/null
@@ -0,0 +1,7 @@
+# -*- mode: snippet -*-
+# name: wh
+# key: wh
+# --
+while($1){
+$0
+}
diff --git a/packages/yasnippet/snippets/js-mode/while.yasnippet b/packages/yasnippet/snippets/js-mode/while.yasnippet
new file mode 100644 (file)
index 0000000..9eff9df
--- /dev/null
@@ -0,0 +1,10 @@
+# -*- mode: snippet -*-
+# name: while
+# key: while
+# --
+
+var i = $1.length;
+
+while( i -- ){
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/latex-mode/.yas-parents b/packages/yasnippet/snippets/latex-mode/.yas-parents
new file mode 100644 (file)
index 0000000..eed5b44
--- /dev/null
@@ -0,0 +1 @@
+text-mode
diff --git a/packages/yasnippet/snippets/latex-mode/begin b/packages/yasnippet/snippets/latex-mode/begin
new file mode 100644 (file)
index 0000000..cb08546
--- /dev/null
@@ -0,0 +1,8 @@
+# contributor: Rodrigo Setti <rodrigosetti@gmail.com>
+# name: \begin{environment} ... \end{environment}
+# key: begin
+# --
+
+\begin{${1:environment}}
+$0
+\end{$1}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/markdown-mode/+ b/packages/yasnippet/snippets/markdown-mode/+
new file mode 100644 (file)
index 0000000..129ce8e
--- /dev/null
@@ -0,0 +1,6 @@
+# name: Unordered List
+# contributor: Peng Deng <dengpeng@gmail.com>
+# key: +
+# --
++ ${1:Text}
++$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/markdown-mode/- b/packages/yasnippet/snippets/markdown-mode/-
new file mode 100644 (file)
index 0000000..d652207
--- /dev/null
@@ -0,0 +1,6 @@
+# name: Unordered List
+# contributor: Peng Deng <dengpeng@gmail.com>
+# key: -
+# --
+- ${1:Text}
+-$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/markdown-mode/.yas-parents b/packages/yasnippet/snippets/markdown-mode/.yas-parents
new file mode 100644 (file)
index 0000000..eed5b44
--- /dev/null
@@ -0,0 +1 @@
+text-mode
diff --git a/packages/yasnippet/snippets/markdown-mode/_ b/packages/yasnippet/snippets/markdown-mode/_
new file mode 100644 (file)
index 0000000..7dc839a
--- /dev/null
@@ -0,0 +1,5 @@
+# name: Emphasis
+# contributor: Peng Deng <dengpeng@gmail.com>
+# key: _
+# --
+_${1:Text}_ $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/markdown-mode/__ b/packages/yasnippet/snippets/markdown-mode/__
new file mode 100644 (file)
index 0000000..c8c14a6
--- /dev/null
@@ -0,0 +1,5 @@
+# name: Strong
+# contributor: Peng Deng <dengpeng@gmail.com>
+# key: __
+# --
+**${1:Text}** $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/markdown-mode/` b/packages/yasnippet/snippets/markdown-mode/`
new file mode 100644 (file)
index 0000000..d28b42c
--- /dev/null
@@ -0,0 +1,5 @@
+# name: Inline Code
+# contributor: Peng Deng <dengpeng@gmail.com>
+# key: `
+# --
+\`${1:Code}\` $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/markdown-mode/h1.1 b/packages/yasnippet/snippets/markdown-mode/h1.1
new file mode 100644 (file)
index 0000000..a5f49c4
--- /dev/null
@@ -0,0 +1,7 @@
+# name: Header 1 (#)
+# contributor: Peng Deng <dengpeng@gmail.com>
+# key: h1
+# --
+# ${1:Header 1} #
+
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/markdown-mode/h1.2 b/packages/yasnippet/snippets/markdown-mode/h1.2
new file mode 100644 (file)
index 0000000..050963c
--- /dev/null
@@ -0,0 +1,8 @@
+# name: Header 1 (=)
+# contributor: Peng Deng <dengpeng@gmail.com>
+# key: h1
+# --
+${1:Header 1}
+${1:$(make-string (string-width text) ?\=)}
+
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/markdown-mode/h2.1 b/packages/yasnippet/snippets/markdown-mode/h2.1
new file mode 100644 (file)
index 0000000..c8b3fc1
--- /dev/null
@@ -0,0 +1,7 @@
+# name: Header 2 (##)
+# contributor: Peng Deng <dengpeng@gmail.com>
+# key: h2
+# --
+## ${1:Header 1} ##
+
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/markdown-mode/h2.2 b/packages/yasnippet/snippets/markdown-mode/h2.2
new file mode 100644 (file)
index 0000000..d173bbc
--- /dev/null
@@ -0,0 +1,8 @@
+# name: Header 2 (-)
+# contributor: Peng Deng <dengpeng@gmail.com>
+# key: h2
+# --
+${1:Header 2}
+${1:$(make-string (string-width text) ?\-)}
+
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/markdown-mode/h3 b/packages/yasnippet/snippets/markdown-mode/h3
new file mode 100644 (file)
index 0000000..4daca1e
--- /dev/null
@@ -0,0 +1,7 @@
+# name: Header 3
+# contributor: Peng Deng <dengpeng@gmail.com>
+# key: h3
+# --
+### ${1:Header 3} ###
+
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/markdown-mode/h4 b/packages/yasnippet/snippets/markdown-mode/h4
new file mode 100644 (file)
index 0000000..513a100
--- /dev/null
@@ -0,0 +1,7 @@
+# name: Header 4
+# contributor: Peng Deng <dengpeng@gmail.com>
+# key: h4
+# --
+#### ${1:Header 4} ####
+
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/markdown-mode/h5 b/packages/yasnippet/snippets/markdown-mode/h5
new file mode 100644 (file)
index 0000000..51ebc39
--- /dev/null
@@ -0,0 +1,7 @@
+# name: Header 5
+# contributor: Peng Deng <dengpeng@gmail.com>
+# key: h5
+# --
+##### ${1:Header 5} #####
+
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/markdown-mode/h6 b/packages/yasnippet/snippets/markdown-mode/h6
new file mode 100644 (file)
index 0000000..ebe9eca
--- /dev/null
@@ -0,0 +1,7 @@
+# name: Header 6
+# contributor: Peng Deng <dengpeng@gmail.com>
+# key: h6
+# --
+###### ${1:Header 6} ######
+
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/markdown-mode/hr.1 b/packages/yasnippet/snippets/markdown-mode/hr.1
new file mode 100644 (file)
index 0000000..3c57bac
--- /dev/null
@@ -0,0 +1,8 @@
+# name: Horizontal Rule (-)
+# contributor: Peng Deng <dengpeng@gmail.com>
+# key: hr
+# --
+
+----------
+
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/markdown-mode/hr.2 b/packages/yasnippet/snippets/markdown-mode/hr.2
new file mode 100644 (file)
index 0000000..9b9545c
--- /dev/null
@@ -0,0 +1,8 @@
+# name: Horizontal Rule (*)
+# contributor: Peng Deng <dengpeng@gmail.com>
+# key: hr
+# --
+
+*******
+
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/markdown-mode/img b/packages/yasnippet/snippets/markdown-mode/img
new file mode 100644 (file)
index 0000000..29b2650
--- /dev/null
@@ -0,0 +1,5 @@
+# name: Image
+# contributor: Peng Deng <dengpeng@gmail.com>
+# key: img
+# --
+![${1:Alt Text}](${2:URL} $3) $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/markdown-mode/link b/packages/yasnippet/snippets/markdown-mode/link
new file mode 100644 (file)
index 0000000..c45ee19
--- /dev/null
@@ -0,0 +1,5 @@
+# name: Link
+# contributor: Peng Deng <dengpeng@gmail.com>
+# key: link
+# --
+[${1:Link Text}](${2:URL} $3) $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/markdown-mode/ol b/packages/yasnippet/snippets/markdown-mode/ol
new file mode 100644 (file)
index 0000000..ad1cdd8
--- /dev/null
@@ -0,0 +1,6 @@
+# name: Ordered List
+# contributor: Peng Deng <dengpeng@gmail.com>
+# key: ol
+# --
+${1:1}. ${2:Text}
+${1:$(number-to-string (1+ (string-to-number text)))}. $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/markdown-mode/rimg b/packages/yasnippet/snippets/markdown-mode/rimg
new file mode 100644 (file)
index 0000000..5fedc3a
--- /dev/null
@@ -0,0 +1,5 @@
+# name: Referenced Image
+# contributor: Peng Deng <dengpeng@gmail.com>
+# key: rimg
+# --
+![${1:Alt Text}][$2] $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/markdown-mode/rlb b/packages/yasnippet/snippets/markdown-mode/rlb
new file mode 100644 (file)
index 0000000..0bb37e9
--- /dev/null
@@ -0,0 +1,6 @@
+# name: Reference Label
+# contributor: Peng Deng <dengpeng@gmail.com>
+# key: rlb
+# --
+[${1:Reference}]: ${2:URL} $3
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/markdown-mode/rlink b/packages/yasnippet/snippets/markdown-mode/rlink
new file mode 100644 (file)
index 0000000..97f41f0
--- /dev/null
@@ -0,0 +1,5 @@
+# name: Reference Link
+# contributor: Peng Deng <dengpeng@gmail.com>
+# key: rlink
+# --
+[${1:Link Text}][$2] $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/.yas-make-groups b/packages/yasnippet/snippets/nxml-mode/.yas-make-groups
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/packages/yasnippet/snippets/nxml-mode/.yas-parents b/packages/yasnippet/snippets/nxml-mode/.yas-parents
new file mode 100644 (file)
index 0000000..eed5b44
--- /dev/null
@@ -0,0 +1 @@
+text-mode
diff --git a/packages/yasnippet/snippets/nxml-mode/body b/packages/yasnippet/snippets/nxml-mode/body
new file mode 100644 (file)
index 0000000..2ed3fcc
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <body>...</body>
+# key: body
+# --
+<body$1>
+  $0
+</body>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/br b/packages/yasnippet/snippets/nxml-mode/br
new file mode 100644 (file)
index 0000000..621bc6c
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <br />
+# key: br
+# --
+<br />
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/code b/packages/yasnippet/snippets/nxml-mode/code
new file mode 100644 (file)
index 0000000..36bd62b
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <code>...</code>
+# key: code
+# --
+<code>
+  $0
+</code>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/div b/packages/yasnippet/snippets/nxml-mode/div
new file mode 100644 (file)
index 0000000..07c2526
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <div...>...</div>
+# key: div
+# --
+<div$1>$0</div>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/form b/packages/yasnippet/snippets/nxml-mode/form
new file mode 100644 (file)
index 0000000..7767006
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+#name :<form method="..." action="..."></form>
+# key: form
+# --
+<form method="$1" action="$2">
+  $0
+</form>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/head b/packages/yasnippet/snippets/nxml-mode/head
new file mode 100644 (file)
index 0000000..eb6b96b
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <head>...</head>
+# key: head
+# --
+<head>
+  $0
+</head>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/header/h1 b/packages/yasnippet/snippets/nxml-mode/header/h1
new file mode 100644 (file)
index 0000000..328fb89
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <h1>...</h1>
+# key: h1
+# --
+<h1>$1</h1>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/header/h2 b/packages/yasnippet/snippets/nxml-mode/header/h2
new file mode 100644 (file)
index 0000000..3248435
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <h2>...</h2>
+# key: h2
+# --
+<h2>$1</h2>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/header/h3 b/packages/yasnippet/snippets/nxml-mode/header/h3
new file mode 100644 (file)
index 0000000..fe21a71
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <h3>...</h3>
+# key: h3
+# --
+<h3>$1</h3>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/header/h4 b/packages/yasnippet/snippets/nxml-mode/header/h4
new file mode 100644 (file)
index 0000000..bb2c983
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <h4>...</h4>
+# key: h4
+# --
+<h4>$1</h4>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/header/h5 b/packages/yasnippet/snippets/nxml-mode/header/h5
new file mode 100644 (file)
index 0000000..f11e62c
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <h5>...</h5>
+# key: h5
+# --
+<h5>$1</h5>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/header/h6 b/packages/yasnippet/snippets/nxml-mode/header/h6
new file mode 100644 (file)
index 0000000..46f035a
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <h6>...</h6>
+# key: h6
+# --
+<h6>$1</h6>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/hr b/packages/yasnippet/snippets/nxml-mode/hr
new file mode 100644 (file)
index 0000000..b649012
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <hr />
+# key: hr
+# --
+<hr />
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/href b/packages/yasnippet/snippets/nxml-mode/href
new file mode 100644 (file)
index 0000000..8fea09c
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <a href="...">...</a>
+# key: href
+# --
+<a href="$1">$2</a>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/html b/packages/yasnippet/snippets/nxml-mode/html
new file mode 100644 (file)
index 0000000..27a19ca
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <html xmlns="...">...</html>
+# key: html
+# --
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="${1:en}" lang="${2:en}">
+  $0
+</html>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/img b/packages/yasnippet/snippets/nxml-mode/img
new file mode 100644 (file)
index 0000000..ec62027
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <img src="..." alt="..." />
+# key: img
+# --
+<img src="$1" alt="$2" />
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/input b/packages/yasnippet/snippets/nxml-mode/input
new file mode 100644 (file)
index 0000000..8745e33
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <input ... />
+# key: input
+# --
+<input type="$1" name="$2" value="$3" />
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/li b/packages/yasnippet/snippets/nxml-mode/li
new file mode 100644 (file)
index 0000000..dc5e8a4
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <li>...</li>
+# key: li
+# --
+<li>$1</li>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/link b/packages/yasnippet/snippets/nxml-mode/link
new file mode 100644 (file)
index 0000000..4102f54
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <link stylesheet="..." />
+# key: link
+# --
+<link rel="${1:stylesheet}" href="${2:url}" type="${3:text/css}" media="${4:screen}" />
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/meta/doctype b/packages/yasnippet/snippets/nxml-mode/meta/doctype
new file mode 100644 (file)
index 0000000..041cca3
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: DocType XHTML 1.1
+# key: doctype
+# --
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/meta/doctype.xhtml1_strict b/packages/yasnippet/snippets/nxml-mode/meta/doctype.xhtml1_strict
new file mode 100644 (file)
index 0000000..775cb1f
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: DocType XHTML 1.0 Strict
+# key: doctype
+# --
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/meta/doctype.xhtml1_transitional b/packages/yasnippet/snippets/nxml-mode/meta/doctype.xhtml1_transitional
new file mode 100644 (file)
index 0000000..e09447a
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: DocType XHTML 1.0 Transitional
+# key: doctype
+# --
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/meta/meta b/packages/yasnippet/snippets/nxml-mode/meta/meta
new file mode 100644 (file)
index 0000000..b94b7c3
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <meta name="..." content="..." />
+# key: meta
+# --
+<meta name="${1:generator}" content="${2:content}" />
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/name b/packages/yasnippet/snippets/nxml-mode/name
new file mode 100644 (file)
index 0000000..754da4b
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <a name="..."></a>
+# key: name
+# --
+<a name="$1"></a>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/ol b/packages/yasnippet/snippets/nxml-mode/ol
new file mode 100644 (file)
index 0000000..b08a5ad
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <ol>...</ol>
+# key: ol
+# --
+<ol>
+  $0
+</ol>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/p b/packages/yasnippet/snippets/nxml-mode/p
new file mode 100644 (file)
index 0000000..4cb9efe
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <p>...</p>
+# key: p
+# --
+<p>$1</p>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/pre b/packages/yasnippet/snippets/nxml-mode/pre
new file mode 100644 (file)
index 0000000..97b9519
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <pre>...</pre>
+# key: pre
+# --
+<pre>
+  $0
+</pre>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/quote b/packages/yasnippet/snippets/nxml-mode/quote
new file mode 100644 (file)
index 0000000..81fb5d3
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <blockquote>...</blockquote>
+# key: quote
+# --
+<blockquote>
+  $1
+</blockquote>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/span b/packages/yasnippet/snippets/nxml-mode/span
new file mode 100644 (file)
index 0000000..d31a222
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <span>...</span>
+# key: span
+# --
+<span>$1</span>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/style b/packages/yasnippet/snippets/nxml-mode/style
new file mode 100644 (file)
index 0000000..d3b1f87
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <style type="text/css" media="...">...</style>
+# key: style
+# --
+<style type="text/css" media="${1:screen}">
+  $0
+</style>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/table b/packages/yasnippet/snippets/nxml-mode/table
new file mode 100644 (file)
index 0000000..11f8d0c
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <table>...</table>
+# key: table
+# --
+<table>
+  $0
+</table>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/tag.1l b/packages/yasnippet/snippets/nxml-mode/tag.1l
new file mode 100644 (file)
index 0000000..5a7268e
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <tag>...</tag>
+# key: tag
+# --
+<${1:tag}>$2</$1>$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/tag.2l b/packages/yasnippet/snippets/nxml-mode/tag.2l
new file mode 100644 (file)
index 0000000..0b58b0d
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <tag> \n...\n</tag>
+# key: tag
+# --
+<${1:tag}>
+  $2
+</$1>$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/td b/packages/yasnippet/snippets/nxml-mode/td
new file mode 100644 (file)
index 0000000..23af321
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <td>...</td>
+# key: td
+# --
+<td$1>$2</td>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/th b/packages/yasnippet/snippets/nxml-mode/th
new file mode 100644 (file)
index 0000000..115882e
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <th>...</th>
+# key: th
+# --
+<th$1>$2</th>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/title b/packages/yasnippet/snippets/nxml-mode/title
new file mode 100644 (file)
index 0000000..22c9b01
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <title>...</title>
+# key: title
+# --
+<title>$1</title>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/tr b/packages/yasnippet/snippets/nxml-mode/tr
new file mode 100644 (file)
index 0000000..2689e8c
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <tr>...</tr>
+# key: tr
+# --
+<tr>
+  $0
+</tr>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/nxml-mode/ul b/packages/yasnippet/snippets/nxml-mode/ul
new file mode 100644 (file)
index 0000000..f6f5fba
--- /dev/null
@@ -0,0 +1,7 @@
+# contributor: Anders Bach Nielsen <abachn@abachn.net>
+# name: <ul>...</ul>
+# key: ul
+# --
+<ul>
+  $0
+</ul>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/objc-mode/.yas-parents b/packages/yasnippet/snippets/objc-mode/.yas-parents
new file mode 100644 (file)
index 0000000..ce9828b
--- /dev/null
@@ -0,0 +1 @@
+cc-mode
diff --git a/packages/yasnippet/snippets/objc-mode/prop b/packages/yasnippet/snippets/objc-mode/prop
new file mode 100644 (file)
index 0000000..1a74edb
--- /dev/null
@@ -0,0 +1,14 @@
+# name: foo { ... } ; setFoo { ... }
+# key: prop
+# --
+- (${1:id})${2:foo}
+{
+    return $2;
+}
+
+- (void)set${2:$(capitalize text)}:($1)aValue
+{
+    [$2 autorelease];
+    $2 = [aValue retain];
+}
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/perl-mode/.yas-parents b/packages/yasnippet/snippets/perl-mode/.yas-parents
new file mode 100644 (file)
index 0000000..eed5b44
--- /dev/null
@@ -0,0 +1 @@
+text-mode
diff --git a/packages/yasnippet/snippets/perl-mode/eval b/packages/yasnippet/snippets/perl-mode/eval
new file mode 100644 (file)
index 0000000..a484014
--- /dev/null
@@ -0,0 +1,9 @@
+# name: eval { ... } if ($@) { ... }
+# key: eval
+# --
+eval {
+    ${1:# do something risky...}
+};
+if (\$@) {
+    ${2:# handle failure...}
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/perl-mode/for b/packages/yasnippet/snippets/perl-mode/for
new file mode 100644 (file)
index 0000000..1ba240f
--- /dev/null
@@ -0,0 +1,6 @@
+# name: for (...) { ... }
+# key: for
+# --
+for (my \$${1:var} = 0; \$$1 < ${2:expression}; \$$1++) {
+    ${3:# body...}
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/perl-mode/fore b/packages/yasnippet/snippets/perl-mode/fore
new file mode 100644 (file)
index 0000000..c3b81d5
--- /dev/null
@@ -0,0 +1,6 @@
+# name: foreach ... { ... }
+# key: fore
+# --
+foreach my \$${1:x} (@${2:array}) {
+    ${3:# body...}
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/perl-mode/if b/packages/yasnippet/snippets/perl-mode/if
new file mode 100644 (file)
index 0000000..567db90
--- /dev/null
@@ -0,0 +1,6 @@
+# name: if (...) { ... }
+# key: if
+# --
+if ($1) {
+    $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/perl-mode/ife b/packages/yasnippet/snippets/perl-mode/ife
new file mode 100644 (file)
index 0000000..f278f21
--- /dev/null
@@ -0,0 +1,8 @@
+# name: if (...) { ... } else { ... }
+# key: ife
+# --
+if ($1) {
+    $2
+} else {
+    $3
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/perl-mode/ifee b/packages/yasnippet/snippets/perl-mode/ifee
new file mode 100644 (file)
index 0000000..d1bf237
--- /dev/null
@@ -0,0 +1,10 @@
+# name: if, elsif, else ...
+# key: ifee
+# --
+if ($1) {
+       ${2:# body...}
+} elsif ($3) {
+       ${4:# elsif...}
+} else {
+       ${5:# else...}
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/perl-mode/sub b/packages/yasnippet/snippets/perl-mode/sub
new file mode 100644 (file)
index 0000000..05607d6
--- /dev/null
@@ -0,0 +1,6 @@
+# name: sub ... { ... }
+# key: sub
+# --
+sub ${1:function_name} {
+    $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/perl-mode/unless b/packages/yasnippet/snippets/perl-mode/unless
new file mode 100644 (file)
index 0000000..f91a652
--- /dev/null
@@ -0,0 +1,6 @@
+# name: unless (...) { ... }
+# key: unless
+# --
+unless ($1) {
+    $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/perl-mode/while b/packages/yasnippet/snippets/perl-mode/while
new file mode 100644 (file)
index 0000000..2744530
--- /dev/null
@@ -0,0 +1,6 @@
+# name: while (...) { ... }
+# key: while
+# --
+while ($1) {
+    $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/perl-mode/xfore b/packages/yasnippet/snippets/perl-mode/xfore
new file mode 100644 (file)
index 0000000..018e140
--- /dev/null
@@ -0,0 +1,4 @@
+# name: ... foreach ...
+# key: xfore
+# --
+${1:expression} foreach @${2:array};
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/perl-mode/xif b/packages/yasnippet/snippets/perl-mode/xif
new file mode 100644 (file)
index 0000000..ca8b563
--- /dev/null
@@ -0,0 +1,4 @@
+# name: ... if ...
+# key: xif
+# --
+${1:expression} if ${2:condition}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/perl-mode/xunless b/packages/yasnippet/snippets/perl-mode/xunless
new file mode 100644 (file)
index 0000000..dbb7d7d
--- /dev/null
@@ -0,0 +1,4 @@
+# name: ... unless ...
+# key: xunless
+# --
+${1:expression} unless ${2:condition}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/perl-mode/xwhile b/packages/yasnippet/snippets/perl-mode/xwhile
new file mode 100644 (file)
index 0000000..14c6308
--- /dev/null
@@ -0,0 +1,4 @@
+# name: ... while ...
+# key: xwhile
+# --
+${1:expression} while ${2:condition};
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/python-mode/.yas-parents b/packages/yasnippet/snippets/python-mode/.yas-parents
new file mode 100644 (file)
index 0000000..eed5b44
--- /dev/null
@@ -0,0 +1 @@
+text-mode
diff --git a/packages/yasnippet/snippets/python-mode/__ b/packages/yasnippet/snippets/python-mode/__
new file mode 100644 (file)
index 0000000..0253b02
--- /dev/null
@@ -0,0 +1,4 @@
+# name: __...__
+# key: __
+# --
+__${init}__
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/python-mode/class b/packages/yasnippet/snippets/python-mode/class
new file mode 100644 (file)
index 0000000..69a088e
--- /dev/null
@@ -0,0 +1,55 @@
+# -*- coding: utf-8 -*-
+# name: class
+# contributor: Orestis Markou
+# contributor: Nishio Hirokazu
+# contributor: Yasser González Fernández <yglez@uh.cu>
+# key: class
+# --
+class ${1:ClassName}(${2:object}):
+    """$3
+    """
+
+    def __init__(self, $4):
+        """$5
+        ${4:$
+        (let* ((indent
+                (concat "\n" (make-string (current-column) 32)))
+               (args
+                (mapconcat
+                 '(lambda (x)
+                    (if (not (string= (nth 0 x) ""))
+                        (concat "- " (char-to-string 96) (nth 0 x)
+                                (char-to-string 96) ":")))
+                 (mapcar
+                  '(lambda (x)
+                     (mapcar
+                      (lambda (x)
+                        (replace-regexp-in-string "[[:blank:]]*$" ""
+                         (replace-regexp-in-string "^[[:blank:]]*" "" x))) x))
+                  (mapcar '(lambda (x) (split-string x "="))
+                          (split-string text ",")))
+                 indent)))
+          (if (string= args "")
+              (make-string 3 34)
+            (mapconcat
+             'identity
+             (list "" "Arguments:" args (make-string 3 34))
+             indent)))
+        }
+        ${4:$
+        (mapconcat
+         '(lambda (x)
+            (if (not (string= (nth 0 x) ""))
+                (concat "self._" (nth 0 x) " = " (nth 0 x))))
+         (mapcar
+          '(lambda (x)
+             (mapcar
+              '(lambda (x)
+                 (replace-regexp-in-string "[[:blank:]]*$" ""
+                  (replace-regexp-in-string "^[[:blank:]]*" "" x)))
+              x))
+          (mapcar '(lambda (x) (split-string x "="))
+                  (split-string text ",")))
+         (concat "\n" (make-string (current-column) 32)))
+        }
+        $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/python-mode/def b/packages/yasnippet/snippets/python-mode/def
new file mode 100644 (file)
index 0000000..ebc5c10
--- /dev/null
@@ -0,0 +1,36 @@
+# -*- coding: utf-8 -*-
+# name: def
+# contributor: Orestis Markou
+# contributor: Yasser González Fernández <yglez@uh.cu>
+# key: def
+# --
+def ${1:name}($2):
+    """$3
+    ${2:$
+      (let*
+        ((indent
+            (concat "\n" (make-string (current-column) 32)))
+           (args
+            (mapconcat
+             '(lambda (x)
+                (if (not (string= (nth 0 x) ""))
+                    (concat "- " (char-to-string 96) (nth 0 x)
+                            (char-to-string 96) ":")))
+             (mapcar
+              '(lambda (x)
+                 (mapcar
+                  '(lambda (x)
+                     (replace-regexp-in-string "[[:blank:]]*$" ""
+                      (replace-regexp-in-string "^[[:blank:]]*" "" x)))
+                  x))
+              (mapcar '(lambda (x) (split-string x "="))
+                      (split-string text ",")))
+             indent)))
+      (if (string= args "")
+          (make-string 3 34)
+        (mapconcat
+         'identity
+         (list "" "Arguments:" args (make-string 3 34))
+         indent)))
+    }
+    $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/python-mode/defm b/packages/yasnippet/snippets/python-mode/defm
new file mode 100644 (file)
index 0000000..a2fb5a0
--- /dev/null
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+# name: defm
+# contributor: Yasser Gonz¨¢lez Fern¨¢ndez <yglez@uh.cu>
+# key: defm
+# --
+def ${1:name}(self, $2):
+    """$3
+    ${2:$
+    (let* ((indent
+            (concat "\n" (make-string (current-column) 32)))
+           (args
+            (mapconcat
+             '(lambda (x)
+                (if (not (string= (nth 0 x) ""))
+                    (concat "- " (char-to-string 96) (nth 0 x)
+                            (char-to-string 96) ":")))
+             (mapcar
+              '(lambda (x)
+                 (mapcar
+                  '(lambda (x)
+                     (replace-regexp-in-string "[[:blank:]]*$" ""
+                      (replace-regexp-in-string "^[[:blank:]]*" "" x)))
+                  x))
+              (mapcar '(lambda (x) (split-string x "="))
+                      (split-string text ",")))
+             indent)))
+      (if (string= args "")
+          (make-string 3 34)
+        (mapconcat
+         'identity
+         (list "" "Arguments:" args (make-string 3 34))
+         indent)))
+    }
+    $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/python-mode/for b/packages/yasnippet/snippets/python-mode/for
new file mode 100644 (file)
index 0000000..7c78b5e
--- /dev/null
@@ -0,0 +1,5 @@
+# name: for ... in ... : ...
+# key: for
+# --
+for ${var} in ${collection}:
+    $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/python-mode/ifmain b/packages/yasnippet/snippets/python-mode/ifmain
new file mode 100644 (file)
index 0000000..68ed20b
--- /dev/null
@@ -0,0 +1,5 @@
+# name: if __name__ == '__main__': ...
+# key: ifmain
+# --
+if __name__ == '__main__':
+    $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/python-mode/prop b/packages/yasnippet/snippets/python-mode/prop
new file mode 100644 (file)
index 0000000..ec96633
--- /dev/null
@@ -0,0 +1,16 @@
+# contributor: Mads D. Kristensen <madsdk@gmail.com>
+# name: prop
+# key: prop
+# --
+def ${1:foo}():
+   doc = """${2:Doc string}"""
+   def fget(self):
+       return self._$1
+   def fset(self, value):
+       self._$1 = value
+   def fdel(self):
+       del self._$1
+   return locals()
+$1 = property(**$1())
+
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/python-mode/propg b/packages/yasnippet/snippets/python-mode/propg
new file mode 100644 (file)
index 0000000..e89d4e4
--- /dev/null
@@ -0,0 +1,10 @@
+# contributor: Julio Carlos Menendez <godinblack@gmail.com>
+# name: _get_foo ... foo=property(...)
+# key: propg
+# --
+def _get_${1:foo}(self):
+    return self._$1
+
+$1 = property(_get_$1)
+
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/python-mode/propsg b/packages/yasnippet/snippets/python-mode/propsg
new file mode 100644 (file)
index 0000000..876c139
--- /dev/null
@@ -0,0 +1,13 @@
+# contributor: Julio Carlos Menendez <godinblack@gmail.com>
+# name: _get_foo ... _set_foo ... foo=property(...)
+# key: propsg
+# --
+def _set_${1:foo}(self, value):
+    self._$1 = value
+
+def _get_$1(self):
+    return self._$1
+
+$1 = property(_get_$1, _set_$1)
+
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/python-mode/while b/packages/yasnippet/snippets/python-mode/while
new file mode 100644 (file)
index 0000000..39452bb
--- /dev/null
@@ -0,0 +1,5 @@
+# name: while ... : ...
+# key: while
+# --
+while ${condition}:
+    $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/rst-mode/.yas-parents b/packages/yasnippet/snippets/rst-mode/.yas-parents
new file mode 100644 (file)
index 0000000..eed5b44
--- /dev/null
@@ -0,0 +1 @@
+text-mode
diff --git a/packages/yasnippet/snippets/rst-mode/chap b/packages/yasnippet/snippets/rst-mode/chap
new file mode 100644 (file)
index 0000000..593fc0f
--- /dev/null
@@ -0,0 +1,7 @@
+# name: Chapter title
+# key: chap
+# --
+${1:Chapter}
+${1:$(make-string (string-width text) ?\=)}
+
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/rst-mode/sec b/packages/yasnippet/snippets/rst-mode/sec
new file mode 100644 (file)
index 0000000..c5a60bb
--- /dev/null
@@ -0,0 +1,7 @@
+# name: Section title
+# key: sec
+# --
+${1:Section}
+${1:$(make-string (string-width text) ?\-)}
+
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/rst-mode/tit b/packages/yasnippet/snippets/rst-mode/tit
new file mode 100644 (file)
index 0000000..46ac6b1
--- /dev/null
@@ -0,0 +1,8 @@
+# name: Document title
+# key: tit
+# --
+${1:$(make-string (string-width text) ?\=)}
+${1:Title}
+${1:$(make-string (string-width text) ?\=)}
+
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/.yas-make-groups b/packages/yasnippet/snippets/ruby-mode/.yas-make-groups
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/packages/yasnippet/snippets/ruby-mode/.yas-parents b/packages/yasnippet/snippets/ruby-mode/.yas-parents
new file mode 100644 (file)
index 0000000..eed5b44
--- /dev/null
@@ -0,0 +1 @@
+text-mode
diff --git a/packages/yasnippet/snippets/ruby-mode/collections/all b/packages/yasnippet/snippets/ruby-mode/collections/all
new file mode 100644 (file)
index 0000000..c1e3089
--- /dev/null
@@ -0,0 +1,4 @@
+# name: all? { |...| ... }
+# key: all
+# --
+all? { |${e}| $0 }
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/collections/any b/packages/yasnippet/snippets/ruby-mode/collections/any
new file mode 100644 (file)
index 0000000..c2d3a4b
--- /dev/null
@@ -0,0 +1,4 @@
+# name: any? { |...| ... }
+# key: any
+# --
+any? { |${e}| $0 }
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/collections/classify b/packages/yasnippet/snippets/ruby-mode/collections/classify
new file mode 100644 (file)
index 0000000..363746f
--- /dev/null
@@ -0,0 +1,4 @@
+# name: classify { |...| ... }
+# key: classify
+# --
+classify { |${e}| $0 }
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/collections/collect b/packages/yasnippet/snippets/ruby-mode/collections/collect
new file mode 100644 (file)
index 0000000..fb6aefa
--- /dev/null
@@ -0,0 +1,4 @@
+# name: collect { |...| ... }
+# key: collect
+# --
+collect { |${e}| $0 }
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/collections/deli b/packages/yasnippet/snippets/ruby-mode/collections/deli
new file mode 100644 (file)
index 0000000..2fb3749
--- /dev/null
@@ -0,0 +1,4 @@
+# name: delete_if { |...| ... }
+# key: deli
+# --
+delete_if { |${e} $0 }
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/collections/det b/packages/yasnippet/snippets/ruby-mode/collections/det
new file mode 100644 (file)
index 0000000..5964efb
--- /dev/null
@@ -0,0 +1,4 @@
+# name: detect { |...| ... }
+# key: det
+# --
+detect { |${e}| $0 }
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/collections/ea b/packages/yasnippet/snippets/ruby-mode/collections/ea
new file mode 100644 (file)
index 0000000..9f8cf90
--- /dev/null
@@ -0,0 +1,4 @@
+# name: each { |...| ... }
+# key: ea
+# --
+each { |${e}| $0 }
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/collections/eac b/packages/yasnippet/snippets/ruby-mode/collections/eac
new file mode 100644 (file)
index 0000000..9a45e24
--- /dev/null
@@ -0,0 +1,4 @@
+# name: each_cons(...) { |...| ... }
+# key: eac
+# --
+each_cons(${1:2}) { |${group}| $0 }
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/collections/eai b/packages/yasnippet/snippets/ruby-mode/collections/eai
new file mode 100644 (file)
index 0000000..3ad66a7
--- /dev/null
@@ -0,0 +1,4 @@
+# name: each_index { |i| ... }
+# key: eai
+# --
+each_index { |${i}| $0 }
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/collections/eav b/packages/yasnippet/snippets/ruby-mode/collections/eav
new file mode 100644 (file)
index 0000000..cb2ebdc
--- /dev/null
@@ -0,0 +1,4 @@
+# name: each_value { |val| ... }
+# key: eav
+# --
+each_value { |${val}| $0 }
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/collections/eawi b/packages/yasnippet/snippets/ruby-mode/collections/eawi
new file mode 100644 (file)
index 0000000..c3b689a
--- /dev/null
@@ -0,0 +1,4 @@
+# name: each_with_index { |e, i| ... }
+# key: eawi
+# --
+each_with_index { |${e}, ${i}| $0 }
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/collections/inject b/packages/yasnippet/snippets/ruby-mode/collections/inject
new file mode 100644 (file)
index 0000000..71adb00
--- /dev/null
@@ -0,0 +1,4 @@
+# name: inject(...) { |...| ... }
+# key: inject
+# --
+inject(${1:0}) { |${2:injection}, ${3:element}| $0 }
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/collections/reject b/packages/yasnippet/snippets/ruby-mode/collections/reject
new file mode 100644 (file)
index 0000000..8ba6518
--- /dev/null
@@ -0,0 +1,4 @@
+# name: reject { |...| ... }
+# key: reject
+# --
+reject { |${1:element}| $0 }
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/collections/select b/packages/yasnippet/snippets/ruby-mode/collections/select
new file mode 100644 (file)
index 0000000..ce30ac5
--- /dev/null
@@ -0,0 +1,4 @@
+# name: select { |...| ... }
+# key: select
+# --
+select { |${1:element}| $0 }
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/collections/zip b/packages/yasnippet/snippets/ruby-mode/collections/zip
new file mode 100644 (file)
index 0000000..8081d79
--- /dev/null
@@ -0,0 +1,4 @@
+#name : zip(...) { |...| ... }
+# key: zip
+# --
+zip(${enums}) { |${row}| $0 }
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/control structure/forin b/packages/yasnippet/snippets/ruby-mode/control structure/forin
new file mode 100644 (file)
index 0000000..c69f8d6
--- /dev/null
@@ -0,0 +1,6 @@
+# name: for ... in ...; ... end
+# key: forin
+# --
+for ${1:element} in ${2:collection}
+  $0
+end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/control structure/if b/packages/yasnippet/snippets/ruby-mode/control structure/if
new file mode 100644 (file)
index 0000000..b1ad4fc
--- /dev/null
@@ -0,0 +1,6 @@
+# name: if ... end
+# key: if
+# --
+if ${1:condition}
+  $0
+end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/control structure/ife b/packages/yasnippet/snippets/ruby-mode/control structure/ife
new file mode 100644 (file)
index 0000000..946b71c
--- /dev/null
@@ -0,0 +1,8 @@
+# name: if ... else ... end
+# key: ife
+# --
+if ${1:condition}
+  $2
+else
+  $3
+end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/control structure/tim b/packages/yasnippet/snippets/ruby-mode/control structure/tim
new file mode 100644 (file)
index 0000000..5844974
--- /dev/null
@@ -0,0 +1,4 @@
+# name: times { |n| ... }
+# key: tim
+# --
+times { |${n}| $0 }
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/control structure/until b/packages/yasnippet/snippets/ruby-mode/control structure/until
new file mode 100644 (file)
index 0000000..99d34b5
--- /dev/null
@@ -0,0 +1,6 @@
+# name: until ... end
+# key: until
+# --
+until ${condition}
+  $0
+end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/control structure/upt b/packages/yasnippet/snippets/ruby-mode/control structure/upt
new file mode 100644 (file)
index 0000000..cadc40d
--- /dev/null
@@ -0,0 +1,6 @@
+# name: upto(...) { |n| ... }
+# key: upt
+# --
+upto(${n}) { |${i}|
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/control structure/when b/packages/yasnippet/snippets/ruby-mode/control structure/when
new file mode 100644 (file)
index 0000000..c11b6a5
--- /dev/null
@@ -0,0 +1,6 @@
+# name: when ... end
+# key: when
+# --
+when ${condition}
+  $0
+end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/control structure/while b/packages/yasnippet/snippets/ruby-mode/control structure/while
new file mode 100644 (file)
index 0000000..920a08a
--- /dev/null
@@ -0,0 +1,6 @@
+# name: while ... end
+# key: while
+# --
+while ${condition}
+  $0
+end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/definitions/Comp b/packages/yasnippet/snippets/ruby-mode/definitions/Comp
new file mode 100644 (file)
index 0000000..112ebae
--- /dev/null
@@ -0,0 +1,8 @@
+# name: include Comparable; def <=> ... end
+# key: Comp
+# --
+include Comparable
+
+def <=> other
+  $0
+end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/definitions/am b/packages/yasnippet/snippets/ruby-mode/definitions/am
new file mode 100644 (file)
index 0000000..c6b846d
--- /dev/null
@@ -0,0 +1,4 @@
+# name: alias_method new, old
+# key: am
+# --
+alias_method :${new_name}, :${old_name}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/definitions/cla b/packages/yasnippet/snippets/ruby-mode/definitions/cla
new file mode 100644 (file)
index 0000000..d2c8ff8
--- /dev/null
@@ -0,0 +1,6 @@
+# name: class << self ... end
+# key: cla
+# --
+class << ${self}
+  $0
+end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/definitions/cls b/packages/yasnippet/snippets/ruby-mode/definitions/cls
new file mode 100644 (file)
index 0000000..19754a7
--- /dev/null
@@ -0,0 +1,13 @@
+# name: class ... end
+# contributor: hitesh <hitesh.jasani@gmail.com>
+# key: cls
+# --
+class ${1:`(let ((fn (capitalize (file-name-nondirectory
+                                 (file-name-sans-extension
+                                (or (buffer-file-name)
+                                    (buffer-name (current-buffer))))))))
+           (cond
+             ((string-match "_" fn) (replace-match "" nil nil fn))
+              (t fn)))`}
+  $0
+end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/definitions/mm b/packages/yasnippet/snippets/ruby-mode/definitions/mm
new file mode 100644 (file)
index 0000000..752b3ce
--- /dev/null
@@ -0,0 +1,6 @@
+# name: def method_missing ... end
+# key: mm
+# --
+def method_missing(method, *args)
+  $0
+end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/definitions/mod b/packages/yasnippet/snippets/ruby-mode/definitions/mod
new file mode 100644 (file)
index 0000000..118400c
--- /dev/null
@@ -0,0 +1,13 @@
+# name: module ... end
+# contributor: hitesh <hitesh.jasani@gmail.com>, jimeh <contact@jimeh.me>
+# key: mod
+# --
+module ${1:`(let ((fn (capitalize (file-name-nondirectory
+                                 (file-name-sans-extension
+         (or (buffer-file-name)
+             (buffer-name (current-buffer))))))))
+           (cond
+             ((string-match "_" fn) (replace-match "" nil nil fn))
+              (t fn)))`}
+  $0
+end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/definitions/r b/packages/yasnippet/snippets/ruby-mode/definitions/r
new file mode 100644 (file)
index 0000000..5f9c093
--- /dev/null
@@ -0,0 +1,4 @@
+# name: attr_reader ...
+# key: r
+# --
+attr_reader :
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/definitions/rw b/packages/yasnippet/snippets/ruby-mode/definitions/rw
new file mode 100644 (file)
index 0000000..ac72bcf
--- /dev/null
@@ -0,0 +1,4 @@
+# name: attr_accessor ...
+# key: rw
+# --
+attr_accessor :
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/definitions/w b/packages/yasnippet/snippets/ruby-mode/definitions/w
new file mode 100644 (file)
index 0000000..a2f95c8
--- /dev/null
@@ -0,0 +1,4 @@
+# name: attr_writer ...
+# key: w
+# --
+attr_writer :
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/general/# b/packages/yasnippet/snippets/ruby-mode/general/#
new file mode 100644 (file)
index 0000000..6e9c0e0
--- /dev/null
@@ -0,0 +1,4 @@
+# name: # =>
+# key: #
+# --
+# =>
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/general/=b b/packages/yasnippet/snippets/ruby-mode/general/=b
new file mode 100644 (file)
index 0000000..4334e9b
--- /dev/null
@@ -0,0 +1,6 @@
+# name: =begin rdoc ... =end
+# key: =b
+# --
+=begin rdoc
+  $0
+=end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/general/app b/packages/yasnippet/snippets/ruby-mode/general/app
new file mode 100644 (file)
index 0000000..6d5f488
--- /dev/null
@@ -0,0 +1,6 @@
+# name: if __FILE__ == $PROGRAM_NAME ... end
+# key: app
+# --
+if __FILE__ == $PROGRAM_NAME
+  $0
+end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/general/bm b/packages/yasnippet/snippets/ruby-mode/general/bm
new file mode 100644 (file)
index 0000000..83907d2
--- /dev/null
@@ -0,0 +1,6 @@
+# name: Benchmark.bmbm(...) do ... end
+# key: bm
+# --
+Benchmark.bmbm(${1:10}) do |x|
+  $0
+end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/general/case b/packages/yasnippet/snippets/ruby-mode/general/case
new file mode 100644 (file)
index 0000000..f7ecb21
--- /dev/null
@@ -0,0 +1,7 @@
+# name: case ... end
+# key: case
+# --
+case ${1:object}
+when ${2:condition}
+  $0
+end
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/general/dee b/packages/yasnippet/snippets/ruby-mode/general/dee
new file mode 100644 (file)
index 0000000..d3bf695
--- /dev/null
@@ -0,0 +1,4 @@
+# name: deep_copy(...)
+# key: dee
+# --
+Marshal.load(Marshal.dump($0))
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/general/rb b/packages/yasnippet/snippets/ruby-mode/general/rb
new file mode 100644 (file)
index 0000000..55a5ac6
--- /dev/null
@@ -0,0 +1,4 @@
+# name: /usr/bin/ruby -wKU
+# key: rb
+# --
+#!/usr/bin/ruby -wKU
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/general/req b/packages/yasnippet/snippets/ruby-mode/general/req
new file mode 100644 (file)
index 0000000..464b521
--- /dev/null
@@ -0,0 +1,4 @@
+# name: require "..."
+# key: req
+# --
+require "$0"
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/general/rreq b/packages/yasnippet/snippets/ruby-mode/general/rreq
new file mode 100644 (file)
index 0000000..b676648
--- /dev/null
@@ -0,0 +1,4 @@
+# name: require File.join(File.dirname(__FILE__), ...)
+# key: rreq
+# --
+require File.join(File.dirname(__FILE__), $0)
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/ruby-mode/general/y b/packages/yasnippet/snippets/ruby-mode/general/y
new file mode 100644 (file)
index 0000000..0085c9e
--- /dev/null
@@ -0,0 +1,4 @@
+# name: :yields: arguments (rdoc)
+# key: y
+# --
+:yields: $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/.yas-parents b/packages/yasnippet/snippets/scala-mode/.yas-parents
new file mode 100644 (file)
index 0000000..eed5b44
--- /dev/null
@@ -0,0 +1 @@
+text-mode
diff --git a/packages/yasnippet/snippets/scala-mode/act b/packages/yasnippet/snippets/scala-mode/act
new file mode 100644 (file)
index 0000000..d3fc196
--- /dev/null
@@ -0,0 +1,11 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: def act = { ..}
+# key: act
+# --
+def act = {
+  loop {
+    react {
+      $0
+    }
+  }
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/act.arg b/packages/yasnippet/snippets/scala-mode/act.arg
new file mode 100644 (file)
index 0000000..45369ab
--- /dev/null
@@ -0,0 +1,11 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: def act(arg: T) = { ..}
+# key: act
+# --
+def act(${1:arg}: ${2:type}) = {
+  loop {
+    react {
+      $0
+    }
+  }
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/actor b/packages/yasnippet/snippets/scala-mode/actor
new file mode 100644 (file)
index 0000000..eb1ecef
--- /dev/null
@@ -0,0 +1,11 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: val a = actor { ..}
+# key: actor
+# --
+val a = actor {
+  loop {
+    react {
+      $0
+    }
+  }
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/ano b/packages/yasnippet/snippets/scala-mode/ano
new file mode 100644 (file)
index 0000000..6c78812
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: (args) => ...
+# key: ano
+# --
+($1) => ${2:body} $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/app b/packages/yasnippet/snippets/scala-mode/app
new file mode 100644 (file)
index 0000000..f177cd1
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Anders Bach Nielsen <andersbach.nielsen@epfl.ch>
+# name: object name extends Application
+# key: app
+# --
+object ${1:name} extends Application {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/arr.new b/packages/yasnippet/snippets/scala-mode/arr.new
new file mode 100644 (file)
index 0000000..6e17e73
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: Array[T](..)
+# key: arr
+# --
+Array[${1:value}](${2:args}) $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/arr.val-new b/packages/yasnippet/snippets/scala-mode/arr.val-new
new file mode 100644 (file)
index 0000000..2736b5f
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: val a = Array[T](..)
+# key: arr
+# --
+val ${1:arr} = Array[${2:value}](${3:args}) $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/asof b/packages/yasnippet/snippets/scala-mode/asof
new file mode 100644 (file)
index 0000000..4f9550e
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: asInstanceOf[T]
+# key: asof
+# --
+asInstanceOf[${1:type}] $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/ass b/packages/yasnippet/snippets/scala-mode/ass
new file mode 100644 (file)
index 0000000..b4640a3
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: assert(x === y)
+# key: ass
+# --
+assert(${1:x} === ${2:y}) $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/ass.true b/packages/yasnippet/snippets/scala-mode/ass.true
new file mode 100644 (file)
index 0000000..76f8226
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: assert(true)
+# key: ass
+# --
+assert(true) $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/at.author b/packages/yasnippet/snippets/scala-mode/at.author
new file mode 100644 (file)
index 0000000..ba70f63
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Anders Bach Nielsen <andersbach.nielsen@epfl.ch>
+# name: @author name
+# key: at
+# --
+@author ${1:name} $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/at.param b/packages/yasnippet/snippets/scala-mode/at.param
new file mode 100644 (file)
index 0000000..89a5b0b
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Anders Bach Nielsen <andersbach.nielsen@epfl.ch>
+# name: @param name description
+# key: at
+# --
+@param ${1:name} ${2:description} $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/at.return b/packages/yasnippet/snippets/scala-mode/at.return
new file mode 100644 (file)
index 0000000..a027516
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Anders Bach Nielsen <andersbach.nielsen@epfl.ch>
+# name: @return description
+# key: at
+# --
+@return ${1:description} $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/at.version b/packages/yasnippet/snippets/scala-mode/at.version
new file mode 100644 (file)
index 0000000..a202706
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Anders Bach Nielsen <andersbach.nielsen@epfl.ch>
+# name: @version number
+# key: at
+# --
+@version ${1:0.1} $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/bang b/packages/yasnippet/snippets/scala-mode/bang
new file mode 100644 (file)
index 0000000..b5c94ad
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: actor ! message
+# key: bang
+# --
+${1:actor} ! ${2:message} $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/case b/packages/yasnippet/snippets/scala-mode/case
new file mode 100644 (file)
index 0000000..aa6da32
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: case pattern =>
+# key: case
+# --
+case ${1:pattern} => $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/case.match-all b/packages/yasnippet/snippets/scala-mode/case.match-all
new file mode 100644 (file)
index 0000000..013b8f6
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: case _ =>
+# key: case
+# --
+case _ => $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/cast b/packages/yasnippet/snippets/scala-mode/cast
new file mode 100644 (file)
index 0000000..f89a508
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: asInstanceOf[T]
+# key: cast
+# --
+asInstanceOf[${1:type}] $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/cc b/packages/yasnippet/snippets/scala-mode/cc
new file mode 100644 (file)
index 0000000..cfc727c
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: case class T(arg: A)
+# key: cc
+# --
+case class ${1:name}(${2:arg}: ${3:type}) $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/cl b/packages/yasnippet/snippets/scala-mode/cl
new file mode 100644 (file)
index 0000000..d597400
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: class T { .. }
+# key: cl
+# --
+class ${1:name} {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/cl.abs b/packages/yasnippet/snippets/scala-mode/cl.abs
new file mode 100644 (file)
index 0000000..9ea9fe2
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: abstract class T { .. }
+# key: cl
+# --
+abstract class ${1:name} {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/cl.abs-arg b/packages/yasnippet/snippets/scala-mode/cl.abs-arg
new file mode 100644 (file)
index 0000000..98cf760
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: abstract class T(args) { .. }
+# key: cl
+# --
+abstract class ${1:name}(${2:args}) {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/cl.arg b/packages/yasnippet/snippets/scala-mode/cl.arg
new file mode 100644 (file)
index 0000000..1b9d729
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: class T(args) { .. }
+# key: cl
+# --
+class ${1:name}(${2:args}) {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/clof b/packages/yasnippet/snippets/scala-mode/clof
new file mode 100644 (file)
index 0000000..7d5a35d
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: classOf[T]
+# key: clof
+# --
+classOf[${1:type}] $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/co b/packages/yasnippet/snippets/scala-mode/co
new file mode 100644 (file)
index 0000000..3ad6f79
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: case object T
+# key: co
+# --
+case object ${1:name} $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/cons b/packages/yasnippet/snippets/scala-mode/cons
new file mode 100644 (file)
index 0000000..601a1a4
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: element1 :: element2
+# key: cons
+# --
+${1:element1} :: ${2:element2} $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/cons.nil b/packages/yasnippet/snippets/scala-mode/cons.nil
new file mode 100644 (file)
index 0000000..60ac028
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: element1 :: Nil
+# key: cons
+# --
+${1:element1} :: Nil $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/def.arg b/packages/yasnippet/snippets/scala-mode/def.arg
new file mode 100644 (file)
index 0000000..be5403b
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: def f(arg: T) = ...
+# key: def
+# --
+def ${1:name}(${2:args}) = $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/def.arg-body b/packages/yasnippet/snippets/scala-mode/def.arg-body
new file mode 100644 (file)
index 0000000..8dcbb81
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: def f(arg: T) = {...}
+# key: def
+# --
+def ${1:name}(${2:args}) = {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/def.arg-ret b/packages/yasnippet/snippets/scala-mode/def.arg-ret
new file mode 100644 (file)
index 0000000..4ad27ce
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: def f(arg: T): R = ...
+# key: def
+# --
+def ${1:name}(${2:args}): ${3:Unit} = $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/def.arg-ret-body b/packages/yasnippet/snippets/scala-mode/def.arg-ret-body
new file mode 100644 (file)
index 0000000..2ffcf4b
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: def f(arg: T): R = {...}
+# key: def
+# --
+def ${1:name}(${2:args}): ${3:Unit} = {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/def.body b/packages/yasnippet/snippets/scala-mode/def.body
new file mode 100644 (file)
index 0000000..c43aea4
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: def f = {...}
+# key: def
+# --
+def ${1:name} = {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/def.ret b/packages/yasnippet/snippets/scala-mode/def.ret
new file mode 100644 (file)
index 0000000..719dc69
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: def f: R = ...
+# key: def
+# --
+def ${1:name}: ${2:Unit} = $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/def.ret-body b/packages/yasnippet/snippets/scala-mode/def.ret-body
new file mode 100644 (file)
index 0000000..d8ee456
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: def f: R = {...}
+# key: def
+# --
+def ${1:name}: ${3:Unit} = {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/def.simple b/packages/yasnippet/snippets/scala-mode/def.simple
new file mode 100644 (file)
index 0000000..c956bbf
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: def f = ...
+# key: def
+# --
+def ${1:name} = $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/doc.class b/packages/yasnippet/snippets/scala-mode/doc.class
new file mode 100644 (file)
index 0000000..9571f1d
--- /dev/null
@@ -0,0 +1,9 @@
+# Author: Anders Bach Nielsen <andersbach.nielsen@epfl.ch>
+# name: /** cls/trt/obj name */
+# key: doc
+# --
+/**
+ * `(scala-mode-find-clstrtobj-name-doc)`
+ * ${1:description}
+ * $0
+ */
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/doc.def b/packages/yasnippet/snippets/scala-mode/doc.def
new file mode 100644 (file)
index 0000000..53b1968
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Anders Bach Nielsen <andersbach.nielsen@epfl.ch>
+# name: /** method name */
+# key: doc
+# --
+/**
+ * `(scala-mode-def-and-args-doc)`
+ */
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/doc.file b/packages/yasnippet/snippets/scala-mode/doc.file
new file mode 100644 (file)
index 0000000..2bc39bf
--- /dev/null
@@ -0,0 +1,10 @@
+# Author: Anders Bach Nielsen <andersbach.nielsen@epfl.ch>
+# name: /** file name */
+# key: doc
+# --
+/**
+ * `(scala-mode-file-doc)`
+ * $0
+ * @author ${1:name}
+ * @version ${2:0.1}
+ */
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/doc.file-scala b/packages/yasnippet/snippets/scala-mode/doc.file-scala
new file mode 100644 (file)
index 0000000..aa9c58f
--- /dev/null
@@ -0,0 +1,17 @@
+# Author: Anders Bach Nielsen <andersbach.nielsen@epfl.ch>
+# name: /** scala file */
+# key: doc
+# --
+/*                     __                                               *\
+**     ________ ___   / /  ___     Scala $3                               **
+**    / __/ __// _ | / /  / _ |    (c) 2005-`(format-time-string "%Y")` , LAMP/EPFL             **
+**  __\ \/ /__/ __ |/ /__/ __ |    http://scala-lang.org/               **
+** /____/\___/_/ |_/____/_/ | |                                         **
+**                          |/                                          **
+\*                                                                      */
+/**
+ * $0
+ * @author ${1:name}
+ * @version ${2:0.1}
+ * $Id$
+ */
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/doc.file-scala-api b/packages/yasnippet/snippets/scala-mode/doc.file-scala-api
new file mode 100644 (file)
index 0000000..ffd4d0d
--- /dev/null
@@ -0,0 +1,17 @@
+# Author: Anders Bach Nielsen <andersbach.nielsen@epfl.ch>
+# name: /** scala api file */
+# key: doc
+# --
+/*                     __                                               *\
+**     ________ ___   / /  ___     Scala API                            **
+**    / __/ __// _ | / /  / _ |    (c) 2005-`(format-time-string "%Y")`, LAMP/EPFL             **
+**  __\ \/ /__/ __ |/ /__/ __ |    http://scala-lang.org/               **
+** /____/\___/_/ |_/____/_/ | |                                         **
+**                          |/                                          **
+\*                                                                      */
+/**
+ * $0
+ * @author ${1:name}
+ * @version ${2:0.1}
+ * $Id$
+ */
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/doc.scaladoc b/packages/yasnippet/snippets/scala-mode/doc.scaladoc
new file mode 100644 (file)
index 0000000..3d96279
--- /dev/null
@@ -0,0 +1,8 @@
+# Author: Anders Bach Nielsen <andersbach.nielsen@epfl.ch>
+# name: /** ... */
+# key: doc
+# --
+/**
+ * ${1:description}
+ * $0
+ */
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/expect b/packages/yasnippet/snippets/scala-mode/expect
new file mode 100644 (file)
index 0000000..b34b4d9
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: expect(value) { ..}
+# key: expect
+# --
+expect(${1:reply}) {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/ext b/packages/yasnippet/snippets/scala-mode/ext
new file mode 100644 (file)
index 0000000..06ba476
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: extends T
+# key: ext
+# --
+extends $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/for.extract b/packages/yasnippet/snippets/scala-mode/for.extract
new file mode 100644 (file)
index 0000000..bc6666d
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: x <- xs
+# key: for
+# --
+${1:x} <- ${2:xs}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/for.if b/packages/yasnippet/snippets/scala-mode/for.if
new file mode 100644 (file)
index 0000000..f812c2c
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: for (x <- xs if guard) { ... }
+# key: for
+# --
+for (${1:x} <- ${2:xs} if ${3:guard}) {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/for.loop b/packages/yasnippet/snippets/scala-mode/for.loop
new file mode 100644 (file)
index 0000000..9b538f7
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: for (x <- xs) { ... }
+# key: for
+# --
+for (${1:x} <- ${2:xs}) {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/for.multi b/packages/yasnippet/snippets/scala-mode/for.multi
new file mode 100644 (file)
index 0000000..6a1866d
--- /dev/null
@@ -0,0 +1,10 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: for {x <- xs \ y <- ys} { yield }
+# key: for
+# --
+for {
+  ${1:x} <- ${2:xs}
+  ${3:x} <- ${4:xs}
+} {
+  yield $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/foreach b/packages/yasnippet/snippets/scala-mode/foreach
new file mode 100644 (file)
index 0000000..7061201
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: foreach(x => ..)
+# key: foreach
+# --
+foreach(${1:x} => ${2:body}) $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/hmap.new b/packages/yasnippet/snippets/scala-mode/hmap.new
new file mode 100644 (file)
index 0000000..a675336
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: new HashMap[K, V]
+# key: hmap
+# --
+new HashMap[${1:key}, ${2:value}] $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/hmap.val-new b/packages/yasnippet/snippets/scala-mode/hmap.val-new
new file mode 100644 (file)
index 0000000..6f53fc6
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: val m = new HashMap[K, V]
+# key: hmap
+# --
+val ${1:m} = new HashMap[${2:key}, ${3:value}] $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/hset.new b/packages/yasnippet/snippets/scala-mode/hset.new
new file mode 100644 (file)
index 0000000..79e4348
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: new HashSet[K]
+# key: hset
+# --
+new HashSet[${1:key}] $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/hset.val-new b/packages/yasnippet/snippets/scala-mode/hset.val-new
new file mode 100644 (file)
index 0000000..9b9cde2
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: val m = new HashSet[K]
+# key: hset
+# --
+val ${1:m} = new HashSet[${2:key}] $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/if b/packages/yasnippet/snippets/scala-mode/if
new file mode 100644 (file)
index 0000000..d1724ef
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: if (cond) { .. }
+# key: if
+# --
+if (${1:condition}) {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/if.else b/packages/yasnippet/snippets/scala-mode/if.else
new file mode 100644 (file)
index 0000000..f0210cb
--- /dev/null
@@ -0,0 +1,9 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: if (cond) { .. } else { .. }
+# key: if
+# --
+if (${1:condition}) {
+  $2
+} else {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/imp b/packages/yasnippet/snippets/scala-mode/imp
new file mode 100644 (file)
index 0000000..f5fdee0
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: import ..
+# key: imp
+# --
+import $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/intercept b/packages/yasnippet/snippets/scala-mode/intercept
new file mode 100644 (file)
index 0000000..06eed8d
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: intercept(classOf[T]) { ..}
+# key: intercept
+# --
+intercept(classOf[${1:Exception]}) {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/isof b/packages/yasnippet/snippets/scala-mode/isof
new file mode 100644 (file)
index 0000000..6ab787b
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: isInstanceOf[T]
+# key: isof
+# --
+isInstanceOf[${1:type}] $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/ls.new b/packages/yasnippet/snippets/scala-mode/ls.new
new file mode 100644 (file)
index 0000000..f231019
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: List(..)
+# key: ls
+# --
+List(${1:args}, ${2:args}) $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/ls.val-new b/packages/yasnippet/snippets/scala-mode/ls.val-new
new file mode 100644 (file)
index 0000000..ea660bf
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: val l = List(..)
+# key: ls
+# --
+val ${1:l} = List(${2:args}, ${3:args}) $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/main b/packages/yasnippet/snippets/scala-mode/main
new file mode 100644 (file)
index 0000000..a9c67e3
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: def main(args: Array[String]) = { ... }
+# key: main
+# --
+def main(args: Array[String]) = {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/map b/packages/yasnippet/snippets/scala-mode/map
new file mode 100644 (file)
index 0000000..43e2a0b
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: map(x => ..)
+# key: map
+# --
+map(${1:x} => ${2:body}) $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/map.new b/packages/yasnippet/snippets/scala-mode/map.new
new file mode 100644 (file)
index 0000000..6c71fce
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: Map(key -> value)
+# key: map
+# --
+Map(${1:key} -> ${2:value}) $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/match b/packages/yasnippet/snippets/scala-mode/match
new file mode 100644 (file)
index 0000000..44bc725
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: cc match { .. }
+# key: match
+# --
+${1:cc} match {
+  case ${2:pattern} => $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/match.can b/packages/yasnippet/snippets/scala-mode/match.can
new file mode 100644 (file)
index 0000000..e4f15f5
--- /dev/null
@@ -0,0 +1,12 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: can match { case Full(res) => .. }
+# key: match
+# --
+${1:option} match {
+  case Full(res) => $0
+
+  case Empty =>
+
+  case Failure(msg, _, _) =>
+
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/match.option b/packages/yasnippet/snippets/scala-mode/match.option
new file mode 100644 (file)
index 0000000..aa725c9
--- /dev/null
@@ -0,0 +1,9 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: option match { case None => .. }
+# key: match
+# --
+${1:option} match {
+  case None => $0
+  case Some(res) =>
+
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/mix b/packages/yasnippet/snippets/scala-mode/mix
new file mode 100644 (file)
index 0000000..bc78100
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: trait T { .. }
+# key: mix
+# --
+trait ${1:name} {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/ob b/packages/yasnippet/snippets/scala-mode/ob
new file mode 100644 (file)
index 0000000..ec4d3a9
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: object name extends T
+# key: ob
+# --
+object ${1:name} extends ${2:type} $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/pac b/packages/yasnippet/snippets/scala-mode/pac
new file mode 100644 (file)
index 0000000..2c51176
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: package ..
+# key: pac
+# --
+package $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/pr.newline b/packages/yasnippet/snippets/scala-mode/pr.newline
new file mode 100644 (file)
index 0000000..093027a
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: println(..)
+# key: pr
+# --
+println(${1:obj}) $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/pr.simple b/packages/yasnippet/snippets/scala-mode/pr.simple
new file mode 100644 (file)
index 0000000..a624140
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: print(..)
+# key: pr
+# --
+print(${1:obj}) $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/pr.string b/packages/yasnippet/snippets/scala-mode/pr.string
new file mode 100644 (file)
index 0000000..130474a
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: println("..")
+# key: pr
+# --
+println("${1:msg}") $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/pr.trace b/packages/yasnippet/snippets/scala-mode/pr.trace
new file mode 100644 (file)
index 0000000..8ad92b0
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: println("obj: " + obj)
+# key: pr
+# --
+println("${1:obj}: " + ${1:obj}) $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/pri b/packages/yasnippet/snippets/scala-mode/pri
new file mode 100644 (file)
index 0000000..12dbd45
--- /dev/null
@@ -0,0 +1,5 @@
+#Author : Jonas Bonèr <jonas@jonasboner.com>
+#name : private
+# key: pri
+# --
+private $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/pri.param b/packages/yasnippet/snippets/scala-mode/pri.param
new file mode 100644 (file)
index 0000000..90ae3ba
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: private[this]
+# key: pri
+# --
+private[${1:this}] $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/pro b/packages/yasnippet/snippets/scala-mode/pro
new file mode 100644 (file)
index 0000000..d5612b4
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: protected
+# key: pro
+# --
+protected $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/pro.param b/packages/yasnippet/snippets/scala-mode/pro.param
new file mode 100644 (file)
index 0000000..ae82305
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: protected[this]
+# key: pro
+# --
+protected[${1:this}] $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/suite b/packages/yasnippet/snippets/scala-mode/suite
new file mode 100644 (file)
index 0000000..942fbad
--- /dev/null
@@ -0,0 +1,9 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: class T extends Suite { .. }
+# key: suite
+# --
+import org.scalatest._
+
+class ${1:name} extends Suite {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/test b/packages/yasnippet/snippets/scala-mode/test
new file mode 100644 (file)
index 0000000..d4819ac
--- /dev/null
@@ -0,0 +1,8 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: @Test def testX = ...
+# key: test
+# --
+//@Test
+def test${1:name} = {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/throw b/packages/yasnippet/snippets/scala-mode/throw
new file mode 100644 (file)
index 0000000..e303c25
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: throw new Exception
+# key: throw
+# --
+throw new ${1:Exception}(${2:msg}) $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/tr b/packages/yasnippet/snippets/scala-mode/tr
new file mode 100644 (file)
index 0000000..2381bdc
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Anders Bach Nielsen <andersbach.nielsen@epfl.ch>
+# name: trait T { .. }
+# key: tr
+# --
+trait ${1:name} {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/tr.ext b/packages/yasnippet/snippets/scala-mode/tr.ext
new file mode 100644 (file)
index 0000000..15fb8aa
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Anders Bach Nielsen <andersbach.nielsen@epfl.ch>
+# name: trait T extends C { .. }
+# key: tr
+# --
+trait ${1:name} extends ${2:class} {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/tr.ext-with b/packages/yasnippet/snippets/scala-mode/tr.ext-with
new file mode 100644 (file)
index 0000000..c971ebb
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Anders Bach Nielsen <andersbach.nielsen@epfl.ch>
+# name: trait T1 extends C with T2 { .. }
+# key: tr
+# --
+trait ${1:name} extends ${2:class} with ${3:trait} {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/tr.with b/packages/yasnippet/snippets/scala-mode/tr.with
new file mode 100644 (file)
index 0000000..732dfb3
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Anders Bach Nielsen <andersbach.nielsen@epfl.ch>
+# name: trait T1 with T2 { .. }
+# key: tr
+# --
+trait ${1:name} with ${2:trait} {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/try b/packages/yasnippet/snippets/scala-mode/try
new file mode 100644 (file)
index 0000000..c9bf2e2
--- /dev/null
@@ -0,0 +1,10 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: try { .. } catch { case e => ..}
+# key: try
+# --
+try {
+  $0
+} catch {
+  case ${1:e}: ${2:Exception} =>
+    ${1:println(\"ERROR: \" + e) // TODO: handle exception}\n}
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/try.catch-finally b/packages/yasnippet/snippets/scala-mode/try.catch-finally
new file mode 100644 (file)
index 0000000..52f8c31
--- /dev/null
@@ -0,0 +1,12 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: try { .. } catch { case e => ..} finally { ..}
+# key: try
+# --
+try {
+  $0
+} catch {
+  case ${1:e}: ${2:Exception} =>
+    ${1:println(\"ERROR: \" + e) // TODO: handle exception}\n}
+} finally {
+
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/try.finally b/packages/yasnippet/snippets/scala-mode/try.finally
new file mode 100644 (file)
index 0000000..6f8d88f
--- /dev/null
@@ -0,0 +1,9 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: try { .. } finally { .. }
+# key: try
+# --
+try {
+
+} finally {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/tup.arrow b/packages/yasnippet/snippets/scala-mode/tup.arrow
new file mode 100644 (file)
index 0000000..7b77907
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: element1 -> element2
+# key: tup
+# --
+${1:element1} -> ${2:element2} $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/tup.paren b/packages/yasnippet/snippets/scala-mode/tup.paren
new file mode 100644 (file)
index 0000000..ebe94a8
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: (element1, element2)
+# key: tup
+# --
+(${1:element1}, ${2:element2}) $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/val b/packages/yasnippet/snippets/scala-mode/val
new file mode 100644 (file)
index 0000000..b299add
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: val name = ..
+# key: val
+# --
+val ${1:name} = ${2:obj} $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/val.new b/packages/yasnippet/snippets/scala-mode/val.new
new file mode 100644 (file)
index 0000000..9bd2b7d
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: val name = new ..
+# key: val
+# --
+val ${1:name} = new ${2:obj} $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/val.ret b/packages/yasnippet/snippets/scala-mode/val.ret
new file mode 100644 (file)
index 0000000..4af1192
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: val name: T = ..
+# key: val
+# --
+val ${1:name}: ${2:T} = ${3:obj} $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/var b/packages/yasnippet/snippets/scala-mode/var
new file mode 100644 (file)
index 0000000..2c6158b
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: var name = ..
+# key: var
+# --
+var ${1:name} = ${2:obj} $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/var.new b/packages/yasnippet/snippets/scala-mode/var.new
new file mode 100644 (file)
index 0000000..5dff6bc
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: var name = new ..
+# key: var
+# --
+var ${1:name} = new ${2:obj} $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/var.ret b/packages/yasnippet/snippets/scala-mode/var.ret
new file mode 100644 (file)
index 0000000..60b3fdc
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: var name: T = ..
+# key: var
+# --
+var ${1:name}: ${2:T} = ${3:obj} $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/whi b/packages/yasnippet/snippets/scala-mode/whi
new file mode 100644 (file)
index 0000000..233cf1e
--- /dev/null
@@ -0,0 +1,7 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: while(cond) { .. }
+# key: whi
+# --
+while (${1:condition}) {
+  $0
+}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/scala-mode/with b/packages/yasnippet/snippets/scala-mode/with
new file mode 100644 (file)
index 0000000..aa924af
--- /dev/null
@@ -0,0 +1,5 @@
+# Author: Jonas Bonèr <jonas@jonasboner.com>
+# name: with T
+# key: with
+# --
+with $0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/snippet-mode/.yas-parents b/packages/yasnippet/snippets/snippet-mode/.yas-parents
new file mode 100644 (file)
index 0000000..eed5b44
--- /dev/null
@@ -0,0 +1 @@
+text-mode
diff --git a/packages/yasnippet/snippets/snippet-mode/field b/packages/yasnippet/snippets/snippet-mode/field
new file mode 100644 (file)
index 0000000..f969a00
--- /dev/null
@@ -0,0 +1,6 @@
+# name: ${ ...  } field
+# contributor: joaotavora
+# key: $f
+# key: field
+# --
+\${${1:${2:n}:}$3${4:\$(${5:lisp-fn})}\}$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/snippet-mode/mirror b/packages/yasnippet/snippets/snippet-mode/mirror
new file mode 100644 (file)
index 0000000..2d43450
--- /dev/null
@@ -0,0 +1,6 @@
+# name: ${n:$(...)} mirror
+# key: $m
+# contributor: joaotavora
+# key: mirror
+# --
+\${${2:n}:${4:\$(${5:reflection-fn})}\}$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/snippet-mode/vars b/packages/yasnippet/snippets/snippet-mode/vars
new file mode 100644 (file)
index 0000000..d617002
--- /dev/null
@@ -0,0 +1,12 @@
+# -*- mode: snippet -*-
+# name: Snippet header
+# contributor: joaotavora
+# key: vars
+# --
+# name: $1${2:
+# key: ${3:trigger-key}}${4:
+# keybinding: ${5:keybinding}}${6:
+# expand-env: (${7:})}
+# contributor: $6
+# --
+$0
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/sql-mode/.yas-parents b/packages/yasnippet/snippets/sql-mode/.yas-parents
new file mode 100644 (file)
index 0000000..eed5b44
--- /dev/null
@@ -0,0 +1 @@
+text-mode
diff --git a/packages/yasnippet/snippets/sql-mode/column b/packages/yasnippet/snippets/sql-mode/column
new file mode 100644 (file)
index 0000000..5817296
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Alejandro Espinoza Esparza <aespinoza@structum.com.mx>
+# name: , ColumnName ColumnType NOT NULL...
+# key: column
+# --
+       ,       ${1:Name}               ${2:Type}                       ${3:NOT NULL}
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/sql-mode/constraint b/packages/yasnippet/snippets/sql-mode/constraint
new file mode 100644 (file)
index 0000000..bfa2b78
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Alejandro Espinoza Esparza <aespinoza@structum.com.mx>
+# name: CONSTRAINT [..] PRIMARY KEY ...
+# key: constraint
+# --
+CONSTRAINT [${1:PK_Name}] PRIMARY KEY ${2:CLUSTERED} ([${3:ColumnName}])
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/sql-mode/constraint.1 b/packages/yasnippet/snippets/sql-mode/constraint.1
new file mode 100644 (file)
index 0000000..bfef0b6
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Alejandro Espinoza Esparza <aespinoza@structum.com.mx>
+# name: CONSTRAINT [..] FOREIGN KEY ...
+# key: constraint
+# --
+CONSTRAINT [${1:FK_Name}] FOREIGN KEY ${2:CLUSTERED} ([${3:ColumnName}])
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/sql-mode/create b/packages/yasnippet/snippets/sql-mode/create
new file mode 100644 (file)
index 0000000..085b267
--- /dev/null
@@ -0,0 +1,11 @@
+# contributor: Alejandro Espinoza Esparza <aespinoza@structum.com.mx>
+# name: create table ...
+# key: create
+# --
+CREATE TABLE [${1:dbo}].[${2:TableName}]
+(
+               ${3:Id}         ${4:INT IDENTITY(1,1)}          ${5:NOT NULL}
+$0
+       CONSTRAINT [${6:PK_}] PRIMARY KEY ${7:CLUSTERED} ([$3])
+)
+GO
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/sql-mode/create.1 b/packages/yasnippet/snippets/sql-mode/create.1
new file mode 100644 (file)
index 0000000..6c37dd8
--- /dev/null
@@ -0,0 +1,13 @@
+# contributor: Alejandro Espinoza Esparza <aespinoza@structum.com.mx>
+# name: create procedure ...
+# key: create
+# --
+CREATE PROCEDURE [${1:dbo}].[${2:Name}]
+(
+               $3              $4              = ${5:NULL}             ${6:OUTPUT}
+)
+AS
+BEGIN
+$0
+END
+GO
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/sql-mode/references b/packages/yasnippet/snippets/sql-mode/references
new file mode 100644 (file)
index 0000000..ff6d12f
--- /dev/null
@@ -0,0 +1,5 @@
+# contributor: Alejandro Espinoza Esparza <aespinoza@structum.com.mx>
+# name: REFERENCES ...
+# key: references
+# --
+REFERENCES ${1:TableName}([${2:ColumnName}])
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/text-mode/email b/packages/yasnippet/snippets/text-mode/email
new file mode 100644 (file)
index 0000000..95fad03
--- /dev/null
@@ -0,0 +1,4 @@
+# name: (user's email)
+# key: email
+# --
+`(replace-regexp-in-string "@" "@NOSPAM." user-mail-address)`
\ No newline at end of file
diff --git a/packages/yasnippet/snippets/text-mode/time b/packages/yasnippet/snippets/text-mode/time
new file mode 100644 (file)
index 0000000..814ed5f
--- /dev/null
@@ -0,0 +1,4 @@
+# name: (current time)
+# key: time
+# --
+`(current-time-string)`
\ No newline at end of file
diff --git a/packages/yasnippet/yasnippet-debug.el b/packages/yasnippet/yasnippet-debug.el
new file mode 100644 (file)
index 0000000..9529e7f
--- /dev/null
@@ -0,0 +1,127 @@
+;;; yasnippet-debug.el --- debug functions for yasnippet
+
+;; Copyright (C) 2010, 2013  Free Software Foundation, Inc.
+
+;; Author: João Távora
+;; Keywords: emulations, convenience
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Just some debug functions
+
+;;; Code:
+
+(require 'yasnippet)
+
+(defun yas-debug-snippet-vars ()
+  "Debug snippets, fields, mirrors and the `buffer-undo-list'."
+  (interactive)
+  (with-output-to-temp-buffer "*YASnippet trace*"
+    (princ "Interesting YASnippet vars: \n\n")
+
+    (princ (format "\nPost command hook: %s\n" post-command-hook))
+    (princ (format "\nPre  command hook: %s\n" pre-command-hook))
+
+    (princ (format "%s live snippets in total\n" (length (yas--snippets-at-point (quote all-snippets)))))
+    (princ (format "%s overlays in buffer:\n\n" (length (overlays-in (point-min) (point-max)))))
+    (princ (format "%s live snippets at point:\n\n" (length (yas--snippets-at-point))))
+
+
+    (dolist (snippet (yas--snippets-at-point))
+      (princ (format "\tsid: %d control overlay from %d to %d\n"
+                     (yas--snippet-id snippet)
+                     (overlay-start (yas--snippet-control-overlay snippet))
+                     (overlay-end (yas--snippet-control-overlay snippet))))
+      (princ (format "\tactive field: %d from %s to %s covering \"%s\"\n"
+                     (yas--field-number (yas--snippet-active-field snippet))
+                     (marker-position (yas--field-start (yas--snippet-active-field snippet)))
+                     (marker-position (yas--field-end (yas--snippet-active-field snippet)))
+                     (buffer-substring-no-properties (yas--field-start (yas--snippet-active-field snippet)) (yas--field-end (yas--snippet-active-field snippet)))))
+      (when (yas--snippet-exit snippet)
+        (princ (format "\tsnippet-exit: at %s next: %s\n"
+                       (yas--exit-marker (yas--snippet-exit snippet))
+                       (yas--exit-next (yas--snippet-exit snippet)))))
+      (dolist (field (yas--snippet-fields snippet))
+        (princ (format "\tfield: %d from %s to %s covering \"%s\" next: %s%s\n"
+                       (yas--field-number field)
+                       (marker-position (yas--field-start field))
+                       (marker-position (yas--field-end field))
+                       (buffer-substring-no-properties (yas--field-start field) (yas--field-end field))
+                       (yas--debug-format-fom-concise (yas--field-next field))
+                       (if (yas--field-parent-field field) "(has a parent)" "")))
+        (dolist (mirror (yas--field-mirrors field))
+          (princ (format "\t\tmirror: from %s to %s covering \"%s\" next: %s\n"
+                         (marker-position (yas--mirror-start mirror))
+                         (marker-position (yas--mirror-end mirror))
+                         (buffer-substring-no-properties (yas--mirror-start mirror) (yas--mirror-end mirror))
+                         (yas--debug-format-fom-concise (yas--mirror-next mirror)))))))
+
+    (princ (format "\nUndo is %s and point-max is %s.\n"
+                   (if (eq buffer-undo-list t)
+                       "DISABLED"
+                     "ENABLED")
+                   (point-max)))
+    (unless (eq buffer-undo-list t)
+      (princ (format "Undpolist has %s elements. First 10 elements follow:\n" (length buffer-undo-list)))
+      (let ((first-ten (subseq buffer-undo-list 0 19)))
+        (dolist (undo-elem first-ten)
+          (princ (format "%2s:  %s\n" (position undo-elem first-ten) (truncate-string-to-width (format "%s" undo-elem) 70))))))))
+
+(defun yas--debug-format-fom-concise (fom)
+  (when fom
+    (cond ((yas--field-p fom)
+           (format "field %d from %d to %d"
+                   (yas--field-number fom)
+                   (marker-position (yas--field-start fom))
+                   (marker-position (yas--field-end fom))))
+          ((yas--mirror-p fom)
+           (format "mirror from %d to %d"
+                   (marker-position (yas--mirror-start fom))
+                   (marker-position (yas--mirror-end fom))))
+          (t
+           (format "snippet exit at %d"
+                   (marker-position (yas--fom-start fom)))))))
+
+
+(defun yas-exterminate-package ()
+  (interactive)
+  (yas-global-mode -1)
+  (yas-minor-mode -1)
+  (mapatoms #'(lambda (atom)
+                (when (string-match "yas[-/]" (symbol-name atom))
+                  (unintern atom obarray)))))
+
+(defun yas-debug-test (&optional quiet)
+  (interactive "P")
+  (yas-load-directory (or (and (listp yas-snippet-dirs)
+                               (first yas-snippet-dirs))
+                          yas-snippet-dirs
+                          "~/Source/yasnippet/snippets/"))
+  (set-buffer (switch-to-buffer "*YAS TEST*"))
+  (mapc #'yas--commit-snippet (yas--snippets-at-point 'all-snippets))
+  (erase-buffer)
+  (setq buffer-undo-list nil)
+  (setq undo-in-progress nil)
+  (snippet-mode)
+  (yas-minor-mode 1)
+  (let ((abbrev))
+    (setq abbrev "$f")
+    (insert abbrev))
+  (unless quiet
+    (add-hook 'post-command-hook 'yas-debug-snippet-vars 't 'local)))
+
+(provide 'yasnippet-debug)
+;;; yasnippet-debug.el ends here
diff --git a/packages/yasnippet/yasnippet-tests.el b/packages/yasnippet/yasnippet-tests.el
new file mode 100644 (file)
index 0000000..db1fe55
--- /dev/null
@@ -0,0 +1,651 @@
+;;; yasnippet-tests.el --- some yasnippet tests
+
+;; Copyright (C) 2012, 2013  Free Software Foundation, Inc.
+
+;; Author: João Távora <joaot@siscog.pt>
+;; Keywords: emulations, convenience
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Test basic snippet mechanics and the loading system
+
+;;; Code:
+
+(require 'yasnippet)
+(require 'ert)
+(require 'ert-x)
+
+\f
+;;; Snippet mechanics
+
+(defun yas--buffer-contents ()
+  (buffer-substring-no-properties (point-min) (point-max)))
+
+(ert-deftest field-navigation ()
+  (with-temp-buffer
+    (yas-minor-mode 1)
+    (yas-expand-snippet "${1:brother} from another ${2:mother}")
+    (should (string= (yas--buffer-contents)
+                     "brother from another mother"))
+
+    (should (looking-at "brother"))
+    (ert-simulate-command '(yas-next-field-or-maybe-expand))
+    (should (looking-at "mother"))
+    (ert-simulate-command '(yas-prev-field))
+    (should (looking-at "brother"))))
+
+(ert-deftest simple-mirror ()
+  (with-temp-buffer
+    (yas-minor-mode 1)
+    (yas-expand-snippet "${1:brother} from another $1")
+    (should (string= (yas--buffer-contents)
+                     "brother from another brother"))
+    (ert-simulate-command `(yas-mock-insert "bla"))
+    (should (string= (yas--buffer-contents)
+                     "bla from another bla"))))
+
+(ert-deftest mirror-with-transformation ()
+  (with-temp-buffer
+    (yas-minor-mode 1)
+    (yas-expand-snippet "${1:brother} from another ${1:$(upcase yas-text)}")
+    (should (string= (yas--buffer-contents)
+                     "brother from another BROTHER"))
+    (ert-simulate-command `(yas-mock-insert "bla"))
+    (should (string= (yas--buffer-contents)
+                     "bla from another BLA"))))
+
+(ert-deftest primary-field-transformation ()
+  (with-temp-buffer
+    (yas-minor-mode 1)
+    (let ((snippet "${1:$$(upcase yas/text)}${1:$(concat \"bar\" yas/text)}"))
+      (yas-expand-snippet snippet)
+      (should (string= (yas--buffer-contents) "bar"))
+      (ert-simulate-command `(yas-mock-insert "foo"))
+      (should (string= (yas--buffer-contents) "FOObarFOO")))))
+
+(ert-deftest nested-placeholders-kill-superfield ()
+  (with-temp-buffer
+    (yas-minor-mode 1)
+    (yas-expand-snippet "brother from ${2:another ${3:mother}}!")
+    (should (string= (yas--buffer-contents)
+                     "brother from another mother!"))
+    (ert-simulate-command `(yas-mock-insert "bla"))
+    (should (string= (yas--buffer-contents)
+                     "brother from bla!"))))
+
+(ert-deftest nested-placeholders-use-subfield ()
+  (with-temp-buffer
+    (yas-minor-mode 1)
+    (yas-expand-snippet "brother from ${2:another ${3:mother}}!")
+    (ert-simulate-command '(yas-next-field-or-maybe-expand))
+    (ert-simulate-command `(yas-mock-insert "bla"))
+    (should (string= (yas--buffer-contents)
+                     "brother from another bla!"))))
+
+(ert-deftest mirrors-adjacent-to-fields-with-nested-mirrors ()
+  (with-temp-buffer
+    (yas-minor-mode 1)
+    (yas-expand-snippet "<%= f.submit \"${1:Submit}\"${2:$(and (yas-text) \", :disable_with => '\")}${2:$1ing...}${2:$(and (yas-text) \"'\")} %>")
+    (should (string= (yas--buffer-contents)
+                     "<%= f.submit \"Submit\", :disable_with => 'Submiting...' %>"))
+    (ert-simulate-command `(yas-mock-insert "Send"))
+    (should (string= (yas--buffer-contents)
+                     "<%= f.submit \"Send\", :disable_with => 'Sending...' %>"))))
+
+(ert-deftest deep-nested-mirroring-issue-351 ()
+  (with-temp-buffer
+    (yas-minor-mode 1)
+    (yas-expand-snippet "${1:FOOOOOOO}${2:$1}${3:$2}${4:$3}")
+    (ert-simulate-command `(yas-mock-insert "abc"))
+    (should (string= (yas--buffer-contents) "abcabcabcabc"))))
+
+;; (ert-deftest in-snippet-undo ()
+;;   (with-temp-buffer
+;;     (yas-minor-mode 1)
+;;     (yas-expand-snippet "brother from ${2:another ${3:mother}}!")
+;;     (ert-simulate-command '(yas-next-field-or-maybe-expand))
+;;     (ert-simulate-command `(yas-mock-insert "bla"))
+;;     (ert-simulate-command '(undo))
+;;     (should (string= (yas--buffer-contents)
+;;                      "brother from another mother!"))))
+
+\f
+;;; Snippet expansion and character escaping
+;;; Thanks to @zw963 (Billy) for the testing
+;;;
+(ert-deftest escape-dollar ()
+  (with-temp-buffer
+    (yas-minor-mode 1)
+    (yas-expand-snippet "bla\\${1:bla}ble")
+    (should (string= (yas--buffer-contents) "bla${1:bla}ble"))))
+
+(ert-deftest escape-closing-brace ()
+  (with-temp-buffer
+    (yas-minor-mode 1)
+    (yas-expand-snippet "bla${1:bla\\}}ble")
+    (should (string= (yas--buffer-contents) "blabla}ble"))
+    (should (string= (yas-field-value 1) "bla}"))))
+
+(ert-deftest escape-backslashes ()
+  (with-temp-buffer
+    (yas-minor-mode 1)
+    (yas-expand-snippet "bla\\ble")
+    (should (string= (yas--buffer-contents) "bla\\ble"))))
+
+(ert-deftest escape-backquotes ()
+  (with-temp-buffer
+    (yas-minor-mode 1)
+    (yas-expand-snippet "bla`(upcase \"foo\\`bar\")`ble")
+    (should (string= (yas--buffer-contents) "blaFOO`BARble"))))
+
+(ert-deftest escape-some-elisp-with-strings ()
+  "elisp with strings and unbalance parens inside it"
+  (with-temp-buffer
+    (yas-minor-mode 1)
+    ;; The rules here is: to output a literal `"' you need to escape
+    ;; it with one backslash. You don't need to escape them in
+    ;; embedded elisp.
+    (yas-expand-snippet "soon \\\"`(concat (upcase \"(my arms\")\"\\\" were all around her\")`")
+    (should (string= (yas--buffer-contents) "soon \"(MY ARMS\" were all around her"))))
+
+(ert-deftest escape-some-elisp-with-backslashes ()
+  (with-temp-buffer
+    (yas-minor-mode 1)
+    ;; And the rule here is: to output a literal `\' inside a string
+    ;; inside embedded elisp you need a total of six `\'
+    (yas-expand-snippet "bla`(upcase \"hey\\\\\\yo\")`ble")
+    (should (string= (yas--buffer-contents) "blaHEY\\YOble"))))
+
+(ert-deftest be-careful-when-escaping-in-yas-selected-text ()
+  (with-temp-buffer
+    (yas-minor-mode 1)
+    (let ((yas/selected-text "He\\\\o world!"))
+      (yas-expand-snippet "Look ma! `(yas/selected-text)`")
+      (should (string= (yas--buffer-contents) "Look ma! He\\\\o world!")))
+    (yas-exit-all-snippets)
+    (erase-buffer)
+    (let ((yas/selected-text "He\"o world!"))
+      (yas-expand-snippet "Look ma! `(yas/selected-text)`")
+      (should (string= (yas--buffer-contents) "Look ma! He\"o world!")))
+    (yas-exit-all-snippets)
+    (erase-buffer)
+    (let ((yas/selected-text "He\"\)\\o world!"))
+      (yas-expand-snippet "Look ma! `(yas/selected-text)`")
+      (should (string= (yas--buffer-contents) "Look ma! He\"\)\\o world!")))
+    (yas-exit-all-snippets)
+    (erase-buffer)))
+
+(ert-deftest be-careful-when-escaping-in-yas-selected-text-2 ()
+  (with-temp-buffer
+    (let ((yas/selected-text "He)}o world!"))
+      (yas-expand-snippet "Look ma! ${1:`(yas/selected-text)`} OK?")
+      (should (string= (yas--buffer-contents) "Look ma! He)}o world! OK?")))))
+
+(ert-deftest example-for-issue-271 ()
+  (with-temp-buffer
+    (yas-minor-mode 1)
+    (let ((yas-selected-text "aaa")
+          (snippet "if ${1:condition}\n`yas/selected-text`\nelse\n$3\nend"))
+      (yas-expand-snippet snippet)
+      (yas-next-field)
+      (ert-simulate-command `(yas-mock-insert "bbb"))
+      (should (string= (yas--buffer-contents) "if condition\naaa\nelse\nbbb\nend")))))
+
+(ert-deftest another-example-for-issue-271 ()
+  ;; expect this to fail in batch mode since `region-active-p' doesn't
+  ;; used by `yas-expand-snippet' doesn't make sense in that context.
+  ;;
+  :expected-result (if noninteractive
+                       :failed
+                     :passed)
+  (with-temp-buffer
+    (yas-minor-mode 1)
+    (let ((snippet "\\${${1:1}:`yas/selected-text`}"))
+      (insert "aaabbbccc")
+      (set-mark 4)
+      (goto-char 7)
+      (yas-expand-snippet snippet)
+      (should (string= (yas--buffer-contents) "aaa${1:bbb}ccc")))))
+
+(ert-deftest string-match-with-subregexp-in-embedded-elisp ()
+  (with-temp-buffer
+    (yas-minor-mode 1)
+    ;; the rule here is: To use regexps in embedded `(elisp)` expressions, write
+    ;; it like you would normal elisp, i.e. no need to escape the backslashes.
+    (let ((snippet "`(if (string-match \"foo\\\\(ba+r\\\\)foo\" \"foobaaaaaaaaaarfoo\")
+                         \"ok\"
+                         \"fail\")`"))
+      (yas-expand-snippet snippet))
+    (should (string= (yas--buffer-contents) "ok"))))
+
+(ert-deftest string-match-with-subregexp-in-mirror-transformations ()
+  (with-temp-buffer
+    (yas-minor-mode 1)
+    ;; the rule here is: To use regexps in embedded `(elisp)` expressions,
+    ;; escape backslashes once, i.e. to use \\( \\) constructs, write \\\\( \\\\).
+    (let ((snippet "$1${1:$(if (string-match \"foo\\\\\\\\(ba+r\\\\\\\\)baz\" yas/text)
+                                \"ok\"
+                                \"fail\")}"))
+      (yas-expand-snippet snippet)
+      (should (string= (yas--buffer-contents) "fail"))
+      (ert-simulate-command `(yas-mock-insert "foobaaar"))
+      (should (string= (yas--buffer-contents) "foobaaarfail"))
+      (ert-simulate-command `(yas-mock-insert "baz"))
+      (should (string= (yas--buffer-contents) "foobaaarbazok")))))
+
+\f
+;;; Misc tests
+;;;
+(ert-deftest protection-overlay-no-cheating ()
+  "Protection overlays at the very end of the buffer are dealt
+  with by cheatingly inserting a newline!
+
+TODO: correct this bug!"
+  :expected-result :failed
+  (with-temp-buffer
+    (yas-minor-mode 1)
+    (yas-expand-snippet "${2:brother} from another ${1:mother}")
+    (should (string= (yas--buffer-contents)
+                     "brother from another mother") ;; no newline should be here!
+            )))
+\f
+;;; Loading
+;;;
+(defun yas--call-with-temporary-redefinitions (function
+                                               &rest function-names-and-overriding-functions)
+  (let* ((overrides (remove-if-not #'(lambda (fdef)
+                                       (fboundp (first fdef)))
+                                   function-names-and-overriding-functions))
+         (definition-names (mapcar #'first overrides))
+         (overriding-functions (mapcar #'second overrides))
+         (saved-functions (mapcar #'symbol-function definition-names)))
+    ;; saving all definitions before overriding anything ensures FDEFINITION
+    ;; errors don't cause accidental permanent redefinitions.
+    ;;
+    (labels ((set-fdefinitions (names functions)
+                               (loop for name in names
+                                     for fn in functions
+                                     do (fset name fn))))
+      (set-fdefinitions definition-names overriding-functions)
+      (unwind-protect (funcall function)
+       (set-fdefinitions definition-names saved-functions)))))
+
+(defmacro yas--with-temporary-redefinitions (fdefinitions &rest body)
+  ;; "Temporarily (but globally) redefine each function in FDEFINITIONS.
+  ;; E.g.: (yas--with-temporary-redefinitions ((foo (x) ...)
+  ;;                                           (bar (x) ...))
+  ;;         ;; code that eventually calls foo, bar of (setf foo)
+  ;;         ...)"
+  ;; FIXME: This is hideous!  Better use defadvice (or at least letf).
+  `(yas--call-with-temporary-redefinitions
+    (lambda () ,@body)
+    ,@(mapcar #'(lambda (thingy)
+                  `(list ',(first thingy)
+                         (lambda ,@(rest thingy))))
+              fdefinitions)))
+
+(put 'yas--with-temporary-redefinitions 'lisp-indent-function 1)
+(put 'yas--with-temporary-redefinitions 'edebug-form-spec '((&rest (defun*)) cl-declarations body))
+
+(defmacro yas-with-overriden-buffer-list (&rest body)
+  (let ((saved-sym (make-symbol "yas--buffer-list")))
+    `(let ((,saved-sym (symbol-function 'buffer-list)))
+       (yas--with-temporary-redefinitions
+           ((buffer-list ()
+                         (remove-if #'(lambda (buf)
+                                        (with-current-buffer buf
+                                          (eq major-mode 'lisp-interaction-mode)))
+                                    (funcall ,saved-sym))))
+         ,@body))))
+
+(defmacro yas-with-some-interesting-snippet-dirs (&rest body)
+  `(yas-saving-variables
+    (yas-with-overriden-buffer-list
+     (yas-with-snippet-dirs
+       '((".emacs.d/snippets"
+          ("c-mode"
+           (".yas-parents" . "cc-mode")
+           ("printf" . "printf($1);"))  ;; notice the overriding for issue #281
+          ("emacs-lisp-mode" ("ert-deftest" . "(ert-deftest ${1:name} () $0)"))
+          ("lisp-interaction-mode" (".yas-parents" . "emacs-lisp-mode")))
+         ("library/snippets"
+          ("c-mode"
+           (".yas-parents" . "c++-mode")
+           ("printf" . "printf"))
+          ("cc-mode" ("def" . "# define"))
+          ("emacs-lisp-mode" ("dolist" . "(dolist)"))
+          ("lisp-interaction-mode" ("sc" . "brother from another mother"))))
+       ,@body))))
+
+(ert-deftest basic-jit-loading ()
+  "Test basic loading and expansion of snippets"
+  (yas-with-some-interesting-snippet-dirs
+   (yas-reload-all)
+   (yas--basic-jit-loading-1)))
+
+(ert-deftest basic-jit-loading-with-compiled-snippets ()
+  "Test basic loading and expansion of snippets"
+  (yas-with-some-interesting-snippet-dirs
+   (yas-reload-all)
+   (yas-recompile-all)
+   (yas--with-temporary-redefinitions ((yas--load-directory-2
+                                        (&rest _dummies)
+                                        (ert-fail "yas--load-directory-2 shouldn't be called when snippets have been compiled")))
+     (yas-reload-all)
+     (yas--basic-jit-loading-1))))
+
+(ert-deftest loading-with-cyclic-parenthood ()
+  "Test loading when cyclic parenthood is setup."
+  (yas-saving-variables
+   (yas-with-snippet-dirs '((".emacs.d/snippets"
+                             ("c-mode"
+                              (".yas-parents" . "cc-mode"))
+                             ("cc-mode"
+                              (".yas-parents" . "yet-another-c-mode"))
+                             ("yet-another-c-mode"
+                              (".yas-parents" . "c-mode"))))
+     (yas-reload-all)
+     (condition-case nil
+         (yas--all-parents 'c-mode)
+       (error
+        (ert-fail "cyclic parenthood test failed"))))))
+
+(defun yas--basic-jit-loading-1 ()
+  (with-temp-buffer
+    (should (= 4 (hash-table-count yas--scheduled-jit-loads)))
+    (should (= 0 (hash-table-count yas--tables)))
+    (lisp-interaction-mode)
+    (yas-minor-mode 1)
+    (should (= 2 (hash-table-count yas--scheduled-jit-loads)))
+    (should (= 2 (hash-table-count yas--tables)))
+    (should (= 1 (hash-table-count (yas--table-uuidhash (gethash 'lisp-interaction-mode yas--tables)))))
+    (should (= 2 (hash-table-count (yas--table-uuidhash (gethash 'emacs-lisp-mode yas--tables)))))
+    (yas-should-expand '(("sc" . "brother from another mother")
+                         ("dolist" . "(dolist)")
+                         ("ert-deftest" . "(ert-deftest name () )")))
+    (c-mode)
+    (yas-minor-mode 1)
+    (should (= 0 (hash-table-count yas--scheduled-jit-loads)))
+    (should (= 4 (hash-table-count yas--tables)))
+    (should (= 1 (hash-table-count (yas--table-uuidhash (gethash 'c-mode yas--tables)))))
+    (should (= 1 (hash-table-count (yas--table-uuidhash (gethash 'cc-mode yas--tables)))))
+    (yas-should-expand '(("printf" . "printf();")
+                         ("def" . "# define")))
+    (yas-should-not-expand '("sc" "dolist" "ert-deftest"))))
+
+\f
+;;; Menu
+;;;
+(defmacro yas-with-even-more-interesting-snippet-dirs (&rest body)
+  `(yas-saving-variables
+    (yas-with-snippet-dirs
+      `((".emacs.d/snippets"
+         ("c-mode"
+          (".yas-make-groups" . "")
+          ("printf" . "printf($1);")
+          ("foo-group-a"
+           ("fnprintf" . "fprintf($1);")
+           ("snprintf" . "snprintf($1);"))
+          ("foo-group-b"
+           ("strcmp" . "strecmp($1);")
+           ("strcasecmp" . "strcasecmp($1);")))
+         ("lisp-interaction-mode"
+          ("ert-deftest" . "# group: barbar\n# --\n(ert-deftest ${1:name} () $0)"))
+         ("fancy-mode"
+          ("a-guy" . "# uuid: 999\n# --\nyo!")
+          ("a-sir" . "# uuid: 12345\n# --\nindeed!")
+          ("a-lady" . "# uuid: 54321\n# --\noh-la-la!")
+          ("a-beggar" . "# uuid: 0101\n# --\narrrgh!")
+          ("an-outcast" . "# uuid: 666\n# --\narrrgh!")
+          (".yas-setup.el" . , (pp-to-string
+                                '(yas-define-menu 'fancy-mode
+                                                  '((yas-ignore-item "0101")
+                                                    (yas-item "999")
+                                                    (yas-submenu "sirs"
+                                                                 ((yas-item "12345")))
+                                                    (yas-submenu "ladies"
+                                                                 ((yas-item "54321"))))
+                                                  '("666")))))))
+      ,@body)))
+
+(ert-deftest test-yas-define-menu ()
+  (let ((yas-use-menu t))
+    (yas-with-even-more-interesting-snippet-dirs
+     (yas-reload-all 'no-jit)
+     (let ((menu (cdr (gethash 'fancy-mode yas--menu-table))))
+       (should (eql 4 (length menu)))
+       (dolist (item '("a-guy" "a-beggar"))
+         (should (find item menu :key #'third :test #'string=)))
+       (should-not (find "an-outcast" menu :key #'third :test #'string=))
+       (dolist (submenu '("sirs" "ladies"))
+         (should (keymapp
+                  (fourth
+                   (find submenu menu :key #'third :test #'string=)))))
+       ))))
+
+(ert-deftest test-group-menus ()
+  "Test group-based menus using .yas-make-groups and the group directive"
+  (let ((yas-use-menu t))
+    (yas-with-even-more-interesting-snippet-dirs
+     (yas-reload-all 'no-jit)
+     ;; first the subdir-based groups
+     ;;
+     (let ((menu (cdr (gethash 'c-mode yas--menu-table))))
+       (should (eql 3 (length menu)))
+       (dolist (item '("printf" "foo-group-a" "foo-group-b"))
+         (should (find item menu :key #'third :test #'string=)))
+       (dolist (submenu '("foo-group-a" "foo-group-b"))
+         (should (keymapp
+                  (fourth
+                   (find submenu menu :key #'third :test #'string=))))))
+     ;; now group directives
+     ;;
+     (let ((menu (cdr (gethash 'lisp-interaction-mode yas--menu-table))))
+       (should (eql 1 (length menu)))
+       (should (find "barbar" menu :key #'third :test #'string=))
+       (should (keymapp
+                (fourth
+                 (find "barbar" menu :key #'third :test #'string=))))))))
+
+(ert-deftest test-group-menus-twisted ()
+  "Same as similarly named test, but be mean.
+
+TODO: be meaner"
+  (let ((yas-use-menu t))
+    (yas-with-even-more-interesting-snippet-dirs
+     ;; add a group directive conflicting with the subdir and watch
+     ;; behaviour
+     (with-temp-buffer
+       (insert "# group: foo-group-c\n# --\nstrecmp($1)")
+       (write-region nil nil (concat (first (yas-snippet-dirs))
+                                     "/c-mode/foo-group-b/strcmp")))
+     (yas-reload-all 'no-jit)
+     (let ((menu (cdr (gethash 'c-mode yas--menu-table))))
+       (should (eql 4 (length menu)))
+       (dolist (item '("printf" "foo-group-a" "foo-group-b" "foo-group-c"))
+         (should (find item menu :key #'third :test #'string=)))
+       (dolist (submenu '("foo-group-a" "foo-group-b" "foo-group-c"))
+         (should (keymapp
+                  (fourth
+                   (find submenu menu :key #'third :test #'string=))))))
+     ;; delete the .yas-make-groups file and watch behaviour
+     ;;
+     (delete-file (concat (first (yas-snippet-dirs))
+                          "/c-mode/.yas-make-groups"))
+     (yas-reload-all 'no-jit)
+     (let ((menu (cdr (gethash 'c-mode yas--menu-table))))
+       (should (eql 5 (length menu))))
+     ;; Change a group directive and reload
+     ;;
+     (let ((menu (cdr (gethash 'lisp-interaction-mode yas--menu-table))))
+       (should (find "barbar" menu :key #'third :test #'string=)))
+
+     (with-temp-buffer
+       (insert "# group: foofoo\n# --\n(ert-deftest ${1:name} () $0)")
+       (write-region nil nil (concat (first (yas-snippet-dirs))
+                                     "/lisp-interaction-mode/ert-deftest")))
+     (yas-reload-all 'no-jit)
+     (let ((menu (cdr (gethash 'lisp-interaction-mode yas--menu-table))))
+       (should (eql 1 (length menu)))
+       (should (find "foofoo" menu :key #'third :test #'string=))
+       (should (keymapp
+                (fourth
+                 (find "foofoo" menu :key #'third :test #'string=))))))))
+
+\f
+;;; The infamous and problematic tab keybinding
+;;;
+(ert-deftest test-yas-tab-binding ()
+  (with-temp-buffer
+    (yas-minor-mode -1)
+    (should (not (eq (key-binding (yas--read-keybinding "<tab>")) 'yas-expand)))
+    (yas-minor-mode 1)
+    (should (eq (key-binding (yas--read-keybinding "<tab>")) 'yas-expand))
+    (yas-expand-snippet "$1 $2 $3")
+    (should (eq (key-binding [(tab)]) 'yas-next-field-or-maybe-expand))
+    (should (eq (key-binding (kbd "TAB")) 'yas-next-field-or-maybe-expand))
+    (should (eq (key-binding [(shift tab)]) 'yas-prev-field))
+    (should (eq (key-binding [backtab]) 'yas-prev-field))))
+
+(ert-deftest test-rebindings ()
+  (unwind-protect
+      (progn
+        (define-key yas-minor-mode-map [tab] nil)
+        (define-key yas-minor-mode-map (kbd "TAB") nil)
+        (define-key yas-minor-mode-map (kbd "SPC") 'yas-expand)
+        (with-temp-buffer
+          (yas-minor-mode 1)
+          (should (not (eq (key-binding (yas--read-keybinding "TAB")) 'yas-expand)))
+          (should (eq (key-binding (yas--read-keybinding "SPC")) 'yas-expand))
+          (yas-reload-all)
+          (should (not (eq (key-binding (yas--read-keybinding "TAB")) 'yas-expand)))
+          (should (eq (key-binding (yas--read-keybinding "SPC")) 'yas-expand))))
+    (setcdr yas-minor-mode-map (cdr (yas--init-minor-keymap)))))
+
+(ert-deftest test-yas-in-org ()
+  (with-temp-buffer
+    (org-mode)
+    (yas-minor-mode 1)
+    (should (eq (key-binding [(tab)]) 'yas-expand))
+    (should (eq (key-binding (kbd "TAB")) 'yas-expand))))
+
+\f
+;;; Helpers
+;;;
+(defun yas/ert ()
+  (interactive)
+  (with-temp-buffer
+    (yas--with-temporary-redefinitions
+        ((message (&rest _args) nil))
+      (ert t (buffer-name (current-buffer)))
+      (princ (buffer-string)))))
+
+
+(defun yas-should-expand (keys-and-expansions)
+  (dolist (key-and-expansion keys-and-expansions)
+    (yas-exit-all-snippets)
+    (erase-buffer)
+    (insert (car key-and-expansion))
+    (let ((yas-fallback-behavior nil))
+      (ert-simulate-command '(yas-expand)))
+    (should (string= (yas--buffer-contents) (cdr key-and-expansion))))
+  (yas-exit-all-snippets))
+
+(defun yas-should-not-expand (keys)
+  (dolist (key keys)
+    (yas-exit-all-snippets)
+    (erase-buffer)
+    (insert key)
+    (let ((yas-fallback-behavior nil))
+      (ert-simulate-command '(yas-expand)))
+    (should (string= (yas--buffer-contents) key))))
+
+(defun yas-mock-insert (string)
+  (interactive)
+  (do ((i 0 (1+ i)))
+      ((= i (length string)))
+    (insert (aref string i))))
+
+(defun yas-make-file-or-dirs (ass)
+  (let ((file-or-dir-name (car ass))
+        (content (cdr ass)))
+    (cond ((listp content)
+           (make-directory file-or-dir-name 'parents)
+           (let ((default-directory (concat default-directory "/" file-or-dir-name)))
+             (mapc #'yas-make-file-or-dirs content)))
+          ((stringp content)
+           (with-temp-buffer
+             (insert content)
+             (write-region nil nil file-or-dir-name nil 'nomessage)))
+          (t
+           (message "[yas] oops don't know this content")))))
+
+
+(defun yas-variables ()
+  (let ((syms))
+    (mapatoms #'(lambda (sym)
+                  (if (and (string-match "^yas-[^/]" (symbol-name sym))
+                           (boundp sym))
+                      (push sym syms))))
+    syms))
+
+(defun yas-call-with-saving-variables (fn)
+  (let* ((vars (yas-variables))
+         (saved-values (mapcar #'symbol-value vars)))
+    (unwind-protect
+        (funcall fn)
+      (loop for var in vars
+            for saved in saved-values
+            do (set var saved)))))
+
+(defmacro yas-saving-variables (&rest body)
+  `(yas-call-with-saving-variables #'(lambda () ,@body)))
+
+
+(defun yas-call-with-snippet-dirs (dirs fn)
+  (let* ((default-directory (make-temp-file "yasnippet-fixture" t))
+         (yas-snippet-dirs (mapcar #'car dirs)))
+    (with-temp-message ""
+      (unwind-protect
+          (progn
+            (mapc #'yas-make-file-or-dirs dirs)
+            (funcall fn))
+        (when (>= emacs-major-version 24)
+          (delete-directory default-directory 'recursive))))))
+
+(defmacro yas-with-snippet-dirs (dirs &rest body)
+  (declare (indent defun))
+  `(yas-call-with-snippet-dirs ,dirs
+                               #'(lambda ()
+                                   ,@body)))
+
+;;; Older emacsen
+;;;
+(unless (fboundp 'special-mode)
+  ;; FIXME: Why provide this default definition here?!?
+  (defalias 'special-mode 'fundamental))
+
+;;; btw to test this in emacs22 mac osx:
+;;; curl -L -O https://github.com/mirrors/emacs/raw/master/lisp/emacs-lisp/ert.el
+;;; curl -L -O https://github.com/mirrors/emacs/raw/master/lisp/emacs-lisp/ert-x.el
+;;; /usr/bin/emacs -nw -Q -L . -l yasnippet-tests.el --batch -e ert
+
+
+(provide 'yasnippet-tests)
+;;; yasnippet-tests.el ends here
+;; Local Variables:
+;; lexical-binding: t
+;; End:
diff --git a/packages/yasnippet/yasnippet.el b/packages/yasnippet/yasnippet.el
new file mode 100644 (file)
index 0000000..aa3e312
--- /dev/null
@@ -0,0 +1,4591 @@
+;;; yasnippet.el --- Yet another snippet extension for Emacs.
+
+;; Copyright (C) 2008-2013 Free Software Foundation, Inc.
+;; Authors: pluskid <pluskid@gmail.com>,  João Távora <joaotavora@gmail.com>
+;; Maintainer: João Távora <joaotavora@gmail.com>
+;; Version: 0.8.0
+;; Package-version: 0.8.0
+;; X-URL: http://github.com/capitaomorte/yasnippet
+;; Keywords: convenience, emulation
+;; URL: http://github.com/capitaomorte/yasnippet
+;; EmacsWiki: YaSnippetMode
+
+;; This program is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;;   Basic steps to setup:
+;;
+;;    (add-to-list 'load-path
+;;                 "~/path-to-yasnippet")
+;;    (require 'yasnippet)
+;;    (yas-global-mode 1)
+;;
+;;
+;;   Interesting variables are:
+;;
+;;       `yas-snippet-dirs'
+;;
+;;           The directory where user-created snippets are to be
+;;           stored.  Can also be a list of directories.  In that case,
+;;           when used for bulk (re)loading of snippets (at startup or
+;;           via `yas-reload-all'), directories appearing earlier in
+;;           the list shadow other dir's snippets.  Also, the first
+;;           directory is taken as the default for storing the user's
+;;           new snippets.
+;;
+;;           The deprecated `yas/root-directory' aliases this variable
+;;           for backward-compatibility.
+;;
+;;       `yas-extra-modes'
+;;
+;;           A local variable that you can set in a hook to override
+;;           snippet-lookup based on major mode.  It is a symbol (or
+;;           list of symbols) that correspond to subdirectories of
+;;           `yas-snippet-dirs' and is used for deciding which
+;;           snippets to consider for the active buffer.
+;;
+;;           Deprecated `yas/mode-symbol' aliases this variable for
+;;           backward-compatibility.
+;;
+;;   Major commands are:
+;;
+;;       M-x yas-expand
+;;
+;;           Try to expand snippets before point.  In `yas-minor-mode',
+;;           this is normally bound to TAB, but you can customize it in
+;;           `yas-minor-mode-map'.
+;;
+;;       M-x yas-load-directory
+;;
+;;           Prompts you for a directory hierarchy of snippets to load.
+;;
+;;       M-x yas-insert-snippet
+;;
+;;           Prompts you for possible snippet expansion if that is
+;;           possible according to buffer-local and snippet-local
+;;           expansion conditions.  With prefix argument, ignore these
+;;           conditions.
+;;
+;;       M-x yas-visit-snippet-file
+;;
+;;           Prompts you for possible snippet expansions like
+;;           `yas-insert-snippet', but instead of expanding it, takes
+;;           you directly to the snippet definition's file, if it
+;;           exists.
+;;
+;;       M-x yas-new-snippet
+;;
+;;           Lets you create a new snippet file in the correct
+;;           subdirectory of `yas-snippet-dirs', according to the
+;;           active major mode.
+;;
+;;       M-x yas-load-snippet-buffer
+;;
+;;           When editing a snippet, this loads the snippet.  This is
+;;           bound to "C-c C-c" while in the `snippet-mode' editing
+;;           mode.
+;;
+;;       M-x yas-tryout-snippet
+;;
+;;           When editing a snippet, this opens a new empty buffer,
+;;           sets it to the appropriate major mode and inserts the
+;;           snippet there, so you can see what it looks like.  This is
+;;           bound to "C-c C-t" while in `snippet-mode'.
+;;
+;;       M-x yas-describe-tables
+;;
+;;           Lists known snippets in a separate buffer.  User is
+;;           prompted as to whether only the currently active tables
+;;           are to be displayed, or all the tables for all major
+;;           modes.
+;;
+;;   If you have `dropdown-list' installed, you can optionally use it
+;;   as the preferred "prompting method", putting in your .emacs file,
+;;   for example:
+;;
+;;       (require 'dropdown-list)
+;;       (setq yas-prompt-functions '(yas-dropdown-prompt
+;;                                    yas-ido-prompt
+;;                                    yas-completing-prompt))
+;;
+;;   Also check out the customization group
+;;
+;;        M-x customize-group RET yasnippet RET
+;;
+;;   If you use the customization group to set variables
+;;   `yas-snippet-dirs' or `yas-global-mode', make sure the path to
+;;   "yasnippet.el" is present in the `load-path' *before* the
+;;   `custom-set-variables' is executed in your .emacs file.
+;;
+;;   For more information and detailed usage, refer to the project page:
+;;      http://github.com/capitaomorte/yasnippet
+
+;;; Code:
+
+(require 'cl)
+(require 'easymenu)
+(require 'help-mode)
+
+(defvar yas--editing-template)
+(defvar yas--guessed-modes)
+(defvar yas--indent-original-column)
+(defvar yas--scheduled-jit-loads)
+(defvar yas-keymap)
+(defvar yas-selected-text)
+(defvar yas-verbosity)
+(defvar yas--current-template)
+
+\f
+;;; User customizable variables
+
+(defgroup yasnippet nil
+  "Yet Another Snippet extension"
+  :group 'editing)
+
+(defvar yas--load-file-name load-file-name
+  "Store the filename that yasnippet.el was originally loaded from.")
+
+(defcustom yas-snippet-dirs (remove nil
+                                    (list "~/.emacs.d/snippets"
+                                          (when yas--load-file-name
+                                            (concat (file-name-directory yas--load-file-name) "snippets"))))
+  "Directory or list of snippet dirs for each major mode.
+
+The directory where user-created snippets are to be stored.  Can
+also be a list of directories.  In that case, when used for
+bulk (re)loading of snippets (at startup or via
+`yas-reload-all'), directories appearing earlier in the list
+shadow other dir's snippets.  Also, the first directory is taken
+as the default for storing the user's new snippets."
+  :type '(choice (string :tag "Single directory (string)")
+                 (repeat :args (string) :tag "List of directories (strings)"))
+  :group 'yasnippet
+  :require 'yasnippet
+  :set #'(lambda (symbol new)
+           (let ((old (and (boundp symbol)
+                           (symbol-value symbol))))
+             (set-default symbol new)
+             (unless (or (not (fboundp 'yas-reload-all))
+                         (equal old new))
+               (yas-reload-all)))))
+
+(defun yas-snippet-dirs ()
+  "Return `yas-snippet-dirs' (which see) as a list."
+  (if (listp yas-snippet-dirs) yas-snippet-dirs (list yas-snippet-dirs)))
+
+(defvaralias 'yas/root-directory 'yas-snippet-dirs)
+
+(defcustom yas-new-snippet-default "\
+# -*- mode: snippet -*-
+# name: $1
+# key: ${2:${1:$(yas--key-from-desc yas-text)}}${3:
+# binding: ${4:direct-keybinding}}${5:
+# expand-env: ((${6:some-var} ${7:some-value}))}${8:
+# type: command}
+# --
+$0"
+  "Default snippet to use when creating a new snippet.
+If nil, don't use any snippet."
+  :type 'string
+  :group 'yasnippet)
+
+(defcustom yas-prompt-functions '(yas-x-prompt
+                                  yas-dropdown-prompt
+                                  yas-completing-prompt
+                                  yas-ido-prompt
+                                  yas-no-prompt)
+  "Functions to prompt for keys, templates, etc interactively.
+
+These functions are called with the following arguments:
+
+- PROMPT: A string to prompt the user
+
+- CHOICES: a list of strings or objects.
+
+- optional DISPLAY-FN : A function that, when applied to each of
+the objects in CHOICES will return a string.
+
+The return value of any function you put here should be one of
+the objects in CHOICES, properly formatted with DISPLAY-FN (if
+that is passed).
+
+- To signal that your particular style of prompting is
+unavailable at the moment, you can also have the function return
+nil.
+
+- To signal that the user quit the prompting process, you can
+signal `quit' with
+
+  (signal 'quit \"user quit!\")."
+  :type '(repeat function)
+  :group 'yasnippet)
+
+(defcustom yas-indent-line 'auto
+  "Controls indenting applied to a recent snippet expansion.
+
+The following values are possible:
+
+- `fixed' Indent the snippet to the current column;
+
+- `auto' Indent each line of the snippet with `indent-according-to-mode'
+
+Every other value means don't apply any snippet-side indentation
+after expansion (the manual per-line \"$>\" indentation still
+applies)."
+  :type '(choice (const :tag "Nothing"  nothing)
+                 (const :tag "Fixed"    fixed)
+                 (const :tag "Auto"     auto))
+  :group 'yasnippet)
+
+(defcustom yas-also-auto-indent-first-line nil
+  "Non-nil means also auto indent first line according to mode.
+
+Naturally this is only valid when `yas-indent-line' is `auto'"
+  :type 'boolean
+  :group 'yasnippet)
+
+(defcustom yas-snippet-revival t
+  "Non-nil means re-activate snippet fields after undo/redo."
+  :type 'boolean
+  :group 'yasnippet)
+
+(defcustom yas-triggers-in-field nil
+  "If non-nil, allow stacked expansions (snippets inside snippets).
+
+Otherwise `yas-next-field-or-maybe-expand' just moves on to the
+next field"
+  :type 'boolean
+  :group 'yasnippet)
+
+(defcustom yas-fallback-behavior 'call-other-command
+  "How to act when `yas-expand' does *not* expand a snippet.
+
+- `call-other-command' means try to temporarily disable YASnippet
+    and call the next command bound to whatever key was used to
+    invoke `yas-expand'.
+
+- nil or the symbol `return-nil' mean do nothing. (and
+  `yas-expand' returns nil)
+
+- A Lisp form (apply COMMAND . ARGS) means interactively call
+  COMMAND, if ARGS is non-nil, call COMMAND non-interactively
+  with ARGS as arguments."
+  :type '(choice (const :tag "Call previous command"  call-other-command)
+                 (const :tag "Do nothing"             return-nil))
+  :group 'yasnippet)
+
+(defcustom yas-choose-keys-first nil
+  "If non-nil, prompt for snippet key first, then for template.
+
+Otherwise prompts for all possible snippet names.
+
+This affects `yas-insert-snippet' and `yas-visit-snippet-file'."
+  :type 'boolean
+  :group 'yasnippet)
+
+(defcustom yas-choose-tables-first nil
+  "If non-nil, and multiple eligible snippet tables, prompts user for tables first.
+
+Otherwise, user chooses between the merging together of all
+eligible tables.
+
+This affects `yas-insert-snippet', `yas-visit-snippet-file'"
+  :type 'boolean
+  :group 'yasnippet)
+
+(defcustom yas-use-menu 'abbreviate
+  "Display a YASnippet menu in the menu bar.
+
+When non-nil, submenus for each snippet table will be listed
+under the menu \"Yasnippet\".
+
+- If set to `abbreviate', only the current major-mode
+menu and the modes set in `yas-extra-modes' are listed.
+
+- If set to `full', every submenu is listed
+
+- It set to nil, don't display a menu at all (this requires a
+  `yas-reload-all' call if the menu is already visible).
+
+Any other non-nil value, every submenu is listed."
+  :type '(choice (const :tag "Full"  full)
+                 (const :tag "Abbreviate" abbreviate)
+                 (const :tag "No menu" nil))
+  :group 'yasnippet)
+
+(defcustom yas-trigger-symbol (or (and (eq window-system 'mac)
+                                       (ignore-errors
+                                         (char-to-string ?\x21E5))) ;; little ->| sign
+                                  " =>")
+  "The text that will be used in menu to represent the trigger."
+  :type 'string
+  :group 'yasnippet)
+
+(defcustom yas-wrap-around-region nil
+  "If non-nil, snippet expansion wraps around selected region.
+
+The wrapping occurs just before the snippet's exit marker.  This
+can be overridden on a per-snippet basis."
+  :type 'boolean
+  :group 'yasnippet)
+
+(defcustom yas-good-grace t
+  "If non-nil, don't raise errors in inline elisp evaluation.
+
+An error string \"[yas] error\" is returned instead."
+  :type 'boolean
+  :group 'yasnippet)
+
+(defcustom yas-visit-from-menu nil
+  "If non-nil visit snippets's files from menu, instead of expanding them.
+
+This can only work when snippets are loaded from files."
+  :type 'boolean
+  :group 'yasnippet)
+
+(defcustom yas-expand-only-for-last-commands nil
+  "List of `last-command' values to restrict tab-triggering to, or nil.
+
+Leave this set at nil (the default) to be able to trigger an
+expansion simply by placing the cursor after a valid tab trigger,
+using whichever commands.
+
+Optionally, set this to something like '(self-insert-command) if
+you to wish restrict expansion to only happen when the last
+letter of the snippet tab trigger was typed immediately before
+the trigger key itself."
+  :type '(repeat function)
+  :group 'yasnippet)
+
+;; Only two faces, and one of them shouldn't even be used...
+;;
+(defface yas-field-highlight-face
+  '((t (:inherit 'region)))
+  "The face used to highlight the currently active field of a snippet"
+  :group 'yasnippet)
+
+(defface yas--field-debug-face
+  '()
+  "The face used for debugging some overlays normally hidden"
+  :group 'yasnippet)
+
+\f
+;;; User-visible variables
+
+(defvar yas-keymap  (let ((map (make-sparse-keymap)))
+                      (define-key map [(tab)]       'yas-next-field-or-maybe-expand)
+                      (define-key map (kbd "TAB")   'yas-next-field-or-maybe-expand)
+                      (define-key map [(shift tab)] 'yas-prev-field)
+                      (define-key map [backtab]     'yas-prev-field)
+                      (define-key map (kbd "C-g")   'yas-abort-snippet)
+                      (define-key map (kbd "C-d")   'yas-skip-and-clear-or-delete-char)
+                      map)
+  "The active keymap while a snippet expansion is in progress.")
+
+(defvar yas-key-syntaxes (list "w" "w_" "w_." "w_.()" "^ ")
+  "List of character syntaxes used to find a trigger key before point.
+The list is tried in the order while scanning characters
+backwards from point.  For example, if the list is '(\"w\" \"w_\")
+first look for trigger keys which are composed exclusively of
+\"word\"-syntax characters, and then, if that fails, look for
+keys which are either of \"word\" or \"symbol\"
+syntax.  Triggering after
+
+foo-bar
+
+will, according to the \"w\" element first try \"bar\".  If that
+isn't a trigger key, \"foo-bar\" is tried, respecting a second
+\"w_\" element.")
+
+(defvar yas-after-exit-snippet-hook
+  '()
+  "Hooks to run after a snippet exited.
+
+The hooks will be run in an environment where some variables bound to
+proper values:
+
+`yas-snippet-beg' : The beginning of the region of the snippet.
+
+`yas-snippet-end' : Similar to beg.
+
+Attention: These hooks are not run when exiting nested/stacked snippet expansion!")
+
+(defvar yas-before-expand-snippet-hook
+  '()
+  "Hooks to run just before expanding a snippet.")
+
+(defvar yas-buffer-local-condition
+  '(if (and (or (fourth (syntax-ppss))
+                (fifth (syntax-ppss)))
+           this-command
+            (eq this-command 'yas-expand-from-trigger-key))
+       '(require-snippet-condition . force-in-comment)
+     t)
+  "Snippet expanding condition.
+
+This variable is a Lisp form which is evaluated every time a
+snippet expansion is attempted:
+
+    * If it evaluates to nil, no snippets can be expanded.
+
+    * If it evaluates to the a cons (require-snippet-condition
+      . REQUIREMENT)
+
+       * Snippets bearing no \"# condition:\" directive are not
+         considered
+
+       * Snippets bearing conditions that evaluate to nil (or
+         produce an error) won't be considered.
+
+       * If the snippet has a condition that evaluates to non-nil
+         RESULT:
+
+          * If REQUIREMENT is t, the snippet is considered
+
+          * If REQUIREMENT is `eq' RESULT, the snippet is
+            considered
+
+          * Otherwise, the snippet is not considered.
+
+    * If it evaluates to the symbol 'always, all snippets are
+      considered for expansion, regardless of any conditions.
+
+    * If it evaluates to t or some other non-nil value
+
+       * Snippet bearing no conditions, or conditions that
+         evaluate to non-nil, are considered for expansion.
+
+       * Otherwise, the snippet is not considered.
+
+Here's an example preventing snippets from being expanded from
+inside comments, in `python-mode' only, with the exception of
+snippets returning the symbol 'force-in-comment in their
+conditions.
+
+ (add-hook 'python-mode-hook
+           '(lambda ()
+              (setq yas-buffer-local-condition
+                    '(if (python-in-string/comment)
+                         '(require-snippet-condition . force-in-comment)
+                       t))))
+
+The default value is similar, it filters out potential snippet
+expansions inside comments and string literals, unless the
+snippet itself contains a condition that returns the symbol
+`force-in-comment'.")
+
+\f
+;;; Internal variables
+
+(defvar yas--version "0.8.0beta")
+
+(defvar yas--menu-table (make-hash-table)
+  "A hash table of MAJOR-MODE symbols to menu keymaps.")
+
+(defvar yas--known-modes
+  '(ruby-mode rst-mode markdown-mode)
+  "A list of mode which is well known but not part of Emacs.")
+
+(defvar yas--escaped-characters
+  '(?\\ ?` ?\" ?' ?$ ?} ?{ ?\( ?\))
+  "List of characters which *might* need to be escaped.")
+
+(defconst yas--field-regexp
+  "${\\([0-9]+:\\)?\\([^}]*\\)}"
+  "A regexp to *almost* recognize a field.")
+
+(defconst yas--multi-dollar-lisp-expression-regexp
+  "$+[ \t\n]*\\(([^)]*)\\)"
+  "A regexp to *almost* recognize a \"$(...)\" expression.")
+
+(defconst yas--backquote-lisp-expression-regexp
+  "`\\([^`]*\\)`"
+  "A regexp to recognize a \"`lisp-expression`\" expression." )
+
+(defconst yas--transform-mirror-regexp
+  "${\\(?:\\([0-9]+\\):\\)?$\\([ \t\n]*([^}]*\\)"
+  "A regexp to *almost* recognize a mirror with a transform.")
+
+(defconst yas--simple-mirror-regexp
+  "$\\([0-9]+\\)"
+  "A regexp to recognize a simple mirror.")
+
+(defvar yas--snippet-id-seed 0
+  "Contains the next id for a snippet.")
+
+(defun yas--snippet-next-id ()
+  (let ((id yas--snippet-id-seed))
+    (incf yas--snippet-id-seed)
+    id))
+
+\f
+;;; Minor mode stuff
+
+;; XXX: `last-buffer-undo-list' is somehow needed in Carbon Emacs for MacOSX
+(defvar last-buffer-undo-list nil)
+
+(defvar yas--minor-mode-menu nil
+  "Holds the YASnippet menu.")
+
+(defun yas--init-minor-keymap ()
+  "Set up the `yas-minor-mode' keymap."
+  (let ((map (make-sparse-keymap)))
+    (when yas-use-menu
+      (easy-menu-define yas--minor-mode-menu
+      map
+      "Menu used when `yas-minor-mode' is active."
+      '("YASnippet"
+        "----"
+        ["Expand trigger" yas-expand
+         :help "Possibly expand tab trigger before point"]
+        ["Insert at point..." yas-insert-snippet
+         :help "Prompt for an expandable snippet and expand it at point"]
+        ["New snippet..." yas-new-snippet
+         :help "Create a new snippet in an appropriate directory"]
+        ["Visit snippet file..." yas-visit-snippet-file
+         :help "Prompt for an expandable snippet and find its file"]
+        "----"
+        ("Snippet menu behaviour"
+         ["Visit snippets" (setq yas-visit-from-menu t)
+          :help "Visit snippets from the menu"
+          :active t :style radio   :selected yas-visit-from-menu]
+         ["Expand snippets" (setq yas-visit-from-menu nil)
+          :help "Expand snippets from the menu"
+          :active t :style radio :selected (not yas-visit-from-menu)]
+         "----"
+         ["Show all known modes" (setq yas-use-menu 'full)
+          :help "Show one snippet submenu for each loaded table"
+          :active t :style radio   :selected (eq yas-use-menu 'full)]
+         ["Abbreviate according to current mode" (setq yas-use-menu 'abbreviate)
+          :help "Show only snippet submenus for the current active modes"
+          :active t :style radio   :selected (eq yas-use-menu 'abbreviate)])
+        ("Indenting"
+         ["Auto" (setq yas-indent-line 'auto)
+          :help "Indent each line of the snippet with `indent-according-to-mode'"
+          :active t :style radio   :selected (eq yas-indent-line 'auto)]
+         ["Fixed" (setq yas-indent-line 'fixed)
+          :help "Indent the snippet to the current column"
+          :active t :style radio   :selected (eq yas-indent-line 'fixed)]
+         ["None" (setq yas-indent-line 'none)
+          :help "Don't apply any particular snippet indentation after expansion"
+          :active t :style radio   :selected (not (member yas-indent-line '(fixed auto)))]
+         "----"
+         ["Also auto indent first line" (setq yas-also-auto-indent-first-line
+                                              (not yas-also-auto-indent-first-line))
+          :help "When auto-indenting also, auto indent the first line menu"
+          :active (eq yas-indent-line 'auto)
+          :style toggle :selected yas-also-auto-indent-first-line]
+         )
+        ("Prompting method"
+         ["System X-widget" (setq yas-prompt-functions
+                                  (cons 'yas-x-prompt
+                                        (remove 'yas-x-prompt
+                                                yas-prompt-functions)))
+          :help "Use your windowing system's (gtk, mac, windows, etc...) default menu"
+          :active t :style radio   :selected (eq (car yas-prompt-functions)
+                                                 'yas-x-prompt)]
+         ["Dropdown-list" (setq yas-prompt-functions
+                                (cons 'yas-dropdown-prompt
+                                      (remove 'yas-dropdown-prompt
+                                              yas-prompt-functions)))
+          :help "Use a special dropdown list"
+          :active t :style radio   :selected (eq (car yas-prompt-functions)
+                                                 'yas-dropdown-prompt)]
+         ["Ido" (setq yas-prompt-functions
+                      (cons 'yas-ido-prompt
+                            (remove 'yas-ido-prompt
+                                    yas-prompt-functions)))
+          :help "Use an ido-style minibuffer prompt"
+          :active t :style radio   :selected (eq (car yas-prompt-functions)
+                                                 'yas-ido-prompt)]
+         ["Completing read" (setq yas-prompt-functions
+                                  (cons 'yas-completing-prompt
+                                        (remove 'yas-completing-prompt
+                                                yas-prompt-functions)))
+          :help "Use a normal minibuffer prompt"
+          :active t :style radio   :selected (eq (car yas-prompt-functions)
+                                                 'yas-completing-prompt)]
+         )
+        ("Misc"
+         ["Wrap region in exit marker"
+          (setq yas-wrap-around-region
+                (not yas-wrap-around-region))
+          :help "If non-nil automatically wrap the selected text in the $0 snippet exit"
+          :style toggle :selected yas-wrap-around-region]
+         ["Allow stacked expansions "
+          (setq yas-triggers-in-field
+                (not yas-triggers-in-field))
+          :help "If non-nil allow snippets to be triggered inside other snippet fields"
+          :style toggle :selected yas-triggers-in-field]
+         ["Revive snippets on undo "
+          (setq yas-snippet-revival
+                (not yas-snippet-revival))
+          :help "If non-nil allow snippets to become active again after undo"
+          :style toggle :selected yas-snippet-revival]
+         ["Good grace "
+          (setq yas-good-grace
+                (not yas-good-grace))
+          :help "If non-nil don't raise errors in bad embedded elisp in snippets"
+          :style toggle :selected yas-good-grace]
+         )
+        "----"
+        ["Load snippets..."  yas-load-directory
+         :help "Load snippets from a specific directory"]
+        ["Reload everything" yas-reload-all
+         :help "Cleanup stuff, reload snippets, rebuild menus"]
+        ["About"            yas-about
+         :help "Display some information about YASnippet"])))
+
+    ;; Now for the stuff that has direct keybindings
+    ;;
+    (define-key map [(tab)]     'yas-expand)
+    (define-key map (kbd "TAB") 'yas-expand)
+    (define-key map "\C-c&\C-s" 'yas-insert-snippet)
+    (define-key map "\C-c&\C-n" 'yas-new-snippet)
+    (define-key map "\C-c&\C-v" 'yas-visit-snippet-file)
+    map))
+
+(defvar yas-minor-mode-map (yas--init-minor-keymap)
+  "The keymap used when `yas-minor-mode' is active.")
+
+(defvar yas--tables (make-hash-table)
+  "A hash table of mode symbols to `yas--table' objects.")
+
+(defvar yas--parents (make-hash-table)
+  "A hash table of mode symbols do lists of direct parent mode symbols.
+
+This list is populated when reading the \".yas-parents\" files
+found when traversing snippet directories with
+`yas-load-directory'.
+
+There might be additional parenting information stored in the
+`derived-mode-parent' property of some mode symbols, but that is
+not recorded here.")
+
+(defvar yas--ancestors (make-hash-table)
+  "A hash table of mode symbols do lists of all parent mode symbols.
+
+A cache managed by `yas--all-parents'")
+
+(defvar yas--direct-keymaps (list)
+  "Keymap alist supporting direct snippet keybindings.
+
+This variable is placed in `emulation-mode-map-alists'.
+
+Its elements looks like (TABLE-NAME . KEYMAP).  They're
+instantiated on `yas-reload-all' but KEYMAP is added to only when
+loading snippets.  `yas--direct-TABLE-NAME' is then a variable set
+buffer-locally when entering `yas-minor-mode'.  KEYMAP binds all
+defined direct keybindings to the command
+`yas-expand-from-keymap' which then which snippet to expand.")
+
+(defun yas-direct-keymaps-reload ()
+  "Force reload the direct keybinding for active snippet tables."
+  (interactive)
+  (setq yas--direct-keymaps nil)
+  (maphash #'(lambda (name table)
+               (push (cons (intern (format "yas--direct-%s" name))
+                           (yas--table-direct-keymap table))
+                     yas--direct-keymaps))
+           yas--tables))
+
+(defun yas--modes-to-activate ()
+  "Compute list of mode symbols that are active for `yas-expand'
+and friends."
+  (let ((modes-to-activate (list major-mode))
+        (mode major-mode))
+    (while (setq mode (get mode 'derived-mode-parent))
+      (push mode modes-to-activate))
+    (dolist (mode (yas-extra-modes))
+      (push mode modes-to-activate))
+    (remove-duplicates
+     (append modes-to-activate
+             (mapcan #'(lambda (mode)
+                         (yas--all-parents mode))
+                     modes-to-activate)))))
+
+(defvar yas-minor-mode-hook nil
+  "Hook run when `yas-minor-mode' is turned on.")
+
+;;;###autoload
+(define-minor-mode yas-minor-mode
+  "Toggle YASnippet mode.
+
+When YASnippet mode is enabled, `yas-expand', normally bound to
+the TAB key, expands snippets of code depending on the major
+mode.
+
+With no argument, this command toggles the mode.
+positive prefix argument turns on the mode.
+Negative prefix argument turns off the mode.
+
+Key bindings:
+\\{yas-minor-mode-map}"
+  nil
+  ;; The indicator for the mode line.
+  " yas"
+  :group 'yasnippet
+  (cond (yas-minor-mode
+         ;; Install the direct keymaps in `emulation-mode-map-alists'
+         ;; (we use `add-hook' even though it's not technically a hook,
+         ;; but it works). Then define variables named after modes to
+         ;; index `yas--direct-keymaps'.
+         ;;
+         ;; Also install the post-command-hook.
+         ;;
+         (add-hook 'emulation-mode-map-alists 'yas--direct-keymaps)
+         (add-hook 'post-command-hook 'yas--post-command-handler nil t)
+         ;; Set the `yas--direct-%s' vars for direct keymap expansion
+         ;;
+         (dolist (mode (yas--modes-to-activate))
+           (let ((name (intern (format "yas--direct-%s" mode))))
+             (set-default name nil)
+             (set (make-local-variable name) t)))
+         ;; Perform JIT loads
+         ;;
+         (yas--load-pending-jits))
+        (t
+         ;; Uninstall the direct keymaps and the post-command hook
+         ;;
+         (remove-hook 'post-command-hook 'yas--post-command-handler t)
+         (remove-hook 'emulation-mode-map-alists 'yas--direct-keymaps))))
+
+(defvar yas-dont-activate '(minibufferp)
+  "If non-nil don't let `yas-global-mode' affect some buffers.
+
+If a function of zero arguments, then its result is used.
+
+If a list of functions, then all functions must return nil to
+activate yas for this buffer.
+
+In Emacsen <= 23, this variable is buffer-local.  Because
+`yas-minor-mode-on' is called by `yas-global-mode' after
+executing the buffer's major mode hook, setting this variable
+there is an effective way to define exceptions to the \"global\"
+activation behaviour.
+
+In Emacsen > 23, only the global value is used.  To define
+per-mode exceptions to the \"global\" activation behaviour, call
+`yas-minor-mode' with a negative argument directily in the major
+mode's hook.")
+(unless (> emacs-major-version 23)
+  (with-no-warnings
+    (make-variable-buffer-local 'yas-dont-activate)))
+
+
+(defun yas-minor-mode-on ()
+  "Turn on YASnippet minor mode.
+
+Honour `yas-dont-activate', which see."
+  (interactive)
+  ;; Check `yas-dont-activate'
+  (unless (cond ((functionp yas-dont-activate)
+                 (funcall yas-dont-activate))
+                ((consp yas-dont-activate)
+                 (some #'funcall yas-dont-activate))
+                (yas-dont-activate))
+    (yas-minor-mode 1)))
+
+;;;###autoload
+(define-globalized-minor-mode yas-global-mode yas-minor-mode yas-minor-mode-on
+  :group 'yasnippet
+  :require 'yasnippet)
+
+(defun yas--global-mode-reload-with-jit-maybe ()
+  "Run `yas-reload-all' when `yas-global-mode' is on."
+  (when yas-global-mode (yas-reload-all)))
+
+(add-hook 'yas-global-mode-hook 'yas--global-mode-reload-with-jit-maybe)
+
+\f
+;;; Major mode stuff
+
+(defvar yas--font-lock-keywords
+  (append '(("^#.*$" . font-lock-comment-face))
+          lisp-font-lock-keywords
+          lisp-font-lock-keywords-1
+          lisp-font-lock-keywords-2
+          '(("$\\([0-9]+\\)"
+             (0 font-lock-keyword-face)
+             (1 font-lock-string-face t))
+            ("${\\([0-9]+\\):?"
+             (0 font-lock-keyword-face)
+             (1 font-lock-warning-face t))
+            ("${" font-lock-keyword-face)
+            ("$[0-9]+?" font-lock-preprocessor-face)
+            ("\\(\\$(\\)" 1 font-lock-preprocessor-face)
+            ("}"
+             (0 font-lock-keyword-face)))))
+
+(defvar snippet-mode-map
+  (let ((map (make-sparse-keymap)))
+    (easy-menu-define nil
+      map
+      "Menu used when snippet-mode is active."
+      (cons "Snippet"
+            (mapcar #'(lambda (ent)
+                        (when (third ent)
+                          (define-key map (third ent) (second ent)))
+                        (vector (first ent) (second ent) t))
+                    '(("Load this snippet" yas-load-snippet-buffer "\C-c\C-c")
+                      ("Try out this snippet" yas-tryout-snippet "\C-c\C-t")))))
+    map)
+  "The keymap used when `snippet-mode' is active.")
+
+
+(define-derived-mode snippet-mode text-mode "Snippet"
+  "A mode for editing yasnippets"
+  (setq font-lock-defaults '(yas--font-lock-keywords))
+  (set (make-local-variable 'require-final-newline) nil)
+  (set (make-local-variable 'comment-start) "#")
+  (set (make-local-variable 'comment-start-skip) "#+[\t ]*"))
+
+
+\f
+;;; Internal structs for template management
+
+(defstruct (yas--template (:constructor yas--make-blank-template))
+  "A template for a snippet."
+  key
+  content
+  name
+  condition
+  expand-env
+  file
+  keybinding
+  uuid
+  menu-binding-pair
+  group      ;; as dictated by the #group: directive or .yas-make-groups
+  perm-group ;; as dictated by `yas-define-menu'
+  table
+  )
+
+(defun yas--populate-template (template &rest args)
+  "Helper function to populate TEMPLATE with properties."
+  (while args
+    (aset template
+          (position (intern (substring (symbol-name (car args)) 1))
+                    (mapcar #'car (get 'yas--template 'cl-struct-slots)))
+          (second args))
+    (setq args (cddr args)))
+  template)
+
+(defstruct (yas--table (:constructor yas--make-snippet-table (name)))
+  "A table to store snippets for a particular mode.
+
+Has the following fields:
+
+`yas--table-name'
+
+  A symbol name normally corresponding to a major mode, but can
+  also be a pseudo major-mode to be referenced in
+  `yas-extra-modes', for example.
+
+`yas--table-hash'
+
+  A hash table (KEY . NAMEHASH), known as the \"keyhash\". KEY is
+  a string or a vector, where the former is the snippet's trigger
+  and the latter means it's a direct keybinding. NAMEHASH is yet
+  another hash of (NAME . TEMPLATE) where NAME is the snippet's
+  name and TEMPLATE is a `yas--template' object.
+
+`yas--table-direct-keymap'
+
+  A keymap for the snippets in this table that have direct
+  keybindings. This is kept in sync with the keyhash, i.e., all
+  the elements of the keyhash that are vectors appear here as
+  bindings to `yas-expand-from-keymap'.
+
+`yas--table-uuidhash'
+
+  A hash table mapping snippets uuid's to the same `yas--template'
+  objects. A snippet uuid defaults to the snippet's name."
+  name
+  (hash (make-hash-table :test 'equal))
+  (uuidhash (make-hash-table :test 'equal))
+  (parents nil)
+  (direct-keymap (make-sparse-keymap)))
+
+(defun yas--get-template-by-uuid (mode uuid)
+  "Find the snippet template in MODE by its UUID."
+  (let* ((table (gethash mode yas--tables mode)))
+    (when table
+      (gethash uuid (yas--table-uuidhash table)))))
+
+;; Apropos storing/updating in TABLE, this works in two steps:
+;;
+;; 1. `yas--remove-template-by-uuid' removes any
+;;    keyhash-namehash-template mappings from TABLE, grabbing the
+;;    snippet by its uuid. Also removes mappings from TABLE's
+;;    `yas--table-direct-keymap' (FIXME: and should probably take care
+;;    of potentially stale menu bindings right?.)
+;;
+;; 2. `yas--add-template' adds this all over again.
+;;
+;;    Create a new or add to an existing keyhash-namehash mapping.
+;;
+;;  For reference on understanding this, consider three snippet
+;;  definitions:
+;;
+;;  A:   # name: The Foo
+;;       # key: foo
+;;       # binding: C-c M-l
+;;
+;;  B:   # name: Mrs Foo
+;;       # key: foo
+;;
+;;  C:   # name: The Bar
+;;       # binding: C-c M-l
+;;
+;;  D:   # name: Baz
+;;       # key: baz
+;;
+;;  keyhash       namehashes(3)      yas--template structs(4)
+;;  -----------------------------------------------------
+;;                                            __________
+;;                                           /          \
+;;  "foo"      --->  "The Foo" --->  [yas--template A]   |
+;;                   "Mrs Foo" --->  [yas--template B]   |
+;;                                                      |
+;;  [C-c M-l]  --->  "The Foo" -------------------------/
+;;                   "The Bar" --->  [yas--template C]
+;;
+;;  "baz"      --->  "Baz"     --->  [yas--template D]
+;;
+;; Additionally, since uuid defaults to the name, we have a
+;; `yas--table-uuidhash' for TABLE
+;;
+;; uuidhash       yas--template structs
+;; -------------------------------
+;; "The Foo" ---> [yas--template A]
+;; "Mrs Foo" ---> [yas--template B]
+;; "The Bar" ---> [yas--template C]
+;; "Baz"     ---> [yas--template D]
+;;
+;; FIXME: the more I look at this data-structure the more I think I'm
+;; stupid. There has to be an easier way (but beware lots of code
+;; depends on this).
+;;
+(defun yas--remove-template-by-uuid (table uuid)
+  "Remove from TABLE a template identified by UUID."
+  (let ((template (gethash uuid (yas--table-uuidhash table))))
+    (when template
+      (let* ((name                (yas--template-name template))
+             (empty-keys          nil))
+        ;; Remove the name from each of the targeted namehashes
+        ;;
+        (maphash #'(lambda (k v)
+                     (let ((template (gethash name v)))
+                       (when (and template
+                                  (eq uuid (yas--template-uuid template)))
+                         (remhash name v)
+                         (when (zerop (hash-table-count v))
+                           (push k empty-keys)))))
+                 (yas--table-hash table))
+        ;; Remove the namehash themselves if they've become empty
+        ;;
+        (dolist (key empty-keys)
+          (when (vectorp key)
+            (define-key (yas--table-direct-keymap table) key nil))
+          (remhash key (yas--table-hash table)))
+
+        ;; Finally, remove the uuid from the uuidhash
+        ;;
+        (remhash uuid (yas--table-uuidhash table))))))
+
+(defun yas--add-template (table template)
+  "Store in TABLE the snippet template TEMPLATE.
+
+KEY can be a string (trigger key) of a vector (direct
+keybinding)."
+  (let ((name (yas--template-name template))
+        (key (yas--template-key template))
+        (keybinding (yas--template-keybinding template))
+        (_menu-binding-pair (yas--template-menu-binding-pair-get-create template)))
+    (dolist (k (remove nil (list key keybinding)))
+      (puthash name
+               template
+               (or (gethash k
+                            (yas--table-hash table))
+                   (puthash k
+                            (make-hash-table :test 'equal)
+                            (yas--table-hash table))))
+      (when (vectorp k)
+        (define-key (yas--table-direct-keymap table) k 'yas-expand-from-keymap)))
+
+    ;; Update TABLE's `yas--table-uuidhash'
+    (puthash (yas--template-uuid template)
+             template
+             (yas--table-uuidhash table))))
+
+(defun yas--update-template (table template)
+  "Add or update TEMPLATE in TABLE.
+
+Also takes care of adding and updating to the associated menu."
+  ;; Remove from table by uuid
+  ;;
+  (yas--remove-template-by-uuid table (yas--template-uuid template))
+  ;; Add to table again
+  ;;
+  (yas--add-template table template)
+  ;; Take care of the menu
+  ;;
+  (when yas-use-menu
+    (yas--update-template-menu table template)))
+
+(defun yas--update-template-menu (table template)
+  "Update every menu-related for TEMPLATE."
+  (let ((menu-binding-pair (yas--template-menu-binding-pair-get-create template))
+        (key (yas--template-key template))
+        (keybinding (yas--template-keybinding template)))
+    ;; The snippet might have changed name or keys, so update
+    ;; user-visible strings
+    ;;
+    (unless (eq (cdr menu-binding-pair) :none)
+      ;; the menu item name
+      ;;
+      (setf (cadar menu-binding-pair) (yas--template-name template))
+      ;; the :keys information (also visible to the user)
+      (setf (getf (cdr (car menu-binding-pair)) :keys)
+            (or (and keybinding (key-description keybinding))
+                (and key (concat key yas-trigger-symbol))))))
+  (unless (yas--template-menu-managed-by-yas-define-menu template)
+    (let ((menu-keymap
+           (yas--menu-keymap-get-create (yas--table-mode table)
+                                        (mapcar #'yas--table-mode
+                                                (yas--table-parents table))))
+          (group (yas--template-group template)))
+      ;; Remove from menu keymap
+      ;;
+      (assert menu-keymap)
+      (yas--delete-from-keymap menu-keymap (yas--template-uuid template))
+
+      ;; Add necessary subgroups as necessary.
+      ;;
+      (dolist (subgroup group)
+        (let ((subgroup-keymap (lookup-key menu-keymap (vector (make-symbol subgroup)))))
+          (unless (and subgroup-keymap
+                       (keymapp subgroup-keymap))
+            (setq subgroup-keymap (make-sparse-keymap))
+            (define-key menu-keymap (vector (make-symbol subgroup))
+              `(menu-item ,subgroup ,subgroup-keymap)))
+          (setq menu-keymap subgroup-keymap)))
+
+      ;; Add this entry to the keymap
+      ;;
+      (define-key menu-keymap
+        (vector (make-symbol (yas--template-uuid template)))
+        (car (yas--template-menu-binding-pair template))))))
+
+(defun yas--namehash-templates-alist (namehash)
+  "Return NAMEHASH as an alist."
+  (let (alist)
+    (maphash #'(lambda (k v)
+                 (push (cons k v) alist))
+             namehash)
+    alist))
+
+(defun yas--fetch (table key)
+  "Fetch templates in TABLE by KEY.
+
+Return a list of cons (NAME . TEMPLATE) where NAME is a
+string and TEMPLATE is a `yas--template' structure."
+  (let* ((keyhash (yas--table-hash table))
+         (namehash (and keyhash (gethash key keyhash))))
+    (when namehash
+      (yas--filter-templates-by-condition (yas--namehash-templates-alist namehash)))))
+
+\f
+;;; Filtering/condition logic
+
+(defun yas--eval-condition (condition)
+  (condition-case err
+      (save-excursion
+        (save-restriction
+          (save-match-data
+            (eval condition))))
+    (error (progn
+             (yas--message 1 "Error in condition evaluation: %s" (error-message-string err))
+             nil))))
+
+
+(defun yas--filter-templates-by-condition (templates)
+  "Filter the templates using the applicable condition.
+
+TEMPLATES is a list of cons (NAME . TEMPLATE) where NAME is a
+string and TEMPLATE is a `yas--template' structure.
+
+This function implements the rules described in
+`yas-buffer-local-condition'.  See that variables documentation."
+  (let ((requirement (yas--require-template-specific-condition-p)))
+    (if (eq requirement 'always)
+        templates
+      (remove-if-not #'(lambda (pair)
+                         (yas--template-can-expand-p
+                          (yas--template-condition (cdr pair)) requirement))
+                     templates))))
+
+(defun yas--require-template-specific-condition-p ()
+  "Decide if this buffer requests/requires snippet-specific
+conditions to filter out potential expansions."
+  (if (eq 'always yas-buffer-local-condition)
+      'always
+    (let ((local-condition (or (and (consp yas-buffer-local-condition)
+                                    (yas--eval-condition yas-buffer-local-condition))
+                               yas-buffer-local-condition)))
+      (when local-condition
+        (if (eq local-condition t)
+            t
+          (and (consp local-condition)
+               (eq 'require-snippet-condition (car local-condition))
+               (symbolp (cdr local-condition))
+               (cdr local-condition)))))))
+
+(defun yas--template-can-expand-p (condition requirement)
+  "Evaluate CONDITION and REQUIREMENT and return a boolean."
+  (let* ((result (or (null condition)
+                     (yas--eval-condition condition))))
+    (cond ((eq requirement t)
+           result)
+          (t
+           (eq requirement result)))))
+
+(defun yas--all-parents (mode)
+  "Return a list of all parent modes of MODE."
+  (or (gethash mode yas--ancestors)
+      (let ((seen '()))
+        (labels ((yas--all-parents-1
+                  (m)
+                  (cond ((memq m seen)
+                         (yas--message 1
+                                       "Cyclic parenthood: mode %s has already seen as a parent of mode %s"
+                                       m mode)
+                         nil)
+                        (t
+                         (let* ((parents (gethash m yas--parents)))
+                           (setq seen (append seen parents))
+                           (append parents (mapcan #'yas--all-parents-1 parents)))))))
+          (puthash mode (yas--all-parents-1 mode)
+                   yas--ancestors)))))
+
+(defun yas--table-templates (table)
+  (when table
+    (let ((acc (list)))
+      (maphash #'(lambda (_key namehash)
+                   (maphash #'(lambda (name template)
+                                (push (cons name template) acc))
+                            namehash))
+               (yas--table-hash table))
+      (yas--filter-templates-by-condition acc))))
+
+(defun yas--current-key ()
+  "Get the key under current position.
+A key is used to find the template of a snippet in the current snippet-table."
+  (let ((start (point))
+        (end (point))
+        (syntaxes yas-key-syntaxes)
+        syntax
+        done
+        templates)
+    (while (and (not done) syntaxes)
+      (setq syntax (car syntaxes))
+      (setq syntaxes (cdr syntaxes))
+      (save-excursion
+        (skip-syntax-backward syntax)
+        (setq start (point)))
+      (setq templates
+            (mapcan #'(lambda (table)
+                        (yas--fetch table (buffer-substring-no-properties start end)))
+                    (yas--get-snippet-tables)))
+      (if templates
+          (setq done t)
+        (setq start end)))
+    (list templates
+          start
+          end)))
+
+
+(defun yas--table-all-keys (table)
+  "Get trigger keys of all active snippets in TABLE."
+  (let ((acc))
+    (maphash #'(lambda (key namehash)
+                 (when (yas--filter-templates-by-condition (yas--namehash-templates-alist namehash))
+                   (push key acc)))
+             (yas--table-hash table))
+    acc))
+
+(defun yas--table-mode (table)
+  (intern (yas--table-name table)))
+
+\f
+;;; Internal functions and macros:
+
+(defun yas--real-mode? (mode)
+  "Try to find out if MODE is a real mode.
+
+The MODE bound to a function (like `c-mode') is considered real
+mode.  Other well known mode like `ruby-mode' which is not part of
+Emacs might not bound to a function until it is loaded.  So
+yasnippet keeps a list of modes like this to help the judgment."
+  (or (fboundp mode)
+      (find mode yas--known-modes)))
+
+(defun yas--eval-lisp (form)
+  "Evaluate FORM and convert the result to string."
+  (let ((retval (catch 'yas--exception
+                  (condition-case err
+                      (save-excursion
+                        (save-restriction
+                          (save-match-data
+                            (widen)
+                            (let ((result (eval form)))
+                              (when result
+                                (format "%s" result))))))
+                    (error (if yas-good-grace
+                               (yas--format "elisp error! %s" (error-message-string err))
+                             (error (yas--format "elisp error: %s"
+                                            (error-message-string err)))))))))
+    (when (and (consp retval)
+               (eq 'yas--exception (car retval)))
+      (error (cdr retval)))
+    retval))
+
+(defun yas--eval-lisp-no-saves (form)
+  (condition-case err
+      (eval form)
+    (error (if yas-good-grace
+               (yas--format "elisp error! %s" (error-message-string err))
+             (error (yas--format "elisp error: %s"
+                            (error-message-string err)))))))
+
+(defun yas--read-lisp (string &optional nil-on-error)
+  "Read STRING as a elisp expression and return it.
+
+In case STRING in an invalid expression and NIL-ON-ERROR is nil,
+return an expression that when evaluated will issue an error."
+  (condition-case err
+      (read string)
+    (error (and (not nil-on-error)
+                `(error (error-message-string ,err))))))
+
+(defun yas--read-keybinding (keybinding)
+  "Read KEYBINDING as a snippet keybinding, return a vector."
+  (when (and keybinding
+             (not (string-match "keybinding" keybinding)))
+    (condition-case err
+        (let ((res (or (and (string-match "^\\[.*\\]$" keybinding)
+                            (read keybinding))
+                       (read-kbd-macro keybinding 'need-vector))))
+          res)
+      (error
+       (yas--message 3 "warning: keybinding \"%s\" invalid since %s."
+                keybinding (error-message-string err))
+       nil))))
+
+(defvar yas-extra-modes nil
+  "If non-nil, also lookup snippets for this/these modes.
+
+Can be a symbol or a list of symbols.
+
+This variable probably makes more sense as buffer-local, so
+ensure your use `make-local-variable' when you set it.")
+(defun yas-extra-modes ()
+  (if (listp yas-extra-modes) yas-extra-modes (list yas-extra-modes)))
+(defvaralias 'yas/mode-symbol 'yas-extra-modes)
+
+(defun yas--table-get-create (mode)
+  "Get or create the snippet table corresponding to MODE."
+  (let ((table (gethash mode
+                        yas--tables)))
+    (unless table
+      (setq table (yas--make-snippet-table (symbol-name mode)))
+      (puthash mode table yas--tables)
+      (push (cons (intern (format "yas--direct-%s" mode))
+                  (yas--table-direct-keymap table))
+            yas--direct-keymaps))
+    table))
+
+(defun yas--get-snippet-tables ()
+  "Get snippet tables for current buffer.
+
+Return a list of `yas--table' objects.  The list of modes to
+consider is returned by `yas--modes-to-activate'"
+  (remove nil
+          (mapcar #'(lambda (name)
+                      (gethash name yas--tables))
+                  (yas--modes-to-activate))))
+
+(defun yas--menu-keymap-get-create (mode &optional parents)
+  "Get or create the menu keymap for MODE and its PARENTS.
+
+This may very well create a plethora of menu keymaps and arrange
+them all in `yas--menu-table'"
+  (let* ((menu-keymap (or (gethash mode yas--menu-table)
+                          (puthash mode (make-sparse-keymap) yas--menu-table))))
+    (mapc #'yas--menu-keymap-get-create parents)
+    (define-key yas--minor-mode-menu (vector mode)
+        `(menu-item ,(symbol-name mode) ,menu-keymap
+                    :visible (yas--show-menu-p ',mode)))
+    menu-keymap))
+
+
+(defmacro yas--called-interactively-p (&optional kind)
+  "A backward-compatible version of `called-interactively-p'.
+
+Optional KIND is as documented at `called-interactively-p'
+in GNU Emacs 24.1 or higher."
+  (if (string< emacs-version "24.1")
+      '(called-interactively-p)
+    `(called-interactively-p ,kind)))
+
+\f
+;;; Template-related and snippet loading functions
+
+(defun yas--parse-template (&optional file)
+  "Parse the template in the current buffer.
+
+Optional FILE is the absolute file name of the file being
+parsed.
+
+Optional GROUP is the group where the template is to go,
+otherwise we attempt to calculate it from FILE.
+
+Return a snippet-definition, i.e. a list
+
+ (KEY TEMPLATE NAME CONDITION GROUP VARS FILE KEYBINDING UUID)
+
+If the buffer contains a line of \"# --\" then the contents above
+this line are ignored. Directives can set most of these with the syntax:
+
+# directive-name : directive-value
+
+Here's a list of currently recognized directives:
+
+ * type
+ * name
+ * contributor
+ * condition
+ * group
+ * key
+ * expand-env
+ * binding
+ * uuid"
+  (goto-char (point-min))
+  (let* ((type 'snippet)
+         (name (and file
+                    (file-name-nondirectory file)))
+         (key nil)
+         template
+         bound
+         condition
+         (group (and file
+                     (yas--calculate-group file)))
+         expand-env
+         binding
+         uuid)
+    (if (re-search-forward "^# --\n" nil t)
+        (progn (setq template
+                     (buffer-substring-no-properties (point)
+                                                     (point-max)))
+               (setq bound (point))
+               (goto-char (point-min))
+               (while (re-search-forward "^# *\\([^ ]+?\\) *: *\\(.*\\)$" bound t)
+                 (when (string= "uuid" (match-string-no-properties 1))
+                   (setq uuid (match-string-no-properties 2)))
+                 (when (string= "type" (match-string-no-properties 1))
+                   (setq type (if (string= "command" (match-string-no-properties 2))
+                                  'command
+                                'snippet)))
+                 (when (string= "key" (match-string-no-properties 1))
+                   (setq key (match-string-no-properties 2)))
+                 (when (string= "name" (match-string-no-properties 1))
+                   (setq name (match-string-no-properties 2)))
+                 (when (string= "condition" (match-string-no-properties 1))
+                   (setq condition (yas--read-lisp (match-string-no-properties 2))))
+                 (when (string= "group" (match-string-no-properties 1))
+                   (setq group (match-string-no-properties 2)))
+                 (when (string= "expand-env" (match-string-no-properties 1))
+                   (setq expand-env (yas--read-lisp (match-string-no-properties 2)
+                                                   'nil-on-error)))
+                 (when (string= "binding" (match-string-no-properties 1))
+                   (setq binding (match-string-no-properties 2)))))
+      (setq template
+            (buffer-substring-no-properties (point-min) (point-max))))
+    (unless (or key binding)
+      (setq key (and file (file-name-nondirectory file))))
+    (when (eq type 'command)
+      (setq template (yas--read-lisp (concat "(progn" template ")"))))
+    (when group
+      (setq group (split-string group "\\.")))
+    (list key template name condition group expand-env file binding uuid)))
+
+(defun yas--calculate-group (file)
+  "Calculate the group for snippet file path FILE."
+  (let* ((dominating-dir (locate-dominating-file file
+                                                 ".yas-make-groups"))
+         (extra-path (and dominating-dir
+                          (replace-regexp-in-string (concat "^"
+                                                            (expand-file-name dominating-dir))
+                                                    ""
+                                                    (expand-file-name file))))
+         (extra-dir (and extra-path
+                         (file-name-directory extra-path)))
+         (group (and extra-dir
+                     (replace-regexp-in-string "/"
+                                               "."
+                                               (directory-file-name extra-dir)))))
+    group))
+
+(defun yas--subdirs (directory &optional filep)
+  "Return subdirs or files of DIRECTORY according to FILEP."
+  (remove-if (lambda (file)
+               (or (string-match "^\\."
+                                 (file-name-nondirectory file))
+                   (string-match "^#.*#$"
+                                 (file-name-nondirectory file))
+                   (string-match "~$"
+                                 (file-name-nondirectory file))
+                   (if filep
+                       (file-directory-p file)
+                     (not (file-directory-p file)))))
+             (directory-files directory t)))
+
+(defun yas--make-menu-binding (template)
+  (let ((mode (yas--table-mode (yas--template-table template))))
+    `(lambda () (interactive) (yas--expand-or-visit-from-menu ',mode ,(yas--template-uuid template)))))
+
+(defun yas--expand-or-visit-from-menu (mode uuid)
+  (let* ((table (yas--table-get-create mode))
+         (yas--current-template (and table
+                                    (gethash uuid (yas--table-uuidhash table)))))
+    (when yas--current-template
+      (if yas-visit-from-menu
+          (yas--visit-snippet-file-1 yas--current-template)
+        (let ((where (if (region-active-p)
+                         (cons (region-beginning) (region-end))
+                       (cons (point) (point)))))
+          (yas-expand-snippet (yas--template-content yas--current-template)
+                              (car where)
+                              (cdr where)
+                              (yas--template-expand-env yas--current-template)))))))
+
+(defun yas--key-from-desc (text)
+  "Return a yasnippet key from a description string TEXT."
+  (replace-regexp-in-string "\\(\\w+\\).*" "\\1" text))
+
+\f
+;;; Popping up for keys and templates
+
+(defvar yas--x-pretty-prompt-templates nil
+  "If non-nil, attempt to prompt for templates like TextMate.")
+
+
+(defun yas--prompt-for-template (templates &optional prompt)
+  "Interactively choose a template from the list TEMPLATES.
+
+TEMPLATES is a list of `yas--template'.
+
+Optional PROMPT sets the prompt to use."
+  (when templates
+    (setq templates
+          (sort templates #'(lambda (t1 t2)
+                              (< (length (yas--template-name t1))
+                                 (length (yas--template-name t2))))))
+    (if yas--x-pretty-prompt-templates
+        (yas--x-pretty-prompt-templates "Choose a snippet" templates)
+      (some #'(lambda (fn)
+                (funcall fn (or prompt "Choose a snippet: ")
+                         templates
+                         #'yas--template-name))
+            yas-prompt-functions))))
+
+(defun yas--prompt-for-keys (keys &optional prompt)
+  "Interactively choose a template key from the list KEYS.
+
+Optional PROMPT sets the prompt to use."
+  (when keys
+    (some #'(lambda (fn)
+              (funcall fn (or prompt "Choose a snippet key: ") keys))
+          yas-prompt-functions)))
+
+(defun yas--prompt-for-table (tables &optional prompt)
+  "Interactively choose a table from the list TABLES.
+
+Optional PROMPT sets the prompt to use."
+  (when tables
+    (some #'(lambda (fn)
+              (funcall fn (or prompt "Choose a snippet table: ")
+                       tables
+                       #'yas--table-name))
+          yas-prompt-functions)))
+
+(defun yas-x-prompt (prompt choices &optional display-fn)
+  "Display choices in a x-window prompt."
+  ;; FIXME: HACK: if we notice that one of the objects in choices is
+  ;; actually a `yas--template', defer to `yas--x-prompt-pretty-templates'
+  ;;
+  ;; This would be better implemented by passing CHOICES as a
+  ;; structured tree rather than a list. Modifications would go as far
+  ;; up as `yas--all-templates' I think.
+  ;;
+  (when (and window-system choices)
+    (let ((chosen
+           (let (menu d) ;; d for display
+             (dolist (c choices)
+               (setq d (or (and display-fn (funcall display-fn c))
+                           c))
+               (cond ((stringp d)
+                      (push (cons (concat "   " d) c) menu))
+                     ((listp d)
+                      (push (car d) menu))))
+             (setq menu (list prompt (push "title" menu)))
+             (x-popup-menu (if (fboundp 'posn-at-point)
+                               (let ((x-y (posn-x-y (posn-at-point (point)))))
+                                 (list (list (+ (car x-y) 10)
+                                             (+ (cdr x-y) 20))
+                                       (selected-window)))
+                             t)
+                           menu))))
+      (or chosen
+          (keyboard-quit)))))
+
+(defun yas--x-pretty-prompt-templates (prompt templates)
+  "Display TEMPLATES, grouping neatly by table name."
+  (let ((organized (make-hash-table :test #'equal))
+        menu
+        more-than-one-table
+        prefix)
+    (dolist (tl templates)
+      (puthash (yas--template-table tl)
+               (cons tl
+                     (gethash (yas--template-table tl) organized))
+               organized))
+    (setq more-than-one-table (> (hash-table-count organized) 1))
+    (setq prefix (if more-than-one-table
+                     "   " ""))
+    (if more-than-one-table
+        (maphash #'(lambda (table templates)
+                     (push (yas--table-name table) menu)
+                     (dolist (tl templates)
+                       (push (cons (concat prefix (yas--template-name tl)) tl) menu))) organized)
+      (setq menu (mapcar #'(lambda (tl) (cons (concat prefix (yas--template-name tl)) tl)) templates)))
+
+    (setq menu (nreverse menu))
+    (or (x-popup-menu (if (fboundp 'posn-at-point)
+                          (let ((x-y (posn-x-y (posn-at-point (point)))))
+                            (list (list (+ (car x-y) 10)
+                                        (+ (cdr x-y) 20))
+                                  (selected-window)))
+                        t)
+                      (list prompt (push "title" menu)))
+        (keyboard-quit))))
+
+(defun yas-ido-prompt (prompt choices &optional display-fn)
+  (when (and (fboundp 'ido-completing-read)
+            (or (>= emacs-major-version 24)
+                ido-mode))
+    (yas-completing-prompt prompt choices display-fn #'ido-completing-read)))
+
+(defun yas-dropdown-prompt (_prompt choices &optional display-fn)
+  (when (fboundp 'dropdown-list)
+    (let (formatted-choices
+          filtered-choices
+          d
+          n)
+      (dolist (choice choices)
+        (setq d (or (and display-fn (funcall display-fn choice))
+                      choice))
+        (when (stringp d)
+          (push d formatted-choices)
+          (push choice filtered-choices)))
+
+      (setq n (and formatted-choices (dropdown-list formatted-choices)))
+      (if n
+          (nth n filtered-choices)
+        (keyboard-quit)))))
+
+(defun yas-completing-prompt (prompt choices &optional display-fn completion-fn)
+  (let (formatted-choices
+        filtered-choices
+        chosen
+        d
+        (completion-fn (or completion-fn
+                           #'completing-read)))
+    (dolist (choice choices)
+      (setq d (or (and display-fn (funcall display-fn choice))
+                    choice))
+      (when (stringp d)
+        (push d formatted-choices)
+        (push choice filtered-choices)))
+    (setq chosen (and formatted-choices
+                      (funcall completion-fn prompt
+                               formatted-choices
+                               nil
+                               'require-match
+                               nil
+                               nil)))
+    (let ((position (or (and chosen
+                             (position chosen formatted-choices :test #'string=))
+                        0)))
+      (nth position filtered-choices))))
+
+(defun yas-no-prompt (_prompt choices &optional _display-fn)
+  (first choices))
+
+\f
+;;; Defining snippets
+;; This consists of creating and registering `yas--template' objects in the
+;; correct tables.
+;;
+
+(defvar yas--creating-compiled-snippets nil)
+
+(defun yas--define-snippets-1 (snippet snippet-table)
+  "Helper for `yas-define-snippets'."
+  ;; X) Calculate some more defaults on the values returned by
+  ;; `yas--parse-template'.
+  ;;
+  (let* ((file (seventh snippet))
+         (key (car snippet))
+         (name (or (third snippet)
+                   (and file
+                        (file-name-directory file))))
+         (condition (fourth snippet))
+         (group (fifth snippet))
+         (keybinding (yas--read-keybinding (eighth snippet)))
+         (uuid (or (ninth snippet)
+                  name))
+         (template (or (gethash uuid (yas--table-uuidhash snippet-table))
+                       (yas--make-blank-template))))
+    ;; X) populate the template object
+    ;;
+    (yas--populate-template template
+                           :table       snippet-table
+                           :key         key
+                           :content     (second snippet)
+                           :name        (or name key)
+                           :group       group
+                           :condition   condition
+                           :expand-env  (sixth snippet)
+                           :file        (seventh snippet)
+                           :keybinding  keybinding
+                           :uuid         uuid)
+    ;; X) Update this template in the appropriate table. This step
+    ;;    also will take care of adding the key indicators in the
+    ;;    templates menu entry, if any
+    ;;
+    (yas--update-template snippet-table template)
+    ;; X) Return the template
+    ;;
+    ;;
+    template))
+
+(defun yas-define-snippets (mode snippets)
+  "Define SNIPPETS for MODE.
+
+SNIPPETS is a list of snippet definitions, each taking the
+following form
+
+ (KEY TEMPLATE NAME CONDITION GROUP EXPAND-ENV FILE KEYBINDING UUID)
+
+Within these, only KEY and TEMPLATE are actually mandatory.
+
+TEMPLATE might be a Lisp form or a string, depending on whether
+this is a snippet or a snippet-command.
+
+CONDITION, EXPAND-ENV and KEYBINDING are Lisp forms, they have
+been `yas--read-lisp'-ed and will eventually be
+`yas--eval-lisp'-ed.
+
+The remaining elements are strings.
+
+FILE is probably of very little use if you're programatically
+defining snippets.
+
+UUID is the snippets \"unique-id\". Loading a second snippet file
+with the same uuid replaced the previous snippet.
+
+You can use `yas--parse-template' to return such lists based on
+the current buffers contents."
+  (if yas--creating-compiled-snippets
+      (progn
+        (insert ";;; Snippet definitions:\n;;;\n")
+        (let ((literal-snippets (list))
+              (print-length nil))
+          (dolist (snippet snippets)
+            (let ((key                    (nth 0 snippet))
+                  (template-content       (nth 1 snippet))
+                  (name                   (nth 2 snippet))
+                  (condition              (nth 3 snippet))
+                  (group                  (nth 4 snippet))
+                  (expand-env             (nth 5 snippet))
+                  (file                   nil) ;; omit on purpose
+                  (binding                (nth 7 snippet))
+                  (uuid                   (nth 8 snippet)))
+              (push `(,key
+                      ,template-content
+                      ,name
+                      ,condition
+                      ,group
+                      ,expand-env
+                      ,file
+                      ,binding
+                      ,uuid)
+                    literal-snippets)))
+          (insert (pp-to-string
+                   `(yas-define-snippets ',mode ',literal-snippets)))
+          (insert "\n\n")))
+    ;; Normal case.
+    (let ((snippet-table (yas--table-get-create mode))
+          (template nil))
+      (dolist (snippet snippets)
+        (setq template (yas--define-snippets-1 snippet
+                                               snippet-table)))
+      template)))
+
+\f
+;;; Loading snippets from files
+
+(defun yas--load-yas-setup-file (file)
+  (if (not yas--creating-compiled-snippets)
+      ;; Normal case.
+      (load file 'noerror)
+    (let ((elfile (concat file ".el")))
+      (when (file-exists-p elfile)
+        (insert ";;; .yas-setup.el support file if any:\n;;;\n")
+        (insert-file-contents elfile)
+        (goto-char (point-max))))))
+
+(defun yas--define-parents (mode parents)
+  "Add PARENTS to the list of MODE's parents."
+  (puthash mode (remove-duplicates
+                 (append parents
+                         (gethash mode yas--parents)))
+           yas--parents))
+
+(defun yas-load-directory (top-level-dir &optional use-jit interactive)
+  "Load snippets in directory hierarchy TOP-LEVEL-DIR.
+
+Below TOP-LEVEL-DIR each directory should be a mode name.
+
+Optional USE-JIT use jit-loading of snippets."
+  (interactive "DSelect the root directory: ni\np")
+  (unless yas-snippet-dirs
+    (setq yas-snippet-dirs top-level-dir))
+  (dolist (dir (yas--subdirs top-level-dir))
+    (let* ((major-mode-and-parents (yas--compute-major-mode-and-parents
+                                    (concat dir "/dummy")))
+           (mode-sym (car major-mode-and-parents))
+           (parents (cdr major-mode-and-parents)))
+      ;; Attention: The parents and the menus are already defined
+      ;; here, even if the snippets are later jit-loaded.
+      ;;
+      ;; * We need to know the parents at this point since entering a
+      ;;   given mode should jit load for its parents
+      ;;   immediately. This could be reviewed, the parents could be
+      ;;   discovered just-in-time-as well
+      ;;
+      ;; * We need to create the menus here to support the `full'
+      ;;   option to `yas-use-menu' (all known snippet menus are shown to the user)
+      ;;
+      (yas--define-parents mode-sym parents)
+      (yas--menu-keymap-get-create mode-sym)
+      (let ((fun `(lambda () ;; FIXME: Simulating lexical-binding.
+                    (yas--load-directory-1 ',dir ',mode-sym))))
+        (if (and use-jit
+                 (not (some #'(lambda (buffer)
+                                (with-current-buffer buffer
+                                  ;; FIXME: Shouldn't this use derived-mode-p?
+                                  (when (eq major-mode mode-sym)
+                                    (yas--message 3 "Discovered there was already %s in %s" buffer mode-sym)
+                                    t)))
+                            (buffer-list))))
+            (yas--schedule-jit mode-sym fun)
+            (funcall fun)))))
+  (when interactive
+    (yas--message 3 "Loaded snippets from %s." top-level-dir)))
+
+(defun yas--load-directory-1 (directory mode-sym)
+  "Recursively load snippet templates from DIRECTORY."
+  (if yas--creating-compiled-snippets
+      (let ((output-file (expand-file-name ".yas-compiled-snippets.el"
+                                           directory)))
+        (with-temp-file output-file
+          (insert (format ";;; Compiled snippets and support files for `%s'\n"
+                          mode-sym))
+          (yas--load-directory-2 directory mode-sym)
+          (insert (format ";;; Do not edit! File generated at %s\n"
+                          (current-time-string)))))
+    ;; Normal case.
+    (unless (file-exists-p (concat directory "/" ".yas-skip"))
+      (if (and (progn (yas--message 2 "Loading compiled snippets from %s" directory) t)
+               (load (expand-file-name ".yas-compiled-snippets" directory) 'noerror (<= yas-verbosity 3)))
+          (yas--message 2 "Loading snippet files from %s" directory)
+        (yas--load-directory-2 directory mode-sym)))))
+
+(defun yas--load-directory-2 (directory mode-sym)
+  ;; Load .yas-setup.el files wherever we find them
+  ;;
+  (yas--load-yas-setup-file (expand-file-name ".yas-setup" directory))
+  (let* ((default-directory directory)
+         (snippet-defs nil))
+    ;; load the snippet files
+    ;;
+    (with-temp-buffer
+      (dolist (file (yas--subdirs directory 'no-subdirs-just-files))
+        (when (file-readable-p file)
+          (insert-file-contents file nil nil nil t)
+          (push (yas--parse-template file)
+                snippet-defs))))
+    (when snippet-defs
+      (yas-define-snippets mode-sym
+                           snippet-defs))
+    ;; now recurse to a lower level
+    ;;
+    (dolist (subdir (yas--subdirs directory))
+      (yas--load-directory-2 subdir
+                            mode-sym))))
+
+(defun yas--load-snippet-dirs (&optional nojit)
+  "Reload the directories listed in `yas-snippet-dirs' or
+prompt the user to select one."
+  (let (errors)
+    (if yas-snippet-dirs
+        (dolist (directory (reverse (yas-snippet-dirs)))
+          (cond ((file-directory-p directory)
+                 (yas-load-directory directory (not nojit))
+                 (if nojit
+                     (yas--message 3 "Loaded %s" directory)
+                   (yas--message 3 "Prepared just-in-time loading for %s" directory)))
+                (t
+                 (push (yas--message 0 "Check your `yas-snippet-dirs': %s is not a directory" directory) errors))))
+      (call-interactively 'yas-load-directory))
+    errors))
+
+(defun yas-reload-all (&optional interactive)
+  "Reload all snippets and rebuild the YASnippet menu.
+
+When called interactively force immediate reload of all known
+snippets under `yas-snippet-dirs', otherwise use just-in-time
+loading."
+  (interactive "p")
+  (catch 'abort
+    (let ((errors)
+          (snippet-editing-buffers
+           (remove-if-not #'(lambda (buffer)
+                              (with-current-buffer buffer yas--editing-template))
+                          (buffer-list))))
+      ;; Warn if there are buffers visiting snippets, since reloading will break
+      ;; any on-line editing of those buffers.
+      ;;
+      (when snippet-editing-buffers
+          (if interactive
+              (if (y-or-n-p "Some buffers editing live snippets, close them and proceed with reload? ")
+                  (mapc #'kill-buffer snippet-editing-buffers)
+                (yas--message 1 "Aborted reload...")
+                (throw 'abort nil))
+            ;; in a non-interactive use, at least set
+            ;; `yas--editing-template' to nil, make it guess it next time around
+            (mapc #'(lambda (buffer)
+                      (with-current-buffer buffer
+                        (kill-local-variable 'yas--editing-template)))
+                  (buffer-list))))
+
+      ;; Empty all snippet tables and parenting info
+      ;;
+      (setq yas--tables (make-hash-table))
+      (setq yas--parents (make-hash-table))
+      (setq yas--ancestors (make-hash-table))
+
+      ;; Before killing `yas--menu-table' use its keys to cleanup the
+      ;; mode menu parts of `yas--minor-mode-menu' (thus also cleaning
+      ;; up `yas-minor-mode-map', which points to it)
+      ;;
+      (maphash #'(lambda (menu-symbol _keymap)
+                   (define-key yas--minor-mode-menu (vector menu-symbol) nil))
+               yas--menu-table)
+      ;; Now empty `yas--menu-table' as well
+      (setq yas--menu-table (make-hash-table))
+
+      ;; Cancel all pending 'yas--scheduled-jit-loads'
+      ;;
+      (setq yas--scheduled-jit-loads (make-hash-table))
+
+      ;; Reload the directories listed in `yas-snippet-dirs' or prompt
+      ;; the user to select one.
+      ;;
+      (setq errors (yas--load-snippet-dirs interactive))
+      ;; Reload the direct keybindings
+      ;;
+      (yas-direct-keymaps-reload)
+
+      (yas--message 3 "Reloaded everything%s...%s."
+                   (if interactive "" " (snippets will load just-in-time)")
+                   (if errors " (some errors, check *Messages*)" "")))))
+
+(defun yas--load-pending-jits ()
+  (dolist (mode (yas--modes-to-activate))
+    (let ((funs (reverse (gethash mode yas--scheduled-jit-loads))))
+      ;; must reverse to maintain coherence with `yas-snippet-dirs'
+      (dolist (fun funs)
+        (yas--message  3 "Loading for `%s', just-in-time: %s!" mode fun)
+        (funcall fun))
+      (remhash mode yas--scheduled-jit-loads))))
+
+;; (when (<= emacs-major-version 22)
+;;   (add-hook 'after-change-major-mode-hook 'yas--load-pending-jits))
+
+(defun yas--quote-string (string)
+  "Escape and quote STRING.
+foo\"bar\\! -> \"foo\\\"bar\\\\!\""
+  (concat "\""
+          (replace-regexp-in-string "[\\\"]"
+                                    "\\\\\\&"
+                                    string
+                                    t)
+          "\""))
+\f
+;;; Snippet compilation function
+
+(defun yas--initialize ()
+  "For backward compatibility, enable `yas-minor-mode' globally."
+  (yas-global-mode 1))
+
+(defun yas-compile-directory (top-level-dir)
+  "Create .yas-compiled-snippets.el files under subdirs of TOP-LEVEL-DIR.
+
+This works by stubbing a few functions, then calling
+`yas-load-directory'."
+  (interactive "DTop level snippet directory?")
+  (let ((yas--creating-compiled-snippets t))
+    (yas-load-directory top-level-dir nil)))
+
+(defun yas-recompile-all ()
+  "Compile every dir in `yas-snippet-dirs'."
+  (interactive)
+  (mapc #'yas-compile-directory (yas-snippet-dirs)))
+
+
+;;; JIT loading
+;;;
+
+(defvar yas--scheduled-jit-loads (make-hash-table)
+  "Alist of mode-symbols to forms to be evaled when `yas-minor-mode' kicks in.")
+
+(defun yas--schedule-jit (mode fun)
+  (push fun (gethash mode yas--scheduled-jit-loads)))
+
+
+\f
+;;; Some user level functions
+
+(defun yas-about ()
+  (interactive)
+  (message (concat "yasnippet (version "
+                   yas--version
+                   ") -- pluskid <pluskid@gmail.com>/joaotavora <joaotavora@gmail.com>")))
+
+\f
+;;; Apropos snippet menu:
+;;
+;; The snippet menu keymaps are store by mode in hash table called
+;; `yas--menu-table'. They are linked to the main menu in
+;; `yas--menu-keymap-get-create' and are initially created empty,
+;; reflecting the table hierarchy.
+;;
+;; They can be populated in two mutually exclusive ways: (1) by
+;; reading `yas--template-group', which in turn is populated by the "#
+;; group:" directives of the snippets or the ".yas-make-groups" file
+;; or (2) by using a separate `yas-define-menu' call, which declares a
+;; menu structure based on snippets uuids.
+;;
+;; Both situations are handled in `yas--update-template-menu', which
+;; uses the predicate `yas--template-menu-managed-by-yas-define-menu'
+;; that can tell between the two situations.
+;;
+;; Note:
+;;
+;; * if `yas-define-menu' is used it must run before
+;;   `yas-define-snippets' and the UUIDS must match, otherwise we get
+;;   duplicate entries. The `yas--template' objects are created in
+;;   `yas-define-menu', holding nothing but the menu entry,
+;;   represented by a pair of ((menu-item NAME :keys KEYS) TYPE) and
+;;   stored in `yas--template-menu-binding-pair'. The (menu-item ...)
+;;   part is then stored in the menu keymap itself which make the item
+;;   appear to the user. These limitations could probably be revised.
+;;
+;; * The `yas--template-perm-group' slot is only used in
+;;   `yas-describe-tables'.
+;;
+(defun yas--template-menu-binding-pair-get-create (template &optional type)
+  "Get TEMPLATE's menu binding or assign it a new one.
+
+TYPE may be `:stay', signaling this menu binding should be
+static in the menu."
+  (or (yas--template-menu-binding-pair template)
+      (let (;; (key (yas--template-key template))
+            ;; (keybinding (yas--template-keybinding template))
+            )
+        (setf (yas--template-menu-binding-pair template)
+              (cons `(menu-item ,(or (yas--template-name template)
+                                     (yas--template-uuid template))
+                                ,(yas--make-menu-binding template)
+                                :keys ,nil)
+                    type)))))
+(defun yas--template-menu-managed-by-yas-define-menu (template)
+  "Non-nil if TEMPLATE's menu entry was included in a `yas-define-menu' call."
+  (cdr (yas--template-menu-binding-pair template)))
+
+
+(defun yas--show-menu-p (mode)
+  (cond ((eq yas-use-menu 'abbreviate)
+         (find mode
+               (mapcar #'(lambda (table)
+                           (yas--table-mode table))
+                       (yas--get-snippet-tables))))
+        ((eq yas-use-menu 'full)
+         t)
+        ((eq yas-use-menu t)
+         t)))
+
+(defun yas--delete-from-keymap (keymap uuid)
+  "Recursively delete items with UUID from KEYMAP and its submenus."
+
+  ;; XXX: This used to skip any submenus named \"parent mode\"
+  ;;
+  ;; First of all, recursively enter submenus, i.e. the tree is
+  ;; searched depth first so that stale submenus can be found in the
+  ;; higher passes.
+  ;;
+  (mapc #'(lambda (item)
+            (when (and (listp (cdr item))
+                       (keymapp (third (cdr item))))
+              (yas--delete-from-keymap (third (cdr item)) uuid)))
+        (rest keymap))
+  ;; Set the uuid entry to nil
+  ;;
+  (define-key keymap (vector (make-symbol uuid)) nil)
+  ;; Destructively modify keymap
+  ;;
+  (setcdr keymap (delete-if #'(lambda (item)
+                                (or (null (cdr item))
+                                    (and (keymapp (third (cdr item)))
+                                         (null (cdr (third (cdr item)))))))
+                            (rest keymap))))
+
+(defun yas-define-menu (mode menu &optional omit-items)
+  "Define a snippet menu for MODE according to MENU, omitting OMIT-ITEMS.
+
+MENU is a list, its elements can be:
+
+- (yas-item UUID) : Creates an entry the snippet identified with
+  UUID.  The menu entry for a snippet thus identified is
+  permanent, i.e. it will never move (be reordered) in the menu.
+
+- (yas-separator) : Creates a separator
+
+- (yas-submenu NAME SUBMENU) : Creates a submenu with NAME,
+  SUBMENU has the same form as MENU.  NAME is also added to the
+  list of groups of the snippets defined thereafter.
+
+OMIT-ITEMS is a list of snippet uuid's that will always be
+omitted from MODE's menu, even if they're manually loaded.
+
+This function does nothing if `yas-use-menu' is nil."
+  (when yas-use-menu
+    (let* ((table (yas--table-get-create mode))
+           (hash (yas--table-uuidhash table)))
+      (yas--define-menu-1 table
+                          (yas--menu-keymap-get-create mode)
+                          menu
+                          hash)
+      (dolist (uuid omit-items)
+        (let ((template (or (gethash uuid hash)
+                            (yas--populate-template (puthash uuid
+                                                             (yas--make-blank-template)
+                                                             hash)
+                                                    :table table
+                                                    :uuid uuid))))
+          (setf (yas--template-menu-binding-pair template) (cons nil :none)))))))
+
+(defun yas--define-menu-1 (table menu-keymap menu uuidhash &optional group-list)
+  "Helper for `yas-define-menu'."
+  (dolist (e (reverse menu))
+    (cond ((eq (first e) 'yas-item)
+           (let ((template (or (gethash (second e) uuidhash)
+                               (yas--populate-template (puthash (second e)
+                                                               (yas--make-blank-template)
+                                                               uuidhash)
+                                                      :table table
+                                                      :perm-group group-list
+                                                      :uuid (second e)))))
+             (define-key menu-keymap (vector (gensym))
+               (car (yas--template-menu-binding-pair-get-create template :stay)))))
+          ((eq (first e) 'yas-submenu)
+           (let ((subkeymap (make-sparse-keymap)))
+             (define-key menu-keymap (vector (gensym))
+               `(menu-item ,(second e) ,subkeymap))
+             (yas--define-menu-1 table
+                                subkeymap
+                                (third e)
+                                uuidhash
+                                (append group-list (list (second e))))))
+          ((eq (first e) 'yas-separator)
+           (define-key menu-keymap (vector (gensym))
+             '(menu-item "----")))
+          (t
+           (yas--message 3 "Don't know anything about menu entry %s" (first e))))))
+\f
+(defun yas--define (mode key template &optional name condition group)
+  "Define a snippet.  Expanding KEY into TEMPLATE.
+
+NAME is a description to this template.  Also update the menu if
+`yas-use-menu' is t.  CONDITION is the condition attached to
+this snippet.  If you attach a condition to a snippet, then it
+will only be expanded when the condition evaluated to non-nil."
+  (yas-define-snippets mode
+                       (list (list key template name condition group))))
+
+(defun yas-hippie-try-expand (first-time?)
+  "Integrate with hippie expand.
+
+Just put this function in `hippie-expand-try-functions-list'."
+  (when yas-minor-mode
+    (if (not first-time?)
+        (let ((yas-fallback-behavior 'return-nil))
+          (yas-expand))
+      (undo 1)
+      nil)))
+
+
+;;; Apropos condition-cache:
+;;;
+;;;
+;;;
+;;;
+(defvar yas--condition-cache-timestamp nil)
+(defmacro yas-define-condition-cache (func doc &rest body)
+  "Define a function FUNC with doc DOC and body BODY.
+BODY is executed at most once every snippet expansion attempt, to check
+expansion conditions.
+
+It doesn't make any sense to call FUNC programatically."
+  `(defun ,func () ,(if (and doc
+                             (stringp doc))
+                        (concat doc
+"\n\nFor use in snippets' conditions. Within each
+snippet-expansion routine like `yas-expand', computes actual
+value for the first time then always returns a cached value.")
+                      (setq body (cons doc body))
+                      nil)
+     (let ((timestamp-and-value (get ',func 'yas--condition-cache)))
+       (if (equal (car timestamp-and-value) yas--condition-cache-timestamp)
+           (cdr timestamp-and-value)
+         (let ((new-value (progn
+                            ,@body
+                            )))
+           (put ',func 'yas--condition-cache (cons yas--condition-cache-timestamp new-value))
+           new-value)))))
+
+(defalias 'yas-expand 'yas-expand-from-trigger-key)
+(defun yas-expand-from-trigger-key (&optional field)
+  "Expand a snippet before point.
+
+If no snippet expansion is possible, fall back to the behaviour
+defined in `yas-fallback-behavior'.
+
+Optional argument FIELD is for non-interactive use and is an
+object satisfying `yas--field-p' to restrict the expansion to."
+  (interactive)
+  (setq yas--condition-cache-timestamp (current-time))
+  (let (templates-and-pos)
+    (unless (and yas-expand-only-for-last-commands
+                 (not (member last-command yas-expand-only-for-last-commands)))
+      (setq templates-and-pos (if field
+                                  (save-restriction
+                                    (narrow-to-region (yas--field-start field)
+                                                      (yas--field-end field))
+                                    (yas--current-key))
+                                (yas--current-key))))
+    (if (and templates-and-pos
+             (first templates-and-pos))
+        (yas--expand-or-prompt-for-template (first templates-and-pos)
+                                           (second templates-and-pos)
+                                           (third templates-and-pos))
+      (yas--fallback))))
+
+(defun yas-expand-from-keymap ()
+  "Directly expand some snippets, searching `yas--direct-keymaps'.
+
+If expansion fails, execute the previous binding for this key"
+  (interactive)
+  (setq yas--condition-cache-timestamp (current-time))
+  (let* ((vec (subseq (this-command-keys-vector) (if current-prefix-arg
+                                                     universal-argument-num-events
+                                                   0)))
+         (templates (mapcan #'(lambda (table)
+                                (yas--fetch table vec))
+                            (yas--get-snippet-tables))))
+    (if templates
+        (yas--expand-or-prompt-for-template templates)
+      (let ((yas-fallback-behavior 'call-other-command))
+        (yas--fallback)))))
+
+(defun yas--expand-or-prompt-for-template (templates &optional start end)
+  "Expand one of TEMPLATES from START to END.
+
+Prompt the user if TEMPLATES has more than one element, else
+expand immediately.  Common gateway for
+`yas-expand-from-trigger-key' and `yas-expand-from-keymap'."
+  (let ((yas--current-template (or (and (rest templates) ;; more than one
+                                       (yas--prompt-for-template (mapcar #'cdr templates)))
+                                  (cdar templates))))
+    (when yas--current-template
+      (yas-expand-snippet (yas--template-content yas--current-template)
+                          start
+                          end
+                          (yas--template-expand-env yas--current-template)))))
+
+;; Apropos the trigger key and the fallback binding:
+;;
+;; When `yas-minor-mode-map' binds <tab>, that correctly overrides
+;; org-mode's <tab>, for example and searching for fallbacks correctly
+;; returns `org-cycle'. However, most other modes bind "TAB". TODO,
+;; improve this explanation.
+;;
+(defun yas--fallback ()
+  "Fallback after expansion has failed.
+
+Common gateway for `yas-expand-from-trigger-key' and
+`yas-expand-from-keymap'."
+  (cond ((eq yas-fallback-behavior 'return-nil)
+         ;; return nil
+         nil)
+        ((eq yas-fallback-behavior 'call-other-command)
+         (let* ((beyond-yasnippet (yas--keybinding-beyond-yasnippet)))
+           (yas--message 4 "Falling back to %s"  beyond-yasnippet)
+           (assert (or (null beyond-yasnippet) (commandp beyond-yasnippet)))
+           (setq this-original-command beyond-yasnippet)
+           (call-interactively beyond-yasnippet)))
+        ((and (listp yas-fallback-behavior)
+              (cdr yas-fallback-behavior)
+              (eq 'apply (car yas-fallback-behavior)))
+         (if (cddr yas-fallback-behavior)
+             (apply (cadr yas-fallback-behavior)
+                    (cddr yas-fallback-behavior))
+           (when (commandp (cadr yas-fallback-behavior))
+             (setq this-command (cadr yas-fallback-behavior))
+             (call-interactively (cadr yas-fallback-behavior)))))
+        (t
+         ;; also return nil if all the other fallbacks have failed
+         nil)))
+
+(defun yas--keybinding-beyond-yasnippet ()
+  "Return the ??"
+  (let* ((yas-minor-mode nil)
+         (yas--direct-keymaps nil)
+         (keys (this-single-command-keys)))
+    (or (key-binding keys t)
+        (key-binding (yas--fallback-translate-input keys) t))))
+
+(defun yas--fallback-translate-input (keys)
+  "Emulate `read-key-sequence', at least what I think it does.
+
+Keys should be an untranslated key vector.  Returns a translated
+vector of keys.  FIXME not thoroughly tested."
+  (let ((retval [])
+        (i 0))
+    (while (< i (length keys))
+      (let ((j i)
+            (translated local-function-key-map))
+        (while (and (< j (length keys))
+                    translated
+                    (keymapp translated))
+          (setq translated (cdr (assoc (aref keys j) (remove 'keymap translated)))
+                j (1+ j)))
+        (setq retval (vconcat retval (cond ((symbolp translated)
+                                            `[,translated])
+                                           ((vectorp translated)
+                                            translated)
+                                           (t
+                                            (substring keys i j)))))
+        (setq i j)))
+    retval))
+
+\f
+;;; Utils for snippet development:
+
+(defun yas--all-templates (tables)
+  "Get `yas--template' objects in TABLES, applicable for buffer and point.
+
+Honours `yas-choose-tables-first', `yas-choose-keys-first' and
+`yas-buffer-local-condition'"
+  (when yas-choose-tables-first
+    (setq tables (list (yas--prompt-for-table tables))))
+  (mapcar #'cdr
+          (if yas-choose-keys-first
+              (let ((key (yas--prompt-for-keys
+                          (mapcan #'yas--table-all-keys tables))))
+                (when key
+                  (mapcan #'(lambda (table)
+                              (yas--fetch table key))
+                          tables)))
+            (remove-duplicates (mapcan #'yas--table-templates tables)
+                               :test #'equal))))
+
+(defun yas-insert-snippet (&optional no-condition)
+  "Choose a snippet to expand, pop-up a list of choices according
+to `yas--prompt-function'.
+
+With prefix argument NO-CONDITION, bypass filtering of snippets
+by condition."
+  (interactive "P")
+  (setq yas--condition-cache-timestamp (current-time))
+  (let* ((yas-buffer-local-condition (or (and no-condition
+                                              'always)
+                                         yas-buffer-local-condition))
+         (templates (yas--all-templates (yas--get-snippet-tables)))
+         (yas--current-template (and templates
+                                    (or (and (rest templates) ;; more than one template for same key
+                                             (yas--prompt-for-template templates))
+                                        (car templates))))
+         (where (if (region-active-p)
+                    (cons (region-beginning) (region-end))
+                  (cons (point) (point)))))
+    (if yas--current-template
+        (yas-expand-snippet (yas--template-content yas--current-template)
+                            (car where)
+                            (cdr where)
+                            (yas--template-expand-env yas--current-template))
+      (yas--message 3 "No snippets can be inserted here!"))))
+
+(defun yas-visit-snippet-file ()
+  "Choose a snippet to edit, selection like `yas-insert-snippet'.
+
+Only success if selected snippet was loaded from a file.  Put the
+visited file in `snippet-mode'."
+  (interactive)
+  (let* ((yas-buffer-local-condition 'always)
+         (templates (yas--all-templates (yas--get-snippet-tables)))
+         (yas-prompt-functions '(yas-ido-prompt yas-completing-prompt))
+         (template (and templates
+                        (or (yas--prompt-for-template templates
+                                                     "Choose a snippet template to edit: ")
+                            (car templates)))))
+
+    (if template
+        (yas--visit-snippet-file-1 template)
+      (message "No snippets tables active!"))))
+
+(defun yas--visit-snippet-file-1 (template)
+  "Helper for `yas-visit-snippet-file'."
+  (let ((file (yas--template-file template)))
+    (cond ((and file (file-readable-p file))
+           (find-file-other-window file)
+           (snippet-mode)
+           (set (make-local-variable 'yas--editing-template) template))
+          (file
+           (message "Original file %s no longer exists!" file))
+          (t
+           (switch-to-buffer (format "*%s*"(yas--template-name template)))
+           (let ((type 'snippet))
+             (when (listp (yas--template-content template))
+               (insert (format "# type: command\n"))
+               (setq type 'command))
+             (insert (format "# key: %s\n" (yas--template-key template)))
+             (insert (format "# name: %s\n" (yas--template-name template)))
+             (when (yas--template-keybinding template)
+               (insert (format "# binding: %s\n" (yas--template-keybinding template))))
+             (when (yas--template-expand-env template)
+               (insert (format "# expand-env: %s\n" (yas--template-expand-env template))))
+             (when (yas--template-condition template)
+               (insert (format "# condition: %s\n" (yas--template-condition template))))
+             (insert "# --\n")
+             (insert (if (eq type 'command)
+                         (pp-to-string (yas--template-content template))
+                       (yas--template-content template))))
+           (snippet-mode)
+           (set (make-local-variable 'yas--editing-template) template)))))
+
+(defun yas--guess-snippet-directories-1 (table)
+  "Guess possible snippet subdirectories for TABLE."
+  (cons (yas--table-name table)
+        (mapcan #'(lambda (parent)
+                    (yas--guess-snippet-directories-1
+                     parent))
+                (yas--table-parents table))))
+
+(defun yas--guess-snippet-directories (&optional table)
+  "Try to guess suitable directories based on the current active
+tables (or optional TABLE).
+
+Returns a list of elements (TABLE . DIRS) where TABLE is a
+`yas--table' object and DIRS is a list of all possible directories
+where snippets of table might exist."
+  (let ((main-dir (replace-regexp-in-string
+                   "/+$" ""
+                   (or (first (or (yas-snippet-dirs)
+                                  (setq yas-snippet-dirs '("~/.emacs.d/snippets")))))))
+        (tables (or (and table
+                         (list table))
+                    (yas--get-snippet-tables))))
+    ;; HACK! the snippet table created here is actually registered!
+    ;;
+    (unless (or table (gethash major-mode yas--tables))
+      (push (yas--table-get-create major-mode)
+            tables))
+
+    (mapcar #'(lambda (table)
+                (cons table
+                      (mapcar #'(lambda (subdir)
+                                  (concat main-dir "/" subdir))
+                              (yas--guess-snippet-directories-1 table))))
+            tables)))
+
+(defun yas--make-directory-maybe (table-and-dirs &optional main-table-string)
+  "Return a dir inside TABLE-AND-DIRS, prompts for creation if none exists."
+  (or (some #'(lambda (dir) (when (file-directory-p dir) dir)) (cdr table-and-dirs))
+      (let ((candidate (first (cdr table-and-dirs))))
+        (unless (file-writable-p (file-name-directory candidate))
+          (error (yas--format "%s is not writable." candidate)))
+        (if (y-or-n-p (format "Guessed directory (%s) for%s%s table \"%s\" does not exist! Create? "
+                              candidate
+                              (if (gethash (yas--table-mode (car table-and-dirs))
+                                           yas--tables)
+                                  ""
+                                " brand new")
+                              (or main-table-string
+                                  "")
+                              (yas--table-name (car table-and-dirs))))
+            (progn
+              (make-directory candidate 'also-make-parents)
+              ;; create the .yas-parents file here...
+              candidate)))))
+
+(defun yas-new-snippet (&optional no-template)
+  "Pops a new buffer for writing a snippet.
+
+Expands a snippet-writing snippet, unless the optional prefix arg
+NO-TEMPLATE is non-nil."
+  (interactive "P")
+  (let ((guessed-directories (yas--guess-snippet-directories)))
+
+    (switch-to-buffer "*new snippet*")
+    (erase-buffer)
+    (kill-all-local-variables)
+    (snippet-mode)
+    (yas-minor-mode 1)
+    (set (make-local-variable 'yas--guessed-modes) (mapcar #'(lambda (d)
+                                                              (yas--table-mode (car d)))
+                                                          guessed-directories))
+    (if (and (not no-template) yas-new-snippet-default)
+        (yas-expand-snippet yas-new-snippet-default))))
+
+(defun yas--compute-major-mode-and-parents (file)
+  "Given FILE, find the nearest snippet directory for a given mode.
+
+Returns a list (MODE-SYM PARENTS), the mode's symbol and a list
+representing one or more of the mode's parents.
+
+Note that MODE-SYM need not be the symbol of a real major mode,
+neither do the elements of PARENTS."
+  (let* ((file-dir (and file
+                        (directory-file-name (or (some #'(lambda (special)
+                                                           (locate-dominating-file file special))
+                                                       '(".yas-setup.el"
+                                                         ".yas-make-groups"
+                                                         ".yas-parents"))
+                                                 (directory-file-name (file-name-directory file))))))
+         (parents-file-name (concat file-dir "/.yas-parents"))
+         (major-mode-name (and file-dir
+                               (file-name-nondirectory file-dir)))
+         (major-mode-sym (or (and major-mode-name
+                                  (intern major-mode-name))))
+         (parents (when (file-readable-p parents-file-name)
+                         (mapcar #'intern
+                                 (split-string
+                                  (with-temp-buffer
+                                    (insert-file-contents parents-file-name)
+                                    (buffer-substring-no-properties (point-min)
+                                                                    (point-max))))))))
+    (when major-mode-sym
+      (cons major-mode-sym (remove major-mode-sym parents)))))
+
+(defvar yas--editing-template nil
+  "Supporting variable for `yas-load-snippet-buffer' and `yas--visit-snippet'.")
+
+(defvar yas--current-template nil
+  "Holds the current template being expanded into a snippet.")
+
+(defvar yas--guessed-modes nil
+  "List of guessed modes supporting `yas-load-snippet-buffer'.")
+
+(defun yas--read-table ()
+  "Ask user for a snippet table, help with some guessing."
+  (let ((prompt (if (and (featurep 'ido)
+                         ido-mode)
+                    'ido-completing-read 'completing-read)))
+    (unless yas--guessed-modes
+      (set (make-local-variable 'yas--guessed-modes)
+           (or (yas--compute-major-mode-and-parents buffer-file-name))))
+    (intern
+     (funcall prompt (format "Choose or enter a table (yas guesses %s): "
+                             (if yas--guessed-modes
+                                 (first yas--guessed-modes)
+                               "nothing"))
+              (mapcar #'symbol-name yas--guessed-modes)
+              nil
+              nil
+              nil
+              nil
+              (if (first yas--guessed-modes)
+                  (symbol-name (first yas--guessed-modes)))))))
+
+(defun yas-load-snippet-buffer (table &optional interactive)
+  "Parse and load current buffer's snippet definition into TABLE.
+
+TABLE is a symbol naming a passed to `yas--table-get-create'.
+
+When called interactively, prompt for the table name and
+whether (and where) to save the snippet, then quit the window."
+  (interactive (list (yas--read-table) t))
+  (cond
+   ;;  We have `yas--editing-template', this buffer's content comes from a
+   ;;  template which is already loaded and neatly positioned,...
+   ;;
+   (yas--editing-template
+    (yas--define-snippets-1 (yas--parse-template (yas--template-file yas--editing-template))
+                           (yas--template-table yas--editing-template)))
+   ;; Try to use `yas--guessed-modes'. If we don't have that use the
+   ;; value from `yas--compute-major-mode-and-parents'
+   ;;
+   (t
+    (unless yas--guessed-modes
+      (set (make-local-variable 'yas--guessed-modes) (or (yas--compute-major-mode-and-parents buffer-file-name))))
+    (let* ((table (yas--table-get-create table)))
+      (set (make-local-variable 'yas--editing-template)
+           (yas--define-snippets-1 (yas--parse-template buffer-file-name)
+                                  table)))))
+
+  (when (and interactive
+             (or
+              ;; Only offer to save this if it looks like a library or new
+              ;; snippet (loaded from elisp, from a dir in `yas-snippet-dirs'
+              ;; which is not the first, or from an unwritable file)
+              ;;
+              (not (yas--template-file yas--editing-template))
+              (not (file-writable-p (yas--template-file yas--editing-template)))
+              (and (listp yas-snippet-dirs)
+                   (second yas-snippet-dirs)
+                   (not (string-match (expand-file-name (first yas-snippet-dirs))
+                                      (yas--template-file yas--editing-template)))))
+             (y-or-n-p (yas--format "Looks like a library or new snippet. Save to new file? ")))
+    (let* ((option (first (yas--guess-snippet-directories (yas--template-table yas--editing-template))))
+           (chosen (and option
+                        (yas--make-directory-maybe option))))
+      (when chosen
+        (let ((default-file-name (or (and (yas--template-file yas--editing-template)
+                                          (file-name-nondirectory (yas--template-file yas--editing-template)))
+                                     (yas--template-name yas--editing-template))))
+          (write-file (concat chosen "/"
+                              (read-from-minibuffer (format "File name to create in %s? " chosen)
+                                                    default-file-name)))
+          (setf (yas--template-file yas--editing-template) buffer-file-name)))))
+  (when interactive
+    (yas--message 3 "Snippet \"%s\" loaded for %s."
+                  (yas--template-name yas--editing-template)
+                  (yas--table-name (yas--template-table yas--editing-template)))
+    (quit-window interactive)))
+
+(defun yas-tryout-snippet (&optional debug)
+  "Test current buffer's snippet template in other buffer."
+  (interactive "P")
+  (let* ((major-mode-and-parent (yas--compute-major-mode-and-parents buffer-file-name))
+         (parsed (yas--parse-template))
+         (test-mode (or (and (car major-mode-and-parent)
+                             (fboundp (car major-mode-and-parent))
+                             (car major-mode-and-parent))
+                        (first yas--guessed-modes)
+                        (intern (read-from-minibuffer (yas--format "Please input a mode: ")))))
+         (yas--current-template
+          (and parsed
+               (fboundp test-mode)
+               (yas--populate-template (yas--make-blank-template)
+                                      :table       nil ;; no tables for ephemeral snippets
+                                      :key         (first parsed)
+                                      :content     (second parsed)
+                                      :name        (third parsed)
+                                      :expand-env  (sixth parsed)))))
+    (cond (yas--current-template
+           (let ((buffer-name (format "*testing snippet: %s*" (yas--template-name yas--current-template))))
+             (kill-buffer (get-buffer-create buffer-name))
+             (switch-to-buffer (get-buffer-create buffer-name))
+             (setq buffer-undo-list nil)
+             (condition-case nil (funcall test-mode) (error nil))
+            (yas-minor-mode 1)
+             (setq buffer-read-only nil)
+             (yas-expand-snippet (yas--template-content yas--current-template)
+                                 (point-min)
+                                 (point-max)
+                                 (yas--template-expand-env yas--current-template))
+             (when (and debug
+                        (require 'yasnippet-debug nil t))
+               (add-hook 'post-command-hook 'yas-debug-snippet-vars nil t))))
+          (t
+           (yas--message 3 "Cannot test snippet for unknown major mode")))))
+
+(defun yas-active-keys ()
+  "Return all active trigger keys for current buffer and point."
+  (remove-duplicates
+   (remove-if-not #'stringp (mapcan #'yas--table-all-keys (yas--get-snippet-tables)))
+   :test #'string=))
+
+(defun yas--template-fine-group (template)
+  (car (last (or (yas--template-group template)
+                 (yas--template-perm-group template)))))
+
+(defun yas-describe-tables (&optional choose)
+  "Display snippets for each table."
+  (interactive "P")
+  (let* ((by-name-hash (and choose
+                            (y-or-n-p "Show by namehash? ")))
+         (buffer (get-buffer-create "*YASnippet tables*"))
+         (active-tables (yas--get-snippet-tables))
+         (remain-tables (let ((all))
+                          (maphash #'(lambda (_k v)
+                                       (unless (find v active-tables)
+                                         (push v all)))
+                                   yas--tables)
+                          all))
+         (table-lists (list active-tables remain-tables))
+         (original-buffer (current-buffer))
+         (continue t)
+         (yas--condition-cache-timestamp (current-time)))
+    (with-current-buffer buffer
+      (setq buffer-read-only nil)
+      (erase-buffer)
+      (cond ((not by-name-hash)
+             (insert "YASnippet tables: \n")
+             (while (and table-lists
+                         continue)
+               (dolist (table (car table-lists))
+                 (yas--describe-pretty-table table original-buffer))
+               (setq table-lists (cdr table-lists))
+               (when table-lists
+                 (yas--create-snippet-xrefs)
+                 (display-buffer buffer)
+                 (setq continue (and choose (y-or-n-p "Show also non-active tables? ")))))
+             (yas--create-snippet-xrefs)
+             (help-mode)
+             (goto-char 1))
+            (t
+             (insert "\n\nYASnippet tables by NAMEHASH: \n")
+             (dolist (table (append active-tables remain-tables))
+               (insert (format "\nSnippet table `%s':\n\n" (yas--table-name table)))
+               (let ((keys))
+                 (maphash #'(lambda (k _v)
+                              (push k keys))
+                          (yas--table-hash table))
+                 (dolist (key keys)
+                   (insert (format "   key %s maps snippets: %s\n" key
+                                   (let ((names))
+                                     (maphash #'(lambda (k _v)
+                                                  (push k names))
+                                              (gethash key (yas--table-hash table)))
+                                     names))))))))
+      (goto-char 1)
+      (setq buffer-read-only t))
+    (display-buffer buffer)))
+
+(defun yas--describe-pretty-table (table &optional original-buffer)
+  (insert (format "\nSnippet table `%s'"
+                  (yas--table-name table)))
+  (if (yas--table-parents table)
+      (insert (format " parents: %s\n"
+                      (mapcar #'yas--table-name
+                              (yas--table-parents table))))
+    (insert "\n"))
+  (insert (make-string 100 ?-) "\n")
+  (insert "group                   state name                                    key             binding\n")
+  (let ((groups-hash (make-hash-table :test #'equal)))
+    (maphash #'(lambda (_k v)
+                 (let ((group (or (yas--template-fine-group v)
+                                  "(top level)")))
+                   (when (yas--template-name v)
+                     (puthash group
+                              (cons v (gethash group groups-hash))
+                              groups-hash))))
+             (yas--table-uuidhash table))
+    (maphash
+     #'(lambda (group templates)
+         (setq group (truncate-string-to-width group 25 0 ?  "..."))
+         (insert (make-string 100 ?-) "\n")
+         (dolist (p templates)
+           (let ((name (truncate-string-to-width (propertize (format "\\\\snippet `%s'" (yas--template-name p))
+                                                             'yasnippet p)
+                                                 50 0 ? "..."))
+                 (group (prog1 group
+                          (setq group (make-string (length group) ? ))))
+                 (condition-string (let ((condition (yas--template-condition p)))
+                                     (if (and condition
+                                              original-buffer)
+                                         (with-current-buffer original-buffer
+                                           (if (yas--eval-condition condition)
+                                               "(y)"
+                                             "(s)"))
+                                       "(a)"))))
+             (insert group " ")
+             (insert condition-string " ")
+             (insert name
+                     (if (string-match "\\.\\.\\.$" name)
+                         "'"
+                       " ")
+                     " ")
+             (insert (truncate-string-to-width (or (yas--template-key p) "")
+                                               15 0 ?  "...") " ")
+             (insert (truncate-string-to-width (key-description (yas--template-keybinding p))
+                                               15 0 ?  "...") " ")
+             (insert "\n"))))
+     groups-hash)))
+
+
+\f
+;;; User convenience functions, for using in snippet definitions
+
+(defvar yas-modified-p nil
+  "Non-nil if field has been modified by user or transformation.")
+
+(defvar yas-moving-away-p nil
+  "Non-nil if user is about to exit field.")
+
+(defvar yas-text nil
+  "Contains current field text.")
+
+(defun yas-substr (str pattern &optional subexp)
+  "Search PATTERN in STR and return SUBEXPth match.
+
+If found, the content of subexp group SUBEXP (default 0) is
+  returned, or else the original STR will be returned."
+  (let ((grp (or subexp 0)))
+    (save-match-data
+      (if (string-match pattern str)
+          (match-string-no-properties grp str)
+        str))))
+
+(defun yas-choose-value (&rest possibilities)
+  "Prompt for a string in POSSIBILITIES and return it.
+
+The last element of POSSIBILITIES may be a list of strings."
+  (unless (or yas-moving-away-p
+              yas-modified-p)
+    (setq possibilities (nreverse possibilities))
+    (setq possibilities (if (listp (car possibilities))
+                            (append (reverse (car possibilities)) (rest possibilities))
+                                   possibilities))
+    (some #'(lambda (fn)
+              (funcall fn "Choose: " possibilities))
+          yas-prompt-functions)))
+
+(defun yas-key-to-value (alist)
+  (unless (or yas-moving-away-p
+              yas-modified-p)
+    (let ((key (read-key-sequence "")))
+      (when (stringp key)
+        (or (cdr (find key alist :key #'car :test #'string=))
+            key)))))
+
+(defun yas-throw (text)
+  "Throw a yas--exception with TEXT as the reason."
+  (throw 'yas--exception (cons 'yas--exception text)))
+
+(defun yas-verify-value (possibilities)
+  "Verify that the current field value is in POSSIBILITIES.
+
+Otherwise throw exception."
+  (when (and yas-moving-away-p (notany #'(lambda (pos) (string= pos yas-text)) possibilities))
+    (yas-throw (yas--format "Field only allows %s" possibilities))))
+
+(defun yas-field-value (number)
+  "Get the string for field with NUMBER.
+
+Use this in primary and mirror transformations to tget."
+  (let* ((snippet (car (yas--snippets-at-point)))
+         (field (and snippet
+                     (yas--snippet-find-field snippet number))))
+    (when field
+      (yas--field-text-for-display field))))
+
+(defun yas-text ()
+  "Return `yas-text' if that exists and is non-empty, else nil."
+  (if (and yas-text
+           (not (string= "" yas-text)))
+      yas-text))
+
+(defun yas-selected-text ()
+  "Return `yas-selected-text' if that exists and is non-empty, else nil."
+  (if (and yas-selected-text
+           (not (string= "" yas-selected-text)))
+      yas-selected-text))
+
+(defun yas--get-field-once (number &optional transform-fn)
+  (unless yas-modified-p
+    (if transform-fn
+        (funcall transform-fn (yas-field-value number))
+      (yas-field-value number))))
+
+(defun yas-default-from-field (number)
+  (unless yas-modified-p
+    (yas-field-value number)))
+
+(defun yas-inside-string ()
+  "Return non-nil if the point is inside a string according to font-lock."
+  (equal 'font-lock-string-face (get-char-property (1- (point)) 'face)))
+
+(defun yas-unimplemented (&optional missing-feature)
+  (if yas--current-template
+      (if (y-or-n-p (format "This snippet is unimplemented (missing %s) Visit the snippet definition? "
+                            (or missing-feature
+                                "something")))
+          (yas--visit-snippet-file-1 yas--current-template))
+    (message "No implementation. Missing %s" (or missing-feature "something"))))
+
+\f
+;;; Snippet expansion and field management
+
+(defvar yas--active-field-overlay nil
+  "Overlays the currently active field.")
+
+(defvar yas--field-protection-overlays nil
+  "Two overlays protect the current active field.")
+
+(defvar yas-selected-text nil
+  "The selected region deleted on the last snippet expansion.")
+
+(defvar yas--start-column nil
+  "The column where the snippet expansion started.")
+
+(make-variable-buffer-local 'yas--active-field-overlay)
+(make-variable-buffer-local 'yas--field-protection-overlays)
+(put 'yas--active-field-overlay 'permanent-local t)
+(put 'yas--field-protection-overlays 'permanent-local t)
+
+(defstruct (yas--snippet (:constructor yas--make-snippet ()))
+  "A snippet.
+
+..."
+  (fields '())
+  (exit nil)
+  (id (yas--snippet-next-id) :read-only t)
+  (control-overlay nil)
+  active-field
+  ;; stacked expansion: the `previous-active-field' slot saves the
+  ;; active field where the child expansion took place
+  previous-active-field
+  force-exit)
+
+(defstruct (yas--field (:constructor yas--make-field (number start end parent-field)))
+  "A field.
+
+NUMBER is the field number.
+START and END are mostly buffer markers, but see \"apropos markers-to-points\".
+PARENT-FIELD is a `yas--field' this field is nested under, or nil.
+MIRRORS is a list of `yas--mirror's
+TRANSFORM is a lisp form.
+MODIFIED-P is a boolean set to true once user inputs text.
+NEXT is another `yas--field' or `yas--mirror' or `yas--exit'.
+"
+  number
+  start end
+  parent-field
+  (mirrors '())
+  (transform nil)
+  (modified-p nil)
+  next)
+
+
+(defstruct (yas--mirror (:constructor yas--make-mirror (start end transform)))
+  "A mirror.
+
+START and END are mostly buffer markers, but see \"apropos markers-to-points\".
+TRANSFORM is a lisp form.
+PARENT-FIELD is a `yas--field' this mirror is nested under, or nil.
+NEXT is another `yas--field' or `yas--mirror' or `yas--exit'
+DEPTH is a count of how many nested mirrors can affect this mirror"
+  start end
+  (transform nil)
+  parent-field
+  next
+  depth)
+
+(defstruct (yas--exit (:constructor yas--make-exit (marker)))
+  marker
+  next)
+
+(defun yas--apply-transform (field-or-mirror field &optional empty-on-nil-p)
+  "Calculate transformed string for FIELD-OR-MIRROR from FIELD.
+
+If there is no transform for ht field, return nil.
+
+If there is a transform but it returns nil, return the empty
+string iff EMPTY-ON-NIL-P is true."
+  (let* ((yas-text (yas--field-text-for-display field))
+         (yas-modified-p (yas--field-modified-p field))
+         (yas-moving-away-p nil)
+         (transform (if (yas--mirror-p field-or-mirror)
+                        (yas--mirror-transform field-or-mirror)
+                      (yas--field-transform field-or-mirror)))
+         (start-point (if (yas--mirror-p field-or-mirror)
+                          (yas--mirror-start field-or-mirror)
+                        (yas--field-start field-or-mirror)))
+         (transformed (and transform
+                           (save-excursion
+                             (goto-char start-point)
+                             (let ((ret (yas--eval-lisp transform)))
+                               (or ret (and empty-on-nil-p "")))))))
+    transformed))
+
+(defsubst yas--replace-all (from to &optional text)
+  "Replace all occurrences from FROM to TO.
+
+With optional string TEXT do it in that string."
+  (if text
+      (replace-regexp-in-string (regexp-quote from) to text t t)
+    (goto-char (point-min))
+    (while (search-forward from nil t)
+      (replace-match to t t text))))
+
+(defun yas--snippet-find-field (snippet number)
+  (find-if #'(lambda (field)
+               (eq number (yas--field-number field)))
+           (yas--snippet-fields snippet)))
+
+(defun yas--snippet-sort-fields (snippet)
+  "Sort the fields of SNIPPET in navigation order."
+  (setf (yas--snippet-fields snippet)
+        (sort (yas--snippet-fields snippet)
+              #'yas--snippet-field-compare)))
+
+(defun yas--snippet-field-compare (field1 field2)
+  "Compare FIELD1 and FIELD2.
+
+The field with a number is sorted first.  If they both have a
+number, compare through the number.  If neither have, compare
+through the field's start point"
+  (let ((n1 (yas--field-number field1))
+        (n2 (yas--field-number field2)))
+    (if n1
+        (if n2
+            (or (zerop n2) (and (not (zerop n1))
+                                (< n1 n2)))
+          (not (zerop n1)))
+      (if n2
+          (zerop n2)
+        (< (yas--field-start field1)
+           (yas--field-start field2))))))
+
+(defun yas--field-probably-deleted-p (snippet field)
+  "Guess if SNIPPET's FIELD should be skipped."
+  (and
+   ;; field must be zero length
+   ;;
+   (zerop (- (yas--field-start field) (yas--field-end field)))
+   ;; skip if:
+   (or
+    ;;  1) is a nested field and it's been modified
+    ;;
+    (and (yas--field-parent-field field)
+         (yas--field-modified-p field))
+    ;;  2) ends just before the snippet end
+    ;;
+    (and (eq field (car (last (yas--snippet-fields snippet))))
+         (= (yas--field-start field) (overlay-end (yas--snippet-control-overlay snippet)))))
+   ;; the field numbered 0, just before the exit marker, should
+   ;; never be skipped
+   ;;
+   (not (zerop (yas--field-number field)))))
+
+(defun yas--snippets-at-point (&optional all-snippets)
+  "Return a sorted list of snippets at point.
+
+The most recently-inserted snippets are returned first."
+  (sort
+   (remove nil (remove-duplicates (mapcar #'(lambda (ov)
+                                              (overlay-get ov 'yas--snippet))
+                                          (if all-snippets
+                                              (overlays-in (point-min) (point-max))
+                                            (nconc (overlays-at (point)) (overlays-at (1- (point))))))))
+   #'(lambda (s1 s2)
+       (<= (yas--snippet-id s2) (yas--snippet-id s1)))))
+
+(defun yas-next-field-or-maybe-expand ()
+  "Try to expand a snippet at a key before point.
+
+Otherwise delegate to `yas-next-field'."
+  (interactive)
+  (if yas-triggers-in-field
+      (let ((yas-fallback-behavior 'return-nil)
+            (active-field (overlay-get yas--active-field-overlay 'yas--field)))
+        (when active-field
+          (unless (yas-expand-from-trigger-key active-field)
+            (yas-next-field))))
+    (yas-next-field)))
+
+(defun yas-next-field (&optional arg)
+  "Navigate to the ARGth next field.
+
+If there's none, exit the snippet."
+  (interactive)
+  (let* ((arg (or arg
+                  1))
+         (snippet (first (yas--snippets-at-point)))
+         (active-field (overlay-get yas--active-field-overlay 'yas--field))
+         (live-fields (remove-if #'(lambda (field)
+                                     (and (not (eq field active-field))
+                                          (yas--field-probably-deleted-p snippet field)))
+                                 (yas--snippet-fields snippet)))
+         (active-field-pos (position active-field live-fields))
+         (target-pos (and active-field-pos (+ arg active-field-pos)))
+         (target-field (and target-pos (nth target-pos live-fields))))
+    ;; First check if we're moving out of a field with a transform
+    ;;
+    (when (and active-field
+               (yas--field-transform active-field))
+      (let* ((yas-moving-away-p t)
+             (yas-text (yas--field-text-for-display active-field))
+             (yas-modified-p (yas--field-modified-p active-field)))
+        ;; primary field transform: exit call to field-transform
+        (yas--eval-lisp (yas--field-transform active-field))))
+    ;; Now actually move...
+    (cond ((and target-pos (>= target-pos (length live-fields)))
+           (yas-exit-snippet snippet))
+          (target-field
+           (yas--move-to-field snippet target-field))
+          (t
+           nil))))
+
+(defun yas--place-overlays (snippet field)
+  "Correctly place overlays for SNIPPET's FIELD."
+  (yas--make-move-field-protection-overlays snippet field)
+  (yas--make-move-active-field-overlay snippet field))
+
+(defun yas--move-to-field (snippet field)
+  "Update SNIPPET to move to field FIELD.
+
+Also create some protection overlays"
+  (goto-char (yas--field-start field))
+  (yas--place-overlays snippet field)
+  (overlay-put yas--active-field-overlay 'yas--field field)
+  (let ((number (yas--field-number field)))
+    ;; check for the special ${0: ...} field
+    (if (and number (zerop number))
+        (progn
+          (set-mark (yas--field-end field))
+          (setf (yas--snippet-force-exit snippet)
+                (or (yas--field-transform field)
+                    t)))
+      ;; make this field active
+      (setf (yas--snippet-active-field snippet) field)
+      ;; primary field transform: first call to snippet transform
+      (unless (yas--field-modified-p field)
+        (if (yas--field-update-display field)
+            (yas--update-mirrors snippet)
+          (setf (yas--field-modified-p field) nil))))))
+
+(defun yas-prev-field ()
+  "Navigate to prev field.  If there's none, exit the snippet."
+  (interactive)
+  (yas-next-field -1))
+
+(defun yas-abort-snippet (&optional snippet)
+  (interactive)
+  (let ((snippet (or snippet
+                     (car (yas--snippets-at-point)))))
+    (when snippet
+      (setf (yas--snippet-force-exit snippet) t))))
+
+(defun yas-exit-snippet (snippet)
+  "Goto exit-marker of SNIPPET."
+  (interactive (list (first (yas--snippets-at-point))))
+  (when snippet
+    (setf (yas--snippet-force-exit snippet) t)
+    (goto-char (if (yas--snippet-exit snippet)
+                   (yas--exit-marker (yas--snippet-exit snippet))
+                 (overlay-end (yas--snippet-control-overlay snippet))))))
+
+(defun yas-exit-all-snippets ()
+  "Exit all snippets."
+  (interactive)
+  (mapc #'(lambda (snippet)
+            (yas-exit-snippet snippet)
+            (yas--check-commit-snippet))
+        (yas--snippets-at-point 'all-snippets)))
+
+\f
+;;; Some low level snippet-routines:
+
+(defvar yas--inhibit-overlay-hooks nil
+  "Bind this temporarily to non-nil to prevent running `yas--on-*-modification'.")
+
+(defmacro yas--inhibit-overlay-hooks (&rest body)
+  "Run BODY with `yas--inhibit-overlay-hooks' set to t."
+  (declare (indent 0))
+  `(let ((yas--inhibit-overlay-hooks t))
+     ,@body))
+
+(defvar yas-snippet-beg nil "Beginning position of the last snippet committed.")
+(defvar yas-snippet-end nil "End position of the last snippet committed.")
+
+(defun yas--commit-snippet (snippet)
+  "Commit SNIPPET, but leave point as it is.
+
+This renders the snippet as ordinary text."
+
+  (let ((control-overlay (yas--snippet-control-overlay snippet)))
+    ;;
+    ;; Save the end of the moribund snippet in case we need to revive it
+    ;; its original expansion.
+    ;;
+    (when (and control-overlay
+               (overlay-buffer control-overlay))
+      (setq yas-snippet-beg (overlay-start control-overlay))
+      (setq yas-snippet-end (overlay-end control-overlay))
+      (delete-overlay control-overlay))
+
+    (yas--inhibit-overlay-hooks
+      (when yas--active-field-overlay
+        (delete-overlay yas--active-field-overlay))
+      (when yas--field-protection-overlays
+        (mapc #'delete-overlay yas--field-protection-overlays)))
+
+    ;; stacked expansion: if the original expansion took place from a
+    ;; field, make sure we advance it here at least to
+    ;; `yas-snippet-end'...
+    ;;
+    (let ((previous-field (yas--snippet-previous-active-field snippet)))
+      (when (and yas-snippet-end previous-field)
+        (yas--advance-end-maybe previous-field yas-snippet-end)))
+
+    ;; Convert all markers to points,
+    ;;
+    (yas--markers-to-points snippet)
+
+    ;; Take care of snippet revival
+    ;;
+    (if yas-snippet-revival
+        (push `(apply yas--snippet-revive ,yas-snippet-beg ,yas-snippet-end ,snippet)
+              buffer-undo-list)
+      ;; Dismember the snippet... this is useful if we get called
+      ;; again from `yas--take-care-of-redo'....
+      (setf (yas--snippet-fields snippet) nil)))
+
+  (yas--message 3 "Snippet %s exited." (yas--snippet-id snippet)))
+
+(defun yas--safely-run-hooks (hook-var)
+  (condition-case error
+      (run-hooks hook-var)
+    (error
+     (yas--message 3 "%s error: %s" hook-var (error-message-string error)))))
+
+
+(defun yas--check-commit-snippet ()
+  "Check if point exited the currently active field of the snippet.
+
+If so cleans up the whole snippet up."
+  (let* ((snippets (yas--snippets-at-point 'all-snippets))
+         (snippets-left snippets)
+         (snippet-exit-transform))
+    (dolist (snippet snippets)
+      (let ((active-field (yas--snippet-active-field snippet)))
+        (setq snippet-exit-transform (yas--snippet-force-exit snippet))
+        (cond ((or snippet-exit-transform
+                   (not (and active-field (yas--field-contains-point-p active-field))))
+               (setq snippets-left (delete snippet snippets-left))
+               (setf (yas--snippet-force-exit snippet) nil)
+               (yas--commit-snippet snippet))
+              ((and active-field
+                    (or (not yas--active-field-overlay)
+                        (not (overlay-buffer yas--active-field-overlay))))
+               ;;
+               ;; stacked expansion: this case is mainly for recent
+               ;; snippet exits that place us back int the field of
+               ;; another snippet
+               ;;
+               (save-excursion
+                 (yas--move-to-field snippet active-field)
+                 (yas--update-mirrors snippet)))
+              (t
+               nil))))
+    (unless (or (null snippets) snippets-left)
+      (if snippet-exit-transform
+          (yas--eval-lisp-no-saves snippet-exit-transform))
+      (yas--safely-run-hooks 'yas-after-exit-snippet-hook))))
+
+;; Apropos markers-to-points:
+;;
+;; This was found useful for performance reasons, so that an
+;; excessive number of live markers aren't kept around in the
+;; `buffer-undo-list'. However, in `markers-to-points', the
+;; set-to-nil markers can't simply be discarded and replaced with
+;; fresh ones in `points-to-markers'. The original marker that was
+;; just set to nil has to be reused.
+;;
+;; This shouldn't bring horrible problems with undo/redo, but it
+;; you never know
+;;
+(defun yas--markers-to-points (snippet)
+  "Convert all markers in SNIPPET to a cons (POINT . MARKER)
+where POINT is the original position of the marker and MARKER is
+the original marker object with the position set to nil."
+  (dolist (field (yas--snippet-fields snippet))
+    (let ((start (marker-position (yas--field-start field)))
+          (end (marker-position (yas--field-end field))))
+      (set-marker (yas--field-start field) nil)
+      (set-marker (yas--field-end field) nil)
+      (setf (yas--field-start field) (cons start (yas--field-start field)))
+      (setf (yas--field-end field) (cons end (yas--field-end field))))
+    (dolist (mirror (yas--field-mirrors field))
+      (let ((start (marker-position (yas--mirror-start mirror)))
+            (end (marker-position (yas--mirror-end mirror))))
+        (set-marker (yas--mirror-start mirror) nil)
+        (set-marker (yas--mirror-end mirror) nil)
+        (setf (yas--mirror-start mirror) (cons start (yas--mirror-start mirror)))
+        (setf (yas--mirror-end mirror) (cons end (yas--mirror-end mirror))))))
+  (let ((snippet-exit (yas--snippet-exit snippet)))
+    (when snippet-exit
+      (let ((exit (marker-position (yas--exit-marker snippet-exit))))
+        (set-marker (yas--exit-marker snippet-exit) nil)
+        (setf (yas--exit-marker snippet-exit) (cons exit (yas--exit-marker snippet-exit)))))))
+
+(defun yas--points-to-markers (snippet)
+  "Convert all cons (POINT . MARKER) in SNIPPET to markers.
+
+This is done by setting MARKER to POINT with `set-marker'."
+  (dolist (field (yas--snippet-fields snippet))
+    (setf (yas--field-start field) (set-marker (cdr (yas--field-start field))
+                                              (car (yas--field-start field))))
+    (setf (yas--field-end field) (set-marker (cdr (yas--field-end field))
+                                            (car (yas--field-end field))))
+    (dolist (mirror (yas--field-mirrors field))
+      (setf (yas--mirror-start mirror) (set-marker (cdr (yas--mirror-start mirror))
+                                                  (car (yas--mirror-start mirror))))
+      (setf (yas--mirror-end mirror) (set-marker (cdr (yas--mirror-end mirror))
+                                                (car (yas--mirror-end mirror))))))
+  (let ((snippet-exit (yas--snippet-exit snippet)))
+    (when snippet-exit
+      (setf (yas--exit-marker snippet-exit) (set-marker (cdr (yas--exit-marker snippet-exit))
+                                                       (car (yas--exit-marker snippet-exit)))))))
+
+(defun yas--field-contains-point-p (field &optional point)
+  (let ((point (or point
+                   (point))))
+    (and (>= point (yas--field-start field))
+         (<= point (yas--field-end field)))))
+
+(defun yas--field-text-for-display (field)
+  "Return the propertized display text for field FIELD."
+  (buffer-substring (yas--field-start field) (yas--field-end field)))
+
+(defun yas--undo-in-progress ()
+  "True if some kind of undo is in progress."
+  (or undo-in-progress
+      (eq this-command 'undo)
+      (eq this-command 'redo)))
+
+(defun yas--make-control-overlay (snippet start end)
+  "Create the control overlay that surrounds the snippet and
+holds the keymap."
+  (let ((overlay (make-overlay start
+                               end
+                               nil
+                               nil
+                               t)))
+    (overlay-put overlay 'keymap yas-keymap)
+    (overlay-put overlay 'priority 100)
+    (overlay-put overlay 'yas--snippet snippet)
+    overlay))
+
+(defun yas-skip-and-clear-or-delete-char (&optional field)
+  "Clears unmodified field if at field start, skips to next tab.
+
+Otherwise deletes a character normally by calling `delete-char'."
+  (interactive)
+  (let ((field (or field
+                   (and yas--active-field-overlay
+                        (overlay-buffer yas--active-field-overlay)
+                        (overlay-get yas--active-field-overlay 'yas--field)))))
+    (cond ((and field
+                (not (yas--field-modified-p field))
+                (eq (point) (marker-position (yas--field-start field))))
+           (yas--skip-and-clear field)
+           (yas-next-field 1))
+          (t
+           (call-interactively 'delete-char)))))
+
+(defun yas--skip-and-clear (field)
+  "Deletes the region of FIELD and sets it's modified state to t."
+  ;; Just before skipping-and-clearing the field, mark its children
+  ;; fields as modified, too. If the children have mirrors-in-fields
+  ;; this prevents them from updating erroneously (we're skipping and
+  ;; deleting!).
+  ;;
+  (yas--mark-this-and-children-modified field)
+  (delete-region (yas--field-start field) (yas--field-end field)))
+
+(defun yas--mark-this-and-children-modified (field)
+  (setf (yas--field-modified-p field) t)
+  (let ((fom (yas--field-next field)))
+    (while (and fom
+                (yas--fom-parent-field fom))
+      (when (and (eq (yas--fom-parent-field fom) field)
+                 (yas--field-p fom))
+        (yas--mark-this-and-children-modified fom))
+      (setq fom (yas--fom-next fom)))))
+
+(defun yas--make-move-active-field-overlay (snippet field)
+  "Place the active field overlay in SNIPPET's FIELD.
+
+Move the overlay, or create it if it does not exit."
+  (if (and yas--active-field-overlay
+           (overlay-buffer yas--active-field-overlay))
+      (move-overlay yas--active-field-overlay
+                    (yas--field-start field)
+                    (yas--field-end field))
+    (setq yas--active-field-overlay
+          (make-overlay (yas--field-start field)
+                        (yas--field-end field)
+                        nil nil t))
+    (overlay-put yas--active-field-overlay 'priority 100)
+    (overlay-put yas--active-field-overlay 'face 'yas-field-highlight-face)
+    (overlay-put yas--active-field-overlay 'yas--snippet snippet)
+    (overlay-put yas--active-field-overlay 'modification-hooks '(yas--on-field-overlay-modification))
+    (overlay-put yas--active-field-overlay 'insert-in-front-hooks
+                 '(yas--on-field-overlay-modification))
+    (overlay-put yas--active-field-overlay 'insert-behind-hooks
+                 '(yas--on-field-overlay-modification))))
+
+(defun yas--on-field-overlay-modification (overlay after? _beg _end &optional _length)
+  "Clears the field and updates mirrors, conditionally.
+
+Only clears the field if it hasn't been modified and it point it
+at field start.  This hook doesn't do anything if an undo is in
+progress."
+  (unless (or yas--inhibit-overlay-hooks
+              (yas--undo-in-progress))
+    (let* ((field (overlay-get overlay 'yas--field))
+           (snippet (overlay-get yas--active-field-overlay 'yas--snippet)))
+      (cond (after?
+             (yas--advance-end-maybe field (overlay-end overlay))
+             (save-excursion
+               (yas--field-update-display field))
+             (yas--update-mirrors snippet))
+            (field
+             (when (and (not after?)
+                        (not (yas--field-modified-p field))
+                        (eq (point) (if (markerp (yas--field-start field))
+                                        (marker-position (yas--field-start field))
+                                      (yas--field-start field))))
+               (yas--skip-and-clear field))
+             (setf (yas--field-modified-p field) t))))))
+\f
+;;; Apropos protection overlays:
+;;
+;; These exist for nasty users who will try to delete parts of the
+;; snippet outside the active field. Actual protection happens in
+;; `yas--on-protection-overlay-modification'.
+;;
+;; Currently this signals an error which inhibits the command. For
+;; commands that move point (like `kill-line'), point is restored in
+;; the `yas--post-command-handler' using a global
+;; `yas--protection-violation' variable.
+;;
+;; Alternatively, I've experimented with an implementation that
+;; commits the snippet before actually calling `this-command'
+;; interactively, and then signals an error, which is ignored. but
+;; blocks all other million modification hooks. This presented some
+;; problems with stacked expansion.
+;;
+(defun yas--make-move-field-protection-overlays (snippet field)
+  "Place protection overlays surrounding SNIPPET's FIELD.
+
+Move the overlays, or create them if they do not exit."
+  (let ((start (yas--field-start field))
+        (end (yas--field-end field)))
+    ;; First check if the (1+ end) is contained in the buffer,
+    ;; otherwise we'll have to do a bit of cheating and silently
+    ;; insert a newline. the `(1+ (buffer-size))' should prevent this
+    ;; when using stacked expansion
+    ;;
+    (when (< (buffer-size) end)
+      (save-excursion
+        (yas--inhibit-overlay-hooks
+          (goto-char (point-max))
+          (newline))))
+    ;; go on to normal overlay creation/moving
+    ;;
+    (cond ((and yas--field-protection-overlays
+                (every #'overlay-buffer yas--field-protection-overlays))
+           (move-overlay (first yas--field-protection-overlays) (1- start) start)
+           (move-overlay (second yas--field-protection-overlays) end (1+ end)))
+          (t
+           (setq yas--field-protection-overlays
+                 (list (make-overlay (1- start) start nil t nil)
+                       (make-overlay end (1+ end) nil t nil)))
+           (dolist (ov yas--field-protection-overlays)
+             (overlay-put ov 'face 'yas--field-debug-face)
+             (overlay-put ov 'yas--snippet snippet)
+             ;; (overlay-put ov 'evaporate t)
+             (overlay-put ov 'modification-hooks '(yas--on-protection-overlay-modification)))))))
+
+(defvar yas--protection-violation nil
+  "When non-nil, signals attempts to erroneously exit or modify the snippet.
+
+Functions in the `post-command-hook', for example
+`yas--post-command-handler' can check it and reset its value to
+nil.  The variables value is the point where the violation
+originated")
+
+(defun yas--on-protection-overlay-modification (_overlay after? _beg _end &optional _length)
+  "Signals a snippet violation, then issues error.
+
+The error should be ignored in `debug-ignored-errors'"
+  (unless yas--inhibit-overlay-hooks
+    (cond ((not (or after?
+                    (yas--undo-in-progress)))
+           (setq yas--protection-violation (point))
+           (error "Exit the snippet first!")))))
+
+(add-to-list 'debug-ignored-errors "^Exit the snippet first!$")
+
+\f
+;;; Snippet expansion and "stacked" expansion:
+;;
+;; Stacked expansion is when you try to expand a snippet when already
+;; inside a snippet expansion.
+;;
+;; The parent snippet does not run its fields modification hooks
+;; (`yas--on-field-overlay-modification' and
+;; `yas--on-protection-overlay-modification') while the child snippet
+;; is active. This means, among other things, that the mirrors of the
+;; parent snippet are not updated, this only happening when one exits
+;; the child snippet.
+;;
+;; Unfortunately, this also puts some ugly (and not fully-tested)
+;; bits of code in `yas-expand-snippet' and
+;; `yas--commit-snippet'. I've tried to mark them with "stacked
+;; expansion:".
+;;
+;; This was thought to be safer in an undo/redo perspective, but
+;; maybe the correct implementation is to make the globals
+;; `yas--active-field-overlay' and `yas--field-protection-overlays' be
+;; snippet-local and be active even while the child snippet is
+;; running. This would mean a lot of overlay modification hooks
+;; running, but if managed correctly (including overlay priorities)
+;; they should account for all situations...
+;;
+(defun yas-expand-snippet (content &optional start end expand-env)
+  "Expand snippet CONTENT at current point.
+
+Text between START and END will be deleted before inserting
+template.  EXPAND-ENV is are let-style variable to value bindings
+considered when expanding the snippet."
+  (run-hooks 'yas-before-expand-snippet-hook)
+
+  ;;
+  (let* ((yas-selected-text (or yas-selected-text
+                                (and (region-active-p)
+                                     (buffer-substring-no-properties (region-beginning)
+                                                                     (region-end)))))
+         (start (or start
+                    (and (region-active-p)
+                         (region-beginning))
+                    (point)))
+         (end (or end
+                  (and (region-active-p)
+                       (region-end))
+                  (point)))
+         (to-delete (and start
+                         end
+                         (buffer-substring-no-properties start end)))
+         snippet)
+    (goto-char start)
+    (setq yas--indent-original-column (current-column))
+    ;; Delete the region to delete, this *does* get undo-recorded.
+    ;;
+    (when (and to-delete
+               (> end start))
+      (delete-region start end))
+
+    (cond ((listp content)
+           ;; x) This is a snippet-command
+           ;;
+           (yas--eval-lisp-no-saves content))
+          (t
+           ;; x) This is a snippet-snippet :-)
+           ;;
+           ;;    Narrow the region down to the content, shoosh the
+           ;;    `buffer-undo-list', and create the snippet, the new
+           ;;    snippet updates its mirrors once, so we are left with
+           ;;    some plain text.  The undo action for deleting this
+           ;;    plain text will get recorded at the end.
+           ;;
+           ;;    stacked expansion: also shoosh the overlay modification hooks
+           (save-restriction
+             (narrow-to-region start start)
+             (let ((buffer-undo-list t))
+               ;; snippet creation might evaluate users elisp, which
+               ;; might generate errors, so we have to be ready to catch
+               ;; them mostly to make the undo information
+               ;;
+               (setq yas--start-column (save-restriction (widen) (current-column)))
+               (yas--inhibit-overlay-hooks
+                 (setq snippet
+                       (if expand-env
+                           (eval `(let* ,expand-env
+                                    (insert content)
+                                    (yas--snippet-create (point-min))))
+                         (insert content)
+                         (yas--snippet-create (point-min)))))))
+
+           ;; stacked-expansion: This checks for stacked expansion, save the
+           ;; `yas--previous-active-field' and advance its boundary.
+           ;;
+           (let ((existing-field (and yas--active-field-overlay
+                                      (overlay-buffer yas--active-field-overlay)
+                                      (overlay-get yas--active-field-overlay 'yas--field))))
+             (when existing-field
+               (setf (yas--snippet-previous-active-field snippet) existing-field)
+               (yas--advance-end-maybe existing-field (overlay-end yas--active-field-overlay))))
+
+           ;; Exit the snippet immediately if no fields
+           ;;
+           (unless (yas--snippet-fields snippet)
+             (yas-exit-snippet snippet))
+
+           ;; Push two undo actions: the deletion of the inserted contents of
+           ;; the new snippet (without the "key") followed by an apply of
+           ;; `yas--take-care-of-redo' on the newly inserted snippet boundaries
+           ;;
+           ;; A small exception, if `yas-also-auto-indent-first-line'
+           ;; is t and `yas--indent' decides to indent the line to a
+           ;; point before the actual expansion point, undo would be
+           ;; messed up. We call the early point "newstart"".  case,
+           ;; and attempt to fix undo.
+           ;;
+           (let ((newstart (overlay-start (yas--snippet-control-overlay snippet)))
+                 (end (overlay-end (yas--snippet-control-overlay snippet))))
+             (when (< newstart start)
+               (push (cons (make-string (- start newstart) ? ) newstart) buffer-undo-list))
+             (push (cons newstart end) buffer-undo-list)
+             (push `(apply yas--take-care-of-redo ,start ,end ,snippet)
+                   buffer-undo-list))
+           ;; Now, schedule a move to the first field
+           ;;
+           (let ((first-field (car (yas--snippet-fields snippet))))
+             (when first-field
+               (sit-for 0) ;; fix issue 125
+               (yas--move-to-field snippet first-field)))
+           (yas--message 3 "snippet expanded.")
+           t))))
+
+(defun yas--take-care-of-redo (_beg _end snippet)
+  "Commits SNIPPET, which in turn pushes an undo action for reviving it.
+
+Meant to exit in the `buffer-undo-list'."
+  ;; slightly optimize: this action is only needed for snippets with
+  ;; at least one field
+  (when (yas--snippet-fields snippet)
+    (yas--commit-snippet snippet)))
+
+(defun yas--snippet-revive (beg end snippet)
+  "Revives SNIPPET and creates a control overlay from BEG to END.
+
+BEG and END are, we hope, the original snippets boundaries.
+All the markers/points exiting existing inside SNIPPET should point
+to their correct locations *at the time the snippet is revived*.
+
+After revival, push the `yas--take-care-of-redo' in the
+`buffer-undo-list'"
+  ;; Reconvert all the points to markers
+  ;;
+  (yas--points-to-markers snippet)
+  ;; When at least one editable field existed in the zombie snippet,
+  ;; try to revive the whole thing...
+  ;;
+  (let ((target-field (or (yas--snippet-active-field snippet)
+                          (car (yas--snippet-fields snippet)))))
+    (when target-field
+      (setf (yas--snippet-control-overlay snippet) (yas--make-control-overlay snippet beg end))
+      (overlay-put (yas--snippet-control-overlay snippet) 'yas--snippet snippet)
+
+      (yas--move-to-field snippet target-field)
+
+      (push `(apply yas--take-care-of-redo ,beg ,end ,snippet)
+            buffer-undo-list))))
+
+(defun yas--snippet-create (begin)
+  "Create a snippet from a template inserted at BEGIN.
+
+Returns the newly created snippet."
+  (let ((snippet (yas--make-snippet)))
+    (goto-char begin)
+    (yas--snippet-parse-create snippet)
+
+    ;; Sort and link each field
+    (yas--snippet-sort-fields snippet)
+
+    ;; Create keymap overlay for snippet
+    (setf (yas--snippet-control-overlay snippet)
+          (yas--make-control-overlay snippet (point-min) (point-max)))
+
+    ;; Move to end
+    (goto-char (point-max))
+
+    snippet))
+
+\f
+;;; Apropos adjacencies and "fom's":
+;;
+;; Once the $-constructs bits like "$n" and "${:n" are deleted in the
+;; recently expanded snippet, we might actually have many fields,
+;; mirrors (and the snippet exit) in the very same position in the
+;; buffer. Therefore we need to single-link the
+;; fields-or-mirrors-or-exit (which I have abbreviated to "fom")
+;; according to their original positions in the buffer.
+;;
+;; Then we have operation `yas--advance-end-maybe' and
+;; `yas--advance-start-maybe', which conditionally push the starts and
+;; ends of these foms down the chain.
+;;
+;; This allows for like the printf with the magic ",":
+;;
+;;   printf ("${1:%s}\\n"${1:$(if (string-match "%" text) "," "\);")}  \
+;;   $2${1:$(if (string-match "%" text) "\);" "")}$0
+;;
+(defun yas--fom-start (fom)
+  (cond ((yas--field-p fom)
+         (yas--field-start fom))
+        ((yas--mirror-p fom)
+         (yas--mirror-start fom))
+        (t
+         (yas--exit-marker fom))))
+
+(defun yas--fom-end (fom)
+  (cond ((yas--field-p fom)
+         (yas--field-end fom))
+        ((yas--mirror-p fom)
+         (yas--mirror-end fom))
+        (t
+         (yas--exit-marker fom))))
+
+(defun yas--fom-next (fom)
+  (cond ((yas--field-p fom)
+         (yas--field-next fom))
+        ((yas--mirror-p fom)
+         (yas--mirror-next fom))
+        (t
+         (yas--exit-next fom))))
+
+(defun yas--fom-parent-field (fom)
+  (cond ((yas--field-p fom)
+         (yas--field-parent-field fom))
+        ((yas--mirror-p fom)
+         (yas--mirror-parent-field fom))
+        (t
+         nil)))
+
+(defun yas--calculate-adjacencies (snippet)
+  "Calculate adjacencies for fields or mirrors of SNIPPET.
+
+This is according to their relative positions in the buffer, and
+has to be called before the $-constructs are deleted."
+  (let* ((fom-set-next-fom
+         (lambda (fom nextfom)
+           (cond ((yas--field-p fom)
+                  (setf (yas--field-next fom) nextfom))
+                 ((yas--mirror-p fom)
+                  (setf (yas--mirror-next fom) nextfom))
+                 (t
+                  (setf (yas--exit-next fom) nextfom)))))
+        (compare-fom-begs
+         (lambda (fom1 fom2)
+           (if (= (yas--fom-start fom2) (yas--fom-start fom1))
+               (yas--mirror-p fom2)
+             (>= (yas--fom-start fom2) (yas--fom-start fom1)))))
+        (link-foms fom-set-next-fom))
+    ;; make some yas--field, yas--mirror and yas--exit soup
+    (let ((soup))
+      (when (yas--snippet-exit snippet)
+        (push (yas--snippet-exit snippet) soup))
+      (dolist (field (yas--snippet-fields snippet))
+        (push field soup)
+        (dolist (mirror (yas--field-mirrors field))
+          (push mirror soup)))
+      (setq soup
+            (sort soup compare-fom-begs))
+      (when soup
+        (reduce link-foms soup)))))
+
+(defun yas--calculate-mirrors-in-fields (snippet mirror)
+  "Attempt to assign a parent field of SNIPPET to the mirror MIRROR.
+
+Use the tightest containing field if more than one field contains
+the mirror.  Intended to be called *before* the dollar-regions are
+deleted."
+  (let ((min (point-min))
+        (max (point-max)))
+    (dolist (field (yas--snippet-fields snippet))
+      (when (and (<= (yas--field-start field) (yas--mirror-start mirror))
+                 (<= (yas--mirror-end mirror) (yas--field-end field))
+               (< min (yas--field-start field))
+               (< (yas--field-end field) max))
+          (setq min (yas--field-start field)
+                max (yas--field-end field))
+          (setf (yas--mirror-parent-field mirror) field)))))
+
+(defun yas--advance-end-maybe (fom newend)
+  "Maybe advance FOM's end to NEWEND if it needs it.
+
+If it does, also:
+
+* call `yas--advance-start-maybe' on FOM's next fom.
+
+* in case FOM is field call `yas--advance-end-maybe' on its parent
+  field
+
+Also, if FOM is an exit-marker, always call
+`yas--advance-start-maybe' on its next fom.  This is because
+exit-marker have identical start and end markers."
+  (cond ((and fom (< (yas--fom-end fom) newend))
+         (set-marker (yas--fom-end fom) newend)
+         (yas--advance-start-maybe (yas--fom-next fom) newend)
+         (yas--advance-end-of-parents-maybe (yas--fom-parent-field fom) newend))
+        ((yas--exit-p fom)
+         (yas--advance-start-maybe (yas--fom-next fom) newend))))
+
+(defun yas--advance-start-maybe (fom newstart)
+  "Maybe advance FOM's start to NEWSTART if it needs it.
+
+If it does, also call `yas--advance-end-maybe' on FOM."
+  (when (and fom (< (yas--fom-start fom) newstart))
+    (set-marker (yas--fom-start fom) newstart)
+    (yas--advance-end-maybe fom newstart)))
+
+(defun yas--advance-end-of-parents-maybe (field newend)
+  "Like `yas--advance-end-maybe' but for parent fields.
+
+Only works for fields and doesn't care about the start of the
+next FOM.  Works its way up recursively for parents of parents."
+  (when (and field
+             (< (yas--field-end field) newend))
+    (set-marker (yas--field-end field) newend)
+    (yas--advance-end-of-parents-maybe (yas--field-parent-field field) newend)))
+
+(defvar yas--dollar-regions nil
+  "When expanding the snippet the \"parse-create\" functions add
+cons cells to this var.")
+
+(defvar yas--backquote-markers-and-strings nil
+  "List of (MARKER . STRING) marking where the values from
+backquoted Lisp expressions should be inserted at the end of
+expansion.")
+
+(defun yas--snippet-parse-create (snippet)
+  "Parse a recently inserted snippet template, creating all
+necessary fields, mirrors and exit points.
+
+Meant to be called in a narrowed buffer, does various passes"
+  (let ((parse-start (point)))
+    ;; Reset the yas--dollar-regions
+    ;;
+    (setq yas--dollar-regions nil)
+    ;; protect just the backquotes
+    ;;
+    (yas--protect-escapes nil '(?`))
+    ;; replace all backquoted expressions
+    ;;
+    (goto-char parse-start)
+    (yas--save-backquotes)
+    ;; protect escaped characters
+    ;;
+    (yas--protect-escapes)
+    ;; parse fields with {}
+    ;;
+    (goto-char parse-start)
+    (yas--field-parse-create snippet)
+    ;; parse simple mirrors and fields
+    ;;
+    (goto-char parse-start)
+    (yas--simple-mirror-parse-create snippet)
+    ;; parse mirror transforms
+    ;;
+    (goto-char parse-start)
+    (yas--transform-mirror-parse-create snippet)
+    ;; calculate adjacencies of fields and mirrors
+    ;;
+    (yas--calculate-adjacencies snippet)
+    ;; Delete $-constructs
+    ;;
+    (yas--delete-regions yas--dollar-regions)
+    ;; restore backquoted expression values
+    ;;
+    (yas--restore-backquotes)
+    ;; restore escapes
+    ;;
+    (goto-char parse-start)
+    (yas--restore-escapes)
+    ;; update mirrors for the first time
+    ;;
+    (yas--update-mirrors snippet)
+    ;; indent the best we can
+    ;;
+    (goto-char parse-start)
+    (yas--indent snippet)))
+
+(defun yas--indent-according-to-mode (snippet-markers)
+  "Indent current line according to mode, preserving SNIPPET-MARKERS."
+  ;;; Apropos indenting problems....
+  ;;
+  ;; `indent-according-to-mode' uses whatever `indent-line-function'
+  ;; is available. Some implementations of these functions delete text
+  ;; before they insert. If there happens to be a marker just after
+  ;; the text being deleted, the insertion actually happens after the
+  ;; marker, which misplaces it.
+  ;;
+  ;; This would also happen if we had used overlays with the
+  ;; `front-advance' property set to nil.
+  ;;
+  ;; This is why I have these `trouble-markers', they are the ones at
+  ;; they are the ones at the first non-whitespace char at the line
+  ;; (i.e. at `yas--real-line-beginning'. After indentation takes place
+  ;; we should be at the correct to restore them to. All other
+  ;; non-trouble-markers have been *pushed* and don't need special
+  ;; attention.
+  ;;
+  (goto-char (yas--real-line-beginning))
+  (let ((trouble-markers (remove-if-not #'(lambda (marker)
+                                            (= marker (point)))
+                                        snippet-markers)))
+    (save-restriction
+      (widen)
+      (condition-case _
+          (indent-according-to-mode)
+        (error (yas--message 3 "Warning: `yas--indent-according-to-mode' having problems running %s" indent-line-function)
+               nil)))
+    (mapc #'(lambda (marker)
+              (set-marker marker (point)))
+          trouble-markers)))
+
+(defvar yas--indent-original-column nil)
+(defun yas--indent (snippet)
+  (let ((snippet-markers (yas--collect-snippet-markers snippet)))
+    ;; Look for those $>
+    (save-excursion
+      (while (re-search-forward "$>" nil t)
+        (delete-region (match-beginning 0) (match-end 0))
+        (when (not (eq yas-indent-line 'auto))
+          (yas--indent-according-to-mode snippet-markers))))
+    ;; Now do stuff for 'fixed and 'auto
+    (save-excursion
+      (cond ((eq yas-indent-line 'fixed)
+             (while (and (zerop (forward-line))
+                         (zerop (current-column)))
+               (indent-to-column yas--indent-original-column)))
+            ((eq yas-indent-line 'auto)
+             (let ((end (set-marker (make-marker) (point-max)))
+                   (indent-first-line-p yas-also-auto-indent-first-line))
+               (while (and (zerop (if indent-first-line-p
+                                      (prog1
+                                          (forward-line 0)
+                                        (setq indent-first-line-p nil))
+                                    (forward-line 1)))
+                           (not (eobp))
+                           (<= (point) end))
+                 (yas--indent-according-to-mode snippet-markers))))
+            (t
+             nil)))))
+
+(defun yas--collect-snippet-markers (snippet)
+  "Make a list of all the markers used by SNIPPET."
+  (let (markers)
+    (dolist (field (yas--snippet-fields snippet))
+      (push (yas--field-start field) markers)
+      (push (yas--field-end field) markers)
+      (dolist (mirror (yas--field-mirrors field))
+        (push (yas--mirror-start mirror) markers)
+        (push (yas--mirror-end mirror) markers)))
+    (let ((snippet-exit (yas--snippet-exit snippet)))
+      (when (and snippet-exit
+                 (marker-buffer (yas--exit-marker snippet-exit)))
+        (push (yas--exit-marker snippet-exit) markers)))
+    markers))
+
+(defun yas--real-line-beginning ()
+  (let ((c (char-after (line-beginning-position)))
+        (n (line-beginning-position)))
+    (while (or (eql c ?\ )
+               (eql c ?\t))
+      (incf n)
+      (setq c (char-after n)))
+    n))
+
+(defun yas--escape-string (escaped)
+  (concat "YASESCAPE" (format "%d" escaped) "PROTECTGUARD"))
+
+(defun yas--protect-escapes (&optional text escaped)
+  "Protect all escaped characters with their numeric ASCII value.
+
+With optional string TEXT do it in string instead of buffer."
+  (let ((changed-text text)
+        (text-provided-p text))
+    (mapc #'(lambda (escaped)
+              (setq changed-text
+                    (yas--replace-all (concat "\\" (char-to-string escaped))
+                                     (yas--escape-string escaped)
+                                     (when text-provided-p changed-text))))
+          (or escaped yas--escaped-characters))
+    changed-text))
+
+(defun yas--restore-escapes (&optional text escaped)
+  "Restore all escaped characters from their numeric ASCII value.
+
+With optional string TEXT do it in string instead of the buffer."
+  (let ((changed-text text)
+        (text-provided-p text))
+    (mapc #'(lambda (escaped)
+              (setq changed-text
+                    (yas--replace-all (yas--escape-string escaped)
+                                     (char-to-string escaped)
+                                     (when text-provided-p changed-text))))
+          (or escaped yas--escaped-characters))
+    changed-text))
+
+(defun yas--save-backquotes ()
+  "Save all the \"`(lisp-expression)`\"-style expressions
+with their evaluated value into `yas--backquote-markers-and-strings'."
+  (while (re-search-forward yas--backquote-lisp-expression-regexp nil t)
+    (let ((current-string (match-string-no-properties 1)) transformed)
+      (delete-region (match-beginning 0) (match-end 0))
+      (setq transformed (yas--eval-lisp (yas--read-lisp (yas--restore-escapes current-string '(?`)))))
+      (goto-char (match-beginning 0))
+      (when transformed
+        (let ((marker (make-marker)))
+          (insert "Y") ;; quite horrendous, I love it :)
+          (set-marker marker (point))
+          (insert "Y")
+          (push (cons marker transformed) yas--backquote-markers-and-strings))))))
+
+(defun yas--restore-backquotes ()
+  "Replace markers in `yas--backquote-markers-and-strings' with their values."
+  (while yas--backquote-markers-and-strings
+    (let* ((marker-and-string (pop yas--backquote-markers-and-strings))
+           (marker (car marker-and-string))
+           (string (cdr marker-and-string)))
+      (save-excursion
+        (goto-char marker)
+        (delete-char -1)
+        (insert string)
+        (delete-char 1)
+        (set-marker marker nil)))))
+
+(defun yas--scan-sexps (from count)
+  (condition-case _
+      (with-syntax-table (standard-syntax-table)
+        (scan-sexps from count))
+    (error
+     nil)))
+
+(defun yas--make-marker (pos)
+  "Create a marker at POS with nil `marker-insertion-type'."
+  (let ((marker (set-marker (make-marker) pos)))
+    (set-marker-insertion-type marker nil)
+    marker))
+
+(defun yas--field-parse-create (snippet &optional parent-field)
+  "Parse most field expressions in SNIPPET, except for the simple one \"$n\".
+
+The following count as a field:
+
+* \"${n: text}\", for a numbered field with default text, as long as N is not 0;
+
+* \"${n: text$(expression)}, the same with a Lisp expression;
+  this is caught with the curiously named `yas--multi-dollar-lisp-expression-regexp'
+
+* the same as above but unnumbered, (no N:) and number is calculated automatically.
+
+When multiple expressions are found, only the last one counts."
+  ;;
+  (save-excursion
+    (while (re-search-forward yas--field-regexp nil t)
+      (let* ((real-match-end-0 (yas--scan-sexps (1+ (match-beginning 0)) 1))
+             (number (and (match-string-no-properties 1)
+                          (string-to-number (match-string-no-properties 1))))
+             (brand-new-field (and real-match-end-0
+                                   ;; break if on "$(" immediately
+                                   ;; after the ":", this will be
+                                   ;; caught as a mirror with
+                                   ;; transform later.
+                                   (not (save-match-data
+                                          (eq (string-match "$[ \t\n]*("
+                                                            (match-string-no-properties 2)) 0)))
+                                   ;; allow ${0: some exit text}
+                                   ;; (not (and number (zerop number)))
+                                   (yas--make-field number
+                                                   (yas--make-marker (match-beginning 2))
+                                                   (yas--make-marker (1- real-match-end-0))
+                                                   parent-field))))
+        (when brand-new-field
+          (goto-char real-match-end-0)
+          (push (cons (1- real-match-end-0) real-match-end-0)
+                yas--dollar-regions)
+          (push (cons (match-beginning 0) (match-beginning 2))
+                yas--dollar-regions)
+          (push brand-new-field (yas--snippet-fields snippet))
+          (save-excursion
+            (save-restriction
+              (narrow-to-region (yas--field-start brand-new-field) (yas--field-end brand-new-field))
+              (goto-char (point-min))
+              (yas--field-parse-create snippet brand-new-field)))))))
+  ;; if we entered from a parent field, now search for the
+  ;; `yas--multi-dollar-lisp-expression-regexp'. This is used for
+  ;; primary field transformations
+  ;;
+  (when parent-field
+    (save-excursion
+      (while (re-search-forward yas--multi-dollar-lisp-expression-regexp nil t)
+        (let* ((real-match-end-1 (yas--scan-sexps (match-beginning 1) 1)))
+          ;; commit the primary field transformation if:
+          ;;
+          ;; 1. we don't find it in yas--dollar-regions (a subnested
+          ;; field) might have already caught it.
+          ;;
+          ;; 2. we really make sure we have either two '$' or some
+          ;; text and a '$' after the colon ':'. This is a FIXME: work
+          ;; my regular expressions and end these ugly hacks.
+          ;;
+          (when (and real-match-end-1
+                     (not (member (cons (match-beginning 0)
+                                        real-match-end-1)
+                                  yas--dollar-regions))
+                     (not (eq ?:
+                              (char-before (1- (match-beginning 1))))))
+            (let ((lisp-expression-string (buffer-substring-no-properties (match-beginning 1)
+                                                                          real-match-end-1)))
+              (setf (yas--field-transform parent-field)
+                    (yas--read-lisp (yas--restore-escapes lisp-expression-string))))
+            (push (cons (match-beginning 0) real-match-end-1)
+                  yas--dollar-regions)))))))
+
+(defun yas--transform-mirror-parse-create (snippet)
+  "Parse the \"${n:$(lisp-expression)}\" mirror transformations in SNIPPET."
+  (while (re-search-forward yas--transform-mirror-regexp nil t)
+    (let* ((real-match-end-0 (yas--scan-sexps (1+ (match-beginning 0)) 1))
+           (number (string-to-number (match-string-no-properties 1)))
+           (field (and number
+                       (not (zerop number))
+                       (yas--snippet-find-field snippet number)))
+           (brand-new-mirror
+            (and real-match-end-0
+                 field
+                 (yas--make-mirror (yas--make-marker (match-beginning 0))
+                                  (yas--make-marker (match-beginning 0))
+                                  (yas--read-lisp
+                                   (yas--restore-escapes
+                                    (buffer-substring-no-properties (match-beginning 2)
+                                                                    (1- real-match-end-0))))))))
+      (when brand-new-mirror
+        (push brand-new-mirror
+              (yas--field-mirrors field))
+        (yas--calculate-mirrors-in-fields snippet brand-new-mirror)
+        (push (cons (match-beginning 0) real-match-end-0) yas--dollar-regions)))))
+
+(defun yas--simple-mirror-parse-create (snippet)
+  "Parse the simple \"$n\" fields/mirrors/exitmarkers in SNIPPET."
+  (while (re-search-forward yas--simple-mirror-regexp nil t)
+    (let ((number (string-to-number (match-string-no-properties 1))))
+      (cond ((zerop number)
+
+             (setf (yas--snippet-exit snippet)
+                   (yas--make-exit (yas--make-marker (match-end 0))))
+             (save-excursion
+               (goto-char (match-beginning 0))
+               (when yas-wrap-around-region
+                 (cond (yas-selected-text
+                        (insert yas-selected-text))
+                       ((and (eq yas-wrap-around-region 'cua)
+                             cua-mode
+                             (get-register ?0))
+                        (insert (prog1 (get-register ?0)
+                                  (set-register ?0 nil))))))
+               (push (cons (point) (yas--exit-marker (yas--snippet-exit snippet)))
+                     yas--dollar-regions)))
+            (t
+             (let ((field (yas--snippet-find-field snippet number)))
+               (if field
+                   (let ((brand-new-mirror (yas--make-mirror
+                                            (yas--make-marker (match-beginning 0))
+                                            (yas--make-marker (match-beginning 0))
+                                            nil)))
+                     (push brand-new-mirror
+                           (yas--field-mirrors field))
+                     (yas--calculate-mirrors-in-fields snippet brand-new-mirror))
+                 (push (yas--make-field number
+                                       (yas--make-marker (match-beginning 0))
+                                       (yas--make-marker (match-beginning 0))
+                                       nil)
+                       (yas--snippet-fields snippet))))
+             (push (cons (match-beginning 0) (match-end 0))
+                   yas--dollar-regions))))))
+
+(defun yas--delete-regions (regions)
+  "Sort disjuct REGIONS by start point, then delete from the back."
+  (mapc #'(lambda (reg)
+            (delete-region (car reg) (cdr reg)))
+        (sort regions
+              #'(lambda (r1 r2)
+                  (>= (car r1) (car r2))))))
+
+(defun yas--calculate-mirror-depth (mirror &optional traversed)
+  (let* ((parent (yas--mirror-parent-field mirror))
+         (parents-mirrors (and parent
+                               (yas--field-mirrors parent))))
+    (or (yas--mirror-depth mirror)
+        (setf (yas--mirror-depth mirror)
+              (cond ((memq mirror traversed)
+                     0)
+                    ((and parent parents-mirrors)
+                     (1+ (reduce #'max
+                                 (mapcar #'(lambda (m)
+                                             (yas--calculate-mirror-depth m
+                                                                          (cons mirror
+                                                                                traversed)))
+                                         parents-mirrors))))
+                    (parent
+                     1)
+                    (t
+                     0))))))
+
+(defun yas--update-mirrors (snippet)
+  "Update all the mirrors of SNIPPET."
+  (save-excursion
+    (dolist (field-and-mirror (sort
+                               ;; make a list of ((F1 . M1) (F1 . M2) (F2 . M3) (F2 . M4) ...)
+                               ;; where F is the field that M is mirroring
+                               ;;
+                               (mapcan #'(lambda (field)
+                                           (mapcar #'(lambda (mirror)
+                                                       (cons field mirror))
+                                                   (yas--field-mirrors field)))
+                                       (yas--snippet-fields snippet))
+                               ;; then sort this list so that entries with mirrors with parent
+                               ;; fields appear before. This was important for fixing #290, and
+                               ;; luckily also handles the case where a mirror in a field causes
+                               ;; another mirror to need reupdating
+                               ;;
+                               #'(lambda (field-and-mirror1 field-and-mirror2)
+                                   (> (yas--calculate-mirror-depth (cdr field-and-mirror1))
+                                      (yas--calculate-mirror-depth (cdr field-and-mirror2))))))
+      (let* ((field (car field-and-mirror))
+             (mirror (cdr field-and-mirror))
+             (parent-field (yas--mirror-parent-field mirror)))
+        ;; before updating a mirror with a parent-field, maybe advance
+        ;; its start (#290)
+        ;;
+        (when parent-field
+          (yas--advance-start-maybe mirror (yas--fom-start parent-field)))
+        ;; update this mirror
+        ;;
+        (yas--mirror-update-display mirror field)
+        ;; `yas--place-overlays' is needed if the active field and
+        ;; protected overlays have been changed because of insertions
+        ;; in `yas--mirror-update-display'
+        ;;
+        (when (eq field (yas--snippet-active-field snippet))
+          (yas--place-overlays snippet field))))))
+
+(defun yas--mirror-update-display (mirror field)
+  "Update MIRROR according to FIELD (and mirror transform)."
+
+  (let* ((mirror-parent-field (yas--mirror-parent-field mirror))
+         (reflection (and (not (and mirror-parent-field
+                                    (yas--field-modified-p mirror-parent-field)))
+                          (or (yas--apply-transform mirror field 'empty-on-nil)
+                              (yas--field-text-for-display field)))))
+    (when (and reflection
+               (not (string= reflection (buffer-substring-no-properties (yas--mirror-start mirror)
+                                                                        (yas--mirror-end mirror)))))
+      (goto-char (yas--mirror-start mirror))
+      (yas--inhibit-overlay-hooks
+        (insert reflection))
+      (if (> (yas--mirror-end mirror) (point))
+          (delete-region (point) (yas--mirror-end mirror))
+        (set-marker (yas--mirror-end mirror) (point))
+        (yas--advance-start-maybe (yas--mirror-next mirror) (point))
+        ;; super-special advance
+        (yas--advance-end-of-parents-maybe mirror-parent-field (point))))))
+
+(defun yas--field-update-display (field)
+  "Much like `yas--mirror-update-display', but for fields."
+  (when (yas--field-transform field)
+    (let ((transformed (and (not (eq (yas--field-number field) 0))
+                            (yas--apply-transform field field))))
+      (when (and transformed
+                 (not (string= transformed (buffer-substring-no-properties (yas--field-start field)
+                                                                           (yas--field-end field)))))
+        (setf (yas--field-modified-p field) t)
+        (goto-char (yas--field-start field))
+        (yas--inhibit-overlay-hooks
+          (insert transformed)
+          (if (> (yas--field-end field) (point))
+              (delete-region (point) (yas--field-end field))
+            (set-marker (yas--field-end field) (point))
+            (yas--advance-start-maybe (yas--field-next field) (point)))
+          t)))))
+
+\f
+;;; Post-command hook:
+;;
+(defun yas--post-command-handler ()
+  "Handles various yasnippet conditions after each command."
+  (cond (yas--protection-violation
+         (goto-char yas--protection-violation)
+         (setq yas--protection-violation nil))
+        ((eq 'undo this-command)
+         ;;
+         ;; After undo revival the correct field is sometimes not
+         ;; restored correctly, this condition handles that
+         ;;
+         (let* ((snippet (car (yas--snippets-at-point)))
+                (target-field (and snippet
+                                   (find-if-not #'(lambda (field)
+                                                    (yas--field-probably-deleted-p snippet field))
+                                                (remove nil
+                                                        (cons (yas--snippet-active-field snippet)
+                                                              (yas--snippet-fields snippet)))))))
+           (when target-field
+             (yas--move-to-field snippet target-field))))
+        ((not (yas--undo-in-progress))
+         ;; When not in an undo, check if we must commit the snippet
+         ;; (user exited it).
+         (yas--check-commit-snippet))))
+\f
+;;; Fancy docs:
+;;
+;; The docstrings for some functions are generated dynamically
+;; depending on the context.
+;;
+(put 'yas-expand  'function-documentation
+     '(yas--expand-from-trigger-key-doc))
+(defun yas--expand-from-trigger-key-doc ()
+  "A doc synthesizer for `yas--expand-from-trigger-key-doc'."
+  (let ((fallback-description
+         (cond ((eq yas-fallback-behavior 'call-other-command)
+                (let* ((fallback (yas--keybinding-beyond-yasnippet)))
+                  (or (and fallback
+                           (format " call command `%s'." (pp-to-string fallback)))
+                      " do nothing (`yas-expand' doesn't shadow\nanything)")))
+               ((eq yas-fallback-behavior 'return-nil)
+                ", do nothing.")
+               (t
+                ", defer to `yas-fallback-behaviour' (which see)"))))
+    (concat "Expand a snippet before point. If no snippet
+expansion is possible,"
+            fallback-description
+            "\n\nOptional argument FIELD is for non-interactive use and is an
+object satisfying `yas--field-p' to restrict the expansion to.")))
+
+(put 'yas-expand-from-keymap  'function-documentation '(yas--expand-from-keymap-doc))
+(defun yas--expand-from-keymap-doc ()
+  "A doc synthesizer for `yas--expand-from-keymap-doc'."
+  (add-hook 'temp-buffer-show-hook 'yas--snippet-description-finish-runonce)
+  (concat "Expand/run snippets from keymaps, possibly falling back to original binding.\n"
+          (when (eq this-command 'describe-key)
+            (let* ((vec (this-single-command-keys))
+                   (templates (mapcan #'(lambda (table)
+                                          (yas--fetch table vec))
+                                      (yas--get-snippet-tables)))
+                   (yas--direct-keymaps nil)
+                   (fallback (key-binding vec)))
+              (concat "In this case, "
+                      (when templates
+                        (concat "these snippets are bound to this key:\n"
+                                (yas--template-pretty-list templates)
+                                "\n\nIf none of these expands, "))
+                      (or (and fallback
+                               (format "fallback `%s' will be called." (pp-to-string fallback)))
+                          "no fallback keybinding is called."))))))
+
+(defun yas--template-pretty-list (templates)
+  (let ((acc)
+        (yas-buffer-local-condition 'always))
+    (dolist (plate templates)
+      (setq acc (concat acc "\n*) "
+                        (propertize (concat "\\\\snippet `" (car plate) "'")
+                                    'yasnippet (cdr plate)))))
+    acc))
+
+(define-button-type 'help-snippet-def
+  :supertype 'help-xref
+  'help-function (lambda (template) (yas--visit-snippet-file-1 template))
+  'help-echo (purecopy "mouse-2, RET: find snippets's definition"))
+
+(defun yas--snippet-description-finish-runonce ()
+  "Final adjustments for the help buffer when snippets are concerned."
+  (yas--create-snippet-xrefs)
+  (remove-hook 'temp-buffer-show-hook 'yas--snippet-description-finish-runonce))
+
+(defun yas--create-snippet-xrefs ()
+  (save-excursion
+    (goto-char (point-min))
+    (while (search-forward-regexp "\\\\\\\\snippet[ \s\t]+`\\([^']+\\)'" nil t)
+      (let ((template (get-text-property (match-beginning 1)
+                                         'yasnippet)))
+        (when template
+          (help-xref-button 1 'help-snippet-def template)
+          (kill-region (match-end 1) (match-end 0))
+          (kill-region (match-beginning 0) (match-beginning 1)))))))
+\f
+;;; Utils
+
+(defvar yas-verbosity 4
+  "Log level for `yas--message' 4 means trace most anything, 0 means nothing.")
+
+(defun yas--message (level message &rest args)
+  "When LEVEL is above `yas-verbosity-level', log MESSAGE and ARGS."
+  (when (> yas-verbosity level)
+    (message "%s" (apply #'yas--format message args))))
+
+(defun yas--format (format-control &rest format-args)
+  (apply #'format (concat "[yas] " format-control) format-args))
+
+\f
+;;; Some hacks:
+;;
+;; The functions
+;;
+;; `locate-dominating-file'
+;; `region-active-p'
+;;
+;; added for compatibility in emacsen < 23
+(unless (>= emacs-major-version 23)
+  (unless (fboundp 'region-active-p)
+    (defun region-active-p ()  (and transient-mark-mode mark-active)))
+
+  (unless (fboundp 'locate-dominating-file)
+    (defvar locate-dominating-stop-dir-regexp
+      "\\`\\(?:[\\/][\\/][^\\/]+[\\/]\\|/\\(?:net\\|afs\\|\\.\\.\\.\\)/\\)\\'"
+      "Regexp of directory names which stop the search in `locate-dominating-file'.
+Any directory whose name matches this regexp will be treated like
+a kind of root directory by `locate-dominating-file' which will stop its search
+when it bumps into it.
+The default regexp prevents fruitless and time-consuming attempts to find
+special files in directories in which filenames are interpreted as hostnames,
+or mount points potentially requiring authentication as a different user.")
+
+    (defun locate-dominating-file (file name)
+      "Look up the directory hierarchy from FILE for a file named NAME.
+Stop at the first parent directory containing a file NAME,
+and return the directory.  Return nil if not found."
+      ;; We used to use the above locate-dominating-files code, but the
+      ;; directory-files call is very costly, so we're much better off doing
+      ;; multiple calls using the code in here.
+      ;;
+      ;; Represent /home/luser/foo as ~/foo so that we don't try to look for
+      ;; `name' in /home or in /.
+      (setq file (abbreviate-file-name file))
+      (let ((root nil)
+            try)
+        (while (not (or root
+                        (null file)
+                        ;; FIXME: Disabled this heuristic because it is sometimes
+                        ;; inappropriate.
+                        ;; As a heuristic, we stop looking up the hierarchy of
+                        ;; directories as soon as we find a directory belonging
+                        ;; to another user.  This should save us from looking in
+                        ;; things like /net and /afs.  This assumes that all the
+                        ;; files inside a project belong to the same user.
+                        ;; (let ((prev-user user))
+                        ;;   (setq user (nth 2 (file-attributes file)))
+                        ;;   (and prev-user (not (equal user prev-user))))
+                        (string-match locate-dominating-stop-dir-regexp file)))
+          (setq try (file-exists-p (expand-file-name name file)))
+          (cond (try (setq root file))
+                ((equal file (setq file (file-name-directory
+                                         (directory-file-name file))))
+                 (setq file nil))))
+        root))))
+
+;; `c-neutralize-syntax-in-CPP` sometimes fires "End of Buffer" error
+;; (when it execute forward-char) and interrupt the after change
+;; hook. Thus prevent the insert-behind hook of yasnippet to be
+;; invoked. Here's a way to reproduce it:
+
+;; # open a *new* Emacs.
+;; # load yasnippet.
+;; # open a *new* .cpp file.
+;; # input "inc" and press TAB to expand the snippet.
+;; # select the `#include <...>` snippet.
+;; # type inside `<>`
+
+(defadvice c-neutralize-syntax-in-CPP
+  (around yas--mp/c-neutralize-syntax-in-CPP activate)
+  "Adviced `c-neutralize-syntax-in-CPP' to properly
+handle the `end-of-buffer' error fired in it by calling
+`forward-char' at the end of buffer."
+  (condition-case err
+      ad-do-it
+    (error (message (error-message-string err)))))
+
+;; disable c-electric-* serial command in YAS fields
+(add-hook 'c-mode-common-hook
+          '(lambda ()
+             (dolist (k '(":" ">" ";" "<" "{" "}"))
+               (define-key (symbol-value (make-local-variable 'yas-keymap))
+                 k 'self-insert-command))))
+\f
+;;; Backward compatibility to yasnippet <= 0.7
+
+(defvar yas--exported-syms '(;; `defcustom's
+                             ;;
+                             yas-snippet-dirs
+                             yas-prompt-functions
+                             yas-indent-line
+                             yas-also-auto-indent-first-line
+                             yas-snippet-revival
+                             yas-triggers-in-field
+                             yas-fallback-behavior
+                             yas-choose-keys-first
+                             yas-choose-tables-first
+                             yas-use-menu
+                             yas-trigger-symbol
+                             yas-wrap-around-region
+                             yas-good-grace
+                             yas-visit-from-menu
+                             yas-expand-only-for-last-commands
+                             yas-field-highlight-face
+
+                             ;; these vars can be customized as well
+                             ;;
+                             yas-keymap
+                             yas-verbosity
+                             yas-extra-modes
+                             yas-key-syntaxes
+                             yas-after-exit-snippet-hook
+                             yas-before-expand-snippet-hook
+                             yas-buffer-local-condition
+                             yas-dont-activate
+
+                             ;; prompting functions
+                             ;;
+                             yas-x-prompt
+                             yas-ido-prompt
+                             yas-no-prompt
+                             yas-completing-prompt
+                             yas-dropdown-prompt
+
+                             ;; interactive functions
+                             ;;
+                             yas-expand
+                             yas-minor-mode
+                             yas-global-mode
+                             yas-direct-keymaps-reload
+                             yas-minor-mode-on
+                             yas-load-directory
+                             yas-reload-all
+                             yas-compile-directory
+                             yas-recompile-all
+                             yas-about
+                             yas-expand-from-trigger-key
+                             yas-expand-from-keymap
+                             yas-insert-snippet
+                             yas-visit-snippet-file
+                             yas-new-snippet
+                             yas-load-snippet-buffer
+                             yas-tryout-snippet
+                             yas-describe-tables
+                             yas-next-field-or-maybe-expand
+                             yas-next-field
+                             yas-prev-field
+                             yas-abort-snippet
+                             yas-exit-snippet
+                             yas-exit-all-snippets
+                             yas-skip-and-clear-or-delete-char
+
+                             ;; symbols that I "exported" for use
+                             ;; in snippets and hookage
+                             ;;
+                             yas-expand-snippet
+                             yas-define-snippets
+                             yas-define-menu
+                             yas-snippet-beg
+                             yas-snippet-end
+                             yas-modified-p
+                             yas-moving-away-p
+                             yas-text
+                             yas-substr
+                             yas-choose-value
+                             yas-key-to-value
+                             yas-throw
+                             yas-verify-value
+                             yas-field-value
+                             yas-text
+                             yas-selected-text
+                             yas-default-from-field
+                             yas-inside-string
+                             yas-unimplemented
+                             yas-define-condition-cache
+                             yas-hippie-try-expand
+                             yas-active-keys
+
+                             ;; debug definitions
+                             ;; yas-debug-snippet-vars
+                             ;; yas-exterminate-package
+                             ;; yas-debug-test
+
+                             ;; testing definitions
+                             ;; yas-should-expand
+                             ;; yas-should-not-expand
+                             ;; yas-mock-insert
+                             ;; yas-make-file-or-dirs
+                             ;; yas-variables
+                             ;; yas-saving-variables
+                             ;; yas-call-with-snippet-dirs
+                             ;; yas-with-snippet-dirs
+)
+  "Exported yasnippet symbols.
+
+i.e. ones that I will try to keep in future yasnippet versions
+and ones that other elisp libraries can more or less safely rely
+upon.")
+
+(defvar yas--dont-backport '(yas-active-keys)
+  "Exported symbols that don't map back to \"yas/*\" variants.")
+
+(dolist (sym (set-difference yas--exported-syms yas--dont-backport))
+  (let ((backported (intern (replace-regexp-in-string "^yas-" "yas/" (symbol-name sym)))))
+    (when (boundp sym)
+      (make-obsolete-variable backported sym "yasnippet 0.8")
+      (defvaralias backported sym))
+    (when (fboundp sym)
+      (make-obsolete backported sym "yasnippet 0.8")
+      (defalias backported sym))))
+
+\f
+(provide 'yasnippet)
+
+;;; yasnippet.el ends here
+;; Local Variables:
+;; coding: utf-8
+;; byte-compile-warnings: (not cl-functions)
+;; End: